From 133b930ac0524d9534b405f13c24bd763e8dfa46 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 5 Sep 2023 23:27:48 +0200 Subject: [PATCH 01/33] custom circuit builder (WIP) --- lightclient-circuits/src/builder.rs | 161 ++ .../src/committee_update_circuit.rs | 1114 ++++++------ .../src/gadget/crypto/hash2curve.rs | 1558 ++++++++--------- lightclient-circuits/src/gadget/crypto/mod.rs | 2 +- .../src/gadget/crypto/sha256.rs | 341 ++-- .../src/gadget/crypto/sha256/builder.rs | 173 ++ .../src/gadget/crypto/sha256_wide.rs | 948 +++++----- .../src/gadget/crypto/util.rs | 198 +-- lightclient-circuits/src/lib.rs | 1 + lightclient-circuits/src/ssz_merkle.rs | 664 +++---- lightclient-circuits/src/sync_step_circuit.rs | 1276 +++++++------- 11 files changed, 3385 insertions(+), 3051 deletions(-) create mode 100644 lightclient-circuits/src/builder.rs create mode 100644 lightclient-circuits/src/gadget/crypto/sha256/builder.rs diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs new file mode 100644 index 00000000..8aded2a3 --- /dev/null +++ b/lightclient-circuits/src/builder.rs @@ -0,0 +1,161 @@ +use std::{cell::RefCell, collections::HashMap, env::set_var}; + +use eth_types::Field; +use halo2_base::{ + gates::{ + builder::{FlexGateConfigParams, KeygenAssignments, ThreadBreakPoints}, + range::RangeConfig, + }, + safe_types::RangeChip, + SKIP_FIRST_PASS, +}; +use halo2_proofs::{ + circuit::{self, Layouter, SimpleFloorPlanner}, + plonk::{Circuit, ConstraintSystem}, +}; + +use crate::{ + gadget::crypto::{Sha256Chip, SpreadConfig, SpreadThreadBuilder}, + sha256_circuit::Sha256CircuitConfig, +}; + +pub struct SHAConfig { + pub spread: SpreadConfig, + pub range: RangeConfig, +} + +impl SHAConfig { + pub fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { + let degree = params.k; + let mut range = RangeConfig::configure( + meta, + params.strategy, + ¶ms.num_advice_per_phase, + ¶ms.num_lookup_advice_per_phase, + params.num_fixed, + params.lookup_bits.unwrap_or(8), + degree as usize, + ); + set_var("KECCAK_DEGREE", degree.to_string()); + set_var("KECCAK_ROWS", params.keccak_rows_per_round.to_string()); + let spread = SpreadConfig::configure(meta, range.lookup_bits(), 2); // TODO configure num_advice_columns + set_var("UNUSABLE_ROWS", meta.minimum_rows().to_string()); + + range.range.gate.max_rows = (1 << degree) - meta.minimum_rows(); + Self { range, spread } + } +} + +pub struct ShaCircuitBuilder<'a, F: Field> { + pub builder: RefCell>, + pub break_points: RefCell, + pub sha256: Sha256Chip<'a, F>, + pub range: RangeChip, +} + +impl<'a, F: Field> ShaCircuitBuilder<'a, F> { + pub fn new( + builder: SpreadThreadBuilder, + sha256: Sha256Chip, + range: RangeChip, + break_points: Option, + // synthesize_phase1: FnPhase1, + ) -> Self { + Self { + builder: RefCell::new(builder), + break_points: RefCell::new(break_points.unwrap_or_default()), + sha256, + range, + // synthesize_phase1: RefCell::new(Some(synthesize_phase1)), + } + } + + pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + // clone everything so we don't alter the circuit in any way for later calls + let mut builder = self.builder.borrow().clone(); + builder.config(k, minimum_rows) + } + + // re-usable function for synthesize + pub fn sub_synthesize( + &self, + config: &SHAConfig, + layouter: &mut impl Layouter, + ) -> HashMap<(usize, usize), (circuit::Cell, usize)> { + config + .rlp + .range + .load_lookup_table(layouter) + .expect("load range lookup table"); + config + .keccak + .load_aux_tables(layouter) + .expect("load keccak lookup tables"); + + let mut first_pass = SKIP_FIRST_PASS; + let witness_gen_only = self.builder.borrow().witness_gen_only(); + + let mut assigned_advices = HashMap::new(); + + layouter + .assign_region( + || "ShaCircuitBuilder generated circuit", + |mut region| { + if first_pass { + first_pass = false; + return Ok(()); + } + if !witness_gen_only { + let mut builder = self.builder.borrow().clone(); + let mut sha256 = self.sha256.borrow().clone(); + + // Do any custom synthesize functions in SecondPhase + let mut assignments = KeygenAssignments { + ..Default::default() + }; + // let rlp_chip = RlpChip::new(&self.range, Some(&rlc_chip)); + // f(&mut builder, rlp_chip, keccak_rlcs); + assignments = builder.assign_all( + &config.rlp.range.gate, + &config.rlp.range.lookup_advice, + &config.rlp.range.q_lookup, + &config.rlp.rlc, + &mut region, + assignments, + ); + *self.break_points.borrow_mut() = assignments.break_points; + assigned_advices = assignments.assigned_advices; + } else { + unimplemented!() + } + Ok(()) + }, + ) + .unwrap(); + assigned_advices + } +} + +impl<'a, F: Field /*, FnPhase1: FnSynthesize*/> Circuit for ShaCircuitBuilder<'a, F> { + type Config = SHAConfig; + type FloorPlanner = SimpleFloorPlanner; + + fn without_witnesses(&self) -> Self { + unimplemented!() + } + + fn configure(meta: &mut ConstraintSystem) -> Sha256CircuitConfig { + let params: EthConfigParams = + serde_json::from_str(&std::env::var("ETH_CONFIG_PARAMS").unwrap()).unwrap(); + MPTConfig::configure(meta, params) + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter, + ) -> Result<(), Error> { + self.two_phase_synthesize(&config, &mut layouter); + Ok(()) + } +} diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index be6c00c7..c934ab3b 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -1,557 +1,557 @@ -use std::{ - cell::{Ref, RefCell}, - collections::HashMap, - env::{set_var, var}, - fs, iter, - marker::PhantomData, - ops::Neg, - path::Path, - rc::Rc, - vec, -}; - -use crate::{ - gadget::crypto::{ - Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, - HashToCurveChip, Sha256ChipWide, SpreadConfig, - }, - poseidon::{g1_array_poseidon, poseidon_sponge}, - sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, - ssz_merkle::ssz_merkleize_chunks, - table::Sha256Table, - util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, - }, - witness::{self, HashInput, HashInputChunk}, -}; -use eth_types::{AppCurveExt, Field, Spec}; -use ethereum_consensus::phase0::BeaconBlockHeader; -use group::UncompressedEncoding; -use halo2_base::{ - gates::{ - builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, - flex_gate::GateStrategy, - range::RangeConfig, - }, - safe_types::{GateInstructions, RangeChip, RangeInstructions}, - utils::{fs::gen_srs, CurveAffineExt}, - AssignedValue, Context, QuantumCell, -}; -use halo2_ecc::{ - bigint::ProperCrtUint, - bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, - ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, - fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, -}; -use halo2_proofs::{ - circuit::{Layouter, Region, SimpleFloorPlanner, Value}, - dev::MockProver, - plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, - poly::kzg::commitment::ParamsKZG, -}; -use halo2curves::{ - bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, - bn256, -}; -use itertools::Itertools; -use lazy_static::__Deref; -use num_bigint::BigUint; -use pasta_curves::group::{ff, GroupEncoding}; -use poseidon::PoseidonChip; -use snark_verifier_sdk::CircuitExt; -use ssz_rs::Merkleized; - -#[derive(Clone, Debug)] -pub struct CommitteeUpdateCircuitConfig { - range: RangeConfig, - sha256_config: Sha256CircuitConfig, - challenges: Challenges>, -} - -#[allow(type_alias_bounds)] -#[derive(Clone, Debug)] -pub struct CommitteeUpdateCircuit { - builder: RefCell>, - pubkeys_compressed: Vec>, - pubkeys_y: Vec, - dry_run: bool, - sha256_offset: usize, - _spec: PhantomData, -} - -impl CommitteeUpdateCircuit { - fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self { - let pubkeys_y = state - .sync_committee - .iter() - .map(|v| { - let g1_affine = G1Affine::from_uncompressed( - &v.pubkey_uncompressed.as_slice().try_into().unwrap(), - ) - .unwrap(); - - g1_affine.y - }) - .collect_vec(); - let sha256_offset = 0; - Self { - builder, - pubkeys_compressed: state - .sync_committee - .iter() - .cloned() - .map(|v| v.pubkey) - .collect_vec(), - pubkeys_y, - dry_run: false, - sha256_offset, - _spec: PhantomData, - } - } - - pub fn dry_run(mut self) -> Self { - self.dry_run = true; - self - } - - fn decode_pubkeys<'a, I: IntoIterator>>>( - &self, - ctx: &mut Context, - fp_chip: &FpChip<'a, F>, - compressed_encodings: I, - ) -> Vec> { - let range = fp_chip.range(); - let gate = fp_chip.gate(); - - let g1_chip = G1Chip::::new(fp_chip); - - let mut pubkeys = vec![]; - - assert_eq!(self.pubkeys_compressed.len(), S::SYNC_COMMITTEE_SIZE); - - for (assigned_bytes, y_coord) in - itertools::multizip((compressed_encodings, self.pubkeys_y.iter())) - { - // assertion check for assigned_uncompressed vector to be equal to S::PubKeyCurve::BYTES_COMPRESSED from specification - assert_eq!(assigned_bytes.len(), G1::BYTES_COMPRESSED); - - // masked byte from compressed representation - let masked_byte = &assigned_bytes[G1::BYTES_COMPRESSED - 1]; - // clear the sign bit from masked byte - let cleared_byte = Self::clear_flag_bits(range, masked_byte, ctx); - // Use the cleared byte to construct the x coordinate - let assigned_x_bytes_cleared = [ - &assigned_bytes.as_slice()[..G1::BYTES_COMPRESSED - 1], - &[cleared_byte], - ] - .concat(); - let x_crt = decode_into_field::( - assigned_x_bytes_cleared, - &fp_chip.limb_bases, - gate, - ctx, - ); - - // Load private witness y coordinate - let y_crt = fp_chip.load_private(ctx, *y_coord); - // // Square y coordinate - // let ysq = fp_chip.mul(ctx, y_crt.clone(), y_crt.clone()); - // // Calculate y^2 using the elliptic curve equation - // let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, x_crt.clone()); - // // Constrain witness y^2 to be equal to calculated y^2 - // fp_chip.assert_equal(ctx, ysq, ysq_calc); - - pubkeys.push(EcPoint::new(x_crt, y_crt)); - } - - pubkeys - } - - /// Clears the 3 first least significat bits used for flags from a last byte of compressed pubkey. - /// This function emulates bitwise and on 00011111 (0x1F): `b & 0b00011111` = c - fn clear_flag_bits( - range: &RangeChip, - b: &AssignedValue, - ctx: &mut Context, - ) -> AssignedValue { - let gate = range.gate(); - // Shift `a` three bits to the left (equivalent to a << 3 mod 256) - let b_shifted = gate.mul(ctx, *b, QuantumCell::Constant(F::from(8))); - // since b_shifted can at max be 255*8=2^4 we use 16 bits for modulo division. - let b_shifted = range.div_mod(ctx, b_shifted, BigUint::from(256u64), 16).1; - - // Shift `s` three bits to the right (equivalent to s >> 3) to zeroing the first three bits (MSB) of `a`. - range.div_mod(ctx, b_shifted, BigUint::from(8u64), 8).0 - } - - fn sync_committee_root_ssz<'a, I: IntoIterator>>>( - ctx: &mut Context, - region: &mut Region<'_, F>, - hasher: &'a impl HashChip, - compressed_encodings: I, - ) -> Result>, Error> { - let mut pubkeys_hashes = compressed_encodings - .into_iter() - .map(|bytes| { - hasher - .digest::<64>( - HashInput::Single( - bytes.into_iter().pad_using(64, |_| ctx.load_zero()).into(), - ), - ctx, - region, - ) - .map(|r| r.output_bytes.into()) - }) - .collect::, _>>()?; - ssz_merkleize_chunks(ctx, region, hasher, pubkeys_hashes) - } -} - -impl Circuit for CommitteeUpdateCircuit { - type Config = CommitteeUpdateCircuitConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let range = RangeCircuitBuilder::configure(meta); - let hash_table = Sha256Table::construct(meta); - let sha256_config = Sha256CircuitConfig::new::(meta, hash_table); - CommitteeUpdateCircuitConfig { - range, - sha256_config, - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - } - } - - fn synthesize( - &self, - mut config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config - .range - .load_lookup_table(&mut layouter) - .expect("load range lookup table"); - - let mut first_pass = halo2_base::SKIP_FIRST_PASS; - - let range = RangeChip::default(config.range.lookup_bits()); - let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); - let fp2_chip = Fp2Chip::::new(&fp_chip); - let g1_chip = EccChip::new(fp2_chip.fp_chip()); - - let sha256_chip = Sha256ChipWide::new( - &config.sha256_config, - &range, - config.challenges.sha256_input(), - None, - self.sha256_offset, - ); - - let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); - let mut builder = if self.dry_run { - self.builder.borrow_mut() - } else { - builder_clone.borrow_mut() - }; - - layouter.assign_region( - || "AggregationCircuitBuilder generated circuit", - |mut region| { - if first_pass { - first_pass = false; - return Ok(()); - } - - let ctx = builder.main(0); - - let compressed_encodings = self - .pubkeys_compressed - .iter() - .map(|bytes| ctx.assign_witnesses(bytes.iter().map(|&b| F::from(b as u64)))) - .collect_vec(); - - let root = Self::sync_committee_root_ssz( - ctx, - &mut region, - &sha256_chip, - compressed_encodings.clone(), - )?; - - let pubkey_points = self.decode_pubkeys(ctx, &fp_chip, compressed_encodings); - let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; - - let extra_assignments = sha256_chip.take_extra_assignments(); - - if self.dry_run { - return Ok(()); - } - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - Ok(()) - }, - ) - } -} - -impl CircuitExt for CommitteeUpdateCircuit { - fn num_instance(&self) -> Vec { - self.instances().iter().map(|v| v.len()).collect() - } - - fn instances(&self) -> Vec> { - vec![] - } -} - -impl AppCircuitExt for CommitteeUpdateCircuit { - fn new_from_state( - builder: RefCell>, - state: &witness::SyncState, - ) -> Self { - let pubkeys_y = state - .sync_committee - .iter() - .map(|v| { - let g1_affine = G1Affine::from_uncompressed( - &v.pubkey_uncompressed.as_slice().try_into().unwrap(), - ) - .unwrap(); - - g1_affine.y - }) - .collect_vec(); - - Self { - builder, - pubkeys_compressed: state - .sync_committee - .iter() - .cloned() - .map(|v| v.pubkey) - .collect_vec(), - pubkeys_y, - sha256_offset: 0, - dry_run: false, - _spec: PhantomData, - } - } - - fn parametrize(k: usize) -> FlexGateConfigParams { - let circuit = CommitteeUpdateCircuit::::default().dry_run(); - - let mock_k = 19; - // Due to the composite nature of Sync circuit (vanila + halo2-lib) - // we have to perfrom dry run to determine best circuit config. - let mock_params = FlexGateConfigParams { - strategy: GateStrategy::Vertical, - k: mock_k, - num_advice_per_phase: vec![300], - num_lookup_advice_per_phase: vec![60], - num_fixed: 1, - }; - - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&mock_params).unwrap(), - ); - std::env::set_var("LOOKUP_BITS", (mock_k - 1).to_string()); - - let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); - circuit.builder.borrow().config(k, Some(0)); - std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); - let params: FlexGateConfigParams = - serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - println!("params: {:?}", params); - params - } - - fn setup( - config: &FlexGateConfigParams, - out: Option<&Path>, - ) -> (ParamsKZG, ProvingKey) { - let circuit = CommitteeUpdateCircuit::::default(); - - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&config).unwrap(), - ); - - let params = gen_srs(config.k as u32); - - let pk = gen_pkey(|| "committee_update", ¶ms, out, circuit).unwrap(); - - (params, pk) - } -} - -impl Default for CommitteeUpdateCircuit { - fn default() -> Self { - let builder: GateThreadBuilder = GateThreadBuilder::keygen(); - - let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); - let dymmy_y = Fq::from((G1::B as f64).sqrt() as u64); - - let pubkeys_y = iter::repeat(dymmy_y) - .take(S::SYNC_COMMITTEE_SIZE) - .collect_vec(); - - Self { - builder: RefCell::from(builder), - pubkeys_compressed: iter::repeat(dummy_x_bytes) - .take(S::SYNC_COMMITTEE_SIZE) - .collect_vec(), - pubkeys_y, - sha256_offset: 0, - dry_run: false, - _spec: PhantomData, - } - } -} - -#[cfg(test)] -mod tests { - use std::{ - env::{set_var, var}, - fs, - }; - - use crate::{ - table::Sha256Table, - util::{full_prover, full_verifier, gen_pkey}, - witness::{SyncState, Validator}, - }; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use ethereum_consensus::builder; - use halo2_base::{ - gates::{ - builder::{CircuitBuilderStage, FlexGateConfigParams}, - flex_gate::GateStrategy, - range::RangeStrategy, - }, - utils::fs::gen_srs, - }; - use halo2_proofs::{ - circuit::SimpleFloorPlanner, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, - poly::{commitment::Params, kzg::commitment::ParamsKZG}, - }; - use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; - use pasta_curves::group::UncompressedEncoding; - use rand::rngs::OsRng; - use rayon::iter::ParallelIterator; - use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; - use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; - use snark_verifier_sdk::{ - gen_pk, - halo2::{ - aggregation::{AggregationCircuit, AggregationConfigParams}, - gen_proof_shplonk, gen_snark_shplonk, - }, - CircuitExt, Snark, SHPLONK, - }; - - fn get_circuit_with_data(k: usize) -> CommitteeUpdateCircuit { - let builder = GateThreadBuilder::new(false); - let state: SyncState = - serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); - - let _ = CommitteeUpdateCircuit::::parametrize(k); - - let builder = RefCell::from(builder); - CommitteeUpdateCircuit::new_from_state(builder, &state) - } - - fn gen_application_snark(k: usize, params: &ParamsKZG) -> Snark { - let circuit = get_circuit_with_data(k); - - let pk = gen_pk(params, &circuit, Some(Path::new(&format!("app_{}.pk", k)))); - gen_snark_shplonk(params, &pk, circuit, None::) - } - - #[test] - fn test_committee_update_circuit() { - let k = 18; - let circuit = get_circuit_with_data(k); - - let timer = start_timer!(|| "committee_update circuit mock prover"); - let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); - prover.assert_satisfied_par(); - end_timer!(timer); - } - - #[test] - fn test_committee_update_proofgen() { - let k = 18; - let circuit = get_circuit_with_data(k); - - let params = gen_srs(k as u32); - - let pkey = gen_pkey(|| "committee_update", ¶ms, None, circuit.clone()).unwrap(); - - let public_inputs = circuit.instances(); - let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); - let timer = start_timer!(|| "committee_update circuit full verifier"); - assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)); - end_timer!(timer); - } - - #[test] - fn circuit_agg() { - let path = "./config/committee_update_aggregation.json"; - let k = 17; - let circuit = get_circuit_with_data(k); - let params_app = gen_srs(k as u32); - let snark = gen_application_snark(k, ¶ms_app); - - let agg_config = AggregationConfigParams::from_path(path); - - let params = gen_srs(agg_config.degree); - println!("agg_params k: {:?}", params.k()); - let lookup_bits = params.k() as usize - 1; - - let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); - - let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); - let pk = gen_pk(¶ms, &agg_circuit, None); - end_timer!(start0); - let break_points = agg_circuit.break_points(); - let agg_circuit = AggregationCircuit::new::( - CircuitBuilderStage::Prover, - Some(break_points.clone()), - lookup_bits, - ¶ms, - iter::once(snark), - ); - - let num_instances = agg_circuit.num_instance(); - let instances = agg_circuit.instances(); - let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); - println!("proof size: {}", proof.len()); - let deployment_code = gen_evm_verifier_shplonk::( - ¶ms, - pk.get_vk(), - num_instances, - None, - ); - println!("deployment_code size: {}", deployment_code.len()); - evm_verify(deployment_code, instances, proof); - } -} +// use std::{ +// cell::{Ref, RefCell}, +// collections::HashMap, +// env::{set_var, var}, +// fs, iter, +// marker::PhantomData, +// ops::Neg, +// path::Path, +// rc::Rc, +// vec, +// }; + +// use crate::{ +// gadget::crypto::{ +// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, +// HashToCurveChip, Sha256ChipWide, SpreadConfig, +// }, +// poseidon::{g1_array_poseidon, poseidon_sponge}, +// sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, +// ssz_merkle::ssz_merkleize_chunks, +// table::Sha256Table, +// util::{ +// decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, +// }, +// witness::{self, HashInput, HashInputChunk}, +// }; +// use eth_types::{AppCurveExt, Field, Spec}; +// use ethereum_consensus::phase0::BeaconBlockHeader; +// use group::UncompressedEncoding; +// use halo2_base::{ +// gates::{ +// builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, +// flex_gate::GateStrategy, +// range::RangeConfig, +// }, +// safe_types::{GateInstructions, RangeChip, RangeInstructions}, +// utils::{fs::gen_srs, CurveAffineExt}, +// AssignedValue, Context, QuantumCell, +// }; +// use halo2_ecc::{ +// bigint::ProperCrtUint, +// bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, +// ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, +// fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, +// }; +// use halo2_proofs::{ +// circuit::{Layouter, Region, SimpleFloorPlanner, Value}, +// dev::MockProver, +// plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, +// poly::kzg::commitment::ParamsKZG, +// }; +// use halo2curves::{ +// bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, +// bn256, +// }; +// use itertools::Itertools; +// use lazy_static::__Deref; +// use num_bigint::BigUint; +// use pasta_curves::group::{ff, GroupEncoding}; +// use poseidon::PoseidonChip; +// use snark_verifier_sdk::CircuitExt; +// use ssz_rs::Merkleized; + +// #[derive(Clone, Debug)] +// pub struct CommitteeUpdateCircuitConfig { +// range: RangeConfig, +// sha256_config: Sha256CircuitConfig, +// challenges: Challenges>, +// } + +// #[allow(type_alias_bounds)] +// #[derive(Clone, Debug)] +// pub struct CommitteeUpdateCircuit { +// builder: RefCell>, +// pubkeys_compressed: Vec>, +// pubkeys_y: Vec, +// dry_run: bool, +// sha256_offset: usize, +// _spec: PhantomData, +// } + +// impl CommitteeUpdateCircuit { +// fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self { +// let pubkeys_y = state +// .sync_committee +// .iter() +// .map(|v| { +// let g1_affine = G1Affine::from_uncompressed( +// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), +// ) +// .unwrap(); + +// g1_affine.y +// }) +// .collect_vec(); +// let sha256_offset = 0; +// Self { +// builder, +// pubkeys_compressed: state +// .sync_committee +// .iter() +// .cloned() +// .map(|v| v.pubkey) +// .collect_vec(), +// pubkeys_y, +// dry_run: false, +// sha256_offset, +// _spec: PhantomData, +// } +// } + +// pub fn dry_run(mut self) -> Self { +// self.dry_run = true; +// self +// } + +// fn decode_pubkeys<'a, I: IntoIterator>>>( +// &self, +// ctx: &mut Context, +// fp_chip: &FpChip<'a, F>, +// compressed_encodings: I, +// ) -> Vec> { +// let range = fp_chip.range(); +// let gate = fp_chip.gate(); + +// let g1_chip = G1Chip::::new(fp_chip); + +// let mut pubkeys = vec![]; + +// assert_eq!(self.pubkeys_compressed.len(), S::SYNC_COMMITTEE_SIZE); + +// for (assigned_bytes, y_coord) in +// itertools::multizip((compressed_encodings, self.pubkeys_y.iter())) +// { +// // assertion check for assigned_uncompressed vector to be equal to S::PubKeyCurve::BYTES_COMPRESSED from specification +// assert_eq!(assigned_bytes.len(), G1::BYTES_COMPRESSED); + +// // masked byte from compressed representation +// let masked_byte = &assigned_bytes[G1::BYTES_COMPRESSED - 1]; +// // clear the sign bit from masked byte +// let cleared_byte = Self::clear_flag_bits(range, masked_byte, ctx); +// // Use the cleared byte to construct the x coordinate +// let assigned_x_bytes_cleared = [ +// &assigned_bytes.as_slice()[..G1::BYTES_COMPRESSED - 1], +// &[cleared_byte], +// ] +// .concat(); +// let x_crt = decode_into_field::( +// assigned_x_bytes_cleared, +// &fp_chip.limb_bases, +// gate, +// ctx, +// ); + +// // Load private witness y coordinate +// let y_crt = fp_chip.load_private(ctx, *y_coord); +// // // Square y coordinate +// // let ysq = fp_chip.mul(ctx, y_crt.clone(), y_crt.clone()); +// // // Calculate y^2 using the elliptic curve equation +// // let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, x_crt.clone()); +// // // Constrain witness y^2 to be equal to calculated y^2 +// // fp_chip.assert_equal(ctx, ysq, ysq_calc); + +// pubkeys.push(EcPoint::new(x_crt, y_crt)); +// } + +// pubkeys +// } + +// /// Clears the 3 first least significat bits used for flags from a last byte of compressed pubkey. +// /// This function emulates bitwise and on 00011111 (0x1F): `b & 0b00011111` = c +// fn clear_flag_bits( +// range: &RangeChip, +// b: &AssignedValue, +// ctx: &mut Context, +// ) -> AssignedValue { +// let gate = range.gate(); +// // Shift `a` three bits to the left (equivalent to a << 3 mod 256) +// let b_shifted = gate.mul(ctx, *b, QuantumCell::Constant(F::from(8))); +// // since b_shifted can at max be 255*8=2^4 we use 16 bits for modulo division. +// let b_shifted = range.div_mod(ctx, b_shifted, BigUint::from(256u64), 16).1; + +// // Shift `s` three bits to the right (equivalent to s >> 3) to zeroing the first three bits (MSB) of `a`. +// range.div_mod(ctx, b_shifted, BigUint::from(8u64), 8).0 +// } + +// fn sync_committee_root_ssz<'a, I: IntoIterator>>>( +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// hasher: &'a impl HashChip, +// compressed_encodings: I, +// ) -> Result>, Error> { +// let mut pubkeys_hashes = compressed_encodings +// .into_iter() +// .map(|bytes| { +// hasher +// .digest::<64>( +// HashInput::Single( +// bytes.into_iter().pad_using(64, |_| ctx.load_zero()).into(), +// ), +// ctx, +// region, +// ) +// .map(|r| r.output_bytes.into()) +// }) +// .collect::, _>>()?; +// ssz_merkleize_chunks(ctx, region, hasher, pubkeys_hashes) +// } +// } + +// impl Circuit for CommitteeUpdateCircuit { +// type Config = CommitteeUpdateCircuitConfig; +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// unimplemented!() +// } + +// fn configure(meta: &mut ConstraintSystem) -> Self::Config { +// let range = RangeCircuitBuilder::configure(meta); +// let hash_table = Sha256Table::construct(meta); +// let sha256_config = Sha256CircuitConfig::new::(meta, hash_table); +// CommitteeUpdateCircuitConfig { +// range, +// sha256_config, +// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), +// } +// } + +// fn synthesize( +// &self, +// mut config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// config +// .range +// .load_lookup_table(&mut layouter) +// .expect("load range lookup table"); + +// let mut first_pass = halo2_base::SKIP_FIRST_PASS; + +// let range = RangeChip::default(config.range.lookup_bits()); +// let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); +// let fp2_chip = Fp2Chip::::new(&fp_chip); +// let g1_chip = EccChip::new(fp2_chip.fp_chip()); + +// let sha256_chip = Sha256ChipWide::new( +// &config.sha256_config, +// &range, +// config.challenges.sha256_input(), +// None, +// self.sha256_offset, +// ); + +// let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); +// let mut builder = if self.dry_run { +// self.builder.borrow_mut() +// } else { +// builder_clone.borrow_mut() +// }; + +// layouter.assign_region( +// || "AggregationCircuitBuilder generated circuit", +// |mut region| { +// if first_pass { +// first_pass = false; +// return Ok(()); +// } + +// let ctx = builder.main(0); + +// let compressed_encodings = self +// .pubkeys_compressed +// .iter() +// .map(|bytes| ctx.assign_witnesses(bytes.iter().map(|&b| F::from(b as u64)))) +// .collect_vec(); + +// let root = Self::sync_committee_root_ssz( +// ctx, +// &mut region, +// &sha256_chip, +// compressed_encodings.clone(), +// )?; + +// let pubkey_points = self.decode_pubkeys(ctx, &fp_chip, compressed_encodings); +// let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; + +// let extra_assignments = sha256_chip.take_extra_assignments(); + +// if self.dry_run { +// return Ok(()); +// } + +// let _ = builder.assign_all( +// &config.range.gate, +// &config.range.lookup_advice, +// &config.range.q_lookup, +// &mut region, +// extra_assignments, +// ); + +// Ok(()) +// }, +// ) +// } +// } + +// impl CircuitExt for CommitteeUpdateCircuit { +// fn num_instance(&self) -> Vec { +// self.instances().iter().map(|v| v.len()).collect() +// } + +// fn instances(&self) -> Vec> { +// vec![] +// } +// } + +// impl AppCircuitExt for CommitteeUpdateCircuit { +// fn new_from_state( +// builder: RefCell>, +// state: &witness::SyncState, +// ) -> Self { +// let pubkeys_y = state +// .sync_committee +// .iter() +// .map(|v| { +// let g1_affine = G1Affine::from_uncompressed( +// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), +// ) +// .unwrap(); + +// g1_affine.y +// }) +// .collect_vec(); + +// Self { +// builder, +// pubkeys_compressed: state +// .sync_committee +// .iter() +// .cloned() +// .map(|v| v.pubkey) +// .collect_vec(), +// pubkeys_y, +// sha256_offset: 0, +// dry_run: false, +// _spec: PhantomData, +// } +// } + +// fn parametrize(k: usize) -> FlexGateConfigParams { +// let circuit = CommitteeUpdateCircuit::::default().dry_run(); + +// let mock_k = 19; +// // Due to the composite nature of Sync circuit (vanila + halo2-lib) +// // we have to perfrom dry run to determine best circuit config. +// let mock_params = FlexGateConfigParams { +// strategy: GateStrategy::Vertical, +// k: mock_k, +// num_advice_per_phase: vec![300], +// num_lookup_advice_per_phase: vec![60], +// num_fixed: 1, +// }; + +// set_var( +// "FLEX_GATE_CONFIG_PARAMS", +// serde_json::to_string(&mock_params).unwrap(), +// ); +// std::env::set_var("LOOKUP_BITS", (mock_k - 1).to_string()); + +// let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); +// circuit.builder.borrow().config(k, Some(0)); +// std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); +// let params: FlexGateConfigParams = +// serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); +// println!("params: {:?}", params); +// params +// } + +// fn setup( +// config: &FlexGateConfigParams, +// out: Option<&Path>, +// ) -> (ParamsKZG, ProvingKey) { +// let circuit = CommitteeUpdateCircuit::::default(); + +// set_var("LOOKUP_BITS", (config.k - 1).to_string()); +// set_var( +// "FLEX_GATE_CONFIG_PARAMS", +// serde_json::to_string(&config).unwrap(), +// ); + +// let params = gen_srs(config.k as u32); + +// let pk = gen_pkey(|| "committee_update", ¶ms, out, circuit).unwrap(); + +// (params, pk) +// } +// } + +// impl Default for CommitteeUpdateCircuit { +// fn default() -> Self { +// let builder: GateThreadBuilder = GateThreadBuilder::keygen(); + +// let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); +// let dymmy_y = Fq::from((G1::B as f64).sqrt() as u64); + +// let pubkeys_y = iter::repeat(dymmy_y) +// .take(S::SYNC_COMMITTEE_SIZE) +// .collect_vec(); + +// Self { +// builder: RefCell::from(builder), +// pubkeys_compressed: iter::repeat(dummy_x_bytes) +// .take(S::SYNC_COMMITTEE_SIZE) +// .collect_vec(), +// pubkeys_y, +// sha256_offset: 0, +// dry_run: false, +// _spec: PhantomData, +// } +// } +// } + +// #[cfg(test)] +// mod tests { +// use std::{ +// env::{set_var, var}, +// fs, +// }; + +// use crate::{ +// table::Sha256Table, +// util::{full_prover, full_verifier, gen_pkey}, +// witness::{SyncState, Validator}, +// }; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use ethereum_consensus::builder; +// use halo2_base::{ +// gates::{ +// builder::{CircuitBuilderStage, FlexGateConfigParams}, +// flex_gate::GateStrategy, +// range::RangeStrategy, +// }, +// utils::fs::gen_srs, +// }; +// use halo2_proofs::{ +// circuit::SimpleFloorPlanner, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, +// poly::{commitment::Params, kzg::commitment::ParamsKZG}, +// }; +// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; +// use pasta_curves::group::UncompressedEncoding; +// use rand::rngs::OsRng; +// use rayon::iter::ParallelIterator; +// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; +// use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; +// use snark_verifier_sdk::{ +// gen_pk, +// halo2::{ +// aggregation::{AggregationCircuit, AggregationConfigParams}, +// gen_proof_shplonk, gen_snark_shplonk, +// }, +// CircuitExt, Snark, SHPLONK, +// }; + +// fn get_circuit_with_data(k: usize) -> CommitteeUpdateCircuit { +// let builder = GateThreadBuilder::new(false); +// let state: SyncState = +// serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); + +// let _ = CommitteeUpdateCircuit::::parametrize(k); + +// let builder = RefCell::from(builder); +// CommitteeUpdateCircuit::new_from_state(builder, &state) +// } + +// fn gen_application_snark(k: usize, params: &ParamsKZG) -> Snark { +// let circuit = get_circuit_with_data(k); + +// let pk = gen_pk(params, &circuit, Some(Path::new(&format!("app_{}.pk", k)))); +// gen_snark_shplonk(params, &pk, circuit, None::) +// } + +// #[test] +// fn test_committee_update_circuit() { +// let k = 18; +// let circuit = get_circuit_with_data(k); + +// let timer = start_timer!(|| "committee_update circuit mock prover"); +// let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); +// prover.assert_satisfied_par(); +// end_timer!(timer); +// } + +// #[test] +// fn test_committee_update_proofgen() { +// let k = 18; +// let circuit = get_circuit_with_data(k); + +// let params = gen_srs(k as u32); + +// let pkey = gen_pkey(|| "committee_update", ¶ms, None, circuit.clone()).unwrap(); + +// let public_inputs = circuit.instances(); +// let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); +// let timer = start_timer!(|| "committee_update circuit full verifier"); +// assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)); +// end_timer!(timer); +// } + +// #[test] +// fn circuit_agg() { +// let path = "./config/committee_update_aggregation.json"; +// let k = 17; +// let circuit = get_circuit_with_data(k); +// let params_app = gen_srs(k as u32); +// let snark = gen_application_snark(k, ¶ms_app); + +// let agg_config = AggregationConfigParams::from_path(path); + +// let params = gen_srs(agg_config.degree); +// println!("agg_params k: {:?}", params.k()); +// let lookup_bits = params.k() as usize - 1; + +// let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); + +// let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); +// let pk = gen_pk(¶ms, &agg_circuit, None); +// end_timer!(start0); +// let break_points = agg_circuit.break_points(); +// let agg_circuit = AggregationCircuit::new::( +// CircuitBuilderStage::Prover, +// Some(break_points.clone()), +// lookup_bits, +// ¶ms, +// iter::once(snark), +// ); + +// let num_instances = agg_circuit.num_instance(); +// let instances = agg_circuit.instances(); +// let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); +// println!("proof size: {}", proof.len()); +// let deployment_code = gen_evm_verifier_shplonk::( +// ¶ms, +// pk.get_vk(), +// num_instances, +// None, +// ); +// println!("deployment_code size: {}", deployment_code.len()); +// evm_verify(deployment_code, instances, proof); +// } +// } diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 9b142b4b..51f20f53 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -1,779 +1,779 @@ -// //! The chip that implements `draft-irtf-cfrg-hash-to-curve-16` -// //! https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16 - -use std::ops::Deref; -use std::{cell::RefCell, iter, marker::PhantomData}; - -use crate::util::AsBits; -use crate::{ - util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, - witness::HashInput, -}; -use eth_types::{AppCurveExt, Field, HashCurveExt, Spec}; -use halo2_base::{ - safe_types::{GateInstructions, RangeInstructions, SafeBytes32, SafeTypeChip}, - utils::ScalarField, - AssignedValue, Context, QuantumCell, -}; -use halo2_ecc::{ - bigint::{CRTInteger, ProperUint}, - ecc::EccChip, - fields::{ - fp::FpChip, fp2, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField, - Selectable, - }, -}; -use halo2_proofs::{circuit::Region, plonk::Error}; -use halo2curves::group::GroupEncoding; -use itertools::Itertools; -use num_bigint::{BigInt, BigUint}; -use pasta_curves::arithmetic::SqrtRatio; - -use super::{ - sha256::HashChip, - util::{fp2_sgn0, i2osp, strxor}, - Fp2Point, G1Point, G2Point, -}; - -const G2_EXT_DEGREE: usize = 2; - -// L = ceil((ceil(log2(p)) + k) / 8) (see section 5 of ietf draft link above) -const L: usize = 64; - -#[allow(type_alias_bounds)] -pub type Fp2Chip<'chip, F, C: AppCurveExt, Fp = ::Fp> = - fp2::Fp2Chip<'chip, F, FpChip<'chip, F, Fp>, C::Fq>; - -#[derive(Debug)] -pub struct HashToCurveChip<'a, S: Spec, F: Field, HC: HashChip> { - hash_chip: &'a HC, - _f: PhantomData, - _spec: PhantomData, -} - -impl<'a, S: Spec, F: Field, HC: HashChip + 'a> HashToCurveChip<'a, S, F, HC> { - pub fn new(hash_chip: &'a HC) -> Self { - Self { - hash_chip, - _f: PhantomData, - _spec: PhantomData, - } - } - - pub fn hash_to_curve( - &self, - msg: HashInput>, - fp_chip: &FpChip, - ctx: &mut Context, - region: &mut Region<'_, F>, - cache: &mut HashToCurveCache, - ) -> Result, Error> - where - C::Fq: FieldExtConstructor, - { - let u = self.hash_to_field::(msg, fp_chip, ctx, region, cache)?; - let p = self.map_to_curve::(u, fp_chip, ctx, cache)?; - Ok(p) - } - - /// Implements [section 5.2 of `draft-irtf-cfrg-hash-to-curve-16`][hash_to_field]. - /// - /// [hash_to_field]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.2 - /// - /// References: - /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L49 - /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L128 - /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L11 - fn hash_to_field( - &self, - msg: HashInput>, - fp_chip: &FpChip, - ctx: &mut Context, - region: &mut Region<'_, F>, - cache: &mut HashToCurveCache, - ) -> Result<[Fp2Point; 2], Error> { - // - let range = self.hash_chip.range(); - let gate = range.gate(); - let safe_types = SafeTypeChip::new(range); - - // constants - let zero = ctx.load_zero(); - let one = ctx.load_constant(F::one()); - - let assigned_msg = msg.into_assigned(ctx).to_vec(); - - let len_in_bytes = 2 * G2_EXT_DEGREE * L; - let extended_msg = Self::expand_message_xmd( - assigned_msg, - len_in_bytes, - self.hash_chip, - ctx, - region, - cache, - )?; - - let limb_bases = cache.binary_bases.get_or_insert_with(|| { - C::limb_bytes_bases() - .into_iter() - .map(|base| ctx.load_constant(base)) - .collect() - }); - - // 2^256 - let two_pow_256 = fp_chip.load_constant_uint(ctx, BigUint::from(2u8).pow(256)); - let fq_bytes = C::BYTES_COMPRESSED / 2; - - let mut fst = true; - let u = extended_msg - .chunks(L) - .chunks(G2_EXT_DEGREE) - .into_iter() - .map(|elm_chunk| { - FieldVector( - elm_chunk - .map(|tv| { - let mut buf = vec![zero; fq_bytes]; - let rem = fq_bytes - 32; - buf[rem..].copy_from_slice(&tv[..32]); - let lo = decode_into_field_be::( - buf.to_vec(), - &fp_chip.limb_bases, - gate, - ctx, - ); - - buf[rem..].copy_from_slice(&tv[32..]); - let hi = decode_into_field_be::( - buf.to_vec(), - &fp_chip.limb_bases, - gate, - ctx, - ); - - let lo_2_256 = fp_chip.mul_no_carry(ctx, lo, two_pow_256.clone()); - let lo_2_356_hi = fp_chip.add_no_carry(ctx, lo_2_256, hi); - fp_chip.carry_mod(ctx, lo_2_356_hi) - }) - .collect_vec(), - ) - }) - .collect_vec() - .try_into() - .unwrap(); - - Ok(u) - } - - pub fn map_to_curve( - &self, - u: [Fp2Point; 2], - fp_chip: &FpChip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> Result, Error> - where - C::Fq: FieldExtConstructor, - { - let fp2_chip = Fp2Chip::<_, C>::new(fp_chip); - let ecc_chip = EccChip::>::new(&fp2_chip); - - let [u0, u1] = u; - - let p1 = Self::map_to_curve_simple_swu::(u0, &fp2_chip, ctx, cache); - let p2 = Self::map_to_curve_simple_swu::(u1, &fp2_chip, ctx, cache); - - let p_sum = ecc_chip.add_unequal(ctx, p1, p2, false); - - let iso_p = Self::isogeny_map::(p_sum, &fp2_chip, ctx, cache); - - Ok(Self::clear_cofactor::(iso_p, &ecc_chip, ctx, cache)) - } - - /// Implements [section 5.3 of `draft-irtf-cfrg-hash-to-curve-16`][expand_message_xmd]. - /// - /// [expand_message_xmd]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3 - /// - /// References: - /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L89 - /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L63 - /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L139 - fn expand_message_xmd( - msg: Vec>, - len_in_bytes: usize, - hash_chip: &HC, - ctx: &mut Context, - region: &mut Region<'_, F>, - cache: &mut HashToCurveCache, - ) -> Result>, Error> { - let range = hash_chip.range(); - let gate = range.gate(); - - // constants - // const MAX_INPUT_SIZE: usize = 192; - let zero = ctx.load_zero(); - let one = ctx.load_constant(F::one()); - - // assign DST bytes & cache them - let dst_len = ctx.load_constant(F::from(S::DST.len() as u64)); - let dst_prime = cache - .dst_with_len - .get_or_insert_with(|| { - S::DST - .iter() - .map(|&b| ctx.load_constant(F::from(b as u64))) - .chain(iter::once(dst_len)) - .collect() - }) - .clone(); - - // padding and length strings - let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these - let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| ctx.load_constant(b)); - - // compute blocks - let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); - let mut b_vals = Vec::with_capacity(ell); - let msg_prime = z_pad - .into_iter() - .chain(msg) - .chain(l_i_b_str) - .chain(iter::once(zero)) - .chain(dst_prime.clone()); - - let b_0 = hash_chip - .digest::<192>(msg_prime.into(), ctx, region)? - .output_bytes; - - b_vals.insert( - 0, - hash_chip - .digest::<128>( - b_0.into_iter() - .chain(iter::once(one)) - .chain(dst_prime.clone()) - .into(), - ctx, - region, - )? - .output_bytes, - ); - - for i in 1..ell { - b_vals.insert( - i, - hash_chip - .digest::<128>( - strxor(b_0, b_vals[i - 1], gate, ctx) - .into_iter() - .chain(iter::once(ctx.load_constant(F::from(i as u64 + 1)))) - .chain(dst_prime.clone()) - .into(), - ctx, - region, - )? - .output_bytes, - ); - } - - let uniform_bytes = b_vals - .into_iter() - .flatten() - .take(len_in_bytes) - .collect_vec(); - - Ok(uniform_bytes) - } - - /// Implements [section 6.2 of draft-irtf-cfrg-hash-to-curve-16][map_to_curve_simple_swu] - /// - /// [map_to_curve_simple_swu]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.1-3 - /// - /// References: - /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/hash_to_curve/map_g2.rs#L388 - /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/weierstrass.ts#L1175 - fn map_to_curve_simple_swu( - u: Fp2Point, - fp2_chip: &Fp2Chip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - let fp_chip = fp2_chip.fp_chip(); - let gate = fp_chip.range().gate(); - - // constants - let swu_a = cache - .swu_a - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_A)) - .deref() - .clone(); - let swu_b = cache - .swu_b - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_B)) - .deref() - .clone(); - let swu_z = cache - .swu_z - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)) - .deref() - .clone(); - let fq2_one = cache - .fq2_one - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::one())) - .deref() - .clone(); - - let usq = fp2_chip.mul(ctx, u.clone(), u.clone()); // 1. tv1 = u^2 - let z_usq = fp2_chip.mul(ctx, usq, swu_z.clone()); // 2. tv1 = Z * tv1 - let zsq_u4 = fp2_chip.mul(ctx, z_usq.clone(), z_usq.clone()); // 3. tv2 = tv1^2 - let tv2 = fp2_chip.add(ctx, zsq_u4, z_usq.clone()); // 4. tv2 = tv2 + tv1 - let tv3 = fp2_chip.add_no_carry(ctx, tv2.clone(), fq2_one); // 5. tv3 = tv2 + 1 - let x0_num = fp2_chip.mul(ctx, tv3, swu_b.clone()); // 6. tv3 = B * tv3 - - let x_den = { - let tv2_is_zero = fp2_chip.is_zero(ctx, tv2.clone()); - let tv2_neg = fp2_chip.negate(ctx, tv2); - - fp2_chip.select(ctx, swu_z, tv2_neg, tv2_is_zero) // tv2_is_zero ? swu_z : tv2_neg - }; // 7. tv4 = tv2 != 0 ? -tv2 : Z - - let x_den = fp2_chip.mul(ctx, x_den, swu_a.clone()); // 8. tv4 = A * tv4 - - let x0_num_sqr = fp2_chip.mul(ctx, x0_num.clone(), x0_num.clone()); // 9. tv2 = tv3^2 - let x_densq = fp2_chip.mul(ctx, x_den.clone(), x_den.clone()); // 10. tv6 = tv4^2 - let ax_densq = fp2_chip.mul(ctx, x_densq.clone(), swu_a); // 11. tv5 = A * tv6 - let tv2 = fp2_chip.add_no_carry(ctx, x0_num_sqr, ax_densq); // 12. tv2 = tv2 + tv5 - let tv2 = fp2_chip.mul(ctx, tv2, x0_num.clone()); // 13. tv2 = tv2 * tv3 - let gx_den = fp2_chip.mul(ctx, x_densq, x_den.clone()); // 14. tv6 = tv6 * tv4 - let tv5 = fp2_chip.mul(ctx, gx_den.clone(), swu_b); // 15. tv5 = B * tv6 - let gx0_num = fp2_chip.add(ctx, tv2, tv5); // 16. tv2 = tv2 + tv5 - - let x = fp2_chip.mul(ctx, &z_usq, &x0_num); // 17. x = tv1 * tv3 - - let (is_gx1_square, y1) = - Self::sqrt_ratio::(gx0_num, gx_den, u.clone(), fp2_chip, ctx, cache); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6) - - let y = fp2_chip.mul(ctx, &z_usq, &u); // 19. y = tv1 * u - let y = fp2_chip.mul(ctx, y, y1.clone()); // 20. y = y * y1 - let x = fp2_chip.select(ctx, x0_num, x, is_gx1_square); // 21. x = is_gx1_square ? tv3 : x - let y = fp2_chip.select(ctx, y1, y, is_gx1_square); // 22. y = is_gx1_square ? y1 : y - - let to_neg = { - let u_sgn = fp2_sgn0::<_, C>(u, ctx, fp_chip); - let y_sgn = fp2_sgn0::<_, C>(y.clone(), ctx, fp_chip); - gate.xor(ctx, u_sgn, y_sgn) - }; // 23. e1 = sgn0(u) == sgn0(y) // we implement an opposite condition: !e1 = sgn0(u) ^ sgn0(y) - - let y_neg = fp2_chip.negate(ctx, y.clone()); - let y = fp2_chip.select(ctx, y_neg, y, to_neg); // 24. y = !e1 ? -y : y - let x = fp2_chip.divide(ctx, x, x_den); // 25. x = x / tv4 - - G2Point::new(x, y) - } - - /// Implements [Appendix E.3 of draft-irtf-cfrg-hash-to-curve-16][isogeny_map_g2] - /// - /// [isogeny_map_g2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-E.3 - /// - /// References: - /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L1153 - /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L167 - pub fn isogeny_map( - p: G2Point, - fp2_chip: &Fp2Chip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - // constants - let iso_coeffs = cache - .iso_coeffs - .get_or_insert_with(|| { - [ - C::ISO_XNUM.to_vec(), - C::ISO_XDEN.to_vec(), - C::ISO_YNUM.to_vec(), - C::ISO_YDEN.to_vec(), - ] - .map(|coeffs| { - coeffs - .into_iter() - .map(|iso| fp2_chip.load_constant(ctx, iso)) - .collect_vec() - }) - }) - .deref() - .clone(); - - let fq2_zero = cache - .fq2_zero - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::zero())) - .deref() - .clone(); - - let [x_num, x_den, y_num, y_den] = iso_coeffs.map(|coeffs| { - coeffs.into_iter().fold(fq2_zero.clone(), |acc, v| { - let acc = fp2_chip.mul(ctx, acc, &p.x); - let no_carry = fp2_chip.add_no_carry(ctx, acc, v); - fp2_chip.carry_mod(ctx, no_carry) - }) - }); - - let x = { fp2_chip.divide_unsafe(ctx, x_num, x_den) }; - - let y = { - let tv = fp2_chip.divide_unsafe(ctx, y_num, y_den); - fp2_chip.mul(ctx, &p.y, tv) - }; - - G2Point::new(x, y) - } - - /// Implements [Appendix G.3 of draft-irtf-cfrg-hash-to-curve-16][clear_cofactor] - /// - /// [clear_cofactor]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-G.3 - /// - /// References: - /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L956 - /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/bls12-381.ts#L1111 - fn clear_cofactor( - p: G2Point, - ecc_chip: &EccChip>, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - let t1 = { - // scalar multiplication is very expensive in terms of rows used - // TODO: is there other ways to clear cofactor that avoid scalar multiplication? - let tv = Self::mul_by_bls_x::(p.clone(), ecc_chip, ctx, cache); - ecc_chip.negate(ctx, tv) - }; // [-x]P - - let t2 = Self::psi::(p.clone(), ecc_chip.field_chip(), ctx, cache); // Ψ(P) - - let t3 = ecc_chip.double(ctx, p.clone()); // 2P - let t3 = Self::psi2::(t3, ecc_chip.field_chip(), ctx, cache); // Ψ²(2P) - let t3 = ecc_chip.sub_unequal(ctx, t3, t2.clone(), false); // Ψ²(2P) - Ψ(P) - - let t2 = ecc_chip.add_unequal(ctx, t1.clone(), t2, false); // [-x]P + Ψ(P) - let t2 = { - let tv = Self::mul_by_bls_x::(t2, ecc_chip, ctx, cache); - ecc_chip.negate(ctx, tv) - }; // [x²]P - [x]Ψ(P) - - // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) - let t3 = ecc_chip.add_unequal(ctx, t3, t2, false); - // Ψ²(2P) - Ψ(Plet ) + [x²]P - [x]Ψ(P) + [x]P - let t3 = ecc_chip.sub_unequal(ctx, t3, t1, false); - - // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P => [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P) - ecc_chip.sub_unequal(ctx, t3, p, false) - } - - // Implements [Appendix F.2.1 of draft-irtf-cfrg-hash-to-curve-16][sqrt_ration] - // - // [sqrt_ration]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.2.1 - fn sqrt_ratio( - num: Fp2Point, - div: Fp2Point, - u: Fp2Point, - fp2_chip: &Fp2Chip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> (AssignedValue, Fp2Point) - where - C::Fq: FieldExtConstructor, - { - let num_v = Self::assigned_fq2_to_value::(&num); - let div_v = Self::assigned_fq2_to_value::(&div); - let u = Self::assigned_fq2_to_value::(&u); - - let (is_square, y) = C::Fq::sqrt_ratio(&num_v, &div_v); - - let is_square = ctx.load_witness(F::from(is_square.unwrap_u8() as u64)); - fp2_chip.fp_chip().gate().assert_bit(ctx, is_square); // assert is_square is boolean - - let y_assigned = fp2_chip.load_private(ctx, y); - let y_sqr = fp2_chip.mul(ctx, y_assigned.clone(), y_assigned.clone()); // y_sqr = y1^2 - - let ratio = fp2_chip.divide(ctx, num, div); // r = u / v - - let swu_z = cache - .swu_z - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)); - let ratio_z = fp2_chip.mul(ctx, ratio.clone(), swu_z.clone()); // r_z = r * z - - let y_check = fp2_chip.select(ctx, ratio, ratio_z, is_square); // y_check = is_square ? ratio : r_z - - fp2_chip.assert_equal(ctx, y_check, y_sqr); // assert y_check == y_sqr - - (is_square, y_assigned) - } - - pub fn mul_by_bls_x( - p: G2Point, - ecc_chip: &EccChip>, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - let bls_x_bits = cache - .bsl_x_bits - .get_or_insert_with(|| { - (0..64) - .map(|i| ((C::BLS_X >> i) & 1) as u8) - .map(|b| ctx.load_constant(F::from(b as u64))) - .collect_vec() - }) - .deref() - .clone(); - - ecc_chip.scalar_mult_bits(ctx, p, bls_x_bits, 4) - } - - pub fn psi( - p: G2Point, - fp2_chip: &Fp2Chip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - // 1 / ((u+1) ^ ((q-1)/3)) - let psi_x = cache - .psi_x - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_X)); - - // 1 / ((u+1) ^ (p-1)/2) - let psi_y = cache - .psi_y - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_Y)); - - let x_frob = fp2_chip.conjugate(ctx, p.x); - let y_frob = fp2_chip.conjugate(ctx, p.y); - - let x = fp2_chip.mul(ctx, x_frob, psi_x.clone()); - let y = fp2_chip.mul(ctx, y_frob, psi_y.clone()); - - G2Point::new(x, y) - } - - pub fn psi2( - p: G2Point, - fp2_chip: &Fp2Chip, - ctx: &mut Context, - cache: &mut HashToCurveCache, - ) -> G2Point - where - C::Fq: FieldExtConstructor, - { - // 1 / 2 ^ ((q-1)/3) - let psi2_x = cache - .psi2_x - .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI2_X)); - - let x = fp2_chip.mul(ctx, p.x, psi2_x.clone()); - let y = fp2_chip.negate(ctx, p.y); - - G2Point::new(x, y) - } - - fn assigned_fq2_to_value(u: &Fp2Point) -> C::Fq { - C::get_fq(u.0.iter().map(|c| { - bigint_to_le_bytes( - c.limbs().iter().map(|e| *e.value()), - C::LIMB_BITS, - C::BYTES_COMPRESSED / 2, - ) - })) - } -} - -#[derive(Clone, Debug, Default)] -pub struct HashToCurveCache { - dst_with_len: Option>>, - binary_bases: Option>>, - swu_a: Option>, - swu_b: Option>, - swu_z: Option>, - fq2_zero: Option>, - fq2_one: Option>, - iso_coeffs: Option<[Vec>; 4]>, - psi_x: Option>, - psi_y: Option>, - psi2_x: Option>, - bsl_x_bits: Option>>, -} - -#[cfg(test)] -mod test { - use std::env::var; - use std::vec; - use std::{cell::RefCell, marker::PhantomData}; - - use crate::gadget::crypto::sha256::SpreadConfig; - use crate::gadget::crypto::Sha256Chip; - use crate::sha256_circuit::Sha256CircuitConfig; - use crate::table::Sha256Table; - use crate::util::{print_fq2_dev, Challenges, IntoWitness}; - - use super::*; - use eth_types::Mainnet; - use halo2_base::gates::builder::FlexGateConfigParams; - use halo2_base::gates::range::RangeConfig; - use halo2_base::safe_types::RangeChip; - use halo2_base::SKIP_FIRST_PASS; - use halo2_base::{ - gates::{builder::GateThreadBuilder, range::RangeStrategy}, - halo2_proofs::{ - circuit::{Layouter, SimpleFloorPlanner}, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, ConstraintSystem}, - }, - }; - use halo2_ecc::bigint::CRTInteger; - use halo2_proofs::circuit::Value; - use halo2curves::bls12_381::G2; - use sha2::{Digest, Sha256}; - - #[derive(Debug, Clone)] - struct TestConfig { - sha256_config: RefCell>, - pub max_byte_size: usize, - range: RangeConfig, - challenges: Challenges>, - } - - struct TestCircuit { - builder: RefCell>, - range: RangeChip, - test_input: HashInput>, - _spec: PhantomData, - } - - impl Circuit for TestCircuit { - type Config = TestConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let sha256_configs = SpreadConfig::::configure(meta, 8, 1); - let range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - &[Self::NUM_ADVICE], - &[Self::NUM_LOOKUP_ADVICE], - Self::NUM_FIXED, - Self::LOOKUP_BITS, - Self::K, - ); - let challenges = Challenges::construct(meta); - Self::Config { - sha256_config: RefCell::new(sha256_configs), - max_byte_size: Self::MAX_BYTE_SIZE, - range, - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - } - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config.range.load_lookup_table(&mut layouter)?; - let mut first_pass = SKIP_FIRST_PASS; - let sha256 = Sha256Chip::new(config.sha256_config, &self.range, None); - - let h2c_chip = HashToCurveChip::::new(&sha256); - let fp_chip = - halo2_ecc::bls12_381::FpChip::::new(&self.range, G2::LIMB_BITS, G2::NUM_LIMBS); - - layouter.assign_region( - || "hash to curve test", - |mut region| { - if first_pass { - first_pass = false; - return Ok(()); - } - - let builder = &mut self.builder.borrow_mut(); - let ctx = builder.main(0); - - let mut cache = HashToCurveCache::::default(); - let hp = h2c_chip.hash_to_curve::( - self.test_input.clone(), - &fp_chip, - ctx, - &mut region, - &mut cache, - )?; - - print_fq2_dev::(hp.x(), "res_p.x"); - print_fq2_dev::(hp.y(), "res_p.y"); - - let extra_assignments = h2c_chip.hash_chip.take_extra_assignments(); - - builder.config(TestCircuit::::K, Some(0)); - let params: FlexGateConfigParams = - serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - println!("params: {:?}", params); - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - Ok(()) - }, - )?; - - Ok(()) - } - } - - impl TestCircuit { - const MAX_BYTE_SIZE: usize = 160; - const NUM_ADVICE: usize = 21; - const NUM_FIXED: usize = 1; - const NUM_LOOKUP_ADVICE: usize = 3; - const LOOKUP_BITS: usize = 8; - const K: usize = 17; - } - - #[test] - fn test_hash_to_g2() { - let k = TestCircuit::::K as u32; - - let test_input = vec![0u8; 32]; - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::new(false); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - _spec: PhantomData, - }; - - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } -} +// // //! The chip that implements `draft-irtf-cfrg-hash-to-curve-16` +// // //! https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16 + +// use std::ops::Deref; +// use std::{cell::RefCell, iter, marker::PhantomData}; + +// use crate::util::AsBits; +// use crate::{ +// util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, +// witness::HashInput, +// }; +// use eth_types::{AppCurveExt, Field, HashCurveExt, Spec}; +// use halo2_base::{ +// safe_types::{GateInstructions, RangeInstructions, SafeBytes32, SafeTypeChip}, +// utils::ScalarField, +// AssignedValue, Context, QuantumCell, +// }; +// use halo2_ecc::{ +// bigint::{CRTInteger, ProperUint}, +// ecc::EccChip, +// fields::{ +// fp::FpChip, fp2, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField, +// Selectable, +// }, +// }; +// use halo2_proofs::{circuit::Region, plonk::Error}; +// use halo2curves::group::GroupEncoding; +// use itertools::Itertools; +// use num_bigint::{BigInt, BigUint}; +// use pasta_curves::arithmetic::SqrtRatio; + +// use super::{ +// sha256::HashChip, +// util::{fp2_sgn0, i2osp, strxor}, +// Fp2Point, G1Point, G2Point, +// }; + +// const G2_EXT_DEGREE: usize = 2; + +// // L = ceil((ceil(log2(p)) + k) / 8) (see section 5 of ietf draft link above) +// const L: usize = 64; + +// #[allow(type_alias_bounds)] +// pub type Fp2Chip<'chip, F, C: AppCurveExt, Fp = ::Fp> = +// fp2::Fp2Chip<'chip, F, FpChip<'chip, F, Fp>, C::Fq>; + +// #[derive(Debug)] +// pub struct HashToCurveChip<'a, S: Spec, F: Field, HC: HashChip> { +// hash_chip: &'a HC, +// _f: PhantomData, +// _spec: PhantomData, +// } + +// impl<'a, S: Spec, F: Field, HC: HashChip + 'a> HashToCurveChip<'a, S, F, HC> { +// pub fn new(hash_chip: &'a HC) -> Self { +// Self { +// hash_chip, +// _f: PhantomData, +// _spec: PhantomData, +// } +// } + +// pub fn hash_to_curve( +// &self, +// msg: HashInput>, +// fp_chip: &FpChip, +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// cache: &mut HashToCurveCache, +// ) -> Result, Error> +// where +// C::Fq: FieldExtConstructor, +// { +// let u = self.hash_to_field::(msg, fp_chip, ctx, region, cache)?; +// let p = self.map_to_curve::(u, fp_chip, ctx, cache)?; +// Ok(p) +// } + +// /// Implements [section 5.2 of `draft-irtf-cfrg-hash-to-curve-16`][hash_to_field]. +// /// +// /// [hash_to_field]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.2 +// /// +// /// References: +// /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L49 +// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L128 +// /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L11 +// fn hash_to_field( +// &self, +// msg: HashInput>, +// fp_chip: &FpChip, +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// cache: &mut HashToCurveCache, +// ) -> Result<[Fp2Point; 2], Error> { +// // +// let range = self.hash_chip.range(); +// let gate = range.gate(); +// let safe_types = SafeTypeChip::new(range); + +// // constants +// let zero = ctx.load_zero(); +// let one = ctx.load_constant(F::one()); + +// let assigned_msg = msg.into_assigned(ctx).to_vec(); + +// let len_in_bytes = 2 * G2_EXT_DEGREE * L; +// let extended_msg = Self::expand_message_xmd( +// assigned_msg, +// len_in_bytes, +// self.hash_chip, +// ctx, +// region, +// cache, +// )?; + +// let limb_bases = cache.binary_bases.get_or_insert_with(|| { +// C::limb_bytes_bases() +// .into_iter() +// .map(|base| ctx.load_constant(base)) +// .collect() +// }); + +// // 2^256 +// let two_pow_256 = fp_chip.load_constant_uint(ctx, BigUint::from(2u8).pow(256)); +// let fq_bytes = C::BYTES_COMPRESSED / 2; + +// let mut fst = true; +// let u = extended_msg +// .chunks(L) +// .chunks(G2_EXT_DEGREE) +// .into_iter() +// .map(|elm_chunk| { +// FieldVector( +// elm_chunk +// .map(|tv| { +// let mut buf = vec![zero; fq_bytes]; +// let rem = fq_bytes - 32; +// buf[rem..].copy_from_slice(&tv[..32]); +// let lo = decode_into_field_be::( +// buf.to_vec(), +// &fp_chip.limb_bases, +// gate, +// ctx, +// ); + +// buf[rem..].copy_from_slice(&tv[32..]); +// let hi = decode_into_field_be::( +// buf.to_vec(), +// &fp_chip.limb_bases, +// gate, +// ctx, +// ); + +// let lo_2_256 = fp_chip.mul_no_carry(ctx, lo, two_pow_256.clone()); +// let lo_2_356_hi = fp_chip.add_no_carry(ctx, lo_2_256, hi); +// fp_chip.carry_mod(ctx, lo_2_356_hi) +// }) +// .collect_vec(), +// ) +// }) +// .collect_vec() +// .try_into() +// .unwrap(); + +// Ok(u) +// } + +// pub fn map_to_curve( +// &self, +// u: [Fp2Point; 2], +// fp_chip: &FpChip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> Result, Error> +// where +// C::Fq: FieldExtConstructor, +// { +// let fp2_chip = Fp2Chip::<_, C>::new(fp_chip); +// let ecc_chip = EccChip::>::new(&fp2_chip); + +// let [u0, u1] = u; + +// let p1 = Self::map_to_curve_simple_swu::(u0, &fp2_chip, ctx, cache); +// let p2 = Self::map_to_curve_simple_swu::(u1, &fp2_chip, ctx, cache); + +// let p_sum = ecc_chip.add_unequal(ctx, p1, p2, false); + +// let iso_p = Self::isogeny_map::(p_sum, &fp2_chip, ctx, cache); + +// Ok(Self::clear_cofactor::(iso_p, &ecc_chip, ctx, cache)) +// } + +// /// Implements [section 5.3 of `draft-irtf-cfrg-hash-to-curve-16`][expand_message_xmd]. +// /// +// /// [expand_message_xmd]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3 +// /// +// /// References: +// /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L89 +// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L63 +// /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L139 +// fn expand_message_xmd( +// msg: Vec>, +// len_in_bytes: usize, +// hash_chip: &HC, +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// cache: &mut HashToCurveCache, +// ) -> Result>, Error> { +// let range = hash_chip.range(); +// let gate = range.gate(); + +// // constants +// // const MAX_INPUT_SIZE: usize = 192; +// let zero = ctx.load_zero(); +// let one = ctx.load_constant(F::one()); + +// // assign DST bytes & cache them +// let dst_len = ctx.load_constant(F::from(S::DST.len() as u64)); +// let dst_prime = cache +// .dst_with_len +// .get_or_insert_with(|| { +// S::DST +// .iter() +// .map(|&b| ctx.load_constant(F::from(b as u64))) +// .chain(iter::once(dst_len)) +// .collect() +// }) +// .clone(); + +// // padding and length strings +// let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these +// let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| ctx.load_constant(b)); + +// // compute blocks +// let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); +// let mut b_vals = Vec::with_capacity(ell); +// let msg_prime = z_pad +// .into_iter() +// .chain(msg) +// .chain(l_i_b_str) +// .chain(iter::once(zero)) +// .chain(dst_prime.clone()); + +// let b_0 = hash_chip +// .digest::<192>(msg_prime.into(), ctx, region)? +// .output_bytes; + +// b_vals.insert( +// 0, +// hash_chip +// .digest::<128>( +// b_0.into_iter() +// .chain(iter::once(one)) +// .chain(dst_prime.clone()) +// .into(), +// ctx, +// region, +// )? +// .output_bytes, +// ); + +// for i in 1..ell { +// b_vals.insert( +// i, +// hash_chip +// .digest::<128>( +// strxor(b_0, b_vals[i - 1], gate, ctx) +// .into_iter() +// .chain(iter::once(ctx.load_constant(F::from(i as u64 + 1)))) +// .chain(dst_prime.clone()) +// .into(), +// ctx, +// region, +// )? +// .output_bytes, +// ); +// } + +// let uniform_bytes = b_vals +// .into_iter() +// .flatten() +// .take(len_in_bytes) +// .collect_vec(); + +// Ok(uniform_bytes) +// } + +// /// Implements [section 6.2 of draft-irtf-cfrg-hash-to-curve-16][map_to_curve_simple_swu] +// /// +// /// [map_to_curve_simple_swu]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.1-3 +// /// +// /// References: +// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/hash_to_curve/map_g2.rs#L388 +// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/weierstrass.ts#L1175 +// fn map_to_curve_simple_swu( +// u: Fp2Point, +// fp2_chip: &Fp2Chip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// let fp_chip = fp2_chip.fp_chip(); +// let gate = fp_chip.range().gate(); + +// // constants +// let swu_a = cache +// .swu_a +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_A)) +// .deref() +// .clone(); +// let swu_b = cache +// .swu_b +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_B)) +// .deref() +// .clone(); +// let swu_z = cache +// .swu_z +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)) +// .deref() +// .clone(); +// let fq2_one = cache +// .fq2_one +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::one())) +// .deref() +// .clone(); + +// let usq = fp2_chip.mul(ctx, u.clone(), u.clone()); // 1. tv1 = u^2 +// let z_usq = fp2_chip.mul(ctx, usq, swu_z.clone()); // 2. tv1 = Z * tv1 +// let zsq_u4 = fp2_chip.mul(ctx, z_usq.clone(), z_usq.clone()); // 3. tv2 = tv1^2 +// let tv2 = fp2_chip.add(ctx, zsq_u4, z_usq.clone()); // 4. tv2 = tv2 + tv1 +// let tv3 = fp2_chip.add_no_carry(ctx, tv2.clone(), fq2_one); // 5. tv3 = tv2 + 1 +// let x0_num = fp2_chip.mul(ctx, tv3, swu_b.clone()); // 6. tv3 = B * tv3 + +// let x_den = { +// let tv2_is_zero = fp2_chip.is_zero(ctx, tv2.clone()); +// let tv2_neg = fp2_chip.negate(ctx, tv2); + +// fp2_chip.select(ctx, swu_z, tv2_neg, tv2_is_zero) // tv2_is_zero ? swu_z : tv2_neg +// }; // 7. tv4 = tv2 != 0 ? -tv2 : Z + +// let x_den = fp2_chip.mul(ctx, x_den, swu_a.clone()); // 8. tv4 = A * tv4 + +// let x0_num_sqr = fp2_chip.mul(ctx, x0_num.clone(), x0_num.clone()); // 9. tv2 = tv3^2 +// let x_densq = fp2_chip.mul(ctx, x_den.clone(), x_den.clone()); // 10. tv6 = tv4^2 +// let ax_densq = fp2_chip.mul(ctx, x_densq.clone(), swu_a); // 11. tv5 = A * tv6 +// let tv2 = fp2_chip.add_no_carry(ctx, x0_num_sqr, ax_densq); // 12. tv2 = tv2 + tv5 +// let tv2 = fp2_chip.mul(ctx, tv2, x0_num.clone()); // 13. tv2 = tv2 * tv3 +// let gx_den = fp2_chip.mul(ctx, x_densq, x_den.clone()); // 14. tv6 = tv6 * tv4 +// let tv5 = fp2_chip.mul(ctx, gx_den.clone(), swu_b); // 15. tv5 = B * tv6 +// let gx0_num = fp2_chip.add(ctx, tv2, tv5); // 16. tv2 = tv2 + tv5 + +// let x = fp2_chip.mul(ctx, &z_usq, &x0_num); // 17. x = tv1 * tv3 + +// let (is_gx1_square, y1) = +// Self::sqrt_ratio::(gx0_num, gx_den, u.clone(), fp2_chip, ctx, cache); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6) + +// let y = fp2_chip.mul(ctx, &z_usq, &u); // 19. y = tv1 * u +// let y = fp2_chip.mul(ctx, y, y1.clone()); // 20. y = y * y1 +// let x = fp2_chip.select(ctx, x0_num, x, is_gx1_square); // 21. x = is_gx1_square ? tv3 : x +// let y = fp2_chip.select(ctx, y1, y, is_gx1_square); // 22. y = is_gx1_square ? y1 : y + +// let to_neg = { +// let u_sgn = fp2_sgn0::<_, C>(u, ctx, fp_chip); +// let y_sgn = fp2_sgn0::<_, C>(y.clone(), ctx, fp_chip); +// gate.xor(ctx, u_sgn, y_sgn) +// }; // 23. e1 = sgn0(u) == sgn0(y) // we implement an opposite condition: !e1 = sgn0(u) ^ sgn0(y) + +// let y_neg = fp2_chip.negate(ctx, y.clone()); +// let y = fp2_chip.select(ctx, y_neg, y, to_neg); // 24. y = !e1 ? -y : y +// let x = fp2_chip.divide(ctx, x, x_den); // 25. x = x / tv4 + +// G2Point::new(x, y) +// } + +// /// Implements [Appendix E.3 of draft-irtf-cfrg-hash-to-curve-16][isogeny_map_g2] +// /// +// /// [isogeny_map_g2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-E.3 +// /// +// /// References: +// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L1153 +// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L167 +// pub fn isogeny_map( +// p: G2Point, +// fp2_chip: &Fp2Chip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// // constants +// let iso_coeffs = cache +// .iso_coeffs +// .get_or_insert_with(|| { +// [ +// C::ISO_XNUM.to_vec(), +// C::ISO_XDEN.to_vec(), +// C::ISO_YNUM.to_vec(), +// C::ISO_YDEN.to_vec(), +// ] +// .map(|coeffs| { +// coeffs +// .into_iter() +// .map(|iso| fp2_chip.load_constant(ctx, iso)) +// .collect_vec() +// }) +// }) +// .deref() +// .clone(); + +// let fq2_zero = cache +// .fq2_zero +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::zero())) +// .deref() +// .clone(); + +// let [x_num, x_den, y_num, y_den] = iso_coeffs.map(|coeffs| { +// coeffs.into_iter().fold(fq2_zero.clone(), |acc, v| { +// let acc = fp2_chip.mul(ctx, acc, &p.x); +// let no_carry = fp2_chip.add_no_carry(ctx, acc, v); +// fp2_chip.carry_mod(ctx, no_carry) +// }) +// }); + +// let x = { fp2_chip.divide_unsafe(ctx, x_num, x_den) }; + +// let y = { +// let tv = fp2_chip.divide_unsafe(ctx, y_num, y_den); +// fp2_chip.mul(ctx, &p.y, tv) +// }; + +// G2Point::new(x, y) +// } + +// /// Implements [Appendix G.3 of draft-irtf-cfrg-hash-to-curve-16][clear_cofactor] +// /// +// /// [clear_cofactor]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-G.3 +// /// +// /// References: +// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L956 +// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/bls12-381.ts#L1111 +// fn clear_cofactor( +// p: G2Point, +// ecc_chip: &EccChip>, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// let t1 = { +// // scalar multiplication is very expensive in terms of rows used +// // TODO: is there other ways to clear cofactor that avoid scalar multiplication? +// let tv = Self::mul_by_bls_x::(p.clone(), ecc_chip, ctx, cache); +// ecc_chip.negate(ctx, tv) +// }; // [-x]P + +// let t2 = Self::psi::(p.clone(), ecc_chip.field_chip(), ctx, cache); // Ψ(P) + +// let t3 = ecc_chip.double(ctx, p.clone()); // 2P +// let t3 = Self::psi2::(t3, ecc_chip.field_chip(), ctx, cache); // Ψ²(2P) +// let t3 = ecc_chip.sub_unequal(ctx, t3, t2.clone(), false); // Ψ²(2P) - Ψ(P) + +// let t2 = ecc_chip.add_unequal(ctx, t1.clone(), t2, false); // [-x]P + Ψ(P) +// let t2 = { +// let tv = Self::mul_by_bls_x::(t2, ecc_chip, ctx, cache); +// ecc_chip.negate(ctx, tv) +// }; // [x²]P - [x]Ψ(P) + +// // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) +// let t3 = ecc_chip.add_unequal(ctx, t3, t2, false); +// // Ψ²(2P) - Ψ(Plet ) + [x²]P - [x]Ψ(P) + [x]P +// let t3 = ecc_chip.sub_unequal(ctx, t3, t1, false); + +// // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P => [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P) +// ecc_chip.sub_unequal(ctx, t3, p, false) +// } + +// // Implements [Appendix F.2.1 of draft-irtf-cfrg-hash-to-curve-16][sqrt_ration] +// // +// // [sqrt_ration]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.2.1 +// fn sqrt_ratio( +// num: Fp2Point, +// div: Fp2Point, +// u: Fp2Point, +// fp2_chip: &Fp2Chip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> (AssignedValue, Fp2Point) +// where +// C::Fq: FieldExtConstructor, +// { +// let num_v = Self::assigned_fq2_to_value::(&num); +// let div_v = Self::assigned_fq2_to_value::(&div); +// let u = Self::assigned_fq2_to_value::(&u); + +// let (is_square, y) = C::Fq::sqrt_ratio(&num_v, &div_v); + +// let is_square = ctx.load_witness(F::from(is_square.unwrap_u8() as u64)); +// fp2_chip.fp_chip().gate().assert_bit(ctx, is_square); // assert is_square is boolean + +// let y_assigned = fp2_chip.load_private(ctx, y); +// let y_sqr = fp2_chip.mul(ctx, y_assigned.clone(), y_assigned.clone()); // y_sqr = y1^2 + +// let ratio = fp2_chip.divide(ctx, num, div); // r = u / v + +// let swu_z = cache +// .swu_z +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)); +// let ratio_z = fp2_chip.mul(ctx, ratio.clone(), swu_z.clone()); // r_z = r * z + +// let y_check = fp2_chip.select(ctx, ratio, ratio_z, is_square); // y_check = is_square ? ratio : r_z + +// fp2_chip.assert_equal(ctx, y_check, y_sqr); // assert y_check == y_sqr + +// (is_square, y_assigned) +// } + +// pub fn mul_by_bls_x( +// p: G2Point, +// ecc_chip: &EccChip>, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// let bls_x_bits = cache +// .bsl_x_bits +// .get_or_insert_with(|| { +// (0..64) +// .map(|i| ((C::BLS_X >> i) & 1) as u8) +// .map(|b| ctx.load_constant(F::from(b as u64))) +// .collect_vec() +// }) +// .deref() +// .clone(); + +// ecc_chip.scalar_mult_bits(ctx, p, bls_x_bits, 4) +// } + +// pub fn psi( +// p: G2Point, +// fp2_chip: &Fp2Chip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// // 1 / ((u+1) ^ ((q-1)/3)) +// let psi_x = cache +// .psi_x +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_X)); + +// // 1 / ((u+1) ^ (p-1)/2) +// let psi_y = cache +// .psi_y +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_Y)); + +// let x_frob = fp2_chip.conjugate(ctx, p.x); +// let y_frob = fp2_chip.conjugate(ctx, p.y); + +// let x = fp2_chip.mul(ctx, x_frob, psi_x.clone()); +// let y = fp2_chip.mul(ctx, y_frob, psi_y.clone()); + +// G2Point::new(x, y) +// } + +// pub fn psi2( +// p: G2Point, +// fp2_chip: &Fp2Chip, +// ctx: &mut Context, +// cache: &mut HashToCurveCache, +// ) -> G2Point +// where +// C::Fq: FieldExtConstructor, +// { +// // 1 / 2 ^ ((q-1)/3) +// let psi2_x = cache +// .psi2_x +// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI2_X)); + +// let x = fp2_chip.mul(ctx, p.x, psi2_x.clone()); +// let y = fp2_chip.negate(ctx, p.y); + +// G2Point::new(x, y) +// } + +// fn assigned_fq2_to_value(u: &Fp2Point) -> C::Fq { +// C::get_fq(u.0.iter().map(|c| { +// bigint_to_le_bytes( +// c.limbs().iter().map(|e| *e.value()), +// C::LIMB_BITS, +// C::BYTES_COMPRESSED / 2, +// ) +// })) +// } +// } + +// #[derive(Clone, Debug, Default)] +// pub struct HashToCurveCache { +// dst_with_len: Option>>, +// binary_bases: Option>>, +// swu_a: Option>, +// swu_b: Option>, +// swu_z: Option>, +// fq2_zero: Option>, +// fq2_one: Option>, +// iso_coeffs: Option<[Vec>; 4]>, +// psi_x: Option>, +// psi_y: Option>, +// psi2_x: Option>, +// bsl_x_bits: Option>>, +// } + +// #[cfg(test)] +// mod test { +// use std::env::var; +// use std::vec; +// use std::{cell::RefCell, marker::PhantomData}; + +// use crate::gadget::crypto::sha256::SpreadConfig; +// use crate::gadget::crypto::Sha256Chip; +// use crate::sha256_circuit::Sha256CircuitConfig; +// use crate::table::Sha256Table; +// use crate::util::{print_fq2_dev, Challenges, IntoWitness}; + +// use super::*; +// use eth_types::Mainnet; +// use halo2_base::gates::builder::FlexGateConfigParams; +// use halo2_base::gates::range::RangeConfig; +// use halo2_base::safe_types::RangeChip; +// use halo2_base::SKIP_FIRST_PASS; +// use halo2_base::{ +// gates::{builder::GateThreadBuilder, range::RangeStrategy}, +// halo2_proofs::{ +// circuit::{Layouter, SimpleFloorPlanner}, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{Circuit, ConstraintSystem}, +// }, +// }; +// use halo2_ecc::bigint::CRTInteger; +// use halo2_proofs::circuit::Value; +// use halo2curves::bls12_381::G2; +// use sha2::{Digest, Sha256}; + +// #[derive(Debug, Clone)] +// struct TestConfig { +// sha256_config: RefCell>, +// pub max_byte_size: usize, +// range: RangeConfig, +// challenges: Challenges>, +// } + +// struct TestCircuit { +// builder: RefCell>, +// range: RangeChip, +// test_input: HashInput>, +// _spec: PhantomData, +// } + +// impl Circuit for TestCircuit { +// type Config = TestConfig; +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// unimplemented!() +// } + +// fn configure(meta: &mut ConstraintSystem) -> Self::Config { +// let sha256_configs = SpreadConfig::::configure(meta, 8, 1); +// let range = RangeConfig::configure( +// meta, +// RangeStrategy::Vertical, +// &[Self::NUM_ADVICE], +// &[Self::NUM_LOOKUP_ADVICE], +// Self::NUM_FIXED, +// Self::LOOKUP_BITS, +// Self::K, +// ); +// let challenges = Challenges::construct(meta); +// Self::Config { +// sha256_config: RefCell::new(sha256_configs), +// max_byte_size: Self::MAX_BYTE_SIZE, +// range, +// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), +// } +// } + +// fn synthesize( +// &self, +// config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// config.range.load_lookup_table(&mut layouter)?; +// let mut first_pass = SKIP_FIRST_PASS; +// let sha256 = Sha256Chip::new(config.sha256_config, &self.range, None); + +// let h2c_chip = HashToCurveChip::::new(&sha256); +// let fp_chip = +// halo2_ecc::bls12_381::FpChip::::new(&self.range, G2::LIMB_BITS, G2::NUM_LIMBS); + +// layouter.assign_region( +// || "hash to curve test", +// |mut region| { +// if first_pass { +// first_pass = false; +// return Ok(()); +// } + +// let builder = &mut self.builder.borrow_mut(); +// let ctx = builder.main(0); + +// let mut cache = HashToCurveCache::::default(); +// let hp = h2c_chip.hash_to_curve::( +// self.test_input.clone(), +// &fp_chip, +// ctx, +// &mut region, +// &mut cache, +// )?; + +// print_fq2_dev::(hp.x(), "res_p.x"); +// print_fq2_dev::(hp.y(), "res_p.y"); + +// let extra_assignments = h2c_chip.hash_chip.take_extra_assignments(); + +// builder.config(TestCircuit::::K, Some(0)); +// let params: FlexGateConfigParams = +// serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); +// println!("params: {:?}", params); + +// let _ = builder.assign_all( +// &config.range.gate, +// &config.range.lookup_advice, +// &config.range.q_lookup, +// &mut region, +// extra_assignments, +// ); + +// Ok(()) +// }, +// )?; + +// Ok(()) +// } +// } + +// impl TestCircuit { +// const MAX_BYTE_SIZE: usize = 160; +// const NUM_ADVICE: usize = 21; +// const NUM_FIXED: usize = 1; +// const NUM_LOOKUP_ADVICE: usize = 3; +// const LOOKUP_BITS: usize = 8; +// const K: usize = 17; +// } + +// #[test] +// fn test_hash_to_g2() { +// let k = TestCircuit::::K as u32; + +// let test_input = vec![0u8; 32]; +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::new(false); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: test_input.into_witness(), +// _spec: PhantomData, +// }; + +// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// } +// } diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 4cc5690b..a42e42ad 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -10,7 +10,7 @@ use halo2_ecc::{ ecc::{EcPoint, EccChip}, fields::{fp2, vector::FieldVector, FieldExtConstructor}, }; -pub use hash2curve::{HashToCurveCache, HashToCurveChip}; +// pub use hash2curve::{HashToCurveCache, HashToCurveChip}; pub use sha256::{AssignedHashResult, HashChip, Sha256Chip, SpreadConfig}; pub use sha256_wide::*; pub type FpPoint = ProperCrtUint; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index cd581de4..5ea8204a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -1,7 +1,9 @@ +mod builder; mod compression; mod spread; mod util; +pub use builder::SpreadThreadBuilder; pub use spread::SpreadConfig; use eth_types::Field; @@ -42,7 +44,7 @@ pub trait HashChip { &self, input: HashInput>, ctx: &mut Context, - region: &mut Region<'_, F>, + ctx_vanila: &mut Context, ) -> Result, Error>; fn take_extra_assignments(&self) -> KeygenAssignments; @@ -72,7 +74,7 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { &self, input: HashInput>, ctx: &mut Context, - region: &mut Region<'_, F>, + ctx_spread: &mut Context, ) -> Result, Error> { let assigned_input = input.into_assigned(ctx); @@ -307,126 +309,105 @@ mod test { challenges: Challenges>, } - #[derive(Debug, Clone)] - struct TestCircuit { - builder: RefCell>, - range: RangeChip, - test_input: HashInput>, - test_output: [u8; 32], - _f: PhantomData, - } - - impl Circuit for TestCircuit - where - [(); Self::MAX_BYTE_SIZE]:, - { - type Config = TestConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let spread_config = SpreadConfig::::configure(meta, 8, 2); - let range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - &[Self::NUM_ADVICE], - &[Self::NUM_LOOKUP_ADVICE], - Self::NUM_FIXED, - Self::LOOKUP_BITS, - Self::K, - ); - Self::Config { - spread_config, - range, - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - } - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config.range.load_lookup_table(&mut layouter)?; - let mut first_pass = SKIP_FIRST_PASS; - let sha256 = Sha256Chip::new(RefCell::new(config.spread_config), &self.range, None); - - let mut builder = self.builder.borrow().clone(); - - layouter.assign_region( - || "sha2 test", - |mut region| { - if first_pass { - first_pass = false; - return Ok(()); - } - - sha256 - .spread_config - .borrow() - .annotate_columns_in_region(&mut region); - - let ctx = builder.main(0); - - let mut result = - sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; - - for _ in 0..512 * 2 { - result = sha256.digest::<64>( - HashInput::TwoToOne( - result.output_bytes.into(), - vec![0u8; 32].into_witness(), - ), - ctx, - &mut region, - )?; - } - - // let assigned_hash = result.output_bytes; - // println!( - // "assigned hash: {:?}", - // assigned_hash.map(|e| e.value().get_lower_32()) - // ); - - // let correct_output = self - // .test_output - // .map(|b| ctx.load_witness(F::from(b as u64))); - - // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { - // ctx.constrain_equal(hash, check); - // } - - let extra_assignments = sha256.take_extra_assignments(); - - builder.config(TestCircuit::::K, Some(0)); - let params: FlexGateConfigParams = - serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - println!("params: {:?}", params); - - builder.config(21, Some(0)); - let params: FlexGateConfigParams = - serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - println!("params: {:?}", params); - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - Ok(()) - }, - ) - } - } + // #[derive(Debug, Clone)] + // struct TestCircuit { + // builder: RefCell>, + // range: RangeChip, + // test_input: HashInput>, + // test_output: [u8; 32], + // _f: PhantomData, + // } + + // impl Circuit for TestCircuit + // where + // [(); Self::MAX_BYTE_SIZE]:, + // { + // type Config = TestConfig; + // type FloorPlanner = SimpleFloorPlanner; + + // fn without_witnesses(&self) -> Self { + // unimplemented!() + // } + + // fn configure(meta: &mut ConstraintSystem) -> Self::Config { + // let spread_config = SpreadConfig::::configure(meta, 8, 2); + // let range = RangeConfig::configure( + // meta, + // RangeStrategy::Vertical, + // &[Self::NUM_ADVICE], + // &[Self::NUM_LOOKUP_ADVICE], + // Self::NUM_FIXED, + // Self::LOOKUP_BITS, + // Self::K, + // ); + // Self::Config { + // spread_config, + // range, + // challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), + // } + // } + + // fn synthesize( + // &self, + // config: Self::Config, + // mut layouter: impl Layouter, + // ) -> Result<(), Error> { + // config.range.load_lookup_table(&mut layouter)?; + // let mut first_pass = SKIP_FIRST_PASS; + // let sha256 = Sha256Chip::new(RefCell::new(config.spread_config), &self.range, None); + + // let mut builder = self.builder.borrow().clone(); + + // layouter.assign_region( + // || "sha2 test", + // |mut region| { + // if first_pass { + // first_pass = false; + // return Ok(()); + // } + + // sha256 + // .spread_config + // .borrow() + // .annotate_columns_in_region(&mut region); + + // let assigned_hash = result.output_bytes; + // println!( + // "assigned hash: {:?}", + // assigned_hash.map(|e| e.value().get_lower_32()) + // ); + + // let correct_output = self + // .test_output + // .map(|b| ctx.load_witness(F::from(b as u64))); + + // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { + // ctx.constrain_equal(hash, check); + // } + + // let extra_assignments = sha256.take_extra_assignments(); + + // builder.config(TestCircuit::::K, Some(0)); + // let params: FlexGateConfigParams = + // serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); + // println!("params: {:?}", params); + + // let _ = builder.assign_all( + // &config.range.gate, + // &config.range.lookup_advice, + // &config.range.q_lookup, + // &mut region, + // extra_assignments, + // ); + + // Ok(()) + // }, + // ) + // } + // } impl TestCircuit { - const MAX_BYTE_SIZE: usize = 64; + const MAX_BYTE_SIZE: usize = 128; const NUM_ADVICE: usize = 700; const NUM_FIXED: usize = 1; const NUM_LOOKUP_ADVICE: usize = 55; @@ -434,6 +415,24 @@ mod test { const K: usize = 18; } + fn set_constraints(builder: &ShaThreadBuilder) { + let (ctx, ctx_spread) = builder.main(); + + let spread_config = SpreadConfig::::configure(meta, 8, 2); + let range = RangeConfig::configure( + meta, + RangeStrategy::Vertical, + &[Self::NUM_ADVICE], + &[Self::NUM_LOOKUP_ADVICE], + Self::NUM_FIXED, + Self::LOOKUP_BITS, + Self::K, + ); + + let sha256 = Sha256Chip::new(RefCell::new(config.spread_config), &self.range, None); + let mut result = sha256.digest::<128>(self.test_input.clone(), ctx, &mut ctx_spread); + } + #[test] fn test_sha256_chip_constant_size() { let k = TestCircuit::::K as u32; @@ -455,55 +454,55 @@ mod test { prover.assert_satisfied(); } - #[test] - fn test_sha256_params_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![0u8; 128]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, - }; - let params = gen_srs(k); - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); - } - - #[test] - fn test_sha256_proof_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![2u8; 32]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: HashInput::TwoToOne( - test_input.clone().into_witness(), - test_input.into_witness(), - ), - test_output, - _f: PhantomData, - }; - let pf_time = start_timer!(|| "mock prover"); - - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - prover.verify().unwrap(); - end_timer!(pf_time); - - let params = gen_srs(k); - - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); - - let proof = full_prover(¶ms, &pkey, circuit, vec![]); - - let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); - assert!(is_valid); - } + // #[test] + // fn test_sha256_params_gen() { + // let k = TestCircuit::::K as u32; + // let test_input = vec![0u8; 128]; + // let test_output: [u8; 32] = Sha256::digest(&test_input).into(); + // let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); + // let builder = GateThreadBuilder::keygen(); + // let circuit = TestCircuit:: { + // builder: RefCell::new(builder), + // range, + // test_input: test_input.into_witness(), + // test_output, + // _f: PhantomData, + // }; + // let params = gen_srs(k); + // let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); + // } + + // #[test] + // fn test_sha256_proof_gen() { + // let k = TestCircuit::::K as u32; + // let test_input = vec![2u8; 32]; + // let test_output: [u8; 32] = Sha256::digest(&test_input).into(); + // let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); + // let builder = GateThreadBuilder::keygen(); + // let circuit = TestCircuit:: { + // builder: RefCell::new(builder), + // range, + // test_input: HashInput::TwoToOne( + // test_input.clone().into_witness(), + // test_input.into_witness(), + // ), + // test_output, + // _f: PhantomData, + // }; + // let pf_time = start_timer!(|| "mock prover"); + + // let prover = MockProver::run(k, &circuit, vec![]).unwrap(); + // prover.assert_satisfied(); + // prover.verify().unwrap(); + // end_timer!(pf_time); + + // let params = gen_srs(k); + + // let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); + + // let proof = full_prover(¶ms, &pkey, circuit, vec![]); + + // let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); + // assert!(is_valid); + // } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs new file mode 100644 index 00000000..6d5d7288 --- /dev/null +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -0,0 +1,173 @@ +use std::cell::RefCell; + +use eth_types::Field; +use halo2_base::{utils::ScalarField, Context, gates::{builder::{GateThreadBuilder, CircuitBuilderStage, FlexGateConfigParams, KeygenAssignments}, flex_gate::FlexGateConfig}}; +use halo2_proofs::{plonk::{Column, Advice, Selector}, circuit::Region}; + +use super::SpreadConfig; + +pub const SPREAD_PHASE: usize = 1; + +#[derive(Clone, Debug, Default)] +pub struct SpreadThreadBuilder { + /// Threads for spread table assignment. + pub threads_spread: Vec>, + /// [`GateThreadBuilder`] with threads for basic gate; also in charge of thread IDs + pub gate_builder: GateThreadBuilder, +} + + +pub(crate) type ShaContextPair<'a, F> = (&'a mut Context, &'a mut Context); + +impl SpreadThreadBuilder { + // re-expose some methods from [`GateThreadBuilder`] for convenience + #[allow(unused_mut)] + pub fn new(mut witness_gen_only: bool) -> Self { + Self { threads_spread: Vec::new(), gate_builder: GateThreadBuilder::new(witness_gen_only) } + } + + pub fn from_stage(stage: CircuitBuilderStage) -> Self { + Self::new(stage == CircuitBuilderStage::Prover) + } + + pub fn mock() -> Self { + Self::new(false) + } + + pub fn keygen() -> Self { + Self::new(false).unknown(true) + } + + pub fn prover() -> Self { + Self::new(true) + } + + pub fn unknown(mut self, use_unknown: bool) -> Self { + self.gate_builder = self.gate_builder.unknown(use_unknown); + self + } + + pub fn main(&mut self) -> ShaContextPair { + if self.threads_spread.is_empty() { + self.new_thread_spread(); + } + (self.gate_builder.main(SPREAD_PHASE), self.threads_spread.last_mut().unwrap()) + } + + pub fn witness_gen_only(&self) -> bool { + self.gate_builder.witness_gen_only() + } + + pub fn use_unknown(&self) -> bool { + self.gate_builder.use_unknown() + } + + pub fn thread_count(&self) -> usize { + self.gate_builder.thread_count() + } + + pub fn get_new_thread_id(&mut self) -> usize { + self.gate_builder.get_new_thread_id() + } + + pub fn new_thread_spread(&mut self) -> &mut Context { + let thread_id = self.get_new_thread_id(); + self.threads_spread.push(Context::new(self.witness_gen_only(), thread_id)); + self.threads_spread.last_mut().unwrap() + } + + /// Auto-calculate configuration parameters for the circuit + pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + self.gate_builder.config(k, minimum_rows) + } + + /// Assigns all advice and fixed cells, turns on selectors, imposes equality constraints. + /// This should only be called during keygen. + pub fn assign_all( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + q_lookup: &[Option], + spread: &SpreadConfig, + region: &mut Region, + KeygenAssignments { + mut assigned_advices, + assigned_constants, + mut break_points, + }: KeygenAssignments, + ) -> KeygenAssignments { + assert!(!self.witness_gen_only()); + + let use_unknown = self.use_unknown(); + let max_rows = gate.max_rows; + + // first we assign all RLC contexts, basically copying gate::builder::assign_all except that the length of the RLC vertical gate is 3 instead of 4 (which was length of basic gate) + let mut gate_index = 0; + let mut row_offset = 0; + for ctx in self.threads_spread.iter() { + // TODO: if we have more similar vertical gates this should be refactored into a general function + // for (i, (&advice, &q)) in + // ctx.advice.iter().zip(ctx.selector.iter().chain(iter::repeat(&false))).enumerate() + // { + // let (mut column, mut q_rlc) = basic_gate; + // let value = if use_unknown { Value::unknown() } else { Value::known(advice) }; + // #[cfg(feature = "halo2-axiom")] + // let cell = *region.assign_advice(column, row_offset, value).cell(); + // #[cfg(not(feature = "halo2-axiom"))] + // let cell = + // region.assign_advice(|| "", column, row_offset, || value).unwrap().cell(); + // assigned_advices.insert((ctx.context_id, i), (cell, row_offset)); + + // if (q && row_offset + 3 > max_rows) || row_offset >= max_rows - 1 { + // break_points.rlc.push(row_offset); + // row_offset = 0; + // gate_index += 1; + // // when there is a break point, because we may have two gates that overlap at the current cell, we must copy the current cell to the next column for safety + // basic_gate = *spread + // .basic_gates + // .get(gate_index) + // .unwrap_or_else(|| panic!("NOT ENOUGH RLC ADVICE COLUMNS. Perhaps blinding factors were not taken into account. The max non-poisoned rows is {max_rows}")); + // (column, q_rlc) = basic_gate; + + // #[cfg(feature = "halo2-axiom")] + // { + // let ncell = region.assign_advice(column, row_offset, value); + // region.constrain_equal(ncell.cell(), &cell); + // } + // #[cfg(not(feature = "halo2-axiom"))] + // { + // let ncell = region + // .assign_advice(|| "", column, row_offset, || value) + // .unwrap() + // .cell(); + // region.constrain_equal(ncell, cell).unwrap(); + // } + // } + + // if q { + // q_rlc.enable(region, row_offset).expect("enable selector should not fail"); + // } + // row_offset += 1; + // } + } + // in order to constrain equalities and assign constants, we copy the RLC equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it + // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there + let main_ctx = self.gate_builder.main(0); + for ctx in self.threads_spread.iter_mut() { + main_ctx.advice_equality_constraints.append(&mut ctx.advice_equality_constraints); + main_ctx.constant_equality_constraints.append(&mut ctx.constant_equality_constraints); + } + + self.gate_builder.assign_all( + gate, + lookup_advice, + q_lookup, + region, + KeygenAssignments { + assigned_advices, + assigned_constants, + break_points, + }, + ) + } +} diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index c761519b..34fc2cf2 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -1,474 +1,474 @@ -use eth_types::Field; -use ff::PrimeField; -use halo2_base::gates::builder::KeygenAssignments; -use halo2_proofs::circuit::Value; -use itertools::Itertools; -use std::collections::HashMap; -use std::{cell::RefCell, char::MAX}; - -use crate::gadget::rlc; -use crate::util::AssignedValueCell; -use crate::{ - sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, - witness::HashInput, -}; -use halo2_base::safe_types::RangeChip; -use halo2_base::QuantumCell; -use halo2_base::{ - gates::{GateInstructions, RangeInstructions}, - AssignedValue, Context, -}; -use halo2_base::{utils::value_to_option, ContextCell}; -use halo2_proofs::{ - circuit::{self, AssignedCell, Region}, - plonk::{Assigned, Error}, -}; - -use super::{AssignedHashResult, HashChip}; - -const SHA256_CONTEXT_ID: usize = usize::MAX; - -#[derive(Debug)] -pub struct Sha256ChipWide<'a, F: Field> { - config: &'a Sha256CircuitConfig, - range: &'a RangeChip, - randomness: F, - extra_assignments: RefCell>, - sha256_circuit_offset: RefCell, -} - -impl<'a, F: Field> HashChip for Sha256ChipWide<'a, F> { - const BLOCK_SIZE: usize = 64; - const DIGEST_SIZE: usize = 32; - - fn digest( - &self, - input: HashInput>, - ctx: &mut Context, - region: &mut Region<'_, F>, - ) -> Result, Error> { - let binary_input: HashInput = input.clone().into(); - let assigned_input = input.into_assigned(ctx); - - let mut extra_assignment = self.extra_assignments.borrow_mut(); - let assigned_advices = &mut extra_assignment.assigned_advices; - let mut assigned_input_bytes = assigned_input.to_vec(); - let rnd = QuantumCell::Constant(self.randomness); - let input_byte_size = assigned_input_bytes.len(); - let max_byte_size = MAX_INPUT_SIZE; - assert!(input_byte_size <= max_byte_size); - let range = &self.range; - let gate = &range.gate; - - assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); - let mut circuit_offset = self.sha256_circuit_offset.borrow_mut(); - let mut assigned_rows = Sha256AssignedRows::new(*circuit_offset); - let assigned_hash_bytes = - self.config - .digest_with_region(region, binary_input, &mut assigned_rows)?; - *circuit_offset = assigned_rows.offset; - let mut offset = assigned_advices - .keys() - .filter(|(ctx_id, offset)| ctx_id == &SHA256_CONTEXT_ID) - .map(|(ctx_id, offset)| *offset + 1) - .max() - .unwrap_or(0); - // TODO: use upload_assigned_cells instead of assigned_cell2value? - let assigned_output = assigned_hash_bytes.map(|cell| self.assigned_cell2value(ctx, &cell)); - - let one_round_size = Self::BLOCK_SIZE; - let num_round = 1; - - let num_round = if input_byte_size % one_round_size == 0 { - input_byte_size / one_round_size - } else { - input_byte_size / one_round_size + 1 - }; - let padded_size = one_round_size * num_round; - let zero_padding_byte_size = padded_size - input_byte_size; - let max_round = max_byte_size / one_round_size; - - let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); - - for _ in 0..zero_padding_byte_size { - assigned_input_bytes.push(assign_byte(0u8)); - } - - assert_eq!(assigned_input_bytes.len(), num_round * one_round_size); - - for &assigned in assigned_input_bytes.iter() { - range.range_check(ctx, assigned, 8); - } - - let zero = ctx.load_zero(); - let mut full_input_len = zero; - - let mut cur_input_rlc = zero; - for round_idx in 0..max_round { - let input_len = self.assigned_cell2value(ctx, &assigned_rows.input_len[round_idx]); - - let input_rlcs = { - let input_rlc_cells = - assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)].iter(); - self.upload_assigned_cells( - input_rlc_cells, - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - }; - - let padding_selectors = assigned_rows.padding_selectors - [16 * round_idx..16 * (round_idx + 1)] - .iter() - .map(|cells| { - self.upload_assigned_cells( - cells, - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - .try_into() - .unwrap() - }) - .collect::>(); - - let [is_output_enabled, output_rlc]: [_; 2] = self - .upload_assigned_cells( - [ - &assigned_rows.is_final[round_idx], - &assigned_rows.output_rlc[0], - ], - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - .try_into() - .unwrap(); - - full_input_len = { - let muled = gate.mul(ctx, is_output_enabled, input_len); - gate.add(ctx, full_input_len, muled) - }; - - for word_idx in 0..16 { - let offset_in = 64 * round_idx + 4 * word_idx; - let assigned_input_u32 = &assigned_input_bytes[offset_in..(offset_in + 4)]; - - for (idx, &assigned_byte) in assigned_input_u32.iter().enumerate() { - let tmp = gate.mul_add(ctx, cur_input_rlc, rnd, assigned_byte); - cur_input_rlc = - gate.select(ctx, cur_input_rlc, tmp, padding_selectors[word_idx][idx]); - } - - ctx.constrain_equal(&cur_input_rlc, &input_rlcs[word_idx]); - } - - let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx); - ctx.constrain_equal(&hash_rlc, &output_rlc); - } - for &byte in assigned_output.iter() { - range.range_check(ctx, byte, 8); - } - - Ok(AssignedHashResult { - // input_len: full_input_len, - input_bytes: vec![], - output_bytes: assigned_output, - }) - } - - /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. - /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, - /// use `set_extra_assignments` to restore at the start of region declartion. - /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. - fn take_extra_assignments(&self) -> KeygenAssignments { - self.extra_assignments.take() - } - - fn range(&self) -> &RangeChip { - self.range - } -} - -impl<'a, F: Field> Sha256ChipWide<'a, F> { - pub fn new( - config: &'a Sha256CircuitConfig, - range: &'a RangeChip, - randomness: Value, - extra_assignments: Option>, - sha256_circuit_offset: usize, - ) -> Self { - Self { - config, - range, - randomness: value_to_option(randomness).expect("randomness is not assigned"), - extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), - sha256_circuit_offset: RefCell::new(sha256_circuit_offset), - } - } - - fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { - self.extra_assignments = RefCell::new(extra_assignments); - } - - fn assigned_cell2value( - &self, - ctx: &mut Context, - assigned_cell: &AssignedValueCell, - ) -> AssignedValue { - ctx.load_witness(assigned_cell.value()) - } - - fn upload_assigned_cells( - &self, - assigned_cells: impl IntoIterator>, - offset: &mut usize, - assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, - witness_gen_only: bool, - ) -> Vec> { - let assigned_values = assigned_cells - .into_iter() - .enumerate() - .map(|(i, assigned_cell)| { - let value = Assigned::Trivial(assigned_cell.value); - - let aval = AssignedValue { - value, - cell: (!witness_gen_only).then_some(ContextCell { - context_id: SHA256_CONTEXT_ID, - offset: *offset + i, - }), - }; - if !witness_gen_only { - // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell - assigned_advices.insert( - (SHA256_CONTEXT_ID, *offset + i), - (assigned_cell.cell(), usize::MAX), - ); - } - aval - }) - .collect_vec(); - *offset += assigned_values.len(); - assigned_values - } -} - -#[cfg(test)] -mod test { - use std::vec; - use std::{cell::RefCell, marker::PhantomData}; - - use crate::table::Sha256Table; - use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use halo2_base::gates::range::RangeConfig; - use halo2_base::utils::fs::gen_srs; - use halo2_base::SKIP_FIRST_PASS; - use halo2_base::{ - gates::{builder::GateThreadBuilder, range::RangeStrategy}, - halo2_proofs::{ - circuit::{Layouter, SimpleFloorPlanner}, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, ConstraintSystem}, - }, - }; - use sha2::{Digest, Sha256}; - - #[derive(Debug, Clone)] - struct TestConfig { - sha256_config: Sha256CircuitConfig, - pub max_byte_size: usize, - range: RangeConfig, - challenges: Challenges>, - } - - #[derive(Debug, Clone)] - struct TestCircuit { - builder: RefCell>, - range: RangeChip, - test_input: HashInput>, - test_output: [u8; 32], - _f: PhantomData, - } - - impl Circuit for TestCircuit - where - [(); Self::MAX_BYTE_SIZE]:, - { - type Config = TestConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let sha_table = Sha256Table::construct(meta); - let sha256_configs = Sha256CircuitConfig::::new::(meta, sha_table); - let range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - &[Self::NUM_ADVICE], - &[Self::NUM_LOOKUP_ADVICE], - Self::NUM_FIXED, - Self::LOOKUP_BITS, - Self::K, - ); - Self::Config { - sha256_config: sha256_configs, - max_byte_size: Self::MAX_BYTE_SIZE, - range, - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - } - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config.range.load_lookup_table(&mut layouter)?; - let mut first_pass = SKIP_FIRST_PASS; - let sha256 = Sha256ChipWide::new( - &config.sha256_config, - &self.range, - config.challenges.sha256_input(), - None, - 0, - ); - - let mut builder = self.builder.borrow().clone(); - - let _ = layouter.assign_region( - || "sha2 test", - |mut region| { - if first_pass { - first_pass = false; - println!("first pass"); - return Ok(vec![]); - } - config.sha256_config.annotate_columns_in_region(&mut region); - - let ctx = builder.main(0); - - let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; - - let assigned_hash = result.output_bytes; - println!( - "assigned hash: {:?}", - assigned_hash.map(|e| e.value().get_lower_32()) - ); - - // let correct_output = self - // .test_output - // .map(|b| ctx.load_witness(F::from(b as u64))); - - // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { - // ctx.constrain_equal(hash, check); - // } - - let extra_assignments = sha256.take_extra_assignments(); - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) - }, - )?; - - Ok(()) - } - } - - impl TestCircuit { - const MAX_BYTE_SIZE: usize = 64; - const NUM_ADVICE: usize = 5; - const NUM_FIXED: usize = 1; - const NUM_LOOKUP_ADVICE: usize = 4; - const LOOKUP_BITS: usize = 8; - const K: usize = 11; - } - - #[test] - fn test_sha256_wide_chip_constant_size() { - let k = TestCircuit::::K as u32; - - let test_input = vec![0u8; 128]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::new(false); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, - }; - - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - #[test] - fn test_sha256_wide_params_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![0u8; 128]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, - }; - let params = gen_srs(k); - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); - } - - #[test] - fn test_sha256_wide_proof_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![2u8; 32]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: HashInput::TwoToOne( - test_input.clone().into_witness(), - test_input.into_witness(), - ), - test_output, - _f: PhantomData, - }; - let pf_time = start_timer!(|| "mock prover"); - - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - prover.verify().unwrap(); - end_timer!(pf_time); - - let params = gen_srs(k); - - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); - - let proof = full_prover(¶ms, &pkey, circuit, vec![]); - - let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); - assert!(is_valid); - } -} +// use eth_types::Field; +// use ff::PrimeField; +// use halo2_base::gates::builder::KeygenAssignments; +// use halo2_proofs::circuit::Value; +// use itertools::Itertools; +// use std::collections::HashMap; +// use std::{cell::RefCell, char::MAX}; + +// use crate::gadget::rlc; +// use crate::util::AssignedValueCell; +// use crate::{ +// sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, +// witness::HashInput, +// }; +// use halo2_base::safe_types::RangeChip; +// use halo2_base::QuantumCell; +// use halo2_base::{ +// gates::{GateInstructions, RangeInstructions}, +// AssignedValue, Context, +// }; +// use halo2_base::{utils::value_to_option, ContextCell}; +// use halo2_proofs::{ +// circuit::{self, AssignedCell, Region}, +// plonk::{Assigned, Error}, +// }; + +// use super::{AssignedHashResult, HashChip}; + +// const SHA256_CONTEXT_ID: usize = usize::MAX; + +// #[derive(Debug)] +// pub struct Sha256ChipWide<'a, F: Field> { +// config: &'a Sha256CircuitConfig, +// range: &'a RangeChip, +// randomness: F, +// extra_assignments: RefCell>, +// sha256_circuit_offset: RefCell, +// } + +// impl<'a, F: Field> HashChip for Sha256ChipWide<'a, F> { +// const BLOCK_SIZE: usize = 64; +// const DIGEST_SIZE: usize = 32; + +// fn digest( +// &self, +// input: HashInput>, +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// ) -> Result, Error> { +// let binary_input: HashInput = input.clone().into(); +// let assigned_input = input.into_assigned(ctx); + +// let mut extra_assignment = self.extra_assignments.borrow_mut(); +// let assigned_advices = &mut extra_assignment.assigned_advices; +// let mut assigned_input_bytes = assigned_input.to_vec(); +// let rnd = QuantumCell::Constant(self.randomness); +// let input_byte_size = assigned_input_bytes.len(); +// let max_byte_size = MAX_INPUT_SIZE; +// assert!(input_byte_size <= max_byte_size); +// let range = &self.range; +// let gate = &range.gate; + +// assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); +// let mut circuit_offset = self.sha256_circuit_offset.borrow_mut(); +// let mut assigned_rows = Sha256AssignedRows::new(*circuit_offset); +// let assigned_hash_bytes = +// self.config +// .digest_with_region(region, binary_input, &mut assigned_rows)?; +// *circuit_offset = assigned_rows.offset; +// let mut offset = assigned_advices +// .keys() +// .filter(|(ctx_id, offset)| ctx_id == &SHA256_CONTEXT_ID) +// .map(|(ctx_id, offset)| *offset + 1) +// .max() +// .unwrap_or(0); +// // TODO: use upload_assigned_cells instead of assigned_cell2value? +// let assigned_output = assigned_hash_bytes.map(|cell| self.assigned_cell2value(ctx, &cell)); + +// let one_round_size = Self::BLOCK_SIZE; +// let num_round = 1; + +// let num_round = if input_byte_size % one_round_size == 0 { +// input_byte_size / one_round_size +// } else { +// input_byte_size / one_round_size + 1 +// }; +// let padded_size = one_round_size * num_round; +// let zero_padding_byte_size = padded_size - input_byte_size; +// let max_round = max_byte_size / one_round_size; + +// let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); + +// for _ in 0..zero_padding_byte_size { +// assigned_input_bytes.push(assign_byte(0u8)); +// } + +// assert_eq!(assigned_input_bytes.len(), num_round * one_round_size); + +// for &assigned in assigned_input_bytes.iter() { +// range.range_check(ctx, assigned, 8); +// } + +// let zero = ctx.load_zero(); +// let mut full_input_len = zero; + +// let mut cur_input_rlc = zero; +// for round_idx in 0..max_round { +// let input_len = self.assigned_cell2value(ctx, &assigned_rows.input_len[round_idx]); + +// let input_rlcs = { +// let input_rlc_cells = +// assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)].iter(); +// self.upload_assigned_cells( +// input_rlc_cells, +// &mut offset, +// assigned_advices, +// ctx.witness_gen_only(), +// ) +// }; + +// let padding_selectors = assigned_rows.padding_selectors +// [16 * round_idx..16 * (round_idx + 1)] +// .iter() +// .map(|cells| { +// self.upload_assigned_cells( +// cells, +// &mut offset, +// assigned_advices, +// ctx.witness_gen_only(), +// ) +// .try_into() +// .unwrap() +// }) +// .collect::>(); + +// let [is_output_enabled, output_rlc]: [_; 2] = self +// .upload_assigned_cells( +// [ +// &assigned_rows.is_final[round_idx], +// &assigned_rows.output_rlc[0], +// ], +// &mut offset, +// assigned_advices, +// ctx.witness_gen_only(), +// ) +// .try_into() +// .unwrap(); + +// full_input_len = { +// let muled = gate.mul(ctx, is_output_enabled, input_len); +// gate.add(ctx, full_input_len, muled) +// }; + +// for word_idx in 0..16 { +// let offset_in = 64 * round_idx + 4 * word_idx; +// let assigned_input_u32 = &assigned_input_bytes[offset_in..(offset_in + 4)]; + +// for (idx, &assigned_byte) in assigned_input_u32.iter().enumerate() { +// let tmp = gate.mul_add(ctx, cur_input_rlc, rnd, assigned_byte); +// cur_input_rlc = +// gate.select(ctx, cur_input_rlc, tmp, padding_selectors[word_idx][idx]); +// } + +// ctx.constrain_equal(&cur_input_rlc, &input_rlcs[word_idx]); +// } + +// let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx); +// ctx.constrain_equal(&hash_rlc, &output_rlc); +// } +// for &byte in assigned_output.iter() { +// range.range_check(ctx, byte, 8); +// } + +// Ok(AssignedHashResult { +// // input_len: full_input_len, +// input_bytes: vec![], +// output_bytes: assigned_output, +// }) +// } + +// /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. +// /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, +// /// use `set_extra_assignments` to restore at the start of region declartion. +// /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. +// fn take_extra_assignments(&self) -> KeygenAssignments { +// self.extra_assignments.take() +// } + +// fn range(&self) -> &RangeChip { +// self.range +// } +// } + +// impl<'a, F: Field> Sha256ChipWide<'a, F> { +// pub fn new( +// config: &'a Sha256CircuitConfig, +// range: &'a RangeChip, +// randomness: Value, +// extra_assignments: Option>, +// sha256_circuit_offset: usize, +// ) -> Self { +// Self { +// config, +// range, +// randomness: value_to_option(randomness).expect("randomness is not assigned"), +// extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), +// sha256_circuit_offset: RefCell::new(sha256_circuit_offset), +// } +// } + +// fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { +// self.extra_assignments = RefCell::new(extra_assignments); +// } + +// fn assigned_cell2value( +// &self, +// ctx: &mut Context, +// assigned_cell: &AssignedValueCell, +// ) -> AssignedValue { +// ctx.load_witness(assigned_cell.value()) +// } + +// fn upload_assigned_cells( +// &self, +// assigned_cells: impl IntoIterator>, +// offset: &mut usize, +// assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, +// witness_gen_only: bool, +// ) -> Vec> { +// let assigned_values = assigned_cells +// .into_iter() +// .enumerate() +// .map(|(i, assigned_cell)| { +// let value = Assigned::Trivial(assigned_cell.value); + +// let aval = AssignedValue { +// value, +// cell: (!witness_gen_only).then_some(ContextCell { +// context_id: SHA256_CONTEXT_ID, +// offset: *offset + i, +// }), +// }; +// if !witness_gen_only { +// // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell +// assigned_advices.insert( +// (SHA256_CONTEXT_ID, *offset + i), +// (assigned_cell.cell(), usize::MAX), +// ); +// } +// aval +// }) +// .collect_vec(); +// *offset += assigned_values.len(); +// assigned_values +// } +// } + +// #[cfg(test)] +// mod test { +// use std::vec; +// use std::{cell::RefCell, marker::PhantomData}; + +// use crate::table::Sha256Table; +// use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use halo2_base::gates::range::RangeConfig; +// use halo2_base::utils::fs::gen_srs; +// use halo2_base::SKIP_FIRST_PASS; +// use halo2_base::{ +// gates::{builder::GateThreadBuilder, range::RangeStrategy}, +// halo2_proofs::{ +// circuit::{Layouter, SimpleFloorPlanner}, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{Circuit, ConstraintSystem}, +// }, +// }; +// use sha2::{Digest, Sha256}; + +// #[derive(Debug, Clone)] +// struct TestConfig { +// sha256_config: Sha256CircuitConfig, +// pub max_byte_size: usize, +// range: RangeConfig, +// challenges: Challenges>, +// } + +// #[derive(Debug, Clone)] +// struct TestCircuit { +// builder: RefCell>, +// range: RangeChip, +// test_input: HashInput>, +// test_output: [u8; 32], +// _f: PhantomData, +// } + +// impl Circuit for TestCircuit +// where +// [(); Self::MAX_BYTE_SIZE]:, +// { +// type Config = TestConfig; +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// unimplemented!() +// } + +// fn configure(meta: &mut ConstraintSystem) -> Self::Config { +// let sha_table = Sha256Table::construct(meta); +// let sha256_configs = Sha256CircuitConfig::::new::(meta, sha_table); +// let range = RangeConfig::configure( +// meta, +// RangeStrategy::Vertical, +// &[Self::NUM_ADVICE], +// &[Self::NUM_LOOKUP_ADVICE], +// Self::NUM_FIXED, +// Self::LOOKUP_BITS, +// Self::K, +// ); +// Self::Config { +// sha256_config: sha256_configs, +// max_byte_size: Self::MAX_BYTE_SIZE, +// range, +// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), +// } +// } + +// fn synthesize( +// &self, +// config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// config.range.load_lookup_table(&mut layouter)?; +// let mut first_pass = SKIP_FIRST_PASS; +// let sha256 = Sha256ChipWide::new( +// &config.sha256_config, +// &self.range, +// config.challenges.sha256_input(), +// None, +// 0, +// ); + +// let mut builder = self.builder.borrow().clone(); + +// let _ = layouter.assign_region( +// || "sha2 test", +// |mut region| { +// if first_pass { +// first_pass = false; +// println!("first pass"); +// return Ok(vec![]); +// } +// config.sha256_config.annotate_columns_in_region(&mut region); + +// let ctx = builder.main(0); + +// let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; + +// let assigned_hash = result.output_bytes; +// println!( +// "assigned hash: {:?}", +// assigned_hash.map(|e| e.value().get_lower_32()) +// ); + +// // let correct_output = self +// // .test_output +// // .map(|b| ctx.load_witness(F::from(b as u64))); + +// // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { +// // ctx.constrain_equal(hash, check); +// // } + +// let extra_assignments = sha256.take_extra_assignments(); + +// let _ = builder.assign_all( +// &config.range.gate, +// &config.range.lookup_advice, +// &config.range.q_lookup, +// &mut region, +// extra_assignments, +// ); + +// Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) +// }, +// )?; + +// Ok(()) +// } +// } + +// impl TestCircuit { +// const MAX_BYTE_SIZE: usize = 64; +// const NUM_ADVICE: usize = 5; +// const NUM_FIXED: usize = 1; +// const NUM_LOOKUP_ADVICE: usize = 4; +// const LOOKUP_BITS: usize = 8; +// const K: usize = 11; +// } + +// #[test] +// fn test_sha256_wide_chip_constant_size() { +// let k = TestCircuit::::K as u32; + +// let test_input = vec![0u8; 128]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::new(false); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: test_input.into_witness(), +// test_output, +// _f: PhantomData, +// }; + +// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// } + +// #[test] +// fn test_sha256_wide_params_gen() { +// let k = TestCircuit::::K as u32; +// let test_input = vec![0u8; 128]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::keygen(); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: test_input.into_witness(), +// test_output, +// _f: PhantomData, +// }; +// let params = gen_srs(k); +// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); +// } + +// #[test] +// fn test_sha256_wide_proof_gen() { +// let k = TestCircuit::::K as u32; +// let test_input = vec![2u8; 32]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::keygen(); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: HashInput::TwoToOne( +// test_input.clone().into_witness(), +// test_input.into_witness(), +// ), +// test_output, +// _f: PhantomData, +// }; +// let pf_time = start_timer!(|| "mock prover"); + +// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// prover.verify().unwrap(); +// end_timer!(pf_time); + +// let params = gen_srs(k); + +// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); + +// let proof = full_prover(¶ms, &pkey, circuit, vec![]); + +// let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); +// assert!(is_valid); +// } +// } diff --git a/lightclient-circuits/src/gadget/crypto/util.rs b/lightclient-circuits/src/gadget/crypto/util.rs index cd233589..4b5202b9 100644 --- a/lightclient-circuits/src/gadget/crypto/util.rs +++ b/lightclient-circuits/src/gadget/crypto/util.rs @@ -1,110 +1,110 @@ -use super::{hash2curve::HashToCurveCache, Fp2Point, FpPoint}; -use eth_types::{AppCurveExt, Field, HashCurveExt}; -use halo2_base::{ - safe_types::{GateInstructions, RangeInstructions}, - utils::ScalarField, - AssignedValue, Context, QuantumCell, -}; -use halo2_ecc::{ - bigint::ProperCrtUint, - ecc::EcPoint, - fields::{fp::FpChip, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField}, -}; -use itertools::Itertools; -use num_bigint::BigUint; +// use super::{hash2curve::HashToCurveCache, Fp2Point, FpPoint}; +// use eth_types::{AppCurveExt, Field, HashCurveExt}; +// use halo2_base::{ +// safe_types::{GateInstructions, RangeInstructions}, +// utils::ScalarField, +// AssignedValue, Context, QuantumCell, +// }; +// use halo2_ecc::{ +// bigint::ProperCrtUint, +// ecc::EcPoint, +// fields::{fp::FpChip, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField}, +// }; +// use itertools::Itertools; +// use num_bigint::BigUint; -pub fn fp2_sgn0( - x: Fp2Point, - ctx: &mut Context, - fp_chip: &FpChip, -) -> AssignedValue { - let gate = fp_chip.gate(); - let c0 = x.0[0].clone(); - let c1 = x.0[1].clone(); +// pub fn fp2_sgn0( +// x: Fp2Point, +// ctx: &mut Context, +// fp_chip: &FpChip, +// ) -> AssignedValue { +// let gate = fp_chip.gate(); +// let c0 = x.0[0].clone(); +// let c1 = x.0[1].clone(); - let c0_zero = fp_chip.is_zero(ctx, &c0); - let c0_sgn = fp_sgn0::(c0, ctx, fp_chip); - let c1_sgn = fp_sgn0::(c1, ctx, fp_chip); - let sgn = gate.select(ctx, c1_sgn, c0_sgn, c0_zero); - gate.assert_bit(ctx, sgn); - sgn -} +// let c0_zero = fp_chip.is_zero(ctx, &c0); +// let c0_sgn = fp_sgn0::(c0, ctx, fp_chip); +// let c1_sgn = fp_sgn0::(c1, ctx, fp_chip); +// let sgn = gate.select(ctx, c1_sgn, c0_sgn, c0_zero); +// gate.assert_bit(ctx, sgn); +// sgn +// } -pub fn fp_sgn0( - x: FpPoint, - ctx: &mut Context, - fp_chip: &FpChip, -) -> AssignedValue { - let range = fp_chip.range(); - let gate = range.gate(); +// pub fn fp_sgn0( +// x: FpPoint, +// ctx: &mut Context, +// fp_chip: &FpChip, +// ) -> AssignedValue { +// let range = fp_chip.range(); +// let gate = range.gate(); - let msl = x.limbs()[0]; // most significant limb +// let msl = x.limbs()[0]; // most significant limb - let lsb = range - .div_mod(ctx, msl, BigUint::from(256u64), C::LIMB_BITS) - .1; // get least significant *byte* - range.div_mod(ctx, lsb, BigUint::from(2u64), 8).1 // sgn0 = lsb % 2 -} +// let lsb = range +// .div_mod(ctx, msl, BigUint::from(256u64), C::LIMB_BITS) +// .1; // get least significant *byte* +// range.div_mod(ctx, lsb, BigUint::from(2u64), 8).1 // sgn0 = lsb % 2 +// } -/// Integer to Octet Stream (numberToBytesBE) -pub fn i2osp( - mut value: u128, - length: usize, - mut f: impl FnMut(F) -> AssignedValue, -) -> Vec> { - let mut octet_string = vec![0; length]; - for i in (0..length).rev() { - octet_string[i] = value & 0xff; - value >>= 8; - } - octet_string - .into_iter() - .map(|b| f(F::from(b as u64))) - .collect() -} +// /// Integer to Octet Stream (numberToBytesBE) +// pub fn i2osp( +// mut value: u128, +// length: usize, +// mut f: impl FnMut(F) -> AssignedValue, +// ) -> Vec> { +// let mut octet_string = vec![0; length]; +// for i in (0..length).rev() { +// octet_string[i] = value & 0xff; +// value >>= 8; +// } +// octet_string +// .into_iter() +// .map(|b| f(F::from(b as u64))) +// .collect() +// } -pub fn strxor( - a: impl IntoIterator>, - b: impl IntoIterator>, - gate: &impl GateInstructions, - ctx: &mut Context, -) -> Vec> { - a.into_iter() - .zip(b.into_iter()) - .map(|(a, b)| bitwise_xor::<_, 8>(a, b, gate, ctx)) - .collect() -} +// pub fn strxor( +// a: impl IntoIterator>, +// b: impl IntoIterator>, +// gate: &impl GateInstructions, +// ctx: &mut Context, +// ) -> Vec> { +// a.into_iter() +// .zip(b.into_iter()) +// .map(|(a, b)| bitwise_xor::<_, 8>(a, b, gate, ctx)) +// .collect() +// } -pub fn bitwise_xor( - a: AssignedValue, - b: AssignedValue, - gate: &impl GateInstructions, - ctx: &mut Context, -) -> AssignedValue { - let one = ctx.load_constant(F::one()); - let mut a_bits = gate.num_to_bits(ctx, a, BITS); - let mut b_bits = gate.num_to_bits(ctx, b, BITS); +// pub fn bitwise_xor( +// a: AssignedValue, +// b: AssignedValue, +// gate: &impl GateInstructions, +// ctx: &mut Context, +// ) -> AssignedValue { +// let one = ctx.load_constant(F::one()); +// let mut a_bits = gate.num_to_bits(ctx, a, BITS); +// let mut b_bits = gate.num_to_bits(ctx, b, BITS); - let xor_bits = a_bits - .into_iter() - .zip(b_bits.into_iter()) - .map(|(a, b)| gate.xor(ctx, a, b)) - .collect_vec(); +// let xor_bits = a_bits +// .into_iter() +// .zip(b_bits.into_iter()) +// .map(|(a, b)| gate.xor(ctx, a, b)) +// .collect_vec(); - bits_to_num(gate, ctx, xor_bits) -} +// bits_to_num(gate, ctx, xor_bits) +// } -pub fn bits_to_num>>( - gate: &impl GateInstructions, - ctx: &mut Context, - bits: I, -) -> AssignedValue -where - I::IntoIter: DoubleEndedIterator + ExactSizeIterator, -{ - let bits_iter = bits.into_iter(); - assert!(bits_iter.len() <= F::NUM_BITS as usize); - bits_iter.rev().fold(ctx.load_zero(), |acc, bit| { - gate.mul_add(ctx, acc, QuantumCell::Constant(F::from(2u64)), bit) - }) -} +// pub fn bits_to_num>>( +// gate: &impl GateInstructions, +// ctx: &mut Context, +// bits: I, +// ) -> AssignedValue +// where +// I::IntoIter: DoubleEndedIterator + ExactSizeIterator, +// { +// let bits_iter = bits.into_iter(); +// assert!(bits_iter.len() <= F::NUM_BITS as usize); +// bits_iter.rev().fold(ctx.load_zero(), |acc, bit| { +// gate.mul_add(ctx, acc, QuantumCell::Constant(F::from(2u64)), bit) +// }) +// } diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index 79c14feb..f7137da9 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -19,5 +19,6 @@ pub mod sync_step_circuit; mod poseidon; mod ssz_merkle; +mod builder; pub use halo2_base::gates::builder::FlexGateConfigParams; diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index 36c6fa02..e1ea3bb5 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -1,345 +1,345 @@ -use eth_types::Field; -use halo2_base::{AssignedValue, Context, QuantumCell}; -use halo2_proofs::{circuit::Region, plonk::Error}; -use itertools::Itertools; +// use eth_types::Field; +// use halo2_base::{AssignedValue, Context, QuantumCell}; +// use halo2_proofs::{circuit::Region, plonk::Error}; +// use itertools::Itertools; -use crate::{ - gadget::crypto::HashChip, - util::{IntoConstant, IntoWitness}, - witness::{HashInput, HashInputChunk}, -}; +// use crate::{ +// gadget::crypto::HashChip, +// util::{IntoConstant, IntoWitness}, +// witness::{HashInput, HashInputChunk}, +// }; -pub const ZERO_HASHES: [[u8; 32]; 64] = [ - [0; 32], - [ - 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, - 32, 217, 240, 232, 234, 152, 49, 169, 39, 89, 251, 75, - ], - [ - 219, 86, 17, 78, 0, 253, 212, 193, 248, 92, 137, 43, 243, 90, 201, 168, 146, 137, 170, 236, - 177, 235, 208, 169, 108, 222, 96, 106, 116, 139, 93, 113, - ], - [ - 199, 128, 9, 253, 240, 127, 197, 106, 17, 241, 34, 55, 6, 88, 163, 83, 170, 165, 66, 237, - 99, 228, 76, 75, 193, 95, 244, 205, 16, 90, 179, 60, - ], - [ - 83, 109, 152, 131, 127, 45, 209, 101, 165, 93, 94, 234, 233, 20, 133, 149, 68, 114, 213, - 111, 36, 109, 242, 86, 191, 60, 174, 25, 53, 42, 18, 60, - ], - [ - 158, 253, 224, 82, 170, 21, 66, 159, 174, 5, 186, 212, 208, 177, 215, 198, 77, 166, 77, 3, - 215, 161, 133, 74, 88, 140, 44, 184, 67, 12, 13, 48, - ], - [ - 216, 141, 223, 238, 212, 0, 168, 117, 85, 150, 178, 25, 66, 193, 73, 126, 17, 76, 48, 46, - 97, 24, 41, 15, 145, 230, 119, 41, 118, 4, 31, 161, - ], - [ - 135, 235, 13, 219, 165, 126, 53, 246, 210, 134, 103, 56, 2, 164, 175, 89, 117, 226, 37, 6, - 199, 207, 76, 100, 187, 107, 229, 238, 17, 82, 127, 44, - ], - [ - 38, 132, 100, 118, 253, 95, 197, 74, 93, 67, 56, 81, 103, 201, 81, 68, 242, 100, 63, 83, - 60, 200, 91, 185, 209, 107, 120, 47, 141, 125, 177, 147, - ], - [ - 80, 109, 134, 88, 45, 37, 36, 5, 184, 64, 1, 135, 146, 202, 210, 191, 18, 89, 241, 239, 90, - 165, 248, 135, 225, 60, 178, 240, 9, 79, 81, 225, - ], - [ - 255, 255, 10, 215, 230, 89, 119, 47, 149, 52, 193, 149, 200, 21, 239, 196, 1, 78, 241, 225, - 218, 237, 68, 4, 192, 99, 133, 209, 17, 146, 233, 43, - ], - [ - 108, 240, 65, 39, 219, 5, 68, 28, 216, 51, 16, 122, 82, 190, 133, 40, 104, 137, 14, 67, 23, - 230, 160, 42, 180, 118, 131, 170, 117, 150, 66, 32, - ], - [ - 183, 208, 95, 135, 95, 20, 0, 39, 239, 81, 24, 162, 36, 123, 187, 132, 206, 143, 47, 15, - 17, 35, 98, 48, 133, 218, 247, 150, 12, 50, 159, 95, - ], - [ - 223, 106, 245, 245, 187, 219, 107, 233, 239, 138, 166, 24, 228, 191, 128, 115, 150, 8, 103, - 23, 30, 41, 103, 111, 139, 40, 77, 234, 106, 8, 168, 94, - ], - [ - 181, 141, 144, 15, 94, 24, 46, 60, 80, 239, 116, 150, 158, 161, 108, 119, 38, 197, 73, 117, - 124, 194, 53, 35, 195, 105, 88, 125, 167, 41, 55, 132, - ], - [ - 212, 154, 117, 2, 255, 207, 176, 52, 11, 29, 120, 133, 104, 133, 0, 202, 48, 129, 97, 167, - 249, 107, 98, 223, 157, 8, 59, 113, 252, 200, 242, 187, - ], - [ - 143, 230, 177, 104, 146, 86, 192, 211, 133, 244, 47, 91, 190, 32, 39, 162, 44, 25, 150, - 225, 16, 186, 151, 193, 113, 211, 229, 148, 141, 233, 43, 235, - ], - [ - 141, 13, 99, 195, 158, 186, 222, 133, 9, 224, 174, 60, 156, 56, 118, 251, 95, 161, 18, 190, - 24, 249, 5, 236, 172, 254, 203, 146, 5, 118, 3, 171, - ], - [ - 149, 238, 200, 178, 229, 65, 202, 212, 233, 29, 227, 131, 133, 242, 224, 70, 97, 159, 84, - 73, 108, 35, 130, 203, 108, 172, 213, 185, 140, 38, 245, 164, - ], - [ - 248, 147, 233, 8, 145, 119, 117, 182, 43, 255, 35, 41, 77, 187, 227, 161, 205, 142, 108, - 193, 195, 91, 72, 1, 136, 123, 100, 106, 111, 129, 241, 127, - ], - [ - 205, 219, 167, 181, 146, 227, 19, 51, 147, 193, 97, 148, 250, 199, 67, 26, 191, 47, 84, - 133, 237, 113, 29, 178, 130, 24, 60, 129, 158, 8, 235, 170, - ], - [ - 138, 141, 127, 227, 175, 140, 170, 8, 90, 118, 57, 168, 50, 0, 20, 87, 223, 185, 18, 138, - 128, 97, 20, 42, 208, 51, 86, 41, 255, 35, 255, 156, - ], - [ - 254, 179, 195, 55, 215, 165, 26, 111, 191, 0, 185, 227, 76, 82, 225, 201, 25, 92, 150, 155, - 212, 231, 160, 191, 213, 29, 92, 91, 237, 156, 17, 103, - ], - [ - 231, 31, 10, 168, 60, 195, 46, 223, 190, 250, 159, 77, 62, 1, 116, 202, 133, 24, 46, 236, - 159, 58, 9, 246, 166, 192, 223, 99, 119, 165, 16, 215, - ], - [ - 49, 32, 111, 168, 10, 80, 187, 106, 190, 41, 8, 80, 88, 241, 98, 18, 33, 42, 96, 238, 200, - 240, 73, 254, 203, 146, 216, 200, 224, 168, 75, 192, - ], - [ - 33, 53, 43, 254, 203, 237, 221, 233, 147, 131, 159, 97, 76, 61, 172, 10, 62, 227, 117, 67, - 249, 180, 18, 177, 97, 153, 220, 21, 142, 35, 181, 68, - ], - [ - 97, 158, 49, 39, 36, 187, 109, 124, 49, 83, 237, 157, 231, 145, 215, 100, 163, 102, 179, - 137, 175, 19, 197, 139, 248, 168, 217, 4, 129, 164, 103, 101, - ], - [ - 124, 221, 41, 134, 38, 130, 80, 98, 141, 12, 16, 227, 133, 197, 140, 97, 145, 230, 251, - 224, 81, 145, 188, 192, 79, 19, 63, 44, 234, 114, 193, 196, - ], - [ - 132, 137, 48, 189, 123, 168, 202, 197, 70, 97, 7, 33, 19, 251, 39, 136, 105, 224, 123, 184, - 88, 127, 145, 57, 41, 51, 55, 77, 1, 123, 203, 225, - ], - [ - 136, 105, 255, 44, 34, 178, 140, 193, 5, 16, 217, 133, 50, 146, 128, 51, 40, 190, 79, 176, - 232, 4, 149, 232, 187, 141, 39, 31, 91, 136, 150, 54, - ], - [ - 181, 254, 40, 231, 159, 27, 133, 15, 134, 88, 36, 108, 233, 182, 161, 231, 180, 159, 192, - 109, 183, 20, 62, 143, 224, 180, 242, 176, 197, 82, 58, 92, - ], - [ - 152, 94, 146, 159, 112, 175, 40, 208, 189, 209, 169, 10, 128, 143, 151, 127, 89, 124, 124, - 119, 140, 72, 158, 152, 211, 189, 137, 16, 211, 26, 192, 247, - ], - [ - 198, 246, 126, 2, 230, 228, 225, 189, 239, 185, 148, 198, 9, 137, 83, 243, 70, 54, 186, 43, - 108, 162, 10, 71, 33, 210, 178, 106, 136, 103, 34, 255, - ], - [ - 28, 154, 126, 95, 241, 207, 72, 180, 173, 21, 130, 211, 244, 228, 161, 0, 79, 59, 32, 216, - 197, 162, 183, 19, 135, 164, 37, 74, 217, 51, 235, 197, - ], - [ - 47, 7, 90, 226, 41, 100, 107, 111, 106, 237, 25, 165, 227, 114, 207, 41, 80, 129, 64, 30, - 184, 147, 255, 89, 155, 63, 154, 204, 12, 13, 62, 125, - ], - [ - 50, 137, 33, 222, 181, 150, 18, 7, 104, 1, 232, 205, 97, 89, 33, 7, 181, 198, 124, 121, - 184, 70, 89, 92, 198, 50, 12, 57, 91, 70, 54, 44, - ], - [ - 191, 185, 9, 253, 178, 54, 173, 36, 17, 180, 228, 136, 56, 16, 160, 116, 184, 64, 70, 70, - 137, 152, 108, 63, 138, 128, 145, 130, 126, 23, 195, 39, - ], - [ - 85, 216, 251, 54, 135, 186, 59, 164, 159, 52, 44, 119, 245, 161, 248, 155, 236, 131, 216, - 17, 68, 110, 26, 70, 113, 57, 33, 61, 100, 11, 106, 116, - ], - [ - 247, 33, 13, 79, 142, 126, 16, 57, 121, 14, 123, 244, 239, 162, 7, 85, 90, 16, 166, 219, - 29, 212, 185, 93, 163, 19, 170, 168, 139, 136, 254, 118, - ], - [ - 173, 33, 181, 22, 203, 198, 69, 255, 227, 74, 181, 222, 28, 138, 239, 140, 212, 231, 248, - 210, 181, 30, 142, 20, 86, 173, 199, 86, 60, 218, 32, 111, - ], - [ - 107, 254, 141, 43, 204, 66, 55, 183, 74, 80, 71, 5, 142, 244, 85, 51, 158, 205, 115, 96, - 203, 99, 191, 187, 142, 229, 68, 142, 100, 48, 186, 4, - ], - [ - 167, 242, 60, 233, 24, 23, 64, 220, 34, 12, 129, 71, 130, 101, 79, 238, 106, 206, 185, 241, - 236, 146, 34, 196, 226, 70, 125, 10, 177, 104, 8, 55, - ], - [ - 174, 249, 71, 108, 137, 89, 10, 44, 140, 201, 179, 183, 79, 73, 103, 199, 87, 196, 157, - 152, 102, 164, 75, 172, 242, 31, 162, 237, 103, 93, 223, 162, - ], - [ - 154, 66, 188, 173, 130, 246, 169, 228, 18, 132, 216, 8, 234, 211, 25, 242, 159, 59, 8, 32, - 157, 104, 15, 14, 44, 231, 21, 16, 208, 113, 226, 5, - ], - [ - 209, 166, 109, 53, 74, 103, 185, 207, 23, 149, 113, 216, 229, 249, 119, 146, 113, 110, 141, - 212, 236, 68, 25, 104, 57, 163, 247, 198, 183, 79, 139, 172, - ], - [ - 250, 250, 48, 37, 242, 248, 149, 9, 194, 199, 28, 116, 251, 160, 205, 146, 133, 142, 244, - 155, 7, 128, 251, 84, 121, 116, 108, 138, 155, 252, 179, 70, - ], - [ - 51, 52, 167, 193, 231, 246, 112, 90, 166, 1, 26, 106, 148, 150, 69, 1, 109, 180, 172, 222, - 12, 169, 171, 214, 109, 199, 157, 130, 102, 66, 48, 86, - ], - [ - 7, 150, 253, 117, 102, 79, 174, 247, 68, 238, 78, 82, 215, 39, 30, 43, 187, 118, 159, 145, - 237, 111, 155, 116, 216, 182, 148, 245, 102, 6, 133, 44, - ], - [ - 123, 163, 174, 74, 65, 127, 232, 84, 91, 20, 43, 200, 159, 74, 220, 215, 174, 19, 148, 28, - 186, 183, 117, 11, 131, 233, 240, 166, 109, 22, 190, 100, - ], - [ - 120, 143, 175, 204, 74, 165, 32, 57, 154, 219, 174, 209, 149, 248, 177, 44, 78, 179, 30, - 193, 1, 104, 229, 10, 171, 198, 89, 166, 174, 165, 22, 220, - ], - [ - 232, 51, 215, 166, 113, 96, 230, 139, 244, 201, 4, 74, 83, 7, 125, 242, 114, 122, 208, 12, - 243, 111, 73, 73, 199, 182, 129, 169, 18, 20, 12, 187, - ], - [ - 48, 158, 171, 240, 149, 220, 103, 20, 249, 244, 216, 100, 187, 165, 175, 250, 224, 179, 90, - 226, 245, 227, 86, 91, 204, 58, 71, 178, 18, 118, 119, 1, - ], - [ - 34, 106, 142, 190, 250, 40, 134, 101, 166, 68, 165, 2, 115, 51, 94, 251, 182, 16, 81, 15, - 36, 27, 91, 114, 12, 138, 54, 141, 89, 166, 154, 93, - ], - [ - 65, 171, 253, 153, 84, 37, 130, 118, 37, 147, 129, 49, 175, 12, 79, 51, 254, 11, 212, 104, - 140, 34, 44, 33, 250, 157, 168, 232, 156, 170, 3, 248, - ], - [ - 68, 44, 100, 46, 245, 15, 161, 166, 103, 166, 230, 209, 5, 199, 124, 92, 195, 254, 200, - 215, 170, 37, 112, 207, 26, 48, 119, 181, 3, 195, 128, 105, - ], - [ - 160, 160, 141, 252, 155, 66, 217, 108, 45, 225, 155, 109, 18, 123, 138, 225, 54, 221, 207, - 62, 90, 208, 220, 228, 34, 196, 90, 86, 246, 31, 106, 116, - ], - [ - 125, 52, 131, 130, 175, 9, 109, 190, 11, 240, 134, 199, 187, 57, 178, 162, 192, 188, 54, - 182, 33, 171, 12, 115, 142, 152, 133, 215, 49, 216, 23, 64, - ], - [ - 58, 177, 52, 117, 29, 25, 18, 105, 2, 108, 134, 153, 78, 170, 139, 67, 168, 59, 74, 209, - 246, 208, 231, 115, 129, 196, 226, 151, 74, 251, 200, 246, - ], - [ - 154, 116, 82, 97, 29, 178, 210, 62, 174, 38, 249, 189, 187, 136, 149, 142, 244, 76, 100, - 208, 254, 152, 123, 233, 247, 38, 173, 249, 56, 245, 15, 108, - ], - [ - 114, 92, 127, 129, 96, 55, 191, 228, 82, 205, 30, 123, 163, 90, 196, 126, 220, 180, 154, - 154, 43, 39, 174, 202, 112, 220, 228, 131, 203, 125, 237, 31, - ], - [ - 44, 234, 26, 245, 31, 178, 139, 98, 136, 124, 57, 153, 138, 201, 254, 244, 223, 222, 218, - 31, 7, 224, 113, 186, 85, 138, 23, 58, 253, 6, 203, 195, - ], - [ - 255, 29, 89, 249, 139, 108, 85, 29, 149, 8, 147, 87, 5, 125, 92, 139, 226, 100, 2, 39, 158, - 157, 240, 177, 223, 26, 16, 183, 43, 243, 146, 127, - ], - [ - 47, 138, 24, 31, 124, 153, 221, 33, 90, 117, 41, 191, 226, 150, 169, 96, 58, 20, 70, 115, - 113, 134, 210, 26, 235, 139, 199, 174, 89, 225, 253, 33, - ], - [ - 236, 197, 2, 201, 177, 20, 95, 57, 80, 203, 125, 62, 56, 66, 68, 111, 129, 164, 240, 223, - 29, 245, 55, 206, 225, 57, 239, 100, 234, 152, 75, 217, - ], -]; +// pub const ZERO_HASHES: [[u8; 32]; 64] = [ +// [0; 32], +// [ +// 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, +// 32, 217, 240, 232, 234, 152, 49, 169, 39, 89, 251, 75, +// ], +// [ +// 219, 86, 17, 78, 0, 253, 212, 193, 248, 92, 137, 43, 243, 90, 201, 168, 146, 137, 170, 236, +// 177, 235, 208, 169, 108, 222, 96, 106, 116, 139, 93, 113, +// ], +// [ +// 199, 128, 9, 253, 240, 127, 197, 106, 17, 241, 34, 55, 6, 88, 163, 83, 170, 165, 66, 237, +// 99, 228, 76, 75, 193, 95, 244, 205, 16, 90, 179, 60, +// ], +// [ +// 83, 109, 152, 131, 127, 45, 209, 101, 165, 93, 94, 234, 233, 20, 133, 149, 68, 114, 213, +// 111, 36, 109, 242, 86, 191, 60, 174, 25, 53, 42, 18, 60, +// ], +// [ +// 158, 253, 224, 82, 170, 21, 66, 159, 174, 5, 186, 212, 208, 177, 215, 198, 77, 166, 77, 3, +// 215, 161, 133, 74, 88, 140, 44, 184, 67, 12, 13, 48, +// ], +// [ +// 216, 141, 223, 238, 212, 0, 168, 117, 85, 150, 178, 25, 66, 193, 73, 126, 17, 76, 48, 46, +// 97, 24, 41, 15, 145, 230, 119, 41, 118, 4, 31, 161, +// ], +// [ +// 135, 235, 13, 219, 165, 126, 53, 246, 210, 134, 103, 56, 2, 164, 175, 89, 117, 226, 37, 6, +// 199, 207, 76, 100, 187, 107, 229, 238, 17, 82, 127, 44, +// ], +// [ +// 38, 132, 100, 118, 253, 95, 197, 74, 93, 67, 56, 81, 103, 201, 81, 68, 242, 100, 63, 83, +// 60, 200, 91, 185, 209, 107, 120, 47, 141, 125, 177, 147, +// ], +// [ +// 80, 109, 134, 88, 45, 37, 36, 5, 184, 64, 1, 135, 146, 202, 210, 191, 18, 89, 241, 239, 90, +// 165, 248, 135, 225, 60, 178, 240, 9, 79, 81, 225, +// ], +// [ +// 255, 255, 10, 215, 230, 89, 119, 47, 149, 52, 193, 149, 200, 21, 239, 196, 1, 78, 241, 225, +// 218, 237, 68, 4, 192, 99, 133, 209, 17, 146, 233, 43, +// ], +// [ +// 108, 240, 65, 39, 219, 5, 68, 28, 216, 51, 16, 122, 82, 190, 133, 40, 104, 137, 14, 67, 23, +// 230, 160, 42, 180, 118, 131, 170, 117, 150, 66, 32, +// ], +// [ +// 183, 208, 95, 135, 95, 20, 0, 39, 239, 81, 24, 162, 36, 123, 187, 132, 206, 143, 47, 15, +// 17, 35, 98, 48, 133, 218, 247, 150, 12, 50, 159, 95, +// ], +// [ +// 223, 106, 245, 245, 187, 219, 107, 233, 239, 138, 166, 24, 228, 191, 128, 115, 150, 8, 103, +// 23, 30, 41, 103, 111, 139, 40, 77, 234, 106, 8, 168, 94, +// ], +// [ +// 181, 141, 144, 15, 94, 24, 46, 60, 80, 239, 116, 150, 158, 161, 108, 119, 38, 197, 73, 117, +// 124, 194, 53, 35, 195, 105, 88, 125, 167, 41, 55, 132, +// ], +// [ +// 212, 154, 117, 2, 255, 207, 176, 52, 11, 29, 120, 133, 104, 133, 0, 202, 48, 129, 97, 167, +// 249, 107, 98, 223, 157, 8, 59, 113, 252, 200, 242, 187, +// ], +// [ +// 143, 230, 177, 104, 146, 86, 192, 211, 133, 244, 47, 91, 190, 32, 39, 162, 44, 25, 150, +// 225, 16, 186, 151, 193, 113, 211, 229, 148, 141, 233, 43, 235, +// ], +// [ +// 141, 13, 99, 195, 158, 186, 222, 133, 9, 224, 174, 60, 156, 56, 118, 251, 95, 161, 18, 190, +// 24, 249, 5, 236, 172, 254, 203, 146, 5, 118, 3, 171, +// ], +// [ +// 149, 238, 200, 178, 229, 65, 202, 212, 233, 29, 227, 131, 133, 242, 224, 70, 97, 159, 84, +// 73, 108, 35, 130, 203, 108, 172, 213, 185, 140, 38, 245, 164, +// ], +// [ +// 248, 147, 233, 8, 145, 119, 117, 182, 43, 255, 35, 41, 77, 187, 227, 161, 205, 142, 108, +// 193, 195, 91, 72, 1, 136, 123, 100, 106, 111, 129, 241, 127, +// ], +// [ +// 205, 219, 167, 181, 146, 227, 19, 51, 147, 193, 97, 148, 250, 199, 67, 26, 191, 47, 84, +// 133, 237, 113, 29, 178, 130, 24, 60, 129, 158, 8, 235, 170, +// ], +// [ +// 138, 141, 127, 227, 175, 140, 170, 8, 90, 118, 57, 168, 50, 0, 20, 87, 223, 185, 18, 138, +// 128, 97, 20, 42, 208, 51, 86, 41, 255, 35, 255, 156, +// ], +// [ +// 254, 179, 195, 55, 215, 165, 26, 111, 191, 0, 185, 227, 76, 82, 225, 201, 25, 92, 150, 155, +// 212, 231, 160, 191, 213, 29, 92, 91, 237, 156, 17, 103, +// ], +// [ +// 231, 31, 10, 168, 60, 195, 46, 223, 190, 250, 159, 77, 62, 1, 116, 202, 133, 24, 46, 236, +// 159, 58, 9, 246, 166, 192, 223, 99, 119, 165, 16, 215, +// ], +// [ +// 49, 32, 111, 168, 10, 80, 187, 106, 190, 41, 8, 80, 88, 241, 98, 18, 33, 42, 96, 238, 200, +// 240, 73, 254, 203, 146, 216, 200, 224, 168, 75, 192, +// ], +// [ +// 33, 53, 43, 254, 203, 237, 221, 233, 147, 131, 159, 97, 76, 61, 172, 10, 62, 227, 117, 67, +// 249, 180, 18, 177, 97, 153, 220, 21, 142, 35, 181, 68, +// ], +// [ +// 97, 158, 49, 39, 36, 187, 109, 124, 49, 83, 237, 157, 231, 145, 215, 100, 163, 102, 179, +// 137, 175, 19, 197, 139, 248, 168, 217, 4, 129, 164, 103, 101, +// ], +// [ +// 124, 221, 41, 134, 38, 130, 80, 98, 141, 12, 16, 227, 133, 197, 140, 97, 145, 230, 251, +// 224, 81, 145, 188, 192, 79, 19, 63, 44, 234, 114, 193, 196, +// ], +// [ +// 132, 137, 48, 189, 123, 168, 202, 197, 70, 97, 7, 33, 19, 251, 39, 136, 105, 224, 123, 184, +// 88, 127, 145, 57, 41, 51, 55, 77, 1, 123, 203, 225, +// ], +// [ +// 136, 105, 255, 44, 34, 178, 140, 193, 5, 16, 217, 133, 50, 146, 128, 51, 40, 190, 79, 176, +// 232, 4, 149, 232, 187, 141, 39, 31, 91, 136, 150, 54, +// ], +// [ +// 181, 254, 40, 231, 159, 27, 133, 15, 134, 88, 36, 108, 233, 182, 161, 231, 180, 159, 192, +// 109, 183, 20, 62, 143, 224, 180, 242, 176, 197, 82, 58, 92, +// ], +// [ +// 152, 94, 146, 159, 112, 175, 40, 208, 189, 209, 169, 10, 128, 143, 151, 127, 89, 124, 124, +// 119, 140, 72, 158, 152, 211, 189, 137, 16, 211, 26, 192, 247, +// ], +// [ +// 198, 246, 126, 2, 230, 228, 225, 189, 239, 185, 148, 198, 9, 137, 83, 243, 70, 54, 186, 43, +// 108, 162, 10, 71, 33, 210, 178, 106, 136, 103, 34, 255, +// ], +// [ +// 28, 154, 126, 95, 241, 207, 72, 180, 173, 21, 130, 211, 244, 228, 161, 0, 79, 59, 32, 216, +// 197, 162, 183, 19, 135, 164, 37, 74, 217, 51, 235, 197, +// ], +// [ +// 47, 7, 90, 226, 41, 100, 107, 111, 106, 237, 25, 165, 227, 114, 207, 41, 80, 129, 64, 30, +// 184, 147, 255, 89, 155, 63, 154, 204, 12, 13, 62, 125, +// ], +// [ +// 50, 137, 33, 222, 181, 150, 18, 7, 104, 1, 232, 205, 97, 89, 33, 7, 181, 198, 124, 121, +// 184, 70, 89, 92, 198, 50, 12, 57, 91, 70, 54, 44, +// ], +// [ +// 191, 185, 9, 253, 178, 54, 173, 36, 17, 180, 228, 136, 56, 16, 160, 116, 184, 64, 70, 70, +// 137, 152, 108, 63, 138, 128, 145, 130, 126, 23, 195, 39, +// ], +// [ +// 85, 216, 251, 54, 135, 186, 59, 164, 159, 52, 44, 119, 245, 161, 248, 155, 236, 131, 216, +// 17, 68, 110, 26, 70, 113, 57, 33, 61, 100, 11, 106, 116, +// ], +// [ +// 247, 33, 13, 79, 142, 126, 16, 57, 121, 14, 123, 244, 239, 162, 7, 85, 90, 16, 166, 219, +// 29, 212, 185, 93, 163, 19, 170, 168, 139, 136, 254, 118, +// ], +// [ +// 173, 33, 181, 22, 203, 198, 69, 255, 227, 74, 181, 222, 28, 138, 239, 140, 212, 231, 248, +// 210, 181, 30, 142, 20, 86, 173, 199, 86, 60, 218, 32, 111, +// ], +// [ +// 107, 254, 141, 43, 204, 66, 55, 183, 74, 80, 71, 5, 142, 244, 85, 51, 158, 205, 115, 96, +// 203, 99, 191, 187, 142, 229, 68, 142, 100, 48, 186, 4, +// ], +// [ +// 167, 242, 60, 233, 24, 23, 64, 220, 34, 12, 129, 71, 130, 101, 79, 238, 106, 206, 185, 241, +// 236, 146, 34, 196, 226, 70, 125, 10, 177, 104, 8, 55, +// ], +// [ +// 174, 249, 71, 108, 137, 89, 10, 44, 140, 201, 179, 183, 79, 73, 103, 199, 87, 196, 157, +// 152, 102, 164, 75, 172, 242, 31, 162, 237, 103, 93, 223, 162, +// ], +// [ +// 154, 66, 188, 173, 130, 246, 169, 228, 18, 132, 216, 8, 234, 211, 25, 242, 159, 59, 8, 32, +// 157, 104, 15, 14, 44, 231, 21, 16, 208, 113, 226, 5, +// ], +// [ +// 209, 166, 109, 53, 74, 103, 185, 207, 23, 149, 113, 216, 229, 249, 119, 146, 113, 110, 141, +// 212, 236, 68, 25, 104, 57, 163, 247, 198, 183, 79, 139, 172, +// ], +// [ +// 250, 250, 48, 37, 242, 248, 149, 9, 194, 199, 28, 116, 251, 160, 205, 146, 133, 142, 244, +// 155, 7, 128, 251, 84, 121, 116, 108, 138, 155, 252, 179, 70, +// ], +// [ +// 51, 52, 167, 193, 231, 246, 112, 90, 166, 1, 26, 106, 148, 150, 69, 1, 109, 180, 172, 222, +// 12, 169, 171, 214, 109, 199, 157, 130, 102, 66, 48, 86, +// ], +// [ +// 7, 150, 253, 117, 102, 79, 174, 247, 68, 238, 78, 82, 215, 39, 30, 43, 187, 118, 159, 145, +// 237, 111, 155, 116, 216, 182, 148, 245, 102, 6, 133, 44, +// ], +// [ +// 123, 163, 174, 74, 65, 127, 232, 84, 91, 20, 43, 200, 159, 74, 220, 215, 174, 19, 148, 28, +// 186, 183, 117, 11, 131, 233, 240, 166, 109, 22, 190, 100, +// ], +// [ +// 120, 143, 175, 204, 74, 165, 32, 57, 154, 219, 174, 209, 149, 248, 177, 44, 78, 179, 30, +// 193, 1, 104, 229, 10, 171, 198, 89, 166, 174, 165, 22, 220, +// ], +// [ +// 232, 51, 215, 166, 113, 96, 230, 139, 244, 201, 4, 74, 83, 7, 125, 242, 114, 122, 208, 12, +// 243, 111, 73, 73, 199, 182, 129, 169, 18, 20, 12, 187, +// ], +// [ +// 48, 158, 171, 240, 149, 220, 103, 20, 249, 244, 216, 100, 187, 165, 175, 250, 224, 179, 90, +// 226, 245, 227, 86, 91, 204, 58, 71, 178, 18, 118, 119, 1, +// ], +// [ +// 34, 106, 142, 190, 250, 40, 134, 101, 166, 68, 165, 2, 115, 51, 94, 251, 182, 16, 81, 15, +// 36, 27, 91, 114, 12, 138, 54, 141, 89, 166, 154, 93, +// ], +// [ +// 65, 171, 253, 153, 84, 37, 130, 118, 37, 147, 129, 49, 175, 12, 79, 51, 254, 11, 212, 104, +// 140, 34, 44, 33, 250, 157, 168, 232, 156, 170, 3, 248, +// ], +// [ +// 68, 44, 100, 46, 245, 15, 161, 166, 103, 166, 230, 209, 5, 199, 124, 92, 195, 254, 200, +// 215, 170, 37, 112, 207, 26, 48, 119, 181, 3, 195, 128, 105, +// ], +// [ +// 160, 160, 141, 252, 155, 66, 217, 108, 45, 225, 155, 109, 18, 123, 138, 225, 54, 221, 207, +// 62, 90, 208, 220, 228, 34, 196, 90, 86, 246, 31, 106, 116, +// ], +// [ +// 125, 52, 131, 130, 175, 9, 109, 190, 11, 240, 134, 199, 187, 57, 178, 162, 192, 188, 54, +// 182, 33, 171, 12, 115, 142, 152, 133, 215, 49, 216, 23, 64, +// ], +// [ +// 58, 177, 52, 117, 29, 25, 18, 105, 2, 108, 134, 153, 78, 170, 139, 67, 168, 59, 74, 209, +// 246, 208, 231, 115, 129, 196, 226, 151, 74, 251, 200, 246, +// ], +// [ +// 154, 116, 82, 97, 29, 178, 210, 62, 174, 38, 249, 189, 187, 136, 149, 142, 244, 76, 100, +// 208, 254, 152, 123, 233, 247, 38, 173, 249, 56, 245, 15, 108, +// ], +// [ +// 114, 92, 127, 129, 96, 55, 191, 228, 82, 205, 30, 123, 163, 90, 196, 126, 220, 180, 154, +// 154, 43, 39, 174, 202, 112, 220, 228, 131, 203, 125, 237, 31, +// ], +// [ +// 44, 234, 26, 245, 31, 178, 139, 98, 136, 124, 57, 153, 138, 201, 254, 244, 223, 222, 218, +// 31, 7, 224, 113, 186, 85, 138, 23, 58, 253, 6, 203, 195, +// ], +// [ +// 255, 29, 89, 249, 139, 108, 85, 29, 149, 8, 147, 87, 5, 125, 92, 139, 226, 100, 2, 39, 158, +// 157, 240, 177, 223, 26, 16, 183, 43, 243, 146, 127, +// ], +// [ +// 47, 138, 24, 31, 124, 153, 221, 33, 90, 117, 41, 191, 226, 150, 169, 96, 58, 20, 70, 115, +// 113, 134, 210, 26, 235, 139, 199, 174, 89, 225, 253, 33, +// ], +// [ +// 236, 197, 2, 201, 177, 20, 95, 57, 80, 203, 125, 62, 56, 66, 68, 111, 129, 164, 240, 223, +// 29, 245, 55, 206, 225, 57, 239, 100, 234, 152, 75, 217, +// ], +// ]; -pub fn ssz_merkleize_chunks( - ctx: &mut Context, - region: &mut Region<'_, F>, - hasher: &impl HashChip, - chunks: impl IntoIterator>>, -) -> Result>, Error> { - let mut chunks = chunks.into_iter().collect_vec(); - let len_even = chunks.len() + chunks.len() % 2; - let height = (len_even as f64).log2().ceil() as usize; +// pub fn ssz_merkleize_chunks( +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// hasher: &impl HashChip, +// chunks: impl IntoIterator>>, +// ) -> Result>, Error> { +// let mut chunks = chunks.into_iter().collect_vec(); +// let len_even = chunks.len() + chunks.len() % 2; +// let height = (len_even as f64).log2().ceil() as usize; - for depth in 0..height { - // Pad to even length using 32 zero bytes assigned as constants. - let len_even = chunks.len() + chunks.len() % 2; - let padded_chunks = chunks - .into_iter() - .pad_using(len_even, |_| ZERO_HASHES[depth].as_slice().into_constant()) - .collect_vec(); +// for depth in 0..height { +// // Pad to even length using 32 zero bytes assigned as constants. +// let len_even = chunks.len() + chunks.len() % 2; +// let padded_chunks = chunks +// .into_iter() +// .pad_using(len_even, |_| ZERO_HASHES[depth].as_slice().into_constant()) +// .collect_vec(); - chunks = padded_chunks - .into_iter() - .tuples() - .take(3) - .map(|(left, right)| { - hasher - .digest::<64>(HashInput::TwoToOne(left, right), ctx, region) - .map(|res| res.output_bytes.into()) - }) - .collect::, _>>()?; - } +// chunks = padded_chunks +// .into_iter() +// .tuples() +// .take(3) +// .map(|(left, right)| { +// hasher +// .digest::<64>(HashInput::TwoToOne(left, right), ctx, region) +// .map(|res| res.output_bytes.into()) +// }) +// .collect::, _>>()?; +// } - assert_eq!(chunks.len(), 1, "merkleize_chunks: expected one chunk"); +// assert_eq!(chunks.len(), 1, "merkleize_chunks: expected one chunk"); - let root = chunks.pop().unwrap().map(|cell| match cell { - QuantumCell::Existing(av) => av, - _ => unreachable!(), - }); +// let root = chunks.pop().unwrap().map(|cell| match cell { +// QuantumCell::Existing(av) => av, +// _ => unreachable!(), +// }); - Ok(root.bytes) -} +// Ok(root.bytes) +// } -pub fn verify_merkle_proof( - ctx: &mut Context, - region: &mut Region<'_, F>, - hasher: &impl HashChip, - proof: impl IntoIterator>>, - leaf: HashInputChunk>, - root: &[AssignedValue], - mut gindex: usize, -) -> Result<(), Error> { - let mut computed_hash = leaf; +// pub fn verify_merkle_proof( +// ctx: &mut Context, +// region: &mut Region<'_, F>, +// hasher: &impl HashChip, +// proof: impl IntoIterator>>, +// leaf: HashInputChunk>, +// root: &[AssignedValue], +// mut gindex: usize, +// ) -> Result<(), Error> { +// let mut computed_hash = leaf; - for witness in proof.into_iter() { - computed_hash = hasher - .digest::<128>( - if gindex % 2 == 0 { - HashInput::TwoToOne(computed_hash, witness) - } else { - HashInput::TwoToOne(witness, computed_hash) - }, - ctx, - region, - )? - .output_bytes - .into(); - gindex /= 2; - } +// for witness in proof.into_iter() { +// computed_hash = hasher +// .digest::<128>( +// if gindex % 2 == 0 { +// HashInput::TwoToOne(computed_hash, witness) +// } else { +// HashInput::TwoToOne(witness, computed_hash) +// }, +// ctx, +// region, +// )? +// .output_bytes +// .into(); +// gindex /= 2; +// } - let computed_root = computed_hash.bytes.into_iter().map(|b| match b { - QuantumCell::Existing(av) => av, - _ => unreachable!(), - }); +// let computed_root = computed_hash.bytes.into_iter().map(|b| match b { +// QuantumCell::Existing(av) => av, +// _ => unreachable!(), +// }); - computed_root.zip(root.iter()).for_each(|(a, b)| { - ctx.constrain_equal(&a, b); - }); +// computed_root.zip(root.iter()).for_each(|(a, b)| { +// ctx.constrain_equal(&a, b); +// }); - Ok(()) -} +// Ok(()) +// } diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 198fac23..02ed4e8d 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -1,638 +1,638 @@ -use std::{ - cell::RefCell, - collections::HashMap, - env::{set_var, var}, - fs, iter, - marker::PhantomData, - ops::Neg, - path::Path, - rc::Rc, - vec, -}; - -use crate::{ - gadget::crypto::{ - Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, - HashToCurveChip, Sha256Chip, SpreadConfig, - }, - poseidon::{g1_array_poseidon, poseidon_sponge}, - sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, - ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, - table::Sha256Table, - util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, - }, - witness::{self, HashInput, HashInputChunk, SyncState}, -}; -use eth_types::{AppCurveExt, Field, Spec}; -use ethereum_consensus::capella::{self, mainnet::*}; -use ff::PrimeField; -use group::UncompressedEncoding; -use halo2_base::{ - gates::{ - builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, - flex_gate::GateStrategy, - range::RangeConfig, - }, - safe_types::{GateInstructions, RangeChip, RangeInstructions}, - utils::{fs::gen_srs, CurveAffineExt}, - AssignedValue, Context, QuantumCell, -}; -use halo2_ecc::{ - bigint::ProperCrtUint, - bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, - ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, - fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, -}; -use halo2_proofs::{ - circuit::{Layouter, Region, SimpleFloorPlanner, Value}, - dev::MockProver, - plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, - poly::{commitment::Params, kzg::commitment::ParamsKZG}, -}; -use halo2curves::{ - bls12_381::{Fq, Fq12, Fr, G1Affine, G2Affine, G2Prepared, G1, G2}, - bn256::{self, Bn256}, -}; -use itertools::Itertools; -use lazy_static::__Deref; -use num_bigint::BigUint; -use pasta_curves::group::{ff, GroupEncoding}; -use poseidon::PoseidonChip; -use sha2::{Digest, Sha256}; -use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; -use ssz_rs::{GeneralizedIndex, Merkleized, Node}; - -#[derive(Clone, Debug)] -pub struct SyncStepCircuitConfig { - range: RangeConfig, - sha256_config: RefCell>, - challenges: Challenges>, -} - -#[allow(type_alias_bounds)] -#[derive(Clone, Debug)] -pub struct SyncStepCircuit { - builder: RefCell>, - signature: Vec, - domain: [u8; 32], - attested_block: capella::BeaconBlockHeader, - finalized_block: capella::BeaconBlockHeader, - pubkeys: Vec, - execution_state_root: Vec, - execution_merkle_branch: Vec>, - beacon_state_root: Vec, - finality_merkle_branch: Vec>, - pariticipation_bits: Vec, - dry_run: bool, - _spec: PhantomData, -} - -impl Circuit for SyncStepCircuit { - type Config = SyncStepCircuitConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let range = RangeCircuitBuilder::configure(meta); - let sha256_config = SpreadConfig::::configure(meta, 8, 1); - - SyncStepCircuitConfig { - range, - sha256_config: RefCell::new(sha256_config), - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - } - } - - fn synthesize( - &self, - mut config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config - .range - .load_lookup_table(&mut layouter) - .expect("load range lookup table"); - - assert!(!self.signature.is_empty(), "no attestations supplied"); - let mut first_pass = halo2_base::SKIP_FIRST_PASS; - - let range = RangeChip::default(config.range.lookup_bits()); - let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); - let fp2_chip = Fp2Chip::::new(&fp_chip); - let g1_chip = EccChip::new(fp2_chip.fp_chip()); - let g2_chip = EccChip::new(&fp2_chip); - let fp12_chip = Fp12Chip::::new(fp2_chip.fp_chip()); - let pairing_chip = PairingChip::new(&fp_chip); - let bls_chip = bls_signature::BlsSignatureChip::new(&fp_chip, pairing_chip); - let sha256_chip = Sha256Chip::new(config.sha256_config, &range, None); - let h2c_chip = HashToCurveChip::::new(&sha256_chip); - - let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); - let mut builder = if self.dry_run { - self.builder.borrow_mut() - } else { - builder_clone.borrow_mut() - }; - - layouter.assign_region( - || "AggregationCircuitBuilder generated circuit", - |mut region| { - if first_pass { - first_pass = false; - return Ok(()); - } - - let ctx = builder.main(0); - - let beacon_state_root = self - .beacon_state_root - .iter() - .map(|&b| ctx.load_witness(F::from(b as u64))) - .collect_vec(); - - let execution_state_root: HashInputChunk> = - self.execution_state_root.clone().into_witness(); - - let mut pubkey_points = vec![]; - let (agg_pubkey, participation_sum) = - self.aggregate_pubkeys(ctx, &fp_chip, &mut pubkey_points); - let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; - - let fp12_one = { - use ff::Field; - fp12_chip.load_constant(ctx, Fq12::one()) - }; - let mut h2c_cache = HashToCurveCache::::default(); - - // Verify attestted header - let attested_header = { - let chunks = [ - self.attested_block.slot.into_witness(), - self.attested_block.proposer_index.into_witness(), - self.attested_block.parent_root.as_ref().into_witness(), - self.attested_block.state_root.as_ref().into_witness(), - self.attested_block.body_root.as_ref().into_witness(), - ]; - - ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? - }; - - let finilized_block_body_root = self - .finalized_block - .body_root - .as_ref() - .iter() - .map(|&b| ctx.load_witness(F::from(b as u64))) - .collect_vec(); - - let finalized_header = { - let chunks = [ - self.finalized_block.slot.into_witness(), - self.finalized_block.proposer_index.into_witness(), - self.finalized_block.parent_root.as_ref().into_witness(), - self.finalized_block.state_root.as_ref().into_witness(), - finilized_block_body_root.clone().into(), - ]; - ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? - }; - - let signing_root = sha256_chip - .digest::<128>( - HashInput::TwoToOne( - attested_header.into(), - self.domain.to_vec().into_witness(), - ), - ctx, - &mut region, - )? - .output_bytes; - - let g1_neg = g1_chip - .load_private_unchecked(ctx, G1::generator_affine().neg().into_coordinates()); - - let signature = Self::assign_signature(&self.signature, &g2_chip, ctx); - - let msghash = h2c_chip.hash_to_curve::( - signing_root.into(), - &fp_chip, - ctx, - &mut region, - &mut h2c_cache, - )?; - - let res = bls_chip.verify_pairing(signature, msghash, agg_pubkey, g1_neg, ctx); - fp12_chip.assert_equal(ctx, res, fp12_one); - - // verify finilized block header against current beacon state merkle proof - verify_merkle_proof( - ctx, - &mut region, - &sha256_chip, - self.finality_merkle_branch - .iter() - .map(|w| w.clone().into_witness()), - finalized_header.into(), - &beacon_state_root, - S::FINALIZED_HEADER_INDEX, - )?; - - // verify execution state root against finilized block body merkle proof - verify_merkle_proof( - ctx, - &mut region, - &sha256_chip, - self.execution_merkle_branch - .iter() - .map(|w| w.clone().into_witness()), - execution_state_root, - &finilized_block_body_root, - S::EXECUTION_STATE_ROOT_INDEX, - )?; - - let extra_assignments = sha256_chip.take_extra_assignments(); - - if self.dry_run { - return Ok(()); - } - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - // TODO: constaint source_root, target_root with instances: `layouter.constrain_instance` - Ok(()) - }, - ) - } -} - -impl SyncStepCircuit { - pub fn dry_run(mut self) -> Self { - self.dry_run = true; - self - } - - fn assign_signature( - bytes_compressed: &[u8], - g2_chip: &G2Chip, - ctx: &mut Context, - ) -> EcPoint> { - let sig_affine = - G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).unwrap(); - - g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) - } - - /// Takes a list of pubkeys and aggregates them. - fn aggregate_pubkeys<'a>( - &self, - ctx: &mut Context, - fp_chip: &FpChip<'a, F>, - committee_pubkeys: &mut Vec>, - ) -> (G1Point, AssignedValue) { - let range = fp_chip.range(); - let gate = fp_chip.gate(); - - let g1_chip = G1Chip::::new(fp_chip); - - let pubkey_compressed_len = G1::BYTES_COMPRESSED; - - let mut participation_bits = vec![]; - - assert_eq!(self.pubkeys.len(), S::SYNC_COMMITTEE_SIZE); - - for (&pk, is_attested) in itertools::multizip(( - self.pubkeys.iter(), - self.pariticipation_bits.iter().copied(), - )) { - let participation_bit = ctx.load_witness(F::from(is_attested as u64)); - gate.assert_bit(ctx, participation_bit); - - let assigned_pk = g1_chip.assign_point_unchecked(ctx, pk); - - // Square y coordinate - let ysq = fp_chip.mul(ctx, assigned_pk.y.clone(), assigned_pk.y.clone()); - // Calculate y^2 using the elliptic curve equation - let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); - // Constrain witness y^2 to be equal to calculated y^2 - fp_chip.assert_equal(ctx, ysq, ysq_calc); - - // *Note:* normally, we would need to take into account the sign of the y coordinate, but - // because we are concerned only with signature forgery, if this is the wrong - // sign, the signature will be invalid anyway and thus verification fails. - - committee_pubkeys.push(assigned_pk); - participation_bits.push(participation_bit); - } - - let rand_point = g1_chip.load_random_point::(ctx); - let mut acc = rand_point.clone(); - for (bit, point) in participation_bits - .iter() - .copied() - .zip(committee_pubkeys.iter_mut()) - { - let sum = g1_chip.add_unequal(ctx, acc.clone(), point.clone(), true); - acc = g1_chip.select(ctx, sum, acc, bit); - } - let agg_pubkey = g1_chip.sub_unequal(ctx, acc, rand_point, false); - let participation_sum = gate.sum(ctx, participation_bits); - - (agg_pubkey, participation_sum) - } - - // Calculates y^2 = x^3 + 4 (the curve equation) - fn calculate_ysquared( - ctx: &mut Context, - field_chip: &FpChip<'_, F>, - x: ProperCrtUint, - ) -> ProperCrtUint { - let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); - let x_cubed = field_chip.mul(ctx, x_squared, x); - - let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); - field_chip.carry_mod(ctx, plus_b) - } -} - -impl CircuitExt for SyncStepCircuit { - fn instances(&self) -> Vec> { - vec![] - } - - fn num_instance(&self) -> Vec { - self.instances().iter().map(|v| v.len()).collect() - } -} - -impl AppCircuitExt for SyncStepCircuit { - fn new_from_state( - builder: RefCell>, - state: &witness::SyncState, - ) -> Self { - Self { - builder, - signature: state.sync_signature.clone(), - domain: state.domain, - attested_block: state.attested_block.clone(), - finalized_block: state.finalized_block.clone(), - pubkeys: state - .sync_committee - .iter() - .cloned() - .map(|v| { - G1Affine::from_uncompressed_unchecked( - &v.pubkey_uncompressed.as_slice().try_into().unwrap(), - ) - .unwrap() - }) - .collect_vec(), - pariticipation_bits: state - .sync_committee - .iter() - .cloned() - .map(|v| v.is_attested) - .collect_vec(), - execution_merkle_branch: state.execution_merkle_branch.clone(), - finality_merkle_branch: state.finality_merkle_branch.clone(), - beacon_state_root: state.beacon_state_root.clone(), - execution_state_root: state.execution_state_root.clone(), - dry_run: false, - _spec: PhantomData, - } - } - - fn parametrize(k: usize) -> FlexGateConfigParams { - // let state: SyncState = - // serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); - // let builder = RefCell::new(GateThreadBuilder::keygen()); - // let circuit = SyncStepCircuit::::new_from_state(builder, &state).dry_run(); - let circuit = SyncStepCircuit::::default().dry_run(); - - let mock_k = 17; - // Due to the composite nature of Sync circuit (vanila + halo2-lib) - // we have to perfrom dry run to determine best circuit config. - let mock_params = FlexGateConfigParams { - strategy: GateStrategy::Vertical, - k: mock_k, - num_advice_per_phase: vec![200], - num_lookup_advice_per_phase: vec![20], - num_fixed: 1, - }; - - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&mock_params).unwrap(), - ); - std::env::set_var("LOOKUP_BITS", 16.to_string()); - - let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); - let params = circuit.builder.borrow().config(k, None); - std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); - println!("parametrized with: {:?}", params); - params - } - - fn setup( - config: &FlexGateConfigParams, - out: Option<&Path>, - ) -> (ParamsKZG, ProvingKey) { - let circuit = SyncStepCircuit::::default(); - - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&config).unwrap(), - ); - - let params = gen_srs(config.k as u32); - - let pk = gen_pkey(|| "sync_step", ¶ms, out, circuit).unwrap(); - - (params, pk) - } -} - -impl Default for SyncStepCircuit { - fn default() -> Self { - let builder = RefCell::new(GateThreadBuilder::keygen()); - - let dummy_pk_bytes = hex::decode("f5f151e52f1e8a5b09e4c6f0b25fb13463d442709f21a84f98dcb76a7953aa5225c12e4dd524a95f9be8dfdfa0621c0252adea177adcce725f8b47d0b27370572ad6c5638122cab820103c9bcbb3239939de60b4814c117631d82963a7d7900a").unwrap(); - let dummy_pk_point = - G1Affine::from_uncompressed_unchecked(&dummy_pk_bytes.as_slice().try_into().unwrap()) - .unwrap(); - - let state_merkle_branch = iter::repeat(vec![0u8; 32]) - .take(S::FINALIZED_HEADER_DEPTH) - .collect_vec(); - - fn compute_root(leaf: Vec, branch: &[Vec]) -> Vec { - let mut last_hash = Sha256::digest([leaf, branch[0].clone()].concat()).to_vec(); - - for i in 1..branch.len() { - last_hash = Sha256::digest([last_hash, branch[i].clone()].concat()).to_vec(); - } - - last_hash - } - - let execution_state_root = vec![0; 32]; - let execution_merkle_branch = vec![vec![0; 32]; S::EXECUTION_STATE_ROOT_DEPTH]; - let beacon_block_body_root = - compute_root(execution_state_root.clone(), &state_merkle_branch); - - let mut finalized_block = capella::BeaconBlockHeader { - body_root: Node::from_bytes(beacon_block_body_root.try_into().unwrap()), - ..Default::default() - }; - let finilized_header = finalized_block.hash_tree_root().unwrap().as_ref().to_vec(); - - let finality_merkle_branch = vec![vec![0; 32]; S::FINALIZED_HEADER_DEPTH]; - - let beacon_state_root = compute_root(finilized_header, &state_merkle_branch); - - Self { - builder, - signature: hex::decode("462c5acb68722355eaa568a166e6da4c46702a496586aa94c681e0b03a200394b8f4adc98d6b5a68e3caf9dae31ff7035a402aad93bdd4752e521b3b536b47dee55d129b6374177f2be8c99b6ea6618abae84b389affc5a50ad8d991f763beaa").unwrap(), - domain: [ - 7, 0, 0, 0, 48, 83, 175, 74, 95, 250, 246, 166, 104, 40, 151, 228, 42, 212, 194, 8, - 48, 56, 232, 147, 61, 9, 41, 204, 88, 234, 56, 134, - ], - attested_block: capella::BeaconBlockHeader::default(), - finalized_block, - pubkeys: iter::repeat(dummy_pk_point) - .take(S::SYNC_COMMITTEE_SIZE) - .collect_vec(), - pariticipation_bits: vec![true; S::SYNC_COMMITTEE_SIZE], - dry_run: false, - finality_merkle_branch, - beacon_state_root, - execution_merkle_branch, - execution_state_root, - _spec: PhantomData, - } - } -} - -#[cfg(test)] -mod tests { - use std::{ - env::{set_var, var}, - fs, - }; - - use crate::{ - table::Sha256Table, - util::{full_prover, full_verifier, gen_pkey}, - witness::{SyncState, Validator}, - }; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use ethereum_consensus::builder; - use halo2_base::{ - gates::{ - builder::{CircuitBuilderStage, FlexGateConfigParams}, - flex_gate::GateStrategy, - range::RangeStrategy, - }, - utils::fs::gen_srs, - }; - use halo2_proofs::{ - circuit::SimpleFloorPlanner, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, - poly::kzg::commitment::ParamsKZG, - }; - use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; - use pasta_curves::group::UncompressedEncoding; - use rand::rngs::OsRng; - use rayon::iter::ParallelIterator; - use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; - use snark_verifier_sdk::{ - evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, - halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, - CircuitExt, SHPLONK, - }; - - fn get_circuit_with_data( - k: usize, - config_path: &str, - ) -> (SyncStepCircuit, FlexGateConfigParams) { - let builder = GateThreadBuilder::new(false); - let state: SyncState = - serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); - - let config = if let Ok(f) = fs::read(config_path) { - serde_json::from_slice(&f).expect("read config file") - } else { - SyncStepCircuit::::parametrize(k) - }; - - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&config).unwrap(), - ); - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - println!("config used: {:?}", config); - - let builder = RefCell::from(builder); - (SyncStepCircuit::new_from_state(builder, &state), config) - } - - #[test] - fn test_sync_circuit() { - let k = 20; - let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20.json"); - - let timer = start_timer!(|| "sync circuit mock prover"); - let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - end_timer!(timer); - } - - #[test] - fn test_sync_proofgen() { - let k = 20; - let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20_mock.json"); - - let params = gen_srs(k as u32); - - let pkey = gen_pkey(|| "sync_step", ¶ms, None, circuit.clone()).unwrap(); - - let public_inputs = circuit.instances(); - let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); - - assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)) - } - - #[test] - fn test_sync_evm_verify() { - let k = 20; - let (circuit, config) = get_circuit_with_data(k, "./config/sync_step_k21.json"); - - let (params, pk) = SyncStepCircuit::::setup(&config, None); - - let instances = circuit.instances(); - let num_instance = circuit.num_instance(); - let deployment_code = gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instance, - None, - ); - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); - - evm_verify(deployment_code, instances, proof); - } -} +// use std::{ +// cell::RefCell, +// collections::HashMap, +// env::{set_var, var}, +// fs, iter, +// marker::PhantomData, +// ops::Neg, +// path::Path, +// rc::Rc, +// vec, +// }; + +// use crate::{ +// gadget::crypto::{ +// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, +// HashToCurveChip, Sha256Chip, SpreadConfig, +// }, +// poseidon::{g1_array_poseidon, poseidon_sponge}, +// sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, +// ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, +// table::Sha256Table, +// util::{ +// decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, +// }, +// witness::{self, HashInput, HashInputChunk, SyncState}, +// }; +// use eth_types::{AppCurveExt, Field, Spec}; +// use ethereum_consensus::capella::{self, mainnet::*}; +// use ff::PrimeField; +// use group::UncompressedEncoding; +// use halo2_base::{ +// gates::{ +// builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, +// flex_gate::GateStrategy, +// range::RangeConfig, +// }, +// safe_types::{GateInstructions, RangeChip, RangeInstructions}, +// utils::{fs::gen_srs, CurveAffineExt}, +// AssignedValue, Context, QuantumCell, +// }; +// use halo2_ecc::{ +// bigint::ProperCrtUint, +// bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, +// ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, +// fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, +// }; +// use halo2_proofs::{ +// circuit::{Layouter, Region, SimpleFloorPlanner, Value}, +// dev::MockProver, +// plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, +// poly::{commitment::Params, kzg::commitment::ParamsKZG}, +// }; +// use halo2curves::{ +// bls12_381::{Fq, Fq12, Fr, G1Affine, G2Affine, G2Prepared, G1, G2}, +// bn256::{self, Bn256}, +// }; +// use itertools::Itertools; +// use lazy_static::__Deref; +// use num_bigint::BigUint; +// use pasta_curves::group::{ff, GroupEncoding}; +// use poseidon::PoseidonChip; +// use sha2::{Digest, Sha256}; +// use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; +// use ssz_rs::{GeneralizedIndex, Merkleized, Node}; + +// #[derive(Clone, Debug)] +// pub struct SyncStepCircuitConfig { +// range: RangeConfig, +// sha256_config: RefCell>, +// challenges: Challenges>, +// } + +// #[allow(type_alias_bounds)] +// #[derive(Clone, Debug)] +// pub struct SyncStepCircuit { +// builder: RefCell>, +// signature: Vec, +// domain: [u8; 32], +// attested_block: capella::BeaconBlockHeader, +// finalized_block: capella::BeaconBlockHeader, +// pubkeys: Vec, +// execution_state_root: Vec, +// execution_merkle_branch: Vec>, +// beacon_state_root: Vec, +// finality_merkle_branch: Vec>, +// pariticipation_bits: Vec, +// dry_run: bool, +// _spec: PhantomData, +// } + +// impl Circuit for SyncStepCircuit { +// type Config = SyncStepCircuitConfig; +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// unimplemented!() +// } + +// fn configure(meta: &mut ConstraintSystem) -> Self::Config { +// let range = RangeCircuitBuilder::configure(meta); +// let sha256_config = SpreadConfig::::configure(meta, 8, 1); + +// SyncStepCircuitConfig { +// range, +// sha256_config: RefCell::new(sha256_config), +// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), +// } +// } + +// fn synthesize( +// &self, +// mut config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// config +// .range +// .load_lookup_table(&mut layouter) +// .expect("load range lookup table"); + +// assert!(!self.signature.is_empty(), "no attestations supplied"); +// let mut first_pass = halo2_base::SKIP_FIRST_PASS; + +// let range = RangeChip::default(config.range.lookup_bits()); +// let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); +// let fp2_chip = Fp2Chip::::new(&fp_chip); +// let g1_chip = EccChip::new(fp2_chip.fp_chip()); +// let g2_chip = EccChip::new(&fp2_chip); +// let fp12_chip = Fp12Chip::::new(fp2_chip.fp_chip()); +// let pairing_chip = PairingChip::new(&fp_chip); +// let bls_chip = bls_signature::BlsSignatureChip::new(&fp_chip, pairing_chip); +// let sha256_chip = Sha256Chip::new(config.sha256_config, &range, None); +// let h2c_chip = HashToCurveChip::::new(&sha256_chip); + +// let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); +// let mut builder = if self.dry_run { +// self.builder.borrow_mut() +// } else { +// builder_clone.borrow_mut() +// }; + +// layouter.assign_region( +// || "AggregationCircuitBuilder generated circuit", +// |mut region| { +// if first_pass { +// first_pass = false; +// return Ok(()); +// } + +// let ctx = builder.main(0); + +// let beacon_state_root = self +// .beacon_state_root +// .iter() +// .map(|&b| ctx.load_witness(F::from(b as u64))) +// .collect_vec(); + +// let execution_state_root: HashInputChunk> = +// self.execution_state_root.clone().into_witness(); + +// let mut pubkey_points = vec![]; +// let (agg_pubkey, participation_sum) = +// self.aggregate_pubkeys(ctx, &fp_chip, &mut pubkey_points); +// let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; + +// let fp12_one = { +// use ff::Field; +// fp12_chip.load_constant(ctx, Fq12::one()) +// }; +// let mut h2c_cache = HashToCurveCache::::default(); + +// // Verify attestted header +// let attested_header = { +// let chunks = [ +// self.attested_block.slot.into_witness(), +// self.attested_block.proposer_index.into_witness(), +// self.attested_block.parent_root.as_ref().into_witness(), +// self.attested_block.state_root.as_ref().into_witness(), +// self.attested_block.body_root.as_ref().into_witness(), +// ]; + +// ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? +// }; + +// let finilized_block_body_root = self +// .finalized_block +// .body_root +// .as_ref() +// .iter() +// .map(|&b| ctx.load_witness(F::from(b as u64))) +// .collect_vec(); + +// let finalized_header = { +// let chunks = [ +// self.finalized_block.slot.into_witness(), +// self.finalized_block.proposer_index.into_witness(), +// self.finalized_block.parent_root.as_ref().into_witness(), +// self.finalized_block.state_root.as_ref().into_witness(), +// finilized_block_body_root.clone().into(), +// ]; +// ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? +// }; + +// let signing_root = sha256_chip +// .digest::<128>( +// HashInput::TwoToOne( +// attested_header.into(), +// self.domain.to_vec().into_witness(), +// ), +// ctx, +// &mut region, +// )? +// .output_bytes; + +// let g1_neg = g1_chip +// .load_private_unchecked(ctx, G1::generator_affine().neg().into_coordinates()); + +// let signature = Self::assign_signature(&self.signature, &g2_chip, ctx); + +// let msghash = h2c_chip.hash_to_curve::( +// signing_root.into(), +// &fp_chip, +// ctx, +// &mut region, +// &mut h2c_cache, +// )?; + +// let res = bls_chip.verify_pairing(signature, msghash, agg_pubkey, g1_neg, ctx); +// fp12_chip.assert_equal(ctx, res, fp12_one); + +// // verify finilized block header against current beacon state merkle proof +// verify_merkle_proof( +// ctx, +// &mut region, +// &sha256_chip, +// self.finality_merkle_branch +// .iter() +// .map(|w| w.clone().into_witness()), +// finalized_header.into(), +// &beacon_state_root, +// S::FINALIZED_HEADER_INDEX, +// )?; + +// // verify execution state root against finilized block body merkle proof +// verify_merkle_proof( +// ctx, +// &mut region, +// &sha256_chip, +// self.execution_merkle_branch +// .iter() +// .map(|w| w.clone().into_witness()), +// execution_state_root, +// &finilized_block_body_root, +// S::EXECUTION_STATE_ROOT_INDEX, +// )?; + +// let extra_assignments = sha256_chip.take_extra_assignments(); + +// if self.dry_run { +// return Ok(()); +// } + +// let _ = builder.assign_all( +// &config.range.gate, +// &config.range.lookup_advice, +// &config.range.q_lookup, +// &mut region, +// extra_assignments, +// ); + +// // TODO: constaint source_root, target_root with instances: `layouter.constrain_instance` +// Ok(()) +// }, +// ) +// } +// } + +// impl SyncStepCircuit { +// pub fn dry_run(mut self) -> Self { +// self.dry_run = true; +// self +// } + +// fn assign_signature( +// bytes_compressed: &[u8], +// g2_chip: &G2Chip, +// ctx: &mut Context, +// ) -> EcPoint> { +// let sig_affine = +// G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).unwrap(); + +// g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) +// } + +// /// Takes a list of pubkeys and aggregates them. +// fn aggregate_pubkeys<'a>( +// &self, +// ctx: &mut Context, +// fp_chip: &FpChip<'a, F>, +// committee_pubkeys: &mut Vec>, +// ) -> (G1Point, AssignedValue) { +// let range = fp_chip.range(); +// let gate = fp_chip.gate(); + +// let g1_chip = G1Chip::::new(fp_chip); + +// let pubkey_compressed_len = G1::BYTES_COMPRESSED; + +// let mut participation_bits = vec![]; + +// assert_eq!(self.pubkeys.len(), S::SYNC_COMMITTEE_SIZE); + +// for (&pk, is_attested) in itertools::multizip(( +// self.pubkeys.iter(), +// self.pariticipation_bits.iter().copied(), +// )) { +// let participation_bit = ctx.load_witness(F::from(is_attested as u64)); +// gate.assert_bit(ctx, participation_bit); + +// let assigned_pk = g1_chip.assign_point_unchecked(ctx, pk); + +// // Square y coordinate +// let ysq = fp_chip.mul(ctx, assigned_pk.y.clone(), assigned_pk.y.clone()); +// // Calculate y^2 using the elliptic curve equation +// let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); +// // Constrain witness y^2 to be equal to calculated y^2 +// fp_chip.assert_equal(ctx, ysq, ysq_calc); + +// // *Note:* normally, we would need to take into account the sign of the y coordinate, but +// // because we are concerned only with signature forgery, if this is the wrong +// // sign, the signature will be invalid anyway and thus verification fails. + +// committee_pubkeys.push(assigned_pk); +// participation_bits.push(participation_bit); +// } + +// let rand_point = g1_chip.load_random_point::(ctx); +// let mut acc = rand_point.clone(); +// for (bit, point) in participation_bits +// .iter() +// .copied() +// .zip(committee_pubkeys.iter_mut()) +// { +// let sum = g1_chip.add_unequal(ctx, acc.clone(), point.clone(), true); +// acc = g1_chip.select(ctx, sum, acc, bit); +// } +// let agg_pubkey = g1_chip.sub_unequal(ctx, acc, rand_point, false); +// let participation_sum = gate.sum(ctx, participation_bits); + +// (agg_pubkey, participation_sum) +// } + +// // Calculates y^2 = x^3 + 4 (the curve equation) +// fn calculate_ysquared( +// ctx: &mut Context, +// field_chip: &FpChip<'_, F>, +// x: ProperCrtUint, +// ) -> ProperCrtUint { +// let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); +// let x_cubed = field_chip.mul(ctx, x_squared, x); + +// let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); +// field_chip.carry_mod(ctx, plus_b) +// } +// } + +// impl CircuitExt for SyncStepCircuit { +// fn instances(&self) -> Vec> { +// vec![] +// } + +// fn num_instance(&self) -> Vec { +// self.instances().iter().map(|v| v.len()).collect() +// } +// } + +// impl AppCircuitExt for SyncStepCircuit { +// fn new_from_state( +// builder: RefCell>, +// state: &witness::SyncState, +// ) -> Self { +// Self { +// builder, +// signature: state.sync_signature.clone(), +// domain: state.domain, +// attested_block: state.attested_block.clone(), +// finalized_block: state.finalized_block.clone(), +// pubkeys: state +// .sync_committee +// .iter() +// .cloned() +// .map(|v| { +// G1Affine::from_uncompressed_unchecked( +// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), +// ) +// .unwrap() +// }) +// .collect_vec(), +// pariticipation_bits: state +// .sync_committee +// .iter() +// .cloned() +// .map(|v| v.is_attested) +// .collect_vec(), +// execution_merkle_branch: state.execution_merkle_branch.clone(), +// finality_merkle_branch: state.finality_merkle_branch.clone(), +// beacon_state_root: state.beacon_state_root.clone(), +// execution_state_root: state.execution_state_root.clone(), +// dry_run: false, +// _spec: PhantomData, +// } +// } + +// fn parametrize(k: usize) -> FlexGateConfigParams { +// // let state: SyncState = +// // serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); +// // let builder = RefCell::new(GateThreadBuilder::keygen()); +// // let circuit = SyncStepCircuit::::new_from_state(builder, &state).dry_run(); +// let circuit = SyncStepCircuit::::default().dry_run(); + +// let mock_k = 17; +// // Due to the composite nature of Sync circuit (vanila + halo2-lib) +// // we have to perfrom dry run to determine best circuit config. +// let mock_params = FlexGateConfigParams { +// strategy: GateStrategy::Vertical, +// k: mock_k, +// num_advice_per_phase: vec![200], +// num_lookup_advice_per_phase: vec![20], +// num_fixed: 1, +// }; + +// set_var( +// "FLEX_GATE_CONFIG_PARAMS", +// serde_json::to_string(&mock_params).unwrap(), +// ); +// std::env::set_var("LOOKUP_BITS", 16.to_string()); + +// let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); +// let params = circuit.builder.borrow().config(k, None); +// std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); +// println!("parametrized with: {:?}", params); +// params +// } + +// fn setup( +// config: &FlexGateConfigParams, +// out: Option<&Path>, +// ) -> (ParamsKZG, ProvingKey) { +// let circuit = SyncStepCircuit::::default(); + +// set_var("LOOKUP_BITS", (config.k - 1).to_string()); +// set_var( +// "FLEX_GATE_CONFIG_PARAMS", +// serde_json::to_string(&config).unwrap(), +// ); + +// let params = gen_srs(config.k as u32); + +// let pk = gen_pkey(|| "sync_step", ¶ms, out, circuit).unwrap(); + +// (params, pk) +// } +// } + +// impl Default for SyncStepCircuit { +// fn default() -> Self { +// let builder = RefCell::new(GateThreadBuilder::keygen()); + +// let dummy_pk_bytes = hex::decode("f5f151e52f1e8a5b09e4c6f0b25fb13463d442709f21a84f98dcb76a7953aa5225c12e4dd524a95f9be8dfdfa0621c0252adea177adcce725f8b47d0b27370572ad6c5638122cab820103c9bcbb3239939de60b4814c117631d82963a7d7900a").unwrap(); +// let dummy_pk_point = +// G1Affine::from_uncompressed_unchecked(&dummy_pk_bytes.as_slice().try_into().unwrap()) +// .unwrap(); + +// let state_merkle_branch = iter::repeat(vec![0u8; 32]) +// .take(S::FINALIZED_HEADER_DEPTH) +// .collect_vec(); + +// fn compute_root(leaf: Vec, branch: &[Vec]) -> Vec { +// let mut last_hash = Sha256::digest([leaf, branch[0].clone()].concat()).to_vec(); + +// for i in 1..branch.len() { +// last_hash = Sha256::digest([last_hash, branch[i].clone()].concat()).to_vec(); +// } + +// last_hash +// } + +// let execution_state_root = vec![0; 32]; +// let execution_merkle_branch = vec![vec![0; 32]; S::EXECUTION_STATE_ROOT_DEPTH]; +// let beacon_block_body_root = +// compute_root(execution_state_root.clone(), &state_merkle_branch); + +// let mut finalized_block = capella::BeaconBlockHeader { +// body_root: Node::from_bytes(beacon_block_body_root.try_into().unwrap()), +// ..Default::default() +// }; +// let finilized_header = finalized_block.hash_tree_root().unwrap().as_ref().to_vec(); + +// let finality_merkle_branch = vec![vec![0; 32]; S::FINALIZED_HEADER_DEPTH]; + +// let beacon_state_root = compute_root(finilized_header, &state_merkle_branch); + +// Self { +// builder, +// signature: hex::decode("462c5acb68722355eaa568a166e6da4c46702a496586aa94c681e0b03a200394b8f4adc98d6b5a68e3caf9dae31ff7035a402aad93bdd4752e521b3b536b47dee55d129b6374177f2be8c99b6ea6618abae84b389affc5a50ad8d991f763beaa").unwrap(), +// domain: [ +// 7, 0, 0, 0, 48, 83, 175, 74, 95, 250, 246, 166, 104, 40, 151, 228, 42, 212, 194, 8, +// 48, 56, 232, 147, 61, 9, 41, 204, 88, 234, 56, 134, +// ], +// attested_block: capella::BeaconBlockHeader::default(), +// finalized_block, +// pubkeys: iter::repeat(dummy_pk_point) +// .take(S::SYNC_COMMITTEE_SIZE) +// .collect_vec(), +// pariticipation_bits: vec![true; S::SYNC_COMMITTEE_SIZE], +// dry_run: false, +// finality_merkle_branch, +// beacon_state_root, +// execution_merkle_branch, +// execution_state_root, +// _spec: PhantomData, +// } +// } +// } + +// #[cfg(test)] +// mod tests { +// use std::{ +// env::{set_var, var}, +// fs, +// }; + +// use crate::{ +// table::Sha256Table, +// util::{full_prover, full_verifier, gen_pkey}, +// witness::{SyncState, Validator}, +// }; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use ethereum_consensus::builder; +// use halo2_base::{ +// gates::{ +// builder::{CircuitBuilderStage, FlexGateConfigParams}, +// flex_gate::GateStrategy, +// range::RangeStrategy, +// }, +// utils::fs::gen_srs, +// }; +// use halo2_proofs::{ +// circuit::SimpleFloorPlanner, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, +// poly::kzg::commitment::ParamsKZG, +// }; +// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; +// use pasta_curves::group::UncompressedEncoding; +// use rand::rngs::OsRng; +// use rayon::iter::ParallelIterator; +// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; +// use snark_verifier_sdk::{ +// evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, +// halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, +// CircuitExt, SHPLONK, +// }; + +// fn get_circuit_with_data( +// k: usize, +// config_path: &str, +// ) -> (SyncStepCircuit, FlexGateConfigParams) { +// let builder = GateThreadBuilder::new(false); +// let state: SyncState = +// serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); + +// let config = if let Ok(f) = fs::read(config_path) { +// serde_json::from_slice(&f).expect("read config file") +// } else { +// SyncStepCircuit::::parametrize(k) +// }; + +// set_var( +// "FLEX_GATE_CONFIG_PARAMS", +// serde_json::to_string(&config).unwrap(), +// ); +// set_var("LOOKUP_BITS", (config.k - 1).to_string()); +// println!("config used: {:?}", config); + +// let builder = RefCell::from(builder); +// (SyncStepCircuit::new_from_state(builder, &state), config) +// } + +// #[test] +// fn test_sync_circuit() { +// let k = 20; +// let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20.json"); + +// let timer = start_timer!(|| "sync circuit mock prover"); +// let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// end_timer!(timer); +// } + +// #[test] +// fn test_sync_proofgen() { +// let k = 20; +// let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20_mock.json"); + +// let params = gen_srs(k as u32); + +// let pkey = gen_pkey(|| "sync_step", ¶ms, None, circuit.clone()).unwrap(); + +// let public_inputs = circuit.instances(); +// let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); + +// assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)) +// } + +// #[test] +// fn test_sync_evm_verify() { +// let k = 20; +// let (circuit, config) = get_circuit_with_data(k, "./config/sync_step_k21.json"); + +// let (params, pk) = SyncStepCircuit::::setup(&config, None); + +// let instances = circuit.instances(); +// let num_instance = circuit.num_instance(); +// let deployment_code = gen_evm_verifier_shplonk::>( +// ¶ms, +// pk.get_vk(), +// num_instance, +// None, +// ); +// let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + +// evm_verify(deployment_code, instances, proof); +// } +// } From d88a0d2dd418297ba19f3b10b7d83c365a62b645 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 6 Sep 2023 23:58:00 +0200 Subject: [PATCH 02/33] add per dense/spread contexts & assignment --- lightclient-circuits/src/builder.rs | 54 +- lightclient-circuits/src/gadget/crypto/mod.rs | 2 +- .../src/gadget/crypto/sha256.rs | 139 +++-- .../src/gadget/crypto/sha256/builder.rs | 159 +++-- .../src/gadget/crypto/sha256/compression.rs | 560 +++++++----------- .../src/gadget/crypto/sha256/spread.rs | 174 +++--- 6 files changed, 491 insertions(+), 597 deletions(-) diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index 8aded2a3..184f1d0d 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -4,14 +4,14 @@ use eth_types::Field; use halo2_base::{ gates::{ builder::{FlexGateConfigParams, KeygenAssignments, ThreadBreakPoints}, - range::RangeConfig, + range::{RangeConfig, RangeStrategy}, }, safe_types::RangeChip, SKIP_FIRST_PASS, }; use halo2_proofs::{ circuit::{self, Layouter, SimpleFloorPlanner}, - plonk::{Circuit, ConstraintSystem}, + plonk::{Circuit, ConstraintSystem, Error}, }; use crate::{ @@ -19,6 +19,7 @@ use crate::{ sha256_circuit::Sha256CircuitConfig, }; +#[derive(Debug, Clone)] pub struct SHAConfig { pub spread: SpreadConfig, pub range: RangeConfig, @@ -29,34 +30,32 @@ impl SHAConfig { let degree = params.k; let mut range = RangeConfig::configure( meta, - params.strategy, + RangeStrategy::Vertical, ¶ms.num_advice_per_phase, ¶ms.num_lookup_advice_per_phase, params.num_fixed, - params.lookup_bits.unwrap_or(8), - degree as usize, + params.k - 1, + degree, ); - set_var("KECCAK_DEGREE", degree.to_string()); - set_var("KECCAK_ROWS", params.keccak_rows_per_round.to_string()); let spread = SpreadConfig::configure(meta, range.lookup_bits(), 2); // TODO configure num_advice_columns set_var("UNUSABLE_ROWS", meta.minimum_rows().to_string()); - range.range.gate.max_rows = (1 << degree) - meta.minimum_rows(); + range.gate.max_rows = (1 << degree) - meta.minimum_rows(); Self { range, spread } } } -pub struct ShaCircuitBuilder<'a, F: Field> { +pub struct ShaCircuitBuilder { pub builder: RefCell>, pub break_points: RefCell, - pub sha256: Sha256Chip<'a, F>, + // pub sha256: RefCell>, pub range: RangeChip, } -impl<'a, F: Field> ShaCircuitBuilder<'a, F> { +impl ShaCircuitBuilder { pub fn new( builder: SpreadThreadBuilder, - sha256: Sha256Chip, + // sha256: RefCell>, range: RangeChip, break_points: Option, // synthesize_phase1: FnPhase1, @@ -64,7 +63,7 @@ impl<'a, F: Field> ShaCircuitBuilder<'a, F> { Self { builder: RefCell::new(builder), break_points: RefCell::new(break_points.unwrap_or_default()), - sha256, + // sha256, range, // synthesize_phase1: RefCell::new(Some(synthesize_phase1)), } @@ -83,14 +82,9 @@ impl<'a, F: Field> ShaCircuitBuilder<'a, F> { layouter: &mut impl Layouter, ) -> HashMap<(usize, usize), (circuit::Cell, usize)> { config - .rlp .range .load_lookup_table(layouter) .expect("load range lookup table"); - config - .keccak - .load_aux_tables(layouter) - .expect("load keccak lookup tables"); let mut first_pass = SKIP_FIRST_PASS; let witness_gen_only = self.builder.borrow().witness_gen_only(); @@ -107,7 +101,7 @@ impl<'a, F: Field> ShaCircuitBuilder<'a, F> { } if !witness_gen_only { let mut builder = self.builder.borrow().clone(); - let mut sha256 = self.sha256.borrow().clone(); + // let mut sha256 = self.sha256.borrow().clone(); // Do any custom synthesize functions in SecondPhase let mut assignments = KeygenAssignments { @@ -116,14 +110,14 @@ impl<'a, F: Field> ShaCircuitBuilder<'a, F> { // let rlp_chip = RlpChip::new(&self.range, Some(&rlc_chip)); // f(&mut builder, rlp_chip, keccak_rlcs); assignments = builder.assign_all( - &config.rlp.range.gate, - &config.rlp.range.lookup_advice, - &config.rlp.range.q_lookup, - &config.rlp.rlc, + &config.range.gate, + &config.range.lookup_advice, + &config.range.q_lookup, + &config.spread, &mut region, assignments, ); - *self.break_points.borrow_mut() = assignments.break_points; + *self.break_points.borrow_mut() = assignments.break_points[0].clone(); assigned_advices = assignments.assigned_advices; } else { unimplemented!() @@ -136,7 +130,7 @@ impl<'a, F: Field> ShaCircuitBuilder<'a, F> { } } -impl<'a, F: Field /*, FnPhase1: FnSynthesize*/> Circuit for ShaCircuitBuilder<'a, F> { +impl*/> Circuit for ShaCircuitBuilder { type Config = SHAConfig; type FloorPlanner = SimpleFloorPlanner; @@ -144,10 +138,10 @@ impl<'a, F: Field /*, FnPhase1: FnSynthesize*/> Circuit for ShaCircuitBuil unimplemented!() } - fn configure(meta: &mut ConstraintSystem) -> Sha256CircuitConfig { - let params: EthConfigParams = - serde_json::from_str(&std::env::var("ETH_CONFIG_PARAMS").unwrap()).unwrap(); - MPTConfig::configure(meta, params) + fn configure(meta: &mut ConstraintSystem) -> SHAConfig { + let params: FlexGateConfigParams = + serde_json::from_str(&std::env::var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); + SHAConfig::configure(meta, params) } fn synthesize( @@ -155,7 +149,7 @@ impl<'a, F: Field /*, FnPhase1: FnSynthesize*/> Circuit for ShaCircuitBuil config: Self::Config, mut layouter: impl Layouter, ) -> Result<(), Error> { - self.two_phase_synthesize(&config, &mut layouter); + self.sub_synthesize(&config, &mut layouter); Ok(()) } } diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index a42e42ad..1ae2e116 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -11,7 +11,7 @@ use halo2_ecc::{ fields::{fp2, vector::FieldVector, FieldExtConstructor}, }; // pub use hash2curve::{HashToCurveCache, HashToCurveChip}; -pub use sha256::{AssignedHashResult, HashChip, Sha256Chip, SpreadConfig}; +pub use sha256::{AssignedHashResult, HashInstructions, Sha256Chip, SpreadConfig, SpreadThreadBuilder}; pub use sha256_wide::*; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 5ea8204a..01a6451b 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -34,20 +34,22 @@ use halo2_proofs::{ plonk::{Assigned, Error}, }; +use self::builder::ShaContexts; +use self::spread::SpreadChip; + const SHA256_CONTEXT_ID: usize = usize::MAX; -pub trait HashChip { +pub trait HashInstructions { const BLOCK_SIZE: usize; const DIGEST_SIZE: usize; fn digest( &self, + ctx: ShaContexts, input: HashInput>, - ctx: &mut Context, - ctx_vanila: &mut Context, ) -> Result, Error>; - fn take_extra_assignments(&self) -> KeygenAssignments; + // fn take_extra_assignments(&self) -> KeygenAssignments; fn range(&self) -> &RangeChip; } @@ -59,24 +61,23 @@ pub struct AssignedHashResult { pub output_bytes: [AssignedValue; 32], } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Sha256Chip<'a, F: Field> { - spread_config: RefCell>, range: &'a RangeChip, - extra_assignments: RefCell>, + spread: SpreadChip<'a, F>, + // extra_assignments: RefCell>, } -impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { +impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { const BLOCK_SIZE: usize = 64; const DIGEST_SIZE: usize = 32; fn digest( &self, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, input: HashInput>, - ctx: &mut Context, - ctx_spread: &mut Context, ) -> Result, Error> { - let assigned_input = input.into_assigned(ctx); + let assigned_input = input.into_assigned(ctx_gate); // let mut extra_assignment = self.extra_assignments.borrow_mut(); // let assigned_advices = &mut extra_assignment.assigned_advices; @@ -104,7 +105,7 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { // remaining_byte_size, // one_round_size * (max_round - num_round) // ); - let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); + let mut assign_byte = |byte: u8| ctx_gate.load_witness(F::from(byte as u64)); assigned_input_bytes.push(assign_byte(0x80)); @@ -129,14 +130,14 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { // range.range_check(ctx, assigned, 8); // } - let assigned_num_round = ctx.load_witness(F::from(num_round as u64)); + let assigned_num_round = ctx_gate.load_witness(F::from(num_round as u64)); // compute an initial state from the precomputed_input. let mut last_state = INIT_STATE; let mut assigned_last_state_vec = vec![last_state .iter() - .map(|state| ctx.load_witness(F::from(*state as u64))) + .map(|state| ctx_gate.load_witness(F::from(*state as u64))) .collect_vec()]; let mut num_processed_input = 0; @@ -144,9 +145,9 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { let assigned_input_word_at_round = &assigned_input_bytes[num_processed_input..(num_processed_input + one_round_size)]; let new_assigned_hs_out = sha256_compression( - ctx, - range, - &mut self.spread_config.borrow_mut(), + (ctx_gate, ctx_dense, ctx_spread), + &self.spread, + // &mut self.spread_config.borrow_mut(), assigned_input_word_at_round, assigned_last_state_vec.last().unwrap(), )?; @@ -155,16 +156,17 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { num_processed_input += one_round_size; } - let zero = ctx.load_zero(); + let zero = ctx_gate.load_zero(); let mut output_h_out = vec![zero; 8]; for (n_round, assigned_state) in assigned_last_state_vec.into_iter().enumerate() { let selector = gate.is_equal( - ctx, + ctx_gate, QuantumCell::Constant(F::from(n_round as u64)), assigned_num_round, ); for i in 0..8 { - output_h_out[i] = gate.select(ctx, assigned_state[i], output_h_out[i], selector) + output_h_out[i] = + gate.select(ctx_gate, assigned_state[i], output_h_out[i], selector) } } let output_digest_bytes = output_h_out @@ -173,21 +175,21 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { let be_bytes = assigned_word.value().get_lower_32().to_be_bytes().to_vec(); let assigned_bytes = (0..4) .map(|idx| { - let assigned = ctx.load_witness(F::from(be_bytes[idx] as u64)); - range.range_check(ctx, assigned, 8); + let assigned = ctx_gate.load_witness(F::from(be_bytes[idx] as u64)); + range.range_check(ctx_gate, assigned, 8); assigned }) .collect_vec(); - let mut sum = ctx.load_zero(); + let mut sum = ctx_gate.load_zero(); for (idx, assigned_byte) in assigned_bytes.iter().copied().enumerate() { sum = gate.mul_add( - ctx, + ctx_gate, assigned_byte, QuantumCell::Constant(F::from(1u64 << (24 - 8 * idx))), sum, ); } - ctx.constrain_equal(&assigned_word, &sum); + ctx_gate.constrain_equal(&assigned_word, &sum); assigned_bytes }) .collect_vec() @@ -206,9 +208,9 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, /// use `set_extra_assignments` to restore at the start of region declartion. /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. - fn take_extra_assignments(&self) -> KeygenAssignments { - self.extra_assignments.take() - } + // fn take_extra_assignments(&self) -> KeygenAssignments { + // self.extra_assignments.take() + // } fn range(&self) -> &RangeChip { self.range @@ -217,20 +219,20 @@ impl<'a, F: Field> HashChip for Sha256Chip<'a, F> { impl<'a, F: Field> Sha256Chip<'a, F> { pub fn new( - spread_config: RefCell>, range: &'a RangeChip, - extra_assignments: Option>, + spread: SpreadChip<'a, F>, + // extra_assignments: Option>, ) -> Self { Self { - spread_config, range, - extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), + spread, + // extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), } } - fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { - self.extra_assignments = RefCell::new(extra_assignments); - } + // fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { + // self.extra_assignments = RefCell::new(extra_assignments); + // } fn assigned_cell2value( &self, @@ -281,6 +283,7 @@ mod test { use std::vec; use std::{cell::RefCell, marker::PhantomData}; + use crate::builder::ShaCircuitBuilder; use crate::table::Sha256Table; use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; @@ -406,52 +409,42 @@ mod test { // } // } - impl TestCircuit { - const MAX_BYTE_SIZE: usize = 128; - const NUM_ADVICE: usize = 700; - const NUM_FIXED: usize = 1; - const NUM_LOOKUP_ADVICE: usize = 55; - const LOOKUP_BITS: usize = 8; - const K: usize = 18; - } + // impl TestCircuit { + // const MAX_BYTE_SIZE: usize = 128; + // const NUM_ADVICE: usize = 700; + // const NUM_FIXED: usize = 1; + // const NUM_LOOKUP_ADVICE: usize = 55; + // const LOOKUP_BITS: usize = 8; + // const K: usize = 18; + // } + + fn get_circuit(k: usize, mut builder: SpreadThreadBuilder, input_vector: &[Vec]) -> ShaCircuitBuilder { + let range = RangeChip::default(8); + let spread = SpreadChip::new(&range); + + let sha256 = Sha256Chip::new(&range, spread); + let (ctx_gate, ctx_dense, ctx_spread) = builder.main(); - fn set_constraints(builder: &ShaThreadBuilder) { - let (ctx, ctx_spread) = builder.main(); - - let spread_config = SpreadConfig::::configure(meta, 8, 2); - let range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - &[Self::NUM_ADVICE], - &[Self::NUM_LOOKUP_ADVICE], - Self::NUM_FIXED, - Self::LOOKUP_BITS, - Self::K, - ); - - let sha256 = Sha256Chip::new(RefCell::new(config.spread_config), &self.range, None); - let mut result = sha256.digest::<128>(self.test_input.clone(), ctx, &mut ctx_spread); + for input in input_vector { + let _ = sha256.digest::<128>((ctx_gate, ctx_dense, ctx_spread), input.as_slice().into_witness()).unwrap(); + } + + builder.config(k, Some(0)); + ShaCircuitBuilder::new(builder, range, None) } #[test] fn test_sha256_chip_constant_size() { - let k = TestCircuit::::K as u32; + let k = 15; let test_input = vec![0u8; 64]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - println!("output: {:?}", test_output); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::new(false); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, - }; + + let builder = SpreadThreadBuilder::::new(false); + + let circuit = get_circuit(k, builder, &[test_input]); + let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); + prover.assert_satisfied_par(); } // #[test] diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 6d5d7288..e38a246a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -1,8 +1,21 @@ -use std::cell::RefCell; +use std::{cell::RefCell, iter}; use eth_types::Field; -use halo2_base::{utils::ScalarField, Context, gates::{builder::{GateThreadBuilder, CircuitBuilderStage, FlexGateConfigParams, KeygenAssignments}, flex_gate::FlexGateConfig}}; -use halo2_proofs::{plonk::{Column, Advice, Selector}, circuit::Region}; +use halo2_base::{ + gates::{ + builder::{ + CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, + }, + flex_gate::FlexGateConfig, + }, + utils::ScalarField, + Context, +}; +use halo2_proofs::{ + circuit::{Region, Value}, + plonk::{Advice, Column, Selector}, +}; +use itertools::Itertools; use super::SpreadConfig; @@ -10,20 +23,25 @@ pub const SPREAD_PHASE: usize = 1; #[derive(Clone, Debug, Default)] pub struct SpreadThreadBuilder { + /// Threads for spread table assignment. + pub threads_dense: Vec>, /// Threads for spread table assignment. pub threads_spread: Vec>, /// [`GateThreadBuilder`] with threads for basic gate; also in charge of thread IDs pub gate_builder: GateThreadBuilder, } - -pub(crate) type ShaContextPair<'a, F> = (&'a mut Context, &'a mut Context); +pub type ShaContexts<'a, F> = (&'a mut Context, &'a mut Context, &'a mut Context); impl SpreadThreadBuilder { // re-expose some methods from [`GateThreadBuilder`] for convenience #[allow(unused_mut)] pub fn new(mut witness_gen_only: bool) -> Self { - Self { threads_spread: Vec::new(), gate_builder: GateThreadBuilder::new(witness_gen_only) } + Self { + threads_spread: Vec::new(), + threads_dense: Vec::new(), + gate_builder: GateThreadBuilder::new(witness_gen_only), + } } pub fn from_stage(stage: CircuitBuilderStage) -> Self { @@ -47,11 +65,15 @@ impl SpreadThreadBuilder { self } - pub fn main(&mut self) -> ShaContextPair { + pub fn main(&mut self) -> ShaContexts { if self.threads_spread.is_empty() { self.new_thread_spread(); } - (self.gate_builder.main(SPREAD_PHASE), self.threads_spread.last_mut().unwrap()) + ( + self.gate_builder.main(SPREAD_PHASE), + self.threads_dense.last_mut().unwrap(), + self.threads_spread.last_mut().unwrap(), + ) } pub fn witness_gen_only(&self) -> bool { @@ -72,7 +94,8 @@ impl SpreadThreadBuilder { pub fn new_thread_spread(&mut self) -> &mut Context { let thread_id = self.get_new_thread_id(); - self.threads_spread.push(Context::new(self.witness_gen_only(), thread_id)); + self.threads_spread + .push(Context::new(self.witness_gen_only(), thread_id)); self.threads_spread.last_mut().unwrap() } @@ -97,65 +120,87 @@ impl SpreadThreadBuilder { }: KeygenAssignments, ) -> KeygenAssignments { assert!(!self.witness_gen_only()); - + let use_unknown = self.use_unknown(); let max_rows = gate.max_rows; // first we assign all RLC contexts, basically copying gate::builder::assign_all except that the length of the RLC vertical gate is 3 instead of 4 (which was length of basic gate) let mut gate_index = 0; + let mut num_limb_sum = 0; let mut row_offset = 0; - for ctx in self.threads_spread.iter() { - // TODO: if we have more similar vertical gates this should be refactored into a general function - // for (i, (&advice, &q)) in - // ctx.advice.iter().zip(ctx.selector.iter().chain(iter::repeat(&false))).enumerate() - // { - // let (mut column, mut q_rlc) = basic_gate; - // let value = if use_unknown { Value::unknown() } else { Value::known(advice) }; - // #[cfg(feature = "halo2-axiom")] - // let cell = *region.assign_advice(column, row_offset, value).cell(); - // #[cfg(not(feature = "halo2-axiom"))] - // let cell = - // region.assign_advice(|| "", column, row_offset, || value).unwrap().cell(); - // assigned_advices.insert((ctx.context_id, i), (cell, row_offset)); - - // if (q && row_offset + 3 > max_rows) || row_offset >= max_rows - 1 { - // break_points.rlc.push(row_offset); - // row_offset = 0; - // gate_index += 1; - // // when there is a break point, because we may have two gates that overlap at the current cell, we must copy the current cell to the next column for safety - // basic_gate = *spread - // .basic_gates - // .get(gate_index) - // .unwrap_or_else(|| panic!("NOT ENOUGH RLC ADVICE COLUMNS. Perhaps blinding factors were not taken into account. The max non-poisoned rows is {max_rows}")); - // (column, q_rlc) = basic_gate; - - // #[cfg(feature = "halo2-axiom")] - // { - // let ncell = region.assign_advice(column, row_offset, value); - // region.constrain_equal(ncell.cell(), &cell); - // } - // #[cfg(not(feature = "halo2-axiom"))] - // { - // let ncell = region - // .assign_advice(|| "", column, row_offset, || value) - // .unwrap() - // .cell(); - // region.constrain_equal(ncell, cell).unwrap(); - // } - // } - - // if q { - // q_rlc.enable(region, row_offset).expect("enable selector should not fail"); - // } - // row_offset += 1; - // } + for (ctx_dense, ctx_spread) in self.threads_dense.iter().zip_eq(self.threads_spread.iter()) { + for (i, (&advice_dense, &advice_spread)) in ctx_dense + .advice + .iter() + .zip_eq(ctx_spread.advice.iter()) + .enumerate() + { + let column_idx = num_limb_sum % spread.num_advice_columns; + let value_dense = if use_unknown { + Value::unknown() + } else { + Value::known(advice_dense) + }; + let cell_dense = region + .assign_advice(|| "dense", spread.denses[column_idx], row_offset, || value_dense) + .unwrap() + .cell(); + assigned_advices.insert((ctx_dense.context_id, i), (cell_dense, row_offset)); + + let value_spread = if use_unknown { + Value::unknown() + } else { + Value::known(advice_spread) + }; + let cell_spread = region + .assign_advice(|| "spread", spread.spreads[column_idx], row_offset, || value_spread) + .unwrap() + .cell(); + assigned_advices.insert((ctx_spread.context_id, i), (cell_dense, row_offset)); + + // if (q && row_offset + 3 > max_rows) || row_offset >= max_rows - 1 { + // break_points.rlc.push(row_offset); + // row_offset = 0; + // gate_index += 1; + // // when there is a break point, because we may have two gates that overlap at the current cell, we must copy the current cell to the next column for safety + // basic_gate = *spread + // .basic_gates + // .get(gate_index) + // .unwrap_or_else(|| panic!("NOT ENOUGH RLC ADVICE COLUMNS. Perhaps blinding factors were not taken into account. The max non-poisoned rows is {max_rows}")); + // (column, q_rlc) = basic_gate; + + // #[cfg(feature = "halo2-axiom")] + // { + // let ncell = region.assign_advice(column, row_offset, value); + // region.constrain_equal(ncell.cell(), &cell); + // } + // #[cfg(not(feature = "halo2-axiom"))] + // { + // let ncell = region + // .assign_advice(|| "", column, row_offset, || value) + // .unwrap() + // .cell(); + // region.constrain_equal(ncell, cell).unwrap(); + // } + // } + + num_limb_sum += 1; + if column_idx == spread.num_advice_columns - 1 { + row_offset += 1; + } + row_offset += 1; + } } // in order to constrain equalities and assign constants, we copy the RLC equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there let main_ctx = self.gate_builder.main(0); for ctx in self.threads_spread.iter_mut() { - main_ctx.advice_equality_constraints.append(&mut ctx.advice_equality_constraints); - main_ctx.constant_equality_constraints.append(&mut ctx.constant_equality_constraints); + main_ctx + .advice_equality_constraints + .append(&mut ctx.advice_equality_constraints); + main_ctx + .constant_equality_constraints + .append(&mut ctx.constant_equality_constraints); } self.gate_builder.assign_all( diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index 5dbd7f20..3a4ec537 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -1,6 +1,7 @@ use std::cell::RefMut; -use super::spread::SpreadConfig; +use super::builder::ShaContexts; +use super::spread::{self, SpreadChip, SpreadConfig}; use super::util::{bits_le_to_fe, fe_to_bits_le}; use eth_types::Field; use halo2_base::halo2_proofs::halo2curves::FieldExt; @@ -25,27 +26,51 @@ use sha2::{Digest, Sha256}; // const BLOCK_BYTE: usize = 64; // const DIGEST_BYTE: usize = 32; +pub const NUM_ROUND: usize = 64; +pub const NUM_STATE_WORD: usize = 8; +const ROUND_CONSTANTS: [u32; NUM_ROUND] = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +]; + +pub const INIT_STATE: [u32; NUM_STATE_WORD] = [ + 0x6a09_e667, + 0xbb67_ae85, + 0x3c6e_f372, + 0xa54f_f53a, + 0x510e_527f, + 0x9b05_688c, + 0x1f83_d9ab, + 0x5be0_cd19, +]; + pub type SpreadU32<'a, F> = (AssignedValue, AssignedValue); pub fn sha256_compression<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + spread_chip: &SpreadChip<'a, F>, assigned_input_bytes: &[AssignedValue], pre_state_words: &[AssignedValue], ) -> Result>, Error> { debug_assert_eq!(assigned_input_bytes.len(), 64); debug_assert_eq!(pre_state_words.len(), 8); + let range = spread_chip.range(); let gate = range.gate(); // message schedule. let mut i = 0; let mut message_u32s = assigned_input_bytes .chunks(4) .map(|bytes| { - let mut sum = ctx.load_zero(); + let mut sum = ctx_gate.load_zero(); for idx in 0..4 { sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(bytes[3 - idx]), QuantumCell::Constant(F::from(1u64 << (8 * idx))), QuantumCell::Existing(sum), @@ -63,20 +88,28 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // .collect_vec(); let mut message_spreads = message_u32s .iter() - .map(|dense| state_to_spread_u32(ctx, range, spread_config, dense)) + .map(|dense| state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, dense)) .collect::>, Error>>()?; for idx in 16..64 { - // let w_2_spread = state_to_spread_u32(ctx, range, spread_config, &message_u32s[idx - 2])?; - // let w_15_spread = state_to_spread_u32(ctx, range, spread_config, &message_u32s[idx - 15])?; - let term1 = sigma_lower1(ctx, range, spread_config, &message_spreads[idx - 2])?; - let term3 = sigma_lower0(ctx, range, spread_config, &message_spreads[idx - 15])?; + // let w_2_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 2])?; + // let w_15_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 15])?; + let term1 = sigma_lower1( + (ctx_gate, ctx_dense, ctx_spread), + spread_chip, + &message_spreads[idx - 2], + )?; + let term3 = sigma_lower0( + (ctx_gate, ctx_dense, ctx_spread), + spread_chip, + &message_spreads[idx - 15], + )?; // let term1_u32 = bits2u32(ctx, gate, &term1_bits); // let term3_u32 = bits2u32(ctx, gate, &term3_bits); let new_w = { - let mut sum = gate.add(ctx, term1, message_u32s[idx - 7]); - sum = gate.add(ctx, sum, term3); - sum = gate.add(ctx, sum, message_u32s[idx - 16]); - mod_u32(ctx, range, &sum) + let mut sum = gate.add(ctx_gate, term1, message_u32s[idx - 7]); + sum = gate.add(ctx_gate, sum, term3); + sum = gate.add(ctx_gate, sum, message_u32s[idx - 16]); + mod_u32(ctx_gate, range, &sum) }; // println!( // "idx {} term1 {:?}, term3 {:?}, new_w {:?}", @@ -86,7 +119,8 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // new_w.value() // ); message_u32s.push(new_w); - let new_w_spread = state_to_spread_u32(ctx, range, spread_config, &new_w)?; + let new_w_spread = + state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &new_w)?; message_spreads.push(new_w_spread); // if idx <= 61 { // let new_w_bits = gate.num_to_bits(ctx, &new_w, 32); @@ -105,65 +139,79 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( pre_state_words[6], pre_state_words[7], ); - let mut a_spread = state_to_spread_u32(ctx, range, spread_config, &a)?; - let mut b_spread = state_to_spread_u32(ctx, range, spread_config, &b)?; - let mut c_spread = state_to_spread_u32(ctx, range, spread_config, &c)?; - // let mut d_spread = state_to_spread_u32(ctx, range, spread_config, &d)?; - let mut e_spread = state_to_spread_u32(ctx, range, spread_config, &e)?; - let mut f_spread = state_to_spread_u32(ctx, range, spread_config, &f)?; - let mut g_spread = state_to_spread_u32(ctx, range, spread_config, &g)?; - // let mut h_spread = state_to_spread_u32(ctx, range, spread_config, &h)?; + let mut a_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a)?; + let mut b_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &b)?; + let mut c_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &c)?; + // let mut d_spread = state_to_spread_u32(ctx, range, ctx_spread, &d)?; + let mut e_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e)?; + let mut f_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &f)?; + let mut g_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &g)?; + // let mut h_spread = state_to_spread_u32(ctx, range, ctx_spread, &h)?; // let mut a_bits = gate.num_to_bits(ctx, &a, 32); // let mut b_bits = gate.num_to_bits(ctx, &b, 32); // let mut c_bits = gate.num_to_bits(ctx, &c, 32); // let mut e_bits = gate.num_to_bits(ctx, &e, 32); // let mut f_bits = gate.num_to_bits(ctx, &f, 32); // let mut g_bits = gate.num_to_bits(ctx, &g, 32); - let mut t1 = ctx.load_zero(); - let mut t2 = ctx.load_zero(); + let mut t1 = ctx_gate.load_zero(); + let mut t2 = ctx_gate.load_zero(); for idx in 0..64 { t1 = { - // let e_spread = state_to_spread_u32(ctx, range, spread_config, &e)?; - // let f_spread = state_to_spread_u32(ctx, range, spread_config, &f)?; - // let g_spread = state_to_spread_u32(ctx, range, spread_config, &g)?; - let sigma_term = sigma_upper1(ctx, range, spread_config, &e_spread)?; - let ch_term = ch(ctx, range, spread_config, &e_spread, &f_spread, &g_spread)?; + // let e_spread = state_to_spread_u32(ctx, range, ctx_spread, &e)?; + // let f_spread = state_to_spread_u32(ctx, range, ctx_spread, &f)?; + // let g_spread = state_to_spread_u32(ctx, range, ctx_spread, &g)?; + let sigma_term = + sigma_upper1((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e_spread)?; + let ch_term = ch( + (ctx_gate, ctx_dense, ctx_spread), + spread_chip, + &e_spread, + &f_spread, + &g_spread, + )?; // println!( // "idx {} sigma {:?} ch {:?}", // idx, // sigma_term.value(), // ch_term.value() // ); - let add1 = gate.add(ctx, h, sigma_term); + let add1 = gate.add(ctx_gate, h, sigma_term); let add2 = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(add1), QuantumCell::Existing(ch_term), ); let add3 = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(add2), QuantumCell::Constant(F::from(ROUND_CONSTANTS[idx] as u64)), ); let add4 = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(add3), QuantumCell::Existing(message_u32s[idx]), ); - mod_u32(ctx, range, &add4) + mod_u32(ctx_gate, range, &add4) }; t2 = { - // let a_spread = state_to_spread_u32(ctx, range, spread_config, &a)?; - // let b_spread = state_to_spread_u32(ctx, range, spread_config, &b)?; - // let c_spread = state_to_spread_u32(ctx, range, spread_config, &c)?; - let sigma_term = sigma_upper0(ctx, range, spread_config, &a_spread)?; - let maj_term = maj(ctx, range, spread_config, &a_spread, &b_spread, &c_spread)?; + // let a_spread = state_to_spread_u32(ctx, range, ctx_spread, &a)?; + // let b_spread = state_to_spread_u32(ctx, range, ctx_spread, &b)?; + // let c_spread = state_to_spread_u32(ctx, range, ctx_spread, &c)?; + let sigma_term = + sigma_upper0((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a_spread)?; + let maj_term = maj( + (ctx_gate, ctx_dense, ctx_spread), + spread_chip, + &a_spread, + &b_spread, + &c_spread, + )?; let add = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(sigma_term), QuantumCell::Existing(maj_term), ); - mod_u32(ctx, range, &add) + mod_u32(ctx_gate, range, &add) }; // println!("idx {}, t1 {:?}, t2 {:?}", idx, t1.value(), t2.value()); h = g; @@ -173,10 +221,14 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( f = e; f_spread = e_spread; e = { - let add = gate.add(ctx, QuantumCell::Existing(d), QuantumCell::Existing(t1)); - mod_u32(ctx, range, &add) + let add = gate.add( + ctx_gate, + QuantumCell::Existing(d), + QuantumCell::Existing(t1), + ); + mod_u32(ctx_gate, range, &add) }; - e_spread = state_to_spread_u32(ctx, range, spread_config, &e)?; + e_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e)?; d = c; // d_spread = c_spread; c = b; @@ -184,10 +236,14 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( b = a; b_spread = a_spread; a = { - let add = gate.add(ctx, QuantumCell::Existing(t1), QuantumCell::Existing(t2)); - mod_u32(ctx, range, &add) + let add = gate.add( + ctx_gate, + QuantumCell::Existing(t1), + QuantumCell::Existing(t2), + ); + mod_u32(ctx_gate, range, &add) }; - a_spread = state_to_spread_u32(ctx, range, spread_config, &a)?; + a_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a)?; } let new_states = vec![a, b, c, d, e, f, g, h]; let next_state_words = new_states @@ -195,60 +251,41 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( .copied() .zip(pre_state_words.iter().copied()) .map(|(x, y)| { - let add = gate.add(ctx, QuantumCell::Existing(x), QuantumCell::Existing(y)); + let add = gate.add(ctx_gate, QuantumCell::Existing(x), QuantumCell::Existing(y)); // println!( // "pre {:?} new {:?} add {:?}", // y.value(), // x.value(), // add.value() // ); - mod_u32(ctx, range, &add) + mod_u32(ctx_gate, range, &add) }) .collect_vec(); Ok(next_state_words) } -fn state_to_spread_u32<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, +fn state_to_spread_u32<'a, F: Field>( + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + spread_chip: &SpreadChip<'a, F>, x: &AssignedValue, ) -> Result, Error> { - let gate = range.gate(); + let gate = spread_chip.range().gate(); let lo = F::from((x.value().get_lower_32() & ((1 << 16) - 1)) as u64); let hi = F::from((x.value().get_lower_32() >> 16) as u64); - let assigned_lo = ctx.load_witness(lo); - let assigned_hi = ctx.load_witness(hi); + let assigned_lo = ctx_gate.load_witness(lo); + let assigned_hi = ctx_gate.load_witness(hi); let composed = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(assigned_lo), ); - ctx.constrain_equal(x, &composed); - let lo_spread = spread_config.spread(ctx, range, &assigned_lo)?; - let hi_spread = spread_config.spread(ctx, range, &assigned_hi)?; + ctx_gate.constrain_equal(x, &composed); + let lo_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &assigned_lo)?; + let hi_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &assigned_hi)?; Ok((lo_spread, hi_spread)) } -// fn bits2u32<'a, 'b: 'a, F: FieldExt>( -// ctx: &mut Context, -// gate: &FlexGateConfig, -// bits: &[AssignedValue], -// ) -> AssignedValue { -// debug_assert_eq!(bits.len(), 32); -// let mut sum = ctx.load_zero(); -// for idx in 0..32 { -// sum = gate.mul_add( -// ctx, -// bits[idx], -// QuantumCell::Constant(F::from(1u64 << idx)), -// sum, -// ); -// } -// sum -// } - fn mod_u32<'a, 'b: 'a, F: Field>( ctx: &mut Context, range: &impl RangeInstructions, @@ -271,9 +308,8 @@ fn mod_u32<'a, 'b: 'a, F: Field>( } fn ch<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, z: &SpreadU32<'a, F>, @@ -281,98 +317,95 @@ fn ch<'a, 'b: 'a, F: Field>( let (x_lo, x_hi) = *x; let (y_lo, y_hi) = *y; let (z_lo, z_hi) = *z; + let range = spread_chip.range(); let gate = range.gate(); let p_lo = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), ); let p_hi = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), ); const MASK_EVEN_32: u64 = 0x55555555; - let x_neg_lo = gate.neg(ctx, QuantumCell::Existing(x_lo)); - let x_neg_hi = gate.neg(ctx, QuantumCell::Existing(x_hi)); + let x_neg_lo = gate.neg(ctx_gate, QuantumCell::Existing(x_lo)); + let x_neg_hi = gate.neg(ctx_gate, QuantumCell::Existing(x_hi)); let q_lo = three_add( - ctx, + ctx_gate, gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_lo), QuantumCell::Existing(z_lo), ); let q_hi = three_add( - ctx, + ctx_gate, gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_hi), QuantumCell::Existing(z_hi), ); - let (p_lo_even, p_lo_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &p_lo)?; - let (p_hi_even, p_hi_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &p_hi)?; - let (q_lo_even, q_lo_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &q_lo)?; - let (q_hi_even, q_hi_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &q_hi)?; + let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &p_lo)?; + let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &p_hi)?; + let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &q_lo)?; + let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &q_hi)?; { - let even_spread = spread_config.spread(ctx, range, &p_lo_even)?; - let odd_spread = spread_config.spread(ctx, range, &p_lo_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_lo_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_lo_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &p_lo); + ctx_gate.constrain_equal(&sum, &p_lo); } { - let even_spread = spread_config.spread(ctx, range, &p_hi_even)?; - let odd_spread = spread_config.spread(ctx, range, &p_hi_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_hi_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_hi_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &p_hi); + ctx_gate.constrain_equal(&sum, &p_hi); } { - let even_spread = spread_config.spread(ctx, range, &q_lo_even)?; - let odd_spread = spread_config.spread(ctx, range, &q_lo_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_lo_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_lo_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &q_lo); + ctx_gate.constrain_equal(&sum, &q_lo); } { - let even_spread = spread_config.spread(ctx, range, &q_hi_even)?; - let odd_spread = spread_config.spread(ctx, range, &q_hi_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_hi_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_hi_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &q_hi); + ctx_gate.constrain_equal(&sum, &q_hi); } let out_lo = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(p_lo_odd), QuantumCell::Existing(q_lo_odd), ); let out_hi = gate.add( - ctx, + ctx_gate, QuantumCell::Existing(p_hi_odd), QuantumCell::Existing(q_hi_odd), ); let out = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(out_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(out_lo), @@ -380,63 +413,9 @@ fn ch<'a, 'b: 'a, F: Field>( Ok(out) } -// fn ch<'a, 'b: 'a, F: FieldExt>( -// ctx: &mut Context, -// gate: &FlexGateConfig, -// x_bits: &[AssignedValue], -// y_bits: &[AssignedValue], -// z_bits: &[AssignedValue], -// ) -> Vec> { -// debug_assert_eq!(x_bits.len(), 32); -// debug_assert_eq!(y_bits.len(), 32); -// debug_assert_eq!(z_bits.len(), 32); - -// // reference: https://github.com/iden3/circomlib/blob/v0.2.4/circuits/sha256/ch.circom -// let y_sub_z = y_bits -// .iter() -// .zip(z_bits.iter()) -// .map(|(y, z)| gate.sub(ctx, QuantumCell::Existing(y), QuantumCell::Existing(z))) -// .collect_vec(); -// x_bits -// .iter() -// .zip(y_sub_z.iter()) -// .zip(z_bits.iter()) -// .map(|((x, y), z)| { -// gate.mul_add( -// ctx, -// QuantumCell::Existing(x), -// QuantumCell::Existing(y), -// QuantumCell::Existing(z), -// ) -// }) -// .collect_vec() - -// // let x_y = x_bits -// // .iter() -// // .zip(y_bits.iter()) -// // .map(|(x, y)| gate.and(ctx, QuantumCell::Existing(x), QuantumCell::Existing(y))) -// // .collect_vec(); -// // let not_x_z = x_bits -// // .iter() -// // .zip(z_bits.iter()) -// // .map(|(x, z)| { -// // let not_x = gate.not(ctx, QuantumCell::Existing(x)); -// // gate.and( -// // ctx, -// // QuantumCell::Existing(not_x), -// // QuantumCell::Existing(z), -// // ) -// // }) -// // .collect_vec(); -// // x_y.iter() -// // .zip(not_x_z.iter()) -// // .map(|(a, b)| xor(ctx, gate, a, b)) -// // .collect_vec() - fn maj<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, z: &SpreadU32<'a, F>, @@ -444,49 +423,48 @@ fn maj<'a, 'b: 'a, F: Field>( let (x_lo, x_hi) = *x; let (y_lo, y_hi) = *y; let (z_lo, z_hi) = *z; + let range = spread_chip.range(); let gate = range.gate(); let m_lo = three_add( - ctx, + ctx_gate, range.gate(), QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), QuantumCell::Existing(z_lo), ); let m_hi = three_add( - ctx, + ctx_gate, range.gate(), QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), QuantumCell::Existing(z_hi), ); - let (m_lo_even, m_lo_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &m_lo)?; - let (m_hi_even, m_hi_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &m_hi)?; + let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &m_lo)?; + let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &m_hi)?; { - let even_spread = spread_config.spread(ctx, range, &m_lo_even)?; - let odd_spread = spread_config.spread(ctx, range, &m_lo_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_lo_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_lo_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &m_lo); + ctx_gate.constrain_equal(&sum, &m_lo); } { - let even_spread = spread_config.spread(ctx, range, &m_hi_even)?; - let odd_spread = spread_config.spread(ctx, range, &m_hi_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_hi_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_hi_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &m_hi); + ctx_gate.constrain_equal(&sum, &m_hi); } let m = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(m_hi_odd), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(m_lo_odd), @@ -505,72 +483,9 @@ fn three_add<'a, 'b: 'a, F: Field>( gate.add(ctx, QuantumCell::Existing(add1), z) } -// fn maj<'a, 'b: 'a, F: FieldExt>( -// ctx: &mut Context, -// gate: &FlexGateConfig, -// x_bits: &[AssignedValue], -// y_bits: &[AssignedValue], -// z_bits: &[AssignedValue], -// ) -> Vec> { -// debug_assert_eq!(x_bits.len(), 32); -// debug_assert_eq!(y_bits.len(), 32); -// debug_assert_eq!(z_bits.len(), 32); -// // reference: https://github.com/iden3/circomlib/blob/v0.2.4/circuits/sha256/maj.circom -// let mid = y_bits -// .iter() -// .zip(z_bits.iter()) -// .map(|(y, z)| gate.mul(ctx, QuantumCell::Existing(y), QuantumCell::Existing(z))) -// .collect_vec(); -// (0..32) -// .map(|idx| { -// let add1 = gate.add( -// ctx, -// QuantumCell::Existing(y_bits[idx]), -// QuantumCell::Existing(z_bits[idx]), -// ); -// let add2 = gate.mul_add( -// ctx, -// QuantumCell::Existing(mid[idx]), -// QuantumCell::Constant(-F::from(2u64)), -// QuantumCell::Existing(add1), -// ); -// gate.mul_add( -// ctx, -// QuantumCell::Existing(x_bits[idx]), -// QuantumCell::Existing(add2), -// QuantumCell::Existing(mid[idx]), -// ) -// }) -// .collect_vec() -// // let x_y = x_bits -// // .iter() -// // .zip(y_bits.iter()) -// // .map(|(x, y)| gate.and(ctx, QuantumCell::Existing(x), QuantumCell::Existing(y))) -// // .collect_vec(); -// // let x_z = x_bits -// // .iter() -// // .zip(z_bits.iter()) -// // .map(|(x, z)| gate.and(ctx, QuantumCell::Existing(x), QuantumCell::Existing(z))) -// // .collect_vec(); -// // let y_z = y_bits -// // .iter() -// // .zip(z_bits.iter()) -// // .map(|(y, z)| gate.and(ctx, QuantumCell::Existing(y), QuantumCell::Existing(z))) -// // .collect_vec(); -// // let xor1 = x_y -// // .iter() -// // .zip(x_z.iter()) -// // .map(|(a, b)| xor(ctx, gate, a, b)) -// // .collect_vec(); -// // xor1.iter() -// // .zip(y_z.iter()) -// // .map(|(a, b)| xor(ctx, gate, a, b)) -// // .collect_vec() -// } fn sigma_upper0<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + ctx: ShaContexts, + spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { const STARTS: [usize; 4] = [0, 2, 13, 22]; @@ -584,8 +499,7 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( ]; sigma_generic( ctx, - range, - spread_config, + spread_chip, x_spread, &STARTS, &ENDS, @@ -595,9 +509,8 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( } fn sigma_upper1<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + ctx: ShaContexts, + spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { const STARTS: [usize; 4] = [0, 6, 11, 25]; @@ -611,8 +524,7 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( ]; sigma_generic( ctx, - range, - spread_config, + spread_chip, x_spread, &STARTS, &ENDS, @@ -622,9 +534,8 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( } fn sigma_lower0<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + ctx: ShaContexts, + spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { const STARTS: [usize; 4] = [0, 3, 7, 18]; @@ -638,8 +549,7 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( ]; sigma_generic( ctx, - range, - spread_config, + spread_chip, x_spread, &STARTS, &ENDS, @@ -649,9 +559,8 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( } fn sigma_lower1<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + ctx: ShaContexts, + spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { const STARTS: [usize; 4] = [0, 10, 17, 19]; @@ -665,8 +574,7 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( ]; sigma_generic( ctx, - range, - spread_config, + spread_chip, x_spread, &STARTS, &ENDS, @@ -677,15 +585,15 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( #[allow(clippy::too_many_arguments)] fn sigma_generic<'a, 'b: 'a, F: Field>( - ctx: &mut Context, - range: &impl RangeInstructions, - spread_config: &mut RefMut>, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, starts: &[usize; 4], ends: &[usize; 4], paddings: &[usize; 4], coeffs: &[F; 4], ) -> Result, Error> { + let range = spread_chip.range(); let gate = range.gate(); // let x_spread = spread_config.spread(ctx, range, x)?; let bits_val = { @@ -703,7 +611,7 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let assigned_spread = spread_config.spread(ctx, range, &assigned_dense)?; // let result: Result, Error> = Ok(assigned_spread); - ctx.load_witness(fe_val) + ctx_gate.load_witness(fe_val) }; let assigned_a = assign_bits(&bits_val, starts[0], ends[0], paddings[0]); let assigned_b = assign_bits(&bits_val, starts[1], ends[1], paddings[1]); @@ -712,138 +620,98 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( { let mut sum = assigned_a; sum = gate.mul_add( - ctx, + ctx_gate, assigned_b, QuantumCell::Constant(F::from(1 << (2 * starts[1]))), sum, ); sum = gate.mul_add( - ctx, + ctx_gate, assigned_c, QuantumCell::Constant(F::from(1 << (2 * starts[2]))), sum, ); sum = gate.mul_add( - ctx, + ctx_gate, assigned_d, QuantumCell::Constant(F::from(1 << (2 * starts[3]))), sum, ); let x_composed = gate.mul_add( - ctx, + ctx_gate, x_spread.1, QuantumCell::Constant(F::from(1 << 32)), x_spread.0, ); - ctx.constrain_equal(&x_composed, &sum); + ctx_gate.constrain_equal(&x_composed, &sum); }; - // println!( - // "x {:?}, a {:?}, b {:?}, c {:?}, d {:?}", - // x.value(), - // assigned_a, - // assigned_b, - // assigned_c, - // assigned_d - // ); + let r_spread = { // let a_coeff = F::from(1u64 << 60 + 1u64 << 38 + 1u64 << 20); // let b_coeff = F::from(1u64 << 0 + 1u64 << 42 + 1u64 << 24); // let c_coeff = F::from(1u64 << 22 + 1u64 << 0 + 1u64 << 46); // let d_coeff = F::from(1u64 << 40 + 1u64 << 18 + 1u64 << 0); - let mut sum = ctx.load_zero(); + let mut sum = ctx_gate.load_zero(); // let assigned_a_spread = spread_config.spread(ctx, range, &assigned_a)?; // let assigned_b_spread = spread_config.spread(ctx, range, &assigned_b)?; // let assigned_c_spread = spread_config.spread(ctx, range, &assigned_c)?; // let assigned_d_spread = spread_config.spread(ctx, range, &assigned_d)?; - sum = gate.mul_add(ctx, QuantumCell::Constant(coeffs[0]), assigned_a, sum); - sum = gate.mul_add(ctx, QuantumCell::Constant(coeffs[1]), assigned_b, sum); - sum = gate.mul_add(ctx, QuantumCell::Constant(coeffs[2]), assigned_c, sum); - sum = gate.mul_add(ctx, QuantumCell::Constant(coeffs[3]), assigned_d, sum); + sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[0]), assigned_a, sum); + sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[1]), assigned_b, sum); + sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[2]), assigned_c, sum); + sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[3]), assigned_d, sum); sum }; let (r_lo, r_hi) = { let lo = F::from(r_spread.value().get_lower_32() as u64); let hi = F::from(((r_spread.value().get_lower_128() >> 32) & ((1u128 << 32) - 1)) as u64); - let assigned_lo = ctx.load_witness(lo); - let assigned_hi = ctx.load_witness(hi); - range.range_check(ctx, assigned_lo, 32); - range.range_check(ctx, assigned_hi, 32); + let assigned_lo = ctx_gate.load_witness(lo); + let assigned_hi = ctx_gate.load_witness(hi); + range.range_check(ctx_gate, assigned_lo, 32); + range.range_check(ctx_gate, assigned_hi, 32); let composed = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 32)), QuantumCell::Existing(assigned_lo), ); - ctx.constrain_equal(&r_spread, &composed); + ctx_gate.constrain_equal(&r_spread, &composed); (assigned_lo, assigned_hi) }; - // println!( - // "r_spread {:?}, r_lo {:?}, r_hi {:?}", - // r_spread.value(), - // r_lo.value(), - // r_hi.value() - // ); - let (r_lo_even, r_lo_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &r_lo)?; - let (r_hi_even, r_hi_odd) = - spread_config.decompose_even_and_odd_unchecked(ctx, range, &r_hi)?; - // println!( - // "r_hi_even {:?}, r_lo_even {:?}", - // r_hi_even.value(), - // r_lo_even.value() - // ); + + let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &r_lo)?; + let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &r_hi)?; + { - let even_spread = spread_config.spread(ctx, range, &r_lo_even)?; - let odd_spread = spread_config.spread(ctx, range, &r_lo_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_lo_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_lo_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &r_lo); + ctx_gate.constrain_equal(&sum, &r_lo); } + { - let even_spread = spread_config.spread(ctx, range, &r_hi_even)?; - let odd_spread = spread_config.spread(ctx, range, &r_hi_odd)?; + let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_hi_even)?; + let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_hi_odd)?; let sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx.constrain_equal(&sum, &r_hi); + ctx_gate.constrain_equal(&sum, &r_hi); } + let r = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(r_hi_even), QuantumCell::Constant(F::from(1 << 16)), QuantumCell::Existing(r_lo_even), ); - // println!("r {:?}", r.value()); + Ok(r) } - -pub const NUM_ROUND: usize = 64; -pub const NUM_STATE_WORD: usize = 8; -const ROUND_CONSTANTS: [u32; NUM_ROUND] = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, -]; - -pub const INIT_STATE: [u32; NUM_STATE_WORD] = [ - 0x6a09_e667, - 0xbb67_ae85, - 0x3c6e_f372, - 0xa54f_f53a, - 0x510e_527f, - 0x9b05_688c, - 0x1f83_d9ab, - 0x5be0_cd19, -]; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index bbfcf436..721f1b13 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -1,5 +1,6 @@ use std::marker::PhantomData; +use super::builder::ShaContexts; use super::{compression::SpreadU32, util::*}; use eth_types::Field; use halo2_base::halo2_proofs::halo2curves::FieldExt; @@ -11,6 +12,7 @@ use halo2_base::halo2_proofs::{ }, poly::Rotation, }; +use halo2_base::safe_types::RangeChip; use halo2_base::utils::decompose; use halo2_base::QuantumCell; use halo2_base::{ @@ -24,25 +26,19 @@ use num_bigint::BigUint; #[derive(Debug, Clone)] pub struct SpreadConfig { - denses: Vec>, - spreads: Vec>, - table_dense: TableColumn, - table_spread: TableColumn, - num_bits_lookup: usize, - num_advice_columns: usize, - num_limb_sum: usize, - row_offset: usize, + pub denses: Vec>, + pub spreads: Vec>, + pub table_dense: TableColumn, + pub table_spread: TableColumn, + pub num_advice_columns: usize, + pub num_bits_lookup: usize, _f: PhantomData, } impl SpreadConfig { - pub fn configure( - meta: &mut ConstraintSystem, - num_bits_lookup: usize, - num_advice_columns: usize, - ) -> Self { + pub fn configure(meta: &mut ConstraintSystem, num_bits_lookup: usize, num_advice_columns: usize) -> Self { debug_assert_eq!(16 % num_bits_lookup, 0); - // debug_assert_eq!(16 % (num_bits_lookup * num_advice_columns), 0); + let denses = (0..num_advice_columns) .map(|_| { let column = meta.advice_column(); @@ -72,10 +68,8 @@ impl SpreadConfig { spreads, table_dense, table_spread, - num_bits_lookup, num_advice_columns, - num_limb_sum: 0, - row_offset: 0, + num_bits_lookup, _f: PhantomData, } } @@ -89,37 +83,80 @@ impl SpreadConfig { } } + pub fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { + layouter.assign_table( + || "spread table", + |mut table| { + for idx in 0..(1usize << self.num_bits_lookup) { + let val_dense = F::from(idx as u64); + let val_bits = fe_to_bits_le(&val_dense, 32); + let mut spread_bits = vec![false; val_bits.len() * 2]; + for i in 0..val_bits.len() { + spread_bits[2 * i] = val_bits[i]; + } + let val_spread: F = bits_le_to_fe(&spread_bits); + table.assign_cell( + || format!("table_dense at {}", idx), + self.table_dense, + idx, + || Value::known(val_dense), + )?; + table.assign_cell( + || format!("table_spread at {}", idx), + self.table_spread, + idx, + || Value::known(val_spread), + )?; + } + Ok(()) + }, + )?; + Ok(()) + } +} + +#[derive(Debug, Clone)] +pub struct SpreadChip<'a, F: Field> { + range: &'a RangeChip, +} + +impl<'a, F: Field> SpreadChip<'a, F> { + pub fn new(range: &'a RangeChip) -> Self { + debug_assert_eq!(16 % range.lookup_bits(), 0); + + Self { + range, + } + } pub fn spread( - &mut self, - ctx: &mut Context, - // region: &mut Region<'a, F>, - range: &impl RangeInstructions, + &self, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, dense: &AssignedValue, ) -> Result, Error> { - let gate = range.gate(); - let limb_bits = self.num_bits_lookup; + let gate = self.range.gate(); + let limb_bits = self.range.lookup_bits(); let num_limbs = 16 / limb_bits; let limbs = decompose(dense.value(), num_limbs, limb_bits); - let assigned_limbs = ctx.assign_witnesses(limbs); + let assigned_limbs = ctx_gate.assign_witnesses(limbs); { - let mut limbs_sum = ctx.load_zero(); + let mut limbs_sum = ctx_gate.load_zero(); for (idx, limb) in assigned_limbs.iter().copied().enumerate() { limbs_sum = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(limb), QuantumCell::Constant(F::from(1 << (limb_bits * idx))), QuantumCell::Existing(limbs_sum), ); } - ctx.constrain_equal(&limbs_sum, dense); + ctx_gate.constrain_equal(&limbs_sum, dense); } - let mut assigned_spread = ctx.load_zero(); + let mut assigned_spread = ctx_gate.load_zero(); // println!("dense: {:?}", dense.value()); for (idx, limb) in assigned_limbs.iter().enumerate() { // println!("idx {}, limb {:?}", idx, limb.value()); - let spread_limb = self.spread_limb(ctx, gate, limb)?; + let spread_limb = self.spread_limb((ctx_gate, ctx_dense, ctx_spread), limb)?; assigned_spread = gate.mul_add( - ctx, + ctx_gate, QuantumCell::Existing(spread_limb), QuantumCell::Constant(F::from(1 << (2 * limb_bits * idx))), QuantumCell::Existing(assigned_spread), @@ -127,25 +164,10 @@ impl SpreadConfig { } Ok(assigned_spread) } - - // pub fn dense<'v: 'a, 'a>( - // &mut self, - // ctx: &mut Context, - // range: &impl RangeInstructions, - // spread: &AssignedValue, - // ) -> Result, Error> { - // ctx.region.assign_advice( - // || format!("spread at offset {}", self.row_offset), - // self.dense, - // self.row_offset, - // || limb.value, - // )?; - // } - + pub fn decompose_even_and_odd_unchecked( &self, ctx: &mut Context, - range: &impl RangeInstructions, spread: &AssignedValue, ) -> Result<(AssignedValue, AssignedValue), Error> { let bits = fe_to_bits_le(spread.value(), 32); @@ -156,57 +178,25 @@ impl SpreadConfig { let (even_val, odd_val) = (bits_le_to_fe(&even_bits), bits_le_to_fe(&odd_bits)); let even_assigned = ctx.load_witness(even_val); let odd_assigned = ctx.load_witness(odd_val); - range.range_check(ctx, even_assigned, 16); - range.range_check(ctx, odd_assigned, 16); + self.range.range_check(ctx, even_assigned, 16); + self.range.range_check(ctx, odd_assigned, 16); Ok((even_assigned, odd_assigned)) } - pub fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { - layouter.assign_table( - || "spread table", - |mut table| { - for idx in 0..(1usize << self.num_bits_lookup) { - let val_dense = F::from(idx as u64); - let val_bits = fe_to_bits_le(&val_dense, 32); - let mut spread_bits = vec![false; val_bits.len() * 2]; - for i in 0..val_bits.len() { - spread_bits[2 * i] = val_bits[i]; - } - let val_spread: F = bits_le_to_fe(&spread_bits); - table.assign_cell( - || format!("table_dense at {}", idx), - self.table_dense, - idx, - || Value::known(val_dense), - )?; - table.assign_cell( - || format!("table_spread at {}", idx), - self.table_spread, - idx, - || Value::known(val_spread), - )?; - } - Ok(()) - }, - )?; - Ok(()) - } - fn spread_limb( - &mut self, - ctx: &mut Context, - // region: &mut Region<'a, F>, - gate: &impl GateInstructions, + &self, + (ctx_gate, ctx_dense, ctx_spread): ShaContexts, limb: &AssignedValue, ) -> Result, Error> { - let column_idx = self.num_limb_sum % self.num_advice_columns; + // let column_idx = self.num_limb_sum % self.num_advice_columns; // let assigned_dense_cell = region.assign_advice( // || format!("dense at offset {}", self.row_offset), // self.denses[column_idx], // self.row_offset, // || Value::known(*limb.value()), // )?; - // ctx.constrain_equal(&assigned_dense_cell, &limb); + let assigned_dense = ctx_dense.load_witness(*limb.value()); + ctx_gate.constrain_equal(&assigned_dense, limb); let spread_value: F = { let val_bits = fe_to_bits_le(limb.value(), 32); let mut spread_bits = vec![false; val_bits.len() * 2]; @@ -221,12 +211,16 @@ impl SpreadConfig { // self.row_offset, // || Value::known(spread_value), // )?; - let assigned_spread_value = ctx.load_witness(spread_value); + let assigned_spread_value = ctx_spread.load_witness(spread_value); // ctx.constrain_equal(&assigned_spread_cell, &assigned_spread)?; - self.num_limb_sum += 1; - if column_idx == self.num_advice_columns - 1 { - self.row_offset += 1; - } + // self.num_limb_sum += 1; + // if column_idx == self.num_advice_columns - 1 { + // self.row_offset += 1; + // } Ok(assigned_spread_value) } + + pub fn range(&self) -> &RangeChip { + self.range + } } From 0f2b6ffe5a2a31a504a2962632d34274c26be0f6 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 7 Sep 2023 13:41:07 +0200 Subject: [PATCH 03/33] enable spread table constraints --- Cargo.toml | 2 +- lightclient-circuits/src/builder.rs | 22 ++++------ .../src/gadget/crypto/sha256/builder.rs | 41 ++++++++++++++---- .../src/gadget/crypto/sha256/spread.rs | 42 +++++++------------ 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6d0cc812..b9d26687 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["lightclient-circuits", "prover", "eth-types"] +members = ["lightclient-circuits", "eth-types"] # Definition of benchmarks profile to use. [profile.bench] diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index 184f1d0d..bc313de3 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -37,7 +37,7 @@ impl SHAConfig { params.k - 1, degree, ); - let spread = SpreadConfig::configure(meta, range.lookup_bits(), 2); // TODO configure num_advice_columns + let spread = SpreadConfig::configure(meta, 8, 2); // TODO configure num_advice_columns set_var("UNUSABLE_ROWS", meta.minimum_rows().to_string()); range.gate.max_rows = (1 << degree) - meta.minimum_rows(); @@ -48,14 +48,12 @@ impl SHAConfig { pub struct ShaCircuitBuilder { pub builder: RefCell>, pub break_points: RefCell, - // pub sha256: RefCell>, pub range: RangeChip, } impl ShaCircuitBuilder { pub fn new( builder: SpreadThreadBuilder, - // sha256: RefCell>, range: RangeChip, break_points: Option, // synthesize_phase1: FnPhase1, @@ -63,7 +61,6 @@ impl ShaCircuitBuilder { Self { builder: RefCell::new(builder), break_points: RefCell::new(break_points.unwrap_or_default()), - // sha256, range, // synthesize_phase1: RefCell::new(Some(synthesize_phase1)), } @@ -76,11 +73,12 @@ impl ShaCircuitBuilder { } // re-usable function for synthesize + #[allow(clippy::type_complexity)] pub fn sub_synthesize( &self, config: &SHAConfig, layouter: &mut impl Layouter, - ) -> HashMap<(usize, usize), (circuit::Cell, usize)> { + ) -> Result, Error> { config .range .load_lookup_table(layouter) @@ -91,6 +89,8 @@ impl ShaCircuitBuilder { let mut assigned_advices = HashMap::new(); + config.spread.load(layouter)?; + layouter .assign_region( || "ShaCircuitBuilder generated circuit", @@ -101,14 +101,11 @@ impl ShaCircuitBuilder { } if !witness_gen_only { let mut builder = self.builder.borrow().clone(); - // let mut sha256 = self.sha256.borrow().clone(); - - // Do any custom synthesize functions in SecondPhase + let mut assignments = KeygenAssignments { ..Default::default() }; - // let rlp_chip = RlpChip::new(&self.range, Some(&rlc_chip)); - // f(&mut builder, rlp_chip, keccak_rlcs); + assignments = builder.assign_all( &config.range.gate, &config.range.lookup_advice, @@ -124,9 +121,8 @@ impl ShaCircuitBuilder { } Ok(()) }, - ) - .unwrap(); - assigned_advices + )?; + Ok(assigned_advices) } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index e38a246a..c3bd16c2 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -19,7 +19,7 @@ use itertools::Itertools; use super::SpreadConfig; -pub const SPREAD_PHASE: usize = 1; +pub const SPREAD_PHASE: usize = 0; #[derive(Clone, Debug, Default)] pub struct SpreadThreadBuilder { @@ -66,6 +66,9 @@ impl SpreadThreadBuilder { } pub fn main(&mut self) -> ShaContexts { + if self.threads_dense.is_empty() { + self.new_thread_dense(); + } if self.threads_spread.is_empty() { self.new_thread_spread(); } @@ -92,6 +95,13 @@ impl SpreadThreadBuilder { self.gate_builder.get_new_thread_id() } + pub fn new_thread_dense(&mut self) -> &mut Context { + let thread_id = self.get_new_thread_id(); + self.threads_dense + .push(Context::new(self.witness_gen_only(), thread_id)); + self.threads_dense.last_mut().unwrap() + } + pub fn new_thread_spread(&mut self) -> &mut Context { let thread_id = self.get_new_thread_id(); self.threads_spread @@ -128,7 +138,8 @@ impl SpreadThreadBuilder { let mut gate_index = 0; let mut num_limb_sum = 0; let mut row_offset = 0; - for (ctx_dense, ctx_spread) in self.threads_dense.iter().zip_eq(self.threads_spread.iter()) { + for (ctx_dense, ctx_spread) in self.threads_dense.iter().zip_eq(self.threads_spread.iter()) + { for (i, (&advice_dense, &advice_spread)) in ctx_dense .advice .iter() @@ -141,8 +152,14 @@ impl SpreadThreadBuilder { } else { Value::known(advice_dense) }; + let cell_dense = region - .assign_advice(|| "dense", spread.denses[column_idx], row_offset, || value_dense) + .assign_advice( + || "dense", + spread.denses[column_idx], + row_offset, + || value_dense, + ) .unwrap() .cell(); assigned_advices.insert((ctx_dense.context_id, i), (cell_dense, row_offset)); @@ -152,11 +169,17 @@ impl SpreadThreadBuilder { } else { Value::known(advice_spread) }; + let cell_spread = region - .assign_advice(|| "spread", spread.spreads[column_idx], row_offset, || value_spread) + .assign_advice( + || "spread", + spread.spreads[column_idx], + row_offset, + || value_spread, + ) .unwrap() .cell(); - assigned_advices.insert((ctx_spread.context_id, i), (cell_dense, row_offset)); + assigned_advices.insert((ctx_spread.context_id, i), (cell_spread, row_offset)); // if (q && row_offset + 3 > max_rows) || row_offset >= max_rows - 1 { // break_points.rlc.push(row_offset); @@ -191,10 +214,14 @@ impl SpreadThreadBuilder { row_offset += 1; } } - // in order to constrain equalities and assign constants, we copy the RLC equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it + // in order to constrain equalities and assign constants, we copy the Spread/Dense equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there let main_ctx = self.gate_builder.main(0); - for ctx in self.threads_spread.iter_mut() { + for ctx in self + .threads_spread + .iter_mut() + .chain(self.threads_dense.iter_mut()) + { main_ctx .advice_equality_constraints .append(&mut ctx.advice_equality_constraints); diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 721f1b13..0fab00e5 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -36,7 +36,11 @@ pub struct SpreadConfig { } impl SpreadConfig { - pub fn configure(meta: &mut ConstraintSystem, num_bits_lookup: usize, num_advice_columns: usize) -> Self { + pub fn configure( + meta: &mut ConstraintSystem, + num_bits_lookup: usize, + num_advice_columns: usize, + ) -> Self { debug_assert_eq!(16 % num_bits_lookup, 0); let denses = (0..num_advice_columns) @@ -124,9 +128,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { pub fn new(range: &'a RangeChip) -> Self { debug_assert_eq!(16 % range.lookup_bits(), 0); - Self { - range, - } + Self { range } } pub fn spread( &self, @@ -151,9 +153,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { ctx_gate.constrain_equal(&limbs_sum, dense); } let mut assigned_spread = ctx_gate.load_zero(); - // println!("dense: {:?}", dense.value()); for (idx, limb) in assigned_limbs.iter().enumerate() { - // println!("idx {}, limb {:?}", idx, limb.value()); let spread_limb = self.spread_limb((ctx_gate, ctx_dense, ctx_spread), limb)?; assigned_spread = gate.mul_add( ctx_gate, @@ -164,7 +164,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { } Ok(assigned_spread) } - + pub fn decompose_even_and_odd_unchecked( &self, ctx: &mut Context, @@ -188,13 +188,6 @@ impl<'a, F: Field> SpreadChip<'a, F> { (ctx_gate, ctx_dense, ctx_spread): ShaContexts, limb: &AssignedValue, ) -> Result, Error> { - // let column_idx = self.num_limb_sum % self.num_advice_columns; - // let assigned_dense_cell = region.assign_advice( - // || format!("dense at offset {}", self.row_offset), - // self.denses[column_idx], - // self.row_offset, - // || Value::known(*limb.value()), - // )?; let assigned_dense = ctx_dense.load_witness(*limb.value()); ctx_gate.constrain_equal(&assigned_dense, limb); let spread_value: F = { @@ -205,22 +198,15 @@ impl<'a, F: Field> SpreadChip<'a, F> { } bits_le_to_fe(&spread_bits) }; - // let assigned_spread_cell = region.assign_advice( - // || format!("spread at offset {}", self.row_offset), - // self.spreads[column_idx], - // self.row_offset, - // || Value::known(spread_value), - // )?; - let assigned_spread_value = ctx_spread.load_witness(spread_value); - // ctx.constrain_equal(&assigned_spread_cell, &assigned_spread)?; - // self.num_limb_sum += 1; - // if column_idx == self.num_advice_columns - 1 { - // self.row_offset += 1; - // } - Ok(assigned_spread_value) + + let assigned_spread = ctx_gate.load_witness(spread_value); + let assigned_spread_vanila = ctx_spread.load_witness(*assigned_spread.value()); + ctx_gate.constrain_equal(&assigned_spread_vanila, &assigned_spread); + + Ok(assigned_spread) } pub fn range(&self) -> &RangeChip { self.range - } + } } From 32aa4c839ff50ccf58040f45988e3413daaad21f Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 7 Sep 2023 13:49:49 +0200 Subject: [PATCH 04/33] contingent range check --- .../src/gadget/crypto/sha256.rs | 144 +++--------------- 1 file changed, 25 insertions(+), 119 deletions(-) diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 01a6451b..4b4ae392 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -43,14 +43,16 @@ pub trait HashInstructions { const BLOCK_SIZE: usize; const DIGEST_SIZE: usize; + /// Digests input using hash function and returns finilized output. + /// `MAX_INPUT_SIZE` is the maximum size of input that can be processed by the hash function. + /// `strict` flag indicates whether to perform range check on input bytes. fn digest( &self, ctx: ShaContexts, input: HashInput>, + strict: bool, ) -> Result, Error>; - // fn take_extra_assignments(&self) -> KeygenAssignments; - fn range(&self) -> &RangeChip; } @@ -76,11 +78,10 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { &self, (ctx_gate, ctx_dense, ctx_spread): ShaContexts, input: HashInput>, + strict: bool, ) -> Result, Error> { let assigned_input = input.into_assigned(ctx_gate); - // let mut extra_assignment = self.extra_assignments.borrow_mut(); - // let assigned_advices = &mut extra_assignment.assigned_advices; let mut assigned_input_bytes = assigned_input.to_vec(); let input_byte_size = assigned_input_bytes.len(); let input_byte_size_with_9 = input_byte_size + 9; @@ -125,10 +126,12 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { // assigned_input_bytes.push(assign_byte(0u8)); // } assert_eq!(assigned_input_bytes.len(), MAX_INPUT_SIZE); - // todo: only check for no already assigned - // for &assigned in assigned_input_bytes.iter() { - // range.range_check(ctx, assigned, 8); - // } + + if strict { + for &assigned in assigned_input_bytes.iter() { + range.range_check(ctx_gate, assigned, 8); + } + } let assigned_num_round = ctx_gate.load_witness(F::from(num_round as u64)); @@ -147,7 +150,6 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let new_assigned_hs_out = sha256_compression( (ctx_gate, ctx_dense, ctx_spread), &self.spread, - // &mut self.spread_config.borrow_mut(), assigned_input_word_at_round, assigned_last_state_vec.last().unwrap(), )?; @@ -312,113 +314,11 @@ mod test { challenges: Challenges>, } - // #[derive(Debug, Clone)] - // struct TestCircuit { - // builder: RefCell>, - // range: RangeChip, - // test_input: HashInput>, - // test_output: [u8; 32], - // _f: PhantomData, - // } - - // impl Circuit for TestCircuit - // where - // [(); Self::MAX_BYTE_SIZE]:, - // { - // type Config = TestConfig; - // type FloorPlanner = SimpleFloorPlanner; - - // fn without_witnesses(&self) -> Self { - // unimplemented!() - // } - - // fn configure(meta: &mut ConstraintSystem) -> Self::Config { - // let spread_config = SpreadConfig::::configure(meta, 8, 2); - // let range = RangeConfig::configure( - // meta, - // RangeStrategy::Vertical, - // &[Self::NUM_ADVICE], - // &[Self::NUM_LOOKUP_ADVICE], - // Self::NUM_FIXED, - // Self::LOOKUP_BITS, - // Self::K, - // ); - // Self::Config { - // spread_config, - // range, - // challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - // } - // } - - // fn synthesize( - // &self, - // config: Self::Config, - // mut layouter: impl Layouter, - // ) -> Result<(), Error> { - // config.range.load_lookup_table(&mut layouter)?; - // let mut first_pass = SKIP_FIRST_PASS; - // let sha256 = Sha256Chip::new(RefCell::new(config.spread_config), &self.range, None); - - // let mut builder = self.builder.borrow().clone(); - - // layouter.assign_region( - // || "sha2 test", - // |mut region| { - // if first_pass { - // first_pass = false; - // return Ok(()); - // } - - // sha256 - // .spread_config - // .borrow() - // .annotate_columns_in_region(&mut region); - - // let assigned_hash = result.output_bytes; - // println!( - // "assigned hash: {:?}", - // assigned_hash.map(|e| e.value().get_lower_32()) - // ); - - // let correct_output = self - // .test_output - // .map(|b| ctx.load_witness(F::from(b as u64))); - - // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { - // ctx.constrain_equal(hash, check); - // } - - // let extra_assignments = sha256.take_extra_assignments(); - - // builder.config(TestCircuit::::K, Some(0)); - // let params: FlexGateConfigParams = - // serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - // println!("params: {:?}", params); - - // let _ = builder.assign_all( - // &config.range.gate, - // &config.range.lookup_advice, - // &config.range.q_lookup, - // &mut region, - // extra_assignments, - // ); - - // Ok(()) - // }, - // ) - // } - // } - - // impl TestCircuit { - // const MAX_BYTE_SIZE: usize = 128; - // const NUM_ADVICE: usize = 700; - // const NUM_FIXED: usize = 1; - // const NUM_LOOKUP_ADVICE: usize = 55; - // const LOOKUP_BITS: usize = 8; - // const K: usize = 18; - // } - - fn get_circuit(k: usize, mut builder: SpreadThreadBuilder, input_vector: &[Vec]) -> ShaCircuitBuilder { + fn get_circuit( + k: usize, + mut builder: SpreadThreadBuilder, + input_vector: &[Vec], + ) -> ShaCircuitBuilder { let range = RangeChip::default(8); let spread = SpreadChip::new(&range); @@ -426,7 +326,13 @@ mod test { let (ctx_gate, ctx_dense, ctx_spread) = builder.main(); for input in input_vector { - let _ = sha256.digest::<128>((ctx_gate, ctx_dense, ctx_spread), input.as_slice().into_witness()).unwrap(); + let _ = sha256 + .digest::<128>( + (ctx_gate, ctx_dense, ctx_spread), + input.as_slice().into_witness(), + false + ) + .unwrap(); } builder.config(k, Some(0)); @@ -438,9 +344,9 @@ mod test { let k = 15; let test_input = vec![0u8; 64]; - + let builder = SpreadThreadBuilder::::new(false); - + let circuit = get_circuit(k, builder, &[test_input]); let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); From c794a9191caedea814df96a24fd6d80ec86b1f37 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 7 Sep 2023 15:32:51 +0200 Subject: [PATCH 05/33] fix max input bytes constant in sha256 chip --- .../src/gadget/crypto/sha256.rs | 121 +++------ .../src/gadget/crypto/sha256/compression.rs | 236 +++++++++--------- .../src/gadget/crypto/sha256/spread.rs | 24 +- lightclient-circuits/src/ssz_merkle.rs | 2 +- lightclient-circuits/src/sync_step_circuit.rs | 2 +- 5 files changed, 164 insertions(+), 221 deletions(-) diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 4b4ae392..66e91540 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -76,11 +76,20 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { fn digest( &self, - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, input: HashInput>, strict: bool, ) -> Result, Error> { - let assigned_input = input.into_assigned(ctx_gate); + let max_processed_bytes = { + let mut max_bytes = MAX_INPUT_SIZE + 9; + let remainder = max_bytes % 64; + if remainder != 0 { + max_bytes += 64 - remainder; + } + max_bytes + }; + + let assigned_input = input.into_assigned(ctx_base); let mut assigned_input_bytes = assigned_input.to_vec(); let input_byte_size = assigned_input_bytes.len(); @@ -89,8 +98,6 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let range = self.range; let gate = &range.gate; - assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); - let one_round_size = Self::BLOCK_SIZE; let num_round = if input_byte_size_with_9 % one_round_size == 0 { @@ -98,7 +105,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { } else { input_byte_size_with_9 / one_round_size + 1 }; - let max_round = MAX_INPUT_SIZE / one_round_size; + let max_round = max_processed_bytes / one_round_size; let padded_size = one_round_size * num_round; let zero_padding_byte_size = padded_size - input_byte_size_with_9; // let remaining_byte_size = MAX_INPUT_SIZE - padded_size; @@ -106,7 +113,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { // remaining_byte_size, // one_round_size * (max_round - num_round) // ); - let mut assign_byte = |byte: u8| ctx_gate.load_witness(F::from(byte as u64)); + let mut assign_byte = |byte: u8| ctx_base.load_witness(F::from(byte as u64)); assigned_input_bytes.push(assign_byte(0x80)); @@ -125,30 +132,29 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { // for _ in 0..remaining_byte_size { // assigned_input_bytes.push(assign_byte(0u8)); // } - assert_eq!(assigned_input_bytes.len(), MAX_INPUT_SIZE); if strict { for &assigned in assigned_input_bytes.iter() { - range.range_check(ctx_gate, assigned, 8); + range.range_check(ctx_base, assigned, 8); } } - let assigned_num_round = ctx_gate.load_witness(F::from(num_round as u64)); + let assigned_num_round = ctx_base.load_witness(F::from(num_round as u64)); // compute an initial state from the precomputed_input. let mut last_state = INIT_STATE; let mut assigned_last_state_vec = vec![last_state .iter() - .map(|state| ctx_gate.load_witness(F::from(*state as u64))) + .map(|state| ctx_base.load_witness(F::from(*state as u64))) .collect_vec()]; let mut num_processed_input = 0; - while num_processed_input < MAX_INPUT_SIZE { + while num_processed_input < max_processed_bytes { let assigned_input_word_at_round = &assigned_input_bytes[num_processed_input..(num_processed_input + one_round_size)]; let new_assigned_hs_out = sha256_compression( - (ctx_gate, ctx_dense, ctx_spread), + (ctx_base, ctx_dense, ctx_spread), &self.spread, assigned_input_word_at_round, assigned_last_state_vec.last().unwrap(), @@ -158,17 +164,17 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { num_processed_input += one_round_size; } - let zero = ctx_gate.load_zero(); + let zero = ctx_base.load_zero(); let mut output_h_out = vec![zero; 8]; for (n_round, assigned_state) in assigned_last_state_vec.into_iter().enumerate() { let selector = gate.is_equal( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(n_round as u64)), assigned_num_round, ); for i in 0..8 { output_h_out[i] = - gate.select(ctx_gate, assigned_state[i], output_h_out[i], selector) + gate.select(ctx_base, assigned_state[i], output_h_out[i], selector) } } let output_digest_bytes = output_h_out @@ -177,21 +183,21 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let be_bytes = assigned_word.value().get_lower_32().to_be_bytes().to_vec(); let assigned_bytes = (0..4) .map(|idx| { - let assigned = ctx_gate.load_witness(F::from(be_bytes[idx] as u64)); - range.range_check(ctx_gate, assigned, 8); + let assigned = ctx_base.load_witness(F::from(be_bytes[idx] as u64)); + range.range_check(ctx_base, assigned, 8); assigned }) .collect_vec(); - let mut sum = ctx_gate.load_zero(); + let mut sum = ctx_base.load_zero(); for (idx, assigned_byte) in assigned_bytes.iter().copied().enumerate() { sum = gate.mul_add( - ctx_gate, + ctx_base, assigned_byte, QuantumCell::Constant(F::from(1u64 << (24 - 8 * idx))), sum, ); } - ctx_gate.constrain_equal(&assigned_word, &sum); + ctx_base.constrain_equal(&assigned_word, &sum); assigned_bytes }) .collect_vec() @@ -199,83 +205,20 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { .unwrap(); let result = AssignedHashResult { - // input_len: assigned_input_byte_size, input_bytes: assigned_input_bytes, output_bytes: output_digest_bytes, }; Ok(result) } - /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. - /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, - /// use `set_extra_assignments` to restore at the start of region declartion. - /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. - // fn take_extra_assignments(&self) -> KeygenAssignments { - // self.extra_assignments.take() - // } - fn range(&self) -> &RangeChip { self.range } } impl<'a, F: Field> Sha256Chip<'a, F> { - pub fn new( - range: &'a RangeChip, - spread: SpreadChip<'a, F>, - // extra_assignments: Option>, - ) -> Self { - Self { - range, - spread, - // extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), - } - } - - // fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { - // self.extra_assignments = RefCell::new(extra_assignments); - // } - - fn assigned_cell2value( - &self, - ctx: &mut Context, - assigned_cell: &AssignedValueCell, - ) -> AssignedValue { - ctx.load_witness(assigned_cell.value()) - } - - fn upload_assigned_cells( - &self, - assigned_cells: impl IntoIterator>, - offset: &mut usize, - assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, - witness_gen_only: bool, - ) -> Vec> { - let assigned_values = assigned_cells - .into_iter() - .enumerate() - .map(|(i, assigned_cell)| { - let value = Assigned::Trivial(assigned_cell.value); - - let aval = AssignedValue { - value, - cell: (!witness_gen_only).then_some(ContextCell { - context_id: SHA256_CONTEXT_ID, - offset: *offset + i, - }), - }; - if !witness_gen_only { - // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell - assigned_advices.insert( - (SHA256_CONTEXT_ID, *offset + i), - (assigned_cell.cell(), usize::MAX), - ); - } - aval - }) - .collect_vec(); - *offset += assigned_values.len(); - assigned_values + pub fn new(range: &'a RangeChip, spread: SpreadChip<'a, F>) -> Self { + Self { range, spread } } } @@ -323,14 +266,14 @@ mod test { let spread = SpreadChip::new(&range); let sha256 = Sha256Chip::new(&range, spread); - let (ctx_gate, ctx_dense, ctx_spread) = builder.main(); + let (ctx_base, ctx_dense, ctx_spread) = builder.main(); for input in input_vector { let _ = sha256 - .digest::<128>( - (ctx_gate, ctx_dense, ctx_spread), + .digest::<64>( + (ctx_base, ctx_dense, ctx_spread), input.as_slice().into_witness(), - false + false, ) .unwrap(); } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index 3a4ec537..a338f75e 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -53,7 +53,7 @@ pub const INIT_STATE: [u32; NUM_STATE_WORD] = [ pub type SpreadU32<'a, F> = (AssignedValue, AssignedValue); pub fn sha256_compression<'a, 'b: 'a, F: Field>( - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, spread_chip: &SpreadChip<'a, F>, assigned_input_bytes: &[AssignedValue], pre_state_words: &[AssignedValue], @@ -67,10 +67,10 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( let mut message_u32s = assigned_input_bytes .chunks(4) .map(|bytes| { - let mut sum = ctx_gate.load_zero(); + let mut sum = ctx_base.load_zero(); for idx in 0..4 { sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(bytes[3 - idx]), QuantumCell::Constant(F::from(1u64 << (8 * idx))), QuantumCell::Existing(sum), @@ -88,28 +88,28 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // .collect_vec(); let mut message_spreads = message_u32s .iter() - .map(|dense| state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, dense)) + .map(|dense| state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, dense)) .collect::>, Error>>()?; for idx in 16..64 { // let w_2_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 2])?; // let w_15_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 15])?; let term1 = sigma_lower1( - (ctx_gate, ctx_dense, ctx_spread), + (ctx_base, ctx_dense, ctx_spread), spread_chip, &message_spreads[idx - 2], )?; let term3 = sigma_lower0( - (ctx_gate, ctx_dense, ctx_spread), + (ctx_base, ctx_dense, ctx_spread), spread_chip, &message_spreads[idx - 15], )?; // let term1_u32 = bits2u32(ctx, gate, &term1_bits); // let term3_u32 = bits2u32(ctx, gate, &term3_bits); let new_w = { - let mut sum = gate.add(ctx_gate, term1, message_u32s[idx - 7]); - sum = gate.add(ctx_gate, sum, term3); - sum = gate.add(ctx_gate, sum, message_u32s[idx - 16]); - mod_u32(ctx_gate, range, &sum) + let mut sum = gate.add(ctx_base, term1, message_u32s[idx - 7]); + sum = gate.add(ctx_base, sum, term3); + sum = gate.add(ctx_base, sum, message_u32s[idx - 16]); + mod_u32(ctx_base, range, &sum) }; // println!( // "idx {} term1 {:?}, term3 {:?}, new_w {:?}", @@ -120,7 +120,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // ); message_u32s.push(new_w); let new_w_spread = - state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &new_w)?; + state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &new_w)?; message_spreads.push(new_w_spread); // if idx <= 61 { // let new_w_bits = gate.num_to_bits(ctx, &new_w, 32); @@ -139,13 +139,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( pre_state_words[6], pre_state_words[7], ); - let mut a_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a)?; - let mut b_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &b)?; - let mut c_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &c)?; + let mut a_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &a)?; + let mut b_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &b)?; + let mut c_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &c)?; // let mut d_spread = state_to_spread_u32(ctx, range, ctx_spread, &d)?; - let mut e_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e)?; - let mut f_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &f)?; - let mut g_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &g)?; + let mut e_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &e)?; + let mut f_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &f)?; + let mut g_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &g)?; // let mut h_spread = state_to_spread_u32(ctx, range, ctx_spread, &h)?; // let mut a_bits = gate.num_to_bits(ctx, &a, 32); // let mut b_bits = gate.num_to_bits(ctx, &b, 32); @@ -153,17 +153,17 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let mut e_bits = gate.num_to_bits(ctx, &e, 32); // let mut f_bits = gate.num_to_bits(ctx, &f, 32); // let mut g_bits = gate.num_to_bits(ctx, &g, 32); - let mut t1 = ctx_gate.load_zero(); - let mut t2 = ctx_gate.load_zero(); + let mut t1 = ctx_base.load_zero(); + let mut t2 = ctx_base.load_zero(); for idx in 0..64 { t1 = { // let e_spread = state_to_spread_u32(ctx, range, ctx_spread, &e)?; // let f_spread = state_to_spread_u32(ctx, range, ctx_spread, &f)?; // let g_spread = state_to_spread_u32(ctx, range, ctx_spread, &g)?; let sigma_term = - sigma_upper1((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e_spread)?; + sigma_upper1((ctx_base, ctx_dense, ctx_spread), spread_chip, &e_spread)?; let ch_term = ch( - (ctx_gate, ctx_dense, ctx_spread), + (ctx_base, ctx_dense, ctx_spread), spread_chip, &e_spread, &f_spread, @@ -175,43 +175,43 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // sigma_term.value(), // ch_term.value() // ); - let add1 = gate.add(ctx_gate, h, sigma_term); + let add1 = gate.add(ctx_base, h, sigma_term); let add2 = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(add1), QuantumCell::Existing(ch_term), ); let add3 = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(add2), QuantumCell::Constant(F::from(ROUND_CONSTANTS[idx] as u64)), ); let add4 = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(add3), QuantumCell::Existing(message_u32s[idx]), ); - mod_u32(ctx_gate, range, &add4) + mod_u32(ctx_base, range, &add4) }; t2 = { // let a_spread = state_to_spread_u32(ctx, range, ctx_spread, &a)?; // let b_spread = state_to_spread_u32(ctx, range, ctx_spread, &b)?; // let c_spread = state_to_spread_u32(ctx, range, ctx_spread, &c)?; let sigma_term = - sigma_upper0((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a_spread)?; + sigma_upper0((ctx_base, ctx_dense, ctx_spread), spread_chip, &a_spread)?; let maj_term = maj( - (ctx_gate, ctx_dense, ctx_spread), + (ctx_base, ctx_dense, ctx_spread), spread_chip, &a_spread, &b_spread, &c_spread, )?; let add = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(sigma_term), QuantumCell::Existing(maj_term), ); - mod_u32(ctx_gate, range, &add) + mod_u32(ctx_base, range, &add) }; // println!("idx {}, t1 {:?}, t2 {:?}", idx, t1.value(), t2.value()); h = g; @@ -222,13 +222,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( f_spread = e_spread; e = { let add = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(d), QuantumCell::Existing(t1), ); - mod_u32(ctx_gate, range, &add) + mod_u32(ctx_base, range, &add) }; - e_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &e)?; + e_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &e)?; d = c; // d_spread = c_spread; c = b; @@ -237,13 +237,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( b_spread = a_spread; a = { let add = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(t1), QuantumCell::Existing(t2), ); - mod_u32(ctx_gate, range, &add) + mod_u32(ctx_base, range, &add) }; - a_spread = state_to_spread_u32((ctx_gate, ctx_dense, ctx_spread), spread_chip, &a)?; + a_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &a)?; } let new_states = vec![a, b, c, d, e, f, g, h]; let next_state_words = new_states @@ -251,38 +251,38 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( .copied() .zip(pre_state_words.iter().copied()) .map(|(x, y)| { - let add = gate.add(ctx_gate, QuantumCell::Existing(x), QuantumCell::Existing(y)); + let add = gate.add(ctx_base, QuantumCell::Existing(x), QuantumCell::Existing(y)); // println!( // "pre {:?} new {:?} add {:?}", // y.value(), // x.value(), // add.value() // ); - mod_u32(ctx_gate, range, &add) + mod_u32(ctx_base, range, &add) }) .collect_vec(); Ok(next_state_words) } fn state_to_spread_u32<'a, F: Field>( - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &AssignedValue, ) -> Result, Error> { let gate = spread_chip.range().gate(); let lo = F::from((x.value().get_lower_32() & ((1 << 16) - 1)) as u64); let hi = F::from((x.value().get_lower_32() >> 16) as u64); - let assigned_lo = ctx_gate.load_witness(lo); - let assigned_hi = ctx_gate.load_witness(hi); + let assigned_lo = ctx_base.load_witness(lo); + let assigned_hi = ctx_base.load_witness(hi); let composed = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(assigned_lo), ); - ctx_gate.constrain_equal(x, &composed); - let lo_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &assigned_lo)?; - let hi_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &assigned_hi)?; + ctx_base.constrain_equal(x, &composed); + let lo_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &assigned_lo)?; + let hi_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &assigned_hi)?; Ok((lo_spread, hi_spread)) } @@ -308,7 +308,7 @@ fn mod_u32<'a, 'b: 'a, F: Field>( } fn ch<'a, 'b: 'a, F: Field>( - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -320,92 +320,92 @@ fn ch<'a, 'b: 'a, F: Field>( let range = spread_chip.range(); let gate = range.gate(); let p_lo = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), ); let p_hi = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), ); const MASK_EVEN_32: u64 = 0x55555555; - let x_neg_lo = gate.neg(ctx_gate, QuantumCell::Existing(x_lo)); - let x_neg_hi = gate.neg(ctx_gate, QuantumCell::Existing(x_hi)); + let x_neg_lo = gate.neg(ctx_base, QuantumCell::Existing(x_lo)); + let x_neg_hi = gate.neg(ctx_base, QuantumCell::Existing(x_hi)); let q_lo = three_add( - ctx_gate, + ctx_base, gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_lo), QuantumCell::Existing(z_lo), ); let q_hi = three_add( - ctx_gate, + ctx_base, gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_hi), QuantumCell::Existing(z_hi), ); - let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &p_lo)?; - let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &p_hi)?; - let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &q_lo)?; - let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &q_hi)?; + let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &p_lo)?; + let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &p_hi)?; + let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_lo)?; + let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_hi)?; { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_lo_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_lo_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_lo_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_lo_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &p_lo); + ctx_base.constrain_equal(&sum, &p_lo); } { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_hi_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &p_hi_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_hi_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_hi_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &p_hi); + ctx_base.constrain_equal(&sum, &p_hi); } { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_lo_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_lo_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_lo_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_lo_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &q_lo); + ctx_base.constrain_equal(&sum, &q_lo); } { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_hi_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &q_hi_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_hi_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_hi_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &q_hi); + ctx_base.constrain_equal(&sum, &q_hi); } let out_lo = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(p_lo_odd), QuantumCell::Existing(q_lo_odd), ); let out_hi = gate.add( - ctx_gate, + ctx_base, QuantumCell::Existing(p_hi_odd), QuantumCell::Existing(q_hi_odd), ); let out = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(out_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(out_lo), @@ -414,7 +414,7 @@ fn ch<'a, 'b: 'a, F: Field>( } fn maj<'a, 'b: 'a, F: Field>( - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -426,45 +426,45 @@ fn maj<'a, 'b: 'a, F: Field>( let range = spread_chip.range(); let gate = range.gate(); let m_lo = three_add( - ctx_gate, + ctx_base, range.gate(), QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), QuantumCell::Existing(z_lo), ); let m_hi = three_add( - ctx_gate, + ctx_base, range.gate(), QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), QuantumCell::Existing(z_hi), ); - let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &m_lo)?; - let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &m_hi)?; + let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_lo)?; + let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_hi)?; { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_lo_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_lo_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_lo_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_lo_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &m_lo); + ctx_base.constrain_equal(&sum, &m_lo); } { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_hi_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &m_hi_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_hi_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_hi_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &m_hi); + ctx_base.constrain_equal(&sum, &m_hi); } let m = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(m_hi_odd), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(m_lo_odd), @@ -585,7 +585,7 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( #[allow(clippy::too_many_arguments)] fn sigma_generic<'a, 'b: 'a, F: Field>( - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, starts: &[usize; 4], @@ -611,7 +611,7 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let assigned_spread = spread_config.spread(ctx, range, &assigned_dense)?; // let result: Result, Error> = Ok(assigned_spread); - ctx_gate.load_witness(fe_val) + ctx_base.load_witness(fe_val) }; let assigned_a = assign_bits(&bits_val, starts[0], ends[0], paddings[0]); let assigned_b = assign_bits(&bits_val, starts[1], ends[1], paddings[1]); @@ -620,30 +620,30 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( { let mut sum = assigned_a; sum = gate.mul_add( - ctx_gate, + ctx_base, assigned_b, QuantumCell::Constant(F::from(1 << (2 * starts[1]))), sum, ); sum = gate.mul_add( - ctx_gate, + ctx_base, assigned_c, QuantumCell::Constant(F::from(1 << (2 * starts[2]))), sum, ); sum = gate.mul_add( - ctx_gate, + ctx_base, assigned_d, QuantumCell::Constant(F::from(1 << (2 * starts[3]))), sum, ); let x_composed = gate.mul_add( - ctx_gate, + ctx_base, x_spread.1, QuantumCell::Constant(F::from(1 << 32)), x_spread.0, ); - ctx_gate.constrain_equal(&x_composed, &sum); + ctx_base.constrain_equal(&x_composed, &sum); }; let r_spread = { @@ -651,63 +651,63 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let b_coeff = F::from(1u64 << 0 + 1u64 << 42 + 1u64 << 24); // let c_coeff = F::from(1u64 << 22 + 1u64 << 0 + 1u64 << 46); // let d_coeff = F::from(1u64 << 40 + 1u64 << 18 + 1u64 << 0); - let mut sum = ctx_gate.load_zero(); + let mut sum = ctx_base.load_zero(); // let assigned_a_spread = spread_config.spread(ctx, range, &assigned_a)?; // let assigned_b_spread = spread_config.spread(ctx, range, &assigned_b)?; // let assigned_c_spread = spread_config.spread(ctx, range, &assigned_c)?; // let assigned_d_spread = spread_config.spread(ctx, range, &assigned_d)?; - sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[0]), assigned_a, sum); - sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[1]), assigned_b, sum); - sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[2]), assigned_c, sum); - sum = gate.mul_add(ctx_gate, QuantumCell::Constant(coeffs[3]), assigned_d, sum); + sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[0]), assigned_a, sum); + sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[1]), assigned_b, sum); + sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[2]), assigned_c, sum); + sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[3]), assigned_d, sum); sum }; let (r_lo, r_hi) = { let lo = F::from(r_spread.value().get_lower_32() as u64); let hi = F::from(((r_spread.value().get_lower_128() >> 32) & ((1u128 << 32) - 1)) as u64); - let assigned_lo = ctx_gate.load_witness(lo); - let assigned_hi = ctx_gate.load_witness(hi); - range.range_check(ctx_gate, assigned_lo, 32); - range.range_check(ctx_gate, assigned_hi, 32); + let assigned_lo = ctx_base.load_witness(lo); + let assigned_hi = ctx_base.load_witness(hi); + range.range_check(ctx_base, assigned_lo, 32); + range.range_check(ctx_base, assigned_hi, 32); let composed = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 32)), QuantumCell::Existing(assigned_lo), ); - ctx_gate.constrain_equal(&r_spread, &composed); + ctx_base.constrain_equal(&r_spread, &composed); (assigned_lo, assigned_hi) }; - let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &r_lo)?; - let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_gate, &r_hi)?; + let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &r_lo)?; + let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &r_hi)?; { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_lo_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_lo_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_lo_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_lo_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &r_lo); + ctx_base.constrain_equal(&sum, &r_lo); } { - let even_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_hi_even)?; - let odd_spread = spread_chip.spread((ctx_gate, ctx_dense, ctx_spread), &r_hi_odd)?; + let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_hi_even)?; + let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_hi_odd)?; let sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_gate.constrain_equal(&sum, &r_hi); + ctx_base.constrain_equal(&sum, &r_hi); } let r = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(r_hi_even), QuantumCell::Constant(F::from(1 << 16)), QuantumCell::Existing(r_lo_even), diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 0fab00e5..2cf1240b 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -132,31 +132,31 @@ impl<'a, F: Field> SpreadChip<'a, F> { } pub fn spread( &self, - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, dense: &AssignedValue, ) -> Result, Error> { let gate = self.range.gate(); let limb_bits = self.range.lookup_bits(); let num_limbs = 16 / limb_bits; let limbs = decompose(dense.value(), num_limbs, limb_bits); - let assigned_limbs = ctx_gate.assign_witnesses(limbs); + let assigned_limbs = ctx_base.assign_witnesses(limbs); { - let mut limbs_sum = ctx_gate.load_zero(); + let mut limbs_sum = ctx_base.load_zero(); for (idx, limb) in assigned_limbs.iter().copied().enumerate() { limbs_sum = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(limb), QuantumCell::Constant(F::from(1 << (limb_bits * idx))), QuantumCell::Existing(limbs_sum), ); } - ctx_gate.constrain_equal(&limbs_sum, dense); + ctx_base.constrain_equal(&limbs_sum, dense); } - let mut assigned_spread = ctx_gate.load_zero(); + let mut assigned_spread = ctx_base.load_zero(); for (idx, limb) in assigned_limbs.iter().enumerate() { - let spread_limb = self.spread_limb((ctx_gate, ctx_dense, ctx_spread), limb)?; + let spread_limb = self.spread_limb((ctx_base, ctx_dense, ctx_spread), limb)?; assigned_spread = gate.mul_add( - ctx_gate, + ctx_base, QuantumCell::Existing(spread_limb), QuantumCell::Constant(F::from(1 << (2 * limb_bits * idx))), QuantumCell::Existing(assigned_spread), @@ -185,11 +185,11 @@ impl<'a, F: Field> SpreadChip<'a, F> { fn spread_limb( &self, - (ctx_gate, ctx_dense, ctx_spread): ShaContexts, + (ctx_base, ctx_dense, ctx_spread): ShaContexts, limb: &AssignedValue, ) -> Result, Error> { let assigned_dense = ctx_dense.load_witness(*limb.value()); - ctx_gate.constrain_equal(&assigned_dense, limb); + ctx_base.constrain_equal(&assigned_dense, limb); let spread_value: F = { let val_bits = fe_to_bits_le(limb.value(), 32); let mut spread_bits = vec![false; val_bits.len() * 2]; @@ -199,9 +199,9 @@ impl<'a, F: Field> SpreadChip<'a, F> { bits_le_to_fe(&spread_bits) }; - let assigned_spread = ctx_gate.load_witness(spread_value); + let assigned_spread = ctx_base.load_witness(spread_value); let assigned_spread_vanila = ctx_spread.load_witness(*assigned_spread.value()); - ctx_gate.constrain_equal(&assigned_spread_vanila, &assigned_spread); + ctx_base.constrain_equal(&assigned_spread_vanila, &assigned_spread); Ok(assigned_spread) } diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index e1ea3bb5..e551c6f6 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -318,7 +318,7 @@ // for witness in proof.into_iter() { // computed_hash = hasher -// .digest::<128>( +// .digest::<64>( // if gindex % 2 == 0 { // HashInput::TwoToOne(computed_hash, witness) // } else { diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 02ed4e8d..017874dc 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -201,7 +201,7 @@ // }; // let signing_root = sha256_chip -// .digest::<128>( +// .digest::<64>( // HashInput::TwoToOne( // attested_header.into(), // self.domain.to_vec().into_witness(), From 3635b1155affaeca2ce4d3660b5b1a6aacad1137 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 7 Sep 2023 17:10:42 +0200 Subject: [PATCH 06/33] refactor sha256 chip, uncomment hash2curve --- lightclient-circuits/src/builder.rs | 6 +- .../src/gadget/crypto/hash2curve.rs | 1474 ++++++++--------- lightclient-circuits/src/gadget/crypto/mod.rs | 2 +- .../src/gadget/crypto/sha256.rs | 33 +- .../src/gadget/crypto/sha256/builder.rs | 18 +- .../src/gadget/crypto/sha256/compression.rs | 120 +- .../src/gadget/crypto/sha256/spread.rs | 10 +- .../src/gadget/crypto/util.rs | 198 +-- 8 files changed, 895 insertions(+), 966 deletions(-) diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index bc313de3..6010e9b5 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -15,7 +15,7 @@ use halo2_proofs::{ }; use crate::{ - gadget::crypto::{Sha256Chip, SpreadConfig, SpreadThreadBuilder}, + gadget::crypto::{Sha256Chip, SpreadConfig, ShaThreadBuilder}, sha256_circuit::Sha256CircuitConfig, }; @@ -46,14 +46,14 @@ impl SHAConfig { } pub struct ShaCircuitBuilder { - pub builder: RefCell>, + pub builder: RefCell>, pub break_points: RefCell, pub range: RangeChip, } impl ShaCircuitBuilder { pub fn new( - builder: SpreadThreadBuilder, + builder: ShaThreadBuilder, range: RangeChip, break_points: Option, // synthesize_phase1: FnPhase1, diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 51f20f53..86af0e62 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -1,779 +1,695 @@ -// // //! The chip that implements `draft-irtf-cfrg-hash-to-curve-16` -// // //! https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16 - -// use std::ops::Deref; -// use std::{cell::RefCell, iter, marker::PhantomData}; - -// use crate::util::AsBits; -// use crate::{ -// util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, -// witness::HashInput, -// }; -// use eth_types::{AppCurveExt, Field, HashCurveExt, Spec}; -// use halo2_base::{ -// safe_types::{GateInstructions, RangeInstructions, SafeBytes32, SafeTypeChip}, -// utils::ScalarField, -// AssignedValue, Context, QuantumCell, -// }; -// use halo2_ecc::{ -// bigint::{CRTInteger, ProperUint}, -// ecc::EccChip, -// fields::{ -// fp::FpChip, fp2, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField, -// Selectable, -// }, -// }; -// use halo2_proofs::{circuit::Region, plonk::Error}; -// use halo2curves::group::GroupEncoding; -// use itertools::Itertools; -// use num_bigint::{BigInt, BigUint}; -// use pasta_curves::arithmetic::SqrtRatio; - -// use super::{ -// sha256::HashChip, -// util::{fp2_sgn0, i2osp, strxor}, -// Fp2Point, G1Point, G2Point, -// }; - -// const G2_EXT_DEGREE: usize = 2; - -// // L = ceil((ceil(log2(p)) + k) / 8) (see section 5 of ietf draft link above) -// const L: usize = 64; - -// #[allow(type_alias_bounds)] -// pub type Fp2Chip<'chip, F, C: AppCurveExt, Fp = ::Fp> = -// fp2::Fp2Chip<'chip, F, FpChip<'chip, F, Fp>, C::Fq>; - -// #[derive(Debug)] -// pub struct HashToCurveChip<'a, S: Spec, F: Field, HC: HashChip> { -// hash_chip: &'a HC, -// _f: PhantomData, -// _spec: PhantomData, -// } - -// impl<'a, S: Spec, F: Field, HC: HashChip + 'a> HashToCurveChip<'a, S, F, HC> { -// pub fn new(hash_chip: &'a HC) -> Self { -// Self { -// hash_chip, -// _f: PhantomData, -// _spec: PhantomData, -// } -// } - -// pub fn hash_to_curve( -// &self, -// msg: HashInput>, -// fp_chip: &FpChip, -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// cache: &mut HashToCurveCache, -// ) -> Result, Error> -// where -// C::Fq: FieldExtConstructor, -// { -// let u = self.hash_to_field::(msg, fp_chip, ctx, region, cache)?; -// let p = self.map_to_curve::(u, fp_chip, ctx, cache)?; -// Ok(p) -// } - -// /// Implements [section 5.2 of `draft-irtf-cfrg-hash-to-curve-16`][hash_to_field]. -// /// -// /// [hash_to_field]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.2 -// /// -// /// References: -// /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L49 -// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L128 -// /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L11 -// fn hash_to_field( -// &self, -// msg: HashInput>, -// fp_chip: &FpChip, -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// cache: &mut HashToCurveCache, -// ) -> Result<[Fp2Point; 2], Error> { -// // -// let range = self.hash_chip.range(); -// let gate = range.gate(); -// let safe_types = SafeTypeChip::new(range); - -// // constants -// let zero = ctx.load_zero(); -// let one = ctx.load_constant(F::one()); - -// let assigned_msg = msg.into_assigned(ctx).to_vec(); - -// let len_in_bytes = 2 * G2_EXT_DEGREE * L; -// let extended_msg = Self::expand_message_xmd( -// assigned_msg, -// len_in_bytes, -// self.hash_chip, -// ctx, -// region, -// cache, -// )?; - -// let limb_bases = cache.binary_bases.get_or_insert_with(|| { -// C::limb_bytes_bases() -// .into_iter() -// .map(|base| ctx.load_constant(base)) -// .collect() -// }); - -// // 2^256 -// let two_pow_256 = fp_chip.load_constant_uint(ctx, BigUint::from(2u8).pow(256)); -// let fq_bytes = C::BYTES_COMPRESSED / 2; - -// let mut fst = true; -// let u = extended_msg -// .chunks(L) -// .chunks(G2_EXT_DEGREE) -// .into_iter() -// .map(|elm_chunk| { -// FieldVector( -// elm_chunk -// .map(|tv| { -// let mut buf = vec![zero; fq_bytes]; -// let rem = fq_bytes - 32; -// buf[rem..].copy_from_slice(&tv[..32]); -// let lo = decode_into_field_be::( -// buf.to_vec(), -// &fp_chip.limb_bases, -// gate, -// ctx, -// ); - -// buf[rem..].copy_from_slice(&tv[32..]); -// let hi = decode_into_field_be::( -// buf.to_vec(), -// &fp_chip.limb_bases, -// gate, -// ctx, -// ); - -// let lo_2_256 = fp_chip.mul_no_carry(ctx, lo, two_pow_256.clone()); -// let lo_2_356_hi = fp_chip.add_no_carry(ctx, lo_2_256, hi); -// fp_chip.carry_mod(ctx, lo_2_356_hi) -// }) -// .collect_vec(), -// ) -// }) -// .collect_vec() -// .try_into() -// .unwrap(); - -// Ok(u) -// } - -// pub fn map_to_curve( -// &self, -// u: [Fp2Point; 2], -// fp_chip: &FpChip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> Result, Error> -// where -// C::Fq: FieldExtConstructor, -// { -// let fp2_chip = Fp2Chip::<_, C>::new(fp_chip); -// let ecc_chip = EccChip::>::new(&fp2_chip); - -// let [u0, u1] = u; - -// let p1 = Self::map_to_curve_simple_swu::(u0, &fp2_chip, ctx, cache); -// let p2 = Self::map_to_curve_simple_swu::(u1, &fp2_chip, ctx, cache); - -// let p_sum = ecc_chip.add_unequal(ctx, p1, p2, false); - -// let iso_p = Self::isogeny_map::(p_sum, &fp2_chip, ctx, cache); - -// Ok(Self::clear_cofactor::(iso_p, &ecc_chip, ctx, cache)) -// } - -// /// Implements [section 5.3 of `draft-irtf-cfrg-hash-to-curve-16`][expand_message_xmd]. -// /// -// /// [expand_message_xmd]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3 -// /// -// /// References: -// /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L89 -// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L63 -// /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L139 -// fn expand_message_xmd( -// msg: Vec>, -// len_in_bytes: usize, -// hash_chip: &HC, -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// cache: &mut HashToCurveCache, -// ) -> Result>, Error> { -// let range = hash_chip.range(); -// let gate = range.gate(); - -// // constants -// // const MAX_INPUT_SIZE: usize = 192; -// let zero = ctx.load_zero(); -// let one = ctx.load_constant(F::one()); - -// // assign DST bytes & cache them -// let dst_len = ctx.load_constant(F::from(S::DST.len() as u64)); -// let dst_prime = cache -// .dst_with_len -// .get_or_insert_with(|| { -// S::DST -// .iter() -// .map(|&b| ctx.load_constant(F::from(b as u64))) -// .chain(iter::once(dst_len)) -// .collect() -// }) -// .clone(); - -// // padding and length strings -// let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these -// let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| ctx.load_constant(b)); - -// // compute blocks -// let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); -// let mut b_vals = Vec::with_capacity(ell); -// let msg_prime = z_pad -// .into_iter() -// .chain(msg) -// .chain(l_i_b_str) -// .chain(iter::once(zero)) -// .chain(dst_prime.clone()); - -// let b_0 = hash_chip -// .digest::<192>(msg_prime.into(), ctx, region)? -// .output_bytes; - -// b_vals.insert( -// 0, -// hash_chip -// .digest::<128>( -// b_0.into_iter() -// .chain(iter::once(one)) -// .chain(dst_prime.clone()) -// .into(), -// ctx, -// region, -// )? -// .output_bytes, -// ); - -// for i in 1..ell { -// b_vals.insert( -// i, -// hash_chip -// .digest::<128>( -// strxor(b_0, b_vals[i - 1], gate, ctx) -// .into_iter() -// .chain(iter::once(ctx.load_constant(F::from(i as u64 + 1)))) -// .chain(dst_prime.clone()) -// .into(), -// ctx, -// region, -// )? -// .output_bytes, -// ); -// } - -// let uniform_bytes = b_vals -// .into_iter() -// .flatten() -// .take(len_in_bytes) -// .collect_vec(); - -// Ok(uniform_bytes) -// } - -// /// Implements [section 6.2 of draft-irtf-cfrg-hash-to-curve-16][map_to_curve_simple_swu] -// /// -// /// [map_to_curve_simple_swu]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.1-3 -// /// -// /// References: -// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/hash_to_curve/map_g2.rs#L388 -// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/weierstrass.ts#L1175 -// fn map_to_curve_simple_swu( -// u: Fp2Point, -// fp2_chip: &Fp2Chip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// let fp_chip = fp2_chip.fp_chip(); -// let gate = fp_chip.range().gate(); - -// // constants -// let swu_a = cache -// .swu_a -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_A)) -// .deref() -// .clone(); -// let swu_b = cache -// .swu_b -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_B)) -// .deref() -// .clone(); -// let swu_z = cache -// .swu_z -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)) -// .deref() -// .clone(); -// let fq2_one = cache -// .fq2_one -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::one())) -// .deref() -// .clone(); - -// let usq = fp2_chip.mul(ctx, u.clone(), u.clone()); // 1. tv1 = u^2 -// let z_usq = fp2_chip.mul(ctx, usq, swu_z.clone()); // 2. tv1 = Z * tv1 -// let zsq_u4 = fp2_chip.mul(ctx, z_usq.clone(), z_usq.clone()); // 3. tv2 = tv1^2 -// let tv2 = fp2_chip.add(ctx, zsq_u4, z_usq.clone()); // 4. tv2 = tv2 + tv1 -// let tv3 = fp2_chip.add_no_carry(ctx, tv2.clone(), fq2_one); // 5. tv3 = tv2 + 1 -// let x0_num = fp2_chip.mul(ctx, tv3, swu_b.clone()); // 6. tv3 = B * tv3 - -// let x_den = { -// let tv2_is_zero = fp2_chip.is_zero(ctx, tv2.clone()); -// let tv2_neg = fp2_chip.negate(ctx, tv2); - -// fp2_chip.select(ctx, swu_z, tv2_neg, tv2_is_zero) // tv2_is_zero ? swu_z : tv2_neg -// }; // 7. tv4 = tv2 != 0 ? -tv2 : Z - -// let x_den = fp2_chip.mul(ctx, x_den, swu_a.clone()); // 8. tv4 = A * tv4 - -// let x0_num_sqr = fp2_chip.mul(ctx, x0_num.clone(), x0_num.clone()); // 9. tv2 = tv3^2 -// let x_densq = fp2_chip.mul(ctx, x_den.clone(), x_den.clone()); // 10. tv6 = tv4^2 -// let ax_densq = fp2_chip.mul(ctx, x_densq.clone(), swu_a); // 11. tv5 = A * tv6 -// let tv2 = fp2_chip.add_no_carry(ctx, x0_num_sqr, ax_densq); // 12. tv2 = tv2 + tv5 -// let tv2 = fp2_chip.mul(ctx, tv2, x0_num.clone()); // 13. tv2 = tv2 * tv3 -// let gx_den = fp2_chip.mul(ctx, x_densq, x_den.clone()); // 14. tv6 = tv6 * tv4 -// let tv5 = fp2_chip.mul(ctx, gx_den.clone(), swu_b); // 15. tv5 = B * tv6 -// let gx0_num = fp2_chip.add(ctx, tv2, tv5); // 16. tv2 = tv2 + tv5 - -// let x = fp2_chip.mul(ctx, &z_usq, &x0_num); // 17. x = tv1 * tv3 - -// let (is_gx1_square, y1) = -// Self::sqrt_ratio::(gx0_num, gx_den, u.clone(), fp2_chip, ctx, cache); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6) - -// let y = fp2_chip.mul(ctx, &z_usq, &u); // 19. y = tv1 * u -// let y = fp2_chip.mul(ctx, y, y1.clone()); // 20. y = y * y1 -// let x = fp2_chip.select(ctx, x0_num, x, is_gx1_square); // 21. x = is_gx1_square ? tv3 : x -// let y = fp2_chip.select(ctx, y1, y, is_gx1_square); // 22. y = is_gx1_square ? y1 : y - -// let to_neg = { -// let u_sgn = fp2_sgn0::<_, C>(u, ctx, fp_chip); -// let y_sgn = fp2_sgn0::<_, C>(y.clone(), ctx, fp_chip); -// gate.xor(ctx, u_sgn, y_sgn) -// }; // 23. e1 = sgn0(u) == sgn0(y) // we implement an opposite condition: !e1 = sgn0(u) ^ sgn0(y) - -// let y_neg = fp2_chip.negate(ctx, y.clone()); -// let y = fp2_chip.select(ctx, y_neg, y, to_neg); // 24. y = !e1 ? -y : y -// let x = fp2_chip.divide(ctx, x, x_den); // 25. x = x / tv4 - -// G2Point::new(x, y) -// } - -// /// Implements [Appendix E.3 of draft-irtf-cfrg-hash-to-curve-16][isogeny_map_g2] -// /// -// /// [isogeny_map_g2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-E.3 -// /// -// /// References: -// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L1153 -// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L167 -// pub fn isogeny_map( -// p: G2Point, -// fp2_chip: &Fp2Chip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// // constants -// let iso_coeffs = cache -// .iso_coeffs -// .get_or_insert_with(|| { -// [ -// C::ISO_XNUM.to_vec(), -// C::ISO_XDEN.to_vec(), -// C::ISO_YNUM.to_vec(), -// C::ISO_YDEN.to_vec(), -// ] -// .map(|coeffs| { -// coeffs -// .into_iter() -// .map(|iso| fp2_chip.load_constant(ctx, iso)) -// .collect_vec() -// }) -// }) -// .deref() -// .clone(); - -// let fq2_zero = cache -// .fq2_zero -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::zero())) -// .deref() -// .clone(); - -// let [x_num, x_den, y_num, y_den] = iso_coeffs.map(|coeffs| { -// coeffs.into_iter().fold(fq2_zero.clone(), |acc, v| { -// let acc = fp2_chip.mul(ctx, acc, &p.x); -// let no_carry = fp2_chip.add_no_carry(ctx, acc, v); -// fp2_chip.carry_mod(ctx, no_carry) -// }) -// }); - -// let x = { fp2_chip.divide_unsafe(ctx, x_num, x_den) }; - -// let y = { -// let tv = fp2_chip.divide_unsafe(ctx, y_num, y_den); -// fp2_chip.mul(ctx, &p.y, tv) -// }; - -// G2Point::new(x, y) -// } - -// /// Implements [Appendix G.3 of draft-irtf-cfrg-hash-to-curve-16][clear_cofactor] -// /// -// /// [clear_cofactor]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-G.3 -// /// -// /// References: -// /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L956 -// /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/bls12-381.ts#L1111 -// fn clear_cofactor( -// p: G2Point, -// ecc_chip: &EccChip>, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// let t1 = { -// // scalar multiplication is very expensive in terms of rows used -// // TODO: is there other ways to clear cofactor that avoid scalar multiplication? -// let tv = Self::mul_by_bls_x::(p.clone(), ecc_chip, ctx, cache); -// ecc_chip.negate(ctx, tv) -// }; // [-x]P - -// let t2 = Self::psi::(p.clone(), ecc_chip.field_chip(), ctx, cache); // Ψ(P) - -// let t3 = ecc_chip.double(ctx, p.clone()); // 2P -// let t3 = Self::psi2::(t3, ecc_chip.field_chip(), ctx, cache); // Ψ²(2P) -// let t3 = ecc_chip.sub_unequal(ctx, t3, t2.clone(), false); // Ψ²(2P) - Ψ(P) - -// let t2 = ecc_chip.add_unequal(ctx, t1.clone(), t2, false); // [-x]P + Ψ(P) -// let t2 = { -// let tv = Self::mul_by_bls_x::(t2, ecc_chip, ctx, cache); -// ecc_chip.negate(ctx, tv) -// }; // [x²]P - [x]Ψ(P) - -// // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) -// let t3 = ecc_chip.add_unequal(ctx, t3, t2, false); -// // Ψ²(2P) - Ψ(Plet ) + [x²]P - [x]Ψ(P) + [x]P -// let t3 = ecc_chip.sub_unequal(ctx, t3, t1, false); - -// // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P => [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P) -// ecc_chip.sub_unequal(ctx, t3, p, false) -// } - -// // Implements [Appendix F.2.1 of draft-irtf-cfrg-hash-to-curve-16][sqrt_ration] -// // -// // [sqrt_ration]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.2.1 -// fn sqrt_ratio( -// num: Fp2Point, -// div: Fp2Point, -// u: Fp2Point, -// fp2_chip: &Fp2Chip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> (AssignedValue, Fp2Point) -// where -// C::Fq: FieldExtConstructor, -// { -// let num_v = Self::assigned_fq2_to_value::(&num); -// let div_v = Self::assigned_fq2_to_value::(&div); -// let u = Self::assigned_fq2_to_value::(&u); - -// let (is_square, y) = C::Fq::sqrt_ratio(&num_v, &div_v); - -// let is_square = ctx.load_witness(F::from(is_square.unwrap_u8() as u64)); -// fp2_chip.fp_chip().gate().assert_bit(ctx, is_square); // assert is_square is boolean - -// let y_assigned = fp2_chip.load_private(ctx, y); -// let y_sqr = fp2_chip.mul(ctx, y_assigned.clone(), y_assigned.clone()); // y_sqr = y1^2 - -// let ratio = fp2_chip.divide(ctx, num, div); // r = u / v - -// let swu_z = cache -// .swu_z -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)); -// let ratio_z = fp2_chip.mul(ctx, ratio.clone(), swu_z.clone()); // r_z = r * z - -// let y_check = fp2_chip.select(ctx, ratio, ratio_z, is_square); // y_check = is_square ? ratio : r_z - -// fp2_chip.assert_equal(ctx, y_check, y_sqr); // assert y_check == y_sqr - -// (is_square, y_assigned) -// } - -// pub fn mul_by_bls_x( -// p: G2Point, -// ecc_chip: &EccChip>, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// let bls_x_bits = cache -// .bsl_x_bits -// .get_or_insert_with(|| { -// (0..64) -// .map(|i| ((C::BLS_X >> i) & 1) as u8) -// .map(|b| ctx.load_constant(F::from(b as u64))) -// .collect_vec() -// }) -// .deref() -// .clone(); - -// ecc_chip.scalar_mult_bits(ctx, p, bls_x_bits, 4) -// } - -// pub fn psi( -// p: G2Point, -// fp2_chip: &Fp2Chip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// // 1 / ((u+1) ^ ((q-1)/3)) -// let psi_x = cache -// .psi_x -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_X)); - -// // 1 / ((u+1) ^ (p-1)/2) -// let psi_y = cache -// .psi_y -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_Y)); - -// let x_frob = fp2_chip.conjugate(ctx, p.x); -// let y_frob = fp2_chip.conjugate(ctx, p.y); - -// let x = fp2_chip.mul(ctx, x_frob, psi_x.clone()); -// let y = fp2_chip.mul(ctx, y_frob, psi_y.clone()); - -// G2Point::new(x, y) -// } - -// pub fn psi2( -// p: G2Point, -// fp2_chip: &Fp2Chip, -// ctx: &mut Context, -// cache: &mut HashToCurveCache, -// ) -> G2Point -// where -// C::Fq: FieldExtConstructor, -// { -// // 1 / 2 ^ ((q-1)/3) -// let psi2_x = cache -// .psi2_x -// .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI2_X)); - -// let x = fp2_chip.mul(ctx, p.x, psi2_x.clone()); -// let y = fp2_chip.negate(ctx, p.y); - -// G2Point::new(x, y) -// } - -// fn assigned_fq2_to_value(u: &Fp2Point) -> C::Fq { -// C::get_fq(u.0.iter().map(|c| { -// bigint_to_le_bytes( -// c.limbs().iter().map(|e| *e.value()), -// C::LIMB_BITS, -// C::BYTES_COMPRESSED / 2, -// ) -// })) -// } -// } - -// #[derive(Clone, Debug, Default)] -// pub struct HashToCurveCache { -// dst_with_len: Option>>, -// binary_bases: Option>>, -// swu_a: Option>, -// swu_b: Option>, -// swu_z: Option>, -// fq2_zero: Option>, -// fq2_one: Option>, -// iso_coeffs: Option<[Vec>; 4]>, -// psi_x: Option>, -// psi_y: Option>, -// psi2_x: Option>, -// bsl_x_bits: Option>>, -// } - -// #[cfg(test)] -// mod test { -// use std::env::var; -// use std::vec; -// use std::{cell::RefCell, marker::PhantomData}; - -// use crate::gadget::crypto::sha256::SpreadConfig; -// use crate::gadget::crypto::Sha256Chip; -// use crate::sha256_circuit::Sha256CircuitConfig; -// use crate::table::Sha256Table; -// use crate::util::{print_fq2_dev, Challenges, IntoWitness}; - -// use super::*; -// use eth_types::Mainnet; -// use halo2_base::gates::builder::FlexGateConfigParams; -// use halo2_base::gates::range::RangeConfig; -// use halo2_base::safe_types::RangeChip; -// use halo2_base::SKIP_FIRST_PASS; -// use halo2_base::{ -// gates::{builder::GateThreadBuilder, range::RangeStrategy}, -// halo2_proofs::{ -// circuit::{Layouter, SimpleFloorPlanner}, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{Circuit, ConstraintSystem}, -// }, -// }; -// use halo2_ecc::bigint::CRTInteger; -// use halo2_proofs::circuit::Value; -// use halo2curves::bls12_381::G2; -// use sha2::{Digest, Sha256}; - -// #[derive(Debug, Clone)] -// struct TestConfig { -// sha256_config: RefCell>, -// pub max_byte_size: usize, -// range: RangeConfig, -// challenges: Challenges>, -// } - -// struct TestCircuit { -// builder: RefCell>, -// range: RangeChip, -// test_input: HashInput>, -// _spec: PhantomData, -// } - -// impl Circuit for TestCircuit { -// type Config = TestConfig; -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// unimplemented!() -// } - -// fn configure(meta: &mut ConstraintSystem) -> Self::Config { -// let sha256_configs = SpreadConfig::::configure(meta, 8, 1); -// let range = RangeConfig::configure( -// meta, -// RangeStrategy::Vertical, -// &[Self::NUM_ADVICE], -// &[Self::NUM_LOOKUP_ADVICE], -// Self::NUM_FIXED, -// Self::LOOKUP_BITS, -// Self::K, -// ); -// let challenges = Challenges::construct(meta); -// Self::Config { -// sha256_config: RefCell::new(sha256_configs), -// max_byte_size: Self::MAX_BYTE_SIZE, -// range, -// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), -// } -// } - -// fn synthesize( -// &self, -// config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// config.range.load_lookup_table(&mut layouter)?; -// let mut first_pass = SKIP_FIRST_PASS; -// let sha256 = Sha256Chip::new(config.sha256_config, &self.range, None); - -// let h2c_chip = HashToCurveChip::::new(&sha256); -// let fp_chip = -// halo2_ecc::bls12_381::FpChip::::new(&self.range, G2::LIMB_BITS, G2::NUM_LIMBS); - -// layouter.assign_region( -// || "hash to curve test", -// |mut region| { -// if first_pass { -// first_pass = false; -// return Ok(()); -// } - -// let builder = &mut self.builder.borrow_mut(); -// let ctx = builder.main(0); - -// let mut cache = HashToCurveCache::::default(); -// let hp = h2c_chip.hash_to_curve::( -// self.test_input.clone(), -// &fp_chip, -// ctx, -// &mut region, -// &mut cache, -// )?; - -// print_fq2_dev::(hp.x(), "res_p.x"); -// print_fq2_dev::(hp.y(), "res_p.y"); - -// let extra_assignments = h2c_chip.hash_chip.take_extra_assignments(); - -// builder.config(TestCircuit::::K, Some(0)); -// let params: FlexGateConfigParams = -// serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); -// println!("params: {:?}", params); - -// let _ = builder.assign_all( -// &config.range.gate, -// &config.range.lookup_advice, -// &config.range.q_lookup, -// &mut region, -// extra_assignments, -// ); - -// Ok(()) -// }, -// )?; - -// Ok(()) -// } -// } - -// impl TestCircuit { -// const MAX_BYTE_SIZE: usize = 160; -// const NUM_ADVICE: usize = 21; -// const NUM_FIXED: usize = 1; -// const NUM_LOOKUP_ADVICE: usize = 3; -// const LOOKUP_BITS: usize = 8; -// const K: usize = 17; -// } - -// #[test] -// fn test_hash_to_g2() { -// let k = TestCircuit::::K as u32; - -// let test_input = vec![0u8; 32]; -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::new(false); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: test_input.into_witness(), -// _spec: PhantomData, -// }; - -// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// } -// } +// //! The chip that implements `draft-irtf-cfrg-hash-to-curve-16` +// //! https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16 + +use std::ops::Deref; +use std::{cell::RefCell, iter, marker::PhantomData}; + +use crate::util::AsBits; +use crate::{ + util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, + witness::HashInput, +}; +use eth_types::{AppCurveExt, Field, HashCurveExt, Spec}; +use halo2_base::{ + safe_types::{GateInstructions, RangeInstructions, SafeBytes32, SafeTypeChip}, + utils::ScalarField, + AssignedValue, Context, QuantumCell, +}; +use halo2_ecc::{ + bigint::{CRTInteger, ProperUint}, + ecc::EccChip, + fields::{ + fp::FpChip, fp2, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField, + Selectable, + }, +}; +use halo2_proofs::{circuit::Region, plonk::Error}; +use halo2curves::group::GroupEncoding; +use itertools::Itertools; +use num_bigint::{BigInt, BigUint}; +use pasta_curves::arithmetic::SqrtRatio; + +use super::ShaContexts; +use super::{ + sha256::HashInstructions, + util::{fp2_sgn0, i2osp, strxor}, + Fp2Point, G1Point, G2Point, +}; + +const G2_EXT_DEGREE: usize = 2; + +// L = ceil((ceil(log2(p)) + k) / 8) (see section 5 of ietf draft link above) +const L: usize = 64; + +#[allow(type_alias_bounds)] +pub type Fp2Chip<'chip, F, C: AppCurveExt, Fp = ::Fp> = + fp2::Fp2Chip<'chip, F, FpChip<'chip, F, Fp>, C::Fq>; + +#[derive(Debug)] +pub struct HashToCurveChip<'a, S: Spec, F: Field, HC: HashInstructions> { + hash_chip: &'a HC, + _f: PhantomData, + _spec: PhantomData, +} + +impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, F, HC> { + pub fn new(hash_chip: &'a HC) -> Self { + Self { + hash_chip, + _f: PhantomData, + _spec: PhantomData, + } + } + + pub fn hash_to_curve( + &self, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, + fp_chip: &FpChip, + msg: HashInput>, + cache: &mut HashToCurveCache, + ) -> Result, Error> + where + C::Fq: FieldExtConstructor, + { + let u = self.hash_to_field::(ctx_base, ctx_sha, fp_chip, msg, cache)?; + let p = self.map_to_curve::(ctx_base, fp_chip, u, cache)?; + Ok(p) + } + + /// Implements [section 5.2 of `draft-irtf-cfrg-hash-to-curve-16`][hash_to_field]. + /// + /// [hash_to_field]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.2 + /// + /// References: + /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L49 + /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L128 + /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L11 + fn hash_to_field( + &self, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, + fp_chip: &FpChip, + msg: HashInput>, + cache: &mut HashToCurveCache, + ) -> Result<[Fp2Point; 2], Error> { + // + let range = self.hash_chip.range(); + let gate = range.gate(); + let safe_types = SafeTypeChip::new(range); + + // constants + let zero = ctx_base.load_zero(); + let one = ctx_base.load_constant(F::one()); + + let assigned_msg = msg.into_assigned(ctx_base).to_vec(); + + let len_in_bytes = 2 * G2_EXT_DEGREE * L; + let extended_msg = Self::expand_message_xmd( + ctx_base, + ctx_sha, + self.hash_chip, + assigned_msg, + len_in_bytes, + cache, + )?; + + let limb_bases = cache.binary_bases.get_or_insert_with(|| { + C::limb_bytes_bases() + .into_iter() + .map(|base| ctx_base.load_constant(base)) + .collect() + }); + + // 2^256 + let two_pow_256 = fp_chip.load_constant_uint(ctx_base, BigUint::from(2u8).pow(256)); + let fq_bytes = C::BYTES_COMPRESSED / 2; + + let mut fst = true; + let u = extended_msg + .chunks(L) + .chunks(G2_EXT_DEGREE) + .into_iter() + .map(|elm_chunk| { + FieldVector( + elm_chunk + .map(|tv| { + let mut buf = vec![zero; fq_bytes]; + let rem = fq_bytes - 32; + buf[rem..].copy_from_slice(&tv[..32]); + let lo = decode_into_field_be::( + buf.to_vec(), + &fp_chip.limb_bases, + gate, + ctx_base, + ); + + buf[rem..].copy_from_slice(&tv[32..]); + let hi = decode_into_field_be::( + buf.to_vec(), + &fp_chip.limb_bases, + gate, + ctx_base, + ); + + let lo_2_256 = fp_chip.mul_no_carry(ctx_base, lo, two_pow_256.clone()); + let lo_2_356_hi = fp_chip.add_no_carry(ctx_base, lo_2_256, hi); + fp_chip.carry_mod(ctx_base, lo_2_356_hi) + }) + .collect_vec(), + ) + }) + .collect_vec() + .try_into() + .unwrap(); + + Ok(u) + } + + pub fn map_to_curve( + &self, + ctx: &mut Context, + fp_chip: &FpChip, + u: [Fp2Point; 2], + cache: &mut HashToCurveCache, + ) -> Result, Error> + where + C::Fq: FieldExtConstructor, + { + let fp2_chip = Fp2Chip::<_, C>::new(fp_chip); + let ecc_chip = EccChip::>::new(&fp2_chip); + + let [u0, u1] = u; + + let p1 = Self::map_to_curve_simple_swu::(u0, &fp2_chip, ctx, cache); + let p2 = Self::map_to_curve_simple_swu::(u1, &fp2_chip, ctx, cache); + + let p_sum = ecc_chip.add_unequal(ctx, p1, p2, false); + + let iso_p = Self::isogeny_map::(p_sum, &fp2_chip, ctx, cache); + + Ok(Self::clear_cofactor::(iso_p, &ecc_chip, ctx, cache)) + } + + /// Implements [section 5.3 of `draft-irtf-cfrg-hash-to-curve-16`][expand_message_xmd]. + /// + /// [expand_message_xmd]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3 + /// + /// References: + /// - https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/blob/6ce20a1/poc/hash_to_field.py#L89 + /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L63 + /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L139 + fn expand_message_xmd( + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, + hash_chip: &HC, + msg: Vec>, + len_in_bytes: usize, + cache: &mut HashToCurveCache, + ) -> Result>, Error> { + let range = hash_chip.range(); + let gate = range.gate(); + + // constants + // const MAX_INPUT_SIZE: usize = 192; + let zero = ctx_base.load_zero(); + let one = ctx_base.load_constant(F::one()); + + // assign DST bytes & cache them + let dst_len = ctx_base.load_constant(F::from(S::DST.len() as u64)); + let dst_prime = cache + .dst_with_len + .get_or_insert_with(|| { + S::DST + .iter() + .map(|&b| ctx_base.load_constant(F::from(b as u64))) + .chain(iter::once(dst_len)) + .collect() + }) + .clone(); + + // padding and length strings + let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these + let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| ctx_base.load_constant(b)); + + // compute blocks + let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); + let mut b_vals = Vec::with_capacity(ell); + let msg_prime = z_pad + .into_iter() + .chain(msg) + .chain(l_i_b_str) + .chain(iter::once(zero)) + .chain(dst_prime.clone()); + + let b_0 = hash_chip + .digest::<143>(ctx_base, ctx_sha, msg_prime.into(), false)? + .output_bytes; + + b_vals.insert( + 0, + hash_chip + .digest::<77>( + ctx_base, + ctx_sha, + b_0.into_iter() + .chain(iter::once(one)) + .chain(dst_prime.clone()) + .into(), + false, + )? + .output_bytes, + ); + + for i in 1..ell { + let preimg = strxor(b_0, b_vals[i - 1], gate, ctx_base) + .into_iter() + .chain(iter::once(ctx_base.load_constant(F::from(i as u64 + 1)))) + .chain(dst_prime.clone()) + .into(); + + b_vals.insert( + i, + hash_chip + .digest::<77>(ctx_base, ctx_sha, preimg, false)? + .output_bytes, + ); + } + + let uniform_bytes = b_vals + .into_iter() + .flatten() + .take(len_in_bytes) + .collect_vec(); + + Ok(uniform_bytes) + } + + /// Implements [section 6.2 of draft-irtf-cfrg-hash-to-curve-16][map_to_curve_simple_swu] + /// + /// [map_to_curve_simple_swu]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.1-3 + /// + /// References: + /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/hash_to_curve/map_g2.rs#L388 + /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/weierstrass.ts#L1175 + fn map_to_curve_simple_swu( + u: Fp2Point, + fp2_chip: &Fp2Chip, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + let fp_chip = fp2_chip.fp_chip(); + let gate = fp_chip.range().gate(); + + // constants + let swu_a = cache + .swu_a + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_A)) + .deref() + .clone(); + let swu_b = cache + .swu_b + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_B)) + .deref() + .clone(); + let swu_z = cache + .swu_z + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)) + .deref() + .clone(); + let fq2_one = cache + .fq2_one + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::one())) + .deref() + .clone(); + + let usq = fp2_chip.mul(ctx, u.clone(), u.clone()); // 1. tv1 = u^2 + let z_usq = fp2_chip.mul(ctx, usq, swu_z.clone()); // 2. tv1 = Z * tv1 + let zsq_u4 = fp2_chip.mul(ctx, z_usq.clone(), z_usq.clone()); // 3. tv2 = tv1^2 + let tv2 = fp2_chip.add(ctx, zsq_u4, z_usq.clone()); // 4. tv2 = tv2 + tv1 + let tv3 = fp2_chip.add_no_carry(ctx, tv2.clone(), fq2_one); // 5. tv3 = tv2 + 1 + let x0_num = fp2_chip.mul(ctx, tv3, swu_b.clone()); // 6. tv3 = B * tv3 + + let x_den = { + let tv2_is_zero = fp2_chip.is_zero(ctx, tv2.clone()); + let tv2_neg = fp2_chip.negate(ctx, tv2); + + fp2_chip.select(ctx, swu_z, tv2_neg, tv2_is_zero) // tv2_is_zero ? swu_z : tv2_neg + }; // 7. tv4 = tv2 != 0 ? -tv2 : Z + + let x_den = fp2_chip.mul(ctx, x_den, swu_a.clone()); // 8. tv4 = A * tv4 + + let x0_num_sqr = fp2_chip.mul(ctx, x0_num.clone(), x0_num.clone()); // 9. tv2 = tv3^2 + let x_densq = fp2_chip.mul(ctx, x_den.clone(), x_den.clone()); // 10. tv6 = tv4^2 + let ax_densq = fp2_chip.mul(ctx, x_densq.clone(), swu_a); // 11. tv5 = A * tv6 + let tv2 = fp2_chip.add_no_carry(ctx, x0_num_sqr, ax_densq); // 12. tv2 = tv2 + tv5 + let tv2 = fp2_chip.mul(ctx, tv2, x0_num.clone()); // 13. tv2 = tv2 * tv3 + let gx_den = fp2_chip.mul(ctx, x_densq, x_den.clone()); // 14. tv6 = tv6 * tv4 + let tv5 = fp2_chip.mul(ctx, gx_den.clone(), swu_b); // 15. tv5 = B * tv6 + let gx0_num = fp2_chip.add(ctx, tv2, tv5); // 16. tv2 = tv2 + tv5 + + let x = fp2_chip.mul(ctx, &z_usq, &x0_num); // 17. x = tv1 * tv3 + + let (is_gx1_square, y1) = + Self::sqrt_ratio::(gx0_num, gx_den, u.clone(), fp2_chip, ctx, cache); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6) + + let y = fp2_chip.mul(ctx, &z_usq, &u); // 19. y = tv1 * u + let y = fp2_chip.mul(ctx, y, y1.clone()); // 20. y = y * y1 + let x = fp2_chip.select(ctx, x0_num, x, is_gx1_square); // 21. x = is_gx1_square ? tv3 : x + let y = fp2_chip.select(ctx, y1, y, is_gx1_square); // 22. y = is_gx1_square ? y1 : y + + let to_neg = { + let u_sgn = fp2_sgn0::<_, C>(u, ctx, fp_chip); + let y_sgn = fp2_sgn0::<_, C>(y.clone(), ctx, fp_chip); + gate.xor(ctx, u_sgn, y_sgn) + }; // 23. e1 = sgn0(u) == sgn0(y) // we implement an opposite condition: !e1 = sgn0(u) ^ sgn0(y) + + let y_neg = fp2_chip.negate(ctx, y.clone()); + let y = fp2_chip.select(ctx, y_neg, y, to_neg); // 24. y = !e1 ? -y : y + let x = fp2_chip.divide(ctx, x, x_den); // 25. x = x / tv4 + + G2Point::new(x, y) + } + + /// Implements [Appendix E.3 of draft-irtf-cfrg-hash-to-curve-16][isogeny_map_g2] + /// + /// [isogeny_map_g2]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-E.3 + /// + /// References: + /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L1153 + /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L167 + pub fn isogeny_map( + p: G2Point, + fp2_chip: &Fp2Chip, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + // constants + let iso_coeffs = cache + .iso_coeffs + .get_or_insert_with(|| { + [ + C::ISO_XNUM.to_vec(), + C::ISO_XDEN.to_vec(), + C::ISO_YNUM.to_vec(), + C::ISO_YDEN.to_vec(), + ] + .map(|coeffs| { + coeffs + .into_iter() + .map(|iso| fp2_chip.load_constant(ctx, iso)) + .collect_vec() + }) + }) + .deref() + .clone(); + + let fq2_zero = cache + .fq2_zero + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::Fq::zero())) + .deref() + .clone(); + + let [x_num, x_den, y_num, y_den] = iso_coeffs.map(|coeffs| { + coeffs.into_iter().fold(fq2_zero.clone(), |acc, v| { + let acc = fp2_chip.mul(ctx, acc, &p.x); + let no_carry = fp2_chip.add_no_carry(ctx, acc, v); + fp2_chip.carry_mod(ctx, no_carry) + }) + }); + + let x = { fp2_chip.divide_unsafe(ctx, x_num, x_den) }; + + let y = { + let tv = fp2_chip.divide_unsafe(ctx, y_num, y_den); + fp2_chip.mul(ctx, &p.y, tv) + }; + + G2Point::new(x, y) + } + + /// Implements [Appendix G.3 of draft-irtf-cfrg-hash-to-curve-16][clear_cofactor] + /// + /// [clear_cofactor]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-G.3 + /// + /// References: + /// - https://github.com/mikelodder7/bls12_381_plus/blob/ml/0.5.6/src/g2.rs#L956 + /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/bls12-381.ts#L1111 + fn clear_cofactor( + p: G2Point, + ecc_chip: &EccChip>, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + let t1 = { + // scalar multiplication is very expensive in terms of rows used + // TODO: is there other ways to clear cofactor that avoid scalar multiplication? + let tv = Self::mul_by_bls_x::(p.clone(), ecc_chip, ctx, cache); + ecc_chip.negate(ctx, tv) + }; // [-x]P + + let t2 = Self::psi::(p.clone(), ecc_chip.field_chip(), ctx, cache); // Ψ(P) + + let t3 = ecc_chip.double(ctx, p.clone()); // 2P + let t3 = Self::psi2::(t3, ecc_chip.field_chip(), ctx, cache); // Ψ²(2P) + let t3 = ecc_chip.sub_unequal(ctx, t3, t2.clone(), false); // Ψ²(2P) - Ψ(P) + + let t2 = ecc_chip.add_unequal(ctx, t1.clone(), t2, false); // [-x]P + Ψ(P) + let t2 = { + let tv = Self::mul_by_bls_x::(t2, ecc_chip, ctx, cache); + ecc_chip.negate(ctx, tv) + }; // [x²]P - [x]Ψ(P) + + // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + let t3 = ecc_chip.add_unequal(ctx, t3, t2, false); + // Ψ²(2P) - Ψ(Plet ) + [x²]P - [x]Ψ(P) + [x]P + let t3 = ecc_chip.sub_unequal(ctx, t3, t1, false); + + // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P => [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P) + ecc_chip.sub_unequal(ctx, t3, p, false) + } + + // Implements [Appendix F.2.1 of draft-irtf-cfrg-hash-to-curve-16][sqrt_ration] + // + // [sqrt_ration]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.2.1 + fn sqrt_ratio( + num: Fp2Point, + div: Fp2Point, + u: Fp2Point, + fp2_chip: &Fp2Chip, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> (AssignedValue, Fp2Point) + where + C::Fq: FieldExtConstructor, + { + let num_v = Self::assigned_fq2_to_value::(&num); + let div_v = Self::assigned_fq2_to_value::(&div); + let u = Self::assigned_fq2_to_value::(&u); + + let (is_square, y) = C::Fq::sqrt_ratio(&num_v, &div_v); + + let is_square = ctx.load_witness(F::from(is_square.unwrap_u8() as u64)); + fp2_chip.fp_chip().gate().assert_bit(ctx, is_square); // assert is_square is boolean + + let y_assigned = fp2_chip.load_private(ctx, y); + let y_sqr = fp2_chip.mul(ctx, y_assigned.clone(), y_assigned.clone()); // y_sqr = y1^2 + + let ratio = fp2_chip.divide(ctx, num, div); // r = u / v + + let swu_z = cache + .swu_z + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::SWU_Z)); + let ratio_z = fp2_chip.mul(ctx, ratio.clone(), swu_z.clone()); // r_z = r * z + + let y_check = fp2_chip.select(ctx, ratio, ratio_z, is_square); // y_check = is_square ? ratio : r_z + + fp2_chip.assert_equal(ctx, y_check, y_sqr); // assert y_check == y_sqr + + (is_square, y_assigned) + } + + pub fn mul_by_bls_x( + p: G2Point, + ecc_chip: &EccChip>, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + let bls_x_bits = cache + .bsl_x_bits + .get_or_insert_with(|| { + (0..64) + .map(|i| ((C::BLS_X >> i) & 1) as u8) + .map(|b| ctx.load_constant(F::from(b as u64))) + .collect_vec() + }) + .deref() + .clone(); + + ecc_chip.scalar_mult_bits(ctx, p, bls_x_bits, 4) + } + + pub fn psi( + p: G2Point, + fp2_chip: &Fp2Chip, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + // 1 / ((u+1) ^ ((q-1)/3)) + let psi_x = cache + .psi_x + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_X)); + + // 1 / ((u+1) ^ (p-1)/2) + let psi_y = cache + .psi_y + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI_Y)); + + let x_frob = fp2_chip.conjugate(ctx, p.x); + let y_frob = fp2_chip.conjugate(ctx, p.y); + + let x = fp2_chip.mul(ctx, x_frob, psi_x.clone()); + let y = fp2_chip.mul(ctx, y_frob, psi_y.clone()); + + G2Point::new(x, y) + } + + pub fn psi2( + p: G2Point, + fp2_chip: &Fp2Chip, + ctx: &mut Context, + cache: &mut HashToCurveCache, + ) -> G2Point + where + C::Fq: FieldExtConstructor, + { + // 1 / 2 ^ ((q-1)/3) + let psi2_x = cache + .psi2_x + .get_or_insert_with(|| fp2_chip.load_constant(ctx, C::PSI2_X)); + + let x = fp2_chip.mul(ctx, p.x, psi2_x.clone()); + let y = fp2_chip.negate(ctx, p.y); + + G2Point::new(x, y) + } + + fn assigned_fq2_to_value(u: &Fp2Point) -> C::Fq { + C::get_fq(u.0.iter().map(|c| { + bigint_to_le_bytes( + c.limbs().iter().map(|e| *e.value()), + C::LIMB_BITS, + C::BYTES_COMPRESSED / 2, + ) + })) + } +} + +#[derive(Clone, Debug, Default)] +pub struct HashToCurveCache { + dst_with_len: Option>>, + binary_bases: Option>>, + swu_a: Option>, + swu_b: Option>, + swu_z: Option>, + fq2_zero: Option>, + fq2_one: Option>, + iso_coeffs: Option<[Vec>; 4]>, + psi_x: Option>, + psi_y: Option>, + psi2_x: Option>, + bsl_x_bits: Option>>, +} + +#[cfg(test)] +mod test { + use std::env::var; + use std::vec; + use std::{cell::RefCell, marker::PhantomData}; + + use crate::builder::ShaCircuitBuilder; + use crate::gadget::crypto::sha256::{SpreadChip, SpreadConfig}; + use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; + use crate::sha256_circuit::Sha256CircuitConfig; + use crate::table::Sha256Table; + use crate::util::{print_fq2_dev, Challenges, IntoWitness}; + + use super::*; + use eth_types::{Mainnet, Test}; + use halo2_base::gates::builder::FlexGateConfigParams; + use halo2_base::gates::range::RangeConfig; + use halo2_base::safe_types::RangeChip; + use halo2_base::SKIP_FIRST_PASS; + use halo2_base::{ + gates::{builder::GateThreadBuilder, range::RangeStrategy}, + halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{Circuit, ConstraintSystem}, + }, + }; + use halo2_ecc::bigint::CRTInteger; + use halo2_proofs::circuit::Value; + use halo2curves::bls12_381::G2; + use sha2::{Digest, Sha256}; + + fn get_circuit( + k: usize, + mut builder: ShaThreadBuilder, + input_vector: &[Vec], + ) -> Result, Error> { + let range = RangeChip::default(8); + let spread = SpreadChip::new(&range); + + let sha256 = Sha256Chip::new(&range, spread); + let (ctx_base, mut ctx_sha) = builder.sha_contexts_pair(); + + let h2c_chip = HashToCurveChip::::new(&sha256); + let fp_chip = halo2_ecc::bls12_381::FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); + + for input in input_vector { + let mut cache = HashToCurveCache::::default(); + let hp = h2c_chip.hash_to_curve::( + ctx_base, + &mut ctx_sha, + &fp_chip, + input.clone().into_witness(), + &mut cache, + )?; + + print_fq2_dev::(hp.x(), "res_p.x"); + print_fq2_dev::(hp.y(), "res_p.y"); + } + + builder.config(k, None); + Ok(ShaCircuitBuilder::new(builder, range, None)) + } + + #[test] + fn test_hash_to_g2() { + let k = 17; + + let test_input = vec![0u8; 32]; + let builder = ShaThreadBuilder::::new(false); + let circuit = get_circuit(k, builder, &[test_input]).unwrap(); + + let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); + prover.assert_satisfied(); + } +} diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 1ae2e116..4865d1ee 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -11,7 +11,7 @@ use halo2_ecc::{ fields::{fp2, vector::FieldVector, FieldExtConstructor}, }; // pub use hash2curve::{HashToCurveCache, HashToCurveChip}; -pub use sha256::{AssignedHashResult, HashInstructions, Sha256Chip, SpreadConfig, SpreadThreadBuilder}; +pub use sha256::{AssignedHashResult, HashInstructions, Sha256Chip, SpreadConfig, ShaThreadBuilder, ShaContexts}; pub use sha256_wide::*; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 66e91540..750ece4b 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -3,7 +3,7 @@ mod compression; mod spread; mod util; -pub use builder::SpreadThreadBuilder; +pub use builder::ShaThreadBuilder; pub use spread::SpreadConfig; use eth_types::Field; @@ -34,8 +34,8 @@ use halo2_proofs::{ plonk::{Assigned, Error}, }; -use self::builder::ShaContexts; -use self::spread::SpreadChip; +pub use self::builder::ShaContexts; +pub use self::spread::SpreadChip; const SHA256_CONTEXT_ID: usize = usize::MAX; @@ -48,7 +48,8 @@ pub trait HashInstructions { /// `strict` flag indicates whether to perform range check on input bytes. fn digest( &self, - ctx: ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, input: HashInput>, strict: bool, ) -> Result, Error>; @@ -76,7 +77,8 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { fn digest( &self, - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, input: HashInput>, strict: bool, ) -> Result, Error> { @@ -154,7 +156,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let assigned_input_word_at_round = &assigned_input_bytes[num_processed_input..(num_processed_input + one_round_size)]; let new_assigned_hs_out = sha256_compression( - (ctx_base, ctx_dense, ctx_spread), + ctx_base, ctx_sha, &self.spread, assigned_input_word_at_round, assigned_last_state_vec.last().unwrap(), @@ -259,27 +261,26 @@ mod test { fn get_circuit( k: usize, - mut builder: SpreadThreadBuilder, + mut builder: ShaThreadBuilder, input_vector: &[Vec], - ) -> ShaCircuitBuilder { + ) -> Result, Error> { let range = RangeChip::default(8); let spread = SpreadChip::new(&range); let sha256 = Sha256Chip::new(&range, spread); - let (ctx_base, ctx_dense, ctx_spread) = builder.main(); + let (ctx_base, mut ctx_sha) = builder.sha_contexts_pair(); for input in input_vector { let _ = sha256 .digest::<64>( - (ctx_base, ctx_dense, ctx_spread), + ctx_base, &mut ctx_sha, input.as_slice().into_witness(), false, - ) - .unwrap(); + )?; } - builder.config(k, Some(0)); - ShaCircuitBuilder::new(builder, range, None) + builder.config(k, None); + Ok(ShaCircuitBuilder::new(builder, range, None)) } #[test] @@ -288,10 +289,10 @@ mod test { let test_input = vec![0u8; 64]; - let builder = SpreadThreadBuilder::::new(false); + let builder = ShaThreadBuilder::::new(false); let circuit = get_circuit(k, builder, &[test_input]); - let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); + let prover = MockProver::run(k as u32, &circuit.unwrap(), vec![]).unwrap(); prover.assert_satisfied_par(); } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index c3bd16c2..b80e628d 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -22,7 +22,7 @@ use super::SpreadConfig; pub const SPREAD_PHASE: usize = 0; #[derive(Clone, Debug, Default)] -pub struct SpreadThreadBuilder { +pub struct ShaThreadBuilder { /// Threads for spread table assignment. pub threads_dense: Vec>, /// Threads for spread table assignment. @@ -31,9 +31,9 @@ pub struct SpreadThreadBuilder { pub gate_builder: GateThreadBuilder, } -pub type ShaContexts<'a, F> = (&'a mut Context, &'a mut Context, &'a mut Context); +pub type ShaContexts<'a, F> = (&'a mut Context, &'a mut Context); -impl SpreadThreadBuilder { +impl ShaThreadBuilder { // re-expose some methods from [`GateThreadBuilder`] for convenience #[allow(unused_mut)] pub fn new(mut witness_gen_only: bool) -> Self { @@ -65,7 +65,11 @@ impl SpreadThreadBuilder { self } - pub fn main(&mut self) -> ShaContexts { + pub fn main(&mut self) -> &mut Context { + self.gate_builder.main(SPREAD_PHASE) + } + + pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { if self.threads_dense.is_empty() { self.new_thread_dense(); } @@ -74,8 +78,10 @@ impl SpreadThreadBuilder { } ( self.gate_builder.main(SPREAD_PHASE), - self.threads_dense.last_mut().unwrap(), - self.threads_spread.last_mut().unwrap(), + ( + self.threads_dense.last_mut().unwrap(), + self.threads_spread.last_mut().unwrap(), + ), ) } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index a338f75e..2584b0bf 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -53,7 +53,8 @@ pub const INIT_STATE: [u32; NUM_STATE_WORD] = [ pub type SpreadU32<'a, F> = (AssignedValue, AssignedValue); pub fn sha256_compression<'a, 'b: 'a, F: Field>( - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, assigned_input_bytes: &[AssignedValue], pre_state_words: &[AssignedValue], @@ -88,21 +89,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // .collect_vec(); let mut message_spreads = message_u32s .iter() - .map(|dense| state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, dense)) + .map(|dense| state_to_spread_u32(ctx_base, ctx_sha, spread_chip, dense)) .collect::>, Error>>()?; for idx in 16..64 { // let w_2_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 2])?; // let w_15_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 15])?; - let term1 = sigma_lower1( - (ctx_base, ctx_dense, ctx_spread), - spread_chip, - &message_spreads[idx - 2], - )?; - let term3 = sigma_lower0( - (ctx_base, ctx_dense, ctx_spread), - spread_chip, - &message_spreads[idx - 15], - )?; + let term1 = sigma_lower1(ctx_base, ctx_sha, spread_chip, &message_spreads[idx - 2])?; + let term3 = sigma_lower0(ctx_base, ctx_sha, spread_chip, &message_spreads[idx - 15])?; // let term1_u32 = bits2u32(ctx, gate, &term1_bits); // let term3_u32 = bits2u32(ctx, gate, &term3_bits); let new_w = { @@ -119,8 +112,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // new_w.value() // ); message_u32s.push(new_w); - let new_w_spread = - state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &new_w)?; + let new_w_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &new_w)?; message_spreads.push(new_w_spread); // if idx <= 61 { // let new_w_bits = gate.num_to_bits(ctx, &new_w, 32); @@ -139,13 +131,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( pre_state_words[6], pre_state_words[7], ); - let mut a_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &a)?; - let mut b_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &b)?; - let mut c_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &c)?; + let mut a_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &a)?; + let mut b_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &b)?; + let mut c_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &c)?; // let mut d_spread = state_to_spread_u32(ctx, range, ctx_spread, &d)?; - let mut e_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &e)?; - let mut f_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &f)?; - let mut g_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &g)?; + let mut e_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &e)?; + let mut f_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &f)?; + let mut g_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &g)?; // let mut h_spread = state_to_spread_u32(ctx, range, ctx_spread, &h)?; // let mut a_bits = gate.num_to_bits(ctx, &a, 32); // let mut b_bits = gate.num_to_bits(ctx, &b, 32); @@ -160,10 +152,10 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let e_spread = state_to_spread_u32(ctx, range, ctx_spread, &e)?; // let f_spread = state_to_spread_u32(ctx, range, ctx_spread, &f)?; // let g_spread = state_to_spread_u32(ctx, range, ctx_spread, &g)?; - let sigma_term = - sigma_upper1((ctx_base, ctx_dense, ctx_spread), spread_chip, &e_spread)?; + let sigma_term = sigma_upper1(ctx_base, ctx_sha, spread_chip, &e_spread)?; let ch_term = ch( - (ctx_base, ctx_dense, ctx_spread), + ctx_base, + ctx_sha, spread_chip, &e_spread, &f_spread, @@ -197,10 +189,10 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let a_spread = state_to_spread_u32(ctx, range, ctx_spread, &a)?; // let b_spread = state_to_spread_u32(ctx, range, ctx_spread, &b)?; // let c_spread = state_to_spread_u32(ctx, range, ctx_spread, &c)?; - let sigma_term = - sigma_upper0((ctx_base, ctx_dense, ctx_spread), spread_chip, &a_spread)?; + let sigma_term = sigma_upper0(ctx_base, ctx_sha, spread_chip, &a_spread)?; let maj_term = maj( - (ctx_base, ctx_dense, ctx_spread), + ctx_base, + ctx_sha, spread_chip, &a_spread, &b_spread, @@ -228,7 +220,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( ); mod_u32(ctx_base, range, &add) }; - e_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &e)?; + e_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &e)?; d = c; // d_spread = c_spread; c = b; @@ -243,7 +235,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( ); mod_u32(ctx_base, range, &add) }; - a_spread = state_to_spread_u32((ctx_base, ctx_dense, ctx_spread), spread_chip, &a)?; + a_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &a)?; } let new_states = vec![a, b, c, d, e, f, g, h]; let next_state_words = new_states @@ -265,7 +257,8 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( } fn state_to_spread_u32<'a, F: Field>( - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &AssignedValue, ) -> Result, Error> { @@ -281,8 +274,8 @@ fn state_to_spread_u32<'a, F: Field>( QuantumCell::Existing(assigned_lo), ); ctx_base.constrain_equal(x, &composed); - let lo_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &assigned_lo)?; - let hi_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &assigned_hi)?; + let lo_spread = spread_chip.spread(ctx_base, ctx_sha, &assigned_lo)?; + let hi_spread = spread_chip.spread(ctx_base, ctx_sha, &assigned_hi)?; Ok((lo_spread, hi_spread)) } @@ -308,7 +301,8 @@ fn mod_u32<'a, 'b: 'a, F: Field>( } fn ch<'a, 'b: 'a, F: Field>( - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -351,8 +345,8 @@ fn ch<'a, 'b: 'a, F: Field>( let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_lo)?; let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_hi)?; { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_lo_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_lo_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &p_lo_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &p_lo_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -362,8 +356,8 @@ fn ch<'a, 'b: 'a, F: Field>( ctx_base.constrain_equal(&sum, &p_lo); } { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_hi_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &p_hi_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &p_hi_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &p_hi_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -373,8 +367,8 @@ fn ch<'a, 'b: 'a, F: Field>( ctx_base.constrain_equal(&sum, &p_hi); } { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_lo_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_lo_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &q_lo_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &q_lo_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -384,8 +378,8 @@ fn ch<'a, 'b: 'a, F: Field>( ctx_base.constrain_equal(&sum, &q_lo); } { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_hi_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &q_hi_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &q_hi_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &q_hi_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -414,7 +408,8 @@ fn ch<'a, 'b: 'a, F: Field>( } fn maj<'a, 'b: 'a, F: Field>( - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -442,8 +437,8 @@ fn maj<'a, 'b: 'a, F: Field>( let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_lo)?; let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_hi)?; { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_lo_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_lo_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &m_lo_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &m_lo_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -453,8 +448,8 @@ fn maj<'a, 'b: 'a, F: Field>( ctx_base.constrain_equal(&sum, &m_lo); } { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_hi_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &m_hi_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &m_hi_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &m_hi_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -484,7 +479,8 @@ fn three_add<'a, 'b: 'a, F: Field>( } fn sigma_upper0<'a, 'b: 'a, F: Field>( - ctx: ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -498,7 +494,8 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( F::from((1u64 << 40) + (1u64 << 18) + (1u64 << 0)), ]; sigma_generic( - ctx, + ctx_base, + ctx_sha, spread_chip, x_spread, &STARTS, @@ -509,7 +506,8 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( } fn sigma_upper1<'a, 'b: 'a, F: Field>( - ctx: ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -523,7 +521,8 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( F::from((1u64 << 38) + (1u64 << 28) + (1u64 << 0)), ]; sigma_generic( - ctx, + ctx_base, + ctx_sha, spread_chip, x_spread, &STARTS, @@ -534,7 +533,8 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( } fn sigma_lower0<'a, 'b: 'a, F: Field>( - ctx: ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -548,7 +548,8 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( F::from((1u64 << 30) + (1u64 << 22) + (1u64 << 0)), ]; sigma_generic( - ctx, + ctx_base, + ctx_sha, spread_chip, x_spread, &STARTS, @@ -559,7 +560,8 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( } fn sigma_lower1<'a, 'b: 'a, F: Field>( - ctx: ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -573,7 +575,8 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( F::from((1u64 << 18) + (1u64 << 4) + (1u64 << 0)), ]; sigma_generic( - ctx, + ctx_base, + ctx_sha, spread_chip, x_spread, &STARTS, @@ -585,7 +588,8 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( #[allow(clippy::too_many_arguments)] fn sigma_generic<'a, 'b: 'a, F: Field>( - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, starts: &[usize; 4], @@ -683,8 +687,8 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &r_hi)?; { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_lo_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_lo_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &r_lo_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &r_lo_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), @@ -695,8 +699,8 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( } { - let even_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_hi_even)?; - let odd_spread = spread_chip.spread((ctx_base, ctx_dense, ctx_spread), &r_hi_odd)?; + let even_spread = spread_chip.spread(ctx_base, ctx_sha, &r_hi_even)?; + let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &r_hi_odd)?; let sum = gate.mul_add( ctx_base, QuantumCell::Constant(F::from(2)), diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 2cf1240b..9f03c226 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -132,7 +132,8 @@ impl<'a, F: Field> SpreadChip<'a, F> { } pub fn spread( &self, - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + ctx_sha: &mut ShaContexts, dense: &AssignedValue, ) -> Result, Error> { let gate = self.range.gate(); @@ -154,7 +155,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { } let mut assigned_spread = ctx_base.load_zero(); for (idx, limb) in assigned_limbs.iter().enumerate() { - let spread_limb = self.spread_limb((ctx_base, ctx_dense, ctx_spread), limb)?; + let spread_limb = self.spread_limb(ctx_base, ctx_sha, limb)?; assigned_spread = gate.mul_add( ctx_base, QuantumCell::Existing(spread_limb), @@ -185,7 +186,8 @@ impl<'a, F: Field> SpreadChip<'a, F> { fn spread_limb( &self, - (ctx_base, ctx_dense, ctx_spread): ShaContexts, + ctx_base: &mut Context, + (ctx_dense, ctx_spread): &mut ShaContexts, limb: &AssignedValue, ) -> Result, Error> { let assigned_dense = ctx_dense.load_witness(*limb.value()); @@ -202,7 +204,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { let assigned_spread = ctx_base.load_witness(spread_value); let assigned_spread_vanila = ctx_spread.load_witness(*assigned_spread.value()); ctx_base.constrain_equal(&assigned_spread_vanila, &assigned_spread); - + Ok(assigned_spread) } diff --git a/lightclient-circuits/src/gadget/crypto/util.rs b/lightclient-circuits/src/gadget/crypto/util.rs index 4b5202b9..cd233589 100644 --- a/lightclient-circuits/src/gadget/crypto/util.rs +++ b/lightclient-circuits/src/gadget/crypto/util.rs @@ -1,110 +1,110 @@ -// use super::{hash2curve::HashToCurveCache, Fp2Point, FpPoint}; -// use eth_types::{AppCurveExt, Field, HashCurveExt}; -// use halo2_base::{ -// safe_types::{GateInstructions, RangeInstructions}, -// utils::ScalarField, -// AssignedValue, Context, QuantumCell, -// }; -// use halo2_ecc::{ -// bigint::ProperCrtUint, -// ecc::EcPoint, -// fields::{fp::FpChip, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField}, -// }; -// use itertools::Itertools; -// use num_bigint::BigUint; +use super::{hash2curve::HashToCurveCache, Fp2Point, FpPoint}; +use eth_types::{AppCurveExt, Field, HashCurveExt}; +use halo2_base::{ + safe_types::{GateInstructions, RangeInstructions}, + utils::ScalarField, + AssignedValue, Context, QuantumCell, +}; +use halo2_ecc::{ + bigint::ProperCrtUint, + ecc::EcPoint, + fields::{fp::FpChip, vector::FieldVector, FieldChip, FieldExtConstructor, PrimeField}, +}; +use itertools::Itertools; +use num_bigint::BigUint; -// pub fn fp2_sgn0( -// x: Fp2Point, -// ctx: &mut Context, -// fp_chip: &FpChip, -// ) -> AssignedValue { -// let gate = fp_chip.gate(); -// let c0 = x.0[0].clone(); -// let c1 = x.0[1].clone(); +pub fn fp2_sgn0( + x: Fp2Point, + ctx: &mut Context, + fp_chip: &FpChip, +) -> AssignedValue { + let gate = fp_chip.gate(); + let c0 = x.0[0].clone(); + let c1 = x.0[1].clone(); -// let c0_zero = fp_chip.is_zero(ctx, &c0); -// let c0_sgn = fp_sgn0::(c0, ctx, fp_chip); -// let c1_sgn = fp_sgn0::(c1, ctx, fp_chip); -// let sgn = gate.select(ctx, c1_sgn, c0_sgn, c0_zero); -// gate.assert_bit(ctx, sgn); -// sgn -// } + let c0_zero = fp_chip.is_zero(ctx, &c0); + let c0_sgn = fp_sgn0::(c0, ctx, fp_chip); + let c1_sgn = fp_sgn0::(c1, ctx, fp_chip); + let sgn = gate.select(ctx, c1_sgn, c0_sgn, c0_zero); + gate.assert_bit(ctx, sgn); + sgn +} -// pub fn fp_sgn0( -// x: FpPoint, -// ctx: &mut Context, -// fp_chip: &FpChip, -// ) -> AssignedValue { -// let range = fp_chip.range(); -// let gate = range.gate(); +pub fn fp_sgn0( + x: FpPoint, + ctx: &mut Context, + fp_chip: &FpChip, +) -> AssignedValue { + let range = fp_chip.range(); + let gate = range.gate(); -// let msl = x.limbs()[0]; // most significant limb + let msl = x.limbs()[0]; // most significant limb -// let lsb = range -// .div_mod(ctx, msl, BigUint::from(256u64), C::LIMB_BITS) -// .1; // get least significant *byte* -// range.div_mod(ctx, lsb, BigUint::from(2u64), 8).1 // sgn0 = lsb % 2 -// } + let lsb = range + .div_mod(ctx, msl, BigUint::from(256u64), C::LIMB_BITS) + .1; // get least significant *byte* + range.div_mod(ctx, lsb, BigUint::from(2u64), 8).1 // sgn0 = lsb % 2 +} -// /// Integer to Octet Stream (numberToBytesBE) -// pub fn i2osp( -// mut value: u128, -// length: usize, -// mut f: impl FnMut(F) -> AssignedValue, -// ) -> Vec> { -// let mut octet_string = vec![0; length]; -// for i in (0..length).rev() { -// octet_string[i] = value & 0xff; -// value >>= 8; -// } -// octet_string -// .into_iter() -// .map(|b| f(F::from(b as u64))) -// .collect() -// } +/// Integer to Octet Stream (numberToBytesBE) +pub fn i2osp( + mut value: u128, + length: usize, + mut f: impl FnMut(F) -> AssignedValue, +) -> Vec> { + let mut octet_string = vec![0; length]; + for i in (0..length).rev() { + octet_string[i] = value & 0xff; + value >>= 8; + } + octet_string + .into_iter() + .map(|b| f(F::from(b as u64))) + .collect() +} -// pub fn strxor( -// a: impl IntoIterator>, -// b: impl IntoIterator>, -// gate: &impl GateInstructions, -// ctx: &mut Context, -// ) -> Vec> { -// a.into_iter() -// .zip(b.into_iter()) -// .map(|(a, b)| bitwise_xor::<_, 8>(a, b, gate, ctx)) -// .collect() -// } +pub fn strxor( + a: impl IntoIterator>, + b: impl IntoIterator>, + gate: &impl GateInstructions, + ctx: &mut Context, +) -> Vec> { + a.into_iter() + .zip(b.into_iter()) + .map(|(a, b)| bitwise_xor::<_, 8>(a, b, gate, ctx)) + .collect() +} -// pub fn bitwise_xor( -// a: AssignedValue, -// b: AssignedValue, -// gate: &impl GateInstructions, -// ctx: &mut Context, -// ) -> AssignedValue { -// let one = ctx.load_constant(F::one()); -// let mut a_bits = gate.num_to_bits(ctx, a, BITS); -// let mut b_bits = gate.num_to_bits(ctx, b, BITS); +pub fn bitwise_xor( + a: AssignedValue, + b: AssignedValue, + gate: &impl GateInstructions, + ctx: &mut Context, +) -> AssignedValue { + let one = ctx.load_constant(F::one()); + let mut a_bits = gate.num_to_bits(ctx, a, BITS); + let mut b_bits = gate.num_to_bits(ctx, b, BITS); -// let xor_bits = a_bits -// .into_iter() -// .zip(b_bits.into_iter()) -// .map(|(a, b)| gate.xor(ctx, a, b)) -// .collect_vec(); + let xor_bits = a_bits + .into_iter() + .zip(b_bits.into_iter()) + .map(|(a, b)| gate.xor(ctx, a, b)) + .collect_vec(); -// bits_to_num(gate, ctx, xor_bits) -// } + bits_to_num(gate, ctx, xor_bits) +} -// pub fn bits_to_num>>( -// gate: &impl GateInstructions, -// ctx: &mut Context, -// bits: I, -// ) -> AssignedValue -// where -// I::IntoIter: DoubleEndedIterator + ExactSizeIterator, -// { -// let bits_iter = bits.into_iter(); -// assert!(bits_iter.len() <= F::NUM_BITS as usize); -// bits_iter.rev().fold(ctx.load_zero(), |acc, bit| { -// gate.mul_add(ctx, acc, QuantumCell::Constant(F::from(2u64)), bit) -// }) -// } +pub fn bits_to_num>>( + gate: &impl GateInstructions, + ctx: &mut Context, + bits: I, +) -> AssignedValue +where + I::IntoIter: DoubleEndedIterator + ExactSizeIterator, +{ + let bits_iter = bits.into_iter(); + assert!(bits_iter.len() <= F::NUM_BITS as usize); + bits_iter.rev().fold(ctx.load_zero(), |acc, bit| { + gate.mul_add(ctx, acc, QuantumCell::Constant(F::from(2u64)), bit) + }) +} From 0d5c09f7c9268e932d2e2f3182cff14a211110e8 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 7 Sep 2023 17:42:21 +0200 Subject: [PATCH 07/33] refactor again, use `thread_pool` instead of ctxs --- .../src/committee_update_circuit.rs | 4 +- .../src/gadget/crypto/hash2curve.rs | 63 ++-- .../src/gadget/crypto/sha256.rs | 46 ++- .../src/gadget/crypto/sha256/compression.rs | 268 +++++++++--------- .../src/gadget/crypto/sha256/spread.rs | 24 +- .../src/gadget/crypto/sha256_wide.rs | 4 +- lightclient-circuits/src/ssz_merkle.rs | 23 +- lightclient-circuits/src/sync_step_circuit.rs | 2 +- 8 files changed, 205 insertions(+), 229 deletions(-) diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index c934ab3b..122954c5 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -12,7 +12,7 @@ // use crate::{ // gadget::crypto::{ -// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, +// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, // HashToCurveChip, Sha256ChipWide, SpreadConfig, // }, // poseidon::{g1_array_poseidon, poseidon_sponge}, @@ -187,7 +187,7 @@ // fn sync_committee_root_ssz<'a, I: IntoIterator>>>( // ctx: &mut Context, // region: &mut Region<'_, F>, -// hasher: &'a impl HashChip, +// hasher: &'a impl HashInstructions, // compressed_encodings: I, // ) -> Result>, Error> { // let mut pubkeys_hashes = compressed_encodings diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 86af0e62..835df7b3 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -29,7 +29,7 @@ use itertools::Itertools; use num_bigint::{BigInt, BigUint}; use pasta_curves::arithmetic::SqrtRatio; -use super::ShaContexts; +use super::{ShaContexts, ShaThreadBuilder}; use super::{ sha256::HashInstructions, util::{fp2_sgn0, i2osp, strxor}, @@ -63,8 +63,7 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, pub fn hash_to_curve( &self, - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, fp_chip: &FpChip, msg: HashInput>, cache: &mut HashToCurveCache, @@ -72,8 +71,8 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, where C::Fq: FieldExtConstructor, { - let u = self.hash_to_field::(ctx_base, ctx_sha, fp_chip, msg, cache)?; - let p = self.map_to_curve::(ctx_base, fp_chip, u, cache)?; + let u = self.hash_to_field::(thread_pool, fp_chip, msg, cache)?; + let p = self.map_to_curve::(thread_pool.main(), fp_chip, u, cache)?; Ok(p) } @@ -87,8 +86,7 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L11 fn hash_to_field( &self, - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, fp_chip: &FpChip, msg: HashInput>, cache: &mut HashToCurveCache, @@ -99,15 +97,14 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, let safe_types = SafeTypeChip::new(range); // constants - let zero = ctx_base.load_zero(); - let one = ctx_base.load_constant(F::one()); + let zero = thread_pool.main().load_zero(); + let one = thread_pool.main().load_constant(F::one()); - let assigned_msg = msg.into_assigned(ctx_base).to_vec(); + let assigned_msg = msg.into_assigned(thread_pool.main()).to_vec(); let len_in_bytes = 2 * G2_EXT_DEGREE * L; let extended_msg = Self::expand_message_xmd( - ctx_base, - ctx_sha, + thread_pool, self.hash_chip, assigned_msg, len_in_bytes, @@ -117,12 +114,12 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, let limb_bases = cache.binary_bases.get_or_insert_with(|| { C::limb_bytes_bases() .into_iter() - .map(|base| ctx_base.load_constant(base)) + .map(|base| thread_pool.main().load_constant(base)) .collect() }); // 2^256 - let two_pow_256 = fp_chip.load_constant_uint(ctx_base, BigUint::from(2u8).pow(256)); + let two_pow_256 = fp_chip.load_constant_uint(thread_pool.main(), BigUint::from(2u8).pow(256)); let fq_bytes = C::BYTES_COMPRESSED / 2; let mut fst = true; @@ -141,7 +138,7 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, buf.to_vec(), &fp_chip.limb_bases, gate, - ctx_base, + thread_pool.main(), ); buf[rem..].copy_from_slice(&tv[32..]); @@ -149,12 +146,12 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, buf.to_vec(), &fp_chip.limb_bases, gate, - ctx_base, + thread_pool.main(), ); - let lo_2_256 = fp_chip.mul_no_carry(ctx_base, lo, two_pow_256.clone()); - let lo_2_356_hi = fp_chip.add_no_carry(ctx_base, lo_2_256, hi); - fp_chip.carry_mod(ctx_base, lo_2_356_hi) + let lo_2_256 = fp_chip.mul_no_carry(thread_pool.main(), lo, two_pow_256.clone()); + let lo_2_356_hi = fp_chip.add_no_carry(thread_pool.main(), lo_2_256, hi); + fp_chip.carry_mod(thread_pool.main(), lo_2_356_hi) }) .collect_vec(), ) @@ -200,8 +197,7 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, /// - https://github.com/paulmillr/noble-curves/blob/bf70ba9/src/abstract/hash-to-curve.ts#L63 /// - https://github.com/succinctlabs/telepathy-circuits/blob/d5c7771/circuits/hash_to_field.circom#L139 fn expand_message_xmd( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, hash_chip: &HC, msg: Vec>, len_in_bytes: usize, @@ -212,17 +208,17 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, // constants // const MAX_INPUT_SIZE: usize = 192; - let zero = ctx_base.load_zero(); - let one = ctx_base.load_constant(F::one()); + let zero = thread_pool.main().load_zero(); + let one = thread_pool.main().load_constant(F::one()); // assign DST bytes & cache them - let dst_len = ctx_base.load_constant(F::from(S::DST.len() as u64)); + let dst_len = thread_pool.main().load_constant(F::from(S::DST.len() as u64)); let dst_prime = cache .dst_with_len .get_or_insert_with(|| { S::DST .iter() - .map(|&b| ctx_base.load_constant(F::from(b as u64))) + .map(|&b| thread_pool.main().load_constant(F::from(b as u64))) .chain(iter::once(dst_len)) .collect() }) @@ -230,7 +226,7 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, // padding and length strings let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these - let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| ctx_base.load_constant(b)); + let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| thread_pool.main().load_constant(b)); // compute blocks let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); @@ -243,15 +239,14 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, .chain(dst_prime.clone()); let b_0 = hash_chip - .digest::<143>(ctx_base, ctx_sha, msg_prime.into(), false)? + .digest::<143>(thread_pool, msg_prime.into(), false)? .output_bytes; b_vals.insert( 0, hash_chip .digest::<77>( - ctx_base, - ctx_sha, + thread_pool, b_0.into_iter() .chain(iter::once(one)) .chain(dst_prime.clone()) @@ -262,16 +257,16 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, ); for i in 1..ell { - let preimg = strxor(b_0, b_vals[i - 1], gate, ctx_base) + let preimg = strxor(b_0, b_vals[i - 1], gate, thread_pool.main()) .into_iter() - .chain(iter::once(ctx_base.load_constant(F::from(i as u64 + 1)))) + .chain(iter::once(thread_pool.main().load_constant(F::from(i as u64 + 1)))) .chain(dst_prime.clone()) .into(); b_vals.insert( i, hash_chip - .digest::<77>(ctx_base, ctx_sha, preimg, false)? + .digest::<77>(thread_pool, preimg, false)? .output_bytes, ); } @@ -658,7 +653,6 @@ mod test { let spread = SpreadChip::new(&range); let sha256 = Sha256Chip::new(&range, spread); - let (ctx_base, mut ctx_sha) = builder.sha_contexts_pair(); let h2c_chip = HashToCurveChip::::new(&sha256); let fp_chip = halo2_ecc::bls12_381::FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); @@ -666,8 +660,7 @@ mod test { for input in input_vector { let mut cache = HashToCurveCache::::default(); let hp = h2c_chip.hash_to_curve::( - ctx_base, - &mut ctx_sha, + &mut builder, &fp_chip, input.clone().into_witness(), &mut cache, diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 750ece4b..85c7a56a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -48,8 +48,7 @@ pub trait HashInstructions { /// `strict` flag indicates whether to perform range check on input bytes. fn digest( &self, - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, input: HashInput>, strict: bool, ) -> Result, Error>; @@ -77,8 +76,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { fn digest( &self, - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, input: HashInput>, strict: bool, ) -> Result, Error> { @@ -91,7 +89,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { max_bytes }; - let assigned_input = input.into_assigned(ctx_base); + let assigned_input = input.into_assigned(thread_pool.main()); let mut assigned_input_bytes = assigned_input.to_vec(); let input_byte_size = assigned_input_bytes.len(); @@ -115,7 +113,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { // remaining_byte_size, // one_round_size * (max_round - num_round) // ); - let mut assign_byte = |byte: u8| ctx_base.load_witness(F::from(byte as u64)); + let mut assign_byte = |byte: u8| thread_pool.main().load_witness(F::from(byte as u64)); assigned_input_bytes.push(assign_byte(0x80)); @@ -137,18 +135,18 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { if strict { for &assigned in assigned_input_bytes.iter() { - range.range_check(ctx_base, assigned, 8); + range.range_check(thread_pool.main(), assigned, 8); } } - let assigned_num_round = ctx_base.load_witness(F::from(num_round as u64)); + let assigned_num_round = thread_pool.main().load_witness(F::from(num_round as u64)); // compute an initial state from the precomputed_input. let mut last_state = INIT_STATE; let mut assigned_last_state_vec = vec![last_state .iter() - .map(|state| ctx_base.load_witness(F::from(*state as u64))) + .map(|state| thread_pool.main().load_witness(F::from(*state as u64))) .collect_vec()]; let mut num_processed_input = 0; @@ -156,7 +154,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let assigned_input_word_at_round = &assigned_input_bytes[num_processed_input..(num_processed_input + one_round_size)]; let new_assigned_hs_out = sha256_compression( - ctx_base, ctx_sha, + thread_pool, &self.spread, assigned_input_word_at_round, assigned_last_state_vec.last().unwrap(), @@ -166,17 +164,17 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { num_processed_input += one_round_size; } - let zero = ctx_base.load_zero(); + let zero = thread_pool.main().load_zero(); let mut output_h_out = vec![zero; 8]; for (n_round, assigned_state) in assigned_last_state_vec.into_iter().enumerate() { let selector = gate.is_equal( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(n_round as u64)), assigned_num_round, ); for i in 0..8 { output_h_out[i] = - gate.select(ctx_base, assigned_state[i], output_h_out[i], selector) + gate.select(thread_pool.main(), assigned_state[i], output_h_out[i], selector) } } let output_digest_bytes = output_h_out @@ -185,21 +183,21 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let be_bytes = assigned_word.value().get_lower_32().to_be_bytes().to_vec(); let assigned_bytes = (0..4) .map(|idx| { - let assigned = ctx_base.load_witness(F::from(be_bytes[idx] as u64)); - range.range_check(ctx_base, assigned, 8); + let assigned = thread_pool.main().load_witness(F::from(be_bytes[idx] as u64)); + range.range_check(thread_pool.main(), assigned, 8); assigned }) .collect_vec(); - let mut sum = ctx_base.load_zero(); + let mut sum = thread_pool.main().load_zero(); for (idx, assigned_byte) in assigned_bytes.iter().copied().enumerate() { sum = gate.mul_add( - ctx_base, + thread_pool.main(), assigned_byte, QuantumCell::Constant(F::from(1u64 << (24 - 8 * idx))), sum, ); } - ctx_base.constrain_equal(&assigned_word, &sum); + thread_pool.main().constrain_equal(&assigned_word, &sum); assigned_bytes }) .collect_vec() @@ -268,15 +266,13 @@ mod test { let spread = SpreadChip::new(&range); let sha256 = Sha256Chip::new(&range, spread); - let (ctx_base, mut ctx_sha) = builder.sha_contexts_pair(); for input in input_vector { - let _ = sha256 - .digest::<64>( - ctx_base, &mut ctx_sha, - input.as_slice().into_witness(), - false, - )?; + let _ = sha256.digest::<64>( + &mut builder, + input.as_slice().into_witness(), + false, + )?; } builder.config(k, None); diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index 2584b0bf..06673505 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -1,5 +1,6 @@ use std::cell::RefMut; +use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::spread::{self, SpreadChip, SpreadConfig}; use super::util::{bits_le_to_fe, fe_to_bits_le}; @@ -53,8 +54,7 @@ pub const INIT_STATE: [u32; NUM_STATE_WORD] = [ pub type SpreadU32<'a, F> = (AssignedValue, AssignedValue); pub fn sha256_compression<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, assigned_input_bytes: &[AssignedValue], pre_state_words: &[AssignedValue], @@ -68,10 +68,10 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( let mut message_u32s = assigned_input_bytes .chunks(4) .map(|bytes| { - let mut sum = ctx_base.load_zero(); + let mut sum = thread_pool.main().load_zero(); for idx in 0..4 { sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(bytes[3 - idx]), QuantumCell::Constant(F::from(1u64 << (8 * idx))), QuantumCell::Existing(sum), @@ -89,20 +89,20 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // .collect_vec(); let mut message_spreads = message_u32s .iter() - .map(|dense| state_to_spread_u32(ctx_base, ctx_sha, spread_chip, dense)) + .map(|dense| state_to_spread_u32(thread_pool, spread_chip, dense)) .collect::>, Error>>()?; for idx in 16..64 { // let w_2_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 2])?; // let w_15_spread = state_to_spread_u32(ctx, range, ctx_spread, &message_u32s[idx - 15])?; - let term1 = sigma_lower1(ctx_base, ctx_sha, spread_chip, &message_spreads[idx - 2])?; - let term3 = sigma_lower0(ctx_base, ctx_sha, spread_chip, &message_spreads[idx - 15])?; + let term1 = sigma_lower1(thread_pool, spread_chip, &message_spreads[idx - 2])?; + let term3 = sigma_lower0(thread_pool, spread_chip, &message_spreads[idx - 15])?; // let term1_u32 = bits2u32(ctx, gate, &term1_bits); // let term3_u32 = bits2u32(ctx, gate, &term3_bits); let new_w = { - let mut sum = gate.add(ctx_base, term1, message_u32s[idx - 7]); - sum = gate.add(ctx_base, sum, term3); - sum = gate.add(ctx_base, sum, message_u32s[idx - 16]); - mod_u32(ctx_base, range, &sum) + let mut sum = gate.add(thread_pool.main(), term1, message_u32s[idx - 7]); + sum = gate.add(thread_pool.main(), sum, term3); + sum = gate.add(thread_pool.main(), sum, message_u32s[idx - 16]); + mod_u32(thread_pool.main(), range, &sum) }; // println!( // "idx {} term1 {:?}, term3 {:?}, new_w {:?}", @@ -112,7 +112,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // new_w.value() // ); message_u32s.push(new_w); - let new_w_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &new_w)?; + let new_w_spread = state_to_spread_u32(thread_pool, spread_chip, &new_w)?; message_spreads.push(new_w_spread); // if idx <= 61 { // let new_w_bits = gate.num_to_bits(ctx, &new_w, 32); @@ -131,13 +131,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( pre_state_words[6], pre_state_words[7], ); - let mut a_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &a)?; - let mut b_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &b)?; - let mut c_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &c)?; + let mut a_spread = state_to_spread_u32(thread_pool, spread_chip, &a)?; + let mut b_spread = state_to_spread_u32(thread_pool, spread_chip, &b)?; + let mut c_spread = state_to_spread_u32(thread_pool, spread_chip, &c)?; // let mut d_spread = state_to_spread_u32(ctx, range, ctx_spread, &d)?; - let mut e_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &e)?; - let mut f_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &f)?; - let mut g_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &g)?; + let mut e_spread = state_to_spread_u32(thread_pool, spread_chip, &e)?; + let mut f_spread = state_to_spread_u32(thread_pool, spread_chip, &f)?; + let mut g_spread = state_to_spread_u32(thread_pool, spread_chip, &g)?; // let mut h_spread = state_to_spread_u32(ctx, range, ctx_spread, &h)?; // let mut a_bits = gate.num_to_bits(ctx, &a, 32); // let mut b_bits = gate.num_to_bits(ctx, &b, 32); @@ -145,17 +145,16 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let mut e_bits = gate.num_to_bits(ctx, &e, 32); // let mut f_bits = gate.num_to_bits(ctx, &f, 32); // let mut g_bits = gate.num_to_bits(ctx, &g, 32); - let mut t1 = ctx_base.load_zero(); - let mut t2 = ctx_base.load_zero(); + let mut t1 = thread_pool.main().load_zero(); + let mut t2 = thread_pool.main().load_zero(); for idx in 0..64 { t1 = { // let e_spread = state_to_spread_u32(ctx, range, ctx_spread, &e)?; // let f_spread = state_to_spread_u32(ctx, range, ctx_spread, &f)?; // let g_spread = state_to_spread_u32(ctx, range, ctx_spread, &g)?; - let sigma_term = sigma_upper1(ctx_base, ctx_sha, spread_chip, &e_spread)?; + let sigma_term = sigma_upper1(thread_pool, spread_chip, &e_spread)?; let ch_term = ch( - ctx_base, - ctx_sha, + thread_pool, spread_chip, &e_spread, &f_spread, @@ -167,43 +166,42 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // sigma_term.value(), // ch_term.value() // ); - let add1 = gate.add(ctx_base, h, sigma_term); + let add1 = gate.add(thread_pool.main(), h, sigma_term); let add2 = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(add1), QuantumCell::Existing(ch_term), ); let add3 = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(add2), QuantumCell::Constant(F::from(ROUND_CONSTANTS[idx] as u64)), ); let add4 = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(add3), QuantumCell::Existing(message_u32s[idx]), ); - mod_u32(ctx_base, range, &add4) + mod_u32(thread_pool.main(), range, &add4) }; t2 = { // let a_spread = state_to_spread_u32(ctx, range, ctx_spread, &a)?; // let b_spread = state_to_spread_u32(ctx, range, ctx_spread, &b)?; // let c_spread = state_to_spread_u32(ctx, range, ctx_spread, &c)?; - let sigma_term = sigma_upper0(ctx_base, ctx_sha, spread_chip, &a_spread)?; + let sigma_term = sigma_upper0(thread_pool, spread_chip, &a_spread)?; let maj_term = maj( - ctx_base, - ctx_sha, + thread_pool, spread_chip, &a_spread, &b_spread, &c_spread, )?; let add = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(sigma_term), QuantumCell::Existing(maj_term), ); - mod_u32(ctx_base, range, &add) + mod_u32(thread_pool.main(), range, &add) }; // println!("idx {}, t1 {:?}, t2 {:?}", idx, t1.value(), t2.value()); h = g; @@ -214,13 +212,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( f_spread = e_spread; e = { let add = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(d), QuantumCell::Existing(t1), ); - mod_u32(ctx_base, range, &add) + mod_u32(thread_pool.main(), range, &add) }; - e_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &e)?; + e_spread = state_to_spread_u32(thread_pool, spread_chip, &e)?; d = c; // d_spread = c_spread; c = b; @@ -229,13 +227,13 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( b_spread = a_spread; a = { let add = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(t1), QuantumCell::Existing(t2), ); - mod_u32(ctx_base, range, &add) + mod_u32(thread_pool.main(), range, &add) }; - a_spread = state_to_spread_u32(ctx_base, ctx_sha, spread_chip, &a)?; + a_spread = state_to_spread_u32(thread_pool, spread_chip, &a)?; } let new_states = vec![a, b, c, d, e, f, g, h]; let next_state_words = new_states @@ -243,39 +241,38 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( .copied() .zip(pre_state_words.iter().copied()) .map(|(x, y)| { - let add = gate.add(ctx_base, QuantumCell::Existing(x), QuantumCell::Existing(y)); + let add = gate.add(thread_pool.main(), QuantumCell::Existing(x), QuantumCell::Existing(y)); // println!( // "pre {:?} new {:?} add {:?}", // y.value(), // x.value(), // add.value() // ); - mod_u32(ctx_base, range, &add) + mod_u32(thread_pool.main(), range, &add) }) .collect_vec(); Ok(next_state_words) } fn state_to_spread_u32<'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x: &AssignedValue, ) -> Result, Error> { let gate = spread_chip.range().gate(); let lo = F::from((x.value().get_lower_32() & ((1 << 16) - 1)) as u64); let hi = F::from((x.value().get_lower_32() >> 16) as u64); - let assigned_lo = ctx_base.load_witness(lo); - let assigned_hi = ctx_base.load_witness(hi); + let assigned_lo = thread_pool.main().load_witness(lo); + let assigned_hi = thread_pool.main().load_witness(hi); let composed = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(assigned_lo), ); - ctx_base.constrain_equal(x, &composed); - let lo_spread = spread_chip.spread(ctx_base, ctx_sha, &assigned_lo)?; - let hi_spread = spread_chip.spread(ctx_base, ctx_sha, &assigned_hi)?; + thread_pool.main().constrain_equal(x, &composed); + let lo_spread = spread_chip.spread(thread_pool, &assigned_lo)?; + let hi_spread = spread_chip.spread(thread_pool, &assigned_hi)?; Ok((lo_spread, hi_spread)) } @@ -301,8 +298,7 @@ fn mod_u32<'a, 'b: 'a, F: Field>( } fn ch<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -314,92 +310,92 @@ fn ch<'a, 'b: 'a, F: Field>( let range = spread_chip.range(); let gate = range.gate(); let p_lo = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), ); let p_hi = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), ); const MASK_EVEN_32: u64 = 0x55555555; - let x_neg_lo = gate.neg(ctx_base, QuantumCell::Existing(x_lo)); - let x_neg_hi = gate.neg(ctx_base, QuantumCell::Existing(x_hi)); + let x_neg_lo = gate.neg(thread_pool.main(), QuantumCell::Existing(x_lo)); + let x_neg_hi = gate.neg(thread_pool.main(), QuantumCell::Existing(x_hi)); let q_lo = three_add( - ctx_base, + thread_pool.main(), gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_lo), QuantumCell::Existing(z_lo), ); let q_hi = three_add( - ctx_base, + thread_pool.main(), gate, QuantumCell::Constant(F::from(MASK_EVEN_32)), QuantumCell::Existing(x_neg_hi), QuantumCell::Existing(z_hi), ); - let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &p_lo)?; - let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &p_hi)?; - let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_lo)?; - let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &q_hi)?; + let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_lo)?; + let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_hi)?; + let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_lo)?; + let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_hi)?; { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &p_lo_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &p_lo_odd)?; + let even_spread = spread_chip.spread(thread_pool, &p_lo_even)?; + let odd_spread = spread_chip.spread(thread_pool, &p_lo_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &p_lo); + thread_pool.main().constrain_equal(&sum, &p_lo); } { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &p_hi_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &p_hi_odd)?; + let even_spread = spread_chip.spread(thread_pool, &p_hi_even)?; + let odd_spread = spread_chip.spread(thread_pool, &p_hi_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &p_hi); + thread_pool.main().constrain_equal(&sum, &p_hi); } { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &q_lo_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &q_lo_odd)?; + let even_spread = spread_chip.spread(thread_pool, &q_lo_even)?; + let odd_spread = spread_chip.spread(thread_pool, &q_lo_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &q_lo); + thread_pool.main().constrain_equal(&sum, &q_lo); } { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &q_hi_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &q_hi_odd)?; + let even_spread = spread_chip.spread(thread_pool, &q_hi_even)?; + let odd_spread = spread_chip.spread(thread_pool, &q_hi_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &q_hi); + thread_pool.main().constrain_equal(&sum, &q_hi); } let out_lo = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(p_lo_odd), QuantumCell::Existing(q_lo_odd), ); let out_hi = gate.add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(p_hi_odd), QuantumCell::Existing(q_hi_odd), ); let out = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(out_hi), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(out_lo), @@ -408,8 +404,7 @@ fn ch<'a, 'b: 'a, F: Field>( } fn maj<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x: &SpreadU32<'a, F>, y: &SpreadU32<'a, F>, @@ -421,45 +416,45 @@ fn maj<'a, 'b: 'a, F: Field>( let range = spread_chip.range(); let gate = range.gate(); let m_lo = three_add( - ctx_base, + thread_pool.main(), range.gate(), QuantumCell::Existing(x_lo), QuantumCell::Existing(y_lo), QuantumCell::Existing(z_lo), ); let m_hi = three_add( - ctx_base, + thread_pool.main(), range.gate(), QuantumCell::Existing(x_hi), QuantumCell::Existing(y_hi), QuantumCell::Existing(z_hi), ); - let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_lo)?; - let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &m_hi)?; + let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_lo)?; + let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_hi)?; { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &m_lo_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &m_lo_odd)?; + let even_spread = spread_chip.spread(thread_pool, &m_lo_even)?; + let odd_spread = spread_chip.spread(thread_pool, &m_lo_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &m_lo); + thread_pool.main().constrain_equal(&sum, &m_lo); } { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &m_hi_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &m_hi_odd)?; + let even_spread = spread_chip.spread(thread_pool, &m_hi_even)?; + let odd_spread = spread_chip.spread(thread_pool, &m_hi_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &m_hi); + thread_pool.main().constrain_equal(&sum, &m_hi); } let m = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(m_hi_odd), QuantumCell::Constant(F::from(1u64 << 16)), QuantumCell::Existing(m_lo_odd), @@ -479,8 +474,7 @@ fn three_add<'a, 'b: 'a, F: Field>( } fn sigma_upper0<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -494,8 +488,7 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( F::from((1u64 << 40) + (1u64 << 18) + (1u64 << 0)), ]; sigma_generic( - ctx_base, - ctx_sha, + thread_pool, spread_chip, x_spread, &STARTS, @@ -506,8 +499,7 @@ fn sigma_upper0<'a, 'b: 'a, F: Field>( } fn sigma_upper1<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -521,8 +513,7 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( F::from((1u64 << 38) + (1u64 << 28) + (1u64 << 0)), ]; sigma_generic( - ctx_base, - ctx_sha, + thread_pool, spread_chip, x_spread, &STARTS, @@ -533,8 +524,7 @@ fn sigma_upper1<'a, 'b: 'a, F: Field>( } fn sigma_lower0<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -548,8 +538,7 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( F::from((1u64 << 30) + (1u64 << 22) + (1u64 << 0)), ]; sigma_generic( - ctx_base, - ctx_sha, + thread_pool, spread_chip, x_spread, &STARTS, @@ -560,8 +549,7 @@ fn sigma_lower0<'a, 'b: 'a, F: Field>( } fn sigma_lower1<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, ) -> Result, Error> { @@ -575,8 +563,7 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( F::from((1u64 << 18) + (1u64 << 4) + (1u64 << 0)), ]; sigma_generic( - ctx_base, - ctx_sha, + thread_pool, spread_chip, x_spread, &STARTS, @@ -588,8 +575,7 @@ fn sigma_lower1<'a, 'b: 'a, F: Field>( #[allow(clippy::too_many_arguments)] fn sigma_generic<'a, 'b: 'a, F: Field>( - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, spread_chip: &SpreadChip<'a, F>, x_spread: &SpreadU32, starts: &[usize; 4], @@ -615,7 +601,7 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let assigned_spread = spread_config.spread(ctx, range, &assigned_dense)?; // let result: Result, Error> = Ok(assigned_spread); - ctx_base.load_witness(fe_val) + thread_pool.main().load_witness(fe_val) }; let assigned_a = assign_bits(&bits_val, starts[0], ends[0], paddings[0]); let assigned_b = assign_bits(&bits_val, starts[1], ends[1], paddings[1]); @@ -624,30 +610,30 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( { let mut sum = assigned_a; sum = gate.mul_add( - ctx_base, + thread_pool.main(), assigned_b, QuantumCell::Constant(F::from(1 << (2 * starts[1]))), sum, ); sum = gate.mul_add( - ctx_base, + thread_pool.main(), assigned_c, QuantumCell::Constant(F::from(1 << (2 * starts[2]))), sum, ); sum = gate.mul_add( - ctx_base, + thread_pool.main(), assigned_d, QuantumCell::Constant(F::from(1 << (2 * starts[3]))), sum, ); let x_composed = gate.mul_add( - ctx_base, + thread_pool.main(), x_spread.1, QuantumCell::Constant(F::from(1 << 32)), x_spread.0, ); - ctx_base.constrain_equal(&x_composed, &sum); + thread_pool.main().constrain_equal(&x_composed, &sum); }; let r_spread = { @@ -655,63 +641,63 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let b_coeff = F::from(1u64 << 0 + 1u64 << 42 + 1u64 << 24); // let c_coeff = F::from(1u64 << 22 + 1u64 << 0 + 1u64 << 46); // let d_coeff = F::from(1u64 << 40 + 1u64 << 18 + 1u64 << 0); - let mut sum = ctx_base.load_zero(); + let mut sum = thread_pool.main().load_zero(); // let assigned_a_spread = spread_config.spread(ctx, range, &assigned_a)?; // let assigned_b_spread = spread_config.spread(ctx, range, &assigned_b)?; // let assigned_c_spread = spread_config.spread(ctx, range, &assigned_c)?; // let assigned_d_spread = spread_config.spread(ctx, range, &assigned_d)?; - sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[0]), assigned_a, sum); - sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[1]), assigned_b, sum); - sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[2]), assigned_c, sum); - sum = gate.mul_add(ctx_base, QuantumCell::Constant(coeffs[3]), assigned_d, sum); + sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[0]), assigned_a, sum); + sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[1]), assigned_b, sum); + sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[2]), assigned_c, sum); + sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[3]), assigned_d, sum); sum }; let (r_lo, r_hi) = { let lo = F::from(r_spread.value().get_lower_32() as u64); let hi = F::from(((r_spread.value().get_lower_128() >> 32) & ((1u128 << 32) - 1)) as u64); - let assigned_lo = ctx_base.load_witness(lo); - let assigned_hi = ctx_base.load_witness(hi); - range.range_check(ctx_base, assigned_lo, 32); - range.range_check(ctx_base, assigned_hi, 32); + let assigned_lo = thread_pool.main().load_witness(lo); + let assigned_hi = thread_pool.main().load_witness(hi); + range.range_check(thread_pool.main(), assigned_lo, 32); + range.range_check(thread_pool.main(), assigned_hi, 32); let composed = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(assigned_hi), QuantumCell::Constant(F::from(1u64 << 32)), QuantumCell::Existing(assigned_lo), ); - ctx_base.constrain_equal(&r_spread, &composed); + thread_pool.main().constrain_equal(&r_spread, &composed); (assigned_lo, assigned_hi) }; - let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &r_lo)?; - let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(ctx_base, &r_hi)?; + let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_lo)?; + let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_hi)?; { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &r_lo_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &r_lo_odd)?; + let even_spread = spread_chip.spread(thread_pool, &r_lo_even)?; + let odd_spread = spread_chip.spread(thread_pool, &r_lo_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &r_lo); + thread_pool.main().constrain_equal(&sum, &r_lo); } { - let even_spread = spread_chip.spread(ctx_base, ctx_sha, &r_hi_even)?; - let odd_spread = spread_chip.spread(ctx_base, ctx_sha, &r_hi_odd)?; + let even_spread = spread_chip.spread(thread_pool, &r_hi_even)?; + let odd_spread = spread_chip.spread(thread_pool, &r_hi_odd)?; let sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Constant(F::from(2)), QuantumCell::Existing(odd_spread), QuantumCell::Existing(even_spread), ); - ctx_base.constrain_equal(&sum, &r_hi); + thread_pool.main().constrain_equal(&sum, &r_hi); } let r = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(r_hi_even), QuantumCell::Constant(F::from(1 << 16)), QuantumCell::Existing(r_lo_even), diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 9f03c226..1134f2b2 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -1,5 +1,6 @@ use std::marker::PhantomData; +use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::{compression::SpreadU32, util::*}; use eth_types::Field; @@ -132,32 +133,31 @@ impl<'a, F: Field> SpreadChip<'a, F> { } pub fn spread( &self, - ctx_base: &mut Context, - ctx_sha: &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, dense: &AssignedValue, ) -> Result, Error> { let gate = self.range.gate(); let limb_bits = self.range.lookup_bits(); let num_limbs = 16 / limb_bits; let limbs = decompose(dense.value(), num_limbs, limb_bits); - let assigned_limbs = ctx_base.assign_witnesses(limbs); + let assigned_limbs = thread_pool.main().assign_witnesses(limbs); { - let mut limbs_sum = ctx_base.load_zero(); + let mut limbs_sum = thread_pool.main().load_zero(); for (idx, limb) in assigned_limbs.iter().copied().enumerate() { limbs_sum = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(limb), QuantumCell::Constant(F::from(1 << (limb_bits * idx))), QuantumCell::Existing(limbs_sum), ); } - ctx_base.constrain_equal(&limbs_sum, dense); + thread_pool.main().constrain_equal(&limbs_sum, dense); } - let mut assigned_spread = ctx_base.load_zero(); + let mut assigned_spread = thread_pool.main().load_zero(); for (idx, limb) in assigned_limbs.iter().enumerate() { - let spread_limb = self.spread_limb(ctx_base, ctx_sha, limb)?; + let spread_limb = self.spread_limb(thread_pool, limb)?; assigned_spread = gate.mul_add( - ctx_base, + thread_pool.main(), QuantumCell::Existing(spread_limb), QuantumCell::Constant(F::from(1 << (2 * limb_bits * idx))), QuantumCell::Existing(assigned_spread), @@ -186,10 +186,10 @@ impl<'a, F: Field> SpreadChip<'a, F> { fn spread_limb( &self, - ctx_base: &mut Context, - (ctx_dense, ctx_spread): &mut ShaContexts, + thread_pool: &mut ShaThreadBuilder, limb: &AssignedValue, ) -> Result, Error> { + let (ctx_base, (ctx_dense, ctx_spread)) = thread_pool.sha_contexts_pair(); let assigned_dense = ctx_dense.load_witness(*limb.value()); ctx_base.constrain_equal(&assigned_dense, limb); let spread_value: F = { @@ -203,7 +203,7 @@ impl<'a, F: Field> SpreadChip<'a, F> { let assigned_spread = ctx_base.load_witness(spread_value); let assigned_spread_vanila = ctx_spread.load_witness(*assigned_spread.value()); - ctx_base.constrain_equal(&assigned_spread_vanila, &assigned_spread); + thread_pool.main().constrain_equal(&assigned_spread_vanila, &assigned_spread); Ok(assigned_spread) } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 34fc2cf2..77486872 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -24,7 +24,7 @@ // plonk::{Assigned, Error}, // }; -// use super::{AssignedHashResult, HashChip}; +// use super::{AssignedHashResult, HashInstructions}; // const SHA256_CONTEXT_ID: usize = usize::MAX; @@ -37,7 +37,7 @@ // sha256_circuit_offset: RefCell, // } -// impl<'a, F: Field> HashChip for Sha256ChipWide<'a, F> { +// impl<'a, F: Field> HashInstructions for Sha256ChipWide<'a, F> { // const BLOCK_SIZE: usize = 64; // const DIGEST_SIZE: usize = 32; diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index e551c6f6..f748e4e5 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -4,7 +4,7 @@ // use itertools::Itertools; // use crate::{ -// gadget::crypto::HashChip, +// gadget::crypto::{HashInstructions, ShaContexts, ShaThreadBuilder}, // util::{IntoConstant, IntoWitness}, // witness::{HashInput, HashInputChunk}, // }; @@ -266,9 +266,9 @@ // ]; // pub fn ssz_merkleize_chunks( -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// hasher: &impl HashChip, +// ctx_base: &mut Context, +// ctx_sha: &mut ShaContexts, +// hasher: &impl HashInstructions, // chunks: impl IntoIterator>>, // ) -> Result>, Error> { // let mut chunks = chunks.into_iter().collect_vec(); @@ -289,7 +289,7 @@ // .take(3) // .map(|(left, right)| { // hasher -// .digest::<64>(HashInput::TwoToOne(left, right), ctx, region) +// .digest::<64>(ctx_base, ctx_sha, HashInput::TwoToOne(left, right), false) // .map(|res| res.output_bytes.into()) // }) // .collect::, _>>()?; @@ -306,26 +306,27 @@ // } // pub fn verify_merkle_proof( -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// hasher: &impl HashChip, +// thread_pool: &ShaThreadBuilder, +// hasher: &impl HashInstructions, // proof: impl IntoIterator>>, // leaf: HashInputChunk>, // root: &[AssignedValue], // mut gindex: usize, // ) -> Result<(), Error> { +// let (sha) // let mut computed_hash = leaf; // for witness in proof.into_iter() { // computed_hash = hasher // .digest::<64>( +// ctx_base, +// ctx_sha, // if gindex % 2 == 0 { // HashInput::TwoToOne(computed_hash, witness) // } else { // HashInput::TwoToOne(witness, computed_hash) // }, -// ctx, -// region, +// false, // )? // .output_bytes // .into(); @@ -338,7 +339,7 @@ // }); // computed_root.zip(root.iter()).for_each(|(a, b)| { -// ctx.constrain_equal(&a, b); +// ctx_base.constrain_equal(&a, b); // }); // Ok(()) diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 017874dc..85bc1580 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -12,7 +12,7 @@ // use crate::{ // gadget::crypto::{ -// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashChip, HashToCurveCache, +// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, // HashToCurveChip, Sha256Chip, SpreadConfig, // }, // poseidon::{g1_array_poseidon, poseidon_sponge}, From e56353742c203512d237d7662ae00bbd93c45a49 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Fri, 8 Sep 2023 12:40:27 +0200 Subject: [PATCH 08/33] refactor step circuit & agrs struct --- Cargo.toml | 6 +- .../src/gadget/crypto/hash2curve.rs | 4 +- lightclient-circuits/src/gadget/crypto/mod.rs | 7 +- .../src/gadget/crypto/sha256.rs | 33 +- lightclient-circuits/src/sha256_circuit.rs | 20 - lightclient-circuits/src/ssz_merkle.rs | 665 +++++----- lightclient-circuits/src/sync_step_circuit.rs | 1119 +++++++---------- lightclient-circuits/src/util.rs | 8 +- lightclient-circuits/src/witness.rs | 3 - lightclient-circuits/src/witness/merkle.rs | 75 -- lightclient-circuits/src/witness/state.rs | 77 +- preprocessor/scripts/generateInputData.ts | 12 +- test_data/sync_state.json | 1 - test_data/sync_step.json | 1 + 14 files changed, 913 insertions(+), 1118 deletions(-) delete mode 100644 lightclient-circuits/src/witness/merkle.rs delete mode 100644 test_data/sync_state.json create mode 100644 test_data/sync_step.json diff --git a/Cargo.toml b/Cargo.toml index b9d26687..f54a4800 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,12 +26,12 @@ halo2curves = { git = "https://github.com/timoftime/halo2curves", branch = "dev/ # halo2curves = { path = "../halo2curves" } [patch."https://github.com/axiom-crypto/halo2-lib"] -halo2-base = { git = "https://github.com/timoftime/halo2-lib", rev = "7cebe716bb0569a7cb741c44ef8e87b2eadbbafb", default-features = false, features = [ +halo2-base = { git = "https://github.com/timoftime/halo2-lib", rev = "d3455345c40fdee4462e400b55b94559c6d494e9", default-features = false, features = [ "halo2-pse", "display", ] } -halo2-ecc = { git = "https://github.com/timoftime/halo2-lib", rev = "7cebe716bb0569a7cb741c44ef8e87b2eadbbafb", default-features = false } -poseidon = { git = "https://github.com/timoftime/halo2-lib", rev = "7cebe716bb0569a7cb741c44ef8e87b2eadbbafb", default-features = false } +halo2-ecc = { git = "https://github.com/timoftime/halo2-lib", rev = "d3455345c40fdee4462e400b55b94559c6d494e9", default-features = false } +poseidon = { git = "https://github.com/timoftime/halo2-lib", rev = "d3455345c40fdee4462e400b55b94559c6d494e9", default-features = false } # halo2-base = { path = "../halo2-lib/halo2-base", default-features = false, features = [ # "halo2-pse", diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 835df7b3..d0027601 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -650,9 +650,7 @@ mod test { input_vector: &[Vec], ) -> Result, Error> { let range = RangeChip::default(8); - let spread = SpreadChip::new(&range); - - let sha256 = Sha256Chip::new(&range, spread); + let sha256 = Sha256Chip::new(&range); let h2c_chip = HashToCurveChip::::new(&sha256); let fp_chip = halo2_ecc::bls12_381::FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 4865d1ee..d903a535 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -10,8 +10,11 @@ use halo2_ecc::{ ecc::{EcPoint, EccChip}, fields::{fp2, vector::FieldVector, FieldExtConstructor}, }; -// pub use hash2curve::{HashToCurveCache, HashToCurveChip}; -pub use sha256::{AssignedHashResult, HashInstructions, Sha256Chip, SpreadConfig, ShaThreadBuilder, ShaContexts}; +pub use hash2curve::{HashToCurveCache, HashToCurveChip}; +pub use sha256::{ + AssignedHashResult, HashInstructions, Sha256Chip, ShaContexts, ShaThreadBuilder, SpreadChip, + SpreadConfig, +}; pub use sha256_wide::*; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 85c7a56a..dc94f4cd 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -65,7 +65,6 @@ pub struct AssignedHashResult { #[derive(Debug, Clone)] pub struct Sha256Chip<'a, F: Field> { - range: &'a RangeChip, spread: SpreadChip<'a, F>, // extra_assignments: RefCell>, } @@ -95,7 +94,7 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let input_byte_size = assigned_input_bytes.len(); let input_byte_size_with_9 = input_byte_size + 9; assert!(input_byte_size <= MAX_INPUT_SIZE); - let range = self.range; + let range = self.spread.range(); let gate = &range.gate; let one_round_size = Self::BLOCK_SIZE; @@ -173,8 +172,12 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { assigned_num_round, ); for i in 0..8 { - output_h_out[i] = - gate.select(thread_pool.main(), assigned_state[i], output_h_out[i], selector) + output_h_out[i] = gate.select( + thread_pool.main(), + assigned_state[i], + output_h_out[i], + selector, + ) } } let output_digest_bytes = output_h_out @@ -183,7 +186,9 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { let be_bytes = assigned_word.value().get_lower_32().to_be_bytes().to_vec(); let assigned_bytes = (0..4) .map(|idx| { - let assigned = thread_pool.main().load_witness(F::from(be_bytes[idx] as u64)); + let assigned = thread_pool + .main() + .load_witness(F::from(be_bytes[idx] as u64)); range.range_check(thread_pool.main(), assigned, 8); assigned }) @@ -212,13 +217,15 @@ impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { } fn range(&self) -> &RangeChip { - self.range + self.spread.range() } } impl<'a, F: Field> Sha256Chip<'a, F> { - pub fn new(range: &'a RangeChip, spread: SpreadChip<'a, F>) -> Self { - Self { range, spread } + pub fn new(range: &'a RangeChip) -> Self { + Self { + spread: SpreadChip::new(range), + } } } @@ -263,16 +270,10 @@ mod test { input_vector: &[Vec], ) -> Result, Error> { let range = RangeChip::default(8); - let spread = SpreadChip::new(&range); - - let sha256 = Sha256Chip::new(&range, spread); + let sha256 = Sha256Chip::new(&range); for input in input_vector { - let _ = sha256.digest::<64>( - &mut builder, - input.as_slice().into_witness(), - false, - )?; + let _ = sha256.digest::<64>(&mut builder, input.as_slice().into_witness(), false)?; } builder.config(k, None); diff --git a/lightclient-circuits/src/sha256_circuit.rs b/lightclient-circuits/src/sha256_circuit.rs index a3c69f4f..82b744f4 100644 --- a/lightclient-circuits/src/sha256_circuit.rs +++ b/lightclient-circuits/src/sha256_circuit.rs @@ -1110,10 +1110,6 @@ pub struct Sha256Circuit<'a, F: Field> { } impl<'a, F: Field> Sha256Circuit<'a, F> { - fn new_from_state(state: &'a witness::SyncState) -> Self { - todo!() - } - /// Make the assignments to the KeccakCircuit fn synthesize_sub( &self, @@ -1148,8 +1144,6 @@ impl<'a, F: Field> Sha256Circuit<'a, F> { mod tests { use std::fs; - use crate::witness::MerkleTrace; - use super::*; use halo2_proofs::{ circuit::SimpleFloorPlanner, dev::MockProver, halo2curves::bn256::Fr, plonk::Circuit, @@ -1224,18 +1218,4 @@ mod tests { let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); prover.assert_satisfied(); } - - #[test] - fn test_sha256_circuit() { - let k = 13; - let merkle_trace: MerkleTrace = - serde_json::from_slice(&fs::read("../test_data/merkle_trace.json").unwrap()).unwrap(); - let inputs = merkle_trace.sha256_inputs(); - let circuit = TestSha256:: { - inner: Sha256Circuit::new(&inputs), - }; - - let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } } diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index f748e4e5..5a2c53f4 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -1,346 +1,345 @@ -// use eth_types::Field; -// use halo2_base::{AssignedValue, Context, QuantumCell}; -// use halo2_proofs::{circuit::Region, plonk::Error}; -// use itertools::Itertools; +use std::os::unix::thread; -// use crate::{ -// gadget::crypto::{HashInstructions, ShaContexts, ShaThreadBuilder}, -// util::{IntoConstant, IntoWitness}, -// witness::{HashInput, HashInputChunk}, -// }; +use eth_types::Field; +use halo2_base::{AssignedValue, Context, QuantumCell}; +use halo2_proofs::{circuit::Region, plonk::Error}; +use itertools::Itertools; -// pub const ZERO_HASHES: [[u8; 32]; 64] = [ -// [0; 32], -// [ -// 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, -// 32, 217, 240, 232, 234, 152, 49, 169, 39, 89, 251, 75, -// ], -// [ -// 219, 86, 17, 78, 0, 253, 212, 193, 248, 92, 137, 43, 243, 90, 201, 168, 146, 137, 170, 236, -// 177, 235, 208, 169, 108, 222, 96, 106, 116, 139, 93, 113, -// ], -// [ -// 199, 128, 9, 253, 240, 127, 197, 106, 17, 241, 34, 55, 6, 88, 163, 83, 170, 165, 66, 237, -// 99, 228, 76, 75, 193, 95, 244, 205, 16, 90, 179, 60, -// ], -// [ -// 83, 109, 152, 131, 127, 45, 209, 101, 165, 93, 94, 234, 233, 20, 133, 149, 68, 114, 213, -// 111, 36, 109, 242, 86, 191, 60, 174, 25, 53, 42, 18, 60, -// ], -// [ -// 158, 253, 224, 82, 170, 21, 66, 159, 174, 5, 186, 212, 208, 177, 215, 198, 77, 166, 77, 3, -// 215, 161, 133, 74, 88, 140, 44, 184, 67, 12, 13, 48, -// ], -// [ -// 216, 141, 223, 238, 212, 0, 168, 117, 85, 150, 178, 25, 66, 193, 73, 126, 17, 76, 48, 46, -// 97, 24, 41, 15, 145, 230, 119, 41, 118, 4, 31, 161, -// ], -// [ -// 135, 235, 13, 219, 165, 126, 53, 246, 210, 134, 103, 56, 2, 164, 175, 89, 117, 226, 37, 6, -// 199, 207, 76, 100, 187, 107, 229, 238, 17, 82, 127, 44, -// ], -// [ -// 38, 132, 100, 118, 253, 95, 197, 74, 93, 67, 56, 81, 103, 201, 81, 68, 242, 100, 63, 83, -// 60, 200, 91, 185, 209, 107, 120, 47, 141, 125, 177, 147, -// ], -// [ -// 80, 109, 134, 88, 45, 37, 36, 5, 184, 64, 1, 135, 146, 202, 210, 191, 18, 89, 241, 239, 90, -// 165, 248, 135, 225, 60, 178, 240, 9, 79, 81, 225, -// ], -// [ -// 255, 255, 10, 215, 230, 89, 119, 47, 149, 52, 193, 149, 200, 21, 239, 196, 1, 78, 241, 225, -// 218, 237, 68, 4, 192, 99, 133, 209, 17, 146, 233, 43, -// ], -// [ -// 108, 240, 65, 39, 219, 5, 68, 28, 216, 51, 16, 122, 82, 190, 133, 40, 104, 137, 14, 67, 23, -// 230, 160, 42, 180, 118, 131, 170, 117, 150, 66, 32, -// ], -// [ -// 183, 208, 95, 135, 95, 20, 0, 39, 239, 81, 24, 162, 36, 123, 187, 132, 206, 143, 47, 15, -// 17, 35, 98, 48, 133, 218, 247, 150, 12, 50, 159, 95, -// ], -// [ -// 223, 106, 245, 245, 187, 219, 107, 233, 239, 138, 166, 24, 228, 191, 128, 115, 150, 8, 103, -// 23, 30, 41, 103, 111, 139, 40, 77, 234, 106, 8, 168, 94, -// ], -// [ -// 181, 141, 144, 15, 94, 24, 46, 60, 80, 239, 116, 150, 158, 161, 108, 119, 38, 197, 73, 117, -// 124, 194, 53, 35, 195, 105, 88, 125, 167, 41, 55, 132, -// ], -// [ -// 212, 154, 117, 2, 255, 207, 176, 52, 11, 29, 120, 133, 104, 133, 0, 202, 48, 129, 97, 167, -// 249, 107, 98, 223, 157, 8, 59, 113, 252, 200, 242, 187, -// ], -// [ -// 143, 230, 177, 104, 146, 86, 192, 211, 133, 244, 47, 91, 190, 32, 39, 162, 44, 25, 150, -// 225, 16, 186, 151, 193, 113, 211, 229, 148, 141, 233, 43, 235, -// ], -// [ -// 141, 13, 99, 195, 158, 186, 222, 133, 9, 224, 174, 60, 156, 56, 118, 251, 95, 161, 18, 190, -// 24, 249, 5, 236, 172, 254, 203, 146, 5, 118, 3, 171, -// ], -// [ -// 149, 238, 200, 178, 229, 65, 202, 212, 233, 29, 227, 131, 133, 242, 224, 70, 97, 159, 84, -// 73, 108, 35, 130, 203, 108, 172, 213, 185, 140, 38, 245, 164, -// ], -// [ -// 248, 147, 233, 8, 145, 119, 117, 182, 43, 255, 35, 41, 77, 187, 227, 161, 205, 142, 108, -// 193, 195, 91, 72, 1, 136, 123, 100, 106, 111, 129, 241, 127, -// ], -// [ -// 205, 219, 167, 181, 146, 227, 19, 51, 147, 193, 97, 148, 250, 199, 67, 26, 191, 47, 84, -// 133, 237, 113, 29, 178, 130, 24, 60, 129, 158, 8, 235, 170, -// ], -// [ -// 138, 141, 127, 227, 175, 140, 170, 8, 90, 118, 57, 168, 50, 0, 20, 87, 223, 185, 18, 138, -// 128, 97, 20, 42, 208, 51, 86, 41, 255, 35, 255, 156, -// ], -// [ -// 254, 179, 195, 55, 215, 165, 26, 111, 191, 0, 185, 227, 76, 82, 225, 201, 25, 92, 150, 155, -// 212, 231, 160, 191, 213, 29, 92, 91, 237, 156, 17, 103, -// ], -// [ -// 231, 31, 10, 168, 60, 195, 46, 223, 190, 250, 159, 77, 62, 1, 116, 202, 133, 24, 46, 236, -// 159, 58, 9, 246, 166, 192, 223, 99, 119, 165, 16, 215, -// ], -// [ -// 49, 32, 111, 168, 10, 80, 187, 106, 190, 41, 8, 80, 88, 241, 98, 18, 33, 42, 96, 238, 200, -// 240, 73, 254, 203, 146, 216, 200, 224, 168, 75, 192, -// ], -// [ -// 33, 53, 43, 254, 203, 237, 221, 233, 147, 131, 159, 97, 76, 61, 172, 10, 62, 227, 117, 67, -// 249, 180, 18, 177, 97, 153, 220, 21, 142, 35, 181, 68, -// ], -// [ -// 97, 158, 49, 39, 36, 187, 109, 124, 49, 83, 237, 157, 231, 145, 215, 100, 163, 102, 179, -// 137, 175, 19, 197, 139, 248, 168, 217, 4, 129, 164, 103, 101, -// ], -// [ -// 124, 221, 41, 134, 38, 130, 80, 98, 141, 12, 16, 227, 133, 197, 140, 97, 145, 230, 251, -// 224, 81, 145, 188, 192, 79, 19, 63, 44, 234, 114, 193, 196, -// ], -// [ -// 132, 137, 48, 189, 123, 168, 202, 197, 70, 97, 7, 33, 19, 251, 39, 136, 105, 224, 123, 184, -// 88, 127, 145, 57, 41, 51, 55, 77, 1, 123, 203, 225, -// ], -// [ -// 136, 105, 255, 44, 34, 178, 140, 193, 5, 16, 217, 133, 50, 146, 128, 51, 40, 190, 79, 176, -// 232, 4, 149, 232, 187, 141, 39, 31, 91, 136, 150, 54, -// ], -// [ -// 181, 254, 40, 231, 159, 27, 133, 15, 134, 88, 36, 108, 233, 182, 161, 231, 180, 159, 192, -// 109, 183, 20, 62, 143, 224, 180, 242, 176, 197, 82, 58, 92, -// ], -// [ -// 152, 94, 146, 159, 112, 175, 40, 208, 189, 209, 169, 10, 128, 143, 151, 127, 89, 124, 124, -// 119, 140, 72, 158, 152, 211, 189, 137, 16, 211, 26, 192, 247, -// ], -// [ -// 198, 246, 126, 2, 230, 228, 225, 189, 239, 185, 148, 198, 9, 137, 83, 243, 70, 54, 186, 43, -// 108, 162, 10, 71, 33, 210, 178, 106, 136, 103, 34, 255, -// ], -// [ -// 28, 154, 126, 95, 241, 207, 72, 180, 173, 21, 130, 211, 244, 228, 161, 0, 79, 59, 32, 216, -// 197, 162, 183, 19, 135, 164, 37, 74, 217, 51, 235, 197, -// ], -// [ -// 47, 7, 90, 226, 41, 100, 107, 111, 106, 237, 25, 165, 227, 114, 207, 41, 80, 129, 64, 30, -// 184, 147, 255, 89, 155, 63, 154, 204, 12, 13, 62, 125, -// ], -// [ -// 50, 137, 33, 222, 181, 150, 18, 7, 104, 1, 232, 205, 97, 89, 33, 7, 181, 198, 124, 121, -// 184, 70, 89, 92, 198, 50, 12, 57, 91, 70, 54, 44, -// ], -// [ -// 191, 185, 9, 253, 178, 54, 173, 36, 17, 180, 228, 136, 56, 16, 160, 116, 184, 64, 70, 70, -// 137, 152, 108, 63, 138, 128, 145, 130, 126, 23, 195, 39, -// ], -// [ -// 85, 216, 251, 54, 135, 186, 59, 164, 159, 52, 44, 119, 245, 161, 248, 155, 236, 131, 216, -// 17, 68, 110, 26, 70, 113, 57, 33, 61, 100, 11, 106, 116, -// ], -// [ -// 247, 33, 13, 79, 142, 126, 16, 57, 121, 14, 123, 244, 239, 162, 7, 85, 90, 16, 166, 219, -// 29, 212, 185, 93, 163, 19, 170, 168, 139, 136, 254, 118, -// ], -// [ -// 173, 33, 181, 22, 203, 198, 69, 255, 227, 74, 181, 222, 28, 138, 239, 140, 212, 231, 248, -// 210, 181, 30, 142, 20, 86, 173, 199, 86, 60, 218, 32, 111, -// ], -// [ -// 107, 254, 141, 43, 204, 66, 55, 183, 74, 80, 71, 5, 142, 244, 85, 51, 158, 205, 115, 96, -// 203, 99, 191, 187, 142, 229, 68, 142, 100, 48, 186, 4, -// ], -// [ -// 167, 242, 60, 233, 24, 23, 64, 220, 34, 12, 129, 71, 130, 101, 79, 238, 106, 206, 185, 241, -// 236, 146, 34, 196, 226, 70, 125, 10, 177, 104, 8, 55, -// ], -// [ -// 174, 249, 71, 108, 137, 89, 10, 44, 140, 201, 179, 183, 79, 73, 103, 199, 87, 196, 157, -// 152, 102, 164, 75, 172, 242, 31, 162, 237, 103, 93, 223, 162, -// ], -// [ -// 154, 66, 188, 173, 130, 246, 169, 228, 18, 132, 216, 8, 234, 211, 25, 242, 159, 59, 8, 32, -// 157, 104, 15, 14, 44, 231, 21, 16, 208, 113, 226, 5, -// ], -// [ -// 209, 166, 109, 53, 74, 103, 185, 207, 23, 149, 113, 216, 229, 249, 119, 146, 113, 110, 141, -// 212, 236, 68, 25, 104, 57, 163, 247, 198, 183, 79, 139, 172, -// ], -// [ -// 250, 250, 48, 37, 242, 248, 149, 9, 194, 199, 28, 116, 251, 160, 205, 146, 133, 142, 244, -// 155, 7, 128, 251, 84, 121, 116, 108, 138, 155, 252, 179, 70, -// ], -// [ -// 51, 52, 167, 193, 231, 246, 112, 90, 166, 1, 26, 106, 148, 150, 69, 1, 109, 180, 172, 222, -// 12, 169, 171, 214, 109, 199, 157, 130, 102, 66, 48, 86, -// ], -// [ -// 7, 150, 253, 117, 102, 79, 174, 247, 68, 238, 78, 82, 215, 39, 30, 43, 187, 118, 159, 145, -// 237, 111, 155, 116, 216, 182, 148, 245, 102, 6, 133, 44, -// ], -// [ -// 123, 163, 174, 74, 65, 127, 232, 84, 91, 20, 43, 200, 159, 74, 220, 215, 174, 19, 148, 28, -// 186, 183, 117, 11, 131, 233, 240, 166, 109, 22, 190, 100, -// ], -// [ -// 120, 143, 175, 204, 74, 165, 32, 57, 154, 219, 174, 209, 149, 248, 177, 44, 78, 179, 30, -// 193, 1, 104, 229, 10, 171, 198, 89, 166, 174, 165, 22, 220, -// ], -// [ -// 232, 51, 215, 166, 113, 96, 230, 139, 244, 201, 4, 74, 83, 7, 125, 242, 114, 122, 208, 12, -// 243, 111, 73, 73, 199, 182, 129, 169, 18, 20, 12, 187, -// ], -// [ -// 48, 158, 171, 240, 149, 220, 103, 20, 249, 244, 216, 100, 187, 165, 175, 250, 224, 179, 90, -// 226, 245, 227, 86, 91, 204, 58, 71, 178, 18, 118, 119, 1, -// ], -// [ -// 34, 106, 142, 190, 250, 40, 134, 101, 166, 68, 165, 2, 115, 51, 94, 251, 182, 16, 81, 15, -// 36, 27, 91, 114, 12, 138, 54, 141, 89, 166, 154, 93, -// ], -// [ -// 65, 171, 253, 153, 84, 37, 130, 118, 37, 147, 129, 49, 175, 12, 79, 51, 254, 11, 212, 104, -// 140, 34, 44, 33, 250, 157, 168, 232, 156, 170, 3, 248, -// ], -// [ -// 68, 44, 100, 46, 245, 15, 161, 166, 103, 166, 230, 209, 5, 199, 124, 92, 195, 254, 200, -// 215, 170, 37, 112, 207, 26, 48, 119, 181, 3, 195, 128, 105, -// ], -// [ -// 160, 160, 141, 252, 155, 66, 217, 108, 45, 225, 155, 109, 18, 123, 138, 225, 54, 221, 207, -// 62, 90, 208, 220, 228, 34, 196, 90, 86, 246, 31, 106, 116, -// ], -// [ -// 125, 52, 131, 130, 175, 9, 109, 190, 11, 240, 134, 199, 187, 57, 178, 162, 192, 188, 54, -// 182, 33, 171, 12, 115, 142, 152, 133, 215, 49, 216, 23, 64, -// ], -// [ -// 58, 177, 52, 117, 29, 25, 18, 105, 2, 108, 134, 153, 78, 170, 139, 67, 168, 59, 74, 209, -// 246, 208, 231, 115, 129, 196, 226, 151, 74, 251, 200, 246, -// ], -// [ -// 154, 116, 82, 97, 29, 178, 210, 62, 174, 38, 249, 189, 187, 136, 149, 142, 244, 76, 100, -// 208, 254, 152, 123, 233, 247, 38, 173, 249, 56, 245, 15, 108, -// ], -// [ -// 114, 92, 127, 129, 96, 55, 191, 228, 82, 205, 30, 123, 163, 90, 196, 126, 220, 180, 154, -// 154, 43, 39, 174, 202, 112, 220, 228, 131, 203, 125, 237, 31, -// ], -// [ -// 44, 234, 26, 245, 31, 178, 139, 98, 136, 124, 57, 153, 138, 201, 254, 244, 223, 222, 218, -// 31, 7, 224, 113, 186, 85, 138, 23, 58, 253, 6, 203, 195, -// ], -// [ -// 255, 29, 89, 249, 139, 108, 85, 29, 149, 8, 147, 87, 5, 125, 92, 139, 226, 100, 2, 39, 158, -// 157, 240, 177, 223, 26, 16, 183, 43, 243, 146, 127, -// ], -// [ -// 47, 138, 24, 31, 124, 153, 221, 33, 90, 117, 41, 191, 226, 150, 169, 96, 58, 20, 70, 115, -// 113, 134, 210, 26, 235, 139, 199, 174, 89, 225, 253, 33, -// ], -// [ -// 236, 197, 2, 201, 177, 20, 95, 57, 80, 203, 125, 62, 56, 66, 68, 111, 129, 164, 240, 223, -// 29, 245, 55, 206, 225, 57, 239, 100, 234, 152, 75, 217, -// ], -// ]; +use crate::{ + gadget::crypto::{HashInstructions, ShaContexts, ShaThreadBuilder}, + util::{IntoConstant, IntoWitness}, + witness::{HashInput, HashInputChunk}, +}; -// pub fn ssz_merkleize_chunks( -// ctx_base: &mut Context, -// ctx_sha: &mut ShaContexts, -// hasher: &impl HashInstructions, -// chunks: impl IntoIterator>>, -// ) -> Result>, Error> { -// let mut chunks = chunks.into_iter().collect_vec(); -// let len_even = chunks.len() + chunks.len() % 2; -// let height = (len_even as f64).log2().ceil() as usize; +pub fn ssz_merkleize_chunks( + thread_pool: &mut ShaThreadBuilder, + hasher: &impl HashInstructions, + chunks: impl IntoIterator>>, +) -> Result>, Error> { + let mut chunks = chunks.into_iter().collect_vec(); + let len_even = chunks.len() + chunks.len() % 2; + let height = (len_even as f64).log2().ceil() as usize; -// for depth in 0..height { -// // Pad to even length using 32 zero bytes assigned as constants. -// let len_even = chunks.len() + chunks.len() % 2; -// let padded_chunks = chunks -// .into_iter() -// .pad_using(len_even, |_| ZERO_HASHES[depth].as_slice().into_constant()) -// .collect_vec(); + for depth in 0..height { + // Pad to even length using 32 zero bytes assigned as constants. + let len_even = chunks.len() + chunks.len() % 2; + let padded_chunks = chunks + .into_iter() + .pad_using(len_even, |_| ZERO_HASHES[depth].as_slice().into_constant()) + .collect_vec(); -// chunks = padded_chunks -// .into_iter() -// .tuples() -// .take(3) -// .map(|(left, right)| { -// hasher -// .digest::<64>(ctx_base, ctx_sha, HashInput::TwoToOne(left, right), false) -// .map(|res| res.output_bytes.into()) -// }) -// .collect::, _>>()?; -// } + chunks = padded_chunks + .into_iter() + .tuples() + .take(3) + .map(|(left, right)| { + hasher + .digest::<64>(thread_pool, HashInput::TwoToOne(left, right), false) + .map(|res| res.output_bytes.into()) + }) + .collect::, _>>()?; + } -// assert_eq!(chunks.len(), 1, "merkleize_chunks: expected one chunk"); + assert_eq!(chunks.len(), 1, "merkleize_chunks: expected one chunk"); -// let root = chunks.pop().unwrap().map(|cell| match cell { -// QuantumCell::Existing(av) => av, -// _ => unreachable!(), -// }); + let root = chunks.pop().unwrap().map(|cell| match cell { + QuantumCell::Existing(av) => av, + _ => unreachable!(), + }); -// Ok(root.bytes) -// } + Ok(root.bytes) +} -// pub fn verify_merkle_proof( -// thread_pool: &ShaThreadBuilder, -// hasher: &impl HashInstructions, -// proof: impl IntoIterator>>, -// leaf: HashInputChunk>, -// root: &[AssignedValue], -// mut gindex: usize, -// ) -> Result<(), Error> { -// let (sha) -// let mut computed_hash = leaf; +pub fn verify_merkle_proof( + thread_pool: &mut ShaThreadBuilder, + hasher: &impl HashInstructions, + proof: impl IntoIterator>>, + leaf: HashInputChunk>, + root: &[AssignedValue], + mut gindex: usize, +) -> Result<(), Error> { + let mut computed_hash = leaf; -// for witness in proof.into_iter() { -// computed_hash = hasher -// .digest::<64>( -// ctx_base, -// ctx_sha, -// if gindex % 2 == 0 { -// HashInput::TwoToOne(computed_hash, witness) -// } else { -// HashInput::TwoToOne(witness, computed_hash) -// }, -// false, -// )? -// .output_bytes -// .into(); -// gindex /= 2; -// } + for witness in proof.into_iter() { + computed_hash = hasher + .digest::<64>( + thread_pool, + if gindex % 2 == 0 { + HashInput::TwoToOne(computed_hash, witness) + } else { + HashInput::TwoToOne(witness, computed_hash) + }, + false, + )? + .output_bytes + .into(); + gindex /= 2; + } -// let computed_root = computed_hash.bytes.into_iter().map(|b| match b { -// QuantumCell::Existing(av) => av, -// _ => unreachable!(), -// }); + let computed_root = computed_hash.bytes.into_iter().map(|b| match b { + QuantumCell::Existing(av) => av, + _ => unreachable!(), + }); -// computed_root.zip(root.iter()).for_each(|(a, b)| { -// ctx_base.constrain_equal(&a, b); -// }); + computed_root.zip(root.iter()).for_each(|(a, b)| { + thread_pool.main().constrain_equal(&a, b); + }); -// Ok(()) -// } + Ok(()) +} + +pub const ZERO_HASHES: [[u8; 32]; 64] = [ + [0; 32], + [ + 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, + 32, 217, 240, 232, 234, 152, 49, 169, 39, 89, 251, 75, + ], + [ + 219, 86, 17, 78, 0, 253, 212, 193, 248, 92, 137, 43, 243, 90, 201, 168, 146, 137, 170, 236, + 177, 235, 208, 169, 108, 222, 96, 106, 116, 139, 93, 113, + ], + [ + 199, 128, 9, 253, 240, 127, 197, 106, 17, 241, 34, 55, 6, 88, 163, 83, 170, 165, 66, 237, + 99, 228, 76, 75, 193, 95, 244, 205, 16, 90, 179, 60, + ], + [ + 83, 109, 152, 131, 127, 45, 209, 101, 165, 93, 94, 234, 233, 20, 133, 149, 68, 114, 213, + 111, 36, 109, 242, 86, 191, 60, 174, 25, 53, 42, 18, 60, + ], + [ + 158, 253, 224, 82, 170, 21, 66, 159, 174, 5, 186, 212, 208, 177, 215, 198, 77, 166, 77, 3, + 215, 161, 133, 74, 88, 140, 44, 184, 67, 12, 13, 48, + ], + [ + 216, 141, 223, 238, 212, 0, 168, 117, 85, 150, 178, 25, 66, 193, 73, 126, 17, 76, 48, 46, + 97, 24, 41, 15, 145, 230, 119, 41, 118, 4, 31, 161, + ], + [ + 135, 235, 13, 219, 165, 126, 53, 246, 210, 134, 103, 56, 2, 164, 175, 89, 117, 226, 37, 6, + 199, 207, 76, 100, 187, 107, 229, 238, 17, 82, 127, 44, + ], + [ + 38, 132, 100, 118, 253, 95, 197, 74, 93, 67, 56, 81, 103, 201, 81, 68, 242, 100, 63, 83, + 60, 200, 91, 185, 209, 107, 120, 47, 141, 125, 177, 147, + ], + [ + 80, 109, 134, 88, 45, 37, 36, 5, 184, 64, 1, 135, 146, 202, 210, 191, 18, 89, 241, 239, 90, + 165, 248, 135, 225, 60, 178, 240, 9, 79, 81, 225, + ], + [ + 255, 255, 10, 215, 230, 89, 119, 47, 149, 52, 193, 149, 200, 21, 239, 196, 1, 78, 241, 225, + 218, 237, 68, 4, 192, 99, 133, 209, 17, 146, 233, 43, + ], + [ + 108, 240, 65, 39, 219, 5, 68, 28, 216, 51, 16, 122, 82, 190, 133, 40, 104, 137, 14, 67, 23, + 230, 160, 42, 180, 118, 131, 170, 117, 150, 66, 32, + ], + [ + 183, 208, 95, 135, 95, 20, 0, 39, 239, 81, 24, 162, 36, 123, 187, 132, 206, 143, 47, 15, + 17, 35, 98, 48, 133, 218, 247, 150, 12, 50, 159, 95, + ], + [ + 223, 106, 245, 245, 187, 219, 107, 233, 239, 138, 166, 24, 228, 191, 128, 115, 150, 8, 103, + 23, 30, 41, 103, 111, 139, 40, 77, 234, 106, 8, 168, 94, + ], + [ + 181, 141, 144, 15, 94, 24, 46, 60, 80, 239, 116, 150, 158, 161, 108, 119, 38, 197, 73, 117, + 124, 194, 53, 35, 195, 105, 88, 125, 167, 41, 55, 132, + ], + [ + 212, 154, 117, 2, 255, 207, 176, 52, 11, 29, 120, 133, 104, 133, 0, 202, 48, 129, 97, 167, + 249, 107, 98, 223, 157, 8, 59, 113, 252, 200, 242, 187, + ], + [ + 143, 230, 177, 104, 146, 86, 192, 211, 133, 244, 47, 91, 190, 32, 39, 162, 44, 25, 150, + 225, 16, 186, 151, 193, 113, 211, 229, 148, 141, 233, 43, 235, + ], + [ + 141, 13, 99, 195, 158, 186, 222, 133, 9, 224, 174, 60, 156, 56, 118, 251, 95, 161, 18, 190, + 24, 249, 5, 236, 172, 254, 203, 146, 5, 118, 3, 171, + ], + [ + 149, 238, 200, 178, 229, 65, 202, 212, 233, 29, 227, 131, 133, 242, 224, 70, 97, 159, 84, + 73, 108, 35, 130, 203, 108, 172, 213, 185, 140, 38, 245, 164, + ], + [ + 248, 147, 233, 8, 145, 119, 117, 182, 43, 255, 35, 41, 77, 187, 227, 161, 205, 142, 108, + 193, 195, 91, 72, 1, 136, 123, 100, 106, 111, 129, 241, 127, + ], + [ + 205, 219, 167, 181, 146, 227, 19, 51, 147, 193, 97, 148, 250, 199, 67, 26, 191, 47, 84, + 133, 237, 113, 29, 178, 130, 24, 60, 129, 158, 8, 235, 170, + ], + [ + 138, 141, 127, 227, 175, 140, 170, 8, 90, 118, 57, 168, 50, 0, 20, 87, 223, 185, 18, 138, + 128, 97, 20, 42, 208, 51, 86, 41, 255, 35, 255, 156, + ], + [ + 254, 179, 195, 55, 215, 165, 26, 111, 191, 0, 185, 227, 76, 82, 225, 201, 25, 92, 150, 155, + 212, 231, 160, 191, 213, 29, 92, 91, 237, 156, 17, 103, + ], + [ + 231, 31, 10, 168, 60, 195, 46, 223, 190, 250, 159, 77, 62, 1, 116, 202, 133, 24, 46, 236, + 159, 58, 9, 246, 166, 192, 223, 99, 119, 165, 16, 215, + ], + [ + 49, 32, 111, 168, 10, 80, 187, 106, 190, 41, 8, 80, 88, 241, 98, 18, 33, 42, 96, 238, 200, + 240, 73, 254, 203, 146, 216, 200, 224, 168, 75, 192, + ], + [ + 33, 53, 43, 254, 203, 237, 221, 233, 147, 131, 159, 97, 76, 61, 172, 10, 62, 227, 117, 67, + 249, 180, 18, 177, 97, 153, 220, 21, 142, 35, 181, 68, + ], + [ + 97, 158, 49, 39, 36, 187, 109, 124, 49, 83, 237, 157, 231, 145, 215, 100, 163, 102, 179, + 137, 175, 19, 197, 139, 248, 168, 217, 4, 129, 164, 103, 101, + ], + [ + 124, 221, 41, 134, 38, 130, 80, 98, 141, 12, 16, 227, 133, 197, 140, 97, 145, 230, 251, + 224, 81, 145, 188, 192, 79, 19, 63, 44, 234, 114, 193, 196, + ], + [ + 132, 137, 48, 189, 123, 168, 202, 197, 70, 97, 7, 33, 19, 251, 39, 136, 105, 224, 123, 184, + 88, 127, 145, 57, 41, 51, 55, 77, 1, 123, 203, 225, + ], + [ + 136, 105, 255, 44, 34, 178, 140, 193, 5, 16, 217, 133, 50, 146, 128, 51, 40, 190, 79, 176, + 232, 4, 149, 232, 187, 141, 39, 31, 91, 136, 150, 54, + ], + [ + 181, 254, 40, 231, 159, 27, 133, 15, 134, 88, 36, 108, 233, 182, 161, 231, 180, 159, 192, + 109, 183, 20, 62, 143, 224, 180, 242, 176, 197, 82, 58, 92, + ], + [ + 152, 94, 146, 159, 112, 175, 40, 208, 189, 209, 169, 10, 128, 143, 151, 127, 89, 124, 124, + 119, 140, 72, 158, 152, 211, 189, 137, 16, 211, 26, 192, 247, + ], + [ + 198, 246, 126, 2, 230, 228, 225, 189, 239, 185, 148, 198, 9, 137, 83, 243, 70, 54, 186, 43, + 108, 162, 10, 71, 33, 210, 178, 106, 136, 103, 34, 255, + ], + [ + 28, 154, 126, 95, 241, 207, 72, 180, 173, 21, 130, 211, 244, 228, 161, 0, 79, 59, 32, 216, + 197, 162, 183, 19, 135, 164, 37, 74, 217, 51, 235, 197, + ], + [ + 47, 7, 90, 226, 41, 100, 107, 111, 106, 237, 25, 165, 227, 114, 207, 41, 80, 129, 64, 30, + 184, 147, 255, 89, 155, 63, 154, 204, 12, 13, 62, 125, + ], + [ + 50, 137, 33, 222, 181, 150, 18, 7, 104, 1, 232, 205, 97, 89, 33, 7, 181, 198, 124, 121, + 184, 70, 89, 92, 198, 50, 12, 57, 91, 70, 54, 44, + ], + [ + 191, 185, 9, 253, 178, 54, 173, 36, 17, 180, 228, 136, 56, 16, 160, 116, 184, 64, 70, 70, + 137, 152, 108, 63, 138, 128, 145, 130, 126, 23, 195, 39, + ], + [ + 85, 216, 251, 54, 135, 186, 59, 164, 159, 52, 44, 119, 245, 161, 248, 155, 236, 131, 216, + 17, 68, 110, 26, 70, 113, 57, 33, 61, 100, 11, 106, 116, + ], + [ + 247, 33, 13, 79, 142, 126, 16, 57, 121, 14, 123, 244, 239, 162, 7, 85, 90, 16, 166, 219, + 29, 212, 185, 93, 163, 19, 170, 168, 139, 136, 254, 118, + ], + [ + 173, 33, 181, 22, 203, 198, 69, 255, 227, 74, 181, 222, 28, 138, 239, 140, 212, 231, 248, + 210, 181, 30, 142, 20, 86, 173, 199, 86, 60, 218, 32, 111, + ], + [ + 107, 254, 141, 43, 204, 66, 55, 183, 74, 80, 71, 5, 142, 244, 85, 51, 158, 205, 115, 96, + 203, 99, 191, 187, 142, 229, 68, 142, 100, 48, 186, 4, + ], + [ + 167, 242, 60, 233, 24, 23, 64, 220, 34, 12, 129, 71, 130, 101, 79, 238, 106, 206, 185, 241, + 236, 146, 34, 196, 226, 70, 125, 10, 177, 104, 8, 55, + ], + [ + 174, 249, 71, 108, 137, 89, 10, 44, 140, 201, 179, 183, 79, 73, 103, 199, 87, 196, 157, + 152, 102, 164, 75, 172, 242, 31, 162, 237, 103, 93, 223, 162, + ], + [ + 154, 66, 188, 173, 130, 246, 169, 228, 18, 132, 216, 8, 234, 211, 25, 242, 159, 59, 8, 32, + 157, 104, 15, 14, 44, 231, 21, 16, 208, 113, 226, 5, + ], + [ + 209, 166, 109, 53, 74, 103, 185, 207, 23, 149, 113, 216, 229, 249, 119, 146, 113, 110, 141, + 212, 236, 68, 25, 104, 57, 163, 247, 198, 183, 79, 139, 172, + ], + [ + 250, 250, 48, 37, 242, 248, 149, 9, 194, 199, 28, 116, 251, 160, 205, 146, 133, 142, 244, + 155, 7, 128, 251, 84, 121, 116, 108, 138, 155, 252, 179, 70, + ], + [ + 51, 52, 167, 193, 231, 246, 112, 90, 166, 1, 26, 106, 148, 150, 69, 1, 109, 180, 172, 222, + 12, 169, 171, 214, 109, 199, 157, 130, 102, 66, 48, 86, + ], + [ + 7, 150, 253, 117, 102, 79, 174, 247, 68, 238, 78, 82, 215, 39, 30, 43, 187, 118, 159, 145, + 237, 111, 155, 116, 216, 182, 148, 245, 102, 6, 133, 44, + ], + [ + 123, 163, 174, 74, 65, 127, 232, 84, 91, 20, 43, 200, 159, 74, 220, 215, 174, 19, 148, 28, + 186, 183, 117, 11, 131, 233, 240, 166, 109, 22, 190, 100, + ], + [ + 120, 143, 175, 204, 74, 165, 32, 57, 154, 219, 174, 209, 149, 248, 177, 44, 78, 179, 30, + 193, 1, 104, 229, 10, 171, 198, 89, 166, 174, 165, 22, 220, + ], + [ + 232, 51, 215, 166, 113, 96, 230, 139, 244, 201, 4, 74, 83, 7, 125, 242, 114, 122, 208, 12, + 243, 111, 73, 73, 199, 182, 129, 169, 18, 20, 12, 187, + ], + [ + 48, 158, 171, 240, 149, 220, 103, 20, 249, 244, 216, 100, 187, 165, 175, 250, 224, 179, 90, + 226, 245, 227, 86, 91, 204, 58, 71, 178, 18, 118, 119, 1, + ], + [ + 34, 106, 142, 190, 250, 40, 134, 101, 166, 68, 165, 2, 115, 51, 94, 251, 182, 16, 81, 15, + 36, 27, 91, 114, 12, 138, 54, 141, 89, 166, 154, 93, + ], + [ + 65, 171, 253, 153, 84, 37, 130, 118, 37, 147, 129, 49, 175, 12, 79, 51, 254, 11, 212, 104, + 140, 34, 44, 33, 250, 157, 168, 232, 156, 170, 3, 248, + ], + [ + 68, 44, 100, 46, 245, 15, 161, 166, 103, 166, 230, 209, 5, 199, 124, 92, 195, 254, 200, + 215, 170, 37, 112, 207, 26, 48, 119, 181, 3, 195, 128, 105, + ], + [ + 160, 160, 141, 252, 155, 66, 217, 108, 45, 225, 155, 109, 18, 123, 138, 225, 54, 221, 207, + 62, 90, 208, 220, 228, 34, 196, 90, 86, 246, 31, 106, 116, + ], + [ + 125, 52, 131, 130, 175, 9, 109, 190, 11, 240, 134, 199, 187, 57, 178, 162, 192, 188, 54, + 182, 33, 171, 12, 115, 142, 152, 133, 215, 49, 216, 23, 64, + ], + [ + 58, 177, 52, 117, 29, 25, 18, 105, 2, 108, 134, 153, 78, 170, 139, 67, 168, 59, 74, 209, + 246, 208, 231, 115, 129, 196, 226, 151, 74, 251, 200, 246, + ], + [ + 154, 116, 82, 97, 29, 178, 210, 62, 174, 38, 249, 189, 187, 136, 149, 142, 244, 76, 100, + 208, 254, 152, 123, 233, 247, 38, 173, 249, 56, 245, 15, 108, + ], + [ + 114, 92, 127, 129, 96, 55, 191, 228, 82, 205, 30, 123, 163, 90, 196, 126, 220, 180, 154, + 154, 43, 39, 174, 202, 112, 220, 228, 131, 203, 125, 237, 31, + ], + [ + 44, 234, 26, 245, 31, 178, 139, 98, 136, 124, 57, 153, 138, 201, 254, 244, 223, 222, 218, + 31, 7, 224, 113, 186, 85, 138, 23, 58, 253, 6, 203, 195, + ], + [ + 255, 29, 89, 249, 139, 108, 85, 29, 149, 8, 147, 87, 5, 125, 92, 139, 226, 100, 2, 39, 158, + 157, 240, 177, 223, 26, 16, 183, 43, 243, 146, 127, + ], + [ + 47, 138, 24, 31, 124, 153, 221, 33, 90, 117, 41, 191, 226, 150, 169, 96, 58, 20, 70, 115, + 113, 134, 210, 26, 235, 139, 199, 174, 89, 225, 253, 33, + ], + [ + 236, 197, 2, 201, 177, 20, 95, 57, 80, 203, 125, 62, 56, 66, 68, 111, 129, 164, 240, 223, + 29, 245, 55, 206, 225, 57, 239, 100, 234, 152, 75, 217, + ], +]; diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 85bc1580..ef536707 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -1,638 +1,481 @@ -// use std::{ -// cell::RefCell, -// collections::HashMap, -// env::{set_var, var}, -// fs, iter, -// marker::PhantomData, -// ops::Neg, -// path::Path, -// rc::Rc, -// vec, -// }; - -// use crate::{ -// gadget::crypto::{ -// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, -// HashToCurveChip, Sha256Chip, SpreadConfig, -// }, -// poseidon::{g1_array_poseidon, poseidon_sponge}, -// sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, -// ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, -// table::Sha256Table, -// util::{ -// decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, -// }, -// witness::{self, HashInput, HashInputChunk, SyncState}, -// }; -// use eth_types::{AppCurveExt, Field, Spec}; -// use ethereum_consensus::capella::{self, mainnet::*}; -// use ff::PrimeField; -// use group::UncompressedEncoding; -// use halo2_base::{ -// gates::{ -// builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, -// flex_gate::GateStrategy, -// range::RangeConfig, -// }, -// safe_types::{GateInstructions, RangeChip, RangeInstructions}, -// utils::{fs::gen_srs, CurveAffineExt}, -// AssignedValue, Context, QuantumCell, -// }; -// use halo2_ecc::{ -// bigint::ProperCrtUint, -// bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, -// ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, -// fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, -// }; -// use halo2_proofs::{ -// circuit::{Layouter, Region, SimpleFloorPlanner, Value}, -// dev::MockProver, -// plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, -// poly::{commitment::Params, kzg::commitment::ParamsKZG}, -// }; -// use halo2curves::{ -// bls12_381::{Fq, Fq12, Fr, G1Affine, G2Affine, G2Prepared, G1, G2}, -// bn256::{self, Bn256}, -// }; -// use itertools::Itertools; -// use lazy_static::__Deref; -// use num_bigint::BigUint; -// use pasta_curves::group::{ff, GroupEncoding}; -// use poseidon::PoseidonChip; -// use sha2::{Digest, Sha256}; -// use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; -// use ssz_rs::{GeneralizedIndex, Merkleized, Node}; - -// #[derive(Clone, Debug)] -// pub struct SyncStepCircuitConfig { -// range: RangeConfig, -// sha256_config: RefCell>, -// challenges: Challenges>, -// } - -// #[allow(type_alias_bounds)] -// #[derive(Clone, Debug)] -// pub struct SyncStepCircuit { -// builder: RefCell>, -// signature: Vec, -// domain: [u8; 32], -// attested_block: capella::BeaconBlockHeader, -// finalized_block: capella::BeaconBlockHeader, -// pubkeys: Vec, -// execution_state_root: Vec, -// execution_merkle_branch: Vec>, -// beacon_state_root: Vec, -// finality_merkle_branch: Vec>, -// pariticipation_bits: Vec, -// dry_run: bool, -// _spec: PhantomData, -// } - -// impl Circuit for SyncStepCircuit { -// type Config = SyncStepCircuitConfig; -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// unimplemented!() -// } - -// fn configure(meta: &mut ConstraintSystem) -> Self::Config { -// let range = RangeCircuitBuilder::configure(meta); -// let sha256_config = SpreadConfig::::configure(meta, 8, 1); - -// SyncStepCircuitConfig { -// range, -// sha256_config: RefCell::new(sha256_config), -// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), -// } -// } - -// fn synthesize( -// &self, -// mut config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// config -// .range -// .load_lookup_table(&mut layouter) -// .expect("load range lookup table"); - -// assert!(!self.signature.is_empty(), "no attestations supplied"); -// let mut first_pass = halo2_base::SKIP_FIRST_PASS; - -// let range = RangeChip::default(config.range.lookup_bits()); -// let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); -// let fp2_chip = Fp2Chip::::new(&fp_chip); -// let g1_chip = EccChip::new(fp2_chip.fp_chip()); -// let g2_chip = EccChip::new(&fp2_chip); -// let fp12_chip = Fp12Chip::::new(fp2_chip.fp_chip()); -// let pairing_chip = PairingChip::new(&fp_chip); -// let bls_chip = bls_signature::BlsSignatureChip::new(&fp_chip, pairing_chip); -// let sha256_chip = Sha256Chip::new(config.sha256_config, &range, None); -// let h2c_chip = HashToCurveChip::::new(&sha256_chip); - -// let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); -// let mut builder = if self.dry_run { -// self.builder.borrow_mut() -// } else { -// builder_clone.borrow_mut() -// }; - -// layouter.assign_region( -// || "AggregationCircuitBuilder generated circuit", -// |mut region| { -// if first_pass { -// first_pass = false; -// return Ok(()); -// } - -// let ctx = builder.main(0); - -// let beacon_state_root = self -// .beacon_state_root -// .iter() -// .map(|&b| ctx.load_witness(F::from(b as u64))) -// .collect_vec(); - -// let execution_state_root: HashInputChunk> = -// self.execution_state_root.clone().into_witness(); - -// let mut pubkey_points = vec![]; -// let (agg_pubkey, participation_sum) = -// self.aggregate_pubkeys(ctx, &fp_chip, &mut pubkey_points); -// let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; - -// let fp12_one = { -// use ff::Field; -// fp12_chip.load_constant(ctx, Fq12::one()) -// }; -// let mut h2c_cache = HashToCurveCache::::default(); - -// // Verify attestted header -// let attested_header = { -// let chunks = [ -// self.attested_block.slot.into_witness(), -// self.attested_block.proposer_index.into_witness(), -// self.attested_block.parent_root.as_ref().into_witness(), -// self.attested_block.state_root.as_ref().into_witness(), -// self.attested_block.body_root.as_ref().into_witness(), -// ]; - -// ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? -// }; - -// let finilized_block_body_root = self -// .finalized_block -// .body_root -// .as_ref() -// .iter() -// .map(|&b| ctx.load_witness(F::from(b as u64))) -// .collect_vec(); - -// let finalized_header = { -// let chunks = [ -// self.finalized_block.slot.into_witness(), -// self.finalized_block.proposer_index.into_witness(), -// self.finalized_block.parent_root.as_ref().into_witness(), -// self.finalized_block.state_root.as_ref().into_witness(), -// finilized_block_body_root.clone().into(), -// ]; -// ssz_merkleize_chunks(ctx, &mut region, &sha256_chip, chunks)? -// }; - -// let signing_root = sha256_chip -// .digest::<64>( -// HashInput::TwoToOne( -// attested_header.into(), -// self.domain.to_vec().into_witness(), -// ), -// ctx, -// &mut region, -// )? -// .output_bytes; - -// let g1_neg = g1_chip -// .load_private_unchecked(ctx, G1::generator_affine().neg().into_coordinates()); - -// let signature = Self::assign_signature(&self.signature, &g2_chip, ctx); - -// let msghash = h2c_chip.hash_to_curve::( -// signing_root.into(), -// &fp_chip, -// ctx, -// &mut region, -// &mut h2c_cache, -// )?; - -// let res = bls_chip.verify_pairing(signature, msghash, agg_pubkey, g1_neg, ctx); -// fp12_chip.assert_equal(ctx, res, fp12_one); - -// // verify finilized block header against current beacon state merkle proof -// verify_merkle_proof( -// ctx, -// &mut region, -// &sha256_chip, -// self.finality_merkle_branch -// .iter() -// .map(|w| w.clone().into_witness()), -// finalized_header.into(), -// &beacon_state_root, -// S::FINALIZED_HEADER_INDEX, -// )?; - -// // verify execution state root against finilized block body merkle proof -// verify_merkle_proof( -// ctx, -// &mut region, -// &sha256_chip, -// self.execution_merkle_branch -// .iter() -// .map(|w| w.clone().into_witness()), -// execution_state_root, -// &finilized_block_body_root, -// S::EXECUTION_STATE_ROOT_INDEX, -// )?; - -// let extra_assignments = sha256_chip.take_extra_assignments(); - -// if self.dry_run { -// return Ok(()); -// } - -// let _ = builder.assign_all( -// &config.range.gate, -// &config.range.lookup_advice, -// &config.range.q_lookup, -// &mut region, -// extra_assignments, -// ); - -// // TODO: constaint source_root, target_root with instances: `layouter.constrain_instance` -// Ok(()) -// }, -// ) -// } -// } - -// impl SyncStepCircuit { -// pub fn dry_run(mut self) -> Self { -// self.dry_run = true; -// self -// } - -// fn assign_signature( -// bytes_compressed: &[u8], -// g2_chip: &G2Chip, -// ctx: &mut Context, -// ) -> EcPoint> { -// let sig_affine = -// G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).unwrap(); - -// g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) -// } - -// /// Takes a list of pubkeys and aggregates them. -// fn aggregate_pubkeys<'a>( -// &self, -// ctx: &mut Context, -// fp_chip: &FpChip<'a, F>, -// committee_pubkeys: &mut Vec>, -// ) -> (G1Point, AssignedValue) { -// let range = fp_chip.range(); -// let gate = fp_chip.gate(); - -// let g1_chip = G1Chip::::new(fp_chip); - -// let pubkey_compressed_len = G1::BYTES_COMPRESSED; - -// let mut participation_bits = vec![]; - -// assert_eq!(self.pubkeys.len(), S::SYNC_COMMITTEE_SIZE); - -// for (&pk, is_attested) in itertools::multizip(( -// self.pubkeys.iter(), -// self.pariticipation_bits.iter().copied(), -// )) { -// let participation_bit = ctx.load_witness(F::from(is_attested as u64)); -// gate.assert_bit(ctx, participation_bit); - -// let assigned_pk = g1_chip.assign_point_unchecked(ctx, pk); - -// // Square y coordinate -// let ysq = fp_chip.mul(ctx, assigned_pk.y.clone(), assigned_pk.y.clone()); -// // Calculate y^2 using the elliptic curve equation -// let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); -// // Constrain witness y^2 to be equal to calculated y^2 -// fp_chip.assert_equal(ctx, ysq, ysq_calc); - -// // *Note:* normally, we would need to take into account the sign of the y coordinate, but -// // because we are concerned only with signature forgery, if this is the wrong -// // sign, the signature will be invalid anyway and thus verification fails. - -// committee_pubkeys.push(assigned_pk); -// participation_bits.push(participation_bit); -// } - -// let rand_point = g1_chip.load_random_point::(ctx); -// let mut acc = rand_point.clone(); -// for (bit, point) in participation_bits -// .iter() -// .copied() -// .zip(committee_pubkeys.iter_mut()) -// { -// let sum = g1_chip.add_unequal(ctx, acc.clone(), point.clone(), true); -// acc = g1_chip.select(ctx, sum, acc, bit); -// } -// let agg_pubkey = g1_chip.sub_unequal(ctx, acc, rand_point, false); -// let participation_sum = gate.sum(ctx, participation_bits); - -// (agg_pubkey, participation_sum) -// } - -// // Calculates y^2 = x^3 + 4 (the curve equation) -// fn calculate_ysquared( -// ctx: &mut Context, -// field_chip: &FpChip<'_, F>, -// x: ProperCrtUint, -// ) -> ProperCrtUint { -// let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); -// let x_cubed = field_chip.mul(ctx, x_squared, x); - -// let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); -// field_chip.carry_mod(ctx, plus_b) -// } -// } - -// impl CircuitExt for SyncStepCircuit { -// fn instances(&self) -> Vec> { -// vec![] -// } - -// fn num_instance(&self) -> Vec { -// self.instances().iter().map(|v| v.len()).collect() -// } -// } - -// impl AppCircuitExt for SyncStepCircuit { -// fn new_from_state( -// builder: RefCell>, -// state: &witness::SyncState, -// ) -> Self { -// Self { -// builder, -// signature: state.sync_signature.clone(), -// domain: state.domain, -// attested_block: state.attested_block.clone(), -// finalized_block: state.finalized_block.clone(), -// pubkeys: state -// .sync_committee -// .iter() -// .cloned() -// .map(|v| { -// G1Affine::from_uncompressed_unchecked( -// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), -// ) -// .unwrap() -// }) -// .collect_vec(), -// pariticipation_bits: state -// .sync_committee -// .iter() -// .cloned() -// .map(|v| v.is_attested) -// .collect_vec(), -// execution_merkle_branch: state.execution_merkle_branch.clone(), -// finality_merkle_branch: state.finality_merkle_branch.clone(), -// beacon_state_root: state.beacon_state_root.clone(), -// execution_state_root: state.execution_state_root.clone(), -// dry_run: false, -// _spec: PhantomData, -// } -// } - -// fn parametrize(k: usize) -> FlexGateConfigParams { -// // let state: SyncState = -// // serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); -// // let builder = RefCell::new(GateThreadBuilder::keygen()); -// // let circuit = SyncStepCircuit::::new_from_state(builder, &state).dry_run(); -// let circuit = SyncStepCircuit::::default().dry_run(); - -// let mock_k = 17; -// // Due to the composite nature of Sync circuit (vanila + halo2-lib) -// // we have to perfrom dry run to determine best circuit config. -// let mock_params = FlexGateConfigParams { -// strategy: GateStrategy::Vertical, -// k: mock_k, -// num_advice_per_phase: vec![200], -// num_lookup_advice_per_phase: vec![20], -// num_fixed: 1, -// }; - -// set_var( -// "FLEX_GATE_CONFIG_PARAMS", -// serde_json::to_string(&mock_params).unwrap(), -// ); -// std::env::set_var("LOOKUP_BITS", 16.to_string()); - -// let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); -// let params = circuit.builder.borrow().config(k, None); -// std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); -// println!("parametrized with: {:?}", params); -// params -// } - -// fn setup( -// config: &FlexGateConfigParams, -// out: Option<&Path>, -// ) -> (ParamsKZG, ProvingKey) { -// let circuit = SyncStepCircuit::::default(); - -// set_var("LOOKUP_BITS", (config.k - 1).to_string()); -// set_var( -// "FLEX_GATE_CONFIG_PARAMS", -// serde_json::to_string(&config).unwrap(), -// ); - -// let params = gen_srs(config.k as u32); - -// let pk = gen_pkey(|| "sync_step", ¶ms, out, circuit).unwrap(); - -// (params, pk) -// } -// } - -// impl Default for SyncStepCircuit { -// fn default() -> Self { -// let builder = RefCell::new(GateThreadBuilder::keygen()); - -// let dummy_pk_bytes = hex::decode("f5f151e52f1e8a5b09e4c6f0b25fb13463d442709f21a84f98dcb76a7953aa5225c12e4dd524a95f9be8dfdfa0621c0252adea177adcce725f8b47d0b27370572ad6c5638122cab820103c9bcbb3239939de60b4814c117631d82963a7d7900a").unwrap(); -// let dummy_pk_point = -// G1Affine::from_uncompressed_unchecked(&dummy_pk_bytes.as_slice().try_into().unwrap()) -// .unwrap(); - -// let state_merkle_branch = iter::repeat(vec![0u8; 32]) -// .take(S::FINALIZED_HEADER_DEPTH) -// .collect_vec(); - -// fn compute_root(leaf: Vec, branch: &[Vec]) -> Vec { -// let mut last_hash = Sha256::digest([leaf, branch[0].clone()].concat()).to_vec(); - -// for i in 1..branch.len() { -// last_hash = Sha256::digest([last_hash, branch[i].clone()].concat()).to_vec(); -// } - -// last_hash -// } - -// let execution_state_root = vec![0; 32]; -// let execution_merkle_branch = vec![vec![0; 32]; S::EXECUTION_STATE_ROOT_DEPTH]; -// let beacon_block_body_root = -// compute_root(execution_state_root.clone(), &state_merkle_branch); - -// let mut finalized_block = capella::BeaconBlockHeader { -// body_root: Node::from_bytes(beacon_block_body_root.try_into().unwrap()), -// ..Default::default() -// }; -// let finilized_header = finalized_block.hash_tree_root().unwrap().as_ref().to_vec(); - -// let finality_merkle_branch = vec![vec![0; 32]; S::FINALIZED_HEADER_DEPTH]; - -// let beacon_state_root = compute_root(finilized_header, &state_merkle_branch); - -// Self { -// builder, -// signature: hex::decode("462c5acb68722355eaa568a166e6da4c46702a496586aa94c681e0b03a200394b8f4adc98d6b5a68e3caf9dae31ff7035a402aad93bdd4752e521b3b536b47dee55d129b6374177f2be8c99b6ea6618abae84b389affc5a50ad8d991f763beaa").unwrap(), -// domain: [ -// 7, 0, 0, 0, 48, 83, 175, 74, 95, 250, 246, 166, 104, 40, 151, 228, 42, 212, 194, 8, -// 48, 56, 232, 147, 61, 9, 41, 204, 88, 234, 56, 134, -// ], -// attested_block: capella::BeaconBlockHeader::default(), -// finalized_block, -// pubkeys: iter::repeat(dummy_pk_point) -// .take(S::SYNC_COMMITTEE_SIZE) -// .collect_vec(), -// pariticipation_bits: vec![true; S::SYNC_COMMITTEE_SIZE], -// dry_run: false, -// finality_merkle_branch, -// beacon_state_root, -// execution_merkle_branch, -// execution_state_root, -// _spec: PhantomData, -// } -// } -// } - -// #[cfg(test)] -// mod tests { -// use std::{ -// env::{set_var, var}, -// fs, -// }; - -// use crate::{ -// table::Sha256Table, -// util::{full_prover, full_verifier, gen_pkey}, -// witness::{SyncState, Validator}, -// }; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Test; -// use ethereum_consensus::builder; -// use halo2_base::{ -// gates::{ -// builder::{CircuitBuilderStage, FlexGateConfigParams}, -// flex_gate::GateStrategy, -// range::RangeStrategy, -// }, -// utils::fs::gen_srs, -// }; -// use halo2_proofs::{ -// circuit::SimpleFloorPlanner, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, -// poly::kzg::commitment::ParamsKZG, -// }; -// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; -// use pasta_curves::group::UncompressedEncoding; -// use rand::rngs::OsRng; -// use rayon::iter::ParallelIterator; -// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; -// use snark_verifier_sdk::{ -// evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, -// halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, -// CircuitExt, SHPLONK, -// }; - -// fn get_circuit_with_data( -// k: usize, -// config_path: &str, -// ) -> (SyncStepCircuit, FlexGateConfigParams) { -// let builder = GateThreadBuilder::new(false); -// let state: SyncState = -// serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); - -// let config = if let Ok(f) = fs::read(config_path) { -// serde_json::from_slice(&f).expect("read config file") -// } else { -// SyncStepCircuit::::parametrize(k) -// }; - -// set_var( -// "FLEX_GATE_CONFIG_PARAMS", -// serde_json::to_string(&config).unwrap(), -// ); -// set_var("LOOKUP_BITS", (config.k - 1).to_string()); -// println!("config used: {:?}", config); - -// let builder = RefCell::from(builder); -// (SyncStepCircuit::new_from_state(builder, &state), config) -// } - -// #[test] -// fn test_sync_circuit() { -// let k = 20; -// let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20.json"); - -// let timer = start_timer!(|| "sync circuit mock prover"); -// let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// end_timer!(timer); -// } - -// #[test] -// fn test_sync_proofgen() { -// let k = 20; -// let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20_mock.json"); - -// let params = gen_srs(k as u32); - -// let pkey = gen_pkey(|| "sync_step", ¶ms, None, circuit.clone()).unwrap(); - -// let public_inputs = circuit.instances(); -// let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); - -// assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)) -// } - -// #[test] -// fn test_sync_evm_verify() { -// let k = 20; -// let (circuit, config) = get_circuit_with_data(k, "./config/sync_step_k21.json"); - -// let (params, pk) = SyncStepCircuit::::setup(&config, None); - -// let instances = circuit.instances(); -// let num_instance = circuit.num_instance(); -// let deployment_code = gen_evm_verifier_shplonk::>( -// ¶ms, -// pk.get_vk(), -// num_instance, -// None, -// ); -// let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); - -// evm_verify(deployment_code, instances, proof); -// } -// } +use std::{ + cell::RefCell, + collections::HashMap, + env::{set_var, var}, + fs, iter, + marker::PhantomData, + ops::Neg, + path::Path, + rc::Rc, + vec, +}; + +use crate::{ + builder::ShaCircuitBuilder, + gadget::crypto::{ + Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, + HashToCurveChip, Sha256Chip, ShaThreadBuilder, SpreadChip, SpreadConfig, + }, + poseidon::{g1_array_poseidon, poseidon_sponge}, + sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, + ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, + table::Sha256Table, + util::{ + decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, + }, + witness::{self, HashInput, HashInputChunk, SyncStepArgs}, +}; +use eth_types::{AppCurveExt, Field, Spec}; +use ethereum_consensus::capella::{self, mainnet::*}; +use ff::PrimeField; +use group::UncompressedEncoding; +use halo2_base::{ + gates::{ + builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, + flex_gate::GateStrategy, + range::{RangeConfig, RangeStrategy}, + }, + safe_types::{GateInstructions, RangeChip, RangeInstructions}, + utils::{fs::gen_srs, CurveAffineExt}, + AssignedValue, Context, QuantumCell, +}; +use halo2_ecc::{ + bigint::ProperCrtUint, + bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, + ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, + fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, +}; +use halo2_proofs::{ + circuit::{Layouter, Region, SimpleFloorPlanner, Value}, + dev::MockProver, + plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, + poly::{commitment::Params, kzg::commitment::ParamsKZG}, +}; +use halo2curves::{ + bls12_381::{Fq, Fq12, Fr, G1Affine, G2Affine, G2Prepared, G1, G2}, + bn256::{self, Bn256}, +}; +use itertools::Itertools; +use lazy_static::__Deref; +use num_bigint::BigUint; +use pasta_curves::group::{ff, GroupEncoding}; +use poseidon::PoseidonChip; +use sha2::{Digest, Sha256}; +use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; +use ssz_rs::{GeneralizedIndex, Merkleized, Node}; + +#[derive(Clone, Debug)] +pub struct SyncStepCircuitConfig { + range: RangeConfig, + sha256_config: RefCell>, + challenges: Challenges>, +} + +#[allow(type_alias_bounds)] +#[derive(Clone, Debug, Default)] +pub struct SyncStepCircuit { + _f: PhantomData, + _spec: PhantomData, +} + +impl SyncStepCircuit { + fn synthesize( + &self, + thread_pool: &mut ShaThreadBuilder, + range: &RangeChip, + args: &witness::SyncStepArgs, + ) -> Result<(), Error> { + // config + // .range + // .load_lookup_table(&mut layouter) + // .expect("load range lookup table"); + + assert!( + !args.signature_compressed.is_empty(), + "no attestations supplied" + ); + + let sha256_chip = Sha256Chip::new(range); + let fp_chip = FpChip::::new(range, G2::LIMB_BITS, G2::NUM_LIMBS); + let fp2_chip = Fp2Chip::::new(&fp_chip); + let g1_chip = EccChip::new(fp2_chip.fp_chip()); + let g2_chip = EccChip::new(&fp2_chip); + let fp12_chip = Fp12Chip::::new(fp2_chip.fp_chip()); + let pairing_chip = PairingChip::new(&fp_chip); + let bls_chip = bls_signature::BlsSignatureChip::new(&fp_chip, pairing_chip); + let h2c_chip = HashToCurveChip::::new(&sha256_chip); + + let beacon_state_root = args + .beacon_state_root + .iter() + .map(|&b| thread_pool.main().load_witness(F::from(b as u64))) + .collect_vec(); + + let execution_state_root: HashInputChunk> = + args.execution_state_root.clone().into_witness(); + + let pubkey_affines = args + .pubkeys_uncompressed + .iter() + .cloned() + .map(|bytes| { + G1Affine::from_uncompressed_unchecked(&bytes.as_slice().try_into().unwrap()) + .unwrap() + }) + .collect_vec(); + + let mut assigned_affines = vec![]; + let (agg_pubkey, participation_sum) = Self::aggregate_pubkeys( + thread_pool.main(), + &fp_chip, + &pubkey_affines, + &args.pariticipation_bits, + &mut assigned_affines, + ); + let poseidon_commit = + g1_array_poseidon(thread_pool.main(), range.gate(), assigned_affines)?; + + let fp12_one = { + use ff::Field; + fp12_chip.load_constant(thread_pool.main(), Fq12::one()) + }; + let mut h2c_cache = HashToCurveCache::::default(); + + // Verify attestted header + let attested_header = ssz_merkleize_chunks( + thread_pool, + &sha256_chip, + [ + args.attested_block.slot.into_witness(), + args.attested_block.proposer_index.into_witness(), + args.attested_block.parent_root.as_ref().into_witness(), + args.attested_block.state_root.as_ref().into_witness(), + args.attested_block.body_root.as_ref().into_witness(), + ], + )?; + + let finilized_block_body_root = args + .finalized_block + .body_root + .as_ref() + .iter() + .map(|&b| thread_pool.main().load_witness(F::from(b as u64))) + .collect_vec(); + + let finalized_header = ssz_merkleize_chunks( + thread_pool, + &sha256_chip, + [ + args.finalized_block.slot.into_witness(), + args.finalized_block.proposer_index.into_witness(), + args.finalized_block.parent_root.as_ref().into_witness(), + args.finalized_block.state_root.as_ref().into_witness(), + finilized_block_body_root.clone().into(), + ], + )?; + + let signing_root = sha256_chip + .digest::<64>( + thread_pool, + HashInput::TwoToOne(attested_header.into(), args.domain.to_vec().into_witness()), + false, + )? + .output_bytes; + + let g1_neg = g1_chip.load_private_unchecked( + thread_pool.main(), + G1::generator_affine().neg().into_coordinates(), + ); + + let signature = + Self::assign_signature(thread_pool.main(), &g2_chip, &args.signature_compressed); + + let msghash = h2c_chip.hash_to_curve::( + thread_pool, + &fp_chip, + signing_root.into(), + &mut h2c_cache, + )?; + + let res = + bls_chip.verify_pairing(thread_pool.main(), signature, msghash, agg_pubkey, g1_neg); + fp12_chip.assert_equal(thread_pool.main(), res, fp12_one); + + // verify finilized block header against current beacon state merkle proof + verify_merkle_proof( + thread_pool, + &sha256_chip, + args.finality_merkle_branch + .iter() + .map(|w| w.clone().into_witness()), + finalized_header.into(), + &beacon_state_root, + S::FINALIZED_HEADER_INDEX, + )?; + + // verify execution state root against finilized block body merkle proof + verify_merkle_proof( + thread_pool, + &sha256_chip, + args.execution_merkle_branch + .iter() + .map(|w| w.clone().into_witness()), + execution_state_root, + &finilized_block_body_root, + S::EXECUTION_STATE_ROOT_INDEX, + )?; + + Ok(()) + } +} + +impl SyncStepCircuit { + fn assign_signature( + ctx: &mut Context, + g2_chip: &G2Chip, + bytes_compressed: &[u8], + ) -> EcPoint> { + let sig_affine = + G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).unwrap(); + + g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) + } + + /// Takes a list of pubkeys and aggregates them. + fn aggregate_pubkeys<'a>( + ctx: &mut Context, + fp_chip: &FpChip<'a, F>, + pubkey_affines: &[G1Affine], + pariticipation_bits: &[bool], + assigned_affines: &mut Vec>, + ) -> (G1Point, AssignedValue) { + let range = fp_chip.range(); + let gate = fp_chip.gate(); + + let g1_chip = G1Chip::::new(fp_chip); + + let pubkey_compressed_len = G1::BYTES_COMPRESSED; + + let mut participation_bits = vec![]; + + assert_eq!(pubkey_affines.len(), S::SYNC_COMMITTEE_SIZE); + + for (&pk, is_attested) in + itertools::multizip((pubkey_affines.iter(), pariticipation_bits.iter().copied())) + { + let participation_bit = ctx.load_witness(F::from(is_attested as u64)); + gate.assert_bit(ctx, participation_bit); + + let assigned_pk = g1_chip.assign_point_unchecked(ctx, pk); + + // Square y coordinate + let ysq = fp_chip.mul(ctx, assigned_pk.y.clone(), assigned_pk.y.clone()); + // Calculate y^2 using the elliptic curve equation + let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); + // Constrain witness y^2 to be equal to calculated y^2 + fp_chip.assert_equal(ctx, ysq, ysq_calc); + + // *Note:* normally, we would need to take into account the sign of the y coordinate, but + // because we are concerned only with signature forgery, if this is the wrong + // sign, the signature will be invalid anyway and thus verification fails. + + assigned_affines.push(assigned_pk); + participation_bits.push(participation_bit); + } + + let rand_point = g1_chip.load_random_point::(ctx); + let mut acc = rand_point.clone(); + for (bit, point) in participation_bits + .iter() + .copied() + .zip(assigned_affines.iter_mut()) + { + let sum = g1_chip.add_unequal(ctx, acc.clone(), point.clone(), true); + acc = g1_chip.select(ctx, sum, acc, bit); + } + let agg_pubkey = g1_chip.sub_unequal(ctx, acc, rand_point, false); + let participation_sum = gate.sum(ctx, participation_bits); + + (agg_pubkey, participation_sum) + } + + // Calculates y^2 = x^3 + 4 (the curve equation) + fn calculate_ysquared( + ctx: &mut Context, + field_chip: &FpChip<'_, F>, + x: ProperCrtUint, + ) -> ProperCrtUint { + let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); + let x_cubed = field_chip.mul(ctx, x_squared, x); + + let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); + field_chip.carry_mod(ctx, plus_b) + } +} + +impl AppCircuitExt for SyncStepCircuit { + fn setup( + config: &FlexGateConfigParams, + out: Option<&Path>, + ) -> (ParamsKZG, ProvingKey) { + let args = witness::SyncStepArgs::::default(); + let circuit = SyncStepCircuit::::default(); + let range = RangeChip::::new(RangeStrategy::Vertical, 8); + let mut thread_pool = ShaThreadBuilder::keygen(); + + circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + + set_var("LOOKUP_BITS", (config.k - 1).to_string()); + set_var( + "FLEX_GATE_CONFIG_PARAMS", + serde_json::to_string(&config).unwrap(), + ); + + let params = gen_srs(config.k as u32); + + let builder = ShaCircuitBuilder::new(thread_pool, range, None); + + let pk = gen_pkey(|| "sync_step", ¶ms, out, builder).unwrap(); + + (params, pk) + } + + fn parametrize(k: usize) -> FlexGateConfigParams { + let args = witness::SyncStepArgs::::default(); + let circuit = SyncStepCircuit::::default(); + let range = RangeChip::::new(RangeStrategy::Vertical, 8); + let mut thread_pool = ShaThreadBuilder::keygen(); + + circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + let params = thread_pool.config(k, None); + std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); + params + } +} + +#[cfg(test)] +mod tests { + use std::{ + env::{set_var, var}, + fs, + }; + + use crate::{ + table::Sha256Table, + util::{full_prover, full_verifier, gen_pkey}, + witness::{SyncStepArgs, Validator}, + }; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Test; + use ethereum_consensus::builder; + use halo2_base::{ + gates::{ + builder::{CircuitBuilderStage, FlexGateConfigParams}, + flex_gate::GateStrategy, + range::RangeStrategy, + }, + utils::fs::gen_srs, + }; + use halo2_proofs::{ + circuit::SimpleFloorPlanner, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, + poly::kzg::commitment::ParamsKZG, + }; + use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; + use pasta_curves::group::UncompressedEncoding; + use rand::rngs::OsRng; + use rayon::iter::ParallelIterator; + use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; + use snark_verifier_sdk::{ + evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, + halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, + CircuitExt, SHPLONK, + }; + + fn get_circuit_with_data( + k: usize, + config_path: &str, + ) -> (ShaCircuitBuilder, FlexGateConfigParams) { + let args: SyncStepArgs = + serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap(); + let circuit = SyncStepCircuit::::default(); + let range = RangeChip::::new(RangeStrategy::Vertical, 8); + let mut thread_pool = ShaThreadBuilder::prover(); + + circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + let config = thread_pool.config(k, None); + + // let config = if let Ok(f) = fs::read(config_path) { + // serde_json::from_slice(&f).expect("read config file") + // } else { + // SyncStepCircuit::::parametrize(k) + // }; + + // set_var( + // "FLEX_GATE_CONFIG_PARAMS", + // serde_json::to_string(&config).unwrap(), + // ); + // set_var("LOOKUP_BITS", (config.k - 1).to_string()); + println!("params used: {:?}", config); + // set_var( + // "FLEX_GATE_CONFIG_PARAMS", + // serde_json::to_string(&config).unwrap(), + // ); + + let params = gen_srs(config.k as u32); + + let builder = ShaCircuitBuilder::new(thread_pool, range, None); + + (builder, config) + } + + #[test] + fn test_sync_circuit() { + let k = 20; + let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20.json"); + + let timer = start_timer!(|| "sync circuit mock prover"); + let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); + prover.assert_satisfied(); + end_timer!(timer); + } + + // #[test] + // fn test_sync_proofgen() { + // let k = 20; + // let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20_mock.json"); + + // let params = gen_srs(k as u32); + + // let pkey = gen_pkey(|| "sync_step", ¶ms, None, circuit.clone()).unwrap(); + + // let public_inputs = circuit.instances(); + // let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); + + // assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)) + // } + + // #[test] + // fn test_sync_evm_verify() { + // let k = 20; + // let (circuit, config) = get_circuit_with_data(k, "./config/sync_step_k21.json"); + + // let (params, pk) = SyncStepCircuit::::setup(&config, None); + + // let instances = circuit.instances(); + // let num_instance = circuit.num_instance(); + // let deployment_code = gen_evm_verifier_shplonk::>( + // ¶ms, + // pk.get_vk(), + // num_instance, + // None, + // ); + // let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + + // evm_verify(deployment_code, instances, proof); + // } +} diff --git a/lightclient-circuits/src/util.rs b/lightclient-circuits/src/util.rs index bb3df090..d053f94c 100644 --- a/lightclient-circuits/src/util.rs +++ b/lightclient-circuits/src/util.rs @@ -67,15 +67,13 @@ pub(crate) fn query_expression( expr.unwrap() } -pub trait AppCircuitExt: CircuitExt + Default { - fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self; - - fn parametrize(k: usize) -> FlexGateConfigParams; - +pub trait AppCircuitExt: Default { fn setup( config: &FlexGateConfigParams, out: Option<&Path>, ) -> (ParamsKZG, ProvingKey); + + fn parametrize(k: usize) -> FlexGateConfigParams; } /// Randomness used in circuits. diff --git a/lightclient-circuits/src/witness.rs b/lightclient-circuits/src/witness.rs index b5a22e65..d7d25dd6 100644 --- a/lightclient-circuits/src/witness.rs +++ b/lightclient-circuits/src/witness.rs @@ -6,8 +6,5 @@ pub use state::*; mod validators; pub use validators::*; -mod merkle; -pub use merkle::*; - mod hashing; pub use hashing::*; diff --git a/lightclient-circuits/src/witness/merkle.rs b/lightclient-circuits/src/witness/merkle.rs deleted file mode 100644 index 428ab79b..00000000 --- a/lightclient-circuits/src/witness/merkle.rs +++ /dev/null @@ -1,75 +0,0 @@ -use itertools::Itertools; -use serde::{Deserialize, Serialize}; -use sha2::Digest; -use std::collections::HashMap; - -use crate::witness::HashInputChunk; - -use super::HashInput; - -#[derive(Clone, Debug, Default, Serialize, Deserialize)] -pub struct MerkleTrace(pub Vec); - -#[derive(Clone, Debug, Default, Serialize, Deserialize)] -pub struct MerkleTraceStep { - pub sibling: Vec, - pub sibling_index: u64, - pub node: Vec, - pub index: u64, - pub into_left: bool, - pub is_left: bool, - pub is_right: bool, - pub is_rlc: [bool; 2], - pub parent: Vec, - pub parent_index: u64, - pub depth: usize, -} - -impl MerkleTrace { - pub fn empty() -> Self { - Self(vec![]) - } - - pub fn root(&self) -> [u8; 32] { - self.0 - .last() - .expect("root is expected") - .node - .clone() - .try_into() - .unwrap() - } - - pub fn sorted(&self) -> Vec { - self.0 - .clone() - .into_iter() - .sorted_by_key(|e| e.depth) - .rev() - .collect_vec() - } - - pub fn sha256_inputs(&self) -> Vec> { - let mut steps_sorted = self.sorted(); - - // filter out the first (root) level as it require no hashing. - if steps_sorted.last().unwrap().depth == 1 { - steps_sorted.pop(); - } - steps_sorted - .into_iter() - .map(|step| { - assert_eq!( - sha2::Sha256::digest(vec![step.node.clone(), step.sibling.clone()].concat()) - .to_vec(), - step.parent - ); - - HashInput::TwoToOne( - HashInputChunk::new(step.node, step.is_rlc[0]), - HashInputChunk::new(step.sibling, step.is_rlc[1]), - ) - }) - .collect_vec() - } -} diff --git a/lightclient-circuits/src/witness/state.rs b/lightclient-circuits/src/witness/state.rs index bce5d43b..97d1ed10 100644 --- a/lightclient-circuits/src/witness/state.rs +++ b/lightclient-circuits/src/witness/state.rs @@ -1,25 +1,27 @@ +use std::iter; use std::marker::PhantomData; use crate::sha256_circuit::Sha256CircuitConfig; -use super::{validators, HashInput}; -use super::{MerkleTrace, Validator}; +use super::{HashInput, Validator}; use eth_types::{Field, Spec}; use ethereum_consensus::bellatrix::mainnet; use ethereum_consensus::bellatrix::BeaconState; +use ethereum_consensus::capella; use ethereum_consensus::phase0::BeaconBlockHeader; +use itertools::Itertools; use serde::Deserialize; +use sha2::{Sha256, Digest}; use ssz_rs::Merkleized; +use ssz_rs::Node; -/// SyncState is the struct used by all circuits, which contains all the needed -/// data for witness generation. -#[derive(Debug, Clone, Default, Deserialize)] -pub struct SyncState { - pub target_epoch: u64, +#[derive(Debug, Clone, Deserialize)] +pub struct SyncStepArgs { + pub signature_compressed: Vec, - pub sync_committee: Vec, + pub pubkeys_uncompressed: Vec>, - pub sync_signature: Vec, + pub pariticipation_bits: Vec, pub attested_block: BeaconBlockHeader, @@ -27,7 +29,6 @@ pub struct SyncState { pub domain: [u8; 32], - // pub sha256_inputs: Vec>, pub execution_merkle_branch: Vec>, pub execution_state_root: Vec, @@ -35,4 +36,60 @@ pub struct SyncState { pub finality_merkle_branch: Vec>, pub beacon_state_root: Vec, + + _spec: PhantomData, +} + +impl Default for SyncStepArgs { + fn default() -> Self { + let dummy_pk_bytes = hex::decode("f5f151e52f1e8a5b09e4c6f0b25fb13463d442709f21a84f98dcb76a7953aa5225c12e4dd524a95f9be8dfdfa0621c0252adea177adcce725f8b47d0b27370572ad6c5638122cab820103c9bcbb3239939de60b4814c117631d82963a7d7900a").unwrap(); + + let state_merkle_branch = iter::repeat(vec![0u8; 32]) + .take(S::FINALIZED_HEADER_DEPTH) + .collect_vec(); + + let compute_root = |leaf: Vec, branch: &[Vec]| -> Vec { + let mut last_hash = Sha256::digest([leaf, branch[0].clone()].concat()).to_vec(); + + for i in 1..branch.len() { + last_hash = Sha256::digest([last_hash, branch[i].clone()].concat()).to_vec(); + } + + last_hash + }; + + let execution_state_root = vec![0; 32]; + let execution_merkle_branch = vec![vec![0; 32]; S::EXECUTION_STATE_ROOT_DEPTH]; + let beacon_block_body_root = + compute_root(execution_state_root.clone(), &state_merkle_branch); + + let mut finalized_block = capella::BeaconBlockHeader { + body_root: Node::from_bytes(beacon_block_body_root.try_into().unwrap()), + ..Default::default() + }; + let finilized_header = finalized_block.hash_tree_root().unwrap().as_ref().to_vec(); + + let finality_merkle_branch = vec![vec![0; 32]; S::FINALIZED_HEADER_DEPTH]; + + let beacon_state_root = compute_root(finilized_header, &state_merkle_branch); + + Self { + signature_compressed: hex::decode("462c5acb68722355eaa568a166e6da4c46702a496586aa94c681e0b03a200394b8f4adc98d6b5a68e3caf9dae31ff7035a402aad93bdd4752e521b3b536b47dee55d129b6374177f2be8c99b6ea6618abae84b389affc5a50ad8d991f763beaa").unwrap(), + pubkeys_uncompressed: iter::repeat(dummy_pk_bytes) + .take(S::SYNC_COMMITTEE_SIZE) + .collect_vec(), + pariticipation_bits: vec![true; S::SYNC_COMMITTEE_SIZE], + domain: [ + 7, 0, 0, 0, 48, 83, 175, 74, 95, 250, 246, 166, 104, 40, 151, 228, 42, 212, 194, 8, + 48, 56, 232, 147, 61, 9, 41, 204, 88, 234, 56, 134, + ], + attested_block: capella::BeaconBlockHeader::default(), + finalized_block, + finality_merkle_branch, + beacon_state_root, + execution_merkle_branch, + execution_state_root, + _spec: PhantomData, + } + } } diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index af94f9f8..560500a8 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -111,8 +111,6 @@ let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload" let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; -console.log("Execution merkle proof: ", execMerkleProof.witnesses); - let finalizedBlock = { slot: 0, proposerIndex: 0, @@ -169,12 +167,8 @@ assert.deepStrictEqual(createNodeFromProof(finilizedBlockMerkleProof).root, beac let input = { targetEpoch: targetEpoch, - syncCommittee: Array.from(beaconState.validators.entries()).map(([i, validator]) => ({ - id: i, - isAttested: true, - pubkey: Array.from(validator.pubkey), - pubkeyUncompressed: Array.from(g1PointToBytesLE(pubKeyPoints[i], false)), - })), + pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), + pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), domain: Array.from(domain), attestedBlock: attestedBlockJson, finalizedBlock: finilizedBlockJson, @@ -186,6 +180,6 @@ let input = { }; fs.writeFileSync( - `../test_data/sync_state.json`, + `../test_data/sync_step.json`, serialize(input) ); diff --git a/test_data/sync_state.json b/test_data/sync_state.json deleted file mode 100644 index 2b614b8f..00000000 --- a/test_data/sync_state.json +++ /dev/null @@ -1 +0,0 @@ -{"target_epoch":25,"sync_committee":[{"id":0,"is_attested":true,"pubkey":[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,130],"pubkey_uncompressed":[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10]},{"id":1,"is_attested":true,"pubkey":[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,134],"pubkey_uncompressed":[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12]},{"id":2,"is_attested":true,"pubkey":[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,152],"pubkey_uncompressed":[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11]},{"id":3,"is_attested":true,"pubkey":[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,168],"pubkey_uncompressed":[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22]},{"id":4,"is_attested":true,"pubkey":[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,145],"pubkey_uncompressed":[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5]},{"id":5,"is_attested":true,"pubkey":[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,128],"pubkey_uncompressed":[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1]},{"id":6,"is_attested":true,"pubkey":[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,167],"pubkey_uncompressed":[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21]},{"id":7,"is_attested":true,"pubkey":[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,181],"pubkey_uncompressed":[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21]},{"id":8,"is_attested":true,"pubkey":[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,149],"pubkey_uncompressed":[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10]},{"id":9,"is_attested":true,"pubkey":[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,170],"pubkey_uncompressed":[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17]},{"id":10,"is_attested":true,"pubkey":[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,171],"pubkey_uncompressed":[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22]},{"id":11,"is_attested":true,"pubkey":[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,138],"pubkey_uncompressed":[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5]},{"id":12,"is_attested":true,"pubkey":[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,143],"pubkey_uncompressed":[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3]},{"id":13,"is_attested":true,"pubkey":[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,168],"pubkey_uncompressed":[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20]},{"id":14,"is_attested":true,"pubkey":[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,153],"pubkey_uncompressed":[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12]},{"id":15,"is_attested":true,"pubkey":[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,140],"pubkey_uncompressed":[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3]},{"id":16,"is_attested":true,"pubkey":[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,171],"pubkey_uncompressed":[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18]},{"id":17,"is_attested":true,"pubkey":[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,175],"pubkey_uncompressed":[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25]},{"id":18,"is_attested":true,"pubkey":[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,131],"pubkey_uncompressed":[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5]},{"id":19,"is_attested":true,"pubkey":[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,171],"pubkey_uncompressed":[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25]},{"id":20,"is_attested":true,"pubkey":[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,163],"pubkey_uncompressed":[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17]},{"id":21,"is_attested":true,"pubkey":[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,145],"pubkey_uncompressed":[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0]},{"id":22,"is_attested":true,"pubkey":[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,152],"pubkey_uncompressed":[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11]},{"id":23,"is_attested":true,"pubkey":[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,146],"pubkey_uncompressed":[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9]},{"id":24,"is_attested":true,"pubkey":[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,136],"pubkey_uncompressed":[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8]},{"id":25,"is_attested":true,"pubkey":[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,160],"pubkey_uncompressed":[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24]},{"id":26,"is_attested":true,"pubkey":[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,181],"pubkey_uncompressed":[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14]},{"id":27,"is_attested":true,"pubkey":[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,138],"pubkey_uncompressed":[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0]},{"id":28,"is_attested":true,"pubkey":[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,137],"pubkey_uncompressed":[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3]},{"id":29,"is_attested":true,"pubkey":[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,149],"pubkey_uncompressed":[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6]},{"id":30,"is_attested":true,"pubkey":[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,176],"pubkey_uncompressed":[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19]},{"id":31,"is_attested":true,"pubkey":[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,176],"pubkey_uncompressed":[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24]},{"id":32,"is_attested":true,"pubkey":[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,178],"pubkey_uncompressed":[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21]},{"id":33,"is_attested":true,"pubkey":[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,132],"pubkey_uncompressed":[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11]},{"id":34,"is_attested":true,"pubkey":[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,132],"pubkey_uncompressed":[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5]},{"id":35,"is_attested":true,"pubkey":[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,152],"pubkey_uncompressed":[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9]},{"id":36,"is_attested":true,"pubkey":[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,184],"pubkey_uncompressed":[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17]},{"id":37,"is_attested":true,"pubkey":[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,131],"pubkey_uncompressed":[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12]},{"id":38,"is_attested":true,"pubkey":[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,174],"pubkey_uncompressed":[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20]},{"id":39,"is_attested":true,"pubkey":[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,174],"pubkey_uncompressed":[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18]},{"id":40,"is_attested":true,"pubkey":[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,179],"pubkey_uncompressed":[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13]},{"id":41,"is_attested":true,"pubkey":[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,174],"pubkey_uncompressed":[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21]},{"id":42,"is_attested":true,"pubkey":[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,151],"pubkey_uncompressed":[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1]},{"id":43,"is_attested":true,"pubkey":[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,132],"pubkey_uncompressed":[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4]},{"id":44,"is_attested":true,"pubkey":[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,142],"pubkey_uncompressed":[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4]},{"id":45,"is_attested":true,"pubkey":[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,153],"pubkey_uncompressed":[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5]},{"id":46,"is_attested":true,"pubkey":[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,173],"pubkey_uncompressed":[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17]},{"id":47,"is_attested":true,"pubkey":[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,140],"pubkey_uncompressed":[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7]},{"id":48,"is_attested":true,"pubkey":[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,162],"pubkey_uncompressed":[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17]},{"id":49,"is_attested":true,"pubkey":[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,165],"pubkey_uncompressed":[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22]},{"id":50,"is_attested":true,"pubkey":[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,153],"pubkey_uncompressed":[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0]},{"id":51,"is_attested":true,"pubkey":[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,148],"pubkey_uncompressed":[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1]},{"id":52,"is_attested":true,"pubkey":[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,137],"pubkey_uncompressed":[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12]},{"id":53,"is_attested":true,"pubkey":[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,141],"pubkey_uncompressed":[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3]},{"id":54,"is_attested":true,"pubkey":[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,146],"pubkey_uncompressed":[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2]},{"id":55,"is_attested":true,"pubkey":[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,166],"pubkey_uncompressed":[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13]},{"id":56,"is_attested":true,"pubkey":[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,167],"pubkey_uncompressed":[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19]},{"id":57,"is_attested":true,"pubkey":[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,132],"pubkey_uncompressed":[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2]},{"id":58,"is_attested":true,"pubkey":[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,173],"pubkey_uncompressed":[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23]},{"id":59,"is_attested":true,"pubkey":[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,150],"pubkey_uncompressed":[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6]},{"id":60,"is_attested":true,"pubkey":[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,172],"pubkey_uncompressed":[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18]},{"id":61,"is_attested":true,"pubkey":[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,171],"pubkey_uncompressed":[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14]},{"id":62,"is_attested":true,"pubkey":[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,132],"pubkey_uncompressed":[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9]},{"id":63,"is_attested":true,"pubkey":[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,163],"pubkey_uncompressed":[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22]},{"id":64,"is_attested":true,"pubkey":[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,169],"pubkey_uncompressed":[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18]},{"id":65,"is_attested":true,"pubkey":[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,178],"pubkey_uncompressed":[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13]},{"id":66,"is_attested":true,"pubkey":[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,140],"pubkey_uncompressed":[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11]},{"id":67,"is_attested":true,"pubkey":[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,183],"pubkey_uncompressed":[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17]},{"id":68,"is_attested":true,"pubkey":[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,140],"pubkey_uncompressed":[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9]},{"id":69,"is_attested":true,"pubkey":[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,161],"pubkey_uncompressed":[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21]},{"id":70,"is_attested":true,"pubkey":[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,161],"pubkey_uncompressed":[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19]},{"id":71,"is_attested":true,"pubkey":[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,161],"pubkey_uncompressed":[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18]},{"id":72,"is_attested":true,"pubkey":[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,173],"pubkey_uncompressed":[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24]},{"id":73,"is_attested":true,"pubkey":[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,151],"pubkey_uncompressed":[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2]},{"id":74,"is_attested":true,"pubkey":[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,177],"pubkey_uncompressed":[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17]},{"id":75,"is_attested":true,"pubkey":[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,174],"pubkey_uncompressed":[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15]},{"id":76,"is_attested":true,"pubkey":[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,183],"pubkey_uncompressed":[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21]},{"id":77,"is_attested":true,"pubkey":[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,173],"pubkey_uncompressed":[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19]},{"id":78,"is_attested":true,"pubkey":[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,145],"pubkey_uncompressed":[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10]},{"id":79,"is_attested":true,"pubkey":[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,178],"pubkey_uncompressed":[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20]},{"id":80,"is_attested":true,"pubkey":[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,162],"pubkey_uncompressed":[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23]},{"id":81,"is_attested":true,"pubkey":[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,173],"pubkey_uncompressed":[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19]},{"id":82,"is_attested":true,"pubkey":[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,162],"pubkey_uncompressed":[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18]},{"id":83,"is_attested":true,"pubkey":[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,165],"pubkey_uncompressed":[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25]},{"id":84,"is_attested":true,"pubkey":[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,160],"pubkey_uncompressed":[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21]},{"id":85,"is_attested":true,"pubkey":[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,152],"pubkey_uncompressed":[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8]},{"id":86,"is_attested":true,"pubkey":[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,182],"pubkey_uncompressed":[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22]},{"id":87,"is_attested":true,"pubkey":[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,144],"pubkey_uncompressed":[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1]},{"id":88,"is_attested":true,"pubkey":[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,149],"pubkey_uncompressed":[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10]},{"id":89,"is_attested":true,"pubkey":[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,180],"pubkey_uncompressed":[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15]},{"id":90,"is_attested":true,"pubkey":[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,149],"pubkey_uncompressed":[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6]},{"id":91,"is_attested":true,"pubkey":[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,171],"pubkey_uncompressed":[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16]},{"id":92,"is_attested":true,"pubkey":[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,146],"pubkey_uncompressed":[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6]},{"id":93,"is_attested":true,"pubkey":[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,130],"pubkey_uncompressed":[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4]},{"id":94,"is_attested":true,"pubkey":[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,183],"pubkey_uncompressed":[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23]},{"id":95,"is_attested":true,"pubkey":[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,185],"pubkey_uncompressed":[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20]},{"id":96,"is_attested":true,"pubkey":[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,180],"pubkey_uncompressed":[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23]},{"id":97,"is_attested":true,"pubkey":[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,153],"pubkey_uncompressed":[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8]},{"id":98,"is_attested":true,"pubkey":[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,130],"pubkey_uncompressed":[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11]},{"id":99,"is_attested":true,"pubkey":[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,136],"pubkey_uncompressed":[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5]},{"id":100,"is_attested":true,"pubkey":[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,142],"pubkey_uncompressed":[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8]},{"id":101,"is_attested":true,"pubkey":[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,142],"pubkey_uncompressed":[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9]},{"id":102,"is_attested":true,"pubkey":[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,175],"pubkey_uncompressed":[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18]},{"id":103,"is_attested":true,"pubkey":[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,164],"pubkey_uncompressed":[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21]},{"id":104,"is_attested":true,"pubkey":[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,162],"pubkey_uncompressed":[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22]},{"id":105,"is_attested":true,"pubkey":[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,131],"pubkey_uncompressed":[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3]},{"id":106,"is_attested":true,"pubkey":[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,174],"pubkey_uncompressed":[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23]},{"id":107,"is_attested":true,"pubkey":[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,135],"pubkey_uncompressed":[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10]},{"id":108,"is_attested":true,"pubkey":[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,170],"pubkey_uncompressed":[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14]},{"id":109,"is_attested":true,"pubkey":[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,164],"pubkey_uncompressed":[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21]},{"id":110,"is_attested":true,"pubkey":[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,135],"pubkey_uncompressed":[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9]},{"id":111,"is_attested":true,"pubkey":[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,151],"pubkey_uncompressed":[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9]},{"id":112,"is_attested":true,"pubkey":[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,166],"pubkey_uncompressed":[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13]},{"id":113,"is_attested":true,"pubkey":[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,129],"pubkey_uncompressed":[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10]},{"id":114,"is_attested":true,"pubkey":[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,140],"pubkey_uncompressed":[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4]},{"id":115,"is_attested":true,"pubkey":[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,174],"pubkey_uncompressed":[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20]},{"id":116,"is_attested":true,"pubkey":[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,146],"pubkey_uncompressed":[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4]},{"id":117,"is_attested":true,"pubkey":[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,168],"pubkey_uncompressed":[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16]},{"id":118,"is_attested":true,"pubkey":[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,148],"pubkey_uncompressed":[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8]},{"id":119,"is_attested":true,"pubkey":[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,132],"pubkey_uncompressed":[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1]},{"id":120,"is_attested":true,"pubkey":[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,136],"pubkey_uncompressed":[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4]},{"id":121,"is_attested":true,"pubkey":[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,160],"pubkey_uncompressed":[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15]},{"id":122,"is_attested":true,"pubkey":[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,133],"pubkey_uncompressed":[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4]},{"id":123,"is_attested":true,"pubkey":[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,153],"pubkey_uncompressed":[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1]},{"id":124,"is_attested":true,"pubkey":[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,150],"pubkey_uncompressed":[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11]},{"id":125,"is_attested":true,"pubkey":[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,148],"pubkey_uncompressed":[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4]},{"id":126,"is_attested":true,"pubkey":[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,142],"pubkey_uncompressed":[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9]},{"id":127,"is_attested":true,"pubkey":[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,146],"pubkey_uncompressed":[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11]},{"id":128,"is_attested":true,"pubkey":[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,170],"pubkey_uncompressed":[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13]},{"id":129,"is_attested":true,"pubkey":[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,144],"pubkey_uncompressed":[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0]},{"id":130,"is_attested":true,"pubkey":[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,139],"pubkey_uncompressed":[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7]},{"id":131,"is_attested":true,"pubkey":[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,149],"pubkey_uncompressed":[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1]},{"id":132,"is_attested":true,"pubkey":[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,148],"pubkey_uncompressed":[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1]},{"id":133,"is_attested":true,"pubkey":[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,175],"pubkey_uncompressed":[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14]},{"id":134,"is_attested":true,"pubkey":[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,149],"pubkey_uncompressed":[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7]},{"id":135,"is_attested":true,"pubkey":[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,147],"pubkey_uncompressed":[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5]},{"id":136,"is_attested":true,"pubkey":[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,176],"pubkey_uncompressed":[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13]},{"id":137,"is_attested":true,"pubkey":[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,162],"pubkey_uncompressed":[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16]},{"id":138,"is_attested":true,"pubkey":[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,142],"pubkey_uncompressed":[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10]},{"id":139,"is_attested":true,"pubkey":[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,181],"pubkey_uncompressed":[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23]},{"id":140,"is_attested":true,"pubkey":[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,130],"pubkey_uncompressed":[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4]},{"id":141,"is_attested":true,"pubkey":[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,131],"pubkey_uncompressed":[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5]},{"id":142,"is_attested":true,"pubkey":[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,134],"pubkey_uncompressed":[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4]},{"id":143,"is_attested":true,"pubkey":[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,145],"pubkey_uncompressed":[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3]},{"id":144,"is_attested":true,"pubkey":[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,151],"pubkey_uncompressed":[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0]},{"id":145,"is_attested":true,"pubkey":[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,181],"pubkey_uncompressed":[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14]},{"id":146,"is_attested":true,"pubkey":[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,141],"pubkey_uncompressed":[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3]},{"id":147,"is_attested":true,"pubkey":[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,133],"pubkey_uncompressed":[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4]},{"id":148,"is_attested":true,"pubkey":[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,185],"pubkey_uncompressed":[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25]},{"id":149,"is_attested":true,"pubkey":[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,131],"pubkey_uncompressed":[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12]},{"id":150,"is_attested":true,"pubkey":[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,139],"pubkey_uncompressed":[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10]},{"id":151,"is_attested":true,"pubkey":[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,173],"pubkey_uncompressed":[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23]},{"id":152,"is_attested":true,"pubkey":[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,145],"pubkey_uncompressed":[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6]},{"id":153,"is_attested":true,"pubkey":[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,144],"pubkey_uncompressed":[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4]},{"id":154,"is_attested":true,"pubkey":[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,185],"pubkey_uncompressed":[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25]},{"id":155,"is_attested":true,"pubkey":[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,169],"pubkey_uncompressed":[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25]},{"id":156,"is_attested":true,"pubkey":[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,136],"pubkey_uncompressed":[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2]},{"id":157,"is_attested":true,"pubkey":[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,133],"pubkey_uncompressed":[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0]},{"id":158,"is_attested":true,"pubkey":[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,180],"pubkey_uncompressed":[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13]},{"id":159,"is_attested":true,"pubkey":[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,172],"pubkey_uncompressed":[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20]},{"id":160,"is_attested":true,"pubkey":[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,150],"pubkey_uncompressed":[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10]},{"id":161,"is_attested":true,"pubkey":[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,174],"pubkey_uncompressed":[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13]},{"id":162,"is_attested":true,"pubkey":[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,182],"pubkey_uncompressed":[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16]},{"id":163,"is_attested":true,"pubkey":[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,163],"pubkey_uncompressed":[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25]},{"id":164,"is_attested":true,"pubkey":[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,170],"pubkey_uncompressed":[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21]},{"id":165,"is_attested":true,"pubkey":[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,143],"pubkey_uncompressed":[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1]},{"id":166,"is_attested":true,"pubkey":[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,166],"pubkey_uncompressed":[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18]},{"id":167,"is_attested":true,"pubkey":[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,151],"pubkey_uncompressed":[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0]},{"id":168,"is_attested":true,"pubkey":[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,153],"pubkey_uncompressed":[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11]},{"id":169,"is_attested":true,"pubkey":[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,180],"pubkey_uncompressed":[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19]},{"id":170,"is_attested":true,"pubkey":[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,144],"pubkey_uncompressed":[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11]},{"id":171,"is_attested":true,"pubkey":[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,132],"pubkey_uncompressed":[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11]},{"id":172,"is_attested":true,"pubkey":[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,130],"pubkey_uncompressed":[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2]},{"id":173,"is_attested":true,"pubkey":[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,131],"pubkey_uncompressed":[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1]},{"id":174,"is_attested":true,"pubkey":[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,162],"pubkey_uncompressed":[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22]},{"id":175,"is_attested":true,"pubkey":[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,153],"pubkey_uncompressed":[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4]},{"id":176,"is_attested":true,"pubkey":[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,128],"pubkey_uncompressed":[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9]},{"id":177,"is_attested":true,"pubkey":[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,162],"pubkey_uncompressed":[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19]},{"id":178,"is_attested":true,"pubkey":[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,177],"pubkey_uncompressed":[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17]},{"id":179,"is_attested":true,"pubkey":[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,175],"pubkey_uncompressed":[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20]},{"id":180,"is_attested":true,"pubkey":[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,149],"pubkey_uncompressed":[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12]},{"id":181,"is_attested":true,"pubkey":[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,152],"pubkey_uncompressed":[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5]},{"id":182,"is_attested":true,"pubkey":[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,151],"pubkey_uncompressed":[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5]},{"id":183,"is_attested":true,"pubkey":[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,134],"pubkey_uncompressed":[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0]},{"id":184,"is_attested":true,"pubkey":[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,142],"pubkey_uncompressed":[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7]},{"id":185,"is_attested":true,"pubkey":[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,177],"pubkey_uncompressed":[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20]},{"id":186,"is_attested":true,"pubkey":[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,178],"pubkey_uncompressed":[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21]},{"id":187,"is_attested":true,"pubkey":[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,145],"pubkey_uncompressed":[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12]},{"id":188,"is_attested":true,"pubkey":[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,182],"pubkey_uncompressed":[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22]},{"id":189,"is_attested":true,"pubkey":[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,162],"pubkey_uncompressed":[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19]},{"id":190,"is_attested":true,"pubkey":[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,170],"pubkey_uncompressed":[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25]},{"id":191,"is_attested":true,"pubkey":[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,164],"pubkey_uncompressed":[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21]},{"id":192,"is_attested":true,"pubkey":[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,163],"pubkey_uncompressed":[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21]},{"id":193,"is_attested":true,"pubkey":[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,166],"pubkey_uncompressed":[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17]},{"id":194,"is_attested":true,"pubkey":[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,175],"pubkey_uncompressed":[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18]},{"id":195,"is_attested":true,"pubkey":[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,174],"pubkey_uncompressed":[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21]},{"id":196,"is_attested":true,"pubkey":[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,160],"pubkey_uncompressed":[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22]},{"id":197,"is_attested":true,"pubkey":[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,160],"pubkey_uncompressed":[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15]},{"id":198,"is_attested":true,"pubkey":[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,176],"pubkey_uncompressed":[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13]},{"id":199,"is_attested":true,"pubkey":[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,135],"pubkey_uncompressed":[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4]},{"id":200,"is_attested":true,"pubkey":[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,128],"pubkey_uncompressed":[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8]},{"id":201,"is_attested":true,"pubkey":[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,172],"pubkey_uncompressed":[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20]},{"id":202,"is_attested":true,"pubkey":[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,149],"pubkey_uncompressed":[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6]},{"id":203,"is_attested":true,"pubkey":[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,140],"pubkey_uncompressed":[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11]},{"id":204,"is_attested":true,"pubkey":[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,147],"pubkey_uncompressed":[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7]},{"id":205,"is_attested":true,"pubkey":[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,163],"pubkey_uncompressed":[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13]},{"id":206,"is_attested":true,"pubkey":[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,161],"pubkey_uncompressed":[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16]},{"id":207,"is_attested":true,"pubkey":[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,153],"pubkey_uncompressed":[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0]},{"id":208,"is_attested":true,"pubkey":[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,165],"pubkey_uncompressed":[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21]},{"id":209,"is_attested":true,"pubkey":[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,139],"pubkey_uncompressed":[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7]},{"id":210,"is_attested":true,"pubkey":[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,172],"pubkey_uncompressed":[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15]},{"id":211,"is_attested":true,"pubkey":[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,139],"pubkey_uncompressed":[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5]},{"id":212,"is_attested":true,"pubkey":[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,169],"pubkey_uncompressed":[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14]},{"id":213,"is_attested":true,"pubkey":[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,146],"pubkey_uncompressed":[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9]},{"id":214,"is_attested":true,"pubkey":[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,172],"pubkey_uncompressed":[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18]},{"id":215,"is_attested":true,"pubkey":[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,142],"pubkey_uncompressed":[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1]},{"id":216,"is_attested":true,"pubkey":[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,177],"pubkey_uncompressed":[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15]},{"id":217,"is_attested":true,"pubkey":[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,136],"pubkey_uncompressed":[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1]},{"id":218,"is_attested":true,"pubkey":[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,142],"pubkey_uncompressed":[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3]},{"id":219,"is_attested":true,"pubkey":[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,150],"pubkey_uncompressed":[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1]},{"id":220,"is_attested":true,"pubkey":[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,141],"pubkey_uncompressed":[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6]},{"id":221,"is_attested":true,"pubkey":[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,185],"pubkey_uncompressed":[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15]},{"id":222,"is_attested":true,"pubkey":[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,128],"pubkey_uncompressed":[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3]},{"id":223,"is_attested":true,"pubkey":[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,145],"pubkey_uncompressed":[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3]},{"id":224,"is_attested":true,"pubkey":[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,138],"pubkey_uncompressed":[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4]},{"id":225,"is_attested":true,"pubkey":[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,167],"pubkey_uncompressed":[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21]},{"id":226,"is_attested":true,"pubkey":[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,138],"pubkey_uncompressed":[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6]},{"id":227,"is_attested":true,"pubkey":[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,180],"pubkey_uncompressed":[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21]},{"id":228,"is_attested":true,"pubkey":[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,142],"pubkey_uncompressed":[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8]},{"id":229,"is_attested":true,"pubkey":[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,131],"pubkey_uncompressed":[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2]},{"id":230,"is_attested":true,"pubkey":[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,178],"pubkey_uncompressed":[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22]},{"id":231,"is_attested":true,"pubkey":[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,164],"pubkey_uncompressed":[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21]},{"id":232,"is_attested":true,"pubkey":[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,151],"pubkey_uncompressed":[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11]},{"id":233,"is_attested":true,"pubkey":[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,133],"pubkey_uncompressed":[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9]},{"id":234,"is_attested":true,"pubkey":[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,164],"pubkey_uncompressed":[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15]},{"id":235,"is_attested":true,"pubkey":[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,151],"pubkey_uncompressed":[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0]},{"id":236,"is_attested":true,"pubkey":[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,182],"pubkey_uncompressed":[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22]},{"id":237,"is_attested":true,"pubkey":[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,133],"pubkey_uncompressed":[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4]},{"id":238,"is_attested":true,"pubkey":[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,146],"pubkey_uncompressed":[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1]},{"id":239,"is_attested":true,"pubkey":[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,175],"pubkey_uncompressed":[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15]},{"id":240,"is_attested":true,"pubkey":[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,136],"pubkey_uncompressed":[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1]},{"id":241,"is_attested":true,"pubkey":[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,147],"pubkey_uncompressed":[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4]},{"id":242,"is_attested":true,"pubkey":[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,172],"pubkey_uncompressed":[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13]},{"id":243,"is_attested":true,"pubkey":[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,176],"pubkey_uncompressed":[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17]},{"id":244,"is_attested":true,"pubkey":[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,148],"pubkey_uncompressed":[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9]},{"id":245,"is_attested":true,"pubkey":[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,174],"pubkey_uncompressed":[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24]},{"id":246,"is_attested":true,"pubkey":[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,128],"pubkey_uncompressed":[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10]},{"id":247,"is_attested":true,"pubkey":[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,167],"pubkey_uncompressed":[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20]},{"id":248,"is_attested":true,"pubkey":[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,151],"pubkey_uncompressed":[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10]},{"id":249,"is_attested":true,"pubkey":[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,151],"pubkey_uncompressed":[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3]},{"id":250,"is_attested":true,"pubkey":[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,128],"pubkey_uncompressed":[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1]},{"id":251,"is_attested":true,"pubkey":[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,179],"pubkey_uncompressed":[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24]},{"id":252,"is_attested":true,"pubkey":[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,183],"pubkey_uncompressed":[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18]},{"id":253,"is_attested":true,"pubkey":[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,171],"pubkey_uncompressed":[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25]},{"id":254,"is_attested":true,"pubkey":[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,151],"pubkey_uncompressed":[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11]},{"id":255,"is_attested":true,"pubkey":[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,134],"pubkey_uncompressed":[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2]},{"id":256,"is_attested":true,"pubkey":[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,134],"pubkey_uncompressed":[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1]},{"id":257,"is_attested":true,"pubkey":[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,183],"pubkey_uncompressed":[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15]},{"id":258,"is_attested":true,"pubkey":[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,144],"pubkey_uncompressed":[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11]},{"id":259,"is_attested":true,"pubkey":[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,174],"pubkey_uncompressed":[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24]},{"id":260,"is_attested":true,"pubkey":[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,153],"pubkey_uncompressed":[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9]},{"id":261,"is_attested":true,"pubkey":[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,131],"pubkey_uncompressed":[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10]},{"id":262,"is_attested":true,"pubkey":[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,167],"pubkey_uncompressed":[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15]},{"id":263,"is_attested":true,"pubkey":[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,152],"pubkey_uncompressed":[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4]},{"id":264,"is_attested":true,"pubkey":[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,130],"pubkey_uncompressed":[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4]},{"id":265,"is_attested":true,"pubkey":[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,148],"pubkey_uncompressed":[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6]},{"id":266,"is_attested":true,"pubkey":[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,161],"pubkey_uncompressed":[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16]},{"id":267,"is_attested":true,"pubkey":[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,142],"pubkey_uncompressed":[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3]},{"id":268,"is_attested":true,"pubkey":[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,178],"pubkey_uncompressed":[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25]},{"id":269,"is_attested":true,"pubkey":[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,162],"pubkey_uncompressed":[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19]},{"id":270,"is_attested":true,"pubkey":[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,176],"pubkey_uncompressed":[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23]},{"id":271,"is_attested":true,"pubkey":[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,162],"pubkey_uncompressed":[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14]},{"id":272,"is_attested":true,"pubkey":[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,179],"pubkey_uncompressed":[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20]},{"id":273,"is_attested":true,"pubkey":[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,168],"pubkey_uncompressed":[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14]},{"id":274,"is_attested":true,"pubkey":[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,168],"pubkey_uncompressed":[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15]},{"id":275,"is_attested":true,"pubkey":[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,162],"pubkey_uncompressed":[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17]},{"id":276,"is_attested":true,"pubkey":[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,183],"pubkey_uncompressed":[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17]},{"id":277,"is_attested":true,"pubkey":[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,141],"pubkey_uncompressed":[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12]},{"id":278,"is_attested":true,"pubkey":[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,168],"pubkey_uncompressed":[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18]},{"id":279,"is_attested":true,"pubkey":[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,152],"pubkey_uncompressed":[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7]},{"id":280,"is_attested":true,"pubkey":[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,161],"pubkey_uncompressed":[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21]},{"id":281,"is_attested":true,"pubkey":[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,131],"pubkey_uncompressed":[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11]},{"id":282,"is_attested":true,"pubkey":[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,153],"pubkey_uncompressed":[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0]},{"id":283,"is_attested":true,"pubkey":[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,129],"pubkey_uncompressed":[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3]},{"id":284,"is_attested":true,"pubkey":[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,141],"pubkey_uncompressed":[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9]},{"id":285,"is_attested":true,"pubkey":[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,183],"pubkey_uncompressed":[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13]},{"id":286,"is_attested":true,"pubkey":[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,174],"pubkey_uncompressed":[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15]},{"id":287,"is_attested":true,"pubkey":[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,129],"pubkey_uncompressed":[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10]},{"id":288,"is_attested":true,"pubkey":[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,130],"pubkey_uncompressed":[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3]},{"id":289,"is_attested":true,"pubkey":[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,134],"pubkey_uncompressed":[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0]},{"id":290,"is_attested":true,"pubkey":[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,183],"pubkey_uncompressed":[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24]},{"id":291,"is_attested":true,"pubkey":[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,144],"pubkey_uncompressed":[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6]},{"id":292,"is_attested":true,"pubkey":[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,145],"pubkey_uncompressed":[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1]},{"id":293,"is_attested":true,"pubkey":[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,164],"pubkey_uncompressed":[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25]},{"id":294,"is_attested":true,"pubkey":[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,168],"pubkey_uncompressed":[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17]},{"id":295,"is_attested":true,"pubkey":[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,132],"pubkey_uncompressed":[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4]},{"id":296,"is_attested":true,"pubkey":[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,140],"pubkey_uncompressed":[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7]},{"id":297,"is_attested":true,"pubkey":[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,137],"pubkey_uncompressed":[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4]},{"id":298,"is_attested":true,"pubkey":[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,176],"pubkey_uncompressed":[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25]},{"id":299,"is_attested":true,"pubkey":[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,130],"pubkey_uncompressed":[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12]},{"id":300,"is_attested":true,"pubkey":[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,167],"pubkey_uncompressed":[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19]},{"id":301,"is_attested":true,"pubkey":[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,139],"pubkey_uncompressed":[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4]},{"id":302,"is_attested":true,"pubkey":[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,145],"pubkey_uncompressed":[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6]},{"id":303,"is_attested":true,"pubkey":[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,161],"pubkey_uncompressed":[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16]},{"id":304,"is_attested":true,"pubkey":[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,151],"pubkey_uncompressed":[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6]},{"id":305,"is_attested":true,"pubkey":[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,168],"pubkey_uncompressed":[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17]},{"id":306,"is_attested":true,"pubkey":[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,139],"pubkey_uncompressed":[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3]},{"id":307,"is_attested":true,"pubkey":[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,143],"pubkey_uncompressed":[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1]},{"id":308,"is_attested":true,"pubkey":[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,179],"pubkey_uncompressed":[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24]},{"id":309,"is_attested":true,"pubkey":[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,149],"pubkey_uncompressed":[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5]},{"id":310,"is_attested":true,"pubkey":[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,138],"pubkey_uncompressed":[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5]},{"id":311,"is_attested":true,"pubkey":[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,133],"pubkey_uncompressed":[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8]},{"id":312,"is_attested":true,"pubkey":[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,171],"pubkey_uncompressed":[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15]},{"id":313,"is_attested":true,"pubkey":[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,172],"pubkey_uncompressed":[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22]},{"id":314,"is_attested":true,"pubkey":[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,129],"pubkey_uncompressed":[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9]},{"id":315,"is_attested":true,"pubkey":[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,153],"pubkey_uncompressed":[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6]},{"id":316,"is_attested":true,"pubkey":[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,180],"pubkey_uncompressed":[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20]},{"id":317,"is_attested":true,"pubkey":[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,137],"pubkey_uncompressed":[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7]},{"id":318,"is_attested":true,"pubkey":[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,128],"pubkey_uncompressed":[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3]},{"id":319,"is_attested":true,"pubkey":[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,164],"pubkey_uncompressed":[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14]},{"id":320,"is_attested":true,"pubkey":[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,128],"pubkey_uncompressed":[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5]},{"id":321,"is_attested":true,"pubkey":[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,133],"pubkey_uncompressed":[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5]},{"id":322,"is_attested":true,"pubkey":[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,161],"pubkey_uncompressed":[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21]},{"id":323,"is_attested":true,"pubkey":[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,176],"pubkey_uncompressed":[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17]},{"id":324,"is_attested":true,"pubkey":[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,135],"pubkey_uncompressed":[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4]},{"id":325,"is_attested":true,"pubkey":[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,167],"pubkey_uncompressed":[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17]},{"id":326,"is_attested":true,"pubkey":[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,137],"pubkey_uncompressed":[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0]},{"id":327,"is_attested":true,"pubkey":[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,163],"pubkey_uncompressed":[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25]},{"id":328,"is_attested":true,"pubkey":[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,138],"pubkey_uncompressed":[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9]},{"id":329,"is_attested":true,"pubkey":[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,169],"pubkey_uncompressed":[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16]},{"id":330,"is_attested":true,"pubkey":[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,174],"pubkey_uncompressed":[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19]},{"id":331,"is_attested":true,"pubkey":[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,174],"pubkey_uncompressed":[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16]},{"id":332,"is_attested":true,"pubkey":[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,171],"pubkey_uncompressed":[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17]},{"id":333,"is_attested":true,"pubkey":[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,133],"pubkey_uncompressed":[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1]},{"id":334,"is_attested":true,"pubkey":[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,170],"pubkey_uncompressed":[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19]},{"id":335,"is_attested":true,"pubkey":[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,161],"pubkey_uncompressed":[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19]},{"id":336,"is_attested":true,"pubkey":[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,136],"pubkey_uncompressed":[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0]},{"id":337,"is_attested":true,"pubkey":[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,141],"pubkey_uncompressed":[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7]},{"id":338,"is_attested":true,"pubkey":[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,130],"pubkey_uncompressed":[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6]},{"id":339,"is_attested":true,"pubkey":[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,144],"pubkey_uncompressed":[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2]},{"id":340,"is_attested":true,"pubkey":[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,185],"pubkey_uncompressed":[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17]},{"id":341,"is_attested":true,"pubkey":[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,151],"pubkey_uncompressed":[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7]},{"id":342,"is_attested":true,"pubkey":[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,173],"pubkey_uncompressed":[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15]},{"id":343,"is_attested":true,"pubkey":[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,164],"pubkey_uncompressed":[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15]},{"id":344,"is_attested":true,"pubkey":[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,131],"pubkey_uncompressed":[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12]},{"id":345,"is_attested":true,"pubkey":[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,167],"pubkey_uncompressed":[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22]},{"id":346,"is_attested":true,"pubkey":[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,129],"pubkey_uncompressed":[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7]},{"id":347,"is_attested":true,"pubkey":[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,165],"pubkey_uncompressed":[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17]},{"id":348,"is_attested":true,"pubkey":[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,181],"pubkey_uncompressed":[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25]},{"id":349,"is_attested":true,"pubkey":[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,138],"pubkey_uncompressed":[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2]},{"id":350,"is_attested":true,"pubkey":[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,151],"pubkey_uncompressed":[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6]},{"id":351,"is_attested":true,"pubkey":[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,142],"pubkey_uncompressed":[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10]},{"id":352,"is_attested":true,"pubkey":[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,138],"pubkey_uncompressed":[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9]},{"id":353,"is_attested":true,"pubkey":[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,136],"pubkey_uncompressed":[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7]},{"id":354,"is_attested":true,"pubkey":[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,136],"pubkey_uncompressed":[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9]},{"id":355,"is_attested":true,"pubkey":[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,176],"pubkey_uncompressed":[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22]},{"id":356,"is_attested":true,"pubkey":[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,179],"pubkey_uncompressed":[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21]},{"id":357,"is_attested":true,"pubkey":[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,177],"pubkey_uncompressed":[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14]},{"id":358,"is_attested":true,"pubkey":[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,177],"pubkey_uncompressed":[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17]},{"id":359,"is_attested":true,"pubkey":[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,171],"pubkey_uncompressed":[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21]},{"id":360,"is_attested":true,"pubkey":[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,171],"pubkey_uncompressed":[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13]},{"id":361,"is_attested":true,"pubkey":[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,183],"pubkey_uncompressed":[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21]},{"id":362,"is_attested":true,"pubkey":[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,175],"pubkey_uncompressed":[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20]},{"id":363,"is_attested":true,"pubkey":[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,151],"pubkey_uncompressed":[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0]},{"id":364,"is_attested":true,"pubkey":[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,164],"pubkey_uncompressed":[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17]},{"id":365,"is_attested":true,"pubkey":[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,172],"pubkey_uncompressed":[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18]},{"id":366,"is_attested":true,"pubkey":[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,140],"pubkey_uncompressed":[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0]},{"id":367,"is_attested":true,"pubkey":[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,169],"pubkey_uncompressed":[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16]},{"id":368,"is_attested":true,"pubkey":[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,142],"pubkey_uncompressed":[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8]},{"id":369,"is_attested":true,"pubkey":[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,143],"pubkey_uncompressed":[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10]},{"id":370,"is_attested":true,"pubkey":[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,136],"pubkey_uncompressed":[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2]},{"id":371,"is_attested":true,"pubkey":[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,172],"pubkey_uncompressed":[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15]},{"id":372,"is_attested":true,"pubkey":[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,150],"pubkey_uncompressed":[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11]},{"id":373,"is_attested":true,"pubkey":[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,133],"pubkey_uncompressed":[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7]},{"id":374,"is_attested":true,"pubkey":[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,171],"pubkey_uncompressed":[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15]},{"id":375,"is_attested":true,"pubkey":[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,168],"pubkey_uncompressed":[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15]},{"id":376,"is_attested":true,"pubkey":[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,172],"pubkey_uncompressed":[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22]},{"id":377,"is_attested":true,"pubkey":[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,145],"pubkey_uncompressed":[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7]},{"id":378,"is_attested":true,"pubkey":[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,131],"pubkey_uncompressed":[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7]},{"id":379,"is_attested":true,"pubkey":[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,151],"pubkey_uncompressed":[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6]},{"id":380,"is_attested":true,"pubkey":[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,180],"pubkey_uncompressed":[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22]},{"id":381,"is_attested":true,"pubkey":[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,143],"pubkey_uncompressed":[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7]},{"id":382,"is_attested":true,"pubkey":[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,182],"pubkey_uncompressed":[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13]},{"id":383,"is_attested":true,"pubkey":[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,168],"pubkey_uncompressed":[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18]},{"id":384,"is_attested":true,"pubkey":[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,150],"pubkey_uncompressed":[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12]},{"id":385,"is_attested":true,"pubkey":[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,165],"pubkey_uncompressed":[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16]},{"id":386,"is_attested":true,"pubkey":[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,168],"pubkey_uncompressed":[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22]},{"id":387,"is_attested":true,"pubkey":[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,163],"pubkey_uncompressed":[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18]},{"id":388,"is_attested":true,"pubkey":[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,151],"pubkey_uncompressed":[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12]},{"id":389,"is_attested":true,"pubkey":[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,150],"pubkey_uncompressed":[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12]},{"id":390,"is_attested":true,"pubkey":[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,168],"pubkey_uncompressed":[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20]},{"id":391,"is_attested":true,"pubkey":[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,181],"pubkey_uncompressed":[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19]},{"id":392,"is_attested":true,"pubkey":[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,166],"pubkey_uncompressed":[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21]},{"id":393,"is_attested":true,"pubkey":[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,168],"pubkey_uncompressed":[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23]},{"id":394,"is_attested":true,"pubkey":[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,184],"pubkey_uncompressed":[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18]},{"id":395,"is_attested":true,"pubkey":[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,173],"pubkey_uncompressed":[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18]},{"id":396,"is_attested":true,"pubkey":[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,135],"pubkey_uncompressed":[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8]},{"id":397,"is_attested":true,"pubkey":[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,138],"pubkey_uncompressed":[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3]},{"id":398,"is_attested":true,"pubkey":[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,138],"pubkey_uncompressed":[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5]},{"id":399,"is_attested":true,"pubkey":[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,182],"pubkey_uncompressed":[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17]},{"id":400,"is_attested":true,"pubkey":[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,183],"pubkey_uncompressed":[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13]},{"id":401,"is_attested":true,"pubkey":[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,134],"pubkey_uncompressed":[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2]},{"id":402,"is_attested":true,"pubkey":[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,168],"pubkey_uncompressed":[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15]},{"id":403,"is_attested":true,"pubkey":[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,149],"pubkey_uncompressed":[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12]},{"id":404,"is_attested":true,"pubkey":[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,174],"pubkey_uncompressed":[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18]},{"id":405,"is_attested":true,"pubkey":[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,168],"pubkey_uncompressed":[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21]},{"id":406,"is_attested":true,"pubkey":[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,139],"pubkey_uncompressed":[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7]},{"id":407,"is_attested":true,"pubkey":[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,166],"pubkey_uncompressed":[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13]},{"id":408,"is_attested":true,"pubkey":[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,184],"pubkey_uncompressed":[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24]},{"id":409,"is_attested":true,"pubkey":[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,146],"pubkey_uncompressed":[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4]},{"id":410,"is_attested":true,"pubkey":[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,175],"pubkey_uncompressed":[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22]},{"id":411,"is_attested":true,"pubkey":[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,172],"pubkey_uncompressed":[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16]},{"id":412,"is_attested":true,"pubkey":[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,174],"pubkey_uncompressed":[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25]},{"id":413,"is_attested":true,"pubkey":[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,170],"pubkey_uncompressed":[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18]},{"id":414,"is_attested":true,"pubkey":[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,141],"pubkey_uncompressed":[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0]},{"id":415,"is_attested":true,"pubkey":[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,183],"pubkey_uncompressed":[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23]},{"id":416,"is_attested":true,"pubkey":[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,148],"pubkey_uncompressed":[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1]},{"id":417,"is_attested":true,"pubkey":[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,166],"pubkey_uncompressed":[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22]},{"id":418,"is_attested":true,"pubkey":[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,131],"pubkey_uncompressed":[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4]},{"id":419,"is_attested":true,"pubkey":[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,129],"pubkey_uncompressed":[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10]},{"id":420,"is_attested":true,"pubkey":[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,171],"pubkey_uncompressed":[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20]},{"id":421,"is_attested":true,"pubkey":[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,168],"pubkey_uncompressed":[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18]},{"id":422,"is_attested":true,"pubkey":[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,149],"pubkey_uncompressed":[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3]},{"id":423,"is_attested":true,"pubkey":[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,183],"pubkey_uncompressed":[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18]},{"id":424,"is_attested":true,"pubkey":[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,182],"pubkey_uncompressed":[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13]},{"id":425,"is_attested":true,"pubkey":[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,153],"pubkey_uncompressed":[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8]},{"id":426,"is_attested":true,"pubkey":[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,143],"pubkey_uncompressed":[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10]},{"id":427,"is_attested":true,"pubkey":[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,176],"pubkey_uncompressed":[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21]},{"id":428,"is_attested":true,"pubkey":[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,180],"pubkey_uncompressed":[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21]},{"id":429,"is_attested":true,"pubkey":[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,184],"pubkey_uncompressed":[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22]},{"id":430,"is_attested":true,"pubkey":[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,182],"pubkey_uncompressed":[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17]},{"id":431,"is_attested":true,"pubkey":[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,135],"pubkey_uncompressed":[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0]},{"id":432,"is_attested":true,"pubkey":[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,151],"pubkey_uncompressed":[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0]},{"id":433,"is_attested":true,"pubkey":[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,153],"pubkey_uncompressed":[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2]},{"id":434,"is_attested":true,"pubkey":[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,148],"pubkey_uncompressed":[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3]},{"id":435,"is_attested":true,"pubkey":[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,182],"pubkey_uncompressed":[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14]},{"id":436,"is_attested":true,"pubkey":[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,138],"pubkey_uncompressed":[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3]},{"id":437,"is_attested":true,"pubkey":[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,169],"pubkey_uncompressed":[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14]},{"id":438,"is_attested":true,"pubkey":[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,146],"pubkey_uncompressed":[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11]},{"id":439,"is_attested":true,"pubkey":[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,172],"pubkey_uncompressed":[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19]},{"id":440,"is_attested":true,"pubkey":[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,164],"pubkey_uncompressed":[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20]},{"id":441,"is_attested":true,"pubkey":[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,179],"pubkey_uncompressed":[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13]},{"id":442,"is_attested":true,"pubkey":[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,172],"pubkey_uncompressed":[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24]},{"id":443,"is_attested":true,"pubkey":[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,132],"pubkey_uncompressed":[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1]},{"id":444,"is_attested":true,"pubkey":[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,185],"pubkey_uncompressed":[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19]},{"id":445,"is_attested":true,"pubkey":[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,173],"pubkey_uncompressed":[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17]},{"id":446,"is_attested":true,"pubkey":[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,173],"pubkey_uncompressed":[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13]},{"id":447,"is_attested":true,"pubkey":[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,175],"pubkey_uncompressed":[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19]},{"id":448,"is_attested":true,"pubkey":[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,143],"pubkey_uncompressed":[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7]},{"id":449,"is_attested":true,"pubkey":[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,179],"pubkey_uncompressed":[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14]},{"id":450,"is_attested":true,"pubkey":[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,167],"pubkey_uncompressed":[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18]},{"id":451,"is_attested":true,"pubkey":[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,151],"pubkey_uncompressed":[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1]},{"id":452,"is_attested":true,"pubkey":[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,149],"pubkey_uncompressed":[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10]},{"id":453,"is_attested":true,"pubkey":[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,139],"pubkey_uncompressed":[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4]},{"id":454,"is_attested":true,"pubkey":[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,160],"pubkey_uncompressed":[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19]},{"id":455,"is_attested":true,"pubkey":[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,137],"pubkey_uncompressed":[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6]},{"id":456,"is_attested":true,"pubkey":[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,136],"pubkey_uncompressed":[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9]},{"id":457,"is_attested":true,"pubkey":[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,176],"pubkey_uncompressed":[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19]},{"id":458,"is_attested":true,"pubkey":[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,137],"pubkey_uncompressed":[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3]},{"id":459,"is_attested":true,"pubkey":[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,140],"pubkey_uncompressed":[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8]},{"id":460,"is_attested":true,"pubkey":[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,166],"pubkey_uncompressed":[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17]},{"id":461,"is_attested":true,"pubkey":[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,139],"pubkey_uncompressed":[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5]},{"id":462,"is_attested":true,"pubkey":[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,165],"pubkey_uncompressed":[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25]},{"id":463,"is_attested":true,"pubkey":[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,161],"pubkey_uncompressed":[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16]},{"id":464,"is_attested":true,"pubkey":[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,169],"pubkey_uncompressed":[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18]},{"id":465,"is_attested":true,"pubkey":[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,162],"pubkey_uncompressed":[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17]},{"id":466,"is_attested":true,"pubkey":[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,171],"pubkey_uncompressed":[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22]},{"id":467,"is_attested":true,"pubkey":[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,160],"pubkey_uncompressed":[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20]},{"id":468,"is_attested":true,"pubkey":[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,160],"pubkey_uncompressed":[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21]},{"id":469,"is_attested":true,"pubkey":[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,162],"pubkey_uncompressed":[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13]},{"id":470,"is_attested":true,"pubkey":[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,168],"pubkey_uncompressed":[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15]},{"id":471,"is_attested":true,"pubkey":[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,181],"pubkey_uncompressed":[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16]},{"id":472,"is_attested":true,"pubkey":[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,176],"pubkey_uncompressed":[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20]},{"id":473,"is_attested":true,"pubkey":[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,173],"pubkey_uncompressed":[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22]},{"id":474,"is_attested":true,"pubkey":[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,175],"pubkey_uncompressed":[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21]},{"id":475,"is_attested":true,"pubkey":[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,146],"pubkey_uncompressed":[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5]},{"id":476,"is_attested":true,"pubkey":[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,148],"pubkey_uncompressed":[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11]},{"id":477,"is_attested":true,"pubkey":[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,150],"pubkey_uncompressed":[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8]},{"id":478,"is_attested":true,"pubkey":[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,131],"pubkey_uncompressed":[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0]},{"id":479,"is_attested":true,"pubkey":[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,150],"pubkey_uncompressed":[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1]},{"id":480,"is_attested":true,"pubkey":[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,168],"pubkey_uncompressed":[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20]},{"id":481,"is_attested":true,"pubkey":[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,129],"pubkey_uncompressed":[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3]},{"id":482,"is_attested":true,"pubkey":[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,148],"pubkey_uncompressed":[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7]},{"id":483,"is_attested":true,"pubkey":[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,152],"pubkey_uncompressed":[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2]},{"id":484,"is_attested":true,"pubkey":[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,139],"pubkey_uncompressed":[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11]},{"id":485,"is_attested":true,"pubkey":[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,142],"pubkey_uncompressed":[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4]},{"id":486,"is_attested":true,"pubkey":[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,149],"pubkey_uncompressed":[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7]},{"id":487,"is_attested":true,"pubkey":[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,140],"pubkey_uncompressed":[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12]},{"id":488,"is_attested":true,"pubkey":[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,160],"pubkey_uncompressed":[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23]},{"id":489,"is_attested":true,"pubkey":[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,165],"pubkey_uncompressed":[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14]},{"id":490,"is_attested":true,"pubkey":[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,176],"pubkey_uncompressed":[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13]},{"id":491,"is_attested":true,"pubkey":[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,130],"pubkey_uncompressed":[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11]},{"id":492,"is_attested":true,"pubkey":[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,176],"pubkey_uncompressed":[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21]},{"id":493,"is_attested":true,"pubkey":[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,184],"pubkey_uncompressed":[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25]},{"id":494,"is_attested":true,"pubkey":[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,147],"pubkey_uncompressed":[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6]},{"id":495,"is_attested":true,"pubkey":[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,133],"pubkey_uncompressed":[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9]},{"id":496,"is_attested":true,"pubkey":[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,182],"pubkey_uncompressed":[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16]},{"id":497,"is_attested":true,"pubkey":[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,169],"pubkey_uncompressed":[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20]},{"id":498,"is_attested":true,"pubkey":[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,160],"pubkey_uncompressed":[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20]},{"id":499,"is_attested":true,"pubkey":[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,178],"pubkey_uncompressed":[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23]},{"id":500,"is_attested":true,"pubkey":[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,143],"pubkey_uncompressed":[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7]},{"id":501,"is_attested":true,"pubkey":[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,183],"pubkey_uncompressed":[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21]},{"id":502,"is_attested":true,"pubkey":[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,161],"pubkey_uncompressed":[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25]},{"id":503,"is_attested":true,"pubkey":[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,138],"pubkey_uncompressed":[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12]},{"id":504,"is_attested":true,"pubkey":[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,170],"pubkey_uncompressed":[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25]},{"id":505,"is_attested":true,"pubkey":[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,136],"pubkey_uncompressed":[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6]},{"id":506,"is_attested":true,"pubkey":[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,144],"pubkey_uncompressed":[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9]},{"id":507,"is_attested":true,"pubkey":[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,161],"pubkey_uncompressed":[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22]},{"id":508,"is_attested":true,"pubkey":[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,139],"pubkey_uncompressed":[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8]},{"id":509,"is_attested":true,"pubkey":[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,169],"pubkey_uncompressed":[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21]},{"id":510,"is_attested":true,"pubkey":[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,185],"pubkey_uncompressed":[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13]},{"id":511,"is_attested":true,"pubkey":[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,133],"pubkey_uncompressed":[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]}],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_block":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_block":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"sync_signature":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file diff --git a/test_data/sync_step.json b/test_data/sync_step.json new file mode 100644 index 00000000..204ef1f2 --- /dev/null +++ b/test_data/sync_step.json @@ -0,0 +1 @@ +{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_block":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_block":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"sync_signature":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file From e2c43f92e0afa647537f579496da143ec95900eb Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Sat, 9 Sep 2023 15:43:14 +0200 Subject: [PATCH 09/33] add `Eth2CircuitBuilder` --- lightclient-circuits/src/builder.rs | 190 ++++++++---------- .../src/gadget/crypto/builder.rs | 188 +++++++++++++++++ .../src/gadget/crypto/hash2curve.rs | 29 ++- lightclient-circuits/src/gadget/crypto/mod.rs | 5 +- .../src/gadget/crypto/sha256.rs | 11 +- .../src/gadget/crypto/sha256/builder.rs | 172 ++++++++-------- lightclient-circuits/src/sync_step_circuit.rs | 169 +++++++--------- lightclient-circuits/src/util.rs | 8 +- lightclient-circuits/src/util/proof.rs | 8 +- lightclient-circuits/src/witness/state.rs | 1 + preprocessor/scripts/generateInputData.ts | 2 +- test_data/sync_step.json | 2 +- 12 files changed, 461 insertions(+), 324 deletions(-) create mode 100644 lightclient-circuits/src/gadget/crypto/builder.rs diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index 6010e9b5..2faa0f51 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -1,143 +1,88 @@ -use std::{cell::RefCell, collections::HashMap, env::set_var}; - use eth_types::Field; use halo2_base::{ - gates::{ - builder::{FlexGateConfigParams, KeygenAssignments, ThreadBreakPoints}, - range::{RangeConfig, RangeStrategy}, - }, - safe_types::RangeChip, - SKIP_FIRST_PASS, + gates::builder::{FlexGateConfigParams, MultiPhaseThreadBreakPoints}, + AssignedValue, }; use halo2_proofs::{ - circuit::{self, Layouter, SimpleFloorPlanner}, - plonk::{Circuit, ConstraintSystem, Error}, + circuit::{Layouter, SimpleFloorPlanner}, + plonk::{Circuit, Column, ConstraintSystem, Error, Instance}, }; -use crate::{ - gadget::crypto::{Sha256Chip, SpreadConfig, ShaThreadBuilder}, - sha256_circuit::Sha256CircuitConfig, -}; +use crate::gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}; -#[derive(Debug, Clone)] -pub struct SHAConfig { - pub spread: SpreadConfig, - pub range: RangeConfig, +#[derive(Clone, Debug)] +/// Config shared for block header and storage proof circuits +pub struct Eth2Config { + sha: SHAConfig, + pub instance: Column, } -impl SHAConfig { - pub fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { - let degree = params.k; - let mut range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - ¶ms.num_advice_per_phase, - ¶ms.num_lookup_advice_per_phase, - params.num_fixed, - params.k - 1, - degree, - ); - let spread = SpreadConfig::configure(meta, 8, 2); // TODO configure num_advice_columns - set_var("UNUSABLE_ROWS", meta.minimum_rows().to_string()); - - range.gate.max_rows = (1 << degree) - meta.minimum_rows(); - Self { range, spread } - } +/// This is an extension of [`ShaCircuitBuilder`] that adds support for public instances (aka public inputs+outputs) +pub struct Eth2CircuitBuilder { + pub inner: ShaCircuitBuilder, + pub assigned_instances: Vec>, } -pub struct ShaCircuitBuilder { - pub builder: RefCell>, - pub break_points: RefCell, - pub range: RangeChip, -} +impl Eth2CircuitBuilder { + /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. + pub fn keygen(assigned_instances: Vec>, builder: ShaThreadBuilder) -> Self { + Self { + assigned_instances, + inner: ShaCircuitBuilder::keygen(builder), + } + } + + /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [GateThreadBuilder] set to false. + pub fn mock(assigned_instances: Vec>, builder: ShaThreadBuilder) -> Self { + Self { + assigned_instances, + inner: ShaCircuitBuilder::mock(builder), + } + } -impl ShaCircuitBuilder { - pub fn new( + /// Creates a new [Eth2CircuitBuilder]. + pub fn prover( + assigned_instances: Vec>, builder: ShaThreadBuilder, - range: RangeChip, - break_points: Option, - // synthesize_phase1: FnPhase1, + break_points: MultiPhaseThreadBreakPoints, ) -> Self { Self { - builder: RefCell::new(builder), - break_points: RefCell::new(break_points.unwrap_or_default()), - range, - // synthesize_phase1: RefCell::new(Some(synthesize_phase1)), + assigned_instances, + inner: ShaCircuitBuilder::prover(builder, break_points), } } pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { - // clone everything so we don't alter the circuit in any way for later calls - let mut builder = self.builder.borrow().clone(); - builder.config(k, minimum_rows) + self.inner.config(k, minimum_rows) } - // re-usable function for synthesize - #[allow(clippy::type_complexity)] - pub fn sub_synthesize( - &self, - config: &SHAConfig, - layouter: &mut impl Layouter, - ) -> Result, Error> { - config - .range - .load_lookup_table(layouter) - .expect("load range lookup table"); - - let mut first_pass = SKIP_FIRST_PASS; - let witness_gen_only = self.builder.borrow().witness_gen_only(); - - let mut assigned_advices = HashMap::new(); - - config.spread.load(layouter)?; - - layouter - .assign_region( - || "ShaCircuitBuilder generated circuit", - |mut region| { - if first_pass { - first_pass = false; - return Ok(()); - } - if !witness_gen_only { - let mut builder = self.builder.borrow().clone(); - - let mut assignments = KeygenAssignments { - ..Default::default() - }; - - assignments = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &config.spread, - &mut region, - assignments, - ); - *self.break_points.borrow_mut() = assignments.break_points[0].clone(); - assigned_advices = assignments.assigned_advices; - } else { - unimplemented!() - } - Ok(()) - }, - )?; - Ok(assigned_advices) + pub fn break_points(&self) -> MultiPhaseThreadBreakPoints { + self.inner.break_points.borrow().clone() + } + + pub fn instance_count(&self) -> usize { + self.assigned_instances.len() + } + + pub fn instance(&self) -> Vec { + self.assigned_instances.iter().map(|v| *v.value()).collect() } } -impl*/> Circuit for ShaCircuitBuilder { - type Config = SHAConfig; +impl Circuit for Eth2CircuitBuilder { + type Config = Eth2Config; type FloorPlanner = SimpleFloorPlanner; fn without_witnesses(&self) -> Self { unimplemented!() } - fn configure(meta: &mut ConstraintSystem) -> SHAConfig { - let params: FlexGateConfigParams = - serde_json::from_str(&std::env::var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); - SHAConfig::configure(meta, params) + fn configure(meta: &mut ConstraintSystem) -> Self::Config { + let sha = ShaCircuitBuilder::configure(meta); + let instance = meta.instance_column(); + meta.enable_equality(instance); + + Eth2Config { sha, instance } } fn synthesize( @@ -145,7 +90,30 @@ impl*/> Circuit for ShaCircuitBuilder< config: Self::Config, mut layouter: impl Layouter, ) -> Result<(), Error> { - self.sub_synthesize(&config, &mut layouter); + // we later `take` the builder, so we need to save this value + let witness_gen_only = self.inner.builder.borrow().witness_gen_only(); + let assigned_advices = self.inner.sub_synthesize(&config.sha, &mut layouter)?; + + if !witness_gen_only { + // expose public instances + let mut layouter = layouter.namespace(|| "expose"); + for (i, instance) in self.assigned_instances.iter().enumerate() { + let cell = instance.cell.unwrap(); + let (cell, _) = assigned_advices + .get(&(cell.context_id, cell.offset)) + .expect("instance not assigned"); + layouter.constrain_instance(*cell, config.instance, i); + } + } Ok(()) } } + +impl snark_verifier_sdk::CircuitExt for Eth2CircuitBuilder { + fn num_instance(&self) -> Vec { + vec![self.instance_count()] + } + fn instances(&self) -> Vec> { + vec![self.instance()] + } +} diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs new file mode 100644 index 00000000..edb05e8f --- /dev/null +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -0,0 +1,188 @@ +use std::{cell::RefCell, collections::HashMap, env::set_var, mem}; + +use eth_types::Field; +use halo2_base::{ + gates::{ + builder::{ + assign_threads_in, FlexGateConfigParams, KeygenAssignments, + MultiPhaseThreadBreakPoints, ThreadBreakPoints, + }, + range::{RangeConfig, RangeStrategy}, + }, + safe_types::RangeChip, + SKIP_FIRST_PASS, +}; +use halo2_proofs::{ + circuit::{self, Layouter, SimpleFloorPlanner}, + plonk::{Circuit, ConstraintSystem, Error}, +}; +use snark_verifier_sdk::CircuitExt; + +use crate::{ + gadget::crypto::{Sha256Chip, ShaThreadBuilder}, + sha256_circuit::Sha256CircuitConfig, +}; + +use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; + +#[derive(Debug, Clone)] +pub struct SHAConfig { + pub spread: SpreadConfig, + pub range: RangeConfig, +} + +impl SHAConfig { + pub fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { + let degree = params.k; + let mut range = RangeConfig::configure( + meta, + RangeStrategy::Vertical, + ¶ms.num_advice_per_phase, + ¶ms.num_lookup_advice_per_phase, + params.num_fixed, + params.k - 1, + degree, + ); + let spread = SpreadConfig::configure(meta, 8, 2); // TODO configure num_advice_columns + + range.gate.max_rows = (1 << degree) - meta.minimum_rows(); + Self { range, spread } + } +} + +pub struct ShaCircuitBuilder { + pub builder: RefCell>, + pub break_points: RefCell, // `RefCell` allows the circuit to record break points in a keygen call of `synthesize` for use in later witness gen +} + +impl ShaCircuitBuilder { + /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. + pub fn keygen(builder: ShaThreadBuilder) -> Self { + Self { + builder: RefCell::new(builder.unknown(true)), + break_points: RefCell::new(vec![]), + } + } + + /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [GateThreadBuilder] set to false. + pub fn mock(builder: ShaThreadBuilder) -> Self { + Self { + builder: RefCell::new(builder.unknown(false)), + break_points: RefCell::new(vec![]), + } + } + + /// Creates a new [ShaCircuitBuilder]. + pub fn prover(builder: ShaThreadBuilder, break_points: MultiPhaseThreadBreakPoints) -> Self { + Self { + builder: RefCell::new(builder.unknown(false)), + break_points: RefCell::new(break_points), + } + } + + pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + // clone everything so we don't alter the circuit in any way for later calls + let mut builder = self.builder.borrow().clone(); + builder.config(k, minimum_rows) + } + + // re-usable function for synthesize + #[allow(clippy::type_complexity)] + pub fn sub_synthesize( + &self, + config: &SHAConfig, + layouter: &mut impl Layouter, + ) -> Result, Error> { + config + .range + .load_lookup_table(layouter) + .expect("load range lookup table"); + + let mut first_pass = SKIP_FIRST_PASS; + let witness_gen_only = self.builder.borrow().witness_gen_only(); + + let mut assigned_advices = HashMap::new(); + + config.spread.load(layouter)?; + + layouter.assign_region( + || "ShaCircuitBuilder generated circuit", + |mut region| { + if first_pass { + first_pass = false; + return Ok(()); + } + + if !witness_gen_only { + let mut builder = self.builder.borrow().clone(); + + let assignments = builder.assign_all( + &config.range.gate, + &config.range.lookup_advice, + &config.range.q_lookup, + &config.spread, + &mut region, + Default::default(), + ); + *self.break_points.borrow_mut() = assignments.break_points.clone(); + assigned_advices = assignments.assigned_advices; + } else { + let builder = &mut self.builder.borrow_mut(); + let break_points = &mut self.break_points.borrow_mut(); + + let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); + // warning: we currently take all contexts from phase 0, which means you can't read the values + // from these contexts later in phase 1. If we want to read, should clone here + let threads = mem::take(&mut builder.gate_builder.threads[FIRST_PHASE]); + + assign_threads_in( + FIRST_PHASE, + threads, + &config.range.gate, + &config.range.lookup_advice[FIRST_PHASE], + &mut region, + break_points_gate, + ); + + let threads_dense = mem::take(&mut builder.threads_dense); + let threads_spread = mem::take(&mut builder.threads_spread); + + assign_threads_sha( + &threads_dense, + &threads_spread, + &config.spread, + &mut region, + false, + None, + ); + } + Ok(()) + }, + )?; + Ok(assigned_advices) + } +} + +impl Circuit for ShaCircuitBuilder { + type Config = SHAConfig; + type FloorPlanner = SimpleFloorPlanner; + + fn without_witnesses(&self) -> Self { + unimplemented!() + } + + fn configure(meta: &mut ConstraintSystem) -> SHAConfig { + let params: FlexGateConfigParams = + serde_json::from_str(&std::env::var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); + SHAConfig::configure(meta, params) + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter, + ) -> Result<(), Error> { + self.sub_synthesize(&config, &mut layouter); + Ok(()) + } +} diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index d0027601..46ad0584 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -29,12 +29,12 @@ use itertools::Itertools; use num_bigint::{BigInt, BigUint}; use pasta_curves::arithmetic::SqrtRatio; -use super::{ShaContexts, ShaThreadBuilder}; use super::{ sha256::HashInstructions, util::{fp2_sgn0, i2osp, strxor}, Fp2Point, G1Point, G2Point, }; +use super::{ShaContexts, ShaThreadBuilder}; const G2_EXT_DEGREE: usize = 2; @@ -119,7 +119,8 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, }); // 2^256 - let two_pow_256 = fp_chip.load_constant_uint(thread_pool.main(), BigUint::from(2u8).pow(256)); + let two_pow_256 = + fp_chip.load_constant_uint(thread_pool.main(), BigUint::from(2u8).pow(256)); let fq_bytes = C::BYTES_COMPRESSED / 2; let mut fst = true; @@ -149,8 +150,10 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, thread_pool.main(), ); - let lo_2_256 = fp_chip.mul_no_carry(thread_pool.main(), lo, two_pow_256.clone()); - let lo_2_356_hi = fp_chip.add_no_carry(thread_pool.main(), lo_2_256, hi); + let lo_2_256 = + fp_chip.mul_no_carry(thread_pool.main(), lo, two_pow_256.clone()); + let lo_2_356_hi = + fp_chip.add_no_carry(thread_pool.main(), lo_2_256, hi); fp_chip.carry_mod(thread_pool.main(), lo_2_356_hi) }) .collect_vec(), @@ -212,7 +215,9 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, let one = thread_pool.main().load_constant(F::one()); // assign DST bytes & cache them - let dst_len = thread_pool.main().load_constant(F::from(S::DST.len() as u64)); + let dst_len = thread_pool + .main() + .load_constant(F::from(S::DST.len() as u64)); let dst_prime = cache .dst_with_len .get_or_insert_with(|| { @@ -226,7 +231,9 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, // padding and length strings let z_pad = i2osp(0, HC::BLOCK_SIZE, |b| zero); // TODO: cache these - let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| thread_pool.main().load_constant(b)); + let l_i_b_str = i2osp(len_in_bytes as u128, 2, |b| { + thread_pool.main().load_constant(b) + }); // compute blocks let ell = len_in_bytes.div_ceil(HC::DIGEST_SIZE); @@ -259,7 +266,9 @@ impl<'a, S: Spec, F: Field, HC: HashInstructions + 'a> HashToCurveChip<'a, S, for i in 1..ell { let preimg = strxor(b_0, b_vals[i - 1], gate, thread_pool.main()) .into_iter() - .chain(iter::once(thread_pool.main().load_constant(F::from(i as u64 + 1)))) + .chain(iter::once( + thread_pool.main().load_constant(F::from(i as u64 + 1)), + )) .chain(dst_prime.clone()) .into(); @@ -617,8 +626,8 @@ mod test { use std::vec; use std::{cell::RefCell, marker::PhantomData}; - use crate::builder::ShaCircuitBuilder; use crate::gadget::crypto::sha256::{SpreadChip, SpreadConfig}; + use crate::gadget::crypto::ShaCircuitBuilder; use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; use crate::sha256_circuit::Sha256CircuitConfig; use crate::table::Sha256Table; @@ -669,7 +678,7 @@ mod test { } builder.config(k, None); - Ok(ShaCircuitBuilder::new(builder, range, None)) + Ok(ShaCircuitBuilder::mock(builder)) } #[test] @@ -677,7 +686,7 @@ mod test { let k = 17; let test_input = vec![0u8; 32]; - let builder = ShaThreadBuilder::::new(false); + let builder = ShaThreadBuilder::::mock(); let circuit = get_circuit(k, builder, &[test_input]).unwrap(); let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index d903a535..35c66899 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -2,6 +2,7 @@ mod hash2curve; mod sha256; mod sha256_wide; mod util; +mod builder; use eth_types::{AppCurveExt, HashCurveExt}; use halo2_ecc::{ @@ -12,9 +13,9 @@ use halo2_ecc::{ }; pub use hash2curve::{HashToCurveCache, HashToCurveChip}; pub use sha256::{ - AssignedHashResult, HashInstructions, Sha256Chip, ShaContexts, ShaThreadBuilder, SpreadChip, - SpreadConfig, + AssignedHashResult, HashInstructions, Sha256Chip, ShaContexts, ShaThreadBuilder, }; +pub use builder::{SHAConfig, ShaCircuitBuilder}; pub use sha256_wide::*; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index dc94f4cd..4111f5b3 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -35,6 +35,7 @@ use halo2_proofs::{ }; pub use self::builder::ShaContexts; +pub(super) use self::builder::{FIRST_PHASE, assign_threads_sha}; pub use self::spread::SpreadChip; const SHA256_CONTEXT_ID: usize = usize::MAX; @@ -235,7 +236,7 @@ mod test { use std::vec; use std::{cell::RefCell, marker::PhantomData}; - use crate::builder::ShaCircuitBuilder; + use crate::gadget::crypto::ShaCircuitBuilder; use crate::table::Sha256Table; use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; @@ -264,7 +265,7 @@ mod test { challenges: Challenges>, } - fn get_circuit( + fn test_circuit( k: usize, mut builder: ShaThreadBuilder, input_vector: &[Vec], @@ -277,7 +278,7 @@ mod test { } builder.config(k, None); - Ok(ShaCircuitBuilder::new(builder, range, None)) + Ok(ShaCircuitBuilder::mock(builder)) } #[test] @@ -286,9 +287,9 @@ mod test { let test_input = vec![0u8; 64]; - let builder = ShaThreadBuilder::::new(false); + let builder = ShaThreadBuilder::::mock(); - let circuit = get_circuit(k, builder, &[test_input]); + let circuit = test_circuit(k, builder, &[test_input]); let prover = MockProver::run(k as u32, &circuit.unwrap(), vec![]).unwrap(); prover.assert_satisfied_par(); diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index b80e628d..876c1c3c 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -1,10 +1,11 @@ -use std::{cell::RefCell, iter}; +use std::{cell::RefCell, collections::HashMap, iter}; use eth_types::Field; use halo2_base::{ gates::{ builder::{ CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, + ThreadBreakPoints, }, flex_gate::FlexGateConfig, }, @@ -12,14 +13,14 @@ use halo2_base::{ Context, }; use halo2_proofs::{ - circuit::{Region, Value}, + circuit::{self, Region, Value}, plonk::{Advice, Column, Selector}, }; use itertools::Itertools; use super::SpreadConfig; -pub const SPREAD_PHASE: usize = 0; +pub const FIRST_PHASE: usize = 0; #[derive(Clone, Debug, Default)] pub struct ShaThreadBuilder { @@ -66,7 +67,7 @@ impl ShaThreadBuilder { } pub fn main(&mut self) -> &mut Context { - self.gate_builder.main(SPREAD_PHASE) + self.gate_builder.main(FIRST_PHASE) } pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { @@ -77,7 +78,7 @@ impl ShaThreadBuilder { self.new_thread_spread(); } ( - self.gate_builder.main(SPREAD_PHASE), + self.gate_builder.main(FIRST_PHASE), ( self.threads_dense.last_mut().unwrap(), self.threads_spread.last_mut().unwrap(), @@ -137,89 +138,14 @@ impl ShaThreadBuilder { ) -> KeygenAssignments { assert!(!self.witness_gen_only()); - let use_unknown = self.use_unknown(); - let max_rows = gate.max_rows; - - // first we assign all RLC contexts, basically copying gate::builder::assign_all except that the length of the RLC vertical gate is 3 instead of 4 (which was length of basic gate) - let mut gate_index = 0; - let mut num_limb_sum = 0; - let mut row_offset = 0; - for (ctx_dense, ctx_spread) in self.threads_dense.iter().zip_eq(self.threads_spread.iter()) - { - for (i, (&advice_dense, &advice_spread)) in ctx_dense - .advice - .iter() - .zip_eq(ctx_spread.advice.iter()) - .enumerate() - { - let column_idx = num_limb_sum % spread.num_advice_columns; - let value_dense = if use_unknown { - Value::unknown() - } else { - Value::known(advice_dense) - }; - - let cell_dense = region - .assign_advice( - || "dense", - spread.denses[column_idx], - row_offset, - || value_dense, - ) - .unwrap() - .cell(); - assigned_advices.insert((ctx_dense.context_id, i), (cell_dense, row_offset)); - - let value_spread = if use_unknown { - Value::unknown() - } else { - Value::known(advice_spread) - }; - - let cell_spread = region - .assign_advice( - || "spread", - spread.spreads[column_idx], - row_offset, - || value_spread, - ) - .unwrap() - .cell(); - assigned_advices.insert((ctx_spread.context_id, i), (cell_spread, row_offset)); - - // if (q && row_offset + 3 > max_rows) || row_offset >= max_rows - 1 { - // break_points.rlc.push(row_offset); - // row_offset = 0; - // gate_index += 1; - // // when there is a break point, because we may have two gates that overlap at the current cell, we must copy the current cell to the next column for safety - // basic_gate = *spread - // .basic_gates - // .get(gate_index) - // .unwrap_or_else(|| panic!("NOT ENOUGH RLC ADVICE COLUMNS. Perhaps blinding factors were not taken into account. The max non-poisoned rows is {max_rows}")); - // (column, q_rlc) = basic_gate; - - // #[cfg(feature = "halo2-axiom")] - // { - // let ncell = region.assign_advice(column, row_offset, value); - // region.constrain_equal(ncell.cell(), &cell); - // } - // #[cfg(not(feature = "halo2-axiom"))] - // { - // let ncell = region - // .assign_advice(|| "", column, row_offset, || value) - // .unwrap() - // .cell(); - // region.constrain_equal(ncell, cell).unwrap(); - // } - // } - - num_limb_sum += 1; - if column_idx == spread.num_advice_columns - 1 { - row_offset += 1; - } - row_offset += 1; - } - } + assign_threads_sha( + &self.threads_dense, + &self.threads_spread, + spread, + region, + self.use_unknown(), + Some(&mut assigned_advices), + ); // in order to constrain equalities and assign constants, we copy the Spread/Dense equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there let main_ctx = self.gate_builder.main(0); @@ -249,3 +175,73 @@ impl ShaThreadBuilder { ) } } + +/// Pure advice witness assignment in a single phase. Uses preprocessed `break_points` to determine when +/// to split a thread into a new column. +#[allow(clippy::type_complexity)] +pub fn assign_threads_sha( + threads_dense: &[Context], + threads_spread: &[Context], + spread: &SpreadConfig, + region: &mut Region, + use_unknown: bool, + mut assigned_advices: Option<&mut HashMap<(usize, usize), (circuit::Cell, usize)>>, +) { + let mut num_limb_sum = 0; + let mut row_offset = 0; + for (ctx_dense, ctx_spread) in threads_dense.iter().zip_eq(threads_spread.iter()) { + for (i, (&advice_dense, &advice_spread)) in ctx_dense + .advice + .iter() + .zip_eq(ctx_spread.advice.iter()) + .enumerate() + { + let column_idx = num_limb_sum % spread.num_advice_columns; + let value_dense = if use_unknown { + Value::unknown() + } else { + Value::known(advice_dense) + }; + + let cell_dense = region + .assign_advice( + || "dense", + spread.denses[column_idx], + row_offset, + || value_dense, + ) + .unwrap() + .cell(); + + if let Some(assigned_advices) = assigned_advices.as_mut() { + assigned_advices.insert((ctx_dense.context_id, i), (cell_dense, row_offset)); + } + + let value_spread = if use_unknown { + Value::unknown() + } else { + Value::known(advice_spread) + }; + + let cell_spread = region + .assign_advice( + || "spread", + spread.spreads[column_idx], + row_offset, + || Value::known(advice_spread), + ) + .unwrap() + .cell(); + + if let Some(assigned_advices) = assigned_advices.as_mut() { + assigned_advices.insert((ctx_spread.context_id, i), (cell_spread, row_offset)); + } + + num_limb_sum += 1; + if column_idx == spread.num_advice_columns - 1 { + row_offset += 1; + } + row_offset += 1; + } + } +} diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index ef536707..16f59640 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -11,10 +11,10 @@ use std::{ }; use crate::{ - builder::ShaCircuitBuilder, + builder::Eth2CircuitBuilder, gadget::crypto::{ Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, - HashToCurveChip, Sha256Chip, ShaThreadBuilder, SpreadChip, SpreadConfig, + HashToCurveChip, Sha256Chip, ShaCircuitBuilder, ShaThreadBuilder, }, poseidon::{g1_array_poseidon, poseidon_sponge}, sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, @@ -31,7 +31,10 @@ use ff::PrimeField; use group::UncompressedEncoding; use halo2_base::{ gates::{ - builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, + builder::{ + FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, + RangeCircuitBuilder, + }, flex_gate::GateStrategy, range::{RangeConfig, RangeStrategy}, }, @@ -64,13 +67,6 @@ use sha2::{Digest, Sha256}; use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; use ssz_rs::{GeneralizedIndex, Merkleized, Node}; -#[derive(Clone, Debug)] -pub struct SyncStepCircuitConfig { - range: RangeConfig, - sha256_config: RefCell>, - challenges: Challenges>, -} - #[allow(type_alias_bounds)] #[derive(Clone, Debug, Default)] pub struct SyncStepCircuit { @@ -84,12 +80,7 @@ impl SyncStepCircuit { thread_pool: &mut ShaThreadBuilder, range: &RangeChip, args: &witness::SyncStepArgs, - ) -> Result<(), Error> { - // config - // .range - // .load_lookup_table(&mut layouter) - // .expect("load range lookup table"); - + ) -> Result>, Error> { assert!( !args.signature_compressed.is_empty(), "no attestations supplied" @@ -141,7 +132,7 @@ impl SyncStepCircuit { }; let mut h2c_cache = HashToCurveCache::::default(); - // Verify attestted header + // // Verify attestted header let attested_header = ssz_merkleize_chunks( thread_pool, &sha256_chip, @@ -225,7 +216,9 @@ impl SyncStepCircuit { S::EXECUTION_STATE_ROOT_INDEX, )?; - Ok(()) + let instances = vec![]; + + Ok(instances) } } @@ -315,41 +308,30 @@ impl SyncStepCircuit { impl AppCircuitExt for SyncStepCircuit { fn setup( - config: &FlexGateConfigParams, + k: usize, out: Option<&Path>, - ) -> (ParamsKZG, ProvingKey) { + ) -> ( + ParamsKZG, + ProvingKey, + MultiPhaseThreadBreakPoints, + ) { let args = witness::SyncStepArgs::::default(); let circuit = SyncStepCircuit::::default(); let range = RangeChip::::new(RangeStrategy::Vertical, 8); let mut thread_pool = ShaThreadBuilder::keygen(); - circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + let assigned_instances = circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + let config = thread_pool.config(k, Some(109)); - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&config).unwrap(), - ); + let params = gen_srs(k as u32); - let params = gen_srs(config.k as u32); + let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - let builder = ShaCircuitBuilder::new(thread_pool, range, None); + let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); - let pk = gen_pkey(|| "sync_step", ¶ms, out, builder).unwrap(); + let break_points = circuit.break_points(); - (params, pk) - } - - fn parametrize(k: usize) -> FlexGateConfigParams { - let args = witness::SyncStepArgs::::default(); - let circuit = SyncStepCircuit::::default(); - let range = RangeChip::::new(RangeStrategy::Vertical, 8); - let mut thread_pool = ShaThreadBuilder::keygen(); - - circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); - let params = thread_pool.config(k, None); - std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); - params + (params, pk, break_points) } } @@ -361,6 +343,7 @@ mod tests { }; use crate::{ + builder::Eth2CircuitBuilder, table::Sha256Table, util::{full_prover, full_verifier, gen_pkey}, witness::{SyncStepArgs, Validator}, @@ -396,86 +379,78 @@ mod tests { CircuitExt, SHPLONK, }; - fn get_circuit_with_data( + fn load_circuit_with_data( + thread_pool: &mut ShaThreadBuilder, k: usize, - config_path: &str, - ) -> (ShaCircuitBuilder, FlexGateConfigParams) { + ) -> Vec> { let args: SyncStepArgs = serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap(); let circuit = SyncStepCircuit::::default(); let range = RangeChip::::new(RangeStrategy::Vertical, 8); - let mut thread_pool = ShaThreadBuilder::prover(); - circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); - let config = thread_pool.config(k, None); + circuit.synthesize(thread_pool, &range, &args).unwrap(); - // let config = if let Ok(f) = fs::read(config_path) { - // serde_json::from_slice(&f).expect("read config file") - // } else { - // SyncStepCircuit::::parametrize(k) - // }; - - // set_var( - // "FLEX_GATE_CONFIG_PARAMS", - // serde_json::to_string(&config).unwrap(), - // ); - // set_var("LOOKUP_BITS", (config.k - 1).to_string()); + let config = thread_pool.config(k, None); + set_var("LOOKUP_BITS", (config.k - 1).to_string()); println!("params used: {:?}", config); - // set_var( - // "FLEX_GATE_CONFIG_PARAMS", - // serde_json::to_string(&config).unwrap(), - // ); - let params = gen_srs(config.k as u32); + let instance = vec![]; - let builder = ShaCircuitBuilder::new(thread_pool, range, None); - - (builder, config) + instance } #[test] fn test_sync_circuit() { - let k = 20; - let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20.json"); + const K: usize = 20; + + let mut builder = ShaThreadBuilder::mock(); + let assigned_instances = load_circuit_with_data(&mut builder, K); + + let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); let timer = start_timer!(|| "sync circuit mock prover"); - let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); + let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); + prover.assert_satisfied_par(); end_timer!(timer); } - // #[test] - // fn test_sync_proofgen() { - // let k = 20; - // let (circuit, _) = get_circuit_with_data(k, "./config/sync_step_k20_mock.json"); + #[test] + fn test_sync_proofgen() { + const K: usize = 20; - // let params = gen_srs(k as u32); + let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); - // let pkey = gen_pkey(|| "sync_step", ¶ms, None, circuit.clone()).unwrap(); + let mut builder = ShaThreadBuilder::prover(); + let assigned_instances = load_circuit_with_data(&mut builder, K); + let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - // let public_inputs = circuit.instances(); - // let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); + let instances = circuit.instances(); + let proof = full_prover(¶ms, &pk, circuit, instances.clone()); - // assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)) - // } + assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) + } + + #[test] + fn test_sync_evm_verify() { + const K: usize = 21; - // #[test] - // fn test_sync_evm_verify() { - // let k = 20; - // let (circuit, config) = get_circuit_with_data(k, "./config/sync_step_k21.json"); + let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); - // let (params, pk) = SyncStepCircuit::::setup(&config, None); + let mut builder = ShaThreadBuilder::prover(); + let assigned_instances = load_circuit_with_data(&mut builder, K); + let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - // let instances = circuit.instances(); - // let num_instance = circuit.num_instance(); - // let deployment_code = gen_evm_verifier_shplonk::>( - // ¶ms, - // pk.get_vk(), - // num_instance, - // None, - // ); - // let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + let num_instance = circuit.num_instance(); + let deployment_code = gen_evm_verifier_shplonk::>( + ¶ms, + pk.get_vk(), + num_instance, + None, + ); + + let instances = circuit.instances(); + let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); - // evm_verify(deployment_code, instances, proof); - // } + evm_verify(deployment_code, instances, proof); + } } diff --git a/lightclient-circuits/src/util.rs b/lightclient-circuits/src/util.rs index d053f94c..3d096a97 100644 --- a/lightclient-circuits/src/util.rs +++ b/lightclient-circuits/src/util.rs @@ -16,7 +16,7 @@ use halo2curves::bn256; pub use proof::*; use halo2_base::{ - gates::builder::{FlexGateConfigParams, GateThreadBuilder}, + gates::builder::{FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints}, safe_types::{GateInstructions, RangeChip, RangeInstructions}, utils::ScalarField, AssignedValue, Context, QuantumCell, @@ -69,11 +69,9 @@ pub(crate) fn query_expression( pub trait AppCircuitExt: Default { fn setup( - config: &FlexGateConfigParams, + k: usize, out: Option<&Path>, - ) -> (ParamsKZG, ProvingKey); - - fn parametrize(k: usize) -> FlexGateConfigParams; + ) -> (ParamsKZG, ProvingKey, MultiPhaseThreadBreakPoints); } /// Randomness used in circuits. diff --git a/lightclient-circuits/src/util/proof.rs b/lightclient-circuits/src/util/proof.rs index a0a804aa..12e22f50 100644 --- a/lightclient-circuits/src/util/proof.rs +++ b/lightclient-circuits/src/util/proof.rs @@ -55,7 +55,7 @@ pub fn gen_pkey>( name: impl Fn() -> &'static str, params: &ParamsKZG, dir_path: Option<&Path>, - circuit: C, + circuit: &C, ) -> Result, &'static str> { if let Some(path) = &dir_path { fs::create_dir_all(path).expect("Failed to create directory"); @@ -74,7 +74,7 @@ pub fn gen_pkey>( ), Err(_) => { let timer = start_timer!(|| "Creating and writting vkey"); - let vk = keygen_vk(params, &circuit).expect("vk generation should not fail"); + let vk = keygen_vk(params, circuit).expect("vk generation should not fail"); let mut file = File::create(vkey_path).expect("couldn't create vkey file"); vk.write(&mut file, halo2_proofs::SerdeFormat::RawBytesUnchecked) .expect("Failed to write vkey"); @@ -84,13 +84,13 @@ pub fn gen_pkey>( } else { ( start_timer!(|| "Loading vkey"), - keygen_vk(params, &circuit).expect("vk generation should not fail"), + keygen_vk(params, circuit).expect("vk generation should not fail"), ) }; end_timer!(timer); let timer = start_timer!(|| "Generating pkey"); - let pkey = keygen_pk(params, vkey, &circuit).expect("pk generation should not fail"); + let pkey = keygen_pk(params, vkey, circuit).expect("pk generation should not fail"); end_timer!(timer); Ok(pkey) diff --git a/lightclient-circuits/src/witness/state.rs b/lightclient-circuits/src/witness/state.rs index 97d1ed10..535be9e7 100644 --- a/lightclient-circuits/src/witness/state.rs +++ b/lightclient-circuits/src/witness/state.rs @@ -37,6 +37,7 @@ pub struct SyncStepArgs { pub beacon_state_root: Vec, + #[serde(skip)] _spec: PhantomData, } diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index 560500a8..bea4ee66 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -172,7 +172,7 @@ let input = { domain: Array.from(domain), attestedBlock: attestedBlockJson, finalizedBlock: finilizedBlockJson, - syncSignature: syncSigBytes, + signatureCompressed: syncSigBytes, executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), executionStateRoot: beaconBlockBody.executionPayload.stateRoot, finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), diff --git a/test_data/sync_step.json b/test_data/sync_step.json index 204ef1f2..0b23309b 100644 --- a/test_data/sync_step.json +++ b/test_data/sync_step.json @@ -1 +1 @@ -{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_block":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_block":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"sync_signature":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file +{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_block":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_block":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"signature_compressed":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file From 6fe5b29964613f3b1dce30b22a947f499fddb3b2 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Sat, 9 Sep 2023 15:49:52 +0200 Subject: [PATCH 10/33] uncomment Sha256Wide chip --- .../src/gadget/crypto/sha256.rs | 87 +- .../src/gadget/crypto/sha256_wide.rs | 948 +++++++++--------- 2 files changed, 509 insertions(+), 526 deletions(-) diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 4111f5b3..f2877ad4 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -35,7 +35,7 @@ use halo2_proofs::{ }; pub use self::builder::ShaContexts; -pub(super) use self::builder::{FIRST_PHASE, assign_threads_sha}; +pub(super) use self::builder::{assign_threads_sha, FIRST_PHASE}; pub use self::spread::SpreadChip; const SHA256_CONTEXT_ID: usize = usize::MAX; @@ -295,55 +295,38 @@ mod test { prover.assert_satisfied_par(); } - // #[test] - // fn test_sha256_params_gen() { - // let k = TestCircuit::::K as u32; - // let test_input = vec![0u8; 128]; - // let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - // let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - // let builder = GateThreadBuilder::keygen(); - // let circuit = TestCircuit:: { - // builder: RefCell::new(builder), - // range, - // test_input: test_input.into_witness(), - // test_output, - // _f: PhantomData, - // }; - // let params = gen_srs(k); - // let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); - // } - - // #[test] - // fn test_sha256_proof_gen() { - // let k = TestCircuit::::K as u32; - // let test_input = vec![2u8; 32]; - // let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - // let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - // let builder = GateThreadBuilder::keygen(); - // let circuit = TestCircuit:: { - // builder: RefCell::new(builder), - // range, - // test_input: HashInput::TwoToOne( - // test_input.clone().into_witness(), - // test_input.into_witness(), - // ), - // test_output, - // _f: PhantomData, - // }; - // let pf_time = start_timer!(|| "mock prover"); - - // let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - // prover.assert_satisfied(); - // prover.verify().unwrap(); - // end_timer!(pf_time); - - // let params = gen_srs(k); - - // let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); - - // let proof = full_prover(¶ms, &pkey, circuit, vec![]); - - // let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); - // assert!(is_valid); - // } + #[test] + fn test_sha256_params_gen() { + let k = 15; + let test_input = vec![0u8; 64]; + let builder = ShaThreadBuilder::::keygen(); + + let circuit = test_circuit(k, builder, &[test_input]).unwrap(); + + let params = gen_srs(k as u32); + let pk = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + } + + #[test] + fn test_sha256_proof_gen() { + let k = 15; + let test_input = vec![0u8; 64]; + let builder = ShaThreadBuilder::::keygen(); + + let circuit = test_circuit(k, builder, &[test_input.clone()]).unwrap(); + + let params = gen_srs(k as u32); + let pk = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + + let break_points = circuit.break_points.take(); + + let builder = ShaThreadBuilder::::prover(); + + let circuit = test_circuit(k, builder, &[test_input]).unwrap(); + + let proof = full_prover(¶ms, &pk, circuit, vec![]); + + let is_valid = full_verifier(¶ms, pk.get_vk(), proof, vec![]); + assert!(is_valid); + } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 77486872..754ae6fd 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -1,474 +1,474 @@ -// use eth_types::Field; -// use ff::PrimeField; -// use halo2_base::gates::builder::KeygenAssignments; -// use halo2_proofs::circuit::Value; -// use itertools::Itertools; -// use std::collections::HashMap; -// use std::{cell::RefCell, char::MAX}; - -// use crate::gadget::rlc; -// use crate::util::AssignedValueCell; -// use crate::{ -// sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, -// witness::HashInput, -// }; -// use halo2_base::safe_types::RangeChip; -// use halo2_base::QuantumCell; -// use halo2_base::{ -// gates::{GateInstructions, RangeInstructions}, -// AssignedValue, Context, -// }; -// use halo2_base::{utils::value_to_option, ContextCell}; -// use halo2_proofs::{ -// circuit::{self, AssignedCell, Region}, -// plonk::{Assigned, Error}, -// }; - -// use super::{AssignedHashResult, HashInstructions}; - -// const SHA256_CONTEXT_ID: usize = usize::MAX; - -// #[derive(Debug)] -// pub struct Sha256ChipWide<'a, F: Field> { -// config: &'a Sha256CircuitConfig, -// range: &'a RangeChip, -// randomness: F, -// extra_assignments: RefCell>, -// sha256_circuit_offset: RefCell, -// } - -// impl<'a, F: Field> HashInstructions for Sha256ChipWide<'a, F> { -// const BLOCK_SIZE: usize = 64; -// const DIGEST_SIZE: usize = 32; - -// fn digest( -// &self, -// input: HashInput>, -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// ) -> Result, Error> { -// let binary_input: HashInput = input.clone().into(); -// let assigned_input = input.into_assigned(ctx); - -// let mut extra_assignment = self.extra_assignments.borrow_mut(); -// let assigned_advices = &mut extra_assignment.assigned_advices; -// let mut assigned_input_bytes = assigned_input.to_vec(); -// let rnd = QuantumCell::Constant(self.randomness); -// let input_byte_size = assigned_input_bytes.len(); -// let max_byte_size = MAX_INPUT_SIZE; -// assert!(input_byte_size <= max_byte_size); -// let range = &self.range; -// let gate = &range.gate; - -// assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); -// let mut circuit_offset = self.sha256_circuit_offset.borrow_mut(); -// let mut assigned_rows = Sha256AssignedRows::new(*circuit_offset); -// let assigned_hash_bytes = -// self.config -// .digest_with_region(region, binary_input, &mut assigned_rows)?; -// *circuit_offset = assigned_rows.offset; -// let mut offset = assigned_advices -// .keys() -// .filter(|(ctx_id, offset)| ctx_id == &SHA256_CONTEXT_ID) -// .map(|(ctx_id, offset)| *offset + 1) -// .max() -// .unwrap_or(0); -// // TODO: use upload_assigned_cells instead of assigned_cell2value? -// let assigned_output = assigned_hash_bytes.map(|cell| self.assigned_cell2value(ctx, &cell)); - -// let one_round_size = Self::BLOCK_SIZE; -// let num_round = 1; - -// let num_round = if input_byte_size % one_round_size == 0 { -// input_byte_size / one_round_size -// } else { -// input_byte_size / one_round_size + 1 -// }; -// let padded_size = one_round_size * num_round; -// let zero_padding_byte_size = padded_size - input_byte_size; -// let max_round = max_byte_size / one_round_size; - -// let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); - -// for _ in 0..zero_padding_byte_size { -// assigned_input_bytes.push(assign_byte(0u8)); -// } - -// assert_eq!(assigned_input_bytes.len(), num_round * one_round_size); - -// for &assigned in assigned_input_bytes.iter() { -// range.range_check(ctx, assigned, 8); -// } - -// let zero = ctx.load_zero(); -// let mut full_input_len = zero; - -// let mut cur_input_rlc = zero; -// for round_idx in 0..max_round { -// let input_len = self.assigned_cell2value(ctx, &assigned_rows.input_len[round_idx]); - -// let input_rlcs = { -// let input_rlc_cells = -// assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)].iter(); -// self.upload_assigned_cells( -// input_rlc_cells, -// &mut offset, -// assigned_advices, -// ctx.witness_gen_only(), -// ) -// }; - -// let padding_selectors = assigned_rows.padding_selectors -// [16 * round_idx..16 * (round_idx + 1)] -// .iter() -// .map(|cells| { -// self.upload_assigned_cells( -// cells, -// &mut offset, -// assigned_advices, -// ctx.witness_gen_only(), -// ) -// .try_into() -// .unwrap() -// }) -// .collect::>(); - -// let [is_output_enabled, output_rlc]: [_; 2] = self -// .upload_assigned_cells( -// [ -// &assigned_rows.is_final[round_idx], -// &assigned_rows.output_rlc[0], -// ], -// &mut offset, -// assigned_advices, -// ctx.witness_gen_only(), -// ) -// .try_into() -// .unwrap(); - -// full_input_len = { -// let muled = gate.mul(ctx, is_output_enabled, input_len); -// gate.add(ctx, full_input_len, muled) -// }; - -// for word_idx in 0..16 { -// let offset_in = 64 * round_idx + 4 * word_idx; -// let assigned_input_u32 = &assigned_input_bytes[offset_in..(offset_in + 4)]; - -// for (idx, &assigned_byte) in assigned_input_u32.iter().enumerate() { -// let tmp = gate.mul_add(ctx, cur_input_rlc, rnd, assigned_byte); -// cur_input_rlc = -// gate.select(ctx, cur_input_rlc, tmp, padding_selectors[word_idx][idx]); -// } - -// ctx.constrain_equal(&cur_input_rlc, &input_rlcs[word_idx]); -// } - -// let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx); -// ctx.constrain_equal(&hash_rlc, &output_rlc); -// } -// for &byte in assigned_output.iter() { -// range.range_check(ctx, byte, 8); -// } - -// Ok(AssignedHashResult { -// // input_len: full_input_len, -// input_bytes: vec![], -// output_bytes: assigned_output, -// }) -// } - -// /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. -// /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, -// /// use `set_extra_assignments` to restore at the start of region declartion. -// /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. -// fn take_extra_assignments(&self) -> KeygenAssignments { -// self.extra_assignments.take() -// } - -// fn range(&self) -> &RangeChip { -// self.range -// } -// } - -// impl<'a, F: Field> Sha256ChipWide<'a, F> { -// pub fn new( -// config: &'a Sha256CircuitConfig, -// range: &'a RangeChip, -// randomness: Value, -// extra_assignments: Option>, -// sha256_circuit_offset: usize, -// ) -> Self { -// Self { -// config, -// range, -// randomness: value_to_option(randomness).expect("randomness is not assigned"), -// extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), -// sha256_circuit_offset: RefCell::new(sha256_circuit_offset), -// } -// } - -// fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { -// self.extra_assignments = RefCell::new(extra_assignments); -// } - -// fn assigned_cell2value( -// &self, -// ctx: &mut Context, -// assigned_cell: &AssignedValueCell, -// ) -> AssignedValue { -// ctx.load_witness(assigned_cell.value()) -// } - -// fn upload_assigned_cells( -// &self, -// assigned_cells: impl IntoIterator>, -// offset: &mut usize, -// assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, -// witness_gen_only: bool, -// ) -> Vec> { -// let assigned_values = assigned_cells -// .into_iter() -// .enumerate() -// .map(|(i, assigned_cell)| { -// let value = Assigned::Trivial(assigned_cell.value); - -// let aval = AssignedValue { -// value, -// cell: (!witness_gen_only).then_some(ContextCell { -// context_id: SHA256_CONTEXT_ID, -// offset: *offset + i, -// }), -// }; -// if !witness_gen_only { -// // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell -// assigned_advices.insert( -// (SHA256_CONTEXT_ID, *offset + i), -// (assigned_cell.cell(), usize::MAX), -// ); -// } -// aval -// }) -// .collect_vec(); -// *offset += assigned_values.len(); -// assigned_values -// } -// } - -// #[cfg(test)] -// mod test { -// use std::vec; -// use std::{cell::RefCell, marker::PhantomData}; - -// use crate::table::Sha256Table; -// use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Test; -// use halo2_base::gates::range::RangeConfig; -// use halo2_base::utils::fs::gen_srs; -// use halo2_base::SKIP_FIRST_PASS; -// use halo2_base::{ -// gates::{builder::GateThreadBuilder, range::RangeStrategy}, -// halo2_proofs::{ -// circuit::{Layouter, SimpleFloorPlanner}, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{Circuit, ConstraintSystem}, -// }, -// }; -// use sha2::{Digest, Sha256}; - -// #[derive(Debug, Clone)] -// struct TestConfig { -// sha256_config: Sha256CircuitConfig, -// pub max_byte_size: usize, -// range: RangeConfig, -// challenges: Challenges>, -// } - -// #[derive(Debug, Clone)] -// struct TestCircuit { -// builder: RefCell>, -// range: RangeChip, -// test_input: HashInput>, -// test_output: [u8; 32], -// _f: PhantomData, -// } - -// impl Circuit for TestCircuit -// where -// [(); Self::MAX_BYTE_SIZE]:, -// { -// type Config = TestConfig; -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// unimplemented!() -// } - -// fn configure(meta: &mut ConstraintSystem) -> Self::Config { -// let sha_table = Sha256Table::construct(meta); -// let sha256_configs = Sha256CircuitConfig::::new::(meta, sha_table); -// let range = RangeConfig::configure( -// meta, -// RangeStrategy::Vertical, -// &[Self::NUM_ADVICE], -// &[Self::NUM_LOOKUP_ADVICE], -// Self::NUM_FIXED, -// Self::LOOKUP_BITS, -// Self::K, -// ); -// Self::Config { -// sha256_config: sha256_configs, -// max_byte_size: Self::MAX_BYTE_SIZE, -// range, -// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), -// } -// } - -// fn synthesize( -// &self, -// config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// config.range.load_lookup_table(&mut layouter)?; -// let mut first_pass = SKIP_FIRST_PASS; -// let sha256 = Sha256ChipWide::new( -// &config.sha256_config, -// &self.range, -// config.challenges.sha256_input(), -// None, -// 0, -// ); - -// let mut builder = self.builder.borrow().clone(); - -// let _ = layouter.assign_region( -// || "sha2 test", -// |mut region| { -// if first_pass { -// first_pass = false; -// println!("first pass"); -// return Ok(vec![]); -// } -// config.sha256_config.annotate_columns_in_region(&mut region); - -// let ctx = builder.main(0); - -// let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; - -// let assigned_hash = result.output_bytes; -// println!( -// "assigned hash: {:?}", -// assigned_hash.map(|e| e.value().get_lower_32()) -// ); - -// // let correct_output = self -// // .test_output -// // .map(|b| ctx.load_witness(F::from(b as u64))); - -// // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { -// // ctx.constrain_equal(hash, check); -// // } - -// let extra_assignments = sha256.take_extra_assignments(); - -// let _ = builder.assign_all( -// &config.range.gate, -// &config.range.lookup_advice, -// &config.range.q_lookup, -// &mut region, -// extra_assignments, -// ); - -// Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) -// }, -// )?; - -// Ok(()) -// } -// } - -// impl TestCircuit { -// const MAX_BYTE_SIZE: usize = 64; -// const NUM_ADVICE: usize = 5; -// const NUM_FIXED: usize = 1; -// const NUM_LOOKUP_ADVICE: usize = 4; -// const LOOKUP_BITS: usize = 8; -// const K: usize = 11; -// } - -// #[test] -// fn test_sha256_wide_chip_constant_size() { -// let k = TestCircuit::::K as u32; - -// let test_input = vec![0u8; 128]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::new(false); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: test_input.into_witness(), -// test_output, -// _f: PhantomData, -// }; - -// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// } - -// #[test] -// fn test_sha256_wide_params_gen() { -// let k = TestCircuit::::K as u32; -// let test_input = vec![0u8; 128]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::keygen(); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: test_input.into_witness(), -// test_output, -// _f: PhantomData, -// }; -// let params = gen_srs(k); -// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit).unwrap(); -// } - -// #[test] -// fn test_sha256_wide_proof_gen() { -// let k = TestCircuit::::K as u32; -// let test_input = vec![2u8; 32]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::keygen(); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: HashInput::TwoToOne( -// test_input.clone().into_witness(), -// test_input.into_witness(), -// ), -// test_output, -// _f: PhantomData, -// }; -// let pf_time = start_timer!(|| "mock prover"); - -// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// prover.verify().unwrap(); -// end_timer!(pf_time); - -// let params = gen_srs(k); - -// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, circuit.clone()).unwrap(); - -// let proof = full_prover(¶ms, &pkey, circuit, vec![]); - -// let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); -// assert!(is_valid); -// } -// } +use eth_types::Field; +use ff::PrimeField; +use halo2_base::gates::builder::KeygenAssignments; +use halo2_proofs::circuit::Value; +use itertools::Itertools; +use std::collections::HashMap; +use std::{cell::RefCell, char::MAX}; + +use crate::gadget::rlc; +use crate::util::AssignedValueCell; +use crate::{ + sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, + witness::HashInput, +}; +use halo2_base::safe_types::RangeChip; +use halo2_base::QuantumCell; +use halo2_base::{ + gates::{GateInstructions, RangeInstructions}, + AssignedValue, Context, +}; +use halo2_base::{utils::value_to_option, ContextCell}; +use halo2_proofs::{ + circuit::{self, AssignedCell, Region}, + plonk::{Assigned, Error}, +}; + +use super::{AssignedHashResult, HashInstructions}; + +const SHA256_CONTEXT_ID: usize = usize::MAX; + +#[derive(Debug)] +pub struct Sha256ChipWide<'a, F: Field> { + config: &'a Sha256CircuitConfig, + range: &'a RangeChip, + randomness: F, + extra_assignments: RefCell>, + sha256_circuit_offset: RefCell, +} + +impl<'a, F: Field> Sha256ChipWide<'a, F> { + const BLOCK_SIZE: usize = 64; + const DIGEST_SIZE: usize = 32; + + fn digest( + &self, + input: HashInput>, + ctx: &mut Context, + region: &mut Region<'_, F>, + ) -> Result, Error> { + let binary_input: HashInput = input.clone().into(); + let assigned_input = input.into_assigned(ctx); + + let mut extra_assignment = self.extra_assignments.borrow_mut(); + let assigned_advices = &mut extra_assignment.assigned_advices; + let mut assigned_input_bytes = assigned_input.to_vec(); + let rnd = QuantumCell::Constant(self.randomness); + let input_byte_size = assigned_input_bytes.len(); + let max_byte_size = MAX_INPUT_SIZE; + assert!(input_byte_size <= max_byte_size); + let range = &self.range; + let gate = &range.gate; + + assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); + let mut circuit_offset = self.sha256_circuit_offset.borrow_mut(); + let mut assigned_rows = Sha256AssignedRows::new(*circuit_offset); + let assigned_hash_bytes = + self.config + .digest_with_region(region, binary_input, &mut assigned_rows)?; + *circuit_offset = assigned_rows.offset; + let mut offset = assigned_advices + .keys() + .filter(|(ctx_id, offset)| ctx_id == &SHA256_CONTEXT_ID) + .map(|(ctx_id, offset)| *offset + 1) + .max() + .unwrap_or(0); + // TODO: use upload_assigned_cells instead of assigned_cell2value? + let assigned_output = assigned_hash_bytes.map(|cell| self.assigned_cell2value(ctx, &cell)); + + let one_round_size = Self::BLOCK_SIZE; + let num_round = 1; + + let num_round = if input_byte_size % one_round_size == 0 { + input_byte_size / one_round_size + } else { + input_byte_size / one_round_size + 1 + }; + let padded_size = one_round_size * num_round; + let zero_padding_byte_size = padded_size - input_byte_size; + let max_round = max_byte_size / one_round_size; + + let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); + + for _ in 0..zero_padding_byte_size { + assigned_input_bytes.push(assign_byte(0u8)); + } + + assert_eq!(assigned_input_bytes.len(), num_round * one_round_size); + + for &assigned in assigned_input_bytes.iter() { + range.range_check(ctx, assigned, 8); + } + + let zero = ctx.load_zero(); + let mut full_input_len = zero; + + let mut cur_input_rlc = zero; + for round_idx in 0..max_round { + let input_len = self.assigned_cell2value(ctx, &assigned_rows.input_len[round_idx]); + + let input_rlcs = { + let input_rlc_cells = + assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)].iter(); + self.upload_assigned_cells( + input_rlc_cells, + &mut offset, + assigned_advices, + ctx.witness_gen_only(), + ) + }; + + let padding_selectors = assigned_rows.padding_selectors + [16 * round_idx..16 * (round_idx + 1)] + .iter() + .map(|cells| { + self.upload_assigned_cells( + cells, + &mut offset, + assigned_advices, + ctx.witness_gen_only(), + ) + .try_into() + .unwrap() + }) + .collect::>(); + + let [is_output_enabled, output_rlc]: [_; 2] = self + .upload_assigned_cells( + [ + &assigned_rows.is_final[round_idx], + &assigned_rows.output_rlc[0], + ], + &mut offset, + assigned_advices, + ctx.witness_gen_only(), + ) + .try_into() + .unwrap(); + + full_input_len = { + let muled = gate.mul(ctx, is_output_enabled, input_len); + gate.add(ctx, full_input_len, muled) + }; + + for word_idx in 0..16 { + let offset_in = 64 * round_idx + 4 * word_idx; + let assigned_input_u32 = &assigned_input_bytes[offset_in..(offset_in + 4)]; + + for (idx, &assigned_byte) in assigned_input_u32.iter().enumerate() { + let tmp = gate.mul_add(ctx, cur_input_rlc, rnd, assigned_byte); + cur_input_rlc = + gate.select(ctx, cur_input_rlc, tmp, padding_selectors[word_idx][idx]); + } + + ctx.constrain_equal(&cur_input_rlc, &input_rlcs[word_idx]); + } + + let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx); + ctx.constrain_equal(&hash_rlc, &output_rlc); + } + for &byte in assigned_output.iter() { + range.range_check(ctx, byte, 8); + } + + Ok(AssignedHashResult { + // input_len: full_input_len, + input_bytes: vec![], + output_bytes: assigned_output, + }) + } + + /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. + /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, + /// use `set_extra_assignments` to restore at the start of region declartion. + /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. + fn take_extra_assignments(&self) -> KeygenAssignments { + self.extra_assignments.take() + } + + fn range(&self) -> &RangeChip { + self.range + } +} + +impl<'a, F: Field> Sha256ChipWide<'a, F> { + pub fn new( + config: &'a Sha256CircuitConfig, + range: &'a RangeChip, + randomness: Value, + extra_assignments: Option>, + sha256_circuit_offset: usize, + ) -> Self { + Self { + config, + range, + randomness: value_to_option(randomness).expect("randomness is not assigned"), + extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), + sha256_circuit_offset: RefCell::new(sha256_circuit_offset), + } + } + + fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { + self.extra_assignments = RefCell::new(extra_assignments); + } + + fn assigned_cell2value( + &self, + ctx: &mut Context, + assigned_cell: &AssignedValueCell, + ) -> AssignedValue { + ctx.load_witness(assigned_cell.value()) + } + + fn upload_assigned_cells( + &self, + assigned_cells: impl IntoIterator>, + offset: &mut usize, + assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, + witness_gen_only: bool, + ) -> Vec> { + let assigned_values = assigned_cells + .into_iter() + .enumerate() + .map(|(i, assigned_cell)| { + let value = Assigned::Trivial(assigned_cell.value); + + let aval = AssignedValue { + value, + cell: (!witness_gen_only).then_some(ContextCell { + context_id: SHA256_CONTEXT_ID, + offset: *offset + i, + }), + }; + if !witness_gen_only { + // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell + assigned_advices.insert( + (SHA256_CONTEXT_ID, *offset + i), + (assigned_cell.cell(), usize::MAX), + ); + } + aval + }) + .collect_vec(); + *offset += assigned_values.len(); + assigned_values + } +} + +#[cfg(test)] +mod test { + use std::vec; + use std::{cell::RefCell, marker::PhantomData}; + + use crate::table::Sha256Table; + use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Test; + use halo2_base::gates::range::RangeConfig; + use halo2_base::utils::fs::gen_srs; + use halo2_base::SKIP_FIRST_PASS; + use halo2_base::{ + gates::{builder::GateThreadBuilder, range::RangeStrategy}, + halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{Circuit, ConstraintSystem}, + }, + }; + use sha2::{Digest, Sha256}; + + #[derive(Debug, Clone)] + struct TestConfig { + sha256_config: Sha256CircuitConfig, + pub max_byte_size: usize, + range: RangeConfig, + challenges: Challenges>, + } + + #[derive(Debug, Clone)] + struct TestCircuit { + builder: RefCell>, + range: RangeChip, + test_input: HashInput>, + test_output: [u8; 32], + _f: PhantomData, + } + + impl Circuit for TestCircuit + where + [(); Self::MAX_BYTE_SIZE]:, + { + type Config = TestConfig; + type FloorPlanner = SimpleFloorPlanner; + + fn without_witnesses(&self) -> Self { + unimplemented!() + } + + fn configure(meta: &mut ConstraintSystem) -> Self::Config { + let sha_table = Sha256Table::construct(meta); + let sha256_configs = Sha256CircuitConfig::::new::(meta, sha_table); + let range = RangeConfig::configure( + meta, + RangeStrategy::Vertical, + &[Self::NUM_ADVICE], + &[Self::NUM_LOOKUP_ADVICE], + Self::NUM_FIXED, + Self::LOOKUP_BITS, + Self::K, + ); + Self::Config { + sha256_config: sha256_configs, + max_byte_size: Self::MAX_BYTE_SIZE, + range, + challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), + } + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter, + ) -> Result<(), Error> { + config.range.load_lookup_table(&mut layouter)?; + let mut first_pass = SKIP_FIRST_PASS; + let sha256 = Sha256ChipWide::new( + &config.sha256_config, + &self.range, + config.challenges.sha256_input(), + None, + 0, + ); + + let mut builder = self.builder.borrow().clone(); + + let _ = layouter.assign_region( + || "sha2 test", + |mut region| { + if first_pass { + first_pass = false; + println!("first pass"); + return Ok(vec![]); + } + config.sha256_config.annotate_columns_in_region(&mut region); + + let ctx = builder.main(0); + + let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; + + let assigned_hash = result.output_bytes; + println!( + "assigned hash: {:?}", + assigned_hash.map(|e| e.value().get_lower_32()) + ); + + // let correct_output = self + // .test_output + // .map(|b| ctx.load_witness(F::from(b as u64))); + + // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { + // ctx.constrain_equal(hash, check); + // } + + let extra_assignments = sha256.take_extra_assignments(); + + let _ = builder.assign_all( + &config.range.gate, + &config.range.lookup_advice, + &config.range.q_lookup, + &mut region, + extra_assignments, + ); + + Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) + }, + )?; + + Ok(()) + } + } + + impl TestCircuit { + const MAX_BYTE_SIZE: usize = 64; + const NUM_ADVICE: usize = 5; + const NUM_FIXED: usize = 1; + const NUM_LOOKUP_ADVICE: usize = 4; + const LOOKUP_BITS: usize = 8; + const K: usize = 11; + } + + #[test] + fn test_sha256_wide_chip_constant_size() { + let k = TestCircuit::::K as u32; + + let test_input = vec![0u8; 128]; + let test_output: [u8; 32] = Sha256::digest(&test_input).into(); + let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); + let builder = GateThreadBuilder::new(false); + let circuit = TestCircuit:: { + builder: RefCell::new(builder), + range, + test_input: test_input.into_witness(), + test_output, + _f: PhantomData, + }; + + let prover = MockProver::run(k, &circuit, vec![]).unwrap(); + prover.assert_satisfied(); + } + + #[test] + fn test_sha256_wide_params_gen() { + let k = TestCircuit::::K as u32; + let test_input = vec![0u8; 128]; + let test_output: [u8; 32] = Sha256::digest(&test_input).into(); + let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); + let builder = GateThreadBuilder::keygen(); + let circuit = TestCircuit:: { + builder: RefCell::new(builder), + range, + test_input: test_input.into_witness(), + test_output, + _f: PhantomData, + }; + let params = gen_srs(k); + let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + } + + #[test] + fn test_sha256_wide_proof_gen() { + let k = TestCircuit::::K as u32; + let test_input = vec![2u8; 32]; + let test_output: [u8; 32] = Sha256::digest(&test_input).into(); + let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); + let builder = GateThreadBuilder::keygen(); + let circuit = TestCircuit:: { + builder: RefCell::new(builder), + range, + test_input: HashInput::TwoToOne( + test_input.clone().into_witness(), + test_input.into_witness(), + ), + test_output, + _f: PhantomData, + }; + let pf_time = start_timer!(|| "mock prover"); + + let prover = MockProver::run(k, &circuit, vec![]).unwrap(); + prover.assert_satisfied(); + prover.verify().unwrap(); + end_timer!(pf_time); + + let params = gen_srs(k); + + let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + + let proof = full_prover(¶ms, &pkey, circuit, vec![]); + + let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); + assert!(is_valid); + } +} From d7f85d6cac00d943e3ff18782afb727428d47e22 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Sun, 10 Sep 2023 01:07:38 +0200 Subject: [PATCH 11/33] remove unused features from Sha256Wide config --- .../src/committee_update_circuit.rs | 2 +- .../src/gadget/crypto/builder.rs | 5 +- .../src/gadget/crypto/hash2curve.rs | 7 +- lightclient-circuits/src/gadget/crypto/mod.rs | 38 +- .../src/gadget/crypto/sha256.rs | 33 +- .../src/gadget/crypto/sha256_wide.rs | 28 +- .../crypto/sha256_wide/config.rs} | 485 +++--------------- .../crypto/sha256_wide}/util.rs | 0 .../crypto/sha256_wide/witness.rs} | 69 +-- lightclient-circuits/src/lib.rs | 4 +- lightclient-circuits/src/sync_step_circuit.rs | 3 - lightclient-circuits/src/table.rs | 71 --- .../src/table/sha256_table.rs | 229 --------- lightclient-circuits/src/util.rs | 7 +- lightclient-circuits/src/witness/state.rs | 2 - 15 files changed, 134 insertions(+), 849 deletions(-) rename lightclient-circuits/src/{sha256_circuit.rs => gadget/crypto/sha256_wide/config.rs} (67%) rename lightclient-circuits/src/{sha256_circuit => gadget/crypto/sha256_wide}/util.rs (100%) rename lightclient-circuits/src/{sha256_circuit/sha256_bit.rs => gadget/crypto/sha256_wide/witness.rs} (80%) delete mode 100644 lightclient-circuits/src/table.rs delete mode 100644 lightclient-circuits/src/table/sha256_table.rs diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 122954c5..e2760301 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -13,7 +13,7 @@ // use crate::{ // gadget::crypto::{ // Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, -// HashToCurveChip, Sha256ChipWide, SpreadConfig, +// HashToCurveChip, Sha256ChipWide, // }, // poseidon::{g1_array_poseidon, poseidon_sponge}, // sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index edb05e8f..df30e048 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -18,10 +18,7 @@ use halo2_proofs::{ }; use snark_verifier_sdk::CircuitExt; -use crate::{ - gadget::crypto::{Sha256Chip, ShaThreadBuilder}, - sha256_circuit::Sha256CircuitConfig, -}; +use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 46ad0584..bd2a7a5c 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -30,11 +30,10 @@ use num_bigint::{BigInt, BigUint}; use pasta_curves::arithmetic::SqrtRatio; use super::{ - sha256::HashInstructions, util::{fp2_sgn0, i2osp, strxor}, - Fp2Point, G1Point, G2Point, + Fp2Point, G1Point, G2Point, HashInstructions, }; -use super::{ShaContexts, ShaThreadBuilder}; +use super::{ShaContexts, ShaThreadBuilder, AssignedHashResult}; const G2_EXT_DEGREE: usize = 2; @@ -629,8 +628,6 @@ mod test { use crate::gadget::crypto::sha256::{SpreadChip, SpreadConfig}; use crate::gadget::crypto::ShaCircuitBuilder; use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; - use crate::sha256_circuit::Sha256CircuitConfig; - use crate::table::Sha256Table; use crate::util::{print_fq2_dev, Challenges, IntoWitness}; use super::*; diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 35c66899..d93cdcc4 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -1,22 +1,24 @@ +mod builder; mod hash2curve; mod sha256; mod sha256_wide; mod util; -mod builder; -use eth_types::{AppCurveExt, HashCurveExt}; +pub use builder::{SHAConfig, ShaCircuitBuilder}; +use eth_types::{AppCurveExt, Field, HashCurveExt}; +use halo2_base::{safe_types::RangeChip, AssignedValue, QuantumCell}; use halo2_ecc::{ bigint::ProperCrtUint, bls12_381::{Fp2Chip, FpChip}, ecc::{EcPoint, EccChip}, fields::{fp2, vector::FieldVector, FieldExtConstructor}, }; +use halo2_proofs::plonk::Error; pub use hash2curve::{HashToCurveCache, HashToCurveChip}; -pub use sha256::{ - AssignedHashResult, HashInstructions, Sha256Chip, ShaContexts, ShaThreadBuilder, -}; -pub use builder::{SHAConfig, ShaCircuitBuilder}; +pub use sha256::{Sha256Chip, ShaContexts, ShaThreadBuilder}; pub use sha256_wide::*; + +use crate::witness::HashInput; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; pub type G1Point = EcPoint>; @@ -27,3 +29,27 @@ pub type G1Chip<'chip, F> = EccChip<'chip, F, FpChip<'chip, F>>; #[allow(type_alias_bounds)] pub type G2Chip<'chip, F> = EccChip<'chip, F, Fp2Chip<'chip, F>>; + +pub trait HashInstructions { + const BLOCK_SIZE: usize; + const DIGEST_SIZE: usize; + + /// Digests input using hash function and returns finilized output. + /// `MAX_INPUT_SIZE` is the maximum size of input that can be processed by the hash function. + /// `strict` flag indicates whether to perform range check on input bytes. + fn digest( + &self, + thread_pool: &mut ShaThreadBuilder, + input: HashInput>, + strict: bool, + ) -> Result, Error>; + + fn range(&self) -> &RangeChip; +} + +#[derive(Debug, Clone)] +pub struct AssignedHashResult { + // pub input_len: AssignedValue, + pub input_bytes: Vec>, + pub output_bytes: [AssignedValue; 32], +} diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index f2877ad4..64a97e7e 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -18,10 +18,7 @@ use std::{cell::RefCell, char::MAX}; use crate::gadget::crypto::sha256::compression::{sha256_compression, INIT_STATE}; use crate::util::AssignedValueCell; -use crate::{ - sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, - witness::HashInput, -}; +use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; use halo2_base::QuantumCell; use halo2_base::{ @@ -38,36 +35,13 @@ pub use self::builder::ShaContexts; pub(super) use self::builder::{assign_threads_sha, FIRST_PHASE}; pub use self::spread::SpreadChip; -const SHA256_CONTEXT_ID: usize = usize::MAX; - -pub trait HashInstructions { - const BLOCK_SIZE: usize; - const DIGEST_SIZE: usize; - - /// Digests input using hash function and returns finilized output. - /// `MAX_INPUT_SIZE` is the maximum size of input that can be processed by the hash function. - /// `strict` flag indicates whether to perform range check on input bytes. - fn digest( - &self, - thread_pool: &mut ShaThreadBuilder, - input: HashInput>, - strict: bool, - ) -> Result, Error>; - - fn range(&self) -> &RangeChip; -} +use super::{HashInstructions, AssignedHashResult}; -#[derive(Debug, Clone)] -pub struct AssignedHashResult { - // pub input_len: AssignedValue, - pub input_bytes: Vec>, - pub output_bytes: [AssignedValue; 32], -} +const SHA256_CONTEXT_ID: usize = usize::MAX; #[derive(Debug, Clone)] pub struct Sha256Chip<'a, F: Field> { spread: SpreadChip<'a, F>, - // extra_assignments: RefCell>, } impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { @@ -237,7 +211,6 @@ mod test { use std::{cell::RefCell, marker::PhantomData}; use crate::gadget::crypto::ShaCircuitBuilder; - use crate::table::Sha256Table; use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; use super::*; diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 754ae6fd..e955edf3 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -1,3 +1,7 @@ +mod config; +mod witness; +mod util; + use eth_types::Field; use ff::PrimeField; use halo2_base::gates::builder::KeygenAssignments; @@ -6,12 +10,11 @@ use itertools::Itertools; use std::collections::HashMap; use std::{cell::RefCell, char::MAX}; +use crate::gadget::crypto::sha256_wide::util::Sha256AssignedRows; use crate::gadget::rlc; use crate::util::AssignedValueCell; -use crate::{ - sha256_circuit::{util::Sha256AssignedRows, Sha256CircuitConfig}, - witness::HashInput, -}; +use crate::witness::HashInput; + use halo2_base::safe_types::RangeChip; use halo2_base::QuantumCell; use halo2_base::{ @@ -24,13 +27,15 @@ use halo2_proofs::{ plonk::{Assigned, Error}, }; +use self::config::Sha256WideConfig; + use super::{AssignedHashResult, HashInstructions}; const SHA256_CONTEXT_ID: usize = usize::MAX; #[derive(Debug)] pub struct Sha256ChipWide<'a, F: Field> { - config: &'a Sha256CircuitConfig, + config: &'a Sha256WideConfig, range: &'a RangeChip, randomness: F, extra_assignments: RefCell>, @@ -172,9 +177,8 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { } Ok(AssignedHashResult { - // input_len: full_input_len, input_bytes: vec![], - output_bytes: assigned_output, + output_bytes: assigned_output.try_into().unwrap(), }) } @@ -193,7 +197,7 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { impl<'a, F: Field> Sha256ChipWide<'a, F> { pub fn new( - config: &'a Sha256CircuitConfig, + config: &'a Sha256WideConfig, range: &'a RangeChip, randomness: Value, extra_assignments: Option>, @@ -260,7 +264,6 @@ mod test { use std::vec; use std::{cell::RefCell, marker::PhantomData}; - use crate::table::Sha256Table; use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; use super::*; @@ -282,7 +285,7 @@ mod test { #[derive(Debug, Clone)] struct TestConfig { - sha256_config: Sha256CircuitConfig, + sha256_config: Sha256WideConfig, pub max_byte_size: usize, range: RangeConfig, challenges: Challenges>, @@ -309,8 +312,7 @@ mod test { } fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let sha_table = Sha256Table::construct(meta); - let sha256_configs = Sha256CircuitConfig::::new::(meta, sha_table); + let sha256_configs = Sha256WideConfig::::new::(meta); let range = RangeConfig::configure( meta, RangeStrategy::Vertical, @@ -324,7 +326,7 @@ mod test { sha256_config: sha256_configs, max_byte_size: Self::MAX_BYTE_SIZE, range, - challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), + challenges: Challenges::mock(Value::known(Sha256WideConfig::fixed_challenge())), } } diff --git a/lightclient-circuits/src/sha256_circuit.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs similarity index 67% rename from lightclient-circuits/src/sha256_circuit.rs rename to lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs index 82b744f4..64b657c3 100644 --- a/lightclient-circuits/src/sha256_circuit.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs @@ -2,17 +2,12 @@ //! This implementation is based on: //! - https://github.com/SoraSuegami/zkevm-circuits/blob/main/zkevm-circuits/src/sha256_circuit/sha256_bit.rs -mod sha256_bit; -pub mod util; - use std::hash::Hash; use std::marker::PhantomData; use crate::gadget::{and, not, rlc, select, sum, xor, Expr}; -use crate::table::sha256_table::Sha256TableAssignedRow; use crate::witness::HashInputChunk; use crate::{ - table::{LookupTable, Sha256Table}, util::{AssignedValueCell, BaseConstraintBuilder, Challenges}, witness::{self, HashInput}, }; @@ -24,15 +19,15 @@ use halo2_proofs::{ poly::Rotation, }; +use super::util::*; use itertools::Itertools; use log::debug; -use util::*; -use self::sha256_bit::{multi_sha256, ShaRow}; +use super::witness::{multi_sha256, ShaRow}; -/// Configuration for [`Sha256Chip`]. +/// Configuration for [`Sha256WideChip`]. #[derive(Clone, Debug)] -pub struct Sha256CircuitConfig { +pub struct Sha256WideConfig { q_enable: Column, q_first: Column, q_extend: Column, @@ -52,29 +47,27 @@ pub struct Sha256CircuitConfig { round_cst: Column, h_a: Column, h_e: Column, - // feature: [multi input lookups] - is_right: Column, - rnd_pow: Column, - input_rlcs: [Column; 2], - // feature: [lookup by value] - u8_pow: [Column; 2], - is_rlc: [Column; 2], - is_left_value: Column, - is_right_value: Column, - /// The columns for bytes of hash results - pub hash_table: Sha256Table, + // True when the row is enabled + pub is_enabled: Column, + // The columns for bytes of hash results + pub input_rlc: Column, + // Length of first+second inputs + pub input_len: Column, + // RLC of the hash result + pub hash_rlc: Column, + // Output bytes pub final_hash_bytes: [Column; NUM_BYTES_FINAL_HASH], _marker: PhantomData, } -impl Sha256CircuitConfig { - pub fn new(meta: &mut ConstraintSystem, args: Sha256Table) -> Self { +impl Sha256WideConfig { + pub fn new(meta: &mut ConstraintSystem) -> Self { // consts let two = F::from(2); let f256 = two.pow_const(8); - let r: F = Sha256CircuitConfig::fixed_challenge(); + let r: F = Sha256WideConfig::fixed_challenge(); let q_enable = meta.fixed_column(); let q_first = meta.fixed_column(); let q_extend = meta.fixed_column(); @@ -89,7 +82,6 @@ impl Sha256CircuitConfig { let word_a = array_init::array_init(|_| meta.advice_column()); let word_e = array_init::array_init(|_| meta.advice_column()); let is_final = meta.advice_column(); - let is_right = meta.advice_column(); let is_paddings = array_init::array_init(|_| meta.advice_column()); is_paddings @@ -103,24 +95,15 @@ impl Sha256CircuitConfig { let h_e = meta.fixed_column(); meta.enable_equality(h_e); - let hash_table = args; - let is_enabled = hash_table.is_enabled; + let is_enabled = meta.advice_column(); meta.enable_equality(is_enabled); - let length = hash_table.input_len; - meta.enable_equality(length); - let input_chunks = hash_table.input_chunks; - let data_rlc = hash_table.input_rlc; - meta.enable_equality(data_rlc); - let hash_rlc = hash_table.hash_rlc; + let input_len = meta.advice_column(); + meta.enable_equality(input_len); + let input_rlc = meta.advice_column(); + meta.enable_equality(input_rlc); + let hash_rlc = meta.advice_column(); meta.enable_equality(hash_rlc); - // feature: [multi input lookups] - let rnd_pow = meta.advice_column(); - let input_rlcs = array_init::array_init(|_| meta.advice_column()); - // feature: [lookup by value] - let is_rlc = array_init::array_init(|_| meta.advice_column()); - let is_left_value = meta.advice_column(); - let is_right_value = meta.advice_column(); - let u8_pow = array_init::array_init(|_| meta.advice_column()); + let final_hash_bytes = array_init::array_init(|_| meta.advice_column()); for col in final_hash_bytes.into_iter() { meta.enable_equality(col); @@ -144,9 +127,6 @@ impl Sha256CircuitConfig { let mut new_a_ext = vec![0u64.expr(); NUM_BITS_PER_WORD_EXT]; let mut new_e_ext = vec![0u64.expr(); NUM_BITS_PER_WORD_EXT]; - // circuit annotation - hash_table.annotate_columns(meta); - meta.create_gate("Query state bits", |meta| { for k in 0..NUM_BITS_PER_WORD_W { w_ext[k] = meta.query_advice(word_w[k], Rotation(-0)); @@ -366,7 +346,7 @@ impl Sha256CircuitConfig { let prev_is_padding = meta.query_advice(*is_paddings.last().unwrap(), Rotation::prev()); let q_padding = meta.query_fixed(q_padding, Rotation::cur()); let q_padding_last = meta.query_fixed(q_padding_last, Rotation::cur()); - let length = meta.query_advice(length, Rotation::cur()); + let length = meta.query_advice(input_len, Rotation::cur()); let is_final_padding_row = meta.query_advice(*is_paddings.last().unwrap(), Rotation(-2)); // All padding selectors need to be boolean @@ -442,38 +422,14 @@ impl Sha256CircuitConfig { meta.create_gate("length and data rlc", |meta| { let mut cb = BaseConstraintBuilder::new(MAX_DEGREE); let q_padding = meta.query_fixed(q_padding, Rotation::cur()); - let is_right = meta.query_advice(is_right, Rotation::cur()); - let is_left_value: Expression = meta.query_advice(is_left_value, Rotation::cur()); - let is_right_value: Expression = meta.query_advice(is_right_value, Rotation::cur()); let start_new_hash = start_new_hash(meta); - let length_prev = meta.query_advice(length, Rotation::prev()); - let length = meta.query_advice(length, Rotation::cur()); - let data_rlc_prev = meta.query_advice(data_rlc, Rotation::prev()); - let data_rlc = meta.query_advice(data_rlc, Rotation::cur()); - let data_vals_prev = [ - meta.query_advice(input_chunks[0], Rotation::prev()), - meta.query_advice(input_chunks[1], Rotation::prev()), - ]; - let u8_pow_prev = [ - meta.query_advice(u8_pow[0], Rotation::prev()), - meta.query_advice(u8_pow[1], Rotation::prev()), - ]; - let u8_pow = [ - meta.query_advice(u8_pow[0], Rotation::cur()), - meta.query_advice(u8_pow[1], Rotation::cur()), - ]; - let input_chunks = [ - meta.query_advice(input_chunks[0], Rotation::cur()), - meta.query_advice(input_chunks[1], Rotation::cur()), - ]; - - let rnd_pow_prev = meta.query_advice(rnd_pow, Rotation::prev()); - let rnd_pow = meta.query_advice(rnd_pow, Rotation::cur()); + let length_prev = meta.query_advice(input_len, Rotation::prev()); + let length = meta.query_advice(input_len, Rotation::cur()); + let data_rlc_prev = meta.query_advice(input_rlc, Rotation::prev()); + let data_rlc = meta.query_advice(input_rlc, Rotation::cur()); // Update the length/data_rlc on rows where we absorb data cb.condition(q_padding.expr(), |cb| { - cb.require_boolean("is_right boolean", is_right.clone()); // feature: [multi input lookups] - // Length increases by the number of bytes that aren't padding // In a new block we have to start from 0 if the previous block was the final // one @@ -488,12 +444,6 @@ impl Sha256CircuitConfig { // Use intermediate cells to keep the degree low let mut new_data_rlc = data_rlc_prev.clone() * not::expr(start_new_hash.expr()); - let mut new_data_val = data_vals_prev - .clone() - .map(|e| e * not::expr(start_new_hash.expr())); - let mut new_u8_pow = u8_pow_prev - .clone() - .map(|e| e * not::expr(start_new_hash.expr())); cb.require_equal( "initial data rlc", @@ -502,7 +452,6 @@ impl Sha256CircuitConfig { ); new_data_rlc = meta.query_advice(data_rlcs[0], Rotation::cur()); - let _new_data_rlc_cur = new_data_rlc.clone(); for (idx, (byte, is_padding)) in input_bytes.iter().zip(is_paddings.iter()).enumerate() { @@ -520,85 +469,13 @@ impl Sha256CircuitConfig { ); new_data_rlc = next_data_rlc; } - for (new_data_val, new_u8_pow) in - new_data_val.iter_mut().zip(new_u8_pow.iter_mut()) - { - *new_data_val = new_data_val.clone() + new_u8_pow.clone() * byte.clone(); - *new_u8_pow = new_u8_pow.clone() * f256; - } } cb.require_equal("update data rlc", data_rlc.clone(), new_data_rlc); - - // feature: [multi input lookups] - let new_rnd_pow = rnd_pow_prev.clone() * r.pow_const(4); - cb.require_equal( - "update rnd pow", - rnd_pow.clone() * is_right.clone(), - new_rnd_pow * is_right.clone(), - ); - - // feature: [lookup by value] - let is_enabled = [is_left_value, is_right_value]; - for (i, (new_data_val, new_u8_pow)) in - new_data_val.into_iter().zip(new_u8_pow).enumerate() - { - cb.require_equal( - ["update data val left", "update data val right"][i], - input_chunks[i].clone() * is_enabled[i].clone(), - new_data_val * is_enabled[i].clone(), - ); - cb.require_equal( - ["update u8 pow left", "update u8 pow right"][i], - u8_pow[i].clone() * is_enabled[i].clone(), - new_u8_pow * is_enabled[i].clone(), - ); - } }); cb.gate(1.expr()) }); - // feature: [multi input lookups] - meta.create_gate("chunk rlcs", |meta| { - let mut cb = BaseConstraintBuilder::new(MAX_DEGREE); - let is_enabled = meta.query_advice(is_enabled, Rotation::cur()); - let input_rlcs = input_rlcs - .iter() - .map(|col| meta.query_advice(*col, Rotation::cur())) - .collect_vec(); - let input_chunks = input_chunks - .iter() - .map(|col| meta.query_advice(*col, Rotation::cur())) - .collect_vec(); - let data_rlc = meta.query_advice(data_rlc, Rotation::cur()); - let base_pow = meta.query_advice(rnd_pow, Rotation::cur()); - let is_rlc = [ - meta.query_advice(is_rlc[0], Rotation::cur()), - meta.query_advice(is_rlc[1], Rotation::cur()), - ]; - - for (i, (input_rlc, input_chunk)) in input_rlcs.iter().zip(input_chunks).enumerate() { - cb.condition(is_rlc[i].clone(), |cb| { - cb.require_equal( - "input_rlc == input_hunk when is_rlc", - input_rlc.clone(), - input_chunk, - ); - }); - } - - cb.condition(is_enabled, |cb| { - cb.require_equal( - "data_rlc = left_rlc * r^right.len() + right_rlc", - input_rlcs[0].clone() * base_pow + input_rlcs[1].clone(), - data_rlc, - ); - }); - - cb.gate(meta.query_fixed(q_enable, Rotation::cur())) - }); - // end - // Make sure data is consistent between blocks meta.create_gate("cross block data consistency", |meta| { let mut cb = BaseConstraintBuilder::new(MAX_DEGREE); @@ -641,8 +518,8 @@ impl Sha256CircuitConfig { ); }); }; - add("length", length); - add("data_rlc", data_rlc); + add("length", input_len); + add("data_rlc", input_rlc); add("last padding", *is_paddings.last().unwrap()); cb.gate(1.expr()) @@ -692,87 +569,53 @@ impl Sha256CircuitConfig { debug!("sha256 circuit degree: {}", meta.degree()); debug!("minimum rows: {}", meta.minimum_rows()); - Sha256CircuitConfig { + Sha256WideConfig { q_enable, q_first, q_extend, q_start, q_compression, - is_right, q_end, q_padding, q_padding_last, q_squeeze, q_final_word, - hash_table, word_w, word_a, word_e, is_final, is_paddings, data_rlcs, - is_rlc, - is_left_value, - is_right_value, - u8_pow, - rnd_pow, - input_rlcs, round_cst, h_a, h_e, + is_enabled, + input_len, + input_rlc, + hash_rlc, final_hash_bytes, _marker: PhantomData, } } pub fn annotate_columns_in_region(&self, region: &mut Region) { - self.hash_table.annotate_columns_in_region(region); self.annotations().iter().for_each(|(column, name)| { region.name_column(|| name, *column); }); } } -impl Sha256CircuitConfig { - /// Given the input, returns a vector of the assigned cells for the hash - /// results. - pub fn digest( - &self, - layouter: &mut impl Layouter, - input: HashInput, - ) -> Result<[AssignedValueCell; NUM_BYTES_FINAL_HASH], Error> { - let witness = multi_sha256(&[input], Sha256CircuitConfig::fixed_challenge()); - let mut hashes = self.assign(layouter, &witness)?; - assert_eq!(hashes.len(), 1); - Ok(hashes.pop().unwrap().hash_bytes.try_into().unwrap()) - } - +impl Sha256WideConfig { pub fn digest_with_region( &self, region: &mut Region<'_, F>, input: HashInput, assigned_rows: &mut Sha256AssignedRows, ) -> Result<[AssignedValueCell; NUM_BYTES_FINAL_HASH], Error> { - let witness = multi_sha256(&[input], Sha256CircuitConfig::fixed_challenge()); + let witness = multi_sha256(&[input], Sha256WideConfig::fixed_challenge()); let mut hashes = self.assign_with_region(region, &witness, assigned_rows)?; assert_eq!(hashes.len(), 1); - Ok(hashes.pop().unwrap().hash_bytes.try_into().unwrap()) - } - - pub fn assign( - &self, - layouter: &mut impl Layouter, - witness: &[ShaRow], - ) -> Result>, Error> { - layouter.assign_region( - || "assign sha256 data", - |mut region| { - let mut assigned_rows = Sha256AssignedRows::new(0); - let hashes = self.assign_with_region(&mut region, witness, &mut assigned_rows)?; - - Ok(hashes) - }, - ) + Ok(hashes.pop().unwrap().try_into().unwrap()) } pub fn assign_with_region( @@ -780,7 +623,7 @@ impl Sha256CircuitConfig { region: &mut Region<'_, F>, witness: &[ShaRow], assigned_rows: &mut Sha256AssignedRows, - ) -> Result>, Error> { + ) -> Result; NUM_BYTES_FINAL_HASH]>, Error> { self.annotate_columns_in_region(region); let vec_vecs = witness .iter() @@ -788,7 +631,9 @@ impl Sha256CircuitConfig { .collect::, Error>>()?; let filtered = vec_vecs .into_iter() - .filter(|row| !row.hash_bytes.is_empty()) + .filter_map(|hash_bytes| { + (!hash_bytes.is_empty()).then(|| hash_bytes.try_into().unwrap()) + }) .collect_vec(); Ok(filtered) } @@ -798,7 +643,7 @@ impl Sha256CircuitConfig { region: &mut Region<'_, F>, row: &ShaRow, assigned_rows: &mut Sha256AssignedRows, - ) -> Result, Error> { + ) -> Result>, Error> { let offset = assigned_rows.offset; assigned_rows.offset += 1; let round = offset % (NUM_ROUNDS + 8); @@ -872,13 +717,6 @@ impl Sha256CircuitConfig { [self.is_final].as_slice(), [row.is_final].as_slice(), ), - // feature: [multi input lookups] - ( - "is_right", - [self.is_right].as_slice(), - [row.is_right].as_slice(), - ), - // end ] { for (idx, (value, column)) in values.iter().zip(columns.iter()).enumerate() { region.assign_advice( @@ -927,86 +765,42 @@ impl Sha256CircuitConfig { )?; } - // feature: [multi input lookups] - region.assign_advice( - || format!("assign rnd pow {}", offset), - self.rnd_pow, - offset, - || Value::known(row.rnd_pow), - )?; - // end - - // feature: [lookup by value] - for i in 0..2 { - region.assign_advice( - || format!("assign u8_pow[{i}] pow {}", offset), - self.u8_pow[i], - offset, - || Value::known(row.u8_pow[i]), - )?; - region.assign_advice( - || format!("assign is_rlc[{i}] {}", offset), - self.is_rlc[i], - offset, - || Value::known(F::from(row.is_rlc[i] as u64)), - )?; - region.assign_advice( - || format!("assign input_rlcs[{i}] {}", offset), - self.input_rlcs[i], - offset, - || Value::known(row.chunks_rlc[i]), - )?; - } - - region.assign_advice( - || format!("assign is_left_value {}", offset), - self.is_left_value, - offset, - || Value::known(F::from((!row.is_rlc[0] && !row.is_right) as u64)), - )?; - region.assign_advice( - || format!("assign is_right_value {}", offset), - self.is_right_value, - offset, - || Value::known(F::from((!row.is_rlc[1] && row.is_right) as u64)), - )?; - // end - // Hash data - let [is_final, input_left, input_right, input_rlc, input_len, output_rlc] = - self.hash_table.assign_row( - region, + let [is_final, input_rlc, input_len, output_rlc] = [ + ( + self.is_enabled, + F::from(row.is_final && round == NUM_ROUNDS + 7), + ), + (self.input_rlc, row.data_rlc), + (self.input_len, F::from(row.length as u64)), + (self.hash_rlc, row.hash_rlc), + ] + .map(|(column, value)| { + let cell = region.assign_advice( + || format!("assign {}", offset), + column, offset, - [ - Value::known(F::from(row.is_final && round == NUM_ROUNDS + 7)), - if row.is_rlc[0] { - Value::known(row.chunks_rlc[0]) - } else { - Value::known(row.chunks_val[0]) - }, - if row.is_rlc[1] { - Value::known(row.chunks_rlc[1]) - } else { - Value::known(row.chunks_val[1]) - }, - Value::known(row.data_rlc), - Value::known(F::from(row.length as u64)), - Value::known(row.hash_rlc), - ], - )?; + || Value::known(value), + ); + cell.map(|cell| AssignedValueCell { + cell: cell.cell(), + value, + }) + .unwrap() + }); if (4..20).contains(&round) { assigned_rows.padding_selectors.push(padding_selectors); - assigned_rows.input_rlc.push(input_rlc.clone()); + assigned_rows.input_rlc.push(input_rlc); } if row.is_final && round == NUM_ROUNDS + 7 { - assigned_rows.output_rlc.push(output_rlc.clone()); + assigned_rows.output_rlc.push(output_rlc); } if round == NUM_ROUNDS + 7 { - assigned_rows.is_final.push(is_final.clone()); - assigned_rows.input_len.push(input_len.clone()); + assigned_rows.is_final.push(is_final); + assigned_rows.input_len.push(input_len); } let mut hash_cells = Vec::with_capacity(NUM_BYTES_FINAL_HASH); @@ -1035,14 +829,7 @@ impl Sha256CircuitConfig { } } - Ok(Sha256TableAssignedRow { - is_enabled: is_final, - input_len, - input_chunks: [input_left, input_right], - input_rlc, - hash_rlc: output_rlc, - hash_bytes: hash_cells, - }) + Ok(hash_cells) } pub fn annotations(&self) -> Vec<(Column, String)> { @@ -1061,10 +848,10 @@ impl Sha256CircuitConfig { (self.round_cst.into(), "round_cst".to_string()), (self.h_a.into(), "h_a".to_string()), (self.h_e.into(), "h_e".to_string()), - (self.is_right.into(), "is_right".to_string()), - (self.rnd_pow.into(), "rnd_pow".to_string()), - (self.is_left_value.into(), "is_left_value".to_string()), - (self.is_right_value.into(), "is_right_value".to_string()), + (self.is_enabled.into(), "is_enabled".to_string()), + (self.input_len.into(), "input_len".to_string()), + (self.input_rlc.into(), "input_rlc".to_string()), + (self.hash_rlc.into(), "hash_rlc".to_string()), ]; for (i, col) in self.word_w.iter().copied().enumerate() { @@ -1082,18 +869,9 @@ impl Sha256CircuitConfig { for (i, col) in self.data_rlcs.iter().copied().enumerate() { annotations.push((col.into(), format!("data_rlcs_{}", i))); } - for (i, col) in self.u8_pow.iter().copied().enumerate() { - annotations.push((col.into(), format!("u8_pow_{}", i))); - } for (i, col) in self.final_hash_bytes.iter().copied().enumerate() { annotations.push((col.into(), format!("final_hash_bytes_{}", i))); } - for (i, col) in self.is_rlc.iter().copied().enumerate() { - annotations.push((col.into(), format!("is_rlc{}", i))); - } - for (i, col) in self.input_rlcs.iter().copied().enumerate() { - annotations.push((col.into(), format!("input_rlcs_{}", i))); - } annotations } @@ -1102,120 +880,3 @@ impl Sha256CircuitConfig { F::from_u128(0xca9d6022267d3bd658bf) } } - -#[derive(Clone, Debug)] -pub struct Sha256Circuit<'a, F: Field> { - pub inputs: &'a [HashInput], - _marker: PhantomData, -} - -impl<'a, F: Field> Sha256Circuit<'a, F> { - /// Make the assignments to the KeccakCircuit - fn synthesize_sub( - &self, - config: &Sha256CircuitConfig, - challenges: &Challenges>, - layouter: &mut impl Layouter, - ) -> Result>, Error> { - let witness = Self::generate_witness(self.inputs, *challenges); - config.assign(layouter, witness.as_slice()) - } -} - -impl<'a, F: Field> Sha256Circuit<'a, F> { - /// Creates a new circuit instance - pub fn new(inputs: &'a Vec>) -> Self { - Sha256Circuit { - inputs, - _marker: PhantomData, - } - } - - /// Sets the witness using the data to be hashed - pub(crate) fn generate_witness( - inputs: &'a [HashInput], - challenges: Challenges>, - ) -> Vec> { - multi_sha256(inputs, Sha256CircuitConfig::fixed_challenge()) - } -} - -#[cfg(test)] -mod tests { - use std::fs; - - use super::*; - use halo2_proofs::{ - circuit::SimpleFloorPlanner, dev::MockProver, halo2curves::bn256::Fr, plonk::Circuit, - }; - - use eth_types::Test as S; - - #[derive(Debug, Clone)] - struct TestSha256<'a, F: Field> { - inner: Sha256Circuit<'a, F>, - } - - impl<'a, F: Field> Circuit for TestSha256<'a, F> { - type Config = (Sha256CircuitConfig, Challenges>); - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - unimplemented!() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let hash_table = Sha256Table::construct(meta); - ( - Sha256CircuitConfig::new::(meta, hash_table), - Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), - ) - } - - fn synthesize( - &self, - mut config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - self.inner - .synthesize_sub(&config.0, &config.1, &mut layouter)?; - Ok(()) - } - } - - #[test] - fn test_sha256_single() { - let k = 11; - let inputs = vec![vec![0u8; 64].into(); 1]; - let circuit = TestSha256:: { - inner: Sha256Circuit::new(&inputs), - }; - - let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - #[test] - fn test_sha256_two2one_simple() { - let k = 11; - let inputs = vec![(vec![1u8; 32], vec![1u8; 32],).into(); 1]; - let circuit = TestSha256:: { - inner: Sha256Circuit::new(&inputs), - }; - - let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - #[test] - fn test_sha256_two2one_val_and_rlc() { - let k = 10; - let inputs = vec![(vec![vec![2u8; 4], vec![0u8; 28]].concat(), vec![3u8; 4],).into(); 1]; - let circuit = TestSha256:: { - inner: Sha256Circuit::new(&inputs), - }; - - let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } -} diff --git a/lightclient-circuits/src/sha256_circuit/util.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs similarity index 100% rename from lightclient-circuits/src/sha256_circuit/util.rs rename to lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs diff --git a/lightclient-circuits/src/sha256_circuit/sha256_bit.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/witness.rs similarity index 80% rename from lightclient-circuits/src/sha256_circuit/sha256_bit.rs rename to lightclient-circuits/src/gadget/crypto/sha256_wide/witness.rs index 734dc10b..8608c820 100644 --- a/lightclient-circuits/src/sha256_circuit/sha256_bit.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/witness.rs @@ -17,31 +17,12 @@ pub struct ShaRow { pub(crate) is_paddings: [bool; ABSORB_WIDTH_PER_ROW_BYTES], pub(crate) intermediary_data_rlcs: [F; ABSORB_WIDTH_PER_ROW_BYTES], pub(crate) final_hash_bytes: [F; NUM_BYTES_FINAL_HASH], - // feature: [multi input lookups] - pub(crate) chunks_rlc: [F; 2], - pub(crate) rnd_pow: F, - // feature: [lookups by value] - pub(crate) u8_pow: [F; 2], - pub(crate) chunks_val: [F; 2], - pub(crate) is_rlc: [bool; 2], - // end } pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, is_rlc: [bool; 2]) { // Prepare inputs RLCs in advance let mut inputs_rlc = inputs.map(|input| rlc::value(input, rnd)); - // feature: [lookups by value] - let two = F::from(2); - let f256 = two.pow_const(8); - let mut inputs_vals = [F::zero(), F::zero()]; - for (idx, _) in inputs.iter().enumerate() { - for (i, &byte) in inputs[idx].iter().take(32).enumerate() { - inputs_vals[idx] += F::from(byte as u64) * two.pow_const(i * 8); - } - } - // end - let left_bits = into_bits(inputs[0]); let right_bits = into_bits(inputs[1]); let input_len = inputs[0].len() + inputs[1].len(); @@ -83,13 +64,7 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, hash_rlc, is_paddings, intermediary_data_rlcs, - final_hash_bytes, - // feature: [multi input lookups] - chunks_rlc, - rnd_pow: F, - // feature: [lookups by value] - u8_pow: [F; 2], - chunks_val: [F; 2]| { + final_hash_bytes| { let word_to_bits = |value: u64, num_bits: usize| { into_bits(&value.to_be_bytes())[64 - num_bits..64] .iter() @@ -109,11 +84,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, is_paddings, intermediary_data_rlcs, final_hash_bytes, - chunks_rlc, - rnd_pow, - u8_pow, - chunks_val, - is_rlc, }); }; @@ -138,10 +108,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, [false, false, false, in_padding], [F::zero(); ABSORB_WIDTH_PER_ROW_BYTES], [F::zero(); NUM_BYTES_FINAL_HASH], - [F::zero(); 2], - rnd_pow, - u8_pow, - data_vals, ) }; add_row_start(d, h, idx == 0); @@ -172,27 +138,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, { if !*padding { data_rlc = data_rlc * rnd + F::from(*byte as u64); - // feature: [multi input lookups] - if length == inputs[0].len() { - rnd_pow = F::one(); - u8_pow[1] = F::one(); - } - if length > inputs[0].len() { - is_right = true; - rnd_pow *= rnd; - u8_pow[0] = F::zero(); - } - // end - // feature: [lookups by value] - if length <= input_len { - data_vals[0] += u8_pow[0] * F::from(*byte as u64); - data_vals[1] += u8_pow[1] * F::from(*byte as u64); - u8_pow[0] *= f256; - if length - 4 + idx >= inputs[0].len() { - u8_pow[1] *= f256; - } - } - // end } if idx < inter_data_rlcs.len() - 1 { inter_data_rlcs[idx + 1] = data_rlc; @@ -255,10 +200,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, is_paddings, inter_data_rlcs, [F::zero(); NUM_BYTES_FINAL_HASH], - [F::zero(); 2], - rnd_pow, - u8_pow, - data_vals, ); // Truncate the newly calculated values @@ -314,10 +255,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, [false; ABSORB_WIDTH_PER_ROW_BYTES], [F::zero(); ABSORB_WIDTH_PER_ROW_BYTES], [F::zero(); NUM_BYTES_FINAL_HASH], - [F::zero(); 2], - rnd_pow, - u8_pow, - [F::zero(); 2], ) }; add_row_end(hs[3], hs[7]); @@ -336,10 +273,6 @@ pub fn sha256(rows: &mut Vec>, inputs: &[&[u8]; 2], rnd: F, [false, false, false, in_padding], [F::zero(); ABSORB_WIDTH_PER_ROW_BYTES], final_hash_bytes, - inputs_rlc, - rnd_pow, - u8_pow, - data_vals, ); // Now truncate the results diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index f7137da9..ef7f609e 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -8,13 +8,11 @@ #![feature(generic_arg_infer)] #![feature(return_position_impl_trait_in_trait)] #![allow(unused, clippy::uninlined_format_args, clippy::needless_range_loop)] -pub(crate) mod gadget; -pub mod table; +pub mod gadget; pub mod util; pub mod witness; pub mod committee_update_circuit; -mod sha256_circuit; pub mod sync_step_circuit; mod poseidon; diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 16f59640..7033a4ee 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -17,9 +17,7 @@ use crate::{ HashToCurveChip, Sha256Chip, ShaCircuitBuilder, ShaThreadBuilder, }, poseidon::{g1_array_poseidon, poseidon_sponge}, - sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, - table::Sha256Table, util::{ decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, }, @@ -344,7 +342,6 @@ mod tests { use crate::{ builder::Eth2CircuitBuilder, - table::Sha256Table, util::{full_prover, full_verifier, gen_pkey}, witness::{SyncStepArgs, Validator}, }; diff --git a/lightclient-circuits/src/table.rs b/lightclient-circuits/src/table.rs deleted file mode 100644 index 030adabc..00000000 --- a/lightclient-circuits/src/table.rs +++ /dev/null @@ -1,71 +0,0 @@ -use eth_types::Field; - -use halo2_proofs::{ - circuit::{Layouter, Region, Value}, - plonk::{Advice, Column, ConstraintSystem, Error, *}, - poly::Rotation, -}; - -pub(crate) mod sha256_table; - -pub(crate) use sha256_table::Sha256Table; - -/// Trait used to define lookup tables -pub trait LookupTable { - /// Returns the list of ALL the table columns following the table order. - fn columns(&self) -> Vec>; - - /// Returns the list of ALL the table advice columns following the table - /// order. - fn advice_columns(&self) -> Vec> { - self.columns() - .iter() - .map(|&col| col.try_into()) - .filter_map(|res| res.ok()) - .collect() - } - - /// Returns the String annotations associated to each column of the table. - fn annotations(&self) -> Vec; - - /// Return the list of expressions used to define the lookup table. - fn table_exprs(&self, meta: &mut VirtualCells) -> Vec> { - self.columns() - .iter() - .map(|&column| meta.query_any(column, Rotation::cur())) - .collect() - } - - /// Annotates a lookup table by passing annotations for each of it's - /// columns. - fn annotate_columns(&self, meta: &mut ConstraintSystem) { - self.columns() - .iter() - .zip(self.annotations().iter()) - .for_each(|(&col, ann)| meta.annotate_lookup_any_column(col, || ann)) - } - - /// Annotates columns of a table embedded within a circuit region. - fn annotate_columns_in_region(&self, region: &mut Region) { - self.columns() - .iter() - .zip(self.annotations().iter()) - .for_each(|(&col, ann)| region.name_column(|| ann, col)) - } -} - -impl> + Copy, const W: usize> LookupTable for [C; W] { - fn table_exprs(&self, meta: &mut VirtualCells) -> Vec> { - self.iter() - .map(|column| meta.query_any(*column, Rotation::cur())) - .collect() - } - - fn columns(&self) -> Vec> { - self.iter().map(|&col| col.into()).collect() - } - - fn annotations(&self) -> Vec { - vec![] - } -} diff --git a/lightclient-circuits/src/table/sha256_table.rs b/lightclient-circuits/src/table/sha256_table.rs deleted file mode 100644 index 9f3d7593..00000000 --- a/lightclient-circuits/src/table/sha256_table.rs +++ /dev/null @@ -1,229 +0,0 @@ -use super::*; -use crate::{gadget::rlc, util::AssignedValueCell, witness::HashInput}; -use halo2_base::utils::value_to_option; -use halo2_proofs::circuit::AssignedCell; -use itertools::Itertools; -use sha2::Digest; - -/// Keccak Table, used to verify keccak hashing from RLC'ed input. -#[derive(Clone, Debug)] -pub struct Sha256Table { - /// True when the row is enabled - pub is_enabled: Column, - /// Byte array input parts as `RLC(input[i])` - pub input_chunks: [Column; 2], - /// Byte array first input as `RLC(input[i])` - pub input_rlc: Column, - /// Length of first+second inputs - pub input_len: Column, - /// RLC of the hash result - pub hash_rlc: Column, -} - -#[derive(Clone, Debug)] -pub struct Sha256TableAssignedRow { - /// True when the row is enabled - pub is_enabled: AssignedValueCell, - /// Byte array input parts as `RLC(input[i])` - pub input_chunks: [AssignedValueCell; 2], - /// Byte array first input as `RLC(input[i])` - pub input_rlc: AssignedValueCell, - /// Length of first+second inputs - pub input_len: AssignedValueCell, - /// RLC of the hash result - pub hash_rlc: AssignedValueCell, - - pub hash_bytes: Vec>, -} - -impl LookupTable for Sha256Table { - fn columns(&self) -> Vec> { - vec![ - self.is_enabled.into(), - self.input_chunks[0].into(), - self.input_chunks[1].into(), - self.input_rlc.into(), - self.input_len.into(), - self.hash_rlc.into(), - ] - } - - fn annotations(&self) -> Vec { - vec![ - String::from("is_enabled"), - String::from("left_chunk"), - String::from("right_chunk"), - String::from("input_rlc"), - String::from("input_len"), - String::from("hash_rlc"), - ] - } -} - -impl Sha256Table { - /// Construct a new KeccakTable - pub fn construct(meta: &mut ConstraintSystem) -> Self { - let config = Self { - is_enabled: meta.advice_column(), - input_chunks: [ - meta.advice_column_in(SecondPhase), - meta.advice_column_in(SecondPhase), - ], - input_rlc: meta.advice_column_in(SecondPhase), - input_len: meta.advice_column(), - hash_rlc: meta.advice_column_in(SecondPhase), - }; - - for column in config.input_chunks { - meta.enable_equality(column); - } - - meta.enable_equality(config.hash_rlc); - - config - } - - /// Assign a table row for keccak table - pub fn assign_row( - &self, - region: &mut Region, - offset: usize, - values: [Value; 6], - ) -> Result<[AssignedValueCell; 6], Error> { - >::advice_columns(self) - .iter() - .zip(values.iter()) - .map(|(&column, value)| { - let cell = region.assign_advice( - || format!("assign {}", offset), - column, - offset, - || *value, - ); - cell.map(|cell| AssignedValueCell { - cell: cell.cell(), - value: value_to_option(*value).unwrap(), - }) - }) - .collect::, _>>() - .map(|res| res.try_into().unwrap()) - } - - pub fn build_lookup( - &self, - meta: &mut VirtualCells<'_, F>, - enable: Expression, - fst: Expression, - snd: Expression, - hash: Expression, - ) -> Vec<(Expression, Expression)> { - vec![ - ( - enable.clone(), - meta.query_advice(self.is_enabled, Rotation::cur()), - ), - ( - enable.clone() * fst, - meta.query_advice(self.input_chunks[0], Rotation::cur()), - ), - ( - enable.clone() * snd, - meta.query_advice(self.input_chunks[1], Rotation::cur()), - ), - ( - enable * hash, - meta.query_advice(self.hash_rlc, Rotation::cur()), - ), - ] - } - - /// Load sha256 table without running the full sha256 circuit. - pub fn dev_load<'a, F: Field>( - &self, - layouter: &mut impl Layouter, - inputs: impl IntoIterator> + Clone, - challenge: Value, - ) -> Result<(), Error> { - layouter.assign_region( - || "sha256 table", - |mut region| { - self.annotate_columns_in_region(&mut region); - - let sha256_table_columns = >::advice_columns(self); - for (offset, input) in inputs.clone().into_iter().enumerate() { - let row = Self::assignments_dev(input, challenge); - - for (&column, value) in sha256_table_columns.iter().zip_eq(row) { - region.assign_advice( - || format!("sha256 table row {}", offset), - column, - offset, - || value, - )?; - } - } - Ok(()) - }, - ) - } - - /// Generate the sha256 table assignments from a byte array input. - fn assignments_dev(input: &HashInput, challenge: Value) -> [Value; 6] { - let (input_chunks, input_rlc, preimage) = match input { - HashInput::Single(inner) => { - let input_rlc = if inner.is_rlc { - challenge.map(|randomness| rlc::value(&inner.bytes, randomness)) - } else { - Value::known(F::from_bytes_le_unsecure(&inner.bytes)) - }; - - ( - [input_rlc, Value::known(F::zero())], - input_rlc, - inner.bytes.clone(), - ) - } - HashInput::TwoToOne(left, right) => { - let chunk_rlcs = [ - challenge.map(|randomness| rlc::value(&left.bytes, randomness)), - challenge.map(|randomness| rlc::value(&right.bytes, randomness)), - ]; - let chunk_vals = [ - F::from_bytes_le_unsecure(&left.bytes), - F::from_bytes_le_unsecure(&right.bytes), - ]; - let preimage = input.clone().to_vec(); - let input_rlc = challenge.map(|randomness| rlc::value(&preimage, randomness)); - - let input_chunks = [ - if left.is_rlc { - chunk_rlcs[0] - } else { - Value::known(chunk_vals[0]) - }, - if right.is_rlc { - chunk_rlcs[1] - } else { - Value::known(chunk_vals[1]) - }, - ]; - - (input_chunks, input_rlc, preimage) - } - }; - - let input_len = F::from(preimage.len() as u64); - - let output = sha2::Sha256::digest(preimage).to_vec(); - let output_rlc = challenge.map(|randomness| rlc::value(&output, randomness)); - - [ - Value::known(F::one()), - input_chunks[0], - input_chunks[1], - input_rlc, - Value::known(input_len), - output_rlc, - ] - } -} diff --git a/lightclient-circuits/src/util.rs b/lightclient-circuits/src/util.rs index 3d096a97..cf90da9a 100644 --- a/lightclient-circuits/src/util.rs +++ b/lightclient-circuits/src/util.rs @@ -35,7 +35,6 @@ use crate::{ crypto::{Fp2Point, FpPoint}, Expr, }, - sha256_circuit::Sha256CircuitConfig, witness, }; use eth_types::*; @@ -71,7 +70,11 @@ pub trait AppCircuitExt: Default { fn setup( k: usize, out: Option<&Path>, - ) -> (ParamsKZG, ProvingKey, MultiPhaseThreadBreakPoints); + ) -> ( + ParamsKZG, + ProvingKey, + MultiPhaseThreadBreakPoints, + ); } /// Randomness used in circuits. diff --git a/lightclient-circuits/src/witness/state.rs b/lightclient-circuits/src/witness/state.rs index 535be9e7..f3f30874 100644 --- a/lightclient-circuits/src/witness/state.rs +++ b/lightclient-circuits/src/witness/state.rs @@ -1,8 +1,6 @@ use std::iter; use std::marker::PhantomData; -use crate::sha256_circuit::Sha256CircuitConfig; - use super::{HashInput, Validator}; use eth_types::{Field, Spec}; use ethereum_consensus::bellatrix::mainnet; From dcd63ffda4cd7299b904fefb5a2bef5516228af8 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Sun, 10 Sep 2023 15:27:51 +0200 Subject: [PATCH 12/33] add ShaWide thread builder --- lightclient-circuits/src/builder.rs | 2 +- .../src/gadget/crypto/builder.rs | 2 +- .../src/gadget/crypto/hash2curve.rs | 2 +- lightclient-circuits/src/gadget/crypto/mod.rs | 6 +- .../src/gadget/crypto/sha256.rs | 4 +- .../src/gadget/crypto/sha256/builder.rs | 46 +- .../src/gadget/crypto/sha256/compression.rs | 2 + .../src/gadget/crypto/sha256/spread.rs | 2 + .../src/gadget/crypto/sha256_wide.rs | 671 +++++++++--------- .../src/gadget/crypto/sha256_wide/builder.rs | 208 ++++++ .../src/gadget/crypto/sha256_wide/config.rs | 577 ++++++++------- .../src/gadget/crypto/sha256_wide/util.rs | 21 +- lightclient-circuits/src/lib.rs | 1 + lightclient-circuits/src/ssz_merkle.rs | 14 +- lightclient-circuits/src/sync_step_circuit.rs | 2 +- lightclient-circuits/src/util/common.rs | 18 + 16 files changed, 950 insertions(+), 628 deletions(-) create mode 100644 lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index 2faa0f51..d9000ef2 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -8,7 +8,7 @@ use halo2_proofs::{ plonk::{Circuit, Column, ConstraintSystem, Error, Instance}, }; -use crate::gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}; +use crate::{gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}, util::BaseThreadBuilder}; #[derive(Clone, Debug)] /// Config shared for block header and storage proof circuits diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index df30e048..e0959d0a 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -18,7 +18,7 @@ use halo2_proofs::{ }; use snark_verifier_sdk::CircuitExt; -use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; +use crate::{gadget::crypto::{Sha256Chip, ShaThreadBuilder}, util::BaseThreadBuilder}; use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index bd2a7a5c..5591d2e6 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -4,7 +4,7 @@ use std::ops::Deref; use std::{cell::RefCell, iter, marker::PhantomData}; -use crate::util::AsBits; +use crate::util::{AsBits, BaseThreadBuilder}; use crate::{ util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, witness::HashInput, diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index d93cdcc4..22388277 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -18,7 +18,7 @@ pub use hash2curve::{HashToCurveCache, HashToCurveChip}; pub use sha256::{Sha256Chip, ShaContexts, ShaThreadBuilder}; pub use sha256_wide::*; -use crate::witness::HashInput; +use crate::{witness::HashInput, util::BaseThreadBuilder}; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; pub type G1Point = EcPoint>; @@ -30,7 +30,7 @@ pub type G1Chip<'chip, F> = EccChip<'chip, F, FpChip<'chip, F>>; #[allow(type_alias_bounds)] pub type G2Chip<'chip, F> = EccChip<'chip, F, Fp2Chip<'chip, F>>; -pub trait HashInstructions { +pub trait HashInstructions = ShaThreadBuilder> { const BLOCK_SIZE: usize; const DIGEST_SIZE: usize; @@ -39,7 +39,7 @@ pub trait HashInstructions { /// `strict` flag indicates whether to perform range check on input bytes. fn digest( &self, - thread_pool: &mut ShaThreadBuilder, + thread_pool: &mut ThreadBuilder, input: HashInput>, strict: bool, ) -> Result, Error>; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 64a97e7e..f9179107 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -17,7 +17,7 @@ use std::collections::HashMap; use std::{cell::RefCell, char::MAX}; use crate::gadget::crypto::sha256::compression::{sha256_compression, INIT_STATE}; -use crate::util::AssignedValueCell; +use crate::util::{AssignedValueCell, BaseThreadBuilder}; use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; use halo2_base::QuantumCell; @@ -44,7 +44,7 @@ pub struct Sha256Chip<'a, F: Field> { spread: SpreadChip<'a, F>, } -impl<'a, F: Field> HashInstructions for Sha256Chip<'a, F> { +impl<'a, F: Field> HashInstructions> for Sha256Chip<'a, F> { const BLOCK_SIZE: usize = 64; const DIGEST_SIZE: usize = 32; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 876c1c3c..052247d9 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -18,6 +18,8 @@ use halo2_proofs::{ }; use itertools::Itertools; +use crate::util::BaseThreadBuilder; + use super::SpreadConfig; pub const FIRST_PHASE: usize = 0; @@ -65,11 +67,7 @@ impl ShaThreadBuilder { self.gate_builder = self.gate_builder.unknown(use_unknown); self } - - pub fn main(&mut self) -> &mut Context { - self.gate_builder.main(FIRST_PHASE) - } - + pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { if self.threads_dense.is_empty() { self.new_thread_dense(); @@ -86,22 +84,6 @@ impl ShaThreadBuilder { ) } - pub fn witness_gen_only(&self) -> bool { - self.gate_builder.witness_gen_only() - } - - pub fn use_unknown(&self) -> bool { - self.gate_builder.use_unknown() - } - - pub fn thread_count(&self) -> usize { - self.gate_builder.thread_count() - } - - pub fn get_new_thread_id(&mut self) -> usize { - self.gate_builder.get_new_thread_id() - } - pub fn new_thread_dense(&mut self) -> &mut Context { let thread_id = self.get_new_thread_id(); self.threads_dense @@ -176,6 +158,28 @@ impl ShaThreadBuilder { } } +impl BaseThreadBuilder for ShaThreadBuilder { + fn main(&mut self) -> &mut Context { + self.gate_builder.main(FIRST_PHASE) + } + + fn witness_gen_only(&self) -> bool { + self.gate_builder.witness_gen_only() + } + + fn use_unknown(&self) -> bool { + self.gate_builder.use_unknown() + } + + fn thread_count(&self) -> usize { + self.gate_builder.thread_count() + } + + fn get_new_thread_id(&mut self) -> usize { + self.gate_builder.get_new_thread_id() + } +} + /// Pure advice witness assignment in a single phase. Uses preprocessed `break_points` to determine when /// to split a thread into a new column. #[allow(clippy::type_complexity)] diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index 06673505..483761a2 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -1,5 +1,7 @@ use std::cell::RefMut; +use crate::util::BaseThreadBuilder; + use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::spread::{self, SpreadChip, SpreadConfig}; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 1134f2b2..e0e1c5fa 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -1,5 +1,7 @@ use std::marker::PhantomData; +use crate::util::BaseThreadBuilder; + use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::{compression::SpreadU32, util::*}; diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index e955edf3..7fe4c35a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -1,6 +1,7 @@ +mod builder; mod config; -mod witness; mod util; +mod witness; use eth_types::Field; use ff::PrimeField; @@ -8,11 +9,14 @@ use halo2_base::gates::builder::KeygenAssignments; use halo2_proofs::circuit::Value; use itertools::Itertools; use std::collections::HashMap; +use std::iter; +use std::os::unix::thread; use std::{cell::RefCell, char::MAX}; use crate::gadget::crypto::sha256_wide::util::Sha256AssignedRows; +use crate::gadget::crypto::sha256_wide::witness::multi_sha256; use crate::gadget::rlc; -use crate::util::AssignedValueCell; +use crate::util::{AssignedValueCell, BaseThreadBuilder}; use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; @@ -27,7 +31,9 @@ use halo2_proofs::{ plonk::{Assigned, Error}, }; -use self::config::Sha256WideConfig; +use self::builder::ShaBitThreadBuilder; +use self::config::Sha256BitConfig; +use self::util::{NUM_BYTES_FINAL_HASH, NUM_WORDS_TO_ABSORB}; use super::{AssignedHashResult, HashInstructions}; @@ -35,28 +41,37 @@ const SHA256_CONTEXT_ID: usize = usize::MAX; #[derive(Debug)] pub struct Sha256ChipWide<'a, F: Field> { - config: &'a Sha256WideConfig, range: &'a RangeChip, randomness: F, - extra_assignments: RefCell>, - sha256_circuit_offset: RefCell, } -impl<'a, F: Field> Sha256ChipWide<'a, F> { +#[derive(Clone, Debug)] +pub struct AssignedSha256Round { + /// Whether the row is final. + pub is_final: AssignedValue, + /// Input length at the row. + pub input_len: AssignedValue, + /// Input words at the row. + pub input_rlcs: [AssignedValue; NUM_WORDS_TO_ABSORB], + /// Whether the row is padding. + pub padding_selectors: [[AssignedValue; 4]; NUM_WORDS_TO_ABSORB], + /// Output words at the row. + pub output_rlc: AssignedValue, +} + +impl<'a, F: Field> HashInstructions> for Sha256ChipWide<'a, F> { const BLOCK_SIZE: usize = 64; const DIGEST_SIZE: usize = 32; fn digest( &self, + thread_pool: &mut ShaBitThreadBuilder, input: HashInput>, - ctx: &mut Context, - region: &mut Region<'_, F>, + strict: bool, ) -> Result, Error> { let binary_input: HashInput = input.clone().into(); - let assigned_input = input.into_assigned(ctx); + let assigned_input = input.into_assigned(thread_pool.main()); - let mut extra_assignment = self.extra_assignments.borrow_mut(); - let assigned_advices = &mut extra_assignment.assigned_advices; let mut assigned_input_bytes = assigned_input.to_vec(); let rnd = QuantumCell::Constant(self.randomness); let input_byte_size = assigned_input_bytes.len(); @@ -66,21 +81,11 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { let gate = &range.gate; assert!(assigned_input_bytes.len() <= MAX_INPUT_SIZE); - let mut circuit_offset = self.sha256_circuit_offset.borrow_mut(); - let mut assigned_rows = Sha256AssignedRows::new(*circuit_offset); - let assigned_hash_bytes = - self.config - .digest_with_region(region, binary_input, &mut assigned_rows)?; - *circuit_offset = assigned_rows.offset; - let mut offset = assigned_advices - .keys() - .filter(|(ctx_id, offset)| ctx_id == &SHA256_CONTEXT_ID) - .map(|(ctx_id, offset)| *offset + 1) - .max() - .unwrap_or(0); - // TODO: use upload_assigned_cells instead of assigned_cell2value? - let assigned_output = assigned_hash_bytes.map(|cell| self.assigned_cell2value(ctx, &cell)); + let mut assigned_rounds = vec![]; + let assigned_output = + self.load_digest::(thread_pool, binary_input, &mut assigned_rounds)?; + let one_round_size = Self::BLOCK_SIZE; let num_round = 1; @@ -93,7 +98,7 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { let zero_padding_byte_size = padded_size - input_byte_size; let max_round = max_byte_size / one_round_size; - let mut assign_byte = |byte: u8| ctx.load_witness(F::from(byte as u64)); + let mut assign_byte = |byte: u8| thread_pool.main().load_witness(F::from(byte as u64)); for _ in 0..zero_padding_byte_size { assigned_input_bytes.push(assign_byte(0u8)); @@ -102,78 +107,49 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { assert_eq!(assigned_input_bytes.len(), num_round * one_round_size); for &assigned in assigned_input_bytes.iter() { - range.range_check(ctx, assigned, 8); + range.range_check(thread_pool.main(), assigned, 8); } - let zero = ctx.load_zero(); + let zero = thread_pool.main().load_zero(); let mut full_input_len = zero; let mut cur_input_rlc = zero; + let ctx_gate = thread_pool.main(); for round_idx in 0..max_round { - let input_len = self.assigned_cell2value(ctx, &assigned_rows.input_len[round_idx]); - - let input_rlcs = { - let input_rlc_cells = - assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)].iter(); - self.upload_assigned_cells( - input_rlc_cells, - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - }; - - let padding_selectors = assigned_rows.padding_selectors - [16 * round_idx..16 * (round_idx + 1)] - .iter() - .map(|cells| { - self.upload_assigned_cells( - cells, - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - .try_into() - .unwrap() - }) - .collect::>(); - - let [is_output_enabled, output_rlc]: [_; 2] = self - .upload_assigned_cells( - [ - &assigned_rows.is_final[round_idx], - &assigned_rows.output_rlc[0], - ], - &mut offset, - assigned_advices, - ctx.witness_gen_only(), - ) - .try_into() - .unwrap(); - full_input_len = { - let muled = gate.mul(ctx, is_output_enabled, input_len); - gate.add(ctx, full_input_len, muled) + let muled = gate.mul( + ctx_gate, + assigned_rounds[round_idx].is_final, + assigned_rounds[round_idx].input_len, + ); + gate.add(ctx_gate, full_input_len, muled) }; - for word_idx in 0..16 { + for word_idx in 0..NUM_WORDS_TO_ABSORB { let offset_in = 64 * round_idx + 4 * word_idx; let assigned_input_u32 = &assigned_input_bytes[offset_in..(offset_in + 4)]; for (idx, &assigned_byte) in assigned_input_u32.iter().enumerate() { - let tmp = gate.mul_add(ctx, cur_input_rlc, rnd, assigned_byte); - cur_input_rlc = - gate.select(ctx, cur_input_rlc, tmp, padding_selectors[word_idx][idx]); + let tmp = gate.mul_add(ctx_gate, cur_input_rlc, rnd, assigned_byte); + cur_input_rlc = gate.select( + ctx_gate, + cur_input_rlc, + tmp, + assigned_rounds[round_idx].padding_selectors[word_idx][idx], + ); } - ctx.constrain_equal(&cur_input_rlc, &input_rlcs[word_idx]); + ctx_gate.constrain_equal( + &cur_input_rlc, + &assigned_rounds[round_idx].input_rlcs[word_idx], + ); } - let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx); - ctx.constrain_equal(&hash_rlc, &output_rlc); + let hash_rlc = rlc::assigned_value(&assigned_output, &rnd, gate, ctx_gate); + ctx_gate.constrain_equal(&hash_rlc, &assigned_rounds[round_idx].output_rlc); } for &byte in assigned_output.iter() { - range.range_check(ctx, byte, 8); + range.range_check(ctx_gate, byte, 8); } Ok(AssignedHashResult { @@ -182,295 +158,304 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { }) } - /// Takes internal `KeygenAssignments` instance, leaving `Default::default()` in its place. - /// **Warning**: In case `extra_assignments` wasn't default at the time of chip initialization, - /// use `set_extra_assignments` to restore at the start of region declartion. - /// Otherwise at the second synthesis run, the setted `extra_assignments` will be erased. - fn take_extra_assignments(&self) -> KeygenAssignments { - self.extra_assignments.take() - } - fn range(&self) -> &RangeChip { self.range } } impl<'a, F: Field> Sha256ChipWide<'a, F> { - pub fn new( - config: &'a Sha256WideConfig, - range: &'a RangeChip, - randomness: Value, - extra_assignments: Option>, - sha256_circuit_offset: usize, - ) -> Self { + pub fn new(range: &'a RangeChip, randomness: Value) -> Self { Self { - config, range, randomness: value_to_option(randomness).expect("randomness is not assigned"), - extra_assignments: RefCell::new(extra_assignments.unwrap_or_default()), - sha256_circuit_offset: RefCell::new(sha256_circuit_offset), } } - fn set_extra_assignments(&mut self, extra_assignments: KeygenAssignments) { - self.extra_assignments = RefCell::new(extra_assignments); - } - - fn assigned_cell2value( + pub fn load_digest( &self, - ctx: &mut Context, - assigned_cell: &AssignedValueCell, - ) -> AssignedValue { - ctx.load_witness(assigned_cell.value()) - } - - fn upload_assigned_cells( - &self, - assigned_cells: impl IntoIterator>, - offset: &mut usize, - assigned_advices: &mut HashMap<(usize, usize), (circuit::Cell, usize)>, - witness_gen_only: bool, - ) -> Vec> { - let assigned_values = assigned_cells + thread_pool: &mut ShaBitThreadBuilder, + input: HashInput, + assigned_rounds: &mut Vec>, + ) -> Result<[AssignedValue; NUM_BYTES_FINAL_HASH], Error> { + let max_round = MAX_INPUT_SIZE / Self::BLOCK_SIZE; + + let mut assigned_rows = Sha256AssignedRows::new(); + let witness = multi_sha256(&[input], Sha256BitConfig::fixed_challenge()); + let vec_vecs = witness + .iter() + .map(|sha256_row| { + thread_pool + .sha_contexts() + .load_sha256_row(sha256_row, &mut assigned_rows) + }) + .collect::, Error>>()?; + let hashes: Vec<[_; NUM_BYTES_FINAL_HASH]> = vec_vecs .into_iter() - .enumerate() - .map(|(i, assigned_cell)| { - let value = Assigned::Trivial(assigned_cell.value); - - let aval = AssignedValue { - value, - cell: (!witness_gen_only).then_some(ContextCell { - context_id: SHA256_CONTEXT_ID, - offset: *offset + i, - }), - }; - if !witness_gen_only { - // we set row_offset = usize::MAX because you should never be directly using lookup on such a cell - assigned_advices.insert( - (SHA256_CONTEXT_ID, *offset + i), - (assigned_cell.cell(), usize::MAX), - ); - } - aval + .filter_map(|hash_bytes| { + (!hash_bytes.is_empty()).then(|| hash_bytes.try_into().unwrap()) }) - .collect_vec(); - *offset += assigned_values.len(); - assigned_values - } -} + .collect(); -#[cfg(test)] -mod test { - use std::vec; - use std::{cell::RefCell, marker::PhantomData}; - - use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use halo2_base::gates::range::RangeConfig; - use halo2_base::utils::fs::gen_srs; - use halo2_base::SKIP_FIRST_PASS; - use halo2_base::{ - gates::{builder::GateThreadBuilder, range::RangeStrategy}, - halo2_proofs::{ - circuit::{Layouter, SimpleFloorPlanner}, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, ConstraintSystem}, - }, - }; - use sha2::{Digest, Sha256}; - - #[derive(Debug, Clone)] - struct TestConfig { - sha256_config: Sha256WideConfig, - pub max_byte_size: usize, - range: RangeConfig, - challenges: Challenges>, - } - - #[derive(Debug, Clone)] - struct TestCircuit { - builder: RefCell>, - range: RangeChip, - test_input: HashInput>, - test_output: [u8; 32], - _f: PhantomData, - } - - impl Circuit for TestCircuit - where - [(); Self::MAX_BYTE_SIZE]:, - { - type Config = TestConfig; - type FloorPlanner = SimpleFloorPlanner; + assert_eq!(hashes.len(), 1); - fn without_witnesses(&self) -> Self { - unimplemented!() - } + let hash_sha = hashes[0]; - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let sha256_configs = Sha256WideConfig::::new::(meta); - let range = RangeConfig::configure( - meta, - RangeStrategy::Vertical, - &[Self::NUM_ADVICE], - &[Self::NUM_LOOKUP_ADVICE], - Self::NUM_FIXED, - Self::LOOKUP_BITS, - Self::K, - ); - Self::Config { - sha256_config: sha256_configs, - max_byte_size: Self::MAX_BYTE_SIZE, - range, - challenges: Challenges::mock(Value::known(Sha256WideConfig::fixed_challenge())), - } - } + let ctx_gate = thread_pool.main(); - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - config.range.load_lookup_table(&mut layouter)?; - let mut first_pass = SKIP_FIRST_PASS; - let sha256 = Sha256ChipWide::new( - &config.sha256_config, - &self.range, - config.challenges.sha256_input(), - None, - 0, - ); - - let mut builder = self.builder.borrow().clone(); - - let _ = layouter.assign_region( - || "sha2 test", - |mut region| { - if first_pass { - first_pass = false; - println!("first pass"); - return Ok(vec![]); - } - config.sha256_config.annotate_columns_in_region(&mut region); - - let ctx = builder.main(0); - - let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; - - let assigned_hash = result.output_bytes; - println!( - "assigned hash: {:?}", - assigned_hash.map(|e| e.value().get_lower_32()) - ); - - // let correct_output = self - // .test_output - // .map(|b| ctx.load_witness(F::from(b as u64))); - - // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { - // ctx.constrain_equal(hash, check); - // } - - let extra_assignments = sha256.take_extra_assignments(); - - let _ = builder.assign_all( - &config.range.gate, - &config.range.lookup_advice, - &config.range.q_lookup, - &mut region, - extra_assignments, - ); - - Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) - }, - )?; - - Ok(()) - } - } - - impl TestCircuit { - const MAX_BYTE_SIZE: usize = 64; - const NUM_ADVICE: usize = 5; - const NUM_FIXED: usize = 1; - const NUM_LOOKUP_ADVICE: usize = 4; - const LOOKUP_BITS: usize = 8; - const K: usize = 11; - } - - #[test] - fn test_sha256_wide_chip_constant_size() { - let k = TestCircuit::::K as u32; - - let test_input = vec![0u8; 128]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::new(false); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, + let mut reassign_to_gate = |val_sha: AssignedValue| -> AssignedValue { + let val_gate = ctx_gate.load_witness(*val_sha.value()); + ctx_gate.constrain_equal(&val_sha, &val_gate); + val_gate }; - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - #[test] - fn test_sha256_wide_params_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![0u8; 128]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: test_input.into_witness(), - test_output, - _f: PhantomData, - }; - let params = gen_srs(k); - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); - } + for round_idx in 0..max_round { + let input_len = reassign_to_gate(assigned_rows.input_len[round_idx]); - #[test] - fn test_sha256_wide_proof_gen() { - let k = TestCircuit::::K as u32; - let test_input = vec![2u8; 32]; - let test_output: [u8; 32] = Sha256::digest(&test_input).into(); - let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); - let builder = GateThreadBuilder::keygen(); - let circuit = TestCircuit:: { - builder: RefCell::new(builder), - range, - test_input: HashInput::TwoToOne( - test_input.clone().into_witness(), - test_input.into_witness(), - ), - test_output, - _f: PhantomData, - }; - let pf_time = start_timer!(|| "mock prover"); + let input_rlcs = assigned_rows.input_rlc[16 * round_idx..16 * (round_idx + 1)] + .iter() + .map(|v| reassign_to_gate(*v)) + .collect_vec() + .try_into() + .unwrap(); - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - prover.verify().unwrap(); - end_timer!(pf_time); + let padding_selectors = assigned_rows.padding_selectors + [16 * round_idx..16 * (round_idx + 1)] + .iter() + .map(|values| values.map(&mut reassign_to_gate)) + .collect_vec() + .try_into() + .unwrap(); - let params = gen_srs(k); + let is_final = reassign_to_gate(assigned_rows.is_final[round_idx]); + let output_rlc = reassign_to_gate(assigned_rows.output_rlc[0]); - let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + assigned_rounds.push(AssignedSha256Round { + is_final, + input_len, + input_rlcs, + padding_selectors, + output_rlc, + }) + } - let proof = full_prover(¶ms, &pkey, circuit, vec![]); + let hash_gate = hash_sha.map(reassign_to_gate); - let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); - assert!(is_valid); + Ok(hash_gate) } } + +// #[cfg(test)] +// mod test { +// use std::vec; +// use std::{cell::RefCell, marker::PhantomData}; + +// use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use halo2_base::gates::range::RangeConfig; +// use halo2_base::utils::fs::gen_srs; +// use halo2_base::SKIP_FIRST_PASS; +// use halo2_base::{ +// gates::{builder::GateThreadBuilder, range::RangeStrategy}, +// halo2_proofs::{ +// circuit::{Layouter, SimpleFloorPlanner}, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{Circuit, ConstraintSystem}, +// }, +// }; +// use sha2::{Digest, Sha256}; + +// #[derive(Debug, Clone)] +// struct TestConfig { +// sha256_config: Sha256BitConfig, +// pub max_byte_size: usize, +// range: RangeConfig, +// challenges: Challenges>, +// } + +// #[derive(Debug, Clone)] +// struct TestCircuit { +// builder: RefCell>, +// range: RangeChip, +// test_input: HashInput>, +// test_output: [u8; 32], +// _f: PhantomData, +// } + +// impl Circuit for TestCircuit +// where +// [(); Self::MAX_BYTE_SIZE]:, +// { +// type Config = TestConfig; +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// unimplemented!() +// } + +// fn configure(meta: &mut ConstraintSystem) -> Self::Config { +// let sha256_configs = Sha256BitConfig::::new::(meta); +// let range = RangeConfig::configure( +// meta, +// RangeStrategy::Vertical, +// &[Self::NUM_ADVICE], +// &[Self::NUM_LOOKUP_ADVICE], +// Self::NUM_FIXED, +// Self::LOOKUP_BITS, +// Self::K, +// ); +// Self::Config { +// sha256_config: sha256_configs, +// max_byte_size: Self::MAX_BYTE_SIZE, +// range, +// challenges: Challenges::mock(Value::known(Sha256BitConfig::fixed_challenge())), +// } +// } + +// fn synthesize( +// &self, +// config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// config.range.load_lookup_table(&mut layouter)?; +// let mut first_pass = SKIP_FIRST_PASS; +// let sha256 = Sha256ChipWide::new( +// &config.sha256_config, +// &self.range, +// config.challenges.sha256_input(), +// None, +// 0, +// ); + +// let mut builder = self.builder.borrow().clone(); + +// let _ = layouter.assign_region( +// || "sha2 test", +// |mut region| { +// if first_pass { +// first_pass = false; +// println!("first pass"); +// return Ok(vec![]); +// } +// config.sha256_config.annotate_columns_in_region(&mut region); + +// let ctx = builder.main(0); + +// let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; + +// let assigned_hash = result.output_bytes; +// println!( +// "assigned hash: {:?}", +// assigned_hash.map(|e| e.value().get_lower_32()) +// ); + +// // let correct_output = self +// // .test_output +// // .map(|b| ctx.load_witness(F::from(b as u64))); + +// // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { +// // ctx.constrain_equal(hash, check); +// // } + +// let extra_assignments = sha256.take_extra_assignments(); + +// let _ = builder.assign_all( +// &config.range.gate, +// &config.range.lookup_advice, +// &config.range.q_lookup, +// &mut region, +// extra_assignments, +// ); + +// Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) +// }, +// )?; + +// Ok(()) +// } +// } + +// impl TestCircuit { +// const MAX_BYTE_SIZE: usize = 64; +// const NUM_ADVICE: usize = 5; +// const NUM_FIXED: usize = 1; +// const NUM_LOOKUP_ADVICE: usize = 4; +// const LOOKUP_BITS: usize = 8; +// const K: usize = 11; +// } + +// #[test] +// fn test_sha256_wide_chip_constant_size() { +// let k = TestCircuit::::K as u32; + +// let test_input = vec![0u8; 128]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::new(false); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: test_input.into_witness(), +// test_output, +// _f: PhantomData, +// }; + +// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// } + +// #[test] +// fn test_sha256_wide_params_gen() { +// let k = TestCircuit::::K as u32; +// let test_input = vec![0u8; 128]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::keygen(); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: test_input.into_witness(), +// test_output, +// _f: PhantomData, +// }; +// let params = gen_srs(k); +// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); +// } + +// #[test] +// fn test_sha256_wide_proof_gen() { +// let k = TestCircuit::::K as u32; +// let test_input = vec![2u8; 32]; +// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); +// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); +// let builder = GateThreadBuilder::keygen(); +// let circuit = TestCircuit:: { +// builder: RefCell::new(builder), +// range, +// test_input: HashInput::TwoToOne( +// test_input.clone().into_witness(), +// test_input.into_witness(), +// ), +// test_output, +// _f: PhantomData, +// }; +// let pf_time = start_timer!(|| "mock prover"); + +// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); +// prover.assert_satisfied(); +// prover.verify().unwrap(); +// end_timer!(pf_time); + +// let params = gen_srs(k); + +// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); + +// let proof = full_prover(¶ms, &pkey, circuit, vec![]); + +// let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); +// assert!(is_valid); +// } +// } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs new file mode 100644 index 00000000..a8b0adad --- /dev/null +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -0,0 +1,208 @@ +use std::{cell::RefCell, collections::HashMap, iter}; + +use eth_types::Field; +use halo2_base::{ + gates::{ + builder::{ + CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, + ThreadBreakPoints, + }, + flex_gate::FlexGateConfig, + }, + utils::ScalarField, + Context, +}; +use halo2_proofs::{ + circuit::{self, Region, Value}, + plonk::{Advice, Column, Selector}, +}; +use itertools::Itertools; + +use crate::util::BaseThreadBuilder; + +use super::{config::Sha256BitConfig, witness::ShaRow}; + +pub const FIRST_PHASE: usize = 0; + +pub type Sha256BitContexts = Sha256BitConfig, Context>; + +#[derive(Clone, Debug)] +pub struct ShaBitThreadBuilder { + /// Threads for spread table assignment. + sha_contexts: Sha256BitContexts, + /// [`GateThreadBuilder`] with threads for basic gate; also in charge of thread IDs + pub gate_builder: GateThreadBuilder, + + sha_offset: usize, +} + +impl ShaBitThreadBuilder { + // re-expose some methods from [`GateThreadBuilder`] for convenience + #[allow(unused_mut)] + pub fn new(mut witness_gen_only: bool) -> Self { + let mut gate_builder = GateThreadBuilder::new(witness_gen_only); + let mut new_context = || Context::new(witness_gen_only, gate_builder.get_new_thread_id()); + Self { + sha_contexts: Sha256BitConfig { + q_enable: new_context(), + q_first: new_context(), + q_extend: new_context(), + q_start: new_context(), + q_compression: new_context(), + q_end: new_context(), + q_padding: new_context(), + q_padding_last: new_context(), + q_squeeze: new_context(), + q_final_word: new_context(), + word_w: array_init::array_init(|_| new_context()), + word_a: array_init::array_init(|_| new_context()), + word_e: array_init::array_init(|_| new_context()), + is_final: new_context(), + is_paddings: array_init::array_init(|_| new_context()), + data_rlcs: array_init::array_init(|_| new_context()), + round_cst: new_context(), + h_a: new_context(), + h_e: new_context(), + is_enabled: new_context(), + input_rlc: new_context(), + input_len: new_context(), + hash_rlc: new_context(), + final_hash_bytes: array_init::array_init(|_| new_context()), + _f: std::marker::PhantomData, + offset: todo!(), + }, + gate_builder, + sha_offset: 0 + } + } + + pub fn mock() -> Self { + Self::new(false) + } + + pub fn keygen() -> Self { + Self::new(false).unknown(true) + } + + pub fn prover() -> Self { + Self::new(true) + } + + pub fn unknown(mut self, use_unknown: bool) -> Self { + self.gate_builder = self.gate_builder.unknown(use_unknown); + self + } + + /// Auto-calculate configuration parameters for the circuit + pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + self.gate_builder.config(k, minimum_rows) + } + + pub fn sha_contexts(&mut self) -> &mut Sha256BitContexts { + // Sha256BitContexts{ + // q_enable: &mut self.sha_contexts.q_enable, + // q_first: &mut self.sha_contexts.q_first, + // q_extend: &mut self.sha_contexts.q_extend, + // q_start: &mut self.sha_contexts.q_start, + // q_compression: &mut self.sha_contexts.q_compression, + // q_end: &mut self.sha_contexts.q_end, + // q_padding: &mut self.sha_contexts.q_padding, + // q_padding_last: &mut self.sha_contexts.q_padding_last, + // q_squeeze: &mut self.sha_contexts.q_squeeze, + // q_final_word: &mut self.sha_contexts.q_final_word, + // word_w: self.sha_contexts.word_w.iter_mut().collect::>().try_into().unwrap(), + // word_a: self.sha_contexts.word_a.iter_mut().collect::>().try_into().unwrap(), + // word_e: self.sha_contexts.word_e.iter_mut().collect::>().try_into().unwrap(), + // is_final: &mut self.sha_contexts.is_final, + // is_paddings: self.sha_contexts.is_paddings.iter_mut().collect::>().try_into().unwrap(), + // data_rlcs: self.sha_contexts.data_rlcs.iter_mut().collect::>().try_into().unwrap(), + // round_cst: &mut self.sha_contexts.round_cst, + // h_a: &mut self.sha_contexts.h_a, + // h_e: &mut self.sha_contexts.h_e, + // is_enabled: &mut self.sha_contexts.is_enabled, + // input_rlc: &mut self.sha_contexts.input_rlc, + // input_len: &mut self.sha_contexts.input_len, + // hash_rlc: &mut self.sha_contexts.hash_rlc, + // final_hash_bytes: self.sha_contexts.final_hash_bytes.iter_mut().collect::>().try_into().unwrap(), + // _f: std::marker::PhantomData, + // offset: &mut self.sha_offset + // } + &mut self.sha_contexts + } + + /// Assigns all advice and fixed cells, turns on selectors, imposes equality constraints. + /// This should only be called during keygen. + pub fn assign_all( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + q_lookup: &[Option], + config: &Sha256BitConfig, + region: &mut Region, + KeygenAssignments { + mut assigned_advices, + assigned_constants, + mut break_points, + }: KeygenAssignments, + ) -> KeygenAssignments { + assert!(!self.witness_gen_only()); + + // assign_threads_sha( + // &self.threads_dense, + // &self.threads_spread, + // spread, + // region, + // self.use_unknown(), + // Some(&mut assigned_advices), + // ); + // in order to constrain equalities and assign constants, we copy the Spread/Dense equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it + // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there + let main_ctx = self.gate_builder.main(0); + // for ctx in self + // .threads_spread + // .iter_mut() + // .chain(self.threads_dense.iter_mut()) + // { + // main_ctx + // .advice_equality_constraints + // .append(&mut ctx.advice_equality_constraints); + // main_ctx + // .constant_equality_constraints + // .append(&mut ctx.constant_equality_constraints); + // } + + self.gate_builder.assign_all( + gate, + lookup_advice, + q_lookup, + region, + KeygenAssignments { + assigned_advices, + assigned_constants, + break_points, + }, + ) + } +} + +impl BaseThreadBuilder for ShaBitThreadBuilder { + fn main(&mut self) -> &mut Context { + self.gate_builder.main(FIRST_PHASE) + } + + fn witness_gen_only(&self) -> bool { + self.gate_builder.witness_gen_only() + } + + fn use_unknown(&self) -> bool { + self.gate_builder.use_unknown() + } + + fn thread_count(&self) -> usize { + self.gate_builder.thread_count() + } + + fn get_new_thread_id(&mut self) -> usize { + self.gate_builder.get_new_thread_id() + } +} diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs index 64b657c3..b8c9e683 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs @@ -2,7 +2,9 @@ //! This implementation is based on: //! - https://github.com/SoraSuegami/zkevm-circuits/blob/main/zkevm-circuits/src/sha256_circuit/sha256_bit.rs +use std::cell::RefCell; use std::hash::Hash; +use std::iter; use std::marker::PhantomData; use crate::gadget::{and, not, rlc, select, sum, xor, Expr}; @@ -12,7 +14,7 @@ use crate::{ witness::{self, HashInput}, }; use eth_types::{Field, Spec}; -use halo2_base::{AssignedValue, ContextCell}; +use halo2_base::{AssignedValue, Context, ContextCell, QuantumCell}; use halo2_proofs::{ circuit::{AssignedCell, Layouter, Region, Value}, plonk::{Advice, Any, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells}, @@ -27,47 +29,50 @@ use super::witness::{multi_sha256, ShaRow}; /// Configuration for [`Sha256WideChip`]. #[derive(Clone, Debug)] -pub struct Sha256WideConfig { - q_enable: Column, - q_first: Column, - q_extend: Column, - q_start: Column, - q_compression: Column, - q_end: Column, - q_padding: Column, - q_padding_last: Column, - q_squeeze: Column, - q_final_word: Column, - word_w: [Column; NUM_BITS_PER_WORD_W], - word_a: [Column; NUM_BITS_PER_WORD_EXT], - word_e: [Column; NUM_BITS_PER_WORD_EXT], - is_final: Column, - is_paddings: [Column; ABSORB_WIDTH_PER_ROW_BYTES], - data_rlcs: [Column; ABSORB_WIDTH_PER_ROW_BYTES], - round_cst: Column, - h_a: Column, - h_e: Column, +pub struct Sha256BitConfig, CA = Column> { + pub q_enable: CF, + pub q_first: CF, + pub q_extend: CF, + pub q_start: CF, + pub q_compression: CF, + pub q_end: CF, + pub q_padding: CF, + pub q_padding_last: CF, + pub q_squeeze: CF, + pub q_final_word: CF, + pub word_w: [CA; NUM_BITS_PER_WORD_W], + pub word_a: [CA; NUM_BITS_PER_WORD_EXT], + pub word_e: [CA; NUM_BITS_PER_WORD_EXT], + pub is_final: CA, + pub is_paddings: [CA; ABSORB_WIDTH_PER_ROW_BYTES], + pub data_rlcs: [CA; ABSORB_WIDTH_PER_ROW_BYTES], + pub round_cst: CF, + pub h_a: CF, + pub h_e: CF, // True when the row is enabled - pub is_enabled: Column, + pub is_enabled: CA, // The columns for bytes of hash results - pub input_rlc: Column, + pub input_rlc: CA, // Length of first+second inputs - pub input_len: Column, + pub input_len: CA, // RLC of the hash result - pub hash_rlc: Column, + pub hash_rlc: CA, // Output bytes - pub final_hash_bytes: [Column; NUM_BYTES_FINAL_HASH], - _marker: PhantomData, + pub final_hash_bytes: [CA; NUM_BYTES_FINAL_HASH], + + pub _f: PhantomData, + + pub offset: usize, } -impl Sha256WideConfig { +impl Sha256BitConfig { pub fn new(meta: &mut ConstraintSystem) -> Self { // consts let two = F::from(2); let f256 = two.pow_const(8); - let r: F = Sha256WideConfig::fixed_challenge(); + let r: F = Sha256BitConfig::fixed_challenge(); let q_enable = meta.fixed_column(); let q_first = meta.fixed_column(); let q_extend = meta.fixed_column(); @@ -87,7 +92,7 @@ impl Sha256WideConfig { is_paddings .iter() .for_each(|&col| meta.enable_equality(col)); - let data_rlcs: [Column; 4] = array_init::array_init(|_| meta.advice_column()); + let data_rlcs = array_init::array_init(|_| meta.advice_column()); let round_cst = meta.fixed_column(); let h_a = meta.fixed_column(); @@ -414,10 +419,6 @@ impl Sha256WideConfig { cb.gate(1.expr()) }); - // feature: [multi input lookups] - // TODO: constraint is_right == 1 when leanth >= right_len - // end - // Length and input data rlc meta.create_gate("length and data rlc", |meta| { let mut cb = BaseConstraintBuilder::new(MAX_DEGREE); @@ -482,7 +483,7 @@ impl Sha256WideConfig { let start_new_hash = start_new_hash(meta); let to_const = |value: &String| -> &'static str { Box::leak(value.clone().into_boxed_str()) }; - let mut add = |name: &'static str, column: Column| { + let mut add = |name: &'static str, column| { let last_rot = Rotation(-((NUM_END_ROWS + NUM_ROUNDS - NUM_WORDS_TO_ABSORB) as i32)); let value_to_copy = meta.query_advice(column, last_rot); @@ -569,7 +570,7 @@ impl Sha256WideConfig { debug!("sha256 circuit degree: {}", meta.degree()); debug!("minimum rows: {}", meta.minimum_rows()); - Sha256WideConfig { + Sha256BitConfig { q_enable, q_first, q_extend, @@ -594,7 +595,8 @@ impl Sha256WideConfig { input_rlc, hash_rlc, final_hash_bytes, - _marker: PhantomData, + _f: PhantomData, + offset: Default::default(), } } @@ -605,83 +607,282 @@ impl Sha256WideConfig { } } -impl Sha256WideConfig { - pub fn digest_with_region( - &self, - region: &mut Region<'_, F>, - input: HashInput, - assigned_rows: &mut Sha256AssignedRows, - ) -> Result<[AssignedValueCell; NUM_BYTES_FINAL_HASH], Error> { - let witness = multi_sha256(&[input], Sha256WideConfig::fixed_challenge()); - let mut hashes = self.assign_with_region(region, &witness, assigned_rows)?; - assert_eq!(hashes.len(), 1); - Ok(hashes.pop().unwrap().try_into().unwrap()) +impl Sha256BitConfig { + pub fn annotations(&self) -> Vec<(Column, String)> { + let mut annotations = vec![ + (self.q_enable.into(), "q_enabled".to_string()), + (self.q_first.into(), "q_first".to_string()), + (self.q_extend.into(), "q_extend".to_string()), + (self.q_start.into(), "q_start".to_string()), + (self.q_compression.into(), "q_compression".to_string()), + (self.q_end.into(), "q_end".to_string()), + (self.q_padding.into(), "q_padding".to_string()), + (self.q_padding_last.into(), "q_padding_last".to_string()), + (self.q_squeeze.into(), "q_squeeze".to_string()), + (self.q_final_word.into(), "q_final_word".to_string()), + (self.is_final.into(), "is_final".to_string()), + (self.round_cst.into(), "round_cst".to_string()), + (self.h_a.into(), "h_a".to_string()), + (self.h_e.into(), "h_e".to_string()), + (self.is_enabled.into(), "is_enabled".to_string()), + (self.input_len.into(), "input_len".to_string()), + (self.input_rlc.into(), "input_rlc".to_string()), + (self.hash_rlc.into(), "hash_rlc".to_string()), + ]; + + for (i, col) in self.word_w.iter().copied().enumerate() { + annotations.push((col.into(), format!("word_w_{}", i))); + } + for (i, col) in self.word_a.iter().copied().enumerate() { + annotations.push((col.into(), format!("word_a_{}", i))); + } + for (i, col) in self.word_e.iter().copied().enumerate() { + annotations.push((col.into(), format!("word_e_{}", i))); + } + for (i, col) in self.is_paddings.iter().copied().enumerate() { + annotations.push((col.into(), format!("is_paddings_{}", i))); + } + for (i, col) in self.data_rlcs.iter().copied().enumerate() { + annotations.push((col.into(), format!("data_rlcs_{}", i))); + } + for (i, col) in self.final_hash_bytes.iter().copied().enumerate() { + annotations.push((col.into(), format!("final_hash_bytes_{}", i))); + } + + annotations } - pub fn assign_with_region( - &self, - region: &mut Region<'_, F>, - witness: &[ShaRow], - assigned_rows: &mut Sha256AssignedRows, - ) -> Result; NUM_BYTES_FINAL_HASH]>, Error> { - self.annotate_columns_in_region(region); - let vec_vecs = witness - .iter() - .map(|sha256_row| self.set_row(region, sha256_row, assigned_rows)) - .collect::, Error>>()?; - let filtered = vec_vecs - .into_iter() - .filter_map(|hash_bytes| { - (!hash_bytes.is_empty()).then(|| hash_bytes.try_into().unwrap()) - }) - .collect_vec(); - Ok(filtered) + // fn set_row( + // &self, + // region: &mut Region<'_, F>, + // row: &ShaRow, + // assigned_rows: &mut Sha256AssignedRows, + // ) -> Result>, Error> { + // let offset = assigned_rows.offset; + // assigned_rows.offset += 1; + // let round = offset % (NUM_ROUNDS + 8); + // // Fixed values + // for (name, column, value) in &[ + // ("q_enable", self.q_enable, F::from(true)), + // ("q_first", self.q_first, F::from(offset == 0)), + // ( + // "q_extend", + // self.q_extend, + // F::from((4 + 16..4 + NUM_ROUNDS).contains(&round)), + // ), + // ("q_start", self.q_start, F::from(round < 4)), + // ( + // "q_compression", + // self.q_compression, + // F::from((4..NUM_ROUNDS + 4).contains(&round)), + // ), + // ("q_end", self.q_end, F::from(round >= NUM_ROUNDS + 4)), + // ( + // "q_padding", + // self.q_padding, + // F::from((4..20).contains(&round)), + // ), + // ("q_padding_last", self.q_padding_last, F::from(round == 19)), + // ( + // "q_squeeze", + // self.q_squeeze, + // F::from(round == NUM_ROUNDS + 7), + // ), + // ( + // "q_final_word", + // self.q_final_word, + // F::from(row.is_final && round == NUM_ROUNDS + 7), + // ), + // ( + // "round_cst", + // self.round_cst, + // F::from(if (4..NUM_ROUNDS + 4).contains(&round) { + // ROUND_CST[round - 4] as u64 + // } else { + // 0 + // }), + // ), + // ( + // "Ha", + // self.h_a, + // F::from(if round < 4 { H[3 - round] } else { 0 }), + // ), + // ( + // "He", + // self.h_e, + // F::from(if round < 4 { H[7 - round] } else { 0 }), + // ), + // ] { + // region.assign_fixed( + // || format!("assign {} {}", name, offset), + // *column, + // offset, + // || Value::known(*value), + // )?; + // } + + // // Advice values + // for (name, columns, values) in [ + // ("w bits", self.word_w.as_slice(), row.w.as_slice()), + // ("a bits", self.word_a.as_slice(), row.a.as_slice()), + // ("e bits", self.word_e.as_slice(), row.e.as_slice()), + // ( + // "is_final", + // [self.is_final].as_slice(), + // [row.is_final].as_slice(), + // ), + // ] { + // for (idx, (value, column)) in values.iter().zip(columns.iter()).enumerate() { + // region.assign_advice( + // || format!("assign {} {} {}", name, idx, offset), + // *column, + // offset, + // || Value::known(F::from(*value)), + // )?; + // } + // } + + // let padding_selectors = self + // .is_paddings + // .iter() + // .zip(row.is_paddings.iter()) + // .enumerate() + // .map(|(idx, (&col, &val))| { + // let cell = region.assign_advice( + // || format!("assign {} {} {}", "padding selector", idx, offset), + // col, + // offset, + // || Value::known(F::from(val)), + // ); + + // cell.map(|cell| AssignedValueCell { + // cell: cell.cell(), + // value: F::from(val), + // }) + // }) + // .collect::, _>>()? + // .try_into() + // .unwrap(); + + // // Intermediary data rlcs + // for (idx, (data_rlc, column)) in row + // .intermediary_data_rlcs + // .iter() + // .zip(self.data_rlcs.iter()) + // .enumerate() + // { + // region.assign_advice( + // || format!("assign data rlcs {} {}", idx, offset), + // *column, + // offset, + // || Value::known(*data_rlc), + // )?; + // } + + // // Hash data + // let [is_final, input_rlc, input_len, output_rlc] = [ + // ( + // self.is_enabled, + // F::from(row.is_final && round == NUM_ROUNDS + 7), + // ), + // (self.input_rlc, row.data_rlc), + // (self.input_len, F::from(row.length as u64)), + // (self.hash_rlc, row.hash_rlc), + // ] + // .map(|(column, value)| { + // let cell = region.assign_advice( + // || format!("assign {}", offset), + // column, + // offset, + // || Value::known(value), + // ); + // cell.map(|cell| AssignedValueCell { + // cell: cell.cell(), + // value, + // }) + // .unwrap() + // }); + + // if (4..20).contains(&round) { + // assigned_rows.padding_selectors.push(padding_selectors); + // assigned_rows.input_rlc.push(input_rlc); + // } + + // if row.is_final && round == NUM_ROUNDS + 7 { + // assigned_rows.output_rlc.push(output_rlc); + // } + + // if round == NUM_ROUNDS + 7 { + // assigned_rows.is_final.push(is_final); + // assigned_rows.input_len.push(input_len); + // } + + // let mut hash_cells = Vec::with_capacity(NUM_BYTES_FINAL_HASH); + // if !row.is_final || round != NUM_ROUNDS + 7 { + // for idx in 0..(NUM_BYTES_FINAL_HASH) { + // region.assign_advice( + // || format!("final hash word at {}", idx), + // self.final_hash_bytes[idx], + // offset, + // || Value::known(F::from(0u64)), + // )?; + // } + // } else { + // for (idx, byte) in row.final_hash_bytes.iter().enumerate() { + // let cell = region.assign_advice( + // || format!("final hash word at {}", idx), + // self.final_hash_bytes[idx], + // offset, + // || Value::known(*byte), + // )?; + + // hash_cells.push(AssignedValueCell { + // cell: cell.cell(), + // value: *byte, + // }); + // } + // } + + // Ok(hash_cells) + // } + + pub fn fixed_challenge() -> F { + F::from_u128(0xca9d6022267d3bd658bf) } +} - fn set_row( - &self, - region: &mut Region<'_, F>, +impl Sha256BitConfig, Context> { + pub fn load_sha256_row( + &mut self, row: &ShaRow, assigned_rows: &mut Sha256AssignedRows, - ) -> Result>, Error> { - let offset = assigned_rows.offset; - assigned_rows.offset += 1; + ) -> Result>, Error> { + let offset = self.offset; + self.offset += 1; let round = offset % (NUM_ROUNDS + 8); // Fixed values - for (name, column, value) in &[ - ("q_enable", self.q_enable, F::from(true)), - ("q_first", self.q_first, F::from(offset == 0)), + for (ctx, value) in [ + (&mut self.q_enable, F::from(true)), + (&mut self.q_first, F::from(offset == 0)), ( - "q_extend", - self.q_extend, + &mut self.q_extend, F::from((4 + 16..4 + NUM_ROUNDS).contains(&round)), ), - ("q_start", self.q_start, F::from(round < 4)), + (&mut self.q_start, F::from(round < 4)), ( - "q_compression", - self.q_compression, + &mut self.q_compression, F::from((4..NUM_ROUNDS + 4).contains(&round)), ), - ("q_end", self.q_end, F::from(round >= NUM_ROUNDS + 4)), - ( - "q_padding", - self.q_padding, - F::from((4..20).contains(&round)), - ), - ("q_padding_last", self.q_padding_last, F::from(round == 19)), + (&mut self.q_end, F::from(round >= NUM_ROUNDS + 4)), + (&mut self.q_padding, F::from((4..20).contains(&round))), + (&mut self.q_padding_last, F::from(round == 19)), + (&mut self.q_squeeze, F::from(round == NUM_ROUNDS + 7)), ( - "q_squeeze", - self.q_squeeze, - F::from(round == NUM_ROUNDS + 7), - ), - ( - "q_final_word", - self.q_final_word, + &mut self.q_final_word, F::from(row.is_final && round == NUM_ROUNDS + 7), ), ( - "round_cst", - self.round_cst, + &mut self.round_cst, F::from(if (4..NUM_ROUNDS + 4).contains(&round) { ROUND_CST[round - 4] as u64 } else { @@ -689,108 +890,64 @@ impl Sha256WideConfig { }), ), ( - "Ha", - self.h_a, + &mut self.h_a, F::from(if round < 4 { H[3 - round] } else { 0 }), ), ( - "He", - self.h_e, + &mut self.h_e, F::from(if round < 4 { H[7 - round] } else { 0 }), ), ] { - region.assign_fixed( - || format!("assign {} {}", name, offset), - *column, - offset, - || Value::known(*value), - )?; + ctx.assign_cell(QuantumCell::Constant(value)); } // Advice values - for (name, columns, values) in [ - ("w bits", self.word_w.as_slice(), row.w.as_slice()), - ("a bits", self.word_a.as_slice(), row.a.as_slice()), - ("e bits", self.word_e.as_slice(), row.e.as_slice()), + for (ctxs, values) in [ + ( + self.word_w.iter_mut().collect::>(), + row.w.as_slice(), + ), ( - "is_final", - [self.is_final].as_slice(), - [row.is_final].as_slice(), + self.word_a.iter_mut().collect::>(), + row.a.as_slice(), ), + ( + self.word_e.iter_mut().collect::>(), + row.e.as_slice(), + ), + (vec![&mut self.is_final], [row.is_final].as_slice()), ] { - for (idx, (value, column)) in values.iter().zip(columns.iter()).enumerate() { - region.assign_advice( - || format!("assign {} {} {}", name, idx, offset), - *column, - offset, - || Value::known(F::from(*value)), - )?; + for (value, ctx) in values.iter().zip(ctxs) { + ctx.assign_cell(QuantumCell::Witness(F::from(*value))); } } let padding_selectors = self .is_paddings - .iter() - .zip(row.is_paddings.iter()) - .enumerate() - .map(|(idx, (&col, &val))| { - let cell = region.assign_advice( - || format!("assign {} {} {}", "padding selector", idx, offset), - col, - offset, - || Value::known(F::from(val)), - ); - - cell.map(|cell| AssignedValueCell { - cell: cell.cell(), - value: F::from(val), - }) - }) - .collect::, _>>()? - .try_into() - .unwrap(); + .iter_mut() + .zip(row.is_paddings) + .map(|(mut ctx, val)| ctx.load_witness(F::from(val))) + .collect_vec(); // Intermediary data rlcs - for (idx, (data_rlc, column)) in row - .intermediary_data_rlcs - .iter() - .zip(self.data_rlcs.iter()) - .enumerate() - { - region.assign_advice( - || format!("assign data rlcs {} {}", idx, offset), - *column, - offset, - || Value::known(*data_rlc), - )?; + for ((ctx, data_rlc)) in self.data_rlcs.iter_mut().zip(row.intermediary_data_rlcs) { + ctx.assign_cell(QuantumCell::Witness(data_rlc)); } // Hash data let [is_final, input_rlc, input_len, output_rlc] = [ ( - self.is_enabled, + &mut self.is_enabled, F::from(row.is_final && round == NUM_ROUNDS + 7), ), - (self.input_rlc, row.data_rlc), - (self.input_len, F::from(row.length as u64)), - (self.hash_rlc, row.hash_rlc), + (&mut self.input_rlc, row.data_rlc), + (&mut self.input_len, F::from(row.length as u64)), + (&mut self.hash_rlc, row.hash_rlc), ] - .map(|(column, value)| { - let cell = region.assign_advice( - || format!("assign {}", offset), - column, - offset, - || Value::known(value), - ); - cell.map(|cell| AssignedValueCell { - cell: cell.cell(), - value, - }) - .unwrap() - }); + .map(|(mut ctx, value)| ctx.load_witness(value)); if (4..20).contains(&round) { - assigned_rows.padding_selectors.push(padding_selectors); + // assigned_rows.padding_selectors.push(padding_selectors); assigned_rows.input_rlc.push(input_rlc); } @@ -803,80 +960,24 @@ impl Sha256WideConfig { assigned_rows.input_len.push(input_len); } - let mut hash_cells = Vec::with_capacity(NUM_BYTES_FINAL_HASH); if !row.is_final || round != NUM_ROUNDS + 7 { - for idx in 0..(NUM_BYTES_FINAL_HASH) { - region.assign_advice( - || format!("final hash word at {}", idx), - self.final_hash_bytes[idx], - offset, - || Value::known(F::from(0u64)), - )?; - } - } else { - for (idx, byte) in row.final_hash_bytes.iter().enumerate() { - let cell = region.assign_advice( - || format!("final hash word at {}", idx), - self.final_hash_bytes[idx], - offset, - || Value::known(*byte), - )?; - - hash_cells.push(AssignedValueCell { - cell: cell.cell(), - value: *byte, + self.final_hash_bytes + .iter_mut() + .zip(iter::repeat(F::from(0u64))) + .for_each(|(ctx, byte)| { + ctx.assign_cell(QuantumCell::Witness(byte)); }); - } - } - - Ok(hash_cells) - } - pub fn annotations(&self) -> Vec<(Column, String)> { - let mut annotations = vec![ - (self.q_enable.into(), "q_enabled".to_string()), - (self.q_first.into(), "q_first".to_string()), - (self.q_extend.into(), "q_extend".to_string()), - (self.q_start.into(), "q_start".to_string()), - (self.q_compression.into(), "q_compression".to_string()), - (self.q_end.into(), "q_end".to_string()), - (self.q_padding.into(), "q_padding".to_string()), - (self.q_padding_last.into(), "q_padding_last".to_string()), - (self.q_squeeze.into(), "q_squeeze".to_string()), - (self.q_final_word.into(), "q_final_word".to_string()), - (self.is_final.into(), "is_final".to_string()), - (self.round_cst.into(), "round_cst".to_string()), - (self.h_a.into(), "h_a".to_string()), - (self.h_e.into(), "h_e".to_string()), - (self.is_enabled.into(), "is_enabled".to_string()), - (self.input_len.into(), "input_len".to_string()), - (self.input_rlc.into(), "input_rlc".to_string()), - (self.hash_rlc.into(), "hash_rlc".to_string()), - ]; - - for (i, col) in self.word_w.iter().copied().enumerate() { - annotations.push((col.into(), format!("word_w_{}", i))); - } - for (i, col) in self.word_a.iter().copied().enumerate() { - annotations.push((col.into(), format!("word_a_{}", i))); - } - for (i, col) in self.word_e.iter().copied().enumerate() { - annotations.push((col.into(), format!("word_e_{}", i))); - } - for (i, col) in self.is_paddings.iter().copied().enumerate() { - annotations.push((col.into(), format!("is_paddings_{}", i))); - } - for (i, col) in self.data_rlcs.iter().copied().enumerate() { - annotations.push((col.into(), format!("data_rlcs_{}", i))); - } - for (i, col) in self.final_hash_bytes.iter().copied().enumerate() { - annotations.push((col.into(), format!("final_hash_bytes_{}", i))); + return Ok(vec![]); } - annotations - } + let assigned_hash_bytes = self + .final_hash_bytes + .iter_mut() + .zip(row.final_hash_bytes) + .map(|(ctx, byte)| ctx.load_witness(byte)) + .collect_vec(); - pub fn fixed_challenge() -> F { - F::from_u128(0xca9d6022267d3bd658bf) + Ok(assigned_hash_bytes) } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs index bccd4c25..ab43a19e 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs @@ -1,5 +1,5 @@ use eth_types::Field; -use halo2_base::utils::{biguint_to_fe, fe_to_biguint}; +use halo2_base::{utils::{biguint_to_fe, fe_to_biguint}, AssignedValue}; use halo2_proofs::circuit::AssignedCell; use itertools::Itertools; use num_bigint::BigUint; @@ -41,24 +41,25 @@ pub const H: [u64; 8] = [ /// Assigned values for each row. #[derive(Clone, Debug, Default)] pub struct Sha256AssignedRows { - /// Offset of the row. - pub offset: usize, + // /// Offset of the row. + // pub offset: usize, /// Input length at the row. - pub input_len: Vec>, + pub input_len: Vec>, /// Input words at the row. - pub input_rlc: Vec>, + pub input_rlc: Vec>, /// Whether the output word is enabled at the row. - pub is_final: Vec>, + pub is_final: Vec>, /// Whether the row is padding. - pub padding_selectors: Vec<[AssignedValueCell; 4]>, + pub padding_selectors: Vec<[AssignedValue; 4]>, /// Output words at the row. - pub output_rlc: Vec>, + pub output_rlc: Vec>, } + + impl Sha256AssignedRows { - pub fn new(offset: usize) -> Self { + pub fn new() -> Self { Self { - offset, ..Default::default() } } diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index ef7f609e..d41dabd2 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -3,6 +3,7 @@ #![feature(associated_type_bounds)] #![feature(generic_const_exprs)] #![feature(const_cmp)] +#![feature(array_zip)] #![feature(stmt_expr_attributes)] #![feature(trait_alias)] #![feature(generic_arg_infer)] diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index 5a2c53f4..fb4a0c5d 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -7,13 +7,13 @@ use itertools::Itertools; use crate::{ gadget::crypto::{HashInstructions, ShaContexts, ShaThreadBuilder}, - util::{IntoConstant, IntoWitness}, + util::{IntoConstant, IntoWitness, BaseThreadBuilder}, witness::{HashInput, HashInputChunk}, }; -pub fn ssz_merkleize_chunks( - thread_pool: &mut ShaThreadBuilder, - hasher: &impl HashInstructions, +pub fn ssz_merkleize_chunks>( + thread_pool: &mut ThreadBuilder, + hasher: &impl HashInstructions, chunks: impl IntoIterator>>, ) -> Result>, Error> { let mut chunks = chunks.into_iter().collect_vec(); @@ -50,9 +50,9 @@ pub fn ssz_merkleize_chunks( Ok(root.bytes) } -pub fn verify_merkle_proof( - thread_pool: &mut ShaThreadBuilder, - hasher: &impl HashInstructions, +pub fn verify_merkle_proof>( + thread_pool: &mut ThreadBuilder, + hasher: &impl HashInstructions, proof: impl IntoIterator>>, leaf: HashInputChunk>, root: &[AssignedValue], diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 7033a4ee..727d1ab3 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -19,7 +19,7 @@ use crate::{ poseidon::{g1_array_poseidon, poseidon_sponge}, ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, + decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, BaseThreadBuilder, }, witness::{self, HashInput, HashInputChunk, SyncStepArgs}, }; diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index e110c8f0..88b633d3 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -1,5 +1,6 @@ use crate::gadget::Expr; use eth_types::*; +use halo2_base::Context; use halo2_proofs::{ circuit::{AssignedCell, Region, Value}, plonk::{Advice, Assigned, Column, Error, Expression, VirtualCells}, @@ -122,3 +123,20 @@ impl AssignedValueCell { self.value } } + +pub trait BaseThreadBuilder { + /// Returns a mutable reference to the [Context] of a gate thread. Spawns a new thread for the given phase, if none exists. + /// * `phase`: The challenge phase (as an index) of the gate thread. + fn main(&mut self) -> &mut Context; + + fn witness_gen_only(&self) -> bool; + + /// Returns the `use_unknown` flag. + fn use_unknown(&self) -> bool; + + /// Returns the current number of threads in the [GateThreadBuilder]. + fn thread_count(&self) -> usize; + + /// Creates a new thread id by incrementing the `thread count` + fn get_new_thread_id(&mut self) -> usize; +} From 45b7c7354a29689fe334720c6f6a51bfd1cfd294 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Sun, 10 Sep 2023 16:32:30 +0200 Subject: [PATCH 13/33] sha256Wide assign to region --- .../src/gadget/crypto/sha256_wide/builder.rs | 28 -- .../src/gadget/crypto/sha256_wide/config.rs | 295 ++++++------------ 2 files changed, 101 insertions(+), 222 deletions(-) diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs index a8b0adad..7154efc9 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -99,34 +99,6 @@ impl ShaBitThreadBuilder { } pub fn sha_contexts(&mut self) -> &mut Sha256BitContexts { - // Sha256BitContexts{ - // q_enable: &mut self.sha_contexts.q_enable, - // q_first: &mut self.sha_contexts.q_first, - // q_extend: &mut self.sha_contexts.q_extend, - // q_start: &mut self.sha_contexts.q_start, - // q_compression: &mut self.sha_contexts.q_compression, - // q_end: &mut self.sha_contexts.q_end, - // q_padding: &mut self.sha_contexts.q_padding, - // q_padding_last: &mut self.sha_contexts.q_padding_last, - // q_squeeze: &mut self.sha_contexts.q_squeeze, - // q_final_word: &mut self.sha_contexts.q_final_word, - // word_w: self.sha_contexts.word_w.iter_mut().collect::>().try_into().unwrap(), - // word_a: self.sha_contexts.word_a.iter_mut().collect::>().try_into().unwrap(), - // word_e: self.sha_contexts.word_e.iter_mut().collect::>().try_into().unwrap(), - // is_final: &mut self.sha_contexts.is_final, - // is_paddings: self.sha_contexts.is_paddings.iter_mut().collect::>().try_into().unwrap(), - // data_rlcs: self.sha_contexts.data_rlcs.iter_mut().collect::>().try_into().unwrap(), - // round_cst: &mut self.sha_contexts.round_cst, - // h_a: &mut self.sha_contexts.h_a, - // h_e: &mut self.sha_contexts.h_e, - // is_enabled: &mut self.sha_contexts.is_enabled, - // input_rlc: &mut self.sha_contexts.input_rlc, - // input_len: &mut self.sha_contexts.input_len, - // hash_rlc: &mut self.sha_contexts.hash_rlc, - // final_hash_bytes: self.sha_contexts.final_hash_bytes.iter_mut().collect::>().try_into().unwrap(), - // _f: std::marker::PhantomData, - // offset: &mut self.sha_offset - // } &mut self.sha_contexts } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs index b8c9e683..0e571070 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs @@ -3,6 +3,7 @@ //! - https://github.com/SoraSuegami/zkevm-circuits/blob/main/zkevm-circuits/src/sha256_circuit/sha256_bit.rs use std::cell::RefCell; +use std::collections::HashMap; use std::hash::Hash; use std::iter; use std::marker::PhantomData; @@ -15,11 +16,13 @@ use crate::{ }; use eth_types::{Field, Spec}; use halo2_base::{AssignedValue, Context, ContextCell, QuantumCell}; +use halo2_proofs::circuit; use halo2_proofs::{ circuit::{AssignedCell, Layouter, Region, Value}, plonk::{Advice, Any, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells}, poly::Rotation, }; +use rayon::prelude::{IntoParallelIterator, ParallelIterator}; use super::util::*; use itertools::Itertools; @@ -652,200 +655,6 @@ impl Sha256BitConfig { annotations } - // fn set_row( - // &self, - // region: &mut Region<'_, F>, - // row: &ShaRow, - // assigned_rows: &mut Sha256AssignedRows, - // ) -> Result>, Error> { - // let offset = assigned_rows.offset; - // assigned_rows.offset += 1; - // let round = offset % (NUM_ROUNDS + 8); - // // Fixed values - // for (name, column, value) in &[ - // ("q_enable", self.q_enable, F::from(true)), - // ("q_first", self.q_first, F::from(offset == 0)), - // ( - // "q_extend", - // self.q_extend, - // F::from((4 + 16..4 + NUM_ROUNDS).contains(&round)), - // ), - // ("q_start", self.q_start, F::from(round < 4)), - // ( - // "q_compression", - // self.q_compression, - // F::from((4..NUM_ROUNDS + 4).contains(&round)), - // ), - // ("q_end", self.q_end, F::from(round >= NUM_ROUNDS + 4)), - // ( - // "q_padding", - // self.q_padding, - // F::from((4..20).contains(&round)), - // ), - // ("q_padding_last", self.q_padding_last, F::from(round == 19)), - // ( - // "q_squeeze", - // self.q_squeeze, - // F::from(round == NUM_ROUNDS + 7), - // ), - // ( - // "q_final_word", - // self.q_final_word, - // F::from(row.is_final && round == NUM_ROUNDS + 7), - // ), - // ( - // "round_cst", - // self.round_cst, - // F::from(if (4..NUM_ROUNDS + 4).contains(&round) { - // ROUND_CST[round - 4] as u64 - // } else { - // 0 - // }), - // ), - // ( - // "Ha", - // self.h_a, - // F::from(if round < 4 { H[3 - round] } else { 0 }), - // ), - // ( - // "He", - // self.h_e, - // F::from(if round < 4 { H[7 - round] } else { 0 }), - // ), - // ] { - // region.assign_fixed( - // || format!("assign {} {}", name, offset), - // *column, - // offset, - // || Value::known(*value), - // )?; - // } - - // // Advice values - // for (name, columns, values) in [ - // ("w bits", self.word_w.as_slice(), row.w.as_slice()), - // ("a bits", self.word_a.as_slice(), row.a.as_slice()), - // ("e bits", self.word_e.as_slice(), row.e.as_slice()), - // ( - // "is_final", - // [self.is_final].as_slice(), - // [row.is_final].as_slice(), - // ), - // ] { - // for (idx, (value, column)) in values.iter().zip(columns.iter()).enumerate() { - // region.assign_advice( - // || format!("assign {} {} {}", name, idx, offset), - // *column, - // offset, - // || Value::known(F::from(*value)), - // )?; - // } - // } - - // let padding_selectors = self - // .is_paddings - // .iter() - // .zip(row.is_paddings.iter()) - // .enumerate() - // .map(|(idx, (&col, &val))| { - // let cell = region.assign_advice( - // || format!("assign {} {} {}", "padding selector", idx, offset), - // col, - // offset, - // || Value::known(F::from(val)), - // ); - - // cell.map(|cell| AssignedValueCell { - // cell: cell.cell(), - // value: F::from(val), - // }) - // }) - // .collect::, _>>()? - // .try_into() - // .unwrap(); - - // // Intermediary data rlcs - // for (idx, (data_rlc, column)) in row - // .intermediary_data_rlcs - // .iter() - // .zip(self.data_rlcs.iter()) - // .enumerate() - // { - // region.assign_advice( - // || format!("assign data rlcs {} {}", idx, offset), - // *column, - // offset, - // || Value::known(*data_rlc), - // )?; - // } - - // // Hash data - // let [is_final, input_rlc, input_len, output_rlc] = [ - // ( - // self.is_enabled, - // F::from(row.is_final && round == NUM_ROUNDS + 7), - // ), - // (self.input_rlc, row.data_rlc), - // (self.input_len, F::from(row.length as u64)), - // (self.hash_rlc, row.hash_rlc), - // ] - // .map(|(column, value)| { - // let cell = region.assign_advice( - // || format!("assign {}", offset), - // column, - // offset, - // || Value::known(value), - // ); - // cell.map(|cell| AssignedValueCell { - // cell: cell.cell(), - // value, - // }) - // .unwrap() - // }); - - // if (4..20).contains(&round) { - // assigned_rows.padding_selectors.push(padding_selectors); - // assigned_rows.input_rlc.push(input_rlc); - // } - - // if row.is_final && round == NUM_ROUNDS + 7 { - // assigned_rows.output_rlc.push(output_rlc); - // } - - // if round == NUM_ROUNDS + 7 { - // assigned_rows.is_final.push(is_final); - // assigned_rows.input_len.push(input_len); - // } - - // let mut hash_cells = Vec::with_capacity(NUM_BYTES_FINAL_HASH); - // if !row.is_final || round != NUM_ROUNDS + 7 { - // for idx in 0..(NUM_BYTES_FINAL_HASH) { - // region.assign_advice( - // || format!("final hash word at {}", idx), - // self.final_hash_bytes[idx], - // offset, - // || Value::known(F::from(0u64)), - // )?; - // } - // } else { - // for (idx, byte) in row.final_hash_bytes.iter().enumerate() { - // let cell = region.assign_advice( - // || format!("final hash word at {}", idx), - // self.final_hash_bytes[idx], - // offset, - // || Value::known(*byte), - // )?; - - // hash_cells.push(AssignedValueCell { - // cell: cell.cell(), - // value: *byte, - // }); - // } - // } - - // Ok(hash_cells) - // } - pub fn fixed_challenge() -> F { F::from_u128(0xca9d6022267d3bd658bf) } @@ -980,4 +789,102 @@ impl Sha256BitConfig, Context> { Ok(assigned_hash_bytes) } + + #[allow(clippy::type_complexity)] + pub fn assign_in_region( + &self, + region: &mut Region, + config: &Sha256BitConfig, + use_unknown: bool, + mut assigned_advices: Option<&mut HashMap<(usize, usize), (circuit::Cell, usize)>>, + ) { + // Fixed values + for (name, column, ctx) in [ + ("q_enable", &config.q_enable, &self.q_enable), + ("q_first", &config.q_first, &self.q_first), + ("q_extend", &config.q_extend, &self.q_extend), + ("q_start", &config.q_start, &self.q_start), + ("q_compression", &config.q_compression, &self.q_compression), + ("q_end", &config.q_end, &self.q_end), + ("q_padding", &config.q_padding, &self.q_padding), + ( + "q_padding_last", + &config.q_padding_last, + &self.q_padding_last, + ), + ("q_squeeze", &config.q_squeeze, &self.q_squeeze), + ("q_final_word", &config.q_final_word, &self.q_final_word), + ("round_cst", &config.round_cst, &self.round_cst), + ("h_a", &config.h_a, &self.h_a), + ("h_e", &config.h_e, &self.h_e), + ] { + for (offset, &val) in ctx.advice.iter().enumerate() { + let value = if use_unknown { + Value::unknown() + } else { + Value::known(val) + }; + region.assign_fixed(|| name, *column, offset, || value); + } + } + + // Advice values + + for (name, column, ctx) in [ + ("is_enabled", &config.is_enabled, &self.is_enabled), + ("input_len", &config.input_len, &self.input_len), + ("input_rlc", &config.input_rlc, &self.input_rlc), + ("hash_rlc", &config.hash_rlc, &self.hash_rlc), + ] { + for (offset, &val) in ctx.advice.iter().enumerate() { + let value = if use_unknown { + Value::unknown() + } else { + Value::known(val) + }; + region.assign_advice(|| name, *column, offset, || value); + } + } + + itertools::multizip(( + config.is_paddings.iter(), + self.is_paddings.iter(), + iter::repeat("is_paddings"), + )) + .chain(itertools::multizip(( + config.data_rlcs.iter(), + self.data_rlcs.iter(), + iter::repeat("data_rlcs"), + ))) + .chain(itertools::multizip(( + config.word_w.iter(), + self.word_w.iter(), + iter::repeat("w word"), + ))) + .chain(itertools::multizip(( + config.word_a.iter(), + self.word_a.iter(), + iter::repeat("a word"), + ))) + .chain(itertools::multizip(( + config.word_e.iter(), + self.word_e.iter(), + iter::repeat("e word"), + ))) + .chain(itertools::multizip(( + config.final_hash_bytes.iter(), + self.final_hash_bytes.iter(), + iter::repeat("final hash bytes"), + ))) + .for_each(|(column, ctx, name)| { + for (offset, &val) in ctx.advice.iter().enumerate() { + let value = if use_unknown { + Value::unknown() + } else { + Value::known(val) + }; + region.assign_advice(|| name, *column, offset, || value); + } + }); + } } From 9ea58cd1f0d82ddf521959b76580fecc4ff9d72e Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Mon, 11 Sep 2023 13:28:57 +0200 Subject: [PATCH 14/33] uncomment CommitteeUpdateCircuit --- lightclient-circuits/src/builder.rs | 37 +- .../src/committee_update_circuit.rs | 667 +++++++----------- .../src/gadget/crypto/builder.rs | 75 +- lightclient-circuits/src/gadget/crypto/ecc.rs | 16 + .../src/gadget/crypto/hash2curve.rs | 2 +- lightclient-circuits/src/gadget/crypto/mod.rs | 15 +- .../src/gadget/crypto/sha256.rs | 9 +- .../src/gadget/crypto/sha256/builder.rs | 151 ++-- .../src/gadget/crypto/sha256/compression.rs | 2 +- .../src/gadget/crypto/sha256/spread.rs | 22 +- .../src/gadget/crypto/sha256_wide.rs | 283 ++------ .../src/gadget/crypto/sha256_wide/builder.rs | 131 ++-- .../src/gadget/crypto/sha256_wide/config.rs | 70 +- lightclient-circuits/src/poseidon.rs | 12 +- lightclient-circuits/src/ssz_merkle.rs | 6 +- lightclient-circuits/src/sync_step_circuit.rs | 42 +- lightclient-circuits/src/util/common.rs | 66 +- lightclient-circuits/src/witness.rs | 7 +- lightclient-circuits/src/witness/rotation.rs | 50 ++ .../src/witness/{state.rs => sync.rs} | 0 20 files changed, 760 insertions(+), 903 deletions(-) create mode 100644 lightclient-circuits/src/gadget/crypto/ecc.rs create mode 100644 lightclient-circuits/src/witness/rotation.rs rename lightclient-circuits/src/witness/{state.rs => sync.rs} (100%) diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index d9000ef2..dbff7c6a 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -8,32 +8,35 @@ use halo2_proofs::{ plonk::{Circuit, Column, ConstraintSystem, Error, Instance}, }; -use crate::{gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}, util::BaseThreadBuilder}; +use crate::{ + gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}, + util::{ThreadBuilderBase, ThreadBuilderConfigBase}, +}; #[derive(Clone, Debug)] /// Config shared for block header and storage proof circuits -pub struct Eth2Config { - sha: SHAConfig, +pub struct Eth2Config> { + sha: SHAConfig, pub instance: Column, } /// This is an extension of [`ShaCircuitBuilder`] that adds support for public instances (aka public inputs+outputs) -pub struct Eth2CircuitBuilder { - pub inner: ShaCircuitBuilder, +pub struct Eth2CircuitBuilder> { + pub inner: ShaCircuitBuilder, pub assigned_instances: Vec>, } -impl Eth2CircuitBuilder { - /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. - pub fn keygen(assigned_instances: Vec>, builder: ShaThreadBuilder) -> Self { +impl> Eth2CircuitBuilder { + /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [ThreadBuilder] set to true. + pub fn keygen(assigned_instances: Vec>, builder: ThreadBuilder) -> Self { Self { assigned_instances, inner: ShaCircuitBuilder::keygen(builder), } } - /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [GateThreadBuilder] set to false. - pub fn mock(assigned_instances: Vec>, builder: ShaThreadBuilder) -> Self { + /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [ThreadBuilder] set to false. + pub fn mock(assigned_instances: Vec>, builder: ThreadBuilder) -> Self { Self { assigned_instances, inner: ShaCircuitBuilder::mock(builder), @@ -43,7 +46,7 @@ impl Eth2CircuitBuilder { /// Creates a new [Eth2CircuitBuilder]. pub fn prover( assigned_instances: Vec>, - builder: ShaThreadBuilder, + builder: ThreadBuilder, break_points: MultiPhaseThreadBreakPoints, ) -> Self { Self { @@ -69,8 +72,10 @@ impl Eth2CircuitBuilder { } } -impl Circuit for Eth2CircuitBuilder { - type Config = Eth2Config; +impl> Circuit + for Eth2CircuitBuilder +{ + type Config = Eth2Config; type FloorPlanner = SimpleFloorPlanner; fn without_witnesses(&self) -> Self { @@ -78,7 +83,7 @@ impl Circuit for Eth2CircuitBuilder { } fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let sha = ShaCircuitBuilder::configure(meta); + let sha = ShaCircuitBuilder::::configure(meta); let instance = meta.instance_column(); meta.enable_equality(instance); @@ -109,7 +114,9 @@ impl Circuit for Eth2CircuitBuilder { } } -impl snark_verifier_sdk::CircuitExt for Eth2CircuitBuilder { +impl> snark_verifier_sdk::CircuitExt + for Eth2CircuitBuilder +{ fn num_instance(&self) -> Vec { vec![self.instance_count()] } diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index e2760301..e3a1229b 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -1,425 +1,248 @@ -// use std::{ -// cell::{Ref, RefCell}, -// collections::HashMap, -// env::{set_var, var}, -// fs, iter, -// marker::PhantomData, -// ops::Neg, -// path::Path, -// rc::Rc, -// vec, -// }; - -// use crate::{ -// gadget::crypto::{ -// Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, -// HashToCurveChip, Sha256ChipWide, -// }, -// poseidon::{g1_array_poseidon, poseidon_sponge}, -// sha256_circuit::{util::NUM_ROUNDS, Sha256CircuitConfig}, -// ssz_merkle::ssz_merkleize_chunks, -// table::Sha256Table, -// util::{ -// decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, -// }, -// witness::{self, HashInput, HashInputChunk}, -// }; -// use eth_types::{AppCurveExt, Field, Spec}; -// use ethereum_consensus::phase0::BeaconBlockHeader; -// use group::UncompressedEncoding; -// use halo2_base::{ -// gates::{ -// builder::{FlexGateConfigParams, GateThreadBuilder, RangeCircuitBuilder}, -// flex_gate::GateStrategy, -// range::RangeConfig, -// }, -// safe_types::{GateInstructions, RangeChip, RangeInstructions}, -// utils::{fs::gen_srs, CurveAffineExt}, -// AssignedValue, Context, QuantumCell, -// }; -// use halo2_ecc::{ -// bigint::ProperCrtUint, -// bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, -// ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, -// fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, -// }; -// use halo2_proofs::{ -// circuit::{Layouter, Region, SimpleFloorPlanner, Value}, -// dev::MockProver, -// plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, -// poly::kzg::commitment::ParamsKZG, -// }; -// use halo2curves::{ -// bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, -// bn256, -// }; -// use itertools::Itertools; -// use lazy_static::__Deref; -// use num_bigint::BigUint; -// use pasta_curves::group::{ff, GroupEncoding}; -// use poseidon::PoseidonChip; -// use snark_verifier_sdk::CircuitExt; -// use ssz_rs::Merkleized; - -// #[derive(Clone, Debug)] -// pub struct CommitteeUpdateCircuitConfig { -// range: RangeConfig, -// sha256_config: Sha256CircuitConfig, -// challenges: Challenges>, -// } - -// #[allow(type_alias_bounds)] -// #[derive(Clone, Debug)] -// pub struct CommitteeUpdateCircuit { -// builder: RefCell>, -// pubkeys_compressed: Vec>, -// pubkeys_y: Vec, -// dry_run: bool, -// sha256_offset: usize, -// _spec: PhantomData, -// } - -// impl CommitteeUpdateCircuit { -// fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self { -// let pubkeys_y = state -// .sync_committee -// .iter() -// .map(|v| { -// let g1_affine = G1Affine::from_uncompressed( -// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), -// ) -// .unwrap(); - -// g1_affine.y -// }) -// .collect_vec(); -// let sha256_offset = 0; -// Self { -// builder, -// pubkeys_compressed: state -// .sync_committee -// .iter() -// .cloned() -// .map(|v| v.pubkey) -// .collect_vec(), -// pubkeys_y, -// dry_run: false, -// sha256_offset, -// _spec: PhantomData, -// } -// } - -// pub fn dry_run(mut self) -> Self { -// self.dry_run = true; -// self -// } - -// fn decode_pubkeys<'a, I: IntoIterator>>>( -// &self, -// ctx: &mut Context, -// fp_chip: &FpChip<'a, F>, -// compressed_encodings: I, -// ) -> Vec> { -// let range = fp_chip.range(); -// let gate = fp_chip.gate(); - -// let g1_chip = G1Chip::::new(fp_chip); - -// let mut pubkeys = vec![]; - -// assert_eq!(self.pubkeys_compressed.len(), S::SYNC_COMMITTEE_SIZE); - -// for (assigned_bytes, y_coord) in -// itertools::multizip((compressed_encodings, self.pubkeys_y.iter())) -// { -// // assertion check for assigned_uncompressed vector to be equal to S::PubKeyCurve::BYTES_COMPRESSED from specification -// assert_eq!(assigned_bytes.len(), G1::BYTES_COMPRESSED); - -// // masked byte from compressed representation -// let masked_byte = &assigned_bytes[G1::BYTES_COMPRESSED - 1]; -// // clear the sign bit from masked byte -// let cleared_byte = Self::clear_flag_bits(range, masked_byte, ctx); -// // Use the cleared byte to construct the x coordinate -// let assigned_x_bytes_cleared = [ -// &assigned_bytes.as_slice()[..G1::BYTES_COMPRESSED - 1], -// &[cleared_byte], -// ] -// .concat(); -// let x_crt = decode_into_field::( -// assigned_x_bytes_cleared, -// &fp_chip.limb_bases, -// gate, -// ctx, -// ); - -// // Load private witness y coordinate -// let y_crt = fp_chip.load_private(ctx, *y_coord); -// // // Square y coordinate -// // let ysq = fp_chip.mul(ctx, y_crt.clone(), y_crt.clone()); -// // // Calculate y^2 using the elliptic curve equation -// // let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, x_crt.clone()); -// // // Constrain witness y^2 to be equal to calculated y^2 -// // fp_chip.assert_equal(ctx, ysq, ysq_calc); - -// pubkeys.push(EcPoint::new(x_crt, y_crt)); -// } - -// pubkeys -// } - -// /// Clears the 3 first least significat bits used for flags from a last byte of compressed pubkey. -// /// This function emulates bitwise and on 00011111 (0x1F): `b & 0b00011111` = c -// fn clear_flag_bits( -// range: &RangeChip, -// b: &AssignedValue, -// ctx: &mut Context, -// ) -> AssignedValue { -// let gate = range.gate(); -// // Shift `a` three bits to the left (equivalent to a << 3 mod 256) -// let b_shifted = gate.mul(ctx, *b, QuantumCell::Constant(F::from(8))); -// // since b_shifted can at max be 255*8=2^4 we use 16 bits for modulo division. -// let b_shifted = range.div_mod(ctx, b_shifted, BigUint::from(256u64), 16).1; - -// // Shift `s` three bits to the right (equivalent to s >> 3) to zeroing the first three bits (MSB) of `a`. -// range.div_mod(ctx, b_shifted, BigUint::from(8u64), 8).0 -// } - -// fn sync_committee_root_ssz<'a, I: IntoIterator>>>( -// ctx: &mut Context, -// region: &mut Region<'_, F>, -// hasher: &'a impl HashInstructions, -// compressed_encodings: I, -// ) -> Result>, Error> { -// let mut pubkeys_hashes = compressed_encodings -// .into_iter() -// .map(|bytes| { -// hasher -// .digest::<64>( -// HashInput::Single( -// bytes.into_iter().pad_using(64, |_| ctx.load_zero()).into(), -// ), -// ctx, -// region, -// ) -// .map(|r| r.output_bytes.into()) -// }) -// .collect::, _>>()?; -// ssz_merkleize_chunks(ctx, region, hasher, pubkeys_hashes) -// } -// } - -// impl Circuit for CommitteeUpdateCircuit { -// type Config = CommitteeUpdateCircuitConfig; -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// unimplemented!() -// } - -// fn configure(meta: &mut ConstraintSystem) -> Self::Config { -// let range = RangeCircuitBuilder::configure(meta); -// let hash_table = Sha256Table::construct(meta); -// let sha256_config = Sha256CircuitConfig::new::(meta, hash_table); -// CommitteeUpdateCircuitConfig { -// range, -// sha256_config, -// challenges: Challenges::mock(Value::known(Sha256CircuitConfig::fixed_challenge())), -// } -// } - -// fn synthesize( -// &self, -// mut config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// config -// .range -// .load_lookup_table(&mut layouter) -// .expect("load range lookup table"); - -// let mut first_pass = halo2_base::SKIP_FIRST_PASS; - -// let range = RangeChip::default(config.range.lookup_bits()); -// let fp_chip = FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); -// let fp2_chip = Fp2Chip::::new(&fp_chip); -// let g1_chip = EccChip::new(fp2_chip.fp_chip()); - -// let sha256_chip = Sha256ChipWide::new( -// &config.sha256_config, -// &range, -// config.challenges.sha256_input(), -// None, -// self.sha256_offset, -// ); - -// let builder_clone = RefCell::from(self.builder.borrow().deref().clone()); -// let mut builder = if self.dry_run { -// self.builder.borrow_mut() -// } else { -// builder_clone.borrow_mut() -// }; - -// layouter.assign_region( -// || "AggregationCircuitBuilder generated circuit", -// |mut region| { -// if first_pass { -// first_pass = false; -// return Ok(()); -// } - -// let ctx = builder.main(0); - -// let compressed_encodings = self -// .pubkeys_compressed -// .iter() -// .map(|bytes| ctx.assign_witnesses(bytes.iter().map(|&b| F::from(b as u64)))) -// .collect_vec(); - -// let root = Self::sync_committee_root_ssz( -// ctx, -// &mut region, -// &sha256_chip, -// compressed_encodings.clone(), -// )?; - -// let pubkey_points = self.decode_pubkeys(ctx, &fp_chip, compressed_encodings); -// let poseidon_commit = g1_array_poseidon(ctx, range.gate(), pubkey_points)?; - -// let extra_assignments = sha256_chip.take_extra_assignments(); - -// if self.dry_run { -// return Ok(()); -// } - -// let _ = builder.assign_all( -// &config.range.gate, -// &config.range.lookup_advice, -// &config.range.q_lookup, -// &mut region, -// extra_assignments, -// ); - -// Ok(()) -// }, -// ) -// } -// } - -// impl CircuitExt for CommitteeUpdateCircuit { -// fn num_instance(&self) -> Vec { -// self.instances().iter().map(|v| v.len()).collect() -// } - -// fn instances(&self) -> Vec> { -// vec![] -// } -// } - -// impl AppCircuitExt for CommitteeUpdateCircuit { -// fn new_from_state( -// builder: RefCell>, -// state: &witness::SyncState, -// ) -> Self { -// let pubkeys_y = state -// .sync_committee -// .iter() -// .map(|v| { -// let g1_affine = G1Affine::from_uncompressed( -// &v.pubkey_uncompressed.as_slice().try_into().unwrap(), -// ) -// .unwrap(); - -// g1_affine.y -// }) -// .collect_vec(); - -// Self { -// builder, -// pubkeys_compressed: state -// .sync_committee -// .iter() -// .cloned() -// .map(|v| v.pubkey) -// .collect_vec(), -// pubkeys_y, -// sha256_offset: 0, -// dry_run: false, -// _spec: PhantomData, -// } -// } - -// fn parametrize(k: usize) -> FlexGateConfigParams { -// let circuit = CommitteeUpdateCircuit::::default().dry_run(); - -// let mock_k = 19; -// // Due to the composite nature of Sync circuit (vanila + halo2-lib) -// // we have to perfrom dry run to determine best circuit config. -// let mock_params = FlexGateConfigParams { -// strategy: GateStrategy::Vertical, -// k: mock_k, -// num_advice_per_phase: vec![300], -// num_lookup_advice_per_phase: vec![60], -// num_fixed: 1, -// }; - -// set_var( -// "FLEX_GATE_CONFIG_PARAMS", -// serde_json::to_string(&mock_params).unwrap(), -// ); -// std::env::set_var("LOOKUP_BITS", (mock_k - 1).to_string()); - -// let _ = MockProver::::run(mock_k as u32, &circuit, vec![]); -// circuit.builder.borrow().config(k, Some(0)); -// std::env::set_var("LOOKUP_BITS", (k - 1).to_string()); -// let params: FlexGateConfigParams = -// serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); -// println!("params: {:?}", params); -// params -// } - -// fn setup( -// config: &FlexGateConfigParams, -// out: Option<&Path>, -// ) -> (ParamsKZG, ProvingKey) { -// let circuit = CommitteeUpdateCircuit::::default(); - -// set_var("LOOKUP_BITS", (config.k - 1).to_string()); -// set_var( -// "FLEX_GATE_CONFIG_PARAMS", -// serde_json::to_string(&config).unwrap(), -// ); - -// let params = gen_srs(config.k as u32); - -// let pk = gen_pkey(|| "committee_update", ¶ms, out, circuit).unwrap(); - -// (params, pk) -// } -// } - -// impl Default for CommitteeUpdateCircuit { -// fn default() -> Self { -// let builder: GateThreadBuilder = GateThreadBuilder::keygen(); - -// let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); -// let dymmy_y = Fq::from((G1::B as f64).sqrt() as u64); - -// let pubkeys_y = iter::repeat(dymmy_y) -// .take(S::SYNC_COMMITTEE_SIZE) -// .collect_vec(); - -// Self { -// builder: RefCell::from(builder), -// pubkeys_compressed: iter::repeat(dummy_x_bytes) -// .take(S::SYNC_COMMITTEE_SIZE) -// .collect_vec(), -// pubkeys_y, -// sha256_offset: 0, -// dry_run: false, -// _spec: PhantomData, -// } -// } -// } +use std::{ + cell::{Ref, RefCell}, + collections::HashMap, + env::{set_var, var}, + fs, iter, + marker::PhantomData, + ops::Neg, + path::Path, + rc::Rc, + vec, +}; + +use crate::{ + builder::Eth2CircuitBuilder, + gadget::crypto::{ + calculate_ysquared, Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, + HashToCurveCache, HashToCurveChip, Sha256ChipWide, ShaBitThreadBuilder, + }, + poseidon::{fq_array_poseidon, poseidon_sponge}, + ssz_merkle::ssz_merkleize_chunks, + util::{ + decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, + ThreadBuilderBase, + }, + witness::{self, HashInput, HashInputChunk}, +}; +use eth_types::{AppCurveExt, Field, Spec}; +use ethereum_consensus::phase0::BeaconBlockHeader; +use group::UncompressedEncoding; +use halo2_base::{ + gates::{ + builder::{ + FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, + RangeCircuitBuilder, + }, + flex_gate::GateStrategy, + range::{RangeConfig, RangeStrategy}, + }, + safe_types::{GateInstructions, RangeChip, RangeInstructions}, + utils::{fs::gen_srs, CurveAffineExt}, + AssignedValue, Context, QuantumCell, +}; +use halo2_ecc::{ + bigint::ProperCrtUint, + bls12_381::{bls_signature, pairing::PairingChip, Fp12Chip, Fp2Chip, FpChip}, + ecc::{bls_signature::BlsSignatureChip, EcPoint, EccChip}, + fields::{fp12, vector::FieldVector, FieldChip, FieldExtConstructor}, +}; +use halo2_proofs::{ + circuit::{Layouter, Region, SimpleFloorPlanner, Value}, + dev::MockProver, + plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, + poly::kzg::commitment::ParamsKZG, +}; +use halo2curves::{ + bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, + bn256, +}; +use itertools::Itertools; +use lazy_static::__Deref; +use num_bigint::BigUint; +use pasta_curves::group::{ff, GroupEncoding}; +use poseidon::PoseidonChip; +use snark_verifier_sdk::CircuitExt; +use ssz_rs::Merkleized; + +#[allow(type_alias_bounds)] +#[derive(Clone, Debug, Default)] +pub struct CommitteeUpdateCircuit { + _f: PhantomData, + _spec: PhantomData, +} + +impl CommitteeUpdateCircuit { + // fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self { + // let pubkeys_y = state + // .sync_committee + // .iter() + // .map(|v| { + // let g1_affine = G1Affine::from_uncompressed( + // &v.pubkey_uncompressed.as_slice().try_into().unwrap(), + // ) + // .unwrap(); + + // g1_affine.y + // }) + // .collect_vec(); + // let sha256_offset = 0; + // Self { + // builder, + // pubkeys_compressed: state + // .sync_committee + // .iter() + // .cloned() + // .map(|v| v.pubkey) + // .collect_vec(), + // pubkeys_y, + // dry_run: false, + // sha256_offset, + // _spec: PhantomData, + // } + // } + + fn synthesize( + &self, + thread_pool: &mut ShaBitThreadBuilder, + range: &RangeChip, + args: &witness::CommitteeRotationArgs, + ) -> Result>, Error> { + let mut first_pass = halo2_base::SKIP_FIRST_PASS; + + let fp_chip = FpChip::::new(range, G2::LIMB_BITS, G2::NUM_LIMBS); + let fp2_chip = Fp2Chip::::new(&fp_chip); + let g1_chip = EccChip::new(fp2_chip.fp_chip()); + + let sha256_chip = Sha256ChipWide::new(range, args.randomness); + + let compressed_encodings = args + .pubkeys_compressed + .iter() + .map(|bytes| { + thread_pool + .main() + .assign_witnesses(bytes.iter().map(|&b| F::from(b as u64))) + }) + .collect_vec(); + + let root = + Self::sync_committee_root_ssz(thread_pool, &sha256_chip, compressed_encodings.clone())?; + + let pubkeys_x = Self::decode_pubkeys_x(thread_pool.main(), &fp_chip, compressed_encodings); + let poseidon_commit = fq_array_poseidon(thread_pool.main(), range.gate(), &pubkeys_x)?; + + Ok(vec![]) + } + + fn decode_pubkeys_x<'a, I: IntoIterator>>>( + ctx: &mut Context, + fp_chip: &FpChip<'a, F>, + compressed_encodings: I, + ) -> Vec> { + let range = fp_chip.range(); + let gate = fp_chip.gate(); + + let g1_chip = G1Chip::::new(fp_chip); + + let mut pubkeys_x = vec![]; + + for assigned_bytes in compressed_encodings { + // assertion check for assigned_uncompressed vector to be equal to S::PubKeyCurve::BYTES_COMPRESSED from specification + assert_eq!(assigned_bytes.len(), G1::BYTES_COMPRESSED); + + // masked byte from compressed representation + let masked_byte = &assigned_bytes[G1::BYTES_COMPRESSED - 1]; + // clear the sign bit from masked byte + let cleared_byte = Self::clear_flag_bits(range, masked_byte, ctx); + // Use the cleared byte to construct the x coordinate + let assigned_x_bytes_cleared = [ + &assigned_bytes.as_slice()[..G1::BYTES_COMPRESSED - 1], + &[cleared_byte], + ] + .concat(); + let x_crt = decode_into_field::( + assigned_x_bytes_cleared, + &fp_chip.limb_bases, + gate, + ctx, + ); + + pubkeys_x.push(x_crt); + } + + pubkeys_x + } + + /// Clears the 3 first least significat bits used for flags from a last byte of compressed pubkey. + /// This function emulates bitwise and on 00011111 (0x1F): `b & 0b00011111` = c + fn clear_flag_bits( + range: &RangeChip, + b: &AssignedValue, + ctx: &mut Context, + ) -> AssignedValue { + let gate = range.gate(); + // Shift `a` three bits to the left (equivalent to a << 3 mod 256) + let b_shifted = gate.mul(ctx, *b, QuantumCell::Constant(F::from(8))); + // since b_shifted can at max be 255*8=2^4 we use 16 bits for modulo division. + let b_shifted = range.div_mod(ctx, b_shifted, BigUint::from(256u64), 16).1; + + // Shift `s` three bits to the right (equivalent to s >> 3) to zeroing the first three bits (MSB) of `a`. + range.div_mod(ctx, b_shifted, BigUint::from(8u64), 8).0 + } + + fn sync_committee_root_ssz< + ThreadBuilder: ThreadBuilderBase, + I: IntoIterator>>, + >( + thread_pool: &mut ThreadBuilder, + hasher: &impl HashInstructions, + compressed_encodings: I, + ) -> Result>, Error> { + let mut pubkeys_hashes = compressed_encodings + .into_iter() + .map(|bytes| { + let input = bytes + .into_iter() + .pad_using(64, |_| thread_pool.main().load_zero()) + .into(); + hasher + .digest::<64>(thread_pool, HashInput::Single(input), false) + .map(|r| r.output_bytes.into()) + }) + .collect::, _>>()?; + + ssz_merkleize_chunks(thread_pool, hasher, pubkeys_hashes) + } +} + +impl AppCircuitExt for CommitteeUpdateCircuit { + fn setup( + k: usize, + out: Option<&Path>, + ) -> ( + ParamsKZG, + ProvingKey, + MultiPhaseThreadBreakPoints, + ) { + let args = witness::CommitteeRotationArgs::::default(); + let circuit = CommitteeUpdateCircuit::::default(); + let range = RangeChip::::new(RangeStrategy::Vertical, 8); + let mut thread_pool = ShaBitThreadBuilder::keygen(); + + let assigned_instances = circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); + let config = thread_pool.config(k, Some(109)); + + let params = gen_srs(k as u32); + + let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); + + let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); + + let break_points = circuit.break_points(); + + (params, pk, break_points) + } +} // #[cfg(test)] // mod tests { diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index e0959d0a..b99bd8c6 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -1,4 +1,4 @@ -use std::{cell::RefCell, collections::HashMap, env::set_var, mem}; +use std::{cell::RefCell, collections::HashMap, env::set_var, marker::PhantomData, mem}; use eth_types::Field; use halo2_base::{ @@ -18,17 +18,20 @@ use halo2_proofs::{ }; use snark_verifier_sdk::CircuitExt; -use crate::{gadget::crypto::{Sha256Chip, ShaThreadBuilder}, util::BaseThreadBuilder}; +use crate::{ + gadget::crypto::{Sha256Chip, ShaThreadBuilder}, + util::{ThreadBuilderBase, ThreadBuilderConfigBase}, +}; use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; #[derive(Debug, Clone)] -pub struct SHAConfig { - pub spread: SpreadConfig, +pub struct SHAConfig = SpreadConfig> { + pub compression: CustomConfig, pub range: RangeConfig, } -impl SHAConfig { +impl> SHAConfig { pub fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { let degree = params.k; let mut range = RangeConfig::configure( @@ -40,40 +43,44 @@ impl SHAConfig { params.k - 1, degree, ); - let spread = SpreadConfig::configure(meta, 8, 2); // TODO configure num_advice_columns + let compression = CustomConfig::configure(meta, params); range.gate.max_rows = (1 << degree) - meta.minimum_rows(); - Self { range, spread } + Self { range, compression } } } -pub struct ShaCircuitBuilder { - pub builder: RefCell>, +pub struct ShaCircuitBuilder = ShaThreadBuilder> { + pub builder: RefCell, pub break_points: RefCell, // `RefCell` allows the circuit to record break points in a keygen call of `synthesize` for use in later witness gen + _f: PhantomData, } -impl ShaCircuitBuilder { +impl> ShaCircuitBuilder { /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. - pub fn keygen(builder: ShaThreadBuilder) -> Self { + pub fn keygen(builder: ThreadBuilder) -> Self { Self { builder: RefCell::new(builder.unknown(true)), break_points: RefCell::new(vec![]), + _f: PhantomData, } } /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [GateThreadBuilder] set to false. - pub fn mock(builder: ShaThreadBuilder) -> Self { + pub fn mock(builder: ThreadBuilder) -> Self { Self { builder: RefCell::new(builder.unknown(false)), break_points: RefCell::new(vec![]), + _f: PhantomData, } } /// Creates a new [ShaCircuitBuilder]. - pub fn prover(builder: ShaThreadBuilder, break_points: MultiPhaseThreadBreakPoints) -> Self { + pub fn prover(builder: ThreadBuilder, break_points: MultiPhaseThreadBreakPoints) -> Self { Self { builder: RefCell::new(builder.unknown(false)), break_points: RefCell::new(break_points), + _f: PhantomData, } } @@ -87,7 +94,7 @@ impl ShaCircuitBuilder { #[allow(clippy::type_complexity)] pub fn sub_synthesize( &self, - config: &SHAConfig, + config: &SHAConfig, layouter: &mut impl Layouter, ) -> Result, Error> { config @@ -100,7 +107,7 @@ impl ShaCircuitBuilder { let mut assigned_advices = HashMap::new(); - config.spread.load(layouter)?; + config.compression.load(layouter)?; layouter.assign_region( || "ShaCircuitBuilder generated circuit", @@ -117,41 +124,23 @@ impl ShaCircuitBuilder { &config.range.gate, &config.range.lookup_advice, &config.range.q_lookup, - &config.spread, + &config.compression, &mut region, Default::default(), - ); + )?; *self.break_points.borrow_mut() = assignments.break_points.clone(); assigned_advices = assignments.assigned_advices; } else { let builder = &mut self.builder.borrow_mut(); let break_points = &mut self.break_points.borrow_mut(); - let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); - // warning: we currently take all contexts from phase 0, which means you can't read the values - // from these contexts later in phase 1. If we want to read, should clone here - let threads = mem::take(&mut builder.gate_builder.threads[FIRST_PHASE]); - - assign_threads_in( - FIRST_PHASE, - threads, + builder.assign_witnesses( &config.range.gate, - &config.range.lookup_advice[FIRST_PHASE], - &mut region, - break_points_gate, - ); - - let threads_dense = mem::take(&mut builder.threads_dense); - let threads_spread = mem::take(&mut builder.threads_spread); - - assign_threads_sha( - &threads_dense, - &threads_spread, - &config.spread, + &config.range.lookup_advice, + &config.compression, &mut region, - false, - None, - ); + break_points, + )?; } Ok(()) }, @@ -160,15 +149,15 @@ impl ShaCircuitBuilder { } } -impl Circuit for ShaCircuitBuilder { - type Config = SHAConfig; +impl> Circuit for ShaCircuitBuilder { + type Config = SHAConfig; type FloorPlanner = SimpleFloorPlanner; fn without_witnesses(&self) -> Self { unimplemented!() } - fn configure(meta: &mut ConstraintSystem) -> SHAConfig { + fn configure(meta: &mut ConstraintSystem) -> SHAConfig { let params: FlexGateConfigParams = serde_json::from_str(&std::env::var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); SHAConfig::configure(meta, params) diff --git a/lightclient-circuits/src/gadget/crypto/ecc.rs b/lightclient-circuits/src/gadget/crypto/ecc.rs new file mode 100644 index 00000000..73fef72b --- /dev/null +++ b/lightclient-circuits/src/gadget/crypto/ecc.rs @@ -0,0 +1,16 @@ +use eth_types::{Field, AppCurveExt}; +use halo2_base::Context; +use halo2_ecc::{bls12_381::FpChip, bigint::ProperCrtUint, fields::FieldChip}; + +// Calculates y^2 = x^3 + 4 (the curve equation) +pub fn calculate_ysquared( + ctx: &mut Context, + field_chip: &FpChip<'_, F>, + x: ProperCrtUint, +) -> ProperCrtUint { + let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); + let x_cubed = field_chip.mul(ctx, x_squared, x); + + let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); + field_chip.carry_mod(ctx, plus_b) +} diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 5591d2e6..65026204 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -4,7 +4,7 @@ use std::ops::Deref; use std::{cell::RefCell, iter, marker::PhantomData}; -use crate::util::{AsBits, BaseThreadBuilder}; +use crate::util::{AsBits, ThreadBuilderBase}; use crate::{ util::{bigint_to_le_bytes, decode_into_field, decode_into_field_be}, witness::HashInput, diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 22388277..9a5d75f7 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -3,6 +3,7 @@ mod hash2curve; mod sha256; mod sha256_wide; mod util; +mod ecc; pub use builder::{SHAConfig, ShaCircuitBuilder}; use eth_types::{AppCurveExt, Field, HashCurveExt}; @@ -15,10 +16,13 @@ use halo2_ecc::{ }; use halo2_proofs::plonk::Error; pub use hash2curve::{HashToCurveCache, HashToCurveChip}; +use lazy_static::lazy_static; pub use sha256::{Sha256Chip, ShaContexts, ShaThreadBuilder}; -pub use sha256_wide::*; +pub use sha256_wide::{Sha256ChipWide, ShaBitThreadBuilder}; -use crate::{witness::HashInput, util::BaseThreadBuilder}; +pub use ecc::calculate_ysquared; + +use crate::{util::ThreadBuilderBase, witness::HashInput}; pub type FpPoint = ProperCrtUint; pub type Fp2Point = FieldVector>; pub type G1Point = EcPoint>; @@ -30,7 +34,7 @@ pub type G1Chip<'chip, F> = EccChip<'chip, F, FpChip<'chip, F>>; #[allow(type_alias_bounds)] pub type G2Chip<'chip, F> = EccChip<'chip, F, Fp2Chip<'chip, F>>; -pub trait HashInstructions = ShaThreadBuilder> { +pub trait HashInstructions = ShaThreadBuilder> { const BLOCK_SIZE: usize; const DIGEST_SIZE: usize; @@ -53,3 +57,8 @@ pub struct AssignedHashResult { pub input_bytes: Vec>, pub output_bytes: [AssignedValue; 32], } + +// This is a temporary measure. TODO: use challenges API. +pub fn constant_randomness() -> F { + F::from_u128(0xca9d6022267d3bd658bf) +} diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index f9179107..19f6a89a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -17,7 +17,7 @@ use std::collections::HashMap; use std::{cell::RefCell, char::MAX}; use crate::gadget::crypto::sha256::compression::{sha256_compression, INIT_STATE}; -use crate::util::{AssignedValueCell, BaseThreadBuilder}; +use crate::util::{AssignedValueCell, ThreadBuilderBase}; use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; use halo2_base::QuantumCell; @@ -231,13 +231,6 @@ mod test { }; use sha2::{Digest, Sha256}; - #[derive(Debug, Clone)] - struct TestConfig { - spread_config: SpreadConfig, - range: RangeConfig, - challenges: Challenges>, - } - fn test_circuit( k: usize, mut builder: ShaThreadBuilder, diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 052247d9..24aedadf 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -1,24 +1,25 @@ -use std::{cell::RefCell, collections::HashMap, iter}; +use std::{cell::RefCell, collections::HashMap, iter, mem}; use eth_types::Field; use halo2_base::{ gates::{ builder::{ - CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, - ThreadBreakPoints, + assign_threads_in, CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, + KeygenAssignments, MultiPhaseThreadBreakPoints, ThreadBreakPoints, }, flex_gate::FlexGateConfig, + range, }, utils::ScalarField, Context, }; use halo2_proofs::{ circuit::{self, Region, Value}, - plonk::{Advice, Column, Selector}, + plonk::{Advice, Column, Selector, Error}, }; use itertools::Itertools; -use crate::util::BaseThreadBuilder; +use crate::util::ThreadBuilderBase; use super::SpreadConfig; @@ -36,10 +37,10 @@ pub struct ShaThreadBuilder { pub type ShaContexts<'a, F> = (&'a mut Context, &'a mut Context); -impl ShaThreadBuilder { - // re-expose some methods from [`GateThreadBuilder`] for convenience - #[allow(unused_mut)] - pub fn new(mut witness_gen_only: bool) -> Self { +impl ThreadBuilderBase for ShaThreadBuilder { + type Config = SpreadConfig; + + fn new(mut witness_gen_only: bool) -> Self { Self { threads_spread: Vec::new(), threads_dense: Vec::new(), @@ -47,65 +48,36 @@ impl ShaThreadBuilder { } } - pub fn from_stage(stage: CircuitBuilderStage) -> Self { - Self::new(stage == CircuitBuilderStage::Prover) - } - - pub fn mock() -> Self { - Self::new(false) + fn unknown(mut self, use_unknown: bool) -> Self { + self.gate_builder = self.gate_builder.unknown(use_unknown); + self } - pub fn keygen() -> Self { - Self::new(false).unknown(true) + fn main(&mut self) -> &mut Context { + self.gate_builder.main(FIRST_PHASE) } - pub fn prover() -> Self { - Self::new(true) + fn witness_gen_only(&self) -> bool { + self.gate_builder.witness_gen_only() } - pub fn unknown(mut self, use_unknown: bool) -> Self { - self.gate_builder = self.gate_builder.unknown(use_unknown); - self - } - - pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { - if self.threads_dense.is_empty() { - self.new_thread_dense(); - } - if self.threads_spread.is_empty() { - self.new_thread_spread(); - } - ( - self.gate_builder.main(FIRST_PHASE), - ( - self.threads_dense.last_mut().unwrap(), - self.threads_spread.last_mut().unwrap(), - ), - ) + fn use_unknown(&self) -> bool { + self.gate_builder.use_unknown() } - pub fn new_thread_dense(&mut self) -> &mut Context { - let thread_id = self.get_new_thread_id(); - self.threads_dense - .push(Context::new(self.witness_gen_only(), thread_id)); - self.threads_dense.last_mut().unwrap() + fn thread_count(&self) -> usize { + self.gate_builder.thread_count() } - pub fn new_thread_spread(&mut self) -> &mut Context { - let thread_id = self.get_new_thread_id(); - self.threads_spread - .push(Context::new(self.witness_gen_only(), thread_id)); - self.threads_spread.last_mut().unwrap() + fn get_new_thread_id(&mut self) -> usize { + self.gate_builder.get_new_thread_id() } - /// Auto-calculate configuration parameters for the circuit - pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { self.gate_builder.config(k, minimum_rows) } - /// Assigns all advice and fixed cells, turns on selectors, imposes equality constraints. - /// This should only be called during keygen. - pub fn assign_all( + fn assign_all( &mut self, gate: &FlexGateConfig, lookup_advice: &[Vec>], @@ -117,7 +89,7 @@ impl ShaThreadBuilder { assigned_constants, mut break_points, }: KeygenAssignments, - ) -> KeygenAssignments { + ) -> Result, Error> { assert!(!self.witness_gen_only()); assign_threads_sha( @@ -144,7 +116,7 @@ impl ShaThreadBuilder { .append(&mut ctx.constant_equality_constraints); } - self.gate_builder.assign_all( + Ok(self.gate_builder.assign_all( gate, lookup_advice, q_lookup, @@ -154,29 +126,70 @@ impl ShaThreadBuilder { assigned_constants, break_points, }, - ) + )) } -} -impl BaseThreadBuilder for ShaThreadBuilder { - fn main(&mut self) -> &mut Context { - self.gate_builder.main(FIRST_PHASE) - } + fn assign_witnesses( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + spread: &SpreadConfig, + region: &mut Region, + break_points: &mut MultiPhaseThreadBreakPoints, + ) -> Result<(), Error> { + let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); + // warning: we currently take all contexts from phase 0, which means you can't read the values + // from these contexts later in phase 1. If we want to read, should clone here + let threads = mem::take(&mut self.gate_builder.threads[FIRST_PHASE]); - fn witness_gen_only(&self) -> bool { - self.gate_builder.witness_gen_only() + assign_threads_in( + FIRST_PHASE, + threads, + gate, + &lookup_advice[FIRST_PHASE], + region, + break_points_gate, + ); + + let threads_dense = mem::take(&mut self.threads_dense); + let threads_spread = mem::take(&mut self.threads_spread); + + assign_threads_sha(&threads_dense, &threads_spread, spread, region, false, None); + + Ok(()) } +} - fn use_unknown(&self) -> bool { - self.gate_builder.use_unknown() + +impl ShaThreadBuilder { + pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { + if self.threads_dense.is_empty() { + self.new_thread_dense(); + } + if self.threads_spread.is_empty() { + self.new_thread_spread(); + } + ( + self.gate_builder.main(FIRST_PHASE), + ( + self.threads_dense.last_mut().unwrap(), + self.threads_spread.last_mut().unwrap(), + ), + ) } - fn thread_count(&self) -> usize { - self.gate_builder.thread_count() + pub fn new_thread_dense(&mut self) -> &mut Context { + let thread_id = self.get_new_thread_id(); + self.threads_dense + .push(Context::new(self.witness_gen_only(), thread_id)); + self.threads_dense.last_mut().unwrap() } - fn get_new_thread_id(&mut self) -> usize { - self.gate_builder.get_new_thread_id() + pub fn new_thread_spread(&mut self) -> &mut Context { + let thread_id = self.get_new_thread_id(); + self.threads_spread + .push(Context::new(self.witness_gen_only(), thread_id)); + self.threads_spread.last_mut().unwrap() } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index 483761a2..bb4c2d35 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -1,6 +1,6 @@ use std::cell::RefMut; -use crate::util::BaseThreadBuilder; +use crate::util::ThreadBuilderBase; use super::ShaThreadBuilder; use super::builder::ShaContexts; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index e0e1c5fa..1b119401 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -1,11 +1,12 @@ use std::marker::PhantomData; -use crate::util::BaseThreadBuilder; +use crate::util::{ThreadBuilderBase, ThreadBuilderConfigBase}; use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::{compression::SpreadU32, util::*}; use eth_types::Field; +use halo2_base::gates::builder::FlexGateConfigParams; use halo2_base::halo2_proofs::halo2curves::FieldExt; use halo2_base::halo2_proofs::{ circuit::{AssignedCell, Cell, Layouter, Region, SimpleFloorPlanner, Value}, @@ -89,8 +90,15 @@ impl SpreadConfig { region.name_column(|| format!("spread_{}", i), col); } } +} + - pub fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { +impl ThreadBuilderConfigBase for SpreadConfig { + fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { + Self::configure(meta, 8, 2) // TODO configure num_advice_columns + } + + fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { layouter.assign_table( || "spread table", |mut table| { @@ -120,6 +128,16 @@ impl SpreadConfig { )?; Ok(()) } + + fn annotate_columns_in_region(&self, region: &mut Region) { + for (i, &column) in self.spreads.iter().enumerate() { + region.name_column(|| format!("spread_{i}"), column); + } + + for (i, &column) in self.denses.iter().enumerate() { + region.name_column(|| format!("dense_{i}"), column); + } + } } #[derive(Debug, Clone)] diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 7fe4c35a..45e07407 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -16,7 +16,7 @@ use std::{cell::RefCell, char::MAX}; use crate::gadget::crypto::sha256_wide::util::Sha256AssignedRows; use crate::gadget::crypto::sha256_wide::witness::multi_sha256; use crate::gadget::rlc; -use crate::util::{AssignedValueCell, BaseThreadBuilder}; +use crate::util::{AssignedValueCell, ThreadBuilderBase}; use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; @@ -31,7 +31,7 @@ use halo2_proofs::{ plonk::{Assigned, Error}, }; -use self::builder::ShaBitThreadBuilder; +pub use self::builder::ShaBitThreadBuilder; use self::config::Sha256BitConfig; use self::util::{NUM_BYTES_FINAL_HASH, NUM_WORDS_TO_ABSORB}; @@ -164,10 +164,10 @@ impl<'a, F: Field> HashInstructions> for Sha256ChipWid } impl<'a, F: Field> Sha256ChipWide<'a, F> { - pub fn new(range: &'a RangeChip, randomness: Value) -> Self { + pub fn new(range: &'a RangeChip, randomness: F) -> Self { Self { range, - randomness: value_to_option(randomness).expect("randomness is not assigned"), + randomness, } } @@ -180,7 +180,7 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { let max_round = MAX_INPUT_SIZE / Self::BLOCK_SIZE; let mut assigned_rows = Sha256AssignedRows::new(); - let witness = multi_sha256(&[input], Sha256BitConfig::fixed_challenge()); + let witness = multi_sha256(&[input], self.randomness); let vec_vecs = witness .iter() .map(|sha256_row| { @@ -244,218 +244,61 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { } } -// #[cfg(test)] -// mod test { -// use std::vec; -// use std::{cell::RefCell, marker::PhantomData}; - -// use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Test; -// use halo2_base::gates::range::RangeConfig; -// use halo2_base::utils::fs::gen_srs; -// use halo2_base::SKIP_FIRST_PASS; -// use halo2_base::{ -// gates::{builder::GateThreadBuilder, range::RangeStrategy}, -// halo2_proofs::{ -// circuit::{Layouter, SimpleFloorPlanner}, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{Circuit, ConstraintSystem}, -// }, -// }; -// use sha2::{Digest, Sha256}; - -// #[derive(Debug, Clone)] -// struct TestConfig { -// sha256_config: Sha256BitConfig, -// pub max_byte_size: usize, -// range: RangeConfig, -// challenges: Challenges>, -// } - -// #[derive(Debug, Clone)] -// struct TestCircuit { -// builder: RefCell>, -// range: RangeChip, -// test_input: HashInput>, -// test_output: [u8; 32], -// _f: PhantomData, -// } - -// impl Circuit for TestCircuit -// where -// [(); Self::MAX_BYTE_SIZE]:, -// { -// type Config = TestConfig; -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// unimplemented!() -// } - -// fn configure(meta: &mut ConstraintSystem) -> Self::Config { -// let sha256_configs = Sha256BitConfig::::new::(meta); -// let range = RangeConfig::configure( -// meta, -// RangeStrategy::Vertical, -// &[Self::NUM_ADVICE], -// &[Self::NUM_LOOKUP_ADVICE], -// Self::NUM_FIXED, -// Self::LOOKUP_BITS, -// Self::K, -// ); -// Self::Config { -// sha256_config: sha256_configs, -// max_byte_size: Self::MAX_BYTE_SIZE, -// range, -// challenges: Challenges::mock(Value::known(Sha256BitConfig::fixed_challenge())), -// } -// } - -// fn synthesize( -// &self, -// config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// config.range.load_lookup_table(&mut layouter)?; -// let mut first_pass = SKIP_FIRST_PASS; -// let sha256 = Sha256ChipWide::new( -// &config.sha256_config, -// &self.range, -// config.challenges.sha256_input(), -// None, -// 0, -// ); - -// let mut builder = self.builder.borrow().clone(); - -// let _ = layouter.assign_region( -// || "sha2 test", -// |mut region| { -// if first_pass { -// first_pass = false; -// println!("first pass"); -// return Ok(vec![]); -// } -// config.sha256_config.annotate_columns_in_region(&mut region); - -// let ctx = builder.main(0); - -// let result = sha256.digest::<64>(self.test_input.clone(), ctx, &mut region)?; - -// let assigned_hash = result.output_bytes; -// println!( -// "assigned hash: {:?}", -// assigned_hash.map(|e| e.value().get_lower_32()) -// ); - -// // let correct_output = self -// // .test_output -// // .map(|b| ctx.load_witness(F::from(b as u64))); - -// // for (hash, check) in assigned_hash.iter().zip(correct_output.iter()) { -// // ctx.constrain_equal(hash, check); -// // } - -// let extra_assignments = sha256.take_extra_assignments(); - -// let _ = builder.assign_all( -// &config.range.gate, -// &config.range.lookup_advice, -// &config.range.q_lookup, -// &mut region, -// extra_assignments, -// ); - -// Ok(assigned_hash.into_iter().map(|v| v.cell).collect()) -// }, -// )?; - -// Ok(()) -// } -// } - -// impl TestCircuit { -// const MAX_BYTE_SIZE: usize = 64; -// const NUM_ADVICE: usize = 5; -// const NUM_FIXED: usize = 1; -// const NUM_LOOKUP_ADVICE: usize = 4; -// const LOOKUP_BITS: usize = 8; -// const K: usize = 11; -// } - -// #[test] -// fn test_sha256_wide_chip_constant_size() { -// let k = TestCircuit::::K as u32; - -// let test_input = vec![0u8; 128]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::new(false); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: test_input.into_witness(), -// test_output, -// _f: PhantomData, -// }; - -// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// } - -// #[test] -// fn test_sha256_wide_params_gen() { -// let k = TestCircuit::::K as u32; -// let test_input = vec![0u8; 128]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::keygen(); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: test_input.into_witness(), -// test_output, -// _f: PhantomData, -// }; -// let params = gen_srs(k); -// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); -// } - -// #[test] -// fn test_sha256_wide_proof_gen() { -// let k = TestCircuit::::K as u32; -// let test_input = vec![2u8; 32]; -// let test_output: [u8; 32] = Sha256::digest(&test_input).into(); -// let range = RangeChip::default(TestCircuit::::LOOKUP_BITS); -// let builder = GateThreadBuilder::keygen(); -// let circuit = TestCircuit:: { -// builder: RefCell::new(builder), -// range, -// test_input: HashInput::TwoToOne( -// test_input.clone().into_witness(), -// test_input.into_witness(), -// ), -// test_output, -// _f: PhantomData, -// }; -// let pf_time = start_timer!(|| "mock prover"); - -// let prover = MockProver::run(k, &circuit, vec![]).unwrap(); -// prover.assert_satisfied(); -// prover.verify().unwrap(); -// end_timer!(pf_time); - -// let params = gen_srs(k); - -// let pkey = gen_pkey(|| "sha256_chip", ¶ms, None, &circuit).unwrap(); - -// let proof = full_prover(¶ms, &pkey, circuit, vec![]); - -// let is_valid = full_verifier(¶ms, pkey.get_vk(), proof, vec![]); -// assert!(is_valid); -// } -// } + +#[cfg(test)] +mod test { + use std::env::var; + use std::vec; + use std::{cell::RefCell, marker::PhantomData}; + + use crate::gadget::crypto::{ShaCircuitBuilder, constant_randomness}; + use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Test; + use halo2_base::gates::builder::FlexGateConfigParams; + use halo2_base::gates::range::RangeConfig; + use halo2_base::utils::fs::gen_srs; + use halo2_base::SKIP_FIRST_PASS; + use halo2_base::{ + gates::{builder::GateThreadBuilder, range::RangeStrategy}, + halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{Circuit, ConstraintSystem}, + }, + }; + use sha2::{Digest, Sha256}; + + fn test_circuit( + k: usize, + mut builder: ShaBitThreadBuilder, + input_vector: &[Vec], + ) -> Result>, Error> { + let range = RangeChip::default(8); + let sha256 = Sha256ChipWide::new(&range, constant_randomness()); + + for input in input_vector { + let _ = sha256.digest::<64>(&mut builder, input.as_slice().into_witness(), false)?; + } + + builder.config(k, None); + Ok(ShaCircuitBuilder::mock(builder)) + } + + #[test] + fn test_sha256_chip_constant_size() { + let k = 10; + + let test_input = vec![0u8; 64]; + + let builder = ShaBitThreadBuilder::::mock(); + + let circuit = test_circuit(k, builder, &[test_input]); + let prover = MockProver::run(k as u32, &circuit.unwrap(), vec![]).unwrap(); + + prover.assert_satisfied_par(); + } +} diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs index 7154efc9..14cd7a4d 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -1,11 +1,11 @@ -use std::{cell::RefCell, collections::HashMap, iter}; +use std::{cell::RefCell, collections::HashMap, iter, mem}; use eth_types::Field; use halo2_base::{ gates::{ builder::{ CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, - ThreadBreakPoints, + ThreadBreakPoints, assign_threads_in, }, flex_gate::FlexGateConfig, }, @@ -14,11 +14,11 @@ use halo2_base::{ }; use halo2_proofs::{ circuit::{self, Region, Value}, - plonk::{Advice, Column, Selector}, + plonk::{Advice, Column, Error, Selector}, }; use itertools::Itertools; -use crate::util::BaseThreadBuilder; +use crate::util::{ThreadBuilderBase, ThreadBuilderConfigBase}; use super::{config::Sha256BitConfig, witness::ShaRow}; @@ -36,10 +36,10 @@ pub struct ShaBitThreadBuilder { sha_offset: usize, } -impl ShaBitThreadBuilder { - // re-expose some methods from [`GateThreadBuilder`] for convenience - #[allow(unused_mut)] - pub fn new(mut witness_gen_only: bool) -> Self { +impl ThreadBuilderBase for ShaBitThreadBuilder { + type Config = Sha256BitConfig; + + fn new(mut witness_gen_only: bool) -> Self { let mut gate_builder = GateThreadBuilder::new(witness_gen_only); let mut new_context = || Context::new(witness_gen_only, gate_builder.get_new_thread_id()); Self { @@ -69,42 +69,43 @@ impl ShaBitThreadBuilder { hash_rlc: new_context(), final_hash_bytes: array_init::array_init(|_| new_context()), _f: std::marker::PhantomData, - offset: todo!(), + offset: 0, }, gate_builder, - sha_offset: 0 + sha_offset: 0, } } - pub fn mock() -> Self { - Self::new(false) + fn unknown(mut self, use_unknown: bool) -> Self { + self.gate_builder = self.gate_builder.unknown(use_unknown); + self } - pub fn keygen() -> Self { - Self::new(false).unknown(true) + fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { + self.gate_builder.config(k, minimum_rows) } - pub fn prover() -> Self { - Self::new(true) + fn main(&mut self) -> &mut Context { + self.gate_builder.main(FIRST_PHASE) } - pub fn unknown(mut self, use_unknown: bool) -> Self { - self.gate_builder = self.gate_builder.unknown(use_unknown); - self + fn witness_gen_only(&self) -> bool { + self.gate_builder.witness_gen_only() } - /// Auto-calculate configuration parameters for the circuit - pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { - self.gate_builder.config(k, minimum_rows) + fn use_unknown(&self) -> bool { + self.gate_builder.use_unknown() } - pub fn sha_contexts(&mut self) -> &mut Sha256BitContexts { - &mut self.sha_contexts + fn thread_count(&self) -> usize { + self.gate_builder.thread_count() } - /// Assigns all advice and fixed cells, turns on selectors, imposes equality constraints. - /// This should only be called during keygen. - pub fn assign_all( + fn get_new_thread_id(&mut self) -> usize { + self.gate_builder.get_new_thread_id() + } + + fn assign_all( &mut self, gate: &FlexGateConfig, lookup_advice: &[Vec>], @@ -116,19 +117,20 @@ impl ShaBitThreadBuilder { assigned_constants, mut break_points, }: KeygenAssignments, - ) -> KeygenAssignments { + ) -> Result, Error> { assert!(!self.witness_gen_only()); - // assign_threads_sha( - // &self.threads_dense, - // &self.threads_spread, - // spread, - // region, - // self.use_unknown(), - // Some(&mut assigned_advices), - // ); - // in order to constrain equalities and assign constants, we copy the Spread/Dense equality constraints into the gate builder (it doesn't matter which context the equalities are in), so `GateThreadBuilder::assign_all` can take care of it - // the phase doesn't matter for equality constraints, so we use phase 0 since we're sure there's a main context there + config.annotate_columns_in_region(region); + + let use_unknown = self.use_unknown(); + + self.sha_contexts().assign_in_region( + region, + config, + use_unknown, + Some(&mut assigned_advices), + )?; + let main_ctx = self.gate_builder.main(0); // for ctx in self // .threads_spread @@ -143,7 +145,7 @@ impl ShaBitThreadBuilder { // .append(&mut ctx.constant_equality_constraints); // } - self.gate_builder.assign_all( + Ok(self.gate_builder.assign_all( gate, lookup_advice, q_lookup, @@ -153,28 +155,45 @@ impl ShaBitThreadBuilder { assigned_constants, break_points, }, - ) + )) } -} -impl BaseThreadBuilder for ShaBitThreadBuilder { - fn main(&mut self) -> &mut Context { - self.gate_builder.main(FIRST_PHASE) - } - - fn witness_gen_only(&self) -> bool { - self.gate_builder.witness_gen_only() - } + fn assign_witnesses( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + config: &Self::Config, + region: &mut Region, + break_points: &mut halo2_base::gates::builder::MultiPhaseThreadBreakPoints, + ) -> Result<(), Error> { + let use_unknown = self.use_unknown(); + + let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); + // warning: we currently take all contexts from phase 0, which means you can't read the values + // from these contexts later in phase 1. If we want to read, should clone here + let threads = mem::take(&mut self.gate_builder.threads[FIRST_PHASE]); + + assign_threads_in( + FIRST_PHASE, + threads, + gate, + &lookup_advice[FIRST_PHASE], + region, + break_points_gate, + ); - fn use_unknown(&self) -> bool { - self.gate_builder.use_unknown() + self.sha_contexts().assign_in_region( + region, + config, + use_unknown, + None, + ) } - fn thread_count(&self) -> usize { - self.gate_builder.thread_count() - } +} - fn get_new_thread_id(&mut self) -> usize { - self.gate_builder.get_new_thread_id() +impl ShaBitThreadBuilder { + pub fn sha_contexts(&mut self) -> &mut Sha256BitContexts { + &mut self.sha_contexts } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs index 0e571070..fb5ca21c 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs @@ -8,13 +8,16 @@ use std::hash::Hash; use std::iter; use std::marker::PhantomData; +use crate::gadget::crypto::constant_randomness; use crate::gadget::{and, not, rlc, select, sum, xor, Expr}; +use crate::util::ThreadBuilderConfigBase; use crate::witness::HashInputChunk; use crate::{ util::{AssignedValueCell, BaseConstraintBuilder, Challenges}, witness::{self, HashInput}, }; use eth_types::{Field, Spec}; +use halo2_base::gates::builder::FlexGateConfigParams; use halo2_base::{AssignedValue, Context, ContextCell, QuantumCell}; use halo2_proofs::circuit; use halo2_proofs::{ @@ -69,13 +72,13 @@ pub struct Sha256BitConfig, CA = Column> { pub offset: usize, } -impl Sha256BitConfig { - pub fn new(meta: &mut ConstraintSystem) -> Self { +impl ThreadBuilderConfigBase for Sha256BitConfig { + fn configure(meta: &mut ConstraintSystem, _params: FlexGateConfigParams) -> Self { // consts let two = F::from(2); let f256 = two.pow_const(8); - let r: F = Sha256BitConfig::fixed_challenge(); + let r: F = constant_randomness(); // TODO: use challenges API let q_enable = meta.fixed_column(); let q_first = meta.fixed_column(); let q_extend = meta.fixed_column(); @@ -603,11 +606,15 @@ impl Sha256BitConfig { } } - pub fn annotate_columns_in_region(&self, region: &mut Region) { + fn annotate_columns_in_region(&self, region: &mut Region) { self.annotations().iter().for_each(|(column, name)| { region.name_column(|| name, *column); }); } + + fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { + Ok(()) + } } impl Sha256BitConfig { @@ -654,10 +661,6 @@ impl Sha256BitConfig { annotations } - - pub fn fixed_challenge() -> F { - F::from_u128(0xca9d6022267d3bd658bf) - } } impl Sha256BitConfig, Context> { @@ -736,7 +739,9 @@ impl Sha256BitConfig, Context> { .iter_mut() .zip(row.is_paddings) .map(|(mut ctx, val)| ctx.load_witness(F::from(val))) - .collect_vec(); + .collect_vec() + .try_into() + .unwrap(); // Intermediary data rlcs for ((ctx, data_rlc)) in self.data_rlcs.iter_mut().zip(row.intermediary_data_rlcs) { @@ -744,7 +749,7 @@ impl Sha256BitConfig, Context> { } // Hash data - let [is_final, input_rlc, input_len, output_rlc] = [ + let [is_enabled, input_rlc, input_len, output_rlc] = [ ( &mut self.is_enabled, F::from(row.is_final && round == NUM_ROUNDS + 7), @@ -756,7 +761,7 @@ impl Sha256BitConfig, Context> { .map(|(mut ctx, value)| ctx.load_witness(value)); if (4..20).contains(&round) { - // assigned_rows.padding_selectors.push(padding_selectors); + assigned_rows.padding_selectors.push(padding_selectors); assigned_rows.input_rlc.push(input_rlc); } @@ -765,7 +770,7 @@ impl Sha256BitConfig, Context> { } if round == NUM_ROUNDS + 7 { - assigned_rows.is_final.push(is_final); + assigned_rows.is_final.push(is_enabled); assigned_rows.input_len.push(input_len); } @@ -797,7 +802,7 @@ impl Sha256BitConfig, Context> { config: &Sha256BitConfig, use_unknown: bool, mut assigned_advices: Option<&mut HashMap<(usize, usize), (circuit::Cell, usize)>>, - ) { + ) -> Result<(), Error> { // Fixed values for (name, column, ctx) in [ ("q_enable", &config.q_enable, &self.q_enable), @@ -824,7 +829,13 @@ impl Sha256BitConfig, Context> { } else { Value::known(val) }; - region.assign_fixed(|| name, *column, offset, || value); + let cell = region + .assign_fixed(|| name, *column, offset, || value)? + .cell(); + + if let Some(assigned_advices) = assigned_advices.as_mut() { + assigned_advices.insert((ctx.context_id, offset), (cell, offset)); + } } } @@ -842,11 +853,17 @@ impl Sha256BitConfig, Context> { } else { Value::known(val) }; - region.assign_advice(|| name, *column, offset, || value); + let cell = region + .assign_advice(|| name, *column, offset, || value)? + .cell(); + + if let Some(assigned_advices) = assigned_advices.as_mut() { + assigned_advices.insert((ctx.context_id, offset), (cell, offset)); + } } } - itertools::multizip(( + let _ = itertools::multizip(( config.is_paddings.iter(), self.is_paddings.iter(), iter::repeat("is_paddings"), @@ -871,20 +888,35 @@ impl Sha256BitConfig, Context> { self.word_e.iter(), iter::repeat("e word"), ))) + .chain(iter::once((&config.is_final, &self.is_final, "is final"))) .chain(itertools::multizip(( config.final_hash_bytes.iter(), self.final_hash_bytes.iter(), iter::repeat("final hash bytes"), ))) - .for_each(|(column, ctx, name)| { + .map(|(column, ctx, name)| { for (offset, &val) in ctx.advice.iter().enumerate() { let value = if use_unknown { Value::unknown() } else { Value::known(val) }; - region.assign_advice(|| name, *column, offset, || value); + + let cell = match region.assign_advice(|| name, *column, offset, || value) { + Ok(cell) => cell, + Err(e) => return Err(e), + } + .cell(); + + if let Some(assigned_advices) = assigned_advices.as_mut() { + assigned_advices.insert((ctx.context_id, offset), (cell, offset)); + } } - }); + + Ok(()) + }) + .collect::, _>>()?; + + Ok(()) } } diff --git a/lightclient-circuits/src/poseidon.rs b/lightclient-circuits/src/poseidon.rs index 6b783a12..9751728f 100644 --- a/lightclient-circuits/src/poseidon.rs +++ b/lightclient-circuits/src/poseidon.rs @@ -1,5 +1,6 @@ use eth_types::{AppCurveExt, Field}; use halo2_base::{safe_types::GateInstructions, AssignedValue, Context}; +use halo2_ecc::bigint::{ProperUint, ProperCrtUint}; use halo2_proofs::plonk::Error; use halo2curves::bls12_381::G1; use itertools::Itertools; @@ -11,19 +12,16 @@ const POSEIDON_SIZE: usize = 16; const R_F: usize = 8; const R_P: usize = 68; -pub fn g1_array_poseidon( +pub fn fq_array_poseidon<'a, F: Field>( ctx: &mut Context, gate: &impl GateInstructions, - points: Vec>, + fields: impl IntoIterator>, ) -> Result, Error> { - let limbs = points - .iter() - .flat_map(|p| p.x.limbs()) - .copied() - .collect_vec(); + let limbs = fields.into_iter().flat_map(|f| f.limbs()).copied().collect_vec(); let mut poseidon = PoseidonChip::::new(ctx, R_F, R_P) .expect("failed to construct Poseidon circuit"); + let mut current_poseidon_hash = None; for (i, chunk) in limbs.chunks(POSEIDON_SIZE - 3).enumerate() { diff --git a/lightclient-circuits/src/ssz_merkle.rs b/lightclient-circuits/src/ssz_merkle.rs index fb4a0c5d..4580a743 100644 --- a/lightclient-circuits/src/ssz_merkle.rs +++ b/lightclient-circuits/src/ssz_merkle.rs @@ -7,11 +7,11 @@ use itertools::Itertools; use crate::{ gadget::crypto::{HashInstructions, ShaContexts, ShaThreadBuilder}, - util::{IntoConstant, IntoWitness, BaseThreadBuilder}, + util::{IntoConstant, IntoWitness, ThreadBuilderBase}, witness::{HashInput, HashInputChunk}, }; -pub fn ssz_merkleize_chunks>( +pub fn ssz_merkleize_chunks>( thread_pool: &mut ThreadBuilder, hasher: &impl HashInstructions, chunks: impl IntoIterator>>, @@ -50,7 +50,7 @@ pub fn ssz_merkleize_chunks>( Ok(root.bytes) } -pub fn verify_merkle_proof>( +pub fn verify_merkle_proof>( thread_pool: &mut ThreadBuilder, hasher: &impl HashInstructions, proof: impl IntoIterator>>, diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 727d1ab3..54c666e4 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -13,13 +13,14 @@ use std::{ use crate::{ builder::Eth2CircuitBuilder, gadget::crypto::{ - Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, HashToCurveCache, - HashToCurveChip, Sha256Chip, ShaCircuitBuilder, ShaThreadBuilder, + calculate_ysquared, Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, + HashToCurveCache, HashToCurveChip, Sha256Chip, ShaCircuitBuilder, ShaThreadBuilder, }, - poseidon::{g1_array_poseidon, poseidon_sponge}, + poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, BaseThreadBuilder, + decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, + ThreadBuilderBase, }, witness::{self, HashInput, HashInputChunk, SyncStepArgs}, }; @@ -121,8 +122,11 @@ impl SyncStepCircuit { &args.pariticipation_bits, &mut assigned_affines, ); - let poseidon_commit = - g1_array_poseidon(thread_pool.main(), range.gate(), assigned_affines)?; + let poseidon_commit = fq_array_poseidon( + thread_pool.main(), + range.gate(), + assigned_affines.iter().map(|p| &p.x), + )?; let fp12_one = { use ff::Field; @@ -262,7 +266,7 @@ impl SyncStepCircuit { // Square y coordinate let ysq = fp_chip.mul(ctx, assigned_pk.y.clone(), assigned_pk.y.clone()); // Calculate y^2 using the elliptic curve equation - let ysq_calc = Self::calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); + let ysq_calc = calculate_ysquared::(ctx, fp_chip, assigned_pk.x.clone()); // Constrain witness y^2 to be equal to calculated y^2 fp_chip.assert_equal(ctx, ysq, ysq_calc); @@ -289,19 +293,6 @@ impl SyncStepCircuit { (agg_pubkey, participation_sum) } - - // Calculates y^2 = x^3 + 4 (the curve equation) - fn calculate_ysquared( - ctx: &mut Context, - field_chip: &FpChip<'_, F>, - x: ProperCrtUint, - ) -> ProperCrtUint { - let x_squared = field_chip.mul(ctx, x.clone(), x.clone()); - let x_cubed = field_chip.mul(ctx, x_squared, x); - - let plus_b = field_chip.add_constant_no_carry(ctx, x_cubed, C::B.into()); - field_chip.carry_mod(ctx, plus_b) - } } impl AppCircuitExt for SyncStepCircuit { @@ -399,7 +390,7 @@ mod tests { #[test] fn test_sync_circuit() { const K: usize = 20; - + let mut builder = ShaThreadBuilder::mock(); let assigned_instances = load_circuit_with_data(&mut builder, K); @@ -438,12 +429,9 @@ mod tests { let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); let num_instance = circuit.num_instance(); - let deployment_code = gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instance, - None, - ); + let deployment_code = gen_evm_verifier_shplonk::< + Eth2CircuitBuilder>, + >(¶ms, pk.get_vk(), num_instance, None); let instances = circuit.instances(); let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index 88b633d3..46b7258d 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -1,9 +1,15 @@ use crate::gadget::Expr; use eth_types::*; -use halo2_base::Context; +use halo2_base::{ + gates::{ + builder::{FlexGateConfigParams, KeygenAssignments, MultiPhaseThreadBreakPoints}, + flex_gate::FlexGateConfig, + }, + Context, +}; use halo2_proofs::{ - circuit::{AssignedCell, Region, Value}, - plonk::{Advice, Assigned, Column, Error, Expression, VirtualCells}, + circuit::{AssignedCell, Layouter, Region, Value}, + plonk::{Advice, Assigned, Column, Error, Expression, Selector, VirtualCells, ConstraintSystem}, poly::Rotation, }; @@ -124,8 +130,36 @@ impl AssignedValueCell { } } -pub trait BaseThreadBuilder { - /// Returns a mutable reference to the [Context] of a gate thread. Spawns a new thread for the given phase, if none exists. +pub trait ThreadBuilderConfigBase: Clone + Sized { + fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self; + + fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error>; + + fn annotate_columns_in_region(&self, region: &mut Region); +} + +pub trait ThreadBuilderBase: Clone + Sized { + type Config: ThreadBuilderConfigBase; + + fn new(witness_gen_only: bool) -> Self; + + fn mock() -> Self { + Self::new(false) + } + + fn keygen() -> Self { + Self::new(false).unknown(true) + } + + fn prover() -> Self { + Self::new(true) + } + + fn unknown(self, use_unknown: bool) -> Self; + + fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams; + + /// Returns a mutable reference to the [Context] of a gate thread. Spawns a new thread for the given phase, if none exists. /// * `phase`: The challenge phase (as an index) of the gate thread. fn main(&mut self) -> &mut Context; @@ -139,4 +173,26 @@ pub trait BaseThreadBuilder { /// Creates a new thread id by incrementing the `thread count` fn get_new_thread_id(&mut self) -> usize; + + /// Assigns all advice and fixed cells, turns on selectors, imposes equality constraints. + /// This should only be called during keygen. + fn assign_all( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + q_lookup: &[Option], + config: &Self::Config, + region: &mut Region, + assignments: KeygenAssignments, + ) -> Result, Error>; + + /// Assigns witnesses. This should only be called during proof generation. + fn assign_witnesses( + &mut self, + gate: &FlexGateConfig, + lookup_advice: &[Vec>], + config: &Self::Config, + region: &mut Region, + break_points: &mut MultiPhaseThreadBreakPoints, + ) -> Result<(), Error>; } diff --git a/lightclient-circuits/src/witness.rs b/lightclient-circuits/src/witness.rs index d7d25dd6..4f43034d 100644 --- a/lightclient-circuits/src/witness.rs +++ b/lightclient-circuits/src/witness.rs @@ -1,7 +1,10 @@ //! Witnesses for all circuits. -mod state; -pub use state::*; +mod sync; +pub use sync::*; + +mod rotation; +pub use rotation::*; mod validators; pub use validators::*; diff --git a/lightclient-circuits/src/witness/rotation.rs b/lightclient-circuits/src/witness/rotation.rs new file mode 100644 index 00000000..dfe111d0 --- /dev/null +++ b/lightclient-circuits/src/witness/rotation.rs @@ -0,0 +1,50 @@ +use std::iter; +use std::marker::PhantomData; + +use crate::gadget::crypto::constant_randomness; + +use super::{HashInput, Validator}; +use eth_types::AppCurveExt; +use eth_types::{Field, Spec}; +use ethereum_consensus::bellatrix::mainnet; +use ethereum_consensus::bellatrix::BeaconState; +use ethereum_consensus::capella; +use ethereum_consensus::phase0::BeaconBlockHeader; +use halo2curves::bls12_381::Fq; +use halo2curves::bls12_381::G1; +use itertools::Itertools; +use serde::Deserialize; +use sha2::{Digest, Sha256}; +use ssz_rs::Merkleized; +use ssz_rs::Node; + +#[derive(Debug, Clone)] +pub struct CommitteeRotationArgs { + pub pubkeys_compressed: Vec>, + + pub pubkeys_y: Vec, + + pub randomness: F, + + pub _spec: PhantomData, +} + +impl Default for CommitteeRotationArgs { + fn default() -> Self { + let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); + let dymmy_y = Fq::from((G1::B as f64).sqrt() as u64); + + let pubkeys_y = iter::repeat(dymmy_y) + .take(S::SYNC_COMMITTEE_SIZE) + .collect_vec(); + + Self { + pubkeys_compressed: iter::repeat(dummy_x_bytes) + .take(S::SYNC_COMMITTEE_SIZE) + .collect_vec(), + pubkeys_y, + randomness: constant_randomness(), + _spec: PhantomData, + } + } +} diff --git a/lightclient-circuits/src/witness/state.rs b/lightclient-circuits/src/witness/sync.rs similarity index 100% rename from lightclient-circuits/src/witness/state.rs rename to lightclient-circuits/src/witness/sync.rs From 00ad037fb0a82e8c701ee3ae5723b7c2e1fec52e Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Mon, 11 Sep 2023 19:55:42 +0200 Subject: [PATCH 15/33] fix ShaBitThreadBuilder --- lightclient-circuits/src/builder.rs | 3 + .../src/committee_update_circuit.rs | 339 +++++++++--------- .../src/gadget/crypto/builder.rs | 10 +- .../src/gadget/crypto/hash2curve.rs | 2 +- .../src/gadget/crypto/sha256.rs | 2 +- .../src/gadget/crypto/sha256/builder.rs | 1 + .../src/gadget/crypto/sha256_wide.rs | 42 ++- .../src/gadget/crypto/sha256_wide/config.rs | 13 +- lightclient-circuits/src/util/common.rs | 1 + lightclient-circuits/src/util/proof.rs | 2 +- lightclient-circuits/src/witness/rotation.rs | 10 +- preprocessor/scripts/generateInputData.ts | 5 + test_data/committee_pubkeys.json | 1 + 13 files changed, 224 insertions(+), 207 deletions(-) create mode 100644 test_data/committee_pubkeys.json diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index dbff7c6a..ac4d98ee 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -7,6 +7,7 @@ use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner}, plonk::{Circuit, Column, ConstraintSystem, Error, Instance}, }; +use log::debug; use crate::{ gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}, @@ -97,6 +98,7 @@ impl> Circuit ) -> Result<(), Error> { // we later `take` the builder, so we need to save this value let witness_gen_only = self.inner.builder.borrow().witness_gen_only(); + let assigned_advices = self.inner.sub_synthesize(&config.sha, &mut layouter)?; if !witness_gen_only { @@ -120,6 +122,7 @@ impl> snark_verifier_sdk::CircuitE fn num_instance(&self) -> Vec { vec![self.instance_count()] } + fn instances(&self) -> Vec> { vec![self.instance()] } diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index e3a1229b..2d03609c 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -14,7 +14,7 @@ use crate::{ builder::Eth2CircuitBuilder, gadget::crypto::{ calculate_ysquared, Fp2Point, FpPoint, G1Chip, G1Point, G2Chip, G2Point, HashInstructions, - HashToCurveCache, HashToCurveChip, Sha256ChipWide, ShaBitThreadBuilder, + HashToCurveCache, HashToCurveChip, Sha256ChipWide, ShaBitThreadBuilder, ShaCircuitBuilder, }, poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::ssz_merkleize_chunks, @@ -72,43 +72,12 @@ pub struct CommitteeUpdateCircuit { } impl CommitteeUpdateCircuit { - // fn new_from_state(builder: RefCell>, state: &witness::SyncState) -> Self { - // let pubkeys_y = state - // .sync_committee - // .iter() - // .map(|v| { - // let g1_affine = G1Affine::from_uncompressed( - // &v.pubkey_uncompressed.as_slice().try_into().unwrap(), - // ) - // .unwrap(); - - // g1_affine.y - // }) - // .collect_vec(); - // let sha256_offset = 0; - // Self { - // builder, - // pubkeys_compressed: state - // .sync_committee - // .iter() - // .cloned() - // .map(|v| v.pubkey) - // .collect_vec(), - // pubkeys_y, - // dry_run: false, - // sha256_offset, - // _spec: PhantomData, - // } - // } - fn synthesize( &self, thread_pool: &mut ShaBitThreadBuilder, range: &RangeChip, args: &witness::CommitteeRotationArgs, ) -> Result>, Error> { - let mut first_pass = halo2_base::SKIP_FIRST_PASS; - let fp_chip = FpChip::::new(range, G2::LIMB_BITS, G2::NUM_LIMBS); let fp2_chip = Fp2Chip::::new(&fp_chip); let g1_chip = EccChip::new(fp2_chip.fp_chip()); @@ -198,8 +167,9 @@ impl CommitteeUpdateCircuit { hasher: &impl HashInstructions, compressed_encodings: I, ) -> Result>, Error> { - let mut pubkeys_hashes = compressed_encodings + let mut pubkeys_hashes: Vec>> = compressed_encodings .into_iter() + .take(1) .map(|bytes| { let input = bytes .into_iter() @@ -230,13 +200,14 @@ impl AppCircuitExt for CommitteeUpdateCircuit let mut thread_pool = ShaBitThreadBuilder::keygen(); let assigned_instances = circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); - let config = thread_pool.config(k, Some(109)); let params = gen_srs(k as u32); let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); + circuit.config(k, None); + + let pk = gen_pkey(|| "committee_update", ¶ms, out, &circuit).unwrap(); let break_points = circuit.break_points(); @@ -244,137 +215,167 @@ impl AppCircuitExt for CommitteeUpdateCircuit } } -// #[cfg(test)] -// mod tests { -// use std::{ -// env::{set_var, var}, -// fs, -// }; - -// use crate::{ -// table::Sha256Table, -// util::{full_prover, full_verifier, gen_pkey}, -// witness::{SyncState, Validator}, -// }; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Test; -// use ethereum_consensus::builder; -// use halo2_base::{ -// gates::{ -// builder::{CircuitBuilderStage, FlexGateConfigParams}, -// flex_gate::GateStrategy, -// range::RangeStrategy, -// }, -// utils::fs::gen_srs, -// }; -// use halo2_proofs::{ -// circuit::SimpleFloorPlanner, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, -// poly::{commitment::Params, kzg::commitment::ParamsKZG}, -// }; -// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; -// use pasta_curves::group::UncompressedEncoding; -// use rand::rngs::OsRng; -// use rayon::iter::ParallelIterator; -// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; -// use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; -// use snark_verifier_sdk::{ -// gen_pk, -// halo2::{ -// aggregation::{AggregationCircuit, AggregationConfigParams}, -// gen_proof_shplonk, gen_snark_shplonk, -// }, -// CircuitExt, Snark, SHPLONK, -// }; - -// fn get_circuit_with_data(k: usize) -> CommitteeUpdateCircuit { -// let builder = GateThreadBuilder::new(false); -// let state: SyncState = -// serde_json::from_slice(&fs::read("../test_data/sync_state.json").unwrap()).unwrap(); - -// let _ = CommitteeUpdateCircuit::::parametrize(k); - -// let builder = RefCell::from(builder); -// CommitteeUpdateCircuit::new_from_state(builder, &state) -// } - -// fn gen_application_snark(k: usize, params: &ParamsKZG) -> Snark { -// let circuit = get_circuit_with_data(k); - -// let pk = gen_pk(params, &circuit, Some(Path::new(&format!("app_{}.pk", k)))); -// gen_snark_shplonk(params, &pk, circuit, None::) -// } - -// #[test] -// fn test_committee_update_circuit() { -// let k = 18; -// let circuit = get_circuit_with_data(k); - -// let timer = start_timer!(|| "committee_update circuit mock prover"); -// let prover = MockProver::::run(k as u32, &circuit, vec![]).unwrap(); -// prover.assert_satisfied_par(); -// end_timer!(timer); -// } - -// #[test] -// fn test_committee_update_proofgen() { -// let k = 18; -// let circuit = get_circuit_with_data(k); - -// let params = gen_srs(k as u32); - -// let pkey = gen_pkey(|| "committee_update", ¶ms, None, circuit.clone()).unwrap(); - -// let public_inputs = circuit.instances(); -// let proof = full_prover(¶ms, &pkey, circuit, public_inputs.clone()); -// let timer = start_timer!(|| "committee_update circuit full verifier"); -// assert!(full_verifier(¶ms, pkey.get_vk(), proof, public_inputs)); -// end_timer!(timer); -// } - -// #[test] -// fn circuit_agg() { -// let path = "./config/committee_update_aggregation.json"; -// let k = 17; -// let circuit = get_circuit_with_data(k); -// let params_app = gen_srs(k as u32); -// let snark = gen_application_snark(k, ¶ms_app); - -// let agg_config = AggregationConfigParams::from_path(path); - -// let params = gen_srs(agg_config.degree); -// println!("agg_params k: {:?}", params.k()); -// let lookup_bits = params.k() as usize - 1; - -// let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); - -// let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); -// let pk = gen_pk(¶ms, &agg_circuit, None); -// end_timer!(start0); -// let break_points = agg_circuit.break_points(); -// let agg_circuit = AggregationCircuit::new::( -// CircuitBuilderStage::Prover, -// Some(break_points.clone()), -// lookup_bits, -// ¶ms, -// iter::once(snark), -// ); - -// let num_instances = agg_circuit.num_instance(); -// let instances = agg_circuit.instances(); -// let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); -// println!("proof size: {}", proof.len()); -// let deployment_code = gen_evm_verifier_shplonk::( -// ¶ms, -// pk.get_vk(), -// num_instances, -// None, -// ); -// println!("deployment_code size: {}", deployment_code.len()); -// evm_verify(deployment_code, instances, proof); -// } -// } +#[cfg(test)] +mod tests { + use std::{ + env::{set_var, var}, + fs, + }; + + use crate::{ + gadget::crypto::constant_randomness, + util::{full_prover, full_verifier, gen_pkey}, + witness::{CommitteeRotationArgs, SyncStepArgs, Validator}, + }; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Test; + use ethereum_consensus::builder; + use halo2_base::{ + gates::{ + builder::{CircuitBuilderStage, FlexGateConfigParams}, + flex_gate::GateStrategy, + range::RangeStrategy, + }, + utils::fs::gen_srs, + }; + use halo2_proofs::{ + circuit::SimpleFloorPlanner, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, + poly::{commitment::Params, kzg::commitment::ParamsKZG}, + }; + use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; + use pasta_curves::group::UncompressedEncoding; + use rand::rngs::OsRng; + use rayon::iter::ParallelIterator; + use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; + use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; + use snark_verifier_sdk::{ + gen_pk, + halo2::{ + aggregation::{AggregationCircuit, AggregationConfigParams}, + gen_proof_shplonk, gen_snark_shplonk, + }, + CircuitExt, Snark, SHPLONK, + }; + + fn load_circuit_with_data( + thread_pool: &mut ShaBitThreadBuilder, + k: usize, + ) -> Vec> { + let args = { + let pubkeys_compressed: Vec> = + serde_json::from_slice(&fs::read("../test_data/committee_pubkeys.json").unwrap()) + .unwrap(); + CommitteeRotationArgs { + pubkeys_compressed, + randomness: constant_randomness(), + _spec: PhantomData, + } + }; + + let circuit = CommitteeUpdateCircuit::::default(); + let range = RangeChip::::new(RangeStrategy::Vertical, 8); + + circuit.synthesize(thread_pool, &range, &args).unwrap(); + + let config = thread_pool.config(k, None); + set_var("LOOKUP_BITS", (config.k - 1).to_string()); + println!("params used: {:?}", config); + + let instance = vec![]; + + instance + } + + fn gen_application_snark( + k: usize, + params: &ParamsKZG, + pk: &ProvingKey, + break_points: MultiPhaseThreadBreakPoints, + ) -> Snark { + let mut thread_pool = ShaBitThreadBuilder::prover(); + + let assigned_instances = load_circuit_with_data(&mut thread_pool, k); + + let circuit = Eth2CircuitBuilder::prover(assigned_instances, thread_pool, break_points); + + gen_snark_shplonk(params, pk, circuit, None::) + } + + #[test] + fn test_committee_update_circuit() { + const K: usize = 18; + let mut builder = ShaBitThreadBuilder::mock(); + let assigned_instances = load_circuit_with_data(&mut builder, K); + + let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); + + let timer = start_timer!(|| "committee_update mock prover"); + let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); + prover.assert_satisfied_par(); + end_timer!(timer); + } + + #[test] + fn test_committee_update_proofgen() { + const K: usize = 18; + + let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); + + let mut builder = ShaBitThreadBuilder::prover(); + let assigned_instances = load_circuit_with_data(&mut builder, K); + + let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + + let instances = circuit.instances(); + let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + + assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) + } + + #[test] + fn circuit_agg() { + let path = "./config/committee_update_aggregation.json"; + const K: usize = 17; + let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); + + let snark = gen_application_snark(K, ¶ms_app, &pk_app, break_points); + + let agg_config = AggregationConfigParams::from_path(path); + + let params = gen_srs(agg_config.degree); + println!("agg_params k: {:?}", params.k()); + let lookup_bits = params.k() as usize - 1; + + let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); + + let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); + let pk = gen_pk(¶ms, &agg_circuit, None); + end_timer!(start0); + let break_points = agg_circuit.break_points(); + let agg_circuit = AggregationCircuit::new::( + CircuitBuilderStage::Prover, + Some(break_points), + lookup_bits, + ¶ms, + iter::once(snark), + ); + + let num_instances = agg_circuit.num_instance(); + let instances = agg_circuit.instances(); + let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); + println!("proof size: {}", proof.len()); + let deployment_code = gen_evm_verifier_shplonk::( + ¶ms, + pk.get_vk(), + num_instances, + None, + ); + println!("deployment_code size: {}", deployment_code.len()); + evm_verify(deployment_code, instances, proof); + } +} diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index b99bd8c6..39466f0a 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -26,7 +26,7 @@ use crate::{ use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; #[derive(Debug, Clone)] -pub struct SHAConfig = SpreadConfig> { +pub struct SHAConfig> { pub compression: CustomConfig, pub range: RangeConfig, } @@ -50,7 +50,7 @@ impl> SHAConfig = ShaThreadBuilder> { +pub struct ShaCircuitBuilder> { pub builder: RefCell, pub break_points: RefCell, // `RefCell` allows the circuit to record break points in a keygen call of `synthesize` for use in later witness gen _f: PhantomData, @@ -149,7 +149,9 @@ impl> ShaCircuitBuilder> Circuit for ShaCircuitBuilder { +impl> Circuit + for ShaCircuitBuilder +{ type Config = SHAConfig; type FloorPlanner = SimpleFloorPlanner; @@ -168,7 +170,7 @@ impl> Circuit for ShaCircuitBui config: Self::Config, mut layouter: impl Layouter, ) -> Result<(), Error> { - self.sub_synthesize(&config, &mut layouter); + self.sub_synthesize(&config, &mut layouter)?; Ok(()) } } diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 65026204..6e85e92b 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -654,7 +654,7 @@ mod test { k: usize, mut builder: ShaThreadBuilder, input_vector: &[Vec], - ) -> Result, Error> { + ) -> Result>, Error> { let range = RangeChip::default(8); let sha256 = Sha256Chip::new(&range); diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 19f6a89a..2c0958ef 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -235,7 +235,7 @@ mod test { k: usize, mut builder: ShaThreadBuilder, input_vector: &[Vec], - ) -> Result, Error> { + ) -> Result>, Error> { let range = RangeChip::default(8); let sha256 = Sha256Chip::new(&range); diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 24aedadf..171aa54a 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -137,6 +137,7 @@ impl ThreadBuilderBase for ShaThreadBuilder { region: &mut Region, break_points: &mut MultiPhaseThreadBreakPoints, ) -> Result<(), Error> { + let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); // warning: we currently take all contexts from phase 0, which means you can't read the values // from these contexts later in phase 1. If we want to read, should clone here diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 45e07407..1798db7e 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -85,7 +85,7 @@ impl<'a, F: Field> HashInstructions> for Sha256ChipWid let mut assigned_rounds = vec![]; let assigned_output = self.load_digest::(thread_pool, binary_input, &mut assigned_rounds)?; - + let one_round_size = Self::BLOCK_SIZE; let num_round = 1; @@ -165,10 +165,7 @@ impl<'a, F: Field> HashInstructions> for Sha256ChipWid impl<'a, F: Field> Sha256ChipWide<'a, F> { pub fn new(range: &'a RangeChip, randomness: F) -> Self { - Self { - range, - randomness, - } + Self { range, randomness } } pub fn load_digest( @@ -244,14 +241,13 @@ impl<'a, F: Field> Sha256ChipWide<'a, F> { } } - #[cfg(test)] mod test { use std::env::var; use std::vec; use std::{cell::RefCell, marker::PhantomData}; - use crate::gadget::crypto::{ShaCircuitBuilder, constant_randomness}; + use crate::gadget::crypto::{constant_randomness, ShaCircuitBuilder}; use crate::util::{full_prover, full_verifier, gen_pkey, Challenges, IntoWitness}; use super::*; @@ -274,18 +270,19 @@ mod test { fn test_circuit( k: usize, - mut builder: ShaBitThreadBuilder, + builder: &mut ShaBitThreadBuilder, input_vector: &[Vec], - ) -> Result>, Error> { + ) -> Result<(), Error> { let range = RangeChip::default(8); let sha256 = Sha256ChipWide::new(&range, constant_randomness()); for input in input_vector { - let _ = sha256.digest::<64>(&mut builder, input.as_slice().into_witness(), false)?; + let _ = sha256.digest::<64>(builder, input.as_slice().into_witness(), false)?; } builder.config(k, None); - Ok(ShaCircuitBuilder::mock(builder)) + + Ok(()) } #[test] @@ -294,11 +291,28 @@ mod test { let test_input = vec![0u8; 64]; - let builder = ShaBitThreadBuilder::::mock(); + let mut builder = ShaBitThreadBuilder::::mock(); - let circuit = test_circuit(k, builder, &[test_input]); - let prover = MockProver::run(k as u32, &circuit.unwrap(), vec![]).unwrap(); + test_circuit(k, &mut builder, &[test_input]).unwrap(); + + let circuit = ShaCircuitBuilder::mock(builder); + + let prover = MockProver::run(k as u32, &circuit, vec![]).unwrap(); prover.assert_satisfied_par(); } + + #[test] + fn test_sha256_wide_params_gen() { + let k = 10; + let test_input = vec![1u8; 64]; + let mut builder = ShaBitThreadBuilder::::keygen(); + + test_circuit(k, &mut builder, &[test_input]).unwrap(); + + let circuit = ShaCircuitBuilder::keygen(builder); + + let params = gen_srs(k as u32); + let pk = gen_pkey(|| "sha256_wide_chip", ¶ms, None, &circuit).unwrap(); + } } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs index fb5ca21c..4063785f 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/config.rs @@ -824,13 +824,8 @@ impl Sha256BitConfig, Context> { ("h_e", &config.h_e, &self.h_e), ] { for (offset, &val) in ctx.advice.iter().enumerate() { - let value = if use_unknown { - Value::unknown() - } else { - Value::known(val) - }; let cell = region - .assign_fixed(|| name, *column, offset, || value)? + .assign_fixed(|| name, *column, offset, || Value::known(val))? .cell(); if let Some(assigned_advices) = assigned_advices.as_mut() { @@ -904,7 +899,9 @@ impl Sha256BitConfig, Context> { let cell = match region.assign_advice(|| name, *column, offset, || value) { Ok(cell) => cell, - Err(e) => return Err(e), + Err(e) => { + return Err(e); + } } .cell(); @@ -913,7 +910,7 @@ impl Sha256BitConfig, Context> { } } - Ok(()) + Ok::<_, Error>(()) }) .collect::, _>>()?; diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index 46b7258d..d8f3a11f 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -152,6 +152,7 @@ pub trait ThreadBuilderBase: Clone + Sized { } fn prover() -> Self { + println!("prver ThreadBuilderBase"); Self::new(true) } diff --git a/lightclient-circuits/src/util/proof.rs b/lightclient-circuits/src/util/proof.rs index 12e22f50..3cbb5eab 100644 --- a/lightclient-circuits/src/util/proof.rs +++ b/lightclient-circuits/src/util/proof.rs @@ -83,7 +83,7 @@ pub fn gen_pkey>( } } else { ( - start_timer!(|| "Loading vkey"), + start_timer!(|| "Generating vkey"), keygen_vk(params, circuit).expect("vk generation should not fail"), ) }; diff --git a/lightclient-circuits/src/witness/rotation.rs b/lightclient-circuits/src/witness/rotation.rs index dfe111d0..e39f8d6e 100644 --- a/lightclient-circuits/src/witness/rotation.rs +++ b/lightclient-circuits/src/witness/rotation.rs @@ -22,8 +22,6 @@ use ssz_rs::Node; pub struct CommitteeRotationArgs { pub pubkeys_compressed: Vec>, - pub pubkeys_y: Vec, - pub randomness: F, pub _spec: PhantomData, @@ -32,17 +30,11 @@ pub struct CommitteeRotationArgs { impl Default for CommitteeRotationArgs { fn default() -> Self { let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); - let dymmy_y = Fq::from((G1::B as f64).sqrt() as u64); - - let pubkeys_y = iter::repeat(dymmy_y) - .take(S::SYNC_COMMITTEE_SIZE) - .collect_vec(); - + Self { pubkeys_compressed: iter::repeat(dummy_x_bytes) .take(S::SYNC_COMMITTEE_SIZE) .collect_vec(), - pubkeys_y, randomness: constant_randomness(), _spec: PhantomData, } diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index bea4ee66..3bc8dfe6 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -183,3 +183,8 @@ fs.writeFileSync( `../test_data/sync_step.json`, serialize(input) ); + +fs.writeFileSync( + `../test_data/committee_pubkeys.json`, + serialize( Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], true)))) +); diff --git a/test_data/committee_pubkeys.json b/test_data/committee_pubkeys.json new file mode 100644 index 00000000..8017f9b2 --- /dev/null +++ b/test_data/committee_pubkeys.json @@ -0,0 +1 @@ +[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,130],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,134],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,152],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,168],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,145],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,128],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,167],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,181],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,149],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,170],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,171],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,138],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,143],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,168],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,153],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,140],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,171],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,175],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,131],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,171],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,163],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,145],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,152],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,146],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,136],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,160],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,181],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,138],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,137],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,149],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,176],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,176],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,178],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,132],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,132],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,152],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,184],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,131],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,174],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,174],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,179],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,174],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,151],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,132],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,142],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,153],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,173],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,140],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,162],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,165],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,153],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,148],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,137],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,141],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,146],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,166],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,167],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,132],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,173],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,150],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,172],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,171],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,132],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,163],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,169],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,178],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,140],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,183],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,140],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,161],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,161],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,161],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,173],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,151],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,177],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,174],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,183],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,173],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,145],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,178],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,162],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,173],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,162],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,165],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,160],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,152],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,182],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,144],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,149],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,180],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,149],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,171],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,146],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,130],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,183],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,185],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,180],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,153],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,130],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,136],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,142],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,142],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,175],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,164],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,162],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,131],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,174],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,135],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,170],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,164],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,135],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,151],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,166],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,129],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,140],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,174],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,146],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,168],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,148],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,132],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,136],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,160],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,133],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,153],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,150],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,148],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,142],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,146],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,170],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,144],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,139],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,149],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,148],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,175],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,149],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,147],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,176],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,162],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,142],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,181],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,130],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,131],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,134],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,145],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,151],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,181],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,141],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,133],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,185],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,131],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,139],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,173],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,145],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,144],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,185],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,169],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,136],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,133],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,180],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,172],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,150],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,174],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,182],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,163],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,170],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,143],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,166],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,151],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,153],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,180],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,144],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,132],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,130],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,131],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,162],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,153],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,128],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,162],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,177],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,175],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,149],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,152],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,151],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,134],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,142],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,177],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,178],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,145],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,182],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,162],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,170],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,164],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,163],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,166],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,175],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,174],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,160],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,160],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,176],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,135],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,128],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,172],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,149],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,140],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,147],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,163],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,161],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,153],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,165],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,139],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,172],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,139],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,169],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,146],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,172],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,142],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,177],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,136],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,142],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,150],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,141],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,185],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,128],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,145],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,138],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,167],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,138],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,180],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,142],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,131],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,178],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,164],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,151],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,133],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,164],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,151],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,182],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,133],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,146],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,175],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,136],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,147],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,172],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,176],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,148],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,174],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,128],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,167],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,151],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,151],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,128],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,179],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,183],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,171],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,151],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,134],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,134],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,183],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,144],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,174],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,153],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,131],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,167],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,152],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,130],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,148],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,161],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,142],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,178],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,162],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,176],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,162],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,179],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,168],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,168],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,162],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,183],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,141],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,168],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,152],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,161],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,131],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,153],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,129],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,141],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,183],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,174],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,129],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,130],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,134],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,183],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,144],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,145],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,164],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,168],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,132],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,140],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,137],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,176],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,130],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,167],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,139],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,145],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,161],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,151],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,168],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,139],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,143],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,179],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,149],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,138],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,133],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,171],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,172],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,129],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,153],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,180],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,137],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,128],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,164],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,128],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,133],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,161],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,176],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,135],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,167],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,137],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,163],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,138],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,169],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,174],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,174],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,171],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,133],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,170],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,161],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,136],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,141],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,130],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,144],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,185],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,151],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,173],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,164],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,131],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,167],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,129],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,165],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,181],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,138],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,151],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,142],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,138],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,136],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,136],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,176],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,179],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,177],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,177],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,171],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,171],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,183],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,175],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,151],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,164],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,172],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,140],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,169],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,142],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,143],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,136],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,172],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,150],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,133],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,171],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,168],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,172],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,145],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,131],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,151],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,180],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,143],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,182],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,168],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,150],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,165],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,168],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,163],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,151],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,150],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,168],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,181],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,166],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,168],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,184],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,173],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,135],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,138],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,138],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,182],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,183],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,134],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,168],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,149],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,174],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,168],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,139],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,166],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,184],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,146],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,175],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,172],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,174],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,170],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,141],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,183],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,148],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,166],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,131],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,129],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,171],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,168],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,149],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,183],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,182],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,153],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,143],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,176],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,180],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,184],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,182],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,135],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,151],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,153],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,148],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,182],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,138],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,169],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,146],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,172],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,164],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,179],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,172],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,132],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,185],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,173],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,173],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,175],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,143],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,179],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,167],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,151],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,149],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,139],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,160],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,137],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,136],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,176],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,137],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,140],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,166],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,139],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,165],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,161],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,169],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,162],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,171],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,160],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,160],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,162],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,168],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,181],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,176],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,173],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,175],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,146],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,148],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,150],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,131],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,150],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,168],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,129],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,148],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,152],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,139],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,142],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,149],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,140],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,160],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,165],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,176],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,130],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,176],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,184],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,147],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,133],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,182],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,169],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,160],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,178],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,143],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,183],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,161],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,138],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,170],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,136],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,144],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,161],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,139],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,169],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,185],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,133]] \ No newline at end of file From 048a8c65afbbe4702d50f00b58c2f799989d6ef5 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 14 Sep 2023 18:26:36 +0200 Subject: [PATCH 16/33] init --- Cargo.toml | 8 +- lightclient-circuits/Cargo.toml | 2 +- .../src/committee_update_circuit.rs | 5 +- lightclient-circuits/src/gadget/crypto/ecc.rs | 4 +- .../src/gadget/crypto/hash2curve.rs | 2 +- lightclient-circuits/src/gadget/crypto/mod.rs | 2 +- .../src/gadget/crypto/sha256.rs | 2 +- .../src/gadget/crypto/sha256/builder.rs | 4 +- .../src/gadget/crypto/sha256/compression.rs | 76 +++-- .../src/gadget/crypto/sha256/spread.rs | 9 +- .../src/gadget/crypto/sha256_wide/builder.rs | 13 +- .../src/gadget/crypto/sha256_wide/util.rs | 7 +- lightclient-circuits/src/lib.rs | 2 +- lightclient-circuits/src/poseidon.rs | 8 +- lightclient-circuits/src/sync_step_circuit.rs | 32 +- lightclient-circuits/src/util/common.rs | 4 +- lightclient-circuits/src/witness.rs | 3 - lightclient-circuits/src/witness/rotation.rs | 10 +- lightclient-circuits/src/witness/sync.rs | 24 +- .../src/witness/validators.rs | 32 -- preprocessor/Cargo.toml | 28 ++ preprocessor/scripts/generateInputData.ts | 317 +++++++++--------- preprocessor/src/lib.rs | 92 +++++ prover/Cargo.toml | 3 +- prover/src/main.rs | 4 +- rust-toolchain | 2 +- 26 files changed, 404 insertions(+), 291 deletions(-) delete mode 100644 lightclient-circuits/src/witness/validators.rs create mode 100644 preprocessor/Cargo.toml create mode 100644 preprocessor/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index f54a4800..2b7e1b43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["lightclient-circuits", "eth-types"] +members = ["lightclient-circuits", "preprocessor", "eth-types"] # Definition of benchmarks profile to use. [profile.bench] @@ -49,4 +49,8 @@ snark-verifier-sdk = { git = "https://github.com/timoftime/snark-verifier", bran # halo2curves = { path = "../halo2curves" } [patch."https://github.com/ralexstokes/ssz-rs"] -ssz-rs = { git = "https://github.com/polytope-labs/ssz-rs", branch = "seun/ssz-merkle-multi-proof-phase-1" } +ssz-rs = { git = "https://github.com/polytope-labs/ssz-rs", branch = "main", default-features = false } + +[patch."https://github.com/polytope-labs/sync-committee-rs"] +sync-committee-prover = { path = "../sync-committee-rs/prover", features=["testnet"] } +sync-committee-primitives = { path = "../sync-committee-rs/primitives", features=["testnet"] } diff --git a/lightclient-circuits/Cargo.toml b/lightclient-circuits/Cargo.toml index fcc1660f..f83a92ec 100644 --- a/lightclient-circuits/Cargo.toml +++ b/lightclient-circuits/Cargo.toml @@ -40,7 +40,7 @@ group = "0.12" sha2 = { version = "0.10.6", features = ["compress"] } # ethereum -ethereum-consensus = { git = "https://github.com/ralexstokes/ethereum-consensus", rev = "46ca171" } +sync-committee-primitives = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0" } ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs", rev = "adf1a0b14cef90b9536f28ef89da1fab316465e1" } # local diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 2d03609c..230c54c2 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -25,7 +25,6 @@ use crate::{ witness::{self, HashInput, HashInputChunk}, }; use eth_types::{AppCurveExt, Field, Spec}; -use ethereum_consensus::phase0::BeaconBlockHeader; use group::UncompressedEncoding; use halo2_base::{ gates::{ @@ -63,6 +62,7 @@ use pasta_curves::group::{ff, GroupEncoding}; use poseidon::PoseidonChip; use snark_verifier_sdk::CircuitExt; use ssz_rs::Merkleized; +use sync_committee_primitives::consensus_types::BeaconBlockHeader; #[allow(type_alias_bounds)] #[derive(Clone, Debug, Default)] @@ -225,13 +225,12 @@ mod tests { use crate::{ gadget::crypto::constant_randomness, util::{full_prover, full_verifier, gen_pkey}, - witness::{CommitteeRotationArgs, SyncStepArgs, Validator}, + witness::{CommitteeRotationArgs, SyncStepArgs}, }; use super::*; use ark_std::{end_timer, start_timer}; use eth_types::Test; - use ethereum_consensus::builder; use halo2_base::{ gates::{ builder::{CircuitBuilderStage, FlexGateConfigParams}, diff --git a/lightclient-circuits/src/gadget/crypto/ecc.rs b/lightclient-circuits/src/gadget/crypto/ecc.rs index 73fef72b..1423508f 100644 --- a/lightclient-circuits/src/gadget/crypto/ecc.rs +++ b/lightclient-circuits/src/gadget/crypto/ecc.rs @@ -1,6 +1,6 @@ -use eth_types::{Field, AppCurveExt}; +use eth_types::{AppCurveExt, Field}; use halo2_base::Context; -use halo2_ecc::{bls12_381::FpChip, bigint::ProperCrtUint, fields::FieldChip}; +use halo2_ecc::{bigint::ProperCrtUint, bls12_381::FpChip, fields::FieldChip}; // Calculates y^2 = x^3 + 4 (the curve equation) pub fn calculate_ysquared( diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 6e85e92b..275bd0a6 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -33,7 +33,7 @@ use super::{ util::{fp2_sgn0, i2osp, strxor}, Fp2Point, G1Point, G2Point, HashInstructions, }; -use super::{ShaContexts, ShaThreadBuilder, AssignedHashResult}; +use super::{AssignedHashResult, ShaContexts, ShaThreadBuilder}; const G2_EXT_DEGREE: usize = 2; diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 9a5d75f7..60b118d8 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -1,9 +1,9 @@ mod builder; +mod ecc; mod hash2curve; mod sha256; mod sha256_wide; mod util; -mod ecc; pub use builder::{SHAConfig, ShaCircuitBuilder}; use eth_types::{AppCurveExt, Field, HashCurveExt}; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 2c0958ef..8b6293d0 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -35,7 +35,7 @@ pub use self::builder::ShaContexts; pub(super) use self::builder::{assign_threads_sha, FIRST_PHASE}; pub use self::spread::SpreadChip; -use super::{HashInstructions, AssignedHashResult}; +use super::{AssignedHashResult, HashInstructions}; const SHA256_CONTEXT_ID: usize = usize::MAX; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 171aa54a..879ab9dc 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -15,7 +15,7 @@ use halo2_base::{ }; use halo2_proofs::{ circuit::{self, Region, Value}, - plonk::{Advice, Column, Selector, Error}, + plonk::{Advice, Column, Error, Selector}, }; use itertools::Itertools; @@ -137,7 +137,6 @@ impl ThreadBuilderBase for ShaThreadBuilder { region: &mut Region, break_points: &mut MultiPhaseThreadBreakPoints, ) -> Result<(), Error> { - let break_points_gate = mem::take(&mut break_points[FIRST_PHASE]); // warning: we currently take all contexts from phase 0, which means you can't read the values // from these contexts later in phase 1. If we want to read, should clone here @@ -161,7 +160,6 @@ impl ThreadBuilderBase for ShaThreadBuilder { } } - impl ShaThreadBuilder { pub fn sha_contexts_pair(&mut self) -> (&mut Context, ShaContexts) { if self.threads_dense.is_empty() { diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs index bb4c2d35..60b3cf23 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/compression.rs @@ -2,10 +2,10 @@ use std::cell::RefMut; use crate::util::ThreadBuilderBase; -use super::ShaThreadBuilder; use super::builder::ShaContexts; use super::spread::{self, SpreadChip, SpreadConfig}; use super::util::{bits_le_to_fe, fe_to_bits_le}; +use super::ShaThreadBuilder; use eth_types::Field; use halo2_base::halo2_proofs::halo2curves::FieldExt; use halo2_base::halo2_proofs::{ @@ -155,13 +155,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let f_spread = state_to_spread_u32(ctx, range, ctx_spread, &f)?; // let g_spread = state_to_spread_u32(ctx, range, ctx_spread, &g)?; let sigma_term = sigma_upper1(thread_pool, spread_chip, &e_spread)?; - let ch_term = ch( - thread_pool, - spread_chip, - &e_spread, - &f_spread, - &g_spread, - )?; + let ch_term = ch(thread_pool, spread_chip, &e_spread, &f_spread, &g_spread)?; // println!( // "idx {} sigma {:?} ch {:?}", // idx, @@ -191,13 +185,7 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( // let b_spread = state_to_spread_u32(ctx, range, ctx_spread, &b)?; // let c_spread = state_to_spread_u32(ctx, range, ctx_spread, &c)?; let sigma_term = sigma_upper0(thread_pool, spread_chip, &a_spread)?; - let maj_term = maj( - thread_pool, - spread_chip, - &a_spread, - &b_spread, - &c_spread, - )?; + let maj_term = maj(thread_pool, spread_chip, &a_spread, &b_spread, &c_spread)?; let add = gate.add( thread_pool.main(), QuantumCell::Existing(sigma_term), @@ -243,7 +231,11 @@ pub fn sha256_compression<'a, 'b: 'a, F: Field>( .copied() .zip(pre_state_words.iter().copied()) .map(|(x, y)| { - let add = gate.add(thread_pool.main(), QuantumCell::Existing(x), QuantumCell::Existing(y)); + let add = gate.add( + thread_pool.main(), + QuantumCell::Existing(x), + QuantumCell::Existing(y), + ); // println!( // "pre {:?} new {:?} add {:?}", // y.value(), @@ -338,10 +330,14 @@ fn ch<'a, 'b: 'a, F: Field>( QuantumCell::Existing(x_neg_hi), QuantumCell::Existing(z_hi), ); - let (p_lo_even, p_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_lo)?; - let (p_hi_even, p_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_hi)?; - let (q_lo_even, q_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_lo)?; - let (q_hi_even, q_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_hi)?; + let (p_lo_even, p_lo_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_lo)?; + let (p_hi_even, p_hi_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &p_hi)?; + let (q_lo_even, q_lo_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_lo)?; + let (q_hi_even, q_hi_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &q_hi)?; { let even_spread = spread_chip.spread(thread_pool, &p_lo_even)?; let odd_spread = spread_chip.spread(thread_pool, &p_lo_odd)?; @@ -431,8 +427,10 @@ fn maj<'a, 'b: 'a, F: Field>( QuantumCell::Existing(y_hi), QuantumCell::Existing(z_hi), ); - let (m_lo_even, m_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_lo)?; - let (m_hi_even, m_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_hi)?; + let (m_lo_even, m_lo_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_lo)?; + let (m_hi_even, m_hi_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &m_hi)?; { let even_spread = spread_chip.spread(thread_pool, &m_lo_even)?; let odd_spread = spread_chip.spread(thread_pool, &m_lo_odd)?; @@ -648,10 +646,30 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( // let assigned_b_spread = spread_config.spread(ctx, range, &assigned_b)?; // let assigned_c_spread = spread_config.spread(ctx, range, &assigned_c)?; // let assigned_d_spread = spread_config.spread(ctx, range, &assigned_d)?; - sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[0]), assigned_a, sum); - sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[1]), assigned_b, sum); - sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[2]), assigned_c, sum); - sum = gate.mul_add(thread_pool.main(), QuantumCell::Constant(coeffs[3]), assigned_d, sum); + sum = gate.mul_add( + thread_pool.main(), + QuantumCell::Constant(coeffs[0]), + assigned_a, + sum, + ); + sum = gate.mul_add( + thread_pool.main(), + QuantumCell::Constant(coeffs[1]), + assigned_b, + sum, + ); + sum = gate.mul_add( + thread_pool.main(), + QuantumCell::Constant(coeffs[2]), + assigned_c, + sum, + ); + sum = gate.mul_add( + thread_pool.main(), + QuantumCell::Constant(coeffs[3]), + assigned_d, + sum, + ); sum }; let (r_lo, r_hi) = { @@ -671,8 +689,10 @@ fn sigma_generic<'a, 'b: 'a, F: Field>( (assigned_lo, assigned_hi) }; - let (r_lo_even, r_lo_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_lo)?; - let (r_hi_even, r_hi_odd) = spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_hi)?; + let (r_lo_even, r_lo_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_lo)?; + let (r_hi_even, r_hi_odd) = + spread_chip.decompose_even_and_odd_unchecked(thread_pool.main(), &r_hi)?; { let even_spread = spread_chip.spread(thread_pool, &r_lo_even)?; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs index 1b119401..6bb47097 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/spread.rs @@ -2,8 +2,8 @@ use std::marker::PhantomData; use crate::util::{ThreadBuilderBase, ThreadBuilderConfigBase}; -use super::ShaThreadBuilder; use super::builder::ShaContexts; +use super::ShaThreadBuilder; use super::{compression::SpreadU32, util::*}; use eth_types::Field; use halo2_base::gates::builder::FlexGateConfigParams; @@ -92,10 +92,9 @@ impl SpreadConfig { } } - impl ThreadBuilderConfigBase for SpreadConfig { fn configure(meta: &mut ConstraintSystem, params: FlexGateConfigParams) -> Self { - Self::configure(meta, 8, 2) // TODO configure num_advice_columns + Self::configure(meta, 8, 2) // TODO configure num_advice_columns } fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { @@ -223,7 +222,9 @@ impl<'a, F: Field> SpreadChip<'a, F> { let assigned_spread = ctx_base.load_witness(spread_value); let assigned_spread_vanila = ctx_spread.load_witness(*assigned_spread.value()); - thread_pool.main().constrain_equal(&assigned_spread_vanila, &assigned_spread); + thread_pool + .main() + .constrain_equal(&assigned_spread_vanila, &assigned_spread); Ok(assigned_spread) } diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs index 14cd7a4d..1832e83e 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -4,8 +4,8 @@ use eth_types::Field; use halo2_base::{ gates::{ builder::{ - CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, KeygenAssignments, - ThreadBreakPoints, assign_threads_in, + assign_threads_in, CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, + KeygenAssignments, ThreadBreakPoints, }, flex_gate::FlexGateConfig, }, @@ -182,14 +182,9 @@ impl ThreadBuilderBase for ShaBitThreadBuilder { break_points_gate, ); - self.sha_contexts().assign_in_region( - region, - config, - use_unknown, - None, - ) + self.sha_contexts() + .assign_in_region(region, config, use_unknown, None) } - } impl ShaBitThreadBuilder { diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs index ab43a19e..51150ab0 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/util.rs @@ -1,5 +1,8 @@ use eth_types::Field; -use halo2_base::{utils::{biguint_to_fe, fe_to_biguint}, AssignedValue}; +use halo2_base::{ + utils::{biguint_to_fe, fe_to_biguint}, + AssignedValue, +}; use halo2_proofs::circuit::AssignedCell; use itertools::Itertools; use num_bigint::BigUint; @@ -55,8 +58,6 @@ pub struct Sha256AssignedRows { pub output_rlc: Vec>, } - - impl Sha256AssignedRows { pub fn new() -> Self { Self { diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index d41dabd2..d87f3353 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -16,8 +16,8 @@ pub mod witness; pub mod committee_update_circuit; pub mod sync_step_circuit; +mod builder; mod poseidon; mod ssz_merkle; -mod builder; pub use halo2_base::gates::builder::FlexGateConfigParams; diff --git a/lightclient-circuits/src/poseidon.rs b/lightclient-circuits/src/poseidon.rs index 9751728f..ea856eaa 100644 --- a/lightclient-circuits/src/poseidon.rs +++ b/lightclient-circuits/src/poseidon.rs @@ -1,6 +1,6 @@ use eth_types::{AppCurveExt, Field}; use halo2_base::{safe_types::GateInstructions, AssignedValue, Context}; -use halo2_ecc::bigint::{ProperUint, ProperCrtUint}; +use halo2_ecc::bigint::{ProperCrtUint, ProperUint}; use halo2_proofs::plonk::Error; use halo2curves::bls12_381::G1; use itertools::Itertools; @@ -17,7 +17,11 @@ pub fn fq_array_poseidon<'a, F: Field>( gate: &impl GateInstructions, fields: impl IntoIterator>, ) -> Result, Error> { - let limbs = fields.into_iter().flat_map(|f| f.limbs()).copied().collect_vec(); + let limbs = fields + .into_iter() + .flat_map(|f| f.limbs()) + .copied() + .collect_vec(); let mut poseidon = PoseidonChip::::new(ctx, R_F, R_P) .expect("failed to construct Poseidon circuit"); diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 54c666e4..0ffad3b6 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -25,7 +25,6 @@ use crate::{ witness::{self, HashInput, HashInputChunk, SyncStepArgs}, }; use eth_types::{AppCurveExt, Field, Spec}; -use ethereum_consensus::capella::{self, mainnet::*}; use ff::PrimeField; use group::UncompressedEncoding; use halo2_base::{ @@ -139,16 +138,16 @@ impl SyncStepCircuit { thread_pool, &sha256_chip, [ - args.attested_block.slot.into_witness(), - args.attested_block.proposer_index.into_witness(), - args.attested_block.parent_root.as_ref().into_witness(), - args.attested_block.state_root.as_ref().into_witness(), - args.attested_block.body_root.as_ref().into_witness(), + args.attested_header.slot.into_witness(), + args.attested_header.proposer_index.into_witness(), + args.attested_header.parent_root.as_ref().into_witness(), + args.attested_header.state_root.as_ref().into_witness(), + args.attested_header.body_root.as_ref().into_witness(), ], )?; let finilized_block_body_root = args - .finalized_block + .finalized_header .body_root .as_ref() .iter() @@ -159,10 +158,10 @@ impl SyncStepCircuit { thread_pool, &sha256_chip, [ - args.finalized_block.slot.into_witness(), - args.finalized_block.proposer_index.into_witness(), - args.finalized_block.parent_root.as_ref().into_witness(), - args.finalized_block.state_root.as_ref().into_witness(), + args.finalized_header.slot.into_witness(), + args.finalized_header.proposer_index.into_witness(), + args.finalized_header.parent_root.as_ref().into_witness(), + args.finalized_header.state_root.as_ref().into_witness(), finilized_block_body_root.clone().into(), ], )?; @@ -329,25 +328,26 @@ mod tests { use std::{ env::{set_var, var}, fs, + os::unix::thread, }; use crate::{ builder::Eth2CircuitBuilder, util::{full_prover, full_verifier, gen_pkey}, - witness::{SyncStepArgs, Validator}, + witness::SyncStepArgs, }; use super::*; use ark_std::{end_timer, start_timer}; use eth_types::Test; - use ethereum_consensus::builder; + use group::Group; use halo2_base::{ gates::{ builder::{CircuitBuilderStage, FlexGateConfigParams}, flex_gate::GateStrategy, range::RangeStrategy, }, - utils::fs::gen_srs, + utils::{decompose, fs::gen_srs}, }; use halo2_proofs::{ circuit::SimpleFloorPlanner, @@ -358,7 +358,7 @@ mod tests { }; use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; use pasta_curves::group::UncompressedEncoding; - use rand::rngs::OsRng; + use rand::{rngs::OsRng, thread_rng}; use rayon::iter::ParallelIterator; use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; use snark_verifier_sdk::{ @@ -428,6 +428,8 @@ mod tests { let assigned_instances = load_circuit_with_data(&mut builder, K); let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + + let num_instance = circuit.num_instance(); let deployment_code = gen_evm_verifier_shplonk::< Eth2CircuitBuilder>, diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index d8f3a11f..09bb9615 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -9,7 +9,9 @@ use halo2_base::{ }; use halo2_proofs::{ circuit::{AssignedCell, Layouter, Region, Value}, - plonk::{Advice, Assigned, Column, Error, Expression, Selector, VirtualCells, ConstraintSystem}, + plonk::{ + Advice, Assigned, Column, ConstraintSystem, Error, Expression, Selector, VirtualCells, + }, poly::Rotation, }; diff --git a/lightclient-circuits/src/witness.rs b/lightclient-circuits/src/witness.rs index 4f43034d..5abc6e9b 100644 --- a/lightclient-circuits/src/witness.rs +++ b/lightclient-circuits/src/witness.rs @@ -6,8 +6,5 @@ pub use sync::*; mod rotation; pub use rotation::*; -mod validators; -pub use validators::*; - mod hashing; pub use hashing::*; diff --git a/lightclient-circuits/src/witness/rotation.rs b/lightclient-circuits/src/witness/rotation.rs index e39f8d6e..44b91a0e 100644 --- a/lightclient-circuits/src/witness/rotation.rs +++ b/lightclient-circuits/src/witness/rotation.rs @@ -3,13 +3,11 @@ use std::marker::PhantomData; use crate::gadget::crypto::constant_randomness; -use super::{HashInput, Validator}; +use super::HashInput; use eth_types::AppCurveExt; use eth_types::{Field, Spec}; -use ethereum_consensus::bellatrix::mainnet; -use ethereum_consensus::bellatrix::BeaconState; -use ethereum_consensus::capella; -use ethereum_consensus::phase0::BeaconBlockHeader; +use sync_committee_primitives::consensus_types::{BeaconBlockHeader, BeaconState}; + use halo2curves::bls12_381::Fq; use halo2curves::bls12_381::G1; use itertools::Itertools; @@ -30,7 +28,7 @@ pub struct CommitteeRotationArgs { impl Default for CommitteeRotationArgs { fn default() -> Self { let dummy_x_bytes = iter::once(192).pad_using(48, |_| 0).rev().collect(); - + Self { pubkeys_compressed: iter::repeat(dummy_x_bytes) .take(S::SYNC_COMMITTEE_SIZE) diff --git a/lightclient-circuits/src/witness/sync.rs b/lightclient-circuits/src/witness/sync.rs index f3f30874..54af65b8 100644 --- a/lightclient-circuits/src/witness/sync.rs +++ b/lightclient-circuits/src/witness/sync.rs @@ -1,17 +1,13 @@ use std::iter; use std::marker::PhantomData; -use super::{HashInput, Validator}; +use super::HashInput; use eth_types::{Field, Spec}; -use ethereum_consensus::bellatrix::mainnet; -use ethereum_consensus::bellatrix::BeaconState; -use ethereum_consensus::capella; -use ethereum_consensus::phase0::BeaconBlockHeader; use itertools::Itertools; use serde::Deserialize; -use sha2::{Sha256, Digest}; -use ssz_rs::Merkleized; -use ssz_rs::Node; +use sha2::{Digest, Sha256}; +use ssz_rs::{Merkleized, Node}; +use sync_committee_primitives::consensus_types::{BeaconBlockHeader, BeaconState}; #[derive(Debug, Clone, Deserialize)] pub struct SyncStepArgs { @@ -21,9 +17,9 @@ pub struct SyncStepArgs { pub pariticipation_bits: Vec, - pub attested_block: BeaconBlockHeader, + pub attested_header: BeaconBlockHeader, - pub finalized_block: BeaconBlockHeader, + pub finalized_header: BeaconBlockHeader, pub domain: [u8; 32], @@ -36,7 +32,7 @@ pub struct SyncStepArgs { pub beacon_state_root: Vec, #[serde(skip)] - _spec: PhantomData, + pub _spec: PhantomData, } impl Default for SyncStepArgs { @@ -62,7 +58,7 @@ impl Default for SyncStepArgs { let beacon_block_body_root = compute_root(execution_state_root.clone(), &state_merkle_branch); - let mut finalized_block = capella::BeaconBlockHeader { + let mut finalized_block = BeaconBlockHeader { body_root: Node::from_bytes(beacon_block_body_root.try_into().unwrap()), ..Default::default() }; @@ -82,8 +78,8 @@ impl Default for SyncStepArgs { 7, 0, 0, 0, 48, 83, 175, 74, 95, 250, 246, 166, 104, 40, 151, 228, 42, 212, 194, 8, 48, 56, 232, 147, 61, 9, 41, 204, 88, 234, 56, 134, ], - attested_block: capella::BeaconBlockHeader::default(), - finalized_block, + attested_header: BeaconBlockHeader::default(), + finalized_header: finalized_block, finality_merkle_branch, beacon_state_root, execution_merkle_branch, diff --git a/lightclient-circuits/src/witness/validators.rs b/lightclient-circuits/src/witness/validators.rs deleted file mode 100644 index 734b42c8..00000000 --- a/lightclient-circuits/src/witness/validators.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::{iter, vec}; - -use crate::gadget::rlc; -use eth_types::{AppCurveExt, Field, Spec}; -use ethereum_consensus::phase0::is_active_validator; - -use group::{Group, GroupEncoding}; -use halo2_proofs::circuit::Value; -use itertools::Itertools; -use lazy_static::lazy_static; -use serde::{Deserialize, Serialize}; -use strum_macros::EnumIter; - -/// Beacon validator -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Validator { - pub id: usize, - pub is_attested: bool, - pub pubkey: Vec, - pub pubkey_uncompressed: Vec, -} - -impl Default for Validator { - fn default() -> Self { - Validator { - id: 0, - is_attested: true, - pubkey: iter::once(192).pad_using(48, |_| 0).rev().collect(), - pubkey_uncompressed: iter::once(64).pad_using(96, |_| 0).collect(), - } - } -} diff --git a/preprocessor/Cargo.toml b/preprocessor/Cargo.toml new file mode 100644 index 00000000..c160abb2 --- /dev/null +++ b/preprocessor/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "preprocessor" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +# ethereum +# ethereum-consensus = { git = "https://github.com/ralexstokes/ethereum-consensus", rev = "46ca171" } +ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs", rev = "adf1a0b14cef90b9536f28ef89da1fab316465e1" } +halo2curves = { git = "https://github.com/privacy-scaling-explorations/halo2curves", tag = "0.3.1" } +sync-committee-prover = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } +sync-committee-primitives = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } + +#crypto +group = "0.12" + +# misc +log = "=0.4.20" +anyhow = "1.0.75" +tokio = { version = "1", features = ["full"]} +itertools = "0.11.0" +# tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread"] } + +# local +eth-types = { path = "../eth-types" } +lightclient-circuits = { path = "../lightclient-circuits" } diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index 3bc8dfe6..bba0a28b 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -1,5 +1,5 @@ import fs from "fs"; -import { bls12_381 } from '@noble/curves/bls12-381' +import { bls12_381 } from '../../../examples/noble-curves/src/bls12-381' import { ssz, } from "@lodestar/types" @@ -24,167 +24,174 @@ let privKeyHexes: string[] = JSON.parse(fs.readFileSync("../test_data/private_ke const targetEpoch = 25; -//----------------- Beacon state -----------------// - -let beaconState = ssz.capella.BeaconState.deserialize(new Uint8Array(fs.readFileSync("../test_data/beacon_state_2915750"))); -beaconState.validators = []; -beaconState.currentSyncCommittee.pubkeys = []; -const config = createBeaconConfig(chainConfig, beaconState.genesisValidatorsRoot); - - -//----------------- Validators -----------------// - -let pubKeyPoints: ProjPointType[] = []; - -for (let i = 0; i < N_validators; i++) { - let privKey = i < privKeyHexes.length ? hexToBytes(privKeyHexes[i]) : bls12_381.utils.randomPrivateKey(); - let p = bls12_381.G1.ProjectivePoint.fromPrivateKey(privKey); - let pubkey = g1PointToBytesLE(p, true); - - beaconState.validators.push({ - pubkey: pubkey, - withdrawalCredentials: Uint8Array.from(Array(32).fill(0)), - effectiveBalance: 32000000, - slashed: false, - activationEligibilityEpoch: i, - activationEpoch: i + 1, - exitEpoch: 100, - withdrawableEpoch: 0 - }); - privKeyHexes[i] = bytesToHex(privKey); - pubKeyPoints.push(p); - beaconState.currentSyncCommittee.pubkeys.push(pubkey); -} +let g1Bytes = Uint8Array.from([165, 78, 16, 67, 57, 40, 109, 60, 232, 39, 24, 40, 251, 172, 32, 246, 207, 122, 253, 59, 114, 217, 177, 148, 183, 203, 175, 101, 246, 97, 36, 22, 17, 123, 228, 146, 191, 74, 168, 143, 175, 106, 218, 86, 207, 75, 100, 98]); + +let g1Point = bls12_381.G1.ProjectivePoint.fromHex(bytesToHex(g1Bytes)); + +console.log(g1Point.toAffine()); -fs.writeFileSync( - `../test_data/private_keys.json`, - serialize(privKeyHexes) -); +// //----------------- Beacon state -----------------// + +// let beaconState = ssz.capella.BeaconState.deserialize(new Uint8Array(fs.readFileSync("../test_data/beacon_state_2915750"))); +// beaconState.validators = []; +// beaconState.currentSyncCommittee.pubkeys = []; +// const config = createBeaconConfig(chainConfig, beaconState.genesisValidatorsRoot); -//----------------- Sync Committee -----------------// +// //----------------- Validators -----------------// -const aggregatedPubKey = bls12_381.aggregatePublicKeys(pubKeyPoints); -beaconState.currentSyncCommittee.aggregatePubkey = g1PointToBytesLE(aggregatedPubKey, true); +// let pubKeyPoints: ProjPointType[] = []; + +// for (let i = 0; i < N_validators; i++) { +// let privKey = i < privKeyHexes.length ? hexToBytes(privKeyHexes[i]) : bls12_381.utils.randomPrivateKey(); +// let p = bls12_381.G1.ProjectivePoint.fromPrivateKey(privKey); +// let pubkey = g1PointToBytesLE(p, true); +// beaconState.validators.push({ +// pubkey: pubkey, +// withdrawalCredentials: Uint8Array.from(Array(32).fill(0)), +// effectiveBalance: 32000000, +// slashed: false, +// activationEligibilityEpoch: i, +// activationEpoch: i + 1, +// exitEpoch: 100, +// withdrawableEpoch: 0 +// }); +// privKeyHexes[i] = bytesToHex(privKey); +// pubKeyPoints.push(p); +// beaconState.currentSyncCommittee.pubkeys.push(pubkey); +// } -//-------------- Beacon block body --------------// -let beaconBlockBody = { - executionPayload: { - withdrawals: [], - transactions: [ - ], - blockHash: Uint8Array.from(Array(32).fill(0)), - parentHash: Uint8Array.from(Array(32).fill(0)), - feeRecipient: Uint8Array.from(Array(20).fill(0)), - stateRoot: Uint8Array.from(Array(32).fill(0)), - receiptsRoot: Uint8Array.from(Array(32).fill(0)), - logsBloom: Uint8Array.from(Array(256).fill(0)), - prevRandao: Uint8Array.from(Array(32).fill(0)), - blockNumber: 0, - gasLimit: 0, - gasUsed: 0, - timestamp: 0, - extraData: Uint8Array.from(Array(32).fill(0)), - baseFeePerGas: 0n, - }, - blsToExecutionChanges: [], - randaoReveal: Uint8Array.from(Array(96).fill(0)), //beaconState.randaoMixes[0], - eth1Data: beaconState.eth1Data, - graffiti: Uint8Array.from(Array(32).fill(0)), - proposerSlashings: [], - attesterSlashings: [], - attestations: [], - deposits: [], - voluntaryExits: [], - syncAggregate: { - syncCommitteeBits: BitArray.fromBitLen(512), - syncCommitteeSignature: Uint8Array.from(Array(96).fill(0)), - }, -}; - -let beaconBlockTree = ssz.capella.BeaconBlockBody.toView(beaconBlockBody); - -let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload", "stateRoot"]).gindex; - -let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; - -let finalizedBlock = { - slot: 0, - proposerIndex: 0, - parentRoot: Uint8Array.from(Array(32).fill(0)), - stateRoot: Uint8Array.from(Array(32).fill(0)), - bodyRoot: beaconBlockTree.node.root, -}; - -beaconState.finalizedCheckpoint.root = ssz.phase0.BeaconBlockHeader.hashTreeRoot(finalizedBlock); - -const finilizedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(finalizedBlock); - -assert.deepStrictEqual(createNodeFromProof(execMerkleProof).root, beaconBlockTree.node.root) - -//--------------------- Sync ---------------------// - -const beaconStateRoot = ssz.capella.BeaconState.hashTreeRoot(beaconState); - -let attestedBlock = { - slot: 32, - proposerIndex: 0, - parentRoot: Uint8Array.from(Array(32).fill(0)), - stateRoot: beaconStateRoot, - bodyRoot: beaconState.finalizedCheckpoint.root, -}; - -let domain = config.getDomain(32, DOMAIN_SYNC_COMMITTEE, 32) - -const dataRoot = computeSigningRoot(ssz.phase0.BeaconBlockHeader, attestedBlock, domain) - -let msgPoint = bls12_381.G2.ProjectivePoint.fromAffine(bls12_381.G2.hashToCurve(dataRoot, { - DST: DST, -}).toAffine()); - -let signatures = privKeyHexes.slice(0, N_validators).map((privKey) => msgPoint.multiply(BigInt('0x' + privKey))); -let aggSignature = bls12_381.aggregateSignatures(signatures); - -// assert signature is valid -console.assert(bls12_381.verify(aggSignature, msgPoint, aggregatedPubKey)); - -const syncSigBytes = g2PointToLeBytes(aggSignature, true); -const attestedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(attestedBlock); +// fs.writeFileSync( +// `../test_data/private_keys.json`, +// serialize(privKeyHexes) +// ); -//----------------- State tree -----------------// - -let beaconStateTree = ssz.capella.BeaconState.toView(beaconState); - -let finilizedBlockRootGindex = ssz.capella.BeaconState.getPathInfo(["finalizedCheckpoint", "root"]).gindex; - -let finilizedBlockMerkleProof = createProof(beaconStateTree.node, { type: ProofType.single, gindex: finilizedBlockRootGindex }) as SingleProof; - -assert.deepStrictEqual(createNodeFromProof(finilizedBlockMerkleProof).root, beaconStateTree.node.root) - -let input = { - targetEpoch: targetEpoch, - pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), - pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), - domain: Array.from(domain), - attestedBlock: attestedBlockJson, - finalizedBlock: finilizedBlockJson, - signatureCompressed: syncSigBytes, - executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), - executionStateRoot: beaconBlockBody.executionPayload.stateRoot, - finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), - beaconStateRoot: Array.from(beaconStateRoot), -}; - -fs.writeFileSync( - `../test_data/sync_step.json`, - serialize(input) -); - -fs.writeFileSync( - `../test_data/committee_pubkeys.json`, - serialize( Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], true)))) -); +// //----------------- Sync Committee -----------------// + +// const aggregatedPubKey = bls12_381.aggregatePublicKeys(pubKeyPoints); +// beaconState.currentSyncCommittee.aggregatePubkey = g1PointToBytesLE(aggregatedPubKey, true); + + +// //-------------- Beacon block body --------------// + +// let beaconBlockBody = { +// executionPayload: { +// withdrawals: [], +// transactions: [ +// ], +// blockHash: Uint8Array.from(Array(32).fill(0)), +// parentHash: Uint8Array.from(Array(32).fill(0)), +// feeRecipient: Uint8Array.from(Array(20).fill(0)), +// stateRoot: Uint8Array.from(Array(32).fill(0)), +// receiptsRoot: Uint8Array.from(Array(32).fill(0)), +// logsBloom: Uint8Array.from(Array(256).fill(0)), +// prevRandao: Uint8Array.from(Array(32).fill(0)), +// blockNumber: 0, +// gasLimit: 0, +// gasUsed: 0, +// timestamp: 0, +// extraData: Uint8Array.from(Array(32).fill(0)), +// baseFeePerGas: 0n, +// }, +// blsToExecutionChanges: [], +// randaoReveal: Uint8Array.from(Array(96).fill(0)), //beaconState.randaoMixes[0], +// eth1Data: beaconState.eth1Data, +// graffiti: Uint8Array.from(Array(32).fill(0)), +// proposerSlashings: [], +// attesterSlashings: [], +// attestations: [], +// deposits: [], +// voluntaryExits: [], +// syncAggregate: { +// syncCommitteeBits: BitArray.fromBitLen(512), +// syncCommitteeSignature: Uint8Array.from(Array(96).fill(0)), +// }, +// }; + +// let beaconBlockTree = ssz.capella.BeaconBlockBody.toView(beaconBlockBody); + +// let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload", "stateRoot"]).gindex; + +// let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; + +// let finalizedBlock = { +// slot: 0, +// proposerIndex: 0, +// parentRoot: Uint8Array.from(Array(32).fill(0)), +// stateRoot: Uint8Array.from(Array(32).fill(0)), +// bodyRoot: beaconBlockTree.node.root, +// }; + +// beaconState.finalizedCheckpoint.root = ssz.phase0.BeaconBlockHeader.hashTreeRoot(finalizedBlock); + +// const finilizedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(finalizedBlock); + +// assert.deepStrictEqual(createNodeFromProof(execMerkleProof).root, beaconBlockTree.node.root) + +// //--------------------- Sync ---------------------// + +// const beaconStateRoot = ssz.capella.BeaconState.hashTreeRoot(beaconState); + +// let attestedBlock = { +// slot: 32, +// proposerIndex: 0, +// parentRoot: Uint8Array.from(Array(32).fill(0)), +// stateRoot: beaconStateRoot, +// bodyRoot: beaconState.finalizedCheckpoint.root, +// }; + +// let domain = config.getDomain(32, DOMAIN_SYNC_COMMITTEE, 32) + +// const dataRoot = computeSigningRoot(ssz.phase0.BeaconBlockHeader, attestedBlock, domain) + +// let msgPoint = bls12_381.G2.ProjectivePoint.fromAffine(bls12_381.G2.hashToCurve(dataRoot, { +// DST: DST, +// }).toAffine()); + +// let signatures = privKeyHexes.slice(0, N_validators).map((privKey) => msgPoint.multiply(BigInt('0x' + privKey))); +// let aggSignature = bls12_381.aggregateSignatures(signatures); + +// // assert signature is valid +// console.assert(bls12_381.verify(aggSignature, msgPoint, aggregatedPubKey)); + +// const syncSigBytes = g2PointToLeBytes(aggSignature, true); +// const attestedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(attestedBlock); + + +// //----------------- State tree -----------------// + +// let beaconStateTree = ssz.capella.BeaconState.toView(beaconState); + +// let finilizedBlockRootGindex = ssz.capella.BeaconState.getPathInfo(["finalizedCheckpoint", "root"]).gindex; + +// let finilizedBlockMerkleProof = createProof(beaconStateTree.node, { type: ProofType.single, gindex: finilizedBlockRootGindex }) as SingleProof; + +// assert.deepStrictEqual(createNodeFromProof(finilizedBlockMerkleProof).root, beaconStateTree.node.root) + +// let input = { +// targetEpoch: targetEpoch, +// pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), +// pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), +// domain: Array.from(domain), +// attestedBlock: attestedBlockJson, +// finalizedBlock: finilizedBlockJson, +// signatureCompressed: syncSigBytes, +// executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), +// executionStateRoot: beaconBlockBody.executionPayload.stateRoot, +// finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), +// beaconStateRoot: Array.from(beaconStateRoot), +// }; + +// fs.writeFileSync( +// `../test_data/sync_step.json`, +// serialize(input) +// ); + +// fs.writeFileSync( +// `../test_data/committee_pubkeys.json`, +// serialize(Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], true)))) +// ); diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs new file mode 100644 index 00000000..fea48c33 --- /dev/null +++ b/preprocessor/src/lib.rs @@ -0,0 +1,92 @@ +use std::marker::PhantomData; + +use eth_types::{Spec, Test}; +use halo2curves::{bls12_381::G1Affine, group::GroupEncoding, group::UncompressedEncoding}; +use itertools::Itertools; +use lightclient_circuits::witness::SyncStepArgs; +use ssz_rs::Merkleized; +use sync_committee_primitives::{consensus_types::BeaconBlockHeader, util::compute_domain}; +use sync_committee_prover::SyncCommitteeProver; + +pub async fn fetch_step_args() -> anyhow::Result> { + const NODE_URL: &str = "http://localhost:5052"; + let daemon = SyncCommitteeProver::new(NODE_URL.to_string()); + + let mut beacon_state = daemon.fetch_beacon_state("head").await.unwrap(); + + let mut beacon_block = daemon.fetch_block("head").await.unwrap(); + + let mut finalized_block = daemon.fetch_block("finalized").await.unwrap(); + let pubkeys_uncompressed = beacon_state + .current_sync_committee + .public_keys + .iter() + .map(|pk| { + let pk_rev = pk.to_vec().into_iter().rev().collect_vec(); + G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) + .unwrap() + .to_uncompressed() + .as_ref() + .to_vec() + }) + .collect_vec(); + + let domain = compute_domain( + sync_committee_primitives::domains::DomainType::SyncCommittee, + Some(beacon_state.fork.current_version), + Some(beacon_state.genesis_validators_root), + [0u8; 4], + )?; + + let beacon_state_root = beacon_state + .hash_tree_root() + .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; + + let finality_merkle_branch = + ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; + + let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); + + let execution_merkle_branch = + ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; + + let args = SyncStepArgs:: { + signature_compressed: vec![], + pubkeys_uncompressed, + pariticipation_bits: vec![], + attested_header: BeaconBlockHeader { + slot: beacon_block.slot, + proposer_index: beacon_block.proposer_index, + parent_root: beacon_block.parent_root, + state_root: beacon_block.state_root, + body_root: beacon_block.body.hash_tree_root().unwrap(), + }, + finalized_header: BeaconBlockHeader { + slot: finalized_block.slot, + proposer_index: finalized_block.proposer_index, + parent_root: finalized_block.parent_root, + state_root: finalized_block.state_root, + body_root: finalized_block.body.hash_tree_root().unwrap(), + }, + domain, + execution_merkle_branch, + execution_state_root, + finality_merkle_branch, + beacon_state_root: beacon_state_root.as_bytes().to_vec(), + _spec: PhantomData, + }; + + + Ok(args) +} + +#[tokio::test] +async fn run_daemon() { + let args = fetch_step_args::().await.unwrap(); + + println!("{:?}", args); +} diff --git a/prover/Cargo.toml b/prover/Cargo.toml index d1799f61..7713e278 100644 --- a/prover/Cargo.toml +++ b/prover/Cargo.toml @@ -6,9 +6,10 @@ edition = "2021" [dependencies] # cli clap = { version = "=4.2", features = ["derive"] } -strum = {version = "0.25", features = ["derive"] } +strum = {version = "=0.25", features = ["derive"] } cli-batteries = "=0.4" eyre = "0.6" +anstyle = "=1.0.0" # halo2 diff --git a/prover/src/main.rs b/prover/src/main.rs index fc75d14e..4c8630ac 100644 --- a/prover/src/main.rs +++ b/prover/src/main.rs @@ -23,6 +23,7 @@ fn main() { async fn app(options: Options) -> eyre::Result<()> { match options.proof { Proof::CommitteeUpdate(args) => match args.out { + Out::Proof => { gen_evm_proof::>( &args.config_path, @@ -81,14 +82,13 @@ fn setup_circuit>(config_path: &Path, build_dir: &Path) { let config: FlexGateConfigParams = serde_json::from_slice(&fs::read(config_path).unwrap()).unwrap(); - let _ = C::setup(&config, Some(build_dir)); + let _ = C::setup(config.k, Some(build_dir)); } fn gen_evm_verifier>(config_path: &Path, vkey_path: &Path, path_out: &Path) { let config: FlexGateConfigParams = serde_json::from_slice(&fs::read(config_path).unwrap()).unwrap(); - set_config(&config); let params = read_params(config.k as u32); diff --git a/rust-toolchain b/rust-toolchain index 88f6d102..a3c60e9d 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2022-11-22 +nightly-2022-11-22 From 81bebb2a22c917b021819e3eafb9b8fb2da033c5 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Mon, 18 Sep 2023 13:02:04 +0200 Subject: [PATCH 17/33] add beacon client struct --- .gitignore | 2 + preprocessor/scripts/generateInputData.ts | 317 +++++++++++----------- preprocessor/src/lib.rs | 154 ++++++----- 3 files changed, 237 insertions(+), 236 deletions(-) diff --git a/.gitignore b/.gitignore index 732fd1a7..a6a12395 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ params/ *.pk *.instances *.proof + +consensus-spec-tests diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index bba0a28b..b1f00fb9 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -1,5 +1,5 @@ import fs from "fs"; -import { bls12_381 } from '../../../examples/noble-curves/src/bls12-381' +import { bls12_381 } from '@noble/curves/bls12-381' import { ssz, } from "@lodestar/types" @@ -24,174 +24,167 @@ let privKeyHexes: string[] = JSON.parse(fs.readFileSync("../test_data/private_ke const targetEpoch = 25; -let g1Bytes = Uint8Array.from([165, 78, 16, 67, 57, 40, 109, 60, 232, 39, 24, 40, 251, 172, 32, 246, 207, 122, 253, 59, 114, 217, 177, 148, 183, 203, 175, 101, 246, 97, 36, 22, 17, 123, 228, 146, 191, 74, 168, 143, 175, 106, 218, 86, 207, 75, 100, 98]); - -let g1Point = bls12_381.G1.ProjectivePoint.fromHex(bytesToHex(g1Bytes)); - -console.log(g1Point.toAffine()); +//----------------- Beacon state -----------------// + +let beaconState = ssz.capella.BeaconState.deserialize(new Uint8Array(fs.readFileSync("../test_data/beacon_state_2915750"))); +beaconState.validators = []; +beaconState.currentSyncCommittee.pubkeys = []; +const config = createBeaconConfig(chainConfig, beaconState.genesisValidatorsRoot); + + +//----------------- Validators -----------------// + +let pubKeyPoints: ProjPointType[] = []; + +for (let i = 0; i < N_validators; i++) { + let privKey = i < privKeyHexes.length ? hexToBytes(privKeyHexes[i]) : bls12_381.utils.randomPrivateKey(); + let p = bls12_381.G1.ProjectivePoint.fromPrivateKey(privKey); + let pubkey = g1PointToBytesLE(p, true); + + beaconState.validators.push({ + pubkey: pubkey, + withdrawalCredentials: Uint8Array.from(Array(32).fill(0)), + effectiveBalance: 32000000, + slashed: false, + activationEligibilityEpoch: i, + activationEpoch: i + 1, + exitEpoch: 100, + withdrawableEpoch: 0 + }); + privKeyHexes[i] = bytesToHex(privKey); + pubKeyPoints.push(p); + beaconState.currentSyncCommittee.pubkeys.push(pubkey); +} -// //----------------- Beacon state -----------------// - -// let beaconState = ssz.capella.BeaconState.deserialize(new Uint8Array(fs.readFileSync("../test_data/beacon_state_2915750"))); -// beaconState.validators = []; -// beaconState.currentSyncCommittee.pubkeys = []; -// const config = createBeaconConfig(chainConfig, beaconState.genesisValidatorsRoot); +fs.writeFileSync( + `../test_data/private_keys.json`, + serialize(privKeyHexes) +); -// //----------------- Validators -----------------// +//----------------- Sync Committee -----------------// -// let pubKeyPoints: ProjPointType[] = []; - -// for (let i = 0; i < N_validators; i++) { -// let privKey = i < privKeyHexes.length ? hexToBytes(privKeyHexes[i]) : bls12_381.utils.randomPrivateKey(); -// let p = bls12_381.G1.ProjectivePoint.fromPrivateKey(privKey); -// let pubkey = g1PointToBytesLE(p, true); +const aggregatedPubKey = bls12_381.aggregatePublicKeys(pubKeyPoints); +beaconState.currentSyncCommittee.aggregatePubkey = g1PointToBytesLE(aggregatedPubKey, true); -// beaconState.validators.push({ -// pubkey: pubkey, -// withdrawalCredentials: Uint8Array.from(Array(32).fill(0)), -// effectiveBalance: 32000000, -// slashed: false, -// activationEligibilityEpoch: i, -// activationEpoch: i + 1, -// exitEpoch: 100, -// withdrawableEpoch: 0 -// }); -// privKeyHexes[i] = bytesToHex(privKey); -// pubKeyPoints.push(p); -// beaconState.currentSyncCommittee.pubkeys.push(pubkey); -// } +//-------------- Beacon block body --------------// -// fs.writeFileSync( -// `../test_data/private_keys.json`, -// serialize(privKeyHexes) -// ); +let beaconBlockBody = { + executionPayload: { + withdrawals: [], + transactions: [ + ], + blockHash: Uint8Array.from(Array(32).fill(0)), + parentHash: Uint8Array.from(Array(32).fill(0)), + feeRecipient: Uint8Array.from(Array(20).fill(0)), + stateRoot: Uint8Array.from(Array(32).fill(0)), + receiptsRoot: Uint8Array.from(Array(32).fill(0)), + logsBloom: Uint8Array.from(Array(256).fill(0)), + prevRandao: Uint8Array.from(Array(32).fill(0)), + blockNumber: 0, + gasLimit: 0, + gasUsed: 0, + timestamp: 0, + extraData: Uint8Array.from(Array(32).fill(0)), + baseFeePerGas: 0n, + }, + blsToExecutionChanges: [], + randaoReveal: Uint8Array.from(Array(96).fill(0)), //beaconState.randaoMixes[0], + eth1Data: beaconState.eth1Data, + graffiti: Uint8Array.from(Array(32).fill(0)), + proposerSlashings: [], + attesterSlashings: [], + attestations: [], + deposits: [], + voluntaryExits: [], + syncAggregate: { + syncCommitteeBits: BitArray.fromBitLen(512), + syncCommitteeSignature: Uint8Array.from(Array(96).fill(0)), + }, +}; + +let beaconBlockTree = ssz.capella.BeaconBlockBody.toView(beaconBlockBody); + +let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload", "stateRoot"]).gindex; + +let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; + +let finalizedBlock = { + slot: 0, + proposerIndex: 0, + parentRoot: Uint8Array.from(Array(32).fill(0)), + stateRoot: Uint8Array.from(Array(32).fill(0)), + bodyRoot: beaconBlockTree.node.root, +}; + +beaconState.finalizedCheckpoint.root = ssz.phase0.BeaconBlockHeader.hashTreeRoot(finalizedBlock); + +const finilizedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(finalizedBlock); + +assert.deepStrictEqual(createNodeFromProof(execMerkleProof).root, beaconBlockTree.node.root) + +//--------------------- Sync ---------------------// + +const beaconStateRoot = ssz.capella.BeaconState.hashTreeRoot(beaconState); + +let attestedBlock = { + slot: 32, + proposerIndex: 0, + parentRoot: Uint8Array.from(Array(32).fill(0)), + stateRoot: beaconStateRoot, + bodyRoot: beaconState.finalizedCheckpoint.root, +}; + +let domain = config.getDomain(32, DOMAIN_SYNC_COMMITTEE, 32) + +const dataRoot = computeSigningRoot(ssz.phase0.BeaconBlockHeader, attestedBlock, domain) + +let msgPoint = bls12_381.G2.ProjectivePoint.fromAffine(bls12_381.G2.hashToCurve(dataRoot, { + DST: DST, +}).toAffine()); + +let signatures = privKeyHexes.slice(0, N_validators).map((privKey) => msgPoint.multiply(BigInt('0x' + privKey))); +let aggSignature = bls12_381.aggregateSignatures(signatures); + +// assert signature is valid +console.assert(bls12_381.verify(aggSignature, msgPoint, aggregatedPubKey)); + +const syncSigBytes = g2PointToLeBytes(aggSignature, true); +const attestedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(attestedBlock); -// //----------------- Sync Committee -----------------// - -// const aggregatedPubKey = bls12_381.aggregatePublicKeys(pubKeyPoints); -// beaconState.currentSyncCommittee.aggregatePubkey = g1PointToBytesLE(aggregatedPubKey, true); - - -// //-------------- Beacon block body --------------// - -// let beaconBlockBody = { -// executionPayload: { -// withdrawals: [], -// transactions: [ -// ], -// blockHash: Uint8Array.from(Array(32).fill(0)), -// parentHash: Uint8Array.from(Array(32).fill(0)), -// feeRecipient: Uint8Array.from(Array(20).fill(0)), -// stateRoot: Uint8Array.from(Array(32).fill(0)), -// receiptsRoot: Uint8Array.from(Array(32).fill(0)), -// logsBloom: Uint8Array.from(Array(256).fill(0)), -// prevRandao: Uint8Array.from(Array(32).fill(0)), -// blockNumber: 0, -// gasLimit: 0, -// gasUsed: 0, -// timestamp: 0, -// extraData: Uint8Array.from(Array(32).fill(0)), -// baseFeePerGas: 0n, -// }, -// blsToExecutionChanges: [], -// randaoReveal: Uint8Array.from(Array(96).fill(0)), //beaconState.randaoMixes[0], -// eth1Data: beaconState.eth1Data, -// graffiti: Uint8Array.from(Array(32).fill(0)), -// proposerSlashings: [], -// attesterSlashings: [], -// attestations: [], -// deposits: [], -// voluntaryExits: [], -// syncAggregate: { -// syncCommitteeBits: BitArray.fromBitLen(512), -// syncCommitteeSignature: Uint8Array.from(Array(96).fill(0)), -// }, -// }; - -// let beaconBlockTree = ssz.capella.BeaconBlockBody.toView(beaconBlockBody); - -// let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload", "stateRoot"]).gindex; - -// let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; - -// let finalizedBlock = { -// slot: 0, -// proposerIndex: 0, -// parentRoot: Uint8Array.from(Array(32).fill(0)), -// stateRoot: Uint8Array.from(Array(32).fill(0)), -// bodyRoot: beaconBlockTree.node.root, -// }; - -// beaconState.finalizedCheckpoint.root = ssz.phase0.BeaconBlockHeader.hashTreeRoot(finalizedBlock); - -// const finilizedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(finalizedBlock); - -// assert.deepStrictEqual(createNodeFromProof(execMerkleProof).root, beaconBlockTree.node.root) - -// //--------------------- Sync ---------------------// - -// const beaconStateRoot = ssz.capella.BeaconState.hashTreeRoot(beaconState); - -// let attestedBlock = { -// slot: 32, -// proposerIndex: 0, -// parentRoot: Uint8Array.from(Array(32).fill(0)), -// stateRoot: beaconStateRoot, -// bodyRoot: beaconState.finalizedCheckpoint.root, -// }; - -// let domain = config.getDomain(32, DOMAIN_SYNC_COMMITTEE, 32) - -// const dataRoot = computeSigningRoot(ssz.phase0.BeaconBlockHeader, attestedBlock, domain) - -// let msgPoint = bls12_381.G2.ProjectivePoint.fromAffine(bls12_381.G2.hashToCurve(dataRoot, { -// DST: DST, -// }).toAffine()); - -// let signatures = privKeyHexes.slice(0, N_validators).map((privKey) => msgPoint.multiply(BigInt('0x' + privKey))); -// let aggSignature = bls12_381.aggregateSignatures(signatures); - -// // assert signature is valid -// console.assert(bls12_381.verify(aggSignature, msgPoint, aggregatedPubKey)); - -// const syncSigBytes = g2PointToLeBytes(aggSignature, true); -// const attestedBlockJson = ssz.phase0.BeaconBlockHeader.toJson(attestedBlock); - - -// //----------------- State tree -----------------// - -// let beaconStateTree = ssz.capella.BeaconState.toView(beaconState); - -// let finilizedBlockRootGindex = ssz.capella.BeaconState.getPathInfo(["finalizedCheckpoint", "root"]).gindex; - -// let finilizedBlockMerkleProof = createProof(beaconStateTree.node, { type: ProofType.single, gindex: finilizedBlockRootGindex }) as SingleProof; - -// assert.deepStrictEqual(createNodeFromProof(finilizedBlockMerkleProof).root, beaconStateTree.node.root) - -// let input = { -// targetEpoch: targetEpoch, -// pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), -// pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), -// domain: Array.from(domain), -// attestedBlock: attestedBlockJson, -// finalizedBlock: finilizedBlockJson, -// signatureCompressed: syncSigBytes, -// executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), -// executionStateRoot: beaconBlockBody.executionPayload.stateRoot, -// finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), -// beaconStateRoot: Array.from(beaconStateRoot), -// }; - -// fs.writeFileSync( -// `../test_data/sync_step.json`, -// serialize(input) -// ); - -// fs.writeFileSync( -// `../test_data/committee_pubkeys.json`, -// serialize(Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], true)))) -// ); +//----------------- State tree -----------------// + +let beaconStateTree = ssz.capella.BeaconState.toView(beaconState); + +let finilizedBlockRootGindex = ssz.capella.BeaconState.getPathInfo(["finalizedCheckpoint", "root"]).gindex; + +let finilizedBlockMerkleProof = createProof(beaconStateTree.node, { type: ProofType.single, gindex: finilizedBlockRootGindex }) as SingleProof; + +assert.deepStrictEqual(createNodeFromProof(finilizedBlockMerkleProof).root, beaconStateTree.node.root) + +let input = { + targetEpoch: targetEpoch, + pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), + pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), + domain: Array.from(domain), + attestedBlock: attestedBlockJson, + finalizedBlock: finilizedBlockJson, + signatureCompressed: syncSigBytes, + executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), + executionStateRoot: beaconBlockBody.executionPayload.stateRoot, + finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), + beaconStateRoot: Array.from(beaconStateRoot), +}; + +fs.writeFileSync( + `../test_data/sync_step.json`, + serialize(input) +); + +fs.writeFileSync( + `../test_data/committee_pubkeys.json`, + serialize(Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], true)))) +); diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs index fea48c33..fa78db01 100644 --- a/preprocessor/src/lib.rs +++ b/preprocessor/src/lib.rs @@ -8,85 +8,91 @@ use ssz_rs::Merkleized; use sync_committee_primitives::{consensus_types::BeaconBlockHeader, util::compute_domain}; use sync_committee_prover::SyncCommitteeProver; -pub async fn fetch_step_args() -> anyhow::Result> { - const NODE_URL: &str = "http://localhost:5052"; - let daemon = SyncCommitteeProver::new(NODE_URL.to_string()); +pub struct BeaconClient(pub(crate) SyncCommitteeProver); - let mut beacon_state = daemon.fetch_beacon_state("head").await.unwrap(); +impl BeaconClient { + pub fn new(node_url: impl AsRef) -> BeaconClient { + (SyncCommitteeProver::new(node_url.as_ref().to_string())) + } - let mut beacon_block = daemon.fetch_block("head").await.unwrap(); - - let mut finalized_block = daemon.fetch_block("finalized").await.unwrap(); - let pubkeys_uncompressed = beacon_state - .current_sync_committee - .public_keys - .iter() - .map(|pk| { - let pk_rev = pk.to_vec().into_iter().rev().collect_vec(); - G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) - .unwrap() - .to_uncompressed() - .as_ref() - .to_vec() - }) - .collect_vec(); - - let domain = compute_domain( - sync_committee_primitives::domains::DomainType::SyncCommittee, - Some(beacon_state.fork.current_version), - Some(beacon_state.genesis_validators_root), - [0u8; 4], - )?; - - let beacon_state_root = beacon_state - .hash_tree_root() - .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let finality_merkle_branch = - ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) - .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); - - let execution_merkle_branch = - ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + pub async fn fetch_step_args(&self) -> anyhow::Result> { + let mut beacon_state = daemon.fetch_beacon_state("head").await.unwrap(); + + let mut beacon_block = daemon.fetch_block("head").await.unwrap(); + + let mut finalized_block = daemon.fetch_block("finalized").await.unwrap(); + let pubkeys_uncompressed = beacon_state + .current_sync_committee + .public_keys + .iter() + .map(|pk| { + let pk_rev = pk.to_vec().into_iter().rev().collect_vec(); + G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) + .unwrap() + .to_uncompressed() + .as_ref() + .to_vec() + }) + .collect_vec(); + + let domain = compute_domain( + sync_committee_primitives::domains::DomainType::SyncCommittee, + Some(beacon_state.fork.current_version), + Some(beacon_state.genesis_validators_root), + [0u8; 4], + )?; + + let beacon_state_root = beacon_state + .hash_tree_root() .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let args = SyncStepArgs:: { - signature_compressed: vec![], - pubkeys_uncompressed, - pariticipation_bits: vec![], - attested_header: BeaconBlockHeader { - slot: beacon_block.slot, - proposer_index: beacon_block.proposer_index, - parent_root: beacon_block.parent_root, - state_root: beacon_block.state_root, - body_root: beacon_block.body.hash_tree_root().unwrap(), - }, - finalized_header: BeaconBlockHeader { - slot: finalized_block.slot, - proposer_index: finalized_block.proposer_index, - parent_root: finalized_block.parent_root, - state_root: finalized_block.state_root, - body_root: finalized_block.body.hash_tree_root().unwrap(), - }, - domain, - execution_merkle_branch, - execution_state_root, - finality_merkle_branch, - beacon_state_root: beacon_state_root.as_bytes().to_vec(), - _spec: PhantomData, - }; - - - Ok(args) + + let finality_merkle_branch = + ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; + + let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); + + let execution_merkle_branch = + ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; + + let args = SyncStepArgs:: { + signature_compressed: vec![], + pubkeys_uncompressed, + pariticipation_bits: vec![], + attested_header: BeaconBlockHeader { + slot: beacon_block.slot, + proposer_index: beacon_block.proposer_index, + parent_root: beacon_block.parent_root, + state_root: beacon_block.state_root, + body_root: beacon_block.body.hash_tree_root().unwrap(), + }, + finalized_header: BeaconBlockHeader { + slot: finalized_block.slot, + proposer_index: finalized_block.proposer_index, + parent_root: finalized_block.parent_root, + state_root: finalized_block.state_root, + body_root: finalized_block.body.hash_tree_root().unwrap(), + }, + domain, + execution_merkle_branch, + execution_state_root, + finality_merkle_branch, + beacon_state_root: beacon_state_root.as_bytes().to_vec(), + _spec: PhantomData, + }; + + + Ok(args) + } } #[tokio::test] -async fn run_daemon() { - let args = fetch_step_args::().await.unwrap(); +async fn fetch_step_args() { + let client = BeaconClient::new("http://localhost:80"); + let args = client.fetch_step_args::().await.unwrap(); - println!("{:?}", args); + println!("{:x?}", args); } From 355a5c82e28535ad1df3f71a003a9b87952fa98a Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 19 Sep 2023 15:48:22 +0200 Subject: [PATCH 18/33] add committe update circuit args pre-processing --- preprocessor/Cargo.toml | 2 +- preprocessor/src/lib.rs | 194 ++++++++++++++++++++++------------------ 2 files changed, 108 insertions(+), 88 deletions(-) diff --git a/preprocessor/Cargo.toml b/preprocessor/Cargo.toml index c160abb2..7238aa93 100644 --- a/preprocessor/Cargo.toml +++ b/preprocessor/Cargo.toml @@ -18,7 +18,7 @@ group = "0.12" # misc log = "=0.4.20" -anyhow = "1.0.75" +eyre = "0.6" tokio = { version = "1", features = ["full"]} itertools = "0.11.0" # tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread"] } diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs index fa78db01..0821e6e8 100644 --- a/preprocessor/src/lib.rs +++ b/preprocessor/src/lib.rs @@ -1,98 +1,118 @@ use std::marker::PhantomData; -use eth_types::{Spec, Test}; -use halo2curves::{bls12_381::G1Affine, group::GroupEncoding, group::UncompressedEncoding}; +use eth_types::Spec; +use halo2curves::{ + bls12_381::G1Affine, bn256::Fr, group::GroupEncoding, group::UncompressedEncoding, +}; use itertools::Itertools; -use lightclient_circuits::witness::SyncStepArgs; +use lightclient_circuits::{ + gadget::crypto, + witness::{CommitteeRotationArgs, SyncStepArgs}, +}; use ssz_rs::Merkleized; use sync_committee_primitives::{consensus_types::BeaconBlockHeader, util::compute_domain}; use sync_committee_prover::SyncCommitteeProver; -pub struct BeaconClient(pub(crate) SyncCommitteeProver); - -impl BeaconClient { - pub fn new(node_url: impl AsRef) -> BeaconClient { - (SyncCommitteeProver::new(node_url.as_ref().to_string())) - } - - pub async fn fetch_step_args(&self) -> anyhow::Result> { - let mut beacon_state = daemon.fetch_beacon_state("head").await.unwrap(); - - let mut beacon_block = daemon.fetch_block("head").await.unwrap(); - - let mut finalized_block = daemon.fetch_block("finalized").await.unwrap(); - let pubkeys_uncompressed = beacon_state - .current_sync_committee - .public_keys - .iter() - .map(|pk| { - let pk_rev = pk.to_vec().into_iter().rev().collect_vec(); - G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) - .unwrap() - .to_uncompressed() - .as_ref() - .to_vec() - }) - .collect_vec(); - - let domain = compute_domain( - sync_committee_primitives::domains::DomainType::SyncCommittee, - Some(beacon_state.fork.current_version), - Some(beacon_state.genesis_validators_root), - [0u8; 4], - )?; - - let beacon_state_root = beacon_state - .hash_tree_root() - .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let finality_merkle_branch = - ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) - .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); - - let execution_merkle_branch = - ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) - .map_err(|e| anyhow::anyhow!("merkleization error: {:?}", e))?; - - let args = SyncStepArgs:: { - signature_compressed: vec![], - pubkeys_uncompressed, - pariticipation_bits: vec![], - attested_header: BeaconBlockHeader { - slot: beacon_block.slot, - proposer_index: beacon_block.proposer_index, - parent_root: beacon_block.parent_root, - state_root: beacon_block.state_root, - body_root: beacon_block.body.hash_tree_root().unwrap(), - }, - finalized_header: BeaconBlockHeader { - slot: finalized_block.slot, - proposer_index: finalized_block.proposer_index, - parent_root: finalized_block.parent_root, - state_root: finalized_block.state_root, - body_root: finalized_block.body.hash_tree_root().unwrap(), - }, - domain, - execution_merkle_branch, - execution_state_root, - finality_merkle_branch, - beacon_state_root: beacon_state_root.as_bytes().to_vec(), - _spec: PhantomData, - }; - - - Ok(args) - } +pub async fn fetch_step_args(node_url: String) -> eyre::Result> { + let client = SyncCommitteeProver::new(node_url); + let mut beacon_state = client.fetch_beacon_state("head").await.unwrap(); + + let mut beacon_block = client.fetch_block("head").await.unwrap(); + + let mut finalized_block = client.fetch_block("finalized").await.unwrap(); + let pubkeys_uncompressed = beacon_state + .current_sync_committee + .public_keys + .iter() + .map(|pk| { + let pk_rev = pk.iter().copied().rev().collect_vec(); + G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) + .unwrap() + .to_uncompressed() + .as_ref() + .to_vec() + }) + .collect_vec(); + + let domain = compute_domain( + sync_committee_primitives::domains::DomainType::SyncCommittee, + Some(beacon_state.fork.current_version), + Some(beacon_state.genesis_validators_root), + [0u8; 4], + ) + .map_err(|e| eyre::eyre!("domain computation error: {:?}", e))?; + + let beacon_state_root = beacon_state + .hash_tree_root() + .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; + + let finality_merkle_branch = + ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; + + let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); + + let execution_merkle_branch = + ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) + .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) + .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; + + let args = SyncStepArgs:: { + signature_compressed: vec![], + pubkeys_uncompressed, + pariticipation_bits: vec![], + attested_header: BeaconBlockHeader { + slot: beacon_block.slot, + proposer_index: beacon_block.proposer_index, + parent_root: beacon_block.parent_root, + state_root: beacon_block.state_root, + body_root: beacon_block.body.hash_tree_root().unwrap(), + }, + finalized_header: BeaconBlockHeader { + slot: finalized_block.slot, + proposer_index: finalized_block.proposer_index, + parent_root: finalized_block.parent_root, + state_root: finalized_block.state_root, + body_root: finalized_block.body.hash_tree_root().unwrap(), + }, + domain, + execution_merkle_branch, + execution_state_root, + finality_merkle_branch, + beacon_state_root: beacon_state_root.as_bytes().to_vec(), + _spec: PhantomData, + }; + + Ok(args) } -#[tokio::test] -async fn fetch_step_args() { - let client = BeaconClient::new("http://localhost:80"); - let args = client.fetch_step_args::().await.unwrap(); +pub async fn fetch_rotation_args( + node_url: String, +) -> eyre::Result> { + let client = SyncCommitteeProver::new(node_url); + let beacon_state = client.fetch_beacon_state("head").await.unwrap(); + + let pubkeys_compressed = beacon_state + .current_sync_committee + .public_keys + .iter() + .map(|pk| pk.to_vec()) + .collect_vec(); - println!("{:x?}", args); + let args = CommitteeRotationArgs:: { + pubkeys_compressed, + randomness: crypto::constant_randomness(), + _spec: PhantomData, + }; + + Ok(args) } + +// #[tokio::test] +// async fn fetch_step_args() { +// let client = BeaconClient::new("http://localhost:80"); +// let args = client.fetch_step_args::().await.unwrap(); + +// println!("{:x?}", args); +// } From 175004fd56ab5f4242b4b65d25821065be46d615 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 19 Sep 2023 15:48:51 +0200 Subject: [PATCH 19/33] update `AppCircuit` trait --- lightclient-circuits/src/builder.rs | 36 +- .../src/committee_update_circuit.rs | 388 ++++++++++-------- .../src/gadget/crypto/builder.rs | 31 +- .../src/gadget/crypto/hash2curve.rs | 4 +- .../src/gadget/crypto/sha256.rs | 2 +- .../src/gadget/crypto/sha256/builder.rs | 4 + .../src/gadget/crypto/sha256_wide.rs | 2 +- .../src/gadget/crypto/sha256_wide/builder.rs | 4 + lightclient-circuits/src/sync_step_circuit.rs | 302 ++++++++------ lightclient-circuits/src/util.rs | 17 +- lightclient-circuits/src/util/circuit.rs | 238 +++++++++++ lightclient-circuits/src/util/common.rs | 4 +- 12 files changed, 683 insertions(+), 349 deletions(-) create mode 100644 lightclient-circuits/src/util/circuit.rs diff --git a/lightclient-circuits/src/builder.rs b/lightclient-circuits/src/builder.rs index ac4d98ee..5687b390 100644 --- a/lightclient-circuits/src/builder.rs +++ b/lightclient-circuits/src/builder.rs @@ -1,6 +1,6 @@ use eth_types::Field; use halo2_base::{ - gates::builder::{FlexGateConfigParams, MultiPhaseThreadBreakPoints}, + gates::builder::{CircuitBuilderStage, FlexGateConfigParams, MultiPhaseThreadBreakPoints}, AssignedValue, }; use halo2_proofs::{ @@ -11,7 +11,7 @@ use log::debug; use crate::{ gadget::crypto::{SHAConfig, ShaCircuitBuilder, ShaThreadBuilder}, - util::{ThreadBuilderBase, ThreadBuilderConfigBase}, + util::{Eth2ConfigPinning, PinnableCircuit, ThreadBuilderBase, ThreadBuilderConfigBase}, }; #[derive(Clone, Debug)] @@ -28,6 +28,28 @@ pub struct Eth2CircuitBuilder> { } impl> Eth2CircuitBuilder { + pub fn new( + assigned_instances: Vec>, + builder: ShaCircuitBuilder, + ) -> Self { + Self { + assigned_instances, + inner: builder, + } + } + + pub fn from_stage( + assigned_instances: Vec>, + builder: ThreadBuilder, + break_points: Option, + stage: CircuitBuilderStage, + ) -> Self { + Self::new( + assigned_instances, + ShaCircuitBuilder::from_stage(builder, break_points, stage), + ) + } + /// Creates a new [Eth2CircuitBuilder] with `use_unknown` of [ThreadBuilder] set to true. pub fn keygen(assigned_instances: Vec>, builder: ThreadBuilder) -> Self { Self { @@ -127,3 +149,13 @@ impl> snark_verifier_sdk::CircuitE vec![self.instance()] } } + +impl> PinnableCircuit + for Eth2CircuitBuilder +{ + type Pinning = Eth2ConfigPinning; + + fn break_points(&self) -> MultiPhaseThreadBreakPoints { + self.inner.break_points.borrow().clone() + } +} diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 230c54c2..1c4e705c 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -19,8 +19,8 @@ use crate::{ poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::ssz_merkleize_chunks, util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, - ThreadBuilderBase, + decode_into_field, gen_pkey, AssignedValueCell, Challenges, Eth2ConfigPinning, IntoWitness, + AppCircuit, ThreadBuilderBase, }, witness::{self, HashInput, HashInputChunk}, }; @@ -73,7 +73,6 @@ pub struct CommitteeUpdateCircuit { impl CommitteeUpdateCircuit { fn synthesize( - &self, thread_pool: &mut ShaBitThreadBuilder, range: &RangeChip, args: &witness::CommitteeRotationArgs, @@ -185,196 +184,227 @@ impl CommitteeUpdateCircuit { } } -impl AppCircuitExt for CommitteeUpdateCircuit { - fn setup( - k: usize, - out: Option<&Path>, - ) -> ( - ParamsKZG, - ProvingKey, - MultiPhaseThreadBreakPoints, - ) { - let args = witness::CommitteeRotationArgs::::default(); - let circuit = CommitteeUpdateCircuit::::default(); - let range = RangeChip::::new(RangeStrategy::Vertical, 8); - let mut thread_pool = ShaBitThreadBuilder::keygen(); - - let assigned_instances = circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); - - let params = gen_srs(k as u32); - - let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - - circuit.config(k, None); - - let pk = gen_pkey(|| "committee_update", ¶ms, out, &circuit).unwrap(); +impl AppCircuit for CommitteeUpdateCircuit { + type Pinning = Eth2ConfigPinning; + type Args = witness::CommitteeRotationArgs; - let break_points = circuit.break_points(); - - (params, pk, break_points) - } -} - -#[cfg(test)] -mod tests { - use std::{ - env::{set_var, var}, - fs, - }; - - use crate::{ - gadget::crypto::constant_randomness, - util::{full_prover, full_verifier, gen_pkey}, - witness::{CommitteeRotationArgs, SyncStepArgs}, - }; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use halo2_base::{ - gates::{ - builder::{CircuitBuilderStage, FlexGateConfigParams}, - flex_gate::GateStrategy, - range::RangeStrategy, - }, - utils::fs::gen_srs, - }; - use halo2_proofs::{ - circuit::SimpleFloorPlanner, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, - poly::{commitment::Params, kzg::commitment::ParamsKZG}, - }; - use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; - use pasta_curves::group::UncompressedEncoding; - use rand::rngs::OsRng; - use rayon::iter::ParallelIterator; - use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; - use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; - use snark_verifier_sdk::{ - gen_pk, - halo2::{ - aggregation::{AggregationCircuit, AggregationConfigParams}, - gen_proof_shplonk, gen_snark_shplonk, - }, - CircuitExt, Snark, SHPLONK, - }; - - fn load_circuit_with_data( - thread_pool: &mut ShaBitThreadBuilder, - k: usize, - ) -> Vec> { - let args = { - let pubkeys_compressed: Vec> = - serde_json::from_slice(&fs::read("../test_data/committee_pubkeys.json").unwrap()) - .unwrap(); - CommitteeRotationArgs { - pubkeys_compressed, - randomness: constant_randomness(), - _spec: PhantomData, - } - }; - - let circuit = CommitteeUpdateCircuit::::default(); + fn create_circuit( + stage: halo2_base::gates::builder::CircuitBuilderStage, + pinning: Option, + params: &ParamsKZG, + args: &witness::CommitteeRotationArgs, + ) -> Result, Error> { + let mut thread_pool = ShaBitThreadBuilder::from_stage(stage); let range = RangeChip::::new(RangeStrategy::Vertical, 8); - circuit.synthesize(thread_pool, &range, &args).unwrap(); - - let config = thread_pool.config(k, None); - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - println!("params used: {:?}", config); - - let instance = vec![]; + let assigned_instances = Self::synthesize(&mut thread_pool, &range, args)?; - instance + Ok(Eth2CircuitBuilder::from_stage( + assigned_instances, + thread_pool, + pinning.map(|p| p.break_points), + stage, + )) } - fn gen_application_snark( - k: usize, - params: &ParamsKZG, - pk: &ProvingKey, - break_points: MultiPhaseThreadBreakPoints, - ) -> Snark { - let mut thread_pool = ShaBitThreadBuilder::prover(); - - let assigned_instances = load_circuit_with_data(&mut thread_pool, k); - - let circuit = Eth2CircuitBuilder::prover(assigned_instances, thread_pool, break_points); + // type ThreadBuilder = ShaBitThreadBuilder; - gen_snark_shplonk(params, pk, circuit, None::) - } - - #[test] - fn test_committee_update_circuit() { - const K: usize = 18; - let mut builder = ShaBitThreadBuilder::mock(); - let assigned_instances = load_circuit_with_data(&mut builder, K); + // type Args = witness::CommitteeRotationArgs; - let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); + // fn synthesize( + // thread_pool: &mut Self::ThreadBuilder, + // range: &RangeChip, + // args: &Self::Args, + // ) -> Result>, Error> { + // Self::synthesize(thread_pool, range, args) + // } - let timer = start_timer!(|| "committee_update mock prover"); - let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); - prover.assert_satisfied_par(); - end_timer!(timer); - } + // fn setup( + // k: usize, + // out: Option<&Path>, + // ) -> ( + // ParamsKZG, + // ProvingKey, + // MultiPhaseThreadBreakPoints, + // ) { + // let args = witness::CommitteeRotationArgs::::default(); + // let range = RangeChip::::new(RangeStrategy::Vertical, 8); + // let mut thread_pool = ShaBitThreadBuilder::keygen(); - #[test] - fn test_committee_update_proofgen() { - const K: usize = 18; + // let assigned_instances = Self::synthesize(&mut thread_pool, &range, &args).unwrap(); - let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); + // let params = gen_srs(k as u32); - let mut builder = ShaBitThreadBuilder::prover(); - let assigned_instances = load_circuit_with_data(&mut builder, K); + // let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + // circuit.config(k, None); - let instances = circuit.instances(); - let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + // let pk = gen_pkey(|| "committee_update", ¶ms, out, &circuit).unwrap(); - assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) - } + // let break_points = circuit.break_points(); - #[test] - fn circuit_agg() { - let path = "./config/committee_update_aggregation.json"; - const K: usize = 17; - let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); - - let snark = gen_application_snark(K, ¶ms_app, &pk_app, break_points); - - let agg_config = AggregationConfigParams::from_path(path); - - let params = gen_srs(agg_config.degree); - println!("agg_params k: {:?}", params.k()); - let lookup_bits = params.k() as usize - 1; - - let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); - - let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); - let pk = gen_pk(¶ms, &agg_circuit, None); - end_timer!(start0); - let break_points = agg_circuit.break_points(); - let agg_circuit = AggregationCircuit::new::( - CircuitBuilderStage::Prover, - Some(break_points), - lookup_bits, - ¶ms, - iter::once(snark), - ); - - let num_instances = agg_circuit.num_instance(); - let instances = agg_circuit.instances(); - let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); - println!("proof size: {}", proof.len()); - let deployment_code = gen_evm_verifier_shplonk::( - ¶ms, - pk.get_vk(), - num_instances, - None, - ); - println!("deployment_code size: {}", deployment_code.len()); - evm_verify(deployment_code, instances, proof); - } + // (params, pk, break_points) + // } } + +// #[cfg(test)] +// mod tests { +// use std::{ +// env::{set_var, var}, +// fs, +// }; + +// use crate::{ +// gadget::crypto::constant_randomness, +// util::{full_prover, full_verifier, gen_pkey}, +// witness::{CommitteeRotationArgs, SyncStepArgs}, +// }; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use halo2_base::{ +// gates::{ +// builder::{CircuitBuilderStage, FlexGateConfigParams}, +// flex_gate::GateStrategy, +// range::RangeStrategy, +// }, +// utils::fs::gen_srs, +// }; +// use halo2_proofs::{ +// circuit::SimpleFloorPlanner, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, +// poly::{commitment::Params, kzg::commitment::ParamsKZG}, +// }; +// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; +// use pasta_curves::group::UncompressedEncoding; +// use rand::rngs::OsRng; +// use rayon::iter::ParallelIterator; +// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; +// use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; +// use snark_verifier_sdk::{ +// gen_pk, +// halo2::{ +// aggregation::{AggregationCircuit, AggregationConfigParams}, +// gen_proof_shplonk, gen_snark_shplonk, +// }, +// CircuitExt, Snark, SHPLONK, +// }; + +// fn load_circuit_with_data( +// thread_pool: &mut ShaBitThreadBuilder, +// k: usize, +// ) -> Vec> { +// let args = { +// let pubkeys_compressed: Vec> = +// serde_json::from_slice(&fs::read("../test_data/committee_pubkeys.json").unwrap()) +// .unwrap(); +// CommitteeRotationArgs { +// pubkeys_compressed, +// randomness: constant_randomness(), +// _spec: PhantomData, +// } +// }; + +// let range = RangeChip::::new(RangeStrategy::Vertical, 8); +// CommitteeUpdateCircuit::::synthesize(thread_pool, &range, &args).unwrap(); + +// let config = thread_pool.config(k, None); +// set_var("LOOKUP_BITS", (config.k - 1).to_string()); +// println!("params used: {:?}", config); + +// let instance = vec![]; + +// instance +// } + +// fn gen_application_snark( +// k: usize, +// params: &ParamsKZG, +// pk: &ProvingKey, +// break_points: MultiPhaseThreadBreakPoints, +// ) -> Snark { +// let mut thread_pool = ShaBitThreadBuilder::prover(); + +// let assigned_instances = load_circuit_with_data(&mut thread_pool, k); + +// let circuit = Eth2CircuitBuilder::prover(assigned_instances, thread_pool, break_points); + +// gen_snark_shplonk(params, pk, circuit, None::) +// } + +// #[test] +// fn test_committee_update_circuit() { +// const K: usize = 18; +// let mut builder = ShaBitThreadBuilder::mock(); +// let assigned_instances = load_circuit_with_data(&mut builder, K); + +// let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); + +// let timer = start_timer!(|| "committee_update mock prover"); +// let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); +// prover.assert_satisfied_par(); +// end_timer!(timer); +// } + +// #[test] +// fn test_committee_update_proofgen() { +// const K: usize = 18; + +// let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); + +// let mut builder = ShaBitThreadBuilder::prover(); +// let assigned_instances = load_circuit_with_data(&mut builder, K); + +// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + +// let instances = circuit.instances(); +// let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + +// assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) +// } + +// #[test] +// fn circuit_agg() { +// let path = "./config/committee_update_aggregation.json"; +// const K: usize = 17; +// let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); + +// let snark = gen_application_snark(K, ¶ms_app, &pk_app, break_points); + +// let agg_config = AggregationConfigParams::from_path(path); + +// let params = gen_srs(agg_config.degree); +// println!("agg_params k: {:?}", params.k()); +// let lookup_bits = params.k() as usize - 1; + +// let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); + +// let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); +// let pk = gen_pk(¶ms, &agg_circuit, None); +// end_timer!(start0); +// let break_points = agg_circuit.break_points(); +// let agg_circuit = AggregationCircuit::new::( +// CircuitBuilderStage::Prover, +// Some(break_points), +// lookup_bits, +// ¶ms, +// iter::once(snark), +// ); + +// let num_instances = agg_circuit.num_instance(); +// let instances = agg_circuit.instances(); +// let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); +// println!("proof size: {}", proof.len()); +// let deployment_code = gen_evm_verifier_shplonk::( +// ¶ms, +// pk.get_vk(), +// num_instances, +// None, +// ); +// println!("deployment_code size: {}", deployment_code.len()); +// evm_verify(deployment_code, instances, proof); +// } +// } diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index 39466f0a..72365366 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -5,7 +5,7 @@ use halo2_base::{ gates::{ builder::{ assign_threads_in, FlexGateConfigParams, KeygenAssignments, - MultiPhaseThreadBreakPoints, ThreadBreakPoints, + MultiPhaseThreadBreakPoints, ThreadBreakPoints, CircuitBuilderStage, }, range::{RangeConfig, RangeStrategy}, }, @@ -57,31 +57,32 @@ pub struct ShaCircuitBuilder> { } impl> ShaCircuitBuilder { - /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. - pub fn keygen(builder: ThreadBuilder) -> Self { + pub fn new(builder: ThreadBuilder, break_points: Option) -> Self { Self { - builder: RefCell::new(builder.unknown(true)), - break_points: RefCell::new(vec![]), + builder: RefCell::new(builder), + break_points: RefCell::new(break_points.unwrap_or_default()), _f: PhantomData, } } + pub fn from_stage(builder: ThreadBuilder, break_points: Option, stage: CircuitBuilderStage) -> Self { + Self::new(builder.unknown(stage == CircuitBuilderStage::Keygen), break_points) + } + + /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. + pub fn keygen(builder: ThreadBuilder) -> Self { + Self::new(builder.unknown(true), None) + } + /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [GateThreadBuilder] set to false. pub fn mock(builder: ThreadBuilder) -> Self { - Self { - builder: RefCell::new(builder.unknown(false)), - break_points: RefCell::new(vec![]), - _f: PhantomData, - } + Self::new(builder.unknown(false), None) + } /// Creates a new [ShaCircuitBuilder]. pub fn prover(builder: ThreadBuilder, break_points: MultiPhaseThreadBreakPoints) -> Self { - Self { - builder: RefCell::new(builder.unknown(false)), - break_points: RefCell::new(break_points), - _f: PhantomData, - } + Self::new(builder.unknown(false), Some(break_points)) } pub fn config(&self, k: usize, minimum_rows: Option) -> FlexGateConfigParams { diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index 275bd0a6..fcfeb3ee 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -631,7 +631,7 @@ mod test { use crate::util::{print_fq2_dev, Challenges, IntoWitness}; use super::*; - use eth_types::{Mainnet, Test}; + use eth_types::{Mainnet, Testnet}; use halo2_base::gates::builder::FlexGateConfigParams; use halo2_base::gates::range::RangeConfig; use halo2_base::safe_types::RangeChip; @@ -658,7 +658,7 @@ mod test { let range = RangeChip::default(8); let sha256 = Sha256Chip::new(&range); - let h2c_chip = HashToCurveChip::::new(&sha256); + let h2c_chip = HashToCurveChip::::new(&sha256); let fp_chip = halo2_ecc::bls12_381::FpChip::::new(&range, G2::LIMB_BITS, G2::NUM_LIMBS); for input in input_vector { diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256.rs index 8b6293d0..80d1be1d 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256.rs @@ -215,7 +215,7 @@ mod test { use super::*; use ark_std::{end_timer, start_timer}; - use eth_types::Test; + use eth_types::Testnet; use halo2_base::gates::builder::FlexGateConfigParams; use halo2_base::gates::range::RangeConfig; use halo2_base::utils::fs::gen_srs; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs index 879ab9dc..3f79ad58 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256/builder.rs @@ -48,6 +48,10 @@ impl ThreadBuilderBase for ShaThreadBuilder { } } + fn from_stage(stage: CircuitBuilderStage) -> Self { + Self::new(stage == CircuitBuilderStage::Prover).unknown(stage == CircuitBuilderStage::Keygen) + } + fn unknown(mut self, use_unknown: bool) -> Self { self.gate_builder = self.gate_builder.unknown(use_unknown); self diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs index 1798db7e..58391755 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide.rs @@ -252,7 +252,7 @@ mod test { use super::*; use ark_std::{end_timer, start_timer}; - use eth_types::Test; + use eth_types::Testnet; use halo2_base::gates::builder::FlexGateConfigParams; use halo2_base::gates::range::RangeConfig; use halo2_base::utils::fs::gen_srs; diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs index 1832e83e..d00072a1 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -76,6 +76,10 @@ impl ThreadBuilderBase for ShaBitThreadBuilder { } } + fn from_stage(stage: CircuitBuilderStage) -> Self { + Self::new(stage == CircuitBuilderStage::Prover).unknown(stage == CircuitBuilderStage::Keygen) + } + fn unknown(mut self, use_unknown: bool) -> Self { self.gate_builder = self.gate_builder.unknown(use_unknown); self diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 0ffad3b6..f10b4bfa 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -19,8 +19,8 @@ use crate::{ poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, util::{ - decode_into_field, gen_pkey, AppCircuitExt, AssignedValueCell, Challenges, IntoWitness, - ThreadBuilderBase, + decode_into_field, gen_pkey, AssignedValueCell, Challenges, IntoWitness, + ThreadBuilderBase, AppCircuit, Eth2ConfigPinning, }, witness::{self, HashInput, HashInputChunk, SyncStepArgs}, }; @@ -74,7 +74,6 @@ pub struct SyncStepCircuit { impl SyncStepCircuit { fn synthesize( - &self, thread_pool: &mut ShaThreadBuilder, range: &RangeChip, args: &witness::SyncStepArgs, @@ -294,150 +293,181 @@ impl SyncStepCircuit { } } -impl AppCircuitExt for SyncStepCircuit { - fn setup( - k: usize, - out: Option<&Path>, - ) -> ( - ParamsKZG, - ProvingKey, - MultiPhaseThreadBreakPoints, - ) { - let args = witness::SyncStepArgs::::default(); - let circuit = SyncStepCircuit::::default(); +impl AppCircuit for SyncStepCircuit { + type Pinning = Eth2ConfigPinning; + type Args = witness::SyncStepArgs; + + fn create_circuit( + stage: halo2_base::gates::builder::CircuitBuilderStage, + pinning: Option, + params: &ParamsKZG, + args: &Self::Args, + ) -> Result, Error> { + let mut thread_pool = ShaThreadBuilder::from_stage(stage); let range = RangeChip::::new(RangeStrategy::Vertical, 8); - let mut thread_pool = ShaThreadBuilder::keygen(); - let assigned_instances = circuit.synthesize(&mut thread_pool, &range, &args).unwrap(); - let config = thread_pool.config(k, Some(109)); + let assigned_instances = Self::synthesize(&mut thread_pool, &range, args)?; - let params = gen_srs(k as u32); - - let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - - let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); - - let break_points = circuit.break_points(); - - (params, pk, break_points) - } -} - -#[cfg(test)] -mod tests { - use std::{ - env::{set_var, var}, - fs, - os::unix::thread, - }; - - use crate::{ - builder::Eth2CircuitBuilder, - util::{full_prover, full_verifier, gen_pkey}, - witness::SyncStepArgs, - }; - - use super::*; - use ark_std::{end_timer, start_timer}; - use eth_types::Test; - use group::Group; - use halo2_base::{ - gates::{ - builder::{CircuitBuilderStage, FlexGateConfigParams}, - flex_gate::GateStrategy, - range::RangeStrategy, - }, - utils::{decompose, fs::gen_srs}, - }; - use halo2_proofs::{ - circuit::SimpleFloorPlanner, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, - poly::kzg::commitment::ParamsKZG, - }; - use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; - use pasta_curves::group::UncompressedEncoding; - use rand::{rngs::OsRng, thread_rng}; - use rayon::iter::ParallelIterator; - use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; - use snark_verifier_sdk::{ - evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, - halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, - CircuitExt, SHPLONK, - }; - - fn load_circuit_with_data( - thread_pool: &mut ShaThreadBuilder, - k: usize, - ) -> Vec> { - let args: SyncStepArgs = - serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap(); - let circuit = SyncStepCircuit::::default(); - let range = RangeChip::::new(RangeStrategy::Vertical, 8); - - circuit.synthesize(thread_pool, &range, &args).unwrap(); - - let config = thread_pool.config(k, None); - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - println!("params used: {:?}", config); - - let instance = vec![]; - - instance - } - - #[test] - fn test_sync_circuit() { - const K: usize = 20; - - let mut builder = ShaThreadBuilder::mock(); - let assigned_instances = load_circuit_with_data(&mut builder, K); - - let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); - - let timer = start_timer!(|| "sync circuit mock prover"); - let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); - prover.assert_satisfied_par(); - end_timer!(timer); + Ok(Eth2CircuitBuilder::from_stage( + assigned_instances, + thread_pool, + pinning.map(|p| p.break_points), + stage, + )) } + + // type ThreadBuilder = ShaThreadBuilder; - #[test] - fn test_sync_proofgen() { - const K: usize = 20; - - let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); - - let mut builder = ShaThreadBuilder::prover(); - let assigned_instances = load_circuit_with_data(&mut builder, K); - let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - - let instances = circuit.instances(); - let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + // type Args = witness::SyncStepArgs; - assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) - } + // fn synthesize( + // thread_pool: &mut Self::ThreadBuilder, + // range: &RangeChip, + // args: &Self::Args, + // ) -> Result>, Error> { + // Self::synthesize(thread_pool, range, args) + // } - #[test] - fn test_sync_evm_verify() { - const K: usize = 21; + // fn setup( + // k: usize, + // out: Option<&Path>, + // ) -> ( + // ParamsKZG, + // ProvingKey, + // MultiPhaseThreadBreakPoints, + // ) { + // let args = witness::SyncStepArgs::::default(); + // let range = RangeChip::::new(RangeStrategy::Vertical, 8); + // let mut thread_pool = ShaThreadBuilder::keygen(); - let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); + // let assigned_instances = + // SyncStepCircuit::::synthesize(&mut thread_pool, &range, &args).unwrap(); + // let config = thread_pool.config(k, Some(109)); - let mut builder = ShaThreadBuilder::prover(); - let assigned_instances = load_circuit_with_data(&mut builder, K); - let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + // let params = gen_srs(k as u32); + // let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - - let num_instance = circuit.num_instance(); - let deployment_code = gen_evm_verifier_shplonk::< - Eth2CircuitBuilder>, - >(¶ms, pk.get_vk(), num_instance, None); + // let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); - let instances = circuit.instances(); - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + // let break_points = circuit.break_points(); - evm_verify(deployment_code, instances, proof); - } + // (params, pk, break_points) + // } } + +// #[cfg(test)] +// mod tests { +// use std::{ +// env::{set_var, var}, +// fs, +// os::unix::thread, +// }; + +// use crate::{ +// builder::Eth2CircuitBuilder, +// util::{full_prover, full_verifier, gen_pkey}, +// witness::SyncStepArgs, +// }; + +// use super::*; +// use ark_std::{end_timer, start_timer}; +// use eth_types::Test; +// use group::Group; +// use halo2_base::{ +// gates::{ +// builder::{CircuitBuilderStage, FlexGateConfigParams}, +// flex_gate::GateStrategy, +// range::RangeStrategy, +// }, +// utils::{decompose, fs::gen_srs}, +// }; +// use halo2_proofs::{ +// circuit::SimpleFloorPlanner, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, +// poly::kzg::commitment::ParamsKZG, +// }; +// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; +// use pasta_curves::group::UncompressedEncoding; +// use rand::{rngs::OsRng, thread_rng}; +// use rayon::iter::ParallelIterator; +// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; +// use snark_verifier_sdk::{ +// evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, +// halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, +// CircuitExt, SHPLONK, +// }; + +// fn load_circuit_with_data( +// thread_pool: &mut ShaThreadBuilder, +// k: usize, +// ) -> Vec> { +// let args: SyncStepArgs = +// serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap(); +// let range = RangeChip::::new(RangeStrategy::Vertical, 8); + +// SyncStepCircuit::::synthesize(thread_pool, &range, &args).unwrap(); + +// let config = thread_pool.config(k, None); +// set_var("LOOKUP_BITS", (config.k - 1).to_string()); +// println!("params used: {:?}", config); + +// let instance = vec![]; + +// instance +// } + +// #[test] +// fn test_sync_circuit() { +// const K: usize = 20; + +// let mut builder = ShaThreadBuilder::mock(); +// let assigned_instances = load_circuit_with_data(&mut builder, K); + +// let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); + +// let timer = start_timer!(|| "sync circuit mock prover"); +// let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); +// prover.assert_satisfied_par(); +// end_timer!(timer); +// } + +// #[test] +// fn test_sync_proofgen() { +// const K: usize = 20; + +// let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); + +// let mut builder = ShaThreadBuilder::prover(); +// let assigned_instances = load_circuit_with_data(&mut builder, K); +// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + +// let instances = circuit.instances(); +// let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + +// assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) +// } + +// #[test] +// fn test_sync_evm_verify() { +// const K: usize = 21; + +// let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); + +// let mut builder = ShaThreadBuilder::prover(); +// let assigned_instances = load_circuit_with_data(&mut builder, K); +// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); + +// let num_instance = circuit.num_instance(); +// let deployment_code = gen_evm_verifier_shplonk::< +// Eth2CircuitBuilder>, +// >(¶ms, pk.get_vk(), num_instance, None); + +// let instances = circuit.instances(); +// let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + +// evm_verify(deployment_code, instances, proof); +// } +// } diff --git a/lightclient-circuits/src/util.rs b/lightclient-circuits/src/util.rs index cf90da9a..3069ed94 100644 --- a/lightclient-circuits/src/util.rs +++ b/lightclient-circuits/src/util.rs @@ -1,9 +1,10 @@ //! Common utility traits and functions. mod common; +pub use common::*; + use std::{cell::RefCell, path::Path, rc::Rc}; -pub use common::*; mod constraint_builder; pub(crate) use constraint_builder::*; @@ -15,6 +16,9 @@ mod proof; use halo2curves::bn256; pub use proof::*; +mod circuit; +pub use circuit::*; + use halo2_base::{ gates::builder::{FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints}, safe_types::{GateInstructions, RangeChip, RangeInstructions}, @@ -66,17 +70,6 @@ pub(crate) fn query_expression( expr.unwrap() } -pub trait AppCircuitExt: Default { - fn setup( - k: usize, - out: Option<&Path>, - ) -> ( - ParamsKZG, - ProvingKey, - MultiPhaseThreadBreakPoints, - ); -} - /// Randomness used in circuits. #[derive(Default, Clone, Copy, Debug)] pub struct Challenges { diff --git a/lightclient-circuits/src/util/circuit.rs b/lightclient-circuits/src/util/circuit.rs new file mode 100644 index 00000000..decdfe2d --- /dev/null +++ b/lightclient-circuits/src/util/circuit.rs @@ -0,0 +1,238 @@ +use std::env::{set_var, var}; +use std::{fs::File, path::Path}; + +use halo2_base::gates::builder::{ + CircuitBuilderStage, FlexGateConfigParams, MultiPhaseThreadBreakPoints, +}; +use halo2_proofs::plonk::{Error, VerifyingKey}; +use halo2_proofs::{plonk::ProvingKey, poly::kzg::commitment::ParamsKZG}; +use halo2curves::bn256::{Bn256, Fr, G1Affine}; +use serde::{Deserialize, Serialize}; +use snark_verifier_sdk::evm::{gen_evm_proof, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; +use snark_verifier_sdk::{gen_pk, halo2::gen_snark_shplonk, read_pk}; +use snark_verifier_sdk::{CircuitExt, Snark}; + +pub trait Halo2ConfigPinning: Serialize { + type BreakPoints; + /// Loads configuration parameters from a file and sets environmental variables. + fn from_path>(path: P) -> Self; + /// Loads configuration parameters into environment variables. + fn set_var(&self); + /// Returns break points + fn break_points(self) -> Self::BreakPoints; + /// Constructs `Self` from environmental variables and break points + fn from_var(break_points: Self::BreakPoints) -> Self; + /// Degree of the circuit, log_2(number of rows) + fn degree(&self) -> u32; +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct Eth2ConfigPinning { + pub params: FlexGateConfigParams, + pub break_points: MultiPhaseThreadBreakPoints, +} + +impl Halo2ConfigPinning for Eth2ConfigPinning { + type BreakPoints = MultiPhaseThreadBreakPoints; + + fn from_path>(path: P) -> Self { + let pinning: Self = serde_json::from_reader( + File::open(&path) + .unwrap_or_else(|e| panic!("{:?} does not exist: {e:?}", path.as_ref())), + ) + .unwrap(); + pinning.set_var(); + pinning + } + + fn set_var(&self) { + set_var( + "FLEX_GATE_CONFIG_PARAMS", + serde_json::to_string(&self.params).unwrap(), + ); + set_var("LOOKUP_BITS", (self.params.k - 1).to_string()); + } + + fn break_points(self) -> MultiPhaseThreadBreakPoints { + self.break_points + } + + fn from_var(break_points: MultiPhaseThreadBreakPoints) -> Self { + let params: FlexGateConfigParams = + serde_json::from_str(&var("FLEX_GATE_CONFIG_PARAMS").unwrap()).unwrap(); + Self { + params, + break_points, + } + } + + fn degree(&self) -> u32 { + self.params.k as u32 + } +} + +pub trait PinnableCircuit: CircuitExt { + type Pinning: Halo2ConfigPinning; + + fn break_points(&self) -> ::BreakPoints; + + fn write_pinning(&self, path: impl AsRef) { + let break_points = self.break_points(); + let pinning: Self::Pinning = Halo2ConfigPinning::from_var(break_points); + serde_json::to_writer_pretty(File::create(path).unwrap(), &pinning).unwrap(); + } +} + +pub trait AppCircuit: Sized { + type Pinning: Halo2ConfigPinning; + type Args: Clone + Default; + + /// Creates a [`PinnableCircuit`], auto-configuring the circuit if not in production or prover mode. + /// + /// `params` should be the universal trusted setup for the present aggregation circuit. + /// We assume the trusted setup for the previous SNARKs is compatible with `params` in the sense that + /// the generator point and toxic waste `tau` are the same. + fn create_circuit( + stage: CircuitBuilderStage, + pinning: Option, + params: &ParamsKZG, + args: &Self::Args, + ) -> Result, Error>; + + /// Reads the proving key for the pre-circuit. + /// If `read_only` is true, then it is assumed that the proving key exists and can be read from `path` (otherwise the program will panic). + fn read_pk(params: &ParamsKZG, path: impl AsRef) -> ProvingKey { + let circuit = Self::create_circuit( + CircuitBuilderStage::Keygen, + None, + params, + &Self::Args::default(), + ); + todo!() + } + + /// Creates the proving key for the pre-circuit if file at `pk_path` is not found. + /// If a new proving key is created, the new pinning data is written to `pinning_path`. + fn create_pk( + params: &ParamsKZG, + pk_path: impl AsRef, + pinning_path: impl AsRef, + ) -> ProvingKey { + let circuit = Self::create_circuit( + CircuitBuilderStage::Keygen, + None, + params, + &Self::Args::default(), + ) + .unwrap(); + let pk_exists = pk_path.as_ref().exists(); + let pk = gen_pk(params, &circuit, Some(pk_path.as_ref())); + if !pk_exists { + // should only write pinning data if we created a new pkey + circuit.write_pinning(pinning_path); + } + pk + } + + fn get_degree(pinning_path: impl AsRef) -> u32 { + let pinning = Self::Pinning::from_path(pinning_path); + pinning.degree() + } + + fn read_or_create_pk( + params: &ParamsKZG, + pk_path: impl AsRef, + pinning_path: impl AsRef, + read_only: bool, + ) -> ProvingKey { + if read_only { + Self::read_pk(params, pk_path) + } else { + Self::create_pk(params, pk_path, pinning_path) + } + } + + fn gen_snark_shplonk( + params: &ParamsKZG, + pk: &ProvingKey, + pinning_path: impl AsRef, + path: Option>, + witness: &Self::Args, + ) -> Result { + let pinning = Self::Pinning::from_path(pinning_path); + let circuit = + Self::create_circuit(CircuitBuilderStage::Prover, Some(pinning), params, witness)?; + let snark = gen_snark_shplonk(params, pk, circuit, path); + + Ok(snark) + } + + fn gen_evm_verifier_shplonk( + params: &ParamsKZG, + pk: &ProvingKey, + yul_path: impl AsRef, + ) -> Result, Error> { + let circuit = Self::create_circuit( + CircuitBuilderStage::Keygen, + None, + params, + &Self::Args::default(), + )?; + let deployment_code = + custom_gen_evm_verifier_shplonk(params, pk.get_vk(), &circuit, Some(yul_path)); + + Ok(deployment_code) + } + + fn gen_calldata( + params: &ParamsKZG, + pk: &ProvingKey, + pinning_path: impl AsRef, + path: impl AsRef, + deployment_code: Option>, + args: &Self::Args, + ) -> Result { + let pinning = Self::Pinning::from_path(pinning_path); + let circuit = + Self::create_circuit(CircuitBuilderStage::Prover, Some(pinning), params, args)?; + let calldata = write_calldata_generic(params, pk, circuit, path, deployment_code); + + Ok(calldata) + } +} + +pub fn custom_gen_evm_verifier_shplonk>( + params: &ParamsKZG, + vk: &VerifyingKey, + circuit: &C, + path: Option>, +) -> Vec { + gen_evm_verifier_shplonk::( + params, + vk, + circuit.num_instance(), + path.as_ref().map(|p| p.as_ref()), + ) +} + +pub fn write_calldata_generic>( + params: &ParamsKZG, + pk: &ProvingKey, + circuit: ConcreteCircuit, + path: impl AsRef, + deployment_code: Option>, +) -> String { + use snark_verifier::loader::evm::encode_calldata; + use snark_verifier_sdk::evm::evm_verify; + use std::fs; + + let instances = circuit.instances(); + let proof = gen_evm_proof_shplonk(params, pk, circuit, instances.clone()); + // calldata as hex string + let calldata = hex::encode(encode_calldata(&instances, &proof)); + fs::write(path, &calldata).expect("write calldata should not fail"); + if let Some(deployment_code) = deployment_code { + evm_verify(deployment_code, instances, proof); + } + calldata +} diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index 09bb9615..cdaa6399 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -2,7 +2,7 @@ use crate::gadget::Expr; use eth_types::*; use halo2_base::{ gates::{ - builder::{FlexGateConfigParams, KeygenAssignments, MultiPhaseThreadBreakPoints}, + builder::{FlexGateConfigParams, KeygenAssignments, MultiPhaseThreadBreakPoints, CircuitBuilderStage}, flex_gate::FlexGateConfig, }, Context, @@ -145,6 +145,8 @@ pub trait ThreadBuilderBase: Clone + Sized { fn new(witness_gen_only: bool) -> Self; + fn from_stage(stage: CircuitBuilderStage) -> Self; + fn mock() -> Self { Self::new(false) } From e2baf29c8e8dc2269075e6c9b0c2cd6e8c54d71b Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 19 Sep 2023 15:49:02 +0200 Subject: [PATCH 20/33] add Minimal spec --- eth-types/src/lib.rs | 2 +- eth-types/src/spec.rs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/eth-types/src/lib.rs b/eth-types/src/lib.rs index f51e5bb4..b2ce08e7 100644 --- a/eth-types/src/lib.rs +++ b/eth-types/src/lib.rs @@ -3,7 +3,7 @@ #![feature(associated_type_defaults)] #![feature(generic_const_exprs)] mod spec; -pub use spec::{Mainnet, Spec, Test}; +pub use spec::{Spec, Minimal, Testnet, Mainnet}; mod curve; pub use curve::{AppCurveExt, HashCurveExt}; diff --git a/eth-types/src/spec.rs b/eth-types/src/spec.rs index 6e24e39c..1b61694d 100644 --- a/eth-types/src/spec.rs +++ b/eth-types/src/spec.rs @@ -10,9 +10,21 @@ pub trait Spec: 'static + Sized + Copy + Default + Debug { } #[derive(Copy, Clone, PartialEq, Eq, Debug, Default)] -pub struct Test; +pub struct Minimal; -impl Spec for Test { +impl Spec for Minimal { + const SYNC_COMMITTEE_SIZE: usize = 32; + const DST: &'static [u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; + const EXECUTION_STATE_ROOT_INDEX: usize = 9; + const EXECUTION_STATE_ROOT_DEPTH: usize = 4; + const FINALIZED_HEADER_INDEX: usize = 105; + const FINALIZED_HEADER_DEPTH: usize = 6; +} + +#[derive(Copy, Clone, PartialEq, Eq, Debug, Default)] +pub struct Testnet; + +impl Spec for Testnet { const SYNC_COMMITTEE_SIZE: usize = 512; const DST: &'static [u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; const EXECUTION_STATE_ROOT_INDEX: usize = 402; From 0e6a02bc915053658d802638bf1d3a47b032a4ad Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 19 Sep 2023 15:49:12 +0200 Subject: [PATCH 21/33] fix prover crate --- Cargo.toml | 2 +- prover/Cargo.toml | 8 +- prover/src/args.rs | 43 ++++----- prover/src/main.rs | 230 +++++++++++++++++++-------------------------- 4 files changed, 120 insertions(+), 163 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2b7e1b43..1370ed8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["lightclient-circuits", "preprocessor", "eth-types"] +members = ["lightclient-circuits", "prover", "preprocessor", "eth-types"] # Definition of benchmarks profile to use. [profile.bench] diff --git a/prover/Cargo.toml b/prover/Cargo.toml index 7713e278..3a6bf8ba 100644 --- a/prover/Cargo.toml +++ b/prover/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] # cli clap = { version = "=4.2", features = ["derive"] } -strum = {version = "=0.25", features = ["derive"] } +strum = { version = "=0.25", features = ["derive"] } cli-batteries = "=0.4" eyre = "0.6" anstyle = "=1.0.0" @@ -19,18 +19,20 @@ halo2curves = { git = "https://github.com/privacy-scaling-explorations/halo2curv snark-verifier = { git = "https://github.com/axiom-crypto/snark-verifier.git", tag = "v0.1.1", default-features = false, features = [ "display", "loader_halo2", - "loader_evm" + "loader_evm", ] } snark-verifier-sdk = { git = "https://github.com/axiom-crypto/snark-verifier.git", tag = "v0.1.1", default-features = false, features = [ "display", "loader_halo2", - "loader_evm" + "loader_evm", ] } # local lightclient-circuits = { path = "../lightclient-circuits" } +preprocessor = { path = "../preprocessor" } eth-types = { path = "../eth-types" } + # misc serde = { version = "1.0.130", features = ["derive"] } serde_json = "1.0.78" diff --git a/prover/src/args.rs b/prover/src/args.rs index f6bff11c..8aa1172c 100644 --- a/prover/src/args.rs +++ b/prover/src/args.rs @@ -6,16 +6,19 @@ use strum::EnumString; pub struct Options { #[command(subcommand)] pub proof: Proof, + + #[clap(long, short, default_value = "mainnet")] + pub spec: Spec, } #[derive(Clone, clap::Subcommand)] pub enum Proof { - CommitteeUpdate(CommitteeUpdateArgs), - SyncStep(SyncStepArgs), + CommitteeUpdate(Args), + SyncStep(Args), } #[derive(Clone, clap::Args)] -pub struct SyncStepArgs { +pub struct Args { #[clap(long, short, default_value = "proof")] pub out: Out, @@ -34,30 +37,12 @@ pub struct SyncStepArgs { #[clap(index = 1, help = "path to output", default_value = ".")] pub path_out: PathBuf, -} - -#[derive(Clone, clap::Args)] -pub struct CommitteeUpdateArgs { - #[clap(long, short, default_value = "proof")] - pub out: Out, - - #[clap( - long, - short, - default_value = "./lightclient-circuits/config/committee_update.json" - )] - pub config_path: PathBuf, - #[clap(long, short, default_value = "./build")] - pub build_dir: PathBuf, - - #[clap(long, short, default_value = "./sync_state.json")] - pub input_path: PathBuf, - - #[clap(index = 1, help = "path to output", default_value = ".")] - pub path_out: PathBuf, + #[clap(index = 1, help = "Beacon node URL", default_value = "http://localhost::5052")] + pub node_url: String, } + #[derive(Clone, Debug, PartialEq, EnumString)] pub enum Out { #[strum(serialize = "proof")] @@ -69,3 +54,13 @@ pub enum Out { #[strum(serialize = "calldata")] Calldata, } + +#[derive(Clone, Debug, PartialEq, EnumString)] +pub enum Spec { + #[strum(serialize = "minimal")] + Minimal, + #[strum(serialize = "testnet")] + Testnet, + #[strum(serialize = "mainnet")] + Mainnet, +} diff --git a/prover/src/main.rs b/prover/src/main.rs index 4c8630ac..6f7984dd 100644 --- a/prover/src/main.rs +++ b/prover/src/main.rs @@ -1,18 +1,14 @@ -use std::{cell::RefCell, env::set_var, fs, path::Path}; +use std::future::Future; -use args::{Options, Out, Proof}; +use args::{Args, Options, Out, Proof}; use cli_batteries::version; -use eth_types::Test; use halo2curves::bn256::Fr; use lightclient_circuits::{ committee_update_circuit::CommitteeUpdateCircuit, sync_step_circuit::SyncStepCircuit, - util::{read_params, read_vkey, AppCircuitExt}, - witness::SyncState, - FlexGateConfigParams, + util::{gen_srs, AppCircuit}, }; -use snark_verifier::loader::halo2::halo2_ecc::halo2_base::gates::builder::GateThreadBuilder; -use snark_verifier_sdk::evm::{gen_evm_proof_shplonk, gen_evm_verifier_shplonk, write_calldata}; +use preprocessor::{fetch_rotation_args, fetch_step_args}; mod args; @@ -21,137 +17,101 @@ fn main() { } async fn app(options: Options) -> eyre::Result<()> { - match options.proof { - Proof::CommitteeUpdate(args) => match args.out { - - Out::Proof => { - gen_evm_proof::>( - &args.config_path, - &args.build_dir, - &args.input_path, - Some(&args.path_out), - None, - ); - } - Out::Artifacts => setup_circuit::>( - &args.config_path, - &args.build_dir, - ), - Out::EvmVerifier => gen_evm_verifier::>( - &args.config_path, - &args.build_dir.join("committee_update.vkey"), - &args.path_out, - ), - Out::Calldata => gen_evm_calldata::>( - &args.config_path, - &args.build_dir, - &args.input_path, - &args.path_out, - ), - }, - Proof::SyncStep(args) => match args.out { - Out::Proof => { - gen_evm_proof::>( - &args.config_path, - &args.build_dir, - &args.input_path, - Some(&args.path_out), - None, - ); - } - Out::Artifacts => { - setup_circuit::>(&args.config_path, &args.build_dir) - } - Out::EvmVerifier => gen_evm_verifier::>( - &args.config_path, - &args.build_dir.join("sync_step.vkey"), - &args.path_out, - ), - Out::Calldata => gen_evm_calldata::>( - &args.config_path, - &args.build_dir, - &args.input_path, - &args.path_out, - ), - }, + match options.spec { + args::Spec::Minimal => spec_app::(&options.proof).await, + args::Spec::Testnet => spec_app::(&options.proof).await, + args::Spec::Mainnet => spec_app::(&options.proof).await, } - Ok(()) -} - -fn setup_circuit>(config_path: &Path, build_dir: &Path) { - let config: FlexGateConfigParams = - serde_json::from_slice(&fs::read(config_path).unwrap()).unwrap(); - - let _ = C::setup(config.k, Some(build_dir)); -} - -fn gen_evm_verifier>(config_path: &Path, vkey_path: &Path, path_out: &Path) { - let config: FlexGateConfigParams = - serde_json::from_slice(&fs::read(config_path).unwrap()).unwrap(); - - - let params = read_params(config.k as u32); - - let circuit = C::default(); - - let num_instance = circuit.num_instance(); - - let vk = read_vkey::(vkey_path).expect("Failed to read vkey"); - - let _ = gen_evm_verifier_shplonk::(¶ms, &vk, num_instance, Some(path_out)); } -fn gen_evm_proof>( - config_path: &Path, - build_dir: &Path, - path_in: &Path, - path_out: Option<&Path>, - instances: Option<&mut Vec>>, -) -> Vec { - let config: FlexGateConfigParams = - serde_json::from_slice(&fs::read(config_path).unwrap()).unwrap(); - - let (params, pk) = C::setup(&config, Some(build_dir)); - - let state: SyncState = serde_json::from_slice(&fs::read(path_in).unwrap()).unwrap(); - - let builder = RefCell::from(GateThreadBuilder::new(false)); - - let circuit = C::new_from_state(builder, &state); - - let public_inputs = circuit.instances(); - - set_config(&config); - - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, public_inputs.clone()); - - if let Some(path) = path_out { - fs::write(path, proof.clone()).expect("Failed to write proof to file"); - } - - if let Some(instances) = instances { - *instances = public_inputs; +async fn spec_app(proof: &Proof) -> eyre::Result<()> { + match proof { + Proof::CommitteeUpdate(args) => { + generic_circuit_app::, _, _>( + args, + fetch_rotation_args, + "committee_update", + ) + .await + } + Proof::SyncStep(args) => { + generic_circuit_app::, _, _>( + args, + fetch_step_args, + "sync_step", + ) + .await + } } - - proof } -fn gen_evm_calldata>( - config_path: &Path, - build_dir: &Path, - path_in: &Path, - path_out: &Path, -) { - let mut instances = vec![]; - let proof = gen_evm_proof::(config_path, build_dir, path_in, None, Some(&mut instances)); - - write_calldata(&instances, &proof, path_out).unwrap(); -} - -fn set_config(config: &FlexGateConfigParams) { - set_var("LOOKUP_BITS", (config.k - 1).to_string()); - set_var( - "FLEX_GATE_CONFIG_PARAMS", - serde_json::to_string(&config).unwrap(), - ); +async fn generic_circuit_app< + Circuit: AppCircuit, + FnFetch: FnOnce(String) -> Fut, + Fut: Future>, +>( + cli_args: &Args, + fetch: FnFetch, + name: &str, +) -> eyre::Result<()> { + let k = Circuit::get_degree(&cli_args.config_path); + let params = gen_srs(k); + let pk_filename = format!("{}.pkey", name); + + match cli_args.out { + Out::Proof => { + let pk = Circuit::read_or_create_pk( + ¶ms, + cli_args.build_dir.join(&pk_filename), + &cli_args.config_path, + true, + ); + let witness = fetch(cli_args.node_url.clone()).await?; + Circuit::gen_snark_shplonk( + ¶ms, + &pk, + &cli_args.config_path, + Some(&cli_args.path_out), + &witness, + ) + .map_err(|e| eyre::eyre!("Failed to generate proof: {}", e))?; + } + Out::Artifacts => { + Circuit::create_pk( + ¶ms, + cli_args.build_dir.join(&pk_filename), + &cli_args.config_path, + ); + } + Out::EvmVerifier => { + let pk = Circuit::read_or_create_pk( + ¶ms, + cli_args.build_dir.join(&pk_filename), + &cli_args.config_path, + true, + ); + Circuit::gen_evm_verifier_shplonk(¶ms, &pk, &cli_args.path_out) + .map_err(|e| eyre::eyre!("Failed to EVM verifier: {}", e))?; + } + Out::Calldata => { + let pk = Circuit::read_or_create_pk( + ¶ms, + cli_args.build_dir.join(&pk_filename), + &cli_args.config_path, + true, + ); + let witness = fetch(cli_args.node_url.clone()).await?; + + Circuit::gen_calldata( + ¶ms, + &pk, + &cli_args.config_path, + &cli_args.path_out, + None, + &witness, + ) + .map_err(|e| eyre::eyre!("Failed to generate calldata: {}", e))?; + } + } + Ok(()) } From 62335c864638ac3cdbbd70cca80c583851bb5a2c Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Tue, 19 Sep 2023 18:18:30 +0200 Subject: [PATCH 22/33] fixes --- contracts/snark-verifiers/sync_step.yul | 2969 +++++++++++++++++ justfile | 8 +- lightclient-circuits/config/sync_step.json | 34 +- .../src/committee_update_circuit.rs | 16 +- lightclient-circuits/src/sync_step_circuit.rs | 16 +- lightclient-circuits/src/util/circuit.rs | 20 +- preprocessor/Cargo.toml | 1 + preprocessor/src/lib.rs | 53 +- prover/src/args.rs | 13 +- prover/src/main.rs | 16 +- 10 files changed, 3106 insertions(+), 40 deletions(-) create mode 100644 contracts/snark-verifiers/sync_step.yul diff --git a/contracts/snark-verifiers/sync_step.yul b/contracts/snark-verifiers/sync_step.yul new file mode 100644 index 00000000..a4a58dc7 --- /dev/null +++ b/contracts/snark-verifiers/sync_step.yul @@ -0,0 +1,2969 @@ + + object "plonk_verifier" { + code { + function allocate(size) -> ptr { + ptr := mload(0x40) + if eq(ptr, 0) { ptr := 0x60 } + mstore(0x40, add(ptr, size)) + } + let size := datasize("Runtime") + let offset := allocate(size) + datacopy(offset, dataoffset("Runtime"), size) + return(offset, size) + } + object "Runtime" { + code { + let success:bool := true + let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 + let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 + function validate_ec_point(x, y) -> valid:bool { + { + let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + valid := and(x_lt_p, y_lt_p) + } + { + let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let is_affine:bool := eq(x_cube_plus_3, y_square) + valid := and(valid, is_affine) + } + } + mstore(0x0, 11497799072841017384538028289762584481850921987101337710720099970697021375897) + + { + let x := calldataload(0x0) + mstore(0x20, x) + let y := calldataload(0x20) + mstore(0x40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x40) + mstore(0x60, x) + let y := calldataload(0x60) + mstore(0x80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x80) + mstore(0xa0, x) + let y := calldataload(0xa0) + mstore(0xc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xc0) + mstore(0xe0, x) + let y := calldataload(0xe0) + mstore(0x100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x100) + mstore(0x120, x) + let y := calldataload(0x120) + mstore(0x140, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x140) + mstore(0x160, x) + let y := calldataload(0x160) + mstore(0x180, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x180) + mstore(0x1a0, x) + let y := calldataload(0x1a0) + mstore(0x1c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1c0) + mstore(0x1e0, x) + let y := calldataload(0x1e0) + mstore(0x200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x200) + mstore(0x220, x) + let y := calldataload(0x220) + mstore(0x240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x240) + mstore(0x260, x) + let y := calldataload(0x260) + mstore(0x280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x280) + mstore(0x2a0, x) + let y := calldataload(0x2a0) + mstore(0x2c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2c0) + mstore(0x2e0, x) + let y := calldataload(0x2e0) + mstore(0x300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x300) + mstore(0x320, x) + let y := calldataload(0x320) + mstore(0x340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x340) + mstore(0x360, x) + let y := calldataload(0x360) + mstore(0x380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x380) + mstore(0x3a0, x) + let y := calldataload(0x3a0) + mstore(0x3c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3c0) + mstore(0x3e0, x) + let y := calldataload(0x3e0) + mstore(0x400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x400) + mstore(0x420, x) + let y := calldataload(0x420) + mstore(0x440, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x460, keccak256(0x0, 1120)) +{ + let hash := mload(0x460) + mstore(0x480, mod(hash, f_q)) + mstore(0x4a0, hash) + } + + { + let x := calldataload(0x440) + mstore(0x4c0, x) + let y := calldataload(0x460) + mstore(0x4e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x480) + mstore(0x500, x) + let y := calldataload(0x4a0) + mstore(0x520, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4c0) + mstore(0x540, x) + let y := calldataload(0x4e0) + mstore(0x560, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x500) + mstore(0x580, x) + let y := calldataload(0x520) + mstore(0x5a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x540) + mstore(0x5c0, x) + let y := calldataload(0x560) + mstore(0x5e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x580) + mstore(0x600, x) + let y := calldataload(0x5a0) + mstore(0x620, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5c0) + mstore(0x640, x) + let y := calldataload(0x5e0) + mstore(0x660, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x600) + mstore(0x680, x) + let y := calldataload(0x620) + mstore(0x6a0, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x6c0, keccak256(0x4a0, 544)) +{ + let hash := mload(0x6c0) + mstore(0x6e0, mod(hash, f_q)) + mstore(0x700, hash) + } +mstore8(1824, 1) +mstore(0x720, keccak256(0x700, 33)) +{ + let hash := mload(0x720) + mstore(0x740, mod(hash, f_q)) + mstore(0x760, hash) + } + + { + let x := calldataload(0x640) + mstore(0x780, x) + let y := calldataload(0x660) + mstore(0x7a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x680) + mstore(0x7c0, x) + let y := calldataload(0x6a0) + mstore(0x7e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6c0) + mstore(0x800, x) + let y := calldataload(0x6e0) + mstore(0x820, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x700) + mstore(0x840, x) + let y := calldataload(0x720) + mstore(0x860, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x740) + mstore(0x880, x) + let y := calldataload(0x760) + mstore(0x8a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x780) + mstore(0x8c0, x) + let y := calldataload(0x7a0) + mstore(0x8e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7c0) + mstore(0x900, x) + let y := calldataload(0x7e0) + mstore(0x920, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x800) + mstore(0x940, x) + let y := calldataload(0x820) + mstore(0x960, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x840) + mstore(0x980, x) + let y := calldataload(0x860) + mstore(0x9a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x880) + mstore(0x9c0, x) + let y := calldataload(0x8a0) + mstore(0x9e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x8c0) + mstore(0xa00, x) + let y := calldataload(0x8e0) + mstore(0xa20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x900) + mstore(0xa40, x) + let y := calldataload(0x920) + mstore(0xa60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x940) + mstore(0xa80, x) + let y := calldataload(0x960) + mstore(0xaa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x980) + mstore(0xac0, x) + let y := calldataload(0x9a0) + mstore(0xae0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x9c0) + mstore(0xb00, x) + let y := calldataload(0x9e0) + mstore(0xb20, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0xb40, keccak256(0x760, 992)) +{ + let hash := mload(0xb40) + mstore(0xb60, mod(hash, f_q)) + mstore(0xb80, hash) + } + + { + let x := calldataload(0xa00) + mstore(0xba0, x) + let y := calldataload(0xa20) + mstore(0xbc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xa40) + mstore(0xbe0, x) + let y := calldataload(0xa60) + mstore(0xc00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xa80) + mstore(0xc20, x) + let y := calldataload(0xaa0) + mstore(0xc40, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0xc60, keccak256(0xb80, 224)) +{ + let hash := mload(0xc60) + mstore(0xc80, mod(hash, f_q)) + mstore(0xca0, hash) + } +mstore(0xcc0, mod(calldataload(0xac0), f_q)) +mstore(0xce0, mod(calldataload(0xae0), f_q)) +mstore(0xd00, mod(calldataload(0xb00), f_q)) +mstore(0xd20, mod(calldataload(0xb20), f_q)) +mstore(0xd40, mod(calldataload(0xb40), f_q)) +mstore(0xd60, mod(calldataload(0xb60), f_q)) +mstore(0xd80, mod(calldataload(0xb80), f_q)) +mstore(0xda0, mod(calldataload(0xba0), f_q)) +mstore(0xdc0, mod(calldataload(0xbc0), f_q)) +mstore(0xde0, mod(calldataload(0xbe0), f_q)) +mstore(0xe00, mod(calldataload(0xc00), f_q)) +mstore(0xe20, mod(calldataload(0xc20), f_q)) +mstore(0xe40, mod(calldataload(0xc40), f_q)) +mstore(0xe60, mod(calldataload(0xc60), f_q)) +mstore(0xe80, mod(calldataload(0xc80), f_q)) +mstore(0xea0, mod(calldataload(0xca0), f_q)) +mstore(0xec0, mod(calldataload(0xcc0), f_q)) +mstore(0xee0, mod(calldataload(0xce0), f_q)) +mstore(0xf00, mod(calldataload(0xd00), f_q)) +mstore(0xf20, mod(calldataload(0xd20), f_q)) +mstore(0xf40, mod(calldataload(0xd40), f_q)) +mstore(0xf60, mod(calldataload(0xd60), f_q)) +mstore(0xf80, mod(calldataload(0xd80), f_q)) +mstore(0xfa0, mod(calldataload(0xda0), f_q)) +mstore(0xfc0, mod(calldataload(0xdc0), f_q)) +mstore(0xfe0, mod(calldataload(0xde0), f_q)) +mstore(0x1000, mod(calldataload(0xe00), f_q)) +mstore(0x1020, mod(calldataload(0xe20), f_q)) +mstore(0x1040, mod(calldataload(0xe40), f_q)) +mstore(0x1060, mod(calldataload(0xe60), f_q)) +mstore(0x1080, mod(calldataload(0xe80), f_q)) +mstore(0x10a0, mod(calldataload(0xea0), f_q)) +mstore(0x10c0, mod(calldataload(0xec0), f_q)) +mstore(0x10e0, mod(calldataload(0xee0), f_q)) +mstore(0x1100, mod(calldataload(0xf00), f_q)) +mstore(0x1120, mod(calldataload(0xf20), f_q)) +mstore(0x1140, mod(calldataload(0xf40), f_q)) +mstore(0x1160, mod(calldataload(0xf60), f_q)) +mstore(0x1180, mod(calldataload(0xf80), f_q)) +mstore(0x11a0, mod(calldataload(0xfa0), f_q)) +mstore(0x11c0, mod(calldataload(0xfc0), f_q)) +mstore(0x11e0, mod(calldataload(0xfe0), f_q)) +mstore(0x1200, mod(calldataload(0x1000), f_q)) +mstore(0x1220, mod(calldataload(0x1020), f_q)) +mstore(0x1240, mod(calldataload(0x1040), f_q)) +mstore(0x1260, mod(calldataload(0x1060), f_q)) +mstore(0x1280, mod(calldataload(0x1080), f_q)) +mstore(0x12a0, mod(calldataload(0x10a0), f_q)) +mstore(0x12c0, mod(calldataload(0x10c0), f_q)) +mstore(0x12e0, mod(calldataload(0x10e0), f_q)) +mstore(0x1300, mod(calldataload(0x1100), f_q)) +mstore(0x1320, mod(calldataload(0x1120), f_q)) +mstore(0x1340, mod(calldataload(0x1140), f_q)) +mstore(0x1360, mod(calldataload(0x1160), f_q)) +mstore(0x1380, mod(calldataload(0x1180), f_q)) +mstore(0x13a0, mod(calldataload(0x11a0), f_q)) +mstore(0x13c0, mod(calldataload(0x11c0), f_q)) +mstore(0x13e0, mod(calldataload(0x11e0), f_q)) +mstore(0x1400, mod(calldataload(0x1200), f_q)) +mstore(0x1420, mod(calldataload(0x1220), f_q)) +mstore(0x1440, mod(calldataload(0x1240), f_q)) +mstore(0x1460, mod(calldataload(0x1260), f_q)) +mstore(0x1480, mod(calldataload(0x1280), f_q)) +mstore(0x14a0, mod(calldataload(0x12a0), f_q)) +mstore(0x14c0, mod(calldataload(0x12c0), f_q)) +mstore(0x14e0, mod(calldataload(0x12e0), f_q)) +mstore(0x1500, mod(calldataload(0x1300), f_q)) +mstore(0x1520, mod(calldataload(0x1320), f_q)) +mstore(0x1540, mod(calldataload(0x1340), f_q)) +mstore(0x1560, mod(calldataload(0x1360), f_q)) +mstore(0x1580, mod(calldataload(0x1380), f_q)) +mstore(0x15a0, mod(calldataload(0x13a0), f_q)) +mstore(0x15c0, mod(calldataload(0x13c0), f_q)) +mstore(0x15e0, mod(calldataload(0x13e0), f_q)) +mstore(0x1600, mod(calldataload(0x1400), f_q)) +mstore(0x1620, mod(calldataload(0x1420), f_q)) +mstore(0x1640, mod(calldataload(0x1440), f_q)) +mstore(0x1660, mod(calldataload(0x1460), f_q)) +mstore(0x1680, mod(calldataload(0x1480), f_q)) +mstore(0x16a0, mod(calldataload(0x14a0), f_q)) +mstore(0x16c0, mod(calldataload(0x14c0), f_q)) +mstore(0x16e0, mod(calldataload(0x14e0), f_q)) +mstore(0x1700, mod(calldataload(0x1500), f_q)) +mstore(0x1720, mod(calldataload(0x1520), f_q)) +mstore(0x1740, mod(calldataload(0x1540), f_q)) +mstore(0x1760, mod(calldataload(0x1560), f_q)) +mstore(0x1780, mod(calldataload(0x1580), f_q)) +mstore(0x17a0, mod(calldataload(0x15a0), f_q)) +mstore(0x17c0, mod(calldataload(0x15c0), f_q)) +mstore(0x17e0, mod(calldataload(0x15e0), f_q)) +mstore(0x1800, mod(calldataload(0x1600), f_q)) +mstore(0x1820, mod(calldataload(0x1620), f_q)) +mstore(0x1840, mod(calldataload(0x1640), f_q)) +mstore(0x1860, mod(calldataload(0x1660), f_q)) +mstore(0x1880, mod(calldataload(0x1680), f_q)) +mstore(0x18a0, mod(calldataload(0x16a0), f_q)) +mstore(0x18c0, mod(calldataload(0x16c0), f_q)) +mstore(0x18e0, mod(calldataload(0x16e0), f_q)) +mstore(0x1900, mod(calldataload(0x1700), f_q)) +mstore(0x1920, mod(calldataload(0x1720), f_q)) +mstore(0x1940, mod(calldataload(0x1740), f_q)) +mstore(0x1960, mod(calldataload(0x1760), f_q)) +mstore(0x1980, mod(calldataload(0x1780), f_q)) +mstore(0x19a0, mod(calldataload(0x17a0), f_q)) +mstore(0x19c0, mod(calldataload(0x17c0), f_q)) +mstore(0x19e0, mod(calldataload(0x17e0), f_q)) +mstore(0x1a00, mod(calldataload(0x1800), f_q)) +mstore(0x1a20, mod(calldataload(0x1820), f_q)) +mstore(0x1a40, mod(calldataload(0x1840), f_q)) +mstore(0x1a60, mod(calldataload(0x1860), f_q)) +mstore(0x1a80, mod(calldataload(0x1880), f_q)) +mstore(0x1aa0, mod(calldataload(0x18a0), f_q)) +mstore(0x1ac0, mod(calldataload(0x18c0), f_q)) +mstore(0x1ae0, mod(calldataload(0x18e0), f_q)) +mstore(0x1b00, mod(calldataload(0x1900), f_q)) +mstore(0x1b20, mod(calldataload(0x1920), f_q)) +mstore(0x1b40, mod(calldataload(0x1940), f_q)) +mstore(0x1b60, mod(calldataload(0x1960), f_q)) +mstore(0x1b80, mod(calldataload(0x1980), f_q)) +mstore(0x1ba0, mod(calldataload(0x19a0), f_q)) +mstore(0x1bc0, mod(calldataload(0x19c0), f_q)) +mstore(0x1be0, mod(calldataload(0x19e0), f_q)) +mstore(0x1c00, mod(calldataload(0x1a00), f_q)) +mstore(0x1c20, mod(calldataload(0x1a20), f_q)) +mstore(0x1c40, mod(calldataload(0x1a40), f_q)) +mstore(0x1c60, mod(calldataload(0x1a60), f_q)) +mstore(0x1c80, mod(calldataload(0x1a80), f_q)) +mstore(0x1ca0, mod(calldataload(0x1aa0), f_q)) +mstore(0x1cc0, mod(calldataload(0x1ac0), f_q)) +mstore(0x1ce0, mod(calldataload(0x1ae0), f_q)) +mstore(0x1d00, mod(calldataload(0x1b00), f_q)) +mstore(0x1d20, mod(calldataload(0x1b20), f_q)) +mstore(0x1d40, mod(calldataload(0x1b40), f_q)) +mstore(0x1d60, mod(calldataload(0x1b60), f_q)) +mstore(0x1d80, keccak256(0xca0, 4320)) +{ + let hash := mload(0x1d80) + mstore(0x1da0, mod(hash, f_q)) + mstore(0x1dc0, hash) + } +mstore8(7648, 1) +mstore(0x1de0, keccak256(0x1dc0, 33)) +{ + let hash := mload(0x1de0) + mstore(0x1e00, mod(hash, f_q)) + mstore(0x1e20, hash) + } + + { + let x := calldataload(0x1b80) + mstore(0x1e40, x) + let y := calldataload(0x1ba0) + mstore(0x1e60, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x1e80, keccak256(0x1e20, 96)) +{ + let hash := mload(0x1e80) + mstore(0x1ea0, mod(hash, f_q)) + mstore(0x1ec0, hash) + } + + { + let x := calldataload(0x1bc0) + mstore(0x1ee0, x) + let y := calldataload(0x1be0) + mstore(0x1f00, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x1f20, mulmod(mload(0xc80), mload(0xc80), f_q)) +mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1f20), f_q)) +mstore(0x1f60, mulmod(mload(0x1f40), mload(0x1f40), f_q)) +mstore(0x1f80, mulmod(mload(0x1f60), mload(0x1f60), f_q)) +mstore(0x1fa0, mulmod(mload(0x1f80), mload(0x1f80), f_q)) +mstore(0x1fc0, mulmod(mload(0x1fa0), mload(0x1fa0), f_q)) +mstore(0x1fe0, mulmod(mload(0x1fc0), mload(0x1fc0), f_q)) +mstore(0x2000, mulmod(mload(0x1fe0), mload(0x1fe0), f_q)) +mstore(0x2020, mulmod(mload(0x2000), mload(0x2000), f_q)) +mstore(0x2040, mulmod(mload(0x2020), mload(0x2020), f_q)) +mstore(0x2060, mulmod(mload(0x2040), mload(0x2040), f_q)) +mstore(0x2080, mulmod(mload(0x2060), mload(0x2060), f_q)) +mstore(0x20a0, mulmod(mload(0x2080), mload(0x2080), f_q)) +mstore(0x20c0, mulmod(mload(0x20a0), mload(0x20a0), f_q)) +mstore(0x20e0, mulmod(mload(0x20c0), mload(0x20c0), f_q)) +mstore(0x2100, mulmod(mload(0x20e0), mload(0x20e0), f_q)) +mstore(0x2120, mulmod(mload(0x2100), mload(0x2100), f_q)) +mstore(0x2140, mulmod(mload(0x2120), mload(0x2120), f_q)) +mstore(0x2160, mulmod(mload(0x2140), mload(0x2140), f_q)) +mstore(0x2180, mulmod(mload(0x2160), mload(0x2160), f_q)) +mstore(0x21a0, mulmod(mload(0x2180), mload(0x2180), f_q)) +mstore(0x21c0, addmod(mload(0x21a0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0x21e0, mulmod(mload(0x21c0), 21888232434711746154598842647110004286396165347431605739555851272621938401409, f_q)) +mstore(0x2200, mulmod(mload(0x21e0), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) +mstore(0x2220, addmod(mload(0xc80), 912313628429477159406456086641000229562273017905841394476902509870102141130, f_q)) +mstore(0x2240, mulmod(mload(0x21e0), 495188420091111145957709789221178673495499187437761988132837836548330853701, f_q)) +mstore(0x2260, addmod(mload(0xc80), 21393054451748164076288695956036096415052865212978272355565366350027477641916, f_q)) +mstore(0x2280, mulmod(mload(0x21e0), 16064522944768515290584536219762686197737451920702130080538975732575755569557, f_q)) +mstore(0x22a0, addmod(mload(0xc80), 5823719927070759931661869525494588890810912479713904263159228454000052926060, f_q)) +mstore(0x22c0, mulmod(mload(0x21e0), 14686510910986211321976396297238126901237973400949744736326777596334651355305, f_q)) +mstore(0x22e0, addmod(mload(0xc80), 7201731960853063900270009448019148187310390999466289607371426590241157140312, f_q)) +mstore(0x2300, mulmod(mload(0x21e0), 10939663269433627367777756708678102241564365262857670666700619874077960926249, f_q)) +mstore(0x2320, addmod(mload(0xc80), 10948579602405647854468649036579172846983999137558363676997584312497847569368, f_q)) +mstore(0x2340, mulmod(mload(0x21e0), 15402826414547299628414612080036060696555554914079673875872749760617770134879, f_q)) +mstore(0x2360, addmod(mload(0xc80), 6485416457291975593831793665221214391992809486336360467825454425958038360738, f_q)) +mstore(0x2380, mulmod(mload(0x21e0), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) +mstore(0x23a0, addmod(mload(0xc80), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q)) +mstore(0x23c0, mulmod(mload(0x21e0), 1, f_q)) +mstore(0x23e0, addmod(mload(0xc80), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +{ + let prod := mload(0x2220) + + prod := mulmod(mload(0x2260), prod, f_q) + mstore(0x2400, prod) + + prod := mulmod(mload(0x22a0), prod, f_q) + mstore(0x2420, prod) + + prod := mulmod(mload(0x22e0), prod, f_q) + mstore(0x2440, prod) + + prod := mulmod(mload(0x2320), prod, f_q) + mstore(0x2460, prod) + + prod := mulmod(mload(0x2360), prod, f_q) + mstore(0x2480, prod) + + prod := mulmod(mload(0x23a0), prod, f_q) + mstore(0x24a0, prod) + + prod := mulmod(mload(0x23e0), prod, f_q) + mstore(0x24c0, prod) + + prod := mulmod(mload(0x21c0), prod, f_q) + mstore(0x24e0, prod) + + } +mstore(0x2520, 32) +mstore(0x2540, 32) +mstore(0x2560, 32) +mstore(0x2580, mload(0x24e0)) +mstore(0x25a0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x25c0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x2520, 0xc0, 0x2500, 0x20), 1), success) +{ + + let inv := mload(0x2500) + let v + + v := mload(0x21c0) + mstore(8640, mulmod(mload(0x24c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x23e0) + mstore(9184, mulmod(mload(0x24a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x23a0) + mstore(9120, mulmod(mload(0x2480), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x2360) + mstore(9056, mulmod(mload(0x2460), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x2320) + mstore(8992, mulmod(mload(0x2440), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x22e0) + mstore(8928, mulmod(mload(0x2420), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x22a0) + mstore(8864, mulmod(mload(0x2400), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x2260) + mstore(8800, mulmod(mload(0x2220), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x2220, inv) + + } +mstore(0x25e0, mulmod(mload(0x2200), mload(0x2220), f_q)) +mstore(0x2600, mulmod(mload(0x2240), mload(0x2260), f_q)) +mstore(0x2620, mulmod(mload(0x2280), mload(0x22a0), f_q)) +mstore(0x2640, mulmod(mload(0x22c0), mload(0x22e0), f_q)) +mstore(0x2660, mulmod(mload(0x2300), mload(0x2320), f_q)) +mstore(0x2680, mulmod(mload(0x2340), mload(0x2360), f_q)) +mstore(0x26a0, mulmod(mload(0x2380), mload(0x23a0), f_q)) +mstore(0x26c0, mulmod(mload(0x23c0), mload(0x23e0), f_q)) +mstore(0x26e0, mulmod(mload(0xd00), mload(0xce0), f_q)) +mstore(0x2700, addmod(mload(0xcc0), mload(0x26e0), f_q)) +mstore(0x2720, addmod(mload(0x2700), sub(f_q, mload(0xd20)), f_q)) +mstore(0x2740, mulmod(mload(0x2720), mload(0x1380), f_q)) +mstore(0x2760, mulmod(mload(0xb60), mload(0x2740), f_q)) +mstore(0x2780, mulmod(mload(0xd80), mload(0xd60), f_q)) +mstore(0x27a0, addmod(mload(0xd40), mload(0x2780), f_q)) +mstore(0x27c0, addmod(mload(0x27a0), sub(f_q, mload(0xda0)), f_q)) +mstore(0x27e0, mulmod(mload(0x27c0), mload(0x13a0), f_q)) +mstore(0x2800, addmod(mload(0x2760), mload(0x27e0), f_q)) +mstore(0x2820, mulmod(mload(0xb60), mload(0x2800), f_q)) +mstore(0x2840, mulmod(mload(0xe00), mload(0xde0), f_q)) +mstore(0x2860, addmod(mload(0xdc0), mload(0x2840), f_q)) +mstore(0x2880, addmod(mload(0x2860), sub(f_q, mload(0xe20)), f_q)) +mstore(0x28a0, mulmod(mload(0x2880), mload(0x13c0), f_q)) +mstore(0x28c0, addmod(mload(0x2820), mload(0x28a0), f_q)) +mstore(0x28e0, mulmod(mload(0xb60), mload(0x28c0), f_q)) +mstore(0x2900, mulmod(mload(0xe80), mload(0xe60), f_q)) +mstore(0x2920, addmod(mload(0xe40), mload(0x2900), f_q)) +mstore(0x2940, addmod(mload(0x2920), sub(f_q, mload(0xea0)), f_q)) +mstore(0x2960, mulmod(mload(0x2940), mload(0x13e0), f_q)) +mstore(0x2980, addmod(mload(0x28e0), mload(0x2960), f_q)) +mstore(0x29a0, mulmod(mload(0xb60), mload(0x2980), f_q)) +mstore(0x29c0, mulmod(mload(0xf00), mload(0xee0), f_q)) +mstore(0x29e0, addmod(mload(0xec0), mload(0x29c0), f_q)) +mstore(0x2a00, addmod(mload(0x29e0), sub(f_q, mload(0xf20)), f_q)) +mstore(0x2a20, mulmod(mload(0x2a00), mload(0x1400), f_q)) +mstore(0x2a40, addmod(mload(0x29a0), mload(0x2a20), f_q)) +mstore(0x2a60, mulmod(mload(0xb60), mload(0x2a40), f_q)) +mstore(0x2a80, mulmod(mload(0xf80), mload(0xf60), f_q)) +mstore(0x2aa0, addmod(mload(0xf40), mload(0x2a80), f_q)) +mstore(0x2ac0, addmod(mload(0x2aa0), sub(f_q, mload(0xfa0)), f_q)) +mstore(0x2ae0, mulmod(mload(0x2ac0), mload(0x1420), f_q)) +mstore(0x2b00, addmod(mload(0x2a60), mload(0x2ae0), f_q)) +mstore(0x2b20, mulmod(mload(0xb60), mload(0x2b00), f_q)) +mstore(0x2b40, mulmod(mload(0x1000), mload(0xfe0), f_q)) +mstore(0x2b60, addmod(mload(0xfc0), mload(0x2b40), f_q)) +mstore(0x2b80, addmod(mload(0x2b60), sub(f_q, mload(0x1020)), f_q)) +mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x1440), f_q)) +mstore(0x2bc0, addmod(mload(0x2b20), mload(0x2ba0), f_q)) +mstore(0x2be0, mulmod(mload(0xb60), mload(0x2bc0), f_q)) +mstore(0x2c00, mulmod(mload(0x1080), mload(0x1060), f_q)) +mstore(0x2c20, addmod(mload(0x1040), mload(0x2c00), f_q)) +mstore(0x2c40, addmod(mload(0x2c20), sub(f_q, mload(0x10a0)), f_q)) +mstore(0x2c60, mulmod(mload(0x2c40), mload(0x1460), f_q)) +mstore(0x2c80, addmod(mload(0x2be0), mload(0x2c60), f_q)) +mstore(0x2ca0, mulmod(mload(0xb60), mload(0x2c80), f_q)) +mstore(0x2cc0, mulmod(mload(0x1100), mload(0x10e0), f_q)) +mstore(0x2ce0, addmod(mload(0x10c0), mload(0x2cc0), f_q)) +mstore(0x2d00, addmod(mload(0x2ce0), sub(f_q, mload(0x1120)), f_q)) +mstore(0x2d20, mulmod(mload(0x2d00), mload(0x1480), f_q)) +mstore(0x2d40, addmod(mload(0x2ca0), mload(0x2d20), f_q)) +mstore(0x2d60, mulmod(mload(0xb60), mload(0x2d40), f_q)) +mstore(0x2d80, mulmod(mload(0x1180), mload(0x1160), f_q)) +mstore(0x2da0, addmod(mload(0x1140), mload(0x2d80), f_q)) +mstore(0x2dc0, addmod(mload(0x2da0), sub(f_q, mload(0x11a0)), f_q)) +mstore(0x2de0, mulmod(mload(0x2dc0), mload(0x14a0), f_q)) +mstore(0x2e00, addmod(mload(0x2d60), mload(0x2de0), f_q)) +mstore(0x2e20, mulmod(mload(0xb60), mload(0x2e00), f_q)) +mstore(0x2e40, mulmod(mload(0x1200), mload(0x11e0), f_q)) +mstore(0x2e60, addmod(mload(0x11c0), mload(0x2e40), f_q)) +mstore(0x2e80, addmod(mload(0x2e60), sub(f_q, mload(0x1220)), f_q)) +mstore(0x2ea0, mulmod(mload(0x2e80), mload(0x14c0), f_q)) +mstore(0x2ec0, addmod(mload(0x2e20), mload(0x2ea0), f_q)) +mstore(0x2ee0, mulmod(mload(0xb60), mload(0x2ec0), f_q)) +mstore(0x2f00, addmod(1, sub(f_q, mload(0x1760)), f_q)) +mstore(0x2f20, mulmod(mload(0x2f00), mload(0x26c0), f_q)) +mstore(0x2f40, addmod(mload(0x2ee0), mload(0x2f20), f_q)) +mstore(0x2f60, mulmod(mload(0xb60), mload(0x2f40), f_q)) +mstore(0x2f80, mulmod(mload(0x1ac0), mload(0x1ac0), f_q)) +mstore(0x2fa0, addmod(mload(0x2f80), sub(f_q, mload(0x1ac0)), f_q)) +mstore(0x2fc0, mulmod(mload(0x2fa0), mload(0x25e0), f_q)) +mstore(0x2fe0, addmod(mload(0x2f60), mload(0x2fc0), f_q)) +mstore(0x3000, mulmod(mload(0xb60), mload(0x2fe0), f_q)) +mstore(0x3020, addmod(mload(0x17c0), sub(f_q, mload(0x17a0)), f_q)) +mstore(0x3040, mulmod(mload(0x3020), mload(0x26c0), f_q)) +mstore(0x3060, addmod(mload(0x3000), mload(0x3040), f_q)) +mstore(0x3080, mulmod(mload(0xb60), mload(0x3060), f_q)) +mstore(0x30a0, addmod(mload(0x1820), sub(f_q, mload(0x1800)), f_q)) +mstore(0x30c0, mulmod(mload(0x30a0), mload(0x26c0), f_q)) +mstore(0x30e0, addmod(mload(0x3080), mload(0x30c0), f_q)) +mstore(0x3100, mulmod(mload(0xb60), mload(0x30e0), f_q)) +mstore(0x3120, addmod(mload(0x1880), sub(f_q, mload(0x1860)), f_q)) +mstore(0x3140, mulmod(mload(0x3120), mload(0x26c0), f_q)) +mstore(0x3160, addmod(mload(0x3100), mload(0x3140), f_q)) +mstore(0x3180, mulmod(mload(0xb60), mload(0x3160), f_q)) +mstore(0x31a0, addmod(mload(0x18e0), sub(f_q, mload(0x18c0)), f_q)) +mstore(0x31c0, mulmod(mload(0x31a0), mload(0x26c0), f_q)) +mstore(0x31e0, addmod(mload(0x3180), mload(0x31c0), f_q)) +mstore(0x3200, mulmod(mload(0xb60), mload(0x31e0), f_q)) +mstore(0x3220, addmod(mload(0x1940), sub(f_q, mload(0x1920)), f_q)) +mstore(0x3240, mulmod(mload(0x3220), mload(0x26c0), f_q)) +mstore(0x3260, addmod(mload(0x3200), mload(0x3240), f_q)) +mstore(0x3280, mulmod(mload(0xb60), mload(0x3260), f_q)) +mstore(0x32a0, addmod(mload(0x19a0), sub(f_q, mload(0x1980)), f_q)) +mstore(0x32c0, mulmod(mload(0x32a0), mload(0x26c0), f_q)) +mstore(0x32e0, addmod(mload(0x3280), mload(0x32c0), f_q)) +mstore(0x3300, mulmod(mload(0xb60), mload(0x32e0), f_q)) +mstore(0x3320, addmod(mload(0x1a00), sub(f_q, mload(0x19e0)), f_q)) +mstore(0x3340, mulmod(mload(0x3320), mload(0x26c0), f_q)) +mstore(0x3360, addmod(mload(0x3300), mload(0x3340), f_q)) +mstore(0x3380, mulmod(mload(0xb60), mload(0x3360), f_q)) +mstore(0x33a0, addmod(mload(0x1a60), sub(f_q, mload(0x1a40)), f_q)) +mstore(0x33c0, mulmod(mload(0x33a0), mload(0x26c0), f_q)) +mstore(0x33e0, addmod(mload(0x3380), mload(0x33c0), f_q)) +mstore(0x3400, mulmod(mload(0xb60), mload(0x33e0), f_q)) +mstore(0x3420, addmod(mload(0x1ac0), sub(f_q, mload(0x1aa0)), f_q)) +mstore(0x3440, mulmod(mload(0x3420), mload(0x26c0), f_q)) +mstore(0x3460, addmod(mload(0x3400), mload(0x3440), f_q)) +mstore(0x3480, mulmod(mload(0xb60), mload(0x3460), f_q)) +mstore(0x34a0, addmod(1, sub(f_q, mload(0x25e0)), f_q)) +mstore(0x34c0, addmod(mload(0x2600), mload(0x2620), f_q)) +mstore(0x34e0, addmod(mload(0x34c0), mload(0x2640), f_q)) +mstore(0x3500, addmod(mload(0x34e0), mload(0x2660), f_q)) +mstore(0x3520, addmod(mload(0x3500), mload(0x2680), f_q)) +mstore(0x3540, addmod(mload(0x3520), mload(0x26a0), f_q)) +mstore(0x3560, addmod(mload(0x34a0), sub(f_q, mload(0x3540)), f_q)) +mstore(0x3580, mulmod(mload(0x1500), mload(0x6e0), f_q)) +mstore(0x35a0, addmod(mload(0x1300), mload(0x3580), f_q)) +mstore(0x35c0, addmod(mload(0x35a0), mload(0x740), f_q)) +mstore(0x35e0, mulmod(mload(0x1520), mload(0x6e0), f_q)) +mstore(0x3600, addmod(mload(0xcc0), mload(0x35e0), f_q)) +mstore(0x3620, addmod(mload(0x3600), mload(0x740), f_q)) +mstore(0x3640, mulmod(mload(0x3620), mload(0x35c0), f_q)) +mstore(0x3660, mulmod(mload(0x3640), mload(0x1780), f_q)) +mstore(0x3680, mulmod(1, mload(0x6e0), f_q)) +mstore(0x36a0, mulmod(mload(0xc80), mload(0x3680), f_q)) +mstore(0x36c0, addmod(mload(0x1300), mload(0x36a0), f_q)) +mstore(0x36e0, addmod(mload(0x36c0), mload(0x740), f_q)) +mstore(0x3700, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x6e0), f_q)) +mstore(0x3720, mulmod(mload(0xc80), mload(0x3700), f_q)) +mstore(0x3740, addmod(mload(0xcc0), mload(0x3720), f_q)) +mstore(0x3760, addmod(mload(0x3740), mload(0x740), f_q)) +mstore(0x3780, mulmod(mload(0x3760), mload(0x36e0), f_q)) +mstore(0x37a0, mulmod(mload(0x3780), mload(0x1760), f_q)) +mstore(0x37c0, addmod(mload(0x3660), sub(f_q, mload(0x37a0)), f_q)) +mstore(0x37e0, mulmod(mload(0x37c0), mload(0x3560), f_q)) +mstore(0x3800, addmod(mload(0x3480), mload(0x37e0), f_q)) +mstore(0x3820, mulmod(mload(0xb60), mload(0x3800), f_q)) +mstore(0x3840, mulmod(mload(0x1540), mload(0x6e0), f_q)) +mstore(0x3860, addmod(mload(0xd40), mload(0x3840), f_q)) +mstore(0x3880, addmod(mload(0x3860), mload(0x740), f_q)) +mstore(0x38a0, mulmod(mload(0x1560), mload(0x6e0), f_q)) +mstore(0x38c0, addmod(mload(0xdc0), mload(0x38a0), f_q)) +mstore(0x38e0, addmod(mload(0x38c0), mload(0x740), f_q)) +mstore(0x3900, mulmod(mload(0x38e0), mload(0x3880), f_q)) +mstore(0x3920, mulmod(mload(0x3900), mload(0x17e0), f_q)) +mstore(0x3940, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x6e0), f_q)) +mstore(0x3960, mulmod(mload(0xc80), mload(0x3940), f_q)) +mstore(0x3980, addmod(mload(0xd40), mload(0x3960), f_q)) +mstore(0x39a0, addmod(mload(0x3980), mload(0x740), f_q)) +mstore(0x39c0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x6e0), f_q)) +mstore(0x39e0, mulmod(mload(0xc80), mload(0x39c0), f_q)) +mstore(0x3a00, addmod(mload(0xdc0), mload(0x39e0), f_q)) +mstore(0x3a20, addmod(mload(0x3a00), mload(0x740), f_q)) +mstore(0x3a40, mulmod(mload(0x3a20), mload(0x39a0), f_q)) +mstore(0x3a60, mulmod(mload(0x3a40), mload(0x17c0), f_q)) +mstore(0x3a80, addmod(mload(0x3920), sub(f_q, mload(0x3a60)), f_q)) +mstore(0x3aa0, mulmod(mload(0x3a80), mload(0x3560), f_q)) +mstore(0x3ac0, addmod(mload(0x3820), mload(0x3aa0), f_q)) +mstore(0x3ae0, mulmod(mload(0xb60), mload(0x3ac0), f_q)) +mstore(0x3b00, mulmod(mload(0x1580), mload(0x6e0), f_q)) +mstore(0x3b20, addmod(mload(0xe40), mload(0x3b00), f_q)) +mstore(0x3b40, addmod(mload(0x3b20), mload(0x740), f_q)) +mstore(0x3b60, mulmod(mload(0x15a0), mload(0x6e0), f_q)) +mstore(0x3b80, addmod(mload(0xec0), mload(0x3b60), f_q)) +mstore(0x3ba0, addmod(mload(0x3b80), mload(0x740), f_q)) +mstore(0x3bc0, mulmod(mload(0x3ba0), mload(0x3b40), f_q)) +mstore(0x3be0, mulmod(mload(0x3bc0), mload(0x1840), f_q)) +mstore(0x3c00, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x6e0), f_q)) +mstore(0x3c20, mulmod(mload(0xc80), mload(0x3c00), f_q)) +mstore(0x3c40, addmod(mload(0xe40), mload(0x3c20), f_q)) +mstore(0x3c60, addmod(mload(0x3c40), mload(0x740), f_q)) +mstore(0x3c80, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x6e0), f_q)) +mstore(0x3ca0, mulmod(mload(0xc80), mload(0x3c80), f_q)) +mstore(0x3cc0, addmod(mload(0xec0), mload(0x3ca0), f_q)) +mstore(0x3ce0, addmod(mload(0x3cc0), mload(0x740), f_q)) +mstore(0x3d00, mulmod(mload(0x3ce0), mload(0x3c60), f_q)) +mstore(0x3d20, mulmod(mload(0x3d00), mload(0x1820), f_q)) +mstore(0x3d40, addmod(mload(0x3be0), sub(f_q, mload(0x3d20)), f_q)) +mstore(0x3d60, mulmod(mload(0x3d40), mload(0x3560), f_q)) +mstore(0x3d80, addmod(mload(0x3ae0), mload(0x3d60), f_q)) +mstore(0x3da0, mulmod(mload(0xb60), mload(0x3d80), f_q)) +mstore(0x3dc0, mulmod(mload(0x15c0), mload(0x6e0), f_q)) +mstore(0x3de0, addmod(mload(0xf40), mload(0x3dc0), f_q)) +mstore(0x3e00, addmod(mload(0x3de0), mload(0x740), f_q)) +mstore(0x3e20, mulmod(mload(0x15e0), mload(0x6e0), f_q)) +mstore(0x3e40, addmod(mload(0xfc0), mload(0x3e20), f_q)) +mstore(0x3e60, addmod(mload(0x3e40), mload(0x740), f_q)) +mstore(0x3e80, mulmod(mload(0x3e60), mload(0x3e00), f_q)) +mstore(0x3ea0, mulmod(mload(0x3e80), mload(0x18a0), f_q)) +mstore(0x3ec0, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x6e0), f_q)) +mstore(0x3ee0, mulmod(mload(0xc80), mload(0x3ec0), f_q)) +mstore(0x3f00, addmod(mload(0xf40), mload(0x3ee0), f_q)) +mstore(0x3f20, addmod(mload(0x3f00), mload(0x740), f_q)) +mstore(0x3f40, mulmod(14704729814417906439424896605881467874595262020190401576785074330126828718155, mload(0x6e0), f_q)) +mstore(0x3f60, mulmod(mload(0xc80), mload(0x3f40), f_q)) +mstore(0x3f80, addmod(mload(0xfc0), mload(0x3f60), f_q)) +mstore(0x3fa0, addmod(mload(0x3f80), mload(0x740), f_q)) +mstore(0x3fc0, mulmod(mload(0x3fa0), mload(0x3f20), f_q)) +mstore(0x3fe0, mulmod(mload(0x3fc0), mload(0x1880), f_q)) +mstore(0x4000, addmod(mload(0x3ea0), sub(f_q, mload(0x3fe0)), f_q)) +mstore(0x4020, mulmod(mload(0x4000), mload(0x3560), f_q)) +mstore(0x4040, addmod(mload(0x3da0), mload(0x4020), f_q)) +mstore(0x4060, mulmod(mload(0xb60), mload(0x4040), f_q)) +mstore(0x4080, mulmod(mload(0x1600), mload(0x6e0), f_q)) +mstore(0x40a0, addmod(mload(0x1040), mload(0x4080), f_q)) +mstore(0x40c0, addmod(mload(0x40a0), mload(0x740), f_q)) +mstore(0x40e0, mulmod(mload(0x1620), mload(0x6e0), f_q)) +mstore(0x4100, addmod(mload(0x10c0), mload(0x40e0), f_q)) +mstore(0x4120, addmod(mload(0x4100), mload(0x740), f_q)) +mstore(0x4140, mulmod(mload(0x4120), mload(0x40c0), f_q)) +mstore(0x4160, mulmod(mload(0x4140), mload(0x1900), f_q)) +mstore(0x4180, mulmod(8343274462013750416000956870576256937330525306073862550863787263304548803879, mload(0x6e0), f_q)) +mstore(0x41a0, mulmod(mload(0xc80), mload(0x4180), f_q)) +mstore(0x41c0, addmod(mload(0x1040), mload(0x41a0), f_q)) +mstore(0x41e0, addmod(mload(0x41c0), mload(0x740), f_q)) +mstore(0x4200, mulmod(20928372310071051017340352686640453451620397549739756658327314209761852842004, mload(0x6e0), f_q)) +mstore(0x4220, mulmod(mload(0xc80), mload(0x4200), f_q)) +mstore(0x4240, addmod(mload(0x10c0), mload(0x4220), f_q)) +mstore(0x4260, addmod(mload(0x4240), mload(0x740), f_q)) +mstore(0x4280, mulmod(mload(0x4260), mload(0x41e0), f_q)) +mstore(0x42a0, mulmod(mload(0x4280), mload(0x18e0), f_q)) +mstore(0x42c0, addmod(mload(0x4160), sub(f_q, mload(0x42a0)), f_q)) +mstore(0x42e0, mulmod(mload(0x42c0), mload(0x3560), f_q)) +mstore(0x4300, addmod(mload(0x4060), mload(0x42e0), f_q)) +mstore(0x4320, mulmod(mload(0xb60), mload(0x4300), f_q)) +mstore(0x4340, mulmod(mload(0x1640), mload(0x6e0), f_q)) +mstore(0x4360, addmod(mload(0x1140), mload(0x4340), f_q)) +mstore(0x4380, addmod(mload(0x4360), mload(0x740), f_q)) +mstore(0x43a0, mulmod(mload(0x1660), mload(0x6e0), f_q)) +mstore(0x43c0, addmod(mload(0x11c0), mload(0x43a0), f_q)) +mstore(0x43e0, addmod(mload(0x43c0), mload(0x740), f_q)) +mstore(0x4400, mulmod(mload(0x43e0), mload(0x4380), f_q)) +mstore(0x4420, mulmod(mload(0x4400), mload(0x1960), f_q)) +mstore(0x4440, mulmod(15845651941796975697993789271154426079663327509658641548785793587449119139335, mload(0x6e0), f_q)) +mstore(0x4460, mulmod(mload(0xc80), mload(0x4440), f_q)) +mstore(0x4480, addmod(mload(0x1140), mload(0x4460), f_q)) +mstore(0x44a0, addmod(mload(0x4480), mload(0x740), f_q)) +mstore(0x44c0, mulmod(8045145839887181143520022567602912517500076612542816225981084745629998235872, mload(0x6e0), f_q)) +mstore(0x44e0, mulmod(mload(0xc80), mload(0x44c0), f_q)) +mstore(0x4500, addmod(mload(0x11c0), mload(0x44e0), f_q)) +mstore(0x4520, addmod(mload(0x4500), mload(0x740), f_q)) +mstore(0x4540, mulmod(mload(0x4520), mload(0x44a0), f_q)) +mstore(0x4560, mulmod(mload(0x4540), mload(0x1940), f_q)) +mstore(0x4580, addmod(mload(0x4420), sub(f_q, mload(0x4560)), f_q)) +mstore(0x45a0, mulmod(mload(0x4580), mload(0x3560), f_q)) +mstore(0x45c0, addmod(mload(0x4320), mload(0x45a0), f_q)) +mstore(0x45e0, mulmod(mload(0xb60), mload(0x45c0), f_q)) +mstore(0x4600, mulmod(mload(0x1680), mload(0x6e0), f_q)) +mstore(0x4620, addmod(mload(0x1240), mload(0x4600), f_q)) +mstore(0x4640, addmod(mload(0x4620), mload(0x740), f_q)) +mstore(0x4660, mulmod(mload(0x16a0), mload(0x6e0), f_q)) +mstore(0x4680, addmod(mload(0x1260), mload(0x4660), f_q)) +mstore(0x46a0, addmod(mload(0x4680), mload(0x740), f_q)) +mstore(0x46c0, mulmod(mload(0x46a0), mload(0x4640), f_q)) +mstore(0x46e0, mulmod(mload(0x46c0), mload(0x19c0), f_q)) +mstore(0x4700, mulmod(2381670505483685611182091218417223919364072893694444758025506701602682587318, mload(0x6e0), f_q)) +mstore(0x4720, mulmod(mload(0xc80), mload(0x4700), f_q)) +mstore(0x4740, addmod(mload(0x1240), mload(0x4720), f_q)) +mstore(0x4760, addmod(mload(0x4740), mload(0x740), f_q)) +mstore(0x4780, mulmod(7687930163830757070113631199804839025806810462573557873219800755854393200610, mload(0x6e0), f_q)) +mstore(0x47a0, mulmod(mload(0xc80), mload(0x4780), f_q)) +mstore(0x47c0, addmod(mload(0x1260), mload(0x47a0), f_q)) +mstore(0x47e0, addmod(mload(0x47c0), mload(0x740), f_q)) +mstore(0x4800, mulmod(mload(0x47e0), mload(0x4760), f_q)) +mstore(0x4820, mulmod(mload(0x4800), mload(0x19a0), f_q)) +mstore(0x4840, addmod(mload(0x46e0), sub(f_q, mload(0x4820)), f_q)) +mstore(0x4860, mulmod(mload(0x4840), mload(0x3560), f_q)) +mstore(0x4880, addmod(mload(0x45e0), mload(0x4860), f_q)) +mstore(0x48a0, mulmod(mload(0xb60), mload(0x4880), f_q)) +mstore(0x48c0, mulmod(mload(0x16c0), mload(0x6e0), f_q)) +mstore(0x48e0, addmod(mload(0x1280), mload(0x48c0), f_q)) +mstore(0x4900, addmod(mload(0x48e0), mload(0x740), f_q)) +mstore(0x4920, mulmod(mload(0x16e0), mload(0x6e0), f_q)) +mstore(0x4940, addmod(mload(0x12a0), mload(0x4920), f_q)) +mstore(0x4960, addmod(mload(0x4940), mload(0x740), f_q)) +mstore(0x4980, mulmod(mload(0x4960), mload(0x4900), f_q)) +mstore(0x49a0, mulmod(mload(0x4980), mload(0x1a20), f_q)) +mstore(0x49c0, mulmod(18841374007583180662637314443453732245933177918185782718371124070078050062475, mload(0x6e0), f_q)) +mstore(0x49e0, mulmod(mload(0xc80), mload(0x49c0), f_q)) +mstore(0x4a00, addmod(mload(0x1280), mload(0x49e0), f_q)) +mstore(0x4a20, addmod(mload(0x4a00), mload(0x740), f_q)) +mstore(0x4a40, mulmod(19197752132381552471349846071531569266256022960372343424487157777415058628365, mload(0x6e0), f_q)) +mstore(0x4a60, mulmod(mload(0xc80), mload(0x4a40), f_q)) +mstore(0x4a80, addmod(mload(0x12a0), mload(0x4a60), f_q)) +mstore(0x4aa0, addmod(mload(0x4a80), mload(0x740), f_q)) +mstore(0x4ac0, mulmod(mload(0x4aa0), mload(0x4a20), f_q)) +mstore(0x4ae0, mulmod(mload(0x4ac0), mload(0x1a00), f_q)) +mstore(0x4b00, addmod(mload(0x49a0), sub(f_q, mload(0x4ae0)), f_q)) +mstore(0x4b20, mulmod(mload(0x4b00), mload(0x3560), f_q)) +mstore(0x4b40, addmod(mload(0x48a0), mload(0x4b20), f_q)) +mstore(0x4b60, mulmod(mload(0xb60), mload(0x4b40), f_q)) +mstore(0x4b80, mulmod(mload(0x1700), mload(0x6e0), f_q)) +mstore(0x4ba0, addmod(mload(0x12c0), mload(0x4b80), f_q)) +mstore(0x4bc0, addmod(mload(0x4ba0), mload(0x740), f_q)) +mstore(0x4be0, mulmod(mload(0x1720), mload(0x6e0), f_q)) +mstore(0x4c00, addmod(mload(0x12e0), mload(0x4be0), f_q)) +mstore(0x4c20, addmod(mload(0x4c00), mload(0x740), f_q)) +mstore(0x4c40, mulmod(mload(0x4c20), mload(0x4bc0), f_q)) +mstore(0x4c60, mulmod(mload(0x4c40), mload(0x1a80), f_q)) +mstore(0x4c80, mulmod(4107547195958811607586128047858595978395981384383810616480821684720783343476, mload(0x6e0), f_q)) +mstore(0x4ca0, mulmod(mload(0xc80), mload(0x4c80), f_q)) +mstore(0x4cc0, addmod(mload(0x12c0), mload(0x4ca0), f_q)) +mstore(0x4ce0, addmod(mload(0x4cc0), mload(0x740), f_q)) +mstore(0x4d00, mulmod(13564642984573314542683510780499048133657656300857957395232929436066953511694, mload(0x6e0), f_q)) +mstore(0x4d20, mulmod(mload(0xc80), mload(0x4d00), f_q)) +mstore(0x4d40, addmod(mload(0x12e0), mload(0x4d20), f_q)) +mstore(0x4d60, addmod(mload(0x4d40), mload(0x740), f_q)) +mstore(0x4d80, mulmod(mload(0x4d60), mload(0x4ce0), f_q)) +mstore(0x4da0, mulmod(mload(0x4d80), mload(0x1a60), f_q)) +mstore(0x4dc0, addmod(mload(0x4c60), sub(f_q, mload(0x4da0)), f_q)) +mstore(0x4de0, mulmod(mload(0x4dc0), mload(0x3560), f_q)) +mstore(0x4e00, addmod(mload(0x4b60), mload(0x4de0), f_q)) +mstore(0x4e20, mulmod(mload(0xb60), mload(0x4e00), f_q)) +mstore(0x4e40, mulmod(mload(0x1740), mload(0x6e0), f_q)) +mstore(0x4e60, addmod(0, mload(0x4e40), f_q)) +mstore(0x4e80, addmod(mload(0x4e60), mload(0x740), f_q)) +mstore(0x4ea0, mulmod(mload(0x4e80), mload(0x1ae0), f_q)) +mstore(0x4ec0, mulmod(13613576618463984615987010477140414706703336142901358713038085451220811690793, mload(0x6e0), f_q)) +mstore(0x4ee0, mulmod(mload(0xc80), mload(0x4ec0), f_q)) +mstore(0x4f00, addmod(0, mload(0x4ee0), f_q)) +mstore(0x4f20, addmod(mload(0x4f00), mload(0x740), f_q)) +mstore(0x4f40, mulmod(mload(0x4f20), mload(0x1ac0), f_q)) +mstore(0x4f60, addmod(mload(0x4ea0), sub(f_q, mload(0x4f40)), f_q)) +mstore(0x4f80, mulmod(mload(0x4f60), mload(0x3560), f_q)) +mstore(0x4fa0, addmod(mload(0x4e20), mload(0x4f80), f_q)) +mstore(0x4fc0, mulmod(mload(0xb60), mload(0x4fa0), f_q)) +mstore(0x4fe0, addmod(1, sub(f_q, mload(0x1b00)), f_q)) +mstore(0x5000, mulmod(mload(0x4fe0), mload(0x26c0), f_q)) +mstore(0x5020, addmod(mload(0x4fc0), mload(0x5000), f_q)) +mstore(0x5040, mulmod(mload(0xb60), mload(0x5020), f_q)) +mstore(0x5060, mulmod(mload(0x1b00), mload(0x1b00), f_q)) +mstore(0x5080, addmod(mload(0x5060), sub(f_q, mload(0x1b00)), f_q)) +mstore(0x50a0, mulmod(mload(0x5080), mload(0x25e0), f_q)) +mstore(0x50c0, addmod(mload(0x5040), mload(0x50a0), f_q)) +mstore(0x50e0, mulmod(mload(0xb60), mload(0x50c0), f_q)) +mstore(0x5100, addmod(mload(0x1b40), mload(0x6e0), f_q)) +mstore(0x5120, mulmod(mload(0x5100), mload(0x1b20), f_q)) +mstore(0x5140, addmod(mload(0x1b80), mload(0x740), f_q)) +mstore(0x5160, mulmod(mload(0x5140), mload(0x5120), f_q)) +mstore(0x5180, addmod(mload(0x1240), mload(0x6e0), f_q)) +mstore(0x51a0, mulmod(mload(0x5180), mload(0x1b00), f_q)) +mstore(0x51c0, addmod(mload(0x1320), mload(0x740), f_q)) +mstore(0x51e0, mulmod(mload(0x51c0), mload(0x51a0), f_q)) +mstore(0x5200, addmod(mload(0x5160), sub(f_q, mload(0x51e0)), f_q)) +mstore(0x5220, mulmod(mload(0x5200), mload(0x3560), f_q)) +mstore(0x5240, addmod(mload(0x50e0), mload(0x5220), f_q)) +mstore(0x5260, mulmod(mload(0xb60), mload(0x5240), f_q)) +mstore(0x5280, addmod(mload(0x1b40), sub(f_q, mload(0x1b80)), f_q)) +mstore(0x52a0, mulmod(mload(0x5280), mload(0x26c0), f_q)) +mstore(0x52c0, addmod(mload(0x5260), mload(0x52a0), f_q)) +mstore(0x52e0, mulmod(mload(0xb60), mload(0x52c0), f_q)) +mstore(0x5300, mulmod(mload(0x5280), mload(0x3560), f_q)) +mstore(0x5320, addmod(mload(0x1b40), sub(f_q, mload(0x1b60)), f_q)) +mstore(0x5340, mulmod(mload(0x5320), mload(0x5300), f_q)) +mstore(0x5360, addmod(mload(0x52e0), mload(0x5340), f_q)) +mstore(0x5380, mulmod(mload(0xb60), mload(0x5360), f_q)) +mstore(0x53a0, addmod(1, sub(f_q, mload(0x1ba0)), f_q)) +mstore(0x53c0, mulmod(mload(0x53a0), mload(0x26c0), f_q)) +mstore(0x53e0, addmod(mload(0x5380), mload(0x53c0), f_q)) +mstore(0x5400, mulmod(mload(0xb60), mload(0x53e0), f_q)) +mstore(0x5420, mulmod(mload(0x1ba0), mload(0x1ba0), f_q)) +mstore(0x5440, addmod(mload(0x5420), sub(f_q, mload(0x1ba0)), f_q)) +mstore(0x5460, mulmod(mload(0x5440), mload(0x25e0), f_q)) +mstore(0x5480, addmod(mload(0x5400), mload(0x5460), f_q)) +mstore(0x54a0, mulmod(mload(0xb60), mload(0x5480), f_q)) +mstore(0x54c0, addmod(mload(0x1be0), mload(0x6e0), f_q)) +mstore(0x54e0, mulmod(mload(0x54c0), mload(0x1bc0), f_q)) +mstore(0x5500, addmod(mload(0x1c20), mload(0x740), f_q)) +mstore(0x5520, mulmod(mload(0x5500), mload(0x54e0), f_q)) +mstore(0x5540, addmod(mload(0x1260), mload(0x6e0), f_q)) +mstore(0x5560, mulmod(mload(0x5540), mload(0x1ba0), f_q)) +mstore(0x5580, mulmod(mload(0x51c0), mload(0x5560), f_q)) +mstore(0x55a0, addmod(mload(0x5520), sub(f_q, mload(0x5580)), f_q)) +mstore(0x55c0, mulmod(mload(0x55a0), mload(0x3560), f_q)) +mstore(0x55e0, addmod(mload(0x54a0), mload(0x55c0), f_q)) +mstore(0x5600, mulmod(mload(0xb60), mload(0x55e0), f_q)) +mstore(0x5620, addmod(mload(0x1be0), sub(f_q, mload(0x1c20)), f_q)) +mstore(0x5640, mulmod(mload(0x5620), mload(0x26c0), f_q)) +mstore(0x5660, addmod(mload(0x5600), mload(0x5640), f_q)) +mstore(0x5680, mulmod(mload(0xb60), mload(0x5660), f_q)) +mstore(0x56a0, mulmod(mload(0x5620), mload(0x3560), f_q)) +mstore(0x56c0, addmod(mload(0x1be0), sub(f_q, mload(0x1c00)), f_q)) +mstore(0x56e0, mulmod(mload(0x56c0), mload(0x56a0), f_q)) +mstore(0x5700, addmod(mload(0x5680), mload(0x56e0), f_q)) +mstore(0x5720, mulmod(mload(0xb60), mload(0x5700), f_q)) +mstore(0x5740, addmod(1, sub(f_q, mload(0x1c40)), f_q)) +mstore(0x5760, mulmod(mload(0x5740), mload(0x26c0), f_q)) +mstore(0x5780, addmod(mload(0x5720), mload(0x5760), f_q)) +mstore(0x57a0, mulmod(mload(0xb60), mload(0x5780), f_q)) +mstore(0x57c0, mulmod(mload(0x1c40), mload(0x1c40), f_q)) +mstore(0x57e0, addmod(mload(0x57c0), sub(f_q, mload(0x1c40)), f_q)) +mstore(0x5800, mulmod(mload(0x57e0), mload(0x25e0), f_q)) +mstore(0x5820, addmod(mload(0x57a0), mload(0x5800), f_q)) +mstore(0x5840, mulmod(mload(0xb60), mload(0x5820), f_q)) +mstore(0x5860, addmod(mload(0x1c80), mload(0x6e0), f_q)) +mstore(0x5880, mulmod(mload(0x5860), mload(0x1c60), f_q)) +mstore(0x58a0, addmod(mload(0x1cc0), mload(0x740), f_q)) +mstore(0x58c0, mulmod(mload(0x58a0), mload(0x5880), f_q)) +mstore(0x58e0, mulmod(mload(0x480), mload(0x1280), f_q)) +mstore(0x5900, addmod(mload(0x58e0), mload(0x12c0), f_q)) +mstore(0x5920, addmod(mload(0x5900), mload(0x6e0), f_q)) +mstore(0x5940, mulmod(mload(0x5920), mload(0x1c40), f_q)) +mstore(0x5960, mulmod(mload(0x480), mload(0x1340), f_q)) +mstore(0x5980, addmod(mload(0x5960), mload(0x1360), f_q)) +mstore(0x59a0, addmod(mload(0x5980), mload(0x740), f_q)) +mstore(0x59c0, mulmod(mload(0x59a0), mload(0x5940), f_q)) +mstore(0x59e0, addmod(mload(0x58c0), sub(f_q, mload(0x59c0)), f_q)) +mstore(0x5a00, mulmod(mload(0x59e0), mload(0x3560), f_q)) +mstore(0x5a20, addmod(mload(0x5840), mload(0x5a00), f_q)) +mstore(0x5a40, mulmod(mload(0xb60), mload(0x5a20), f_q)) +mstore(0x5a60, addmod(mload(0x1c80), sub(f_q, mload(0x1cc0)), f_q)) +mstore(0x5a80, mulmod(mload(0x5a60), mload(0x26c0), f_q)) +mstore(0x5aa0, addmod(mload(0x5a40), mload(0x5a80), f_q)) +mstore(0x5ac0, mulmod(mload(0xb60), mload(0x5aa0), f_q)) +mstore(0x5ae0, mulmod(mload(0x5a60), mload(0x3560), f_q)) +mstore(0x5b00, addmod(mload(0x1c80), sub(f_q, mload(0x1ca0)), f_q)) +mstore(0x5b20, mulmod(mload(0x5b00), mload(0x5ae0), f_q)) +mstore(0x5b40, addmod(mload(0x5ac0), mload(0x5b20), f_q)) +mstore(0x5b60, mulmod(mload(0xb60), mload(0x5b40), f_q)) +mstore(0x5b80, addmod(1, sub(f_q, mload(0x1ce0)), f_q)) +mstore(0x5ba0, mulmod(mload(0x5b80), mload(0x26c0), f_q)) +mstore(0x5bc0, addmod(mload(0x5b60), mload(0x5ba0), f_q)) +mstore(0x5be0, mulmod(mload(0xb60), mload(0x5bc0), f_q)) +mstore(0x5c00, mulmod(mload(0x1ce0), mload(0x1ce0), f_q)) +mstore(0x5c20, addmod(mload(0x5c00), sub(f_q, mload(0x1ce0)), f_q)) +mstore(0x5c40, mulmod(mload(0x5c20), mload(0x25e0), f_q)) +mstore(0x5c60, addmod(mload(0x5be0), mload(0x5c40), f_q)) +mstore(0x5c80, mulmod(mload(0xb60), mload(0x5c60), f_q)) +mstore(0x5ca0, addmod(mload(0x1d20), mload(0x6e0), f_q)) +mstore(0x5cc0, mulmod(mload(0x5ca0), mload(0x1d00), f_q)) +mstore(0x5ce0, addmod(mload(0x1d60), mload(0x740), f_q)) +mstore(0x5d00, mulmod(mload(0x5ce0), mload(0x5cc0), f_q)) +mstore(0x5d20, mulmod(mload(0x480), mload(0x12a0), f_q)) +mstore(0x5d40, addmod(mload(0x5d20), mload(0x12e0), f_q)) +mstore(0x5d60, addmod(mload(0x5d40), mload(0x6e0), f_q)) +mstore(0x5d80, mulmod(mload(0x5d60), mload(0x1ce0), f_q)) +mstore(0x5da0, mulmod(mload(0x59a0), mload(0x5d80), f_q)) +mstore(0x5dc0, addmod(mload(0x5d00), sub(f_q, mload(0x5da0)), f_q)) +mstore(0x5de0, mulmod(mload(0x5dc0), mload(0x3560), f_q)) +mstore(0x5e00, addmod(mload(0x5c80), mload(0x5de0), f_q)) +mstore(0x5e20, mulmod(mload(0xb60), mload(0x5e00), f_q)) +mstore(0x5e40, addmod(mload(0x1d20), sub(f_q, mload(0x1d60)), f_q)) +mstore(0x5e60, mulmod(mload(0x5e40), mload(0x26c0), f_q)) +mstore(0x5e80, addmod(mload(0x5e20), mload(0x5e60), f_q)) +mstore(0x5ea0, mulmod(mload(0xb60), mload(0x5e80), f_q)) +mstore(0x5ec0, mulmod(mload(0x5e40), mload(0x3560), f_q)) +mstore(0x5ee0, addmod(mload(0x1d20), sub(f_q, mload(0x1d40)), f_q)) +mstore(0x5f00, mulmod(mload(0x5ee0), mload(0x5ec0), f_q)) +mstore(0x5f20, addmod(mload(0x5ea0), mload(0x5f00), f_q)) +mstore(0x5f40, mulmod(mload(0x21a0), mload(0x21a0), f_q)) +mstore(0x5f60, mulmod(mload(0x5f40), mload(0x21a0), f_q)) +mstore(0x5f80, mulmod(1, mload(0x21a0), f_q)) +mstore(0x5fa0, mulmod(1, mload(0x5f40), f_q)) +mstore(0x5fc0, mulmod(mload(0x5f20), mload(0x21c0), f_q)) +mstore(0x5fe0, mulmod(mload(0x1f20), mload(0xc80), f_q)) +mstore(0x6000, mulmod(mload(0x5fe0), mload(0xc80), f_q)) +mstore(0x6020, mulmod(mload(0xc80), 1, f_q)) +mstore(0x6040, addmod(mload(0x1ea0), sub(f_q, mload(0x6020)), f_q)) +mstore(0x6060, mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) +mstore(0x6080, addmod(mload(0x1ea0), sub(f_q, mload(0x6060)), f_q)) +mstore(0x60a0, mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) +mstore(0x60c0, addmod(mload(0x1ea0), sub(f_q, mload(0x60a0)), f_q)) +mstore(0x60e0, mulmod(mload(0xc80), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) +mstore(0x6100, addmod(mload(0x1ea0), sub(f_q, mload(0x60e0)), f_q)) +mstore(0x6120, mulmod(mload(0xc80), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) +mstore(0x6140, addmod(mload(0x1ea0), sub(f_q, mload(0x6120)), f_q)) +mstore(0x6160, mulmod(mload(0xc80), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) +mstore(0x6180, addmod(mload(0x1ea0), sub(f_q, mload(0x6160)), f_q)) +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 12142985201493934370659158242092015678465417407805993602870272259656026591649, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 9745257670345340851587247503165259410082946992610040740827931926919781903968, f_q), f_q), result, f_q) +mstore(24992, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 12858672892267984631233883117647866851148059157064290846881981435700301865966, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q), result, f_q) +mstore(25024, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 11271371393372049418391749801370907147092722420906347516206630933275258056927, f_q), f_q), result, f_q) +mstore(25056, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 17575202995145968412995467587554373308969396527144859871466654432792864477050, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 13507346808256882665261837699919635602236930155453310622146452670066717241788, f_q), f_q), result, f_q) +mstore(25088, result) + } +mstore(0x6220, mulmod(1, mload(0x6040), f_q)) +mstore(0x6240, mulmod(mload(0x6220), mload(0x6080), f_q)) +mstore(0x6260, mulmod(mload(0x6240), mload(0x6140), f_q)) +mstore(0x6280, mulmod(mload(0x6260), mload(0x6100), f_q)) +{ + let result := mulmod(mload(0x1ea0), 1, f_q) +result := addmod(mulmod(mload(0xc80), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) +mstore(25248, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 21869340487638379139105209872801492456082780734504032269410146788560475001942, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 18902384200896083141195872455782632465583665912002074288057398015333493675, f_q), f_q), result, f_q) +mstore(25280, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 16199055355995875908874098831560099797649990976433931925532505422809603664814, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 8947971868341681741891709615862399935097131087938461120792105052975383179198, f_q), f_q), result, f_q) +mstore(25312, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 4865187280763976036134135047793386535665014353502380106898040096680231678680, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 11630478684739875729628806875878858148067322406415298287941825707875102831079, f_q), f_q), result, f_q) +mstore(25344, result) + } +mstore(0x6320, mulmod(mload(0x6240), mload(0x6180), f_q)) +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 20461838439117790833741043996939313553025008529160428886800406442142042007111, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q), result, f_q) +mstore(25408, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 4281685467322811008008141037834996387840601218638499035555958417347771835972, f_q), f_q), result, f_q) +mstore(25440, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 19102728315457599142069468034376470979900453007937332237837518576196438670602, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q), result, f_q) +mstore(25472, result) + } +{ + let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q) +result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 9270931013673651674008731376102018500640720878815062573686140036337408185754, f_q), f_q), result, f_q) +mstore(25504, result) + } +mstore(0x63c0, mulmod(mload(0x6220), mload(0x60c0), f_q)) +{ + let prod := mload(0x61a0) + + prod := mulmod(mload(0x61c0), prod, f_q) + mstore(0x63e0, prod) + + prod := mulmod(mload(0x61e0), prod, f_q) + mstore(0x6400, prod) + + prod := mulmod(mload(0x6200), prod, f_q) + mstore(0x6420, prod) + + prod := mulmod(mload(0x62a0), prod, f_q) + mstore(0x6440, prod) + + prod := mulmod(mload(0x6220), prod, f_q) + mstore(0x6460, prod) + + prod := mulmod(mload(0x62c0), prod, f_q) + mstore(0x6480, prod) + + prod := mulmod(mload(0x62e0), prod, f_q) + mstore(0x64a0, prod) + + prod := mulmod(mload(0x6300), prod, f_q) + mstore(0x64c0, prod) + + prod := mulmod(mload(0x6320), prod, f_q) + mstore(0x64e0, prod) + + prod := mulmod(mload(0x6340), prod, f_q) + mstore(0x6500, prod) + + prod := mulmod(mload(0x6360), prod, f_q) + mstore(0x6520, prod) + + prod := mulmod(mload(0x6240), prod, f_q) + mstore(0x6540, prod) + + prod := mulmod(mload(0x6380), prod, f_q) + mstore(0x6560, prod) + + prod := mulmod(mload(0x63a0), prod, f_q) + mstore(0x6580, prod) + + prod := mulmod(mload(0x63c0), prod, f_q) + mstore(0x65a0, prod) + + } +mstore(0x65e0, 32) +mstore(0x6600, 32) +mstore(0x6620, 32) +mstore(0x6640, mload(0x65a0)) +mstore(0x6660, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x6680, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x65e0, 0xc0, 0x65c0, 0x20), 1), success) +{ + + let inv := mload(0x65c0) + let v + + v := mload(0x63c0) + mstore(25536, mulmod(mload(0x6580), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x63a0) + mstore(25504, mulmod(mload(0x6560), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6380) + mstore(25472, mulmod(mload(0x6540), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6240) + mstore(25152, mulmod(mload(0x6520), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6360) + mstore(25440, mulmod(mload(0x6500), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6340) + mstore(25408, mulmod(mload(0x64e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6320) + mstore(25376, mulmod(mload(0x64c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6300) + mstore(25344, mulmod(mload(0x64a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x62e0) + mstore(25312, mulmod(mload(0x6480), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x62c0) + mstore(25280, mulmod(mload(0x6460), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6220) + mstore(25120, mulmod(mload(0x6440), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x62a0) + mstore(25248, mulmod(mload(0x6420), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6200) + mstore(25088, mulmod(mload(0x6400), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x61e0) + mstore(25056, mulmod(mload(0x63e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x61c0) + mstore(25024, mulmod(mload(0x61a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x61a0, inv) + + } +{ + let result := mload(0x61a0) +result := addmod(mload(0x61c0), result, f_q) +result := addmod(mload(0x61e0), result, f_q) +result := addmod(mload(0x6200), result, f_q) +mstore(26272, result) + } +mstore(0x66c0, mulmod(mload(0x6280), mload(0x6220), f_q)) +{ + let result := mload(0x62a0) +mstore(26336, result) + } +mstore(0x6700, mulmod(mload(0x6280), mload(0x6320), f_q)) +{ + let result := mload(0x62c0) +result := addmod(mload(0x62e0), result, f_q) +result := addmod(mload(0x6300), result, f_q) +mstore(26400, result) + } +mstore(0x6740, mulmod(mload(0x6280), mload(0x6240), f_q)) +{ + let result := mload(0x6340) +result := addmod(mload(0x6360), result, f_q) +mstore(26464, result) + } +mstore(0x6780, mulmod(mload(0x6280), mload(0x63c0), f_q)) +{ + let result := mload(0x6380) +result := addmod(mload(0x63a0), result, f_q) +mstore(26528, result) + } +{ + let prod := mload(0x66a0) + + prod := mulmod(mload(0x66e0), prod, f_q) + mstore(0x67c0, prod) + + prod := mulmod(mload(0x6720), prod, f_q) + mstore(0x67e0, prod) + + prod := mulmod(mload(0x6760), prod, f_q) + mstore(0x6800, prod) + + prod := mulmod(mload(0x67a0), prod, f_q) + mstore(0x6820, prod) + + } +mstore(0x6860, 32) +mstore(0x6880, 32) +mstore(0x68a0, 32) +mstore(0x68c0, mload(0x6820)) +mstore(0x68e0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x6900, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x6860, 0xc0, 0x6840, 0x20), 1), success) +{ + + let inv := mload(0x6840) + let v + + v := mload(0x67a0) + mstore(26528, mulmod(mload(0x6800), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6760) + mstore(26464, mulmod(mload(0x67e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x6720) + mstore(26400, mulmod(mload(0x67c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x66e0) + mstore(26336, mulmod(mload(0x66a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x66a0, inv) + + } +mstore(0x6920, mulmod(mload(0x66c0), mload(0x66e0), f_q)) +mstore(0x6940, mulmod(mload(0x6700), mload(0x6720), f_q)) +mstore(0x6960, mulmod(mload(0x6740), mload(0x6760), f_q)) +mstore(0x6980, mulmod(mload(0x6780), mload(0x67a0), f_q)) +mstore(0x69a0, mulmod(mload(0x1da0), mload(0x1da0), f_q)) +mstore(0x69c0, mulmod(mload(0x69a0), mload(0x1da0), f_q)) +mstore(0x69e0, mulmod(mload(0x69c0), mload(0x1da0), f_q)) +mstore(0x6a00, mulmod(mload(0x69e0), mload(0x1da0), f_q)) +mstore(0x6a20, mulmod(mload(0x6a00), mload(0x1da0), f_q)) +mstore(0x6a40, mulmod(mload(0x6a20), mload(0x1da0), f_q)) +mstore(0x6a60, mulmod(mload(0x6a40), mload(0x1da0), f_q)) +mstore(0x6a80, mulmod(mload(0x6a60), mload(0x1da0), f_q)) +mstore(0x6aa0, mulmod(mload(0x6a80), mload(0x1da0), f_q)) +mstore(0x6ac0, mulmod(mload(0x6aa0), mload(0x1da0), f_q)) +mstore(0x6ae0, mulmod(mload(0x6ac0), mload(0x1da0), f_q)) +mstore(0x6b00, mulmod(mload(0x6ae0), mload(0x1da0), f_q)) +mstore(0x6b20, mulmod(mload(0x6b00), mload(0x1da0), f_q)) +mstore(0x6b40, mulmod(mload(0x6b20), mload(0x1da0), f_q)) +mstore(0x6b60, mulmod(mload(0x6b40), mload(0x1da0), f_q)) +mstore(0x6b80, mulmod(mload(0x6b60), mload(0x1da0), f_q)) +mstore(0x6ba0, mulmod(mload(0x6b80), mload(0x1da0), f_q)) +mstore(0x6bc0, mulmod(mload(0x6ba0), mload(0x1da0), f_q)) +mstore(0x6be0, mulmod(mload(0x6bc0), mload(0x1da0), f_q)) +mstore(0x6c00, mulmod(mload(0x6be0), mload(0x1da0), f_q)) +mstore(0x6c20, mulmod(mload(0x6c00), mload(0x1da0), f_q)) +mstore(0x6c40, mulmod(mload(0x6c20), mload(0x1da0), f_q)) +mstore(0x6c60, mulmod(mload(0x6c40), mload(0x1da0), f_q)) +mstore(0x6c80, mulmod(mload(0x6c60), mload(0x1da0), f_q)) +mstore(0x6ca0, mulmod(mload(0x6c80), mload(0x1da0), f_q)) +mstore(0x6cc0, mulmod(mload(0x6ca0), mload(0x1da0), f_q)) +mstore(0x6ce0, mulmod(mload(0x6cc0), mload(0x1da0), f_q)) +mstore(0x6d00, mulmod(mload(0x6ce0), mload(0x1da0), f_q)) +mstore(0x6d20, mulmod(mload(0x6d00), mload(0x1da0), f_q)) +mstore(0x6d40, mulmod(mload(0x6d20), mload(0x1da0), f_q)) +mstore(0x6d60, mulmod(mload(0x6d40), mload(0x1da0), f_q)) +mstore(0x6d80, mulmod(mload(0x6d60), mload(0x1da0), f_q)) +mstore(0x6da0, mulmod(mload(0x6d80), mload(0x1da0), f_q)) +mstore(0x6dc0, mulmod(mload(0x6da0), mload(0x1da0), f_q)) +mstore(0x6de0, mulmod(mload(0x6dc0), mload(0x1da0), f_q)) +mstore(0x6e00, mulmod(mload(0x6de0), mload(0x1da0), f_q)) +mstore(0x6e20, mulmod(mload(0x6e00), mload(0x1da0), f_q)) +mstore(0x6e40, mulmod(mload(0x6e20), mload(0x1da0), f_q)) +mstore(0x6e60, mulmod(mload(0x6e40), mload(0x1da0), f_q)) +mstore(0x6e80, mulmod(mload(0x6e60), mload(0x1da0), f_q)) +mstore(0x6ea0, mulmod(mload(0x6e80), mload(0x1da0), f_q)) +mstore(0x6ec0, mulmod(mload(0x6ea0), mload(0x1da0), f_q)) +mstore(0x6ee0, mulmod(mload(0x6ec0), mload(0x1da0), f_q)) +mstore(0x6f00, mulmod(mload(0x6ee0), mload(0x1da0), f_q)) +mstore(0x6f20, mulmod(mload(0x6f00), mload(0x1da0), f_q)) +mstore(0x6f40, mulmod(mload(0x1e00), mload(0x1e00), f_q)) +mstore(0x6f60, mulmod(mload(0x6f40), mload(0x1e00), f_q)) +mstore(0x6f80, mulmod(mload(0x6f60), mload(0x1e00), f_q)) +mstore(0x6fa0, mulmod(mload(0x6f80), mload(0x1e00), f_q)) +{ + let result := mulmod(mload(0xcc0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xce0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xd00), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xd20), mload(0x6200), f_q), result, f_q) +mstore(28608, result) + } +mstore(0x6fe0, mulmod(mload(0x6fc0), mload(0x66a0), f_q)) +mstore(0x7000, mulmod(sub(f_q, mload(0x6fe0)), 1, f_q)) +{ + let result := mulmod(mload(0xd40), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xd60), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xd80), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xda0), mload(0x6200), f_q), result, f_q) +mstore(28704, result) + } +mstore(0x7040, mulmod(mload(0x7020), mload(0x66a0), f_q)) +mstore(0x7060, mulmod(sub(f_q, mload(0x7040)), mload(0x1da0), f_q)) +mstore(0x7080, mulmod(1, mload(0x1da0), f_q)) +mstore(0x70a0, addmod(mload(0x7000), mload(0x7060), f_q)) +{ + let result := mulmod(mload(0xdc0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xde0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xe00), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xe20), mload(0x6200), f_q), result, f_q) +mstore(28864, result) + } +mstore(0x70e0, mulmod(mload(0x70c0), mload(0x66a0), f_q)) +mstore(0x7100, mulmod(sub(f_q, mload(0x70e0)), mload(0x69a0), f_q)) +mstore(0x7120, mulmod(1, mload(0x69a0), f_q)) +mstore(0x7140, addmod(mload(0x70a0), mload(0x7100), f_q)) +{ + let result := mulmod(mload(0xe40), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xe60), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xe80), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xea0), mload(0x6200), f_q), result, f_q) +mstore(29024, result) + } +mstore(0x7180, mulmod(mload(0x7160), mload(0x66a0), f_q)) +mstore(0x71a0, mulmod(sub(f_q, mload(0x7180)), mload(0x69c0), f_q)) +mstore(0x71c0, mulmod(1, mload(0x69c0), f_q)) +mstore(0x71e0, addmod(mload(0x7140), mload(0x71a0), f_q)) +{ + let result := mulmod(mload(0xec0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xee0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xf00), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xf20), mload(0x6200), f_q), result, f_q) +mstore(29184, result) + } +mstore(0x7220, mulmod(mload(0x7200), mload(0x66a0), f_q)) +mstore(0x7240, mulmod(sub(f_q, mload(0x7220)), mload(0x69e0), f_q)) +mstore(0x7260, mulmod(1, mload(0x69e0), f_q)) +mstore(0x7280, addmod(mload(0x71e0), mload(0x7240), f_q)) +{ + let result := mulmod(mload(0xf40), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xf60), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0xf80), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0xfa0), mload(0x6200), f_q), result, f_q) +mstore(29344, result) + } +mstore(0x72c0, mulmod(mload(0x72a0), mload(0x66a0), f_q)) +mstore(0x72e0, mulmod(sub(f_q, mload(0x72c0)), mload(0x6a00), f_q)) +mstore(0x7300, mulmod(1, mload(0x6a00), f_q)) +mstore(0x7320, addmod(mload(0x7280), mload(0x72e0), f_q)) +{ + let result := mulmod(mload(0xfc0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0xfe0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1000), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1020), mload(0x6200), f_q), result, f_q) +mstore(29504, result) + } +mstore(0x7360, mulmod(mload(0x7340), mload(0x66a0), f_q)) +mstore(0x7380, mulmod(sub(f_q, mload(0x7360)), mload(0x6a20), f_q)) +mstore(0x73a0, mulmod(1, mload(0x6a20), f_q)) +mstore(0x73c0, addmod(mload(0x7320), mload(0x7380), f_q)) +{ + let result := mulmod(mload(0x1040), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0x1060), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1080), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x10a0), mload(0x6200), f_q), result, f_q) +mstore(29664, result) + } +mstore(0x7400, mulmod(mload(0x73e0), mload(0x66a0), f_q)) +mstore(0x7420, mulmod(sub(f_q, mload(0x7400)), mload(0x6a40), f_q)) +mstore(0x7440, mulmod(1, mload(0x6a40), f_q)) +mstore(0x7460, addmod(mload(0x73c0), mload(0x7420), f_q)) +{ + let result := mulmod(mload(0x10c0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0x10e0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1100), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1120), mload(0x6200), f_q), result, f_q) +mstore(29824, result) + } +mstore(0x74a0, mulmod(mload(0x7480), mload(0x66a0), f_q)) +mstore(0x74c0, mulmod(sub(f_q, mload(0x74a0)), mload(0x6a60), f_q)) +mstore(0x74e0, mulmod(1, mload(0x6a60), f_q)) +mstore(0x7500, addmod(mload(0x7460), mload(0x74c0), f_q)) +{ + let result := mulmod(mload(0x1140), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0x1160), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1180), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x11a0), mload(0x6200), f_q), result, f_q) +mstore(29984, result) + } +mstore(0x7540, mulmod(mload(0x7520), mload(0x66a0), f_q)) +mstore(0x7560, mulmod(sub(f_q, mload(0x7540)), mload(0x6a80), f_q)) +mstore(0x7580, mulmod(1, mload(0x6a80), f_q)) +mstore(0x75a0, addmod(mload(0x7500), mload(0x7560), f_q)) +{ + let result := mulmod(mload(0x11c0), mload(0x61a0), f_q) +result := addmod(mulmod(mload(0x11e0), mload(0x61c0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1200), mload(0x61e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1220), mload(0x6200), f_q), result, f_q) +mstore(30144, result) + } +mstore(0x75e0, mulmod(mload(0x75c0), mload(0x66a0), f_q)) +mstore(0x7600, mulmod(sub(f_q, mload(0x75e0)), mload(0x6aa0), f_q)) +mstore(0x7620, mulmod(1, mload(0x6aa0), f_q)) +mstore(0x7640, addmod(mload(0x75a0), mload(0x7600), f_q)) +mstore(0x7660, mulmod(mload(0x7640), 1, f_q)) +mstore(0x7680, mulmod(mload(0x7080), 1, f_q)) +mstore(0x76a0, mulmod(mload(0x7120), 1, f_q)) +mstore(0x76c0, mulmod(mload(0x71c0), 1, f_q)) +mstore(0x76e0, mulmod(mload(0x7260), 1, f_q)) +mstore(0x7700, mulmod(mload(0x7300), 1, f_q)) +mstore(0x7720, mulmod(mload(0x73a0), 1, f_q)) +mstore(0x7740, mulmod(mload(0x7440), 1, f_q)) +mstore(0x7760, mulmod(mload(0x74e0), 1, f_q)) +mstore(0x7780, mulmod(mload(0x7580), 1, f_q)) +mstore(0x77a0, mulmod(mload(0x7620), 1, f_q)) +mstore(0x77c0, mulmod(1, mload(0x66c0), f_q)) +{ + let result := mulmod(mload(0x1240), mload(0x62a0), f_q) +mstore(30688, result) + } +mstore(0x7800, mulmod(mload(0x77e0), mload(0x6920), f_q)) +mstore(0x7820, mulmod(sub(f_q, mload(0x7800)), 1, f_q)) +mstore(0x7840, mulmod(mload(0x77c0), 1, f_q)) +{ + let result := mulmod(mload(0x1260), mload(0x62a0), f_q) +mstore(30816, result) + } +mstore(0x7880, mulmod(mload(0x7860), mload(0x6920), f_q)) +mstore(0x78a0, mulmod(sub(f_q, mload(0x7880)), mload(0x1da0), f_q)) +mstore(0x78c0, mulmod(mload(0x77c0), mload(0x1da0), f_q)) +mstore(0x78e0, addmod(mload(0x7820), mload(0x78a0), f_q)) +{ + let result := mulmod(mload(0x1280), mload(0x62a0), f_q) +mstore(30976, result) + } +mstore(0x7920, mulmod(mload(0x7900), mload(0x6920), f_q)) +mstore(0x7940, mulmod(sub(f_q, mload(0x7920)), mload(0x69a0), f_q)) +mstore(0x7960, mulmod(mload(0x77c0), mload(0x69a0), f_q)) +mstore(0x7980, addmod(mload(0x78e0), mload(0x7940), f_q)) +{ + let result := mulmod(mload(0x12a0), mload(0x62a0), f_q) +mstore(31136, result) + } +mstore(0x79c0, mulmod(mload(0x79a0), mload(0x6920), f_q)) +mstore(0x79e0, mulmod(sub(f_q, mload(0x79c0)), mload(0x69c0), f_q)) +mstore(0x7a00, mulmod(mload(0x77c0), mload(0x69c0), f_q)) +mstore(0x7a20, addmod(mload(0x7980), mload(0x79e0), f_q)) +{ + let result := mulmod(mload(0x12c0), mload(0x62a0), f_q) +mstore(31296, result) + } +mstore(0x7a60, mulmod(mload(0x7a40), mload(0x6920), f_q)) +mstore(0x7a80, mulmod(sub(f_q, mload(0x7a60)), mload(0x69e0), f_q)) +mstore(0x7aa0, mulmod(mload(0x77c0), mload(0x69e0), f_q)) +mstore(0x7ac0, addmod(mload(0x7a20), mload(0x7a80), f_q)) +{ + let result := mulmod(mload(0x12e0), mload(0x62a0), f_q) +mstore(31456, result) + } +mstore(0x7b00, mulmod(mload(0x7ae0), mload(0x6920), f_q)) +mstore(0x7b20, mulmod(sub(f_q, mload(0x7b00)), mload(0x6a00), f_q)) +mstore(0x7b40, mulmod(mload(0x77c0), mload(0x6a00), f_q)) +mstore(0x7b60, addmod(mload(0x7ac0), mload(0x7b20), f_q)) +{ + let result := mulmod(mload(0x1b80), mload(0x62a0), f_q) +mstore(31616, result) + } +mstore(0x7ba0, mulmod(mload(0x7b80), mload(0x6920), f_q)) +mstore(0x7bc0, mulmod(sub(f_q, mload(0x7ba0)), mload(0x6a20), f_q)) +mstore(0x7be0, mulmod(mload(0x77c0), mload(0x6a20), f_q)) +mstore(0x7c00, addmod(mload(0x7b60), mload(0x7bc0), f_q)) +{ + let result := mulmod(mload(0x1c20), mload(0x62a0), f_q) +mstore(31776, result) + } +mstore(0x7c40, mulmod(mload(0x7c20), mload(0x6920), f_q)) +mstore(0x7c60, mulmod(sub(f_q, mload(0x7c40)), mload(0x6a40), f_q)) +mstore(0x7c80, mulmod(mload(0x77c0), mload(0x6a40), f_q)) +mstore(0x7ca0, addmod(mload(0x7c00), mload(0x7c60), f_q)) +{ + let result := mulmod(mload(0x1cc0), mload(0x62a0), f_q) +mstore(31936, result) + } +mstore(0x7ce0, mulmod(mload(0x7cc0), mload(0x6920), f_q)) +mstore(0x7d00, mulmod(sub(f_q, mload(0x7ce0)), mload(0x6a60), f_q)) +mstore(0x7d20, mulmod(mload(0x77c0), mload(0x6a60), f_q)) +mstore(0x7d40, addmod(mload(0x7ca0), mload(0x7d00), f_q)) +{ + let result := mulmod(mload(0x1d60), mload(0x62a0), f_q) +mstore(32096, result) + } +mstore(0x7d80, mulmod(mload(0x7d60), mload(0x6920), f_q)) +mstore(0x7da0, mulmod(sub(f_q, mload(0x7d80)), mload(0x6a80), f_q)) +mstore(0x7dc0, mulmod(mload(0x77c0), mload(0x6a80), f_q)) +mstore(0x7de0, addmod(mload(0x7d40), mload(0x7da0), f_q)) +{ + let result := mulmod(mload(0x1300), mload(0x62a0), f_q) +mstore(32256, result) + } +mstore(0x7e20, mulmod(mload(0x7e00), mload(0x6920), f_q)) +mstore(0x7e40, mulmod(sub(f_q, mload(0x7e20)), mload(0x6aa0), f_q)) +mstore(0x7e60, mulmod(mload(0x77c0), mload(0x6aa0), f_q)) +mstore(0x7e80, addmod(mload(0x7de0), mload(0x7e40), f_q)) +{ + let result := mulmod(mload(0x1320), mload(0x62a0), f_q) +mstore(32416, result) + } +mstore(0x7ec0, mulmod(mload(0x7ea0), mload(0x6920), f_q)) +mstore(0x7ee0, mulmod(sub(f_q, mload(0x7ec0)), mload(0x6ac0), f_q)) +mstore(0x7f00, mulmod(mload(0x77c0), mload(0x6ac0), f_q)) +mstore(0x7f20, addmod(mload(0x7e80), mload(0x7ee0), f_q)) +{ + let result := mulmod(mload(0x1340), mload(0x62a0), f_q) +mstore(32576, result) + } +mstore(0x7f60, mulmod(mload(0x7f40), mload(0x6920), f_q)) +mstore(0x7f80, mulmod(sub(f_q, mload(0x7f60)), mload(0x6ae0), f_q)) +mstore(0x7fa0, mulmod(mload(0x77c0), mload(0x6ae0), f_q)) +mstore(0x7fc0, addmod(mload(0x7f20), mload(0x7f80), f_q)) +{ + let result := mulmod(mload(0x1360), mload(0x62a0), f_q) +mstore(32736, result) + } +mstore(0x8000, mulmod(mload(0x7fe0), mload(0x6920), f_q)) +mstore(0x8020, mulmod(sub(f_q, mload(0x8000)), mload(0x6b00), f_q)) +mstore(0x8040, mulmod(mload(0x77c0), mload(0x6b00), f_q)) +mstore(0x8060, addmod(mload(0x7fc0), mload(0x8020), f_q)) +{ + let result := mulmod(mload(0x1380), mload(0x62a0), f_q) +mstore(32896, result) + } +mstore(0x80a0, mulmod(mload(0x8080), mload(0x6920), f_q)) +mstore(0x80c0, mulmod(sub(f_q, mload(0x80a0)), mload(0x6b20), f_q)) +mstore(0x80e0, mulmod(mload(0x77c0), mload(0x6b20), f_q)) +mstore(0x8100, addmod(mload(0x8060), mload(0x80c0), f_q)) +{ + let result := mulmod(mload(0x13a0), mload(0x62a0), f_q) +mstore(33056, result) + } +mstore(0x8140, mulmod(mload(0x8120), mload(0x6920), f_q)) +mstore(0x8160, mulmod(sub(f_q, mload(0x8140)), mload(0x6b40), f_q)) +mstore(0x8180, mulmod(mload(0x77c0), mload(0x6b40), f_q)) +mstore(0x81a0, addmod(mload(0x8100), mload(0x8160), f_q)) +{ + let result := mulmod(mload(0x13c0), mload(0x62a0), f_q) +mstore(33216, result) + } +mstore(0x81e0, mulmod(mload(0x81c0), mload(0x6920), f_q)) +mstore(0x8200, mulmod(sub(f_q, mload(0x81e0)), mload(0x6b60), f_q)) +mstore(0x8220, mulmod(mload(0x77c0), mload(0x6b60), f_q)) +mstore(0x8240, addmod(mload(0x81a0), mload(0x8200), f_q)) +{ + let result := mulmod(mload(0x13e0), mload(0x62a0), f_q) +mstore(33376, result) + } +mstore(0x8280, mulmod(mload(0x8260), mload(0x6920), f_q)) +mstore(0x82a0, mulmod(sub(f_q, mload(0x8280)), mload(0x6b80), f_q)) +mstore(0x82c0, mulmod(mload(0x77c0), mload(0x6b80), f_q)) +mstore(0x82e0, addmod(mload(0x8240), mload(0x82a0), f_q)) +{ + let result := mulmod(mload(0x1400), mload(0x62a0), f_q) +mstore(33536, result) + } +mstore(0x8320, mulmod(mload(0x8300), mload(0x6920), f_q)) +mstore(0x8340, mulmod(sub(f_q, mload(0x8320)), mload(0x6ba0), f_q)) +mstore(0x8360, mulmod(mload(0x77c0), mload(0x6ba0), f_q)) +mstore(0x8380, addmod(mload(0x82e0), mload(0x8340), f_q)) +{ + let result := mulmod(mload(0x1420), mload(0x62a0), f_q) +mstore(33696, result) + } +mstore(0x83c0, mulmod(mload(0x83a0), mload(0x6920), f_q)) +mstore(0x83e0, mulmod(sub(f_q, mload(0x83c0)), mload(0x6bc0), f_q)) +mstore(0x8400, mulmod(mload(0x77c0), mload(0x6bc0), f_q)) +mstore(0x8420, addmod(mload(0x8380), mload(0x83e0), f_q)) +{ + let result := mulmod(mload(0x1440), mload(0x62a0), f_q) +mstore(33856, result) + } +mstore(0x8460, mulmod(mload(0x8440), mload(0x6920), f_q)) +mstore(0x8480, mulmod(sub(f_q, mload(0x8460)), mload(0x6be0), f_q)) +mstore(0x84a0, mulmod(mload(0x77c0), mload(0x6be0), f_q)) +mstore(0x84c0, addmod(mload(0x8420), mload(0x8480), f_q)) +{ + let result := mulmod(mload(0x1460), mload(0x62a0), f_q) +mstore(34016, result) + } +mstore(0x8500, mulmod(mload(0x84e0), mload(0x6920), f_q)) +mstore(0x8520, mulmod(sub(f_q, mload(0x8500)), mload(0x6c00), f_q)) +mstore(0x8540, mulmod(mload(0x77c0), mload(0x6c00), f_q)) +mstore(0x8560, addmod(mload(0x84c0), mload(0x8520), f_q)) +{ + let result := mulmod(mload(0x1480), mload(0x62a0), f_q) +mstore(34176, result) + } +mstore(0x85a0, mulmod(mload(0x8580), mload(0x6920), f_q)) +mstore(0x85c0, mulmod(sub(f_q, mload(0x85a0)), mload(0x6c20), f_q)) +mstore(0x85e0, mulmod(mload(0x77c0), mload(0x6c20), f_q)) +mstore(0x8600, addmod(mload(0x8560), mload(0x85c0), f_q)) +{ + let result := mulmod(mload(0x14a0), mload(0x62a0), f_q) +mstore(34336, result) + } +mstore(0x8640, mulmod(mload(0x8620), mload(0x6920), f_q)) +mstore(0x8660, mulmod(sub(f_q, mload(0x8640)), mload(0x6c40), f_q)) +mstore(0x8680, mulmod(mload(0x77c0), mload(0x6c40), f_q)) +mstore(0x86a0, addmod(mload(0x8600), mload(0x8660), f_q)) +{ + let result := mulmod(mload(0x14c0), mload(0x62a0), f_q) +mstore(34496, result) + } +mstore(0x86e0, mulmod(mload(0x86c0), mload(0x6920), f_q)) +mstore(0x8700, mulmod(sub(f_q, mload(0x86e0)), mload(0x6c60), f_q)) +mstore(0x8720, mulmod(mload(0x77c0), mload(0x6c60), f_q)) +mstore(0x8740, addmod(mload(0x86a0), mload(0x8700), f_q)) +{ + let result := mulmod(mload(0x1500), mload(0x62a0), f_q) +mstore(34656, result) + } +mstore(0x8780, mulmod(mload(0x8760), mload(0x6920), f_q)) +mstore(0x87a0, mulmod(sub(f_q, mload(0x8780)), mload(0x6c80), f_q)) +mstore(0x87c0, mulmod(mload(0x77c0), mload(0x6c80), f_q)) +mstore(0x87e0, addmod(mload(0x8740), mload(0x87a0), f_q)) +{ + let result := mulmod(mload(0x1520), mload(0x62a0), f_q) +mstore(34816, result) + } +mstore(0x8820, mulmod(mload(0x8800), mload(0x6920), f_q)) +mstore(0x8840, mulmod(sub(f_q, mload(0x8820)), mload(0x6ca0), f_q)) +mstore(0x8860, mulmod(mload(0x77c0), mload(0x6ca0), f_q)) +mstore(0x8880, addmod(mload(0x87e0), mload(0x8840), f_q)) +{ + let result := mulmod(mload(0x1540), mload(0x62a0), f_q) +mstore(34976, result) + } +mstore(0x88c0, mulmod(mload(0x88a0), mload(0x6920), f_q)) +mstore(0x88e0, mulmod(sub(f_q, mload(0x88c0)), mload(0x6cc0), f_q)) +mstore(0x8900, mulmod(mload(0x77c0), mload(0x6cc0), f_q)) +mstore(0x8920, addmod(mload(0x8880), mload(0x88e0), f_q)) +{ + let result := mulmod(mload(0x1560), mload(0x62a0), f_q) +mstore(35136, result) + } +mstore(0x8960, mulmod(mload(0x8940), mload(0x6920), f_q)) +mstore(0x8980, mulmod(sub(f_q, mload(0x8960)), mload(0x6ce0), f_q)) +mstore(0x89a0, mulmod(mload(0x77c0), mload(0x6ce0), f_q)) +mstore(0x89c0, addmod(mload(0x8920), mload(0x8980), f_q)) +{ + let result := mulmod(mload(0x1580), mload(0x62a0), f_q) +mstore(35296, result) + } +mstore(0x8a00, mulmod(mload(0x89e0), mload(0x6920), f_q)) +mstore(0x8a20, mulmod(sub(f_q, mload(0x8a00)), mload(0x6d00), f_q)) +mstore(0x8a40, mulmod(mload(0x77c0), mload(0x6d00), f_q)) +mstore(0x8a60, addmod(mload(0x89c0), mload(0x8a20), f_q)) +{ + let result := mulmod(mload(0x15a0), mload(0x62a0), f_q) +mstore(35456, result) + } +mstore(0x8aa0, mulmod(mload(0x8a80), mload(0x6920), f_q)) +mstore(0x8ac0, mulmod(sub(f_q, mload(0x8aa0)), mload(0x6d20), f_q)) +mstore(0x8ae0, mulmod(mload(0x77c0), mload(0x6d20), f_q)) +mstore(0x8b00, addmod(mload(0x8a60), mload(0x8ac0), f_q)) +{ + let result := mulmod(mload(0x15c0), mload(0x62a0), f_q) +mstore(35616, result) + } +mstore(0x8b40, mulmod(mload(0x8b20), mload(0x6920), f_q)) +mstore(0x8b60, mulmod(sub(f_q, mload(0x8b40)), mload(0x6d40), f_q)) +mstore(0x8b80, mulmod(mload(0x77c0), mload(0x6d40), f_q)) +mstore(0x8ba0, addmod(mload(0x8b00), mload(0x8b60), f_q)) +{ + let result := mulmod(mload(0x15e0), mload(0x62a0), f_q) +mstore(35776, result) + } +mstore(0x8be0, mulmod(mload(0x8bc0), mload(0x6920), f_q)) +mstore(0x8c00, mulmod(sub(f_q, mload(0x8be0)), mload(0x6d60), f_q)) +mstore(0x8c20, mulmod(mload(0x77c0), mload(0x6d60), f_q)) +mstore(0x8c40, addmod(mload(0x8ba0), mload(0x8c00), f_q)) +{ + let result := mulmod(mload(0x1600), mload(0x62a0), f_q) +mstore(35936, result) + } +mstore(0x8c80, mulmod(mload(0x8c60), mload(0x6920), f_q)) +mstore(0x8ca0, mulmod(sub(f_q, mload(0x8c80)), mload(0x6d80), f_q)) +mstore(0x8cc0, mulmod(mload(0x77c0), mload(0x6d80), f_q)) +mstore(0x8ce0, addmod(mload(0x8c40), mload(0x8ca0), f_q)) +{ + let result := mulmod(mload(0x1620), mload(0x62a0), f_q) +mstore(36096, result) + } +mstore(0x8d20, mulmod(mload(0x8d00), mload(0x6920), f_q)) +mstore(0x8d40, mulmod(sub(f_q, mload(0x8d20)), mload(0x6da0), f_q)) +mstore(0x8d60, mulmod(mload(0x77c0), mload(0x6da0), f_q)) +mstore(0x8d80, addmod(mload(0x8ce0), mload(0x8d40), f_q)) +{ + let result := mulmod(mload(0x1640), mload(0x62a0), f_q) +mstore(36256, result) + } +mstore(0x8dc0, mulmod(mload(0x8da0), mload(0x6920), f_q)) +mstore(0x8de0, mulmod(sub(f_q, mload(0x8dc0)), mload(0x6dc0), f_q)) +mstore(0x8e00, mulmod(mload(0x77c0), mload(0x6dc0), f_q)) +mstore(0x8e20, addmod(mload(0x8d80), mload(0x8de0), f_q)) +{ + let result := mulmod(mload(0x1660), mload(0x62a0), f_q) +mstore(36416, result) + } +mstore(0x8e60, mulmod(mload(0x8e40), mload(0x6920), f_q)) +mstore(0x8e80, mulmod(sub(f_q, mload(0x8e60)), mload(0x6de0), f_q)) +mstore(0x8ea0, mulmod(mload(0x77c0), mload(0x6de0), f_q)) +mstore(0x8ec0, addmod(mload(0x8e20), mload(0x8e80), f_q)) +{ + let result := mulmod(mload(0x1680), mload(0x62a0), f_q) +mstore(36576, result) + } +mstore(0x8f00, mulmod(mload(0x8ee0), mload(0x6920), f_q)) +mstore(0x8f20, mulmod(sub(f_q, mload(0x8f00)), mload(0x6e00), f_q)) +mstore(0x8f40, mulmod(mload(0x77c0), mload(0x6e00), f_q)) +mstore(0x8f60, addmod(mload(0x8ec0), mload(0x8f20), f_q)) +{ + let result := mulmod(mload(0x16a0), mload(0x62a0), f_q) +mstore(36736, result) + } +mstore(0x8fa0, mulmod(mload(0x8f80), mload(0x6920), f_q)) +mstore(0x8fc0, mulmod(sub(f_q, mload(0x8fa0)), mload(0x6e20), f_q)) +mstore(0x8fe0, mulmod(mload(0x77c0), mload(0x6e20), f_q)) +mstore(0x9000, addmod(mload(0x8f60), mload(0x8fc0), f_q)) +{ + let result := mulmod(mload(0x16c0), mload(0x62a0), f_q) +mstore(36896, result) + } +mstore(0x9040, mulmod(mload(0x9020), mload(0x6920), f_q)) +mstore(0x9060, mulmod(sub(f_q, mload(0x9040)), mload(0x6e40), f_q)) +mstore(0x9080, mulmod(mload(0x77c0), mload(0x6e40), f_q)) +mstore(0x90a0, addmod(mload(0x9000), mload(0x9060), f_q)) +{ + let result := mulmod(mload(0x16e0), mload(0x62a0), f_q) +mstore(37056, result) + } +mstore(0x90e0, mulmod(mload(0x90c0), mload(0x6920), f_q)) +mstore(0x9100, mulmod(sub(f_q, mload(0x90e0)), mload(0x6e60), f_q)) +mstore(0x9120, mulmod(mload(0x77c0), mload(0x6e60), f_q)) +mstore(0x9140, addmod(mload(0x90a0), mload(0x9100), f_q)) +{ + let result := mulmod(mload(0x1700), mload(0x62a0), f_q) +mstore(37216, result) + } +mstore(0x9180, mulmod(mload(0x9160), mload(0x6920), f_q)) +mstore(0x91a0, mulmod(sub(f_q, mload(0x9180)), mload(0x6e80), f_q)) +mstore(0x91c0, mulmod(mload(0x77c0), mload(0x6e80), f_q)) +mstore(0x91e0, addmod(mload(0x9140), mload(0x91a0), f_q)) +{ + let result := mulmod(mload(0x1720), mload(0x62a0), f_q) +mstore(37376, result) + } +mstore(0x9220, mulmod(mload(0x9200), mload(0x6920), f_q)) +mstore(0x9240, mulmod(sub(f_q, mload(0x9220)), mload(0x6ea0), f_q)) +mstore(0x9260, mulmod(mload(0x77c0), mload(0x6ea0), f_q)) +mstore(0x9280, addmod(mload(0x91e0), mload(0x9240), f_q)) +{ + let result := mulmod(mload(0x1740), mload(0x62a0), f_q) +mstore(37536, result) + } +mstore(0x92c0, mulmod(mload(0x92a0), mload(0x6920), f_q)) +mstore(0x92e0, mulmod(sub(f_q, mload(0x92c0)), mload(0x6ec0), f_q)) +mstore(0x9300, mulmod(mload(0x77c0), mload(0x6ec0), f_q)) +mstore(0x9320, addmod(mload(0x9280), mload(0x92e0), f_q)) +mstore(0x9340, mulmod(mload(0x5f80), mload(0x66c0), f_q)) +mstore(0x9360, mulmod(mload(0x5fa0), mload(0x66c0), f_q)) +{ + let result := mulmod(mload(0x5fc0), mload(0x62a0), f_q) +mstore(37760, result) + } +mstore(0x93a0, mulmod(mload(0x9380), mload(0x6920), f_q)) +mstore(0x93c0, mulmod(sub(f_q, mload(0x93a0)), mload(0x6ee0), f_q)) +mstore(0x93e0, mulmod(mload(0x77c0), mload(0x6ee0), f_q)) +mstore(0x9400, mulmod(mload(0x9340), mload(0x6ee0), f_q)) +mstore(0x9420, mulmod(mload(0x9360), mload(0x6ee0), f_q)) +mstore(0x9440, addmod(mload(0x9320), mload(0x93c0), f_q)) +{ + let result := mulmod(mload(0x14e0), mload(0x62a0), f_q) +mstore(37984, result) + } +mstore(0x9480, mulmod(mload(0x9460), mload(0x6920), f_q)) +mstore(0x94a0, mulmod(sub(f_q, mload(0x9480)), mload(0x6f00), f_q)) +mstore(0x94c0, mulmod(mload(0x77c0), mload(0x6f00), f_q)) +mstore(0x94e0, addmod(mload(0x9440), mload(0x94a0), f_q)) +mstore(0x9500, mulmod(mload(0x94e0), mload(0x1e00), f_q)) +mstore(0x9520, mulmod(mload(0x7840), mload(0x1e00), f_q)) +mstore(0x9540, mulmod(mload(0x78c0), mload(0x1e00), f_q)) +mstore(0x9560, mulmod(mload(0x7960), mload(0x1e00), f_q)) +mstore(0x9580, mulmod(mload(0x7a00), mload(0x1e00), f_q)) +mstore(0x95a0, mulmod(mload(0x7aa0), mload(0x1e00), f_q)) +mstore(0x95c0, mulmod(mload(0x7b40), mload(0x1e00), f_q)) +mstore(0x95e0, mulmod(mload(0x7be0), mload(0x1e00), f_q)) +mstore(0x9600, mulmod(mload(0x7c80), mload(0x1e00), f_q)) +mstore(0x9620, mulmod(mload(0x7d20), mload(0x1e00), f_q)) +mstore(0x9640, mulmod(mload(0x7dc0), mload(0x1e00), f_q)) +mstore(0x9660, mulmod(mload(0x7e60), mload(0x1e00), f_q)) +mstore(0x9680, mulmod(mload(0x7f00), mload(0x1e00), f_q)) +mstore(0x96a0, mulmod(mload(0x7fa0), mload(0x1e00), f_q)) +mstore(0x96c0, mulmod(mload(0x8040), mload(0x1e00), f_q)) +mstore(0x96e0, mulmod(mload(0x80e0), mload(0x1e00), f_q)) +mstore(0x9700, mulmod(mload(0x8180), mload(0x1e00), f_q)) +mstore(0x9720, mulmod(mload(0x8220), mload(0x1e00), f_q)) +mstore(0x9740, mulmod(mload(0x82c0), mload(0x1e00), f_q)) +mstore(0x9760, mulmod(mload(0x8360), mload(0x1e00), f_q)) +mstore(0x9780, mulmod(mload(0x8400), mload(0x1e00), f_q)) +mstore(0x97a0, mulmod(mload(0x84a0), mload(0x1e00), f_q)) +mstore(0x97c0, mulmod(mload(0x8540), mload(0x1e00), f_q)) +mstore(0x97e0, mulmod(mload(0x85e0), mload(0x1e00), f_q)) +mstore(0x9800, mulmod(mload(0x8680), mload(0x1e00), f_q)) +mstore(0x9820, mulmod(mload(0x8720), mload(0x1e00), f_q)) +mstore(0x9840, mulmod(mload(0x87c0), mload(0x1e00), f_q)) +mstore(0x9860, mulmod(mload(0x8860), mload(0x1e00), f_q)) +mstore(0x9880, mulmod(mload(0x8900), mload(0x1e00), f_q)) +mstore(0x98a0, mulmod(mload(0x89a0), mload(0x1e00), f_q)) +mstore(0x98c0, mulmod(mload(0x8a40), mload(0x1e00), f_q)) +mstore(0x98e0, mulmod(mload(0x8ae0), mload(0x1e00), f_q)) +mstore(0x9900, mulmod(mload(0x8b80), mload(0x1e00), f_q)) +mstore(0x9920, mulmod(mload(0x8c20), mload(0x1e00), f_q)) +mstore(0x9940, mulmod(mload(0x8cc0), mload(0x1e00), f_q)) +mstore(0x9960, mulmod(mload(0x8d60), mload(0x1e00), f_q)) +mstore(0x9980, mulmod(mload(0x8e00), mload(0x1e00), f_q)) +mstore(0x99a0, mulmod(mload(0x8ea0), mload(0x1e00), f_q)) +mstore(0x99c0, mulmod(mload(0x8f40), mload(0x1e00), f_q)) +mstore(0x99e0, mulmod(mload(0x8fe0), mload(0x1e00), f_q)) +mstore(0x9a00, mulmod(mload(0x9080), mload(0x1e00), f_q)) +mstore(0x9a20, mulmod(mload(0x9120), mload(0x1e00), f_q)) +mstore(0x9a40, mulmod(mload(0x91c0), mload(0x1e00), f_q)) +mstore(0x9a60, mulmod(mload(0x9260), mload(0x1e00), f_q)) +mstore(0x9a80, mulmod(mload(0x9300), mload(0x1e00), f_q)) +mstore(0x9aa0, mulmod(mload(0x93e0), mload(0x1e00), f_q)) +mstore(0x9ac0, mulmod(mload(0x9400), mload(0x1e00), f_q)) +mstore(0x9ae0, mulmod(mload(0x9420), mload(0x1e00), f_q)) +mstore(0x9b00, mulmod(mload(0x94c0), mload(0x1e00), f_q)) +mstore(0x9b20, addmod(mload(0x7660), mload(0x9500), f_q)) +mstore(0x9b40, mulmod(1, mload(0x6700), f_q)) +{ + let result := mulmod(mload(0x1760), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1780), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x17a0), mload(0x6300), f_q), result, f_q) +mstore(39776, result) + } +mstore(0x9b80, mulmod(mload(0x9b60), mload(0x6940), f_q)) +mstore(0x9ba0, mulmod(sub(f_q, mload(0x9b80)), 1, f_q)) +mstore(0x9bc0, mulmod(mload(0x9b40), 1, f_q)) +{ + let result := mulmod(mload(0x17c0), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x17e0), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1800), mload(0x6300), f_q), result, f_q) +mstore(39904, result) + } +mstore(0x9c00, mulmod(mload(0x9be0), mload(0x6940), f_q)) +mstore(0x9c20, mulmod(sub(f_q, mload(0x9c00)), mload(0x1da0), f_q)) +mstore(0x9c40, mulmod(mload(0x9b40), mload(0x1da0), f_q)) +mstore(0x9c60, addmod(mload(0x9ba0), mload(0x9c20), f_q)) +{ + let result := mulmod(mload(0x1820), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1840), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1860), mload(0x6300), f_q), result, f_q) +mstore(40064, result) + } +mstore(0x9ca0, mulmod(mload(0x9c80), mload(0x6940), f_q)) +mstore(0x9cc0, mulmod(sub(f_q, mload(0x9ca0)), mload(0x69a0), f_q)) +mstore(0x9ce0, mulmod(mload(0x9b40), mload(0x69a0), f_q)) +mstore(0x9d00, addmod(mload(0x9c60), mload(0x9cc0), f_q)) +{ + let result := mulmod(mload(0x1880), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x18a0), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x18c0), mload(0x6300), f_q), result, f_q) +mstore(40224, result) + } +mstore(0x9d40, mulmod(mload(0x9d20), mload(0x6940), f_q)) +mstore(0x9d60, mulmod(sub(f_q, mload(0x9d40)), mload(0x69c0), f_q)) +mstore(0x9d80, mulmod(mload(0x9b40), mload(0x69c0), f_q)) +mstore(0x9da0, addmod(mload(0x9d00), mload(0x9d60), f_q)) +{ + let result := mulmod(mload(0x18e0), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1900), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1920), mload(0x6300), f_q), result, f_q) +mstore(40384, result) + } +mstore(0x9de0, mulmod(mload(0x9dc0), mload(0x6940), f_q)) +mstore(0x9e00, mulmod(sub(f_q, mload(0x9de0)), mload(0x69e0), f_q)) +mstore(0x9e20, mulmod(mload(0x9b40), mload(0x69e0), f_q)) +mstore(0x9e40, addmod(mload(0x9da0), mload(0x9e00), f_q)) +{ + let result := mulmod(mload(0x1940), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1960), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1980), mload(0x6300), f_q), result, f_q) +mstore(40544, result) + } +mstore(0x9e80, mulmod(mload(0x9e60), mload(0x6940), f_q)) +mstore(0x9ea0, mulmod(sub(f_q, mload(0x9e80)), mload(0x6a00), f_q)) +mstore(0x9ec0, mulmod(mload(0x9b40), mload(0x6a00), f_q)) +mstore(0x9ee0, addmod(mload(0x9e40), mload(0x9ea0), f_q)) +{ + let result := mulmod(mload(0x19a0), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x19c0), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x19e0), mload(0x6300), f_q), result, f_q) +mstore(40704, result) + } +mstore(0x9f20, mulmod(mload(0x9f00), mload(0x6940), f_q)) +mstore(0x9f40, mulmod(sub(f_q, mload(0x9f20)), mload(0x6a20), f_q)) +mstore(0x9f60, mulmod(mload(0x9b40), mload(0x6a20), f_q)) +mstore(0x9f80, addmod(mload(0x9ee0), mload(0x9f40), f_q)) +{ + let result := mulmod(mload(0x1a00), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1a20), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1a40), mload(0x6300), f_q), result, f_q) +mstore(40864, result) + } +mstore(0x9fc0, mulmod(mload(0x9fa0), mload(0x6940), f_q)) +mstore(0x9fe0, mulmod(sub(f_q, mload(0x9fc0)), mload(0x6a40), f_q)) +mstore(0xa000, mulmod(mload(0x9b40), mload(0x6a40), f_q)) +mstore(0xa020, addmod(mload(0x9f80), mload(0x9fe0), f_q)) +{ + let result := mulmod(mload(0x1a60), mload(0x62c0), f_q) +result := addmod(mulmod(mload(0x1a80), mload(0x62e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x1aa0), mload(0x6300), f_q), result, f_q) +mstore(41024, result) + } +mstore(0xa060, mulmod(mload(0xa040), mload(0x6940), f_q)) +mstore(0xa080, mulmod(sub(f_q, mload(0xa060)), mload(0x6a60), f_q)) +mstore(0xa0a0, mulmod(mload(0x9b40), mload(0x6a60), f_q)) +mstore(0xa0c0, addmod(mload(0xa020), mload(0xa080), f_q)) +mstore(0xa0e0, mulmod(mload(0xa0c0), mload(0x6f40), f_q)) +mstore(0xa100, mulmod(mload(0x9bc0), mload(0x6f40), f_q)) +mstore(0xa120, mulmod(mload(0x9c40), mload(0x6f40), f_q)) +mstore(0xa140, mulmod(mload(0x9ce0), mload(0x6f40), f_q)) +mstore(0xa160, mulmod(mload(0x9d80), mload(0x6f40), f_q)) +mstore(0xa180, mulmod(mload(0x9e20), mload(0x6f40), f_q)) +mstore(0xa1a0, mulmod(mload(0x9ec0), mload(0x6f40), f_q)) +mstore(0xa1c0, mulmod(mload(0x9f60), mload(0x6f40), f_q)) +mstore(0xa1e0, mulmod(mload(0xa000), mload(0x6f40), f_q)) +mstore(0xa200, mulmod(mload(0xa0a0), mload(0x6f40), f_q)) +mstore(0xa220, addmod(mload(0x9b20), mload(0xa0e0), f_q)) +mstore(0xa240, mulmod(1, mload(0x6740), f_q)) +{ + let result := mulmod(mload(0x1ac0), mload(0x6340), f_q) +result := addmod(mulmod(mload(0x1ae0), mload(0x6360), f_q), result, f_q) +mstore(41568, result) + } +mstore(0xa280, mulmod(mload(0xa260), mload(0x6960), f_q)) +mstore(0xa2a0, mulmod(sub(f_q, mload(0xa280)), 1, f_q)) +mstore(0xa2c0, mulmod(mload(0xa240), 1, f_q)) +{ + let result := mulmod(mload(0x1b00), mload(0x6340), f_q) +result := addmod(mulmod(mload(0x1b20), mload(0x6360), f_q), result, f_q) +mstore(41696, result) + } +mstore(0xa300, mulmod(mload(0xa2e0), mload(0x6960), f_q)) +mstore(0xa320, mulmod(sub(f_q, mload(0xa300)), mload(0x1da0), f_q)) +mstore(0xa340, mulmod(mload(0xa240), mload(0x1da0), f_q)) +mstore(0xa360, addmod(mload(0xa2a0), mload(0xa320), f_q)) +{ + let result := mulmod(mload(0x1ba0), mload(0x6340), f_q) +result := addmod(mulmod(mload(0x1bc0), mload(0x6360), f_q), result, f_q) +mstore(41856, result) + } +mstore(0xa3a0, mulmod(mload(0xa380), mload(0x6960), f_q)) +mstore(0xa3c0, mulmod(sub(f_q, mload(0xa3a0)), mload(0x69a0), f_q)) +mstore(0xa3e0, mulmod(mload(0xa240), mload(0x69a0), f_q)) +mstore(0xa400, addmod(mload(0xa360), mload(0xa3c0), f_q)) +{ + let result := mulmod(mload(0x1c40), mload(0x6340), f_q) +result := addmod(mulmod(mload(0x1c60), mload(0x6360), f_q), result, f_q) +mstore(42016, result) + } +mstore(0xa440, mulmod(mload(0xa420), mload(0x6960), f_q)) +mstore(0xa460, mulmod(sub(f_q, mload(0xa440)), mload(0x69c0), f_q)) +mstore(0xa480, mulmod(mload(0xa240), mload(0x69c0), f_q)) +mstore(0xa4a0, addmod(mload(0xa400), mload(0xa460), f_q)) +{ + let result := mulmod(mload(0x1ce0), mload(0x6340), f_q) +result := addmod(mulmod(mload(0x1d00), mload(0x6360), f_q), result, f_q) +mstore(42176, result) + } +mstore(0xa4e0, mulmod(mload(0xa4c0), mload(0x6960), f_q)) +mstore(0xa500, mulmod(sub(f_q, mload(0xa4e0)), mload(0x69e0), f_q)) +mstore(0xa520, mulmod(mload(0xa240), mload(0x69e0), f_q)) +mstore(0xa540, addmod(mload(0xa4a0), mload(0xa500), f_q)) +mstore(0xa560, mulmod(mload(0xa540), mload(0x6f60), f_q)) +mstore(0xa580, mulmod(mload(0xa2c0), mload(0x6f60), f_q)) +mstore(0xa5a0, mulmod(mload(0xa340), mload(0x6f60), f_q)) +mstore(0xa5c0, mulmod(mload(0xa3e0), mload(0x6f60), f_q)) +mstore(0xa5e0, mulmod(mload(0xa480), mload(0x6f60), f_q)) +mstore(0xa600, mulmod(mload(0xa520), mload(0x6f60), f_q)) +mstore(0xa620, addmod(mload(0xa220), mload(0xa560), f_q)) +mstore(0xa640, mulmod(1, mload(0x6780), f_q)) +{ + let result := mulmod(mload(0x1b40), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1b60), mload(0x63a0), f_q), result, f_q) +mstore(42592, result) + } +mstore(0xa680, mulmod(mload(0xa660), mload(0x6980), f_q)) +mstore(0xa6a0, mulmod(sub(f_q, mload(0xa680)), 1, f_q)) +mstore(0xa6c0, mulmod(mload(0xa640), 1, f_q)) +{ + let result := mulmod(mload(0x1be0), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1c00), mload(0x63a0), f_q), result, f_q) +mstore(42720, result) + } +mstore(0xa700, mulmod(mload(0xa6e0), mload(0x6980), f_q)) +mstore(0xa720, mulmod(sub(f_q, mload(0xa700)), mload(0x1da0), f_q)) +mstore(0xa740, mulmod(mload(0xa640), mload(0x1da0), f_q)) +mstore(0xa760, addmod(mload(0xa6a0), mload(0xa720), f_q)) +{ + let result := mulmod(mload(0x1c80), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1ca0), mload(0x63a0), f_q), result, f_q) +mstore(42880, result) + } +mstore(0xa7a0, mulmod(mload(0xa780), mload(0x6980), f_q)) +mstore(0xa7c0, mulmod(sub(f_q, mload(0xa7a0)), mload(0x69a0), f_q)) +mstore(0xa7e0, mulmod(mload(0xa640), mload(0x69a0), f_q)) +mstore(0xa800, addmod(mload(0xa760), mload(0xa7c0), f_q)) +{ + let result := mulmod(mload(0x1d20), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1d40), mload(0x63a0), f_q), result, f_q) +mstore(43040, result) + } +mstore(0xa840, mulmod(mload(0xa820), mload(0x6980), f_q)) +mstore(0xa860, mulmod(sub(f_q, mload(0xa840)), mload(0x69c0), f_q)) +mstore(0xa880, mulmod(mload(0xa640), mload(0x69c0), f_q)) +mstore(0xa8a0, addmod(mload(0xa800), mload(0xa860), f_q)) +mstore(0xa8c0, mulmod(mload(0xa8a0), mload(0x6f80), f_q)) +mstore(0xa8e0, mulmod(mload(0xa6c0), mload(0x6f80), f_q)) +mstore(0xa900, mulmod(mload(0xa740), mload(0x6f80), f_q)) +mstore(0xa920, mulmod(mload(0xa7e0), mload(0x6f80), f_q)) +mstore(0xa940, mulmod(mload(0xa880), mload(0x6f80), f_q)) +mstore(0xa960, addmod(mload(0xa620), mload(0xa8c0), f_q)) +mstore(0xa980, mulmod(1, mload(0x6280), f_q)) +mstore(0xa9a0, mulmod(1, mload(0x1ea0), f_q)) +mstore(0xa9c0, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0xa9e0, 0x0000000000000000000000000000000000000000000000000000000000000002) +mstore(0xaa00, mload(0xa960)) +success := and(eq(staticcall(gas(), 0x7, 0xa9c0, 0x60, 0xa9c0, 0x40), 1), success) +mstore(0xaa20, mload(0xa9c0)) + mstore(0xaa40, mload(0xa9e0)) +mstore(0xaa60, mload(0x20)) + mstore(0xaa80, mload(0x40)) +success := and(eq(staticcall(gas(), 0x6, 0xaa20, 0x80, 0xaa20, 0x40), 1), success) +mstore(0xaaa0, mload(0x60)) + mstore(0xaac0, mload(0x80)) +mstore(0xaae0, mload(0x7680)) +success := and(eq(staticcall(gas(), 0x7, 0xaaa0, 0x60, 0xaaa0, 0x40), 1), success) +mstore(0xab00, mload(0xaa20)) + mstore(0xab20, mload(0xaa40)) +mstore(0xab40, mload(0xaaa0)) + mstore(0xab60, mload(0xaac0)) +success := and(eq(staticcall(gas(), 0x6, 0xab00, 0x80, 0xab00, 0x40), 1), success) +mstore(0xab80, mload(0xa0)) + mstore(0xaba0, mload(0xc0)) +mstore(0xabc0, mload(0x76a0)) +success := and(eq(staticcall(gas(), 0x7, 0xab80, 0x60, 0xab80, 0x40), 1), success) +mstore(0xabe0, mload(0xab00)) + mstore(0xac00, mload(0xab20)) +mstore(0xac20, mload(0xab80)) + mstore(0xac40, mload(0xaba0)) +success := and(eq(staticcall(gas(), 0x6, 0xabe0, 0x80, 0xabe0, 0x40), 1), success) +mstore(0xac60, mload(0xe0)) + mstore(0xac80, mload(0x100)) +mstore(0xaca0, mload(0x76c0)) +success := and(eq(staticcall(gas(), 0x7, 0xac60, 0x60, 0xac60, 0x40), 1), success) +mstore(0xacc0, mload(0xabe0)) + mstore(0xace0, mload(0xac00)) +mstore(0xad00, mload(0xac60)) + mstore(0xad20, mload(0xac80)) +success := and(eq(staticcall(gas(), 0x6, 0xacc0, 0x80, 0xacc0, 0x40), 1), success) +mstore(0xad40, mload(0x120)) + mstore(0xad60, mload(0x140)) +mstore(0xad80, mload(0x76e0)) +success := and(eq(staticcall(gas(), 0x7, 0xad40, 0x60, 0xad40, 0x40), 1), success) +mstore(0xada0, mload(0xacc0)) + mstore(0xadc0, mload(0xace0)) +mstore(0xade0, mload(0xad40)) + mstore(0xae00, mload(0xad60)) +success := and(eq(staticcall(gas(), 0x6, 0xada0, 0x80, 0xada0, 0x40), 1), success) +mstore(0xae20, mload(0x160)) + mstore(0xae40, mload(0x180)) +mstore(0xae60, mload(0x7700)) +success := and(eq(staticcall(gas(), 0x7, 0xae20, 0x60, 0xae20, 0x40), 1), success) +mstore(0xae80, mload(0xada0)) + mstore(0xaea0, mload(0xadc0)) +mstore(0xaec0, mload(0xae20)) + mstore(0xaee0, mload(0xae40)) +success := and(eq(staticcall(gas(), 0x6, 0xae80, 0x80, 0xae80, 0x40), 1), success) +mstore(0xaf00, mload(0x1a0)) + mstore(0xaf20, mload(0x1c0)) +mstore(0xaf40, mload(0x7720)) +success := and(eq(staticcall(gas(), 0x7, 0xaf00, 0x60, 0xaf00, 0x40), 1), success) +mstore(0xaf60, mload(0xae80)) + mstore(0xaf80, mload(0xaea0)) +mstore(0xafa0, mload(0xaf00)) + mstore(0xafc0, mload(0xaf20)) +success := and(eq(staticcall(gas(), 0x6, 0xaf60, 0x80, 0xaf60, 0x40), 1), success) +mstore(0xafe0, mload(0x1e0)) + mstore(0xb000, mload(0x200)) +mstore(0xb020, mload(0x7740)) +success := and(eq(staticcall(gas(), 0x7, 0xafe0, 0x60, 0xafe0, 0x40), 1), success) +mstore(0xb040, mload(0xaf60)) + mstore(0xb060, mload(0xaf80)) +mstore(0xb080, mload(0xafe0)) + mstore(0xb0a0, mload(0xb000)) +success := and(eq(staticcall(gas(), 0x6, 0xb040, 0x80, 0xb040, 0x40), 1), success) +mstore(0xb0c0, mload(0x220)) + mstore(0xb0e0, mload(0x240)) +mstore(0xb100, mload(0x7760)) +success := and(eq(staticcall(gas(), 0x7, 0xb0c0, 0x60, 0xb0c0, 0x40), 1), success) +mstore(0xb120, mload(0xb040)) + mstore(0xb140, mload(0xb060)) +mstore(0xb160, mload(0xb0c0)) + mstore(0xb180, mload(0xb0e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb120, 0x80, 0xb120, 0x40), 1), success) +mstore(0xb1a0, mload(0x260)) + mstore(0xb1c0, mload(0x280)) +mstore(0xb1e0, mload(0x7780)) +success := and(eq(staticcall(gas(), 0x7, 0xb1a0, 0x60, 0xb1a0, 0x40), 1), success) +mstore(0xb200, mload(0xb120)) + mstore(0xb220, mload(0xb140)) +mstore(0xb240, mload(0xb1a0)) + mstore(0xb260, mload(0xb1c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb200, 0x80, 0xb200, 0x40), 1), success) +mstore(0xb280, mload(0x2a0)) + mstore(0xb2a0, mload(0x2c0)) +mstore(0xb2c0, mload(0x77a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb280, 0x60, 0xb280, 0x40), 1), success) +mstore(0xb2e0, mload(0xb200)) + mstore(0xb300, mload(0xb220)) +mstore(0xb320, mload(0xb280)) + mstore(0xb340, mload(0xb2a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2e0, 0x80, 0xb2e0, 0x40), 1), success) +mstore(0xb360, mload(0x2e0)) + mstore(0xb380, mload(0x300)) +mstore(0xb3a0, mload(0x9520)) +success := and(eq(staticcall(gas(), 0x7, 0xb360, 0x60, 0xb360, 0x40), 1), success) +mstore(0xb3c0, mload(0xb2e0)) + mstore(0xb3e0, mload(0xb300)) +mstore(0xb400, mload(0xb360)) + mstore(0xb420, mload(0xb380)) +success := and(eq(staticcall(gas(), 0x6, 0xb3c0, 0x80, 0xb3c0, 0x40), 1), success) +mstore(0xb440, mload(0x320)) + mstore(0xb460, mload(0x340)) +mstore(0xb480, mload(0x9540)) +success := and(eq(staticcall(gas(), 0x7, 0xb440, 0x60, 0xb440, 0x40), 1), success) +mstore(0xb4a0, mload(0xb3c0)) + mstore(0xb4c0, mload(0xb3e0)) +mstore(0xb4e0, mload(0xb440)) + mstore(0xb500, mload(0xb460)) +success := and(eq(staticcall(gas(), 0x6, 0xb4a0, 0x80, 0xb4a0, 0x40), 1), success) +mstore(0xb520, mload(0x360)) + mstore(0xb540, mload(0x380)) +mstore(0xb560, mload(0x9560)) +success := and(eq(staticcall(gas(), 0x7, 0xb520, 0x60, 0xb520, 0x40), 1), success) +mstore(0xb580, mload(0xb4a0)) + mstore(0xb5a0, mload(0xb4c0)) +mstore(0xb5c0, mload(0xb520)) + mstore(0xb5e0, mload(0xb540)) +success := and(eq(staticcall(gas(), 0x6, 0xb580, 0x80, 0xb580, 0x40), 1), success) +mstore(0xb600, mload(0x3a0)) + mstore(0xb620, mload(0x3c0)) +mstore(0xb640, mload(0x9580)) +success := and(eq(staticcall(gas(), 0x7, 0xb600, 0x60, 0xb600, 0x40), 1), success) +mstore(0xb660, mload(0xb580)) + mstore(0xb680, mload(0xb5a0)) +mstore(0xb6a0, mload(0xb600)) + mstore(0xb6c0, mload(0xb620)) +success := and(eq(staticcall(gas(), 0x6, 0xb660, 0x80, 0xb660, 0x40), 1), success) +mstore(0xb6e0, mload(0x3e0)) + mstore(0xb700, mload(0x400)) +mstore(0xb720, mload(0x95a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb6e0, 0x60, 0xb6e0, 0x40), 1), success) +mstore(0xb740, mload(0xb660)) + mstore(0xb760, mload(0xb680)) +mstore(0xb780, mload(0xb6e0)) + mstore(0xb7a0, mload(0xb700)) +success := and(eq(staticcall(gas(), 0x6, 0xb740, 0x80, 0xb740, 0x40), 1), success) +mstore(0xb7c0, mload(0x420)) + mstore(0xb7e0, mload(0x440)) +mstore(0xb800, mload(0x95c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb7c0, 0x60, 0xb7c0, 0x40), 1), success) +mstore(0xb820, mload(0xb740)) + mstore(0xb840, mload(0xb760)) +mstore(0xb860, mload(0xb7c0)) + mstore(0xb880, mload(0xb7e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb820, 0x80, 0xb820, 0x40), 1), success) +mstore(0xb8a0, mload(0x500)) + mstore(0xb8c0, mload(0x520)) +mstore(0xb8e0, mload(0x95e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb8a0, 0x60, 0xb8a0, 0x40), 1), success) +mstore(0xb900, mload(0xb820)) + mstore(0xb920, mload(0xb840)) +mstore(0xb940, mload(0xb8a0)) + mstore(0xb960, mload(0xb8c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb900, 0x80, 0xb900, 0x40), 1), success) +mstore(0xb980, mload(0x580)) + mstore(0xb9a0, mload(0x5a0)) +mstore(0xb9c0, mload(0x9600)) +success := and(eq(staticcall(gas(), 0x7, 0xb980, 0x60, 0xb980, 0x40), 1), success) +mstore(0xb9e0, mload(0xb900)) + mstore(0xba00, mload(0xb920)) +mstore(0xba20, mload(0xb980)) + mstore(0xba40, mload(0xb9a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb9e0, 0x80, 0xb9e0, 0x40), 1), success) +mstore(0xba60, mload(0x600)) + mstore(0xba80, mload(0x620)) +mstore(0xbaa0, mload(0x9620)) +success := and(eq(staticcall(gas(), 0x7, 0xba60, 0x60, 0xba60, 0x40), 1), success) +mstore(0xbac0, mload(0xb9e0)) + mstore(0xbae0, mload(0xba00)) +mstore(0xbb00, mload(0xba60)) + mstore(0xbb20, mload(0xba80)) +success := and(eq(staticcall(gas(), 0x6, 0xbac0, 0x80, 0xbac0, 0x40), 1), success) +mstore(0xbb40, mload(0x680)) + mstore(0xbb60, mload(0x6a0)) +mstore(0xbb80, mload(0x9640)) +success := and(eq(staticcall(gas(), 0x7, 0xbb40, 0x60, 0xbb40, 0x40), 1), success) +mstore(0xbba0, mload(0xbac0)) + mstore(0xbbc0, mload(0xbae0)) +mstore(0xbbe0, mload(0xbb40)) + mstore(0xbc00, mload(0xbb60)) +success := and(eq(staticcall(gas(), 0x6, 0xbba0, 0x80, 0xbba0, 0x40), 1), success) +mstore(0xbc20, 0x0d58e17dac48ad80bd6e3ee0860b8481516ec7f949c0c73707dbf99e1a659fe8) + mstore(0xbc40, 0x0dd669ba0897a1a969c987d7ed28621976fee2c0de58b62b02cd5de878afb756) +mstore(0xbc60, mload(0x9660)) +success := and(eq(staticcall(gas(), 0x7, 0xbc20, 0x60, 0xbc20, 0x40), 1), success) +mstore(0xbc80, mload(0xbba0)) + mstore(0xbca0, mload(0xbbc0)) +mstore(0xbcc0, mload(0xbc20)) + mstore(0xbce0, mload(0xbc40)) +success := and(eq(staticcall(gas(), 0x6, 0xbc80, 0x80, 0xbc80, 0x40), 1), success) +mstore(0xbd00, 0x287ee5534d4c16ef78de7646cc481ed44aa9377c9f27a39779833f7ddb4bdf7c) + mstore(0xbd20, 0x126ab83eede4df118f9cd4216d70c70da40820443112c18ddc36e2dabb355323) +mstore(0xbd40, mload(0x9680)) +success := and(eq(staticcall(gas(), 0x7, 0xbd00, 0x60, 0xbd00, 0x40), 1), success) +mstore(0xbd60, mload(0xbc80)) + mstore(0xbd80, mload(0xbca0)) +mstore(0xbda0, mload(0xbd00)) + mstore(0xbdc0, mload(0xbd20)) +success := and(eq(staticcall(gas(), 0x6, 0xbd60, 0x80, 0xbd60, 0x40), 1), success) +mstore(0xbde0, 0x17b9541314a49b7e1494dbb9b56c0fe5a2a22b5f40e308f0845c7d5b8700c529) + mstore(0xbe00, 0x1d95155e21064d16f1b5766a5ce76bbae69b692527d80618b8fdf4191ce081c7) +mstore(0xbe20, mload(0x96a0)) +success := and(eq(staticcall(gas(), 0x7, 0xbde0, 0x60, 0xbde0, 0x40), 1), success) +mstore(0xbe40, mload(0xbd60)) + mstore(0xbe60, mload(0xbd80)) +mstore(0xbe80, mload(0xbde0)) + mstore(0xbea0, mload(0xbe00)) +success := and(eq(staticcall(gas(), 0x6, 0xbe40, 0x80, 0xbe40, 0x40), 1), success) +mstore(0xbec0, 0x2034111db6e926233bc5515ff2c4b8f9a87b144f97d985aa02c434e8aa328daf) + mstore(0xbee0, 0x22c50db907ec7756bd04bda8b20af846bef6a44f87a5a4833d148c8f67d19840) +mstore(0xbf00, mload(0x96c0)) +success := and(eq(staticcall(gas(), 0x7, 0xbec0, 0x60, 0xbec0, 0x40), 1), success) +mstore(0xbf20, mload(0xbe40)) + mstore(0xbf40, mload(0xbe60)) +mstore(0xbf60, mload(0xbec0)) + mstore(0xbf80, mload(0xbee0)) +success := and(eq(staticcall(gas(), 0x6, 0xbf20, 0x80, 0xbf20, 0x40), 1), success) +mstore(0xbfa0, 0x0bfaa377fc9f385274cb2543a7e6b9bd6ca8cb08975aa9cf2e27b0b63ec25678) + mstore(0xbfc0, 0x067a2ddfb0832019515ea91c70c84508bbe62c7e6fc871d5a9d23f270fcbe21f) +mstore(0xbfe0, mload(0x96e0)) +success := and(eq(staticcall(gas(), 0x7, 0xbfa0, 0x60, 0xbfa0, 0x40), 1), success) +mstore(0xc000, mload(0xbf20)) + mstore(0xc020, mload(0xbf40)) +mstore(0xc040, mload(0xbfa0)) + mstore(0xc060, mload(0xbfc0)) +success := and(eq(staticcall(gas(), 0x6, 0xc000, 0x80, 0xc000, 0x40), 1), success) +mstore(0xc080, 0x27df0403bb022895b63e08e80610c6849c20c06ff4ef83587e728ceff52603d7) + mstore(0xc0a0, 0x26b2cd2f6ef264bc2195e322d65d289cd78726482c787af5ab5af2446e640d44) +mstore(0xc0c0, mload(0x9700)) +success := and(eq(staticcall(gas(), 0x7, 0xc080, 0x60, 0xc080, 0x40), 1), success) +mstore(0xc0e0, mload(0xc000)) + mstore(0xc100, mload(0xc020)) +mstore(0xc120, mload(0xc080)) + mstore(0xc140, mload(0xc0a0)) +success := and(eq(staticcall(gas(), 0x6, 0xc0e0, 0x80, 0xc0e0, 0x40), 1), success) +mstore(0xc160, 0x26d505e7418a23130727122fa40aec2bc1384fb6634ca5440d6833845fe8c0b4) + mstore(0xc180, 0x23e589635524bac957459885d70ded3c188ad4826b011b2eb9d7557184905e39) +mstore(0xc1a0, mload(0x9720)) +success := and(eq(staticcall(gas(), 0x7, 0xc160, 0x60, 0xc160, 0x40), 1), success) +mstore(0xc1c0, mload(0xc0e0)) + mstore(0xc1e0, mload(0xc100)) +mstore(0xc200, mload(0xc160)) + mstore(0xc220, mload(0xc180)) +success := and(eq(staticcall(gas(), 0x6, 0xc1c0, 0x80, 0xc1c0, 0x40), 1), success) +mstore(0xc240, 0x16be379dea433b52069d1cae3ca8a2998cff058b4c79e825525fd6dd3af2b73b) + mstore(0xc260, 0x2b6a5453eea274e075804701cf459507a0d025e9f1956dcc09bf589f531a6daf) +mstore(0xc280, mload(0x9740)) +success := and(eq(staticcall(gas(), 0x7, 0xc240, 0x60, 0xc240, 0x40), 1), success) +mstore(0xc2a0, mload(0xc1c0)) + mstore(0xc2c0, mload(0xc1e0)) +mstore(0xc2e0, mload(0xc240)) + mstore(0xc300, mload(0xc260)) +success := and(eq(staticcall(gas(), 0x6, 0xc2a0, 0x80, 0xc2a0, 0x40), 1), success) +mstore(0xc320, 0x01f1bfc4883abd91f3c5472fc90ec468a77585e071cb58a0d5d031d3b9dcdd2e) + mstore(0xc340, 0x0ec6ba7d2526983c9719e03dd0b3d8a0e1743220355f257fee21b552db0f59d2) +mstore(0xc360, mload(0x9760)) +success := and(eq(staticcall(gas(), 0x7, 0xc320, 0x60, 0xc320, 0x40), 1), success) +mstore(0xc380, mload(0xc2a0)) + mstore(0xc3a0, mload(0xc2c0)) +mstore(0xc3c0, mload(0xc320)) + mstore(0xc3e0, mload(0xc340)) +success := and(eq(staticcall(gas(), 0x6, 0xc380, 0x80, 0xc380, 0x40), 1), success) +mstore(0xc400, 0x23375e6614de3b6af2e9baca39468ab50bb3ef1d202191efe57a0dbebad79b9c) + mstore(0xc420, 0x2629cff3fdc35cc3d122fbd7d428bb5f9a4e36be60e93f4433e7a9c68dd9f1d2) +mstore(0xc440, mload(0x9780)) +success := and(eq(staticcall(gas(), 0x7, 0xc400, 0x60, 0xc400, 0x40), 1), success) +mstore(0xc460, mload(0xc380)) + mstore(0xc480, mload(0xc3a0)) +mstore(0xc4a0, mload(0xc400)) + mstore(0xc4c0, mload(0xc420)) +success := and(eq(staticcall(gas(), 0x6, 0xc460, 0x80, 0xc460, 0x40), 1), success) +mstore(0xc4e0, 0x1074b75d7f6748d687585d6b273b39a5470856b67554c475006b7f3f700fc95a) + mstore(0xc500, 0x0372448c1e9c9d6d8011910a6a2f073789c252fd630a37cdf57e045dce9d000a) +mstore(0xc520, mload(0x97a0)) +success := and(eq(staticcall(gas(), 0x7, 0xc4e0, 0x60, 0xc4e0, 0x40), 1), success) +mstore(0xc540, mload(0xc460)) + mstore(0xc560, mload(0xc480)) +mstore(0xc580, mload(0xc4e0)) + mstore(0xc5a0, mload(0xc500)) +success := and(eq(staticcall(gas(), 0x6, 0xc540, 0x80, 0xc540, 0x40), 1), success) +mstore(0xc5c0, 0x1a955231d3b39a4beb61f1fd7671755ed3fd58e83f08e8c26d8132b1ed58e760) + mstore(0xc5e0, 0x0887bf4b8c7dfe140be82b230262fd0e25fcc3988de780f0df78d1adc9a49d1d) +mstore(0xc600, mload(0x97c0)) +success := and(eq(staticcall(gas(), 0x7, 0xc5c0, 0x60, 0xc5c0, 0x40), 1), success) +mstore(0xc620, mload(0xc540)) + mstore(0xc640, mload(0xc560)) +mstore(0xc660, mload(0xc5c0)) + mstore(0xc680, mload(0xc5e0)) +success := and(eq(staticcall(gas(), 0x6, 0xc620, 0x80, 0xc620, 0x40), 1), success) +mstore(0xc6a0, 0x23f219889fa802acbfb9215dd3f269cd978b8b3c93b39c62107f68049c3caf10) + mstore(0xc6c0, 0x22b1eaa0949f5e4a512da6dad08dfecfe4088d9dfa39d3b7a8eca564ff8ef733) +mstore(0xc6e0, mload(0x97e0)) +success := and(eq(staticcall(gas(), 0x7, 0xc6a0, 0x60, 0xc6a0, 0x40), 1), success) +mstore(0xc700, mload(0xc620)) + mstore(0xc720, mload(0xc640)) +mstore(0xc740, mload(0xc6a0)) + mstore(0xc760, mload(0xc6c0)) +success := and(eq(staticcall(gas(), 0x6, 0xc700, 0x80, 0xc700, 0x40), 1), success) +mstore(0xc780, 0x1d077bcb3eb8d92ff2401a79f8735921b43299fd034ad79eee10970248de9deb) + mstore(0xc7a0, 0x1d29f9088b8ff05bf43541053fdd50b1d359f8e3e21125726e3a4548d220dd06) +mstore(0xc7c0, mload(0x9800)) +success := and(eq(staticcall(gas(), 0x7, 0xc780, 0x60, 0xc780, 0x40), 1), success) +mstore(0xc7e0, mload(0xc700)) + mstore(0xc800, mload(0xc720)) +mstore(0xc820, mload(0xc780)) + mstore(0xc840, mload(0xc7a0)) +success := and(eq(staticcall(gas(), 0x6, 0xc7e0, 0x80, 0xc7e0, 0x40), 1), success) +mstore(0xc860, 0x13c64c3e31025689345b3e40687e4b799ab68c2f0f2b73d3936b412a0498dc5a) + mstore(0xc880, 0x0ffde2a03f58a747ea8902f2523e8eed2840f83586d7257d55335a1c457ea352) +mstore(0xc8a0, mload(0x9820)) +success := and(eq(staticcall(gas(), 0x7, 0xc860, 0x60, 0xc860, 0x40), 1), success) +mstore(0xc8c0, mload(0xc7e0)) + mstore(0xc8e0, mload(0xc800)) +mstore(0xc900, mload(0xc860)) + mstore(0xc920, mload(0xc880)) +success := and(eq(staticcall(gas(), 0x6, 0xc8c0, 0x80, 0xc8c0, 0x40), 1), success) +mstore(0xc940, 0x133a88efcb58485c666ad7586e3e9ea9bf45bd29794cfd9262724e848bf3295a) + mstore(0xc960, 0x08efade4badc01d5b04dbc82859426c453414ae99ac70644dc24ff225f4d77ac) +mstore(0xc980, mload(0x9840)) +success := and(eq(staticcall(gas(), 0x7, 0xc940, 0x60, 0xc940, 0x40), 1), success) +mstore(0xc9a0, mload(0xc8c0)) + mstore(0xc9c0, mload(0xc8e0)) +mstore(0xc9e0, mload(0xc940)) + mstore(0xca00, mload(0xc960)) +success := and(eq(staticcall(gas(), 0x6, 0xc9a0, 0x80, 0xc9a0, 0x40), 1), success) +mstore(0xca20, 0x013d1032b8e11d792126f3ac9c65c99a52180b1c0dadd60efdf716951eaeee0b) + mstore(0xca40, 0x0575d30be88f6eb67fba0f4e32b8b69f98ea173752d360c2eb3c4f59451b4169) +mstore(0xca60, mload(0x9860)) +success := and(eq(staticcall(gas(), 0x7, 0xca20, 0x60, 0xca20, 0x40), 1), success) +mstore(0xca80, mload(0xc9a0)) + mstore(0xcaa0, mload(0xc9c0)) +mstore(0xcac0, mload(0xca20)) + mstore(0xcae0, mload(0xca40)) +success := and(eq(staticcall(gas(), 0x6, 0xca80, 0x80, 0xca80, 0x40), 1), success) +mstore(0xcb00, 0x2dc1be23f4e8d1e1ecd10574ec5b9233711487d31c19882a8a1c56fd2c80c062) + mstore(0xcb20, 0x0346bb3d0b2390bab67357ea49d91aff24bc31b0cb9a0171b5412992b545fe54) +mstore(0xcb40, mload(0x9880)) +success := and(eq(staticcall(gas(), 0x7, 0xcb00, 0x60, 0xcb00, 0x40), 1), success) +mstore(0xcb60, mload(0xca80)) + mstore(0xcb80, mload(0xcaa0)) +mstore(0xcba0, mload(0xcb00)) + mstore(0xcbc0, mload(0xcb20)) +success := and(eq(staticcall(gas(), 0x6, 0xcb60, 0x80, 0xcb60, 0x40), 1), success) +mstore(0xcbe0, 0x2b07e7287cbfaa5c96bddd3bc4b0907574e55d49f98ae484d9459f62ccaf3c11) + mstore(0xcc00, 0x2c93b14616131841829c3c7c8191781851adb2f924317f4e54898cecbcc64b67) +mstore(0xcc20, mload(0x98a0)) +success := and(eq(staticcall(gas(), 0x7, 0xcbe0, 0x60, 0xcbe0, 0x40), 1), success) +mstore(0xcc40, mload(0xcb60)) + mstore(0xcc60, mload(0xcb80)) +mstore(0xcc80, mload(0xcbe0)) + mstore(0xcca0, mload(0xcc00)) +success := and(eq(staticcall(gas(), 0x6, 0xcc40, 0x80, 0xcc40, 0x40), 1), success) +mstore(0xccc0, 0x251da073e7deb6f919ab09068ecfb89b79f9bab3d688a54498f2864ee2cc75bd) + mstore(0xcce0, 0x16af3fa724e11b625ca16cb71afa2429033ca404c333e9ae8b18b6e7038c9cce) +mstore(0xcd00, mload(0x98c0)) +success := and(eq(staticcall(gas(), 0x7, 0xccc0, 0x60, 0xccc0, 0x40), 1), success) +mstore(0xcd20, mload(0xcc40)) + mstore(0xcd40, mload(0xcc60)) +mstore(0xcd60, mload(0xccc0)) + mstore(0xcd80, mload(0xcce0)) +success := and(eq(staticcall(gas(), 0x6, 0xcd20, 0x80, 0xcd20, 0x40), 1), success) +mstore(0xcda0, 0x182eeeae43f8972a706535957951a18428f19aa4f326b509a7db6ac8ecb9ffc9) + mstore(0xcdc0, 0x1e4a73abf29d74f0cf6b064c991ce1aacbb1c0271c2d7aff91c167ffb4a4e951) +mstore(0xcde0, mload(0x98e0)) +success := and(eq(staticcall(gas(), 0x7, 0xcda0, 0x60, 0xcda0, 0x40), 1), success) +mstore(0xce00, mload(0xcd20)) + mstore(0xce20, mload(0xcd40)) +mstore(0xce40, mload(0xcda0)) + mstore(0xce60, mload(0xcdc0)) +success := and(eq(staticcall(gas(), 0x6, 0xce00, 0x80, 0xce00, 0x40), 1), success) +mstore(0xce80, 0x01b2ed083f41f01a03a933c5f67bd655c01a7e17a84c7b046632f349dbcf8e79) + mstore(0xcea0, 0x1ab53cdc69aba969007762595da8eb7b6d2924d4920fbf0571bb6a6e41d8ec07) +mstore(0xcec0, mload(0x9900)) +success := and(eq(staticcall(gas(), 0x7, 0xce80, 0x60, 0xce80, 0x40), 1), success) +mstore(0xcee0, mload(0xce00)) + mstore(0xcf00, mload(0xce20)) +mstore(0xcf20, mload(0xce80)) + mstore(0xcf40, mload(0xcea0)) +success := and(eq(staticcall(gas(), 0x6, 0xcee0, 0x80, 0xcee0, 0x40), 1), success) +mstore(0xcf60, 0x2aa30b62cae152e11c3a5cbe6129a9a2829cb3476877abb7dfdd6af8db7528a6) + mstore(0xcf80, 0x169b225fc423075010a83129825c4000d58e1f4aa6fbc83988c4b8d5364a95fd) +mstore(0xcfa0, mload(0x9920)) +success := and(eq(staticcall(gas(), 0x7, 0xcf60, 0x60, 0xcf60, 0x40), 1), success) +mstore(0xcfc0, mload(0xcee0)) + mstore(0xcfe0, mload(0xcf00)) +mstore(0xd000, mload(0xcf60)) + mstore(0xd020, mload(0xcf80)) +success := and(eq(staticcall(gas(), 0x6, 0xcfc0, 0x80, 0xcfc0, 0x40), 1), success) +mstore(0xd040, 0x1b14bb8fadf0343507daddd04c1de87885443648b8cc6769d05f6b4f5fbfc9e9) + mstore(0xd060, 0x225f8f14be1a2486659ef1059e7d983b44f76b54e6e3ef9c9162f36d47bdb600) +mstore(0xd080, mload(0x9940)) +success := and(eq(staticcall(gas(), 0x7, 0xd040, 0x60, 0xd040, 0x40), 1), success) +mstore(0xd0a0, mload(0xcfc0)) + mstore(0xd0c0, mload(0xcfe0)) +mstore(0xd0e0, mload(0xd040)) + mstore(0xd100, mload(0xd060)) +success := and(eq(staticcall(gas(), 0x6, 0xd0a0, 0x80, 0xd0a0, 0x40), 1), success) +mstore(0xd120, 0x2aa9bb3cc26b9bd997fa7369734416e650902039d1f861d132889986842f9a99) + mstore(0xd140, 0x2917f887d7af8c81f57b8b3bb8ba304c37dd03493812f44b644177860512a8d2) +mstore(0xd160, mload(0x9960)) +success := and(eq(staticcall(gas(), 0x7, 0xd120, 0x60, 0xd120, 0x40), 1), success) +mstore(0xd180, mload(0xd0a0)) + mstore(0xd1a0, mload(0xd0c0)) +mstore(0xd1c0, mload(0xd120)) + mstore(0xd1e0, mload(0xd140)) +success := and(eq(staticcall(gas(), 0x6, 0xd180, 0x80, 0xd180, 0x40), 1), success) +mstore(0xd200, 0x143bc93996e69f90412747c4b69bc869458e5d15452a878f4bec6e1e2c38d9da) + mstore(0xd220, 0x15655d7fa7031971c4712a26eb68fa4e9665e48cb0b70a111eeb382f6cdff21b) +mstore(0xd240, mload(0x9980)) +success := and(eq(staticcall(gas(), 0x7, 0xd200, 0x60, 0xd200, 0x40), 1), success) +mstore(0xd260, mload(0xd180)) + mstore(0xd280, mload(0xd1a0)) +mstore(0xd2a0, mload(0xd200)) + mstore(0xd2c0, mload(0xd220)) +success := and(eq(staticcall(gas(), 0x6, 0xd260, 0x80, 0xd260, 0x40), 1), success) +mstore(0xd2e0, 0x10c5427c2dd73030ae7dcf068f91be28b1070042874abd2203321738306cea3a) + mstore(0xd300, 0x17cf0cedab2ae229737f6a1289232ab650f8f403d7dfda9d442d606365c978b6) +mstore(0xd320, mload(0x99a0)) +success := and(eq(staticcall(gas(), 0x7, 0xd2e0, 0x60, 0xd2e0, 0x40), 1), success) +mstore(0xd340, mload(0xd260)) + mstore(0xd360, mload(0xd280)) +mstore(0xd380, mload(0xd2e0)) + mstore(0xd3a0, mload(0xd300)) +success := and(eq(staticcall(gas(), 0x6, 0xd340, 0x80, 0xd340, 0x40), 1), success) +mstore(0xd3c0, 0x077831380b2a00e9a381df8467516b5288a049179cea3ff469d4dd3fc129ba58) + mstore(0xd3e0, 0x0bf7ba2bde203fa869af0245a58723e2564e1123195a100798c77b3ff78432c2) +mstore(0xd400, mload(0x99c0)) +success := and(eq(staticcall(gas(), 0x7, 0xd3c0, 0x60, 0xd3c0, 0x40), 1), success) +mstore(0xd420, mload(0xd340)) + mstore(0xd440, mload(0xd360)) +mstore(0xd460, mload(0xd3c0)) + mstore(0xd480, mload(0xd3e0)) +success := and(eq(staticcall(gas(), 0x6, 0xd420, 0x80, 0xd420, 0x40), 1), success) +mstore(0xd4a0, 0x26a40c9db7313bdab77200c90466a8e21ffdd3be1b781c3864d471144ab36fd1) + mstore(0xd4c0, 0x187c611dca909e58bf03e4727a75a9dc95ab44853ac233cbdf91c75fee97ec01) +mstore(0xd4e0, mload(0x99e0)) +success := and(eq(staticcall(gas(), 0x7, 0xd4a0, 0x60, 0xd4a0, 0x40), 1), success) +mstore(0xd500, mload(0xd420)) + mstore(0xd520, mload(0xd440)) +mstore(0xd540, mload(0xd4a0)) + mstore(0xd560, mload(0xd4c0)) +success := and(eq(staticcall(gas(), 0x6, 0xd500, 0x80, 0xd500, 0x40), 1), success) +mstore(0xd580, 0x2bf6f9c6cc0240e259bde4eb7d434bf74a95f6c05ae9136b79c730acd99344ed) + mstore(0xd5a0, 0x1fa1e3e13ff630d4abbb9af9fa7a962eadbbf4e3051333f1bd19fed1fe1f4977) +mstore(0xd5c0, mload(0x9a00)) +success := and(eq(staticcall(gas(), 0x7, 0xd580, 0x60, 0xd580, 0x40), 1), success) +mstore(0xd5e0, mload(0xd500)) + mstore(0xd600, mload(0xd520)) +mstore(0xd620, mload(0xd580)) + mstore(0xd640, mload(0xd5a0)) +success := and(eq(staticcall(gas(), 0x6, 0xd5e0, 0x80, 0xd5e0, 0x40), 1), success) +mstore(0xd660, 0x0fa38ab0641196b9d013c6bf0b7643d05af7f23ac7482779994f48d97531d163) + mstore(0xd680, 0x04bc64747b4ac3ee2436ed7d0d76938ccb9dd9c47db0ebd331796b99a8eb29c3) +mstore(0xd6a0, mload(0x9a20)) +success := and(eq(staticcall(gas(), 0x7, 0xd660, 0x60, 0xd660, 0x40), 1), success) +mstore(0xd6c0, mload(0xd5e0)) + mstore(0xd6e0, mload(0xd600)) +mstore(0xd700, mload(0xd660)) + mstore(0xd720, mload(0xd680)) +success := and(eq(staticcall(gas(), 0x6, 0xd6c0, 0x80, 0xd6c0, 0x40), 1), success) +mstore(0xd740, 0x23c70057f528d84619872da36427a2404f8abc62017e10cf858cfd700fe8ca74) + mstore(0xd760, 0x0e70d8f3b7c9d10b04c203e22bdd9edf4eaf8d7b0c9cda2051756e0babf72ca6) +mstore(0xd780, mload(0x9a40)) +success := and(eq(staticcall(gas(), 0x7, 0xd740, 0x60, 0xd740, 0x40), 1), success) +mstore(0xd7a0, mload(0xd6c0)) + mstore(0xd7c0, mload(0xd6e0)) +mstore(0xd7e0, mload(0xd740)) + mstore(0xd800, mload(0xd760)) +success := and(eq(staticcall(gas(), 0x6, 0xd7a0, 0x80, 0xd7a0, 0x40), 1), success) +mstore(0xd820, 0x1badd995f73c1a90cee0eccb29db1832afa27c40efc00bbcf4b09d1438bb7063) + mstore(0xd840, 0x18fb86818e520e0c451b4c129f689f996680678c6528010238ed19f67cb8bbd0) +mstore(0xd860, mload(0x9a60)) +success := and(eq(staticcall(gas(), 0x7, 0xd820, 0x60, 0xd820, 0x40), 1), success) +mstore(0xd880, mload(0xd7a0)) + mstore(0xd8a0, mload(0xd7c0)) +mstore(0xd8c0, mload(0xd820)) + mstore(0xd8e0, mload(0xd840)) +success := and(eq(staticcall(gas(), 0x6, 0xd880, 0x80, 0xd880, 0x40), 1), success) +mstore(0xd900, 0x2030352b326a1a78c487e85f5699f86dfc7278cfbffd935a769ce088d0d4f3d7) + mstore(0xd920, 0x194cb77a926a42ac8cb44cac8bd059d57d9619627816fdcb6abd1e8a58d94020) +mstore(0xd940, mload(0x9a80)) +success := and(eq(staticcall(gas(), 0x7, 0xd900, 0x60, 0xd900, 0x40), 1), success) +mstore(0xd960, mload(0xd880)) + mstore(0xd980, mload(0xd8a0)) +mstore(0xd9a0, mload(0xd900)) + mstore(0xd9c0, mload(0xd920)) +success := and(eq(staticcall(gas(), 0x6, 0xd960, 0x80, 0xd960, 0x40), 1), success) +mstore(0xd9e0, mload(0xba0)) + mstore(0xda00, mload(0xbc0)) +mstore(0xda20, mload(0x9aa0)) +success := and(eq(staticcall(gas(), 0x7, 0xd9e0, 0x60, 0xd9e0, 0x40), 1), success) +mstore(0xda40, mload(0xd960)) + mstore(0xda60, mload(0xd980)) +mstore(0xda80, mload(0xd9e0)) + mstore(0xdaa0, mload(0xda00)) +success := and(eq(staticcall(gas(), 0x6, 0xda40, 0x80, 0xda40, 0x40), 1), success) +mstore(0xdac0, mload(0xbe0)) + mstore(0xdae0, mload(0xc00)) +mstore(0xdb00, mload(0x9ac0)) +success := and(eq(staticcall(gas(), 0x7, 0xdac0, 0x60, 0xdac0, 0x40), 1), success) +mstore(0xdb20, mload(0xda40)) + mstore(0xdb40, mload(0xda60)) +mstore(0xdb60, mload(0xdac0)) + mstore(0xdb80, mload(0xdae0)) +success := and(eq(staticcall(gas(), 0x6, 0xdb20, 0x80, 0xdb20, 0x40), 1), success) +mstore(0xdba0, mload(0xc20)) + mstore(0xdbc0, mload(0xc40)) +mstore(0xdbe0, mload(0x9ae0)) +success := and(eq(staticcall(gas(), 0x7, 0xdba0, 0x60, 0xdba0, 0x40), 1), success) +mstore(0xdc00, mload(0xdb20)) + mstore(0xdc20, mload(0xdb40)) +mstore(0xdc40, mload(0xdba0)) + mstore(0xdc60, mload(0xdbc0)) +success := and(eq(staticcall(gas(), 0x6, 0xdc00, 0x80, 0xdc00, 0x40), 1), success) +mstore(0xdc80, mload(0xb00)) + mstore(0xdca0, mload(0xb20)) +mstore(0xdcc0, mload(0x9b00)) +success := and(eq(staticcall(gas(), 0x7, 0xdc80, 0x60, 0xdc80, 0x40), 1), success) +mstore(0xdce0, mload(0xdc00)) + mstore(0xdd00, mload(0xdc20)) +mstore(0xdd20, mload(0xdc80)) + mstore(0xdd40, mload(0xdca0)) +success := and(eq(staticcall(gas(), 0x6, 0xdce0, 0x80, 0xdce0, 0x40), 1), success) +mstore(0xdd60, mload(0x780)) + mstore(0xdd80, mload(0x7a0)) +mstore(0xdda0, mload(0xa100)) +success := and(eq(staticcall(gas(), 0x7, 0xdd60, 0x60, 0xdd60, 0x40), 1), success) +mstore(0xddc0, mload(0xdce0)) + mstore(0xdde0, mload(0xdd00)) +mstore(0xde00, mload(0xdd60)) + mstore(0xde20, mload(0xdd80)) +success := and(eq(staticcall(gas(), 0x6, 0xddc0, 0x80, 0xddc0, 0x40), 1), success) +mstore(0xde40, mload(0x7c0)) + mstore(0xde60, mload(0x7e0)) +mstore(0xde80, mload(0xa120)) +success := and(eq(staticcall(gas(), 0x7, 0xde40, 0x60, 0xde40, 0x40), 1), success) +mstore(0xdea0, mload(0xddc0)) + mstore(0xdec0, mload(0xdde0)) +mstore(0xdee0, mload(0xde40)) + mstore(0xdf00, mload(0xde60)) +success := and(eq(staticcall(gas(), 0x6, 0xdea0, 0x80, 0xdea0, 0x40), 1), success) +mstore(0xdf20, mload(0x800)) + mstore(0xdf40, mload(0x820)) +mstore(0xdf60, mload(0xa140)) +success := and(eq(staticcall(gas(), 0x7, 0xdf20, 0x60, 0xdf20, 0x40), 1), success) +mstore(0xdf80, mload(0xdea0)) + mstore(0xdfa0, mload(0xdec0)) +mstore(0xdfc0, mload(0xdf20)) + mstore(0xdfe0, mload(0xdf40)) +success := and(eq(staticcall(gas(), 0x6, 0xdf80, 0x80, 0xdf80, 0x40), 1), success) +mstore(0xe000, mload(0x840)) + mstore(0xe020, mload(0x860)) +mstore(0xe040, mload(0xa160)) +success := and(eq(staticcall(gas(), 0x7, 0xe000, 0x60, 0xe000, 0x40), 1), success) +mstore(0xe060, mload(0xdf80)) + mstore(0xe080, mload(0xdfa0)) +mstore(0xe0a0, mload(0xe000)) + mstore(0xe0c0, mload(0xe020)) +success := and(eq(staticcall(gas(), 0x6, 0xe060, 0x80, 0xe060, 0x40), 1), success) +mstore(0xe0e0, mload(0x880)) + mstore(0xe100, mload(0x8a0)) +mstore(0xe120, mload(0xa180)) +success := and(eq(staticcall(gas(), 0x7, 0xe0e0, 0x60, 0xe0e0, 0x40), 1), success) +mstore(0xe140, mload(0xe060)) + mstore(0xe160, mload(0xe080)) +mstore(0xe180, mload(0xe0e0)) + mstore(0xe1a0, mload(0xe100)) +success := and(eq(staticcall(gas(), 0x6, 0xe140, 0x80, 0xe140, 0x40), 1), success) +mstore(0xe1c0, mload(0x8c0)) + mstore(0xe1e0, mload(0x8e0)) +mstore(0xe200, mload(0xa1a0)) +success := and(eq(staticcall(gas(), 0x7, 0xe1c0, 0x60, 0xe1c0, 0x40), 1), success) +mstore(0xe220, mload(0xe140)) + mstore(0xe240, mload(0xe160)) +mstore(0xe260, mload(0xe1c0)) + mstore(0xe280, mload(0xe1e0)) +success := and(eq(staticcall(gas(), 0x6, 0xe220, 0x80, 0xe220, 0x40), 1), success) +mstore(0xe2a0, mload(0x900)) + mstore(0xe2c0, mload(0x920)) +mstore(0xe2e0, mload(0xa1c0)) +success := and(eq(staticcall(gas(), 0x7, 0xe2a0, 0x60, 0xe2a0, 0x40), 1), success) +mstore(0xe300, mload(0xe220)) + mstore(0xe320, mload(0xe240)) +mstore(0xe340, mload(0xe2a0)) + mstore(0xe360, mload(0xe2c0)) +success := and(eq(staticcall(gas(), 0x6, 0xe300, 0x80, 0xe300, 0x40), 1), success) +mstore(0xe380, mload(0x940)) + mstore(0xe3a0, mload(0x960)) +mstore(0xe3c0, mload(0xa1e0)) +success := and(eq(staticcall(gas(), 0x7, 0xe380, 0x60, 0xe380, 0x40), 1), success) +mstore(0xe3e0, mload(0xe300)) + mstore(0xe400, mload(0xe320)) +mstore(0xe420, mload(0xe380)) + mstore(0xe440, mload(0xe3a0)) +success := and(eq(staticcall(gas(), 0x6, 0xe3e0, 0x80, 0xe3e0, 0x40), 1), success) +mstore(0xe460, mload(0x980)) + mstore(0xe480, mload(0x9a0)) +mstore(0xe4a0, mload(0xa200)) +success := and(eq(staticcall(gas(), 0x7, 0xe460, 0x60, 0xe460, 0x40), 1), success) +mstore(0xe4c0, mload(0xe3e0)) + mstore(0xe4e0, mload(0xe400)) +mstore(0xe500, mload(0xe460)) + mstore(0xe520, mload(0xe480)) +success := and(eq(staticcall(gas(), 0x6, 0xe4c0, 0x80, 0xe4c0, 0x40), 1), success) +mstore(0xe540, mload(0x9c0)) + mstore(0xe560, mload(0x9e0)) +mstore(0xe580, mload(0xa580)) +success := and(eq(staticcall(gas(), 0x7, 0xe540, 0x60, 0xe540, 0x40), 1), success) +mstore(0xe5a0, mload(0xe4c0)) + mstore(0xe5c0, mload(0xe4e0)) +mstore(0xe5e0, mload(0xe540)) + mstore(0xe600, mload(0xe560)) +success := and(eq(staticcall(gas(), 0x6, 0xe5a0, 0x80, 0xe5a0, 0x40), 1), success) +mstore(0xe620, mload(0xa00)) + mstore(0xe640, mload(0xa20)) +mstore(0xe660, mload(0xa5a0)) +success := and(eq(staticcall(gas(), 0x7, 0xe620, 0x60, 0xe620, 0x40), 1), success) +mstore(0xe680, mload(0xe5a0)) + mstore(0xe6a0, mload(0xe5c0)) +mstore(0xe6c0, mload(0xe620)) + mstore(0xe6e0, mload(0xe640)) +success := and(eq(staticcall(gas(), 0x6, 0xe680, 0x80, 0xe680, 0x40), 1), success) +mstore(0xe700, mload(0xa40)) + mstore(0xe720, mload(0xa60)) +mstore(0xe740, mload(0xa5c0)) +success := and(eq(staticcall(gas(), 0x7, 0xe700, 0x60, 0xe700, 0x40), 1), success) +mstore(0xe760, mload(0xe680)) + mstore(0xe780, mload(0xe6a0)) +mstore(0xe7a0, mload(0xe700)) + mstore(0xe7c0, mload(0xe720)) +success := and(eq(staticcall(gas(), 0x6, 0xe760, 0x80, 0xe760, 0x40), 1), success) +mstore(0xe7e0, mload(0xa80)) + mstore(0xe800, mload(0xaa0)) +mstore(0xe820, mload(0xa5e0)) +success := and(eq(staticcall(gas(), 0x7, 0xe7e0, 0x60, 0xe7e0, 0x40), 1), success) +mstore(0xe840, mload(0xe760)) + mstore(0xe860, mload(0xe780)) +mstore(0xe880, mload(0xe7e0)) + mstore(0xe8a0, mload(0xe800)) +success := and(eq(staticcall(gas(), 0x6, 0xe840, 0x80, 0xe840, 0x40), 1), success) +mstore(0xe8c0, mload(0xac0)) + mstore(0xe8e0, mload(0xae0)) +mstore(0xe900, mload(0xa600)) +success := and(eq(staticcall(gas(), 0x7, 0xe8c0, 0x60, 0xe8c0, 0x40), 1), success) +mstore(0xe920, mload(0xe840)) + mstore(0xe940, mload(0xe860)) +mstore(0xe960, mload(0xe8c0)) + mstore(0xe980, mload(0xe8e0)) +success := and(eq(staticcall(gas(), 0x6, 0xe920, 0x80, 0xe920, 0x40), 1), success) +mstore(0xe9a0, mload(0x4c0)) + mstore(0xe9c0, mload(0x4e0)) +mstore(0xe9e0, mload(0xa8e0)) +success := and(eq(staticcall(gas(), 0x7, 0xe9a0, 0x60, 0xe9a0, 0x40), 1), success) +mstore(0xea00, mload(0xe920)) + mstore(0xea20, mload(0xe940)) +mstore(0xea40, mload(0xe9a0)) + mstore(0xea60, mload(0xe9c0)) +success := and(eq(staticcall(gas(), 0x6, 0xea00, 0x80, 0xea00, 0x40), 1), success) +mstore(0xea80, mload(0x540)) + mstore(0xeaa0, mload(0x560)) +mstore(0xeac0, mload(0xa900)) +success := and(eq(staticcall(gas(), 0x7, 0xea80, 0x60, 0xea80, 0x40), 1), success) +mstore(0xeae0, mload(0xea00)) + mstore(0xeb00, mload(0xea20)) +mstore(0xeb20, mload(0xea80)) + mstore(0xeb40, mload(0xeaa0)) +success := and(eq(staticcall(gas(), 0x6, 0xeae0, 0x80, 0xeae0, 0x40), 1), success) +mstore(0xeb60, mload(0x5c0)) + mstore(0xeb80, mload(0x5e0)) +mstore(0xeba0, mload(0xa920)) +success := and(eq(staticcall(gas(), 0x7, 0xeb60, 0x60, 0xeb60, 0x40), 1), success) +mstore(0xebc0, mload(0xeae0)) + mstore(0xebe0, mload(0xeb00)) +mstore(0xec00, mload(0xeb60)) + mstore(0xec20, mload(0xeb80)) +success := and(eq(staticcall(gas(), 0x6, 0xebc0, 0x80, 0xebc0, 0x40), 1), success) +mstore(0xec40, mload(0x640)) + mstore(0xec60, mload(0x660)) +mstore(0xec80, mload(0xa940)) +success := and(eq(staticcall(gas(), 0x7, 0xec40, 0x60, 0xec40, 0x40), 1), success) +mstore(0xeca0, mload(0xebc0)) + mstore(0xecc0, mload(0xebe0)) +mstore(0xece0, mload(0xec40)) + mstore(0xed00, mload(0xec60)) +success := and(eq(staticcall(gas(), 0x6, 0xeca0, 0x80, 0xeca0, 0x40), 1), success) +mstore(0xed20, mload(0x1e40)) + mstore(0xed40, mload(0x1e60)) +mstore(0xed60, sub(f_q, mload(0xa980))) +success := and(eq(staticcall(gas(), 0x7, 0xed20, 0x60, 0xed20, 0x40), 1), success) +mstore(0xed80, mload(0xeca0)) + mstore(0xeda0, mload(0xecc0)) +mstore(0xedc0, mload(0xed20)) + mstore(0xede0, mload(0xed40)) +success := and(eq(staticcall(gas(), 0x6, 0xed80, 0x80, 0xed80, 0x40), 1), success) +mstore(0xee00, mload(0x1ee0)) + mstore(0xee20, mload(0x1f00)) +mstore(0xee40, mload(0xa9a0)) +success := and(eq(staticcall(gas(), 0x7, 0xee00, 0x60, 0xee00, 0x40), 1), success) +mstore(0xee60, mload(0xed80)) + mstore(0xee80, mload(0xeda0)) +mstore(0xeea0, mload(0xee00)) + mstore(0xeec0, mload(0xee20)) +success := and(eq(staticcall(gas(), 0x6, 0xee60, 0x80, 0xee60, 0x40), 1), success) +mstore(0xeee0, mload(0xee60)) + mstore(0xef00, mload(0xee80)) +mstore(0xef20, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0xef40, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0xef60, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0xef80, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0xefa0, mload(0x1ee0)) + mstore(0xefc0, mload(0x1f00)) +mstore(0xefe0, 0x0181624e80f3d6ae28df7e01eaeab1c0e919877a3b8a6b7fbc69a6817d596ea2) + mstore(0xf000, 0x1783d30dcb12d259bb89098addf6280fa4b653be7a152542a28f7b926e27e648) + mstore(0xf020, 0x00ae44489d41a0d179e2dfdc03bddd883b7109f8b6ae316a59e815c1a6b35304) + mstore(0xf040, 0x0b2147ab62a386bd63e6de1522109b8c9588ab466f5aadfde8c41ca3749423ee) +success := and(eq(staticcall(gas(), 0x8, 0xeee0, 0x180, 0xeee0, 0x20), 1), success) +success := and(eq(mload(0xeee0), 1), success) + + if not(success) { revert(0, 0) } + return(0, 0) + + } + } + } \ No newline at end of file diff --git a/justfile b/justfile index d73d0bf8..a49858bf 100644 --- a/justfile +++ b/justfile @@ -7,8 +7,8 @@ check: lint: fmt cargo clippy --all-targets --all-features --workspace setup-circuits: - cargo run -r -- sync-step -o artifacts - cargo run -r -- committee-update -o artifacts + cargo run -r -- sync-step -o artifacts -k 22 + cargo run -r -- committee-update -o artifacts -k 18 gen-evm-contracts: - cargo run -r -- sync-step -o evm-verifier ./contracts/snark-verifiers/sync_step.yul - # cargo run -r -- committee-update -o evm-verifier ./contracts/snark-verifiers/committee_update.yul + cargo run -r -- sync-step -c ./lightclient-circuits/config/sync_step.json -o evm-verifier ./contracts/snark-verifiers/sync_step.yul + # cargo run -r -- sync-step -c ./lightclient-circuits/config/committee_update.json -o evm-verifier ./contracts/snark-verifiers/committee_update.yul diff --git a/lightclient-circuits/config/sync_step.json b/lightclient-circuits/config/sync_step.json index 0054bb44..5f8306f7 100644 --- a/lightclient-circuits/config/sync_step.json +++ b/lightclient-circuits/config/sync_step.json @@ -1 +1,33 @@ -{ "strategy": "Vertical", "k": 20, "num_advice_per_phase": [14, 0, 0], "num_lookup_advice_per_phase": [2, 0, 0], "num_fixed": 1 } +{ + "params": { + "strategy": "Vertical", + "k": 21, + "num_advice_per_phase": [ + 11, + 0, + 0 + ], + "num_lookup_advice_per_phase": [ + 2, + 0, + 0 + ], + "num_fixed": 1 + }, + "break_points": [ + [ + 2097141, + 2097141, + 2097142, + 2097140, + 2097142, + 2097142, + 2097140, + 2097140, + 2097141, + 2097140 + ], + [], + [] + ] +} \ No newline at end of file diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 1c4e705c..5d3fcbda 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -30,7 +30,7 @@ use halo2_base::{ gates::{ builder::{ FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, - RangeCircuitBuilder, + RangeCircuitBuilder, CircuitBuilderStage, }, flex_gate::GateStrategy, range::{RangeConfig, RangeStrategy}, @@ -49,7 +49,7 @@ use halo2_proofs::{ circuit::{Layouter, Region, SimpleFloorPlanner, Value}, dev::MockProver, plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, - poly::kzg::commitment::ParamsKZG, + poly::{kzg::commitment::ParamsKZG, commitment::Params}, }; use halo2curves::{ bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, @@ -189,7 +189,7 @@ impl AppCircuit for CommitteeUpdateCircuit { type Args = witness::CommitteeRotationArgs; fn create_circuit( - stage: halo2_base::gates::builder::CircuitBuilderStage, + stage: CircuitBuilderStage, pinning: Option, params: &ParamsKZG, args: &witness::CommitteeRotationArgs, @@ -199,6 +199,16 @@ impl AppCircuit for CommitteeUpdateCircuit { let assigned_instances = Self::synthesize(&mut thread_pool, &range, args)?; + match stage { + CircuitBuilderStage::Prover => {} + _ => { + thread_pool.config( + params.k() as usize, + Some(var("MINIMUM_ROWS").unwrap_or_else(|_| "0".to_string()).parse().unwrap()), + ); + } + } + Ok(Eth2CircuitBuilder::from_stage( assigned_instances, thread_pool, diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index f10b4bfa..43577a0f 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -31,7 +31,7 @@ use halo2_base::{ gates::{ builder::{ FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, - RangeCircuitBuilder, + RangeCircuitBuilder, CircuitBuilderStage, }, flex_gate::GateStrategy, range::{RangeConfig, RangeStrategy}, @@ -229,7 +229,7 @@ impl SyncStepCircuit { bytes_compressed: &[u8], ) -> EcPoint> { let sig_affine = - G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).unwrap(); + G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).expect("correct signature"); g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) } @@ -298,7 +298,7 @@ impl AppCircuit for SyncStepCircuit { type Args = witness::SyncStepArgs; fn create_circuit( - stage: halo2_base::gates::builder::CircuitBuilderStage, + stage: CircuitBuilderStage, pinning: Option, params: &ParamsKZG, args: &Self::Args, @@ -308,6 +308,16 @@ impl AppCircuit for SyncStepCircuit { let assigned_instances = Self::synthesize(&mut thread_pool, &range, args)?; + match stage { + CircuitBuilderStage::Prover => {} + _ => { + thread_pool.config( + params.k() as usize, + Some(var("MINIMUM_ROWS").unwrap_or_else(|_| "0".to_string()).parse().unwrap()), + ); + } + } + Ok(Eth2CircuitBuilder::from_stage( assigned_instances, thread_pool, diff --git a/lightclient-circuits/src/util/circuit.rs b/lightclient-circuits/src/util/circuit.rs index decdfe2d..f73b1cc4 100644 --- a/lightclient-circuits/src/util/circuit.rs +++ b/lightclient-circuits/src/util/circuit.rs @@ -4,7 +4,7 @@ use std::{fs::File, path::Path}; use halo2_base::gates::builder::{ CircuitBuilderStage, FlexGateConfigParams, MultiPhaseThreadBreakPoints, }; -use halo2_proofs::plonk::{Error, VerifyingKey}; +use halo2_proofs::plonk::{Error, VerifyingKey, Circuit}; use halo2_proofs::{plonk::ProvingKey, poly::kzg::commitment::ParamsKZG}; use halo2curves::bn256::{Bn256, Fr, G1Affine}; use serde::{Deserialize, Serialize}; @@ -102,13 +102,8 @@ pub trait AppCircuit: Sized { /// Reads the proving key for the pre-circuit. /// If `read_only` is true, then it is assumed that the proving key exists and can be read from `path` (otherwise the program will panic). fn read_pk(params: &ParamsKZG, path: impl AsRef) -> ProvingKey { - let circuit = Self::create_circuit( - CircuitBuilderStage::Keygen, - None, - params, - &Self::Args::default(), - ); - todo!() + let circuit = Self::create_circuit(CircuitBuilderStage::Keygen, None, params, &Self::Args::default()).unwrap(); + custom_read_pk(path, &circuit) } /// Creates the proving key for the pre-circuit if file at `pk_path` is not found. @@ -125,6 +120,7 @@ pub trait AppCircuit: Sized { &Self::Args::default(), ) .unwrap(); + let pk_exists = pk_path.as_ref().exists(); let pk = gen_pk(params, &circuit, Some(pk_path.as_ref())); if !pk_exists { @@ -236,3 +232,11 @@ pub fn write_calldata_generic>( } calldata } + +fn custom_read_pk(fname: P, _: &C) -> ProvingKey +where + C: Circuit, + P: AsRef, +{ + read_pk::(fname.as_ref()).expect("proving key should exist") +} diff --git a/preprocessor/Cargo.toml b/preprocessor/Cargo.toml index 7238aa93..f96ee2ce 100644 --- a/preprocessor/Cargo.toml +++ b/preprocessor/Cargo.toml @@ -21,6 +21,7 @@ log = "=0.4.20" eyre = "0.6" tokio = { version = "1", features = ["full"]} itertools = "0.11.0" +serde_json = "1.0.78" # tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread"] } # local diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs index 0821e6e8..b0393f51 100644 --- a/preprocessor/src/lib.rs +++ b/preprocessor/src/lib.rs @@ -12,6 +12,7 @@ use lightclient_circuits::{ use ssz_rs::Merkleized; use sync_committee_primitives::{consensus_types::BeaconBlockHeader, util::compute_domain}; use sync_committee_prover::SyncCommitteeProver; +use tokio::fs; pub async fn fetch_step_args(node_url: String) -> eyre::Result> { let client = SyncCommitteeProver::new(node_url); @@ -24,6 +25,7 @@ pub async fn fetch_step_args(node_url: String) -> eyre::Result(node_url: String) -> eyre::Result { - signature_compressed: vec![], + signature_compressed, pubkeys_uncompressed, - pariticipation_bits: vec![], + pariticipation_bits: beacon_block + .body + .sync_aggregate + .sync_committee_bits + .iter() + .by_vals() + .take(S::SYNC_COMMITTEE_SIZE) + .collect_vec(), attested_header: BeaconBlockHeader { slot: beacon_block.slot, proposer_index: beacon_block.proposer_index, @@ -97,6 +115,7 @@ pub async fn fetch_rotation_args( .current_sync_committee .public_keys .iter() + .take(S::SYNC_COMMITTEE_SIZE) .map(|pk| pk.to_vec()) .collect_vec(); @@ -109,10 +128,28 @@ pub async fn fetch_rotation_args( Ok(args) } -// #[tokio::test] -// async fn fetch_step_args() { -// let client = BeaconClient::new("http://localhost:80"); -// let args = client.fetch_step_args::().await.unwrap(); +pub async fn read_step_args(path: String) -> eyre::Result> { + serde_json::from_slice( + &fs::read(path) + .await + .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, + ) + .map_err(|e| eyre::eyre!("Errror decoding witness {}", e)) +} -// println!("{:x?}", args); -// } +pub async fn read_rotation_args( + path: String, +) -> eyre::Result> { + let pubkeys_compressed = serde_json::from_slice( + &fs::read(path) + .await + .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, + ) + .map_err(|e| eyre::eyre!("Errror decoding witness {}", e))?; + + Ok(CommitteeRotationArgs:: { + pubkeys_compressed, + randomness: crypto::constant_randomness(), + _spec: PhantomData, + }) +} diff --git a/prover/src/args.rs b/prover/src/args.rs index 8aa1172c..bd787f35 100644 --- a/prover/src/args.rs +++ b/prover/src/args.rs @@ -22,6 +22,9 @@ pub struct Args { #[clap(long, short, default_value = "proof")] pub out: Out, + #[clap(long, short)] + pub k: Option, + #[clap( long, short, @@ -32,14 +35,14 @@ pub struct Args { #[clap(long, short, default_value = "./build")] pub build_dir: PathBuf, - #[clap(long, short, default_value = "./sync_state.json")] - pub input_path: PathBuf, + #[clap(long, short)] + pub input_path: Option, + + #[clap(long, short, help = "Beacon node URL", default_value = "http://localhost::5052")] + pub node_url: String, #[clap(index = 1, help = "path to output", default_value = ".")] pub path_out: PathBuf, - - #[clap(index = 1, help = "Beacon node URL", default_value = "http://localhost::5052")] - pub node_url: String, } diff --git a/prover/src/main.rs b/prover/src/main.rs index 6f7984dd..03e5067b 100644 --- a/prover/src/main.rs +++ b/prover/src/main.rs @@ -35,12 +35,8 @@ async fn spec_app(proof: &Proof) -> eyre::Result<()> { .await } Proof::SyncStep(args) => { - generic_circuit_app::, _, _>( - args, - fetch_step_args, - "sync_step", - ) - .await + generic_circuit_app::, _, _>(args, fetch_step_args, "sync_step") + .await } } } @@ -54,7 +50,9 @@ async fn generic_circuit_app< fetch: FnFetch, name: &str, ) -> eyre::Result<()> { - let k = Circuit::get_degree(&cli_args.config_path); + let k = cli_args + .k + .unwrap_or_else(|| Circuit::get_degree(&cli_args.config_path)); let params = gen_srs(k); let pk_filename = format!("{}.pkey", name); @@ -102,7 +100,7 @@ async fn generic_circuit_app< ); let witness = fetch(cli_args.node_url.clone()).await?; - Circuit::gen_calldata( + let calldata = Circuit::gen_calldata( ¶ms, &pk, &cli_args.config_path, @@ -111,6 +109,8 @@ async fn generic_circuit_app< &witness, ) .map_err(|e| eyre::eyre!("Failed to generate calldata: {}", e))?; + + println!("{}", calldata) } } Ok(()) From 335ce15426edd05d84a23f10224414930b06a067 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 20 Sep 2023 01:02:01 +0200 Subject: [PATCH 23/33] add aggregation prover to CLI --- Cargo.toml | 1 - .../committee_update_compressed.yul | 32954 ++++++++++++++++ justfile | 4 +- lightclient-circuits/config/aggregation.json | 267 + .../config/committee_update.json | 34 +- .../config/committee_update_aggregation.json | 7 - lightclient-circuits/src/aggregation.rs | 58 + .../src/committee_update_circuit.rs | 72 +- lightclient-circuits/src/lib.rs | 1 + lightclient-circuits/src/sync_step_circuit.rs | 4 +- lightclient-circuits/src/util/circuit.rs | 49 +- prover/src/args.rs | 19 +- prover/src/main.rs | 132 +- rotation-aggr.calldata | 1 + 14 files changed, 33477 insertions(+), 126 deletions(-) create mode 100644 contracts/snark-verifiers/committee_update_compressed.yul create mode 100644 lightclient-circuits/config/aggregation.json delete mode 100644 lightclient-circuits/config/committee_update_aggregation.json create mode 100644 lightclient-circuits/src/aggregation.rs create mode 100644 rotation-aggr.calldata diff --git a/Cargo.toml b/Cargo.toml index 1370ed8d..000599d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,6 @@ poseidon = { git = "https://github.com/timoftime/halo2-lib", rev = "d3455345c40f snark-verifier = { git = "https://github.com/timoftime/snark-verifier", branch = "timoftime/bump-revm", default-features = false } snark-verifier-sdk = { git = "https://github.com/timoftime/snark-verifier", branch = "timoftime/bump-revm", default-features = false } - # [patch."https://github.com/timoftime/halo2curves"] # halo2curves = { path = "../halo2curves" } diff --git a/contracts/snark-verifiers/committee_update_compressed.yul b/contracts/snark-verifiers/committee_update_compressed.yul new file mode 100644 index 00000000..81621cdb --- /dev/null +++ b/contracts/snark-verifiers/committee_update_compressed.yul @@ -0,0 +1,32954 @@ + + object "plonk_verifier" { + code { + function allocate(size) -> ptr { + ptr := mload(0x40) + if eq(ptr, 0) { ptr := 0x60 } + mstore(0x40, add(ptr, size)) + } + let size := datasize("Runtime") + let offset := allocate(size) + datacopy(offset, dataoffset("Runtime"), size) + return(offset, size) + } + object "Runtime" { + code { + let success:bool := true + let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 + let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 + function validate_ec_point(x, y) -> valid:bool { + { + let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + valid := and(x_lt_p, y_lt_p) + } + { + let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) + let is_affine:bool := eq(x_cube_plus_3, y_square) + valid := and(valid, is_affine) + } + } + mstore(0x20, mod(calldataload(0x0), f_q)) +mstore(0x40, mod(calldataload(0x20), f_q)) +mstore(0x60, mod(calldataload(0x40), f_q)) +mstore(0x80, mod(calldataload(0x60), f_q)) +mstore(0xa0, mod(calldataload(0x80), f_q)) +mstore(0xc0, mod(calldataload(0xa0), f_q)) +mstore(0xe0, mod(calldataload(0xc0), f_q)) +mstore(0x100, mod(calldataload(0xe0), f_q)) +mstore(0x120, mod(calldataload(0x100), f_q)) +mstore(0x140, mod(calldataload(0x120), f_q)) +mstore(0x160, mod(calldataload(0x140), f_q)) +mstore(0x180, mod(calldataload(0x160), f_q)) +mstore(0x0, 16854692153686961548964696146258348979439591692413534541071885849471081869064) + + { + let x := calldataload(0x180) + mstore(0x1a0, x) + let y := calldataload(0x1a0) + mstore(0x1c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1c0) + mstore(0x1e0, x) + let y := calldataload(0x1e0) + mstore(0x200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x200) + mstore(0x220, x) + let y := calldataload(0x220) + mstore(0x240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x240) + mstore(0x260, x) + let y := calldataload(0x260) + mstore(0x280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x280) + mstore(0x2a0, x) + let y := calldataload(0x2a0) + mstore(0x2c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2c0) + mstore(0x2e0, x) + let y := calldataload(0x2e0) + mstore(0x300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x300) + mstore(0x320, x) + let y := calldataload(0x320) + mstore(0x340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x340) + mstore(0x360, x) + let y := calldataload(0x360) + mstore(0x380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x380) + mstore(0x3a0, x) + let y := calldataload(0x3a0) + mstore(0x3c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3c0) + mstore(0x3e0, x) + let y := calldataload(0x3e0) + mstore(0x400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x400) + mstore(0x420, x) + let y := calldataload(0x420) + mstore(0x440, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x440) + mstore(0x460, x) + let y := calldataload(0x460) + mstore(0x480, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x480) + mstore(0x4a0, x) + let y := calldataload(0x4a0) + mstore(0x4c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4c0) + mstore(0x4e0, x) + let y := calldataload(0x4e0) + mstore(0x500, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x500) + mstore(0x520, x) + let y := calldataload(0x520) + mstore(0x540, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x540) + mstore(0x560, x) + let y := calldataload(0x560) + mstore(0x580, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x580) + mstore(0x5a0, x) + let y := calldataload(0x5a0) + mstore(0x5c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5c0) + mstore(0x5e0, x) + let y := calldataload(0x5e0) + mstore(0x600, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x600) + mstore(0x620, x) + let y := calldataload(0x620) + mstore(0x640, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x640) + mstore(0x660, x) + let y := calldataload(0x660) + mstore(0x680, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x680) + mstore(0x6a0, x) + let y := calldataload(0x6a0) + mstore(0x6c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6c0) + mstore(0x6e0, x) + let y := calldataload(0x6e0) + mstore(0x700, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x700) + mstore(0x720, x) + let y := calldataload(0x720) + mstore(0x740, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x740) + mstore(0x760, x) + let y := calldataload(0x760) + mstore(0x780, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x780) + mstore(0x7a0, x) + let y := calldataload(0x7a0) + mstore(0x7c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7c0) + mstore(0x7e0, x) + let y := calldataload(0x7e0) + mstore(0x800, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x800) + mstore(0x820, x) + let y := calldataload(0x820) + mstore(0x840, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x840) + mstore(0x860, x) + let y := calldataload(0x860) + mstore(0x880, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x880) + mstore(0x8a0, x) + let y := calldataload(0x8a0) + mstore(0x8c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x8c0) + mstore(0x8e0, x) + let y := calldataload(0x8e0) + mstore(0x900, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x900) + mstore(0x920, x) + let y := calldataload(0x920) + mstore(0x940, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x940) + mstore(0x960, x) + let y := calldataload(0x960) + mstore(0x980, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x980) + mstore(0x9a0, x) + let y := calldataload(0x9a0) + mstore(0x9c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x9c0) + mstore(0x9e0, x) + let y := calldataload(0x9e0) + mstore(0xa00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xa00) + mstore(0xa20, x) + let y := calldataload(0xa20) + mstore(0xa40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xa40) + mstore(0xa60, x) + let y := calldataload(0xa60) + mstore(0xa80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xa80) + mstore(0xaa0, x) + let y := calldataload(0xaa0) + mstore(0xac0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xac0) + mstore(0xae0, x) + let y := calldataload(0xae0) + mstore(0xb00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xb00) + mstore(0xb20, x) + let y := calldataload(0xb20) + mstore(0xb40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xb40) + mstore(0xb60, x) + let y := calldataload(0xb60) + mstore(0xb80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xb80) + mstore(0xba0, x) + let y := calldataload(0xba0) + mstore(0xbc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xbc0) + mstore(0xbe0, x) + let y := calldataload(0xbe0) + mstore(0xc00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xc00) + mstore(0xc20, x) + let y := calldataload(0xc20) + mstore(0xc40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xc40) + mstore(0xc60, x) + let y := calldataload(0xc60) + mstore(0xc80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xc80) + mstore(0xca0, x) + let y := calldataload(0xca0) + mstore(0xcc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xcc0) + mstore(0xce0, x) + let y := calldataload(0xce0) + mstore(0xd00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xd00) + mstore(0xd20, x) + let y := calldataload(0xd20) + mstore(0xd40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xd40) + mstore(0xd60, x) + let y := calldataload(0xd60) + mstore(0xd80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xd80) + mstore(0xda0, x) + let y := calldataload(0xda0) + mstore(0xdc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xdc0) + mstore(0xde0, x) + let y := calldataload(0xde0) + mstore(0xe00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xe00) + mstore(0xe20, x) + let y := calldataload(0xe20) + mstore(0xe40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xe40) + mstore(0xe60, x) + let y := calldataload(0xe60) + mstore(0xe80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xe80) + mstore(0xea0, x) + let y := calldataload(0xea0) + mstore(0xec0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xec0) + mstore(0xee0, x) + let y := calldataload(0xee0) + mstore(0xf00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xf00) + mstore(0xf20, x) + let y := calldataload(0xf20) + mstore(0xf40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xf40) + mstore(0xf60, x) + let y := calldataload(0xf60) + mstore(0xf80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xf80) + mstore(0xfa0, x) + let y := calldataload(0xfa0) + mstore(0xfc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0xfc0) + mstore(0xfe0, x) + let y := calldataload(0xfe0) + mstore(0x1000, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1000) + mstore(0x1020, x) + let y := calldataload(0x1020) + mstore(0x1040, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1040) + mstore(0x1060, x) + let y := calldataload(0x1060) + mstore(0x1080, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1080) + mstore(0x10a0, x) + let y := calldataload(0x10a0) + mstore(0x10c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x10c0) + mstore(0x10e0, x) + let y := calldataload(0x10e0) + mstore(0x1100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1100) + mstore(0x1120, x) + let y := calldataload(0x1120) + mstore(0x1140, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1140) + mstore(0x1160, x) + let y := calldataload(0x1160) + mstore(0x1180, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1180) + mstore(0x11a0, x) + let y := calldataload(0x11a0) + mstore(0x11c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x11c0) + mstore(0x11e0, x) + let y := calldataload(0x11e0) + mstore(0x1200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1200) + mstore(0x1220, x) + let y := calldataload(0x1220) + mstore(0x1240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1240) + mstore(0x1260, x) + let y := calldataload(0x1260) + mstore(0x1280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1280) + mstore(0x12a0, x) + let y := calldataload(0x12a0) + mstore(0x12c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x12c0) + mstore(0x12e0, x) + let y := calldataload(0x12e0) + mstore(0x1300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1300) + mstore(0x1320, x) + let y := calldataload(0x1320) + mstore(0x1340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1340) + mstore(0x1360, x) + let y := calldataload(0x1360) + mstore(0x1380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1380) + mstore(0x13a0, x) + let y := calldataload(0x13a0) + mstore(0x13c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x13c0) + mstore(0x13e0, x) + let y := calldataload(0x13e0) + mstore(0x1400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1400) + mstore(0x1420, x) + let y := calldataload(0x1420) + mstore(0x1440, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1440) + mstore(0x1460, x) + let y := calldataload(0x1460) + mstore(0x1480, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1480) + mstore(0x14a0, x) + let y := calldataload(0x14a0) + mstore(0x14c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x14c0) + mstore(0x14e0, x) + let y := calldataload(0x14e0) + mstore(0x1500, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1500) + mstore(0x1520, x) + let y := calldataload(0x1520) + mstore(0x1540, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1540) + mstore(0x1560, x) + let y := calldataload(0x1560) + mstore(0x1580, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1580) + mstore(0x15a0, x) + let y := calldataload(0x15a0) + mstore(0x15c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x15c0) + mstore(0x15e0, x) + let y := calldataload(0x15e0) + mstore(0x1600, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1600) + mstore(0x1620, x) + let y := calldataload(0x1620) + mstore(0x1640, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1640) + mstore(0x1660, x) + let y := calldataload(0x1660) + mstore(0x1680, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1680) + mstore(0x16a0, x) + let y := calldataload(0x16a0) + mstore(0x16c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x16c0) + mstore(0x16e0, x) + let y := calldataload(0x16e0) + mstore(0x1700, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1700) + mstore(0x1720, x) + let y := calldataload(0x1720) + mstore(0x1740, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1740) + mstore(0x1760, x) + let y := calldataload(0x1760) + mstore(0x1780, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1780) + mstore(0x17a0, x) + let y := calldataload(0x17a0) + mstore(0x17c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x17c0) + mstore(0x17e0, x) + let y := calldataload(0x17e0) + mstore(0x1800, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1800) + mstore(0x1820, x) + let y := calldataload(0x1820) + mstore(0x1840, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1840) + mstore(0x1860, x) + let y := calldataload(0x1860) + mstore(0x1880, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1880) + mstore(0x18a0, x) + let y := calldataload(0x18a0) + mstore(0x18c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x18c0) + mstore(0x18e0, x) + let y := calldataload(0x18e0) + mstore(0x1900, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1900) + mstore(0x1920, x) + let y := calldataload(0x1920) + mstore(0x1940, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1940) + mstore(0x1960, x) + let y := calldataload(0x1960) + mstore(0x1980, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1980) + mstore(0x19a0, x) + let y := calldataload(0x19a0) + mstore(0x19c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x19c0) + mstore(0x19e0, x) + let y := calldataload(0x19e0) + mstore(0x1a00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1a00) + mstore(0x1a20, x) + let y := calldataload(0x1a20) + mstore(0x1a40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1a40) + mstore(0x1a60, x) + let y := calldataload(0x1a60) + mstore(0x1a80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1a80) + mstore(0x1aa0, x) + let y := calldataload(0x1aa0) + mstore(0x1ac0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1ac0) + mstore(0x1ae0, x) + let y := calldataload(0x1ae0) + mstore(0x1b00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1b00) + mstore(0x1b20, x) + let y := calldataload(0x1b20) + mstore(0x1b40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1b40) + mstore(0x1b60, x) + let y := calldataload(0x1b60) + mstore(0x1b80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1b80) + mstore(0x1ba0, x) + let y := calldataload(0x1ba0) + mstore(0x1bc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1bc0) + mstore(0x1be0, x) + let y := calldataload(0x1be0) + mstore(0x1c00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1c00) + mstore(0x1c20, x) + let y := calldataload(0x1c20) + mstore(0x1c40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1c40) + mstore(0x1c60, x) + let y := calldataload(0x1c60) + mstore(0x1c80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1c80) + mstore(0x1ca0, x) + let y := calldataload(0x1ca0) + mstore(0x1cc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1cc0) + mstore(0x1ce0, x) + let y := calldataload(0x1ce0) + mstore(0x1d00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1d00) + mstore(0x1d20, x) + let y := calldataload(0x1d20) + mstore(0x1d40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1d40) + mstore(0x1d60, x) + let y := calldataload(0x1d60) + mstore(0x1d80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1d80) + mstore(0x1da0, x) + let y := calldataload(0x1da0) + mstore(0x1dc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1dc0) + mstore(0x1de0, x) + let y := calldataload(0x1de0) + mstore(0x1e00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1e00) + mstore(0x1e20, x) + let y := calldataload(0x1e20) + mstore(0x1e40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1e40) + mstore(0x1e60, x) + let y := calldataload(0x1e60) + mstore(0x1e80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1e80) + mstore(0x1ea0, x) + let y := calldataload(0x1ea0) + mstore(0x1ec0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1ec0) + mstore(0x1ee0, x) + let y := calldataload(0x1ee0) + mstore(0x1f00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1f00) + mstore(0x1f20, x) + let y := calldataload(0x1f20) + mstore(0x1f40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1f40) + mstore(0x1f60, x) + let y := calldataload(0x1f60) + mstore(0x1f80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1f80) + mstore(0x1fa0, x) + let y := calldataload(0x1fa0) + mstore(0x1fc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x1fc0) + mstore(0x1fe0, x) + let y := calldataload(0x1fe0) + mstore(0x2000, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2000) + mstore(0x2020, x) + let y := calldataload(0x2020) + mstore(0x2040, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2040) + mstore(0x2060, x) + let y := calldataload(0x2060) + mstore(0x2080, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2080) + mstore(0x20a0, x) + let y := calldataload(0x20a0) + mstore(0x20c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x20c0) + mstore(0x20e0, x) + let y := calldataload(0x20e0) + mstore(0x2100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2100) + mstore(0x2120, x) + let y := calldataload(0x2120) + mstore(0x2140, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2140) + mstore(0x2160, x) + let y := calldataload(0x2160) + mstore(0x2180, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2180) + mstore(0x21a0, x) + let y := calldataload(0x21a0) + mstore(0x21c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x21c0) + mstore(0x21e0, x) + let y := calldataload(0x21e0) + mstore(0x2200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2200) + mstore(0x2220, x) + let y := calldataload(0x2220) + mstore(0x2240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2240) + mstore(0x2260, x) + let y := calldataload(0x2260) + mstore(0x2280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2280) + mstore(0x22a0, x) + let y := calldataload(0x22a0) + mstore(0x22c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x22c0) + mstore(0x22e0, x) + let y := calldataload(0x22e0) + mstore(0x2300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2300) + mstore(0x2320, x) + let y := calldataload(0x2320) + mstore(0x2340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2340) + mstore(0x2360, x) + let y := calldataload(0x2360) + mstore(0x2380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2380) + mstore(0x23a0, x) + let y := calldataload(0x23a0) + mstore(0x23c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x23c0) + mstore(0x23e0, x) + let y := calldataload(0x23e0) + mstore(0x2400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2400) + mstore(0x2420, x) + let y := calldataload(0x2420) + mstore(0x2440, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2440) + mstore(0x2460, x) + let y := calldataload(0x2460) + mstore(0x2480, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2480) + mstore(0x24a0, x) + let y := calldataload(0x24a0) + mstore(0x24c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x24c0) + mstore(0x24e0, x) + let y := calldataload(0x24e0) + mstore(0x2500, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2500) + mstore(0x2520, x) + let y := calldataload(0x2520) + mstore(0x2540, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2540) + mstore(0x2560, x) + let y := calldataload(0x2560) + mstore(0x2580, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2580) + mstore(0x25a0, x) + let y := calldataload(0x25a0) + mstore(0x25c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x25c0) + mstore(0x25e0, x) + let y := calldataload(0x25e0) + mstore(0x2600, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2600) + mstore(0x2620, x) + let y := calldataload(0x2620) + mstore(0x2640, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2640) + mstore(0x2660, x) + let y := calldataload(0x2660) + mstore(0x2680, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2680) + mstore(0x26a0, x) + let y := calldataload(0x26a0) + mstore(0x26c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x26c0) + mstore(0x26e0, x) + let y := calldataload(0x26e0) + mstore(0x2700, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2700) + mstore(0x2720, x) + let y := calldataload(0x2720) + mstore(0x2740, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2740) + mstore(0x2760, x) + let y := calldataload(0x2760) + mstore(0x2780, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2780) + mstore(0x27a0, x) + let y := calldataload(0x27a0) + mstore(0x27c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x27c0) + mstore(0x27e0, x) + let y := calldataload(0x27e0) + mstore(0x2800, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2800) + mstore(0x2820, x) + let y := calldataload(0x2820) + mstore(0x2840, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2840) + mstore(0x2860, x) + let y := calldataload(0x2860) + mstore(0x2880, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2880) + mstore(0x28a0, x) + let y := calldataload(0x28a0) + mstore(0x28c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x28c0) + mstore(0x28e0, x) + let y := calldataload(0x28e0) + mstore(0x2900, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2900) + mstore(0x2920, x) + let y := calldataload(0x2920) + mstore(0x2940, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2940) + mstore(0x2960, x) + let y := calldataload(0x2960) + mstore(0x2980, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2980) + mstore(0x29a0, x) + let y := calldataload(0x29a0) + mstore(0x29c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x29c0) + mstore(0x29e0, x) + let y := calldataload(0x29e0) + mstore(0x2a00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2a00) + mstore(0x2a20, x) + let y := calldataload(0x2a20) + mstore(0x2a40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2a40) + mstore(0x2a60, x) + let y := calldataload(0x2a60) + mstore(0x2a80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2a80) + mstore(0x2aa0, x) + let y := calldataload(0x2aa0) + mstore(0x2ac0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2ac0) + mstore(0x2ae0, x) + let y := calldataload(0x2ae0) + mstore(0x2b00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2b00) + mstore(0x2b20, x) + let y := calldataload(0x2b20) + mstore(0x2b40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2b40) + mstore(0x2b60, x) + let y := calldataload(0x2b60) + mstore(0x2b80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2b80) + mstore(0x2ba0, x) + let y := calldataload(0x2ba0) + mstore(0x2bc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2bc0) + mstore(0x2be0, x) + let y := calldataload(0x2be0) + mstore(0x2c00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2c00) + mstore(0x2c20, x) + let y := calldataload(0x2c20) + mstore(0x2c40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2c40) + mstore(0x2c60, x) + let y := calldataload(0x2c60) + mstore(0x2c80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2c80) + mstore(0x2ca0, x) + let y := calldataload(0x2ca0) + mstore(0x2cc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2cc0) + mstore(0x2ce0, x) + let y := calldataload(0x2ce0) + mstore(0x2d00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2d00) + mstore(0x2d20, x) + let y := calldataload(0x2d20) + mstore(0x2d40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2d40) + mstore(0x2d60, x) + let y := calldataload(0x2d60) + mstore(0x2d80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2d80) + mstore(0x2da0, x) + let y := calldataload(0x2da0) + mstore(0x2dc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2dc0) + mstore(0x2de0, x) + let y := calldataload(0x2de0) + mstore(0x2e00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2e00) + mstore(0x2e20, x) + let y := calldataload(0x2e20) + mstore(0x2e40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2e40) + mstore(0x2e60, x) + let y := calldataload(0x2e60) + mstore(0x2e80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2e80) + mstore(0x2ea0, x) + let y := calldataload(0x2ea0) + mstore(0x2ec0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2ec0) + mstore(0x2ee0, x) + let y := calldataload(0x2ee0) + mstore(0x2f00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2f00) + mstore(0x2f20, x) + let y := calldataload(0x2f20) + mstore(0x2f40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2f40) + mstore(0x2f60, x) + let y := calldataload(0x2f60) + mstore(0x2f80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2f80) + mstore(0x2fa0, x) + let y := calldataload(0x2fa0) + mstore(0x2fc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x2fc0) + mstore(0x2fe0, x) + let y := calldataload(0x2fe0) + mstore(0x3000, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3000) + mstore(0x3020, x) + let y := calldataload(0x3020) + mstore(0x3040, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3040) + mstore(0x3060, x) + let y := calldataload(0x3060) + mstore(0x3080, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3080) + mstore(0x30a0, x) + let y := calldataload(0x30a0) + mstore(0x30c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x30c0) + mstore(0x30e0, x) + let y := calldataload(0x30e0) + mstore(0x3100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3100) + mstore(0x3120, x) + let y := calldataload(0x3120) + mstore(0x3140, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3140) + mstore(0x3160, x) + let y := calldataload(0x3160) + mstore(0x3180, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3180) + mstore(0x31a0, x) + let y := calldataload(0x31a0) + mstore(0x31c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x31c0) + mstore(0x31e0, x) + let y := calldataload(0x31e0) + mstore(0x3200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3200) + mstore(0x3220, x) + let y := calldataload(0x3220) + mstore(0x3240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3240) + mstore(0x3260, x) + let y := calldataload(0x3260) + mstore(0x3280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3280) + mstore(0x32a0, x) + let y := calldataload(0x32a0) + mstore(0x32c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x32c0) + mstore(0x32e0, x) + let y := calldataload(0x32e0) + mstore(0x3300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3300) + mstore(0x3320, x) + let y := calldataload(0x3320) + mstore(0x3340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3340) + mstore(0x3360, x) + let y := calldataload(0x3360) + mstore(0x3380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3380) + mstore(0x33a0, x) + let y := calldataload(0x33a0) + mstore(0x33c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x33c0) + mstore(0x33e0, x) + let y := calldataload(0x33e0) + mstore(0x3400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3400) + mstore(0x3420, x) + let y := calldataload(0x3420) + mstore(0x3440, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3440) + mstore(0x3460, x) + let y := calldataload(0x3460) + mstore(0x3480, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3480) + mstore(0x34a0, x) + let y := calldataload(0x34a0) + mstore(0x34c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x34c0) + mstore(0x34e0, x) + let y := calldataload(0x34e0) + mstore(0x3500, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3500) + mstore(0x3520, x) + let y := calldataload(0x3520) + mstore(0x3540, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3540) + mstore(0x3560, x) + let y := calldataload(0x3560) + mstore(0x3580, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3580) + mstore(0x35a0, x) + let y := calldataload(0x35a0) + mstore(0x35c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x35c0) + mstore(0x35e0, x) + let y := calldataload(0x35e0) + mstore(0x3600, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3600) + mstore(0x3620, x) + let y := calldataload(0x3620) + mstore(0x3640, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3640) + mstore(0x3660, x) + let y := calldataload(0x3660) + mstore(0x3680, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3680) + mstore(0x36a0, x) + let y := calldataload(0x36a0) + mstore(0x36c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x36c0) + mstore(0x36e0, x) + let y := calldataload(0x36e0) + mstore(0x3700, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3700) + mstore(0x3720, x) + let y := calldataload(0x3720) + mstore(0x3740, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3740) + mstore(0x3760, x) + let y := calldataload(0x3760) + mstore(0x3780, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3780) + mstore(0x37a0, x) + let y := calldataload(0x37a0) + mstore(0x37c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x37c0) + mstore(0x37e0, x) + let y := calldataload(0x37e0) + mstore(0x3800, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3800) + mstore(0x3820, x) + let y := calldataload(0x3820) + mstore(0x3840, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3840) + mstore(0x3860, x) + let y := calldataload(0x3860) + mstore(0x3880, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3880) + mstore(0x38a0, x) + let y := calldataload(0x38a0) + mstore(0x38c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x38c0) + mstore(0x38e0, x) + let y := calldataload(0x38e0) + mstore(0x3900, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3900) + mstore(0x3920, x) + let y := calldataload(0x3920) + mstore(0x3940, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3940) + mstore(0x3960, x) + let y := calldataload(0x3960) + mstore(0x3980, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3980) + mstore(0x39a0, x) + let y := calldataload(0x39a0) + mstore(0x39c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x39c0) + mstore(0x39e0, x) + let y := calldataload(0x39e0) + mstore(0x3a00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3a00) + mstore(0x3a20, x) + let y := calldataload(0x3a20) + mstore(0x3a40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3a40) + mstore(0x3a60, x) + let y := calldataload(0x3a60) + mstore(0x3a80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3a80) + mstore(0x3aa0, x) + let y := calldataload(0x3aa0) + mstore(0x3ac0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3ac0) + mstore(0x3ae0, x) + let y := calldataload(0x3ae0) + mstore(0x3b00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3b00) + mstore(0x3b20, x) + let y := calldataload(0x3b20) + mstore(0x3b40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3b40) + mstore(0x3b60, x) + let y := calldataload(0x3b60) + mstore(0x3b80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3b80) + mstore(0x3ba0, x) + let y := calldataload(0x3ba0) + mstore(0x3bc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3bc0) + mstore(0x3be0, x) + let y := calldataload(0x3be0) + mstore(0x3c00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3c00) + mstore(0x3c20, x) + let y := calldataload(0x3c20) + mstore(0x3c40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3c40) + mstore(0x3c60, x) + let y := calldataload(0x3c60) + mstore(0x3c80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3c80) + mstore(0x3ca0, x) + let y := calldataload(0x3ca0) + mstore(0x3cc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3cc0) + mstore(0x3ce0, x) + let y := calldataload(0x3ce0) + mstore(0x3d00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3d00) + mstore(0x3d20, x) + let y := calldataload(0x3d20) + mstore(0x3d40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3d40) + mstore(0x3d60, x) + let y := calldataload(0x3d60) + mstore(0x3d80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3d80) + mstore(0x3da0, x) + let y := calldataload(0x3da0) + mstore(0x3dc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3dc0) + mstore(0x3de0, x) + let y := calldataload(0x3de0) + mstore(0x3e00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3e00) + mstore(0x3e20, x) + let y := calldataload(0x3e20) + mstore(0x3e40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3e40) + mstore(0x3e60, x) + let y := calldataload(0x3e60) + mstore(0x3e80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3e80) + mstore(0x3ea0, x) + let y := calldataload(0x3ea0) + mstore(0x3ec0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3ec0) + mstore(0x3ee0, x) + let y := calldataload(0x3ee0) + mstore(0x3f00, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3f00) + mstore(0x3f20, x) + let y := calldataload(0x3f20) + mstore(0x3f40, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3f40) + mstore(0x3f60, x) + let y := calldataload(0x3f60) + mstore(0x3f80, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3f80) + mstore(0x3fa0, x) + let y := calldataload(0x3fa0) + mstore(0x3fc0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x3fc0) + mstore(0x3fe0, x) + let y := calldataload(0x3fe0) + mstore(0x4000, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4000) + mstore(0x4020, x) + let y := calldataload(0x4020) + mstore(0x4040, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4040) + mstore(0x4060, x) + let y := calldataload(0x4060) + mstore(0x4080, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4080) + mstore(0x40a0, x) + let y := calldataload(0x40a0) + mstore(0x40c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x40c0) + mstore(0x40e0, x) + let y := calldataload(0x40e0) + mstore(0x4100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4100) + mstore(0x4120, x) + let y := calldataload(0x4120) + mstore(0x4140, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4140) + mstore(0x4160, x) + let y := calldataload(0x4160) + mstore(0x4180, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4180) + mstore(0x41a0, x) + let y := calldataload(0x41a0) + mstore(0x41c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x41c0) + mstore(0x41e0, x) + let y := calldataload(0x41e0) + mstore(0x4200, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4200) + mstore(0x4220, x) + let y := calldataload(0x4220) + mstore(0x4240, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4240) + mstore(0x4260, x) + let y := calldataload(0x4260) + mstore(0x4280, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4280) + mstore(0x42a0, x) + let y := calldataload(0x42a0) + mstore(0x42c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x42c0) + mstore(0x42e0, x) + let y := calldataload(0x42e0) + mstore(0x4300, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4300) + mstore(0x4320, x) + let y := calldataload(0x4320) + mstore(0x4340, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4340) + mstore(0x4360, x) + let y := calldataload(0x4360) + mstore(0x4380, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4380) + mstore(0x43a0, x) + let y := calldataload(0x43a0) + mstore(0x43c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x43c0) + mstore(0x43e0, x) + let y := calldataload(0x43e0) + mstore(0x4400, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4400) + mstore(0x4420, x) + let y := calldataload(0x4420) + mstore(0x4440, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4440) + mstore(0x4460, x) + let y := calldataload(0x4460) + mstore(0x4480, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4480) + mstore(0x44a0, x) + let y := calldataload(0x44a0) + mstore(0x44c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x44c0) + mstore(0x44e0, x) + let y := calldataload(0x44e0) + mstore(0x4500, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4500) + mstore(0x4520, x) + let y := calldataload(0x4520) + mstore(0x4540, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4540) + mstore(0x4560, x) + let y := calldataload(0x4560) + mstore(0x4580, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4580) + mstore(0x45a0, x) + let y := calldataload(0x45a0) + mstore(0x45c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x45c0) + mstore(0x45e0, x) + let y := calldataload(0x45e0) + mstore(0x4600, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x4620, keccak256(0x0, 17952)) +{ + let hash := mload(0x4620) + mstore(0x4640, mod(hash, f_q)) + mstore(0x4660, hash) + } + + { + let x := calldataload(0x4600) + mstore(0x4680, x) + let y := calldataload(0x4620) + mstore(0x46a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4640) + mstore(0x46c0, x) + let y := calldataload(0x4660) + mstore(0x46e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4680) + mstore(0x4700, x) + let y := calldataload(0x46a0) + mstore(0x4720, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x46c0) + mstore(0x4740, x) + let y := calldataload(0x46e0) + mstore(0x4760, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4700) + mstore(0x4780, x) + let y := calldataload(0x4720) + mstore(0x47a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4740) + mstore(0x47c0, x) + let y := calldataload(0x4760) + mstore(0x47e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4780) + mstore(0x4800, x) + let y := calldataload(0x47a0) + mstore(0x4820, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x47c0) + mstore(0x4840, x) + let y := calldataload(0x47e0) + mstore(0x4860, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4800) + mstore(0x4880, x) + let y := calldataload(0x4820) + mstore(0x48a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4840) + mstore(0x48c0, x) + let y := calldataload(0x4860) + mstore(0x48e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4880) + mstore(0x4900, x) + let y := calldataload(0x48a0) + mstore(0x4920, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x48c0) + mstore(0x4940, x) + let y := calldataload(0x48e0) + mstore(0x4960, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4900) + mstore(0x4980, x) + let y := calldataload(0x4920) + mstore(0x49a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4940) + mstore(0x49c0, x) + let y := calldataload(0x4960) + mstore(0x49e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4980) + mstore(0x4a00, x) + let y := calldataload(0x49a0) + mstore(0x4a20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x49c0) + mstore(0x4a40, x) + let y := calldataload(0x49e0) + mstore(0x4a60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4a00) + mstore(0x4a80, x) + let y := calldataload(0x4a20) + mstore(0x4aa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4a40) + mstore(0x4ac0, x) + let y := calldataload(0x4a60) + mstore(0x4ae0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4a80) + mstore(0x4b00, x) + let y := calldataload(0x4aa0) + mstore(0x4b20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4ac0) + mstore(0x4b40, x) + let y := calldataload(0x4ae0) + mstore(0x4b60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4b00) + mstore(0x4b80, x) + let y := calldataload(0x4b20) + mstore(0x4ba0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4b40) + mstore(0x4bc0, x) + let y := calldataload(0x4b60) + mstore(0x4be0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4b80) + mstore(0x4c00, x) + let y := calldataload(0x4ba0) + mstore(0x4c20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4bc0) + mstore(0x4c40, x) + let y := calldataload(0x4be0) + mstore(0x4c60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4c00) + mstore(0x4c80, x) + let y := calldataload(0x4c20) + mstore(0x4ca0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4c40) + mstore(0x4cc0, x) + let y := calldataload(0x4c60) + mstore(0x4ce0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4c80) + mstore(0x4d00, x) + let y := calldataload(0x4ca0) + mstore(0x4d20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4cc0) + mstore(0x4d40, x) + let y := calldataload(0x4ce0) + mstore(0x4d60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4d00) + mstore(0x4d80, x) + let y := calldataload(0x4d20) + mstore(0x4da0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4d40) + mstore(0x4dc0, x) + let y := calldataload(0x4d60) + mstore(0x4de0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4d80) + mstore(0x4e00, x) + let y := calldataload(0x4da0) + mstore(0x4e20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4dc0) + mstore(0x4e40, x) + let y := calldataload(0x4de0) + mstore(0x4e60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4e00) + mstore(0x4e80, x) + let y := calldataload(0x4e20) + mstore(0x4ea0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4e40) + mstore(0x4ec0, x) + let y := calldataload(0x4e60) + mstore(0x4ee0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4e80) + mstore(0x4f00, x) + let y := calldataload(0x4ea0) + mstore(0x4f20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4ec0) + mstore(0x4f40, x) + let y := calldataload(0x4ee0) + mstore(0x4f60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4f00) + mstore(0x4f80, x) + let y := calldataload(0x4f20) + mstore(0x4fa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4f40) + mstore(0x4fc0, x) + let y := calldataload(0x4f60) + mstore(0x4fe0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4f80) + mstore(0x5000, x) + let y := calldataload(0x4fa0) + mstore(0x5020, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x4fc0) + mstore(0x5040, x) + let y := calldataload(0x4fe0) + mstore(0x5060, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5000) + mstore(0x5080, x) + let y := calldataload(0x5020) + mstore(0x50a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5040) + mstore(0x50c0, x) + let y := calldataload(0x5060) + mstore(0x50e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5080) + mstore(0x5100, x) + let y := calldataload(0x50a0) + mstore(0x5120, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x50c0) + mstore(0x5140, x) + let y := calldataload(0x50e0) + mstore(0x5160, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5100) + mstore(0x5180, x) + let y := calldataload(0x5120) + mstore(0x51a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5140) + mstore(0x51c0, x) + let y := calldataload(0x5160) + mstore(0x51e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5180) + mstore(0x5200, x) + let y := calldataload(0x51a0) + mstore(0x5220, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x51c0) + mstore(0x5240, x) + let y := calldataload(0x51e0) + mstore(0x5260, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5200) + mstore(0x5280, x) + let y := calldataload(0x5220) + mstore(0x52a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5240) + mstore(0x52c0, x) + let y := calldataload(0x5260) + mstore(0x52e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5280) + mstore(0x5300, x) + let y := calldataload(0x52a0) + mstore(0x5320, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x52c0) + mstore(0x5340, x) + let y := calldataload(0x52e0) + mstore(0x5360, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5300) + mstore(0x5380, x) + let y := calldataload(0x5320) + mstore(0x53a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5340) + mstore(0x53c0, x) + let y := calldataload(0x5360) + mstore(0x53e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5380) + mstore(0x5400, x) + let y := calldataload(0x53a0) + mstore(0x5420, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x53c0) + mstore(0x5440, x) + let y := calldataload(0x53e0) + mstore(0x5460, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5400) + mstore(0x5480, x) + let y := calldataload(0x5420) + mstore(0x54a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5440) + mstore(0x54c0, x) + let y := calldataload(0x5460) + mstore(0x54e0, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x5500, keccak256(0x4660, 3744)) +{ + let hash := mload(0x5500) + mstore(0x5520, mod(hash, f_q)) + mstore(0x5540, hash) + } +mstore8(21856, 1) +mstore(0x5560, keccak256(0x5540, 33)) +{ + let hash := mload(0x5560) + mstore(0x5580, mod(hash, f_q)) + mstore(0x55a0, hash) + } + + { + let x := calldataload(0x5480) + mstore(0x55c0, x) + let y := calldataload(0x54a0) + mstore(0x55e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x54c0) + mstore(0x5600, x) + let y := calldataload(0x54e0) + mstore(0x5620, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5500) + mstore(0x5640, x) + let y := calldataload(0x5520) + mstore(0x5660, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5540) + mstore(0x5680, x) + let y := calldataload(0x5560) + mstore(0x56a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5580) + mstore(0x56c0, x) + let y := calldataload(0x55a0) + mstore(0x56e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x55c0) + mstore(0x5700, x) + let y := calldataload(0x55e0) + mstore(0x5720, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5600) + mstore(0x5740, x) + let y := calldataload(0x5620) + mstore(0x5760, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5640) + mstore(0x5780, x) + let y := calldataload(0x5660) + mstore(0x57a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5680) + mstore(0x57c0, x) + let y := calldataload(0x56a0) + mstore(0x57e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x56c0) + mstore(0x5800, x) + let y := calldataload(0x56e0) + mstore(0x5820, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5700) + mstore(0x5840, x) + let y := calldataload(0x5720) + mstore(0x5860, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5740) + mstore(0x5880, x) + let y := calldataload(0x5760) + mstore(0x58a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5780) + mstore(0x58c0, x) + let y := calldataload(0x57a0) + mstore(0x58e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x57c0) + mstore(0x5900, x) + let y := calldataload(0x57e0) + mstore(0x5920, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5800) + mstore(0x5940, x) + let y := calldataload(0x5820) + mstore(0x5960, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5840) + mstore(0x5980, x) + let y := calldataload(0x5860) + mstore(0x59a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5880) + mstore(0x59c0, x) + let y := calldataload(0x58a0) + mstore(0x59e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x58c0) + mstore(0x5a00, x) + let y := calldataload(0x58e0) + mstore(0x5a20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5900) + mstore(0x5a40, x) + let y := calldataload(0x5920) + mstore(0x5a60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5940) + mstore(0x5a80, x) + let y := calldataload(0x5960) + mstore(0x5aa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5980) + mstore(0x5ac0, x) + let y := calldataload(0x59a0) + mstore(0x5ae0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x59c0) + mstore(0x5b00, x) + let y := calldataload(0x59e0) + mstore(0x5b20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5a00) + mstore(0x5b40, x) + let y := calldataload(0x5a20) + mstore(0x5b60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5a40) + mstore(0x5b80, x) + let y := calldataload(0x5a60) + mstore(0x5ba0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5a80) + mstore(0x5bc0, x) + let y := calldataload(0x5aa0) + mstore(0x5be0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5ac0) + mstore(0x5c00, x) + let y := calldataload(0x5ae0) + mstore(0x5c20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5b00) + mstore(0x5c40, x) + let y := calldataload(0x5b20) + mstore(0x5c60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5b40) + mstore(0x5c80, x) + let y := calldataload(0x5b60) + mstore(0x5ca0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5b80) + mstore(0x5cc0, x) + let y := calldataload(0x5ba0) + mstore(0x5ce0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5bc0) + mstore(0x5d00, x) + let y := calldataload(0x5be0) + mstore(0x5d20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5c00) + mstore(0x5d40, x) + let y := calldataload(0x5c20) + mstore(0x5d60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5c40) + mstore(0x5d80, x) + let y := calldataload(0x5c60) + mstore(0x5da0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5c80) + mstore(0x5dc0, x) + let y := calldataload(0x5ca0) + mstore(0x5de0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5cc0) + mstore(0x5e00, x) + let y := calldataload(0x5ce0) + mstore(0x5e20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5d00) + mstore(0x5e40, x) + let y := calldataload(0x5d20) + mstore(0x5e60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5d40) + mstore(0x5e80, x) + let y := calldataload(0x5d60) + mstore(0x5ea0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5d80) + mstore(0x5ec0, x) + let y := calldataload(0x5da0) + mstore(0x5ee0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5dc0) + mstore(0x5f00, x) + let y := calldataload(0x5de0) + mstore(0x5f20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5e00) + mstore(0x5f40, x) + let y := calldataload(0x5e20) + mstore(0x5f60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5e40) + mstore(0x5f80, x) + let y := calldataload(0x5e60) + mstore(0x5fa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5e80) + mstore(0x5fc0, x) + let y := calldataload(0x5ea0) + mstore(0x5fe0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5ec0) + mstore(0x6000, x) + let y := calldataload(0x5ee0) + mstore(0x6020, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5f00) + mstore(0x6040, x) + let y := calldataload(0x5f20) + mstore(0x6060, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5f40) + mstore(0x6080, x) + let y := calldataload(0x5f60) + mstore(0x60a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5f80) + mstore(0x60c0, x) + let y := calldataload(0x5fa0) + mstore(0x60e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x5fc0) + mstore(0x6100, x) + let y := calldataload(0x5fe0) + mstore(0x6120, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6000) + mstore(0x6140, x) + let y := calldataload(0x6020) + mstore(0x6160, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6040) + mstore(0x6180, x) + let y := calldataload(0x6060) + mstore(0x61a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6080) + mstore(0x61c0, x) + let y := calldataload(0x60a0) + mstore(0x61e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x60c0) + mstore(0x6200, x) + let y := calldataload(0x60e0) + mstore(0x6220, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6100) + mstore(0x6240, x) + let y := calldataload(0x6120) + mstore(0x6260, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6140) + mstore(0x6280, x) + let y := calldataload(0x6160) + mstore(0x62a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6180) + mstore(0x62c0, x) + let y := calldataload(0x61a0) + mstore(0x62e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x61c0) + mstore(0x6300, x) + let y := calldataload(0x61e0) + mstore(0x6320, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6200) + mstore(0x6340, x) + let y := calldataload(0x6220) + mstore(0x6360, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6240) + mstore(0x6380, x) + let y := calldataload(0x6260) + mstore(0x63a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6280) + mstore(0x63c0, x) + let y := calldataload(0x62a0) + mstore(0x63e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x62c0) + mstore(0x6400, x) + let y := calldataload(0x62e0) + mstore(0x6420, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6300) + mstore(0x6440, x) + let y := calldataload(0x6320) + mstore(0x6460, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6340) + mstore(0x6480, x) + let y := calldataload(0x6360) + mstore(0x64a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6380) + mstore(0x64c0, x) + let y := calldataload(0x63a0) + mstore(0x64e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x63c0) + mstore(0x6500, x) + let y := calldataload(0x63e0) + mstore(0x6520, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6400) + mstore(0x6540, x) + let y := calldataload(0x6420) + mstore(0x6560, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6440) + mstore(0x6580, x) + let y := calldataload(0x6460) + mstore(0x65a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6480) + mstore(0x65c0, x) + let y := calldataload(0x64a0) + mstore(0x65e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x64c0) + mstore(0x6600, x) + let y := calldataload(0x64e0) + mstore(0x6620, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6500) + mstore(0x6640, x) + let y := calldataload(0x6520) + mstore(0x6660, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6540) + mstore(0x6680, x) + let y := calldataload(0x6560) + mstore(0x66a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6580) + mstore(0x66c0, x) + let y := calldataload(0x65a0) + mstore(0x66e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x65c0) + mstore(0x6700, x) + let y := calldataload(0x65e0) + mstore(0x6720, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6600) + mstore(0x6740, x) + let y := calldataload(0x6620) + mstore(0x6760, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6640) + mstore(0x6780, x) + let y := calldataload(0x6660) + mstore(0x67a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6680) + mstore(0x67c0, x) + let y := calldataload(0x66a0) + mstore(0x67e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x66c0) + mstore(0x6800, x) + let y := calldataload(0x66e0) + mstore(0x6820, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6700) + mstore(0x6840, x) + let y := calldataload(0x6720) + mstore(0x6860, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6740) + mstore(0x6880, x) + let y := calldataload(0x6760) + mstore(0x68a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6780) + mstore(0x68c0, x) + let y := calldataload(0x67a0) + mstore(0x68e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x67c0) + mstore(0x6900, x) + let y := calldataload(0x67e0) + mstore(0x6920, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6800) + mstore(0x6940, x) + let y := calldataload(0x6820) + mstore(0x6960, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6840) + mstore(0x6980, x) + let y := calldataload(0x6860) + mstore(0x69a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6880) + mstore(0x69c0, x) + let y := calldataload(0x68a0) + mstore(0x69e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x68c0) + mstore(0x6a00, x) + let y := calldataload(0x68e0) + mstore(0x6a20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6900) + mstore(0x6a40, x) + let y := calldataload(0x6920) + mstore(0x6a60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6940) + mstore(0x6a80, x) + let y := calldataload(0x6960) + mstore(0x6aa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6980) + mstore(0x6ac0, x) + let y := calldataload(0x69a0) + mstore(0x6ae0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x69c0) + mstore(0x6b00, x) + let y := calldataload(0x69e0) + mstore(0x6b20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6a00) + mstore(0x6b40, x) + let y := calldataload(0x6a20) + mstore(0x6b60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6a40) + mstore(0x6b80, x) + let y := calldataload(0x6a60) + mstore(0x6ba0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6a80) + mstore(0x6bc0, x) + let y := calldataload(0x6aa0) + mstore(0x6be0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6ac0) + mstore(0x6c00, x) + let y := calldataload(0x6ae0) + mstore(0x6c20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6b00) + mstore(0x6c40, x) + let y := calldataload(0x6b20) + mstore(0x6c60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6b40) + mstore(0x6c80, x) + let y := calldataload(0x6b60) + mstore(0x6ca0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6b80) + mstore(0x6cc0, x) + let y := calldataload(0x6ba0) + mstore(0x6ce0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6bc0) + mstore(0x6d00, x) + let y := calldataload(0x6be0) + mstore(0x6d20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6c00) + mstore(0x6d40, x) + let y := calldataload(0x6c20) + mstore(0x6d60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6c40) + mstore(0x6d80, x) + let y := calldataload(0x6c60) + mstore(0x6da0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6c80) + mstore(0x6dc0, x) + let y := calldataload(0x6ca0) + mstore(0x6de0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6cc0) + mstore(0x6e00, x) + let y := calldataload(0x6ce0) + mstore(0x6e20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6d00) + mstore(0x6e40, x) + let y := calldataload(0x6d20) + mstore(0x6e60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6d40) + mstore(0x6e80, x) + let y := calldataload(0x6d60) + mstore(0x6ea0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6d80) + mstore(0x6ec0, x) + let y := calldataload(0x6da0) + mstore(0x6ee0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6dc0) + mstore(0x6f00, x) + let y := calldataload(0x6de0) + mstore(0x6f20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6e00) + mstore(0x6f40, x) + let y := calldataload(0x6e20) + mstore(0x6f60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6e40) + mstore(0x6f80, x) + let y := calldataload(0x6e60) + mstore(0x6fa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6e80) + mstore(0x6fc0, x) + let y := calldataload(0x6ea0) + mstore(0x6fe0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6ec0) + mstore(0x7000, x) + let y := calldataload(0x6ee0) + mstore(0x7020, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6f00) + mstore(0x7040, x) + let y := calldataload(0x6f20) + mstore(0x7060, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6f40) + mstore(0x7080, x) + let y := calldataload(0x6f60) + mstore(0x70a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6f80) + mstore(0x70c0, x) + let y := calldataload(0x6fa0) + mstore(0x70e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x6fc0) + mstore(0x7100, x) + let y := calldataload(0x6fe0) + mstore(0x7120, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7000) + mstore(0x7140, x) + let y := calldataload(0x7020) + mstore(0x7160, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7040) + mstore(0x7180, x) + let y := calldataload(0x7060) + mstore(0x71a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7080) + mstore(0x71c0, x) + let y := calldataload(0x70a0) + mstore(0x71e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x70c0) + mstore(0x7200, x) + let y := calldataload(0x70e0) + mstore(0x7220, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7100) + mstore(0x7240, x) + let y := calldataload(0x7120) + mstore(0x7260, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7140) + mstore(0x7280, x) + let y := calldataload(0x7160) + mstore(0x72a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7180) + mstore(0x72c0, x) + let y := calldataload(0x71a0) + mstore(0x72e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x71c0) + mstore(0x7300, x) + let y := calldataload(0x71e0) + mstore(0x7320, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7200) + mstore(0x7340, x) + let y := calldataload(0x7220) + mstore(0x7360, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7240) + mstore(0x7380, x) + let y := calldataload(0x7260) + mstore(0x73a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7280) + mstore(0x73c0, x) + let y := calldataload(0x72a0) + mstore(0x73e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x72c0) + mstore(0x7400, x) + let y := calldataload(0x72e0) + mstore(0x7420, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7300) + mstore(0x7440, x) + let y := calldataload(0x7320) + mstore(0x7460, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7340) + mstore(0x7480, x) + let y := calldataload(0x7360) + mstore(0x74a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7380) + mstore(0x74c0, x) + let y := calldataload(0x73a0) + mstore(0x74e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x73c0) + mstore(0x7500, x) + let y := calldataload(0x73e0) + mstore(0x7520, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7400) + mstore(0x7540, x) + let y := calldataload(0x7420) + mstore(0x7560, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7440) + mstore(0x7580, x) + let y := calldataload(0x7460) + mstore(0x75a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7480) + mstore(0x75c0, x) + let y := calldataload(0x74a0) + mstore(0x75e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x74c0) + mstore(0x7600, x) + let y := calldataload(0x74e0) + mstore(0x7620, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7500) + mstore(0x7640, x) + let y := calldataload(0x7520) + mstore(0x7660, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7540) + mstore(0x7680, x) + let y := calldataload(0x7560) + mstore(0x76a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7580) + mstore(0x76c0, x) + let y := calldataload(0x75a0) + mstore(0x76e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x75c0) + mstore(0x7700, x) + let y := calldataload(0x75e0) + mstore(0x7720, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7600) + mstore(0x7740, x) + let y := calldataload(0x7620) + mstore(0x7760, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7640) + mstore(0x7780, x) + let y := calldataload(0x7660) + mstore(0x77a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7680) + mstore(0x77c0, x) + let y := calldataload(0x76a0) + mstore(0x77e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x76c0) + mstore(0x7800, x) + let y := calldataload(0x76e0) + mstore(0x7820, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7700) + mstore(0x7840, x) + let y := calldataload(0x7720) + mstore(0x7860, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7740) + mstore(0x7880, x) + let y := calldataload(0x7760) + mstore(0x78a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7780) + mstore(0x78c0, x) + let y := calldataload(0x77a0) + mstore(0x78e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x77c0) + mstore(0x7900, x) + let y := calldataload(0x77e0) + mstore(0x7920, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7800) + mstore(0x7940, x) + let y := calldataload(0x7820) + mstore(0x7960, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7840) + mstore(0x7980, x) + let y := calldataload(0x7860) + mstore(0x79a0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7880) + mstore(0x79c0, x) + let y := calldataload(0x78a0) + mstore(0x79e0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x78c0) + mstore(0x7a00, x) + let y := calldataload(0x78e0) + mstore(0x7a20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7900) + mstore(0x7a40, x) + let y := calldataload(0x7920) + mstore(0x7a60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7940) + mstore(0x7a80, x) + let y := calldataload(0x7960) + mstore(0x7aa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7980) + mstore(0x7ac0, x) + let y := calldataload(0x79a0) + mstore(0x7ae0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x79c0) + mstore(0x7b00, x) + let y := calldataload(0x79e0) + mstore(0x7b20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7a00) + mstore(0x7b40, x) + let y := calldataload(0x7a20) + mstore(0x7b60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7a40) + mstore(0x7b80, x) + let y := calldataload(0x7a60) + mstore(0x7ba0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7a80) + mstore(0x7bc0, x) + let y := calldataload(0x7aa0) + mstore(0x7be0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7ac0) + mstore(0x7c00, x) + let y := calldataload(0x7ae0) + mstore(0x7c20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7b00) + mstore(0x7c40, x) + let y := calldataload(0x7b20) + mstore(0x7c60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7b40) + mstore(0x7c80, x) + let y := calldataload(0x7b60) + mstore(0x7ca0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7b80) + mstore(0x7cc0, x) + let y := calldataload(0x7ba0) + mstore(0x7ce0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7bc0) + mstore(0x7d00, x) + let y := calldataload(0x7be0) + mstore(0x7d20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7c00) + mstore(0x7d40, x) + let y := calldataload(0x7c20) + mstore(0x7d60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7c40) + mstore(0x7d80, x) + let y := calldataload(0x7c60) + mstore(0x7da0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7c80) + mstore(0x7dc0, x) + let y := calldataload(0x7ca0) + mstore(0x7de0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7cc0) + mstore(0x7e00, x) + let y := calldataload(0x7ce0) + mstore(0x7e20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7d00) + mstore(0x7e40, x) + let y := calldataload(0x7d20) + mstore(0x7e60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7d40) + mstore(0x7e80, x) + let y := calldataload(0x7d60) + mstore(0x7ea0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7d80) + mstore(0x7ec0, x) + let y := calldataload(0x7da0) + mstore(0x7ee0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7dc0) + mstore(0x7f00, x) + let y := calldataload(0x7de0) + mstore(0x7f20, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7e00) + mstore(0x7f40, x) + let y := calldataload(0x7e20) + mstore(0x7f60, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7e40) + mstore(0x7f80, x) + let y := calldataload(0x7e60) + mstore(0x7fa0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7e80) + mstore(0x7fc0, x) + let y := calldataload(0x7ea0) + mstore(0x7fe0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7ec0) + mstore(0x8000, x) + let y := calldataload(0x7ee0) + mstore(0x8020, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x8040, keccak256(0x55a0, 10912)) +{ + let hash := mload(0x8040) + mstore(0x8060, mod(hash, f_q)) + mstore(0x8080, hash) + } + + { + let x := calldataload(0x7f00) + mstore(0x80a0, x) + let y := calldataload(0x7f20) + mstore(0x80c0, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7f40) + mstore(0x80e0, x) + let y := calldataload(0x7f60) + mstore(0x8100, y) + success := and(validate_ec_point(x, y), success) + } + + { + let x := calldataload(0x7f80) + mstore(0x8120, x) + let y := calldataload(0x7fa0) + mstore(0x8140, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x8160, keccak256(0x8080, 224)) +{ + let hash := mload(0x8160) + mstore(0x8180, mod(hash, f_q)) + mstore(0x81a0, hash) + } +mstore(0x81c0, mod(calldataload(0x7fc0), f_q)) +mstore(0x81e0, mod(calldataload(0x7fe0), f_q)) +mstore(0x8200, mod(calldataload(0x8000), f_q)) +mstore(0x8220, mod(calldataload(0x8020), f_q)) +mstore(0x8240, mod(calldataload(0x8040), f_q)) +mstore(0x8260, mod(calldataload(0x8060), f_q)) +mstore(0x8280, mod(calldataload(0x8080), f_q)) +mstore(0x82a0, mod(calldataload(0x80a0), f_q)) +mstore(0x82c0, mod(calldataload(0x80c0), f_q)) +mstore(0x82e0, mod(calldataload(0x80e0), f_q)) +mstore(0x8300, mod(calldataload(0x8100), f_q)) +mstore(0x8320, mod(calldataload(0x8120), f_q)) +mstore(0x8340, mod(calldataload(0x8140), f_q)) +mstore(0x8360, mod(calldataload(0x8160), f_q)) +mstore(0x8380, mod(calldataload(0x8180), f_q)) +mstore(0x83a0, mod(calldataload(0x81a0), f_q)) +mstore(0x83c0, mod(calldataload(0x81c0), f_q)) +mstore(0x83e0, mod(calldataload(0x81e0), f_q)) +mstore(0x8400, mod(calldataload(0x8200), f_q)) +mstore(0x8420, mod(calldataload(0x8220), f_q)) +mstore(0x8440, mod(calldataload(0x8240), f_q)) +mstore(0x8460, mod(calldataload(0x8260), f_q)) +mstore(0x8480, mod(calldataload(0x8280), f_q)) +mstore(0x84a0, mod(calldataload(0x82a0), f_q)) +mstore(0x84c0, mod(calldataload(0x82c0), f_q)) +mstore(0x84e0, mod(calldataload(0x82e0), f_q)) +mstore(0x8500, mod(calldataload(0x8300), f_q)) +mstore(0x8520, mod(calldataload(0x8320), f_q)) +mstore(0x8540, mod(calldataload(0x8340), f_q)) +mstore(0x8560, mod(calldataload(0x8360), f_q)) +mstore(0x8580, mod(calldataload(0x8380), f_q)) +mstore(0x85a0, mod(calldataload(0x83a0), f_q)) +mstore(0x85c0, mod(calldataload(0x83c0), f_q)) +mstore(0x85e0, mod(calldataload(0x83e0), f_q)) +mstore(0x8600, mod(calldataload(0x8400), f_q)) +mstore(0x8620, mod(calldataload(0x8420), f_q)) +mstore(0x8640, mod(calldataload(0x8440), f_q)) +mstore(0x8660, mod(calldataload(0x8460), f_q)) +mstore(0x8680, mod(calldataload(0x8480), f_q)) +mstore(0x86a0, mod(calldataload(0x84a0), f_q)) +mstore(0x86c0, mod(calldataload(0x84c0), f_q)) +mstore(0x86e0, mod(calldataload(0x84e0), f_q)) +mstore(0x8700, mod(calldataload(0x8500), f_q)) +mstore(0x8720, mod(calldataload(0x8520), f_q)) +mstore(0x8740, mod(calldataload(0x8540), f_q)) +mstore(0x8760, mod(calldataload(0x8560), f_q)) +mstore(0x8780, mod(calldataload(0x8580), f_q)) +mstore(0x87a0, mod(calldataload(0x85a0), f_q)) +mstore(0x87c0, mod(calldataload(0x85c0), f_q)) +mstore(0x87e0, mod(calldataload(0x85e0), f_q)) +mstore(0x8800, mod(calldataload(0x8600), f_q)) +mstore(0x8820, mod(calldataload(0x8620), f_q)) +mstore(0x8840, mod(calldataload(0x8640), f_q)) +mstore(0x8860, mod(calldataload(0x8660), f_q)) +mstore(0x8880, mod(calldataload(0x8680), f_q)) +mstore(0x88a0, mod(calldataload(0x86a0), f_q)) +mstore(0x88c0, mod(calldataload(0x86c0), f_q)) +mstore(0x88e0, mod(calldataload(0x86e0), f_q)) +mstore(0x8900, mod(calldataload(0x8700), f_q)) +mstore(0x8920, mod(calldataload(0x8720), f_q)) +mstore(0x8940, mod(calldataload(0x8740), f_q)) +mstore(0x8960, mod(calldataload(0x8760), f_q)) +mstore(0x8980, mod(calldataload(0x8780), f_q)) +mstore(0x89a0, mod(calldataload(0x87a0), f_q)) +mstore(0x89c0, mod(calldataload(0x87c0), f_q)) +mstore(0x89e0, mod(calldataload(0x87e0), f_q)) +mstore(0x8a00, mod(calldataload(0x8800), f_q)) +mstore(0x8a20, mod(calldataload(0x8820), f_q)) +mstore(0x8a40, mod(calldataload(0x8840), f_q)) +mstore(0x8a60, mod(calldataload(0x8860), f_q)) +mstore(0x8a80, mod(calldataload(0x8880), f_q)) +mstore(0x8aa0, mod(calldataload(0x88a0), f_q)) +mstore(0x8ac0, mod(calldataload(0x88c0), f_q)) +mstore(0x8ae0, mod(calldataload(0x88e0), f_q)) +mstore(0x8b00, mod(calldataload(0x8900), f_q)) +mstore(0x8b20, mod(calldataload(0x8920), f_q)) +mstore(0x8b40, mod(calldataload(0x8940), f_q)) +mstore(0x8b60, mod(calldataload(0x8960), f_q)) +mstore(0x8b80, mod(calldataload(0x8980), f_q)) +mstore(0x8ba0, mod(calldataload(0x89a0), f_q)) +mstore(0x8bc0, mod(calldataload(0x89c0), f_q)) +mstore(0x8be0, mod(calldataload(0x89e0), f_q)) +mstore(0x8c00, mod(calldataload(0x8a00), f_q)) +mstore(0x8c20, mod(calldataload(0x8a20), f_q)) +mstore(0x8c40, mod(calldataload(0x8a40), f_q)) +mstore(0x8c60, mod(calldataload(0x8a60), f_q)) +mstore(0x8c80, mod(calldataload(0x8a80), f_q)) +mstore(0x8ca0, mod(calldataload(0x8aa0), f_q)) +mstore(0x8cc0, mod(calldataload(0x8ac0), f_q)) +mstore(0x8ce0, mod(calldataload(0x8ae0), f_q)) +mstore(0x8d00, mod(calldataload(0x8b00), f_q)) +mstore(0x8d20, mod(calldataload(0x8b20), f_q)) +mstore(0x8d40, mod(calldataload(0x8b40), f_q)) +mstore(0x8d60, mod(calldataload(0x8b60), f_q)) +mstore(0x8d80, mod(calldataload(0x8b80), f_q)) +mstore(0x8da0, mod(calldataload(0x8ba0), f_q)) +mstore(0x8dc0, mod(calldataload(0x8bc0), f_q)) +mstore(0x8de0, mod(calldataload(0x8be0), f_q)) +mstore(0x8e00, mod(calldataload(0x8c00), f_q)) +mstore(0x8e20, mod(calldataload(0x8c20), f_q)) +mstore(0x8e40, mod(calldataload(0x8c40), f_q)) +mstore(0x8e60, mod(calldataload(0x8c60), f_q)) +mstore(0x8e80, mod(calldataload(0x8c80), f_q)) +mstore(0x8ea0, mod(calldataload(0x8ca0), f_q)) +mstore(0x8ec0, mod(calldataload(0x8cc0), f_q)) +mstore(0x8ee0, mod(calldataload(0x8ce0), f_q)) +mstore(0x8f00, mod(calldataload(0x8d00), f_q)) +mstore(0x8f20, mod(calldataload(0x8d20), f_q)) +mstore(0x8f40, mod(calldataload(0x8d40), f_q)) +mstore(0x8f60, mod(calldataload(0x8d60), f_q)) +mstore(0x8f80, mod(calldataload(0x8d80), f_q)) +mstore(0x8fa0, mod(calldataload(0x8da0), f_q)) +mstore(0x8fc0, mod(calldataload(0x8dc0), f_q)) +mstore(0x8fe0, mod(calldataload(0x8de0), f_q)) +mstore(0x9000, mod(calldataload(0x8e00), f_q)) +mstore(0x9020, mod(calldataload(0x8e20), f_q)) +mstore(0x9040, mod(calldataload(0x8e40), f_q)) +mstore(0x9060, mod(calldataload(0x8e60), f_q)) +mstore(0x9080, mod(calldataload(0x8e80), f_q)) +mstore(0x90a0, mod(calldataload(0x8ea0), f_q)) +mstore(0x90c0, mod(calldataload(0x8ec0), f_q)) +mstore(0x90e0, mod(calldataload(0x8ee0), f_q)) +mstore(0x9100, mod(calldataload(0x8f00), f_q)) +mstore(0x9120, mod(calldataload(0x8f20), f_q)) +mstore(0x9140, mod(calldataload(0x8f40), f_q)) +mstore(0x9160, mod(calldataload(0x8f60), f_q)) +mstore(0x9180, mod(calldataload(0x8f80), f_q)) +mstore(0x91a0, mod(calldataload(0x8fa0), f_q)) +mstore(0x91c0, mod(calldataload(0x8fc0), f_q)) +mstore(0x91e0, mod(calldataload(0x8fe0), f_q)) +mstore(0x9200, mod(calldataload(0x9000), f_q)) +mstore(0x9220, mod(calldataload(0x9020), f_q)) +mstore(0x9240, mod(calldataload(0x9040), f_q)) +mstore(0x9260, mod(calldataload(0x9060), f_q)) +mstore(0x9280, mod(calldataload(0x9080), f_q)) +mstore(0x92a0, mod(calldataload(0x90a0), f_q)) +mstore(0x92c0, mod(calldataload(0x90c0), f_q)) +mstore(0x92e0, mod(calldataload(0x90e0), f_q)) +mstore(0x9300, mod(calldataload(0x9100), f_q)) +mstore(0x9320, mod(calldataload(0x9120), f_q)) +mstore(0x9340, mod(calldataload(0x9140), f_q)) +mstore(0x9360, mod(calldataload(0x9160), f_q)) +mstore(0x9380, mod(calldataload(0x9180), f_q)) +mstore(0x93a0, mod(calldataload(0x91a0), f_q)) +mstore(0x93c0, mod(calldataload(0x91c0), f_q)) +mstore(0x93e0, mod(calldataload(0x91e0), f_q)) +mstore(0x9400, mod(calldataload(0x9200), f_q)) +mstore(0x9420, mod(calldataload(0x9220), f_q)) +mstore(0x9440, mod(calldataload(0x9240), f_q)) +mstore(0x9460, mod(calldataload(0x9260), f_q)) +mstore(0x9480, mod(calldataload(0x9280), f_q)) +mstore(0x94a0, mod(calldataload(0x92a0), f_q)) +mstore(0x94c0, mod(calldataload(0x92c0), f_q)) +mstore(0x94e0, mod(calldataload(0x92e0), f_q)) +mstore(0x9500, mod(calldataload(0x9300), f_q)) +mstore(0x9520, mod(calldataload(0x9320), f_q)) +mstore(0x9540, mod(calldataload(0x9340), f_q)) +mstore(0x9560, mod(calldataload(0x9360), f_q)) +mstore(0x9580, mod(calldataload(0x9380), f_q)) +mstore(0x95a0, mod(calldataload(0x93a0), f_q)) +mstore(0x95c0, mod(calldataload(0x93c0), f_q)) +mstore(0x95e0, mod(calldataload(0x93e0), f_q)) +mstore(0x9600, mod(calldataload(0x9400), f_q)) +mstore(0x9620, mod(calldataload(0x9420), f_q)) +mstore(0x9640, mod(calldataload(0x9440), f_q)) +mstore(0x9660, mod(calldataload(0x9460), f_q)) +mstore(0x9680, mod(calldataload(0x9480), f_q)) +mstore(0x96a0, mod(calldataload(0x94a0), f_q)) +mstore(0x96c0, mod(calldataload(0x94c0), f_q)) +mstore(0x96e0, mod(calldataload(0x94e0), f_q)) +mstore(0x9700, mod(calldataload(0x9500), f_q)) +mstore(0x9720, mod(calldataload(0x9520), f_q)) +mstore(0x9740, mod(calldataload(0x9540), f_q)) +mstore(0x9760, mod(calldataload(0x9560), f_q)) +mstore(0x9780, mod(calldataload(0x9580), f_q)) +mstore(0x97a0, mod(calldataload(0x95a0), f_q)) +mstore(0x97c0, mod(calldataload(0x95c0), f_q)) +mstore(0x97e0, mod(calldataload(0x95e0), f_q)) +mstore(0x9800, mod(calldataload(0x9600), f_q)) +mstore(0x9820, mod(calldataload(0x9620), f_q)) +mstore(0x9840, mod(calldataload(0x9640), f_q)) +mstore(0x9860, mod(calldataload(0x9660), f_q)) +mstore(0x9880, mod(calldataload(0x9680), f_q)) +mstore(0x98a0, mod(calldataload(0x96a0), f_q)) +mstore(0x98c0, mod(calldataload(0x96c0), f_q)) +mstore(0x98e0, mod(calldataload(0x96e0), f_q)) +mstore(0x9900, mod(calldataload(0x9700), f_q)) +mstore(0x9920, mod(calldataload(0x9720), f_q)) +mstore(0x9940, mod(calldataload(0x9740), f_q)) +mstore(0x9960, mod(calldataload(0x9760), f_q)) +mstore(0x9980, mod(calldataload(0x9780), f_q)) +mstore(0x99a0, mod(calldataload(0x97a0), f_q)) +mstore(0x99c0, mod(calldataload(0x97c0), f_q)) +mstore(0x99e0, mod(calldataload(0x97e0), f_q)) +mstore(0x9a00, mod(calldataload(0x9800), f_q)) +mstore(0x9a20, mod(calldataload(0x9820), f_q)) +mstore(0x9a40, mod(calldataload(0x9840), f_q)) +mstore(0x9a60, mod(calldataload(0x9860), f_q)) +mstore(0x9a80, mod(calldataload(0x9880), f_q)) +mstore(0x9aa0, mod(calldataload(0x98a0), f_q)) +mstore(0x9ac0, mod(calldataload(0x98c0), f_q)) +mstore(0x9ae0, mod(calldataload(0x98e0), f_q)) +mstore(0x9b00, mod(calldataload(0x9900), f_q)) +mstore(0x9b20, mod(calldataload(0x9920), f_q)) +mstore(0x9b40, mod(calldataload(0x9940), f_q)) +mstore(0x9b60, mod(calldataload(0x9960), f_q)) +mstore(0x9b80, mod(calldataload(0x9980), f_q)) +mstore(0x9ba0, mod(calldataload(0x99a0), f_q)) +mstore(0x9bc0, mod(calldataload(0x99c0), f_q)) +mstore(0x9be0, mod(calldataload(0x99e0), f_q)) +mstore(0x9c00, mod(calldataload(0x9a00), f_q)) +mstore(0x9c20, mod(calldataload(0x9a20), f_q)) +mstore(0x9c40, mod(calldataload(0x9a40), f_q)) +mstore(0x9c60, mod(calldataload(0x9a60), f_q)) +mstore(0x9c80, mod(calldataload(0x9a80), f_q)) +mstore(0x9ca0, mod(calldataload(0x9aa0), f_q)) +mstore(0x9cc0, mod(calldataload(0x9ac0), f_q)) +mstore(0x9ce0, mod(calldataload(0x9ae0), f_q)) +mstore(0x9d00, mod(calldataload(0x9b00), f_q)) +mstore(0x9d20, mod(calldataload(0x9b20), f_q)) +mstore(0x9d40, mod(calldataload(0x9b40), f_q)) +mstore(0x9d60, mod(calldataload(0x9b60), f_q)) +mstore(0x9d80, mod(calldataload(0x9b80), f_q)) +mstore(0x9da0, mod(calldataload(0x9ba0), f_q)) +mstore(0x9dc0, mod(calldataload(0x9bc0), f_q)) +mstore(0x9de0, mod(calldataload(0x9be0), f_q)) +mstore(0x9e00, mod(calldataload(0x9c00), f_q)) +mstore(0x9e20, mod(calldataload(0x9c20), f_q)) +mstore(0x9e40, mod(calldataload(0x9c40), f_q)) +mstore(0x9e60, mod(calldataload(0x9c60), f_q)) +mstore(0x9e80, mod(calldataload(0x9c80), f_q)) +mstore(0x9ea0, mod(calldataload(0x9ca0), f_q)) +mstore(0x9ec0, mod(calldataload(0x9cc0), f_q)) +mstore(0x9ee0, mod(calldataload(0x9ce0), f_q)) +mstore(0x9f00, mod(calldataload(0x9d00), f_q)) +mstore(0x9f20, mod(calldataload(0x9d20), f_q)) +mstore(0x9f40, mod(calldataload(0x9d40), f_q)) +mstore(0x9f60, mod(calldataload(0x9d60), f_q)) +mstore(0x9f80, mod(calldataload(0x9d80), f_q)) +mstore(0x9fa0, mod(calldataload(0x9da0), f_q)) +mstore(0x9fc0, mod(calldataload(0x9dc0), f_q)) +mstore(0x9fe0, mod(calldataload(0x9de0), f_q)) +mstore(0xa000, mod(calldataload(0x9e00), f_q)) +mstore(0xa020, mod(calldataload(0x9e20), f_q)) +mstore(0xa040, mod(calldataload(0x9e40), f_q)) +mstore(0xa060, mod(calldataload(0x9e60), f_q)) +mstore(0xa080, mod(calldataload(0x9e80), f_q)) +mstore(0xa0a0, mod(calldataload(0x9ea0), f_q)) +mstore(0xa0c0, mod(calldataload(0x9ec0), f_q)) +mstore(0xa0e0, mod(calldataload(0x9ee0), f_q)) +mstore(0xa100, mod(calldataload(0x9f00), f_q)) +mstore(0xa120, mod(calldataload(0x9f20), f_q)) +mstore(0xa140, mod(calldataload(0x9f40), f_q)) +mstore(0xa160, mod(calldataload(0x9f60), f_q)) +mstore(0xa180, mod(calldataload(0x9f80), f_q)) +mstore(0xa1a0, mod(calldataload(0x9fa0), f_q)) +mstore(0xa1c0, mod(calldataload(0x9fc0), f_q)) +mstore(0xa1e0, mod(calldataload(0x9fe0), f_q)) +mstore(0xa200, mod(calldataload(0xa000), f_q)) +mstore(0xa220, mod(calldataload(0xa020), f_q)) +mstore(0xa240, mod(calldataload(0xa040), f_q)) +mstore(0xa260, mod(calldataload(0xa060), f_q)) +mstore(0xa280, mod(calldataload(0xa080), f_q)) +mstore(0xa2a0, mod(calldataload(0xa0a0), f_q)) +mstore(0xa2c0, mod(calldataload(0xa0c0), f_q)) +mstore(0xa2e0, mod(calldataload(0xa0e0), f_q)) +mstore(0xa300, mod(calldataload(0xa100), f_q)) +mstore(0xa320, mod(calldataload(0xa120), f_q)) +mstore(0xa340, mod(calldataload(0xa140), f_q)) +mstore(0xa360, mod(calldataload(0xa160), f_q)) +mstore(0xa380, mod(calldataload(0xa180), f_q)) +mstore(0xa3a0, mod(calldataload(0xa1a0), f_q)) +mstore(0xa3c0, mod(calldataload(0xa1c0), f_q)) +mstore(0xa3e0, mod(calldataload(0xa1e0), f_q)) +mstore(0xa400, mod(calldataload(0xa200), f_q)) +mstore(0xa420, mod(calldataload(0xa220), f_q)) +mstore(0xa440, mod(calldataload(0xa240), f_q)) +mstore(0xa460, mod(calldataload(0xa260), f_q)) +mstore(0xa480, mod(calldataload(0xa280), f_q)) +mstore(0xa4a0, mod(calldataload(0xa2a0), f_q)) +mstore(0xa4c0, mod(calldataload(0xa2c0), f_q)) +mstore(0xa4e0, mod(calldataload(0xa2e0), f_q)) +mstore(0xa500, mod(calldataload(0xa300), f_q)) +mstore(0xa520, mod(calldataload(0xa320), f_q)) +mstore(0xa540, mod(calldataload(0xa340), f_q)) +mstore(0xa560, mod(calldataload(0xa360), f_q)) +mstore(0xa580, mod(calldataload(0xa380), f_q)) +mstore(0xa5a0, mod(calldataload(0xa3a0), f_q)) +mstore(0xa5c0, mod(calldataload(0xa3c0), f_q)) +mstore(0xa5e0, mod(calldataload(0xa3e0), f_q)) +mstore(0xa600, mod(calldataload(0xa400), f_q)) +mstore(0xa620, mod(calldataload(0xa420), f_q)) +mstore(0xa640, mod(calldataload(0xa440), f_q)) +mstore(0xa660, mod(calldataload(0xa460), f_q)) +mstore(0xa680, mod(calldataload(0xa480), f_q)) +mstore(0xa6a0, mod(calldataload(0xa4a0), f_q)) +mstore(0xa6c0, mod(calldataload(0xa4c0), f_q)) +mstore(0xa6e0, mod(calldataload(0xa4e0), f_q)) +mstore(0xa700, mod(calldataload(0xa500), f_q)) +mstore(0xa720, mod(calldataload(0xa520), f_q)) +mstore(0xa740, mod(calldataload(0xa540), f_q)) +mstore(0xa760, mod(calldataload(0xa560), f_q)) +mstore(0xa780, mod(calldataload(0xa580), f_q)) +mstore(0xa7a0, mod(calldataload(0xa5a0), f_q)) +mstore(0xa7c0, mod(calldataload(0xa5c0), f_q)) +mstore(0xa7e0, mod(calldataload(0xa5e0), f_q)) +mstore(0xa800, mod(calldataload(0xa600), f_q)) +mstore(0xa820, mod(calldataload(0xa620), f_q)) +mstore(0xa840, mod(calldataload(0xa640), f_q)) +mstore(0xa860, mod(calldataload(0xa660), f_q)) +mstore(0xa880, mod(calldataload(0xa680), f_q)) +mstore(0xa8a0, mod(calldataload(0xa6a0), f_q)) +mstore(0xa8c0, mod(calldataload(0xa6c0), f_q)) +mstore(0xa8e0, mod(calldataload(0xa6e0), f_q)) +mstore(0xa900, mod(calldataload(0xa700), f_q)) +mstore(0xa920, mod(calldataload(0xa720), f_q)) +mstore(0xa940, mod(calldataload(0xa740), f_q)) +mstore(0xa960, mod(calldataload(0xa760), f_q)) +mstore(0xa980, mod(calldataload(0xa780), f_q)) +mstore(0xa9a0, mod(calldataload(0xa7a0), f_q)) +mstore(0xa9c0, mod(calldataload(0xa7c0), f_q)) +mstore(0xa9e0, mod(calldataload(0xa7e0), f_q)) +mstore(0xaa00, mod(calldataload(0xa800), f_q)) +mstore(0xaa20, mod(calldataload(0xa820), f_q)) +mstore(0xaa40, mod(calldataload(0xa840), f_q)) +mstore(0xaa60, mod(calldataload(0xa860), f_q)) +mstore(0xaa80, mod(calldataload(0xa880), f_q)) +mstore(0xaaa0, mod(calldataload(0xa8a0), f_q)) +mstore(0xaac0, mod(calldataload(0xa8c0), f_q)) +mstore(0xaae0, mod(calldataload(0xa8e0), f_q)) +mstore(0xab00, mod(calldataload(0xa900), f_q)) +mstore(0xab20, mod(calldataload(0xa920), f_q)) +mstore(0xab40, mod(calldataload(0xa940), f_q)) +mstore(0xab60, mod(calldataload(0xa960), f_q)) +mstore(0xab80, mod(calldataload(0xa980), f_q)) +mstore(0xaba0, mod(calldataload(0xa9a0), f_q)) +mstore(0xabc0, mod(calldataload(0xa9c0), f_q)) +mstore(0xabe0, mod(calldataload(0xa9e0), f_q)) +mstore(0xac00, mod(calldataload(0xaa00), f_q)) +mstore(0xac20, mod(calldataload(0xaa20), f_q)) +mstore(0xac40, mod(calldataload(0xaa40), f_q)) +mstore(0xac60, mod(calldataload(0xaa60), f_q)) +mstore(0xac80, mod(calldataload(0xaa80), f_q)) +mstore(0xaca0, mod(calldataload(0xaaa0), f_q)) +mstore(0xacc0, mod(calldataload(0xaac0), f_q)) +mstore(0xace0, mod(calldataload(0xaae0), f_q)) +mstore(0xad00, mod(calldataload(0xab00), f_q)) +mstore(0xad20, mod(calldataload(0xab20), f_q)) +mstore(0xad40, mod(calldataload(0xab40), f_q)) +mstore(0xad60, mod(calldataload(0xab60), f_q)) +mstore(0xad80, mod(calldataload(0xab80), f_q)) +mstore(0xada0, mod(calldataload(0xaba0), f_q)) +mstore(0xadc0, mod(calldataload(0xabc0), f_q)) +mstore(0xade0, mod(calldataload(0xabe0), f_q)) +mstore(0xae00, mod(calldataload(0xac00), f_q)) +mstore(0xae20, mod(calldataload(0xac20), f_q)) +mstore(0xae40, mod(calldataload(0xac40), f_q)) +mstore(0xae60, mod(calldataload(0xac60), f_q)) +mstore(0xae80, mod(calldataload(0xac80), f_q)) +mstore(0xaea0, mod(calldataload(0xaca0), f_q)) +mstore(0xaec0, mod(calldataload(0xacc0), f_q)) +mstore(0xaee0, mod(calldataload(0xace0), f_q)) +mstore(0xaf00, mod(calldataload(0xad00), f_q)) +mstore(0xaf20, mod(calldataload(0xad20), f_q)) +mstore(0xaf40, mod(calldataload(0xad40), f_q)) +mstore(0xaf60, mod(calldataload(0xad60), f_q)) +mstore(0xaf80, mod(calldataload(0xad80), f_q)) +mstore(0xafa0, mod(calldataload(0xada0), f_q)) +mstore(0xafc0, mod(calldataload(0xadc0), f_q)) +mstore(0xafe0, mod(calldataload(0xade0), f_q)) +mstore(0xb000, mod(calldataload(0xae00), f_q)) +mstore(0xb020, mod(calldataload(0xae20), f_q)) +mstore(0xb040, mod(calldataload(0xae40), f_q)) +mstore(0xb060, mod(calldataload(0xae60), f_q)) +mstore(0xb080, mod(calldataload(0xae80), f_q)) +mstore(0xb0a0, mod(calldataload(0xaea0), f_q)) +mstore(0xb0c0, mod(calldataload(0xaec0), f_q)) +mstore(0xb0e0, mod(calldataload(0xaee0), f_q)) +mstore(0xb100, mod(calldataload(0xaf00), f_q)) +mstore(0xb120, mod(calldataload(0xaf20), f_q)) +mstore(0xb140, mod(calldataload(0xaf40), f_q)) +mstore(0xb160, mod(calldataload(0xaf60), f_q)) +mstore(0xb180, mod(calldataload(0xaf80), f_q)) +mstore(0xb1a0, mod(calldataload(0xafa0), f_q)) +mstore(0xb1c0, mod(calldataload(0xafc0), f_q)) +mstore(0xb1e0, mod(calldataload(0xafe0), f_q)) +mstore(0xb200, mod(calldataload(0xb000), f_q)) +mstore(0xb220, mod(calldataload(0xb020), f_q)) +mstore(0xb240, mod(calldataload(0xb040), f_q)) +mstore(0xb260, mod(calldataload(0xb060), f_q)) +mstore(0xb280, mod(calldataload(0xb080), f_q)) +mstore(0xb2a0, mod(calldataload(0xb0a0), f_q)) +mstore(0xb2c0, mod(calldataload(0xb0c0), f_q)) +mstore(0xb2e0, mod(calldataload(0xb0e0), f_q)) +mstore(0xb300, mod(calldataload(0xb100), f_q)) +mstore(0xb320, mod(calldataload(0xb120), f_q)) +mstore(0xb340, mod(calldataload(0xb140), f_q)) +mstore(0xb360, mod(calldataload(0xb160), f_q)) +mstore(0xb380, mod(calldataload(0xb180), f_q)) +mstore(0xb3a0, mod(calldataload(0xb1a0), f_q)) +mstore(0xb3c0, mod(calldataload(0xb1c0), f_q)) +mstore(0xb3e0, mod(calldataload(0xb1e0), f_q)) +mstore(0xb400, mod(calldataload(0xb200), f_q)) +mstore(0xb420, mod(calldataload(0xb220), f_q)) +mstore(0xb440, mod(calldataload(0xb240), f_q)) +mstore(0xb460, mod(calldataload(0xb260), f_q)) +mstore(0xb480, mod(calldataload(0xb280), f_q)) +mstore(0xb4a0, mod(calldataload(0xb2a0), f_q)) +mstore(0xb4c0, mod(calldataload(0xb2c0), f_q)) +mstore(0xb4e0, mod(calldataload(0xb2e0), f_q)) +mstore(0xb500, mod(calldataload(0xb300), f_q)) +mstore(0xb520, mod(calldataload(0xb320), f_q)) +mstore(0xb540, mod(calldataload(0xb340), f_q)) +mstore(0xb560, mod(calldataload(0xb360), f_q)) +mstore(0xb580, mod(calldataload(0xb380), f_q)) +mstore(0xb5a0, mod(calldataload(0xb3a0), f_q)) +mstore(0xb5c0, mod(calldataload(0xb3c0), f_q)) +mstore(0xb5e0, mod(calldataload(0xb3e0), f_q)) +mstore(0xb600, mod(calldataload(0xb400), f_q)) +mstore(0xb620, mod(calldataload(0xb420), f_q)) +mstore(0xb640, mod(calldataload(0xb440), f_q)) +mstore(0xb660, mod(calldataload(0xb460), f_q)) +mstore(0xb680, mod(calldataload(0xb480), f_q)) +mstore(0xb6a0, mod(calldataload(0xb4a0), f_q)) +mstore(0xb6c0, mod(calldataload(0xb4c0), f_q)) +mstore(0xb6e0, mod(calldataload(0xb4e0), f_q)) +mstore(0xb700, mod(calldataload(0xb500), f_q)) +mstore(0xb720, mod(calldataload(0xb520), f_q)) +mstore(0xb740, mod(calldataload(0xb540), f_q)) +mstore(0xb760, mod(calldataload(0xb560), f_q)) +mstore(0xb780, mod(calldataload(0xb580), f_q)) +mstore(0xb7a0, mod(calldataload(0xb5a0), f_q)) +mstore(0xb7c0, mod(calldataload(0xb5c0), f_q)) +mstore(0xb7e0, mod(calldataload(0xb5e0), f_q)) +mstore(0xb800, mod(calldataload(0xb600), f_q)) +mstore(0xb820, mod(calldataload(0xb620), f_q)) +mstore(0xb840, mod(calldataload(0xb640), f_q)) +mstore(0xb860, mod(calldataload(0xb660), f_q)) +mstore(0xb880, mod(calldataload(0xb680), f_q)) +mstore(0xb8a0, mod(calldataload(0xb6a0), f_q)) +mstore(0xb8c0, mod(calldataload(0xb6c0), f_q)) +mstore(0xb8e0, mod(calldataload(0xb6e0), f_q)) +mstore(0xb900, mod(calldataload(0xb700), f_q)) +mstore(0xb920, mod(calldataload(0xb720), f_q)) +mstore(0xb940, mod(calldataload(0xb740), f_q)) +mstore(0xb960, mod(calldataload(0xb760), f_q)) +mstore(0xb980, mod(calldataload(0xb780), f_q)) +mstore(0xb9a0, mod(calldataload(0xb7a0), f_q)) +mstore(0xb9c0, mod(calldataload(0xb7c0), f_q)) +mstore(0xb9e0, mod(calldataload(0xb7e0), f_q)) +mstore(0xba00, mod(calldataload(0xb800), f_q)) +mstore(0xba20, mod(calldataload(0xb820), f_q)) +mstore(0xba40, mod(calldataload(0xb840), f_q)) +mstore(0xba60, mod(calldataload(0xb860), f_q)) +mstore(0xba80, mod(calldataload(0xb880), f_q)) +mstore(0xbaa0, mod(calldataload(0xb8a0), f_q)) +mstore(0xbac0, mod(calldataload(0xb8c0), f_q)) +mstore(0xbae0, mod(calldataload(0xb8e0), f_q)) +mstore(0xbb00, mod(calldataload(0xb900), f_q)) +mstore(0xbb20, mod(calldataload(0xb920), f_q)) +mstore(0xbb40, mod(calldataload(0xb940), f_q)) +mstore(0xbb60, mod(calldataload(0xb960), f_q)) +mstore(0xbb80, mod(calldataload(0xb980), f_q)) +mstore(0xbba0, mod(calldataload(0xb9a0), f_q)) +mstore(0xbbc0, mod(calldataload(0xb9c0), f_q)) +mstore(0xbbe0, mod(calldataload(0xb9e0), f_q)) +mstore(0xbc00, mod(calldataload(0xba00), f_q)) +mstore(0xbc20, mod(calldataload(0xba20), f_q)) +mstore(0xbc40, mod(calldataload(0xba40), f_q)) +mstore(0xbc60, mod(calldataload(0xba60), f_q)) +mstore(0xbc80, mod(calldataload(0xba80), f_q)) +mstore(0xbca0, mod(calldataload(0xbaa0), f_q)) +mstore(0xbcc0, mod(calldataload(0xbac0), f_q)) +mstore(0xbce0, mod(calldataload(0xbae0), f_q)) +mstore(0xbd00, mod(calldataload(0xbb00), f_q)) +mstore(0xbd20, mod(calldataload(0xbb20), f_q)) +mstore(0xbd40, mod(calldataload(0xbb40), f_q)) +mstore(0xbd60, mod(calldataload(0xbb60), f_q)) +mstore(0xbd80, mod(calldataload(0xbb80), f_q)) +mstore(0xbda0, mod(calldataload(0xbba0), f_q)) +mstore(0xbdc0, mod(calldataload(0xbbc0), f_q)) +mstore(0xbde0, mod(calldataload(0xbbe0), f_q)) +mstore(0xbe00, mod(calldataload(0xbc00), f_q)) +mstore(0xbe20, mod(calldataload(0xbc20), f_q)) +mstore(0xbe40, mod(calldataload(0xbc40), f_q)) +mstore(0xbe60, mod(calldataload(0xbc60), f_q)) +mstore(0xbe80, mod(calldataload(0xbc80), f_q)) +mstore(0xbea0, mod(calldataload(0xbca0), f_q)) +mstore(0xbec0, mod(calldataload(0xbcc0), f_q)) +mstore(0xbee0, mod(calldataload(0xbce0), f_q)) +mstore(0xbf00, mod(calldataload(0xbd00), f_q)) +mstore(0xbf20, mod(calldataload(0xbd20), f_q)) +mstore(0xbf40, mod(calldataload(0xbd40), f_q)) +mstore(0xbf60, mod(calldataload(0xbd60), f_q)) +mstore(0xbf80, mod(calldataload(0xbd80), f_q)) +mstore(0xbfa0, mod(calldataload(0xbda0), f_q)) +mstore(0xbfc0, mod(calldataload(0xbdc0), f_q)) +mstore(0xbfe0, mod(calldataload(0xbde0), f_q)) +mstore(0xc000, mod(calldataload(0xbe00), f_q)) +mstore(0xc020, mod(calldataload(0xbe20), f_q)) +mstore(0xc040, mod(calldataload(0xbe40), f_q)) +mstore(0xc060, mod(calldataload(0xbe60), f_q)) +mstore(0xc080, mod(calldataload(0xbe80), f_q)) +mstore(0xc0a0, mod(calldataload(0xbea0), f_q)) +mstore(0xc0c0, mod(calldataload(0xbec0), f_q)) +mstore(0xc0e0, mod(calldataload(0xbee0), f_q)) +mstore(0xc100, mod(calldataload(0xbf00), f_q)) +mstore(0xc120, mod(calldataload(0xbf20), f_q)) +mstore(0xc140, mod(calldataload(0xbf40), f_q)) +mstore(0xc160, mod(calldataload(0xbf60), f_q)) +mstore(0xc180, mod(calldataload(0xbf80), f_q)) +mstore(0xc1a0, mod(calldataload(0xbfa0), f_q)) +mstore(0xc1c0, mod(calldataload(0xbfc0), f_q)) +mstore(0xc1e0, mod(calldataload(0xbfe0), f_q)) +mstore(0xc200, mod(calldataload(0xc000), f_q)) +mstore(0xc220, mod(calldataload(0xc020), f_q)) +mstore(0xc240, mod(calldataload(0xc040), f_q)) +mstore(0xc260, mod(calldataload(0xc060), f_q)) +mstore(0xc280, mod(calldataload(0xc080), f_q)) +mstore(0xc2a0, mod(calldataload(0xc0a0), f_q)) +mstore(0xc2c0, mod(calldataload(0xc0c0), f_q)) +mstore(0xc2e0, mod(calldataload(0xc0e0), f_q)) +mstore(0xc300, mod(calldataload(0xc100), f_q)) +mstore(0xc320, mod(calldataload(0xc120), f_q)) +mstore(0xc340, mod(calldataload(0xc140), f_q)) +mstore(0xc360, mod(calldataload(0xc160), f_q)) +mstore(0xc380, mod(calldataload(0xc180), f_q)) +mstore(0xc3a0, mod(calldataload(0xc1a0), f_q)) +mstore(0xc3c0, mod(calldataload(0xc1c0), f_q)) +mstore(0xc3e0, mod(calldataload(0xc1e0), f_q)) +mstore(0xc400, mod(calldataload(0xc200), f_q)) +mstore(0xc420, mod(calldataload(0xc220), f_q)) +mstore(0xc440, mod(calldataload(0xc240), f_q)) +mstore(0xc460, mod(calldataload(0xc260), f_q)) +mstore(0xc480, mod(calldataload(0xc280), f_q)) +mstore(0xc4a0, mod(calldataload(0xc2a0), f_q)) +mstore(0xc4c0, mod(calldataload(0xc2c0), f_q)) +mstore(0xc4e0, mod(calldataload(0xc2e0), f_q)) +mstore(0xc500, mod(calldataload(0xc300), f_q)) +mstore(0xc520, mod(calldataload(0xc320), f_q)) +mstore(0xc540, mod(calldataload(0xc340), f_q)) +mstore(0xc560, mod(calldataload(0xc360), f_q)) +mstore(0xc580, mod(calldataload(0xc380), f_q)) +mstore(0xc5a0, mod(calldataload(0xc3a0), f_q)) +mstore(0xc5c0, mod(calldataload(0xc3c0), f_q)) +mstore(0xc5e0, mod(calldataload(0xc3e0), f_q)) +mstore(0xc600, mod(calldataload(0xc400), f_q)) +mstore(0xc620, mod(calldataload(0xc420), f_q)) +mstore(0xc640, mod(calldataload(0xc440), f_q)) +mstore(0xc660, mod(calldataload(0xc460), f_q)) +mstore(0xc680, mod(calldataload(0xc480), f_q)) +mstore(0xc6a0, mod(calldataload(0xc4a0), f_q)) +mstore(0xc6c0, mod(calldataload(0xc4c0), f_q)) +mstore(0xc6e0, mod(calldataload(0xc4e0), f_q)) +mstore(0xc700, mod(calldataload(0xc500), f_q)) +mstore(0xc720, mod(calldataload(0xc520), f_q)) +mstore(0xc740, mod(calldataload(0xc540), f_q)) +mstore(0xc760, mod(calldataload(0xc560), f_q)) +mstore(0xc780, mod(calldataload(0xc580), f_q)) +mstore(0xc7a0, mod(calldataload(0xc5a0), f_q)) +mstore(0xc7c0, mod(calldataload(0xc5c0), f_q)) +mstore(0xc7e0, mod(calldataload(0xc5e0), f_q)) +mstore(0xc800, mod(calldataload(0xc600), f_q)) +mstore(0xc820, mod(calldataload(0xc620), f_q)) +mstore(0xc840, mod(calldataload(0xc640), f_q)) +mstore(0xc860, mod(calldataload(0xc660), f_q)) +mstore(0xc880, mod(calldataload(0xc680), f_q)) +mstore(0xc8a0, mod(calldataload(0xc6a0), f_q)) +mstore(0xc8c0, mod(calldataload(0xc6c0), f_q)) +mstore(0xc8e0, mod(calldataload(0xc6e0), f_q)) +mstore(0xc900, mod(calldataload(0xc700), f_q)) +mstore(0xc920, mod(calldataload(0xc720), f_q)) +mstore(0xc940, mod(calldataload(0xc740), f_q)) +mstore(0xc960, mod(calldataload(0xc760), f_q)) +mstore(0xc980, mod(calldataload(0xc780), f_q)) +mstore(0xc9a0, mod(calldataload(0xc7a0), f_q)) +mstore(0xc9c0, mod(calldataload(0xc7c0), f_q)) +mstore(0xc9e0, mod(calldataload(0xc7e0), f_q)) +mstore(0xca00, mod(calldataload(0xc800), f_q)) +mstore(0xca20, mod(calldataload(0xc820), f_q)) +mstore(0xca40, mod(calldataload(0xc840), f_q)) +mstore(0xca60, mod(calldataload(0xc860), f_q)) +mstore(0xca80, mod(calldataload(0xc880), f_q)) +mstore(0xcaa0, mod(calldataload(0xc8a0), f_q)) +mstore(0xcac0, mod(calldataload(0xc8c0), f_q)) +mstore(0xcae0, mod(calldataload(0xc8e0), f_q)) +mstore(0xcb00, mod(calldataload(0xc900), f_q)) +mstore(0xcb20, mod(calldataload(0xc920), f_q)) +mstore(0xcb40, mod(calldataload(0xc940), f_q)) +mstore(0xcb60, mod(calldataload(0xc960), f_q)) +mstore(0xcb80, mod(calldataload(0xc980), f_q)) +mstore(0xcba0, mod(calldataload(0xc9a0), f_q)) +mstore(0xcbc0, mod(calldataload(0xc9c0), f_q)) +mstore(0xcbe0, mod(calldataload(0xc9e0), f_q)) +mstore(0xcc00, mod(calldataload(0xca00), f_q)) +mstore(0xcc20, mod(calldataload(0xca20), f_q)) +mstore(0xcc40, mod(calldataload(0xca40), f_q)) +mstore(0xcc60, mod(calldataload(0xca60), f_q)) +mstore(0xcc80, mod(calldataload(0xca80), f_q)) +mstore(0xcca0, mod(calldataload(0xcaa0), f_q)) +mstore(0xccc0, mod(calldataload(0xcac0), f_q)) +mstore(0xcce0, mod(calldataload(0xcae0), f_q)) +mstore(0xcd00, mod(calldataload(0xcb00), f_q)) +mstore(0xcd20, mod(calldataload(0xcb20), f_q)) +mstore(0xcd40, mod(calldataload(0xcb40), f_q)) +mstore(0xcd60, mod(calldataload(0xcb60), f_q)) +mstore(0xcd80, mod(calldataload(0xcb80), f_q)) +mstore(0xcda0, mod(calldataload(0xcba0), f_q)) +mstore(0xcdc0, mod(calldataload(0xcbc0), f_q)) +mstore(0xcde0, mod(calldataload(0xcbe0), f_q)) +mstore(0xce00, mod(calldataload(0xcc00), f_q)) +mstore(0xce20, mod(calldataload(0xcc20), f_q)) +mstore(0xce40, mod(calldataload(0xcc40), f_q)) +mstore(0xce60, mod(calldataload(0xcc60), f_q)) +mstore(0xce80, mod(calldataload(0xcc80), f_q)) +mstore(0xcea0, mod(calldataload(0xcca0), f_q)) +mstore(0xcec0, mod(calldataload(0xccc0), f_q)) +mstore(0xcee0, mod(calldataload(0xcce0), f_q)) +mstore(0xcf00, mod(calldataload(0xcd00), f_q)) +mstore(0xcf20, mod(calldataload(0xcd20), f_q)) +mstore(0xcf40, mod(calldataload(0xcd40), f_q)) +mstore(0xcf60, mod(calldataload(0xcd60), f_q)) +mstore(0xcf80, mod(calldataload(0xcd80), f_q)) +mstore(0xcfa0, mod(calldataload(0xcda0), f_q)) +mstore(0xcfc0, mod(calldataload(0xcdc0), f_q)) +mstore(0xcfe0, mod(calldataload(0xcde0), f_q)) +mstore(0xd000, mod(calldataload(0xce00), f_q)) +mstore(0xd020, mod(calldataload(0xce20), f_q)) +mstore(0xd040, mod(calldataload(0xce40), f_q)) +mstore(0xd060, mod(calldataload(0xce60), f_q)) +mstore(0xd080, mod(calldataload(0xce80), f_q)) +mstore(0xd0a0, mod(calldataload(0xcea0), f_q)) +mstore(0xd0c0, mod(calldataload(0xcec0), f_q)) +mstore(0xd0e0, mod(calldataload(0xcee0), f_q)) +mstore(0xd100, mod(calldataload(0xcf00), f_q)) +mstore(0xd120, mod(calldataload(0xcf20), f_q)) +mstore(0xd140, mod(calldataload(0xcf40), f_q)) +mstore(0xd160, mod(calldataload(0xcf60), f_q)) +mstore(0xd180, mod(calldataload(0xcf80), f_q)) +mstore(0xd1a0, mod(calldataload(0xcfa0), f_q)) +mstore(0xd1c0, mod(calldataload(0xcfc0), f_q)) +mstore(0xd1e0, mod(calldataload(0xcfe0), f_q)) +mstore(0xd200, mod(calldataload(0xd000), f_q)) +mstore(0xd220, mod(calldataload(0xd020), f_q)) +mstore(0xd240, mod(calldataload(0xd040), f_q)) +mstore(0xd260, mod(calldataload(0xd060), f_q)) +mstore(0xd280, mod(calldataload(0xd080), f_q)) +mstore(0xd2a0, mod(calldataload(0xd0a0), f_q)) +mstore(0xd2c0, mod(calldataload(0xd0c0), f_q)) +mstore(0xd2e0, mod(calldataload(0xd0e0), f_q)) +mstore(0xd300, mod(calldataload(0xd100), f_q)) +mstore(0xd320, mod(calldataload(0xd120), f_q)) +mstore(0xd340, mod(calldataload(0xd140), f_q)) +mstore(0xd360, mod(calldataload(0xd160), f_q)) +mstore(0xd380, mod(calldataload(0xd180), f_q)) +mstore(0xd3a0, mod(calldataload(0xd1a0), f_q)) +mstore(0xd3c0, mod(calldataload(0xd1c0), f_q)) +mstore(0xd3e0, mod(calldataload(0xd1e0), f_q)) +mstore(0xd400, mod(calldataload(0xd200), f_q)) +mstore(0xd420, mod(calldataload(0xd220), f_q)) +mstore(0xd440, mod(calldataload(0xd240), f_q)) +mstore(0xd460, mod(calldataload(0xd260), f_q)) +mstore(0xd480, mod(calldataload(0xd280), f_q)) +mstore(0xd4a0, mod(calldataload(0xd2a0), f_q)) +mstore(0xd4c0, mod(calldataload(0xd2c0), f_q)) +mstore(0xd4e0, mod(calldataload(0xd2e0), f_q)) +mstore(0xd500, mod(calldataload(0xd300), f_q)) +mstore(0xd520, mod(calldataload(0xd320), f_q)) +mstore(0xd540, mod(calldataload(0xd340), f_q)) +mstore(0xd560, mod(calldataload(0xd360), f_q)) +mstore(0xd580, mod(calldataload(0xd380), f_q)) +mstore(0xd5a0, mod(calldataload(0xd3a0), f_q)) +mstore(0xd5c0, mod(calldataload(0xd3c0), f_q)) +mstore(0xd5e0, mod(calldataload(0xd3e0), f_q)) +mstore(0xd600, mod(calldataload(0xd400), f_q)) +mstore(0xd620, mod(calldataload(0xd420), f_q)) +mstore(0xd640, mod(calldataload(0xd440), f_q)) +mstore(0xd660, mod(calldataload(0xd460), f_q)) +mstore(0xd680, mod(calldataload(0xd480), f_q)) +mstore(0xd6a0, mod(calldataload(0xd4a0), f_q)) +mstore(0xd6c0, mod(calldataload(0xd4c0), f_q)) +mstore(0xd6e0, mod(calldataload(0xd4e0), f_q)) +mstore(0xd700, mod(calldataload(0xd500), f_q)) +mstore(0xd720, mod(calldataload(0xd520), f_q)) +mstore(0xd740, mod(calldataload(0xd540), f_q)) +mstore(0xd760, mod(calldataload(0xd560), f_q)) +mstore(0xd780, mod(calldataload(0xd580), f_q)) +mstore(0xd7a0, mod(calldataload(0xd5a0), f_q)) +mstore(0xd7c0, mod(calldataload(0xd5c0), f_q)) +mstore(0xd7e0, mod(calldataload(0xd5e0), f_q)) +mstore(0xd800, mod(calldataload(0xd600), f_q)) +mstore(0xd820, mod(calldataload(0xd620), f_q)) +mstore(0xd840, mod(calldataload(0xd640), f_q)) +mstore(0xd860, mod(calldataload(0xd660), f_q)) +mstore(0xd880, mod(calldataload(0xd680), f_q)) +mstore(0xd8a0, mod(calldataload(0xd6a0), f_q)) +mstore(0xd8c0, mod(calldataload(0xd6c0), f_q)) +mstore(0xd8e0, mod(calldataload(0xd6e0), f_q)) +mstore(0xd900, mod(calldataload(0xd700), f_q)) +mstore(0xd920, mod(calldataload(0xd720), f_q)) +mstore(0xd940, mod(calldataload(0xd740), f_q)) +mstore(0xd960, mod(calldataload(0xd760), f_q)) +mstore(0xd980, mod(calldataload(0xd780), f_q)) +mstore(0xd9a0, mod(calldataload(0xd7a0), f_q)) +mstore(0xd9c0, mod(calldataload(0xd7c0), f_q)) +mstore(0xd9e0, mod(calldataload(0xd7e0), f_q)) +mstore(0xda00, mod(calldataload(0xd800), f_q)) +mstore(0xda20, mod(calldataload(0xd820), f_q)) +mstore(0xda40, mod(calldataload(0xd840), f_q)) +mstore(0xda60, mod(calldataload(0xd860), f_q)) +mstore(0xda80, mod(calldataload(0xd880), f_q)) +mstore(0xdaa0, mod(calldataload(0xd8a0), f_q)) +mstore(0xdac0, mod(calldataload(0xd8c0), f_q)) +mstore(0xdae0, mod(calldataload(0xd8e0), f_q)) +mstore(0xdb00, mod(calldataload(0xd900), f_q)) +mstore(0xdb20, mod(calldataload(0xd920), f_q)) +mstore(0xdb40, mod(calldataload(0xd940), f_q)) +mstore(0xdb60, mod(calldataload(0xd960), f_q)) +mstore(0xdb80, mod(calldataload(0xd980), f_q)) +mstore(0xdba0, mod(calldataload(0xd9a0), f_q)) +mstore(0xdbc0, mod(calldataload(0xd9c0), f_q)) +mstore(0xdbe0, mod(calldataload(0xd9e0), f_q)) +mstore(0xdc00, mod(calldataload(0xda00), f_q)) +mstore(0xdc20, mod(calldataload(0xda20), f_q)) +mstore(0xdc40, mod(calldataload(0xda40), f_q)) +mstore(0xdc60, mod(calldataload(0xda60), f_q)) +mstore(0xdc80, mod(calldataload(0xda80), f_q)) +mstore(0xdca0, mod(calldataload(0xdaa0), f_q)) +mstore(0xdcc0, mod(calldataload(0xdac0), f_q)) +mstore(0xdce0, mod(calldataload(0xdae0), f_q)) +mstore(0xdd00, mod(calldataload(0xdb00), f_q)) +mstore(0xdd20, mod(calldataload(0xdb20), f_q)) +mstore(0xdd40, mod(calldataload(0xdb40), f_q)) +mstore(0xdd60, mod(calldataload(0xdb60), f_q)) +mstore(0xdd80, mod(calldataload(0xdb80), f_q)) +mstore(0xdda0, mod(calldataload(0xdba0), f_q)) +mstore(0xddc0, mod(calldataload(0xdbc0), f_q)) +mstore(0xdde0, mod(calldataload(0xdbe0), f_q)) +mstore(0xde00, mod(calldataload(0xdc00), f_q)) +mstore(0xde20, mod(calldataload(0xdc20), f_q)) +mstore(0xde40, mod(calldataload(0xdc40), f_q)) +mstore(0xde60, mod(calldataload(0xdc60), f_q)) +mstore(0xde80, mod(calldataload(0xdc80), f_q)) +mstore(0xdea0, mod(calldataload(0xdca0), f_q)) +mstore(0xdec0, mod(calldataload(0xdcc0), f_q)) +mstore(0xdee0, mod(calldataload(0xdce0), f_q)) +mstore(0xdf00, mod(calldataload(0xdd00), f_q)) +mstore(0xdf20, mod(calldataload(0xdd20), f_q)) +mstore(0xdf40, mod(calldataload(0xdd40), f_q)) +mstore(0xdf60, mod(calldataload(0xdd60), f_q)) +mstore(0xdf80, mod(calldataload(0xdd80), f_q)) +mstore(0xdfa0, mod(calldataload(0xdda0), f_q)) +mstore(0xdfc0, mod(calldataload(0xddc0), f_q)) +mstore(0xdfe0, mod(calldataload(0xdde0), f_q)) +mstore(0xe000, mod(calldataload(0xde00), f_q)) +mstore(0xe020, mod(calldataload(0xde20), f_q)) +mstore(0xe040, mod(calldataload(0xde40), f_q)) +mstore(0xe060, mod(calldataload(0xde60), f_q)) +mstore(0xe080, mod(calldataload(0xde80), f_q)) +mstore(0xe0a0, mod(calldataload(0xdea0), f_q)) +mstore(0xe0c0, mod(calldataload(0xdec0), f_q)) +mstore(0xe0e0, mod(calldataload(0xdee0), f_q)) +mstore(0xe100, mod(calldataload(0xdf00), f_q)) +mstore(0xe120, mod(calldataload(0xdf20), f_q)) +mstore(0xe140, mod(calldataload(0xdf40), f_q)) +mstore(0xe160, mod(calldataload(0xdf60), f_q)) +mstore(0xe180, mod(calldataload(0xdf80), f_q)) +mstore(0xe1a0, mod(calldataload(0xdfa0), f_q)) +mstore(0xe1c0, mod(calldataload(0xdfc0), f_q)) +mstore(0xe1e0, mod(calldataload(0xdfe0), f_q)) +mstore(0xe200, mod(calldataload(0xe000), f_q)) +mstore(0xe220, mod(calldataload(0xe020), f_q)) +mstore(0xe240, mod(calldataload(0xe040), f_q)) +mstore(0xe260, mod(calldataload(0xe060), f_q)) +mstore(0xe280, mod(calldataload(0xe080), f_q)) +mstore(0xe2a0, mod(calldataload(0xe0a0), f_q)) +mstore(0xe2c0, mod(calldataload(0xe0c0), f_q)) +mstore(0xe2e0, mod(calldataload(0xe0e0), f_q)) +mstore(0xe300, mod(calldataload(0xe100), f_q)) +mstore(0xe320, mod(calldataload(0xe120), f_q)) +mstore(0xe340, mod(calldataload(0xe140), f_q)) +mstore(0xe360, mod(calldataload(0xe160), f_q)) +mstore(0xe380, mod(calldataload(0xe180), f_q)) +mstore(0xe3a0, mod(calldataload(0xe1a0), f_q)) +mstore(0xe3c0, mod(calldataload(0xe1c0), f_q)) +mstore(0xe3e0, mod(calldataload(0xe1e0), f_q)) +mstore(0xe400, mod(calldataload(0xe200), f_q)) +mstore(0xe420, mod(calldataload(0xe220), f_q)) +mstore(0xe440, mod(calldataload(0xe240), f_q)) +mstore(0xe460, mod(calldataload(0xe260), f_q)) +mstore(0xe480, mod(calldataload(0xe280), f_q)) +mstore(0xe4a0, mod(calldataload(0xe2a0), f_q)) +mstore(0xe4c0, mod(calldataload(0xe2c0), f_q)) +mstore(0xe4e0, mod(calldataload(0xe2e0), f_q)) +mstore(0xe500, mod(calldataload(0xe300), f_q)) +mstore(0xe520, mod(calldataload(0xe320), f_q)) +mstore(0xe540, mod(calldataload(0xe340), f_q)) +mstore(0xe560, mod(calldataload(0xe360), f_q)) +mstore(0xe580, mod(calldataload(0xe380), f_q)) +mstore(0xe5a0, mod(calldataload(0xe3a0), f_q)) +mstore(0xe5c0, mod(calldataload(0xe3c0), f_q)) +mstore(0xe5e0, mod(calldataload(0xe3e0), f_q)) +mstore(0xe600, mod(calldataload(0xe400), f_q)) +mstore(0xe620, mod(calldataload(0xe420), f_q)) +mstore(0xe640, mod(calldataload(0xe440), f_q)) +mstore(0xe660, mod(calldataload(0xe460), f_q)) +mstore(0xe680, mod(calldataload(0xe480), f_q)) +mstore(0xe6a0, mod(calldataload(0xe4a0), f_q)) +mstore(0xe6c0, mod(calldataload(0xe4c0), f_q)) +mstore(0xe6e0, mod(calldataload(0xe4e0), f_q)) +mstore(0xe700, mod(calldataload(0xe500), f_q)) +mstore(0xe720, mod(calldataload(0xe520), f_q)) +mstore(0xe740, mod(calldataload(0xe540), f_q)) +mstore(0xe760, mod(calldataload(0xe560), f_q)) +mstore(0xe780, mod(calldataload(0xe580), f_q)) +mstore(0xe7a0, mod(calldataload(0xe5a0), f_q)) +mstore(0xe7c0, mod(calldataload(0xe5c0), f_q)) +mstore(0xe7e0, mod(calldataload(0xe5e0), f_q)) +mstore(0xe800, mod(calldataload(0xe600), f_q)) +mstore(0xe820, mod(calldataload(0xe620), f_q)) +mstore(0xe840, mod(calldataload(0xe640), f_q)) +mstore(0xe860, mod(calldataload(0xe660), f_q)) +mstore(0xe880, mod(calldataload(0xe680), f_q)) +mstore(0xe8a0, mod(calldataload(0xe6a0), f_q)) +mstore(0xe8c0, mod(calldataload(0xe6c0), f_q)) +mstore(0xe8e0, mod(calldataload(0xe6e0), f_q)) +mstore(0xe900, mod(calldataload(0xe700), f_q)) +mstore(0xe920, mod(calldataload(0xe720), f_q)) +mstore(0xe940, mod(calldataload(0xe740), f_q)) +mstore(0xe960, mod(calldataload(0xe760), f_q)) +mstore(0xe980, mod(calldataload(0xe780), f_q)) +mstore(0xe9a0, mod(calldataload(0xe7a0), f_q)) +mstore(0xe9c0, mod(calldataload(0xe7c0), f_q)) +mstore(0xe9e0, mod(calldataload(0xe7e0), f_q)) +mstore(0xea00, mod(calldataload(0xe800), f_q)) +mstore(0xea20, mod(calldataload(0xe820), f_q)) +mstore(0xea40, mod(calldataload(0xe840), f_q)) +mstore(0xea60, mod(calldataload(0xe860), f_q)) +mstore(0xea80, mod(calldataload(0xe880), f_q)) +mstore(0xeaa0, mod(calldataload(0xe8a0), f_q)) +mstore(0xeac0, mod(calldataload(0xe8c0), f_q)) +mstore(0xeae0, mod(calldataload(0xe8e0), f_q)) +mstore(0xeb00, mod(calldataload(0xe900), f_q)) +mstore(0xeb20, mod(calldataload(0xe920), f_q)) +mstore(0xeb40, mod(calldataload(0xe940), f_q)) +mstore(0xeb60, mod(calldataload(0xe960), f_q)) +mstore(0xeb80, mod(calldataload(0xe980), f_q)) +mstore(0xeba0, mod(calldataload(0xe9a0), f_q)) +mstore(0xebc0, mod(calldataload(0xe9c0), f_q)) +mstore(0xebe0, mod(calldataload(0xe9e0), f_q)) +mstore(0xec00, mod(calldataload(0xea00), f_q)) +mstore(0xec20, mod(calldataload(0xea20), f_q)) +mstore(0xec40, mod(calldataload(0xea40), f_q)) +mstore(0xec60, mod(calldataload(0xea60), f_q)) +mstore(0xec80, mod(calldataload(0xea80), f_q)) +mstore(0xeca0, mod(calldataload(0xeaa0), f_q)) +mstore(0xecc0, mod(calldataload(0xeac0), f_q)) +mstore(0xece0, mod(calldataload(0xeae0), f_q)) +mstore(0xed00, mod(calldataload(0xeb00), f_q)) +mstore(0xed20, mod(calldataload(0xeb20), f_q)) +mstore(0xed40, mod(calldataload(0xeb40), f_q)) +mstore(0xed60, mod(calldataload(0xeb60), f_q)) +mstore(0xed80, mod(calldataload(0xeb80), f_q)) +mstore(0xeda0, mod(calldataload(0xeba0), f_q)) +mstore(0xedc0, mod(calldataload(0xebc0), f_q)) +mstore(0xede0, mod(calldataload(0xebe0), f_q)) +mstore(0xee00, mod(calldataload(0xec00), f_q)) +mstore(0xee20, mod(calldataload(0xec20), f_q)) +mstore(0xee40, mod(calldataload(0xec40), f_q)) +mstore(0xee60, mod(calldataload(0xec60), f_q)) +mstore(0xee80, mod(calldataload(0xec80), f_q)) +mstore(0xeea0, mod(calldataload(0xeca0), f_q)) +mstore(0xeec0, mod(calldataload(0xecc0), f_q)) +mstore(0xeee0, mod(calldataload(0xece0), f_q)) +mstore(0xef00, mod(calldataload(0xed00), f_q)) +mstore(0xef20, mod(calldataload(0xed20), f_q)) +mstore(0xef40, mod(calldataload(0xed40), f_q)) +mstore(0xef60, mod(calldataload(0xed60), f_q)) +mstore(0xef80, mod(calldataload(0xed80), f_q)) +mstore(0xefa0, mod(calldataload(0xeda0), f_q)) +mstore(0xefc0, mod(calldataload(0xedc0), f_q)) +mstore(0xefe0, mod(calldataload(0xede0), f_q)) +mstore(0xf000, mod(calldataload(0xee00), f_q)) +mstore(0xf020, mod(calldataload(0xee20), f_q)) +mstore(0xf040, mod(calldataload(0xee40), f_q)) +mstore(0xf060, mod(calldataload(0xee60), f_q)) +mstore(0xf080, mod(calldataload(0xee80), f_q)) +mstore(0xf0a0, mod(calldataload(0xeea0), f_q)) +mstore(0xf0c0, mod(calldataload(0xeec0), f_q)) +mstore(0xf0e0, mod(calldataload(0xeee0), f_q)) +mstore(0xf100, mod(calldataload(0xef00), f_q)) +mstore(0xf120, mod(calldataload(0xef20), f_q)) +mstore(0xf140, mod(calldataload(0xef40), f_q)) +mstore(0xf160, mod(calldataload(0xef60), f_q)) +mstore(0xf180, mod(calldataload(0xef80), f_q)) +mstore(0xf1a0, mod(calldataload(0xefa0), f_q)) +mstore(0xf1c0, mod(calldataload(0xefc0), f_q)) +mstore(0xf1e0, mod(calldataload(0xefe0), f_q)) +mstore(0xf200, mod(calldataload(0xf000), f_q)) +mstore(0xf220, mod(calldataload(0xf020), f_q)) +mstore(0xf240, mod(calldataload(0xf040), f_q)) +mstore(0xf260, mod(calldataload(0xf060), f_q)) +mstore(0xf280, mod(calldataload(0xf080), f_q)) +mstore(0xf2a0, mod(calldataload(0xf0a0), f_q)) +mstore(0xf2c0, mod(calldataload(0xf0c0), f_q)) +mstore(0xf2e0, mod(calldataload(0xf0e0), f_q)) +mstore(0xf300, mod(calldataload(0xf100), f_q)) +mstore(0xf320, mod(calldataload(0xf120), f_q)) +mstore(0xf340, mod(calldataload(0xf140), f_q)) +mstore(0xf360, mod(calldataload(0xf160), f_q)) +mstore(0xf380, mod(calldataload(0xf180), f_q)) +mstore(0xf3a0, mod(calldataload(0xf1a0), f_q)) +mstore(0xf3c0, mod(calldataload(0xf1c0), f_q)) +mstore(0xf3e0, mod(calldataload(0xf1e0), f_q)) +mstore(0xf400, mod(calldataload(0xf200), f_q)) +mstore(0xf420, mod(calldataload(0xf220), f_q)) +mstore(0xf440, mod(calldataload(0xf240), f_q)) +mstore(0xf460, mod(calldataload(0xf260), f_q)) +mstore(0xf480, mod(calldataload(0xf280), f_q)) +mstore(0xf4a0, mod(calldataload(0xf2a0), f_q)) +mstore(0xf4c0, mod(calldataload(0xf2c0), f_q)) +mstore(0xf4e0, mod(calldataload(0xf2e0), f_q)) +mstore(0xf500, mod(calldataload(0xf300), f_q)) +mstore(0xf520, mod(calldataload(0xf320), f_q)) +mstore(0xf540, mod(calldataload(0xf340), f_q)) +mstore(0xf560, mod(calldataload(0xf360), f_q)) +mstore(0xf580, mod(calldataload(0xf380), f_q)) +mstore(0xf5a0, mod(calldataload(0xf3a0), f_q)) +mstore(0xf5c0, mod(calldataload(0xf3c0), f_q)) +mstore(0xf5e0, mod(calldataload(0xf3e0), f_q)) +mstore(0xf600, mod(calldataload(0xf400), f_q)) +mstore(0xf620, mod(calldataload(0xf420), f_q)) +mstore(0xf640, mod(calldataload(0xf440), f_q)) +mstore(0xf660, mod(calldataload(0xf460), f_q)) +mstore(0xf680, mod(calldataload(0xf480), f_q)) +mstore(0xf6a0, mod(calldataload(0xf4a0), f_q)) +mstore(0xf6c0, mod(calldataload(0xf4c0), f_q)) +mstore(0xf6e0, mod(calldataload(0xf4e0), f_q)) +mstore(0xf700, mod(calldataload(0xf500), f_q)) +mstore(0xf720, mod(calldataload(0xf520), f_q)) +mstore(0xf740, mod(calldataload(0xf540), f_q)) +mstore(0xf760, mod(calldataload(0xf560), f_q)) +mstore(0xf780, mod(calldataload(0xf580), f_q)) +mstore(0xf7a0, mod(calldataload(0xf5a0), f_q)) +mstore(0xf7c0, mod(calldataload(0xf5c0), f_q)) +mstore(0xf7e0, mod(calldataload(0xf5e0), f_q)) +mstore(0xf800, mod(calldataload(0xf600), f_q)) +mstore(0xf820, mod(calldataload(0xf620), f_q)) +mstore(0xf840, mod(calldataload(0xf640), f_q)) +mstore(0xf860, mod(calldataload(0xf660), f_q)) +mstore(0xf880, mod(calldataload(0xf680), f_q)) +mstore(0xf8a0, mod(calldataload(0xf6a0), f_q)) +mstore(0xf8c0, mod(calldataload(0xf6c0), f_q)) +mstore(0xf8e0, mod(calldataload(0xf6e0), f_q)) +mstore(0xf900, mod(calldataload(0xf700), f_q)) +mstore(0xf920, mod(calldataload(0xf720), f_q)) +mstore(0xf940, mod(calldataload(0xf740), f_q)) +mstore(0xf960, mod(calldataload(0xf760), f_q)) +mstore(0xf980, mod(calldataload(0xf780), f_q)) +mstore(0xf9a0, mod(calldataload(0xf7a0), f_q)) +mstore(0xf9c0, mod(calldataload(0xf7c0), f_q)) +mstore(0xf9e0, mod(calldataload(0xf7e0), f_q)) +mstore(0xfa00, mod(calldataload(0xf800), f_q)) +mstore(0xfa20, mod(calldataload(0xf820), f_q)) +mstore(0xfa40, mod(calldataload(0xf840), f_q)) +mstore(0xfa60, mod(calldataload(0xf860), f_q)) +mstore(0xfa80, mod(calldataload(0xf880), f_q)) +mstore(0xfaa0, mod(calldataload(0xf8a0), f_q)) +mstore(0xfac0, mod(calldataload(0xf8c0), f_q)) +mstore(0xfae0, mod(calldataload(0xf8e0), f_q)) +mstore(0xfb00, mod(calldataload(0xf900), f_q)) +mstore(0xfb20, mod(calldataload(0xf920), f_q)) +mstore(0xfb40, mod(calldataload(0xf940), f_q)) +mstore(0xfb60, mod(calldataload(0xf960), f_q)) +mstore(0xfb80, mod(calldataload(0xf980), f_q)) +mstore(0xfba0, mod(calldataload(0xf9a0), f_q)) +mstore(0xfbc0, mod(calldataload(0xf9c0), f_q)) +mstore(0xfbe0, mod(calldataload(0xf9e0), f_q)) +mstore(0xfc00, mod(calldataload(0xfa00), f_q)) +mstore(0xfc20, mod(calldataload(0xfa20), f_q)) +mstore(0xfc40, mod(calldataload(0xfa40), f_q)) +mstore(0xfc60, mod(calldataload(0xfa60), f_q)) +mstore(0xfc80, mod(calldataload(0xfa80), f_q)) +mstore(0xfca0, mod(calldataload(0xfaa0), f_q)) +mstore(0xfcc0, mod(calldataload(0xfac0), f_q)) +mstore(0xfce0, mod(calldataload(0xfae0), f_q)) +mstore(0xfd00, mod(calldataload(0xfb00), f_q)) +mstore(0xfd20, mod(calldataload(0xfb20), f_q)) +mstore(0xfd40, mod(calldataload(0xfb40), f_q)) +mstore(0xfd60, mod(calldataload(0xfb60), f_q)) +mstore(0xfd80, mod(calldataload(0xfb80), f_q)) +mstore(0xfda0, mod(calldataload(0xfba0), f_q)) +mstore(0xfdc0, mod(calldataload(0xfbc0), f_q)) +mstore(0xfde0, mod(calldataload(0xfbe0), f_q)) +mstore(0xfe00, mod(calldataload(0xfc00), f_q)) +mstore(0xfe20, mod(calldataload(0xfc20), f_q)) +mstore(0xfe40, mod(calldataload(0xfc40), f_q)) +mstore(0xfe60, mod(calldataload(0xfc60), f_q)) +mstore(0xfe80, mod(calldataload(0xfc80), f_q)) +mstore(0xfea0, mod(calldataload(0xfca0), f_q)) +mstore(0xfec0, mod(calldataload(0xfcc0), f_q)) +mstore(0xfee0, mod(calldataload(0xfce0), f_q)) +mstore(0xff00, mod(calldataload(0xfd00), f_q)) +mstore(0xff20, mod(calldataload(0xfd20), f_q)) +mstore(0xff40, mod(calldataload(0xfd40), f_q)) +mstore(0xff60, mod(calldataload(0xfd60), f_q)) +mstore(0xff80, mod(calldataload(0xfd80), f_q)) +mstore(0xffa0, mod(calldataload(0xfda0), f_q)) +mstore(0xffc0, mod(calldataload(0xfdc0), f_q)) +mstore(0xffe0, mod(calldataload(0xfde0), f_q)) +mstore(0x10000, mod(calldataload(0xfe00), f_q)) +mstore(0x10020, mod(calldataload(0xfe20), f_q)) +mstore(0x10040, mod(calldataload(0xfe40), f_q)) +mstore(0x10060, mod(calldataload(0xfe60), f_q)) +mstore(0x10080, mod(calldataload(0xfe80), f_q)) +mstore(0x100a0, mod(calldataload(0xfea0), f_q)) +mstore(0x100c0, mod(calldataload(0xfec0), f_q)) +mstore(0x100e0, mod(calldataload(0xfee0), f_q)) +mstore(0x10100, mod(calldataload(0xff00), f_q)) +mstore(0x10120, mod(calldataload(0xff20), f_q)) +mstore(0x10140, mod(calldataload(0xff40), f_q)) +mstore(0x10160, mod(calldataload(0xff60), f_q)) +mstore(0x10180, mod(calldataload(0xff80), f_q)) +mstore(0x101a0, mod(calldataload(0xffa0), f_q)) +mstore(0x101c0, mod(calldataload(0xffc0), f_q)) +mstore(0x101e0, mod(calldataload(0xffe0), f_q)) +mstore(0x10200, mod(calldataload(0x10000), f_q)) +mstore(0x10220, mod(calldataload(0x10020), f_q)) +mstore(0x10240, mod(calldataload(0x10040), f_q)) +mstore(0x10260, mod(calldataload(0x10060), f_q)) +mstore(0x10280, mod(calldataload(0x10080), f_q)) +mstore(0x102a0, mod(calldataload(0x100a0), f_q)) +mstore(0x102c0, mod(calldataload(0x100c0), f_q)) +mstore(0x102e0, mod(calldataload(0x100e0), f_q)) +mstore(0x10300, mod(calldataload(0x10100), f_q)) +mstore(0x10320, mod(calldataload(0x10120), f_q)) +mstore(0x10340, mod(calldataload(0x10140), f_q)) +mstore(0x10360, mod(calldataload(0x10160), f_q)) +mstore(0x10380, mod(calldataload(0x10180), f_q)) +mstore(0x103a0, mod(calldataload(0x101a0), f_q)) +mstore(0x103c0, mod(calldataload(0x101c0), f_q)) +mstore(0x103e0, mod(calldataload(0x101e0), f_q)) +mstore(0x10400, mod(calldataload(0x10200), f_q)) +mstore(0x10420, mod(calldataload(0x10220), f_q)) +mstore(0x10440, mod(calldataload(0x10240), f_q)) +mstore(0x10460, mod(calldataload(0x10260), f_q)) +mstore(0x10480, mod(calldataload(0x10280), f_q)) +mstore(0x104a0, mod(calldataload(0x102a0), f_q)) +mstore(0x104c0, mod(calldataload(0x102c0), f_q)) +mstore(0x104e0, mod(calldataload(0x102e0), f_q)) +mstore(0x10500, mod(calldataload(0x10300), f_q)) +mstore(0x10520, mod(calldataload(0x10320), f_q)) +mstore(0x10540, mod(calldataload(0x10340), f_q)) +mstore(0x10560, mod(calldataload(0x10360), f_q)) +mstore(0x10580, mod(calldataload(0x10380), f_q)) +mstore(0x105a0, mod(calldataload(0x103a0), f_q)) +mstore(0x105c0, mod(calldataload(0x103c0), f_q)) +mstore(0x105e0, mod(calldataload(0x103e0), f_q)) +mstore(0x10600, mod(calldataload(0x10400), f_q)) +mstore(0x10620, mod(calldataload(0x10420), f_q)) +mstore(0x10640, mod(calldataload(0x10440), f_q)) +mstore(0x10660, mod(calldataload(0x10460), f_q)) +mstore(0x10680, mod(calldataload(0x10480), f_q)) +mstore(0x106a0, mod(calldataload(0x104a0), f_q)) +mstore(0x106c0, mod(calldataload(0x104c0), f_q)) +mstore(0x106e0, mod(calldataload(0x104e0), f_q)) +mstore(0x10700, mod(calldataload(0x10500), f_q)) +mstore(0x10720, mod(calldataload(0x10520), f_q)) +mstore(0x10740, mod(calldataload(0x10540), f_q)) +mstore(0x10760, mod(calldataload(0x10560), f_q)) +mstore(0x10780, mod(calldataload(0x10580), f_q)) +mstore(0x107a0, mod(calldataload(0x105a0), f_q)) +mstore(0x107c0, mod(calldataload(0x105c0), f_q)) +mstore(0x107e0, mod(calldataload(0x105e0), f_q)) +mstore(0x10800, mod(calldataload(0x10600), f_q)) +mstore(0x10820, mod(calldataload(0x10620), f_q)) +mstore(0x10840, mod(calldataload(0x10640), f_q)) +mstore(0x10860, mod(calldataload(0x10660), f_q)) +mstore(0x10880, mod(calldataload(0x10680), f_q)) +mstore(0x108a0, mod(calldataload(0x106a0), f_q)) +mstore(0x108c0, mod(calldataload(0x106c0), f_q)) +mstore(0x108e0, mod(calldataload(0x106e0), f_q)) +mstore(0x10900, mod(calldataload(0x10700), f_q)) +mstore(0x10920, mod(calldataload(0x10720), f_q)) +mstore(0x10940, mod(calldataload(0x10740), f_q)) +mstore(0x10960, mod(calldataload(0x10760), f_q)) +mstore(0x10980, mod(calldataload(0x10780), f_q)) +mstore(0x109a0, mod(calldataload(0x107a0), f_q)) +mstore(0x109c0, mod(calldataload(0x107c0), f_q)) +mstore(0x109e0, mod(calldataload(0x107e0), f_q)) +mstore(0x10a00, mod(calldataload(0x10800), f_q)) +mstore(0x10a20, mod(calldataload(0x10820), f_q)) +mstore(0x10a40, mod(calldataload(0x10840), f_q)) +mstore(0x10a60, mod(calldataload(0x10860), f_q)) +mstore(0x10a80, mod(calldataload(0x10880), f_q)) +mstore(0x10aa0, mod(calldataload(0x108a0), f_q)) +mstore(0x10ac0, mod(calldataload(0x108c0), f_q)) +mstore(0x10ae0, mod(calldataload(0x108e0), f_q)) +mstore(0x10b00, mod(calldataload(0x10900), f_q)) +mstore(0x10b20, mod(calldataload(0x10920), f_q)) +mstore(0x10b40, mod(calldataload(0x10940), f_q)) +mstore(0x10b60, mod(calldataload(0x10960), f_q)) +mstore(0x10b80, mod(calldataload(0x10980), f_q)) +mstore(0x10ba0, mod(calldataload(0x109a0), f_q)) +mstore(0x10bc0, mod(calldataload(0x109c0), f_q)) +mstore(0x10be0, mod(calldataload(0x109e0), f_q)) +mstore(0x10c00, mod(calldataload(0x10a00), f_q)) +mstore(0x10c20, mod(calldataload(0x10a20), f_q)) +mstore(0x10c40, mod(calldataload(0x10a40), f_q)) +mstore(0x10c60, mod(calldataload(0x10a60), f_q)) +mstore(0x10c80, mod(calldataload(0x10a80), f_q)) +mstore(0x10ca0, mod(calldataload(0x10aa0), f_q)) +mstore(0x10cc0, mod(calldataload(0x10ac0), f_q)) +mstore(0x10ce0, mod(calldataload(0x10ae0), f_q)) +mstore(0x10d00, mod(calldataload(0x10b00), f_q)) +mstore(0x10d20, mod(calldataload(0x10b20), f_q)) +mstore(0x10d40, mod(calldataload(0x10b40), f_q)) +mstore(0x10d60, mod(calldataload(0x10b60), f_q)) +mstore(0x10d80, mod(calldataload(0x10b80), f_q)) +mstore(0x10da0, mod(calldataload(0x10ba0), f_q)) +mstore(0x10dc0, mod(calldataload(0x10bc0), f_q)) +mstore(0x10de0, mod(calldataload(0x10be0), f_q)) +mstore(0x10e00, mod(calldataload(0x10c00), f_q)) +mstore(0x10e20, mod(calldataload(0x10c20), f_q)) +mstore(0x10e40, mod(calldataload(0x10c40), f_q)) +mstore(0x10e60, mod(calldataload(0x10c60), f_q)) +mstore(0x10e80, mod(calldataload(0x10c80), f_q)) +mstore(0x10ea0, mod(calldataload(0x10ca0), f_q)) +mstore(0x10ec0, mod(calldataload(0x10cc0), f_q)) +mstore(0x10ee0, mod(calldataload(0x10ce0), f_q)) +mstore(0x10f00, mod(calldataload(0x10d00), f_q)) +mstore(0x10f20, mod(calldataload(0x10d20), f_q)) +mstore(0x10f40, mod(calldataload(0x10d40), f_q)) +mstore(0x10f60, mod(calldataload(0x10d60), f_q)) +mstore(0x10f80, mod(calldataload(0x10d80), f_q)) +mstore(0x10fa0, mod(calldataload(0x10da0), f_q)) +mstore(0x10fc0, mod(calldataload(0x10dc0), f_q)) +mstore(0x10fe0, mod(calldataload(0x10de0), f_q)) +mstore(0x11000, mod(calldataload(0x10e00), f_q)) +mstore(0x11020, mod(calldataload(0x10e20), f_q)) +mstore(0x11040, mod(calldataload(0x10e40), f_q)) +mstore(0x11060, mod(calldataload(0x10e60), f_q)) +mstore(0x11080, mod(calldataload(0x10e80), f_q)) +mstore(0x110a0, mod(calldataload(0x10ea0), f_q)) +mstore(0x110c0, mod(calldataload(0x10ec0), f_q)) +mstore(0x110e0, mod(calldataload(0x10ee0), f_q)) +mstore(0x11100, mod(calldataload(0x10f00), f_q)) +mstore(0x11120, mod(calldataload(0x10f20), f_q)) +mstore(0x11140, mod(calldataload(0x10f40), f_q)) +mstore(0x11160, mod(calldataload(0x10f60), f_q)) +mstore(0x11180, mod(calldataload(0x10f80), f_q)) +mstore(0x111a0, mod(calldataload(0x10fa0), f_q)) +mstore(0x111c0, mod(calldataload(0x10fc0), f_q)) +mstore(0x111e0, mod(calldataload(0x10fe0), f_q)) +mstore(0x11200, mod(calldataload(0x11000), f_q)) +mstore(0x11220, mod(calldataload(0x11020), f_q)) +mstore(0x11240, mod(calldataload(0x11040), f_q)) +mstore(0x11260, mod(calldataload(0x11060), f_q)) +mstore(0x11280, mod(calldataload(0x11080), f_q)) +mstore(0x112a0, mod(calldataload(0x110a0), f_q)) +mstore(0x112c0, mod(calldataload(0x110c0), f_q)) +mstore(0x112e0, mod(calldataload(0x110e0), f_q)) +mstore(0x11300, mod(calldataload(0x11100), f_q)) +mstore(0x11320, mod(calldataload(0x11120), f_q)) +mstore(0x11340, mod(calldataload(0x11140), f_q)) +mstore(0x11360, mod(calldataload(0x11160), f_q)) +mstore(0x11380, mod(calldataload(0x11180), f_q)) +mstore(0x113a0, mod(calldataload(0x111a0), f_q)) +mstore(0x113c0, mod(calldataload(0x111c0), f_q)) +mstore(0x113e0, mod(calldataload(0x111e0), f_q)) +mstore(0x11400, mod(calldataload(0x11200), f_q)) +mstore(0x11420, mod(calldataload(0x11220), f_q)) +mstore(0x11440, mod(calldataload(0x11240), f_q)) +mstore(0x11460, mod(calldataload(0x11260), f_q)) +mstore(0x11480, mod(calldataload(0x11280), f_q)) +mstore(0x114a0, mod(calldataload(0x112a0), f_q)) +mstore(0x114c0, mod(calldataload(0x112c0), f_q)) +mstore(0x114e0, mod(calldataload(0x112e0), f_q)) +mstore(0x11500, mod(calldataload(0x11300), f_q)) +mstore(0x11520, mod(calldataload(0x11320), f_q)) +mstore(0x11540, mod(calldataload(0x11340), f_q)) +mstore(0x11560, mod(calldataload(0x11360), f_q)) +mstore(0x11580, mod(calldataload(0x11380), f_q)) +mstore(0x115a0, mod(calldataload(0x113a0), f_q)) +mstore(0x115c0, mod(calldataload(0x113c0), f_q)) +mstore(0x115e0, mod(calldataload(0x113e0), f_q)) +mstore(0x11600, mod(calldataload(0x11400), f_q)) +mstore(0x11620, mod(calldataload(0x11420), f_q)) +mstore(0x11640, mod(calldataload(0x11440), f_q)) +mstore(0x11660, mod(calldataload(0x11460), f_q)) +mstore(0x11680, mod(calldataload(0x11480), f_q)) +mstore(0x116a0, mod(calldataload(0x114a0), f_q)) +mstore(0x116c0, mod(calldataload(0x114c0), f_q)) +mstore(0x116e0, mod(calldataload(0x114e0), f_q)) +mstore(0x11700, mod(calldataload(0x11500), f_q)) +mstore(0x11720, mod(calldataload(0x11520), f_q)) +mstore(0x11740, mod(calldataload(0x11540), f_q)) +mstore(0x11760, mod(calldataload(0x11560), f_q)) +mstore(0x11780, mod(calldataload(0x11580), f_q)) +mstore(0x117a0, mod(calldataload(0x115a0), f_q)) +mstore(0x117c0, mod(calldataload(0x115c0), f_q)) +mstore(0x117e0, mod(calldataload(0x115e0), f_q)) +mstore(0x11800, mod(calldataload(0x11600), f_q)) +mstore(0x11820, mod(calldataload(0x11620), f_q)) +mstore(0x11840, mod(calldataload(0x11640), f_q)) +mstore(0x11860, mod(calldataload(0x11660), f_q)) +mstore(0x11880, mod(calldataload(0x11680), f_q)) +mstore(0x118a0, mod(calldataload(0x116a0), f_q)) +mstore(0x118c0, mod(calldataload(0x116c0), f_q)) +mstore(0x118e0, mod(calldataload(0x116e0), f_q)) +mstore(0x11900, mod(calldataload(0x11700), f_q)) +mstore(0x11920, mod(calldataload(0x11720), f_q)) +mstore(0x11940, mod(calldataload(0x11740), f_q)) +mstore(0x11960, mod(calldataload(0x11760), f_q)) +mstore(0x11980, mod(calldataload(0x11780), f_q)) +mstore(0x119a0, mod(calldataload(0x117a0), f_q)) +mstore(0x119c0, mod(calldataload(0x117c0), f_q)) +mstore(0x119e0, mod(calldataload(0x117e0), f_q)) +mstore(0x11a00, mod(calldataload(0x11800), f_q)) +mstore(0x11a20, mod(calldataload(0x11820), f_q)) +mstore(0x11a40, mod(calldataload(0x11840), f_q)) +mstore(0x11a60, mod(calldataload(0x11860), f_q)) +mstore(0x11a80, mod(calldataload(0x11880), f_q)) +mstore(0x11aa0, mod(calldataload(0x118a0), f_q)) +mstore(0x11ac0, mod(calldataload(0x118c0), f_q)) +mstore(0x11ae0, mod(calldataload(0x118e0), f_q)) +mstore(0x11b00, mod(calldataload(0x11900), f_q)) +mstore(0x11b20, mod(calldataload(0x11920), f_q)) +mstore(0x11b40, mod(calldataload(0x11940), f_q)) +mstore(0x11b60, mod(calldataload(0x11960), f_q)) +mstore(0x11b80, mod(calldataload(0x11980), f_q)) +mstore(0x11ba0, mod(calldataload(0x119a0), f_q)) +mstore(0x11bc0, mod(calldataload(0x119c0), f_q)) +mstore(0x11be0, mod(calldataload(0x119e0), f_q)) +mstore(0x11c00, mod(calldataload(0x11a00), f_q)) +mstore(0x11c20, mod(calldataload(0x11a20), f_q)) +mstore(0x11c40, mod(calldataload(0x11a40), f_q)) +mstore(0x11c60, mod(calldataload(0x11a60), f_q)) +mstore(0x11c80, mod(calldataload(0x11a80), f_q)) +mstore(0x11ca0, mod(calldataload(0x11aa0), f_q)) +mstore(0x11cc0, mod(calldataload(0x11ac0), f_q)) +mstore(0x11ce0, mod(calldataload(0x11ae0), f_q)) +mstore(0x11d00, mod(calldataload(0x11b00), f_q)) +mstore(0x11d20, mod(calldataload(0x11b20), f_q)) +mstore(0x11d40, mod(calldataload(0x11b40), f_q)) +mstore(0x11d60, mod(calldataload(0x11b60), f_q)) +mstore(0x11d80, mod(calldataload(0x11b80), f_q)) +mstore(0x11da0, mod(calldataload(0x11ba0), f_q)) +mstore(0x11dc0, mod(calldataload(0x11bc0), f_q)) +mstore(0x11de0, mod(calldataload(0x11be0), f_q)) +mstore(0x11e00, mod(calldataload(0x11c00), f_q)) +mstore(0x11e20, mod(calldataload(0x11c20), f_q)) +mstore(0x11e40, mod(calldataload(0x11c40), f_q)) +mstore(0x11e60, mod(calldataload(0x11c60), f_q)) +mstore(0x11e80, mod(calldataload(0x11c80), f_q)) +mstore(0x11ea0, mod(calldataload(0x11ca0), f_q)) +mstore(0x11ec0, mod(calldataload(0x11cc0), f_q)) +mstore(0x11ee0, mod(calldataload(0x11ce0), f_q)) +mstore(0x11f00, mod(calldataload(0x11d00), f_q)) +mstore(0x11f20, mod(calldataload(0x11d20), f_q)) +mstore(0x11f40, mod(calldataload(0x11d40), f_q)) +mstore(0x11f60, mod(calldataload(0x11d60), f_q)) +mstore(0x11f80, mod(calldataload(0x11d80), f_q)) +mstore(0x11fa0, mod(calldataload(0x11da0), f_q)) +mstore(0x11fc0, mod(calldataload(0x11dc0), f_q)) +mstore(0x11fe0, mod(calldataload(0x11de0), f_q)) +mstore(0x12000, mod(calldataload(0x11e00), f_q)) +mstore(0x12020, mod(calldataload(0x11e20), f_q)) +mstore(0x12040, mod(calldataload(0x11e40), f_q)) +mstore(0x12060, mod(calldataload(0x11e60), f_q)) +mstore(0x12080, mod(calldataload(0x11e80), f_q)) +mstore(0x120a0, mod(calldataload(0x11ea0), f_q)) +mstore(0x120c0, mod(calldataload(0x11ec0), f_q)) +mstore(0x120e0, mod(calldataload(0x11ee0), f_q)) +mstore(0x12100, mod(calldataload(0x11f00), f_q)) +mstore(0x12120, mod(calldataload(0x11f20), f_q)) +mstore(0x12140, mod(calldataload(0x11f40), f_q)) +mstore(0x12160, mod(calldataload(0x11f60), f_q)) +mstore(0x12180, mod(calldataload(0x11f80), f_q)) +mstore(0x121a0, mod(calldataload(0x11fa0), f_q)) +mstore(0x121c0, mod(calldataload(0x11fc0), f_q)) +mstore(0x121e0, mod(calldataload(0x11fe0), f_q)) +mstore(0x12200, mod(calldataload(0x12000), f_q)) +mstore(0x12220, mod(calldataload(0x12020), f_q)) +mstore(0x12240, mod(calldataload(0x12040), f_q)) +mstore(0x12260, mod(calldataload(0x12060), f_q)) +mstore(0x12280, mod(calldataload(0x12080), f_q)) +mstore(0x122a0, mod(calldataload(0x120a0), f_q)) +mstore(0x122c0, mod(calldataload(0x120c0), f_q)) +mstore(0x122e0, mod(calldataload(0x120e0), f_q)) +mstore(0x12300, mod(calldataload(0x12100), f_q)) +mstore(0x12320, mod(calldataload(0x12120), f_q)) +mstore(0x12340, mod(calldataload(0x12140), f_q)) +mstore(0x12360, mod(calldataload(0x12160), f_q)) +mstore(0x12380, mod(calldataload(0x12180), f_q)) +mstore(0x123a0, mod(calldataload(0x121a0), f_q)) +mstore(0x123c0, mod(calldataload(0x121c0), f_q)) +mstore(0x123e0, mod(calldataload(0x121e0), f_q)) +mstore(0x12400, mod(calldataload(0x12200), f_q)) +mstore(0x12420, mod(calldataload(0x12220), f_q)) +mstore(0x12440, mod(calldataload(0x12240), f_q)) +mstore(0x12460, mod(calldataload(0x12260), f_q)) +mstore(0x12480, mod(calldataload(0x12280), f_q)) +mstore(0x124a0, mod(calldataload(0x122a0), f_q)) +mstore(0x124c0, mod(calldataload(0x122c0), f_q)) +mstore(0x124e0, mod(calldataload(0x122e0), f_q)) +mstore(0x12500, mod(calldataload(0x12300), f_q)) +mstore(0x12520, mod(calldataload(0x12320), f_q)) +mstore(0x12540, mod(calldataload(0x12340), f_q)) +mstore(0x12560, mod(calldataload(0x12360), f_q)) +mstore(0x12580, mod(calldataload(0x12380), f_q)) +mstore(0x125a0, mod(calldataload(0x123a0), f_q)) +mstore(0x125c0, mod(calldataload(0x123c0), f_q)) +mstore(0x125e0, mod(calldataload(0x123e0), f_q)) +mstore(0x12600, mod(calldataload(0x12400), f_q)) +mstore(0x12620, mod(calldataload(0x12420), f_q)) +mstore(0x12640, mod(calldataload(0x12440), f_q)) +mstore(0x12660, mod(calldataload(0x12460), f_q)) +mstore(0x12680, mod(calldataload(0x12480), f_q)) +mstore(0x126a0, mod(calldataload(0x124a0), f_q)) +mstore(0x126c0, mod(calldataload(0x124c0), f_q)) +mstore(0x126e0, mod(calldataload(0x124e0), f_q)) +mstore(0x12700, mod(calldataload(0x12500), f_q)) +mstore(0x12720, mod(calldataload(0x12520), f_q)) +mstore(0x12740, mod(calldataload(0x12540), f_q)) +mstore(0x12760, mod(calldataload(0x12560), f_q)) +mstore(0x12780, mod(calldataload(0x12580), f_q)) +mstore(0x127a0, mod(calldataload(0x125a0), f_q)) +mstore(0x127c0, mod(calldataload(0x125c0), f_q)) +mstore(0x127e0, mod(calldataload(0x125e0), f_q)) +mstore(0x12800, mod(calldataload(0x12600), f_q)) +mstore(0x12820, mod(calldataload(0x12620), f_q)) +mstore(0x12840, mod(calldataload(0x12640), f_q)) +mstore(0x12860, mod(calldataload(0x12660), f_q)) +mstore(0x12880, mod(calldataload(0x12680), f_q)) +mstore(0x128a0, mod(calldataload(0x126a0), f_q)) +mstore(0x128c0, mod(calldataload(0x126c0), f_q)) +mstore(0x128e0, mod(calldataload(0x126e0), f_q)) +mstore(0x12900, mod(calldataload(0x12700), f_q)) +mstore(0x12920, mod(calldataload(0x12720), f_q)) +mstore(0x12940, mod(calldataload(0x12740), f_q)) +mstore(0x12960, mod(calldataload(0x12760), f_q)) +mstore(0x12980, mod(calldataload(0x12780), f_q)) +mstore(0x129a0, mod(calldataload(0x127a0), f_q)) +mstore(0x129c0, mod(calldataload(0x127c0), f_q)) +mstore(0x129e0, mod(calldataload(0x127e0), f_q)) +mstore(0x12a00, mod(calldataload(0x12800), f_q)) +mstore(0x12a20, mod(calldataload(0x12820), f_q)) +mstore(0x12a40, mod(calldataload(0x12840), f_q)) +mstore(0x12a60, mod(calldataload(0x12860), f_q)) +mstore(0x12a80, mod(calldataload(0x12880), f_q)) +mstore(0x12aa0, mod(calldataload(0x128a0), f_q)) +mstore(0x12ac0, mod(calldataload(0x128c0), f_q)) +mstore(0x12ae0, mod(calldataload(0x128e0), f_q)) +mstore(0x12b00, mod(calldataload(0x12900), f_q)) +mstore(0x12b20, mod(calldataload(0x12920), f_q)) +mstore(0x12b40, mod(calldataload(0x12940), f_q)) +mstore(0x12b60, mod(calldataload(0x12960), f_q)) +mstore(0x12b80, mod(calldataload(0x12980), f_q)) +mstore(0x12ba0, mod(calldataload(0x129a0), f_q)) +mstore(0x12bc0, mod(calldataload(0x129c0), f_q)) +mstore(0x12be0, mod(calldataload(0x129e0), f_q)) +mstore(0x12c00, mod(calldataload(0x12a00), f_q)) +mstore(0x12c20, mod(calldataload(0x12a20), f_q)) +mstore(0x12c40, mod(calldataload(0x12a40), f_q)) +mstore(0x12c60, mod(calldataload(0x12a60), f_q)) +mstore(0x12c80, mod(calldataload(0x12a80), f_q)) +mstore(0x12ca0, mod(calldataload(0x12aa0), f_q)) +mstore(0x12cc0, mod(calldataload(0x12ac0), f_q)) +mstore(0x12ce0, mod(calldataload(0x12ae0), f_q)) +mstore(0x12d00, mod(calldataload(0x12b00), f_q)) +mstore(0x12d20, mod(calldataload(0x12b20), f_q)) +mstore(0x12d40, mod(calldataload(0x12b40), f_q)) +mstore(0x12d60, mod(calldataload(0x12b60), f_q)) +mstore(0x12d80, mod(calldataload(0x12b80), f_q)) +mstore(0x12da0, mod(calldataload(0x12ba0), f_q)) +mstore(0x12dc0, mod(calldataload(0x12bc0), f_q)) +mstore(0x12de0, mod(calldataload(0x12be0), f_q)) +mstore(0x12e00, mod(calldataload(0x12c00), f_q)) +mstore(0x12e20, mod(calldataload(0x12c20), f_q)) +mstore(0x12e40, mod(calldataload(0x12c40), f_q)) +mstore(0x12e60, mod(calldataload(0x12c60), f_q)) +mstore(0x12e80, mod(calldataload(0x12c80), f_q)) +mstore(0x12ea0, mod(calldataload(0x12ca0), f_q)) +mstore(0x12ec0, mod(calldataload(0x12cc0), f_q)) +mstore(0x12ee0, mod(calldataload(0x12ce0), f_q)) +mstore(0x12f00, mod(calldataload(0x12d00), f_q)) +mstore(0x12f20, mod(calldataload(0x12d20), f_q)) +mstore(0x12f40, mod(calldataload(0x12d40), f_q)) +mstore(0x12f60, mod(calldataload(0x12d60), f_q)) +mstore(0x12f80, mod(calldataload(0x12d80), f_q)) +mstore(0x12fa0, mod(calldataload(0x12da0), f_q)) +mstore(0x12fc0, mod(calldataload(0x12dc0), f_q)) +mstore(0x12fe0, mod(calldataload(0x12de0), f_q)) +mstore(0x13000, mod(calldataload(0x12e00), f_q)) +mstore(0x13020, mod(calldataload(0x12e20), f_q)) +mstore(0x13040, mod(calldataload(0x12e40), f_q)) +mstore(0x13060, mod(calldataload(0x12e60), f_q)) +mstore(0x13080, mod(calldataload(0x12e80), f_q)) +mstore(0x130a0, mod(calldataload(0x12ea0), f_q)) +mstore(0x130c0, mod(calldataload(0x12ec0), f_q)) +mstore(0x130e0, mod(calldataload(0x12ee0), f_q)) +mstore(0x13100, mod(calldataload(0x12f00), f_q)) +mstore(0x13120, mod(calldataload(0x12f20), f_q)) +mstore(0x13140, mod(calldataload(0x12f40), f_q)) +mstore(0x13160, mod(calldataload(0x12f60), f_q)) +mstore(0x13180, mod(calldataload(0x12f80), f_q)) +mstore(0x131a0, mod(calldataload(0x12fa0), f_q)) +mstore(0x131c0, mod(calldataload(0x12fc0), f_q)) +mstore(0x131e0, mod(calldataload(0x12fe0), f_q)) +mstore(0x13200, mod(calldataload(0x13000), f_q)) +mstore(0x13220, mod(calldataload(0x13020), f_q)) +mstore(0x13240, mod(calldataload(0x13040), f_q)) +mstore(0x13260, mod(calldataload(0x13060), f_q)) +mstore(0x13280, mod(calldataload(0x13080), f_q)) +mstore(0x132a0, mod(calldataload(0x130a0), f_q)) +mstore(0x132c0, mod(calldataload(0x130c0), f_q)) +mstore(0x132e0, mod(calldataload(0x130e0), f_q)) +mstore(0x13300, mod(calldataload(0x13100), f_q)) +mstore(0x13320, mod(calldataload(0x13120), f_q)) +mstore(0x13340, mod(calldataload(0x13140), f_q)) +mstore(0x13360, mod(calldataload(0x13160), f_q)) +mstore(0x13380, mod(calldataload(0x13180), f_q)) +mstore(0x133a0, mod(calldataload(0x131a0), f_q)) +mstore(0x133c0, mod(calldataload(0x131c0), f_q)) +mstore(0x133e0, mod(calldataload(0x131e0), f_q)) +mstore(0x13400, mod(calldataload(0x13200), f_q)) +mstore(0x13420, mod(calldataload(0x13220), f_q)) +mstore(0x13440, mod(calldataload(0x13240), f_q)) +mstore(0x13460, mod(calldataload(0x13260), f_q)) +mstore(0x13480, mod(calldataload(0x13280), f_q)) +mstore(0x134a0, mod(calldataload(0x132a0), f_q)) +mstore(0x134c0, mod(calldataload(0x132c0), f_q)) +mstore(0x134e0, mod(calldataload(0x132e0), f_q)) +mstore(0x13500, mod(calldataload(0x13300), f_q)) +mstore(0x13520, mod(calldataload(0x13320), f_q)) +mstore(0x13540, mod(calldataload(0x13340), f_q)) +mstore(0x13560, mod(calldataload(0x13360), f_q)) +mstore(0x13580, mod(calldataload(0x13380), f_q)) +mstore(0x135a0, mod(calldataload(0x133a0), f_q)) +mstore(0x135c0, mod(calldataload(0x133c0), f_q)) +mstore(0x135e0, mod(calldataload(0x133e0), f_q)) +mstore(0x13600, mod(calldataload(0x13400), f_q)) +mstore(0x13620, mod(calldataload(0x13420), f_q)) +mstore(0x13640, mod(calldataload(0x13440), f_q)) +mstore(0x13660, mod(calldataload(0x13460), f_q)) +mstore(0x13680, mod(calldataload(0x13480), f_q)) +mstore(0x136a0, mod(calldataload(0x134a0), f_q)) +mstore(0x136c0, mod(calldataload(0x134c0), f_q)) +mstore(0x136e0, mod(calldataload(0x134e0), f_q)) +mstore(0x13700, mod(calldataload(0x13500), f_q)) +mstore(0x13720, mod(calldataload(0x13520), f_q)) +mstore(0x13740, mod(calldataload(0x13540), f_q)) +mstore(0x13760, mod(calldataload(0x13560), f_q)) +mstore(0x13780, mod(calldataload(0x13580), f_q)) +mstore(0x137a0, mod(calldataload(0x135a0), f_q)) +mstore(0x137c0, mod(calldataload(0x135c0), f_q)) +mstore(0x137e0, mod(calldataload(0x135e0), f_q)) +mstore(0x13800, mod(calldataload(0x13600), f_q)) +mstore(0x13820, mod(calldataload(0x13620), f_q)) +mstore(0x13840, mod(calldataload(0x13640), f_q)) +mstore(0x13860, mod(calldataload(0x13660), f_q)) +mstore(0x13880, mod(calldataload(0x13680), f_q)) +mstore(0x138a0, mod(calldataload(0x136a0), f_q)) +mstore(0x138c0, mod(calldataload(0x136c0), f_q)) +mstore(0x138e0, mod(calldataload(0x136e0), f_q)) +mstore(0x13900, mod(calldataload(0x13700), f_q)) +mstore(0x13920, mod(calldataload(0x13720), f_q)) +mstore(0x13940, mod(calldataload(0x13740), f_q)) +mstore(0x13960, mod(calldataload(0x13760), f_q)) +mstore(0x13980, mod(calldataload(0x13780), f_q)) +mstore(0x139a0, mod(calldataload(0x137a0), f_q)) +mstore(0x139c0, mod(calldataload(0x137c0), f_q)) +mstore(0x139e0, mod(calldataload(0x137e0), f_q)) +mstore(0x13a00, mod(calldataload(0x13800), f_q)) +mstore(0x13a20, mod(calldataload(0x13820), f_q)) +mstore(0x13a40, mod(calldataload(0x13840), f_q)) +mstore(0x13a60, mod(calldataload(0x13860), f_q)) +mstore(0x13a80, mod(calldataload(0x13880), f_q)) +mstore(0x13aa0, mod(calldataload(0x138a0), f_q)) +mstore(0x13ac0, mod(calldataload(0x138c0), f_q)) +mstore(0x13ae0, mod(calldataload(0x138e0), f_q)) +mstore(0x13b00, mod(calldataload(0x13900), f_q)) +mstore(0x13b20, mod(calldataload(0x13920), f_q)) +mstore(0x13b40, mod(calldataload(0x13940), f_q)) +mstore(0x13b60, mod(calldataload(0x13960), f_q)) +mstore(0x13b80, mod(calldataload(0x13980), f_q)) +mstore(0x13ba0, mod(calldataload(0x139a0), f_q)) +mstore(0x13bc0, mod(calldataload(0x139c0), f_q)) +mstore(0x13be0, mod(calldataload(0x139e0), f_q)) +mstore(0x13c00, mod(calldataload(0x13a00), f_q)) +mstore(0x13c20, mod(calldataload(0x13a20), f_q)) +mstore(0x13c40, mod(calldataload(0x13a40), f_q)) +mstore(0x13c60, mod(calldataload(0x13a60), f_q)) +mstore(0x13c80, mod(calldataload(0x13a80), f_q)) +mstore(0x13ca0, mod(calldataload(0x13aa0), f_q)) +mstore(0x13cc0, mod(calldataload(0x13ac0), f_q)) +mstore(0x13ce0, mod(calldataload(0x13ae0), f_q)) +mstore(0x13d00, mod(calldataload(0x13b00), f_q)) +mstore(0x13d20, mod(calldataload(0x13b20), f_q)) +mstore(0x13d40, mod(calldataload(0x13b40), f_q)) +mstore(0x13d60, mod(calldataload(0x13b60), f_q)) +mstore(0x13d80, mod(calldataload(0x13b80), f_q)) +mstore(0x13da0, mod(calldataload(0x13ba0), f_q)) +mstore(0x13dc0, mod(calldataload(0x13bc0), f_q)) +mstore(0x13de0, mod(calldataload(0x13be0), f_q)) +mstore(0x13e00, mod(calldataload(0x13c00), f_q)) +mstore(0x13e20, mod(calldataload(0x13c20), f_q)) +mstore(0x13e40, mod(calldataload(0x13c40), f_q)) +mstore(0x13e60, mod(calldataload(0x13c60), f_q)) +mstore(0x13e80, mod(calldataload(0x13c80), f_q)) +mstore(0x13ea0, mod(calldataload(0x13ca0), f_q)) +mstore(0x13ec0, mod(calldataload(0x13cc0), f_q)) +mstore(0x13ee0, mod(calldataload(0x13ce0), f_q)) +mstore(0x13f00, mod(calldataload(0x13d00), f_q)) +mstore(0x13f20, mod(calldataload(0x13d20), f_q)) +mstore(0x13f40, mod(calldataload(0x13d40), f_q)) +mstore(0x13f60, mod(calldataload(0x13d60), f_q)) +mstore(0x13f80, mod(calldataload(0x13d80), f_q)) +mstore(0x13fa0, mod(calldataload(0x13da0), f_q)) +mstore(0x13fc0, mod(calldataload(0x13dc0), f_q)) +mstore(0x13fe0, mod(calldataload(0x13de0), f_q)) +mstore(0x14000, mod(calldataload(0x13e00), f_q)) +mstore(0x14020, mod(calldataload(0x13e20), f_q)) +mstore(0x14040, mod(calldataload(0x13e40), f_q)) +mstore(0x14060, mod(calldataload(0x13e60), f_q)) +mstore(0x14080, mod(calldataload(0x13e80), f_q)) +mstore(0x140a0, mod(calldataload(0x13ea0), f_q)) +mstore(0x140c0, mod(calldataload(0x13ec0), f_q)) +mstore(0x140e0, mod(calldataload(0x13ee0), f_q)) +mstore(0x14100, mod(calldataload(0x13f00), f_q)) +mstore(0x14120, mod(calldataload(0x13f20), f_q)) +mstore(0x14140, mod(calldataload(0x13f40), f_q)) +mstore(0x14160, mod(calldataload(0x13f60), f_q)) +mstore(0x14180, mod(calldataload(0x13f80), f_q)) +mstore(0x141a0, mod(calldataload(0x13fa0), f_q)) +mstore(0x141c0, mod(calldataload(0x13fc0), f_q)) +mstore(0x141e0, mod(calldataload(0x13fe0), f_q)) +mstore(0x14200, mod(calldataload(0x14000), f_q)) +mstore(0x14220, mod(calldataload(0x14020), f_q)) +mstore(0x14240, mod(calldataload(0x14040), f_q)) +mstore(0x14260, mod(calldataload(0x14060), f_q)) +mstore(0x14280, mod(calldataload(0x14080), f_q)) +mstore(0x142a0, mod(calldataload(0x140a0), f_q)) +mstore(0x142c0, mod(calldataload(0x140c0), f_q)) +mstore(0x142e0, mod(calldataload(0x140e0), f_q)) +mstore(0x14300, mod(calldataload(0x14100), f_q)) +mstore(0x14320, mod(calldataload(0x14120), f_q)) +mstore(0x14340, mod(calldataload(0x14140), f_q)) +mstore(0x14360, mod(calldataload(0x14160), f_q)) +mstore(0x14380, mod(calldataload(0x14180), f_q)) +mstore(0x143a0, mod(calldataload(0x141a0), f_q)) +mstore(0x143c0, mod(calldataload(0x141c0), f_q)) +mstore(0x143e0, mod(calldataload(0x141e0), f_q)) +mstore(0x14400, mod(calldataload(0x14200), f_q)) +mstore(0x14420, mod(calldataload(0x14220), f_q)) +mstore(0x14440, mod(calldataload(0x14240), f_q)) +mstore(0x14460, mod(calldataload(0x14260), f_q)) +mstore(0x14480, mod(calldataload(0x14280), f_q)) +mstore(0x144a0, mod(calldataload(0x142a0), f_q)) +mstore(0x144c0, mod(calldataload(0x142c0), f_q)) +mstore(0x144e0, mod(calldataload(0x142e0), f_q)) +mstore(0x14500, mod(calldataload(0x14300), f_q)) +mstore(0x14520, mod(calldataload(0x14320), f_q)) +mstore(0x14540, mod(calldataload(0x14340), f_q)) +mstore(0x14560, mod(calldataload(0x14360), f_q)) +mstore(0x14580, mod(calldataload(0x14380), f_q)) +mstore(0x145a0, mod(calldataload(0x143a0), f_q)) +mstore(0x145c0, mod(calldataload(0x143c0), f_q)) +mstore(0x145e0, mod(calldataload(0x143e0), f_q)) +mstore(0x14600, mod(calldataload(0x14400), f_q)) +mstore(0x14620, mod(calldataload(0x14420), f_q)) +mstore(0x14640, mod(calldataload(0x14440), f_q)) +mstore(0x14660, mod(calldataload(0x14460), f_q)) +mstore(0x14680, mod(calldataload(0x14480), f_q)) +mstore(0x146a0, mod(calldataload(0x144a0), f_q)) +mstore(0x146c0, mod(calldataload(0x144c0), f_q)) +mstore(0x146e0, mod(calldataload(0x144e0), f_q)) +mstore(0x14700, mod(calldataload(0x14500), f_q)) +mstore(0x14720, mod(calldataload(0x14520), f_q)) +mstore(0x14740, mod(calldataload(0x14540), f_q)) +mstore(0x14760, mod(calldataload(0x14560), f_q)) +mstore(0x14780, mod(calldataload(0x14580), f_q)) +mstore(0x147a0, mod(calldataload(0x145a0), f_q)) +mstore(0x147c0, mod(calldataload(0x145c0), f_q)) +mstore(0x147e0, mod(calldataload(0x145e0), f_q)) +mstore(0x14800, mod(calldataload(0x14600), f_q)) +mstore(0x14820, mod(calldataload(0x14620), f_q)) +mstore(0x14840, mod(calldataload(0x14640), f_q)) +mstore(0x14860, mod(calldataload(0x14660), f_q)) +mstore(0x14880, mod(calldataload(0x14680), f_q)) +mstore(0x148a0, mod(calldataload(0x146a0), f_q)) +mstore(0x148c0, mod(calldataload(0x146c0), f_q)) +mstore(0x148e0, mod(calldataload(0x146e0), f_q)) +mstore(0x14900, mod(calldataload(0x14700), f_q)) +mstore(0x14920, mod(calldataload(0x14720), f_q)) +mstore(0x14940, mod(calldataload(0x14740), f_q)) +mstore(0x14960, mod(calldataload(0x14760), f_q)) +mstore(0x14980, mod(calldataload(0x14780), f_q)) +mstore(0x149a0, mod(calldataload(0x147a0), f_q)) +mstore(0x149c0, mod(calldataload(0x147c0), f_q)) +mstore(0x149e0, mod(calldataload(0x147e0), f_q)) +mstore(0x14a00, mod(calldataload(0x14800), f_q)) +mstore(0x14a20, mod(calldataload(0x14820), f_q)) +mstore(0x14a40, mod(calldataload(0x14840), f_q)) +mstore(0x14a60, mod(calldataload(0x14860), f_q)) +mstore(0x14a80, mod(calldataload(0x14880), f_q)) +mstore(0x14aa0, mod(calldataload(0x148a0), f_q)) +mstore(0x14ac0, mod(calldataload(0x148c0), f_q)) +mstore(0x14ae0, mod(calldataload(0x148e0), f_q)) +mstore(0x14b00, mod(calldataload(0x14900), f_q)) +mstore(0x14b20, mod(calldataload(0x14920), f_q)) +mstore(0x14b40, mod(calldataload(0x14940), f_q)) +mstore(0x14b60, mod(calldataload(0x14960), f_q)) +mstore(0x14b80, mod(calldataload(0x14980), f_q)) +mstore(0x14ba0, mod(calldataload(0x149a0), f_q)) +mstore(0x14bc0, mod(calldataload(0x149c0), f_q)) +mstore(0x14be0, mod(calldataload(0x149e0), f_q)) +mstore(0x14c00, mod(calldataload(0x14a00), f_q)) +mstore(0x14c20, mod(calldataload(0x14a20), f_q)) +mstore(0x14c40, mod(calldataload(0x14a40), f_q)) +mstore(0x14c60, mod(calldataload(0x14a60), f_q)) +mstore(0x14c80, mod(calldataload(0x14a80), f_q)) +mstore(0x14ca0, mod(calldataload(0x14aa0), f_q)) +mstore(0x14cc0, mod(calldataload(0x14ac0), f_q)) +mstore(0x14ce0, mod(calldataload(0x14ae0), f_q)) +mstore(0x14d00, mod(calldataload(0x14b00), f_q)) +mstore(0x14d20, mod(calldataload(0x14b20), f_q)) +mstore(0x14d40, mod(calldataload(0x14b40), f_q)) +mstore(0x14d60, mod(calldataload(0x14b60), f_q)) +mstore(0x14d80, mod(calldataload(0x14b80), f_q)) +mstore(0x14da0, mod(calldataload(0x14ba0), f_q)) +mstore(0x14dc0, mod(calldataload(0x14bc0), f_q)) +mstore(0x14de0, mod(calldataload(0x14be0), f_q)) +mstore(0x14e00, mod(calldataload(0x14c00), f_q)) +mstore(0x14e20, mod(calldataload(0x14c20), f_q)) +mstore(0x14e40, mod(calldataload(0x14c40), f_q)) +mstore(0x14e60, mod(calldataload(0x14c60), f_q)) +mstore(0x14e80, mod(calldataload(0x14c80), f_q)) +mstore(0x14ea0, mod(calldataload(0x14ca0), f_q)) +mstore(0x14ec0, mod(calldataload(0x14cc0), f_q)) +mstore(0x14ee0, mod(calldataload(0x14ce0), f_q)) +mstore(0x14f00, mod(calldataload(0x14d00), f_q)) +mstore(0x14f20, mod(calldataload(0x14d20), f_q)) +mstore(0x14f40, mod(calldataload(0x14d40), f_q)) +mstore(0x14f60, mod(calldataload(0x14d60), f_q)) +mstore(0x14f80, mod(calldataload(0x14d80), f_q)) +mstore(0x14fa0, mod(calldataload(0x14da0), f_q)) +mstore(0x14fc0, mod(calldataload(0x14dc0), f_q)) +mstore(0x14fe0, mod(calldataload(0x14de0), f_q)) +mstore(0x15000, mod(calldataload(0x14e00), f_q)) +mstore(0x15020, mod(calldataload(0x14e20), f_q)) +mstore(0x15040, mod(calldataload(0x14e40), f_q)) +mstore(0x15060, mod(calldataload(0x14e60), f_q)) +mstore(0x15080, mod(calldataload(0x14e80), f_q)) +mstore(0x150a0, mod(calldataload(0x14ea0), f_q)) +mstore(0x150c0, mod(calldataload(0x14ec0), f_q)) +mstore(0x150e0, mod(calldataload(0x14ee0), f_q)) +mstore(0x15100, mod(calldataload(0x14f00), f_q)) +mstore(0x15120, mod(calldataload(0x14f20), f_q)) +mstore(0x15140, mod(calldataload(0x14f40), f_q)) +mstore(0x15160, mod(calldataload(0x14f60), f_q)) +mstore(0x15180, mod(calldataload(0x14f80), f_q)) +mstore(0x151a0, mod(calldataload(0x14fa0), f_q)) +mstore(0x151c0, mod(calldataload(0x14fc0), f_q)) +mstore(0x151e0, mod(calldataload(0x14fe0), f_q)) +mstore(0x15200, mod(calldataload(0x15000), f_q)) +mstore(0x15220, mod(calldataload(0x15020), f_q)) +mstore(0x15240, mod(calldataload(0x15040), f_q)) +mstore(0x15260, mod(calldataload(0x15060), f_q)) +mstore(0x15280, mod(calldataload(0x15080), f_q)) +mstore(0x152a0, mod(calldataload(0x150a0), f_q)) +mstore(0x152c0, mod(calldataload(0x150c0), f_q)) +mstore(0x152e0, mod(calldataload(0x150e0), f_q)) +mstore(0x15300, mod(calldataload(0x15100), f_q)) +mstore(0x15320, mod(calldataload(0x15120), f_q)) +mstore(0x15340, mod(calldataload(0x15140), f_q)) +mstore(0x15360, mod(calldataload(0x15160), f_q)) +mstore(0x15380, mod(calldataload(0x15180), f_q)) +mstore(0x153a0, mod(calldataload(0x151a0), f_q)) +mstore(0x153c0, mod(calldataload(0x151c0), f_q)) +mstore(0x153e0, mod(calldataload(0x151e0), f_q)) +mstore(0x15400, mod(calldataload(0x15200), f_q)) +mstore(0x15420, mod(calldataload(0x15220), f_q)) +mstore(0x15440, mod(calldataload(0x15240), f_q)) +mstore(0x15460, mod(calldataload(0x15260), f_q)) +mstore(0x15480, mod(calldataload(0x15280), f_q)) +mstore(0x154a0, mod(calldataload(0x152a0), f_q)) +mstore(0x154c0, mod(calldataload(0x152c0), f_q)) +mstore(0x154e0, mod(calldataload(0x152e0), f_q)) +mstore(0x15500, mod(calldataload(0x15300), f_q)) +mstore(0x15520, mod(calldataload(0x15320), f_q)) +mstore(0x15540, mod(calldataload(0x15340), f_q)) +mstore(0x15560, mod(calldataload(0x15360), f_q)) +mstore(0x15580, mod(calldataload(0x15380), f_q)) +mstore(0x155a0, mod(calldataload(0x153a0), f_q)) +mstore(0x155c0, mod(calldataload(0x153c0), f_q)) +mstore(0x155e0, mod(calldataload(0x153e0), f_q)) +mstore(0x15600, mod(calldataload(0x15400), f_q)) +mstore(0x15620, mod(calldataload(0x15420), f_q)) +mstore(0x15640, mod(calldataload(0x15440), f_q)) +mstore(0x15660, mod(calldataload(0x15460), f_q)) +mstore(0x15680, mod(calldataload(0x15480), f_q)) +mstore(0x156a0, mod(calldataload(0x154a0), f_q)) +mstore(0x156c0, mod(calldataload(0x154c0), f_q)) +mstore(0x156e0, mod(calldataload(0x154e0), f_q)) +mstore(0x15700, mod(calldataload(0x15500), f_q)) +mstore(0x15720, mod(calldataload(0x15520), f_q)) +mstore(0x15740, mod(calldataload(0x15540), f_q)) +mstore(0x15760, mod(calldataload(0x15560), f_q)) +mstore(0x15780, mod(calldataload(0x15580), f_q)) +mstore(0x157a0, mod(calldataload(0x155a0), f_q)) +mstore(0x157c0, mod(calldataload(0x155c0), f_q)) +mstore(0x157e0, mod(calldataload(0x155e0), f_q)) +mstore(0x15800, mod(calldataload(0x15600), f_q)) +mstore(0x15820, mod(calldataload(0x15620), f_q)) +mstore(0x15840, mod(calldataload(0x15640), f_q)) +mstore(0x15860, mod(calldataload(0x15660), f_q)) +mstore(0x15880, mod(calldataload(0x15680), f_q)) +mstore(0x158a0, mod(calldataload(0x156a0), f_q)) +mstore(0x158c0, mod(calldataload(0x156c0), f_q)) +mstore(0x158e0, mod(calldataload(0x156e0), f_q)) +mstore(0x15900, mod(calldataload(0x15700), f_q)) +mstore(0x15920, mod(calldataload(0x15720), f_q)) +mstore(0x15940, mod(calldataload(0x15740), f_q)) +mstore(0x15960, mod(calldataload(0x15760), f_q)) +mstore(0x15980, mod(calldataload(0x15780), f_q)) +mstore(0x159a0, mod(calldataload(0x157a0), f_q)) +mstore(0x159c0, mod(calldataload(0x157c0), f_q)) +mstore(0x159e0, mod(calldataload(0x157e0), f_q)) +mstore(0x15a00, mod(calldataload(0x15800), f_q)) +mstore(0x15a20, mod(calldataload(0x15820), f_q)) +mstore(0x15a40, mod(calldataload(0x15840), f_q)) +mstore(0x15a60, mod(calldataload(0x15860), f_q)) +mstore(0x15a80, mod(calldataload(0x15880), f_q)) +mstore(0x15aa0, mod(calldataload(0x158a0), f_q)) +mstore(0x15ac0, mod(calldataload(0x158c0), f_q)) +mstore(0x15ae0, mod(calldataload(0x158e0), f_q)) +mstore(0x15b00, mod(calldataload(0x15900), f_q)) +mstore(0x15b20, mod(calldataload(0x15920), f_q)) +mstore(0x15b40, mod(calldataload(0x15940), f_q)) +mstore(0x15b60, mod(calldataload(0x15960), f_q)) +mstore(0x15b80, mod(calldataload(0x15980), f_q)) +mstore(0x15ba0, mod(calldataload(0x159a0), f_q)) +mstore(0x15bc0, mod(calldataload(0x159c0), f_q)) +mstore(0x15be0, mod(calldataload(0x159e0), f_q)) +mstore(0x15c00, mod(calldataload(0x15a00), f_q)) +mstore(0x15c20, mod(calldataload(0x15a20), f_q)) +mstore(0x15c40, mod(calldataload(0x15a40), f_q)) +mstore(0x15c60, mod(calldataload(0x15a60), f_q)) +mstore(0x15c80, mod(calldataload(0x15a80), f_q)) +mstore(0x15ca0, mod(calldataload(0x15aa0), f_q)) +mstore(0x15cc0, mod(calldataload(0x15ac0), f_q)) +mstore(0x15ce0, mod(calldataload(0x15ae0), f_q)) +mstore(0x15d00, mod(calldataload(0x15b00), f_q)) +mstore(0x15d20, mod(calldataload(0x15b20), f_q)) +mstore(0x15d40, mod(calldataload(0x15b40), f_q)) +mstore(0x15d60, mod(calldataload(0x15b60), f_q)) +mstore(0x15d80, mod(calldataload(0x15b80), f_q)) +mstore(0x15da0, mod(calldataload(0x15ba0), f_q)) +mstore(0x15dc0, mod(calldataload(0x15bc0), f_q)) +mstore(0x15de0, mod(calldataload(0x15be0), f_q)) +mstore(0x15e00, mod(calldataload(0x15c00), f_q)) +mstore(0x15e20, mod(calldataload(0x15c20), f_q)) +mstore(0x15e40, mod(calldataload(0x15c40), f_q)) +mstore(0x15e60, mod(calldataload(0x15c60), f_q)) +mstore(0x15e80, mod(calldataload(0x15c80), f_q)) +mstore(0x15ea0, mod(calldataload(0x15ca0), f_q)) +mstore(0x15ec0, mod(calldataload(0x15cc0), f_q)) +mstore(0x15ee0, mod(calldataload(0x15ce0), f_q)) +mstore(0x15f00, mod(calldataload(0x15d00), f_q)) +mstore(0x15f20, mod(calldataload(0x15d20), f_q)) +mstore(0x15f40, mod(calldataload(0x15d40), f_q)) +mstore(0x15f60, mod(calldataload(0x15d60), f_q)) +mstore(0x15f80, mod(calldataload(0x15d80), f_q)) +mstore(0x15fa0, mod(calldataload(0x15da0), f_q)) +mstore(0x15fc0, mod(calldataload(0x15dc0), f_q)) +mstore(0x15fe0, mod(calldataload(0x15de0), f_q)) +mstore(0x16000, mod(calldataload(0x15e00), f_q)) +mstore(0x16020, mod(calldataload(0x15e20), f_q)) +mstore(0x16040, mod(calldataload(0x15e40), f_q)) +mstore(0x16060, mod(calldataload(0x15e60), f_q)) +mstore(0x16080, mod(calldataload(0x15e80), f_q)) +mstore(0x160a0, mod(calldataload(0x15ea0), f_q)) +mstore(0x160c0, mod(calldataload(0x15ec0), f_q)) +mstore(0x160e0, mod(calldataload(0x15ee0), f_q)) +mstore(0x16100, mod(calldataload(0x15f00), f_q)) +mstore(0x16120, mod(calldataload(0x15f20), f_q)) +mstore(0x16140, mod(calldataload(0x15f40), f_q)) +mstore(0x16160, mod(calldataload(0x15f60), f_q)) +mstore(0x16180, mod(calldataload(0x15f80), f_q)) +mstore(0x161a0, mod(calldataload(0x15fa0), f_q)) +mstore(0x161c0, mod(calldataload(0x15fc0), f_q)) +mstore(0x161e0, mod(calldataload(0x15fe0), f_q)) +mstore(0x16200, mod(calldataload(0x16000), f_q)) +mstore(0x16220, mod(calldataload(0x16020), f_q)) +mstore(0x16240, mod(calldataload(0x16040), f_q)) +mstore(0x16260, mod(calldataload(0x16060), f_q)) +mstore(0x16280, mod(calldataload(0x16080), f_q)) +mstore(0x162a0, mod(calldataload(0x160a0), f_q)) +mstore(0x162c0, mod(calldataload(0x160c0), f_q)) +mstore(0x162e0, mod(calldataload(0x160e0), f_q)) +mstore(0x16300, mod(calldataload(0x16100), f_q)) +mstore(0x16320, mod(calldataload(0x16120), f_q)) +mstore(0x16340, mod(calldataload(0x16140), f_q)) +mstore(0x16360, mod(calldataload(0x16160), f_q)) +mstore(0x16380, mod(calldataload(0x16180), f_q)) +mstore(0x163a0, mod(calldataload(0x161a0), f_q)) +mstore(0x163c0, mod(calldataload(0x161c0), f_q)) +mstore(0x163e0, mod(calldataload(0x161e0), f_q)) +mstore(0x16400, mod(calldataload(0x16200), f_q)) +mstore(0x16420, mod(calldataload(0x16220), f_q)) +mstore(0x16440, mod(calldataload(0x16240), f_q)) +mstore(0x16460, mod(calldataload(0x16260), f_q)) +mstore(0x16480, mod(calldataload(0x16280), f_q)) +mstore(0x164a0, mod(calldataload(0x162a0), f_q)) +mstore(0x164c0, mod(calldataload(0x162c0), f_q)) +mstore(0x164e0, mod(calldataload(0x162e0), f_q)) +mstore(0x16500, mod(calldataload(0x16300), f_q)) +mstore(0x16520, mod(calldataload(0x16320), f_q)) +mstore(0x16540, mod(calldataload(0x16340), f_q)) +mstore(0x16560, mod(calldataload(0x16360), f_q)) +mstore(0x16580, mod(calldataload(0x16380), f_q)) +mstore(0x165a0, mod(calldataload(0x163a0), f_q)) +mstore(0x165c0, mod(calldataload(0x163c0), f_q)) +mstore(0x165e0, mod(calldataload(0x163e0), f_q)) +mstore(0x16600, mod(calldataload(0x16400), f_q)) +mstore(0x16620, mod(calldataload(0x16420), f_q)) +mstore(0x16640, mod(calldataload(0x16440), f_q)) +mstore(0x16660, mod(calldataload(0x16460), f_q)) +mstore(0x16680, mod(calldataload(0x16480), f_q)) +mstore(0x166a0, mod(calldataload(0x164a0), f_q)) +mstore(0x166c0, mod(calldataload(0x164c0), f_q)) +mstore(0x166e0, mod(calldataload(0x164e0), f_q)) +mstore(0x16700, mod(calldataload(0x16500), f_q)) +mstore(0x16720, mod(calldataload(0x16520), f_q)) +mstore(0x16740, mod(calldataload(0x16540), f_q)) +mstore(0x16760, mod(calldataload(0x16560), f_q)) +mstore(0x16780, mod(calldataload(0x16580), f_q)) +mstore(0x167a0, mod(calldataload(0x165a0), f_q)) +mstore(0x167c0, mod(calldataload(0x165c0), f_q)) +mstore(0x167e0, mod(calldataload(0x165e0), f_q)) +mstore(0x16800, mod(calldataload(0x16600), f_q)) +mstore(0x16820, mod(calldataload(0x16620), f_q)) +mstore(0x16840, mod(calldataload(0x16640), f_q)) +mstore(0x16860, mod(calldataload(0x16660), f_q)) +mstore(0x16880, mod(calldataload(0x16680), f_q)) +mstore(0x168a0, mod(calldataload(0x166a0), f_q)) +mstore(0x168c0, mod(calldataload(0x166c0), f_q)) +mstore(0x168e0, mod(calldataload(0x166e0), f_q)) +mstore(0x16900, mod(calldataload(0x16700), f_q)) +mstore(0x16920, mod(calldataload(0x16720), f_q)) +mstore(0x16940, mod(calldataload(0x16740), f_q)) +mstore(0x16960, mod(calldataload(0x16760), f_q)) +mstore(0x16980, mod(calldataload(0x16780), f_q)) +mstore(0x169a0, mod(calldataload(0x167a0), f_q)) +mstore(0x169c0, mod(calldataload(0x167c0), f_q)) +mstore(0x169e0, mod(calldataload(0x167e0), f_q)) +mstore(0x16a00, mod(calldataload(0x16800), f_q)) +mstore(0x16a20, mod(calldataload(0x16820), f_q)) +mstore(0x16a40, mod(calldataload(0x16840), f_q)) +mstore(0x16a60, mod(calldataload(0x16860), f_q)) +mstore(0x16a80, mod(calldataload(0x16880), f_q)) +mstore(0x16aa0, mod(calldataload(0x168a0), f_q)) +mstore(0x16ac0, mod(calldataload(0x168c0), f_q)) +mstore(0x16ae0, mod(calldataload(0x168e0), f_q)) +mstore(0x16b00, mod(calldataload(0x16900), f_q)) +mstore(0x16b20, mod(calldataload(0x16920), f_q)) +mstore(0x16b40, mod(calldataload(0x16940), f_q)) +mstore(0x16b60, mod(calldataload(0x16960), f_q)) +mstore(0x16b80, mod(calldataload(0x16980), f_q)) +mstore(0x16ba0, mod(calldataload(0x169a0), f_q)) +mstore(0x16bc0, mod(calldataload(0x169c0), f_q)) +mstore(0x16be0, mod(calldataload(0x169e0), f_q)) +mstore(0x16c00, mod(calldataload(0x16a00), f_q)) +mstore(0x16c20, mod(calldataload(0x16a20), f_q)) +mstore(0x16c40, mod(calldataload(0x16a40), f_q)) +mstore(0x16c60, mod(calldataload(0x16a60), f_q)) +mstore(0x16c80, mod(calldataload(0x16a80), f_q)) +mstore(0x16ca0, mod(calldataload(0x16aa0), f_q)) +mstore(0x16cc0, mod(calldataload(0x16ac0), f_q)) +mstore(0x16ce0, mod(calldataload(0x16ae0), f_q)) +mstore(0x16d00, mod(calldataload(0x16b00), f_q)) +mstore(0x16d20, mod(calldataload(0x16b20), f_q)) +mstore(0x16d40, mod(calldataload(0x16b40), f_q)) +mstore(0x16d60, mod(calldataload(0x16b60), f_q)) +mstore(0x16d80, mod(calldataload(0x16b80), f_q)) +mstore(0x16da0, mod(calldataload(0x16ba0), f_q)) +mstore(0x16dc0, mod(calldataload(0x16bc0), f_q)) +mstore(0x16de0, mod(calldataload(0x16be0), f_q)) +mstore(0x16e00, mod(calldataload(0x16c00), f_q)) +mstore(0x16e20, mod(calldataload(0x16c20), f_q)) +mstore(0x16e40, mod(calldataload(0x16c40), f_q)) +mstore(0x16e60, mod(calldataload(0x16c60), f_q)) +mstore(0x16e80, mod(calldataload(0x16c80), f_q)) +mstore(0x16ea0, mod(calldataload(0x16ca0), f_q)) +mstore(0x16ec0, mod(calldataload(0x16cc0), f_q)) +mstore(0x16ee0, mod(calldataload(0x16ce0), f_q)) +mstore(0x16f00, mod(calldataload(0x16d00), f_q)) +mstore(0x16f20, mod(calldataload(0x16d20), f_q)) +mstore(0x16f40, mod(calldataload(0x16d40), f_q)) +mstore(0x16f60, mod(calldataload(0x16d60), f_q)) +mstore(0x16f80, mod(calldataload(0x16d80), f_q)) +mstore(0x16fa0, mod(calldataload(0x16da0), f_q)) +mstore(0x16fc0, mod(calldataload(0x16dc0), f_q)) +mstore(0x16fe0, mod(calldataload(0x16de0), f_q)) +mstore(0x17000, mod(calldataload(0x16e00), f_q)) +mstore(0x17020, mod(calldataload(0x16e20), f_q)) +mstore(0x17040, mod(calldataload(0x16e40), f_q)) +mstore(0x17060, mod(calldataload(0x16e60), f_q)) +mstore(0x17080, mod(calldataload(0x16e80), f_q)) +mstore(0x170a0, mod(calldataload(0x16ea0), f_q)) +mstore(0x170c0, mod(calldataload(0x16ec0), f_q)) +mstore(0x170e0, mod(calldataload(0x16ee0), f_q)) +mstore(0x17100, mod(calldataload(0x16f00), f_q)) +mstore(0x17120, mod(calldataload(0x16f20), f_q)) +mstore(0x17140, mod(calldataload(0x16f40), f_q)) +mstore(0x17160, mod(calldataload(0x16f60), f_q)) +mstore(0x17180, mod(calldataload(0x16f80), f_q)) +mstore(0x171a0, mod(calldataload(0x16fa0), f_q)) +mstore(0x171c0, mod(calldataload(0x16fc0), f_q)) +mstore(0x171e0, mod(calldataload(0x16fe0), f_q)) +mstore(0x17200, mod(calldataload(0x17000), f_q)) +mstore(0x17220, mod(calldataload(0x17020), f_q)) +mstore(0x17240, mod(calldataload(0x17040), f_q)) +mstore(0x17260, mod(calldataload(0x17060), f_q)) +mstore(0x17280, mod(calldataload(0x17080), f_q)) +mstore(0x172a0, mod(calldataload(0x170a0), f_q)) +mstore(0x172c0, mod(calldataload(0x170c0), f_q)) +mstore(0x172e0, mod(calldataload(0x170e0), f_q)) +mstore(0x17300, mod(calldataload(0x17100), f_q)) +mstore(0x17320, mod(calldataload(0x17120), f_q)) +mstore(0x17340, mod(calldataload(0x17140), f_q)) +mstore(0x17360, mod(calldataload(0x17160), f_q)) +mstore(0x17380, mod(calldataload(0x17180), f_q)) +mstore(0x173a0, mod(calldataload(0x171a0), f_q)) +mstore(0x173c0, mod(calldataload(0x171c0), f_q)) +mstore(0x173e0, mod(calldataload(0x171e0), f_q)) +mstore(0x17400, mod(calldataload(0x17200), f_q)) +mstore(0x17420, mod(calldataload(0x17220), f_q)) +mstore(0x17440, mod(calldataload(0x17240), f_q)) +mstore(0x17460, mod(calldataload(0x17260), f_q)) +mstore(0x17480, mod(calldataload(0x17280), f_q)) +mstore(0x174a0, mod(calldataload(0x172a0), f_q)) +mstore(0x174c0, mod(calldataload(0x172c0), f_q)) +mstore(0x174e0, mod(calldataload(0x172e0), f_q)) +mstore(0x17500, mod(calldataload(0x17300), f_q)) +mstore(0x17520, mod(calldataload(0x17320), f_q)) +mstore(0x17540, mod(calldataload(0x17340), f_q)) +mstore(0x17560, mod(calldataload(0x17360), f_q)) +mstore(0x17580, mod(calldataload(0x17380), f_q)) +mstore(0x175a0, mod(calldataload(0x173a0), f_q)) +mstore(0x175c0, mod(calldataload(0x173c0), f_q)) +mstore(0x175e0, mod(calldataload(0x173e0), f_q)) +mstore(0x17600, mod(calldataload(0x17400), f_q)) +mstore(0x17620, mod(calldataload(0x17420), f_q)) +mstore(0x17640, mod(calldataload(0x17440), f_q)) +mstore(0x17660, mod(calldataload(0x17460), f_q)) +mstore(0x17680, mod(calldataload(0x17480), f_q)) +mstore(0x176a0, mod(calldataload(0x174a0), f_q)) +mstore(0x176c0, mod(calldataload(0x174c0), f_q)) +mstore(0x176e0, mod(calldataload(0x174e0), f_q)) +mstore(0x17700, mod(calldataload(0x17500), f_q)) +mstore(0x17720, mod(calldataload(0x17520), f_q)) +mstore(0x17740, mod(calldataload(0x17540), f_q)) +mstore(0x17760, mod(calldataload(0x17560), f_q)) +mstore(0x17780, mod(calldataload(0x17580), f_q)) +mstore(0x177a0, mod(calldataload(0x175a0), f_q)) +mstore(0x177c0, mod(calldataload(0x175c0), f_q)) +mstore(0x177e0, mod(calldataload(0x175e0), f_q)) +mstore(0x17800, mod(calldataload(0x17600), f_q)) +mstore(0x17820, mod(calldataload(0x17620), f_q)) +mstore(0x17840, mod(calldataload(0x17640), f_q)) +mstore(0x17860, mod(calldataload(0x17660), f_q)) +mstore(0x17880, mod(calldataload(0x17680), f_q)) +mstore(0x178a0, mod(calldataload(0x176a0), f_q)) +mstore(0x178c0, mod(calldataload(0x176c0), f_q)) +mstore(0x178e0, mod(calldataload(0x176e0), f_q)) +mstore(0x17900, mod(calldataload(0x17700), f_q)) +mstore(0x17920, mod(calldataload(0x17720), f_q)) +mstore(0x17940, mod(calldataload(0x17740), f_q)) +mstore(0x17960, mod(calldataload(0x17760), f_q)) +mstore(0x17980, mod(calldataload(0x17780), f_q)) +mstore(0x179a0, mod(calldataload(0x177a0), f_q)) +mstore(0x179c0, mod(calldataload(0x177c0), f_q)) +mstore(0x179e0, mod(calldataload(0x177e0), f_q)) +mstore(0x17a00, mod(calldataload(0x17800), f_q)) +mstore(0x17a20, mod(calldataload(0x17820), f_q)) +mstore(0x17a40, mod(calldataload(0x17840), f_q)) +mstore(0x17a60, mod(calldataload(0x17860), f_q)) +mstore(0x17a80, mod(calldataload(0x17880), f_q)) +mstore(0x17aa0, mod(calldataload(0x178a0), f_q)) +mstore(0x17ac0, mod(calldataload(0x178c0), f_q)) +mstore(0x17ae0, mod(calldataload(0x178e0), f_q)) +mstore(0x17b00, mod(calldataload(0x17900), f_q)) +mstore(0x17b20, mod(calldataload(0x17920), f_q)) +mstore(0x17b40, mod(calldataload(0x17940), f_q)) +mstore(0x17b60, mod(calldataload(0x17960), f_q)) +mstore(0x17b80, mod(calldataload(0x17980), f_q)) +mstore(0x17ba0, mod(calldataload(0x179a0), f_q)) +mstore(0x17bc0, mod(calldataload(0x179c0), f_q)) +mstore(0x17be0, mod(calldataload(0x179e0), f_q)) +mstore(0x17c00, mod(calldataload(0x17a00), f_q)) +mstore(0x17c20, mod(calldataload(0x17a20), f_q)) +mstore(0x17c40, mod(calldataload(0x17a40), f_q)) +mstore(0x17c60, mod(calldataload(0x17a60), f_q)) +mstore(0x17c80, mod(calldataload(0x17a80), f_q)) +mstore(0x17ca0, mod(calldataload(0x17aa0), f_q)) +mstore(0x17cc0, mod(calldataload(0x17ac0), f_q)) +mstore(0x17ce0, mod(calldataload(0x17ae0), f_q)) +mstore(0x17d00, mod(calldataload(0x17b00), f_q)) +mstore(0x17d20, mod(calldataload(0x17b20), f_q)) +mstore(0x17d40, mod(calldataload(0x17b40), f_q)) +mstore(0x17d60, mod(calldataload(0x17b60), f_q)) +mstore(0x17d80, mod(calldataload(0x17b80), f_q)) +mstore(0x17da0, mod(calldataload(0x17ba0), f_q)) +mstore(0x17dc0, mod(calldataload(0x17bc0), f_q)) +mstore(0x17de0, mod(calldataload(0x17be0), f_q)) +mstore(0x17e00, mod(calldataload(0x17c00), f_q)) +mstore(0x17e20, mod(calldataload(0x17c20), f_q)) +mstore(0x17e40, mod(calldataload(0x17c40), f_q)) +mstore(0x17e60, mod(calldataload(0x17c60), f_q)) +mstore(0x17e80, mod(calldataload(0x17c80), f_q)) +mstore(0x17ea0, mod(calldataload(0x17ca0), f_q)) +mstore(0x17ec0, mod(calldataload(0x17cc0), f_q)) +mstore(0x17ee0, mod(calldataload(0x17ce0), f_q)) +mstore(0x17f00, mod(calldataload(0x17d00), f_q)) +mstore(0x17f20, mod(calldataload(0x17d20), f_q)) +mstore(0x17f40, mod(calldataload(0x17d40), f_q)) +mstore(0x17f60, mod(calldataload(0x17d60), f_q)) +mstore(0x17f80, mod(calldataload(0x17d80), f_q)) +mstore(0x17fa0, mod(calldataload(0x17da0), f_q)) +mstore(0x17fc0, mod(calldataload(0x17dc0), f_q)) +mstore(0x17fe0, mod(calldataload(0x17de0), f_q)) +mstore(0x18000, mod(calldataload(0x17e00), f_q)) +mstore(0x18020, mod(calldataload(0x17e20), f_q)) +mstore(0x18040, mod(calldataload(0x17e40), f_q)) +mstore(0x18060, mod(calldataload(0x17e60), f_q)) +mstore(0x18080, mod(calldataload(0x17e80), f_q)) +mstore(0x180a0, mod(calldataload(0x17ea0), f_q)) +mstore(0x180c0, mod(calldataload(0x17ec0), f_q)) +mstore(0x180e0, mod(calldataload(0x17ee0), f_q)) +mstore(0x18100, mod(calldataload(0x17f00), f_q)) +mstore(0x18120, mod(calldataload(0x17f20), f_q)) +mstore(0x18140, mod(calldataload(0x17f40), f_q)) +mstore(0x18160, mod(calldataload(0x17f60), f_q)) +mstore(0x18180, mod(calldataload(0x17f80), f_q)) +mstore(0x181a0, mod(calldataload(0x17fa0), f_q)) +mstore(0x181c0, mod(calldataload(0x17fc0), f_q)) +mstore(0x181e0, mod(calldataload(0x17fe0), f_q)) +mstore(0x18200, mod(calldataload(0x18000), f_q)) +mstore(0x18220, mod(calldataload(0x18020), f_q)) +mstore(0x18240, mod(calldataload(0x18040), f_q)) +mstore(0x18260, mod(calldataload(0x18060), f_q)) +mstore(0x18280, mod(calldataload(0x18080), f_q)) +mstore(0x182a0, mod(calldataload(0x180a0), f_q)) +mstore(0x182c0, mod(calldataload(0x180c0), f_q)) +mstore(0x182e0, mod(calldataload(0x180e0), f_q)) +mstore(0x18300, mod(calldataload(0x18100), f_q)) +mstore(0x18320, mod(calldataload(0x18120), f_q)) +mstore(0x18340, mod(calldataload(0x18140), f_q)) +mstore(0x18360, mod(calldataload(0x18160), f_q)) +mstore(0x18380, mod(calldataload(0x18180), f_q)) +mstore(0x183a0, mod(calldataload(0x181a0), f_q)) +mstore(0x183c0, mod(calldataload(0x181c0), f_q)) +mstore(0x183e0, mod(calldataload(0x181e0), f_q)) +mstore(0x18400, mod(calldataload(0x18200), f_q)) +mstore(0x18420, mod(calldataload(0x18220), f_q)) +mstore(0x18440, mod(calldataload(0x18240), f_q)) +mstore(0x18460, mod(calldataload(0x18260), f_q)) +mstore(0x18480, mod(calldataload(0x18280), f_q)) +mstore(0x184a0, mod(calldataload(0x182a0), f_q)) +mstore(0x184c0, mod(calldataload(0x182c0), f_q)) +mstore(0x184e0, mod(calldataload(0x182e0), f_q)) +mstore(0x18500, mod(calldataload(0x18300), f_q)) +mstore(0x18520, mod(calldataload(0x18320), f_q)) +mstore(0x18540, mod(calldataload(0x18340), f_q)) +mstore(0x18560, mod(calldataload(0x18360), f_q)) +mstore(0x18580, mod(calldataload(0x18380), f_q)) +mstore(0x185a0, mod(calldataload(0x183a0), f_q)) +mstore(0x185c0, mod(calldataload(0x183c0), f_q)) +mstore(0x185e0, mod(calldataload(0x183e0), f_q)) +mstore(0x18600, mod(calldataload(0x18400), f_q)) +mstore(0x18620, mod(calldataload(0x18420), f_q)) +mstore(0x18640, mod(calldataload(0x18440), f_q)) +mstore(0x18660, mod(calldataload(0x18460), f_q)) +mstore(0x18680, mod(calldataload(0x18480), f_q)) +mstore(0x186a0, mod(calldataload(0x184a0), f_q)) +mstore(0x186c0, mod(calldataload(0x184c0), f_q)) +mstore(0x186e0, mod(calldataload(0x184e0), f_q)) +mstore(0x18700, mod(calldataload(0x18500), f_q)) +mstore(0x18720, mod(calldataload(0x18520), f_q)) +mstore(0x18740, mod(calldataload(0x18540), f_q)) +mstore(0x18760, mod(calldataload(0x18560), f_q)) +mstore(0x18780, mod(calldataload(0x18580), f_q)) +mstore(0x187a0, mod(calldataload(0x185a0), f_q)) +mstore(0x187c0, mod(calldataload(0x185c0), f_q)) +mstore(0x187e0, mod(calldataload(0x185e0), f_q)) +mstore(0x18800, mod(calldataload(0x18600), f_q)) +mstore(0x18820, mod(calldataload(0x18620), f_q)) +mstore(0x18840, mod(calldataload(0x18640), f_q)) +mstore(0x18860, keccak256(0x81a0, 67264)) +{ + let hash := mload(0x18860) + mstore(0x18880, mod(hash, f_q)) + mstore(0x188a0, hash) + } +mstore8(100544, 1) +mstore(0x188c0, keccak256(0x188a0, 33)) +{ + let hash := mload(0x188c0) + mstore(0x188e0, mod(hash, f_q)) + mstore(0x18900, hash) + } + + { + let x := calldataload(0x18660) + mstore(0x18920, x) + let y := calldataload(0x18680) + mstore(0x18940, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x18960, keccak256(0x18900, 96)) +{ + let hash := mload(0x18960) + mstore(0x18980, mod(hash, f_q)) + mstore(0x189a0, hash) + } + + { + let x := calldataload(0x186a0) + mstore(0x189c0, x) + let y := calldataload(0x186c0) + mstore(0x189e0, y) + success := and(validate_ec_point(x, y), success) + } +{ + let x := mload(0x20) +x := add(x, shl(88, mload(0x40))) +x := add(x, shl(176, mload(0x60))) +mstore(100864, x) +let y := mload(0x80) +y := add(y, shl(88, mload(0xa0))) +y := add(y, shl(176, mload(0xc0))) +mstore(100896, y) + + success := and(validate_ec_point(x, y), success) + } +{ + let x := mload(0xe0) +x := add(x, shl(88, mload(0x100))) +x := add(x, shl(176, mload(0x120))) +mstore(100928, x) +let y := mload(0x140) +y := add(y, shl(88, mload(0x160))) +y := add(y, shl(176, mload(0x180))) +mstore(100960, y) + + success := and(validate_ec_point(x, y), success) + } +mstore(0x18a80, mulmod(mload(0x8180), mload(0x8180), f_q)) +mstore(0x18aa0, mulmod(mload(0x18a80), mload(0x18a80), f_q)) +mstore(0x18ac0, mulmod(mload(0x18aa0), mload(0x18aa0), f_q)) +mstore(0x18ae0, mulmod(mload(0x18ac0), mload(0x18ac0), f_q)) +mstore(0x18b00, mulmod(mload(0x18ae0), mload(0x18ae0), f_q)) +mstore(0x18b20, mulmod(mload(0x18b00), mload(0x18b00), f_q)) +mstore(0x18b40, mulmod(mload(0x18b20), mload(0x18b20), f_q)) +mstore(0x18b60, mulmod(mload(0x18b40), mload(0x18b40), f_q)) +mstore(0x18b80, mulmod(mload(0x18b60), mload(0x18b60), f_q)) +mstore(0x18ba0, mulmod(mload(0x18b80), mload(0x18b80), f_q)) +mstore(0x18bc0, mulmod(mload(0x18ba0), mload(0x18ba0), f_q)) +mstore(0x18be0, mulmod(mload(0x18bc0), mload(0x18bc0), f_q)) +mstore(0x18c00, mulmod(mload(0x18be0), mload(0x18be0), f_q)) +mstore(0x18c20, mulmod(mload(0x18c00), mload(0x18c00), f_q)) +mstore(0x18c40, mulmod(mload(0x18c20), mload(0x18c20), f_q)) +mstore(0x18c60, mulmod(mload(0x18c40), mload(0x18c40), f_q)) +mstore(0x18c80, mulmod(mload(0x18c60), mload(0x18c60), f_q)) +mstore(0x18ca0, addmod(mload(0x18c80), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0x18cc0, mulmod(mload(0x18ca0), 21888075877798810139885396174900942254113179552665176677420557563313886988289, f_q)) +mstore(0x18ce0, mulmod(mload(0x18cc0), 21180393220728113421338195116216869725258066600961496947533653125588029756005, f_q)) +mstore(0x18d00, addmod(mload(0x8180), 707849651111161800908210629040405363290297799454537396164551060987778739612, f_q)) +mstore(0x18d20, mulmod(mload(0x18cc0), 18801136258871406524726641978934912926273987048785013233465874845411408769764, f_q)) +mstore(0x18d40, addmod(mload(0x8180), 3087106612967868697519763766322362162274377351631021110232329341164399725853, f_q)) +mstore(0x18d60, mulmod(mload(0x18cc0), 13137266746974929847674828718073699700748973485900204084410541910719500618841, f_q)) +mstore(0x18d80, addmod(mload(0x8180), 8750976124864345374571577027183575387799390914515830259287662275856307876776, f_q)) +mstore(0x18da0, mulmod(mload(0x18cc0), 14204982954615820785730815556166377574172276341958019443243371773666809943588, f_q)) +mstore(0x18dc0, addmod(mload(0x8180), 7683259917223454436515590189090897514376088058458014900454832412908998552029, f_q)) +mstore(0x18de0, mulmod(mload(0x18cc0), 9798514389911400568976296423560720718971335345616984532185711118739339214189, f_q)) +mstore(0x18e00, addmod(mload(0x8180), 12089728481927874653270109321696554369577029054799049811512493067836469281428, f_q)) +mstore(0x18e20, mulmod(mload(0x18cc0), 5857228514216831962358810454360739186987616060007133076514874820078026801648, f_q)) +mstore(0x18e40, addmod(mload(0x8180), 16031014357622443259887595290896535901560748340408901267183329366497781693969, f_q)) +mstore(0x18e60, mulmod(mload(0x18cc0), 11402394834529375719535454173347509224290498423785625657829583372803806900475, f_q)) +mstore(0x18e80, addmod(mload(0x8180), 10485848037309899502710951571909765864257865976630408685868620813772001595142, f_q)) +mstore(0x18ea0, mulmod(mload(0x18cc0), 1, f_q)) +mstore(0x18ec0, addmod(mload(0x8180), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0x18ee0, mulmod(mload(0x18cc0), 21846745818185811051373434299876022191132089169516983080959277716660228899818, f_q)) +mstore(0x18f00, addmod(mload(0x8180), 41497053653464170872971445381252897416275230899051262738926469915579595799, f_q)) +mstore(0x18f20, mulmod(mload(0x18cc0), 4443263508319656594054352481848447997537391617204595126809744742387004492585, f_q)) +mstore(0x18f40, addmod(mload(0x8180), 17444979363519618628192053263408827091010972783211439216888459444188804003032, f_q)) +mstore(0x18f60, mulmod(mload(0x18cc0), 12491230264321380165669116208790466830459716800431293091713220204712467607643, f_q)) +mstore(0x18f80, addmod(mload(0x8180), 9397012607517895056577289536466808258088647599984741251984983981863340887974, f_q)) +mstore(0x18fa0, mulmod(mload(0x18cc0), 19671853614403325433334785013442879012032153960035114761748042217991436932142, f_q)) +mstore(0x18fc0, addmod(mload(0x8180), 2216389257435949788911620731814396076516210440380919581950161968584371563475, f_q)) +mstore(0x18fe0, mulmod(mload(0x18cc0), 7774677446045615832515547496157013738336349319554645380658286312475235974223, f_q)) +mstore(0x19000, addmod(mload(0x8180), 14113565425793659389730858249100261350212015080861388963039917874100572521394, f_q)) +mstore(0x19020, mulmod(mload(0x18cc0), 14978482549995272940995530918097137114536569299992887607386680153997031922392, f_q)) +mstore(0x19040, addmod(mload(0x8180), 6909760321844002281250874827160137974011795100423146736311524032578776573225, f_q)) +mstore(0x19060, mulmod(mload(0x18cc0), 452208714469860720619289626977689439509176881937551459804708339440577936873, f_q)) +mstore(0x19080, addmod(mload(0x8180), 21436034157369414501627116118279585649039187518478482883893495847135230558744, f_q)) +mstore(0x190a0, mulmod(mload(0x18cc0), 15929319040748925786993503352261583814540822795415523916919259682053529746604, f_q)) +mstore(0x190c0, addmod(mload(0x8180), 5958923831090349435252902392995691274007541605000510426778944504522278749013, f_q)) +mstore(0x190e0, mulmod(mload(0x18cc0), 7155182025060873459312066575593082970520854152652472229171978367285876034631, f_q)) +mstore(0x19100, addmod(mload(0x8180), 14733060846778401762934339169664192118027510247763562114526225819289932460986, f_q)) +mstore(0x19120, mulmod(mload(0x18cc0), 9562788780338732237666757130861838002277431603997956068277423086113774063535, f_q)) +mstore(0x19140, addmod(mload(0x8180), 12325454091500542984579648614395437086270932796418078275420781100462034432082, f_q)) +mstore(0x19160, mulmod(mload(0x18cc0), 19807339985945439676130681996590733115754048658587762384979804867044700447669, f_q)) +mstore(0x19180, addmod(mload(0x8180), 2080902885893835546115723748666541972794315741828271958718399319531108047948, f_q)) +{ + let prod := mload(0x18d00) + + prod := mulmod(mload(0x18d40), prod, f_q) + mstore(0x191a0, prod) + + prod := mulmod(mload(0x18d80), prod, f_q) + mstore(0x191c0, prod) + + prod := mulmod(mload(0x18dc0), prod, f_q) + mstore(0x191e0, prod) + + prod := mulmod(mload(0x18e00), prod, f_q) + mstore(0x19200, prod) + + prod := mulmod(mload(0x18e40), prod, f_q) + mstore(0x19220, prod) + + prod := mulmod(mload(0x18e80), prod, f_q) + mstore(0x19240, prod) + + prod := mulmod(mload(0x18ec0), prod, f_q) + mstore(0x19260, prod) + + prod := mulmod(mload(0x18f00), prod, f_q) + mstore(0x19280, prod) + + prod := mulmod(mload(0x18f40), prod, f_q) + mstore(0x192a0, prod) + + prod := mulmod(mload(0x18f80), prod, f_q) + mstore(0x192c0, prod) + + prod := mulmod(mload(0x18fc0), prod, f_q) + mstore(0x192e0, prod) + + prod := mulmod(mload(0x19000), prod, f_q) + mstore(0x19300, prod) + + prod := mulmod(mload(0x19040), prod, f_q) + mstore(0x19320, prod) + + prod := mulmod(mload(0x19080), prod, f_q) + mstore(0x19340, prod) + + prod := mulmod(mload(0x190c0), prod, f_q) + mstore(0x19360, prod) + + prod := mulmod(mload(0x19100), prod, f_q) + mstore(0x19380, prod) + + prod := mulmod(mload(0x19140), prod, f_q) + mstore(0x193a0, prod) + + prod := mulmod(mload(0x19180), prod, f_q) + mstore(0x193c0, prod) + + prod := mulmod(mload(0x18ca0), prod, f_q) + mstore(0x193e0, prod) + + } +mstore(0x19420, 32) +mstore(0x19440, 32) +mstore(0x19460, 32) +mstore(0x19480, mload(0x193e0)) +mstore(0x194a0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x194c0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x19420, 0xc0, 0x19400, 0x20), 1), success) +{ + + let inv := mload(0x19400) + let v + + v := mload(0x18ca0) + mstore(101536, mulmod(mload(0x193c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19180) + mstore(102784, mulmod(mload(0x193a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19140) + mstore(102720, mulmod(mload(0x19380), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19100) + mstore(102656, mulmod(mload(0x19360), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x190c0) + mstore(102592, mulmod(mload(0x19340), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19080) + mstore(102528, mulmod(mload(0x19320), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19040) + mstore(102464, mulmod(mload(0x19300), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x19000) + mstore(102400, mulmod(mload(0x192e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18fc0) + mstore(102336, mulmod(mload(0x192c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18f80) + mstore(102272, mulmod(mload(0x192a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18f40) + mstore(102208, mulmod(mload(0x19280), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18f00) + mstore(102144, mulmod(mload(0x19260), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18ec0) + mstore(102080, mulmod(mload(0x19240), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18e80) + mstore(102016, mulmod(mload(0x19220), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18e40) + mstore(101952, mulmod(mload(0x19200), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18e00) + mstore(101888, mulmod(mload(0x191e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18dc0) + mstore(101824, mulmod(mload(0x191c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18d80) + mstore(101760, mulmod(mload(0x191a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x18d40) + mstore(101696, mulmod(mload(0x18d00), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x18d00, inv) + + } +mstore(0x194e0, mulmod(mload(0x18ce0), mload(0x18d00), f_q)) +mstore(0x19500, mulmod(mload(0x18d20), mload(0x18d40), f_q)) +mstore(0x19520, mulmod(mload(0x18d60), mload(0x18d80), f_q)) +mstore(0x19540, mulmod(mload(0x18da0), mload(0x18dc0), f_q)) +mstore(0x19560, mulmod(mload(0x18de0), mload(0x18e00), f_q)) +mstore(0x19580, mulmod(mload(0x18e20), mload(0x18e40), f_q)) +mstore(0x195a0, mulmod(mload(0x18e60), mload(0x18e80), f_q)) +mstore(0x195c0, mulmod(mload(0x18ea0), mload(0x18ec0), f_q)) +mstore(0x195e0, mulmod(mload(0x18ee0), mload(0x18f00), f_q)) +mstore(0x19600, mulmod(mload(0x18f20), mload(0x18f40), f_q)) +mstore(0x19620, mulmod(mload(0x18f60), mload(0x18f80), f_q)) +mstore(0x19640, mulmod(mload(0x18fa0), mload(0x18fc0), f_q)) +mstore(0x19660, mulmod(mload(0x18fe0), mload(0x19000), f_q)) +mstore(0x19680, mulmod(mload(0x19020), mload(0x19040), f_q)) +mstore(0x196a0, mulmod(mload(0x19060), mload(0x19080), f_q)) +mstore(0x196c0, mulmod(mload(0x190a0), mload(0x190c0), f_q)) +mstore(0x196e0, mulmod(mload(0x190e0), mload(0x19100), f_q)) +mstore(0x19700, mulmod(mload(0x19120), mload(0x19140), f_q)) +mstore(0x19720, mulmod(mload(0x19160), mload(0x19180), f_q)) +{ + let result := mulmod(mload(0x195c0), mload(0x20), f_q) +result := addmod(mulmod(mload(0x195e0), mload(0x40), f_q), result, f_q) +result := addmod(mulmod(mload(0x19600), mload(0x60), f_q), result, f_q) +result := addmod(mulmod(mload(0x19620), mload(0x80), f_q), result, f_q) +result := addmod(mulmod(mload(0x19640), mload(0xa0), f_q), result, f_q) +result := addmod(mulmod(mload(0x19660), mload(0xc0), f_q), result, f_q) +result := addmod(mulmod(mload(0x19680), mload(0xe0), f_q), result, f_q) +result := addmod(mulmod(mload(0x196a0), mload(0x100), f_q), result, f_q) +result := addmod(mulmod(mload(0x196c0), mload(0x120), f_q), result, f_q) +result := addmod(mulmod(mload(0x196e0), mload(0x140), f_q), result, f_q) +result := addmod(mulmod(mload(0x19700), mload(0x160), f_q), result, f_q) +result := addmod(mulmod(mload(0x19720), mload(0x180), f_q), result, f_q) +mstore(104256, result) + } +mstore(0x19760, mulmod(mload(0x8200), mload(0x81e0), f_q)) +mstore(0x19780, addmod(mload(0x81c0), mload(0x19760), f_q)) +mstore(0x197a0, addmod(mload(0x19780), sub(f_q, mload(0x8220)), f_q)) +mstore(0x197c0, mulmod(mload(0x197a0), mload(0x100a0), f_q)) +mstore(0x197e0, mulmod(mload(0x8060), mload(0x197c0), f_q)) +mstore(0x19800, mulmod(mload(0x8280), mload(0x8260), f_q)) +mstore(0x19820, addmod(mload(0x8240), mload(0x19800), f_q)) +mstore(0x19840, addmod(mload(0x19820), sub(f_q, mload(0x82a0)), f_q)) +mstore(0x19860, mulmod(mload(0x19840), mload(0x100c0), f_q)) +mstore(0x19880, addmod(mload(0x197e0), mload(0x19860), f_q)) +mstore(0x198a0, mulmod(mload(0x8060), mload(0x19880), f_q)) +mstore(0x198c0, mulmod(mload(0x8300), mload(0x82e0), f_q)) +mstore(0x198e0, addmod(mload(0x82c0), mload(0x198c0), f_q)) +mstore(0x19900, addmod(mload(0x198e0), sub(f_q, mload(0x8320)), f_q)) +mstore(0x19920, mulmod(mload(0x19900), mload(0x100e0), f_q)) +mstore(0x19940, addmod(mload(0x198a0), mload(0x19920), f_q)) +mstore(0x19960, mulmod(mload(0x8060), mload(0x19940), f_q)) +mstore(0x19980, mulmod(mload(0x8380), mload(0x8360), f_q)) +mstore(0x199a0, addmod(mload(0x8340), mload(0x19980), f_q)) +mstore(0x199c0, addmod(mload(0x199a0), sub(f_q, mload(0x83a0)), f_q)) +mstore(0x199e0, mulmod(mload(0x199c0), mload(0x10100), f_q)) +mstore(0x19a00, addmod(mload(0x19960), mload(0x199e0), f_q)) +mstore(0x19a20, mulmod(mload(0x8060), mload(0x19a00), f_q)) +mstore(0x19a40, mulmod(mload(0x8400), mload(0x83e0), f_q)) +mstore(0x19a60, addmod(mload(0x83c0), mload(0x19a40), f_q)) +mstore(0x19a80, addmod(mload(0x19a60), sub(f_q, mload(0x8420)), f_q)) +mstore(0x19aa0, mulmod(mload(0x19a80), mload(0x10120), f_q)) +mstore(0x19ac0, addmod(mload(0x19a20), mload(0x19aa0), f_q)) +mstore(0x19ae0, mulmod(mload(0x8060), mload(0x19ac0), f_q)) +mstore(0x19b00, mulmod(mload(0x8480), mload(0x8460), f_q)) +mstore(0x19b20, addmod(mload(0x8440), mload(0x19b00), f_q)) +mstore(0x19b40, addmod(mload(0x19b20), sub(f_q, mload(0x84a0)), f_q)) +mstore(0x19b60, mulmod(mload(0x19b40), mload(0x10140), f_q)) +mstore(0x19b80, addmod(mload(0x19ae0), mload(0x19b60), f_q)) +mstore(0x19ba0, mulmod(mload(0x8060), mload(0x19b80), f_q)) +mstore(0x19bc0, mulmod(mload(0x8500), mload(0x84e0), f_q)) +mstore(0x19be0, addmod(mload(0x84c0), mload(0x19bc0), f_q)) +mstore(0x19c00, addmod(mload(0x19be0), sub(f_q, mload(0x8520)), f_q)) +mstore(0x19c20, mulmod(mload(0x19c00), mload(0x10160), f_q)) +mstore(0x19c40, addmod(mload(0x19ba0), mload(0x19c20), f_q)) +mstore(0x19c60, mulmod(mload(0x8060), mload(0x19c40), f_q)) +mstore(0x19c80, mulmod(mload(0x8580), mload(0x8560), f_q)) +mstore(0x19ca0, addmod(mload(0x8540), mload(0x19c80), f_q)) +mstore(0x19cc0, addmod(mload(0x19ca0), sub(f_q, mload(0x85a0)), f_q)) +mstore(0x19ce0, mulmod(mload(0x19cc0), mload(0x10180), f_q)) +mstore(0x19d00, addmod(mload(0x19c60), mload(0x19ce0), f_q)) +mstore(0x19d20, mulmod(mload(0x8060), mload(0x19d00), f_q)) +mstore(0x19d40, mulmod(mload(0x8600), mload(0x85e0), f_q)) +mstore(0x19d60, addmod(mload(0x85c0), mload(0x19d40), f_q)) +mstore(0x19d80, addmod(mload(0x19d60), sub(f_q, mload(0x8620)), f_q)) +mstore(0x19da0, mulmod(mload(0x19d80), mload(0x101a0), f_q)) +mstore(0x19dc0, addmod(mload(0x19d20), mload(0x19da0), f_q)) +mstore(0x19de0, mulmod(mload(0x8060), mload(0x19dc0), f_q)) +mstore(0x19e00, mulmod(mload(0x8680), mload(0x8660), f_q)) +mstore(0x19e20, addmod(mload(0x8640), mload(0x19e00), f_q)) +mstore(0x19e40, addmod(mload(0x19e20), sub(f_q, mload(0x86a0)), f_q)) +mstore(0x19e60, mulmod(mload(0x19e40), mload(0x101c0), f_q)) +mstore(0x19e80, addmod(mload(0x19de0), mload(0x19e60), f_q)) +mstore(0x19ea0, mulmod(mload(0x8060), mload(0x19e80), f_q)) +mstore(0x19ec0, mulmod(mload(0x8700), mload(0x86e0), f_q)) +mstore(0x19ee0, addmod(mload(0x86c0), mload(0x19ec0), f_q)) +mstore(0x19f00, addmod(mload(0x19ee0), sub(f_q, mload(0x8720)), f_q)) +mstore(0x19f20, mulmod(mload(0x19f00), mload(0x101e0), f_q)) +mstore(0x19f40, addmod(mload(0x19ea0), mload(0x19f20), f_q)) +mstore(0x19f60, mulmod(mload(0x8060), mload(0x19f40), f_q)) +mstore(0x19f80, mulmod(mload(0x8780), mload(0x8760), f_q)) +mstore(0x19fa0, addmod(mload(0x8740), mload(0x19f80), f_q)) +mstore(0x19fc0, addmod(mload(0x19fa0), sub(f_q, mload(0x87a0)), f_q)) +mstore(0x19fe0, mulmod(mload(0x19fc0), mload(0x10200), f_q)) +mstore(0x1a000, addmod(mload(0x19f60), mload(0x19fe0), f_q)) +mstore(0x1a020, mulmod(mload(0x8060), mload(0x1a000), f_q)) +mstore(0x1a040, mulmod(mload(0x8800), mload(0x87e0), f_q)) +mstore(0x1a060, addmod(mload(0x87c0), mload(0x1a040), f_q)) +mstore(0x1a080, addmod(mload(0x1a060), sub(f_q, mload(0x8820)), f_q)) +mstore(0x1a0a0, mulmod(mload(0x1a080), mload(0x10220), f_q)) +mstore(0x1a0c0, addmod(mload(0x1a020), mload(0x1a0a0), f_q)) +mstore(0x1a0e0, mulmod(mload(0x8060), mload(0x1a0c0), f_q)) +mstore(0x1a100, mulmod(mload(0x8880), mload(0x8860), f_q)) +mstore(0x1a120, addmod(mload(0x8840), mload(0x1a100), f_q)) +mstore(0x1a140, addmod(mload(0x1a120), sub(f_q, mload(0x88a0)), f_q)) +mstore(0x1a160, mulmod(mload(0x1a140), mload(0x10240), f_q)) +mstore(0x1a180, addmod(mload(0x1a0e0), mload(0x1a160), f_q)) +mstore(0x1a1a0, mulmod(mload(0x8060), mload(0x1a180), f_q)) +mstore(0x1a1c0, mulmod(mload(0x8900), mload(0x88e0), f_q)) +mstore(0x1a1e0, addmod(mload(0x88c0), mload(0x1a1c0), f_q)) +mstore(0x1a200, addmod(mload(0x1a1e0), sub(f_q, mload(0x8920)), f_q)) +mstore(0x1a220, mulmod(mload(0x1a200), mload(0x10260), f_q)) +mstore(0x1a240, addmod(mload(0x1a1a0), mload(0x1a220), f_q)) +mstore(0x1a260, mulmod(mload(0x8060), mload(0x1a240), f_q)) +mstore(0x1a280, mulmod(mload(0x8980), mload(0x8960), f_q)) +mstore(0x1a2a0, addmod(mload(0x8940), mload(0x1a280), f_q)) +mstore(0x1a2c0, addmod(mload(0x1a2a0), sub(f_q, mload(0x89a0)), f_q)) +mstore(0x1a2e0, mulmod(mload(0x1a2c0), mload(0x10280), f_q)) +mstore(0x1a300, addmod(mload(0x1a260), mload(0x1a2e0), f_q)) +mstore(0x1a320, mulmod(mload(0x8060), mload(0x1a300), f_q)) +mstore(0x1a340, mulmod(mload(0x8a00), mload(0x89e0), f_q)) +mstore(0x1a360, addmod(mload(0x89c0), mload(0x1a340), f_q)) +mstore(0x1a380, addmod(mload(0x1a360), sub(f_q, mload(0x8a20)), f_q)) +mstore(0x1a3a0, mulmod(mload(0x1a380), mload(0x102a0), f_q)) +mstore(0x1a3c0, addmod(mload(0x1a320), mload(0x1a3a0), f_q)) +mstore(0x1a3e0, mulmod(mload(0x8060), mload(0x1a3c0), f_q)) +mstore(0x1a400, mulmod(mload(0x8a80), mload(0x8a60), f_q)) +mstore(0x1a420, addmod(mload(0x8a40), mload(0x1a400), f_q)) +mstore(0x1a440, addmod(mload(0x1a420), sub(f_q, mload(0x8aa0)), f_q)) +mstore(0x1a460, mulmod(mload(0x1a440), mload(0x102c0), f_q)) +mstore(0x1a480, addmod(mload(0x1a3e0), mload(0x1a460), f_q)) +mstore(0x1a4a0, mulmod(mload(0x8060), mload(0x1a480), f_q)) +mstore(0x1a4c0, mulmod(mload(0x8b00), mload(0x8ae0), f_q)) +mstore(0x1a4e0, addmod(mload(0x8ac0), mload(0x1a4c0), f_q)) +mstore(0x1a500, addmod(mload(0x1a4e0), sub(f_q, mload(0x8b20)), f_q)) +mstore(0x1a520, mulmod(mload(0x1a500), mload(0x102e0), f_q)) +mstore(0x1a540, addmod(mload(0x1a4a0), mload(0x1a520), f_q)) +mstore(0x1a560, mulmod(mload(0x8060), mload(0x1a540), f_q)) +mstore(0x1a580, mulmod(mload(0x8b80), mload(0x8b60), f_q)) +mstore(0x1a5a0, addmod(mload(0x8b40), mload(0x1a580), f_q)) +mstore(0x1a5c0, addmod(mload(0x1a5a0), sub(f_q, mload(0x8ba0)), f_q)) +mstore(0x1a5e0, mulmod(mload(0x1a5c0), mload(0x10300), f_q)) +mstore(0x1a600, addmod(mload(0x1a560), mload(0x1a5e0), f_q)) +mstore(0x1a620, mulmod(mload(0x8060), mload(0x1a600), f_q)) +mstore(0x1a640, mulmod(mload(0x8c00), mload(0x8be0), f_q)) +mstore(0x1a660, addmod(mload(0x8bc0), mload(0x1a640), f_q)) +mstore(0x1a680, addmod(mload(0x1a660), sub(f_q, mload(0x8c20)), f_q)) +mstore(0x1a6a0, mulmod(mload(0x1a680), mload(0x10320), f_q)) +mstore(0x1a6c0, addmod(mload(0x1a620), mload(0x1a6a0), f_q)) +mstore(0x1a6e0, mulmod(mload(0x8060), mload(0x1a6c0), f_q)) +mstore(0x1a700, mulmod(mload(0x8c80), mload(0x8c60), f_q)) +mstore(0x1a720, addmod(mload(0x8c40), mload(0x1a700), f_q)) +mstore(0x1a740, addmod(mload(0x1a720), sub(f_q, mload(0x8ca0)), f_q)) +mstore(0x1a760, mulmod(mload(0x1a740), mload(0x10340), f_q)) +mstore(0x1a780, addmod(mload(0x1a6e0), mload(0x1a760), f_q)) +mstore(0x1a7a0, mulmod(mload(0x8060), mload(0x1a780), f_q)) +mstore(0x1a7c0, mulmod(mload(0x8d00), mload(0x8ce0), f_q)) +mstore(0x1a7e0, addmod(mload(0x8cc0), mload(0x1a7c0), f_q)) +mstore(0x1a800, addmod(mload(0x1a7e0), sub(f_q, mload(0x8d20)), f_q)) +mstore(0x1a820, mulmod(mload(0x1a800), mload(0x10360), f_q)) +mstore(0x1a840, addmod(mload(0x1a7a0), mload(0x1a820), f_q)) +mstore(0x1a860, mulmod(mload(0x8060), mload(0x1a840), f_q)) +mstore(0x1a880, mulmod(mload(0x8d80), mload(0x8d60), f_q)) +mstore(0x1a8a0, addmod(mload(0x8d40), mload(0x1a880), f_q)) +mstore(0x1a8c0, addmod(mload(0x1a8a0), sub(f_q, mload(0x8da0)), f_q)) +mstore(0x1a8e0, mulmod(mload(0x1a8c0), mload(0x10380), f_q)) +mstore(0x1a900, addmod(mload(0x1a860), mload(0x1a8e0), f_q)) +mstore(0x1a920, mulmod(mload(0x8060), mload(0x1a900), f_q)) +mstore(0x1a940, mulmod(mload(0x8e00), mload(0x8de0), f_q)) +mstore(0x1a960, addmod(mload(0x8dc0), mload(0x1a940), f_q)) +mstore(0x1a980, addmod(mload(0x1a960), sub(f_q, mload(0x8e20)), f_q)) +mstore(0x1a9a0, mulmod(mload(0x1a980), mload(0x103a0), f_q)) +mstore(0x1a9c0, addmod(mload(0x1a920), mload(0x1a9a0), f_q)) +mstore(0x1a9e0, mulmod(mload(0x8060), mload(0x1a9c0), f_q)) +mstore(0x1aa00, mulmod(mload(0x8e80), mload(0x8e60), f_q)) +mstore(0x1aa20, addmod(mload(0x8e40), mload(0x1aa00), f_q)) +mstore(0x1aa40, addmod(mload(0x1aa20), sub(f_q, mload(0x8ea0)), f_q)) +mstore(0x1aa60, mulmod(mload(0x1aa40), mload(0x103c0), f_q)) +mstore(0x1aa80, addmod(mload(0x1a9e0), mload(0x1aa60), f_q)) +mstore(0x1aaa0, mulmod(mload(0x8060), mload(0x1aa80), f_q)) +mstore(0x1aac0, mulmod(mload(0x8f00), mload(0x8ee0), f_q)) +mstore(0x1aae0, addmod(mload(0x8ec0), mload(0x1aac0), f_q)) +mstore(0x1ab00, addmod(mload(0x1aae0), sub(f_q, mload(0x8f20)), f_q)) +mstore(0x1ab20, mulmod(mload(0x1ab00), mload(0x103e0), f_q)) +mstore(0x1ab40, addmod(mload(0x1aaa0), mload(0x1ab20), f_q)) +mstore(0x1ab60, mulmod(mload(0x8060), mload(0x1ab40), f_q)) +mstore(0x1ab80, mulmod(mload(0x8f80), mload(0x8f60), f_q)) +mstore(0x1aba0, addmod(mload(0x8f40), mload(0x1ab80), f_q)) +mstore(0x1abc0, addmod(mload(0x1aba0), sub(f_q, mload(0x8fa0)), f_q)) +mstore(0x1abe0, mulmod(mload(0x1abc0), mload(0x10400), f_q)) +mstore(0x1ac00, addmod(mload(0x1ab60), mload(0x1abe0), f_q)) +mstore(0x1ac20, mulmod(mload(0x8060), mload(0x1ac00), f_q)) +mstore(0x1ac40, mulmod(mload(0x9000), mload(0x8fe0), f_q)) +mstore(0x1ac60, addmod(mload(0x8fc0), mload(0x1ac40), f_q)) +mstore(0x1ac80, addmod(mload(0x1ac60), sub(f_q, mload(0x9020)), f_q)) +mstore(0x1aca0, mulmod(mload(0x1ac80), mload(0x10420), f_q)) +mstore(0x1acc0, addmod(mload(0x1ac20), mload(0x1aca0), f_q)) +mstore(0x1ace0, mulmod(mload(0x8060), mload(0x1acc0), f_q)) +mstore(0x1ad00, mulmod(mload(0x9080), mload(0x9060), f_q)) +mstore(0x1ad20, addmod(mload(0x9040), mload(0x1ad00), f_q)) +mstore(0x1ad40, addmod(mload(0x1ad20), sub(f_q, mload(0x90a0)), f_q)) +mstore(0x1ad60, mulmod(mload(0x1ad40), mload(0x10440), f_q)) +mstore(0x1ad80, addmod(mload(0x1ace0), mload(0x1ad60), f_q)) +mstore(0x1ada0, mulmod(mload(0x8060), mload(0x1ad80), f_q)) +mstore(0x1adc0, mulmod(mload(0x9100), mload(0x90e0), f_q)) +mstore(0x1ade0, addmod(mload(0x90c0), mload(0x1adc0), f_q)) +mstore(0x1ae00, addmod(mload(0x1ade0), sub(f_q, mload(0x9120)), f_q)) +mstore(0x1ae20, mulmod(mload(0x1ae00), mload(0x10460), f_q)) +mstore(0x1ae40, addmod(mload(0x1ada0), mload(0x1ae20), f_q)) +mstore(0x1ae60, mulmod(mload(0x8060), mload(0x1ae40), f_q)) +mstore(0x1ae80, mulmod(mload(0x9180), mload(0x9160), f_q)) +mstore(0x1aea0, addmod(mload(0x9140), mload(0x1ae80), f_q)) +mstore(0x1aec0, addmod(mload(0x1aea0), sub(f_q, mload(0x91a0)), f_q)) +mstore(0x1aee0, mulmod(mload(0x1aec0), mload(0x10480), f_q)) +mstore(0x1af00, addmod(mload(0x1ae60), mload(0x1aee0), f_q)) +mstore(0x1af20, mulmod(mload(0x8060), mload(0x1af00), f_q)) +mstore(0x1af40, mulmod(mload(0x9200), mload(0x91e0), f_q)) +mstore(0x1af60, addmod(mload(0x91c0), mload(0x1af40), f_q)) +mstore(0x1af80, addmod(mload(0x1af60), sub(f_q, mload(0x9220)), f_q)) +mstore(0x1afa0, mulmod(mload(0x1af80), mload(0x104a0), f_q)) +mstore(0x1afc0, addmod(mload(0x1af20), mload(0x1afa0), f_q)) +mstore(0x1afe0, mulmod(mload(0x8060), mload(0x1afc0), f_q)) +mstore(0x1b000, mulmod(mload(0x9280), mload(0x9260), f_q)) +mstore(0x1b020, addmod(mload(0x9240), mload(0x1b000), f_q)) +mstore(0x1b040, addmod(mload(0x1b020), sub(f_q, mload(0x92a0)), f_q)) +mstore(0x1b060, mulmod(mload(0x1b040), mload(0x104c0), f_q)) +mstore(0x1b080, addmod(mload(0x1afe0), mload(0x1b060), f_q)) +mstore(0x1b0a0, mulmod(mload(0x8060), mload(0x1b080), f_q)) +mstore(0x1b0c0, mulmod(mload(0x9300), mload(0x92e0), f_q)) +mstore(0x1b0e0, addmod(mload(0x92c0), mload(0x1b0c0), f_q)) +mstore(0x1b100, addmod(mload(0x1b0e0), sub(f_q, mload(0x9320)), f_q)) +mstore(0x1b120, mulmod(mload(0x1b100), mload(0x104e0), f_q)) +mstore(0x1b140, addmod(mload(0x1b0a0), mload(0x1b120), f_q)) +mstore(0x1b160, mulmod(mload(0x8060), mload(0x1b140), f_q)) +mstore(0x1b180, mulmod(mload(0x9380), mload(0x9360), f_q)) +mstore(0x1b1a0, addmod(mload(0x9340), mload(0x1b180), f_q)) +mstore(0x1b1c0, addmod(mload(0x1b1a0), sub(f_q, mload(0x93a0)), f_q)) +mstore(0x1b1e0, mulmod(mload(0x1b1c0), mload(0x10500), f_q)) +mstore(0x1b200, addmod(mload(0x1b160), mload(0x1b1e0), f_q)) +mstore(0x1b220, mulmod(mload(0x8060), mload(0x1b200), f_q)) +mstore(0x1b240, mulmod(mload(0x9400), mload(0x93e0), f_q)) +mstore(0x1b260, addmod(mload(0x93c0), mload(0x1b240), f_q)) +mstore(0x1b280, addmod(mload(0x1b260), sub(f_q, mload(0x9420)), f_q)) +mstore(0x1b2a0, mulmod(mload(0x1b280), mload(0x10520), f_q)) +mstore(0x1b2c0, addmod(mload(0x1b220), mload(0x1b2a0), f_q)) +mstore(0x1b2e0, mulmod(mload(0x8060), mload(0x1b2c0), f_q)) +mstore(0x1b300, mulmod(mload(0x9480), mload(0x9460), f_q)) +mstore(0x1b320, addmod(mload(0x9440), mload(0x1b300), f_q)) +mstore(0x1b340, addmod(mload(0x1b320), sub(f_q, mload(0x94a0)), f_q)) +mstore(0x1b360, mulmod(mload(0x1b340), mload(0x10540), f_q)) +mstore(0x1b380, addmod(mload(0x1b2e0), mload(0x1b360), f_q)) +mstore(0x1b3a0, mulmod(mload(0x8060), mload(0x1b380), f_q)) +mstore(0x1b3c0, mulmod(mload(0x9500), mload(0x94e0), f_q)) +mstore(0x1b3e0, addmod(mload(0x94c0), mload(0x1b3c0), f_q)) +mstore(0x1b400, addmod(mload(0x1b3e0), sub(f_q, mload(0x9520)), f_q)) +mstore(0x1b420, mulmod(mload(0x1b400), mload(0x10560), f_q)) +mstore(0x1b440, addmod(mload(0x1b3a0), mload(0x1b420), f_q)) +mstore(0x1b460, mulmod(mload(0x8060), mload(0x1b440), f_q)) +mstore(0x1b480, mulmod(mload(0x9580), mload(0x9560), f_q)) +mstore(0x1b4a0, addmod(mload(0x9540), mload(0x1b480), f_q)) +mstore(0x1b4c0, addmod(mload(0x1b4a0), sub(f_q, mload(0x95a0)), f_q)) +mstore(0x1b4e0, mulmod(mload(0x1b4c0), mload(0x10580), f_q)) +mstore(0x1b500, addmod(mload(0x1b460), mload(0x1b4e0), f_q)) +mstore(0x1b520, mulmod(mload(0x8060), mload(0x1b500), f_q)) +mstore(0x1b540, mulmod(mload(0x9600), mload(0x95e0), f_q)) +mstore(0x1b560, addmod(mload(0x95c0), mload(0x1b540), f_q)) +mstore(0x1b580, addmod(mload(0x1b560), sub(f_q, mload(0x9620)), f_q)) +mstore(0x1b5a0, mulmod(mload(0x1b580), mload(0x105a0), f_q)) +mstore(0x1b5c0, addmod(mload(0x1b520), mload(0x1b5a0), f_q)) +mstore(0x1b5e0, mulmod(mload(0x8060), mload(0x1b5c0), f_q)) +mstore(0x1b600, mulmod(mload(0x9680), mload(0x9660), f_q)) +mstore(0x1b620, addmod(mload(0x9640), mload(0x1b600), f_q)) +mstore(0x1b640, addmod(mload(0x1b620), sub(f_q, mload(0x96a0)), f_q)) +mstore(0x1b660, mulmod(mload(0x1b640), mload(0x105c0), f_q)) +mstore(0x1b680, addmod(mload(0x1b5e0), mload(0x1b660), f_q)) +mstore(0x1b6a0, mulmod(mload(0x8060), mload(0x1b680), f_q)) +mstore(0x1b6c0, mulmod(mload(0x9700), mload(0x96e0), f_q)) +mstore(0x1b6e0, addmod(mload(0x96c0), mload(0x1b6c0), f_q)) +mstore(0x1b700, addmod(mload(0x1b6e0), sub(f_q, mload(0x9720)), f_q)) +mstore(0x1b720, mulmod(mload(0x1b700), mload(0x105e0), f_q)) +mstore(0x1b740, addmod(mload(0x1b6a0), mload(0x1b720), f_q)) +mstore(0x1b760, mulmod(mload(0x8060), mload(0x1b740), f_q)) +mstore(0x1b780, mulmod(mload(0x9780), mload(0x9760), f_q)) +mstore(0x1b7a0, addmod(mload(0x9740), mload(0x1b780), f_q)) +mstore(0x1b7c0, addmod(mload(0x1b7a0), sub(f_q, mload(0x97a0)), f_q)) +mstore(0x1b7e0, mulmod(mload(0x1b7c0), mload(0x10600), f_q)) +mstore(0x1b800, addmod(mload(0x1b760), mload(0x1b7e0), f_q)) +mstore(0x1b820, mulmod(mload(0x8060), mload(0x1b800), f_q)) +mstore(0x1b840, mulmod(mload(0x9800), mload(0x97e0), f_q)) +mstore(0x1b860, addmod(mload(0x97c0), mload(0x1b840), f_q)) +mstore(0x1b880, addmod(mload(0x1b860), sub(f_q, mload(0x9820)), f_q)) +mstore(0x1b8a0, mulmod(mload(0x1b880), mload(0x10620), f_q)) +mstore(0x1b8c0, addmod(mload(0x1b820), mload(0x1b8a0), f_q)) +mstore(0x1b8e0, mulmod(mload(0x8060), mload(0x1b8c0), f_q)) +mstore(0x1b900, mulmod(mload(0x9880), mload(0x9860), f_q)) +mstore(0x1b920, addmod(mload(0x9840), mload(0x1b900), f_q)) +mstore(0x1b940, addmod(mload(0x1b920), sub(f_q, mload(0x98a0)), f_q)) +mstore(0x1b960, mulmod(mload(0x1b940), mload(0x10640), f_q)) +mstore(0x1b980, addmod(mload(0x1b8e0), mload(0x1b960), f_q)) +mstore(0x1b9a0, mulmod(mload(0x8060), mload(0x1b980), f_q)) +mstore(0x1b9c0, mulmod(mload(0x9900), mload(0x98e0), f_q)) +mstore(0x1b9e0, addmod(mload(0x98c0), mload(0x1b9c0), f_q)) +mstore(0x1ba00, addmod(mload(0x1b9e0), sub(f_q, mload(0x9920)), f_q)) +mstore(0x1ba20, mulmod(mload(0x1ba00), mload(0x10660), f_q)) +mstore(0x1ba40, addmod(mload(0x1b9a0), mload(0x1ba20), f_q)) +mstore(0x1ba60, mulmod(mload(0x8060), mload(0x1ba40), f_q)) +mstore(0x1ba80, mulmod(mload(0x9980), mload(0x9960), f_q)) +mstore(0x1baa0, addmod(mload(0x9940), mload(0x1ba80), f_q)) +mstore(0x1bac0, addmod(mload(0x1baa0), sub(f_q, mload(0x99a0)), f_q)) +mstore(0x1bae0, mulmod(mload(0x1bac0), mload(0x10680), f_q)) +mstore(0x1bb00, addmod(mload(0x1ba60), mload(0x1bae0), f_q)) +mstore(0x1bb20, mulmod(mload(0x8060), mload(0x1bb00), f_q)) +mstore(0x1bb40, mulmod(mload(0x9a00), mload(0x99e0), f_q)) +mstore(0x1bb60, addmod(mload(0x99c0), mload(0x1bb40), f_q)) +mstore(0x1bb80, addmod(mload(0x1bb60), sub(f_q, mload(0x9a20)), f_q)) +mstore(0x1bba0, mulmod(mload(0x1bb80), mload(0x106a0), f_q)) +mstore(0x1bbc0, addmod(mload(0x1bb20), mload(0x1bba0), f_q)) +mstore(0x1bbe0, mulmod(mload(0x8060), mload(0x1bbc0), f_q)) +mstore(0x1bc00, mulmod(mload(0x9a80), mload(0x9a60), f_q)) +mstore(0x1bc20, addmod(mload(0x9a40), mload(0x1bc00), f_q)) +mstore(0x1bc40, addmod(mload(0x1bc20), sub(f_q, mload(0x9aa0)), f_q)) +mstore(0x1bc60, mulmod(mload(0x1bc40), mload(0x106c0), f_q)) +mstore(0x1bc80, addmod(mload(0x1bbe0), mload(0x1bc60), f_q)) +mstore(0x1bca0, mulmod(mload(0x8060), mload(0x1bc80), f_q)) +mstore(0x1bcc0, mulmod(mload(0x9b00), mload(0x9ae0), f_q)) +mstore(0x1bce0, addmod(mload(0x9ac0), mload(0x1bcc0), f_q)) +mstore(0x1bd00, addmod(mload(0x1bce0), sub(f_q, mload(0x9b20)), f_q)) +mstore(0x1bd20, mulmod(mload(0x1bd00), mload(0x106e0), f_q)) +mstore(0x1bd40, addmod(mload(0x1bca0), mload(0x1bd20), f_q)) +mstore(0x1bd60, mulmod(mload(0x8060), mload(0x1bd40), f_q)) +mstore(0x1bd80, mulmod(mload(0x9b80), mload(0x9b60), f_q)) +mstore(0x1bda0, addmod(mload(0x9b40), mload(0x1bd80), f_q)) +mstore(0x1bdc0, addmod(mload(0x1bda0), sub(f_q, mload(0x9ba0)), f_q)) +mstore(0x1bde0, mulmod(mload(0x1bdc0), mload(0x10700), f_q)) +mstore(0x1be00, addmod(mload(0x1bd60), mload(0x1bde0), f_q)) +mstore(0x1be20, mulmod(mload(0x8060), mload(0x1be00), f_q)) +mstore(0x1be40, mulmod(mload(0x9c00), mload(0x9be0), f_q)) +mstore(0x1be60, addmod(mload(0x9bc0), mload(0x1be40), f_q)) +mstore(0x1be80, addmod(mload(0x1be60), sub(f_q, mload(0x9c20)), f_q)) +mstore(0x1bea0, mulmod(mload(0x1be80), mload(0x10720), f_q)) +mstore(0x1bec0, addmod(mload(0x1be20), mload(0x1bea0), f_q)) +mstore(0x1bee0, mulmod(mload(0x8060), mload(0x1bec0), f_q)) +mstore(0x1bf00, mulmod(mload(0x9c80), mload(0x9c60), f_q)) +mstore(0x1bf20, addmod(mload(0x9c40), mload(0x1bf00), f_q)) +mstore(0x1bf40, addmod(mload(0x1bf20), sub(f_q, mload(0x9ca0)), f_q)) +mstore(0x1bf60, mulmod(mload(0x1bf40), mload(0x10740), f_q)) +mstore(0x1bf80, addmod(mload(0x1bee0), mload(0x1bf60), f_q)) +mstore(0x1bfa0, mulmod(mload(0x8060), mload(0x1bf80), f_q)) +mstore(0x1bfc0, mulmod(mload(0x9d00), mload(0x9ce0), f_q)) +mstore(0x1bfe0, addmod(mload(0x9cc0), mload(0x1bfc0), f_q)) +mstore(0x1c000, addmod(mload(0x1bfe0), sub(f_q, mload(0x9d20)), f_q)) +mstore(0x1c020, mulmod(mload(0x1c000), mload(0x10760), f_q)) +mstore(0x1c040, addmod(mload(0x1bfa0), mload(0x1c020), f_q)) +mstore(0x1c060, mulmod(mload(0x8060), mload(0x1c040), f_q)) +mstore(0x1c080, mulmod(mload(0x9d80), mload(0x9d60), f_q)) +mstore(0x1c0a0, addmod(mload(0x9d40), mload(0x1c080), f_q)) +mstore(0x1c0c0, addmod(mload(0x1c0a0), sub(f_q, mload(0x9da0)), f_q)) +mstore(0x1c0e0, mulmod(mload(0x1c0c0), mload(0x10780), f_q)) +mstore(0x1c100, addmod(mload(0x1c060), mload(0x1c0e0), f_q)) +mstore(0x1c120, mulmod(mload(0x8060), mload(0x1c100), f_q)) +mstore(0x1c140, mulmod(mload(0x9e00), mload(0x9de0), f_q)) +mstore(0x1c160, addmod(mload(0x9dc0), mload(0x1c140), f_q)) +mstore(0x1c180, addmod(mload(0x1c160), sub(f_q, mload(0x9e20)), f_q)) +mstore(0x1c1a0, mulmod(mload(0x1c180), mload(0x107a0), f_q)) +mstore(0x1c1c0, addmod(mload(0x1c120), mload(0x1c1a0), f_q)) +mstore(0x1c1e0, mulmod(mload(0x8060), mload(0x1c1c0), f_q)) +mstore(0x1c200, mulmod(mload(0x9e80), mload(0x9e60), f_q)) +mstore(0x1c220, addmod(mload(0x9e40), mload(0x1c200), f_q)) +mstore(0x1c240, addmod(mload(0x1c220), sub(f_q, mload(0x9ea0)), f_q)) +mstore(0x1c260, mulmod(mload(0x1c240), mload(0x107c0), f_q)) +mstore(0x1c280, addmod(mload(0x1c1e0), mload(0x1c260), f_q)) +mstore(0x1c2a0, mulmod(mload(0x8060), mload(0x1c280), f_q)) +mstore(0x1c2c0, mulmod(mload(0x9f00), mload(0x9ee0), f_q)) +mstore(0x1c2e0, addmod(mload(0x9ec0), mload(0x1c2c0), f_q)) +mstore(0x1c300, addmod(mload(0x1c2e0), sub(f_q, mload(0x9f20)), f_q)) +mstore(0x1c320, mulmod(mload(0x1c300), mload(0x107e0), f_q)) +mstore(0x1c340, addmod(mload(0x1c2a0), mload(0x1c320), f_q)) +mstore(0x1c360, mulmod(mload(0x8060), mload(0x1c340), f_q)) +mstore(0x1c380, mulmod(mload(0x9f80), mload(0x9f60), f_q)) +mstore(0x1c3a0, addmod(mload(0x9f40), mload(0x1c380), f_q)) +mstore(0x1c3c0, addmod(mload(0x1c3a0), sub(f_q, mload(0x9fa0)), f_q)) +mstore(0x1c3e0, mulmod(mload(0x1c3c0), mload(0x10800), f_q)) +mstore(0x1c400, addmod(mload(0x1c360), mload(0x1c3e0), f_q)) +mstore(0x1c420, mulmod(mload(0x8060), mload(0x1c400), f_q)) +mstore(0x1c440, mulmod(mload(0xa000), mload(0x9fe0), f_q)) +mstore(0x1c460, addmod(mload(0x9fc0), mload(0x1c440), f_q)) +mstore(0x1c480, addmod(mload(0x1c460), sub(f_q, mload(0xa020)), f_q)) +mstore(0x1c4a0, mulmod(mload(0x1c480), mload(0x10820), f_q)) +mstore(0x1c4c0, addmod(mload(0x1c420), mload(0x1c4a0), f_q)) +mstore(0x1c4e0, mulmod(mload(0x8060), mload(0x1c4c0), f_q)) +mstore(0x1c500, mulmod(mload(0xa080), mload(0xa060), f_q)) +mstore(0x1c520, addmod(mload(0xa040), mload(0x1c500), f_q)) +mstore(0x1c540, addmod(mload(0x1c520), sub(f_q, mload(0xa0a0)), f_q)) +mstore(0x1c560, mulmod(mload(0x1c540), mload(0x10840), f_q)) +mstore(0x1c580, addmod(mload(0x1c4e0), mload(0x1c560), f_q)) +mstore(0x1c5a0, mulmod(mload(0x8060), mload(0x1c580), f_q)) +mstore(0x1c5c0, mulmod(mload(0xa100), mload(0xa0e0), f_q)) +mstore(0x1c5e0, addmod(mload(0xa0c0), mload(0x1c5c0), f_q)) +mstore(0x1c600, addmod(mload(0x1c5e0), sub(f_q, mload(0xa120)), f_q)) +mstore(0x1c620, mulmod(mload(0x1c600), mload(0x10860), f_q)) +mstore(0x1c640, addmod(mload(0x1c5a0), mload(0x1c620), f_q)) +mstore(0x1c660, mulmod(mload(0x8060), mload(0x1c640), f_q)) +mstore(0x1c680, mulmod(mload(0xa180), mload(0xa160), f_q)) +mstore(0x1c6a0, addmod(mload(0xa140), mload(0x1c680), f_q)) +mstore(0x1c6c0, addmod(mload(0x1c6a0), sub(f_q, mload(0xa1a0)), f_q)) +mstore(0x1c6e0, mulmod(mload(0x1c6c0), mload(0x10880), f_q)) +mstore(0x1c700, addmod(mload(0x1c660), mload(0x1c6e0), f_q)) +mstore(0x1c720, mulmod(mload(0x8060), mload(0x1c700), f_q)) +mstore(0x1c740, mulmod(mload(0xa200), mload(0xa1e0), f_q)) +mstore(0x1c760, addmod(mload(0xa1c0), mload(0x1c740), f_q)) +mstore(0x1c780, addmod(mload(0x1c760), sub(f_q, mload(0xa220)), f_q)) +mstore(0x1c7a0, mulmod(mload(0x1c780), mload(0x108a0), f_q)) +mstore(0x1c7c0, addmod(mload(0x1c720), mload(0x1c7a0), f_q)) +mstore(0x1c7e0, mulmod(mload(0x8060), mload(0x1c7c0), f_q)) +mstore(0x1c800, mulmod(mload(0xa280), mload(0xa260), f_q)) +mstore(0x1c820, addmod(mload(0xa240), mload(0x1c800), f_q)) +mstore(0x1c840, addmod(mload(0x1c820), sub(f_q, mload(0xa2a0)), f_q)) +mstore(0x1c860, mulmod(mload(0x1c840), mload(0x108c0), f_q)) +mstore(0x1c880, addmod(mload(0x1c7e0), mload(0x1c860), f_q)) +mstore(0x1c8a0, mulmod(mload(0x8060), mload(0x1c880), f_q)) +mstore(0x1c8c0, mulmod(mload(0xa300), mload(0xa2e0), f_q)) +mstore(0x1c8e0, addmod(mload(0xa2c0), mload(0x1c8c0), f_q)) +mstore(0x1c900, addmod(mload(0x1c8e0), sub(f_q, mload(0xa320)), f_q)) +mstore(0x1c920, mulmod(mload(0x1c900), mload(0x108e0), f_q)) +mstore(0x1c940, addmod(mload(0x1c8a0), mload(0x1c920), f_q)) +mstore(0x1c960, mulmod(mload(0x8060), mload(0x1c940), f_q)) +mstore(0x1c980, mulmod(mload(0xa380), mload(0xa360), f_q)) +mstore(0x1c9a0, addmod(mload(0xa340), mload(0x1c980), f_q)) +mstore(0x1c9c0, addmod(mload(0x1c9a0), sub(f_q, mload(0xa3a0)), f_q)) +mstore(0x1c9e0, mulmod(mload(0x1c9c0), mload(0x10900), f_q)) +mstore(0x1ca00, addmod(mload(0x1c960), mload(0x1c9e0), f_q)) +mstore(0x1ca20, mulmod(mload(0x8060), mload(0x1ca00), f_q)) +mstore(0x1ca40, mulmod(mload(0xa400), mload(0xa3e0), f_q)) +mstore(0x1ca60, addmod(mload(0xa3c0), mload(0x1ca40), f_q)) +mstore(0x1ca80, addmod(mload(0x1ca60), sub(f_q, mload(0xa420)), f_q)) +mstore(0x1caa0, mulmod(mload(0x1ca80), mload(0x10920), f_q)) +mstore(0x1cac0, addmod(mload(0x1ca20), mload(0x1caa0), f_q)) +mstore(0x1cae0, mulmod(mload(0x8060), mload(0x1cac0), f_q)) +mstore(0x1cb00, mulmod(mload(0xa480), mload(0xa460), f_q)) +mstore(0x1cb20, addmod(mload(0xa440), mload(0x1cb00), f_q)) +mstore(0x1cb40, addmod(mload(0x1cb20), sub(f_q, mload(0xa4a0)), f_q)) +mstore(0x1cb60, mulmod(mload(0x1cb40), mload(0x10940), f_q)) +mstore(0x1cb80, addmod(mload(0x1cae0), mload(0x1cb60), f_q)) +mstore(0x1cba0, mulmod(mload(0x8060), mload(0x1cb80), f_q)) +mstore(0x1cbc0, mulmod(mload(0xa500), mload(0xa4e0), f_q)) +mstore(0x1cbe0, addmod(mload(0xa4c0), mload(0x1cbc0), f_q)) +mstore(0x1cc00, addmod(mload(0x1cbe0), sub(f_q, mload(0xa520)), f_q)) +mstore(0x1cc20, mulmod(mload(0x1cc00), mload(0x10960), f_q)) +mstore(0x1cc40, addmod(mload(0x1cba0), mload(0x1cc20), f_q)) +mstore(0x1cc60, mulmod(mload(0x8060), mload(0x1cc40), f_q)) +mstore(0x1cc80, mulmod(mload(0xa580), mload(0xa560), f_q)) +mstore(0x1cca0, addmod(mload(0xa540), mload(0x1cc80), f_q)) +mstore(0x1ccc0, addmod(mload(0x1cca0), sub(f_q, mload(0xa5a0)), f_q)) +mstore(0x1cce0, mulmod(mload(0x1ccc0), mload(0x10980), f_q)) +mstore(0x1cd00, addmod(mload(0x1cc60), mload(0x1cce0), f_q)) +mstore(0x1cd20, mulmod(mload(0x8060), mload(0x1cd00), f_q)) +mstore(0x1cd40, mulmod(mload(0xa600), mload(0xa5e0), f_q)) +mstore(0x1cd60, addmod(mload(0xa5c0), mload(0x1cd40), f_q)) +mstore(0x1cd80, addmod(mload(0x1cd60), sub(f_q, mload(0xa620)), f_q)) +mstore(0x1cda0, mulmod(mload(0x1cd80), mload(0x109a0), f_q)) +mstore(0x1cdc0, addmod(mload(0x1cd20), mload(0x1cda0), f_q)) +mstore(0x1cde0, mulmod(mload(0x8060), mload(0x1cdc0), f_q)) +mstore(0x1ce00, mulmod(mload(0xa680), mload(0xa660), f_q)) +mstore(0x1ce20, addmod(mload(0xa640), mload(0x1ce00), f_q)) +mstore(0x1ce40, addmod(mload(0x1ce20), sub(f_q, mload(0xa6a0)), f_q)) +mstore(0x1ce60, mulmod(mload(0x1ce40), mload(0x109c0), f_q)) +mstore(0x1ce80, addmod(mload(0x1cde0), mload(0x1ce60), f_q)) +mstore(0x1cea0, mulmod(mload(0x8060), mload(0x1ce80), f_q)) +mstore(0x1cec0, mulmod(mload(0xa700), mload(0xa6e0), f_q)) +mstore(0x1cee0, addmod(mload(0xa6c0), mload(0x1cec0), f_q)) +mstore(0x1cf00, addmod(mload(0x1cee0), sub(f_q, mload(0xa720)), f_q)) +mstore(0x1cf20, mulmod(mload(0x1cf00), mload(0x109e0), f_q)) +mstore(0x1cf40, addmod(mload(0x1cea0), mload(0x1cf20), f_q)) +mstore(0x1cf60, mulmod(mload(0x8060), mload(0x1cf40), f_q)) +mstore(0x1cf80, mulmod(mload(0xa780), mload(0xa760), f_q)) +mstore(0x1cfa0, addmod(mload(0xa740), mload(0x1cf80), f_q)) +mstore(0x1cfc0, addmod(mload(0x1cfa0), sub(f_q, mload(0xa7a0)), f_q)) +mstore(0x1cfe0, mulmod(mload(0x1cfc0), mload(0x10a00), f_q)) +mstore(0x1d000, addmod(mload(0x1cf60), mload(0x1cfe0), f_q)) +mstore(0x1d020, mulmod(mload(0x8060), mload(0x1d000), f_q)) +mstore(0x1d040, mulmod(mload(0xa800), mload(0xa7e0), f_q)) +mstore(0x1d060, addmod(mload(0xa7c0), mload(0x1d040), f_q)) +mstore(0x1d080, addmod(mload(0x1d060), sub(f_q, mload(0xa820)), f_q)) +mstore(0x1d0a0, mulmod(mload(0x1d080), mload(0x10a20), f_q)) +mstore(0x1d0c0, addmod(mload(0x1d020), mload(0x1d0a0), f_q)) +mstore(0x1d0e0, mulmod(mload(0x8060), mload(0x1d0c0), f_q)) +mstore(0x1d100, mulmod(mload(0xa880), mload(0xa860), f_q)) +mstore(0x1d120, addmod(mload(0xa840), mload(0x1d100), f_q)) +mstore(0x1d140, addmod(mload(0x1d120), sub(f_q, mload(0xa8a0)), f_q)) +mstore(0x1d160, mulmod(mload(0x1d140), mload(0x10a40), f_q)) +mstore(0x1d180, addmod(mload(0x1d0e0), mload(0x1d160), f_q)) +mstore(0x1d1a0, mulmod(mload(0x8060), mload(0x1d180), f_q)) +mstore(0x1d1c0, mulmod(mload(0xa900), mload(0xa8e0), f_q)) +mstore(0x1d1e0, addmod(mload(0xa8c0), mload(0x1d1c0), f_q)) +mstore(0x1d200, addmod(mload(0x1d1e0), sub(f_q, mload(0xa920)), f_q)) +mstore(0x1d220, mulmod(mload(0x1d200), mload(0x10a60), f_q)) +mstore(0x1d240, addmod(mload(0x1d1a0), mload(0x1d220), f_q)) +mstore(0x1d260, mulmod(mload(0x8060), mload(0x1d240), f_q)) +mstore(0x1d280, mulmod(mload(0xa980), mload(0xa960), f_q)) +mstore(0x1d2a0, addmod(mload(0xa940), mload(0x1d280), f_q)) +mstore(0x1d2c0, addmod(mload(0x1d2a0), sub(f_q, mload(0xa9a0)), f_q)) +mstore(0x1d2e0, mulmod(mload(0x1d2c0), mload(0x10a80), f_q)) +mstore(0x1d300, addmod(mload(0x1d260), mload(0x1d2e0), f_q)) +mstore(0x1d320, mulmod(mload(0x8060), mload(0x1d300), f_q)) +mstore(0x1d340, mulmod(mload(0xaa00), mload(0xa9e0), f_q)) +mstore(0x1d360, addmod(mload(0xa9c0), mload(0x1d340), f_q)) +mstore(0x1d380, addmod(mload(0x1d360), sub(f_q, mload(0xaa20)), f_q)) +mstore(0x1d3a0, mulmod(mload(0x1d380), mload(0x10aa0), f_q)) +mstore(0x1d3c0, addmod(mload(0x1d320), mload(0x1d3a0), f_q)) +mstore(0x1d3e0, mulmod(mload(0x8060), mload(0x1d3c0), f_q)) +mstore(0x1d400, mulmod(mload(0xaa80), mload(0xaa60), f_q)) +mstore(0x1d420, addmod(mload(0xaa40), mload(0x1d400), f_q)) +mstore(0x1d440, addmod(mload(0x1d420), sub(f_q, mload(0xaaa0)), f_q)) +mstore(0x1d460, mulmod(mload(0x1d440), mload(0x10ac0), f_q)) +mstore(0x1d480, addmod(mload(0x1d3e0), mload(0x1d460), f_q)) +mstore(0x1d4a0, mulmod(mload(0x8060), mload(0x1d480), f_q)) +mstore(0x1d4c0, mulmod(mload(0xab00), mload(0xaae0), f_q)) +mstore(0x1d4e0, addmod(mload(0xaac0), mload(0x1d4c0), f_q)) +mstore(0x1d500, addmod(mload(0x1d4e0), sub(f_q, mload(0xab20)), f_q)) +mstore(0x1d520, mulmod(mload(0x1d500), mload(0x10ae0), f_q)) +mstore(0x1d540, addmod(mload(0x1d4a0), mload(0x1d520), f_q)) +mstore(0x1d560, mulmod(mload(0x8060), mload(0x1d540), f_q)) +mstore(0x1d580, mulmod(mload(0xab80), mload(0xab60), f_q)) +mstore(0x1d5a0, addmod(mload(0xab40), mload(0x1d580), f_q)) +mstore(0x1d5c0, addmod(mload(0x1d5a0), sub(f_q, mload(0xaba0)), f_q)) +mstore(0x1d5e0, mulmod(mload(0x1d5c0), mload(0x10b00), f_q)) +mstore(0x1d600, addmod(mload(0x1d560), mload(0x1d5e0), f_q)) +mstore(0x1d620, mulmod(mload(0x8060), mload(0x1d600), f_q)) +mstore(0x1d640, mulmod(mload(0xac00), mload(0xabe0), f_q)) +mstore(0x1d660, addmod(mload(0xabc0), mload(0x1d640), f_q)) +mstore(0x1d680, addmod(mload(0x1d660), sub(f_q, mload(0xac20)), f_q)) +mstore(0x1d6a0, mulmod(mload(0x1d680), mload(0x10b20), f_q)) +mstore(0x1d6c0, addmod(mload(0x1d620), mload(0x1d6a0), f_q)) +mstore(0x1d6e0, mulmod(mload(0x8060), mload(0x1d6c0), f_q)) +mstore(0x1d700, mulmod(mload(0xac80), mload(0xac60), f_q)) +mstore(0x1d720, addmod(mload(0xac40), mload(0x1d700), f_q)) +mstore(0x1d740, addmod(mload(0x1d720), sub(f_q, mload(0xaca0)), f_q)) +mstore(0x1d760, mulmod(mload(0x1d740), mload(0x10b40), f_q)) +mstore(0x1d780, addmod(mload(0x1d6e0), mload(0x1d760), f_q)) +mstore(0x1d7a0, mulmod(mload(0x8060), mload(0x1d780), f_q)) +mstore(0x1d7c0, mulmod(mload(0xad00), mload(0xace0), f_q)) +mstore(0x1d7e0, addmod(mload(0xacc0), mload(0x1d7c0), f_q)) +mstore(0x1d800, addmod(mload(0x1d7e0), sub(f_q, mload(0xad20)), f_q)) +mstore(0x1d820, mulmod(mload(0x1d800), mload(0x10b60), f_q)) +mstore(0x1d840, addmod(mload(0x1d7a0), mload(0x1d820), f_q)) +mstore(0x1d860, mulmod(mload(0x8060), mload(0x1d840), f_q)) +mstore(0x1d880, mulmod(mload(0xad80), mload(0xad60), f_q)) +mstore(0x1d8a0, addmod(mload(0xad40), mload(0x1d880), f_q)) +mstore(0x1d8c0, addmod(mload(0x1d8a0), sub(f_q, mload(0xada0)), f_q)) +mstore(0x1d8e0, mulmod(mload(0x1d8c0), mload(0x10b80), f_q)) +mstore(0x1d900, addmod(mload(0x1d860), mload(0x1d8e0), f_q)) +mstore(0x1d920, mulmod(mload(0x8060), mload(0x1d900), f_q)) +mstore(0x1d940, mulmod(mload(0xae00), mload(0xade0), f_q)) +mstore(0x1d960, addmod(mload(0xadc0), mload(0x1d940), f_q)) +mstore(0x1d980, addmod(mload(0x1d960), sub(f_q, mload(0xae20)), f_q)) +mstore(0x1d9a0, mulmod(mload(0x1d980), mload(0x10ba0), f_q)) +mstore(0x1d9c0, addmod(mload(0x1d920), mload(0x1d9a0), f_q)) +mstore(0x1d9e0, mulmod(mload(0x8060), mload(0x1d9c0), f_q)) +mstore(0x1da00, mulmod(mload(0xae80), mload(0xae60), f_q)) +mstore(0x1da20, addmod(mload(0xae40), mload(0x1da00), f_q)) +mstore(0x1da40, addmod(mload(0x1da20), sub(f_q, mload(0xaea0)), f_q)) +mstore(0x1da60, mulmod(mload(0x1da40), mload(0x10bc0), f_q)) +mstore(0x1da80, addmod(mload(0x1d9e0), mload(0x1da60), f_q)) +mstore(0x1daa0, mulmod(mload(0x8060), mload(0x1da80), f_q)) +mstore(0x1dac0, mulmod(mload(0xaf00), mload(0xaee0), f_q)) +mstore(0x1dae0, addmod(mload(0xaec0), mload(0x1dac0), f_q)) +mstore(0x1db00, addmod(mload(0x1dae0), sub(f_q, mload(0xaf20)), f_q)) +mstore(0x1db20, mulmod(mload(0x1db00), mload(0x10be0), f_q)) +mstore(0x1db40, addmod(mload(0x1daa0), mload(0x1db20), f_q)) +mstore(0x1db60, mulmod(mload(0x8060), mload(0x1db40), f_q)) +mstore(0x1db80, mulmod(mload(0xaf80), mload(0xaf60), f_q)) +mstore(0x1dba0, addmod(mload(0xaf40), mload(0x1db80), f_q)) +mstore(0x1dbc0, addmod(mload(0x1dba0), sub(f_q, mload(0xafa0)), f_q)) +mstore(0x1dbe0, mulmod(mload(0x1dbc0), mload(0x10c00), f_q)) +mstore(0x1dc00, addmod(mload(0x1db60), mload(0x1dbe0), f_q)) +mstore(0x1dc20, mulmod(mload(0x8060), mload(0x1dc00), f_q)) +mstore(0x1dc40, mulmod(mload(0xb000), mload(0xafe0), f_q)) +mstore(0x1dc60, addmod(mload(0xafc0), mload(0x1dc40), f_q)) +mstore(0x1dc80, addmod(mload(0x1dc60), sub(f_q, mload(0xb020)), f_q)) +mstore(0x1dca0, mulmod(mload(0x1dc80), mload(0x10c20), f_q)) +mstore(0x1dcc0, addmod(mload(0x1dc20), mload(0x1dca0), f_q)) +mstore(0x1dce0, mulmod(mload(0x8060), mload(0x1dcc0), f_q)) +mstore(0x1dd00, mulmod(mload(0xb080), mload(0xb060), f_q)) +mstore(0x1dd20, addmod(mload(0xb040), mload(0x1dd00), f_q)) +mstore(0x1dd40, addmod(mload(0x1dd20), sub(f_q, mload(0xb0a0)), f_q)) +mstore(0x1dd60, mulmod(mload(0x1dd40), mload(0x10c40), f_q)) +mstore(0x1dd80, addmod(mload(0x1dce0), mload(0x1dd60), f_q)) +mstore(0x1dda0, mulmod(mload(0x8060), mload(0x1dd80), f_q)) +mstore(0x1ddc0, mulmod(mload(0xb100), mload(0xb0e0), f_q)) +mstore(0x1dde0, addmod(mload(0xb0c0), mload(0x1ddc0), f_q)) +mstore(0x1de00, addmod(mload(0x1dde0), sub(f_q, mload(0xb120)), f_q)) +mstore(0x1de20, mulmod(mload(0x1de00), mload(0x10c60), f_q)) +mstore(0x1de40, addmod(mload(0x1dda0), mload(0x1de20), f_q)) +mstore(0x1de60, mulmod(mload(0x8060), mload(0x1de40), f_q)) +mstore(0x1de80, mulmod(mload(0xb180), mload(0xb160), f_q)) +mstore(0x1dea0, addmod(mload(0xb140), mload(0x1de80), f_q)) +mstore(0x1dec0, addmod(mload(0x1dea0), sub(f_q, mload(0xb1a0)), f_q)) +mstore(0x1dee0, mulmod(mload(0x1dec0), mload(0x10c80), f_q)) +mstore(0x1df00, addmod(mload(0x1de60), mload(0x1dee0), f_q)) +mstore(0x1df20, mulmod(mload(0x8060), mload(0x1df00), f_q)) +mstore(0x1df40, mulmod(mload(0xb200), mload(0xb1e0), f_q)) +mstore(0x1df60, addmod(mload(0xb1c0), mload(0x1df40), f_q)) +mstore(0x1df80, addmod(mload(0x1df60), sub(f_q, mload(0xb220)), f_q)) +mstore(0x1dfa0, mulmod(mload(0x1df80), mload(0x10ca0), f_q)) +mstore(0x1dfc0, addmod(mload(0x1df20), mload(0x1dfa0), f_q)) +mstore(0x1dfe0, mulmod(mload(0x8060), mload(0x1dfc0), f_q)) +mstore(0x1e000, mulmod(mload(0xb280), mload(0xb260), f_q)) +mstore(0x1e020, addmod(mload(0xb240), mload(0x1e000), f_q)) +mstore(0x1e040, addmod(mload(0x1e020), sub(f_q, mload(0xb2a0)), f_q)) +mstore(0x1e060, mulmod(mload(0x1e040), mload(0x10cc0), f_q)) +mstore(0x1e080, addmod(mload(0x1dfe0), mload(0x1e060), f_q)) +mstore(0x1e0a0, mulmod(mload(0x8060), mload(0x1e080), f_q)) +mstore(0x1e0c0, mulmod(mload(0xb300), mload(0xb2e0), f_q)) +mstore(0x1e0e0, addmod(mload(0xb2c0), mload(0x1e0c0), f_q)) +mstore(0x1e100, addmod(mload(0x1e0e0), sub(f_q, mload(0xb320)), f_q)) +mstore(0x1e120, mulmod(mload(0x1e100), mload(0x10ce0), f_q)) +mstore(0x1e140, addmod(mload(0x1e0a0), mload(0x1e120), f_q)) +mstore(0x1e160, mulmod(mload(0x8060), mload(0x1e140), f_q)) +mstore(0x1e180, mulmod(mload(0xb380), mload(0xb360), f_q)) +mstore(0x1e1a0, addmod(mload(0xb340), mload(0x1e180), f_q)) +mstore(0x1e1c0, addmod(mload(0x1e1a0), sub(f_q, mload(0xb3a0)), f_q)) +mstore(0x1e1e0, mulmod(mload(0x1e1c0), mload(0x10d00), f_q)) +mstore(0x1e200, addmod(mload(0x1e160), mload(0x1e1e0), f_q)) +mstore(0x1e220, mulmod(mload(0x8060), mload(0x1e200), f_q)) +mstore(0x1e240, mulmod(mload(0xb400), mload(0xb3e0), f_q)) +mstore(0x1e260, addmod(mload(0xb3c0), mload(0x1e240), f_q)) +mstore(0x1e280, addmod(mload(0x1e260), sub(f_q, mload(0xb420)), f_q)) +mstore(0x1e2a0, mulmod(mload(0x1e280), mload(0x10d20), f_q)) +mstore(0x1e2c0, addmod(mload(0x1e220), mload(0x1e2a0), f_q)) +mstore(0x1e2e0, mulmod(mload(0x8060), mload(0x1e2c0), f_q)) +mstore(0x1e300, mulmod(mload(0xb480), mload(0xb460), f_q)) +mstore(0x1e320, addmod(mload(0xb440), mload(0x1e300), f_q)) +mstore(0x1e340, addmod(mload(0x1e320), sub(f_q, mload(0xb4a0)), f_q)) +mstore(0x1e360, mulmod(mload(0x1e340), mload(0x10d40), f_q)) +mstore(0x1e380, addmod(mload(0x1e2e0), mload(0x1e360), f_q)) +mstore(0x1e3a0, mulmod(mload(0x8060), mload(0x1e380), f_q)) +mstore(0x1e3c0, mulmod(mload(0xb500), mload(0xb4e0), f_q)) +mstore(0x1e3e0, addmod(mload(0xb4c0), mload(0x1e3c0), f_q)) +mstore(0x1e400, addmod(mload(0x1e3e0), sub(f_q, mload(0xb520)), f_q)) +mstore(0x1e420, mulmod(mload(0x1e400), mload(0x10d60), f_q)) +mstore(0x1e440, addmod(mload(0x1e3a0), mload(0x1e420), f_q)) +mstore(0x1e460, mulmod(mload(0x8060), mload(0x1e440), f_q)) +mstore(0x1e480, mulmod(mload(0xb580), mload(0xb560), f_q)) +mstore(0x1e4a0, addmod(mload(0xb540), mload(0x1e480), f_q)) +mstore(0x1e4c0, addmod(mload(0x1e4a0), sub(f_q, mload(0xb5a0)), f_q)) +mstore(0x1e4e0, mulmod(mload(0x1e4c0), mload(0x10d80), f_q)) +mstore(0x1e500, addmod(mload(0x1e460), mload(0x1e4e0), f_q)) +mstore(0x1e520, mulmod(mload(0x8060), mload(0x1e500), f_q)) +mstore(0x1e540, mulmod(mload(0xb600), mload(0xb5e0), f_q)) +mstore(0x1e560, addmod(mload(0xb5c0), mload(0x1e540), f_q)) +mstore(0x1e580, addmod(mload(0x1e560), sub(f_q, mload(0xb620)), f_q)) +mstore(0x1e5a0, mulmod(mload(0x1e580), mload(0x10da0), f_q)) +mstore(0x1e5c0, addmod(mload(0x1e520), mload(0x1e5a0), f_q)) +mstore(0x1e5e0, mulmod(mload(0x8060), mload(0x1e5c0), f_q)) +mstore(0x1e600, mulmod(mload(0xb680), mload(0xb660), f_q)) +mstore(0x1e620, addmod(mload(0xb640), mload(0x1e600), f_q)) +mstore(0x1e640, addmod(mload(0x1e620), sub(f_q, mload(0xb6a0)), f_q)) +mstore(0x1e660, mulmod(mload(0x1e640), mload(0x10dc0), f_q)) +mstore(0x1e680, addmod(mload(0x1e5e0), mload(0x1e660), f_q)) +mstore(0x1e6a0, mulmod(mload(0x8060), mload(0x1e680), f_q)) +mstore(0x1e6c0, mulmod(mload(0xb700), mload(0xb6e0), f_q)) +mstore(0x1e6e0, addmod(mload(0xb6c0), mload(0x1e6c0), f_q)) +mstore(0x1e700, addmod(mload(0x1e6e0), sub(f_q, mload(0xb720)), f_q)) +mstore(0x1e720, mulmod(mload(0x1e700), mload(0x10de0), f_q)) +mstore(0x1e740, addmod(mload(0x1e6a0), mload(0x1e720), f_q)) +mstore(0x1e760, mulmod(mload(0x8060), mload(0x1e740), f_q)) +mstore(0x1e780, mulmod(mload(0xb780), mload(0xb760), f_q)) +mstore(0x1e7a0, addmod(mload(0xb740), mload(0x1e780), f_q)) +mstore(0x1e7c0, addmod(mload(0x1e7a0), sub(f_q, mload(0xb7a0)), f_q)) +mstore(0x1e7e0, mulmod(mload(0x1e7c0), mload(0x10e00), f_q)) +mstore(0x1e800, addmod(mload(0x1e760), mload(0x1e7e0), f_q)) +mstore(0x1e820, mulmod(mload(0x8060), mload(0x1e800), f_q)) +mstore(0x1e840, mulmod(mload(0xb800), mload(0xb7e0), f_q)) +mstore(0x1e860, addmod(mload(0xb7c0), mload(0x1e840), f_q)) +mstore(0x1e880, addmod(mload(0x1e860), sub(f_q, mload(0xb820)), f_q)) +mstore(0x1e8a0, mulmod(mload(0x1e880), mload(0x10e20), f_q)) +mstore(0x1e8c0, addmod(mload(0x1e820), mload(0x1e8a0), f_q)) +mstore(0x1e8e0, mulmod(mload(0x8060), mload(0x1e8c0), f_q)) +mstore(0x1e900, mulmod(mload(0xb880), mload(0xb860), f_q)) +mstore(0x1e920, addmod(mload(0xb840), mload(0x1e900), f_q)) +mstore(0x1e940, addmod(mload(0x1e920), sub(f_q, mload(0xb8a0)), f_q)) +mstore(0x1e960, mulmod(mload(0x1e940), mload(0x10e40), f_q)) +mstore(0x1e980, addmod(mload(0x1e8e0), mload(0x1e960), f_q)) +mstore(0x1e9a0, mulmod(mload(0x8060), mload(0x1e980), f_q)) +mstore(0x1e9c0, mulmod(mload(0xb900), mload(0xb8e0), f_q)) +mstore(0x1e9e0, addmod(mload(0xb8c0), mload(0x1e9c0), f_q)) +mstore(0x1ea00, addmod(mload(0x1e9e0), sub(f_q, mload(0xb920)), f_q)) +mstore(0x1ea20, mulmod(mload(0x1ea00), mload(0x10e60), f_q)) +mstore(0x1ea40, addmod(mload(0x1e9a0), mload(0x1ea20), f_q)) +mstore(0x1ea60, mulmod(mload(0x8060), mload(0x1ea40), f_q)) +mstore(0x1ea80, mulmod(mload(0xb980), mload(0xb960), f_q)) +mstore(0x1eaa0, addmod(mload(0xb940), mload(0x1ea80), f_q)) +mstore(0x1eac0, addmod(mload(0x1eaa0), sub(f_q, mload(0xb9a0)), f_q)) +mstore(0x1eae0, mulmod(mload(0x1eac0), mload(0x10e80), f_q)) +mstore(0x1eb00, addmod(mload(0x1ea60), mload(0x1eae0), f_q)) +mstore(0x1eb20, mulmod(mload(0x8060), mload(0x1eb00), f_q)) +mstore(0x1eb40, mulmod(mload(0xba00), mload(0xb9e0), f_q)) +mstore(0x1eb60, addmod(mload(0xb9c0), mload(0x1eb40), f_q)) +mstore(0x1eb80, addmod(mload(0x1eb60), sub(f_q, mload(0xba20)), f_q)) +mstore(0x1eba0, mulmod(mload(0x1eb80), mload(0x10ea0), f_q)) +mstore(0x1ebc0, addmod(mload(0x1eb20), mload(0x1eba0), f_q)) +mstore(0x1ebe0, mulmod(mload(0x8060), mload(0x1ebc0), f_q)) +mstore(0x1ec00, mulmod(mload(0xba80), mload(0xba60), f_q)) +mstore(0x1ec20, addmod(mload(0xba40), mload(0x1ec00), f_q)) +mstore(0x1ec40, addmod(mload(0x1ec20), sub(f_q, mload(0xbaa0)), f_q)) +mstore(0x1ec60, mulmod(mload(0x1ec40), mload(0x10ec0), f_q)) +mstore(0x1ec80, addmod(mload(0x1ebe0), mload(0x1ec60), f_q)) +mstore(0x1eca0, mulmod(mload(0x8060), mload(0x1ec80), f_q)) +mstore(0x1ecc0, mulmod(mload(0xbb00), mload(0xbae0), f_q)) +mstore(0x1ece0, addmod(mload(0xbac0), mload(0x1ecc0), f_q)) +mstore(0x1ed00, addmod(mload(0x1ece0), sub(f_q, mload(0xbb20)), f_q)) +mstore(0x1ed20, mulmod(mload(0x1ed00), mload(0x10ee0), f_q)) +mstore(0x1ed40, addmod(mload(0x1eca0), mload(0x1ed20), f_q)) +mstore(0x1ed60, mulmod(mload(0x8060), mload(0x1ed40), f_q)) +mstore(0x1ed80, mulmod(mload(0xbb80), mload(0xbb60), f_q)) +mstore(0x1eda0, addmod(mload(0xbb40), mload(0x1ed80), f_q)) +mstore(0x1edc0, addmod(mload(0x1eda0), sub(f_q, mload(0xbba0)), f_q)) +mstore(0x1ede0, mulmod(mload(0x1edc0), mload(0x10f00), f_q)) +mstore(0x1ee00, addmod(mload(0x1ed60), mload(0x1ede0), f_q)) +mstore(0x1ee20, mulmod(mload(0x8060), mload(0x1ee00), f_q)) +mstore(0x1ee40, mulmod(mload(0xbc00), mload(0xbbe0), f_q)) +mstore(0x1ee60, addmod(mload(0xbbc0), mload(0x1ee40), f_q)) +mstore(0x1ee80, addmod(mload(0x1ee60), sub(f_q, mload(0xbc20)), f_q)) +mstore(0x1eea0, mulmod(mload(0x1ee80), mload(0x10f20), f_q)) +mstore(0x1eec0, addmod(mload(0x1ee20), mload(0x1eea0), f_q)) +mstore(0x1eee0, mulmod(mload(0x8060), mload(0x1eec0), f_q)) +mstore(0x1ef00, mulmod(mload(0xbc80), mload(0xbc60), f_q)) +mstore(0x1ef20, addmod(mload(0xbc40), mload(0x1ef00), f_q)) +mstore(0x1ef40, addmod(mload(0x1ef20), sub(f_q, mload(0xbca0)), f_q)) +mstore(0x1ef60, mulmod(mload(0x1ef40), mload(0x10f40), f_q)) +mstore(0x1ef80, addmod(mload(0x1eee0), mload(0x1ef60), f_q)) +mstore(0x1efa0, mulmod(mload(0x8060), mload(0x1ef80), f_q)) +mstore(0x1efc0, mulmod(mload(0xbd00), mload(0xbce0), f_q)) +mstore(0x1efe0, addmod(mload(0xbcc0), mload(0x1efc0), f_q)) +mstore(0x1f000, addmod(mload(0x1efe0), sub(f_q, mload(0xbd20)), f_q)) +mstore(0x1f020, mulmod(mload(0x1f000), mload(0x10f60), f_q)) +mstore(0x1f040, addmod(mload(0x1efa0), mload(0x1f020), f_q)) +mstore(0x1f060, mulmod(mload(0x8060), mload(0x1f040), f_q)) +mstore(0x1f080, mulmod(mload(0xbd80), mload(0xbd60), f_q)) +mstore(0x1f0a0, addmod(mload(0xbd40), mload(0x1f080), f_q)) +mstore(0x1f0c0, addmod(mload(0x1f0a0), sub(f_q, mload(0xbda0)), f_q)) +mstore(0x1f0e0, mulmod(mload(0x1f0c0), mload(0x10f80), f_q)) +mstore(0x1f100, addmod(mload(0x1f060), mload(0x1f0e0), f_q)) +mstore(0x1f120, mulmod(mload(0x8060), mload(0x1f100), f_q)) +mstore(0x1f140, mulmod(mload(0xbe00), mload(0xbde0), f_q)) +mstore(0x1f160, addmod(mload(0xbdc0), mload(0x1f140), f_q)) +mstore(0x1f180, addmod(mload(0x1f160), sub(f_q, mload(0xbe20)), f_q)) +mstore(0x1f1a0, mulmod(mload(0x1f180), mload(0x10fa0), f_q)) +mstore(0x1f1c0, addmod(mload(0x1f120), mload(0x1f1a0), f_q)) +mstore(0x1f1e0, mulmod(mload(0x8060), mload(0x1f1c0), f_q)) +mstore(0x1f200, mulmod(mload(0xbe80), mload(0xbe60), f_q)) +mstore(0x1f220, addmod(mload(0xbe40), mload(0x1f200), f_q)) +mstore(0x1f240, addmod(mload(0x1f220), sub(f_q, mload(0xbea0)), f_q)) +mstore(0x1f260, mulmod(mload(0x1f240), mload(0x10fc0), f_q)) +mstore(0x1f280, addmod(mload(0x1f1e0), mload(0x1f260), f_q)) +mstore(0x1f2a0, mulmod(mload(0x8060), mload(0x1f280), f_q)) +mstore(0x1f2c0, mulmod(mload(0xbf00), mload(0xbee0), f_q)) +mstore(0x1f2e0, addmod(mload(0xbec0), mload(0x1f2c0), f_q)) +mstore(0x1f300, addmod(mload(0x1f2e0), sub(f_q, mload(0xbf20)), f_q)) +mstore(0x1f320, mulmod(mload(0x1f300), mload(0x10fe0), f_q)) +mstore(0x1f340, addmod(mload(0x1f2a0), mload(0x1f320), f_q)) +mstore(0x1f360, mulmod(mload(0x8060), mload(0x1f340), f_q)) +mstore(0x1f380, mulmod(mload(0xbf80), mload(0xbf60), f_q)) +mstore(0x1f3a0, addmod(mload(0xbf40), mload(0x1f380), f_q)) +mstore(0x1f3c0, addmod(mload(0x1f3a0), sub(f_q, mload(0xbfa0)), f_q)) +mstore(0x1f3e0, mulmod(mload(0x1f3c0), mload(0x11000), f_q)) +mstore(0x1f400, addmod(mload(0x1f360), mload(0x1f3e0), f_q)) +mstore(0x1f420, mulmod(mload(0x8060), mload(0x1f400), f_q)) +mstore(0x1f440, mulmod(mload(0xc000), mload(0xbfe0), f_q)) +mstore(0x1f460, addmod(mload(0xbfc0), mload(0x1f440), f_q)) +mstore(0x1f480, addmod(mload(0x1f460), sub(f_q, mload(0xc020)), f_q)) +mstore(0x1f4a0, mulmod(mload(0x1f480), mload(0x11020), f_q)) +mstore(0x1f4c0, addmod(mload(0x1f420), mload(0x1f4a0), f_q)) +mstore(0x1f4e0, mulmod(mload(0x8060), mload(0x1f4c0), f_q)) +mstore(0x1f500, mulmod(mload(0xc080), mload(0xc060), f_q)) +mstore(0x1f520, addmod(mload(0xc040), mload(0x1f500), f_q)) +mstore(0x1f540, addmod(mload(0x1f520), sub(f_q, mload(0xc0a0)), f_q)) +mstore(0x1f560, mulmod(mload(0x1f540), mload(0x11040), f_q)) +mstore(0x1f580, addmod(mload(0x1f4e0), mload(0x1f560), f_q)) +mstore(0x1f5a0, mulmod(mload(0x8060), mload(0x1f580), f_q)) +mstore(0x1f5c0, mulmod(mload(0xc100), mload(0xc0e0), f_q)) +mstore(0x1f5e0, addmod(mload(0xc0c0), mload(0x1f5c0), f_q)) +mstore(0x1f600, addmod(mload(0x1f5e0), sub(f_q, mload(0xc120)), f_q)) +mstore(0x1f620, mulmod(mload(0x1f600), mload(0x11060), f_q)) +mstore(0x1f640, addmod(mload(0x1f5a0), mload(0x1f620), f_q)) +mstore(0x1f660, mulmod(mload(0x8060), mload(0x1f640), f_q)) +mstore(0x1f680, mulmod(mload(0xc180), mload(0xc160), f_q)) +mstore(0x1f6a0, addmod(mload(0xc140), mload(0x1f680), f_q)) +mstore(0x1f6c0, addmod(mload(0x1f6a0), sub(f_q, mload(0xc1a0)), f_q)) +mstore(0x1f6e0, mulmod(mload(0x1f6c0), mload(0x11080), f_q)) +mstore(0x1f700, addmod(mload(0x1f660), mload(0x1f6e0), f_q)) +mstore(0x1f720, mulmod(mload(0x8060), mload(0x1f700), f_q)) +mstore(0x1f740, mulmod(mload(0xc200), mload(0xc1e0), f_q)) +mstore(0x1f760, addmod(mload(0xc1c0), mload(0x1f740), f_q)) +mstore(0x1f780, addmod(mload(0x1f760), sub(f_q, mload(0xc220)), f_q)) +mstore(0x1f7a0, mulmod(mload(0x1f780), mload(0x110a0), f_q)) +mstore(0x1f7c0, addmod(mload(0x1f720), mload(0x1f7a0), f_q)) +mstore(0x1f7e0, mulmod(mload(0x8060), mload(0x1f7c0), f_q)) +mstore(0x1f800, mulmod(mload(0xc280), mload(0xc260), f_q)) +mstore(0x1f820, addmod(mload(0xc240), mload(0x1f800), f_q)) +mstore(0x1f840, addmod(mload(0x1f820), sub(f_q, mload(0xc2a0)), f_q)) +mstore(0x1f860, mulmod(mload(0x1f840), mload(0x110c0), f_q)) +mstore(0x1f880, addmod(mload(0x1f7e0), mload(0x1f860), f_q)) +mstore(0x1f8a0, mulmod(mload(0x8060), mload(0x1f880), f_q)) +mstore(0x1f8c0, mulmod(mload(0xc300), mload(0xc2e0), f_q)) +mstore(0x1f8e0, addmod(mload(0xc2c0), mload(0x1f8c0), f_q)) +mstore(0x1f900, addmod(mload(0x1f8e0), sub(f_q, mload(0xc320)), f_q)) +mstore(0x1f920, mulmod(mload(0x1f900), mload(0x110e0), f_q)) +mstore(0x1f940, addmod(mload(0x1f8a0), mload(0x1f920), f_q)) +mstore(0x1f960, mulmod(mload(0x8060), mload(0x1f940), f_q)) +mstore(0x1f980, mulmod(mload(0xc380), mload(0xc360), f_q)) +mstore(0x1f9a0, addmod(mload(0xc340), mload(0x1f980), f_q)) +mstore(0x1f9c0, addmod(mload(0x1f9a0), sub(f_q, mload(0xc3a0)), f_q)) +mstore(0x1f9e0, mulmod(mload(0x1f9c0), mload(0x11100), f_q)) +mstore(0x1fa00, addmod(mload(0x1f960), mload(0x1f9e0), f_q)) +mstore(0x1fa20, mulmod(mload(0x8060), mload(0x1fa00), f_q)) +mstore(0x1fa40, mulmod(mload(0xc400), mload(0xc3e0), f_q)) +mstore(0x1fa60, addmod(mload(0xc3c0), mload(0x1fa40), f_q)) +mstore(0x1fa80, addmod(mload(0x1fa60), sub(f_q, mload(0xc420)), f_q)) +mstore(0x1faa0, mulmod(mload(0x1fa80), mload(0x11120), f_q)) +mstore(0x1fac0, addmod(mload(0x1fa20), mload(0x1faa0), f_q)) +mstore(0x1fae0, mulmod(mload(0x8060), mload(0x1fac0), f_q)) +mstore(0x1fb00, mulmod(mload(0xc480), mload(0xc460), f_q)) +mstore(0x1fb20, addmod(mload(0xc440), mload(0x1fb00), f_q)) +mstore(0x1fb40, addmod(mload(0x1fb20), sub(f_q, mload(0xc4a0)), f_q)) +mstore(0x1fb60, mulmod(mload(0x1fb40), mload(0x11140), f_q)) +mstore(0x1fb80, addmod(mload(0x1fae0), mload(0x1fb60), f_q)) +mstore(0x1fba0, mulmod(mload(0x8060), mload(0x1fb80), f_q)) +mstore(0x1fbc0, mulmod(mload(0xc500), mload(0xc4e0), f_q)) +mstore(0x1fbe0, addmod(mload(0xc4c0), mload(0x1fbc0), f_q)) +mstore(0x1fc00, addmod(mload(0x1fbe0), sub(f_q, mload(0xc520)), f_q)) +mstore(0x1fc20, mulmod(mload(0x1fc00), mload(0x11160), f_q)) +mstore(0x1fc40, addmod(mload(0x1fba0), mload(0x1fc20), f_q)) +mstore(0x1fc60, mulmod(mload(0x8060), mload(0x1fc40), f_q)) +mstore(0x1fc80, mulmod(mload(0xc580), mload(0xc560), f_q)) +mstore(0x1fca0, addmod(mload(0xc540), mload(0x1fc80), f_q)) +mstore(0x1fcc0, addmod(mload(0x1fca0), sub(f_q, mload(0xc5a0)), f_q)) +mstore(0x1fce0, mulmod(mload(0x1fcc0), mload(0x11180), f_q)) +mstore(0x1fd00, addmod(mload(0x1fc60), mload(0x1fce0), f_q)) +mstore(0x1fd20, mulmod(mload(0x8060), mload(0x1fd00), f_q)) +mstore(0x1fd40, mulmod(mload(0xc600), mload(0xc5e0), f_q)) +mstore(0x1fd60, addmod(mload(0xc5c0), mload(0x1fd40), f_q)) +mstore(0x1fd80, addmod(mload(0x1fd60), sub(f_q, mload(0xc620)), f_q)) +mstore(0x1fda0, mulmod(mload(0x1fd80), mload(0x111a0), f_q)) +mstore(0x1fdc0, addmod(mload(0x1fd20), mload(0x1fda0), f_q)) +mstore(0x1fde0, mulmod(mload(0x8060), mload(0x1fdc0), f_q)) +mstore(0x1fe00, mulmod(mload(0xc680), mload(0xc660), f_q)) +mstore(0x1fe20, addmod(mload(0xc640), mload(0x1fe00), f_q)) +mstore(0x1fe40, addmod(mload(0x1fe20), sub(f_q, mload(0xc6a0)), f_q)) +mstore(0x1fe60, mulmod(mload(0x1fe40), mload(0x111c0), f_q)) +mstore(0x1fe80, addmod(mload(0x1fde0), mload(0x1fe60), f_q)) +mstore(0x1fea0, mulmod(mload(0x8060), mload(0x1fe80), f_q)) +mstore(0x1fec0, mulmod(mload(0xc700), mload(0xc6e0), f_q)) +mstore(0x1fee0, addmod(mload(0xc6c0), mload(0x1fec0), f_q)) +mstore(0x1ff00, addmod(mload(0x1fee0), sub(f_q, mload(0xc720)), f_q)) +mstore(0x1ff20, mulmod(mload(0x1ff00), mload(0x111e0), f_q)) +mstore(0x1ff40, addmod(mload(0x1fea0), mload(0x1ff20), f_q)) +mstore(0x1ff60, mulmod(mload(0x8060), mload(0x1ff40), f_q)) +mstore(0x1ff80, mulmod(mload(0xc780), mload(0xc760), f_q)) +mstore(0x1ffa0, addmod(mload(0xc740), mload(0x1ff80), f_q)) +mstore(0x1ffc0, addmod(mload(0x1ffa0), sub(f_q, mload(0xc7a0)), f_q)) +mstore(0x1ffe0, mulmod(mload(0x1ffc0), mload(0x11200), f_q)) +mstore(0x20000, addmod(mload(0x1ff60), mload(0x1ffe0), f_q)) +mstore(0x20020, mulmod(mload(0x8060), mload(0x20000), f_q)) +mstore(0x20040, mulmod(mload(0xc800), mload(0xc7e0), f_q)) +mstore(0x20060, addmod(mload(0xc7c0), mload(0x20040), f_q)) +mstore(0x20080, addmod(mload(0x20060), sub(f_q, mload(0xc820)), f_q)) +mstore(0x200a0, mulmod(mload(0x20080), mload(0x11220), f_q)) +mstore(0x200c0, addmod(mload(0x20020), mload(0x200a0), f_q)) +mstore(0x200e0, mulmod(mload(0x8060), mload(0x200c0), f_q)) +mstore(0x20100, mulmod(mload(0xc880), mload(0xc860), f_q)) +mstore(0x20120, addmod(mload(0xc840), mload(0x20100), f_q)) +mstore(0x20140, addmod(mload(0x20120), sub(f_q, mload(0xc8a0)), f_q)) +mstore(0x20160, mulmod(mload(0x20140), mload(0x11240), f_q)) +mstore(0x20180, addmod(mload(0x200e0), mload(0x20160), f_q)) +mstore(0x201a0, mulmod(mload(0x8060), mload(0x20180), f_q)) +mstore(0x201c0, mulmod(mload(0xc900), mload(0xc8e0), f_q)) +mstore(0x201e0, addmod(mload(0xc8c0), mload(0x201c0), f_q)) +mstore(0x20200, addmod(mload(0x201e0), sub(f_q, mload(0xc920)), f_q)) +mstore(0x20220, mulmod(mload(0x20200), mload(0x11260), f_q)) +mstore(0x20240, addmod(mload(0x201a0), mload(0x20220), f_q)) +mstore(0x20260, mulmod(mload(0x8060), mload(0x20240), f_q)) +mstore(0x20280, mulmod(mload(0xc980), mload(0xc960), f_q)) +mstore(0x202a0, addmod(mload(0xc940), mload(0x20280), f_q)) +mstore(0x202c0, addmod(mload(0x202a0), sub(f_q, mload(0xc9a0)), f_q)) +mstore(0x202e0, mulmod(mload(0x202c0), mload(0x11280), f_q)) +mstore(0x20300, addmod(mload(0x20260), mload(0x202e0), f_q)) +mstore(0x20320, mulmod(mload(0x8060), mload(0x20300), f_q)) +mstore(0x20340, mulmod(mload(0xca00), mload(0xc9e0), f_q)) +mstore(0x20360, addmod(mload(0xc9c0), mload(0x20340), f_q)) +mstore(0x20380, addmod(mload(0x20360), sub(f_q, mload(0xca20)), f_q)) +mstore(0x203a0, mulmod(mload(0x20380), mload(0x112a0), f_q)) +mstore(0x203c0, addmod(mload(0x20320), mload(0x203a0), f_q)) +mstore(0x203e0, mulmod(mload(0x8060), mload(0x203c0), f_q)) +mstore(0x20400, mulmod(mload(0xca80), mload(0xca60), f_q)) +mstore(0x20420, addmod(mload(0xca40), mload(0x20400), f_q)) +mstore(0x20440, addmod(mload(0x20420), sub(f_q, mload(0xcaa0)), f_q)) +mstore(0x20460, mulmod(mload(0x20440), mload(0x112c0), f_q)) +mstore(0x20480, addmod(mload(0x203e0), mload(0x20460), f_q)) +mstore(0x204a0, mulmod(mload(0x8060), mload(0x20480), f_q)) +mstore(0x204c0, mulmod(mload(0xcb00), mload(0xcae0), f_q)) +mstore(0x204e0, addmod(mload(0xcac0), mload(0x204c0), f_q)) +mstore(0x20500, addmod(mload(0x204e0), sub(f_q, mload(0xcb20)), f_q)) +mstore(0x20520, mulmod(mload(0x20500), mload(0x112e0), f_q)) +mstore(0x20540, addmod(mload(0x204a0), mload(0x20520), f_q)) +mstore(0x20560, mulmod(mload(0x8060), mload(0x20540), f_q)) +mstore(0x20580, mulmod(mload(0xcb80), mload(0xcb60), f_q)) +mstore(0x205a0, addmod(mload(0xcb40), mload(0x20580), f_q)) +mstore(0x205c0, addmod(mload(0x205a0), sub(f_q, mload(0xcba0)), f_q)) +mstore(0x205e0, mulmod(mload(0x205c0), mload(0x11300), f_q)) +mstore(0x20600, addmod(mload(0x20560), mload(0x205e0), f_q)) +mstore(0x20620, mulmod(mload(0x8060), mload(0x20600), f_q)) +mstore(0x20640, mulmod(mload(0xcc00), mload(0xcbe0), f_q)) +mstore(0x20660, addmod(mload(0xcbc0), mload(0x20640), f_q)) +mstore(0x20680, addmod(mload(0x20660), sub(f_q, mload(0xcc20)), f_q)) +mstore(0x206a0, mulmod(mload(0x20680), mload(0x11320), f_q)) +mstore(0x206c0, addmod(mload(0x20620), mload(0x206a0), f_q)) +mstore(0x206e0, mulmod(mload(0x8060), mload(0x206c0), f_q)) +mstore(0x20700, mulmod(mload(0xcc80), mload(0xcc60), f_q)) +mstore(0x20720, addmod(mload(0xcc40), mload(0x20700), f_q)) +mstore(0x20740, addmod(mload(0x20720), sub(f_q, mload(0xcca0)), f_q)) +mstore(0x20760, mulmod(mload(0x20740), mload(0x11340), f_q)) +mstore(0x20780, addmod(mload(0x206e0), mload(0x20760), f_q)) +mstore(0x207a0, mulmod(mload(0x8060), mload(0x20780), f_q)) +mstore(0x207c0, mulmod(mload(0xcd00), mload(0xcce0), f_q)) +mstore(0x207e0, addmod(mload(0xccc0), mload(0x207c0), f_q)) +mstore(0x20800, addmod(mload(0x207e0), sub(f_q, mload(0xcd20)), f_q)) +mstore(0x20820, mulmod(mload(0x20800), mload(0x11360), f_q)) +mstore(0x20840, addmod(mload(0x207a0), mload(0x20820), f_q)) +mstore(0x20860, mulmod(mload(0x8060), mload(0x20840), f_q)) +mstore(0x20880, mulmod(mload(0xcd80), mload(0xcd60), f_q)) +mstore(0x208a0, addmod(mload(0xcd40), mload(0x20880), f_q)) +mstore(0x208c0, addmod(mload(0x208a0), sub(f_q, mload(0xcda0)), f_q)) +mstore(0x208e0, mulmod(mload(0x208c0), mload(0x11380), f_q)) +mstore(0x20900, addmod(mload(0x20860), mload(0x208e0), f_q)) +mstore(0x20920, mulmod(mload(0x8060), mload(0x20900), f_q)) +mstore(0x20940, mulmod(mload(0xce00), mload(0xcde0), f_q)) +mstore(0x20960, addmod(mload(0xcdc0), mload(0x20940), f_q)) +mstore(0x20980, addmod(mload(0x20960), sub(f_q, mload(0xce20)), f_q)) +mstore(0x209a0, mulmod(mload(0x20980), mload(0x113a0), f_q)) +mstore(0x209c0, addmod(mload(0x20920), mload(0x209a0), f_q)) +mstore(0x209e0, mulmod(mload(0x8060), mload(0x209c0), f_q)) +mstore(0x20a00, mulmod(mload(0xce80), mload(0xce60), f_q)) +mstore(0x20a20, addmod(mload(0xce40), mload(0x20a00), f_q)) +mstore(0x20a40, addmod(mload(0x20a20), sub(f_q, mload(0xcea0)), f_q)) +mstore(0x20a60, mulmod(mload(0x20a40), mload(0x113c0), f_q)) +mstore(0x20a80, addmod(mload(0x209e0), mload(0x20a60), f_q)) +mstore(0x20aa0, mulmod(mload(0x8060), mload(0x20a80), f_q)) +mstore(0x20ac0, mulmod(mload(0xcf00), mload(0xcee0), f_q)) +mstore(0x20ae0, addmod(mload(0xcec0), mload(0x20ac0), f_q)) +mstore(0x20b00, addmod(mload(0x20ae0), sub(f_q, mload(0xcf20)), f_q)) +mstore(0x20b20, mulmod(mload(0x20b00), mload(0x113e0), f_q)) +mstore(0x20b40, addmod(mload(0x20aa0), mload(0x20b20), f_q)) +mstore(0x20b60, mulmod(mload(0x8060), mload(0x20b40), f_q)) +mstore(0x20b80, mulmod(mload(0xcf80), mload(0xcf60), f_q)) +mstore(0x20ba0, addmod(mload(0xcf40), mload(0x20b80), f_q)) +mstore(0x20bc0, addmod(mload(0x20ba0), sub(f_q, mload(0xcfa0)), f_q)) +mstore(0x20be0, mulmod(mload(0x20bc0), mload(0x11400), f_q)) +mstore(0x20c00, addmod(mload(0x20b60), mload(0x20be0), f_q)) +mstore(0x20c20, mulmod(mload(0x8060), mload(0x20c00), f_q)) +mstore(0x20c40, mulmod(mload(0xd000), mload(0xcfe0), f_q)) +mstore(0x20c60, addmod(mload(0xcfc0), mload(0x20c40), f_q)) +mstore(0x20c80, addmod(mload(0x20c60), sub(f_q, mload(0xd020)), f_q)) +mstore(0x20ca0, mulmod(mload(0x20c80), mload(0x11420), f_q)) +mstore(0x20cc0, addmod(mload(0x20c20), mload(0x20ca0), f_q)) +mstore(0x20ce0, mulmod(mload(0x8060), mload(0x20cc0), f_q)) +mstore(0x20d00, mulmod(mload(0xd080), mload(0xd060), f_q)) +mstore(0x20d20, addmod(mload(0xd040), mload(0x20d00), f_q)) +mstore(0x20d40, addmod(mload(0x20d20), sub(f_q, mload(0xd0a0)), f_q)) +mstore(0x20d60, mulmod(mload(0x20d40), mload(0x11440), f_q)) +mstore(0x20d80, addmod(mload(0x20ce0), mload(0x20d60), f_q)) +mstore(0x20da0, mulmod(mload(0x8060), mload(0x20d80), f_q)) +mstore(0x20dc0, mulmod(mload(0xd100), mload(0xd0e0), f_q)) +mstore(0x20de0, addmod(mload(0xd0c0), mload(0x20dc0), f_q)) +mstore(0x20e00, addmod(mload(0x20de0), sub(f_q, mload(0xd120)), f_q)) +mstore(0x20e20, mulmod(mload(0x20e00), mload(0x11460), f_q)) +mstore(0x20e40, addmod(mload(0x20da0), mload(0x20e20), f_q)) +mstore(0x20e60, mulmod(mload(0x8060), mload(0x20e40), f_q)) +mstore(0x20e80, mulmod(mload(0xd180), mload(0xd160), f_q)) +mstore(0x20ea0, addmod(mload(0xd140), mload(0x20e80), f_q)) +mstore(0x20ec0, addmod(mload(0x20ea0), sub(f_q, mload(0xd1a0)), f_q)) +mstore(0x20ee0, mulmod(mload(0x20ec0), mload(0x11480), f_q)) +mstore(0x20f00, addmod(mload(0x20e60), mload(0x20ee0), f_q)) +mstore(0x20f20, mulmod(mload(0x8060), mload(0x20f00), f_q)) +mstore(0x20f40, mulmod(mload(0xd200), mload(0xd1e0), f_q)) +mstore(0x20f60, addmod(mload(0xd1c0), mload(0x20f40), f_q)) +mstore(0x20f80, addmod(mload(0x20f60), sub(f_q, mload(0xd220)), f_q)) +mstore(0x20fa0, mulmod(mload(0x20f80), mload(0x114a0), f_q)) +mstore(0x20fc0, addmod(mload(0x20f20), mload(0x20fa0), f_q)) +mstore(0x20fe0, mulmod(mload(0x8060), mload(0x20fc0), f_q)) +mstore(0x21000, mulmod(mload(0xd280), mload(0xd260), f_q)) +mstore(0x21020, addmod(mload(0xd240), mload(0x21000), f_q)) +mstore(0x21040, addmod(mload(0x21020), sub(f_q, mload(0xd2a0)), f_q)) +mstore(0x21060, mulmod(mload(0x21040), mload(0x114c0), f_q)) +mstore(0x21080, addmod(mload(0x20fe0), mload(0x21060), f_q)) +mstore(0x210a0, mulmod(mload(0x8060), mload(0x21080), f_q)) +mstore(0x210c0, mulmod(mload(0xd300), mload(0xd2e0), f_q)) +mstore(0x210e0, addmod(mload(0xd2c0), mload(0x210c0), f_q)) +mstore(0x21100, addmod(mload(0x210e0), sub(f_q, mload(0xd320)), f_q)) +mstore(0x21120, mulmod(mload(0x21100), mload(0x114e0), f_q)) +mstore(0x21140, addmod(mload(0x210a0), mload(0x21120), f_q)) +mstore(0x21160, mulmod(mload(0x8060), mload(0x21140), f_q)) +mstore(0x21180, addmod(2, sub(f_q, mload(0x11500)), f_q)) +mstore(0x211a0, mulmod(mload(0x21180), mload(0x11500), f_q)) +mstore(0x211c0, mulmod(mload(0xd380), mload(0xd360), f_q)) +mstore(0x211e0, addmod(mload(0xd340), mload(0x211c0), f_q)) +mstore(0x21200, addmod(mload(0x211e0), sub(f_q, mload(0xd3a0)), f_q)) +mstore(0x21220, mulmod(mload(0x21200), mload(0x211a0), f_q)) +mstore(0x21240, addmod(mload(0x21160), mload(0x21220), f_q)) +mstore(0x21260, mulmod(mload(0x8060), mload(0x21240), f_q)) +mstore(0x21280, mulmod(mload(0xd400), mload(0xd3e0), f_q)) +mstore(0x212a0, addmod(mload(0xd3c0), mload(0x21280), f_q)) +mstore(0x212c0, addmod(mload(0x212a0), sub(f_q, mload(0xd420)), f_q)) +mstore(0x212e0, mulmod(mload(0x212c0), mload(0x11520), f_q)) +mstore(0x21300, addmod(mload(0x21260), mload(0x212e0), f_q)) +mstore(0x21320, mulmod(mload(0x8060), mload(0x21300), f_q)) +mstore(0x21340, mulmod(mload(0xd480), mload(0xd460), f_q)) +mstore(0x21360, addmod(mload(0xd440), mload(0x21340), f_q)) +mstore(0x21380, addmod(mload(0x21360), sub(f_q, mload(0xd4a0)), f_q)) +mstore(0x213a0, mulmod(mload(0x21380), mload(0x11540), f_q)) +mstore(0x213c0, addmod(mload(0x21320), mload(0x213a0), f_q)) +mstore(0x213e0, mulmod(mload(0x8060), mload(0x213c0), f_q)) +mstore(0x21400, mulmod(mload(0xd500), mload(0xd4e0), f_q)) +mstore(0x21420, addmod(mload(0xd4c0), mload(0x21400), f_q)) +mstore(0x21440, addmod(mload(0x21420), sub(f_q, mload(0xd520)), f_q)) +mstore(0x21460, mulmod(mload(0x21440), mload(0x11560), f_q)) +mstore(0x21480, addmod(mload(0x213e0), mload(0x21460), f_q)) +mstore(0x214a0, mulmod(mload(0x8060), mload(0x21480), f_q)) +mstore(0x214c0, mulmod(mload(0xd580), mload(0xd560), f_q)) +mstore(0x214e0, addmod(mload(0xd540), mload(0x214c0), f_q)) +mstore(0x21500, addmod(mload(0x214e0), sub(f_q, mload(0xd5a0)), f_q)) +mstore(0x21520, mulmod(mload(0x21500), mload(0x11580), f_q)) +mstore(0x21540, addmod(mload(0x214a0), mload(0x21520), f_q)) +mstore(0x21560, mulmod(mload(0x8060), mload(0x21540), f_q)) +mstore(0x21580, mulmod(mload(0xd600), mload(0xd5e0), f_q)) +mstore(0x215a0, addmod(mload(0xd5c0), mload(0x21580), f_q)) +mstore(0x215c0, addmod(mload(0x215a0), sub(f_q, mload(0xd620)), f_q)) +mstore(0x215e0, mulmod(mload(0x215c0), mload(0x115a0), f_q)) +mstore(0x21600, addmod(mload(0x21560), mload(0x215e0), f_q)) +mstore(0x21620, mulmod(mload(0x8060), mload(0x21600), f_q)) +mstore(0x21640, mulmod(mload(0xd680), mload(0xd660), f_q)) +mstore(0x21660, addmod(mload(0xd640), mload(0x21640), f_q)) +mstore(0x21680, addmod(mload(0x21660), sub(f_q, mload(0xd6a0)), f_q)) +mstore(0x216a0, mulmod(mload(0x21680), mload(0x115c0), f_q)) +mstore(0x216c0, addmod(mload(0x21620), mload(0x216a0), f_q)) +mstore(0x216e0, mulmod(mload(0x8060), mload(0x216c0), f_q)) +mstore(0x21700, mulmod(mload(0xd700), mload(0xd6e0), f_q)) +mstore(0x21720, addmod(mload(0xd6c0), mload(0x21700), f_q)) +mstore(0x21740, addmod(mload(0x21720), sub(f_q, mload(0xd720)), f_q)) +mstore(0x21760, mulmod(mload(0x21740), mload(0x115e0), f_q)) +mstore(0x21780, addmod(mload(0x216e0), mload(0x21760), f_q)) +mstore(0x217a0, mulmod(mload(0x8060), mload(0x21780), f_q)) +mstore(0x217c0, mulmod(mload(0xd780), mload(0xd760), f_q)) +mstore(0x217e0, addmod(mload(0xd740), mload(0x217c0), f_q)) +mstore(0x21800, addmod(mload(0x217e0), sub(f_q, mload(0xd7a0)), f_q)) +mstore(0x21820, mulmod(mload(0x21800), mload(0x11600), f_q)) +mstore(0x21840, addmod(mload(0x217a0), mload(0x21820), f_q)) +mstore(0x21860, mulmod(mload(0x8060), mload(0x21840), f_q)) +mstore(0x21880, mulmod(mload(0xd800), mload(0xd7e0), f_q)) +mstore(0x218a0, addmod(mload(0xd7c0), mload(0x21880), f_q)) +mstore(0x218c0, addmod(mload(0x218a0), sub(f_q, mload(0xd820)), f_q)) +mstore(0x218e0, mulmod(mload(0x218c0), mload(0x11620), f_q)) +mstore(0x21900, addmod(mload(0x21860), mload(0x218e0), f_q)) +mstore(0x21920, mulmod(mload(0x8060), mload(0x21900), f_q)) +mstore(0x21940, mulmod(mload(0xd880), mload(0xd860), f_q)) +mstore(0x21960, addmod(mload(0xd840), mload(0x21940), f_q)) +mstore(0x21980, addmod(mload(0x21960), sub(f_q, mload(0xd8a0)), f_q)) +mstore(0x219a0, mulmod(mload(0x21980), mload(0x11640), f_q)) +mstore(0x219c0, addmod(mload(0x21920), mload(0x219a0), f_q)) +mstore(0x219e0, mulmod(mload(0x8060), mload(0x219c0), f_q)) +mstore(0x21a00, mulmod(mload(0xd900), mload(0xd8e0), f_q)) +mstore(0x21a20, addmod(mload(0xd8c0), mload(0x21a00), f_q)) +mstore(0x21a40, addmod(mload(0x21a20), sub(f_q, mload(0xd920)), f_q)) +mstore(0x21a60, mulmod(mload(0x21a40), mload(0x11660), f_q)) +mstore(0x21a80, addmod(mload(0x219e0), mload(0x21a60), f_q)) +mstore(0x21aa0, mulmod(mload(0x8060), mload(0x21a80), f_q)) +mstore(0x21ac0, mulmod(mload(0xd980), mload(0xd960), f_q)) +mstore(0x21ae0, addmod(mload(0xd940), mload(0x21ac0), f_q)) +mstore(0x21b00, addmod(mload(0x21ae0), sub(f_q, mload(0xd9a0)), f_q)) +mstore(0x21b20, mulmod(mload(0x21b00), mload(0x11680), f_q)) +mstore(0x21b40, addmod(mload(0x21aa0), mload(0x21b20), f_q)) +mstore(0x21b60, mulmod(mload(0x8060), mload(0x21b40), f_q)) +mstore(0x21b80, mulmod(mload(0xda00), mload(0xd9e0), f_q)) +mstore(0x21ba0, addmod(mload(0xd9c0), mload(0x21b80), f_q)) +mstore(0x21bc0, addmod(mload(0x21ba0), sub(f_q, mload(0xda20)), f_q)) +mstore(0x21be0, mulmod(mload(0x21bc0), mload(0x116a0), f_q)) +mstore(0x21c00, addmod(mload(0x21b60), mload(0x21be0), f_q)) +mstore(0x21c20, mulmod(mload(0x8060), mload(0x21c00), f_q)) +mstore(0x21c40, mulmod(mload(0xda80), mload(0xda60), f_q)) +mstore(0x21c60, addmod(mload(0xda40), mload(0x21c40), f_q)) +mstore(0x21c80, addmod(mload(0x21c60), sub(f_q, mload(0xdaa0)), f_q)) +mstore(0x21ca0, mulmod(mload(0x21c80), mload(0x116c0), f_q)) +mstore(0x21cc0, addmod(mload(0x21c20), mload(0x21ca0), f_q)) +mstore(0x21ce0, mulmod(mload(0x8060), mload(0x21cc0), f_q)) +mstore(0x21d00, mulmod(mload(0xdb00), mload(0xdae0), f_q)) +mstore(0x21d20, addmod(mload(0xdac0), mload(0x21d00), f_q)) +mstore(0x21d40, addmod(mload(0x21d20), sub(f_q, mload(0xdb20)), f_q)) +mstore(0x21d60, mulmod(mload(0x21d40), mload(0x116e0), f_q)) +mstore(0x21d80, addmod(mload(0x21ce0), mload(0x21d60), f_q)) +mstore(0x21da0, mulmod(mload(0x8060), mload(0x21d80), f_q)) +mstore(0x21dc0, mulmod(mload(0xdb80), mload(0xdb60), f_q)) +mstore(0x21de0, addmod(mload(0xdb40), mload(0x21dc0), f_q)) +mstore(0x21e00, addmod(mload(0x21de0), sub(f_q, mload(0xdba0)), f_q)) +mstore(0x21e20, mulmod(mload(0x21e00), mload(0x11700), f_q)) +mstore(0x21e40, addmod(mload(0x21da0), mload(0x21e20), f_q)) +mstore(0x21e60, mulmod(mload(0x8060), mload(0x21e40), f_q)) +mstore(0x21e80, mulmod(mload(0xdc00), mload(0xdbe0), f_q)) +mstore(0x21ea0, addmod(mload(0xdbc0), mload(0x21e80), f_q)) +mstore(0x21ec0, addmod(mload(0x21ea0), sub(f_q, mload(0xdc20)), f_q)) +mstore(0x21ee0, mulmod(mload(0x21ec0), mload(0x11720), f_q)) +mstore(0x21f00, addmod(mload(0x21e60), mload(0x21ee0), f_q)) +mstore(0x21f20, mulmod(mload(0x8060), mload(0x21f00), f_q)) +mstore(0x21f40, mulmod(mload(0xdc80), mload(0xdc60), f_q)) +mstore(0x21f60, addmod(mload(0xdc40), mload(0x21f40), f_q)) +mstore(0x21f80, addmod(mload(0x21f60), sub(f_q, mload(0xdca0)), f_q)) +mstore(0x21fa0, mulmod(mload(0x21f80), mload(0x11740), f_q)) +mstore(0x21fc0, addmod(mload(0x21f20), mload(0x21fa0), f_q)) +mstore(0x21fe0, mulmod(mload(0x8060), mload(0x21fc0), f_q)) +mstore(0x22000, mulmod(mload(0xdd00), mload(0xdce0), f_q)) +mstore(0x22020, addmod(mload(0xdcc0), mload(0x22000), f_q)) +mstore(0x22040, addmod(mload(0x22020), sub(f_q, mload(0xdd20)), f_q)) +mstore(0x22060, mulmod(mload(0x22040), mload(0x11760), f_q)) +mstore(0x22080, addmod(mload(0x21fe0), mload(0x22060), f_q)) +mstore(0x220a0, mulmod(mload(0x8060), mload(0x22080), f_q)) +mstore(0x220c0, mulmod(mload(0xdd80), mload(0xdd60), f_q)) +mstore(0x220e0, addmod(mload(0xdd40), mload(0x220c0), f_q)) +mstore(0x22100, addmod(mload(0x220e0), sub(f_q, mload(0xdda0)), f_q)) +mstore(0x22120, mulmod(mload(0x22100), mload(0x11780), f_q)) +mstore(0x22140, addmod(mload(0x220a0), mload(0x22120), f_q)) +mstore(0x22160, mulmod(mload(0x8060), mload(0x22140), f_q)) +mstore(0x22180, mulmod(mload(0xde00), mload(0xdde0), f_q)) +mstore(0x221a0, addmod(mload(0xddc0), mload(0x22180), f_q)) +mstore(0x221c0, addmod(mload(0x221a0), sub(f_q, mload(0xde20)), f_q)) +mstore(0x221e0, mulmod(mload(0x221c0), mload(0x117a0), f_q)) +mstore(0x22200, addmod(mload(0x22160), mload(0x221e0), f_q)) +mstore(0x22220, mulmod(mload(0x8060), mload(0x22200), f_q)) +mstore(0x22240, mulmod(mload(0xde80), mload(0xde60), f_q)) +mstore(0x22260, addmod(mload(0xde40), mload(0x22240), f_q)) +mstore(0x22280, addmod(mload(0x22260), sub(f_q, mload(0xdea0)), f_q)) +mstore(0x222a0, mulmod(mload(0x22280), mload(0x117c0), f_q)) +mstore(0x222c0, addmod(mload(0x22220), mload(0x222a0), f_q)) +mstore(0x222e0, mulmod(mload(0x8060), mload(0x222c0), f_q)) +mstore(0x22300, mulmod(mload(0xdf00), mload(0xdee0), f_q)) +mstore(0x22320, addmod(mload(0xdec0), mload(0x22300), f_q)) +mstore(0x22340, addmod(mload(0x22320), sub(f_q, mload(0xdf20)), f_q)) +mstore(0x22360, mulmod(mload(0x22340), mload(0x117e0), f_q)) +mstore(0x22380, addmod(mload(0x222e0), mload(0x22360), f_q)) +mstore(0x223a0, mulmod(mload(0x8060), mload(0x22380), f_q)) +mstore(0x223c0, addmod(2, sub(f_q, mload(0x11800)), f_q)) +mstore(0x223e0, mulmod(mload(0x223c0), mload(0x11800), f_q)) +mstore(0x22400, mulmod(mload(0xdf80), mload(0xdf60), f_q)) +mstore(0x22420, addmod(mload(0xdf40), mload(0x22400), f_q)) +mstore(0x22440, addmod(mload(0x22420), sub(f_q, mload(0xdfa0)), f_q)) +mstore(0x22460, mulmod(mload(0x22440), mload(0x223e0), f_q)) +mstore(0x22480, addmod(mload(0x223a0), mload(0x22460), f_q)) +mstore(0x224a0, mulmod(mload(0x8060), mload(0x22480), f_q)) +mstore(0x224c0, addmod(2, sub(f_q, mload(0x11820)), f_q)) +mstore(0x224e0, mulmod(mload(0x224c0), mload(0x11820), f_q)) +mstore(0x22500, mulmod(mload(0xe000), mload(0xdfe0), f_q)) +mstore(0x22520, addmod(mload(0xdfc0), mload(0x22500), f_q)) +mstore(0x22540, addmod(mload(0x22520), sub(f_q, mload(0xe020)), f_q)) +mstore(0x22560, mulmod(mload(0x22540), mload(0x224e0), f_q)) +mstore(0x22580, addmod(mload(0x224a0), mload(0x22560), f_q)) +mstore(0x225a0, mulmod(mload(0x8060), mload(0x22580), f_q)) +mstore(0x225c0, mulmod(mload(0xe080), mload(0xe060), f_q)) +mstore(0x225e0, addmod(mload(0xe040), mload(0x225c0), f_q)) +mstore(0x22600, addmod(mload(0x225e0), sub(f_q, mload(0xe0a0)), f_q)) +mstore(0x22620, mulmod(mload(0x22600), mload(0x11840), f_q)) +mstore(0x22640, addmod(mload(0x225a0), mload(0x22620), f_q)) +mstore(0x22660, mulmod(mload(0x8060), mload(0x22640), f_q)) +mstore(0x22680, mulmod(mload(0xe100), mload(0xe0e0), f_q)) +mstore(0x226a0, addmod(mload(0xe0c0), mload(0x22680), f_q)) +mstore(0x226c0, addmod(mload(0x226a0), sub(f_q, mload(0xe120)), f_q)) +mstore(0x226e0, mulmod(mload(0x226c0), mload(0x11860), f_q)) +mstore(0x22700, addmod(mload(0x22660), mload(0x226e0), f_q)) +mstore(0x22720, mulmod(mload(0x8060), mload(0x22700), f_q)) +mstore(0x22740, addmod(1, sub(f_q, mload(0x11500)), f_q)) +mstore(0x22760, mulmod(mload(0x22740), mload(0x11500), f_q)) +mstore(0x22780, mulmod(mload(0xe180), mload(0xe160), f_q)) +mstore(0x227a0, addmod(mload(0xe140), mload(0x22780), f_q)) +mstore(0x227c0, addmod(mload(0x227a0), sub(f_q, mload(0xe1a0)), f_q)) +mstore(0x227e0, mulmod(mload(0x227c0), mload(0x22760), f_q)) +mstore(0x22800, addmod(mload(0x22720), mload(0x227e0), f_q)) +mstore(0x22820, mulmod(mload(0x8060), mload(0x22800), f_q)) +mstore(0x22840, mulmod(mload(0xe200), mload(0xe1e0), f_q)) +mstore(0x22860, addmod(mload(0xe1c0), mload(0x22840), f_q)) +mstore(0x22880, addmod(mload(0x22860), sub(f_q, mload(0xe220)), f_q)) +mstore(0x228a0, mulmod(mload(0x22880), mload(0x11880), f_q)) +mstore(0x228c0, addmod(mload(0x22820), mload(0x228a0), f_q)) +mstore(0x228e0, mulmod(mload(0x8060), mload(0x228c0), f_q)) +mstore(0x22900, mulmod(mload(0xe280), mload(0xe260), f_q)) +mstore(0x22920, addmod(mload(0xe240), mload(0x22900), f_q)) +mstore(0x22940, addmod(mload(0x22920), sub(f_q, mload(0xe2a0)), f_q)) +mstore(0x22960, mulmod(mload(0x22940), mload(0x118a0), f_q)) +mstore(0x22980, addmod(mload(0x228e0), mload(0x22960), f_q)) +mstore(0x229a0, mulmod(mload(0x8060), mload(0x22980), f_q)) +mstore(0x229c0, addmod(2, sub(f_q, mload(0x118c0)), f_q)) +mstore(0x229e0, mulmod(mload(0x229c0), mload(0x118c0), f_q)) +mstore(0x22a00, mulmod(mload(0xe300), mload(0xe2e0), f_q)) +mstore(0x22a20, addmod(mload(0xe2c0), mload(0x22a00), f_q)) +mstore(0x22a40, addmod(mload(0x22a20), sub(f_q, mload(0xe320)), f_q)) +mstore(0x22a60, mulmod(mload(0x22a40), mload(0x229e0), f_q)) +mstore(0x22a80, addmod(mload(0x229a0), mload(0x22a60), f_q)) +mstore(0x22aa0, mulmod(mload(0x8060), mload(0x22a80), f_q)) +mstore(0x22ac0, mulmod(mload(0xe380), mload(0xe360), f_q)) +mstore(0x22ae0, addmod(mload(0xe340), mload(0x22ac0), f_q)) +mstore(0x22b00, addmod(mload(0x22ae0), sub(f_q, mload(0xe3a0)), f_q)) +mstore(0x22b20, mulmod(mload(0x22b00), mload(0x118e0), f_q)) +mstore(0x22b40, addmod(mload(0x22aa0), mload(0x22b20), f_q)) +mstore(0x22b60, mulmod(mload(0x8060), mload(0x22b40), f_q)) +mstore(0x22b80, mulmod(mload(0xe400), mload(0xe3e0), f_q)) +mstore(0x22ba0, addmod(mload(0xe3c0), mload(0x22b80), f_q)) +mstore(0x22bc0, addmod(mload(0x22ba0), sub(f_q, mload(0xe420)), f_q)) +mstore(0x22be0, mulmod(mload(0x22bc0), mload(0x11900), f_q)) +mstore(0x22c00, addmod(mload(0x22b60), mload(0x22be0), f_q)) +mstore(0x22c20, mulmod(mload(0x8060), mload(0x22c00), f_q)) +mstore(0x22c40, mulmod(mload(0xe480), mload(0xe460), f_q)) +mstore(0x22c60, addmod(mload(0xe440), mload(0x22c40), f_q)) +mstore(0x22c80, addmod(mload(0x22c60), sub(f_q, mload(0xe4a0)), f_q)) +mstore(0x22ca0, mulmod(mload(0x22c80), mload(0x11920), f_q)) +mstore(0x22cc0, addmod(mload(0x22c20), mload(0x22ca0), f_q)) +mstore(0x22ce0, mulmod(mload(0x8060), mload(0x22cc0), f_q)) +mstore(0x22d00, mulmod(mload(0xe500), mload(0xe4e0), f_q)) +mstore(0x22d20, addmod(mload(0xe4c0), mload(0x22d00), f_q)) +mstore(0x22d40, addmod(mload(0x22d20), sub(f_q, mload(0xe520)), f_q)) +mstore(0x22d60, mulmod(mload(0x22d40), mload(0x11940), f_q)) +mstore(0x22d80, addmod(mload(0x22ce0), mload(0x22d60), f_q)) +mstore(0x22da0, mulmod(mload(0x8060), mload(0x22d80), f_q)) +mstore(0x22dc0, mulmod(mload(0xe580), mload(0xe560), f_q)) +mstore(0x22de0, addmod(mload(0xe540), mload(0x22dc0), f_q)) +mstore(0x22e00, addmod(mload(0x22de0), sub(f_q, mload(0xe5a0)), f_q)) +mstore(0x22e20, mulmod(mload(0x22e00), mload(0x11960), f_q)) +mstore(0x22e40, addmod(mload(0x22da0), mload(0x22e20), f_q)) +mstore(0x22e60, mulmod(mload(0x8060), mload(0x22e40), f_q)) +mstore(0x22e80, mulmod(mload(0xe600), mload(0xe5e0), f_q)) +mstore(0x22ea0, addmod(mload(0xe5c0), mload(0x22e80), f_q)) +mstore(0x22ec0, addmod(mload(0x22ea0), sub(f_q, mload(0xe620)), f_q)) +mstore(0x22ee0, mulmod(mload(0x22ec0), mload(0x11980), f_q)) +mstore(0x22f00, addmod(mload(0x22e60), mload(0x22ee0), f_q)) +mstore(0x22f20, mulmod(mload(0x8060), mload(0x22f00), f_q)) +mstore(0x22f40, mulmod(mload(0xe680), mload(0xe660), f_q)) +mstore(0x22f60, addmod(mload(0xe640), mload(0x22f40), f_q)) +mstore(0x22f80, addmod(mload(0x22f60), sub(f_q, mload(0xe6a0)), f_q)) +mstore(0x22fa0, mulmod(mload(0x22f80), mload(0x119a0), f_q)) +mstore(0x22fc0, addmod(mload(0x22f20), mload(0x22fa0), f_q)) +mstore(0x22fe0, mulmod(mload(0x8060), mload(0x22fc0), f_q)) +mstore(0x23000, mulmod(mload(0xe700), mload(0xe6e0), f_q)) +mstore(0x23020, addmod(mload(0xe6c0), mload(0x23000), f_q)) +mstore(0x23040, addmod(mload(0x23020), sub(f_q, mload(0xe720)), f_q)) +mstore(0x23060, mulmod(mload(0x23040), mload(0x119c0), f_q)) +mstore(0x23080, addmod(mload(0x22fe0), mload(0x23060), f_q)) +mstore(0x230a0, mulmod(mload(0x8060), mload(0x23080), f_q)) +mstore(0x230c0, mulmod(mload(0xe780), mload(0xe760), f_q)) +mstore(0x230e0, addmod(mload(0xe740), mload(0x230c0), f_q)) +mstore(0x23100, addmod(mload(0x230e0), sub(f_q, mload(0xe7a0)), f_q)) +mstore(0x23120, mulmod(mload(0x23100), mload(0x119e0), f_q)) +mstore(0x23140, addmod(mload(0x230a0), mload(0x23120), f_q)) +mstore(0x23160, mulmod(mload(0x8060), mload(0x23140), f_q)) +mstore(0x23180, mulmod(mload(0xe800), mload(0xe7e0), f_q)) +mstore(0x231a0, addmod(mload(0xe7c0), mload(0x23180), f_q)) +mstore(0x231c0, addmod(mload(0x231a0), sub(f_q, mload(0xe820)), f_q)) +mstore(0x231e0, mulmod(mload(0x231c0), mload(0x11a00), f_q)) +mstore(0x23200, addmod(mload(0x23160), mload(0x231e0), f_q)) +mstore(0x23220, mulmod(mload(0x8060), mload(0x23200), f_q)) +mstore(0x23240, mulmod(mload(0xe880), mload(0xe860), f_q)) +mstore(0x23260, addmod(mload(0xe840), mload(0x23240), f_q)) +mstore(0x23280, addmod(mload(0x23260), sub(f_q, mload(0xe8a0)), f_q)) +mstore(0x232a0, mulmod(mload(0x23280), mload(0x11a20), f_q)) +mstore(0x232c0, addmod(mload(0x23220), mload(0x232a0), f_q)) +mstore(0x232e0, mulmod(mload(0x8060), mload(0x232c0), f_q)) +mstore(0x23300, mulmod(mload(0xe900), mload(0xe8e0), f_q)) +mstore(0x23320, addmod(mload(0xe8c0), mload(0x23300), f_q)) +mstore(0x23340, addmod(mload(0x23320), sub(f_q, mload(0xe920)), f_q)) +mstore(0x23360, mulmod(mload(0x23340), mload(0x11a40), f_q)) +mstore(0x23380, addmod(mload(0x232e0), mload(0x23360), f_q)) +mstore(0x233a0, mulmod(mload(0x8060), mload(0x23380), f_q)) +mstore(0x233c0, mulmod(mload(0xe980), mload(0xe960), f_q)) +mstore(0x233e0, addmod(mload(0xe940), mload(0x233c0), f_q)) +mstore(0x23400, addmod(mload(0x233e0), sub(f_q, mload(0xe9a0)), f_q)) +mstore(0x23420, mulmod(mload(0x23400), mload(0x11a60), f_q)) +mstore(0x23440, addmod(mload(0x233a0), mload(0x23420), f_q)) +mstore(0x23460, mulmod(mload(0x8060), mload(0x23440), f_q)) +mstore(0x23480, mulmod(mload(0xea00), mload(0xe9e0), f_q)) +mstore(0x234a0, addmod(mload(0xe9c0), mload(0x23480), f_q)) +mstore(0x234c0, addmod(mload(0x234a0), sub(f_q, mload(0xea20)), f_q)) +mstore(0x234e0, mulmod(mload(0x234c0), mload(0x11a80), f_q)) +mstore(0x23500, addmod(mload(0x23460), mload(0x234e0), f_q)) +mstore(0x23520, mulmod(mload(0x8060), mload(0x23500), f_q)) +mstore(0x23540, mulmod(mload(0xea80), mload(0xea60), f_q)) +mstore(0x23560, addmod(mload(0xea40), mload(0x23540), f_q)) +mstore(0x23580, addmod(mload(0x23560), sub(f_q, mload(0xeaa0)), f_q)) +mstore(0x235a0, mulmod(mload(0x23580), mload(0x11aa0), f_q)) +mstore(0x235c0, addmod(mload(0x23520), mload(0x235a0), f_q)) +mstore(0x235e0, mulmod(mload(0x8060), mload(0x235c0), f_q)) +mstore(0x23600, mulmod(mload(0xeb00), mload(0xeae0), f_q)) +mstore(0x23620, addmod(mload(0xeac0), mload(0x23600), f_q)) +mstore(0x23640, addmod(mload(0x23620), sub(f_q, mload(0xeb20)), f_q)) +mstore(0x23660, mulmod(mload(0x23640), mload(0x11ac0), f_q)) +mstore(0x23680, addmod(mload(0x235e0), mload(0x23660), f_q)) +mstore(0x236a0, mulmod(mload(0x8060), mload(0x23680), f_q)) +mstore(0x236c0, mulmod(mload(0xeb80), mload(0xeb60), f_q)) +mstore(0x236e0, addmod(mload(0xeb40), mload(0x236c0), f_q)) +mstore(0x23700, addmod(mload(0x236e0), sub(f_q, mload(0xeba0)), f_q)) +mstore(0x23720, mulmod(mload(0x23700), mload(0x11ae0), f_q)) +mstore(0x23740, addmod(mload(0x236a0), mload(0x23720), f_q)) +mstore(0x23760, mulmod(mload(0x8060), mload(0x23740), f_q)) +mstore(0x23780, mulmod(mload(0xec00), mload(0xebe0), f_q)) +mstore(0x237a0, addmod(mload(0xebc0), mload(0x23780), f_q)) +mstore(0x237c0, addmod(mload(0x237a0), sub(f_q, mload(0xec20)), f_q)) +mstore(0x237e0, mulmod(mload(0x237c0), mload(0x11b00), f_q)) +mstore(0x23800, addmod(mload(0x23760), mload(0x237e0), f_q)) +mstore(0x23820, mulmod(mload(0x8060), mload(0x23800), f_q)) +mstore(0x23840, mulmod(mload(0xec80), mload(0xec60), f_q)) +mstore(0x23860, addmod(mload(0xec40), mload(0x23840), f_q)) +mstore(0x23880, addmod(mload(0x23860), sub(f_q, mload(0xeca0)), f_q)) +mstore(0x238a0, mulmod(mload(0x23880), mload(0x11b20), f_q)) +mstore(0x238c0, addmod(mload(0x23820), mload(0x238a0), f_q)) +mstore(0x238e0, mulmod(mload(0x8060), mload(0x238c0), f_q)) +mstore(0x23900, mulmod(mload(0xed00), mload(0xece0), f_q)) +mstore(0x23920, addmod(mload(0xecc0), mload(0x23900), f_q)) +mstore(0x23940, addmod(mload(0x23920), sub(f_q, mload(0xed20)), f_q)) +mstore(0x23960, mulmod(mload(0x23940), mload(0x11b40), f_q)) +mstore(0x23980, addmod(mload(0x238e0), mload(0x23960), f_q)) +mstore(0x239a0, mulmod(mload(0x8060), mload(0x23980), f_q)) +mstore(0x239c0, addmod(1, sub(f_q, mload(0x11800)), f_q)) +mstore(0x239e0, mulmod(mload(0x239c0), mload(0x11800), f_q)) +mstore(0x23a00, mulmod(mload(0xed80), mload(0xed60), f_q)) +mstore(0x23a20, addmod(mload(0xed40), mload(0x23a00), f_q)) +mstore(0x23a40, addmod(mload(0x23a20), sub(f_q, mload(0xeda0)), f_q)) +mstore(0x23a60, mulmod(mload(0x23a40), mload(0x239e0), f_q)) +mstore(0x23a80, addmod(mload(0x239a0), mload(0x23a60), f_q)) +mstore(0x23aa0, mulmod(mload(0x8060), mload(0x23a80), f_q)) +mstore(0x23ac0, addmod(1, sub(f_q, mload(0x11820)), f_q)) +mstore(0x23ae0, mulmod(mload(0x23ac0), mload(0x11820), f_q)) +mstore(0x23b00, mulmod(mload(0xee00), mload(0xede0), f_q)) +mstore(0x23b20, addmod(mload(0xedc0), mload(0x23b00), f_q)) +mstore(0x23b40, addmod(mload(0x23b20), sub(f_q, mload(0xee20)), f_q)) +mstore(0x23b60, mulmod(mload(0x23b40), mload(0x23ae0), f_q)) +mstore(0x23b80, addmod(mload(0x23aa0), mload(0x23b60), f_q)) +mstore(0x23ba0, mulmod(mload(0x8060), mload(0x23b80), f_q)) +mstore(0x23bc0, mulmod(mload(0xee80), mload(0xee60), f_q)) +mstore(0x23be0, addmod(mload(0xee40), mload(0x23bc0), f_q)) +mstore(0x23c00, addmod(mload(0x23be0), sub(f_q, mload(0xeea0)), f_q)) +mstore(0x23c20, mulmod(mload(0x23c00), mload(0x11b60), f_q)) +mstore(0x23c40, addmod(mload(0x23ba0), mload(0x23c20), f_q)) +mstore(0x23c60, mulmod(mload(0x8060), mload(0x23c40), f_q)) +mstore(0x23c80, mulmod(mload(0xef00), mload(0xeee0), f_q)) +mstore(0x23ca0, addmod(mload(0xeec0), mload(0x23c80), f_q)) +mstore(0x23cc0, addmod(mload(0x23ca0), sub(f_q, mload(0xef20)), f_q)) +mstore(0x23ce0, mulmod(mload(0x23cc0), mload(0x11b80), f_q)) +mstore(0x23d00, addmod(mload(0x23c60), mload(0x23ce0), f_q)) +mstore(0x23d20, mulmod(mload(0x8060), mload(0x23d00), f_q)) +mstore(0x23d40, mulmod(mload(0xef80), mload(0xef60), f_q)) +mstore(0x23d60, addmod(mload(0xef40), mload(0x23d40), f_q)) +mstore(0x23d80, addmod(mload(0x23d60), sub(f_q, mload(0xefa0)), f_q)) +mstore(0x23da0, mulmod(mload(0x23d80), mload(0x11ba0), f_q)) +mstore(0x23dc0, addmod(mload(0x23d20), mload(0x23da0), f_q)) +mstore(0x23de0, mulmod(mload(0x8060), mload(0x23dc0), f_q)) +mstore(0x23e00, mulmod(mload(0xf000), mload(0xefe0), f_q)) +mstore(0x23e20, addmod(mload(0xefc0), mload(0x23e00), f_q)) +mstore(0x23e40, addmod(mload(0x23e20), sub(f_q, mload(0xf020)), f_q)) +mstore(0x23e60, mulmod(mload(0x23e40), mload(0x11bc0), f_q)) +mstore(0x23e80, addmod(mload(0x23de0), mload(0x23e60), f_q)) +mstore(0x23ea0, mulmod(mload(0x8060), mload(0x23e80), f_q)) +mstore(0x23ec0, mulmod(mload(0xf080), mload(0xf060), f_q)) +mstore(0x23ee0, addmod(mload(0xf040), mload(0x23ec0), f_q)) +mstore(0x23f00, addmod(mload(0x23ee0), sub(f_q, mload(0xf0a0)), f_q)) +mstore(0x23f20, mulmod(mload(0x23f00), mload(0x11be0), f_q)) +mstore(0x23f40, addmod(mload(0x23ea0), mload(0x23f20), f_q)) +mstore(0x23f60, mulmod(mload(0x8060), mload(0x23f40), f_q)) +mstore(0x23f80, addmod(1, sub(f_q, mload(0x118c0)), f_q)) +mstore(0x23fa0, mulmod(mload(0x23f80), mload(0x118c0), f_q)) +mstore(0x23fc0, mulmod(mload(0xf100), mload(0xf0e0), f_q)) +mstore(0x23fe0, addmod(mload(0xf0c0), mload(0x23fc0), f_q)) +mstore(0x24000, addmod(mload(0x23fe0), sub(f_q, mload(0xf120)), f_q)) +mstore(0x24020, mulmod(mload(0x24000), mload(0x23fa0), f_q)) +mstore(0x24040, addmod(mload(0x23f60), mload(0x24020), f_q)) +mstore(0x24060, mulmod(mload(0x8060), mload(0x24040), f_q)) +mstore(0x24080, mulmod(mload(0xf180), mload(0xf160), f_q)) +mstore(0x240a0, addmod(mload(0xf140), mload(0x24080), f_q)) +mstore(0x240c0, addmod(mload(0x240a0), sub(f_q, mload(0xf1a0)), f_q)) +mstore(0x240e0, mulmod(mload(0x240c0), mload(0x11c00), f_q)) +mstore(0x24100, addmod(mload(0x24060), mload(0x240e0), f_q)) +mstore(0x24120, mulmod(mload(0x8060), mload(0x24100), f_q)) +mstore(0x24140, mulmod(mload(0xf200), mload(0xf1e0), f_q)) +mstore(0x24160, addmod(mload(0xf1c0), mload(0x24140), f_q)) +mstore(0x24180, addmod(mload(0x24160), sub(f_q, mload(0xf220)), f_q)) +mstore(0x241a0, mulmod(mload(0x24180), mload(0x11c20), f_q)) +mstore(0x241c0, addmod(mload(0x24120), mload(0x241a0), f_q)) +mstore(0x241e0, mulmod(mload(0x8060), mload(0x241c0), f_q)) +mstore(0x24200, mulmod(mload(0xf280), mload(0xf260), f_q)) +mstore(0x24220, addmod(mload(0xf240), mload(0x24200), f_q)) +mstore(0x24240, addmod(mload(0x24220), sub(f_q, mload(0xf2a0)), f_q)) +mstore(0x24260, mulmod(mload(0x24240), mload(0x11c40), f_q)) +mstore(0x24280, addmod(mload(0x241e0), mload(0x24260), f_q)) +mstore(0x242a0, mulmod(mload(0x8060), mload(0x24280), f_q)) +mstore(0x242c0, mulmod(mload(0xf300), mload(0xf2e0), f_q)) +mstore(0x242e0, addmod(mload(0xf2c0), mload(0x242c0), f_q)) +mstore(0x24300, addmod(mload(0x242e0), sub(f_q, mload(0xf320)), f_q)) +mstore(0x24320, mulmod(mload(0x24300), mload(0x11c60), f_q)) +mstore(0x24340, addmod(mload(0x242a0), mload(0x24320), f_q)) +mstore(0x24360, mulmod(mload(0x8060), mload(0x24340), f_q)) +mstore(0x24380, mulmod(mload(0xf380), mload(0xf360), f_q)) +mstore(0x243a0, addmod(mload(0xf340), mload(0x24380), f_q)) +mstore(0x243c0, addmod(mload(0x243a0), sub(f_q, mload(0xf3a0)), f_q)) +mstore(0x243e0, mulmod(mload(0x243c0), mload(0x11c80), f_q)) +mstore(0x24400, addmod(mload(0x24360), mload(0x243e0), f_q)) +mstore(0x24420, mulmod(mload(0x8060), mload(0x24400), f_q)) +mstore(0x24440, mulmod(mload(0xf400), mload(0xf3e0), f_q)) +mstore(0x24460, addmod(mload(0xf3c0), mload(0x24440), f_q)) +mstore(0x24480, addmod(mload(0x24460), sub(f_q, mload(0xf420)), f_q)) +mstore(0x244a0, mulmod(mload(0x24480), mload(0x11ca0), f_q)) +mstore(0x244c0, addmod(mload(0x24420), mload(0x244a0), f_q)) +mstore(0x244e0, mulmod(mload(0x8060), mload(0x244c0), f_q)) +mstore(0x24500, mulmod(mload(0xf480), mload(0xf460), f_q)) +mstore(0x24520, addmod(mload(0xf440), mload(0x24500), f_q)) +mstore(0x24540, addmod(mload(0x24520), sub(f_q, mload(0xf4a0)), f_q)) +mstore(0x24560, mulmod(mload(0x24540), mload(0x11cc0), f_q)) +mstore(0x24580, addmod(mload(0x244e0), mload(0x24560), f_q)) +mstore(0x245a0, mulmod(mload(0x8060), mload(0x24580), f_q)) +mstore(0x245c0, mulmod(mload(0xf500), mload(0xf4e0), f_q)) +mstore(0x245e0, addmod(mload(0xf4c0), mload(0x245c0), f_q)) +mstore(0x24600, addmod(mload(0x245e0), sub(f_q, mload(0xf520)), f_q)) +mstore(0x24620, mulmod(mload(0x24600), mload(0x11ce0), f_q)) +mstore(0x24640, addmod(mload(0x245a0), mload(0x24620), f_q)) +mstore(0x24660, mulmod(mload(0x8060), mload(0x24640), f_q)) +mstore(0x24680, mulmod(mload(0xf580), mload(0xf560), f_q)) +mstore(0x246a0, addmod(mload(0xf540), mload(0x24680), f_q)) +mstore(0x246c0, addmod(mload(0x246a0), sub(f_q, mload(0xf5a0)), f_q)) +mstore(0x246e0, mulmod(mload(0x246c0), mload(0x11d00), f_q)) +mstore(0x24700, addmod(mload(0x24660), mload(0x246e0), f_q)) +mstore(0x24720, mulmod(mload(0x8060), mload(0x24700), f_q)) +mstore(0x24740, mulmod(mload(0xf600), mload(0xf5e0), f_q)) +mstore(0x24760, addmod(mload(0xf5c0), mload(0x24740), f_q)) +mstore(0x24780, addmod(mload(0x24760), sub(f_q, mload(0xf620)), f_q)) +mstore(0x247a0, mulmod(mload(0x24780), mload(0x11d20), f_q)) +mstore(0x247c0, addmod(mload(0x24720), mload(0x247a0), f_q)) +mstore(0x247e0, mulmod(mload(0x8060), mload(0x247c0), f_q)) +mstore(0x24800, mulmod(mload(0xf680), mload(0xf660), f_q)) +mstore(0x24820, addmod(mload(0xf640), mload(0x24800), f_q)) +mstore(0x24840, addmod(mload(0x24820), sub(f_q, mload(0xf6a0)), f_q)) +mstore(0x24860, mulmod(mload(0x24840), mload(0x11d40), f_q)) +mstore(0x24880, addmod(mload(0x247e0), mload(0x24860), f_q)) +mstore(0x248a0, mulmod(mload(0x8060), mload(0x24880), f_q)) +mstore(0x248c0, mulmod(mload(0xf700), mload(0xf6e0), f_q)) +mstore(0x248e0, addmod(mload(0xf6c0), mload(0x248c0), f_q)) +mstore(0x24900, addmod(mload(0x248e0), sub(f_q, mload(0xf720)), f_q)) +mstore(0x24920, mulmod(mload(0x24900), mload(0x11d60), f_q)) +mstore(0x24940, addmod(mload(0x248a0), mload(0x24920), f_q)) +mstore(0x24960, mulmod(mload(0x8060), mload(0x24940), f_q)) +mstore(0x24980, mulmod(mload(0xf780), mload(0xf760), f_q)) +mstore(0x249a0, addmod(mload(0xf740), mload(0x24980), f_q)) +mstore(0x249c0, addmod(mload(0x249a0), sub(f_q, mload(0xf7a0)), f_q)) +mstore(0x249e0, mulmod(mload(0x249c0), mload(0x11d80), f_q)) +mstore(0x24a00, addmod(mload(0x24960), mload(0x249e0), f_q)) +mstore(0x24a20, mulmod(mload(0x8060), mload(0x24a00), f_q)) +mstore(0x24a40, mulmod(mload(0xf800), mload(0xf7e0), f_q)) +mstore(0x24a60, addmod(mload(0xf7c0), mload(0x24a40), f_q)) +mstore(0x24a80, addmod(mload(0x24a60), sub(f_q, mload(0xf820)), f_q)) +mstore(0x24aa0, mulmod(mload(0x24a80), mload(0x11da0), f_q)) +mstore(0x24ac0, addmod(mload(0x24a20), mload(0x24aa0), f_q)) +mstore(0x24ae0, mulmod(mload(0x8060), mload(0x24ac0), f_q)) +mstore(0x24b00, mulmod(mload(0xf880), mload(0xf860), f_q)) +mstore(0x24b20, addmod(mload(0xf840), mload(0x24b00), f_q)) +mstore(0x24b40, addmod(mload(0x24b20), sub(f_q, mload(0xf8a0)), f_q)) +mstore(0x24b60, mulmod(mload(0x24b40), mload(0x11dc0), f_q)) +mstore(0x24b80, addmod(mload(0x24ae0), mload(0x24b60), f_q)) +mstore(0x24ba0, mulmod(mload(0x8060), mload(0x24b80), f_q)) +mstore(0x24bc0, mulmod(mload(0xf900), mload(0xf8e0), f_q)) +mstore(0x24be0, addmod(mload(0xf8c0), mload(0x24bc0), f_q)) +mstore(0x24c00, addmod(mload(0x24be0), sub(f_q, mload(0xf920)), f_q)) +mstore(0x24c20, mulmod(mload(0x24c00), mload(0x11de0), f_q)) +mstore(0x24c40, addmod(mload(0x24ba0), mload(0x24c20), f_q)) +mstore(0x24c60, mulmod(mload(0x8060), mload(0x24c40), f_q)) +mstore(0x24c80, mulmod(mload(0xf980), mload(0xf960), f_q)) +mstore(0x24ca0, addmod(mload(0xf940), mload(0x24c80), f_q)) +mstore(0x24cc0, addmod(mload(0x24ca0), sub(f_q, mload(0xf9a0)), f_q)) +mstore(0x24ce0, mulmod(mload(0x24cc0), mload(0x11e00), f_q)) +mstore(0x24d00, addmod(mload(0x24c60), mload(0x24ce0), f_q)) +mstore(0x24d20, mulmod(mload(0x8060), mload(0x24d00), f_q)) +mstore(0x24d40, mulmod(mload(0xfa00), mload(0xf9e0), f_q)) +mstore(0x24d60, addmod(mload(0xf9c0), mload(0x24d40), f_q)) +mstore(0x24d80, addmod(mload(0x24d60), sub(f_q, mload(0xfa20)), f_q)) +mstore(0x24da0, mulmod(mload(0x24d80), mload(0x11e20), f_q)) +mstore(0x24dc0, addmod(mload(0x24d20), mload(0x24da0), f_q)) +mstore(0x24de0, mulmod(mload(0x8060), mload(0x24dc0), f_q)) +mstore(0x24e00, mulmod(mload(0xfa80), mload(0xfa60), f_q)) +mstore(0x24e20, addmod(mload(0xfa40), mload(0x24e00), f_q)) +mstore(0x24e40, addmod(mload(0x24e20), sub(f_q, mload(0xfaa0)), f_q)) +mstore(0x24e60, mulmod(mload(0x24e40), mload(0x11e40), f_q)) +mstore(0x24e80, addmod(mload(0x24de0), mload(0x24e60), f_q)) +mstore(0x24ea0, mulmod(mload(0x8060), mload(0x24e80), f_q)) +mstore(0x24ec0, mulmod(mload(0xfb00), mload(0xfae0), f_q)) +mstore(0x24ee0, addmod(mload(0xfac0), mload(0x24ec0), f_q)) +mstore(0x24f00, addmod(mload(0x24ee0), sub(f_q, mload(0xfb20)), f_q)) +mstore(0x24f20, mulmod(mload(0x24f00), mload(0x11e60), f_q)) +mstore(0x24f40, addmod(mload(0x24ea0), mload(0x24f20), f_q)) +mstore(0x24f60, mulmod(mload(0x8060), mload(0x24f40), f_q)) +mstore(0x24f80, mulmod(mload(0xfb80), mload(0xfb60), f_q)) +mstore(0x24fa0, addmod(mload(0xfb40), mload(0x24f80), f_q)) +mstore(0x24fc0, addmod(mload(0x24fa0), sub(f_q, mload(0xfba0)), f_q)) +mstore(0x24fe0, mulmod(mload(0x24fc0), mload(0x11e80), f_q)) +mstore(0x25000, addmod(mload(0x24f60), mload(0x24fe0), f_q)) +mstore(0x25020, mulmod(mload(0x8060), mload(0x25000), f_q)) +mstore(0x25040, mulmod(mload(0xfc00), mload(0xfbe0), f_q)) +mstore(0x25060, addmod(mload(0xfbc0), mload(0x25040), f_q)) +mstore(0x25080, addmod(mload(0x25060), sub(f_q, mload(0xfc20)), f_q)) +mstore(0x250a0, mulmod(mload(0x25080), mload(0x11ea0), f_q)) +mstore(0x250c0, addmod(mload(0x25020), mload(0x250a0), f_q)) +mstore(0x250e0, mulmod(mload(0x8060), mload(0x250c0), f_q)) +mstore(0x25100, addmod(1, sub(f_q, mload(0x141e0)), f_q)) +mstore(0x25120, mulmod(mload(0x25100), mload(0x195c0), f_q)) +mstore(0x25140, addmod(mload(0x250e0), mload(0x25120), f_q)) +mstore(0x25160, mulmod(mload(0x8060), mload(0x25140), f_q)) +mstore(0x25180, mulmod(mload(0x17600), mload(0x17600), f_q)) +mstore(0x251a0, addmod(mload(0x25180), sub(f_q, mload(0x17600)), f_q)) +mstore(0x251c0, mulmod(mload(0x251a0), mload(0x194e0), f_q)) +mstore(0x251e0, addmod(mload(0x25160), mload(0x251c0), f_q)) +mstore(0x25200, mulmod(mload(0x8060), mload(0x251e0), f_q)) +mstore(0x25220, addmod(mload(0x14240), sub(f_q, mload(0x14220)), f_q)) +mstore(0x25240, mulmod(mload(0x25220), mload(0x195c0), f_q)) +mstore(0x25260, addmod(mload(0x25200), mload(0x25240), f_q)) +mstore(0x25280, mulmod(mload(0x8060), mload(0x25260), f_q)) +mstore(0x252a0, addmod(mload(0x142a0), sub(f_q, mload(0x14280)), f_q)) +mstore(0x252c0, mulmod(mload(0x252a0), mload(0x195c0), f_q)) +mstore(0x252e0, addmod(mload(0x25280), mload(0x252c0), f_q)) +mstore(0x25300, mulmod(mload(0x8060), mload(0x252e0), f_q)) +mstore(0x25320, addmod(mload(0x14300), sub(f_q, mload(0x142e0)), f_q)) +mstore(0x25340, mulmod(mload(0x25320), mload(0x195c0), f_q)) +mstore(0x25360, addmod(mload(0x25300), mload(0x25340), f_q)) +mstore(0x25380, mulmod(mload(0x8060), mload(0x25360), f_q)) +mstore(0x253a0, addmod(mload(0x14360), sub(f_q, mload(0x14340)), f_q)) +mstore(0x253c0, mulmod(mload(0x253a0), mload(0x195c0), f_q)) +mstore(0x253e0, addmod(mload(0x25380), mload(0x253c0), f_q)) +mstore(0x25400, mulmod(mload(0x8060), mload(0x253e0), f_q)) +mstore(0x25420, addmod(mload(0x143c0), sub(f_q, mload(0x143a0)), f_q)) +mstore(0x25440, mulmod(mload(0x25420), mload(0x195c0), f_q)) +mstore(0x25460, addmod(mload(0x25400), mload(0x25440), f_q)) +mstore(0x25480, mulmod(mload(0x8060), mload(0x25460), f_q)) +mstore(0x254a0, addmod(mload(0x14420), sub(f_q, mload(0x14400)), f_q)) +mstore(0x254c0, mulmod(mload(0x254a0), mload(0x195c0), f_q)) +mstore(0x254e0, addmod(mload(0x25480), mload(0x254c0), f_q)) +mstore(0x25500, mulmod(mload(0x8060), mload(0x254e0), f_q)) +mstore(0x25520, addmod(mload(0x14480), sub(f_q, mload(0x14460)), f_q)) +mstore(0x25540, mulmod(mload(0x25520), mload(0x195c0), f_q)) +mstore(0x25560, addmod(mload(0x25500), mload(0x25540), f_q)) +mstore(0x25580, mulmod(mload(0x8060), mload(0x25560), f_q)) +mstore(0x255a0, addmod(mload(0x144e0), sub(f_q, mload(0x144c0)), f_q)) +mstore(0x255c0, mulmod(mload(0x255a0), mload(0x195c0), f_q)) +mstore(0x255e0, addmod(mload(0x25580), mload(0x255c0), f_q)) +mstore(0x25600, mulmod(mload(0x8060), mload(0x255e0), f_q)) +mstore(0x25620, addmod(mload(0x14540), sub(f_q, mload(0x14520)), f_q)) +mstore(0x25640, mulmod(mload(0x25620), mload(0x195c0), f_q)) +mstore(0x25660, addmod(mload(0x25600), mload(0x25640), f_q)) +mstore(0x25680, mulmod(mload(0x8060), mload(0x25660), f_q)) +mstore(0x256a0, addmod(mload(0x145a0), sub(f_q, mload(0x14580)), f_q)) +mstore(0x256c0, mulmod(mload(0x256a0), mload(0x195c0), f_q)) +mstore(0x256e0, addmod(mload(0x25680), mload(0x256c0), f_q)) +mstore(0x25700, mulmod(mload(0x8060), mload(0x256e0), f_q)) +mstore(0x25720, addmod(mload(0x14600), sub(f_q, mload(0x145e0)), f_q)) +mstore(0x25740, mulmod(mload(0x25720), mload(0x195c0), f_q)) +mstore(0x25760, addmod(mload(0x25700), mload(0x25740), f_q)) +mstore(0x25780, mulmod(mload(0x8060), mload(0x25760), f_q)) +mstore(0x257a0, addmod(mload(0x14660), sub(f_q, mload(0x14640)), f_q)) +mstore(0x257c0, mulmod(mload(0x257a0), mload(0x195c0), f_q)) +mstore(0x257e0, addmod(mload(0x25780), mload(0x257c0), f_q)) +mstore(0x25800, mulmod(mload(0x8060), mload(0x257e0), f_q)) +mstore(0x25820, addmod(mload(0x146c0), sub(f_q, mload(0x146a0)), f_q)) +mstore(0x25840, mulmod(mload(0x25820), mload(0x195c0), f_q)) +mstore(0x25860, addmod(mload(0x25800), mload(0x25840), f_q)) +mstore(0x25880, mulmod(mload(0x8060), mload(0x25860), f_q)) +mstore(0x258a0, addmod(mload(0x14720), sub(f_q, mload(0x14700)), f_q)) +mstore(0x258c0, mulmod(mload(0x258a0), mload(0x195c0), f_q)) +mstore(0x258e0, addmod(mload(0x25880), mload(0x258c0), f_q)) +mstore(0x25900, mulmod(mload(0x8060), mload(0x258e0), f_q)) +mstore(0x25920, addmod(mload(0x14780), sub(f_q, mload(0x14760)), f_q)) +mstore(0x25940, mulmod(mload(0x25920), mload(0x195c0), f_q)) +mstore(0x25960, addmod(mload(0x25900), mload(0x25940), f_q)) +mstore(0x25980, mulmod(mload(0x8060), mload(0x25960), f_q)) +mstore(0x259a0, addmod(mload(0x147e0), sub(f_q, mload(0x147c0)), f_q)) +mstore(0x259c0, mulmod(mload(0x259a0), mload(0x195c0), f_q)) +mstore(0x259e0, addmod(mload(0x25980), mload(0x259c0), f_q)) +mstore(0x25a00, mulmod(mload(0x8060), mload(0x259e0), f_q)) +mstore(0x25a20, addmod(mload(0x14840), sub(f_q, mload(0x14820)), f_q)) +mstore(0x25a40, mulmod(mload(0x25a20), mload(0x195c0), f_q)) +mstore(0x25a60, addmod(mload(0x25a00), mload(0x25a40), f_q)) +mstore(0x25a80, mulmod(mload(0x8060), mload(0x25a60), f_q)) +mstore(0x25aa0, addmod(mload(0x148a0), sub(f_q, mload(0x14880)), f_q)) +mstore(0x25ac0, mulmod(mload(0x25aa0), mload(0x195c0), f_q)) +mstore(0x25ae0, addmod(mload(0x25a80), mload(0x25ac0), f_q)) +mstore(0x25b00, mulmod(mload(0x8060), mload(0x25ae0), f_q)) +mstore(0x25b20, addmod(mload(0x14900), sub(f_q, mload(0x148e0)), f_q)) +mstore(0x25b40, mulmod(mload(0x25b20), mload(0x195c0), f_q)) +mstore(0x25b60, addmod(mload(0x25b00), mload(0x25b40), f_q)) +mstore(0x25b80, mulmod(mload(0x8060), mload(0x25b60), f_q)) +mstore(0x25ba0, addmod(mload(0x14960), sub(f_q, mload(0x14940)), f_q)) +mstore(0x25bc0, mulmod(mload(0x25ba0), mload(0x195c0), f_q)) +mstore(0x25be0, addmod(mload(0x25b80), mload(0x25bc0), f_q)) +mstore(0x25c00, mulmod(mload(0x8060), mload(0x25be0), f_q)) +mstore(0x25c20, addmod(mload(0x149c0), sub(f_q, mload(0x149a0)), f_q)) +mstore(0x25c40, mulmod(mload(0x25c20), mload(0x195c0), f_q)) +mstore(0x25c60, addmod(mload(0x25c00), mload(0x25c40), f_q)) +mstore(0x25c80, mulmod(mload(0x8060), mload(0x25c60), f_q)) +mstore(0x25ca0, addmod(mload(0x14a20), sub(f_q, mload(0x14a00)), f_q)) +mstore(0x25cc0, mulmod(mload(0x25ca0), mload(0x195c0), f_q)) +mstore(0x25ce0, addmod(mload(0x25c80), mload(0x25cc0), f_q)) +mstore(0x25d00, mulmod(mload(0x8060), mload(0x25ce0), f_q)) +mstore(0x25d20, addmod(mload(0x14a80), sub(f_q, mload(0x14a60)), f_q)) +mstore(0x25d40, mulmod(mload(0x25d20), mload(0x195c0), f_q)) +mstore(0x25d60, addmod(mload(0x25d00), mload(0x25d40), f_q)) +mstore(0x25d80, mulmod(mload(0x8060), mload(0x25d60), f_q)) +mstore(0x25da0, addmod(mload(0x14ae0), sub(f_q, mload(0x14ac0)), f_q)) +mstore(0x25dc0, mulmod(mload(0x25da0), mload(0x195c0), f_q)) +mstore(0x25de0, addmod(mload(0x25d80), mload(0x25dc0), f_q)) +mstore(0x25e00, mulmod(mload(0x8060), mload(0x25de0), f_q)) +mstore(0x25e20, addmod(mload(0x14b40), sub(f_q, mload(0x14b20)), f_q)) +mstore(0x25e40, mulmod(mload(0x25e20), mload(0x195c0), f_q)) +mstore(0x25e60, addmod(mload(0x25e00), mload(0x25e40), f_q)) +mstore(0x25e80, mulmod(mload(0x8060), mload(0x25e60), f_q)) +mstore(0x25ea0, addmod(mload(0x14ba0), sub(f_q, mload(0x14b80)), f_q)) +mstore(0x25ec0, mulmod(mload(0x25ea0), mload(0x195c0), f_q)) +mstore(0x25ee0, addmod(mload(0x25e80), mload(0x25ec0), f_q)) +mstore(0x25f00, mulmod(mload(0x8060), mload(0x25ee0), f_q)) +mstore(0x25f20, addmod(mload(0x14c00), sub(f_q, mload(0x14be0)), f_q)) +mstore(0x25f40, mulmod(mload(0x25f20), mload(0x195c0), f_q)) +mstore(0x25f60, addmod(mload(0x25f00), mload(0x25f40), f_q)) +mstore(0x25f80, mulmod(mload(0x8060), mload(0x25f60), f_q)) +mstore(0x25fa0, addmod(mload(0x14c60), sub(f_q, mload(0x14c40)), f_q)) +mstore(0x25fc0, mulmod(mload(0x25fa0), mload(0x195c0), f_q)) +mstore(0x25fe0, addmod(mload(0x25f80), mload(0x25fc0), f_q)) +mstore(0x26000, mulmod(mload(0x8060), mload(0x25fe0), f_q)) +mstore(0x26020, addmod(mload(0x14cc0), sub(f_q, mload(0x14ca0)), f_q)) +mstore(0x26040, mulmod(mload(0x26020), mload(0x195c0), f_q)) +mstore(0x26060, addmod(mload(0x26000), mload(0x26040), f_q)) +mstore(0x26080, mulmod(mload(0x8060), mload(0x26060), f_q)) +mstore(0x260a0, addmod(mload(0x14d20), sub(f_q, mload(0x14d00)), f_q)) +mstore(0x260c0, mulmod(mload(0x260a0), mload(0x195c0), f_q)) +mstore(0x260e0, addmod(mload(0x26080), mload(0x260c0), f_q)) +mstore(0x26100, mulmod(mload(0x8060), mload(0x260e0), f_q)) +mstore(0x26120, addmod(mload(0x14d80), sub(f_q, mload(0x14d60)), f_q)) +mstore(0x26140, mulmod(mload(0x26120), mload(0x195c0), f_q)) +mstore(0x26160, addmod(mload(0x26100), mload(0x26140), f_q)) +mstore(0x26180, mulmod(mload(0x8060), mload(0x26160), f_q)) +mstore(0x261a0, addmod(mload(0x14de0), sub(f_q, mload(0x14dc0)), f_q)) +mstore(0x261c0, mulmod(mload(0x261a0), mload(0x195c0), f_q)) +mstore(0x261e0, addmod(mload(0x26180), mload(0x261c0), f_q)) +mstore(0x26200, mulmod(mload(0x8060), mload(0x261e0), f_q)) +mstore(0x26220, addmod(mload(0x14e40), sub(f_q, mload(0x14e20)), f_q)) +mstore(0x26240, mulmod(mload(0x26220), mload(0x195c0), f_q)) +mstore(0x26260, addmod(mload(0x26200), mload(0x26240), f_q)) +mstore(0x26280, mulmod(mload(0x8060), mload(0x26260), f_q)) +mstore(0x262a0, addmod(mload(0x14ea0), sub(f_q, mload(0x14e80)), f_q)) +mstore(0x262c0, mulmod(mload(0x262a0), mload(0x195c0), f_q)) +mstore(0x262e0, addmod(mload(0x26280), mload(0x262c0), f_q)) +mstore(0x26300, mulmod(mload(0x8060), mload(0x262e0), f_q)) +mstore(0x26320, addmod(mload(0x14f00), sub(f_q, mload(0x14ee0)), f_q)) +mstore(0x26340, mulmod(mload(0x26320), mload(0x195c0), f_q)) +mstore(0x26360, addmod(mload(0x26300), mload(0x26340), f_q)) +mstore(0x26380, mulmod(mload(0x8060), mload(0x26360), f_q)) +mstore(0x263a0, addmod(mload(0x14f60), sub(f_q, mload(0x14f40)), f_q)) +mstore(0x263c0, mulmod(mload(0x263a0), mload(0x195c0), f_q)) +mstore(0x263e0, addmod(mload(0x26380), mload(0x263c0), f_q)) +mstore(0x26400, mulmod(mload(0x8060), mload(0x263e0), f_q)) +mstore(0x26420, addmod(mload(0x14fc0), sub(f_q, mload(0x14fa0)), f_q)) +mstore(0x26440, mulmod(mload(0x26420), mload(0x195c0), f_q)) +mstore(0x26460, addmod(mload(0x26400), mload(0x26440), f_q)) +mstore(0x26480, mulmod(mload(0x8060), mload(0x26460), f_q)) +mstore(0x264a0, addmod(mload(0x15020), sub(f_q, mload(0x15000)), f_q)) +mstore(0x264c0, mulmod(mload(0x264a0), mload(0x195c0), f_q)) +mstore(0x264e0, addmod(mload(0x26480), mload(0x264c0), f_q)) +mstore(0x26500, mulmod(mload(0x8060), mload(0x264e0), f_q)) +mstore(0x26520, addmod(mload(0x15080), sub(f_q, mload(0x15060)), f_q)) +mstore(0x26540, mulmod(mload(0x26520), mload(0x195c0), f_q)) +mstore(0x26560, addmod(mload(0x26500), mload(0x26540), f_q)) +mstore(0x26580, mulmod(mload(0x8060), mload(0x26560), f_q)) +mstore(0x265a0, addmod(mload(0x150e0), sub(f_q, mload(0x150c0)), f_q)) +mstore(0x265c0, mulmod(mload(0x265a0), mload(0x195c0), f_q)) +mstore(0x265e0, addmod(mload(0x26580), mload(0x265c0), f_q)) +mstore(0x26600, mulmod(mload(0x8060), mload(0x265e0), f_q)) +mstore(0x26620, addmod(mload(0x15140), sub(f_q, mload(0x15120)), f_q)) +mstore(0x26640, mulmod(mload(0x26620), mload(0x195c0), f_q)) +mstore(0x26660, addmod(mload(0x26600), mload(0x26640), f_q)) +mstore(0x26680, mulmod(mload(0x8060), mload(0x26660), f_q)) +mstore(0x266a0, addmod(mload(0x151a0), sub(f_q, mload(0x15180)), f_q)) +mstore(0x266c0, mulmod(mload(0x266a0), mload(0x195c0), f_q)) +mstore(0x266e0, addmod(mload(0x26680), mload(0x266c0), f_q)) +mstore(0x26700, mulmod(mload(0x8060), mload(0x266e0), f_q)) +mstore(0x26720, addmod(mload(0x15200), sub(f_q, mload(0x151e0)), f_q)) +mstore(0x26740, mulmod(mload(0x26720), mload(0x195c0), f_q)) +mstore(0x26760, addmod(mload(0x26700), mload(0x26740), f_q)) +mstore(0x26780, mulmod(mload(0x8060), mload(0x26760), f_q)) +mstore(0x267a0, addmod(mload(0x15260), sub(f_q, mload(0x15240)), f_q)) +mstore(0x267c0, mulmod(mload(0x267a0), mload(0x195c0), f_q)) +mstore(0x267e0, addmod(mload(0x26780), mload(0x267c0), f_q)) +mstore(0x26800, mulmod(mload(0x8060), mload(0x267e0), f_q)) +mstore(0x26820, addmod(mload(0x152c0), sub(f_q, mload(0x152a0)), f_q)) +mstore(0x26840, mulmod(mload(0x26820), mload(0x195c0), f_q)) +mstore(0x26860, addmod(mload(0x26800), mload(0x26840), f_q)) +mstore(0x26880, mulmod(mload(0x8060), mload(0x26860), f_q)) +mstore(0x268a0, addmod(mload(0x15320), sub(f_q, mload(0x15300)), f_q)) +mstore(0x268c0, mulmod(mload(0x268a0), mload(0x195c0), f_q)) +mstore(0x268e0, addmod(mload(0x26880), mload(0x268c0), f_q)) +mstore(0x26900, mulmod(mload(0x8060), mload(0x268e0), f_q)) +mstore(0x26920, addmod(mload(0x15380), sub(f_q, mload(0x15360)), f_q)) +mstore(0x26940, mulmod(mload(0x26920), mload(0x195c0), f_q)) +mstore(0x26960, addmod(mload(0x26900), mload(0x26940), f_q)) +mstore(0x26980, mulmod(mload(0x8060), mload(0x26960), f_q)) +mstore(0x269a0, addmod(mload(0x153e0), sub(f_q, mload(0x153c0)), f_q)) +mstore(0x269c0, mulmod(mload(0x269a0), mload(0x195c0), f_q)) +mstore(0x269e0, addmod(mload(0x26980), mload(0x269c0), f_q)) +mstore(0x26a00, mulmod(mload(0x8060), mload(0x269e0), f_q)) +mstore(0x26a20, addmod(mload(0x15440), sub(f_q, mload(0x15420)), f_q)) +mstore(0x26a40, mulmod(mload(0x26a20), mload(0x195c0), f_q)) +mstore(0x26a60, addmod(mload(0x26a00), mload(0x26a40), f_q)) +mstore(0x26a80, mulmod(mload(0x8060), mload(0x26a60), f_q)) +mstore(0x26aa0, addmod(mload(0x154a0), sub(f_q, mload(0x15480)), f_q)) +mstore(0x26ac0, mulmod(mload(0x26aa0), mload(0x195c0), f_q)) +mstore(0x26ae0, addmod(mload(0x26a80), mload(0x26ac0), f_q)) +mstore(0x26b00, mulmod(mload(0x8060), mload(0x26ae0), f_q)) +mstore(0x26b20, addmod(mload(0x15500), sub(f_q, mload(0x154e0)), f_q)) +mstore(0x26b40, mulmod(mload(0x26b20), mload(0x195c0), f_q)) +mstore(0x26b60, addmod(mload(0x26b00), mload(0x26b40), f_q)) +mstore(0x26b80, mulmod(mload(0x8060), mload(0x26b60), f_q)) +mstore(0x26ba0, addmod(mload(0x15560), sub(f_q, mload(0x15540)), f_q)) +mstore(0x26bc0, mulmod(mload(0x26ba0), mload(0x195c0), f_q)) +mstore(0x26be0, addmod(mload(0x26b80), mload(0x26bc0), f_q)) +mstore(0x26c00, mulmod(mload(0x8060), mload(0x26be0), f_q)) +mstore(0x26c20, addmod(mload(0x155c0), sub(f_q, mload(0x155a0)), f_q)) +mstore(0x26c40, mulmod(mload(0x26c20), mload(0x195c0), f_q)) +mstore(0x26c60, addmod(mload(0x26c00), mload(0x26c40), f_q)) +mstore(0x26c80, mulmod(mload(0x8060), mload(0x26c60), f_q)) +mstore(0x26ca0, addmod(mload(0x15620), sub(f_q, mload(0x15600)), f_q)) +mstore(0x26cc0, mulmod(mload(0x26ca0), mload(0x195c0), f_q)) +mstore(0x26ce0, addmod(mload(0x26c80), mload(0x26cc0), f_q)) +mstore(0x26d00, mulmod(mload(0x8060), mload(0x26ce0), f_q)) +mstore(0x26d20, addmod(mload(0x15680), sub(f_q, mload(0x15660)), f_q)) +mstore(0x26d40, mulmod(mload(0x26d20), mload(0x195c0), f_q)) +mstore(0x26d60, addmod(mload(0x26d00), mload(0x26d40), f_q)) +mstore(0x26d80, mulmod(mload(0x8060), mload(0x26d60), f_q)) +mstore(0x26da0, addmod(mload(0x156e0), sub(f_q, mload(0x156c0)), f_q)) +mstore(0x26dc0, mulmod(mload(0x26da0), mload(0x195c0), f_q)) +mstore(0x26de0, addmod(mload(0x26d80), mload(0x26dc0), f_q)) +mstore(0x26e00, mulmod(mload(0x8060), mload(0x26de0), f_q)) +mstore(0x26e20, addmod(mload(0x15740), sub(f_q, mload(0x15720)), f_q)) +mstore(0x26e40, mulmod(mload(0x26e20), mload(0x195c0), f_q)) +mstore(0x26e60, addmod(mload(0x26e00), mload(0x26e40), f_q)) +mstore(0x26e80, mulmod(mload(0x8060), mload(0x26e60), f_q)) +mstore(0x26ea0, addmod(mload(0x157a0), sub(f_q, mload(0x15780)), f_q)) +mstore(0x26ec0, mulmod(mload(0x26ea0), mload(0x195c0), f_q)) +mstore(0x26ee0, addmod(mload(0x26e80), mload(0x26ec0), f_q)) +mstore(0x26f00, mulmod(mload(0x8060), mload(0x26ee0), f_q)) +mstore(0x26f20, addmod(mload(0x15800), sub(f_q, mload(0x157e0)), f_q)) +mstore(0x26f40, mulmod(mload(0x26f20), mload(0x195c0), f_q)) +mstore(0x26f60, addmod(mload(0x26f00), mload(0x26f40), f_q)) +mstore(0x26f80, mulmod(mload(0x8060), mload(0x26f60), f_q)) +mstore(0x26fa0, addmod(mload(0x15860), sub(f_q, mload(0x15840)), f_q)) +mstore(0x26fc0, mulmod(mload(0x26fa0), mload(0x195c0), f_q)) +mstore(0x26fe0, addmod(mload(0x26f80), mload(0x26fc0), f_q)) +mstore(0x27000, mulmod(mload(0x8060), mload(0x26fe0), f_q)) +mstore(0x27020, addmod(mload(0x158c0), sub(f_q, mload(0x158a0)), f_q)) +mstore(0x27040, mulmod(mload(0x27020), mload(0x195c0), f_q)) +mstore(0x27060, addmod(mload(0x27000), mload(0x27040), f_q)) +mstore(0x27080, mulmod(mload(0x8060), mload(0x27060), f_q)) +mstore(0x270a0, addmod(mload(0x15920), sub(f_q, mload(0x15900)), f_q)) +mstore(0x270c0, mulmod(mload(0x270a0), mload(0x195c0), f_q)) +mstore(0x270e0, addmod(mload(0x27080), mload(0x270c0), f_q)) +mstore(0x27100, mulmod(mload(0x8060), mload(0x270e0), f_q)) +mstore(0x27120, addmod(mload(0x15980), sub(f_q, mload(0x15960)), f_q)) +mstore(0x27140, mulmod(mload(0x27120), mload(0x195c0), f_q)) +mstore(0x27160, addmod(mload(0x27100), mload(0x27140), f_q)) +mstore(0x27180, mulmod(mload(0x8060), mload(0x27160), f_q)) +mstore(0x271a0, addmod(mload(0x159e0), sub(f_q, mload(0x159c0)), f_q)) +mstore(0x271c0, mulmod(mload(0x271a0), mload(0x195c0), f_q)) +mstore(0x271e0, addmod(mload(0x27180), mload(0x271c0), f_q)) +mstore(0x27200, mulmod(mload(0x8060), mload(0x271e0), f_q)) +mstore(0x27220, addmod(mload(0x15a40), sub(f_q, mload(0x15a20)), f_q)) +mstore(0x27240, mulmod(mload(0x27220), mload(0x195c0), f_q)) +mstore(0x27260, addmod(mload(0x27200), mload(0x27240), f_q)) +mstore(0x27280, mulmod(mload(0x8060), mload(0x27260), f_q)) +mstore(0x272a0, addmod(mload(0x15aa0), sub(f_q, mload(0x15a80)), f_q)) +mstore(0x272c0, mulmod(mload(0x272a0), mload(0x195c0), f_q)) +mstore(0x272e0, addmod(mload(0x27280), mload(0x272c0), f_q)) +mstore(0x27300, mulmod(mload(0x8060), mload(0x272e0), f_q)) +mstore(0x27320, addmod(mload(0x15b00), sub(f_q, mload(0x15ae0)), f_q)) +mstore(0x27340, mulmod(mload(0x27320), mload(0x195c0), f_q)) +mstore(0x27360, addmod(mload(0x27300), mload(0x27340), f_q)) +mstore(0x27380, mulmod(mload(0x8060), mload(0x27360), f_q)) +mstore(0x273a0, addmod(mload(0x15b60), sub(f_q, mload(0x15b40)), f_q)) +mstore(0x273c0, mulmod(mload(0x273a0), mload(0x195c0), f_q)) +mstore(0x273e0, addmod(mload(0x27380), mload(0x273c0), f_q)) +mstore(0x27400, mulmod(mload(0x8060), mload(0x273e0), f_q)) +mstore(0x27420, addmod(mload(0x15bc0), sub(f_q, mload(0x15ba0)), f_q)) +mstore(0x27440, mulmod(mload(0x27420), mload(0x195c0), f_q)) +mstore(0x27460, addmod(mload(0x27400), mload(0x27440), f_q)) +mstore(0x27480, mulmod(mload(0x8060), mload(0x27460), f_q)) +mstore(0x274a0, addmod(mload(0x15c20), sub(f_q, mload(0x15c00)), f_q)) +mstore(0x274c0, mulmod(mload(0x274a0), mload(0x195c0), f_q)) +mstore(0x274e0, addmod(mload(0x27480), mload(0x274c0), f_q)) +mstore(0x27500, mulmod(mload(0x8060), mload(0x274e0), f_q)) +mstore(0x27520, addmod(mload(0x15c80), sub(f_q, mload(0x15c60)), f_q)) +mstore(0x27540, mulmod(mload(0x27520), mload(0x195c0), f_q)) +mstore(0x27560, addmod(mload(0x27500), mload(0x27540), f_q)) +mstore(0x27580, mulmod(mload(0x8060), mload(0x27560), f_q)) +mstore(0x275a0, addmod(mload(0x15ce0), sub(f_q, mload(0x15cc0)), f_q)) +mstore(0x275c0, mulmod(mload(0x275a0), mload(0x195c0), f_q)) +mstore(0x275e0, addmod(mload(0x27580), mload(0x275c0), f_q)) +mstore(0x27600, mulmod(mload(0x8060), mload(0x275e0), f_q)) +mstore(0x27620, addmod(mload(0x15d40), sub(f_q, mload(0x15d20)), f_q)) +mstore(0x27640, mulmod(mload(0x27620), mload(0x195c0), f_q)) +mstore(0x27660, addmod(mload(0x27600), mload(0x27640), f_q)) +mstore(0x27680, mulmod(mload(0x8060), mload(0x27660), f_q)) +mstore(0x276a0, addmod(mload(0x15da0), sub(f_q, mload(0x15d80)), f_q)) +mstore(0x276c0, mulmod(mload(0x276a0), mload(0x195c0), f_q)) +mstore(0x276e0, addmod(mload(0x27680), mload(0x276c0), f_q)) +mstore(0x27700, mulmod(mload(0x8060), mload(0x276e0), f_q)) +mstore(0x27720, addmod(mload(0x15e00), sub(f_q, mload(0x15de0)), f_q)) +mstore(0x27740, mulmod(mload(0x27720), mload(0x195c0), f_q)) +mstore(0x27760, addmod(mload(0x27700), mload(0x27740), f_q)) +mstore(0x27780, mulmod(mload(0x8060), mload(0x27760), f_q)) +mstore(0x277a0, addmod(mload(0x15e60), sub(f_q, mload(0x15e40)), f_q)) +mstore(0x277c0, mulmod(mload(0x277a0), mload(0x195c0), f_q)) +mstore(0x277e0, addmod(mload(0x27780), mload(0x277c0), f_q)) +mstore(0x27800, mulmod(mload(0x8060), mload(0x277e0), f_q)) +mstore(0x27820, addmod(mload(0x15ec0), sub(f_q, mload(0x15ea0)), f_q)) +mstore(0x27840, mulmod(mload(0x27820), mload(0x195c0), f_q)) +mstore(0x27860, addmod(mload(0x27800), mload(0x27840), f_q)) +mstore(0x27880, mulmod(mload(0x8060), mload(0x27860), f_q)) +mstore(0x278a0, addmod(mload(0x15f20), sub(f_q, mload(0x15f00)), f_q)) +mstore(0x278c0, mulmod(mload(0x278a0), mload(0x195c0), f_q)) +mstore(0x278e0, addmod(mload(0x27880), mload(0x278c0), f_q)) +mstore(0x27900, mulmod(mload(0x8060), mload(0x278e0), f_q)) +mstore(0x27920, addmod(mload(0x15f80), sub(f_q, mload(0x15f60)), f_q)) +mstore(0x27940, mulmod(mload(0x27920), mload(0x195c0), f_q)) +mstore(0x27960, addmod(mload(0x27900), mload(0x27940), f_q)) +mstore(0x27980, mulmod(mload(0x8060), mload(0x27960), f_q)) +mstore(0x279a0, addmod(mload(0x15fe0), sub(f_q, mload(0x15fc0)), f_q)) +mstore(0x279c0, mulmod(mload(0x279a0), mload(0x195c0), f_q)) +mstore(0x279e0, addmod(mload(0x27980), mload(0x279c0), f_q)) +mstore(0x27a00, mulmod(mload(0x8060), mload(0x279e0), f_q)) +mstore(0x27a20, addmod(mload(0x16040), sub(f_q, mload(0x16020)), f_q)) +mstore(0x27a40, mulmod(mload(0x27a20), mload(0x195c0), f_q)) +mstore(0x27a60, addmod(mload(0x27a00), mload(0x27a40), f_q)) +mstore(0x27a80, mulmod(mload(0x8060), mload(0x27a60), f_q)) +mstore(0x27aa0, addmod(mload(0x160a0), sub(f_q, mload(0x16080)), f_q)) +mstore(0x27ac0, mulmod(mload(0x27aa0), mload(0x195c0), f_q)) +mstore(0x27ae0, addmod(mload(0x27a80), mload(0x27ac0), f_q)) +mstore(0x27b00, mulmod(mload(0x8060), mload(0x27ae0), f_q)) +mstore(0x27b20, addmod(mload(0x16100), sub(f_q, mload(0x160e0)), f_q)) +mstore(0x27b40, mulmod(mload(0x27b20), mload(0x195c0), f_q)) +mstore(0x27b60, addmod(mload(0x27b00), mload(0x27b40), f_q)) +mstore(0x27b80, mulmod(mload(0x8060), mload(0x27b60), f_q)) +mstore(0x27ba0, addmod(mload(0x16160), sub(f_q, mload(0x16140)), f_q)) +mstore(0x27bc0, mulmod(mload(0x27ba0), mload(0x195c0), f_q)) +mstore(0x27be0, addmod(mload(0x27b80), mload(0x27bc0), f_q)) +mstore(0x27c00, mulmod(mload(0x8060), mload(0x27be0), f_q)) +mstore(0x27c20, addmod(mload(0x161c0), sub(f_q, mload(0x161a0)), f_q)) +mstore(0x27c40, mulmod(mload(0x27c20), mload(0x195c0), f_q)) +mstore(0x27c60, addmod(mload(0x27c00), mload(0x27c40), f_q)) +mstore(0x27c80, mulmod(mload(0x8060), mload(0x27c60), f_q)) +mstore(0x27ca0, addmod(mload(0x16220), sub(f_q, mload(0x16200)), f_q)) +mstore(0x27cc0, mulmod(mload(0x27ca0), mload(0x195c0), f_q)) +mstore(0x27ce0, addmod(mload(0x27c80), mload(0x27cc0), f_q)) +mstore(0x27d00, mulmod(mload(0x8060), mload(0x27ce0), f_q)) +mstore(0x27d20, addmod(mload(0x16280), sub(f_q, mload(0x16260)), f_q)) +mstore(0x27d40, mulmod(mload(0x27d20), mload(0x195c0), f_q)) +mstore(0x27d60, addmod(mload(0x27d00), mload(0x27d40), f_q)) +mstore(0x27d80, mulmod(mload(0x8060), mload(0x27d60), f_q)) +mstore(0x27da0, addmod(mload(0x162e0), sub(f_q, mload(0x162c0)), f_q)) +mstore(0x27dc0, mulmod(mload(0x27da0), mload(0x195c0), f_q)) +mstore(0x27de0, addmod(mload(0x27d80), mload(0x27dc0), f_q)) +mstore(0x27e00, mulmod(mload(0x8060), mload(0x27de0), f_q)) +mstore(0x27e20, addmod(mload(0x16340), sub(f_q, mload(0x16320)), f_q)) +mstore(0x27e40, mulmod(mload(0x27e20), mload(0x195c0), f_q)) +mstore(0x27e60, addmod(mload(0x27e00), mload(0x27e40), f_q)) +mstore(0x27e80, mulmod(mload(0x8060), mload(0x27e60), f_q)) +mstore(0x27ea0, addmod(mload(0x163a0), sub(f_q, mload(0x16380)), f_q)) +mstore(0x27ec0, mulmod(mload(0x27ea0), mload(0x195c0), f_q)) +mstore(0x27ee0, addmod(mload(0x27e80), mload(0x27ec0), f_q)) +mstore(0x27f00, mulmod(mload(0x8060), mload(0x27ee0), f_q)) +mstore(0x27f20, addmod(mload(0x16400), sub(f_q, mload(0x163e0)), f_q)) +mstore(0x27f40, mulmod(mload(0x27f20), mload(0x195c0), f_q)) +mstore(0x27f60, addmod(mload(0x27f00), mload(0x27f40), f_q)) +mstore(0x27f80, mulmod(mload(0x8060), mload(0x27f60), f_q)) +mstore(0x27fa0, addmod(mload(0x16460), sub(f_q, mload(0x16440)), f_q)) +mstore(0x27fc0, mulmod(mload(0x27fa0), mload(0x195c0), f_q)) +mstore(0x27fe0, addmod(mload(0x27f80), mload(0x27fc0), f_q)) +mstore(0x28000, mulmod(mload(0x8060), mload(0x27fe0), f_q)) +mstore(0x28020, addmod(mload(0x164c0), sub(f_q, mload(0x164a0)), f_q)) +mstore(0x28040, mulmod(mload(0x28020), mload(0x195c0), f_q)) +mstore(0x28060, addmod(mload(0x28000), mload(0x28040), f_q)) +mstore(0x28080, mulmod(mload(0x8060), mload(0x28060), f_q)) +mstore(0x280a0, addmod(mload(0x16520), sub(f_q, mload(0x16500)), f_q)) +mstore(0x280c0, mulmod(mload(0x280a0), mload(0x195c0), f_q)) +mstore(0x280e0, addmod(mload(0x28080), mload(0x280c0), f_q)) +mstore(0x28100, mulmod(mload(0x8060), mload(0x280e0), f_q)) +mstore(0x28120, addmod(mload(0x16580), sub(f_q, mload(0x16560)), f_q)) +mstore(0x28140, mulmod(mload(0x28120), mload(0x195c0), f_q)) +mstore(0x28160, addmod(mload(0x28100), mload(0x28140), f_q)) +mstore(0x28180, mulmod(mload(0x8060), mload(0x28160), f_q)) +mstore(0x281a0, addmod(mload(0x165e0), sub(f_q, mload(0x165c0)), f_q)) +mstore(0x281c0, mulmod(mload(0x281a0), mload(0x195c0), f_q)) +mstore(0x281e0, addmod(mload(0x28180), mload(0x281c0), f_q)) +mstore(0x28200, mulmod(mload(0x8060), mload(0x281e0), f_q)) +mstore(0x28220, addmod(mload(0x16640), sub(f_q, mload(0x16620)), f_q)) +mstore(0x28240, mulmod(mload(0x28220), mload(0x195c0), f_q)) +mstore(0x28260, addmod(mload(0x28200), mload(0x28240), f_q)) +mstore(0x28280, mulmod(mload(0x8060), mload(0x28260), f_q)) +mstore(0x282a0, addmod(mload(0x166a0), sub(f_q, mload(0x16680)), f_q)) +mstore(0x282c0, mulmod(mload(0x282a0), mload(0x195c0), f_q)) +mstore(0x282e0, addmod(mload(0x28280), mload(0x282c0), f_q)) +mstore(0x28300, mulmod(mload(0x8060), mload(0x282e0), f_q)) +mstore(0x28320, addmod(mload(0x16700), sub(f_q, mload(0x166e0)), f_q)) +mstore(0x28340, mulmod(mload(0x28320), mload(0x195c0), f_q)) +mstore(0x28360, addmod(mload(0x28300), mload(0x28340), f_q)) +mstore(0x28380, mulmod(mload(0x8060), mload(0x28360), f_q)) +mstore(0x283a0, addmod(mload(0x16760), sub(f_q, mload(0x16740)), f_q)) +mstore(0x283c0, mulmod(mload(0x283a0), mload(0x195c0), f_q)) +mstore(0x283e0, addmod(mload(0x28380), mload(0x283c0), f_q)) +mstore(0x28400, mulmod(mload(0x8060), mload(0x283e0), f_q)) +mstore(0x28420, addmod(mload(0x167c0), sub(f_q, mload(0x167a0)), f_q)) +mstore(0x28440, mulmod(mload(0x28420), mload(0x195c0), f_q)) +mstore(0x28460, addmod(mload(0x28400), mload(0x28440), f_q)) +mstore(0x28480, mulmod(mload(0x8060), mload(0x28460), f_q)) +mstore(0x284a0, addmod(mload(0x16820), sub(f_q, mload(0x16800)), f_q)) +mstore(0x284c0, mulmod(mload(0x284a0), mload(0x195c0), f_q)) +mstore(0x284e0, addmod(mload(0x28480), mload(0x284c0), f_q)) +mstore(0x28500, mulmod(mload(0x8060), mload(0x284e0), f_q)) +mstore(0x28520, addmod(mload(0x16880), sub(f_q, mload(0x16860)), f_q)) +mstore(0x28540, mulmod(mload(0x28520), mload(0x195c0), f_q)) +mstore(0x28560, addmod(mload(0x28500), mload(0x28540), f_q)) +mstore(0x28580, mulmod(mload(0x8060), mload(0x28560), f_q)) +mstore(0x285a0, addmod(mload(0x168e0), sub(f_q, mload(0x168c0)), f_q)) +mstore(0x285c0, mulmod(mload(0x285a0), mload(0x195c0), f_q)) +mstore(0x285e0, addmod(mload(0x28580), mload(0x285c0), f_q)) +mstore(0x28600, mulmod(mload(0x8060), mload(0x285e0), f_q)) +mstore(0x28620, addmod(mload(0x16940), sub(f_q, mload(0x16920)), f_q)) +mstore(0x28640, mulmod(mload(0x28620), mload(0x195c0), f_q)) +mstore(0x28660, addmod(mload(0x28600), mload(0x28640), f_q)) +mstore(0x28680, mulmod(mload(0x8060), mload(0x28660), f_q)) +mstore(0x286a0, addmod(mload(0x169a0), sub(f_q, mload(0x16980)), f_q)) +mstore(0x286c0, mulmod(mload(0x286a0), mload(0x195c0), f_q)) +mstore(0x286e0, addmod(mload(0x28680), mload(0x286c0), f_q)) +mstore(0x28700, mulmod(mload(0x8060), mload(0x286e0), f_q)) +mstore(0x28720, addmod(mload(0x16a00), sub(f_q, mload(0x169e0)), f_q)) +mstore(0x28740, mulmod(mload(0x28720), mload(0x195c0), f_q)) +mstore(0x28760, addmod(mload(0x28700), mload(0x28740), f_q)) +mstore(0x28780, mulmod(mload(0x8060), mload(0x28760), f_q)) +mstore(0x287a0, addmod(mload(0x16a60), sub(f_q, mload(0x16a40)), f_q)) +mstore(0x287c0, mulmod(mload(0x287a0), mload(0x195c0), f_q)) +mstore(0x287e0, addmod(mload(0x28780), mload(0x287c0), f_q)) +mstore(0x28800, mulmod(mload(0x8060), mload(0x287e0), f_q)) +mstore(0x28820, addmod(mload(0x16ac0), sub(f_q, mload(0x16aa0)), f_q)) +mstore(0x28840, mulmod(mload(0x28820), mload(0x195c0), f_q)) +mstore(0x28860, addmod(mload(0x28800), mload(0x28840), f_q)) +mstore(0x28880, mulmod(mload(0x8060), mload(0x28860), f_q)) +mstore(0x288a0, addmod(mload(0x16b20), sub(f_q, mload(0x16b00)), f_q)) +mstore(0x288c0, mulmod(mload(0x288a0), mload(0x195c0), f_q)) +mstore(0x288e0, addmod(mload(0x28880), mload(0x288c0), f_q)) +mstore(0x28900, mulmod(mload(0x8060), mload(0x288e0), f_q)) +mstore(0x28920, addmod(mload(0x16b80), sub(f_q, mload(0x16b60)), f_q)) +mstore(0x28940, mulmod(mload(0x28920), mload(0x195c0), f_q)) +mstore(0x28960, addmod(mload(0x28900), mload(0x28940), f_q)) +mstore(0x28980, mulmod(mload(0x8060), mload(0x28960), f_q)) +mstore(0x289a0, addmod(mload(0x16be0), sub(f_q, mload(0x16bc0)), f_q)) +mstore(0x289c0, mulmod(mload(0x289a0), mload(0x195c0), f_q)) +mstore(0x289e0, addmod(mload(0x28980), mload(0x289c0), f_q)) +mstore(0x28a00, mulmod(mload(0x8060), mload(0x289e0), f_q)) +mstore(0x28a20, addmod(mload(0x16c40), sub(f_q, mload(0x16c20)), f_q)) +mstore(0x28a40, mulmod(mload(0x28a20), mload(0x195c0), f_q)) +mstore(0x28a60, addmod(mload(0x28a00), mload(0x28a40), f_q)) +mstore(0x28a80, mulmod(mload(0x8060), mload(0x28a60), f_q)) +mstore(0x28aa0, addmod(mload(0x16ca0), sub(f_q, mload(0x16c80)), f_q)) +mstore(0x28ac0, mulmod(mload(0x28aa0), mload(0x195c0), f_q)) +mstore(0x28ae0, addmod(mload(0x28a80), mload(0x28ac0), f_q)) +mstore(0x28b00, mulmod(mload(0x8060), mload(0x28ae0), f_q)) +mstore(0x28b20, addmod(mload(0x16d00), sub(f_q, mload(0x16ce0)), f_q)) +mstore(0x28b40, mulmod(mload(0x28b20), mload(0x195c0), f_q)) +mstore(0x28b60, addmod(mload(0x28b00), mload(0x28b40), f_q)) +mstore(0x28b80, mulmod(mload(0x8060), mload(0x28b60), f_q)) +mstore(0x28ba0, addmod(mload(0x16d60), sub(f_q, mload(0x16d40)), f_q)) +mstore(0x28bc0, mulmod(mload(0x28ba0), mload(0x195c0), f_q)) +mstore(0x28be0, addmod(mload(0x28b80), mload(0x28bc0), f_q)) +mstore(0x28c00, mulmod(mload(0x8060), mload(0x28be0), f_q)) +mstore(0x28c20, addmod(mload(0x16dc0), sub(f_q, mload(0x16da0)), f_q)) +mstore(0x28c40, mulmod(mload(0x28c20), mload(0x195c0), f_q)) +mstore(0x28c60, addmod(mload(0x28c00), mload(0x28c40), f_q)) +mstore(0x28c80, mulmod(mload(0x8060), mload(0x28c60), f_q)) +mstore(0x28ca0, addmod(mload(0x16e20), sub(f_q, mload(0x16e00)), f_q)) +mstore(0x28cc0, mulmod(mload(0x28ca0), mload(0x195c0), f_q)) +mstore(0x28ce0, addmod(mload(0x28c80), mload(0x28cc0), f_q)) +mstore(0x28d00, mulmod(mload(0x8060), mload(0x28ce0), f_q)) +mstore(0x28d20, addmod(mload(0x16e80), sub(f_q, mload(0x16e60)), f_q)) +mstore(0x28d40, mulmod(mload(0x28d20), mload(0x195c0), f_q)) +mstore(0x28d60, addmod(mload(0x28d00), mload(0x28d40), f_q)) +mstore(0x28d80, mulmod(mload(0x8060), mload(0x28d60), f_q)) +mstore(0x28da0, addmod(mload(0x16ee0), sub(f_q, mload(0x16ec0)), f_q)) +mstore(0x28dc0, mulmod(mload(0x28da0), mload(0x195c0), f_q)) +mstore(0x28de0, addmod(mload(0x28d80), mload(0x28dc0), f_q)) +mstore(0x28e00, mulmod(mload(0x8060), mload(0x28de0), f_q)) +mstore(0x28e20, addmod(mload(0x16f40), sub(f_q, mload(0x16f20)), f_q)) +mstore(0x28e40, mulmod(mload(0x28e20), mload(0x195c0), f_q)) +mstore(0x28e60, addmod(mload(0x28e00), mload(0x28e40), f_q)) +mstore(0x28e80, mulmod(mload(0x8060), mload(0x28e60), f_q)) +mstore(0x28ea0, addmod(mload(0x16fa0), sub(f_q, mload(0x16f80)), f_q)) +mstore(0x28ec0, mulmod(mload(0x28ea0), mload(0x195c0), f_q)) +mstore(0x28ee0, addmod(mload(0x28e80), mload(0x28ec0), f_q)) +mstore(0x28f00, mulmod(mload(0x8060), mload(0x28ee0), f_q)) +mstore(0x28f20, addmod(mload(0x17000), sub(f_q, mload(0x16fe0)), f_q)) +mstore(0x28f40, mulmod(mload(0x28f20), mload(0x195c0), f_q)) +mstore(0x28f60, addmod(mload(0x28f00), mload(0x28f40), f_q)) +mstore(0x28f80, mulmod(mload(0x8060), mload(0x28f60), f_q)) +mstore(0x28fa0, addmod(mload(0x17060), sub(f_q, mload(0x17040)), f_q)) +mstore(0x28fc0, mulmod(mload(0x28fa0), mload(0x195c0), f_q)) +mstore(0x28fe0, addmod(mload(0x28f80), mload(0x28fc0), f_q)) +mstore(0x29000, mulmod(mload(0x8060), mload(0x28fe0), f_q)) +mstore(0x29020, addmod(mload(0x170c0), sub(f_q, mload(0x170a0)), f_q)) +mstore(0x29040, mulmod(mload(0x29020), mload(0x195c0), f_q)) +mstore(0x29060, addmod(mload(0x29000), mload(0x29040), f_q)) +mstore(0x29080, mulmod(mload(0x8060), mload(0x29060), f_q)) +mstore(0x290a0, addmod(mload(0x17120), sub(f_q, mload(0x17100)), f_q)) +mstore(0x290c0, mulmod(mload(0x290a0), mload(0x195c0), f_q)) +mstore(0x290e0, addmod(mload(0x29080), mload(0x290c0), f_q)) +mstore(0x29100, mulmod(mload(0x8060), mload(0x290e0), f_q)) +mstore(0x29120, addmod(mload(0x17180), sub(f_q, mload(0x17160)), f_q)) +mstore(0x29140, mulmod(mload(0x29120), mload(0x195c0), f_q)) +mstore(0x29160, addmod(mload(0x29100), mload(0x29140), f_q)) +mstore(0x29180, mulmod(mload(0x8060), mload(0x29160), f_q)) +mstore(0x291a0, addmod(mload(0x171e0), sub(f_q, mload(0x171c0)), f_q)) +mstore(0x291c0, mulmod(mload(0x291a0), mload(0x195c0), f_q)) +mstore(0x291e0, addmod(mload(0x29180), mload(0x291c0), f_q)) +mstore(0x29200, mulmod(mload(0x8060), mload(0x291e0), f_q)) +mstore(0x29220, addmod(mload(0x17240), sub(f_q, mload(0x17220)), f_q)) +mstore(0x29240, mulmod(mload(0x29220), mload(0x195c0), f_q)) +mstore(0x29260, addmod(mload(0x29200), mload(0x29240), f_q)) +mstore(0x29280, mulmod(mload(0x8060), mload(0x29260), f_q)) +mstore(0x292a0, addmod(mload(0x172a0), sub(f_q, mload(0x17280)), f_q)) +mstore(0x292c0, mulmod(mload(0x292a0), mload(0x195c0), f_q)) +mstore(0x292e0, addmod(mload(0x29280), mload(0x292c0), f_q)) +mstore(0x29300, mulmod(mload(0x8060), mload(0x292e0), f_q)) +mstore(0x29320, addmod(mload(0x17300), sub(f_q, mload(0x172e0)), f_q)) +mstore(0x29340, mulmod(mload(0x29320), mload(0x195c0), f_q)) +mstore(0x29360, addmod(mload(0x29300), mload(0x29340), f_q)) +mstore(0x29380, mulmod(mload(0x8060), mload(0x29360), f_q)) +mstore(0x293a0, addmod(mload(0x17360), sub(f_q, mload(0x17340)), f_q)) +mstore(0x293c0, mulmod(mload(0x293a0), mload(0x195c0), f_q)) +mstore(0x293e0, addmod(mload(0x29380), mload(0x293c0), f_q)) +mstore(0x29400, mulmod(mload(0x8060), mload(0x293e0), f_q)) +mstore(0x29420, addmod(mload(0x173c0), sub(f_q, mload(0x173a0)), f_q)) +mstore(0x29440, mulmod(mload(0x29420), mload(0x195c0), f_q)) +mstore(0x29460, addmod(mload(0x29400), mload(0x29440), f_q)) +mstore(0x29480, mulmod(mload(0x8060), mload(0x29460), f_q)) +mstore(0x294a0, addmod(mload(0x17420), sub(f_q, mload(0x17400)), f_q)) +mstore(0x294c0, mulmod(mload(0x294a0), mload(0x195c0), f_q)) +mstore(0x294e0, addmod(mload(0x29480), mload(0x294c0), f_q)) +mstore(0x29500, mulmod(mload(0x8060), mload(0x294e0), f_q)) +mstore(0x29520, addmod(mload(0x17480), sub(f_q, mload(0x17460)), f_q)) +mstore(0x29540, mulmod(mload(0x29520), mload(0x195c0), f_q)) +mstore(0x29560, addmod(mload(0x29500), mload(0x29540), f_q)) +mstore(0x29580, mulmod(mload(0x8060), mload(0x29560), f_q)) +mstore(0x295a0, addmod(mload(0x174e0), sub(f_q, mload(0x174c0)), f_q)) +mstore(0x295c0, mulmod(mload(0x295a0), mload(0x195c0), f_q)) +mstore(0x295e0, addmod(mload(0x29580), mload(0x295c0), f_q)) +mstore(0x29600, mulmod(mload(0x8060), mload(0x295e0), f_q)) +mstore(0x29620, addmod(mload(0x17540), sub(f_q, mload(0x17520)), f_q)) +mstore(0x29640, mulmod(mload(0x29620), mload(0x195c0), f_q)) +mstore(0x29660, addmod(mload(0x29600), mload(0x29640), f_q)) +mstore(0x29680, mulmod(mload(0x8060), mload(0x29660), f_q)) +mstore(0x296a0, addmod(mload(0x175a0), sub(f_q, mload(0x17580)), f_q)) +mstore(0x296c0, mulmod(mload(0x296a0), mload(0x195c0), f_q)) +mstore(0x296e0, addmod(mload(0x29680), mload(0x296c0), f_q)) +mstore(0x29700, mulmod(mload(0x8060), mload(0x296e0), f_q)) +mstore(0x29720, addmod(mload(0x17600), sub(f_q, mload(0x175e0)), f_q)) +mstore(0x29740, mulmod(mload(0x29720), mload(0x195c0), f_q)) +mstore(0x29760, addmod(mload(0x29700), mload(0x29740), f_q)) +mstore(0x29780, mulmod(mload(0x8060), mload(0x29760), f_q)) +mstore(0x297a0, addmod(1, sub(f_q, mload(0x194e0)), f_q)) +mstore(0x297c0, addmod(mload(0x19500), mload(0x19520), f_q)) +mstore(0x297e0, addmod(mload(0x297c0), mload(0x19540), f_q)) +mstore(0x29800, addmod(mload(0x297e0), mload(0x19560), f_q)) +mstore(0x29820, addmod(mload(0x29800), mload(0x19580), f_q)) +mstore(0x29840, addmod(mload(0x29820), mload(0x195a0), f_q)) +mstore(0x29860, addmod(mload(0x297a0), sub(f_q, mload(0x29840)), f_q)) +mstore(0x29880, mulmod(mload(0x11ee0), mload(0x5520), f_q)) +mstore(0x298a0, addmod(mload(0xffe0), mload(0x29880), f_q)) +mstore(0x298c0, addmod(mload(0x298a0), mload(0x5580), f_q)) +mstore(0x298e0, mulmod(mload(0x11f00), mload(0x5520), f_q)) +mstore(0x29900, addmod(mload(0x10000), mload(0x298e0), f_q)) +mstore(0x29920, addmod(mload(0x29900), mload(0x5580), f_q)) +mstore(0x29940, mulmod(mload(0x29920), mload(0x298c0), f_q)) +mstore(0x29960, mulmod(mload(0x29940), mload(0x14200), f_q)) +mstore(0x29980, mulmod(1, mload(0x5520), f_q)) +mstore(0x299a0, mulmod(mload(0x8180), mload(0x29980), f_q)) +mstore(0x299c0, addmod(mload(0xffe0), mload(0x299a0), f_q)) +mstore(0x299e0, addmod(mload(0x299c0), mload(0x5580), f_q)) +mstore(0x29a00, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x5520), f_q)) +mstore(0x29a20, mulmod(mload(0x8180), mload(0x29a00), f_q)) +mstore(0x29a40, addmod(mload(0x10000), mload(0x29a20), f_q)) +mstore(0x29a60, addmod(mload(0x29a40), mload(0x5580), f_q)) +mstore(0x29a80, mulmod(mload(0x29a60), mload(0x299e0), f_q)) +mstore(0x29aa0, mulmod(mload(0x29a80), mload(0x141e0), f_q)) +mstore(0x29ac0, addmod(mload(0x29960), sub(f_q, mload(0x29aa0)), f_q)) +mstore(0x29ae0, mulmod(mload(0x29ac0), mload(0x29860), f_q)) +mstore(0x29b00, addmod(mload(0x29780), mload(0x29ae0), f_q)) +mstore(0x29b20, mulmod(mload(0x8060), mload(0x29b00), f_q)) +mstore(0x29b40, mulmod(mload(0x11f20), mload(0x5520), f_q)) +mstore(0x29b60, addmod(mload(0x10020), mload(0x29b40), f_q)) +mstore(0x29b80, addmod(mload(0x29b60), mload(0x5580), f_q)) +mstore(0x29ba0, mulmod(mload(0x11f40), mload(0x5520), f_q)) +mstore(0x29bc0, addmod(mload(0x10040), mload(0x29ba0), f_q)) +mstore(0x29be0, addmod(mload(0x29bc0), mload(0x5580), f_q)) +mstore(0x29c00, mulmod(mload(0x29be0), mload(0x29b80), f_q)) +mstore(0x29c20, mulmod(mload(0x29c00), mload(0x14260), f_q)) +mstore(0x29c40, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x5520), f_q)) +mstore(0x29c60, mulmod(mload(0x8180), mload(0x29c40), f_q)) +mstore(0x29c80, addmod(mload(0x10020), mload(0x29c60), f_q)) +mstore(0x29ca0, addmod(mload(0x29c80), mload(0x5580), f_q)) +mstore(0x29cc0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x5520), f_q)) +mstore(0x29ce0, mulmod(mload(0x8180), mload(0x29cc0), f_q)) +mstore(0x29d00, addmod(mload(0x10040), mload(0x29ce0), f_q)) +mstore(0x29d20, addmod(mload(0x29d00), mload(0x5580), f_q)) +mstore(0x29d40, mulmod(mload(0x29d20), mload(0x29ca0), f_q)) +mstore(0x29d60, mulmod(mload(0x29d40), mload(0x14240), f_q)) +mstore(0x29d80, addmod(mload(0x29c20), sub(f_q, mload(0x29d60)), f_q)) +mstore(0x29da0, mulmod(mload(0x29d80), mload(0x29860), f_q)) +mstore(0x29dc0, addmod(mload(0x29b20), mload(0x29da0), f_q)) +mstore(0x29de0, mulmod(mload(0x8060), mload(0x29dc0), f_q)) +mstore(0x29e00, mulmod(mload(0x11f60), mload(0x5520), f_q)) +mstore(0x29e20, addmod(mload(0x10060), mload(0x29e00), f_q)) +mstore(0x29e40, addmod(mload(0x29e20), mload(0x5580), f_q)) +mstore(0x29e60, mulmod(mload(0x11f80), mload(0x5520), f_q)) +mstore(0x29e80, addmod(mload(0x81c0), mload(0x29e60), f_q)) +mstore(0x29ea0, addmod(mload(0x29e80), mload(0x5580), f_q)) +mstore(0x29ec0, mulmod(mload(0x29ea0), mload(0x29e40), f_q)) +mstore(0x29ee0, mulmod(mload(0x29ec0), mload(0x142c0), f_q)) +mstore(0x29f00, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x5520), f_q)) +mstore(0x29f20, mulmod(mload(0x8180), mload(0x29f00), f_q)) +mstore(0x29f40, addmod(mload(0x10060), mload(0x29f20), f_q)) +mstore(0x29f60, addmod(mload(0x29f40), mload(0x5580), f_q)) +mstore(0x29f80, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x5520), f_q)) +mstore(0x29fa0, mulmod(mload(0x8180), mload(0x29f80), f_q)) +mstore(0x29fc0, addmod(mload(0x81c0), mload(0x29fa0), f_q)) +mstore(0x29fe0, addmod(mload(0x29fc0), mload(0x5580), f_q)) +mstore(0x2a000, mulmod(mload(0x29fe0), mload(0x29f60), f_q)) +mstore(0x2a020, mulmod(mload(0x2a000), mload(0x142a0), f_q)) +mstore(0x2a040, addmod(mload(0x29ee0), sub(f_q, mload(0x2a020)), f_q)) +mstore(0x2a060, mulmod(mload(0x2a040), mload(0x29860), f_q)) +mstore(0x2a080, addmod(mload(0x29de0), mload(0x2a060), f_q)) +mstore(0x2a0a0, mulmod(mload(0x8060), mload(0x2a080), f_q)) +mstore(0x2a0c0, mulmod(mload(0x11fa0), mload(0x5520), f_q)) +mstore(0x2a0e0, addmod(mload(0x8240), mload(0x2a0c0), f_q)) +mstore(0x2a100, addmod(mload(0x2a0e0), mload(0x5580), f_q)) +mstore(0x2a120, mulmod(mload(0x11fc0), mload(0x5520), f_q)) +mstore(0x2a140, addmod(mload(0x82c0), mload(0x2a120), f_q)) +mstore(0x2a160, addmod(mload(0x2a140), mload(0x5580), f_q)) +mstore(0x2a180, mulmod(mload(0x2a160), mload(0x2a100), f_q)) +mstore(0x2a1a0, mulmod(mload(0x2a180), mload(0x14320), f_q)) +mstore(0x2a1c0, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x5520), f_q)) +mstore(0x2a1e0, mulmod(mload(0x8180), mload(0x2a1c0), f_q)) +mstore(0x2a200, addmod(mload(0x8240), mload(0x2a1e0), f_q)) +mstore(0x2a220, addmod(mload(0x2a200), mload(0x5580), f_q)) +mstore(0x2a240, mulmod(14704729814417906439424896605881467874595262020190401576785074330126828718155, mload(0x5520), f_q)) +mstore(0x2a260, mulmod(mload(0x8180), mload(0x2a240), f_q)) +mstore(0x2a280, addmod(mload(0x82c0), mload(0x2a260), f_q)) +mstore(0x2a2a0, addmod(mload(0x2a280), mload(0x5580), f_q)) +mstore(0x2a2c0, mulmod(mload(0x2a2a0), mload(0x2a220), f_q)) +mstore(0x2a2e0, mulmod(mload(0x2a2c0), mload(0x14300), f_q)) +mstore(0x2a300, addmod(mload(0x2a1a0), sub(f_q, mload(0x2a2e0)), f_q)) +mstore(0x2a320, mulmod(mload(0x2a300), mload(0x29860), f_q)) +mstore(0x2a340, addmod(mload(0x2a0a0), mload(0x2a320), f_q)) +mstore(0x2a360, mulmod(mload(0x8060), mload(0x2a340), f_q)) +mstore(0x2a380, mulmod(mload(0x11fe0), mload(0x5520), f_q)) +mstore(0x2a3a0, addmod(mload(0x8340), mload(0x2a380), f_q)) +mstore(0x2a3c0, addmod(mload(0x2a3a0), mload(0x5580), f_q)) +mstore(0x2a3e0, mulmod(mload(0x12000), mload(0x5520), f_q)) +mstore(0x2a400, addmod(mload(0x83c0), mload(0x2a3e0), f_q)) +mstore(0x2a420, addmod(mload(0x2a400), mload(0x5580), f_q)) +mstore(0x2a440, mulmod(mload(0x2a420), mload(0x2a3c0), f_q)) +mstore(0x2a460, mulmod(mload(0x2a440), mload(0x14380), f_q)) +mstore(0x2a480, mulmod(8343274462013750416000956870576256937330525306073862550863787263304548803879, mload(0x5520), f_q)) +mstore(0x2a4a0, mulmod(mload(0x8180), mload(0x2a480), f_q)) +mstore(0x2a4c0, addmod(mload(0x8340), mload(0x2a4a0), f_q)) +mstore(0x2a4e0, addmod(mload(0x2a4c0), mload(0x5580), f_q)) +mstore(0x2a500, mulmod(20928372310071051017340352686640453451620397549739756658327314209761852842004, mload(0x5520), f_q)) +mstore(0x2a520, mulmod(mload(0x8180), mload(0x2a500), f_q)) +mstore(0x2a540, addmod(mload(0x83c0), mload(0x2a520), f_q)) +mstore(0x2a560, addmod(mload(0x2a540), mload(0x5580), f_q)) +mstore(0x2a580, mulmod(mload(0x2a560), mload(0x2a4e0), f_q)) +mstore(0x2a5a0, mulmod(mload(0x2a580), mload(0x14360), f_q)) +mstore(0x2a5c0, addmod(mload(0x2a460), sub(f_q, mload(0x2a5a0)), f_q)) +mstore(0x2a5e0, mulmod(mload(0x2a5c0), mload(0x29860), f_q)) +mstore(0x2a600, addmod(mload(0x2a360), mload(0x2a5e0), f_q)) +mstore(0x2a620, mulmod(mload(0x8060), mload(0x2a600), f_q)) +mstore(0x2a640, mulmod(mload(0x12020), mload(0x5520), f_q)) +mstore(0x2a660, addmod(mload(0x8440), mload(0x2a640), f_q)) +mstore(0x2a680, addmod(mload(0x2a660), mload(0x5580), f_q)) +mstore(0x2a6a0, mulmod(mload(0x12040), mload(0x5520), f_q)) +mstore(0x2a6c0, addmod(mload(0x84c0), mload(0x2a6a0), f_q)) +mstore(0x2a6e0, addmod(mload(0x2a6c0), mload(0x5580), f_q)) +mstore(0x2a700, mulmod(mload(0x2a6e0), mload(0x2a680), f_q)) +mstore(0x2a720, mulmod(mload(0x2a700), mload(0x143e0), f_q)) +mstore(0x2a740, mulmod(15845651941796975697993789271154426079663327509658641548785793587449119139335, mload(0x5520), f_q)) +mstore(0x2a760, mulmod(mload(0x8180), mload(0x2a740), f_q)) +mstore(0x2a780, addmod(mload(0x8440), mload(0x2a760), f_q)) +mstore(0x2a7a0, addmod(mload(0x2a780), mload(0x5580), f_q)) +mstore(0x2a7c0, mulmod(8045145839887181143520022567602912517500076612542816225981084745629998235872, mload(0x5520), f_q)) +mstore(0x2a7e0, mulmod(mload(0x8180), mload(0x2a7c0), f_q)) +mstore(0x2a800, addmod(mload(0x84c0), mload(0x2a7e0), f_q)) +mstore(0x2a820, addmod(mload(0x2a800), mload(0x5580), f_q)) +mstore(0x2a840, mulmod(mload(0x2a820), mload(0x2a7a0), f_q)) +mstore(0x2a860, mulmod(mload(0x2a840), mload(0x143c0), f_q)) +mstore(0x2a880, addmod(mload(0x2a720), sub(f_q, mload(0x2a860)), f_q)) +mstore(0x2a8a0, mulmod(mload(0x2a880), mload(0x29860), f_q)) +mstore(0x2a8c0, addmod(mload(0x2a620), mload(0x2a8a0), f_q)) +mstore(0x2a8e0, mulmod(mload(0x8060), mload(0x2a8c0), f_q)) +mstore(0x2a900, mulmod(mload(0x12060), mload(0x5520), f_q)) +mstore(0x2a920, addmod(mload(0x8540), mload(0x2a900), f_q)) +mstore(0x2a940, addmod(mload(0x2a920), mload(0x5580), f_q)) +mstore(0x2a960, mulmod(mload(0x12080), mload(0x5520), f_q)) +mstore(0x2a980, addmod(mload(0x85c0), mload(0x2a960), f_q)) +mstore(0x2a9a0, addmod(mload(0x2a980), mload(0x5580), f_q)) +mstore(0x2a9c0, mulmod(mload(0x2a9a0), mload(0x2a940), f_q)) +mstore(0x2a9e0, mulmod(mload(0x2a9c0), mload(0x14440), f_q)) +mstore(0x2aa00, mulmod(2381670505483685611182091218417223919364072893694444758025506701602682587318, mload(0x5520), f_q)) +mstore(0x2aa20, mulmod(mload(0x8180), mload(0x2aa00), f_q)) +mstore(0x2aa40, addmod(mload(0x8540), mload(0x2aa20), f_q)) +mstore(0x2aa60, addmod(mload(0x2aa40), mload(0x5580), f_q)) +mstore(0x2aa80, mulmod(7687930163830757070113631199804839025806810462573557873219800755854393200610, mload(0x5520), f_q)) +mstore(0x2aaa0, mulmod(mload(0x8180), mload(0x2aa80), f_q)) +mstore(0x2aac0, addmod(mload(0x85c0), mload(0x2aaa0), f_q)) +mstore(0x2aae0, addmod(mload(0x2aac0), mload(0x5580), f_q)) +mstore(0x2ab00, mulmod(mload(0x2aae0), mload(0x2aa60), f_q)) +mstore(0x2ab20, mulmod(mload(0x2ab00), mload(0x14420), f_q)) +mstore(0x2ab40, addmod(mload(0x2a9e0), sub(f_q, mload(0x2ab20)), f_q)) +mstore(0x2ab60, mulmod(mload(0x2ab40), mload(0x29860), f_q)) +mstore(0x2ab80, addmod(mload(0x2a8e0), mload(0x2ab60), f_q)) +mstore(0x2aba0, mulmod(mload(0x8060), mload(0x2ab80), f_q)) +mstore(0x2abc0, mulmod(mload(0x120a0), mload(0x5520), f_q)) +mstore(0x2abe0, addmod(mload(0x8640), mload(0x2abc0), f_q)) +mstore(0x2ac00, addmod(mload(0x2abe0), mload(0x5580), f_q)) +mstore(0x2ac20, mulmod(mload(0x120c0), mload(0x5520), f_q)) +mstore(0x2ac40, addmod(mload(0x86c0), mload(0x2ac20), f_q)) +mstore(0x2ac60, addmod(mload(0x2ac40), mload(0x5580), f_q)) +mstore(0x2ac80, mulmod(mload(0x2ac60), mload(0x2ac00), f_q)) +mstore(0x2aca0, mulmod(mload(0x2ac80), mload(0x144a0), f_q)) +mstore(0x2acc0, mulmod(18841374007583180662637314443453732245933177918185782718371124070078050062475, mload(0x5520), f_q)) +mstore(0x2ace0, mulmod(mload(0x8180), mload(0x2acc0), f_q)) +mstore(0x2ad00, addmod(mload(0x8640), mload(0x2ace0), f_q)) +mstore(0x2ad20, addmod(mload(0x2ad00), mload(0x5580), f_q)) +mstore(0x2ad40, mulmod(19197752132381552471349846071531569266256022960372343424487157777415058628365, mload(0x5520), f_q)) +mstore(0x2ad60, mulmod(mload(0x8180), mload(0x2ad40), f_q)) +mstore(0x2ad80, addmod(mload(0x86c0), mload(0x2ad60), f_q)) +mstore(0x2ada0, addmod(mload(0x2ad80), mload(0x5580), f_q)) +mstore(0x2adc0, mulmod(mload(0x2ada0), mload(0x2ad20), f_q)) +mstore(0x2ade0, mulmod(mload(0x2adc0), mload(0x14480), f_q)) +mstore(0x2ae00, addmod(mload(0x2aca0), sub(f_q, mload(0x2ade0)), f_q)) +mstore(0x2ae20, mulmod(mload(0x2ae00), mload(0x29860), f_q)) +mstore(0x2ae40, addmod(mload(0x2aba0), mload(0x2ae20), f_q)) +mstore(0x2ae60, mulmod(mload(0x8060), mload(0x2ae40), f_q)) +mstore(0x2ae80, mulmod(mload(0x120e0), mload(0x5520), f_q)) +mstore(0x2aea0, addmod(mload(0x8740), mload(0x2ae80), f_q)) +mstore(0x2aec0, addmod(mload(0x2aea0), mload(0x5580), f_q)) +mstore(0x2aee0, mulmod(mload(0x12100), mload(0x5520), f_q)) +mstore(0x2af00, addmod(mload(0x87c0), mload(0x2aee0), f_q)) +mstore(0x2af20, addmod(mload(0x2af00), mload(0x5580), f_q)) +mstore(0x2af40, mulmod(mload(0x2af20), mload(0x2aec0), f_q)) +mstore(0x2af60, mulmod(mload(0x2af40), mload(0x14500), f_q)) +mstore(0x2af80, mulmod(4107547195958811607586128047858595978395981384383810616480821684720783343476, mload(0x5520), f_q)) +mstore(0x2afa0, mulmod(mload(0x8180), mload(0x2af80), f_q)) +mstore(0x2afc0, addmod(mload(0x8740), mload(0x2afa0), f_q)) +mstore(0x2afe0, addmod(mload(0x2afc0), mload(0x5580), f_q)) +mstore(0x2b000, mulmod(13564642984573314542683510780499048133657656300857957395232929436066953511694, mload(0x5520), f_q)) +mstore(0x2b020, mulmod(mload(0x8180), mload(0x2b000), f_q)) +mstore(0x2b040, addmod(mload(0x87c0), mload(0x2b020), f_q)) +mstore(0x2b060, addmod(mload(0x2b040), mload(0x5580), f_q)) +mstore(0x2b080, mulmod(mload(0x2b060), mload(0x2afe0), f_q)) +mstore(0x2b0a0, mulmod(mload(0x2b080), mload(0x144e0), f_q)) +mstore(0x2b0c0, addmod(mload(0x2af60), sub(f_q, mload(0x2b0a0)), f_q)) +mstore(0x2b0e0, mulmod(mload(0x2b0c0), mload(0x29860), f_q)) +mstore(0x2b100, addmod(mload(0x2ae60), mload(0x2b0e0), f_q)) +mstore(0x2b120, mulmod(mload(0x8060), mload(0x2b100), f_q)) +mstore(0x2b140, mulmod(mload(0x12120), mload(0x5520), f_q)) +mstore(0x2b160, addmod(mload(0x8840), mload(0x2b140), f_q)) +mstore(0x2b180, addmod(mload(0x2b160), mload(0x5580), f_q)) +mstore(0x2b1a0, mulmod(mload(0x12140), mload(0x5520), f_q)) +mstore(0x2b1c0, addmod(mload(0x88c0), mload(0x2b1a0), f_q)) +mstore(0x2b1e0, addmod(mload(0x2b1c0), mload(0x5580), f_q)) +mstore(0x2b200, mulmod(mload(0x2b1e0), mload(0x2b180), f_q)) +mstore(0x2b220, mulmod(mload(0x2b200), mload(0x14560), f_q)) +mstore(0x2b240, mulmod(13613576618463984615987010477140414706703336142901358713038085451220811690793, mload(0x5520), f_q)) +mstore(0x2b260, mulmod(mload(0x8180), mload(0x2b240), f_q)) +mstore(0x2b280, addmod(mload(0x8840), mload(0x2b260), f_q)) +mstore(0x2b2a0, addmod(mload(0x2b280), mload(0x5580), f_q)) +mstore(0x2b2c0, mulmod(9622370733693466968027131946194818623199083572654659861265818790460803870144, mload(0x5520), f_q)) +mstore(0x2b2e0, mulmod(mload(0x8180), mload(0x2b2c0), f_q)) +mstore(0x2b300, addmod(mload(0x88c0), mload(0x2b2e0), f_q)) +mstore(0x2b320, addmod(mload(0x2b300), mload(0x5580), f_q)) +mstore(0x2b340, mulmod(mload(0x2b320), mload(0x2b2a0), f_q)) +mstore(0x2b360, mulmod(mload(0x2b340), mload(0x14540), f_q)) +mstore(0x2b380, addmod(mload(0x2b220), sub(f_q, mload(0x2b360)), f_q)) +mstore(0x2b3a0, mulmod(mload(0x2b380), mload(0x29860), f_q)) +mstore(0x2b3c0, addmod(mload(0x2b120), mload(0x2b3a0), f_q)) +mstore(0x2b3e0, mulmod(mload(0x8060), mload(0x2b3c0), f_q)) +mstore(0x2b400, mulmod(mload(0x12160), mload(0x5520), f_q)) +mstore(0x2b420, addmod(mload(0x8940), mload(0x2b400), f_q)) +mstore(0x2b440, addmod(mload(0x2b420), mload(0x5580), f_q)) +mstore(0x2b460, mulmod(mload(0x12180), mload(0x5520), f_q)) +mstore(0x2b480, addmod(mload(0x89c0), mload(0x2b460), f_q)) +mstore(0x2b4a0, addmod(mload(0x2b480), mload(0x5580), f_q)) +mstore(0x2b4c0, mulmod(mload(0x2b4a0), mload(0x2b440), f_q)) +mstore(0x2b4e0, mulmod(mload(0x2b4c0), mload(0x145c0), f_q)) +mstore(0x2b500, mulmod(18626111036309077194167943991502496230251336547212650850189423162939397664427, mload(0x5520), f_q)) +mstore(0x2b520, mulmod(mload(0x8180), mload(0x2b500), f_q)) +mstore(0x2b540, addmod(mload(0x8940), mload(0x2b520), f_q)) +mstore(0x2b560, addmod(mload(0x2b540), mload(0x5580), f_q)) +mstore(0x2b580, mulmod(18927387919977651356001004808404348904064135541704947183932503905108716786826, mload(0x5520), f_q)) +mstore(0x2b5a0, mulmod(mload(0x8180), mload(0x2b580), f_q)) +mstore(0x2b5c0, addmod(mload(0x89c0), mload(0x2b5a0), f_q)) +mstore(0x2b5e0, addmod(mload(0x2b5c0), mload(0x5580), f_q)) +mstore(0x2b600, mulmod(mload(0x2b5e0), mload(0x2b560), f_q)) +mstore(0x2b620, mulmod(mload(0x2b600), mload(0x145a0), f_q)) +mstore(0x2b640, addmod(mload(0x2b4e0), sub(f_q, mload(0x2b620)), f_q)) +mstore(0x2b660, mulmod(mload(0x2b640), mload(0x29860), f_q)) +mstore(0x2b680, addmod(mload(0x2b3e0), mload(0x2b660), f_q)) +mstore(0x2b6a0, mulmod(mload(0x8060), mload(0x2b680), f_q)) +mstore(0x2b6c0, mulmod(mload(0x121a0), mload(0x5520), f_q)) +mstore(0x2b6e0, addmod(mload(0x8a40), mload(0x2b6c0), f_q)) +mstore(0x2b700, addmod(mload(0x2b6e0), mload(0x5580), f_q)) +mstore(0x2b720, mulmod(mload(0x121c0), mload(0x5520), f_q)) +mstore(0x2b740, addmod(mload(0x8ac0), mload(0x2b720), f_q)) +mstore(0x2b760, addmod(mload(0x2b740), mload(0x5580), f_q)) +mstore(0x2b780, mulmod(mload(0x2b760), mload(0x2b700), f_q)) +mstore(0x2b7a0, mulmod(mload(0x2b780), mload(0x14620), f_q)) +mstore(0x2b7c0, mulmod(7804796917526052625593875692382519354165159678502462229810454190718346984926, mload(0x5520), f_q)) +mstore(0x2b7e0, mulmod(mload(0x8180), mload(0x2b7c0), f_q)) +mstore(0x2b800, addmod(mload(0x8a40), mload(0x2b7e0), f_q)) +mstore(0x2b820, addmod(mload(0x2b800), mload(0x5580), f_q)) +mstore(0x2b840, mulmod(3747172222523987354785320406972290682523618221112915484562907750320038756890, mload(0x5520), f_q)) +mstore(0x2b860, mulmod(mload(0x8180), mload(0x2b840), f_q)) +mstore(0x2b880, addmod(mload(0x8ac0), mload(0x2b860), f_q)) +mstore(0x2b8a0, addmod(mload(0x2b880), mload(0x5580), f_q)) +mstore(0x2b8c0, mulmod(mload(0x2b8a0), mload(0x2b820), f_q)) +mstore(0x2b8e0, mulmod(mload(0x2b8c0), mload(0x14600), f_q)) +mstore(0x2b900, addmod(mload(0x2b7a0), sub(f_q, mload(0x2b8e0)), f_q)) +mstore(0x2b920, mulmod(mload(0x2b900), mload(0x29860), f_q)) +mstore(0x2b940, addmod(mload(0x2b6a0), mload(0x2b920), f_q)) +mstore(0x2b960, mulmod(mload(0x8060), mload(0x2b940), f_q)) +mstore(0x2b980, mulmod(mload(0x121e0), mload(0x5520), f_q)) +mstore(0x2b9a0, addmod(mload(0x8b40), mload(0x2b980), f_q)) +mstore(0x2b9c0, addmod(mload(0x2b9a0), mload(0x5580), f_q)) +mstore(0x2b9e0, mulmod(mload(0x12200), mload(0x5520), f_q)) +mstore(0x2ba00, addmod(mload(0x8bc0), mload(0x2b9e0), f_q)) +mstore(0x2ba20, addmod(mload(0x2ba00), mload(0x5580), f_q)) +mstore(0x2ba40, mulmod(mload(0x2ba20), mload(0x2b9c0), f_q)) +mstore(0x2ba60, mulmod(mload(0x2ba40), mload(0x14680), f_q)) +mstore(0x2ba80, mulmod(3055603373564673109796095879250576820511089880918169704085484833674447711584, mload(0x5520), f_q)) +mstore(0x2baa0, mulmod(mload(0x8180), mload(0x2ba80), f_q)) +mstore(0x2bac0, addmod(mload(0x8b40), mload(0x2baa0), f_q)) +mstore(0x2bae0, addmod(mload(0x2bac0), mload(0x5580), f_q)) +mstore(0x2bb00, mulmod(18919003022878160460994516395706759933775227444905751459299543520902511916732, mload(0x5520), f_q)) +mstore(0x2bb20, mulmod(mload(0x8180), mload(0x2bb00), f_q)) +mstore(0x2bb40, addmod(mload(0x8bc0), mload(0x2bb20), f_q)) +mstore(0x2bb60, addmod(mload(0x2bb40), mload(0x5580), f_q)) +mstore(0x2bb80, mulmod(mload(0x2bb60), mload(0x2bae0), f_q)) +mstore(0x2bba0, mulmod(mload(0x2bb80), mload(0x14660), f_q)) +mstore(0x2bbc0, addmod(mload(0x2ba60), sub(f_q, mload(0x2bba0)), f_q)) +mstore(0x2bbe0, mulmod(mload(0x2bbc0), mload(0x29860), f_q)) +mstore(0x2bc00, addmod(mload(0x2b960), mload(0x2bbe0), f_q)) +mstore(0x2bc20, mulmod(mload(0x8060), mload(0x2bc00), f_q)) +mstore(0x2bc40, mulmod(mload(0x12220), mload(0x5520), f_q)) +mstore(0x2bc60, addmod(mload(0x8c40), mload(0x2bc40), f_q)) +mstore(0x2bc80, addmod(mload(0x2bc60), mload(0x5580), f_q)) +mstore(0x2bca0, mulmod(mload(0x12240), mload(0x5520), f_q)) +mstore(0x2bcc0, addmod(mload(0x8cc0), mload(0x2bca0), f_q)) +mstore(0x2bce0, addmod(mload(0x2bcc0), mload(0x5580), f_q)) +mstore(0x2bd00, mulmod(mload(0x2bce0), mload(0x2bc80), f_q)) +mstore(0x2bd20, mulmod(mload(0x2bd00), mload(0x146e0), f_q)) +mstore(0x2bd40, mulmod(21820531317634488286337751998342537049007853262090569269352333717739718892837, mload(0x5520), f_q)) +mstore(0x2bd60, mulmod(mload(0x8180), mload(0x2bd40), f_q)) +mstore(0x2bd80, addmod(mload(0x8c40), mload(0x2bd60), f_q)) +mstore(0x2bda0, addmod(mload(0x2bd80), mload(0x5580), f_q)) +mstore(0x2bdc0, mulmod(11690644161670416005087398779256129545801297842925812006678981443591873164737, mload(0x5520), f_q)) +mstore(0x2bde0, mulmod(mload(0x8180), mload(0x2bdc0), f_q)) +mstore(0x2be00, addmod(mload(0x8cc0), mload(0x2bde0), f_q)) +mstore(0x2be20, addmod(mload(0x2be00), mload(0x5580), f_q)) +mstore(0x2be40, mulmod(mload(0x2be20), mload(0x2bda0), f_q)) +mstore(0x2be60, mulmod(mload(0x2be40), mload(0x146c0), f_q)) +mstore(0x2be80, addmod(mload(0x2bd20), sub(f_q, mload(0x2be60)), f_q)) +mstore(0x2bea0, mulmod(mload(0x2be80), mload(0x29860), f_q)) +mstore(0x2bec0, addmod(mload(0x2bc20), mload(0x2bea0), f_q)) +mstore(0x2bee0, mulmod(mload(0x8060), mload(0x2bec0), f_q)) +mstore(0x2bf00, mulmod(mload(0x12260), mload(0x5520), f_q)) +mstore(0x2bf20, addmod(mload(0x8d40), mload(0x2bf00), f_q)) +mstore(0x2bf40, addmod(mload(0x2bf20), mload(0x5580), f_q)) +mstore(0x2bf60, mulmod(mload(0x12280), mload(0x5520), f_q)) +mstore(0x2bf80, addmod(mload(0x8dc0), mload(0x2bf60), f_q)) +mstore(0x2bfa0, addmod(mload(0x2bf80), mload(0x5580), f_q)) +mstore(0x2bfc0, mulmod(mload(0x2bfa0), mload(0x2bf40), f_q)) +mstore(0x2bfe0, mulmod(mload(0x2bfc0), mload(0x14740), f_q)) +mstore(0x2c000, mulmod(11528161548240682342586611627075998060051606528073876098430287952910212343856, mload(0x5520), f_q)) +mstore(0x2c020, mulmod(mload(0x8180), mload(0x2c000), f_q)) +mstore(0x2c040, addmod(mload(0x8d40), mload(0x2c020), f_q)) +mstore(0x2c060, addmod(mload(0x2c040), mload(0x5580), f_q)) +mstore(0x2c080, mulmod(18628304600034811112233717008028841206682174041476429118387709804684197468805, mload(0x5520), f_q)) +mstore(0x2c0a0, mulmod(mload(0x8180), mload(0x2c080), f_q)) +mstore(0x2c0c0, addmod(mload(0x8dc0), mload(0x2c0a0), f_q)) +mstore(0x2c0e0, addmod(mload(0x2c0c0), mload(0x5580), f_q)) +mstore(0x2c100, mulmod(mload(0x2c0e0), mload(0x2c060), f_q)) +mstore(0x2c120, mulmod(mload(0x2c100), mload(0x14720), f_q)) +mstore(0x2c140, addmod(mload(0x2bfe0), sub(f_q, mload(0x2c120)), f_q)) +mstore(0x2c160, mulmod(mload(0x2c140), mload(0x29860), f_q)) +mstore(0x2c180, addmod(mload(0x2bee0), mload(0x2c160), f_q)) +mstore(0x2c1a0, mulmod(mload(0x8060), mload(0x2c180), f_q)) +mstore(0x2c1c0, mulmod(mload(0x122a0), mload(0x5520), f_q)) +mstore(0x2c1e0, addmod(mload(0x8e40), mload(0x2c1c0), f_q)) +mstore(0x2c200, addmod(mload(0x2c1e0), mload(0x5580), f_q)) +mstore(0x2c220, mulmod(mload(0x122c0), mload(0x5520), f_q)) +mstore(0x2c240, addmod(mload(0x8ec0), mload(0x2c220), f_q)) +mstore(0x2c260, addmod(mload(0x2c240), mload(0x5580), f_q)) +mstore(0x2c280, mulmod(mload(0x2c260), mload(0x2c200), f_q)) +mstore(0x2c2a0, mulmod(mload(0x2c280), mload(0x147a0), f_q)) +mstore(0x2c2c0, mulmod(3812225076454386035099274274457074170282101128215951730890413789768243087216, mload(0x5520), f_q)) +mstore(0x2c2e0, mulmod(mload(0x8180), mload(0x2c2c0), f_q)) +mstore(0x2c300, addmod(mload(0x8e40), mload(0x2c2e0), f_q)) +mstore(0x2c320, addmod(mload(0x2c300), mload(0x5580), f_q)) +mstore(0x2c340, mulmod(6086631436731367106067974409738486357173810104979546032479178453565461304432, mload(0x5520), f_q)) +mstore(0x2c360, mulmod(mload(0x8180), mload(0x2c340), f_q)) +mstore(0x2c380, addmod(mload(0x8ec0), mload(0x2c360), f_q)) +mstore(0x2c3a0, addmod(mload(0x2c380), mload(0x5580), f_q)) +mstore(0x2c3c0, mulmod(mload(0x2c3a0), mload(0x2c320), f_q)) +mstore(0x2c3e0, mulmod(mload(0x2c3c0), mload(0x14780), f_q)) +mstore(0x2c400, addmod(mload(0x2c2a0), sub(f_q, mload(0x2c3e0)), f_q)) +mstore(0x2c420, mulmod(mload(0x2c400), mload(0x29860), f_q)) +mstore(0x2c440, addmod(mload(0x2c1a0), mload(0x2c420), f_q)) +mstore(0x2c460, mulmod(mload(0x8060), mload(0x2c440), f_q)) +mstore(0x2c480, mulmod(mload(0x122e0), mload(0x5520), f_q)) +mstore(0x2c4a0, addmod(mload(0x8f40), mload(0x2c480), f_q)) +mstore(0x2c4c0, addmod(mload(0x2c4a0), mload(0x5580), f_q)) +mstore(0x2c4e0, mulmod(mload(0x12300), mload(0x5520), f_q)) +mstore(0x2c500, addmod(mload(0x8fc0), mload(0x2c4e0), f_q)) +mstore(0x2c520, addmod(mload(0x2c500), mload(0x5580), f_q)) +mstore(0x2c540, mulmod(mload(0x2c520), mload(0x2c4c0), f_q)) +mstore(0x2c560, mulmod(mload(0x2c540), mload(0x14800), f_q)) +mstore(0x2c580, mulmod(5935699236675469499387053131054475581365566812460910165409419636231282855471, mload(0x5520), f_q)) +mstore(0x2c5a0, mulmod(mload(0x8180), mload(0x2c580), f_q)) +mstore(0x2c5c0, addmod(mload(0x8f40), mload(0x2c5a0), f_q)) +mstore(0x2c5e0, addmod(mload(0x2c5c0), mload(0x5580), f_q)) +mstore(0x2c600, mulmod(11659341271193851011694220345307557050878473538417178792805558927884543762631, mload(0x5520), f_q)) +mstore(0x2c620, mulmod(mload(0x8180), mload(0x2c600), f_q)) +mstore(0x2c640, addmod(mload(0x8fc0), mload(0x2c620), f_q)) +mstore(0x2c660, addmod(mload(0x2c640), mload(0x5580), f_q)) +mstore(0x2c680, mulmod(mload(0x2c660), mload(0x2c5e0), f_q)) +mstore(0x2c6a0, mulmod(mload(0x2c680), mload(0x147e0), f_q)) +mstore(0x2c6c0, addmod(mload(0x2c560), sub(f_q, mload(0x2c6a0)), f_q)) +mstore(0x2c6e0, mulmod(mload(0x2c6c0), mload(0x29860), f_q)) +mstore(0x2c700, addmod(mload(0x2c460), mload(0x2c6e0), f_q)) +mstore(0x2c720, mulmod(mload(0x8060), mload(0x2c700), f_q)) +mstore(0x2c740, mulmod(mload(0x12320), mload(0x5520), f_q)) +mstore(0x2c760, addmod(mload(0x9040), mload(0x2c740), f_q)) +mstore(0x2c780, addmod(mload(0x2c760), mload(0x5580), f_q)) +mstore(0x2c7a0, mulmod(mload(0x12340), mload(0x5520), f_q)) +mstore(0x2c7c0, addmod(mload(0x90c0), mload(0x2c7a0), f_q)) +mstore(0x2c7e0, addmod(mload(0x2c7c0), mload(0x5580), f_q)) +mstore(0x2c800, mulmod(mload(0x2c7e0), mload(0x2c780), f_q)) +mstore(0x2c820, mulmod(mload(0x2c800), mload(0x14860), f_q)) +mstore(0x2c840, mulmod(2144633801741834402782563892591790926280957592788875592133515814344472936252, mload(0x5520), f_q)) +mstore(0x2c860, mulmod(mload(0x8180), mload(0x2c840), f_q)) +mstore(0x2c880, addmod(mload(0x9040), mload(0x2c860), f_q)) +mstore(0x2c8a0, addmod(mload(0x2c880), mload(0x5580), f_q)) +mstore(0x2c8c0, mulmod(11276764382440515739478542952735233153486220825334091560377652358196587944080, mload(0x5520), f_q)) +mstore(0x2c8e0, mulmod(mload(0x8180), mload(0x2c8c0), f_q)) +mstore(0x2c900, addmod(mload(0x90c0), mload(0x2c8e0), f_q)) +mstore(0x2c920, addmod(mload(0x2c900), mload(0x5580), f_q)) +mstore(0x2c940, mulmod(mload(0x2c920), mload(0x2c8a0), f_q)) +mstore(0x2c960, mulmod(mload(0x2c940), mload(0x14840), f_q)) +mstore(0x2c980, addmod(mload(0x2c820), sub(f_q, mload(0x2c960)), f_q)) +mstore(0x2c9a0, mulmod(mload(0x2c980), mload(0x29860), f_q)) +mstore(0x2c9c0, addmod(mload(0x2c720), mload(0x2c9a0), f_q)) +mstore(0x2c9e0, mulmod(mload(0x8060), mload(0x2c9c0), f_q)) +mstore(0x2ca00, mulmod(mload(0x12360), mload(0x5520), f_q)) +mstore(0x2ca20, addmod(mload(0x9140), mload(0x2ca00), f_q)) +mstore(0x2ca40, addmod(mload(0x2ca20), mload(0x5580), f_q)) +mstore(0x2ca60, mulmod(mload(0x12380), mload(0x5520), f_q)) +mstore(0x2ca80, addmod(mload(0x91c0), mload(0x2ca60), f_q)) +mstore(0x2caa0, addmod(mload(0x2ca80), mload(0x5580), f_q)) +mstore(0x2cac0, mulmod(mload(0x2caa0), mload(0x2ca40), f_q)) +mstore(0x2cae0, mulmod(mload(0x2cac0), mload(0x148c0), f_q)) +mstore(0x2cb00, mulmod(8522084548180326287270958635954383056297347926521677346313220736624394957631, mload(0x5520), f_q)) +mstore(0x2cb20, mulmod(mload(0x8180), mload(0x2cb00), f_q)) +mstore(0x2cb40, addmod(mload(0x9140), mload(0x2cb20), f_q)) +mstore(0x2cb60, addmod(mload(0x2cb40), mload(0x5580), f_q)) +mstore(0x2cb80, mulmod(14882623083408953508959674432481084036029922866207704295506447397194841803348, mload(0x5520), f_q)) +mstore(0x2cba0, mulmod(mload(0x8180), mload(0x2cb80), f_q)) +mstore(0x2cbc0, addmod(mload(0x91c0), mload(0x2cba0), f_q)) +mstore(0x2cbe0, addmod(mload(0x2cbc0), mload(0x5580), f_q)) +mstore(0x2cc00, mulmod(mload(0x2cbe0), mload(0x2cb60), f_q)) +mstore(0x2cc20, mulmod(mload(0x2cc00), mload(0x148a0), f_q)) +mstore(0x2cc40, addmod(mload(0x2cae0), sub(f_q, mload(0x2cc20)), f_q)) +mstore(0x2cc60, mulmod(mload(0x2cc40), mload(0x29860), f_q)) +mstore(0x2cc80, addmod(mload(0x2c9e0), mload(0x2cc60), f_q)) +mstore(0x2cca0, mulmod(mload(0x8060), mload(0x2cc80), f_q)) +mstore(0x2ccc0, mulmod(mload(0x123a0), mload(0x5520), f_q)) +mstore(0x2cce0, addmod(mload(0x9240), mload(0x2ccc0), f_q)) +mstore(0x2cd00, addmod(mload(0x2cce0), mload(0x5580), f_q)) +mstore(0x2cd20, mulmod(mload(0x123c0), mload(0x5520), f_q)) +mstore(0x2cd40, addmod(mload(0x92c0), mload(0x2cd20), f_q)) +mstore(0x2cd60, addmod(mload(0x2cd40), mload(0x5580), f_q)) +mstore(0x2cd80, mulmod(mload(0x2cd60), mload(0x2cd00), f_q)) +mstore(0x2cda0, mulmod(mload(0x2cd80), mload(0x14920), f_q)) +mstore(0x2cdc0, mulmod(7473064913766123169921085436456825245433953688498656411095021492989265434551, mload(0x5520), f_q)) +mstore(0x2cde0, mulmod(mload(0x8180), mload(0x2cdc0), f_q)) +mstore(0x2ce00, addmod(mload(0x9240), mload(0x2cde0), f_q)) +mstore(0x2ce20, addmod(mload(0x2ce00), mload(0x5580), f_q)) +mstore(0x2ce40, mulmod(16650898762102815424641362124890905431961680350951232379024776728454751135026, mload(0x5520), f_q)) +mstore(0x2ce60, mulmod(mload(0x8180), mload(0x2ce40), f_q)) +mstore(0x2ce80, addmod(mload(0x92c0), mload(0x2ce60), f_q)) +mstore(0x2cea0, addmod(mload(0x2ce80), mload(0x5580), f_q)) +mstore(0x2cec0, mulmod(mload(0x2cea0), mload(0x2ce20), f_q)) +mstore(0x2cee0, mulmod(mload(0x2cec0), mload(0x14900), f_q)) +mstore(0x2cf00, addmod(mload(0x2cda0), sub(f_q, mload(0x2cee0)), f_q)) +mstore(0x2cf20, mulmod(mload(0x2cf00), mload(0x29860), f_q)) +mstore(0x2cf40, addmod(mload(0x2cca0), mload(0x2cf20), f_q)) +mstore(0x2cf60, mulmod(mload(0x8060), mload(0x2cf40), f_q)) +mstore(0x2cf80, mulmod(mload(0x123e0), mload(0x5520), f_q)) +mstore(0x2cfa0, addmod(mload(0x9340), mload(0x2cf80), f_q)) +mstore(0x2cfc0, addmod(mload(0x2cfa0), mload(0x5580), f_q)) +mstore(0x2cfe0, mulmod(mload(0x12400), mload(0x5520), f_q)) +mstore(0x2d000, addmod(mload(0x93c0), mload(0x2cfe0), f_q)) +mstore(0x2d020, addmod(mload(0x2d000), mload(0x5580), f_q)) +mstore(0x2d040, mulmod(mload(0x2d020), mload(0x2cfc0), f_q)) +mstore(0x2d060, mulmod(mload(0x2d040), mload(0x14980), f_q)) +mstore(0x2d080, mulmod(6265646948683430821291524089127079362256537031101910915991472112257269822993, mload(0x5520), f_q)) +mstore(0x2d0a0, mulmod(mload(0x8180), mload(0x2d080), f_q)) +mstore(0x2d0c0, addmod(mload(0x9340), mload(0x2d0a0), f_q)) +mstore(0x2d0e0, addmod(mload(0x2d0c0), mload(0x5580), f_q)) +mstore(0x2d100, mulmod(21461031984707763085473045806214025540478448724744442541446660315116488066070, mload(0x5520), f_q)) +mstore(0x2d120, mulmod(mload(0x8180), mload(0x2d100), f_q)) +mstore(0x2d140, addmod(mload(0x93c0), mload(0x2d120), f_q)) +mstore(0x2d160, addmod(mload(0x2d140), mload(0x5580), f_q)) +mstore(0x2d180, mulmod(mload(0x2d160), mload(0x2d0e0), f_q)) +mstore(0x2d1a0, mulmod(mload(0x2d180), mload(0x14960), f_q)) +mstore(0x2d1c0, addmod(mload(0x2d060), sub(f_q, mload(0x2d1a0)), f_q)) +mstore(0x2d1e0, mulmod(mload(0x2d1c0), mload(0x29860), f_q)) +mstore(0x2d200, addmod(mload(0x2cf60), mload(0x2d1e0), f_q)) +mstore(0x2d220, mulmod(mload(0x8060), mload(0x2d200), f_q)) +mstore(0x2d240, mulmod(mload(0x12420), mload(0x5520), f_q)) +mstore(0x2d260, addmod(mload(0x9440), mload(0x2d240), f_q)) +mstore(0x2d280, addmod(mload(0x2d260), mload(0x5580), f_q)) +mstore(0x2d2a0, mulmod(mload(0x12440), mload(0x5520), f_q)) +mstore(0x2d2c0, addmod(mload(0x94c0), mload(0x2d2a0), f_q)) +mstore(0x2d2e0, addmod(mload(0x2d2c0), mload(0x5580), f_q)) +mstore(0x2d300, mulmod(mload(0x2d2e0), mload(0x2d280), f_q)) +mstore(0x2d320, mulmod(mload(0x2d300), mload(0x149e0), f_q)) +mstore(0x2d340, mulmod(11015849780772907441075034950498680327169517956272952993629492157722441311356, mload(0x5520), f_q)) +mstore(0x2d360, mulmod(mload(0x8180), mload(0x2d340), f_q)) +mstore(0x2d380, addmod(mload(0x9440), mload(0x2d360), f_q)) +mstore(0x2d3a0, addmod(mload(0x2d380), mload(0x5580), f_q)) +mstore(0x2d3c0, mulmod(4808939225845428624320615246229302615472800993682708181993400019573840024415, mload(0x5520), f_q)) +mstore(0x2d3e0, mulmod(mload(0x8180), mload(0x2d3c0), f_q)) +mstore(0x2d400, addmod(mload(0x94c0), mload(0x2d3e0), f_q)) +mstore(0x2d420, addmod(mload(0x2d400), mload(0x5580), f_q)) +mstore(0x2d440, mulmod(mload(0x2d420), mload(0x2d3a0), f_q)) +mstore(0x2d460, mulmod(mload(0x2d440), mload(0x149c0), f_q)) +mstore(0x2d480, addmod(mload(0x2d320), sub(f_q, mload(0x2d460)), f_q)) +mstore(0x2d4a0, mulmod(mload(0x2d480), mload(0x29860), f_q)) +mstore(0x2d4c0, addmod(mload(0x2d220), mload(0x2d4a0), f_q)) +mstore(0x2d4e0, mulmod(mload(0x8060), mload(0x2d4c0), f_q)) +mstore(0x2d500, mulmod(mload(0x12460), mload(0x5520), f_q)) +mstore(0x2d520, addmod(mload(0x9540), mload(0x2d500), f_q)) +mstore(0x2d540, addmod(mload(0x2d520), mload(0x5580), f_q)) +mstore(0x2d560, mulmod(mload(0x12480), mload(0x5520), f_q)) +mstore(0x2d580, addmod(mload(0x95c0), mload(0x2d560), f_q)) +mstore(0x2d5a0, addmod(mload(0x2d580), mload(0x5580), f_q)) +mstore(0x2d5c0, mulmod(mload(0x2d5a0), mload(0x2d540), f_q)) +mstore(0x2d5e0, mulmod(mload(0x2d5c0), mload(0x14a40), f_q)) +mstore(0x2d600, mulmod(12363946536058133647126890171999233899060514401429638381765968581525450191004, mload(0x5520), f_q)) +mstore(0x2d620, mulmod(mload(0x8180), mload(0x2d600), f_q)) +mstore(0x2d640, addmod(mload(0x9540), mload(0x2d620), f_q)) +mstore(0x2d660, addmod(mload(0x2d640), mload(0x5580), f_q)) +mstore(0x2d680, mulmod(9698066469190387878326590092749284057754448852723981158228775962778187532321, mload(0x5520), f_q)) +mstore(0x2d6a0, mulmod(mload(0x8180), mload(0x2d680), f_q)) +mstore(0x2d6c0, addmod(mload(0x95c0), mload(0x2d6a0), f_q)) +mstore(0x2d6e0, addmod(mload(0x2d6c0), mload(0x5580), f_q)) +mstore(0x2d700, mulmod(mload(0x2d6e0), mload(0x2d660), f_q)) +mstore(0x2d720, mulmod(mload(0x2d700), mload(0x14a20), f_q)) +mstore(0x2d740, addmod(mload(0x2d5e0), sub(f_q, mload(0x2d720)), f_q)) +mstore(0x2d760, mulmod(mload(0x2d740), mload(0x29860), f_q)) +mstore(0x2d780, addmod(mload(0x2d4e0), mload(0x2d760), f_q)) +mstore(0x2d7a0, mulmod(mload(0x8060), mload(0x2d780), f_q)) +mstore(0x2d7c0, mulmod(mload(0x124a0), mload(0x5520), f_q)) +mstore(0x2d7e0, addmod(mload(0x9640), mload(0x2d7c0), f_q)) +mstore(0x2d800, addmod(mload(0x2d7e0), mload(0x5580), f_q)) +mstore(0x2d820, mulmod(mload(0x124c0), mload(0x5520), f_q)) +mstore(0x2d840, addmod(mload(0x96c0), mload(0x2d820), f_q)) +mstore(0x2d860, addmod(mload(0x2d840), mload(0x5580), f_q)) +mstore(0x2d880, mulmod(mload(0x2d860), mload(0x2d800), f_q)) +mstore(0x2d8a0, mulmod(mload(0x2d880), mload(0x14aa0), f_q)) +mstore(0x2d8c0, mulmod(20873325697184552928671573452921225725549871198105909121544987865835894908796, mload(0x5520), f_q)) +mstore(0x2d8e0, mulmod(mload(0x8180), mload(0x2d8c0), f_q)) +mstore(0x2d900, addmod(mload(0x9640), mload(0x2d8e0), f_q)) +mstore(0x2d920, addmod(mload(0x2d900), mload(0x5580), f_q)) +mstore(0x2d940, mulmod(11566498627785562052238096637540352491672629436169399467965300464769629872718, mload(0x5520), f_q)) +mstore(0x2d960, mulmod(mload(0x8180), mload(0x2d940), f_q)) +mstore(0x2d980, addmod(mload(0x96c0), mload(0x2d960), f_q)) +mstore(0x2d9a0, addmod(mload(0x2d980), mload(0x5580), f_q)) +mstore(0x2d9c0, mulmod(mload(0x2d9a0), mload(0x2d920), f_q)) +mstore(0x2d9e0, mulmod(mload(0x2d9c0), mload(0x14a80), f_q)) +mstore(0x2da00, addmod(mload(0x2d8a0), sub(f_q, mload(0x2d9e0)), f_q)) +mstore(0x2da20, mulmod(mload(0x2da00), mload(0x29860), f_q)) +mstore(0x2da40, addmod(mload(0x2d7a0), mload(0x2da20), f_q)) +mstore(0x2da60, mulmod(mload(0x8060), mload(0x2da40), f_q)) +mstore(0x2da80, mulmod(mload(0x124e0), mload(0x5520), f_q)) +mstore(0x2daa0, addmod(mload(0x9740), mload(0x2da80), f_q)) +mstore(0x2dac0, addmod(mload(0x2daa0), mload(0x5580), f_q)) +mstore(0x2dae0, mulmod(mload(0x12500), mload(0x5520), f_q)) +mstore(0x2db00, addmod(mload(0x97c0), mload(0x2dae0), f_q)) +mstore(0x2db20, addmod(mload(0x2db00), mload(0x5580), f_q)) +mstore(0x2db40, mulmod(mload(0x2db20), mload(0x2dac0), f_q)) +mstore(0x2db60, mulmod(mload(0x2db40), mload(0x14b00), f_q)) +mstore(0x2db80, mulmod(14894602555681020901858577324255045581595322576235860076401751458910930002257, mload(0x5520), f_q)) +mstore(0x2dba0, mulmod(mload(0x8180), mload(0x2db80), f_q)) +mstore(0x2dbc0, addmod(mload(0x9740), mload(0x2dba0), f_q)) +mstore(0x2dbe0, addmod(mload(0x2dbc0), mload(0x5580), f_q)) +mstore(0x2dc00, mulmod(9936195945602468090802638413599411813424253444149714895481092168996200418417, mload(0x5520), f_q)) +mstore(0x2dc20, mulmod(mload(0x8180), mload(0x2dc00), f_q)) +mstore(0x2dc40, addmod(mload(0x97c0), mload(0x2dc20), f_q)) +mstore(0x2dc60, addmod(mload(0x2dc40), mload(0x5580), f_q)) +mstore(0x2dc80, mulmod(mload(0x2dc60), mload(0x2dbe0), f_q)) +mstore(0x2dca0, mulmod(mload(0x2dc80), mload(0x14ae0), f_q)) +mstore(0x2dcc0, addmod(mload(0x2db60), sub(f_q, mload(0x2dca0)), f_q)) +mstore(0x2dce0, mulmod(mload(0x2dcc0), mload(0x29860), f_q)) +mstore(0x2dd00, addmod(mload(0x2da60), mload(0x2dce0), f_q)) +mstore(0x2dd20, mulmod(mload(0x8060), mload(0x2dd00), f_q)) +mstore(0x2dd40, mulmod(mload(0x12520), mload(0x5520), f_q)) +mstore(0x2dd60, addmod(mload(0x9840), mload(0x2dd40), f_q)) +mstore(0x2dd80, addmod(mload(0x2dd60), mload(0x5580), f_q)) +mstore(0x2dda0, mulmod(mload(0x12540), mload(0x5520), f_q)) +mstore(0x2ddc0, addmod(mload(0x98c0), mload(0x2dda0), f_q)) +mstore(0x2dde0, addmod(mload(0x2ddc0), mload(0x5580), f_q)) +mstore(0x2de00, mulmod(mload(0x2dde0), mload(0x2dd80), f_q)) +mstore(0x2de20, mulmod(mload(0x2de00), mload(0x14b60), f_q)) +mstore(0x2de40, mulmod(12903252401977327771757931362984052813327059535657745058368860793268739001463, mload(0x5520), f_q)) +mstore(0x2de60, mulmod(mload(0x8180), mload(0x2de40), f_q)) +mstore(0x2de80, addmod(mload(0x9840), mload(0x2de60), f_q)) +mstore(0x2dea0, addmod(mload(0x2de80), mload(0x5580), f_q)) +mstore(0x2dec0, mulmod(1859369176592381851505011608551773920873400806620757985830406295818047172654, mload(0x5520), f_q)) +mstore(0x2dee0, mulmod(mload(0x8180), mload(0x2dec0), f_q)) +mstore(0x2df00, addmod(mload(0x98c0), mload(0x2dee0), f_q)) +mstore(0x2df20, addmod(mload(0x2df00), mload(0x5580), f_q)) +mstore(0x2df40, mulmod(mload(0x2df20), mload(0x2dea0), f_q)) +mstore(0x2df60, mulmod(mload(0x2df40), mload(0x14b40), f_q)) +mstore(0x2df80, addmod(mload(0x2de20), sub(f_q, mload(0x2df60)), f_q)) +mstore(0x2dfa0, mulmod(mload(0x2df80), mload(0x29860), f_q)) +mstore(0x2dfc0, addmod(mload(0x2dd20), mload(0x2dfa0), f_q)) +mstore(0x2dfe0, mulmod(mload(0x8060), mload(0x2dfc0), f_q)) +mstore(0x2e000, mulmod(mload(0x12560), mload(0x5520), f_q)) +mstore(0x2e020, addmod(mload(0x9940), mload(0x2e000), f_q)) +mstore(0x2e040, addmod(mload(0x2e020), mload(0x5580), f_q)) +mstore(0x2e060, mulmod(mload(0x12580), mload(0x5520), f_q)) +mstore(0x2e080, addmod(mload(0x99c0), mload(0x2e060), f_q)) +mstore(0x2e0a0, addmod(mload(0x2e080), mload(0x5580), f_q)) +mstore(0x2e0c0, mulmod(mload(0x2e0a0), mload(0x2e040), f_q)) +mstore(0x2e0e0, mulmod(mload(0x2e0c0), mload(0x14bc0), f_q)) +mstore(0x2e100, mulmod(13042460925266556332203317520611555362086042594434173553258377615619551096861, mload(0x5520), f_q)) +mstore(0x2e120, mulmod(mload(0x8180), mload(0x2e100), f_q)) +mstore(0x2e140, addmod(mload(0x9940), mload(0x2e120), f_q)) +mstore(0x2e160, addmod(mload(0x2e140), mload(0x5580), f_q)) +mstore(0x2e180, mulmod(7365231324826497251643874789628448590999648804695557222486502806574370857780, mload(0x5520), f_q)) +mstore(0x2e1a0, mulmod(mload(0x8180), mload(0x2e180), f_q)) +mstore(0x2e1c0, addmod(mload(0x99c0), mload(0x2e1a0), f_q)) +mstore(0x2e1e0, addmod(mload(0x2e1c0), mload(0x5580), f_q)) +mstore(0x2e200, mulmod(mload(0x2e1e0), mload(0x2e160), f_q)) +mstore(0x2e220, mulmod(mload(0x2e200), mload(0x14ba0), f_q)) +mstore(0x2e240, addmod(mload(0x2e0e0), sub(f_q, mload(0x2e220)), f_q)) +mstore(0x2e260, mulmod(mload(0x2e240), mload(0x29860), f_q)) +mstore(0x2e280, addmod(mload(0x2dfe0), mload(0x2e260), f_q)) +mstore(0x2e2a0, mulmod(mload(0x8060), mload(0x2e280), f_q)) +mstore(0x2e2c0, mulmod(mload(0x125a0), mload(0x5520), f_q)) +mstore(0x2e2e0, addmod(mload(0x9a40), mload(0x2e2c0), f_q)) +mstore(0x2e300, addmod(mload(0x2e2e0), mload(0x5580), f_q)) +mstore(0x2e320, mulmod(mload(0x125c0), mload(0x5520), f_q)) +mstore(0x2e340, addmod(mload(0x9ac0), mload(0x2e320), f_q)) +mstore(0x2e360, addmod(mload(0x2e340), mload(0x5580), f_q)) +mstore(0x2e380, mulmod(mload(0x2e360), mload(0x2e300), f_q)) +mstore(0x2e3a0, mulmod(mload(0x2e380), mload(0x14c20), f_q)) +mstore(0x2e3c0, mulmod(8414352129061321544987837003070165226651570902944261913177635908590210470283, mload(0x5520), f_q)) +mstore(0x2e3e0, mulmod(mload(0x8180), mload(0x2e3c0), f_q)) +mstore(0x2e400, addmod(mload(0x9a40), mload(0x2e3e0), f_q)) +mstore(0x2e420, addmod(mload(0x2e400), mload(0x5580), f_q)) +mstore(0x2e440, mulmod(10057053751416223995062418505992769558010701429321302947288951986297848470275, mload(0x5520), f_q)) +mstore(0x2e460, mulmod(mload(0x8180), mload(0x2e440), f_q)) +mstore(0x2e480, addmod(mload(0x9ac0), mload(0x2e460), f_q)) +mstore(0x2e4a0, addmod(mload(0x2e480), mload(0x5580), f_q)) +mstore(0x2e4c0, mulmod(mload(0x2e4a0), mload(0x2e420), f_q)) +mstore(0x2e4e0, mulmod(mload(0x2e4c0), mload(0x14c00), f_q)) +mstore(0x2e500, addmod(mload(0x2e3a0), sub(f_q, mload(0x2e4e0)), f_q)) +mstore(0x2e520, mulmod(mload(0x2e500), mload(0x29860), f_q)) +mstore(0x2e540, addmod(mload(0x2e2a0), mload(0x2e520), f_q)) +mstore(0x2e560, mulmod(mload(0x8060), mload(0x2e540), f_q)) +mstore(0x2e580, mulmod(mload(0x125e0), mload(0x5520), f_q)) +mstore(0x2e5a0, addmod(mload(0x9b40), mload(0x2e580), f_q)) +mstore(0x2e5c0, addmod(mload(0x2e5a0), mload(0x5580), f_q)) +mstore(0x2e5e0, mulmod(mload(0x12600), mload(0x5520), f_q)) +mstore(0x2e600, addmod(mload(0x9bc0), mload(0x2e5e0), f_q)) +mstore(0x2e620, addmod(mload(0x2e600), mload(0x5580), f_q)) +mstore(0x2e640, mulmod(mload(0x2e620), mload(0x2e5c0), f_q)) +mstore(0x2e660, mulmod(mload(0x2e640), mload(0x14c80), f_q)) +mstore(0x2e680, mulmod(5627610507273404429448210990523221462257677598031967315866568486238075662261, mload(0x5520), f_q)) +mstore(0x2e6a0, mulmod(mload(0x8180), mload(0x2e680), f_q)) +mstore(0x2e6c0, addmod(mload(0x9b40), mload(0x2e6a0), f_q)) +mstore(0x2e6e0, addmod(mload(0x2e6c0), mload(0x5580), f_q)) +mstore(0x2e700, mulmod(9237452755399683178812200079804257107704535460359699406510389375662520846471, mload(0x5520), f_q)) +mstore(0x2e720, mulmod(mload(0x8180), mload(0x2e700), f_q)) +mstore(0x2e740, addmod(mload(0x9bc0), mload(0x2e720), f_q)) +mstore(0x2e760, addmod(mload(0x2e740), mload(0x5580), f_q)) +mstore(0x2e780, mulmod(mload(0x2e760), mload(0x2e6e0), f_q)) +mstore(0x2e7a0, mulmod(mload(0x2e780), mload(0x14c60), f_q)) +mstore(0x2e7c0, addmod(mload(0x2e660), sub(f_q, mload(0x2e7a0)), f_q)) +mstore(0x2e7e0, mulmod(mload(0x2e7c0), mload(0x29860), f_q)) +mstore(0x2e800, addmod(mload(0x2e560), mload(0x2e7e0), f_q)) +mstore(0x2e820, mulmod(mload(0x8060), mload(0x2e800), f_q)) +mstore(0x2e840, mulmod(mload(0x12620), mload(0x5520), f_q)) +mstore(0x2e860, addmod(mload(0x9c40), mload(0x2e840), f_q)) +mstore(0x2e880, addmod(mload(0x2e860), mload(0x5580), f_q)) +mstore(0x2e8a0, mulmod(mload(0x12640), mload(0x5520), f_q)) +mstore(0x2e8c0, addmod(mload(0x9cc0), mload(0x2e8a0), f_q)) +mstore(0x2e8e0, addmod(mload(0x2e8c0), mload(0x5580), f_q)) +mstore(0x2e900, mulmod(mload(0x2e8e0), mload(0x2e880), f_q)) +mstore(0x2e920, mulmod(mload(0x2e900), mload(0x14ce0), f_q)) +mstore(0x2e940, mulmod(9330219149957193181682794083380530460012120397637295547717959792404898823515, mload(0x5520), f_q)) +mstore(0x2e960, mulmod(mload(0x8180), mload(0x2e940), f_q)) +mstore(0x2e980, addmod(mload(0x9c40), mload(0x2e960), f_q)) +mstore(0x2e9a0, addmod(mload(0x2e980), mload(0x5580), f_q)) +mstore(0x2e9c0, mulmod(1368351575773543101717205979294838045308601401027142042149831538101333502680, mload(0x5520), f_q)) +mstore(0x2e9e0, mulmod(mload(0x8180), mload(0x2e9c0), f_q)) +mstore(0x2ea00, addmod(mload(0x9cc0), mload(0x2e9e0), f_q)) +mstore(0x2ea20, addmod(mload(0x2ea00), mload(0x5580), f_q)) +mstore(0x2ea40, mulmod(mload(0x2ea20), mload(0x2e9a0), f_q)) +mstore(0x2ea60, mulmod(mload(0x2ea40), mload(0x14cc0), f_q)) +mstore(0x2ea80, addmod(mload(0x2e920), sub(f_q, mload(0x2ea60)), f_q)) +mstore(0x2eaa0, mulmod(mload(0x2ea80), mload(0x29860), f_q)) +mstore(0x2eac0, addmod(mload(0x2e820), mload(0x2eaa0), f_q)) +mstore(0x2eae0, mulmod(mload(0x8060), mload(0x2eac0), f_q)) +mstore(0x2eb00, mulmod(mload(0x12660), mload(0x5520), f_q)) +mstore(0x2eb20, addmod(mload(0x9d40), mload(0x2eb00), f_q)) +mstore(0x2eb40, addmod(mload(0x2eb20), mload(0x5580), f_q)) +mstore(0x2eb60, mulmod(mload(0x12680), mload(0x5520), f_q)) +mstore(0x2eb80, addmod(mload(0x9dc0), mload(0x2eb60), f_q)) +mstore(0x2eba0, addmod(mload(0x2eb80), mload(0x5580), f_q)) +mstore(0x2ebc0, mulmod(mload(0x2eba0), mload(0x2eb40), f_q)) +mstore(0x2ebe0, mulmod(mload(0x2ebc0), mload(0x14d40), f_q)) +mstore(0x2ec00, mulmod(10033183344740939023665326101760662542678648404470348806028773354249730836250, mload(0x5520), f_q)) +mstore(0x2ec20, mulmod(mload(0x8180), mload(0x2ec00), f_q)) +mstore(0x2ec40, addmod(mload(0x9d40), mload(0x2ec20), f_q)) +mstore(0x2ec60, addmod(mload(0x2ec40), mload(0x5580), f_q)) +mstore(0x2ec80, mulmod(6191356973340360146544876230043182965769031621581689763307730136518028189553, mload(0x5520), f_q)) +mstore(0x2eca0, mulmod(mload(0x8180), mload(0x2ec80), f_q)) +mstore(0x2ecc0, addmod(mload(0x9dc0), mload(0x2eca0), f_q)) +mstore(0x2ece0, addmod(mload(0x2ecc0), mload(0x5580), f_q)) +mstore(0x2ed00, mulmod(mload(0x2ece0), mload(0x2ec60), f_q)) +mstore(0x2ed20, mulmod(mload(0x2ed00), mload(0x14d20), f_q)) +mstore(0x2ed40, addmod(mload(0x2ebe0), sub(f_q, mload(0x2ed20)), f_q)) +mstore(0x2ed60, mulmod(mload(0x2ed40), mload(0x29860), f_q)) +mstore(0x2ed80, addmod(mload(0x2eae0), mload(0x2ed60), f_q)) +mstore(0x2eda0, mulmod(mload(0x8060), mload(0x2ed80), f_q)) +mstore(0x2edc0, mulmod(mload(0x126a0), mload(0x5520), f_q)) +mstore(0x2ede0, addmod(mload(0x9e40), mload(0x2edc0), f_q)) +mstore(0x2ee00, addmod(mload(0x2ede0), mload(0x5580), f_q)) +mstore(0x2ee20, mulmod(mload(0x126c0), mload(0x5520), f_q)) +mstore(0x2ee40, addmod(mload(0x9ec0), mload(0x2ee20), f_q)) +mstore(0x2ee60, addmod(mload(0x2ee40), mload(0x5580), f_q)) +mstore(0x2ee80, mulmod(mload(0x2ee60), mload(0x2ee00), f_q)) +mstore(0x2eea0, mulmod(mload(0x2ee80), mload(0x14da0), f_q)) +mstore(0x2eec0, mulmod(11320410504475180673308874115065156498022890698167721211597097416009282798518, mload(0x5520), f_q)) +mstore(0x2eee0, mulmod(mload(0x8180), mload(0x2eec0), f_q)) +mstore(0x2ef00, addmod(mload(0x9e40), mload(0x2eee0), f_q)) +mstore(0x2ef20, addmod(mload(0x2ef00), mload(0x5580), f_q)) +mstore(0x2ef40, mulmod(7223347080556683030366858132560212359887971234455999320992883945062967921425, mload(0x5520), f_q)) +mstore(0x2ef60, mulmod(mload(0x8180), mload(0x2ef40), f_q)) +mstore(0x2ef80, addmod(mload(0x9ec0), mload(0x2ef60), f_q)) +mstore(0x2efa0, addmod(mload(0x2ef80), mload(0x5580), f_q)) +mstore(0x2efc0, mulmod(mload(0x2efa0), mload(0x2ef20), f_q)) +mstore(0x2efe0, mulmod(mload(0x2efc0), mload(0x14d80), f_q)) +mstore(0x2f000, addmod(mload(0x2eea0), sub(f_q, mload(0x2efe0)), f_q)) +mstore(0x2f020, mulmod(mload(0x2f000), mload(0x29860), f_q)) +mstore(0x2f040, addmod(mload(0x2eda0), mload(0x2f020), f_q)) +mstore(0x2f060, mulmod(mload(0x8060), mload(0x2f040), f_q)) +mstore(0x2f080, mulmod(mload(0x126e0), mload(0x5520), f_q)) +mstore(0x2f0a0, addmod(mload(0x9f40), mload(0x2f080), f_q)) +mstore(0x2f0c0, addmod(mload(0x2f0a0), mload(0x5580), f_q)) +mstore(0x2f0e0, mulmod(mload(0x12700), mload(0x5520), f_q)) +mstore(0x2f100, addmod(mload(0x9fc0), mload(0x2f0e0), f_q)) +mstore(0x2f120, addmod(mload(0x2f100), mload(0x5580), f_q)) +mstore(0x2f140, mulmod(mload(0x2f120), mload(0x2f0c0), f_q)) +mstore(0x2f160, mulmod(mload(0x2f140), mload(0x14e00), f_q)) +mstore(0x2f180, mulmod(3766256108240687538927279934011117236245568314325241678871195348517725191183, mload(0x5520), f_q)) +mstore(0x2f1a0, mulmod(mload(0x8180), mload(0x2f180), f_q)) +mstore(0x2f1c0, addmod(mload(0x9f40), mload(0x2f1a0), f_q)) +mstore(0x2f1e0, addmod(mload(0x2f1c0), mload(0x5580), f_q)) +mstore(0x2f200, mulmod(20601047105054670756320638895508041603392172825712752135727465745827351087294, mload(0x5520), f_q)) +mstore(0x2f220, mulmod(mload(0x8180), mload(0x2f200), f_q)) +mstore(0x2f240, addmod(mload(0x9fc0), mload(0x2f220), f_q)) +mstore(0x2f260, addmod(mload(0x2f240), mload(0x5580), f_q)) +mstore(0x2f280, mulmod(mload(0x2f260), mload(0x2f1e0), f_q)) +mstore(0x2f2a0, mulmod(mload(0x2f280), mload(0x14de0), f_q)) +mstore(0x2f2c0, addmod(mload(0x2f160), sub(f_q, mload(0x2f2a0)), f_q)) +mstore(0x2f2e0, mulmod(mload(0x2f2c0), mload(0x29860), f_q)) +mstore(0x2f300, addmod(mload(0x2f060), mload(0x2f2e0), f_q)) +mstore(0x2f320, mulmod(mload(0x8060), mload(0x2f300), f_q)) +mstore(0x2f340, mulmod(mload(0x12720), mload(0x5520), f_q)) +mstore(0x2f360, addmod(mload(0xa040), mload(0x2f340), f_q)) +mstore(0x2f380, addmod(mload(0x2f360), mload(0x5580), f_q)) +mstore(0x2f3a0, mulmod(mload(0x12740), mload(0x5520), f_q)) +mstore(0x2f3c0, addmod(mload(0xa0c0), mload(0x2f3a0), f_q)) +mstore(0x2f3e0, addmod(mload(0x2f3c0), mload(0x5580), f_q)) +mstore(0x2f400, mulmod(mload(0x2f3e0), mload(0x2f380), f_q)) +mstore(0x2f420, mulmod(mload(0x2f400), mload(0x14e60), f_q)) +mstore(0x2f440, mulmod(17960602500581680908859036950263844025780331245802383713981655919980163534719, mload(0x5520), f_q)) +mstore(0x2f460, mulmod(mload(0x8180), mload(0x2f440), f_q)) +mstore(0x2f480, addmod(mload(0xa040), mload(0x2f460), f_q)) +mstore(0x2f4a0, addmod(mload(0x2f480), mload(0x5580), f_q)) +mstore(0x2f4c0, mulmod(18188346259284374498754793225792368563069379590799308838190551760171378595711, mload(0x5520), f_q)) +mstore(0x2f4e0, mulmod(mload(0x8180), mload(0x2f4c0), f_q)) +mstore(0x2f500, addmod(mload(0xa0c0), mload(0x2f4e0), f_q)) +mstore(0x2f520, addmod(mload(0x2f500), mload(0x5580), f_q)) +mstore(0x2f540, mulmod(mload(0x2f520), mload(0x2f4a0), f_q)) +mstore(0x2f560, mulmod(mload(0x2f540), mload(0x14e40), f_q)) +mstore(0x2f580, addmod(mload(0x2f420), sub(f_q, mload(0x2f560)), f_q)) +mstore(0x2f5a0, mulmod(mload(0x2f580), mload(0x29860), f_q)) +mstore(0x2f5c0, addmod(mload(0x2f320), mload(0x2f5a0), f_q)) +mstore(0x2f5e0, mulmod(mload(0x8060), mload(0x2f5c0), f_q)) +mstore(0x2f600, mulmod(mload(0x12760), mload(0x5520), f_q)) +mstore(0x2f620, addmod(mload(0xa140), mload(0x2f600), f_q)) +mstore(0x2f640, addmod(mload(0x2f620), mload(0x5580), f_q)) +mstore(0x2f660, mulmod(mload(0x12780), mload(0x5520), f_q)) +mstore(0x2f680, addmod(mload(0xa1c0), mload(0x2f660), f_q)) +mstore(0x2f6a0, addmod(mload(0x2f680), mload(0x5580), f_q)) +mstore(0x2f6c0, mulmod(mload(0x2f6a0), mload(0x2f640), f_q)) +mstore(0x2f6e0, mulmod(mload(0x2f6c0), mload(0x14ec0), f_q)) +mstore(0x2f700, mulmod(3406347510934067844396513953018551959727873050185385139972461171874084393705, mload(0x5520), f_q)) +mstore(0x2f720, mulmod(mload(0x8180), mload(0x2f700), f_q)) +mstore(0x2f740, addmod(mload(0xa140), mload(0x2f720), f_q)) +mstore(0x2f760, addmod(mload(0x2f740), mload(0x5580), f_q)) +mstore(0x2f780, mulmod(10752704411762161810560025392718068173886773303902227969679983075735349812598, mload(0x5520), f_q)) +mstore(0x2f7a0, mulmod(mload(0x8180), mload(0x2f780), f_q)) +mstore(0x2f7c0, addmod(mload(0xa1c0), mload(0x2f7a0), f_q)) +mstore(0x2f7e0, addmod(mload(0x2f7c0), mload(0x5580), f_q)) +mstore(0x2f800, mulmod(mload(0x2f7e0), mload(0x2f760), f_q)) +mstore(0x2f820, mulmod(mload(0x2f800), mload(0x14ea0), f_q)) +mstore(0x2f840, addmod(mload(0x2f6e0), sub(f_q, mload(0x2f820)), f_q)) +mstore(0x2f860, mulmod(mload(0x2f840), mload(0x29860), f_q)) +mstore(0x2f880, addmod(mload(0x2f5e0), mload(0x2f860), f_q)) +mstore(0x2f8a0, mulmod(mload(0x8060), mload(0x2f880), f_q)) +mstore(0x2f8c0, mulmod(mload(0x127a0), mload(0x5520), f_q)) +mstore(0x2f8e0, addmod(mload(0xa240), mload(0x2f8c0), f_q)) +mstore(0x2f900, addmod(mload(0x2f8e0), mload(0x5580), f_q)) +mstore(0x2f920, mulmod(mload(0x127c0), mload(0x5520), f_q)) +mstore(0x2f940, addmod(mload(0xa2c0), mload(0x2f920), f_q)) +mstore(0x2f960, addmod(mload(0x2f940), mload(0x5580), f_q)) +mstore(0x2f980, mulmod(mload(0x2f960), mload(0x2f900), f_q)) +mstore(0x2f9a0, mulmod(mload(0x2f980), mload(0x14f20), f_q)) +mstore(0x2f9c0, mulmod(15865562062248975521723305568333026449067995592936635446793768757611119342824, mload(0x5520), f_q)) +mstore(0x2f9e0, mulmod(mload(0x8180), mload(0x2f9c0), f_q)) +mstore(0x2fa00, addmod(mload(0xa240), mload(0x2f9e0), f_q)) +mstore(0x2fa20, addmod(mload(0x2fa00), mload(0x5580), f_q)) +mstore(0x2fa40, mulmod(13855141316119571186934968025539154917243798198350590983660995144391645868477, mload(0x5520), f_q)) +mstore(0x2fa60, mulmod(mload(0x8180), mload(0x2fa40), f_q)) +mstore(0x2fa80, addmod(mload(0xa2c0), mload(0x2fa60), f_q)) +mstore(0x2faa0, addmod(mload(0x2fa80), mload(0x5580), f_q)) +mstore(0x2fac0, mulmod(mload(0x2faa0), mload(0x2fa20), f_q)) +mstore(0x2fae0, mulmod(mload(0x2fac0), mload(0x14f00), f_q)) +mstore(0x2fb00, addmod(mload(0x2f9a0), sub(f_q, mload(0x2fae0)), f_q)) +mstore(0x2fb20, mulmod(mload(0x2fb00), mload(0x29860), f_q)) +mstore(0x2fb40, addmod(mload(0x2f8a0), mload(0x2fb20), f_q)) +mstore(0x2fb60, mulmod(mload(0x8060), mload(0x2fb40), f_q)) +mstore(0x2fb80, mulmod(mload(0x127e0), mload(0x5520), f_q)) +mstore(0x2fba0, addmod(mload(0xa340), mload(0x2fb80), f_q)) +mstore(0x2fbc0, addmod(mload(0x2fba0), mload(0x5580), f_q)) +mstore(0x2fbe0, mulmod(mload(0x12800), mload(0x5520), f_q)) +mstore(0x2fc00, addmod(mload(0xa3c0), mload(0x2fbe0), f_q)) +mstore(0x2fc20, addmod(mload(0x2fc00), mload(0x5580), f_q)) +mstore(0x2fc40, mulmod(mload(0x2fc20), mload(0x2fbc0), f_q)) +mstore(0x2fc60, mulmod(mload(0x2fc40), mload(0x14f80), f_q)) +mstore(0x2fc80, mulmod(11309787233209767523614582694201415800592384460401456005615890197010450016206, mload(0x5520), f_q)) +mstore(0x2fca0, mulmod(mload(0x8180), mload(0x2fc80), f_q)) +mstore(0x2fcc0, addmod(mload(0xa340), mload(0x2fca0), f_q)) +mstore(0x2fce0, addmod(mload(0x2fcc0), mload(0x5580), f_q)) +mstore(0x2fd00, mulmod(16147561360560542504596228965599282256853762086110599299390476696178726655957, mload(0x5520), f_q)) +mstore(0x2fd20, mulmod(mload(0x8180), mload(0x2fd00), f_q)) +mstore(0x2fd40, addmod(mload(0xa3c0), mload(0x2fd20), f_q)) +mstore(0x2fd60, addmod(mload(0x2fd40), mload(0x5580), f_q)) +mstore(0x2fd80, mulmod(mload(0x2fd60), mload(0x2fce0), f_q)) +mstore(0x2fda0, mulmod(mload(0x2fd80), mload(0x14f60), f_q)) +mstore(0x2fdc0, addmod(mload(0x2fc60), sub(f_q, mload(0x2fda0)), f_q)) +mstore(0x2fde0, mulmod(mload(0x2fdc0), mload(0x29860), f_q)) +mstore(0x2fe00, addmod(mload(0x2fb60), mload(0x2fde0), f_q)) +mstore(0x2fe20, mulmod(mload(0x8060), mload(0x2fe00), f_q)) +mstore(0x2fe40, mulmod(mload(0x12820), mload(0x5520), f_q)) +mstore(0x2fe60, addmod(mload(0xa440), mload(0x2fe40), f_q)) +mstore(0x2fe80, addmod(mload(0x2fe60), mload(0x5580), f_q)) +mstore(0x2fea0, mulmod(mload(0x12840), mload(0x5520), f_q)) +mstore(0x2fec0, addmod(mload(0xa4c0), mload(0x2fea0), f_q)) +mstore(0x2fee0, addmod(mload(0x2fec0), mload(0x5580), f_q)) +mstore(0x2ff00, mulmod(mload(0x2fee0), mload(0x2fe80), f_q)) +mstore(0x2ff20, mulmod(mload(0x2ff00), mload(0x14fe0), f_q)) +mstore(0x2ff40, mulmod(1241212643121508019049299726852606273223340304485281639623262479434468541060, mload(0x5520), f_q)) +mstore(0x2ff60, mulmod(mload(0x8180), mload(0x2ff40), f_q)) +mstore(0x2ff80, addmod(mload(0xa440), mload(0x2ff60), f_q)) +mstore(0x2ffa0, addmod(mload(0x2ff80), mload(0x5580), f_q)) +mstore(0x2ffc0, mulmod(15745102887518821294383863047204207326863769047256749322889829581059832107797, mload(0x5520), f_q)) +mstore(0x2ffe0, mulmod(mload(0x8180), mload(0x2ffc0), f_q)) +mstore(0x30000, addmod(mload(0xa4c0), mload(0x2ffe0), f_q)) +mstore(0x30020, addmod(mload(0x30000), mload(0x5580), f_q)) +mstore(0x30040, mulmod(mload(0x30020), mload(0x2ffa0), f_q)) +mstore(0x30060, mulmod(mload(0x30040), mload(0x14fc0), f_q)) +mstore(0x30080, addmod(mload(0x2ff20), sub(f_q, mload(0x30060)), f_q)) +mstore(0x300a0, mulmod(mload(0x30080), mload(0x29860), f_q)) +mstore(0x300c0, addmod(mload(0x2fe20), mload(0x300a0), f_q)) +mstore(0x300e0, mulmod(mload(0x8060), mload(0x300c0), f_q)) +mstore(0x30100, mulmod(mload(0x12860), mload(0x5520), f_q)) +mstore(0x30120, addmod(mload(0xa540), mload(0x30100), f_q)) +mstore(0x30140, addmod(mload(0x30120), mload(0x5580), f_q)) +mstore(0x30160, mulmod(mload(0x12880), mload(0x5520), f_q)) +mstore(0x30180, addmod(mload(0xa5c0), mload(0x30160), f_q)) +mstore(0x301a0, addmod(mload(0x30180), mload(0x5580), f_q)) +mstore(0x301c0, mulmod(mload(0x301a0), mload(0x30140), f_q)) +mstore(0x301e0, mulmod(mload(0x301c0), mload(0x15040), f_q)) +mstore(0x30200, mulmod(1749988317198440129070272064915896350963482692477065743883530243730038761537, mload(0x5520), f_q)) +mstore(0x30220, mulmod(mload(0x8180), mload(0x30200), f_q)) +mstore(0x30240, addmod(mload(0xa540), mload(0x30220), f_q)) +mstore(0x30260, addmod(mload(0x30240), mload(0x5580), f_q)) +mstore(0x30280, mulmod(6340448740375473981358444578371664437203963828628475410919939561900122255351, mload(0x5520), f_q)) +mstore(0x302a0, mulmod(mload(0x8180), mload(0x30280), f_q)) +mstore(0x302c0, addmod(mload(0xa5c0), mload(0x302a0), f_q)) +mstore(0x302e0, addmod(mload(0x302c0), mload(0x5580), f_q)) +mstore(0x30300, mulmod(mload(0x302e0), mload(0x30260), f_q)) +mstore(0x30320, mulmod(mload(0x30300), mload(0x15020), f_q)) +mstore(0x30340, addmod(mload(0x301e0), sub(f_q, mload(0x30320)), f_q)) +mstore(0x30360, mulmod(mload(0x30340), mload(0x29860), f_q)) +mstore(0x30380, addmod(mload(0x300e0), mload(0x30360), f_q)) +mstore(0x303a0, mulmod(mload(0x8060), mload(0x30380), f_q)) +mstore(0x303c0, mulmod(mload(0x128a0), mload(0x5520), f_q)) +mstore(0x303e0, addmod(mload(0xa640), mload(0x303c0), f_q)) +mstore(0x30400, addmod(mload(0x303e0), mload(0x5580), f_q)) +mstore(0x30420, mulmod(mload(0x128c0), mload(0x5520), f_q)) +mstore(0x30440, addmod(mload(0xa6c0), mload(0x30420), f_q)) +mstore(0x30460, addmod(mload(0x30440), mload(0x5580), f_q)) +mstore(0x30480, mulmod(mload(0x30460), mload(0x30400), f_q)) +mstore(0x304a0, mulmod(mload(0x30480), mload(0x150a0), f_q)) +mstore(0x304c0, mulmod(18164177043168076098183583101193157767925471376592524341915442876833273010305, mload(0x5520), f_q)) +mstore(0x304e0, mulmod(mload(0x8180), mload(0x304c0), f_q)) +mstore(0x30500, addmod(mload(0xa640), mload(0x304e0), f_q)) +mstore(0x30520, addmod(mload(0x30500), mload(0x5580), f_q)) +mstore(0x30540, mulmod(16533968935362755881540766023513717680399964697546636518559847805511003213555, mload(0x5520), f_q)) +mstore(0x30560, mulmod(mload(0x8180), mload(0x30540), f_q)) +mstore(0x30580, addmod(mload(0xa6c0), mload(0x30560), f_q)) +mstore(0x305a0, addmod(mload(0x30580), mload(0x5580), f_q)) +mstore(0x305c0, mulmod(mload(0x305a0), mload(0x30520), f_q)) +mstore(0x305e0, mulmod(mload(0x305c0), mload(0x15080), f_q)) +mstore(0x30600, addmod(mload(0x304a0), sub(f_q, mload(0x305e0)), f_q)) +mstore(0x30620, mulmod(mload(0x30600), mload(0x29860), f_q)) +mstore(0x30640, addmod(mload(0x303a0), mload(0x30620), f_q)) +mstore(0x30660, mulmod(mload(0x8060), mload(0x30640), f_q)) +mstore(0x30680, mulmod(mload(0x128e0), mload(0x5520), f_q)) +mstore(0x306a0, addmod(mload(0xa740), mload(0x30680), f_q)) +mstore(0x306c0, addmod(mload(0x306a0), mload(0x5580), f_q)) +mstore(0x306e0, mulmod(mload(0x12900), mload(0x5520), f_q)) +mstore(0x30700, addmod(mload(0xa7c0), mload(0x306e0), f_q)) +mstore(0x30720, addmod(mload(0x30700), mload(0x5580), f_q)) +mstore(0x30740, mulmod(mload(0x30720), mload(0x306c0), f_q)) +mstore(0x30760, mulmod(mload(0x30740), mload(0x15100), f_q)) +mstore(0x30780, mulmod(14715623512998617279040348845455383990900547868044246504053714221296067403851, mload(0x5520), f_q)) +mstore(0x307a0, mulmod(mload(0x8180), mload(0x30780), f_q)) +mstore(0x307c0, addmod(mload(0xa740), mload(0x307a0), f_q)) +mstore(0x307e0, addmod(mload(0x307c0), mload(0x5580), f_q)) +mstore(0x30800, mulmod(10894655135571271964721300098616606426890650365128561837577723397870493736656, mload(0x5520), f_q)) +mstore(0x30820, mulmod(mload(0x8180), mload(0x30800), f_q)) +mstore(0x30840, addmod(mload(0xa7c0), mload(0x30820), f_q)) +mstore(0x30860, addmod(mload(0x30840), mload(0x5580), f_q)) +mstore(0x30880, mulmod(mload(0x30860), mload(0x307e0), f_q)) +mstore(0x308a0, mulmod(mload(0x30880), mload(0x150e0), f_q)) +mstore(0x308c0, addmod(mload(0x30760), sub(f_q, mload(0x308a0)), f_q)) +mstore(0x308e0, mulmod(mload(0x308c0), mload(0x29860), f_q)) +mstore(0x30900, addmod(mload(0x30660), mload(0x308e0), f_q)) +mstore(0x30920, mulmod(mload(0x8060), mload(0x30900), f_q)) +mstore(0x30940, mulmod(mload(0x12920), mload(0x5520), f_q)) +mstore(0x30960, addmod(mload(0xa840), mload(0x30940), f_q)) +mstore(0x30980, addmod(mload(0x30960), mload(0x5580), f_q)) +mstore(0x309a0, mulmod(mload(0x12940), mload(0x5520), f_q)) +mstore(0x309c0, addmod(mload(0xa8c0), mload(0x309a0), f_q)) +mstore(0x309e0, addmod(mload(0x309c0), mload(0x5580), f_q)) +mstore(0x30a00, mulmod(mload(0x309e0), mload(0x30980), f_q)) +mstore(0x30a20, mulmod(mload(0x30a00), mload(0x15160), f_q)) +mstore(0x30a40, mulmod(6634127215978239876718805027197644900822796135745519823837126996124743339547, mload(0x5520), f_q)) +mstore(0x30a60, mulmod(mload(0x8180), mload(0x30a40), f_q)) +mstore(0x30a80, addmod(mload(0xa840), mload(0x30a60), f_q)) +mstore(0x30aa0, addmod(mload(0x30a80), mload(0x5580), f_q)) +mstore(0x30ac0, mulmod(14101571890040056040120975575376430128352518807018751970237795413262039724112, mload(0x5520), f_q)) +mstore(0x30ae0, mulmod(mload(0x8180), mload(0x30ac0), f_q)) +mstore(0x30b00, addmod(mload(0xa8c0), mload(0x30ae0), f_q)) +mstore(0x30b20, addmod(mload(0x30b00), mload(0x5580), f_q)) +mstore(0x30b40, mulmod(mload(0x30b20), mload(0x30aa0), f_q)) +mstore(0x30b60, mulmod(mload(0x30b40), mload(0x15140), f_q)) +mstore(0x30b80, addmod(mload(0x30a20), sub(f_q, mload(0x30b60)), f_q)) +mstore(0x30ba0, mulmod(mload(0x30b80), mload(0x29860), f_q)) +mstore(0x30bc0, addmod(mload(0x30920), mload(0x30ba0), f_q)) +mstore(0x30be0, mulmod(mload(0x8060), mload(0x30bc0), f_q)) +mstore(0x30c00, mulmod(mload(0x12960), mload(0x5520), f_q)) +mstore(0x30c20, addmod(mload(0xa940), mload(0x30c00), f_q)) +mstore(0x30c40, addmod(mload(0x30c20), mload(0x5580), f_q)) +mstore(0x30c60, mulmod(mload(0x12980), mload(0x5520), f_q)) +mstore(0x30c80, addmod(mload(0xa9c0), mload(0x30c60), f_q)) +mstore(0x30ca0, addmod(mload(0x30c80), mload(0x5580), f_q)) +mstore(0x30cc0, mulmod(mload(0x30ca0), mload(0x30c40), f_q)) +mstore(0x30ce0, mulmod(mload(0x30cc0), mload(0x151c0), f_q)) +mstore(0x30d00, mulmod(1344330101427621860678743816515744131479325963991678014483356482936288165423, mload(0x5520), f_q)) +mstore(0x30d20, mulmod(mload(0x8180), mload(0x30d00), f_q)) +mstore(0x30d40, addmod(mload(0xa940), mload(0x30d20), f_q)) +mstore(0x30d60, addmod(mload(0x30d40), mload(0x5580), f_q)) +mstore(0x30d80, mulmod(17960152228085105759038936681276319162054876397435238124971537872272944474671, mload(0x5520), f_q)) +mstore(0x30da0, mulmod(mload(0x8180), mload(0x30d80), f_q)) +mstore(0x30dc0, addmod(mload(0xa9c0), mload(0x30da0), f_q)) +mstore(0x30de0, addmod(mload(0x30dc0), mload(0x5580), f_q)) +mstore(0x30e00, mulmod(mload(0x30de0), mload(0x30d60), f_q)) +mstore(0x30e20, mulmod(mload(0x30e00), mload(0x151a0), f_q)) +mstore(0x30e40, addmod(mload(0x30ce0), sub(f_q, mload(0x30e20)), f_q)) +mstore(0x30e60, mulmod(mload(0x30e40), mload(0x29860), f_q)) +mstore(0x30e80, addmod(mload(0x30be0), mload(0x30e60), f_q)) +mstore(0x30ea0, mulmod(mload(0x8060), mload(0x30e80), f_q)) +mstore(0x30ec0, mulmod(mload(0x129a0), mload(0x5520), f_q)) +mstore(0x30ee0, addmod(mload(0xaa40), mload(0x30ec0), f_q)) +mstore(0x30f00, addmod(mload(0x30ee0), mload(0x5580), f_q)) +mstore(0x30f20, mulmod(mload(0x129c0), mload(0x5520), f_q)) +mstore(0x30f40, addmod(mload(0xaac0), mload(0x30f20), f_q)) +mstore(0x30f60, addmod(mload(0x30f40), mload(0x5580), f_q)) +mstore(0x30f80, mulmod(mload(0x30f60), mload(0x30f00), f_q)) +mstore(0x30fa0, mulmod(mload(0x30f80), mload(0x15220), f_q)) +mstore(0x30fc0, mulmod(4809297275814474806111346538849934850873090790895850540796437070249538836598, mload(0x5520), f_q)) +mstore(0x30fe0, mulmod(mload(0x8180), mload(0x30fc0), f_q)) +mstore(0x31000, addmod(mload(0xaa40), mload(0x30fe0), f_q)) +mstore(0x31020, addmod(mload(0x31000), mload(0x5580), f_q)) +mstore(0x31040, mulmod(16821090262581776507852839750724275861280635434854664985197719025327983006755, mload(0x5520), f_q)) +mstore(0x31060, mulmod(mload(0x8180), mload(0x31040), f_q)) +mstore(0x31080, addmod(mload(0xaac0), mload(0x31060), f_q)) +mstore(0x310a0, addmod(mload(0x31080), mload(0x5580), f_q)) +mstore(0x310c0, mulmod(mload(0x310a0), mload(0x31020), f_q)) +mstore(0x310e0, mulmod(mload(0x310c0), mload(0x15200), f_q)) +mstore(0x31100, addmod(mload(0x30fa0), sub(f_q, mload(0x310e0)), f_q)) +mstore(0x31120, mulmod(mload(0x31100), mload(0x29860), f_q)) +mstore(0x31140, addmod(mload(0x30ea0), mload(0x31120), f_q)) +mstore(0x31160, mulmod(mload(0x8060), mload(0x31140), f_q)) +mstore(0x31180, mulmod(mload(0x129e0), mload(0x5520), f_q)) +mstore(0x311a0, addmod(mload(0xab40), mload(0x31180), f_q)) +mstore(0x311c0, addmod(mload(0x311a0), mload(0x5580), f_q)) +mstore(0x311e0, mulmod(mload(0x12a00), mload(0x5520), f_q)) +mstore(0x31200, addmod(mload(0xabc0), mload(0x311e0), f_q)) +mstore(0x31220, addmod(mload(0x31200), mload(0x5580), f_q)) +mstore(0x31240, mulmod(mload(0x31220), mload(0x311c0), f_q)) +mstore(0x31260, mulmod(mload(0x31240), mload(0x15280), f_q)) +mstore(0x31280, mulmod(20665523799564204263626900998015682400036360189800088518002780479341678471921, mload(0x5520), f_q)) +mstore(0x312a0, mulmod(mload(0x8180), mload(0x31280), f_q)) +mstore(0x312c0, addmod(mload(0xab40), mload(0x312a0), f_q)) +mstore(0x312e0, addmod(mload(0x312c0), mload(0x5580), f_q)) +mstore(0x31300, mulmod(16432206903762192796495793026577897703092843757311845950114896784369788592156, mload(0x5520), f_q)) +mstore(0x31320, mulmod(mload(0x8180), mload(0x31300), f_q)) +mstore(0x31340, addmod(mload(0xabc0), mload(0x31320), f_q)) +mstore(0x31360, addmod(mload(0x31340), mload(0x5580), f_q)) +mstore(0x31380, mulmod(mload(0x31360), mload(0x312e0), f_q)) +mstore(0x313a0, mulmod(mload(0x31380), mload(0x15260), f_q)) +mstore(0x313c0, addmod(mload(0x31260), sub(f_q, mload(0x313a0)), f_q)) +mstore(0x313e0, mulmod(mload(0x313c0), mload(0x29860), f_q)) +mstore(0x31400, addmod(mload(0x31160), mload(0x313e0), f_q)) +mstore(0x31420, mulmod(mload(0x8060), mload(0x31400), f_q)) +mstore(0x31440, mulmod(mload(0x12a20), mload(0x5520), f_q)) +mstore(0x31460, addmod(mload(0xac40), mload(0x31440), f_q)) +mstore(0x31480, addmod(mload(0x31460), mload(0x5580), f_q)) +mstore(0x314a0, mulmod(mload(0x12a40), mload(0x5520), f_q)) +mstore(0x314c0, addmod(mload(0xacc0), mload(0x314a0), f_q)) +mstore(0x314e0, addmod(mload(0x314c0), mload(0x5580), f_q)) +mstore(0x31500, mulmod(mload(0x314e0), mload(0x31480), f_q)) +mstore(0x31520, mulmod(mload(0x31500), mload(0x152e0), f_q)) +mstore(0x31540, mulmod(5665269794706526025088547761328347072687506467262661256582278687262678307721, mload(0x5520), f_q)) +mstore(0x31560, mulmod(mload(0x8180), mload(0x31540), f_q)) +mstore(0x31580, addmod(mload(0xac40), mload(0x31560), f_q)) +mstore(0x315a0, addmod(mload(0x31580), mload(0x5580), f_q)) +mstore(0x315c0, mulmod(15958080770382767190241204250616720844902047180538348505527599949946271198683, mload(0x5520), f_q)) +mstore(0x315e0, mulmod(mload(0x8180), mload(0x315c0), f_q)) +mstore(0x31600, addmod(mload(0xacc0), mload(0x315e0), f_q)) +mstore(0x31620, addmod(mload(0x31600), mload(0x5580), f_q)) +mstore(0x31640, mulmod(mload(0x31620), mload(0x315a0), f_q)) +mstore(0x31660, mulmod(mload(0x31640), mload(0x152c0), f_q)) +mstore(0x31680, addmod(mload(0x31520), sub(f_q, mload(0x31660)), f_q)) +mstore(0x316a0, mulmod(mload(0x31680), mload(0x29860), f_q)) +mstore(0x316c0, addmod(mload(0x31420), mload(0x316a0), f_q)) +mstore(0x316e0, mulmod(mload(0x8060), mload(0x316c0), f_q)) +mstore(0x31700, mulmod(mload(0x12a60), mload(0x5520), f_q)) +mstore(0x31720, addmod(mload(0xad40), mload(0x31700), f_q)) +mstore(0x31740, addmod(mload(0x31720), mload(0x5580), f_q)) +mstore(0x31760, mulmod(mload(0x12a80), mload(0x5520), f_q)) +mstore(0x31780, addmod(mload(0xadc0), mload(0x31760), f_q)) +mstore(0x317a0, addmod(mload(0x31780), mload(0x5580), f_q)) +mstore(0x317c0, mulmod(mload(0x317a0), mload(0x31740), f_q)) +mstore(0x317e0, mulmod(mload(0x317c0), mload(0x15340), f_q)) +mstore(0x31800, mulmod(1320702916347721767143104891070218875365883076445746731102791673490445999404, mload(0x5520), f_q)) +mstore(0x31820, mulmod(mload(0x8180), mload(0x31800), f_q)) +mstore(0x31840, addmod(mload(0xad40), mload(0x31820), f_q)) +mstore(0x31860, addmod(mload(0x31840), mload(0x5580), f_q)) +mstore(0x31880, mulmod(20959094976513806400516695497493441151214646366600898444955954161659066445095, mload(0x5520), f_q)) +mstore(0x318a0, mulmod(mload(0x8180), mload(0x31880), f_q)) +mstore(0x318c0, addmod(mload(0xadc0), mload(0x318a0), f_q)) +mstore(0x318e0, addmod(mload(0x318c0), mload(0x5580), f_q)) +mstore(0x31900, mulmod(mload(0x318e0), mload(0x31860), f_q)) +mstore(0x31920, mulmod(mload(0x31900), mload(0x15320), f_q)) +mstore(0x31940, addmod(mload(0x317e0), sub(f_q, mload(0x31920)), f_q)) +mstore(0x31960, mulmod(mload(0x31940), mload(0x29860), f_q)) +mstore(0x31980, addmod(mload(0x316e0), mload(0x31960), f_q)) +mstore(0x319a0, mulmod(mload(0x8060), mload(0x31980), f_q)) +mstore(0x319c0, mulmod(mload(0x12aa0), mload(0x5520), f_q)) +mstore(0x319e0, addmod(mload(0xae40), mload(0x319c0), f_q)) +mstore(0x31a00, addmod(mload(0x319e0), mload(0x5580), f_q)) +mstore(0x31a20, mulmod(mload(0x12ac0), mload(0x5520), f_q)) +mstore(0x31a40, addmod(mload(0xaec0), mload(0x31a20), f_q)) +mstore(0x31a60, addmod(mload(0x31a40), mload(0x5580), f_q)) +mstore(0x31a80, mulmod(mload(0x31a60), mload(0x31a00), f_q)) +mstore(0x31aa0, mulmod(mload(0x31a80), mload(0x153a0), f_q)) +mstore(0x31ac0, mulmod(15145811406908182324415080519554989543142357316072111654870185613875987369016, mload(0x5520), f_q)) +mstore(0x31ae0, mulmod(mload(0x8180), mload(0x31ac0), f_q)) +mstore(0x31b00, addmod(mload(0xae40), mload(0x31ae0), f_q)) +mstore(0x31b20, addmod(mload(0x31b00), mload(0x5580), f_q)) +mstore(0x31b40, mulmod(2275988452475085384253244367595381625588682584662818622680642396815071331529, mload(0x5520), f_q)) +mstore(0x31b60, mulmod(mload(0x8180), mload(0x31b40), f_q)) +mstore(0x31b80, addmod(mload(0xaec0), mload(0x31b60), f_q)) +mstore(0x31ba0, addmod(mload(0x31b80), mload(0x5580), f_q)) +mstore(0x31bc0, mulmod(mload(0x31ba0), mload(0x31b20), f_q)) +mstore(0x31be0, mulmod(mload(0x31bc0), mload(0x15380), f_q)) +mstore(0x31c00, addmod(mload(0x31aa0), sub(f_q, mload(0x31be0)), f_q)) +mstore(0x31c20, mulmod(mload(0x31c00), mload(0x29860), f_q)) +mstore(0x31c40, addmod(mload(0x319a0), mload(0x31c20), f_q)) +mstore(0x31c60, mulmod(mload(0x8060), mload(0x31c40), f_q)) +mstore(0x31c80, mulmod(mload(0x12ae0), mload(0x5520), f_q)) +mstore(0x31ca0, addmod(mload(0xaf40), mload(0x31c80), f_q)) +mstore(0x31cc0, addmod(mload(0x31ca0), mload(0x5580), f_q)) +mstore(0x31ce0, mulmod(mload(0x12b00), mload(0x5520), f_q)) +mstore(0x31d00, addmod(mload(0xafc0), mload(0x31ce0), f_q)) +mstore(0x31d20, addmod(mload(0x31d00), mload(0x5580), f_q)) +mstore(0x31d40, mulmod(mload(0x31d20), mload(0x31cc0), f_q)) +mstore(0x31d60, mulmod(mload(0x31d40), mload(0x15400), f_q)) +mstore(0x31d80, mulmod(7190867284724023488495738180463601792562136500799491015746791169349382822782, mload(0x5520), f_q)) +mstore(0x31da0, mulmod(mload(0x8180), mload(0x31d80), f_q)) +mstore(0x31dc0, addmod(mload(0xaf40), mload(0x31da0), f_q)) +mstore(0x31de0, addmod(mload(0x31dc0), mload(0x5580), f_q)) +mstore(0x31e00, mulmod(18431385562050565007112872052087190023117366719292679316221237971335364198125, mload(0x5520), f_q)) +mstore(0x31e20, mulmod(mload(0x8180), mload(0x31e00), f_q)) +mstore(0x31e40, addmod(mload(0xafc0), mload(0x31e20), f_q)) +mstore(0x31e60, addmod(mload(0x31e40), mload(0x5580), f_q)) +mstore(0x31e80, mulmod(mload(0x31e60), mload(0x31de0), f_q)) +mstore(0x31ea0, mulmod(mload(0x31e80), mload(0x153e0), f_q)) +mstore(0x31ec0, addmod(mload(0x31d60), sub(f_q, mload(0x31ea0)), f_q)) +mstore(0x31ee0, mulmod(mload(0x31ec0), mload(0x29860), f_q)) +mstore(0x31f00, addmod(mload(0x31c60), mload(0x31ee0), f_q)) +mstore(0x31f20, mulmod(mload(0x8060), mload(0x31f00), f_q)) +mstore(0x31f40, mulmod(mload(0x12b20), mload(0x5520), f_q)) +mstore(0x31f60, addmod(mload(0xb040), mload(0x31f40), f_q)) +mstore(0x31f80, addmod(mload(0x31f60), mload(0x5580), f_q)) +mstore(0x31fa0, mulmod(mload(0x12b40), mload(0x5520), f_q)) +mstore(0x31fc0, addmod(mload(0xb0c0), mload(0x31fa0), f_q)) +mstore(0x31fe0, addmod(mload(0x31fc0), mload(0x5580), f_q)) +mstore(0x32000, mulmod(mload(0x31fe0), mload(0x31f80), f_q)) +mstore(0x32020, mulmod(mload(0x32000), mload(0x15460), f_q)) +mstore(0x32040, mulmod(21641653603371600002078967839630982377242045542751099425724185278289644535605, mload(0x5520), f_q)) +mstore(0x32060, mulmod(mload(0x8180), mload(0x32040), f_q)) +mstore(0x32080, addmod(mload(0xb040), mload(0x32060), f_q)) +mstore(0x320a0, addmod(mload(0x32080), mload(0x5580), f_q)) +mstore(0x320c0, mulmod(8149967525914748261317301338929688313317387300050778920638875680190307699315, mload(0x5520), f_q)) +mstore(0x320e0, mulmod(mload(0x8180), mload(0x320c0), f_q)) +mstore(0x32100, addmod(mload(0xb0c0), mload(0x320e0), f_q)) +mstore(0x32120, addmod(mload(0x32100), mload(0x5580), f_q)) +mstore(0x32140, mulmod(mload(0x32120), mload(0x320a0), f_q)) +mstore(0x32160, mulmod(mload(0x32140), mload(0x15440), f_q)) +mstore(0x32180, addmod(mload(0x32020), sub(f_q, mload(0x32160)), f_q)) +mstore(0x321a0, mulmod(mload(0x32180), mload(0x29860), f_q)) +mstore(0x321c0, addmod(mload(0x31f20), mload(0x321a0), f_q)) +mstore(0x321e0, mulmod(mload(0x8060), mload(0x321c0), f_q)) +mstore(0x32200, mulmod(mload(0x12b60), mload(0x5520), f_q)) +mstore(0x32220, addmod(mload(0xb140), mload(0x32200), f_q)) +mstore(0x32240, addmod(mload(0x32220), mload(0x5580), f_q)) +mstore(0x32260, mulmod(mload(0x12b80), mload(0x5520), f_q)) +mstore(0x32280, addmod(mload(0xb1c0), mload(0x32260), f_q)) +mstore(0x322a0, addmod(mload(0x32280), mload(0x5580), f_q)) +mstore(0x322c0, mulmod(mload(0x322a0), mload(0x32240), f_q)) +mstore(0x322e0, mulmod(mload(0x322c0), mload(0x154c0), f_q)) +mstore(0x32300, mulmod(16756674855669182178516148907155867977934184313691888785005661968779679002867, mload(0x5520), f_q)) +mstore(0x32320, mulmod(mload(0x8180), mload(0x32300), f_q)) +mstore(0x32340, addmod(mload(0xb140), mload(0x32320), f_q)) +mstore(0x32360, addmod(mload(0x32340), mload(0x5580), f_q)) +mstore(0x32380, mulmod(605327150734513166632123353990358818003182372867233791633382585429134992666, mload(0x5520), f_q)) +mstore(0x323a0, mulmod(mload(0x8180), mload(0x32380), f_q)) +mstore(0x323c0, addmod(mload(0xb1c0), mload(0x323a0), f_q)) +mstore(0x323e0, addmod(mload(0x323c0), mload(0x5580), f_q)) +mstore(0x32400, mulmod(mload(0x323e0), mload(0x32360), f_q)) +mstore(0x32420, mulmod(mload(0x32400), mload(0x154a0), f_q)) +mstore(0x32440, addmod(mload(0x322e0), sub(f_q, mload(0x32420)), f_q)) +mstore(0x32460, mulmod(mload(0x32440), mload(0x29860), f_q)) +mstore(0x32480, addmod(mload(0x321e0), mload(0x32460), f_q)) +mstore(0x324a0, mulmod(mload(0x8060), mload(0x32480), f_q)) +mstore(0x324c0, mulmod(mload(0x12ba0), mload(0x5520), f_q)) +mstore(0x324e0, addmod(mload(0xb240), mload(0x324c0), f_q)) +mstore(0x32500, addmod(mload(0x324e0), mload(0x5580), f_q)) +mstore(0x32520, mulmod(mload(0x12bc0), mload(0x5520), f_q)) +mstore(0x32540, addmod(mload(0xb2c0), mload(0x32520), f_q)) +mstore(0x32560, addmod(mload(0x32540), mload(0x5580), f_q)) +mstore(0x32580, mulmod(mload(0x32560), mload(0x32500), f_q)) +mstore(0x325a0, mulmod(mload(0x32580), mload(0x15520), f_q)) +mstore(0x325c0, mulmod(21843485039097354681613930108729429517247107661944499644391619128280370609022, mload(0x5520), f_q)) +mstore(0x325e0, mulmod(mload(0x8180), mload(0x325c0), f_q)) +mstore(0x32600, addmod(mload(0xb240), mload(0x325e0), f_q)) +mstore(0x32620, addmod(mload(0x32600), mload(0x5580), f_q)) +mstore(0x32640, mulmod(14514367656282777598260135840485185344299836453836106323510288305894268471278, mload(0x5520), f_q)) +mstore(0x32660, mulmod(mload(0x8180), mload(0x32640), f_q)) +mstore(0x32680, addmod(mload(0xb2c0), mload(0x32660), f_q)) +mstore(0x326a0, addmod(mload(0x32680), mload(0x5580), f_q)) +mstore(0x326c0, mulmod(mload(0x326a0), mload(0x32620), f_q)) +mstore(0x326e0, mulmod(mload(0x326c0), mload(0x15500), f_q)) +mstore(0x32700, addmod(mload(0x325a0), sub(f_q, mload(0x326e0)), f_q)) +mstore(0x32720, mulmod(mload(0x32700), mload(0x29860), f_q)) +mstore(0x32740, addmod(mload(0x324a0), mload(0x32720), f_q)) +mstore(0x32760, mulmod(mload(0x8060), mload(0x32740), f_q)) +mstore(0x32780, mulmod(mload(0x12be0), mload(0x5520), f_q)) +mstore(0x327a0, addmod(mload(0xb340), mload(0x32780), f_q)) +mstore(0x327c0, addmod(mload(0x327a0), mload(0x5580), f_q)) +mstore(0x327e0, mulmod(mload(0x12c00), mload(0x5520), f_q)) +mstore(0x32800, addmod(mload(0xb3c0), mload(0x327e0), f_q)) +mstore(0x32820, addmod(mload(0x32800), mload(0x5580), f_q)) +mstore(0x32840, mulmod(mload(0x32820), mload(0x327c0), f_q)) +mstore(0x32860, mulmod(mload(0x32840), mload(0x15580), f_q)) +mstore(0x32880, mulmod(14300538592833156893679692221044471953659178814344301013324395915029963717282, mload(0x5520), f_q)) +mstore(0x328a0, mulmod(mload(0x8180), mload(0x32880), f_q)) +mstore(0x328c0, addmod(mload(0xb340), mload(0x328a0), f_q)) +mstore(0x328e0, addmod(mload(0x328c0), mload(0x5580), f_q)) +mstore(0x32900, mulmod(997287635668648752969562896324086611905591769229107311203220590850807106359, mload(0x5520), f_q)) +mstore(0x32920, mulmod(mload(0x8180), mload(0x32900), f_q)) +mstore(0x32940, addmod(mload(0xb3c0), mload(0x32920), f_q)) +mstore(0x32960, addmod(mload(0x32940), mload(0x5580), f_q)) +mstore(0x32980, mulmod(mload(0x32960), mload(0x328e0), f_q)) +mstore(0x329a0, mulmod(mload(0x32980), mload(0x15560), f_q)) +mstore(0x329c0, addmod(mload(0x32860), sub(f_q, mload(0x329a0)), f_q)) +mstore(0x329e0, mulmod(mload(0x329c0), mload(0x29860), f_q)) +mstore(0x32a00, addmod(mload(0x32760), mload(0x329e0), f_q)) +mstore(0x32a20, mulmod(mload(0x8060), mload(0x32a00), f_q)) +mstore(0x32a40, mulmod(mload(0x12c20), mload(0x5520), f_q)) +mstore(0x32a60, addmod(mload(0xb440), mload(0x32a40), f_q)) +mstore(0x32a80, addmod(mload(0x32a60), mload(0x5580), f_q)) +mstore(0x32aa0, mulmod(mload(0x12c40), mload(0x5520), f_q)) +mstore(0x32ac0, addmod(mload(0xb4c0), mload(0x32aa0), f_q)) +mstore(0x32ae0, addmod(mload(0x32ac0), mload(0x5580), f_q)) +mstore(0x32b00, mulmod(mload(0x32ae0), mload(0x32a80), f_q)) +mstore(0x32b20, mulmod(mload(0x32b00), mload(0x155e0), f_q)) +mstore(0x32b40, mulmod(4100117294976215066138254959587129429330643217090044340815591182306855839148, mload(0x5520), f_q)) +mstore(0x32b60, mulmod(mload(0x8180), mload(0x32b40), f_q)) +mstore(0x32b80, addmod(mload(0xb440), mload(0x32b60), f_q)) +mstore(0x32ba0, addmod(mload(0x32b80), mload(0x5580), f_q)) +mstore(0x32bc0, mulmod(16888223540960314386952064655651201893938193815960665892175286298150161730440, mload(0x5520), f_q)) +mstore(0x32be0, mulmod(mload(0x8180), mload(0x32bc0), f_q)) +mstore(0x32c00, addmod(mload(0xb4c0), mload(0x32be0), f_q)) +mstore(0x32c20, addmod(mload(0x32c00), mload(0x5580), f_q)) +mstore(0x32c40, mulmod(mload(0x32c20), mload(0x32ba0), f_q)) +mstore(0x32c60, mulmod(mload(0x32c40), mload(0x155c0), f_q)) +mstore(0x32c80, addmod(mload(0x32b20), sub(f_q, mload(0x32c60)), f_q)) +mstore(0x32ca0, mulmod(mload(0x32c80), mload(0x29860), f_q)) +mstore(0x32cc0, addmod(mload(0x32a20), mload(0x32ca0), f_q)) +mstore(0x32ce0, mulmod(mload(0x8060), mload(0x32cc0), f_q)) +mstore(0x32d00, mulmod(mload(0x12c60), mload(0x5520), f_q)) +mstore(0x32d20, addmod(mload(0xb540), mload(0x32d00), f_q)) +mstore(0x32d40, addmod(mload(0x32d20), mload(0x5580), f_q)) +mstore(0x32d60, mulmod(mload(0x12c80), mload(0x5520), f_q)) +mstore(0x32d80, addmod(mload(0xb5c0), mload(0x32d60), f_q)) +mstore(0x32da0, addmod(mload(0x32d80), mload(0x5580), f_q)) +mstore(0x32dc0, mulmod(mload(0x32da0), mload(0x32d40), f_q)) +mstore(0x32de0, mulmod(mload(0x32dc0), mload(0x15640), f_q)) +mstore(0x32e00, mulmod(4613166774426736524775839736452873027874250683817244412282369943465370666040, mload(0x5520), f_q)) +mstore(0x32e20, mulmod(mload(0x8180), mload(0x32e00), f_q)) +mstore(0x32e40, addmod(mload(0xb540), mload(0x32e20), f_q)) +mstore(0x32e60, addmod(mload(0x32e40), mload(0x5580), f_q)) +mstore(0x32e80, mulmod(18907826133992666989552082750531343179031058258760846965374777663115023238642, mload(0x5520), f_q)) +mstore(0x32ea0, mulmod(mload(0x8180), mload(0x32e80), f_q)) +mstore(0x32ec0, addmod(mload(0xb5c0), mload(0x32ea0), f_q)) +mstore(0x32ee0, addmod(mload(0x32ec0), mload(0x5580), f_q)) +mstore(0x32f00, mulmod(mload(0x32ee0), mload(0x32e60), f_q)) +mstore(0x32f20, mulmod(mload(0x32f00), mload(0x15620), f_q)) +mstore(0x32f40, addmod(mload(0x32de0), sub(f_q, mload(0x32f20)), f_q)) +mstore(0x32f60, mulmod(mload(0x32f40), mload(0x29860), f_q)) +mstore(0x32f80, addmod(mload(0x32ce0), mload(0x32f60), f_q)) +mstore(0x32fa0, mulmod(mload(0x8060), mload(0x32f80), f_q)) +mstore(0x32fc0, mulmod(mload(0x12ca0), mload(0x5520), f_q)) +mstore(0x32fe0, addmod(mload(0xb640), mload(0x32fc0), f_q)) +mstore(0x33000, addmod(mload(0x32fe0), mload(0x5580), f_q)) +mstore(0x33020, mulmod(mload(0x12cc0), mload(0x5520), f_q)) +mstore(0x33040, addmod(mload(0xb6c0), mload(0x33020), f_q)) +mstore(0x33060, addmod(mload(0x33040), mload(0x5580), f_q)) +mstore(0x33080, mulmod(mload(0x33060), mload(0x33000), f_q)) +mstore(0x330a0, mulmod(mload(0x33080), mload(0x156a0), f_q)) +mstore(0x330c0, mulmod(17371860199797671703779918835447513927986415197395889927448820842754090704645, mload(0x5520), f_q)) +mstore(0x330e0, mulmod(mload(0x8180), mload(0x330c0), f_q)) +mstore(0x33100, addmod(mload(0xb640), mload(0x330e0), f_q)) +mstore(0x33120, addmod(mload(0x33100), mload(0x5580), f_q)) +mstore(0x33140, mulmod(13375275016477752594535085076610040539811262826713404483866409084869622474618, mload(0x5520), f_q)) +mstore(0x33160, mulmod(mload(0x8180), mload(0x33140), f_q)) +mstore(0x33180, addmod(mload(0xb6c0), mload(0x33160), f_q)) +mstore(0x331a0, addmod(mload(0x33180), mload(0x5580), f_q)) +mstore(0x331c0, mulmod(mload(0x331a0), mload(0x33120), f_q)) +mstore(0x331e0, mulmod(mload(0x331c0), mload(0x15680), f_q)) +mstore(0x33200, addmod(mload(0x330a0), sub(f_q, mload(0x331e0)), f_q)) +mstore(0x33220, mulmod(mload(0x33200), mload(0x29860), f_q)) +mstore(0x33240, addmod(mload(0x32fa0), mload(0x33220), f_q)) +mstore(0x33260, mulmod(mload(0x8060), mload(0x33240), f_q)) +mstore(0x33280, mulmod(mload(0x12ce0), mload(0x5520), f_q)) +mstore(0x332a0, addmod(mload(0xb740), mload(0x33280), f_q)) +mstore(0x332c0, addmod(mload(0x332a0), mload(0x5580), f_q)) +mstore(0x332e0, mulmod(mload(0x12d00), mload(0x5520), f_q)) +mstore(0x33300, addmod(mload(0xb7c0), mload(0x332e0), f_q)) +mstore(0x33320, addmod(mload(0x33300), mload(0x5580), f_q)) +mstore(0x33340, mulmod(mload(0x33320), mload(0x332c0), f_q)) +mstore(0x33360, mulmod(mload(0x33340), mload(0x15700), f_q)) +mstore(0x33380, mulmod(14895124336179662114813386509802407832418167549404537841585734300013153670740, mload(0x5520), f_q)) +mstore(0x333a0, mulmod(mload(0x8180), mload(0x33380), f_q)) +mstore(0x333c0, addmod(mload(0xb740), mload(0x333a0), f_q)) +mstore(0x333e0, addmod(mload(0x333c0), mload(0x5580), f_q)) +mstore(0x33400, mulmod(11636728688043595393107419770641629817701862616946858721102562790544352544707, mload(0x5520), f_q)) +mstore(0x33420, mulmod(mload(0x8180), mload(0x33400), f_q)) +mstore(0x33440, addmod(mload(0xb7c0), mload(0x33420), f_q)) +mstore(0x33460, addmod(mload(0x33440), mload(0x5580), f_q)) +mstore(0x33480, mulmod(mload(0x33460), mload(0x333e0), f_q)) +mstore(0x334a0, mulmod(mload(0x33480), mload(0x156e0), f_q)) +mstore(0x334c0, addmod(mload(0x33360), sub(f_q, mload(0x334a0)), f_q)) +mstore(0x334e0, mulmod(mload(0x334c0), mload(0x29860), f_q)) +mstore(0x33500, addmod(mload(0x33260), mload(0x334e0), f_q)) +mstore(0x33520, mulmod(mload(0x8060), mload(0x33500), f_q)) +mstore(0x33540, mulmod(mload(0x12d20), mload(0x5520), f_q)) +mstore(0x33560, addmod(mload(0xb840), mload(0x33540), f_q)) +mstore(0x33580, addmod(mload(0x33560), mload(0x5580), f_q)) +mstore(0x335a0, mulmod(mload(0x12d40), mload(0x5520), f_q)) +mstore(0x335c0, addmod(mload(0xb8c0), mload(0x335a0), f_q)) +mstore(0x335e0, addmod(mload(0x335c0), mload(0x5580), f_q)) +mstore(0x33600, mulmod(mload(0x335e0), mload(0x33580), f_q)) +mstore(0x33620, mulmod(mload(0x33600), mload(0x15760), f_q)) +mstore(0x33640, mulmod(12515230373682888339946787517507627087900582140002782306743034589732396248071, mload(0x5520), f_q)) +mstore(0x33660, mulmod(mload(0x8180), mload(0x33640), f_q)) +mstore(0x33680, addmod(mload(0xb840), mload(0x33660), f_q)) +mstore(0x336a0, addmod(mload(0x33680), mload(0x5580), f_q)) +mstore(0x336c0, mulmod(9913650266140683924999526937470094469014083600691073622944033361999668753408, mload(0x5520), f_q)) +mstore(0x336e0, mulmod(mload(0x8180), mload(0x336c0), f_q)) +mstore(0x33700, addmod(mload(0xb8c0), mload(0x336e0), f_q)) +mstore(0x33720, addmod(mload(0x33700), mload(0x5580), f_q)) +mstore(0x33740, mulmod(mload(0x33720), mload(0x336a0), f_q)) +mstore(0x33760, mulmod(mload(0x33740), mload(0x15740), f_q)) +mstore(0x33780, addmod(mload(0x33620), sub(f_q, mload(0x33760)), f_q)) +mstore(0x337a0, mulmod(mload(0x33780), mload(0x29860), f_q)) +mstore(0x337c0, addmod(mload(0x33520), mload(0x337a0), f_q)) +mstore(0x337e0, mulmod(mload(0x8060), mload(0x337c0), f_q)) +mstore(0x33800, mulmod(mload(0x12d60), mload(0x5520), f_q)) +mstore(0x33820, addmod(mload(0xb940), mload(0x33800), f_q)) +mstore(0x33840, addmod(mload(0x33820), mload(0x5580), f_q)) +mstore(0x33860, mulmod(mload(0x12d80), mload(0x5520), f_q)) +mstore(0x33880, addmod(mload(0xb9c0), mload(0x33860), f_q)) +mstore(0x338a0, addmod(mload(0x33880), mload(0x5580), f_q)) +mstore(0x338c0, mulmod(mload(0x338a0), mload(0x33840), f_q)) +mstore(0x338e0, mulmod(mload(0x338c0), mload(0x157c0), f_q)) +mstore(0x33900, mulmod(18856536387618684330743630757879920809434308974062044219544504099711544252200, mload(0x5520), f_q)) +mstore(0x33920, mulmod(mload(0x8180), mload(0x33900), f_q)) +mstore(0x33940, addmod(mload(0xb940), mload(0x33920), f_q)) +mstore(0x33960, addmod(mload(0x33940), mload(0x5580), f_q)) +mstore(0x33980, mulmod(18621728013818621101324953599259352324901415029337493215152917259908575709166, mload(0x5520), f_q)) +mstore(0x339a0, mulmod(mload(0x8180), mload(0x33980), f_q)) +mstore(0x339c0, addmod(mload(0xb9c0), mload(0x339a0), f_q)) +mstore(0x339e0, addmod(mload(0x339c0), mload(0x5580), f_q)) +mstore(0x33a00, mulmod(mload(0x339e0), mload(0x33960), f_q)) +mstore(0x33a20, mulmod(mload(0x33a00), mload(0x157a0), f_q)) +mstore(0x33a40, addmod(mload(0x338e0), sub(f_q, mload(0x33a20)), f_q)) +mstore(0x33a60, mulmod(mload(0x33a40), mload(0x29860), f_q)) +mstore(0x33a80, addmod(mload(0x337e0), mload(0x33a60), f_q)) +mstore(0x33aa0, mulmod(mload(0x8060), mload(0x33a80), f_q)) +mstore(0x33ac0, mulmod(mload(0x12da0), mload(0x5520), f_q)) +mstore(0x33ae0, addmod(mload(0xba40), mload(0x33ac0), f_q)) +mstore(0x33b00, addmod(mload(0x33ae0), mload(0x5580), f_q)) +mstore(0x33b20, mulmod(mload(0x12dc0), mload(0x5520), f_q)) +mstore(0x33b40, addmod(mload(0xbac0), mload(0x33b20), f_q)) +mstore(0x33b60, addmod(mload(0x33b40), mload(0x5580), f_q)) +mstore(0x33b80, mulmod(mload(0x33b60), mload(0x33b00), f_q)) +mstore(0x33ba0, mulmod(mload(0x33b80), mload(0x15820), f_q)) +mstore(0x33bc0, mulmod(13570243941439055486447460649707268847818338043473658125664294661418029477766, mload(0x5520), f_q)) +mstore(0x33be0, mulmod(mload(0x8180), mload(0x33bc0), f_q)) +mstore(0x33c00, addmod(mload(0xba40), mload(0x33be0), f_q)) +mstore(0x33c20, addmod(mload(0x33c00), mload(0x5580), f_q)) +mstore(0x33c40, mulmod(4639188199282459027740085269400225530062387638390576101509694400796289192322, mload(0x5520), f_q)) +mstore(0x33c60, mulmod(mload(0x8180), mload(0x33c40), f_q)) +mstore(0x33c80, addmod(mload(0xbac0), mload(0x33c60), f_q)) +mstore(0x33ca0, addmod(mload(0x33c80), mload(0x5580), f_q)) +mstore(0x33cc0, mulmod(mload(0x33ca0), mload(0x33c20), f_q)) +mstore(0x33ce0, mulmod(mload(0x33cc0), mload(0x15800), f_q)) +mstore(0x33d00, addmod(mload(0x33ba0), sub(f_q, mload(0x33ce0)), f_q)) +mstore(0x33d20, mulmod(mload(0x33d00), mload(0x29860), f_q)) +mstore(0x33d40, addmod(mload(0x33aa0), mload(0x33d20), f_q)) +mstore(0x33d60, mulmod(mload(0x8060), mload(0x33d40), f_q)) +mstore(0x33d80, mulmod(mload(0x12de0), mload(0x5520), f_q)) +mstore(0x33da0, addmod(mload(0xbb40), mload(0x33d80), f_q)) +mstore(0x33dc0, addmod(mload(0x33da0), mload(0x5580), f_q)) +mstore(0x33de0, mulmod(mload(0x12e00), mload(0x5520), f_q)) +mstore(0x33e00, addmod(mload(0xbbc0), mload(0x33de0), f_q)) +mstore(0x33e20, addmod(mload(0x33e00), mload(0x5580), f_q)) +mstore(0x33e40, mulmod(mload(0x33e20), mload(0x33dc0), f_q)) +mstore(0x33e60, mulmod(mload(0x33e40), mload(0x15880), f_q)) +mstore(0x33e80, mulmod(2335434855489185479440052501202080120039231620922689993626687638748144837732, mload(0x5520), f_q)) +mstore(0x33ea0, mulmod(mload(0x8180), mload(0x33e80), f_q)) +mstore(0x33ec0, addmod(mload(0xbb40), mload(0x33ea0), f_q)) +mstore(0x33ee0, addmod(mload(0x33ec0), mload(0x5580), f_q)) +mstore(0x33f00, mulmod(10761759156514374999145865299762729371960998000631145556955195246739710581570, mload(0x5520), f_q)) +mstore(0x33f20, mulmod(mload(0x8180), mload(0x33f00), f_q)) +mstore(0x33f40, addmod(mload(0xbbc0), mload(0x33f20), f_q)) +mstore(0x33f60, addmod(mload(0x33f40), mload(0x5580), f_q)) +mstore(0x33f80, mulmod(mload(0x33f60), mload(0x33ee0), f_q)) +mstore(0x33fa0, mulmod(mload(0x33f80), mload(0x15860), f_q)) +mstore(0x33fc0, addmod(mload(0x33e60), sub(f_q, mload(0x33fa0)), f_q)) +mstore(0x33fe0, mulmod(mload(0x33fc0), mload(0x29860), f_q)) +mstore(0x34000, addmod(mload(0x33d60), mload(0x33fe0), f_q)) +mstore(0x34020, mulmod(mload(0x8060), mload(0x34000), f_q)) +mstore(0x34040, mulmod(mload(0x12e20), mload(0x5520), f_q)) +mstore(0x34060, addmod(mload(0xbc40), mload(0x34040), f_q)) +mstore(0x34080, addmod(mload(0x34060), mload(0x5580), f_q)) +mstore(0x340a0, mulmod(mload(0x12e40), mload(0x5520), f_q)) +mstore(0x340c0, addmod(mload(0xbcc0), mload(0x340a0), f_q)) +mstore(0x340e0, addmod(mload(0x340c0), mload(0x5580), f_q)) +mstore(0x34100, mulmod(mload(0x340e0), mload(0x34080), f_q)) +mstore(0x34120, mulmod(mload(0x34100), mload(0x158e0), f_q)) +mstore(0x34140, mulmod(12236682771092058350379107614335277318584042200010756699848384163488071537790, mload(0x5520), f_q)) +mstore(0x34160, mulmod(mload(0x8180), mload(0x34140), f_q)) +mstore(0x34180, addmod(mload(0xbc40), mload(0x34160), f_q)) +mstore(0x341a0, addmod(mload(0x34180), mload(0x5580), f_q)) +mstore(0x341c0, mulmod(21054126674130490492755296351544051042145283296856046212860100921044432924229, mload(0x5520), f_q)) +mstore(0x341e0, mulmod(mload(0x8180), mload(0x341c0), f_q)) +mstore(0x34200, addmod(mload(0xbcc0), mload(0x341e0), f_q)) +mstore(0x34220, addmod(mload(0x34200), mload(0x5580), f_q)) +mstore(0x34240, mulmod(mload(0x34220), mload(0x341a0), f_q)) +mstore(0x34260, mulmod(mload(0x34240), mload(0x158c0), f_q)) +mstore(0x34280, addmod(mload(0x34120), sub(f_q, mload(0x34260)), f_q)) +mstore(0x342a0, mulmod(mload(0x34280), mload(0x29860), f_q)) +mstore(0x342c0, addmod(mload(0x34020), mload(0x342a0), f_q)) +mstore(0x342e0, mulmod(mload(0x8060), mload(0x342c0), f_q)) +mstore(0x34300, mulmod(mload(0x12e60), mload(0x5520), f_q)) +mstore(0x34320, addmod(mload(0xbd40), mload(0x34300), f_q)) +mstore(0x34340, addmod(mload(0x34320), mload(0x5580), f_q)) +mstore(0x34360, mulmod(mload(0x12e80), mload(0x5520), f_q)) +mstore(0x34380, addmod(mload(0xbdc0), mload(0x34360), f_q)) +mstore(0x343a0, addmod(mload(0x34380), mload(0x5580), f_q)) +mstore(0x343c0, mulmod(mload(0x343a0), mload(0x34340), f_q)) +mstore(0x343e0, mulmod(mload(0x343c0), mload(0x15940), f_q)) +mstore(0x34400, mulmod(17889225603532093316636028330128403902518818302872945288218934284438481163203, mload(0x5520), f_q)) +mstore(0x34420, mulmod(mload(0x8180), mload(0x34400), f_q)) +mstore(0x34440, addmod(mload(0xbd40), mload(0x34420), f_q)) +mstore(0x34460, addmod(mload(0x34440), mload(0x5580), f_q)) +mstore(0x34480, mulmod(18848843276924888180675738685319882030881104297651398699870412596518489100029, mload(0x5520), f_q)) +mstore(0x344a0, mulmod(mload(0x8180), mload(0x34480), f_q)) +mstore(0x344c0, addmod(mload(0xbdc0), mload(0x344a0), f_q)) +mstore(0x344e0, addmod(mload(0x344c0), mload(0x5580), f_q)) +mstore(0x34500, mulmod(mload(0x344e0), mload(0x34460), f_q)) +mstore(0x34520, mulmod(mload(0x34500), mload(0x15920), f_q)) +mstore(0x34540, addmod(mload(0x343e0), sub(f_q, mload(0x34520)), f_q)) +mstore(0x34560, mulmod(mload(0x34540), mload(0x29860), f_q)) +mstore(0x34580, addmod(mload(0x342e0), mload(0x34560), f_q)) +mstore(0x345a0, mulmod(mload(0x8060), mload(0x34580), f_q)) +mstore(0x345c0, mulmod(mload(0x12ea0), mload(0x5520), f_q)) +mstore(0x345e0, addmod(mload(0xbe40), mload(0x345c0), f_q)) +mstore(0x34600, addmod(mload(0x345e0), mload(0x5580), f_q)) +mstore(0x34620, mulmod(mload(0x12ec0), mload(0x5520), f_q)) +mstore(0x34640, addmod(mload(0xbec0), mload(0x34620), f_q)) +mstore(0x34660, addmod(mload(0x34640), mload(0x5580), f_q)) +mstore(0x34680, mulmod(mload(0x34660), mload(0x34600), f_q)) +mstore(0x346a0, mulmod(mload(0x34680), mload(0x159a0), f_q)) +mstore(0x346c0, mulmod(2355909844785567171481529579633004311508346026364555807285100959619691495516, mload(0x5520), f_q)) +mstore(0x346e0, mulmod(mload(0x8180), mload(0x346c0), f_q)) +mstore(0x34700, addmod(mload(0xbe40), mload(0x346e0), f_q)) +mstore(0x34720, addmod(mload(0x34700), mload(0x5580), f_q)) +mstore(0x34740, mulmod(306333805077667855417114110006252454835424715146387288643686909552334329430, mload(0x5520), f_q)) +mstore(0x34760, mulmod(mload(0x8180), mload(0x34740), f_q)) +mstore(0x34780, addmod(mload(0xbec0), mload(0x34760), f_q)) +mstore(0x347a0, addmod(mload(0x34780), mload(0x5580), f_q)) +mstore(0x347c0, mulmod(mload(0x347a0), mload(0x34720), f_q)) +mstore(0x347e0, mulmod(mload(0x347c0), mload(0x15980), f_q)) +mstore(0x34800, addmod(mload(0x346a0), sub(f_q, mload(0x347e0)), f_q)) +mstore(0x34820, mulmod(mload(0x34800), mload(0x29860), f_q)) +mstore(0x34840, addmod(mload(0x345a0), mload(0x34820), f_q)) +mstore(0x34860, mulmod(mload(0x8060), mload(0x34840), f_q)) +mstore(0x34880, mulmod(mload(0x12ee0), mload(0x5520), f_q)) +mstore(0x348a0, addmod(mload(0xbf40), mload(0x34880), f_q)) +mstore(0x348c0, addmod(mload(0x348a0), mload(0x5580), f_q)) +mstore(0x348e0, mulmod(mload(0x12f00), mload(0x5520), f_q)) +mstore(0x34900, addmod(mload(0xbfc0), mload(0x348e0), f_q)) +mstore(0x34920, addmod(mload(0x34900), mload(0x5580), f_q)) +mstore(0x34940, mulmod(mload(0x34920), mload(0x348c0), f_q)) +mstore(0x34960, mulmod(mload(0x34940), mload(0x15a00), f_q)) +mstore(0x34980, mulmod(3577139485880462754127120351709547607785183814680562763440718791307483244525, mload(0x5520), f_q)) +mstore(0x349a0, mulmod(mload(0x8180), mload(0x34980), f_q)) +mstore(0x349c0, addmod(mload(0xbf40), mload(0x349a0), f_q)) +mstore(0x349e0, addmod(mload(0x349c0), mload(0x5580), f_q)) +mstore(0x34a00, mulmod(14506058193734425639555224225032176884770396039125618947434627517458615096929, mload(0x5520), f_q)) +mstore(0x34a20, mulmod(mload(0x8180), mload(0x34a00), f_q)) +mstore(0x34a40, addmod(mload(0xbfc0), mload(0x34a20), f_q)) +mstore(0x34a60, addmod(mload(0x34a40), mload(0x5580), f_q)) +mstore(0x34a80, mulmod(mload(0x34a60), mload(0x349e0), f_q)) +mstore(0x34aa0, mulmod(mload(0x34a80), mload(0x159e0), f_q)) +mstore(0x34ac0, addmod(mload(0x34960), sub(f_q, mload(0x34aa0)), f_q)) +mstore(0x34ae0, mulmod(mload(0x34ac0), mload(0x29860), f_q)) +mstore(0x34b00, addmod(mload(0x34860), mload(0x34ae0), f_q)) +mstore(0x34b20, mulmod(mload(0x8060), mload(0x34b00), f_q)) +mstore(0x34b40, mulmod(mload(0x12f20), mload(0x5520), f_q)) +mstore(0x34b60, addmod(mload(0xc040), mload(0x34b40), f_q)) +mstore(0x34b80, addmod(mload(0x34b60), mload(0x5580), f_q)) +mstore(0x34ba0, mulmod(mload(0x12f40), mload(0x5520), f_q)) +mstore(0x34bc0, addmod(mload(0xc0c0), mload(0x34ba0), f_q)) +mstore(0x34be0, addmod(mload(0x34bc0), mload(0x5580), f_q)) +mstore(0x34c00, mulmod(mload(0x34be0), mload(0x34b80), f_q)) +mstore(0x34c20, mulmod(mload(0x34c00), mload(0x15a60), f_q)) +mstore(0x34c40, mulmod(20675991507880609443627814255363023253917980728390227263868737333586567492453, mload(0x5520), f_q)) +mstore(0x34c60, mulmod(mload(0x8180), mload(0x34c40), f_q)) +mstore(0x34c80, addmod(mload(0xc040), mload(0x34c60), f_q)) +mstore(0x34ca0, addmod(mload(0x34c80), mload(0x5580), f_q)) +mstore(0x34cc0, mulmod(490540290993517038012812947080046263939146661886346830117389531272110346423, mload(0x5520), f_q)) +mstore(0x34ce0, mulmod(mload(0x8180), mload(0x34cc0), f_q)) +mstore(0x34d00, addmod(mload(0xc0c0), mload(0x34ce0), f_q)) +mstore(0x34d20, addmod(mload(0x34d00), mload(0x5580), f_q)) +mstore(0x34d40, mulmod(mload(0x34d20), mload(0x34ca0), f_q)) +mstore(0x34d60, mulmod(mload(0x34d40), mload(0x15a40), f_q)) +mstore(0x34d80, addmod(mload(0x34c20), sub(f_q, mload(0x34d60)), f_q)) +mstore(0x34da0, mulmod(mload(0x34d80), mload(0x29860), f_q)) +mstore(0x34dc0, addmod(mload(0x34b20), mload(0x34da0), f_q)) +mstore(0x34de0, mulmod(mload(0x8060), mload(0x34dc0), f_q)) +mstore(0x34e00, mulmod(mload(0x12f60), mload(0x5520), f_q)) +mstore(0x34e20, addmod(mload(0xc140), mload(0x34e00), f_q)) +mstore(0x34e40, addmod(mload(0x34e20), mload(0x5580), f_q)) +mstore(0x34e60, mulmod(mload(0x12f80), mload(0x5520), f_q)) +mstore(0x34e80, addmod(mload(0xc1c0), mload(0x34e60), f_q)) +mstore(0x34ea0, addmod(mload(0x34e80), mload(0x5580), f_q)) +mstore(0x34ec0, mulmod(mload(0x34ea0), mload(0x34e40), f_q)) +mstore(0x34ee0, mulmod(mload(0x34ec0), mload(0x15ac0), f_q)) +mstore(0x34f00, mulmod(13913944647477429304781468353591617345052557718653361110168150185655481803779, mload(0x5520), f_q)) +mstore(0x34f20, mulmod(mload(0x8180), mload(0x34f00), f_q)) +mstore(0x34f40, addmod(mload(0xc140), mload(0x34f20), f_q)) +mstore(0x34f60, addmod(mload(0x34f40), mload(0x5580), f_q)) +mstore(0x34f80, mulmod(755585062610348499888862474304030903572100988769585972583928513290176037494, mload(0x5520), f_q)) +mstore(0x34fa0, mulmod(mload(0x8180), mload(0x34f80), f_q)) +mstore(0x34fc0, addmod(mload(0xc1c0), mload(0x34fa0), f_q)) +mstore(0x34fe0, addmod(mload(0x34fc0), mload(0x5580), f_q)) +mstore(0x35000, mulmod(mload(0x34fe0), mload(0x34f60), f_q)) +mstore(0x35020, mulmod(mload(0x35000), mload(0x15aa0), f_q)) +mstore(0x35040, addmod(mload(0x34ee0), sub(f_q, mload(0x35020)), f_q)) +mstore(0x35060, mulmod(mload(0x35040), mload(0x29860), f_q)) +mstore(0x35080, addmod(mload(0x34de0), mload(0x35060), f_q)) +mstore(0x350a0, mulmod(mload(0x8060), mload(0x35080), f_q)) +mstore(0x350c0, mulmod(mload(0x12fa0), mload(0x5520), f_q)) +mstore(0x350e0, addmod(mload(0xc240), mload(0x350c0), f_q)) +mstore(0x35100, addmod(mload(0x350e0), mload(0x5580), f_q)) +mstore(0x35120, mulmod(mload(0x12fc0), mload(0x5520), f_q)) +mstore(0x35140, addmod(mload(0xc2c0), mload(0x35120), f_q)) +mstore(0x35160, addmod(mload(0x35140), mload(0x5580), f_q)) +mstore(0x35180, mulmod(mload(0x35160), mload(0x35100), f_q)) +mstore(0x351a0, mulmod(mload(0x35180), mload(0x15b20), f_q)) +mstore(0x351c0, mulmod(15381280255539376454269318255735868787777333432756754379995250516363708768490, mload(0x5520), f_q)) +mstore(0x351e0, mulmod(mload(0x8180), mload(0x351c0), f_q)) +mstore(0x35200, addmod(mload(0xc240), mload(0x351e0), f_q)) +mstore(0x35220, addmod(mload(0x35200), mload(0x5580), f_q)) +mstore(0x35240, mulmod(15495833827306892244486771296392493138051516716366253852232244488031318194537, mload(0x5520), f_q)) +mstore(0x35260, mulmod(mload(0x8180), mload(0x35240), f_q)) +mstore(0x35280, addmod(mload(0xc2c0), mload(0x35260), f_q)) +mstore(0x352a0, addmod(mload(0x35280), mload(0x5580), f_q)) +mstore(0x352c0, mulmod(mload(0x352a0), mload(0x35220), f_q)) +mstore(0x352e0, mulmod(mload(0x352c0), mload(0x15b00), f_q)) +mstore(0x35300, addmod(mload(0x351a0), sub(f_q, mload(0x352e0)), f_q)) +mstore(0x35320, mulmod(mload(0x35300), mload(0x29860), f_q)) +mstore(0x35340, addmod(mload(0x350a0), mload(0x35320), f_q)) +mstore(0x35360, mulmod(mload(0x8060), mload(0x35340), f_q)) +mstore(0x35380, mulmod(mload(0x12fe0), mload(0x5520), f_q)) +mstore(0x353a0, addmod(mload(0xc340), mload(0x35380), f_q)) +mstore(0x353c0, addmod(mload(0x353a0), mload(0x5580), f_q)) +mstore(0x353e0, mulmod(mload(0x13000), mload(0x5520), f_q)) +mstore(0x35400, addmod(mload(0xc3c0), mload(0x353e0), f_q)) +mstore(0x35420, addmod(mload(0x35400), mload(0x5580), f_q)) +mstore(0x35440, mulmod(mload(0x35420), mload(0x353c0), f_q)) +mstore(0x35460, mulmod(mload(0x35440), mload(0x15b80), f_q)) +mstore(0x35480, mulmod(12516488344441601944133595095148323643263005059362028768560555073175733970483, mload(0x5520), f_q)) +mstore(0x354a0, mulmod(mload(0x8180), mload(0x35480), f_q)) +mstore(0x354c0, addmod(mload(0xc340), mload(0x354a0), f_q)) +mstore(0x354e0, addmod(mload(0x354c0), mload(0x5580), f_q)) +mstore(0x35500, mulmod(16548190485254746281732953492853227875455986871556297726914756122860390468961, mload(0x5520), f_q)) +mstore(0x35520, mulmod(mload(0x8180), mload(0x35500), f_q)) +mstore(0x35540, addmod(mload(0xc3c0), mload(0x35520), f_q)) +mstore(0x35560, addmod(mload(0x35540), mload(0x5580), f_q)) +mstore(0x35580, mulmod(mload(0x35560), mload(0x354e0), f_q)) +mstore(0x355a0, mulmod(mload(0x35580), mload(0x15b60), f_q)) +mstore(0x355c0, addmod(mload(0x35460), sub(f_q, mload(0x355a0)), f_q)) +mstore(0x355e0, mulmod(mload(0x355c0), mload(0x29860), f_q)) +mstore(0x35600, addmod(mload(0x35360), mload(0x355e0), f_q)) +mstore(0x35620, mulmod(mload(0x8060), mload(0x35600), f_q)) +mstore(0x35640, mulmod(mload(0x13020), mload(0x5520), f_q)) +mstore(0x35660, addmod(mload(0xc440), mload(0x35640), f_q)) +mstore(0x35680, addmod(mload(0x35660), mload(0x5580), f_q)) +mstore(0x356a0, mulmod(mload(0x13040), mload(0x5520), f_q)) +mstore(0x356c0, addmod(mload(0xc4c0), mload(0x356a0), f_q)) +mstore(0x356e0, addmod(mload(0x356c0), mload(0x5580), f_q)) +mstore(0x35700, mulmod(mload(0x356e0), mload(0x35680), f_q)) +mstore(0x35720, mulmod(mload(0x35700), mload(0x15be0), f_q)) +mstore(0x35740, mulmod(8001152878365221168721125036201640303724977694772312451796300309053635064623, mload(0x5520), f_q)) +mstore(0x35760, mulmod(mload(0x8180), mload(0x35740), f_q)) +mstore(0x35780, addmod(mload(0xc440), mload(0x35760), f_q)) +mstore(0x357a0, addmod(mload(0x35780), mload(0x5580), f_q)) +mstore(0x357c0, mulmod(14525629309296858730799213693471032975827330042254506106167057714242884414886, mload(0x5520), f_q)) +mstore(0x357e0, mulmod(mload(0x8180), mload(0x357c0), f_q)) +mstore(0x35800, addmod(mload(0xc4c0), mload(0x357e0), f_q)) +mstore(0x35820, addmod(mload(0x35800), mload(0x5580), f_q)) +mstore(0x35840, mulmod(mload(0x35820), mload(0x357a0), f_q)) +mstore(0x35860, mulmod(mload(0x35840), mload(0x15bc0), f_q)) +mstore(0x35880, addmod(mload(0x35720), sub(f_q, mload(0x35860)), f_q)) +mstore(0x358a0, mulmod(mload(0x35880), mload(0x29860), f_q)) +mstore(0x358c0, addmod(mload(0x35620), mload(0x358a0), f_q)) +mstore(0x358e0, mulmod(mload(0x8060), mload(0x358c0), f_q)) +mstore(0x35900, mulmod(mload(0x13060), mload(0x5520), f_q)) +mstore(0x35920, addmod(mload(0xc540), mload(0x35900), f_q)) +mstore(0x35940, addmod(mload(0x35920), mload(0x5580), f_q)) +mstore(0x35960, mulmod(mload(0x13080), mload(0x5520), f_q)) +mstore(0x35980, addmod(mload(0xc5c0), mload(0x35960), f_q)) +mstore(0x359a0, addmod(mload(0x35980), mload(0x5580), f_q)) +mstore(0x359c0, mulmod(mload(0x359a0), mload(0x35940), f_q)) +mstore(0x359e0, mulmod(mload(0x359c0), mload(0x15c40), f_q)) +mstore(0x35a00, mulmod(1327676575770687264752846351173158497089300201129424307239176128869078249323, mload(0x5520), f_q)) +mstore(0x35a20, mulmod(mload(0x8180), mload(0x35a00), f_q)) +mstore(0x35a40, addmod(mload(0xc540), mload(0x35a20), f_q)) +mstore(0x35a60, addmod(mload(0x35a40), mload(0x5580), f_q)) +mstore(0x35a80, mulmod(9343581262680172020323309605278991118144630674541280264927007234246667690502, mload(0x5520), f_q)) +mstore(0x35aa0, mulmod(mload(0x8180), mload(0x35a80), f_q)) +mstore(0x35ac0, addmod(mload(0xc5c0), mload(0x35aa0), f_q)) +mstore(0x35ae0, addmod(mload(0x35ac0), mload(0x5580), f_q)) +mstore(0x35b00, mulmod(mload(0x35ae0), mload(0x35a60), f_q)) +mstore(0x35b20, mulmod(mload(0x35b00), mload(0x15c20), f_q)) +mstore(0x35b40, addmod(mload(0x359e0), sub(f_q, mload(0x35b20)), f_q)) +mstore(0x35b60, mulmod(mload(0x35b40), mload(0x29860), f_q)) +mstore(0x35b80, addmod(mload(0x358e0), mload(0x35b60), f_q)) +mstore(0x35ba0, mulmod(mload(0x8060), mload(0x35b80), f_q)) +mstore(0x35bc0, mulmod(mload(0x130a0), mload(0x5520), f_q)) +mstore(0x35be0, addmod(mload(0xc640), mload(0x35bc0), f_q)) +mstore(0x35c00, addmod(mload(0x35be0), mload(0x5580), f_q)) +mstore(0x35c20, mulmod(mload(0x130c0), mload(0x5520), f_q)) +mstore(0x35c40, addmod(mload(0xc6c0), mload(0x35c20), f_q)) +mstore(0x35c60, addmod(mload(0x35c40), mload(0x5580), f_q)) +mstore(0x35c80, mulmod(mload(0x35c60), mload(0x35c00), f_q)) +mstore(0x35ca0, mulmod(mload(0x35c80), mload(0x15ca0), f_q)) +mstore(0x35cc0, mulmod(13596090218295662925346311299332009162262996330354204178233645709851223516708, mload(0x5520), f_q)) +mstore(0x35ce0, mulmod(mload(0x8180), mload(0x35cc0), f_q)) +mstore(0x35d00, addmod(mload(0xc640), mload(0x35ce0), f_q)) +mstore(0x35d20, addmod(mload(0x35d00), mload(0x5580), f_q)) +mstore(0x35d40, mulmod(19742660853067373658726950365772342952823683003352732200790044813630519901526, mload(0x5520), f_q)) +mstore(0x35d60, mulmod(mload(0x8180), mload(0x35d40), f_q)) +mstore(0x35d80, addmod(mload(0xc6c0), mload(0x35d60), f_q)) +mstore(0x35da0, addmod(mload(0x35d80), mload(0x5580), f_q)) +mstore(0x35dc0, mulmod(mload(0x35da0), mload(0x35d20), f_q)) +mstore(0x35de0, mulmod(mload(0x35dc0), mload(0x15c80), f_q)) +mstore(0x35e00, addmod(mload(0x35ca0), sub(f_q, mload(0x35de0)), f_q)) +mstore(0x35e20, mulmod(mload(0x35e00), mload(0x29860), f_q)) +mstore(0x35e40, addmod(mload(0x35ba0), mload(0x35e20), f_q)) +mstore(0x35e60, mulmod(mload(0x8060), mload(0x35e40), f_q)) +mstore(0x35e80, mulmod(mload(0x130e0), mload(0x5520), f_q)) +mstore(0x35ea0, addmod(mload(0xc740), mload(0x35e80), f_q)) +mstore(0x35ec0, addmod(mload(0x35ea0), mload(0x5580), f_q)) +mstore(0x35ee0, mulmod(mload(0x13100), mload(0x5520), f_q)) +mstore(0x35f00, addmod(mload(0xc7c0), mload(0x35ee0), f_q)) +mstore(0x35f20, addmod(mload(0x35f00), mload(0x5580), f_q)) +mstore(0x35f40, mulmod(mload(0x35f20), mload(0x35ec0), f_q)) +mstore(0x35f60, mulmod(mload(0x35f40), mload(0x15d00), f_q)) +mstore(0x35f80, mulmod(3211211608294832828615609912258186632997564027943619622389525308321633578379, mload(0x5520), f_q)) +mstore(0x35fa0, mulmod(mload(0x8180), mload(0x35f80), f_q)) +mstore(0x35fc0, addmod(mload(0xc740), mload(0x35fa0), f_q)) +mstore(0x35fe0, addmod(mload(0x35fc0), mload(0x5580), f_q)) +mstore(0x36000, mulmod(4675960249122696664407800950755128751461920137718934028355993560722968549325, mload(0x5520), f_q)) +mstore(0x36020, mulmod(mload(0x8180), mload(0x36000), f_q)) +mstore(0x36040, addmod(mload(0xc7c0), mload(0x36020), f_q)) +mstore(0x36060, addmod(mload(0x36040), mload(0x5580), f_q)) +mstore(0x36080, mulmod(mload(0x36060), mload(0x35fe0), f_q)) +mstore(0x360a0, mulmod(mload(0x36080), mload(0x15ce0), f_q)) +mstore(0x360c0, addmod(mload(0x35f60), sub(f_q, mload(0x360a0)), f_q)) +mstore(0x360e0, mulmod(mload(0x360c0), mload(0x29860), f_q)) +mstore(0x36100, addmod(mload(0x35e60), mload(0x360e0), f_q)) +mstore(0x36120, mulmod(mload(0x8060), mload(0x36100), f_q)) +mstore(0x36140, mulmod(mload(0x13120), mload(0x5520), f_q)) +mstore(0x36160, addmod(mload(0xc840), mload(0x36140), f_q)) +mstore(0x36180, addmod(mload(0x36160), mload(0x5580), f_q)) +mstore(0x361a0, mulmod(mload(0x13140), mload(0x5520), f_q)) +mstore(0x361c0, addmod(mload(0xc8c0), mload(0x361a0), f_q)) +mstore(0x361e0, addmod(mload(0x361c0), mload(0x5580), f_q)) +mstore(0x36200, mulmod(mload(0x361e0), mload(0x36180), f_q)) +mstore(0x36220, mulmod(mload(0x36200), mload(0x15d60), f_q)) +mstore(0x36240, mulmod(3328667209774292306453701357174796702527402801268741444552619026921048886630, mload(0x5520), f_q)) +mstore(0x36260, mulmod(mload(0x8180), mload(0x36240), f_q)) +mstore(0x36280, addmod(mload(0xc840), mload(0x36260), f_q)) +mstore(0x362a0, addmod(mload(0x36280), mload(0x5580), f_q)) +mstore(0x362c0, mulmod(14399516205520965232645287798446101758329166582385205109910978070377197112817, mload(0x5520), f_q)) +mstore(0x362e0, mulmod(mload(0x8180), mload(0x362c0), f_q)) +mstore(0x36300, addmod(mload(0xc8c0), mload(0x362e0), f_q)) +mstore(0x36320, addmod(mload(0x36300), mload(0x5580), f_q)) +mstore(0x36340, mulmod(mload(0x36320), mload(0x362a0), f_q)) +mstore(0x36360, mulmod(mload(0x36340), mload(0x15d40), f_q)) +mstore(0x36380, addmod(mload(0x36220), sub(f_q, mload(0x36360)), f_q)) +mstore(0x363a0, mulmod(mload(0x36380), mload(0x29860), f_q)) +mstore(0x363c0, addmod(mload(0x36120), mload(0x363a0), f_q)) +mstore(0x363e0, mulmod(mload(0x8060), mload(0x363c0), f_q)) +mstore(0x36400, mulmod(mload(0x13160), mload(0x5520), f_q)) +mstore(0x36420, addmod(mload(0xc940), mload(0x36400), f_q)) +mstore(0x36440, addmod(mload(0x36420), mload(0x5580), f_q)) +mstore(0x36460, mulmod(mload(0x13180), mload(0x5520), f_q)) +mstore(0x36480, addmod(mload(0xc9c0), mload(0x36460), f_q)) +mstore(0x364a0, addmod(mload(0x36480), mload(0x5580), f_q)) +mstore(0x364c0, mulmod(mload(0x364a0), mload(0x36440), f_q)) +mstore(0x364e0, mulmod(mload(0x364c0), mload(0x15dc0), f_q)) +mstore(0x36500, mulmod(3537915132096695795576128268549842865846514202048644360914750453747169868390, mload(0x5520), f_q)) +mstore(0x36520, mulmod(mload(0x8180), mload(0x36500), f_q)) +mstore(0x36540, addmod(mload(0xc940), mload(0x36520), f_q)) +mstore(0x36560, addmod(mload(0x36540), mload(0x5580), f_q)) +mstore(0x36580, mulmod(2829587572491111789913311228800570952408035304475130674680216839562932020611, mload(0x5520), f_q)) +mstore(0x365a0, mulmod(mload(0x8180), mload(0x36580), f_q)) +mstore(0x365c0, addmod(mload(0xc9c0), mload(0x365a0), f_q)) +mstore(0x365e0, addmod(mload(0x365c0), mload(0x5580), f_q)) +mstore(0x36600, mulmod(mload(0x365e0), mload(0x36560), f_q)) +mstore(0x36620, mulmod(mload(0x36600), mload(0x15da0), f_q)) +mstore(0x36640, addmod(mload(0x364e0), sub(f_q, mload(0x36620)), f_q)) +mstore(0x36660, mulmod(mload(0x36640), mload(0x29860), f_q)) +mstore(0x36680, addmod(mload(0x363e0), mload(0x36660), f_q)) +mstore(0x366a0, mulmod(mload(0x8060), mload(0x36680), f_q)) +mstore(0x366c0, mulmod(mload(0x131a0), mload(0x5520), f_q)) +mstore(0x366e0, addmod(mload(0xca40), mload(0x366c0), f_q)) +mstore(0x36700, addmod(mload(0x366e0), mload(0x5580), f_q)) +mstore(0x36720, mulmod(mload(0x131c0), mload(0x5520), f_q)) +mstore(0x36740, addmod(mload(0xcac0), mload(0x36720), f_q)) +mstore(0x36760, addmod(mload(0x36740), mload(0x5580), f_q)) +mstore(0x36780, mulmod(mload(0x36760), mload(0x36700), f_q)) +mstore(0x367a0, mulmod(mload(0x36780), mload(0x15e20), f_q)) +mstore(0x367c0, mulmod(13832272996653885069719567955599905649329730585306968501526590418075466578458, mload(0x5520), f_q)) +mstore(0x367e0, mulmod(mload(0x8180), mload(0x367c0), f_q)) +mstore(0x36800, addmod(mload(0xca40), mload(0x367e0), f_q)) +mstore(0x36820, addmod(mload(0x36800), mload(0x5580), f_q)) +mstore(0x36840, mulmod(15131283033864827402977235927151357161724705772444550928653580073859862527172, mload(0x5520), f_q)) +mstore(0x36860, mulmod(mload(0x8180), mload(0x36840), f_q)) +mstore(0x36880, addmod(mload(0xcac0), mload(0x36860), f_q)) +mstore(0x368a0, addmod(mload(0x36880), mload(0x5580), f_q)) +mstore(0x368c0, mulmod(mload(0x368a0), mload(0x36820), f_q)) +mstore(0x368e0, mulmod(mload(0x368c0), mload(0x15e00), f_q)) +mstore(0x36900, addmod(mload(0x367a0), sub(f_q, mload(0x368e0)), f_q)) +mstore(0x36920, mulmod(mload(0x36900), mload(0x29860), f_q)) +mstore(0x36940, addmod(mload(0x366a0), mload(0x36920), f_q)) +mstore(0x36960, mulmod(mload(0x8060), mload(0x36940), f_q)) +mstore(0x36980, mulmod(mload(0x131e0), mload(0x5520), f_q)) +mstore(0x369a0, addmod(mload(0xcb40), mload(0x36980), f_q)) +mstore(0x369c0, addmod(mload(0x369a0), mload(0x5580), f_q)) +mstore(0x369e0, mulmod(mload(0x13200), mload(0x5520), f_q)) +mstore(0x36a00, addmod(mload(0xcbc0), mload(0x369e0), f_q)) +mstore(0x36a20, addmod(mload(0x36a00), mload(0x5580), f_q)) +mstore(0x36a40, mulmod(mload(0x36a20), mload(0x369c0), f_q)) +mstore(0x36a60, mulmod(mload(0x36a40), mload(0x15e80), f_q)) +mstore(0x36a80, mulmod(5991461539871416372071538705597302841867632783946020660746137944262252959532, mload(0x5520), f_q)) +mstore(0x36aa0, mulmod(mload(0x8180), mload(0x36a80), f_q)) +mstore(0x36ac0, addmod(mload(0xcb40), mload(0x36aa0), f_q)) +mstore(0x36ae0, addmod(mload(0x36ac0), mload(0x5580), f_q)) +mstore(0x36b00, mulmod(18669747562520741900689295390629074018427915867955834629498282815953639756250, mload(0x5520), f_q)) +mstore(0x36b20, mulmod(mload(0x8180), mload(0x36b00), f_q)) +mstore(0x36b40, addmod(mload(0xcbc0), mload(0x36b20), f_q)) +mstore(0x36b60, addmod(mload(0x36b40), mload(0x5580), f_q)) +mstore(0x36b80, mulmod(mload(0x36b60), mload(0x36ae0), f_q)) +mstore(0x36ba0, mulmod(mload(0x36b80), mload(0x15e60), f_q)) +mstore(0x36bc0, addmod(mload(0x36a60), sub(f_q, mload(0x36ba0)), f_q)) +mstore(0x36be0, mulmod(mload(0x36bc0), mload(0x29860), f_q)) +mstore(0x36c00, addmod(mload(0x36960), mload(0x36be0), f_q)) +mstore(0x36c20, mulmod(mload(0x8060), mload(0x36c00), f_q)) +mstore(0x36c40, mulmod(mload(0x13220), mload(0x5520), f_q)) +mstore(0x36c60, addmod(mload(0xcc40), mload(0x36c40), f_q)) +mstore(0x36c80, addmod(mload(0x36c60), mload(0x5580), f_q)) +mstore(0x36ca0, mulmod(mload(0x13240), mload(0x5520), f_q)) +mstore(0x36cc0, addmod(mload(0xccc0), mload(0x36ca0), f_q)) +mstore(0x36ce0, addmod(mload(0x36cc0), mload(0x5580), f_q)) +mstore(0x36d00, mulmod(mload(0x36ce0), mload(0x36c80), f_q)) +mstore(0x36d20, mulmod(mload(0x36d00), mload(0x15ee0), f_q)) +mstore(0x36d40, mulmod(14626805108776289492935563313556240789240150420481995705503835430558320112674, mload(0x5520), f_q)) +mstore(0x36d60, mulmod(mload(0x8180), mload(0x36d40), f_q)) +mstore(0x36d80, addmod(mload(0xcc40), mload(0x36d60), f_q)) +mstore(0x36da0, addmod(mload(0x36d80), mload(0x5580), f_q)) +mstore(0x36dc0, mulmod(11475514032151014347332375211652593773622990621798185615313090014857135519160, mload(0x5520), f_q)) +mstore(0x36de0, mulmod(mload(0x8180), mload(0x36dc0), f_q)) +mstore(0x36e00, addmod(mload(0xccc0), mload(0x36de0), f_q)) +mstore(0x36e20, addmod(mload(0x36e00), mload(0x5580), f_q)) +mstore(0x36e40, mulmod(mload(0x36e20), mload(0x36da0), f_q)) +mstore(0x36e60, mulmod(mload(0x36e40), mload(0x15ec0), f_q)) +mstore(0x36e80, addmod(mload(0x36d20), sub(f_q, mload(0x36e60)), f_q)) +mstore(0x36ea0, mulmod(mload(0x36e80), mload(0x29860), f_q)) +mstore(0x36ec0, addmod(mload(0x36c20), mload(0x36ea0), f_q)) +mstore(0x36ee0, mulmod(mload(0x8060), mload(0x36ec0), f_q)) +mstore(0x36f00, mulmod(mload(0x13260), mload(0x5520), f_q)) +mstore(0x36f20, addmod(mload(0xcd40), mload(0x36f00), f_q)) +mstore(0x36f40, addmod(mload(0x36f20), mload(0x5580), f_q)) +mstore(0x36f60, mulmod(mload(0x13280), mload(0x5520), f_q)) +mstore(0x36f80, addmod(mload(0xcdc0), mload(0x36f60), f_q)) +mstore(0x36fa0, addmod(mload(0x36f80), mload(0x5580), f_q)) +mstore(0x36fc0, mulmod(mload(0x36fa0), mload(0x36f40), f_q)) +mstore(0x36fe0, mulmod(mload(0x36fc0), mload(0x15f40), f_q)) +mstore(0x37000, mulmod(18689174539083009809812913321706817855115711625570774419040304686675512043329, mload(0x5520), f_q)) +mstore(0x37020, mulmod(mload(0x8180), mload(0x37000), f_q)) +mstore(0x37040, addmod(mload(0xcd40), mload(0x37020), f_q)) +mstore(0x37060, addmod(mload(0x37040), mload(0x5580), f_q)) +mstore(0x37080, mulmod(5855072241800268474800785698860509561099337392145501229776124092933521183266, mload(0x5520), f_q)) +mstore(0x370a0, mulmod(mload(0x8180), mload(0x37080), f_q)) +mstore(0x370c0, addmod(mload(0xcdc0), mload(0x370a0), f_q)) +mstore(0x370e0, addmod(mload(0x370c0), mload(0x5580), f_q)) +mstore(0x37100, mulmod(mload(0x370e0), mload(0x37060), f_q)) +mstore(0x37120, mulmod(mload(0x37100), mload(0x15f20), f_q)) +mstore(0x37140, addmod(mload(0x36fe0), sub(f_q, mload(0x37120)), f_q)) +mstore(0x37160, mulmod(mload(0x37140), mload(0x29860), f_q)) +mstore(0x37180, addmod(mload(0x36ee0), mload(0x37160), f_q)) +mstore(0x371a0, mulmod(mload(0x8060), mload(0x37180), f_q)) +mstore(0x371c0, mulmod(mload(0x132a0), mload(0x5520), f_q)) +mstore(0x371e0, addmod(mload(0xce40), mload(0x371c0), f_q)) +mstore(0x37200, addmod(mload(0x371e0), mload(0x5580), f_q)) +mstore(0x37220, mulmod(mload(0x132c0), mload(0x5520), f_q)) +mstore(0x37240, addmod(mload(0xcec0), mload(0x37220), f_q)) +mstore(0x37260, addmod(mload(0x37240), mload(0x5580), f_q)) +mstore(0x37280, mulmod(mload(0x37260), mload(0x37200), f_q)) +mstore(0x372a0, mulmod(mload(0x37280), mload(0x15fa0), f_q)) +mstore(0x372c0, mulmod(11026627626777735031180115729370019794633149092622858024105331124843534771256, mload(0x5520), f_q)) +mstore(0x372e0, mulmod(mload(0x8180), mload(0x372c0), f_q)) +mstore(0x37300, addmod(mload(0xce40), mload(0x372e0), f_q)) +mstore(0x37320, addmod(mload(0x37300), mload(0x5580), f_q)) +mstore(0x37340, mulmod(16525539842528743152969761296860666713168032894298184807746501048565753158584, mload(0x5520), f_q)) +mstore(0x37360, mulmod(mload(0x8180), mload(0x37340), f_q)) +mstore(0x37380, addmod(mload(0xcec0), mload(0x37360), f_q)) +mstore(0x373a0, addmod(mload(0x37380), mload(0x5580), f_q)) +mstore(0x373c0, mulmod(mload(0x373a0), mload(0x37320), f_q)) +mstore(0x373e0, mulmod(mload(0x373c0), mload(0x15f80), f_q)) +mstore(0x37400, addmod(mload(0x372a0), sub(f_q, mload(0x373e0)), f_q)) +mstore(0x37420, mulmod(mload(0x37400), mload(0x29860), f_q)) +mstore(0x37440, addmod(mload(0x371a0), mload(0x37420), f_q)) +mstore(0x37460, mulmod(mload(0x8060), mload(0x37440), f_q)) +mstore(0x37480, mulmod(mload(0x132e0), mload(0x5520), f_q)) +mstore(0x374a0, addmod(mload(0xcf40), mload(0x37480), f_q)) +mstore(0x374c0, addmod(mload(0x374a0), mload(0x5580), f_q)) +mstore(0x374e0, mulmod(mload(0x13300), mload(0x5520), f_q)) +mstore(0x37500, addmod(mload(0xcfc0), mload(0x374e0), f_q)) +mstore(0x37520, addmod(mload(0x37500), mload(0x5580), f_q)) +mstore(0x37540, mulmod(mload(0x37520), mload(0x374c0), f_q)) +mstore(0x37560, mulmod(mload(0x37540), mload(0x16000), f_q)) +mstore(0x37580, mulmod(318974970119527758351856463592917873859924537165857706071569168283048211970, mload(0x5520), f_q)) +mstore(0x375a0, mulmod(mload(0x8180), mload(0x37580), f_q)) +mstore(0x375c0, addmod(mload(0xcf40), mload(0x375a0), f_q)) +mstore(0x375e0, addmod(mload(0x375c0), mload(0x5580), f_q)) +mstore(0x37600, mulmod(20668876412258887771986149593041390795886422120683270095439708549401286293389, mload(0x5520), f_q)) +mstore(0x37620, mulmod(mload(0x8180), mload(0x37600), f_q)) +mstore(0x37640, addmod(mload(0xcfc0), mload(0x37620), f_q)) +mstore(0x37660, addmod(mload(0x37640), mload(0x5580), f_q)) +mstore(0x37680, mulmod(mload(0x37660), mload(0x375e0), f_q)) +mstore(0x376a0, mulmod(mload(0x37680), mload(0x15fe0), f_q)) +mstore(0x376c0, addmod(mload(0x37560), sub(f_q, mload(0x376a0)), f_q)) +mstore(0x376e0, mulmod(mload(0x376c0), mload(0x29860), f_q)) +mstore(0x37700, addmod(mload(0x37460), mload(0x376e0), f_q)) +mstore(0x37720, mulmod(mload(0x8060), mload(0x37700), f_q)) +mstore(0x37740, mulmod(mload(0x13320), mload(0x5520), f_q)) +mstore(0x37760, addmod(mload(0xd040), mload(0x37740), f_q)) +mstore(0x37780, addmod(mload(0x37760), mload(0x5580), f_q)) +mstore(0x377a0, mulmod(mload(0x13340), mload(0x5520), f_q)) +mstore(0x377c0, addmod(mload(0xd0c0), mload(0x377a0), f_q)) +mstore(0x377e0, addmod(mload(0x377c0), mload(0x5580), f_q)) +mstore(0x37800, mulmod(mload(0x377e0), mload(0x37780), f_q)) +mstore(0x37820, mulmod(mload(0x37800), mload(0x16060), f_q)) +mstore(0x37840, mulmod(21875403043716103890951949861070818104344577200269456195281755542798997992321, mload(0x5520), f_q)) +mstore(0x37860, mulmod(mload(0x8180), mload(0x37840), f_q)) +mstore(0x37880, addmod(mload(0xd040), mload(0x37860), f_q)) +mstore(0x378a0, addmod(mload(0x37880), mload(0x5580), f_q)) +mstore(0x378c0, mulmod(4388422738182311453258533480581429916405106630442235059766434964070829975983, mload(0x5520), f_q)) +mstore(0x378e0, mulmod(mload(0x8180), mload(0x378c0), f_q)) +mstore(0x37900, addmod(mload(0xd0c0), mload(0x378e0), f_q)) +mstore(0x37920, addmod(mload(0x37900), mload(0x5580), f_q)) +mstore(0x37940, mulmod(mload(0x37920), mload(0x378a0), f_q)) +mstore(0x37960, mulmod(mload(0x37940), mload(0x16040), f_q)) +mstore(0x37980, addmod(mload(0x37820), sub(f_q, mload(0x37960)), f_q)) +mstore(0x379a0, mulmod(mload(0x37980), mload(0x29860), f_q)) +mstore(0x379c0, addmod(mload(0x37720), mload(0x379a0), f_q)) +mstore(0x379e0, mulmod(mload(0x8060), mload(0x379c0), f_q)) +mstore(0x37a00, mulmod(mload(0x13360), mload(0x5520), f_q)) +mstore(0x37a20, addmod(mload(0xd140), mload(0x37a00), f_q)) +mstore(0x37a40, addmod(mload(0x37a20), mload(0x5580), f_q)) +mstore(0x37a60, mulmod(mload(0x13380), mload(0x5520), f_q)) +mstore(0x37a80, addmod(mload(0xd1c0), mload(0x37a60), f_q)) +mstore(0x37aa0, addmod(mload(0x37a80), mload(0x5580), f_q)) +mstore(0x37ac0, mulmod(mload(0x37aa0), mload(0x37a40), f_q)) +mstore(0x37ae0, mulmod(mload(0x37ac0), mload(0x160c0), f_q)) +mstore(0x37b00, mulmod(11972804099874052843454084671336726162398451027375875995297053638711361487316, mload(0x5520), f_q)) +mstore(0x37b20, mulmod(mload(0x8180), mload(0x37b00), f_q)) +mstore(0x37b40, addmod(mload(0xd140), mload(0x37b20), f_q)) +mstore(0x37b60, addmod(mload(0x37b40), mload(0x5580), f_q)) +mstore(0x37b80, mulmod(6723728179090553507913429556468756289647990624077360449317196946958932959910, mload(0x5520), f_q)) +mstore(0x37ba0, mulmod(mload(0x8180), mload(0x37b80), f_q)) +mstore(0x37bc0, addmod(mload(0xd1c0), mload(0x37ba0), f_q)) +mstore(0x37be0, addmod(mload(0x37bc0), mload(0x5580), f_q)) +mstore(0x37c00, mulmod(mload(0x37be0), mload(0x37b60), f_q)) +mstore(0x37c20, mulmod(mload(0x37c00), mload(0x160a0), f_q)) +mstore(0x37c40, addmod(mload(0x37ae0), sub(f_q, mload(0x37c20)), f_q)) +mstore(0x37c60, mulmod(mload(0x37c40), mload(0x29860), f_q)) +mstore(0x37c80, addmod(mload(0x379e0), mload(0x37c60), f_q)) +mstore(0x37ca0, mulmod(mload(0x8060), mload(0x37c80), f_q)) +mstore(0x37cc0, mulmod(mload(0x133a0), mload(0x5520), f_q)) +mstore(0x37ce0, addmod(mload(0xd240), mload(0x37cc0), f_q)) +mstore(0x37d00, addmod(mload(0x37ce0), mload(0x5580), f_q)) +mstore(0x37d20, mulmod(mload(0x133c0), mload(0x5520), f_q)) +mstore(0x37d40, addmod(mload(0xd2c0), mload(0x37d20), f_q)) +mstore(0x37d60, addmod(mload(0x37d40), mload(0x5580), f_q)) +mstore(0x37d80, mulmod(mload(0x37d60), mload(0x37d00), f_q)) +mstore(0x37da0, mulmod(mload(0x37d80), mload(0x16120), f_q)) +mstore(0x37dc0, mulmod(870965898481619669319823089027155268472128220692483496475394223123727450988, mload(0x5520), f_q)) +mstore(0x37de0, mulmod(mload(0x8180), mload(0x37dc0), f_q)) +mstore(0x37e00, addmod(mload(0xd240), mload(0x37de0), f_q)) +mstore(0x37e20, addmod(mload(0x37e00), mload(0x5580), f_q)) +mstore(0x37e40, mulmod(7078824807923651593192759388110105737875735727862097696742097219571093735680, mload(0x5520), f_q)) +mstore(0x37e60, mulmod(mload(0x8180), mload(0x37e40), f_q)) +mstore(0x37e80, addmod(mload(0xd2c0), mload(0x37e60), f_q)) +mstore(0x37ea0, addmod(mload(0x37e80), mload(0x5580), f_q)) +mstore(0x37ec0, mulmod(mload(0x37ea0), mload(0x37e20), f_q)) +mstore(0x37ee0, mulmod(mload(0x37ec0), mload(0x16100), f_q)) +mstore(0x37f00, addmod(mload(0x37da0), sub(f_q, mload(0x37ee0)), f_q)) +mstore(0x37f20, mulmod(mload(0x37f00), mload(0x29860), f_q)) +mstore(0x37f40, addmod(mload(0x37ca0), mload(0x37f20), f_q)) +mstore(0x37f60, mulmod(mload(0x8060), mload(0x37f40), f_q)) +mstore(0x37f80, mulmod(mload(0x133e0), mload(0x5520), f_q)) +mstore(0x37fa0, addmod(mload(0xd340), mload(0x37f80), f_q)) +mstore(0x37fc0, addmod(mload(0x37fa0), mload(0x5580), f_q)) +mstore(0x37fe0, mulmod(mload(0x13400), mload(0x5520), f_q)) +mstore(0x38000, addmod(mload(0xd3c0), mload(0x37fe0), f_q)) +mstore(0x38020, addmod(mload(0x38000), mload(0x5580), f_q)) +mstore(0x38040, mulmod(mload(0x38020), mload(0x37fc0), f_q)) +mstore(0x38060, mulmod(mload(0x38040), mload(0x16180), f_q)) +mstore(0x38080, mulmod(11943074837027553660842754061614633377330411275447549202609312572488430672050, mload(0x5520), f_q)) +mstore(0x380a0, mulmod(mload(0x8180), mload(0x38080), f_q)) +mstore(0x380c0, addmod(mload(0xd340), mload(0x380a0), f_q)) +mstore(0x380e0, addmod(mload(0x380c0), mload(0x5580), f_q)) +mstore(0x38100, mulmod(1188609006887852635969070331495985447972119570923819684978895991704709015401, mload(0x5520), f_q)) +mstore(0x38120, mulmod(mload(0x8180), mload(0x38100), f_q)) +mstore(0x38140, addmod(mload(0xd3c0), mload(0x38120), f_q)) +mstore(0x38160, addmod(mload(0x38140), mload(0x5580), f_q)) +mstore(0x38180, mulmod(mload(0x38160), mload(0x380e0), f_q)) +mstore(0x381a0, mulmod(mload(0x38180), mload(0x16160), f_q)) +mstore(0x381c0, addmod(mload(0x38060), sub(f_q, mload(0x381a0)), f_q)) +mstore(0x381e0, mulmod(mload(0x381c0), mload(0x29860), f_q)) +mstore(0x38200, addmod(mload(0x37f60), mload(0x381e0), f_q)) +mstore(0x38220, mulmod(mload(0x8060), mload(0x38200), f_q)) +mstore(0x38240, mulmod(mload(0x13420), mload(0x5520), f_q)) +mstore(0x38260, addmod(mload(0xd440), mload(0x38240), f_q)) +mstore(0x38280, addmod(mload(0x38260), mload(0x5580), f_q)) +mstore(0x382a0, mulmod(mload(0x13440), mload(0x5520), f_q)) +mstore(0x382c0, addmod(mload(0xd4c0), mload(0x382a0), f_q)) +mstore(0x382e0, addmod(mload(0x382c0), mload(0x5580), f_q)) +mstore(0x38300, mulmod(mload(0x382e0), mload(0x38280), f_q)) +mstore(0x38320, mulmod(mload(0x38300), mload(0x161e0), f_q)) +mstore(0x38340, mulmod(14614674758058511762646577429609605397545801807008540013684100261492116637267, mload(0x5520), f_q)) +mstore(0x38360, mulmod(mload(0x8180), mload(0x38340), f_q)) +mstore(0x38380, addmod(mload(0xd440), mload(0x38360), f_q)) +mstore(0x383a0, addmod(mload(0x38380), mload(0x5580), f_q)) +mstore(0x383c0, mulmod(14846974685858155091500963180299071291618660045865056650339292697455015693285, mload(0x5520), f_q)) +mstore(0x383e0, mulmod(mload(0x8180), mload(0x383c0), f_q)) +mstore(0x38400, addmod(mload(0xd4c0), mload(0x383e0), f_q)) +mstore(0x38420, addmod(mload(0x38400), mload(0x5580), f_q)) +mstore(0x38440, mulmod(mload(0x38420), mload(0x383a0), f_q)) +mstore(0x38460, mulmod(mload(0x38440), mload(0x161c0), f_q)) +mstore(0x38480, addmod(mload(0x38320), sub(f_q, mload(0x38460)), f_q)) +mstore(0x384a0, mulmod(mload(0x38480), mload(0x29860), f_q)) +mstore(0x384c0, addmod(mload(0x38220), mload(0x384a0), f_q)) +mstore(0x384e0, mulmod(mload(0x8060), mload(0x384c0), f_q)) +mstore(0x38500, mulmod(mload(0x13460), mload(0x5520), f_q)) +mstore(0x38520, addmod(mload(0xd540), mload(0x38500), f_q)) +mstore(0x38540, addmod(mload(0x38520), mload(0x5580), f_q)) +mstore(0x38560, mulmod(mload(0x13480), mload(0x5520), f_q)) +mstore(0x38580, addmod(mload(0xd5c0), mload(0x38560), f_q)) +mstore(0x385a0, addmod(mload(0x38580), mload(0x5580), f_q)) +mstore(0x385c0, mulmod(mload(0x385a0), mload(0x38540), f_q)) +mstore(0x385e0, mulmod(mload(0x385c0), mload(0x16240), f_q)) +mstore(0x38600, mulmod(7809698426759944571467800840253741736228987630296380387718385593479893582203, mload(0x5520), f_q)) +mstore(0x38620, mulmod(mload(0x8180), mload(0x38600), f_q)) +mstore(0x38640, addmod(mload(0xd540), mload(0x38620), f_q)) +mstore(0x38660, addmod(mload(0x38640), mload(0x5580), f_q)) +mstore(0x38680, mulmod(15461065386561045856890875837797814443656596234976488034143536258222012103140, mload(0x5520), f_q)) +mstore(0x386a0, mulmod(mload(0x8180), mload(0x38680), f_q)) +mstore(0x386c0, addmod(mload(0xd5c0), mload(0x386a0), f_q)) +mstore(0x386e0, addmod(mload(0x386c0), mload(0x5580), f_q)) +mstore(0x38700, mulmod(mload(0x386e0), mload(0x38660), f_q)) +mstore(0x38720, mulmod(mload(0x38700), mload(0x16220), f_q)) +mstore(0x38740, addmod(mload(0x385e0), sub(f_q, mload(0x38720)), f_q)) +mstore(0x38760, mulmod(mload(0x38740), mload(0x29860), f_q)) +mstore(0x38780, addmod(mload(0x384e0), mload(0x38760), f_q)) +mstore(0x387a0, mulmod(mload(0x8060), mload(0x38780), f_q)) +mstore(0x387c0, mulmod(mload(0x134a0), mload(0x5520), f_q)) +mstore(0x387e0, addmod(mload(0xd640), mload(0x387c0), f_q)) +mstore(0x38800, addmod(mload(0x387e0), mload(0x5580), f_q)) +mstore(0x38820, mulmod(mload(0x134c0), mload(0x5520), f_q)) +mstore(0x38840, addmod(mload(0xd6c0), mload(0x38820), f_q)) +mstore(0x38860, addmod(mload(0x38840), mload(0x5580), f_q)) +mstore(0x38880, mulmod(mload(0x38860), mload(0x38800), f_q)) +mstore(0x388a0, mulmod(mload(0x38880), mload(0x162a0), f_q)) +mstore(0x388c0, mulmod(13734151908449444805337993304425197997340235209077994153661240611464388016897, mload(0x5520), f_q)) +mstore(0x388e0, mulmod(mload(0x8180), mload(0x388c0), f_q)) +mstore(0x38900, addmod(mload(0xd640), mload(0x388e0), f_q)) +mstore(0x38920, addmod(mload(0x38900), mload(0x5580), f_q)) +mstore(0x38940, mulmod(16087493841400518120386865112460727783361915497782646860202953046725466642058, mload(0x5520), f_q)) +mstore(0x38960, mulmod(mload(0x8180), mload(0x38940), f_q)) +mstore(0x38980, addmod(mload(0xd6c0), mload(0x38960), f_q)) +mstore(0x389a0, addmod(mload(0x38980), mload(0x5580), f_q)) +mstore(0x389c0, mulmod(mload(0x389a0), mload(0x38920), f_q)) +mstore(0x389e0, mulmod(mload(0x389c0), mload(0x16280), f_q)) +mstore(0x38a00, addmod(mload(0x388a0), sub(f_q, mload(0x389e0)), f_q)) +mstore(0x38a20, mulmod(mload(0x38a00), mload(0x29860), f_q)) +mstore(0x38a40, addmod(mload(0x387a0), mload(0x38a20), f_q)) +mstore(0x38a60, mulmod(mload(0x8060), mload(0x38a40), f_q)) +mstore(0x38a80, mulmod(mload(0x134e0), mload(0x5520), f_q)) +mstore(0x38aa0, addmod(mload(0xd740), mload(0x38a80), f_q)) +mstore(0x38ac0, addmod(mload(0x38aa0), mload(0x5580), f_q)) +mstore(0x38ae0, mulmod(mload(0x13500), mload(0x5520), f_q)) +mstore(0x38b00, addmod(mload(0xd7c0), mload(0x38ae0), f_q)) +mstore(0x38b20, addmod(mload(0x38b00), mload(0x5580), f_q)) +mstore(0x38b40, mulmod(mload(0x38b20), mload(0x38ac0), f_q)) +mstore(0x38b60, mulmod(mload(0x38b40), mload(0x16300), f_q)) +mstore(0x38b80, mulmod(1585307733355325840086133795825609045433365920640143446116807966704639122436, mload(0x5520), f_q)) +mstore(0x38ba0, mulmod(mload(0x8180), mload(0x38b80), f_q)) +mstore(0x38bc0, addmod(mload(0xd740), mload(0x38ba0), f_q)) +mstore(0x38be0, addmod(mload(0x38bc0), mload(0x5580), f_q)) +mstore(0x38c00, mulmod(10224524532070222358664801105716909815028727921468230585939447374835890148321, mload(0x5520), f_q)) +mstore(0x38c20, mulmod(mload(0x8180), mload(0x38c00), f_q)) +mstore(0x38c40, addmod(mload(0xd7c0), mload(0x38c20), f_q)) +mstore(0x38c60, addmod(mload(0x38c40), mload(0x5580), f_q)) +mstore(0x38c80, mulmod(mload(0x38c60), mload(0x38be0), f_q)) +mstore(0x38ca0, mulmod(mload(0x38c80), mload(0x162e0), f_q)) +mstore(0x38cc0, addmod(mload(0x38b60), sub(f_q, mload(0x38ca0)), f_q)) +mstore(0x38ce0, mulmod(mload(0x38cc0), mload(0x29860), f_q)) +mstore(0x38d00, addmod(mload(0x38a60), mload(0x38ce0), f_q)) +mstore(0x38d20, mulmod(mload(0x8060), mload(0x38d00), f_q)) +mstore(0x38d40, mulmod(mload(0x13520), mload(0x5520), f_q)) +mstore(0x38d60, addmod(mload(0xd840), mload(0x38d40), f_q)) +mstore(0x38d80, addmod(mload(0x38d60), mload(0x5580), f_q)) +mstore(0x38da0, mulmod(mload(0x13540), mload(0x5520), f_q)) +mstore(0x38dc0, addmod(mload(0xd8c0), mload(0x38da0), f_q)) +mstore(0x38de0, addmod(mload(0x38dc0), mload(0x5580), f_q)) +mstore(0x38e00, mulmod(mload(0x38de0), mload(0x38d80), f_q)) +mstore(0x38e20, mulmod(mload(0x38e00), mload(0x16360), f_q)) +mstore(0x38e40, mulmod(17055951333991641917962792442158946039216061979477522041703638537495722880522, mload(0x5520), f_q)) +mstore(0x38e60, mulmod(mload(0x8180), mload(0x38e40), f_q)) +mstore(0x38e80, addmod(mload(0xd840), mload(0x38e60), f_q)) +mstore(0x38ea0, addmod(mload(0x38e80), mload(0x5580), f_q)) +mstore(0x38ec0, mulmod(12852492751117568692605791100480021318631399949339266369027716298103734604579, mload(0x5520), f_q)) +mstore(0x38ee0, mulmod(mload(0x8180), mload(0x38ec0), f_q)) +mstore(0x38f00, addmod(mload(0xd8c0), mload(0x38ee0), f_q)) +mstore(0x38f20, addmod(mload(0x38f00), mload(0x5580), f_q)) +mstore(0x38f40, mulmod(mload(0x38f20), mload(0x38ea0), f_q)) +mstore(0x38f60, mulmod(mload(0x38f40), mload(0x16340), f_q)) +mstore(0x38f80, addmod(mload(0x38e20), sub(f_q, mload(0x38f60)), f_q)) +mstore(0x38fa0, mulmod(mload(0x38f80), mload(0x29860), f_q)) +mstore(0x38fc0, addmod(mload(0x38d20), mload(0x38fa0), f_q)) +mstore(0x38fe0, mulmod(mload(0x8060), mload(0x38fc0), f_q)) +mstore(0x39000, mulmod(mload(0x13560), mload(0x5520), f_q)) +mstore(0x39020, addmod(mload(0xd940), mload(0x39000), f_q)) +mstore(0x39040, addmod(mload(0x39020), mload(0x5580), f_q)) +mstore(0x39060, mulmod(mload(0x13580), mload(0x5520), f_q)) +mstore(0x39080, addmod(mload(0xd9c0), mload(0x39060), f_q)) +mstore(0x390a0, addmod(mload(0x39080), mload(0x5580), f_q)) +mstore(0x390c0, mulmod(mload(0x390a0), mload(0x39040), f_q)) +mstore(0x390e0, mulmod(mload(0x390c0), mload(0x163c0), f_q)) +mstore(0x39100, mulmod(14971134042688197015478541342046774911905540332817976834498601351621608223242, mload(0x5520), f_q)) +mstore(0x39120, mulmod(mload(0x8180), mload(0x39100), f_q)) +mstore(0x39140, addmod(mload(0xd940), mload(0x39120), f_q)) +mstore(0x39160, addmod(mload(0x39140), mload(0x5580), f_q)) +mstore(0x39180, mulmod(10457712449095436699383059150106416569416696090933835344498636382076843247107, mload(0x5520), f_q)) +mstore(0x391a0, mulmod(mload(0x8180), mload(0x39180), f_q)) +mstore(0x391c0, addmod(mload(0xd9c0), mload(0x391a0), f_q)) +mstore(0x391e0, addmod(mload(0x391c0), mload(0x5580), f_q)) +mstore(0x39200, mulmod(mload(0x391e0), mload(0x39160), f_q)) +mstore(0x39220, mulmod(mload(0x39200), mload(0x163a0), f_q)) +mstore(0x39240, addmod(mload(0x390e0), sub(f_q, mload(0x39220)), f_q)) +mstore(0x39260, mulmod(mload(0x39240), mload(0x29860), f_q)) +mstore(0x39280, addmod(mload(0x38fe0), mload(0x39260), f_q)) +mstore(0x392a0, mulmod(mload(0x8060), mload(0x39280), f_q)) +mstore(0x392c0, mulmod(mload(0x135a0), mload(0x5520), f_q)) +mstore(0x392e0, addmod(mload(0xda40), mload(0x392c0), f_q)) +mstore(0x39300, addmod(mload(0x392e0), mload(0x5580), f_q)) +mstore(0x39320, mulmod(mload(0x135c0), mload(0x5520), f_q)) +mstore(0x39340, addmod(mload(0xdac0), mload(0x39320), f_q)) +mstore(0x39360, addmod(mload(0x39340), mload(0x5580), f_q)) +mstore(0x39380, mulmod(mload(0x39360), mload(0x39300), f_q)) +mstore(0x393a0, mulmod(mload(0x39380), mload(0x16420), f_q)) +mstore(0x393c0, mulmod(19877974267861071773665848130495472841448569663494201606609146559150407054412, mload(0x5520), f_q)) +mstore(0x393e0, mulmod(mload(0x8180), mload(0x393c0), f_q)) +mstore(0x39400, addmod(mload(0xda40), mload(0x393e0), f_q)) +mstore(0x39420, addmod(mload(0x39400), mload(0x5580), f_q)) +mstore(0x39440, mulmod(3941121028075137149296025268770240110065466676840103200777751463996765949115, mload(0x5520), f_q)) +mstore(0x39460, mulmod(mload(0x8180), mload(0x39440), f_q)) +mstore(0x39480, addmod(mload(0xdac0), mload(0x39460), f_q)) +mstore(0x394a0, addmod(mload(0x39480), mload(0x5580), f_q)) +mstore(0x394c0, mulmod(mload(0x394a0), mload(0x39420), f_q)) +mstore(0x394e0, mulmod(mload(0x394c0), mload(0x16400), f_q)) +mstore(0x39500, addmod(mload(0x393a0), sub(f_q, mload(0x394e0)), f_q)) +mstore(0x39520, mulmod(mload(0x39500), mload(0x29860), f_q)) +mstore(0x39540, addmod(mload(0x392a0), mload(0x39520), f_q)) +mstore(0x39560, mulmod(mload(0x8060), mload(0x39540), f_q)) +mstore(0x39580, mulmod(mload(0x135e0), mload(0x5520), f_q)) +mstore(0x395a0, addmod(mload(0xdb40), mload(0x39580), f_q)) +mstore(0x395c0, addmod(mload(0x395a0), mload(0x5580), f_q)) +mstore(0x395e0, mulmod(mload(0x13600), mload(0x5520), f_q)) +mstore(0x39600, addmod(mload(0xdbc0), mload(0x395e0), f_q)) +mstore(0x39620, addmod(mload(0x39600), mload(0x5580), f_q)) +mstore(0x39640, mulmod(mload(0x39620), mload(0x395c0), f_q)) +mstore(0x39660, mulmod(mload(0x39640), mload(0x16480), f_q)) +mstore(0x39680, mulmod(12895154374353986893054889328038102090959342532933672383880533732904902138268, mload(0x5520), f_q)) +mstore(0x396a0, mulmod(mload(0x8180), mload(0x39680), f_q)) +mstore(0x396c0, addmod(mload(0xdb40), mload(0x396a0), f_q)) +mstore(0x396e0, addmod(mload(0x396c0), mload(0x5580), f_q)) +mstore(0x39700, mulmod(17338543545426072132079776526838592500608471139743770076213725278341744989495, mload(0x5520), f_q)) +mstore(0x39720, mulmod(mload(0x8180), mload(0x39700), f_q)) +mstore(0x39740, addmod(mload(0xdbc0), mload(0x39720), f_q)) +mstore(0x39760, addmod(mload(0x39740), mload(0x5580), f_q)) +mstore(0x39780, mulmod(mload(0x39760), mload(0x396e0), f_q)) +mstore(0x397a0, mulmod(mload(0x39780), mload(0x16460), f_q)) +mstore(0x397c0, addmod(mload(0x39660), sub(f_q, mload(0x397a0)), f_q)) +mstore(0x397e0, mulmod(mload(0x397c0), mload(0x29860), f_q)) +mstore(0x39800, addmod(mload(0x39560), mload(0x397e0), f_q)) +mstore(0x39820, mulmod(mload(0x8060), mload(0x39800), f_q)) +mstore(0x39840, mulmod(mload(0x13620), mload(0x5520), f_q)) +mstore(0x39860, addmod(mload(0xdc40), mload(0x39840), f_q)) +mstore(0x39880, addmod(mload(0x39860), mload(0x5580), f_q)) +mstore(0x398a0, mulmod(mload(0x13640), mload(0x5520), f_q)) +mstore(0x398c0, addmod(mload(0xdcc0), mload(0x398a0), f_q)) +mstore(0x398e0, addmod(mload(0x398c0), mload(0x5580), f_q)) +mstore(0x39900, mulmod(mload(0x398e0), mload(0x39880), f_q)) +mstore(0x39920, mulmod(mload(0x39900), mload(0x164e0), f_q)) +mstore(0x39940, mulmod(19406017400824633308628386102315782654881571531051252972018345248988294698676, mload(0x5520), f_q)) +mstore(0x39960, mulmod(mload(0x8180), mload(0x39940), f_q)) +mstore(0x39980, addmod(mload(0xdc40), mload(0x39960), f_q)) +mstore(0x399a0, addmod(mload(0x39980), mload(0x5580), f_q)) +mstore(0x399c0, mulmod(5602294083627913837145782187454564111715907180435124678724895657689697890790, mload(0x5520), f_q)) +mstore(0x399e0, mulmod(mload(0x8180), mload(0x399c0), f_q)) +mstore(0x39a00, addmod(mload(0xdcc0), mload(0x399e0), f_q)) +mstore(0x39a20, addmod(mload(0x39a00), mload(0x5580), f_q)) +mstore(0x39a40, mulmod(mload(0x39a20), mload(0x399a0), f_q)) +mstore(0x39a60, mulmod(mload(0x39a40), mload(0x164c0), f_q)) +mstore(0x39a80, addmod(mload(0x39920), sub(f_q, mload(0x39a60)), f_q)) +mstore(0x39aa0, mulmod(mload(0x39a80), mload(0x29860), f_q)) +mstore(0x39ac0, addmod(mload(0x39820), mload(0x39aa0), f_q)) +mstore(0x39ae0, mulmod(mload(0x8060), mload(0x39ac0), f_q)) +mstore(0x39b00, mulmod(mload(0x13660), mload(0x5520), f_q)) +mstore(0x39b20, addmod(mload(0xdd40), mload(0x39b00), f_q)) +mstore(0x39b40, addmod(mload(0x39b20), mload(0x5580), f_q)) +mstore(0x39b60, mulmod(mload(0x13680), mload(0x5520), f_q)) +mstore(0x39b80, addmod(mload(0xddc0), mload(0x39b60), f_q)) +mstore(0x39ba0, addmod(mload(0x39b80), mload(0x5580), f_q)) +mstore(0x39bc0, mulmod(mload(0x39ba0), mload(0x39b40), f_q)) +mstore(0x39be0, mulmod(mload(0x39bc0), mload(0x16540), f_q)) +mstore(0x39c00, mulmod(7062486993209256661716165530407267738040463336709397110802707979875988076606, mload(0x5520), f_q)) +mstore(0x39c20, mulmod(mload(0x8180), mload(0x39c00), f_q)) +mstore(0x39c40, addmod(mload(0xdd40), mload(0x39c20), f_q)) +mstore(0x39c60, addmod(mload(0x39c40), mload(0x5580), f_q)) +mstore(0x39c80, mulmod(12884785008966835151532688594255060549855606070768452523019672688730399659633, mload(0x5520), f_q)) +mstore(0x39ca0, mulmod(mload(0x8180), mload(0x39c80), f_q)) +mstore(0x39cc0, addmod(mload(0xddc0), mload(0x39ca0), f_q)) +mstore(0x39ce0, addmod(mload(0x39cc0), mload(0x5580), f_q)) +mstore(0x39d00, mulmod(mload(0x39ce0), mload(0x39c60), f_q)) +mstore(0x39d20, mulmod(mload(0x39d00), mload(0x16520), f_q)) +mstore(0x39d40, addmod(mload(0x39be0), sub(f_q, mload(0x39d20)), f_q)) +mstore(0x39d60, mulmod(mload(0x39d40), mload(0x29860), f_q)) +mstore(0x39d80, addmod(mload(0x39ae0), mload(0x39d60), f_q)) +mstore(0x39da0, mulmod(mload(0x8060), mload(0x39d80), f_q)) +mstore(0x39dc0, mulmod(mload(0x136a0), mload(0x5520), f_q)) +mstore(0x39de0, addmod(mload(0xde40), mload(0x39dc0), f_q)) +mstore(0x39e00, addmod(mload(0x39de0), mload(0x5580), f_q)) +mstore(0x39e20, mulmod(mload(0x136c0), mload(0x5520), f_q)) +mstore(0x39e40, addmod(mload(0xdec0), mload(0x39e20), f_q)) +mstore(0x39e60, addmod(mload(0x39e40), mload(0x5580), f_q)) +mstore(0x39e80, mulmod(mload(0x39e60), mload(0x39e00), f_q)) +mstore(0x39ea0, mulmod(mload(0x39e80), mload(0x165a0), f_q)) +mstore(0x39ec0, mulmod(17396792895744234122908249980427571761659599828960902953894763243455505946306, mload(0x5520), f_q)) +mstore(0x39ee0, mulmod(mload(0x8180), mload(0x39ec0), f_q)) +mstore(0x39f00, addmod(mload(0xde40), mload(0x39ee0), f_q)) +mstore(0x39f20, addmod(mload(0x39f00), mload(0x5580), f_q)) +mstore(0x39f40, mulmod(18092115641168452462482864719029080484019371503958951970429591930547575808528, mload(0x5520), f_q)) +mstore(0x39f60, mulmod(mload(0x8180), mload(0x39f40), f_q)) +mstore(0x39f80, addmod(mload(0xdec0), mload(0x39f60), f_q)) +mstore(0x39fa0, addmod(mload(0x39f80), mload(0x5580), f_q)) +mstore(0x39fc0, mulmod(mload(0x39fa0), mload(0x39f20), f_q)) +mstore(0x39fe0, mulmod(mload(0x39fc0), mload(0x16580), f_q)) +mstore(0x3a000, addmod(mload(0x39ea0), sub(f_q, mload(0x39fe0)), f_q)) +mstore(0x3a020, mulmod(mload(0x3a000), mload(0x29860), f_q)) +mstore(0x3a040, addmod(mload(0x39da0), mload(0x3a020), f_q)) +mstore(0x3a060, mulmod(mload(0x8060), mload(0x3a040), f_q)) +mstore(0x3a080, mulmod(mload(0x136e0), mload(0x5520), f_q)) +mstore(0x3a0a0, addmod(mload(0xdf40), mload(0x3a080), f_q)) +mstore(0x3a0c0, addmod(mload(0x3a0a0), mload(0x5580), f_q)) +mstore(0x3a0e0, mulmod(mload(0x13700), mload(0x5520), f_q)) +mstore(0x3a100, addmod(mload(0xdfc0), mload(0x3a0e0), f_q)) +mstore(0x3a120, addmod(mload(0x3a100), mload(0x5580), f_q)) +mstore(0x3a140, mulmod(mload(0x3a120), mload(0x3a0c0), f_q)) +mstore(0x3a160, mulmod(mload(0x3a140), mload(0x16600), f_q)) +mstore(0x3a180, mulmod(8417710319714338987358781954108930200270828854313096279077801888976814749180, mload(0x5520), f_q)) +mstore(0x3a1a0, mulmod(mload(0x8180), mload(0x3a180), f_q)) +mstore(0x3a1c0, addmod(mload(0xdf40), mload(0x3a1a0), f_q)) +mstore(0x3a1e0, addmod(mload(0x3a1c0), mload(0x5580), f_q)) +mstore(0x3a200, mulmod(13600452233260718639747858279143368174551964804918533123880586375753916296716, mload(0x5520), f_q)) +mstore(0x3a220, mulmod(mload(0x8180), mload(0x3a200), f_q)) +mstore(0x3a240, addmod(mload(0xdfc0), mload(0x3a220), f_q)) +mstore(0x3a260, addmod(mload(0x3a240), mload(0x5580), f_q)) +mstore(0x3a280, mulmod(mload(0x3a260), mload(0x3a1e0), f_q)) +mstore(0x3a2a0, mulmod(mload(0x3a280), mload(0x165e0), f_q)) +mstore(0x3a2c0, addmod(mload(0x3a160), sub(f_q, mload(0x3a2a0)), f_q)) +mstore(0x3a2e0, mulmod(mload(0x3a2c0), mload(0x29860), f_q)) +mstore(0x3a300, addmod(mload(0x3a060), mload(0x3a2e0), f_q)) +mstore(0x3a320, mulmod(mload(0x8060), mload(0x3a300), f_q)) +mstore(0x3a340, mulmod(mload(0x13720), mload(0x5520), f_q)) +mstore(0x3a360, addmod(mload(0xe040), mload(0x3a340), f_q)) +mstore(0x3a380, addmod(mload(0x3a360), mload(0x5580), f_q)) +mstore(0x3a3a0, mulmod(mload(0x13740), mload(0x5520), f_q)) +mstore(0x3a3c0, addmod(mload(0xe0c0), mload(0x3a3a0), f_q)) +mstore(0x3a3e0, addmod(mload(0x3a3c0), mload(0x5580), f_q)) +mstore(0x3a400, mulmod(mload(0x3a3e0), mload(0x3a380), f_q)) +mstore(0x3a420, mulmod(mload(0x3a400), mload(0x16660), f_q)) +mstore(0x3a440, mulmod(19674741319905620570974842235240218274988289499924384368653033419675671704612, mload(0x5520), f_q)) +mstore(0x3a460, mulmod(mload(0x8180), mload(0x3a440), f_q)) +mstore(0x3a480, addmod(mload(0xe040), mload(0x3a460), f_q)) +mstore(0x3a4a0, addmod(mload(0x3a480), mload(0x5580), f_q)) +mstore(0x3a4c0, mulmod(12086925975513674688210869735540432594372225296519335953561547577492214221639, mload(0x5520), f_q)) +mstore(0x3a4e0, mulmod(mload(0x8180), mload(0x3a4c0), f_q)) +mstore(0x3a500, addmod(mload(0xe0c0), mload(0x3a4e0), f_q)) +mstore(0x3a520, addmod(mload(0x3a500), mload(0x5580), f_q)) +mstore(0x3a540, mulmod(mload(0x3a520), mload(0x3a4a0), f_q)) +mstore(0x3a560, mulmod(mload(0x3a540), mload(0x16640), f_q)) +mstore(0x3a580, addmod(mload(0x3a420), sub(f_q, mload(0x3a560)), f_q)) +mstore(0x3a5a0, mulmod(mload(0x3a580), mload(0x29860), f_q)) +mstore(0x3a5c0, addmod(mload(0x3a320), mload(0x3a5a0), f_q)) +mstore(0x3a5e0, mulmod(mload(0x8060), mload(0x3a5c0), f_q)) +mstore(0x3a600, mulmod(mload(0x13760), mload(0x5520), f_q)) +mstore(0x3a620, addmod(mload(0xe140), mload(0x3a600), f_q)) +mstore(0x3a640, addmod(mload(0x3a620), mload(0x5580), f_q)) +mstore(0x3a660, mulmod(mload(0x13780), mload(0x5520), f_q)) +mstore(0x3a680, addmod(mload(0xe1c0), mload(0x3a660), f_q)) +mstore(0x3a6a0, addmod(mload(0x3a680), mload(0x5580), f_q)) +mstore(0x3a6c0, mulmod(mload(0x3a6a0), mload(0x3a640), f_q)) +mstore(0x3a6e0, mulmod(mload(0x3a6c0), mload(0x166c0), f_q)) +mstore(0x3a700, mulmod(12206156783082753265543854647215718353708108004143059656212503482213131385231, mload(0x5520), f_q)) +mstore(0x3a720, mulmod(mload(0x8180), mload(0x3a700), f_q)) +mstore(0x3a740, addmod(mload(0xe140), mload(0x3a720), f_q)) +mstore(0x3a760, addmod(mload(0x3a740), mload(0x5580), f_q)) +mstore(0x3a780, mulmod(11567402613414219132817997719326083360794314185632567883848161001803980081428, mload(0x5520), f_q)) +mstore(0x3a7a0, mulmod(mload(0x8180), mload(0x3a780), f_q)) +mstore(0x3a7c0, addmod(mload(0xe1c0), mload(0x3a7a0), f_q)) +mstore(0x3a7e0, addmod(mload(0x3a7c0), mload(0x5580), f_q)) +mstore(0x3a800, mulmod(mload(0x3a7e0), mload(0x3a760), f_q)) +mstore(0x3a820, mulmod(mload(0x3a800), mload(0x166a0), f_q)) +mstore(0x3a840, addmod(mload(0x3a6e0), sub(f_q, mload(0x3a820)), f_q)) +mstore(0x3a860, mulmod(mload(0x3a840), mload(0x29860), f_q)) +mstore(0x3a880, addmod(mload(0x3a5e0), mload(0x3a860), f_q)) +mstore(0x3a8a0, mulmod(mload(0x8060), mload(0x3a880), f_q)) +mstore(0x3a8c0, mulmod(mload(0x137a0), mload(0x5520), f_q)) +mstore(0x3a8e0, addmod(mload(0xe240), mload(0x3a8c0), f_q)) +mstore(0x3a900, addmod(mload(0x3a8e0), mload(0x5580), f_q)) +mstore(0x3a920, mulmod(mload(0x137c0), mload(0x5520), f_q)) +mstore(0x3a940, addmod(mload(0xe2c0), mload(0x3a920), f_q)) +mstore(0x3a960, addmod(mload(0x3a940), mload(0x5580), f_q)) +mstore(0x3a980, mulmod(mload(0x3a960), mload(0x3a900), f_q)) +mstore(0x3a9a0, mulmod(mload(0x3a980), mload(0x16720), f_q)) +mstore(0x3a9c0, mulmod(4458105728722493058250094338679273549322269181908567600345570119827136157106, mload(0x5520), f_q)) +mstore(0x3a9e0, mulmod(mload(0x8180), mload(0x3a9c0), f_q)) +mstore(0x3aa00, addmod(mload(0xe240), mload(0x3a9e0), f_q)) +mstore(0x3aa20, addmod(mload(0x3aa00), mload(0x5580), f_q)) +mstore(0x3aa40, mulmod(4007607249597355767529924230692696745747387410786945797427416923704966172001, mload(0x5520), f_q)) +mstore(0x3aa60, mulmod(mload(0x8180), mload(0x3aa40), f_q)) +mstore(0x3aa80, addmod(mload(0xe2c0), mload(0x3aa60), f_q)) +mstore(0x3aaa0, addmod(mload(0x3aa80), mload(0x5580), f_q)) +mstore(0x3aac0, mulmod(mload(0x3aaa0), mload(0x3aa20), f_q)) +mstore(0x3aae0, mulmod(mload(0x3aac0), mload(0x16700), f_q)) +mstore(0x3ab00, addmod(mload(0x3a9a0), sub(f_q, mload(0x3aae0)), f_q)) +mstore(0x3ab20, mulmod(mload(0x3ab00), mload(0x29860), f_q)) +mstore(0x3ab40, addmod(mload(0x3a8a0), mload(0x3ab20), f_q)) +mstore(0x3ab60, mulmod(mload(0x8060), mload(0x3ab40), f_q)) +mstore(0x3ab80, mulmod(mload(0x137e0), mload(0x5520), f_q)) +mstore(0x3aba0, addmod(mload(0xe340), mload(0x3ab80), f_q)) +mstore(0x3abc0, addmod(mload(0x3aba0), mload(0x5580), f_q)) +mstore(0x3abe0, mulmod(mload(0x13800), mload(0x5520), f_q)) +mstore(0x3ac00, addmod(mload(0xe3c0), mload(0x3abe0), f_q)) +mstore(0x3ac20, addmod(mload(0x3ac00), mload(0x5580), f_q)) +mstore(0x3ac40, mulmod(mload(0x3ac20), mload(0x3abc0), f_q)) +mstore(0x3ac60, mulmod(mload(0x3ac40), mload(0x16780), f_q)) +mstore(0x3ac80, mulmod(886929308900363637260762899800466565924617750378985317977033803666308881895, mload(0x5520), f_q)) +mstore(0x3aca0, mulmod(mload(0x8180), mload(0x3ac80), f_q)) +mstore(0x3acc0, addmod(mload(0xe340), mload(0x3aca0), f_q)) +mstore(0x3ace0, addmod(mload(0x3acc0), mload(0x5580), f_q)) +mstore(0x3ad00, mulmod(839157530782698559099983544702056459993194447958293077462019977918360655514, mload(0x5520), f_q)) +mstore(0x3ad20, mulmod(mload(0x8180), mload(0x3ad00), f_q)) +mstore(0x3ad40, addmod(mload(0xe3c0), mload(0x3ad20), f_q)) +mstore(0x3ad60, addmod(mload(0x3ad40), mload(0x5580), f_q)) +mstore(0x3ad80, mulmod(mload(0x3ad60), mload(0x3ace0), f_q)) +mstore(0x3ada0, mulmod(mload(0x3ad80), mload(0x16760), f_q)) +mstore(0x3adc0, addmod(mload(0x3ac60), sub(f_q, mload(0x3ada0)), f_q)) +mstore(0x3ade0, mulmod(mload(0x3adc0), mload(0x29860), f_q)) +mstore(0x3ae00, addmod(mload(0x3ab60), mload(0x3ade0), f_q)) +mstore(0x3ae20, mulmod(mload(0x8060), mload(0x3ae00), f_q)) +mstore(0x3ae40, mulmod(mload(0x13820), mload(0x5520), f_q)) +mstore(0x3ae60, addmod(mload(0xe440), mload(0x3ae40), f_q)) +mstore(0x3ae80, addmod(mload(0x3ae60), mload(0x5580), f_q)) +mstore(0x3aea0, mulmod(mload(0x13840), mload(0x5520), f_q)) +mstore(0x3aec0, addmod(mload(0xe4c0), mload(0x3aea0), f_q)) +mstore(0x3aee0, addmod(mload(0x3aec0), mload(0x5580), f_q)) +mstore(0x3af00, mulmod(mload(0x3aee0), mload(0x3ae80), f_q)) +mstore(0x3af20, mulmod(mload(0x3af00), mload(0x167e0), f_q)) +mstore(0x3af40, mulmod(4307343703033211693886591894285930413769635443093457777130650513683640101909, mload(0x5520), f_q)) +mstore(0x3af60, mulmod(mload(0x8180), mload(0x3af40), f_q)) +mstore(0x3af80, addmod(mload(0xe440), mload(0x3af60), f_q)) +mstore(0x3afa0, addmod(mload(0x3af80), mload(0x5580), f_q)) +mstore(0x3afc0, mulmod(12376438775518721826042001131546492509669548335626037635949956664371839310858, mload(0x5520), f_q)) +mstore(0x3afe0, mulmod(mload(0x8180), mload(0x3afc0), f_q)) +mstore(0x3b000, addmod(mload(0xe4c0), mload(0x3afe0), f_q)) +mstore(0x3b020, addmod(mload(0x3b000), mload(0x5580), f_q)) +mstore(0x3b040, mulmod(mload(0x3b020), mload(0x3afa0), f_q)) +mstore(0x3b060, mulmod(mload(0x3b040), mload(0x167c0), f_q)) +mstore(0x3b080, addmod(mload(0x3af20), sub(f_q, mload(0x3b060)), f_q)) +mstore(0x3b0a0, mulmod(mload(0x3b080), mload(0x29860), f_q)) +mstore(0x3b0c0, addmod(mload(0x3ae20), mload(0x3b0a0), f_q)) +mstore(0x3b0e0, mulmod(mload(0x8060), mload(0x3b0c0), f_q)) +mstore(0x3b100, mulmod(mload(0x13860), mload(0x5520), f_q)) +mstore(0x3b120, addmod(mload(0xe540), mload(0x3b100), f_q)) +mstore(0x3b140, addmod(mload(0x3b120), mload(0x5580), f_q)) +mstore(0x3b160, mulmod(mload(0x13880), mload(0x5520), f_q)) +mstore(0x3b180, addmod(mload(0xe5c0), mload(0x3b160), f_q)) +mstore(0x3b1a0, addmod(mload(0x3b180), mload(0x5580), f_q)) +mstore(0x3b1c0, mulmod(mload(0x3b1a0), mload(0x3b140), f_q)) +mstore(0x3b1e0, mulmod(mload(0x3b1c0), mload(0x16840), f_q)) +mstore(0x3b200, mulmod(13543365261382154868309051989512928839119019492500306063170321648968390282384, mload(0x5520), f_q)) +mstore(0x3b220, mulmod(mload(0x8180), mload(0x3b200), f_q)) +mstore(0x3b240, addmod(mload(0xe540), mload(0x3b220), f_q)) +mstore(0x3b260, addmod(mload(0x3b240), mload(0x5580), f_q)) +mstore(0x3b280, mulmod(21178574397727536636718191588566925461564061996739523200703101548090509588419, mload(0x5520), f_q)) +mstore(0x3b2a0, mulmod(mload(0x8180), mload(0x3b280), f_q)) +mstore(0x3b2c0, addmod(mload(0xe5c0), mload(0x3b2a0), f_q)) +mstore(0x3b2e0, addmod(mload(0x3b2c0), mload(0x5580), f_q)) +mstore(0x3b300, mulmod(mload(0x3b2e0), mload(0x3b260), f_q)) +mstore(0x3b320, mulmod(mload(0x3b300), mload(0x16820), f_q)) +mstore(0x3b340, addmod(mload(0x3b1e0), sub(f_q, mload(0x3b320)), f_q)) +mstore(0x3b360, mulmod(mload(0x3b340), mload(0x29860), f_q)) +mstore(0x3b380, addmod(mload(0x3b0e0), mload(0x3b360), f_q)) +mstore(0x3b3a0, mulmod(mload(0x8060), mload(0x3b380), f_q)) +mstore(0x3b3c0, mulmod(mload(0x138a0), mload(0x5520), f_q)) +mstore(0x3b3e0, addmod(mload(0xe640), mload(0x3b3c0), f_q)) +mstore(0x3b400, addmod(mload(0x3b3e0), mload(0x5580), f_q)) +mstore(0x3b420, mulmod(mload(0x138c0), mload(0x5520), f_q)) +mstore(0x3b440, addmod(mload(0xe6c0), mload(0x3b420), f_q)) +mstore(0x3b460, addmod(mload(0x3b440), mload(0x5580), f_q)) +mstore(0x3b480, mulmod(mload(0x3b460), mload(0x3b400), f_q)) +mstore(0x3b4a0, mulmod(mload(0x3b480), mload(0x168a0), f_q)) +mstore(0x3b4c0, mulmod(12729377810759893033255799636546666201106217644848702528878879268767349404874, mload(0x5520), f_q)) +mstore(0x3b4e0, mulmod(mload(0x8180), mload(0x3b4c0), f_q)) +mstore(0x3b500, addmod(mload(0xe640), mload(0x3b4e0), f_q)) +mstore(0x3b520, addmod(mload(0x3b500), mload(0x5580), f_q)) +mstore(0x3b540, mulmod(13743603317356184539711351118758390304473448881639615812232840817748102812615, mload(0x5520), f_q)) +mstore(0x3b560, mulmod(mload(0x8180), mload(0x3b540), f_q)) +mstore(0x3b580, addmod(mload(0xe6c0), mload(0x3b560), f_q)) +mstore(0x3b5a0, addmod(mload(0x3b580), mload(0x5580), f_q)) +mstore(0x3b5c0, mulmod(mload(0x3b5a0), mload(0x3b520), f_q)) +mstore(0x3b5e0, mulmod(mload(0x3b5c0), mload(0x16880), f_q)) +mstore(0x3b600, addmod(mload(0x3b4a0), sub(f_q, mload(0x3b5e0)), f_q)) +mstore(0x3b620, mulmod(mload(0x3b600), mload(0x29860), f_q)) +mstore(0x3b640, addmod(mload(0x3b3a0), mload(0x3b620), f_q)) +mstore(0x3b660, mulmod(mload(0x8060), mload(0x3b640), f_q)) +mstore(0x3b680, mulmod(mload(0x138e0), mload(0x5520), f_q)) +mstore(0x3b6a0, addmod(mload(0xe740), mload(0x3b680), f_q)) +mstore(0x3b6c0, addmod(mload(0x3b6a0), mload(0x5580), f_q)) +mstore(0x3b6e0, mulmod(mload(0x13900), mload(0x5520), f_q)) +mstore(0x3b700, addmod(mload(0xe7c0), mload(0x3b6e0), f_q)) +mstore(0x3b720, addmod(mload(0x3b700), mload(0x5580), f_q)) +mstore(0x3b740, mulmod(mload(0x3b720), mload(0x3b6c0), f_q)) +mstore(0x3b760, mulmod(mload(0x3b740), mload(0x16900), f_q)) +mstore(0x3b780, mulmod(2380184026518258932589945844906180372370321322697557951421341936112184688160, mload(0x5520), f_q)) +mstore(0x3b7a0, mulmod(mload(0x8180), mload(0x3b780), f_q)) +mstore(0x3b7c0, addmod(mload(0xe740), mload(0x3b7a0), f_q)) +mstore(0x3b7e0, addmod(mload(0x3b7c0), mload(0x5580), f_q)) +mstore(0x3b800, mulmod(11619654756470268407072645686300741999315308962528497610117903386187808304576, mload(0x5520), f_q)) +mstore(0x3b820, mulmod(mload(0x8180), mload(0x3b800), f_q)) +mstore(0x3b840, addmod(mload(0xe7c0), mload(0x3b820), f_q)) +mstore(0x3b860, addmod(mload(0x3b840), mload(0x5580), f_q)) +mstore(0x3b880, mulmod(mload(0x3b860), mload(0x3b7e0), f_q)) +mstore(0x3b8a0, mulmod(mload(0x3b880), mload(0x168e0), f_q)) +mstore(0x3b8c0, addmod(mload(0x3b760), sub(f_q, mload(0x3b8a0)), f_q)) +mstore(0x3b8e0, mulmod(mload(0x3b8c0), mload(0x29860), f_q)) +mstore(0x3b900, addmod(mload(0x3b660), mload(0x3b8e0), f_q)) +mstore(0x3b920, mulmod(mload(0x8060), mload(0x3b900), f_q)) +mstore(0x3b940, mulmod(mload(0x13920), mload(0x5520), f_q)) +mstore(0x3b960, addmod(mload(0xe840), mload(0x3b940), f_q)) +mstore(0x3b980, addmod(mload(0x3b960), mload(0x5580), f_q)) +mstore(0x3b9a0, mulmod(mload(0x13940), mload(0x5520), f_q)) +mstore(0x3b9c0, addmod(mload(0xe8c0), mload(0x3b9a0), f_q)) +mstore(0x3b9e0, addmod(mload(0x3b9c0), mload(0x5580), f_q)) +mstore(0x3ba00, mulmod(mload(0x3b9e0), mload(0x3b980), f_q)) +mstore(0x3ba20, mulmod(mload(0x3ba00), mload(0x16960), f_q)) +mstore(0x3ba40, mulmod(20031573542301531357841629510901571288487456966819953428866365632614833144294, mload(0x5520), f_q)) +mstore(0x3ba60, mulmod(mload(0x8180), mload(0x3ba40), f_q)) +mstore(0x3ba80, addmod(mload(0xe840), mload(0x3ba60), f_q)) +mstore(0x3baa0, addmod(mload(0x3ba80), mload(0x5580), f_q)) +mstore(0x3bac0, mulmod(19438138359927499413150673117567684670421495279047647777784145545252823698820, mload(0x5520), f_q)) +mstore(0x3bae0, mulmod(mload(0x8180), mload(0x3bac0), f_q)) +mstore(0x3bb00, addmod(mload(0xe8c0), mload(0x3bae0), f_q)) +mstore(0x3bb20, addmod(mload(0x3bb00), mload(0x5580), f_q)) +mstore(0x3bb40, mulmod(mload(0x3bb20), mload(0x3baa0), f_q)) +mstore(0x3bb60, mulmod(mload(0x3bb40), mload(0x16940), f_q)) +mstore(0x3bb80, addmod(mload(0x3ba20), sub(f_q, mload(0x3bb60)), f_q)) +mstore(0x3bba0, mulmod(mload(0x3bb80), mload(0x29860), f_q)) +mstore(0x3bbc0, addmod(mload(0x3b920), mload(0x3bba0), f_q)) +mstore(0x3bbe0, mulmod(mload(0x8060), mload(0x3bbc0), f_q)) +mstore(0x3bc00, mulmod(mload(0x13960), mload(0x5520), f_q)) +mstore(0x3bc20, addmod(mload(0xe940), mload(0x3bc00), f_q)) +mstore(0x3bc40, addmod(mload(0x3bc20), mload(0x5580), f_q)) +mstore(0x3bc60, mulmod(mload(0x13980), mload(0x5520), f_q)) +mstore(0x3bc80, addmod(mload(0xe9c0), mload(0x3bc60), f_q)) +mstore(0x3bca0, addmod(mload(0x3bc80), mload(0x5580), f_q)) +mstore(0x3bcc0, mulmod(mload(0x3bca0), mload(0x3bc40), f_q)) +mstore(0x3bce0, mulmod(mload(0x3bcc0), mload(0x169c0), f_q)) +mstore(0x3bd00, mulmod(8591471073963325587513183322585972985196632243516606006191182363435407256165, mload(0x5520), f_q)) +mstore(0x3bd20, mulmod(mload(0x8180), mload(0x3bd00), f_q)) +mstore(0x3bd40, addmod(mload(0xe940), mload(0x3bd20), f_q)) +mstore(0x3bd60, addmod(mload(0x3bd40), mload(0x5580), f_q)) +mstore(0x3bd80, mulmod(5710999114405348138859046500739767614973766614744938243135861937063048117472, mload(0x5520), f_q)) +mstore(0x3bda0, mulmod(mload(0x8180), mload(0x3bd80), f_q)) +mstore(0x3bdc0, addmod(mload(0xe9c0), mload(0x3bda0), f_q)) +mstore(0x3bde0, addmod(mload(0x3bdc0), mload(0x5580), f_q)) +mstore(0x3be00, mulmod(mload(0x3bde0), mload(0x3bd60), f_q)) +mstore(0x3be20, mulmod(mload(0x3be00), mload(0x169a0), f_q)) +mstore(0x3be40, addmod(mload(0x3bce0), sub(f_q, mload(0x3be20)), f_q)) +mstore(0x3be60, mulmod(mload(0x3be40), mload(0x29860), f_q)) +mstore(0x3be80, addmod(mload(0x3bbe0), mload(0x3be60), f_q)) +mstore(0x3bea0, mulmod(mload(0x8060), mload(0x3be80), f_q)) +mstore(0x3bec0, mulmod(mload(0x139a0), mload(0x5520), f_q)) +mstore(0x3bee0, addmod(mload(0xea40), mload(0x3bec0), f_q)) +mstore(0x3bf00, addmod(mload(0x3bee0), mload(0x5580), f_q)) +mstore(0x3bf20, mulmod(mload(0x139c0), mload(0x5520), f_q)) +mstore(0x3bf40, addmod(mload(0xeac0), mload(0x3bf20), f_q)) +mstore(0x3bf60, addmod(mload(0x3bf40), mload(0x5580), f_q)) +mstore(0x3bf80, mulmod(mload(0x3bf60), mload(0x3bf00), f_q)) +mstore(0x3bfa0, mulmod(mload(0x3bf80), mload(0x16a20), f_q)) +mstore(0x3bfc0, mulmod(8558001054372582431934308863060038371388486883183622253933441343092954521919, mload(0x5520), f_q)) +mstore(0x3bfe0, mulmod(mload(0x8180), mload(0x3bfc0), f_q)) +mstore(0x3c000, addmod(mload(0xea40), mload(0x3bfe0), f_q)) +mstore(0x3c020, addmod(mload(0x3c000), mload(0x5580), f_q)) +mstore(0x3c040, mulmod(14891220401108510756058778532138909308919834910938538951706096387466966780760, mload(0x5520), f_q)) +mstore(0x3c060, mulmod(mload(0x8180), mload(0x3c040), f_q)) +mstore(0x3c080, addmod(mload(0xeac0), mload(0x3c060), f_q)) +mstore(0x3c0a0, addmod(mload(0x3c080), mload(0x5580), f_q)) +mstore(0x3c0c0, mulmod(mload(0x3c0a0), mload(0x3c020), f_q)) +mstore(0x3c0e0, mulmod(mload(0x3c0c0), mload(0x16a00), f_q)) +mstore(0x3c100, addmod(mload(0x3bfa0), sub(f_q, mload(0x3c0e0)), f_q)) +mstore(0x3c120, mulmod(mload(0x3c100), mload(0x29860), f_q)) +mstore(0x3c140, addmod(mload(0x3bea0), mload(0x3c120), f_q)) +mstore(0x3c160, mulmod(mload(0x8060), mload(0x3c140), f_q)) +mstore(0x3c180, mulmod(mload(0x139e0), mload(0x5520), f_q)) +mstore(0x3c1a0, addmod(mload(0xeb40), mload(0x3c180), f_q)) +mstore(0x3c1c0, addmod(mload(0x3c1a0), mload(0x5580), f_q)) +mstore(0x3c1e0, mulmod(mload(0x13a00), mload(0x5520), f_q)) +mstore(0x3c200, addmod(mload(0xebc0), mload(0x3c1e0), f_q)) +mstore(0x3c220, addmod(mload(0x3c200), mload(0x5580), f_q)) +mstore(0x3c240, mulmod(mload(0x3c220), mload(0x3c1c0), f_q)) +mstore(0x3c260, mulmod(mload(0x3c240), mload(0x16a80), f_q)) +mstore(0x3c280, mulmod(7110438649742726131402123560319475240115379320241167763116778429320043249113, mload(0x5520), f_q)) +mstore(0x3c2a0, mulmod(mload(0x8180), mload(0x3c280), f_q)) +mstore(0x3c2c0, addmod(mload(0xeb40), mload(0x3c2a0), f_q)) +mstore(0x3c2e0, addmod(mload(0x3c2c0), mload(0x5580), f_q)) +mstore(0x3c300, mulmod(12974254205679028553484401501870228377781606370867478115993601834860060259603, mload(0x5520), f_q)) +mstore(0x3c320, mulmod(mload(0x8180), mload(0x3c300), f_q)) +mstore(0x3c340, addmod(mload(0xebc0), mload(0x3c320), f_q)) +mstore(0x3c360, addmod(mload(0x3c340), mload(0x5580), f_q)) +mstore(0x3c380, mulmod(mload(0x3c360), mload(0x3c2e0), f_q)) +mstore(0x3c3a0, mulmod(mload(0x3c380), mload(0x16a60), f_q)) +mstore(0x3c3c0, addmod(mload(0x3c260), sub(f_q, mload(0x3c3a0)), f_q)) +mstore(0x3c3e0, mulmod(mload(0x3c3c0), mload(0x29860), f_q)) +mstore(0x3c400, addmod(mload(0x3c160), mload(0x3c3e0), f_q)) +mstore(0x3c420, mulmod(mload(0x8060), mload(0x3c400), f_q)) +mstore(0x3c440, mulmod(mload(0x13a20), mload(0x5520), f_q)) +mstore(0x3c460, addmod(mload(0xec40), mload(0x3c440), f_q)) +mstore(0x3c480, addmod(mload(0x3c460), mload(0x5580), f_q)) +mstore(0x3c4a0, mulmod(mload(0x13a40), mload(0x5520), f_q)) +mstore(0x3c4c0, addmod(mload(0xecc0), mload(0x3c4a0), f_q)) +mstore(0x3c4e0, addmod(mload(0x3c4c0), mload(0x5580), f_q)) +mstore(0x3c500, mulmod(mload(0x3c4e0), mload(0x3c480), f_q)) +mstore(0x3c520, mulmod(mload(0x3c500), mload(0x16ae0), f_q)) +mstore(0x3c540, mulmod(4722666869433685315720697777570396458966472651163749091196234109908225477879, mload(0x5520), f_q)) +mstore(0x3c560, mulmod(mload(0x8180), mload(0x3c540), f_q)) +mstore(0x3c580, addmod(mload(0xec40), mload(0x3c560), f_q)) +mstore(0x3c5a0, addmod(mload(0x3c580), mload(0x5580), f_q)) +mstore(0x3c5c0, mulmod(20740015909873495129790210560891007686122421253830043655502017263721347261372, mload(0x5520), f_q)) +mstore(0x3c5e0, mulmod(mload(0x8180), mload(0x3c5c0), f_q)) +mstore(0x3c600, addmod(mload(0xecc0), mload(0x3c5e0), f_q)) +mstore(0x3c620, addmod(mload(0x3c600), mload(0x5580), f_q)) +mstore(0x3c640, mulmod(mload(0x3c620), mload(0x3c5a0), f_q)) +mstore(0x3c660, mulmod(mload(0x3c640), mload(0x16ac0), f_q)) +mstore(0x3c680, addmod(mload(0x3c520), sub(f_q, mload(0x3c660)), f_q)) +mstore(0x3c6a0, mulmod(mload(0x3c680), mload(0x29860), f_q)) +mstore(0x3c6c0, addmod(mload(0x3c420), mload(0x3c6a0), f_q)) +mstore(0x3c6e0, mulmod(mload(0x8060), mload(0x3c6c0), f_q)) +mstore(0x3c700, mulmod(mload(0x13a60), mload(0x5520), f_q)) +mstore(0x3c720, addmod(mload(0xed40), mload(0x3c700), f_q)) +mstore(0x3c740, addmod(mload(0x3c720), mload(0x5580), f_q)) +mstore(0x3c760, mulmod(mload(0x13a80), mload(0x5520), f_q)) +mstore(0x3c780, addmod(mload(0xedc0), mload(0x3c760), f_q)) +mstore(0x3c7a0, addmod(mload(0x3c780), mload(0x5580), f_q)) +mstore(0x3c7c0, mulmod(mload(0x3c7a0), mload(0x3c740), f_q)) +mstore(0x3c7e0, mulmod(mload(0x3c7c0), mload(0x16b40), f_q)) +mstore(0x3c800, mulmod(21525246528413489394413605732376270507737344353380837148267201135628622961279, mload(0x5520), f_q)) +mstore(0x3c820, mulmod(mload(0x8180), mload(0x3c800), f_q)) +mstore(0x3c840, addmod(mload(0xed40), mload(0x3c820), f_q)) +mstore(0x3c860, addmod(mload(0x3c840), mload(0x5580), f_q)) +mstore(0x3c880, mulmod(14340334602389139346680716912965425856544137486138317126730896792396114310171, mload(0x5520), f_q)) +mstore(0x3c8a0, mulmod(mload(0x8180), mload(0x3c880), f_q)) +mstore(0x3c8c0, addmod(mload(0xedc0), mload(0x3c8a0), f_q)) +mstore(0x3c8e0, addmod(mload(0x3c8c0), mload(0x5580), f_q)) +mstore(0x3c900, mulmod(mload(0x3c8e0), mload(0x3c860), f_q)) +mstore(0x3c920, mulmod(mload(0x3c900), mload(0x16b20), f_q)) +mstore(0x3c940, addmod(mload(0x3c7e0), sub(f_q, mload(0x3c920)), f_q)) +mstore(0x3c960, mulmod(mload(0x3c940), mload(0x29860), f_q)) +mstore(0x3c980, addmod(mload(0x3c6e0), mload(0x3c960), f_q)) +mstore(0x3c9a0, mulmod(mload(0x8060), mload(0x3c980), f_q)) +mstore(0x3c9c0, mulmod(mload(0x13aa0), mload(0x5520), f_q)) +mstore(0x3c9e0, addmod(mload(0xee40), mload(0x3c9c0), f_q)) +mstore(0x3ca00, addmod(mload(0x3c9e0), mload(0x5580), f_q)) +mstore(0x3ca20, mulmod(mload(0x13ac0), mload(0x5520), f_q)) +mstore(0x3ca40, addmod(mload(0xeec0), mload(0x3ca20), f_q)) +mstore(0x3ca60, addmod(mload(0x3ca40), mload(0x5580), f_q)) +mstore(0x3ca80, mulmod(mload(0x3ca60), mload(0x3ca00), f_q)) +mstore(0x3caa0, mulmod(mload(0x3ca80), mload(0x16ba0), f_q)) +mstore(0x3cac0, mulmod(13269505631732995995809934558588830127652012502315596898315019669924162659369, mload(0x5520), f_q)) +mstore(0x3cae0, mulmod(mload(0x8180), mload(0x3cac0), f_q)) +mstore(0x3cb00, addmod(mload(0xee40), mload(0x3cae0), f_q)) +mstore(0x3cb20, addmod(mload(0x3cb00), mload(0x5580), f_q)) +mstore(0x3cb40, mulmod(3936144150260585795172829212649129287839375522753929223581506471828315870990, mload(0x5520), f_q)) +mstore(0x3cb60, mulmod(mload(0x8180), mload(0x3cb40), f_q)) +mstore(0x3cb80, addmod(mload(0xeec0), mload(0x3cb60), f_q)) +mstore(0x3cba0, addmod(mload(0x3cb80), mload(0x5580), f_q)) +mstore(0x3cbc0, mulmod(mload(0x3cba0), mload(0x3cb20), f_q)) +mstore(0x3cbe0, mulmod(mload(0x3cbc0), mload(0x16b80), f_q)) +mstore(0x3cc00, addmod(mload(0x3caa0), sub(f_q, mload(0x3cbe0)), f_q)) +mstore(0x3cc20, mulmod(mload(0x3cc00), mload(0x29860), f_q)) +mstore(0x3cc40, addmod(mload(0x3c9a0), mload(0x3cc20), f_q)) +mstore(0x3cc60, mulmod(mload(0x8060), mload(0x3cc40), f_q)) +mstore(0x3cc80, mulmod(mload(0x13ae0), mload(0x5520), f_q)) +mstore(0x3cca0, addmod(mload(0xef40), mload(0x3cc80), f_q)) +mstore(0x3ccc0, addmod(mload(0x3cca0), mload(0x5580), f_q)) +mstore(0x3cce0, mulmod(mload(0x13b00), mload(0x5520), f_q)) +mstore(0x3cd00, addmod(mload(0xefc0), mload(0x3cce0), f_q)) +mstore(0x3cd20, addmod(mload(0x3cd00), mload(0x5580), f_q)) +mstore(0x3cd40, mulmod(mload(0x3cd20), mload(0x3ccc0), f_q)) +mstore(0x3cd60, mulmod(mload(0x3cd40), mload(0x16c00), f_q)) +mstore(0x3cd80, mulmod(8968813146954367367477726300341507794460872558408336372154765251027895349038, mload(0x5520), f_q)) +mstore(0x3cda0, mulmod(mload(0x8180), mload(0x3cd80), f_q)) +mstore(0x3cdc0, addmod(mload(0xef40), mload(0x3cda0), f_q)) +mstore(0x3cde0, addmod(mload(0x3cdc0), mload(0x5580), f_q)) +mstore(0x3ce00, mulmod(14370543197421000000322738993012413529822116680115519779388477206057504273848, mload(0x5520), f_q)) +mstore(0x3ce20, mulmod(mload(0x8180), mload(0x3ce00), f_q)) +mstore(0x3ce40, addmod(mload(0xefc0), mload(0x3ce20), f_q)) +mstore(0x3ce60, addmod(mload(0x3ce40), mload(0x5580), f_q)) +mstore(0x3ce80, mulmod(mload(0x3ce60), mload(0x3cde0), f_q)) +mstore(0x3cea0, mulmod(mload(0x3ce80), mload(0x16be0), f_q)) +mstore(0x3cec0, addmod(mload(0x3cd60), sub(f_q, mload(0x3cea0)), f_q)) +mstore(0x3cee0, mulmod(mload(0x3cec0), mload(0x29860), f_q)) +mstore(0x3cf00, addmod(mload(0x3cc60), mload(0x3cee0), f_q)) +mstore(0x3cf20, mulmod(mload(0x8060), mload(0x3cf00), f_q)) +mstore(0x3cf40, mulmod(mload(0x13b20), mload(0x5520), f_q)) +mstore(0x3cf60, addmod(mload(0xf040), mload(0x3cf40), f_q)) +mstore(0x3cf80, addmod(mload(0x3cf60), mload(0x5580), f_q)) +mstore(0x3cfa0, mulmod(mload(0x13b40), mload(0x5520), f_q)) +mstore(0x3cfc0, addmod(mload(0xf0c0), mload(0x3cfa0), f_q)) +mstore(0x3cfe0, addmod(mload(0x3cfc0), mload(0x5580), f_q)) +mstore(0x3d000, mulmod(mload(0x3cfe0), mload(0x3cf80), f_q)) +mstore(0x3d020, mulmod(mload(0x3d000), mload(0x16c60), f_q)) +mstore(0x3d040, mulmod(11839380656799017090372491394422824894573487881615815829827569160531032024299, mload(0x5520), f_q)) +mstore(0x3d060, mulmod(mload(0x8180), mload(0x3d040), f_q)) +mstore(0x3d080, addmod(mload(0xf040), mload(0x3d060), f_q)) +mstore(0x3d0a0, addmod(mload(0x3d080), mload(0x5580), f_q)) +mstore(0x3d0c0, mulmod(7234005255726939361083988855164270203552491963233276173319558501040183002904, mload(0x5520), f_q)) +mstore(0x3d0e0, mulmod(mload(0x8180), mload(0x3d0c0), f_q)) +mstore(0x3d100, addmod(mload(0xf0c0), mload(0x3d0e0), f_q)) +mstore(0x3d120, addmod(mload(0x3d100), mload(0x5580), f_q)) +mstore(0x3d140, mulmod(mload(0x3d120), mload(0x3d0a0), f_q)) +mstore(0x3d160, mulmod(mload(0x3d140), mload(0x16c40), f_q)) +mstore(0x3d180, addmod(mload(0x3d020), sub(f_q, mload(0x3d160)), f_q)) +mstore(0x3d1a0, mulmod(mload(0x3d180), mload(0x29860), f_q)) +mstore(0x3d1c0, addmod(mload(0x3cf20), mload(0x3d1a0), f_q)) +mstore(0x3d1e0, mulmod(mload(0x8060), mload(0x3d1c0), f_q)) +mstore(0x3d200, mulmod(mload(0x13b60), mload(0x5520), f_q)) +mstore(0x3d220, addmod(mload(0xf140), mload(0x3d200), f_q)) +mstore(0x3d240, addmod(mload(0x3d220), mload(0x5580), f_q)) +mstore(0x3d260, mulmod(mload(0x13b80), mload(0x5520), f_q)) +mstore(0x3d280, addmod(mload(0xf1c0), mload(0x3d260), f_q)) +mstore(0x3d2a0, addmod(mload(0x3d280), mload(0x5580), f_q)) +mstore(0x3d2c0, mulmod(mload(0x3d2a0), mload(0x3d240), f_q)) +mstore(0x3d2e0, mulmod(mload(0x3d2c0), mload(0x16cc0), f_q)) +mstore(0x3d300, mulmod(18195033733920629295666932303923241543268543221023942816986899708680688666178, mload(0x5520), f_q)) +mstore(0x3d320, mulmod(mload(0x8180), mload(0x3d300), f_q)) +mstore(0x3d340, addmod(mload(0xf140), mload(0x3d320), f_q)) +mstore(0x3d360, addmod(mload(0x3d340), mload(0x5580), f_q)) +mstore(0x3d380, mulmod(8813865966133205828598976664573869360505805535602764771172902873890528566756, mload(0x5520), f_q)) +mstore(0x3d3a0, mulmod(mload(0x8180), mload(0x3d380), f_q)) +mstore(0x3d3c0, addmod(mload(0xf1c0), mload(0x3d3a0), f_q)) +mstore(0x3d3e0, addmod(mload(0x3d3c0), mload(0x5580), f_q)) +mstore(0x3d400, mulmod(mload(0x3d3e0), mload(0x3d360), f_q)) +mstore(0x3d420, mulmod(mload(0x3d400), mload(0x16ca0), f_q)) +mstore(0x3d440, addmod(mload(0x3d2e0), sub(f_q, mload(0x3d420)), f_q)) +mstore(0x3d460, mulmod(mload(0x3d440), mload(0x29860), f_q)) +mstore(0x3d480, addmod(mload(0x3d1e0), mload(0x3d460), f_q)) +mstore(0x3d4a0, mulmod(mload(0x8060), mload(0x3d480), f_q)) +mstore(0x3d4c0, mulmod(mload(0x13ba0), mload(0x5520), f_q)) +mstore(0x3d4e0, addmod(mload(0xf240), mload(0x3d4c0), f_q)) +mstore(0x3d500, addmod(mload(0x3d4e0), mload(0x5580), f_q)) +mstore(0x3d520, mulmod(mload(0x13bc0), mload(0x5520), f_q)) +mstore(0x3d540, addmod(mload(0xf2c0), mload(0x3d520), f_q)) +mstore(0x3d560, addmod(mload(0x3d540), mload(0x5580), f_q)) +mstore(0x3d580, mulmod(mload(0x3d560), mload(0x3d500), f_q)) +mstore(0x3d5a0, mulmod(mload(0x3d580), mload(0x16d20), f_q)) +mstore(0x3d5c0, mulmod(20827969279556842136789257856414366930922905413015814428045090734967499478234, mload(0x5520), f_q)) +mstore(0x3d5e0, mulmod(mload(0x8180), mload(0x3d5c0), f_q)) +mstore(0x3d600, addmod(mload(0xf240), mload(0x3d5e0), f_q)) +mstore(0x3d620, addmod(mload(0x3d600), mload(0x5580), f_q)) +mstore(0x3d640, mulmod(6992284256151841000078572994778413975691516949286802184874978144246443404536, mload(0x5520), f_q)) +mstore(0x3d660, mulmod(mload(0x8180), mload(0x3d640), f_q)) +mstore(0x3d680, addmod(mload(0xf2c0), mload(0x3d660), f_q)) +mstore(0x3d6a0, addmod(mload(0x3d680), mload(0x5580), f_q)) +mstore(0x3d6c0, mulmod(mload(0x3d6a0), mload(0x3d620), f_q)) +mstore(0x3d6e0, mulmod(mload(0x3d6c0), mload(0x16d00), f_q)) +mstore(0x3d700, addmod(mload(0x3d5a0), sub(f_q, mload(0x3d6e0)), f_q)) +mstore(0x3d720, mulmod(mload(0x3d700), mload(0x29860), f_q)) +mstore(0x3d740, addmod(mload(0x3d4a0), mload(0x3d720), f_q)) +mstore(0x3d760, mulmod(mload(0x8060), mload(0x3d740), f_q)) +mstore(0x3d780, mulmod(mload(0x13be0), mload(0x5520), f_q)) +mstore(0x3d7a0, addmod(mload(0xf340), mload(0x3d780), f_q)) +mstore(0x3d7c0, addmod(mload(0x3d7a0), mload(0x5580), f_q)) +mstore(0x3d7e0, mulmod(mload(0x13c00), mload(0x5520), f_q)) +mstore(0x3d800, addmod(mload(0xf3c0), mload(0x3d7e0), f_q)) +mstore(0x3d820, addmod(mload(0x3d800), mload(0x5580), f_q)) +mstore(0x3d840, mulmod(mload(0x3d820), mload(0x3d7c0), f_q)) +mstore(0x3d860, mulmod(mload(0x3d840), mload(0x16d80), f_q)) +mstore(0x3d880, mulmod(14600172893128205725189465578813023902567296259523575638409799047326214868489, mload(0x5520), f_q)) +mstore(0x3d8a0, mulmod(mload(0x8180), mload(0x3d880), f_q)) +mstore(0x3d8c0, addmod(mload(0xf340), mload(0x3d8a0), f_q)) +mstore(0x3d8e0, addmod(mload(0x3d8c0), mload(0x5580), f_q)) +mstore(0x3d900, mulmod(1896787079712208881056359479559039677382358837616927983559657028506970060514, mload(0x5520), f_q)) +mstore(0x3d920, mulmod(mload(0x8180), mload(0x3d900), f_q)) +mstore(0x3d940, addmod(mload(0xf3c0), mload(0x3d920), f_q)) +mstore(0x3d960, addmod(mload(0x3d940), mload(0x5580), f_q)) +mstore(0x3d980, mulmod(mload(0x3d960), mload(0x3d8e0), f_q)) +mstore(0x3d9a0, mulmod(mload(0x3d980), mload(0x16d60), f_q)) +mstore(0x3d9c0, addmod(mload(0x3d860), sub(f_q, mload(0x3d9a0)), f_q)) +mstore(0x3d9e0, mulmod(mload(0x3d9c0), mload(0x29860), f_q)) +mstore(0x3da00, addmod(mload(0x3d760), mload(0x3d9e0), f_q)) +mstore(0x3da20, mulmod(mload(0x8060), mload(0x3da00), f_q)) +mstore(0x3da40, mulmod(mload(0x13c20), mload(0x5520), f_q)) +mstore(0x3da60, addmod(mload(0xf440), mload(0x3da40), f_q)) +mstore(0x3da80, addmod(mload(0x3da60), mload(0x5580), f_q)) +mstore(0x3daa0, mulmod(mload(0x13c40), mload(0x5520), f_q)) +mstore(0x3dac0, addmod(mload(0xf4c0), mload(0x3daa0), f_q)) +mstore(0x3dae0, addmod(mload(0x3dac0), mload(0x5580), f_q)) +mstore(0x3db00, mulmod(mload(0x3dae0), mload(0x3da80), f_q)) +mstore(0x3db20, mulmod(mload(0x3db00), mload(0x16de0), f_q)) +mstore(0x3db40, mulmod(1527970617736746015987019601712181095267640719557949410249480601203372737796, mload(0x5520), f_q)) +mstore(0x3db60, mulmod(mload(0x8180), mload(0x3db40), f_q)) +mstore(0x3db80, addmod(mload(0xf440), mload(0x3db60), f_q)) +mstore(0x3dba0, addmod(mload(0x3db80), mload(0x5580), f_q)) +mstore(0x3dbc0, mulmod(15629470792996429358431747300411468472180348416122133383313893867633578552346, mload(0x5520), f_q)) +mstore(0x3dbe0, mulmod(mload(0x8180), mload(0x3dbc0), f_q)) +mstore(0x3dc00, addmod(mload(0xf4c0), mload(0x3dbe0), f_q)) +mstore(0x3dc20, addmod(mload(0x3dc00), mload(0x5580), f_q)) +mstore(0x3dc40, mulmod(mload(0x3dc20), mload(0x3dba0), f_q)) +mstore(0x3dc60, mulmod(mload(0x3dc40), mload(0x16dc0), f_q)) +mstore(0x3dc80, addmod(mload(0x3db20), sub(f_q, mload(0x3dc60)), f_q)) +mstore(0x3dca0, mulmod(mload(0x3dc80), mload(0x29860), f_q)) +mstore(0x3dcc0, addmod(mload(0x3da20), mload(0x3dca0), f_q)) +mstore(0x3dce0, mulmod(mload(0x8060), mload(0x3dcc0), f_q)) +mstore(0x3dd00, mulmod(mload(0x13c60), mload(0x5520), f_q)) +mstore(0x3dd20, addmod(mload(0xf540), mload(0x3dd00), f_q)) +mstore(0x3dd40, addmod(mload(0x3dd20), mload(0x5580), f_q)) +mstore(0x3dd60, mulmod(mload(0x13c80), mload(0x5520), f_q)) +mstore(0x3dd80, addmod(mload(0xf5c0), mload(0x3dd60), f_q)) +mstore(0x3dda0, addmod(mload(0x3dd80), mload(0x5580), f_q)) +mstore(0x3ddc0, mulmod(mload(0x3dda0), mload(0x3dd40), f_q)) +mstore(0x3dde0, mulmod(mload(0x3ddc0), mload(0x16e40), f_q)) +mstore(0x3de00, mulmod(14926608274828814543756017299621132346773976621159046246457802408174512649512, mload(0x5520), f_q)) +mstore(0x3de20, mulmod(mload(0x8180), mload(0x3de00), f_q)) +mstore(0x3de40, addmod(mload(0xf540), mload(0x3de20), f_q)) +mstore(0x3de60, addmod(mload(0x3de40), mload(0x5580), f_q)) +mstore(0x3de80, mulmod(2366503590955515963537999337876036933596164931733417795771250481255479854299, mload(0x5520), f_q)) +mstore(0x3dea0, mulmod(mload(0x8180), mload(0x3de80), f_q)) +mstore(0x3dec0, addmod(mload(0xf5c0), mload(0x3dea0), f_q)) +mstore(0x3dee0, addmod(mload(0x3dec0), mload(0x5580), f_q)) +mstore(0x3df00, mulmod(mload(0x3dee0), mload(0x3de60), f_q)) +mstore(0x3df20, mulmod(mload(0x3df00), mload(0x16e20), f_q)) +mstore(0x3df40, addmod(mload(0x3dde0), sub(f_q, mload(0x3df20)), f_q)) +mstore(0x3df60, mulmod(mload(0x3df40), mload(0x29860), f_q)) +mstore(0x3df80, addmod(mload(0x3dce0), mload(0x3df60), f_q)) +mstore(0x3dfa0, mulmod(mload(0x8060), mload(0x3df80), f_q)) +mstore(0x3dfc0, mulmod(mload(0x13ca0), mload(0x5520), f_q)) +mstore(0x3dfe0, addmod(mload(0xf640), mload(0x3dfc0), f_q)) +mstore(0x3e000, addmod(mload(0x3dfe0), mload(0x5580), f_q)) +mstore(0x3e020, mulmod(mload(0x13cc0), mload(0x5520), f_q)) +mstore(0x3e040, addmod(mload(0xf6c0), mload(0x3e020), f_q)) +mstore(0x3e060, addmod(mload(0x3e040), mload(0x5580), f_q)) +mstore(0x3e080, mulmod(mload(0x3e060), mload(0x3e000), f_q)) +mstore(0x3e0a0, mulmod(mload(0x3e080), mload(0x16ea0), f_q)) +mstore(0x3e0c0, mulmod(13514509280689606705654711804772584669836146210288800107840927992322378173200, mload(0x5520), f_q)) +mstore(0x3e0e0, mulmod(mload(0x8180), mload(0x3e0c0), f_q)) +mstore(0x3e100, addmod(mload(0xf640), mload(0x3e0e0), f_q)) +mstore(0x3e120, addmod(mload(0x3e100), mload(0x5580), f_q)) +mstore(0x3e140, mulmod(15023848631250370794279572941894163228817728519775835114024973947864678539058, mload(0x5520), f_q)) +mstore(0x3e160, mulmod(mload(0x8180), mload(0x3e140), f_q)) +mstore(0x3e180, addmod(mload(0xf6c0), mload(0x3e160), f_q)) +mstore(0x3e1a0, addmod(mload(0x3e180), mload(0x5580), f_q)) +mstore(0x3e1c0, mulmod(mload(0x3e1a0), mload(0x3e120), f_q)) +mstore(0x3e1e0, mulmod(mload(0x3e1c0), mload(0x16e80), f_q)) +mstore(0x3e200, addmod(mload(0x3e0a0), sub(f_q, mload(0x3e1e0)), f_q)) +mstore(0x3e220, mulmod(mload(0x3e200), mload(0x29860), f_q)) +mstore(0x3e240, addmod(mload(0x3dfa0), mload(0x3e220), f_q)) +mstore(0x3e260, mulmod(mload(0x8060), mload(0x3e240), f_q)) +mstore(0x3e280, mulmod(mload(0x13ce0), mload(0x5520), f_q)) +mstore(0x3e2a0, addmod(mload(0xf740), mload(0x3e280), f_q)) +mstore(0x3e2c0, addmod(mload(0x3e2a0), mload(0x5580), f_q)) +mstore(0x3e2e0, mulmod(mload(0x13d00), mload(0x5520), f_q)) +mstore(0x3e300, addmod(mload(0xf7c0), mload(0x3e2e0), f_q)) +mstore(0x3e320, addmod(mload(0x3e300), mload(0x5580), f_q)) +mstore(0x3e340, mulmod(mload(0x3e320), mload(0x3e2c0), f_q)) +mstore(0x3e360, mulmod(mload(0x3e340), mload(0x16f00), f_q)) +mstore(0x3e380, mulmod(18865230020894527309604367006081645595064149521701196829690664641455035133963, mload(0x5520), f_q)) +mstore(0x3e3a0, mulmod(mload(0x8180), mload(0x3e380), f_q)) +mstore(0x3e3c0, addmod(mload(0xf740), mload(0x3e3a0), f_q)) +mstore(0x3e3e0, addmod(mload(0x3e3c0), mload(0x5580), f_q)) +mstore(0x3e400, mulmod(16425144458587653935552730513802571467938319445536740310518366144832826295927, mload(0x5520), f_q)) +mstore(0x3e420, mulmod(mload(0x8180), mload(0x3e400), f_q)) +mstore(0x3e440, addmod(mload(0xf7c0), mload(0x3e420), f_q)) +mstore(0x3e460, addmod(mload(0x3e440), mload(0x5580), f_q)) +mstore(0x3e480, mulmod(mload(0x3e460), mload(0x3e3e0), f_q)) +mstore(0x3e4a0, mulmod(mload(0x3e480), mload(0x16ee0), f_q)) +mstore(0x3e4c0, addmod(mload(0x3e360), sub(f_q, mload(0x3e4a0)), f_q)) +mstore(0x3e4e0, mulmod(mload(0x3e4c0), mload(0x29860), f_q)) +mstore(0x3e500, addmod(mload(0x3e260), mload(0x3e4e0), f_q)) +mstore(0x3e520, mulmod(mload(0x8060), mload(0x3e500), f_q)) +mstore(0x3e540, mulmod(mload(0x13d20), mload(0x5520), f_q)) +mstore(0x3e560, addmod(mload(0xf840), mload(0x3e540), f_q)) +mstore(0x3e580, addmod(mload(0x3e560), mload(0x5580), f_q)) +mstore(0x3e5a0, mulmod(mload(0x13d40), mload(0x5520), f_q)) +mstore(0x3e5c0, addmod(mload(0xf8c0), mload(0x3e5a0), f_q)) +mstore(0x3e5e0, addmod(mload(0x3e5c0), mload(0x5580), f_q)) +mstore(0x3e600, mulmod(mload(0x3e5e0), mload(0x3e580), f_q)) +mstore(0x3e620, mulmod(mload(0x3e600), mload(0x16f60), f_q)) +mstore(0x3e640, mulmod(18991950167219361322509103782810360961047047186575377839960717478078245254872, mload(0x5520), f_q)) +mstore(0x3e660, mulmod(mload(0x8180), mload(0x3e640), f_q)) +mstore(0x3e680, addmod(mload(0xf840), mload(0x3e660), f_q)) +mstore(0x3e6a0, addmod(mload(0x3e680), mload(0x5580), f_q)) +mstore(0x3e6c0, mulmod(1767571593059213220809359116611893249520261945815509158758167751848354504453, mload(0x5520), f_q)) +mstore(0x3e6e0, mulmod(mload(0x8180), mload(0x3e6c0), f_q)) +mstore(0x3e700, addmod(mload(0xf8c0), mload(0x3e6e0), f_q)) +mstore(0x3e720, addmod(mload(0x3e700), mload(0x5580), f_q)) +mstore(0x3e740, mulmod(mload(0x3e720), mload(0x3e6a0), f_q)) +mstore(0x3e760, mulmod(mload(0x3e740), mload(0x16f40), f_q)) +mstore(0x3e780, addmod(mload(0x3e620), sub(f_q, mload(0x3e760)), f_q)) +mstore(0x3e7a0, mulmod(mload(0x3e780), mload(0x29860), f_q)) +mstore(0x3e7c0, addmod(mload(0x3e520), mload(0x3e7a0), f_q)) +mstore(0x3e7e0, mulmod(mload(0x8060), mload(0x3e7c0), f_q)) +mstore(0x3e800, mulmod(mload(0x13d60), mload(0x5520), f_q)) +mstore(0x3e820, addmod(mload(0xf940), mload(0x3e800), f_q)) +mstore(0x3e840, addmod(mload(0x3e820), mload(0x5580), f_q)) +mstore(0x3e860, mulmod(mload(0x13d80), mload(0x5520), f_q)) +mstore(0x3e880, addmod(mload(0xf9c0), mload(0x3e860), f_q)) +mstore(0x3e8a0, addmod(mload(0x3e880), mload(0x5580), f_q)) +mstore(0x3e8c0, mulmod(mload(0x3e8a0), mload(0x3e840), f_q)) +mstore(0x3e8e0, mulmod(mload(0x3e8c0), mload(0x16fc0), f_q)) +mstore(0x3e900, mulmod(2288707663365839208280626484467881770009154674928813379242085409907013700411, mload(0x5520), f_q)) +mstore(0x3e920, mulmod(mload(0x8180), mload(0x3e900), f_q)) +mstore(0x3e940, addmod(mload(0xf940), mload(0x3e920), f_q)) +mstore(0x3e960, addmod(mload(0x3e940), mload(0x5580), f_q)) +mstore(0x3e980, mulmod(3504498657894919911106428789826488077441859753086073166363977528752478297958, mload(0x5520), f_q)) +mstore(0x3e9a0, mulmod(mload(0x8180), mload(0x3e980), f_q)) +mstore(0x3e9c0, addmod(mload(0xf9c0), mload(0x3e9a0), f_q)) +mstore(0x3e9e0, addmod(mload(0x3e9c0), mload(0x5580), f_q)) +mstore(0x3ea00, mulmod(mload(0x3e9e0), mload(0x3e960), f_q)) +mstore(0x3ea20, mulmod(mload(0x3ea00), mload(0x16fa0), f_q)) +mstore(0x3ea40, addmod(mload(0x3e8e0), sub(f_q, mload(0x3ea20)), f_q)) +mstore(0x3ea60, mulmod(mload(0x3ea40), mload(0x29860), f_q)) +mstore(0x3ea80, addmod(mload(0x3e7e0), mload(0x3ea60), f_q)) +mstore(0x3eaa0, mulmod(mload(0x8060), mload(0x3ea80), f_q)) +mstore(0x3eac0, mulmod(mload(0x13da0), mload(0x5520), f_q)) +mstore(0x3eae0, addmod(mload(0xfa40), mload(0x3eac0), f_q)) +mstore(0x3eb00, addmod(mload(0x3eae0), mload(0x5580), f_q)) +mstore(0x3eb20, mulmod(mload(0x13dc0), mload(0x5520), f_q)) +mstore(0x3eb40, addmod(mload(0xfac0), mload(0x3eb20), f_q)) +mstore(0x3eb60, addmod(mload(0x3eb40), mload(0x5580), f_q)) +mstore(0x3eb80, mulmod(mload(0x3eb60), mload(0x3eb00), f_q)) +mstore(0x3eba0, mulmod(mload(0x3eb80), mload(0x17020), f_q)) +mstore(0x3ebc0, mulmod(16844002352950341263036364242271072291988483508385073830257396123348154618394, mload(0x5520), f_q)) +mstore(0x3ebe0, mulmod(mload(0x8180), mload(0x3ebc0), f_q)) +mstore(0x3ec00, addmod(mload(0xfa40), mload(0x3ebe0), f_q)) +mstore(0x3ec20, addmod(mload(0x3ec00), mload(0x5580), f_q)) +mstore(0x3ec40, mulmod(5684041093937740862515061420105605325580059601555221906841460902229273921045, mload(0x5520), f_q)) +mstore(0x3ec60, mulmod(mload(0x8180), mload(0x3ec40), f_q)) +mstore(0x3ec80, addmod(mload(0xfac0), mload(0x3ec60), f_q)) +mstore(0x3eca0, addmod(mload(0x3ec80), mload(0x5580), f_q)) +mstore(0x3ecc0, mulmod(mload(0x3eca0), mload(0x3ec20), f_q)) +mstore(0x3ece0, mulmod(mload(0x3ecc0), mload(0x17000), f_q)) +mstore(0x3ed00, addmod(mload(0x3eba0), sub(f_q, mload(0x3ece0)), f_q)) +mstore(0x3ed20, mulmod(mload(0x3ed00), mload(0x29860), f_q)) +mstore(0x3ed40, addmod(mload(0x3eaa0), mload(0x3ed20), f_q)) +mstore(0x3ed60, mulmod(mload(0x8060), mload(0x3ed40), f_q)) +mstore(0x3ed80, mulmod(mload(0x13de0), mload(0x5520), f_q)) +mstore(0x3eda0, addmod(mload(0xfb40), mload(0x3ed80), f_q)) +mstore(0x3edc0, addmod(mload(0x3eda0), mload(0x5580), f_q)) +mstore(0x3ede0, mulmod(mload(0x13e00), mload(0x5520), f_q)) +mstore(0x3ee00, addmod(mload(0xfbc0), mload(0x3ede0), f_q)) +mstore(0x3ee20, addmod(mload(0x3ee00), mload(0x5580), f_q)) +mstore(0x3ee40, mulmod(mload(0x3ee20), mload(0x3edc0), f_q)) +mstore(0x3ee60, mulmod(mload(0x3ee40), mload(0x17080), f_q)) +mstore(0x3ee80, mulmod(2479606336549293661335228959268478531774358991205353865631003687389294375808, mload(0x5520), f_q)) +mstore(0x3eea0, mulmod(mload(0x8180), mload(0x3ee80), f_q)) +mstore(0x3eec0, addmod(mload(0xfb40), mload(0x3eea0), f_q)) +mstore(0x3eee0, addmod(mload(0x3eec0), mload(0x5580), f_q)) +mstore(0x3ef00, mulmod(436287838250400531165227166277479532820468457409478685529639346189985199454, mload(0x5520), f_q)) +mstore(0x3ef20, mulmod(mload(0x8180), mload(0x3ef00), f_q)) +mstore(0x3ef40, addmod(mload(0xfbc0), mload(0x3ef20), f_q)) +mstore(0x3ef60, addmod(mload(0x3ef40), mload(0x5580), f_q)) +mstore(0x3ef80, mulmod(mload(0x3ef60), mload(0x3eee0), f_q)) +mstore(0x3efa0, mulmod(mload(0x3ef80), mload(0x17060), f_q)) +mstore(0x3efc0, addmod(mload(0x3ee60), sub(f_q, mload(0x3efa0)), f_q)) +mstore(0x3efe0, mulmod(mload(0x3efc0), mload(0x29860), f_q)) +mstore(0x3f000, addmod(mload(0x3ed60), mload(0x3efe0), f_q)) +mstore(0x3f020, mulmod(mload(0x8060), mload(0x3f000), f_q)) +mstore(0x3f040, mulmod(mload(0x13e20), mload(0x5520), f_q)) +mstore(0x3f060, addmod(mload(0xfc40), mload(0x3f040), f_q)) +mstore(0x3f080, addmod(mload(0x3f060), mload(0x5580), f_q)) +mstore(0x3f0a0, mulmod(mload(0x13e40), mload(0x5520), f_q)) +mstore(0x3f0c0, addmod(mload(0xfc60), mload(0x3f0a0), f_q)) +mstore(0x3f0e0, addmod(mload(0x3f0c0), mload(0x5580), f_q)) +mstore(0x3f100, mulmod(mload(0x3f0e0), mload(0x3f080), f_q)) +mstore(0x3f120, mulmod(mload(0x3f100), mload(0x170e0), f_q)) +mstore(0x3f140, mulmod(21478590258764224400928983905758710468533647933255326611037297105544054779271, mload(0x5520), f_q)) +mstore(0x3f160, mulmod(mload(0x8180), mload(0x3f140), f_q)) +mstore(0x3f180, addmod(mload(0xfc40), mload(0x3f160), f_q)) +mstore(0x3f1a0, addmod(mload(0x3f180), mload(0x5580), f_q)) +mstore(0x3f1c0, mulmod(3739736136950341998391084127137584249322157355249748636600399388194277910992, mload(0x5520), f_q)) +mstore(0x3f1e0, mulmod(mload(0x8180), mload(0x3f1c0), f_q)) +mstore(0x3f200, addmod(mload(0xfc60), mload(0x3f1e0), f_q)) +mstore(0x3f220, addmod(mload(0x3f200), mload(0x5580), f_q)) +mstore(0x3f240, mulmod(mload(0x3f220), mload(0x3f1a0), f_q)) +mstore(0x3f260, mulmod(mload(0x3f240), mload(0x170c0), f_q)) +mstore(0x3f280, addmod(mload(0x3f120), sub(f_q, mload(0x3f260)), f_q)) +mstore(0x3f2a0, mulmod(mload(0x3f280), mload(0x29860), f_q)) +mstore(0x3f2c0, addmod(mload(0x3f020), mload(0x3f2a0), f_q)) +mstore(0x3f2e0, mulmod(mload(0x8060), mload(0x3f2c0), f_q)) +mstore(0x3f300, mulmod(mload(0x13e60), mload(0x5520), f_q)) +mstore(0x3f320, addmod(mload(0xfc80), mload(0x3f300), f_q)) +mstore(0x3f340, addmod(mload(0x3f320), mload(0x5580), f_q)) +mstore(0x3f360, mulmod(mload(0x13e80), mload(0x5520), f_q)) +mstore(0x3f380, addmod(mload(0xfca0), mload(0x3f360), f_q)) +mstore(0x3f3a0, addmod(mload(0x3f380), mload(0x5580), f_q)) +mstore(0x3f3c0, mulmod(mload(0x3f3a0), mload(0x3f340), f_q)) +mstore(0x3f3e0, mulmod(mload(0x3f3c0), mload(0x17140), f_q)) +mstore(0x3f400, mulmod(2630307514896035237318153769940484315907925689415349548361375464356412090825, mload(0x5520), f_q)) +mstore(0x3f420, mulmod(mload(0x8180), mload(0x3f400), f_q)) +mstore(0x3f440, addmod(mload(0xfc80), mload(0x3f420), f_q)) +mstore(0x3f460, addmod(mload(0x3f440), mload(0x5580), f_q)) +mstore(0x3f480, mulmod(8799962036867606846158239521944009954817898662515633201396620363830736221733, mload(0x5520), f_q)) +mstore(0x3f4a0, mulmod(mload(0x8180), mload(0x3f480), f_q)) +mstore(0x3f4c0, addmod(mload(0xfca0), mload(0x3f4a0), f_q)) +mstore(0x3f4e0, addmod(mload(0x3f4c0), mload(0x5580), f_q)) +mstore(0x3f500, mulmod(mload(0x3f4e0), mload(0x3f460), f_q)) +mstore(0x3f520, mulmod(mload(0x3f500), mload(0x17120), f_q)) +mstore(0x3f540, addmod(mload(0x3f3e0), sub(f_q, mload(0x3f520)), f_q)) +mstore(0x3f560, mulmod(mload(0x3f540), mload(0x29860), f_q)) +mstore(0x3f580, addmod(mload(0x3f2e0), mload(0x3f560), f_q)) +mstore(0x3f5a0, mulmod(mload(0x8060), mload(0x3f580), f_q)) +mstore(0x3f5c0, mulmod(mload(0x13ea0), mload(0x5520), f_q)) +mstore(0x3f5e0, addmod(mload(0xfcc0), mload(0x3f5c0), f_q)) +mstore(0x3f600, addmod(mload(0x3f5e0), mload(0x5580), f_q)) +mstore(0x3f620, mulmod(mload(0x13ec0), mload(0x5520), f_q)) +mstore(0x3f640, addmod(mload(0xfce0), mload(0x3f620), f_q)) +mstore(0x3f660, addmod(mload(0x3f640), mload(0x5580), f_q)) +mstore(0x3f680, mulmod(mload(0x3f660), mload(0x3f600), f_q)) +mstore(0x3f6a0, mulmod(mload(0x3f680), mload(0x171a0), f_q)) +mstore(0x3f6c0, mulmod(9966785067817016005619678267869967439482740850362372572528063963828005233611, mload(0x5520), f_q)) +mstore(0x3f6e0, mulmod(mload(0x8180), mload(0x3f6c0), f_q)) +mstore(0x3f700, addmod(mload(0xfcc0), mload(0x3f6e0), f_q)) +mstore(0x3f720, addmod(mload(0x3f700), mload(0x5580), f_q)) +mstore(0x3f740, mulmod(4765627316806456613938413137313698666622736766633866759408753333413833325101, mload(0x5520), f_q)) +mstore(0x3f760, mulmod(mload(0x8180), mload(0x3f740), f_q)) +mstore(0x3f780, addmod(mload(0xfce0), mload(0x3f760), f_q)) +mstore(0x3f7a0, addmod(mload(0x3f780), mload(0x5580), f_q)) +mstore(0x3f7c0, mulmod(mload(0x3f7a0), mload(0x3f720), f_q)) +mstore(0x3f7e0, mulmod(mload(0x3f7c0), mload(0x17180), f_q)) +mstore(0x3f800, addmod(mload(0x3f6a0), sub(f_q, mload(0x3f7e0)), f_q)) +mstore(0x3f820, mulmod(mload(0x3f800), mload(0x29860), f_q)) +mstore(0x3f840, addmod(mload(0x3f5a0), mload(0x3f820), f_q)) +mstore(0x3f860, mulmod(mload(0x8060), mload(0x3f840), f_q)) +mstore(0x3f880, mulmod(mload(0x13ee0), mload(0x5520), f_q)) +mstore(0x3f8a0, addmod(mload(0xfd00), mload(0x3f880), f_q)) +mstore(0x3f8c0, addmod(mload(0x3f8a0), mload(0x5580), f_q)) +mstore(0x3f8e0, mulmod(mload(0x13f00), mload(0x5520), f_q)) +mstore(0x3f900, addmod(mload(0xfd20), mload(0x3f8e0), f_q)) +mstore(0x3f920, addmod(mload(0x3f900), mload(0x5580), f_q)) +mstore(0x3f940, mulmod(mload(0x3f920), mload(0x3f8c0), f_q)) +mstore(0x3f960, mulmod(mload(0x3f940), mload(0x17200), f_q)) +mstore(0x3f980, mulmod(15877063431571106123183939884410516829548665658732381205131526385257317686962, mload(0x5520), f_q)) +mstore(0x3f9a0, mulmod(mload(0x8180), mload(0x3f980), f_q)) +mstore(0x3f9c0, addmod(mload(0xfd00), mload(0x3f9a0), f_q)) +mstore(0x3f9e0, addmod(mload(0x3f9c0), mload(0x5580), f_q)) +mstore(0x3fa00, mulmod(17520788985310159223134784278049434526753977547195607540424665774313500485289, mload(0x5520), f_q)) +mstore(0x3fa20, mulmod(mload(0x8180), mload(0x3fa00), f_q)) +mstore(0x3fa40, addmod(mload(0xfd20), mload(0x3fa20), f_q)) +mstore(0x3fa60, addmod(mload(0x3fa40), mload(0x5580), f_q)) +mstore(0x3fa80, mulmod(mload(0x3fa60), mload(0x3f9e0), f_q)) +mstore(0x3faa0, mulmod(mload(0x3fa80), mload(0x171e0), f_q)) +mstore(0x3fac0, addmod(mload(0x3f960), sub(f_q, mload(0x3faa0)), f_q)) +mstore(0x3fae0, mulmod(mload(0x3fac0), mload(0x29860), f_q)) +mstore(0x3fb00, addmod(mload(0x3f860), mload(0x3fae0), f_q)) +mstore(0x3fb20, mulmod(mload(0x8060), mload(0x3fb00), f_q)) +mstore(0x3fb40, mulmod(mload(0x13f20), mload(0x5520), f_q)) +mstore(0x3fb60, addmod(mload(0xfd40), mload(0x3fb40), f_q)) +mstore(0x3fb80, addmod(mload(0x3fb60), mload(0x5580), f_q)) +mstore(0x3fba0, mulmod(mload(0x13f40), mload(0x5520), f_q)) +mstore(0x3fbc0, addmod(mload(0xfd60), mload(0x3fba0), f_q)) +mstore(0x3fbe0, addmod(mload(0x3fbc0), mload(0x5580), f_q)) +mstore(0x3fc00, mulmod(mload(0x3fbe0), mload(0x3fb80), f_q)) +mstore(0x3fc20, mulmod(mload(0x3fc00), mload(0x17260), f_q)) +mstore(0x3fc40, mulmod(15719197789606460419973263825023428357318173453406188482964901491752983831935, mload(0x5520), f_q)) +mstore(0x3fc60, mulmod(mload(0x8180), mload(0x3fc40), f_q)) +mstore(0x3fc80, addmod(mload(0xfd40), mload(0x3fc60), f_q)) +mstore(0x3fca0, addmod(mload(0x3fc80), mload(0x5580), f_q)) +mstore(0x3fcc0, mulmod(9636107614244996592673544390093298557264592456813944067938429984110211309413, mload(0x5520), f_q)) +mstore(0x3fce0, mulmod(mload(0x8180), mload(0x3fcc0), f_q)) +mstore(0x3fd00, addmod(mload(0xfd60), mload(0x3fce0), f_q)) +mstore(0x3fd20, addmod(mload(0x3fd00), mload(0x5580), f_q)) +mstore(0x3fd40, mulmod(mload(0x3fd20), mload(0x3fca0), f_q)) +mstore(0x3fd60, mulmod(mload(0x3fd40), mload(0x17240), f_q)) +mstore(0x3fd80, addmod(mload(0x3fc20), sub(f_q, mload(0x3fd60)), f_q)) +mstore(0x3fda0, mulmod(mload(0x3fd80), mload(0x29860), f_q)) +mstore(0x3fdc0, addmod(mload(0x3fb20), mload(0x3fda0), f_q)) +mstore(0x3fde0, mulmod(mload(0x8060), mload(0x3fdc0), f_q)) +mstore(0x3fe00, mulmod(mload(0x13f60), mload(0x5520), f_q)) +mstore(0x3fe20, addmod(mload(0xfd80), mload(0x3fe00), f_q)) +mstore(0x3fe40, addmod(mload(0x3fe20), mload(0x5580), f_q)) +mstore(0x3fe60, mulmod(mload(0x13f80), mload(0x5520), f_q)) +mstore(0x3fe80, addmod(mload(0xfda0), mload(0x3fe60), f_q)) +mstore(0x3fea0, addmod(mload(0x3fe80), mload(0x5580), f_q)) +mstore(0x3fec0, mulmod(mload(0x3fea0), mload(0x3fe40), f_q)) +mstore(0x3fee0, mulmod(mload(0x3fec0), mload(0x172c0), f_q)) +mstore(0x3ff00, mulmod(14930067834692386765263602933746691815733929689837539832473960186509069529378, mload(0x5520), f_q)) +mstore(0x3ff20, mulmod(mload(0x8180), mload(0x3ff00), f_q)) +mstore(0x3ff40, addmod(mload(0xfd80), mload(0x3ff20), f_q)) +mstore(0x3ff60, addmod(mload(0x3ff40), mload(0x5580), f_q)) +mstore(0x3ff80, mulmod(1003897686401303563274528181661851325082048659321437245259807700029866407254, mload(0x5520), f_q)) +mstore(0x3ffa0, mulmod(mload(0x8180), mload(0x3ff80), f_q)) +mstore(0x3ffc0, addmod(mload(0xfda0), mload(0x3ffa0), f_q)) +mstore(0x3ffe0, addmod(mload(0x3ffc0), mload(0x5580), f_q)) +mstore(0x40000, mulmod(mload(0x3ffe0), mload(0x3ff60), f_q)) +mstore(0x40020, mulmod(mload(0x40000), mload(0x172a0), f_q)) +mstore(0x40040, addmod(mload(0x3fee0), sub(f_q, mload(0x40020)), f_q)) +mstore(0x40060, mulmod(mload(0x40040), mload(0x29860), f_q)) +mstore(0x40080, addmod(mload(0x3fde0), mload(0x40060), f_q)) +mstore(0x400a0, mulmod(mload(0x8060), mload(0x40080), f_q)) +mstore(0x400c0, mulmod(mload(0x13fa0), mload(0x5520), f_q)) +mstore(0x400e0, addmod(mload(0xfdc0), mload(0x400c0), f_q)) +mstore(0x40100, addmod(mload(0x400e0), mload(0x5580), f_q)) +mstore(0x40120, mulmod(mload(0x13fc0), mload(0x5520), f_q)) +mstore(0x40140, addmod(mload(0xfde0), mload(0x40120), f_q)) +mstore(0x40160, addmod(mload(0x40140), mload(0x5580), f_q)) +mstore(0x40180, mulmod(mload(0x40160), mload(0x40100), f_q)) +mstore(0x401a0, mulmod(mload(0x40180), mload(0x17320), f_q)) +mstore(0x401c0, mulmod(13242365885046191414235540901000305697580137422412603393346029529875381131143, mload(0x5520), f_q)) +mstore(0x401e0, mulmod(mload(0x8180), mload(0x401c0), f_q)) +mstore(0x40200, addmod(mload(0xfdc0), mload(0x401e0), f_q)) +mstore(0x40220, addmod(mload(0x40200), mload(0x5580), f_q)) +mstore(0x40240, mulmod(12939789883225310611677633879325780914911289637025498847182481266538662243052, mload(0x5520), f_q)) +mstore(0x40260, mulmod(mload(0x8180), mload(0x40240), f_q)) +mstore(0x40280, addmod(mload(0xfde0), mload(0x40260), f_q)) +mstore(0x402a0, addmod(mload(0x40280), mload(0x5580), f_q)) +mstore(0x402c0, mulmod(mload(0x402a0), mload(0x40220), f_q)) +mstore(0x402e0, mulmod(mload(0x402c0), mload(0x17300), f_q)) +mstore(0x40300, addmod(mload(0x401a0), sub(f_q, mload(0x402e0)), f_q)) +mstore(0x40320, mulmod(mload(0x40300), mload(0x29860), f_q)) +mstore(0x40340, addmod(mload(0x400a0), mload(0x40320), f_q)) +mstore(0x40360, mulmod(mload(0x8060), mload(0x40340), f_q)) +mstore(0x40380, mulmod(mload(0x13fe0), mload(0x5520), f_q)) +mstore(0x403a0, addmod(mload(0xfe00), mload(0x40380), f_q)) +mstore(0x403c0, addmod(mload(0x403a0), mload(0x5580), f_q)) +mstore(0x403e0, mulmod(mload(0x14000), mload(0x5520), f_q)) +mstore(0x40400, addmod(mload(0xfe20), mload(0x403e0), f_q)) +mstore(0x40420, addmod(mload(0x40400), mload(0x5580), f_q)) +mstore(0x40440, mulmod(mload(0x40420), mload(0x403c0), f_q)) +mstore(0x40460, mulmod(mload(0x40440), mload(0x17380), f_q)) +mstore(0x40480, mulmod(19817338741554550754781568360245008654260387415165036277854230146685376602830, mload(0x5520), f_q)) +mstore(0x404a0, mulmod(mload(0x8180), mload(0x40480), f_q)) +mstore(0x404c0, addmod(mload(0xfe00), mload(0x404a0), f_q)) +mstore(0x404e0, addmod(mload(0x404c0), mload(0x5580), f_q)) +mstore(0x40500, mulmod(3444966927576227677639744528055959680572815228507297339868646803946994208737, mload(0x5520), f_q)) +mstore(0x40520, mulmod(mload(0x8180), mload(0x40500), f_q)) +mstore(0x40540, addmod(mload(0xfe20), mload(0x40520), f_q)) +mstore(0x40560, addmod(mload(0x40540), mload(0x5580), f_q)) +mstore(0x40580, mulmod(mload(0x40560), mload(0x404e0), f_q)) +mstore(0x405a0, mulmod(mload(0x40580), mload(0x17360), f_q)) +mstore(0x405c0, addmod(mload(0x40460), sub(f_q, mload(0x405a0)), f_q)) +mstore(0x405e0, mulmod(mload(0x405c0), mload(0x29860), f_q)) +mstore(0x40600, addmod(mload(0x40360), mload(0x405e0), f_q)) +mstore(0x40620, mulmod(mload(0x8060), mload(0x40600), f_q)) +mstore(0x40640, mulmod(mload(0x14020), mload(0x5520), f_q)) +mstore(0x40660, addmod(mload(0xfe40), mload(0x40640), f_q)) +mstore(0x40680, addmod(mload(0x40660), mload(0x5580), f_q)) +mstore(0x406a0, mulmod(mload(0x14040), mload(0x5520), f_q)) +mstore(0x406c0, addmod(mload(0xfe60), mload(0x406a0), f_q)) +mstore(0x406e0, addmod(mload(0x406c0), mload(0x5580), f_q)) +mstore(0x40700, mulmod(mload(0x406e0), mload(0x40680), f_q)) +mstore(0x40720, mulmod(mload(0x40700), mload(0x173e0), f_q)) +mstore(0x40740, mulmod(19684132279281876072696890702004865414655046525313192332058862109317508576108, mload(0x5520), f_q)) +mstore(0x40760, mulmod(mload(0x8180), mload(0x40740), f_q)) +mstore(0x40780, addmod(mload(0xfe40), mload(0x40760), f_q)) +mstore(0x407a0, addmod(mload(0x40780), mload(0x5580), f_q)) +mstore(0x407c0, mulmod(19439509423082484716464538311789121886765971001166690748105696351198877654380, mload(0x5520), f_q)) +mstore(0x407e0, mulmod(mload(0x8180), mload(0x407c0), f_q)) +mstore(0x40800, addmod(mload(0xfe60), mload(0x407e0), f_q)) +mstore(0x40820, addmod(mload(0x40800), mload(0x5580), f_q)) +mstore(0x40840, mulmod(mload(0x40820), mload(0x407a0), f_q)) +mstore(0x40860, mulmod(mload(0x40840), mload(0x173c0), f_q)) +mstore(0x40880, addmod(mload(0x40720), sub(f_q, mload(0x40860)), f_q)) +mstore(0x408a0, mulmod(mload(0x40880), mload(0x29860), f_q)) +mstore(0x408c0, addmod(mload(0x40620), mload(0x408a0), f_q)) +mstore(0x408e0, mulmod(mload(0x8060), mload(0x408c0), f_q)) +mstore(0x40900, mulmod(mload(0x14060), mload(0x5520), f_q)) +mstore(0x40920, addmod(mload(0xfe80), mload(0x40900), f_q)) +mstore(0x40940, addmod(mload(0x40920), mload(0x5580), f_q)) +mstore(0x40960, mulmod(mload(0x14080), mload(0x5520), f_q)) +mstore(0x40980, addmod(mload(0xfea0), mload(0x40960), f_q)) +mstore(0x409a0, addmod(mload(0x40980), mload(0x5580), f_q)) +mstore(0x409c0, mulmod(mload(0x409a0), mload(0x40940), f_q)) +mstore(0x409e0, mulmod(mload(0x409c0), mload(0x17440), f_q)) +mstore(0x40a00, mulmod(15167552503390284305602205473214501152427024929087265468736311737200299499374, mload(0x5520), f_q)) +mstore(0x40a20, mulmod(mload(0x8180), mload(0x40a00), f_q)) +mstore(0x40a40, addmod(mload(0xfe80), mload(0x40a20), f_q)) +mstore(0x40a60, addmod(mload(0x40a40), mload(0x5580), f_q)) +mstore(0x40a80, mulmod(14727428580569892809498957207261022400444449663291652299408833456697876656037, mload(0x5520), f_q)) +mstore(0x40aa0, mulmod(mload(0x8180), mload(0x40a80), f_q)) +mstore(0x40ac0, addmod(mload(0xfea0), mload(0x40aa0), f_q)) +mstore(0x40ae0, addmod(mload(0x40ac0), mload(0x5580), f_q)) +mstore(0x40b00, mulmod(mload(0x40ae0), mload(0x40a60), f_q)) +mstore(0x40b20, mulmod(mload(0x40b00), mload(0x17420), f_q)) +mstore(0x40b40, addmod(mload(0x409e0), sub(f_q, mload(0x40b20)), f_q)) +mstore(0x40b60, mulmod(mload(0x40b40), mload(0x29860), f_q)) +mstore(0x40b80, addmod(mload(0x408e0), mload(0x40b60), f_q)) +mstore(0x40ba0, mulmod(mload(0x8060), mload(0x40b80), f_q)) +mstore(0x40bc0, mulmod(mload(0x140a0), mload(0x5520), f_q)) +mstore(0x40be0, addmod(mload(0xfec0), mload(0x40bc0), f_q)) +mstore(0x40c00, addmod(mload(0x40be0), mload(0x5580), f_q)) +mstore(0x40c20, mulmod(mload(0x140c0), mload(0x5520), f_q)) +mstore(0x40c40, addmod(mload(0xfee0), mload(0x40c20), f_q)) +mstore(0x40c60, addmod(mload(0x40c40), mload(0x5580), f_q)) +mstore(0x40c80, mulmod(mload(0x40c60), mload(0x40c00), f_q)) +mstore(0x40ca0, mulmod(mload(0x40c80), mload(0x174a0), f_q)) +mstore(0x40cc0, mulmod(16853924631788619374285039614488266829603807295750371839867188303522086779152, mload(0x5520), f_q)) +mstore(0x40ce0, mulmod(mload(0x8180), mload(0x40cc0), f_q)) +mstore(0x40d00, addmod(mload(0xfec0), mload(0x40ce0), f_q)) +mstore(0x40d20, addmod(mload(0x40d00), mload(0x5580), f_q)) +mstore(0x40d40, mulmod(16008484582205725964012493267324236622954481183903024919594606649486806501044, mload(0x5520), f_q)) +mstore(0x40d60, mulmod(mload(0x8180), mload(0x40d40), f_q)) +mstore(0x40d80, addmod(mload(0xfee0), mload(0x40d60), f_q)) +mstore(0x40da0, addmod(mload(0x40d80), mload(0x5580), f_q)) +mstore(0x40dc0, mulmod(mload(0x40da0), mload(0x40d20), f_q)) +mstore(0x40de0, mulmod(mload(0x40dc0), mload(0x17480), f_q)) +mstore(0x40e00, addmod(mload(0x40ca0), sub(f_q, mload(0x40de0)), f_q)) +mstore(0x40e20, mulmod(mload(0x40e00), mload(0x29860), f_q)) +mstore(0x40e40, addmod(mload(0x40ba0), mload(0x40e20), f_q)) +mstore(0x40e60, mulmod(mload(0x8060), mload(0x40e40), f_q)) +mstore(0x40e80, mulmod(mload(0x140e0), mload(0x5520), f_q)) +mstore(0x40ea0, addmod(mload(0xff00), mload(0x40e80), f_q)) +mstore(0x40ec0, addmod(mload(0x40ea0), mload(0x5580), f_q)) +mstore(0x40ee0, mulmod(mload(0x14100), mload(0x5520), f_q)) +mstore(0x40f00, addmod(mload(0xff20), mload(0x40ee0), f_q)) +mstore(0x40f20, addmod(mload(0x40f00), mload(0x5580), f_q)) +mstore(0x40f40, mulmod(mload(0x40f20), mload(0x40ec0), f_q)) +mstore(0x40f60, mulmod(mload(0x40f40), mload(0x17500), f_q)) +mstore(0x40f80, mulmod(17501026603856295099155738150286390380755854571803780579246012186363236404233, mload(0x5520), f_q)) +mstore(0x40fa0, mulmod(mload(0x8180), mload(0x40f80), f_q)) +mstore(0x40fc0, addmod(mload(0xff00), mload(0x40fa0), f_q)) +mstore(0x40fe0, addmod(mload(0x40fc0), mload(0x5580), f_q)) +mstore(0x41000, mulmod(9750822570410478534353683294847396467752174439206671438735726069847174607807, mload(0x5520), f_q)) +mstore(0x41020, mulmod(mload(0x8180), mload(0x41000), f_q)) +mstore(0x41040, addmod(mload(0xff20), mload(0x41020), f_q)) +mstore(0x41060, addmod(mload(0x41040), mload(0x5580), f_q)) +mstore(0x41080, mulmod(mload(0x41060), mload(0x40fe0), f_q)) +mstore(0x410a0, mulmod(mload(0x41080), mload(0x174e0), f_q)) +mstore(0x410c0, addmod(mload(0x40f60), sub(f_q, mload(0x410a0)), f_q)) +mstore(0x410e0, mulmod(mload(0x410c0), mload(0x29860), f_q)) +mstore(0x41100, addmod(mload(0x40e60), mload(0x410e0), f_q)) +mstore(0x41120, mulmod(mload(0x8060), mload(0x41100), f_q)) +mstore(0x41140, mulmod(mload(0x14120), mload(0x5520), f_q)) +mstore(0x41160, addmod(mload(0xff40), mload(0x41140), f_q)) +mstore(0x41180, addmod(mload(0x41160), mload(0x5580), f_q)) +mstore(0x411a0, mulmod(mload(0x14140), mload(0x5520), f_q)) +mstore(0x411c0, addmod(mload(0xff60), mload(0x411a0), f_q)) +mstore(0x411e0, addmod(mload(0x411c0), mload(0x5580), f_q)) +mstore(0x41200, mulmod(mload(0x411e0), mload(0x41180), f_q)) +mstore(0x41220, mulmod(mload(0x41200), mload(0x17560), f_q)) +mstore(0x41240, mulmod(1900831922535604568738801396003770995739091890092521286571387083910099891621, mload(0x5520), f_q)) +mstore(0x41260, mulmod(mload(0x8180), mload(0x41240), f_q)) +mstore(0x41280, addmod(mload(0xff40), mload(0x41260), f_q)) +mstore(0x412a0, addmod(mload(0x41280), mload(0x5580), f_q)) +mstore(0x412c0, mulmod(16681244834837939701540383615828301936518710504133692690466537550830477202130, mload(0x5520), f_q)) +mstore(0x412e0, mulmod(mload(0x8180), mload(0x412c0), f_q)) +mstore(0x41300, addmod(mload(0xff60), mload(0x412e0), f_q)) +mstore(0x41320, addmod(mload(0x41300), mload(0x5580), f_q)) +mstore(0x41340, mulmod(mload(0x41320), mload(0x412a0), f_q)) +mstore(0x41360, mulmod(mload(0x41340), mload(0x17540), f_q)) +mstore(0x41380, addmod(mload(0x41220), sub(f_q, mload(0x41360)), f_q)) +mstore(0x413a0, mulmod(mload(0x41380), mload(0x29860), f_q)) +mstore(0x413c0, addmod(mload(0x41120), mload(0x413a0), f_q)) +mstore(0x413e0, mulmod(mload(0x8060), mload(0x413c0), f_q)) +mstore(0x41400, mulmod(mload(0x14160), mload(0x5520), f_q)) +mstore(0x41420, addmod(mload(0xff80), mload(0x41400), f_q)) +mstore(0x41440, addmod(mload(0x41420), mload(0x5580), f_q)) +mstore(0x41460, mulmod(mload(0x14180), mload(0x5520), f_q)) +mstore(0x41480, addmod(mload(0xffa0), mload(0x41460), f_q)) +mstore(0x414a0, addmod(mload(0x41480), mload(0x5580), f_q)) +mstore(0x414c0, mulmod(mload(0x414a0), mload(0x41440), f_q)) +mstore(0x414e0, mulmod(mload(0x414c0), mload(0x175c0), f_q)) +mstore(0x41500, mulmod(9015884293068306497293862524272552968330305650169134143161968486227355484777, mload(0x5520), f_q)) +mstore(0x41520, mulmod(mload(0x8180), mload(0x41500), f_q)) +mstore(0x41540, addmod(mload(0xff80), mload(0x41520), f_q)) +mstore(0x41560, addmod(mload(0x41540), mload(0x5580), f_q)) +mstore(0x41580, mulmod(7992856724212964550914377889512093744494194900900364541920216367683047094995, mload(0x5520), f_q)) +mstore(0x415a0, mulmod(mload(0x8180), mload(0x41580), f_q)) +mstore(0x415c0, addmod(mload(0xffa0), mload(0x415a0), f_q)) +mstore(0x415e0, addmod(mload(0x415c0), mload(0x5580), f_q)) +mstore(0x41600, mulmod(mload(0x415e0), mload(0x41560), f_q)) +mstore(0x41620, mulmod(mload(0x41600), mload(0x175a0), f_q)) +mstore(0x41640, addmod(mload(0x414e0), sub(f_q, mload(0x41620)), f_q)) +mstore(0x41660, mulmod(mload(0x41640), mload(0x29860), f_q)) +mstore(0x41680, addmod(mload(0x413e0), mload(0x41660), f_q)) +mstore(0x416a0, mulmod(mload(0x8060), mload(0x41680), f_q)) +mstore(0x416c0, mulmod(mload(0x141a0), mload(0x5520), f_q)) +mstore(0x416e0, addmod(mload(0xffc0), mload(0x416c0), f_q)) +mstore(0x41700, addmod(mload(0x416e0), mload(0x5580), f_q)) +mstore(0x41720, mulmod(mload(0x141c0), mload(0x5520), f_q)) +mstore(0x41740, addmod(mload(0x19740), mload(0x41720), f_q)) +mstore(0x41760, addmod(mload(0x41740), mload(0x5580), f_q)) +mstore(0x41780, mulmod(mload(0x41760), mload(0x41700), f_q)) +mstore(0x417a0, mulmod(mload(0x41780), mload(0x17620), f_q)) +mstore(0x417c0, mulmod(18750518186349306925396679524952044021918556616841823427262185477101893332362, mload(0x5520), f_q)) +mstore(0x417e0, mulmod(mload(0x8180), mload(0x417c0), f_q)) +mstore(0x41800, addmod(mload(0xffc0), mload(0x417e0), f_q)) +mstore(0x41820, addmod(mload(0x41800), mload(0x5580), f_q)) +mstore(0x41840, mulmod(17543048034220550107781581196942643525710258488501559611552997627678136590092, mload(0x5520), f_q)) +mstore(0x41860, mulmod(mload(0x8180), mload(0x41840), f_q)) +mstore(0x41880, addmod(mload(0x19740), mload(0x41860), f_q)) +mstore(0x418a0, addmod(mload(0x41880), mload(0x5580), f_q)) +mstore(0x418c0, mulmod(mload(0x418a0), mload(0x41820), f_q)) +mstore(0x418e0, mulmod(mload(0x418c0), mload(0x17600), f_q)) +mstore(0x41900, addmod(mload(0x417a0), sub(f_q, mload(0x418e0)), f_q)) +mstore(0x41920, mulmod(mload(0x41900), mload(0x29860), f_q)) +mstore(0x41940, addmod(mload(0x416a0), mload(0x41920), f_q)) +mstore(0x41960, mulmod(mload(0x8060), mload(0x41940), f_q)) +mstore(0x41980, addmod(1, sub(f_q, mload(0x17640)), f_q)) +mstore(0x419a0, mulmod(mload(0x41980), mload(0x195c0), f_q)) +mstore(0x419c0, addmod(mload(0x41960), mload(0x419a0), f_q)) +mstore(0x419e0, mulmod(mload(0x8060), mload(0x419c0), f_q)) +mstore(0x41a00, mulmod(mload(0x17640), mload(0x17640), f_q)) +mstore(0x41a20, addmod(mload(0x41a00), sub(f_q, mload(0x17640)), f_q)) +mstore(0x41a40, mulmod(mload(0x41a20), mload(0x194e0), f_q)) +mstore(0x41a60, addmod(mload(0x419e0), mload(0x41a40), f_q)) +mstore(0x41a80, mulmod(mload(0x8060), mload(0x41a60), f_q)) +mstore(0x41aa0, addmod(mload(0x17680), mload(0x5520), f_q)) +mstore(0x41ac0, mulmod(mload(0x41aa0), mload(0x17660), f_q)) +mstore(0x41ae0, addmod(mload(0x176c0), mload(0x5580), f_q)) +mstore(0x41b00, mulmod(mload(0x41ae0), mload(0x41ac0), f_q)) +mstore(0x41b20, addmod(mload(0xfc40), mload(0x5520), f_q)) +mstore(0x41b40, mulmod(mload(0x41b20), mload(0x17640), f_q)) +mstore(0x41b60, addmod(mload(0x10080), mload(0x5580), f_q)) +mstore(0x41b80, mulmod(mload(0x41b60), mload(0x41b40), f_q)) +mstore(0x41ba0, addmod(mload(0x41b00), sub(f_q, mload(0x41b80)), f_q)) +mstore(0x41bc0, mulmod(mload(0x41ba0), mload(0x29860), f_q)) +mstore(0x41be0, addmod(mload(0x41a80), mload(0x41bc0), f_q)) +mstore(0x41c00, mulmod(mload(0x8060), mload(0x41be0), f_q)) +mstore(0x41c20, addmod(mload(0x17680), sub(f_q, mload(0x176c0)), f_q)) +mstore(0x41c40, mulmod(mload(0x41c20), mload(0x195c0), f_q)) +mstore(0x41c60, addmod(mload(0x41c00), mload(0x41c40), f_q)) +mstore(0x41c80, mulmod(mload(0x8060), mload(0x41c60), f_q)) +mstore(0x41ca0, mulmod(mload(0x41c20), mload(0x29860), f_q)) +mstore(0x41cc0, addmod(mload(0x17680), sub(f_q, mload(0x176a0)), f_q)) +mstore(0x41ce0, mulmod(mload(0x41cc0), mload(0x41ca0), f_q)) +mstore(0x41d00, addmod(mload(0x41c80), mload(0x41ce0), f_q)) +mstore(0x41d20, mulmod(mload(0x8060), mload(0x41d00), f_q)) +mstore(0x41d40, addmod(1, sub(f_q, mload(0x176e0)), f_q)) +mstore(0x41d60, mulmod(mload(0x41d40), mload(0x195c0), f_q)) +mstore(0x41d80, addmod(mload(0x41d20), mload(0x41d60), f_q)) +mstore(0x41da0, mulmod(mload(0x8060), mload(0x41d80), f_q)) +mstore(0x41dc0, mulmod(mload(0x176e0), mload(0x176e0), f_q)) +mstore(0x41de0, addmod(mload(0x41dc0), sub(f_q, mload(0x176e0)), f_q)) +mstore(0x41e00, mulmod(mload(0x41de0), mload(0x194e0), f_q)) +mstore(0x41e20, addmod(mload(0x41da0), mload(0x41e00), f_q)) +mstore(0x41e40, mulmod(mload(0x8060), mload(0x41e20), f_q)) +mstore(0x41e60, addmod(mload(0x17720), mload(0x5520), f_q)) +mstore(0x41e80, mulmod(mload(0x41e60), mload(0x17700), f_q)) +mstore(0x41ea0, addmod(mload(0x17760), mload(0x5580), f_q)) +mstore(0x41ec0, mulmod(mload(0x41ea0), mload(0x41e80), f_q)) +mstore(0x41ee0, addmod(mload(0xfc60), mload(0x5520), f_q)) +mstore(0x41f00, mulmod(mload(0x41ee0), mload(0x176e0), f_q)) +mstore(0x41f20, mulmod(mload(0x41b60), mload(0x41f00), f_q)) +mstore(0x41f40, addmod(mload(0x41ec0), sub(f_q, mload(0x41f20)), f_q)) +mstore(0x41f60, mulmod(mload(0x41f40), mload(0x29860), f_q)) +mstore(0x41f80, addmod(mload(0x41e40), mload(0x41f60), f_q)) +mstore(0x41fa0, mulmod(mload(0x8060), mload(0x41f80), f_q)) +mstore(0x41fc0, addmod(mload(0x17720), sub(f_q, mload(0x17760)), f_q)) +mstore(0x41fe0, mulmod(mload(0x41fc0), mload(0x195c0), f_q)) +mstore(0x42000, addmod(mload(0x41fa0), mload(0x41fe0), f_q)) +mstore(0x42020, mulmod(mload(0x8060), mload(0x42000), f_q)) +mstore(0x42040, mulmod(mload(0x41fc0), mload(0x29860), f_q)) +mstore(0x42060, addmod(mload(0x17720), sub(f_q, mload(0x17740)), f_q)) +mstore(0x42080, mulmod(mload(0x42060), mload(0x42040), f_q)) +mstore(0x420a0, addmod(mload(0x42020), mload(0x42080), f_q)) +mstore(0x420c0, mulmod(mload(0x8060), mload(0x420a0), f_q)) +mstore(0x420e0, addmod(1, sub(f_q, mload(0x17780)), f_q)) +mstore(0x42100, mulmod(mload(0x420e0), mload(0x195c0), f_q)) +mstore(0x42120, addmod(mload(0x420c0), mload(0x42100), f_q)) +mstore(0x42140, mulmod(mload(0x8060), mload(0x42120), f_q)) +mstore(0x42160, mulmod(mload(0x17780), mload(0x17780), f_q)) +mstore(0x42180, addmod(mload(0x42160), sub(f_q, mload(0x17780)), f_q)) +mstore(0x421a0, mulmod(mload(0x42180), mload(0x194e0), f_q)) +mstore(0x421c0, addmod(mload(0x42140), mload(0x421a0), f_q)) +mstore(0x421e0, mulmod(mload(0x8060), mload(0x421c0), f_q)) +mstore(0x42200, addmod(mload(0x177c0), mload(0x5520), f_q)) +mstore(0x42220, mulmod(mload(0x42200), mload(0x177a0), f_q)) +mstore(0x42240, addmod(mload(0x17800), mload(0x5580), f_q)) +mstore(0x42260, mulmod(mload(0x42240), mload(0x42220), f_q)) +mstore(0x42280, addmod(mload(0xfc80), mload(0x5520), f_q)) +mstore(0x422a0, mulmod(mload(0x42280), mload(0x17780), f_q)) +mstore(0x422c0, mulmod(mload(0x41b60), mload(0x422a0), f_q)) +mstore(0x422e0, addmod(mload(0x42260), sub(f_q, mload(0x422c0)), f_q)) +mstore(0x42300, mulmod(mload(0x422e0), mload(0x29860), f_q)) +mstore(0x42320, addmod(mload(0x421e0), mload(0x42300), f_q)) +mstore(0x42340, mulmod(mload(0x8060), mload(0x42320), f_q)) +mstore(0x42360, addmod(mload(0x177c0), sub(f_q, mload(0x17800)), f_q)) +mstore(0x42380, mulmod(mload(0x42360), mload(0x195c0), f_q)) +mstore(0x423a0, addmod(mload(0x42340), mload(0x42380), f_q)) +mstore(0x423c0, mulmod(mload(0x8060), mload(0x423a0), f_q)) +mstore(0x423e0, mulmod(mload(0x42360), mload(0x29860), f_q)) +mstore(0x42400, addmod(mload(0x177c0), sub(f_q, mload(0x177e0)), f_q)) +mstore(0x42420, mulmod(mload(0x42400), mload(0x423e0), f_q)) +mstore(0x42440, addmod(mload(0x423c0), mload(0x42420), f_q)) +mstore(0x42460, mulmod(mload(0x8060), mload(0x42440), f_q)) +mstore(0x42480, addmod(1, sub(f_q, mload(0x17820)), f_q)) +mstore(0x424a0, mulmod(mload(0x42480), mload(0x195c0), f_q)) +mstore(0x424c0, addmod(mload(0x42460), mload(0x424a0), f_q)) +mstore(0x424e0, mulmod(mload(0x8060), mload(0x424c0), f_q)) +mstore(0x42500, mulmod(mload(0x17820), mload(0x17820), f_q)) +mstore(0x42520, addmod(mload(0x42500), sub(f_q, mload(0x17820)), f_q)) +mstore(0x42540, mulmod(mload(0x42520), mload(0x194e0), f_q)) +mstore(0x42560, addmod(mload(0x424e0), mload(0x42540), f_q)) +mstore(0x42580, mulmod(mload(0x8060), mload(0x42560), f_q)) +mstore(0x425a0, addmod(mload(0x17860), mload(0x5520), f_q)) +mstore(0x425c0, mulmod(mload(0x425a0), mload(0x17840), f_q)) +mstore(0x425e0, addmod(mload(0x178a0), mload(0x5580), f_q)) +mstore(0x42600, mulmod(mload(0x425e0), mload(0x425c0), f_q)) +mstore(0x42620, addmod(mload(0xfca0), mload(0x5520), f_q)) +mstore(0x42640, mulmod(mload(0x42620), mload(0x17820), f_q)) +mstore(0x42660, mulmod(mload(0x41b60), mload(0x42640), f_q)) +mstore(0x42680, addmod(mload(0x42600), sub(f_q, mload(0x42660)), f_q)) +mstore(0x426a0, mulmod(mload(0x42680), mload(0x29860), f_q)) +mstore(0x426c0, addmod(mload(0x42580), mload(0x426a0), f_q)) +mstore(0x426e0, mulmod(mload(0x8060), mload(0x426c0), f_q)) +mstore(0x42700, addmod(mload(0x17860), sub(f_q, mload(0x178a0)), f_q)) +mstore(0x42720, mulmod(mload(0x42700), mload(0x195c0), f_q)) +mstore(0x42740, addmod(mload(0x426e0), mload(0x42720), f_q)) +mstore(0x42760, mulmod(mload(0x8060), mload(0x42740), f_q)) +mstore(0x42780, mulmod(mload(0x42700), mload(0x29860), f_q)) +mstore(0x427a0, addmod(mload(0x17860), sub(f_q, mload(0x17880)), f_q)) +mstore(0x427c0, mulmod(mload(0x427a0), mload(0x42780), f_q)) +mstore(0x427e0, addmod(mload(0x42760), mload(0x427c0), f_q)) +mstore(0x42800, mulmod(mload(0x8060), mload(0x427e0), f_q)) +mstore(0x42820, addmod(1, sub(f_q, mload(0x178c0)), f_q)) +mstore(0x42840, mulmod(mload(0x42820), mload(0x195c0), f_q)) +mstore(0x42860, addmod(mload(0x42800), mload(0x42840), f_q)) +mstore(0x42880, mulmod(mload(0x8060), mload(0x42860), f_q)) +mstore(0x428a0, mulmod(mload(0x178c0), mload(0x178c0), f_q)) +mstore(0x428c0, addmod(mload(0x428a0), sub(f_q, mload(0x178c0)), f_q)) +mstore(0x428e0, mulmod(mload(0x428c0), mload(0x194e0), f_q)) +mstore(0x42900, addmod(mload(0x42880), mload(0x428e0), f_q)) +mstore(0x42920, mulmod(mload(0x8060), mload(0x42900), f_q)) +mstore(0x42940, addmod(mload(0x17900), mload(0x5520), f_q)) +mstore(0x42960, mulmod(mload(0x42940), mload(0x178e0), f_q)) +mstore(0x42980, addmod(mload(0x17940), mload(0x5580), f_q)) +mstore(0x429a0, mulmod(mload(0x42980), mload(0x42960), f_q)) +mstore(0x429c0, addmod(mload(0xfcc0), mload(0x5520), f_q)) +mstore(0x429e0, mulmod(mload(0x429c0), mload(0x178c0), f_q)) +mstore(0x42a00, mulmod(mload(0x41b60), mload(0x429e0), f_q)) +mstore(0x42a20, addmod(mload(0x429a0), sub(f_q, mload(0x42a00)), f_q)) +mstore(0x42a40, mulmod(mload(0x42a20), mload(0x29860), f_q)) +mstore(0x42a60, addmod(mload(0x42920), mload(0x42a40), f_q)) +mstore(0x42a80, mulmod(mload(0x8060), mload(0x42a60), f_q)) +mstore(0x42aa0, addmod(mload(0x17900), sub(f_q, mload(0x17940)), f_q)) +mstore(0x42ac0, mulmod(mload(0x42aa0), mload(0x195c0), f_q)) +mstore(0x42ae0, addmod(mload(0x42a80), mload(0x42ac0), f_q)) +mstore(0x42b00, mulmod(mload(0x8060), mload(0x42ae0), f_q)) +mstore(0x42b20, mulmod(mload(0x42aa0), mload(0x29860), f_q)) +mstore(0x42b40, addmod(mload(0x17900), sub(f_q, mload(0x17920)), f_q)) +mstore(0x42b60, mulmod(mload(0x42b40), mload(0x42b20), f_q)) +mstore(0x42b80, addmod(mload(0x42b00), mload(0x42b60), f_q)) +mstore(0x42ba0, mulmod(mload(0x8060), mload(0x42b80), f_q)) +mstore(0x42bc0, addmod(1, sub(f_q, mload(0x17960)), f_q)) +mstore(0x42be0, mulmod(mload(0x42bc0), mload(0x195c0), f_q)) +mstore(0x42c00, addmod(mload(0x42ba0), mload(0x42be0), f_q)) +mstore(0x42c20, mulmod(mload(0x8060), mload(0x42c00), f_q)) +mstore(0x42c40, mulmod(mload(0x17960), mload(0x17960), f_q)) +mstore(0x42c60, addmod(mload(0x42c40), sub(f_q, mload(0x17960)), f_q)) +mstore(0x42c80, mulmod(mload(0x42c60), mload(0x194e0), f_q)) +mstore(0x42ca0, addmod(mload(0x42c20), mload(0x42c80), f_q)) +mstore(0x42cc0, mulmod(mload(0x8060), mload(0x42ca0), f_q)) +mstore(0x42ce0, addmod(mload(0x179a0), mload(0x5520), f_q)) +mstore(0x42d00, mulmod(mload(0x42ce0), mload(0x17980), f_q)) +mstore(0x42d20, addmod(mload(0x179e0), mload(0x5580), f_q)) +mstore(0x42d40, mulmod(mload(0x42d20), mload(0x42d00), f_q)) +mstore(0x42d60, addmod(mload(0xfce0), mload(0x5520), f_q)) +mstore(0x42d80, mulmod(mload(0x42d60), mload(0x17960), f_q)) +mstore(0x42da0, mulmod(mload(0x41b60), mload(0x42d80), f_q)) +mstore(0x42dc0, addmod(mload(0x42d40), sub(f_q, mload(0x42da0)), f_q)) +mstore(0x42de0, mulmod(mload(0x42dc0), mload(0x29860), f_q)) +mstore(0x42e00, addmod(mload(0x42cc0), mload(0x42de0), f_q)) +mstore(0x42e20, mulmod(mload(0x8060), mload(0x42e00), f_q)) +mstore(0x42e40, addmod(mload(0x179a0), sub(f_q, mload(0x179e0)), f_q)) +mstore(0x42e60, mulmod(mload(0x42e40), mload(0x195c0), f_q)) +mstore(0x42e80, addmod(mload(0x42e20), mload(0x42e60), f_q)) +mstore(0x42ea0, mulmod(mload(0x8060), mload(0x42e80), f_q)) +mstore(0x42ec0, mulmod(mload(0x42e40), mload(0x29860), f_q)) +mstore(0x42ee0, addmod(mload(0x179a0), sub(f_q, mload(0x179c0)), f_q)) +mstore(0x42f00, mulmod(mload(0x42ee0), mload(0x42ec0), f_q)) +mstore(0x42f20, addmod(mload(0x42ea0), mload(0x42f00), f_q)) +mstore(0x42f40, mulmod(mload(0x8060), mload(0x42f20), f_q)) +mstore(0x42f60, addmod(1, sub(f_q, mload(0x17a00)), f_q)) +mstore(0x42f80, mulmod(mload(0x42f60), mload(0x195c0), f_q)) +mstore(0x42fa0, addmod(mload(0x42f40), mload(0x42f80), f_q)) +mstore(0x42fc0, mulmod(mload(0x8060), mload(0x42fa0), f_q)) +mstore(0x42fe0, mulmod(mload(0x17a00), mload(0x17a00), f_q)) +mstore(0x43000, addmod(mload(0x42fe0), sub(f_q, mload(0x17a00)), f_q)) +mstore(0x43020, mulmod(mload(0x43000), mload(0x194e0), f_q)) +mstore(0x43040, addmod(mload(0x42fc0), mload(0x43020), f_q)) +mstore(0x43060, mulmod(mload(0x8060), mload(0x43040), f_q)) +mstore(0x43080, addmod(mload(0x17a40), mload(0x5520), f_q)) +mstore(0x430a0, mulmod(mload(0x43080), mload(0x17a20), f_q)) +mstore(0x430c0, addmod(mload(0x17a80), mload(0x5580), f_q)) +mstore(0x430e0, mulmod(mload(0x430c0), mload(0x430a0), f_q)) +mstore(0x43100, addmod(mload(0xfd00), mload(0x5520), f_q)) +mstore(0x43120, mulmod(mload(0x43100), mload(0x17a00), f_q)) +mstore(0x43140, mulmod(mload(0x41b60), mload(0x43120), f_q)) +mstore(0x43160, addmod(mload(0x430e0), sub(f_q, mload(0x43140)), f_q)) +mstore(0x43180, mulmod(mload(0x43160), mload(0x29860), f_q)) +mstore(0x431a0, addmod(mload(0x43060), mload(0x43180), f_q)) +mstore(0x431c0, mulmod(mload(0x8060), mload(0x431a0), f_q)) +mstore(0x431e0, addmod(mload(0x17a40), sub(f_q, mload(0x17a80)), f_q)) +mstore(0x43200, mulmod(mload(0x431e0), mload(0x195c0), f_q)) +mstore(0x43220, addmod(mload(0x431c0), mload(0x43200), f_q)) +mstore(0x43240, mulmod(mload(0x8060), mload(0x43220), f_q)) +mstore(0x43260, mulmod(mload(0x431e0), mload(0x29860), f_q)) +mstore(0x43280, addmod(mload(0x17a40), sub(f_q, mload(0x17a60)), f_q)) +mstore(0x432a0, mulmod(mload(0x43280), mload(0x43260), f_q)) +mstore(0x432c0, addmod(mload(0x43240), mload(0x432a0), f_q)) +mstore(0x432e0, mulmod(mload(0x8060), mload(0x432c0), f_q)) +mstore(0x43300, addmod(1, sub(f_q, mload(0x17aa0)), f_q)) +mstore(0x43320, mulmod(mload(0x43300), mload(0x195c0), f_q)) +mstore(0x43340, addmod(mload(0x432e0), mload(0x43320), f_q)) +mstore(0x43360, mulmod(mload(0x8060), mload(0x43340), f_q)) +mstore(0x43380, mulmod(mload(0x17aa0), mload(0x17aa0), f_q)) +mstore(0x433a0, addmod(mload(0x43380), sub(f_q, mload(0x17aa0)), f_q)) +mstore(0x433c0, mulmod(mload(0x433a0), mload(0x194e0), f_q)) +mstore(0x433e0, addmod(mload(0x43360), mload(0x433c0), f_q)) +mstore(0x43400, mulmod(mload(0x8060), mload(0x433e0), f_q)) +mstore(0x43420, addmod(mload(0x17ae0), mload(0x5520), f_q)) +mstore(0x43440, mulmod(mload(0x43420), mload(0x17ac0), f_q)) +mstore(0x43460, addmod(mload(0x17b20), mload(0x5580), f_q)) +mstore(0x43480, mulmod(mload(0x43460), mload(0x43440), f_q)) +mstore(0x434a0, addmod(mload(0xfd20), mload(0x5520), f_q)) +mstore(0x434c0, mulmod(mload(0x434a0), mload(0x17aa0), f_q)) +mstore(0x434e0, mulmod(mload(0x41b60), mload(0x434c0), f_q)) +mstore(0x43500, addmod(mload(0x43480), sub(f_q, mload(0x434e0)), f_q)) +mstore(0x43520, mulmod(mload(0x43500), mload(0x29860), f_q)) +mstore(0x43540, addmod(mload(0x43400), mload(0x43520), f_q)) +mstore(0x43560, mulmod(mload(0x8060), mload(0x43540), f_q)) +mstore(0x43580, addmod(mload(0x17ae0), sub(f_q, mload(0x17b20)), f_q)) +mstore(0x435a0, mulmod(mload(0x43580), mload(0x195c0), f_q)) +mstore(0x435c0, addmod(mload(0x43560), mload(0x435a0), f_q)) +mstore(0x435e0, mulmod(mload(0x8060), mload(0x435c0), f_q)) +mstore(0x43600, mulmod(mload(0x43580), mload(0x29860), f_q)) +mstore(0x43620, addmod(mload(0x17ae0), sub(f_q, mload(0x17b00)), f_q)) +mstore(0x43640, mulmod(mload(0x43620), mload(0x43600), f_q)) +mstore(0x43660, addmod(mload(0x435e0), mload(0x43640), f_q)) +mstore(0x43680, mulmod(mload(0x8060), mload(0x43660), f_q)) +mstore(0x436a0, addmod(1, sub(f_q, mload(0x17b40)), f_q)) +mstore(0x436c0, mulmod(mload(0x436a0), mload(0x195c0), f_q)) +mstore(0x436e0, addmod(mload(0x43680), mload(0x436c0), f_q)) +mstore(0x43700, mulmod(mload(0x8060), mload(0x436e0), f_q)) +mstore(0x43720, mulmod(mload(0x17b40), mload(0x17b40), f_q)) +mstore(0x43740, addmod(mload(0x43720), sub(f_q, mload(0x17b40)), f_q)) +mstore(0x43760, mulmod(mload(0x43740), mload(0x194e0), f_q)) +mstore(0x43780, addmod(mload(0x43700), mload(0x43760), f_q)) +mstore(0x437a0, mulmod(mload(0x8060), mload(0x43780), f_q)) +mstore(0x437c0, addmod(mload(0x17b80), mload(0x5520), f_q)) +mstore(0x437e0, mulmod(mload(0x437c0), mload(0x17b60), f_q)) +mstore(0x43800, addmod(mload(0x17bc0), mload(0x5580), f_q)) +mstore(0x43820, mulmod(mload(0x43800), mload(0x437e0), f_q)) +mstore(0x43840, addmod(mload(0xfd40), mload(0x5520), f_q)) +mstore(0x43860, mulmod(mload(0x43840), mload(0x17b40), f_q)) +mstore(0x43880, mulmod(mload(0x41b60), mload(0x43860), f_q)) +mstore(0x438a0, addmod(mload(0x43820), sub(f_q, mload(0x43880)), f_q)) +mstore(0x438c0, mulmod(mload(0x438a0), mload(0x29860), f_q)) +mstore(0x438e0, addmod(mload(0x437a0), mload(0x438c0), f_q)) +mstore(0x43900, mulmod(mload(0x8060), mload(0x438e0), f_q)) +mstore(0x43920, addmod(mload(0x17b80), sub(f_q, mload(0x17bc0)), f_q)) +mstore(0x43940, mulmod(mload(0x43920), mload(0x195c0), f_q)) +mstore(0x43960, addmod(mload(0x43900), mload(0x43940), f_q)) +mstore(0x43980, mulmod(mload(0x8060), mload(0x43960), f_q)) +mstore(0x439a0, mulmod(mload(0x43920), mload(0x29860), f_q)) +mstore(0x439c0, addmod(mload(0x17b80), sub(f_q, mload(0x17ba0)), f_q)) +mstore(0x439e0, mulmod(mload(0x439c0), mload(0x439a0), f_q)) +mstore(0x43a00, addmod(mload(0x43980), mload(0x439e0), f_q)) +mstore(0x43a20, mulmod(mload(0x8060), mload(0x43a00), f_q)) +mstore(0x43a40, addmod(1, sub(f_q, mload(0x17be0)), f_q)) +mstore(0x43a60, mulmod(mload(0x43a40), mload(0x195c0), f_q)) +mstore(0x43a80, addmod(mload(0x43a20), mload(0x43a60), f_q)) +mstore(0x43aa0, mulmod(mload(0x8060), mload(0x43a80), f_q)) +mstore(0x43ac0, mulmod(mload(0x17be0), mload(0x17be0), f_q)) +mstore(0x43ae0, addmod(mload(0x43ac0), sub(f_q, mload(0x17be0)), f_q)) +mstore(0x43b00, mulmod(mload(0x43ae0), mload(0x194e0), f_q)) +mstore(0x43b20, addmod(mload(0x43aa0), mload(0x43b00), f_q)) +mstore(0x43b40, mulmod(mload(0x8060), mload(0x43b20), f_q)) +mstore(0x43b60, addmod(mload(0x17c20), mload(0x5520), f_q)) +mstore(0x43b80, mulmod(mload(0x43b60), mload(0x17c00), f_q)) +mstore(0x43ba0, addmod(mload(0x17c60), mload(0x5580), f_q)) +mstore(0x43bc0, mulmod(mload(0x43ba0), mload(0x43b80), f_q)) +mstore(0x43be0, addmod(mload(0xfd60), mload(0x5520), f_q)) +mstore(0x43c00, mulmod(mload(0x43be0), mload(0x17be0), f_q)) +mstore(0x43c20, mulmod(mload(0x41b60), mload(0x43c00), f_q)) +mstore(0x43c40, addmod(mload(0x43bc0), sub(f_q, mload(0x43c20)), f_q)) +mstore(0x43c60, mulmod(mload(0x43c40), mload(0x29860), f_q)) +mstore(0x43c80, addmod(mload(0x43b40), mload(0x43c60), f_q)) +mstore(0x43ca0, mulmod(mload(0x8060), mload(0x43c80), f_q)) +mstore(0x43cc0, addmod(mload(0x17c20), sub(f_q, mload(0x17c60)), f_q)) +mstore(0x43ce0, mulmod(mload(0x43cc0), mload(0x195c0), f_q)) +mstore(0x43d00, addmod(mload(0x43ca0), mload(0x43ce0), f_q)) +mstore(0x43d20, mulmod(mload(0x8060), mload(0x43d00), f_q)) +mstore(0x43d40, mulmod(mload(0x43cc0), mload(0x29860), f_q)) +mstore(0x43d60, addmod(mload(0x17c20), sub(f_q, mload(0x17c40)), f_q)) +mstore(0x43d80, mulmod(mload(0x43d60), mload(0x43d40), f_q)) +mstore(0x43da0, addmod(mload(0x43d20), mload(0x43d80), f_q)) +mstore(0x43dc0, mulmod(mload(0x8060), mload(0x43da0), f_q)) +mstore(0x43de0, addmod(1, sub(f_q, mload(0x17c80)), f_q)) +mstore(0x43e00, mulmod(mload(0x43de0), mload(0x195c0), f_q)) +mstore(0x43e20, addmod(mload(0x43dc0), mload(0x43e00), f_q)) +mstore(0x43e40, mulmod(mload(0x8060), mload(0x43e20), f_q)) +mstore(0x43e60, mulmod(mload(0x17c80), mload(0x17c80), f_q)) +mstore(0x43e80, addmod(mload(0x43e60), sub(f_q, mload(0x17c80)), f_q)) +mstore(0x43ea0, mulmod(mload(0x43e80), mload(0x194e0), f_q)) +mstore(0x43ec0, addmod(mload(0x43e40), mload(0x43ea0), f_q)) +mstore(0x43ee0, mulmod(mload(0x8060), mload(0x43ec0), f_q)) +mstore(0x43f00, addmod(mload(0x17cc0), mload(0x5520), f_q)) +mstore(0x43f20, mulmod(mload(0x43f00), mload(0x17ca0), f_q)) +mstore(0x43f40, addmod(mload(0x17d00), mload(0x5580), f_q)) +mstore(0x43f60, mulmod(mload(0x43f40), mload(0x43f20), f_q)) +mstore(0x43f80, addmod(mload(0xfd80), mload(0x5520), f_q)) +mstore(0x43fa0, mulmod(mload(0x43f80), mload(0x17c80), f_q)) +mstore(0x43fc0, mulmod(mload(0x41b60), mload(0x43fa0), f_q)) +mstore(0x43fe0, addmod(mload(0x43f60), sub(f_q, mload(0x43fc0)), f_q)) +mstore(0x44000, mulmod(mload(0x43fe0), mload(0x29860), f_q)) +mstore(0x44020, addmod(mload(0x43ee0), mload(0x44000), f_q)) +mstore(0x44040, mulmod(mload(0x8060), mload(0x44020), f_q)) +mstore(0x44060, addmod(mload(0x17cc0), sub(f_q, mload(0x17d00)), f_q)) +mstore(0x44080, mulmod(mload(0x44060), mload(0x195c0), f_q)) +mstore(0x440a0, addmod(mload(0x44040), mload(0x44080), f_q)) +mstore(0x440c0, mulmod(mload(0x8060), mload(0x440a0), f_q)) +mstore(0x440e0, mulmod(mload(0x44060), mload(0x29860), f_q)) +mstore(0x44100, addmod(mload(0x17cc0), sub(f_q, mload(0x17ce0)), f_q)) +mstore(0x44120, mulmod(mload(0x44100), mload(0x440e0), f_q)) +mstore(0x44140, addmod(mload(0x440c0), mload(0x44120), f_q)) +mstore(0x44160, mulmod(mload(0x8060), mload(0x44140), f_q)) +mstore(0x44180, addmod(1, sub(f_q, mload(0x17d20)), f_q)) +mstore(0x441a0, mulmod(mload(0x44180), mload(0x195c0), f_q)) +mstore(0x441c0, addmod(mload(0x44160), mload(0x441a0), f_q)) +mstore(0x441e0, mulmod(mload(0x8060), mload(0x441c0), f_q)) +mstore(0x44200, mulmod(mload(0x17d20), mload(0x17d20), f_q)) +mstore(0x44220, addmod(mload(0x44200), sub(f_q, mload(0x17d20)), f_q)) +mstore(0x44240, mulmod(mload(0x44220), mload(0x194e0), f_q)) +mstore(0x44260, addmod(mload(0x441e0), mload(0x44240), f_q)) +mstore(0x44280, mulmod(mload(0x8060), mload(0x44260), f_q)) +mstore(0x442a0, addmod(mload(0x17d60), mload(0x5520), f_q)) +mstore(0x442c0, mulmod(mload(0x442a0), mload(0x17d40), f_q)) +mstore(0x442e0, addmod(mload(0x17da0), mload(0x5580), f_q)) +mstore(0x44300, mulmod(mload(0x442e0), mload(0x442c0), f_q)) +mstore(0x44320, addmod(mload(0xfda0), mload(0x5520), f_q)) +mstore(0x44340, mulmod(mload(0x44320), mload(0x17d20), f_q)) +mstore(0x44360, mulmod(mload(0x41b60), mload(0x44340), f_q)) +mstore(0x44380, addmod(mload(0x44300), sub(f_q, mload(0x44360)), f_q)) +mstore(0x443a0, mulmod(mload(0x44380), mload(0x29860), f_q)) +mstore(0x443c0, addmod(mload(0x44280), mload(0x443a0), f_q)) +mstore(0x443e0, mulmod(mload(0x8060), mload(0x443c0), f_q)) +mstore(0x44400, addmod(mload(0x17d60), sub(f_q, mload(0x17da0)), f_q)) +mstore(0x44420, mulmod(mload(0x44400), mload(0x195c0), f_q)) +mstore(0x44440, addmod(mload(0x443e0), mload(0x44420), f_q)) +mstore(0x44460, mulmod(mload(0x8060), mload(0x44440), f_q)) +mstore(0x44480, mulmod(mload(0x44400), mload(0x29860), f_q)) +mstore(0x444a0, addmod(mload(0x17d60), sub(f_q, mload(0x17d80)), f_q)) +mstore(0x444c0, mulmod(mload(0x444a0), mload(0x44480), f_q)) +mstore(0x444e0, addmod(mload(0x44460), mload(0x444c0), f_q)) +mstore(0x44500, mulmod(mload(0x8060), mload(0x444e0), f_q)) +mstore(0x44520, addmod(1, sub(f_q, mload(0x17dc0)), f_q)) +mstore(0x44540, mulmod(mload(0x44520), mload(0x195c0), f_q)) +mstore(0x44560, addmod(mload(0x44500), mload(0x44540), f_q)) +mstore(0x44580, mulmod(mload(0x8060), mload(0x44560), f_q)) +mstore(0x445a0, mulmod(mload(0x17dc0), mload(0x17dc0), f_q)) +mstore(0x445c0, addmod(mload(0x445a0), sub(f_q, mload(0x17dc0)), f_q)) +mstore(0x445e0, mulmod(mload(0x445c0), mload(0x194e0), f_q)) +mstore(0x44600, addmod(mload(0x44580), mload(0x445e0), f_q)) +mstore(0x44620, mulmod(mload(0x8060), mload(0x44600), f_q)) +mstore(0x44640, addmod(mload(0x17e00), mload(0x5520), f_q)) +mstore(0x44660, mulmod(mload(0x44640), mload(0x17de0), f_q)) +mstore(0x44680, addmod(mload(0x17e40), mload(0x5580), f_q)) +mstore(0x446a0, mulmod(mload(0x44680), mload(0x44660), f_q)) +mstore(0x446c0, addmod(mload(0xfdc0), mload(0x5520), f_q)) +mstore(0x446e0, mulmod(mload(0x446c0), mload(0x17dc0), f_q)) +mstore(0x44700, mulmod(mload(0x41b60), mload(0x446e0), f_q)) +mstore(0x44720, addmod(mload(0x446a0), sub(f_q, mload(0x44700)), f_q)) +mstore(0x44740, mulmod(mload(0x44720), mload(0x29860), f_q)) +mstore(0x44760, addmod(mload(0x44620), mload(0x44740), f_q)) +mstore(0x44780, mulmod(mload(0x8060), mload(0x44760), f_q)) +mstore(0x447a0, addmod(mload(0x17e00), sub(f_q, mload(0x17e40)), f_q)) +mstore(0x447c0, mulmod(mload(0x447a0), mload(0x195c0), f_q)) +mstore(0x447e0, addmod(mload(0x44780), mload(0x447c0), f_q)) +mstore(0x44800, mulmod(mload(0x8060), mload(0x447e0), f_q)) +mstore(0x44820, mulmod(mload(0x447a0), mload(0x29860), f_q)) +mstore(0x44840, addmod(mload(0x17e00), sub(f_q, mload(0x17e20)), f_q)) +mstore(0x44860, mulmod(mload(0x44840), mload(0x44820), f_q)) +mstore(0x44880, addmod(mload(0x44800), mload(0x44860), f_q)) +mstore(0x448a0, mulmod(mload(0x8060), mload(0x44880), f_q)) +mstore(0x448c0, addmod(1, sub(f_q, mload(0x17e60)), f_q)) +mstore(0x448e0, mulmod(mload(0x448c0), mload(0x195c0), f_q)) +mstore(0x44900, addmod(mload(0x448a0), mload(0x448e0), f_q)) +mstore(0x44920, mulmod(mload(0x8060), mload(0x44900), f_q)) +mstore(0x44940, mulmod(mload(0x17e60), mload(0x17e60), f_q)) +mstore(0x44960, addmod(mload(0x44940), sub(f_q, mload(0x17e60)), f_q)) +mstore(0x44980, mulmod(mload(0x44960), mload(0x194e0), f_q)) +mstore(0x449a0, addmod(mload(0x44920), mload(0x44980), f_q)) +mstore(0x449c0, mulmod(mload(0x8060), mload(0x449a0), f_q)) +mstore(0x449e0, addmod(mload(0x17ea0), mload(0x5520), f_q)) +mstore(0x44a00, mulmod(mload(0x449e0), mload(0x17e80), f_q)) +mstore(0x44a20, addmod(mload(0x17ee0), mload(0x5580), f_q)) +mstore(0x44a40, mulmod(mload(0x44a20), mload(0x44a00), f_q)) +mstore(0x44a60, addmod(mload(0xfde0), mload(0x5520), f_q)) +mstore(0x44a80, mulmod(mload(0x44a60), mload(0x17e60), f_q)) +mstore(0x44aa0, mulmod(mload(0x41b60), mload(0x44a80), f_q)) +mstore(0x44ac0, addmod(mload(0x44a40), sub(f_q, mload(0x44aa0)), f_q)) +mstore(0x44ae0, mulmod(mload(0x44ac0), mload(0x29860), f_q)) +mstore(0x44b00, addmod(mload(0x449c0), mload(0x44ae0), f_q)) +mstore(0x44b20, mulmod(mload(0x8060), mload(0x44b00), f_q)) +mstore(0x44b40, addmod(mload(0x17ea0), sub(f_q, mload(0x17ee0)), f_q)) +mstore(0x44b60, mulmod(mload(0x44b40), mload(0x195c0), f_q)) +mstore(0x44b80, addmod(mload(0x44b20), mload(0x44b60), f_q)) +mstore(0x44ba0, mulmod(mload(0x8060), mload(0x44b80), f_q)) +mstore(0x44bc0, mulmod(mload(0x44b40), mload(0x29860), f_q)) +mstore(0x44be0, addmod(mload(0x17ea0), sub(f_q, mload(0x17ec0)), f_q)) +mstore(0x44c00, mulmod(mload(0x44be0), mload(0x44bc0), f_q)) +mstore(0x44c20, addmod(mload(0x44ba0), mload(0x44c00), f_q)) +mstore(0x44c40, mulmod(mload(0x8060), mload(0x44c20), f_q)) +mstore(0x44c60, addmod(1, sub(f_q, mload(0x17f00)), f_q)) +mstore(0x44c80, mulmod(mload(0x44c60), mload(0x195c0), f_q)) +mstore(0x44ca0, addmod(mload(0x44c40), mload(0x44c80), f_q)) +mstore(0x44cc0, mulmod(mload(0x8060), mload(0x44ca0), f_q)) +mstore(0x44ce0, mulmod(mload(0x17f00), mload(0x17f00), f_q)) +mstore(0x44d00, addmod(mload(0x44ce0), sub(f_q, mload(0x17f00)), f_q)) +mstore(0x44d20, mulmod(mload(0x44d00), mload(0x194e0), f_q)) +mstore(0x44d40, addmod(mload(0x44cc0), mload(0x44d20), f_q)) +mstore(0x44d60, mulmod(mload(0x8060), mload(0x44d40), f_q)) +mstore(0x44d80, addmod(mload(0x17f40), mload(0x5520), f_q)) +mstore(0x44da0, mulmod(mload(0x44d80), mload(0x17f20), f_q)) +mstore(0x44dc0, addmod(mload(0x17f80), mload(0x5580), f_q)) +mstore(0x44de0, mulmod(mload(0x44dc0), mload(0x44da0), f_q)) +mstore(0x44e00, addmod(mload(0xfe00), mload(0x5520), f_q)) +mstore(0x44e20, mulmod(mload(0x44e00), mload(0x17f00), f_q)) +mstore(0x44e40, mulmod(mload(0x41b60), mload(0x44e20), f_q)) +mstore(0x44e60, addmod(mload(0x44de0), sub(f_q, mload(0x44e40)), f_q)) +mstore(0x44e80, mulmod(mload(0x44e60), mload(0x29860), f_q)) +mstore(0x44ea0, addmod(mload(0x44d60), mload(0x44e80), f_q)) +mstore(0x44ec0, mulmod(mload(0x8060), mload(0x44ea0), f_q)) +mstore(0x44ee0, addmod(mload(0x17f40), sub(f_q, mload(0x17f80)), f_q)) +mstore(0x44f00, mulmod(mload(0x44ee0), mload(0x195c0), f_q)) +mstore(0x44f20, addmod(mload(0x44ec0), mload(0x44f00), f_q)) +mstore(0x44f40, mulmod(mload(0x8060), mload(0x44f20), f_q)) +mstore(0x44f60, mulmod(mload(0x44ee0), mload(0x29860), f_q)) +mstore(0x44f80, addmod(mload(0x17f40), sub(f_q, mload(0x17f60)), f_q)) +mstore(0x44fa0, mulmod(mload(0x44f80), mload(0x44f60), f_q)) +mstore(0x44fc0, addmod(mload(0x44f40), mload(0x44fa0), f_q)) +mstore(0x44fe0, mulmod(mload(0x8060), mload(0x44fc0), f_q)) +mstore(0x45000, addmod(1, sub(f_q, mload(0x17fa0)), f_q)) +mstore(0x45020, mulmod(mload(0x45000), mload(0x195c0), f_q)) +mstore(0x45040, addmod(mload(0x44fe0), mload(0x45020), f_q)) +mstore(0x45060, mulmod(mload(0x8060), mload(0x45040), f_q)) +mstore(0x45080, mulmod(mload(0x17fa0), mload(0x17fa0), f_q)) +mstore(0x450a0, addmod(mload(0x45080), sub(f_q, mload(0x17fa0)), f_q)) +mstore(0x450c0, mulmod(mload(0x450a0), mload(0x194e0), f_q)) +mstore(0x450e0, addmod(mload(0x45060), mload(0x450c0), f_q)) +mstore(0x45100, mulmod(mload(0x8060), mload(0x450e0), f_q)) +mstore(0x45120, addmod(mload(0x17fe0), mload(0x5520), f_q)) +mstore(0x45140, mulmod(mload(0x45120), mload(0x17fc0), f_q)) +mstore(0x45160, addmod(mload(0x18020), mload(0x5580), f_q)) +mstore(0x45180, mulmod(mload(0x45160), mload(0x45140), f_q)) +mstore(0x451a0, addmod(mload(0xfe20), mload(0x5520), f_q)) +mstore(0x451c0, mulmod(mload(0x451a0), mload(0x17fa0), f_q)) +mstore(0x451e0, mulmod(mload(0x41b60), mload(0x451c0), f_q)) +mstore(0x45200, addmod(mload(0x45180), sub(f_q, mload(0x451e0)), f_q)) +mstore(0x45220, mulmod(mload(0x45200), mload(0x29860), f_q)) +mstore(0x45240, addmod(mload(0x45100), mload(0x45220), f_q)) +mstore(0x45260, mulmod(mload(0x8060), mload(0x45240), f_q)) +mstore(0x45280, addmod(mload(0x17fe0), sub(f_q, mload(0x18020)), f_q)) +mstore(0x452a0, mulmod(mload(0x45280), mload(0x195c0), f_q)) +mstore(0x452c0, addmod(mload(0x45260), mload(0x452a0), f_q)) +mstore(0x452e0, mulmod(mload(0x8060), mload(0x452c0), f_q)) +mstore(0x45300, mulmod(mload(0x45280), mload(0x29860), f_q)) +mstore(0x45320, addmod(mload(0x17fe0), sub(f_q, mload(0x18000)), f_q)) +mstore(0x45340, mulmod(mload(0x45320), mload(0x45300), f_q)) +mstore(0x45360, addmod(mload(0x452e0), mload(0x45340), f_q)) +mstore(0x45380, mulmod(mload(0x8060), mload(0x45360), f_q)) +mstore(0x453a0, addmod(1, sub(f_q, mload(0x18040)), f_q)) +mstore(0x453c0, mulmod(mload(0x453a0), mload(0x195c0), f_q)) +mstore(0x453e0, addmod(mload(0x45380), mload(0x453c0), f_q)) +mstore(0x45400, mulmod(mload(0x8060), mload(0x453e0), f_q)) +mstore(0x45420, mulmod(mload(0x18040), mload(0x18040), f_q)) +mstore(0x45440, addmod(mload(0x45420), sub(f_q, mload(0x18040)), f_q)) +mstore(0x45460, mulmod(mload(0x45440), mload(0x194e0), f_q)) +mstore(0x45480, addmod(mload(0x45400), mload(0x45460), f_q)) +mstore(0x454a0, mulmod(mload(0x8060), mload(0x45480), f_q)) +mstore(0x454c0, addmod(mload(0x18080), mload(0x5520), f_q)) +mstore(0x454e0, mulmod(mload(0x454c0), mload(0x18060), f_q)) +mstore(0x45500, addmod(mload(0x180c0), mload(0x5580), f_q)) +mstore(0x45520, mulmod(mload(0x45500), mload(0x454e0), f_q)) +mstore(0x45540, addmod(mload(0xfe40), mload(0x5520), f_q)) +mstore(0x45560, mulmod(mload(0x45540), mload(0x18040), f_q)) +mstore(0x45580, mulmod(mload(0x41b60), mload(0x45560), f_q)) +mstore(0x455a0, addmod(mload(0x45520), sub(f_q, mload(0x45580)), f_q)) +mstore(0x455c0, mulmod(mload(0x455a0), mload(0x29860), f_q)) +mstore(0x455e0, addmod(mload(0x454a0), mload(0x455c0), f_q)) +mstore(0x45600, mulmod(mload(0x8060), mload(0x455e0), f_q)) +mstore(0x45620, addmod(mload(0x18080), sub(f_q, mload(0x180c0)), f_q)) +mstore(0x45640, mulmod(mload(0x45620), mload(0x195c0), f_q)) +mstore(0x45660, addmod(mload(0x45600), mload(0x45640), f_q)) +mstore(0x45680, mulmod(mload(0x8060), mload(0x45660), f_q)) +mstore(0x456a0, mulmod(mload(0x45620), mload(0x29860), f_q)) +mstore(0x456c0, addmod(mload(0x18080), sub(f_q, mload(0x180a0)), f_q)) +mstore(0x456e0, mulmod(mload(0x456c0), mload(0x456a0), f_q)) +mstore(0x45700, addmod(mload(0x45680), mload(0x456e0), f_q)) +mstore(0x45720, mulmod(mload(0x8060), mload(0x45700), f_q)) +mstore(0x45740, addmod(1, sub(f_q, mload(0x180e0)), f_q)) +mstore(0x45760, mulmod(mload(0x45740), mload(0x195c0), f_q)) +mstore(0x45780, addmod(mload(0x45720), mload(0x45760), f_q)) +mstore(0x457a0, mulmod(mload(0x8060), mload(0x45780), f_q)) +mstore(0x457c0, mulmod(mload(0x180e0), mload(0x180e0), f_q)) +mstore(0x457e0, addmod(mload(0x457c0), sub(f_q, mload(0x180e0)), f_q)) +mstore(0x45800, mulmod(mload(0x457e0), mload(0x194e0), f_q)) +mstore(0x45820, addmod(mload(0x457a0), mload(0x45800), f_q)) +mstore(0x45840, mulmod(mload(0x8060), mload(0x45820), f_q)) +mstore(0x45860, addmod(mload(0x18120), mload(0x5520), f_q)) +mstore(0x45880, mulmod(mload(0x45860), mload(0x18100), f_q)) +mstore(0x458a0, addmod(mload(0x18160), mload(0x5580), f_q)) +mstore(0x458c0, mulmod(mload(0x458a0), mload(0x45880), f_q)) +mstore(0x458e0, addmod(mload(0xfe60), mload(0x5520), f_q)) +mstore(0x45900, mulmod(mload(0x458e0), mload(0x180e0), f_q)) +mstore(0x45920, mulmod(mload(0x41b60), mload(0x45900), f_q)) +mstore(0x45940, addmod(mload(0x458c0), sub(f_q, mload(0x45920)), f_q)) +mstore(0x45960, mulmod(mload(0x45940), mload(0x29860), f_q)) +mstore(0x45980, addmod(mload(0x45840), mload(0x45960), f_q)) +mstore(0x459a0, mulmod(mload(0x8060), mload(0x45980), f_q)) +mstore(0x459c0, addmod(mload(0x18120), sub(f_q, mload(0x18160)), f_q)) +mstore(0x459e0, mulmod(mload(0x459c0), mload(0x195c0), f_q)) +mstore(0x45a00, addmod(mload(0x459a0), mload(0x459e0), f_q)) +mstore(0x45a20, mulmod(mload(0x8060), mload(0x45a00), f_q)) +mstore(0x45a40, mulmod(mload(0x459c0), mload(0x29860), f_q)) +mstore(0x45a60, addmod(mload(0x18120), sub(f_q, mload(0x18140)), f_q)) +mstore(0x45a80, mulmod(mload(0x45a60), mload(0x45a40), f_q)) +mstore(0x45aa0, addmod(mload(0x45a20), mload(0x45a80), f_q)) +mstore(0x45ac0, mulmod(mload(0x8060), mload(0x45aa0), f_q)) +mstore(0x45ae0, addmod(1, sub(f_q, mload(0x18180)), f_q)) +mstore(0x45b00, mulmod(mload(0x45ae0), mload(0x195c0), f_q)) +mstore(0x45b20, addmod(mload(0x45ac0), mload(0x45b00), f_q)) +mstore(0x45b40, mulmod(mload(0x8060), mload(0x45b20), f_q)) +mstore(0x45b60, mulmod(mload(0x18180), mload(0x18180), f_q)) +mstore(0x45b80, addmod(mload(0x45b60), sub(f_q, mload(0x18180)), f_q)) +mstore(0x45ba0, mulmod(mload(0x45b80), mload(0x194e0), f_q)) +mstore(0x45bc0, addmod(mload(0x45b40), mload(0x45ba0), f_q)) +mstore(0x45be0, mulmod(mload(0x8060), mload(0x45bc0), f_q)) +mstore(0x45c00, addmod(mload(0x181c0), mload(0x5520), f_q)) +mstore(0x45c20, mulmod(mload(0x45c00), mload(0x181a0), f_q)) +mstore(0x45c40, addmod(mload(0x18200), mload(0x5580), f_q)) +mstore(0x45c60, mulmod(mload(0x45c40), mload(0x45c20), f_q)) +mstore(0x45c80, addmod(mload(0xfe80), mload(0x5520), f_q)) +mstore(0x45ca0, mulmod(mload(0x45c80), mload(0x18180), f_q)) +mstore(0x45cc0, mulmod(mload(0x41b60), mload(0x45ca0), f_q)) +mstore(0x45ce0, addmod(mload(0x45c60), sub(f_q, mload(0x45cc0)), f_q)) +mstore(0x45d00, mulmod(mload(0x45ce0), mload(0x29860), f_q)) +mstore(0x45d20, addmod(mload(0x45be0), mload(0x45d00), f_q)) +mstore(0x45d40, mulmod(mload(0x8060), mload(0x45d20), f_q)) +mstore(0x45d60, addmod(mload(0x181c0), sub(f_q, mload(0x18200)), f_q)) +mstore(0x45d80, mulmod(mload(0x45d60), mload(0x195c0), f_q)) +mstore(0x45da0, addmod(mload(0x45d40), mload(0x45d80), f_q)) +mstore(0x45dc0, mulmod(mload(0x8060), mload(0x45da0), f_q)) +mstore(0x45de0, mulmod(mload(0x45d60), mload(0x29860), f_q)) +mstore(0x45e00, addmod(mload(0x181c0), sub(f_q, mload(0x181e0)), f_q)) +mstore(0x45e20, mulmod(mload(0x45e00), mload(0x45de0), f_q)) +mstore(0x45e40, addmod(mload(0x45dc0), mload(0x45e20), f_q)) +mstore(0x45e60, mulmod(mload(0x8060), mload(0x45e40), f_q)) +mstore(0x45e80, addmod(1, sub(f_q, mload(0x18220)), f_q)) +mstore(0x45ea0, mulmod(mload(0x45e80), mload(0x195c0), f_q)) +mstore(0x45ec0, addmod(mload(0x45e60), mload(0x45ea0), f_q)) +mstore(0x45ee0, mulmod(mload(0x8060), mload(0x45ec0), f_q)) +mstore(0x45f00, mulmod(mload(0x18220), mload(0x18220), f_q)) +mstore(0x45f20, addmod(mload(0x45f00), sub(f_q, mload(0x18220)), f_q)) +mstore(0x45f40, mulmod(mload(0x45f20), mload(0x194e0), f_q)) +mstore(0x45f60, addmod(mload(0x45ee0), mload(0x45f40), f_q)) +mstore(0x45f80, mulmod(mload(0x8060), mload(0x45f60), f_q)) +mstore(0x45fa0, addmod(mload(0x18260), mload(0x5520), f_q)) +mstore(0x45fc0, mulmod(mload(0x45fa0), mload(0x18240), f_q)) +mstore(0x45fe0, addmod(mload(0x182a0), mload(0x5580), f_q)) +mstore(0x46000, mulmod(mload(0x45fe0), mload(0x45fc0), f_q)) +mstore(0x46020, addmod(mload(0xfea0), mload(0x5520), f_q)) +mstore(0x46040, mulmod(mload(0x46020), mload(0x18220), f_q)) +mstore(0x46060, mulmod(mload(0x41b60), mload(0x46040), f_q)) +mstore(0x46080, addmod(mload(0x46000), sub(f_q, mload(0x46060)), f_q)) +mstore(0x460a0, mulmod(mload(0x46080), mload(0x29860), f_q)) +mstore(0x460c0, addmod(mload(0x45f80), mload(0x460a0), f_q)) +mstore(0x460e0, mulmod(mload(0x8060), mload(0x460c0), f_q)) +mstore(0x46100, addmod(mload(0x18260), sub(f_q, mload(0x182a0)), f_q)) +mstore(0x46120, mulmod(mload(0x46100), mload(0x195c0), f_q)) +mstore(0x46140, addmod(mload(0x460e0), mload(0x46120), f_q)) +mstore(0x46160, mulmod(mload(0x8060), mload(0x46140), f_q)) +mstore(0x46180, mulmod(mload(0x46100), mload(0x29860), f_q)) +mstore(0x461a0, addmod(mload(0x18260), sub(f_q, mload(0x18280)), f_q)) +mstore(0x461c0, mulmod(mload(0x461a0), mload(0x46180), f_q)) +mstore(0x461e0, addmod(mload(0x46160), mload(0x461c0), f_q)) +mstore(0x46200, mulmod(mload(0x8060), mload(0x461e0), f_q)) +mstore(0x46220, addmod(1, sub(f_q, mload(0x182c0)), f_q)) +mstore(0x46240, mulmod(mload(0x46220), mload(0x195c0), f_q)) +mstore(0x46260, addmod(mload(0x46200), mload(0x46240), f_q)) +mstore(0x46280, mulmod(mload(0x8060), mload(0x46260), f_q)) +mstore(0x462a0, mulmod(mload(0x182c0), mload(0x182c0), f_q)) +mstore(0x462c0, addmod(mload(0x462a0), sub(f_q, mload(0x182c0)), f_q)) +mstore(0x462e0, mulmod(mload(0x462c0), mload(0x194e0), f_q)) +mstore(0x46300, addmod(mload(0x46280), mload(0x462e0), f_q)) +mstore(0x46320, mulmod(mload(0x8060), mload(0x46300), f_q)) +mstore(0x46340, addmod(mload(0x18300), mload(0x5520), f_q)) +mstore(0x46360, mulmod(mload(0x46340), mload(0x182e0), f_q)) +mstore(0x46380, addmod(mload(0x18340), mload(0x5580), f_q)) +mstore(0x463a0, mulmod(mload(0x46380), mload(0x46360), f_q)) +mstore(0x463c0, addmod(mload(0xfec0), mload(0x5520), f_q)) +mstore(0x463e0, mulmod(mload(0x463c0), mload(0x182c0), f_q)) +mstore(0x46400, mulmod(mload(0x41b60), mload(0x463e0), f_q)) +mstore(0x46420, addmod(mload(0x463a0), sub(f_q, mload(0x46400)), f_q)) +mstore(0x46440, mulmod(mload(0x46420), mload(0x29860), f_q)) +mstore(0x46460, addmod(mload(0x46320), mload(0x46440), f_q)) +mstore(0x46480, mulmod(mload(0x8060), mload(0x46460), f_q)) +mstore(0x464a0, addmod(mload(0x18300), sub(f_q, mload(0x18340)), f_q)) +mstore(0x464c0, mulmod(mload(0x464a0), mload(0x195c0), f_q)) +mstore(0x464e0, addmod(mload(0x46480), mload(0x464c0), f_q)) +mstore(0x46500, mulmod(mload(0x8060), mload(0x464e0), f_q)) +mstore(0x46520, mulmod(mload(0x464a0), mload(0x29860), f_q)) +mstore(0x46540, addmod(mload(0x18300), sub(f_q, mload(0x18320)), f_q)) +mstore(0x46560, mulmod(mload(0x46540), mload(0x46520), f_q)) +mstore(0x46580, addmod(mload(0x46500), mload(0x46560), f_q)) +mstore(0x465a0, mulmod(mload(0x8060), mload(0x46580), f_q)) +mstore(0x465c0, addmod(1, sub(f_q, mload(0x18360)), f_q)) +mstore(0x465e0, mulmod(mload(0x465c0), mload(0x195c0), f_q)) +mstore(0x46600, addmod(mload(0x465a0), mload(0x465e0), f_q)) +mstore(0x46620, mulmod(mload(0x8060), mload(0x46600), f_q)) +mstore(0x46640, mulmod(mload(0x18360), mload(0x18360), f_q)) +mstore(0x46660, addmod(mload(0x46640), sub(f_q, mload(0x18360)), f_q)) +mstore(0x46680, mulmod(mload(0x46660), mload(0x194e0), f_q)) +mstore(0x466a0, addmod(mload(0x46620), mload(0x46680), f_q)) +mstore(0x466c0, mulmod(mload(0x8060), mload(0x466a0), f_q)) +mstore(0x466e0, addmod(mload(0x183a0), mload(0x5520), f_q)) +mstore(0x46700, mulmod(mload(0x466e0), mload(0x18380), f_q)) +mstore(0x46720, addmod(mload(0x183e0), mload(0x5580), f_q)) +mstore(0x46740, mulmod(mload(0x46720), mload(0x46700), f_q)) +mstore(0x46760, addmod(mload(0xfee0), mload(0x5520), f_q)) +mstore(0x46780, mulmod(mload(0x46760), mload(0x18360), f_q)) +mstore(0x467a0, mulmod(mload(0x41b60), mload(0x46780), f_q)) +mstore(0x467c0, addmod(mload(0x46740), sub(f_q, mload(0x467a0)), f_q)) +mstore(0x467e0, mulmod(mload(0x467c0), mload(0x29860), f_q)) +mstore(0x46800, addmod(mload(0x466c0), mload(0x467e0), f_q)) +mstore(0x46820, mulmod(mload(0x8060), mload(0x46800), f_q)) +mstore(0x46840, addmod(mload(0x183a0), sub(f_q, mload(0x183e0)), f_q)) +mstore(0x46860, mulmod(mload(0x46840), mload(0x195c0), f_q)) +mstore(0x46880, addmod(mload(0x46820), mload(0x46860), f_q)) +mstore(0x468a0, mulmod(mload(0x8060), mload(0x46880), f_q)) +mstore(0x468c0, mulmod(mload(0x46840), mload(0x29860), f_q)) +mstore(0x468e0, addmod(mload(0x183a0), sub(f_q, mload(0x183c0)), f_q)) +mstore(0x46900, mulmod(mload(0x468e0), mload(0x468c0), f_q)) +mstore(0x46920, addmod(mload(0x468a0), mload(0x46900), f_q)) +mstore(0x46940, mulmod(mload(0x8060), mload(0x46920), f_q)) +mstore(0x46960, addmod(1, sub(f_q, mload(0x18400)), f_q)) +mstore(0x46980, mulmod(mload(0x46960), mload(0x195c0), f_q)) +mstore(0x469a0, addmod(mload(0x46940), mload(0x46980), f_q)) +mstore(0x469c0, mulmod(mload(0x8060), mload(0x469a0), f_q)) +mstore(0x469e0, mulmod(mload(0x18400), mload(0x18400), f_q)) +mstore(0x46a00, addmod(mload(0x469e0), sub(f_q, mload(0x18400)), f_q)) +mstore(0x46a20, mulmod(mload(0x46a00), mload(0x194e0), f_q)) +mstore(0x46a40, addmod(mload(0x469c0), mload(0x46a20), f_q)) +mstore(0x46a60, mulmod(mload(0x8060), mload(0x46a40), f_q)) +mstore(0x46a80, addmod(mload(0x18440), mload(0x5520), f_q)) +mstore(0x46aa0, mulmod(mload(0x46a80), mload(0x18420), f_q)) +mstore(0x46ac0, addmod(mload(0x18480), mload(0x5580), f_q)) +mstore(0x46ae0, mulmod(mload(0x46ac0), mload(0x46aa0), f_q)) +mstore(0x46b00, addmod(mload(0xff00), mload(0x5520), f_q)) +mstore(0x46b20, mulmod(mload(0x46b00), mload(0x18400), f_q)) +mstore(0x46b40, mulmod(mload(0x41b60), mload(0x46b20), f_q)) +mstore(0x46b60, addmod(mload(0x46ae0), sub(f_q, mload(0x46b40)), f_q)) +mstore(0x46b80, mulmod(mload(0x46b60), mload(0x29860), f_q)) +mstore(0x46ba0, addmod(mload(0x46a60), mload(0x46b80), f_q)) +mstore(0x46bc0, mulmod(mload(0x8060), mload(0x46ba0), f_q)) +mstore(0x46be0, addmod(mload(0x18440), sub(f_q, mload(0x18480)), f_q)) +mstore(0x46c00, mulmod(mload(0x46be0), mload(0x195c0), f_q)) +mstore(0x46c20, addmod(mload(0x46bc0), mload(0x46c00), f_q)) +mstore(0x46c40, mulmod(mload(0x8060), mload(0x46c20), f_q)) +mstore(0x46c60, mulmod(mload(0x46be0), mload(0x29860), f_q)) +mstore(0x46c80, addmod(mload(0x18440), sub(f_q, mload(0x18460)), f_q)) +mstore(0x46ca0, mulmod(mload(0x46c80), mload(0x46c60), f_q)) +mstore(0x46cc0, addmod(mload(0x46c40), mload(0x46ca0), f_q)) +mstore(0x46ce0, mulmod(mload(0x8060), mload(0x46cc0), f_q)) +mstore(0x46d00, addmod(1, sub(f_q, mload(0x184a0)), f_q)) +mstore(0x46d20, mulmod(mload(0x46d00), mload(0x195c0), f_q)) +mstore(0x46d40, addmod(mload(0x46ce0), mload(0x46d20), f_q)) +mstore(0x46d60, mulmod(mload(0x8060), mload(0x46d40), f_q)) +mstore(0x46d80, mulmod(mload(0x184a0), mload(0x184a0), f_q)) +mstore(0x46da0, addmod(mload(0x46d80), sub(f_q, mload(0x184a0)), f_q)) +mstore(0x46dc0, mulmod(mload(0x46da0), mload(0x194e0), f_q)) +mstore(0x46de0, addmod(mload(0x46d60), mload(0x46dc0), f_q)) +mstore(0x46e00, mulmod(mload(0x8060), mload(0x46de0), f_q)) +mstore(0x46e20, addmod(mload(0x184e0), mload(0x5520), f_q)) +mstore(0x46e40, mulmod(mload(0x46e20), mload(0x184c0), f_q)) +mstore(0x46e60, addmod(mload(0x18520), mload(0x5580), f_q)) +mstore(0x46e80, mulmod(mload(0x46e60), mload(0x46e40), f_q)) +mstore(0x46ea0, addmod(mload(0xff20), mload(0x5520), f_q)) +mstore(0x46ec0, mulmod(mload(0x46ea0), mload(0x184a0), f_q)) +mstore(0x46ee0, mulmod(mload(0x41b60), mload(0x46ec0), f_q)) +mstore(0x46f00, addmod(mload(0x46e80), sub(f_q, mload(0x46ee0)), f_q)) +mstore(0x46f20, mulmod(mload(0x46f00), mload(0x29860), f_q)) +mstore(0x46f40, addmod(mload(0x46e00), mload(0x46f20), f_q)) +mstore(0x46f60, mulmod(mload(0x8060), mload(0x46f40), f_q)) +mstore(0x46f80, addmod(mload(0x184e0), sub(f_q, mload(0x18520)), f_q)) +mstore(0x46fa0, mulmod(mload(0x46f80), mload(0x195c0), f_q)) +mstore(0x46fc0, addmod(mload(0x46f60), mload(0x46fa0), f_q)) +mstore(0x46fe0, mulmod(mload(0x8060), mload(0x46fc0), f_q)) +mstore(0x47000, mulmod(mload(0x46f80), mload(0x29860), f_q)) +mstore(0x47020, addmod(mload(0x184e0), sub(f_q, mload(0x18500)), f_q)) +mstore(0x47040, mulmod(mload(0x47020), mload(0x47000), f_q)) +mstore(0x47060, addmod(mload(0x46fe0), mload(0x47040), f_q)) +mstore(0x47080, mulmod(mload(0x8060), mload(0x47060), f_q)) +mstore(0x470a0, addmod(1, sub(f_q, mload(0x18540)), f_q)) +mstore(0x470c0, mulmod(mload(0x470a0), mload(0x195c0), f_q)) +mstore(0x470e0, addmod(mload(0x47080), mload(0x470c0), f_q)) +mstore(0x47100, mulmod(mload(0x8060), mload(0x470e0), f_q)) +mstore(0x47120, mulmod(mload(0x18540), mload(0x18540), f_q)) +mstore(0x47140, addmod(mload(0x47120), sub(f_q, mload(0x18540)), f_q)) +mstore(0x47160, mulmod(mload(0x47140), mload(0x194e0), f_q)) +mstore(0x47180, addmod(mload(0x47100), mload(0x47160), f_q)) +mstore(0x471a0, mulmod(mload(0x8060), mload(0x47180), f_q)) +mstore(0x471c0, addmod(mload(0x18580), mload(0x5520), f_q)) +mstore(0x471e0, mulmod(mload(0x471c0), mload(0x18560), f_q)) +mstore(0x47200, addmod(mload(0x185c0), mload(0x5580), f_q)) +mstore(0x47220, mulmod(mload(0x47200), mload(0x471e0), f_q)) +mstore(0x47240, addmod(mload(0xff40), mload(0x5520), f_q)) +mstore(0x47260, mulmod(mload(0x47240), mload(0x18540), f_q)) +mstore(0x47280, mulmod(mload(0x41b60), mload(0x47260), f_q)) +mstore(0x472a0, addmod(mload(0x47220), sub(f_q, mload(0x47280)), f_q)) +mstore(0x472c0, mulmod(mload(0x472a0), mload(0x29860), f_q)) +mstore(0x472e0, addmod(mload(0x471a0), mload(0x472c0), f_q)) +mstore(0x47300, mulmod(mload(0x8060), mload(0x472e0), f_q)) +mstore(0x47320, addmod(mload(0x18580), sub(f_q, mload(0x185c0)), f_q)) +mstore(0x47340, mulmod(mload(0x47320), mload(0x195c0), f_q)) +mstore(0x47360, addmod(mload(0x47300), mload(0x47340), f_q)) +mstore(0x47380, mulmod(mload(0x8060), mload(0x47360), f_q)) +mstore(0x473a0, mulmod(mload(0x47320), mload(0x29860), f_q)) +mstore(0x473c0, addmod(mload(0x18580), sub(f_q, mload(0x185a0)), f_q)) +mstore(0x473e0, mulmod(mload(0x473c0), mload(0x473a0), f_q)) +mstore(0x47400, addmod(mload(0x47380), mload(0x473e0), f_q)) +mstore(0x47420, mulmod(mload(0x8060), mload(0x47400), f_q)) +mstore(0x47440, addmod(1, sub(f_q, mload(0x185e0)), f_q)) +mstore(0x47460, mulmod(mload(0x47440), mload(0x195c0), f_q)) +mstore(0x47480, addmod(mload(0x47420), mload(0x47460), f_q)) +mstore(0x474a0, mulmod(mload(0x8060), mload(0x47480), f_q)) +mstore(0x474c0, mulmod(mload(0x185e0), mload(0x185e0), f_q)) +mstore(0x474e0, addmod(mload(0x474c0), sub(f_q, mload(0x185e0)), f_q)) +mstore(0x47500, mulmod(mload(0x474e0), mload(0x194e0), f_q)) +mstore(0x47520, addmod(mload(0x474a0), mload(0x47500), f_q)) +mstore(0x47540, mulmod(mload(0x8060), mload(0x47520), f_q)) +mstore(0x47560, addmod(mload(0x18620), mload(0x5520), f_q)) +mstore(0x47580, mulmod(mload(0x47560), mload(0x18600), f_q)) +mstore(0x475a0, addmod(mload(0x18660), mload(0x5580), f_q)) +mstore(0x475c0, mulmod(mload(0x475a0), mload(0x47580), f_q)) +mstore(0x475e0, addmod(mload(0xff60), mload(0x5520), f_q)) +mstore(0x47600, mulmod(mload(0x475e0), mload(0x185e0), f_q)) +mstore(0x47620, mulmod(mload(0x41b60), mload(0x47600), f_q)) +mstore(0x47640, addmod(mload(0x475c0), sub(f_q, mload(0x47620)), f_q)) +mstore(0x47660, mulmod(mload(0x47640), mload(0x29860), f_q)) +mstore(0x47680, addmod(mload(0x47540), mload(0x47660), f_q)) +mstore(0x476a0, mulmod(mload(0x8060), mload(0x47680), f_q)) +mstore(0x476c0, addmod(mload(0x18620), sub(f_q, mload(0x18660)), f_q)) +mstore(0x476e0, mulmod(mload(0x476c0), mload(0x195c0), f_q)) +mstore(0x47700, addmod(mload(0x476a0), mload(0x476e0), f_q)) +mstore(0x47720, mulmod(mload(0x8060), mload(0x47700), f_q)) +mstore(0x47740, mulmod(mload(0x476c0), mload(0x29860), f_q)) +mstore(0x47760, addmod(mload(0x18620), sub(f_q, mload(0x18640)), f_q)) +mstore(0x47780, mulmod(mload(0x47760), mload(0x47740), f_q)) +mstore(0x477a0, addmod(mload(0x47720), mload(0x47780), f_q)) +mstore(0x477c0, mulmod(mload(0x8060), mload(0x477a0), f_q)) +mstore(0x477e0, addmod(1, sub(f_q, mload(0x18680)), f_q)) +mstore(0x47800, mulmod(mload(0x477e0), mload(0x195c0), f_q)) +mstore(0x47820, addmod(mload(0x477c0), mload(0x47800), f_q)) +mstore(0x47840, mulmod(mload(0x8060), mload(0x47820), f_q)) +mstore(0x47860, mulmod(mload(0x18680), mload(0x18680), f_q)) +mstore(0x47880, addmod(mload(0x47860), sub(f_q, mload(0x18680)), f_q)) +mstore(0x478a0, mulmod(mload(0x47880), mload(0x194e0), f_q)) +mstore(0x478c0, addmod(mload(0x47840), mload(0x478a0), f_q)) +mstore(0x478e0, mulmod(mload(0x8060), mload(0x478c0), f_q)) +mstore(0x47900, addmod(mload(0x186c0), mload(0x5520), f_q)) +mstore(0x47920, mulmod(mload(0x47900), mload(0x186a0), f_q)) +mstore(0x47940, addmod(mload(0x18700), mload(0x5580), f_q)) +mstore(0x47960, mulmod(mload(0x47940), mload(0x47920), f_q)) +mstore(0x47980, addmod(mload(0xff80), mload(0x5520), f_q)) +mstore(0x479a0, mulmod(mload(0x47980), mload(0x18680), f_q)) +mstore(0x479c0, mulmod(mload(0x41b60), mload(0x479a0), f_q)) +mstore(0x479e0, addmod(mload(0x47960), sub(f_q, mload(0x479c0)), f_q)) +mstore(0x47a00, mulmod(mload(0x479e0), mload(0x29860), f_q)) +mstore(0x47a20, addmod(mload(0x478e0), mload(0x47a00), f_q)) +mstore(0x47a40, mulmod(mload(0x8060), mload(0x47a20), f_q)) +mstore(0x47a60, addmod(mload(0x186c0), sub(f_q, mload(0x18700)), f_q)) +mstore(0x47a80, mulmod(mload(0x47a60), mload(0x195c0), f_q)) +mstore(0x47aa0, addmod(mload(0x47a40), mload(0x47a80), f_q)) +mstore(0x47ac0, mulmod(mload(0x8060), mload(0x47aa0), f_q)) +mstore(0x47ae0, mulmod(mload(0x47a60), mload(0x29860), f_q)) +mstore(0x47b00, addmod(mload(0x186c0), sub(f_q, mload(0x186e0)), f_q)) +mstore(0x47b20, mulmod(mload(0x47b00), mload(0x47ae0), f_q)) +mstore(0x47b40, addmod(mload(0x47ac0), mload(0x47b20), f_q)) +mstore(0x47b60, mulmod(mload(0x8060), mload(0x47b40), f_q)) +mstore(0x47b80, addmod(1, sub(f_q, mload(0x18720)), f_q)) +mstore(0x47ba0, mulmod(mload(0x47b80), mload(0x195c0), f_q)) +mstore(0x47bc0, addmod(mload(0x47b60), mload(0x47ba0), f_q)) +mstore(0x47be0, mulmod(mload(0x8060), mload(0x47bc0), f_q)) +mstore(0x47c00, mulmod(mload(0x18720), mload(0x18720), f_q)) +mstore(0x47c20, addmod(mload(0x47c00), sub(f_q, mload(0x18720)), f_q)) +mstore(0x47c40, mulmod(mload(0x47c20), mload(0x194e0), f_q)) +mstore(0x47c60, addmod(mload(0x47be0), mload(0x47c40), f_q)) +mstore(0x47c80, mulmod(mload(0x8060), mload(0x47c60), f_q)) +mstore(0x47ca0, addmod(mload(0x18760), mload(0x5520), f_q)) +mstore(0x47cc0, mulmod(mload(0x47ca0), mload(0x18740), f_q)) +mstore(0x47ce0, addmod(mload(0x187a0), mload(0x5580), f_q)) +mstore(0x47d00, mulmod(mload(0x47ce0), mload(0x47cc0), f_q)) +mstore(0x47d20, addmod(mload(0xffa0), mload(0x5520), f_q)) +mstore(0x47d40, mulmod(mload(0x47d20), mload(0x18720), f_q)) +mstore(0x47d60, mulmod(mload(0x41b60), mload(0x47d40), f_q)) +mstore(0x47d80, addmod(mload(0x47d00), sub(f_q, mload(0x47d60)), f_q)) +mstore(0x47da0, mulmod(mload(0x47d80), mload(0x29860), f_q)) +mstore(0x47dc0, addmod(mload(0x47c80), mload(0x47da0), f_q)) +mstore(0x47de0, mulmod(mload(0x8060), mload(0x47dc0), f_q)) +mstore(0x47e00, addmod(mload(0x18760), sub(f_q, mload(0x187a0)), f_q)) +mstore(0x47e20, mulmod(mload(0x47e00), mload(0x195c0), f_q)) +mstore(0x47e40, addmod(mload(0x47de0), mload(0x47e20), f_q)) +mstore(0x47e60, mulmod(mload(0x8060), mload(0x47e40), f_q)) +mstore(0x47e80, mulmod(mload(0x47e00), mload(0x29860), f_q)) +mstore(0x47ea0, addmod(mload(0x18760), sub(f_q, mload(0x18780)), f_q)) +mstore(0x47ec0, mulmod(mload(0x47ea0), mload(0x47e80), f_q)) +mstore(0x47ee0, addmod(mload(0x47e60), mload(0x47ec0), f_q)) +mstore(0x47f00, mulmod(mload(0x8060), mload(0x47ee0), f_q)) +mstore(0x47f20, addmod(1, sub(f_q, mload(0x187c0)), f_q)) +mstore(0x47f40, mulmod(mload(0x47f20), mload(0x195c0), f_q)) +mstore(0x47f60, addmod(mload(0x47f00), mload(0x47f40), f_q)) +mstore(0x47f80, mulmod(mload(0x8060), mload(0x47f60), f_q)) +mstore(0x47fa0, mulmod(mload(0x187c0), mload(0x187c0), f_q)) +mstore(0x47fc0, addmod(mload(0x47fa0), sub(f_q, mload(0x187c0)), f_q)) +mstore(0x47fe0, mulmod(mload(0x47fc0), mload(0x194e0), f_q)) +mstore(0x48000, addmod(mload(0x47f80), mload(0x47fe0), f_q)) +mstore(0x48020, mulmod(mload(0x8060), mload(0x48000), f_q)) +mstore(0x48040, addmod(mload(0x18800), mload(0x5520), f_q)) +mstore(0x48060, mulmod(mload(0x48040), mload(0x187e0), f_q)) +mstore(0x48080, addmod(mload(0x18840), mload(0x5580), f_q)) +mstore(0x480a0, mulmod(mload(0x48080), mload(0x48060), f_q)) +mstore(0x480c0, addmod(mload(0xffc0), mload(0x5520), f_q)) +mstore(0x480e0, mulmod(mload(0x480c0), mload(0x187c0), f_q)) +mstore(0x48100, mulmod(mload(0x41b60), mload(0x480e0), f_q)) +mstore(0x48120, addmod(mload(0x480a0), sub(f_q, mload(0x48100)), f_q)) +mstore(0x48140, mulmod(mload(0x48120), mload(0x29860), f_q)) +mstore(0x48160, addmod(mload(0x48020), mload(0x48140), f_q)) +mstore(0x48180, mulmod(mload(0x8060), mload(0x48160), f_q)) +mstore(0x481a0, addmod(mload(0x18800), sub(f_q, mload(0x18840)), f_q)) +mstore(0x481c0, mulmod(mload(0x481a0), mload(0x195c0), f_q)) +mstore(0x481e0, addmod(mload(0x48180), mload(0x481c0), f_q)) +mstore(0x48200, mulmod(mload(0x8060), mload(0x481e0), f_q)) +mstore(0x48220, mulmod(mload(0x481a0), mload(0x29860), f_q)) +mstore(0x48240, addmod(mload(0x18800), sub(f_q, mload(0x18820)), f_q)) +mstore(0x48260, mulmod(mload(0x48240), mload(0x48220), f_q)) +mstore(0x48280, addmod(mload(0x48200), mload(0x48260), f_q)) +mstore(0x482a0, mulmod(mload(0x18c80), mload(0x18c80), f_q)) +mstore(0x482c0, mulmod(mload(0x482a0), mload(0x18c80), f_q)) +mstore(0x482e0, mulmod(1, mload(0x18c80), f_q)) +mstore(0x48300, mulmod(1, mload(0x482a0), f_q)) +mstore(0x48320, mulmod(mload(0x48280), mload(0x18ca0), f_q)) +mstore(0x48340, mulmod(mload(0x18a80), mload(0x8180), f_q)) +mstore(0x48360, mulmod(mload(0x48340), mload(0x8180), f_q)) +mstore(0x48380, mulmod(mload(0x8180), 1, f_q)) +mstore(0x483a0, addmod(mload(0x18980), sub(f_q, mload(0x48380)), f_q)) +mstore(0x483c0, mulmod(mload(0x8180), 4443263508319656594054352481848447997537391617204595126809744742387004492585, f_q)) +mstore(0x483e0, addmod(mload(0x18980), sub(f_q, mload(0x483c0)), f_q)) +mstore(0x48400, mulmod(mload(0x8180), 11402394834529375719535454173347509224290498423785625657829583372803806900475, f_q)) +mstore(0x48420, addmod(mload(0x18980), sub(f_q, mload(0x48400)), f_q)) +mstore(0x48440, mulmod(mload(0x8180), 12491230264321380165669116208790466830459716800431293091713220204712467607643, f_q)) +mstore(0x48460, addmod(mload(0x18980), sub(f_q, mload(0x48440)), f_q)) +mstore(0x48480, mulmod(mload(0x8180), 21180393220728113421338195116216869725258066600961496947533653125588029756005, f_q)) +mstore(0x484a0, addmod(mload(0x18980), sub(f_q, mload(0x48480)), f_q)) +mstore(0x484c0, mulmod(mload(0x8180), 21846745818185811051373434299876022191132089169516983080959277716660228899818, f_q)) +mstore(0x484e0, addmod(mload(0x18980), sub(f_q, mload(0x484c0)), f_q)) +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x48340), 8066282055787475901673420555035560535710817593291328670948830103998216087188, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x48340), 13821960816051799320572985190221714552837546807124705672749374082577592408429, f_q), f_q), result, f_q) +mstore(296192, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x48340), 19968324678227145013248315861515595301245912644541587902686803196084490696647, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x48340), 2652279421035414460371318391121293595959370598409287323185787737283079651270, f_q), f_q), result, f_q) +mstore(296224, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x48340), 2652279421035414460371318391121293595959370598409287323185787737283079651270, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x48340), 19367074469347227157046979956364450920724362242668588573146737185273452907601, f_q), f_q), result, f_q) +mstore(296256, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x48340), 5728955065969648051880489897163235636379640954457863903141118671545973649876, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x48340), 11131803335553698406238999414095177806538558655198059953539642575164592088996, f_q), f_q), result, f_q) +mstore(296288, result) + } +mstore(0x48580, mulmod(1, mload(0x483a0), f_q)) +mstore(0x485a0, mulmod(mload(0x48580), mload(0x484e0), f_q)) +mstore(0x485c0, mulmod(mload(0x485a0), mload(0x483e0), f_q)) +mstore(0x485e0, mulmod(mload(0x485c0), mload(0x48460), f_q)) +{ + let result := mulmod(mload(0x18980), 1, f_q) +result := addmod(mulmod(mload(0x8180), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) +mstore(296448, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x18a80), 19550482963636032496507824053356571186980560079138601892369352376314767105176, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x18a80), 2337759908203242725738581691900703901567804321277432451328851810261041390441, f_q), f_q), result, f_q) +mstore(296480, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x18a80), 6864017523829827661538877064511657693937746400280130103616449492479205074625, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x18a80), 8176406603941074973579828757454043030101025654304527229739395789558437229636, f_q), f_q), result, f_q) +mstore(296512, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x18a80), 1208363231502528720962640213919841679473696796176395546734070070553011066292, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x18a80), 13927816816077446377946003702584403455282257763096126200719395408961442331222, f_q), f_q), result, f_q) +mstore(296544, result) + } +mstore(0x48680, mulmod(mload(0x485a0), mload(0x484a0), f_q)) +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x8180), 41497053653464170872971445381252897416275230899051262738926469915579595800, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x8180), 21846745818185811051373434299876022191132089169516983080959277716660228899817, f_q), f_q), result, f_q) +mstore(296608, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x8180), 21846745818185811051373434299876022191132089169516983080959277716660228899817, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x8180), 17403482309866154457319081818027574193594697552312387954149532974273224407233, f_q), f_q), result, f_q) +mstore(296640, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x8180), 10485848037309899502710951571909765864257865976630408685868620813772001595143, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x8180), 11402394834529375719535454173347509224290498423785625657829583372803806900474, f_q), f_q), result, f_q) +mstore(296672, result) + } +{ + let result := mulmod(mload(0x18980), mulmod(mload(0x8180), 11402394834529375719535454173347509224290498423785625657829583372803806900474, f_q), f_q) +result := addmod(mulmod(mload(0x8180), mulmod(mload(0x8180), 5545166320312543757176643718986770037302882363778492581314708552725780098827, f_q), f_q), result, f_q) +mstore(296704, result) + } +mstore(0x48720, mulmod(mload(0x48580), mload(0x48420), f_q)) +{ + let prod := mload(0x48500) + + prod := mulmod(mload(0x48520), prod, f_q) + mstore(0x48740, prod) + + prod := mulmod(mload(0x48540), prod, f_q) + mstore(0x48760, prod) + + prod := mulmod(mload(0x48560), prod, f_q) + mstore(0x48780, prod) + + prod := mulmod(mload(0x48600), prod, f_q) + mstore(0x487a0, prod) + + prod := mulmod(mload(0x48580), prod, f_q) + mstore(0x487c0, prod) + + prod := mulmod(mload(0x48620), prod, f_q) + mstore(0x487e0, prod) + + prod := mulmod(mload(0x48640), prod, f_q) + mstore(0x48800, prod) + + prod := mulmod(mload(0x48660), prod, f_q) + mstore(0x48820, prod) + + prod := mulmod(mload(0x48680), prod, f_q) + mstore(0x48840, prod) + + prod := mulmod(mload(0x486a0), prod, f_q) + mstore(0x48860, prod) + + prod := mulmod(mload(0x486c0), prod, f_q) + mstore(0x48880, prod) + + prod := mulmod(mload(0x485a0), prod, f_q) + mstore(0x488a0, prod) + + prod := mulmod(mload(0x486e0), prod, f_q) + mstore(0x488c0, prod) + + prod := mulmod(mload(0x48700), prod, f_q) + mstore(0x488e0, prod) + + prod := mulmod(mload(0x48720), prod, f_q) + mstore(0x48900, prod) + + } +mstore(0x48940, 32) +mstore(0x48960, 32) +mstore(0x48980, 32) +mstore(0x489a0, mload(0x48900)) +mstore(0x489c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x489e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x48940, 0xc0, 0x48920, 0x20), 1), success) +{ + + let inv := mload(0x48920) + let v + + v := mload(0x48720) + mstore(296736, mulmod(mload(0x488e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48700) + mstore(296704, mulmod(mload(0x488c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x486e0) + mstore(296672, mulmod(mload(0x488a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x485a0) + mstore(296352, mulmod(mload(0x48880), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x486c0) + mstore(296640, mulmod(mload(0x48860), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x486a0) + mstore(296608, mulmod(mload(0x48840), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48680) + mstore(296576, mulmod(mload(0x48820), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48660) + mstore(296544, mulmod(mload(0x48800), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48640) + mstore(296512, mulmod(mload(0x487e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48620) + mstore(296480, mulmod(mload(0x487c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48580) + mstore(296320, mulmod(mload(0x487a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48600) + mstore(296448, mulmod(mload(0x48780), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48560) + mstore(296288, mulmod(mload(0x48760), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48540) + mstore(296256, mulmod(mload(0x48740), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48520) + mstore(296224, mulmod(mload(0x48500), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x48500, inv) + + } +{ + let result := mload(0x48500) +result := addmod(mload(0x48520), result, f_q) +result := addmod(mload(0x48540), result, f_q) +result := addmod(mload(0x48560), result, f_q) +mstore(297472, result) + } +mstore(0x48a20, mulmod(mload(0x485e0), mload(0x48580), f_q)) +{ + let result := mload(0x48600) +mstore(297536, result) + } +mstore(0x48a60, mulmod(mload(0x485e0), mload(0x48680), f_q)) +{ + let result := mload(0x48620) +result := addmod(mload(0x48640), result, f_q) +result := addmod(mload(0x48660), result, f_q) +mstore(297600, result) + } +mstore(0x48aa0, mulmod(mload(0x485e0), mload(0x485a0), f_q)) +{ + let result := mload(0x486a0) +result := addmod(mload(0x486c0), result, f_q) +mstore(297664, result) + } +mstore(0x48ae0, mulmod(mload(0x485e0), mload(0x48720), f_q)) +{ + let result := mload(0x486e0) +result := addmod(mload(0x48700), result, f_q) +mstore(297728, result) + } +{ + let prod := mload(0x48a00) + + prod := mulmod(mload(0x48a40), prod, f_q) + mstore(0x48b20, prod) + + prod := mulmod(mload(0x48a80), prod, f_q) + mstore(0x48b40, prod) + + prod := mulmod(mload(0x48ac0), prod, f_q) + mstore(0x48b60, prod) + + prod := mulmod(mload(0x48b00), prod, f_q) + mstore(0x48b80, prod) + + } +mstore(0x48bc0, 32) +mstore(0x48be0, 32) +mstore(0x48c00, 32) +mstore(0x48c20, mload(0x48b80)) +mstore(0x48c40, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x48c60, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x48bc0, 0xc0, 0x48ba0, 0x20), 1), success) +{ + + let inv := mload(0x48ba0) + let v + + v := mload(0x48b00) + mstore(297728, mulmod(mload(0x48b60), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48ac0) + mstore(297664, mulmod(mload(0x48b40), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48a80) + mstore(297600, mulmod(mload(0x48b20), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x48a40) + mstore(297536, mulmod(mload(0x48a00), inv, f_q)) + inv := mulmod(v, inv, f_q) + mstore(0x48a00, inv) + + } +mstore(0x48c80, mulmod(mload(0x48a20), mload(0x48a40), f_q)) +mstore(0x48ca0, mulmod(mload(0x48a60), mload(0x48a80), f_q)) +mstore(0x48cc0, mulmod(mload(0x48aa0), mload(0x48ac0), f_q)) +mstore(0x48ce0, mulmod(mload(0x48ae0), mload(0x48b00), f_q)) +mstore(0x48d00, mulmod(mload(0x18880), mload(0x18880), f_q)) +mstore(0x48d20, mulmod(mload(0x48d00), mload(0x18880), f_q)) +mstore(0x48d40, mulmod(mload(0x48d20), mload(0x18880), f_q)) +mstore(0x48d60, mulmod(mload(0x48d40), mload(0x18880), f_q)) +mstore(0x48d80, mulmod(mload(0x48d60), mload(0x18880), f_q)) +mstore(0x48da0, mulmod(mload(0x48d80), mload(0x18880), f_q)) +mstore(0x48dc0, mulmod(mload(0x48da0), mload(0x18880), f_q)) +mstore(0x48de0, mulmod(mload(0x48dc0), mload(0x18880), f_q)) +mstore(0x48e00, mulmod(mload(0x48de0), mload(0x18880), f_q)) +mstore(0x48e20, mulmod(mload(0x48e00), mload(0x18880), f_q)) +mstore(0x48e40, mulmod(mload(0x48e20), mload(0x18880), f_q)) +mstore(0x48e60, mulmod(mload(0x48e40), mload(0x18880), f_q)) +mstore(0x48e80, mulmod(mload(0x48e60), mload(0x18880), f_q)) +mstore(0x48ea0, mulmod(mload(0x48e80), mload(0x18880), f_q)) +mstore(0x48ec0, mulmod(mload(0x48ea0), mload(0x18880), f_q)) +mstore(0x48ee0, mulmod(mload(0x48ec0), mload(0x18880), f_q)) +mstore(0x48f00, mulmod(mload(0x48ee0), mload(0x18880), f_q)) +mstore(0x48f20, mulmod(mload(0x48f00), mload(0x18880), f_q)) +mstore(0x48f40, mulmod(mload(0x48f20), mload(0x18880), f_q)) +mstore(0x48f60, mulmod(mload(0x48f40), mload(0x18880), f_q)) +mstore(0x48f80, mulmod(mload(0x48f60), mload(0x18880), f_q)) +mstore(0x48fa0, mulmod(mload(0x48f80), mload(0x18880), f_q)) +mstore(0x48fc0, mulmod(mload(0x48fa0), mload(0x18880), f_q)) +mstore(0x48fe0, mulmod(mload(0x48fc0), mload(0x18880), f_q)) +mstore(0x49000, mulmod(mload(0x48fe0), mload(0x18880), f_q)) +mstore(0x49020, mulmod(mload(0x49000), mload(0x18880), f_q)) +mstore(0x49040, mulmod(mload(0x49020), mload(0x18880), f_q)) +mstore(0x49060, mulmod(mload(0x49040), mload(0x18880), f_q)) +mstore(0x49080, mulmod(mload(0x49060), mload(0x18880), f_q)) +mstore(0x490a0, mulmod(mload(0x49080), mload(0x18880), f_q)) +mstore(0x490c0, mulmod(mload(0x490a0), mload(0x18880), f_q)) +mstore(0x490e0, mulmod(mload(0x490c0), mload(0x18880), f_q)) +mstore(0x49100, mulmod(mload(0x490e0), mload(0x18880), f_q)) +mstore(0x49120, mulmod(mload(0x49100), mload(0x18880), f_q)) +mstore(0x49140, mulmod(mload(0x49120), mload(0x18880), f_q)) +mstore(0x49160, mulmod(mload(0x49140), mload(0x18880), f_q)) +mstore(0x49180, mulmod(mload(0x49160), mload(0x18880), f_q)) +mstore(0x491a0, mulmod(mload(0x49180), mload(0x18880), f_q)) +mstore(0x491c0, mulmod(mload(0x491a0), mload(0x18880), f_q)) +mstore(0x491e0, mulmod(mload(0x491c0), mload(0x18880), f_q)) +mstore(0x49200, mulmod(mload(0x491e0), mload(0x18880), f_q)) +mstore(0x49220, mulmod(mload(0x49200), mload(0x18880), f_q)) +mstore(0x49240, mulmod(mload(0x49220), mload(0x18880), f_q)) +mstore(0x49260, mulmod(mload(0x49240), mload(0x18880), f_q)) +mstore(0x49280, mulmod(mload(0x49260), mload(0x18880), f_q)) +mstore(0x492a0, mulmod(mload(0x49280), mload(0x18880), f_q)) +mstore(0x492c0, mulmod(mload(0x492a0), mload(0x18880), f_q)) +mstore(0x492e0, mulmod(mload(0x492c0), mload(0x18880), f_q)) +mstore(0x49300, mulmod(mload(0x492e0), mload(0x18880), f_q)) +mstore(0x49320, mulmod(mload(0x49300), mload(0x18880), f_q)) +mstore(0x49340, mulmod(mload(0x49320), mload(0x18880), f_q)) +mstore(0x49360, mulmod(mload(0x49340), mload(0x18880), f_q)) +mstore(0x49380, mulmod(mload(0x49360), mload(0x18880), f_q)) +mstore(0x493a0, mulmod(mload(0x49380), mload(0x18880), f_q)) +mstore(0x493c0, mulmod(mload(0x493a0), mload(0x18880), f_q)) +mstore(0x493e0, mulmod(mload(0x493c0), mload(0x18880), f_q)) +mstore(0x49400, mulmod(mload(0x493e0), mload(0x18880), f_q)) +mstore(0x49420, mulmod(mload(0x49400), mload(0x18880), f_q)) +mstore(0x49440, mulmod(mload(0x49420), mload(0x18880), f_q)) +mstore(0x49460, mulmod(mload(0x49440), mload(0x18880), f_q)) +mstore(0x49480, mulmod(mload(0x49460), mload(0x18880), f_q)) +mstore(0x494a0, mulmod(mload(0x49480), mload(0x18880), f_q)) +mstore(0x494c0, mulmod(mload(0x494a0), mload(0x18880), f_q)) +mstore(0x494e0, mulmod(mload(0x494c0), mload(0x18880), f_q)) +mstore(0x49500, mulmod(mload(0x494e0), mload(0x18880), f_q)) +mstore(0x49520, mulmod(mload(0x49500), mload(0x18880), f_q)) +mstore(0x49540, mulmod(mload(0x49520), mload(0x18880), f_q)) +mstore(0x49560, mulmod(mload(0x49540), mload(0x18880), f_q)) +mstore(0x49580, mulmod(mload(0x49560), mload(0x18880), f_q)) +mstore(0x495a0, mulmod(mload(0x49580), mload(0x18880), f_q)) +mstore(0x495c0, mulmod(mload(0x495a0), mload(0x18880), f_q)) +mstore(0x495e0, mulmod(mload(0x495c0), mload(0x18880), f_q)) +mstore(0x49600, mulmod(mload(0x495e0), mload(0x18880), f_q)) +mstore(0x49620, mulmod(mload(0x49600), mload(0x18880), f_q)) +mstore(0x49640, mulmod(mload(0x49620), mload(0x18880), f_q)) +mstore(0x49660, mulmod(mload(0x49640), mload(0x18880), f_q)) +mstore(0x49680, mulmod(mload(0x49660), mload(0x18880), f_q)) +mstore(0x496a0, mulmod(mload(0x49680), mload(0x18880), f_q)) +mstore(0x496c0, mulmod(mload(0x496a0), mload(0x18880), f_q)) +mstore(0x496e0, mulmod(mload(0x496c0), mload(0x18880), f_q)) +mstore(0x49700, mulmod(mload(0x496e0), mload(0x18880), f_q)) +mstore(0x49720, mulmod(mload(0x49700), mload(0x18880), f_q)) +mstore(0x49740, mulmod(mload(0x49720), mload(0x18880), f_q)) +mstore(0x49760, mulmod(mload(0x49740), mload(0x18880), f_q)) +mstore(0x49780, mulmod(mload(0x49760), mload(0x18880), f_q)) +mstore(0x497a0, mulmod(mload(0x49780), mload(0x18880), f_q)) +mstore(0x497c0, mulmod(mload(0x497a0), mload(0x18880), f_q)) +mstore(0x497e0, mulmod(mload(0x497c0), mload(0x18880), f_q)) +mstore(0x49800, mulmod(mload(0x497e0), mload(0x18880), f_q)) +mstore(0x49820, mulmod(mload(0x49800), mload(0x18880), f_q)) +mstore(0x49840, mulmod(mload(0x49820), mload(0x18880), f_q)) +mstore(0x49860, mulmod(mload(0x49840), mload(0x18880), f_q)) +mstore(0x49880, mulmod(mload(0x49860), mload(0x18880), f_q)) +mstore(0x498a0, mulmod(mload(0x49880), mload(0x18880), f_q)) +mstore(0x498c0, mulmod(mload(0x498a0), mload(0x18880), f_q)) +mstore(0x498e0, mulmod(mload(0x498c0), mload(0x18880), f_q)) +mstore(0x49900, mulmod(mload(0x498e0), mload(0x18880), f_q)) +mstore(0x49920, mulmod(mload(0x49900), mload(0x18880), f_q)) +mstore(0x49940, mulmod(mload(0x49920), mload(0x18880), f_q)) +mstore(0x49960, mulmod(mload(0x49940), mload(0x18880), f_q)) +mstore(0x49980, mulmod(mload(0x49960), mload(0x18880), f_q)) +mstore(0x499a0, mulmod(mload(0x49980), mload(0x18880), f_q)) +mstore(0x499c0, mulmod(mload(0x499a0), mload(0x18880), f_q)) +mstore(0x499e0, mulmod(mload(0x499c0), mload(0x18880), f_q)) +mstore(0x49a00, mulmod(mload(0x499e0), mload(0x18880), f_q)) +mstore(0x49a20, mulmod(mload(0x49a00), mload(0x18880), f_q)) +mstore(0x49a40, mulmod(mload(0x49a20), mload(0x18880), f_q)) +mstore(0x49a60, mulmod(mload(0x49a40), mload(0x18880), f_q)) +mstore(0x49a80, mulmod(mload(0x49a60), mload(0x18880), f_q)) +mstore(0x49aa0, mulmod(mload(0x49a80), mload(0x18880), f_q)) +mstore(0x49ac0, mulmod(mload(0x49aa0), mload(0x18880), f_q)) +mstore(0x49ae0, mulmod(mload(0x49ac0), mload(0x18880), f_q)) +mstore(0x49b00, mulmod(mload(0x49ae0), mload(0x18880), f_q)) +mstore(0x49b20, mulmod(mload(0x49b00), mload(0x18880), f_q)) +mstore(0x49b40, mulmod(mload(0x49b20), mload(0x18880), f_q)) +mstore(0x49b60, mulmod(mload(0x49b40), mload(0x18880), f_q)) +mstore(0x49b80, mulmod(mload(0x49b60), mload(0x18880), f_q)) +mstore(0x49ba0, mulmod(mload(0x49b80), mload(0x18880), f_q)) +mstore(0x49bc0, mulmod(mload(0x49ba0), mload(0x18880), f_q)) +mstore(0x49be0, mulmod(mload(0x49bc0), mload(0x18880), f_q)) +mstore(0x49c00, mulmod(mload(0x49be0), mload(0x18880), f_q)) +mstore(0x49c20, mulmod(mload(0x49c00), mload(0x18880), f_q)) +mstore(0x49c40, mulmod(mload(0x49c20), mload(0x18880), f_q)) +mstore(0x49c60, mulmod(mload(0x49c40), mload(0x18880), f_q)) +mstore(0x49c80, mulmod(mload(0x49c60), mload(0x18880), f_q)) +mstore(0x49ca0, mulmod(mload(0x49c80), mload(0x18880), f_q)) +mstore(0x49cc0, mulmod(mload(0x49ca0), mload(0x18880), f_q)) +mstore(0x49ce0, mulmod(mload(0x49cc0), mload(0x18880), f_q)) +mstore(0x49d00, mulmod(mload(0x49ce0), mload(0x18880), f_q)) +mstore(0x49d20, mulmod(mload(0x49d00), mload(0x18880), f_q)) +mstore(0x49d40, mulmod(mload(0x49d20), mload(0x18880), f_q)) +mstore(0x49d60, mulmod(mload(0x49d40), mload(0x18880), f_q)) +mstore(0x49d80, mulmod(mload(0x49d60), mload(0x18880), f_q)) +mstore(0x49da0, mulmod(mload(0x49d80), mload(0x18880), f_q)) +mstore(0x49dc0, mulmod(mload(0x49da0), mload(0x18880), f_q)) +mstore(0x49de0, mulmod(mload(0x49dc0), mload(0x18880), f_q)) +mstore(0x49e00, mulmod(mload(0x49de0), mload(0x18880), f_q)) +mstore(0x49e20, mulmod(mload(0x49e00), mload(0x18880), f_q)) +mstore(0x49e40, mulmod(mload(0x49e20), mload(0x18880), f_q)) +mstore(0x49e60, mulmod(mload(0x49e40), mload(0x18880), f_q)) +mstore(0x49e80, mulmod(mload(0x49e60), mload(0x18880), f_q)) +mstore(0x49ea0, mulmod(mload(0x49e80), mload(0x18880), f_q)) +mstore(0x49ec0, mulmod(mload(0x49ea0), mload(0x18880), f_q)) +mstore(0x49ee0, mulmod(mload(0x49ec0), mload(0x18880), f_q)) +mstore(0x49f00, mulmod(mload(0x49ee0), mload(0x18880), f_q)) +mstore(0x49f20, mulmod(mload(0x49f00), mload(0x18880), f_q)) +mstore(0x49f40, mulmod(mload(0x49f20), mload(0x18880), f_q)) +mstore(0x49f60, mulmod(mload(0x49f40), mload(0x18880), f_q)) +mstore(0x49f80, mulmod(mload(0x49f60), mload(0x18880), f_q)) +mstore(0x49fa0, mulmod(mload(0x49f80), mload(0x18880), f_q)) +mstore(0x49fc0, mulmod(mload(0x49fa0), mload(0x18880), f_q)) +mstore(0x49fe0, mulmod(mload(0x49fc0), mload(0x18880), f_q)) +mstore(0x4a000, mulmod(mload(0x49fe0), mload(0x18880), f_q)) +mstore(0x4a020, mulmod(mload(0x4a000), mload(0x18880), f_q)) +mstore(0x4a040, mulmod(mload(0x4a020), mload(0x18880), f_q)) +mstore(0x4a060, mulmod(mload(0x4a040), mload(0x18880), f_q)) +mstore(0x4a080, mulmod(mload(0x4a060), mload(0x18880), f_q)) +mstore(0x4a0a0, mulmod(mload(0x4a080), mload(0x18880), f_q)) +mstore(0x4a0c0, mulmod(mload(0x4a0a0), mload(0x18880), f_q)) +mstore(0x4a0e0, mulmod(mload(0x4a0c0), mload(0x18880), f_q)) +mstore(0x4a100, mulmod(mload(0x4a0e0), mload(0x18880), f_q)) +mstore(0x4a120, mulmod(mload(0x4a100), mload(0x18880), f_q)) +mstore(0x4a140, mulmod(mload(0x4a120), mload(0x18880), f_q)) +mstore(0x4a160, mulmod(mload(0x4a140), mload(0x18880), f_q)) +mstore(0x4a180, mulmod(mload(0x4a160), mload(0x18880), f_q)) +mstore(0x4a1a0, mulmod(mload(0x4a180), mload(0x18880), f_q)) +mstore(0x4a1c0, mulmod(mload(0x4a1a0), mload(0x18880), f_q)) +mstore(0x4a1e0, mulmod(mload(0x4a1c0), mload(0x18880), f_q)) +mstore(0x4a200, mulmod(mload(0x4a1e0), mload(0x18880), f_q)) +mstore(0x4a220, mulmod(mload(0x4a200), mload(0x18880), f_q)) +mstore(0x4a240, mulmod(mload(0x4a220), mload(0x18880), f_q)) +mstore(0x4a260, mulmod(mload(0x4a240), mload(0x18880), f_q)) +mstore(0x4a280, mulmod(mload(0x4a260), mload(0x18880), f_q)) +mstore(0x4a2a0, mulmod(mload(0x4a280), mload(0x18880), f_q)) +mstore(0x4a2c0, mulmod(mload(0x4a2a0), mload(0x18880), f_q)) +mstore(0x4a2e0, mulmod(mload(0x4a2c0), mload(0x18880), f_q)) +mstore(0x4a300, mulmod(mload(0x4a2e0), mload(0x18880), f_q)) +mstore(0x4a320, mulmod(mload(0x4a300), mload(0x18880), f_q)) +mstore(0x4a340, mulmod(mload(0x4a320), mload(0x18880), f_q)) +mstore(0x4a360, mulmod(mload(0x4a340), mload(0x18880), f_q)) +mstore(0x4a380, mulmod(mload(0x4a360), mload(0x18880), f_q)) +mstore(0x4a3a0, mulmod(mload(0x4a380), mload(0x18880), f_q)) +mstore(0x4a3c0, mulmod(mload(0x4a3a0), mload(0x18880), f_q)) +mstore(0x4a3e0, mulmod(mload(0x4a3c0), mload(0x18880), f_q)) +mstore(0x4a400, mulmod(mload(0x4a3e0), mload(0x18880), f_q)) +mstore(0x4a420, mulmod(mload(0x4a400), mload(0x18880), f_q)) +mstore(0x4a440, mulmod(mload(0x4a420), mload(0x18880), f_q)) +mstore(0x4a460, mulmod(mload(0x4a440), mload(0x18880), f_q)) +mstore(0x4a480, mulmod(mload(0x4a460), mload(0x18880), f_q)) +mstore(0x4a4a0, mulmod(mload(0x4a480), mload(0x18880), f_q)) +mstore(0x4a4c0, mulmod(mload(0x4a4a0), mload(0x18880), f_q)) +mstore(0x4a4e0, mulmod(mload(0x4a4c0), mload(0x18880), f_q)) +mstore(0x4a500, mulmod(mload(0x4a4e0), mload(0x18880), f_q)) +mstore(0x4a520, mulmod(mload(0x4a500), mload(0x18880), f_q)) +mstore(0x4a540, mulmod(mload(0x4a520), mload(0x18880), f_q)) +mstore(0x4a560, mulmod(mload(0x4a540), mload(0x18880), f_q)) +mstore(0x4a580, mulmod(mload(0x4a560), mload(0x18880), f_q)) +mstore(0x4a5a0, mulmod(mload(0x4a580), mload(0x18880), f_q)) +mstore(0x4a5c0, mulmod(mload(0x4a5a0), mload(0x18880), f_q)) +mstore(0x4a5e0, mulmod(mload(0x4a5c0), mload(0x18880), f_q)) +mstore(0x4a600, mulmod(mload(0x4a5e0), mload(0x18880), f_q)) +mstore(0x4a620, mulmod(mload(0x4a600), mload(0x18880), f_q)) +mstore(0x4a640, mulmod(mload(0x4a620), mload(0x18880), f_q)) +mstore(0x4a660, mulmod(mload(0x4a640), mload(0x18880), f_q)) +mstore(0x4a680, mulmod(mload(0x4a660), mload(0x18880), f_q)) +mstore(0x4a6a0, mulmod(mload(0x4a680), mload(0x18880), f_q)) +mstore(0x4a6c0, mulmod(mload(0x4a6a0), mload(0x18880), f_q)) +mstore(0x4a6e0, mulmod(mload(0x4a6c0), mload(0x18880), f_q)) +mstore(0x4a700, mulmod(mload(0x4a6e0), mload(0x18880), f_q)) +mstore(0x4a720, mulmod(mload(0x4a700), mload(0x18880), f_q)) +mstore(0x4a740, mulmod(mload(0x4a720), mload(0x18880), f_q)) +mstore(0x4a760, mulmod(mload(0x4a740), mload(0x18880), f_q)) +mstore(0x4a780, mulmod(mload(0x4a760), mload(0x18880), f_q)) +mstore(0x4a7a0, mulmod(mload(0x4a780), mload(0x18880), f_q)) +mstore(0x4a7c0, mulmod(mload(0x4a7a0), mload(0x18880), f_q)) +mstore(0x4a7e0, mulmod(mload(0x4a7c0), mload(0x18880), f_q)) +mstore(0x4a800, mulmod(mload(0x4a7e0), mload(0x18880), f_q)) +mstore(0x4a820, mulmod(mload(0x4a800), mload(0x18880), f_q)) +mstore(0x4a840, mulmod(mload(0x4a820), mload(0x18880), f_q)) +mstore(0x4a860, mulmod(mload(0x4a840), mload(0x18880), f_q)) +mstore(0x4a880, mulmod(mload(0x4a860), mload(0x18880), f_q)) +mstore(0x4a8a0, mulmod(mload(0x4a880), mload(0x18880), f_q)) +mstore(0x4a8c0, mulmod(mload(0x4a8a0), mload(0x18880), f_q)) +mstore(0x4a8e0, mulmod(mload(0x4a8c0), mload(0x18880), f_q)) +mstore(0x4a900, mulmod(mload(0x4a8e0), mload(0x18880), f_q)) +mstore(0x4a920, mulmod(mload(0x4a900), mload(0x18880), f_q)) +mstore(0x4a940, mulmod(mload(0x4a920), mload(0x18880), f_q)) +mstore(0x4a960, mulmod(mload(0x4a940), mload(0x18880), f_q)) +mstore(0x4a980, mulmod(mload(0x4a960), mload(0x18880), f_q)) +mstore(0x4a9a0, mulmod(mload(0x4a980), mload(0x18880), f_q)) +mstore(0x4a9c0, mulmod(mload(0x4a9a0), mload(0x18880), f_q)) +mstore(0x4a9e0, mulmod(mload(0x4a9c0), mload(0x18880), f_q)) +mstore(0x4aa00, mulmod(mload(0x4a9e0), mload(0x18880), f_q)) +mstore(0x4aa20, mulmod(mload(0x4aa00), mload(0x18880), f_q)) +mstore(0x4aa40, mulmod(mload(0x4aa20), mload(0x18880), f_q)) +mstore(0x4aa60, mulmod(mload(0x4aa40), mload(0x18880), f_q)) +mstore(0x4aa80, mulmod(mload(0x4aa60), mload(0x18880), f_q)) +mstore(0x4aaa0, mulmod(mload(0x4aa80), mload(0x18880), f_q)) +mstore(0x4aac0, mulmod(mload(0x4aaa0), mload(0x18880), f_q)) +mstore(0x4aae0, mulmod(mload(0x4aac0), mload(0x18880), f_q)) +mstore(0x4ab00, mulmod(mload(0x4aae0), mload(0x18880), f_q)) +mstore(0x4ab20, mulmod(mload(0x4ab00), mload(0x18880), f_q)) +mstore(0x4ab40, mulmod(mload(0x4ab20), mload(0x18880), f_q)) +mstore(0x4ab60, mulmod(mload(0x4ab40), mload(0x18880), f_q)) +mstore(0x4ab80, mulmod(mload(0x4ab60), mload(0x18880), f_q)) +mstore(0x4aba0, mulmod(mload(0x4ab80), mload(0x18880), f_q)) +mstore(0x4abc0, mulmod(mload(0x4aba0), mload(0x18880), f_q)) +mstore(0x4abe0, mulmod(mload(0x4abc0), mload(0x18880), f_q)) +mstore(0x4ac00, mulmod(mload(0x4abe0), mload(0x18880), f_q)) +mstore(0x4ac20, mulmod(mload(0x4ac00), mload(0x18880), f_q)) +mstore(0x4ac40, mulmod(mload(0x4ac20), mload(0x18880), f_q)) +mstore(0x4ac60, mulmod(mload(0x4ac40), mload(0x18880), f_q)) +mstore(0x4ac80, mulmod(mload(0x4ac60), mload(0x18880), f_q)) +mstore(0x4aca0, mulmod(mload(0x4ac80), mload(0x18880), f_q)) +mstore(0x4acc0, mulmod(mload(0x4aca0), mload(0x18880), f_q)) +mstore(0x4ace0, mulmod(mload(0x4acc0), mload(0x18880), f_q)) +mstore(0x4ad00, mulmod(mload(0x4ace0), mload(0x18880), f_q)) +mstore(0x4ad20, mulmod(mload(0x4ad00), mload(0x18880), f_q)) +mstore(0x4ad40, mulmod(mload(0x4ad20), mload(0x18880), f_q)) +mstore(0x4ad60, mulmod(mload(0x4ad40), mload(0x18880), f_q)) +mstore(0x4ad80, mulmod(mload(0x4ad60), mload(0x18880), f_q)) +mstore(0x4ada0, mulmod(mload(0x4ad80), mload(0x18880), f_q)) +mstore(0x4adc0, mulmod(mload(0x4ada0), mload(0x18880), f_q)) +mstore(0x4ade0, mulmod(mload(0x4adc0), mload(0x18880), f_q)) +mstore(0x4ae00, mulmod(mload(0x4ade0), mload(0x18880), f_q)) +mstore(0x4ae20, mulmod(mload(0x4ae00), mload(0x18880), f_q)) +mstore(0x4ae40, mulmod(mload(0x4ae20), mload(0x18880), f_q)) +mstore(0x4ae60, mulmod(mload(0x4ae40), mload(0x18880), f_q)) +mstore(0x4ae80, mulmod(mload(0x4ae60), mload(0x18880), f_q)) +mstore(0x4aea0, mulmod(mload(0x4ae80), mload(0x18880), f_q)) +mstore(0x4aec0, mulmod(mload(0x4aea0), mload(0x18880), f_q)) +mstore(0x4aee0, mulmod(mload(0x4aec0), mload(0x18880), f_q)) +mstore(0x4af00, mulmod(mload(0x4aee0), mload(0x18880), f_q)) +mstore(0x4af20, mulmod(mload(0x4af00), mload(0x18880), f_q)) +mstore(0x4af40, mulmod(mload(0x4af20), mload(0x18880), f_q)) +mstore(0x4af60, mulmod(mload(0x4af40), mload(0x18880), f_q)) +mstore(0x4af80, mulmod(mload(0x4af60), mload(0x18880), f_q)) +mstore(0x4afa0, mulmod(mload(0x4af80), mload(0x18880), f_q)) +mstore(0x4afc0, mulmod(mload(0x4afa0), mload(0x18880), f_q)) +mstore(0x4afe0, mulmod(mload(0x4afc0), mload(0x18880), f_q)) +mstore(0x4b000, mulmod(mload(0x4afe0), mload(0x18880), f_q)) +mstore(0x4b020, mulmod(mload(0x4b000), mload(0x18880), f_q)) +mstore(0x4b040, mulmod(mload(0x4b020), mload(0x18880), f_q)) +mstore(0x4b060, mulmod(mload(0x4b040), mload(0x18880), f_q)) +mstore(0x4b080, mulmod(mload(0x4b060), mload(0x18880), f_q)) +mstore(0x4b0a0, mulmod(mload(0x4b080), mload(0x18880), f_q)) +mstore(0x4b0c0, mulmod(mload(0x4b0a0), mload(0x18880), f_q)) +mstore(0x4b0e0, mulmod(mload(0x4b0c0), mload(0x18880), f_q)) +mstore(0x4b100, mulmod(mload(0x4b0e0), mload(0x18880), f_q)) +mstore(0x4b120, mulmod(mload(0x4b100), mload(0x18880), f_q)) +mstore(0x4b140, mulmod(mload(0x4b120), mload(0x18880), f_q)) +mstore(0x4b160, mulmod(mload(0x4b140), mload(0x18880), f_q)) +mstore(0x4b180, mulmod(mload(0x4b160), mload(0x18880), f_q)) +mstore(0x4b1a0, mulmod(mload(0x4b180), mload(0x18880), f_q)) +mstore(0x4b1c0, mulmod(mload(0x4b1a0), mload(0x18880), f_q)) +mstore(0x4b1e0, mulmod(mload(0x4b1c0), mload(0x18880), f_q)) +mstore(0x4b200, mulmod(mload(0x4b1e0), mload(0x18880), f_q)) +mstore(0x4b220, mulmod(mload(0x4b200), mload(0x18880), f_q)) +mstore(0x4b240, mulmod(mload(0x4b220), mload(0x18880), f_q)) +mstore(0x4b260, mulmod(mload(0x4b240), mload(0x18880), f_q)) +mstore(0x4b280, mulmod(mload(0x4b260), mload(0x18880), f_q)) +mstore(0x4b2a0, mulmod(mload(0x4b280), mload(0x18880), f_q)) +mstore(0x4b2c0, mulmod(mload(0x4b2a0), mload(0x18880), f_q)) +mstore(0x4b2e0, mulmod(mload(0x4b2c0), mload(0x18880), f_q)) +mstore(0x4b300, mulmod(mload(0x4b2e0), mload(0x18880), f_q)) +mstore(0x4b320, mulmod(mload(0x4b300), mload(0x18880), f_q)) +mstore(0x4b340, mulmod(mload(0x4b320), mload(0x18880), f_q)) +mstore(0x4b360, mulmod(mload(0x4b340), mload(0x18880), f_q)) +mstore(0x4b380, mulmod(mload(0x4b360), mload(0x18880), f_q)) +mstore(0x4b3a0, mulmod(mload(0x4b380), mload(0x18880), f_q)) +mstore(0x4b3c0, mulmod(mload(0x4b3a0), mload(0x18880), f_q)) +mstore(0x4b3e0, mulmod(mload(0x4b3c0), mload(0x18880), f_q)) +mstore(0x4b400, mulmod(mload(0x4b3e0), mload(0x18880), f_q)) +mstore(0x4b420, mulmod(mload(0x4b400), mload(0x18880), f_q)) +mstore(0x4b440, mulmod(mload(0x4b420), mload(0x18880), f_q)) +mstore(0x4b460, mulmod(mload(0x4b440), mload(0x18880), f_q)) +mstore(0x4b480, mulmod(mload(0x4b460), mload(0x18880), f_q)) +mstore(0x4b4a0, mulmod(mload(0x4b480), mload(0x18880), f_q)) +mstore(0x4b4c0, mulmod(mload(0x4b4a0), mload(0x18880), f_q)) +mstore(0x4b4e0, mulmod(mload(0x4b4c0), mload(0x18880), f_q)) +mstore(0x4b500, mulmod(mload(0x4b4e0), mload(0x18880), f_q)) +mstore(0x4b520, mulmod(mload(0x4b500), mload(0x18880), f_q)) +mstore(0x4b540, mulmod(mload(0x4b520), mload(0x18880), f_q)) +mstore(0x4b560, mulmod(mload(0x4b540), mload(0x18880), f_q)) +mstore(0x4b580, mulmod(mload(0x4b560), mload(0x18880), f_q)) +mstore(0x4b5a0, mulmod(mload(0x4b580), mload(0x18880), f_q)) +mstore(0x4b5c0, mulmod(mload(0x4b5a0), mload(0x18880), f_q)) +mstore(0x4b5e0, mulmod(mload(0x4b5c0), mload(0x18880), f_q)) +mstore(0x4b600, mulmod(mload(0x4b5e0), mload(0x18880), f_q)) +mstore(0x4b620, mulmod(mload(0x4b600), mload(0x18880), f_q)) +mstore(0x4b640, mulmod(mload(0x4b620), mload(0x18880), f_q)) +mstore(0x4b660, mulmod(mload(0x4b640), mload(0x18880), f_q)) +mstore(0x4b680, mulmod(mload(0x4b660), mload(0x18880), f_q)) +mstore(0x4b6a0, mulmod(mload(0x4b680), mload(0x18880), f_q)) +mstore(0x4b6c0, mulmod(mload(0x4b6a0), mload(0x18880), f_q)) +mstore(0x4b6e0, mulmod(mload(0x4b6c0), mload(0x18880), f_q)) +mstore(0x4b700, mulmod(mload(0x4b6e0), mload(0x18880), f_q)) +mstore(0x4b720, mulmod(mload(0x4b700), mload(0x18880), f_q)) +mstore(0x4b740, mulmod(mload(0x4b720), mload(0x18880), f_q)) +mstore(0x4b760, mulmod(mload(0x4b740), mload(0x18880), f_q)) +mstore(0x4b780, mulmod(mload(0x4b760), mload(0x18880), f_q)) +mstore(0x4b7a0, mulmod(mload(0x4b780), mload(0x18880), f_q)) +mstore(0x4b7c0, mulmod(mload(0x4b7a0), mload(0x18880), f_q)) +mstore(0x4b7e0, mulmod(mload(0x4b7c0), mload(0x18880), f_q)) +mstore(0x4b800, mulmod(mload(0x4b7e0), mload(0x18880), f_q)) +mstore(0x4b820, mulmod(mload(0x4b800), mload(0x18880), f_q)) +mstore(0x4b840, mulmod(mload(0x4b820), mload(0x18880), f_q)) +mstore(0x4b860, mulmod(mload(0x4b840), mload(0x18880), f_q)) +mstore(0x4b880, mulmod(mload(0x4b860), mload(0x18880), f_q)) +mstore(0x4b8a0, mulmod(mload(0x4b880), mload(0x18880), f_q)) +mstore(0x4b8c0, mulmod(mload(0x4b8a0), mload(0x18880), f_q)) +mstore(0x4b8e0, mulmod(mload(0x4b8c0), mload(0x18880), f_q)) +mstore(0x4b900, mulmod(mload(0x4b8e0), mload(0x18880), f_q)) +mstore(0x4b920, mulmod(mload(0x4b900), mload(0x18880), f_q)) +mstore(0x4b940, mulmod(mload(0x4b920), mload(0x18880), f_q)) +mstore(0x4b960, mulmod(mload(0x4b940), mload(0x18880), f_q)) +mstore(0x4b980, mulmod(mload(0x4b960), mload(0x18880), f_q)) +mstore(0x4b9a0, mulmod(mload(0x4b980), mload(0x18880), f_q)) +mstore(0x4b9c0, mulmod(mload(0x4b9a0), mload(0x18880), f_q)) +mstore(0x4b9e0, mulmod(mload(0x4b9c0), mload(0x18880), f_q)) +mstore(0x4ba00, mulmod(mload(0x4b9e0), mload(0x18880), f_q)) +mstore(0x4ba20, mulmod(mload(0x4ba00), mload(0x18880), f_q)) +mstore(0x4ba40, mulmod(mload(0x4ba20), mload(0x18880), f_q)) +mstore(0x4ba60, mulmod(mload(0x4ba40), mload(0x18880), f_q)) +mstore(0x4ba80, mulmod(mload(0x4ba60), mload(0x18880), f_q)) +mstore(0x4baa0, mulmod(mload(0x4ba80), mload(0x18880), f_q)) +mstore(0x4bac0, mulmod(mload(0x4baa0), mload(0x18880), f_q)) +mstore(0x4bae0, mulmod(mload(0x4bac0), mload(0x18880), f_q)) +mstore(0x4bb00, mulmod(mload(0x4bae0), mload(0x18880), f_q)) +mstore(0x4bb20, mulmod(mload(0x4bb00), mload(0x18880), f_q)) +mstore(0x4bb40, mulmod(mload(0x4bb20), mload(0x18880), f_q)) +mstore(0x4bb60, mulmod(mload(0x4bb40), mload(0x18880), f_q)) +mstore(0x4bb80, mulmod(mload(0x4bb60), mload(0x18880), f_q)) +mstore(0x4bba0, mulmod(mload(0x4bb80), mload(0x18880), f_q)) +mstore(0x4bbc0, mulmod(mload(0x4bba0), mload(0x18880), f_q)) +mstore(0x4bbe0, mulmod(mload(0x4bbc0), mload(0x18880), f_q)) +mstore(0x4bc00, mulmod(mload(0x4bbe0), mload(0x18880), f_q)) +mstore(0x4bc20, mulmod(mload(0x4bc00), mload(0x18880), f_q)) +mstore(0x4bc40, mulmod(mload(0x4bc20), mload(0x18880), f_q)) +mstore(0x4bc60, mulmod(mload(0x4bc40), mload(0x18880), f_q)) +mstore(0x4bc80, mulmod(mload(0x4bc60), mload(0x18880), f_q)) +mstore(0x4bca0, mulmod(mload(0x4bc80), mload(0x18880), f_q)) +mstore(0x4bcc0, mulmod(mload(0x4bca0), mload(0x18880), f_q)) +mstore(0x4bce0, mulmod(mload(0x4bcc0), mload(0x18880), f_q)) +mstore(0x4bd00, mulmod(mload(0x4bce0), mload(0x18880), f_q)) +mstore(0x4bd20, mulmod(mload(0x4bd00), mload(0x18880), f_q)) +mstore(0x4bd40, mulmod(mload(0x4bd20), mload(0x18880), f_q)) +mstore(0x4bd60, mulmod(mload(0x4bd40), mload(0x18880), f_q)) +mstore(0x4bd80, mulmod(mload(0x4bd60), mload(0x18880), f_q)) +mstore(0x4bda0, mulmod(mload(0x4bd80), mload(0x18880), f_q)) +mstore(0x4bdc0, mulmod(mload(0x4bda0), mload(0x18880), f_q)) +mstore(0x4bde0, mulmod(mload(0x4bdc0), mload(0x18880), f_q)) +mstore(0x4be00, mulmod(mload(0x4bde0), mload(0x18880), f_q)) +mstore(0x4be20, mulmod(mload(0x4be00), mload(0x18880), f_q)) +mstore(0x4be40, mulmod(mload(0x4be20), mload(0x18880), f_q)) +mstore(0x4be60, mulmod(mload(0x4be40), mload(0x18880), f_q)) +mstore(0x4be80, mulmod(mload(0x4be60), mload(0x18880), f_q)) +mstore(0x4bea0, mulmod(mload(0x4be80), mload(0x18880), f_q)) +mstore(0x4bec0, mulmod(mload(0x4bea0), mload(0x18880), f_q)) +mstore(0x4bee0, mulmod(mload(0x4bec0), mload(0x18880), f_q)) +mstore(0x4bf00, mulmod(mload(0x4bee0), mload(0x18880), f_q)) +mstore(0x4bf20, mulmod(mload(0x4bf00), mload(0x18880), f_q)) +mstore(0x4bf40, mulmod(mload(0x4bf20), mload(0x18880), f_q)) +mstore(0x4bf60, mulmod(mload(0x4bf40), mload(0x18880), f_q)) +mstore(0x4bf80, mulmod(mload(0x4bf60), mload(0x18880), f_q)) +mstore(0x4bfa0, mulmod(mload(0x4bf80), mload(0x18880), f_q)) +mstore(0x4bfc0, mulmod(mload(0x4bfa0), mload(0x18880), f_q)) +mstore(0x4bfe0, mulmod(mload(0x4bfc0), mload(0x18880), f_q)) +mstore(0x4c000, mulmod(mload(0x4bfe0), mload(0x18880), f_q)) +mstore(0x4c020, mulmod(mload(0x4c000), mload(0x18880), f_q)) +mstore(0x4c040, mulmod(mload(0x4c020), mload(0x18880), f_q)) +mstore(0x4c060, mulmod(mload(0x4c040), mload(0x18880), f_q)) +mstore(0x4c080, mulmod(mload(0x4c060), mload(0x18880), f_q)) +mstore(0x4c0a0, mulmod(mload(0x4c080), mload(0x18880), f_q)) +mstore(0x4c0c0, mulmod(mload(0x4c0a0), mload(0x18880), f_q)) +mstore(0x4c0e0, mulmod(mload(0x4c0c0), mload(0x18880), f_q)) +mstore(0x4c100, mulmod(mload(0x4c0e0), mload(0x18880), f_q)) +mstore(0x4c120, mulmod(mload(0x4c100), mload(0x18880), f_q)) +mstore(0x4c140, mulmod(mload(0x4c120), mload(0x18880), f_q)) +mstore(0x4c160, mulmod(mload(0x4c140), mload(0x18880), f_q)) +mstore(0x4c180, mulmod(mload(0x4c160), mload(0x18880), f_q)) +mstore(0x4c1a0, mulmod(mload(0x4c180), mload(0x18880), f_q)) +mstore(0x4c1c0, mulmod(mload(0x4c1a0), mload(0x18880), f_q)) +mstore(0x4c1e0, mulmod(mload(0x4c1c0), mload(0x18880), f_q)) +mstore(0x4c200, mulmod(mload(0x4c1e0), mload(0x18880), f_q)) +mstore(0x4c220, mulmod(mload(0x4c200), mload(0x18880), f_q)) +mstore(0x4c240, mulmod(mload(0x4c220), mload(0x18880), f_q)) +mstore(0x4c260, mulmod(mload(0x4c240), mload(0x18880), f_q)) +mstore(0x4c280, mulmod(mload(0x4c260), mload(0x18880), f_q)) +mstore(0x4c2a0, mulmod(mload(0x4c280), mload(0x18880), f_q)) +mstore(0x4c2c0, mulmod(mload(0x4c2a0), mload(0x18880), f_q)) +mstore(0x4c2e0, mulmod(mload(0x4c2c0), mload(0x18880), f_q)) +mstore(0x4c300, mulmod(mload(0x4c2e0), mload(0x18880), f_q)) +mstore(0x4c320, mulmod(mload(0x4c300), mload(0x18880), f_q)) +mstore(0x4c340, mulmod(mload(0x4c320), mload(0x18880), f_q)) +mstore(0x4c360, mulmod(mload(0x4c340), mload(0x18880), f_q)) +mstore(0x4c380, mulmod(mload(0x4c360), mload(0x18880), f_q)) +mstore(0x4c3a0, mulmod(mload(0x4c380), mload(0x18880), f_q)) +mstore(0x4c3c0, mulmod(mload(0x4c3a0), mload(0x18880), f_q)) +mstore(0x4c3e0, mulmod(mload(0x4c3c0), mload(0x18880), f_q)) +mstore(0x4c400, mulmod(mload(0x4c3e0), mload(0x18880), f_q)) +mstore(0x4c420, mulmod(mload(0x4c400), mload(0x18880), f_q)) +mstore(0x4c440, mulmod(mload(0x4c420), mload(0x18880), f_q)) +mstore(0x4c460, mulmod(mload(0x4c440), mload(0x18880), f_q)) +mstore(0x4c480, mulmod(mload(0x4c460), mload(0x18880), f_q)) +mstore(0x4c4a0, mulmod(mload(0x4c480), mload(0x18880), f_q)) +mstore(0x4c4c0, mulmod(mload(0x4c4a0), mload(0x18880), f_q)) +mstore(0x4c4e0, mulmod(mload(0x4c4c0), mload(0x18880), f_q)) +mstore(0x4c500, mulmod(mload(0x4c4e0), mload(0x18880), f_q)) +mstore(0x4c520, mulmod(mload(0x4c500), mload(0x18880), f_q)) +mstore(0x4c540, mulmod(mload(0x4c520), mload(0x18880), f_q)) +mstore(0x4c560, mulmod(mload(0x4c540), mload(0x18880), f_q)) +mstore(0x4c580, mulmod(mload(0x4c560), mload(0x18880), f_q)) +mstore(0x4c5a0, mulmod(mload(0x4c580), mload(0x18880), f_q)) +mstore(0x4c5c0, mulmod(mload(0x4c5a0), mload(0x18880), f_q)) +mstore(0x4c5e0, mulmod(mload(0x4c5c0), mload(0x18880), f_q)) +mstore(0x4c600, mulmod(mload(0x4c5e0), mload(0x18880), f_q)) +mstore(0x4c620, mulmod(mload(0x4c600), mload(0x18880), f_q)) +mstore(0x4c640, mulmod(mload(0x4c620), mload(0x18880), f_q)) +mstore(0x4c660, mulmod(mload(0x4c640), mload(0x18880), f_q)) +mstore(0x4c680, mulmod(mload(0x4c660), mload(0x18880), f_q)) +mstore(0x4c6a0, mulmod(mload(0x4c680), mload(0x18880), f_q)) +mstore(0x4c6c0, mulmod(mload(0x4c6a0), mload(0x18880), f_q)) +mstore(0x4c6e0, mulmod(mload(0x4c6c0), mload(0x18880), f_q)) +mstore(0x4c700, mulmod(mload(0x4c6e0), mload(0x18880), f_q)) +mstore(0x4c720, mulmod(mload(0x4c700), mload(0x18880), f_q)) +mstore(0x4c740, mulmod(mload(0x4c720), mload(0x18880), f_q)) +mstore(0x4c760, mulmod(mload(0x4c740), mload(0x18880), f_q)) +mstore(0x4c780, mulmod(mload(0x4c760), mload(0x18880), f_q)) +mstore(0x4c7a0, mulmod(mload(0x4c780), mload(0x18880), f_q)) +mstore(0x4c7c0, mulmod(mload(0x4c7a0), mload(0x18880), f_q)) +mstore(0x4c7e0, mulmod(mload(0x4c7c0), mload(0x18880), f_q)) +mstore(0x4c800, mulmod(mload(0x4c7e0), mload(0x18880), f_q)) +mstore(0x4c820, mulmod(mload(0x4c800), mload(0x18880), f_q)) +mstore(0x4c840, mulmod(mload(0x4c820), mload(0x18880), f_q)) +mstore(0x4c860, mulmod(mload(0x4c840), mload(0x18880), f_q)) +mstore(0x4c880, mulmod(mload(0x4c860), mload(0x18880), f_q)) +mstore(0x4c8a0, mulmod(mload(0x4c880), mload(0x18880), f_q)) +mstore(0x4c8c0, mulmod(mload(0x4c8a0), mload(0x18880), f_q)) +mstore(0x4c8e0, mulmod(mload(0x4c8c0), mload(0x18880), f_q)) +mstore(0x4c900, mulmod(mload(0x4c8e0), mload(0x18880), f_q)) +mstore(0x4c920, mulmod(mload(0x4c900), mload(0x18880), f_q)) +mstore(0x4c940, mulmod(mload(0x4c920), mload(0x18880), f_q)) +mstore(0x4c960, mulmod(mload(0x4c940), mload(0x18880), f_q)) +mstore(0x4c980, mulmod(mload(0x4c960), mload(0x18880), f_q)) +mstore(0x4c9a0, mulmod(mload(0x4c980), mload(0x18880), f_q)) +mstore(0x4c9c0, mulmod(mload(0x4c9a0), mload(0x18880), f_q)) +mstore(0x4c9e0, mulmod(mload(0x4c9c0), mload(0x18880), f_q)) +mstore(0x4ca00, mulmod(mload(0x4c9e0), mload(0x18880), f_q)) +mstore(0x4ca20, mulmod(mload(0x4ca00), mload(0x18880), f_q)) +mstore(0x4ca40, mulmod(mload(0x4ca20), mload(0x18880), f_q)) +mstore(0x4ca60, mulmod(mload(0x4ca40), mload(0x18880), f_q)) +mstore(0x4ca80, mulmod(mload(0x4ca60), mload(0x18880), f_q)) +mstore(0x4caa0, mulmod(mload(0x4ca80), mload(0x18880), f_q)) +mstore(0x4cac0, mulmod(mload(0x4caa0), mload(0x18880), f_q)) +mstore(0x4cae0, mulmod(mload(0x4cac0), mload(0x18880), f_q)) +mstore(0x4cb00, mulmod(mload(0x4cae0), mload(0x18880), f_q)) +mstore(0x4cb20, mulmod(mload(0x4cb00), mload(0x18880), f_q)) +mstore(0x4cb40, mulmod(mload(0x4cb20), mload(0x18880), f_q)) +mstore(0x4cb60, mulmod(mload(0x4cb40), mload(0x18880), f_q)) +mstore(0x4cb80, mulmod(mload(0x4cb60), mload(0x18880), f_q)) +mstore(0x4cba0, mulmod(mload(0x4cb80), mload(0x18880), f_q)) +mstore(0x4cbc0, mulmod(mload(0x4cba0), mload(0x18880), f_q)) +mstore(0x4cbe0, mulmod(mload(0x4cbc0), mload(0x18880), f_q)) +mstore(0x4cc00, mulmod(mload(0x4cbe0), mload(0x18880), f_q)) +mstore(0x4cc20, mulmod(mload(0x4cc00), mload(0x18880), f_q)) +mstore(0x4cc40, mulmod(mload(0x4cc20), mload(0x18880), f_q)) +mstore(0x4cc60, mulmod(mload(0x4cc40), mload(0x18880), f_q)) +mstore(0x4cc80, mulmod(mload(0x4cc60), mload(0x18880), f_q)) +mstore(0x4cca0, mulmod(mload(0x4cc80), mload(0x18880), f_q)) +mstore(0x4ccc0, mulmod(mload(0x4cca0), mload(0x18880), f_q)) +mstore(0x4cce0, mulmod(mload(0x4ccc0), mload(0x18880), f_q)) +mstore(0x4cd00, mulmod(mload(0x4cce0), mload(0x18880), f_q)) +mstore(0x4cd20, mulmod(mload(0x4cd00), mload(0x18880), f_q)) +mstore(0x4cd40, mulmod(mload(0x4cd20), mload(0x18880), f_q)) +mstore(0x4cd60, mulmod(mload(0x4cd40), mload(0x18880), f_q)) +mstore(0x4cd80, mulmod(mload(0x4cd60), mload(0x18880), f_q)) +mstore(0x4cda0, mulmod(mload(0x4cd80), mload(0x18880), f_q)) +mstore(0x4cdc0, mulmod(mload(0x4cda0), mload(0x18880), f_q)) +mstore(0x4cde0, mulmod(mload(0x4cdc0), mload(0x18880), f_q)) +mstore(0x4ce00, mulmod(mload(0x4cde0), mload(0x18880), f_q)) +mstore(0x4ce20, mulmod(mload(0x4ce00), mload(0x18880), f_q)) +mstore(0x4ce40, mulmod(mload(0x4ce20), mload(0x18880), f_q)) +mstore(0x4ce60, mulmod(mload(0x4ce40), mload(0x18880), f_q)) +mstore(0x4ce80, mulmod(mload(0x4ce60), mload(0x18880), f_q)) +mstore(0x4cea0, mulmod(mload(0x4ce80), mload(0x18880), f_q)) +mstore(0x4cec0, mulmod(mload(0x4cea0), mload(0x18880), f_q)) +mstore(0x4cee0, mulmod(mload(0x4cec0), mload(0x18880), f_q)) +mstore(0x4cf00, mulmod(mload(0x4cee0), mload(0x18880), f_q)) +mstore(0x4cf20, mulmod(mload(0x4cf00), mload(0x18880), f_q)) +mstore(0x4cf40, mulmod(mload(0x4cf20), mload(0x18880), f_q)) +mstore(0x4cf60, mulmod(mload(0x4cf40), mload(0x18880), f_q)) +mstore(0x4cf80, mulmod(mload(0x4cf60), mload(0x18880), f_q)) +mstore(0x4cfa0, mulmod(mload(0x4cf80), mload(0x18880), f_q)) +mstore(0x4cfc0, mulmod(mload(0x4cfa0), mload(0x18880), f_q)) +mstore(0x4cfe0, mulmod(mload(0x4cfc0), mload(0x18880), f_q)) +mstore(0x4d000, mulmod(mload(0x4cfe0), mload(0x18880), f_q)) +mstore(0x4d020, mulmod(mload(0x4d000), mload(0x18880), f_q)) +mstore(0x4d040, mulmod(mload(0x4d020), mload(0x18880), f_q)) +mstore(0x4d060, mulmod(mload(0x4d040), mload(0x18880), f_q)) +mstore(0x4d080, mulmod(mload(0x4d060), mload(0x18880), f_q)) +mstore(0x4d0a0, mulmod(mload(0x4d080), mload(0x18880), f_q)) +mstore(0x4d0c0, mulmod(mload(0x4d0a0), mload(0x18880), f_q)) +mstore(0x4d0e0, mulmod(mload(0x4d0c0), mload(0x18880), f_q)) +mstore(0x4d100, mulmod(mload(0x4d0e0), mload(0x18880), f_q)) +mstore(0x4d120, mulmod(mload(0x4d100), mload(0x18880), f_q)) +mstore(0x4d140, mulmod(mload(0x4d120), mload(0x18880), f_q)) +mstore(0x4d160, mulmod(mload(0x4d140), mload(0x18880), f_q)) +mstore(0x4d180, mulmod(mload(0x4d160), mload(0x18880), f_q)) +mstore(0x4d1a0, mulmod(mload(0x4d180), mload(0x18880), f_q)) +mstore(0x4d1c0, mulmod(mload(0x4d1a0), mload(0x18880), f_q)) +mstore(0x4d1e0, mulmod(mload(0x4d1c0), mload(0x18880), f_q)) +mstore(0x4d200, mulmod(mload(0x4d1e0), mload(0x18880), f_q)) +mstore(0x4d220, mulmod(mload(0x4d200), mload(0x18880), f_q)) +mstore(0x4d240, mulmod(mload(0x4d220), mload(0x18880), f_q)) +mstore(0x4d260, mulmod(mload(0x4d240), mload(0x18880), f_q)) +mstore(0x4d280, mulmod(mload(0x4d260), mload(0x18880), f_q)) +mstore(0x4d2a0, mulmod(mload(0x4d280), mload(0x18880), f_q)) +mstore(0x4d2c0, mulmod(mload(0x4d2a0), mload(0x18880), f_q)) +mstore(0x4d2e0, mulmod(mload(0x4d2c0), mload(0x18880), f_q)) +mstore(0x4d300, mulmod(mload(0x4d2e0), mload(0x18880), f_q)) +mstore(0x4d320, mulmod(mload(0x4d300), mload(0x18880), f_q)) +mstore(0x4d340, mulmod(mload(0x4d320), mload(0x18880), f_q)) +mstore(0x4d360, mulmod(mload(0x4d340), mload(0x18880), f_q)) +mstore(0x4d380, mulmod(mload(0x4d360), mload(0x18880), f_q)) +mstore(0x4d3a0, mulmod(mload(0x4d380), mload(0x18880), f_q)) +mstore(0x4d3c0, mulmod(mload(0x4d3a0), mload(0x18880), f_q)) +mstore(0x4d3e0, mulmod(mload(0x4d3c0), mload(0x18880), f_q)) +mstore(0x4d400, mulmod(mload(0x4d3e0), mload(0x18880), f_q)) +mstore(0x4d420, mulmod(mload(0x4d400), mload(0x18880), f_q)) +mstore(0x4d440, mulmod(mload(0x4d420), mload(0x18880), f_q)) +mstore(0x4d460, mulmod(mload(0x4d440), mload(0x18880), f_q)) +mstore(0x4d480, mulmod(mload(0x4d460), mload(0x18880), f_q)) +mstore(0x4d4a0, mulmod(mload(0x4d480), mload(0x18880), f_q)) +mstore(0x4d4c0, mulmod(mload(0x4d4a0), mload(0x18880), f_q)) +mstore(0x4d4e0, mulmod(mload(0x4d4c0), mload(0x18880), f_q)) +mstore(0x4d500, mulmod(mload(0x4d4e0), mload(0x18880), f_q)) +mstore(0x4d520, mulmod(mload(0x4d500), mload(0x18880), f_q)) +mstore(0x4d540, mulmod(mload(0x4d520), mload(0x18880), f_q)) +mstore(0x4d560, mulmod(mload(0x4d540), mload(0x18880), f_q)) +mstore(0x4d580, mulmod(mload(0x4d560), mload(0x18880), f_q)) +mstore(0x4d5a0, mulmod(mload(0x4d580), mload(0x18880), f_q)) +mstore(0x4d5c0, mulmod(mload(0x4d5a0), mload(0x18880), f_q)) +mstore(0x4d5e0, mulmod(mload(0x4d5c0), mload(0x18880), f_q)) +mstore(0x4d600, mulmod(mload(0x4d5e0), mload(0x18880), f_q)) +mstore(0x4d620, mulmod(mload(0x4d600), mload(0x18880), f_q)) +mstore(0x4d640, mulmod(mload(0x188e0), mload(0x188e0), f_q)) +mstore(0x4d660, mulmod(mload(0x4d640), mload(0x188e0), f_q)) +mstore(0x4d680, mulmod(mload(0x4d660), mload(0x188e0), f_q)) +mstore(0x4d6a0, mulmod(mload(0x4d680), mload(0x188e0), f_q)) +{ + let result := mulmod(mload(0x81c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x81e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8220), mload(0x48560), f_q), result, f_q) +mstore(317120, result) + } +mstore(0x4d6e0, mulmod(mload(0x4d6c0), mload(0x48a00), f_q)) +mstore(0x4d700, mulmod(sub(f_q, mload(0x4d6e0)), 1, f_q)) +{ + let result := mulmod(mload(0x8240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x82a0), mload(0x48560), f_q), result, f_q) +mstore(317216, result) + } +mstore(0x4d740, mulmod(mload(0x4d720), mload(0x48a00), f_q)) +mstore(0x4d760, mulmod(sub(f_q, mload(0x4d740)), mload(0x18880), f_q)) +mstore(0x4d780, mulmod(1, mload(0x18880), f_q)) +mstore(0x4d7a0, addmod(mload(0x4d700), mload(0x4d760), f_q)) +{ + let result := mulmod(mload(0x82c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x82e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8320), mload(0x48560), f_q), result, f_q) +mstore(317376, result) + } +mstore(0x4d7e0, mulmod(mload(0x4d7c0), mload(0x48a00), f_q)) +mstore(0x4d800, mulmod(sub(f_q, mload(0x4d7e0)), mload(0x48d00), f_q)) +mstore(0x4d820, mulmod(1, mload(0x48d00), f_q)) +mstore(0x4d840, addmod(mload(0x4d7a0), mload(0x4d800), f_q)) +{ + let result := mulmod(mload(0x8340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x83a0), mload(0x48560), f_q), result, f_q) +mstore(317536, result) + } +mstore(0x4d880, mulmod(mload(0x4d860), mload(0x48a00), f_q)) +mstore(0x4d8a0, mulmod(sub(f_q, mload(0x4d880)), mload(0x48d20), f_q)) +mstore(0x4d8c0, mulmod(1, mload(0x48d20), f_q)) +mstore(0x4d8e0, addmod(mload(0x4d840), mload(0x4d8a0), f_q)) +{ + let result := mulmod(mload(0x83c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x83e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8420), mload(0x48560), f_q), result, f_q) +mstore(317696, result) + } +mstore(0x4d920, mulmod(mload(0x4d900), mload(0x48a00), f_q)) +mstore(0x4d940, mulmod(sub(f_q, mload(0x4d920)), mload(0x48d40), f_q)) +mstore(0x4d960, mulmod(1, mload(0x48d40), f_q)) +mstore(0x4d980, addmod(mload(0x4d8e0), mload(0x4d940), f_q)) +{ + let result := mulmod(mload(0x8440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x84a0), mload(0x48560), f_q), result, f_q) +mstore(317856, result) + } +mstore(0x4d9c0, mulmod(mload(0x4d9a0), mload(0x48a00), f_q)) +mstore(0x4d9e0, mulmod(sub(f_q, mload(0x4d9c0)), mload(0x48d60), f_q)) +mstore(0x4da00, mulmod(1, mload(0x48d60), f_q)) +mstore(0x4da20, addmod(mload(0x4d980), mload(0x4d9e0), f_q)) +{ + let result := mulmod(mload(0x84c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x84e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8520), mload(0x48560), f_q), result, f_q) +mstore(318016, result) + } +mstore(0x4da60, mulmod(mload(0x4da40), mload(0x48a00), f_q)) +mstore(0x4da80, mulmod(sub(f_q, mload(0x4da60)), mload(0x48d80), f_q)) +mstore(0x4daa0, mulmod(1, mload(0x48d80), f_q)) +mstore(0x4dac0, addmod(mload(0x4da20), mload(0x4da80), f_q)) +{ + let result := mulmod(mload(0x8540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x85a0), mload(0x48560), f_q), result, f_q) +mstore(318176, result) + } +mstore(0x4db00, mulmod(mload(0x4dae0), mload(0x48a00), f_q)) +mstore(0x4db20, mulmod(sub(f_q, mload(0x4db00)), mload(0x48da0), f_q)) +mstore(0x4db40, mulmod(1, mload(0x48da0), f_q)) +mstore(0x4db60, addmod(mload(0x4dac0), mload(0x4db20), f_q)) +{ + let result := mulmod(mload(0x85c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x85e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8620), mload(0x48560), f_q), result, f_q) +mstore(318336, result) + } +mstore(0x4dba0, mulmod(mload(0x4db80), mload(0x48a00), f_q)) +mstore(0x4dbc0, mulmod(sub(f_q, mload(0x4dba0)), mload(0x48dc0), f_q)) +mstore(0x4dbe0, mulmod(1, mload(0x48dc0), f_q)) +mstore(0x4dc00, addmod(mload(0x4db60), mload(0x4dbc0), f_q)) +{ + let result := mulmod(mload(0x8640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x86a0), mload(0x48560), f_q), result, f_q) +mstore(318496, result) + } +mstore(0x4dc40, mulmod(mload(0x4dc20), mload(0x48a00), f_q)) +mstore(0x4dc60, mulmod(sub(f_q, mload(0x4dc40)), mload(0x48de0), f_q)) +mstore(0x4dc80, mulmod(1, mload(0x48de0), f_q)) +mstore(0x4dca0, addmod(mload(0x4dc00), mload(0x4dc60), f_q)) +{ + let result := mulmod(mload(0x86c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x86e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8720), mload(0x48560), f_q), result, f_q) +mstore(318656, result) + } +mstore(0x4dce0, mulmod(mload(0x4dcc0), mload(0x48a00), f_q)) +mstore(0x4dd00, mulmod(sub(f_q, mload(0x4dce0)), mload(0x48e00), f_q)) +mstore(0x4dd20, mulmod(1, mload(0x48e00), f_q)) +mstore(0x4dd40, addmod(mload(0x4dca0), mload(0x4dd00), f_q)) +{ + let result := mulmod(mload(0x8740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x87a0), mload(0x48560), f_q), result, f_q) +mstore(318816, result) + } +mstore(0x4dd80, mulmod(mload(0x4dd60), mload(0x48a00), f_q)) +mstore(0x4dda0, mulmod(sub(f_q, mload(0x4dd80)), mload(0x48e20), f_q)) +mstore(0x4ddc0, mulmod(1, mload(0x48e20), f_q)) +mstore(0x4dde0, addmod(mload(0x4dd40), mload(0x4dda0), f_q)) +{ + let result := mulmod(mload(0x87c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x87e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8820), mload(0x48560), f_q), result, f_q) +mstore(318976, result) + } +mstore(0x4de20, mulmod(mload(0x4de00), mload(0x48a00), f_q)) +mstore(0x4de40, mulmod(sub(f_q, mload(0x4de20)), mload(0x48e40), f_q)) +mstore(0x4de60, mulmod(1, mload(0x48e40), f_q)) +mstore(0x4de80, addmod(mload(0x4dde0), mload(0x4de40), f_q)) +{ + let result := mulmod(mload(0x8840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x88a0), mload(0x48560), f_q), result, f_q) +mstore(319136, result) + } +mstore(0x4dec0, mulmod(mload(0x4dea0), mload(0x48a00), f_q)) +mstore(0x4dee0, mulmod(sub(f_q, mload(0x4dec0)), mload(0x48e60), f_q)) +mstore(0x4df00, mulmod(1, mload(0x48e60), f_q)) +mstore(0x4df20, addmod(mload(0x4de80), mload(0x4dee0), f_q)) +{ + let result := mulmod(mload(0x88c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x88e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8920), mload(0x48560), f_q), result, f_q) +mstore(319296, result) + } +mstore(0x4df60, mulmod(mload(0x4df40), mload(0x48a00), f_q)) +mstore(0x4df80, mulmod(sub(f_q, mload(0x4df60)), mload(0x48e80), f_q)) +mstore(0x4dfa0, mulmod(1, mload(0x48e80), f_q)) +mstore(0x4dfc0, addmod(mload(0x4df20), mload(0x4df80), f_q)) +{ + let result := mulmod(mload(0x8940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x89a0), mload(0x48560), f_q), result, f_q) +mstore(319456, result) + } +mstore(0x4e000, mulmod(mload(0x4dfe0), mload(0x48a00), f_q)) +mstore(0x4e020, mulmod(sub(f_q, mload(0x4e000)), mload(0x48ea0), f_q)) +mstore(0x4e040, mulmod(1, mload(0x48ea0), f_q)) +mstore(0x4e060, addmod(mload(0x4dfc0), mload(0x4e020), f_q)) +{ + let result := mulmod(mload(0x89c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x89e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8a00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8a20), mload(0x48560), f_q), result, f_q) +mstore(319616, result) + } +mstore(0x4e0a0, mulmod(mload(0x4e080), mload(0x48a00), f_q)) +mstore(0x4e0c0, mulmod(sub(f_q, mload(0x4e0a0)), mload(0x48ec0), f_q)) +mstore(0x4e0e0, mulmod(1, mload(0x48ec0), f_q)) +mstore(0x4e100, addmod(mload(0x4e060), mload(0x4e0c0), f_q)) +{ + let result := mulmod(mload(0x8a40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8a60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8a80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8aa0), mload(0x48560), f_q), result, f_q) +mstore(319776, result) + } +mstore(0x4e140, mulmod(mload(0x4e120), mload(0x48a00), f_q)) +mstore(0x4e160, mulmod(sub(f_q, mload(0x4e140)), mload(0x48ee0), f_q)) +mstore(0x4e180, mulmod(1, mload(0x48ee0), f_q)) +mstore(0x4e1a0, addmod(mload(0x4e100), mload(0x4e160), f_q)) +{ + let result := mulmod(mload(0x8ac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8ae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8b00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8b20), mload(0x48560), f_q), result, f_q) +mstore(319936, result) + } +mstore(0x4e1e0, mulmod(mload(0x4e1c0), mload(0x48a00), f_q)) +mstore(0x4e200, mulmod(sub(f_q, mload(0x4e1e0)), mload(0x48f00), f_q)) +mstore(0x4e220, mulmod(1, mload(0x48f00), f_q)) +mstore(0x4e240, addmod(mload(0x4e1a0), mload(0x4e200), f_q)) +{ + let result := mulmod(mload(0x8b40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8b60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8b80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8ba0), mload(0x48560), f_q), result, f_q) +mstore(320096, result) + } +mstore(0x4e280, mulmod(mload(0x4e260), mload(0x48a00), f_q)) +mstore(0x4e2a0, mulmod(sub(f_q, mload(0x4e280)), mload(0x48f20), f_q)) +mstore(0x4e2c0, mulmod(1, mload(0x48f20), f_q)) +mstore(0x4e2e0, addmod(mload(0x4e240), mload(0x4e2a0), f_q)) +{ + let result := mulmod(mload(0x8bc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8be0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8c00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8c20), mload(0x48560), f_q), result, f_q) +mstore(320256, result) + } +mstore(0x4e320, mulmod(mload(0x4e300), mload(0x48a00), f_q)) +mstore(0x4e340, mulmod(sub(f_q, mload(0x4e320)), mload(0x48f40), f_q)) +mstore(0x4e360, mulmod(1, mload(0x48f40), f_q)) +mstore(0x4e380, addmod(mload(0x4e2e0), mload(0x4e340), f_q)) +{ + let result := mulmod(mload(0x8c40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8c60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8c80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8ca0), mload(0x48560), f_q), result, f_q) +mstore(320416, result) + } +mstore(0x4e3c0, mulmod(mload(0x4e3a0), mload(0x48a00), f_q)) +mstore(0x4e3e0, mulmod(sub(f_q, mload(0x4e3c0)), mload(0x48f60), f_q)) +mstore(0x4e400, mulmod(1, mload(0x48f60), f_q)) +mstore(0x4e420, addmod(mload(0x4e380), mload(0x4e3e0), f_q)) +{ + let result := mulmod(mload(0x8cc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8ce0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8d00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8d20), mload(0x48560), f_q), result, f_q) +mstore(320576, result) + } +mstore(0x4e460, mulmod(mload(0x4e440), mload(0x48a00), f_q)) +mstore(0x4e480, mulmod(sub(f_q, mload(0x4e460)), mload(0x48f80), f_q)) +mstore(0x4e4a0, mulmod(1, mload(0x48f80), f_q)) +mstore(0x4e4c0, addmod(mload(0x4e420), mload(0x4e480), f_q)) +{ + let result := mulmod(mload(0x8d40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8d60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8d80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8da0), mload(0x48560), f_q), result, f_q) +mstore(320736, result) + } +mstore(0x4e500, mulmod(mload(0x4e4e0), mload(0x48a00), f_q)) +mstore(0x4e520, mulmod(sub(f_q, mload(0x4e500)), mload(0x48fa0), f_q)) +mstore(0x4e540, mulmod(1, mload(0x48fa0), f_q)) +mstore(0x4e560, addmod(mload(0x4e4c0), mload(0x4e520), f_q)) +{ + let result := mulmod(mload(0x8dc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8de0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8e00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8e20), mload(0x48560), f_q), result, f_q) +mstore(320896, result) + } +mstore(0x4e5a0, mulmod(mload(0x4e580), mload(0x48a00), f_q)) +mstore(0x4e5c0, mulmod(sub(f_q, mload(0x4e5a0)), mload(0x48fc0), f_q)) +mstore(0x4e5e0, mulmod(1, mload(0x48fc0), f_q)) +mstore(0x4e600, addmod(mload(0x4e560), mload(0x4e5c0), f_q)) +{ + let result := mulmod(mload(0x8e40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8e60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8e80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8ea0), mload(0x48560), f_q), result, f_q) +mstore(321056, result) + } +mstore(0x4e640, mulmod(mload(0x4e620), mload(0x48a00), f_q)) +mstore(0x4e660, mulmod(sub(f_q, mload(0x4e640)), mload(0x48fe0), f_q)) +mstore(0x4e680, mulmod(1, mload(0x48fe0), f_q)) +mstore(0x4e6a0, addmod(mload(0x4e600), mload(0x4e660), f_q)) +{ + let result := mulmod(mload(0x8ec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8ee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8f00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8f20), mload(0x48560), f_q), result, f_q) +mstore(321216, result) + } +mstore(0x4e6e0, mulmod(mload(0x4e6c0), mload(0x48a00), f_q)) +mstore(0x4e700, mulmod(sub(f_q, mload(0x4e6e0)), mload(0x49000), f_q)) +mstore(0x4e720, mulmod(1, mload(0x49000), f_q)) +mstore(0x4e740, addmod(mload(0x4e6a0), mload(0x4e700), f_q)) +{ + let result := mulmod(mload(0x8f40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8f60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x8f80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x8fa0), mload(0x48560), f_q), result, f_q) +mstore(321376, result) + } +mstore(0x4e780, mulmod(mload(0x4e760), mload(0x48a00), f_q)) +mstore(0x4e7a0, mulmod(sub(f_q, mload(0x4e780)), mload(0x49020), f_q)) +mstore(0x4e7c0, mulmod(1, mload(0x49020), f_q)) +mstore(0x4e7e0, addmod(mload(0x4e740), mload(0x4e7a0), f_q)) +{ + let result := mulmod(mload(0x8fc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x8fe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9020), mload(0x48560), f_q), result, f_q) +mstore(321536, result) + } +mstore(0x4e820, mulmod(mload(0x4e800), mload(0x48a00), f_q)) +mstore(0x4e840, mulmod(sub(f_q, mload(0x4e820)), mload(0x49040), f_q)) +mstore(0x4e860, mulmod(1, mload(0x49040), f_q)) +mstore(0x4e880, addmod(mload(0x4e7e0), mload(0x4e840), f_q)) +{ + let result := mulmod(mload(0x9040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x90a0), mload(0x48560), f_q), result, f_q) +mstore(321696, result) + } +mstore(0x4e8c0, mulmod(mload(0x4e8a0), mload(0x48a00), f_q)) +mstore(0x4e8e0, mulmod(sub(f_q, mload(0x4e8c0)), mload(0x49060), f_q)) +mstore(0x4e900, mulmod(1, mload(0x49060), f_q)) +mstore(0x4e920, addmod(mload(0x4e880), mload(0x4e8e0), f_q)) +{ + let result := mulmod(mload(0x90c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x90e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9120), mload(0x48560), f_q), result, f_q) +mstore(321856, result) + } +mstore(0x4e960, mulmod(mload(0x4e940), mload(0x48a00), f_q)) +mstore(0x4e980, mulmod(sub(f_q, mload(0x4e960)), mload(0x49080), f_q)) +mstore(0x4e9a0, mulmod(1, mload(0x49080), f_q)) +mstore(0x4e9c0, addmod(mload(0x4e920), mload(0x4e980), f_q)) +{ + let result := mulmod(mload(0x9140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x91a0), mload(0x48560), f_q), result, f_q) +mstore(322016, result) + } +mstore(0x4ea00, mulmod(mload(0x4e9e0), mload(0x48a00), f_q)) +mstore(0x4ea20, mulmod(sub(f_q, mload(0x4ea00)), mload(0x490a0), f_q)) +mstore(0x4ea40, mulmod(1, mload(0x490a0), f_q)) +mstore(0x4ea60, addmod(mload(0x4e9c0), mload(0x4ea20), f_q)) +{ + let result := mulmod(mload(0x91c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x91e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9220), mload(0x48560), f_q), result, f_q) +mstore(322176, result) + } +mstore(0x4eaa0, mulmod(mload(0x4ea80), mload(0x48a00), f_q)) +mstore(0x4eac0, mulmod(sub(f_q, mload(0x4eaa0)), mload(0x490c0), f_q)) +mstore(0x4eae0, mulmod(1, mload(0x490c0), f_q)) +mstore(0x4eb00, addmod(mload(0x4ea60), mload(0x4eac0), f_q)) +{ + let result := mulmod(mload(0x9240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x92a0), mload(0x48560), f_q), result, f_q) +mstore(322336, result) + } +mstore(0x4eb40, mulmod(mload(0x4eb20), mload(0x48a00), f_q)) +mstore(0x4eb60, mulmod(sub(f_q, mload(0x4eb40)), mload(0x490e0), f_q)) +mstore(0x4eb80, mulmod(1, mload(0x490e0), f_q)) +mstore(0x4eba0, addmod(mload(0x4eb00), mload(0x4eb60), f_q)) +{ + let result := mulmod(mload(0x92c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x92e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9320), mload(0x48560), f_q), result, f_q) +mstore(322496, result) + } +mstore(0x4ebe0, mulmod(mload(0x4ebc0), mload(0x48a00), f_q)) +mstore(0x4ec00, mulmod(sub(f_q, mload(0x4ebe0)), mload(0x49100), f_q)) +mstore(0x4ec20, mulmod(1, mload(0x49100), f_q)) +mstore(0x4ec40, addmod(mload(0x4eba0), mload(0x4ec00), f_q)) +{ + let result := mulmod(mload(0x9340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x93a0), mload(0x48560), f_q), result, f_q) +mstore(322656, result) + } +mstore(0x4ec80, mulmod(mload(0x4ec60), mload(0x48a00), f_q)) +mstore(0x4eca0, mulmod(sub(f_q, mload(0x4ec80)), mload(0x49120), f_q)) +mstore(0x4ecc0, mulmod(1, mload(0x49120), f_q)) +mstore(0x4ece0, addmod(mload(0x4ec40), mload(0x4eca0), f_q)) +{ + let result := mulmod(mload(0x93c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x93e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9420), mload(0x48560), f_q), result, f_q) +mstore(322816, result) + } +mstore(0x4ed20, mulmod(mload(0x4ed00), mload(0x48a00), f_q)) +mstore(0x4ed40, mulmod(sub(f_q, mload(0x4ed20)), mload(0x49140), f_q)) +mstore(0x4ed60, mulmod(1, mload(0x49140), f_q)) +mstore(0x4ed80, addmod(mload(0x4ece0), mload(0x4ed40), f_q)) +{ + let result := mulmod(mload(0x9440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x94a0), mload(0x48560), f_q), result, f_q) +mstore(322976, result) + } +mstore(0x4edc0, mulmod(mload(0x4eda0), mload(0x48a00), f_q)) +mstore(0x4ede0, mulmod(sub(f_q, mload(0x4edc0)), mload(0x49160), f_q)) +mstore(0x4ee00, mulmod(1, mload(0x49160), f_q)) +mstore(0x4ee20, addmod(mload(0x4ed80), mload(0x4ede0), f_q)) +{ + let result := mulmod(mload(0x94c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x94e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9520), mload(0x48560), f_q), result, f_q) +mstore(323136, result) + } +mstore(0x4ee60, mulmod(mload(0x4ee40), mload(0x48a00), f_q)) +mstore(0x4ee80, mulmod(sub(f_q, mload(0x4ee60)), mload(0x49180), f_q)) +mstore(0x4eea0, mulmod(1, mload(0x49180), f_q)) +mstore(0x4eec0, addmod(mload(0x4ee20), mload(0x4ee80), f_q)) +{ + let result := mulmod(mload(0x9540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x95a0), mload(0x48560), f_q), result, f_q) +mstore(323296, result) + } +mstore(0x4ef00, mulmod(mload(0x4eee0), mload(0x48a00), f_q)) +mstore(0x4ef20, mulmod(sub(f_q, mload(0x4ef00)), mload(0x491a0), f_q)) +mstore(0x4ef40, mulmod(1, mload(0x491a0), f_q)) +mstore(0x4ef60, addmod(mload(0x4eec0), mload(0x4ef20), f_q)) +{ + let result := mulmod(mload(0x95c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x95e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9620), mload(0x48560), f_q), result, f_q) +mstore(323456, result) + } +mstore(0x4efa0, mulmod(mload(0x4ef80), mload(0x48a00), f_q)) +mstore(0x4efc0, mulmod(sub(f_q, mload(0x4efa0)), mload(0x491c0), f_q)) +mstore(0x4efe0, mulmod(1, mload(0x491c0), f_q)) +mstore(0x4f000, addmod(mload(0x4ef60), mload(0x4efc0), f_q)) +{ + let result := mulmod(mload(0x9640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x96a0), mload(0x48560), f_q), result, f_q) +mstore(323616, result) + } +mstore(0x4f040, mulmod(mload(0x4f020), mload(0x48a00), f_q)) +mstore(0x4f060, mulmod(sub(f_q, mload(0x4f040)), mload(0x491e0), f_q)) +mstore(0x4f080, mulmod(1, mload(0x491e0), f_q)) +mstore(0x4f0a0, addmod(mload(0x4f000), mload(0x4f060), f_q)) +{ + let result := mulmod(mload(0x96c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x96e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9720), mload(0x48560), f_q), result, f_q) +mstore(323776, result) + } +mstore(0x4f0e0, mulmod(mload(0x4f0c0), mload(0x48a00), f_q)) +mstore(0x4f100, mulmod(sub(f_q, mload(0x4f0e0)), mload(0x49200), f_q)) +mstore(0x4f120, mulmod(1, mload(0x49200), f_q)) +mstore(0x4f140, addmod(mload(0x4f0a0), mload(0x4f100), f_q)) +{ + let result := mulmod(mload(0x9740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x97a0), mload(0x48560), f_q), result, f_q) +mstore(323936, result) + } +mstore(0x4f180, mulmod(mload(0x4f160), mload(0x48a00), f_q)) +mstore(0x4f1a0, mulmod(sub(f_q, mload(0x4f180)), mload(0x49220), f_q)) +mstore(0x4f1c0, mulmod(1, mload(0x49220), f_q)) +mstore(0x4f1e0, addmod(mload(0x4f140), mload(0x4f1a0), f_q)) +{ + let result := mulmod(mload(0x97c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x97e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9820), mload(0x48560), f_q), result, f_q) +mstore(324096, result) + } +mstore(0x4f220, mulmod(mload(0x4f200), mload(0x48a00), f_q)) +mstore(0x4f240, mulmod(sub(f_q, mload(0x4f220)), mload(0x49240), f_q)) +mstore(0x4f260, mulmod(1, mload(0x49240), f_q)) +mstore(0x4f280, addmod(mload(0x4f1e0), mload(0x4f240), f_q)) +{ + let result := mulmod(mload(0x9840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x98a0), mload(0x48560), f_q), result, f_q) +mstore(324256, result) + } +mstore(0x4f2c0, mulmod(mload(0x4f2a0), mload(0x48a00), f_q)) +mstore(0x4f2e0, mulmod(sub(f_q, mload(0x4f2c0)), mload(0x49260), f_q)) +mstore(0x4f300, mulmod(1, mload(0x49260), f_q)) +mstore(0x4f320, addmod(mload(0x4f280), mload(0x4f2e0), f_q)) +{ + let result := mulmod(mload(0x98c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x98e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9920), mload(0x48560), f_q), result, f_q) +mstore(324416, result) + } +mstore(0x4f360, mulmod(mload(0x4f340), mload(0x48a00), f_q)) +mstore(0x4f380, mulmod(sub(f_q, mload(0x4f360)), mload(0x49280), f_q)) +mstore(0x4f3a0, mulmod(1, mload(0x49280), f_q)) +mstore(0x4f3c0, addmod(mload(0x4f320), mload(0x4f380), f_q)) +{ + let result := mulmod(mload(0x9940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x99a0), mload(0x48560), f_q), result, f_q) +mstore(324576, result) + } +mstore(0x4f400, mulmod(mload(0x4f3e0), mload(0x48a00), f_q)) +mstore(0x4f420, mulmod(sub(f_q, mload(0x4f400)), mload(0x492a0), f_q)) +mstore(0x4f440, mulmod(1, mload(0x492a0), f_q)) +mstore(0x4f460, addmod(mload(0x4f3c0), mload(0x4f420), f_q)) +{ + let result := mulmod(mload(0x99c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x99e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9a00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9a20), mload(0x48560), f_q), result, f_q) +mstore(324736, result) + } +mstore(0x4f4a0, mulmod(mload(0x4f480), mload(0x48a00), f_q)) +mstore(0x4f4c0, mulmod(sub(f_q, mload(0x4f4a0)), mload(0x492c0), f_q)) +mstore(0x4f4e0, mulmod(1, mload(0x492c0), f_q)) +mstore(0x4f500, addmod(mload(0x4f460), mload(0x4f4c0), f_q)) +{ + let result := mulmod(mload(0x9a40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9a60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9a80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9aa0), mload(0x48560), f_q), result, f_q) +mstore(324896, result) + } +mstore(0x4f540, mulmod(mload(0x4f520), mload(0x48a00), f_q)) +mstore(0x4f560, mulmod(sub(f_q, mload(0x4f540)), mload(0x492e0), f_q)) +mstore(0x4f580, mulmod(1, mload(0x492e0), f_q)) +mstore(0x4f5a0, addmod(mload(0x4f500), mload(0x4f560), f_q)) +{ + let result := mulmod(mload(0x9ac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9ae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9b00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9b20), mload(0x48560), f_q), result, f_q) +mstore(325056, result) + } +mstore(0x4f5e0, mulmod(mload(0x4f5c0), mload(0x48a00), f_q)) +mstore(0x4f600, mulmod(sub(f_q, mload(0x4f5e0)), mload(0x49300), f_q)) +mstore(0x4f620, mulmod(1, mload(0x49300), f_q)) +mstore(0x4f640, addmod(mload(0x4f5a0), mload(0x4f600), f_q)) +{ + let result := mulmod(mload(0x9b40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9b60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9b80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9ba0), mload(0x48560), f_q), result, f_q) +mstore(325216, result) + } +mstore(0x4f680, mulmod(mload(0x4f660), mload(0x48a00), f_q)) +mstore(0x4f6a0, mulmod(sub(f_q, mload(0x4f680)), mload(0x49320), f_q)) +mstore(0x4f6c0, mulmod(1, mload(0x49320), f_q)) +mstore(0x4f6e0, addmod(mload(0x4f640), mload(0x4f6a0), f_q)) +{ + let result := mulmod(mload(0x9bc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9be0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9c00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9c20), mload(0x48560), f_q), result, f_q) +mstore(325376, result) + } +mstore(0x4f720, mulmod(mload(0x4f700), mload(0x48a00), f_q)) +mstore(0x4f740, mulmod(sub(f_q, mload(0x4f720)), mload(0x49340), f_q)) +mstore(0x4f760, mulmod(1, mload(0x49340), f_q)) +mstore(0x4f780, addmod(mload(0x4f6e0), mload(0x4f740), f_q)) +{ + let result := mulmod(mload(0x9c40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9c60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9c80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9ca0), mload(0x48560), f_q), result, f_q) +mstore(325536, result) + } +mstore(0x4f7c0, mulmod(mload(0x4f7a0), mload(0x48a00), f_q)) +mstore(0x4f7e0, mulmod(sub(f_q, mload(0x4f7c0)), mload(0x49360), f_q)) +mstore(0x4f800, mulmod(1, mload(0x49360), f_q)) +mstore(0x4f820, addmod(mload(0x4f780), mload(0x4f7e0), f_q)) +{ + let result := mulmod(mload(0x9cc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9ce0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9d00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9d20), mload(0x48560), f_q), result, f_q) +mstore(325696, result) + } +mstore(0x4f860, mulmod(mload(0x4f840), mload(0x48a00), f_q)) +mstore(0x4f880, mulmod(sub(f_q, mload(0x4f860)), mload(0x49380), f_q)) +mstore(0x4f8a0, mulmod(1, mload(0x49380), f_q)) +mstore(0x4f8c0, addmod(mload(0x4f820), mload(0x4f880), f_q)) +{ + let result := mulmod(mload(0x9d40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9d60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9d80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9da0), mload(0x48560), f_q), result, f_q) +mstore(325856, result) + } +mstore(0x4f900, mulmod(mload(0x4f8e0), mload(0x48a00), f_q)) +mstore(0x4f920, mulmod(sub(f_q, mload(0x4f900)), mload(0x493a0), f_q)) +mstore(0x4f940, mulmod(1, mload(0x493a0), f_q)) +mstore(0x4f960, addmod(mload(0x4f8c0), mload(0x4f920), f_q)) +{ + let result := mulmod(mload(0x9dc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9de0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9e00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9e20), mload(0x48560), f_q), result, f_q) +mstore(326016, result) + } +mstore(0x4f9a0, mulmod(mload(0x4f980), mload(0x48a00), f_q)) +mstore(0x4f9c0, mulmod(sub(f_q, mload(0x4f9a0)), mload(0x493c0), f_q)) +mstore(0x4f9e0, mulmod(1, mload(0x493c0), f_q)) +mstore(0x4fa00, addmod(mload(0x4f960), mload(0x4f9c0), f_q)) +{ + let result := mulmod(mload(0x9e40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9e60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9e80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9ea0), mload(0x48560), f_q), result, f_q) +mstore(326176, result) + } +mstore(0x4fa40, mulmod(mload(0x4fa20), mload(0x48a00), f_q)) +mstore(0x4fa60, mulmod(sub(f_q, mload(0x4fa40)), mload(0x493e0), f_q)) +mstore(0x4fa80, mulmod(1, mload(0x493e0), f_q)) +mstore(0x4faa0, addmod(mload(0x4fa00), mload(0x4fa60), f_q)) +{ + let result := mulmod(mload(0x9ec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9ee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9f00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9f20), mload(0x48560), f_q), result, f_q) +mstore(326336, result) + } +mstore(0x4fae0, mulmod(mload(0x4fac0), mload(0x48a00), f_q)) +mstore(0x4fb00, mulmod(sub(f_q, mload(0x4fae0)), mload(0x49400), f_q)) +mstore(0x4fb20, mulmod(1, mload(0x49400), f_q)) +mstore(0x4fb40, addmod(mload(0x4faa0), mload(0x4fb00), f_q)) +{ + let result := mulmod(mload(0x9f40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9f60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0x9f80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0x9fa0), mload(0x48560), f_q), result, f_q) +mstore(326496, result) + } +mstore(0x4fb80, mulmod(mload(0x4fb60), mload(0x48a00), f_q)) +mstore(0x4fba0, mulmod(sub(f_q, mload(0x4fb80)), mload(0x49420), f_q)) +mstore(0x4fbc0, mulmod(1, mload(0x49420), f_q)) +mstore(0x4fbe0, addmod(mload(0x4fb40), mload(0x4fba0), f_q)) +{ + let result := mulmod(mload(0x9fc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0x9fe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa020), mload(0x48560), f_q), result, f_q) +mstore(326656, result) + } +mstore(0x4fc20, mulmod(mload(0x4fc00), mload(0x48a00), f_q)) +mstore(0x4fc40, mulmod(sub(f_q, mload(0x4fc20)), mload(0x49440), f_q)) +mstore(0x4fc60, mulmod(1, mload(0x49440), f_q)) +mstore(0x4fc80, addmod(mload(0x4fbe0), mload(0x4fc40), f_q)) +{ + let result := mulmod(mload(0xa040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa0a0), mload(0x48560), f_q), result, f_q) +mstore(326816, result) + } +mstore(0x4fcc0, mulmod(mload(0x4fca0), mload(0x48a00), f_q)) +mstore(0x4fce0, mulmod(sub(f_q, mload(0x4fcc0)), mload(0x49460), f_q)) +mstore(0x4fd00, mulmod(1, mload(0x49460), f_q)) +mstore(0x4fd20, addmod(mload(0x4fc80), mload(0x4fce0), f_q)) +{ + let result := mulmod(mload(0xa0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa120), mload(0x48560), f_q), result, f_q) +mstore(326976, result) + } +mstore(0x4fd60, mulmod(mload(0x4fd40), mload(0x48a00), f_q)) +mstore(0x4fd80, mulmod(sub(f_q, mload(0x4fd60)), mload(0x49480), f_q)) +mstore(0x4fda0, mulmod(1, mload(0x49480), f_q)) +mstore(0x4fdc0, addmod(mload(0x4fd20), mload(0x4fd80), f_q)) +{ + let result := mulmod(mload(0xa140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa1a0), mload(0x48560), f_q), result, f_q) +mstore(327136, result) + } +mstore(0x4fe00, mulmod(mload(0x4fde0), mload(0x48a00), f_q)) +mstore(0x4fe20, mulmod(sub(f_q, mload(0x4fe00)), mload(0x494a0), f_q)) +mstore(0x4fe40, mulmod(1, mload(0x494a0), f_q)) +mstore(0x4fe60, addmod(mload(0x4fdc0), mload(0x4fe20), f_q)) +{ + let result := mulmod(mload(0xa1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa220), mload(0x48560), f_q), result, f_q) +mstore(327296, result) + } +mstore(0x4fea0, mulmod(mload(0x4fe80), mload(0x48a00), f_q)) +mstore(0x4fec0, mulmod(sub(f_q, mload(0x4fea0)), mload(0x494c0), f_q)) +mstore(0x4fee0, mulmod(1, mload(0x494c0), f_q)) +mstore(0x4ff00, addmod(mload(0x4fe60), mload(0x4fec0), f_q)) +{ + let result := mulmod(mload(0xa240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa2a0), mload(0x48560), f_q), result, f_q) +mstore(327456, result) + } +mstore(0x4ff40, mulmod(mload(0x4ff20), mload(0x48a00), f_q)) +mstore(0x4ff60, mulmod(sub(f_q, mload(0x4ff40)), mload(0x494e0), f_q)) +mstore(0x4ff80, mulmod(1, mload(0x494e0), f_q)) +mstore(0x4ffa0, addmod(mload(0x4ff00), mload(0x4ff60), f_q)) +{ + let result := mulmod(mload(0xa2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa320), mload(0x48560), f_q), result, f_q) +mstore(327616, result) + } +mstore(0x4ffe0, mulmod(mload(0x4ffc0), mload(0x48a00), f_q)) +mstore(0x50000, mulmod(sub(f_q, mload(0x4ffe0)), mload(0x49500), f_q)) +mstore(0x50020, mulmod(1, mload(0x49500), f_q)) +mstore(0x50040, addmod(mload(0x4ffa0), mload(0x50000), f_q)) +{ + let result := mulmod(mload(0xa340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa3a0), mload(0x48560), f_q), result, f_q) +mstore(327776, result) + } +mstore(0x50080, mulmod(mload(0x50060), mload(0x48a00), f_q)) +mstore(0x500a0, mulmod(sub(f_q, mload(0x50080)), mload(0x49520), f_q)) +mstore(0x500c0, mulmod(1, mload(0x49520), f_q)) +mstore(0x500e0, addmod(mload(0x50040), mload(0x500a0), f_q)) +{ + let result := mulmod(mload(0xa3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa420), mload(0x48560), f_q), result, f_q) +mstore(327936, result) + } +mstore(0x50120, mulmod(mload(0x50100), mload(0x48a00), f_q)) +mstore(0x50140, mulmod(sub(f_q, mload(0x50120)), mload(0x49540), f_q)) +mstore(0x50160, mulmod(1, mload(0x49540), f_q)) +mstore(0x50180, addmod(mload(0x500e0), mload(0x50140), f_q)) +{ + let result := mulmod(mload(0xa440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa4a0), mload(0x48560), f_q), result, f_q) +mstore(328096, result) + } +mstore(0x501c0, mulmod(mload(0x501a0), mload(0x48a00), f_q)) +mstore(0x501e0, mulmod(sub(f_q, mload(0x501c0)), mload(0x49560), f_q)) +mstore(0x50200, mulmod(1, mload(0x49560), f_q)) +mstore(0x50220, addmod(mload(0x50180), mload(0x501e0), f_q)) +{ + let result := mulmod(mload(0xa4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa520), mload(0x48560), f_q), result, f_q) +mstore(328256, result) + } +mstore(0x50260, mulmod(mload(0x50240), mload(0x48a00), f_q)) +mstore(0x50280, mulmod(sub(f_q, mload(0x50260)), mload(0x49580), f_q)) +mstore(0x502a0, mulmod(1, mload(0x49580), f_q)) +mstore(0x502c0, addmod(mload(0x50220), mload(0x50280), f_q)) +{ + let result := mulmod(mload(0xa540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa5a0), mload(0x48560), f_q), result, f_q) +mstore(328416, result) + } +mstore(0x50300, mulmod(mload(0x502e0), mload(0x48a00), f_q)) +mstore(0x50320, mulmod(sub(f_q, mload(0x50300)), mload(0x495a0), f_q)) +mstore(0x50340, mulmod(1, mload(0x495a0), f_q)) +mstore(0x50360, addmod(mload(0x502c0), mload(0x50320), f_q)) +{ + let result := mulmod(mload(0xa5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa620), mload(0x48560), f_q), result, f_q) +mstore(328576, result) + } +mstore(0x503a0, mulmod(mload(0x50380), mload(0x48a00), f_q)) +mstore(0x503c0, mulmod(sub(f_q, mload(0x503a0)), mload(0x495c0), f_q)) +mstore(0x503e0, mulmod(1, mload(0x495c0), f_q)) +mstore(0x50400, addmod(mload(0x50360), mload(0x503c0), f_q)) +{ + let result := mulmod(mload(0xa640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa6a0), mload(0x48560), f_q), result, f_q) +mstore(328736, result) + } +mstore(0x50440, mulmod(mload(0x50420), mload(0x48a00), f_q)) +mstore(0x50460, mulmod(sub(f_q, mload(0x50440)), mload(0x495e0), f_q)) +mstore(0x50480, mulmod(1, mload(0x495e0), f_q)) +mstore(0x504a0, addmod(mload(0x50400), mload(0x50460), f_q)) +{ + let result := mulmod(mload(0xa6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa720), mload(0x48560), f_q), result, f_q) +mstore(328896, result) + } +mstore(0x504e0, mulmod(mload(0x504c0), mload(0x48a00), f_q)) +mstore(0x50500, mulmod(sub(f_q, mload(0x504e0)), mload(0x49600), f_q)) +mstore(0x50520, mulmod(1, mload(0x49600), f_q)) +mstore(0x50540, addmod(mload(0x504a0), mload(0x50500), f_q)) +{ + let result := mulmod(mload(0xa740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa7a0), mload(0x48560), f_q), result, f_q) +mstore(329056, result) + } +mstore(0x50580, mulmod(mload(0x50560), mload(0x48a00), f_q)) +mstore(0x505a0, mulmod(sub(f_q, mload(0x50580)), mload(0x49620), f_q)) +mstore(0x505c0, mulmod(1, mload(0x49620), f_q)) +mstore(0x505e0, addmod(mload(0x50540), mload(0x505a0), f_q)) +{ + let result := mulmod(mload(0xa7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa820), mload(0x48560), f_q), result, f_q) +mstore(329216, result) + } +mstore(0x50620, mulmod(mload(0x50600), mload(0x48a00), f_q)) +mstore(0x50640, mulmod(sub(f_q, mload(0x50620)), mload(0x49640), f_q)) +mstore(0x50660, mulmod(1, mload(0x49640), f_q)) +mstore(0x50680, addmod(mload(0x505e0), mload(0x50640), f_q)) +{ + let result := mulmod(mload(0xa840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa8a0), mload(0x48560), f_q), result, f_q) +mstore(329376, result) + } +mstore(0x506c0, mulmod(mload(0x506a0), mload(0x48a00), f_q)) +mstore(0x506e0, mulmod(sub(f_q, mload(0x506c0)), mload(0x49660), f_q)) +mstore(0x50700, mulmod(1, mload(0x49660), f_q)) +mstore(0x50720, addmod(mload(0x50680), mload(0x506e0), f_q)) +{ + let result := mulmod(mload(0xa8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa920), mload(0x48560), f_q), result, f_q) +mstore(329536, result) + } +mstore(0x50760, mulmod(mload(0x50740), mload(0x48a00), f_q)) +mstore(0x50780, mulmod(sub(f_q, mload(0x50760)), mload(0x49680), f_q)) +mstore(0x507a0, mulmod(1, mload(0x49680), f_q)) +mstore(0x507c0, addmod(mload(0x50720), mload(0x50780), f_q)) +{ + let result := mulmod(mload(0xa940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xa980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xa9a0), mload(0x48560), f_q), result, f_q) +mstore(329696, result) + } +mstore(0x50800, mulmod(mload(0x507e0), mload(0x48a00), f_q)) +mstore(0x50820, mulmod(sub(f_q, mload(0x50800)), mload(0x496a0), f_q)) +mstore(0x50840, mulmod(1, mload(0x496a0), f_q)) +mstore(0x50860, addmod(mload(0x507c0), mload(0x50820), f_q)) +{ + let result := mulmod(mload(0xa9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xa9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xaa00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaa20), mload(0x48560), f_q), result, f_q) +mstore(329856, result) + } +mstore(0x508a0, mulmod(mload(0x50880), mload(0x48a00), f_q)) +mstore(0x508c0, mulmod(sub(f_q, mload(0x508a0)), mload(0x496c0), f_q)) +mstore(0x508e0, mulmod(1, mload(0x496c0), f_q)) +mstore(0x50900, addmod(mload(0x50860), mload(0x508c0), f_q)) +{ + let result := mulmod(mload(0xaa40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xaa60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xaa80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaaa0), mload(0x48560), f_q), result, f_q) +mstore(330016, result) + } +mstore(0x50940, mulmod(mload(0x50920), mload(0x48a00), f_q)) +mstore(0x50960, mulmod(sub(f_q, mload(0x50940)), mload(0x496e0), f_q)) +mstore(0x50980, mulmod(1, mload(0x496e0), f_q)) +mstore(0x509a0, addmod(mload(0x50900), mload(0x50960), f_q)) +{ + let result := mulmod(mload(0xaac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xaae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xab00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xab20), mload(0x48560), f_q), result, f_q) +mstore(330176, result) + } +mstore(0x509e0, mulmod(mload(0x509c0), mload(0x48a00), f_q)) +mstore(0x50a00, mulmod(sub(f_q, mload(0x509e0)), mload(0x49700), f_q)) +mstore(0x50a20, mulmod(1, mload(0x49700), f_q)) +mstore(0x50a40, addmod(mload(0x509a0), mload(0x50a00), f_q)) +{ + let result := mulmod(mload(0xab40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xab60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xab80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaba0), mload(0x48560), f_q), result, f_q) +mstore(330336, result) + } +mstore(0x50a80, mulmod(mload(0x50a60), mload(0x48a00), f_q)) +mstore(0x50aa0, mulmod(sub(f_q, mload(0x50a80)), mload(0x49720), f_q)) +mstore(0x50ac0, mulmod(1, mload(0x49720), f_q)) +mstore(0x50ae0, addmod(mload(0x50a40), mload(0x50aa0), f_q)) +{ + let result := mulmod(mload(0xabc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xabe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xac00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xac20), mload(0x48560), f_q), result, f_q) +mstore(330496, result) + } +mstore(0x50b20, mulmod(mload(0x50b00), mload(0x48a00), f_q)) +mstore(0x50b40, mulmod(sub(f_q, mload(0x50b20)), mload(0x49740), f_q)) +mstore(0x50b60, mulmod(1, mload(0x49740), f_q)) +mstore(0x50b80, addmod(mload(0x50ae0), mload(0x50b40), f_q)) +{ + let result := mulmod(mload(0xac40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xac60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xac80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaca0), mload(0x48560), f_q), result, f_q) +mstore(330656, result) + } +mstore(0x50bc0, mulmod(mload(0x50ba0), mload(0x48a00), f_q)) +mstore(0x50be0, mulmod(sub(f_q, mload(0x50bc0)), mload(0x49760), f_q)) +mstore(0x50c00, mulmod(1, mload(0x49760), f_q)) +mstore(0x50c20, addmod(mload(0x50b80), mload(0x50be0), f_q)) +{ + let result := mulmod(mload(0xacc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xace0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xad00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xad20), mload(0x48560), f_q), result, f_q) +mstore(330816, result) + } +mstore(0x50c60, mulmod(mload(0x50c40), mload(0x48a00), f_q)) +mstore(0x50c80, mulmod(sub(f_q, mload(0x50c60)), mload(0x49780), f_q)) +mstore(0x50ca0, mulmod(1, mload(0x49780), f_q)) +mstore(0x50cc0, addmod(mload(0x50c20), mload(0x50c80), f_q)) +{ + let result := mulmod(mload(0xad40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xad60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xad80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xada0), mload(0x48560), f_q), result, f_q) +mstore(330976, result) + } +mstore(0x50d00, mulmod(mload(0x50ce0), mload(0x48a00), f_q)) +mstore(0x50d20, mulmod(sub(f_q, mload(0x50d00)), mload(0x497a0), f_q)) +mstore(0x50d40, mulmod(1, mload(0x497a0), f_q)) +mstore(0x50d60, addmod(mload(0x50cc0), mload(0x50d20), f_q)) +{ + let result := mulmod(mload(0xadc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xade0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xae00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xae20), mload(0x48560), f_q), result, f_q) +mstore(331136, result) + } +mstore(0x50da0, mulmod(mload(0x50d80), mload(0x48a00), f_q)) +mstore(0x50dc0, mulmod(sub(f_q, mload(0x50da0)), mload(0x497c0), f_q)) +mstore(0x50de0, mulmod(1, mload(0x497c0), f_q)) +mstore(0x50e00, addmod(mload(0x50d60), mload(0x50dc0), f_q)) +{ + let result := mulmod(mload(0xae40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xae60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xae80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaea0), mload(0x48560), f_q), result, f_q) +mstore(331296, result) + } +mstore(0x50e40, mulmod(mload(0x50e20), mload(0x48a00), f_q)) +mstore(0x50e60, mulmod(sub(f_q, mload(0x50e40)), mload(0x497e0), f_q)) +mstore(0x50e80, mulmod(1, mload(0x497e0), f_q)) +mstore(0x50ea0, addmod(mload(0x50e00), mload(0x50e60), f_q)) +{ + let result := mulmod(mload(0xaec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xaee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xaf00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xaf20), mload(0x48560), f_q), result, f_q) +mstore(331456, result) + } +mstore(0x50ee0, mulmod(mload(0x50ec0), mload(0x48a00), f_q)) +mstore(0x50f00, mulmod(sub(f_q, mload(0x50ee0)), mload(0x49800), f_q)) +mstore(0x50f20, mulmod(1, mload(0x49800), f_q)) +mstore(0x50f40, addmod(mload(0x50ea0), mload(0x50f00), f_q)) +{ + let result := mulmod(mload(0xaf40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xaf60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xaf80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xafa0), mload(0x48560), f_q), result, f_q) +mstore(331616, result) + } +mstore(0x50f80, mulmod(mload(0x50f60), mload(0x48a00), f_q)) +mstore(0x50fa0, mulmod(sub(f_q, mload(0x50f80)), mload(0x49820), f_q)) +mstore(0x50fc0, mulmod(1, mload(0x49820), f_q)) +mstore(0x50fe0, addmod(mload(0x50f40), mload(0x50fa0), f_q)) +{ + let result := mulmod(mload(0xafc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xafe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb020), mload(0x48560), f_q), result, f_q) +mstore(331776, result) + } +mstore(0x51020, mulmod(mload(0x51000), mload(0x48a00), f_q)) +mstore(0x51040, mulmod(sub(f_q, mload(0x51020)), mload(0x49840), f_q)) +mstore(0x51060, mulmod(1, mload(0x49840), f_q)) +mstore(0x51080, addmod(mload(0x50fe0), mload(0x51040), f_q)) +{ + let result := mulmod(mload(0xb040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb0a0), mload(0x48560), f_q), result, f_q) +mstore(331936, result) + } +mstore(0x510c0, mulmod(mload(0x510a0), mload(0x48a00), f_q)) +mstore(0x510e0, mulmod(sub(f_q, mload(0x510c0)), mload(0x49860), f_q)) +mstore(0x51100, mulmod(1, mload(0x49860), f_q)) +mstore(0x51120, addmod(mload(0x51080), mload(0x510e0), f_q)) +{ + let result := mulmod(mload(0xb0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb120), mload(0x48560), f_q), result, f_q) +mstore(332096, result) + } +mstore(0x51160, mulmod(mload(0x51140), mload(0x48a00), f_q)) +mstore(0x51180, mulmod(sub(f_q, mload(0x51160)), mload(0x49880), f_q)) +mstore(0x511a0, mulmod(1, mload(0x49880), f_q)) +mstore(0x511c0, addmod(mload(0x51120), mload(0x51180), f_q)) +{ + let result := mulmod(mload(0xb140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb1a0), mload(0x48560), f_q), result, f_q) +mstore(332256, result) + } +mstore(0x51200, mulmod(mload(0x511e0), mload(0x48a00), f_q)) +mstore(0x51220, mulmod(sub(f_q, mload(0x51200)), mload(0x498a0), f_q)) +mstore(0x51240, mulmod(1, mload(0x498a0), f_q)) +mstore(0x51260, addmod(mload(0x511c0), mload(0x51220), f_q)) +{ + let result := mulmod(mload(0xb1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb220), mload(0x48560), f_q), result, f_q) +mstore(332416, result) + } +mstore(0x512a0, mulmod(mload(0x51280), mload(0x48a00), f_q)) +mstore(0x512c0, mulmod(sub(f_q, mload(0x512a0)), mload(0x498c0), f_q)) +mstore(0x512e0, mulmod(1, mload(0x498c0), f_q)) +mstore(0x51300, addmod(mload(0x51260), mload(0x512c0), f_q)) +{ + let result := mulmod(mload(0xb240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb2a0), mload(0x48560), f_q), result, f_q) +mstore(332576, result) + } +mstore(0x51340, mulmod(mload(0x51320), mload(0x48a00), f_q)) +mstore(0x51360, mulmod(sub(f_q, mload(0x51340)), mload(0x498e0), f_q)) +mstore(0x51380, mulmod(1, mload(0x498e0), f_q)) +mstore(0x513a0, addmod(mload(0x51300), mload(0x51360), f_q)) +{ + let result := mulmod(mload(0xb2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb320), mload(0x48560), f_q), result, f_q) +mstore(332736, result) + } +mstore(0x513e0, mulmod(mload(0x513c0), mload(0x48a00), f_q)) +mstore(0x51400, mulmod(sub(f_q, mload(0x513e0)), mload(0x49900), f_q)) +mstore(0x51420, mulmod(1, mload(0x49900), f_q)) +mstore(0x51440, addmod(mload(0x513a0), mload(0x51400), f_q)) +{ + let result := mulmod(mload(0xb340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb3a0), mload(0x48560), f_q), result, f_q) +mstore(332896, result) + } +mstore(0x51480, mulmod(mload(0x51460), mload(0x48a00), f_q)) +mstore(0x514a0, mulmod(sub(f_q, mload(0x51480)), mload(0x49920), f_q)) +mstore(0x514c0, mulmod(1, mload(0x49920), f_q)) +mstore(0x514e0, addmod(mload(0x51440), mload(0x514a0), f_q)) +{ + let result := mulmod(mload(0xb3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb420), mload(0x48560), f_q), result, f_q) +mstore(333056, result) + } +mstore(0x51520, mulmod(mload(0x51500), mload(0x48a00), f_q)) +mstore(0x51540, mulmod(sub(f_q, mload(0x51520)), mload(0x49940), f_q)) +mstore(0x51560, mulmod(1, mload(0x49940), f_q)) +mstore(0x51580, addmod(mload(0x514e0), mload(0x51540), f_q)) +{ + let result := mulmod(mload(0xb440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb4a0), mload(0x48560), f_q), result, f_q) +mstore(333216, result) + } +mstore(0x515c0, mulmod(mload(0x515a0), mload(0x48a00), f_q)) +mstore(0x515e0, mulmod(sub(f_q, mload(0x515c0)), mload(0x49960), f_q)) +mstore(0x51600, mulmod(1, mload(0x49960), f_q)) +mstore(0x51620, addmod(mload(0x51580), mload(0x515e0), f_q)) +{ + let result := mulmod(mload(0xb4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb520), mload(0x48560), f_q), result, f_q) +mstore(333376, result) + } +mstore(0x51660, mulmod(mload(0x51640), mload(0x48a00), f_q)) +mstore(0x51680, mulmod(sub(f_q, mload(0x51660)), mload(0x49980), f_q)) +mstore(0x516a0, mulmod(1, mload(0x49980), f_q)) +mstore(0x516c0, addmod(mload(0x51620), mload(0x51680), f_q)) +{ + let result := mulmod(mload(0xb540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb5a0), mload(0x48560), f_q), result, f_q) +mstore(333536, result) + } +mstore(0x51700, mulmod(mload(0x516e0), mload(0x48a00), f_q)) +mstore(0x51720, mulmod(sub(f_q, mload(0x51700)), mload(0x499a0), f_q)) +mstore(0x51740, mulmod(1, mload(0x499a0), f_q)) +mstore(0x51760, addmod(mload(0x516c0), mload(0x51720), f_q)) +{ + let result := mulmod(mload(0xb5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb620), mload(0x48560), f_q), result, f_q) +mstore(333696, result) + } +mstore(0x517a0, mulmod(mload(0x51780), mload(0x48a00), f_q)) +mstore(0x517c0, mulmod(sub(f_q, mload(0x517a0)), mload(0x499c0), f_q)) +mstore(0x517e0, mulmod(1, mload(0x499c0), f_q)) +mstore(0x51800, addmod(mload(0x51760), mload(0x517c0), f_q)) +{ + let result := mulmod(mload(0xb640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb6a0), mload(0x48560), f_q), result, f_q) +mstore(333856, result) + } +mstore(0x51840, mulmod(mload(0x51820), mload(0x48a00), f_q)) +mstore(0x51860, mulmod(sub(f_q, mload(0x51840)), mload(0x499e0), f_q)) +mstore(0x51880, mulmod(1, mload(0x499e0), f_q)) +mstore(0x518a0, addmod(mload(0x51800), mload(0x51860), f_q)) +{ + let result := mulmod(mload(0xb6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb720), mload(0x48560), f_q), result, f_q) +mstore(334016, result) + } +mstore(0x518e0, mulmod(mload(0x518c0), mload(0x48a00), f_q)) +mstore(0x51900, mulmod(sub(f_q, mload(0x518e0)), mload(0x49a00), f_q)) +mstore(0x51920, mulmod(1, mload(0x49a00), f_q)) +mstore(0x51940, addmod(mload(0x518a0), mload(0x51900), f_q)) +{ + let result := mulmod(mload(0xb740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb7a0), mload(0x48560), f_q), result, f_q) +mstore(334176, result) + } +mstore(0x51980, mulmod(mload(0x51960), mload(0x48a00), f_q)) +mstore(0x519a0, mulmod(sub(f_q, mload(0x51980)), mload(0x49a20), f_q)) +mstore(0x519c0, mulmod(1, mload(0x49a20), f_q)) +mstore(0x519e0, addmod(mload(0x51940), mload(0x519a0), f_q)) +{ + let result := mulmod(mload(0xb7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb820), mload(0x48560), f_q), result, f_q) +mstore(334336, result) + } +mstore(0x51a20, mulmod(mload(0x51a00), mload(0x48a00), f_q)) +mstore(0x51a40, mulmod(sub(f_q, mload(0x51a20)), mload(0x49a40), f_q)) +mstore(0x51a60, mulmod(1, mload(0x49a40), f_q)) +mstore(0x51a80, addmod(mload(0x519e0), mload(0x51a40), f_q)) +{ + let result := mulmod(mload(0xb840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb8a0), mload(0x48560), f_q), result, f_q) +mstore(334496, result) + } +mstore(0x51ac0, mulmod(mload(0x51aa0), mload(0x48a00), f_q)) +mstore(0x51ae0, mulmod(sub(f_q, mload(0x51ac0)), mload(0x49a60), f_q)) +mstore(0x51b00, mulmod(1, mload(0x49a60), f_q)) +mstore(0x51b20, addmod(mload(0x51a80), mload(0x51ae0), f_q)) +{ + let result := mulmod(mload(0xb8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb920), mload(0x48560), f_q), result, f_q) +mstore(334656, result) + } +mstore(0x51b60, mulmod(mload(0x51b40), mload(0x48a00), f_q)) +mstore(0x51b80, mulmod(sub(f_q, mload(0x51b60)), mload(0x49a80), f_q)) +mstore(0x51ba0, mulmod(1, mload(0x49a80), f_q)) +mstore(0x51bc0, addmod(mload(0x51b20), mload(0x51b80), f_q)) +{ + let result := mulmod(mload(0xb940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xb980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xb9a0), mload(0x48560), f_q), result, f_q) +mstore(334816, result) + } +mstore(0x51c00, mulmod(mload(0x51be0), mload(0x48a00), f_q)) +mstore(0x51c20, mulmod(sub(f_q, mload(0x51c00)), mload(0x49aa0), f_q)) +mstore(0x51c40, mulmod(1, mload(0x49aa0), f_q)) +mstore(0x51c60, addmod(mload(0x51bc0), mload(0x51c20), f_q)) +{ + let result := mulmod(mload(0xb9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xb9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xba00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xba20), mload(0x48560), f_q), result, f_q) +mstore(334976, result) + } +mstore(0x51ca0, mulmod(mload(0x51c80), mload(0x48a00), f_q)) +mstore(0x51cc0, mulmod(sub(f_q, mload(0x51ca0)), mload(0x49ac0), f_q)) +mstore(0x51ce0, mulmod(1, mload(0x49ac0), f_q)) +mstore(0x51d00, addmod(mload(0x51c60), mload(0x51cc0), f_q)) +{ + let result := mulmod(mload(0xba40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xba60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xba80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbaa0), mload(0x48560), f_q), result, f_q) +mstore(335136, result) + } +mstore(0x51d40, mulmod(mload(0x51d20), mload(0x48a00), f_q)) +mstore(0x51d60, mulmod(sub(f_q, mload(0x51d40)), mload(0x49ae0), f_q)) +mstore(0x51d80, mulmod(1, mload(0x49ae0), f_q)) +mstore(0x51da0, addmod(mload(0x51d00), mload(0x51d60), f_q)) +{ + let result := mulmod(mload(0xbac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbb00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbb20), mload(0x48560), f_q), result, f_q) +mstore(335296, result) + } +mstore(0x51de0, mulmod(mload(0x51dc0), mload(0x48a00), f_q)) +mstore(0x51e00, mulmod(sub(f_q, mload(0x51de0)), mload(0x49b00), f_q)) +mstore(0x51e20, mulmod(1, mload(0x49b00), f_q)) +mstore(0x51e40, addmod(mload(0x51da0), mload(0x51e00), f_q)) +{ + let result := mulmod(mload(0xbb40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbb60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbb80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbba0), mload(0x48560), f_q), result, f_q) +mstore(335456, result) + } +mstore(0x51e80, mulmod(mload(0x51e60), mload(0x48a00), f_q)) +mstore(0x51ea0, mulmod(sub(f_q, mload(0x51e80)), mload(0x49b20), f_q)) +mstore(0x51ec0, mulmod(1, mload(0x49b20), f_q)) +mstore(0x51ee0, addmod(mload(0x51e40), mload(0x51ea0), f_q)) +{ + let result := mulmod(mload(0xbbc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbbe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbc00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbc20), mload(0x48560), f_q), result, f_q) +mstore(335616, result) + } +mstore(0x51f20, mulmod(mload(0x51f00), mload(0x48a00), f_q)) +mstore(0x51f40, mulmod(sub(f_q, mload(0x51f20)), mload(0x49b40), f_q)) +mstore(0x51f60, mulmod(1, mload(0x49b40), f_q)) +mstore(0x51f80, addmod(mload(0x51ee0), mload(0x51f40), f_q)) +{ + let result := mulmod(mload(0xbc40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbc60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbc80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbca0), mload(0x48560), f_q), result, f_q) +mstore(335776, result) + } +mstore(0x51fc0, mulmod(mload(0x51fa0), mload(0x48a00), f_q)) +mstore(0x51fe0, mulmod(sub(f_q, mload(0x51fc0)), mload(0x49b60), f_q)) +mstore(0x52000, mulmod(1, mload(0x49b60), f_q)) +mstore(0x52020, addmod(mload(0x51f80), mload(0x51fe0), f_q)) +{ + let result := mulmod(mload(0xbcc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbce0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbd00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbd20), mload(0x48560), f_q), result, f_q) +mstore(335936, result) + } +mstore(0x52060, mulmod(mload(0x52040), mload(0x48a00), f_q)) +mstore(0x52080, mulmod(sub(f_q, mload(0x52060)), mload(0x49b80), f_q)) +mstore(0x520a0, mulmod(1, mload(0x49b80), f_q)) +mstore(0x520c0, addmod(mload(0x52020), mload(0x52080), f_q)) +{ + let result := mulmod(mload(0xbd40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbd60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbd80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbda0), mload(0x48560), f_q), result, f_q) +mstore(336096, result) + } +mstore(0x52100, mulmod(mload(0x520e0), mload(0x48a00), f_q)) +mstore(0x52120, mulmod(sub(f_q, mload(0x52100)), mload(0x49ba0), f_q)) +mstore(0x52140, mulmod(1, mload(0x49ba0), f_q)) +mstore(0x52160, addmod(mload(0x520c0), mload(0x52120), f_q)) +{ + let result := mulmod(mload(0xbdc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbde0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbe00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbe20), mload(0x48560), f_q), result, f_q) +mstore(336256, result) + } +mstore(0x521a0, mulmod(mload(0x52180), mload(0x48a00), f_q)) +mstore(0x521c0, mulmod(sub(f_q, mload(0x521a0)), mload(0x49bc0), f_q)) +mstore(0x521e0, mulmod(1, mload(0x49bc0), f_q)) +mstore(0x52200, addmod(mload(0x52160), mload(0x521c0), f_q)) +{ + let result := mulmod(mload(0xbe40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbe60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbe80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbea0), mload(0x48560), f_q), result, f_q) +mstore(336416, result) + } +mstore(0x52240, mulmod(mload(0x52220), mload(0x48a00), f_q)) +mstore(0x52260, mulmod(sub(f_q, mload(0x52240)), mload(0x49be0), f_q)) +mstore(0x52280, mulmod(1, mload(0x49be0), f_q)) +mstore(0x522a0, addmod(mload(0x52200), mload(0x52260), f_q)) +{ + let result := mulmod(mload(0xbec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbf00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbf20), mload(0x48560), f_q), result, f_q) +mstore(336576, result) + } +mstore(0x522e0, mulmod(mload(0x522c0), mload(0x48a00), f_q)) +mstore(0x52300, mulmod(sub(f_q, mload(0x522e0)), mload(0x49c00), f_q)) +mstore(0x52320, mulmod(1, mload(0x49c00), f_q)) +mstore(0x52340, addmod(mload(0x522a0), mload(0x52300), f_q)) +{ + let result := mulmod(mload(0xbf40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbf60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xbf80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xbfa0), mload(0x48560), f_q), result, f_q) +mstore(336736, result) + } +mstore(0x52380, mulmod(mload(0x52360), mload(0x48a00), f_q)) +mstore(0x523a0, mulmod(sub(f_q, mload(0x52380)), mload(0x49c20), f_q)) +mstore(0x523c0, mulmod(1, mload(0x49c20), f_q)) +mstore(0x523e0, addmod(mload(0x52340), mload(0x523a0), f_q)) +{ + let result := mulmod(mload(0xbfc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xbfe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc020), mload(0x48560), f_q), result, f_q) +mstore(336896, result) + } +mstore(0x52420, mulmod(mload(0x52400), mload(0x48a00), f_q)) +mstore(0x52440, mulmod(sub(f_q, mload(0x52420)), mload(0x49c40), f_q)) +mstore(0x52460, mulmod(1, mload(0x49c40), f_q)) +mstore(0x52480, addmod(mload(0x523e0), mload(0x52440), f_q)) +{ + let result := mulmod(mload(0xc040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc0a0), mload(0x48560), f_q), result, f_q) +mstore(337056, result) + } +mstore(0x524c0, mulmod(mload(0x524a0), mload(0x48a00), f_q)) +mstore(0x524e0, mulmod(sub(f_q, mload(0x524c0)), mload(0x49c60), f_q)) +mstore(0x52500, mulmod(1, mload(0x49c60), f_q)) +mstore(0x52520, addmod(mload(0x52480), mload(0x524e0), f_q)) +{ + let result := mulmod(mload(0xc0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc120), mload(0x48560), f_q), result, f_q) +mstore(337216, result) + } +mstore(0x52560, mulmod(mload(0x52540), mload(0x48a00), f_q)) +mstore(0x52580, mulmod(sub(f_q, mload(0x52560)), mload(0x49c80), f_q)) +mstore(0x525a0, mulmod(1, mload(0x49c80), f_q)) +mstore(0x525c0, addmod(mload(0x52520), mload(0x52580), f_q)) +{ + let result := mulmod(mload(0xc140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc1a0), mload(0x48560), f_q), result, f_q) +mstore(337376, result) + } +mstore(0x52600, mulmod(mload(0x525e0), mload(0x48a00), f_q)) +mstore(0x52620, mulmod(sub(f_q, mload(0x52600)), mload(0x49ca0), f_q)) +mstore(0x52640, mulmod(1, mload(0x49ca0), f_q)) +mstore(0x52660, addmod(mload(0x525c0), mload(0x52620), f_q)) +{ + let result := mulmod(mload(0xc1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc220), mload(0x48560), f_q), result, f_q) +mstore(337536, result) + } +mstore(0x526a0, mulmod(mload(0x52680), mload(0x48a00), f_q)) +mstore(0x526c0, mulmod(sub(f_q, mload(0x526a0)), mload(0x49cc0), f_q)) +mstore(0x526e0, mulmod(1, mload(0x49cc0), f_q)) +mstore(0x52700, addmod(mload(0x52660), mload(0x526c0), f_q)) +{ + let result := mulmod(mload(0xc240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc2a0), mload(0x48560), f_q), result, f_q) +mstore(337696, result) + } +mstore(0x52740, mulmod(mload(0x52720), mload(0x48a00), f_q)) +mstore(0x52760, mulmod(sub(f_q, mload(0x52740)), mload(0x49ce0), f_q)) +mstore(0x52780, mulmod(1, mload(0x49ce0), f_q)) +mstore(0x527a0, addmod(mload(0x52700), mload(0x52760), f_q)) +{ + let result := mulmod(mload(0xc2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc320), mload(0x48560), f_q), result, f_q) +mstore(337856, result) + } +mstore(0x527e0, mulmod(mload(0x527c0), mload(0x48a00), f_q)) +mstore(0x52800, mulmod(sub(f_q, mload(0x527e0)), mload(0x49d00), f_q)) +mstore(0x52820, mulmod(1, mload(0x49d00), f_q)) +mstore(0x52840, addmod(mload(0x527a0), mload(0x52800), f_q)) +{ + let result := mulmod(mload(0xc340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc3a0), mload(0x48560), f_q), result, f_q) +mstore(338016, result) + } +mstore(0x52880, mulmod(mload(0x52860), mload(0x48a00), f_q)) +mstore(0x528a0, mulmod(sub(f_q, mload(0x52880)), mload(0x49d20), f_q)) +mstore(0x528c0, mulmod(1, mload(0x49d20), f_q)) +mstore(0x528e0, addmod(mload(0x52840), mload(0x528a0), f_q)) +{ + let result := mulmod(mload(0xc3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc420), mload(0x48560), f_q), result, f_q) +mstore(338176, result) + } +mstore(0x52920, mulmod(mload(0x52900), mload(0x48a00), f_q)) +mstore(0x52940, mulmod(sub(f_q, mload(0x52920)), mload(0x49d40), f_q)) +mstore(0x52960, mulmod(1, mload(0x49d40), f_q)) +mstore(0x52980, addmod(mload(0x528e0), mload(0x52940), f_q)) +{ + let result := mulmod(mload(0xc440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc4a0), mload(0x48560), f_q), result, f_q) +mstore(338336, result) + } +mstore(0x529c0, mulmod(mload(0x529a0), mload(0x48a00), f_q)) +mstore(0x529e0, mulmod(sub(f_q, mload(0x529c0)), mload(0x49d60), f_q)) +mstore(0x52a00, mulmod(1, mload(0x49d60), f_q)) +mstore(0x52a20, addmod(mload(0x52980), mload(0x529e0), f_q)) +{ + let result := mulmod(mload(0xc4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc520), mload(0x48560), f_q), result, f_q) +mstore(338496, result) + } +mstore(0x52a60, mulmod(mload(0x52a40), mload(0x48a00), f_q)) +mstore(0x52a80, mulmod(sub(f_q, mload(0x52a60)), mload(0x49d80), f_q)) +mstore(0x52aa0, mulmod(1, mload(0x49d80), f_q)) +mstore(0x52ac0, addmod(mload(0x52a20), mload(0x52a80), f_q)) +{ + let result := mulmod(mload(0xc540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc5a0), mload(0x48560), f_q), result, f_q) +mstore(338656, result) + } +mstore(0x52b00, mulmod(mload(0x52ae0), mload(0x48a00), f_q)) +mstore(0x52b20, mulmod(sub(f_q, mload(0x52b00)), mload(0x49da0), f_q)) +mstore(0x52b40, mulmod(1, mload(0x49da0), f_q)) +mstore(0x52b60, addmod(mload(0x52ac0), mload(0x52b20), f_q)) +{ + let result := mulmod(mload(0xc5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc620), mload(0x48560), f_q), result, f_q) +mstore(338816, result) + } +mstore(0x52ba0, mulmod(mload(0x52b80), mload(0x48a00), f_q)) +mstore(0x52bc0, mulmod(sub(f_q, mload(0x52ba0)), mload(0x49dc0), f_q)) +mstore(0x52be0, mulmod(1, mload(0x49dc0), f_q)) +mstore(0x52c00, addmod(mload(0x52b60), mload(0x52bc0), f_q)) +{ + let result := mulmod(mload(0xc640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc6a0), mload(0x48560), f_q), result, f_q) +mstore(338976, result) + } +mstore(0x52c40, mulmod(mload(0x52c20), mload(0x48a00), f_q)) +mstore(0x52c60, mulmod(sub(f_q, mload(0x52c40)), mload(0x49de0), f_q)) +mstore(0x52c80, mulmod(1, mload(0x49de0), f_q)) +mstore(0x52ca0, addmod(mload(0x52c00), mload(0x52c60), f_q)) +{ + let result := mulmod(mload(0xc6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc720), mload(0x48560), f_q), result, f_q) +mstore(339136, result) + } +mstore(0x52ce0, mulmod(mload(0x52cc0), mload(0x48a00), f_q)) +mstore(0x52d00, mulmod(sub(f_q, mload(0x52ce0)), mload(0x49e00), f_q)) +mstore(0x52d20, mulmod(1, mload(0x49e00), f_q)) +mstore(0x52d40, addmod(mload(0x52ca0), mload(0x52d00), f_q)) +{ + let result := mulmod(mload(0xc740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc7a0), mload(0x48560), f_q), result, f_q) +mstore(339296, result) + } +mstore(0x52d80, mulmod(mload(0x52d60), mload(0x48a00), f_q)) +mstore(0x52da0, mulmod(sub(f_q, mload(0x52d80)), mload(0x49e20), f_q)) +mstore(0x52dc0, mulmod(1, mload(0x49e20), f_q)) +mstore(0x52de0, addmod(mload(0x52d40), mload(0x52da0), f_q)) +{ + let result := mulmod(mload(0xc7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc820), mload(0x48560), f_q), result, f_q) +mstore(339456, result) + } +mstore(0x52e20, mulmod(mload(0x52e00), mload(0x48a00), f_q)) +mstore(0x52e40, mulmod(sub(f_q, mload(0x52e20)), mload(0x49e40), f_q)) +mstore(0x52e60, mulmod(1, mload(0x49e40), f_q)) +mstore(0x52e80, addmod(mload(0x52de0), mload(0x52e40), f_q)) +{ + let result := mulmod(mload(0xc840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc8a0), mload(0x48560), f_q), result, f_q) +mstore(339616, result) + } +mstore(0x52ec0, mulmod(mload(0x52ea0), mload(0x48a00), f_q)) +mstore(0x52ee0, mulmod(sub(f_q, mload(0x52ec0)), mload(0x49e60), f_q)) +mstore(0x52f00, mulmod(1, mload(0x49e60), f_q)) +mstore(0x52f20, addmod(mload(0x52e80), mload(0x52ee0), f_q)) +{ + let result := mulmod(mload(0xc8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc920), mload(0x48560), f_q), result, f_q) +mstore(339776, result) + } +mstore(0x52f60, mulmod(mload(0x52f40), mload(0x48a00), f_q)) +mstore(0x52f80, mulmod(sub(f_q, mload(0x52f60)), mload(0x49e80), f_q)) +mstore(0x52fa0, mulmod(1, mload(0x49e80), f_q)) +mstore(0x52fc0, addmod(mload(0x52f20), mload(0x52f80), f_q)) +{ + let result := mulmod(mload(0xc940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xc980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xc9a0), mload(0x48560), f_q), result, f_q) +mstore(339936, result) + } +mstore(0x53000, mulmod(mload(0x52fe0), mload(0x48a00), f_q)) +mstore(0x53020, mulmod(sub(f_q, mload(0x53000)), mload(0x49ea0), f_q)) +mstore(0x53040, mulmod(1, mload(0x49ea0), f_q)) +mstore(0x53060, addmod(mload(0x52fc0), mload(0x53020), f_q)) +{ + let result := mulmod(mload(0xc9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xc9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xca00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xca20), mload(0x48560), f_q), result, f_q) +mstore(340096, result) + } +mstore(0x530a0, mulmod(mload(0x53080), mload(0x48a00), f_q)) +mstore(0x530c0, mulmod(sub(f_q, mload(0x530a0)), mload(0x49ec0), f_q)) +mstore(0x530e0, mulmod(1, mload(0x49ec0), f_q)) +mstore(0x53100, addmod(mload(0x53060), mload(0x530c0), f_q)) +{ + let result := mulmod(mload(0xca40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xca60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xca80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcaa0), mload(0x48560), f_q), result, f_q) +mstore(340256, result) + } +mstore(0x53140, mulmod(mload(0x53120), mload(0x48a00), f_q)) +mstore(0x53160, mulmod(sub(f_q, mload(0x53140)), mload(0x49ee0), f_q)) +mstore(0x53180, mulmod(1, mload(0x49ee0), f_q)) +mstore(0x531a0, addmod(mload(0x53100), mload(0x53160), f_q)) +{ + let result := mulmod(mload(0xcac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcb00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcb20), mload(0x48560), f_q), result, f_q) +mstore(340416, result) + } +mstore(0x531e0, mulmod(mload(0x531c0), mload(0x48a00), f_q)) +mstore(0x53200, mulmod(sub(f_q, mload(0x531e0)), mload(0x49f00), f_q)) +mstore(0x53220, mulmod(1, mload(0x49f00), f_q)) +mstore(0x53240, addmod(mload(0x531a0), mload(0x53200), f_q)) +{ + let result := mulmod(mload(0xcb40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcb60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcb80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcba0), mload(0x48560), f_q), result, f_q) +mstore(340576, result) + } +mstore(0x53280, mulmod(mload(0x53260), mload(0x48a00), f_q)) +mstore(0x532a0, mulmod(sub(f_q, mload(0x53280)), mload(0x49f20), f_q)) +mstore(0x532c0, mulmod(1, mload(0x49f20), f_q)) +mstore(0x532e0, addmod(mload(0x53240), mload(0x532a0), f_q)) +{ + let result := mulmod(mload(0xcbc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcbe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcc00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcc20), mload(0x48560), f_q), result, f_q) +mstore(340736, result) + } +mstore(0x53320, mulmod(mload(0x53300), mload(0x48a00), f_q)) +mstore(0x53340, mulmod(sub(f_q, mload(0x53320)), mload(0x49f40), f_q)) +mstore(0x53360, mulmod(1, mload(0x49f40), f_q)) +mstore(0x53380, addmod(mload(0x532e0), mload(0x53340), f_q)) +{ + let result := mulmod(mload(0xcc40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcc60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcc80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcca0), mload(0x48560), f_q), result, f_q) +mstore(340896, result) + } +mstore(0x533c0, mulmod(mload(0x533a0), mload(0x48a00), f_q)) +mstore(0x533e0, mulmod(sub(f_q, mload(0x533c0)), mload(0x49f60), f_q)) +mstore(0x53400, mulmod(1, mload(0x49f60), f_q)) +mstore(0x53420, addmod(mload(0x53380), mload(0x533e0), f_q)) +{ + let result := mulmod(mload(0xccc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcce0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcd00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcd20), mload(0x48560), f_q), result, f_q) +mstore(341056, result) + } +mstore(0x53460, mulmod(mload(0x53440), mload(0x48a00), f_q)) +mstore(0x53480, mulmod(sub(f_q, mload(0x53460)), mload(0x49f80), f_q)) +mstore(0x534a0, mulmod(1, mload(0x49f80), f_q)) +mstore(0x534c0, addmod(mload(0x53420), mload(0x53480), f_q)) +{ + let result := mulmod(mload(0xcd40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcd60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcd80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcda0), mload(0x48560), f_q), result, f_q) +mstore(341216, result) + } +mstore(0x53500, mulmod(mload(0x534e0), mload(0x48a00), f_q)) +mstore(0x53520, mulmod(sub(f_q, mload(0x53500)), mload(0x49fa0), f_q)) +mstore(0x53540, mulmod(1, mload(0x49fa0), f_q)) +mstore(0x53560, addmod(mload(0x534c0), mload(0x53520), f_q)) +{ + let result := mulmod(mload(0xcdc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcde0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xce00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xce20), mload(0x48560), f_q), result, f_q) +mstore(341376, result) + } +mstore(0x535a0, mulmod(mload(0x53580), mload(0x48a00), f_q)) +mstore(0x535c0, mulmod(sub(f_q, mload(0x535a0)), mload(0x49fc0), f_q)) +mstore(0x535e0, mulmod(1, mload(0x49fc0), f_q)) +mstore(0x53600, addmod(mload(0x53560), mload(0x535c0), f_q)) +{ + let result := mulmod(mload(0xce40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xce60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xce80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcea0), mload(0x48560), f_q), result, f_q) +mstore(341536, result) + } +mstore(0x53640, mulmod(mload(0x53620), mload(0x48a00), f_q)) +mstore(0x53660, mulmod(sub(f_q, mload(0x53640)), mload(0x49fe0), f_q)) +mstore(0x53680, mulmod(1, mload(0x49fe0), f_q)) +mstore(0x536a0, addmod(mload(0x53600), mload(0x53660), f_q)) +{ + let result := mulmod(mload(0xcec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcf00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcf20), mload(0x48560), f_q), result, f_q) +mstore(341696, result) + } +mstore(0x536e0, mulmod(mload(0x536c0), mload(0x48a00), f_q)) +mstore(0x53700, mulmod(sub(f_q, mload(0x536e0)), mload(0x4a000), f_q)) +mstore(0x53720, mulmod(1, mload(0x4a000), f_q)) +mstore(0x53740, addmod(mload(0x536a0), mload(0x53700), f_q)) +{ + let result := mulmod(mload(0xcf40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcf60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xcf80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xcfa0), mload(0x48560), f_q), result, f_q) +mstore(341856, result) + } +mstore(0x53780, mulmod(mload(0x53760), mload(0x48a00), f_q)) +mstore(0x537a0, mulmod(sub(f_q, mload(0x53780)), mload(0x4a020), f_q)) +mstore(0x537c0, mulmod(1, mload(0x4a020), f_q)) +mstore(0x537e0, addmod(mload(0x53740), mload(0x537a0), f_q)) +{ + let result := mulmod(mload(0xcfc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xcfe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd020), mload(0x48560), f_q), result, f_q) +mstore(342016, result) + } +mstore(0x53820, mulmod(mload(0x53800), mload(0x48a00), f_q)) +mstore(0x53840, mulmod(sub(f_q, mload(0x53820)), mload(0x4a040), f_q)) +mstore(0x53860, mulmod(1, mload(0x4a040), f_q)) +mstore(0x53880, addmod(mload(0x537e0), mload(0x53840), f_q)) +{ + let result := mulmod(mload(0xd040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd0a0), mload(0x48560), f_q), result, f_q) +mstore(342176, result) + } +mstore(0x538c0, mulmod(mload(0x538a0), mload(0x48a00), f_q)) +mstore(0x538e0, mulmod(sub(f_q, mload(0x538c0)), mload(0x4a060), f_q)) +mstore(0x53900, mulmod(1, mload(0x4a060), f_q)) +mstore(0x53920, addmod(mload(0x53880), mload(0x538e0), f_q)) +{ + let result := mulmod(mload(0xd0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd120), mload(0x48560), f_q), result, f_q) +mstore(342336, result) + } +mstore(0x53960, mulmod(mload(0x53940), mload(0x48a00), f_q)) +mstore(0x53980, mulmod(sub(f_q, mload(0x53960)), mload(0x4a080), f_q)) +mstore(0x539a0, mulmod(1, mload(0x4a080), f_q)) +mstore(0x539c0, addmod(mload(0x53920), mload(0x53980), f_q)) +{ + let result := mulmod(mload(0xd140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd1a0), mload(0x48560), f_q), result, f_q) +mstore(342496, result) + } +mstore(0x53a00, mulmod(mload(0x539e0), mload(0x48a00), f_q)) +mstore(0x53a20, mulmod(sub(f_q, mload(0x53a00)), mload(0x4a0a0), f_q)) +mstore(0x53a40, mulmod(1, mload(0x4a0a0), f_q)) +mstore(0x53a60, addmod(mload(0x539c0), mload(0x53a20), f_q)) +{ + let result := mulmod(mload(0xd1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd220), mload(0x48560), f_q), result, f_q) +mstore(342656, result) + } +mstore(0x53aa0, mulmod(mload(0x53a80), mload(0x48a00), f_q)) +mstore(0x53ac0, mulmod(sub(f_q, mload(0x53aa0)), mload(0x4a0c0), f_q)) +mstore(0x53ae0, mulmod(1, mload(0x4a0c0), f_q)) +mstore(0x53b00, addmod(mload(0x53a60), mload(0x53ac0), f_q)) +{ + let result := mulmod(mload(0xd240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd2a0), mload(0x48560), f_q), result, f_q) +mstore(342816, result) + } +mstore(0x53b40, mulmod(mload(0x53b20), mload(0x48a00), f_q)) +mstore(0x53b60, mulmod(sub(f_q, mload(0x53b40)), mload(0x4a0e0), f_q)) +mstore(0x53b80, mulmod(1, mload(0x4a0e0), f_q)) +mstore(0x53ba0, addmod(mload(0x53b00), mload(0x53b60), f_q)) +{ + let result := mulmod(mload(0xd2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd320), mload(0x48560), f_q), result, f_q) +mstore(342976, result) + } +mstore(0x53be0, mulmod(mload(0x53bc0), mload(0x48a00), f_q)) +mstore(0x53c00, mulmod(sub(f_q, mload(0x53be0)), mload(0x4a100), f_q)) +mstore(0x53c20, mulmod(1, mload(0x4a100), f_q)) +mstore(0x53c40, addmod(mload(0x53ba0), mload(0x53c00), f_q)) +{ + let result := mulmod(mload(0xd340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd3a0), mload(0x48560), f_q), result, f_q) +mstore(343136, result) + } +mstore(0x53c80, mulmod(mload(0x53c60), mload(0x48a00), f_q)) +mstore(0x53ca0, mulmod(sub(f_q, mload(0x53c80)), mload(0x4a120), f_q)) +mstore(0x53cc0, mulmod(1, mload(0x4a120), f_q)) +mstore(0x53ce0, addmod(mload(0x53c40), mload(0x53ca0), f_q)) +{ + let result := mulmod(mload(0xd3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd420), mload(0x48560), f_q), result, f_q) +mstore(343296, result) + } +mstore(0x53d20, mulmod(mload(0x53d00), mload(0x48a00), f_q)) +mstore(0x53d40, mulmod(sub(f_q, mload(0x53d20)), mload(0x4a140), f_q)) +mstore(0x53d60, mulmod(1, mload(0x4a140), f_q)) +mstore(0x53d80, addmod(mload(0x53ce0), mload(0x53d40), f_q)) +{ + let result := mulmod(mload(0xd440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd4a0), mload(0x48560), f_q), result, f_q) +mstore(343456, result) + } +mstore(0x53dc0, mulmod(mload(0x53da0), mload(0x48a00), f_q)) +mstore(0x53de0, mulmod(sub(f_q, mload(0x53dc0)), mload(0x4a160), f_q)) +mstore(0x53e00, mulmod(1, mload(0x4a160), f_q)) +mstore(0x53e20, addmod(mload(0x53d80), mload(0x53de0), f_q)) +{ + let result := mulmod(mload(0xd4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd520), mload(0x48560), f_q), result, f_q) +mstore(343616, result) + } +mstore(0x53e60, mulmod(mload(0x53e40), mload(0x48a00), f_q)) +mstore(0x53e80, mulmod(sub(f_q, mload(0x53e60)), mload(0x4a180), f_q)) +mstore(0x53ea0, mulmod(1, mload(0x4a180), f_q)) +mstore(0x53ec0, addmod(mload(0x53e20), mload(0x53e80), f_q)) +{ + let result := mulmod(mload(0xd540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd5a0), mload(0x48560), f_q), result, f_q) +mstore(343776, result) + } +mstore(0x53f00, mulmod(mload(0x53ee0), mload(0x48a00), f_q)) +mstore(0x53f20, mulmod(sub(f_q, mload(0x53f00)), mload(0x4a1a0), f_q)) +mstore(0x53f40, mulmod(1, mload(0x4a1a0), f_q)) +mstore(0x53f60, addmod(mload(0x53ec0), mload(0x53f20), f_q)) +{ + let result := mulmod(mload(0xd5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd620), mload(0x48560), f_q), result, f_q) +mstore(343936, result) + } +mstore(0x53fa0, mulmod(mload(0x53f80), mload(0x48a00), f_q)) +mstore(0x53fc0, mulmod(sub(f_q, mload(0x53fa0)), mload(0x4a1c0), f_q)) +mstore(0x53fe0, mulmod(1, mload(0x4a1c0), f_q)) +mstore(0x54000, addmod(mload(0x53f60), mload(0x53fc0), f_q)) +{ + let result := mulmod(mload(0xd640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd6a0), mload(0x48560), f_q), result, f_q) +mstore(344096, result) + } +mstore(0x54040, mulmod(mload(0x54020), mload(0x48a00), f_q)) +mstore(0x54060, mulmod(sub(f_q, mload(0x54040)), mload(0x4a1e0), f_q)) +mstore(0x54080, mulmod(1, mload(0x4a1e0), f_q)) +mstore(0x540a0, addmod(mload(0x54000), mload(0x54060), f_q)) +{ + let result := mulmod(mload(0xd6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd720), mload(0x48560), f_q), result, f_q) +mstore(344256, result) + } +mstore(0x540e0, mulmod(mload(0x540c0), mload(0x48a00), f_q)) +mstore(0x54100, mulmod(sub(f_q, mload(0x540e0)), mload(0x4a200), f_q)) +mstore(0x54120, mulmod(1, mload(0x4a200), f_q)) +mstore(0x54140, addmod(mload(0x540a0), mload(0x54100), f_q)) +{ + let result := mulmod(mload(0xd740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd7a0), mload(0x48560), f_q), result, f_q) +mstore(344416, result) + } +mstore(0x54180, mulmod(mload(0x54160), mload(0x48a00), f_q)) +mstore(0x541a0, mulmod(sub(f_q, mload(0x54180)), mload(0x4a220), f_q)) +mstore(0x541c0, mulmod(1, mload(0x4a220), f_q)) +mstore(0x541e0, addmod(mload(0x54140), mload(0x541a0), f_q)) +{ + let result := mulmod(mload(0xd7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd820), mload(0x48560), f_q), result, f_q) +mstore(344576, result) + } +mstore(0x54220, mulmod(mload(0x54200), mload(0x48a00), f_q)) +mstore(0x54240, mulmod(sub(f_q, mload(0x54220)), mload(0x4a240), f_q)) +mstore(0x54260, mulmod(1, mload(0x4a240), f_q)) +mstore(0x54280, addmod(mload(0x541e0), mload(0x54240), f_q)) +{ + let result := mulmod(mload(0xd840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd8a0), mload(0x48560), f_q), result, f_q) +mstore(344736, result) + } +mstore(0x542c0, mulmod(mload(0x542a0), mload(0x48a00), f_q)) +mstore(0x542e0, mulmod(sub(f_q, mload(0x542c0)), mload(0x4a260), f_q)) +mstore(0x54300, mulmod(1, mload(0x4a260), f_q)) +mstore(0x54320, addmod(mload(0x54280), mload(0x542e0), f_q)) +{ + let result := mulmod(mload(0xd8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd920), mload(0x48560), f_q), result, f_q) +mstore(344896, result) + } +mstore(0x54360, mulmod(mload(0x54340), mload(0x48a00), f_q)) +mstore(0x54380, mulmod(sub(f_q, mload(0x54360)), mload(0x4a280), f_q)) +mstore(0x543a0, mulmod(1, mload(0x4a280), f_q)) +mstore(0x543c0, addmod(mload(0x54320), mload(0x54380), f_q)) +{ + let result := mulmod(mload(0xd940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xd980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xd9a0), mload(0x48560), f_q), result, f_q) +mstore(345056, result) + } +mstore(0x54400, mulmod(mload(0x543e0), mload(0x48a00), f_q)) +mstore(0x54420, mulmod(sub(f_q, mload(0x54400)), mload(0x4a2a0), f_q)) +mstore(0x54440, mulmod(1, mload(0x4a2a0), f_q)) +mstore(0x54460, addmod(mload(0x543c0), mload(0x54420), f_q)) +{ + let result := mulmod(mload(0xd9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xd9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xda00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xda20), mload(0x48560), f_q), result, f_q) +mstore(345216, result) + } +mstore(0x544a0, mulmod(mload(0x54480), mload(0x48a00), f_q)) +mstore(0x544c0, mulmod(sub(f_q, mload(0x544a0)), mload(0x4a2c0), f_q)) +mstore(0x544e0, mulmod(1, mload(0x4a2c0), f_q)) +mstore(0x54500, addmod(mload(0x54460), mload(0x544c0), f_q)) +{ + let result := mulmod(mload(0xda40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xda60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xda80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdaa0), mload(0x48560), f_q), result, f_q) +mstore(345376, result) + } +mstore(0x54540, mulmod(mload(0x54520), mload(0x48a00), f_q)) +mstore(0x54560, mulmod(sub(f_q, mload(0x54540)), mload(0x4a2e0), f_q)) +mstore(0x54580, mulmod(1, mload(0x4a2e0), f_q)) +mstore(0x545a0, addmod(mload(0x54500), mload(0x54560), f_q)) +{ + let result := mulmod(mload(0xdac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdb00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdb20), mload(0x48560), f_q), result, f_q) +mstore(345536, result) + } +mstore(0x545e0, mulmod(mload(0x545c0), mload(0x48a00), f_q)) +mstore(0x54600, mulmod(sub(f_q, mload(0x545e0)), mload(0x4a300), f_q)) +mstore(0x54620, mulmod(1, mload(0x4a300), f_q)) +mstore(0x54640, addmod(mload(0x545a0), mload(0x54600), f_q)) +{ + let result := mulmod(mload(0xdb40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdb60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdb80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdba0), mload(0x48560), f_q), result, f_q) +mstore(345696, result) + } +mstore(0x54680, mulmod(mload(0x54660), mload(0x48a00), f_q)) +mstore(0x546a0, mulmod(sub(f_q, mload(0x54680)), mload(0x4a320), f_q)) +mstore(0x546c0, mulmod(1, mload(0x4a320), f_q)) +mstore(0x546e0, addmod(mload(0x54640), mload(0x546a0), f_q)) +{ + let result := mulmod(mload(0xdbc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdbe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdc00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdc20), mload(0x48560), f_q), result, f_q) +mstore(345856, result) + } +mstore(0x54720, mulmod(mload(0x54700), mload(0x48a00), f_q)) +mstore(0x54740, mulmod(sub(f_q, mload(0x54720)), mload(0x4a340), f_q)) +mstore(0x54760, mulmod(1, mload(0x4a340), f_q)) +mstore(0x54780, addmod(mload(0x546e0), mload(0x54740), f_q)) +{ + let result := mulmod(mload(0xdc40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdc60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdc80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdca0), mload(0x48560), f_q), result, f_q) +mstore(346016, result) + } +mstore(0x547c0, mulmod(mload(0x547a0), mload(0x48a00), f_q)) +mstore(0x547e0, mulmod(sub(f_q, mload(0x547c0)), mload(0x4a360), f_q)) +mstore(0x54800, mulmod(1, mload(0x4a360), f_q)) +mstore(0x54820, addmod(mload(0x54780), mload(0x547e0), f_q)) +{ + let result := mulmod(mload(0xdcc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdce0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdd00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdd20), mload(0x48560), f_q), result, f_q) +mstore(346176, result) + } +mstore(0x54860, mulmod(mload(0x54840), mload(0x48a00), f_q)) +mstore(0x54880, mulmod(sub(f_q, mload(0x54860)), mload(0x4a380), f_q)) +mstore(0x548a0, mulmod(1, mload(0x4a380), f_q)) +mstore(0x548c0, addmod(mload(0x54820), mload(0x54880), f_q)) +{ + let result := mulmod(mload(0xdd40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdd60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdd80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdda0), mload(0x48560), f_q), result, f_q) +mstore(346336, result) + } +mstore(0x54900, mulmod(mload(0x548e0), mload(0x48a00), f_q)) +mstore(0x54920, mulmod(sub(f_q, mload(0x54900)), mload(0x4a3a0), f_q)) +mstore(0x54940, mulmod(1, mload(0x4a3a0), f_q)) +mstore(0x54960, addmod(mload(0x548c0), mload(0x54920), f_q)) +{ + let result := mulmod(mload(0xddc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdde0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xde00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xde20), mload(0x48560), f_q), result, f_q) +mstore(346496, result) + } +mstore(0x549a0, mulmod(mload(0x54980), mload(0x48a00), f_q)) +mstore(0x549c0, mulmod(sub(f_q, mload(0x549a0)), mload(0x4a3c0), f_q)) +mstore(0x549e0, mulmod(1, mload(0x4a3c0), f_q)) +mstore(0x54a00, addmod(mload(0x54960), mload(0x549c0), f_q)) +{ + let result := mulmod(mload(0xde40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xde60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xde80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdea0), mload(0x48560), f_q), result, f_q) +mstore(346656, result) + } +mstore(0x54a40, mulmod(mload(0x54a20), mload(0x48a00), f_q)) +mstore(0x54a60, mulmod(sub(f_q, mload(0x54a40)), mload(0x4a3e0), f_q)) +mstore(0x54a80, mulmod(1, mload(0x4a3e0), f_q)) +mstore(0x54aa0, addmod(mload(0x54a00), mload(0x54a60), f_q)) +{ + let result := mulmod(mload(0xdec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdf00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdf20), mload(0x48560), f_q), result, f_q) +mstore(346816, result) + } +mstore(0x54ae0, mulmod(mload(0x54ac0), mload(0x48a00), f_q)) +mstore(0x54b00, mulmod(sub(f_q, mload(0x54ae0)), mload(0x4a400), f_q)) +mstore(0x54b20, mulmod(1, mload(0x4a400), f_q)) +mstore(0x54b40, addmod(mload(0x54aa0), mload(0x54b00), f_q)) +{ + let result := mulmod(mload(0xdf40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdf60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xdf80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xdfa0), mload(0x48560), f_q), result, f_q) +mstore(346976, result) + } +mstore(0x54b80, mulmod(mload(0x54b60), mload(0x48a00), f_q)) +mstore(0x54ba0, mulmod(sub(f_q, mload(0x54b80)), mload(0x4a420), f_q)) +mstore(0x54bc0, mulmod(1, mload(0x4a420), f_q)) +mstore(0x54be0, addmod(mload(0x54b40), mload(0x54ba0), f_q)) +{ + let result := mulmod(mload(0xdfc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xdfe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe020), mload(0x48560), f_q), result, f_q) +mstore(347136, result) + } +mstore(0x54c20, mulmod(mload(0x54c00), mload(0x48a00), f_q)) +mstore(0x54c40, mulmod(sub(f_q, mload(0x54c20)), mload(0x4a440), f_q)) +mstore(0x54c60, mulmod(1, mload(0x4a440), f_q)) +mstore(0x54c80, addmod(mload(0x54be0), mload(0x54c40), f_q)) +{ + let result := mulmod(mload(0xe040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe0a0), mload(0x48560), f_q), result, f_q) +mstore(347296, result) + } +mstore(0x54cc0, mulmod(mload(0x54ca0), mload(0x48a00), f_q)) +mstore(0x54ce0, mulmod(sub(f_q, mload(0x54cc0)), mload(0x4a460), f_q)) +mstore(0x54d00, mulmod(1, mload(0x4a460), f_q)) +mstore(0x54d20, addmod(mload(0x54c80), mload(0x54ce0), f_q)) +{ + let result := mulmod(mload(0xe0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe120), mload(0x48560), f_q), result, f_q) +mstore(347456, result) + } +mstore(0x54d60, mulmod(mload(0x54d40), mload(0x48a00), f_q)) +mstore(0x54d80, mulmod(sub(f_q, mload(0x54d60)), mload(0x4a480), f_q)) +mstore(0x54da0, mulmod(1, mload(0x4a480), f_q)) +mstore(0x54dc0, addmod(mload(0x54d20), mload(0x54d80), f_q)) +{ + let result := mulmod(mload(0xe140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe1a0), mload(0x48560), f_q), result, f_q) +mstore(347616, result) + } +mstore(0x54e00, mulmod(mload(0x54de0), mload(0x48a00), f_q)) +mstore(0x54e20, mulmod(sub(f_q, mload(0x54e00)), mload(0x4a4a0), f_q)) +mstore(0x54e40, mulmod(1, mload(0x4a4a0), f_q)) +mstore(0x54e60, addmod(mload(0x54dc0), mload(0x54e20), f_q)) +{ + let result := mulmod(mload(0xe1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe220), mload(0x48560), f_q), result, f_q) +mstore(347776, result) + } +mstore(0x54ea0, mulmod(mload(0x54e80), mload(0x48a00), f_q)) +mstore(0x54ec0, mulmod(sub(f_q, mload(0x54ea0)), mload(0x4a4c0), f_q)) +mstore(0x54ee0, mulmod(1, mload(0x4a4c0), f_q)) +mstore(0x54f00, addmod(mload(0x54e60), mload(0x54ec0), f_q)) +{ + let result := mulmod(mload(0xe240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe2a0), mload(0x48560), f_q), result, f_q) +mstore(347936, result) + } +mstore(0x54f40, mulmod(mload(0x54f20), mload(0x48a00), f_q)) +mstore(0x54f60, mulmod(sub(f_q, mload(0x54f40)), mload(0x4a4e0), f_q)) +mstore(0x54f80, mulmod(1, mload(0x4a4e0), f_q)) +mstore(0x54fa0, addmod(mload(0x54f00), mload(0x54f60), f_q)) +{ + let result := mulmod(mload(0xe2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe320), mload(0x48560), f_q), result, f_q) +mstore(348096, result) + } +mstore(0x54fe0, mulmod(mload(0x54fc0), mload(0x48a00), f_q)) +mstore(0x55000, mulmod(sub(f_q, mload(0x54fe0)), mload(0x4a500), f_q)) +mstore(0x55020, mulmod(1, mload(0x4a500), f_q)) +mstore(0x55040, addmod(mload(0x54fa0), mload(0x55000), f_q)) +{ + let result := mulmod(mload(0xe340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe3a0), mload(0x48560), f_q), result, f_q) +mstore(348256, result) + } +mstore(0x55080, mulmod(mload(0x55060), mload(0x48a00), f_q)) +mstore(0x550a0, mulmod(sub(f_q, mload(0x55080)), mload(0x4a520), f_q)) +mstore(0x550c0, mulmod(1, mload(0x4a520), f_q)) +mstore(0x550e0, addmod(mload(0x55040), mload(0x550a0), f_q)) +{ + let result := mulmod(mload(0xe3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe420), mload(0x48560), f_q), result, f_q) +mstore(348416, result) + } +mstore(0x55120, mulmod(mload(0x55100), mload(0x48a00), f_q)) +mstore(0x55140, mulmod(sub(f_q, mload(0x55120)), mload(0x4a540), f_q)) +mstore(0x55160, mulmod(1, mload(0x4a540), f_q)) +mstore(0x55180, addmod(mload(0x550e0), mload(0x55140), f_q)) +{ + let result := mulmod(mload(0xe440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe4a0), mload(0x48560), f_q), result, f_q) +mstore(348576, result) + } +mstore(0x551c0, mulmod(mload(0x551a0), mload(0x48a00), f_q)) +mstore(0x551e0, mulmod(sub(f_q, mload(0x551c0)), mload(0x4a560), f_q)) +mstore(0x55200, mulmod(1, mload(0x4a560), f_q)) +mstore(0x55220, addmod(mload(0x55180), mload(0x551e0), f_q)) +{ + let result := mulmod(mload(0xe4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe520), mload(0x48560), f_q), result, f_q) +mstore(348736, result) + } +mstore(0x55260, mulmod(mload(0x55240), mload(0x48a00), f_q)) +mstore(0x55280, mulmod(sub(f_q, mload(0x55260)), mload(0x4a580), f_q)) +mstore(0x552a0, mulmod(1, mload(0x4a580), f_q)) +mstore(0x552c0, addmod(mload(0x55220), mload(0x55280), f_q)) +{ + let result := mulmod(mload(0xe540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe5a0), mload(0x48560), f_q), result, f_q) +mstore(348896, result) + } +mstore(0x55300, mulmod(mload(0x552e0), mload(0x48a00), f_q)) +mstore(0x55320, mulmod(sub(f_q, mload(0x55300)), mload(0x4a5a0), f_q)) +mstore(0x55340, mulmod(1, mload(0x4a5a0), f_q)) +mstore(0x55360, addmod(mload(0x552c0), mload(0x55320), f_q)) +{ + let result := mulmod(mload(0xe5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe620), mload(0x48560), f_q), result, f_q) +mstore(349056, result) + } +mstore(0x553a0, mulmod(mload(0x55380), mload(0x48a00), f_q)) +mstore(0x553c0, mulmod(sub(f_q, mload(0x553a0)), mload(0x4a5c0), f_q)) +mstore(0x553e0, mulmod(1, mload(0x4a5c0), f_q)) +mstore(0x55400, addmod(mload(0x55360), mload(0x553c0), f_q)) +{ + let result := mulmod(mload(0xe640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe6a0), mload(0x48560), f_q), result, f_q) +mstore(349216, result) + } +mstore(0x55440, mulmod(mload(0x55420), mload(0x48a00), f_q)) +mstore(0x55460, mulmod(sub(f_q, mload(0x55440)), mload(0x4a5e0), f_q)) +mstore(0x55480, mulmod(1, mload(0x4a5e0), f_q)) +mstore(0x554a0, addmod(mload(0x55400), mload(0x55460), f_q)) +{ + let result := mulmod(mload(0xe6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe720), mload(0x48560), f_q), result, f_q) +mstore(349376, result) + } +mstore(0x554e0, mulmod(mload(0x554c0), mload(0x48a00), f_q)) +mstore(0x55500, mulmod(sub(f_q, mload(0x554e0)), mload(0x4a600), f_q)) +mstore(0x55520, mulmod(1, mload(0x4a600), f_q)) +mstore(0x55540, addmod(mload(0x554a0), mload(0x55500), f_q)) +{ + let result := mulmod(mload(0xe740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe7a0), mload(0x48560), f_q), result, f_q) +mstore(349536, result) + } +mstore(0x55580, mulmod(mload(0x55560), mload(0x48a00), f_q)) +mstore(0x555a0, mulmod(sub(f_q, mload(0x55580)), mload(0x4a620), f_q)) +mstore(0x555c0, mulmod(1, mload(0x4a620), f_q)) +mstore(0x555e0, addmod(mload(0x55540), mload(0x555a0), f_q)) +{ + let result := mulmod(mload(0xe7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe820), mload(0x48560), f_q), result, f_q) +mstore(349696, result) + } +mstore(0x55620, mulmod(mload(0x55600), mload(0x48a00), f_q)) +mstore(0x55640, mulmod(sub(f_q, mload(0x55620)), mload(0x4a640), f_q)) +mstore(0x55660, mulmod(1, mload(0x4a640), f_q)) +mstore(0x55680, addmod(mload(0x555e0), mload(0x55640), f_q)) +{ + let result := mulmod(mload(0xe840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe8a0), mload(0x48560), f_q), result, f_q) +mstore(349856, result) + } +mstore(0x556c0, mulmod(mload(0x556a0), mload(0x48a00), f_q)) +mstore(0x556e0, mulmod(sub(f_q, mload(0x556c0)), mload(0x4a660), f_q)) +mstore(0x55700, mulmod(1, mload(0x4a660), f_q)) +mstore(0x55720, addmod(mload(0x55680), mload(0x556e0), f_q)) +{ + let result := mulmod(mload(0xe8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe920), mload(0x48560), f_q), result, f_q) +mstore(350016, result) + } +mstore(0x55760, mulmod(mload(0x55740), mload(0x48a00), f_q)) +mstore(0x55780, mulmod(sub(f_q, mload(0x55760)), mload(0x4a680), f_q)) +mstore(0x557a0, mulmod(1, mload(0x4a680), f_q)) +mstore(0x557c0, addmod(mload(0x55720), mload(0x55780), f_q)) +{ + let result := mulmod(mload(0xe940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xe980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xe9a0), mload(0x48560), f_q), result, f_q) +mstore(350176, result) + } +mstore(0x55800, mulmod(mload(0x557e0), mload(0x48a00), f_q)) +mstore(0x55820, mulmod(sub(f_q, mload(0x55800)), mload(0x4a6a0), f_q)) +mstore(0x55840, mulmod(1, mload(0x4a6a0), f_q)) +mstore(0x55860, addmod(mload(0x557c0), mload(0x55820), f_q)) +{ + let result := mulmod(mload(0xe9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xe9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xea00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xea20), mload(0x48560), f_q), result, f_q) +mstore(350336, result) + } +mstore(0x558a0, mulmod(mload(0x55880), mload(0x48a00), f_q)) +mstore(0x558c0, mulmod(sub(f_q, mload(0x558a0)), mload(0x4a6c0), f_q)) +mstore(0x558e0, mulmod(1, mload(0x4a6c0), f_q)) +mstore(0x55900, addmod(mload(0x55860), mload(0x558c0), f_q)) +{ + let result := mulmod(mload(0xea40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xea60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xea80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeaa0), mload(0x48560), f_q), result, f_q) +mstore(350496, result) + } +mstore(0x55940, mulmod(mload(0x55920), mload(0x48a00), f_q)) +mstore(0x55960, mulmod(sub(f_q, mload(0x55940)), mload(0x4a6e0), f_q)) +mstore(0x55980, mulmod(1, mload(0x4a6e0), f_q)) +mstore(0x559a0, addmod(mload(0x55900), mload(0x55960), f_q)) +{ + let result := mulmod(mload(0xeac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xeae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xeb00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeb20), mload(0x48560), f_q), result, f_q) +mstore(350656, result) + } +mstore(0x559e0, mulmod(mload(0x559c0), mload(0x48a00), f_q)) +mstore(0x55a00, mulmod(sub(f_q, mload(0x559e0)), mload(0x4a700), f_q)) +mstore(0x55a20, mulmod(1, mload(0x4a700), f_q)) +mstore(0x55a40, addmod(mload(0x559a0), mload(0x55a00), f_q)) +{ + let result := mulmod(mload(0xeb40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xeb60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xeb80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeba0), mload(0x48560), f_q), result, f_q) +mstore(350816, result) + } +mstore(0x55a80, mulmod(mload(0x55a60), mload(0x48a00), f_q)) +mstore(0x55aa0, mulmod(sub(f_q, mload(0x55a80)), mload(0x4a720), f_q)) +mstore(0x55ac0, mulmod(1, mload(0x4a720), f_q)) +mstore(0x55ae0, addmod(mload(0x55a40), mload(0x55aa0), f_q)) +{ + let result := mulmod(mload(0xebc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xebe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xec00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xec20), mload(0x48560), f_q), result, f_q) +mstore(350976, result) + } +mstore(0x55b20, mulmod(mload(0x55b00), mload(0x48a00), f_q)) +mstore(0x55b40, mulmod(sub(f_q, mload(0x55b20)), mload(0x4a740), f_q)) +mstore(0x55b60, mulmod(1, mload(0x4a740), f_q)) +mstore(0x55b80, addmod(mload(0x55ae0), mload(0x55b40), f_q)) +{ + let result := mulmod(mload(0xec40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xec60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xec80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeca0), mload(0x48560), f_q), result, f_q) +mstore(351136, result) + } +mstore(0x55bc0, mulmod(mload(0x55ba0), mload(0x48a00), f_q)) +mstore(0x55be0, mulmod(sub(f_q, mload(0x55bc0)), mload(0x4a760), f_q)) +mstore(0x55c00, mulmod(1, mload(0x4a760), f_q)) +mstore(0x55c20, addmod(mload(0x55b80), mload(0x55be0), f_q)) +{ + let result := mulmod(mload(0xecc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xece0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xed00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xed20), mload(0x48560), f_q), result, f_q) +mstore(351296, result) + } +mstore(0x55c60, mulmod(mload(0x55c40), mload(0x48a00), f_q)) +mstore(0x55c80, mulmod(sub(f_q, mload(0x55c60)), mload(0x4a780), f_q)) +mstore(0x55ca0, mulmod(1, mload(0x4a780), f_q)) +mstore(0x55cc0, addmod(mload(0x55c20), mload(0x55c80), f_q)) +{ + let result := mulmod(mload(0xed40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xed60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xed80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeda0), mload(0x48560), f_q), result, f_q) +mstore(351456, result) + } +mstore(0x55d00, mulmod(mload(0x55ce0), mload(0x48a00), f_q)) +mstore(0x55d20, mulmod(sub(f_q, mload(0x55d00)), mload(0x4a7a0), f_q)) +mstore(0x55d40, mulmod(1, mload(0x4a7a0), f_q)) +mstore(0x55d60, addmod(mload(0x55cc0), mload(0x55d20), f_q)) +{ + let result := mulmod(mload(0xedc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xede0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xee00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xee20), mload(0x48560), f_q), result, f_q) +mstore(351616, result) + } +mstore(0x55da0, mulmod(mload(0x55d80), mload(0x48a00), f_q)) +mstore(0x55dc0, mulmod(sub(f_q, mload(0x55da0)), mload(0x4a7c0), f_q)) +mstore(0x55de0, mulmod(1, mload(0x4a7c0), f_q)) +mstore(0x55e00, addmod(mload(0x55d60), mload(0x55dc0), f_q)) +{ + let result := mulmod(mload(0xee40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xee60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xee80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xeea0), mload(0x48560), f_q), result, f_q) +mstore(351776, result) + } +mstore(0x55e40, mulmod(mload(0x55e20), mload(0x48a00), f_q)) +mstore(0x55e60, mulmod(sub(f_q, mload(0x55e40)), mload(0x4a7e0), f_q)) +mstore(0x55e80, mulmod(1, mload(0x4a7e0), f_q)) +mstore(0x55ea0, addmod(mload(0x55e00), mload(0x55e60), f_q)) +{ + let result := mulmod(mload(0xeec0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xeee0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xef00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xef20), mload(0x48560), f_q), result, f_q) +mstore(351936, result) + } +mstore(0x55ee0, mulmod(mload(0x55ec0), mload(0x48a00), f_q)) +mstore(0x55f00, mulmod(sub(f_q, mload(0x55ee0)), mload(0x4a800), f_q)) +mstore(0x55f20, mulmod(1, mload(0x4a800), f_q)) +mstore(0x55f40, addmod(mload(0x55ea0), mload(0x55f00), f_q)) +{ + let result := mulmod(mload(0xef40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xef60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xef80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xefa0), mload(0x48560), f_q), result, f_q) +mstore(352096, result) + } +mstore(0x55f80, mulmod(mload(0x55f60), mload(0x48a00), f_q)) +mstore(0x55fa0, mulmod(sub(f_q, mload(0x55f80)), mload(0x4a820), f_q)) +mstore(0x55fc0, mulmod(1, mload(0x4a820), f_q)) +mstore(0x55fe0, addmod(mload(0x55f40), mload(0x55fa0), f_q)) +{ + let result := mulmod(mload(0xefc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xefe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf000), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf020), mload(0x48560), f_q), result, f_q) +mstore(352256, result) + } +mstore(0x56020, mulmod(mload(0x56000), mload(0x48a00), f_q)) +mstore(0x56040, mulmod(sub(f_q, mload(0x56020)), mload(0x4a840), f_q)) +mstore(0x56060, mulmod(1, mload(0x4a840), f_q)) +mstore(0x56080, addmod(mload(0x55fe0), mload(0x56040), f_q)) +{ + let result := mulmod(mload(0xf040), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf060), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf080), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf0a0), mload(0x48560), f_q), result, f_q) +mstore(352416, result) + } +mstore(0x560c0, mulmod(mload(0x560a0), mload(0x48a00), f_q)) +mstore(0x560e0, mulmod(sub(f_q, mload(0x560c0)), mload(0x4a860), f_q)) +mstore(0x56100, mulmod(1, mload(0x4a860), f_q)) +mstore(0x56120, addmod(mload(0x56080), mload(0x560e0), f_q)) +{ + let result := mulmod(mload(0xf0c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf0e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf100), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf120), mload(0x48560), f_q), result, f_q) +mstore(352576, result) + } +mstore(0x56160, mulmod(mload(0x56140), mload(0x48a00), f_q)) +mstore(0x56180, mulmod(sub(f_q, mload(0x56160)), mload(0x4a880), f_q)) +mstore(0x561a0, mulmod(1, mload(0x4a880), f_q)) +mstore(0x561c0, addmod(mload(0x56120), mload(0x56180), f_q)) +{ + let result := mulmod(mload(0xf140), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf160), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf180), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf1a0), mload(0x48560), f_q), result, f_q) +mstore(352736, result) + } +mstore(0x56200, mulmod(mload(0x561e0), mload(0x48a00), f_q)) +mstore(0x56220, mulmod(sub(f_q, mload(0x56200)), mload(0x4a8a0), f_q)) +mstore(0x56240, mulmod(1, mload(0x4a8a0), f_q)) +mstore(0x56260, addmod(mload(0x561c0), mload(0x56220), f_q)) +{ + let result := mulmod(mload(0xf1c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf1e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf200), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf220), mload(0x48560), f_q), result, f_q) +mstore(352896, result) + } +mstore(0x562a0, mulmod(mload(0x56280), mload(0x48a00), f_q)) +mstore(0x562c0, mulmod(sub(f_q, mload(0x562a0)), mload(0x4a8c0), f_q)) +mstore(0x562e0, mulmod(1, mload(0x4a8c0), f_q)) +mstore(0x56300, addmod(mload(0x56260), mload(0x562c0), f_q)) +{ + let result := mulmod(mload(0xf240), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf260), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf280), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf2a0), mload(0x48560), f_q), result, f_q) +mstore(353056, result) + } +mstore(0x56340, mulmod(mload(0x56320), mload(0x48a00), f_q)) +mstore(0x56360, mulmod(sub(f_q, mload(0x56340)), mload(0x4a8e0), f_q)) +mstore(0x56380, mulmod(1, mload(0x4a8e0), f_q)) +mstore(0x563a0, addmod(mload(0x56300), mload(0x56360), f_q)) +{ + let result := mulmod(mload(0xf2c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf2e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf300), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf320), mload(0x48560), f_q), result, f_q) +mstore(353216, result) + } +mstore(0x563e0, mulmod(mload(0x563c0), mload(0x48a00), f_q)) +mstore(0x56400, mulmod(sub(f_q, mload(0x563e0)), mload(0x4a900), f_q)) +mstore(0x56420, mulmod(1, mload(0x4a900), f_q)) +mstore(0x56440, addmod(mload(0x563a0), mload(0x56400), f_q)) +{ + let result := mulmod(mload(0xf340), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf360), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf380), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf3a0), mload(0x48560), f_q), result, f_q) +mstore(353376, result) + } +mstore(0x56480, mulmod(mload(0x56460), mload(0x48a00), f_q)) +mstore(0x564a0, mulmod(sub(f_q, mload(0x56480)), mload(0x4a920), f_q)) +mstore(0x564c0, mulmod(1, mload(0x4a920), f_q)) +mstore(0x564e0, addmod(mload(0x56440), mload(0x564a0), f_q)) +{ + let result := mulmod(mload(0xf3c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf3e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf400), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf420), mload(0x48560), f_q), result, f_q) +mstore(353536, result) + } +mstore(0x56520, mulmod(mload(0x56500), mload(0x48a00), f_q)) +mstore(0x56540, mulmod(sub(f_q, mload(0x56520)), mload(0x4a940), f_q)) +mstore(0x56560, mulmod(1, mload(0x4a940), f_q)) +mstore(0x56580, addmod(mload(0x564e0), mload(0x56540), f_q)) +{ + let result := mulmod(mload(0xf440), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf460), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf480), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf4a0), mload(0x48560), f_q), result, f_q) +mstore(353696, result) + } +mstore(0x565c0, mulmod(mload(0x565a0), mload(0x48a00), f_q)) +mstore(0x565e0, mulmod(sub(f_q, mload(0x565c0)), mload(0x4a960), f_q)) +mstore(0x56600, mulmod(1, mload(0x4a960), f_q)) +mstore(0x56620, addmod(mload(0x56580), mload(0x565e0), f_q)) +{ + let result := mulmod(mload(0xf4c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf4e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf500), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf520), mload(0x48560), f_q), result, f_q) +mstore(353856, result) + } +mstore(0x56660, mulmod(mload(0x56640), mload(0x48a00), f_q)) +mstore(0x56680, mulmod(sub(f_q, mload(0x56660)), mload(0x4a980), f_q)) +mstore(0x566a0, mulmod(1, mload(0x4a980), f_q)) +mstore(0x566c0, addmod(mload(0x56620), mload(0x56680), f_q)) +{ + let result := mulmod(mload(0xf540), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf560), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf580), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf5a0), mload(0x48560), f_q), result, f_q) +mstore(354016, result) + } +mstore(0x56700, mulmod(mload(0x566e0), mload(0x48a00), f_q)) +mstore(0x56720, mulmod(sub(f_q, mload(0x56700)), mload(0x4a9a0), f_q)) +mstore(0x56740, mulmod(1, mload(0x4a9a0), f_q)) +mstore(0x56760, addmod(mload(0x566c0), mload(0x56720), f_q)) +{ + let result := mulmod(mload(0xf5c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf5e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf600), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf620), mload(0x48560), f_q), result, f_q) +mstore(354176, result) + } +mstore(0x567a0, mulmod(mload(0x56780), mload(0x48a00), f_q)) +mstore(0x567c0, mulmod(sub(f_q, mload(0x567a0)), mload(0x4a9c0), f_q)) +mstore(0x567e0, mulmod(1, mload(0x4a9c0), f_q)) +mstore(0x56800, addmod(mload(0x56760), mload(0x567c0), f_q)) +{ + let result := mulmod(mload(0xf640), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf660), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf680), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf6a0), mload(0x48560), f_q), result, f_q) +mstore(354336, result) + } +mstore(0x56840, mulmod(mload(0x56820), mload(0x48a00), f_q)) +mstore(0x56860, mulmod(sub(f_q, mload(0x56840)), mload(0x4a9e0), f_q)) +mstore(0x56880, mulmod(1, mload(0x4a9e0), f_q)) +mstore(0x568a0, addmod(mload(0x56800), mload(0x56860), f_q)) +{ + let result := mulmod(mload(0xf6c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf6e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf700), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf720), mload(0x48560), f_q), result, f_q) +mstore(354496, result) + } +mstore(0x568e0, mulmod(mload(0x568c0), mload(0x48a00), f_q)) +mstore(0x56900, mulmod(sub(f_q, mload(0x568e0)), mload(0x4aa00), f_q)) +mstore(0x56920, mulmod(1, mload(0x4aa00), f_q)) +mstore(0x56940, addmod(mload(0x568a0), mload(0x56900), f_q)) +{ + let result := mulmod(mload(0xf740), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf760), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf780), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf7a0), mload(0x48560), f_q), result, f_q) +mstore(354656, result) + } +mstore(0x56980, mulmod(mload(0x56960), mload(0x48a00), f_q)) +mstore(0x569a0, mulmod(sub(f_q, mload(0x56980)), mload(0x4aa20), f_q)) +mstore(0x569c0, mulmod(1, mload(0x4aa20), f_q)) +mstore(0x569e0, addmod(mload(0x56940), mload(0x569a0), f_q)) +{ + let result := mulmod(mload(0xf7c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf7e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf800), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf820), mload(0x48560), f_q), result, f_q) +mstore(354816, result) + } +mstore(0x56a20, mulmod(mload(0x56a00), mload(0x48a00), f_q)) +mstore(0x56a40, mulmod(sub(f_q, mload(0x56a20)), mload(0x4aa40), f_q)) +mstore(0x56a60, mulmod(1, mload(0x4aa40), f_q)) +mstore(0x56a80, addmod(mload(0x569e0), mload(0x56a40), f_q)) +{ + let result := mulmod(mload(0xf840), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf860), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf880), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf8a0), mload(0x48560), f_q), result, f_q) +mstore(354976, result) + } +mstore(0x56ac0, mulmod(mload(0x56aa0), mload(0x48a00), f_q)) +mstore(0x56ae0, mulmod(sub(f_q, mload(0x56ac0)), mload(0x4aa60), f_q)) +mstore(0x56b00, mulmod(1, mload(0x4aa60), f_q)) +mstore(0x56b20, addmod(mload(0x56a80), mload(0x56ae0), f_q)) +{ + let result := mulmod(mload(0xf8c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf8e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf900), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf920), mload(0x48560), f_q), result, f_q) +mstore(355136, result) + } +mstore(0x56b60, mulmod(mload(0x56b40), mload(0x48a00), f_q)) +mstore(0x56b80, mulmod(sub(f_q, mload(0x56b60)), mload(0x4aa80), f_q)) +mstore(0x56ba0, mulmod(1, mload(0x4aa80), f_q)) +mstore(0x56bc0, addmod(mload(0x56b20), mload(0x56b80), f_q)) +{ + let result := mulmod(mload(0xf940), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf960), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xf980), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xf9a0), mload(0x48560), f_q), result, f_q) +mstore(355296, result) + } +mstore(0x56c00, mulmod(mload(0x56be0), mload(0x48a00), f_q)) +mstore(0x56c20, mulmod(sub(f_q, mload(0x56c00)), mload(0x4aaa0), f_q)) +mstore(0x56c40, mulmod(1, mload(0x4aaa0), f_q)) +mstore(0x56c60, addmod(mload(0x56bc0), mload(0x56c20), f_q)) +{ + let result := mulmod(mload(0xf9c0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xf9e0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xfa00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xfa20), mload(0x48560), f_q), result, f_q) +mstore(355456, result) + } +mstore(0x56ca0, mulmod(mload(0x56c80), mload(0x48a00), f_q)) +mstore(0x56cc0, mulmod(sub(f_q, mload(0x56ca0)), mload(0x4aac0), f_q)) +mstore(0x56ce0, mulmod(1, mload(0x4aac0), f_q)) +mstore(0x56d00, addmod(mload(0x56c60), mload(0x56cc0), f_q)) +{ + let result := mulmod(mload(0xfa40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xfa60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xfa80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xfaa0), mload(0x48560), f_q), result, f_q) +mstore(355616, result) + } +mstore(0x56d40, mulmod(mload(0x56d20), mload(0x48a00), f_q)) +mstore(0x56d60, mulmod(sub(f_q, mload(0x56d40)), mload(0x4aae0), f_q)) +mstore(0x56d80, mulmod(1, mload(0x4aae0), f_q)) +mstore(0x56da0, addmod(mload(0x56d00), mload(0x56d60), f_q)) +{ + let result := mulmod(mload(0xfac0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xfae0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xfb00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xfb20), mload(0x48560), f_q), result, f_q) +mstore(355776, result) + } +mstore(0x56de0, mulmod(mload(0x56dc0), mload(0x48a00), f_q)) +mstore(0x56e00, mulmod(sub(f_q, mload(0x56de0)), mload(0x4ab00), f_q)) +mstore(0x56e20, mulmod(1, mload(0x4ab00), f_q)) +mstore(0x56e40, addmod(mload(0x56da0), mload(0x56e00), f_q)) +{ + let result := mulmod(mload(0xfb40), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xfb60), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xfb80), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xfba0), mload(0x48560), f_q), result, f_q) +mstore(355936, result) + } +mstore(0x56e80, mulmod(mload(0x56e60), mload(0x48a00), f_q)) +mstore(0x56ea0, mulmod(sub(f_q, mload(0x56e80)), mload(0x4ab20), f_q)) +mstore(0x56ec0, mulmod(1, mload(0x4ab20), f_q)) +mstore(0x56ee0, addmod(mload(0x56e40), mload(0x56ea0), f_q)) +{ + let result := mulmod(mload(0xfbc0), mload(0x48500), f_q) +result := addmod(mulmod(mload(0xfbe0), mload(0x48520), f_q), result, f_q) +result := addmod(mulmod(mload(0xfc00), mload(0x48540), f_q), result, f_q) +result := addmod(mulmod(mload(0xfc20), mload(0x48560), f_q), result, f_q) +mstore(356096, result) + } +mstore(0x56f20, mulmod(mload(0x56f00), mload(0x48a00), f_q)) +mstore(0x56f40, mulmod(sub(f_q, mload(0x56f20)), mload(0x4ab40), f_q)) +mstore(0x56f60, mulmod(1, mload(0x4ab40), f_q)) +mstore(0x56f80, addmod(mload(0x56ee0), mload(0x56f40), f_q)) +mstore(0x56fa0, mulmod(mload(0x56f80), 1, f_q)) +mstore(0x56fc0, mulmod(mload(0x4d780), 1, f_q)) +mstore(0x56fe0, mulmod(mload(0x4d820), 1, f_q)) +mstore(0x57000, mulmod(mload(0x4d8c0), 1, f_q)) +mstore(0x57020, mulmod(mload(0x4d960), 1, f_q)) +mstore(0x57040, mulmod(mload(0x4da00), 1, f_q)) +mstore(0x57060, mulmod(mload(0x4daa0), 1, f_q)) +mstore(0x57080, mulmod(mload(0x4db40), 1, f_q)) +mstore(0x570a0, mulmod(mload(0x4dbe0), 1, f_q)) +mstore(0x570c0, mulmod(mload(0x4dc80), 1, f_q)) +mstore(0x570e0, mulmod(mload(0x4dd20), 1, f_q)) +mstore(0x57100, mulmod(mload(0x4ddc0), 1, f_q)) +mstore(0x57120, mulmod(mload(0x4de60), 1, f_q)) +mstore(0x57140, mulmod(mload(0x4df00), 1, f_q)) +mstore(0x57160, mulmod(mload(0x4dfa0), 1, f_q)) +mstore(0x57180, mulmod(mload(0x4e040), 1, f_q)) +mstore(0x571a0, mulmod(mload(0x4e0e0), 1, f_q)) +mstore(0x571c0, mulmod(mload(0x4e180), 1, f_q)) +mstore(0x571e0, mulmod(mload(0x4e220), 1, f_q)) +mstore(0x57200, mulmod(mload(0x4e2c0), 1, f_q)) +mstore(0x57220, mulmod(mload(0x4e360), 1, f_q)) +mstore(0x57240, mulmod(mload(0x4e400), 1, f_q)) +mstore(0x57260, mulmod(mload(0x4e4a0), 1, f_q)) +mstore(0x57280, mulmod(mload(0x4e540), 1, f_q)) +mstore(0x572a0, mulmod(mload(0x4e5e0), 1, f_q)) +mstore(0x572c0, mulmod(mload(0x4e680), 1, f_q)) +mstore(0x572e0, mulmod(mload(0x4e720), 1, f_q)) +mstore(0x57300, mulmod(mload(0x4e7c0), 1, f_q)) +mstore(0x57320, mulmod(mload(0x4e860), 1, f_q)) +mstore(0x57340, mulmod(mload(0x4e900), 1, f_q)) +mstore(0x57360, mulmod(mload(0x4e9a0), 1, f_q)) +mstore(0x57380, mulmod(mload(0x4ea40), 1, f_q)) +mstore(0x573a0, mulmod(mload(0x4eae0), 1, f_q)) +mstore(0x573c0, mulmod(mload(0x4eb80), 1, f_q)) +mstore(0x573e0, mulmod(mload(0x4ec20), 1, f_q)) +mstore(0x57400, mulmod(mload(0x4ecc0), 1, f_q)) +mstore(0x57420, mulmod(mload(0x4ed60), 1, f_q)) +mstore(0x57440, mulmod(mload(0x4ee00), 1, f_q)) +mstore(0x57460, mulmod(mload(0x4eea0), 1, f_q)) +mstore(0x57480, mulmod(mload(0x4ef40), 1, f_q)) +mstore(0x574a0, mulmod(mload(0x4efe0), 1, f_q)) +mstore(0x574c0, mulmod(mload(0x4f080), 1, f_q)) +mstore(0x574e0, mulmod(mload(0x4f120), 1, f_q)) +mstore(0x57500, mulmod(mload(0x4f1c0), 1, f_q)) +mstore(0x57520, mulmod(mload(0x4f260), 1, f_q)) +mstore(0x57540, mulmod(mload(0x4f300), 1, f_q)) +mstore(0x57560, mulmod(mload(0x4f3a0), 1, f_q)) +mstore(0x57580, mulmod(mload(0x4f440), 1, f_q)) +mstore(0x575a0, mulmod(mload(0x4f4e0), 1, f_q)) +mstore(0x575c0, mulmod(mload(0x4f580), 1, f_q)) +mstore(0x575e0, mulmod(mload(0x4f620), 1, f_q)) +mstore(0x57600, mulmod(mload(0x4f6c0), 1, f_q)) +mstore(0x57620, mulmod(mload(0x4f760), 1, f_q)) +mstore(0x57640, mulmod(mload(0x4f800), 1, f_q)) +mstore(0x57660, mulmod(mload(0x4f8a0), 1, f_q)) +mstore(0x57680, mulmod(mload(0x4f940), 1, f_q)) +mstore(0x576a0, mulmod(mload(0x4f9e0), 1, f_q)) +mstore(0x576c0, mulmod(mload(0x4fa80), 1, f_q)) +mstore(0x576e0, mulmod(mload(0x4fb20), 1, f_q)) +mstore(0x57700, mulmod(mload(0x4fbc0), 1, f_q)) +mstore(0x57720, mulmod(mload(0x4fc60), 1, f_q)) +mstore(0x57740, mulmod(mload(0x4fd00), 1, f_q)) +mstore(0x57760, mulmod(mload(0x4fda0), 1, f_q)) +mstore(0x57780, mulmod(mload(0x4fe40), 1, f_q)) +mstore(0x577a0, mulmod(mload(0x4fee0), 1, f_q)) +mstore(0x577c0, mulmod(mload(0x4ff80), 1, f_q)) +mstore(0x577e0, mulmod(mload(0x50020), 1, f_q)) +mstore(0x57800, mulmod(mload(0x500c0), 1, f_q)) +mstore(0x57820, mulmod(mload(0x50160), 1, f_q)) +mstore(0x57840, mulmod(mload(0x50200), 1, f_q)) +mstore(0x57860, mulmod(mload(0x502a0), 1, f_q)) +mstore(0x57880, mulmod(mload(0x50340), 1, f_q)) +mstore(0x578a0, mulmod(mload(0x503e0), 1, f_q)) +mstore(0x578c0, mulmod(mload(0x50480), 1, f_q)) +mstore(0x578e0, mulmod(mload(0x50520), 1, f_q)) +mstore(0x57900, mulmod(mload(0x505c0), 1, f_q)) +mstore(0x57920, mulmod(mload(0x50660), 1, f_q)) +mstore(0x57940, mulmod(mload(0x50700), 1, f_q)) +mstore(0x57960, mulmod(mload(0x507a0), 1, f_q)) +mstore(0x57980, mulmod(mload(0x50840), 1, f_q)) +mstore(0x579a0, mulmod(mload(0x508e0), 1, f_q)) +mstore(0x579c0, mulmod(mload(0x50980), 1, f_q)) +mstore(0x579e0, mulmod(mload(0x50a20), 1, f_q)) +mstore(0x57a00, mulmod(mload(0x50ac0), 1, f_q)) +mstore(0x57a20, mulmod(mload(0x50b60), 1, f_q)) +mstore(0x57a40, mulmod(mload(0x50c00), 1, f_q)) +mstore(0x57a60, mulmod(mload(0x50ca0), 1, f_q)) +mstore(0x57a80, mulmod(mload(0x50d40), 1, f_q)) +mstore(0x57aa0, mulmod(mload(0x50de0), 1, f_q)) +mstore(0x57ac0, mulmod(mload(0x50e80), 1, f_q)) +mstore(0x57ae0, mulmod(mload(0x50f20), 1, f_q)) +mstore(0x57b00, mulmod(mload(0x50fc0), 1, f_q)) +mstore(0x57b20, mulmod(mload(0x51060), 1, f_q)) +mstore(0x57b40, mulmod(mload(0x51100), 1, f_q)) +mstore(0x57b60, mulmod(mload(0x511a0), 1, f_q)) +mstore(0x57b80, mulmod(mload(0x51240), 1, f_q)) +mstore(0x57ba0, mulmod(mload(0x512e0), 1, f_q)) +mstore(0x57bc0, mulmod(mload(0x51380), 1, f_q)) +mstore(0x57be0, mulmod(mload(0x51420), 1, f_q)) +mstore(0x57c00, mulmod(mload(0x514c0), 1, f_q)) +mstore(0x57c20, mulmod(mload(0x51560), 1, f_q)) +mstore(0x57c40, mulmod(mload(0x51600), 1, f_q)) +mstore(0x57c60, mulmod(mload(0x516a0), 1, f_q)) +mstore(0x57c80, mulmod(mload(0x51740), 1, f_q)) +mstore(0x57ca0, mulmod(mload(0x517e0), 1, f_q)) +mstore(0x57cc0, mulmod(mload(0x51880), 1, f_q)) +mstore(0x57ce0, mulmod(mload(0x51920), 1, f_q)) +mstore(0x57d00, mulmod(mload(0x519c0), 1, f_q)) +mstore(0x57d20, mulmod(mload(0x51a60), 1, f_q)) +mstore(0x57d40, mulmod(mload(0x51b00), 1, f_q)) +mstore(0x57d60, mulmod(mload(0x51ba0), 1, f_q)) +mstore(0x57d80, mulmod(mload(0x51c40), 1, f_q)) +mstore(0x57da0, mulmod(mload(0x51ce0), 1, f_q)) +mstore(0x57dc0, mulmod(mload(0x51d80), 1, f_q)) +mstore(0x57de0, mulmod(mload(0x51e20), 1, f_q)) +mstore(0x57e00, mulmod(mload(0x51ec0), 1, f_q)) +mstore(0x57e20, mulmod(mload(0x51f60), 1, f_q)) +mstore(0x57e40, mulmod(mload(0x52000), 1, f_q)) +mstore(0x57e60, mulmod(mload(0x520a0), 1, f_q)) +mstore(0x57e80, mulmod(mload(0x52140), 1, f_q)) +mstore(0x57ea0, mulmod(mload(0x521e0), 1, f_q)) +mstore(0x57ec0, mulmod(mload(0x52280), 1, f_q)) +mstore(0x57ee0, mulmod(mload(0x52320), 1, f_q)) +mstore(0x57f00, mulmod(mload(0x523c0), 1, f_q)) +mstore(0x57f20, mulmod(mload(0x52460), 1, f_q)) +mstore(0x57f40, mulmod(mload(0x52500), 1, f_q)) +mstore(0x57f60, mulmod(mload(0x525a0), 1, f_q)) +mstore(0x57f80, mulmod(mload(0x52640), 1, f_q)) +mstore(0x57fa0, mulmod(mload(0x526e0), 1, f_q)) +mstore(0x57fc0, mulmod(mload(0x52780), 1, f_q)) +mstore(0x57fe0, mulmod(mload(0x52820), 1, f_q)) +mstore(0x58000, mulmod(mload(0x528c0), 1, f_q)) +mstore(0x58020, mulmod(mload(0x52960), 1, f_q)) +mstore(0x58040, mulmod(mload(0x52a00), 1, f_q)) +mstore(0x58060, mulmod(mload(0x52aa0), 1, f_q)) +mstore(0x58080, mulmod(mload(0x52b40), 1, f_q)) +mstore(0x580a0, mulmod(mload(0x52be0), 1, f_q)) +mstore(0x580c0, mulmod(mload(0x52c80), 1, f_q)) +mstore(0x580e0, mulmod(mload(0x52d20), 1, f_q)) +mstore(0x58100, mulmod(mload(0x52dc0), 1, f_q)) +mstore(0x58120, mulmod(mload(0x52e60), 1, f_q)) +mstore(0x58140, mulmod(mload(0x52f00), 1, f_q)) +mstore(0x58160, mulmod(mload(0x52fa0), 1, f_q)) +mstore(0x58180, mulmod(mload(0x53040), 1, f_q)) +mstore(0x581a0, mulmod(mload(0x530e0), 1, f_q)) +mstore(0x581c0, mulmod(mload(0x53180), 1, f_q)) +mstore(0x581e0, mulmod(mload(0x53220), 1, f_q)) +mstore(0x58200, mulmod(mload(0x532c0), 1, f_q)) +mstore(0x58220, mulmod(mload(0x53360), 1, f_q)) +mstore(0x58240, mulmod(mload(0x53400), 1, f_q)) +mstore(0x58260, mulmod(mload(0x534a0), 1, f_q)) +mstore(0x58280, mulmod(mload(0x53540), 1, f_q)) +mstore(0x582a0, mulmod(mload(0x535e0), 1, f_q)) +mstore(0x582c0, mulmod(mload(0x53680), 1, f_q)) +mstore(0x582e0, mulmod(mload(0x53720), 1, f_q)) +mstore(0x58300, mulmod(mload(0x537c0), 1, f_q)) +mstore(0x58320, mulmod(mload(0x53860), 1, f_q)) +mstore(0x58340, mulmod(mload(0x53900), 1, f_q)) +mstore(0x58360, mulmod(mload(0x539a0), 1, f_q)) +mstore(0x58380, mulmod(mload(0x53a40), 1, f_q)) +mstore(0x583a0, mulmod(mload(0x53ae0), 1, f_q)) +mstore(0x583c0, mulmod(mload(0x53b80), 1, f_q)) +mstore(0x583e0, mulmod(mload(0x53c20), 1, f_q)) +mstore(0x58400, mulmod(mload(0x53cc0), 1, f_q)) +mstore(0x58420, mulmod(mload(0x53d60), 1, f_q)) +mstore(0x58440, mulmod(mload(0x53e00), 1, f_q)) +mstore(0x58460, mulmod(mload(0x53ea0), 1, f_q)) +mstore(0x58480, mulmod(mload(0x53f40), 1, f_q)) +mstore(0x584a0, mulmod(mload(0x53fe0), 1, f_q)) +mstore(0x584c0, mulmod(mload(0x54080), 1, f_q)) +mstore(0x584e0, mulmod(mload(0x54120), 1, f_q)) +mstore(0x58500, mulmod(mload(0x541c0), 1, f_q)) +mstore(0x58520, mulmod(mload(0x54260), 1, f_q)) +mstore(0x58540, mulmod(mload(0x54300), 1, f_q)) +mstore(0x58560, mulmod(mload(0x543a0), 1, f_q)) +mstore(0x58580, mulmod(mload(0x54440), 1, f_q)) +mstore(0x585a0, mulmod(mload(0x544e0), 1, f_q)) +mstore(0x585c0, mulmod(mload(0x54580), 1, f_q)) +mstore(0x585e0, mulmod(mload(0x54620), 1, f_q)) +mstore(0x58600, mulmod(mload(0x546c0), 1, f_q)) +mstore(0x58620, mulmod(mload(0x54760), 1, f_q)) +mstore(0x58640, mulmod(mload(0x54800), 1, f_q)) +mstore(0x58660, mulmod(mload(0x548a0), 1, f_q)) +mstore(0x58680, mulmod(mload(0x54940), 1, f_q)) +mstore(0x586a0, mulmod(mload(0x549e0), 1, f_q)) +mstore(0x586c0, mulmod(mload(0x54a80), 1, f_q)) +mstore(0x586e0, mulmod(mload(0x54b20), 1, f_q)) +mstore(0x58700, mulmod(mload(0x54bc0), 1, f_q)) +mstore(0x58720, mulmod(mload(0x54c60), 1, f_q)) +mstore(0x58740, mulmod(mload(0x54d00), 1, f_q)) +mstore(0x58760, mulmod(mload(0x54da0), 1, f_q)) +mstore(0x58780, mulmod(mload(0x54e40), 1, f_q)) +mstore(0x587a0, mulmod(mload(0x54ee0), 1, f_q)) +mstore(0x587c0, mulmod(mload(0x54f80), 1, f_q)) +mstore(0x587e0, mulmod(mload(0x55020), 1, f_q)) +mstore(0x58800, mulmod(mload(0x550c0), 1, f_q)) +mstore(0x58820, mulmod(mload(0x55160), 1, f_q)) +mstore(0x58840, mulmod(mload(0x55200), 1, f_q)) +mstore(0x58860, mulmod(mload(0x552a0), 1, f_q)) +mstore(0x58880, mulmod(mload(0x55340), 1, f_q)) +mstore(0x588a0, mulmod(mload(0x553e0), 1, f_q)) +mstore(0x588c0, mulmod(mload(0x55480), 1, f_q)) +mstore(0x588e0, mulmod(mload(0x55520), 1, f_q)) +mstore(0x58900, mulmod(mload(0x555c0), 1, f_q)) +mstore(0x58920, mulmod(mload(0x55660), 1, f_q)) +mstore(0x58940, mulmod(mload(0x55700), 1, f_q)) +mstore(0x58960, mulmod(mload(0x557a0), 1, f_q)) +mstore(0x58980, mulmod(mload(0x55840), 1, f_q)) +mstore(0x589a0, mulmod(mload(0x558e0), 1, f_q)) +mstore(0x589c0, mulmod(mload(0x55980), 1, f_q)) +mstore(0x589e0, mulmod(mload(0x55a20), 1, f_q)) +mstore(0x58a00, mulmod(mload(0x55ac0), 1, f_q)) +mstore(0x58a20, mulmod(mload(0x55b60), 1, f_q)) +mstore(0x58a40, mulmod(mload(0x55c00), 1, f_q)) +mstore(0x58a60, mulmod(mload(0x55ca0), 1, f_q)) +mstore(0x58a80, mulmod(mload(0x55d40), 1, f_q)) +mstore(0x58aa0, mulmod(mload(0x55de0), 1, f_q)) +mstore(0x58ac0, mulmod(mload(0x55e80), 1, f_q)) +mstore(0x58ae0, mulmod(mload(0x55f20), 1, f_q)) +mstore(0x58b00, mulmod(mload(0x55fc0), 1, f_q)) +mstore(0x58b20, mulmod(mload(0x56060), 1, f_q)) +mstore(0x58b40, mulmod(mload(0x56100), 1, f_q)) +mstore(0x58b60, mulmod(mload(0x561a0), 1, f_q)) +mstore(0x58b80, mulmod(mload(0x56240), 1, f_q)) +mstore(0x58ba0, mulmod(mload(0x562e0), 1, f_q)) +mstore(0x58bc0, mulmod(mload(0x56380), 1, f_q)) +mstore(0x58be0, mulmod(mload(0x56420), 1, f_q)) +mstore(0x58c00, mulmod(mload(0x564c0), 1, f_q)) +mstore(0x58c20, mulmod(mload(0x56560), 1, f_q)) +mstore(0x58c40, mulmod(mload(0x56600), 1, f_q)) +mstore(0x58c60, mulmod(mload(0x566a0), 1, f_q)) +mstore(0x58c80, mulmod(mload(0x56740), 1, f_q)) +mstore(0x58ca0, mulmod(mload(0x567e0), 1, f_q)) +mstore(0x58cc0, mulmod(mload(0x56880), 1, f_q)) +mstore(0x58ce0, mulmod(mload(0x56920), 1, f_q)) +mstore(0x58d00, mulmod(mload(0x569c0), 1, f_q)) +mstore(0x58d20, mulmod(mload(0x56a60), 1, f_q)) +mstore(0x58d40, mulmod(mload(0x56b00), 1, f_q)) +mstore(0x58d60, mulmod(mload(0x56ba0), 1, f_q)) +mstore(0x58d80, mulmod(mload(0x56c40), 1, f_q)) +mstore(0x58da0, mulmod(mload(0x56ce0), 1, f_q)) +mstore(0x58dc0, mulmod(mload(0x56d80), 1, f_q)) +mstore(0x58de0, mulmod(mload(0x56e20), 1, f_q)) +mstore(0x58e00, mulmod(mload(0x56ec0), 1, f_q)) +mstore(0x58e20, mulmod(mload(0x56f60), 1, f_q)) +mstore(0x58e40, mulmod(1, mload(0x48a20), f_q)) +{ + let result := mulmod(mload(0xfc40), mload(0x48600), f_q) +mstore(364128, result) + } +mstore(0x58e80, mulmod(mload(0x58e60), mload(0x48c80), f_q)) +mstore(0x58ea0, mulmod(sub(f_q, mload(0x58e80)), 1, f_q)) +mstore(0x58ec0, mulmod(mload(0x58e40), 1, f_q)) +{ + let result := mulmod(mload(0xfc60), mload(0x48600), f_q) +mstore(364256, result) + } +mstore(0x58f00, mulmod(mload(0x58ee0), mload(0x48c80), f_q)) +mstore(0x58f20, mulmod(sub(f_q, mload(0x58f00)), mload(0x18880), f_q)) +mstore(0x58f40, mulmod(mload(0x58e40), mload(0x18880), f_q)) +mstore(0x58f60, addmod(mload(0x58ea0), mload(0x58f20), f_q)) +{ + let result := mulmod(mload(0xfc80), mload(0x48600), f_q) +mstore(364416, result) + } +mstore(0x58fa0, mulmod(mload(0x58f80), mload(0x48c80), f_q)) +mstore(0x58fc0, mulmod(sub(f_q, mload(0x58fa0)), mload(0x48d00), f_q)) +mstore(0x58fe0, mulmod(mload(0x58e40), mload(0x48d00), f_q)) +mstore(0x59000, addmod(mload(0x58f60), mload(0x58fc0), f_q)) +{ + let result := mulmod(mload(0xfca0), mload(0x48600), f_q) +mstore(364576, result) + } +mstore(0x59040, mulmod(mload(0x59020), mload(0x48c80), f_q)) +mstore(0x59060, mulmod(sub(f_q, mload(0x59040)), mload(0x48d20), f_q)) +mstore(0x59080, mulmod(mload(0x58e40), mload(0x48d20), f_q)) +mstore(0x590a0, addmod(mload(0x59000), mload(0x59060), f_q)) +{ + let result := mulmod(mload(0xfcc0), mload(0x48600), f_q) +mstore(364736, result) + } +mstore(0x590e0, mulmod(mload(0x590c0), mload(0x48c80), f_q)) +mstore(0x59100, mulmod(sub(f_q, mload(0x590e0)), mload(0x48d40), f_q)) +mstore(0x59120, mulmod(mload(0x58e40), mload(0x48d40), f_q)) +mstore(0x59140, addmod(mload(0x590a0), mload(0x59100), f_q)) +{ + let result := mulmod(mload(0xfce0), mload(0x48600), f_q) +mstore(364896, result) + } +mstore(0x59180, mulmod(mload(0x59160), mload(0x48c80), f_q)) +mstore(0x591a0, mulmod(sub(f_q, mload(0x59180)), mload(0x48d60), f_q)) +mstore(0x591c0, mulmod(mload(0x58e40), mload(0x48d60), f_q)) +mstore(0x591e0, addmod(mload(0x59140), mload(0x591a0), f_q)) +{ + let result := mulmod(mload(0xfd00), mload(0x48600), f_q) +mstore(365056, result) + } +mstore(0x59220, mulmod(mload(0x59200), mload(0x48c80), f_q)) +mstore(0x59240, mulmod(sub(f_q, mload(0x59220)), mload(0x48d80), f_q)) +mstore(0x59260, mulmod(mload(0x58e40), mload(0x48d80), f_q)) +mstore(0x59280, addmod(mload(0x591e0), mload(0x59240), f_q)) +{ + let result := mulmod(mload(0xfd20), mload(0x48600), f_q) +mstore(365216, result) + } +mstore(0x592c0, mulmod(mload(0x592a0), mload(0x48c80), f_q)) +mstore(0x592e0, mulmod(sub(f_q, mload(0x592c0)), mload(0x48da0), f_q)) +mstore(0x59300, mulmod(mload(0x58e40), mload(0x48da0), f_q)) +mstore(0x59320, addmod(mload(0x59280), mload(0x592e0), f_q)) +{ + let result := mulmod(mload(0xfd40), mload(0x48600), f_q) +mstore(365376, result) + } +mstore(0x59360, mulmod(mload(0x59340), mload(0x48c80), f_q)) +mstore(0x59380, mulmod(sub(f_q, mload(0x59360)), mload(0x48dc0), f_q)) +mstore(0x593a0, mulmod(mload(0x58e40), mload(0x48dc0), f_q)) +mstore(0x593c0, addmod(mload(0x59320), mload(0x59380), f_q)) +{ + let result := mulmod(mload(0xfd60), mload(0x48600), f_q) +mstore(365536, result) + } +mstore(0x59400, mulmod(mload(0x593e0), mload(0x48c80), f_q)) +mstore(0x59420, mulmod(sub(f_q, mload(0x59400)), mload(0x48de0), f_q)) +mstore(0x59440, mulmod(mload(0x58e40), mload(0x48de0), f_q)) +mstore(0x59460, addmod(mload(0x593c0), mload(0x59420), f_q)) +{ + let result := mulmod(mload(0xfd80), mload(0x48600), f_q) +mstore(365696, result) + } +mstore(0x594a0, mulmod(mload(0x59480), mload(0x48c80), f_q)) +mstore(0x594c0, mulmod(sub(f_q, mload(0x594a0)), mload(0x48e00), f_q)) +mstore(0x594e0, mulmod(mload(0x58e40), mload(0x48e00), f_q)) +mstore(0x59500, addmod(mload(0x59460), mload(0x594c0), f_q)) +{ + let result := mulmod(mload(0xfda0), mload(0x48600), f_q) +mstore(365856, result) + } +mstore(0x59540, mulmod(mload(0x59520), mload(0x48c80), f_q)) +mstore(0x59560, mulmod(sub(f_q, mload(0x59540)), mload(0x48e20), f_q)) +mstore(0x59580, mulmod(mload(0x58e40), mload(0x48e20), f_q)) +mstore(0x595a0, addmod(mload(0x59500), mload(0x59560), f_q)) +{ + let result := mulmod(mload(0xfdc0), mload(0x48600), f_q) +mstore(366016, result) + } +mstore(0x595e0, mulmod(mload(0x595c0), mload(0x48c80), f_q)) +mstore(0x59600, mulmod(sub(f_q, mload(0x595e0)), mload(0x48e40), f_q)) +mstore(0x59620, mulmod(mload(0x58e40), mload(0x48e40), f_q)) +mstore(0x59640, addmod(mload(0x595a0), mload(0x59600), f_q)) +{ + let result := mulmod(mload(0xfde0), mload(0x48600), f_q) +mstore(366176, result) + } +mstore(0x59680, mulmod(mload(0x59660), mload(0x48c80), f_q)) +mstore(0x596a0, mulmod(sub(f_q, mload(0x59680)), mload(0x48e60), f_q)) +mstore(0x596c0, mulmod(mload(0x58e40), mload(0x48e60), f_q)) +mstore(0x596e0, addmod(mload(0x59640), mload(0x596a0), f_q)) +{ + let result := mulmod(mload(0xfe00), mload(0x48600), f_q) +mstore(366336, result) + } +mstore(0x59720, mulmod(mload(0x59700), mload(0x48c80), f_q)) +mstore(0x59740, mulmod(sub(f_q, mload(0x59720)), mload(0x48e80), f_q)) +mstore(0x59760, mulmod(mload(0x58e40), mload(0x48e80), f_q)) +mstore(0x59780, addmod(mload(0x596e0), mload(0x59740), f_q)) +{ + let result := mulmod(mload(0xfe20), mload(0x48600), f_q) +mstore(366496, result) + } +mstore(0x597c0, mulmod(mload(0x597a0), mload(0x48c80), f_q)) +mstore(0x597e0, mulmod(sub(f_q, mload(0x597c0)), mload(0x48ea0), f_q)) +mstore(0x59800, mulmod(mload(0x58e40), mload(0x48ea0), f_q)) +mstore(0x59820, addmod(mload(0x59780), mload(0x597e0), f_q)) +{ + let result := mulmod(mload(0xfe40), mload(0x48600), f_q) +mstore(366656, result) + } +mstore(0x59860, mulmod(mload(0x59840), mload(0x48c80), f_q)) +mstore(0x59880, mulmod(sub(f_q, mload(0x59860)), mload(0x48ec0), f_q)) +mstore(0x598a0, mulmod(mload(0x58e40), mload(0x48ec0), f_q)) +mstore(0x598c0, addmod(mload(0x59820), mload(0x59880), f_q)) +{ + let result := mulmod(mload(0xfe60), mload(0x48600), f_q) +mstore(366816, result) + } +mstore(0x59900, mulmod(mload(0x598e0), mload(0x48c80), f_q)) +mstore(0x59920, mulmod(sub(f_q, mload(0x59900)), mload(0x48ee0), f_q)) +mstore(0x59940, mulmod(mload(0x58e40), mload(0x48ee0), f_q)) +mstore(0x59960, addmod(mload(0x598c0), mload(0x59920), f_q)) +{ + let result := mulmod(mload(0xfe80), mload(0x48600), f_q) +mstore(366976, result) + } +mstore(0x599a0, mulmod(mload(0x59980), mload(0x48c80), f_q)) +mstore(0x599c0, mulmod(sub(f_q, mload(0x599a0)), mload(0x48f00), f_q)) +mstore(0x599e0, mulmod(mload(0x58e40), mload(0x48f00), f_q)) +mstore(0x59a00, addmod(mload(0x59960), mload(0x599c0), f_q)) +{ + let result := mulmod(mload(0xfea0), mload(0x48600), f_q) +mstore(367136, result) + } +mstore(0x59a40, mulmod(mload(0x59a20), mload(0x48c80), f_q)) +mstore(0x59a60, mulmod(sub(f_q, mload(0x59a40)), mload(0x48f20), f_q)) +mstore(0x59a80, mulmod(mload(0x58e40), mload(0x48f20), f_q)) +mstore(0x59aa0, addmod(mload(0x59a00), mload(0x59a60), f_q)) +{ + let result := mulmod(mload(0xfec0), mload(0x48600), f_q) +mstore(367296, result) + } +mstore(0x59ae0, mulmod(mload(0x59ac0), mload(0x48c80), f_q)) +mstore(0x59b00, mulmod(sub(f_q, mload(0x59ae0)), mload(0x48f40), f_q)) +mstore(0x59b20, mulmod(mload(0x58e40), mload(0x48f40), f_q)) +mstore(0x59b40, addmod(mload(0x59aa0), mload(0x59b00), f_q)) +{ + let result := mulmod(mload(0xfee0), mload(0x48600), f_q) +mstore(367456, result) + } +mstore(0x59b80, mulmod(mload(0x59b60), mload(0x48c80), f_q)) +mstore(0x59ba0, mulmod(sub(f_q, mload(0x59b80)), mload(0x48f60), f_q)) +mstore(0x59bc0, mulmod(mload(0x58e40), mload(0x48f60), f_q)) +mstore(0x59be0, addmod(mload(0x59b40), mload(0x59ba0), f_q)) +{ + let result := mulmod(mload(0xff00), mload(0x48600), f_q) +mstore(367616, result) + } +mstore(0x59c20, mulmod(mload(0x59c00), mload(0x48c80), f_q)) +mstore(0x59c40, mulmod(sub(f_q, mload(0x59c20)), mload(0x48f80), f_q)) +mstore(0x59c60, mulmod(mload(0x58e40), mload(0x48f80), f_q)) +mstore(0x59c80, addmod(mload(0x59be0), mload(0x59c40), f_q)) +{ + let result := mulmod(mload(0xff20), mload(0x48600), f_q) +mstore(367776, result) + } +mstore(0x59cc0, mulmod(mload(0x59ca0), mload(0x48c80), f_q)) +mstore(0x59ce0, mulmod(sub(f_q, mload(0x59cc0)), mload(0x48fa0), f_q)) +mstore(0x59d00, mulmod(mload(0x58e40), mload(0x48fa0), f_q)) +mstore(0x59d20, addmod(mload(0x59c80), mload(0x59ce0), f_q)) +{ + let result := mulmod(mload(0xff40), mload(0x48600), f_q) +mstore(367936, result) + } +mstore(0x59d60, mulmod(mload(0x59d40), mload(0x48c80), f_q)) +mstore(0x59d80, mulmod(sub(f_q, mload(0x59d60)), mload(0x48fc0), f_q)) +mstore(0x59da0, mulmod(mload(0x58e40), mload(0x48fc0), f_q)) +mstore(0x59dc0, addmod(mload(0x59d20), mload(0x59d80), f_q)) +{ + let result := mulmod(mload(0xff60), mload(0x48600), f_q) +mstore(368096, result) + } +mstore(0x59e00, mulmod(mload(0x59de0), mload(0x48c80), f_q)) +mstore(0x59e20, mulmod(sub(f_q, mload(0x59e00)), mload(0x48fe0), f_q)) +mstore(0x59e40, mulmod(mload(0x58e40), mload(0x48fe0), f_q)) +mstore(0x59e60, addmod(mload(0x59dc0), mload(0x59e20), f_q)) +{ + let result := mulmod(mload(0xff80), mload(0x48600), f_q) +mstore(368256, result) + } +mstore(0x59ea0, mulmod(mload(0x59e80), mload(0x48c80), f_q)) +mstore(0x59ec0, mulmod(sub(f_q, mload(0x59ea0)), mload(0x49000), f_q)) +mstore(0x59ee0, mulmod(mload(0x58e40), mload(0x49000), f_q)) +mstore(0x59f00, addmod(mload(0x59e60), mload(0x59ec0), f_q)) +{ + let result := mulmod(mload(0xffa0), mload(0x48600), f_q) +mstore(368416, result) + } +mstore(0x59f40, mulmod(mload(0x59f20), mload(0x48c80), f_q)) +mstore(0x59f60, mulmod(sub(f_q, mload(0x59f40)), mload(0x49020), f_q)) +mstore(0x59f80, mulmod(mload(0x58e40), mload(0x49020), f_q)) +mstore(0x59fa0, addmod(mload(0x59f00), mload(0x59f60), f_q)) +{ + let result := mulmod(mload(0xffc0), mload(0x48600), f_q) +mstore(368576, result) + } +mstore(0x59fe0, mulmod(mload(0x59fc0), mload(0x48c80), f_q)) +mstore(0x5a000, mulmod(sub(f_q, mload(0x59fe0)), mload(0x49040), f_q)) +mstore(0x5a020, mulmod(mload(0x58e40), mload(0x49040), f_q)) +mstore(0x5a040, addmod(mload(0x59fa0), mload(0x5a000), f_q)) +{ + let result := mulmod(mload(0x176c0), mload(0x48600), f_q) +mstore(368736, result) + } +mstore(0x5a080, mulmod(mload(0x5a060), mload(0x48c80), f_q)) +mstore(0x5a0a0, mulmod(sub(f_q, mload(0x5a080)), mload(0x49060), f_q)) +mstore(0x5a0c0, mulmod(mload(0x58e40), mload(0x49060), f_q)) +mstore(0x5a0e0, addmod(mload(0x5a040), mload(0x5a0a0), f_q)) +{ + let result := mulmod(mload(0x17760), mload(0x48600), f_q) +mstore(368896, result) + } +mstore(0x5a120, mulmod(mload(0x5a100), mload(0x48c80), f_q)) +mstore(0x5a140, mulmod(sub(f_q, mload(0x5a120)), mload(0x49080), f_q)) +mstore(0x5a160, mulmod(mload(0x58e40), mload(0x49080), f_q)) +mstore(0x5a180, addmod(mload(0x5a0e0), mload(0x5a140), f_q)) +{ + let result := mulmod(mload(0x17800), mload(0x48600), f_q) +mstore(369056, result) + } +mstore(0x5a1c0, mulmod(mload(0x5a1a0), mload(0x48c80), f_q)) +mstore(0x5a1e0, mulmod(sub(f_q, mload(0x5a1c0)), mload(0x490a0), f_q)) +mstore(0x5a200, mulmod(mload(0x58e40), mload(0x490a0), f_q)) +mstore(0x5a220, addmod(mload(0x5a180), mload(0x5a1e0), f_q)) +{ + let result := mulmod(mload(0x178a0), mload(0x48600), f_q) +mstore(369216, result) + } +mstore(0x5a260, mulmod(mload(0x5a240), mload(0x48c80), f_q)) +mstore(0x5a280, mulmod(sub(f_q, mload(0x5a260)), mload(0x490c0), f_q)) +mstore(0x5a2a0, mulmod(mload(0x58e40), mload(0x490c0), f_q)) +mstore(0x5a2c0, addmod(mload(0x5a220), mload(0x5a280), f_q)) +{ + let result := mulmod(mload(0x17940), mload(0x48600), f_q) +mstore(369376, result) + } +mstore(0x5a300, mulmod(mload(0x5a2e0), mload(0x48c80), f_q)) +mstore(0x5a320, mulmod(sub(f_q, mload(0x5a300)), mload(0x490e0), f_q)) +mstore(0x5a340, mulmod(mload(0x58e40), mload(0x490e0), f_q)) +mstore(0x5a360, addmod(mload(0x5a2c0), mload(0x5a320), f_q)) +{ + let result := mulmod(mload(0x179e0), mload(0x48600), f_q) +mstore(369536, result) + } +mstore(0x5a3a0, mulmod(mload(0x5a380), mload(0x48c80), f_q)) +mstore(0x5a3c0, mulmod(sub(f_q, mload(0x5a3a0)), mload(0x49100), f_q)) +mstore(0x5a3e0, mulmod(mload(0x58e40), mload(0x49100), f_q)) +mstore(0x5a400, addmod(mload(0x5a360), mload(0x5a3c0), f_q)) +{ + let result := mulmod(mload(0x17a80), mload(0x48600), f_q) +mstore(369696, result) + } +mstore(0x5a440, mulmod(mload(0x5a420), mload(0x48c80), f_q)) +mstore(0x5a460, mulmod(sub(f_q, mload(0x5a440)), mload(0x49120), f_q)) +mstore(0x5a480, mulmod(mload(0x58e40), mload(0x49120), f_q)) +mstore(0x5a4a0, addmod(mload(0x5a400), mload(0x5a460), f_q)) +{ + let result := mulmod(mload(0x17b20), mload(0x48600), f_q) +mstore(369856, result) + } +mstore(0x5a4e0, mulmod(mload(0x5a4c0), mload(0x48c80), f_q)) +mstore(0x5a500, mulmod(sub(f_q, mload(0x5a4e0)), mload(0x49140), f_q)) +mstore(0x5a520, mulmod(mload(0x58e40), mload(0x49140), f_q)) +mstore(0x5a540, addmod(mload(0x5a4a0), mload(0x5a500), f_q)) +{ + let result := mulmod(mload(0x17bc0), mload(0x48600), f_q) +mstore(370016, result) + } +mstore(0x5a580, mulmod(mload(0x5a560), mload(0x48c80), f_q)) +mstore(0x5a5a0, mulmod(sub(f_q, mload(0x5a580)), mload(0x49160), f_q)) +mstore(0x5a5c0, mulmod(mload(0x58e40), mload(0x49160), f_q)) +mstore(0x5a5e0, addmod(mload(0x5a540), mload(0x5a5a0), f_q)) +{ + let result := mulmod(mload(0x17c60), mload(0x48600), f_q) +mstore(370176, result) + } +mstore(0x5a620, mulmod(mload(0x5a600), mload(0x48c80), f_q)) +mstore(0x5a640, mulmod(sub(f_q, mload(0x5a620)), mload(0x49180), f_q)) +mstore(0x5a660, mulmod(mload(0x58e40), mload(0x49180), f_q)) +mstore(0x5a680, addmod(mload(0x5a5e0), mload(0x5a640), f_q)) +{ + let result := mulmod(mload(0x17d00), mload(0x48600), f_q) +mstore(370336, result) + } +mstore(0x5a6c0, mulmod(mload(0x5a6a0), mload(0x48c80), f_q)) +mstore(0x5a6e0, mulmod(sub(f_q, mload(0x5a6c0)), mload(0x491a0), f_q)) +mstore(0x5a700, mulmod(mload(0x58e40), mload(0x491a0), f_q)) +mstore(0x5a720, addmod(mload(0x5a680), mload(0x5a6e0), f_q)) +{ + let result := mulmod(mload(0x17da0), mload(0x48600), f_q) +mstore(370496, result) + } +mstore(0x5a760, mulmod(mload(0x5a740), mload(0x48c80), f_q)) +mstore(0x5a780, mulmod(sub(f_q, mload(0x5a760)), mload(0x491c0), f_q)) +mstore(0x5a7a0, mulmod(mload(0x58e40), mload(0x491c0), f_q)) +mstore(0x5a7c0, addmod(mload(0x5a720), mload(0x5a780), f_q)) +{ + let result := mulmod(mload(0x17e40), mload(0x48600), f_q) +mstore(370656, result) + } +mstore(0x5a800, mulmod(mload(0x5a7e0), mload(0x48c80), f_q)) +mstore(0x5a820, mulmod(sub(f_q, mload(0x5a800)), mload(0x491e0), f_q)) +mstore(0x5a840, mulmod(mload(0x58e40), mload(0x491e0), f_q)) +mstore(0x5a860, addmod(mload(0x5a7c0), mload(0x5a820), f_q)) +{ + let result := mulmod(mload(0x17ee0), mload(0x48600), f_q) +mstore(370816, result) + } +mstore(0x5a8a0, mulmod(mload(0x5a880), mload(0x48c80), f_q)) +mstore(0x5a8c0, mulmod(sub(f_q, mload(0x5a8a0)), mload(0x49200), f_q)) +mstore(0x5a8e0, mulmod(mload(0x58e40), mload(0x49200), f_q)) +mstore(0x5a900, addmod(mload(0x5a860), mload(0x5a8c0), f_q)) +{ + let result := mulmod(mload(0x17f80), mload(0x48600), f_q) +mstore(370976, result) + } +mstore(0x5a940, mulmod(mload(0x5a920), mload(0x48c80), f_q)) +mstore(0x5a960, mulmod(sub(f_q, mload(0x5a940)), mload(0x49220), f_q)) +mstore(0x5a980, mulmod(mload(0x58e40), mload(0x49220), f_q)) +mstore(0x5a9a0, addmod(mload(0x5a900), mload(0x5a960), f_q)) +{ + let result := mulmod(mload(0x18020), mload(0x48600), f_q) +mstore(371136, result) + } +mstore(0x5a9e0, mulmod(mload(0x5a9c0), mload(0x48c80), f_q)) +mstore(0x5aa00, mulmod(sub(f_q, mload(0x5a9e0)), mload(0x49240), f_q)) +mstore(0x5aa20, mulmod(mload(0x58e40), mload(0x49240), f_q)) +mstore(0x5aa40, addmod(mload(0x5a9a0), mload(0x5aa00), f_q)) +{ + let result := mulmod(mload(0x180c0), mload(0x48600), f_q) +mstore(371296, result) + } +mstore(0x5aa80, mulmod(mload(0x5aa60), mload(0x48c80), f_q)) +mstore(0x5aaa0, mulmod(sub(f_q, mload(0x5aa80)), mload(0x49260), f_q)) +mstore(0x5aac0, mulmod(mload(0x58e40), mload(0x49260), f_q)) +mstore(0x5aae0, addmod(mload(0x5aa40), mload(0x5aaa0), f_q)) +{ + let result := mulmod(mload(0x18160), mload(0x48600), f_q) +mstore(371456, result) + } +mstore(0x5ab20, mulmod(mload(0x5ab00), mload(0x48c80), f_q)) +mstore(0x5ab40, mulmod(sub(f_q, mload(0x5ab20)), mload(0x49280), f_q)) +mstore(0x5ab60, mulmod(mload(0x58e40), mload(0x49280), f_q)) +mstore(0x5ab80, addmod(mload(0x5aae0), mload(0x5ab40), f_q)) +{ + let result := mulmod(mload(0x18200), mload(0x48600), f_q) +mstore(371616, result) + } +mstore(0x5abc0, mulmod(mload(0x5aba0), mload(0x48c80), f_q)) +mstore(0x5abe0, mulmod(sub(f_q, mload(0x5abc0)), mload(0x492a0), f_q)) +mstore(0x5ac00, mulmod(mload(0x58e40), mload(0x492a0), f_q)) +mstore(0x5ac20, addmod(mload(0x5ab80), mload(0x5abe0), f_q)) +{ + let result := mulmod(mload(0x182a0), mload(0x48600), f_q) +mstore(371776, result) + } +mstore(0x5ac60, mulmod(mload(0x5ac40), mload(0x48c80), f_q)) +mstore(0x5ac80, mulmod(sub(f_q, mload(0x5ac60)), mload(0x492c0), f_q)) +mstore(0x5aca0, mulmod(mload(0x58e40), mload(0x492c0), f_q)) +mstore(0x5acc0, addmod(mload(0x5ac20), mload(0x5ac80), f_q)) +{ + let result := mulmod(mload(0x18340), mload(0x48600), f_q) +mstore(371936, result) + } +mstore(0x5ad00, mulmod(mload(0x5ace0), mload(0x48c80), f_q)) +mstore(0x5ad20, mulmod(sub(f_q, mload(0x5ad00)), mload(0x492e0), f_q)) +mstore(0x5ad40, mulmod(mload(0x58e40), mload(0x492e0), f_q)) +mstore(0x5ad60, addmod(mload(0x5acc0), mload(0x5ad20), f_q)) +{ + let result := mulmod(mload(0x183e0), mload(0x48600), f_q) +mstore(372096, result) + } +mstore(0x5ada0, mulmod(mload(0x5ad80), mload(0x48c80), f_q)) +mstore(0x5adc0, mulmod(sub(f_q, mload(0x5ada0)), mload(0x49300), f_q)) +mstore(0x5ade0, mulmod(mload(0x58e40), mload(0x49300), f_q)) +mstore(0x5ae00, addmod(mload(0x5ad60), mload(0x5adc0), f_q)) +{ + let result := mulmod(mload(0x18480), mload(0x48600), f_q) +mstore(372256, result) + } +mstore(0x5ae40, mulmod(mload(0x5ae20), mload(0x48c80), f_q)) +mstore(0x5ae60, mulmod(sub(f_q, mload(0x5ae40)), mload(0x49320), f_q)) +mstore(0x5ae80, mulmod(mload(0x58e40), mload(0x49320), f_q)) +mstore(0x5aea0, addmod(mload(0x5ae00), mload(0x5ae60), f_q)) +{ + let result := mulmod(mload(0x18520), mload(0x48600), f_q) +mstore(372416, result) + } +mstore(0x5aee0, mulmod(mload(0x5aec0), mload(0x48c80), f_q)) +mstore(0x5af00, mulmod(sub(f_q, mload(0x5aee0)), mload(0x49340), f_q)) +mstore(0x5af20, mulmod(mload(0x58e40), mload(0x49340), f_q)) +mstore(0x5af40, addmod(mload(0x5aea0), mload(0x5af00), f_q)) +{ + let result := mulmod(mload(0x185c0), mload(0x48600), f_q) +mstore(372576, result) + } +mstore(0x5af80, mulmod(mload(0x5af60), mload(0x48c80), f_q)) +mstore(0x5afa0, mulmod(sub(f_q, mload(0x5af80)), mload(0x49360), f_q)) +mstore(0x5afc0, mulmod(mload(0x58e40), mload(0x49360), f_q)) +mstore(0x5afe0, addmod(mload(0x5af40), mload(0x5afa0), f_q)) +{ + let result := mulmod(mload(0x18660), mload(0x48600), f_q) +mstore(372736, result) + } +mstore(0x5b020, mulmod(mload(0x5b000), mload(0x48c80), f_q)) +mstore(0x5b040, mulmod(sub(f_q, mload(0x5b020)), mload(0x49380), f_q)) +mstore(0x5b060, mulmod(mload(0x58e40), mload(0x49380), f_q)) +mstore(0x5b080, addmod(mload(0x5afe0), mload(0x5b040), f_q)) +{ + let result := mulmod(mload(0x18700), mload(0x48600), f_q) +mstore(372896, result) + } +mstore(0x5b0c0, mulmod(mload(0x5b0a0), mload(0x48c80), f_q)) +mstore(0x5b0e0, mulmod(sub(f_q, mload(0x5b0c0)), mload(0x493a0), f_q)) +mstore(0x5b100, mulmod(mload(0x58e40), mload(0x493a0), f_q)) +mstore(0x5b120, addmod(mload(0x5b080), mload(0x5b0e0), f_q)) +{ + let result := mulmod(mload(0x187a0), mload(0x48600), f_q) +mstore(373056, result) + } +mstore(0x5b160, mulmod(mload(0x5b140), mload(0x48c80), f_q)) +mstore(0x5b180, mulmod(sub(f_q, mload(0x5b160)), mload(0x493c0), f_q)) +mstore(0x5b1a0, mulmod(mload(0x58e40), mload(0x493c0), f_q)) +mstore(0x5b1c0, addmod(mload(0x5b120), mload(0x5b180), f_q)) +{ + let result := mulmod(mload(0x18840), mload(0x48600), f_q) +mstore(373216, result) + } +mstore(0x5b200, mulmod(mload(0x5b1e0), mload(0x48c80), f_q)) +mstore(0x5b220, mulmod(sub(f_q, mload(0x5b200)), mload(0x493e0), f_q)) +mstore(0x5b240, mulmod(mload(0x58e40), mload(0x493e0), f_q)) +mstore(0x5b260, addmod(mload(0x5b1c0), mload(0x5b220), f_q)) +{ + let result := mulmod(mload(0xffe0), mload(0x48600), f_q) +mstore(373376, result) + } +mstore(0x5b2a0, mulmod(mload(0x5b280), mload(0x48c80), f_q)) +mstore(0x5b2c0, mulmod(sub(f_q, mload(0x5b2a0)), mload(0x49400), f_q)) +mstore(0x5b2e0, mulmod(mload(0x58e40), mload(0x49400), f_q)) +mstore(0x5b300, addmod(mload(0x5b260), mload(0x5b2c0), f_q)) +{ + let result := mulmod(mload(0x10000), mload(0x48600), f_q) +mstore(373536, result) + } +mstore(0x5b340, mulmod(mload(0x5b320), mload(0x48c80), f_q)) +mstore(0x5b360, mulmod(sub(f_q, mload(0x5b340)), mload(0x49420), f_q)) +mstore(0x5b380, mulmod(mload(0x58e40), mload(0x49420), f_q)) +mstore(0x5b3a0, addmod(mload(0x5b300), mload(0x5b360), f_q)) +{ + let result := mulmod(mload(0x10020), mload(0x48600), f_q) +mstore(373696, result) + } +mstore(0x5b3e0, mulmod(mload(0x5b3c0), mload(0x48c80), f_q)) +mstore(0x5b400, mulmod(sub(f_q, mload(0x5b3e0)), mload(0x49440), f_q)) +mstore(0x5b420, mulmod(mload(0x58e40), mload(0x49440), f_q)) +mstore(0x5b440, addmod(mload(0x5b3a0), mload(0x5b400), f_q)) +{ + let result := mulmod(mload(0x10040), mload(0x48600), f_q) +mstore(373856, result) + } +mstore(0x5b480, mulmod(mload(0x5b460), mload(0x48c80), f_q)) +mstore(0x5b4a0, mulmod(sub(f_q, mload(0x5b480)), mload(0x49460), f_q)) +mstore(0x5b4c0, mulmod(mload(0x58e40), mload(0x49460), f_q)) +mstore(0x5b4e0, addmod(mload(0x5b440), mload(0x5b4a0), f_q)) +{ + let result := mulmod(mload(0x10060), mload(0x48600), f_q) +mstore(374016, result) + } +mstore(0x5b520, mulmod(mload(0x5b500), mload(0x48c80), f_q)) +mstore(0x5b540, mulmod(sub(f_q, mload(0x5b520)), mload(0x49480), f_q)) +mstore(0x5b560, mulmod(mload(0x58e40), mload(0x49480), f_q)) +mstore(0x5b580, addmod(mload(0x5b4e0), mload(0x5b540), f_q)) +{ + let result := mulmod(mload(0x10080), mload(0x48600), f_q) +mstore(374176, result) + } +mstore(0x5b5c0, mulmod(mload(0x5b5a0), mload(0x48c80), f_q)) +mstore(0x5b5e0, mulmod(sub(f_q, mload(0x5b5c0)), mload(0x494a0), f_q)) +mstore(0x5b600, mulmod(mload(0x58e40), mload(0x494a0), f_q)) +mstore(0x5b620, addmod(mload(0x5b580), mload(0x5b5e0), f_q)) +{ + let result := mulmod(mload(0x100a0), mload(0x48600), f_q) +mstore(374336, result) + } +mstore(0x5b660, mulmod(mload(0x5b640), mload(0x48c80), f_q)) +mstore(0x5b680, mulmod(sub(f_q, mload(0x5b660)), mload(0x494c0), f_q)) +mstore(0x5b6a0, mulmod(mload(0x58e40), mload(0x494c0), f_q)) +mstore(0x5b6c0, addmod(mload(0x5b620), mload(0x5b680), f_q)) +{ + let result := mulmod(mload(0x100c0), mload(0x48600), f_q) +mstore(374496, result) + } +mstore(0x5b700, mulmod(mload(0x5b6e0), mload(0x48c80), f_q)) +mstore(0x5b720, mulmod(sub(f_q, mload(0x5b700)), mload(0x494e0), f_q)) +mstore(0x5b740, mulmod(mload(0x58e40), mload(0x494e0), f_q)) +mstore(0x5b760, addmod(mload(0x5b6c0), mload(0x5b720), f_q)) +{ + let result := mulmod(mload(0x100e0), mload(0x48600), f_q) +mstore(374656, result) + } +mstore(0x5b7a0, mulmod(mload(0x5b780), mload(0x48c80), f_q)) +mstore(0x5b7c0, mulmod(sub(f_q, mload(0x5b7a0)), mload(0x49500), f_q)) +mstore(0x5b7e0, mulmod(mload(0x58e40), mload(0x49500), f_q)) +mstore(0x5b800, addmod(mload(0x5b760), mload(0x5b7c0), f_q)) +{ + let result := mulmod(mload(0x10100), mload(0x48600), f_q) +mstore(374816, result) + } +mstore(0x5b840, mulmod(mload(0x5b820), mload(0x48c80), f_q)) +mstore(0x5b860, mulmod(sub(f_q, mload(0x5b840)), mload(0x49520), f_q)) +mstore(0x5b880, mulmod(mload(0x58e40), mload(0x49520), f_q)) +mstore(0x5b8a0, addmod(mload(0x5b800), mload(0x5b860), f_q)) +{ + let result := mulmod(mload(0x10120), mload(0x48600), f_q) +mstore(374976, result) + } +mstore(0x5b8e0, mulmod(mload(0x5b8c0), mload(0x48c80), f_q)) +mstore(0x5b900, mulmod(sub(f_q, mload(0x5b8e0)), mload(0x49540), f_q)) +mstore(0x5b920, mulmod(mload(0x58e40), mload(0x49540), f_q)) +mstore(0x5b940, addmod(mload(0x5b8a0), mload(0x5b900), f_q)) +{ + let result := mulmod(mload(0x10140), mload(0x48600), f_q) +mstore(375136, result) + } +mstore(0x5b980, mulmod(mload(0x5b960), mload(0x48c80), f_q)) +mstore(0x5b9a0, mulmod(sub(f_q, mload(0x5b980)), mload(0x49560), f_q)) +mstore(0x5b9c0, mulmod(mload(0x58e40), mload(0x49560), f_q)) +mstore(0x5b9e0, addmod(mload(0x5b940), mload(0x5b9a0), f_q)) +{ + let result := mulmod(mload(0x10160), mload(0x48600), f_q) +mstore(375296, result) + } +mstore(0x5ba20, mulmod(mload(0x5ba00), mload(0x48c80), f_q)) +mstore(0x5ba40, mulmod(sub(f_q, mload(0x5ba20)), mload(0x49580), f_q)) +mstore(0x5ba60, mulmod(mload(0x58e40), mload(0x49580), f_q)) +mstore(0x5ba80, addmod(mload(0x5b9e0), mload(0x5ba40), f_q)) +{ + let result := mulmod(mload(0x10180), mload(0x48600), f_q) +mstore(375456, result) + } +mstore(0x5bac0, mulmod(mload(0x5baa0), mload(0x48c80), f_q)) +mstore(0x5bae0, mulmod(sub(f_q, mload(0x5bac0)), mload(0x495a0), f_q)) +mstore(0x5bb00, mulmod(mload(0x58e40), mload(0x495a0), f_q)) +mstore(0x5bb20, addmod(mload(0x5ba80), mload(0x5bae0), f_q)) +{ + let result := mulmod(mload(0x101a0), mload(0x48600), f_q) +mstore(375616, result) + } +mstore(0x5bb60, mulmod(mload(0x5bb40), mload(0x48c80), f_q)) +mstore(0x5bb80, mulmod(sub(f_q, mload(0x5bb60)), mload(0x495c0), f_q)) +mstore(0x5bba0, mulmod(mload(0x58e40), mload(0x495c0), f_q)) +mstore(0x5bbc0, addmod(mload(0x5bb20), mload(0x5bb80), f_q)) +{ + let result := mulmod(mload(0x101c0), mload(0x48600), f_q) +mstore(375776, result) + } +mstore(0x5bc00, mulmod(mload(0x5bbe0), mload(0x48c80), f_q)) +mstore(0x5bc20, mulmod(sub(f_q, mload(0x5bc00)), mload(0x495e0), f_q)) +mstore(0x5bc40, mulmod(mload(0x58e40), mload(0x495e0), f_q)) +mstore(0x5bc60, addmod(mload(0x5bbc0), mload(0x5bc20), f_q)) +{ + let result := mulmod(mload(0x101e0), mload(0x48600), f_q) +mstore(375936, result) + } +mstore(0x5bca0, mulmod(mload(0x5bc80), mload(0x48c80), f_q)) +mstore(0x5bcc0, mulmod(sub(f_q, mload(0x5bca0)), mload(0x49600), f_q)) +mstore(0x5bce0, mulmod(mload(0x58e40), mload(0x49600), f_q)) +mstore(0x5bd00, addmod(mload(0x5bc60), mload(0x5bcc0), f_q)) +{ + let result := mulmod(mload(0x10200), mload(0x48600), f_q) +mstore(376096, result) + } +mstore(0x5bd40, mulmod(mload(0x5bd20), mload(0x48c80), f_q)) +mstore(0x5bd60, mulmod(sub(f_q, mload(0x5bd40)), mload(0x49620), f_q)) +mstore(0x5bd80, mulmod(mload(0x58e40), mload(0x49620), f_q)) +mstore(0x5bda0, addmod(mload(0x5bd00), mload(0x5bd60), f_q)) +{ + let result := mulmod(mload(0x10220), mload(0x48600), f_q) +mstore(376256, result) + } +mstore(0x5bde0, mulmod(mload(0x5bdc0), mload(0x48c80), f_q)) +mstore(0x5be00, mulmod(sub(f_q, mload(0x5bde0)), mload(0x49640), f_q)) +mstore(0x5be20, mulmod(mload(0x58e40), mload(0x49640), f_q)) +mstore(0x5be40, addmod(mload(0x5bda0), mload(0x5be00), f_q)) +{ + let result := mulmod(mload(0x10240), mload(0x48600), f_q) +mstore(376416, result) + } +mstore(0x5be80, mulmod(mload(0x5be60), mload(0x48c80), f_q)) +mstore(0x5bea0, mulmod(sub(f_q, mload(0x5be80)), mload(0x49660), f_q)) +mstore(0x5bec0, mulmod(mload(0x58e40), mload(0x49660), f_q)) +mstore(0x5bee0, addmod(mload(0x5be40), mload(0x5bea0), f_q)) +{ + let result := mulmod(mload(0x10260), mload(0x48600), f_q) +mstore(376576, result) + } +mstore(0x5bf20, mulmod(mload(0x5bf00), mload(0x48c80), f_q)) +mstore(0x5bf40, mulmod(sub(f_q, mload(0x5bf20)), mload(0x49680), f_q)) +mstore(0x5bf60, mulmod(mload(0x58e40), mload(0x49680), f_q)) +mstore(0x5bf80, addmod(mload(0x5bee0), mload(0x5bf40), f_q)) +{ + let result := mulmod(mload(0x10280), mload(0x48600), f_q) +mstore(376736, result) + } +mstore(0x5bfc0, mulmod(mload(0x5bfa0), mload(0x48c80), f_q)) +mstore(0x5bfe0, mulmod(sub(f_q, mload(0x5bfc0)), mload(0x496a0), f_q)) +mstore(0x5c000, mulmod(mload(0x58e40), mload(0x496a0), f_q)) +mstore(0x5c020, addmod(mload(0x5bf80), mload(0x5bfe0), f_q)) +{ + let result := mulmod(mload(0x102a0), mload(0x48600), f_q) +mstore(376896, result) + } +mstore(0x5c060, mulmod(mload(0x5c040), mload(0x48c80), f_q)) +mstore(0x5c080, mulmod(sub(f_q, mload(0x5c060)), mload(0x496c0), f_q)) +mstore(0x5c0a0, mulmod(mload(0x58e40), mload(0x496c0), f_q)) +mstore(0x5c0c0, addmod(mload(0x5c020), mload(0x5c080), f_q)) +{ + let result := mulmod(mload(0x102c0), mload(0x48600), f_q) +mstore(377056, result) + } +mstore(0x5c100, mulmod(mload(0x5c0e0), mload(0x48c80), f_q)) +mstore(0x5c120, mulmod(sub(f_q, mload(0x5c100)), mload(0x496e0), f_q)) +mstore(0x5c140, mulmod(mload(0x58e40), mload(0x496e0), f_q)) +mstore(0x5c160, addmod(mload(0x5c0c0), mload(0x5c120), f_q)) +{ + let result := mulmod(mload(0x102e0), mload(0x48600), f_q) +mstore(377216, result) + } +mstore(0x5c1a0, mulmod(mload(0x5c180), mload(0x48c80), f_q)) +mstore(0x5c1c0, mulmod(sub(f_q, mload(0x5c1a0)), mload(0x49700), f_q)) +mstore(0x5c1e0, mulmod(mload(0x58e40), mload(0x49700), f_q)) +mstore(0x5c200, addmod(mload(0x5c160), mload(0x5c1c0), f_q)) +{ + let result := mulmod(mload(0x10300), mload(0x48600), f_q) +mstore(377376, result) + } +mstore(0x5c240, mulmod(mload(0x5c220), mload(0x48c80), f_q)) +mstore(0x5c260, mulmod(sub(f_q, mload(0x5c240)), mload(0x49720), f_q)) +mstore(0x5c280, mulmod(mload(0x58e40), mload(0x49720), f_q)) +mstore(0x5c2a0, addmod(mload(0x5c200), mload(0x5c260), f_q)) +{ + let result := mulmod(mload(0x10320), mload(0x48600), f_q) +mstore(377536, result) + } +mstore(0x5c2e0, mulmod(mload(0x5c2c0), mload(0x48c80), f_q)) +mstore(0x5c300, mulmod(sub(f_q, mload(0x5c2e0)), mload(0x49740), f_q)) +mstore(0x5c320, mulmod(mload(0x58e40), mload(0x49740), f_q)) +mstore(0x5c340, addmod(mload(0x5c2a0), mload(0x5c300), f_q)) +{ + let result := mulmod(mload(0x10340), mload(0x48600), f_q) +mstore(377696, result) + } +mstore(0x5c380, mulmod(mload(0x5c360), mload(0x48c80), f_q)) +mstore(0x5c3a0, mulmod(sub(f_q, mload(0x5c380)), mload(0x49760), f_q)) +mstore(0x5c3c0, mulmod(mload(0x58e40), mload(0x49760), f_q)) +mstore(0x5c3e0, addmod(mload(0x5c340), mload(0x5c3a0), f_q)) +{ + let result := mulmod(mload(0x10360), mload(0x48600), f_q) +mstore(377856, result) + } +mstore(0x5c420, mulmod(mload(0x5c400), mload(0x48c80), f_q)) +mstore(0x5c440, mulmod(sub(f_q, mload(0x5c420)), mload(0x49780), f_q)) +mstore(0x5c460, mulmod(mload(0x58e40), mload(0x49780), f_q)) +mstore(0x5c480, addmod(mload(0x5c3e0), mload(0x5c440), f_q)) +{ + let result := mulmod(mload(0x10380), mload(0x48600), f_q) +mstore(378016, result) + } +mstore(0x5c4c0, mulmod(mload(0x5c4a0), mload(0x48c80), f_q)) +mstore(0x5c4e0, mulmod(sub(f_q, mload(0x5c4c0)), mload(0x497a0), f_q)) +mstore(0x5c500, mulmod(mload(0x58e40), mload(0x497a0), f_q)) +mstore(0x5c520, addmod(mload(0x5c480), mload(0x5c4e0), f_q)) +{ + let result := mulmod(mload(0x103a0), mload(0x48600), f_q) +mstore(378176, result) + } +mstore(0x5c560, mulmod(mload(0x5c540), mload(0x48c80), f_q)) +mstore(0x5c580, mulmod(sub(f_q, mload(0x5c560)), mload(0x497c0), f_q)) +mstore(0x5c5a0, mulmod(mload(0x58e40), mload(0x497c0), f_q)) +mstore(0x5c5c0, addmod(mload(0x5c520), mload(0x5c580), f_q)) +{ + let result := mulmod(mload(0x103c0), mload(0x48600), f_q) +mstore(378336, result) + } +mstore(0x5c600, mulmod(mload(0x5c5e0), mload(0x48c80), f_q)) +mstore(0x5c620, mulmod(sub(f_q, mload(0x5c600)), mload(0x497e0), f_q)) +mstore(0x5c640, mulmod(mload(0x58e40), mload(0x497e0), f_q)) +mstore(0x5c660, addmod(mload(0x5c5c0), mload(0x5c620), f_q)) +{ + let result := mulmod(mload(0x103e0), mload(0x48600), f_q) +mstore(378496, result) + } +mstore(0x5c6a0, mulmod(mload(0x5c680), mload(0x48c80), f_q)) +mstore(0x5c6c0, mulmod(sub(f_q, mload(0x5c6a0)), mload(0x49800), f_q)) +mstore(0x5c6e0, mulmod(mload(0x58e40), mload(0x49800), f_q)) +mstore(0x5c700, addmod(mload(0x5c660), mload(0x5c6c0), f_q)) +{ + let result := mulmod(mload(0x10400), mload(0x48600), f_q) +mstore(378656, result) + } +mstore(0x5c740, mulmod(mload(0x5c720), mload(0x48c80), f_q)) +mstore(0x5c760, mulmod(sub(f_q, mload(0x5c740)), mload(0x49820), f_q)) +mstore(0x5c780, mulmod(mload(0x58e40), mload(0x49820), f_q)) +mstore(0x5c7a0, addmod(mload(0x5c700), mload(0x5c760), f_q)) +{ + let result := mulmod(mload(0x10420), mload(0x48600), f_q) +mstore(378816, result) + } +mstore(0x5c7e0, mulmod(mload(0x5c7c0), mload(0x48c80), f_q)) +mstore(0x5c800, mulmod(sub(f_q, mload(0x5c7e0)), mload(0x49840), f_q)) +mstore(0x5c820, mulmod(mload(0x58e40), mload(0x49840), f_q)) +mstore(0x5c840, addmod(mload(0x5c7a0), mload(0x5c800), f_q)) +{ + let result := mulmod(mload(0x10440), mload(0x48600), f_q) +mstore(378976, result) + } +mstore(0x5c880, mulmod(mload(0x5c860), mload(0x48c80), f_q)) +mstore(0x5c8a0, mulmod(sub(f_q, mload(0x5c880)), mload(0x49860), f_q)) +mstore(0x5c8c0, mulmod(mload(0x58e40), mload(0x49860), f_q)) +mstore(0x5c8e0, addmod(mload(0x5c840), mload(0x5c8a0), f_q)) +{ + let result := mulmod(mload(0x10460), mload(0x48600), f_q) +mstore(379136, result) + } +mstore(0x5c920, mulmod(mload(0x5c900), mload(0x48c80), f_q)) +mstore(0x5c940, mulmod(sub(f_q, mload(0x5c920)), mload(0x49880), f_q)) +mstore(0x5c960, mulmod(mload(0x58e40), mload(0x49880), f_q)) +mstore(0x5c980, addmod(mload(0x5c8e0), mload(0x5c940), f_q)) +{ + let result := mulmod(mload(0x10480), mload(0x48600), f_q) +mstore(379296, result) + } +mstore(0x5c9c0, mulmod(mload(0x5c9a0), mload(0x48c80), f_q)) +mstore(0x5c9e0, mulmod(sub(f_q, mload(0x5c9c0)), mload(0x498a0), f_q)) +mstore(0x5ca00, mulmod(mload(0x58e40), mload(0x498a0), f_q)) +mstore(0x5ca20, addmod(mload(0x5c980), mload(0x5c9e0), f_q)) +{ + let result := mulmod(mload(0x104a0), mload(0x48600), f_q) +mstore(379456, result) + } +mstore(0x5ca60, mulmod(mload(0x5ca40), mload(0x48c80), f_q)) +mstore(0x5ca80, mulmod(sub(f_q, mload(0x5ca60)), mload(0x498c0), f_q)) +mstore(0x5caa0, mulmod(mload(0x58e40), mload(0x498c0), f_q)) +mstore(0x5cac0, addmod(mload(0x5ca20), mload(0x5ca80), f_q)) +{ + let result := mulmod(mload(0x104c0), mload(0x48600), f_q) +mstore(379616, result) + } +mstore(0x5cb00, mulmod(mload(0x5cae0), mload(0x48c80), f_q)) +mstore(0x5cb20, mulmod(sub(f_q, mload(0x5cb00)), mload(0x498e0), f_q)) +mstore(0x5cb40, mulmod(mload(0x58e40), mload(0x498e0), f_q)) +mstore(0x5cb60, addmod(mload(0x5cac0), mload(0x5cb20), f_q)) +{ + let result := mulmod(mload(0x104e0), mload(0x48600), f_q) +mstore(379776, result) + } +mstore(0x5cba0, mulmod(mload(0x5cb80), mload(0x48c80), f_q)) +mstore(0x5cbc0, mulmod(sub(f_q, mload(0x5cba0)), mload(0x49900), f_q)) +mstore(0x5cbe0, mulmod(mload(0x58e40), mload(0x49900), f_q)) +mstore(0x5cc00, addmod(mload(0x5cb60), mload(0x5cbc0), f_q)) +{ + let result := mulmod(mload(0x10500), mload(0x48600), f_q) +mstore(379936, result) + } +mstore(0x5cc40, mulmod(mload(0x5cc20), mload(0x48c80), f_q)) +mstore(0x5cc60, mulmod(sub(f_q, mload(0x5cc40)), mload(0x49920), f_q)) +mstore(0x5cc80, mulmod(mload(0x58e40), mload(0x49920), f_q)) +mstore(0x5cca0, addmod(mload(0x5cc00), mload(0x5cc60), f_q)) +{ + let result := mulmod(mload(0x10520), mload(0x48600), f_q) +mstore(380096, result) + } +mstore(0x5cce0, mulmod(mload(0x5ccc0), mload(0x48c80), f_q)) +mstore(0x5cd00, mulmod(sub(f_q, mload(0x5cce0)), mload(0x49940), f_q)) +mstore(0x5cd20, mulmod(mload(0x58e40), mload(0x49940), f_q)) +mstore(0x5cd40, addmod(mload(0x5cca0), mload(0x5cd00), f_q)) +{ + let result := mulmod(mload(0x10540), mload(0x48600), f_q) +mstore(380256, result) + } +mstore(0x5cd80, mulmod(mload(0x5cd60), mload(0x48c80), f_q)) +mstore(0x5cda0, mulmod(sub(f_q, mload(0x5cd80)), mload(0x49960), f_q)) +mstore(0x5cdc0, mulmod(mload(0x58e40), mload(0x49960), f_q)) +mstore(0x5cde0, addmod(mload(0x5cd40), mload(0x5cda0), f_q)) +{ + let result := mulmod(mload(0x10560), mload(0x48600), f_q) +mstore(380416, result) + } +mstore(0x5ce20, mulmod(mload(0x5ce00), mload(0x48c80), f_q)) +mstore(0x5ce40, mulmod(sub(f_q, mload(0x5ce20)), mload(0x49980), f_q)) +mstore(0x5ce60, mulmod(mload(0x58e40), mload(0x49980), f_q)) +mstore(0x5ce80, addmod(mload(0x5cde0), mload(0x5ce40), f_q)) +{ + let result := mulmod(mload(0x10580), mload(0x48600), f_q) +mstore(380576, result) + } +mstore(0x5cec0, mulmod(mload(0x5cea0), mload(0x48c80), f_q)) +mstore(0x5cee0, mulmod(sub(f_q, mload(0x5cec0)), mload(0x499a0), f_q)) +mstore(0x5cf00, mulmod(mload(0x58e40), mload(0x499a0), f_q)) +mstore(0x5cf20, addmod(mload(0x5ce80), mload(0x5cee0), f_q)) +{ + let result := mulmod(mload(0x105a0), mload(0x48600), f_q) +mstore(380736, result) + } +mstore(0x5cf60, mulmod(mload(0x5cf40), mload(0x48c80), f_q)) +mstore(0x5cf80, mulmod(sub(f_q, mload(0x5cf60)), mload(0x499c0), f_q)) +mstore(0x5cfa0, mulmod(mload(0x58e40), mload(0x499c0), f_q)) +mstore(0x5cfc0, addmod(mload(0x5cf20), mload(0x5cf80), f_q)) +{ + let result := mulmod(mload(0x105c0), mload(0x48600), f_q) +mstore(380896, result) + } +mstore(0x5d000, mulmod(mload(0x5cfe0), mload(0x48c80), f_q)) +mstore(0x5d020, mulmod(sub(f_q, mload(0x5d000)), mload(0x499e0), f_q)) +mstore(0x5d040, mulmod(mload(0x58e40), mload(0x499e0), f_q)) +mstore(0x5d060, addmod(mload(0x5cfc0), mload(0x5d020), f_q)) +{ + let result := mulmod(mload(0x105e0), mload(0x48600), f_q) +mstore(381056, result) + } +mstore(0x5d0a0, mulmod(mload(0x5d080), mload(0x48c80), f_q)) +mstore(0x5d0c0, mulmod(sub(f_q, mload(0x5d0a0)), mload(0x49a00), f_q)) +mstore(0x5d0e0, mulmod(mload(0x58e40), mload(0x49a00), f_q)) +mstore(0x5d100, addmod(mload(0x5d060), mload(0x5d0c0), f_q)) +{ + let result := mulmod(mload(0x10600), mload(0x48600), f_q) +mstore(381216, result) + } +mstore(0x5d140, mulmod(mload(0x5d120), mload(0x48c80), f_q)) +mstore(0x5d160, mulmod(sub(f_q, mload(0x5d140)), mload(0x49a20), f_q)) +mstore(0x5d180, mulmod(mload(0x58e40), mload(0x49a20), f_q)) +mstore(0x5d1a0, addmod(mload(0x5d100), mload(0x5d160), f_q)) +{ + let result := mulmod(mload(0x10620), mload(0x48600), f_q) +mstore(381376, result) + } +mstore(0x5d1e0, mulmod(mload(0x5d1c0), mload(0x48c80), f_q)) +mstore(0x5d200, mulmod(sub(f_q, mload(0x5d1e0)), mload(0x49a40), f_q)) +mstore(0x5d220, mulmod(mload(0x58e40), mload(0x49a40), f_q)) +mstore(0x5d240, addmod(mload(0x5d1a0), mload(0x5d200), f_q)) +{ + let result := mulmod(mload(0x10640), mload(0x48600), f_q) +mstore(381536, result) + } +mstore(0x5d280, mulmod(mload(0x5d260), mload(0x48c80), f_q)) +mstore(0x5d2a0, mulmod(sub(f_q, mload(0x5d280)), mload(0x49a60), f_q)) +mstore(0x5d2c0, mulmod(mload(0x58e40), mload(0x49a60), f_q)) +mstore(0x5d2e0, addmod(mload(0x5d240), mload(0x5d2a0), f_q)) +{ + let result := mulmod(mload(0x10660), mload(0x48600), f_q) +mstore(381696, result) + } +mstore(0x5d320, mulmod(mload(0x5d300), mload(0x48c80), f_q)) +mstore(0x5d340, mulmod(sub(f_q, mload(0x5d320)), mload(0x49a80), f_q)) +mstore(0x5d360, mulmod(mload(0x58e40), mload(0x49a80), f_q)) +mstore(0x5d380, addmod(mload(0x5d2e0), mload(0x5d340), f_q)) +{ + let result := mulmod(mload(0x10680), mload(0x48600), f_q) +mstore(381856, result) + } +mstore(0x5d3c0, mulmod(mload(0x5d3a0), mload(0x48c80), f_q)) +mstore(0x5d3e0, mulmod(sub(f_q, mload(0x5d3c0)), mload(0x49aa0), f_q)) +mstore(0x5d400, mulmod(mload(0x58e40), mload(0x49aa0), f_q)) +mstore(0x5d420, addmod(mload(0x5d380), mload(0x5d3e0), f_q)) +{ + let result := mulmod(mload(0x106a0), mload(0x48600), f_q) +mstore(382016, result) + } +mstore(0x5d460, mulmod(mload(0x5d440), mload(0x48c80), f_q)) +mstore(0x5d480, mulmod(sub(f_q, mload(0x5d460)), mload(0x49ac0), f_q)) +mstore(0x5d4a0, mulmod(mload(0x58e40), mload(0x49ac0), f_q)) +mstore(0x5d4c0, addmod(mload(0x5d420), mload(0x5d480), f_q)) +{ + let result := mulmod(mload(0x106c0), mload(0x48600), f_q) +mstore(382176, result) + } +mstore(0x5d500, mulmod(mload(0x5d4e0), mload(0x48c80), f_q)) +mstore(0x5d520, mulmod(sub(f_q, mload(0x5d500)), mload(0x49ae0), f_q)) +mstore(0x5d540, mulmod(mload(0x58e40), mload(0x49ae0), f_q)) +mstore(0x5d560, addmod(mload(0x5d4c0), mload(0x5d520), f_q)) +{ + let result := mulmod(mload(0x106e0), mload(0x48600), f_q) +mstore(382336, result) + } +mstore(0x5d5a0, mulmod(mload(0x5d580), mload(0x48c80), f_q)) +mstore(0x5d5c0, mulmod(sub(f_q, mload(0x5d5a0)), mload(0x49b00), f_q)) +mstore(0x5d5e0, mulmod(mload(0x58e40), mload(0x49b00), f_q)) +mstore(0x5d600, addmod(mload(0x5d560), mload(0x5d5c0), f_q)) +{ + let result := mulmod(mload(0x10700), mload(0x48600), f_q) +mstore(382496, result) + } +mstore(0x5d640, mulmod(mload(0x5d620), mload(0x48c80), f_q)) +mstore(0x5d660, mulmod(sub(f_q, mload(0x5d640)), mload(0x49b20), f_q)) +mstore(0x5d680, mulmod(mload(0x58e40), mload(0x49b20), f_q)) +mstore(0x5d6a0, addmod(mload(0x5d600), mload(0x5d660), f_q)) +{ + let result := mulmod(mload(0x10720), mload(0x48600), f_q) +mstore(382656, result) + } +mstore(0x5d6e0, mulmod(mload(0x5d6c0), mload(0x48c80), f_q)) +mstore(0x5d700, mulmod(sub(f_q, mload(0x5d6e0)), mload(0x49b40), f_q)) +mstore(0x5d720, mulmod(mload(0x58e40), mload(0x49b40), f_q)) +mstore(0x5d740, addmod(mload(0x5d6a0), mload(0x5d700), f_q)) +{ + let result := mulmod(mload(0x10740), mload(0x48600), f_q) +mstore(382816, result) + } +mstore(0x5d780, mulmod(mload(0x5d760), mload(0x48c80), f_q)) +mstore(0x5d7a0, mulmod(sub(f_q, mload(0x5d780)), mload(0x49b60), f_q)) +mstore(0x5d7c0, mulmod(mload(0x58e40), mload(0x49b60), f_q)) +mstore(0x5d7e0, addmod(mload(0x5d740), mload(0x5d7a0), f_q)) +{ + let result := mulmod(mload(0x10760), mload(0x48600), f_q) +mstore(382976, result) + } +mstore(0x5d820, mulmod(mload(0x5d800), mload(0x48c80), f_q)) +mstore(0x5d840, mulmod(sub(f_q, mload(0x5d820)), mload(0x49b80), f_q)) +mstore(0x5d860, mulmod(mload(0x58e40), mload(0x49b80), f_q)) +mstore(0x5d880, addmod(mload(0x5d7e0), mload(0x5d840), f_q)) +{ + let result := mulmod(mload(0x10780), mload(0x48600), f_q) +mstore(383136, result) + } +mstore(0x5d8c0, mulmod(mload(0x5d8a0), mload(0x48c80), f_q)) +mstore(0x5d8e0, mulmod(sub(f_q, mload(0x5d8c0)), mload(0x49ba0), f_q)) +mstore(0x5d900, mulmod(mload(0x58e40), mload(0x49ba0), f_q)) +mstore(0x5d920, addmod(mload(0x5d880), mload(0x5d8e0), f_q)) +{ + let result := mulmod(mload(0x107a0), mload(0x48600), f_q) +mstore(383296, result) + } +mstore(0x5d960, mulmod(mload(0x5d940), mload(0x48c80), f_q)) +mstore(0x5d980, mulmod(sub(f_q, mload(0x5d960)), mload(0x49bc0), f_q)) +mstore(0x5d9a0, mulmod(mload(0x58e40), mload(0x49bc0), f_q)) +mstore(0x5d9c0, addmod(mload(0x5d920), mload(0x5d980), f_q)) +{ + let result := mulmod(mload(0x107c0), mload(0x48600), f_q) +mstore(383456, result) + } +mstore(0x5da00, mulmod(mload(0x5d9e0), mload(0x48c80), f_q)) +mstore(0x5da20, mulmod(sub(f_q, mload(0x5da00)), mload(0x49be0), f_q)) +mstore(0x5da40, mulmod(mload(0x58e40), mload(0x49be0), f_q)) +mstore(0x5da60, addmod(mload(0x5d9c0), mload(0x5da20), f_q)) +{ + let result := mulmod(mload(0x107e0), mload(0x48600), f_q) +mstore(383616, result) + } +mstore(0x5daa0, mulmod(mload(0x5da80), mload(0x48c80), f_q)) +mstore(0x5dac0, mulmod(sub(f_q, mload(0x5daa0)), mload(0x49c00), f_q)) +mstore(0x5dae0, mulmod(mload(0x58e40), mload(0x49c00), f_q)) +mstore(0x5db00, addmod(mload(0x5da60), mload(0x5dac0), f_q)) +{ + let result := mulmod(mload(0x10800), mload(0x48600), f_q) +mstore(383776, result) + } +mstore(0x5db40, mulmod(mload(0x5db20), mload(0x48c80), f_q)) +mstore(0x5db60, mulmod(sub(f_q, mload(0x5db40)), mload(0x49c20), f_q)) +mstore(0x5db80, mulmod(mload(0x58e40), mload(0x49c20), f_q)) +mstore(0x5dba0, addmod(mload(0x5db00), mload(0x5db60), f_q)) +{ + let result := mulmod(mload(0x10820), mload(0x48600), f_q) +mstore(383936, result) + } +mstore(0x5dbe0, mulmod(mload(0x5dbc0), mload(0x48c80), f_q)) +mstore(0x5dc00, mulmod(sub(f_q, mload(0x5dbe0)), mload(0x49c40), f_q)) +mstore(0x5dc20, mulmod(mload(0x58e40), mload(0x49c40), f_q)) +mstore(0x5dc40, addmod(mload(0x5dba0), mload(0x5dc00), f_q)) +{ + let result := mulmod(mload(0x10840), mload(0x48600), f_q) +mstore(384096, result) + } +mstore(0x5dc80, mulmod(mload(0x5dc60), mload(0x48c80), f_q)) +mstore(0x5dca0, mulmod(sub(f_q, mload(0x5dc80)), mload(0x49c60), f_q)) +mstore(0x5dcc0, mulmod(mload(0x58e40), mload(0x49c60), f_q)) +mstore(0x5dce0, addmod(mload(0x5dc40), mload(0x5dca0), f_q)) +{ + let result := mulmod(mload(0x10860), mload(0x48600), f_q) +mstore(384256, result) + } +mstore(0x5dd20, mulmod(mload(0x5dd00), mload(0x48c80), f_q)) +mstore(0x5dd40, mulmod(sub(f_q, mload(0x5dd20)), mload(0x49c80), f_q)) +mstore(0x5dd60, mulmod(mload(0x58e40), mload(0x49c80), f_q)) +mstore(0x5dd80, addmod(mload(0x5dce0), mload(0x5dd40), f_q)) +{ + let result := mulmod(mload(0x10880), mload(0x48600), f_q) +mstore(384416, result) + } +mstore(0x5ddc0, mulmod(mload(0x5dda0), mload(0x48c80), f_q)) +mstore(0x5dde0, mulmod(sub(f_q, mload(0x5ddc0)), mload(0x49ca0), f_q)) +mstore(0x5de00, mulmod(mload(0x58e40), mload(0x49ca0), f_q)) +mstore(0x5de20, addmod(mload(0x5dd80), mload(0x5dde0), f_q)) +{ + let result := mulmod(mload(0x108a0), mload(0x48600), f_q) +mstore(384576, result) + } +mstore(0x5de60, mulmod(mload(0x5de40), mload(0x48c80), f_q)) +mstore(0x5de80, mulmod(sub(f_q, mload(0x5de60)), mload(0x49cc0), f_q)) +mstore(0x5dea0, mulmod(mload(0x58e40), mload(0x49cc0), f_q)) +mstore(0x5dec0, addmod(mload(0x5de20), mload(0x5de80), f_q)) +{ + let result := mulmod(mload(0x108c0), mload(0x48600), f_q) +mstore(384736, result) + } +mstore(0x5df00, mulmod(mload(0x5dee0), mload(0x48c80), f_q)) +mstore(0x5df20, mulmod(sub(f_q, mload(0x5df00)), mload(0x49ce0), f_q)) +mstore(0x5df40, mulmod(mload(0x58e40), mload(0x49ce0), f_q)) +mstore(0x5df60, addmod(mload(0x5dec0), mload(0x5df20), f_q)) +{ + let result := mulmod(mload(0x108e0), mload(0x48600), f_q) +mstore(384896, result) + } +mstore(0x5dfa0, mulmod(mload(0x5df80), mload(0x48c80), f_q)) +mstore(0x5dfc0, mulmod(sub(f_q, mload(0x5dfa0)), mload(0x49d00), f_q)) +mstore(0x5dfe0, mulmod(mload(0x58e40), mload(0x49d00), f_q)) +mstore(0x5e000, addmod(mload(0x5df60), mload(0x5dfc0), f_q)) +{ + let result := mulmod(mload(0x10900), mload(0x48600), f_q) +mstore(385056, result) + } +mstore(0x5e040, mulmod(mload(0x5e020), mload(0x48c80), f_q)) +mstore(0x5e060, mulmod(sub(f_q, mload(0x5e040)), mload(0x49d20), f_q)) +mstore(0x5e080, mulmod(mload(0x58e40), mload(0x49d20), f_q)) +mstore(0x5e0a0, addmod(mload(0x5e000), mload(0x5e060), f_q)) +{ + let result := mulmod(mload(0x10920), mload(0x48600), f_q) +mstore(385216, result) + } +mstore(0x5e0e0, mulmod(mload(0x5e0c0), mload(0x48c80), f_q)) +mstore(0x5e100, mulmod(sub(f_q, mload(0x5e0e0)), mload(0x49d40), f_q)) +mstore(0x5e120, mulmod(mload(0x58e40), mload(0x49d40), f_q)) +mstore(0x5e140, addmod(mload(0x5e0a0), mload(0x5e100), f_q)) +{ + let result := mulmod(mload(0x10940), mload(0x48600), f_q) +mstore(385376, result) + } +mstore(0x5e180, mulmod(mload(0x5e160), mload(0x48c80), f_q)) +mstore(0x5e1a0, mulmod(sub(f_q, mload(0x5e180)), mload(0x49d60), f_q)) +mstore(0x5e1c0, mulmod(mload(0x58e40), mload(0x49d60), f_q)) +mstore(0x5e1e0, addmod(mload(0x5e140), mload(0x5e1a0), f_q)) +{ + let result := mulmod(mload(0x10960), mload(0x48600), f_q) +mstore(385536, result) + } +mstore(0x5e220, mulmod(mload(0x5e200), mload(0x48c80), f_q)) +mstore(0x5e240, mulmod(sub(f_q, mload(0x5e220)), mload(0x49d80), f_q)) +mstore(0x5e260, mulmod(mload(0x58e40), mload(0x49d80), f_q)) +mstore(0x5e280, addmod(mload(0x5e1e0), mload(0x5e240), f_q)) +{ + let result := mulmod(mload(0x10980), mload(0x48600), f_q) +mstore(385696, result) + } +mstore(0x5e2c0, mulmod(mload(0x5e2a0), mload(0x48c80), f_q)) +mstore(0x5e2e0, mulmod(sub(f_q, mload(0x5e2c0)), mload(0x49da0), f_q)) +mstore(0x5e300, mulmod(mload(0x58e40), mload(0x49da0), f_q)) +mstore(0x5e320, addmod(mload(0x5e280), mload(0x5e2e0), f_q)) +{ + let result := mulmod(mload(0x109a0), mload(0x48600), f_q) +mstore(385856, result) + } +mstore(0x5e360, mulmod(mload(0x5e340), mload(0x48c80), f_q)) +mstore(0x5e380, mulmod(sub(f_q, mload(0x5e360)), mload(0x49dc0), f_q)) +mstore(0x5e3a0, mulmod(mload(0x58e40), mload(0x49dc0), f_q)) +mstore(0x5e3c0, addmod(mload(0x5e320), mload(0x5e380), f_q)) +{ + let result := mulmod(mload(0x109c0), mload(0x48600), f_q) +mstore(386016, result) + } +mstore(0x5e400, mulmod(mload(0x5e3e0), mload(0x48c80), f_q)) +mstore(0x5e420, mulmod(sub(f_q, mload(0x5e400)), mload(0x49de0), f_q)) +mstore(0x5e440, mulmod(mload(0x58e40), mload(0x49de0), f_q)) +mstore(0x5e460, addmod(mload(0x5e3c0), mload(0x5e420), f_q)) +{ + let result := mulmod(mload(0x109e0), mload(0x48600), f_q) +mstore(386176, result) + } +mstore(0x5e4a0, mulmod(mload(0x5e480), mload(0x48c80), f_q)) +mstore(0x5e4c0, mulmod(sub(f_q, mload(0x5e4a0)), mload(0x49e00), f_q)) +mstore(0x5e4e0, mulmod(mload(0x58e40), mload(0x49e00), f_q)) +mstore(0x5e500, addmod(mload(0x5e460), mload(0x5e4c0), f_q)) +{ + let result := mulmod(mload(0x10a00), mload(0x48600), f_q) +mstore(386336, result) + } +mstore(0x5e540, mulmod(mload(0x5e520), mload(0x48c80), f_q)) +mstore(0x5e560, mulmod(sub(f_q, mload(0x5e540)), mload(0x49e20), f_q)) +mstore(0x5e580, mulmod(mload(0x58e40), mload(0x49e20), f_q)) +mstore(0x5e5a0, addmod(mload(0x5e500), mload(0x5e560), f_q)) +{ + let result := mulmod(mload(0x10a20), mload(0x48600), f_q) +mstore(386496, result) + } +mstore(0x5e5e0, mulmod(mload(0x5e5c0), mload(0x48c80), f_q)) +mstore(0x5e600, mulmod(sub(f_q, mload(0x5e5e0)), mload(0x49e40), f_q)) +mstore(0x5e620, mulmod(mload(0x58e40), mload(0x49e40), f_q)) +mstore(0x5e640, addmod(mload(0x5e5a0), mload(0x5e600), f_q)) +{ + let result := mulmod(mload(0x10a40), mload(0x48600), f_q) +mstore(386656, result) + } +mstore(0x5e680, mulmod(mload(0x5e660), mload(0x48c80), f_q)) +mstore(0x5e6a0, mulmod(sub(f_q, mload(0x5e680)), mload(0x49e60), f_q)) +mstore(0x5e6c0, mulmod(mload(0x58e40), mload(0x49e60), f_q)) +mstore(0x5e6e0, addmod(mload(0x5e640), mload(0x5e6a0), f_q)) +{ + let result := mulmod(mload(0x10a60), mload(0x48600), f_q) +mstore(386816, result) + } +mstore(0x5e720, mulmod(mload(0x5e700), mload(0x48c80), f_q)) +mstore(0x5e740, mulmod(sub(f_q, mload(0x5e720)), mload(0x49e80), f_q)) +mstore(0x5e760, mulmod(mload(0x58e40), mload(0x49e80), f_q)) +mstore(0x5e780, addmod(mload(0x5e6e0), mload(0x5e740), f_q)) +{ + let result := mulmod(mload(0x10a80), mload(0x48600), f_q) +mstore(386976, result) + } +mstore(0x5e7c0, mulmod(mload(0x5e7a0), mload(0x48c80), f_q)) +mstore(0x5e7e0, mulmod(sub(f_q, mload(0x5e7c0)), mload(0x49ea0), f_q)) +mstore(0x5e800, mulmod(mload(0x58e40), mload(0x49ea0), f_q)) +mstore(0x5e820, addmod(mload(0x5e780), mload(0x5e7e0), f_q)) +{ + let result := mulmod(mload(0x10aa0), mload(0x48600), f_q) +mstore(387136, result) + } +mstore(0x5e860, mulmod(mload(0x5e840), mload(0x48c80), f_q)) +mstore(0x5e880, mulmod(sub(f_q, mload(0x5e860)), mload(0x49ec0), f_q)) +mstore(0x5e8a0, mulmod(mload(0x58e40), mload(0x49ec0), f_q)) +mstore(0x5e8c0, addmod(mload(0x5e820), mload(0x5e880), f_q)) +{ + let result := mulmod(mload(0x10ac0), mload(0x48600), f_q) +mstore(387296, result) + } +mstore(0x5e900, mulmod(mload(0x5e8e0), mload(0x48c80), f_q)) +mstore(0x5e920, mulmod(sub(f_q, mload(0x5e900)), mload(0x49ee0), f_q)) +mstore(0x5e940, mulmod(mload(0x58e40), mload(0x49ee0), f_q)) +mstore(0x5e960, addmod(mload(0x5e8c0), mload(0x5e920), f_q)) +{ + let result := mulmod(mload(0x10ae0), mload(0x48600), f_q) +mstore(387456, result) + } +mstore(0x5e9a0, mulmod(mload(0x5e980), mload(0x48c80), f_q)) +mstore(0x5e9c0, mulmod(sub(f_q, mload(0x5e9a0)), mload(0x49f00), f_q)) +mstore(0x5e9e0, mulmod(mload(0x58e40), mload(0x49f00), f_q)) +mstore(0x5ea00, addmod(mload(0x5e960), mload(0x5e9c0), f_q)) +{ + let result := mulmod(mload(0x10b00), mload(0x48600), f_q) +mstore(387616, result) + } +mstore(0x5ea40, mulmod(mload(0x5ea20), mload(0x48c80), f_q)) +mstore(0x5ea60, mulmod(sub(f_q, mload(0x5ea40)), mload(0x49f20), f_q)) +mstore(0x5ea80, mulmod(mload(0x58e40), mload(0x49f20), f_q)) +mstore(0x5eaa0, addmod(mload(0x5ea00), mload(0x5ea60), f_q)) +{ + let result := mulmod(mload(0x10b20), mload(0x48600), f_q) +mstore(387776, result) + } +mstore(0x5eae0, mulmod(mload(0x5eac0), mload(0x48c80), f_q)) +mstore(0x5eb00, mulmod(sub(f_q, mload(0x5eae0)), mload(0x49f40), f_q)) +mstore(0x5eb20, mulmod(mload(0x58e40), mload(0x49f40), f_q)) +mstore(0x5eb40, addmod(mload(0x5eaa0), mload(0x5eb00), f_q)) +{ + let result := mulmod(mload(0x10b40), mload(0x48600), f_q) +mstore(387936, result) + } +mstore(0x5eb80, mulmod(mload(0x5eb60), mload(0x48c80), f_q)) +mstore(0x5eba0, mulmod(sub(f_q, mload(0x5eb80)), mload(0x49f60), f_q)) +mstore(0x5ebc0, mulmod(mload(0x58e40), mload(0x49f60), f_q)) +mstore(0x5ebe0, addmod(mload(0x5eb40), mload(0x5eba0), f_q)) +{ + let result := mulmod(mload(0x10b60), mload(0x48600), f_q) +mstore(388096, result) + } +mstore(0x5ec20, mulmod(mload(0x5ec00), mload(0x48c80), f_q)) +mstore(0x5ec40, mulmod(sub(f_q, mload(0x5ec20)), mload(0x49f80), f_q)) +mstore(0x5ec60, mulmod(mload(0x58e40), mload(0x49f80), f_q)) +mstore(0x5ec80, addmod(mload(0x5ebe0), mload(0x5ec40), f_q)) +{ + let result := mulmod(mload(0x10b80), mload(0x48600), f_q) +mstore(388256, result) + } +mstore(0x5ecc0, mulmod(mload(0x5eca0), mload(0x48c80), f_q)) +mstore(0x5ece0, mulmod(sub(f_q, mload(0x5ecc0)), mload(0x49fa0), f_q)) +mstore(0x5ed00, mulmod(mload(0x58e40), mload(0x49fa0), f_q)) +mstore(0x5ed20, addmod(mload(0x5ec80), mload(0x5ece0), f_q)) +{ + let result := mulmod(mload(0x10ba0), mload(0x48600), f_q) +mstore(388416, result) + } +mstore(0x5ed60, mulmod(mload(0x5ed40), mload(0x48c80), f_q)) +mstore(0x5ed80, mulmod(sub(f_q, mload(0x5ed60)), mload(0x49fc0), f_q)) +mstore(0x5eda0, mulmod(mload(0x58e40), mload(0x49fc0), f_q)) +mstore(0x5edc0, addmod(mload(0x5ed20), mload(0x5ed80), f_q)) +{ + let result := mulmod(mload(0x10bc0), mload(0x48600), f_q) +mstore(388576, result) + } +mstore(0x5ee00, mulmod(mload(0x5ede0), mload(0x48c80), f_q)) +mstore(0x5ee20, mulmod(sub(f_q, mload(0x5ee00)), mload(0x49fe0), f_q)) +mstore(0x5ee40, mulmod(mload(0x58e40), mload(0x49fe0), f_q)) +mstore(0x5ee60, addmod(mload(0x5edc0), mload(0x5ee20), f_q)) +{ + let result := mulmod(mload(0x10be0), mload(0x48600), f_q) +mstore(388736, result) + } +mstore(0x5eea0, mulmod(mload(0x5ee80), mload(0x48c80), f_q)) +mstore(0x5eec0, mulmod(sub(f_q, mload(0x5eea0)), mload(0x4a000), f_q)) +mstore(0x5eee0, mulmod(mload(0x58e40), mload(0x4a000), f_q)) +mstore(0x5ef00, addmod(mload(0x5ee60), mload(0x5eec0), f_q)) +{ + let result := mulmod(mload(0x10c00), mload(0x48600), f_q) +mstore(388896, result) + } +mstore(0x5ef40, mulmod(mload(0x5ef20), mload(0x48c80), f_q)) +mstore(0x5ef60, mulmod(sub(f_q, mload(0x5ef40)), mload(0x4a020), f_q)) +mstore(0x5ef80, mulmod(mload(0x58e40), mload(0x4a020), f_q)) +mstore(0x5efa0, addmod(mload(0x5ef00), mload(0x5ef60), f_q)) +{ + let result := mulmod(mload(0x10c20), mload(0x48600), f_q) +mstore(389056, result) + } +mstore(0x5efe0, mulmod(mload(0x5efc0), mload(0x48c80), f_q)) +mstore(0x5f000, mulmod(sub(f_q, mload(0x5efe0)), mload(0x4a040), f_q)) +mstore(0x5f020, mulmod(mload(0x58e40), mload(0x4a040), f_q)) +mstore(0x5f040, addmod(mload(0x5efa0), mload(0x5f000), f_q)) +{ + let result := mulmod(mload(0x10c40), mload(0x48600), f_q) +mstore(389216, result) + } +mstore(0x5f080, mulmod(mload(0x5f060), mload(0x48c80), f_q)) +mstore(0x5f0a0, mulmod(sub(f_q, mload(0x5f080)), mload(0x4a060), f_q)) +mstore(0x5f0c0, mulmod(mload(0x58e40), mload(0x4a060), f_q)) +mstore(0x5f0e0, addmod(mload(0x5f040), mload(0x5f0a0), f_q)) +{ + let result := mulmod(mload(0x10c60), mload(0x48600), f_q) +mstore(389376, result) + } +mstore(0x5f120, mulmod(mload(0x5f100), mload(0x48c80), f_q)) +mstore(0x5f140, mulmod(sub(f_q, mload(0x5f120)), mload(0x4a080), f_q)) +mstore(0x5f160, mulmod(mload(0x58e40), mload(0x4a080), f_q)) +mstore(0x5f180, addmod(mload(0x5f0e0), mload(0x5f140), f_q)) +{ + let result := mulmod(mload(0x10c80), mload(0x48600), f_q) +mstore(389536, result) + } +mstore(0x5f1c0, mulmod(mload(0x5f1a0), mload(0x48c80), f_q)) +mstore(0x5f1e0, mulmod(sub(f_q, mload(0x5f1c0)), mload(0x4a0a0), f_q)) +mstore(0x5f200, mulmod(mload(0x58e40), mload(0x4a0a0), f_q)) +mstore(0x5f220, addmod(mload(0x5f180), mload(0x5f1e0), f_q)) +{ + let result := mulmod(mload(0x10ca0), mload(0x48600), f_q) +mstore(389696, result) + } +mstore(0x5f260, mulmod(mload(0x5f240), mload(0x48c80), f_q)) +mstore(0x5f280, mulmod(sub(f_q, mload(0x5f260)), mload(0x4a0c0), f_q)) +mstore(0x5f2a0, mulmod(mload(0x58e40), mload(0x4a0c0), f_q)) +mstore(0x5f2c0, addmod(mload(0x5f220), mload(0x5f280), f_q)) +{ + let result := mulmod(mload(0x10cc0), mload(0x48600), f_q) +mstore(389856, result) + } +mstore(0x5f300, mulmod(mload(0x5f2e0), mload(0x48c80), f_q)) +mstore(0x5f320, mulmod(sub(f_q, mload(0x5f300)), mload(0x4a0e0), f_q)) +mstore(0x5f340, mulmod(mload(0x58e40), mload(0x4a0e0), f_q)) +mstore(0x5f360, addmod(mload(0x5f2c0), mload(0x5f320), f_q)) +{ + let result := mulmod(mload(0x10ce0), mload(0x48600), f_q) +mstore(390016, result) + } +mstore(0x5f3a0, mulmod(mload(0x5f380), mload(0x48c80), f_q)) +mstore(0x5f3c0, mulmod(sub(f_q, mload(0x5f3a0)), mload(0x4a100), f_q)) +mstore(0x5f3e0, mulmod(mload(0x58e40), mload(0x4a100), f_q)) +mstore(0x5f400, addmod(mload(0x5f360), mload(0x5f3c0), f_q)) +{ + let result := mulmod(mload(0x10d00), mload(0x48600), f_q) +mstore(390176, result) + } +mstore(0x5f440, mulmod(mload(0x5f420), mload(0x48c80), f_q)) +mstore(0x5f460, mulmod(sub(f_q, mload(0x5f440)), mload(0x4a120), f_q)) +mstore(0x5f480, mulmod(mload(0x58e40), mload(0x4a120), f_q)) +mstore(0x5f4a0, addmod(mload(0x5f400), mload(0x5f460), f_q)) +{ + let result := mulmod(mload(0x10d20), mload(0x48600), f_q) +mstore(390336, result) + } +mstore(0x5f4e0, mulmod(mload(0x5f4c0), mload(0x48c80), f_q)) +mstore(0x5f500, mulmod(sub(f_q, mload(0x5f4e0)), mload(0x4a140), f_q)) +mstore(0x5f520, mulmod(mload(0x58e40), mload(0x4a140), f_q)) +mstore(0x5f540, addmod(mload(0x5f4a0), mload(0x5f500), f_q)) +{ + let result := mulmod(mload(0x10d40), mload(0x48600), f_q) +mstore(390496, result) + } +mstore(0x5f580, mulmod(mload(0x5f560), mload(0x48c80), f_q)) +mstore(0x5f5a0, mulmod(sub(f_q, mload(0x5f580)), mload(0x4a160), f_q)) +mstore(0x5f5c0, mulmod(mload(0x58e40), mload(0x4a160), f_q)) +mstore(0x5f5e0, addmod(mload(0x5f540), mload(0x5f5a0), f_q)) +{ + let result := mulmod(mload(0x10d60), mload(0x48600), f_q) +mstore(390656, result) + } +mstore(0x5f620, mulmod(mload(0x5f600), mload(0x48c80), f_q)) +mstore(0x5f640, mulmod(sub(f_q, mload(0x5f620)), mload(0x4a180), f_q)) +mstore(0x5f660, mulmod(mload(0x58e40), mload(0x4a180), f_q)) +mstore(0x5f680, addmod(mload(0x5f5e0), mload(0x5f640), f_q)) +{ + let result := mulmod(mload(0x10d80), mload(0x48600), f_q) +mstore(390816, result) + } +mstore(0x5f6c0, mulmod(mload(0x5f6a0), mload(0x48c80), f_q)) +mstore(0x5f6e0, mulmod(sub(f_q, mload(0x5f6c0)), mload(0x4a1a0), f_q)) +mstore(0x5f700, mulmod(mload(0x58e40), mload(0x4a1a0), f_q)) +mstore(0x5f720, addmod(mload(0x5f680), mload(0x5f6e0), f_q)) +{ + let result := mulmod(mload(0x10da0), mload(0x48600), f_q) +mstore(390976, result) + } +mstore(0x5f760, mulmod(mload(0x5f740), mload(0x48c80), f_q)) +mstore(0x5f780, mulmod(sub(f_q, mload(0x5f760)), mload(0x4a1c0), f_q)) +mstore(0x5f7a0, mulmod(mload(0x58e40), mload(0x4a1c0), f_q)) +mstore(0x5f7c0, addmod(mload(0x5f720), mload(0x5f780), f_q)) +{ + let result := mulmod(mload(0x10dc0), mload(0x48600), f_q) +mstore(391136, result) + } +mstore(0x5f800, mulmod(mload(0x5f7e0), mload(0x48c80), f_q)) +mstore(0x5f820, mulmod(sub(f_q, mload(0x5f800)), mload(0x4a1e0), f_q)) +mstore(0x5f840, mulmod(mload(0x58e40), mload(0x4a1e0), f_q)) +mstore(0x5f860, addmod(mload(0x5f7c0), mload(0x5f820), f_q)) +{ + let result := mulmod(mload(0x10de0), mload(0x48600), f_q) +mstore(391296, result) + } +mstore(0x5f8a0, mulmod(mload(0x5f880), mload(0x48c80), f_q)) +mstore(0x5f8c0, mulmod(sub(f_q, mload(0x5f8a0)), mload(0x4a200), f_q)) +mstore(0x5f8e0, mulmod(mload(0x58e40), mload(0x4a200), f_q)) +mstore(0x5f900, addmod(mload(0x5f860), mload(0x5f8c0), f_q)) +{ + let result := mulmod(mload(0x10e00), mload(0x48600), f_q) +mstore(391456, result) + } +mstore(0x5f940, mulmod(mload(0x5f920), mload(0x48c80), f_q)) +mstore(0x5f960, mulmod(sub(f_q, mload(0x5f940)), mload(0x4a220), f_q)) +mstore(0x5f980, mulmod(mload(0x58e40), mload(0x4a220), f_q)) +mstore(0x5f9a0, addmod(mload(0x5f900), mload(0x5f960), f_q)) +{ + let result := mulmod(mload(0x10e20), mload(0x48600), f_q) +mstore(391616, result) + } +mstore(0x5f9e0, mulmod(mload(0x5f9c0), mload(0x48c80), f_q)) +mstore(0x5fa00, mulmod(sub(f_q, mload(0x5f9e0)), mload(0x4a240), f_q)) +mstore(0x5fa20, mulmod(mload(0x58e40), mload(0x4a240), f_q)) +mstore(0x5fa40, addmod(mload(0x5f9a0), mload(0x5fa00), f_q)) +{ + let result := mulmod(mload(0x10e40), mload(0x48600), f_q) +mstore(391776, result) + } +mstore(0x5fa80, mulmod(mload(0x5fa60), mload(0x48c80), f_q)) +mstore(0x5faa0, mulmod(sub(f_q, mload(0x5fa80)), mload(0x4a260), f_q)) +mstore(0x5fac0, mulmod(mload(0x58e40), mload(0x4a260), f_q)) +mstore(0x5fae0, addmod(mload(0x5fa40), mload(0x5faa0), f_q)) +{ + let result := mulmod(mload(0x10e60), mload(0x48600), f_q) +mstore(391936, result) + } +mstore(0x5fb20, mulmod(mload(0x5fb00), mload(0x48c80), f_q)) +mstore(0x5fb40, mulmod(sub(f_q, mload(0x5fb20)), mload(0x4a280), f_q)) +mstore(0x5fb60, mulmod(mload(0x58e40), mload(0x4a280), f_q)) +mstore(0x5fb80, addmod(mload(0x5fae0), mload(0x5fb40), f_q)) +{ + let result := mulmod(mload(0x10e80), mload(0x48600), f_q) +mstore(392096, result) + } +mstore(0x5fbc0, mulmod(mload(0x5fba0), mload(0x48c80), f_q)) +mstore(0x5fbe0, mulmod(sub(f_q, mload(0x5fbc0)), mload(0x4a2a0), f_q)) +mstore(0x5fc00, mulmod(mload(0x58e40), mload(0x4a2a0), f_q)) +mstore(0x5fc20, addmod(mload(0x5fb80), mload(0x5fbe0), f_q)) +{ + let result := mulmod(mload(0x10ea0), mload(0x48600), f_q) +mstore(392256, result) + } +mstore(0x5fc60, mulmod(mload(0x5fc40), mload(0x48c80), f_q)) +mstore(0x5fc80, mulmod(sub(f_q, mload(0x5fc60)), mload(0x4a2c0), f_q)) +mstore(0x5fca0, mulmod(mload(0x58e40), mload(0x4a2c0), f_q)) +mstore(0x5fcc0, addmod(mload(0x5fc20), mload(0x5fc80), f_q)) +{ + let result := mulmod(mload(0x10ec0), mload(0x48600), f_q) +mstore(392416, result) + } +mstore(0x5fd00, mulmod(mload(0x5fce0), mload(0x48c80), f_q)) +mstore(0x5fd20, mulmod(sub(f_q, mload(0x5fd00)), mload(0x4a2e0), f_q)) +mstore(0x5fd40, mulmod(mload(0x58e40), mload(0x4a2e0), f_q)) +mstore(0x5fd60, addmod(mload(0x5fcc0), mload(0x5fd20), f_q)) +{ + let result := mulmod(mload(0x10ee0), mload(0x48600), f_q) +mstore(392576, result) + } +mstore(0x5fda0, mulmod(mload(0x5fd80), mload(0x48c80), f_q)) +mstore(0x5fdc0, mulmod(sub(f_q, mload(0x5fda0)), mload(0x4a300), f_q)) +mstore(0x5fde0, mulmod(mload(0x58e40), mload(0x4a300), f_q)) +mstore(0x5fe00, addmod(mload(0x5fd60), mload(0x5fdc0), f_q)) +{ + let result := mulmod(mload(0x10f00), mload(0x48600), f_q) +mstore(392736, result) + } +mstore(0x5fe40, mulmod(mload(0x5fe20), mload(0x48c80), f_q)) +mstore(0x5fe60, mulmod(sub(f_q, mload(0x5fe40)), mload(0x4a320), f_q)) +mstore(0x5fe80, mulmod(mload(0x58e40), mload(0x4a320), f_q)) +mstore(0x5fea0, addmod(mload(0x5fe00), mload(0x5fe60), f_q)) +{ + let result := mulmod(mload(0x10f20), mload(0x48600), f_q) +mstore(392896, result) + } +mstore(0x5fee0, mulmod(mload(0x5fec0), mload(0x48c80), f_q)) +mstore(0x5ff00, mulmod(sub(f_q, mload(0x5fee0)), mload(0x4a340), f_q)) +mstore(0x5ff20, mulmod(mload(0x58e40), mload(0x4a340), f_q)) +mstore(0x5ff40, addmod(mload(0x5fea0), mload(0x5ff00), f_q)) +{ + let result := mulmod(mload(0x10f40), mload(0x48600), f_q) +mstore(393056, result) + } +mstore(0x5ff80, mulmod(mload(0x5ff60), mload(0x48c80), f_q)) +mstore(0x5ffa0, mulmod(sub(f_q, mload(0x5ff80)), mload(0x4a360), f_q)) +mstore(0x5ffc0, mulmod(mload(0x58e40), mload(0x4a360), f_q)) +mstore(0x5ffe0, addmod(mload(0x5ff40), mload(0x5ffa0), f_q)) +{ + let result := mulmod(mload(0x10f60), mload(0x48600), f_q) +mstore(393216, result) + } +mstore(0x60020, mulmod(mload(0x60000), mload(0x48c80), f_q)) +mstore(0x60040, mulmod(sub(f_q, mload(0x60020)), mload(0x4a380), f_q)) +mstore(0x60060, mulmod(mload(0x58e40), mload(0x4a380), f_q)) +mstore(0x60080, addmod(mload(0x5ffe0), mload(0x60040), f_q)) +{ + let result := mulmod(mload(0x10f80), mload(0x48600), f_q) +mstore(393376, result) + } +mstore(0x600c0, mulmod(mload(0x600a0), mload(0x48c80), f_q)) +mstore(0x600e0, mulmod(sub(f_q, mload(0x600c0)), mload(0x4a3a0), f_q)) +mstore(0x60100, mulmod(mload(0x58e40), mload(0x4a3a0), f_q)) +mstore(0x60120, addmod(mload(0x60080), mload(0x600e0), f_q)) +{ + let result := mulmod(mload(0x10fa0), mload(0x48600), f_q) +mstore(393536, result) + } +mstore(0x60160, mulmod(mload(0x60140), mload(0x48c80), f_q)) +mstore(0x60180, mulmod(sub(f_q, mload(0x60160)), mload(0x4a3c0), f_q)) +mstore(0x601a0, mulmod(mload(0x58e40), mload(0x4a3c0), f_q)) +mstore(0x601c0, addmod(mload(0x60120), mload(0x60180), f_q)) +{ + let result := mulmod(mload(0x10fc0), mload(0x48600), f_q) +mstore(393696, result) + } +mstore(0x60200, mulmod(mload(0x601e0), mload(0x48c80), f_q)) +mstore(0x60220, mulmod(sub(f_q, mload(0x60200)), mload(0x4a3e0), f_q)) +mstore(0x60240, mulmod(mload(0x58e40), mload(0x4a3e0), f_q)) +mstore(0x60260, addmod(mload(0x601c0), mload(0x60220), f_q)) +{ + let result := mulmod(mload(0x10fe0), mload(0x48600), f_q) +mstore(393856, result) + } +mstore(0x602a0, mulmod(mload(0x60280), mload(0x48c80), f_q)) +mstore(0x602c0, mulmod(sub(f_q, mload(0x602a0)), mload(0x4a400), f_q)) +mstore(0x602e0, mulmod(mload(0x58e40), mload(0x4a400), f_q)) +mstore(0x60300, addmod(mload(0x60260), mload(0x602c0), f_q)) +{ + let result := mulmod(mload(0x11000), mload(0x48600), f_q) +mstore(394016, result) + } +mstore(0x60340, mulmod(mload(0x60320), mload(0x48c80), f_q)) +mstore(0x60360, mulmod(sub(f_q, mload(0x60340)), mload(0x4a420), f_q)) +mstore(0x60380, mulmod(mload(0x58e40), mload(0x4a420), f_q)) +mstore(0x603a0, addmod(mload(0x60300), mload(0x60360), f_q)) +{ + let result := mulmod(mload(0x11020), mload(0x48600), f_q) +mstore(394176, result) + } +mstore(0x603e0, mulmod(mload(0x603c0), mload(0x48c80), f_q)) +mstore(0x60400, mulmod(sub(f_q, mload(0x603e0)), mload(0x4a440), f_q)) +mstore(0x60420, mulmod(mload(0x58e40), mload(0x4a440), f_q)) +mstore(0x60440, addmod(mload(0x603a0), mload(0x60400), f_q)) +{ + let result := mulmod(mload(0x11040), mload(0x48600), f_q) +mstore(394336, result) + } +mstore(0x60480, mulmod(mload(0x60460), mload(0x48c80), f_q)) +mstore(0x604a0, mulmod(sub(f_q, mload(0x60480)), mload(0x4a460), f_q)) +mstore(0x604c0, mulmod(mload(0x58e40), mload(0x4a460), f_q)) +mstore(0x604e0, addmod(mload(0x60440), mload(0x604a0), f_q)) +{ + let result := mulmod(mload(0x11060), mload(0x48600), f_q) +mstore(394496, result) + } +mstore(0x60520, mulmod(mload(0x60500), mload(0x48c80), f_q)) +mstore(0x60540, mulmod(sub(f_q, mload(0x60520)), mload(0x4a480), f_q)) +mstore(0x60560, mulmod(mload(0x58e40), mload(0x4a480), f_q)) +mstore(0x60580, addmod(mload(0x604e0), mload(0x60540), f_q)) +{ + let result := mulmod(mload(0x11080), mload(0x48600), f_q) +mstore(394656, result) + } +mstore(0x605c0, mulmod(mload(0x605a0), mload(0x48c80), f_q)) +mstore(0x605e0, mulmod(sub(f_q, mload(0x605c0)), mload(0x4a4a0), f_q)) +mstore(0x60600, mulmod(mload(0x58e40), mload(0x4a4a0), f_q)) +mstore(0x60620, addmod(mload(0x60580), mload(0x605e0), f_q)) +{ + let result := mulmod(mload(0x110a0), mload(0x48600), f_q) +mstore(394816, result) + } +mstore(0x60660, mulmod(mload(0x60640), mload(0x48c80), f_q)) +mstore(0x60680, mulmod(sub(f_q, mload(0x60660)), mload(0x4a4c0), f_q)) +mstore(0x606a0, mulmod(mload(0x58e40), mload(0x4a4c0), f_q)) +mstore(0x606c0, addmod(mload(0x60620), mload(0x60680), f_q)) +{ + let result := mulmod(mload(0x110c0), mload(0x48600), f_q) +mstore(394976, result) + } +mstore(0x60700, mulmod(mload(0x606e0), mload(0x48c80), f_q)) +mstore(0x60720, mulmod(sub(f_q, mload(0x60700)), mload(0x4a4e0), f_q)) +mstore(0x60740, mulmod(mload(0x58e40), mload(0x4a4e0), f_q)) +mstore(0x60760, addmod(mload(0x606c0), mload(0x60720), f_q)) +{ + let result := mulmod(mload(0x110e0), mload(0x48600), f_q) +mstore(395136, result) + } +mstore(0x607a0, mulmod(mload(0x60780), mload(0x48c80), f_q)) +mstore(0x607c0, mulmod(sub(f_q, mload(0x607a0)), mload(0x4a500), f_q)) +mstore(0x607e0, mulmod(mload(0x58e40), mload(0x4a500), f_q)) +mstore(0x60800, addmod(mload(0x60760), mload(0x607c0), f_q)) +{ + let result := mulmod(mload(0x11100), mload(0x48600), f_q) +mstore(395296, result) + } +mstore(0x60840, mulmod(mload(0x60820), mload(0x48c80), f_q)) +mstore(0x60860, mulmod(sub(f_q, mload(0x60840)), mload(0x4a520), f_q)) +mstore(0x60880, mulmod(mload(0x58e40), mload(0x4a520), f_q)) +mstore(0x608a0, addmod(mload(0x60800), mload(0x60860), f_q)) +{ + let result := mulmod(mload(0x11120), mload(0x48600), f_q) +mstore(395456, result) + } +mstore(0x608e0, mulmod(mload(0x608c0), mload(0x48c80), f_q)) +mstore(0x60900, mulmod(sub(f_q, mload(0x608e0)), mload(0x4a540), f_q)) +mstore(0x60920, mulmod(mload(0x58e40), mload(0x4a540), f_q)) +mstore(0x60940, addmod(mload(0x608a0), mload(0x60900), f_q)) +{ + let result := mulmod(mload(0x11140), mload(0x48600), f_q) +mstore(395616, result) + } +mstore(0x60980, mulmod(mload(0x60960), mload(0x48c80), f_q)) +mstore(0x609a0, mulmod(sub(f_q, mload(0x60980)), mload(0x4a560), f_q)) +mstore(0x609c0, mulmod(mload(0x58e40), mload(0x4a560), f_q)) +mstore(0x609e0, addmod(mload(0x60940), mload(0x609a0), f_q)) +{ + let result := mulmod(mload(0x11160), mload(0x48600), f_q) +mstore(395776, result) + } +mstore(0x60a20, mulmod(mload(0x60a00), mload(0x48c80), f_q)) +mstore(0x60a40, mulmod(sub(f_q, mload(0x60a20)), mload(0x4a580), f_q)) +mstore(0x60a60, mulmod(mload(0x58e40), mload(0x4a580), f_q)) +mstore(0x60a80, addmod(mload(0x609e0), mload(0x60a40), f_q)) +{ + let result := mulmod(mload(0x11180), mload(0x48600), f_q) +mstore(395936, result) + } +mstore(0x60ac0, mulmod(mload(0x60aa0), mload(0x48c80), f_q)) +mstore(0x60ae0, mulmod(sub(f_q, mload(0x60ac0)), mload(0x4a5a0), f_q)) +mstore(0x60b00, mulmod(mload(0x58e40), mload(0x4a5a0), f_q)) +mstore(0x60b20, addmod(mload(0x60a80), mload(0x60ae0), f_q)) +{ + let result := mulmod(mload(0x111a0), mload(0x48600), f_q) +mstore(396096, result) + } +mstore(0x60b60, mulmod(mload(0x60b40), mload(0x48c80), f_q)) +mstore(0x60b80, mulmod(sub(f_q, mload(0x60b60)), mload(0x4a5c0), f_q)) +mstore(0x60ba0, mulmod(mload(0x58e40), mload(0x4a5c0), f_q)) +mstore(0x60bc0, addmod(mload(0x60b20), mload(0x60b80), f_q)) +{ + let result := mulmod(mload(0x111c0), mload(0x48600), f_q) +mstore(396256, result) + } +mstore(0x60c00, mulmod(mload(0x60be0), mload(0x48c80), f_q)) +mstore(0x60c20, mulmod(sub(f_q, mload(0x60c00)), mload(0x4a5e0), f_q)) +mstore(0x60c40, mulmod(mload(0x58e40), mload(0x4a5e0), f_q)) +mstore(0x60c60, addmod(mload(0x60bc0), mload(0x60c20), f_q)) +{ + let result := mulmod(mload(0x111e0), mload(0x48600), f_q) +mstore(396416, result) + } +mstore(0x60ca0, mulmod(mload(0x60c80), mload(0x48c80), f_q)) +mstore(0x60cc0, mulmod(sub(f_q, mload(0x60ca0)), mload(0x4a600), f_q)) +mstore(0x60ce0, mulmod(mload(0x58e40), mload(0x4a600), f_q)) +mstore(0x60d00, addmod(mload(0x60c60), mload(0x60cc0), f_q)) +{ + let result := mulmod(mload(0x11200), mload(0x48600), f_q) +mstore(396576, result) + } +mstore(0x60d40, mulmod(mload(0x60d20), mload(0x48c80), f_q)) +mstore(0x60d60, mulmod(sub(f_q, mload(0x60d40)), mload(0x4a620), f_q)) +mstore(0x60d80, mulmod(mload(0x58e40), mload(0x4a620), f_q)) +mstore(0x60da0, addmod(mload(0x60d00), mload(0x60d60), f_q)) +{ + let result := mulmod(mload(0x11220), mload(0x48600), f_q) +mstore(396736, result) + } +mstore(0x60de0, mulmod(mload(0x60dc0), mload(0x48c80), f_q)) +mstore(0x60e00, mulmod(sub(f_q, mload(0x60de0)), mload(0x4a640), f_q)) +mstore(0x60e20, mulmod(mload(0x58e40), mload(0x4a640), f_q)) +mstore(0x60e40, addmod(mload(0x60da0), mload(0x60e00), f_q)) +{ + let result := mulmod(mload(0x11240), mload(0x48600), f_q) +mstore(396896, result) + } +mstore(0x60e80, mulmod(mload(0x60e60), mload(0x48c80), f_q)) +mstore(0x60ea0, mulmod(sub(f_q, mload(0x60e80)), mload(0x4a660), f_q)) +mstore(0x60ec0, mulmod(mload(0x58e40), mload(0x4a660), f_q)) +mstore(0x60ee0, addmod(mload(0x60e40), mload(0x60ea0), f_q)) +{ + let result := mulmod(mload(0x11260), mload(0x48600), f_q) +mstore(397056, result) + } +mstore(0x60f20, mulmod(mload(0x60f00), mload(0x48c80), f_q)) +mstore(0x60f40, mulmod(sub(f_q, mload(0x60f20)), mload(0x4a680), f_q)) +mstore(0x60f60, mulmod(mload(0x58e40), mload(0x4a680), f_q)) +mstore(0x60f80, addmod(mload(0x60ee0), mload(0x60f40), f_q)) +{ + let result := mulmod(mload(0x11280), mload(0x48600), f_q) +mstore(397216, result) + } +mstore(0x60fc0, mulmod(mload(0x60fa0), mload(0x48c80), f_q)) +mstore(0x60fe0, mulmod(sub(f_q, mload(0x60fc0)), mload(0x4a6a0), f_q)) +mstore(0x61000, mulmod(mload(0x58e40), mload(0x4a6a0), f_q)) +mstore(0x61020, addmod(mload(0x60f80), mload(0x60fe0), f_q)) +{ + let result := mulmod(mload(0x112a0), mload(0x48600), f_q) +mstore(397376, result) + } +mstore(0x61060, mulmod(mload(0x61040), mload(0x48c80), f_q)) +mstore(0x61080, mulmod(sub(f_q, mload(0x61060)), mload(0x4a6c0), f_q)) +mstore(0x610a0, mulmod(mload(0x58e40), mload(0x4a6c0), f_q)) +mstore(0x610c0, addmod(mload(0x61020), mload(0x61080), f_q)) +{ + let result := mulmod(mload(0x112c0), mload(0x48600), f_q) +mstore(397536, result) + } +mstore(0x61100, mulmod(mload(0x610e0), mload(0x48c80), f_q)) +mstore(0x61120, mulmod(sub(f_q, mload(0x61100)), mload(0x4a6e0), f_q)) +mstore(0x61140, mulmod(mload(0x58e40), mload(0x4a6e0), f_q)) +mstore(0x61160, addmod(mload(0x610c0), mload(0x61120), f_q)) +{ + let result := mulmod(mload(0x112e0), mload(0x48600), f_q) +mstore(397696, result) + } +mstore(0x611a0, mulmod(mload(0x61180), mload(0x48c80), f_q)) +mstore(0x611c0, mulmod(sub(f_q, mload(0x611a0)), mload(0x4a700), f_q)) +mstore(0x611e0, mulmod(mload(0x58e40), mload(0x4a700), f_q)) +mstore(0x61200, addmod(mload(0x61160), mload(0x611c0), f_q)) +{ + let result := mulmod(mload(0x11300), mload(0x48600), f_q) +mstore(397856, result) + } +mstore(0x61240, mulmod(mload(0x61220), mload(0x48c80), f_q)) +mstore(0x61260, mulmod(sub(f_q, mload(0x61240)), mload(0x4a720), f_q)) +mstore(0x61280, mulmod(mload(0x58e40), mload(0x4a720), f_q)) +mstore(0x612a0, addmod(mload(0x61200), mload(0x61260), f_q)) +{ + let result := mulmod(mload(0x11320), mload(0x48600), f_q) +mstore(398016, result) + } +mstore(0x612e0, mulmod(mload(0x612c0), mload(0x48c80), f_q)) +mstore(0x61300, mulmod(sub(f_q, mload(0x612e0)), mload(0x4a740), f_q)) +mstore(0x61320, mulmod(mload(0x58e40), mload(0x4a740), f_q)) +mstore(0x61340, addmod(mload(0x612a0), mload(0x61300), f_q)) +{ + let result := mulmod(mload(0x11340), mload(0x48600), f_q) +mstore(398176, result) + } +mstore(0x61380, mulmod(mload(0x61360), mload(0x48c80), f_q)) +mstore(0x613a0, mulmod(sub(f_q, mload(0x61380)), mload(0x4a760), f_q)) +mstore(0x613c0, mulmod(mload(0x58e40), mload(0x4a760), f_q)) +mstore(0x613e0, addmod(mload(0x61340), mload(0x613a0), f_q)) +{ + let result := mulmod(mload(0x11360), mload(0x48600), f_q) +mstore(398336, result) + } +mstore(0x61420, mulmod(mload(0x61400), mload(0x48c80), f_q)) +mstore(0x61440, mulmod(sub(f_q, mload(0x61420)), mload(0x4a780), f_q)) +mstore(0x61460, mulmod(mload(0x58e40), mload(0x4a780), f_q)) +mstore(0x61480, addmod(mload(0x613e0), mload(0x61440), f_q)) +{ + let result := mulmod(mload(0x11380), mload(0x48600), f_q) +mstore(398496, result) + } +mstore(0x614c0, mulmod(mload(0x614a0), mload(0x48c80), f_q)) +mstore(0x614e0, mulmod(sub(f_q, mload(0x614c0)), mload(0x4a7a0), f_q)) +mstore(0x61500, mulmod(mload(0x58e40), mload(0x4a7a0), f_q)) +mstore(0x61520, addmod(mload(0x61480), mload(0x614e0), f_q)) +{ + let result := mulmod(mload(0x113a0), mload(0x48600), f_q) +mstore(398656, result) + } +mstore(0x61560, mulmod(mload(0x61540), mload(0x48c80), f_q)) +mstore(0x61580, mulmod(sub(f_q, mload(0x61560)), mload(0x4a7c0), f_q)) +mstore(0x615a0, mulmod(mload(0x58e40), mload(0x4a7c0), f_q)) +mstore(0x615c0, addmod(mload(0x61520), mload(0x61580), f_q)) +{ + let result := mulmod(mload(0x113c0), mload(0x48600), f_q) +mstore(398816, result) + } +mstore(0x61600, mulmod(mload(0x615e0), mload(0x48c80), f_q)) +mstore(0x61620, mulmod(sub(f_q, mload(0x61600)), mload(0x4a7e0), f_q)) +mstore(0x61640, mulmod(mload(0x58e40), mload(0x4a7e0), f_q)) +mstore(0x61660, addmod(mload(0x615c0), mload(0x61620), f_q)) +{ + let result := mulmod(mload(0x113e0), mload(0x48600), f_q) +mstore(398976, result) + } +mstore(0x616a0, mulmod(mload(0x61680), mload(0x48c80), f_q)) +mstore(0x616c0, mulmod(sub(f_q, mload(0x616a0)), mload(0x4a800), f_q)) +mstore(0x616e0, mulmod(mload(0x58e40), mload(0x4a800), f_q)) +mstore(0x61700, addmod(mload(0x61660), mload(0x616c0), f_q)) +{ + let result := mulmod(mload(0x11400), mload(0x48600), f_q) +mstore(399136, result) + } +mstore(0x61740, mulmod(mload(0x61720), mload(0x48c80), f_q)) +mstore(0x61760, mulmod(sub(f_q, mload(0x61740)), mload(0x4a820), f_q)) +mstore(0x61780, mulmod(mload(0x58e40), mload(0x4a820), f_q)) +mstore(0x617a0, addmod(mload(0x61700), mload(0x61760), f_q)) +{ + let result := mulmod(mload(0x11420), mload(0x48600), f_q) +mstore(399296, result) + } +mstore(0x617e0, mulmod(mload(0x617c0), mload(0x48c80), f_q)) +mstore(0x61800, mulmod(sub(f_q, mload(0x617e0)), mload(0x4a840), f_q)) +mstore(0x61820, mulmod(mload(0x58e40), mload(0x4a840), f_q)) +mstore(0x61840, addmod(mload(0x617a0), mload(0x61800), f_q)) +{ + let result := mulmod(mload(0x11440), mload(0x48600), f_q) +mstore(399456, result) + } +mstore(0x61880, mulmod(mload(0x61860), mload(0x48c80), f_q)) +mstore(0x618a0, mulmod(sub(f_q, mload(0x61880)), mload(0x4a860), f_q)) +mstore(0x618c0, mulmod(mload(0x58e40), mload(0x4a860), f_q)) +mstore(0x618e0, addmod(mload(0x61840), mload(0x618a0), f_q)) +{ + let result := mulmod(mload(0x11460), mload(0x48600), f_q) +mstore(399616, result) + } +mstore(0x61920, mulmod(mload(0x61900), mload(0x48c80), f_q)) +mstore(0x61940, mulmod(sub(f_q, mload(0x61920)), mload(0x4a880), f_q)) +mstore(0x61960, mulmod(mload(0x58e40), mload(0x4a880), f_q)) +mstore(0x61980, addmod(mload(0x618e0), mload(0x61940), f_q)) +{ + let result := mulmod(mload(0x11480), mload(0x48600), f_q) +mstore(399776, result) + } +mstore(0x619c0, mulmod(mload(0x619a0), mload(0x48c80), f_q)) +mstore(0x619e0, mulmod(sub(f_q, mload(0x619c0)), mload(0x4a8a0), f_q)) +mstore(0x61a00, mulmod(mload(0x58e40), mload(0x4a8a0), f_q)) +mstore(0x61a20, addmod(mload(0x61980), mload(0x619e0), f_q)) +{ + let result := mulmod(mload(0x114a0), mload(0x48600), f_q) +mstore(399936, result) + } +mstore(0x61a60, mulmod(mload(0x61a40), mload(0x48c80), f_q)) +mstore(0x61a80, mulmod(sub(f_q, mload(0x61a60)), mload(0x4a8c0), f_q)) +mstore(0x61aa0, mulmod(mload(0x58e40), mload(0x4a8c0), f_q)) +mstore(0x61ac0, addmod(mload(0x61a20), mload(0x61a80), f_q)) +{ + let result := mulmod(mload(0x114c0), mload(0x48600), f_q) +mstore(400096, result) + } +mstore(0x61b00, mulmod(mload(0x61ae0), mload(0x48c80), f_q)) +mstore(0x61b20, mulmod(sub(f_q, mload(0x61b00)), mload(0x4a8e0), f_q)) +mstore(0x61b40, mulmod(mload(0x58e40), mload(0x4a8e0), f_q)) +mstore(0x61b60, addmod(mload(0x61ac0), mload(0x61b20), f_q)) +{ + let result := mulmod(mload(0x114e0), mload(0x48600), f_q) +mstore(400256, result) + } +mstore(0x61ba0, mulmod(mload(0x61b80), mload(0x48c80), f_q)) +mstore(0x61bc0, mulmod(sub(f_q, mload(0x61ba0)), mload(0x4a900), f_q)) +mstore(0x61be0, mulmod(mload(0x58e40), mload(0x4a900), f_q)) +mstore(0x61c00, addmod(mload(0x61b60), mload(0x61bc0), f_q)) +{ + let result := mulmod(mload(0x11500), mload(0x48600), f_q) +mstore(400416, result) + } +mstore(0x61c40, mulmod(mload(0x61c20), mload(0x48c80), f_q)) +mstore(0x61c60, mulmod(sub(f_q, mload(0x61c40)), mload(0x4a920), f_q)) +mstore(0x61c80, mulmod(mload(0x58e40), mload(0x4a920), f_q)) +mstore(0x61ca0, addmod(mload(0x61c00), mload(0x61c60), f_q)) +{ + let result := mulmod(mload(0x11520), mload(0x48600), f_q) +mstore(400576, result) + } +mstore(0x61ce0, mulmod(mload(0x61cc0), mload(0x48c80), f_q)) +mstore(0x61d00, mulmod(sub(f_q, mload(0x61ce0)), mload(0x4a940), f_q)) +mstore(0x61d20, mulmod(mload(0x58e40), mload(0x4a940), f_q)) +mstore(0x61d40, addmod(mload(0x61ca0), mload(0x61d00), f_q)) +{ + let result := mulmod(mload(0x11540), mload(0x48600), f_q) +mstore(400736, result) + } +mstore(0x61d80, mulmod(mload(0x61d60), mload(0x48c80), f_q)) +mstore(0x61da0, mulmod(sub(f_q, mload(0x61d80)), mload(0x4a960), f_q)) +mstore(0x61dc0, mulmod(mload(0x58e40), mload(0x4a960), f_q)) +mstore(0x61de0, addmod(mload(0x61d40), mload(0x61da0), f_q)) +{ + let result := mulmod(mload(0x11560), mload(0x48600), f_q) +mstore(400896, result) + } +mstore(0x61e20, mulmod(mload(0x61e00), mload(0x48c80), f_q)) +mstore(0x61e40, mulmod(sub(f_q, mload(0x61e20)), mload(0x4a980), f_q)) +mstore(0x61e60, mulmod(mload(0x58e40), mload(0x4a980), f_q)) +mstore(0x61e80, addmod(mload(0x61de0), mload(0x61e40), f_q)) +{ + let result := mulmod(mload(0x11580), mload(0x48600), f_q) +mstore(401056, result) + } +mstore(0x61ec0, mulmod(mload(0x61ea0), mload(0x48c80), f_q)) +mstore(0x61ee0, mulmod(sub(f_q, mload(0x61ec0)), mload(0x4a9a0), f_q)) +mstore(0x61f00, mulmod(mload(0x58e40), mload(0x4a9a0), f_q)) +mstore(0x61f20, addmod(mload(0x61e80), mload(0x61ee0), f_q)) +{ + let result := mulmod(mload(0x115a0), mload(0x48600), f_q) +mstore(401216, result) + } +mstore(0x61f60, mulmod(mload(0x61f40), mload(0x48c80), f_q)) +mstore(0x61f80, mulmod(sub(f_q, mload(0x61f60)), mload(0x4a9c0), f_q)) +mstore(0x61fa0, mulmod(mload(0x58e40), mload(0x4a9c0), f_q)) +mstore(0x61fc0, addmod(mload(0x61f20), mload(0x61f80), f_q)) +{ + let result := mulmod(mload(0x115c0), mload(0x48600), f_q) +mstore(401376, result) + } +mstore(0x62000, mulmod(mload(0x61fe0), mload(0x48c80), f_q)) +mstore(0x62020, mulmod(sub(f_q, mload(0x62000)), mload(0x4a9e0), f_q)) +mstore(0x62040, mulmod(mload(0x58e40), mload(0x4a9e0), f_q)) +mstore(0x62060, addmod(mload(0x61fc0), mload(0x62020), f_q)) +{ + let result := mulmod(mload(0x115e0), mload(0x48600), f_q) +mstore(401536, result) + } +mstore(0x620a0, mulmod(mload(0x62080), mload(0x48c80), f_q)) +mstore(0x620c0, mulmod(sub(f_q, mload(0x620a0)), mload(0x4aa00), f_q)) +mstore(0x620e0, mulmod(mload(0x58e40), mload(0x4aa00), f_q)) +mstore(0x62100, addmod(mload(0x62060), mload(0x620c0), f_q)) +{ + let result := mulmod(mload(0x11600), mload(0x48600), f_q) +mstore(401696, result) + } +mstore(0x62140, mulmod(mload(0x62120), mload(0x48c80), f_q)) +mstore(0x62160, mulmod(sub(f_q, mload(0x62140)), mload(0x4aa20), f_q)) +mstore(0x62180, mulmod(mload(0x58e40), mload(0x4aa20), f_q)) +mstore(0x621a0, addmod(mload(0x62100), mload(0x62160), f_q)) +{ + let result := mulmod(mload(0x11620), mload(0x48600), f_q) +mstore(401856, result) + } +mstore(0x621e0, mulmod(mload(0x621c0), mload(0x48c80), f_q)) +mstore(0x62200, mulmod(sub(f_q, mload(0x621e0)), mload(0x4aa40), f_q)) +mstore(0x62220, mulmod(mload(0x58e40), mload(0x4aa40), f_q)) +mstore(0x62240, addmod(mload(0x621a0), mload(0x62200), f_q)) +{ + let result := mulmod(mload(0x11640), mload(0x48600), f_q) +mstore(402016, result) + } +mstore(0x62280, mulmod(mload(0x62260), mload(0x48c80), f_q)) +mstore(0x622a0, mulmod(sub(f_q, mload(0x62280)), mload(0x4aa60), f_q)) +mstore(0x622c0, mulmod(mload(0x58e40), mload(0x4aa60), f_q)) +mstore(0x622e0, addmod(mload(0x62240), mload(0x622a0), f_q)) +{ + let result := mulmod(mload(0x11660), mload(0x48600), f_q) +mstore(402176, result) + } +mstore(0x62320, mulmod(mload(0x62300), mload(0x48c80), f_q)) +mstore(0x62340, mulmod(sub(f_q, mload(0x62320)), mload(0x4aa80), f_q)) +mstore(0x62360, mulmod(mload(0x58e40), mload(0x4aa80), f_q)) +mstore(0x62380, addmod(mload(0x622e0), mload(0x62340), f_q)) +{ + let result := mulmod(mload(0x11680), mload(0x48600), f_q) +mstore(402336, result) + } +mstore(0x623c0, mulmod(mload(0x623a0), mload(0x48c80), f_q)) +mstore(0x623e0, mulmod(sub(f_q, mload(0x623c0)), mload(0x4aaa0), f_q)) +mstore(0x62400, mulmod(mload(0x58e40), mload(0x4aaa0), f_q)) +mstore(0x62420, addmod(mload(0x62380), mload(0x623e0), f_q)) +{ + let result := mulmod(mload(0x116a0), mload(0x48600), f_q) +mstore(402496, result) + } +mstore(0x62460, mulmod(mload(0x62440), mload(0x48c80), f_q)) +mstore(0x62480, mulmod(sub(f_q, mload(0x62460)), mload(0x4aac0), f_q)) +mstore(0x624a0, mulmod(mload(0x58e40), mload(0x4aac0), f_q)) +mstore(0x624c0, addmod(mload(0x62420), mload(0x62480), f_q)) +{ + let result := mulmod(mload(0x116c0), mload(0x48600), f_q) +mstore(402656, result) + } +mstore(0x62500, mulmod(mload(0x624e0), mload(0x48c80), f_q)) +mstore(0x62520, mulmod(sub(f_q, mload(0x62500)), mload(0x4aae0), f_q)) +mstore(0x62540, mulmod(mload(0x58e40), mload(0x4aae0), f_q)) +mstore(0x62560, addmod(mload(0x624c0), mload(0x62520), f_q)) +{ + let result := mulmod(mload(0x116e0), mload(0x48600), f_q) +mstore(402816, result) + } +mstore(0x625a0, mulmod(mload(0x62580), mload(0x48c80), f_q)) +mstore(0x625c0, mulmod(sub(f_q, mload(0x625a0)), mload(0x4ab00), f_q)) +mstore(0x625e0, mulmod(mload(0x58e40), mload(0x4ab00), f_q)) +mstore(0x62600, addmod(mload(0x62560), mload(0x625c0), f_q)) +{ + let result := mulmod(mload(0x11700), mload(0x48600), f_q) +mstore(402976, result) + } +mstore(0x62640, mulmod(mload(0x62620), mload(0x48c80), f_q)) +mstore(0x62660, mulmod(sub(f_q, mload(0x62640)), mload(0x4ab20), f_q)) +mstore(0x62680, mulmod(mload(0x58e40), mload(0x4ab20), f_q)) +mstore(0x626a0, addmod(mload(0x62600), mload(0x62660), f_q)) +{ + let result := mulmod(mload(0x11720), mload(0x48600), f_q) +mstore(403136, result) + } +mstore(0x626e0, mulmod(mload(0x626c0), mload(0x48c80), f_q)) +mstore(0x62700, mulmod(sub(f_q, mload(0x626e0)), mload(0x4ab40), f_q)) +mstore(0x62720, mulmod(mload(0x58e40), mload(0x4ab40), f_q)) +mstore(0x62740, addmod(mload(0x626a0), mload(0x62700), f_q)) +{ + let result := mulmod(mload(0x11740), mload(0x48600), f_q) +mstore(403296, result) + } +mstore(0x62780, mulmod(mload(0x62760), mload(0x48c80), f_q)) +mstore(0x627a0, mulmod(sub(f_q, mload(0x62780)), mload(0x4ab60), f_q)) +mstore(0x627c0, mulmod(mload(0x58e40), mload(0x4ab60), f_q)) +mstore(0x627e0, addmod(mload(0x62740), mload(0x627a0), f_q)) +{ + let result := mulmod(mload(0x11760), mload(0x48600), f_q) +mstore(403456, result) + } +mstore(0x62820, mulmod(mload(0x62800), mload(0x48c80), f_q)) +mstore(0x62840, mulmod(sub(f_q, mload(0x62820)), mload(0x4ab80), f_q)) +mstore(0x62860, mulmod(mload(0x58e40), mload(0x4ab80), f_q)) +mstore(0x62880, addmod(mload(0x627e0), mload(0x62840), f_q)) +{ + let result := mulmod(mload(0x11780), mload(0x48600), f_q) +mstore(403616, result) + } +mstore(0x628c0, mulmod(mload(0x628a0), mload(0x48c80), f_q)) +mstore(0x628e0, mulmod(sub(f_q, mload(0x628c0)), mload(0x4aba0), f_q)) +mstore(0x62900, mulmod(mload(0x58e40), mload(0x4aba0), f_q)) +mstore(0x62920, addmod(mload(0x62880), mload(0x628e0), f_q)) +{ + let result := mulmod(mload(0x117a0), mload(0x48600), f_q) +mstore(403776, result) + } +mstore(0x62960, mulmod(mload(0x62940), mload(0x48c80), f_q)) +mstore(0x62980, mulmod(sub(f_q, mload(0x62960)), mload(0x4abc0), f_q)) +mstore(0x629a0, mulmod(mload(0x58e40), mload(0x4abc0), f_q)) +mstore(0x629c0, addmod(mload(0x62920), mload(0x62980), f_q)) +{ + let result := mulmod(mload(0x117c0), mload(0x48600), f_q) +mstore(403936, result) + } +mstore(0x62a00, mulmod(mload(0x629e0), mload(0x48c80), f_q)) +mstore(0x62a20, mulmod(sub(f_q, mload(0x62a00)), mload(0x4abe0), f_q)) +mstore(0x62a40, mulmod(mload(0x58e40), mload(0x4abe0), f_q)) +mstore(0x62a60, addmod(mload(0x629c0), mload(0x62a20), f_q)) +{ + let result := mulmod(mload(0x117e0), mload(0x48600), f_q) +mstore(404096, result) + } +mstore(0x62aa0, mulmod(mload(0x62a80), mload(0x48c80), f_q)) +mstore(0x62ac0, mulmod(sub(f_q, mload(0x62aa0)), mload(0x4ac00), f_q)) +mstore(0x62ae0, mulmod(mload(0x58e40), mload(0x4ac00), f_q)) +mstore(0x62b00, addmod(mload(0x62a60), mload(0x62ac0), f_q)) +{ + let result := mulmod(mload(0x11800), mload(0x48600), f_q) +mstore(404256, result) + } +mstore(0x62b40, mulmod(mload(0x62b20), mload(0x48c80), f_q)) +mstore(0x62b60, mulmod(sub(f_q, mload(0x62b40)), mload(0x4ac20), f_q)) +mstore(0x62b80, mulmod(mload(0x58e40), mload(0x4ac20), f_q)) +mstore(0x62ba0, addmod(mload(0x62b00), mload(0x62b60), f_q)) +{ + let result := mulmod(mload(0x11820), mload(0x48600), f_q) +mstore(404416, result) + } +mstore(0x62be0, mulmod(mload(0x62bc0), mload(0x48c80), f_q)) +mstore(0x62c00, mulmod(sub(f_q, mload(0x62be0)), mload(0x4ac40), f_q)) +mstore(0x62c20, mulmod(mload(0x58e40), mload(0x4ac40), f_q)) +mstore(0x62c40, addmod(mload(0x62ba0), mload(0x62c00), f_q)) +{ + let result := mulmod(mload(0x11840), mload(0x48600), f_q) +mstore(404576, result) + } +mstore(0x62c80, mulmod(mload(0x62c60), mload(0x48c80), f_q)) +mstore(0x62ca0, mulmod(sub(f_q, mload(0x62c80)), mload(0x4ac60), f_q)) +mstore(0x62cc0, mulmod(mload(0x58e40), mload(0x4ac60), f_q)) +mstore(0x62ce0, addmod(mload(0x62c40), mload(0x62ca0), f_q)) +{ + let result := mulmod(mload(0x11860), mload(0x48600), f_q) +mstore(404736, result) + } +mstore(0x62d20, mulmod(mload(0x62d00), mload(0x48c80), f_q)) +mstore(0x62d40, mulmod(sub(f_q, mload(0x62d20)), mload(0x4ac80), f_q)) +mstore(0x62d60, mulmod(mload(0x58e40), mload(0x4ac80), f_q)) +mstore(0x62d80, addmod(mload(0x62ce0), mload(0x62d40), f_q)) +{ + let result := mulmod(mload(0x11880), mload(0x48600), f_q) +mstore(404896, result) + } +mstore(0x62dc0, mulmod(mload(0x62da0), mload(0x48c80), f_q)) +mstore(0x62de0, mulmod(sub(f_q, mload(0x62dc0)), mload(0x4aca0), f_q)) +mstore(0x62e00, mulmod(mload(0x58e40), mload(0x4aca0), f_q)) +mstore(0x62e20, addmod(mload(0x62d80), mload(0x62de0), f_q)) +{ + let result := mulmod(mload(0x118a0), mload(0x48600), f_q) +mstore(405056, result) + } +mstore(0x62e60, mulmod(mload(0x62e40), mload(0x48c80), f_q)) +mstore(0x62e80, mulmod(sub(f_q, mload(0x62e60)), mload(0x4acc0), f_q)) +mstore(0x62ea0, mulmod(mload(0x58e40), mload(0x4acc0), f_q)) +mstore(0x62ec0, addmod(mload(0x62e20), mload(0x62e80), f_q)) +{ + let result := mulmod(mload(0x118c0), mload(0x48600), f_q) +mstore(405216, result) + } +mstore(0x62f00, mulmod(mload(0x62ee0), mload(0x48c80), f_q)) +mstore(0x62f20, mulmod(sub(f_q, mload(0x62f00)), mload(0x4ace0), f_q)) +mstore(0x62f40, mulmod(mload(0x58e40), mload(0x4ace0), f_q)) +mstore(0x62f60, addmod(mload(0x62ec0), mload(0x62f20), f_q)) +{ + let result := mulmod(mload(0x118e0), mload(0x48600), f_q) +mstore(405376, result) + } +mstore(0x62fa0, mulmod(mload(0x62f80), mload(0x48c80), f_q)) +mstore(0x62fc0, mulmod(sub(f_q, mload(0x62fa0)), mload(0x4ad00), f_q)) +mstore(0x62fe0, mulmod(mload(0x58e40), mload(0x4ad00), f_q)) +mstore(0x63000, addmod(mload(0x62f60), mload(0x62fc0), f_q)) +{ + let result := mulmod(mload(0x11900), mload(0x48600), f_q) +mstore(405536, result) + } +mstore(0x63040, mulmod(mload(0x63020), mload(0x48c80), f_q)) +mstore(0x63060, mulmod(sub(f_q, mload(0x63040)), mload(0x4ad20), f_q)) +mstore(0x63080, mulmod(mload(0x58e40), mload(0x4ad20), f_q)) +mstore(0x630a0, addmod(mload(0x63000), mload(0x63060), f_q)) +{ + let result := mulmod(mload(0x11920), mload(0x48600), f_q) +mstore(405696, result) + } +mstore(0x630e0, mulmod(mload(0x630c0), mload(0x48c80), f_q)) +mstore(0x63100, mulmod(sub(f_q, mload(0x630e0)), mload(0x4ad40), f_q)) +mstore(0x63120, mulmod(mload(0x58e40), mload(0x4ad40), f_q)) +mstore(0x63140, addmod(mload(0x630a0), mload(0x63100), f_q)) +{ + let result := mulmod(mload(0x11940), mload(0x48600), f_q) +mstore(405856, result) + } +mstore(0x63180, mulmod(mload(0x63160), mload(0x48c80), f_q)) +mstore(0x631a0, mulmod(sub(f_q, mload(0x63180)), mload(0x4ad60), f_q)) +mstore(0x631c0, mulmod(mload(0x58e40), mload(0x4ad60), f_q)) +mstore(0x631e0, addmod(mload(0x63140), mload(0x631a0), f_q)) +{ + let result := mulmod(mload(0x11960), mload(0x48600), f_q) +mstore(406016, result) + } +mstore(0x63220, mulmod(mload(0x63200), mload(0x48c80), f_q)) +mstore(0x63240, mulmod(sub(f_q, mload(0x63220)), mload(0x4ad80), f_q)) +mstore(0x63260, mulmod(mload(0x58e40), mload(0x4ad80), f_q)) +mstore(0x63280, addmod(mload(0x631e0), mload(0x63240), f_q)) +{ + let result := mulmod(mload(0x11980), mload(0x48600), f_q) +mstore(406176, result) + } +mstore(0x632c0, mulmod(mload(0x632a0), mload(0x48c80), f_q)) +mstore(0x632e0, mulmod(sub(f_q, mload(0x632c0)), mload(0x4ada0), f_q)) +mstore(0x63300, mulmod(mload(0x58e40), mload(0x4ada0), f_q)) +mstore(0x63320, addmod(mload(0x63280), mload(0x632e0), f_q)) +{ + let result := mulmod(mload(0x119a0), mload(0x48600), f_q) +mstore(406336, result) + } +mstore(0x63360, mulmod(mload(0x63340), mload(0x48c80), f_q)) +mstore(0x63380, mulmod(sub(f_q, mload(0x63360)), mload(0x4adc0), f_q)) +mstore(0x633a0, mulmod(mload(0x58e40), mload(0x4adc0), f_q)) +mstore(0x633c0, addmod(mload(0x63320), mload(0x63380), f_q)) +{ + let result := mulmod(mload(0x119c0), mload(0x48600), f_q) +mstore(406496, result) + } +mstore(0x63400, mulmod(mload(0x633e0), mload(0x48c80), f_q)) +mstore(0x63420, mulmod(sub(f_q, mload(0x63400)), mload(0x4ade0), f_q)) +mstore(0x63440, mulmod(mload(0x58e40), mload(0x4ade0), f_q)) +mstore(0x63460, addmod(mload(0x633c0), mload(0x63420), f_q)) +{ + let result := mulmod(mload(0x119e0), mload(0x48600), f_q) +mstore(406656, result) + } +mstore(0x634a0, mulmod(mload(0x63480), mload(0x48c80), f_q)) +mstore(0x634c0, mulmod(sub(f_q, mload(0x634a0)), mload(0x4ae00), f_q)) +mstore(0x634e0, mulmod(mload(0x58e40), mload(0x4ae00), f_q)) +mstore(0x63500, addmod(mload(0x63460), mload(0x634c0), f_q)) +{ + let result := mulmod(mload(0x11a00), mload(0x48600), f_q) +mstore(406816, result) + } +mstore(0x63540, mulmod(mload(0x63520), mload(0x48c80), f_q)) +mstore(0x63560, mulmod(sub(f_q, mload(0x63540)), mload(0x4ae20), f_q)) +mstore(0x63580, mulmod(mload(0x58e40), mload(0x4ae20), f_q)) +mstore(0x635a0, addmod(mload(0x63500), mload(0x63560), f_q)) +{ + let result := mulmod(mload(0x11a20), mload(0x48600), f_q) +mstore(406976, result) + } +mstore(0x635e0, mulmod(mload(0x635c0), mload(0x48c80), f_q)) +mstore(0x63600, mulmod(sub(f_q, mload(0x635e0)), mload(0x4ae40), f_q)) +mstore(0x63620, mulmod(mload(0x58e40), mload(0x4ae40), f_q)) +mstore(0x63640, addmod(mload(0x635a0), mload(0x63600), f_q)) +{ + let result := mulmod(mload(0x11a40), mload(0x48600), f_q) +mstore(407136, result) + } +mstore(0x63680, mulmod(mload(0x63660), mload(0x48c80), f_q)) +mstore(0x636a0, mulmod(sub(f_q, mload(0x63680)), mload(0x4ae60), f_q)) +mstore(0x636c0, mulmod(mload(0x58e40), mload(0x4ae60), f_q)) +mstore(0x636e0, addmod(mload(0x63640), mload(0x636a0), f_q)) +{ + let result := mulmod(mload(0x11a60), mload(0x48600), f_q) +mstore(407296, result) + } +mstore(0x63720, mulmod(mload(0x63700), mload(0x48c80), f_q)) +mstore(0x63740, mulmod(sub(f_q, mload(0x63720)), mload(0x4ae80), f_q)) +mstore(0x63760, mulmod(mload(0x58e40), mload(0x4ae80), f_q)) +mstore(0x63780, addmod(mload(0x636e0), mload(0x63740), f_q)) +{ + let result := mulmod(mload(0x11a80), mload(0x48600), f_q) +mstore(407456, result) + } +mstore(0x637c0, mulmod(mload(0x637a0), mload(0x48c80), f_q)) +mstore(0x637e0, mulmod(sub(f_q, mload(0x637c0)), mload(0x4aea0), f_q)) +mstore(0x63800, mulmod(mload(0x58e40), mload(0x4aea0), f_q)) +mstore(0x63820, addmod(mload(0x63780), mload(0x637e0), f_q)) +{ + let result := mulmod(mload(0x11aa0), mload(0x48600), f_q) +mstore(407616, result) + } +mstore(0x63860, mulmod(mload(0x63840), mload(0x48c80), f_q)) +mstore(0x63880, mulmod(sub(f_q, mload(0x63860)), mload(0x4aec0), f_q)) +mstore(0x638a0, mulmod(mload(0x58e40), mload(0x4aec0), f_q)) +mstore(0x638c0, addmod(mload(0x63820), mload(0x63880), f_q)) +{ + let result := mulmod(mload(0x11ac0), mload(0x48600), f_q) +mstore(407776, result) + } +mstore(0x63900, mulmod(mload(0x638e0), mload(0x48c80), f_q)) +mstore(0x63920, mulmod(sub(f_q, mload(0x63900)), mload(0x4aee0), f_q)) +mstore(0x63940, mulmod(mload(0x58e40), mload(0x4aee0), f_q)) +mstore(0x63960, addmod(mload(0x638c0), mload(0x63920), f_q)) +{ + let result := mulmod(mload(0x11ae0), mload(0x48600), f_q) +mstore(407936, result) + } +mstore(0x639a0, mulmod(mload(0x63980), mload(0x48c80), f_q)) +mstore(0x639c0, mulmod(sub(f_q, mload(0x639a0)), mload(0x4af00), f_q)) +mstore(0x639e0, mulmod(mload(0x58e40), mload(0x4af00), f_q)) +mstore(0x63a00, addmod(mload(0x63960), mload(0x639c0), f_q)) +{ + let result := mulmod(mload(0x11b00), mload(0x48600), f_q) +mstore(408096, result) + } +mstore(0x63a40, mulmod(mload(0x63a20), mload(0x48c80), f_q)) +mstore(0x63a60, mulmod(sub(f_q, mload(0x63a40)), mload(0x4af20), f_q)) +mstore(0x63a80, mulmod(mload(0x58e40), mload(0x4af20), f_q)) +mstore(0x63aa0, addmod(mload(0x63a00), mload(0x63a60), f_q)) +{ + let result := mulmod(mload(0x11b20), mload(0x48600), f_q) +mstore(408256, result) + } +mstore(0x63ae0, mulmod(mload(0x63ac0), mload(0x48c80), f_q)) +mstore(0x63b00, mulmod(sub(f_q, mload(0x63ae0)), mload(0x4af40), f_q)) +mstore(0x63b20, mulmod(mload(0x58e40), mload(0x4af40), f_q)) +mstore(0x63b40, addmod(mload(0x63aa0), mload(0x63b00), f_q)) +{ + let result := mulmod(mload(0x11b40), mload(0x48600), f_q) +mstore(408416, result) + } +mstore(0x63b80, mulmod(mload(0x63b60), mload(0x48c80), f_q)) +mstore(0x63ba0, mulmod(sub(f_q, mload(0x63b80)), mload(0x4af60), f_q)) +mstore(0x63bc0, mulmod(mload(0x58e40), mload(0x4af60), f_q)) +mstore(0x63be0, addmod(mload(0x63b40), mload(0x63ba0), f_q)) +{ + let result := mulmod(mload(0x11b60), mload(0x48600), f_q) +mstore(408576, result) + } +mstore(0x63c20, mulmod(mload(0x63c00), mload(0x48c80), f_q)) +mstore(0x63c40, mulmod(sub(f_q, mload(0x63c20)), mload(0x4af80), f_q)) +mstore(0x63c60, mulmod(mload(0x58e40), mload(0x4af80), f_q)) +mstore(0x63c80, addmod(mload(0x63be0), mload(0x63c40), f_q)) +{ + let result := mulmod(mload(0x11b80), mload(0x48600), f_q) +mstore(408736, result) + } +mstore(0x63cc0, mulmod(mload(0x63ca0), mload(0x48c80), f_q)) +mstore(0x63ce0, mulmod(sub(f_q, mload(0x63cc0)), mload(0x4afa0), f_q)) +mstore(0x63d00, mulmod(mload(0x58e40), mload(0x4afa0), f_q)) +mstore(0x63d20, addmod(mload(0x63c80), mload(0x63ce0), f_q)) +{ + let result := mulmod(mload(0x11ba0), mload(0x48600), f_q) +mstore(408896, result) + } +mstore(0x63d60, mulmod(mload(0x63d40), mload(0x48c80), f_q)) +mstore(0x63d80, mulmod(sub(f_q, mload(0x63d60)), mload(0x4afc0), f_q)) +mstore(0x63da0, mulmod(mload(0x58e40), mload(0x4afc0), f_q)) +mstore(0x63dc0, addmod(mload(0x63d20), mload(0x63d80), f_q)) +{ + let result := mulmod(mload(0x11bc0), mload(0x48600), f_q) +mstore(409056, result) + } +mstore(0x63e00, mulmod(mload(0x63de0), mload(0x48c80), f_q)) +mstore(0x63e20, mulmod(sub(f_q, mload(0x63e00)), mload(0x4afe0), f_q)) +mstore(0x63e40, mulmod(mload(0x58e40), mload(0x4afe0), f_q)) +mstore(0x63e60, addmod(mload(0x63dc0), mload(0x63e20), f_q)) +{ + let result := mulmod(mload(0x11be0), mload(0x48600), f_q) +mstore(409216, result) + } +mstore(0x63ea0, mulmod(mload(0x63e80), mload(0x48c80), f_q)) +mstore(0x63ec0, mulmod(sub(f_q, mload(0x63ea0)), mload(0x4b000), f_q)) +mstore(0x63ee0, mulmod(mload(0x58e40), mload(0x4b000), f_q)) +mstore(0x63f00, addmod(mload(0x63e60), mload(0x63ec0), f_q)) +{ + let result := mulmod(mload(0x11c00), mload(0x48600), f_q) +mstore(409376, result) + } +mstore(0x63f40, mulmod(mload(0x63f20), mload(0x48c80), f_q)) +mstore(0x63f60, mulmod(sub(f_q, mload(0x63f40)), mload(0x4b020), f_q)) +mstore(0x63f80, mulmod(mload(0x58e40), mload(0x4b020), f_q)) +mstore(0x63fa0, addmod(mload(0x63f00), mload(0x63f60), f_q)) +mstore(0x63fc0, addmod(mload(0x62fe0), mload(0x63f80), f_q)) +{ + let result := mulmod(mload(0x11c20), mload(0x48600), f_q) +mstore(409568, result) + } +mstore(0x64000, mulmod(mload(0x63fe0), mload(0x48c80), f_q)) +mstore(0x64020, mulmod(sub(f_q, mload(0x64000)), mload(0x4b040), f_q)) +mstore(0x64040, mulmod(mload(0x58e40), mload(0x4b040), f_q)) +mstore(0x64060, addmod(mload(0x63fa0), mload(0x64020), f_q)) +mstore(0x64080, addmod(mload(0x63080), mload(0x64040), f_q)) +{ + let result := mulmod(mload(0x11c40), mload(0x48600), f_q) +mstore(409760, result) + } +mstore(0x640c0, mulmod(mload(0x640a0), mload(0x48c80), f_q)) +mstore(0x640e0, mulmod(sub(f_q, mload(0x640c0)), mload(0x4b060), f_q)) +mstore(0x64100, mulmod(mload(0x58e40), mload(0x4b060), f_q)) +mstore(0x64120, addmod(mload(0x64060), mload(0x640e0), f_q)) +mstore(0x64140, addmod(mload(0x63120), mload(0x64100), f_q)) +{ + let result := mulmod(mload(0x11c60), mload(0x48600), f_q) +mstore(409952, result) + } +mstore(0x64180, mulmod(mload(0x64160), mload(0x48c80), f_q)) +mstore(0x641a0, mulmod(sub(f_q, mload(0x64180)), mload(0x4b080), f_q)) +mstore(0x641c0, mulmod(mload(0x58e40), mload(0x4b080), f_q)) +mstore(0x641e0, addmod(mload(0x64120), mload(0x641a0), f_q)) +mstore(0x64200, addmod(mload(0x631c0), mload(0x641c0), f_q)) +{ + let result := mulmod(mload(0x11c80), mload(0x48600), f_q) +mstore(410144, result) + } +mstore(0x64240, mulmod(mload(0x64220), mload(0x48c80), f_q)) +mstore(0x64260, mulmod(sub(f_q, mload(0x64240)), mload(0x4b0a0), f_q)) +mstore(0x64280, mulmod(mload(0x58e40), mload(0x4b0a0), f_q)) +mstore(0x642a0, addmod(mload(0x641e0), mload(0x64260), f_q)) +mstore(0x642c0, addmod(mload(0x63260), mload(0x64280), f_q)) +{ + let result := mulmod(mload(0x11ca0), mload(0x48600), f_q) +mstore(410336, result) + } +mstore(0x64300, mulmod(mload(0x642e0), mload(0x48c80), f_q)) +mstore(0x64320, mulmod(sub(f_q, mload(0x64300)), mload(0x4b0c0), f_q)) +mstore(0x64340, mulmod(mload(0x58e40), mload(0x4b0c0), f_q)) +mstore(0x64360, addmod(mload(0x642a0), mload(0x64320), f_q)) +mstore(0x64380, addmod(mload(0x63300), mload(0x64340), f_q)) +{ + let result := mulmod(mload(0x11cc0), mload(0x48600), f_q) +mstore(410528, result) + } +mstore(0x643c0, mulmod(mload(0x643a0), mload(0x48c80), f_q)) +mstore(0x643e0, mulmod(sub(f_q, mload(0x643c0)), mload(0x4b0e0), f_q)) +mstore(0x64400, mulmod(mload(0x58e40), mload(0x4b0e0), f_q)) +mstore(0x64420, addmod(mload(0x64360), mload(0x643e0), f_q)) +mstore(0x64440, addmod(mload(0x633a0), mload(0x64400), f_q)) +{ + let result := mulmod(mload(0x11ce0), mload(0x48600), f_q) +mstore(410720, result) + } +mstore(0x64480, mulmod(mload(0x64460), mload(0x48c80), f_q)) +mstore(0x644a0, mulmod(sub(f_q, mload(0x64480)), mload(0x4b100), f_q)) +mstore(0x644c0, mulmod(mload(0x58e40), mload(0x4b100), f_q)) +mstore(0x644e0, addmod(mload(0x64420), mload(0x644a0), f_q)) +mstore(0x64500, addmod(mload(0x63440), mload(0x644c0), f_q)) +{ + let result := mulmod(mload(0x11d00), mload(0x48600), f_q) +mstore(410912, result) + } +mstore(0x64540, mulmod(mload(0x64520), mload(0x48c80), f_q)) +mstore(0x64560, mulmod(sub(f_q, mload(0x64540)), mload(0x4b120), f_q)) +mstore(0x64580, mulmod(mload(0x58e40), mload(0x4b120), f_q)) +mstore(0x645a0, addmod(mload(0x644e0), mload(0x64560), f_q)) +mstore(0x645c0, addmod(mload(0x634e0), mload(0x64580), f_q)) +{ + let result := mulmod(mload(0x11d20), mload(0x48600), f_q) +mstore(411104, result) + } +mstore(0x64600, mulmod(mload(0x645e0), mload(0x48c80), f_q)) +mstore(0x64620, mulmod(sub(f_q, mload(0x64600)), mload(0x4b140), f_q)) +mstore(0x64640, mulmod(mload(0x58e40), mload(0x4b140), f_q)) +mstore(0x64660, addmod(mload(0x645a0), mload(0x64620), f_q)) +mstore(0x64680, addmod(mload(0x63580), mload(0x64640), f_q)) +{ + let result := mulmod(mload(0x11d40), mload(0x48600), f_q) +mstore(411296, result) + } +mstore(0x646c0, mulmod(mload(0x646a0), mload(0x48c80), f_q)) +mstore(0x646e0, mulmod(sub(f_q, mload(0x646c0)), mload(0x4b160), f_q)) +mstore(0x64700, mulmod(mload(0x58e40), mload(0x4b160), f_q)) +mstore(0x64720, addmod(mload(0x64660), mload(0x646e0), f_q)) +mstore(0x64740, addmod(mload(0x63620), mload(0x64700), f_q)) +{ + let result := mulmod(mload(0x11d60), mload(0x48600), f_q) +mstore(411488, result) + } +mstore(0x64780, mulmod(mload(0x64760), mload(0x48c80), f_q)) +mstore(0x647a0, mulmod(sub(f_q, mload(0x64780)), mload(0x4b180), f_q)) +mstore(0x647c0, mulmod(mload(0x58e40), mload(0x4b180), f_q)) +mstore(0x647e0, addmod(mload(0x64720), mload(0x647a0), f_q)) +mstore(0x64800, addmod(mload(0x636c0), mload(0x647c0), f_q)) +{ + let result := mulmod(mload(0x11d80), mload(0x48600), f_q) +mstore(411680, result) + } +mstore(0x64840, mulmod(mload(0x64820), mload(0x48c80), f_q)) +mstore(0x64860, mulmod(sub(f_q, mload(0x64840)), mload(0x4b1a0), f_q)) +mstore(0x64880, mulmod(mload(0x58e40), mload(0x4b1a0), f_q)) +mstore(0x648a0, addmod(mload(0x647e0), mload(0x64860), f_q)) +mstore(0x648c0, addmod(mload(0x63760), mload(0x64880), f_q)) +{ + let result := mulmod(mload(0x11da0), mload(0x48600), f_q) +mstore(411872, result) + } +mstore(0x64900, mulmod(mload(0x648e0), mload(0x48c80), f_q)) +mstore(0x64920, mulmod(sub(f_q, mload(0x64900)), mload(0x4b1c0), f_q)) +mstore(0x64940, mulmod(mload(0x58e40), mload(0x4b1c0), f_q)) +mstore(0x64960, addmod(mload(0x648a0), mload(0x64920), f_q)) +mstore(0x64980, addmod(mload(0x63800), mload(0x64940), f_q)) +{ + let result := mulmod(mload(0x11dc0), mload(0x48600), f_q) +mstore(412064, result) + } +mstore(0x649c0, mulmod(mload(0x649a0), mload(0x48c80), f_q)) +mstore(0x649e0, mulmod(sub(f_q, mload(0x649c0)), mload(0x4b1e0), f_q)) +mstore(0x64a00, mulmod(mload(0x58e40), mload(0x4b1e0), f_q)) +mstore(0x64a20, addmod(mload(0x64960), mload(0x649e0), f_q)) +mstore(0x64a40, addmod(mload(0x638a0), mload(0x64a00), f_q)) +{ + let result := mulmod(mload(0x11de0), mload(0x48600), f_q) +mstore(412256, result) + } +mstore(0x64a80, mulmod(mload(0x64a60), mload(0x48c80), f_q)) +mstore(0x64aa0, mulmod(sub(f_q, mload(0x64a80)), mload(0x4b200), f_q)) +mstore(0x64ac0, mulmod(mload(0x58e40), mload(0x4b200), f_q)) +mstore(0x64ae0, addmod(mload(0x64a20), mload(0x64aa0), f_q)) +{ + let result := mulmod(mload(0x11e00), mload(0x48600), f_q) +mstore(412416, result) + } +mstore(0x64b20, mulmod(mload(0x64b00), mload(0x48c80), f_q)) +mstore(0x64b40, mulmod(sub(f_q, mload(0x64b20)), mload(0x4b220), f_q)) +mstore(0x64b60, mulmod(mload(0x58e40), mload(0x4b220), f_q)) +mstore(0x64b80, addmod(mload(0x64ae0), mload(0x64b40), f_q)) +{ + let result := mulmod(mload(0x11e20), mload(0x48600), f_q) +mstore(412576, result) + } +mstore(0x64bc0, mulmod(mload(0x64ba0), mload(0x48c80), f_q)) +mstore(0x64be0, mulmod(sub(f_q, mload(0x64bc0)), mload(0x4b240), f_q)) +mstore(0x64c00, mulmod(mload(0x58e40), mload(0x4b240), f_q)) +mstore(0x64c20, addmod(mload(0x64b80), mload(0x64be0), f_q)) +{ + let result := mulmod(mload(0x11e40), mload(0x48600), f_q) +mstore(412736, result) + } +mstore(0x64c60, mulmod(mload(0x64c40), mload(0x48c80), f_q)) +mstore(0x64c80, mulmod(sub(f_q, mload(0x64c60)), mload(0x4b260), f_q)) +mstore(0x64ca0, mulmod(mload(0x58e40), mload(0x4b260), f_q)) +mstore(0x64cc0, addmod(mload(0x64c20), mload(0x64c80), f_q)) +{ + let result := mulmod(mload(0x11e60), mload(0x48600), f_q) +mstore(412896, result) + } +mstore(0x64d00, mulmod(mload(0x64ce0), mload(0x48c80), f_q)) +mstore(0x64d20, mulmod(sub(f_q, mload(0x64d00)), mload(0x4b280), f_q)) +mstore(0x64d40, mulmod(mload(0x58e40), mload(0x4b280), f_q)) +mstore(0x64d60, addmod(mload(0x64cc0), mload(0x64d20), f_q)) +{ + let result := mulmod(mload(0x11e80), mload(0x48600), f_q) +mstore(413056, result) + } +mstore(0x64da0, mulmod(mload(0x64d80), mload(0x48c80), f_q)) +mstore(0x64dc0, mulmod(sub(f_q, mload(0x64da0)), mload(0x4b2a0), f_q)) +mstore(0x64de0, mulmod(mload(0x58e40), mload(0x4b2a0), f_q)) +mstore(0x64e00, addmod(mload(0x64d60), mload(0x64dc0), f_q)) +{ + let result := mulmod(mload(0x11ea0), mload(0x48600), f_q) +mstore(413216, result) + } +mstore(0x64e40, mulmod(mload(0x64e20), mload(0x48c80), f_q)) +mstore(0x64e60, mulmod(sub(f_q, mload(0x64e40)), mload(0x4b2c0), f_q)) +mstore(0x64e80, mulmod(mload(0x58e40), mload(0x4b2c0), f_q)) +mstore(0x64ea0, addmod(mload(0x64e00), mload(0x64e60), f_q)) +{ + let result := mulmod(mload(0x11ee0), mload(0x48600), f_q) +mstore(413376, result) + } +mstore(0x64ee0, mulmod(mload(0x64ec0), mload(0x48c80), f_q)) +mstore(0x64f00, mulmod(sub(f_q, mload(0x64ee0)), mload(0x4b2e0), f_q)) +mstore(0x64f20, mulmod(mload(0x58e40), mload(0x4b2e0), f_q)) +mstore(0x64f40, addmod(mload(0x64ea0), mload(0x64f00), f_q)) +{ + let result := mulmod(mload(0x11f00), mload(0x48600), f_q) +mstore(413536, result) + } +mstore(0x64f80, mulmod(mload(0x64f60), mload(0x48c80), f_q)) +mstore(0x64fa0, mulmod(sub(f_q, mload(0x64f80)), mload(0x4b300), f_q)) +mstore(0x64fc0, mulmod(mload(0x58e40), mload(0x4b300), f_q)) +mstore(0x64fe0, addmod(mload(0x64f40), mload(0x64fa0), f_q)) +{ + let result := mulmod(mload(0x11f20), mload(0x48600), f_q) +mstore(413696, result) + } +mstore(0x65020, mulmod(mload(0x65000), mload(0x48c80), f_q)) +mstore(0x65040, mulmod(sub(f_q, mload(0x65020)), mload(0x4b320), f_q)) +mstore(0x65060, mulmod(mload(0x58e40), mload(0x4b320), f_q)) +mstore(0x65080, addmod(mload(0x64fe0), mload(0x65040), f_q)) +{ + let result := mulmod(mload(0x11f40), mload(0x48600), f_q) +mstore(413856, result) + } +mstore(0x650c0, mulmod(mload(0x650a0), mload(0x48c80), f_q)) +mstore(0x650e0, mulmod(sub(f_q, mload(0x650c0)), mload(0x4b340), f_q)) +mstore(0x65100, mulmod(mload(0x58e40), mload(0x4b340), f_q)) +mstore(0x65120, addmod(mload(0x65080), mload(0x650e0), f_q)) +{ + let result := mulmod(mload(0x11f60), mload(0x48600), f_q) +mstore(414016, result) + } +mstore(0x65160, mulmod(mload(0x65140), mload(0x48c80), f_q)) +mstore(0x65180, mulmod(sub(f_q, mload(0x65160)), mload(0x4b360), f_q)) +mstore(0x651a0, mulmod(mload(0x58e40), mload(0x4b360), f_q)) +mstore(0x651c0, addmod(mload(0x65120), mload(0x65180), f_q)) +{ + let result := mulmod(mload(0x11f80), mload(0x48600), f_q) +mstore(414176, result) + } +mstore(0x65200, mulmod(mload(0x651e0), mload(0x48c80), f_q)) +mstore(0x65220, mulmod(sub(f_q, mload(0x65200)), mload(0x4b380), f_q)) +mstore(0x65240, mulmod(mload(0x58e40), mload(0x4b380), f_q)) +mstore(0x65260, addmod(mload(0x651c0), mload(0x65220), f_q)) +{ + let result := mulmod(mload(0x11fa0), mload(0x48600), f_q) +mstore(414336, result) + } +mstore(0x652a0, mulmod(mload(0x65280), mload(0x48c80), f_q)) +mstore(0x652c0, mulmod(sub(f_q, mload(0x652a0)), mload(0x4b3a0), f_q)) +mstore(0x652e0, mulmod(mload(0x58e40), mload(0x4b3a0), f_q)) +mstore(0x65300, addmod(mload(0x65260), mload(0x652c0), f_q)) +{ + let result := mulmod(mload(0x11fc0), mload(0x48600), f_q) +mstore(414496, result) + } +mstore(0x65340, mulmod(mload(0x65320), mload(0x48c80), f_q)) +mstore(0x65360, mulmod(sub(f_q, mload(0x65340)), mload(0x4b3c0), f_q)) +mstore(0x65380, mulmod(mload(0x58e40), mload(0x4b3c0), f_q)) +mstore(0x653a0, addmod(mload(0x65300), mload(0x65360), f_q)) +{ + let result := mulmod(mload(0x11fe0), mload(0x48600), f_q) +mstore(414656, result) + } +mstore(0x653e0, mulmod(mload(0x653c0), mload(0x48c80), f_q)) +mstore(0x65400, mulmod(sub(f_q, mload(0x653e0)), mload(0x4b3e0), f_q)) +mstore(0x65420, mulmod(mload(0x58e40), mload(0x4b3e0), f_q)) +mstore(0x65440, addmod(mload(0x653a0), mload(0x65400), f_q)) +{ + let result := mulmod(mload(0x12000), mload(0x48600), f_q) +mstore(414816, result) + } +mstore(0x65480, mulmod(mload(0x65460), mload(0x48c80), f_q)) +mstore(0x654a0, mulmod(sub(f_q, mload(0x65480)), mload(0x4b400), f_q)) +mstore(0x654c0, mulmod(mload(0x58e40), mload(0x4b400), f_q)) +mstore(0x654e0, addmod(mload(0x65440), mload(0x654a0), f_q)) +{ + let result := mulmod(mload(0x12020), mload(0x48600), f_q) +mstore(414976, result) + } +mstore(0x65520, mulmod(mload(0x65500), mload(0x48c80), f_q)) +mstore(0x65540, mulmod(sub(f_q, mload(0x65520)), mload(0x4b420), f_q)) +mstore(0x65560, mulmod(mload(0x58e40), mload(0x4b420), f_q)) +mstore(0x65580, addmod(mload(0x654e0), mload(0x65540), f_q)) +{ + let result := mulmod(mload(0x12040), mload(0x48600), f_q) +mstore(415136, result) + } +mstore(0x655c0, mulmod(mload(0x655a0), mload(0x48c80), f_q)) +mstore(0x655e0, mulmod(sub(f_q, mload(0x655c0)), mload(0x4b440), f_q)) +mstore(0x65600, mulmod(mload(0x58e40), mload(0x4b440), f_q)) +mstore(0x65620, addmod(mload(0x65580), mload(0x655e0), f_q)) +{ + let result := mulmod(mload(0x12060), mload(0x48600), f_q) +mstore(415296, result) + } +mstore(0x65660, mulmod(mload(0x65640), mload(0x48c80), f_q)) +mstore(0x65680, mulmod(sub(f_q, mload(0x65660)), mload(0x4b460), f_q)) +mstore(0x656a0, mulmod(mload(0x58e40), mload(0x4b460), f_q)) +mstore(0x656c0, addmod(mload(0x65620), mload(0x65680), f_q)) +{ + let result := mulmod(mload(0x12080), mload(0x48600), f_q) +mstore(415456, result) + } +mstore(0x65700, mulmod(mload(0x656e0), mload(0x48c80), f_q)) +mstore(0x65720, mulmod(sub(f_q, mload(0x65700)), mload(0x4b480), f_q)) +mstore(0x65740, mulmod(mload(0x58e40), mload(0x4b480), f_q)) +mstore(0x65760, addmod(mload(0x656c0), mload(0x65720), f_q)) +{ + let result := mulmod(mload(0x120a0), mload(0x48600), f_q) +mstore(415616, result) + } +mstore(0x657a0, mulmod(mload(0x65780), mload(0x48c80), f_q)) +mstore(0x657c0, mulmod(sub(f_q, mload(0x657a0)), mload(0x4b4a0), f_q)) +mstore(0x657e0, mulmod(mload(0x58e40), mload(0x4b4a0), f_q)) +mstore(0x65800, addmod(mload(0x65760), mload(0x657c0), f_q)) +{ + let result := mulmod(mload(0x120c0), mload(0x48600), f_q) +mstore(415776, result) + } +mstore(0x65840, mulmod(mload(0x65820), mload(0x48c80), f_q)) +mstore(0x65860, mulmod(sub(f_q, mload(0x65840)), mload(0x4b4c0), f_q)) +mstore(0x65880, mulmod(mload(0x58e40), mload(0x4b4c0), f_q)) +mstore(0x658a0, addmod(mload(0x65800), mload(0x65860), f_q)) +{ + let result := mulmod(mload(0x120e0), mload(0x48600), f_q) +mstore(415936, result) + } +mstore(0x658e0, mulmod(mload(0x658c0), mload(0x48c80), f_q)) +mstore(0x65900, mulmod(sub(f_q, mload(0x658e0)), mload(0x4b4e0), f_q)) +mstore(0x65920, mulmod(mload(0x58e40), mload(0x4b4e0), f_q)) +mstore(0x65940, addmod(mload(0x658a0), mload(0x65900), f_q)) +{ + let result := mulmod(mload(0x12100), mload(0x48600), f_q) +mstore(416096, result) + } +mstore(0x65980, mulmod(mload(0x65960), mload(0x48c80), f_q)) +mstore(0x659a0, mulmod(sub(f_q, mload(0x65980)), mload(0x4b500), f_q)) +mstore(0x659c0, mulmod(mload(0x58e40), mload(0x4b500), f_q)) +mstore(0x659e0, addmod(mload(0x65940), mload(0x659a0), f_q)) +{ + let result := mulmod(mload(0x12120), mload(0x48600), f_q) +mstore(416256, result) + } +mstore(0x65a20, mulmod(mload(0x65a00), mload(0x48c80), f_q)) +mstore(0x65a40, mulmod(sub(f_q, mload(0x65a20)), mload(0x4b520), f_q)) +mstore(0x65a60, mulmod(mload(0x58e40), mload(0x4b520), f_q)) +mstore(0x65a80, addmod(mload(0x659e0), mload(0x65a40), f_q)) +{ + let result := mulmod(mload(0x12140), mload(0x48600), f_q) +mstore(416416, result) + } +mstore(0x65ac0, mulmod(mload(0x65aa0), mload(0x48c80), f_q)) +mstore(0x65ae0, mulmod(sub(f_q, mload(0x65ac0)), mload(0x4b540), f_q)) +mstore(0x65b00, mulmod(mload(0x58e40), mload(0x4b540), f_q)) +mstore(0x65b20, addmod(mload(0x65a80), mload(0x65ae0), f_q)) +{ + let result := mulmod(mload(0x12160), mload(0x48600), f_q) +mstore(416576, result) + } +mstore(0x65b60, mulmod(mload(0x65b40), mload(0x48c80), f_q)) +mstore(0x65b80, mulmod(sub(f_q, mload(0x65b60)), mload(0x4b560), f_q)) +mstore(0x65ba0, mulmod(mload(0x58e40), mload(0x4b560), f_q)) +mstore(0x65bc0, addmod(mload(0x65b20), mload(0x65b80), f_q)) +{ + let result := mulmod(mload(0x12180), mload(0x48600), f_q) +mstore(416736, result) + } +mstore(0x65c00, mulmod(mload(0x65be0), mload(0x48c80), f_q)) +mstore(0x65c20, mulmod(sub(f_q, mload(0x65c00)), mload(0x4b580), f_q)) +mstore(0x65c40, mulmod(mload(0x58e40), mload(0x4b580), f_q)) +mstore(0x65c60, addmod(mload(0x65bc0), mload(0x65c20), f_q)) +{ + let result := mulmod(mload(0x121a0), mload(0x48600), f_q) +mstore(416896, result) + } +mstore(0x65ca0, mulmod(mload(0x65c80), mload(0x48c80), f_q)) +mstore(0x65cc0, mulmod(sub(f_q, mload(0x65ca0)), mload(0x4b5a0), f_q)) +mstore(0x65ce0, mulmod(mload(0x58e40), mload(0x4b5a0), f_q)) +mstore(0x65d00, addmod(mload(0x65c60), mload(0x65cc0), f_q)) +{ + let result := mulmod(mload(0x121c0), mload(0x48600), f_q) +mstore(417056, result) + } +mstore(0x65d40, mulmod(mload(0x65d20), mload(0x48c80), f_q)) +mstore(0x65d60, mulmod(sub(f_q, mload(0x65d40)), mload(0x4b5c0), f_q)) +mstore(0x65d80, mulmod(mload(0x58e40), mload(0x4b5c0), f_q)) +mstore(0x65da0, addmod(mload(0x65d00), mload(0x65d60), f_q)) +{ + let result := mulmod(mload(0x121e0), mload(0x48600), f_q) +mstore(417216, result) + } +mstore(0x65de0, mulmod(mload(0x65dc0), mload(0x48c80), f_q)) +mstore(0x65e00, mulmod(sub(f_q, mload(0x65de0)), mload(0x4b5e0), f_q)) +mstore(0x65e20, mulmod(mload(0x58e40), mload(0x4b5e0), f_q)) +mstore(0x65e40, addmod(mload(0x65da0), mload(0x65e00), f_q)) +{ + let result := mulmod(mload(0x12200), mload(0x48600), f_q) +mstore(417376, result) + } +mstore(0x65e80, mulmod(mload(0x65e60), mload(0x48c80), f_q)) +mstore(0x65ea0, mulmod(sub(f_q, mload(0x65e80)), mload(0x4b600), f_q)) +mstore(0x65ec0, mulmod(mload(0x58e40), mload(0x4b600), f_q)) +mstore(0x65ee0, addmod(mload(0x65e40), mload(0x65ea0), f_q)) +{ + let result := mulmod(mload(0x12220), mload(0x48600), f_q) +mstore(417536, result) + } +mstore(0x65f20, mulmod(mload(0x65f00), mload(0x48c80), f_q)) +mstore(0x65f40, mulmod(sub(f_q, mload(0x65f20)), mload(0x4b620), f_q)) +mstore(0x65f60, mulmod(mload(0x58e40), mload(0x4b620), f_q)) +mstore(0x65f80, addmod(mload(0x65ee0), mload(0x65f40), f_q)) +{ + let result := mulmod(mload(0x12240), mload(0x48600), f_q) +mstore(417696, result) + } +mstore(0x65fc0, mulmod(mload(0x65fa0), mload(0x48c80), f_q)) +mstore(0x65fe0, mulmod(sub(f_q, mload(0x65fc0)), mload(0x4b640), f_q)) +mstore(0x66000, mulmod(mload(0x58e40), mload(0x4b640), f_q)) +mstore(0x66020, addmod(mload(0x65f80), mload(0x65fe0), f_q)) +{ + let result := mulmod(mload(0x12260), mload(0x48600), f_q) +mstore(417856, result) + } +mstore(0x66060, mulmod(mload(0x66040), mload(0x48c80), f_q)) +mstore(0x66080, mulmod(sub(f_q, mload(0x66060)), mload(0x4b660), f_q)) +mstore(0x660a0, mulmod(mload(0x58e40), mload(0x4b660), f_q)) +mstore(0x660c0, addmod(mload(0x66020), mload(0x66080), f_q)) +{ + let result := mulmod(mload(0x12280), mload(0x48600), f_q) +mstore(418016, result) + } +mstore(0x66100, mulmod(mload(0x660e0), mload(0x48c80), f_q)) +mstore(0x66120, mulmod(sub(f_q, mload(0x66100)), mload(0x4b680), f_q)) +mstore(0x66140, mulmod(mload(0x58e40), mload(0x4b680), f_q)) +mstore(0x66160, addmod(mload(0x660c0), mload(0x66120), f_q)) +{ + let result := mulmod(mload(0x122a0), mload(0x48600), f_q) +mstore(418176, result) + } +mstore(0x661a0, mulmod(mload(0x66180), mload(0x48c80), f_q)) +mstore(0x661c0, mulmod(sub(f_q, mload(0x661a0)), mload(0x4b6a0), f_q)) +mstore(0x661e0, mulmod(mload(0x58e40), mload(0x4b6a0), f_q)) +mstore(0x66200, addmod(mload(0x66160), mload(0x661c0), f_q)) +{ + let result := mulmod(mload(0x122c0), mload(0x48600), f_q) +mstore(418336, result) + } +mstore(0x66240, mulmod(mload(0x66220), mload(0x48c80), f_q)) +mstore(0x66260, mulmod(sub(f_q, mload(0x66240)), mload(0x4b6c0), f_q)) +mstore(0x66280, mulmod(mload(0x58e40), mload(0x4b6c0), f_q)) +mstore(0x662a0, addmod(mload(0x66200), mload(0x66260), f_q)) +{ + let result := mulmod(mload(0x122e0), mload(0x48600), f_q) +mstore(418496, result) + } +mstore(0x662e0, mulmod(mload(0x662c0), mload(0x48c80), f_q)) +mstore(0x66300, mulmod(sub(f_q, mload(0x662e0)), mload(0x4b6e0), f_q)) +mstore(0x66320, mulmod(mload(0x58e40), mload(0x4b6e0), f_q)) +mstore(0x66340, addmod(mload(0x662a0), mload(0x66300), f_q)) +{ + let result := mulmod(mload(0x12300), mload(0x48600), f_q) +mstore(418656, result) + } +mstore(0x66380, mulmod(mload(0x66360), mload(0x48c80), f_q)) +mstore(0x663a0, mulmod(sub(f_q, mload(0x66380)), mload(0x4b700), f_q)) +mstore(0x663c0, mulmod(mload(0x58e40), mload(0x4b700), f_q)) +mstore(0x663e0, addmod(mload(0x66340), mload(0x663a0), f_q)) +{ + let result := mulmod(mload(0x12320), mload(0x48600), f_q) +mstore(418816, result) + } +mstore(0x66420, mulmod(mload(0x66400), mload(0x48c80), f_q)) +mstore(0x66440, mulmod(sub(f_q, mload(0x66420)), mload(0x4b720), f_q)) +mstore(0x66460, mulmod(mload(0x58e40), mload(0x4b720), f_q)) +mstore(0x66480, addmod(mload(0x663e0), mload(0x66440), f_q)) +{ + let result := mulmod(mload(0x12340), mload(0x48600), f_q) +mstore(418976, result) + } +mstore(0x664c0, mulmod(mload(0x664a0), mload(0x48c80), f_q)) +mstore(0x664e0, mulmod(sub(f_q, mload(0x664c0)), mload(0x4b740), f_q)) +mstore(0x66500, mulmod(mload(0x58e40), mload(0x4b740), f_q)) +mstore(0x66520, addmod(mload(0x66480), mload(0x664e0), f_q)) +{ + let result := mulmod(mload(0x12360), mload(0x48600), f_q) +mstore(419136, result) + } +mstore(0x66560, mulmod(mload(0x66540), mload(0x48c80), f_q)) +mstore(0x66580, mulmod(sub(f_q, mload(0x66560)), mload(0x4b760), f_q)) +mstore(0x665a0, mulmod(mload(0x58e40), mload(0x4b760), f_q)) +mstore(0x665c0, addmod(mload(0x66520), mload(0x66580), f_q)) +{ + let result := mulmod(mload(0x12380), mload(0x48600), f_q) +mstore(419296, result) + } +mstore(0x66600, mulmod(mload(0x665e0), mload(0x48c80), f_q)) +mstore(0x66620, mulmod(sub(f_q, mload(0x66600)), mload(0x4b780), f_q)) +mstore(0x66640, mulmod(mload(0x58e40), mload(0x4b780), f_q)) +mstore(0x66660, addmod(mload(0x665c0), mload(0x66620), f_q)) +{ + let result := mulmod(mload(0x123a0), mload(0x48600), f_q) +mstore(419456, result) + } +mstore(0x666a0, mulmod(mload(0x66680), mload(0x48c80), f_q)) +mstore(0x666c0, mulmod(sub(f_q, mload(0x666a0)), mload(0x4b7a0), f_q)) +mstore(0x666e0, mulmod(mload(0x58e40), mload(0x4b7a0), f_q)) +mstore(0x66700, addmod(mload(0x66660), mload(0x666c0), f_q)) +{ + let result := mulmod(mload(0x123c0), mload(0x48600), f_q) +mstore(419616, result) + } +mstore(0x66740, mulmod(mload(0x66720), mload(0x48c80), f_q)) +mstore(0x66760, mulmod(sub(f_q, mload(0x66740)), mload(0x4b7c0), f_q)) +mstore(0x66780, mulmod(mload(0x58e40), mload(0x4b7c0), f_q)) +mstore(0x667a0, addmod(mload(0x66700), mload(0x66760), f_q)) +{ + let result := mulmod(mload(0x123e0), mload(0x48600), f_q) +mstore(419776, result) + } +mstore(0x667e0, mulmod(mload(0x667c0), mload(0x48c80), f_q)) +mstore(0x66800, mulmod(sub(f_q, mload(0x667e0)), mload(0x4b7e0), f_q)) +mstore(0x66820, mulmod(mload(0x58e40), mload(0x4b7e0), f_q)) +mstore(0x66840, addmod(mload(0x667a0), mload(0x66800), f_q)) +{ + let result := mulmod(mload(0x12400), mload(0x48600), f_q) +mstore(419936, result) + } +mstore(0x66880, mulmod(mload(0x66860), mload(0x48c80), f_q)) +mstore(0x668a0, mulmod(sub(f_q, mload(0x66880)), mload(0x4b800), f_q)) +mstore(0x668c0, mulmod(mload(0x58e40), mload(0x4b800), f_q)) +mstore(0x668e0, addmod(mload(0x66840), mload(0x668a0), f_q)) +{ + let result := mulmod(mload(0x12420), mload(0x48600), f_q) +mstore(420096, result) + } +mstore(0x66920, mulmod(mload(0x66900), mload(0x48c80), f_q)) +mstore(0x66940, mulmod(sub(f_q, mload(0x66920)), mload(0x4b820), f_q)) +mstore(0x66960, mulmod(mload(0x58e40), mload(0x4b820), f_q)) +mstore(0x66980, addmod(mload(0x668e0), mload(0x66940), f_q)) +{ + let result := mulmod(mload(0x12440), mload(0x48600), f_q) +mstore(420256, result) + } +mstore(0x669c0, mulmod(mload(0x669a0), mload(0x48c80), f_q)) +mstore(0x669e0, mulmod(sub(f_q, mload(0x669c0)), mload(0x4b840), f_q)) +mstore(0x66a00, mulmod(mload(0x58e40), mload(0x4b840), f_q)) +mstore(0x66a20, addmod(mload(0x66980), mload(0x669e0), f_q)) +{ + let result := mulmod(mload(0x12460), mload(0x48600), f_q) +mstore(420416, result) + } +mstore(0x66a60, mulmod(mload(0x66a40), mload(0x48c80), f_q)) +mstore(0x66a80, mulmod(sub(f_q, mload(0x66a60)), mload(0x4b860), f_q)) +mstore(0x66aa0, mulmod(mload(0x58e40), mload(0x4b860), f_q)) +mstore(0x66ac0, addmod(mload(0x66a20), mload(0x66a80), f_q)) +{ + let result := mulmod(mload(0x12480), mload(0x48600), f_q) +mstore(420576, result) + } +mstore(0x66b00, mulmod(mload(0x66ae0), mload(0x48c80), f_q)) +mstore(0x66b20, mulmod(sub(f_q, mload(0x66b00)), mload(0x4b880), f_q)) +mstore(0x66b40, mulmod(mload(0x58e40), mload(0x4b880), f_q)) +mstore(0x66b60, addmod(mload(0x66ac0), mload(0x66b20), f_q)) +{ + let result := mulmod(mload(0x124a0), mload(0x48600), f_q) +mstore(420736, result) + } +mstore(0x66ba0, mulmod(mload(0x66b80), mload(0x48c80), f_q)) +mstore(0x66bc0, mulmod(sub(f_q, mload(0x66ba0)), mload(0x4b8a0), f_q)) +mstore(0x66be0, mulmod(mload(0x58e40), mload(0x4b8a0), f_q)) +mstore(0x66c00, addmod(mload(0x66b60), mload(0x66bc0), f_q)) +{ + let result := mulmod(mload(0x124c0), mload(0x48600), f_q) +mstore(420896, result) + } +mstore(0x66c40, mulmod(mload(0x66c20), mload(0x48c80), f_q)) +mstore(0x66c60, mulmod(sub(f_q, mload(0x66c40)), mload(0x4b8c0), f_q)) +mstore(0x66c80, mulmod(mload(0x58e40), mload(0x4b8c0), f_q)) +mstore(0x66ca0, addmod(mload(0x66c00), mload(0x66c60), f_q)) +{ + let result := mulmod(mload(0x124e0), mload(0x48600), f_q) +mstore(421056, result) + } +mstore(0x66ce0, mulmod(mload(0x66cc0), mload(0x48c80), f_q)) +mstore(0x66d00, mulmod(sub(f_q, mload(0x66ce0)), mload(0x4b8e0), f_q)) +mstore(0x66d20, mulmod(mload(0x58e40), mload(0x4b8e0), f_q)) +mstore(0x66d40, addmod(mload(0x66ca0), mload(0x66d00), f_q)) +{ + let result := mulmod(mload(0x12500), mload(0x48600), f_q) +mstore(421216, result) + } +mstore(0x66d80, mulmod(mload(0x66d60), mload(0x48c80), f_q)) +mstore(0x66da0, mulmod(sub(f_q, mload(0x66d80)), mload(0x4b900), f_q)) +mstore(0x66dc0, mulmod(mload(0x58e40), mload(0x4b900), f_q)) +mstore(0x66de0, addmod(mload(0x66d40), mload(0x66da0), f_q)) +{ + let result := mulmod(mload(0x12520), mload(0x48600), f_q) +mstore(421376, result) + } +mstore(0x66e20, mulmod(mload(0x66e00), mload(0x48c80), f_q)) +mstore(0x66e40, mulmod(sub(f_q, mload(0x66e20)), mload(0x4b920), f_q)) +mstore(0x66e60, mulmod(mload(0x58e40), mload(0x4b920), f_q)) +mstore(0x66e80, addmod(mload(0x66de0), mload(0x66e40), f_q)) +{ + let result := mulmod(mload(0x12540), mload(0x48600), f_q) +mstore(421536, result) + } +mstore(0x66ec0, mulmod(mload(0x66ea0), mload(0x48c80), f_q)) +mstore(0x66ee0, mulmod(sub(f_q, mload(0x66ec0)), mload(0x4b940), f_q)) +mstore(0x66f00, mulmod(mload(0x58e40), mload(0x4b940), f_q)) +mstore(0x66f20, addmod(mload(0x66e80), mload(0x66ee0), f_q)) +{ + let result := mulmod(mload(0x12560), mload(0x48600), f_q) +mstore(421696, result) + } +mstore(0x66f60, mulmod(mload(0x66f40), mload(0x48c80), f_q)) +mstore(0x66f80, mulmod(sub(f_q, mload(0x66f60)), mload(0x4b960), f_q)) +mstore(0x66fa0, mulmod(mload(0x58e40), mload(0x4b960), f_q)) +mstore(0x66fc0, addmod(mload(0x66f20), mload(0x66f80), f_q)) +{ + let result := mulmod(mload(0x12580), mload(0x48600), f_q) +mstore(421856, result) + } +mstore(0x67000, mulmod(mload(0x66fe0), mload(0x48c80), f_q)) +mstore(0x67020, mulmod(sub(f_q, mload(0x67000)), mload(0x4b980), f_q)) +mstore(0x67040, mulmod(mload(0x58e40), mload(0x4b980), f_q)) +mstore(0x67060, addmod(mload(0x66fc0), mload(0x67020), f_q)) +{ + let result := mulmod(mload(0x125a0), mload(0x48600), f_q) +mstore(422016, result) + } +mstore(0x670a0, mulmod(mload(0x67080), mload(0x48c80), f_q)) +mstore(0x670c0, mulmod(sub(f_q, mload(0x670a0)), mload(0x4b9a0), f_q)) +mstore(0x670e0, mulmod(mload(0x58e40), mload(0x4b9a0), f_q)) +mstore(0x67100, addmod(mload(0x67060), mload(0x670c0), f_q)) +{ + let result := mulmod(mload(0x125c0), mload(0x48600), f_q) +mstore(422176, result) + } +mstore(0x67140, mulmod(mload(0x67120), mload(0x48c80), f_q)) +mstore(0x67160, mulmod(sub(f_q, mload(0x67140)), mload(0x4b9c0), f_q)) +mstore(0x67180, mulmod(mload(0x58e40), mload(0x4b9c0), f_q)) +mstore(0x671a0, addmod(mload(0x67100), mload(0x67160), f_q)) +{ + let result := mulmod(mload(0x125e0), mload(0x48600), f_q) +mstore(422336, result) + } +mstore(0x671e0, mulmod(mload(0x671c0), mload(0x48c80), f_q)) +mstore(0x67200, mulmod(sub(f_q, mload(0x671e0)), mload(0x4b9e0), f_q)) +mstore(0x67220, mulmod(mload(0x58e40), mload(0x4b9e0), f_q)) +mstore(0x67240, addmod(mload(0x671a0), mload(0x67200), f_q)) +{ + let result := mulmod(mload(0x12600), mload(0x48600), f_q) +mstore(422496, result) + } +mstore(0x67280, mulmod(mload(0x67260), mload(0x48c80), f_q)) +mstore(0x672a0, mulmod(sub(f_q, mload(0x67280)), mload(0x4ba00), f_q)) +mstore(0x672c0, mulmod(mload(0x58e40), mload(0x4ba00), f_q)) +mstore(0x672e0, addmod(mload(0x67240), mload(0x672a0), f_q)) +{ + let result := mulmod(mload(0x12620), mload(0x48600), f_q) +mstore(422656, result) + } +mstore(0x67320, mulmod(mload(0x67300), mload(0x48c80), f_q)) +mstore(0x67340, mulmod(sub(f_q, mload(0x67320)), mload(0x4ba20), f_q)) +mstore(0x67360, mulmod(mload(0x58e40), mload(0x4ba20), f_q)) +mstore(0x67380, addmod(mload(0x672e0), mload(0x67340), f_q)) +{ + let result := mulmod(mload(0x12640), mload(0x48600), f_q) +mstore(422816, result) + } +mstore(0x673c0, mulmod(mload(0x673a0), mload(0x48c80), f_q)) +mstore(0x673e0, mulmod(sub(f_q, mload(0x673c0)), mload(0x4ba40), f_q)) +mstore(0x67400, mulmod(mload(0x58e40), mload(0x4ba40), f_q)) +mstore(0x67420, addmod(mload(0x67380), mload(0x673e0), f_q)) +{ + let result := mulmod(mload(0x12660), mload(0x48600), f_q) +mstore(422976, result) + } +mstore(0x67460, mulmod(mload(0x67440), mload(0x48c80), f_q)) +mstore(0x67480, mulmod(sub(f_q, mload(0x67460)), mload(0x4ba60), f_q)) +mstore(0x674a0, mulmod(mload(0x58e40), mload(0x4ba60), f_q)) +mstore(0x674c0, addmod(mload(0x67420), mload(0x67480), f_q)) +{ + let result := mulmod(mload(0x12680), mload(0x48600), f_q) +mstore(423136, result) + } +mstore(0x67500, mulmod(mload(0x674e0), mload(0x48c80), f_q)) +mstore(0x67520, mulmod(sub(f_q, mload(0x67500)), mload(0x4ba80), f_q)) +mstore(0x67540, mulmod(mload(0x58e40), mload(0x4ba80), f_q)) +mstore(0x67560, addmod(mload(0x674c0), mload(0x67520), f_q)) +{ + let result := mulmod(mload(0x126a0), mload(0x48600), f_q) +mstore(423296, result) + } +mstore(0x675a0, mulmod(mload(0x67580), mload(0x48c80), f_q)) +mstore(0x675c0, mulmod(sub(f_q, mload(0x675a0)), mload(0x4baa0), f_q)) +mstore(0x675e0, mulmod(mload(0x58e40), mload(0x4baa0), f_q)) +mstore(0x67600, addmod(mload(0x67560), mload(0x675c0), f_q)) +{ + let result := mulmod(mload(0x126c0), mload(0x48600), f_q) +mstore(423456, result) + } +mstore(0x67640, mulmod(mload(0x67620), mload(0x48c80), f_q)) +mstore(0x67660, mulmod(sub(f_q, mload(0x67640)), mload(0x4bac0), f_q)) +mstore(0x67680, mulmod(mload(0x58e40), mload(0x4bac0), f_q)) +mstore(0x676a0, addmod(mload(0x67600), mload(0x67660), f_q)) +{ + let result := mulmod(mload(0x126e0), mload(0x48600), f_q) +mstore(423616, result) + } +mstore(0x676e0, mulmod(mload(0x676c0), mload(0x48c80), f_q)) +mstore(0x67700, mulmod(sub(f_q, mload(0x676e0)), mload(0x4bae0), f_q)) +mstore(0x67720, mulmod(mload(0x58e40), mload(0x4bae0), f_q)) +mstore(0x67740, addmod(mload(0x676a0), mload(0x67700), f_q)) +{ + let result := mulmod(mload(0x12700), mload(0x48600), f_q) +mstore(423776, result) + } +mstore(0x67780, mulmod(mload(0x67760), mload(0x48c80), f_q)) +mstore(0x677a0, mulmod(sub(f_q, mload(0x67780)), mload(0x4bb00), f_q)) +mstore(0x677c0, mulmod(mload(0x58e40), mload(0x4bb00), f_q)) +mstore(0x677e0, addmod(mload(0x67740), mload(0x677a0), f_q)) +{ + let result := mulmod(mload(0x12720), mload(0x48600), f_q) +mstore(423936, result) + } +mstore(0x67820, mulmod(mload(0x67800), mload(0x48c80), f_q)) +mstore(0x67840, mulmod(sub(f_q, mload(0x67820)), mload(0x4bb20), f_q)) +mstore(0x67860, mulmod(mload(0x58e40), mload(0x4bb20), f_q)) +mstore(0x67880, addmod(mload(0x677e0), mload(0x67840), f_q)) +{ + let result := mulmod(mload(0x12740), mload(0x48600), f_q) +mstore(424096, result) + } +mstore(0x678c0, mulmod(mload(0x678a0), mload(0x48c80), f_q)) +mstore(0x678e0, mulmod(sub(f_q, mload(0x678c0)), mload(0x4bb40), f_q)) +mstore(0x67900, mulmod(mload(0x58e40), mload(0x4bb40), f_q)) +mstore(0x67920, addmod(mload(0x67880), mload(0x678e0), f_q)) +{ + let result := mulmod(mload(0x12760), mload(0x48600), f_q) +mstore(424256, result) + } +mstore(0x67960, mulmod(mload(0x67940), mload(0x48c80), f_q)) +mstore(0x67980, mulmod(sub(f_q, mload(0x67960)), mload(0x4bb60), f_q)) +mstore(0x679a0, mulmod(mload(0x58e40), mload(0x4bb60), f_q)) +mstore(0x679c0, addmod(mload(0x67920), mload(0x67980), f_q)) +{ + let result := mulmod(mload(0x12780), mload(0x48600), f_q) +mstore(424416, result) + } +mstore(0x67a00, mulmod(mload(0x679e0), mload(0x48c80), f_q)) +mstore(0x67a20, mulmod(sub(f_q, mload(0x67a00)), mload(0x4bb80), f_q)) +mstore(0x67a40, mulmod(mload(0x58e40), mload(0x4bb80), f_q)) +mstore(0x67a60, addmod(mload(0x679c0), mload(0x67a20), f_q)) +{ + let result := mulmod(mload(0x127a0), mload(0x48600), f_q) +mstore(424576, result) + } +mstore(0x67aa0, mulmod(mload(0x67a80), mload(0x48c80), f_q)) +mstore(0x67ac0, mulmod(sub(f_q, mload(0x67aa0)), mload(0x4bba0), f_q)) +mstore(0x67ae0, mulmod(mload(0x58e40), mload(0x4bba0), f_q)) +mstore(0x67b00, addmod(mload(0x67a60), mload(0x67ac0), f_q)) +{ + let result := mulmod(mload(0x127c0), mload(0x48600), f_q) +mstore(424736, result) + } +mstore(0x67b40, mulmod(mload(0x67b20), mload(0x48c80), f_q)) +mstore(0x67b60, mulmod(sub(f_q, mload(0x67b40)), mload(0x4bbc0), f_q)) +mstore(0x67b80, mulmod(mload(0x58e40), mload(0x4bbc0), f_q)) +mstore(0x67ba0, addmod(mload(0x67b00), mload(0x67b60), f_q)) +{ + let result := mulmod(mload(0x127e0), mload(0x48600), f_q) +mstore(424896, result) + } +mstore(0x67be0, mulmod(mload(0x67bc0), mload(0x48c80), f_q)) +mstore(0x67c00, mulmod(sub(f_q, mload(0x67be0)), mload(0x4bbe0), f_q)) +mstore(0x67c20, mulmod(mload(0x58e40), mload(0x4bbe0), f_q)) +mstore(0x67c40, addmod(mload(0x67ba0), mload(0x67c00), f_q)) +{ + let result := mulmod(mload(0x12800), mload(0x48600), f_q) +mstore(425056, result) + } +mstore(0x67c80, mulmod(mload(0x67c60), mload(0x48c80), f_q)) +mstore(0x67ca0, mulmod(sub(f_q, mload(0x67c80)), mload(0x4bc00), f_q)) +mstore(0x67cc0, mulmod(mload(0x58e40), mload(0x4bc00), f_q)) +mstore(0x67ce0, addmod(mload(0x67c40), mload(0x67ca0), f_q)) +{ + let result := mulmod(mload(0x12820), mload(0x48600), f_q) +mstore(425216, result) + } +mstore(0x67d20, mulmod(mload(0x67d00), mload(0x48c80), f_q)) +mstore(0x67d40, mulmod(sub(f_q, mload(0x67d20)), mload(0x4bc20), f_q)) +mstore(0x67d60, mulmod(mload(0x58e40), mload(0x4bc20), f_q)) +mstore(0x67d80, addmod(mload(0x67ce0), mload(0x67d40), f_q)) +{ + let result := mulmod(mload(0x12840), mload(0x48600), f_q) +mstore(425376, result) + } +mstore(0x67dc0, mulmod(mload(0x67da0), mload(0x48c80), f_q)) +mstore(0x67de0, mulmod(sub(f_q, mload(0x67dc0)), mload(0x4bc40), f_q)) +mstore(0x67e00, mulmod(mload(0x58e40), mload(0x4bc40), f_q)) +mstore(0x67e20, addmod(mload(0x67d80), mload(0x67de0), f_q)) +{ + let result := mulmod(mload(0x12860), mload(0x48600), f_q) +mstore(425536, result) + } +mstore(0x67e60, mulmod(mload(0x67e40), mload(0x48c80), f_q)) +mstore(0x67e80, mulmod(sub(f_q, mload(0x67e60)), mload(0x4bc60), f_q)) +mstore(0x67ea0, mulmod(mload(0x58e40), mload(0x4bc60), f_q)) +mstore(0x67ec0, addmod(mload(0x67e20), mload(0x67e80), f_q)) +{ + let result := mulmod(mload(0x12880), mload(0x48600), f_q) +mstore(425696, result) + } +mstore(0x67f00, mulmod(mload(0x67ee0), mload(0x48c80), f_q)) +mstore(0x67f20, mulmod(sub(f_q, mload(0x67f00)), mload(0x4bc80), f_q)) +mstore(0x67f40, mulmod(mload(0x58e40), mload(0x4bc80), f_q)) +mstore(0x67f60, addmod(mload(0x67ec0), mload(0x67f20), f_q)) +{ + let result := mulmod(mload(0x128a0), mload(0x48600), f_q) +mstore(425856, result) + } +mstore(0x67fa0, mulmod(mload(0x67f80), mload(0x48c80), f_q)) +mstore(0x67fc0, mulmod(sub(f_q, mload(0x67fa0)), mload(0x4bca0), f_q)) +mstore(0x67fe0, mulmod(mload(0x58e40), mload(0x4bca0), f_q)) +mstore(0x68000, addmod(mload(0x67f60), mload(0x67fc0), f_q)) +{ + let result := mulmod(mload(0x128c0), mload(0x48600), f_q) +mstore(426016, result) + } +mstore(0x68040, mulmod(mload(0x68020), mload(0x48c80), f_q)) +mstore(0x68060, mulmod(sub(f_q, mload(0x68040)), mload(0x4bcc0), f_q)) +mstore(0x68080, mulmod(mload(0x58e40), mload(0x4bcc0), f_q)) +mstore(0x680a0, addmod(mload(0x68000), mload(0x68060), f_q)) +{ + let result := mulmod(mload(0x128e0), mload(0x48600), f_q) +mstore(426176, result) + } +mstore(0x680e0, mulmod(mload(0x680c0), mload(0x48c80), f_q)) +mstore(0x68100, mulmod(sub(f_q, mload(0x680e0)), mload(0x4bce0), f_q)) +mstore(0x68120, mulmod(mload(0x58e40), mload(0x4bce0), f_q)) +mstore(0x68140, addmod(mload(0x680a0), mload(0x68100), f_q)) +{ + let result := mulmod(mload(0x12900), mload(0x48600), f_q) +mstore(426336, result) + } +mstore(0x68180, mulmod(mload(0x68160), mload(0x48c80), f_q)) +mstore(0x681a0, mulmod(sub(f_q, mload(0x68180)), mload(0x4bd00), f_q)) +mstore(0x681c0, mulmod(mload(0x58e40), mload(0x4bd00), f_q)) +mstore(0x681e0, addmod(mload(0x68140), mload(0x681a0), f_q)) +{ + let result := mulmod(mload(0x12920), mload(0x48600), f_q) +mstore(426496, result) + } +mstore(0x68220, mulmod(mload(0x68200), mload(0x48c80), f_q)) +mstore(0x68240, mulmod(sub(f_q, mload(0x68220)), mload(0x4bd20), f_q)) +mstore(0x68260, mulmod(mload(0x58e40), mload(0x4bd20), f_q)) +mstore(0x68280, addmod(mload(0x681e0), mload(0x68240), f_q)) +{ + let result := mulmod(mload(0x12940), mload(0x48600), f_q) +mstore(426656, result) + } +mstore(0x682c0, mulmod(mload(0x682a0), mload(0x48c80), f_q)) +mstore(0x682e0, mulmod(sub(f_q, mload(0x682c0)), mload(0x4bd40), f_q)) +mstore(0x68300, mulmod(mload(0x58e40), mload(0x4bd40), f_q)) +mstore(0x68320, addmod(mload(0x68280), mload(0x682e0), f_q)) +{ + let result := mulmod(mload(0x12960), mload(0x48600), f_q) +mstore(426816, result) + } +mstore(0x68360, mulmod(mload(0x68340), mload(0x48c80), f_q)) +mstore(0x68380, mulmod(sub(f_q, mload(0x68360)), mload(0x4bd60), f_q)) +mstore(0x683a0, mulmod(mload(0x58e40), mload(0x4bd60), f_q)) +mstore(0x683c0, addmod(mload(0x68320), mload(0x68380), f_q)) +{ + let result := mulmod(mload(0x12980), mload(0x48600), f_q) +mstore(426976, result) + } +mstore(0x68400, mulmod(mload(0x683e0), mload(0x48c80), f_q)) +mstore(0x68420, mulmod(sub(f_q, mload(0x68400)), mload(0x4bd80), f_q)) +mstore(0x68440, mulmod(mload(0x58e40), mload(0x4bd80), f_q)) +mstore(0x68460, addmod(mload(0x683c0), mload(0x68420), f_q)) +{ + let result := mulmod(mload(0x129a0), mload(0x48600), f_q) +mstore(427136, result) + } +mstore(0x684a0, mulmod(mload(0x68480), mload(0x48c80), f_q)) +mstore(0x684c0, mulmod(sub(f_q, mload(0x684a0)), mload(0x4bda0), f_q)) +mstore(0x684e0, mulmod(mload(0x58e40), mload(0x4bda0), f_q)) +mstore(0x68500, addmod(mload(0x68460), mload(0x684c0), f_q)) +{ + let result := mulmod(mload(0x129c0), mload(0x48600), f_q) +mstore(427296, result) + } +mstore(0x68540, mulmod(mload(0x68520), mload(0x48c80), f_q)) +mstore(0x68560, mulmod(sub(f_q, mload(0x68540)), mload(0x4bdc0), f_q)) +mstore(0x68580, mulmod(mload(0x58e40), mload(0x4bdc0), f_q)) +mstore(0x685a0, addmod(mload(0x68500), mload(0x68560), f_q)) +{ + let result := mulmod(mload(0x129e0), mload(0x48600), f_q) +mstore(427456, result) + } +mstore(0x685e0, mulmod(mload(0x685c0), mload(0x48c80), f_q)) +mstore(0x68600, mulmod(sub(f_q, mload(0x685e0)), mload(0x4bde0), f_q)) +mstore(0x68620, mulmod(mload(0x58e40), mload(0x4bde0), f_q)) +mstore(0x68640, addmod(mload(0x685a0), mload(0x68600), f_q)) +{ + let result := mulmod(mload(0x12a00), mload(0x48600), f_q) +mstore(427616, result) + } +mstore(0x68680, mulmod(mload(0x68660), mload(0x48c80), f_q)) +mstore(0x686a0, mulmod(sub(f_q, mload(0x68680)), mload(0x4be00), f_q)) +mstore(0x686c0, mulmod(mload(0x58e40), mload(0x4be00), f_q)) +mstore(0x686e0, addmod(mload(0x68640), mload(0x686a0), f_q)) +{ + let result := mulmod(mload(0x12a20), mload(0x48600), f_q) +mstore(427776, result) + } +mstore(0x68720, mulmod(mload(0x68700), mload(0x48c80), f_q)) +mstore(0x68740, mulmod(sub(f_q, mload(0x68720)), mload(0x4be20), f_q)) +mstore(0x68760, mulmod(mload(0x58e40), mload(0x4be20), f_q)) +mstore(0x68780, addmod(mload(0x686e0), mload(0x68740), f_q)) +{ + let result := mulmod(mload(0x12a40), mload(0x48600), f_q) +mstore(427936, result) + } +mstore(0x687c0, mulmod(mload(0x687a0), mload(0x48c80), f_q)) +mstore(0x687e0, mulmod(sub(f_q, mload(0x687c0)), mload(0x4be40), f_q)) +mstore(0x68800, mulmod(mload(0x58e40), mload(0x4be40), f_q)) +mstore(0x68820, addmod(mload(0x68780), mload(0x687e0), f_q)) +{ + let result := mulmod(mload(0x12a60), mload(0x48600), f_q) +mstore(428096, result) + } +mstore(0x68860, mulmod(mload(0x68840), mload(0x48c80), f_q)) +mstore(0x68880, mulmod(sub(f_q, mload(0x68860)), mload(0x4be60), f_q)) +mstore(0x688a0, mulmod(mload(0x58e40), mload(0x4be60), f_q)) +mstore(0x688c0, addmod(mload(0x68820), mload(0x68880), f_q)) +{ + let result := mulmod(mload(0x12a80), mload(0x48600), f_q) +mstore(428256, result) + } +mstore(0x68900, mulmod(mload(0x688e0), mload(0x48c80), f_q)) +mstore(0x68920, mulmod(sub(f_q, mload(0x68900)), mload(0x4be80), f_q)) +mstore(0x68940, mulmod(mload(0x58e40), mload(0x4be80), f_q)) +mstore(0x68960, addmod(mload(0x688c0), mload(0x68920), f_q)) +{ + let result := mulmod(mload(0x12aa0), mload(0x48600), f_q) +mstore(428416, result) + } +mstore(0x689a0, mulmod(mload(0x68980), mload(0x48c80), f_q)) +mstore(0x689c0, mulmod(sub(f_q, mload(0x689a0)), mload(0x4bea0), f_q)) +mstore(0x689e0, mulmod(mload(0x58e40), mload(0x4bea0), f_q)) +mstore(0x68a00, addmod(mload(0x68960), mload(0x689c0), f_q)) +{ + let result := mulmod(mload(0x12ac0), mload(0x48600), f_q) +mstore(428576, result) + } +mstore(0x68a40, mulmod(mload(0x68a20), mload(0x48c80), f_q)) +mstore(0x68a60, mulmod(sub(f_q, mload(0x68a40)), mload(0x4bec0), f_q)) +mstore(0x68a80, mulmod(mload(0x58e40), mload(0x4bec0), f_q)) +mstore(0x68aa0, addmod(mload(0x68a00), mload(0x68a60), f_q)) +{ + let result := mulmod(mload(0x12ae0), mload(0x48600), f_q) +mstore(428736, result) + } +mstore(0x68ae0, mulmod(mload(0x68ac0), mload(0x48c80), f_q)) +mstore(0x68b00, mulmod(sub(f_q, mload(0x68ae0)), mload(0x4bee0), f_q)) +mstore(0x68b20, mulmod(mload(0x58e40), mload(0x4bee0), f_q)) +mstore(0x68b40, addmod(mload(0x68aa0), mload(0x68b00), f_q)) +{ + let result := mulmod(mload(0x12b00), mload(0x48600), f_q) +mstore(428896, result) + } +mstore(0x68b80, mulmod(mload(0x68b60), mload(0x48c80), f_q)) +mstore(0x68ba0, mulmod(sub(f_q, mload(0x68b80)), mload(0x4bf00), f_q)) +mstore(0x68bc0, mulmod(mload(0x58e40), mload(0x4bf00), f_q)) +mstore(0x68be0, addmod(mload(0x68b40), mload(0x68ba0), f_q)) +{ + let result := mulmod(mload(0x12b20), mload(0x48600), f_q) +mstore(429056, result) + } +mstore(0x68c20, mulmod(mload(0x68c00), mload(0x48c80), f_q)) +mstore(0x68c40, mulmod(sub(f_q, mload(0x68c20)), mload(0x4bf20), f_q)) +mstore(0x68c60, mulmod(mload(0x58e40), mload(0x4bf20), f_q)) +mstore(0x68c80, addmod(mload(0x68be0), mload(0x68c40), f_q)) +{ + let result := mulmod(mload(0x12b40), mload(0x48600), f_q) +mstore(429216, result) + } +mstore(0x68cc0, mulmod(mload(0x68ca0), mload(0x48c80), f_q)) +mstore(0x68ce0, mulmod(sub(f_q, mload(0x68cc0)), mload(0x4bf40), f_q)) +mstore(0x68d00, mulmod(mload(0x58e40), mload(0x4bf40), f_q)) +mstore(0x68d20, addmod(mload(0x68c80), mload(0x68ce0), f_q)) +{ + let result := mulmod(mload(0x12b60), mload(0x48600), f_q) +mstore(429376, result) + } +mstore(0x68d60, mulmod(mload(0x68d40), mload(0x48c80), f_q)) +mstore(0x68d80, mulmod(sub(f_q, mload(0x68d60)), mload(0x4bf60), f_q)) +mstore(0x68da0, mulmod(mload(0x58e40), mload(0x4bf60), f_q)) +mstore(0x68dc0, addmod(mload(0x68d20), mload(0x68d80), f_q)) +{ + let result := mulmod(mload(0x12b80), mload(0x48600), f_q) +mstore(429536, result) + } +mstore(0x68e00, mulmod(mload(0x68de0), mload(0x48c80), f_q)) +mstore(0x68e20, mulmod(sub(f_q, mload(0x68e00)), mload(0x4bf80), f_q)) +mstore(0x68e40, mulmod(mload(0x58e40), mload(0x4bf80), f_q)) +mstore(0x68e60, addmod(mload(0x68dc0), mload(0x68e20), f_q)) +{ + let result := mulmod(mload(0x12ba0), mload(0x48600), f_q) +mstore(429696, result) + } +mstore(0x68ea0, mulmod(mload(0x68e80), mload(0x48c80), f_q)) +mstore(0x68ec0, mulmod(sub(f_q, mload(0x68ea0)), mload(0x4bfa0), f_q)) +mstore(0x68ee0, mulmod(mload(0x58e40), mload(0x4bfa0), f_q)) +mstore(0x68f00, addmod(mload(0x68e60), mload(0x68ec0), f_q)) +{ + let result := mulmod(mload(0x12bc0), mload(0x48600), f_q) +mstore(429856, result) + } +mstore(0x68f40, mulmod(mload(0x68f20), mload(0x48c80), f_q)) +mstore(0x68f60, mulmod(sub(f_q, mload(0x68f40)), mload(0x4bfc0), f_q)) +mstore(0x68f80, mulmod(mload(0x58e40), mload(0x4bfc0), f_q)) +mstore(0x68fa0, addmod(mload(0x68f00), mload(0x68f60), f_q)) +{ + let result := mulmod(mload(0x12be0), mload(0x48600), f_q) +mstore(430016, result) + } +mstore(0x68fe0, mulmod(mload(0x68fc0), mload(0x48c80), f_q)) +mstore(0x69000, mulmod(sub(f_q, mload(0x68fe0)), mload(0x4bfe0), f_q)) +mstore(0x69020, mulmod(mload(0x58e40), mload(0x4bfe0), f_q)) +mstore(0x69040, addmod(mload(0x68fa0), mload(0x69000), f_q)) +{ + let result := mulmod(mload(0x12c00), mload(0x48600), f_q) +mstore(430176, result) + } +mstore(0x69080, mulmod(mload(0x69060), mload(0x48c80), f_q)) +mstore(0x690a0, mulmod(sub(f_q, mload(0x69080)), mload(0x4c000), f_q)) +mstore(0x690c0, mulmod(mload(0x58e40), mload(0x4c000), f_q)) +mstore(0x690e0, addmod(mload(0x69040), mload(0x690a0), f_q)) +{ + let result := mulmod(mload(0x12c20), mload(0x48600), f_q) +mstore(430336, result) + } +mstore(0x69120, mulmod(mload(0x69100), mload(0x48c80), f_q)) +mstore(0x69140, mulmod(sub(f_q, mload(0x69120)), mload(0x4c020), f_q)) +mstore(0x69160, mulmod(mload(0x58e40), mload(0x4c020), f_q)) +mstore(0x69180, addmod(mload(0x690e0), mload(0x69140), f_q)) +{ + let result := mulmod(mload(0x12c40), mload(0x48600), f_q) +mstore(430496, result) + } +mstore(0x691c0, mulmod(mload(0x691a0), mload(0x48c80), f_q)) +mstore(0x691e0, mulmod(sub(f_q, mload(0x691c0)), mload(0x4c040), f_q)) +mstore(0x69200, mulmod(mload(0x58e40), mload(0x4c040), f_q)) +mstore(0x69220, addmod(mload(0x69180), mload(0x691e0), f_q)) +{ + let result := mulmod(mload(0x12c60), mload(0x48600), f_q) +mstore(430656, result) + } +mstore(0x69260, mulmod(mload(0x69240), mload(0x48c80), f_q)) +mstore(0x69280, mulmod(sub(f_q, mload(0x69260)), mload(0x4c060), f_q)) +mstore(0x692a0, mulmod(mload(0x58e40), mload(0x4c060), f_q)) +mstore(0x692c0, addmod(mload(0x69220), mload(0x69280), f_q)) +{ + let result := mulmod(mload(0x12c80), mload(0x48600), f_q) +mstore(430816, result) + } +mstore(0x69300, mulmod(mload(0x692e0), mload(0x48c80), f_q)) +mstore(0x69320, mulmod(sub(f_q, mload(0x69300)), mload(0x4c080), f_q)) +mstore(0x69340, mulmod(mload(0x58e40), mload(0x4c080), f_q)) +mstore(0x69360, addmod(mload(0x692c0), mload(0x69320), f_q)) +{ + let result := mulmod(mload(0x12ca0), mload(0x48600), f_q) +mstore(430976, result) + } +mstore(0x693a0, mulmod(mload(0x69380), mload(0x48c80), f_q)) +mstore(0x693c0, mulmod(sub(f_q, mload(0x693a0)), mload(0x4c0a0), f_q)) +mstore(0x693e0, mulmod(mload(0x58e40), mload(0x4c0a0), f_q)) +mstore(0x69400, addmod(mload(0x69360), mload(0x693c0), f_q)) +{ + let result := mulmod(mload(0x12cc0), mload(0x48600), f_q) +mstore(431136, result) + } +mstore(0x69440, mulmod(mload(0x69420), mload(0x48c80), f_q)) +mstore(0x69460, mulmod(sub(f_q, mload(0x69440)), mload(0x4c0c0), f_q)) +mstore(0x69480, mulmod(mload(0x58e40), mload(0x4c0c0), f_q)) +mstore(0x694a0, addmod(mload(0x69400), mload(0x69460), f_q)) +{ + let result := mulmod(mload(0x12ce0), mload(0x48600), f_q) +mstore(431296, result) + } +mstore(0x694e0, mulmod(mload(0x694c0), mload(0x48c80), f_q)) +mstore(0x69500, mulmod(sub(f_q, mload(0x694e0)), mload(0x4c0e0), f_q)) +mstore(0x69520, mulmod(mload(0x58e40), mload(0x4c0e0), f_q)) +mstore(0x69540, addmod(mload(0x694a0), mload(0x69500), f_q)) +{ + let result := mulmod(mload(0x12d00), mload(0x48600), f_q) +mstore(431456, result) + } +mstore(0x69580, mulmod(mload(0x69560), mload(0x48c80), f_q)) +mstore(0x695a0, mulmod(sub(f_q, mload(0x69580)), mload(0x4c100), f_q)) +mstore(0x695c0, mulmod(mload(0x58e40), mload(0x4c100), f_q)) +mstore(0x695e0, addmod(mload(0x69540), mload(0x695a0), f_q)) +{ + let result := mulmod(mload(0x12d20), mload(0x48600), f_q) +mstore(431616, result) + } +mstore(0x69620, mulmod(mload(0x69600), mload(0x48c80), f_q)) +mstore(0x69640, mulmod(sub(f_q, mload(0x69620)), mload(0x4c120), f_q)) +mstore(0x69660, mulmod(mload(0x58e40), mload(0x4c120), f_q)) +mstore(0x69680, addmod(mload(0x695e0), mload(0x69640), f_q)) +{ + let result := mulmod(mload(0x12d40), mload(0x48600), f_q) +mstore(431776, result) + } +mstore(0x696c0, mulmod(mload(0x696a0), mload(0x48c80), f_q)) +mstore(0x696e0, mulmod(sub(f_q, mload(0x696c0)), mload(0x4c140), f_q)) +mstore(0x69700, mulmod(mload(0x58e40), mload(0x4c140), f_q)) +mstore(0x69720, addmod(mload(0x69680), mload(0x696e0), f_q)) +{ + let result := mulmod(mload(0x12d60), mload(0x48600), f_q) +mstore(431936, result) + } +mstore(0x69760, mulmod(mload(0x69740), mload(0x48c80), f_q)) +mstore(0x69780, mulmod(sub(f_q, mload(0x69760)), mload(0x4c160), f_q)) +mstore(0x697a0, mulmod(mload(0x58e40), mload(0x4c160), f_q)) +mstore(0x697c0, addmod(mload(0x69720), mload(0x69780), f_q)) +{ + let result := mulmod(mload(0x12d80), mload(0x48600), f_q) +mstore(432096, result) + } +mstore(0x69800, mulmod(mload(0x697e0), mload(0x48c80), f_q)) +mstore(0x69820, mulmod(sub(f_q, mload(0x69800)), mload(0x4c180), f_q)) +mstore(0x69840, mulmod(mload(0x58e40), mload(0x4c180), f_q)) +mstore(0x69860, addmod(mload(0x697c0), mload(0x69820), f_q)) +{ + let result := mulmod(mload(0x12da0), mload(0x48600), f_q) +mstore(432256, result) + } +mstore(0x698a0, mulmod(mload(0x69880), mload(0x48c80), f_q)) +mstore(0x698c0, mulmod(sub(f_q, mload(0x698a0)), mload(0x4c1a0), f_q)) +mstore(0x698e0, mulmod(mload(0x58e40), mload(0x4c1a0), f_q)) +mstore(0x69900, addmod(mload(0x69860), mload(0x698c0), f_q)) +{ + let result := mulmod(mload(0x12dc0), mload(0x48600), f_q) +mstore(432416, result) + } +mstore(0x69940, mulmod(mload(0x69920), mload(0x48c80), f_q)) +mstore(0x69960, mulmod(sub(f_q, mload(0x69940)), mload(0x4c1c0), f_q)) +mstore(0x69980, mulmod(mload(0x58e40), mload(0x4c1c0), f_q)) +mstore(0x699a0, addmod(mload(0x69900), mload(0x69960), f_q)) +{ + let result := mulmod(mload(0x12de0), mload(0x48600), f_q) +mstore(432576, result) + } +mstore(0x699e0, mulmod(mload(0x699c0), mload(0x48c80), f_q)) +mstore(0x69a00, mulmod(sub(f_q, mload(0x699e0)), mload(0x4c1e0), f_q)) +mstore(0x69a20, mulmod(mload(0x58e40), mload(0x4c1e0), f_q)) +mstore(0x69a40, addmod(mload(0x699a0), mload(0x69a00), f_q)) +{ + let result := mulmod(mload(0x12e00), mload(0x48600), f_q) +mstore(432736, result) + } +mstore(0x69a80, mulmod(mload(0x69a60), mload(0x48c80), f_q)) +mstore(0x69aa0, mulmod(sub(f_q, mload(0x69a80)), mload(0x4c200), f_q)) +mstore(0x69ac0, mulmod(mload(0x58e40), mload(0x4c200), f_q)) +mstore(0x69ae0, addmod(mload(0x69a40), mload(0x69aa0), f_q)) +{ + let result := mulmod(mload(0x12e20), mload(0x48600), f_q) +mstore(432896, result) + } +mstore(0x69b20, mulmod(mload(0x69b00), mload(0x48c80), f_q)) +mstore(0x69b40, mulmod(sub(f_q, mload(0x69b20)), mload(0x4c220), f_q)) +mstore(0x69b60, mulmod(mload(0x58e40), mload(0x4c220), f_q)) +mstore(0x69b80, addmod(mload(0x69ae0), mload(0x69b40), f_q)) +{ + let result := mulmod(mload(0x12e40), mload(0x48600), f_q) +mstore(433056, result) + } +mstore(0x69bc0, mulmod(mload(0x69ba0), mload(0x48c80), f_q)) +mstore(0x69be0, mulmod(sub(f_q, mload(0x69bc0)), mload(0x4c240), f_q)) +mstore(0x69c00, mulmod(mload(0x58e40), mload(0x4c240), f_q)) +mstore(0x69c20, addmod(mload(0x69b80), mload(0x69be0), f_q)) +{ + let result := mulmod(mload(0x12e60), mload(0x48600), f_q) +mstore(433216, result) + } +mstore(0x69c60, mulmod(mload(0x69c40), mload(0x48c80), f_q)) +mstore(0x69c80, mulmod(sub(f_q, mload(0x69c60)), mload(0x4c260), f_q)) +mstore(0x69ca0, mulmod(mload(0x58e40), mload(0x4c260), f_q)) +mstore(0x69cc0, addmod(mload(0x69c20), mload(0x69c80), f_q)) +{ + let result := mulmod(mload(0x12e80), mload(0x48600), f_q) +mstore(433376, result) + } +mstore(0x69d00, mulmod(mload(0x69ce0), mload(0x48c80), f_q)) +mstore(0x69d20, mulmod(sub(f_q, mload(0x69d00)), mload(0x4c280), f_q)) +mstore(0x69d40, mulmod(mload(0x58e40), mload(0x4c280), f_q)) +mstore(0x69d60, addmod(mload(0x69cc0), mload(0x69d20), f_q)) +{ + let result := mulmod(mload(0x12ea0), mload(0x48600), f_q) +mstore(433536, result) + } +mstore(0x69da0, mulmod(mload(0x69d80), mload(0x48c80), f_q)) +mstore(0x69dc0, mulmod(sub(f_q, mload(0x69da0)), mload(0x4c2a0), f_q)) +mstore(0x69de0, mulmod(mload(0x58e40), mload(0x4c2a0), f_q)) +mstore(0x69e00, addmod(mload(0x69d60), mload(0x69dc0), f_q)) +{ + let result := mulmod(mload(0x12ec0), mload(0x48600), f_q) +mstore(433696, result) + } +mstore(0x69e40, mulmod(mload(0x69e20), mload(0x48c80), f_q)) +mstore(0x69e60, mulmod(sub(f_q, mload(0x69e40)), mload(0x4c2c0), f_q)) +mstore(0x69e80, mulmod(mload(0x58e40), mload(0x4c2c0), f_q)) +mstore(0x69ea0, addmod(mload(0x69e00), mload(0x69e60), f_q)) +{ + let result := mulmod(mload(0x12ee0), mload(0x48600), f_q) +mstore(433856, result) + } +mstore(0x69ee0, mulmod(mload(0x69ec0), mload(0x48c80), f_q)) +mstore(0x69f00, mulmod(sub(f_q, mload(0x69ee0)), mload(0x4c2e0), f_q)) +mstore(0x69f20, mulmod(mload(0x58e40), mload(0x4c2e0), f_q)) +mstore(0x69f40, addmod(mload(0x69ea0), mload(0x69f00), f_q)) +{ + let result := mulmod(mload(0x12f00), mload(0x48600), f_q) +mstore(434016, result) + } +mstore(0x69f80, mulmod(mload(0x69f60), mload(0x48c80), f_q)) +mstore(0x69fa0, mulmod(sub(f_q, mload(0x69f80)), mload(0x4c300), f_q)) +mstore(0x69fc0, mulmod(mload(0x58e40), mload(0x4c300), f_q)) +mstore(0x69fe0, addmod(mload(0x69f40), mload(0x69fa0), f_q)) +{ + let result := mulmod(mload(0x12f20), mload(0x48600), f_q) +mstore(434176, result) + } +mstore(0x6a020, mulmod(mload(0x6a000), mload(0x48c80), f_q)) +mstore(0x6a040, mulmod(sub(f_q, mload(0x6a020)), mload(0x4c320), f_q)) +mstore(0x6a060, mulmod(mload(0x58e40), mload(0x4c320), f_q)) +mstore(0x6a080, addmod(mload(0x69fe0), mload(0x6a040), f_q)) +{ + let result := mulmod(mload(0x12f40), mload(0x48600), f_q) +mstore(434336, result) + } +mstore(0x6a0c0, mulmod(mload(0x6a0a0), mload(0x48c80), f_q)) +mstore(0x6a0e0, mulmod(sub(f_q, mload(0x6a0c0)), mload(0x4c340), f_q)) +mstore(0x6a100, mulmod(mload(0x58e40), mload(0x4c340), f_q)) +mstore(0x6a120, addmod(mload(0x6a080), mload(0x6a0e0), f_q)) +{ + let result := mulmod(mload(0x12f60), mload(0x48600), f_q) +mstore(434496, result) + } +mstore(0x6a160, mulmod(mload(0x6a140), mload(0x48c80), f_q)) +mstore(0x6a180, mulmod(sub(f_q, mload(0x6a160)), mload(0x4c360), f_q)) +mstore(0x6a1a0, mulmod(mload(0x58e40), mload(0x4c360), f_q)) +mstore(0x6a1c0, addmod(mload(0x6a120), mload(0x6a180), f_q)) +{ + let result := mulmod(mload(0x12f80), mload(0x48600), f_q) +mstore(434656, result) + } +mstore(0x6a200, mulmod(mload(0x6a1e0), mload(0x48c80), f_q)) +mstore(0x6a220, mulmod(sub(f_q, mload(0x6a200)), mload(0x4c380), f_q)) +mstore(0x6a240, mulmod(mload(0x58e40), mload(0x4c380), f_q)) +mstore(0x6a260, addmod(mload(0x6a1c0), mload(0x6a220), f_q)) +{ + let result := mulmod(mload(0x12fa0), mload(0x48600), f_q) +mstore(434816, result) + } +mstore(0x6a2a0, mulmod(mload(0x6a280), mload(0x48c80), f_q)) +mstore(0x6a2c0, mulmod(sub(f_q, mload(0x6a2a0)), mload(0x4c3a0), f_q)) +mstore(0x6a2e0, mulmod(mload(0x58e40), mload(0x4c3a0), f_q)) +mstore(0x6a300, addmod(mload(0x6a260), mload(0x6a2c0), f_q)) +{ + let result := mulmod(mload(0x12fc0), mload(0x48600), f_q) +mstore(434976, result) + } +mstore(0x6a340, mulmod(mload(0x6a320), mload(0x48c80), f_q)) +mstore(0x6a360, mulmod(sub(f_q, mload(0x6a340)), mload(0x4c3c0), f_q)) +mstore(0x6a380, mulmod(mload(0x58e40), mload(0x4c3c0), f_q)) +mstore(0x6a3a0, addmod(mload(0x6a300), mload(0x6a360), f_q)) +{ + let result := mulmod(mload(0x12fe0), mload(0x48600), f_q) +mstore(435136, result) + } +mstore(0x6a3e0, mulmod(mload(0x6a3c0), mload(0x48c80), f_q)) +mstore(0x6a400, mulmod(sub(f_q, mload(0x6a3e0)), mload(0x4c3e0), f_q)) +mstore(0x6a420, mulmod(mload(0x58e40), mload(0x4c3e0), f_q)) +mstore(0x6a440, addmod(mload(0x6a3a0), mload(0x6a400), f_q)) +{ + let result := mulmod(mload(0x13000), mload(0x48600), f_q) +mstore(435296, result) + } +mstore(0x6a480, mulmod(mload(0x6a460), mload(0x48c80), f_q)) +mstore(0x6a4a0, mulmod(sub(f_q, mload(0x6a480)), mload(0x4c400), f_q)) +mstore(0x6a4c0, mulmod(mload(0x58e40), mload(0x4c400), f_q)) +mstore(0x6a4e0, addmod(mload(0x6a440), mload(0x6a4a0), f_q)) +{ + let result := mulmod(mload(0x13020), mload(0x48600), f_q) +mstore(435456, result) + } +mstore(0x6a520, mulmod(mload(0x6a500), mload(0x48c80), f_q)) +mstore(0x6a540, mulmod(sub(f_q, mload(0x6a520)), mload(0x4c420), f_q)) +mstore(0x6a560, mulmod(mload(0x58e40), mload(0x4c420), f_q)) +mstore(0x6a580, addmod(mload(0x6a4e0), mload(0x6a540), f_q)) +{ + let result := mulmod(mload(0x13040), mload(0x48600), f_q) +mstore(435616, result) + } +mstore(0x6a5c0, mulmod(mload(0x6a5a0), mload(0x48c80), f_q)) +mstore(0x6a5e0, mulmod(sub(f_q, mload(0x6a5c0)), mload(0x4c440), f_q)) +mstore(0x6a600, mulmod(mload(0x58e40), mload(0x4c440), f_q)) +mstore(0x6a620, addmod(mload(0x6a580), mload(0x6a5e0), f_q)) +{ + let result := mulmod(mload(0x13060), mload(0x48600), f_q) +mstore(435776, result) + } +mstore(0x6a660, mulmod(mload(0x6a640), mload(0x48c80), f_q)) +mstore(0x6a680, mulmod(sub(f_q, mload(0x6a660)), mload(0x4c460), f_q)) +mstore(0x6a6a0, mulmod(mload(0x58e40), mload(0x4c460), f_q)) +mstore(0x6a6c0, addmod(mload(0x6a620), mload(0x6a680), f_q)) +{ + let result := mulmod(mload(0x13080), mload(0x48600), f_q) +mstore(435936, result) + } +mstore(0x6a700, mulmod(mload(0x6a6e0), mload(0x48c80), f_q)) +mstore(0x6a720, mulmod(sub(f_q, mload(0x6a700)), mload(0x4c480), f_q)) +mstore(0x6a740, mulmod(mload(0x58e40), mload(0x4c480), f_q)) +mstore(0x6a760, addmod(mload(0x6a6c0), mload(0x6a720), f_q)) +{ + let result := mulmod(mload(0x130a0), mload(0x48600), f_q) +mstore(436096, result) + } +mstore(0x6a7a0, mulmod(mload(0x6a780), mload(0x48c80), f_q)) +mstore(0x6a7c0, mulmod(sub(f_q, mload(0x6a7a0)), mload(0x4c4a0), f_q)) +mstore(0x6a7e0, mulmod(mload(0x58e40), mload(0x4c4a0), f_q)) +mstore(0x6a800, addmod(mload(0x6a760), mload(0x6a7c0), f_q)) +{ + let result := mulmod(mload(0x130c0), mload(0x48600), f_q) +mstore(436256, result) + } +mstore(0x6a840, mulmod(mload(0x6a820), mload(0x48c80), f_q)) +mstore(0x6a860, mulmod(sub(f_q, mload(0x6a840)), mload(0x4c4c0), f_q)) +mstore(0x6a880, mulmod(mload(0x58e40), mload(0x4c4c0), f_q)) +mstore(0x6a8a0, addmod(mload(0x6a800), mload(0x6a860), f_q)) +{ + let result := mulmod(mload(0x130e0), mload(0x48600), f_q) +mstore(436416, result) + } +mstore(0x6a8e0, mulmod(mload(0x6a8c0), mload(0x48c80), f_q)) +mstore(0x6a900, mulmod(sub(f_q, mload(0x6a8e0)), mload(0x4c4e0), f_q)) +mstore(0x6a920, mulmod(mload(0x58e40), mload(0x4c4e0), f_q)) +mstore(0x6a940, addmod(mload(0x6a8a0), mload(0x6a900), f_q)) +{ + let result := mulmod(mload(0x13100), mload(0x48600), f_q) +mstore(436576, result) + } +mstore(0x6a980, mulmod(mload(0x6a960), mload(0x48c80), f_q)) +mstore(0x6a9a0, mulmod(sub(f_q, mload(0x6a980)), mload(0x4c500), f_q)) +mstore(0x6a9c0, mulmod(mload(0x58e40), mload(0x4c500), f_q)) +mstore(0x6a9e0, addmod(mload(0x6a940), mload(0x6a9a0), f_q)) +{ + let result := mulmod(mload(0x13120), mload(0x48600), f_q) +mstore(436736, result) + } +mstore(0x6aa20, mulmod(mload(0x6aa00), mload(0x48c80), f_q)) +mstore(0x6aa40, mulmod(sub(f_q, mload(0x6aa20)), mload(0x4c520), f_q)) +mstore(0x6aa60, mulmod(mload(0x58e40), mload(0x4c520), f_q)) +mstore(0x6aa80, addmod(mload(0x6a9e0), mload(0x6aa40), f_q)) +{ + let result := mulmod(mload(0x13140), mload(0x48600), f_q) +mstore(436896, result) + } +mstore(0x6aac0, mulmod(mload(0x6aaa0), mload(0x48c80), f_q)) +mstore(0x6aae0, mulmod(sub(f_q, mload(0x6aac0)), mload(0x4c540), f_q)) +mstore(0x6ab00, mulmod(mload(0x58e40), mload(0x4c540), f_q)) +mstore(0x6ab20, addmod(mload(0x6aa80), mload(0x6aae0), f_q)) +{ + let result := mulmod(mload(0x13160), mload(0x48600), f_q) +mstore(437056, result) + } +mstore(0x6ab60, mulmod(mload(0x6ab40), mload(0x48c80), f_q)) +mstore(0x6ab80, mulmod(sub(f_q, mload(0x6ab60)), mload(0x4c560), f_q)) +mstore(0x6aba0, mulmod(mload(0x58e40), mload(0x4c560), f_q)) +mstore(0x6abc0, addmod(mload(0x6ab20), mload(0x6ab80), f_q)) +{ + let result := mulmod(mload(0x13180), mload(0x48600), f_q) +mstore(437216, result) + } +mstore(0x6ac00, mulmod(mload(0x6abe0), mload(0x48c80), f_q)) +mstore(0x6ac20, mulmod(sub(f_q, mload(0x6ac00)), mload(0x4c580), f_q)) +mstore(0x6ac40, mulmod(mload(0x58e40), mload(0x4c580), f_q)) +mstore(0x6ac60, addmod(mload(0x6abc0), mload(0x6ac20), f_q)) +{ + let result := mulmod(mload(0x131a0), mload(0x48600), f_q) +mstore(437376, result) + } +mstore(0x6aca0, mulmod(mload(0x6ac80), mload(0x48c80), f_q)) +mstore(0x6acc0, mulmod(sub(f_q, mload(0x6aca0)), mload(0x4c5a0), f_q)) +mstore(0x6ace0, mulmod(mload(0x58e40), mload(0x4c5a0), f_q)) +mstore(0x6ad00, addmod(mload(0x6ac60), mload(0x6acc0), f_q)) +{ + let result := mulmod(mload(0x131c0), mload(0x48600), f_q) +mstore(437536, result) + } +mstore(0x6ad40, mulmod(mload(0x6ad20), mload(0x48c80), f_q)) +mstore(0x6ad60, mulmod(sub(f_q, mload(0x6ad40)), mload(0x4c5c0), f_q)) +mstore(0x6ad80, mulmod(mload(0x58e40), mload(0x4c5c0), f_q)) +mstore(0x6ada0, addmod(mload(0x6ad00), mload(0x6ad60), f_q)) +{ + let result := mulmod(mload(0x131e0), mload(0x48600), f_q) +mstore(437696, result) + } +mstore(0x6ade0, mulmod(mload(0x6adc0), mload(0x48c80), f_q)) +mstore(0x6ae00, mulmod(sub(f_q, mload(0x6ade0)), mload(0x4c5e0), f_q)) +mstore(0x6ae20, mulmod(mload(0x58e40), mload(0x4c5e0), f_q)) +mstore(0x6ae40, addmod(mload(0x6ada0), mload(0x6ae00), f_q)) +{ + let result := mulmod(mload(0x13200), mload(0x48600), f_q) +mstore(437856, result) + } +mstore(0x6ae80, mulmod(mload(0x6ae60), mload(0x48c80), f_q)) +mstore(0x6aea0, mulmod(sub(f_q, mload(0x6ae80)), mload(0x4c600), f_q)) +mstore(0x6aec0, mulmod(mload(0x58e40), mload(0x4c600), f_q)) +mstore(0x6aee0, addmod(mload(0x6ae40), mload(0x6aea0), f_q)) +{ + let result := mulmod(mload(0x13220), mload(0x48600), f_q) +mstore(438016, result) + } +mstore(0x6af20, mulmod(mload(0x6af00), mload(0x48c80), f_q)) +mstore(0x6af40, mulmod(sub(f_q, mload(0x6af20)), mload(0x4c620), f_q)) +mstore(0x6af60, mulmod(mload(0x58e40), mload(0x4c620), f_q)) +mstore(0x6af80, addmod(mload(0x6aee0), mload(0x6af40), f_q)) +{ + let result := mulmod(mload(0x13240), mload(0x48600), f_q) +mstore(438176, result) + } +mstore(0x6afc0, mulmod(mload(0x6afa0), mload(0x48c80), f_q)) +mstore(0x6afe0, mulmod(sub(f_q, mload(0x6afc0)), mload(0x4c640), f_q)) +mstore(0x6b000, mulmod(mload(0x58e40), mload(0x4c640), f_q)) +mstore(0x6b020, addmod(mload(0x6af80), mload(0x6afe0), f_q)) +{ + let result := mulmod(mload(0x13260), mload(0x48600), f_q) +mstore(438336, result) + } +mstore(0x6b060, mulmod(mload(0x6b040), mload(0x48c80), f_q)) +mstore(0x6b080, mulmod(sub(f_q, mload(0x6b060)), mload(0x4c660), f_q)) +mstore(0x6b0a0, mulmod(mload(0x58e40), mload(0x4c660), f_q)) +mstore(0x6b0c0, addmod(mload(0x6b020), mload(0x6b080), f_q)) +{ + let result := mulmod(mload(0x13280), mload(0x48600), f_q) +mstore(438496, result) + } +mstore(0x6b100, mulmod(mload(0x6b0e0), mload(0x48c80), f_q)) +mstore(0x6b120, mulmod(sub(f_q, mload(0x6b100)), mload(0x4c680), f_q)) +mstore(0x6b140, mulmod(mload(0x58e40), mload(0x4c680), f_q)) +mstore(0x6b160, addmod(mload(0x6b0c0), mload(0x6b120), f_q)) +{ + let result := mulmod(mload(0x132a0), mload(0x48600), f_q) +mstore(438656, result) + } +mstore(0x6b1a0, mulmod(mload(0x6b180), mload(0x48c80), f_q)) +mstore(0x6b1c0, mulmod(sub(f_q, mload(0x6b1a0)), mload(0x4c6a0), f_q)) +mstore(0x6b1e0, mulmod(mload(0x58e40), mload(0x4c6a0), f_q)) +mstore(0x6b200, addmod(mload(0x6b160), mload(0x6b1c0), f_q)) +{ + let result := mulmod(mload(0x132c0), mload(0x48600), f_q) +mstore(438816, result) + } +mstore(0x6b240, mulmod(mload(0x6b220), mload(0x48c80), f_q)) +mstore(0x6b260, mulmod(sub(f_q, mload(0x6b240)), mload(0x4c6c0), f_q)) +mstore(0x6b280, mulmod(mload(0x58e40), mload(0x4c6c0), f_q)) +mstore(0x6b2a0, addmod(mload(0x6b200), mload(0x6b260), f_q)) +{ + let result := mulmod(mload(0x132e0), mload(0x48600), f_q) +mstore(438976, result) + } +mstore(0x6b2e0, mulmod(mload(0x6b2c0), mload(0x48c80), f_q)) +mstore(0x6b300, mulmod(sub(f_q, mload(0x6b2e0)), mload(0x4c6e0), f_q)) +mstore(0x6b320, mulmod(mload(0x58e40), mload(0x4c6e0), f_q)) +mstore(0x6b340, addmod(mload(0x6b2a0), mload(0x6b300), f_q)) +{ + let result := mulmod(mload(0x13300), mload(0x48600), f_q) +mstore(439136, result) + } +mstore(0x6b380, mulmod(mload(0x6b360), mload(0x48c80), f_q)) +mstore(0x6b3a0, mulmod(sub(f_q, mload(0x6b380)), mload(0x4c700), f_q)) +mstore(0x6b3c0, mulmod(mload(0x58e40), mload(0x4c700), f_q)) +mstore(0x6b3e0, addmod(mload(0x6b340), mload(0x6b3a0), f_q)) +{ + let result := mulmod(mload(0x13320), mload(0x48600), f_q) +mstore(439296, result) + } +mstore(0x6b420, mulmod(mload(0x6b400), mload(0x48c80), f_q)) +mstore(0x6b440, mulmod(sub(f_q, mload(0x6b420)), mload(0x4c720), f_q)) +mstore(0x6b460, mulmod(mload(0x58e40), mload(0x4c720), f_q)) +mstore(0x6b480, addmod(mload(0x6b3e0), mload(0x6b440), f_q)) +{ + let result := mulmod(mload(0x13340), mload(0x48600), f_q) +mstore(439456, result) + } +mstore(0x6b4c0, mulmod(mload(0x6b4a0), mload(0x48c80), f_q)) +mstore(0x6b4e0, mulmod(sub(f_q, mload(0x6b4c0)), mload(0x4c740), f_q)) +mstore(0x6b500, mulmod(mload(0x58e40), mload(0x4c740), f_q)) +mstore(0x6b520, addmod(mload(0x6b480), mload(0x6b4e0), f_q)) +{ + let result := mulmod(mload(0x13360), mload(0x48600), f_q) +mstore(439616, result) + } +mstore(0x6b560, mulmod(mload(0x6b540), mload(0x48c80), f_q)) +mstore(0x6b580, mulmod(sub(f_q, mload(0x6b560)), mload(0x4c760), f_q)) +mstore(0x6b5a0, mulmod(mload(0x58e40), mload(0x4c760), f_q)) +mstore(0x6b5c0, addmod(mload(0x6b520), mload(0x6b580), f_q)) +{ + let result := mulmod(mload(0x13380), mload(0x48600), f_q) +mstore(439776, result) + } +mstore(0x6b600, mulmod(mload(0x6b5e0), mload(0x48c80), f_q)) +mstore(0x6b620, mulmod(sub(f_q, mload(0x6b600)), mload(0x4c780), f_q)) +mstore(0x6b640, mulmod(mload(0x58e40), mload(0x4c780), f_q)) +mstore(0x6b660, addmod(mload(0x6b5c0), mload(0x6b620), f_q)) +{ + let result := mulmod(mload(0x133a0), mload(0x48600), f_q) +mstore(439936, result) + } +mstore(0x6b6a0, mulmod(mload(0x6b680), mload(0x48c80), f_q)) +mstore(0x6b6c0, mulmod(sub(f_q, mload(0x6b6a0)), mload(0x4c7a0), f_q)) +mstore(0x6b6e0, mulmod(mload(0x58e40), mload(0x4c7a0), f_q)) +mstore(0x6b700, addmod(mload(0x6b660), mload(0x6b6c0), f_q)) +{ + let result := mulmod(mload(0x133c0), mload(0x48600), f_q) +mstore(440096, result) + } +mstore(0x6b740, mulmod(mload(0x6b720), mload(0x48c80), f_q)) +mstore(0x6b760, mulmod(sub(f_q, mload(0x6b740)), mload(0x4c7c0), f_q)) +mstore(0x6b780, mulmod(mload(0x58e40), mload(0x4c7c0), f_q)) +mstore(0x6b7a0, addmod(mload(0x6b700), mload(0x6b760), f_q)) +{ + let result := mulmod(mload(0x133e0), mload(0x48600), f_q) +mstore(440256, result) + } +mstore(0x6b7e0, mulmod(mload(0x6b7c0), mload(0x48c80), f_q)) +mstore(0x6b800, mulmod(sub(f_q, mload(0x6b7e0)), mload(0x4c7e0), f_q)) +mstore(0x6b820, mulmod(mload(0x58e40), mload(0x4c7e0), f_q)) +mstore(0x6b840, addmod(mload(0x6b7a0), mload(0x6b800), f_q)) +{ + let result := mulmod(mload(0x13400), mload(0x48600), f_q) +mstore(440416, result) + } +mstore(0x6b880, mulmod(mload(0x6b860), mload(0x48c80), f_q)) +mstore(0x6b8a0, mulmod(sub(f_q, mload(0x6b880)), mload(0x4c800), f_q)) +mstore(0x6b8c0, mulmod(mload(0x58e40), mload(0x4c800), f_q)) +mstore(0x6b8e0, addmod(mload(0x6b840), mload(0x6b8a0), f_q)) +{ + let result := mulmod(mload(0x13420), mload(0x48600), f_q) +mstore(440576, result) + } +mstore(0x6b920, mulmod(mload(0x6b900), mload(0x48c80), f_q)) +mstore(0x6b940, mulmod(sub(f_q, mload(0x6b920)), mload(0x4c820), f_q)) +mstore(0x6b960, mulmod(mload(0x58e40), mload(0x4c820), f_q)) +mstore(0x6b980, addmod(mload(0x6b8e0), mload(0x6b940), f_q)) +{ + let result := mulmod(mload(0x13440), mload(0x48600), f_q) +mstore(440736, result) + } +mstore(0x6b9c0, mulmod(mload(0x6b9a0), mload(0x48c80), f_q)) +mstore(0x6b9e0, mulmod(sub(f_q, mload(0x6b9c0)), mload(0x4c840), f_q)) +mstore(0x6ba00, mulmod(mload(0x58e40), mload(0x4c840), f_q)) +mstore(0x6ba20, addmod(mload(0x6b980), mload(0x6b9e0), f_q)) +{ + let result := mulmod(mload(0x13460), mload(0x48600), f_q) +mstore(440896, result) + } +mstore(0x6ba60, mulmod(mload(0x6ba40), mload(0x48c80), f_q)) +mstore(0x6ba80, mulmod(sub(f_q, mload(0x6ba60)), mload(0x4c860), f_q)) +mstore(0x6baa0, mulmod(mload(0x58e40), mload(0x4c860), f_q)) +mstore(0x6bac0, addmod(mload(0x6ba20), mload(0x6ba80), f_q)) +{ + let result := mulmod(mload(0x13480), mload(0x48600), f_q) +mstore(441056, result) + } +mstore(0x6bb00, mulmod(mload(0x6bae0), mload(0x48c80), f_q)) +mstore(0x6bb20, mulmod(sub(f_q, mload(0x6bb00)), mload(0x4c880), f_q)) +mstore(0x6bb40, mulmod(mload(0x58e40), mload(0x4c880), f_q)) +mstore(0x6bb60, addmod(mload(0x6bac0), mload(0x6bb20), f_q)) +{ + let result := mulmod(mload(0x134a0), mload(0x48600), f_q) +mstore(441216, result) + } +mstore(0x6bba0, mulmod(mload(0x6bb80), mload(0x48c80), f_q)) +mstore(0x6bbc0, mulmod(sub(f_q, mload(0x6bba0)), mload(0x4c8a0), f_q)) +mstore(0x6bbe0, mulmod(mload(0x58e40), mload(0x4c8a0), f_q)) +mstore(0x6bc00, addmod(mload(0x6bb60), mload(0x6bbc0), f_q)) +{ + let result := mulmod(mload(0x134c0), mload(0x48600), f_q) +mstore(441376, result) + } +mstore(0x6bc40, mulmod(mload(0x6bc20), mload(0x48c80), f_q)) +mstore(0x6bc60, mulmod(sub(f_q, mload(0x6bc40)), mload(0x4c8c0), f_q)) +mstore(0x6bc80, mulmod(mload(0x58e40), mload(0x4c8c0), f_q)) +mstore(0x6bca0, addmod(mload(0x6bc00), mload(0x6bc60), f_q)) +{ + let result := mulmod(mload(0x134e0), mload(0x48600), f_q) +mstore(441536, result) + } +mstore(0x6bce0, mulmod(mload(0x6bcc0), mload(0x48c80), f_q)) +mstore(0x6bd00, mulmod(sub(f_q, mload(0x6bce0)), mload(0x4c8e0), f_q)) +mstore(0x6bd20, mulmod(mload(0x58e40), mload(0x4c8e0), f_q)) +mstore(0x6bd40, addmod(mload(0x6bca0), mload(0x6bd00), f_q)) +{ + let result := mulmod(mload(0x13500), mload(0x48600), f_q) +mstore(441696, result) + } +mstore(0x6bd80, mulmod(mload(0x6bd60), mload(0x48c80), f_q)) +mstore(0x6bda0, mulmod(sub(f_q, mload(0x6bd80)), mload(0x4c900), f_q)) +mstore(0x6bdc0, mulmod(mload(0x58e40), mload(0x4c900), f_q)) +mstore(0x6bde0, addmod(mload(0x6bd40), mload(0x6bda0), f_q)) +{ + let result := mulmod(mload(0x13520), mload(0x48600), f_q) +mstore(441856, result) + } +mstore(0x6be20, mulmod(mload(0x6be00), mload(0x48c80), f_q)) +mstore(0x6be40, mulmod(sub(f_q, mload(0x6be20)), mload(0x4c920), f_q)) +mstore(0x6be60, mulmod(mload(0x58e40), mload(0x4c920), f_q)) +mstore(0x6be80, addmod(mload(0x6bde0), mload(0x6be40), f_q)) +{ + let result := mulmod(mload(0x13540), mload(0x48600), f_q) +mstore(442016, result) + } +mstore(0x6bec0, mulmod(mload(0x6bea0), mload(0x48c80), f_q)) +mstore(0x6bee0, mulmod(sub(f_q, mload(0x6bec0)), mload(0x4c940), f_q)) +mstore(0x6bf00, mulmod(mload(0x58e40), mload(0x4c940), f_q)) +mstore(0x6bf20, addmod(mload(0x6be80), mload(0x6bee0), f_q)) +{ + let result := mulmod(mload(0x13560), mload(0x48600), f_q) +mstore(442176, result) + } +mstore(0x6bf60, mulmod(mload(0x6bf40), mload(0x48c80), f_q)) +mstore(0x6bf80, mulmod(sub(f_q, mload(0x6bf60)), mload(0x4c960), f_q)) +mstore(0x6bfa0, mulmod(mload(0x58e40), mload(0x4c960), f_q)) +mstore(0x6bfc0, addmod(mload(0x6bf20), mload(0x6bf80), f_q)) +{ + let result := mulmod(mload(0x13580), mload(0x48600), f_q) +mstore(442336, result) + } +mstore(0x6c000, mulmod(mload(0x6bfe0), mload(0x48c80), f_q)) +mstore(0x6c020, mulmod(sub(f_q, mload(0x6c000)), mload(0x4c980), f_q)) +mstore(0x6c040, mulmod(mload(0x58e40), mload(0x4c980), f_q)) +mstore(0x6c060, addmod(mload(0x6bfc0), mload(0x6c020), f_q)) +{ + let result := mulmod(mload(0x135a0), mload(0x48600), f_q) +mstore(442496, result) + } +mstore(0x6c0a0, mulmod(mload(0x6c080), mload(0x48c80), f_q)) +mstore(0x6c0c0, mulmod(sub(f_q, mload(0x6c0a0)), mload(0x4c9a0), f_q)) +mstore(0x6c0e0, mulmod(mload(0x58e40), mload(0x4c9a0), f_q)) +mstore(0x6c100, addmod(mload(0x6c060), mload(0x6c0c0), f_q)) +{ + let result := mulmod(mload(0x135c0), mload(0x48600), f_q) +mstore(442656, result) + } +mstore(0x6c140, mulmod(mload(0x6c120), mload(0x48c80), f_q)) +mstore(0x6c160, mulmod(sub(f_q, mload(0x6c140)), mload(0x4c9c0), f_q)) +mstore(0x6c180, mulmod(mload(0x58e40), mload(0x4c9c0), f_q)) +mstore(0x6c1a0, addmod(mload(0x6c100), mload(0x6c160), f_q)) +{ + let result := mulmod(mload(0x135e0), mload(0x48600), f_q) +mstore(442816, result) + } +mstore(0x6c1e0, mulmod(mload(0x6c1c0), mload(0x48c80), f_q)) +mstore(0x6c200, mulmod(sub(f_q, mload(0x6c1e0)), mload(0x4c9e0), f_q)) +mstore(0x6c220, mulmod(mload(0x58e40), mload(0x4c9e0), f_q)) +mstore(0x6c240, addmod(mload(0x6c1a0), mload(0x6c200), f_q)) +{ + let result := mulmod(mload(0x13600), mload(0x48600), f_q) +mstore(442976, result) + } +mstore(0x6c280, mulmod(mload(0x6c260), mload(0x48c80), f_q)) +mstore(0x6c2a0, mulmod(sub(f_q, mload(0x6c280)), mload(0x4ca00), f_q)) +mstore(0x6c2c0, mulmod(mload(0x58e40), mload(0x4ca00), f_q)) +mstore(0x6c2e0, addmod(mload(0x6c240), mload(0x6c2a0), f_q)) +{ + let result := mulmod(mload(0x13620), mload(0x48600), f_q) +mstore(443136, result) + } +mstore(0x6c320, mulmod(mload(0x6c300), mload(0x48c80), f_q)) +mstore(0x6c340, mulmod(sub(f_q, mload(0x6c320)), mload(0x4ca20), f_q)) +mstore(0x6c360, mulmod(mload(0x58e40), mload(0x4ca20), f_q)) +mstore(0x6c380, addmod(mload(0x6c2e0), mload(0x6c340), f_q)) +{ + let result := mulmod(mload(0x13640), mload(0x48600), f_q) +mstore(443296, result) + } +mstore(0x6c3c0, mulmod(mload(0x6c3a0), mload(0x48c80), f_q)) +mstore(0x6c3e0, mulmod(sub(f_q, mload(0x6c3c0)), mload(0x4ca40), f_q)) +mstore(0x6c400, mulmod(mload(0x58e40), mload(0x4ca40), f_q)) +mstore(0x6c420, addmod(mload(0x6c380), mload(0x6c3e0), f_q)) +{ + let result := mulmod(mload(0x13660), mload(0x48600), f_q) +mstore(443456, result) + } +mstore(0x6c460, mulmod(mload(0x6c440), mload(0x48c80), f_q)) +mstore(0x6c480, mulmod(sub(f_q, mload(0x6c460)), mload(0x4ca60), f_q)) +mstore(0x6c4a0, mulmod(mload(0x58e40), mload(0x4ca60), f_q)) +mstore(0x6c4c0, addmod(mload(0x6c420), mload(0x6c480), f_q)) +{ + let result := mulmod(mload(0x13680), mload(0x48600), f_q) +mstore(443616, result) + } +mstore(0x6c500, mulmod(mload(0x6c4e0), mload(0x48c80), f_q)) +mstore(0x6c520, mulmod(sub(f_q, mload(0x6c500)), mload(0x4ca80), f_q)) +mstore(0x6c540, mulmod(mload(0x58e40), mload(0x4ca80), f_q)) +mstore(0x6c560, addmod(mload(0x6c4c0), mload(0x6c520), f_q)) +{ + let result := mulmod(mload(0x136a0), mload(0x48600), f_q) +mstore(443776, result) + } +mstore(0x6c5a0, mulmod(mload(0x6c580), mload(0x48c80), f_q)) +mstore(0x6c5c0, mulmod(sub(f_q, mload(0x6c5a0)), mload(0x4caa0), f_q)) +mstore(0x6c5e0, mulmod(mload(0x58e40), mload(0x4caa0), f_q)) +mstore(0x6c600, addmod(mload(0x6c560), mload(0x6c5c0), f_q)) +{ + let result := mulmod(mload(0x136c0), mload(0x48600), f_q) +mstore(443936, result) + } +mstore(0x6c640, mulmod(mload(0x6c620), mload(0x48c80), f_q)) +mstore(0x6c660, mulmod(sub(f_q, mload(0x6c640)), mload(0x4cac0), f_q)) +mstore(0x6c680, mulmod(mload(0x58e40), mload(0x4cac0), f_q)) +mstore(0x6c6a0, addmod(mload(0x6c600), mload(0x6c660), f_q)) +{ + let result := mulmod(mload(0x136e0), mload(0x48600), f_q) +mstore(444096, result) + } +mstore(0x6c6e0, mulmod(mload(0x6c6c0), mload(0x48c80), f_q)) +mstore(0x6c700, mulmod(sub(f_q, mload(0x6c6e0)), mload(0x4cae0), f_q)) +mstore(0x6c720, mulmod(mload(0x58e40), mload(0x4cae0), f_q)) +mstore(0x6c740, addmod(mload(0x6c6a0), mload(0x6c700), f_q)) +{ + let result := mulmod(mload(0x13700), mload(0x48600), f_q) +mstore(444256, result) + } +mstore(0x6c780, mulmod(mload(0x6c760), mload(0x48c80), f_q)) +mstore(0x6c7a0, mulmod(sub(f_q, mload(0x6c780)), mload(0x4cb00), f_q)) +mstore(0x6c7c0, mulmod(mload(0x58e40), mload(0x4cb00), f_q)) +mstore(0x6c7e0, addmod(mload(0x6c740), mload(0x6c7a0), f_q)) +{ + let result := mulmod(mload(0x13720), mload(0x48600), f_q) +mstore(444416, result) + } +mstore(0x6c820, mulmod(mload(0x6c800), mload(0x48c80), f_q)) +mstore(0x6c840, mulmod(sub(f_q, mload(0x6c820)), mload(0x4cb20), f_q)) +mstore(0x6c860, mulmod(mload(0x58e40), mload(0x4cb20), f_q)) +mstore(0x6c880, addmod(mload(0x6c7e0), mload(0x6c840), f_q)) +{ + let result := mulmod(mload(0x13740), mload(0x48600), f_q) +mstore(444576, result) + } +mstore(0x6c8c0, mulmod(mload(0x6c8a0), mload(0x48c80), f_q)) +mstore(0x6c8e0, mulmod(sub(f_q, mload(0x6c8c0)), mload(0x4cb40), f_q)) +mstore(0x6c900, mulmod(mload(0x58e40), mload(0x4cb40), f_q)) +mstore(0x6c920, addmod(mload(0x6c880), mload(0x6c8e0), f_q)) +{ + let result := mulmod(mload(0x13760), mload(0x48600), f_q) +mstore(444736, result) + } +mstore(0x6c960, mulmod(mload(0x6c940), mload(0x48c80), f_q)) +mstore(0x6c980, mulmod(sub(f_q, mload(0x6c960)), mload(0x4cb60), f_q)) +mstore(0x6c9a0, mulmod(mload(0x58e40), mload(0x4cb60), f_q)) +mstore(0x6c9c0, addmod(mload(0x6c920), mload(0x6c980), f_q)) +{ + let result := mulmod(mload(0x13780), mload(0x48600), f_q) +mstore(444896, result) + } +mstore(0x6ca00, mulmod(mload(0x6c9e0), mload(0x48c80), f_q)) +mstore(0x6ca20, mulmod(sub(f_q, mload(0x6ca00)), mload(0x4cb80), f_q)) +mstore(0x6ca40, mulmod(mload(0x58e40), mload(0x4cb80), f_q)) +mstore(0x6ca60, addmod(mload(0x6c9c0), mload(0x6ca20), f_q)) +{ + let result := mulmod(mload(0x137a0), mload(0x48600), f_q) +mstore(445056, result) + } +mstore(0x6caa0, mulmod(mload(0x6ca80), mload(0x48c80), f_q)) +mstore(0x6cac0, mulmod(sub(f_q, mload(0x6caa0)), mload(0x4cba0), f_q)) +mstore(0x6cae0, mulmod(mload(0x58e40), mload(0x4cba0), f_q)) +mstore(0x6cb00, addmod(mload(0x6ca60), mload(0x6cac0), f_q)) +{ + let result := mulmod(mload(0x137c0), mload(0x48600), f_q) +mstore(445216, result) + } +mstore(0x6cb40, mulmod(mload(0x6cb20), mload(0x48c80), f_q)) +mstore(0x6cb60, mulmod(sub(f_q, mload(0x6cb40)), mload(0x4cbc0), f_q)) +mstore(0x6cb80, mulmod(mload(0x58e40), mload(0x4cbc0), f_q)) +mstore(0x6cba0, addmod(mload(0x6cb00), mload(0x6cb60), f_q)) +{ + let result := mulmod(mload(0x137e0), mload(0x48600), f_q) +mstore(445376, result) + } +mstore(0x6cbe0, mulmod(mload(0x6cbc0), mload(0x48c80), f_q)) +mstore(0x6cc00, mulmod(sub(f_q, mload(0x6cbe0)), mload(0x4cbe0), f_q)) +mstore(0x6cc20, mulmod(mload(0x58e40), mload(0x4cbe0), f_q)) +mstore(0x6cc40, addmod(mload(0x6cba0), mload(0x6cc00), f_q)) +{ + let result := mulmod(mload(0x13800), mload(0x48600), f_q) +mstore(445536, result) + } +mstore(0x6cc80, mulmod(mload(0x6cc60), mload(0x48c80), f_q)) +mstore(0x6cca0, mulmod(sub(f_q, mload(0x6cc80)), mload(0x4cc00), f_q)) +mstore(0x6ccc0, mulmod(mload(0x58e40), mload(0x4cc00), f_q)) +mstore(0x6cce0, addmod(mload(0x6cc40), mload(0x6cca0), f_q)) +{ + let result := mulmod(mload(0x13820), mload(0x48600), f_q) +mstore(445696, result) + } +mstore(0x6cd20, mulmod(mload(0x6cd00), mload(0x48c80), f_q)) +mstore(0x6cd40, mulmod(sub(f_q, mload(0x6cd20)), mload(0x4cc20), f_q)) +mstore(0x6cd60, mulmod(mload(0x58e40), mload(0x4cc20), f_q)) +mstore(0x6cd80, addmod(mload(0x6cce0), mload(0x6cd40), f_q)) +{ + let result := mulmod(mload(0x13840), mload(0x48600), f_q) +mstore(445856, result) + } +mstore(0x6cdc0, mulmod(mload(0x6cda0), mload(0x48c80), f_q)) +mstore(0x6cde0, mulmod(sub(f_q, mload(0x6cdc0)), mload(0x4cc40), f_q)) +mstore(0x6ce00, mulmod(mload(0x58e40), mload(0x4cc40), f_q)) +mstore(0x6ce20, addmod(mload(0x6cd80), mload(0x6cde0), f_q)) +{ + let result := mulmod(mload(0x13860), mload(0x48600), f_q) +mstore(446016, result) + } +mstore(0x6ce60, mulmod(mload(0x6ce40), mload(0x48c80), f_q)) +mstore(0x6ce80, mulmod(sub(f_q, mload(0x6ce60)), mload(0x4cc60), f_q)) +mstore(0x6cea0, mulmod(mload(0x58e40), mload(0x4cc60), f_q)) +mstore(0x6cec0, addmod(mload(0x6ce20), mload(0x6ce80), f_q)) +{ + let result := mulmod(mload(0x13880), mload(0x48600), f_q) +mstore(446176, result) + } +mstore(0x6cf00, mulmod(mload(0x6cee0), mload(0x48c80), f_q)) +mstore(0x6cf20, mulmod(sub(f_q, mload(0x6cf00)), mload(0x4cc80), f_q)) +mstore(0x6cf40, mulmod(mload(0x58e40), mload(0x4cc80), f_q)) +mstore(0x6cf60, addmod(mload(0x6cec0), mload(0x6cf20), f_q)) +{ + let result := mulmod(mload(0x138a0), mload(0x48600), f_q) +mstore(446336, result) + } +mstore(0x6cfa0, mulmod(mload(0x6cf80), mload(0x48c80), f_q)) +mstore(0x6cfc0, mulmod(sub(f_q, mload(0x6cfa0)), mload(0x4cca0), f_q)) +mstore(0x6cfe0, mulmod(mload(0x58e40), mload(0x4cca0), f_q)) +mstore(0x6d000, addmod(mload(0x6cf60), mload(0x6cfc0), f_q)) +{ + let result := mulmod(mload(0x138c0), mload(0x48600), f_q) +mstore(446496, result) + } +mstore(0x6d040, mulmod(mload(0x6d020), mload(0x48c80), f_q)) +mstore(0x6d060, mulmod(sub(f_q, mload(0x6d040)), mload(0x4ccc0), f_q)) +mstore(0x6d080, mulmod(mload(0x58e40), mload(0x4ccc0), f_q)) +mstore(0x6d0a0, addmod(mload(0x6d000), mload(0x6d060), f_q)) +{ + let result := mulmod(mload(0x138e0), mload(0x48600), f_q) +mstore(446656, result) + } +mstore(0x6d0e0, mulmod(mload(0x6d0c0), mload(0x48c80), f_q)) +mstore(0x6d100, mulmod(sub(f_q, mload(0x6d0e0)), mload(0x4cce0), f_q)) +mstore(0x6d120, mulmod(mload(0x58e40), mload(0x4cce0), f_q)) +mstore(0x6d140, addmod(mload(0x6d0a0), mload(0x6d100), f_q)) +{ + let result := mulmod(mload(0x13900), mload(0x48600), f_q) +mstore(446816, result) + } +mstore(0x6d180, mulmod(mload(0x6d160), mload(0x48c80), f_q)) +mstore(0x6d1a0, mulmod(sub(f_q, mload(0x6d180)), mload(0x4cd00), f_q)) +mstore(0x6d1c0, mulmod(mload(0x58e40), mload(0x4cd00), f_q)) +mstore(0x6d1e0, addmod(mload(0x6d140), mload(0x6d1a0), f_q)) +{ + let result := mulmod(mload(0x13920), mload(0x48600), f_q) +mstore(446976, result) + } +mstore(0x6d220, mulmod(mload(0x6d200), mload(0x48c80), f_q)) +mstore(0x6d240, mulmod(sub(f_q, mload(0x6d220)), mload(0x4cd20), f_q)) +mstore(0x6d260, mulmod(mload(0x58e40), mload(0x4cd20), f_q)) +mstore(0x6d280, addmod(mload(0x6d1e0), mload(0x6d240), f_q)) +{ + let result := mulmod(mload(0x13940), mload(0x48600), f_q) +mstore(447136, result) + } +mstore(0x6d2c0, mulmod(mload(0x6d2a0), mload(0x48c80), f_q)) +mstore(0x6d2e0, mulmod(sub(f_q, mload(0x6d2c0)), mload(0x4cd40), f_q)) +mstore(0x6d300, mulmod(mload(0x58e40), mload(0x4cd40), f_q)) +mstore(0x6d320, addmod(mload(0x6d280), mload(0x6d2e0), f_q)) +{ + let result := mulmod(mload(0x13960), mload(0x48600), f_q) +mstore(447296, result) + } +mstore(0x6d360, mulmod(mload(0x6d340), mload(0x48c80), f_q)) +mstore(0x6d380, mulmod(sub(f_q, mload(0x6d360)), mload(0x4cd60), f_q)) +mstore(0x6d3a0, mulmod(mload(0x58e40), mload(0x4cd60), f_q)) +mstore(0x6d3c0, addmod(mload(0x6d320), mload(0x6d380), f_q)) +{ + let result := mulmod(mload(0x13980), mload(0x48600), f_q) +mstore(447456, result) + } +mstore(0x6d400, mulmod(mload(0x6d3e0), mload(0x48c80), f_q)) +mstore(0x6d420, mulmod(sub(f_q, mload(0x6d400)), mload(0x4cd80), f_q)) +mstore(0x6d440, mulmod(mload(0x58e40), mload(0x4cd80), f_q)) +mstore(0x6d460, addmod(mload(0x6d3c0), mload(0x6d420), f_q)) +{ + let result := mulmod(mload(0x139a0), mload(0x48600), f_q) +mstore(447616, result) + } +mstore(0x6d4a0, mulmod(mload(0x6d480), mload(0x48c80), f_q)) +mstore(0x6d4c0, mulmod(sub(f_q, mload(0x6d4a0)), mload(0x4cda0), f_q)) +mstore(0x6d4e0, mulmod(mload(0x58e40), mload(0x4cda0), f_q)) +mstore(0x6d500, addmod(mload(0x6d460), mload(0x6d4c0), f_q)) +{ + let result := mulmod(mload(0x139c0), mload(0x48600), f_q) +mstore(447776, result) + } +mstore(0x6d540, mulmod(mload(0x6d520), mload(0x48c80), f_q)) +mstore(0x6d560, mulmod(sub(f_q, mload(0x6d540)), mload(0x4cdc0), f_q)) +mstore(0x6d580, mulmod(mload(0x58e40), mload(0x4cdc0), f_q)) +mstore(0x6d5a0, addmod(mload(0x6d500), mload(0x6d560), f_q)) +{ + let result := mulmod(mload(0x139e0), mload(0x48600), f_q) +mstore(447936, result) + } +mstore(0x6d5e0, mulmod(mload(0x6d5c0), mload(0x48c80), f_q)) +mstore(0x6d600, mulmod(sub(f_q, mload(0x6d5e0)), mload(0x4cde0), f_q)) +mstore(0x6d620, mulmod(mload(0x58e40), mload(0x4cde0), f_q)) +mstore(0x6d640, addmod(mload(0x6d5a0), mload(0x6d600), f_q)) +{ + let result := mulmod(mload(0x13a00), mload(0x48600), f_q) +mstore(448096, result) + } +mstore(0x6d680, mulmod(mload(0x6d660), mload(0x48c80), f_q)) +mstore(0x6d6a0, mulmod(sub(f_q, mload(0x6d680)), mload(0x4ce00), f_q)) +mstore(0x6d6c0, mulmod(mload(0x58e40), mload(0x4ce00), f_q)) +mstore(0x6d6e0, addmod(mload(0x6d640), mload(0x6d6a0), f_q)) +{ + let result := mulmod(mload(0x13a20), mload(0x48600), f_q) +mstore(448256, result) + } +mstore(0x6d720, mulmod(mload(0x6d700), mload(0x48c80), f_q)) +mstore(0x6d740, mulmod(sub(f_q, mload(0x6d720)), mload(0x4ce20), f_q)) +mstore(0x6d760, mulmod(mload(0x58e40), mload(0x4ce20), f_q)) +mstore(0x6d780, addmod(mload(0x6d6e0), mload(0x6d740), f_q)) +{ + let result := mulmod(mload(0x13a40), mload(0x48600), f_q) +mstore(448416, result) + } +mstore(0x6d7c0, mulmod(mload(0x6d7a0), mload(0x48c80), f_q)) +mstore(0x6d7e0, mulmod(sub(f_q, mload(0x6d7c0)), mload(0x4ce40), f_q)) +mstore(0x6d800, mulmod(mload(0x58e40), mload(0x4ce40), f_q)) +mstore(0x6d820, addmod(mload(0x6d780), mload(0x6d7e0), f_q)) +{ + let result := mulmod(mload(0x13a60), mload(0x48600), f_q) +mstore(448576, result) + } +mstore(0x6d860, mulmod(mload(0x6d840), mload(0x48c80), f_q)) +mstore(0x6d880, mulmod(sub(f_q, mload(0x6d860)), mload(0x4ce60), f_q)) +mstore(0x6d8a0, mulmod(mload(0x58e40), mload(0x4ce60), f_q)) +mstore(0x6d8c0, addmod(mload(0x6d820), mload(0x6d880), f_q)) +{ + let result := mulmod(mload(0x13a80), mload(0x48600), f_q) +mstore(448736, result) + } +mstore(0x6d900, mulmod(mload(0x6d8e0), mload(0x48c80), f_q)) +mstore(0x6d920, mulmod(sub(f_q, mload(0x6d900)), mload(0x4ce80), f_q)) +mstore(0x6d940, mulmod(mload(0x58e40), mload(0x4ce80), f_q)) +mstore(0x6d960, addmod(mload(0x6d8c0), mload(0x6d920), f_q)) +{ + let result := mulmod(mload(0x13aa0), mload(0x48600), f_q) +mstore(448896, result) + } +mstore(0x6d9a0, mulmod(mload(0x6d980), mload(0x48c80), f_q)) +mstore(0x6d9c0, mulmod(sub(f_q, mload(0x6d9a0)), mload(0x4cea0), f_q)) +mstore(0x6d9e0, mulmod(mload(0x58e40), mload(0x4cea0), f_q)) +mstore(0x6da00, addmod(mload(0x6d960), mload(0x6d9c0), f_q)) +{ + let result := mulmod(mload(0x13ac0), mload(0x48600), f_q) +mstore(449056, result) + } +mstore(0x6da40, mulmod(mload(0x6da20), mload(0x48c80), f_q)) +mstore(0x6da60, mulmod(sub(f_q, mload(0x6da40)), mload(0x4cec0), f_q)) +mstore(0x6da80, mulmod(mload(0x58e40), mload(0x4cec0), f_q)) +mstore(0x6daa0, addmod(mload(0x6da00), mload(0x6da60), f_q)) +{ + let result := mulmod(mload(0x13ae0), mload(0x48600), f_q) +mstore(449216, result) + } +mstore(0x6dae0, mulmod(mload(0x6dac0), mload(0x48c80), f_q)) +mstore(0x6db00, mulmod(sub(f_q, mload(0x6dae0)), mload(0x4cee0), f_q)) +mstore(0x6db20, mulmod(mload(0x58e40), mload(0x4cee0), f_q)) +mstore(0x6db40, addmod(mload(0x6daa0), mload(0x6db00), f_q)) +{ + let result := mulmod(mload(0x13b00), mload(0x48600), f_q) +mstore(449376, result) + } +mstore(0x6db80, mulmod(mload(0x6db60), mload(0x48c80), f_q)) +mstore(0x6dba0, mulmod(sub(f_q, mload(0x6db80)), mload(0x4cf00), f_q)) +mstore(0x6dbc0, mulmod(mload(0x58e40), mload(0x4cf00), f_q)) +mstore(0x6dbe0, addmod(mload(0x6db40), mload(0x6dba0), f_q)) +{ + let result := mulmod(mload(0x13b20), mload(0x48600), f_q) +mstore(449536, result) + } +mstore(0x6dc20, mulmod(mload(0x6dc00), mload(0x48c80), f_q)) +mstore(0x6dc40, mulmod(sub(f_q, mload(0x6dc20)), mload(0x4cf20), f_q)) +mstore(0x6dc60, mulmod(mload(0x58e40), mload(0x4cf20), f_q)) +mstore(0x6dc80, addmod(mload(0x6dbe0), mload(0x6dc40), f_q)) +{ + let result := mulmod(mload(0x13b40), mload(0x48600), f_q) +mstore(449696, result) + } +mstore(0x6dcc0, mulmod(mload(0x6dca0), mload(0x48c80), f_q)) +mstore(0x6dce0, mulmod(sub(f_q, mload(0x6dcc0)), mload(0x4cf40), f_q)) +mstore(0x6dd00, mulmod(mload(0x58e40), mload(0x4cf40), f_q)) +mstore(0x6dd20, addmod(mload(0x6dc80), mload(0x6dce0), f_q)) +{ + let result := mulmod(mload(0x13b60), mload(0x48600), f_q) +mstore(449856, result) + } +mstore(0x6dd60, mulmod(mload(0x6dd40), mload(0x48c80), f_q)) +mstore(0x6dd80, mulmod(sub(f_q, mload(0x6dd60)), mload(0x4cf60), f_q)) +mstore(0x6dda0, mulmod(mload(0x58e40), mload(0x4cf60), f_q)) +mstore(0x6ddc0, addmod(mload(0x6dd20), mload(0x6dd80), f_q)) +{ + let result := mulmod(mload(0x13b80), mload(0x48600), f_q) +mstore(450016, result) + } +mstore(0x6de00, mulmod(mload(0x6dde0), mload(0x48c80), f_q)) +mstore(0x6de20, mulmod(sub(f_q, mload(0x6de00)), mload(0x4cf80), f_q)) +mstore(0x6de40, mulmod(mload(0x58e40), mload(0x4cf80), f_q)) +mstore(0x6de60, addmod(mload(0x6ddc0), mload(0x6de20), f_q)) +{ + let result := mulmod(mload(0x13ba0), mload(0x48600), f_q) +mstore(450176, result) + } +mstore(0x6dea0, mulmod(mload(0x6de80), mload(0x48c80), f_q)) +mstore(0x6dec0, mulmod(sub(f_q, mload(0x6dea0)), mload(0x4cfa0), f_q)) +mstore(0x6dee0, mulmod(mload(0x58e40), mload(0x4cfa0), f_q)) +mstore(0x6df00, addmod(mload(0x6de60), mload(0x6dec0), f_q)) +{ + let result := mulmod(mload(0x13bc0), mload(0x48600), f_q) +mstore(450336, result) + } +mstore(0x6df40, mulmod(mload(0x6df20), mload(0x48c80), f_q)) +mstore(0x6df60, mulmod(sub(f_q, mload(0x6df40)), mload(0x4cfc0), f_q)) +mstore(0x6df80, mulmod(mload(0x58e40), mload(0x4cfc0), f_q)) +mstore(0x6dfa0, addmod(mload(0x6df00), mload(0x6df60), f_q)) +{ + let result := mulmod(mload(0x13be0), mload(0x48600), f_q) +mstore(450496, result) + } +mstore(0x6dfe0, mulmod(mload(0x6dfc0), mload(0x48c80), f_q)) +mstore(0x6e000, mulmod(sub(f_q, mload(0x6dfe0)), mload(0x4cfe0), f_q)) +mstore(0x6e020, mulmod(mload(0x58e40), mload(0x4cfe0), f_q)) +mstore(0x6e040, addmod(mload(0x6dfa0), mload(0x6e000), f_q)) +{ + let result := mulmod(mload(0x13c00), mload(0x48600), f_q) +mstore(450656, result) + } +mstore(0x6e080, mulmod(mload(0x6e060), mload(0x48c80), f_q)) +mstore(0x6e0a0, mulmod(sub(f_q, mload(0x6e080)), mload(0x4d000), f_q)) +mstore(0x6e0c0, mulmod(mload(0x58e40), mload(0x4d000), f_q)) +mstore(0x6e0e0, addmod(mload(0x6e040), mload(0x6e0a0), f_q)) +{ + let result := mulmod(mload(0x13c20), mload(0x48600), f_q) +mstore(450816, result) + } +mstore(0x6e120, mulmod(mload(0x6e100), mload(0x48c80), f_q)) +mstore(0x6e140, mulmod(sub(f_q, mload(0x6e120)), mload(0x4d020), f_q)) +mstore(0x6e160, mulmod(mload(0x58e40), mload(0x4d020), f_q)) +mstore(0x6e180, addmod(mload(0x6e0e0), mload(0x6e140), f_q)) +{ + let result := mulmod(mload(0x13c40), mload(0x48600), f_q) +mstore(450976, result) + } +mstore(0x6e1c0, mulmod(mload(0x6e1a0), mload(0x48c80), f_q)) +mstore(0x6e1e0, mulmod(sub(f_q, mload(0x6e1c0)), mload(0x4d040), f_q)) +mstore(0x6e200, mulmod(mload(0x58e40), mload(0x4d040), f_q)) +mstore(0x6e220, addmod(mload(0x6e180), mload(0x6e1e0), f_q)) +{ + let result := mulmod(mload(0x13c60), mload(0x48600), f_q) +mstore(451136, result) + } +mstore(0x6e260, mulmod(mload(0x6e240), mload(0x48c80), f_q)) +mstore(0x6e280, mulmod(sub(f_q, mload(0x6e260)), mload(0x4d060), f_q)) +mstore(0x6e2a0, mulmod(mload(0x58e40), mload(0x4d060), f_q)) +mstore(0x6e2c0, addmod(mload(0x6e220), mload(0x6e280), f_q)) +{ + let result := mulmod(mload(0x13c80), mload(0x48600), f_q) +mstore(451296, result) + } +mstore(0x6e300, mulmod(mload(0x6e2e0), mload(0x48c80), f_q)) +mstore(0x6e320, mulmod(sub(f_q, mload(0x6e300)), mload(0x4d080), f_q)) +mstore(0x6e340, mulmod(mload(0x58e40), mload(0x4d080), f_q)) +mstore(0x6e360, addmod(mload(0x6e2c0), mload(0x6e320), f_q)) +{ + let result := mulmod(mload(0x13ca0), mload(0x48600), f_q) +mstore(451456, result) + } +mstore(0x6e3a0, mulmod(mload(0x6e380), mload(0x48c80), f_q)) +mstore(0x6e3c0, mulmod(sub(f_q, mload(0x6e3a0)), mload(0x4d0a0), f_q)) +mstore(0x6e3e0, mulmod(mload(0x58e40), mload(0x4d0a0), f_q)) +mstore(0x6e400, addmod(mload(0x6e360), mload(0x6e3c0), f_q)) +{ + let result := mulmod(mload(0x13cc0), mload(0x48600), f_q) +mstore(451616, result) + } +mstore(0x6e440, mulmod(mload(0x6e420), mload(0x48c80), f_q)) +mstore(0x6e460, mulmod(sub(f_q, mload(0x6e440)), mload(0x4d0c0), f_q)) +mstore(0x6e480, mulmod(mload(0x58e40), mload(0x4d0c0), f_q)) +mstore(0x6e4a0, addmod(mload(0x6e400), mload(0x6e460), f_q)) +{ + let result := mulmod(mload(0x13ce0), mload(0x48600), f_q) +mstore(451776, result) + } +mstore(0x6e4e0, mulmod(mload(0x6e4c0), mload(0x48c80), f_q)) +mstore(0x6e500, mulmod(sub(f_q, mload(0x6e4e0)), mload(0x4d0e0), f_q)) +mstore(0x6e520, mulmod(mload(0x58e40), mload(0x4d0e0), f_q)) +mstore(0x6e540, addmod(mload(0x6e4a0), mload(0x6e500), f_q)) +{ + let result := mulmod(mload(0x13d00), mload(0x48600), f_q) +mstore(451936, result) + } +mstore(0x6e580, mulmod(mload(0x6e560), mload(0x48c80), f_q)) +mstore(0x6e5a0, mulmod(sub(f_q, mload(0x6e580)), mload(0x4d100), f_q)) +mstore(0x6e5c0, mulmod(mload(0x58e40), mload(0x4d100), f_q)) +mstore(0x6e5e0, addmod(mload(0x6e540), mload(0x6e5a0), f_q)) +{ + let result := mulmod(mload(0x13d20), mload(0x48600), f_q) +mstore(452096, result) + } +mstore(0x6e620, mulmod(mload(0x6e600), mload(0x48c80), f_q)) +mstore(0x6e640, mulmod(sub(f_q, mload(0x6e620)), mload(0x4d120), f_q)) +mstore(0x6e660, mulmod(mload(0x58e40), mload(0x4d120), f_q)) +mstore(0x6e680, addmod(mload(0x6e5e0), mload(0x6e640), f_q)) +{ + let result := mulmod(mload(0x13d40), mload(0x48600), f_q) +mstore(452256, result) + } +mstore(0x6e6c0, mulmod(mload(0x6e6a0), mload(0x48c80), f_q)) +mstore(0x6e6e0, mulmod(sub(f_q, mload(0x6e6c0)), mload(0x4d140), f_q)) +mstore(0x6e700, mulmod(mload(0x58e40), mload(0x4d140), f_q)) +mstore(0x6e720, addmod(mload(0x6e680), mload(0x6e6e0), f_q)) +{ + let result := mulmod(mload(0x13d60), mload(0x48600), f_q) +mstore(452416, result) + } +mstore(0x6e760, mulmod(mload(0x6e740), mload(0x48c80), f_q)) +mstore(0x6e780, mulmod(sub(f_q, mload(0x6e760)), mload(0x4d160), f_q)) +mstore(0x6e7a0, mulmod(mload(0x58e40), mload(0x4d160), f_q)) +mstore(0x6e7c0, addmod(mload(0x6e720), mload(0x6e780), f_q)) +{ + let result := mulmod(mload(0x13d80), mload(0x48600), f_q) +mstore(452576, result) + } +mstore(0x6e800, mulmod(mload(0x6e7e0), mload(0x48c80), f_q)) +mstore(0x6e820, mulmod(sub(f_q, mload(0x6e800)), mload(0x4d180), f_q)) +mstore(0x6e840, mulmod(mload(0x58e40), mload(0x4d180), f_q)) +mstore(0x6e860, addmod(mload(0x6e7c0), mload(0x6e820), f_q)) +{ + let result := mulmod(mload(0x13da0), mload(0x48600), f_q) +mstore(452736, result) + } +mstore(0x6e8a0, mulmod(mload(0x6e880), mload(0x48c80), f_q)) +mstore(0x6e8c0, mulmod(sub(f_q, mload(0x6e8a0)), mload(0x4d1a0), f_q)) +mstore(0x6e8e0, mulmod(mload(0x58e40), mload(0x4d1a0), f_q)) +mstore(0x6e900, addmod(mload(0x6e860), mload(0x6e8c0), f_q)) +{ + let result := mulmod(mload(0x13dc0), mload(0x48600), f_q) +mstore(452896, result) + } +mstore(0x6e940, mulmod(mload(0x6e920), mload(0x48c80), f_q)) +mstore(0x6e960, mulmod(sub(f_q, mload(0x6e940)), mload(0x4d1c0), f_q)) +mstore(0x6e980, mulmod(mload(0x58e40), mload(0x4d1c0), f_q)) +mstore(0x6e9a0, addmod(mload(0x6e900), mload(0x6e960), f_q)) +{ + let result := mulmod(mload(0x13de0), mload(0x48600), f_q) +mstore(453056, result) + } +mstore(0x6e9e0, mulmod(mload(0x6e9c0), mload(0x48c80), f_q)) +mstore(0x6ea00, mulmod(sub(f_q, mload(0x6e9e0)), mload(0x4d1e0), f_q)) +mstore(0x6ea20, mulmod(mload(0x58e40), mload(0x4d1e0), f_q)) +mstore(0x6ea40, addmod(mload(0x6e9a0), mload(0x6ea00), f_q)) +{ + let result := mulmod(mload(0x13e00), mload(0x48600), f_q) +mstore(453216, result) + } +mstore(0x6ea80, mulmod(mload(0x6ea60), mload(0x48c80), f_q)) +mstore(0x6eaa0, mulmod(sub(f_q, mload(0x6ea80)), mload(0x4d200), f_q)) +mstore(0x6eac0, mulmod(mload(0x58e40), mload(0x4d200), f_q)) +mstore(0x6eae0, addmod(mload(0x6ea40), mload(0x6eaa0), f_q)) +{ + let result := mulmod(mload(0x13e20), mload(0x48600), f_q) +mstore(453376, result) + } +mstore(0x6eb20, mulmod(mload(0x6eb00), mload(0x48c80), f_q)) +mstore(0x6eb40, mulmod(sub(f_q, mload(0x6eb20)), mload(0x4d220), f_q)) +mstore(0x6eb60, mulmod(mload(0x58e40), mload(0x4d220), f_q)) +mstore(0x6eb80, addmod(mload(0x6eae0), mload(0x6eb40), f_q)) +{ + let result := mulmod(mload(0x13e40), mload(0x48600), f_q) +mstore(453536, result) + } +mstore(0x6ebc0, mulmod(mload(0x6eba0), mload(0x48c80), f_q)) +mstore(0x6ebe0, mulmod(sub(f_q, mload(0x6ebc0)), mload(0x4d240), f_q)) +mstore(0x6ec00, mulmod(mload(0x58e40), mload(0x4d240), f_q)) +mstore(0x6ec20, addmod(mload(0x6eb80), mload(0x6ebe0), f_q)) +{ + let result := mulmod(mload(0x13e60), mload(0x48600), f_q) +mstore(453696, result) + } +mstore(0x6ec60, mulmod(mload(0x6ec40), mload(0x48c80), f_q)) +mstore(0x6ec80, mulmod(sub(f_q, mload(0x6ec60)), mload(0x4d260), f_q)) +mstore(0x6eca0, mulmod(mload(0x58e40), mload(0x4d260), f_q)) +mstore(0x6ecc0, addmod(mload(0x6ec20), mload(0x6ec80), f_q)) +{ + let result := mulmod(mload(0x13e80), mload(0x48600), f_q) +mstore(453856, result) + } +mstore(0x6ed00, mulmod(mload(0x6ece0), mload(0x48c80), f_q)) +mstore(0x6ed20, mulmod(sub(f_q, mload(0x6ed00)), mload(0x4d280), f_q)) +mstore(0x6ed40, mulmod(mload(0x58e40), mload(0x4d280), f_q)) +mstore(0x6ed60, addmod(mload(0x6ecc0), mload(0x6ed20), f_q)) +{ + let result := mulmod(mload(0x13ea0), mload(0x48600), f_q) +mstore(454016, result) + } +mstore(0x6eda0, mulmod(mload(0x6ed80), mload(0x48c80), f_q)) +mstore(0x6edc0, mulmod(sub(f_q, mload(0x6eda0)), mload(0x4d2a0), f_q)) +mstore(0x6ede0, mulmod(mload(0x58e40), mload(0x4d2a0), f_q)) +mstore(0x6ee00, addmod(mload(0x6ed60), mload(0x6edc0), f_q)) +{ + let result := mulmod(mload(0x13ec0), mload(0x48600), f_q) +mstore(454176, result) + } +mstore(0x6ee40, mulmod(mload(0x6ee20), mload(0x48c80), f_q)) +mstore(0x6ee60, mulmod(sub(f_q, mload(0x6ee40)), mload(0x4d2c0), f_q)) +mstore(0x6ee80, mulmod(mload(0x58e40), mload(0x4d2c0), f_q)) +mstore(0x6eea0, addmod(mload(0x6ee00), mload(0x6ee60), f_q)) +{ + let result := mulmod(mload(0x13ee0), mload(0x48600), f_q) +mstore(454336, result) + } +mstore(0x6eee0, mulmod(mload(0x6eec0), mload(0x48c80), f_q)) +mstore(0x6ef00, mulmod(sub(f_q, mload(0x6eee0)), mload(0x4d2e0), f_q)) +mstore(0x6ef20, mulmod(mload(0x58e40), mload(0x4d2e0), f_q)) +mstore(0x6ef40, addmod(mload(0x6eea0), mload(0x6ef00), f_q)) +{ + let result := mulmod(mload(0x13f00), mload(0x48600), f_q) +mstore(454496, result) + } +mstore(0x6ef80, mulmod(mload(0x6ef60), mload(0x48c80), f_q)) +mstore(0x6efa0, mulmod(sub(f_q, mload(0x6ef80)), mload(0x4d300), f_q)) +mstore(0x6efc0, mulmod(mload(0x58e40), mload(0x4d300), f_q)) +mstore(0x6efe0, addmod(mload(0x6ef40), mload(0x6efa0), f_q)) +{ + let result := mulmod(mload(0x13f20), mload(0x48600), f_q) +mstore(454656, result) + } +mstore(0x6f020, mulmod(mload(0x6f000), mload(0x48c80), f_q)) +mstore(0x6f040, mulmod(sub(f_q, mload(0x6f020)), mload(0x4d320), f_q)) +mstore(0x6f060, mulmod(mload(0x58e40), mload(0x4d320), f_q)) +mstore(0x6f080, addmod(mload(0x6efe0), mload(0x6f040), f_q)) +{ + let result := mulmod(mload(0x13f40), mload(0x48600), f_q) +mstore(454816, result) + } +mstore(0x6f0c0, mulmod(mload(0x6f0a0), mload(0x48c80), f_q)) +mstore(0x6f0e0, mulmod(sub(f_q, mload(0x6f0c0)), mload(0x4d340), f_q)) +mstore(0x6f100, mulmod(mload(0x58e40), mload(0x4d340), f_q)) +mstore(0x6f120, addmod(mload(0x6f080), mload(0x6f0e0), f_q)) +{ + let result := mulmod(mload(0x13f60), mload(0x48600), f_q) +mstore(454976, result) + } +mstore(0x6f160, mulmod(mload(0x6f140), mload(0x48c80), f_q)) +mstore(0x6f180, mulmod(sub(f_q, mload(0x6f160)), mload(0x4d360), f_q)) +mstore(0x6f1a0, mulmod(mload(0x58e40), mload(0x4d360), f_q)) +mstore(0x6f1c0, addmod(mload(0x6f120), mload(0x6f180), f_q)) +{ + let result := mulmod(mload(0x13f80), mload(0x48600), f_q) +mstore(455136, result) + } +mstore(0x6f200, mulmod(mload(0x6f1e0), mload(0x48c80), f_q)) +mstore(0x6f220, mulmod(sub(f_q, mload(0x6f200)), mload(0x4d380), f_q)) +mstore(0x6f240, mulmod(mload(0x58e40), mload(0x4d380), f_q)) +mstore(0x6f260, addmod(mload(0x6f1c0), mload(0x6f220), f_q)) +{ + let result := mulmod(mload(0x13fa0), mload(0x48600), f_q) +mstore(455296, result) + } +mstore(0x6f2a0, mulmod(mload(0x6f280), mload(0x48c80), f_q)) +mstore(0x6f2c0, mulmod(sub(f_q, mload(0x6f2a0)), mload(0x4d3a0), f_q)) +mstore(0x6f2e0, mulmod(mload(0x58e40), mload(0x4d3a0), f_q)) +mstore(0x6f300, addmod(mload(0x6f260), mload(0x6f2c0), f_q)) +{ + let result := mulmod(mload(0x13fc0), mload(0x48600), f_q) +mstore(455456, result) + } +mstore(0x6f340, mulmod(mload(0x6f320), mload(0x48c80), f_q)) +mstore(0x6f360, mulmod(sub(f_q, mload(0x6f340)), mload(0x4d3c0), f_q)) +mstore(0x6f380, mulmod(mload(0x58e40), mload(0x4d3c0), f_q)) +mstore(0x6f3a0, addmod(mload(0x6f300), mload(0x6f360), f_q)) +{ + let result := mulmod(mload(0x13fe0), mload(0x48600), f_q) +mstore(455616, result) + } +mstore(0x6f3e0, mulmod(mload(0x6f3c0), mload(0x48c80), f_q)) +mstore(0x6f400, mulmod(sub(f_q, mload(0x6f3e0)), mload(0x4d3e0), f_q)) +mstore(0x6f420, mulmod(mload(0x58e40), mload(0x4d3e0), f_q)) +mstore(0x6f440, addmod(mload(0x6f3a0), mload(0x6f400), f_q)) +{ + let result := mulmod(mload(0x14000), mload(0x48600), f_q) +mstore(455776, result) + } +mstore(0x6f480, mulmod(mload(0x6f460), mload(0x48c80), f_q)) +mstore(0x6f4a0, mulmod(sub(f_q, mload(0x6f480)), mload(0x4d400), f_q)) +mstore(0x6f4c0, mulmod(mload(0x58e40), mload(0x4d400), f_q)) +mstore(0x6f4e0, addmod(mload(0x6f440), mload(0x6f4a0), f_q)) +{ + let result := mulmod(mload(0x14020), mload(0x48600), f_q) +mstore(455936, result) + } +mstore(0x6f520, mulmod(mload(0x6f500), mload(0x48c80), f_q)) +mstore(0x6f540, mulmod(sub(f_q, mload(0x6f520)), mload(0x4d420), f_q)) +mstore(0x6f560, mulmod(mload(0x58e40), mload(0x4d420), f_q)) +mstore(0x6f580, addmod(mload(0x6f4e0), mload(0x6f540), f_q)) +{ + let result := mulmod(mload(0x14040), mload(0x48600), f_q) +mstore(456096, result) + } +mstore(0x6f5c0, mulmod(mload(0x6f5a0), mload(0x48c80), f_q)) +mstore(0x6f5e0, mulmod(sub(f_q, mload(0x6f5c0)), mload(0x4d440), f_q)) +mstore(0x6f600, mulmod(mload(0x58e40), mload(0x4d440), f_q)) +mstore(0x6f620, addmod(mload(0x6f580), mload(0x6f5e0), f_q)) +{ + let result := mulmod(mload(0x14060), mload(0x48600), f_q) +mstore(456256, result) + } +mstore(0x6f660, mulmod(mload(0x6f640), mload(0x48c80), f_q)) +mstore(0x6f680, mulmod(sub(f_q, mload(0x6f660)), mload(0x4d460), f_q)) +mstore(0x6f6a0, mulmod(mload(0x58e40), mload(0x4d460), f_q)) +mstore(0x6f6c0, addmod(mload(0x6f620), mload(0x6f680), f_q)) +{ + let result := mulmod(mload(0x14080), mload(0x48600), f_q) +mstore(456416, result) + } +mstore(0x6f700, mulmod(mload(0x6f6e0), mload(0x48c80), f_q)) +mstore(0x6f720, mulmod(sub(f_q, mload(0x6f700)), mload(0x4d480), f_q)) +mstore(0x6f740, mulmod(mload(0x58e40), mload(0x4d480), f_q)) +mstore(0x6f760, addmod(mload(0x6f6c0), mload(0x6f720), f_q)) +{ + let result := mulmod(mload(0x140a0), mload(0x48600), f_q) +mstore(456576, result) + } +mstore(0x6f7a0, mulmod(mload(0x6f780), mload(0x48c80), f_q)) +mstore(0x6f7c0, mulmod(sub(f_q, mload(0x6f7a0)), mload(0x4d4a0), f_q)) +mstore(0x6f7e0, mulmod(mload(0x58e40), mload(0x4d4a0), f_q)) +mstore(0x6f800, addmod(mload(0x6f760), mload(0x6f7c0), f_q)) +{ + let result := mulmod(mload(0x140c0), mload(0x48600), f_q) +mstore(456736, result) + } +mstore(0x6f840, mulmod(mload(0x6f820), mload(0x48c80), f_q)) +mstore(0x6f860, mulmod(sub(f_q, mload(0x6f840)), mload(0x4d4c0), f_q)) +mstore(0x6f880, mulmod(mload(0x58e40), mload(0x4d4c0), f_q)) +mstore(0x6f8a0, addmod(mload(0x6f800), mload(0x6f860), f_q)) +{ + let result := mulmod(mload(0x140e0), mload(0x48600), f_q) +mstore(456896, result) + } +mstore(0x6f8e0, mulmod(mload(0x6f8c0), mload(0x48c80), f_q)) +mstore(0x6f900, mulmod(sub(f_q, mload(0x6f8e0)), mload(0x4d4e0), f_q)) +mstore(0x6f920, mulmod(mload(0x58e40), mload(0x4d4e0), f_q)) +mstore(0x6f940, addmod(mload(0x6f8a0), mload(0x6f900), f_q)) +{ + let result := mulmod(mload(0x14100), mload(0x48600), f_q) +mstore(457056, result) + } +mstore(0x6f980, mulmod(mload(0x6f960), mload(0x48c80), f_q)) +mstore(0x6f9a0, mulmod(sub(f_q, mload(0x6f980)), mload(0x4d500), f_q)) +mstore(0x6f9c0, mulmod(mload(0x58e40), mload(0x4d500), f_q)) +mstore(0x6f9e0, addmod(mload(0x6f940), mload(0x6f9a0), f_q)) +{ + let result := mulmod(mload(0x14120), mload(0x48600), f_q) +mstore(457216, result) + } +mstore(0x6fa20, mulmod(mload(0x6fa00), mload(0x48c80), f_q)) +mstore(0x6fa40, mulmod(sub(f_q, mload(0x6fa20)), mload(0x4d520), f_q)) +mstore(0x6fa60, mulmod(mload(0x58e40), mload(0x4d520), f_q)) +mstore(0x6fa80, addmod(mload(0x6f9e0), mload(0x6fa40), f_q)) +{ + let result := mulmod(mload(0x14140), mload(0x48600), f_q) +mstore(457376, result) + } +mstore(0x6fac0, mulmod(mload(0x6faa0), mload(0x48c80), f_q)) +mstore(0x6fae0, mulmod(sub(f_q, mload(0x6fac0)), mload(0x4d540), f_q)) +mstore(0x6fb00, mulmod(mload(0x58e40), mload(0x4d540), f_q)) +mstore(0x6fb20, addmod(mload(0x6fa80), mload(0x6fae0), f_q)) +{ + let result := mulmod(mload(0x14160), mload(0x48600), f_q) +mstore(457536, result) + } +mstore(0x6fb60, mulmod(mload(0x6fb40), mload(0x48c80), f_q)) +mstore(0x6fb80, mulmod(sub(f_q, mload(0x6fb60)), mload(0x4d560), f_q)) +mstore(0x6fba0, mulmod(mload(0x58e40), mload(0x4d560), f_q)) +mstore(0x6fbc0, addmod(mload(0x6fb20), mload(0x6fb80), f_q)) +{ + let result := mulmod(mload(0x14180), mload(0x48600), f_q) +mstore(457696, result) + } +mstore(0x6fc00, mulmod(mload(0x6fbe0), mload(0x48c80), f_q)) +mstore(0x6fc20, mulmod(sub(f_q, mload(0x6fc00)), mload(0x4d580), f_q)) +mstore(0x6fc40, mulmod(mload(0x58e40), mload(0x4d580), f_q)) +mstore(0x6fc60, addmod(mload(0x6fbc0), mload(0x6fc20), f_q)) +{ + let result := mulmod(mload(0x141a0), mload(0x48600), f_q) +mstore(457856, result) + } +mstore(0x6fca0, mulmod(mload(0x6fc80), mload(0x48c80), f_q)) +mstore(0x6fcc0, mulmod(sub(f_q, mload(0x6fca0)), mload(0x4d5a0), f_q)) +mstore(0x6fce0, mulmod(mload(0x58e40), mload(0x4d5a0), f_q)) +mstore(0x6fd00, addmod(mload(0x6fc60), mload(0x6fcc0), f_q)) +{ + let result := mulmod(mload(0x141c0), mload(0x48600), f_q) +mstore(458016, result) + } +mstore(0x6fd40, mulmod(mload(0x6fd20), mload(0x48c80), f_q)) +mstore(0x6fd60, mulmod(sub(f_q, mload(0x6fd40)), mload(0x4d5c0), f_q)) +mstore(0x6fd80, mulmod(mload(0x58e40), mload(0x4d5c0), f_q)) +mstore(0x6fda0, addmod(mload(0x6fd00), mload(0x6fd60), f_q)) +mstore(0x6fdc0, mulmod(mload(0x482e0), mload(0x48a20), f_q)) +mstore(0x6fde0, mulmod(mload(0x48300), mload(0x48a20), f_q)) +{ + let result := mulmod(mload(0x48320), mload(0x48600), f_q) +mstore(458240, result) + } +mstore(0x6fe20, mulmod(mload(0x6fe00), mload(0x48c80), f_q)) +mstore(0x6fe40, mulmod(sub(f_q, mload(0x6fe20)), mload(0x4d5e0), f_q)) +mstore(0x6fe60, mulmod(mload(0x58e40), mload(0x4d5e0), f_q)) +mstore(0x6fe80, mulmod(mload(0x6fdc0), mload(0x4d5e0), f_q)) +mstore(0x6fea0, mulmod(mload(0x6fde0), mload(0x4d5e0), f_q)) +mstore(0x6fec0, addmod(mload(0x6fda0), mload(0x6fe40), f_q)) +{ + let result := mulmod(mload(0x11ec0), mload(0x48600), f_q) +mstore(458464, result) + } +mstore(0x6ff00, mulmod(mload(0x6fee0), mload(0x48c80), f_q)) +mstore(0x6ff20, mulmod(sub(f_q, mload(0x6ff00)), mload(0x4d600), f_q)) +mstore(0x6ff40, mulmod(mload(0x58e40), mload(0x4d600), f_q)) +mstore(0x6ff60, addmod(mload(0x6fec0), mload(0x6ff20), f_q)) +mstore(0x6ff80, mulmod(mload(0x6ff60), mload(0x188e0), f_q)) +mstore(0x6ffa0, mulmod(mload(0x58ec0), mload(0x188e0), f_q)) +mstore(0x6ffc0, mulmod(mload(0x58f40), mload(0x188e0), f_q)) +mstore(0x6ffe0, mulmod(mload(0x58fe0), mload(0x188e0), f_q)) +mstore(0x70000, mulmod(mload(0x59080), mload(0x188e0), f_q)) +mstore(0x70020, mulmod(mload(0x59120), mload(0x188e0), f_q)) +mstore(0x70040, mulmod(mload(0x591c0), mload(0x188e0), f_q)) +mstore(0x70060, mulmod(mload(0x59260), mload(0x188e0), f_q)) +mstore(0x70080, mulmod(mload(0x59300), mload(0x188e0), f_q)) +mstore(0x700a0, mulmod(mload(0x593a0), mload(0x188e0), f_q)) +mstore(0x700c0, mulmod(mload(0x59440), mload(0x188e0), f_q)) +mstore(0x700e0, mulmod(mload(0x594e0), mload(0x188e0), f_q)) +mstore(0x70100, mulmod(mload(0x59580), mload(0x188e0), f_q)) +mstore(0x70120, mulmod(mload(0x59620), mload(0x188e0), f_q)) +mstore(0x70140, mulmod(mload(0x596c0), mload(0x188e0), f_q)) +mstore(0x70160, mulmod(mload(0x59760), mload(0x188e0), f_q)) +mstore(0x70180, mulmod(mload(0x59800), mload(0x188e0), f_q)) +mstore(0x701a0, mulmod(mload(0x598a0), mload(0x188e0), f_q)) +mstore(0x701c0, mulmod(mload(0x59940), mload(0x188e0), f_q)) +mstore(0x701e0, mulmod(mload(0x599e0), mload(0x188e0), f_q)) +mstore(0x70200, mulmod(mload(0x59a80), mload(0x188e0), f_q)) +mstore(0x70220, mulmod(mload(0x59b20), mload(0x188e0), f_q)) +mstore(0x70240, mulmod(mload(0x59bc0), mload(0x188e0), f_q)) +mstore(0x70260, mulmod(mload(0x59c60), mload(0x188e0), f_q)) +mstore(0x70280, mulmod(mload(0x59d00), mload(0x188e0), f_q)) +mstore(0x702a0, mulmod(mload(0x59da0), mload(0x188e0), f_q)) +mstore(0x702c0, mulmod(mload(0x59e40), mload(0x188e0), f_q)) +mstore(0x702e0, mulmod(mload(0x59ee0), mload(0x188e0), f_q)) +mstore(0x70300, mulmod(mload(0x59f80), mload(0x188e0), f_q)) +mstore(0x70320, mulmod(mload(0x5a020), mload(0x188e0), f_q)) +mstore(0x70340, mulmod(mload(0x5a0c0), mload(0x188e0), f_q)) +mstore(0x70360, mulmod(mload(0x5a160), mload(0x188e0), f_q)) +mstore(0x70380, mulmod(mload(0x5a200), mload(0x188e0), f_q)) +mstore(0x703a0, mulmod(mload(0x5a2a0), mload(0x188e0), f_q)) +mstore(0x703c0, mulmod(mload(0x5a340), mload(0x188e0), f_q)) +mstore(0x703e0, mulmod(mload(0x5a3e0), mload(0x188e0), f_q)) +mstore(0x70400, mulmod(mload(0x5a480), mload(0x188e0), f_q)) +mstore(0x70420, mulmod(mload(0x5a520), mload(0x188e0), f_q)) +mstore(0x70440, mulmod(mload(0x5a5c0), mload(0x188e0), f_q)) +mstore(0x70460, mulmod(mload(0x5a660), mload(0x188e0), f_q)) +mstore(0x70480, mulmod(mload(0x5a700), mload(0x188e0), f_q)) +mstore(0x704a0, mulmod(mload(0x5a7a0), mload(0x188e0), f_q)) +mstore(0x704c0, mulmod(mload(0x5a840), mload(0x188e0), f_q)) +mstore(0x704e0, mulmod(mload(0x5a8e0), mload(0x188e0), f_q)) +mstore(0x70500, mulmod(mload(0x5a980), mload(0x188e0), f_q)) +mstore(0x70520, mulmod(mload(0x5aa20), mload(0x188e0), f_q)) +mstore(0x70540, mulmod(mload(0x5aac0), mload(0x188e0), f_q)) +mstore(0x70560, mulmod(mload(0x5ab60), mload(0x188e0), f_q)) +mstore(0x70580, mulmod(mload(0x5ac00), mload(0x188e0), f_q)) +mstore(0x705a0, mulmod(mload(0x5aca0), mload(0x188e0), f_q)) +mstore(0x705c0, mulmod(mload(0x5ad40), mload(0x188e0), f_q)) +mstore(0x705e0, mulmod(mload(0x5ade0), mload(0x188e0), f_q)) +mstore(0x70600, mulmod(mload(0x5ae80), mload(0x188e0), f_q)) +mstore(0x70620, mulmod(mload(0x5af20), mload(0x188e0), f_q)) +mstore(0x70640, mulmod(mload(0x5afc0), mload(0x188e0), f_q)) +mstore(0x70660, mulmod(mload(0x5b060), mload(0x188e0), f_q)) +mstore(0x70680, mulmod(mload(0x5b100), mload(0x188e0), f_q)) +mstore(0x706a0, mulmod(mload(0x5b1a0), mload(0x188e0), f_q)) +mstore(0x706c0, mulmod(mload(0x5b240), mload(0x188e0), f_q)) +mstore(0x706e0, mulmod(mload(0x5b2e0), mload(0x188e0), f_q)) +mstore(0x70700, mulmod(mload(0x5b380), mload(0x188e0), f_q)) +mstore(0x70720, mulmod(mload(0x5b420), mload(0x188e0), f_q)) +mstore(0x70740, mulmod(mload(0x5b4c0), mload(0x188e0), f_q)) +mstore(0x70760, mulmod(mload(0x5b560), mload(0x188e0), f_q)) +mstore(0x70780, mulmod(mload(0x5b600), mload(0x188e0), f_q)) +mstore(0x707a0, mulmod(mload(0x5b6a0), mload(0x188e0), f_q)) +mstore(0x707c0, mulmod(mload(0x5b740), mload(0x188e0), f_q)) +mstore(0x707e0, mulmod(mload(0x5b7e0), mload(0x188e0), f_q)) +mstore(0x70800, mulmod(mload(0x5b880), mload(0x188e0), f_q)) +mstore(0x70820, mulmod(mload(0x5b920), mload(0x188e0), f_q)) +mstore(0x70840, mulmod(mload(0x5b9c0), mload(0x188e0), f_q)) +mstore(0x70860, mulmod(mload(0x5ba60), mload(0x188e0), f_q)) +mstore(0x70880, mulmod(mload(0x5bb00), mload(0x188e0), f_q)) +mstore(0x708a0, mulmod(mload(0x5bba0), mload(0x188e0), f_q)) +mstore(0x708c0, mulmod(mload(0x5bc40), mload(0x188e0), f_q)) +mstore(0x708e0, mulmod(mload(0x5bce0), mload(0x188e0), f_q)) +mstore(0x70900, mulmod(mload(0x5bd80), mload(0x188e0), f_q)) +mstore(0x70920, mulmod(mload(0x5be20), mload(0x188e0), f_q)) +mstore(0x70940, mulmod(mload(0x5bec0), mload(0x188e0), f_q)) +mstore(0x70960, mulmod(mload(0x5bf60), mload(0x188e0), f_q)) +mstore(0x70980, mulmod(mload(0x5c000), mload(0x188e0), f_q)) +mstore(0x709a0, mulmod(mload(0x5c0a0), mload(0x188e0), f_q)) +mstore(0x709c0, mulmod(mload(0x5c140), mload(0x188e0), f_q)) +mstore(0x709e0, mulmod(mload(0x5c1e0), mload(0x188e0), f_q)) +mstore(0x70a00, mulmod(mload(0x5c280), mload(0x188e0), f_q)) +mstore(0x70a20, mulmod(mload(0x5c320), mload(0x188e0), f_q)) +mstore(0x70a40, mulmod(mload(0x5c3c0), mload(0x188e0), f_q)) +mstore(0x70a60, mulmod(mload(0x5c460), mload(0x188e0), f_q)) +mstore(0x70a80, mulmod(mload(0x5c500), mload(0x188e0), f_q)) +mstore(0x70aa0, mulmod(mload(0x5c5a0), mload(0x188e0), f_q)) +mstore(0x70ac0, mulmod(mload(0x5c640), mload(0x188e0), f_q)) +mstore(0x70ae0, mulmod(mload(0x5c6e0), mload(0x188e0), f_q)) +mstore(0x70b00, mulmod(mload(0x5c780), mload(0x188e0), f_q)) +mstore(0x70b20, mulmod(mload(0x5c820), mload(0x188e0), f_q)) +mstore(0x70b40, mulmod(mload(0x5c8c0), mload(0x188e0), f_q)) +mstore(0x70b60, mulmod(mload(0x5c960), mload(0x188e0), f_q)) +mstore(0x70b80, mulmod(mload(0x5ca00), mload(0x188e0), f_q)) +mstore(0x70ba0, mulmod(mload(0x5caa0), mload(0x188e0), f_q)) +mstore(0x70bc0, mulmod(mload(0x5cb40), mload(0x188e0), f_q)) +mstore(0x70be0, mulmod(mload(0x5cbe0), mload(0x188e0), f_q)) +mstore(0x70c00, mulmod(mload(0x5cc80), mload(0x188e0), f_q)) +mstore(0x70c20, mulmod(mload(0x5cd20), mload(0x188e0), f_q)) +mstore(0x70c40, mulmod(mload(0x5cdc0), mload(0x188e0), f_q)) +mstore(0x70c60, mulmod(mload(0x5ce60), mload(0x188e0), f_q)) +mstore(0x70c80, mulmod(mload(0x5cf00), mload(0x188e0), f_q)) +mstore(0x70ca0, mulmod(mload(0x5cfa0), mload(0x188e0), f_q)) +mstore(0x70cc0, mulmod(mload(0x5d040), mload(0x188e0), f_q)) +mstore(0x70ce0, mulmod(mload(0x5d0e0), mload(0x188e0), f_q)) +mstore(0x70d00, mulmod(mload(0x5d180), mload(0x188e0), f_q)) +mstore(0x70d20, mulmod(mload(0x5d220), mload(0x188e0), f_q)) +mstore(0x70d40, mulmod(mload(0x5d2c0), mload(0x188e0), f_q)) +mstore(0x70d60, mulmod(mload(0x5d360), mload(0x188e0), f_q)) +mstore(0x70d80, mulmod(mload(0x5d400), mload(0x188e0), f_q)) +mstore(0x70da0, mulmod(mload(0x5d4a0), mload(0x188e0), f_q)) +mstore(0x70dc0, mulmod(mload(0x5d540), mload(0x188e0), f_q)) +mstore(0x70de0, mulmod(mload(0x5d5e0), mload(0x188e0), f_q)) +mstore(0x70e00, mulmod(mload(0x5d680), mload(0x188e0), f_q)) +mstore(0x70e20, mulmod(mload(0x5d720), mload(0x188e0), f_q)) +mstore(0x70e40, mulmod(mload(0x5d7c0), mload(0x188e0), f_q)) +mstore(0x70e60, mulmod(mload(0x5d860), mload(0x188e0), f_q)) +mstore(0x70e80, mulmod(mload(0x5d900), mload(0x188e0), f_q)) +mstore(0x70ea0, mulmod(mload(0x5d9a0), mload(0x188e0), f_q)) +mstore(0x70ec0, mulmod(mload(0x5da40), mload(0x188e0), f_q)) +mstore(0x70ee0, mulmod(mload(0x5dae0), mload(0x188e0), f_q)) +mstore(0x70f00, mulmod(mload(0x5db80), mload(0x188e0), f_q)) +mstore(0x70f20, mulmod(mload(0x5dc20), mload(0x188e0), f_q)) +mstore(0x70f40, mulmod(mload(0x5dcc0), mload(0x188e0), f_q)) +mstore(0x70f60, mulmod(mload(0x5dd60), mload(0x188e0), f_q)) +mstore(0x70f80, mulmod(mload(0x5de00), mload(0x188e0), f_q)) +mstore(0x70fa0, mulmod(mload(0x5dea0), mload(0x188e0), f_q)) +mstore(0x70fc0, mulmod(mload(0x5df40), mload(0x188e0), f_q)) +mstore(0x70fe0, mulmod(mload(0x5dfe0), mload(0x188e0), f_q)) +mstore(0x71000, mulmod(mload(0x5e080), mload(0x188e0), f_q)) +mstore(0x71020, mulmod(mload(0x5e120), mload(0x188e0), f_q)) +mstore(0x71040, mulmod(mload(0x5e1c0), mload(0x188e0), f_q)) +mstore(0x71060, mulmod(mload(0x5e260), mload(0x188e0), f_q)) +mstore(0x71080, mulmod(mload(0x5e300), mload(0x188e0), f_q)) +mstore(0x710a0, mulmod(mload(0x5e3a0), mload(0x188e0), f_q)) +mstore(0x710c0, mulmod(mload(0x5e440), mload(0x188e0), f_q)) +mstore(0x710e0, mulmod(mload(0x5e4e0), mload(0x188e0), f_q)) +mstore(0x71100, mulmod(mload(0x5e580), mload(0x188e0), f_q)) +mstore(0x71120, mulmod(mload(0x5e620), mload(0x188e0), f_q)) +mstore(0x71140, mulmod(mload(0x5e6c0), mload(0x188e0), f_q)) +mstore(0x71160, mulmod(mload(0x5e760), mload(0x188e0), f_q)) +mstore(0x71180, mulmod(mload(0x5e800), mload(0x188e0), f_q)) +mstore(0x711a0, mulmod(mload(0x5e8a0), mload(0x188e0), f_q)) +mstore(0x711c0, mulmod(mload(0x5e940), mload(0x188e0), f_q)) +mstore(0x711e0, mulmod(mload(0x5e9e0), mload(0x188e0), f_q)) +mstore(0x71200, mulmod(mload(0x5ea80), mload(0x188e0), f_q)) +mstore(0x71220, mulmod(mload(0x5eb20), mload(0x188e0), f_q)) +mstore(0x71240, mulmod(mload(0x5ebc0), mload(0x188e0), f_q)) +mstore(0x71260, mulmod(mload(0x5ec60), mload(0x188e0), f_q)) +mstore(0x71280, mulmod(mload(0x5ed00), mload(0x188e0), f_q)) +mstore(0x712a0, mulmod(mload(0x5eda0), mload(0x188e0), f_q)) +mstore(0x712c0, mulmod(mload(0x5ee40), mload(0x188e0), f_q)) +mstore(0x712e0, mulmod(mload(0x5eee0), mload(0x188e0), f_q)) +mstore(0x71300, mulmod(mload(0x5ef80), mload(0x188e0), f_q)) +mstore(0x71320, mulmod(mload(0x5f020), mload(0x188e0), f_q)) +mstore(0x71340, mulmod(mload(0x5f0c0), mload(0x188e0), f_q)) +mstore(0x71360, mulmod(mload(0x5f160), mload(0x188e0), f_q)) +mstore(0x71380, mulmod(mload(0x5f200), mload(0x188e0), f_q)) +mstore(0x713a0, mulmod(mload(0x5f2a0), mload(0x188e0), f_q)) +mstore(0x713c0, mulmod(mload(0x5f340), mload(0x188e0), f_q)) +mstore(0x713e0, mulmod(mload(0x5f3e0), mload(0x188e0), f_q)) +mstore(0x71400, mulmod(mload(0x5f480), mload(0x188e0), f_q)) +mstore(0x71420, mulmod(mload(0x5f520), mload(0x188e0), f_q)) +mstore(0x71440, mulmod(mload(0x5f5c0), mload(0x188e0), f_q)) +mstore(0x71460, mulmod(mload(0x5f660), mload(0x188e0), f_q)) +mstore(0x71480, mulmod(mload(0x5f700), mload(0x188e0), f_q)) +mstore(0x714a0, mulmod(mload(0x5f7a0), mload(0x188e0), f_q)) +mstore(0x714c0, mulmod(mload(0x5f840), mload(0x188e0), f_q)) +mstore(0x714e0, mulmod(mload(0x5f8e0), mload(0x188e0), f_q)) +mstore(0x71500, mulmod(mload(0x5f980), mload(0x188e0), f_q)) +mstore(0x71520, mulmod(mload(0x5fa20), mload(0x188e0), f_q)) +mstore(0x71540, mulmod(mload(0x5fac0), mload(0x188e0), f_q)) +mstore(0x71560, mulmod(mload(0x5fb60), mload(0x188e0), f_q)) +mstore(0x71580, mulmod(mload(0x5fc00), mload(0x188e0), f_q)) +mstore(0x715a0, mulmod(mload(0x5fca0), mload(0x188e0), f_q)) +mstore(0x715c0, mulmod(mload(0x5fd40), mload(0x188e0), f_q)) +mstore(0x715e0, mulmod(mload(0x5fde0), mload(0x188e0), f_q)) +mstore(0x71600, mulmod(mload(0x5fe80), mload(0x188e0), f_q)) +mstore(0x71620, mulmod(mload(0x5ff20), mload(0x188e0), f_q)) +mstore(0x71640, mulmod(mload(0x5ffc0), mload(0x188e0), f_q)) +mstore(0x71660, mulmod(mload(0x60060), mload(0x188e0), f_q)) +mstore(0x71680, mulmod(mload(0x60100), mload(0x188e0), f_q)) +mstore(0x716a0, mulmod(mload(0x601a0), mload(0x188e0), f_q)) +mstore(0x716c0, mulmod(mload(0x60240), mload(0x188e0), f_q)) +mstore(0x716e0, mulmod(mload(0x602e0), mload(0x188e0), f_q)) +mstore(0x71700, mulmod(mload(0x60380), mload(0x188e0), f_q)) +mstore(0x71720, mulmod(mload(0x60420), mload(0x188e0), f_q)) +mstore(0x71740, mulmod(mload(0x604c0), mload(0x188e0), f_q)) +mstore(0x71760, mulmod(mload(0x60560), mload(0x188e0), f_q)) +mstore(0x71780, mulmod(mload(0x60600), mload(0x188e0), f_q)) +mstore(0x717a0, mulmod(mload(0x606a0), mload(0x188e0), f_q)) +mstore(0x717c0, mulmod(mload(0x60740), mload(0x188e0), f_q)) +mstore(0x717e0, mulmod(mload(0x607e0), mload(0x188e0), f_q)) +mstore(0x71800, mulmod(mload(0x60880), mload(0x188e0), f_q)) +mstore(0x71820, mulmod(mload(0x60920), mload(0x188e0), f_q)) +mstore(0x71840, mulmod(mload(0x609c0), mload(0x188e0), f_q)) +mstore(0x71860, mulmod(mload(0x60a60), mload(0x188e0), f_q)) +mstore(0x71880, mulmod(mload(0x60b00), mload(0x188e0), f_q)) +mstore(0x718a0, mulmod(mload(0x60ba0), mload(0x188e0), f_q)) +mstore(0x718c0, mulmod(mload(0x60c40), mload(0x188e0), f_q)) +mstore(0x718e0, mulmod(mload(0x60ce0), mload(0x188e0), f_q)) +mstore(0x71900, mulmod(mload(0x60d80), mload(0x188e0), f_q)) +mstore(0x71920, mulmod(mload(0x60e20), mload(0x188e0), f_q)) +mstore(0x71940, mulmod(mload(0x60ec0), mload(0x188e0), f_q)) +mstore(0x71960, mulmod(mload(0x60f60), mload(0x188e0), f_q)) +mstore(0x71980, mulmod(mload(0x61000), mload(0x188e0), f_q)) +mstore(0x719a0, mulmod(mload(0x610a0), mload(0x188e0), f_q)) +mstore(0x719c0, mulmod(mload(0x61140), mload(0x188e0), f_q)) +mstore(0x719e0, mulmod(mload(0x611e0), mload(0x188e0), f_q)) +mstore(0x71a00, mulmod(mload(0x61280), mload(0x188e0), f_q)) +mstore(0x71a20, mulmod(mload(0x61320), mload(0x188e0), f_q)) +mstore(0x71a40, mulmod(mload(0x613c0), mload(0x188e0), f_q)) +mstore(0x71a60, mulmod(mload(0x61460), mload(0x188e0), f_q)) +mstore(0x71a80, mulmod(mload(0x61500), mload(0x188e0), f_q)) +mstore(0x71aa0, mulmod(mload(0x615a0), mload(0x188e0), f_q)) +mstore(0x71ac0, mulmod(mload(0x61640), mload(0x188e0), f_q)) +mstore(0x71ae0, mulmod(mload(0x616e0), mload(0x188e0), f_q)) +mstore(0x71b00, mulmod(mload(0x61780), mload(0x188e0), f_q)) +mstore(0x71b20, mulmod(mload(0x61820), mload(0x188e0), f_q)) +mstore(0x71b40, mulmod(mload(0x618c0), mload(0x188e0), f_q)) +mstore(0x71b60, mulmod(mload(0x61960), mload(0x188e0), f_q)) +mstore(0x71b80, mulmod(mload(0x61a00), mload(0x188e0), f_q)) +mstore(0x71ba0, mulmod(mload(0x61aa0), mload(0x188e0), f_q)) +mstore(0x71bc0, mulmod(mload(0x61b40), mload(0x188e0), f_q)) +mstore(0x71be0, mulmod(mload(0x61be0), mload(0x188e0), f_q)) +mstore(0x71c00, mulmod(mload(0x61c80), mload(0x188e0), f_q)) +mstore(0x71c20, mulmod(mload(0x61d20), mload(0x188e0), f_q)) +mstore(0x71c40, mulmod(mload(0x61dc0), mload(0x188e0), f_q)) +mstore(0x71c60, mulmod(mload(0x61e60), mload(0x188e0), f_q)) +mstore(0x71c80, mulmod(mload(0x61f00), mload(0x188e0), f_q)) +mstore(0x71ca0, mulmod(mload(0x61fa0), mload(0x188e0), f_q)) +mstore(0x71cc0, mulmod(mload(0x62040), mload(0x188e0), f_q)) +mstore(0x71ce0, mulmod(mload(0x620e0), mload(0x188e0), f_q)) +mstore(0x71d00, mulmod(mload(0x62180), mload(0x188e0), f_q)) +mstore(0x71d20, mulmod(mload(0x62220), mload(0x188e0), f_q)) +mstore(0x71d40, mulmod(mload(0x622c0), mload(0x188e0), f_q)) +mstore(0x71d60, mulmod(mload(0x62360), mload(0x188e0), f_q)) +mstore(0x71d80, mulmod(mload(0x62400), mload(0x188e0), f_q)) +mstore(0x71da0, mulmod(mload(0x624a0), mload(0x188e0), f_q)) +mstore(0x71dc0, mulmod(mload(0x62540), mload(0x188e0), f_q)) +mstore(0x71de0, mulmod(mload(0x625e0), mload(0x188e0), f_q)) +mstore(0x71e00, mulmod(mload(0x62680), mload(0x188e0), f_q)) +mstore(0x71e20, mulmod(mload(0x62720), mload(0x188e0), f_q)) +mstore(0x71e40, mulmod(mload(0x627c0), mload(0x188e0), f_q)) +mstore(0x71e60, mulmod(mload(0x62860), mload(0x188e0), f_q)) +mstore(0x71e80, mulmod(mload(0x62900), mload(0x188e0), f_q)) +mstore(0x71ea0, mulmod(mload(0x629a0), mload(0x188e0), f_q)) +mstore(0x71ec0, mulmod(mload(0x62a40), mload(0x188e0), f_q)) +mstore(0x71ee0, mulmod(mload(0x62ae0), mload(0x188e0), f_q)) +mstore(0x71f00, mulmod(mload(0x62b80), mload(0x188e0), f_q)) +mstore(0x71f20, mulmod(mload(0x62c20), mload(0x188e0), f_q)) +mstore(0x71f40, mulmod(mload(0x62cc0), mload(0x188e0), f_q)) +mstore(0x71f60, mulmod(mload(0x62d60), mload(0x188e0), f_q)) +mstore(0x71f80, mulmod(mload(0x62e00), mload(0x188e0), f_q)) +mstore(0x71fa0, mulmod(mload(0x62ea0), mload(0x188e0), f_q)) +mstore(0x71fc0, mulmod(mload(0x62f40), mload(0x188e0), f_q)) +mstore(0x71fe0, mulmod(mload(0x63fc0), mload(0x188e0), f_q)) +mstore(0x72000, mulmod(mload(0x64080), mload(0x188e0), f_q)) +mstore(0x72020, mulmod(mload(0x64140), mload(0x188e0), f_q)) +mstore(0x72040, mulmod(mload(0x64200), mload(0x188e0), f_q)) +mstore(0x72060, mulmod(mload(0x642c0), mload(0x188e0), f_q)) +mstore(0x72080, mulmod(mload(0x64380), mload(0x188e0), f_q)) +mstore(0x720a0, mulmod(mload(0x64440), mload(0x188e0), f_q)) +mstore(0x720c0, mulmod(mload(0x64500), mload(0x188e0), f_q)) +mstore(0x720e0, mulmod(mload(0x645c0), mload(0x188e0), f_q)) +mstore(0x72100, mulmod(mload(0x64680), mload(0x188e0), f_q)) +mstore(0x72120, mulmod(mload(0x64740), mload(0x188e0), f_q)) +mstore(0x72140, mulmod(mload(0x64800), mload(0x188e0), f_q)) +mstore(0x72160, mulmod(mload(0x648c0), mload(0x188e0), f_q)) +mstore(0x72180, mulmod(mload(0x64980), mload(0x188e0), f_q)) +mstore(0x721a0, mulmod(mload(0x64a40), mload(0x188e0), f_q)) +mstore(0x721c0, mulmod(mload(0x63940), mload(0x188e0), f_q)) +mstore(0x721e0, mulmod(mload(0x639e0), mload(0x188e0), f_q)) +mstore(0x72200, mulmod(mload(0x63a80), mload(0x188e0), f_q)) +mstore(0x72220, mulmod(mload(0x63b20), mload(0x188e0), f_q)) +mstore(0x72240, mulmod(mload(0x63bc0), mload(0x188e0), f_q)) +mstore(0x72260, mulmod(mload(0x63c60), mload(0x188e0), f_q)) +mstore(0x72280, mulmod(mload(0x63d00), mload(0x188e0), f_q)) +mstore(0x722a0, mulmod(mload(0x63da0), mload(0x188e0), f_q)) +mstore(0x722c0, mulmod(mload(0x63e40), mload(0x188e0), f_q)) +mstore(0x722e0, mulmod(mload(0x63ee0), mload(0x188e0), f_q)) +mstore(0x72300, mulmod(mload(0x64ac0), mload(0x188e0), f_q)) +mstore(0x72320, mulmod(mload(0x64b60), mload(0x188e0), f_q)) +mstore(0x72340, mulmod(mload(0x64c00), mload(0x188e0), f_q)) +mstore(0x72360, mulmod(mload(0x64ca0), mload(0x188e0), f_q)) +mstore(0x72380, mulmod(mload(0x64d40), mload(0x188e0), f_q)) +mstore(0x723a0, mulmod(mload(0x64de0), mload(0x188e0), f_q)) +mstore(0x723c0, mulmod(mload(0x64e80), mload(0x188e0), f_q)) +mstore(0x723e0, mulmod(mload(0x64f20), mload(0x188e0), f_q)) +mstore(0x72400, mulmod(mload(0x64fc0), mload(0x188e0), f_q)) +mstore(0x72420, mulmod(mload(0x65060), mload(0x188e0), f_q)) +mstore(0x72440, mulmod(mload(0x65100), mload(0x188e0), f_q)) +mstore(0x72460, mulmod(mload(0x651a0), mload(0x188e0), f_q)) +mstore(0x72480, mulmod(mload(0x65240), mload(0x188e0), f_q)) +mstore(0x724a0, mulmod(mload(0x652e0), mload(0x188e0), f_q)) +mstore(0x724c0, mulmod(mload(0x65380), mload(0x188e0), f_q)) +mstore(0x724e0, mulmod(mload(0x65420), mload(0x188e0), f_q)) +mstore(0x72500, mulmod(mload(0x654c0), mload(0x188e0), f_q)) +mstore(0x72520, mulmod(mload(0x65560), mload(0x188e0), f_q)) +mstore(0x72540, mulmod(mload(0x65600), mload(0x188e0), f_q)) +mstore(0x72560, mulmod(mload(0x656a0), mload(0x188e0), f_q)) +mstore(0x72580, mulmod(mload(0x65740), mload(0x188e0), f_q)) +mstore(0x725a0, mulmod(mload(0x657e0), mload(0x188e0), f_q)) +mstore(0x725c0, mulmod(mload(0x65880), mload(0x188e0), f_q)) +mstore(0x725e0, mulmod(mload(0x65920), mload(0x188e0), f_q)) +mstore(0x72600, mulmod(mload(0x659c0), mload(0x188e0), f_q)) +mstore(0x72620, mulmod(mload(0x65a60), mload(0x188e0), f_q)) +mstore(0x72640, mulmod(mload(0x65b00), mload(0x188e0), f_q)) +mstore(0x72660, mulmod(mload(0x65ba0), mload(0x188e0), f_q)) +mstore(0x72680, mulmod(mload(0x65c40), mload(0x188e0), f_q)) +mstore(0x726a0, mulmod(mload(0x65ce0), mload(0x188e0), f_q)) +mstore(0x726c0, mulmod(mload(0x65d80), mload(0x188e0), f_q)) +mstore(0x726e0, mulmod(mload(0x65e20), mload(0x188e0), f_q)) +mstore(0x72700, mulmod(mload(0x65ec0), mload(0x188e0), f_q)) +mstore(0x72720, mulmod(mload(0x65f60), mload(0x188e0), f_q)) +mstore(0x72740, mulmod(mload(0x66000), mload(0x188e0), f_q)) +mstore(0x72760, mulmod(mload(0x660a0), mload(0x188e0), f_q)) +mstore(0x72780, mulmod(mload(0x66140), mload(0x188e0), f_q)) +mstore(0x727a0, mulmod(mload(0x661e0), mload(0x188e0), f_q)) +mstore(0x727c0, mulmod(mload(0x66280), mload(0x188e0), f_q)) +mstore(0x727e0, mulmod(mload(0x66320), mload(0x188e0), f_q)) +mstore(0x72800, mulmod(mload(0x663c0), mload(0x188e0), f_q)) +mstore(0x72820, mulmod(mload(0x66460), mload(0x188e0), f_q)) +mstore(0x72840, mulmod(mload(0x66500), mload(0x188e0), f_q)) +mstore(0x72860, mulmod(mload(0x665a0), mload(0x188e0), f_q)) +mstore(0x72880, mulmod(mload(0x66640), mload(0x188e0), f_q)) +mstore(0x728a0, mulmod(mload(0x666e0), mload(0x188e0), f_q)) +mstore(0x728c0, mulmod(mload(0x66780), mload(0x188e0), f_q)) +mstore(0x728e0, mulmod(mload(0x66820), mload(0x188e0), f_q)) +mstore(0x72900, mulmod(mload(0x668c0), mload(0x188e0), f_q)) +mstore(0x72920, mulmod(mload(0x66960), mload(0x188e0), f_q)) +mstore(0x72940, mulmod(mload(0x66a00), mload(0x188e0), f_q)) +mstore(0x72960, mulmod(mload(0x66aa0), mload(0x188e0), f_q)) +mstore(0x72980, mulmod(mload(0x66b40), mload(0x188e0), f_q)) +mstore(0x729a0, mulmod(mload(0x66be0), mload(0x188e0), f_q)) +mstore(0x729c0, mulmod(mload(0x66c80), mload(0x188e0), f_q)) +mstore(0x729e0, mulmod(mload(0x66d20), mload(0x188e0), f_q)) +mstore(0x72a00, mulmod(mload(0x66dc0), mload(0x188e0), f_q)) +mstore(0x72a20, mulmod(mload(0x66e60), mload(0x188e0), f_q)) +mstore(0x72a40, mulmod(mload(0x66f00), mload(0x188e0), f_q)) +mstore(0x72a60, mulmod(mload(0x66fa0), mload(0x188e0), f_q)) +mstore(0x72a80, mulmod(mload(0x67040), mload(0x188e0), f_q)) +mstore(0x72aa0, mulmod(mload(0x670e0), mload(0x188e0), f_q)) +mstore(0x72ac0, mulmod(mload(0x67180), mload(0x188e0), f_q)) +mstore(0x72ae0, mulmod(mload(0x67220), mload(0x188e0), f_q)) +mstore(0x72b00, mulmod(mload(0x672c0), mload(0x188e0), f_q)) +mstore(0x72b20, mulmod(mload(0x67360), mload(0x188e0), f_q)) +mstore(0x72b40, mulmod(mload(0x67400), mload(0x188e0), f_q)) +mstore(0x72b60, mulmod(mload(0x674a0), mload(0x188e0), f_q)) +mstore(0x72b80, mulmod(mload(0x67540), mload(0x188e0), f_q)) +mstore(0x72ba0, mulmod(mload(0x675e0), mload(0x188e0), f_q)) +mstore(0x72bc0, mulmod(mload(0x67680), mload(0x188e0), f_q)) +mstore(0x72be0, mulmod(mload(0x67720), mload(0x188e0), f_q)) +mstore(0x72c00, mulmod(mload(0x677c0), mload(0x188e0), f_q)) +mstore(0x72c20, mulmod(mload(0x67860), mload(0x188e0), f_q)) +mstore(0x72c40, mulmod(mload(0x67900), mload(0x188e0), f_q)) +mstore(0x72c60, mulmod(mload(0x679a0), mload(0x188e0), f_q)) +mstore(0x72c80, mulmod(mload(0x67a40), mload(0x188e0), f_q)) +mstore(0x72ca0, mulmod(mload(0x67ae0), mload(0x188e0), f_q)) +mstore(0x72cc0, mulmod(mload(0x67b80), mload(0x188e0), f_q)) +mstore(0x72ce0, mulmod(mload(0x67c20), mload(0x188e0), f_q)) +mstore(0x72d00, mulmod(mload(0x67cc0), mload(0x188e0), f_q)) +mstore(0x72d20, mulmod(mload(0x67d60), mload(0x188e0), f_q)) +mstore(0x72d40, mulmod(mload(0x67e00), mload(0x188e0), f_q)) +mstore(0x72d60, mulmod(mload(0x67ea0), mload(0x188e0), f_q)) +mstore(0x72d80, mulmod(mload(0x67f40), mload(0x188e0), f_q)) +mstore(0x72da0, mulmod(mload(0x67fe0), mload(0x188e0), f_q)) +mstore(0x72dc0, mulmod(mload(0x68080), mload(0x188e0), f_q)) +mstore(0x72de0, mulmod(mload(0x68120), mload(0x188e0), f_q)) +mstore(0x72e00, mulmod(mload(0x681c0), mload(0x188e0), f_q)) +mstore(0x72e20, mulmod(mload(0x68260), mload(0x188e0), f_q)) +mstore(0x72e40, mulmod(mload(0x68300), mload(0x188e0), f_q)) +mstore(0x72e60, mulmod(mload(0x683a0), mload(0x188e0), f_q)) +mstore(0x72e80, mulmod(mload(0x68440), mload(0x188e0), f_q)) +mstore(0x72ea0, mulmod(mload(0x684e0), mload(0x188e0), f_q)) +mstore(0x72ec0, mulmod(mload(0x68580), mload(0x188e0), f_q)) +mstore(0x72ee0, mulmod(mload(0x68620), mload(0x188e0), f_q)) +mstore(0x72f00, mulmod(mload(0x686c0), mload(0x188e0), f_q)) +mstore(0x72f20, mulmod(mload(0x68760), mload(0x188e0), f_q)) +mstore(0x72f40, mulmod(mload(0x68800), mload(0x188e0), f_q)) +mstore(0x72f60, mulmod(mload(0x688a0), mload(0x188e0), f_q)) +mstore(0x72f80, mulmod(mload(0x68940), mload(0x188e0), f_q)) +mstore(0x72fa0, mulmod(mload(0x689e0), mload(0x188e0), f_q)) +mstore(0x72fc0, mulmod(mload(0x68a80), mload(0x188e0), f_q)) +mstore(0x72fe0, mulmod(mload(0x68b20), mload(0x188e0), f_q)) +mstore(0x73000, mulmod(mload(0x68bc0), mload(0x188e0), f_q)) +mstore(0x73020, mulmod(mload(0x68c60), mload(0x188e0), f_q)) +mstore(0x73040, mulmod(mload(0x68d00), mload(0x188e0), f_q)) +mstore(0x73060, mulmod(mload(0x68da0), mload(0x188e0), f_q)) +mstore(0x73080, mulmod(mload(0x68e40), mload(0x188e0), f_q)) +mstore(0x730a0, mulmod(mload(0x68ee0), mload(0x188e0), f_q)) +mstore(0x730c0, mulmod(mload(0x68f80), mload(0x188e0), f_q)) +mstore(0x730e0, mulmod(mload(0x69020), mload(0x188e0), f_q)) +mstore(0x73100, mulmod(mload(0x690c0), mload(0x188e0), f_q)) +mstore(0x73120, mulmod(mload(0x69160), mload(0x188e0), f_q)) +mstore(0x73140, mulmod(mload(0x69200), mload(0x188e0), f_q)) +mstore(0x73160, mulmod(mload(0x692a0), mload(0x188e0), f_q)) +mstore(0x73180, mulmod(mload(0x69340), mload(0x188e0), f_q)) +mstore(0x731a0, mulmod(mload(0x693e0), mload(0x188e0), f_q)) +mstore(0x731c0, mulmod(mload(0x69480), mload(0x188e0), f_q)) +mstore(0x731e0, mulmod(mload(0x69520), mload(0x188e0), f_q)) +mstore(0x73200, mulmod(mload(0x695c0), mload(0x188e0), f_q)) +mstore(0x73220, mulmod(mload(0x69660), mload(0x188e0), f_q)) +mstore(0x73240, mulmod(mload(0x69700), mload(0x188e0), f_q)) +mstore(0x73260, mulmod(mload(0x697a0), mload(0x188e0), f_q)) +mstore(0x73280, mulmod(mload(0x69840), mload(0x188e0), f_q)) +mstore(0x732a0, mulmod(mload(0x698e0), mload(0x188e0), f_q)) +mstore(0x732c0, mulmod(mload(0x69980), mload(0x188e0), f_q)) +mstore(0x732e0, mulmod(mload(0x69a20), mload(0x188e0), f_q)) +mstore(0x73300, mulmod(mload(0x69ac0), mload(0x188e0), f_q)) +mstore(0x73320, mulmod(mload(0x69b60), mload(0x188e0), f_q)) +mstore(0x73340, mulmod(mload(0x69c00), mload(0x188e0), f_q)) +mstore(0x73360, mulmod(mload(0x69ca0), mload(0x188e0), f_q)) +mstore(0x73380, mulmod(mload(0x69d40), mload(0x188e0), f_q)) +mstore(0x733a0, mulmod(mload(0x69de0), mload(0x188e0), f_q)) +mstore(0x733c0, mulmod(mload(0x69e80), mload(0x188e0), f_q)) +mstore(0x733e0, mulmod(mload(0x69f20), mload(0x188e0), f_q)) +mstore(0x73400, mulmod(mload(0x69fc0), mload(0x188e0), f_q)) +mstore(0x73420, mulmod(mload(0x6a060), mload(0x188e0), f_q)) +mstore(0x73440, mulmod(mload(0x6a100), mload(0x188e0), f_q)) +mstore(0x73460, mulmod(mload(0x6a1a0), mload(0x188e0), f_q)) +mstore(0x73480, mulmod(mload(0x6a240), mload(0x188e0), f_q)) +mstore(0x734a0, mulmod(mload(0x6a2e0), mload(0x188e0), f_q)) +mstore(0x734c0, mulmod(mload(0x6a380), mload(0x188e0), f_q)) +mstore(0x734e0, mulmod(mload(0x6a420), mload(0x188e0), f_q)) +mstore(0x73500, mulmod(mload(0x6a4c0), mload(0x188e0), f_q)) +mstore(0x73520, mulmod(mload(0x6a560), mload(0x188e0), f_q)) +mstore(0x73540, mulmod(mload(0x6a600), mload(0x188e0), f_q)) +mstore(0x73560, mulmod(mload(0x6a6a0), mload(0x188e0), f_q)) +mstore(0x73580, mulmod(mload(0x6a740), mload(0x188e0), f_q)) +mstore(0x735a0, mulmod(mload(0x6a7e0), mload(0x188e0), f_q)) +mstore(0x735c0, mulmod(mload(0x6a880), mload(0x188e0), f_q)) +mstore(0x735e0, mulmod(mload(0x6a920), mload(0x188e0), f_q)) +mstore(0x73600, mulmod(mload(0x6a9c0), mload(0x188e0), f_q)) +mstore(0x73620, mulmod(mload(0x6aa60), mload(0x188e0), f_q)) +mstore(0x73640, mulmod(mload(0x6ab00), mload(0x188e0), f_q)) +mstore(0x73660, mulmod(mload(0x6aba0), mload(0x188e0), f_q)) +mstore(0x73680, mulmod(mload(0x6ac40), mload(0x188e0), f_q)) +mstore(0x736a0, mulmod(mload(0x6ace0), mload(0x188e0), f_q)) +mstore(0x736c0, mulmod(mload(0x6ad80), mload(0x188e0), f_q)) +mstore(0x736e0, mulmod(mload(0x6ae20), mload(0x188e0), f_q)) +mstore(0x73700, mulmod(mload(0x6aec0), mload(0x188e0), f_q)) +mstore(0x73720, mulmod(mload(0x6af60), mload(0x188e0), f_q)) +mstore(0x73740, mulmod(mload(0x6b000), mload(0x188e0), f_q)) +mstore(0x73760, mulmod(mload(0x6b0a0), mload(0x188e0), f_q)) +mstore(0x73780, mulmod(mload(0x6b140), mload(0x188e0), f_q)) +mstore(0x737a0, mulmod(mload(0x6b1e0), mload(0x188e0), f_q)) +mstore(0x737c0, mulmod(mload(0x6b280), mload(0x188e0), f_q)) +mstore(0x737e0, mulmod(mload(0x6b320), mload(0x188e0), f_q)) +mstore(0x73800, mulmod(mload(0x6b3c0), mload(0x188e0), f_q)) +mstore(0x73820, mulmod(mload(0x6b460), mload(0x188e0), f_q)) +mstore(0x73840, mulmod(mload(0x6b500), mload(0x188e0), f_q)) +mstore(0x73860, mulmod(mload(0x6b5a0), mload(0x188e0), f_q)) +mstore(0x73880, mulmod(mload(0x6b640), mload(0x188e0), f_q)) +mstore(0x738a0, mulmod(mload(0x6b6e0), mload(0x188e0), f_q)) +mstore(0x738c0, mulmod(mload(0x6b780), mload(0x188e0), f_q)) +mstore(0x738e0, mulmod(mload(0x6b820), mload(0x188e0), f_q)) +mstore(0x73900, mulmod(mload(0x6b8c0), mload(0x188e0), f_q)) +mstore(0x73920, mulmod(mload(0x6b960), mload(0x188e0), f_q)) +mstore(0x73940, mulmod(mload(0x6ba00), mload(0x188e0), f_q)) +mstore(0x73960, mulmod(mload(0x6baa0), mload(0x188e0), f_q)) +mstore(0x73980, mulmod(mload(0x6bb40), mload(0x188e0), f_q)) +mstore(0x739a0, mulmod(mload(0x6bbe0), mload(0x188e0), f_q)) +mstore(0x739c0, mulmod(mload(0x6bc80), mload(0x188e0), f_q)) +mstore(0x739e0, mulmod(mload(0x6bd20), mload(0x188e0), f_q)) +mstore(0x73a00, mulmod(mload(0x6bdc0), mload(0x188e0), f_q)) +mstore(0x73a20, mulmod(mload(0x6be60), mload(0x188e0), f_q)) +mstore(0x73a40, mulmod(mload(0x6bf00), mload(0x188e0), f_q)) +mstore(0x73a60, mulmod(mload(0x6bfa0), mload(0x188e0), f_q)) +mstore(0x73a80, mulmod(mload(0x6c040), mload(0x188e0), f_q)) +mstore(0x73aa0, mulmod(mload(0x6c0e0), mload(0x188e0), f_q)) +mstore(0x73ac0, mulmod(mload(0x6c180), mload(0x188e0), f_q)) +mstore(0x73ae0, mulmod(mload(0x6c220), mload(0x188e0), f_q)) +mstore(0x73b00, mulmod(mload(0x6c2c0), mload(0x188e0), f_q)) +mstore(0x73b20, mulmod(mload(0x6c360), mload(0x188e0), f_q)) +mstore(0x73b40, mulmod(mload(0x6c400), mload(0x188e0), f_q)) +mstore(0x73b60, mulmod(mload(0x6c4a0), mload(0x188e0), f_q)) +mstore(0x73b80, mulmod(mload(0x6c540), mload(0x188e0), f_q)) +mstore(0x73ba0, mulmod(mload(0x6c5e0), mload(0x188e0), f_q)) +mstore(0x73bc0, mulmod(mload(0x6c680), mload(0x188e0), f_q)) +mstore(0x73be0, mulmod(mload(0x6c720), mload(0x188e0), f_q)) +mstore(0x73c00, mulmod(mload(0x6c7c0), mload(0x188e0), f_q)) +mstore(0x73c20, mulmod(mload(0x6c860), mload(0x188e0), f_q)) +mstore(0x73c40, mulmod(mload(0x6c900), mload(0x188e0), f_q)) +mstore(0x73c60, mulmod(mload(0x6c9a0), mload(0x188e0), f_q)) +mstore(0x73c80, mulmod(mload(0x6ca40), mload(0x188e0), f_q)) +mstore(0x73ca0, mulmod(mload(0x6cae0), mload(0x188e0), f_q)) +mstore(0x73cc0, mulmod(mload(0x6cb80), mload(0x188e0), f_q)) +mstore(0x73ce0, mulmod(mload(0x6cc20), mload(0x188e0), f_q)) +mstore(0x73d00, mulmod(mload(0x6ccc0), mload(0x188e0), f_q)) +mstore(0x73d20, mulmod(mload(0x6cd60), mload(0x188e0), f_q)) +mstore(0x73d40, mulmod(mload(0x6ce00), mload(0x188e0), f_q)) +mstore(0x73d60, mulmod(mload(0x6cea0), mload(0x188e0), f_q)) +mstore(0x73d80, mulmod(mload(0x6cf40), mload(0x188e0), f_q)) +mstore(0x73da0, mulmod(mload(0x6cfe0), mload(0x188e0), f_q)) +mstore(0x73dc0, mulmod(mload(0x6d080), mload(0x188e0), f_q)) +mstore(0x73de0, mulmod(mload(0x6d120), mload(0x188e0), f_q)) +mstore(0x73e00, mulmod(mload(0x6d1c0), mload(0x188e0), f_q)) +mstore(0x73e20, mulmod(mload(0x6d260), mload(0x188e0), f_q)) +mstore(0x73e40, mulmod(mload(0x6d300), mload(0x188e0), f_q)) +mstore(0x73e60, mulmod(mload(0x6d3a0), mload(0x188e0), f_q)) +mstore(0x73e80, mulmod(mload(0x6d440), mload(0x188e0), f_q)) +mstore(0x73ea0, mulmod(mload(0x6d4e0), mload(0x188e0), f_q)) +mstore(0x73ec0, mulmod(mload(0x6d580), mload(0x188e0), f_q)) +mstore(0x73ee0, mulmod(mload(0x6d620), mload(0x188e0), f_q)) +mstore(0x73f00, mulmod(mload(0x6d6c0), mload(0x188e0), f_q)) +mstore(0x73f20, mulmod(mload(0x6d760), mload(0x188e0), f_q)) +mstore(0x73f40, mulmod(mload(0x6d800), mload(0x188e0), f_q)) +mstore(0x73f60, mulmod(mload(0x6d8a0), mload(0x188e0), f_q)) +mstore(0x73f80, mulmod(mload(0x6d940), mload(0x188e0), f_q)) +mstore(0x73fa0, mulmod(mload(0x6d9e0), mload(0x188e0), f_q)) +mstore(0x73fc0, mulmod(mload(0x6da80), mload(0x188e0), f_q)) +mstore(0x73fe0, mulmod(mload(0x6db20), mload(0x188e0), f_q)) +mstore(0x74000, mulmod(mload(0x6dbc0), mload(0x188e0), f_q)) +mstore(0x74020, mulmod(mload(0x6dc60), mload(0x188e0), f_q)) +mstore(0x74040, mulmod(mload(0x6dd00), mload(0x188e0), f_q)) +mstore(0x74060, mulmod(mload(0x6dda0), mload(0x188e0), f_q)) +mstore(0x74080, mulmod(mload(0x6de40), mload(0x188e0), f_q)) +mstore(0x740a0, mulmod(mload(0x6dee0), mload(0x188e0), f_q)) +mstore(0x740c0, mulmod(mload(0x6df80), mload(0x188e0), f_q)) +mstore(0x740e0, mulmod(mload(0x6e020), mload(0x188e0), f_q)) +mstore(0x74100, mulmod(mload(0x6e0c0), mload(0x188e0), f_q)) +mstore(0x74120, mulmod(mload(0x6e160), mload(0x188e0), f_q)) +mstore(0x74140, mulmod(mload(0x6e200), mload(0x188e0), f_q)) +mstore(0x74160, mulmod(mload(0x6e2a0), mload(0x188e0), f_q)) +mstore(0x74180, mulmod(mload(0x6e340), mload(0x188e0), f_q)) +mstore(0x741a0, mulmod(mload(0x6e3e0), mload(0x188e0), f_q)) +mstore(0x741c0, mulmod(mload(0x6e480), mload(0x188e0), f_q)) +mstore(0x741e0, mulmod(mload(0x6e520), mload(0x188e0), f_q)) +mstore(0x74200, mulmod(mload(0x6e5c0), mload(0x188e0), f_q)) +mstore(0x74220, mulmod(mload(0x6e660), mload(0x188e0), f_q)) +mstore(0x74240, mulmod(mload(0x6e700), mload(0x188e0), f_q)) +mstore(0x74260, mulmod(mload(0x6e7a0), mload(0x188e0), f_q)) +mstore(0x74280, mulmod(mload(0x6e840), mload(0x188e0), f_q)) +mstore(0x742a0, mulmod(mload(0x6e8e0), mload(0x188e0), f_q)) +mstore(0x742c0, mulmod(mload(0x6e980), mload(0x188e0), f_q)) +mstore(0x742e0, mulmod(mload(0x6ea20), mload(0x188e0), f_q)) +mstore(0x74300, mulmod(mload(0x6eac0), mload(0x188e0), f_q)) +mstore(0x74320, mulmod(mload(0x6eb60), mload(0x188e0), f_q)) +mstore(0x74340, mulmod(mload(0x6ec00), mload(0x188e0), f_q)) +mstore(0x74360, mulmod(mload(0x6eca0), mload(0x188e0), f_q)) +mstore(0x74380, mulmod(mload(0x6ed40), mload(0x188e0), f_q)) +mstore(0x743a0, mulmod(mload(0x6ede0), mload(0x188e0), f_q)) +mstore(0x743c0, mulmod(mload(0x6ee80), mload(0x188e0), f_q)) +mstore(0x743e0, mulmod(mload(0x6ef20), mload(0x188e0), f_q)) +mstore(0x74400, mulmod(mload(0x6efc0), mload(0x188e0), f_q)) +mstore(0x74420, mulmod(mload(0x6f060), mload(0x188e0), f_q)) +mstore(0x74440, mulmod(mload(0x6f100), mload(0x188e0), f_q)) +mstore(0x74460, mulmod(mload(0x6f1a0), mload(0x188e0), f_q)) +mstore(0x74480, mulmod(mload(0x6f240), mload(0x188e0), f_q)) +mstore(0x744a0, mulmod(mload(0x6f2e0), mload(0x188e0), f_q)) +mstore(0x744c0, mulmod(mload(0x6f380), mload(0x188e0), f_q)) +mstore(0x744e0, mulmod(mload(0x6f420), mload(0x188e0), f_q)) +mstore(0x74500, mulmod(mload(0x6f4c0), mload(0x188e0), f_q)) +mstore(0x74520, mulmod(mload(0x6f560), mload(0x188e0), f_q)) +mstore(0x74540, mulmod(mload(0x6f600), mload(0x188e0), f_q)) +mstore(0x74560, mulmod(mload(0x6f6a0), mload(0x188e0), f_q)) +mstore(0x74580, mulmod(mload(0x6f740), mload(0x188e0), f_q)) +mstore(0x745a0, mulmod(mload(0x6f7e0), mload(0x188e0), f_q)) +mstore(0x745c0, mulmod(mload(0x6f880), mload(0x188e0), f_q)) +mstore(0x745e0, mulmod(mload(0x6f920), mload(0x188e0), f_q)) +mstore(0x74600, mulmod(mload(0x6f9c0), mload(0x188e0), f_q)) +mstore(0x74620, mulmod(mload(0x6fa60), mload(0x188e0), f_q)) +mstore(0x74640, mulmod(mload(0x6fb00), mload(0x188e0), f_q)) +mstore(0x74660, mulmod(mload(0x6fba0), mload(0x188e0), f_q)) +mstore(0x74680, mulmod(mload(0x6fc40), mload(0x188e0), f_q)) +mstore(0x746a0, mulmod(mload(0x6fce0), mload(0x188e0), f_q)) +mstore(0x746c0, mulmod(mload(0x6fd80), mload(0x188e0), f_q)) +mstore(0x746e0, mulmod(mload(0x6fe60), mload(0x188e0), f_q)) +mstore(0x74700, mulmod(mload(0x6fe80), mload(0x188e0), f_q)) +mstore(0x74720, mulmod(mload(0x6fea0), mload(0x188e0), f_q)) +mstore(0x74740, mulmod(mload(0x6ff40), mload(0x188e0), f_q)) +mstore(0x74760, addmod(mload(0x56fa0), mload(0x6ff80), f_q)) +mstore(0x74780, mulmod(1, mload(0x48a60), f_q)) +{ + let result := mulmod(mload(0x141e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14200), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14220), mload(0x48660), f_q), result, f_q) +mstore(477088, result) + } +mstore(0x747c0, mulmod(mload(0x747a0), mload(0x48ca0), f_q)) +mstore(0x747e0, mulmod(sub(f_q, mload(0x747c0)), 1, f_q)) +mstore(0x74800, mulmod(mload(0x74780), 1, f_q)) +{ + let result := mulmod(mload(0x14240), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14260), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14280), mload(0x48660), f_q), result, f_q) +mstore(477216, result) + } +mstore(0x74840, mulmod(mload(0x74820), mload(0x48ca0), f_q)) +mstore(0x74860, mulmod(sub(f_q, mload(0x74840)), mload(0x18880), f_q)) +mstore(0x74880, mulmod(mload(0x74780), mload(0x18880), f_q)) +mstore(0x748a0, addmod(mload(0x747e0), mload(0x74860), f_q)) +{ + let result := mulmod(mload(0x142a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x142c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x142e0), mload(0x48660), f_q), result, f_q) +mstore(477376, result) + } +mstore(0x748e0, mulmod(mload(0x748c0), mload(0x48ca0), f_q)) +mstore(0x74900, mulmod(sub(f_q, mload(0x748e0)), mload(0x48d00), f_q)) +mstore(0x74920, mulmod(mload(0x74780), mload(0x48d00), f_q)) +mstore(0x74940, addmod(mload(0x748a0), mload(0x74900), f_q)) +{ + let result := mulmod(mload(0x14300), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14320), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14340), mload(0x48660), f_q), result, f_q) +mstore(477536, result) + } +mstore(0x74980, mulmod(mload(0x74960), mload(0x48ca0), f_q)) +mstore(0x749a0, mulmod(sub(f_q, mload(0x74980)), mload(0x48d20), f_q)) +mstore(0x749c0, mulmod(mload(0x74780), mload(0x48d20), f_q)) +mstore(0x749e0, addmod(mload(0x74940), mload(0x749a0), f_q)) +{ + let result := mulmod(mload(0x14360), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14380), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x143a0), mload(0x48660), f_q), result, f_q) +mstore(477696, result) + } +mstore(0x74a20, mulmod(mload(0x74a00), mload(0x48ca0), f_q)) +mstore(0x74a40, mulmod(sub(f_q, mload(0x74a20)), mload(0x48d40), f_q)) +mstore(0x74a60, mulmod(mload(0x74780), mload(0x48d40), f_q)) +mstore(0x74a80, addmod(mload(0x749e0), mload(0x74a40), f_q)) +{ + let result := mulmod(mload(0x143c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x143e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14400), mload(0x48660), f_q), result, f_q) +mstore(477856, result) + } +mstore(0x74ac0, mulmod(mload(0x74aa0), mload(0x48ca0), f_q)) +mstore(0x74ae0, mulmod(sub(f_q, mload(0x74ac0)), mload(0x48d60), f_q)) +mstore(0x74b00, mulmod(mload(0x74780), mload(0x48d60), f_q)) +mstore(0x74b20, addmod(mload(0x74a80), mload(0x74ae0), f_q)) +{ + let result := mulmod(mload(0x14420), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14440), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14460), mload(0x48660), f_q), result, f_q) +mstore(478016, result) + } +mstore(0x74b60, mulmod(mload(0x74b40), mload(0x48ca0), f_q)) +mstore(0x74b80, mulmod(sub(f_q, mload(0x74b60)), mload(0x48d80), f_q)) +mstore(0x74ba0, mulmod(mload(0x74780), mload(0x48d80), f_q)) +mstore(0x74bc0, addmod(mload(0x74b20), mload(0x74b80), f_q)) +{ + let result := mulmod(mload(0x14480), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x144a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x144c0), mload(0x48660), f_q), result, f_q) +mstore(478176, result) + } +mstore(0x74c00, mulmod(mload(0x74be0), mload(0x48ca0), f_q)) +mstore(0x74c20, mulmod(sub(f_q, mload(0x74c00)), mload(0x48da0), f_q)) +mstore(0x74c40, mulmod(mload(0x74780), mload(0x48da0), f_q)) +mstore(0x74c60, addmod(mload(0x74bc0), mload(0x74c20), f_q)) +{ + let result := mulmod(mload(0x144e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14500), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14520), mload(0x48660), f_q), result, f_q) +mstore(478336, result) + } +mstore(0x74ca0, mulmod(mload(0x74c80), mload(0x48ca0), f_q)) +mstore(0x74cc0, mulmod(sub(f_q, mload(0x74ca0)), mload(0x48dc0), f_q)) +mstore(0x74ce0, mulmod(mload(0x74780), mload(0x48dc0), f_q)) +mstore(0x74d00, addmod(mload(0x74c60), mload(0x74cc0), f_q)) +{ + let result := mulmod(mload(0x14540), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14560), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14580), mload(0x48660), f_q), result, f_q) +mstore(478496, result) + } +mstore(0x74d40, mulmod(mload(0x74d20), mload(0x48ca0), f_q)) +mstore(0x74d60, mulmod(sub(f_q, mload(0x74d40)), mload(0x48de0), f_q)) +mstore(0x74d80, mulmod(mload(0x74780), mload(0x48de0), f_q)) +mstore(0x74da0, addmod(mload(0x74d00), mload(0x74d60), f_q)) +{ + let result := mulmod(mload(0x145a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x145c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x145e0), mload(0x48660), f_q), result, f_q) +mstore(478656, result) + } +mstore(0x74de0, mulmod(mload(0x74dc0), mload(0x48ca0), f_q)) +mstore(0x74e00, mulmod(sub(f_q, mload(0x74de0)), mload(0x48e00), f_q)) +mstore(0x74e20, mulmod(mload(0x74780), mload(0x48e00), f_q)) +mstore(0x74e40, addmod(mload(0x74da0), mload(0x74e00), f_q)) +{ + let result := mulmod(mload(0x14600), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14620), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14640), mload(0x48660), f_q), result, f_q) +mstore(478816, result) + } +mstore(0x74e80, mulmod(mload(0x74e60), mload(0x48ca0), f_q)) +mstore(0x74ea0, mulmod(sub(f_q, mload(0x74e80)), mload(0x48e20), f_q)) +mstore(0x74ec0, mulmod(mload(0x74780), mload(0x48e20), f_q)) +mstore(0x74ee0, addmod(mload(0x74e40), mload(0x74ea0), f_q)) +{ + let result := mulmod(mload(0x14660), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14680), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x146a0), mload(0x48660), f_q), result, f_q) +mstore(478976, result) + } +mstore(0x74f20, mulmod(mload(0x74f00), mload(0x48ca0), f_q)) +mstore(0x74f40, mulmod(sub(f_q, mload(0x74f20)), mload(0x48e40), f_q)) +mstore(0x74f60, mulmod(mload(0x74780), mload(0x48e40), f_q)) +mstore(0x74f80, addmod(mload(0x74ee0), mload(0x74f40), f_q)) +{ + let result := mulmod(mload(0x146c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x146e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14700), mload(0x48660), f_q), result, f_q) +mstore(479136, result) + } +mstore(0x74fc0, mulmod(mload(0x74fa0), mload(0x48ca0), f_q)) +mstore(0x74fe0, mulmod(sub(f_q, mload(0x74fc0)), mload(0x48e60), f_q)) +mstore(0x75000, mulmod(mload(0x74780), mload(0x48e60), f_q)) +mstore(0x75020, addmod(mload(0x74f80), mload(0x74fe0), f_q)) +{ + let result := mulmod(mload(0x14720), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14740), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14760), mload(0x48660), f_q), result, f_q) +mstore(479296, result) + } +mstore(0x75060, mulmod(mload(0x75040), mload(0x48ca0), f_q)) +mstore(0x75080, mulmod(sub(f_q, mload(0x75060)), mload(0x48e80), f_q)) +mstore(0x750a0, mulmod(mload(0x74780), mload(0x48e80), f_q)) +mstore(0x750c0, addmod(mload(0x75020), mload(0x75080), f_q)) +{ + let result := mulmod(mload(0x14780), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x147a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x147c0), mload(0x48660), f_q), result, f_q) +mstore(479456, result) + } +mstore(0x75100, mulmod(mload(0x750e0), mload(0x48ca0), f_q)) +mstore(0x75120, mulmod(sub(f_q, mload(0x75100)), mload(0x48ea0), f_q)) +mstore(0x75140, mulmod(mload(0x74780), mload(0x48ea0), f_q)) +mstore(0x75160, addmod(mload(0x750c0), mload(0x75120), f_q)) +{ + let result := mulmod(mload(0x147e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14800), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14820), mload(0x48660), f_q), result, f_q) +mstore(479616, result) + } +mstore(0x751a0, mulmod(mload(0x75180), mload(0x48ca0), f_q)) +mstore(0x751c0, mulmod(sub(f_q, mload(0x751a0)), mload(0x48ec0), f_q)) +mstore(0x751e0, mulmod(mload(0x74780), mload(0x48ec0), f_q)) +mstore(0x75200, addmod(mload(0x75160), mload(0x751c0), f_q)) +{ + let result := mulmod(mload(0x14840), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14860), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14880), mload(0x48660), f_q), result, f_q) +mstore(479776, result) + } +mstore(0x75240, mulmod(mload(0x75220), mload(0x48ca0), f_q)) +mstore(0x75260, mulmod(sub(f_q, mload(0x75240)), mload(0x48ee0), f_q)) +mstore(0x75280, mulmod(mload(0x74780), mload(0x48ee0), f_q)) +mstore(0x752a0, addmod(mload(0x75200), mload(0x75260), f_q)) +{ + let result := mulmod(mload(0x148a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x148c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x148e0), mload(0x48660), f_q), result, f_q) +mstore(479936, result) + } +mstore(0x752e0, mulmod(mload(0x752c0), mload(0x48ca0), f_q)) +mstore(0x75300, mulmod(sub(f_q, mload(0x752e0)), mload(0x48f00), f_q)) +mstore(0x75320, mulmod(mload(0x74780), mload(0x48f00), f_q)) +mstore(0x75340, addmod(mload(0x752a0), mload(0x75300), f_q)) +{ + let result := mulmod(mload(0x14900), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14920), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14940), mload(0x48660), f_q), result, f_q) +mstore(480096, result) + } +mstore(0x75380, mulmod(mload(0x75360), mload(0x48ca0), f_q)) +mstore(0x753a0, mulmod(sub(f_q, mload(0x75380)), mload(0x48f20), f_q)) +mstore(0x753c0, mulmod(mload(0x74780), mload(0x48f20), f_q)) +mstore(0x753e0, addmod(mload(0x75340), mload(0x753a0), f_q)) +{ + let result := mulmod(mload(0x14960), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14980), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x149a0), mload(0x48660), f_q), result, f_q) +mstore(480256, result) + } +mstore(0x75420, mulmod(mload(0x75400), mload(0x48ca0), f_q)) +mstore(0x75440, mulmod(sub(f_q, mload(0x75420)), mload(0x48f40), f_q)) +mstore(0x75460, mulmod(mload(0x74780), mload(0x48f40), f_q)) +mstore(0x75480, addmod(mload(0x753e0), mload(0x75440), f_q)) +{ + let result := mulmod(mload(0x149c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x149e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14a00), mload(0x48660), f_q), result, f_q) +mstore(480416, result) + } +mstore(0x754c0, mulmod(mload(0x754a0), mload(0x48ca0), f_q)) +mstore(0x754e0, mulmod(sub(f_q, mload(0x754c0)), mload(0x48f60), f_q)) +mstore(0x75500, mulmod(mload(0x74780), mload(0x48f60), f_q)) +mstore(0x75520, addmod(mload(0x75480), mload(0x754e0), f_q)) +{ + let result := mulmod(mload(0x14a20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14a40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14a60), mload(0x48660), f_q), result, f_q) +mstore(480576, result) + } +mstore(0x75560, mulmod(mload(0x75540), mload(0x48ca0), f_q)) +mstore(0x75580, mulmod(sub(f_q, mload(0x75560)), mload(0x48f80), f_q)) +mstore(0x755a0, mulmod(mload(0x74780), mload(0x48f80), f_q)) +mstore(0x755c0, addmod(mload(0x75520), mload(0x75580), f_q)) +{ + let result := mulmod(mload(0x14a80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14aa0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14ac0), mload(0x48660), f_q), result, f_q) +mstore(480736, result) + } +mstore(0x75600, mulmod(mload(0x755e0), mload(0x48ca0), f_q)) +mstore(0x75620, mulmod(sub(f_q, mload(0x75600)), mload(0x48fa0), f_q)) +mstore(0x75640, mulmod(mload(0x74780), mload(0x48fa0), f_q)) +mstore(0x75660, addmod(mload(0x755c0), mload(0x75620), f_q)) +{ + let result := mulmod(mload(0x14ae0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14b00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14b20), mload(0x48660), f_q), result, f_q) +mstore(480896, result) + } +mstore(0x756a0, mulmod(mload(0x75680), mload(0x48ca0), f_q)) +mstore(0x756c0, mulmod(sub(f_q, mload(0x756a0)), mload(0x48fc0), f_q)) +mstore(0x756e0, mulmod(mload(0x74780), mload(0x48fc0), f_q)) +mstore(0x75700, addmod(mload(0x75660), mload(0x756c0), f_q)) +{ + let result := mulmod(mload(0x14b40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14b60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14b80), mload(0x48660), f_q), result, f_q) +mstore(481056, result) + } +mstore(0x75740, mulmod(mload(0x75720), mload(0x48ca0), f_q)) +mstore(0x75760, mulmod(sub(f_q, mload(0x75740)), mload(0x48fe0), f_q)) +mstore(0x75780, mulmod(mload(0x74780), mload(0x48fe0), f_q)) +mstore(0x757a0, addmod(mload(0x75700), mload(0x75760), f_q)) +{ + let result := mulmod(mload(0x14ba0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14bc0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14be0), mload(0x48660), f_q), result, f_q) +mstore(481216, result) + } +mstore(0x757e0, mulmod(mload(0x757c0), mload(0x48ca0), f_q)) +mstore(0x75800, mulmod(sub(f_q, mload(0x757e0)), mload(0x49000), f_q)) +mstore(0x75820, mulmod(mload(0x74780), mload(0x49000), f_q)) +mstore(0x75840, addmod(mload(0x757a0), mload(0x75800), f_q)) +{ + let result := mulmod(mload(0x14c00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14c20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14c40), mload(0x48660), f_q), result, f_q) +mstore(481376, result) + } +mstore(0x75880, mulmod(mload(0x75860), mload(0x48ca0), f_q)) +mstore(0x758a0, mulmod(sub(f_q, mload(0x75880)), mload(0x49020), f_q)) +mstore(0x758c0, mulmod(mload(0x74780), mload(0x49020), f_q)) +mstore(0x758e0, addmod(mload(0x75840), mload(0x758a0), f_q)) +{ + let result := mulmod(mload(0x14c60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14c80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14ca0), mload(0x48660), f_q), result, f_q) +mstore(481536, result) + } +mstore(0x75920, mulmod(mload(0x75900), mload(0x48ca0), f_q)) +mstore(0x75940, mulmod(sub(f_q, mload(0x75920)), mload(0x49040), f_q)) +mstore(0x75960, mulmod(mload(0x74780), mload(0x49040), f_q)) +mstore(0x75980, addmod(mload(0x758e0), mload(0x75940), f_q)) +{ + let result := mulmod(mload(0x14cc0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14ce0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14d00), mload(0x48660), f_q), result, f_q) +mstore(481696, result) + } +mstore(0x759c0, mulmod(mload(0x759a0), mload(0x48ca0), f_q)) +mstore(0x759e0, mulmod(sub(f_q, mload(0x759c0)), mload(0x49060), f_q)) +mstore(0x75a00, mulmod(mload(0x74780), mload(0x49060), f_q)) +mstore(0x75a20, addmod(mload(0x75980), mload(0x759e0), f_q)) +{ + let result := mulmod(mload(0x14d20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14d40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14d60), mload(0x48660), f_q), result, f_q) +mstore(481856, result) + } +mstore(0x75a60, mulmod(mload(0x75a40), mload(0x48ca0), f_q)) +mstore(0x75a80, mulmod(sub(f_q, mload(0x75a60)), mload(0x49080), f_q)) +mstore(0x75aa0, mulmod(mload(0x74780), mload(0x49080), f_q)) +mstore(0x75ac0, addmod(mload(0x75a20), mload(0x75a80), f_q)) +{ + let result := mulmod(mload(0x14d80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14da0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14dc0), mload(0x48660), f_q), result, f_q) +mstore(482016, result) + } +mstore(0x75b00, mulmod(mload(0x75ae0), mload(0x48ca0), f_q)) +mstore(0x75b20, mulmod(sub(f_q, mload(0x75b00)), mload(0x490a0), f_q)) +mstore(0x75b40, mulmod(mload(0x74780), mload(0x490a0), f_q)) +mstore(0x75b60, addmod(mload(0x75ac0), mload(0x75b20), f_q)) +{ + let result := mulmod(mload(0x14de0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14e00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14e20), mload(0x48660), f_q), result, f_q) +mstore(482176, result) + } +mstore(0x75ba0, mulmod(mload(0x75b80), mload(0x48ca0), f_q)) +mstore(0x75bc0, mulmod(sub(f_q, mload(0x75ba0)), mload(0x490c0), f_q)) +mstore(0x75be0, mulmod(mload(0x74780), mload(0x490c0), f_q)) +mstore(0x75c00, addmod(mload(0x75b60), mload(0x75bc0), f_q)) +{ + let result := mulmod(mload(0x14e40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14e60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14e80), mload(0x48660), f_q), result, f_q) +mstore(482336, result) + } +mstore(0x75c40, mulmod(mload(0x75c20), mload(0x48ca0), f_q)) +mstore(0x75c60, mulmod(sub(f_q, mload(0x75c40)), mload(0x490e0), f_q)) +mstore(0x75c80, mulmod(mload(0x74780), mload(0x490e0), f_q)) +mstore(0x75ca0, addmod(mload(0x75c00), mload(0x75c60), f_q)) +{ + let result := mulmod(mload(0x14ea0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14ec0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14ee0), mload(0x48660), f_q), result, f_q) +mstore(482496, result) + } +mstore(0x75ce0, mulmod(mload(0x75cc0), mload(0x48ca0), f_q)) +mstore(0x75d00, mulmod(sub(f_q, mload(0x75ce0)), mload(0x49100), f_q)) +mstore(0x75d20, mulmod(mload(0x74780), mload(0x49100), f_q)) +mstore(0x75d40, addmod(mload(0x75ca0), mload(0x75d00), f_q)) +{ + let result := mulmod(mload(0x14f00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14f20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14f40), mload(0x48660), f_q), result, f_q) +mstore(482656, result) + } +mstore(0x75d80, mulmod(mload(0x75d60), mload(0x48ca0), f_q)) +mstore(0x75da0, mulmod(sub(f_q, mload(0x75d80)), mload(0x49120), f_q)) +mstore(0x75dc0, mulmod(mload(0x74780), mload(0x49120), f_q)) +mstore(0x75de0, addmod(mload(0x75d40), mload(0x75da0), f_q)) +{ + let result := mulmod(mload(0x14f60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14f80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x14fa0), mload(0x48660), f_q), result, f_q) +mstore(482816, result) + } +mstore(0x75e20, mulmod(mload(0x75e00), mload(0x48ca0), f_q)) +mstore(0x75e40, mulmod(sub(f_q, mload(0x75e20)), mload(0x49140), f_q)) +mstore(0x75e60, mulmod(mload(0x74780), mload(0x49140), f_q)) +mstore(0x75e80, addmod(mload(0x75de0), mload(0x75e40), f_q)) +{ + let result := mulmod(mload(0x14fc0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x14fe0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15000), mload(0x48660), f_q), result, f_q) +mstore(482976, result) + } +mstore(0x75ec0, mulmod(mload(0x75ea0), mload(0x48ca0), f_q)) +mstore(0x75ee0, mulmod(sub(f_q, mload(0x75ec0)), mload(0x49160), f_q)) +mstore(0x75f00, mulmod(mload(0x74780), mload(0x49160), f_q)) +mstore(0x75f20, addmod(mload(0x75e80), mload(0x75ee0), f_q)) +{ + let result := mulmod(mload(0x15020), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15040), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15060), mload(0x48660), f_q), result, f_q) +mstore(483136, result) + } +mstore(0x75f60, mulmod(mload(0x75f40), mload(0x48ca0), f_q)) +mstore(0x75f80, mulmod(sub(f_q, mload(0x75f60)), mload(0x49180), f_q)) +mstore(0x75fa0, mulmod(mload(0x74780), mload(0x49180), f_q)) +mstore(0x75fc0, addmod(mload(0x75f20), mload(0x75f80), f_q)) +{ + let result := mulmod(mload(0x15080), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x150a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x150c0), mload(0x48660), f_q), result, f_q) +mstore(483296, result) + } +mstore(0x76000, mulmod(mload(0x75fe0), mload(0x48ca0), f_q)) +mstore(0x76020, mulmod(sub(f_q, mload(0x76000)), mload(0x491a0), f_q)) +mstore(0x76040, mulmod(mload(0x74780), mload(0x491a0), f_q)) +mstore(0x76060, addmod(mload(0x75fc0), mload(0x76020), f_q)) +{ + let result := mulmod(mload(0x150e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15100), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15120), mload(0x48660), f_q), result, f_q) +mstore(483456, result) + } +mstore(0x760a0, mulmod(mload(0x76080), mload(0x48ca0), f_q)) +mstore(0x760c0, mulmod(sub(f_q, mload(0x760a0)), mload(0x491c0), f_q)) +mstore(0x760e0, mulmod(mload(0x74780), mload(0x491c0), f_q)) +mstore(0x76100, addmod(mload(0x76060), mload(0x760c0), f_q)) +{ + let result := mulmod(mload(0x15140), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15160), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15180), mload(0x48660), f_q), result, f_q) +mstore(483616, result) + } +mstore(0x76140, mulmod(mload(0x76120), mload(0x48ca0), f_q)) +mstore(0x76160, mulmod(sub(f_q, mload(0x76140)), mload(0x491e0), f_q)) +mstore(0x76180, mulmod(mload(0x74780), mload(0x491e0), f_q)) +mstore(0x761a0, addmod(mload(0x76100), mload(0x76160), f_q)) +{ + let result := mulmod(mload(0x151a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x151c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x151e0), mload(0x48660), f_q), result, f_q) +mstore(483776, result) + } +mstore(0x761e0, mulmod(mload(0x761c0), mload(0x48ca0), f_q)) +mstore(0x76200, mulmod(sub(f_q, mload(0x761e0)), mload(0x49200), f_q)) +mstore(0x76220, mulmod(mload(0x74780), mload(0x49200), f_q)) +mstore(0x76240, addmod(mload(0x761a0), mload(0x76200), f_q)) +{ + let result := mulmod(mload(0x15200), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15220), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15240), mload(0x48660), f_q), result, f_q) +mstore(483936, result) + } +mstore(0x76280, mulmod(mload(0x76260), mload(0x48ca0), f_q)) +mstore(0x762a0, mulmod(sub(f_q, mload(0x76280)), mload(0x49220), f_q)) +mstore(0x762c0, mulmod(mload(0x74780), mload(0x49220), f_q)) +mstore(0x762e0, addmod(mload(0x76240), mload(0x762a0), f_q)) +{ + let result := mulmod(mload(0x15260), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15280), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x152a0), mload(0x48660), f_q), result, f_q) +mstore(484096, result) + } +mstore(0x76320, mulmod(mload(0x76300), mload(0x48ca0), f_q)) +mstore(0x76340, mulmod(sub(f_q, mload(0x76320)), mload(0x49240), f_q)) +mstore(0x76360, mulmod(mload(0x74780), mload(0x49240), f_q)) +mstore(0x76380, addmod(mload(0x762e0), mload(0x76340), f_q)) +{ + let result := mulmod(mload(0x152c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x152e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15300), mload(0x48660), f_q), result, f_q) +mstore(484256, result) + } +mstore(0x763c0, mulmod(mload(0x763a0), mload(0x48ca0), f_q)) +mstore(0x763e0, mulmod(sub(f_q, mload(0x763c0)), mload(0x49260), f_q)) +mstore(0x76400, mulmod(mload(0x74780), mload(0x49260), f_q)) +mstore(0x76420, addmod(mload(0x76380), mload(0x763e0), f_q)) +{ + let result := mulmod(mload(0x15320), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15340), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15360), mload(0x48660), f_q), result, f_q) +mstore(484416, result) + } +mstore(0x76460, mulmod(mload(0x76440), mload(0x48ca0), f_q)) +mstore(0x76480, mulmod(sub(f_q, mload(0x76460)), mload(0x49280), f_q)) +mstore(0x764a0, mulmod(mload(0x74780), mload(0x49280), f_q)) +mstore(0x764c0, addmod(mload(0x76420), mload(0x76480), f_q)) +{ + let result := mulmod(mload(0x15380), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x153a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x153c0), mload(0x48660), f_q), result, f_q) +mstore(484576, result) + } +mstore(0x76500, mulmod(mload(0x764e0), mload(0x48ca0), f_q)) +mstore(0x76520, mulmod(sub(f_q, mload(0x76500)), mload(0x492a0), f_q)) +mstore(0x76540, mulmod(mload(0x74780), mload(0x492a0), f_q)) +mstore(0x76560, addmod(mload(0x764c0), mload(0x76520), f_q)) +{ + let result := mulmod(mload(0x153e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15400), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15420), mload(0x48660), f_q), result, f_q) +mstore(484736, result) + } +mstore(0x765a0, mulmod(mload(0x76580), mload(0x48ca0), f_q)) +mstore(0x765c0, mulmod(sub(f_q, mload(0x765a0)), mload(0x492c0), f_q)) +mstore(0x765e0, mulmod(mload(0x74780), mload(0x492c0), f_q)) +mstore(0x76600, addmod(mload(0x76560), mload(0x765c0), f_q)) +{ + let result := mulmod(mload(0x15440), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15460), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15480), mload(0x48660), f_q), result, f_q) +mstore(484896, result) + } +mstore(0x76640, mulmod(mload(0x76620), mload(0x48ca0), f_q)) +mstore(0x76660, mulmod(sub(f_q, mload(0x76640)), mload(0x492e0), f_q)) +mstore(0x76680, mulmod(mload(0x74780), mload(0x492e0), f_q)) +mstore(0x766a0, addmod(mload(0x76600), mload(0x76660), f_q)) +{ + let result := mulmod(mload(0x154a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x154c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x154e0), mload(0x48660), f_q), result, f_q) +mstore(485056, result) + } +mstore(0x766e0, mulmod(mload(0x766c0), mload(0x48ca0), f_q)) +mstore(0x76700, mulmod(sub(f_q, mload(0x766e0)), mload(0x49300), f_q)) +mstore(0x76720, mulmod(mload(0x74780), mload(0x49300), f_q)) +mstore(0x76740, addmod(mload(0x766a0), mload(0x76700), f_q)) +{ + let result := mulmod(mload(0x15500), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15520), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15540), mload(0x48660), f_q), result, f_q) +mstore(485216, result) + } +mstore(0x76780, mulmod(mload(0x76760), mload(0x48ca0), f_q)) +mstore(0x767a0, mulmod(sub(f_q, mload(0x76780)), mload(0x49320), f_q)) +mstore(0x767c0, mulmod(mload(0x74780), mload(0x49320), f_q)) +mstore(0x767e0, addmod(mload(0x76740), mload(0x767a0), f_q)) +{ + let result := mulmod(mload(0x15560), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15580), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x155a0), mload(0x48660), f_q), result, f_q) +mstore(485376, result) + } +mstore(0x76820, mulmod(mload(0x76800), mload(0x48ca0), f_q)) +mstore(0x76840, mulmod(sub(f_q, mload(0x76820)), mload(0x49340), f_q)) +mstore(0x76860, mulmod(mload(0x74780), mload(0x49340), f_q)) +mstore(0x76880, addmod(mload(0x767e0), mload(0x76840), f_q)) +{ + let result := mulmod(mload(0x155c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x155e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15600), mload(0x48660), f_q), result, f_q) +mstore(485536, result) + } +mstore(0x768c0, mulmod(mload(0x768a0), mload(0x48ca0), f_q)) +mstore(0x768e0, mulmod(sub(f_q, mload(0x768c0)), mload(0x49360), f_q)) +mstore(0x76900, mulmod(mload(0x74780), mload(0x49360), f_q)) +mstore(0x76920, addmod(mload(0x76880), mload(0x768e0), f_q)) +{ + let result := mulmod(mload(0x15620), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15640), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15660), mload(0x48660), f_q), result, f_q) +mstore(485696, result) + } +mstore(0x76960, mulmod(mload(0x76940), mload(0x48ca0), f_q)) +mstore(0x76980, mulmod(sub(f_q, mload(0x76960)), mload(0x49380), f_q)) +mstore(0x769a0, mulmod(mload(0x74780), mload(0x49380), f_q)) +mstore(0x769c0, addmod(mload(0x76920), mload(0x76980), f_q)) +{ + let result := mulmod(mload(0x15680), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x156a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x156c0), mload(0x48660), f_q), result, f_q) +mstore(485856, result) + } +mstore(0x76a00, mulmod(mload(0x769e0), mload(0x48ca0), f_q)) +mstore(0x76a20, mulmod(sub(f_q, mload(0x76a00)), mload(0x493a0), f_q)) +mstore(0x76a40, mulmod(mload(0x74780), mload(0x493a0), f_q)) +mstore(0x76a60, addmod(mload(0x769c0), mload(0x76a20), f_q)) +{ + let result := mulmod(mload(0x156e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15700), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15720), mload(0x48660), f_q), result, f_q) +mstore(486016, result) + } +mstore(0x76aa0, mulmod(mload(0x76a80), mload(0x48ca0), f_q)) +mstore(0x76ac0, mulmod(sub(f_q, mload(0x76aa0)), mload(0x493c0), f_q)) +mstore(0x76ae0, mulmod(mload(0x74780), mload(0x493c0), f_q)) +mstore(0x76b00, addmod(mload(0x76a60), mload(0x76ac0), f_q)) +{ + let result := mulmod(mload(0x15740), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15760), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15780), mload(0x48660), f_q), result, f_q) +mstore(486176, result) + } +mstore(0x76b40, mulmod(mload(0x76b20), mload(0x48ca0), f_q)) +mstore(0x76b60, mulmod(sub(f_q, mload(0x76b40)), mload(0x493e0), f_q)) +mstore(0x76b80, mulmod(mload(0x74780), mload(0x493e0), f_q)) +mstore(0x76ba0, addmod(mload(0x76b00), mload(0x76b60), f_q)) +{ + let result := mulmod(mload(0x157a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x157c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x157e0), mload(0x48660), f_q), result, f_q) +mstore(486336, result) + } +mstore(0x76be0, mulmod(mload(0x76bc0), mload(0x48ca0), f_q)) +mstore(0x76c00, mulmod(sub(f_q, mload(0x76be0)), mload(0x49400), f_q)) +mstore(0x76c20, mulmod(mload(0x74780), mload(0x49400), f_q)) +mstore(0x76c40, addmod(mload(0x76ba0), mload(0x76c00), f_q)) +{ + let result := mulmod(mload(0x15800), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15820), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15840), mload(0x48660), f_q), result, f_q) +mstore(486496, result) + } +mstore(0x76c80, mulmod(mload(0x76c60), mload(0x48ca0), f_q)) +mstore(0x76ca0, mulmod(sub(f_q, mload(0x76c80)), mload(0x49420), f_q)) +mstore(0x76cc0, mulmod(mload(0x74780), mload(0x49420), f_q)) +mstore(0x76ce0, addmod(mload(0x76c40), mload(0x76ca0), f_q)) +{ + let result := mulmod(mload(0x15860), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15880), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x158a0), mload(0x48660), f_q), result, f_q) +mstore(486656, result) + } +mstore(0x76d20, mulmod(mload(0x76d00), mload(0x48ca0), f_q)) +mstore(0x76d40, mulmod(sub(f_q, mload(0x76d20)), mload(0x49440), f_q)) +mstore(0x76d60, mulmod(mload(0x74780), mload(0x49440), f_q)) +mstore(0x76d80, addmod(mload(0x76ce0), mload(0x76d40), f_q)) +{ + let result := mulmod(mload(0x158c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x158e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15900), mload(0x48660), f_q), result, f_q) +mstore(486816, result) + } +mstore(0x76dc0, mulmod(mload(0x76da0), mload(0x48ca0), f_q)) +mstore(0x76de0, mulmod(sub(f_q, mload(0x76dc0)), mload(0x49460), f_q)) +mstore(0x76e00, mulmod(mload(0x74780), mload(0x49460), f_q)) +mstore(0x76e20, addmod(mload(0x76d80), mload(0x76de0), f_q)) +{ + let result := mulmod(mload(0x15920), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15940), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15960), mload(0x48660), f_q), result, f_q) +mstore(486976, result) + } +mstore(0x76e60, mulmod(mload(0x76e40), mload(0x48ca0), f_q)) +mstore(0x76e80, mulmod(sub(f_q, mload(0x76e60)), mload(0x49480), f_q)) +mstore(0x76ea0, mulmod(mload(0x74780), mload(0x49480), f_q)) +mstore(0x76ec0, addmod(mload(0x76e20), mload(0x76e80), f_q)) +{ + let result := mulmod(mload(0x15980), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x159a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x159c0), mload(0x48660), f_q), result, f_q) +mstore(487136, result) + } +mstore(0x76f00, mulmod(mload(0x76ee0), mload(0x48ca0), f_q)) +mstore(0x76f20, mulmod(sub(f_q, mload(0x76f00)), mload(0x494a0), f_q)) +mstore(0x76f40, mulmod(mload(0x74780), mload(0x494a0), f_q)) +mstore(0x76f60, addmod(mload(0x76ec0), mload(0x76f20), f_q)) +{ + let result := mulmod(mload(0x159e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15a00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15a20), mload(0x48660), f_q), result, f_q) +mstore(487296, result) + } +mstore(0x76fa0, mulmod(mload(0x76f80), mload(0x48ca0), f_q)) +mstore(0x76fc0, mulmod(sub(f_q, mload(0x76fa0)), mload(0x494c0), f_q)) +mstore(0x76fe0, mulmod(mload(0x74780), mload(0x494c0), f_q)) +mstore(0x77000, addmod(mload(0x76f60), mload(0x76fc0), f_q)) +{ + let result := mulmod(mload(0x15a40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15a60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15a80), mload(0x48660), f_q), result, f_q) +mstore(487456, result) + } +mstore(0x77040, mulmod(mload(0x77020), mload(0x48ca0), f_q)) +mstore(0x77060, mulmod(sub(f_q, mload(0x77040)), mload(0x494e0), f_q)) +mstore(0x77080, mulmod(mload(0x74780), mload(0x494e0), f_q)) +mstore(0x770a0, addmod(mload(0x77000), mload(0x77060), f_q)) +{ + let result := mulmod(mload(0x15aa0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15ac0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15ae0), mload(0x48660), f_q), result, f_q) +mstore(487616, result) + } +mstore(0x770e0, mulmod(mload(0x770c0), mload(0x48ca0), f_q)) +mstore(0x77100, mulmod(sub(f_q, mload(0x770e0)), mload(0x49500), f_q)) +mstore(0x77120, mulmod(mload(0x74780), mload(0x49500), f_q)) +mstore(0x77140, addmod(mload(0x770a0), mload(0x77100), f_q)) +{ + let result := mulmod(mload(0x15b00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15b20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15b40), mload(0x48660), f_q), result, f_q) +mstore(487776, result) + } +mstore(0x77180, mulmod(mload(0x77160), mload(0x48ca0), f_q)) +mstore(0x771a0, mulmod(sub(f_q, mload(0x77180)), mload(0x49520), f_q)) +mstore(0x771c0, mulmod(mload(0x74780), mload(0x49520), f_q)) +mstore(0x771e0, addmod(mload(0x77140), mload(0x771a0), f_q)) +{ + let result := mulmod(mload(0x15b60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15b80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15ba0), mload(0x48660), f_q), result, f_q) +mstore(487936, result) + } +mstore(0x77220, mulmod(mload(0x77200), mload(0x48ca0), f_q)) +mstore(0x77240, mulmod(sub(f_q, mload(0x77220)), mload(0x49540), f_q)) +mstore(0x77260, mulmod(mload(0x74780), mload(0x49540), f_q)) +mstore(0x77280, addmod(mload(0x771e0), mload(0x77240), f_q)) +{ + let result := mulmod(mload(0x15bc0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15be0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15c00), mload(0x48660), f_q), result, f_q) +mstore(488096, result) + } +mstore(0x772c0, mulmod(mload(0x772a0), mload(0x48ca0), f_q)) +mstore(0x772e0, mulmod(sub(f_q, mload(0x772c0)), mload(0x49560), f_q)) +mstore(0x77300, mulmod(mload(0x74780), mload(0x49560), f_q)) +mstore(0x77320, addmod(mload(0x77280), mload(0x772e0), f_q)) +{ + let result := mulmod(mload(0x15c20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15c40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15c60), mload(0x48660), f_q), result, f_q) +mstore(488256, result) + } +mstore(0x77360, mulmod(mload(0x77340), mload(0x48ca0), f_q)) +mstore(0x77380, mulmod(sub(f_q, mload(0x77360)), mload(0x49580), f_q)) +mstore(0x773a0, mulmod(mload(0x74780), mload(0x49580), f_q)) +mstore(0x773c0, addmod(mload(0x77320), mload(0x77380), f_q)) +{ + let result := mulmod(mload(0x15c80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15ca0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15cc0), mload(0x48660), f_q), result, f_q) +mstore(488416, result) + } +mstore(0x77400, mulmod(mload(0x773e0), mload(0x48ca0), f_q)) +mstore(0x77420, mulmod(sub(f_q, mload(0x77400)), mload(0x495a0), f_q)) +mstore(0x77440, mulmod(mload(0x74780), mload(0x495a0), f_q)) +mstore(0x77460, addmod(mload(0x773c0), mload(0x77420), f_q)) +{ + let result := mulmod(mload(0x15ce0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15d00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15d20), mload(0x48660), f_q), result, f_q) +mstore(488576, result) + } +mstore(0x774a0, mulmod(mload(0x77480), mload(0x48ca0), f_q)) +mstore(0x774c0, mulmod(sub(f_q, mload(0x774a0)), mload(0x495c0), f_q)) +mstore(0x774e0, mulmod(mload(0x74780), mload(0x495c0), f_q)) +mstore(0x77500, addmod(mload(0x77460), mload(0x774c0), f_q)) +{ + let result := mulmod(mload(0x15d40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15d60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15d80), mload(0x48660), f_q), result, f_q) +mstore(488736, result) + } +mstore(0x77540, mulmod(mload(0x77520), mload(0x48ca0), f_q)) +mstore(0x77560, mulmod(sub(f_q, mload(0x77540)), mload(0x495e0), f_q)) +mstore(0x77580, mulmod(mload(0x74780), mload(0x495e0), f_q)) +mstore(0x775a0, addmod(mload(0x77500), mload(0x77560), f_q)) +{ + let result := mulmod(mload(0x15da0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15dc0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15de0), mload(0x48660), f_q), result, f_q) +mstore(488896, result) + } +mstore(0x775e0, mulmod(mload(0x775c0), mload(0x48ca0), f_q)) +mstore(0x77600, mulmod(sub(f_q, mload(0x775e0)), mload(0x49600), f_q)) +mstore(0x77620, mulmod(mload(0x74780), mload(0x49600), f_q)) +mstore(0x77640, addmod(mload(0x775a0), mload(0x77600), f_q)) +{ + let result := mulmod(mload(0x15e00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15e20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15e40), mload(0x48660), f_q), result, f_q) +mstore(489056, result) + } +mstore(0x77680, mulmod(mload(0x77660), mload(0x48ca0), f_q)) +mstore(0x776a0, mulmod(sub(f_q, mload(0x77680)), mload(0x49620), f_q)) +mstore(0x776c0, mulmod(mload(0x74780), mload(0x49620), f_q)) +mstore(0x776e0, addmod(mload(0x77640), mload(0x776a0), f_q)) +{ + let result := mulmod(mload(0x15e60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15e80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15ea0), mload(0x48660), f_q), result, f_q) +mstore(489216, result) + } +mstore(0x77720, mulmod(mload(0x77700), mload(0x48ca0), f_q)) +mstore(0x77740, mulmod(sub(f_q, mload(0x77720)), mload(0x49640), f_q)) +mstore(0x77760, mulmod(mload(0x74780), mload(0x49640), f_q)) +mstore(0x77780, addmod(mload(0x776e0), mload(0x77740), f_q)) +{ + let result := mulmod(mload(0x15ec0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15ee0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15f00), mload(0x48660), f_q), result, f_q) +mstore(489376, result) + } +mstore(0x777c0, mulmod(mload(0x777a0), mload(0x48ca0), f_q)) +mstore(0x777e0, mulmod(sub(f_q, mload(0x777c0)), mload(0x49660), f_q)) +mstore(0x77800, mulmod(mload(0x74780), mload(0x49660), f_q)) +mstore(0x77820, addmod(mload(0x77780), mload(0x777e0), f_q)) +{ + let result := mulmod(mload(0x15f20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15f40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15f60), mload(0x48660), f_q), result, f_q) +mstore(489536, result) + } +mstore(0x77860, mulmod(mload(0x77840), mload(0x48ca0), f_q)) +mstore(0x77880, mulmod(sub(f_q, mload(0x77860)), mload(0x49680), f_q)) +mstore(0x778a0, mulmod(mload(0x74780), mload(0x49680), f_q)) +mstore(0x778c0, addmod(mload(0x77820), mload(0x77880), f_q)) +{ + let result := mulmod(mload(0x15f80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x15fa0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x15fc0), mload(0x48660), f_q), result, f_q) +mstore(489696, result) + } +mstore(0x77900, mulmod(mload(0x778e0), mload(0x48ca0), f_q)) +mstore(0x77920, mulmod(sub(f_q, mload(0x77900)), mload(0x496a0), f_q)) +mstore(0x77940, mulmod(mload(0x74780), mload(0x496a0), f_q)) +mstore(0x77960, addmod(mload(0x778c0), mload(0x77920), f_q)) +{ + let result := mulmod(mload(0x15fe0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16000), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16020), mload(0x48660), f_q), result, f_q) +mstore(489856, result) + } +mstore(0x779a0, mulmod(mload(0x77980), mload(0x48ca0), f_q)) +mstore(0x779c0, mulmod(sub(f_q, mload(0x779a0)), mload(0x496c0), f_q)) +mstore(0x779e0, mulmod(mload(0x74780), mload(0x496c0), f_q)) +mstore(0x77a00, addmod(mload(0x77960), mload(0x779c0), f_q)) +{ + let result := mulmod(mload(0x16040), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16060), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16080), mload(0x48660), f_q), result, f_q) +mstore(490016, result) + } +mstore(0x77a40, mulmod(mload(0x77a20), mload(0x48ca0), f_q)) +mstore(0x77a60, mulmod(sub(f_q, mload(0x77a40)), mload(0x496e0), f_q)) +mstore(0x77a80, mulmod(mload(0x74780), mload(0x496e0), f_q)) +mstore(0x77aa0, addmod(mload(0x77a00), mload(0x77a60), f_q)) +{ + let result := mulmod(mload(0x160a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x160c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x160e0), mload(0x48660), f_q), result, f_q) +mstore(490176, result) + } +mstore(0x77ae0, mulmod(mload(0x77ac0), mload(0x48ca0), f_q)) +mstore(0x77b00, mulmod(sub(f_q, mload(0x77ae0)), mload(0x49700), f_q)) +mstore(0x77b20, mulmod(mload(0x74780), mload(0x49700), f_q)) +mstore(0x77b40, addmod(mload(0x77aa0), mload(0x77b00), f_q)) +{ + let result := mulmod(mload(0x16100), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16120), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16140), mload(0x48660), f_q), result, f_q) +mstore(490336, result) + } +mstore(0x77b80, mulmod(mload(0x77b60), mload(0x48ca0), f_q)) +mstore(0x77ba0, mulmod(sub(f_q, mload(0x77b80)), mload(0x49720), f_q)) +mstore(0x77bc0, mulmod(mload(0x74780), mload(0x49720), f_q)) +mstore(0x77be0, addmod(mload(0x77b40), mload(0x77ba0), f_q)) +{ + let result := mulmod(mload(0x16160), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16180), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x161a0), mload(0x48660), f_q), result, f_q) +mstore(490496, result) + } +mstore(0x77c20, mulmod(mload(0x77c00), mload(0x48ca0), f_q)) +mstore(0x77c40, mulmod(sub(f_q, mload(0x77c20)), mload(0x49740), f_q)) +mstore(0x77c60, mulmod(mload(0x74780), mload(0x49740), f_q)) +mstore(0x77c80, addmod(mload(0x77be0), mload(0x77c40), f_q)) +{ + let result := mulmod(mload(0x161c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x161e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16200), mload(0x48660), f_q), result, f_q) +mstore(490656, result) + } +mstore(0x77cc0, mulmod(mload(0x77ca0), mload(0x48ca0), f_q)) +mstore(0x77ce0, mulmod(sub(f_q, mload(0x77cc0)), mload(0x49760), f_q)) +mstore(0x77d00, mulmod(mload(0x74780), mload(0x49760), f_q)) +mstore(0x77d20, addmod(mload(0x77c80), mload(0x77ce0), f_q)) +{ + let result := mulmod(mload(0x16220), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16240), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16260), mload(0x48660), f_q), result, f_q) +mstore(490816, result) + } +mstore(0x77d60, mulmod(mload(0x77d40), mload(0x48ca0), f_q)) +mstore(0x77d80, mulmod(sub(f_q, mload(0x77d60)), mload(0x49780), f_q)) +mstore(0x77da0, mulmod(mload(0x74780), mload(0x49780), f_q)) +mstore(0x77dc0, addmod(mload(0x77d20), mload(0x77d80), f_q)) +{ + let result := mulmod(mload(0x16280), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x162a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x162c0), mload(0x48660), f_q), result, f_q) +mstore(490976, result) + } +mstore(0x77e00, mulmod(mload(0x77de0), mload(0x48ca0), f_q)) +mstore(0x77e20, mulmod(sub(f_q, mload(0x77e00)), mload(0x497a0), f_q)) +mstore(0x77e40, mulmod(mload(0x74780), mload(0x497a0), f_q)) +mstore(0x77e60, addmod(mload(0x77dc0), mload(0x77e20), f_q)) +{ + let result := mulmod(mload(0x162e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16300), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16320), mload(0x48660), f_q), result, f_q) +mstore(491136, result) + } +mstore(0x77ea0, mulmod(mload(0x77e80), mload(0x48ca0), f_q)) +mstore(0x77ec0, mulmod(sub(f_q, mload(0x77ea0)), mload(0x497c0), f_q)) +mstore(0x77ee0, mulmod(mload(0x74780), mload(0x497c0), f_q)) +mstore(0x77f00, addmod(mload(0x77e60), mload(0x77ec0), f_q)) +{ + let result := mulmod(mload(0x16340), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16360), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16380), mload(0x48660), f_q), result, f_q) +mstore(491296, result) + } +mstore(0x77f40, mulmod(mload(0x77f20), mload(0x48ca0), f_q)) +mstore(0x77f60, mulmod(sub(f_q, mload(0x77f40)), mload(0x497e0), f_q)) +mstore(0x77f80, mulmod(mload(0x74780), mload(0x497e0), f_q)) +mstore(0x77fa0, addmod(mload(0x77f00), mload(0x77f60), f_q)) +{ + let result := mulmod(mload(0x163a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x163c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x163e0), mload(0x48660), f_q), result, f_q) +mstore(491456, result) + } +mstore(0x77fe0, mulmod(mload(0x77fc0), mload(0x48ca0), f_q)) +mstore(0x78000, mulmod(sub(f_q, mload(0x77fe0)), mload(0x49800), f_q)) +mstore(0x78020, mulmod(mload(0x74780), mload(0x49800), f_q)) +mstore(0x78040, addmod(mload(0x77fa0), mload(0x78000), f_q)) +{ + let result := mulmod(mload(0x16400), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16420), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16440), mload(0x48660), f_q), result, f_q) +mstore(491616, result) + } +mstore(0x78080, mulmod(mload(0x78060), mload(0x48ca0), f_q)) +mstore(0x780a0, mulmod(sub(f_q, mload(0x78080)), mload(0x49820), f_q)) +mstore(0x780c0, mulmod(mload(0x74780), mload(0x49820), f_q)) +mstore(0x780e0, addmod(mload(0x78040), mload(0x780a0), f_q)) +{ + let result := mulmod(mload(0x16460), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16480), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x164a0), mload(0x48660), f_q), result, f_q) +mstore(491776, result) + } +mstore(0x78120, mulmod(mload(0x78100), mload(0x48ca0), f_q)) +mstore(0x78140, mulmod(sub(f_q, mload(0x78120)), mload(0x49840), f_q)) +mstore(0x78160, mulmod(mload(0x74780), mload(0x49840), f_q)) +mstore(0x78180, addmod(mload(0x780e0), mload(0x78140), f_q)) +{ + let result := mulmod(mload(0x164c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x164e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16500), mload(0x48660), f_q), result, f_q) +mstore(491936, result) + } +mstore(0x781c0, mulmod(mload(0x781a0), mload(0x48ca0), f_q)) +mstore(0x781e0, mulmod(sub(f_q, mload(0x781c0)), mload(0x49860), f_q)) +mstore(0x78200, mulmod(mload(0x74780), mload(0x49860), f_q)) +mstore(0x78220, addmod(mload(0x78180), mload(0x781e0), f_q)) +{ + let result := mulmod(mload(0x16520), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16540), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16560), mload(0x48660), f_q), result, f_q) +mstore(492096, result) + } +mstore(0x78260, mulmod(mload(0x78240), mload(0x48ca0), f_q)) +mstore(0x78280, mulmod(sub(f_q, mload(0x78260)), mload(0x49880), f_q)) +mstore(0x782a0, mulmod(mload(0x74780), mload(0x49880), f_q)) +mstore(0x782c0, addmod(mload(0x78220), mload(0x78280), f_q)) +{ + let result := mulmod(mload(0x16580), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x165a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x165c0), mload(0x48660), f_q), result, f_q) +mstore(492256, result) + } +mstore(0x78300, mulmod(mload(0x782e0), mload(0x48ca0), f_q)) +mstore(0x78320, mulmod(sub(f_q, mload(0x78300)), mload(0x498a0), f_q)) +mstore(0x78340, mulmod(mload(0x74780), mload(0x498a0), f_q)) +mstore(0x78360, addmod(mload(0x782c0), mload(0x78320), f_q)) +{ + let result := mulmod(mload(0x165e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16600), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16620), mload(0x48660), f_q), result, f_q) +mstore(492416, result) + } +mstore(0x783a0, mulmod(mload(0x78380), mload(0x48ca0), f_q)) +mstore(0x783c0, mulmod(sub(f_q, mload(0x783a0)), mload(0x498c0), f_q)) +mstore(0x783e0, mulmod(mload(0x74780), mload(0x498c0), f_q)) +mstore(0x78400, addmod(mload(0x78360), mload(0x783c0), f_q)) +{ + let result := mulmod(mload(0x16640), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16660), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16680), mload(0x48660), f_q), result, f_q) +mstore(492576, result) + } +mstore(0x78440, mulmod(mload(0x78420), mload(0x48ca0), f_q)) +mstore(0x78460, mulmod(sub(f_q, mload(0x78440)), mload(0x498e0), f_q)) +mstore(0x78480, mulmod(mload(0x74780), mload(0x498e0), f_q)) +mstore(0x784a0, addmod(mload(0x78400), mload(0x78460), f_q)) +{ + let result := mulmod(mload(0x166a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x166c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x166e0), mload(0x48660), f_q), result, f_q) +mstore(492736, result) + } +mstore(0x784e0, mulmod(mload(0x784c0), mload(0x48ca0), f_q)) +mstore(0x78500, mulmod(sub(f_q, mload(0x784e0)), mload(0x49900), f_q)) +mstore(0x78520, mulmod(mload(0x74780), mload(0x49900), f_q)) +mstore(0x78540, addmod(mload(0x784a0), mload(0x78500), f_q)) +{ + let result := mulmod(mload(0x16700), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16720), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16740), mload(0x48660), f_q), result, f_q) +mstore(492896, result) + } +mstore(0x78580, mulmod(mload(0x78560), mload(0x48ca0), f_q)) +mstore(0x785a0, mulmod(sub(f_q, mload(0x78580)), mload(0x49920), f_q)) +mstore(0x785c0, mulmod(mload(0x74780), mload(0x49920), f_q)) +mstore(0x785e0, addmod(mload(0x78540), mload(0x785a0), f_q)) +{ + let result := mulmod(mload(0x16760), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16780), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x167a0), mload(0x48660), f_q), result, f_q) +mstore(493056, result) + } +mstore(0x78620, mulmod(mload(0x78600), mload(0x48ca0), f_q)) +mstore(0x78640, mulmod(sub(f_q, mload(0x78620)), mload(0x49940), f_q)) +mstore(0x78660, mulmod(mload(0x74780), mload(0x49940), f_q)) +mstore(0x78680, addmod(mload(0x785e0), mload(0x78640), f_q)) +{ + let result := mulmod(mload(0x167c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x167e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16800), mload(0x48660), f_q), result, f_q) +mstore(493216, result) + } +mstore(0x786c0, mulmod(mload(0x786a0), mload(0x48ca0), f_q)) +mstore(0x786e0, mulmod(sub(f_q, mload(0x786c0)), mload(0x49960), f_q)) +mstore(0x78700, mulmod(mload(0x74780), mload(0x49960), f_q)) +mstore(0x78720, addmod(mload(0x78680), mload(0x786e0), f_q)) +{ + let result := mulmod(mload(0x16820), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16840), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16860), mload(0x48660), f_q), result, f_q) +mstore(493376, result) + } +mstore(0x78760, mulmod(mload(0x78740), mload(0x48ca0), f_q)) +mstore(0x78780, mulmod(sub(f_q, mload(0x78760)), mload(0x49980), f_q)) +mstore(0x787a0, mulmod(mload(0x74780), mload(0x49980), f_q)) +mstore(0x787c0, addmod(mload(0x78720), mload(0x78780), f_q)) +{ + let result := mulmod(mload(0x16880), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x168a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x168c0), mload(0x48660), f_q), result, f_q) +mstore(493536, result) + } +mstore(0x78800, mulmod(mload(0x787e0), mload(0x48ca0), f_q)) +mstore(0x78820, mulmod(sub(f_q, mload(0x78800)), mload(0x499a0), f_q)) +mstore(0x78840, mulmod(mload(0x74780), mload(0x499a0), f_q)) +mstore(0x78860, addmod(mload(0x787c0), mload(0x78820), f_q)) +{ + let result := mulmod(mload(0x168e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16900), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16920), mload(0x48660), f_q), result, f_q) +mstore(493696, result) + } +mstore(0x788a0, mulmod(mload(0x78880), mload(0x48ca0), f_q)) +mstore(0x788c0, mulmod(sub(f_q, mload(0x788a0)), mload(0x499c0), f_q)) +mstore(0x788e0, mulmod(mload(0x74780), mload(0x499c0), f_q)) +mstore(0x78900, addmod(mload(0x78860), mload(0x788c0), f_q)) +{ + let result := mulmod(mload(0x16940), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16960), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16980), mload(0x48660), f_q), result, f_q) +mstore(493856, result) + } +mstore(0x78940, mulmod(mload(0x78920), mload(0x48ca0), f_q)) +mstore(0x78960, mulmod(sub(f_q, mload(0x78940)), mload(0x499e0), f_q)) +mstore(0x78980, mulmod(mload(0x74780), mload(0x499e0), f_q)) +mstore(0x789a0, addmod(mload(0x78900), mload(0x78960), f_q)) +{ + let result := mulmod(mload(0x169a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x169c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x169e0), mload(0x48660), f_q), result, f_q) +mstore(494016, result) + } +mstore(0x789e0, mulmod(mload(0x789c0), mload(0x48ca0), f_q)) +mstore(0x78a00, mulmod(sub(f_q, mload(0x789e0)), mload(0x49a00), f_q)) +mstore(0x78a20, mulmod(mload(0x74780), mload(0x49a00), f_q)) +mstore(0x78a40, addmod(mload(0x789a0), mload(0x78a00), f_q)) +{ + let result := mulmod(mload(0x16a00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16a20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16a40), mload(0x48660), f_q), result, f_q) +mstore(494176, result) + } +mstore(0x78a80, mulmod(mload(0x78a60), mload(0x48ca0), f_q)) +mstore(0x78aa0, mulmod(sub(f_q, mload(0x78a80)), mload(0x49a20), f_q)) +mstore(0x78ac0, mulmod(mload(0x74780), mload(0x49a20), f_q)) +mstore(0x78ae0, addmod(mload(0x78a40), mload(0x78aa0), f_q)) +{ + let result := mulmod(mload(0x16a60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16a80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16aa0), mload(0x48660), f_q), result, f_q) +mstore(494336, result) + } +mstore(0x78b20, mulmod(mload(0x78b00), mload(0x48ca0), f_q)) +mstore(0x78b40, mulmod(sub(f_q, mload(0x78b20)), mload(0x49a40), f_q)) +mstore(0x78b60, mulmod(mload(0x74780), mload(0x49a40), f_q)) +mstore(0x78b80, addmod(mload(0x78ae0), mload(0x78b40), f_q)) +{ + let result := mulmod(mload(0x16ac0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16ae0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16b00), mload(0x48660), f_q), result, f_q) +mstore(494496, result) + } +mstore(0x78bc0, mulmod(mload(0x78ba0), mload(0x48ca0), f_q)) +mstore(0x78be0, mulmod(sub(f_q, mload(0x78bc0)), mload(0x49a60), f_q)) +mstore(0x78c00, mulmod(mload(0x74780), mload(0x49a60), f_q)) +mstore(0x78c20, addmod(mload(0x78b80), mload(0x78be0), f_q)) +{ + let result := mulmod(mload(0x16b20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16b40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16b60), mload(0x48660), f_q), result, f_q) +mstore(494656, result) + } +mstore(0x78c60, mulmod(mload(0x78c40), mload(0x48ca0), f_q)) +mstore(0x78c80, mulmod(sub(f_q, mload(0x78c60)), mload(0x49a80), f_q)) +mstore(0x78ca0, mulmod(mload(0x74780), mload(0x49a80), f_q)) +mstore(0x78cc0, addmod(mload(0x78c20), mload(0x78c80), f_q)) +{ + let result := mulmod(mload(0x16b80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16ba0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16bc0), mload(0x48660), f_q), result, f_q) +mstore(494816, result) + } +mstore(0x78d00, mulmod(mload(0x78ce0), mload(0x48ca0), f_q)) +mstore(0x78d20, mulmod(sub(f_q, mload(0x78d00)), mload(0x49aa0), f_q)) +mstore(0x78d40, mulmod(mload(0x74780), mload(0x49aa0), f_q)) +mstore(0x78d60, addmod(mload(0x78cc0), mload(0x78d20), f_q)) +{ + let result := mulmod(mload(0x16be0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16c00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16c20), mload(0x48660), f_q), result, f_q) +mstore(494976, result) + } +mstore(0x78da0, mulmod(mload(0x78d80), mload(0x48ca0), f_q)) +mstore(0x78dc0, mulmod(sub(f_q, mload(0x78da0)), mload(0x49ac0), f_q)) +mstore(0x78de0, mulmod(mload(0x74780), mload(0x49ac0), f_q)) +mstore(0x78e00, addmod(mload(0x78d60), mload(0x78dc0), f_q)) +{ + let result := mulmod(mload(0x16c40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16c60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16c80), mload(0x48660), f_q), result, f_q) +mstore(495136, result) + } +mstore(0x78e40, mulmod(mload(0x78e20), mload(0x48ca0), f_q)) +mstore(0x78e60, mulmod(sub(f_q, mload(0x78e40)), mload(0x49ae0), f_q)) +mstore(0x78e80, mulmod(mload(0x74780), mload(0x49ae0), f_q)) +mstore(0x78ea0, addmod(mload(0x78e00), mload(0x78e60), f_q)) +{ + let result := mulmod(mload(0x16ca0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16cc0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16ce0), mload(0x48660), f_q), result, f_q) +mstore(495296, result) + } +mstore(0x78ee0, mulmod(mload(0x78ec0), mload(0x48ca0), f_q)) +mstore(0x78f00, mulmod(sub(f_q, mload(0x78ee0)), mload(0x49b00), f_q)) +mstore(0x78f20, mulmod(mload(0x74780), mload(0x49b00), f_q)) +mstore(0x78f40, addmod(mload(0x78ea0), mload(0x78f00), f_q)) +{ + let result := mulmod(mload(0x16d00), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16d20), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16d40), mload(0x48660), f_q), result, f_q) +mstore(495456, result) + } +mstore(0x78f80, mulmod(mload(0x78f60), mload(0x48ca0), f_q)) +mstore(0x78fa0, mulmod(sub(f_q, mload(0x78f80)), mload(0x49b20), f_q)) +mstore(0x78fc0, mulmod(mload(0x74780), mload(0x49b20), f_q)) +mstore(0x78fe0, addmod(mload(0x78f40), mload(0x78fa0), f_q)) +{ + let result := mulmod(mload(0x16d60), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16d80), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16da0), mload(0x48660), f_q), result, f_q) +mstore(495616, result) + } +mstore(0x79020, mulmod(mload(0x79000), mload(0x48ca0), f_q)) +mstore(0x79040, mulmod(sub(f_q, mload(0x79020)), mload(0x49b40), f_q)) +mstore(0x79060, mulmod(mload(0x74780), mload(0x49b40), f_q)) +mstore(0x79080, addmod(mload(0x78fe0), mload(0x79040), f_q)) +{ + let result := mulmod(mload(0x16dc0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16de0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16e00), mload(0x48660), f_q), result, f_q) +mstore(495776, result) + } +mstore(0x790c0, mulmod(mload(0x790a0), mload(0x48ca0), f_q)) +mstore(0x790e0, mulmod(sub(f_q, mload(0x790c0)), mload(0x49b60), f_q)) +mstore(0x79100, mulmod(mload(0x74780), mload(0x49b60), f_q)) +mstore(0x79120, addmod(mload(0x79080), mload(0x790e0), f_q)) +{ + let result := mulmod(mload(0x16e20), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16e40), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16e60), mload(0x48660), f_q), result, f_q) +mstore(495936, result) + } +mstore(0x79160, mulmod(mload(0x79140), mload(0x48ca0), f_q)) +mstore(0x79180, mulmod(sub(f_q, mload(0x79160)), mload(0x49b80), f_q)) +mstore(0x791a0, mulmod(mload(0x74780), mload(0x49b80), f_q)) +mstore(0x791c0, addmod(mload(0x79120), mload(0x79180), f_q)) +{ + let result := mulmod(mload(0x16e80), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16ea0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16ec0), mload(0x48660), f_q), result, f_q) +mstore(496096, result) + } +mstore(0x79200, mulmod(mload(0x791e0), mload(0x48ca0), f_q)) +mstore(0x79220, mulmod(sub(f_q, mload(0x79200)), mload(0x49ba0), f_q)) +mstore(0x79240, mulmod(mload(0x74780), mload(0x49ba0), f_q)) +mstore(0x79260, addmod(mload(0x791c0), mload(0x79220), f_q)) +{ + let result := mulmod(mload(0x16ee0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16f00), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16f20), mload(0x48660), f_q), result, f_q) +mstore(496256, result) + } +mstore(0x792a0, mulmod(mload(0x79280), mload(0x48ca0), f_q)) +mstore(0x792c0, mulmod(sub(f_q, mload(0x792a0)), mload(0x49bc0), f_q)) +mstore(0x792e0, mulmod(mload(0x74780), mload(0x49bc0), f_q)) +mstore(0x79300, addmod(mload(0x79260), mload(0x792c0), f_q)) +{ + let result := mulmod(mload(0x16f40), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16f60), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16f80), mload(0x48660), f_q), result, f_q) +mstore(496416, result) + } +mstore(0x79340, mulmod(mload(0x79320), mload(0x48ca0), f_q)) +mstore(0x79360, mulmod(sub(f_q, mload(0x79340)), mload(0x49be0), f_q)) +mstore(0x79380, mulmod(mload(0x74780), mload(0x49be0), f_q)) +mstore(0x793a0, addmod(mload(0x79300), mload(0x79360), f_q)) +{ + let result := mulmod(mload(0x16fa0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x16fc0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x16fe0), mload(0x48660), f_q), result, f_q) +mstore(496576, result) + } +mstore(0x793e0, mulmod(mload(0x793c0), mload(0x48ca0), f_q)) +mstore(0x79400, mulmod(sub(f_q, mload(0x793e0)), mload(0x49c00), f_q)) +mstore(0x79420, mulmod(mload(0x74780), mload(0x49c00), f_q)) +mstore(0x79440, addmod(mload(0x793a0), mload(0x79400), f_q)) +{ + let result := mulmod(mload(0x17000), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17020), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17040), mload(0x48660), f_q), result, f_q) +mstore(496736, result) + } +mstore(0x79480, mulmod(mload(0x79460), mload(0x48ca0), f_q)) +mstore(0x794a0, mulmod(sub(f_q, mload(0x79480)), mload(0x49c20), f_q)) +mstore(0x794c0, mulmod(mload(0x74780), mload(0x49c20), f_q)) +mstore(0x794e0, addmod(mload(0x79440), mload(0x794a0), f_q)) +{ + let result := mulmod(mload(0x17060), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17080), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x170a0), mload(0x48660), f_q), result, f_q) +mstore(496896, result) + } +mstore(0x79520, mulmod(mload(0x79500), mload(0x48ca0), f_q)) +mstore(0x79540, mulmod(sub(f_q, mload(0x79520)), mload(0x49c40), f_q)) +mstore(0x79560, mulmod(mload(0x74780), mload(0x49c40), f_q)) +mstore(0x79580, addmod(mload(0x794e0), mload(0x79540), f_q)) +{ + let result := mulmod(mload(0x170c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x170e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17100), mload(0x48660), f_q), result, f_q) +mstore(497056, result) + } +mstore(0x795c0, mulmod(mload(0x795a0), mload(0x48ca0), f_q)) +mstore(0x795e0, mulmod(sub(f_q, mload(0x795c0)), mload(0x49c60), f_q)) +mstore(0x79600, mulmod(mload(0x74780), mload(0x49c60), f_q)) +mstore(0x79620, addmod(mload(0x79580), mload(0x795e0), f_q)) +{ + let result := mulmod(mload(0x17120), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17140), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17160), mload(0x48660), f_q), result, f_q) +mstore(497216, result) + } +mstore(0x79660, mulmod(mload(0x79640), mload(0x48ca0), f_q)) +mstore(0x79680, mulmod(sub(f_q, mload(0x79660)), mload(0x49c80), f_q)) +mstore(0x796a0, mulmod(mload(0x74780), mload(0x49c80), f_q)) +mstore(0x796c0, addmod(mload(0x79620), mload(0x79680), f_q)) +{ + let result := mulmod(mload(0x17180), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x171a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x171c0), mload(0x48660), f_q), result, f_q) +mstore(497376, result) + } +mstore(0x79700, mulmod(mload(0x796e0), mload(0x48ca0), f_q)) +mstore(0x79720, mulmod(sub(f_q, mload(0x79700)), mload(0x49ca0), f_q)) +mstore(0x79740, mulmod(mload(0x74780), mload(0x49ca0), f_q)) +mstore(0x79760, addmod(mload(0x796c0), mload(0x79720), f_q)) +{ + let result := mulmod(mload(0x171e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17200), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17220), mload(0x48660), f_q), result, f_q) +mstore(497536, result) + } +mstore(0x797a0, mulmod(mload(0x79780), mload(0x48ca0), f_q)) +mstore(0x797c0, mulmod(sub(f_q, mload(0x797a0)), mload(0x49cc0), f_q)) +mstore(0x797e0, mulmod(mload(0x74780), mload(0x49cc0), f_q)) +mstore(0x79800, addmod(mload(0x79760), mload(0x797c0), f_q)) +{ + let result := mulmod(mload(0x17240), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17260), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17280), mload(0x48660), f_q), result, f_q) +mstore(497696, result) + } +mstore(0x79840, mulmod(mload(0x79820), mload(0x48ca0), f_q)) +mstore(0x79860, mulmod(sub(f_q, mload(0x79840)), mload(0x49ce0), f_q)) +mstore(0x79880, mulmod(mload(0x74780), mload(0x49ce0), f_q)) +mstore(0x798a0, addmod(mload(0x79800), mload(0x79860), f_q)) +{ + let result := mulmod(mload(0x172a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x172c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x172e0), mload(0x48660), f_q), result, f_q) +mstore(497856, result) + } +mstore(0x798e0, mulmod(mload(0x798c0), mload(0x48ca0), f_q)) +mstore(0x79900, mulmod(sub(f_q, mload(0x798e0)), mload(0x49d00), f_q)) +mstore(0x79920, mulmod(mload(0x74780), mload(0x49d00), f_q)) +mstore(0x79940, addmod(mload(0x798a0), mload(0x79900), f_q)) +{ + let result := mulmod(mload(0x17300), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17320), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17340), mload(0x48660), f_q), result, f_q) +mstore(498016, result) + } +mstore(0x79980, mulmod(mload(0x79960), mload(0x48ca0), f_q)) +mstore(0x799a0, mulmod(sub(f_q, mload(0x79980)), mload(0x49d20), f_q)) +mstore(0x799c0, mulmod(mload(0x74780), mload(0x49d20), f_q)) +mstore(0x799e0, addmod(mload(0x79940), mload(0x799a0), f_q)) +{ + let result := mulmod(mload(0x17360), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17380), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x173a0), mload(0x48660), f_q), result, f_q) +mstore(498176, result) + } +mstore(0x79a20, mulmod(mload(0x79a00), mload(0x48ca0), f_q)) +mstore(0x79a40, mulmod(sub(f_q, mload(0x79a20)), mload(0x49d40), f_q)) +mstore(0x79a60, mulmod(mload(0x74780), mload(0x49d40), f_q)) +mstore(0x79a80, addmod(mload(0x799e0), mload(0x79a40), f_q)) +{ + let result := mulmod(mload(0x173c0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x173e0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17400), mload(0x48660), f_q), result, f_q) +mstore(498336, result) + } +mstore(0x79ac0, mulmod(mload(0x79aa0), mload(0x48ca0), f_q)) +mstore(0x79ae0, mulmod(sub(f_q, mload(0x79ac0)), mload(0x49d60), f_q)) +mstore(0x79b00, mulmod(mload(0x74780), mload(0x49d60), f_q)) +mstore(0x79b20, addmod(mload(0x79a80), mload(0x79ae0), f_q)) +{ + let result := mulmod(mload(0x17420), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17440), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17460), mload(0x48660), f_q), result, f_q) +mstore(498496, result) + } +mstore(0x79b60, mulmod(mload(0x79b40), mload(0x48ca0), f_q)) +mstore(0x79b80, mulmod(sub(f_q, mload(0x79b60)), mload(0x49d80), f_q)) +mstore(0x79ba0, mulmod(mload(0x74780), mload(0x49d80), f_q)) +mstore(0x79bc0, addmod(mload(0x79b20), mload(0x79b80), f_q)) +{ + let result := mulmod(mload(0x17480), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x174a0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x174c0), mload(0x48660), f_q), result, f_q) +mstore(498656, result) + } +mstore(0x79c00, mulmod(mload(0x79be0), mload(0x48ca0), f_q)) +mstore(0x79c20, mulmod(sub(f_q, mload(0x79c00)), mload(0x49da0), f_q)) +mstore(0x79c40, mulmod(mload(0x74780), mload(0x49da0), f_q)) +mstore(0x79c60, addmod(mload(0x79bc0), mload(0x79c20), f_q)) +{ + let result := mulmod(mload(0x174e0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17500), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17520), mload(0x48660), f_q), result, f_q) +mstore(498816, result) + } +mstore(0x79ca0, mulmod(mload(0x79c80), mload(0x48ca0), f_q)) +mstore(0x79cc0, mulmod(sub(f_q, mload(0x79ca0)), mload(0x49dc0), f_q)) +mstore(0x79ce0, mulmod(mload(0x74780), mload(0x49dc0), f_q)) +mstore(0x79d00, addmod(mload(0x79c60), mload(0x79cc0), f_q)) +{ + let result := mulmod(mload(0x17540), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x17560), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x17580), mload(0x48660), f_q), result, f_q) +mstore(498976, result) + } +mstore(0x79d40, mulmod(mload(0x79d20), mload(0x48ca0), f_q)) +mstore(0x79d60, mulmod(sub(f_q, mload(0x79d40)), mload(0x49de0), f_q)) +mstore(0x79d80, mulmod(mload(0x74780), mload(0x49de0), f_q)) +mstore(0x79da0, addmod(mload(0x79d00), mload(0x79d60), f_q)) +{ + let result := mulmod(mload(0x175a0), mload(0x48620), f_q) +result := addmod(mulmod(mload(0x175c0), mload(0x48640), f_q), result, f_q) +result := addmod(mulmod(mload(0x175e0), mload(0x48660), f_q), result, f_q) +mstore(499136, result) + } +mstore(0x79de0, mulmod(mload(0x79dc0), mload(0x48ca0), f_q)) +mstore(0x79e00, mulmod(sub(f_q, mload(0x79de0)), mload(0x49e00), f_q)) +mstore(0x79e20, mulmod(mload(0x74780), mload(0x49e00), f_q)) +mstore(0x79e40, addmod(mload(0x79da0), mload(0x79e00), f_q)) +mstore(0x79e60, mulmod(mload(0x79e40), mload(0x4d640), f_q)) +mstore(0x79e80, mulmod(mload(0x74800), mload(0x4d640), f_q)) +mstore(0x79ea0, mulmod(mload(0x74880), mload(0x4d640), f_q)) +mstore(0x79ec0, mulmod(mload(0x74920), mload(0x4d640), f_q)) +mstore(0x79ee0, mulmod(mload(0x749c0), mload(0x4d640), f_q)) +mstore(0x79f00, mulmod(mload(0x74a60), mload(0x4d640), f_q)) +mstore(0x79f20, mulmod(mload(0x74b00), mload(0x4d640), f_q)) +mstore(0x79f40, mulmod(mload(0x74ba0), mload(0x4d640), f_q)) +mstore(0x79f60, mulmod(mload(0x74c40), mload(0x4d640), f_q)) +mstore(0x79f80, mulmod(mload(0x74ce0), mload(0x4d640), f_q)) +mstore(0x79fa0, mulmod(mload(0x74d80), mload(0x4d640), f_q)) +mstore(0x79fc0, mulmod(mload(0x74e20), mload(0x4d640), f_q)) +mstore(0x79fe0, mulmod(mload(0x74ec0), mload(0x4d640), f_q)) +mstore(0x7a000, mulmod(mload(0x74f60), mload(0x4d640), f_q)) +mstore(0x7a020, mulmod(mload(0x75000), mload(0x4d640), f_q)) +mstore(0x7a040, mulmod(mload(0x750a0), mload(0x4d640), f_q)) +mstore(0x7a060, mulmod(mload(0x75140), mload(0x4d640), f_q)) +mstore(0x7a080, mulmod(mload(0x751e0), mload(0x4d640), f_q)) +mstore(0x7a0a0, mulmod(mload(0x75280), mload(0x4d640), f_q)) +mstore(0x7a0c0, mulmod(mload(0x75320), mload(0x4d640), f_q)) +mstore(0x7a0e0, mulmod(mload(0x753c0), mload(0x4d640), f_q)) +mstore(0x7a100, mulmod(mload(0x75460), mload(0x4d640), f_q)) +mstore(0x7a120, mulmod(mload(0x75500), mload(0x4d640), f_q)) +mstore(0x7a140, mulmod(mload(0x755a0), mload(0x4d640), f_q)) +mstore(0x7a160, mulmod(mload(0x75640), mload(0x4d640), f_q)) +mstore(0x7a180, mulmod(mload(0x756e0), mload(0x4d640), f_q)) +mstore(0x7a1a0, mulmod(mload(0x75780), mload(0x4d640), f_q)) +mstore(0x7a1c0, mulmod(mload(0x75820), mload(0x4d640), f_q)) +mstore(0x7a1e0, mulmod(mload(0x758c0), mload(0x4d640), f_q)) +mstore(0x7a200, mulmod(mload(0x75960), mload(0x4d640), f_q)) +mstore(0x7a220, mulmod(mload(0x75a00), mload(0x4d640), f_q)) +mstore(0x7a240, mulmod(mload(0x75aa0), mload(0x4d640), f_q)) +mstore(0x7a260, mulmod(mload(0x75b40), mload(0x4d640), f_q)) +mstore(0x7a280, mulmod(mload(0x75be0), mload(0x4d640), f_q)) +mstore(0x7a2a0, mulmod(mload(0x75c80), mload(0x4d640), f_q)) +mstore(0x7a2c0, mulmod(mload(0x75d20), mload(0x4d640), f_q)) +mstore(0x7a2e0, mulmod(mload(0x75dc0), mload(0x4d640), f_q)) +mstore(0x7a300, mulmod(mload(0x75e60), mload(0x4d640), f_q)) +mstore(0x7a320, mulmod(mload(0x75f00), mload(0x4d640), f_q)) +mstore(0x7a340, mulmod(mload(0x75fa0), mload(0x4d640), f_q)) +mstore(0x7a360, mulmod(mload(0x76040), mload(0x4d640), f_q)) +mstore(0x7a380, mulmod(mload(0x760e0), mload(0x4d640), f_q)) +mstore(0x7a3a0, mulmod(mload(0x76180), mload(0x4d640), f_q)) +mstore(0x7a3c0, mulmod(mload(0x76220), mload(0x4d640), f_q)) +mstore(0x7a3e0, mulmod(mload(0x762c0), mload(0x4d640), f_q)) +mstore(0x7a400, mulmod(mload(0x76360), mload(0x4d640), f_q)) +mstore(0x7a420, mulmod(mload(0x76400), mload(0x4d640), f_q)) +mstore(0x7a440, mulmod(mload(0x764a0), mload(0x4d640), f_q)) +mstore(0x7a460, mulmod(mload(0x76540), mload(0x4d640), f_q)) +mstore(0x7a480, mulmod(mload(0x765e0), mload(0x4d640), f_q)) +mstore(0x7a4a0, mulmod(mload(0x76680), mload(0x4d640), f_q)) +mstore(0x7a4c0, mulmod(mload(0x76720), mload(0x4d640), f_q)) +mstore(0x7a4e0, mulmod(mload(0x767c0), mload(0x4d640), f_q)) +mstore(0x7a500, mulmod(mload(0x76860), mload(0x4d640), f_q)) +mstore(0x7a520, mulmod(mload(0x76900), mload(0x4d640), f_q)) +mstore(0x7a540, mulmod(mload(0x769a0), mload(0x4d640), f_q)) +mstore(0x7a560, mulmod(mload(0x76a40), mload(0x4d640), f_q)) +mstore(0x7a580, mulmod(mload(0x76ae0), mload(0x4d640), f_q)) +mstore(0x7a5a0, mulmod(mload(0x76b80), mload(0x4d640), f_q)) +mstore(0x7a5c0, mulmod(mload(0x76c20), mload(0x4d640), f_q)) +mstore(0x7a5e0, mulmod(mload(0x76cc0), mload(0x4d640), f_q)) +mstore(0x7a600, mulmod(mload(0x76d60), mload(0x4d640), f_q)) +mstore(0x7a620, mulmod(mload(0x76e00), mload(0x4d640), f_q)) +mstore(0x7a640, mulmod(mload(0x76ea0), mload(0x4d640), f_q)) +mstore(0x7a660, mulmod(mload(0x76f40), mload(0x4d640), f_q)) +mstore(0x7a680, mulmod(mload(0x76fe0), mload(0x4d640), f_q)) +mstore(0x7a6a0, mulmod(mload(0x77080), mload(0x4d640), f_q)) +mstore(0x7a6c0, mulmod(mload(0x77120), mload(0x4d640), f_q)) +mstore(0x7a6e0, mulmod(mload(0x771c0), mload(0x4d640), f_q)) +mstore(0x7a700, mulmod(mload(0x77260), mload(0x4d640), f_q)) +mstore(0x7a720, mulmod(mload(0x77300), mload(0x4d640), f_q)) +mstore(0x7a740, mulmod(mload(0x773a0), mload(0x4d640), f_q)) +mstore(0x7a760, mulmod(mload(0x77440), mload(0x4d640), f_q)) +mstore(0x7a780, mulmod(mload(0x774e0), mload(0x4d640), f_q)) +mstore(0x7a7a0, mulmod(mload(0x77580), mload(0x4d640), f_q)) +mstore(0x7a7c0, mulmod(mload(0x77620), mload(0x4d640), f_q)) +mstore(0x7a7e0, mulmod(mload(0x776c0), mload(0x4d640), f_q)) +mstore(0x7a800, mulmod(mload(0x77760), mload(0x4d640), f_q)) +mstore(0x7a820, mulmod(mload(0x77800), mload(0x4d640), f_q)) +mstore(0x7a840, mulmod(mload(0x778a0), mload(0x4d640), f_q)) +mstore(0x7a860, mulmod(mload(0x77940), mload(0x4d640), f_q)) +mstore(0x7a880, mulmod(mload(0x779e0), mload(0x4d640), f_q)) +mstore(0x7a8a0, mulmod(mload(0x77a80), mload(0x4d640), f_q)) +mstore(0x7a8c0, mulmod(mload(0x77b20), mload(0x4d640), f_q)) +mstore(0x7a8e0, mulmod(mload(0x77bc0), mload(0x4d640), f_q)) +mstore(0x7a900, mulmod(mload(0x77c60), mload(0x4d640), f_q)) +mstore(0x7a920, mulmod(mload(0x77d00), mload(0x4d640), f_q)) +mstore(0x7a940, mulmod(mload(0x77da0), mload(0x4d640), f_q)) +mstore(0x7a960, mulmod(mload(0x77e40), mload(0x4d640), f_q)) +mstore(0x7a980, mulmod(mload(0x77ee0), mload(0x4d640), f_q)) +mstore(0x7a9a0, mulmod(mload(0x77f80), mload(0x4d640), f_q)) +mstore(0x7a9c0, mulmod(mload(0x78020), mload(0x4d640), f_q)) +mstore(0x7a9e0, mulmod(mload(0x780c0), mload(0x4d640), f_q)) +mstore(0x7aa00, mulmod(mload(0x78160), mload(0x4d640), f_q)) +mstore(0x7aa20, mulmod(mload(0x78200), mload(0x4d640), f_q)) +mstore(0x7aa40, mulmod(mload(0x782a0), mload(0x4d640), f_q)) +mstore(0x7aa60, mulmod(mload(0x78340), mload(0x4d640), f_q)) +mstore(0x7aa80, mulmod(mload(0x783e0), mload(0x4d640), f_q)) +mstore(0x7aaa0, mulmod(mload(0x78480), mload(0x4d640), f_q)) +mstore(0x7aac0, mulmod(mload(0x78520), mload(0x4d640), f_q)) +mstore(0x7aae0, mulmod(mload(0x785c0), mload(0x4d640), f_q)) +mstore(0x7ab00, mulmod(mload(0x78660), mload(0x4d640), f_q)) +mstore(0x7ab20, mulmod(mload(0x78700), mload(0x4d640), f_q)) +mstore(0x7ab40, mulmod(mload(0x787a0), mload(0x4d640), f_q)) +mstore(0x7ab60, mulmod(mload(0x78840), mload(0x4d640), f_q)) +mstore(0x7ab80, mulmod(mload(0x788e0), mload(0x4d640), f_q)) +mstore(0x7aba0, mulmod(mload(0x78980), mload(0x4d640), f_q)) +mstore(0x7abc0, mulmod(mload(0x78a20), mload(0x4d640), f_q)) +mstore(0x7abe0, mulmod(mload(0x78ac0), mload(0x4d640), f_q)) +mstore(0x7ac00, mulmod(mload(0x78b60), mload(0x4d640), f_q)) +mstore(0x7ac20, mulmod(mload(0x78c00), mload(0x4d640), f_q)) +mstore(0x7ac40, mulmod(mload(0x78ca0), mload(0x4d640), f_q)) +mstore(0x7ac60, mulmod(mload(0x78d40), mload(0x4d640), f_q)) +mstore(0x7ac80, mulmod(mload(0x78de0), mload(0x4d640), f_q)) +mstore(0x7aca0, mulmod(mload(0x78e80), mload(0x4d640), f_q)) +mstore(0x7acc0, mulmod(mload(0x78f20), mload(0x4d640), f_q)) +mstore(0x7ace0, mulmod(mload(0x78fc0), mload(0x4d640), f_q)) +mstore(0x7ad00, mulmod(mload(0x79060), mload(0x4d640), f_q)) +mstore(0x7ad20, mulmod(mload(0x79100), mload(0x4d640), f_q)) +mstore(0x7ad40, mulmod(mload(0x791a0), mload(0x4d640), f_q)) +mstore(0x7ad60, mulmod(mload(0x79240), mload(0x4d640), f_q)) +mstore(0x7ad80, mulmod(mload(0x792e0), mload(0x4d640), f_q)) +mstore(0x7ada0, mulmod(mload(0x79380), mload(0x4d640), f_q)) +mstore(0x7adc0, mulmod(mload(0x79420), mload(0x4d640), f_q)) +mstore(0x7ade0, mulmod(mload(0x794c0), mload(0x4d640), f_q)) +mstore(0x7ae00, mulmod(mload(0x79560), mload(0x4d640), f_q)) +mstore(0x7ae20, mulmod(mload(0x79600), mload(0x4d640), f_q)) +mstore(0x7ae40, mulmod(mload(0x796a0), mload(0x4d640), f_q)) +mstore(0x7ae60, mulmod(mload(0x79740), mload(0x4d640), f_q)) +mstore(0x7ae80, mulmod(mload(0x797e0), mload(0x4d640), f_q)) +mstore(0x7aea0, mulmod(mload(0x79880), mload(0x4d640), f_q)) +mstore(0x7aec0, mulmod(mload(0x79920), mload(0x4d640), f_q)) +mstore(0x7aee0, mulmod(mload(0x799c0), mload(0x4d640), f_q)) +mstore(0x7af00, mulmod(mload(0x79a60), mload(0x4d640), f_q)) +mstore(0x7af20, mulmod(mload(0x79b00), mload(0x4d640), f_q)) +mstore(0x7af40, mulmod(mload(0x79ba0), mload(0x4d640), f_q)) +mstore(0x7af60, mulmod(mload(0x79c40), mload(0x4d640), f_q)) +mstore(0x7af80, mulmod(mload(0x79ce0), mload(0x4d640), f_q)) +mstore(0x7afa0, mulmod(mload(0x79d80), mload(0x4d640), f_q)) +mstore(0x7afc0, mulmod(mload(0x79e20), mload(0x4d640), f_q)) +mstore(0x7afe0, addmod(mload(0x74760), mload(0x79e60), f_q)) +mstore(0x7b000, mulmod(1, mload(0x48aa0), f_q)) +{ + let result := mulmod(mload(0x17600), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17620), mload(0x486c0), f_q), result, f_q) +mstore(503840, result) + } +mstore(0x7b040, mulmod(mload(0x7b020), mload(0x48cc0), f_q)) +mstore(0x7b060, mulmod(sub(f_q, mload(0x7b040)), 1, f_q)) +mstore(0x7b080, mulmod(mload(0x7b000), 1, f_q)) +{ + let result := mulmod(mload(0x17640), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17660), mload(0x486c0), f_q), result, f_q) +mstore(503968, result) + } +mstore(0x7b0c0, mulmod(mload(0x7b0a0), mload(0x48cc0), f_q)) +mstore(0x7b0e0, mulmod(sub(f_q, mload(0x7b0c0)), mload(0x18880), f_q)) +mstore(0x7b100, mulmod(mload(0x7b000), mload(0x18880), f_q)) +mstore(0x7b120, addmod(mload(0x7b060), mload(0x7b0e0), f_q)) +{ + let result := mulmod(mload(0x176e0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17700), mload(0x486c0), f_q), result, f_q) +mstore(504128, result) + } +mstore(0x7b160, mulmod(mload(0x7b140), mload(0x48cc0), f_q)) +mstore(0x7b180, mulmod(sub(f_q, mload(0x7b160)), mload(0x48d00), f_q)) +mstore(0x7b1a0, mulmod(mload(0x7b000), mload(0x48d00), f_q)) +mstore(0x7b1c0, addmod(mload(0x7b120), mload(0x7b180), f_q)) +{ + let result := mulmod(mload(0x17780), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x177a0), mload(0x486c0), f_q), result, f_q) +mstore(504288, result) + } +mstore(0x7b200, mulmod(mload(0x7b1e0), mload(0x48cc0), f_q)) +mstore(0x7b220, mulmod(sub(f_q, mload(0x7b200)), mload(0x48d20), f_q)) +mstore(0x7b240, mulmod(mload(0x7b000), mload(0x48d20), f_q)) +mstore(0x7b260, addmod(mload(0x7b1c0), mload(0x7b220), f_q)) +{ + let result := mulmod(mload(0x17820), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17840), mload(0x486c0), f_q), result, f_q) +mstore(504448, result) + } +mstore(0x7b2a0, mulmod(mload(0x7b280), mload(0x48cc0), f_q)) +mstore(0x7b2c0, mulmod(sub(f_q, mload(0x7b2a0)), mload(0x48d40), f_q)) +mstore(0x7b2e0, mulmod(mload(0x7b000), mload(0x48d40), f_q)) +mstore(0x7b300, addmod(mload(0x7b260), mload(0x7b2c0), f_q)) +{ + let result := mulmod(mload(0x178c0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x178e0), mload(0x486c0), f_q), result, f_q) +mstore(504608, result) + } +mstore(0x7b340, mulmod(mload(0x7b320), mload(0x48cc0), f_q)) +mstore(0x7b360, mulmod(sub(f_q, mload(0x7b340)), mload(0x48d60), f_q)) +mstore(0x7b380, mulmod(mload(0x7b000), mload(0x48d60), f_q)) +mstore(0x7b3a0, addmod(mload(0x7b300), mload(0x7b360), f_q)) +{ + let result := mulmod(mload(0x17960), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17980), mload(0x486c0), f_q), result, f_q) +mstore(504768, result) + } +mstore(0x7b3e0, mulmod(mload(0x7b3c0), mload(0x48cc0), f_q)) +mstore(0x7b400, mulmod(sub(f_q, mload(0x7b3e0)), mload(0x48d80), f_q)) +mstore(0x7b420, mulmod(mload(0x7b000), mload(0x48d80), f_q)) +mstore(0x7b440, addmod(mload(0x7b3a0), mload(0x7b400), f_q)) +{ + let result := mulmod(mload(0x17a00), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17a20), mload(0x486c0), f_q), result, f_q) +mstore(504928, result) + } +mstore(0x7b480, mulmod(mload(0x7b460), mload(0x48cc0), f_q)) +mstore(0x7b4a0, mulmod(sub(f_q, mload(0x7b480)), mload(0x48da0), f_q)) +mstore(0x7b4c0, mulmod(mload(0x7b000), mload(0x48da0), f_q)) +mstore(0x7b4e0, addmod(mload(0x7b440), mload(0x7b4a0), f_q)) +{ + let result := mulmod(mload(0x17aa0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17ac0), mload(0x486c0), f_q), result, f_q) +mstore(505088, result) + } +mstore(0x7b520, mulmod(mload(0x7b500), mload(0x48cc0), f_q)) +mstore(0x7b540, mulmod(sub(f_q, mload(0x7b520)), mload(0x48dc0), f_q)) +mstore(0x7b560, mulmod(mload(0x7b000), mload(0x48dc0), f_q)) +mstore(0x7b580, addmod(mload(0x7b4e0), mload(0x7b540), f_q)) +{ + let result := mulmod(mload(0x17b40), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17b60), mload(0x486c0), f_q), result, f_q) +mstore(505248, result) + } +mstore(0x7b5c0, mulmod(mload(0x7b5a0), mload(0x48cc0), f_q)) +mstore(0x7b5e0, mulmod(sub(f_q, mload(0x7b5c0)), mload(0x48de0), f_q)) +mstore(0x7b600, mulmod(mload(0x7b000), mload(0x48de0), f_q)) +mstore(0x7b620, addmod(mload(0x7b580), mload(0x7b5e0), f_q)) +{ + let result := mulmod(mload(0x17be0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17c00), mload(0x486c0), f_q), result, f_q) +mstore(505408, result) + } +mstore(0x7b660, mulmod(mload(0x7b640), mload(0x48cc0), f_q)) +mstore(0x7b680, mulmod(sub(f_q, mload(0x7b660)), mload(0x48e00), f_q)) +mstore(0x7b6a0, mulmod(mload(0x7b000), mload(0x48e00), f_q)) +mstore(0x7b6c0, addmod(mload(0x7b620), mload(0x7b680), f_q)) +{ + let result := mulmod(mload(0x17c80), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17ca0), mload(0x486c0), f_q), result, f_q) +mstore(505568, result) + } +mstore(0x7b700, mulmod(mload(0x7b6e0), mload(0x48cc0), f_q)) +mstore(0x7b720, mulmod(sub(f_q, mload(0x7b700)), mload(0x48e20), f_q)) +mstore(0x7b740, mulmod(mload(0x7b000), mload(0x48e20), f_q)) +mstore(0x7b760, addmod(mload(0x7b6c0), mload(0x7b720), f_q)) +{ + let result := mulmod(mload(0x17d20), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17d40), mload(0x486c0), f_q), result, f_q) +mstore(505728, result) + } +mstore(0x7b7a0, mulmod(mload(0x7b780), mload(0x48cc0), f_q)) +mstore(0x7b7c0, mulmod(sub(f_q, mload(0x7b7a0)), mload(0x48e40), f_q)) +mstore(0x7b7e0, mulmod(mload(0x7b000), mload(0x48e40), f_q)) +mstore(0x7b800, addmod(mload(0x7b760), mload(0x7b7c0), f_q)) +{ + let result := mulmod(mload(0x17dc0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17de0), mload(0x486c0), f_q), result, f_q) +mstore(505888, result) + } +mstore(0x7b840, mulmod(mload(0x7b820), mload(0x48cc0), f_q)) +mstore(0x7b860, mulmod(sub(f_q, mload(0x7b840)), mload(0x48e60), f_q)) +mstore(0x7b880, mulmod(mload(0x7b000), mload(0x48e60), f_q)) +mstore(0x7b8a0, addmod(mload(0x7b800), mload(0x7b860), f_q)) +{ + let result := mulmod(mload(0x17e60), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17e80), mload(0x486c0), f_q), result, f_q) +mstore(506048, result) + } +mstore(0x7b8e0, mulmod(mload(0x7b8c0), mload(0x48cc0), f_q)) +mstore(0x7b900, mulmod(sub(f_q, mload(0x7b8e0)), mload(0x48e80), f_q)) +mstore(0x7b920, mulmod(mload(0x7b000), mload(0x48e80), f_q)) +mstore(0x7b940, addmod(mload(0x7b8a0), mload(0x7b900), f_q)) +{ + let result := mulmod(mload(0x17f00), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17f20), mload(0x486c0), f_q), result, f_q) +mstore(506208, result) + } +mstore(0x7b980, mulmod(mload(0x7b960), mload(0x48cc0), f_q)) +mstore(0x7b9a0, mulmod(sub(f_q, mload(0x7b980)), mload(0x48ea0), f_q)) +mstore(0x7b9c0, mulmod(mload(0x7b000), mload(0x48ea0), f_q)) +mstore(0x7b9e0, addmod(mload(0x7b940), mload(0x7b9a0), f_q)) +{ + let result := mulmod(mload(0x17fa0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x17fc0), mload(0x486c0), f_q), result, f_q) +mstore(506368, result) + } +mstore(0x7ba20, mulmod(mload(0x7ba00), mload(0x48cc0), f_q)) +mstore(0x7ba40, mulmod(sub(f_q, mload(0x7ba20)), mload(0x48ec0), f_q)) +mstore(0x7ba60, mulmod(mload(0x7b000), mload(0x48ec0), f_q)) +mstore(0x7ba80, addmod(mload(0x7b9e0), mload(0x7ba40), f_q)) +{ + let result := mulmod(mload(0x18040), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18060), mload(0x486c0), f_q), result, f_q) +mstore(506528, result) + } +mstore(0x7bac0, mulmod(mload(0x7baa0), mload(0x48cc0), f_q)) +mstore(0x7bae0, mulmod(sub(f_q, mload(0x7bac0)), mload(0x48ee0), f_q)) +mstore(0x7bb00, mulmod(mload(0x7b000), mload(0x48ee0), f_q)) +mstore(0x7bb20, addmod(mload(0x7ba80), mload(0x7bae0), f_q)) +{ + let result := mulmod(mload(0x180e0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18100), mload(0x486c0), f_q), result, f_q) +mstore(506688, result) + } +mstore(0x7bb60, mulmod(mload(0x7bb40), mload(0x48cc0), f_q)) +mstore(0x7bb80, mulmod(sub(f_q, mload(0x7bb60)), mload(0x48f00), f_q)) +mstore(0x7bba0, mulmod(mload(0x7b000), mload(0x48f00), f_q)) +mstore(0x7bbc0, addmod(mload(0x7bb20), mload(0x7bb80), f_q)) +{ + let result := mulmod(mload(0x18180), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x181a0), mload(0x486c0), f_q), result, f_q) +mstore(506848, result) + } +mstore(0x7bc00, mulmod(mload(0x7bbe0), mload(0x48cc0), f_q)) +mstore(0x7bc20, mulmod(sub(f_q, mload(0x7bc00)), mload(0x48f20), f_q)) +mstore(0x7bc40, mulmod(mload(0x7b000), mload(0x48f20), f_q)) +mstore(0x7bc60, addmod(mload(0x7bbc0), mload(0x7bc20), f_q)) +{ + let result := mulmod(mload(0x18220), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18240), mload(0x486c0), f_q), result, f_q) +mstore(507008, result) + } +mstore(0x7bca0, mulmod(mload(0x7bc80), mload(0x48cc0), f_q)) +mstore(0x7bcc0, mulmod(sub(f_q, mload(0x7bca0)), mload(0x48f40), f_q)) +mstore(0x7bce0, mulmod(mload(0x7b000), mload(0x48f40), f_q)) +mstore(0x7bd00, addmod(mload(0x7bc60), mload(0x7bcc0), f_q)) +{ + let result := mulmod(mload(0x182c0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x182e0), mload(0x486c0), f_q), result, f_q) +mstore(507168, result) + } +mstore(0x7bd40, mulmod(mload(0x7bd20), mload(0x48cc0), f_q)) +mstore(0x7bd60, mulmod(sub(f_q, mload(0x7bd40)), mload(0x48f60), f_q)) +mstore(0x7bd80, mulmod(mload(0x7b000), mload(0x48f60), f_q)) +mstore(0x7bda0, addmod(mload(0x7bd00), mload(0x7bd60), f_q)) +{ + let result := mulmod(mload(0x18360), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18380), mload(0x486c0), f_q), result, f_q) +mstore(507328, result) + } +mstore(0x7bde0, mulmod(mload(0x7bdc0), mload(0x48cc0), f_q)) +mstore(0x7be00, mulmod(sub(f_q, mload(0x7bde0)), mload(0x48f80), f_q)) +mstore(0x7be20, mulmod(mload(0x7b000), mload(0x48f80), f_q)) +mstore(0x7be40, addmod(mload(0x7bda0), mload(0x7be00), f_q)) +{ + let result := mulmod(mload(0x18400), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18420), mload(0x486c0), f_q), result, f_q) +mstore(507488, result) + } +mstore(0x7be80, mulmod(mload(0x7be60), mload(0x48cc0), f_q)) +mstore(0x7bea0, mulmod(sub(f_q, mload(0x7be80)), mload(0x48fa0), f_q)) +mstore(0x7bec0, mulmod(mload(0x7b000), mload(0x48fa0), f_q)) +mstore(0x7bee0, addmod(mload(0x7be40), mload(0x7bea0), f_q)) +{ + let result := mulmod(mload(0x184a0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x184c0), mload(0x486c0), f_q), result, f_q) +mstore(507648, result) + } +mstore(0x7bf20, mulmod(mload(0x7bf00), mload(0x48cc0), f_q)) +mstore(0x7bf40, mulmod(sub(f_q, mload(0x7bf20)), mload(0x48fc0), f_q)) +mstore(0x7bf60, mulmod(mload(0x7b000), mload(0x48fc0), f_q)) +mstore(0x7bf80, addmod(mload(0x7bee0), mload(0x7bf40), f_q)) +{ + let result := mulmod(mload(0x18540), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18560), mload(0x486c0), f_q), result, f_q) +mstore(507808, result) + } +mstore(0x7bfc0, mulmod(mload(0x7bfa0), mload(0x48cc0), f_q)) +mstore(0x7bfe0, mulmod(sub(f_q, mload(0x7bfc0)), mload(0x48fe0), f_q)) +mstore(0x7c000, mulmod(mload(0x7b000), mload(0x48fe0), f_q)) +mstore(0x7c020, addmod(mload(0x7bf80), mload(0x7bfe0), f_q)) +{ + let result := mulmod(mload(0x185e0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18600), mload(0x486c0), f_q), result, f_q) +mstore(507968, result) + } +mstore(0x7c060, mulmod(mload(0x7c040), mload(0x48cc0), f_q)) +mstore(0x7c080, mulmod(sub(f_q, mload(0x7c060)), mload(0x49000), f_q)) +mstore(0x7c0a0, mulmod(mload(0x7b000), mload(0x49000), f_q)) +mstore(0x7c0c0, addmod(mload(0x7c020), mload(0x7c080), f_q)) +{ + let result := mulmod(mload(0x18680), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x186a0), mload(0x486c0), f_q), result, f_q) +mstore(508128, result) + } +mstore(0x7c100, mulmod(mload(0x7c0e0), mload(0x48cc0), f_q)) +mstore(0x7c120, mulmod(sub(f_q, mload(0x7c100)), mload(0x49020), f_q)) +mstore(0x7c140, mulmod(mload(0x7b000), mload(0x49020), f_q)) +mstore(0x7c160, addmod(mload(0x7c0c0), mload(0x7c120), f_q)) +{ + let result := mulmod(mload(0x18720), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x18740), mload(0x486c0), f_q), result, f_q) +mstore(508288, result) + } +mstore(0x7c1a0, mulmod(mload(0x7c180), mload(0x48cc0), f_q)) +mstore(0x7c1c0, mulmod(sub(f_q, mload(0x7c1a0)), mload(0x49040), f_q)) +mstore(0x7c1e0, mulmod(mload(0x7b000), mload(0x49040), f_q)) +mstore(0x7c200, addmod(mload(0x7c160), mload(0x7c1c0), f_q)) +{ + let result := mulmod(mload(0x187c0), mload(0x486a0), f_q) +result := addmod(mulmod(mload(0x187e0), mload(0x486c0), f_q), result, f_q) +mstore(508448, result) + } +mstore(0x7c240, mulmod(mload(0x7c220), mload(0x48cc0), f_q)) +mstore(0x7c260, mulmod(sub(f_q, mload(0x7c240)), mload(0x49060), f_q)) +mstore(0x7c280, mulmod(mload(0x7b000), mload(0x49060), f_q)) +mstore(0x7c2a0, addmod(mload(0x7c200), mload(0x7c260), f_q)) +mstore(0x7c2c0, mulmod(mload(0x7c2a0), mload(0x4d660), f_q)) +mstore(0x7c2e0, mulmod(mload(0x7b080), mload(0x4d660), f_q)) +mstore(0x7c300, mulmod(mload(0x7b100), mload(0x4d660), f_q)) +mstore(0x7c320, mulmod(mload(0x7b1a0), mload(0x4d660), f_q)) +mstore(0x7c340, mulmod(mload(0x7b240), mload(0x4d660), f_q)) +mstore(0x7c360, mulmod(mload(0x7b2e0), mload(0x4d660), f_q)) +mstore(0x7c380, mulmod(mload(0x7b380), mload(0x4d660), f_q)) +mstore(0x7c3a0, mulmod(mload(0x7b420), mload(0x4d660), f_q)) +mstore(0x7c3c0, mulmod(mload(0x7b4c0), mload(0x4d660), f_q)) +mstore(0x7c3e0, mulmod(mload(0x7b560), mload(0x4d660), f_q)) +mstore(0x7c400, mulmod(mload(0x7b600), mload(0x4d660), f_q)) +mstore(0x7c420, mulmod(mload(0x7b6a0), mload(0x4d660), f_q)) +mstore(0x7c440, mulmod(mload(0x7b740), mload(0x4d660), f_q)) +mstore(0x7c460, mulmod(mload(0x7b7e0), mload(0x4d660), f_q)) +mstore(0x7c480, mulmod(mload(0x7b880), mload(0x4d660), f_q)) +mstore(0x7c4a0, mulmod(mload(0x7b920), mload(0x4d660), f_q)) +mstore(0x7c4c0, mulmod(mload(0x7b9c0), mload(0x4d660), f_q)) +mstore(0x7c4e0, mulmod(mload(0x7ba60), mload(0x4d660), f_q)) +mstore(0x7c500, mulmod(mload(0x7bb00), mload(0x4d660), f_q)) +mstore(0x7c520, mulmod(mload(0x7bba0), mload(0x4d660), f_q)) +mstore(0x7c540, mulmod(mload(0x7bc40), mload(0x4d660), f_q)) +mstore(0x7c560, mulmod(mload(0x7bce0), mload(0x4d660), f_q)) +mstore(0x7c580, mulmod(mload(0x7bd80), mload(0x4d660), f_q)) +mstore(0x7c5a0, mulmod(mload(0x7be20), mload(0x4d660), f_q)) +mstore(0x7c5c0, mulmod(mload(0x7bec0), mload(0x4d660), f_q)) +mstore(0x7c5e0, mulmod(mload(0x7bf60), mload(0x4d660), f_q)) +mstore(0x7c600, mulmod(mload(0x7c000), mload(0x4d660), f_q)) +mstore(0x7c620, mulmod(mload(0x7c0a0), mload(0x4d660), f_q)) +mstore(0x7c640, mulmod(mload(0x7c140), mload(0x4d660), f_q)) +mstore(0x7c660, mulmod(mload(0x7c1e0), mload(0x4d660), f_q)) +mstore(0x7c680, mulmod(mload(0x7c280), mload(0x4d660), f_q)) +mstore(0x7c6a0, addmod(mload(0x7afe0), mload(0x7c2c0), f_q)) +mstore(0x7c6c0, mulmod(1, mload(0x48ae0), f_q)) +{ + let result := mulmod(mload(0x17680), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x176a0), mload(0x48700), f_q), result, f_q) +mstore(509664, result) + } +mstore(0x7c700, mulmod(mload(0x7c6e0), mload(0x48ce0), f_q)) +mstore(0x7c720, mulmod(sub(f_q, mload(0x7c700)), 1, f_q)) +mstore(0x7c740, mulmod(mload(0x7c6c0), 1, f_q)) +{ + let result := mulmod(mload(0x17720), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17740), mload(0x48700), f_q), result, f_q) +mstore(509792, result) + } +mstore(0x7c780, mulmod(mload(0x7c760), mload(0x48ce0), f_q)) +mstore(0x7c7a0, mulmod(sub(f_q, mload(0x7c780)), mload(0x18880), f_q)) +mstore(0x7c7c0, mulmod(mload(0x7c6c0), mload(0x18880), f_q)) +mstore(0x7c7e0, addmod(mload(0x7c720), mload(0x7c7a0), f_q)) +{ + let result := mulmod(mload(0x177c0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x177e0), mload(0x48700), f_q), result, f_q) +mstore(509952, result) + } +mstore(0x7c820, mulmod(mload(0x7c800), mload(0x48ce0), f_q)) +mstore(0x7c840, mulmod(sub(f_q, mload(0x7c820)), mload(0x48d00), f_q)) +mstore(0x7c860, mulmod(mload(0x7c6c0), mload(0x48d00), f_q)) +mstore(0x7c880, addmod(mload(0x7c7e0), mload(0x7c840), f_q)) +{ + let result := mulmod(mload(0x17860), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17880), mload(0x48700), f_q), result, f_q) +mstore(510112, result) + } +mstore(0x7c8c0, mulmod(mload(0x7c8a0), mload(0x48ce0), f_q)) +mstore(0x7c8e0, mulmod(sub(f_q, mload(0x7c8c0)), mload(0x48d20), f_q)) +mstore(0x7c900, mulmod(mload(0x7c6c0), mload(0x48d20), f_q)) +mstore(0x7c920, addmod(mload(0x7c880), mload(0x7c8e0), f_q)) +{ + let result := mulmod(mload(0x17900), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17920), mload(0x48700), f_q), result, f_q) +mstore(510272, result) + } +mstore(0x7c960, mulmod(mload(0x7c940), mload(0x48ce0), f_q)) +mstore(0x7c980, mulmod(sub(f_q, mload(0x7c960)), mload(0x48d40), f_q)) +mstore(0x7c9a0, mulmod(mload(0x7c6c0), mload(0x48d40), f_q)) +mstore(0x7c9c0, addmod(mload(0x7c920), mload(0x7c980), f_q)) +{ + let result := mulmod(mload(0x179a0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x179c0), mload(0x48700), f_q), result, f_q) +mstore(510432, result) + } +mstore(0x7ca00, mulmod(mload(0x7c9e0), mload(0x48ce0), f_q)) +mstore(0x7ca20, mulmod(sub(f_q, mload(0x7ca00)), mload(0x48d60), f_q)) +mstore(0x7ca40, mulmod(mload(0x7c6c0), mload(0x48d60), f_q)) +mstore(0x7ca60, addmod(mload(0x7c9c0), mload(0x7ca20), f_q)) +{ + let result := mulmod(mload(0x17a40), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17a60), mload(0x48700), f_q), result, f_q) +mstore(510592, result) + } +mstore(0x7caa0, mulmod(mload(0x7ca80), mload(0x48ce0), f_q)) +mstore(0x7cac0, mulmod(sub(f_q, mload(0x7caa0)), mload(0x48d80), f_q)) +mstore(0x7cae0, mulmod(mload(0x7c6c0), mload(0x48d80), f_q)) +mstore(0x7cb00, addmod(mload(0x7ca60), mload(0x7cac0), f_q)) +{ + let result := mulmod(mload(0x17ae0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17b00), mload(0x48700), f_q), result, f_q) +mstore(510752, result) + } +mstore(0x7cb40, mulmod(mload(0x7cb20), mload(0x48ce0), f_q)) +mstore(0x7cb60, mulmod(sub(f_q, mload(0x7cb40)), mload(0x48da0), f_q)) +mstore(0x7cb80, mulmod(mload(0x7c6c0), mload(0x48da0), f_q)) +mstore(0x7cba0, addmod(mload(0x7cb00), mload(0x7cb60), f_q)) +{ + let result := mulmod(mload(0x17b80), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17ba0), mload(0x48700), f_q), result, f_q) +mstore(510912, result) + } +mstore(0x7cbe0, mulmod(mload(0x7cbc0), mload(0x48ce0), f_q)) +mstore(0x7cc00, mulmod(sub(f_q, mload(0x7cbe0)), mload(0x48dc0), f_q)) +mstore(0x7cc20, mulmod(mload(0x7c6c0), mload(0x48dc0), f_q)) +mstore(0x7cc40, addmod(mload(0x7cba0), mload(0x7cc00), f_q)) +{ + let result := mulmod(mload(0x17c20), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17c40), mload(0x48700), f_q), result, f_q) +mstore(511072, result) + } +mstore(0x7cc80, mulmod(mload(0x7cc60), mload(0x48ce0), f_q)) +mstore(0x7cca0, mulmod(sub(f_q, mload(0x7cc80)), mload(0x48de0), f_q)) +mstore(0x7ccc0, mulmod(mload(0x7c6c0), mload(0x48de0), f_q)) +mstore(0x7cce0, addmod(mload(0x7cc40), mload(0x7cca0), f_q)) +{ + let result := mulmod(mload(0x17cc0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17ce0), mload(0x48700), f_q), result, f_q) +mstore(511232, result) + } +mstore(0x7cd20, mulmod(mload(0x7cd00), mload(0x48ce0), f_q)) +mstore(0x7cd40, mulmod(sub(f_q, mload(0x7cd20)), mload(0x48e00), f_q)) +mstore(0x7cd60, mulmod(mload(0x7c6c0), mload(0x48e00), f_q)) +mstore(0x7cd80, addmod(mload(0x7cce0), mload(0x7cd40), f_q)) +{ + let result := mulmod(mload(0x17d60), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17d80), mload(0x48700), f_q), result, f_q) +mstore(511392, result) + } +mstore(0x7cdc0, mulmod(mload(0x7cda0), mload(0x48ce0), f_q)) +mstore(0x7cde0, mulmod(sub(f_q, mload(0x7cdc0)), mload(0x48e20), f_q)) +mstore(0x7ce00, mulmod(mload(0x7c6c0), mload(0x48e20), f_q)) +mstore(0x7ce20, addmod(mload(0x7cd80), mload(0x7cde0), f_q)) +{ + let result := mulmod(mload(0x17e00), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17e20), mload(0x48700), f_q), result, f_q) +mstore(511552, result) + } +mstore(0x7ce60, mulmod(mload(0x7ce40), mload(0x48ce0), f_q)) +mstore(0x7ce80, mulmod(sub(f_q, mload(0x7ce60)), mload(0x48e40), f_q)) +mstore(0x7cea0, mulmod(mload(0x7c6c0), mload(0x48e40), f_q)) +mstore(0x7cec0, addmod(mload(0x7ce20), mload(0x7ce80), f_q)) +{ + let result := mulmod(mload(0x17ea0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17ec0), mload(0x48700), f_q), result, f_q) +mstore(511712, result) + } +mstore(0x7cf00, mulmod(mload(0x7cee0), mload(0x48ce0), f_q)) +mstore(0x7cf20, mulmod(sub(f_q, mload(0x7cf00)), mload(0x48e60), f_q)) +mstore(0x7cf40, mulmod(mload(0x7c6c0), mload(0x48e60), f_q)) +mstore(0x7cf60, addmod(mload(0x7cec0), mload(0x7cf20), f_q)) +{ + let result := mulmod(mload(0x17f40), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x17f60), mload(0x48700), f_q), result, f_q) +mstore(511872, result) + } +mstore(0x7cfa0, mulmod(mload(0x7cf80), mload(0x48ce0), f_q)) +mstore(0x7cfc0, mulmod(sub(f_q, mload(0x7cfa0)), mload(0x48e80), f_q)) +mstore(0x7cfe0, mulmod(mload(0x7c6c0), mload(0x48e80), f_q)) +mstore(0x7d000, addmod(mload(0x7cf60), mload(0x7cfc0), f_q)) +{ + let result := mulmod(mload(0x17fe0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18000), mload(0x48700), f_q), result, f_q) +mstore(512032, result) + } +mstore(0x7d040, mulmod(mload(0x7d020), mload(0x48ce0), f_q)) +mstore(0x7d060, mulmod(sub(f_q, mload(0x7d040)), mload(0x48ea0), f_q)) +mstore(0x7d080, mulmod(mload(0x7c6c0), mload(0x48ea0), f_q)) +mstore(0x7d0a0, addmod(mload(0x7d000), mload(0x7d060), f_q)) +{ + let result := mulmod(mload(0x18080), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x180a0), mload(0x48700), f_q), result, f_q) +mstore(512192, result) + } +mstore(0x7d0e0, mulmod(mload(0x7d0c0), mload(0x48ce0), f_q)) +mstore(0x7d100, mulmod(sub(f_q, mload(0x7d0e0)), mload(0x48ec0), f_q)) +mstore(0x7d120, mulmod(mload(0x7c6c0), mload(0x48ec0), f_q)) +mstore(0x7d140, addmod(mload(0x7d0a0), mload(0x7d100), f_q)) +{ + let result := mulmod(mload(0x18120), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18140), mload(0x48700), f_q), result, f_q) +mstore(512352, result) + } +mstore(0x7d180, mulmod(mload(0x7d160), mload(0x48ce0), f_q)) +mstore(0x7d1a0, mulmod(sub(f_q, mload(0x7d180)), mload(0x48ee0), f_q)) +mstore(0x7d1c0, mulmod(mload(0x7c6c0), mload(0x48ee0), f_q)) +mstore(0x7d1e0, addmod(mload(0x7d140), mload(0x7d1a0), f_q)) +{ + let result := mulmod(mload(0x181c0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x181e0), mload(0x48700), f_q), result, f_q) +mstore(512512, result) + } +mstore(0x7d220, mulmod(mload(0x7d200), mload(0x48ce0), f_q)) +mstore(0x7d240, mulmod(sub(f_q, mload(0x7d220)), mload(0x48f00), f_q)) +mstore(0x7d260, mulmod(mload(0x7c6c0), mload(0x48f00), f_q)) +mstore(0x7d280, addmod(mload(0x7d1e0), mload(0x7d240), f_q)) +{ + let result := mulmod(mload(0x18260), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18280), mload(0x48700), f_q), result, f_q) +mstore(512672, result) + } +mstore(0x7d2c0, mulmod(mload(0x7d2a0), mload(0x48ce0), f_q)) +mstore(0x7d2e0, mulmod(sub(f_q, mload(0x7d2c0)), mload(0x48f20), f_q)) +mstore(0x7d300, mulmod(mload(0x7c6c0), mload(0x48f20), f_q)) +mstore(0x7d320, addmod(mload(0x7d280), mload(0x7d2e0), f_q)) +{ + let result := mulmod(mload(0x18300), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18320), mload(0x48700), f_q), result, f_q) +mstore(512832, result) + } +mstore(0x7d360, mulmod(mload(0x7d340), mload(0x48ce0), f_q)) +mstore(0x7d380, mulmod(sub(f_q, mload(0x7d360)), mload(0x48f40), f_q)) +mstore(0x7d3a0, mulmod(mload(0x7c6c0), mload(0x48f40), f_q)) +mstore(0x7d3c0, addmod(mload(0x7d320), mload(0x7d380), f_q)) +{ + let result := mulmod(mload(0x183a0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x183c0), mload(0x48700), f_q), result, f_q) +mstore(512992, result) + } +mstore(0x7d400, mulmod(mload(0x7d3e0), mload(0x48ce0), f_q)) +mstore(0x7d420, mulmod(sub(f_q, mload(0x7d400)), mload(0x48f60), f_q)) +mstore(0x7d440, mulmod(mload(0x7c6c0), mload(0x48f60), f_q)) +mstore(0x7d460, addmod(mload(0x7d3c0), mload(0x7d420), f_q)) +{ + let result := mulmod(mload(0x18440), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18460), mload(0x48700), f_q), result, f_q) +mstore(513152, result) + } +mstore(0x7d4a0, mulmod(mload(0x7d480), mload(0x48ce0), f_q)) +mstore(0x7d4c0, mulmod(sub(f_q, mload(0x7d4a0)), mload(0x48f80), f_q)) +mstore(0x7d4e0, mulmod(mload(0x7c6c0), mload(0x48f80), f_q)) +mstore(0x7d500, addmod(mload(0x7d460), mload(0x7d4c0), f_q)) +{ + let result := mulmod(mload(0x184e0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18500), mload(0x48700), f_q), result, f_q) +mstore(513312, result) + } +mstore(0x7d540, mulmod(mload(0x7d520), mload(0x48ce0), f_q)) +mstore(0x7d560, mulmod(sub(f_q, mload(0x7d540)), mload(0x48fa0), f_q)) +mstore(0x7d580, mulmod(mload(0x7c6c0), mload(0x48fa0), f_q)) +mstore(0x7d5a0, addmod(mload(0x7d500), mload(0x7d560), f_q)) +{ + let result := mulmod(mload(0x18580), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x185a0), mload(0x48700), f_q), result, f_q) +mstore(513472, result) + } +mstore(0x7d5e0, mulmod(mload(0x7d5c0), mload(0x48ce0), f_q)) +mstore(0x7d600, mulmod(sub(f_q, mload(0x7d5e0)), mload(0x48fc0), f_q)) +mstore(0x7d620, mulmod(mload(0x7c6c0), mload(0x48fc0), f_q)) +mstore(0x7d640, addmod(mload(0x7d5a0), mload(0x7d600), f_q)) +{ + let result := mulmod(mload(0x18620), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18640), mload(0x48700), f_q), result, f_q) +mstore(513632, result) + } +mstore(0x7d680, mulmod(mload(0x7d660), mload(0x48ce0), f_q)) +mstore(0x7d6a0, mulmod(sub(f_q, mload(0x7d680)), mload(0x48fe0), f_q)) +mstore(0x7d6c0, mulmod(mload(0x7c6c0), mload(0x48fe0), f_q)) +mstore(0x7d6e0, addmod(mload(0x7d640), mload(0x7d6a0), f_q)) +{ + let result := mulmod(mload(0x186c0), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x186e0), mload(0x48700), f_q), result, f_q) +mstore(513792, result) + } +mstore(0x7d720, mulmod(mload(0x7d700), mload(0x48ce0), f_q)) +mstore(0x7d740, mulmod(sub(f_q, mload(0x7d720)), mload(0x49000), f_q)) +mstore(0x7d760, mulmod(mload(0x7c6c0), mload(0x49000), f_q)) +mstore(0x7d780, addmod(mload(0x7d6e0), mload(0x7d740), f_q)) +{ + let result := mulmod(mload(0x18760), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18780), mload(0x48700), f_q), result, f_q) +mstore(513952, result) + } +mstore(0x7d7c0, mulmod(mload(0x7d7a0), mload(0x48ce0), f_q)) +mstore(0x7d7e0, mulmod(sub(f_q, mload(0x7d7c0)), mload(0x49020), f_q)) +mstore(0x7d800, mulmod(mload(0x7c6c0), mload(0x49020), f_q)) +mstore(0x7d820, addmod(mload(0x7d780), mload(0x7d7e0), f_q)) +{ + let result := mulmod(mload(0x18800), mload(0x486e0), f_q) +result := addmod(mulmod(mload(0x18820), mload(0x48700), f_q), result, f_q) +mstore(514112, result) + } +mstore(0x7d860, mulmod(mload(0x7d840), mload(0x48ce0), f_q)) +mstore(0x7d880, mulmod(sub(f_q, mload(0x7d860)), mload(0x49040), f_q)) +mstore(0x7d8a0, mulmod(mload(0x7c6c0), mload(0x49040), f_q)) +mstore(0x7d8c0, addmod(mload(0x7d820), mload(0x7d880), f_q)) +mstore(0x7d8e0, mulmod(mload(0x7d8c0), mload(0x4d680), f_q)) +mstore(0x7d900, mulmod(mload(0x7c740), mload(0x4d680), f_q)) +mstore(0x7d920, mulmod(mload(0x7c7c0), mload(0x4d680), f_q)) +mstore(0x7d940, mulmod(mload(0x7c860), mload(0x4d680), f_q)) +mstore(0x7d960, mulmod(mload(0x7c900), mload(0x4d680), f_q)) +mstore(0x7d980, mulmod(mload(0x7c9a0), mload(0x4d680), f_q)) +mstore(0x7d9a0, mulmod(mload(0x7ca40), mload(0x4d680), f_q)) +mstore(0x7d9c0, mulmod(mload(0x7cae0), mload(0x4d680), f_q)) +mstore(0x7d9e0, mulmod(mload(0x7cb80), mload(0x4d680), f_q)) +mstore(0x7da00, mulmod(mload(0x7cc20), mload(0x4d680), f_q)) +mstore(0x7da20, mulmod(mload(0x7ccc0), mload(0x4d680), f_q)) +mstore(0x7da40, mulmod(mload(0x7cd60), mload(0x4d680), f_q)) +mstore(0x7da60, mulmod(mload(0x7ce00), mload(0x4d680), f_q)) +mstore(0x7da80, mulmod(mload(0x7cea0), mload(0x4d680), f_q)) +mstore(0x7daa0, mulmod(mload(0x7cf40), mload(0x4d680), f_q)) +mstore(0x7dac0, mulmod(mload(0x7cfe0), mload(0x4d680), f_q)) +mstore(0x7dae0, mulmod(mload(0x7d080), mload(0x4d680), f_q)) +mstore(0x7db00, mulmod(mload(0x7d120), mload(0x4d680), f_q)) +mstore(0x7db20, mulmod(mload(0x7d1c0), mload(0x4d680), f_q)) +mstore(0x7db40, mulmod(mload(0x7d260), mload(0x4d680), f_q)) +mstore(0x7db60, mulmod(mload(0x7d300), mload(0x4d680), f_q)) +mstore(0x7db80, mulmod(mload(0x7d3a0), mload(0x4d680), f_q)) +mstore(0x7dba0, mulmod(mload(0x7d440), mload(0x4d680), f_q)) +mstore(0x7dbc0, mulmod(mload(0x7d4e0), mload(0x4d680), f_q)) +mstore(0x7dbe0, mulmod(mload(0x7d580), mload(0x4d680), f_q)) +mstore(0x7dc00, mulmod(mload(0x7d620), mload(0x4d680), f_q)) +mstore(0x7dc20, mulmod(mload(0x7d6c0), mload(0x4d680), f_q)) +mstore(0x7dc40, mulmod(mload(0x7d760), mload(0x4d680), f_q)) +mstore(0x7dc60, mulmod(mload(0x7d800), mload(0x4d680), f_q)) +mstore(0x7dc80, mulmod(mload(0x7d8a0), mload(0x4d680), f_q)) +mstore(0x7dca0, addmod(mload(0x7c6a0), mload(0x7d8e0), f_q)) +mstore(0x7dcc0, mulmod(1, mload(0x485e0), f_q)) +mstore(0x7dce0, mulmod(1, mload(0x18980), f_q)) +mstore(0x7dd00, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0x7dd20, 0x0000000000000000000000000000000000000000000000000000000000000002) +mstore(0x7dd40, mload(0x7dca0)) +success := and(eq(staticcall(gas(), 0x7, 0x7dd00, 0x60, 0x7dd00, 0x40), 1), success) +mstore(0x7dd60, mload(0x7dd00)) + mstore(0x7dd80, mload(0x7dd20)) +mstore(0x7dda0, mload(0x1a0)) + mstore(0x7ddc0, mload(0x1c0)) +success := and(eq(staticcall(gas(), 0x6, 0x7dd60, 0x80, 0x7dd60, 0x40), 1), success) +mstore(0x7dde0, mload(0x1e0)) + mstore(0x7de00, mload(0x200)) +mstore(0x7de20, mload(0x56fc0)) +success := and(eq(staticcall(gas(), 0x7, 0x7dde0, 0x60, 0x7dde0, 0x40), 1), success) +mstore(0x7de40, mload(0x7dd60)) + mstore(0x7de60, mload(0x7dd80)) +mstore(0x7de80, mload(0x7dde0)) + mstore(0x7dea0, mload(0x7de00)) +success := and(eq(staticcall(gas(), 0x6, 0x7de40, 0x80, 0x7de40, 0x40), 1), success) +mstore(0x7dec0, mload(0x220)) + mstore(0x7dee0, mload(0x240)) +mstore(0x7df00, mload(0x56fe0)) +success := and(eq(staticcall(gas(), 0x7, 0x7dec0, 0x60, 0x7dec0, 0x40), 1), success) +mstore(0x7df20, mload(0x7de40)) + mstore(0x7df40, mload(0x7de60)) +mstore(0x7df60, mload(0x7dec0)) + mstore(0x7df80, mload(0x7dee0)) +success := and(eq(staticcall(gas(), 0x6, 0x7df20, 0x80, 0x7df20, 0x40), 1), success) +mstore(0x7dfa0, mload(0x260)) + mstore(0x7dfc0, mload(0x280)) +mstore(0x7dfe0, mload(0x57000)) +success := and(eq(staticcall(gas(), 0x7, 0x7dfa0, 0x60, 0x7dfa0, 0x40), 1), success) +mstore(0x7e000, mload(0x7df20)) + mstore(0x7e020, mload(0x7df40)) +mstore(0x7e040, mload(0x7dfa0)) + mstore(0x7e060, mload(0x7dfc0)) +success := and(eq(staticcall(gas(), 0x6, 0x7e000, 0x80, 0x7e000, 0x40), 1), success) +mstore(0x7e080, mload(0x2a0)) + mstore(0x7e0a0, mload(0x2c0)) +mstore(0x7e0c0, mload(0x57020)) +success := and(eq(staticcall(gas(), 0x7, 0x7e080, 0x60, 0x7e080, 0x40), 1), success) +mstore(0x7e0e0, mload(0x7e000)) + mstore(0x7e100, mload(0x7e020)) +mstore(0x7e120, mload(0x7e080)) + mstore(0x7e140, mload(0x7e0a0)) +success := and(eq(staticcall(gas(), 0x6, 0x7e0e0, 0x80, 0x7e0e0, 0x40), 1), success) +mstore(0x7e160, mload(0x2e0)) + mstore(0x7e180, mload(0x300)) +mstore(0x7e1a0, mload(0x57040)) +success := and(eq(staticcall(gas(), 0x7, 0x7e160, 0x60, 0x7e160, 0x40), 1), success) +mstore(0x7e1c0, mload(0x7e0e0)) + mstore(0x7e1e0, mload(0x7e100)) +mstore(0x7e200, mload(0x7e160)) + mstore(0x7e220, mload(0x7e180)) +success := and(eq(staticcall(gas(), 0x6, 0x7e1c0, 0x80, 0x7e1c0, 0x40), 1), success) +mstore(0x7e240, mload(0x320)) + mstore(0x7e260, mload(0x340)) +mstore(0x7e280, mload(0x57060)) +success := and(eq(staticcall(gas(), 0x7, 0x7e240, 0x60, 0x7e240, 0x40), 1), success) +mstore(0x7e2a0, mload(0x7e1c0)) + mstore(0x7e2c0, mload(0x7e1e0)) +mstore(0x7e2e0, mload(0x7e240)) + mstore(0x7e300, mload(0x7e260)) +success := and(eq(staticcall(gas(), 0x6, 0x7e2a0, 0x80, 0x7e2a0, 0x40), 1), success) +mstore(0x7e320, mload(0x360)) + mstore(0x7e340, mload(0x380)) +mstore(0x7e360, mload(0x57080)) +success := and(eq(staticcall(gas(), 0x7, 0x7e320, 0x60, 0x7e320, 0x40), 1), success) +mstore(0x7e380, mload(0x7e2a0)) + mstore(0x7e3a0, mload(0x7e2c0)) +mstore(0x7e3c0, mload(0x7e320)) + mstore(0x7e3e0, mload(0x7e340)) +success := and(eq(staticcall(gas(), 0x6, 0x7e380, 0x80, 0x7e380, 0x40), 1), success) +mstore(0x7e400, mload(0x3a0)) + mstore(0x7e420, mload(0x3c0)) +mstore(0x7e440, mload(0x570a0)) +success := and(eq(staticcall(gas(), 0x7, 0x7e400, 0x60, 0x7e400, 0x40), 1), success) +mstore(0x7e460, mload(0x7e380)) + mstore(0x7e480, mload(0x7e3a0)) +mstore(0x7e4a0, mload(0x7e400)) + mstore(0x7e4c0, mload(0x7e420)) +success := and(eq(staticcall(gas(), 0x6, 0x7e460, 0x80, 0x7e460, 0x40), 1), success) +mstore(0x7e4e0, mload(0x3e0)) + mstore(0x7e500, mload(0x400)) +mstore(0x7e520, mload(0x570c0)) +success := and(eq(staticcall(gas(), 0x7, 0x7e4e0, 0x60, 0x7e4e0, 0x40), 1), success) +mstore(0x7e540, mload(0x7e460)) + mstore(0x7e560, mload(0x7e480)) +mstore(0x7e580, mload(0x7e4e0)) + mstore(0x7e5a0, mload(0x7e500)) +success := and(eq(staticcall(gas(), 0x6, 0x7e540, 0x80, 0x7e540, 0x40), 1), success) +mstore(0x7e5c0, mload(0x420)) + mstore(0x7e5e0, mload(0x440)) +mstore(0x7e600, mload(0x570e0)) +success := and(eq(staticcall(gas(), 0x7, 0x7e5c0, 0x60, 0x7e5c0, 0x40), 1), success) +mstore(0x7e620, mload(0x7e540)) + mstore(0x7e640, mload(0x7e560)) +mstore(0x7e660, mload(0x7e5c0)) + mstore(0x7e680, mload(0x7e5e0)) +success := and(eq(staticcall(gas(), 0x6, 0x7e620, 0x80, 0x7e620, 0x40), 1), success) +mstore(0x7e6a0, mload(0x460)) + mstore(0x7e6c0, mload(0x480)) +mstore(0x7e6e0, mload(0x57100)) +success := and(eq(staticcall(gas(), 0x7, 0x7e6a0, 0x60, 0x7e6a0, 0x40), 1), success) +mstore(0x7e700, mload(0x7e620)) + mstore(0x7e720, mload(0x7e640)) +mstore(0x7e740, mload(0x7e6a0)) + mstore(0x7e760, mload(0x7e6c0)) +success := and(eq(staticcall(gas(), 0x6, 0x7e700, 0x80, 0x7e700, 0x40), 1), success) +mstore(0x7e780, mload(0x4a0)) + mstore(0x7e7a0, mload(0x4c0)) +mstore(0x7e7c0, mload(0x57120)) +success := and(eq(staticcall(gas(), 0x7, 0x7e780, 0x60, 0x7e780, 0x40), 1), success) +mstore(0x7e7e0, mload(0x7e700)) + mstore(0x7e800, mload(0x7e720)) +mstore(0x7e820, mload(0x7e780)) + mstore(0x7e840, mload(0x7e7a0)) +success := and(eq(staticcall(gas(), 0x6, 0x7e7e0, 0x80, 0x7e7e0, 0x40), 1), success) +mstore(0x7e860, mload(0x4e0)) + mstore(0x7e880, mload(0x500)) +mstore(0x7e8a0, mload(0x57140)) +success := and(eq(staticcall(gas(), 0x7, 0x7e860, 0x60, 0x7e860, 0x40), 1), success) +mstore(0x7e8c0, mload(0x7e7e0)) + mstore(0x7e8e0, mload(0x7e800)) +mstore(0x7e900, mload(0x7e860)) + mstore(0x7e920, mload(0x7e880)) +success := and(eq(staticcall(gas(), 0x6, 0x7e8c0, 0x80, 0x7e8c0, 0x40), 1), success) +mstore(0x7e940, mload(0x520)) + mstore(0x7e960, mload(0x540)) +mstore(0x7e980, mload(0x57160)) +success := and(eq(staticcall(gas(), 0x7, 0x7e940, 0x60, 0x7e940, 0x40), 1), success) +mstore(0x7e9a0, mload(0x7e8c0)) + mstore(0x7e9c0, mload(0x7e8e0)) +mstore(0x7e9e0, mload(0x7e940)) + mstore(0x7ea00, mload(0x7e960)) +success := and(eq(staticcall(gas(), 0x6, 0x7e9a0, 0x80, 0x7e9a0, 0x40), 1), success) +mstore(0x7ea20, mload(0x560)) + mstore(0x7ea40, mload(0x580)) +mstore(0x7ea60, mload(0x57180)) +success := and(eq(staticcall(gas(), 0x7, 0x7ea20, 0x60, 0x7ea20, 0x40), 1), success) +mstore(0x7ea80, mload(0x7e9a0)) + mstore(0x7eaa0, mload(0x7e9c0)) +mstore(0x7eac0, mload(0x7ea20)) + mstore(0x7eae0, mload(0x7ea40)) +success := and(eq(staticcall(gas(), 0x6, 0x7ea80, 0x80, 0x7ea80, 0x40), 1), success) +mstore(0x7eb00, mload(0x5a0)) + mstore(0x7eb20, mload(0x5c0)) +mstore(0x7eb40, mload(0x571a0)) +success := and(eq(staticcall(gas(), 0x7, 0x7eb00, 0x60, 0x7eb00, 0x40), 1), success) +mstore(0x7eb60, mload(0x7ea80)) + mstore(0x7eb80, mload(0x7eaa0)) +mstore(0x7eba0, mload(0x7eb00)) + mstore(0x7ebc0, mload(0x7eb20)) +success := and(eq(staticcall(gas(), 0x6, 0x7eb60, 0x80, 0x7eb60, 0x40), 1), success) +mstore(0x7ebe0, mload(0x5e0)) + mstore(0x7ec00, mload(0x600)) +mstore(0x7ec20, mload(0x571c0)) +success := and(eq(staticcall(gas(), 0x7, 0x7ebe0, 0x60, 0x7ebe0, 0x40), 1), success) +mstore(0x7ec40, mload(0x7eb60)) + mstore(0x7ec60, mload(0x7eb80)) +mstore(0x7ec80, mload(0x7ebe0)) + mstore(0x7eca0, mload(0x7ec00)) +success := and(eq(staticcall(gas(), 0x6, 0x7ec40, 0x80, 0x7ec40, 0x40), 1), success) +mstore(0x7ecc0, mload(0x620)) + mstore(0x7ece0, mload(0x640)) +mstore(0x7ed00, mload(0x571e0)) +success := and(eq(staticcall(gas(), 0x7, 0x7ecc0, 0x60, 0x7ecc0, 0x40), 1), success) +mstore(0x7ed20, mload(0x7ec40)) + mstore(0x7ed40, mload(0x7ec60)) +mstore(0x7ed60, mload(0x7ecc0)) + mstore(0x7ed80, mload(0x7ece0)) +success := and(eq(staticcall(gas(), 0x6, 0x7ed20, 0x80, 0x7ed20, 0x40), 1), success) +mstore(0x7eda0, mload(0x660)) + mstore(0x7edc0, mload(0x680)) +mstore(0x7ede0, mload(0x57200)) +success := and(eq(staticcall(gas(), 0x7, 0x7eda0, 0x60, 0x7eda0, 0x40), 1), success) +mstore(0x7ee00, mload(0x7ed20)) + mstore(0x7ee20, mload(0x7ed40)) +mstore(0x7ee40, mload(0x7eda0)) + mstore(0x7ee60, mload(0x7edc0)) +success := and(eq(staticcall(gas(), 0x6, 0x7ee00, 0x80, 0x7ee00, 0x40), 1), success) +mstore(0x7ee80, mload(0x6a0)) + mstore(0x7eea0, mload(0x6c0)) +mstore(0x7eec0, mload(0x57220)) +success := and(eq(staticcall(gas(), 0x7, 0x7ee80, 0x60, 0x7ee80, 0x40), 1), success) +mstore(0x7eee0, mload(0x7ee00)) + mstore(0x7ef00, mload(0x7ee20)) +mstore(0x7ef20, mload(0x7ee80)) + mstore(0x7ef40, mload(0x7eea0)) +success := and(eq(staticcall(gas(), 0x6, 0x7eee0, 0x80, 0x7eee0, 0x40), 1), success) +mstore(0x7ef60, mload(0x6e0)) + mstore(0x7ef80, mload(0x700)) +mstore(0x7efa0, mload(0x57240)) +success := and(eq(staticcall(gas(), 0x7, 0x7ef60, 0x60, 0x7ef60, 0x40), 1), success) +mstore(0x7efc0, mload(0x7eee0)) + mstore(0x7efe0, mload(0x7ef00)) +mstore(0x7f000, mload(0x7ef60)) + mstore(0x7f020, mload(0x7ef80)) +success := and(eq(staticcall(gas(), 0x6, 0x7efc0, 0x80, 0x7efc0, 0x40), 1), success) +mstore(0x7f040, mload(0x720)) + mstore(0x7f060, mload(0x740)) +mstore(0x7f080, mload(0x57260)) +success := and(eq(staticcall(gas(), 0x7, 0x7f040, 0x60, 0x7f040, 0x40), 1), success) +mstore(0x7f0a0, mload(0x7efc0)) + mstore(0x7f0c0, mload(0x7efe0)) +mstore(0x7f0e0, mload(0x7f040)) + mstore(0x7f100, mload(0x7f060)) +success := and(eq(staticcall(gas(), 0x6, 0x7f0a0, 0x80, 0x7f0a0, 0x40), 1), success) +mstore(0x7f120, mload(0x760)) + mstore(0x7f140, mload(0x780)) +mstore(0x7f160, mload(0x57280)) +success := and(eq(staticcall(gas(), 0x7, 0x7f120, 0x60, 0x7f120, 0x40), 1), success) +mstore(0x7f180, mload(0x7f0a0)) + mstore(0x7f1a0, mload(0x7f0c0)) +mstore(0x7f1c0, mload(0x7f120)) + mstore(0x7f1e0, mload(0x7f140)) +success := and(eq(staticcall(gas(), 0x6, 0x7f180, 0x80, 0x7f180, 0x40), 1), success) +mstore(0x7f200, mload(0x7a0)) + mstore(0x7f220, mload(0x7c0)) +mstore(0x7f240, mload(0x572a0)) +success := and(eq(staticcall(gas(), 0x7, 0x7f200, 0x60, 0x7f200, 0x40), 1), success) +mstore(0x7f260, mload(0x7f180)) + mstore(0x7f280, mload(0x7f1a0)) +mstore(0x7f2a0, mload(0x7f200)) + mstore(0x7f2c0, mload(0x7f220)) +success := and(eq(staticcall(gas(), 0x6, 0x7f260, 0x80, 0x7f260, 0x40), 1), success) +mstore(0x7f2e0, mload(0x7e0)) + mstore(0x7f300, mload(0x800)) +mstore(0x7f320, mload(0x572c0)) +success := and(eq(staticcall(gas(), 0x7, 0x7f2e0, 0x60, 0x7f2e0, 0x40), 1), success) +mstore(0x7f340, mload(0x7f260)) + mstore(0x7f360, mload(0x7f280)) +mstore(0x7f380, mload(0x7f2e0)) + mstore(0x7f3a0, mload(0x7f300)) +success := and(eq(staticcall(gas(), 0x6, 0x7f340, 0x80, 0x7f340, 0x40), 1), success) +mstore(0x7f3c0, mload(0x820)) + mstore(0x7f3e0, mload(0x840)) +mstore(0x7f400, mload(0x572e0)) +success := and(eq(staticcall(gas(), 0x7, 0x7f3c0, 0x60, 0x7f3c0, 0x40), 1), success) +mstore(0x7f420, mload(0x7f340)) + mstore(0x7f440, mload(0x7f360)) +mstore(0x7f460, mload(0x7f3c0)) + mstore(0x7f480, mload(0x7f3e0)) +success := and(eq(staticcall(gas(), 0x6, 0x7f420, 0x80, 0x7f420, 0x40), 1), success) +mstore(0x7f4a0, mload(0x860)) + mstore(0x7f4c0, mload(0x880)) +mstore(0x7f4e0, mload(0x57300)) +success := and(eq(staticcall(gas(), 0x7, 0x7f4a0, 0x60, 0x7f4a0, 0x40), 1), success) +mstore(0x7f500, mload(0x7f420)) + mstore(0x7f520, mload(0x7f440)) +mstore(0x7f540, mload(0x7f4a0)) + mstore(0x7f560, mload(0x7f4c0)) +success := and(eq(staticcall(gas(), 0x6, 0x7f500, 0x80, 0x7f500, 0x40), 1), success) +mstore(0x7f580, mload(0x8a0)) + mstore(0x7f5a0, mload(0x8c0)) +mstore(0x7f5c0, mload(0x57320)) +success := and(eq(staticcall(gas(), 0x7, 0x7f580, 0x60, 0x7f580, 0x40), 1), success) +mstore(0x7f5e0, mload(0x7f500)) + mstore(0x7f600, mload(0x7f520)) +mstore(0x7f620, mload(0x7f580)) + mstore(0x7f640, mload(0x7f5a0)) +success := and(eq(staticcall(gas(), 0x6, 0x7f5e0, 0x80, 0x7f5e0, 0x40), 1), success) +mstore(0x7f660, mload(0x8e0)) + mstore(0x7f680, mload(0x900)) +mstore(0x7f6a0, mload(0x57340)) +success := and(eq(staticcall(gas(), 0x7, 0x7f660, 0x60, 0x7f660, 0x40), 1), success) +mstore(0x7f6c0, mload(0x7f5e0)) + mstore(0x7f6e0, mload(0x7f600)) +mstore(0x7f700, mload(0x7f660)) + mstore(0x7f720, mload(0x7f680)) +success := and(eq(staticcall(gas(), 0x6, 0x7f6c0, 0x80, 0x7f6c0, 0x40), 1), success) +mstore(0x7f740, mload(0x920)) + mstore(0x7f760, mload(0x940)) +mstore(0x7f780, mload(0x57360)) +success := and(eq(staticcall(gas(), 0x7, 0x7f740, 0x60, 0x7f740, 0x40), 1), success) +mstore(0x7f7a0, mload(0x7f6c0)) + mstore(0x7f7c0, mload(0x7f6e0)) +mstore(0x7f7e0, mload(0x7f740)) + mstore(0x7f800, mload(0x7f760)) +success := and(eq(staticcall(gas(), 0x6, 0x7f7a0, 0x80, 0x7f7a0, 0x40), 1), success) +mstore(0x7f820, mload(0x960)) + mstore(0x7f840, mload(0x980)) +mstore(0x7f860, mload(0x57380)) +success := and(eq(staticcall(gas(), 0x7, 0x7f820, 0x60, 0x7f820, 0x40), 1), success) +mstore(0x7f880, mload(0x7f7a0)) + mstore(0x7f8a0, mload(0x7f7c0)) +mstore(0x7f8c0, mload(0x7f820)) + mstore(0x7f8e0, mload(0x7f840)) +success := and(eq(staticcall(gas(), 0x6, 0x7f880, 0x80, 0x7f880, 0x40), 1), success) +mstore(0x7f900, mload(0x9a0)) + mstore(0x7f920, mload(0x9c0)) +mstore(0x7f940, mload(0x573a0)) +success := and(eq(staticcall(gas(), 0x7, 0x7f900, 0x60, 0x7f900, 0x40), 1), success) +mstore(0x7f960, mload(0x7f880)) + mstore(0x7f980, mload(0x7f8a0)) +mstore(0x7f9a0, mload(0x7f900)) + mstore(0x7f9c0, mload(0x7f920)) +success := and(eq(staticcall(gas(), 0x6, 0x7f960, 0x80, 0x7f960, 0x40), 1), success) +mstore(0x7f9e0, mload(0x9e0)) + mstore(0x7fa00, mload(0xa00)) +mstore(0x7fa20, mload(0x573c0)) +success := and(eq(staticcall(gas(), 0x7, 0x7f9e0, 0x60, 0x7f9e0, 0x40), 1), success) +mstore(0x7fa40, mload(0x7f960)) + mstore(0x7fa60, mload(0x7f980)) +mstore(0x7fa80, mload(0x7f9e0)) + mstore(0x7faa0, mload(0x7fa00)) +success := and(eq(staticcall(gas(), 0x6, 0x7fa40, 0x80, 0x7fa40, 0x40), 1), success) +mstore(0x7fac0, mload(0xa20)) + mstore(0x7fae0, mload(0xa40)) +mstore(0x7fb00, mload(0x573e0)) +success := and(eq(staticcall(gas(), 0x7, 0x7fac0, 0x60, 0x7fac0, 0x40), 1), success) +mstore(0x7fb20, mload(0x7fa40)) + mstore(0x7fb40, mload(0x7fa60)) +mstore(0x7fb60, mload(0x7fac0)) + mstore(0x7fb80, mload(0x7fae0)) +success := and(eq(staticcall(gas(), 0x6, 0x7fb20, 0x80, 0x7fb20, 0x40), 1), success) +mstore(0x7fba0, mload(0xa60)) + mstore(0x7fbc0, mload(0xa80)) +mstore(0x7fbe0, mload(0x57400)) +success := and(eq(staticcall(gas(), 0x7, 0x7fba0, 0x60, 0x7fba0, 0x40), 1), success) +mstore(0x7fc00, mload(0x7fb20)) + mstore(0x7fc20, mload(0x7fb40)) +mstore(0x7fc40, mload(0x7fba0)) + mstore(0x7fc60, mload(0x7fbc0)) +success := and(eq(staticcall(gas(), 0x6, 0x7fc00, 0x80, 0x7fc00, 0x40), 1), success) +mstore(0x7fc80, mload(0xaa0)) + mstore(0x7fca0, mload(0xac0)) +mstore(0x7fcc0, mload(0x57420)) +success := and(eq(staticcall(gas(), 0x7, 0x7fc80, 0x60, 0x7fc80, 0x40), 1), success) +mstore(0x7fce0, mload(0x7fc00)) + mstore(0x7fd00, mload(0x7fc20)) +mstore(0x7fd20, mload(0x7fc80)) + mstore(0x7fd40, mload(0x7fca0)) +success := and(eq(staticcall(gas(), 0x6, 0x7fce0, 0x80, 0x7fce0, 0x40), 1), success) +mstore(0x7fd60, mload(0xae0)) + mstore(0x7fd80, mload(0xb00)) +mstore(0x7fda0, mload(0x57440)) +success := and(eq(staticcall(gas(), 0x7, 0x7fd60, 0x60, 0x7fd60, 0x40), 1), success) +mstore(0x7fdc0, mload(0x7fce0)) + mstore(0x7fde0, mload(0x7fd00)) +mstore(0x7fe00, mload(0x7fd60)) + mstore(0x7fe20, mload(0x7fd80)) +success := and(eq(staticcall(gas(), 0x6, 0x7fdc0, 0x80, 0x7fdc0, 0x40), 1), success) +mstore(0x7fe40, mload(0xb20)) + mstore(0x7fe60, mload(0xb40)) +mstore(0x7fe80, mload(0x57460)) +success := and(eq(staticcall(gas(), 0x7, 0x7fe40, 0x60, 0x7fe40, 0x40), 1), success) +mstore(0x7fea0, mload(0x7fdc0)) + mstore(0x7fec0, mload(0x7fde0)) +mstore(0x7fee0, mload(0x7fe40)) + mstore(0x7ff00, mload(0x7fe60)) +success := and(eq(staticcall(gas(), 0x6, 0x7fea0, 0x80, 0x7fea0, 0x40), 1), success) +mstore(0x7ff20, mload(0xb60)) + mstore(0x7ff40, mload(0xb80)) +mstore(0x7ff60, mload(0x57480)) +success := and(eq(staticcall(gas(), 0x7, 0x7ff20, 0x60, 0x7ff20, 0x40), 1), success) +mstore(0x7ff80, mload(0x7fea0)) + mstore(0x7ffa0, mload(0x7fec0)) +mstore(0x7ffc0, mload(0x7ff20)) + mstore(0x7ffe0, mload(0x7ff40)) +success := and(eq(staticcall(gas(), 0x6, 0x7ff80, 0x80, 0x7ff80, 0x40), 1), success) +mstore(0x80000, mload(0xba0)) + mstore(0x80020, mload(0xbc0)) +mstore(0x80040, mload(0x574a0)) +success := and(eq(staticcall(gas(), 0x7, 0x80000, 0x60, 0x80000, 0x40), 1), success) +mstore(0x80060, mload(0x7ff80)) + mstore(0x80080, mload(0x7ffa0)) +mstore(0x800a0, mload(0x80000)) + mstore(0x800c0, mload(0x80020)) +success := and(eq(staticcall(gas(), 0x6, 0x80060, 0x80, 0x80060, 0x40), 1), success) +mstore(0x800e0, mload(0xbe0)) + mstore(0x80100, mload(0xc00)) +mstore(0x80120, mload(0x574c0)) +success := and(eq(staticcall(gas(), 0x7, 0x800e0, 0x60, 0x800e0, 0x40), 1), success) +mstore(0x80140, mload(0x80060)) + mstore(0x80160, mload(0x80080)) +mstore(0x80180, mload(0x800e0)) + mstore(0x801a0, mload(0x80100)) +success := and(eq(staticcall(gas(), 0x6, 0x80140, 0x80, 0x80140, 0x40), 1), success) +mstore(0x801c0, mload(0xc20)) + mstore(0x801e0, mload(0xc40)) +mstore(0x80200, mload(0x574e0)) +success := and(eq(staticcall(gas(), 0x7, 0x801c0, 0x60, 0x801c0, 0x40), 1), success) +mstore(0x80220, mload(0x80140)) + mstore(0x80240, mload(0x80160)) +mstore(0x80260, mload(0x801c0)) + mstore(0x80280, mload(0x801e0)) +success := and(eq(staticcall(gas(), 0x6, 0x80220, 0x80, 0x80220, 0x40), 1), success) +mstore(0x802a0, mload(0xc60)) + mstore(0x802c0, mload(0xc80)) +mstore(0x802e0, mload(0x57500)) +success := and(eq(staticcall(gas(), 0x7, 0x802a0, 0x60, 0x802a0, 0x40), 1), success) +mstore(0x80300, mload(0x80220)) + mstore(0x80320, mload(0x80240)) +mstore(0x80340, mload(0x802a0)) + mstore(0x80360, mload(0x802c0)) +success := and(eq(staticcall(gas(), 0x6, 0x80300, 0x80, 0x80300, 0x40), 1), success) +mstore(0x80380, mload(0xca0)) + mstore(0x803a0, mload(0xcc0)) +mstore(0x803c0, mload(0x57520)) +success := and(eq(staticcall(gas(), 0x7, 0x80380, 0x60, 0x80380, 0x40), 1), success) +mstore(0x803e0, mload(0x80300)) + mstore(0x80400, mload(0x80320)) +mstore(0x80420, mload(0x80380)) + mstore(0x80440, mload(0x803a0)) +success := and(eq(staticcall(gas(), 0x6, 0x803e0, 0x80, 0x803e0, 0x40), 1), success) +mstore(0x80460, mload(0xce0)) + mstore(0x80480, mload(0xd00)) +mstore(0x804a0, mload(0x57540)) +success := and(eq(staticcall(gas(), 0x7, 0x80460, 0x60, 0x80460, 0x40), 1), success) +mstore(0x804c0, mload(0x803e0)) + mstore(0x804e0, mload(0x80400)) +mstore(0x80500, mload(0x80460)) + mstore(0x80520, mload(0x80480)) +success := and(eq(staticcall(gas(), 0x6, 0x804c0, 0x80, 0x804c0, 0x40), 1), success) +mstore(0x80540, mload(0xd20)) + mstore(0x80560, mload(0xd40)) +mstore(0x80580, mload(0x57560)) +success := and(eq(staticcall(gas(), 0x7, 0x80540, 0x60, 0x80540, 0x40), 1), success) +mstore(0x805a0, mload(0x804c0)) + mstore(0x805c0, mload(0x804e0)) +mstore(0x805e0, mload(0x80540)) + mstore(0x80600, mload(0x80560)) +success := and(eq(staticcall(gas(), 0x6, 0x805a0, 0x80, 0x805a0, 0x40), 1), success) +mstore(0x80620, mload(0xd60)) + mstore(0x80640, mload(0xd80)) +mstore(0x80660, mload(0x57580)) +success := and(eq(staticcall(gas(), 0x7, 0x80620, 0x60, 0x80620, 0x40), 1), success) +mstore(0x80680, mload(0x805a0)) + mstore(0x806a0, mload(0x805c0)) +mstore(0x806c0, mload(0x80620)) + mstore(0x806e0, mload(0x80640)) +success := and(eq(staticcall(gas(), 0x6, 0x80680, 0x80, 0x80680, 0x40), 1), success) +mstore(0x80700, mload(0xda0)) + mstore(0x80720, mload(0xdc0)) +mstore(0x80740, mload(0x575a0)) +success := and(eq(staticcall(gas(), 0x7, 0x80700, 0x60, 0x80700, 0x40), 1), success) +mstore(0x80760, mload(0x80680)) + mstore(0x80780, mload(0x806a0)) +mstore(0x807a0, mload(0x80700)) + mstore(0x807c0, mload(0x80720)) +success := and(eq(staticcall(gas(), 0x6, 0x80760, 0x80, 0x80760, 0x40), 1), success) +mstore(0x807e0, mload(0xde0)) + mstore(0x80800, mload(0xe00)) +mstore(0x80820, mload(0x575c0)) +success := and(eq(staticcall(gas(), 0x7, 0x807e0, 0x60, 0x807e0, 0x40), 1), success) +mstore(0x80840, mload(0x80760)) + mstore(0x80860, mload(0x80780)) +mstore(0x80880, mload(0x807e0)) + mstore(0x808a0, mload(0x80800)) +success := and(eq(staticcall(gas(), 0x6, 0x80840, 0x80, 0x80840, 0x40), 1), success) +mstore(0x808c0, mload(0xe20)) + mstore(0x808e0, mload(0xe40)) +mstore(0x80900, mload(0x575e0)) +success := and(eq(staticcall(gas(), 0x7, 0x808c0, 0x60, 0x808c0, 0x40), 1), success) +mstore(0x80920, mload(0x80840)) + mstore(0x80940, mload(0x80860)) +mstore(0x80960, mload(0x808c0)) + mstore(0x80980, mload(0x808e0)) +success := and(eq(staticcall(gas(), 0x6, 0x80920, 0x80, 0x80920, 0x40), 1), success) +mstore(0x809a0, mload(0xe60)) + mstore(0x809c0, mload(0xe80)) +mstore(0x809e0, mload(0x57600)) +success := and(eq(staticcall(gas(), 0x7, 0x809a0, 0x60, 0x809a0, 0x40), 1), success) +mstore(0x80a00, mload(0x80920)) + mstore(0x80a20, mload(0x80940)) +mstore(0x80a40, mload(0x809a0)) + mstore(0x80a60, mload(0x809c0)) +success := and(eq(staticcall(gas(), 0x6, 0x80a00, 0x80, 0x80a00, 0x40), 1), success) +mstore(0x80a80, mload(0xea0)) + mstore(0x80aa0, mload(0xec0)) +mstore(0x80ac0, mload(0x57620)) +success := and(eq(staticcall(gas(), 0x7, 0x80a80, 0x60, 0x80a80, 0x40), 1), success) +mstore(0x80ae0, mload(0x80a00)) + mstore(0x80b00, mload(0x80a20)) +mstore(0x80b20, mload(0x80a80)) + mstore(0x80b40, mload(0x80aa0)) +success := and(eq(staticcall(gas(), 0x6, 0x80ae0, 0x80, 0x80ae0, 0x40), 1), success) +mstore(0x80b60, mload(0xee0)) + mstore(0x80b80, mload(0xf00)) +mstore(0x80ba0, mload(0x57640)) +success := and(eq(staticcall(gas(), 0x7, 0x80b60, 0x60, 0x80b60, 0x40), 1), success) +mstore(0x80bc0, mload(0x80ae0)) + mstore(0x80be0, mload(0x80b00)) +mstore(0x80c00, mload(0x80b60)) + mstore(0x80c20, mload(0x80b80)) +success := and(eq(staticcall(gas(), 0x6, 0x80bc0, 0x80, 0x80bc0, 0x40), 1), success) +mstore(0x80c40, mload(0xf20)) + mstore(0x80c60, mload(0xf40)) +mstore(0x80c80, mload(0x57660)) +success := and(eq(staticcall(gas(), 0x7, 0x80c40, 0x60, 0x80c40, 0x40), 1), success) +mstore(0x80ca0, mload(0x80bc0)) + mstore(0x80cc0, mload(0x80be0)) +mstore(0x80ce0, mload(0x80c40)) + mstore(0x80d00, mload(0x80c60)) +success := and(eq(staticcall(gas(), 0x6, 0x80ca0, 0x80, 0x80ca0, 0x40), 1), success) +mstore(0x80d20, mload(0xf60)) + mstore(0x80d40, mload(0xf80)) +mstore(0x80d60, mload(0x57680)) +success := and(eq(staticcall(gas(), 0x7, 0x80d20, 0x60, 0x80d20, 0x40), 1), success) +mstore(0x80d80, mload(0x80ca0)) + mstore(0x80da0, mload(0x80cc0)) +mstore(0x80dc0, mload(0x80d20)) + mstore(0x80de0, mload(0x80d40)) +success := and(eq(staticcall(gas(), 0x6, 0x80d80, 0x80, 0x80d80, 0x40), 1), success) +mstore(0x80e00, mload(0xfa0)) + mstore(0x80e20, mload(0xfc0)) +mstore(0x80e40, mload(0x576a0)) +success := and(eq(staticcall(gas(), 0x7, 0x80e00, 0x60, 0x80e00, 0x40), 1), success) +mstore(0x80e60, mload(0x80d80)) + mstore(0x80e80, mload(0x80da0)) +mstore(0x80ea0, mload(0x80e00)) + mstore(0x80ec0, mload(0x80e20)) +success := and(eq(staticcall(gas(), 0x6, 0x80e60, 0x80, 0x80e60, 0x40), 1), success) +mstore(0x80ee0, mload(0xfe0)) + mstore(0x80f00, mload(0x1000)) +mstore(0x80f20, mload(0x576c0)) +success := and(eq(staticcall(gas(), 0x7, 0x80ee0, 0x60, 0x80ee0, 0x40), 1), success) +mstore(0x80f40, mload(0x80e60)) + mstore(0x80f60, mload(0x80e80)) +mstore(0x80f80, mload(0x80ee0)) + mstore(0x80fa0, mload(0x80f00)) +success := and(eq(staticcall(gas(), 0x6, 0x80f40, 0x80, 0x80f40, 0x40), 1), success) +mstore(0x80fc0, mload(0x1020)) + mstore(0x80fe0, mload(0x1040)) +mstore(0x81000, mload(0x576e0)) +success := and(eq(staticcall(gas(), 0x7, 0x80fc0, 0x60, 0x80fc0, 0x40), 1), success) +mstore(0x81020, mload(0x80f40)) + mstore(0x81040, mload(0x80f60)) +mstore(0x81060, mload(0x80fc0)) + mstore(0x81080, mload(0x80fe0)) +success := and(eq(staticcall(gas(), 0x6, 0x81020, 0x80, 0x81020, 0x40), 1), success) +mstore(0x810a0, mload(0x1060)) + mstore(0x810c0, mload(0x1080)) +mstore(0x810e0, mload(0x57700)) +success := and(eq(staticcall(gas(), 0x7, 0x810a0, 0x60, 0x810a0, 0x40), 1), success) +mstore(0x81100, mload(0x81020)) + mstore(0x81120, mload(0x81040)) +mstore(0x81140, mload(0x810a0)) + mstore(0x81160, mload(0x810c0)) +success := and(eq(staticcall(gas(), 0x6, 0x81100, 0x80, 0x81100, 0x40), 1), success) +mstore(0x81180, mload(0x10a0)) + mstore(0x811a0, mload(0x10c0)) +mstore(0x811c0, mload(0x57720)) +success := and(eq(staticcall(gas(), 0x7, 0x81180, 0x60, 0x81180, 0x40), 1), success) +mstore(0x811e0, mload(0x81100)) + mstore(0x81200, mload(0x81120)) +mstore(0x81220, mload(0x81180)) + mstore(0x81240, mload(0x811a0)) +success := and(eq(staticcall(gas(), 0x6, 0x811e0, 0x80, 0x811e0, 0x40), 1), success) +mstore(0x81260, mload(0x10e0)) + mstore(0x81280, mload(0x1100)) +mstore(0x812a0, mload(0x57740)) +success := and(eq(staticcall(gas(), 0x7, 0x81260, 0x60, 0x81260, 0x40), 1), success) +mstore(0x812c0, mload(0x811e0)) + mstore(0x812e0, mload(0x81200)) +mstore(0x81300, mload(0x81260)) + mstore(0x81320, mload(0x81280)) +success := and(eq(staticcall(gas(), 0x6, 0x812c0, 0x80, 0x812c0, 0x40), 1), success) +mstore(0x81340, mload(0x1120)) + mstore(0x81360, mload(0x1140)) +mstore(0x81380, mload(0x57760)) +success := and(eq(staticcall(gas(), 0x7, 0x81340, 0x60, 0x81340, 0x40), 1), success) +mstore(0x813a0, mload(0x812c0)) + mstore(0x813c0, mload(0x812e0)) +mstore(0x813e0, mload(0x81340)) + mstore(0x81400, mload(0x81360)) +success := and(eq(staticcall(gas(), 0x6, 0x813a0, 0x80, 0x813a0, 0x40), 1), success) +mstore(0x81420, mload(0x1160)) + mstore(0x81440, mload(0x1180)) +mstore(0x81460, mload(0x57780)) +success := and(eq(staticcall(gas(), 0x7, 0x81420, 0x60, 0x81420, 0x40), 1), success) +mstore(0x81480, mload(0x813a0)) + mstore(0x814a0, mload(0x813c0)) +mstore(0x814c0, mload(0x81420)) + mstore(0x814e0, mload(0x81440)) +success := and(eq(staticcall(gas(), 0x6, 0x81480, 0x80, 0x81480, 0x40), 1), success) +mstore(0x81500, mload(0x11a0)) + mstore(0x81520, mload(0x11c0)) +mstore(0x81540, mload(0x577a0)) +success := and(eq(staticcall(gas(), 0x7, 0x81500, 0x60, 0x81500, 0x40), 1), success) +mstore(0x81560, mload(0x81480)) + mstore(0x81580, mload(0x814a0)) +mstore(0x815a0, mload(0x81500)) + mstore(0x815c0, mload(0x81520)) +success := and(eq(staticcall(gas(), 0x6, 0x81560, 0x80, 0x81560, 0x40), 1), success) +mstore(0x815e0, mload(0x11e0)) + mstore(0x81600, mload(0x1200)) +mstore(0x81620, mload(0x577c0)) +success := and(eq(staticcall(gas(), 0x7, 0x815e0, 0x60, 0x815e0, 0x40), 1), success) +mstore(0x81640, mload(0x81560)) + mstore(0x81660, mload(0x81580)) +mstore(0x81680, mload(0x815e0)) + mstore(0x816a0, mload(0x81600)) +success := and(eq(staticcall(gas(), 0x6, 0x81640, 0x80, 0x81640, 0x40), 1), success) +mstore(0x816c0, mload(0x1220)) + mstore(0x816e0, mload(0x1240)) +mstore(0x81700, mload(0x577e0)) +success := and(eq(staticcall(gas(), 0x7, 0x816c0, 0x60, 0x816c0, 0x40), 1), success) +mstore(0x81720, mload(0x81640)) + mstore(0x81740, mload(0x81660)) +mstore(0x81760, mload(0x816c0)) + mstore(0x81780, mload(0x816e0)) +success := and(eq(staticcall(gas(), 0x6, 0x81720, 0x80, 0x81720, 0x40), 1), success) +mstore(0x817a0, mload(0x1260)) + mstore(0x817c0, mload(0x1280)) +mstore(0x817e0, mload(0x57800)) +success := and(eq(staticcall(gas(), 0x7, 0x817a0, 0x60, 0x817a0, 0x40), 1), success) +mstore(0x81800, mload(0x81720)) + mstore(0x81820, mload(0x81740)) +mstore(0x81840, mload(0x817a0)) + mstore(0x81860, mload(0x817c0)) +success := and(eq(staticcall(gas(), 0x6, 0x81800, 0x80, 0x81800, 0x40), 1), success) +mstore(0x81880, mload(0x12a0)) + mstore(0x818a0, mload(0x12c0)) +mstore(0x818c0, mload(0x57820)) +success := and(eq(staticcall(gas(), 0x7, 0x81880, 0x60, 0x81880, 0x40), 1), success) +mstore(0x818e0, mload(0x81800)) + mstore(0x81900, mload(0x81820)) +mstore(0x81920, mload(0x81880)) + mstore(0x81940, mload(0x818a0)) +success := and(eq(staticcall(gas(), 0x6, 0x818e0, 0x80, 0x818e0, 0x40), 1), success) +mstore(0x81960, mload(0x12e0)) + mstore(0x81980, mload(0x1300)) +mstore(0x819a0, mload(0x57840)) +success := and(eq(staticcall(gas(), 0x7, 0x81960, 0x60, 0x81960, 0x40), 1), success) +mstore(0x819c0, mload(0x818e0)) + mstore(0x819e0, mload(0x81900)) +mstore(0x81a00, mload(0x81960)) + mstore(0x81a20, mload(0x81980)) +success := and(eq(staticcall(gas(), 0x6, 0x819c0, 0x80, 0x819c0, 0x40), 1), success) +mstore(0x81a40, mload(0x1320)) + mstore(0x81a60, mload(0x1340)) +mstore(0x81a80, mload(0x57860)) +success := and(eq(staticcall(gas(), 0x7, 0x81a40, 0x60, 0x81a40, 0x40), 1), success) +mstore(0x81aa0, mload(0x819c0)) + mstore(0x81ac0, mload(0x819e0)) +mstore(0x81ae0, mload(0x81a40)) + mstore(0x81b00, mload(0x81a60)) +success := and(eq(staticcall(gas(), 0x6, 0x81aa0, 0x80, 0x81aa0, 0x40), 1), success) +mstore(0x81b20, mload(0x1360)) + mstore(0x81b40, mload(0x1380)) +mstore(0x81b60, mload(0x57880)) +success := and(eq(staticcall(gas(), 0x7, 0x81b20, 0x60, 0x81b20, 0x40), 1), success) +mstore(0x81b80, mload(0x81aa0)) + mstore(0x81ba0, mload(0x81ac0)) +mstore(0x81bc0, mload(0x81b20)) + mstore(0x81be0, mload(0x81b40)) +success := and(eq(staticcall(gas(), 0x6, 0x81b80, 0x80, 0x81b80, 0x40), 1), success) +mstore(0x81c00, mload(0x13a0)) + mstore(0x81c20, mload(0x13c0)) +mstore(0x81c40, mload(0x578a0)) +success := and(eq(staticcall(gas(), 0x7, 0x81c00, 0x60, 0x81c00, 0x40), 1), success) +mstore(0x81c60, mload(0x81b80)) + mstore(0x81c80, mload(0x81ba0)) +mstore(0x81ca0, mload(0x81c00)) + mstore(0x81cc0, mload(0x81c20)) +success := and(eq(staticcall(gas(), 0x6, 0x81c60, 0x80, 0x81c60, 0x40), 1), success) +mstore(0x81ce0, mload(0x13e0)) + mstore(0x81d00, mload(0x1400)) +mstore(0x81d20, mload(0x578c0)) +success := and(eq(staticcall(gas(), 0x7, 0x81ce0, 0x60, 0x81ce0, 0x40), 1), success) +mstore(0x81d40, mload(0x81c60)) + mstore(0x81d60, mload(0x81c80)) +mstore(0x81d80, mload(0x81ce0)) + mstore(0x81da0, mload(0x81d00)) +success := and(eq(staticcall(gas(), 0x6, 0x81d40, 0x80, 0x81d40, 0x40), 1), success) +mstore(0x81dc0, mload(0x1420)) + mstore(0x81de0, mload(0x1440)) +mstore(0x81e00, mload(0x578e0)) +success := and(eq(staticcall(gas(), 0x7, 0x81dc0, 0x60, 0x81dc0, 0x40), 1), success) +mstore(0x81e20, mload(0x81d40)) + mstore(0x81e40, mload(0x81d60)) +mstore(0x81e60, mload(0x81dc0)) + mstore(0x81e80, mload(0x81de0)) +success := and(eq(staticcall(gas(), 0x6, 0x81e20, 0x80, 0x81e20, 0x40), 1), success) +mstore(0x81ea0, mload(0x1460)) + mstore(0x81ec0, mload(0x1480)) +mstore(0x81ee0, mload(0x57900)) +success := and(eq(staticcall(gas(), 0x7, 0x81ea0, 0x60, 0x81ea0, 0x40), 1), success) +mstore(0x81f00, mload(0x81e20)) + mstore(0x81f20, mload(0x81e40)) +mstore(0x81f40, mload(0x81ea0)) + mstore(0x81f60, mload(0x81ec0)) +success := and(eq(staticcall(gas(), 0x6, 0x81f00, 0x80, 0x81f00, 0x40), 1), success) +mstore(0x81f80, mload(0x14a0)) + mstore(0x81fa0, mload(0x14c0)) +mstore(0x81fc0, mload(0x57920)) +success := and(eq(staticcall(gas(), 0x7, 0x81f80, 0x60, 0x81f80, 0x40), 1), success) +mstore(0x81fe0, mload(0x81f00)) + mstore(0x82000, mload(0x81f20)) +mstore(0x82020, mload(0x81f80)) + mstore(0x82040, mload(0x81fa0)) +success := and(eq(staticcall(gas(), 0x6, 0x81fe0, 0x80, 0x81fe0, 0x40), 1), success) +mstore(0x82060, mload(0x14e0)) + mstore(0x82080, mload(0x1500)) +mstore(0x820a0, mload(0x57940)) +success := and(eq(staticcall(gas(), 0x7, 0x82060, 0x60, 0x82060, 0x40), 1), success) +mstore(0x820c0, mload(0x81fe0)) + mstore(0x820e0, mload(0x82000)) +mstore(0x82100, mload(0x82060)) + mstore(0x82120, mload(0x82080)) +success := and(eq(staticcall(gas(), 0x6, 0x820c0, 0x80, 0x820c0, 0x40), 1), success) +mstore(0x82140, mload(0x1520)) + mstore(0x82160, mload(0x1540)) +mstore(0x82180, mload(0x57960)) +success := and(eq(staticcall(gas(), 0x7, 0x82140, 0x60, 0x82140, 0x40), 1), success) +mstore(0x821a0, mload(0x820c0)) + mstore(0x821c0, mload(0x820e0)) +mstore(0x821e0, mload(0x82140)) + mstore(0x82200, mload(0x82160)) +success := and(eq(staticcall(gas(), 0x6, 0x821a0, 0x80, 0x821a0, 0x40), 1), success) +mstore(0x82220, mload(0x1560)) + mstore(0x82240, mload(0x1580)) +mstore(0x82260, mload(0x57980)) +success := and(eq(staticcall(gas(), 0x7, 0x82220, 0x60, 0x82220, 0x40), 1), success) +mstore(0x82280, mload(0x821a0)) + mstore(0x822a0, mload(0x821c0)) +mstore(0x822c0, mload(0x82220)) + mstore(0x822e0, mload(0x82240)) +success := and(eq(staticcall(gas(), 0x6, 0x82280, 0x80, 0x82280, 0x40), 1), success) +mstore(0x82300, mload(0x15a0)) + mstore(0x82320, mload(0x15c0)) +mstore(0x82340, mload(0x579a0)) +success := and(eq(staticcall(gas(), 0x7, 0x82300, 0x60, 0x82300, 0x40), 1), success) +mstore(0x82360, mload(0x82280)) + mstore(0x82380, mload(0x822a0)) +mstore(0x823a0, mload(0x82300)) + mstore(0x823c0, mload(0x82320)) +success := and(eq(staticcall(gas(), 0x6, 0x82360, 0x80, 0x82360, 0x40), 1), success) +mstore(0x823e0, mload(0x15e0)) + mstore(0x82400, mload(0x1600)) +mstore(0x82420, mload(0x579c0)) +success := and(eq(staticcall(gas(), 0x7, 0x823e0, 0x60, 0x823e0, 0x40), 1), success) +mstore(0x82440, mload(0x82360)) + mstore(0x82460, mload(0x82380)) +mstore(0x82480, mload(0x823e0)) + mstore(0x824a0, mload(0x82400)) +success := and(eq(staticcall(gas(), 0x6, 0x82440, 0x80, 0x82440, 0x40), 1), success) +mstore(0x824c0, mload(0x1620)) + mstore(0x824e0, mload(0x1640)) +mstore(0x82500, mload(0x579e0)) +success := and(eq(staticcall(gas(), 0x7, 0x824c0, 0x60, 0x824c0, 0x40), 1), success) +mstore(0x82520, mload(0x82440)) + mstore(0x82540, mload(0x82460)) +mstore(0x82560, mload(0x824c0)) + mstore(0x82580, mload(0x824e0)) +success := and(eq(staticcall(gas(), 0x6, 0x82520, 0x80, 0x82520, 0x40), 1), success) +mstore(0x825a0, mload(0x1660)) + mstore(0x825c0, mload(0x1680)) +mstore(0x825e0, mload(0x57a00)) +success := and(eq(staticcall(gas(), 0x7, 0x825a0, 0x60, 0x825a0, 0x40), 1), success) +mstore(0x82600, mload(0x82520)) + mstore(0x82620, mload(0x82540)) +mstore(0x82640, mload(0x825a0)) + mstore(0x82660, mload(0x825c0)) +success := and(eq(staticcall(gas(), 0x6, 0x82600, 0x80, 0x82600, 0x40), 1), success) +mstore(0x82680, mload(0x16a0)) + mstore(0x826a0, mload(0x16c0)) +mstore(0x826c0, mload(0x57a20)) +success := and(eq(staticcall(gas(), 0x7, 0x82680, 0x60, 0x82680, 0x40), 1), success) +mstore(0x826e0, mload(0x82600)) + mstore(0x82700, mload(0x82620)) +mstore(0x82720, mload(0x82680)) + mstore(0x82740, mload(0x826a0)) +success := and(eq(staticcall(gas(), 0x6, 0x826e0, 0x80, 0x826e0, 0x40), 1), success) +mstore(0x82760, mload(0x16e0)) + mstore(0x82780, mload(0x1700)) +mstore(0x827a0, mload(0x57a40)) +success := and(eq(staticcall(gas(), 0x7, 0x82760, 0x60, 0x82760, 0x40), 1), success) +mstore(0x827c0, mload(0x826e0)) + mstore(0x827e0, mload(0x82700)) +mstore(0x82800, mload(0x82760)) + mstore(0x82820, mload(0x82780)) +success := and(eq(staticcall(gas(), 0x6, 0x827c0, 0x80, 0x827c0, 0x40), 1), success) +mstore(0x82840, mload(0x1720)) + mstore(0x82860, mload(0x1740)) +mstore(0x82880, mload(0x57a60)) +success := and(eq(staticcall(gas(), 0x7, 0x82840, 0x60, 0x82840, 0x40), 1), success) +mstore(0x828a0, mload(0x827c0)) + mstore(0x828c0, mload(0x827e0)) +mstore(0x828e0, mload(0x82840)) + mstore(0x82900, mload(0x82860)) +success := and(eq(staticcall(gas(), 0x6, 0x828a0, 0x80, 0x828a0, 0x40), 1), success) +mstore(0x82920, mload(0x1760)) + mstore(0x82940, mload(0x1780)) +mstore(0x82960, mload(0x57a80)) +success := and(eq(staticcall(gas(), 0x7, 0x82920, 0x60, 0x82920, 0x40), 1), success) +mstore(0x82980, mload(0x828a0)) + mstore(0x829a0, mload(0x828c0)) +mstore(0x829c0, mload(0x82920)) + mstore(0x829e0, mload(0x82940)) +success := and(eq(staticcall(gas(), 0x6, 0x82980, 0x80, 0x82980, 0x40), 1), success) +mstore(0x82a00, mload(0x17a0)) + mstore(0x82a20, mload(0x17c0)) +mstore(0x82a40, mload(0x57aa0)) +success := and(eq(staticcall(gas(), 0x7, 0x82a00, 0x60, 0x82a00, 0x40), 1), success) +mstore(0x82a60, mload(0x82980)) + mstore(0x82a80, mload(0x829a0)) +mstore(0x82aa0, mload(0x82a00)) + mstore(0x82ac0, mload(0x82a20)) +success := and(eq(staticcall(gas(), 0x6, 0x82a60, 0x80, 0x82a60, 0x40), 1), success) +mstore(0x82ae0, mload(0x17e0)) + mstore(0x82b00, mload(0x1800)) +mstore(0x82b20, mload(0x57ac0)) +success := and(eq(staticcall(gas(), 0x7, 0x82ae0, 0x60, 0x82ae0, 0x40), 1), success) +mstore(0x82b40, mload(0x82a60)) + mstore(0x82b60, mload(0x82a80)) +mstore(0x82b80, mload(0x82ae0)) + mstore(0x82ba0, mload(0x82b00)) +success := and(eq(staticcall(gas(), 0x6, 0x82b40, 0x80, 0x82b40, 0x40), 1), success) +mstore(0x82bc0, mload(0x1820)) + mstore(0x82be0, mload(0x1840)) +mstore(0x82c00, mload(0x57ae0)) +success := and(eq(staticcall(gas(), 0x7, 0x82bc0, 0x60, 0x82bc0, 0x40), 1), success) +mstore(0x82c20, mload(0x82b40)) + mstore(0x82c40, mload(0x82b60)) +mstore(0x82c60, mload(0x82bc0)) + mstore(0x82c80, mload(0x82be0)) +success := and(eq(staticcall(gas(), 0x6, 0x82c20, 0x80, 0x82c20, 0x40), 1), success) +mstore(0x82ca0, mload(0x1860)) + mstore(0x82cc0, mload(0x1880)) +mstore(0x82ce0, mload(0x57b00)) +success := and(eq(staticcall(gas(), 0x7, 0x82ca0, 0x60, 0x82ca0, 0x40), 1), success) +mstore(0x82d00, mload(0x82c20)) + mstore(0x82d20, mload(0x82c40)) +mstore(0x82d40, mload(0x82ca0)) + mstore(0x82d60, mload(0x82cc0)) +success := and(eq(staticcall(gas(), 0x6, 0x82d00, 0x80, 0x82d00, 0x40), 1), success) +mstore(0x82d80, mload(0x18a0)) + mstore(0x82da0, mload(0x18c0)) +mstore(0x82dc0, mload(0x57b20)) +success := and(eq(staticcall(gas(), 0x7, 0x82d80, 0x60, 0x82d80, 0x40), 1), success) +mstore(0x82de0, mload(0x82d00)) + mstore(0x82e00, mload(0x82d20)) +mstore(0x82e20, mload(0x82d80)) + mstore(0x82e40, mload(0x82da0)) +success := and(eq(staticcall(gas(), 0x6, 0x82de0, 0x80, 0x82de0, 0x40), 1), success) +mstore(0x82e60, mload(0x18e0)) + mstore(0x82e80, mload(0x1900)) +mstore(0x82ea0, mload(0x57b40)) +success := and(eq(staticcall(gas(), 0x7, 0x82e60, 0x60, 0x82e60, 0x40), 1), success) +mstore(0x82ec0, mload(0x82de0)) + mstore(0x82ee0, mload(0x82e00)) +mstore(0x82f00, mload(0x82e60)) + mstore(0x82f20, mload(0x82e80)) +success := and(eq(staticcall(gas(), 0x6, 0x82ec0, 0x80, 0x82ec0, 0x40), 1), success) +mstore(0x82f40, mload(0x1920)) + mstore(0x82f60, mload(0x1940)) +mstore(0x82f80, mload(0x57b60)) +success := and(eq(staticcall(gas(), 0x7, 0x82f40, 0x60, 0x82f40, 0x40), 1), success) +mstore(0x82fa0, mload(0x82ec0)) + mstore(0x82fc0, mload(0x82ee0)) +mstore(0x82fe0, mload(0x82f40)) + mstore(0x83000, mload(0x82f60)) +success := and(eq(staticcall(gas(), 0x6, 0x82fa0, 0x80, 0x82fa0, 0x40), 1), success) +mstore(0x83020, mload(0x1960)) + mstore(0x83040, mload(0x1980)) +mstore(0x83060, mload(0x57b80)) +success := and(eq(staticcall(gas(), 0x7, 0x83020, 0x60, 0x83020, 0x40), 1), success) +mstore(0x83080, mload(0x82fa0)) + mstore(0x830a0, mload(0x82fc0)) +mstore(0x830c0, mload(0x83020)) + mstore(0x830e0, mload(0x83040)) +success := and(eq(staticcall(gas(), 0x6, 0x83080, 0x80, 0x83080, 0x40), 1), success) +mstore(0x83100, mload(0x19a0)) + mstore(0x83120, mload(0x19c0)) +mstore(0x83140, mload(0x57ba0)) +success := and(eq(staticcall(gas(), 0x7, 0x83100, 0x60, 0x83100, 0x40), 1), success) +mstore(0x83160, mload(0x83080)) + mstore(0x83180, mload(0x830a0)) +mstore(0x831a0, mload(0x83100)) + mstore(0x831c0, mload(0x83120)) +success := and(eq(staticcall(gas(), 0x6, 0x83160, 0x80, 0x83160, 0x40), 1), success) +mstore(0x831e0, mload(0x19e0)) + mstore(0x83200, mload(0x1a00)) +mstore(0x83220, mload(0x57bc0)) +success := and(eq(staticcall(gas(), 0x7, 0x831e0, 0x60, 0x831e0, 0x40), 1), success) +mstore(0x83240, mload(0x83160)) + mstore(0x83260, mload(0x83180)) +mstore(0x83280, mload(0x831e0)) + mstore(0x832a0, mload(0x83200)) +success := and(eq(staticcall(gas(), 0x6, 0x83240, 0x80, 0x83240, 0x40), 1), success) +mstore(0x832c0, mload(0x1a20)) + mstore(0x832e0, mload(0x1a40)) +mstore(0x83300, mload(0x57be0)) +success := and(eq(staticcall(gas(), 0x7, 0x832c0, 0x60, 0x832c0, 0x40), 1), success) +mstore(0x83320, mload(0x83240)) + mstore(0x83340, mload(0x83260)) +mstore(0x83360, mload(0x832c0)) + mstore(0x83380, mload(0x832e0)) +success := and(eq(staticcall(gas(), 0x6, 0x83320, 0x80, 0x83320, 0x40), 1), success) +mstore(0x833a0, mload(0x1a60)) + mstore(0x833c0, mload(0x1a80)) +mstore(0x833e0, mload(0x57c00)) +success := and(eq(staticcall(gas(), 0x7, 0x833a0, 0x60, 0x833a0, 0x40), 1), success) +mstore(0x83400, mload(0x83320)) + mstore(0x83420, mload(0x83340)) +mstore(0x83440, mload(0x833a0)) + mstore(0x83460, mload(0x833c0)) +success := and(eq(staticcall(gas(), 0x6, 0x83400, 0x80, 0x83400, 0x40), 1), success) +mstore(0x83480, mload(0x1aa0)) + mstore(0x834a0, mload(0x1ac0)) +mstore(0x834c0, mload(0x57c20)) +success := and(eq(staticcall(gas(), 0x7, 0x83480, 0x60, 0x83480, 0x40), 1), success) +mstore(0x834e0, mload(0x83400)) + mstore(0x83500, mload(0x83420)) +mstore(0x83520, mload(0x83480)) + mstore(0x83540, mload(0x834a0)) +success := and(eq(staticcall(gas(), 0x6, 0x834e0, 0x80, 0x834e0, 0x40), 1), success) +mstore(0x83560, mload(0x1ae0)) + mstore(0x83580, mload(0x1b00)) +mstore(0x835a0, mload(0x57c40)) +success := and(eq(staticcall(gas(), 0x7, 0x83560, 0x60, 0x83560, 0x40), 1), success) +mstore(0x835c0, mload(0x834e0)) + mstore(0x835e0, mload(0x83500)) +mstore(0x83600, mload(0x83560)) + mstore(0x83620, mload(0x83580)) +success := and(eq(staticcall(gas(), 0x6, 0x835c0, 0x80, 0x835c0, 0x40), 1), success) +mstore(0x83640, mload(0x1b20)) + mstore(0x83660, mload(0x1b40)) +mstore(0x83680, mload(0x57c60)) +success := and(eq(staticcall(gas(), 0x7, 0x83640, 0x60, 0x83640, 0x40), 1), success) +mstore(0x836a0, mload(0x835c0)) + mstore(0x836c0, mload(0x835e0)) +mstore(0x836e0, mload(0x83640)) + mstore(0x83700, mload(0x83660)) +success := and(eq(staticcall(gas(), 0x6, 0x836a0, 0x80, 0x836a0, 0x40), 1), success) +mstore(0x83720, mload(0x1b60)) + mstore(0x83740, mload(0x1b80)) +mstore(0x83760, mload(0x57c80)) +success := and(eq(staticcall(gas(), 0x7, 0x83720, 0x60, 0x83720, 0x40), 1), success) +mstore(0x83780, mload(0x836a0)) + mstore(0x837a0, mload(0x836c0)) +mstore(0x837c0, mload(0x83720)) + mstore(0x837e0, mload(0x83740)) +success := and(eq(staticcall(gas(), 0x6, 0x83780, 0x80, 0x83780, 0x40), 1), success) +mstore(0x83800, mload(0x1ba0)) + mstore(0x83820, mload(0x1bc0)) +mstore(0x83840, mload(0x57ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x83800, 0x60, 0x83800, 0x40), 1), success) +mstore(0x83860, mload(0x83780)) + mstore(0x83880, mload(0x837a0)) +mstore(0x838a0, mload(0x83800)) + mstore(0x838c0, mload(0x83820)) +success := and(eq(staticcall(gas(), 0x6, 0x83860, 0x80, 0x83860, 0x40), 1), success) +mstore(0x838e0, mload(0x1be0)) + mstore(0x83900, mload(0x1c00)) +mstore(0x83920, mload(0x57cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x838e0, 0x60, 0x838e0, 0x40), 1), success) +mstore(0x83940, mload(0x83860)) + mstore(0x83960, mload(0x83880)) +mstore(0x83980, mload(0x838e0)) + mstore(0x839a0, mload(0x83900)) +success := and(eq(staticcall(gas(), 0x6, 0x83940, 0x80, 0x83940, 0x40), 1), success) +mstore(0x839c0, mload(0x1c20)) + mstore(0x839e0, mload(0x1c40)) +mstore(0x83a00, mload(0x57ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x839c0, 0x60, 0x839c0, 0x40), 1), success) +mstore(0x83a20, mload(0x83940)) + mstore(0x83a40, mload(0x83960)) +mstore(0x83a60, mload(0x839c0)) + mstore(0x83a80, mload(0x839e0)) +success := and(eq(staticcall(gas(), 0x6, 0x83a20, 0x80, 0x83a20, 0x40), 1), success) +mstore(0x83aa0, mload(0x1c60)) + mstore(0x83ac0, mload(0x1c80)) +mstore(0x83ae0, mload(0x57d00)) +success := and(eq(staticcall(gas(), 0x7, 0x83aa0, 0x60, 0x83aa0, 0x40), 1), success) +mstore(0x83b00, mload(0x83a20)) + mstore(0x83b20, mload(0x83a40)) +mstore(0x83b40, mload(0x83aa0)) + mstore(0x83b60, mload(0x83ac0)) +success := and(eq(staticcall(gas(), 0x6, 0x83b00, 0x80, 0x83b00, 0x40), 1), success) +mstore(0x83b80, mload(0x1ca0)) + mstore(0x83ba0, mload(0x1cc0)) +mstore(0x83bc0, mload(0x57d20)) +success := and(eq(staticcall(gas(), 0x7, 0x83b80, 0x60, 0x83b80, 0x40), 1), success) +mstore(0x83be0, mload(0x83b00)) + mstore(0x83c00, mload(0x83b20)) +mstore(0x83c20, mload(0x83b80)) + mstore(0x83c40, mload(0x83ba0)) +success := and(eq(staticcall(gas(), 0x6, 0x83be0, 0x80, 0x83be0, 0x40), 1), success) +mstore(0x83c60, mload(0x1ce0)) + mstore(0x83c80, mload(0x1d00)) +mstore(0x83ca0, mload(0x57d40)) +success := and(eq(staticcall(gas(), 0x7, 0x83c60, 0x60, 0x83c60, 0x40), 1), success) +mstore(0x83cc0, mload(0x83be0)) + mstore(0x83ce0, mload(0x83c00)) +mstore(0x83d00, mload(0x83c60)) + mstore(0x83d20, mload(0x83c80)) +success := and(eq(staticcall(gas(), 0x6, 0x83cc0, 0x80, 0x83cc0, 0x40), 1), success) +mstore(0x83d40, mload(0x1d20)) + mstore(0x83d60, mload(0x1d40)) +mstore(0x83d80, mload(0x57d60)) +success := and(eq(staticcall(gas(), 0x7, 0x83d40, 0x60, 0x83d40, 0x40), 1), success) +mstore(0x83da0, mload(0x83cc0)) + mstore(0x83dc0, mload(0x83ce0)) +mstore(0x83de0, mload(0x83d40)) + mstore(0x83e00, mload(0x83d60)) +success := and(eq(staticcall(gas(), 0x6, 0x83da0, 0x80, 0x83da0, 0x40), 1), success) +mstore(0x83e20, mload(0x1d60)) + mstore(0x83e40, mload(0x1d80)) +mstore(0x83e60, mload(0x57d80)) +success := and(eq(staticcall(gas(), 0x7, 0x83e20, 0x60, 0x83e20, 0x40), 1), success) +mstore(0x83e80, mload(0x83da0)) + mstore(0x83ea0, mload(0x83dc0)) +mstore(0x83ec0, mload(0x83e20)) + mstore(0x83ee0, mload(0x83e40)) +success := and(eq(staticcall(gas(), 0x6, 0x83e80, 0x80, 0x83e80, 0x40), 1), success) +mstore(0x83f00, mload(0x1da0)) + mstore(0x83f20, mload(0x1dc0)) +mstore(0x83f40, mload(0x57da0)) +success := and(eq(staticcall(gas(), 0x7, 0x83f00, 0x60, 0x83f00, 0x40), 1), success) +mstore(0x83f60, mload(0x83e80)) + mstore(0x83f80, mload(0x83ea0)) +mstore(0x83fa0, mload(0x83f00)) + mstore(0x83fc0, mload(0x83f20)) +success := and(eq(staticcall(gas(), 0x6, 0x83f60, 0x80, 0x83f60, 0x40), 1), success) +mstore(0x83fe0, mload(0x1de0)) + mstore(0x84000, mload(0x1e00)) +mstore(0x84020, mload(0x57dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x83fe0, 0x60, 0x83fe0, 0x40), 1), success) +mstore(0x84040, mload(0x83f60)) + mstore(0x84060, mload(0x83f80)) +mstore(0x84080, mload(0x83fe0)) + mstore(0x840a0, mload(0x84000)) +success := and(eq(staticcall(gas(), 0x6, 0x84040, 0x80, 0x84040, 0x40), 1), success) +mstore(0x840c0, mload(0x1e20)) + mstore(0x840e0, mload(0x1e40)) +mstore(0x84100, mload(0x57de0)) +success := and(eq(staticcall(gas(), 0x7, 0x840c0, 0x60, 0x840c0, 0x40), 1), success) +mstore(0x84120, mload(0x84040)) + mstore(0x84140, mload(0x84060)) +mstore(0x84160, mload(0x840c0)) + mstore(0x84180, mload(0x840e0)) +success := and(eq(staticcall(gas(), 0x6, 0x84120, 0x80, 0x84120, 0x40), 1), success) +mstore(0x841a0, mload(0x1e60)) + mstore(0x841c0, mload(0x1e80)) +mstore(0x841e0, mload(0x57e00)) +success := and(eq(staticcall(gas(), 0x7, 0x841a0, 0x60, 0x841a0, 0x40), 1), success) +mstore(0x84200, mload(0x84120)) + mstore(0x84220, mload(0x84140)) +mstore(0x84240, mload(0x841a0)) + mstore(0x84260, mload(0x841c0)) +success := and(eq(staticcall(gas(), 0x6, 0x84200, 0x80, 0x84200, 0x40), 1), success) +mstore(0x84280, mload(0x1ea0)) + mstore(0x842a0, mload(0x1ec0)) +mstore(0x842c0, mload(0x57e20)) +success := and(eq(staticcall(gas(), 0x7, 0x84280, 0x60, 0x84280, 0x40), 1), success) +mstore(0x842e0, mload(0x84200)) + mstore(0x84300, mload(0x84220)) +mstore(0x84320, mload(0x84280)) + mstore(0x84340, mload(0x842a0)) +success := and(eq(staticcall(gas(), 0x6, 0x842e0, 0x80, 0x842e0, 0x40), 1), success) +mstore(0x84360, mload(0x1ee0)) + mstore(0x84380, mload(0x1f00)) +mstore(0x843a0, mload(0x57e40)) +success := and(eq(staticcall(gas(), 0x7, 0x84360, 0x60, 0x84360, 0x40), 1), success) +mstore(0x843c0, mload(0x842e0)) + mstore(0x843e0, mload(0x84300)) +mstore(0x84400, mload(0x84360)) + mstore(0x84420, mload(0x84380)) +success := and(eq(staticcall(gas(), 0x6, 0x843c0, 0x80, 0x843c0, 0x40), 1), success) +mstore(0x84440, mload(0x1f20)) + mstore(0x84460, mload(0x1f40)) +mstore(0x84480, mload(0x57e60)) +success := and(eq(staticcall(gas(), 0x7, 0x84440, 0x60, 0x84440, 0x40), 1), success) +mstore(0x844a0, mload(0x843c0)) + mstore(0x844c0, mload(0x843e0)) +mstore(0x844e0, mload(0x84440)) + mstore(0x84500, mload(0x84460)) +success := and(eq(staticcall(gas(), 0x6, 0x844a0, 0x80, 0x844a0, 0x40), 1), success) +mstore(0x84520, mload(0x1f60)) + mstore(0x84540, mload(0x1f80)) +mstore(0x84560, mload(0x57e80)) +success := and(eq(staticcall(gas(), 0x7, 0x84520, 0x60, 0x84520, 0x40), 1), success) +mstore(0x84580, mload(0x844a0)) + mstore(0x845a0, mload(0x844c0)) +mstore(0x845c0, mload(0x84520)) + mstore(0x845e0, mload(0x84540)) +success := and(eq(staticcall(gas(), 0x6, 0x84580, 0x80, 0x84580, 0x40), 1), success) +mstore(0x84600, mload(0x1fa0)) + mstore(0x84620, mload(0x1fc0)) +mstore(0x84640, mload(0x57ea0)) +success := and(eq(staticcall(gas(), 0x7, 0x84600, 0x60, 0x84600, 0x40), 1), success) +mstore(0x84660, mload(0x84580)) + mstore(0x84680, mload(0x845a0)) +mstore(0x846a0, mload(0x84600)) + mstore(0x846c0, mload(0x84620)) +success := and(eq(staticcall(gas(), 0x6, 0x84660, 0x80, 0x84660, 0x40), 1), success) +mstore(0x846e0, mload(0x1fe0)) + mstore(0x84700, mload(0x2000)) +mstore(0x84720, mload(0x57ec0)) +success := and(eq(staticcall(gas(), 0x7, 0x846e0, 0x60, 0x846e0, 0x40), 1), success) +mstore(0x84740, mload(0x84660)) + mstore(0x84760, mload(0x84680)) +mstore(0x84780, mload(0x846e0)) + mstore(0x847a0, mload(0x84700)) +success := and(eq(staticcall(gas(), 0x6, 0x84740, 0x80, 0x84740, 0x40), 1), success) +mstore(0x847c0, mload(0x2020)) + mstore(0x847e0, mload(0x2040)) +mstore(0x84800, mload(0x57ee0)) +success := and(eq(staticcall(gas(), 0x7, 0x847c0, 0x60, 0x847c0, 0x40), 1), success) +mstore(0x84820, mload(0x84740)) + mstore(0x84840, mload(0x84760)) +mstore(0x84860, mload(0x847c0)) + mstore(0x84880, mload(0x847e0)) +success := and(eq(staticcall(gas(), 0x6, 0x84820, 0x80, 0x84820, 0x40), 1), success) +mstore(0x848a0, mload(0x2060)) + mstore(0x848c0, mload(0x2080)) +mstore(0x848e0, mload(0x57f00)) +success := and(eq(staticcall(gas(), 0x7, 0x848a0, 0x60, 0x848a0, 0x40), 1), success) +mstore(0x84900, mload(0x84820)) + mstore(0x84920, mload(0x84840)) +mstore(0x84940, mload(0x848a0)) + mstore(0x84960, mload(0x848c0)) +success := and(eq(staticcall(gas(), 0x6, 0x84900, 0x80, 0x84900, 0x40), 1), success) +mstore(0x84980, mload(0x20a0)) + mstore(0x849a0, mload(0x20c0)) +mstore(0x849c0, mload(0x57f20)) +success := and(eq(staticcall(gas(), 0x7, 0x84980, 0x60, 0x84980, 0x40), 1), success) +mstore(0x849e0, mload(0x84900)) + mstore(0x84a00, mload(0x84920)) +mstore(0x84a20, mload(0x84980)) + mstore(0x84a40, mload(0x849a0)) +success := and(eq(staticcall(gas(), 0x6, 0x849e0, 0x80, 0x849e0, 0x40), 1), success) +mstore(0x84a60, mload(0x20e0)) + mstore(0x84a80, mload(0x2100)) +mstore(0x84aa0, mload(0x57f40)) +success := and(eq(staticcall(gas(), 0x7, 0x84a60, 0x60, 0x84a60, 0x40), 1), success) +mstore(0x84ac0, mload(0x849e0)) + mstore(0x84ae0, mload(0x84a00)) +mstore(0x84b00, mload(0x84a60)) + mstore(0x84b20, mload(0x84a80)) +success := and(eq(staticcall(gas(), 0x6, 0x84ac0, 0x80, 0x84ac0, 0x40), 1), success) +mstore(0x84b40, mload(0x2120)) + mstore(0x84b60, mload(0x2140)) +mstore(0x84b80, mload(0x57f60)) +success := and(eq(staticcall(gas(), 0x7, 0x84b40, 0x60, 0x84b40, 0x40), 1), success) +mstore(0x84ba0, mload(0x84ac0)) + mstore(0x84bc0, mload(0x84ae0)) +mstore(0x84be0, mload(0x84b40)) + mstore(0x84c00, mload(0x84b60)) +success := and(eq(staticcall(gas(), 0x6, 0x84ba0, 0x80, 0x84ba0, 0x40), 1), success) +mstore(0x84c20, mload(0x2160)) + mstore(0x84c40, mload(0x2180)) +mstore(0x84c60, mload(0x57f80)) +success := and(eq(staticcall(gas(), 0x7, 0x84c20, 0x60, 0x84c20, 0x40), 1), success) +mstore(0x84c80, mload(0x84ba0)) + mstore(0x84ca0, mload(0x84bc0)) +mstore(0x84cc0, mload(0x84c20)) + mstore(0x84ce0, mload(0x84c40)) +success := and(eq(staticcall(gas(), 0x6, 0x84c80, 0x80, 0x84c80, 0x40), 1), success) +mstore(0x84d00, mload(0x21a0)) + mstore(0x84d20, mload(0x21c0)) +mstore(0x84d40, mload(0x57fa0)) +success := and(eq(staticcall(gas(), 0x7, 0x84d00, 0x60, 0x84d00, 0x40), 1), success) +mstore(0x84d60, mload(0x84c80)) + mstore(0x84d80, mload(0x84ca0)) +mstore(0x84da0, mload(0x84d00)) + mstore(0x84dc0, mload(0x84d20)) +success := and(eq(staticcall(gas(), 0x6, 0x84d60, 0x80, 0x84d60, 0x40), 1), success) +mstore(0x84de0, mload(0x21e0)) + mstore(0x84e00, mload(0x2200)) +mstore(0x84e20, mload(0x57fc0)) +success := and(eq(staticcall(gas(), 0x7, 0x84de0, 0x60, 0x84de0, 0x40), 1), success) +mstore(0x84e40, mload(0x84d60)) + mstore(0x84e60, mload(0x84d80)) +mstore(0x84e80, mload(0x84de0)) + mstore(0x84ea0, mload(0x84e00)) +success := and(eq(staticcall(gas(), 0x6, 0x84e40, 0x80, 0x84e40, 0x40), 1), success) +mstore(0x84ec0, mload(0x2220)) + mstore(0x84ee0, mload(0x2240)) +mstore(0x84f00, mload(0x57fe0)) +success := and(eq(staticcall(gas(), 0x7, 0x84ec0, 0x60, 0x84ec0, 0x40), 1), success) +mstore(0x84f20, mload(0x84e40)) + mstore(0x84f40, mload(0x84e60)) +mstore(0x84f60, mload(0x84ec0)) + mstore(0x84f80, mload(0x84ee0)) +success := and(eq(staticcall(gas(), 0x6, 0x84f20, 0x80, 0x84f20, 0x40), 1), success) +mstore(0x84fa0, mload(0x2260)) + mstore(0x84fc0, mload(0x2280)) +mstore(0x84fe0, mload(0x58000)) +success := and(eq(staticcall(gas(), 0x7, 0x84fa0, 0x60, 0x84fa0, 0x40), 1), success) +mstore(0x85000, mload(0x84f20)) + mstore(0x85020, mload(0x84f40)) +mstore(0x85040, mload(0x84fa0)) + mstore(0x85060, mload(0x84fc0)) +success := and(eq(staticcall(gas(), 0x6, 0x85000, 0x80, 0x85000, 0x40), 1), success) +mstore(0x85080, mload(0x22a0)) + mstore(0x850a0, mload(0x22c0)) +mstore(0x850c0, mload(0x58020)) +success := and(eq(staticcall(gas(), 0x7, 0x85080, 0x60, 0x85080, 0x40), 1), success) +mstore(0x850e0, mload(0x85000)) + mstore(0x85100, mload(0x85020)) +mstore(0x85120, mload(0x85080)) + mstore(0x85140, mload(0x850a0)) +success := and(eq(staticcall(gas(), 0x6, 0x850e0, 0x80, 0x850e0, 0x40), 1), success) +mstore(0x85160, mload(0x22e0)) + mstore(0x85180, mload(0x2300)) +mstore(0x851a0, mload(0x58040)) +success := and(eq(staticcall(gas(), 0x7, 0x85160, 0x60, 0x85160, 0x40), 1), success) +mstore(0x851c0, mload(0x850e0)) + mstore(0x851e0, mload(0x85100)) +mstore(0x85200, mload(0x85160)) + mstore(0x85220, mload(0x85180)) +success := and(eq(staticcall(gas(), 0x6, 0x851c0, 0x80, 0x851c0, 0x40), 1), success) +mstore(0x85240, mload(0x2320)) + mstore(0x85260, mload(0x2340)) +mstore(0x85280, mload(0x58060)) +success := and(eq(staticcall(gas(), 0x7, 0x85240, 0x60, 0x85240, 0x40), 1), success) +mstore(0x852a0, mload(0x851c0)) + mstore(0x852c0, mload(0x851e0)) +mstore(0x852e0, mload(0x85240)) + mstore(0x85300, mload(0x85260)) +success := and(eq(staticcall(gas(), 0x6, 0x852a0, 0x80, 0x852a0, 0x40), 1), success) +mstore(0x85320, mload(0x2360)) + mstore(0x85340, mload(0x2380)) +mstore(0x85360, mload(0x58080)) +success := and(eq(staticcall(gas(), 0x7, 0x85320, 0x60, 0x85320, 0x40), 1), success) +mstore(0x85380, mload(0x852a0)) + mstore(0x853a0, mload(0x852c0)) +mstore(0x853c0, mload(0x85320)) + mstore(0x853e0, mload(0x85340)) +success := and(eq(staticcall(gas(), 0x6, 0x85380, 0x80, 0x85380, 0x40), 1), success) +mstore(0x85400, mload(0x23a0)) + mstore(0x85420, mload(0x23c0)) +mstore(0x85440, mload(0x580a0)) +success := and(eq(staticcall(gas(), 0x7, 0x85400, 0x60, 0x85400, 0x40), 1), success) +mstore(0x85460, mload(0x85380)) + mstore(0x85480, mload(0x853a0)) +mstore(0x854a0, mload(0x85400)) + mstore(0x854c0, mload(0x85420)) +success := and(eq(staticcall(gas(), 0x6, 0x85460, 0x80, 0x85460, 0x40), 1), success) +mstore(0x854e0, mload(0x23e0)) + mstore(0x85500, mload(0x2400)) +mstore(0x85520, mload(0x580c0)) +success := and(eq(staticcall(gas(), 0x7, 0x854e0, 0x60, 0x854e0, 0x40), 1), success) +mstore(0x85540, mload(0x85460)) + mstore(0x85560, mload(0x85480)) +mstore(0x85580, mload(0x854e0)) + mstore(0x855a0, mload(0x85500)) +success := and(eq(staticcall(gas(), 0x6, 0x85540, 0x80, 0x85540, 0x40), 1), success) +mstore(0x855c0, mload(0x2420)) + mstore(0x855e0, mload(0x2440)) +mstore(0x85600, mload(0x580e0)) +success := and(eq(staticcall(gas(), 0x7, 0x855c0, 0x60, 0x855c0, 0x40), 1), success) +mstore(0x85620, mload(0x85540)) + mstore(0x85640, mload(0x85560)) +mstore(0x85660, mload(0x855c0)) + mstore(0x85680, mload(0x855e0)) +success := and(eq(staticcall(gas(), 0x6, 0x85620, 0x80, 0x85620, 0x40), 1), success) +mstore(0x856a0, mload(0x2460)) + mstore(0x856c0, mload(0x2480)) +mstore(0x856e0, mload(0x58100)) +success := and(eq(staticcall(gas(), 0x7, 0x856a0, 0x60, 0x856a0, 0x40), 1), success) +mstore(0x85700, mload(0x85620)) + mstore(0x85720, mload(0x85640)) +mstore(0x85740, mload(0x856a0)) + mstore(0x85760, mload(0x856c0)) +success := and(eq(staticcall(gas(), 0x6, 0x85700, 0x80, 0x85700, 0x40), 1), success) +mstore(0x85780, mload(0x24a0)) + mstore(0x857a0, mload(0x24c0)) +mstore(0x857c0, mload(0x58120)) +success := and(eq(staticcall(gas(), 0x7, 0x85780, 0x60, 0x85780, 0x40), 1), success) +mstore(0x857e0, mload(0x85700)) + mstore(0x85800, mload(0x85720)) +mstore(0x85820, mload(0x85780)) + mstore(0x85840, mload(0x857a0)) +success := and(eq(staticcall(gas(), 0x6, 0x857e0, 0x80, 0x857e0, 0x40), 1), success) +mstore(0x85860, mload(0x24e0)) + mstore(0x85880, mload(0x2500)) +mstore(0x858a0, mload(0x58140)) +success := and(eq(staticcall(gas(), 0x7, 0x85860, 0x60, 0x85860, 0x40), 1), success) +mstore(0x858c0, mload(0x857e0)) + mstore(0x858e0, mload(0x85800)) +mstore(0x85900, mload(0x85860)) + mstore(0x85920, mload(0x85880)) +success := and(eq(staticcall(gas(), 0x6, 0x858c0, 0x80, 0x858c0, 0x40), 1), success) +mstore(0x85940, mload(0x2520)) + mstore(0x85960, mload(0x2540)) +mstore(0x85980, mload(0x58160)) +success := and(eq(staticcall(gas(), 0x7, 0x85940, 0x60, 0x85940, 0x40), 1), success) +mstore(0x859a0, mload(0x858c0)) + mstore(0x859c0, mload(0x858e0)) +mstore(0x859e0, mload(0x85940)) + mstore(0x85a00, mload(0x85960)) +success := and(eq(staticcall(gas(), 0x6, 0x859a0, 0x80, 0x859a0, 0x40), 1), success) +mstore(0x85a20, mload(0x2560)) + mstore(0x85a40, mload(0x2580)) +mstore(0x85a60, mload(0x58180)) +success := and(eq(staticcall(gas(), 0x7, 0x85a20, 0x60, 0x85a20, 0x40), 1), success) +mstore(0x85a80, mload(0x859a0)) + mstore(0x85aa0, mload(0x859c0)) +mstore(0x85ac0, mload(0x85a20)) + mstore(0x85ae0, mload(0x85a40)) +success := and(eq(staticcall(gas(), 0x6, 0x85a80, 0x80, 0x85a80, 0x40), 1), success) +mstore(0x85b00, mload(0x25a0)) + mstore(0x85b20, mload(0x25c0)) +mstore(0x85b40, mload(0x581a0)) +success := and(eq(staticcall(gas(), 0x7, 0x85b00, 0x60, 0x85b00, 0x40), 1), success) +mstore(0x85b60, mload(0x85a80)) + mstore(0x85b80, mload(0x85aa0)) +mstore(0x85ba0, mload(0x85b00)) + mstore(0x85bc0, mload(0x85b20)) +success := and(eq(staticcall(gas(), 0x6, 0x85b60, 0x80, 0x85b60, 0x40), 1), success) +mstore(0x85be0, mload(0x25e0)) + mstore(0x85c00, mload(0x2600)) +mstore(0x85c20, mload(0x581c0)) +success := and(eq(staticcall(gas(), 0x7, 0x85be0, 0x60, 0x85be0, 0x40), 1), success) +mstore(0x85c40, mload(0x85b60)) + mstore(0x85c60, mload(0x85b80)) +mstore(0x85c80, mload(0x85be0)) + mstore(0x85ca0, mload(0x85c00)) +success := and(eq(staticcall(gas(), 0x6, 0x85c40, 0x80, 0x85c40, 0x40), 1), success) +mstore(0x85cc0, mload(0x2620)) + mstore(0x85ce0, mload(0x2640)) +mstore(0x85d00, mload(0x581e0)) +success := and(eq(staticcall(gas(), 0x7, 0x85cc0, 0x60, 0x85cc0, 0x40), 1), success) +mstore(0x85d20, mload(0x85c40)) + mstore(0x85d40, mload(0x85c60)) +mstore(0x85d60, mload(0x85cc0)) + mstore(0x85d80, mload(0x85ce0)) +success := and(eq(staticcall(gas(), 0x6, 0x85d20, 0x80, 0x85d20, 0x40), 1), success) +mstore(0x85da0, mload(0x2660)) + mstore(0x85dc0, mload(0x2680)) +mstore(0x85de0, mload(0x58200)) +success := and(eq(staticcall(gas(), 0x7, 0x85da0, 0x60, 0x85da0, 0x40), 1), success) +mstore(0x85e00, mload(0x85d20)) + mstore(0x85e20, mload(0x85d40)) +mstore(0x85e40, mload(0x85da0)) + mstore(0x85e60, mload(0x85dc0)) +success := and(eq(staticcall(gas(), 0x6, 0x85e00, 0x80, 0x85e00, 0x40), 1), success) +mstore(0x85e80, mload(0x26a0)) + mstore(0x85ea0, mload(0x26c0)) +mstore(0x85ec0, mload(0x58220)) +success := and(eq(staticcall(gas(), 0x7, 0x85e80, 0x60, 0x85e80, 0x40), 1), success) +mstore(0x85ee0, mload(0x85e00)) + mstore(0x85f00, mload(0x85e20)) +mstore(0x85f20, mload(0x85e80)) + mstore(0x85f40, mload(0x85ea0)) +success := and(eq(staticcall(gas(), 0x6, 0x85ee0, 0x80, 0x85ee0, 0x40), 1), success) +mstore(0x85f60, mload(0x26e0)) + mstore(0x85f80, mload(0x2700)) +mstore(0x85fa0, mload(0x58240)) +success := and(eq(staticcall(gas(), 0x7, 0x85f60, 0x60, 0x85f60, 0x40), 1), success) +mstore(0x85fc0, mload(0x85ee0)) + mstore(0x85fe0, mload(0x85f00)) +mstore(0x86000, mload(0x85f60)) + mstore(0x86020, mload(0x85f80)) +success := and(eq(staticcall(gas(), 0x6, 0x85fc0, 0x80, 0x85fc0, 0x40), 1), success) +mstore(0x86040, mload(0x2720)) + mstore(0x86060, mload(0x2740)) +mstore(0x86080, mload(0x58260)) +success := and(eq(staticcall(gas(), 0x7, 0x86040, 0x60, 0x86040, 0x40), 1), success) +mstore(0x860a0, mload(0x85fc0)) + mstore(0x860c0, mload(0x85fe0)) +mstore(0x860e0, mload(0x86040)) + mstore(0x86100, mload(0x86060)) +success := and(eq(staticcall(gas(), 0x6, 0x860a0, 0x80, 0x860a0, 0x40), 1), success) +mstore(0x86120, mload(0x2760)) + mstore(0x86140, mload(0x2780)) +mstore(0x86160, mload(0x58280)) +success := and(eq(staticcall(gas(), 0x7, 0x86120, 0x60, 0x86120, 0x40), 1), success) +mstore(0x86180, mload(0x860a0)) + mstore(0x861a0, mload(0x860c0)) +mstore(0x861c0, mload(0x86120)) + mstore(0x861e0, mload(0x86140)) +success := and(eq(staticcall(gas(), 0x6, 0x86180, 0x80, 0x86180, 0x40), 1), success) +mstore(0x86200, mload(0x27a0)) + mstore(0x86220, mload(0x27c0)) +mstore(0x86240, mload(0x582a0)) +success := and(eq(staticcall(gas(), 0x7, 0x86200, 0x60, 0x86200, 0x40), 1), success) +mstore(0x86260, mload(0x86180)) + mstore(0x86280, mload(0x861a0)) +mstore(0x862a0, mload(0x86200)) + mstore(0x862c0, mload(0x86220)) +success := and(eq(staticcall(gas(), 0x6, 0x86260, 0x80, 0x86260, 0x40), 1), success) +mstore(0x862e0, mload(0x27e0)) + mstore(0x86300, mload(0x2800)) +mstore(0x86320, mload(0x582c0)) +success := and(eq(staticcall(gas(), 0x7, 0x862e0, 0x60, 0x862e0, 0x40), 1), success) +mstore(0x86340, mload(0x86260)) + mstore(0x86360, mload(0x86280)) +mstore(0x86380, mload(0x862e0)) + mstore(0x863a0, mload(0x86300)) +success := and(eq(staticcall(gas(), 0x6, 0x86340, 0x80, 0x86340, 0x40), 1), success) +mstore(0x863c0, mload(0x2820)) + mstore(0x863e0, mload(0x2840)) +mstore(0x86400, mload(0x582e0)) +success := and(eq(staticcall(gas(), 0x7, 0x863c0, 0x60, 0x863c0, 0x40), 1), success) +mstore(0x86420, mload(0x86340)) + mstore(0x86440, mload(0x86360)) +mstore(0x86460, mload(0x863c0)) + mstore(0x86480, mload(0x863e0)) +success := and(eq(staticcall(gas(), 0x6, 0x86420, 0x80, 0x86420, 0x40), 1), success) +mstore(0x864a0, mload(0x2860)) + mstore(0x864c0, mload(0x2880)) +mstore(0x864e0, mload(0x58300)) +success := and(eq(staticcall(gas(), 0x7, 0x864a0, 0x60, 0x864a0, 0x40), 1), success) +mstore(0x86500, mload(0x86420)) + mstore(0x86520, mload(0x86440)) +mstore(0x86540, mload(0x864a0)) + mstore(0x86560, mload(0x864c0)) +success := and(eq(staticcall(gas(), 0x6, 0x86500, 0x80, 0x86500, 0x40), 1), success) +mstore(0x86580, mload(0x28a0)) + mstore(0x865a0, mload(0x28c0)) +mstore(0x865c0, mload(0x58320)) +success := and(eq(staticcall(gas(), 0x7, 0x86580, 0x60, 0x86580, 0x40), 1), success) +mstore(0x865e0, mload(0x86500)) + mstore(0x86600, mload(0x86520)) +mstore(0x86620, mload(0x86580)) + mstore(0x86640, mload(0x865a0)) +success := and(eq(staticcall(gas(), 0x6, 0x865e0, 0x80, 0x865e0, 0x40), 1), success) +mstore(0x86660, mload(0x28e0)) + mstore(0x86680, mload(0x2900)) +mstore(0x866a0, mload(0x58340)) +success := and(eq(staticcall(gas(), 0x7, 0x86660, 0x60, 0x86660, 0x40), 1), success) +mstore(0x866c0, mload(0x865e0)) + mstore(0x866e0, mload(0x86600)) +mstore(0x86700, mload(0x86660)) + mstore(0x86720, mload(0x86680)) +success := and(eq(staticcall(gas(), 0x6, 0x866c0, 0x80, 0x866c0, 0x40), 1), success) +mstore(0x86740, mload(0x2920)) + mstore(0x86760, mload(0x2940)) +mstore(0x86780, mload(0x58360)) +success := and(eq(staticcall(gas(), 0x7, 0x86740, 0x60, 0x86740, 0x40), 1), success) +mstore(0x867a0, mload(0x866c0)) + mstore(0x867c0, mload(0x866e0)) +mstore(0x867e0, mload(0x86740)) + mstore(0x86800, mload(0x86760)) +success := and(eq(staticcall(gas(), 0x6, 0x867a0, 0x80, 0x867a0, 0x40), 1), success) +mstore(0x86820, mload(0x2960)) + mstore(0x86840, mload(0x2980)) +mstore(0x86860, mload(0x58380)) +success := and(eq(staticcall(gas(), 0x7, 0x86820, 0x60, 0x86820, 0x40), 1), success) +mstore(0x86880, mload(0x867a0)) + mstore(0x868a0, mload(0x867c0)) +mstore(0x868c0, mload(0x86820)) + mstore(0x868e0, mload(0x86840)) +success := and(eq(staticcall(gas(), 0x6, 0x86880, 0x80, 0x86880, 0x40), 1), success) +mstore(0x86900, mload(0x29a0)) + mstore(0x86920, mload(0x29c0)) +mstore(0x86940, mload(0x583a0)) +success := and(eq(staticcall(gas(), 0x7, 0x86900, 0x60, 0x86900, 0x40), 1), success) +mstore(0x86960, mload(0x86880)) + mstore(0x86980, mload(0x868a0)) +mstore(0x869a0, mload(0x86900)) + mstore(0x869c0, mload(0x86920)) +success := and(eq(staticcall(gas(), 0x6, 0x86960, 0x80, 0x86960, 0x40), 1), success) +mstore(0x869e0, mload(0x29e0)) + mstore(0x86a00, mload(0x2a00)) +mstore(0x86a20, mload(0x583c0)) +success := and(eq(staticcall(gas(), 0x7, 0x869e0, 0x60, 0x869e0, 0x40), 1), success) +mstore(0x86a40, mload(0x86960)) + mstore(0x86a60, mload(0x86980)) +mstore(0x86a80, mload(0x869e0)) + mstore(0x86aa0, mload(0x86a00)) +success := and(eq(staticcall(gas(), 0x6, 0x86a40, 0x80, 0x86a40, 0x40), 1), success) +mstore(0x86ac0, mload(0x2a20)) + mstore(0x86ae0, mload(0x2a40)) +mstore(0x86b00, mload(0x583e0)) +success := and(eq(staticcall(gas(), 0x7, 0x86ac0, 0x60, 0x86ac0, 0x40), 1), success) +mstore(0x86b20, mload(0x86a40)) + mstore(0x86b40, mload(0x86a60)) +mstore(0x86b60, mload(0x86ac0)) + mstore(0x86b80, mload(0x86ae0)) +success := and(eq(staticcall(gas(), 0x6, 0x86b20, 0x80, 0x86b20, 0x40), 1), success) +mstore(0x86ba0, mload(0x2a60)) + mstore(0x86bc0, mload(0x2a80)) +mstore(0x86be0, mload(0x58400)) +success := and(eq(staticcall(gas(), 0x7, 0x86ba0, 0x60, 0x86ba0, 0x40), 1), success) +mstore(0x86c00, mload(0x86b20)) + mstore(0x86c20, mload(0x86b40)) +mstore(0x86c40, mload(0x86ba0)) + mstore(0x86c60, mload(0x86bc0)) +success := and(eq(staticcall(gas(), 0x6, 0x86c00, 0x80, 0x86c00, 0x40), 1), success) +mstore(0x86c80, mload(0x2aa0)) + mstore(0x86ca0, mload(0x2ac0)) +mstore(0x86cc0, mload(0x58420)) +success := and(eq(staticcall(gas(), 0x7, 0x86c80, 0x60, 0x86c80, 0x40), 1), success) +mstore(0x86ce0, mload(0x86c00)) + mstore(0x86d00, mload(0x86c20)) +mstore(0x86d20, mload(0x86c80)) + mstore(0x86d40, mload(0x86ca0)) +success := and(eq(staticcall(gas(), 0x6, 0x86ce0, 0x80, 0x86ce0, 0x40), 1), success) +mstore(0x86d60, mload(0x2ae0)) + mstore(0x86d80, mload(0x2b00)) +mstore(0x86da0, mload(0x58440)) +success := and(eq(staticcall(gas(), 0x7, 0x86d60, 0x60, 0x86d60, 0x40), 1), success) +mstore(0x86dc0, mload(0x86ce0)) + mstore(0x86de0, mload(0x86d00)) +mstore(0x86e00, mload(0x86d60)) + mstore(0x86e20, mload(0x86d80)) +success := and(eq(staticcall(gas(), 0x6, 0x86dc0, 0x80, 0x86dc0, 0x40), 1), success) +mstore(0x86e40, mload(0x2b20)) + mstore(0x86e60, mload(0x2b40)) +mstore(0x86e80, mload(0x58460)) +success := and(eq(staticcall(gas(), 0x7, 0x86e40, 0x60, 0x86e40, 0x40), 1), success) +mstore(0x86ea0, mload(0x86dc0)) + mstore(0x86ec0, mload(0x86de0)) +mstore(0x86ee0, mload(0x86e40)) + mstore(0x86f00, mload(0x86e60)) +success := and(eq(staticcall(gas(), 0x6, 0x86ea0, 0x80, 0x86ea0, 0x40), 1), success) +mstore(0x86f20, mload(0x2b60)) + mstore(0x86f40, mload(0x2b80)) +mstore(0x86f60, mload(0x58480)) +success := and(eq(staticcall(gas(), 0x7, 0x86f20, 0x60, 0x86f20, 0x40), 1), success) +mstore(0x86f80, mload(0x86ea0)) + mstore(0x86fa0, mload(0x86ec0)) +mstore(0x86fc0, mload(0x86f20)) + mstore(0x86fe0, mload(0x86f40)) +success := and(eq(staticcall(gas(), 0x6, 0x86f80, 0x80, 0x86f80, 0x40), 1), success) +mstore(0x87000, mload(0x2ba0)) + mstore(0x87020, mload(0x2bc0)) +mstore(0x87040, mload(0x584a0)) +success := and(eq(staticcall(gas(), 0x7, 0x87000, 0x60, 0x87000, 0x40), 1), success) +mstore(0x87060, mload(0x86f80)) + mstore(0x87080, mload(0x86fa0)) +mstore(0x870a0, mload(0x87000)) + mstore(0x870c0, mload(0x87020)) +success := and(eq(staticcall(gas(), 0x6, 0x87060, 0x80, 0x87060, 0x40), 1), success) +mstore(0x870e0, mload(0x2be0)) + mstore(0x87100, mload(0x2c00)) +mstore(0x87120, mload(0x584c0)) +success := and(eq(staticcall(gas(), 0x7, 0x870e0, 0x60, 0x870e0, 0x40), 1), success) +mstore(0x87140, mload(0x87060)) + mstore(0x87160, mload(0x87080)) +mstore(0x87180, mload(0x870e0)) + mstore(0x871a0, mload(0x87100)) +success := and(eq(staticcall(gas(), 0x6, 0x87140, 0x80, 0x87140, 0x40), 1), success) +mstore(0x871c0, mload(0x2c20)) + mstore(0x871e0, mload(0x2c40)) +mstore(0x87200, mload(0x584e0)) +success := and(eq(staticcall(gas(), 0x7, 0x871c0, 0x60, 0x871c0, 0x40), 1), success) +mstore(0x87220, mload(0x87140)) + mstore(0x87240, mload(0x87160)) +mstore(0x87260, mload(0x871c0)) + mstore(0x87280, mload(0x871e0)) +success := and(eq(staticcall(gas(), 0x6, 0x87220, 0x80, 0x87220, 0x40), 1), success) +mstore(0x872a0, mload(0x2c60)) + mstore(0x872c0, mload(0x2c80)) +mstore(0x872e0, mload(0x58500)) +success := and(eq(staticcall(gas(), 0x7, 0x872a0, 0x60, 0x872a0, 0x40), 1), success) +mstore(0x87300, mload(0x87220)) + mstore(0x87320, mload(0x87240)) +mstore(0x87340, mload(0x872a0)) + mstore(0x87360, mload(0x872c0)) +success := and(eq(staticcall(gas(), 0x6, 0x87300, 0x80, 0x87300, 0x40), 1), success) +mstore(0x87380, mload(0x2ca0)) + mstore(0x873a0, mload(0x2cc0)) +mstore(0x873c0, mload(0x58520)) +success := and(eq(staticcall(gas(), 0x7, 0x87380, 0x60, 0x87380, 0x40), 1), success) +mstore(0x873e0, mload(0x87300)) + mstore(0x87400, mload(0x87320)) +mstore(0x87420, mload(0x87380)) + mstore(0x87440, mload(0x873a0)) +success := and(eq(staticcall(gas(), 0x6, 0x873e0, 0x80, 0x873e0, 0x40), 1), success) +mstore(0x87460, mload(0x2ce0)) + mstore(0x87480, mload(0x2d00)) +mstore(0x874a0, mload(0x58540)) +success := and(eq(staticcall(gas(), 0x7, 0x87460, 0x60, 0x87460, 0x40), 1), success) +mstore(0x874c0, mload(0x873e0)) + mstore(0x874e0, mload(0x87400)) +mstore(0x87500, mload(0x87460)) + mstore(0x87520, mload(0x87480)) +success := and(eq(staticcall(gas(), 0x6, 0x874c0, 0x80, 0x874c0, 0x40), 1), success) +mstore(0x87540, mload(0x2d20)) + mstore(0x87560, mload(0x2d40)) +mstore(0x87580, mload(0x58560)) +success := and(eq(staticcall(gas(), 0x7, 0x87540, 0x60, 0x87540, 0x40), 1), success) +mstore(0x875a0, mload(0x874c0)) + mstore(0x875c0, mload(0x874e0)) +mstore(0x875e0, mload(0x87540)) + mstore(0x87600, mload(0x87560)) +success := and(eq(staticcall(gas(), 0x6, 0x875a0, 0x80, 0x875a0, 0x40), 1), success) +mstore(0x87620, mload(0x2d60)) + mstore(0x87640, mload(0x2d80)) +mstore(0x87660, mload(0x58580)) +success := and(eq(staticcall(gas(), 0x7, 0x87620, 0x60, 0x87620, 0x40), 1), success) +mstore(0x87680, mload(0x875a0)) + mstore(0x876a0, mload(0x875c0)) +mstore(0x876c0, mload(0x87620)) + mstore(0x876e0, mload(0x87640)) +success := and(eq(staticcall(gas(), 0x6, 0x87680, 0x80, 0x87680, 0x40), 1), success) +mstore(0x87700, mload(0x2da0)) + mstore(0x87720, mload(0x2dc0)) +mstore(0x87740, mload(0x585a0)) +success := and(eq(staticcall(gas(), 0x7, 0x87700, 0x60, 0x87700, 0x40), 1), success) +mstore(0x87760, mload(0x87680)) + mstore(0x87780, mload(0x876a0)) +mstore(0x877a0, mload(0x87700)) + mstore(0x877c0, mload(0x87720)) +success := and(eq(staticcall(gas(), 0x6, 0x87760, 0x80, 0x87760, 0x40), 1), success) +mstore(0x877e0, mload(0x2de0)) + mstore(0x87800, mload(0x2e00)) +mstore(0x87820, mload(0x585c0)) +success := and(eq(staticcall(gas(), 0x7, 0x877e0, 0x60, 0x877e0, 0x40), 1), success) +mstore(0x87840, mload(0x87760)) + mstore(0x87860, mload(0x87780)) +mstore(0x87880, mload(0x877e0)) + mstore(0x878a0, mload(0x87800)) +success := and(eq(staticcall(gas(), 0x6, 0x87840, 0x80, 0x87840, 0x40), 1), success) +mstore(0x878c0, mload(0x2e20)) + mstore(0x878e0, mload(0x2e40)) +mstore(0x87900, mload(0x585e0)) +success := and(eq(staticcall(gas(), 0x7, 0x878c0, 0x60, 0x878c0, 0x40), 1), success) +mstore(0x87920, mload(0x87840)) + mstore(0x87940, mload(0x87860)) +mstore(0x87960, mload(0x878c0)) + mstore(0x87980, mload(0x878e0)) +success := and(eq(staticcall(gas(), 0x6, 0x87920, 0x80, 0x87920, 0x40), 1), success) +mstore(0x879a0, mload(0x2e60)) + mstore(0x879c0, mload(0x2e80)) +mstore(0x879e0, mload(0x58600)) +success := and(eq(staticcall(gas(), 0x7, 0x879a0, 0x60, 0x879a0, 0x40), 1), success) +mstore(0x87a00, mload(0x87920)) + mstore(0x87a20, mload(0x87940)) +mstore(0x87a40, mload(0x879a0)) + mstore(0x87a60, mload(0x879c0)) +success := and(eq(staticcall(gas(), 0x6, 0x87a00, 0x80, 0x87a00, 0x40), 1), success) +mstore(0x87a80, mload(0x2ea0)) + mstore(0x87aa0, mload(0x2ec0)) +mstore(0x87ac0, mload(0x58620)) +success := and(eq(staticcall(gas(), 0x7, 0x87a80, 0x60, 0x87a80, 0x40), 1), success) +mstore(0x87ae0, mload(0x87a00)) + mstore(0x87b00, mload(0x87a20)) +mstore(0x87b20, mload(0x87a80)) + mstore(0x87b40, mload(0x87aa0)) +success := and(eq(staticcall(gas(), 0x6, 0x87ae0, 0x80, 0x87ae0, 0x40), 1), success) +mstore(0x87b60, mload(0x2ee0)) + mstore(0x87b80, mload(0x2f00)) +mstore(0x87ba0, mload(0x58640)) +success := and(eq(staticcall(gas(), 0x7, 0x87b60, 0x60, 0x87b60, 0x40), 1), success) +mstore(0x87bc0, mload(0x87ae0)) + mstore(0x87be0, mload(0x87b00)) +mstore(0x87c00, mload(0x87b60)) + mstore(0x87c20, mload(0x87b80)) +success := and(eq(staticcall(gas(), 0x6, 0x87bc0, 0x80, 0x87bc0, 0x40), 1), success) +mstore(0x87c40, mload(0x2f20)) + mstore(0x87c60, mload(0x2f40)) +mstore(0x87c80, mload(0x58660)) +success := and(eq(staticcall(gas(), 0x7, 0x87c40, 0x60, 0x87c40, 0x40), 1), success) +mstore(0x87ca0, mload(0x87bc0)) + mstore(0x87cc0, mload(0x87be0)) +mstore(0x87ce0, mload(0x87c40)) + mstore(0x87d00, mload(0x87c60)) +success := and(eq(staticcall(gas(), 0x6, 0x87ca0, 0x80, 0x87ca0, 0x40), 1), success) +mstore(0x87d20, mload(0x2f60)) + mstore(0x87d40, mload(0x2f80)) +mstore(0x87d60, mload(0x58680)) +success := and(eq(staticcall(gas(), 0x7, 0x87d20, 0x60, 0x87d20, 0x40), 1), success) +mstore(0x87d80, mload(0x87ca0)) + mstore(0x87da0, mload(0x87cc0)) +mstore(0x87dc0, mload(0x87d20)) + mstore(0x87de0, mload(0x87d40)) +success := and(eq(staticcall(gas(), 0x6, 0x87d80, 0x80, 0x87d80, 0x40), 1), success) +mstore(0x87e00, mload(0x2fa0)) + mstore(0x87e20, mload(0x2fc0)) +mstore(0x87e40, mload(0x586a0)) +success := and(eq(staticcall(gas(), 0x7, 0x87e00, 0x60, 0x87e00, 0x40), 1), success) +mstore(0x87e60, mload(0x87d80)) + mstore(0x87e80, mload(0x87da0)) +mstore(0x87ea0, mload(0x87e00)) + mstore(0x87ec0, mload(0x87e20)) +success := and(eq(staticcall(gas(), 0x6, 0x87e60, 0x80, 0x87e60, 0x40), 1), success) +mstore(0x87ee0, mload(0x2fe0)) + mstore(0x87f00, mload(0x3000)) +mstore(0x87f20, mload(0x586c0)) +success := and(eq(staticcall(gas(), 0x7, 0x87ee0, 0x60, 0x87ee0, 0x40), 1), success) +mstore(0x87f40, mload(0x87e60)) + mstore(0x87f60, mload(0x87e80)) +mstore(0x87f80, mload(0x87ee0)) + mstore(0x87fa0, mload(0x87f00)) +success := and(eq(staticcall(gas(), 0x6, 0x87f40, 0x80, 0x87f40, 0x40), 1), success) +mstore(0x87fc0, mload(0x3020)) + mstore(0x87fe0, mload(0x3040)) +mstore(0x88000, mload(0x586e0)) +success := and(eq(staticcall(gas(), 0x7, 0x87fc0, 0x60, 0x87fc0, 0x40), 1), success) +mstore(0x88020, mload(0x87f40)) + mstore(0x88040, mload(0x87f60)) +mstore(0x88060, mload(0x87fc0)) + mstore(0x88080, mload(0x87fe0)) +success := and(eq(staticcall(gas(), 0x6, 0x88020, 0x80, 0x88020, 0x40), 1), success) +mstore(0x880a0, mload(0x3060)) + mstore(0x880c0, mload(0x3080)) +mstore(0x880e0, mload(0x58700)) +success := and(eq(staticcall(gas(), 0x7, 0x880a0, 0x60, 0x880a0, 0x40), 1), success) +mstore(0x88100, mload(0x88020)) + mstore(0x88120, mload(0x88040)) +mstore(0x88140, mload(0x880a0)) + mstore(0x88160, mload(0x880c0)) +success := and(eq(staticcall(gas(), 0x6, 0x88100, 0x80, 0x88100, 0x40), 1), success) +mstore(0x88180, mload(0x30a0)) + mstore(0x881a0, mload(0x30c0)) +mstore(0x881c0, mload(0x58720)) +success := and(eq(staticcall(gas(), 0x7, 0x88180, 0x60, 0x88180, 0x40), 1), success) +mstore(0x881e0, mload(0x88100)) + mstore(0x88200, mload(0x88120)) +mstore(0x88220, mload(0x88180)) + mstore(0x88240, mload(0x881a0)) +success := and(eq(staticcall(gas(), 0x6, 0x881e0, 0x80, 0x881e0, 0x40), 1), success) +mstore(0x88260, mload(0x30e0)) + mstore(0x88280, mload(0x3100)) +mstore(0x882a0, mload(0x58740)) +success := and(eq(staticcall(gas(), 0x7, 0x88260, 0x60, 0x88260, 0x40), 1), success) +mstore(0x882c0, mload(0x881e0)) + mstore(0x882e0, mload(0x88200)) +mstore(0x88300, mload(0x88260)) + mstore(0x88320, mload(0x88280)) +success := and(eq(staticcall(gas(), 0x6, 0x882c0, 0x80, 0x882c0, 0x40), 1), success) +mstore(0x88340, mload(0x3120)) + mstore(0x88360, mload(0x3140)) +mstore(0x88380, mload(0x58760)) +success := and(eq(staticcall(gas(), 0x7, 0x88340, 0x60, 0x88340, 0x40), 1), success) +mstore(0x883a0, mload(0x882c0)) + mstore(0x883c0, mload(0x882e0)) +mstore(0x883e0, mload(0x88340)) + mstore(0x88400, mload(0x88360)) +success := and(eq(staticcall(gas(), 0x6, 0x883a0, 0x80, 0x883a0, 0x40), 1), success) +mstore(0x88420, mload(0x3160)) + mstore(0x88440, mload(0x3180)) +mstore(0x88460, mload(0x58780)) +success := and(eq(staticcall(gas(), 0x7, 0x88420, 0x60, 0x88420, 0x40), 1), success) +mstore(0x88480, mload(0x883a0)) + mstore(0x884a0, mload(0x883c0)) +mstore(0x884c0, mload(0x88420)) + mstore(0x884e0, mload(0x88440)) +success := and(eq(staticcall(gas(), 0x6, 0x88480, 0x80, 0x88480, 0x40), 1), success) +mstore(0x88500, mload(0x31a0)) + mstore(0x88520, mload(0x31c0)) +mstore(0x88540, mload(0x587a0)) +success := and(eq(staticcall(gas(), 0x7, 0x88500, 0x60, 0x88500, 0x40), 1), success) +mstore(0x88560, mload(0x88480)) + mstore(0x88580, mload(0x884a0)) +mstore(0x885a0, mload(0x88500)) + mstore(0x885c0, mload(0x88520)) +success := and(eq(staticcall(gas(), 0x6, 0x88560, 0x80, 0x88560, 0x40), 1), success) +mstore(0x885e0, mload(0x31e0)) + mstore(0x88600, mload(0x3200)) +mstore(0x88620, mload(0x587c0)) +success := and(eq(staticcall(gas(), 0x7, 0x885e0, 0x60, 0x885e0, 0x40), 1), success) +mstore(0x88640, mload(0x88560)) + mstore(0x88660, mload(0x88580)) +mstore(0x88680, mload(0x885e0)) + mstore(0x886a0, mload(0x88600)) +success := and(eq(staticcall(gas(), 0x6, 0x88640, 0x80, 0x88640, 0x40), 1), success) +mstore(0x886c0, mload(0x3220)) + mstore(0x886e0, mload(0x3240)) +mstore(0x88700, mload(0x587e0)) +success := and(eq(staticcall(gas(), 0x7, 0x886c0, 0x60, 0x886c0, 0x40), 1), success) +mstore(0x88720, mload(0x88640)) + mstore(0x88740, mload(0x88660)) +mstore(0x88760, mload(0x886c0)) + mstore(0x88780, mload(0x886e0)) +success := and(eq(staticcall(gas(), 0x6, 0x88720, 0x80, 0x88720, 0x40), 1), success) +mstore(0x887a0, mload(0x3260)) + mstore(0x887c0, mload(0x3280)) +mstore(0x887e0, mload(0x58800)) +success := and(eq(staticcall(gas(), 0x7, 0x887a0, 0x60, 0x887a0, 0x40), 1), success) +mstore(0x88800, mload(0x88720)) + mstore(0x88820, mload(0x88740)) +mstore(0x88840, mload(0x887a0)) + mstore(0x88860, mload(0x887c0)) +success := and(eq(staticcall(gas(), 0x6, 0x88800, 0x80, 0x88800, 0x40), 1), success) +mstore(0x88880, mload(0x32a0)) + mstore(0x888a0, mload(0x32c0)) +mstore(0x888c0, mload(0x58820)) +success := and(eq(staticcall(gas(), 0x7, 0x88880, 0x60, 0x88880, 0x40), 1), success) +mstore(0x888e0, mload(0x88800)) + mstore(0x88900, mload(0x88820)) +mstore(0x88920, mload(0x88880)) + mstore(0x88940, mload(0x888a0)) +success := and(eq(staticcall(gas(), 0x6, 0x888e0, 0x80, 0x888e0, 0x40), 1), success) +mstore(0x88960, mload(0x32e0)) + mstore(0x88980, mload(0x3300)) +mstore(0x889a0, mload(0x58840)) +success := and(eq(staticcall(gas(), 0x7, 0x88960, 0x60, 0x88960, 0x40), 1), success) +mstore(0x889c0, mload(0x888e0)) + mstore(0x889e0, mload(0x88900)) +mstore(0x88a00, mload(0x88960)) + mstore(0x88a20, mload(0x88980)) +success := and(eq(staticcall(gas(), 0x6, 0x889c0, 0x80, 0x889c0, 0x40), 1), success) +mstore(0x88a40, mload(0x3320)) + mstore(0x88a60, mload(0x3340)) +mstore(0x88a80, mload(0x58860)) +success := and(eq(staticcall(gas(), 0x7, 0x88a40, 0x60, 0x88a40, 0x40), 1), success) +mstore(0x88aa0, mload(0x889c0)) + mstore(0x88ac0, mload(0x889e0)) +mstore(0x88ae0, mload(0x88a40)) + mstore(0x88b00, mload(0x88a60)) +success := and(eq(staticcall(gas(), 0x6, 0x88aa0, 0x80, 0x88aa0, 0x40), 1), success) +mstore(0x88b20, mload(0x3360)) + mstore(0x88b40, mload(0x3380)) +mstore(0x88b60, mload(0x58880)) +success := and(eq(staticcall(gas(), 0x7, 0x88b20, 0x60, 0x88b20, 0x40), 1), success) +mstore(0x88b80, mload(0x88aa0)) + mstore(0x88ba0, mload(0x88ac0)) +mstore(0x88bc0, mload(0x88b20)) + mstore(0x88be0, mload(0x88b40)) +success := and(eq(staticcall(gas(), 0x6, 0x88b80, 0x80, 0x88b80, 0x40), 1), success) +mstore(0x88c00, mload(0x33a0)) + mstore(0x88c20, mload(0x33c0)) +mstore(0x88c40, mload(0x588a0)) +success := and(eq(staticcall(gas(), 0x7, 0x88c00, 0x60, 0x88c00, 0x40), 1), success) +mstore(0x88c60, mload(0x88b80)) + mstore(0x88c80, mload(0x88ba0)) +mstore(0x88ca0, mload(0x88c00)) + mstore(0x88cc0, mload(0x88c20)) +success := and(eq(staticcall(gas(), 0x6, 0x88c60, 0x80, 0x88c60, 0x40), 1), success) +mstore(0x88ce0, mload(0x33e0)) + mstore(0x88d00, mload(0x3400)) +mstore(0x88d20, mload(0x588c0)) +success := and(eq(staticcall(gas(), 0x7, 0x88ce0, 0x60, 0x88ce0, 0x40), 1), success) +mstore(0x88d40, mload(0x88c60)) + mstore(0x88d60, mload(0x88c80)) +mstore(0x88d80, mload(0x88ce0)) + mstore(0x88da0, mload(0x88d00)) +success := and(eq(staticcall(gas(), 0x6, 0x88d40, 0x80, 0x88d40, 0x40), 1), success) +mstore(0x88dc0, mload(0x3420)) + mstore(0x88de0, mload(0x3440)) +mstore(0x88e00, mload(0x588e0)) +success := and(eq(staticcall(gas(), 0x7, 0x88dc0, 0x60, 0x88dc0, 0x40), 1), success) +mstore(0x88e20, mload(0x88d40)) + mstore(0x88e40, mload(0x88d60)) +mstore(0x88e60, mload(0x88dc0)) + mstore(0x88e80, mload(0x88de0)) +success := and(eq(staticcall(gas(), 0x6, 0x88e20, 0x80, 0x88e20, 0x40), 1), success) +mstore(0x88ea0, mload(0x3460)) + mstore(0x88ec0, mload(0x3480)) +mstore(0x88ee0, mload(0x58900)) +success := and(eq(staticcall(gas(), 0x7, 0x88ea0, 0x60, 0x88ea0, 0x40), 1), success) +mstore(0x88f00, mload(0x88e20)) + mstore(0x88f20, mload(0x88e40)) +mstore(0x88f40, mload(0x88ea0)) + mstore(0x88f60, mload(0x88ec0)) +success := and(eq(staticcall(gas(), 0x6, 0x88f00, 0x80, 0x88f00, 0x40), 1), success) +mstore(0x88f80, mload(0x34a0)) + mstore(0x88fa0, mload(0x34c0)) +mstore(0x88fc0, mload(0x58920)) +success := and(eq(staticcall(gas(), 0x7, 0x88f80, 0x60, 0x88f80, 0x40), 1), success) +mstore(0x88fe0, mload(0x88f00)) + mstore(0x89000, mload(0x88f20)) +mstore(0x89020, mload(0x88f80)) + mstore(0x89040, mload(0x88fa0)) +success := and(eq(staticcall(gas(), 0x6, 0x88fe0, 0x80, 0x88fe0, 0x40), 1), success) +mstore(0x89060, mload(0x34e0)) + mstore(0x89080, mload(0x3500)) +mstore(0x890a0, mload(0x58940)) +success := and(eq(staticcall(gas(), 0x7, 0x89060, 0x60, 0x89060, 0x40), 1), success) +mstore(0x890c0, mload(0x88fe0)) + mstore(0x890e0, mload(0x89000)) +mstore(0x89100, mload(0x89060)) + mstore(0x89120, mload(0x89080)) +success := and(eq(staticcall(gas(), 0x6, 0x890c0, 0x80, 0x890c0, 0x40), 1), success) +mstore(0x89140, mload(0x3520)) + mstore(0x89160, mload(0x3540)) +mstore(0x89180, mload(0x58960)) +success := and(eq(staticcall(gas(), 0x7, 0x89140, 0x60, 0x89140, 0x40), 1), success) +mstore(0x891a0, mload(0x890c0)) + mstore(0x891c0, mload(0x890e0)) +mstore(0x891e0, mload(0x89140)) + mstore(0x89200, mload(0x89160)) +success := and(eq(staticcall(gas(), 0x6, 0x891a0, 0x80, 0x891a0, 0x40), 1), success) +mstore(0x89220, mload(0x3560)) + mstore(0x89240, mload(0x3580)) +mstore(0x89260, mload(0x58980)) +success := and(eq(staticcall(gas(), 0x7, 0x89220, 0x60, 0x89220, 0x40), 1), success) +mstore(0x89280, mload(0x891a0)) + mstore(0x892a0, mload(0x891c0)) +mstore(0x892c0, mload(0x89220)) + mstore(0x892e0, mload(0x89240)) +success := and(eq(staticcall(gas(), 0x6, 0x89280, 0x80, 0x89280, 0x40), 1), success) +mstore(0x89300, mload(0x35a0)) + mstore(0x89320, mload(0x35c0)) +mstore(0x89340, mload(0x589a0)) +success := and(eq(staticcall(gas(), 0x7, 0x89300, 0x60, 0x89300, 0x40), 1), success) +mstore(0x89360, mload(0x89280)) + mstore(0x89380, mload(0x892a0)) +mstore(0x893a0, mload(0x89300)) + mstore(0x893c0, mload(0x89320)) +success := and(eq(staticcall(gas(), 0x6, 0x89360, 0x80, 0x89360, 0x40), 1), success) +mstore(0x893e0, mload(0x35e0)) + mstore(0x89400, mload(0x3600)) +mstore(0x89420, mload(0x589c0)) +success := and(eq(staticcall(gas(), 0x7, 0x893e0, 0x60, 0x893e0, 0x40), 1), success) +mstore(0x89440, mload(0x89360)) + mstore(0x89460, mload(0x89380)) +mstore(0x89480, mload(0x893e0)) + mstore(0x894a0, mload(0x89400)) +success := and(eq(staticcall(gas(), 0x6, 0x89440, 0x80, 0x89440, 0x40), 1), success) +mstore(0x894c0, mload(0x3620)) + mstore(0x894e0, mload(0x3640)) +mstore(0x89500, mload(0x589e0)) +success := and(eq(staticcall(gas(), 0x7, 0x894c0, 0x60, 0x894c0, 0x40), 1), success) +mstore(0x89520, mload(0x89440)) + mstore(0x89540, mload(0x89460)) +mstore(0x89560, mload(0x894c0)) + mstore(0x89580, mload(0x894e0)) +success := and(eq(staticcall(gas(), 0x6, 0x89520, 0x80, 0x89520, 0x40), 1), success) +mstore(0x895a0, mload(0x3660)) + mstore(0x895c0, mload(0x3680)) +mstore(0x895e0, mload(0x58a00)) +success := and(eq(staticcall(gas(), 0x7, 0x895a0, 0x60, 0x895a0, 0x40), 1), success) +mstore(0x89600, mload(0x89520)) + mstore(0x89620, mload(0x89540)) +mstore(0x89640, mload(0x895a0)) + mstore(0x89660, mload(0x895c0)) +success := and(eq(staticcall(gas(), 0x6, 0x89600, 0x80, 0x89600, 0x40), 1), success) +mstore(0x89680, mload(0x36a0)) + mstore(0x896a0, mload(0x36c0)) +mstore(0x896c0, mload(0x58a20)) +success := and(eq(staticcall(gas(), 0x7, 0x89680, 0x60, 0x89680, 0x40), 1), success) +mstore(0x896e0, mload(0x89600)) + mstore(0x89700, mload(0x89620)) +mstore(0x89720, mload(0x89680)) + mstore(0x89740, mload(0x896a0)) +success := and(eq(staticcall(gas(), 0x6, 0x896e0, 0x80, 0x896e0, 0x40), 1), success) +mstore(0x89760, mload(0x36e0)) + mstore(0x89780, mload(0x3700)) +mstore(0x897a0, mload(0x58a40)) +success := and(eq(staticcall(gas(), 0x7, 0x89760, 0x60, 0x89760, 0x40), 1), success) +mstore(0x897c0, mload(0x896e0)) + mstore(0x897e0, mload(0x89700)) +mstore(0x89800, mload(0x89760)) + mstore(0x89820, mload(0x89780)) +success := and(eq(staticcall(gas(), 0x6, 0x897c0, 0x80, 0x897c0, 0x40), 1), success) +mstore(0x89840, mload(0x3720)) + mstore(0x89860, mload(0x3740)) +mstore(0x89880, mload(0x58a60)) +success := and(eq(staticcall(gas(), 0x7, 0x89840, 0x60, 0x89840, 0x40), 1), success) +mstore(0x898a0, mload(0x897c0)) + mstore(0x898c0, mload(0x897e0)) +mstore(0x898e0, mload(0x89840)) + mstore(0x89900, mload(0x89860)) +success := and(eq(staticcall(gas(), 0x6, 0x898a0, 0x80, 0x898a0, 0x40), 1), success) +mstore(0x89920, mload(0x3760)) + mstore(0x89940, mload(0x3780)) +mstore(0x89960, mload(0x58a80)) +success := and(eq(staticcall(gas(), 0x7, 0x89920, 0x60, 0x89920, 0x40), 1), success) +mstore(0x89980, mload(0x898a0)) + mstore(0x899a0, mload(0x898c0)) +mstore(0x899c0, mload(0x89920)) + mstore(0x899e0, mload(0x89940)) +success := and(eq(staticcall(gas(), 0x6, 0x89980, 0x80, 0x89980, 0x40), 1), success) +mstore(0x89a00, mload(0x37a0)) + mstore(0x89a20, mload(0x37c0)) +mstore(0x89a40, mload(0x58aa0)) +success := and(eq(staticcall(gas(), 0x7, 0x89a00, 0x60, 0x89a00, 0x40), 1), success) +mstore(0x89a60, mload(0x89980)) + mstore(0x89a80, mload(0x899a0)) +mstore(0x89aa0, mload(0x89a00)) + mstore(0x89ac0, mload(0x89a20)) +success := and(eq(staticcall(gas(), 0x6, 0x89a60, 0x80, 0x89a60, 0x40), 1), success) +mstore(0x89ae0, mload(0x37e0)) + mstore(0x89b00, mload(0x3800)) +mstore(0x89b20, mload(0x58ac0)) +success := and(eq(staticcall(gas(), 0x7, 0x89ae0, 0x60, 0x89ae0, 0x40), 1), success) +mstore(0x89b40, mload(0x89a60)) + mstore(0x89b60, mload(0x89a80)) +mstore(0x89b80, mload(0x89ae0)) + mstore(0x89ba0, mload(0x89b00)) +success := and(eq(staticcall(gas(), 0x6, 0x89b40, 0x80, 0x89b40, 0x40), 1), success) +mstore(0x89bc0, mload(0x3820)) + mstore(0x89be0, mload(0x3840)) +mstore(0x89c00, mload(0x58ae0)) +success := and(eq(staticcall(gas(), 0x7, 0x89bc0, 0x60, 0x89bc0, 0x40), 1), success) +mstore(0x89c20, mload(0x89b40)) + mstore(0x89c40, mload(0x89b60)) +mstore(0x89c60, mload(0x89bc0)) + mstore(0x89c80, mload(0x89be0)) +success := and(eq(staticcall(gas(), 0x6, 0x89c20, 0x80, 0x89c20, 0x40), 1), success) +mstore(0x89ca0, mload(0x3860)) + mstore(0x89cc0, mload(0x3880)) +mstore(0x89ce0, mload(0x58b00)) +success := and(eq(staticcall(gas(), 0x7, 0x89ca0, 0x60, 0x89ca0, 0x40), 1), success) +mstore(0x89d00, mload(0x89c20)) + mstore(0x89d20, mload(0x89c40)) +mstore(0x89d40, mload(0x89ca0)) + mstore(0x89d60, mload(0x89cc0)) +success := and(eq(staticcall(gas(), 0x6, 0x89d00, 0x80, 0x89d00, 0x40), 1), success) +mstore(0x89d80, mload(0x38a0)) + mstore(0x89da0, mload(0x38c0)) +mstore(0x89dc0, mload(0x58b20)) +success := and(eq(staticcall(gas(), 0x7, 0x89d80, 0x60, 0x89d80, 0x40), 1), success) +mstore(0x89de0, mload(0x89d00)) + mstore(0x89e00, mload(0x89d20)) +mstore(0x89e20, mload(0x89d80)) + mstore(0x89e40, mload(0x89da0)) +success := and(eq(staticcall(gas(), 0x6, 0x89de0, 0x80, 0x89de0, 0x40), 1), success) +mstore(0x89e60, mload(0x38e0)) + mstore(0x89e80, mload(0x3900)) +mstore(0x89ea0, mload(0x58b40)) +success := and(eq(staticcall(gas(), 0x7, 0x89e60, 0x60, 0x89e60, 0x40), 1), success) +mstore(0x89ec0, mload(0x89de0)) + mstore(0x89ee0, mload(0x89e00)) +mstore(0x89f00, mload(0x89e60)) + mstore(0x89f20, mload(0x89e80)) +success := and(eq(staticcall(gas(), 0x6, 0x89ec0, 0x80, 0x89ec0, 0x40), 1), success) +mstore(0x89f40, mload(0x3920)) + mstore(0x89f60, mload(0x3940)) +mstore(0x89f80, mload(0x58b60)) +success := and(eq(staticcall(gas(), 0x7, 0x89f40, 0x60, 0x89f40, 0x40), 1), success) +mstore(0x89fa0, mload(0x89ec0)) + mstore(0x89fc0, mload(0x89ee0)) +mstore(0x89fe0, mload(0x89f40)) + mstore(0x8a000, mload(0x89f60)) +success := and(eq(staticcall(gas(), 0x6, 0x89fa0, 0x80, 0x89fa0, 0x40), 1), success) +mstore(0x8a020, mload(0x3960)) + mstore(0x8a040, mload(0x3980)) +mstore(0x8a060, mload(0x58b80)) +success := and(eq(staticcall(gas(), 0x7, 0x8a020, 0x60, 0x8a020, 0x40), 1), success) +mstore(0x8a080, mload(0x89fa0)) + mstore(0x8a0a0, mload(0x89fc0)) +mstore(0x8a0c0, mload(0x8a020)) + mstore(0x8a0e0, mload(0x8a040)) +success := and(eq(staticcall(gas(), 0x6, 0x8a080, 0x80, 0x8a080, 0x40), 1), success) +mstore(0x8a100, mload(0x39a0)) + mstore(0x8a120, mload(0x39c0)) +mstore(0x8a140, mload(0x58ba0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a100, 0x60, 0x8a100, 0x40), 1), success) +mstore(0x8a160, mload(0x8a080)) + mstore(0x8a180, mload(0x8a0a0)) +mstore(0x8a1a0, mload(0x8a100)) + mstore(0x8a1c0, mload(0x8a120)) +success := and(eq(staticcall(gas(), 0x6, 0x8a160, 0x80, 0x8a160, 0x40), 1), success) +mstore(0x8a1e0, mload(0x39e0)) + mstore(0x8a200, mload(0x3a00)) +mstore(0x8a220, mload(0x58bc0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a1e0, 0x60, 0x8a1e0, 0x40), 1), success) +mstore(0x8a240, mload(0x8a160)) + mstore(0x8a260, mload(0x8a180)) +mstore(0x8a280, mload(0x8a1e0)) + mstore(0x8a2a0, mload(0x8a200)) +success := and(eq(staticcall(gas(), 0x6, 0x8a240, 0x80, 0x8a240, 0x40), 1), success) +mstore(0x8a2c0, mload(0x3a20)) + mstore(0x8a2e0, mload(0x3a40)) +mstore(0x8a300, mload(0x58be0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a2c0, 0x60, 0x8a2c0, 0x40), 1), success) +mstore(0x8a320, mload(0x8a240)) + mstore(0x8a340, mload(0x8a260)) +mstore(0x8a360, mload(0x8a2c0)) + mstore(0x8a380, mload(0x8a2e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8a320, 0x80, 0x8a320, 0x40), 1), success) +mstore(0x8a3a0, mload(0x3a60)) + mstore(0x8a3c0, mload(0x3a80)) +mstore(0x8a3e0, mload(0x58c00)) +success := and(eq(staticcall(gas(), 0x7, 0x8a3a0, 0x60, 0x8a3a0, 0x40), 1), success) +mstore(0x8a400, mload(0x8a320)) + mstore(0x8a420, mload(0x8a340)) +mstore(0x8a440, mload(0x8a3a0)) + mstore(0x8a460, mload(0x8a3c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8a400, 0x80, 0x8a400, 0x40), 1), success) +mstore(0x8a480, mload(0x3aa0)) + mstore(0x8a4a0, mload(0x3ac0)) +mstore(0x8a4c0, mload(0x58c20)) +success := and(eq(staticcall(gas(), 0x7, 0x8a480, 0x60, 0x8a480, 0x40), 1), success) +mstore(0x8a4e0, mload(0x8a400)) + mstore(0x8a500, mload(0x8a420)) +mstore(0x8a520, mload(0x8a480)) + mstore(0x8a540, mload(0x8a4a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8a4e0, 0x80, 0x8a4e0, 0x40), 1), success) +mstore(0x8a560, mload(0x3ae0)) + mstore(0x8a580, mload(0x3b00)) +mstore(0x8a5a0, mload(0x58c40)) +success := and(eq(staticcall(gas(), 0x7, 0x8a560, 0x60, 0x8a560, 0x40), 1), success) +mstore(0x8a5c0, mload(0x8a4e0)) + mstore(0x8a5e0, mload(0x8a500)) +mstore(0x8a600, mload(0x8a560)) + mstore(0x8a620, mload(0x8a580)) +success := and(eq(staticcall(gas(), 0x6, 0x8a5c0, 0x80, 0x8a5c0, 0x40), 1), success) +mstore(0x8a640, mload(0x3b20)) + mstore(0x8a660, mload(0x3b40)) +mstore(0x8a680, mload(0x58c60)) +success := and(eq(staticcall(gas(), 0x7, 0x8a640, 0x60, 0x8a640, 0x40), 1), success) +mstore(0x8a6a0, mload(0x8a5c0)) + mstore(0x8a6c0, mload(0x8a5e0)) +mstore(0x8a6e0, mload(0x8a640)) + mstore(0x8a700, mload(0x8a660)) +success := and(eq(staticcall(gas(), 0x6, 0x8a6a0, 0x80, 0x8a6a0, 0x40), 1), success) +mstore(0x8a720, mload(0x3b60)) + mstore(0x8a740, mload(0x3b80)) +mstore(0x8a760, mload(0x58c80)) +success := and(eq(staticcall(gas(), 0x7, 0x8a720, 0x60, 0x8a720, 0x40), 1), success) +mstore(0x8a780, mload(0x8a6a0)) + mstore(0x8a7a0, mload(0x8a6c0)) +mstore(0x8a7c0, mload(0x8a720)) + mstore(0x8a7e0, mload(0x8a740)) +success := and(eq(staticcall(gas(), 0x6, 0x8a780, 0x80, 0x8a780, 0x40), 1), success) +mstore(0x8a800, mload(0x3ba0)) + mstore(0x8a820, mload(0x3bc0)) +mstore(0x8a840, mload(0x58ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a800, 0x60, 0x8a800, 0x40), 1), success) +mstore(0x8a860, mload(0x8a780)) + mstore(0x8a880, mload(0x8a7a0)) +mstore(0x8a8a0, mload(0x8a800)) + mstore(0x8a8c0, mload(0x8a820)) +success := and(eq(staticcall(gas(), 0x6, 0x8a860, 0x80, 0x8a860, 0x40), 1), success) +mstore(0x8a8e0, mload(0x3be0)) + mstore(0x8a900, mload(0x3c00)) +mstore(0x8a920, mload(0x58cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a8e0, 0x60, 0x8a8e0, 0x40), 1), success) +mstore(0x8a940, mload(0x8a860)) + mstore(0x8a960, mload(0x8a880)) +mstore(0x8a980, mload(0x8a8e0)) + mstore(0x8a9a0, mload(0x8a900)) +success := and(eq(staticcall(gas(), 0x6, 0x8a940, 0x80, 0x8a940, 0x40), 1), success) +mstore(0x8a9c0, mload(0x3c20)) + mstore(0x8a9e0, mload(0x3c40)) +mstore(0x8aa00, mload(0x58ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x8a9c0, 0x60, 0x8a9c0, 0x40), 1), success) +mstore(0x8aa20, mload(0x8a940)) + mstore(0x8aa40, mload(0x8a960)) +mstore(0x8aa60, mload(0x8a9c0)) + mstore(0x8aa80, mload(0x8a9e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8aa20, 0x80, 0x8aa20, 0x40), 1), success) +mstore(0x8aaa0, mload(0x3c60)) + mstore(0x8aac0, mload(0x3c80)) +mstore(0x8aae0, mload(0x58d00)) +success := and(eq(staticcall(gas(), 0x7, 0x8aaa0, 0x60, 0x8aaa0, 0x40), 1), success) +mstore(0x8ab00, mload(0x8aa20)) + mstore(0x8ab20, mload(0x8aa40)) +mstore(0x8ab40, mload(0x8aaa0)) + mstore(0x8ab60, mload(0x8aac0)) +success := and(eq(staticcall(gas(), 0x6, 0x8ab00, 0x80, 0x8ab00, 0x40), 1), success) +mstore(0x8ab80, mload(0x3ca0)) + mstore(0x8aba0, mload(0x3cc0)) +mstore(0x8abc0, mload(0x58d20)) +success := and(eq(staticcall(gas(), 0x7, 0x8ab80, 0x60, 0x8ab80, 0x40), 1), success) +mstore(0x8abe0, mload(0x8ab00)) + mstore(0x8ac00, mload(0x8ab20)) +mstore(0x8ac20, mload(0x8ab80)) + mstore(0x8ac40, mload(0x8aba0)) +success := and(eq(staticcall(gas(), 0x6, 0x8abe0, 0x80, 0x8abe0, 0x40), 1), success) +mstore(0x8ac60, mload(0x3ce0)) + mstore(0x8ac80, mload(0x3d00)) +mstore(0x8aca0, mload(0x58d40)) +success := and(eq(staticcall(gas(), 0x7, 0x8ac60, 0x60, 0x8ac60, 0x40), 1), success) +mstore(0x8acc0, mload(0x8abe0)) + mstore(0x8ace0, mload(0x8ac00)) +mstore(0x8ad00, mload(0x8ac60)) + mstore(0x8ad20, mload(0x8ac80)) +success := and(eq(staticcall(gas(), 0x6, 0x8acc0, 0x80, 0x8acc0, 0x40), 1), success) +mstore(0x8ad40, mload(0x3d20)) + mstore(0x8ad60, mload(0x3d40)) +mstore(0x8ad80, mload(0x58d60)) +success := and(eq(staticcall(gas(), 0x7, 0x8ad40, 0x60, 0x8ad40, 0x40), 1), success) +mstore(0x8ada0, mload(0x8acc0)) + mstore(0x8adc0, mload(0x8ace0)) +mstore(0x8ade0, mload(0x8ad40)) + mstore(0x8ae00, mload(0x8ad60)) +success := and(eq(staticcall(gas(), 0x6, 0x8ada0, 0x80, 0x8ada0, 0x40), 1), success) +mstore(0x8ae20, mload(0x3d60)) + mstore(0x8ae40, mload(0x3d80)) +mstore(0x8ae60, mload(0x58d80)) +success := and(eq(staticcall(gas(), 0x7, 0x8ae20, 0x60, 0x8ae20, 0x40), 1), success) +mstore(0x8ae80, mload(0x8ada0)) + mstore(0x8aea0, mload(0x8adc0)) +mstore(0x8aec0, mload(0x8ae20)) + mstore(0x8aee0, mload(0x8ae40)) +success := and(eq(staticcall(gas(), 0x6, 0x8ae80, 0x80, 0x8ae80, 0x40), 1), success) +mstore(0x8af00, mload(0x3da0)) + mstore(0x8af20, mload(0x3dc0)) +mstore(0x8af40, mload(0x58da0)) +success := and(eq(staticcall(gas(), 0x7, 0x8af00, 0x60, 0x8af00, 0x40), 1), success) +mstore(0x8af60, mload(0x8ae80)) + mstore(0x8af80, mload(0x8aea0)) +mstore(0x8afa0, mload(0x8af00)) + mstore(0x8afc0, mload(0x8af20)) +success := and(eq(staticcall(gas(), 0x6, 0x8af60, 0x80, 0x8af60, 0x40), 1), success) +mstore(0x8afe0, mload(0x3de0)) + mstore(0x8b000, mload(0x3e00)) +mstore(0x8b020, mload(0x58dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x8afe0, 0x60, 0x8afe0, 0x40), 1), success) +mstore(0x8b040, mload(0x8af60)) + mstore(0x8b060, mload(0x8af80)) +mstore(0x8b080, mload(0x8afe0)) + mstore(0x8b0a0, mload(0x8b000)) +success := and(eq(staticcall(gas(), 0x6, 0x8b040, 0x80, 0x8b040, 0x40), 1), success) +mstore(0x8b0c0, mload(0x3e20)) + mstore(0x8b0e0, mload(0x3e40)) +mstore(0x8b100, mload(0x58de0)) +success := and(eq(staticcall(gas(), 0x7, 0x8b0c0, 0x60, 0x8b0c0, 0x40), 1), success) +mstore(0x8b120, mload(0x8b040)) + mstore(0x8b140, mload(0x8b060)) +mstore(0x8b160, mload(0x8b0c0)) + mstore(0x8b180, mload(0x8b0e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b120, 0x80, 0x8b120, 0x40), 1), success) +mstore(0x8b1a0, mload(0x3e60)) + mstore(0x8b1c0, mload(0x3e80)) +mstore(0x8b1e0, mload(0x58e00)) +success := and(eq(staticcall(gas(), 0x7, 0x8b1a0, 0x60, 0x8b1a0, 0x40), 1), success) +mstore(0x8b200, mload(0x8b120)) + mstore(0x8b220, mload(0x8b140)) +mstore(0x8b240, mload(0x8b1a0)) + mstore(0x8b260, mload(0x8b1c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b200, 0x80, 0x8b200, 0x40), 1), success) +mstore(0x8b280, mload(0x3ea0)) + mstore(0x8b2a0, mload(0x3ec0)) +mstore(0x8b2c0, mload(0x58e20)) +success := and(eq(staticcall(gas(), 0x7, 0x8b280, 0x60, 0x8b280, 0x40), 1), success) +mstore(0x8b2e0, mload(0x8b200)) + mstore(0x8b300, mload(0x8b220)) +mstore(0x8b320, mload(0x8b280)) + mstore(0x8b340, mload(0x8b2a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b2e0, 0x80, 0x8b2e0, 0x40), 1), success) +mstore(0x8b360, mload(0x3ee0)) + mstore(0x8b380, mload(0x3f00)) +mstore(0x8b3a0, mload(0x6ffa0)) +success := and(eq(staticcall(gas(), 0x7, 0x8b360, 0x60, 0x8b360, 0x40), 1), success) +mstore(0x8b3c0, mload(0x8b2e0)) + mstore(0x8b3e0, mload(0x8b300)) +mstore(0x8b400, mload(0x8b360)) + mstore(0x8b420, mload(0x8b380)) +success := and(eq(staticcall(gas(), 0x6, 0x8b3c0, 0x80, 0x8b3c0, 0x40), 1), success) +mstore(0x8b440, mload(0x3f20)) + mstore(0x8b460, mload(0x3f40)) +mstore(0x8b480, mload(0x6ffc0)) +success := and(eq(staticcall(gas(), 0x7, 0x8b440, 0x60, 0x8b440, 0x40), 1), success) +mstore(0x8b4a0, mload(0x8b3c0)) + mstore(0x8b4c0, mload(0x8b3e0)) +mstore(0x8b4e0, mload(0x8b440)) + mstore(0x8b500, mload(0x8b460)) +success := and(eq(staticcall(gas(), 0x6, 0x8b4a0, 0x80, 0x8b4a0, 0x40), 1), success) +mstore(0x8b520, mload(0x3f60)) + mstore(0x8b540, mload(0x3f80)) +mstore(0x8b560, mload(0x6ffe0)) +success := and(eq(staticcall(gas(), 0x7, 0x8b520, 0x60, 0x8b520, 0x40), 1), success) +mstore(0x8b580, mload(0x8b4a0)) + mstore(0x8b5a0, mload(0x8b4c0)) +mstore(0x8b5c0, mload(0x8b520)) + mstore(0x8b5e0, mload(0x8b540)) +success := and(eq(staticcall(gas(), 0x6, 0x8b580, 0x80, 0x8b580, 0x40), 1), success) +mstore(0x8b600, mload(0x3fa0)) + mstore(0x8b620, mload(0x3fc0)) +mstore(0x8b640, mload(0x70000)) +success := and(eq(staticcall(gas(), 0x7, 0x8b600, 0x60, 0x8b600, 0x40), 1), success) +mstore(0x8b660, mload(0x8b580)) + mstore(0x8b680, mload(0x8b5a0)) +mstore(0x8b6a0, mload(0x8b600)) + mstore(0x8b6c0, mload(0x8b620)) +success := and(eq(staticcall(gas(), 0x6, 0x8b660, 0x80, 0x8b660, 0x40), 1), success) +mstore(0x8b6e0, mload(0x3fe0)) + mstore(0x8b700, mload(0x4000)) +mstore(0x8b720, mload(0x70020)) +success := and(eq(staticcall(gas(), 0x7, 0x8b6e0, 0x60, 0x8b6e0, 0x40), 1), success) +mstore(0x8b740, mload(0x8b660)) + mstore(0x8b760, mload(0x8b680)) +mstore(0x8b780, mload(0x8b6e0)) + mstore(0x8b7a0, mload(0x8b700)) +success := and(eq(staticcall(gas(), 0x6, 0x8b740, 0x80, 0x8b740, 0x40), 1), success) +mstore(0x8b7c0, mload(0x4020)) + mstore(0x8b7e0, mload(0x4040)) +mstore(0x8b800, mload(0x70040)) +success := and(eq(staticcall(gas(), 0x7, 0x8b7c0, 0x60, 0x8b7c0, 0x40), 1), success) +mstore(0x8b820, mload(0x8b740)) + mstore(0x8b840, mload(0x8b760)) +mstore(0x8b860, mload(0x8b7c0)) + mstore(0x8b880, mload(0x8b7e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b820, 0x80, 0x8b820, 0x40), 1), success) +mstore(0x8b8a0, mload(0x4060)) + mstore(0x8b8c0, mload(0x4080)) +mstore(0x8b8e0, mload(0x70060)) +success := and(eq(staticcall(gas(), 0x7, 0x8b8a0, 0x60, 0x8b8a0, 0x40), 1), success) +mstore(0x8b900, mload(0x8b820)) + mstore(0x8b920, mload(0x8b840)) +mstore(0x8b940, mload(0x8b8a0)) + mstore(0x8b960, mload(0x8b8c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b900, 0x80, 0x8b900, 0x40), 1), success) +mstore(0x8b980, mload(0x40a0)) + mstore(0x8b9a0, mload(0x40c0)) +mstore(0x8b9c0, mload(0x70080)) +success := and(eq(staticcall(gas(), 0x7, 0x8b980, 0x60, 0x8b980, 0x40), 1), success) +mstore(0x8b9e0, mload(0x8b900)) + mstore(0x8ba00, mload(0x8b920)) +mstore(0x8ba20, mload(0x8b980)) + mstore(0x8ba40, mload(0x8b9a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8b9e0, 0x80, 0x8b9e0, 0x40), 1), success) +mstore(0x8ba60, mload(0x40e0)) + mstore(0x8ba80, mload(0x4100)) +mstore(0x8baa0, mload(0x700a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8ba60, 0x60, 0x8ba60, 0x40), 1), success) +mstore(0x8bac0, mload(0x8b9e0)) + mstore(0x8bae0, mload(0x8ba00)) +mstore(0x8bb00, mload(0x8ba60)) + mstore(0x8bb20, mload(0x8ba80)) +success := and(eq(staticcall(gas(), 0x6, 0x8bac0, 0x80, 0x8bac0, 0x40), 1), success) +mstore(0x8bb40, mload(0x4120)) + mstore(0x8bb60, mload(0x4140)) +mstore(0x8bb80, mload(0x700c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8bb40, 0x60, 0x8bb40, 0x40), 1), success) +mstore(0x8bba0, mload(0x8bac0)) + mstore(0x8bbc0, mload(0x8bae0)) +mstore(0x8bbe0, mload(0x8bb40)) + mstore(0x8bc00, mload(0x8bb60)) +success := and(eq(staticcall(gas(), 0x6, 0x8bba0, 0x80, 0x8bba0, 0x40), 1), success) +mstore(0x8bc20, mload(0x4160)) + mstore(0x8bc40, mload(0x4180)) +mstore(0x8bc60, mload(0x700e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8bc20, 0x60, 0x8bc20, 0x40), 1), success) +mstore(0x8bc80, mload(0x8bba0)) + mstore(0x8bca0, mload(0x8bbc0)) +mstore(0x8bcc0, mload(0x8bc20)) + mstore(0x8bce0, mload(0x8bc40)) +success := and(eq(staticcall(gas(), 0x6, 0x8bc80, 0x80, 0x8bc80, 0x40), 1), success) +mstore(0x8bd00, mload(0x41a0)) + mstore(0x8bd20, mload(0x41c0)) +mstore(0x8bd40, mload(0x70100)) +success := and(eq(staticcall(gas(), 0x7, 0x8bd00, 0x60, 0x8bd00, 0x40), 1), success) +mstore(0x8bd60, mload(0x8bc80)) + mstore(0x8bd80, mload(0x8bca0)) +mstore(0x8bda0, mload(0x8bd00)) + mstore(0x8bdc0, mload(0x8bd20)) +success := and(eq(staticcall(gas(), 0x6, 0x8bd60, 0x80, 0x8bd60, 0x40), 1), success) +mstore(0x8bde0, mload(0x41e0)) + mstore(0x8be00, mload(0x4200)) +mstore(0x8be20, mload(0x70120)) +success := and(eq(staticcall(gas(), 0x7, 0x8bde0, 0x60, 0x8bde0, 0x40), 1), success) +mstore(0x8be40, mload(0x8bd60)) + mstore(0x8be60, mload(0x8bd80)) +mstore(0x8be80, mload(0x8bde0)) + mstore(0x8bea0, mload(0x8be00)) +success := and(eq(staticcall(gas(), 0x6, 0x8be40, 0x80, 0x8be40, 0x40), 1), success) +mstore(0x8bec0, mload(0x4220)) + mstore(0x8bee0, mload(0x4240)) +mstore(0x8bf00, mload(0x70140)) +success := and(eq(staticcall(gas(), 0x7, 0x8bec0, 0x60, 0x8bec0, 0x40), 1), success) +mstore(0x8bf20, mload(0x8be40)) + mstore(0x8bf40, mload(0x8be60)) +mstore(0x8bf60, mload(0x8bec0)) + mstore(0x8bf80, mload(0x8bee0)) +success := and(eq(staticcall(gas(), 0x6, 0x8bf20, 0x80, 0x8bf20, 0x40), 1), success) +mstore(0x8bfa0, mload(0x4260)) + mstore(0x8bfc0, mload(0x4280)) +mstore(0x8bfe0, mload(0x70160)) +success := and(eq(staticcall(gas(), 0x7, 0x8bfa0, 0x60, 0x8bfa0, 0x40), 1), success) +mstore(0x8c000, mload(0x8bf20)) + mstore(0x8c020, mload(0x8bf40)) +mstore(0x8c040, mload(0x8bfa0)) + mstore(0x8c060, mload(0x8bfc0)) +success := and(eq(staticcall(gas(), 0x6, 0x8c000, 0x80, 0x8c000, 0x40), 1), success) +mstore(0x8c080, mload(0x42a0)) + mstore(0x8c0a0, mload(0x42c0)) +mstore(0x8c0c0, mload(0x70180)) +success := and(eq(staticcall(gas(), 0x7, 0x8c080, 0x60, 0x8c080, 0x40), 1), success) +mstore(0x8c0e0, mload(0x8c000)) + mstore(0x8c100, mload(0x8c020)) +mstore(0x8c120, mload(0x8c080)) + mstore(0x8c140, mload(0x8c0a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8c0e0, 0x80, 0x8c0e0, 0x40), 1), success) +mstore(0x8c160, mload(0x42e0)) + mstore(0x8c180, mload(0x4300)) +mstore(0x8c1a0, mload(0x701a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8c160, 0x60, 0x8c160, 0x40), 1), success) +mstore(0x8c1c0, mload(0x8c0e0)) + mstore(0x8c1e0, mload(0x8c100)) +mstore(0x8c200, mload(0x8c160)) + mstore(0x8c220, mload(0x8c180)) +success := and(eq(staticcall(gas(), 0x6, 0x8c1c0, 0x80, 0x8c1c0, 0x40), 1), success) +mstore(0x8c240, mload(0x4320)) + mstore(0x8c260, mload(0x4340)) +mstore(0x8c280, mload(0x701c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8c240, 0x60, 0x8c240, 0x40), 1), success) +mstore(0x8c2a0, mload(0x8c1c0)) + mstore(0x8c2c0, mload(0x8c1e0)) +mstore(0x8c2e0, mload(0x8c240)) + mstore(0x8c300, mload(0x8c260)) +success := and(eq(staticcall(gas(), 0x6, 0x8c2a0, 0x80, 0x8c2a0, 0x40), 1), success) +mstore(0x8c320, mload(0x4360)) + mstore(0x8c340, mload(0x4380)) +mstore(0x8c360, mload(0x701e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8c320, 0x60, 0x8c320, 0x40), 1), success) +mstore(0x8c380, mload(0x8c2a0)) + mstore(0x8c3a0, mload(0x8c2c0)) +mstore(0x8c3c0, mload(0x8c320)) + mstore(0x8c3e0, mload(0x8c340)) +success := and(eq(staticcall(gas(), 0x6, 0x8c380, 0x80, 0x8c380, 0x40), 1), success) +mstore(0x8c400, mload(0x43a0)) + mstore(0x8c420, mload(0x43c0)) +mstore(0x8c440, mload(0x70200)) +success := and(eq(staticcall(gas(), 0x7, 0x8c400, 0x60, 0x8c400, 0x40), 1), success) +mstore(0x8c460, mload(0x8c380)) + mstore(0x8c480, mload(0x8c3a0)) +mstore(0x8c4a0, mload(0x8c400)) + mstore(0x8c4c0, mload(0x8c420)) +success := and(eq(staticcall(gas(), 0x6, 0x8c460, 0x80, 0x8c460, 0x40), 1), success) +mstore(0x8c4e0, mload(0x43e0)) + mstore(0x8c500, mload(0x4400)) +mstore(0x8c520, mload(0x70220)) +success := and(eq(staticcall(gas(), 0x7, 0x8c4e0, 0x60, 0x8c4e0, 0x40), 1), success) +mstore(0x8c540, mload(0x8c460)) + mstore(0x8c560, mload(0x8c480)) +mstore(0x8c580, mload(0x8c4e0)) + mstore(0x8c5a0, mload(0x8c500)) +success := and(eq(staticcall(gas(), 0x6, 0x8c540, 0x80, 0x8c540, 0x40), 1), success) +mstore(0x8c5c0, mload(0x4420)) + mstore(0x8c5e0, mload(0x4440)) +mstore(0x8c600, mload(0x70240)) +success := and(eq(staticcall(gas(), 0x7, 0x8c5c0, 0x60, 0x8c5c0, 0x40), 1), success) +mstore(0x8c620, mload(0x8c540)) + mstore(0x8c640, mload(0x8c560)) +mstore(0x8c660, mload(0x8c5c0)) + mstore(0x8c680, mload(0x8c5e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8c620, 0x80, 0x8c620, 0x40), 1), success) +mstore(0x8c6a0, mload(0x4460)) + mstore(0x8c6c0, mload(0x4480)) +mstore(0x8c6e0, mload(0x70260)) +success := and(eq(staticcall(gas(), 0x7, 0x8c6a0, 0x60, 0x8c6a0, 0x40), 1), success) +mstore(0x8c700, mload(0x8c620)) + mstore(0x8c720, mload(0x8c640)) +mstore(0x8c740, mload(0x8c6a0)) + mstore(0x8c760, mload(0x8c6c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8c700, 0x80, 0x8c700, 0x40), 1), success) +mstore(0x8c780, mload(0x44a0)) + mstore(0x8c7a0, mload(0x44c0)) +mstore(0x8c7c0, mload(0x70280)) +success := and(eq(staticcall(gas(), 0x7, 0x8c780, 0x60, 0x8c780, 0x40), 1), success) +mstore(0x8c7e0, mload(0x8c700)) + mstore(0x8c800, mload(0x8c720)) +mstore(0x8c820, mload(0x8c780)) + mstore(0x8c840, mload(0x8c7a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8c7e0, 0x80, 0x8c7e0, 0x40), 1), success) +mstore(0x8c860, mload(0x44e0)) + mstore(0x8c880, mload(0x4500)) +mstore(0x8c8a0, mload(0x702a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8c860, 0x60, 0x8c860, 0x40), 1), success) +mstore(0x8c8c0, mload(0x8c7e0)) + mstore(0x8c8e0, mload(0x8c800)) +mstore(0x8c900, mload(0x8c860)) + mstore(0x8c920, mload(0x8c880)) +success := and(eq(staticcall(gas(), 0x6, 0x8c8c0, 0x80, 0x8c8c0, 0x40), 1), success) +mstore(0x8c940, mload(0x4520)) + mstore(0x8c960, mload(0x4540)) +mstore(0x8c980, mload(0x702c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8c940, 0x60, 0x8c940, 0x40), 1), success) +mstore(0x8c9a0, mload(0x8c8c0)) + mstore(0x8c9c0, mload(0x8c8e0)) +mstore(0x8c9e0, mload(0x8c940)) + mstore(0x8ca00, mload(0x8c960)) +success := and(eq(staticcall(gas(), 0x6, 0x8c9a0, 0x80, 0x8c9a0, 0x40), 1), success) +mstore(0x8ca20, mload(0x4560)) + mstore(0x8ca40, mload(0x4580)) +mstore(0x8ca60, mload(0x702e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8ca20, 0x60, 0x8ca20, 0x40), 1), success) +mstore(0x8ca80, mload(0x8c9a0)) + mstore(0x8caa0, mload(0x8c9c0)) +mstore(0x8cac0, mload(0x8ca20)) + mstore(0x8cae0, mload(0x8ca40)) +success := and(eq(staticcall(gas(), 0x6, 0x8ca80, 0x80, 0x8ca80, 0x40), 1), success) +mstore(0x8cb00, mload(0x45a0)) + mstore(0x8cb20, mload(0x45c0)) +mstore(0x8cb40, mload(0x70300)) +success := and(eq(staticcall(gas(), 0x7, 0x8cb00, 0x60, 0x8cb00, 0x40), 1), success) +mstore(0x8cb60, mload(0x8ca80)) + mstore(0x8cb80, mload(0x8caa0)) +mstore(0x8cba0, mload(0x8cb00)) + mstore(0x8cbc0, mload(0x8cb20)) +success := and(eq(staticcall(gas(), 0x6, 0x8cb60, 0x80, 0x8cb60, 0x40), 1), success) +mstore(0x8cbe0, mload(0x45e0)) + mstore(0x8cc00, mload(0x4600)) +mstore(0x8cc20, mload(0x70320)) +success := and(eq(staticcall(gas(), 0x7, 0x8cbe0, 0x60, 0x8cbe0, 0x40), 1), success) +mstore(0x8cc40, mload(0x8cb60)) + mstore(0x8cc60, mload(0x8cb80)) +mstore(0x8cc80, mload(0x8cbe0)) + mstore(0x8cca0, mload(0x8cc00)) +success := and(eq(staticcall(gas(), 0x6, 0x8cc40, 0x80, 0x8cc40, 0x40), 1), success) +mstore(0x8ccc0, mload(0x46c0)) + mstore(0x8cce0, mload(0x46e0)) +mstore(0x8cd00, mload(0x70340)) +success := and(eq(staticcall(gas(), 0x7, 0x8ccc0, 0x60, 0x8ccc0, 0x40), 1), success) +mstore(0x8cd20, mload(0x8cc40)) + mstore(0x8cd40, mload(0x8cc60)) +mstore(0x8cd60, mload(0x8ccc0)) + mstore(0x8cd80, mload(0x8cce0)) +success := and(eq(staticcall(gas(), 0x6, 0x8cd20, 0x80, 0x8cd20, 0x40), 1), success) +mstore(0x8cda0, mload(0x4740)) + mstore(0x8cdc0, mload(0x4760)) +mstore(0x8cde0, mload(0x70360)) +success := and(eq(staticcall(gas(), 0x7, 0x8cda0, 0x60, 0x8cda0, 0x40), 1), success) +mstore(0x8ce00, mload(0x8cd20)) + mstore(0x8ce20, mload(0x8cd40)) +mstore(0x8ce40, mload(0x8cda0)) + mstore(0x8ce60, mload(0x8cdc0)) +success := and(eq(staticcall(gas(), 0x6, 0x8ce00, 0x80, 0x8ce00, 0x40), 1), success) +mstore(0x8ce80, mload(0x47c0)) + mstore(0x8cea0, mload(0x47e0)) +mstore(0x8cec0, mload(0x70380)) +success := and(eq(staticcall(gas(), 0x7, 0x8ce80, 0x60, 0x8ce80, 0x40), 1), success) +mstore(0x8cee0, mload(0x8ce00)) + mstore(0x8cf00, mload(0x8ce20)) +mstore(0x8cf20, mload(0x8ce80)) + mstore(0x8cf40, mload(0x8cea0)) +success := and(eq(staticcall(gas(), 0x6, 0x8cee0, 0x80, 0x8cee0, 0x40), 1), success) +mstore(0x8cf60, mload(0x4840)) + mstore(0x8cf80, mload(0x4860)) +mstore(0x8cfa0, mload(0x703a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8cf60, 0x60, 0x8cf60, 0x40), 1), success) +mstore(0x8cfc0, mload(0x8cee0)) + mstore(0x8cfe0, mload(0x8cf00)) +mstore(0x8d000, mload(0x8cf60)) + mstore(0x8d020, mload(0x8cf80)) +success := and(eq(staticcall(gas(), 0x6, 0x8cfc0, 0x80, 0x8cfc0, 0x40), 1), success) +mstore(0x8d040, mload(0x48c0)) + mstore(0x8d060, mload(0x48e0)) +mstore(0x8d080, mload(0x703c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8d040, 0x60, 0x8d040, 0x40), 1), success) +mstore(0x8d0a0, mload(0x8cfc0)) + mstore(0x8d0c0, mload(0x8cfe0)) +mstore(0x8d0e0, mload(0x8d040)) + mstore(0x8d100, mload(0x8d060)) +success := and(eq(staticcall(gas(), 0x6, 0x8d0a0, 0x80, 0x8d0a0, 0x40), 1), success) +mstore(0x8d120, mload(0x4940)) + mstore(0x8d140, mload(0x4960)) +mstore(0x8d160, mload(0x703e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8d120, 0x60, 0x8d120, 0x40), 1), success) +mstore(0x8d180, mload(0x8d0a0)) + mstore(0x8d1a0, mload(0x8d0c0)) +mstore(0x8d1c0, mload(0x8d120)) + mstore(0x8d1e0, mload(0x8d140)) +success := and(eq(staticcall(gas(), 0x6, 0x8d180, 0x80, 0x8d180, 0x40), 1), success) +mstore(0x8d200, mload(0x49c0)) + mstore(0x8d220, mload(0x49e0)) +mstore(0x8d240, mload(0x70400)) +success := and(eq(staticcall(gas(), 0x7, 0x8d200, 0x60, 0x8d200, 0x40), 1), success) +mstore(0x8d260, mload(0x8d180)) + mstore(0x8d280, mload(0x8d1a0)) +mstore(0x8d2a0, mload(0x8d200)) + mstore(0x8d2c0, mload(0x8d220)) +success := and(eq(staticcall(gas(), 0x6, 0x8d260, 0x80, 0x8d260, 0x40), 1), success) +mstore(0x8d2e0, mload(0x4a40)) + mstore(0x8d300, mload(0x4a60)) +mstore(0x8d320, mload(0x70420)) +success := and(eq(staticcall(gas(), 0x7, 0x8d2e0, 0x60, 0x8d2e0, 0x40), 1), success) +mstore(0x8d340, mload(0x8d260)) + mstore(0x8d360, mload(0x8d280)) +mstore(0x8d380, mload(0x8d2e0)) + mstore(0x8d3a0, mload(0x8d300)) +success := and(eq(staticcall(gas(), 0x6, 0x8d340, 0x80, 0x8d340, 0x40), 1), success) +mstore(0x8d3c0, mload(0x4ac0)) + mstore(0x8d3e0, mload(0x4ae0)) +mstore(0x8d400, mload(0x70440)) +success := and(eq(staticcall(gas(), 0x7, 0x8d3c0, 0x60, 0x8d3c0, 0x40), 1), success) +mstore(0x8d420, mload(0x8d340)) + mstore(0x8d440, mload(0x8d360)) +mstore(0x8d460, mload(0x8d3c0)) + mstore(0x8d480, mload(0x8d3e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8d420, 0x80, 0x8d420, 0x40), 1), success) +mstore(0x8d4a0, mload(0x4b40)) + mstore(0x8d4c0, mload(0x4b60)) +mstore(0x8d4e0, mload(0x70460)) +success := and(eq(staticcall(gas(), 0x7, 0x8d4a0, 0x60, 0x8d4a0, 0x40), 1), success) +mstore(0x8d500, mload(0x8d420)) + mstore(0x8d520, mload(0x8d440)) +mstore(0x8d540, mload(0x8d4a0)) + mstore(0x8d560, mload(0x8d4c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8d500, 0x80, 0x8d500, 0x40), 1), success) +mstore(0x8d580, mload(0x4bc0)) + mstore(0x8d5a0, mload(0x4be0)) +mstore(0x8d5c0, mload(0x70480)) +success := and(eq(staticcall(gas(), 0x7, 0x8d580, 0x60, 0x8d580, 0x40), 1), success) +mstore(0x8d5e0, mload(0x8d500)) + mstore(0x8d600, mload(0x8d520)) +mstore(0x8d620, mload(0x8d580)) + mstore(0x8d640, mload(0x8d5a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8d5e0, 0x80, 0x8d5e0, 0x40), 1), success) +mstore(0x8d660, mload(0x4c40)) + mstore(0x8d680, mload(0x4c60)) +mstore(0x8d6a0, mload(0x704a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8d660, 0x60, 0x8d660, 0x40), 1), success) +mstore(0x8d6c0, mload(0x8d5e0)) + mstore(0x8d6e0, mload(0x8d600)) +mstore(0x8d700, mload(0x8d660)) + mstore(0x8d720, mload(0x8d680)) +success := and(eq(staticcall(gas(), 0x6, 0x8d6c0, 0x80, 0x8d6c0, 0x40), 1), success) +mstore(0x8d740, mload(0x4cc0)) + mstore(0x8d760, mload(0x4ce0)) +mstore(0x8d780, mload(0x704c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8d740, 0x60, 0x8d740, 0x40), 1), success) +mstore(0x8d7a0, mload(0x8d6c0)) + mstore(0x8d7c0, mload(0x8d6e0)) +mstore(0x8d7e0, mload(0x8d740)) + mstore(0x8d800, mload(0x8d760)) +success := and(eq(staticcall(gas(), 0x6, 0x8d7a0, 0x80, 0x8d7a0, 0x40), 1), success) +mstore(0x8d820, mload(0x4d40)) + mstore(0x8d840, mload(0x4d60)) +mstore(0x8d860, mload(0x704e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8d820, 0x60, 0x8d820, 0x40), 1), success) +mstore(0x8d880, mload(0x8d7a0)) + mstore(0x8d8a0, mload(0x8d7c0)) +mstore(0x8d8c0, mload(0x8d820)) + mstore(0x8d8e0, mload(0x8d840)) +success := and(eq(staticcall(gas(), 0x6, 0x8d880, 0x80, 0x8d880, 0x40), 1), success) +mstore(0x8d900, mload(0x4dc0)) + mstore(0x8d920, mload(0x4de0)) +mstore(0x8d940, mload(0x70500)) +success := and(eq(staticcall(gas(), 0x7, 0x8d900, 0x60, 0x8d900, 0x40), 1), success) +mstore(0x8d960, mload(0x8d880)) + mstore(0x8d980, mload(0x8d8a0)) +mstore(0x8d9a0, mload(0x8d900)) + mstore(0x8d9c0, mload(0x8d920)) +success := and(eq(staticcall(gas(), 0x6, 0x8d960, 0x80, 0x8d960, 0x40), 1), success) +mstore(0x8d9e0, mload(0x4e40)) + mstore(0x8da00, mload(0x4e60)) +mstore(0x8da20, mload(0x70520)) +success := and(eq(staticcall(gas(), 0x7, 0x8d9e0, 0x60, 0x8d9e0, 0x40), 1), success) +mstore(0x8da40, mload(0x8d960)) + mstore(0x8da60, mload(0x8d980)) +mstore(0x8da80, mload(0x8d9e0)) + mstore(0x8daa0, mload(0x8da00)) +success := and(eq(staticcall(gas(), 0x6, 0x8da40, 0x80, 0x8da40, 0x40), 1), success) +mstore(0x8dac0, mload(0x4ec0)) + mstore(0x8dae0, mload(0x4ee0)) +mstore(0x8db00, mload(0x70540)) +success := and(eq(staticcall(gas(), 0x7, 0x8dac0, 0x60, 0x8dac0, 0x40), 1), success) +mstore(0x8db20, mload(0x8da40)) + mstore(0x8db40, mload(0x8da60)) +mstore(0x8db60, mload(0x8dac0)) + mstore(0x8db80, mload(0x8dae0)) +success := and(eq(staticcall(gas(), 0x6, 0x8db20, 0x80, 0x8db20, 0x40), 1), success) +mstore(0x8dba0, mload(0x4f40)) + mstore(0x8dbc0, mload(0x4f60)) +mstore(0x8dbe0, mload(0x70560)) +success := and(eq(staticcall(gas(), 0x7, 0x8dba0, 0x60, 0x8dba0, 0x40), 1), success) +mstore(0x8dc00, mload(0x8db20)) + mstore(0x8dc20, mload(0x8db40)) +mstore(0x8dc40, mload(0x8dba0)) + mstore(0x8dc60, mload(0x8dbc0)) +success := and(eq(staticcall(gas(), 0x6, 0x8dc00, 0x80, 0x8dc00, 0x40), 1), success) +mstore(0x8dc80, mload(0x4fc0)) + mstore(0x8dca0, mload(0x4fe0)) +mstore(0x8dcc0, mload(0x70580)) +success := and(eq(staticcall(gas(), 0x7, 0x8dc80, 0x60, 0x8dc80, 0x40), 1), success) +mstore(0x8dce0, mload(0x8dc00)) + mstore(0x8dd00, mload(0x8dc20)) +mstore(0x8dd20, mload(0x8dc80)) + mstore(0x8dd40, mload(0x8dca0)) +success := and(eq(staticcall(gas(), 0x6, 0x8dce0, 0x80, 0x8dce0, 0x40), 1), success) +mstore(0x8dd60, mload(0x5040)) + mstore(0x8dd80, mload(0x5060)) +mstore(0x8dda0, mload(0x705a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8dd60, 0x60, 0x8dd60, 0x40), 1), success) +mstore(0x8ddc0, mload(0x8dce0)) + mstore(0x8dde0, mload(0x8dd00)) +mstore(0x8de00, mload(0x8dd60)) + mstore(0x8de20, mload(0x8dd80)) +success := and(eq(staticcall(gas(), 0x6, 0x8ddc0, 0x80, 0x8ddc0, 0x40), 1), success) +mstore(0x8de40, mload(0x50c0)) + mstore(0x8de60, mload(0x50e0)) +mstore(0x8de80, mload(0x705c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8de40, 0x60, 0x8de40, 0x40), 1), success) +mstore(0x8dea0, mload(0x8ddc0)) + mstore(0x8dec0, mload(0x8dde0)) +mstore(0x8dee0, mload(0x8de40)) + mstore(0x8df00, mload(0x8de60)) +success := and(eq(staticcall(gas(), 0x6, 0x8dea0, 0x80, 0x8dea0, 0x40), 1), success) +mstore(0x8df20, mload(0x5140)) + mstore(0x8df40, mload(0x5160)) +mstore(0x8df60, mload(0x705e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8df20, 0x60, 0x8df20, 0x40), 1), success) +mstore(0x8df80, mload(0x8dea0)) + mstore(0x8dfa0, mload(0x8dec0)) +mstore(0x8dfc0, mload(0x8df20)) + mstore(0x8dfe0, mload(0x8df40)) +success := and(eq(staticcall(gas(), 0x6, 0x8df80, 0x80, 0x8df80, 0x40), 1), success) +mstore(0x8e000, mload(0x51c0)) + mstore(0x8e020, mload(0x51e0)) +mstore(0x8e040, mload(0x70600)) +success := and(eq(staticcall(gas(), 0x7, 0x8e000, 0x60, 0x8e000, 0x40), 1), success) +mstore(0x8e060, mload(0x8df80)) + mstore(0x8e080, mload(0x8dfa0)) +mstore(0x8e0a0, mload(0x8e000)) + mstore(0x8e0c0, mload(0x8e020)) +success := and(eq(staticcall(gas(), 0x6, 0x8e060, 0x80, 0x8e060, 0x40), 1), success) +mstore(0x8e0e0, mload(0x5240)) + mstore(0x8e100, mload(0x5260)) +mstore(0x8e120, mload(0x70620)) +success := and(eq(staticcall(gas(), 0x7, 0x8e0e0, 0x60, 0x8e0e0, 0x40), 1), success) +mstore(0x8e140, mload(0x8e060)) + mstore(0x8e160, mload(0x8e080)) +mstore(0x8e180, mload(0x8e0e0)) + mstore(0x8e1a0, mload(0x8e100)) +success := and(eq(staticcall(gas(), 0x6, 0x8e140, 0x80, 0x8e140, 0x40), 1), success) +mstore(0x8e1c0, mload(0x52c0)) + mstore(0x8e1e0, mload(0x52e0)) +mstore(0x8e200, mload(0x70640)) +success := and(eq(staticcall(gas(), 0x7, 0x8e1c0, 0x60, 0x8e1c0, 0x40), 1), success) +mstore(0x8e220, mload(0x8e140)) + mstore(0x8e240, mload(0x8e160)) +mstore(0x8e260, mload(0x8e1c0)) + mstore(0x8e280, mload(0x8e1e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8e220, 0x80, 0x8e220, 0x40), 1), success) +mstore(0x8e2a0, mload(0x5340)) + mstore(0x8e2c0, mload(0x5360)) +mstore(0x8e2e0, mload(0x70660)) +success := and(eq(staticcall(gas(), 0x7, 0x8e2a0, 0x60, 0x8e2a0, 0x40), 1), success) +mstore(0x8e300, mload(0x8e220)) + mstore(0x8e320, mload(0x8e240)) +mstore(0x8e340, mload(0x8e2a0)) + mstore(0x8e360, mload(0x8e2c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8e300, 0x80, 0x8e300, 0x40), 1), success) +mstore(0x8e380, mload(0x53c0)) + mstore(0x8e3a0, mload(0x53e0)) +mstore(0x8e3c0, mload(0x70680)) +success := and(eq(staticcall(gas(), 0x7, 0x8e380, 0x60, 0x8e380, 0x40), 1), success) +mstore(0x8e3e0, mload(0x8e300)) + mstore(0x8e400, mload(0x8e320)) +mstore(0x8e420, mload(0x8e380)) + mstore(0x8e440, mload(0x8e3a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8e3e0, 0x80, 0x8e3e0, 0x40), 1), success) +mstore(0x8e460, mload(0x5440)) + mstore(0x8e480, mload(0x5460)) +mstore(0x8e4a0, mload(0x706a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8e460, 0x60, 0x8e460, 0x40), 1), success) +mstore(0x8e4c0, mload(0x8e3e0)) + mstore(0x8e4e0, mload(0x8e400)) +mstore(0x8e500, mload(0x8e460)) + mstore(0x8e520, mload(0x8e480)) +success := and(eq(staticcall(gas(), 0x6, 0x8e4c0, 0x80, 0x8e4c0, 0x40), 1), success) +mstore(0x8e540, mload(0x54c0)) + mstore(0x8e560, mload(0x54e0)) +mstore(0x8e580, mload(0x706c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8e540, 0x60, 0x8e540, 0x40), 1), success) +mstore(0x8e5a0, mload(0x8e4c0)) + mstore(0x8e5c0, mload(0x8e4e0)) +mstore(0x8e5e0, mload(0x8e540)) + mstore(0x8e600, mload(0x8e560)) +success := and(eq(staticcall(gas(), 0x6, 0x8e5a0, 0x80, 0x8e5a0, 0x40), 1), success) +mstore(0x8e620, 0x20acdbbb23a258926afc5df215bb324f68933de3476940b11489f86e4aae3eea) + mstore(0x8e640, 0x1b25e925281b9a461927ac858c9e9bc6c99f72c4547c528fecc45168e8d762a1) +mstore(0x8e660, mload(0x706e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8e620, 0x60, 0x8e620, 0x40), 1), success) +mstore(0x8e680, mload(0x8e5a0)) + mstore(0x8e6a0, mload(0x8e5c0)) +mstore(0x8e6c0, mload(0x8e620)) + mstore(0x8e6e0, mload(0x8e640)) +success := and(eq(staticcall(gas(), 0x6, 0x8e680, 0x80, 0x8e680, 0x40), 1), success) +mstore(0x8e700, 0x1b53cb83be74ea42b82beeefb91f3576e04b02c898ca5cdaacf83c505075a00b) + mstore(0x8e720, 0x09e31d42c1d78633cd45b2dda2d79ebe591d6004266b32fe12441f246e176f32) +mstore(0x8e740, mload(0x70700)) +success := and(eq(staticcall(gas(), 0x7, 0x8e700, 0x60, 0x8e700, 0x40), 1), success) +mstore(0x8e760, mload(0x8e680)) + mstore(0x8e780, mload(0x8e6a0)) +mstore(0x8e7a0, mload(0x8e700)) + mstore(0x8e7c0, mload(0x8e720)) +success := and(eq(staticcall(gas(), 0x6, 0x8e760, 0x80, 0x8e760, 0x40), 1), success) +mstore(0x8e7e0, 0x043bb0c51fe0772016842fbc03735562397e3b814d55aad1b964ae13cd797346) + mstore(0x8e800, 0x05d6ceedba9bb7fa89f2a33019fc74dc20e1676d9b60ada155a7442792e62b42) +mstore(0x8e820, mload(0x70720)) +success := and(eq(staticcall(gas(), 0x7, 0x8e7e0, 0x60, 0x8e7e0, 0x40), 1), success) +mstore(0x8e840, mload(0x8e760)) + mstore(0x8e860, mload(0x8e780)) +mstore(0x8e880, mload(0x8e7e0)) + mstore(0x8e8a0, mload(0x8e800)) +success := and(eq(staticcall(gas(), 0x6, 0x8e840, 0x80, 0x8e840, 0x40), 1), success) +mstore(0x8e8c0, 0x0146b7bddde69dc2bb696516ecf916b9d805a62100339f74446375d1e5ddf6e8) + mstore(0x8e8e0, 0x1f8ffc5efb12eb37397a3191bef53436aff8e310700d2bc730ae13721fd3ddaf) +mstore(0x8e900, mload(0x70740)) +success := and(eq(staticcall(gas(), 0x7, 0x8e8c0, 0x60, 0x8e8c0, 0x40), 1), success) +mstore(0x8e920, mload(0x8e840)) + mstore(0x8e940, mload(0x8e860)) +mstore(0x8e960, mload(0x8e8c0)) + mstore(0x8e980, mload(0x8e8e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8e920, 0x80, 0x8e920, 0x40), 1), success) +mstore(0x8e9a0, 0x1272548592421579871cacef3b526671bd3e9e5e941ae9e11922501b55a332a2) + mstore(0x8e9c0, 0x2e9952ec040149919cb97db87698ae617fffe68c4f14d6da31956e656c6f2a55) +mstore(0x8e9e0, mload(0x70760)) +success := and(eq(staticcall(gas(), 0x7, 0x8e9a0, 0x60, 0x8e9a0, 0x40), 1), success) +mstore(0x8ea00, mload(0x8e920)) + mstore(0x8ea20, mload(0x8e940)) +mstore(0x8ea40, mload(0x8e9a0)) + mstore(0x8ea60, mload(0x8e9c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8ea00, 0x80, 0x8ea00, 0x40), 1), success) +mstore(0x8ea80, 0x2f579160607cc547a54ef72e5a1a2966a65305c955cf8d94f507169386a10f4c) + mstore(0x8eaa0, 0x15932d491aaaa6d3673eeb19941a96ee53b011a6923028a70466a155b753d46b) +mstore(0x8eac0, mload(0x70780)) +success := and(eq(staticcall(gas(), 0x7, 0x8ea80, 0x60, 0x8ea80, 0x40), 1), success) +mstore(0x8eae0, mload(0x8ea00)) + mstore(0x8eb00, mload(0x8ea20)) +mstore(0x8eb20, mload(0x8ea80)) + mstore(0x8eb40, mload(0x8eaa0)) +success := and(eq(staticcall(gas(), 0x6, 0x8eae0, 0x80, 0x8eae0, 0x40), 1), success) +mstore(0x8eb60, 0x23c15b7e193ef6c36f18fd56589b5c141d88f7fa3cc721bea064220258f97152) + mstore(0x8eb80, 0x1a96d7c548878e517eca8d069171188bb67651c3c91c9daeb2414112f1e7bca4) +mstore(0x8eba0, mload(0x707a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8eb60, 0x60, 0x8eb60, 0x40), 1), success) +mstore(0x8ebc0, mload(0x8eae0)) + mstore(0x8ebe0, mload(0x8eb00)) +mstore(0x8ec00, mload(0x8eb60)) + mstore(0x8ec20, mload(0x8eb80)) +success := and(eq(staticcall(gas(), 0x6, 0x8ebc0, 0x80, 0x8ebc0, 0x40), 1), success) +mstore(0x8ec40, 0x05f96230e39b6be16f3ec02941089562dd3c4951e7d0ac6546d21a9b1d9c76cd) + mstore(0x8ec60, 0x2c47aac6a9c59ac833c721bca456997db980891c29ee55b3abf17815fb56b14b) +mstore(0x8ec80, mload(0x707c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8ec40, 0x60, 0x8ec40, 0x40), 1), success) +mstore(0x8eca0, mload(0x8ebc0)) + mstore(0x8ecc0, mload(0x8ebe0)) +mstore(0x8ece0, mload(0x8ec40)) + mstore(0x8ed00, mload(0x8ec60)) +success := and(eq(staticcall(gas(), 0x6, 0x8eca0, 0x80, 0x8eca0, 0x40), 1), success) +mstore(0x8ed20, 0x2d8882080f5f79b7b3e2e33c38d0a5f0ba1532b8a43ceeff2965f799aea1972c) + mstore(0x8ed40, 0x19e621bda7d8bea64b8805aa8f8e06323ba56fb24ea9382e968349a88255ca48) +mstore(0x8ed60, mload(0x707e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8ed20, 0x60, 0x8ed20, 0x40), 1), success) +mstore(0x8ed80, mload(0x8eca0)) + mstore(0x8eda0, mload(0x8ecc0)) +mstore(0x8edc0, mload(0x8ed20)) + mstore(0x8ede0, mload(0x8ed40)) +success := and(eq(staticcall(gas(), 0x6, 0x8ed80, 0x80, 0x8ed80, 0x40), 1), success) +mstore(0x8ee00, 0x0f63319ced7ecdca46dd1ea00697a4bb994a3fde792aec6274390138a1b1d578) + mstore(0x8ee20, 0x1e518823c7e3a42bffe65a5f073a8987aa44023931ea3a92697e669879da9059) +mstore(0x8ee40, mload(0x70800)) +success := and(eq(staticcall(gas(), 0x7, 0x8ee00, 0x60, 0x8ee00, 0x40), 1), success) +mstore(0x8ee60, mload(0x8ed80)) + mstore(0x8ee80, mload(0x8eda0)) +mstore(0x8eea0, mload(0x8ee00)) + mstore(0x8eec0, mload(0x8ee20)) +success := and(eq(staticcall(gas(), 0x6, 0x8ee60, 0x80, 0x8ee60, 0x40), 1), success) +mstore(0x8eee0, 0x1bc07c71b9dcca705aed4b33d9b5cfcff7a1809254a9456869bd31be9ea7c90b) + mstore(0x8ef00, 0x049a11f8bc05c4ab7f3e4f8ee93c81601a0862bc8ad4f035ea6239d123c04d54) +mstore(0x8ef20, mload(0x70820)) +success := and(eq(staticcall(gas(), 0x7, 0x8eee0, 0x60, 0x8eee0, 0x40), 1), success) +mstore(0x8ef40, mload(0x8ee60)) + mstore(0x8ef60, mload(0x8ee80)) +mstore(0x8ef80, mload(0x8eee0)) + mstore(0x8efa0, mload(0x8ef00)) +success := and(eq(staticcall(gas(), 0x6, 0x8ef40, 0x80, 0x8ef40, 0x40), 1), success) +mstore(0x8efc0, 0x0187fb59b0d9edb7ad417d29fae66b4afd68ec0552b8f521508f0cc171032031) + mstore(0x8efe0, 0x06566023146f0899b71f553ab88ae7d98540e749c4a546d05e174bc45a2969cc) +mstore(0x8f000, mload(0x70840)) +success := and(eq(staticcall(gas(), 0x7, 0x8efc0, 0x60, 0x8efc0, 0x40), 1), success) +mstore(0x8f020, mload(0x8ef40)) + mstore(0x8f040, mload(0x8ef60)) +mstore(0x8f060, mload(0x8efc0)) + mstore(0x8f080, mload(0x8efe0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f020, 0x80, 0x8f020, 0x40), 1), success) +mstore(0x8f0a0, 0x217ac329630544055cb35467be70d9e6fcf0032767dbc3dbf1ae194a60ffd5fa) + mstore(0x8f0c0, 0x0402ecb68a335a8dd73dc255f14a1032dfa340442cb2021c5b41fedf8c38eb27) +mstore(0x8f0e0, mload(0x70860)) +success := and(eq(staticcall(gas(), 0x7, 0x8f0a0, 0x60, 0x8f0a0, 0x40), 1), success) +mstore(0x8f100, mload(0x8f020)) + mstore(0x8f120, mload(0x8f040)) +mstore(0x8f140, mload(0x8f0a0)) + mstore(0x8f160, mload(0x8f0c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f100, 0x80, 0x8f100, 0x40), 1), success) +mstore(0x8f180, 0x22712ce1eaaff6dbea76ac4e2723d9cdd2c4d741b11558766e09fc785585ee43) + mstore(0x8f1a0, 0x2f7cc8cc31a83e4b94846cae4fe779d142b1bd96e4b0805d9dc5950e3a2940c2) +mstore(0x8f1c0, mload(0x70880)) +success := and(eq(staticcall(gas(), 0x7, 0x8f180, 0x60, 0x8f180, 0x40), 1), success) +mstore(0x8f1e0, mload(0x8f100)) + mstore(0x8f200, mload(0x8f120)) +mstore(0x8f220, mload(0x8f180)) + mstore(0x8f240, mload(0x8f1a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f1e0, 0x80, 0x8f1e0, 0x40), 1), success) +mstore(0x8f260, 0x052a9a4df661316bb6d3d6c82c5d49a0bdebb9e620ab866174c6f646f30bd581) + mstore(0x8f280, 0x0e94229056c4e8d52f46884b5a196d57a3f11c01035b7b4170d500e4f48d5ec9) +mstore(0x8f2a0, mload(0x708a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8f260, 0x60, 0x8f260, 0x40), 1), success) +mstore(0x8f2c0, mload(0x8f1e0)) + mstore(0x8f2e0, mload(0x8f200)) +mstore(0x8f300, mload(0x8f260)) + mstore(0x8f320, mload(0x8f280)) +success := and(eq(staticcall(gas(), 0x6, 0x8f2c0, 0x80, 0x8f2c0, 0x40), 1), success) +mstore(0x8f340, 0x240e456c23e1dfc4079cbbf02c12fe9ca1f1f49bf3d79647c68ce5e88920ee4e) + mstore(0x8f360, 0x079aaed7880649c4f28652f5360dd77d9534c0f815f643e940c611317c03ff15) +mstore(0x8f380, mload(0x708c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8f340, 0x60, 0x8f340, 0x40), 1), success) +mstore(0x8f3a0, mload(0x8f2c0)) + mstore(0x8f3c0, mload(0x8f2e0)) +mstore(0x8f3e0, mload(0x8f340)) + mstore(0x8f400, mload(0x8f360)) +success := and(eq(staticcall(gas(), 0x6, 0x8f3a0, 0x80, 0x8f3a0, 0x40), 1), success) +mstore(0x8f420, 0x1d48922bc833f49e38fdb2539c87e2596e0b27a65d48e4d04b2c10b73ea9cdc2) + mstore(0x8f440, 0x1f890d5a5b6a2532932b9e10ea7c70c6e58da50fa4525378254aed73d36627cb) +mstore(0x8f460, mload(0x708e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8f420, 0x60, 0x8f420, 0x40), 1), success) +mstore(0x8f480, mload(0x8f3a0)) + mstore(0x8f4a0, mload(0x8f3c0)) +mstore(0x8f4c0, mload(0x8f420)) + mstore(0x8f4e0, mload(0x8f440)) +success := and(eq(staticcall(gas(), 0x6, 0x8f480, 0x80, 0x8f480, 0x40), 1), success) +mstore(0x8f500, 0x25e1ab28c312aaeaf336cabf540e88b2067ae8e1119141e4e10b70b7c7532b2e) + mstore(0x8f520, 0x142a03f22f0c79657e9ac444171d7fb5d35be719a71b8ea9eb8f8c10a902f2f0) +mstore(0x8f540, mload(0x70900)) +success := and(eq(staticcall(gas(), 0x7, 0x8f500, 0x60, 0x8f500, 0x40), 1), success) +mstore(0x8f560, mload(0x8f480)) + mstore(0x8f580, mload(0x8f4a0)) +mstore(0x8f5a0, mload(0x8f500)) + mstore(0x8f5c0, mload(0x8f520)) +success := and(eq(staticcall(gas(), 0x6, 0x8f560, 0x80, 0x8f560, 0x40), 1), success) +mstore(0x8f5e0, 0x011d2ed0cb47afe7cf9a180727ad538fd30c51c6756df76f63f4ba717384abfd) + mstore(0x8f600, 0x2bff32455fa36bde17bee73f1f36369e3d8a94907e35bc9a0de0a2a21b8caae1) +mstore(0x8f620, mload(0x70920)) +success := and(eq(staticcall(gas(), 0x7, 0x8f5e0, 0x60, 0x8f5e0, 0x40), 1), success) +mstore(0x8f640, mload(0x8f560)) + mstore(0x8f660, mload(0x8f580)) +mstore(0x8f680, mload(0x8f5e0)) + mstore(0x8f6a0, mload(0x8f600)) +success := and(eq(staticcall(gas(), 0x6, 0x8f640, 0x80, 0x8f640, 0x40), 1), success) +mstore(0x8f6c0, 0x129b2812e32b51c4125f3348228c9ff946e58a036110a554a488363706d4bc79) + mstore(0x8f6e0, 0x16598a84b3838dd014670e7a2b3490fee9b0ff63299763e71694d5400dd4d377) +mstore(0x8f700, mload(0x70940)) +success := and(eq(staticcall(gas(), 0x7, 0x8f6c0, 0x60, 0x8f6c0, 0x40), 1), success) +mstore(0x8f720, mload(0x8f640)) + mstore(0x8f740, mload(0x8f660)) +mstore(0x8f760, mload(0x8f6c0)) + mstore(0x8f780, mload(0x8f6e0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f720, 0x80, 0x8f720, 0x40), 1), success) +mstore(0x8f7a0, 0x00fcbe810b6abf71ac4fe02fd4b94eb3180643bf057193c277f68bdc169c2276) + mstore(0x8f7c0, 0x000f06dd968e1dfd3898d465804ddf6eea03302f057c357428ef2c7f6c76fcd7) +mstore(0x8f7e0, mload(0x70960)) +success := and(eq(staticcall(gas(), 0x7, 0x8f7a0, 0x60, 0x8f7a0, 0x40), 1), success) +mstore(0x8f800, mload(0x8f720)) + mstore(0x8f820, mload(0x8f740)) +mstore(0x8f840, mload(0x8f7a0)) + mstore(0x8f860, mload(0x8f7c0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f800, 0x80, 0x8f800, 0x40), 1), success) +mstore(0x8f880, 0x2b2acc102c86792f0e9b3c35b68ffdeba4996be05285385bf09da8e33cef123d) + mstore(0x8f8a0, 0x2e0d82bcabbdb7263d6a95b26dc30cb728f7d6b001b0923f0e1676eca43400fc) +mstore(0x8f8c0, mload(0x70980)) +success := and(eq(staticcall(gas(), 0x7, 0x8f880, 0x60, 0x8f880, 0x40), 1), success) +mstore(0x8f8e0, mload(0x8f800)) + mstore(0x8f900, mload(0x8f820)) +mstore(0x8f920, mload(0x8f880)) + mstore(0x8f940, mload(0x8f8a0)) +success := and(eq(staticcall(gas(), 0x6, 0x8f8e0, 0x80, 0x8f8e0, 0x40), 1), success) +mstore(0x8f960, 0x0b6c352de32a97c387f2a11504ccb2385a2e11b9d4838e36db313d5f180564fc) + mstore(0x8f980, 0x14a0f36604c6394dfca90014f1147fab4d5303208fb5530a164dcbee41eda3ea) +mstore(0x8f9a0, mload(0x709a0)) +success := and(eq(staticcall(gas(), 0x7, 0x8f960, 0x60, 0x8f960, 0x40), 1), success) +mstore(0x8f9c0, mload(0x8f8e0)) + mstore(0x8f9e0, mload(0x8f900)) +mstore(0x8fa00, mload(0x8f960)) + mstore(0x8fa20, mload(0x8f980)) +success := and(eq(staticcall(gas(), 0x6, 0x8f9c0, 0x80, 0x8f9c0, 0x40), 1), success) +mstore(0x8fa40, 0x235394cbe064c356087b79835e1b298d08d327e055a7f53cb5d121f7432bc21e) + mstore(0x8fa60, 0x10dbf87786c518ecc7c8202492d565f621c9b19a0e54405acb30794b1b8865b1) +mstore(0x8fa80, mload(0x709c0)) +success := and(eq(staticcall(gas(), 0x7, 0x8fa40, 0x60, 0x8fa40, 0x40), 1), success) +mstore(0x8faa0, mload(0x8f9c0)) + mstore(0x8fac0, mload(0x8f9e0)) +mstore(0x8fae0, mload(0x8fa40)) + mstore(0x8fb00, mload(0x8fa60)) +success := and(eq(staticcall(gas(), 0x6, 0x8faa0, 0x80, 0x8faa0, 0x40), 1), success) +mstore(0x8fb20, 0x16c3bc361808a0fde96f934a931cee86a04143fa9217514c7591fdbd0d30c348) + mstore(0x8fb40, 0x23c78da2485fe07c12d219ee3057927f0d5285e3f6b721b3f892388a5a1e4bf4) +mstore(0x8fb60, mload(0x709e0)) +success := and(eq(staticcall(gas(), 0x7, 0x8fb20, 0x60, 0x8fb20, 0x40), 1), success) +mstore(0x8fb80, mload(0x8faa0)) + mstore(0x8fba0, mload(0x8fac0)) +mstore(0x8fbc0, mload(0x8fb20)) + mstore(0x8fbe0, mload(0x8fb40)) +success := and(eq(staticcall(gas(), 0x6, 0x8fb80, 0x80, 0x8fb80, 0x40), 1), success) +mstore(0x8fc00, 0x0747929a9f53147370f7dacaa2ec910b14a30eeae070fa5452c30989ea7fd2b0) + mstore(0x8fc20, 0x1a9126a0f70638a67da64ec9cf0c251f1b8da437412664a67616716e57d1f91f) +mstore(0x8fc40, mload(0x70a00)) +success := and(eq(staticcall(gas(), 0x7, 0x8fc00, 0x60, 0x8fc00, 0x40), 1), success) +mstore(0x8fc60, mload(0x8fb80)) + mstore(0x8fc80, mload(0x8fba0)) +mstore(0x8fca0, mload(0x8fc00)) + mstore(0x8fcc0, mload(0x8fc20)) +success := and(eq(staticcall(gas(), 0x6, 0x8fc60, 0x80, 0x8fc60, 0x40), 1), success) +mstore(0x8fce0, 0x2635ab1fbed39683dcad1b82e0d9c1a2d5d13c1ecd81bf935d2c8dfc05d0a90d) + mstore(0x8fd00, 0x086f6715ab534a82ffb6a45bae69626ae9df18ea6ffebb2c84fd4e8369337d77) +mstore(0x8fd20, mload(0x70a20)) +success := and(eq(staticcall(gas(), 0x7, 0x8fce0, 0x60, 0x8fce0, 0x40), 1), success) +mstore(0x8fd40, mload(0x8fc60)) + mstore(0x8fd60, mload(0x8fc80)) +mstore(0x8fd80, mload(0x8fce0)) + mstore(0x8fda0, mload(0x8fd00)) +success := and(eq(staticcall(gas(), 0x6, 0x8fd40, 0x80, 0x8fd40, 0x40), 1), success) +mstore(0x8fdc0, 0x21f475ca182a1ccd7618c300ff61dc497f9cb8da6393cc65add1fd2bc1ee2019) + mstore(0x8fde0, 0x2bce552f3404440cd04ae8328ca758e384d9f24a244c2297b15fb448f65f59c3) +mstore(0x8fe00, mload(0x70a40)) +success := and(eq(staticcall(gas(), 0x7, 0x8fdc0, 0x60, 0x8fdc0, 0x40), 1), success) +mstore(0x8fe20, mload(0x8fd40)) + mstore(0x8fe40, mload(0x8fd60)) +mstore(0x8fe60, mload(0x8fdc0)) + mstore(0x8fe80, mload(0x8fde0)) +success := and(eq(staticcall(gas(), 0x6, 0x8fe20, 0x80, 0x8fe20, 0x40), 1), success) +mstore(0x8fea0, 0x2c1ea7f1b46519124297d57339df42b509e978b7782ea1397226a01def03674e) + mstore(0x8fec0, 0x2c55327ab305e143f8ae1b3f87372149decc4c1646229f22c21f46f83e3744eb) +mstore(0x8fee0, mload(0x70a60)) +success := and(eq(staticcall(gas(), 0x7, 0x8fea0, 0x60, 0x8fea0, 0x40), 1), success) +mstore(0x8ff00, mload(0x8fe20)) + mstore(0x8ff20, mload(0x8fe40)) +mstore(0x8ff40, mload(0x8fea0)) + mstore(0x8ff60, mload(0x8fec0)) +success := and(eq(staticcall(gas(), 0x6, 0x8ff00, 0x80, 0x8ff00, 0x40), 1), success) +mstore(0x8ff80, 0x05f2fa7ff434f74435b4be2a6a8bd1131a78ce4751a1840ca8cc261c0d9dd395) + mstore(0x8ffa0, 0x2581407360c0891ca3656ee373b5b3f4c1c51948438bfe661bb2625d672adcfe) +mstore(0x8ffc0, mload(0x70a80)) +success := and(eq(staticcall(gas(), 0x7, 0x8ff80, 0x60, 0x8ff80, 0x40), 1), success) +mstore(0x8ffe0, mload(0x8ff00)) + mstore(0x90000, mload(0x8ff20)) +mstore(0x90020, mload(0x8ff80)) + mstore(0x90040, mload(0x8ffa0)) +success := and(eq(staticcall(gas(), 0x6, 0x8ffe0, 0x80, 0x8ffe0, 0x40), 1), success) +mstore(0x90060, 0x3018ba0a208ae993363e77e8e608e586774879018d0fbc8226a4ae317f8383d2) + mstore(0x90080, 0x2470030618242492bcbd455b163ddbf6c28e95caafbc09516a5ffb15fd04d7b3) +mstore(0x900a0, mload(0x70aa0)) +success := and(eq(staticcall(gas(), 0x7, 0x90060, 0x60, 0x90060, 0x40), 1), success) +mstore(0x900c0, mload(0x8ffe0)) + mstore(0x900e0, mload(0x90000)) +mstore(0x90100, mload(0x90060)) + mstore(0x90120, mload(0x90080)) +success := and(eq(staticcall(gas(), 0x6, 0x900c0, 0x80, 0x900c0, 0x40), 1), success) +mstore(0x90140, 0x211b328f454abb083d31e67a1462daca6b92b45e8fcd9381c5939f90b573fa96) + mstore(0x90160, 0x0fee4bea287731ea653c410bdd0b008fee49c4b92dae548c3fed237b3f846e20) +mstore(0x90180, mload(0x70ac0)) +success := and(eq(staticcall(gas(), 0x7, 0x90140, 0x60, 0x90140, 0x40), 1), success) +mstore(0x901a0, mload(0x900c0)) + mstore(0x901c0, mload(0x900e0)) +mstore(0x901e0, mload(0x90140)) + mstore(0x90200, mload(0x90160)) +success := and(eq(staticcall(gas(), 0x6, 0x901a0, 0x80, 0x901a0, 0x40), 1), success) +mstore(0x90220, 0x0ca13abc1e570a3ef5bb475b8a3337881c621b1f77a426e2e1ad6071a53058f6) + mstore(0x90240, 0x25ba0994e5666945ab7a4509b880d5323fb4ac2552baa6a78d59d1e115f7b944) +mstore(0x90260, mload(0x70ae0)) +success := and(eq(staticcall(gas(), 0x7, 0x90220, 0x60, 0x90220, 0x40), 1), success) +mstore(0x90280, mload(0x901a0)) + mstore(0x902a0, mload(0x901c0)) +mstore(0x902c0, mload(0x90220)) + mstore(0x902e0, mload(0x90240)) +success := and(eq(staticcall(gas(), 0x6, 0x90280, 0x80, 0x90280, 0x40), 1), success) +mstore(0x90300, 0x0020c55ec5d51ca14162c86ecefa707144a30c17d1cc05a8fb0c2aab595939d8) + mstore(0x90320, 0x04809209efea2f0bc10f50aac18128a565bf9c08019aee81c571bca8b1da97c0) +mstore(0x90340, mload(0x70b00)) +success := and(eq(staticcall(gas(), 0x7, 0x90300, 0x60, 0x90300, 0x40), 1), success) +mstore(0x90360, mload(0x90280)) + mstore(0x90380, mload(0x902a0)) +mstore(0x903a0, mload(0x90300)) + mstore(0x903c0, mload(0x90320)) +success := and(eq(staticcall(gas(), 0x6, 0x90360, 0x80, 0x90360, 0x40), 1), success) +mstore(0x903e0, 0x2e98e02e5e611e0d8e486a49864363dda8068f83dfc5d2c634ca5ddbf3bd683c) + mstore(0x90400, 0x0ff9e5f471cdc0a6a98cd8e7847b9c221c478c10668aa530dd0cf9f85a7b50b5) +mstore(0x90420, mload(0x70b20)) +success := and(eq(staticcall(gas(), 0x7, 0x903e0, 0x60, 0x903e0, 0x40), 1), success) +mstore(0x90440, mload(0x90360)) + mstore(0x90460, mload(0x90380)) +mstore(0x90480, mload(0x903e0)) + mstore(0x904a0, mload(0x90400)) +success := and(eq(staticcall(gas(), 0x6, 0x90440, 0x80, 0x90440, 0x40), 1), success) +mstore(0x904c0, 0x0708cf7f89e0435c10d9dd96a116a079369e5a728330fa7b2a69cfb402020132) + mstore(0x904e0, 0x22a41a2e1b77a916b5527bb9314caf9ea7f1ee6a6675cecbebe15be063882fb5) +mstore(0x90500, mload(0x70b40)) +success := and(eq(staticcall(gas(), 0x7, 0x904c0, 0x60, 0x904c0, 0x40), 1), success) +mstore(0x90520, mload(0x90440)) + mstore(0x90540, mload(0x90460)) +mstore(0x90560, mload(0x904c0)) + mstore(0x90580, mload(0x904e0)) +success := and(eq(staticcall(gas(), 0x6, 0x90520, 0x80, 0x90520, 0x40), 1), success) +mstore(0x905a0, 0x196533e8f2278c4893c2fc3e2b4efcd05e499d160935a06dd7804b5374a5f787) + mstore(0x905c0, 0x165e0a430beb2b26bf6a802f9742f49657b10ff0f89661889e768e022551a548) +mstore(0x905e0, mload(0x70b60)) +success := and(eq(staticcall(gas(), 0x7, 0x905a0, 0x60, 0x905a0, 0x40), 1), success) +mstore(0x90600, mload(0x90520)) + mstore(0x90620, mload(0x90540)) +mstore(0x90640, mload(0x905a0)) + mstore(0x90660, mload(0x905c0)) +success := and(eq(staticcall(gas(), 0x6, 0x90600, 0x80, 0x90600, 0x40), 1), success) +mstore(0x90680, 0x04aa1de31896c23c1a61092d18316ca8600385a251a5de0c8c7331004db0fc7e) + mstore(0x906a0, 0x241f9e721b6f5c751082646ba235c69c6d47caaf487f522b63e1850f8f8da29a) +mstore(0x906c0, mload(0x70b80)) +success := and(eq(staticcall(gas(), 0x7, 0x90680, 0x60, 0x90680, 0x40), 1), success) +mstore(0x906e0, mload(0x90600)) + mstore(0x90700, mload(0x90620)) +mstore(0x90720, mload(0x90680)) + mstore(0x90740, mload(0x906a0)) +success := and(eq(staticcall(gas(), 0x6, 0x906e0, 0x80, 0x906e0, 0x40), 1), success) +mstore(0x90760, 0x23731d32a00d2f7aa654025ca32471d87b3b1525c579c8f4ff91d6ccb93ce4be) + mstore(0x90780, 0x295642aa4c4a5ee8712779748ee7f35f76a13264639ecfca9dcd44a6ca820cac) +mstore(0x907a0, mload(0x70ba0)) +success := and(eq(staticcall(gas(), 0x7, 0x90760, 0x60, 0x90760, 0x40), 1), success) +mstore(0x907c0, mload(0x906e0)) + mstore(0x907e0, mload(0x90700)) +mstore(0x90800, mload(0x90760)) + mstore(0x90820, mload(0x90780)) +success := and(eq(staticcall(gas(), 0x6, 0x907c0, 0x80, 0x907c0, 0x40), 1), success) +mstore(0x90840, 0x036c4ad0409599fd83ec16c3f43a83d31785b55e144831c58a14bffaad44139b) + mstore(0x90860, 0x06a417ff8eb3badec8542a7329a7ede221f85d91ed7a3d4ecd98559dc637589d) +mstore(0x90880, mload(0x70bc0)) +success := and(eq(staticcall(gas(), 0x7, 0x90840, 0x60, 0x90840, 0x40), 1), success) +mstore(0x908a0, mload(0x907c0)) + mstore(0x908c0, mload(0x907e0)) +mstore(0x908e0, mload(0x90840)) + mstore(0x90900, mload(0x90860)) +success := and(eq(staticcall(gas(), 0x6, 0x908a0, 0x80, 0x908a0, 0x40), 1), success) +mstore(0x90920, 0x2c9d9c6466da159368a33a42ae6529af00e6a307c7269e4adae0ca19cf47d5de) + mstore(0x90940, 0x0ebb7674ee906ae459e08af1c04cb866a06cc8b3aace9f0537c9e129c78bccb1) +mstore(0x90960, mload(0x70be0)) +success := and(eq(staticcall(gas(), 0x7, 0x90920, 0x60, 0x90920, 0x40), 1), success) +mstore(0x90980, mload(0x908a0)) + mstore(0x909a0, mload(0x908c0)) +mstore(0x909c0, mload(0x90920)) + mstore(0x909e0, mload(0x90940)) +success := and(eq(staticcall(gas(), 0x6, 0x90980, 0x80, 0x90980, 0x40), 1), success) +mstore(0x90a00, 0x03c52c226bbf2516a216f4ceb86be15f2750bc3b0e5028a494acdc30d68525b6) + mstore(0x90a20, 0x10a1e72aea466b222addf05a94ee67c4d64480ebc6bd3024cc3a83256b7ed70f) +mstore(0x90a40, mload(0x70c00)) +success := and(eq(staticcall(gas(), 0x7, 0x90a00, 0x60, 0x90a00, 0x40), 1), success) +mstore(0x90a60, mload(0x90980)) + mstore(0x90a80, mload(0x909a0)) +mstore(0x90aa0, mload(0x90a00)) + mstore(0x90ac0, mload(0x90a20)) +success := and(eq(staticcall(gas(), 0x6, 0x90a60, 0x80, 0x90a60, 0x40), 1), success) +mstore(0x90ae0, 0x0a4d3991e50436a26e7d48a142df211052bdfea38eb633d4c7f8ca59844224f8) + mstore(0x90b00, 0x181ae9806cf7d8e3355f8707dfea9d985d3adfba6dc4c14a8c2243ee7198cb15) +mstore(0x90b20, mload(0x70c20)) +success := and(eq(staticcall(gas(), 0x7, 0x90ae0, 0x60, 0x90ae0, 0x40), 1), success) +mstore(0x90b40, mload(0x90a60)) + mstore(0x90b60, mload(0x90a80)) +mstore(0x90b80, mload(0x90ae0)) + mstore(0x90ba0, mload(0x90b00)) +success := and(eq(staticcall(gas(), 0x6, 0x90b40, 0x80, 0x90b40, 0x40), 1), success) +mstore(0x90bc0, 0x1027db652d2a029697d00393fd6b7c07f3f28f5eca53a533a04fd1fbdc40d411) + mstore(0x90be0, 0x189ede5430818c5fc8853871e97b2b14f123f24f01a5d8741d1d2f119f6e8b9b) +mstore(0x90c00, mload(0x70c40)) +success := and(eq(staticcall(gas(), 0x7, 0x90bc0, 0x60, 0x90bc0, 0x40), 1), success) +mstore(0x90c20, mload(0x90b40)) + mstore(0x90c40, mload(0x90b60)) +mstore(0x90c60, mload(0x90bc0)) + mstore(0x90c80, mload(0x90be0)) +success := and(eq(staticcall(gas(), 0x6, 0x90c20, 0x80, 0x90c20, 0x40), 1), success) +mstore(0x90ca0, 0x183295899cb709ecf667b007815fbbe8fe9475c23aaefdc811cd1ca23cbcc857) + mstore(0x90cc0, 0x05895affb6117146434aa73f47577e2f4a4f2ad35941bb829de2653328b125a6) +mstore(0x90ce0, mload(0x70c60)) +success := and(eq(staticcall(gas(), 0x7, 0x90ca0, 0x60, 0x90ca0, 0x40), 1), success) +mstore(0x90d00, mload(0x90c20)) + mstore(0x90d20, mload(0x90c40)) +mstore(0x90d40, mload(0x90ca0)) + mstore(0x90d60, mload(0x90cc0)) +success := and(eq(staticcall(gas(), 0x6, 0x90d00, 0x80, 0x90d00, 0x40), 1), success) +mstore(0x90d80, 0x1c9c291354c2ba3e076ccafcc1a998d3803f153793c82f9ff58d84da6898bc20) + mstore(0x90da0, 0x208b5eb4910e5d5365a83487fed74e4cd253151d8eb9f780900af5cb7ea253b1) +mstore(0x90dc0, mload(0x70c80)) +success := and(eq(staticcall(gas(), 0x7, 0x90d80, 0x60, 0x90d80, 0x40), 1), success) +mstore(0x90de0, mload(0x90d00)) + mstore(0x90e00, mload(0x90d20)) +mstore(0x90e20, mload(0x90d80)) + mstore(0x90e40, mload(0x90da0)) +success := and(eq(staticcall(gas(), 0x6, 0x90de0, 0x80, 0x90de0, 0x40), 1), success) +mstore(0x90e60, 0x2a975497d5b128b72044fe84547d4209d6b5beba509dc22127dbb278397f3254) + mstore(0x90e80, 0x29ece996e33f9ad56e3c1b151297fc510232eda692b7c6ab80c8d20280fe0ba7) +mstore(0x90ea0, mload(0x70ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x90e60, 0x60, 0x90e60, 0x40), 1), success) +mstore(0x90ec0, mload(0x90de0)) + mstore(0x90ee0, mload(0x90e00)) +mstore(0x90f00, mload(0x90e60)) + mstore(0x90f20, mload(0x90e80)) +success := and(eq(staticcall(gas(), 0x6, 0x90ec0, 0x80, 0x90ec0, 0x40), 1), success) +mstore(0x90f40, 0x00a82062553a4e43de13c7dacac592edf0781cb94e4a37e922dacfc56e8ec4ce) + mstore(0x90f60, 0x194837008296cf1df632c19c4a7f24812e7836a2749117c9256ade5b0c82d837) +mstore(0x90f80, mload(0x70cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x90f40, 0x60, 0x90f40, 0x40), 1), success) +mstore(0x90fa0, mload(0x90ec0)) + mstore(0x90fc0, mload(0x90ee0)) +mstore(0x90fe0, mload(0x90f40)) + mstore(0x91000, mload(0x90f60)) +success := and(eq(staticcall(gas(), 0x6, 0x90fa0, 0x80, 0x90fa0, 0x40), 1), success) +mstore(0x91020, 0x29f704301ebda3d81dc78b0504c5b81f35027af933b119ea7dafea9f15728151) + mstore(0x91040, 0x1e0dc3662c92fe680240e2bcc9a6387f7d571bbbd278c7ff42b7f47246ebaa12) +mstore(0x91060, mload(0x70ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x91020, 0x60, 0x91020, 0x40), 1), success) +mstore(0x91080, mload(0x90fa0)) + mstore(0x910a0, mload(0x90fc0)) +mstore(0x910c0, mload(0x91020)) + mstore(0x910e0, mload(0x91040)) +success := and(eq(staticcall(gas(), 0x6, 0x91080, 0x80, 0x91080, 0x40), 1), success) +mstore(0x91100, 0x2b788f017baeb737641a417283a4a29712d72ae7c350c9333d5397261b11024b) + mstore(0x91120, 0x20af3f91e81755452c677515b1756aec95ce693eb92b96ddd1e63e2a3e485320) +mstore(0x91140, mload(0x70d00)) +success := and(eq(staticcall(gas(), 0x7, 0x91100, 0x60, 0x91100, 0x40), 1), success) +mstore(0x91160, mload(0x91080)) + mstore(0x91180, mload(0x910a0)) +mstore(0x911a0, mload(0x91100)) + mstore(0x911c0, mload(0x91120)) +success := and(eq(staticcall(gas(), 0x6, 0x91160, 0x80, 0x91160, 0x40), 1), success) +mstore(0x911e0, 0x2a5f41584605094a88975274b8219cafba599c6b1390bd8a0898a48966821c19) + mstore(0x91200, 0x04561539252e0afe23ce633ced21c7925a9526965f324aec8351c4099a0a1e51) +mstore(0x91220, mload(0x70d20)) +success := and(eq(staticcall(gas(), 0x7, 0x911e0, 0x60, 0x911e0, 0x40), 1), success) +mstore(0x91240, mload(0x91160)) + mstore(0x91260, mload(0x91180)) +mstore(0x91280, mload(0x911e0)) + mstore(0x912a0, mload(0x91200)) +success := and(eq(staticcall(gas(), 0x6, 0x91240, 0x80, 0x91240, 0x40), 1), success) +mstore(0x912c0, 0x19366245a249f5c3c767b1d4a3ee109e494933a7e5a0310b3fb8a9575517d747) + mstore(0x912e0, 0x1880eef66ddf2960c9366a9581d4f85149b2459aba088aeea7d017bdb6c58c98) +mstore(0x91300, mload(0x70d40)) +success := and(eq(staticcall(gas(), 0x7, 0x912c0, 0x60, 0x912c0, 0x40), 1), success) +mstore(0x91320, mload(0x91240)) + mstore(0x91340, mload(0x91260)) +mstore(0x91360, mload(0x912c0)) + mstore(0x91380, mload(0x912e0)) +success := and(eq(staticcall(gas(), 0x6, 0x91320, 0x80, 0x91320, 0x40), 1), success) +mstore(0x913a0, 0x1e94c25bca394ee3f978a1e4b31c27180175b3e9cc309024dc59e56d99ac8332) + mstore(0x913c0, 0x2be57b48ae29e7d3006873f547f5de8808f00800690e3f736571e877dc278cb0) +mstore(0x913e0, mload(0x70d60)) +success := and(eq(staticcall(gas(), 0x7, 0x913a0, 0x60, 0x913a0, 0x40), 1), success) +mstore(0x91400, mload(0x91320)) + mstore(0x91420, mload(0x91340)) +mstore(0x91440, mload(0x913a0)) + mstore(0x91460, mload(0x913c0)) +success := and(eq(staticcall(gas(), 0x6, 0x91400, 0x80, 0x91400, 0x40), 1), success) +mstore(0x91480, 0x2cd308ff3e2a2b287913007431c28b541e15e505f87d1c39e49a5669e33fa1c7) + mstore(0x914a0, 0x17d33f56c84b96ad567f9da10fb00efa080734c4b6a1fdeb352f3f5181b19bb2) +mstore(0x914c0, mload(0x70d80)) +success := and(eq(staticcall(gas(), 0x7, 0x91480, 0x60, 0x91480, 0x40), 1), success) +mstore(0x914e0, mload(0x91400)) + mstore(0x91500, mload(0x91420)) +mstore(0x91520, mload(0x91480)) + mstore(0x91540, mload(0x914a0)) +success := and(eq(staticcall(gas(), 0x6, 0x914e0, 0x80, 0x914e0, 0x40), 1), success) +mstore(0x91560, 0x10449bb6632e8dcece2ac7decf32db9a82a97150dfd5af59c9f65c13fa2e469d) + mstore(0x91580, 0x1b54bf52c359d662c009a37693e6cce2f7acad28c8141f1e75a7283affd19189) +mstore(0x915a0, mload(0x70da0)) +success := and(eq(staticcall(gas(), 0x7, 0x91560, 0x60, 0x91560, 0x40), 1), success) +mstore(0x915c0, mload(0x914e0)) + mstore(0x915e0, mload(0x91500)) +mstore(0x91600, mload(0x91560)) + mstore(0x91620, mload(0x91580)) +success := and(eq(staticcall(gas(), 0x6, 0x915c0, 0x80, 0x915c0, 0x40), 1), success) +mstore(0x91640, 0x0d3d2cf9a159edf1dd08325cf0ae49da68633e2fb54499ef2249cb79bbe88b02) + mstore(0x91660, 0x10b45f628bbc4996226d90eb51f6163c5e6511fab963b28ad2be603d07160686) +mstore(0x91680, mload(0x70dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x91640, 0x60, 0x91640, 0x40), 1), success) +mstore(0x916a0, mload(0x915c0)) + mstore(0x916c0, mload(0x915e0)) +mstore(0x916e0, mload(0x91640)) + mstore(0x91700, mload(0x91660)) +success := and(eq(staticcall(gas(), 0x6, 0x916a0, 0x80, 0x916a0, 0x40), 1), success) +mstore(0x91720, 0x22a3504be26f2de2d74e169c916f208143745860ebc4570d68621a2993576209) + mstore(0x91740, 0x24a2a8108a2550bd2c6fb5b24f15c36fb0061da286c0cc5696a2698e009c4794) +mstore(0x91760, mload(0x70de0)) +success := and(eq(staticcall(gas(), 0x7, 0x91720, 0x60, 0x91720, 0x40), 1), success) +mstore(0x91780, mload(0x916a0)) + mstore(0x917a0, mload(0x916c0)) +mstore(0x917c0, mload(0x91720)) + mstore(0x917e0, mload(0x91740)) +success := and(eq(staticcall(gas(), 0x6, 0x91780, 0x80, 0x91780, 0x40), 1), success) +mstore(0x91800, 0x2b113422c7dc0ce67cc7942edad1df68be2149d38e76a606ea7cde8cb4642fb4) + mstore(0x91820, 0x1c3d26895e5e491eb8c025958064964b6e692893ccf074a337f3d794d4ce15b0) +mstore(0x91840, mload(0x70e00)) +success := and(eq(staticcall(gas(), 0x7, 0x91800, 0x60, 0x91800, 0x40), 1), success) +mstore(0x91860, mload(0x91780)) + mstore(0x91880, mload(0x917a0)) +mstore(0x918a0, mload(0x91800)) + mstore(0x918c0, mload(0x91820)) +success := and(eq(staticcall(gas(), 0x6, 0x91860, 0x80, 0x91860, 0x40), 1), success) +mstore(0x918e0, 0x00bf4e186235578dc08338b868c1ad8cd426b99340dc10008b999169da1fcb8f) + mstore(0x91900, 0x14b3480a41c46103219e726cadc6644b090051d907a822413e4c6657667dc663) +mstore(0x91920, mload(0x70e20)) +success := and(eq(staticcall(gas(), 0x7, 0x918e0, 0x60, 0x918e0, 0x40), 1), success) +mstore(0x91940, mload(0x91860)) + mstore(0x91960, mload(0x91880)) +mstore(0x91980, mload(0x918e0)) + mstore(0x919a0, mload(0x91900)) +success := and(eq(staticcall(gas(), 0x6, 0x91940, 0x80, 0x91940, 0x40), 1), success) +mstore(0x919c0, 0x1fac89698bc236d6629eefee9ff8402bc1b885c597a45b615027d04179efc89c) + mstore(0x919e0, 0x0a8ef2720ec3f48b846c9b8e3757e1a598e6c4b8be41bd03e7703174b0bec419) +mstore(0x91a00, mload(0x70e40)) +success := and(eq(staticcall(gas(), 0x7, 0x919c0, 0x60, 0x919c0, 0x40), 1), success) +mstore(0x91a20, mload(0x91940)) + mstore(0x91a40, mload(0x91960)) +mstore(0x91a60, mload(0x919c0)) + mstore(0x91a80, mload(0x919e0)) +success := and(eq(staticcall(gas(), 0x6, 0x91a20, 0x80, 0x91a20, 0x40), 1), success) +mstore(0x91aa0, 0x150898805ec440823de7740477cf0e306f0e772479dab6d521e17c7ce8a49d4c) + mstore(0x91ac0, 0x2a759b4134107a1f0cd70f2feb0ece777418cf65d354a781d3eb6ba73d66907e) +mstore(0x91ae0, mload(0x70e60)) +success := and(eq(staticcall(gas(), 0x7, 0x91aa0, 0x60, 0x91aa0, 0x40), 1), success) +mstore(0x91b00, mload(0x91a20)) + mstore(0x91b20, mload(0x91a40)) +mstore(0x91b40, mload(0x91aa0)) + mstore(0x91b60, mload(0x91ac0)) +success := and(eq(staticcall(gas(), 0x6, 0x91b00, 0x80, 0x91b00, 0x40), 1), success) +mstore(0x91b80, 0x1a9baee76ee11502887fcde9f1e5ee1b4c0268f4a258bc52c4f82af5335ecf3f) + mstore(0x91ba0, 0x2ce90fc51d4d240cb42d664a4e03a61106c5e36adae86b8ddcfe0d8b78444aa7) +mstore(0x91bc0, mload(0x70e80)) +success := and(eq(staticcall(gas(), 0x7, 0x91b80, 0x60, 0x91b80, 0x40), 1), success) +mstore(0x91be0, mload(0x91b00)) + mstore(0x91c00, mload(0x91b20)) +mstore(0x91c20, mload(0x91b80)) + mstore(0x91c40, mload(0x91ba0)) +success := and(eq(staticcall(gas(), 0x6, 0x91be0, 0x80, 0x91be0, 0x40), 1), success) +mstore(0x91c60, 0x1a36c4275b75d24417113eea8d33b1c6ea5b6fec6fd5ff87806846ee0b4ee821) + mstore(0x91c80, 0x25e3b0b4db4f20f006fd020d9ff4c9f90af4d6fc62ce02e7256b4eae7394f2a8) +mstore(0x91ca0, mload(0x70ea0)) +success := and(eq(staticcall(gas(), 0x7, 0x91c60, 0x60, 0x91c60, 0x40), 1), success) +mstore(0x91cc0, mload(0x91be0)) + mstore(0x91ce0, mload(0x91c00)) +mstore(0x91d00, mload(0x91c60)) + mstore(0x91d20, mload(0x91c80)) +success := and(eq(staticcall(gas(), 0x6, 0x91cc0, 0x80, 0x91cc0, 0x40), 1), success) +mstore(0x91d40, 0x148698d026df9da28536bd2bf88f22fc0ae3e4d73d7fd4d400bbbeb4cc0b13e0) + mstore(0x91d60, 0x17c57f3392ea7890bb6dc5fb8ceeabe9331c62ce4c8aa0cc75c3e30fe752087d) +mstore(0x91d80, mload(0x70ec0)) +success := and(eq(staticcall(gas(), 0x7, 0x91d40, 0x60, 0x91d40, 0x40), 1), success) +mstore(0x91da0, mload(0x91cc0)) + mstore(0x91dc0, mload(0x91ce0)) +mstore(0x91de0, mload(0x91d40)) + mstore(0x91e00, mload(0x91d60)) +success := and(eq(staticcall(gas(), 0x6, 0x91da0, 0x80, 0x91da0, 0x40), 1), success) +mstore(0x91e20, 0x005e1635ba0a3176b76a9274db9d910f05b07ebd360de35f8c484846ac305989) + mstore(0x91e40, 0x026b22a95158558c49ec12b12612ea6258efe4fb0280d2f8d9a5abf471bd47da) +mstore(0x91e60, mload(0x70ee0)) +success := and(eq(staticcall(gas(), 0x7, 0x91e20, 0x60, 0x91e20, 0x40), 1), success) +mstore(0x91e80, mload(0x91da0)) + mstore(0x91ea0, mload(0x91dc0)) +mstore(0x91ec0, mload(0x91e20)) + mstore(0x91ee0, mload(0x91e40)) +success := and(eq(staticcall(gas(), 0x6, 0x91e80, 0x80, 0x91e80, 0x40), 1), success) +mstore(0x91f00, 0x03d09b6ed1cc93d5c3e988844279f9b59d414894312985e6e1591bc97c1d062b) + mstore(0x91f20, 0x1b5cc9e02c1585b6f60b0829b763625eabcac269dc0aa2f7880a77e6c4b2bcf3) +mstore(0x91f40, mload(0x70f00)) +success := and(eq(staticcall(gas(), 0x7, 0x91f00, 0x60, 0x91f00, 0x40), 1), success) +mstore(0x91f60, mload(0x91e80)) + mstore(0x91f80, mload(0x91ea0)) +mstore(0x91fa0, mload(0x91f00)) + mstore(0x91fc0, mload(0x91f20)) +success := and(eq(staticcall(gas(), 0x6, 0x91f60, 0x80, 0x91f60, 0x40), 1), success) +mstore(0x91fe0, 0x29fdb5939d5470108e06c1048277c40482da71396e0858a91923406aa0d39dfc) + mstore(0x92000, 0x052dcc88ab084b6a023653f2806ce51f21df89a4a2e1974943f2286323617c0c) +mstore(0x92020, mload(0x70f20)) +success := and(eq(staticcall(gas(), 0x7, 0x91fe0, 0x60, 0x91fe0, 0x40), 1), success) +mstore(0x92040, mload(0x91f60)) + mstore(0x92060, mload(0x91f80)) +mstore(0x92080, mload(0x91fe0)) + mstore(0x920a0, mload(0x92000)) +success := and(eq(staticcall(gas(), 0x6, 0x92040, 0x80, 0x92040, 0x40), 1), success) +mstore(0x920c0, 0x1c1caa713e3fa91957bb49af11f52f5ada3ed7769de6d8bf2ac106264573b6a1) + mstore(0x920e0, 0x1f74133462b774fc604735c8692cc6a8fd25cacde183aa6b0494f84b664ed045) +mstore(0x92100, mload(0x70f40)) +success := and(eq(staticcall(gas(), 0x7, 0x920c0, 0x60, 0x920c0, 0x40), 1), success) +mstore(0x92120, mload(0x92040)) + mstore(0x92140, mload(0x92060)) +mstore(0x92160, mload(0x920c0)) + mstore(0x92180, mload(0x920e0)) +success := and(eq(staticcall(gas(), 0x6, 0x92120, 0x80, 0x92120, 0x40), 1), success) +mstore(0x921a0, 0x2ed07b85c0e5392c0bc56338bb125df5eedf057a508443f11f9107bf900d5f0b) + mstore(0x921c0, 0x0f3fcae3c63bf0e1ba305f8fd5ded3d32a731be3a158d4e77fbcc6d7b92f064e) +mstore(0x921e0, mload(0x70f60)) +success := and(eq(staticcall(gas(), 0x7, 0x921a0, 0x60, 0x921a0, 0x40), 1), success) +mstore(0x92200, mload(0x92120)) + mstore(0x92220, mload(0x92140)) +mstore(0x92240, mload(0x921a0)) + mstore(0x92260, mload(0x921c0)) +success := and(eq(staticcall(gas(), 0x6, 0x92200, 0x80, 0x92200, 0x40), 1), success) +mstore(0x92280, 0x18d14349ef247af120e1bdd058ef1a60f9a0a3b475a307f79c4bb4ccd81d17cb) + mstore(0x922a0, 0x080a82b6f35ab7ae69bd0f2becadb3fa83c75353e8d8eca4cba82881f75d893a) +mstore(0x922c0, mload(0x70f80)) +success := and(eq(staticcall(gas(), 0x7, 0x92280, 0x60, 0x92280, 0x40), 1), success) +mstore(0x922e0, mload(0x92200)) + mstore(0x92300, mload(0x92220)) +mstore(0x92320, mload(0x92280)) + mstore(0x92340, mload(0x922a0)) +success := and(eq(staticcall(gas(), 0x6, 0x922e0, 0x80, 0x922e0, 0x40), 1), success) +mstore(0x92360, 0x0a073b437c1760c8541ac23421c148691b469ae81dd47ec5908b03633a4f0ecf) + mstore(0x92380, 0x1fd0ac359bf32bbcbcd059cde45242c4d5050f2c7e4b539cc42ca62dc95a5ae4) +mstore(0x923a0, mload(0x70fa0)) +success := and(eq(staticcall(gas(), 0x7, 0x92360, 0x60, 0x92360, 0x40), 1), success) +mstore(0x923c0, mload(0x922e0)) + mstore(0x923e0, mload(0x92300)) +mstore(0x92400, mload(0x92360)) + mstore(0x92420, mload(0x92380)) +success := and(eq(staticcall(gas(), 0x6, 0x923c0, 0x80, 0x923c0, 0x40), 1), success) +mstore(0x92440, 0x0b03f28816991ce06c1ce75e85e6ce96afb122d2ff9dab667ab0aeee80835c78) + mstore(0x92460, 0x139014463d3d31113e50857c9e4e9757818cad632f2b19d5a9d7a2626ab96353) +mstore(0x92480, mload(0x70fc0)) +success := and(eq(staticcall(gas(), 0x7, 0x92440, 0x60, 0x92440, 0x40), 1), success) +mstore(0x924a0, mload(0x923c0)) + mstore(0x924c0, mload(0x923e0)) +mstore(0x924e0, mload(0x92440)) + mstore(0x92500, mload(0x92460)) +success := and(eq(staticcall(gas(), 0x6, 0x924a0, 0x80, 0x924a0, 0x40), 1), success) +mstore(0x92520, 0x0a71f9a0f8d9477e94d792ec355f0a02660065757a5eef0f86f54c960678175d) + mstore(0x92540, 0x2ddc11caba0614a667d31906b0e82ecdcdd330f63e5bea903f6ffe643149b039) +mstore(0x92560, mload(0x70fe0)) +success := and(eq(staticcall(gas(), 0x7, 0x92520, 0x60, 0x92520, 0x40), 1), success) +mstore(0x92580, mload(0x924a0)) + mstore(0x925a0, mload(0x924c0)) +mstore(0x925c0, mload(0x92520)) + mstore(0x925e0, mload(0x92540)) +success := and(eq(staticcall(gas(), 0x6, 0x92580, 0x80, 0x92580, 0x40), 1), success) +mstore(0x92600, 0x1f62904e8f1c2f9fa8b7ccaf5877e09fa4c9d6c7bf65904a4f059cfb78440f59) + mstore(0x92620, 0x0d28a20a355aab510051e678f5b3163d6b509a0b93437232bf829b6acf88713b) +mstore(0x92640, mload(0x71000)) +success := and(eq(staticcall(gas(), 0x7, 0x92600, 0x60, 0x92600, 0x40), 1), success) +mstore(0x92660, mload(0x92580)) + mstore(0x92680, mload(0x925a0)) +mstore(0x926a0, mload(0x92600)) + mstore(0x926c0, mload(0x92620)) +success := and(eq(staticcall(gas(), 0x6, 0x92660, 0x80, 0x92660, 0x40), 1), success) +mstore(0x926e0, 0x1feccfa9409776433d385d83a0608fd65d5a52caa845f0f8e70fee31033491cc) + mstore(0x92700, 0x166fdcd5da6402c1f632a5efa8f3e4b1c0308bce9c63a8ecd45cf7d1a7248896) +mstore(0x92720, mload(0x71020)) +success := and(eq(staticcall(gas(), 0x7, 0x926e0, 0x60, 0x926e0, 0x40), 1), success) +mstore(0x92740, mload(0x92660)) + mstore(0x92760, mload(0x92680)) +mstore(0x92780, mload(0x926e0)) + mstore(0x927a0, mload(0x92700)) +success := and(eq(staticcall(gas(), 0x6, 0x92740, 0x80, 0x92740, 0x40), 1), success) +mstore(0x927c0, 0x0dd74f0afc1e1eed8b56c8b8af429308e6910edae6cbc4f1b50e025451fb142c) + mstore(0x927e0, 0x243e887f5fe21d9ea388f3eb92ff2b618564b6807f1e8050c7aa47c35b8c2e26) +mstore(0x92800, mload(0x71040)) +success := and(eq(staticcall(gas(), 0x7, 0x927c0, 0x60, 0x927c0, 0x40), 1), success) +mstore(0x92820, mload(0x92740)) + mstore(0x92840, mload(0x92760)) +mstore(0x92860, mload(0x927c0)) + mstore(0x92880, mload(0x927e0)) +success := and(eq(staticcall(gas(), 0x6, 0x92820, 0x80, 0x92820, 0x40), 1), success) +mstore(0x928a0, 0x1ab13168459039b9fd90283f1faa2d4ef3f997762271a5fc2c754fe143870747) + mstore(0x928c0, 0x1c762b08989905cf425620db0edff41f0c67f4ef77c6293178ee1b6e04016b93) +mstore(0x928e0, mload(0x71060)) +success := and(eq(staticcall(gas(), 0x7, 0x928a0, 0x60, 0x928a0, 0x40), 1), success) +mstore(0x92900, mload(0x92820)) + mstore(0x92920, mload(0x92840)) +mstore(0x92940, mload(0x928a0)) + mstore(0x92960, mload(0x928c0)) +success := and(eq(staticcall(gas(), 0x6, 0x92900, 0x80, 0x92900, 0x40), 1), success) +mstore(0x92980, 0x0886cc0f9028520b818f25e80f509ecd5e05f1626c56cf1d103b816ed8279ccf) + mstore(0x929a0, 0x2f0700c52d3b02f09c1debc276416682190bc1b43ad1d90968dc2fba5b4778b6) +mstore(0x929c0, mload(0x71080)) +success := and(eq(staticcall(gas(), 0x7, 0x92980, 0x60, 0x92980, 0x40), 1), success) +mstore(0x929e0, mload(0x92900)) + mstore(0x92a00, mload(0x92920)) +mstore(0x92a20, mload(0x92980)) + mstore(0x92a40, mload(0x929a0)) +success := and(eq(staticcall(gas(), 0x6, 0x929e0, 0x80, 0x929e0, 0x40), 1), success) +mstore(0x92a60, 0x0ca783ee94b5cf940cf154123242cd1665d5034deb5aabb6b21a910ef4a1ebe0) + mstore(0x92a80, 0x15231a87348357f99ca06898c6eda81d2c20c3b3ddbe17dbf2af08df7477a47a) +mstore(0x92aa0, mload(0x710a0)) +success := and(eq(staticcall(gas(), 0x7, 0x92a60, 0x60, 0x92a60, 0x40), 1), success) +mstore(0x92ac0, mload(0x929e0)) + mstore(0x92ae0, mload(0x92a00)) +mstore(0x92b00, mload(0x92a60)) + mstore(0x92b20, mload(0x92a80)) +success := and(eq(staticcall(gas(), 0x6, 0x92ac0, 0x80, 0x92ac0, 0x40), 1), success) +mstore(0x92b40, 0x0e5bb8ddf4cf28b05f43febcb2f72eb6ce6b5c75d2130534694df34545425832) + mstore(0x92b60, 0x1f1c1d7114e504896961caa04f5b253c2172d0d1eea5bb5d4d6fb5b329a6491d) +mstore(0x92b80, mload(0x710c0)) +success := and(eq(staticcall(gas(), 0x7, 0x92b40, 0x60, 0x92b40, 0x40), 1), success) +mstore(0x92ba0, mload(0x92ac0)) + mstore(0x92bc0, mload(0x92ae0)) +mstore(0x92be0, mload(0x92b40)) + mstore(0x92c00, mload(0x92b60)) +success := and(eq(staticcall(gas(), 0x6, 0x92ba0, 0x80, 0x92ba0, 0x40), 1), success) +mstore(0x92c20, 0x050f566659f675ca570da3366583eb53453b41dbf22f0d7184234afdf7da9173) + mstore(0x92c40, 0x0495561637bcf125188afbe6d1da182b2b4f26ed64eabf0db9ca78b9f3c84727) +mstore(0x92c60, mload(0x710e0)) +success := and(eq(staticcall(gas(), 0x7, 0x92c20, 0x60, 0x92c20, 0x40), 1), success) +mstore(0x92c80, mload(0x92ba0)) + mstore(0x92ca0, mload(0x92bc0)) +mstore(0x92cc0, mload(0x92c20)) + mstore(0x92ce0, mload(0x92c40)) +success := and(eq(staticcall(gas(), 0x6, 0x92c80, 0x80, 0x92c80, 0x40), 1), success) +mstore(0x92d00, 0x080b2ec1b49163d9c5cc3a445b339778095f49c538e3cf43465de655352dc679) + mstore(0x92d20, 0x10172fd91713f3eb74c1754f27b42f255501e76e881ee91239ca2d0b7dabb659) +mstore(0x92d40, mload(0x71100)) +success := and(eq(staticcall(gas(), 0x7, 0x92d00, 0x60, 0x92d00, 0x40), 1), success) +mstore(0x92d60, mload(0x92c80)) + mstore(0x92d80, mload(0x92ca0)) +mstore(0x92da0, mload(0x92d00)) + mstore(0x92dc0, mload(0x92d20)) +success := and(eq(staticcall(gas(), 0x6, 0x92d60, 0x80, 0x92d60, 0x40), 1), success) +mstore(0x92de0, 0x291fee2ed2f9432e1e378271e2b013586942120e528b3c104220670a28a3580a) + mstore(0x92e00, 0x1eb2305480891be1cf265515c7c663cf08bfaa63e77bfd8d542713bc2632c254) +mstore(0x92e20, mload(0x71120)) +success := and(eq(staticcall(gas(), 0x7, 0x92de0, 0x60, 0x92de0, 0x40), 1), success) +mstore(0x92e40, mload(0x92d60)) + mstore(0x92e60, mload(0x92d80)) +mstore(0x92e80, mload(0x92de0)) + mstore(0x92ea0, mload(0x92e00)) +success := and(eq(staticcall(gas(), 0x6, 0x92e40, 0x80, 0x92e40, 0x40), 1), success) +mstore(0x92ec0, 0x1c708f440b96d352f589e246edb79b2291fe0e943a21d4da0f8fb71f41db10db) + mstore(0x92ee0, 0x14242b7e00f0558025bf9818dfe5e7dafee5763cd8a41fcc3a6b867c320c5913) +mstore(0x92f00, mload(0x71140)) +success := and(eq(staticcall(gas(), 0x7, 0x92ec0, 0x60, 0x92ec0, 0x40), 1), success) +mstore(0x92f20, mload(0x92e40)) + mstore(0x92f40, mload(0x92e60)) +mstore(0x92f60, mload(0x92ec0)) + mstore(0x92f80, mload(0x92ee0)) +success := and(eq(staticcall(gas(), 0x6, 0x92f20, 0x80, 0x92f20, 0x40), 1), success) +mstore(0x92fa0, 0x09644bba1d7984bed1415029c93092b8ba05e5ab9b7090dc6dfa120ecf595e7f) + mstore(0x92fc0, 0x0f87b2984aa30b490792ae5a6c09197607d90f08a84f7bd65ee98294a0607781) +mstore(0x92fe0, mload(0x71160)) +success := and(eq(staticcall(gas(), 0x7, 0x92fa0, 0x60, 0x92fa0, 0x40), 1), success) +mstore(0x93000, mload(0x92f20)) + mstore(0x93020, mload(0x92f40)) +mstore(0x93040, mload(0x92fa0)) + mstore(0x93060, mload(0x92fc0)) +success := and(eq(staticcall(gas(), 0x6, 0x93000, 0x80, 0x93000, 0x40), 1), success) +mstore(0x93080, 0x23fc8672c0a3d152ba987810bac63de482ab64affd74b70c630a127cc23e1930) + mstore(0x930a0, 0x2bd41e6080b6eb678dc1f339c86491e567c8ca53d269f249b86a4b2eddfb6b94) +mstore(0x930c0, mload(0x71180)) +success := and(eq(staticcall(gas(), 0x7, 0x93080, 0x60, 0x93080, 0x40), 1), success) +mstore(0x930e0, mload(0x93000)) + mstore(0x93100, mload(0x93020)) +mstore(0x93120, mload(0x93080)) + mstore(0x93140, mload(0x930a0)) +success := and(eq(staticcall(gas(), 0x6, 0x930e0, 0x80, 0x930e0, 0x40), 1), success) +mstore(0x93160, 0x23ceb3e1b7c78efba3227b0933c02de2780feff4d848f38951a6ace6e7299f56) + mstore(0x93180, 0x09cf52d23747a2fe3da8fef109bec0aca7f7fa347058adb06ea637f319fb6dd8) +mstore(0x931a0, mload(0x711a0)) +success := and(eq(staticcall(gas(), 0x7, 0x93160, 0x60, 0x93160, 0x40), 1), success) +mstore(0x931c0, mload(0x930e0)) + mstore(0x931e0, mload(0x93100)) +mstore(0x93200, mload(0x93160)) + mstore(0x93220, mload(0x93180)) +success := and(eq(staticcall(gas(), 0x6, 0x931c0, 0x80, 0x931c0, 0x40), 1), success) +mstore(0x93240, 0x1aed9052ea1435e6efb6f6d3bef9844035d1516cddb79be5b634f9a30bb152b4) + mstore(0x93260, 0x03709f1b6bb1c0f7ef493ce9f6eb388c11e75767e81e4dd27738ba2d8369f0c0) +mstore(0x93280, mload(0x711c0)) +success := and(eq(staticcall(gas(), 0x7, 0x93240, 0x60, 0x93240, 0x40), 1), success) +mstore(0x932a0, mload(0x931c0)) + mstore(0x932c0, mload(0x931e0)) +mstore(0x932e0, mload(0x93240)) + mstore(0x93300, mload(0x93260)) +success := and(eq(staticcall(gas(), 0x6, 0x932a0, 0x80, 0x932a0, 0x40), 1), success) +mstore(0x93320, 0x2bfbc204a1a20a635e1ec638e38db10526aaa0a0231524738da8aa56115c963b) + mstore(0x93340, 0x204d91131a625a5ab77dfd4b782e05a85086cdb66d3f67c8ed9667c06cf6c876) +mstore(0x93360, mload(0x711e0)) +success := and(eq(staticcall(gas(), 0x7, 0x93320, 0x60, 0x93320, 0x40), 1), success) +mstore(0x93380, mload(0x932a0)) + mstore(0x933a0, mload(0x932c0)) +mstore(0x933c0, mload(0x93320)) + mstore(0x933e0, mload(0x93340)) +success := and(eq(staticcall(gas(), 0x6, 0x93380, 0x80, 0x93380, 0x40), 1), success) +mstore(0x93400, 0x0b5e174b9389085ce7228bb317ee2888279bd515806b31224864c196177dcb63) + mstore(0x93420, 0x015b40ed12b1ac421589627d49dd560f57cc3225eb9223299824edc62b914217) +mstore(0x93440, mload(0x71200)) +success := and(eq(staticcall(gas(), 0x7, 0x93400, 0x60, 0x93400, 0x40), 1), success) +mstore(0x93460, mload(0x93380)) + mstore(0x93480, mload(0x933a0)) +mstore(0x934a0, mload(0x93400)) + mstore(0x934c0, mload(0x93420)) +success := and(eq(staticcall(gas(), 0x6, 0x93460, 0x80, 0x93460, 0x40), 1), success) +mstore(0x934e0, 0x18e4c178ad68f5f6b1ae264374ffdc04901930c9b095e81fa86fa8b0938b95b2) + mstore(0x93500, 0x272d57ccd35cd43a88352ff5cd983e7762e5bc4dd23718d6ad0698d48835f963) +mstore(0x93520, mload(0x71220)) +success := and(eq(staticcall(gas(), 0x7, 0x934e0, 0x60, 0x934e0, 0x40), 1), success) +mstore(0x93540, mload(0x93460)) + mstore(0x93560, mload(0x93480)) +mstore(0x93580, mload(0x934e0)) + mstore(0x935a0, mload(0x93500)) +success := and(eq(staticcall(gas(), 0x6, 0x93540, 0x80, 0x93540, 0x40), 1), success) +mstore(0x935c0, 0x1ba9446ae7b2c9c821cb4021c8455b4624a9d85ddf0c87398748b9ce2a357ea7) + mstore(0x935e0, 0x2808fb34b1906b952dd2408838198aec7921cf4a91160614a617b80572430ee7) +mstore(0x93600, mload(0x71240)) +success := and(eq(staticcall(gas(), 0x7, 0x935c0, 0x60, 0x935c0, 0x40), 1), success) +mstore(0x93620, mload(0x93540)) + mstore(0x93640, mload(0x93560)) +mstore(0x93660, mload(0x935c0)) + mstore(0x93680, mload(0x935e0)) +success := and(eq(staticcall(gas(), 0x6, 0x93620, 0x80, 0x93620, 0x40), 1), success) +mstore(0x936a0, 0x11d18bac423be13731e918a91130fd6e9f7b6c2c6b139cec22b927440067a937) + mstore(0x936c0, 0x2df71ecffd827376c127bdcb91fe4baff43623fc70591c964cebb1ff3288c65d) +mstore(0x936e0, mload(0x71260)) +success := and(eq(staticcall(gas(), 0x7, 0x936a0, 0x60, 0x936a0, 0x40), 1), success) +mstore(0x93700, mload(0x93620)) + mstore(0x93720, mload(0x93640)) +mstore(0x93740, mload(0x936a0)) + mstore(0x93760, mload(0x936c0)) +success := and(eq(staticcall(gas(), 0x6, 0x93700, 0x80, 0x93700, 0x40), 1), success) +mstore(0x93780, 0x305b1f62342b689e6a3eaec22eb81de037d4db9bac004da28fbac06163f3d6ab) + mstore(0x937a0, 0x10289521925da5a6bade37e260e249dfc62344015fe7abd4b7b0324c5b2379b3) +mstore(0x937c0, mload(0x71280)) +success := and(eq(staticcall(gas(), 0x7, 0x93780, 0x60, 0x93780, 0x40), 1), success) +mstore(0x937e0, mload(0x93700)) + mstore(0x93800, mload(0x93720)) +mstore(0x93820, mload(0x93780)) + mstore(0x93840, mload(0x937a0)) +success := and(eq(staticcall(gas(), 0x6, 0x937e0, 0x80, 0x937e0, 0x40), 1), success) +mstore(0x93860, 0x1a1f697b56602107002f25c9e2abe5db4e4ceb2427381e1349487939101d229f) + mstore(0x93880, 0x25696b1638aa01854c424f9d2cb379ab23311408cec8035c27b1eeb3a34cc034) +mstore(0x938a0, mload(0x712a0)) +success := and(eq(staticcall(gas(), 0x7, 0x93860, 0x60, 0x93860, 0x40), 1), success) +mstore(0x938c0, mload(0x937e0)) + mstore(0x938e0, mload(0x93800)) +mstore(0x93900, mload(0x93860)) + mstore(0x93920, mload(0x93880)) +success := and(eq(staticcall(gas(), 0x6, 0x938c0, 0x80, 0x938c0, 0x40), 1), success) +mstore(0x93940, 0x08332af5fbfd9d923d98076c18eb91b36f9f8e738665615e7703fd2ce939db99) + mstore(0x93960, 0x25ce10b3b4bfc834b1f8d1fbe751da885352500176ad509f46ff162b92ac2f0c) +mstore(0x93980, mload(0x712c0)) +success := and(eq(staticcall(gas(), 0x7, 0x93940, 0x60, 0x93940, 0x40), 1), success) +mstore(0x939a0, mload(0x938c0)) + mstore(0x939c0, mload(0x938e0)) +mstore(0x939e0, mload(0x93940)) + mstore(0x93a00, mload(0x93960)) +success := and(eq(staticcall(gas(), 0x6, 0x939a0, 0x80, 0x939a0, 0x40), 1), success) +mstore(0x93a20, 0x19a9915888c8be9cd4b329769f837705549e4c103cf02ada52f5cd981d8b2ab1) + mstore(0x93a40, 0x1924471098e45293b7aa119d963740b919a86ca36c4fd7617008263412333a42) +mstore(0x93a60, mload(0x712e0)) +success := and(eq(staticcall(gas(), 0x7, 0x93a20, 0x60, 0x93a20, 0x40), 1), success) +mstore(0x93a80, mload(0x939a0)) + mstore(0x93aa0, mload(0x939c0)) +mstore(0x93ac0, mload(0x93a20)) + mstore(0x93ae0, mload(0x93a40)) +success := and(eq(staticcall(gas(), 0x6, 0x93a80, 0x80, 0x93a80, 0x40), 1), success) +mstore(0x93b00, 0x04dd952c352bcb5236d53ec795f8cedb1f0066b0a6929db4e322af70ce5332c6) + mstore(0x93b20, 0x26d81d83ba8da96c3182a5a33f0afc907f9d43d5b76e072827de11ca900680f7) +mstore(0x93b40, mload(0x71300)) +success := and(eq(staticcall(gas(), 0x7, 0x93b00, 0x60, 0x93b00, 0x40), 1), success) +mstore(0x93b60, mload(0x93a80)) + mstore(0x93b80, mload(0x93aa0)) +mstore(0x93ba0, mload(0x93b00)) + mstore(0x93bc0, mload(0x93b20)) +success := and(eq(staticcall(gas(), 0x6, 0x93b60, 0x80, 0x93b60, 0x40), 1), success) +mstore(0x93be0, 0x0c69d6622958edc91d03d45557ffef30649c1875f642294a1a9a5adb3209dbd6) + mstore(0x93c00, 0x00a6875123ccb6ef09529194ff66e96ef5dc2fea990ad61fcbe5d79295e8d761) +mstore(0x93c20, mload(0x71320)) +success := and(eq(staticcall(gas(), 0x7, 0x93be0, 0x60, 0x93be0, 0x40), 1), success) +mstore(0x93c40, mload(0x93b60)) + mstore(0x93c60, mload(0x93b80)) +mstore(0x93c80, mload(0x93be0)) + mstore(0x93ca0, mload(0x93c00)) +success := and(eq(staticcall(gas(), 0x6, 0x93c40, 0x80, 0x93c40, 0x40), 1), success) +mstore(0x93cc0, 0x2916e36d7cef5b2a9258a791896a2f69bdf4cfd95ce9bbe05c225b3a8957feb0) + mstore(0x93ce0, 0x20919f785b3367a314c5bf99ab94aba5952ef02485ec1c4417940fa4e4b0e758) +mstore(0x93d00, mload(0x71340)) +success := and(eq(staticcall(gas(), 0x7, 0x93cc0, 0x60, 0x93cc0, 0x40), 1), success) +mstore(0x93d20, mload(0x93c40)) + mstore(0x93d40, mload(0x93c60)) +mstore(0x93d60, mload(0x93cc0)) + mstore(0x93d80, mload(0x93ce0)) +success := and(eq(staticcall(gas(), 0x6, 0x93d20, 0x80, 0x93d20, 0x40), 1), success) +mstore(0x93da0, 0x15ec44f1297b619ce9d7f012e4c4d0cb3e60ee898580578c69dfa77ea9edf036) + mstore(0x93dc0, 0x269b53b51f2cef0c1138607476d9c11e142ca6ba1dabf6a3c1697246e4467dc5) +mstore(0x93de0, mload(0x71360)) +success := and(eq(staticcall(gas(), 0x7, 0x93da0, 0x60, 0x93da0, 0x40), 1), success) +mstore(0x93e00, mload(0x93d20)) + mstore(0x93e20, mload(0x93d40)) +mstore(0x93e40, mload(0x93da0)) + mstore(0x93e60, mload(0x93dc0)) +success := and(eq(staticcall(gas(), 0x6, 0x93e00, 0x80, 0x93e00, 0x40), 1), success) +mstore(0x93e80, 0x03153dce92bfe5b845b7afa0fa731c058d24432c3805ada8918b3c2bde88c624) + mstore(0x93ea0, 0x19c64e9dd1fa2155f020ea3fe843e028ec549a1d83f2bc39faadecf6739e3811) +mstore(0x93ec0, mload(0x71380)) +success := and(eq(staticcall(gas(), 0x7, 0x93e80, 0x60, 0x93e80, 0x40), 1), success) +mstore(0x93ee0, mload(0x93e00)) + mstore(0x93f00, mload(0x93e20)) +mstore(0x93f20, mload(0x93e80)) + mstore(0x93f40, mload(0x93ea0)) +success := and(eq(staticcall(gas(), 0x6, 0x93ee0, 0x80, 0x93ee0, 0x40), 1), success) +mstore(0x93f60, 0x07b5e4ac1c639531ccfe080a3b162e617861ebb01ea0124f5a3efbcc3d02067f) + mstore(0x93f80, 0x2c0de1cf783e7d2ca2271d4695ad08684641a22c593c711c87f4caa4bffb09c8) +mstore(0x93fa0, mload(0x713a0)) +success := and(eq(staticcall(gas(), 0x7, 0x93f60, 0x60, 0x93f60, 0x40), 1), success) +mstore(0x93fc0, mload(0x93ee0)) + mstore(0x93fe0, mload(0x93f00)) +mstore(0x94000, mload(0x93f60)) + mstore(0x94020, mload(0x93f80)) +success := and(eq(staticcall(gas(), 0x6, 0x93fc0, 0x80, 0x93fc0, 0x40), 1), success) +mstore(0x94040, 0x009c187409348a110fa56a39299b15bf992730c8d9670a540c65321a33fa79df) + mstore(0x94060, 0x05ef207838cf5ff8815b99d1abc7c46c8f42473aa3473c83069c7b1df6ced350) +mstore(0x94080, mload(0x713c0)) +success := and(eq(staticcall(gas(), 0x7, 0x94040, 0x60, 0x94040, 0x40), 1), success) +mstore(0x940a0, mload(0x93fc0)) + mstore(0x940c0, mload(0x93fe0)) +mstore(0x940e0, mload(0x94040)) + mstore(0x94100, mload(0x94060)) +success := and(eq(staticcall(gas(), 0x6, 0x940a0, 0x80, 0x940a0, 0x40), 1), success) +mstore(0x94120, 0x0b10df80ad1691f6debe8cc7eb7c0ff8630196adcbaa54fb5eb2230704e3d24d) + mstore(0x94140, 0x1bddff5c92ea5dd4bbc52f6d3d52c6409d0494004a1e7ee0b3738a05020a9dfb) +mstore(0x94160, mload(0x713e0)) +success := and(eq(staticcall(gas(), 0x7, 0x94120, 0x60, 0x94120, 0x40), 1), success) +mstore(0x94180, mload(0x940a0)) + mstore(0x941a0, mload(0x940c0)) +mstore(0x941c0, mload(0x94120)) + mstore(0x941e0, mload(0x94140)) +success := and(eq(staticcall(gas(), 0x6, 0x94180, 0x80, 0x94180, 0x40), 1), success) +mstore(0x94200, 0x0809211625d7a38387a910a2d48433fda6de1563851af32713d3443a35fc59f9) + mstore(0x94220, 0x30076ea9db0df40dee78df77a78f45ef9ac4fbb9d3e7aa1acc5d0b814e2ba8d0) +mstore(0x94240, mload(0x71400)) +success := and(eq(staticcall(gas(), 0x7, 0x94200, 0x60, 0x94200, 0x40), 1), success) +mstore(0x94260, mload(0x94180)) + mstore(0x94280, mload(0x941a0)) +mstore(0x942a0, mload(0x94200)) + mstore(0x942c0, mload(0x94220)) +success := and(eq(staticcall(gas(), 0x6, 0x94260, 0x80, 0x94260, 0x40), 1), success) +mstore(0x942e0, 0x221a53194b337cf2083a1e4973256688e860a65d6166066b8ed4277098114f0b) + mstore(0x94300, 0x12b63c7358451ec510bf04459422f4c3fe3f53555635a666476f4a5b47d3dbce) +mstore(0x94320, mload(0x71420)) +success := and(eq(staticcall(gas(), 0x7, 0x942e0, 0x60, 0x942e0, 0x40), 1), success) +mstore(0x94340, mload(0x94260)) + mstore(0x94360, mload(0x94280)) +mstore(0x94380, mload(0x942e0)) + mstore(0x943a0, mload(0x94300)) +success := and(eq(staticcall(gas(), 0x6, 0x94340, 0x80, 0x94340, 0x40), 1), success) +mstore(0x943c0, 0x0019a4af79ce29c2367b9c51f0a14655e1d2e2b4b945d1b89915feb0180c4ab9) + mstore(0x943e0, 0x2ddf45674acc1758fd000cb06b95bf8e34b735864a335e3b245d35020b04c131) +mstore(0x94400, mload(0x71440)) +success := and(eq(staticcall(gas(), 0x7, 0x943c0, 0x60, 0x943c0, 0x40), 1), success) +mstore(0x94420, mload(0x94340)) + mstore(0x94440, mload(0x94360)) +mstore(0x94460, mload(0x943c0)) + mstore(0x94480, mload(0x943e0)) +success := and(eq(staticcall(gas(), 0x6, 0x94420, 0x80, 0x94420, 0x40), 1), success) +mstore(0x944a0, 0x2a0d2f2744f7597a976a2b97ae6f69975670d4b65bb7f4299f60d348a94b3a30) + mstore(0x944c0, 0x1650a0ab286ceccb4f541a330ec28c31d6114b177d5e4668bcd17f37fb39e565) +mstore(0x944e0, mload(0x71460)) +success := and(eq(staticcall(gas(), 0x7, 0x944a0, 0x60, 0x944a0, 0x40), 1), success) +mstore(0x94500, mload(0x94420)) + mstore(0x94520, mload(0x94440)) +mstore(0x94540, mload(0x944a0)) + mstore(0x94560, mload(0x944c0)) +success := and(eq(staticcall(gas(), 0x6, 0x94500, 0x80, 0x94500, 0x40), 1), success) +mstore(0x94580, 0x2ed4a7f6ead3897671e4bc1b0135c63e38ef57b261452ccd1bf63d88aa1688f4) + mstore(0x945a0, 0x0390f1ce840a95b555ddb292f752ab37ce32e2927ca769c320068f1dc0b72c7b) +mstore(0x945c0, mload(0x71480)) +success := and(eq(staticcall(gas(), 0x7, 0x94580, 0x60, 0x94580, 0x40), 1), success) +mstore(0x945e0, mload(0x94500)) + mstore(0x94600, mload(0x94520)) +mstore(0x94620, mload(0x94580)) + mstore(0x94640, mload(0x945a0)) +success := and(eq(staticcall(gas(), 0x6, 0x945e0, 0x80, 0x945e0, 0x40), 1), success) +mstore(0x94660, 0x0b1a2ac2fe8c85bad6cf82c17d46a9f4d29c5aab4b6675726c6fbab37a6a9b0b) + mstore(0x94680, 0x2e2bce5b11df05a630d71775b97b446e6d4729833af6c9969e7375272e900bf2) +mstore(0x946a0, mload(0x714a0)) +success := and(eq(staticcall(gas(), 0x7, 0x94660, 0x60, 0x94660, 0x40), 1), success) +mstore(0x946c0, mload(0x945e0)) + mstore(0x946e0, mload(0x94600)) +mstore(0x94700, mload(0x94660)) + mstore(0x94720, mload(0x94680)) +success := and(eq(staticcall(gas(), 0x6, 0x946c0, 0x80, 0x946c0, 0x40), 1), success) +mstore(0x94740, 0x06865ae5fe61e9227c432b94fd8d466c203c40579370eb93d1d54641463a3b79) + mstore(0x94760, 0x1504a85e2f13ae6e006c0a733efe2bf679171186ab689a19ebfe48eb68064e9e) +mstore(0x94780, mload(0x714c0)) +success := and(eq(staticcall(gas(), 0x7, 0x94740, 0x60, 0x94740, 0x40), 1), success) +mstore(0x947a0, mload(0x946c0)) + mstore(0x947c0, mload(0x946e0)) +mstore(0x947e0, mload(0x94740)) + mstore(0x94800, mload(0x94760)) +success := and(eq(staticcall(gas(), 0x6, 0x947a0, 0x80, 0x947a0, 0x40), 1), success) +mstore(0x94820, 0x2c7ed3c94e56e52a861db5e93dfd83b254b39efbd27947c5609d3f1e620faa3b) + mstore(0x94840, 0x05416e1127dd3bbe31601e6520e7777c8e4ec60bcde7b1e59660048cfee5f709) +mstore(0x94860, mload(0x714e0)) +success := and(eq(staticcall(gas(), 0x7, 0x94820, 0x60, 0x94820, 0x40), 1), success) +mstore(0x94880, mload(0x947a0)) + mstore(0x948a0, mload(0x947c0)) +mstore(0x948c0, mload(0x94820)) + mstore(0x948e0, mload(0x94840)) +success := and(eq(staticcall(gas(), 0x6, 0x94880, 0x80, 0x94880, 0x40), 1), success) +mstore(0x94900, 0x0b9dcaedc64af4a43a4b903250c5da0958af45c3baef48add79e7e6b46c7312c) + mstore(0x94920, 0x2f25ec4a81a656c060949710140b927d8887080700653f355dda2c8a949b3d59) +mstore(0x94940, mload(0x71500)) +success := and(eq(staticcall(gas(), 0x7, 0x94900, 0x60, 0x94900, 0x40), 1), success) +mstore(0x94960, mload(0x94880)) + mstore(0x94980, mload(0x948a0)) +mstore(0x949a0, mload(0x94900)) + mstore(0x949c0, mload(0x94920)) +success := and(eq(staticcall(gas(), 0x6, 0x94960, 0x80, 0x94960, 0x40), 1), success) +mstore(0x949e0, 0x0db254e9db086dc9c8dffc2dbf8abee13bbd618071e90ae81fe44039dd96038d) + mstore(0x94a00, 0x2454417cda46d8665984e0bf19a406b6e4019d65f1110bddc516aafae3c65312) +mstore(0x94a20, mload(0x71520)) +success := and(eq(staticcall(gas(), 0x7, 0x949e0, 0x60, 0x949e0, 0x40), 1), success) +mstore(0x94a40, mload(0x94960)) + mstore(0x94a60, mload(0x94980)) +mstore(0x94a80, mload(0x949e0)) + mstore(0x94aa0, mload(0x94a00)) +success := and(eq(staticcall(gas(), 0x6, 0x94a40, 0x80, 0x94a40, 0x40), 1), success) +mstore(0x94ac0, 0x23a4220486d91a8551989f46af519dad416a2f8e2b4c13ef138eb962cbe705b4) + mstore(0x94ae0, 0x2c584d2678148a05633163866f8483c92c9492fe13dca3602c9b21a133a00529) +mstore(0x94b00, mload(0x71540)) +success := and(eq(staticcall(gas(), 0x7, 0x94ac0, 0x60, 0x94ac0, 0x40), 1), success) +mstore(0x94b20, mload(0x94a40)) + mstore(0x94b40, mload(0x94a60)) +mstore(0x94b60, mload(0x94ac0)) + mstore(0x94b80, mload(0x94ae0)) +success := and(eq(staticcall(gas(), 0x6, 0x94b20, 0x80, 0x94b20, 0x40), 1), success) +mstore(0x94ba0, 0x1b9e7f43c268a9fe0d11a947e85ee873359b02149ce8500587c63cfdcba5afca) + mstore(0x94bc0, 0x1166c10ccc712cadf138a854b6aa765e57fcab4e554f77fbcc6e76304b48bd24) +mstore(0x94be0, mload(0x71560)) +success := and(eq(staticcall(gas(), 0x7, 0x94ba0, 0x60, 0x94ba0, 0x40), 1), success) +mstore(0x94c00, mload(0x94b20)) + mstore(0x94c20, mload(0x94b40)) +mstore(0x94c40, mload(0x94ba0)) + mstore(0x94c60, mload(0x94bc0)) +success := and(eq(staticcall(gas(), 0x6, 0x94c00, 0x80, 0x94c00, 0x40), 1), success) +mstore(0x94c80, 0x2182b42964b8ea8986889a4a0487a4c1643346a118c8e4ed89d44c57692a2b1b) + mstore(0x94ca0, 0x0f045dcfe71271a967d22e82d9931437b9550f5aa8fe2ecff93ed5befaa1fdde) +mstore(0x94cc0, mload(0x71580)) +success := and(eq(staticcall(gas(), 0x7, 0x94c80, 0x60, 0x94c80, 0x40), 1), success) +mstore(0x94ce0, mload(0x94c00)) + mstore(0x94d00, mload(0x94c20)) +mstore(0x94d20, mload(0x94c80)) + mstore(0x94d40, mload(0x94ca0)) +success := and(eq(staticcall(gas(), 0x6, 0x94ce0, 0x80, 0x94ce0, 0x40), 1), success) +mstore(0x94d60, 0x10c466fbbc3d268569677a0a1dba5b6a5e17284902db68040a85751f13fd7e7c) + mstore(0x94d80, 0x07aa1d89765ec39ee4002801e4cc6b3057e23a7d103edc766b417cc29ca31ccb) +mstore(0x94da0, mload(0x715a0)) +success := and(eq(staticcall(gas(), 0x7, 0x94d60, 0x60, 0x94d60, 0x40), 1), success) +mstore(0x94dc0, mload(0x94ce0)) + mstore(0x94de0, mload(0x94d00)) +mstore(0x94e00, mload(0x94d60)) + mstore(0x94e20, mload(0x94d80)) +success := and(eq(staticcall(gas(), 0x6, 0x94dc0, 0x80, 0x94dc0, 0x40), 1), success) +mstore(0x94e40, 0x09547e30f2044c6de98fb350b9a98a0293bff15450c5e3ec8314ab6da2d38655) + mstore(0x94e60, 0x28ef254eeb153a3b44119392ce3221cca85386b016a1623dd9b91089790f79aa) +mstore(0x94e80, mload(0x715c0)) +success := and(eq(staticcall(gas(), 0x7, 0x94e40, 0x60, 0x94e40, 0x40), 1), success) +mstore(0x94ea0, mload(0x94dc0)) + mstore(0x94ec0, mload(0x94de0)) +mstore(0x94ee0, mload(0x94e40)) + mstore(0x94f00, mload(0x94e60)) +success := and(eq(staticcall(gas(), 0x6, 0x94ea0, 0x80, 0x94ea0, 0x40), 1), success) +mstore(0x94f20, 0x128013ad31fed0f38bdb92afc27c9628b0dd4d2a5ecc341ed27ac40dd420be73) + mstore(0x94f40, 0x031560718c4e7f8d65c55db448b6e1c7cd97c7bbb4240e27fe74520b26421f35) +mstore(0x94f60, mload(0x715e0)) +success := and(eq(staticcall(gas(), 0x7, 0x94f20, 0x60, 0x94f20, 0x40), 1), success) +mstore(0x94f80, mload(0x94ea0)) + mstore(0x94fa0, mload(0x94ec0)) +mstore(0x94fc0, mload(0x94f20)) + mstore(0x94fe0, mload(0x94f40)) +success := and(eq(staticcall(gas(), 0x6, 0x94f80, 0x80, 0x94f80, 0x40), 1), success) +mstore(0x95000, 0x16ede7f26661c4f3b543480556881a051322d10d0b3c73ad4eaa055906f33e8c) + mstore(0x95020, 0x0d2291e766b386e4724db01307b57c57c959b87ff085cc44a8da96f2ad1f6546) +mstore(0x95040, mload(0x71600)) +success := and(eq(staticcall(gas(), 0x7, 0x95000, 0x60, 0x95000, 0x40), 1), success) +mstore(0x95060, mload(0x94f80)) + mstore(0x95080, mload(0x94fa0)) +mstore(0x950a0, mload(0x95000)) + mstore(0x950c0, mload(0x95020)) +success := and(eq(staticcall(gas(), 0x6, 0x95060, 0x80, 0x95060, 0x40), 1), success) +mstore(0x950e0, 0x237878520b24273c6d8df9bd91264656abeedac6bd0a41737eb0f1005c9325a0) + mstore(0x95100, 0x21db119e4fc27776393b90f72843812933055c00914aad50c94850c950ba48db) +mstore(0x95120, mload(0x71620)) +success := and(eq(staticcall(gas(), 0x7, 0x950e0, 0x60, 0x950e0, 0x40), 1), success) +mstore(0x95140, mload(0x95060)) + mstore(0x95160, mload(0x95080)) +mstore(0x95180, mload(0x950e0)) + mstore(0x951a0, mload(0x95100)) +success := and(eq(staticcall(gas(), 0x6, 0x95140, 0x80, 0x95140, 0x40), 1), success) +mstore(0x951c0, 0x1381f205b6edea9e143c3d2ac17da06c9c27715441d17ec2d5d5bc54f3f18dbb) + mstore(0x951e0, 0x2f2b296ee62807d3aa6c89c02dc207c492ae0becaf2b02d068517f2f1b290bb2) +mstore(0x95200, mload(0x71640)) +success := and(eq(staticcall(gas(), 0x7, 0x951c0, 0x60, 0x951c0, 0x40), 1), success) +mstore(0x95220, mload(0x95140)) + mstore(0x95240, mload(0x95160)) +mstore(0x95260, mload(0x951c0)) + mstore(0x95280, mload(0x951e0)) +success := and(eq(staticcall(gas(), 0x6, 0x95220, 0x80, 0x95220, 0x40), 1), success) +mstore(0x952a0, 0x0fcd1d54efea36a5807be9685213a025beae3cce8315f2b935dee2c1d973aa8e) + mstore(0x952c0, 0x1e7a4ce038a00c286204879be7e6ba1ba6cf58f82944664c1a04bc73022b8481) +mstore(0x952e0, mload(0x71660)) +success := and(eq(staticcall(gas(), 0x7, 0x952a0, 0x60, 0x952a0, 0x40), 1), success) +mstore(0x95300, mload(0x95220)) + mstore(0x95320, mload(0x95240)) +mstore(0x95340, mload(0x952a0)) + mstore(0x95360, mload(0x952c0)) +success := and(eq(staticcall(gas(), 0x6, 0x95300, 0x80, 0x95300, 0x40), 1), success) +mstore(0x95380, 0x2450fe49b6fca86080526dc628165f61324c02dab81330703ba48180b80e02e5) + mstore(0x953a0, 0x2b0846d20e2190d6c9c6a750b04124f99ecd26c0f2472546d32f472e3cac05ef) +mstore(0x953c0, mload(0x71680)) +success := and(eq(staticcall(gas(), 0x7, 0x95380, 0x60, 0x95380, 0x40), 1), success) +mstore(0x953e0, mload(0x95300)) + mstore(0x95400, mload(0x95320)) +mstore(0x95420, mload(0x95380)) + mstore(0x95440, mload(0x953a0)) +success := and(eq(staticcall(gas(), 0x6, 0x953e0, 0x80, 0x953e0, 0x40), 1), success) +mstore(0x95460, 0x0a38ae783a783e046aca3cba5a16277222d5f4031c3db663ef9d4cafb3520d99) + mstore(0x95480, 0x167334e314f218a36e6fdbc840e0b82211ba5e5a60582f3fadb9f1fcf7a81b5c) +mstore(0x954a0, mload(0x716a0)) +success := and(eq(staticcall(gas(), 0x7, 0x95460, 0x60, 0x95460, 0x40), 1), success) +mstore(0x954c0, mload(0x953e0)) + mstore(0x954e0, mload(0x95400)) +mstore(0x95500, mload(0x95460)) + mstore(0x95520, mload(0x95480)) +success := and(eq(staticcall(gas(), 0x6, 0x954c0, 0x80, 0x954c0, 0x40), 1), success) +mstore(0x95540, 0x1c302bd0b15b6534cbd1ba105f3b4efae8f7711f6d2df4a477558ded493c6fbb) + mstore(0x95560, 0x1f18cc02cadc7cd1c2e589b9c3e020092b3a7e45677fc39ca45a49d9bec85f9f) +mstore(0x95580, mload(0x716c0)) +success := and(eq(staticcall(gas(), 0x7, 0x95540, 0x60, 0x95540, 0x40), 1), success) +mstore(0x955a0, mload(0x954c0)) + mstore(0x955c0, mload(0x954e0)) +mstore(0x955e0, mload(0x95540)) + mstore(0x95600, mload(0x95560)) +success := and(eq(staticcall(gas(), 0x6, 0x955a0, 0x80, 0x955a0, 0x40), 1), success) +mstore(0x95620, 0x07d573ec0bfbab157d767a6b8f748c2d31ef044908425946655c0887f2063048) + mstore(0x95640, 0x0e0d389e20234a78bb42150a7b97d3c9753d8efedc5b5651fdf71fd561cfa320) +mstore(0x95660, mload(0x716e0)) +success := and(eq(staticcall(gas(), 0x7, 0x95620, 0x60, 0x95620, 0x40), 1), success) +mstore(0x95680, mload(0x955a0)) + mstore(0x956a0, mload(0x955c0)) +mstore(0x956c0, mload(0x95620)) + mstore(0x956e0, mload(0x95640)) +success := and(eq(staticcall(gas(), 0x6, 0x95680, 0x80, 0x95680, 0x40), 1), success) +mstore(0x95700, 0x23b4341a4d81f2cfed2944721bf610ecdc10ce296373991699bca07cc02c234f) + mstore(0x95720, 0x05defab5f9686635a4c53f43b69eeb2f0dae49bc271496ccecda0d5440d9ef10) +mstore(0x95740, mload(0x71700)) +success := and(eq(staticcall(gas(), 0x7, 0x95700, 0x60, 0x95700, 0x40), 1), success) +mstore(0x95760, mload(0x95680)) + mstore(0x95780, mload(0x956a0)) +mstore(0x957a0, mload(0x95700)) + mstore(0x957c0, mload(0x95720)) +success := and(eq(staticcall(gas(), 0x6, 0x95760, 0x80, 0x95760, 0x40), 1), success) +mstore(0x957e0, 0x0c35f7173e7e7ccecec5f8f2200ee68e656ad513689313eae9af9fd8847564fe) + mstore(0x95800, 0x0f167de626d53fdff939d73dd29ffc7c4b92bdf6da3584e1eaa7a0ad563e396e) +mstore(0x95820, mload(0x71720)) +success := and(eq(staticcall(gas(), 0x7, 0x957e0, 0x60, 0x957e0, 0x40), 1), success) +mstore(0x95840, mload(0x95760)) + mstore(0x95860, mload(0x95780)) +mstore(0x95880, mload(0x957e0)) + mstore(0x958a0, mload(0x95800)) +success := and(eq(staticcall(gas(), 0x6, 0x95840, 0x80, 0x95840, 0x40), 1), success) +mstore(0x958c0, 0x19ffbf23953cc1e7707a0251d89b226ca6c57cee323ddc02b3d1bbb7e363d75a) + mstore(0x958e0, 0x25e0bac491c9d71cdc424f28a7b0c66fe71617df64c424984556525213dbc7e3) +mstore(0x95900, mload(0x71740)) +success := and(eq(staticcall(gas(), 0x7, 0x958c0, 0x60, 0x958c0, 0x40), 1), success) +mstore(0x95920, mload(0x95840)) + mstore(0x95940, mload(0x95860)) +mstore(0x95960, mload(0x958c0)) + mstore(0x95980, mload(0x958e0)) +success := and(eq(staticcall(gas(), 0x6, 0x95920, 0x80, 0x95920, 0x40), 1), success) +mstore(0x959a0, 0x226a662e3d1a0afa38101fffabbf0ac7ec0dd2b62e4d4c97f234576a1f2cd313) + mstore(0x959c0, 0x25d27ace1516972246e8d42de2d09d0274da7f5e1d902ab22909b4f22c327b30) +mstore(0x959e0, mload(0x71760)) +success := and(eq(staticcall(gas(), 0x7, 0x959a0, 0x60, 0x959a0, 0x40), 1), success) +mstore(0x95a00, mload(0x95920)) + mstore(0x95a20, mload(0x95940)) +mstore(0x95a40, mload(0x959a0)) + mstore(0x95a60, mload(0x959c0)) +success := and(eq(staticcall(gas(), 0x6, 0x95a00, 0x80, 0x95a00, 0x40), 1), success) +mstore(0x95a80, 0x284056155212990ba0d5ac7635c17fc8703f91f565cc1070bc719ebb1a1ceb66) + mstore(0x95aa0, 0x0d4049b89aa8a6249c492eb451ffe69c1300ab6989692274ee841c293307c437) +mstore(0x95ac0, mload(0x71780)) +success := and(eq(staticcall(gas(), 0x7, 0x95a80, 0x60, 0x95a80, 0x40), 1), success) +mstore(0x95ae0, mload(0x95a00)) + mstore(0x95b00, mload(0x95a20)) +mstore(0x95b20, mload(0x95a80)) + mstore(0x95b40, mload(0x95aa0)) +success := and(eq(staticcall(gas(), 0x6, 0x95ae0, 0x80, 0x95ae0, 0x40), 1), success) +mstore(0x95b60, 0x08538710d0697c6315026c30cb761475451d9c16c573d411d19be3e42bf4adf7) + mstore(0x95b80, 0x0c6979cbf6c058f033e27ab9ae6e1292ef18302707e8c246fffdcf0fda028cbe) +mstore(0x95ba0, mload(0x717a0)) +success := and(eq(staticcall(gas(), 0x7, 0x95b60, 0x60, 0x95b60, 0x40), 1), success) +mstore(0x95bc0, mload(0x95ae0)) + mstore(0x95be0, mload(0x95b00)) +mstore(0x95c00, mload(0x95b60)) + mstore(0x95c20, mload(0x95b80)) +success := and(eq(staticcall(gas(), 0x6, 0x95bc0, 0x80, 0x95bc0, 0x40), 1), success) +mstore(0x95c40, 0x0b696c5b616286b4d56c224a6bad3265e9360fbd49c28b6163b96578dd4cbf6b) + mstore(0x95c60, 0x1dbadded726b1c4f4c378bd9cc3f5ddb4f07a8f4840f02fccba079e3d4a81652) +mstore(0x95c80, mload(0x717c0)) +success := and(eq(staticcall(gas(), 0x7, 0x95c40, 0x60, 0x95c40, 0x40), 1), success) +mstore(0x95ca0, mload(0x95bc0)) + mstore(0x95cc0, mload(0x95be0)) +mstore(0x95ce0, mload(0x95c40)) + mstore(0x95d00, mload(0x95c60)) +success := and(eq(staticcall(gas(), 0x6, 0x95ca0, 0x80, 0x95ca0, 0x40), 1), success) +mstore(0x95d20, 0x0292f214f75ced7ec4c0f53f3bed536066555f33f7666e9564a2501228afd95e) + mstore(0x95d40, 0x1a65dd39b1c2f5508f7f6c3b91b9007e8d78df74525c7f99f0411f0153cb42fd) +mstore(0x95d60, mload(0x717e0)) +success := and(eq(staticcall(gas(), 0x7, 0x95d20, 0x60, 0x95d20, 0x40), 1), success) +mstore(0x95d80, mload(0x95ca0)) + mstore(0x95da0, mload(0x95cc0)) +mstore(0x95dc0, mload(0x95d20)) + mstore(0x95de0, mload(0x95d40)) +success := and(eq(staticcall(gas(), 0x6, 0x95d80, 0x80, 0x95d80, 0x40), 1), success) +mstore(0x95e00, 0x2e5379275404bdb605f15e7978b9018df441f7536b5d05abf61a8ead498ec537) + mstore(0x95e20, 0x22a0b7e2f4b73a491960b0897d9e5d42868d7d04482a9c18d4d808517b1aca1b) +mstore(0x95e40, mload(0x71800)) +success := and(eq(staticcall(gas(), 0x7, 0x95e00, 0x60, 0x95e00, 0x40), 1), success) +mstore(0x95e60, mload(0x95d80)) + mstore(0x95e80, mload(0x95da0)) +mstore(0x95ea0, mload(0x95e00)) + mstore(0x95ec0, mload(0x95e20)) +success := and(eq(staticcall(gas(), 0x6, 0x95e60, 0x80, 0x95e60, 0x40), 1), success) +mstore(0x95ee0, 0x0a1d2566d5ad1278716a91e36cd5f88c0c09c37d608a3f7b10f89dc570127dc9) + mstore(0x95f00, 0x1c88356a014b124fa6bf184ae1415aad97f6271f4f423bb4605777df398a4042) +mstore(0x95f20, mload(0x71820)) +success := and(eq(staticcall(gas(), 0x7, 0x95ee0, 0x60, 0x95ee0, 0x40), 1), success) +mstore(0x95f40, mload(0x95e60)) + mstore(0x95f60, mload(0x95e80)) +mstore(0x95f80, mload(0x95ee0)) + mstore(0x95fa0, mload(0x95f00)) +success := and(eq(staticcall(gas(), 0x6, 0x95f40, 0x80, 0x95f40, 0x40), 1), success) +mstore(0x95fc0, 0x05c2e12a9e2a9bd3b0b009d944e790b4239a2bef3dd6b8209e049eba5f3aa673) + mstore(0x95fe0, 0x1dc5720a656690d63ba339fce9adc13630433acd77caf29f9378deb493897be9) +mstore(0x96000, mload(0x71840)) +success := and(eq(staticcall(gas(), 0x7, 0x95fc0, 0x60, 0x95fc0, 0x40), 1), success) +mstore(0x96020, mload(0x95f40)) + mstore(0x96040, mload(0x95f60)) +mstore(0x96060, mload(0x95fc0)) + mstore(0x96080, mload(0x95fe0)) +success := and(eq(staticcall(gas(), 0x6, 0x96020, 0x80, 0x96020, 0x40), 1), success) +mstore(0x960a0, 0x07802adf32df256e98ba611bb17ac4e352ae1ec448cdf6d721e5ce4f2ba15e77) + mstore(0x960c0, 0x0252ce269d581a4e20b3ba66bd7ce4fccabe6a027cb24b7c5c07e004d190b6b8) +mstore(0x960e0, mload(0x71860)) +success := and(eq(staticcall(gas(), 0x7, 0x960a0, 0x60, 0x960a0, 0x40), 1), success) +mstore(0x96100, mload(0x96020)) + mstore(0x96120, mload(0x96040)) +mstore(0x96140, mload(0x960a0)) + mstore(0x96160, mload(0x960c0)) +success := and(eq(staticcall(gas(), 0x6, 0x96100, 0x80, 0x96100, 0x40), 1), success) +mstore(0x96180, 0x16ef749ce3e3e5b421f963615411abac97422d8c583dc30ad2d7a3075626b355) + mstore(0x961a0, 0x0059807440d5935396c14461d9e992bfd18e78041042439ffba684f01f3a02a9) +mstore(0x961c0, mload(0x71880)) +success := and(eq(staticcall(gas(), 0x7, 0x96180, 0x60, 0x96180, 0x40), 1), success) +mstore(0x961e0, mload(0x96100)) + mstore(0x96200, mload(0x96120)) +mstore(0x96220, mload(0x96180)) + mstore(0x96240, mload(0x961a0)) +success := and(eq(staticcall(gas(), 0x6, 0x961e0, 0x80, 0x961e0, 0x40), 1), success) +mstore(0x96260, 0x01f0c9f75f7d347b5b7365fc099a7024dc1a1e9d9fd2f28a0ca8e9f4d40a551b) + mstore(0x96280, 0x185362ee565d0713db5e36fc1d4193569e98dabbef069627f0fc4a874bdce71c) +mstore(0x962a0, mload(0x718a0)) +success := and(eq(staticcall(gas(), 0x7, 0x96260, 0x60, 0x96260, 0x40), 1), success) +mstore(0x962c0, mload(0x961e0)) + mstore(0x962e0, mload(0x96200)) +mstore(0x96300, mload(0x96260)) + mstore(0x96320, mload(0x96280)) +success := and(eq(staticcall(gas(), 0x6, 0x962c0, 0x80, 0x962c0, 0x40), 1), success) +mstore(0x96340, 0x08fdb7e0083e2c216e5f42878efe4c6adb6a6fbf378b430cc88c70c2399bf315) + mstore(0x96360, 0x10a6bba7038880ae47703ef01666083ffba61d04da0a9273509b9ee3c85b71d2) +mstore(0x96380, mload(0x718c0)) +success := and(eq(staticcall(gas(), 0x7, 0x96340, 0x60, 0x96340, 0x40), 1), success) +mstore(0x963a0, mload(0x962c0)) + mstore(0x963c0, mload(0x962e0)) +mstore(0x963e0, mload(0x96340)) + mstore(0x96400, mload(0x96360)) +success := and(eq(staticcall(gas(), 0x6, 0x963a0, 0x80, 0x963a0, 0x40), 1), success) +mstore(0x96420, 0x2fdcab8a3129ef8ed124bf3ada2b801dbcbff0cbbded3bbf102e76630ad3feb7) + mstore(0x96440, 0x169af4506000698305812d4870a7ffce21da78f64fc33e872ede88c99eb5aa51) +mstore(0x96460, mload(0x718e0)) +success := and(eq(staticcall(gas(), 0x7, 0x96420, 0x60, 0x96420, 0x40), 1), success) +mstore(0x96480, mload(0x963a0)) + mstore(0x964a0, mload(0x963c0)) +mstore(0x964c0, mload(0x96420)) + mstore(0x964e0, mload(0x96440)) +success := and(eq(staticcall(gas(), 0x6, 0x96480, 0x80, 0x96480, 0x40), 1), success) +mstore(0x96500, 0x28708fdb2dda9579239d3071b816b6f2f79e4cc04159398ce825fab07286e58d) + mstore(0x96520, 0x0b77d7f896958788222b1301184fd2c3651f6f7b5b138861fa090ad84f97510b) +mstore(0x96540, mload(0x71900)) +success := and(eq(staticcall(gas(), 0x7, 0x96500, 0x60, 0x96500, 0x40), 1), success) +mstore(0x96560, mload(0x96480)) + mstore(0x96580, mload(0x964a0)) +mstore(0x965a0, mload(0x96500)) + mstore(0x965c0, mload(0x96520)) +success := and(eq(staticcall(gas(), 0x6, 0x96560, 0x80, 0x96560, 0x40), 1), success) +mstore(0x965e0, 0x2daf1391b025b594f3829e52e6cb271a93f57f26227d3f36e713fa39bbebe77e) + mstore(0x96600, 0x0484382af19dc7093773634e81cd68ddb203650774f302db05813024115a7bda) +mstore(0x96620, mload(0x71920)) +success := and(eq(staticcall(gas(), 0x7, 0x965e0, 0x60, 0x965e0, 0x40), 1), success) +mstore(0x96640, mload(0x96560)) + mstore(0x96660, mload(0x96580)) +mstore(0x96680, mload(0x965e0)) + mstore(0x966a0, mload(0x96600)) +success := and(eq(staticcall(gas(), 0x6, 0x96640, 0x80, 0x96640, 0x40), 1), success) +mstore(0x966c0, 0x1441518d0e8b430ea785bab0029168c0f28da762c810bc92cafb7a77aa42c3de) + mstore(0x966e0, 0x06f53509c9a598a7a3286ab315d5781605ccfbebcda3cc2b1a351ac6c617df07) +mstore(0x96700, mload(0x71940)) +success := and(eq(staticcall(gas(), 0x7, 0x966c0, 0x60, 0x966c0, 0x40), 1), success) +mstore(0x96720, mload(0x96640)) + mstore(0x96740, mload(0x96660)) +mstore(0x96760, mload(0x966c0)) + mstore(0x96780, mload(0x966e0)) +success := and(eq(staticcall(gas(), 0x6, 0x96720, 0x80, 0x96720, 0x40), 1), success) +mstore(0x967a0, 0x22603d8d8dc01ea573e9a6741327b965bd9e2993c65ed6a93fecb2c037e61376) + mstore(0x967c0, 0x02215e50593303b26e5c7340a5607cd39ba0fd92062b554a8262f9c00b3ff4cd) +mstore(0x967e0, mload(0x71960)) +success := and(eq(staticcall(gas(), 0x7, 0x967a0, 0x60, 0x967a0, 0x40), 1), success) +mstore(0x96800, mload(0x96720)) + mstore(0x96820, mload(0x96740)) +mstore(0x96840, mload(0x967a0)) + mstore(0x96860, mload(0x967c0)) +success := and(eq(staticcall(gas(), 0x6, 0x96800, 0x80, 0x96800, 0x40), 1), success) +mstore(0x96880, 0x2bd1b84e540e9efbcf0d2c31ff71a2712722ab51b2fbc5f140e0f14d44a44b9d) + mstore(0x968a0, 0x194c28b373945052e5cdfdd2157d84dccf5190ba4a6abe8a60fb097569176eee) +mstore(0x968c0, mload(0x71980)) +success := and(eq(staticcall(gas(), 0x7, 0x96880, 0x60, 0x96880, 0x40), 1), success) +mstore(0x968e0, mload(0x96800)) + mstore(0x96900, mload(0x96820)) +mstore(0x96920, mload(0x96880)) + mstore(0x96940, mload(0x968a0)) +success := and(eq(staticcall(gas(), 0x6, 0x968e0, 0x80, 0x968e0, 0x40), 1), success) +mstore(0x96960, 0x2c683a5cd43054de08726e0beecb83cfb7ab118ed16705b3766ccc3bf3eaaa6b) + mstore(0x96980, 0x17ebc9ac9052654b164dc26a267f6034ff4b0601eb07d638a5b8606a0784dc74) +mstore(0x969a0, mload(0x719a0)) +success := and(eq(staticcall(gas(), 0x7, 0x96960, 0x60, 0x96960, 0x40), 1), success) +mstore(0x969c0, mload(0x968e0)) + mstore(0x969e0, mload(0x96900)) +mstore(0x96a00, mload(0x96960)) + mstore(0x96a20, mload(0x96980)) +success := and(eq(staticcall(gas(), 0x6, 0x969c0, 0x80, 0x969c0, 0x40), 1), success) +mstore(0x96a40, 0x2096cc6753e32b17599d4d8756f8ce351bb58d63cfa1f0fd021569e67b8af536) + mstore(0x96a60, 0x018f587f20629f9e49252d0bace59da1a4ccef85a68af3ff4e30a42796a3155f) +mstore(0x96a80, mload(0x719c0)) +success := and(eq(staticcall(gas(), 0x7, 0x96a40, 0x60, 0x96a40, 0x40), 1), success) +mstore(0x96aa0, mload(0x969c0)) + mstore(0x96ac0, mload(0x969e0)) +mstore(0x96ae0, mload(0x96a40)) + mstore(0x96b00, mload(0x96a60)) +success := and(eq(staticcall(gas(), 0x6, 0x96aa0, 0x80, 0x96aa0, 0x40), 1), success) +mstore(0x96b20, 0x0343193ec019660c46088d983e333307d5b5e1bf0dbc10c2938bd5a98a6cd15d) + mstore(0x96b40, 0x0aa8f842c3cc771d7192ccb7f65d57d79a239133cd5a3b49191151f974d7a0a7) +mstore(0x96b60, mload(0x719e0)) +success := and(eq(staticcall(gas(), 0x7, 0x96b20, 0x60, 0x96b20, 0x40), 1), success) +mstore(0x96b80, mload(0x96aa0)) + mstore(0x96ba0, mload(0x96ac0)) +mstore(0x96bc0, mload(0x96b20)) + mstore(0x96be0, mload(0x96b40)) +success := and(eq(staticcall(gas(), 0x6, 0x96b80, 0x80, 0x96b80, 0x40), 1), success) +mstore(0x96c00, 0x2d194c5d33f5dfaaf3e1960d19cf3dc235cdee0aaa5aa30e467f6f89dbb5c746) + mstore(0x96c20, 0x210ed01aa23de511675d7dcb9545a9b98fb943e0cea6ccd1dcb441ac99065dbc) +mstore(0x96c40, mload(0x71a00)) +success := and(eq(staticcall(gas(), 0x7, 0x96c00, 0x60, 0x96c00, 0x40), 1), success) +mstore(0x96c60, mload(0x96b80)) + mstore(0x96c80, mload(0x96ba0)) +mstore(0x96ca0, mload(0x96c00)) + mstore(0x96cc0, mload(0x96c20)) +success := and(eq(staticcall(gas(), 0x6, 0x96c60, 0x80, 0x96c60, 0x40), 1), success) +mstore(0x96ce0, 0x1016a58790e2bdbed8811707b264e82e21aa58508b6c63f37105ba0c96879c62) + mstore(0x96d00, 0x24a84b943845cc4c900d94a2146075fb67e4e67e382da3b22f570b403d033bb3) +mstore(0x96d20, mload(0x71a20)) +success := and(eq(staticcall(gas(), 0x7, 0x96ce0, 0x60, 0x96ce0, 0x40), 1), success) +mstore(0x96d40, mload(0x96c60)) + mstore(0x96d60, mload(0x96c80)) +mstore(0x96d80, mload(0x96ce0)) + mstore(0x96da0, mload(0x96d00)) +success := and(eq(staticcall(gas(), 0x6, 0x96d40, 0x80, 0x96d40, 0x40), 1), success) +mstore(0x96dc0, 0x04a94bb44b6bf9c98519d965cc4baf3e61b40236ca5a8c0e2ae1238033ca6525) + mstore(0x96de0, 0x1bfbb50ec5d37ff90a56c9554c608a42e55087ad8cd23c66ddc284485dbd32dd) +mstore(0x96e00, mload(0x71a40)) +success := and(eq(staticcall(gas(), 0x7, 0x96dc0, 0x60, 0x96dc0, 0x40), 1), success) +mstore(0x96e20, mload(0x96d40)) + mstore(0x96e40, mload(0x96d60)) +mstore(0x96e60, mload(0x96dc0)) + mstore(0x96e80, mload(0x96de0)) +success := and(eq(staticcall(gas(), 0x6, 0x96e20, 0x80, 0x96e20, 0x40), 1), success) +mstore(0x96ea0, 0x0af6d66505a0c0cb3c108477bc3613d16ac8e3c9940b5c6271c66d18d585bfcb) + mstore(0x96ec0, 0x249c6414739c607ddc8c52c7040f7f2b39f186bc4c4f62a4a212e2eaa85ed055) +mstore(0x96ee0, mload(0x71a60)) +success := and(eq(staticcall(gas(), 0x7, 0x96ea0, 0x60, 0x96ea0, 0x40), 1), success) +mstore(0x96f00, mload(0x96e20)) + mstore(0x96f20, mload(0x96e40)) +mstore(0x96f40, mload(0x96ea0)) + mstore(0x96f60, mload(0x96ec0)) +success := and(eq(staticcall(gas(), 0x6, 0x96f00, 0x80, 0x96f00, 0x40), 1), success) +mstore(0x96f80, 0x0953443ef8ce5c7f2d7df23b0427846e00f6c3ea63fabc222f65070f6de69091) + mstore(0x96fa0, 0x1a2c76eab5a2d392dc284d06852333ef6914eaef5bdcee3e5230e0adcd80213d) +mstore(0x96fc0, mload(0x71a80)) +success := and(eq(staticcall(gas(), 0x7, 0x96f80, 0x60, 0x96f80, 0x40), 1), success) +mstore(0x96fe0, mload(0x96f00)) + mstore(0x97000, mload(0x96f20)) +mstore(0x97020, mload(0x96f80)) + mstore(0x97040, mload(0x96fa0)) +success := and(eq(staticcall(gas(), 0x6, 0x96fe0, 0x80, 0x96fe0, 0x40), 1), success) +mstore(0x97060, 0x2615d1c3e5b66a2066cea85ab7b814eb71453cd66d72c508aed7c7de4aaf2c4b) + mstore(0x97080, 0x2e8893e3373f270929842693e0b0075bece8fa45284fdc90d9b6848b70d0efcf) +mstore(0x970a0, mload(0x71aa0)) +success := and(eq(staticcall(gas(), 0x7, 0x97060, 0x60, 0x97060, 0x40), 1), success) +mstore(0x970c0, mload(0x96fe0)) + mstore(0x970e0, mload(0x97000)) +mstore(0x97100, mload(0x97060)) + mstore(0x97120, mload(0x97080)) +success := and(eq(staticcall(gas(), 0x6, 0x970c0, 0x80, 0x970c0, 0x40), 1), success) +mstore(0x97140, 0x243e26ddb0c8108ca3975c557b1f959fcf2fa763d774196a08a4cee31e71a0f3) + mstore(0x97160, 0x2825d0577e9c7558a9f3571050ca166d049d2b24e0cd394c43718c192a6ce18d) +mstore(0x97180, mload(0x71ac0)) +success := and(eq(staticcall(gas(), 0x7, 0x97140, 0x60, 0x97140, 0x40), 1), success) +mstore(0x971a0, mload(0x970c0)) + mstore(0x971c0, mload(0x970e0)) +mstore(0x971e0, mload(0x97140)) + mstore(0x97200, mload(0x97160)) +success := and(eq(staticcall(gas(), 0x6, 0x971a0, 0x80, 0x971a0, 0x40), 1), success) +mstore(0x97220, 0x044e119cb1b32a173714c70b76f2df7a5b02ebae1b0abc56bd778db0ebe97f3f) + mstore(0x97240, 0x2f2131dc4eabefa1cf58fee19a8b6471440fb6a33a290a6dbe404aee6f00d704) +mstore(0x97260, mload(0x71ae0)) +success := and(eq(staticcall(gas(), 0x7, 0x97220, 0x60, 0x97220, 0x40), 1), success) +mstore(0x97280, mload(0x971a0)) + mstore(0x972a0, mload(0x971c0)) +mstore(0x972c0, mload(0x97220)) + mstore(0x972e0, mload(0x97240)) +success := and(eq(staticcall(gas(), 0x6, 0x97280, 0x80, 0x97280, 0x40), 1), success) +mstore(0x97300, 0x2167d3d6d00ea045c92beeb9470afde4748f458c2d9e5eb7d1e6b9fc1edbd047) + mstore(0x97320, 0x09ef9b213cbe6d027ee1e4ff89dc74366fa84bdfec3bbf4e6c126c0b7a94f87c) +mstore(0x97340, mload(0x71b00)) +success := and(eq(staticcall(gas(), 0x7, 0x97300, 0x60, 0x97300, 0x40), 1), success) +mstore(0x97360, mload(0x97280)) + mstore(0x97380, mload(0x972a0)) +mstore(0x973a0, mload(0x97300)) + mstore(0x973c0, mload(0x97320)) +success := and(eq(staticcall(gas(), 0x6, 0x97360, 0x80, 0x97360, 0x40), 1), success) +mstore(0x973e0, 0x1906812235b5823039e6b91406deb7a0f6a2014205443254b418da30bd514f66) + mstore(0x97400, 0x08ac05fa91c907a7eec35d2080b081e7379bb1d162c6f970b1a9207ac2f92a79) +mstore(0x97420, mload(0x71b20)) +success := and(eq(staticcall(gas(), 0x7, 0x973e0, 0x60, 0x973e0, 0x40), 1), success) +mstore(0x97440, mload(0x97360)) + mstore(0x97460, mload(0x97380)) +mstore(0x97480, mload(0x973e0)) + mstore(0x974a0, mload(0x97400)) +success := and(eq(staticcall(gas(), 0x6, 0x97440, 0x80, 0x97440, 0x40), 1), success) +mstore(0x974c0, 0x2504bd9b6c3ebaeefb22e666fc77c1ccf80a771f6dd600fdc161d32e5797c6df) + mstore(0x974e0, 0x0b8100efd5a9f76c987c7a88b0299f15080ee9d850b5b98f85a3cda94e2251b2) +mstore(0x97500, mload(0x71b40)) +success := and(eq(staticcall(gas(), 0x7, 0x974c0, 0x60, 0x974c0, 0x40), 1), success) +mstore(0x97520, mload(0x97440)) + mstore(0x97540, mload(0x97460)) +mstore(0x97560, mload(0x974c0)) + mstore(0x97580, mload(0x974e0)) +success := and(eq(staticcall(gas(), 0x6, 0x97520, 0x80, 0x97520, 0x40), 1), success) +mstore(0x975a0, 0x2af6b57ccc75b75ffcb3d9e17e7e8b264b81f3337f7577493cb9a16330b771a9) + mstore(0x975c0, 0x0b63cd923c5d96a3c51237c1cd97a7882fa49bb7eeaa4fc139abcaa741c805bd) +mstore(0x975e0, mload(0x71b60)) +success := and(eq(staticcall(gas(), 0x7, 0x975a0, 0x60, 0x975a0, 0x40), 1), success) +mstore(0x97600, mload(0x97520)) + mstore(0x97620, mload(0x97540)) +mstore(0x97640, mload(0x975a0)) + mstore(0x97660, mload(0x975c0)) +success := and(eq(staticcall(gas(), 0x6, 0x97600, 0x80, 0x97600, 0x40), 1), success) +mstore(0x97680, 0x1e84ff2043cbcec40f0c255b423b0106753b5eddf82d15244fd4a90cf279d483) + mstore(0x976a0, 0x1c8dc8b4971fa9c0f520da6414f09803d0893b6bc84de04f7837f75aefb68a67) +mstore(0x976c0, mload(0x71b80)) +success := and(eq(staticcall(gas(), 0x7, 0x97680, 0x60, 0x97680, 0x40), 1), success) +mstore(0x976e0, mload(0x97600)) + mstore(0x97700, mload(0x97620)) +mstore(0x97720, mload(0x97680)) + mstore(0x97740, mload(0x976a0)) +success := and(eq(staticcall(gas(), 0x6, 0x976e0, 0x80, 0x976e0, 0x40), 1), success) +mstore(0x97760, 0x0ac10938e2dc399586e44cd9f98cfd22d460912c10336ec94f4198f705a1c250) + mstore(0x97780, 0x17224aeba0d5ffe929ef90b1afd239b924dfe3840e2b5997727921dd7960aecd) +mstore(0x977a0, mload(0x71ba0)) +success := and(eq(staticcall(gas(), 0x7, 0x97760, 0x60, 0x97760, 0x40), 1), success) +mstore(0x977c0, mload(0x976e0)) + mstore(0x977e0, mload(0x97700)) +mstore(0x97800, mload(0x97760)) + mstore(0x97820, mload(0x97780)) +success := and(eq(staticcall(gas(), 0x6, 0x977c0, 0x80, 0x977c0, 0x40), 1), success) +mstore(0x97840, 0x1451fb87f19f66c1ea9f909ad20b4373670fb066e35934aac9a5a004b7955de2) + mstore(0x97860, 0x01214d74a2f4c5a45a5edf6593bad04aaca43ca1234b822fd22afc6ab8e9d911) +mstore(0x97880, mload(0x71bc0)) +success := and(eq(staticcall(gas(), 0x7, 0x97840, 0x60, 0x97840, 0x40), 1), success) +mstore(0x978a0, mload(0x977c0)) + mstore(0x978c0, mload(0x977e0)) +mstore(0x978e0, mload(0x97840)) + mstore(0x97900, mload(0x97860)) +success := and(eq(staticcall(gas(), 0x6, 0x978a0, 0x80, 0x978a0, 0x40), 1), success) +mstore(0x97920, 0x1859fc320e15364dccda0ec451690529a364f282d8e9d88f07f96128f1570f38) + mstore(0x97940, 0x2b5cb6a00c5ddf16b4b444a89c518ce482d5c642abd2bc7642d3673663dd8fa6) +mstore(0x97960, mload(0x71be0)) +success := and(eq(staticcall(gas(), 0x7, 0x97920, 0x60, 0x97920, 0x40), 1), success) +mstore(0x97980, mload(0x978a0)) + mstore(0x979a0, mload(0x978c0)) +mstore(0x979c0, mload(0x97920)) + mstore(0x979e0, mload(0x97940)) +success := and(eq(staticcall(gas(), 0x6, 0x97980, 0x80, 0x97980, 0x40), 1), success) +mstore(0x97a00, 0x0f8a03443994550b5ab0936e4d41f30a573dc19838289dd29ab584007a96a248) + mstore(0x97a20, 0x2d74a3b9ab63dda2400177e17b0df5e93dcb9f10378b8e10cb6824a73c67d9a5) +mstore(0x97a40, mload(0x71c00)) +success := and(eq(staticcall(gas(), 0x7, 0x97a00, 0x60, 0x97a00, 0x40), 1), success) +mstore(0x97a60, mload(0x97980)) + mstore(0x97a80, mload(0x979a0)) +mstore(0x97aa0, mload(0x97a00)) + mstore(0x97ac0, mload(0x97a20)) +success := and(eq(staticcall(gas(), 0x6, 0x97a60, 0x80, 0x97a60, 0x40), 1), success) +mstore(0x97ae0, 0x0d1a1bc75aa17f0fea5cc6fcd78182ea5b60c2f89a169fef0ad89a882746d66d) + mstore(0x97b00, 0x299eed069930d35a8b7c8c37fd33c85f09a1ccc103f29a78d12c76cf578b6c87) +mstore(0x97b20, mload(0x71c20)) +success := and(eq(staticcall(gas(), 0x7, 0x97ae0, 0x60, 0x97ae0, 0x40), 1), success) +mstore(0x97b40, mload(0x97a60)) + mstore(0x97b60, mload(0x97a80)) +mstore(0x97b80, mload(0x97ae0)) + mstore(0x97ba0, mload(0x97b00)) +success := and(eq(staticcall(gas(), 0x6, 0x97b40, 0x80, 0x97b40, 0x40), 1), success) +mstore(0x97bc0, 0x048333aae70e2c07cddc56a55dc037af593cdf1277eab612cd8fff65189e69b9) + mstore(0x97be0, 0x26833cc8440fc868642d237376517caa389223f18260a8745c0bc90d834c85bc) +mstore(0x97c00, mload(0x71c40)) +success := and(eq(staticcall(gas(), 0x7, 0x97bc0, 0x60, 0x97bc0, 0x40), 1), success) +mstore(0x97c20, mload(0x97b40)) + mstore(0x97c40, mload(0x97b60)) +mstore(0x97c60, mload(0x97bc0)) + mstore(0x97c80, mload(0x97be0)) +success := and(eq(staticcall(gas(), 0x6, 0x97c20, 0x80, 0x97c20, 0x40), 1), success) +mstore(0x97ca0, 0x209b8b0aaba8e75e5c7f496b32cf92f7995f43ea420404f6ded7b236af4803fd) + mstore(0x97cc0, 0x178fcdcde4ab2350a8bae3e717f8324233232921ec757872dfe5bfa14f158591) +mstore(0x97ce0, mload(0x71c60)) +success := and(eq(staticcall(gas(), 0x7, 0x97ca0, 0x60, 0x97ca0, 0x40), 1), success) +mstore(0x97d00, mload(0x97c20)) + mstore(0x97d20, mload(0x97c40)) +mstore(0x97d40, mload(0x97ca0)) + mstore(0x97d60, mload(0x97cc0)) +success := and(eq(staticcall(gas(), 0x6, 0x97d00, 0x80, 0x97d00, 0x40), 1), success) +mstore(0x97d80, 0x03992238f80fa1fe97d141c65453d4a6daf14d343b5cd2eca36a106fe43bee2c) + mstore(0x97da0, 0x2a6efc955690c55e4db66e140347e0f4e3aa1866655500d31df5e13cdd38063d) +mstore(0x97dc0, mload(0x71c80)) +success := and(eq(staticcall(gas(), 0x7, 0x97d80, 0x60, 0x97d80, 0x40), 1), success) +mstore(0x97de0, mload(0x97d00)) + mstore(0x97e00, mload(0x97d20)) +mstore(0x97e20, mload(0x97d80)) + mstore(0x97e40, mload(0x97da0)) +success := and(eq(staticcall(gas(), 0x6, 0x97de0, 0x80, 0x97de0, 0x40), 1), success) +mstore(0x97e60, 0x1f69eeb92d8cd376872f12de638f128e8f7652db644e6cb7cd1fbb6b05d73655) + mstore(0x97e80, 0x14fdf552ab6f82c4614dfc7dd0d9ddc04ec5e0ba3ff339388301da40a5c0dd84) +mstore(0x97ea0, mload(0x71ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x97e60, 0x60, 0x97e60, 0x40), 1), success) +mstore(0x97ec0, mload(0x97de0)) + mstore(0x97ee0, mload(0x97e00)) +mstore(0x97f00, mload(0x97e60)) + mstore(0x97f20, mload(0x97e80)) +success := and(eq(staticcall(gas(), 0x6, 0x97ec0, 0x80, 0x97ec0, 0x40), 1), success) +mstore(0x97f40, 0x0ef20f35d48d7f075272c502cea5cb5a9837620db92a775e5eafbf6c95b719d5) + mstore(0x97f60, 0x0ed4112bfbc16a1992b2692359338abd529a92b9f0ae2f6f3fa5d7c5ec1942f7) +mstore(0x97f80, mload(0x71cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x97f40, 0x60, 0x97f40, 0x40), 1), success) +mstore(0x97fa0, mload(0x97ec0)) + mstore(0x97fc0, mload(0x97ee0)) +mstore(0x97fe0, mload(0x97f40)) + mstore(0x98000, mload(0x97f60)) +success := and(eq(staticcall(gas(), 0x6, 0x97fa0, 0x80, 0x97fa0, 0x40), 1), success) +mstore(0x98020, 0x16f1b40859a67841201b9ab4a885f670d9593705e3c5fb0eecb0429df8d51618) + mstore(0x98040, 0x068a019a15a9ac6bbee833b1e9303c126108d05737cf8a29b8801c6d20e16271) +mstore(0x98060, mload(0x71ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x98020, 0x60, 0x98020, 0x40), 1), success) +mstore(0x98080, mload(0x97fa0)) + mstore(0x980a0, mload(0x97fc0)) +mstore(0x980c0, mload(0x98020)) + mstore(0x980e0, mload(0x98040)) +success := and(eq(staticcall(gas(), 0x6, 0x98080, 0x80, 0x98080, 0x40), 1), success) +mstore(0x98100, 0x075bc9a65a824246eba3dd2e2249aa2ba375d9dc8365e6337db14530a5f0096a) + mstore(0x98120, 0x0ccd44de49afa68962a9fec8098bc800e78be330be23e6f95c71b4807cbdda29) +mstore(0x98140, mload(0x71d00)) +success := and(eq(staticcall(gas(), 0x7, 0x98100, 0x60, 0x98100, 0x40), 1), success) +mstore(0x98160, mload(0x98080)) + mstore(0x98180, mload(0x980a0)) +mstore(0x981a0, mload(0x98100)) + mstore(0x981c0, mload(0x98120)) +success := and(eq(staticcall(gas(), 0x6, 0x98160, 0x80, 0x98160, 0x40), 1), success) +mstore(0x981e0, 0x2fab57dc808b0f5f4a89ca7d3b799620f07742326dc46d44f25c883ebd67e2fe) + mstore(0x98200, 0x0e3db8eca4f30e5d952aadc3e5368f2d596eb1a86018d70a8777587f603b4bc5) +mstore(0x98220, mload(0x71d20)) +success := and(eq(staticcall(gas(), 0x7, 0x981e0, 0x60, 0x981e0, 0x40), 1), success) +mstore(0x98240, mload(0x98160)) + mstore(0x98260, mload(0x98180)) +mstore(0x98280, mload(0x981e0)) + mstore(0x982a0, mload(0x98200)) +success := and(eq(staticcall(gas(), 0x6, 0x98240, 0x80, 0x98240, 0x40), 1), success) +mstore(0x982c0, 0x210138d4615beef72444bc2649ac42b14f89f3b6ec00b247f17e0ef12d69dd5a) + mstore(0x982e0, 0x01cd3fe3a2f48dcf907905e9569b56c272583d1bf2bf6808101ffbe7c44df4e5) +mstore(0x98300, mload(0x71d40)) +success := and(eq(staticcall(gas(), 0x7, 0x982c0, 0x60, 0x982c0, 0x40), 1), success) +mstore(0x98320, mload(0x98240)) + mstore(0x98340, mload(0x98260)) +mstore(0x98360, mload(0x982c0)) + mstore(0x98380, mload(0x982e0)) +success := and(eq(staticcall(gas(), 0x6, 0x98320, 0x80, 0x98320, 0x40), 1), success) +mstore(0x983a0, 0x16ef5916acaa0a63abb44babd9c5d0b386850bfde5f12e344692571b13503ed8) + mstore(0x983c0, 0x2cf887351426065d3515c5369b4130f0697adfc8c23cde5d16da0853632260c6) +mstore(0x983e0, mload(0x71d60)) +success := and(eq(staticcall(gas(), 0x7, 0x983a0, 0x60, 0x983a0, 0x40), 1), success) +mstore(0x98400, mload(0x98320)) + mstore(0x98420, mload(0x98340)) +mstore(0x98440, mload(0x983a0)) + mstore(0x98460, mload(0x983c0)) +success := and(eq(staticcall(gas(), 0x6, 0x98400, 0x80, 0x98400, 0x40), 1), success) +mstore(0x98480, 0x08ad870a0e04c4e8d5fbf654be8e96fcae155b424dec9afec6d632a153f90d27) + mstore(0x984a0, 0x1329debe94067ef582b69f3c5ad5f88b6c3432a9fabe3491ed9cb404785ca24e) +mstore(0x984c0, mload(0x71d80)) +success := and(eq(staticcall(gas(), 0x7, 0x98480, 0x60, 0x98480, 0x40), 1), success) +mstore(0x984e0, mload(0x98400)) + mstore(0x98500, mload(0x98420)) +mstore(0x98520, mload(0x98480)) + mstore(0x98540, mload(0x984a0)) +success := and(eq(staticcall(gas(), 0x6, 0x984e0, 0x80, 0x984e0, 0x40), 1), success) +mstore(0x98560, 0x095b8901783aa4d9b0c2861d171b2ce82e6f3a949fd591d205cf18114e1fe032) + mstore(0x98580, 0x1d46b329a3527d7c9fc6ceedb541cc2509c06929d6a352e5ace463f7ec579253) +mstore(0x985a0, mload(0x71da0)) +success := and(eq(staticcall(gas(), 0x7, 0x98560, 0x60, 0x98560, 0x40), 1), success) +mstore(0x985c0, mload(0x984e0)) + mstore(0x985e0, mload(0x98500)) +mstore(0x98600, mload(0x98560)) + mstore(0x98620, mload(0x98580)) +success := and(eq(staticcall(gas(), 0x6, 0x985c0, 0x80, 0x985c0, 0x40), 1), success) +mstore(0x98640, 0x1950942a0a78ff1ba35817f5c2bb9b24981e1932a810d4044b29577ef40f75a8) + mstore(0x98660, 0x0fb5ec7823e3867dfc698eee91be419e347e81c68f9068b5b08e049793f891fd) +mstore(0x98680, mload(0x71dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x98640, 0x60, 0x98640, 0x40), 1), success) +mstore(0x986a0, mload(0x985c0)) + mstore(0x986c0, mload(0x985e0)) +mstore(0x986e0, mload(0x98640)) + mstore(0x98700, mload(0x98660)) +success := and(eq(staticcall(gas(), 0x6, 0x986a0, 0x80, 0x986a0, 0x40), 1), success) +mstore(0x98720, 0x2c322a249c04041ddba62cfff2d5663f26b0680b40673d096c1a5bd1f1945fa8) + mstore(0x98740, 0x126945ba9d8818f900b40614934e54713fe1af9477ecb6f1e4bcc377d29e6826) +mstore(0x98760, mload(0x71de0)) +success := and(eq(staticcall(gas(), 0x7, 0x98720, 0x60, 0x98720, 0x40), 1), success) +mstore(0x98780, mload(0x986a0)) + mstore(0x987a0, mload(0x986c0)) +mstore(0x987c0, mload(0x98720)) + mstore(0x987e0, mload(0x98740)) +success := and(eq(staticcall(gas(), 0x6, 0x98780, 0x80, 0x98780, 0x40), 1), success) +mstore(0x98800, 0x0ea187ffeb99ec8edac3dd20357ef86885e2025edf9dd3788c7f57b00a5586a3) + mstore(0x98820, 0x21c318c6ec83e455d965758cfcadd23a127b40436a16b7f793e601a45bf5e110) +mstore(0x98840, mload(0x71e00)) +success := and(eq(staticcall(gas(), 0x7, 0x98800, 0x60, 0x98800, 0x40), 1), success) +mstore(0x98860, mload(0x98780)) + mstore(0x98880, mload(0x987a0)) +mstore(0x988a0, mload(0x98800)) + mstore(0x988c0, mload(0x98820)) +success := and(eq(staticcall(gas(), 0x6, 0x98860, 0x80, 0x98860, 0x40), 1), success) +mstore(0x988e0, 0x230bc19af2732a9ecc6fb682961a4cbc4ed0ea3acd22fd9adc969f133fb88f3a) + mstore(0x98900, 0x26db30c1b83bab5d2b6fdeb51f84586e72aac3a97d878e4077aa541fadb78cd1) +mstore(0x98920, mload(0x71e20)) +success := and(eq(staticcall(gas(), 0x7, 0x988e0, 0x60, 0x988e0, 0x40), 1), success) +mstore(0x98940, mload(0x98860)) + mstore(0x98960, mload(0x98880)) +mstore(0x98980, mload(0x988e0)) + mstore(0x989a0, mload(0x98900)) +success := and(eq(staticcall(gas(), 0x6, 0x98940, 0x80, 0x98940, 0x40), 1), success) +mstore(0x989c0, 0x22618ac2781fd64571dadb4dba9f97e61322cb9eaa3140249de6453c772c9866) + mstore(0x989e0, 0x084d26287daf14d201cd76c12b1d4245d5b52b8add19ad66d1701e20f2409c8a) +mstore(0x98a00, mload(0x71e40)) +success := and(eq(staticcall(gas(), 0x7, 0x989c0, 0x60, 0x989c0, 0x40), 1), success) +mstore(0x98a20, mload(0x98940)) + mstore(0x98a40, mload(0x98960)) +mstore(0x98a60, mload(0x989c0)) + mstore(0x98a80, mload(0x989e0)) +success := and(eq(staticcall(gas(), 0x6, 0x98a20, 0x80, 0x98a20, 0x40), 1), success) +mstore(0x98aa0, 0x1b4e62872a3a383b12e1976a7a5a40427a268266f342bd2f0e40dc0969e61b9b) + mstore(0x98ac0, 0x227dfa7d5a68b2a6b38c6f2e47a05e343b9fd472587b4b7f439f9cc4c07fa8a3) +mstore(0x98ae0, mload(0x71e60)) +success := and(eq(staticcall(gas(), 0x7, 0x98aa0, 0x60, 0x98aa0, 0x40), 1), success) +mstore(0x98b00, mload(0x98a20)) + mstore(0x98b20, mload(0x98a40)) +mstore(0x98b40, mload(0x98aa0)) + mstore(0x98b60, mload(0x98ac0)) +success := and(eq(staticcall(gas(), 0x6, 0x98b00, 0x80, 0x98b00, 0x40), 1), success) +mstore(0x98b80, 0x2793b211e85817d6578e487e190a7bd489c0887d551be4f63097b73bf94b46e6) + mstore(0x98ba0, 0x0d0feb92fa8e4504a7c3a9ba76f535edcae087ac2d1dd7ec1e9c9be6ee741a7f) +mstore(0x98bc0, mload(0x71e80)) +success := and(eq(staticcall(gas(), 0x7, 0x98b80, 0x60, 0x98b80, 0x40), 1), success) +mstore(0x98be0, mload(0x98b00)) + mstore(0x98c00, mload(0x98b20)) +mstore(0x98c20, mload(0x98b80)) + mstore(0x98c40, mload(0x98ba0)) +success := and(eq(staticcall(gas(), 0x6, 0x98be0, 0x80, 0x98be0, 0x40), 1), success) +mstore(0x98c60, 0x25a7042b3dbb5cdd5027c62f6dac4e925c2e86d5292e3c459fa8bddf3aa1e928) + mstore(0x98c80, 0x24a86e6a698eb9bdf99c9e07d4ee95f04f9bcf0ece95bd28a75d164dd40d0c50) +mstore(0x98ca0, mload(0x71ea0)) +success := and(eq(staticcall(gas(), 0x7, 0x98c60, 0x60, 0x98c60, 0x40), 1), success) +mstore(0x98cc0, mload(0x98be0)) + mstore(0x98ce0, mload(0x98c00)) +mstore(0x98d00, mload(0x98c60)) + mstore(0x98d20, mload(0x98c80)) +success := and(eq(staticcall(gas(), 0x6, 0x98cc0, 0x80, 0x98cc0, 0x40), 1), success) +mstore(0x98d40, 0x2c75e64b21441f3e005fa8f2a4175ded2e7a324d46dd329bd576de794fdef4fc) + mstore(0x98d60, 0x003a10528de1e07fabccfda9b47315852a92d666e4b3ee14ef18c4aeb8ed77e1) +mstore(0x98d80, mload(0x71ec0)) +success := and(eq(staticcall(gas(), 0x7, 0x98d40, 0x60, 0x98d40, 0x40), 1), success) +mstore(0x98da0, mload(0x98cc0)) + mstore(0x98dc0, mload(0x98ce0)) +mstore(0x98de0, mload(0x98d40)) + mstore(0x98e00, mload(0x98d60)) +success := and(eq(staticcall(gas(), 0x6, 0x98da0, 0x80, 0x98da0, 0x40), 1), success) +mstore(0x98e20, 0x1d6516981632c881bab1cc5ea980f532aef8f50a92091db6d3e0233669cddab4) + mstore(0x98e40, 0x1943869bb19629f59e1621ea73b73972a682259e31f4532ab995c625ba96edfa) +mstore(0x98e60, mload(0x71ee0)) +success := and(eq(staticcall(gas(), 0x7, 0x98e20, 0x60, 0x98e20, 0x40), 1), success) +mstore(0x98e80, mload(0x98da0)) + mstore(0x98ea0, mload(0x98dc0)) +mstore(0x98ec0, mload(0x98e20)) + mstore(0x98ee0, mload(0x98e40)) +success := and(eq(staticcall(gas(), 0x6, 0x98e80, 0x80, 0x98e80, 0x40), 1), success) +mstore(0x98f00, 0x1d25bddaa715dc97c8ede75965f17a9737dd4b3d975e14cc95917aabafbf7c13) + mstore(0x98f20, 0x0403108a51ea21573dffc075cb05db84de5c61e2513f972999100c5223a5608c) +mstore(0x98f40, mload(0x71f00)) +success := and(eq(staticcall(gas(), 0x7, 0x98f00, 0x60, 0x98f00, 0x40), 1), success) +mstore(0x98f60, mload(0x98e80)) + mstore(0x98f80, mload(0x98ea0)) +mstore(0x98fa0, mload(0x98f00)) + mstore(0x98fc0, mload(0x98f20)) +success := and(eq(staticcall(gas(), 0x6, 0x98f60, 0x80, 0x98f60, 0x40), 1), success) +mstore(0x98fe0, 0x1b5c7e2f4b75c7b90b492a49d4f0bca915958d4c61cc51c7f121e0ab170d5fdf) + mstore(0x99000, 0x12be00abb41f50d129aabb5317db35bfb2d15bebf50d202c574656e4ddcf7cab) +mstore(0x99020, mload(0x71f20)) +success := and(eq(staticcall(gas(), 0x7, 0x98fe0, 0x60, 0x98fe0, 0x40), 1), success) +mstore(0x99040, mload(0x98f60)) + mstore(0x99060, mload(0x98f80)) +mstore(0x99080, mload(0x98fe0)) + mstore(0x990a0, mload(0x99000)) +success := and(eq(staticcall(gas(), 0x6, 0x99040, 0x80, 0x99040, 0x40), 1), success) +mstore(0x990c0, 0x1281bfaf5857f8d12408ce791c853a53025a1f1fcc7d300c73f9738fdfeb2d36) + mstore(0x990e0, 0x293fcfc1fa238ba355233f19495f1a0728edac867e4583e8f603260b325b6120) +mstore(0x99100, mload(0x71f40)) +success := and(eq(staticcall(gas(), 0x7, 0x990c0, 0x60, 0x990c0, 0x40), 1), success) +mstore(0x99120, mload(0x99040)) + mstore(0x99140, mload(0x99060)) +mstore(0x99160, mload(0x990c0)) + mstore(0x99180, mload(0x990e0)) +success := and(eq(staticcall(gas(), 0x6, 0x99120, 0x80, 0x99120, 0x40), 1), success) +mstore(0x991a0, 0x2fb017a94d1b4e8a4e355dcdc443dd99cbe3659316aa5b16aefcb55b76634727) + mstore(0x991c0, 0x29608f69de0d5599d9d3febc89ed472c99cfaafe44ea6b2178a35d90f1af10cd) +mstore(0x991e0, mload(0x71f60)) +success := and(eq(staticcall(gas(), 0x7, 0x991a0, 0x60, 0x991a0, 0x40), 1), success) +mstore(0x99200, mload(0x99120)) + mstore(0x99220, mload(0x99140)) +mstore(0x99240, mload(0x991a0)) + mstore(0x99260, mload(0x991c0)) +success := and(eq(staticcall(gas(), 0x6, 0x99200, 0x80, 0x99200, 0x40), 1), success) +mstore(0x99280, 0x1aa43de96d84154a628aef533e339702b311c7cc952eb65b9c8c8ba1873659ed) + mstore(0x992a0, 0x1800b7d5ce7375716e8162f6fb6456e51bd1ddc3a075daa2b2aa65448e650c8f) +mstore(0x992c0, mload(0x71f80)) +success := and(eq(staticcall(gas(), 0x7, 0x99280, 0x60, 0x99280, 0x40), 1), success) +mstore(0x992e0, mload(0x99200)) + mstore(0x99300, mload(0x99220)) +mstore(0x99320, mload(0x99280)) + mstore(0x99340, mload(0x992a0)) +success := and(eq(staticcall(gas(), 0x6, 0x992e0, 0x80, 0x992e0, 0x40), 1), success) +mstore(0x99360, 0x2ab7e6d73d38ca8c968cd138e83d1719d9c265c5ffeb73b9be40d0dca5232cd7) + mstore(0x99380, 0x103b636d674fbd3ae63ce8fba7f4a878edbe7bc5af9ac5fa6f931d801cb4e588) +mstore(0x993a0, mload(0x71fa0)) +success := and(eq(staticcall(gas(), 0x7, 0x99360, 0x60, 0x99360, 0x40), 1), success) +mstore(0x993c0, mload(0x992e0)) + mstore(0x993e0, mload(0x99300)) +mstore(0x99400, mload(0x99360)) + mstore(0x99420, mload(0x99380)) +success := and(eq(staticcall(gas(), 0x6, 0x993c0, 0x80, 0x993c0, 0x40), 1), success) +mstore(0x99440, 0x1eaf7069d65b4a6bb84952f75f07eb30a69c0402e59f3d81e8682715b27bd6c4) + mstore(0x99460, 0x0a38f8782be9769ada8dd32a2073caf4c4f3530feeae931376bf7a943b7e7695) +mstore(0x99480, mload(0x71fc0)) +success := and(eq(staticcall(gas(), 0x7, 0x99440, 0x60, 0x99440, 0x40), 1), success) +mstore(0x994a0, mload(0x993c0)) + mstore(0x994c0, mload(0x993e0)) +mstore(0x994e0, mload(0x99440)) + mstore(0x99500, mload(0x99460)) +success := and(eq(staticcall(gas(), 0x6, 0x994a0, 0x80, 0x994a0, 0x40), 1), success) +mstore(0x99520, 0x02ce97a974162d153320b885195c7b59e6b8b7cb04f5008a404ad348f354872f) + mstore(0x99540, 0x0ba0a7351b41971d65e86ea9ac9b2755f0b2a8cdd423a7e3b2c9986ec4bc3c1e) +mstore(0x99560, mload(0x71fe0)) +success := and(eq(staticcall(gas(), 0x7, 0x99520, 0x60, 0x99520, 0x40), 1), success) +mstore(0x99580, mload(0x994a0)) + mstore(0x995a0, mload(0x994c0)) +mstore(0x995c0, mload(0x99520)) + mstore(0x995e0, mload(0x99540)) +success := and(eq(staticcall(gas(), 0x6, 0x99580, 0x80, 0x99580, 0x40), 1), success) +mstore(0x99600, 0x2491028bed2ef713bb7ce0b46281dc8fce38b6fa303ea389c7b5a217e417d856) + mstore(0x99620, 0x1cbc115183a8fcd1c5d9a9a92d2b094c5f3d582ad3785dd9d23598b975dee9d7) +mstore(0x99640, mload(0x72000)) +success := and(eq(staticcall(gas(), 0x7, 0x99600, 0x60, 0x99600, 0x40), 1), success) +mstore(0x99660, mload(0x99580)) + mstore(0x99680, mload(0x995a0)) +mstore(0x996a0, mload(0x99600)) + mstore(0x996c0, mload(0x99620)) +success := and(eq(staticcall(gas(), 0x6, 0x99660, 0x80, 0x99660, 0x40), 1), success) +mstore(0x996e0, 0x1a1667162bca9eb73f29a1f98835eb3b5950367b1216178605bfd71da47caedd) + mstore(0x99700, 0x112e4f1025947ceb195c28e21804fb1f1dc57310c37784436eb851b03e0c1ee0) +mstore(0x99720, mload(0x72020)) +success := and(eq(staticcall(gas(), 0x7, 0x996e0, 0x60, 0x996e0, 0x40), 1), success) +mstore(0x99740, mload(0x99660)) + mstore(0x99760, mload(0x99680)) +mstore(0x99780, mload(0x996e0)) + mstore(0x997a0, mload(0x99700)) +success := and(eq(staticcall(gas(), 0x6, 0x99740, 0x80, 0x99740, 0x40), 1), success) +mstore(0x997c0, 0x2518951968ac3dd02af5e4f1057a4be11417fc51a4d069b13c116f3f0886f945) + mstore(0x997e0, 0x1bb0ce060559337951af3cd359b767d75742e796d1e95e156d71e1f033d78f08) +mstore(0x99800, mload(0x72040)) +success := and(eq(staticcall(gas(), 0x7, 0x997c0, 0x60, 0x997c0, 0x40), 1), success) +mstore(0x99820, mload(0x99740)) + mstore(0x99840, mload(0x99760)) +mstore(0x99860, mload(0x997c0)) + mstore(0x99880, mload(0x997e0)) +success := and(eq(staticcall(gas(), 0x6, 0x99820, 0x80, 0x99820, 0x40), 1), success) +mstore(0x998a0, 0x2a13d43a0e4d51979bd78f4ab5f03ed0b8c940573f0ebc14b5ee209def40a952) + mstore(0x998c0, 0x1a781948ac4dfb8a3cdc7a624fd9f709ffb90d4d93950aeaf63e64d1cbd68331) +mstore(0x998e0, mload(0x72060)) +success := and(eq(staticcall(gas(), 0x7, 0x998a0, 0x60, 0x998a0, 0x40), 1), success) +mstore(0x99900, mload(0x99820)) + mstore(0x99920, mload(0x99840)) +mstore(0x99940, mload(0x998a0)) + mstore(0x99960, mload(0x998c0)) +success := and(eq(staticcall(gas(), 0x6, 0x99900, 0x80, 0x99900, 0x40), 1), success) +mstore(0x99980, 0x2d4f60f376ca54842429674aeef2bd743519738d242f15d4a9eae8e7c3072844) + mstore(0x999a0, 0x06de9f22982bdcfe39115f745ccb25b9d95c760e2f01d63a453464ba90b8e05f) +mstore(0x999c0, mload(0x72080)) +success := and(eq(staticcall(gas(), 0x7, 0x99980, 0x60, 0x99980, 0x40), 1), success) +mstore(0x999e0, mload(0x99900)) + mstore(0x99a00, mload(0x99920)) +mstore(0x99a20, mload(0x99980)) + mstore(0x99a40, mload(0x999a0)) +success := and(eq(staticcall(gas(), 0x6, 0x999e0, 0x80, 0x999e0, 0x40), 1), success) +mstore(0x99a60, 0x19199418a87ca4e67092093021132986500111bbe293c649d7381e641e113640) + mstore(0x99a80, 0x0b9ea20fa13c1217d4d3e0197a6fabb663beef4bc771c26d06d98219fa83a491) +mstore(0x99aa0, mload(0x720a0)) +success := and(eq(staticcall(gas(), 0x7, 0x99a60, 0x60, 0x99a60, 0x40), 1), success) +mstore(0x99ac0, mload(0x999e0)) + mstore(0x99ae0, mload(0x99a00)) +mstore(0x99b00, mload(0x99a60)) + mstore(0x99b20, mload(0x99a80)) +success := and(eq(staticcall(gas(), 0x6, 0x99ac0, 0x80, 0x99ac0, 0x40), 1), success) +mstore(0x99b40, 0x0c3e4cb466bbb7f38d4c9385182f32875e9111a4618076e60d7be7b3996cdeda) + mstore(0x99b60, 0x2789c012addb51f2f00d6355fd0aaa54153f858090cfaacc990a2404f942bc4e) +mstore(0x99b80, mload(0x720c0)) +success := and(eq(staticcall(gas(), 0x7, 0x99b40, 0x60, 0x99b40, 0x40), 1), success) +mstore(0x99ba0, mload(0x99ac0)) + mstore(0x99bc0, mload(0x99ae0)) +mstore(0x99be0, mload(0x99b40)) + mstore(0x99c00, mload(0x99b60)) +success := and(eq(staticcall(gas(), 0x6, 0x99ba0, 0x80, 0x99ba0, 0x40), 1), success) +mstore(0x99c20, 0x12b76521cdf84aa1e605212bdbf103921e1587c7045e6fb5b39d793da6d2684f) + mstore(0x99c40, 0x22f7da0a581ebbb9334175d93da3d1a609a96b740bdce798da27b2e9ea9f1a1c) +mstore(0x99c60, mload(0x720e0)) +success := and(eq(staticcall(gas(), 0x7, 0x99c20, 0x60, 0x99c20, 0x40), 1), success) +mstore(0x99c80, mload(0x99ba0)) + mstore(0x99ca0, mload(0x99bc0)) +mstore(0x99cc0, mload(0x99c20)) + mstore(0x99ce0, mload(0x99c40)) +success := and(eq(staticcall(gas(), 0x6, 0x99c80, 0x80, 0x99c80, 0x40), 1), success) +mstore(0x99d00, 0x25c022857a7897957b2865bb5390ca0ff050dbde33a27e04a9dc29a3782d045e) + mstore(0x99d20, 0x014d228c7133718bef567ee718f817b165e8fb900596d625c4c884ab91e32ac1) +mstore(0x99d40, mload(0x72100)) +success := and(eq(staticcall(gas(), 0x7, 0x99d00, 0x60, 0x99d00, 0x40), 1), success) +mstore(0x99d60, mload(0x99c80)) + mstore(0x99d80, mload(0x99ca0)) +mstore(0x99da0, mload(0x99d00)) + mstore(0x99dc0, mload(0x99d20)) +success := and(eq(staticcall(gas(), 0x6, 0x99d60, 0x80, 0x99d60, 0x40), 1), success) +mstore(0x99de0, 0x16a552b4e0a3997c0638ef53179502ada47d1881f0701d4da25782f854ae11a2) + mstore(0x99e00, 0x1687c0a0f158e651aab7883a01fcdf9ed3fe89a6fa65cce72e59c494aa879441) +mstore(0x99e20, mload(0x72120)) +success := and(eq(staticcall(gas(), 0x7, 0x99de0, 0x60, 0x99de0, 0x40), 1), success) +mstore(0x99e40, mload(0x99d60)) + mstore(0x99e60, mload(0x99d80)) +mstore(0x99e80, mload(0x99de0)) + mstore(0x99ea0, mload(0x99e00)) +success := and(eq(staticcall(gas(), 0x6, 0x99e40, 0x80, 0x99e40, 0x40), 1), success) +mstore(0x99ec0, 0x1b20ef88ca558a0cbbf5f27b27aafa45402b667e52c9c5896f87224cb34757a2) + mstore(0x99ee0, 0x16d2a4f428a65126977265b04e5225a30863b1e648f9d9c55cf3da5b7ab5ca97) +mstore(0x99f00, mload(0x72140)) +success := and(eq(staticcall(gas(), 0x7, 0x99ec0, 0x60, 0x99ec0, 0x40), 1), success) +mstore(0x99f20, mload(0x99e40)) + mstore(0x99f40, mload(0x99e60)) +mstore(0x99f60, mload(0x99ec0)) + mstore(0x99f80, mload(0x99ee0)) +success := and(eq(staticcall(gas(), 0x6, 0x99f20, 0x80, 0x99f20, 0x40), 1), success) +mstore(0x99fa0, 0x0614865e08b7df0942b39f6441d394aff0726c06be028ab18606e94980b3fc14) + mstore(0x99fc0, 0x04a8c96f0d0fef9dd77460af1c5d2c30b6ec3338c14ab3a964631c3b54989eb9) +mstore(0x99fe0, mload(0x72160)) +success := and(eq(staticcall(gas(), 0x7, 0x99fa0, 0x60, 0x99fa0, 0x40), 1), success) +mstore(0x9a000, mload(0x99f20)) + mstore(0x9a020, mload(0x99f40)) +mstore(0x9a040, mload(0x99fa0)) + mstore(0x9a060, mload(0x99fc0)) +success := and(eq(staticcall(gas(), 0x6, 0x9a000, 0x80, 0x9a000, 0x40), 1), success) +mstore(0x9a080, 0x0acdb3d9df37aa7da5c3f1b5e6d66616aa82c2a3d7ef945e9706df2523859487) + mstore(0x9a0a0, 0x27fd2ae01a72afa5edcabe7a479bdb5767e319eeedc67806860268af2be8d015) +mstore(0x9a0c0, mload(0x72180)) +success := and(eq(staticcall(gas(), 0x7, 0x9a080, 0x60, 0x9a080, 0x40), 1), success) +mstore(0x9a0e0, mload(0x9a000)) + mstore(0x9a100, mload(0x9a020)) +mstore(0x9a120, mload(0x9a080)) + mstore(0x9a140, mload(0x9a0a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9a0e0, 0x80, 0x9a0e0, 0x40), 1), success) +mstore(0x9a160, 0x1ed89ea3ba95ae07609f2ee259f5821db36997162e093119e757cb2bc8d6eec8) + mstore(0x9a180, 0x009b0df228cb43670e6a864dde25dc672101bc6aa1221c7e64591b7960c25765) +mstore(0x9a1a0, mload(0x721a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9a160, 0x60, 0x9a160, 0x40), 1), success) +mstore(0x9a1c0, mload(0x9a0e0)) + mstore(0x9a1e0, mload(0x9a100)) +mstore(0x9a200, mload(0x9a160)) + mstore(0x9a220, mload(0x9a180)) +success := and(eq(staticcall(gas(), 0x6, 0x9a1c0, 0x80, 0x9a1c0, 0x40), 1), success) +mstore(0x9a240, 0x08d2372c523a1718c0c652261637d8af88ee6de6382610a7fd347fe621d1c2bc) + mstore(0x9a260, 0x1ffeccae242bc0bcd5ca747123957b375c4b21afdbb1951993c7bc0047c93c56) +mstore(0x9a280, mload(0x721c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9a240, 0x60, 0x9a240, 0x40), 1), success) +mstore(0x9a2a0, mload(0x9a1c0)) + mstore(0x9a2c0, mload(0x9a1e0)) +mstore(0x9a2e0, mload(0x9a240)) + mstore(0x9a300, mload(0x9a260)) +success := and(eq(staticcall(gas(), 0x6, 0x9a2a0, 0x80, 0x9a2a0, 0x40), 1), success) +mstore(0x9a320, 0x1b9b006a751cb164ac5b640fe45b9fb22d9ccaed5fe979e933eb4b9227a6e65f) + mstore(0x9a340, 0x21fe6d44d7b63c70a8ae56db986e3317786fe267fcfd098ecb5d3317228ce525) +mstore(0x9a360, mload(0x721e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9a320, 0x60, 0x9a320, 0x40), 1), success) +mstore(0x9a380, mload(0x9a2a0)) + mstore(0x9a3a0, mload(0x9a2c0)) +mstore(0x9a3c0, mload(0x9a320)) + mstore(0x9a3e0, mload(0x9a340)) +success := and(eq(staticcall(gas(), 0x6, 0x9a380, 0x80, 0x9a380, 0x40), 1), success) +mstore(0x9a400, 0x151e9f90e6027f4763bc792a272513aeb23510815fd93023e4889b6d58932d00) + mstore(0x9a420, 0x2d06d60abe7a7b71e0b7a7caf1c154732614edf1e6eb5f0c1f47207847931d63) +mstore(0x9a440, mload(0x72200)) +success := and(eq(staticcall(gas(), 0x7, 0x9a400, 0x60, 0x9a400, 0x40), 1), success) +mstore(0x9a460, mload(0x9a380)) + mstore(0x9a480, mload(0x9a3a0)) +mstore(0x9a4a0, mload(0x9a400)) + mstore(0x9a4c0, mload(0x9a420)) +success := and(eq(staticcall(gas(), 0x6, 0x9a460, 0x80, 0x9a460, 0x40), 1), success) +mstore(0x9a4e0, 0x13b90b378f460fdbe685803edc2fa52aed09d1373f3017c2b8874d74bdf47ff3) + mstore(0x9a500, 0x049b79b4f2b610bf5cbe4c9f8c101e73b4958d836dabdf8583f72f8963598469) +mstore(0x9a520, mload(0x72220)) +success := and(eq(staticcall(gas(), 0x7, 0x9a4e0, 0x60, 0x9a4e0, 0x40), 1), success) +mstore(0x9a540, mload(0x9a460)) + mstore(0x9a560, mload(0x9a480)) +mstore(0x9a580, mload(0x9a4e0)) + mstore(0x9a5a0, mload(0x9a500)) +success := and(eq(staticcall(gas(), 0x6, 0x9a540, 0x80, 0x9a540, 0x40), 1), success) +mstore(0x9a5c0, 0x0afb899158de2023dca1bd610018f36ec101f54874084f214e2ddaac29cf0ac2) + mstore(0x9a5e0, 0x0e7eec5e4e57ee70cb5380b3b6201b7ac77f3aece2757dda279dcecefddcd454) +mstore(0x9a600, mload(0x72240)) +success := and(eq(staticcall(gas(), 0x7, 0x9a5c0, 0x60, 0x9a5c0, 0x40), 1), success) +mstore(0x9a620, mload(0x9a540)) + mstore(0x9a640, mload(0x9a560)) +mstore(0x9a660, mload(0x9a5c0)) + mstore(0x9a680, mload(0x9a5e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9a620, 0x80, 0x9a620, 0x40), 1), success) +mstore(0x9a6a0, 0x124c39cffbf7a5ddc0fde5741f0a94ed29b1848dabd0960a6a7f69a9fbc82ce9) + mstore(0x9a6c0, 0x05defca00c7bc5112a1c3006b23a0885c90647e937cc8da2c8032b64442a1b28) +mstore(0x9a6e0, mload(0x72260)) +success := and(eq(staticcall(gas(), 0x7, 0x9a6a0, 0x60, 0x9a6a0, 0x40), 1), success) +mstore(0x9a700, mload(0x9a620)) + mstore(0x9a720, mload(0x9a640)) +mstore(0x9a740, mload(0x9a6a0)) + mstore(0x9a760, mload(0x9a6c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9a700, 0x80, 0x9a700, 0x40), 1), success) +mstore(0x9a780, 0x26176efe187e7921b740ac516246751eff6133bc4d5b2afe28da6a6fed61b3d5) + mstore(0x9a7a0, 0x271f989687e5f1c72c2fbe0ec1f130892e924c0e27b6c14c3048c4c43f52183d) +mstore(0x9a7c0, mload(0x72280)) +success := and(eq(staticcall(gas(), 0x7, 0x9a780, 0x60, 0x9a780, 0x40), 1), success) +mstore(0x9a7e0, mload(0x9a700)) + mstore(0x9a800, mload(0x9a720)) +mstore(0x9a820, mload(0x9a780)) + mstore(0x9a840, mload(0x9a7a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9a7e0, 0x80, 0x9a7e0, 0x40), 1), success) +mstore(0x9a860, 0x2fd4c5e59093bdee6434d6985718bd5cd4b85dd5d8fcc9beb8ea0a6c191d6727) + mstore(0x9a880, 0x155483bf4cf662932e7d31a4e61909dff255c8bd8d053f24d4efc4fe56d70d2c) +mstore(0x9a8a0, mload(0x722a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9a860, 0x60, 0x9a860, 0x40), 1), success) +mstore(0x9a8c0, mload(0x9a7e0)) + mstore(0x9a8e0, mload(0x9a800)) +mstore(0x9a900, mload(0x9a860)) + mstore(0x9a920, mload(0x9a880)) +success := and(eq(staticcall(gas(), 0x6, 0x9a8c0, 0x80, 0x9a8c0, 0x40), 1), success) +mstore(0x9a940, 0x2b7441d24444254ec051cd8973204867512f58ebdb0dff59f7c7b3d05b0eaf11) + mstore(0x9a960, 0x2a06693f0495ace85c1e0724f35cced52ff82bcf8a030c8b94c33d5b4ecfc8b9) +mstore(0x9a980, mload(0x722c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9a940, 0x60, 0x9a940, 0x40), 1), success) +mstore(0x9a9a0, mload(0x9a8c0)) + mstore(0x9a9c0, mload(0x9a8e0)) +mstore(0x9a9e0, mload(0x9a940)) + mstore(0x9aa00, mload(0x9a960)) +success := and(eq(staticcall(gas(), 0x6, 0x9a9a0, 0x80, 0x9a9a0, 0x40), 1), success) +mstore(0x9aa20, 0x0a836ff31655157b0b0718d7f12529219044ac24edba9374f6e9edc063b889ad) + mstore(0x9aa40, 0x25fc7e7c2d5265ba2b2d741ec6b6ad03b424acbc8df716199ed1496320fcbd2d) +mstore(0x9aa60, mload(0x722e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9aa20, 0x60, 0x9aa20, 0x40), 1), success) +mstore(0x9aa80, mload(0x9a9a0)) + mstore(0x9aaa0, mload(0x9a9c0)) +mstore(0x9aac0, mload(0x9aa20)) + mstore(0x9aae0, mload(0x9aa40)) +success := and(eq(staticcall(gas(), 0x6, 0x9aa80, 0x80, 0x9aa80, 0x40), 1), success) +mstore(0x9ab00, 0x149986b0be34f27e233af0fab6915bc75dcb90d9c23a2b82733be1a16dcbc474) + mstore(0x9ab20, 0x2819a1fa4cdace6be03b1e7500ee284b0537be57e6793a54eb334d54e767edfa) +mstore(0x9ab40, mload(0x72300)) +success := and(eq(staticcall(gas(), 0x7, 0x9ab00, 0x60, 0x9ab00, 0x40), 1), success) +mstore(0x9ab60, mload(0x9aa80)) + mstore(0x9ab80, mload(0x9aaa0)) +mstore(0x9aba0, mload(0x9ab00)) + mstore(0x9abc0, mload(0x9ab20)) +success := and(eq(staticcall(gas(), 0x6, 0x9ab60, 0x80, 0x9ab60, 0x40), 1), success) +mstore(0x9abe0, 0x0159fd3e3cddcf657bc51a1234bc27f223b920b22c1d6b2a7855b7489b3409f9) + mstore(0x9ac00, 0x0bd47473b701a9ee322e4f3e9d38f21bc19d4da1c8e14f9895c114e575067fb7) +mstore(0x9ac20, mload(0x72320)) +success := and(eq(staticcall(gas(), 0x7, 0x9abe0, 0x60, 0x9abe0, 0x40), 1), success) +mstore(0x9ac40, mload(0x9ab60)) + mstore(0x9ac60, mload(0x9ab80)) +mstore(0x9ac80, mload(0x9abe0)) + mstore(0x9aca0, mload(0x9ac00)) +success := and(eq(staticcall(gas(), 0x6, 0x9ac40, 0x80, 0x9ac40, 0x40), 1), success) +mstore(0x9acc0, 0x214e18811b48d9a517187537cb4c854369adab560792f8143cb5c5cec20fac9e) + mstore(0x9ace0, 0x0b44eb018a17176ac81d8ae10af5c4cb516c575d385093094b3dd24ef3f14843) +mstore(0x9ad00, mload(0x72340)) +success := and(eq(staticcall(gas(), 0x7, 0x9acc0, 0x60, 0x9acc0, 0x40), 1), success) +mstore(0x9ad20, mload(0x9ac40)) + mstore(0x9ad40, mload(0x9ac60)) +mstore(0x9ad60, mload(0x9acc0)) + mstore(0x9ad80, mload(0x9ace0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ad20, 0x80, 0x9ad20, 0x40), 1), success) +mstore(0x9ada0, 0x1deb19d69f87472ce85fe7a07995c12b45d8bc27fc8bb92f8848e3c3f81ebf27) + mstore(0x9adc0, 0x0d0a935d650710900cf9d7fb16d0ab3031f147f207fe1941d3cdef909b2c726d) +mstore(0x9ade0, mload(0x72360)) +success := and(eq(staticcall(gas(), 0x7, 0x9ada0, 0x60, 0x9ada0, 0x40), 1), success) +mstore(0x9ae00, mload(0x9ad20)) + mstore(0x9ae20, mload(0x9ad40)) +mstore(0x9ae40, mload(0x9ada0)) + mstore(0x9ae60, mload(0x9adc0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ae00, 0x80, 0x9ae00, 0x40), 1), success) +mstore(0x9ae80, 0x28bcb8e4f961fa605ecf99a2ff512d03e4df6ac73fe72b509f3377473adeb6c6) + mstore(0x9aea0, 0x0491a75582610905230f96df67caeb27d19342820ffffa79f0a3e7a315f9f9d4) +mstore(0x9aec0, mload(0x72380)) +success := and(eq(staticcall(gas(), 0x7, 0x9ae80, 0x60, 0x9ae80, 0x40), 1), success) +mstore(0x9aee0, mload(0x9ae00)) + mstore(0x9af00, mload(0x9ae20)) +mstore(0x9af20, mload(0x9ae80)) + mstore(0x9af40, mload(0x9aea0)) +success := and(eq(staticcall(gas(), 0x6, 0x9aee0, 0x80, 0x9aee0, 0x40), 1), success) +mstore(0x9af60, 0x2ee64119056b121e1cca4764f02df6f2109d032ed6a10bc68906e9c3967d2f55) + mstore(0x9af80, 0x0d152fdb8d1e143662269102e457c4628f246fe304a417b7fc13500eba20a3db) +mstore(0x9afa0, mload(0x723a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9af60, 0x60, 0x9af60, 0x40), 1), success) +mstore(0x9afc0, mload(0x9aee0)) + mstore(0x9afe0, mload(0x9af00)) +mstore(0x9b000, mload(0x9af60)) + mstore(0x9b020, mload(0x9af80)) +success := and(eq(staticcall(gas(), 0x6, 0x9afc0, 0x80, 0x9afc0, 0x40), 1), success) +mstore(0x9b040, 0x052a7c53bb94ee0c412237c75ca71a95f712dfc7d0465684c2431be73e44abf2) + mstore(0x9b060, 0x203dc785ff30cbac3dbe21cae364906f378dca7b7cff3a39ce69c3618cb3ad67) +mstore(0x9b080, mload(0x723c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9b040, 0x60, 0x9b040, 0x40), 1), success) +mstore(0x9b0a0, mload(0x9afc0)) + mstore(0x9b0c0, mload(0x9afe0)) +mstore(0x9b0e0, mload(0x9b040)) + mstore(0x9b100, mload(0x9b060)) +success := and(eq(staticcall(gas(), 0x6, 0x9b0a0, 0x80, 0x9b0a0, 0x40), 1), success) +mstore(0x9b120, 0x0bea69150d8c068089286e1d4414c7f277804edde13bfefaf1e3cd538f0d2b2e) + mstore(0x9b140, 0x05b8b9a7cefdb82ad40d27d47ab5288c90c9a7172bc1d4a7b23020b1456a77f6) +mstore(0x9b160, mload(0x723e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9b120, 0x60, 0x9b120, 0x40), 1), success) +mstore(0x9b180, mload(0x9b0a0)) + mstore(0x9b1a0, mload(0x9b0c0)) +mstore(0x9b1c0, mload(0x9b120)) + mstore(0x9b1e0, mload(0x9b140)) +success := and(eq(staticcall(gas(), 0x6, 0x9b180, 0x80, 0x9b180, 0x40), 1), success) +mstore(0x9b200, 0x1d3ece628cefba6e80651b3528b7cf25aa33f6f058ee9a0c754cdf0d65204fde) + mstore(0x9b220, 0x260101c30ec6f295aa6c9c1bbec4c7f409b212005c58a2025eb73510a9c887c5) +mstore(0x9b240, mload(0x72400)) +success := and(eq(staticcall(gas(), 0x7, 0x9b200, 0x60, 0x9b200, 0x40), 1), success) +mstore(0x9b260, mload(0x9b180)) + mstore(0x9b280, mload(0x9b1a0)) +mstore(0x9b2a0, mload(0x9b200)) + mstore(0x9b2c0, mload(0x9b220)) +success := and(eq(staticcall(gas(), 0x6, 0x9b260, 0x80, 0x9b260, 0x40), 1), success) +mstore(0x9b2e0, 0x0c9bc11df447cc8a89fbca697f39d71bfbc79265dd93005ea9c171e4d129146a) + mstore(0x9b300, 0x27d41f390dcb0bbc01ca4299b14d940a0052ef63c138036e9151fb7f4b80de27) +mstore(0x9b320, mload(0x72420)) +success := and(eq(staticcall(gas(), 0x7, 0x9b2e0, 0x60, 0x9b2e0, 0x40), 1), success) +mstore(0x9b340, mload(0x9b260)) + mstore(0x9b360, mload(0x9b280)) +mstore(0x9b380, mload(0x9b2e0)) + mstore(0x9b3a0, mload(0x9b300)) +success := and(eq(staticcall(gas(), 0x6, 0x9b340, 0x80, 0x9b340, 0x40), 1), success) +mstore(0x9b3c0, 0x00ea4904d583fd5950482e02f6a197adb22afe2bc0e6f05be9a7daa3ae4b0c15) + mstore(0x9b3e0, 0x1c68c65dbc24ff5d5c70a86d8fab24d04641d3a09ded1c4b4ce6fdb24e3c9352) +mstore(0x9b400, mload(0x72440)) +success := and(eq(staticcall(gas(), 0x7, 0x9b3c0, 0x60, 0x9b3c0, 0x40), 1), success) +mstore(0x9b420, mload(0x9b340)) + mstore(0x9b440, mload(0x9b360)) +mstore(0x9b460, mload(0x9b3c0)) + mstore(0x9b480, mload(0x9b3e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9b420, 0x80, 0x9b420, 0x40), 1), success) +mstore(0x9b4a0, 0x28a55f8a6595728ffed6a77559236d0dd53b56ee1e3fe4e41e6fbd7115ee088b) + mstore(0x9b4c0, 0x183dd091766be66482188a84829c3c55670acabad3b688dd7b5e9319a8192c24) +mstore(0x9b4e0, mload(0x72460)) +success := and(eq(staticcall(gas(), 0x7, 0x9b4a0, 0x60, 0x9b4a0, 0x40), 1), success) +mstore(0x9b500, mload(0x9b420)) + mstore(0x9b520, mload(0x9b440)) +mstore(0x9b540, mload(0x9b4a0)) + mstore(0x9b560, mload(0x9b4c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9b500, 0x80, 0x9b500, 0x40), 1), success) +mstore(0x9b580, 0x24582584bb7f4cbd95e513e983facf168129652bb8ae766abb3b8793a2d4a98c) + mstore(0x9b5a0, 0x2e87131b4181c930160234f707c3f435ac47c3c44c79ffa0631f137ec9ee780e) +mstore(0x9b5c0, mload(0x72480)) +success := and(eq(staticcall(gas(), 0x7, 0x9b580, 0x60, 0x9b580, 0x40), 1), success) +mstore(0x9b5e0, mload(0x9b500)) + mstore(0x9b600, mload(0x9b520)) +mstore(0x9b620, mload(0x9b580)) + mstore(0x9b640, mload(0x9b5a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9b5e0, 0x80, 0x9b5e0, 0x40), 1), success) +mstore(0x9b660, 0x02549d859264f43576b51a26a34bc045674dbccff8edf1a13091321566040340) + mstore(0x9b680, 0x17fb87d3de7f56a7897b67338fd15220c276c0b16f59c9f4288107de688eb446) +mstore(0x9b6a0, mload(0x724a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9b660, 0x60, 0x9b660, 0x40), 1), success) +mstore(0x9b6c0, mload(0x9b5e0)) + mstore(0x9b6e0, mload(0x9b600)) +mstore(0x9b700, mload(0x9b660)) + mstore(0x9b720, mload(0x9b680)) +success := and(eq(staticcall(gas(), 0x6, 0x9b6c0, 0x80, 0x9b6c0, 0x40), 1), success) +mstore(0x9b740, 0x07cda413e4263eb935bfddfe6ff7c358a376aeb00a10e50032e63b39b62cbc0d) + mstore(0x9b760, 0x26069be7ff7d99b16d7c96f9891d61b97aa319144f03af353f4c2c8549fec3e9) +mstore(0x9b780, mload(0x724c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9b740, 0x60, 0x9b740, 0x40), 1), success) +mstore(0x9b7a0, mload(0x9b6c0)) + mstore(0x9b7c0, mload(0x9b6e0)) +mstore(0x9b7e0, mload(0x9b740)) + mstore(0x9b800, mload(0x9b760)) +success := and(eq(staticcall(gas(), 0x6, 0x9b7a0, 0x80, 0x9b7a0, 0x40), 1), success) +mstore(0x9b820, 0x250f44ae393b08bc76a9b8cab0bf15c8a871fd25694c90da518de750fadd165e) + mstore(0x9b840, 0x09832522e4b8968dca32056df1859e9e05ff54dfc67b09fc66d61a08ac31cd3f) +mstore(0x9b860, mload(0x724e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9b820, 0x60, 0x9b820, 0x40), 1), success) +mstore(0x9b880, mload(0x9b7a0)) + mstore(0x9b8a0, mload(0x9b7c0)) +mstore(0x9b8c0, mload(0x9b820)) + mstore(0x9b8e0, mload(0x9b840)) +success := and(eq(staticcall(gas(), 0x6, 0x9b880, 0x80, 0x9b880, 0x40), 1), success) +mstore(0x9b900, 0x1fb8d7f55e6e3b1df840624bfbe33076d61c048cfb2e78b8b8c022d428a0fdc7) + mstore(0x9b920, 0x2f83db19ae68ac2f0fa34b0088d0eefcd6662803b4abb4c48fdccaf43b8856eb) +mstore(0x9b940, mload(0x72500)) +success := and(eq(staticcall(gas(), 0x7, 0x9b900, 0x60, 0x9b900, 0x40), 1), success) +mstore(0x9b960, mload(0x9b880)) + mstore(0x9b980, mload(0x9b8a0)) +mstore(0x9b9a0, mload(0x9b900)) + mstore(0x9b9c0, mload(0x9b920)) +success := and(eq(staticcall(gas(), 0x6, 0x9b960, 0x80, 0x9b960, 0x40), 1), success) +mstore(0x9b9e0, 0x2decd845b22dc9d7608719707a0225c872a407329c6bdc20e8ee4fc9bb00a620) + mstore(0x9ba00, 0x2bcf5dc7192090a8daaadbfa53a49e27de3714e37c76bb61da9c445b93eee2e8) +mstore(0x9ba20, mload(0x72520)) +success := and(eq(staticcall(gas(), 0x7, 0x9b9e0, 0x60, 0x9b9e0, 0x40), 1), success) +mstore(0x9ba40, mload(0x9b960)) + mstore(0x9ba60, mload(0x9b980)) +mstore(0x9ba80, mload(0x9b9e0)) + mstore(0x9baa0, mload(0x9ba00)) +success := and(eq(staticcall(gas(), 0x6, 0x9ba40, 0x80, 0x9ba40, 0x40), 1), success) +mstore(0x9bac0, 0x053768fa1cfa715841af255a9ab69465ffc72b321a9cd1178f6dcdc1f5dd72ba) + mstore(0x9bae0, 0x15ae8a487dddf47997744b895da377113b825fd97299f6f4a1fb0820ae33a6cd) +mstore(0x9bb00, mload(0x72540)) +success := and(eq(staticcall(gas(), 0x7, 0x9bac0, 0x60, 0x9bac0, 0x40), 1), success) +mstore(0x9bb20, mload(0x9ba40)) + mstore(0x9bb40, mload(0x9ba60)) +mstore(0x9bb60, mload(0x9bac0)) + mstore(0x9bb80, mload(0x9bae0)) +success := and(eq(staticcall(gas(), 0x6, 0x9bb20, 0x80, 0x9bb20, 0x40), 1), success) +mstore(0x9bba0, 0x01bfe3ab2062ecad957dfb54334b0115619432b65090f14c8e695b8a25b499bc) + mstore(0x9bbc0, 0x21d118274e81431e48b7a598ec07e2fc667c2a48cc1c9410c060bc7b8c11baa9) +mstore(0x9bbe0, mload(0x72560)) +success := and(eq(staticcall(gas(), 0x7, 0x9bba0, 0x60, 0x9bba0, 0x40), 1), success) +mstore(0x9bc00, mload(0x9bb20)) + mstore(0x9bc20, mload(0x9bb40)) +mstore(0x9bc40, mload(0x9bba0)) + mstore(0x9bc60, mload(0x9bbc0)) +success := and(eq(staticcall(gas(), 0x6, 0x9bc00, 0x80, 0x9bc00, 0x40), 1), success) +mstore(0x9bc80, 0x1e455a87cf89acf5a16a1aa4d7b399686ea2b8cddb1d4dd903b2e20e4833b6f5) + mstore(0x9bca0, 0x2dd9da5672024ea4a4a2fa14bf1379482abcd437b72c654b7b0a95bef833b624) +mstore(0x9bcc0, mload(0x72580)) +success := and(eq(staticcall(gas(), 0x7, 0x9bc80, 0x60, 0x9bc80, 0x40), 1), success) +mstore(0x9bce0, mload(0x9bc00)) + mstore(0x9bd00, mload(0x9bc20)) +mstore(0x9bd20, mload(0x9bc80)) + mstore(0x9bd40, mload(0x9bca0)) +success := and(eq(staticcall(gas(), 0x6, 0x9bce0, 0x80, 0x9bce0, 0x40), 1), success) +mstore(0x9bd60, 0x199583789828a19026aa6dbc598044b26384e9ad889ce228901680a263a0b557) + mstore(0x9bd80, 0x21b9c9f79ecdcd63512a0fd71198bc727d70155dd30178e3d42fe683e6d48023) +mstore(0x9bda0, mload(0x725a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9bd60, 0x60, 0x9bd60, 0x40), 1), success) +mstore(0x9bdc0, mload(0x9bce0)) + mstore(0x9bde0, mload(0x9bd00)) +mstore(0x9be00, mload(0x9bd60)) + mstore(0x9be20, mload(0x9bd80)) +success := and(eq(staticcall(gas(), 0x6, 0x9bdc0, 0x80, 0x9bdc0, 0x40), 1), success) +mstore(0x9be40, 0x02654c918e0c3d96d3a8839d5a31ffdc7b6f6349ca0d1845c49858e571eca5dc) + mstore(0x9be60, 0x157fc34d3fcbf544e1b8eacecbe76ee3929b2b2f7b0c141354820127120bbdb8) +mstore(0x9be80, mload(0x725c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9be40, 0x60, 0x9be40, 0x40), 1), success) +mstore(0x9bea0, mload(0x9bdc0)) + mstore(0x9bec0, mload(0x9bde0)) +mstore(0x9bee0, mload(0x9be40)) + mstore(0x9bf00, mload(0x9be60)) +success := and(eq(staticcall(gas(), 0x6, 0x9bea0, 0x80, 0x9bea0, 0x40), 1), success) +mstore(0x9bf20, 0x035b1cf6195ecdec360ec8d0e8391bf9b017c3ac3924b5e3a0b1d4e0e9f263ab) + mstore(0x9bf40, 0x21e9ad27610d12178e77b7df8de8bc758fc58b7e43aea2a47ea4da6d876526a4) +mstore(0x9bf60, mload(0x725e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9bf20, 0x60, 0x9bf20, 0x40), 1), success) +mstore(0x9bf80, mload(0x9bea0)) + mstore(0x9bfa0, mload(0x9bec0)) +mstore(0x9bfc0, mload(0x9bf20)) + mstore(0x9bfe0, mload(0x9bf40)) +success := and(eq(staticcall(gas(), 0x6, 0x9bf80, 0x80, 0x9bf80, 0x40), 1), success) +mstore(0x9c000, 0x228e8842d5ac8f37e562c0995ffa9aa2e5e026540a02197d9616e64145037494) + mstore(0x9c020, 0x08b16bc7120cf1bd96444a35702bc27bc2c748e2d922d70a9ee9c66c1812d129) +mstore(0x9c040, mload(0x72600)) +success := and(eq(staticcall(gas(), 0x7, 0x9c000, 0x60, 0x9c000, 0x40), 1), success) +mstore(0x9c060, mload(0x9bf80)) + mstore(0x9c080, mload(0x9bfa0)) +mstore(0x9c0a0, mload(0x9c000)) + mstore(0x9c0c0, mload(0x9c020)) +success := and(eq(staticcall(gas(), 0x6, 0x9c060, 0x80, 0x9c060, 0x40), 1), success) +mstore(0x9c0e0, 0x1c8d7cee4a945bc16c293b8335203c8e1231fbfc9dfcdd021b6d711f0d44340b) + mstore(0x9c100, 0x0ba224703d2f9f33d2bd410997870a9060a6a2c4389403488ddc0d9041b2caee) +mstore(0x9c120, mload(0x72620)) +success := and(eq(staticcall(gas(), 0x7, 0x9c0e0, 0x60, 0x9c0e0, 0x40), 1), success) +mstore(0x9c140, mload(0x9c060)) + mstore(0x9c160, mload(0x9c080)) +mstore(0x9c180, mload(0x9c0e0)) + mstore(0x9c1a0, mload(0x9c100)) +success := and(eq(staticcall(gas(), 0x6, 0x9c140, 0x80, 0x9c140, 0x40), 1), success) +mstore(0x9c1c0, 0x302e9dc3358146a8f5ccbe7b58452ab89531054ac34eddb084331e5a895c8f00) + mstore(0x9c1e0, 0x29da3073875dbbdb8a7be639ccd3792f94d4c31ada2071ffa7009fe52fd209d8) +mstore(0x9c200, mload(0x72640)) +success := and(eq(staticcall(gas(), 0x7, 0x9c1c0, 0x60, 0x9c1c0, 0x40), 1), success) +mstore(0x9c220, mload(0x9c140)) + mstore(0x9c240, mload(0x9c160)) +mstore(0x9c260, mload(0x9c1c0)) + mstore(0x9c280, mload(0x9c1e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9c220, 0x80, 0x9c220, 0x40), 1), success) +mstore(0x9c2a0, 0x0c3a388a5fd5af3b378e930fc3874425bd937a50528a57b8323d20f739b8183e) + mstore(0x9c2c0, 0x0bd0496b3e7136bf626d876ee96c0aefb6f33f31131ab33faaa4e4b3adf8dd66) +mstore(0x9c2e0, mload(0x72660)) +success := and(eq(staticcall(gas(), 0x7, 0x9c2a0, 0x60, 0x9c2a0, 0x40), 1), success) +mstore(0x9c300, mload(0x9c220)) + mstore(0x9c320, mload(0x9c240)) +mstore(0x9c340, mload(0x9c2a0)) + mstore(0x9c360, mload(0x9c2c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9c300, 0x80, 0x9c300, 0x40), 1), success) +mstore(0x9c380, 0x1d16019f022810a02346d801db967bf244ab1ab7d2a17b8670196de31d192a64) + mstore(0x9c3a0, 0x027a8847ab9a33dfb522a9a8947ef844efda588aa4ad24b79fce8bcc7f5d28c6) +mstore(0x9c3c0, mload(0x72680)) +success := and(eq(staticcall(gas(), 0x7, 0x9c380, 0x60, 0x9c380, 0x40), 1), success) +mstore(0x9c3e0, mload(0x9c300)) + mstore(0x9c400, mload(0x9c320)) +mstore(0x9c420, mload(0x9c380)) + mstore(0x9c440, mload(0x9c3a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9c3e0, 0x80, 0x9c3e0, 0x40), 1), success) +mstore(0x9c460, 0x110ac1bf0aac1aa7460e29276e1228b68098598b2ba5ef7c74956b35756a4ec5) + mstore(0x9c480, 0x25f3815d5c60a4be7da4fca6ee2894f43dc63014805ce3f41bfb19c7823d4a14) +mstore(0x9c4a0, mload(0x726a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9c460, 0x60, 0x9c460, 0x40), 1), success) +mstore(0x9c4c0, mload(0x9c3e0)) + mstore(0x9c4e0, mload(0x9c400)) +mstore(0x9c500, mload(0x9c460)) + mstore(0x9c520, mload(0x9c480)) +success := and(eq(staticcall(gas(), 0x6, 0x9c4c0, 0x80, 0x9c4c0, 0x40), 1), success) +mstore(0x9c540, 0x0525539081293761ad34510d20626d350f508a6dd3fa1a998a39dc56d3bef8b7) + mstore(0x9c560, 0x144599416165656b183288674fc0b9532cec2f9b678c96cc8366df431c0b1e9b) +mstore(0x9c580, mload(0x726c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9c540, 0x60, 0x9c540, 0x40), 1), success) +mstore(0x9c5a0, mload(0x9c4c0)) + mstore(0x9c5c0, mload(0x9c4e0)) +mstore(0x9c5e0, mload(0x9c540)) + mstore(0x9c600, mload(0x9c560)) +success := and(eq(staticcall(gas(), 0x6, 0x9c5a0, 0x80, 0x9c5a0, 0x40), 1), success) +mstore(0x9c620, 0x056557f3cc53aca6ad2b16d710185c722359a69923441d66c3f5891e3df754ec) + mstore(0x9c640, 0x1e384c0c1379fd215e0c7c48d5cc07a63d451136839239ee1ac8dbe45cc88493) +mstore(0x9c660, mload(0x726e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9c620, 0x60, 0x9c620, 0x40), 1), success) +mstore(0x9c680, mload(0x9c5a0)) + mstore(0x9c6a0, mload(0x9c5c0)) +mstore(0x9c6c0, mload(0x9c620)) + mstore(0x9c6e0, mload(0x9c640)) +success := and(eq(staticcall(gas(), 0x6, 0x9c680, 0x80, 0x9c680, 0x40), 1), success) +mstore(0x9c700, 0x182a56e86c5bc7d5e1f20f5b3d6a0eb70214fb9bfadf53e157c92ec378214e89) + mstore(0x9c720, 0x2256b75a6dd2f29eda1d195de7926c0a78d7169c2890c47821aa758ab6c16110) +mstore(0x9c740, mload(0x72700)) +success := and(eq(staticcall(gas(), 0x7, 0x9c700, 0x60, 0x9c700, 0x40), 1), success) +mstore(0x9c760, mload(0x9c680)) + mstore(0x9c780, mload(0x9c6a0)) +mstore(0x9c7a0, mload(0x9c700)) + mstore(0x9c7c0, mload(0x9c720)) +success := and(eq(staticcall(gas(), 0x6, 0x9c760, 0x80, 0x9c760, 0x40), 1), success) +mstore(0x9c7e0, 0x282afef13e59462d776e735464a66da363387f9ceb9c4973c1b039d692957f2d) + mstore(0x9c800, 0x064f5da36ea44ee872ac6e92630886f780d82ee3bdf17d00bd55afc857d0900d) +mstore(0x9c820, mload(0x72720)) +success := and(eq(staticcall(gas(), 0x7, 0x9c7e0, 0x60, 0x9c7e0, 0x40), 1), success) +mstore(0x9c840, mload(0x9c760)) + mstore(0x9c860, mload(0x9c780)) +mstore(0x9c880, mload(0x9c7e0)) + mstore(0x9c8a0, mload(0x9c800)) +success := and(eq(staticcall(gas(), 0x6, 0x9c840, 0x80, 0x9c840, 0x40), 1), success) +mstore(0x9c8c0, 0x279d5df1e896cce8ee4e0552c5fd4fc0dd9500e5faa95174b1fad77cab7049dd) + mstore(0x9c8e0, 0x235a25d5ad9a8642809367d6858ef54f77b6376d059b6f6ffea5230b29310c13) +mstore(0x9c900, mload(0x72740)) +success := and(eq(staticcall(gas(), 0x7, 0x9c8c0, 0x60, 0x9c8c0, 0x40), 1), success) +mstore(0x9c920, mload(0x9c840)) + mstore(0x9c940, mload(0x9c860)) +mstore(0x9c960, mload(0x9c8c0)) + mstore(0x9c980, mload(0x9c8e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9c920, 0x80, 0x9c920, 0x40), 1), success) +mstore(0x9c9a0, 0x2b3fb22fe30d3b6601484bee6a1e404296be0925a30bfa6d43a61aaf34f42a19) + mstore(0x9c9c0, 0x0848c24a0b0f63cec59d660d7d016135471cdf1a246a0b4cc2db34016c1dd1eb) +mstore(0x9c9e0, mload(0x72760)) +success := and(eq(staticcall(gas(), 0x7, 0x9c9a0, 0x60, 0x9c9a0, 0x40), 1), success) +mstore(0x9ca00, mload(0x9c920)) + mstore(0x9ca20, mload(0x9c940)) +mstore(0x9ca40, mload(0x9c9a0)) + mstore(0x9ca60, mload(0x9c9c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ca00, 0x80, 0x9ca00, 0x40), 1), success) +mstore(0x9ca80, 0x29ef4e332fbdafd0248716a010182cc9ee09c35d1a47a8ec67981b498962c249) + mstore(0x9caa0, 0x03865cd38c4b8394a21038bb6d1af2e0049ef5cd4d93cf10fb6305190908fbc7) +mstore(0x9cac0, mload(0x72780)) +success := and(eq(staticcall(gas(), 0x7, 0x9ca80, 0x60, 0x9ca80, 0x40), 1), success) +mstore(0x9cae0, mload(0x9ca00)) + mstore(0x9cb00, mload(0x9ca20)) +mstore(0x9cb20, mload(0x9ca80)) + mstore(0x9cb40, mload(0x9caa0)) +success := and(eq(staticcall(gas(), 0x6, 0x9cae0, 0x80, 0x9cae0, 0x40), 1), success) +mstore(0x9cb60, 0x2f180eb5e62be2dea5bf800fb9c6b4ddfbf7666790bfe42cb90870f24adffc5a) + mstore(0x9cb80, 0x2242de2bf4448a15e068618e82e99179424c619125ed0282d5080a599552604f) +mstore(0x9cba0, mload(0x727a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9cb60, 0x60, 0x9cb60, 0x40), 1), success) +mstore(0x9cbc0, mload(0x9cae0)) + mstore(0x9cbe0, mload(0x9cb00)) +mstore(0x9cc00, mload(0x9cb60)) + mstore(0x9cc20, mload(0x9cb80)) +success := and(eq(staticcall(gas(), 0x6, 0x9cbc0, 0x80, 0x9cbc0, 0x40), 1), success) +mstore(0x9cc40, 0x0b1cb744526b9a9e1ef578c8cb974f586ecc3486830e93d057c8b502cc6fd649) + mstore(0x9cc60, 0x1f58d17fb53483fc0d012ad19651035a9c6c98f16d38072dfbdd687d150aa899) +mstore(0x9cc80, mload(0x727c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9cc40, 0x60, 0x9cc40, 0x40), 1), success) +mstore(0x9cca0, mload(0x9cbc0)) + mstore(0x9ccc0, mload(0x9cbe0)) +mstore(0x9cce0, mload(0x9cc40)) + mstore(0x9cd00, mload(0x9cc60)) +success := and(eq(staticcall(gas(), 0x6, 0x9cca0, 0x80, 0x9cca0, 0x40), 1), success) +mstore(0x9cd20, 0x021247a414c95589cd8526eecdff81cb7c0ea0a6d65c44ae4cf10df72ca0da8e) + mstore(0x9cd40, 0x11adbc1697a844f049a60c68803eae439b731bfe01c54e59004fe49936d45a1a) +mstore(0x9cd60, mload(0x727e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9cd20, 0x60, 0x9cd20, 0x40), 1), success) +mstore(0x9cd80, mload(0x9cca0)) + mstore(0x9cda0, mload(0x9ccc0)) +mstore(0x9cdc0, mload(0x9cd20)) + mstore(0x9cde0, mload(0x9cd40)) +success := and(eq(staticcall(gas(), 0x6, 0x9cd80, 0x80, 0x9cd80, 0x40), 1), success) +mstore(0x9ce00, 0x269658d8a472288ffff55890773dcdfcbe85848028f500e99974e90e38e737ab) + mstore(0x9ce20, 0x036d2a3bbfe5ee27c73dd714b8ee0bbfc8f07a99f33f8244cd5eacbf446719c8) +mstore(0x9ce40, mload(0x72800)) +success := and(eq(staticcall(gas(), 0x7, 0x9ce00, 0x60, 0x9ce00, 0x40), 1), success) +mstore(0x9ce60, mload(0x9cd80)) + mstore(0x9ce80, mload(0x9cda0)) +mstore(0x9cea0, mload(0x9ce00)) + mstore(0x9cec0, mload(0x9ce20)) +success := and(eq(staticcall(gas(), 0x6, 0x9ce60, 0x80, 0x9ce60, 0x40), 1), success) +mstore(0x9cee0, 0x059acb68af1753ee252db283b253c025ed3e14027821d84d823ea5f31b4a6654) + mstore(0x9cf00, 0x0784a4e3b4a4aad2afa1eb9a723fc1469b647cb214936e64102409cb4a0c506d) +mstore(0x9cf20, mload(0x72820)) +success := and(eq(staticcall(gas(), 0x7, 0x9cee0, 0x60, 0x9cee0, 0x40), 1), success) +mstore(0x9cf40, mload(0x9ce60)) + mstore(0x9cf60, mload(0x9ce80)) +mstore(0x9cf80, mload(0x9cee0)) + mstore(0x9cfa0, mload(0x9cf00)) +success := and(eq(staticcall(gas(), 0x6, 0x9cf40, 0x80, 0x9cf40, 0x40), 1), success) +mstore(0x9cfc0, 0x0033ec1a77a88a621d72e6af78702b37047b078c06ccf8e465fb668756f0590c) + mstore(0x9cfe0, 0x12fc01fe852c8172e0b0ffcc6ea638db1ea3627f98336d472e0423c91fc9ca8e) +mstore(0x9d000, mload(0x72840)) +success := and(eq(staticcall(gas(), 0x7, 0x9cfc0, 0x60, 0x9cfc0, 0x40), 1), success) +mstore(0x9d020, mload(0x9cf40)) + mstore(0x9d040, mload(0x9cf60)) +mstore(0x9d060, mload(0x9cfc0)) + mstore(0x9d080, mload(0x9cfe0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d020, 0x80, 0x9d020, 0x40), 1), success) +mstore(0x9d0a0, 0x0485bdad19dd1a96332531a7fec969343c9d140b990bb0bbb2173bf386bd03f0) + mstore(0x9d0c0, 0x303c75749e57f8f711bedef8e4a7720471570e640a3698c743ce18f1f4616886) +mstore(0x9d0e0, mload(0x72860)) +success := and(eq(staticcall(gas(), 0x7, 0x9d0a0, 0x60, 0x9d0a0, 0x40), 1), success) +mstore(0x9d100, mload(0x9d020)) + mstore(0x9d120, mload(0x9d040)) +mstore(0x9d140, mload(0x9d0a0)) + mstore(0x9d160, mload(0x9d0c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d100, 0x80, 0x9d100, 0x40), 1), success) +mstore(0x9d180, 0x19e6b7d33c0c51c8f2a4f0eb4ebba419acf5f9c7f0e5feff8520178e3e339701) + mstore(0x9d1a0, 0x1de6c58c29d6c64aa0c235ff92b481dcac9c140da7909cc0170872931a802272) +mstore(0x9d1c0, mload(0x72880)) +success := and(eq(staticcall(gas(), 0x7, 0x9d180, 0x60, 0x9d180, 0x40), 1), success) +mstore(0x9d1e0, mload(0x9d100)) + mstore(0x9d200, mload(0x9d120)) +mstore(0x9d220, mload(0x9d180)) + mstore(0x9d240, mload(0x9d1a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d1e0, 0x80, 0x9d1e0, 0x40), 1), success) +mstore(0x9d260, 0x230440a62095f7b8d6f51c454d446d9db48e3e848d63042c4706954073a15c3a) + mstore(0x9d280, 0x10134bcc99d8afacd4ee8ce3d8d6c477e556e9ef7de0bc547e95ce08a24c2c4b) +mstore(0x9d2a0, mload(0x728a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9d260, 0x60, 0x9d260, 0x40), 1), success) +mstore(0x9d2c0, mload(0x9d1e0)) + mstore(0x9d2e0, mload(0x9d200)) +mstore(0x9d300, mload(0x9d260)) + mstore(0x9d320, mload(0x9d280)) +success := and(eq(staticcall(gas(), 0x6, 0x9d2c0, 0x80, 0x9d2c0, 0x40), 1), success) +mstore(0x9d340, 0x1e70d9aa44914641af5ea6e7a3c140e5e72e38dd567713fe5da47b91425b8479) + mstore(0x9d360, 0x2058416d49aacd2eb0593f2a5a4116f0e9937e946d148d7b5b35dd660b70d701) +mstore(0x9d380, mload(0x728c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9d340, 0x60, 0x9d340, 0x40), 1), success) +mstore(0x9d3a0, mload(0x9d2c0)) + mstore(0x9d3c0, mload(0x9d2e0)) +mstore(0x9d3e0, mload(0x9d340)) + mstore(0x9d400, mload(0x9d360)) +success := and(eq(staticcall(gas(), 0x6, 0x9d3a0, 0x80, 0x9d3a0, 0x40), 1), success) +mstore(0x9d420, 0x267c4f9310c8c1a73d9a4d361af40de9e4f9d20c3f0fac89fb11a55ab45b44c0) + mstore(0x9d440, 0x168fa1855c40dcbc1149b2b0b26539ba7d77eb9239e18c3ec60f12f0f7c47dd9) +mstore(0x9d460, mload(0x728e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9d420, 0x60, 0x9d420, 0x40), 1), success) +mstore(0x9d480, mload(0x9d3a0)) + mstore(0x9d4a0, mload(0x9d3c0)) +mstore(0x9d4c0, mload(0x9d420)) + mstore(0x9d4e0, mload(0x9d440)) +success := and(eq(staticcall(gas(), 0x6, 0x9d480, 0x80, 0x9d480, 0x40), 1), success) +mstore(0x9d500, 0x0b82302ce977531b10dedc37fa0afa88974882787368814dc9973d7615fc754d) + mstore(0x9d520, 0x1fa8f0a6b4faf177de145511b0b922d98ecc470baf85802d1e763ebf520b21ae) +mstore(0x9d540, mload(0x72900)) +success := and(eq(staticcall(gas(), 0x7, 0x9d500, 0x60, 0x9d500, 0x40), 1), success) +mstore(0x9d560, mload(0x9d480)) + mstore(0x9d580, mload(0x9d4a0)) +mstore(0x9d5a0, mload(0x9d500)) + mstore(0x9d5c0, mload(0x9d520)) +success := and(eq(staticcall(gas(), 0x6, 0x9d560, 0x80, 0x9d560, 0x40), 1), success) +mstore(0x9d5e0, 0x272a6a22393f5781d3cbbe5d4c750da2de5cd432d050a7e3194915fce7a43e5b) + mstore(0x9d600, 0x11d6e1916868c775378070de1d3de35d7aa7336e60a7a7e4575ccb2724739179) +mstore(0x9d620, mload(0x72920)) +success := and(eq(staticcall(gas(), 0x7, 0x9d5e0, 0x60, 0x9d5e0, 0x40), 1), success) +mstore(0x9d640, mload(0x9d560)) + mstore(0x9d660, mload(0x9d580)) +mstore(0x9d680, mload(0x9d5e0)) + mstore(0x9d6a0, mload(0x9d600)) +success := and(eq(staticcall(gas(), 0x6, 0x9d640, 0x80, 0x9d640, 0x40), 1), success) +mstore(0x9d6c0, 0x18d3b9a0c4b864da2248be77b40007a444985706bb12e0849043c8b1aa0e91c7) + mstore(0x9d6e0, 0x05e9aa3e1d4ab9d519bb38256590e2683202672d4e6852ba766b8d55a2533135) +mstore(0x9d700, mload(0x72940)) +success := and(eq(staticcall(gas(), 0x7, 0x9d6c0, 0x60, 0x9d6c0, 0x40), 1), success) +mstore(0x9d720, mload(0x9d640)) + mstore(0x9d740, mload(0x9d660)) +mstore(0x9d760, mload(0x9d6c0)) + mstore(0x9d780, mload(0x9d6e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d720, 0x80, 0x9d720, 0x40), 1), success) +mstore(0x9d7a0, 0x0f6169965032ee0472afe55d77d4370d8c4554d7be2ef04f49031557cf7574f1) + mstore(0x9d7c0, 0x1d7a45a41ea2ac0baac9a45aaf142a459918cc370763c82df3b17bd6358e2be9) +mstore(0x9d7e0, mload(0x72960)) +success := and(eq(staticcall(gas(), 0x7, 0x9d7a0, 0x60, 0x9d7a0, 0x40), 1), success) +mstore(0x9d800, mload(0x9d720)) + mstore(0x9d820, mload(0x9d740)) +mstore(0x9d840, mload(0x9d7a0)) + mstore(0x9d860, mload(0x9d7c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d800, 0x80, 0x9d800, 0x40), 1), success) +mstore(0x9d880, 0x19665b2b292b860c159519d701f6c86c9bf095cd1c7b7ef282b20be71cd1cc81) + mstore(0x9d8a0, 0x2454d509bed6eb04b9543de45fa26212e885946955ccb8fce5284737cc33d4e3) +mstore(0x9d8c0, mload(0x72980)) +success := and(eq(staticcall(gas(), 0x7, 0x9d880, 0x60, 0x9d880, 0x40), 1), success) +mstore(0x9d8e0, mload(0x9d800)) + mstore(0x9d900, mload(0x9d820)) +mstore(0x9d920, mload(0x9d880)) + mstore(0x9d940, mload(0x9d8a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9d8e0, 0x80, 0x9d8e0, 0x40), 1), success) +mstore(0x9d960, 0x1a0ae46078bed57640eb3a47bb866f902786f5eb49041738ed4ac29e05f2228e) + mstore(0x9d980, 0x2a56d984d000fd705d3e4e49c1034ec2cca0e10949ca25bc9de103cb0e8b47cb) +mstore(0x9d9a0, mload(0x729a0)) +success := and(eq(staticcall(gas(), 0x7, 0x9d960, 0x60, 0x9d960, 0x40), 1), success) +mstore(0x9d9c0, mload(0x9d8e0)) + mstore(0x9d9e0, mload(0x9d900)) +mstore(0x9da00, mload(0x9d960)) + mstore(0x9da20, mload(0x9d980)) +success := and(eq(staticcall(gas(), 0x6, 0x9d9c0, 0x80, 0x9d9c0, 0x40), 1), success) +mstore(0x9da40, 0x03896cf5f122d48dec7900d7bdb84eed8262bfda341b3c749b3ec476bf48c403) + mstore(0x9da60, 0x0fe5043aeeca2cd328fb70ffe3e8c4442e0e620192a50a3d24c293882c920cef) +mstore(0x9da80, mload(0x729c0)) +success := and(eq(staticcall(gas(), 0x7, 0x9da40, 0x60, 0x9da40, 0x40), 1), success) +mstore(0x9daa0, mload(0x9d9c0)) + mstore(0x9dac0, mload(0x9d9e0)) +mstore(0x9dae0, mload(0x9da40)) + mstore(0x9db00, mload(0x9da60)) +success := and(eq(staticcall(gas(), 0x6, 0x9daa0, 0x80, 0x9daa0, 0x40), 1), success) +mstore(0x9db20, 0x027229421d43450628c7574d4de73f9a1b97a8fec657e43f12d78fb4873fbad8) + mstore(0x9db40, 0x2349dda6d9246e0ee3a13db5ceb3bc2950c5948d4ac2fdbaaaa1742d6e89bcb7) +mstore(0x9db60, mload(0x729e0)) +success := and(eq(staticcall(gas(), 0x7, 0x9db20, 0x60, 0x9db20, 0x40), 1), success) +mstore(0x9db80, mload(0x9daa0)) + mstore(0x9dba0, mload(0x9dac0)) +mstore(0x9dbc0, mload(0x9db20)) + mstore(0x9dbe0, mload(0x9db40)) +success := and(eq(staticcall(gas(), 0x6, 0x9db80, 0x80, 0x9db80, 0x40), 1), success) +mstore(0x9dc00, 0x2232e8f81ad19625a7490268372de09a0e885b67699a065246a5ecb6349a3853) + mstore(0x9dc20, 0x268ef33bef43df7c8d7e00ba9c5be6f8c844df753c3f78208d374bb0ca82caef) +mstore(0x9dc40, mload(0x72a00)) +success := and(eq(staticcall(gas(), 0x7, 0x9dc00, 0x60, 0x9dc00, 0x40), 1), success) +mstore(0x9dc60, mload(0x9db80)) + mstore(0x9dc80, mload(0x9dba0)) +mstore(0x9dca0, mload(0x9dc00)) + mstore(0x9dcc0, mload(0x9dc20)) +success := and(eq(staticcall(gas(), 0x6, 0x9dc60, 0x80, 0x9dc60, 0x40), 1), success) +mstore(0x9dce0, 0x042063a3b3d79bd8e3b54f52f9cedd7d84759d0aa7b999668fc29998884b0672) + mstore(0x9dd00, 0x1d72ce023d97f3b59a7539b14b9aa410c537a0d40ca92b0446f0f1fa07007595) +mstore(0x9dd20, mload(0x72a20)) +success := and(eq(staticcall(gas(), 0x7, 0x9dce0, 0x60, 0x9dce0, 0x40), 1), success) +mstore(0x9dd40, mload(0x9dc60)) + mstore(0x9dd60, mload(0x9dc80)) +mstore(0x9dd80, mload(0x9dce0)) + mstore(0x9dda0, mload(0x9dd00)) +success := and(eq(staticcall(gas(), 0x6, 0x9dd40, 0x80, 0x9dd40, 0x40), 1), success) +mstore(0x9ddc0, 0x07bc0fa243fa73a1c3313270e0a22915ec28fb54bc26c4f634d4284e26001ac0) + mstore(0x9dde0, 0x063a4c4b290d30312c166d7d2b3d683ef5a91398166ceb7b76c2eec270714806) +mstore(0x9de00, mload(0x72a40)) +success := and(eq(staticcall(gas(), 0x7, 0x9ddc0, 0x60, 0x9ddc0, 0x40), 1), success) +mstore(0x9de20, mload(0x9dd40)) + mstore(0x9de40, mload(0x9dd60)) +mstore(0x9de60, mload(0x9ddc0)) + mstore(0x9de80, mload(0x9dde0)) +success := and(eq(staticcall(gas(), 0x6, 0x9de20, 0x80, 0x9de20, 0x40), 1), success) +mstore(0x9dea0, 0x0df274aac0e5c89037511d622f7835c3b11c57083b66f18e7f9ea12db935aee3) + mstore(0x9dec0, 0x2b881d48d3f681f924201a9118e2c9a75305d3ef59fd329ba912a3a8d336ece6) +mstore(0x9dee0, mload(0x72a60)) +success := and(eq(staticcall(gas(), 0x7, 0x9dea0, 0x60, 0x9dea0, 0x40), 1), success) +mstore(0x9df00, mload(0x9de20)) + mstore(0x9df20, mload(0x9de40)) +mstore(0x9df40, mload(0x9dea0)) + mstore(0x9df60, mload(0x9dec0)) +success := and(eq(staticcall(gas(), 0x6, 0x9df00, 0x80, 0x9df00, 0x40), 1), success) +mstore(0x9df80, 0x1f43b1bd4744d643ba04a99b4587735c8789e427b940e00b0910777a392181d4) + mstore(0x9dfa0, 0x18f1aa8cfc39f093f83cadc8cf8a8def43e45c4730eac964ab4c554638c924ac) +mstore(0x9dfc0, mload(0x72a80)) +success := and(eq(staticcall(gas(), 0x7, 0x9df80, 0x60, 0x9df80, 0x40), 1), success) +mstore(0x9dfe0, mload(0x9df00)) + mstore(0x9e000, mload(0x9df20)) +mstore(0x9e020, mload(0x9df80)) + mstore(0x9e040, mload(0x9dfa0)) +success := and(eq(staticcall(gas(), 0x6, 0x9dfe0, 0x80, 0x9dfe0, 0x40), 1), success) +mstore(0x9e060, 0x0853d67e4086fb3beb0cc064c4a93e35e0935c98e7eac3d4400f05e4fb8481fb) + mstore(0x9e080, 0x21db77fd95b7af7aefdae0b96417d7a52754aea8dff59f2a13a9f3c8a0a309ee) +mstore(0x9e0a0, mload(0x72aa0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e060, 0x60, 0x9e060, 0x40), 1), success) +mstore(0x9e0c0, mload(0x9dfe0)) + mstore(0x9e0e0, mload(0x9e000)) +mstore(0x9e100, mload(0x9e060)) + mstore(0x9e120, mload(0x9e080)) +success := and(eq(staticcall(gas(), 0x6, 0x9e0c0, 0x80, 0x9e0c0, 0x40), 1), success) +mstore(0x9e140, 0x2ff85bbd24d2dfacc55bf6b6937d9be0e2f3789ceefc8a46d8e37d1184e0a774) + mstore(0x9e160, 0x02604729d06a2e78407d01eea198f1e8e4fd727065119d7607863bc2faca1fe7) +mstore(0x9e180, mload(0x72ac0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e140, 0x60, 0x9e140, 0x40), 1), success) +mstore(0x9e1a0, mload(0x9e0c0)) + mstore(0x9e1c0, mload(0x9e0e0)) +mstore(0x9e1e0, mload(0x9e140)) + mstore(0x9e200, mload(0x9e160)) +success := and(eq(staticcall(gas(), 0x6, 0x9e1a0, 0x80, 0x9e1a0, 0x40), 1), success) +mstore(0x9e220, 0x0acded63eb26ac98e3b9ab1a6db3fe4d59cce28383e1f0eca99eb93eb377b92c) + mstore(0x9e240, 0x12feeb1faee98ff9bf947346eb87c9f75ff41904c833eacb5b1b68d75765119d) +mstore(0x9e260, mload(0x72ae0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e220, 0x60, 0x9e220, 0x40), 1), success) +mstore(0x9e280, mload(0x9e1a0)) + mstore(0x9e2a0, mload(0x9e1c0)) +mstore(0x9e2c0, mload(0x9e220)) + mstore(0x9e2e0, mload(0x9e240)) +success := and(eq(staticcall(gas(), 0x6, 0x9e280, 0x80, 0x9e280, 0x40), 1), success) +mstore(0x9e300, 0x24d5a990cba1c14a22f39d1e9d50e3bbc249587d528a1b32101a64b1b7b88169) + mstore(0x9e320, 0x0f4583f9acedbac0775cf43c784113696a93f26bfaef82b8b95c4d7d9b3d118d) +mstore(0x9e340, mload(0x72b00)) +success := and(eq(staticcall(gas(), 0x7, 0x9e300, 0x60, 0x9e300, 0x40), 1), success) +mstore(0x9e360, mload(0x9e280)) + mstore(0x9e380, mload(0x9e2a0)) +mstore(0x9e3a0, mload(0x9e300)) + mstore(0x9e3c0, mload(0x9e320)) +success := and(eq(staticcall(gas(), 0x6, 0x9e360, 0x80, 0x9e360, 0x40), 1), success) +mstore(0x9e3e0, 0x209a840afca9ff89ebb13f77ca05d2498d5dd409249c51cdbe47e3f765b4eb11) + mstore(0x9e400, 0x1e04a9b68ab77ce752eaf93ab1e15fc0f2bd0602cdc6369be4b8fc7dcbf9d592) +mstore(0x9e420, mload(0x72b20)) +success := and(eq(staticcall(gas(), 0x7, 0x9e3e0, 0x60, 0x9e3e0, 0x40), 1), success) +mstore(0x9e440, mload(0x9e360)) + mstore(0x9e460, mload(0x9e380)) +mstore(0x9e480, mload(0x9e3e0)) + mstore(0x9e4a0, mload(0x9e400)) +success := and(eq(staticcall(gas(), 0x6, 0x9e440, 0x80, 0x9e440, 0x40), 1), success) +mstore(0x9e4c0, 0x289a6ae6ba7db01e10165db21f91f1fecafb1c000166e81efed7bb941717f707) + mstore(0x9e4e0, 0x26fcc4e2895f9647222b1a587905165b7cb1669671cf3e94d51e72a45ebad72a) +mstore(0x9e500, mload(0x72b40)) +success := and(eq(staticcall(gas(), 0x7, 0x9e4c0, 0x60, 0x9e4c0, 0x40), 1), success) +mstore(0x9e520, mload(0x9e440)) + mstore(0x9e540, mload(0x9e460)) +mstore(0x9e560, mload(0x9e4c0)) + mstore(0x9e580, mload(0x9e4e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9e520, 0x80, 0x9e520, 0x40), 1), success) +mstore(0x9e5a0, 0x304d8ac2cefe3349152c5a59839292b82fc2b117fb01c7148f696b9b142f6bea) + mstore(0x9e5c0, 0x181683897ebf9da4e94dd42ba2f01f83d857ee33bc037b4850acf75527fa43e1) +mstore(0x9e5e0, mload(0x72b60)) +success := and(eq(staticcall(gas(), 0x7, 0x9e5a0, 0x60, 0x9e5a0, 0x40), 1), success) +mstore(0x9e600, mload(0x9e520)) + mstore(0x9e620, mload(0x9e540)) +mstore(0x9e640, mload(0x9e5a0)) + mstore(0x9e660, mload(0x9e5c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9e600, 0x80, 0x9e600, 0x40), 1), success) +mstore(0x9e680, 0x24440a37f635ed7e3795c3838dff65d1fc16a89b1581634854892f2a27ab282d) + mstore(0x9e6a0, 0x01e79fff3020d0bef5a1d526d4707f658dab6fc4386f17177a3a473d7a36444b) +mstore(0x9e6c0, mload(0x72b80)) +success := and(eq(staticcall(gas(), 0x7, 0x9e680, 0x60, 0x9e680, 0x40), 1), success) +mstore(0x9e6e0, mload(0x9e600)) + mstore(0x9e700, mload(0x9e620)) +mstore(0x9e720, mload(0x9e680)) + mstore(0x9e740, mload(0x9e6a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9e6e0, 0x80, 0x9e6e0, 0x40), 1), success) +mstore(0x9e760, 0x16c19c84c1558fdc7a0b09ad62482ba876f22f3d4ea1fa5531a1356fdfbafb69) + mstore(0x9e780, 0x12aed18101f05f23b668eda2ce5b7c20a209c3c307c86d423cf562a580f2e2b0) +mstore(0x9e7a0, mload(0x72ba0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e760, 0x60, 0x9e760, 0x40), 1), success) +mstore(0x9e7c0, mload(0x9e6e0)) + mstore(0x9e7e0, mload(0x9e700)) +mstore(0x9e800, mload(0x9e760)) + mstore(0x9e820, mload(0x9e780)) +success := and(eq(staticcall(gas(), 0x6, 0x9e7c0, 0x80, 0x9e7c0, 0x40), 1), success) +mstore(0x9e840, 0x1466a47812947725e6677d3f9ad1acaefdffb6790543b61a4024ee2e90d6b257) + mstore(0x9e860, 0x058d6d6c5ac3cb6ca19f2c74c6dd0cf369a3087b94b22d5724e02597a1e20a9e) +mstore(0x9e880, mload(0x72bc0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e840, 0x60, 0x9e840, 0x40), 1), success) +mstore(0x9e8a0, mload(0x9e7c0)) + mstore(0x9e8c0, mload(0x9e7e0)) +mstore(0x9e8e0, mload(0x9e840)) + mstore(0x9e900, mload(0x9e860)) +success := and(eq(staticcall(gas(), 0x6, 0x9e8a0, 0x80, 0x9e8a0, 0x40), 1), success) +mstore(0x9e920, 0x13b7ff16185f18283a18bfe89eb607501043367e90c5997332ab033717a74c6c) + mstore(0x9e940, 0x1bd555b1c13c823df6dbe31fb9988f3075e70debfbceb0cea86b10bbb7e2ad79) +mstore(0x9e960, mload(0x72be0)) +success := and(eq(staticcall(gas(), 0x7, 0x9e920, 0x60, 0x9e920, 0x40), 1), success) +mstore(0x9e980, mload(0x9e8a0)) + mstore(0x9e9a0, mload(0x9e8c0)) +mstore(0x9e9c0, mload(0x9e920)) + mstore(0x9e9e0, mload(0x9e940)) +success := and(eq(staticcall(gas(), 0x6, 0x9e980, 0x80, 0x9e980, 0x40), 1), success) +mstore(0x9ea00, 0x2257190f384b0190930a306d9dac08834995b65a47d6b2b06a9e5ac3d6a8062c) + mstore(0x9ea20, 0x0b6eb6bd7f9119954594ba1aaba0a703d1e23358746f55e3e8eddb6ab2d1ecc3) +mstore(0x9ea40, mload(0x72c00)) +success := and(eq(staticcall(gas(), 0x7, 0x9ea00, 0x60, 0x9ea00, 0x40), 1), success) +mstore(0x9ea60, mload(0x9e980)) + mstore(0x9ea80, mload(0x9e9a0)) +mstore(0x9eaa0, mload(0x9ea00)) + mstore(0x9eac0, mload(0x9ea20)) +success := and(eq(staticcall(gas(), 0x6, 0x9ea60, 0x80, 0x9ea60, 0x40), 1), success) +mstore(0x9eae0, 0x08d95664554b21d77f60f69fb59433447a759874b473e3fa03403cffb429b6f1) + mstore(0x9eb00, 0x1b7f91d933598df9d189fa8c6cb540404fdadd29b2b8f02d92343aeec3b70f3e) +mstore(0x9eb20, mload(0x72c20)) +success := and(eq(staticcall(gas(), 0x7, 0x9eae0, 0x60, 0x9eae0, 0x40), 1), success) +mstore(0x9eb40, mload(0x9ea60)) + mstore(0x9eb60, mload(0x9ea80)) +mstore(0x9eb80, mload(0x9eae0)) + mstore(0x9eba0, mload(0x9eb00)) +success := and(eq(staticcall(gas(), 0x6, 0x9eb40, 0x80, 0x9eb40, 0x40), 1), success) +mstore(0x9ebc0, 0x246078295ac995200e26257d6cd8dbdea5ee562ad7557423813aa05d877738a1) + mstore(0x9ebe0, 0x2e9f9eaa6854d639c1cca4b8dc333b05361515f8da12b522ded40f39922f1477) +mstore(0x9ec00, mload(0x72c40)) +success := and(eq(staticcall(gas(), 0x7, 0x9ebc0, 0x60, 0x9ebc0, 0x40), 1), success) +mstore(0x9ec20, mload(0x9eb40)) + mstore(0x9ec40, mload(0x9eb60)) +mstore(0x9ec60, mload(0x9ebc0)) + mstore(0x9ec80, mload(0x9ebe0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ec20, 0x80, 0x9ec20, 0x40), 1), success) +mstore(0x9eca0, 0x14bfe94f0221764c5c0ea1a815b5bde43eeec2cec0615a72920b3b1362945c0e) + mstore(0x9ecc0, 0x1f776f1b9a3a26a11439c17ca288eed041a0344088c61f280025f05dc1e03798) +mstore(0x9ece0, mload(0x72c60)) +success := and(eq(staticcall(gas(), 0x7, 0x9eca0, 0x60, 0x9eca0, 0x40), 1), success) +mstore(0x9ed00, mload(0x9ec20)) + mstore(0x9ed20, mload(0x9ec40)) +mstore(0x9ed40, mload(0x9eca0)) + mstore(0x9ed60, mload(0x9ecc0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ed00, 0x80, 0x9ed00, 0x40), 1), success) +mstore(0x9ed80, 0x080b871edcdde1c4ced5daed99aa3fd6f6dba0d780a21c77f9f2967d52a8ea63) + mstore(0x9eda0, 0x2c8d72150e45c15d161daee8b42202c086b7276566b64c13c4ea371a34d78cff) +mstore(0x9edc0, mload(0x72c80)) +success := and(eq(staticcall(gas(), 0x7, 0x9ed80, 0x60, 0x9ed80, 0x40), 1), success) +mstore(0x9ede0, mload(0x9ed00)) + mstore(0x9ee00, mload(0x9ed20)) +mstore(0x9ee20, mload(0x9ed80)) + mstore(0x9ee40, mload(0x9eda0)) +success := and(eq(staticcall(gas(), 0x6, 0x9ede0, 0x80, 0x9ede0, 0x40), 1), success) +mstore(0x9ee60, 0x105784d30a376fe2b7d0ed31b6ae96fd8d33be037fda487589f3c54d7fe5e0c4) + mstore(0x9ee80, 0x26422c48c1ca1f9d75e02e269c475d9742ece700199c426e88a30c129b26b562) +mstore(0x9eea0, mload(0x72ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x9ee60, 0x60, 0x9ee60, 0x40), 1), success) +mstore(0x9eec0, mload(0x9ede0)) + mstore(0x9eee0, mload(0x9ee00)) +mstore(0x9ef00, mload(0x9ee60)) + mstore(0x9ef20, mload(0x9ee80)) +success := and(eq(staticcall(gas(), 0x6, 0x9eec0, 0x80, 0x9eec0, 0x40), 1), success) +mstore(0x9ef40, 0x15fa839578716855432c3a5de990236fed731cc37081ddeea3d924a90929ed5b) + mstore(0x9ef60, 0x13a502c86931cea528e5cf5dd18a374f9f24286834d0486bb7470e8b06b3f111) +mstore(0x9ef80, mload(0x72cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x9ef40, 0x60, 0x9ef40, 0x40), 1), success) +mstore(0x9efa0, mload(0x9eec0)) + mstore(0x9efc0, mload(0x9eee0)) +mstore(0x9efe0, mload(0x9ef40)) + mstore(0x9f000, mload(0x9ef60)) +success := and(eq(staticcall(gas(), 0x6, 0x9efa0, 0x80, 0x9efa0, 0x40), 1), success) +mstore(0x9f020, 0x0c4959ec6e97b46c219c9ea2fc23c341bd6b95833167884252288b4cfe8922ee) + mstore(0x9f040, 0x0e1209fcd6fc75e680d89feffd5807a701d197eae6a2c22c7924edfebca4ba7f) +mstore(0x9f060, mload(0x72ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x9f020, 0x60, 0x9f020, 0x40), 1), success) +mstore(0x9f080, mload(0x9efa0)) + mstore(0x9f0a0, mload(0x9efc0)) +mstore(0x9f0c0, mload(0x9f020)) + mstore(0x9f0e0, mload(0x9f040)) +success := and(eq(staticcall(gas(), 0x6, 0x9f080, 0x80, 0x9f080, 0x40), 1), success) +mstore(0x9f100, 0x1cf61760ad94d2e726e986faa888d4f14adeb131030c7bd333f0d4f6dcaf615e) + mstore(0x9f120, 0x1e84c14311d47783943cc6b9fd7575bc9bb00214b7366309b35ef14f911ae50c) +mstore(0x9f140, mload(0x72d00)) +success := and(eq(staticcall(gas(), 0x7, 0x9f100, 0x60, 0x9f100, 0x40), 1), success) +mstore(0x9f160, mload(0x9f080)) + mstore(0x9f180, mload(0x9f0a0)) +mstore(0x9f1a0, mload(0x9f100)) + mstore(0x9f1c0, mload(0x9f120)) +success := and(eq(staticcall(gas(), 0x6, 0x9f160, 0x80, 0x9f160, 0x40), 1), success) +mstore(0x9f1e0, 0x2535fe1251d1bf8ebe16c9274f32fcbe0ad7a81277b688efd79b3b24d32241d6) + mstore(0x9f200, 0x1739af430895f9e6c8c12a81389f1f0931b5d7ac3468544eb38b5d8ef52f1238) +mstore(0x9f220, mload(0x72d20)) +success := and(eq(staticcall(gas(), 0x7, 0x9f1e0, 0x60, 0x9f1e0, 0x40), 1), success) +mstore(0x9f240, mload(0x9f160)) + mstore(0x9f260, mload(0x9f180)) +mstore(0x9f280, mload(0x9f1e0)) + mstore(0x9f2a0, mload(0x9f200)) +success := and(eq(staticcall(gas(), 0x6, 0x9f240, 0x80, 0x9f240, 0x40), 1), success) +mstore(0x9f2c0, 0x1578cf0e46ff4b4d1dba8f533adab315c745856e39576f2733469190013289e8) + mstore(0x9f2e0, 0x1741a44b37fc51d18b2567879f9df713c20655cba059b83518e7ab423edc3444) +mstore(0x9f300, mload(0x72d40)) +success := and(eq(staticcall(gas(), 0x7, 0x9f2c0, 0x60, 0x9f2c0, 0x40), 1), success) +mstore(0x9f320, mload(0x9f240)) + mstore(0x9f340, mload(0x9f260)) +mstore(0x9f360, mload(0x9f2c0)) + mstore(0x9f380, mload(0x9f2e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9f320, 0x80, 0x9f320, 0x40), 1), success) +mstore(0x9f3a0, 0x041fdd39ff5efd9b703fa63a92ec07773dfe76c2b9761413043fb7717735fbb8) + mstore(0x9f3c0, 0x0379583b9224d6d93d1ddf6469aad6f49dd8c920670eb7fba4da932c3c1a2bee) +mstore(0x9f3e0, mload(0x72d60)) +success := and(eq(staticcall(gas(), 0x7, 0x9f3a0, 0x60, 0x9f3a0, 0x40), 1), success) +mstore(0x9f400, mload(0x9f320)) + mstore(0x9f420, mload(0x9f340)) +mstore(0x9f440, mload(0x9f3a0)) + mstore(0x9f460, mload(0x9f3c0)) +success := and(eq(staticcall(gas(), 0x6, 0x9f400, 0x80, 0x9f400, 0x40), 1), success) +mstore(0x9f480, 0x10638c2b79e5bf75f0dc291d997ecef6e13827f52666a6f1b7896dd463ba2929) + mstore(0x9f4a0, 0x0dbbdb9e745e5c8e2ac04a91545033f90cb456fcf152be0e727fb501a818d13b) +mstore(0x9f4c0, mload(0x72d80)) +success := and(eq(staticcall(gas(), 0x7, 0x9f480, 0x60, 0x9f480, 0x40), 1), success) +mstore(0x9f4e0, mload(0x9f400)) + mstore(0x9f500, mload(0x9f420)) +mstore(0x9f520, mload(0x9f480)) + mstore(0x9f540, mload(0x9f4a0)) +success := and(eq(staticcall(gas(), 0x6, 0x9f4e0, 0x80, 0x9f4e0, 0x40), 1), success) +mstore(0x9f560, 0x1ee4bc2213263d9ffa98d6b7fb386c2595a9b18a5cf3473c01ed35cac3919f99) + mstore(0x9f580, 0x13614781cdd582775a09bcaa84492e7166844e8fe003ce081535e4d8e5bfdfff) +mstore(0x9f5a0, mload(0x72da0)) +success := and(eq(staticcall(gas(), 0x7, 0x9f560, 0x60, 0x9f560, 0x40), 1), success) +mstore(0x9f5c0, mload(0x9f4e0)) + mstore(0x9f5e0, mload(0x9f500)) +mstore(0x9f600, mload(0x9f560)) + mstore(0x9f620, mload(0x9f580)) +success := and(eq(staticcall(gas(), 0x6, 0x9f5c0, 0x80, 0x9f5c0, 0x40), 1), success) +mstore(0x9f640, 0x00493e8ab575aabef19e7e3dde819d71ec6f2ce0987b8faf4db0291c3d088f91) + mstore(0x9f660, 0x0d65f87e19c2faa26d2b1fec5bacc6d9d2a3e9a7f0eb19f08c7a528d6ca51a5e) +mstore(0x9f680, mload(0x72dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x9f640, 0x60, 0x9f640, 0x40), 1), success) +mstore(0x9f6a0, mload(0x9f5c0)) + mstore(0x9f6c0, mload(0x9f5e0)) +mstore(0x9f6e0, mload(0x9f640)) + mstore(0x9f700, mload(0x9f660)) +success := and(eq(staticcall(gas(), 0x6, 0x9f6a0, 0x80, 0x9f6a0, 0x40), 1), success) +mstore(0x9f720, 0x17b63bbed7f14db94a3c2f5ef4198c80b1d5234250cd44b5f400b277a9589798) + mstore(0x9f740, 0x01de9118ccbfc2b3b32216be14388147f3c8e25daa3ee9093b39f14cd203b806) +mstore(0x9f760, mload(0x72de0)) +success := and(eq(staticcall(gas(), 0x7, 0x9f720, 0x60, 0x9f720, 0x40), 1), success) +mstore(0x9f780, mload(0x9f6a0)) + mstore(0x9f7a0, mload(0x9f6c0)) +mstore(0x9f7c0, mload(0x9f720)) + mstore(0x9f7e0, mload(0x9f740)) +success := and(eq(staticcall(gas(), 0x6, 0x9f780, 0x80, 0x9f780, 0x40), 1), success) +mstore(0x9f800, 0x1045546fd34a81246ef38f291c4309cd2036f85fcc96bfa601640e50e8a9df4e) + mstore(0x9f820, 0x2efe5e2d2b3576dd1c5bb7407c2b958e65c3cfa3408346503e196b9da19866ff) +mstore(0x9f840, mload(0x72e00)) +success := and(eq(staticcall(gas(), 0x7, 0x9f800, 0x60, 0x9f800, 0x40), 1), success) +mstore(0x9f860, mload(0x9f780)) + mstore(0x9f880, mload(0x9f7a0)) +mstore(0x9f8a0, mload(0x9f800)) + mstore(0x9f8c0, mload(0x9f820)) +success := and(eq(staticcall(gas(), 0x6, 0x9f860, 0x80, 0x9f860, 0x40), 1), success) +mstore(0x9f8e0, 0x241a8bbe5ad27c7f7533f8b55685df2f847dc614d5e909a3f12bbd4cbbf42e04) + mstore(0x9f900, 0x04da568bf6d3d8d9b8d84086be75aebdd78f40dd4118a32989c67f8a4b8d4681) +mstore(0x9f920, mload(0x72e20)) +success := and(eq(staticcall(gas(), 0x7, 0x9f8e0, 0x60, 0x9f8e0, 0x40), 1), success) +mstore(0x9f940, mload(0x9f860)) + mstore(0x9f960, mload(0x9f880)) +mstore(0x9f980, mload(0x9f8e0)) + mstore(0x9f9a0, mload(0x9f900)) +success := and(eq(staticcall(gas(), 0x6, 0x9f940, 0x80, 0x9f940, 0x40), 1), success) +mstore(0x9f9c0, 0x0088be42d9a9fdc43b9048b680a04253fccd002299c233a1f4404d443dcbb8a3) + mstore(0x9f9e0, 0x255d25ac16db3e18cbd94749be665430b325b0ef6135ca2607bb9b8fb1a3152c) +mstore(0x9fa00, mload(0x72e40)) +success := and(eq(staticcall(gas(), 0x7, 0x9f9c0, 0x60, 0x9f9c0, 0x40), 1), success) +mstore(0x9fa20, mload(0x9f940)) + mstore(0x9fa40, mload(0x9f960)) +mstore(0x9fa60, mload(0x9f9c0)) + mstore(0x9fa80, mload(0x9f9e0)) +success := and(eq(staticcall(gas(), 0x6, 0x9fa20, 0x80, 0x9fa20, 0x40), 1), success) +mstore(0x9faa0, 0x2454fa7be7285904460e9891558a4c2b7eed40b5502f8e20cebeb1bb37025732) + mstore(0x9fac0, 0x14183a0f36ca37772931d4f0be2a233d653f64388635331e55a6c227829c1eb6) +mstore(0x9fae0, mload(0x72e60)) +success := and(eq(staticcall(gas(), 0x7, 0x9faa0, 0x60, 0x9faa0, 0x40), 1), success) +mstore(0x9fb00, mload(0x9fa20)) + mstore(0x9fb20, mload(0x9fa40)) +mstore(0x9fb40, mload(0x9faa0)) + mstore(0x9fb60, mload(0x9fac0)) +success := and(eq(staticcall(gas(), 0x6, 0x9fb00, 0x80, 0x9fb00, 0x40), 1), success) +mstore(0x9fb80, 0x20506abf9746222c4b5f581c991c37808e1a4a6d82da2c98991486e2aa65e791) + mstore(0x9fba0, 0x0ac46e7ee752ce641df15f8cd3bdbd75b90c3d7ec84a729a52e03bf42db1cf97) +mstore(0x9fbc0, mload(0x72e80)) +success := and(eq(staticcall(gas(), 0x7, 0x9fb80, 0x60, 0x9fb80, 0x40), 1), success) +mstore(0x9fbe0, mload(0x9fb00)) + mstore(0x9fc00, mload(0x9fb20)) +mstore(0x9fc20, mload(0x9fb80)) + mstore(0x9fc40, mload(0x9fba0)) +success := and(eq(staticcall(gas(), 0x6, 0x9fbe0, 0x80, 0x9fbe0, 0x40), 1), success) +mstore(0x9fc60, 0x15ff6532f88a0f257d68d6ca43c57f180fe7eafabc6d40fdbc65eb156ad25d83) + mstore(0x9fc80, 0x1f7a8f191748d7fbc8949b9d40ddef592e8b34f87c0089d1b205e92e10cd75c5) +mstore(0x9fca0, mload(0x72ea0)) +success := and(eq(staticcall(gas(), 0x7, 0x9fc60, 0x60, 0x9fc60, 0x40), 1), success) +mstore(0x9fcc0, mload(0x9fbe0)) + mstore(0x9fce0, mload(0x9fc00)) +mstore(0x9fd00, mload(0x9fc60)) + mstore(0x9fd20, mload(0x9fc80)) +success := and(eq(staticcall(gas(), 0x6, 0x9fcc0, 0x80, 0x9fcc0, 0x40), 1), success) +mstore(0x9fd40, 0x0b295d7ffcfbeb563819cdb06b92a5973a508f285fe0fac6e8c7c4ab6686e0ba) + mstore(0x9fd60, 0x250788faccc1df157abb3963f0ce8660924aa79988b01220fb37dfa588ff5590) +mstore(0x9fd80, mload(0x72ec0)) +success := and(eq(staticcall(gas(), 0x7, 0x9fd40, 0x60, 0x9fd40, 0x40), 1), success) +mstore(0x9fda0, mload(0x9fcc0)) + mstore(0x9fdc0, mload(0x9fce0)) +mstore(0x9fde0, mload(0x9fd40)) + mstore(0x9fe00, mload(0x9fd60)) +success := and(eq(staticcall(gas(), 0x6, 0x9fda0, 0x80, 0x9fda0, 0x40), 1), success) +mstore(0x9fe20, 0x2ef42ad15a0ba78b38ffe8392191cba4ac19fec99971da93e006783d3456c1a9) + mstore(0x9fe40, 0x07911c0dbab0f77f1de4f861e8b20ffe864f123463441de4181b553e2483e7f3) +mstore(0x9fe60, mload(0x72ee0)) +success := and(eq(staticcall(gas(), 0x7, 0x9fe20, 0x60, 0x9fe20, 0x40), 1), success) +mstore(0x9fe80, mload(0x9fda0)) + mstore(0x9fea0, mload(0x9fdc0)) +mstore(0x9fec0, mload(0x9fe20)) + mstore(0x9fee0, mload(0x9fe40)) +success := and(eq(staticcall(gas(), 0x6, 0x9fe80, 0x80, 0x9fe80, 0x40), 1), success) +mstore(0x9ff00, 0x0a7970949782bb400965adfa85b339b3e50e7f459bf052b70b1de9fc831d36a2) + mstore(0x9ff20, 0x26a087cead23eee7cd06ba9100af0e3494b0cedaaf095b4e0e49ab83b3a00845) +mstore(0x9ff40, mload(0x72f00)) +success := and(eq(staticcall(gas(), 0x7, 0x9ff00, 0x60, 0x9ff00, 0x40), 1), success) +mstore(0x9ff60, mload(0x9fe80)) + mstore(0x9ff80, mload(0x9fea0)) +mstore(0x9ffa0, mload(0x9ff00)) + mstore(0x9ffc0, mload(0x9ff20)) +success := and(eq(staticcall(gas(), 0x6, 0x9ff60, 0x80, 0x9ff60, 0x40), 1), success) +mstore(0x9ffe0, 0x0e324ce22051c93ab51ea27106b71f2c085914cb577c4d3147447c7a4461b31a) + mstore(0xa0000, 0x2468fb61b916e2398575e72315a015988d7b62ffac86d5e247b710941cdb632e) +mstore(0xa0020, mload(0x72f20)) +success := and(eq(staticcall(gas(), 0x7, 0x9ffe0, 0x60, 0x9ffe0, 0x40), 1), success) +mstore(0xa0040, mload(0x9ff60)) + mstore(0xa0060, mload(0x9ff80)) +mstore(0xa0080, mload(0x9ffe0)) + mstore(0xa00a0, mload(0xa0000)) +success := and(eq(staticcall(gas(), 0x6, 0xa0040, 0x80, 0xa0040, 0x40), 1), success) +mstore(0xa00c0, 0x12eaaeb7bc6378c9862c608998c45a74946e028c96db42e779b9385dadf18499) + mstore(0xa00e0, 0x16e75a6c82562ced47f3eb82d0152f4139397dbdc9ed4cbda056c73a3f862397) +mstore(0xa0100, mload(0x72f40)) +success := and(eq(staticcall(gas(), 0x7, 0xa00c0, 0x60, 0xa00c0, 0x40), 1), success) +mstore(0xa0120, mload(0xa0040)) + mstore(0xa0140, mload(0xa0060)) +mstore(0xa0160, mload(0xa00c0)) + mstore(0xa0180, mload(0xa00e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa0120, 0x80, 0xa0120, 0x40), 1), success) +mstore(0xa01a0, 0x082401bd4b63a63f73c6037d98a526fd902da9881e5050d40b5f277b7e18829a) + mstore(0xa01c0, 0x1d1851c8d2592a45f42d053c294111a9098c1af2b2a0f80491f9d674203c6b4c) +mstore(0xa01e0, mload(0x72f60)) +success := and(eq(staticcall(gas(), 0x7, 0xa01a0, 0x60, 0xa01a0, 0x40), 1), success) +mstore(0xa0200, mload(0xa0120)) + mstore(0xa0220, mload(0xa0140)) +mstore(0xa0240, mload(0xa01a0)) + mstore(0xa0260, mload(0xa01c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa0200, 0x80, 0xa0200, 0x40), 1), success) +mstore(0xa0280, 0x126f81b8732dfb76105be7f0bc8752ff49079834d8009f3452bf6e0dbb738fc4) + mstore(0xa02a0, 0x1d69d55b469218e1ec884a56144641596fb06823cfe2d1f1a6e7cc6c6fa0ce2d) +mstore(0xa02c0, mload(0x72f80)) +success := and(eq(staticcall(gas(), 0x7, 0xa0280, 0x60, 0xa0280, 0x40), 1), success) +mstore(0xa02e0, mload(0xa0200)) + mstore(0xa0300, mload(0xa0220)) +mstore(0xa0320, mload(0xa0280)) + mstore(0xa0340, mload(0xa02a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa02e0, 0x80, 0xa02e0, 0x40), 1), success) +mstore(0xa0360, 0x1aee78ad1610cab4b9b0cf963ff549d5c976359899f81f8cbfc8630f7f65ffc5) + mstore(0xa0380, 0x119fd527069393e32117009025110eae4949d431dc95c68410a9c419f93875e1) +mstore(0xa03a0, mload(0x72fa0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0360, 0x60, 0xa0360, 0x40), 1), success) +mstore(0xa03c0, mload(0xa02e0)) + mstore(0xa03e0, mload(0xa0300)) +mstore(0xa0400, mload(0xa0360)) + mstore(0xa0420, mload(0xa0380)) +success := and(eq(staticcall(gas(), 0x6, 0xa03c0, 0x80, 0xa03c0, 0x40), 1), success) +mstore(0xa0440, 0x274518509b4c908fb2ecf76cd76ffa86d00a2342d58cf39684b93b02ac896895) + mstore(0xa0460, 0x29dd57e3ed9c8bed3652de250ab5cc9dcbfb2edbb868fea1467db3cd5877c919) +mstore(0xa0480, mload(0x72fc0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0440, 0x60, 0xa0440, 0x40), 1), success) +mstore(0xa04a0, mload(0xa03c0)) + mstore(0xa04c0, mload(0xa03e0)) +mstore(0xa04e0, mload(0xa0440)) + mstore(0xa0500, mload(0xa0460)) +success := and(eq(staticcall(gas(), 0x6, 0xa04a0, 0x80, 0xa04a0, 0x40), 1), success) +mstore(0xa0520, 0x0636d7c46a7ccbbb1e74c2e74d738a2cd67b7d53fc3b23a5ebb97787968f6fe4) + mstore(0xa0540, 0x1a0482a1d4ef28d032ee6142628ce4c93e9ff7983c21968330e8acb698a94d76) +mstore(0xa0560, mload(0x72fe0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0520, 0x60, 0xa0520, 0x40), 1), success) +mstore(0xa0580, mload(0xa04a0)) + mstore(0xa05a0, mload(0xa04c0)) +mstore(0xa05c0, mload(0xa0520)) + mstore(0xa05e0, mload(0xa0540)) +success := and(eq(staticcall(gas(), 0x6, 0xa0580, 0x80, 0xa0580, 0x40), 1), success) +mstore(0xa0600, 0x037ea7bb93ca58e43d238bc42f6e34cd4d8694f2d26ba05aabba6e4ab19c4e06) + mstore(0xa0620, 0x2fef95780af4c139f96566006547751701bf364d6fa18f3d8f16c073c46ea5df) +mstore(0xa0640, mload(0x73000)) +success := and(eq(staticcall(gas(), 0x7, 0xa0600, 0x60, 0xa0600, 0x40), 1), success) +mstore(0xa0660, mload(0xa0580)) + mstore(0xa0680, mload(0xa05a0)) +mstore(0xa06a0, mload(0xa0600)) + mstore(0xa06c0, mload(0xa0620)) +success := and(eq(staticcall(gas(), 0x6, 0xa0660, 0x80, 0xa0660, 0x40), 1), success) +mstore(0xa06e0, 0x2875aa9abb4e160aab4acf0033d35da24e439000c9506995ee73e8467d9067ff) + mstore(0xa0700, 0x0f2e12c8d129968c91c11222ff39878985b41c40a188f4dd3901decac8477b19) +mstore(0xa0720, mload(0x73020)) +success := and(eq(staticcall(gas(), 0x7, 0xa06e0, 0x60, 0xa06e0, 0x40), 1), success) +mstore(0xa0740, mload(0xa0660)) + mstore(0xa0760, mload(0xa0680)) +mstore(0xa0780, mload(0xa06e0)) + mstore(0xa07a0, mload(0xa0700)) +success := and(eq(staticcall(gas(), 0x6, 0xa0740, 0x80, 0xa0740, 0x40), 1), success) +mstore(0xa07c0, 0x2744175463eec87cf936974aa240bc41fcbb2d51acce4f56a89f19e58274079d) + mstore(0xa07e0, 0x0b408e64345d50549778b5a4fb9f8883cfb8b618a94e30f09e0dae15b06a6795) +mstore(0xa0800, mload(0x73040)) +success := and(eq(staticcall(gas(), 0x7, 0xa07c0, 0x60, 0xa07c0, 0x40), 1), success) +mstore(0xa0820, mload(0xa0740)) + mstore(0xa0840, mload(0xa0760)) +mstore(0xa0860, mload(0xa07c0)) + mstore(0xa0880, mload(0xa07e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa0820, 0x80, 0xa0820, 0x40), 1), success) +mstore(0xa08a0, 0x2c813485e117ddf57ab8d4bd46aa2b17ce2c3f0629f5e229faf888470d0bf84f) + mstore(0xa08c0, 0x04f94fd14647fec9060a40bc3d1acd48b07ee204ed1e45d911edd9f07d22700b) +mstore(0xa08e0, mload(0x73060)) +success := and(eq(staticcall(gas(), 0x7, 0xa08a0, 0x60, 0xa08a0, 0x40), 1), success) +mstore(0xa0900, mload(0xa0820)) + mstore(0xa0920, mload(0xa0840)) +mstore(0xa0940, mload(0xa08a0)) + mstore(0xa0960, mload(0xa08c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa0900, 0x80, 0xa0900, 0x40), 1), success) +mstore(0xa0980, 0x0f6f4dd75ff8dbb5978e1175c270c3fcf74de89080a55d5edf7f2c1c79d8ed78) + mstore(0xa09a0, 0x07a9d98f42296f4f781088675e7621d3d0f2db26016600d9dad3dfc58ec53057) +mstore(0xa09c0, mload(0x73080)) +success := and(eq(staticcall(gas(), 0x7, 0xa0980, 0x60, 0xa0980, 0x40), 1), success) +mstore(0xa09e0, mload(0xa0900)) + mstore(0xa0a00, mload(0xa0920)) +mstore(0xa0a20, mload(0xa0980)) + mstore(0xa0a40, mload(0xa09a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa09e0, 0x80, 0xa09e0, 0x40), 1), success) +mstore(0xa0a60, 0x1d35b9eb1d0ffeaa1492648ef8b585bf7363154212dd09ba72f9614d7f56393d) + mstore(0xa0a80, 0x2b1508c188d50bf2e0b1769593903d1261d304a4678253b7d1a5ced07a630704) +mstore(0xa0aa0, mload(0x730a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0a60, 0x60, 0xa0a60, 0x40), 1), success) +mstore(0xa0ac0, mload(0xa09e0)) + mstore(0xa0ae0, mload(0xa0a00)) +mstore(0xa0b00, mload(0xa0a60)) + mstore(0xa0b20, mload(0xa0a80)) +success := and(eq(staticcall(gas(), 0x6, 0xa0ac0, 0x80, 0xa0ac0, 0x40), 1), success) +mstore(0xa0b40, 0x0146179f9e4fcc1a3b0eac08cf776b1b0fcdbea2c197027dad58603891498e6e) + mstore(0xa0b60, 0x1f36b632d06fbad9c84bb4ed7d936e39bd66238676651e3814a46f9c8d5cf649) +mstore(0xa0b80, mload(0x730c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0b40, 0x60, 0xa0b40, 0x40), 1), success) +mstore(0xa0ba0, mload(0xa0ac0)) + mstore(0xa0bc0, mload(0xa0ae0)) +mstore(0xa0be0, mload(0xa0b40)) + mstore(0xa0c00, mload(0xa0b60)) +success := and(eq(staticcall(gas(), 0x6, 0xa0ba0, 0x80, 0xa0ba0, 0x40), 1), success) +mstore(0xa0c20, 0x05b44671193502b88ec245cdd5d05150511842d935026c0e905c560b880d47b1) + mstore(0xa0c40, 0x1b8923b398d572ae5015240880e21845aaef03ccb8332b08eff001a22db40a0f) +mstore(0xa0c60, mload(0x730e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa0c20, 0x60, 0xa0c20, 0x40), 1), success) +mstore(0xa0c80, mload(0xa0ba0)) + mstore(0xa0ca0, mload(0xa0bc0)) +mstore(0xa0cc0, mload(0xa0c20)) + mstore(0xa0ce0, mload(0xa0c40)) +success := and(eq(staticcall(gas(), 0x6, 0xa0c80, 0x80, 0xa0c80, 0x40), 1), success) +mstore(0xa0d00, 0x1dd090c4e1f9f40b65828adadefd6a3bfe768236a1f59fd625930859fc2a2fd9) + mstore(0xa0d20, 0x2bd49474b7647c184167bed2ce1d3e449e83f998619b150d578d3cdd9210fe66) +mstore(0xa0d40, mload(0x73100)) +success := and(eq(staticcall(gas(), 0x7, 0xa0d00, 0x60, 0xa0d00, 0x40), 1), success) +mstore(0xa0d60, mload(0xa0c80)) + mstore(0xa0d80, mload(0xa0ca0)) +mstore(0xa0da0, mload(0xa0d00)) + mstore(0xa0dc0, mload(0xa0d20)) +success := and(eq(staticcall(gas(), 0x6, 0xa0d60, 0x80, 0xa0d60, 0x40), 1), success) +mstore(0xa0de0, 0x24043034da634f09bdce1142d3b9e31df79cfb8ba55f1eafa63cc22f0e6fddf4) + mstore(0xa0e00, 0x165540cf5595f4c9fcbac217f9a71398b6b247aa6d304c44c7356f3934979a3b) +mstore(0xa0e20, mload(0x73120)) +success := and(eq(staticcall(gas(), 0x7, 0xa0de0, 0x60, 0xa0de0, 0x40), 1), success) +mstore(0xa0e40, mload(0xa0d60)) + mstore(0xa0e60, mload(0xa0d80)) +mstore(0xa0e80, mload(0xa0de0)) + mstore(0xa0ea0, mload(0xa0e00)) +success := and(eq(staticcall(gas(), 0x6, 0xa0e40, 0x80, 0xa0e40, 0x40), 1), success) +mstore(0xa0ec0, 0x1e1a978bf49111c5f973958e8838276e0f4638276786545ce775531858b4b708) + mstore(0xa0ee0, 0x2d364d7578ce5f265af2fda31ac64096254fd8f4dd9317860a0fad4408518104) +mstore(0xa0f00, mload(0x73140)) +success := and(eq(staticcall(gas(), 0x7, 0xa0ec0, 0x60, 0xa0ec0, 0x40), 1), success) +mstore(0xa0f20, mload(0xa0e40)) + mstore(0xa0f40, mload(0xa0e60)) +mstore(0xa0f60, mload(0xa0ec0)) + mstore(0xa0f80, mload(0xa0ee0)) +success := and(eq(staticcall(gas(), 0x6, 0xa0f20, 0x80, 0xa0f20, 0x40), 1), success) +mstore(0xa0fa0, 0x09edc6650b945bd4afbd5fc11c9e75def96bd01c2fab45f6e147d7e7d6119ecf) + mstore(0xa0fc0, 0x0e39d07356a07692feb0baa03aa02154ec5048a8de861aed84ed8b61152558df) +mstore(0xa0fe0, mload(0x73160)) +success := and(eq(staticcall(gas(), 0x7, 0xa0fa0, 0x60, 0xa0fa0, 0x40), 1), success) +mstore(0xa1000, mload(0xa0f20)) + mstore(0xa1020, mload(0xa0f40)) +mstore(0xa1040, mload(0xa0fa0)) + mstore(0xa1060, mload(0xa0fc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1000, 0x80, 0xa1000, 0x40), 1), success) +mstore(0xa1080, 0x09ba20ee6fbdeee2c265c6b0b7701b0706d401464d042bdbf5d5f9a61f7dbdf9) + mstore(0xa10a0, 0x2b5ffe0a60bc9e2dc8867b2a39cea2322365b5cee89b2e1aee64bcbf399acc47) +mstore(0xa10c0, mload(0x73180)) +success := and(eq(staticcall(gas(), 0x7, 0xa1080, 0x60, 0xa1080, 0x40), 1), success) +mstore(0xa10e0, mload(0xa1000)) + mstore(0xa1100, mload(0xa1020)) +mstore(0xa1120, mload(0xa1080)) + mstore(0xa1140, mload(0xa10a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa10e0, 0x80, 0xa10e0, 0x40), 1), success) +mstore(0xa1160, 0x0e29ca0a46d32e4f74a3e6c53a3183395c18040b710a8d7c816bea49c5b612bb) + mstore(0xa1180, 0x2686cf3298cbdb872b4ecf5761e42dd228c4676e61560fd5c4bc375f5fb6b5ea) +mstore(0xa11a0, mload(0x731a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1160, 0x60, 0xa1160, 0x40), 1), success) +mstore(0xa11c0, mload(0xa10e0)) + mstore(0xa11e0, mload(0xa1100)) +mstore(0xa1200, mload(0xa1160)) + mstore(0xa1220, mload(0xa1180)) +success := and(eq(staticcall(gas(), 0x6, 0xa11c0, 0x80, 0xa11c0, 0x40), 1), success) +mstore(0xa1240, 0x0e4de0e4ccf256d1ceb2b1f30c982c5de711019df03cf500751e0a0344e0dee8) + mstore(0xa1260, 0x08d5042e09baf69f8fb72949df682d7cd80e3b4770f9285619ba1da53d460108) +mstore(0xa1280, mload(0x731c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1240, 0x60, 0xa1240, 0x40), 1), success) +mstore(0xa12a0, mload(0xa11c0)) + mstore(0xa12c0, mload(0xa11e0)) +mstore(0xa12e0, mload(0xa1240)) + mstore(0xa1300, mload(0xa1260)) +success := and(eq(staticcall(gas(), 0x6, 0xa12a0, 0x80, 0xa12a0, 0x40), 1), success) +mstore(0xa1320, 0x09c49fa8fa86837d582e7986f28b4eafdf2bc6716b71b866abd16e651095af30) + mstore(0xa1340, 0x03a70fd14786c488f7f1b1d3680103f2a209c0743702b5e44f71065a669fa4c4) +mstore(0xa1360, mload(0x731e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1320, 0x60, 0xa1320, 0x40), 1), success) +mstore(0xa1380, mload(0xa12a0)) + mstore(0xa13a0, mload(0xa12c0)) +mstore(0xa13c0, mload(0xa1320)) + mstore(0xa13e0, mload(0xa1340)) +success := and(eq(staticcall(gas(), 0x6, 0xa1380, 0x80, 0xa1380, 0x40), 1), success) +mstore(0xa1400, 0x1a554ee4f667850bc423ec2f3432e94b7b48a5d206071cfe75396c7e524a8020) + mstore(0xa1420, 0x288796af588c742d1fe24b6e2f8e125bb32280adcb30bcc78b47d257ecc992a7) +mstore(0xa1440, mload(0x73200)) +success := and(eq(staticcall(gas(), 0x7, 0xa1400, 0x60, 0xa1400, 0x40), 1), success) +mstore(0xa1460, mload(0xa1380)) + mstore(0xa1480, mload(0xa13a0)) +mstore(0xa14a0, mload(0xa1400)) + mstore(0xa14c0, mload(0xa1420)) +success := and(eq(staticcall(gas(), 0x6, 0xa1460, 0x80, 0xa1460, 0x40), 1), success) +mstore(0xa14e0, 0x1d9590324d89e86ea18618d3defc5af5901c7810a581eab305377b47b549bb10) + mstore(0xa1500, 0x02bf73ce6fa0e26761221335ccf197329e0181336dd76c3095a9f9bb65e20a57) +mstore(0xa1520, mload(0x73220)) +success := and(eq(staticcall(gas(), 0x7, 0xa14e0, 0x60, 0xa14e0, 0x40), 1), success) +mstore(0xa1540, mload(0xa1460)) + mstore(0xa1560, mload(0xa1480)) +mstore(0xa1580, mload(0xa14e0)) + mstore(0xa15a0, mload(0xa1500)) +success := and(eq(staticcall(gas(), 0x6, 0xa1540, 0x80, 0xa1540, 0x40), 1), success) +mstore(0xa15c0, 0x21b2d7226c656539f5e72b9c19feb4da0f5ea34262fef91601d07b8a0b323850) + mstore(0xa15e0, 0x1cc0c9b62f9180f17bd66c77a628fd6acd3059bf4900bfd9db8cb35bb2610f3d) +mstore(0xa1600, mload(0x73240)) +success := and(eq(staticcall(gas(), 0x7, 0xa15c0, 0x60, 0xa15c0, 0x40), 1), success) +mstore(0xa1620, mload(0xa1540)) + mstore(0xa1640, mload(0xa1560)) +mstore(0xa1660, mload(0xa15c0)) + mstore(0xa1680, mload(0xa15e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1620, 0x80, 0xa1620, 0x40), 1), success) +mstore(0xa16a0, 0x0c5e41cbd9ef953a025a6354f01ede95192d1d651914e271eb7e185d6e1918f0) + mstore(0xa16c0, 0x2b64251068cbb2897a57d5e64d5e136e6798d3b6a637d81e7e0c1161998cefee) +mstore(0xa16e0, mload(0x73260)) +success := and(eq(staticcall(gas(), 0x7, 0xa16a0, 0x60, 0xa16a0, 0x40), 1), success) +mstore(0xa1700, mload(0xa1620)) + mstore(0xa1720, mload(0xa1640)) +mstore(0xa1740, mload(0xa16a0)) + mstore(0xa1760, mload(0xa16c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1700, 0x80, 0xa1700, 0x40), 1), success) +mstore(0xa1780, 0x037150b577a69ebf910fc57e5abd610c8f89882bf716f7988120ce5f7c95a362) + mstore(0xa17a0, 0x186f5f0635e416b062b55d78b8d28188b447d07dfd160ad646bcf605d0d3ad4f) +mstore(0xa17c0, mload(0x73280)) +success := and(eq(staticcall(gas(), 0x7, 0xa1780, 0x60, 0xa1780, 0x40), 1), success) +mstore(0xa17e0, mload(0xa1700)) + mstore(0xa1800, mload(0xa1720)) +mstore(0xa1820, mload(0xa1780)) + mstore(0xa1840, mload(0xa17a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa17e0, 0x80, 0xa17e0, 0x40), 1), success) +mstore(0xa1860, 0x0f383b408ba95dfa302fc5cc3508443e2163713eff1e52b35233e23689571af4) + mstore(0xa1880, 0x0f73d8b8229e22f2ae357dc67fcbdf53004931431ed252ee8c9227cb29f2c9b4) +mstore(0xa18a0, mload(0x732a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1860, 0x60, 0xa1860, 0x40), 1), success) +mstore(0xa18c0, mload(0xa17e0)) + mstore(0xa18e0, mload(0xa1800)) +mstore(0xa1900, mload(0xa1860)) + mstore(0xa1920, mload(0xa1880)) +success := and(eq(staticcall(gas(), 0x6, 0xa18c0, 0x80, 0xa18c0, 0x40), 1), success) +mstore(0xa1940, 0x0c194c766f37c2c6ef4352dd2d95f93be1e532de2c84063822fe1e21b58b312e) + mstore(0xa1960, 0x29d77d8e52a1eff6a2070faa210746cf6cf3d41d80150642d32c785c168b171e) +mstore(0xa1980, mload(0x732c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1940, 0x60, 0xa1940, 0x40), 1), success) +mstore(0xa19a0, mload(0xa18c0)) + mstore(0xa19c0, mload(0xa18e0)) +mstore(0xa19e0, mload(0xa1940)) + mstore(0xa1a00, mload(0xa1960)) +success := and(eq(staticcall(gas(), 0x6, 0xa19a0, 0x80, 0xa19a0, 0x40), 1), success) +mstore(0xa1a20, 0x0d9016fa1c0f115eb2a843d0175c81e1ad2f1a8ed9ee92db166c6e1d5bfa66d3) + mstore(0xa1a40, 0x1b1944316a825019574016ce5fa41bc9613a2b7206540668d406b4cb0fbe63da) +mstore(0xa1a60, mload(0x732e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1a20, 0x60, 0xa1a20, 0x40), 1), success) +mstore(0xa1a80, mload(0xa19a0)) + mstore(0xa1aa0, mload(0xa19c0)) +mstore(0xa1ac0, mload(0xa1a20)) + mstore(0xa1ae0, mload(0xa1a40)) +success := and(eq(staticcall(gas(), 0x6, 0xa1a80, 0x80, 0xa1a80, 0x40), 1), success) +mstore(0xa1b00, 0x24e988d263b181a995786a1eddc408f4158ac40b956e3ed9770dc6f653ff8c4a) + mstore(0xa1b20, 0x0cf50cb18e0b99654178125908f53f0518419acd0e6745327c5dfb7716abe0be) +mstore(0xa1b40, mload(0x73300)) +success := and(eq(staticcall(gas(), 0x7, 0xa1b00, 0x60, 0xa1b00, 0x40), 1), success) +mstore(0xa1b60, mload(0xa1a80)) + mstore(0xa1b80, mload(0xa1aa0)) +mstore(0xa1ba0, mload(0xa1b00)) + mstore(0xa1bc0, mload(0xa1b20)) +success := and(eq(staticcall(gas(), 0x6, 0xa1b60, 0x80, 0xa1b60, 0x40), 1), success) +mstore(0xa1be0, 0x2c8e7bfc2c84b217e9bb96f3cfe86eb352eb08f48275686e6fc54c15b8752aee) + mstore(0xa1c00, 0x1abb2f784b7804ef12782347f0c822b4227e3bffdd9c538f6f6510e11ba13d4e) +mstore(0xa1c20, mload(0x73320)) +success := and(eq(staticcall(gas(), 0x7, 0xa1be0, 0x60, 0xa1be0, 0x40), 1), success) +mstore(0xa1c40, mload(0xa1b60)) + mstore(0xa1c60, mload(0xa1b80)) +mstore(0xa1c80, mload(0xa1be0)) + mstore(0xa1ca0, mload(0xa1c00)) +success := and(eq(staticcall(gas(), 0x6, 0xa1c40, 0x80, 0xa1c40, 0x40), 1), success) +mstore(0xa1cc0, 0x2a82d3e80bdca381bb2f94b4c6059d663d91bd5f5ff195f6b0a34c63332cb7b2) + mstore(0xa1ce0, 0x3042ab4f0645bc2f1066b0d91c341d4a3d3a26f73a1effe0e0a4061a9a479cd4) +mstore(0xa1d00, mload(0x73340)) +success := and(eq(staticcall(gas(), 0x7, 0xa1cc0, 0x60, 0xa1cc0, 0x40), 1), success) +mstore(0xa1d20, mload(0xa1c40)) + mstore(0xa1d40, mload(0xa1c60)) +mstore(0xa1d60, mload(0xa1cc0)) + mstore(0xa1d80, mload(0xa1ce0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1d20, 0x80, 0xa1d20, 0x40), 1), success) +mstore(0xa1da0, 0x230f00e997931131a8e52fd95a1408eea7b9e53efc4c6165c191891a03ceb0e0) + mstore(0xa1dc0, 0x2133445dbba5ff6b6a66ea557893f4b21a4406eb3c8e24c823c8d169b17800e2) +mstore(0xa1de0, mload(0x73360)) +success := and(eq(staticcall(gas(), 0x7, 0xa1da0, 0x60, 0xa1da0, 0x40), 1), success) +mstore(0xa1e00, mload(0xa1d20)) + mstore(0xa1e20, mload(0xa1d40)) +mstore(0xa1e40, mload(0xa1da0)) + mstore(0xa1e60, mload(0xa1dc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1e00, 0x80, 0xa1e00, 0x40), 1), success) +mstore(0xa1e80, 0x2dd9bd92594dec084fc90f08a76a8b0eceab0d6835bd95c5bacc9df41d85c25b) + mstore(0xa1ea0, 0x12cf6e027ce4260332146ebb751b49c697b4d421c05e824c0c2e81156ec5dbdd) +mstore(0xa1ec0, mload(0x73380)) +success := and(eq(staticcall(gas(), 0x7, 0xa1e80, 0x60, 0xa1e80, 0x40), 1), success) +mstore(0xa1ee0, mload(0xa1e00)) + mstore(0xa1f00, mload(0xa1e20)) +mstore(0xa1f20, mload(0xa1e80)) + mstore(0xa1f40, mload(0xa1ea0)) +success := and(eq(staticcall(gas(), 0x6, 0xa1ee0, 0x80, 0xa1ee0, 0x40), 1), success) +mstore(0xa1f60, 0x19ed8dc5922b1ecaa5af6c4f3fde147d3db8ff3303cd7df7a2fb26443076b63a) + mstore(0xa1f80, 0x09910d653fd847f123bc516a39e81e32230b3d813c7a52602b0f7032a2109198) +mstore(0xa1fa0, mload(0x733a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa1f60, 0x60, 0xa1f60, 0x40), 1), success) +mstore(0xa1fc0, mload(0xa1ee0)) + mstore(0xa1fe0, mload(0xa1f00)) +mstore(0xa2000, mload(0xa1f60)) + mstore(0xa2020, mload(0xa1f80)) +success := and(eq(staticcall(gas(), 0x6, 0xa1fc0, 0x80, 0xa1fc0, 0x40), 1), success) +mstore(0xa2040, 0x0a66d39952e4cf5a31e5523291aa0247d282c23ef0972cd7604fcb371c8377c8) + mstore(0xa2060, 0x011f44b30a382ff725834ba1d25e750f37b7f2ab5caf9b723c1c2494a058cc1f) +mstore(0xa2080, mload(0x733c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2040, 0x60, 0xa2040, 0x40), 1), success) +mstore(0xa20a0, mload(0xa1fc0)) + mstore(0xa20c0, mload(0xa1fe0)) +mstore(0xa20e0, mload(0xa2040)) + mstore(0xa2100, mload(0xa2060)) +success := and(eq(staticcall(gas(), 0x6, 0xa20a0, 0x80, 0xa20a0, 0x40), 1), success) +mstore(0xa2120, 0x21189875f53db46aec40e2c929797b76bd5d3415e54541b6dd1dd6f5928c1776) + mstore(0xa2140, 0x2de8e0c3c6f452c85e0b445841891802daf28b0b511741d524c1da7d4fcac6f6) +mstore(0xa2160, mload(0x733e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2120, 0x60, 0xa2120, 0x40), 1), success) +mstore(0xa2180, mload(0xa20a0)) + mstore(0xa21a0, mload(0xa20c0)) +mstore(0xa21c0, mload(0xa2120)) + mstore(0xa21e0, mload(0xa2140)) +success := and(eq(staticcall(gas(), 0x6, 0xa2180, 0x80, 0xa2180, 0x40), 1), success) +mstore(0xa2200, 0x07f690d4df3afd32b1ef2770cbfaab96c209a8f73dcfdfbbd1f0a82a639493b5) + mstore(0xa2220, 0x2e50c5dbd72c9d50b4f20fa64c9ccfc3210bf2fb540994b9e7213da25c1b33dc) +mstore(0xa2240, mload(0x73400)) +success := and(eq(staticcall(gas(), 0x7, 0xa2200, 0x60, 0xa2200, 0x40), 1), success) +mstore(0xa2260, mload(0xa2180)) + mstore(0xa2280, mload(0xa21a0)) +mstore(0xa22a0, mload(0xa2200)) + mstore(0xa22c0, mload(0xa2220)) +success := and(eq(staticcall(gas(), 0x6, 0xa2260, 0x80, 0xa2260, 0x40), 1), success) +mstore(0xa22e0, 0x137226ef7f28a1e8879fe58285643841816f554cb54d7bb9ff439f7f91fdfe4d) + mstore(0xa2300, 0x28862a168a468e88c1af19d733c366f1525c09efccea46034e07dd2d1ce0709e) +mstore(0xa2320, mload(0x73420)) +success := and(eq(staticcall(gas(), 0x7, 0xa22e0, 0x60, 0xa22e0, 0x40), 1), success) +mstore(0xa2340, mload(0xa2260)) + mstore(0xa2360, mload(0xa2280)) +mstore(0xa2380, mload(0xa22e0)) + mstore(0xa23a0, mload(0xa2300)) +success := and(eq(staticcall(gas(), 0x6, 0xa2340, 0x80, 0xa2340, 0x40), 1), success) +mstore(0xa23c0, 0x2868da34f2d1eff117eace6adc8b020f4beb8ba7a57529593773a6ca37182d75) + mstore(0xa23e0, 0x1c70addb7707add13c492833a40df198faf42e8b7a03e23f7ab43d68fee99e62) +mstore(0xa2400, mload(0x73440)) +success := and(eq(staticcall(gas(), 0x7, 0xa23c0, 0x60, 0xa23c0, 0x40), 1), success) +mstore(0xa2420, mload(0xa2340)) + mstore(0xa2440, mload(0xa2360)) +mstore(0xa2460, mload(0xa23c0)) + mstore(0xa2480, mload(0xa23e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa2420, 0x80, 0xa2420, 0x40), 1), success) +mstore(0xa24a0, 0x169aa7b9739e7521f887a4715a83ae76d9f4d6d172c36344dad3dcbfb554464c) + mstore(0xa24c0, 0x02397ac04d8007a84a57e8a8e12054718c8237fd883fdccd8b33c8569401012f) +mstore(0xa24e0, mload(0x73460)) +success := and(eq(staticcall(gas(), 0x7, 0xa24a0, 0x60, 0xa24a0, 0x40), 1), success) +mstore(0xa2500, mload(0xa2420)) + mstore(0xa2520, mload(0xa2440)) +mstore(0xa2540, mload(0xa24a0)) + mstore(0xa2560, mload(0xa24c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa2500, 0x80, 0xa2500, 0x40), 1), success) +mstore(0xa2580, 0x1fdad11c2f46a3202f0a59a3fd650405f3f66a84155622da44030515c5d6c741) + mstore(0xa25a0, 0x021eb2d14f6f9a91caaeb819042c8663c128acc8196b716c6bb06e1c70de883b) +mstore(0xa25c0, mload(0x73480)) +success := and(eq(staticcall(gas(), 0x7, 0xa2580, 0x60, 0xa2580, 0x40), 1), success) +mstore(0xa25e0, mload(0xa2500)) + mstore(0xa2600, mload(0xa2520)) +mstore(0xa2620, mload(0xa2580)) + mstore(0xa2640, mload(0xa25a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa25e0, 0x80, 0xa25e0, 0x40), 1), success) +mstore(0xa2660, 0x066e71524ad874f055451591bfe87798a219eb187bd8f8eaf9316b84415472eb) + mstore(0xa2680, 0x0fa387a94ce5ac9b7d6525a970bec45088b4c2bad329421b44aa5548aca8b751) +mstore(0xa26a0, mload(0x734a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2660, 0x60, 0xa2660, 0x40), 1), success) +mstore(0xa26c0, mload(0xa25e0)) + mstore(0xa26e0, mload(0xa2600)) +mstore(0xa2700, mload(0xa2660)) + mstore(0xa2720, mload(0xa2680)) +success := and(eq(staticcall(gas(), 0x6, 0xa26c0, 0x80, 0xa26c0, 0x40), 1), success) +mstore(0xa2740, 0x0fa0086298e51669b6e23b3acb581443df8cd401d286ec9c9a8d26d222f9756c) + mstore(0xa2760, 0x2757bae4bf16b65594c36df1369633a2053a96eccbeb880b45357c30c9c98f1f) +mstore(0xa2780, mload(0x734c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2740, 0x60, 0xa2740, 0x40), 1), success) +mstore(0xa27a0, mload(0xa26c0)) + mstore(0xa27c0, mload(0xa26e0)) +mstore(0xa27e0, mload(0xa2740)) + mstore(0xa2800, mload(0xa2760)) +success := and(eq(staticcall(gas(), 0x6, 0xa27a0, 0x80, 0xa27a0, 0x40), 1), success) +mstore(0xa2820, 0x03cc07e0b6a227a698f0904d5e83511ee179c21dc03e67d2f79bda3d390956b1) + mstore(0xa2840, 0x17c9aa000cc19f7f77a10b8d7725b2e84c4acdd27912269abf65558048ef3858) +mstore(0xa2860, mload(0x734e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2820, 0x60, 0xa2820, 0x40), 1), success) +mstore(0xa2880, mload(0xa27a0)) + mstore(0xa28a0, mload(0xa27c0)) +mstore(0xa28c0, mload(0xa2820)) + mstore(0xa28e0, mload(0xa2840)) +success := and(eq(staticcall(gas(), 0x6, 0xa2880, 0x80, 0xa2880, 0x40), 1), success) +mstore(0xa2900, 0x195dff0194200955bc9df52156859ae94e0989b6d8b319bde09c20edde411b54) + mstore(0xa2920, 0x154ad4694df889a5db89bf474bd677dddb5bc539c5b0f0a30a787cfffe14be1c) +mstore(0xa2940, mload(0x73500)) +success := and(eq(staticcall(gas(), 0x7, 0xa2900, 0x60, 0xa2900, 0x40), 1), success) +mstore(0xa2960, mload(0xa2880)) + mstore(0xa2980, mload(0xa28a0)) +mstore(0xa29a0, mload(0xa2900)) + mstore(0xa29c0, mload(0xa2920)) +success := and(eq(staticcall(gas(), 0x6, 0xa2960, 0x80, 0xa2960, 0x40), 1), success) +mstore(0xa29e0, 0x00422ce096e63919bd49fc8ccd293a6217276ab87838aff244bd89779c70bca5) + mstore(0xa2a00, 0x0f9b872ecf8c8bb165e1c2671b96153d97aa5d9136dfea9553cf5847081704a3) +mstore(0xa2a20, mload(0x73520)) +success := and(eq(staticcall(gas(), 0x7, 0xa29e0, 0x60, 0xa29e0, 0x40), 1), success) +mstore(0xa2a40, mload(0xa2960)) + mstore(0xa2a60, mload(0xa2980)) +mstore(0xa2a80, mload(0xa29e0)) + mstore(0xa2aa0, mload(0xa2a00)) +success := and(eq(staticcall(gas(), 0x6, 0xa2a40, 0x80, 0xa2a40, 0x40), 1), success) +mstore(0xa2ac0, 0x066b5440da1a9204cbd0832d4ef33ce8562968e13135428a27df9acab832b1a2) + mstore(0xa2ae0, 0x21c5a25614e3dfe788defc2eaf4876524856a4386ae16efb492ad3c65b4239f9) +mstore(0xa2b00, mload(0x73540)) +success := and(eq(staticcall(gas(), 0x7, 0xa2ac0, 0x60, 0xa2ac0, 0x40), 1), success) +mstore(0xa2b20, mload(0xa2a40)) + mstore(0xa2b40, mload(0xa2a60)) +mstore(0xa2b60, mload(0xa2ac0)) + mstore(0xa2b80, mload(0xa2ae0)) +success := and(eq(staticcall(gas(), 0x6, 0xa2b20, 0x80, 0xa2b20, 0x40), 1), success) +mstore(0xa2ba0, 0x2cb701fc0cbde360cd2c0dc4ea216deb9ba31292cf34a7fe6b4eb3e900953939) + mstore(0xa2bc0, 0x11a7500a38625aa2befef9076a1cfd38c71c7c62c12331133f2593c5bb502898) +mstore(0xa2be0, mload(0x73560)) +success := and(eq(staticcall(gas(), 0x7, 0xa2ba0, 0x60, 0xa2ba0, 0x40), 1), success) +mstore(0xa2c00, mload(0xa2b20)) + mstore(0xa2c20, mload(0xa2b40)) +mstore(0xa2c40, mload(0xa2ba0)) + mstore(0xa2c60, mload(0xa2bc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa2c00, 0x80, 0xa2c00, 0x40), 1), success) +mstore(0xa2c80, 0x0709d9c8f332aef8c264f9f9b0d2a2905e70afada5505de85edc0cb456296f0f) + mstore(0xa2ca0, 0x0457f3adf88e67db3d73a3700580d526f1df771446f03e1e9729dadbfafa0a31) +mstore(0xa2cc0, mload(0x73580)) +success := and(eq(staticcall(gas(), 0x7, 0xa2c80, 0x60, 0xa2c80, 0x40), 1), success) +mstore(0xa2ce0, mload(0xa2c00)) + mstore(0xa2d00, mload(0xa2c20)) +mstore(0xa2d20, mload(0xa2c80)) + mstore(0xa2d40, mload(0xa2ca0)) +success := and(eq(staticcall(gas(), 0x6, 0xa2ce0, 0x80, 0xa2ce0, 0x40), 1), success) +mstore(0xa2d60, 0x04be3eba85556dcca51d720998d0cec1e26a5f8b34815c85c30aadc2ef54a2aa) + mstore(0xa2d80, 0x1267fefead7d2fcd8c4f23a114b8fe905ddd83f965d2b6a0c17e92936edf0771) +mstore(0xa2da0, mload(0x735a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2d60, 0x60, 0xa2d60, 0x40), 1), success) +mstore(0xa2dc0, mload(0xa2ce0)) + mstore(0xa2de0, mload(0xa2d00)) +mstore(0xa2e00, mload(0xa2d60)) + mstore(0xa2e20, mload(0xa2d80)) +success := and(eq(staticcall(gas(), 0x6, 0xa2dc0, 0x80, 0xa2dc0, 0x40), 1), success) +mstore(0xa2e40, 0x06d8ae0a913b08bb0c529d4d33c5b0c007f20d4e02c0fd94557f2fbb8b53dd26) + mstore(0xa2e60, 0x304ce51761c502ba1d01da7067b65f60f12baf1143128da91351312aa017e3ab) +mstore(0xa2e80, mload(0x735c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2e40, 0x60, 0xa2e40, 0x40), 1), success) +mstore(0xa2ea0, mload(0xa2dc0)) + mstore(0xa2ec0, mload(0xa2de0)) +mstore(0xa2ee0, mload(0xa2e40)) + mstore(0xa2f00, mload(0xa2e60)) +success := and(eq(staticcall(gas(), 0x6, 0xa2ea0, 0x80, 0xa2ea0, 0x40), 1), success) +mstore(0xa2f20, 0x0a0fda30479818d368ff5c26521fab03e06ccf9644b8b9e060e29e451fc709b2) + mstore(0xa2f40, 0x14a14196bfab83fd832f4d1988ac2a2f21cdb90d39b8f4f39fb860d2e7de66ae) +mstore(0xa2f60, mload(0x735e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa2f20, 0x60, 0xa2f20, 0x40), 1), success) +mstore(0xa2f80, mload(0xa2ea0)) + mstore(0xa2fa0, mload(0xa2ec0)) +mstore(0xa2fc0, mload(0xa2f20)) + mstore(0xa2fe0, mload(0xa2f40)) +success := and(eq(staticcall(gas(), 0x6, 0xa2f80, 0x80, 0xa2f80, 0x40), 1), success) +mstore(0xa3000, 0x1631b4244bd6920aad87423f09f1592283f78b507fafe05495146fe0d98cca5f) + mstore(0xa3020, 0x1c29ff49b4eb3e4b2cbbe959382c254dbf7c872d660d238bdb62d8c83259fdac) +mstore(0xa3040, mload(0x73600)) +success := and(eq(staticcall(gas(), 0x7, 0xa3000, 0x60, 0xa3000, 0x40), 1), success) +mstore(0xa3060, mload(0xa2f80)) + mstore(0xa3080, mload(0xa2fa0)) +mstore(0xa30a0, mload(0xa3000)) + mstore(0xa30c0, mload(0xa3020)) +success := and(eq(staticcall(gas(), 0x6, 0xa3060, 0x80, 0xa3060, 0x40), 1), success) +mstore(0xa30e0, 0x1fb4b925620c2e85133d6479a7813e322d49e7f8a9d5feac7da703abad436cb2) + mstore(0xa3100, 0x28a140df4766a5c46345dfbd4367df526a46d8fcda7f25d75cf91348f5252a08) +mstore(0xa3120, mload(0x73620)) +success := and(eq(staticcall(gas(), 0x7, 0xa30e0, 0x60, 0xa30e0, 0x40), 1), success) +mstore(0xa3140, mload(0xa3060)) + mstore(0xa3160, mload(0xa3080)) +mstore(0xa3180, mload(0xa30e0)) + mstore(0xa31a0, mload(0xa3100)) +success := and(eq(staticcall(gas(), 0x6, 0xa3140, 0x80, 0xa3140, 0x40), 1), success) +mstore(0xa31c0, 0x2959d6198465218715148350ec5f99f41f5c74a1b5ed7208207260856574357e) + mstore(0xa31e0, 0x13cb242a8d7f4d8fd07cb184da642761dfe29663a26a5784cb0a1c8f630b39ab) +mstore(0xa3200, mload(0x73640)) +success := and(eq(staticcall(gas(), 0x7, 0xa31c0, 0x60, 0xa31c0, 0x40), 1), success) +mstore(0xa3220, mload(0xa3140)) + mstore(0xa3240, mload(0xa3160)) +mstore(0xa3260, mload(0xa31c0)) + mstore(0xa3280, mload(0xa31e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa3220, 0x80, 0xa3220, 0x40), 1), success) +mstore(0xa32a0, 0x28e818125f050c7ef0bec0be192c23a1b1b64c51ae3b5a839f7747a64b8bde54) + mstore(0xa32c0, 0x24fa6ba129ae85795d9cf3dc3004739230a195727f12edf1f0ba98cd72333591) +mstore(0xa32e0, mload(0x73660)) +success := and(eq(staticcall(gas(), 0x7, 0xa32a0, 0x60, 0xa32a0, 0x40), 1), success) +mstore(0xa3300, mload(0xa3220)) + mstore(0xa3320, mload(0xa3240)) +mstore(0xa3340, mload(0xa32a0)) + mstore(0xa3360, mload(0xa32c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa3300, 0x80, 0xa3300, 0x40), 1), success) +mstore(0xa3380, 0x1b0c3303c67ac17c346d5d865d2ac59fd71087b16fc3bbdb789637f9ee0de938) + mstore(0xa33a0, 0x189a0cbdbed0dc4fb53501502b8db41760e171ca1ec4fead20e5359b8a01b71b) +mstore(0xa33c0, mload(0x73680)) +success := and(eq(staticcall(gas(), 0x7, 0xa3380, 0x60, 0xa3380, 0x40), 1), success) +mstore(0xa33e0, mload(0xa3300)) + mstore(0xa3400, mload(0xa3320)) +mstore(0xa3420, mload(0xa3380)) + mstore(0xa3440, mload(0xa33a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa33e0, 0x80, 0xa33e0, 0x40), 1), success) +mstore(0xa3460, 0x1eb0d3a2f06841e52ca30d776812100eb13fa24f2e2f71831acf65fed7ca6075) + mstore(0xa3480, 0x1c18b5896217de3781c2ab75ce0c0a4fb299398f434129eb81067627aae74755) +mstore(0xa34a0, mload(0x736a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3460, 0x60, 0xa3460, 0x40), 1), success) +mstore(0xa34c0, mload(0xa33e0)) + mstore(0xa34e0, mload(0xa3400)) +mstore(0xa3500, mload(0xa3460)) + mstore(0xa3520, mload(0xa3480)) +success := and(eq(staticcall(gas(), 0x6, 0xa34c0, 0x80, 0xa34c0, 0x40), 1), success) +mstore(0xa3540, 0x0f8709e1402852e3144d502bf0514d76c09c549112669f670aa6b3b8e06ba7ca) + mstore(0xa3560, 0x2f0d75b7e9fb751fc7641357375b448bfe46da9a0f84a6ea1f143b1238c37486) +mstore(0xa3580, mload(0x736c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3540, 0x60, 0xa3540, 0x40), 1), success) +mstore(0xa35a0, mload(0xa34c0)) + mstore(0xa35c0, mload(0xa34e0)) +mstore(0xa35e0, mload(0xa3540)) + mstore(0xa3600, mload(0xa3560)) +success := and(eq(staticcall(gas(), 0x6, 0xa35a0, 0x80, 0xa35a0, 0x40), 1), success) +mstore(0xa3620, 0x2d3d940bc01614996912ee37bbdf2f629c476b2f8e26fcff70ce34bdac858ca2) + mstore(0xa3640, 0x193f164f57a83900610fbfcc5ba33f97f26c71b565be07956ad0b8d234659858) +mstore(0xa3660, mload(0x736e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3620, 0x60, 0xa3620, 0x40), 1), success) +mstore(0xa3680, mload(0xa35a0)) + mstore(0xa36a0, mload(0xa35c0)) +mstore(0xa36c0, mload(0xa3620)) + mstore(0xa36e0, mload(0xa3640)) +success := and(eq(staticcall(gas(), 0x6, 0xa3680, 0x80, 0xa3680, 0x40), 1), success) +mstore(0xa3700, 0x094bcaaff97fe5b3376ff8aa7fd4f218088c6976ae5d3c51ed29f1cb3117b2a1) + mstore(0xa3720, 0x2f1cba63ce7c66ab412fc3081b6f2768fad4da98fd7147f42684aa174d598c4c) +mstore(0xa3740, mload(0x73700)) +success := and(eq(staticcall(gas(), 0x7, 0xa3700, 0x60, 0xa3700, 0x40), 1), success) +mstore(0xa3760, mload(0xa3680)) + mstore(0xa3780, mload(0xa36a0)) +mstore(0xa37a0, mload(0xa3700)) + mstore(0xa37c0, mload(0xa3720)) +success := and(eq(staticcall(gas(), 0x6, 0xa3760, 0x80, 0xa3760, 0x40), 1), success) +mstore(0xa37e0, 0x301de66e7943748448063c4ed473acad1e25bba53a751bc65ba05c10c9b9e40b) + mstore(0xa3800, 0x0d2518cbb9e46c3c3e458ea61aa9b91bfda1063f352ee77d7c3b1c3acd49592f) +mstore(0xa3820, mload(0x73720)) +success := and(eq(staticcall(gas(), 0x7, 0xa37e0, 0x60, 0xa37e0, 0x40), 1), success) +mstore(0xa3840, mload(0xa3760)) + mstore(0xa3860, mload(0xa3780)) +mstore(0xa3880, mload(0xa37e0)) + mstore(0xa38a0, mload(0xa3800)) +success := and(eq(staticcall(gas(), 0x6, 0xa3840, 0x80, 0xa3840, 0x40), 1), success) +mstore(0xa38c0, 0x057d6814c7a7f0da874957f7b7f2f8b32ef9a1b89d94bb9cf17831001d3f2720) + mstore(0xa38e0, 0x19b47d7c7def4178e228a0a996cf1470521dc3d980ba85de91230a8341915976) +mstore(0xa3900, mload(0x73740)) +success := and(eq(staticcall(gas(), 0x7, 0xa38c0, 0x60, 0xa38c0, 0x40), 1), success) +mstore(0xa3920, mload(0xa3840)) + mstore(0xa3940, mload(0xa3860)) +mstore(0xa3960, mload(0xa38c0)) + mstore(0xa3980, mload(0xa38e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa3920, 0x80, 0xa3920, 0x40), 1), success) +mstore(0xa39a0, 0x122f8ce9d06e50b3a8a6123c381688809a1e83f725b5094eb3f7605f082dc32d) + mstore(0xa39c0, 0x0de9e2c04e98d96c3c0320e8b4093748b44d0d098966cc9ffc95fc8c592ff26f) +mstore(0xa39e0, mload(0x73760)) +success := and(eq(staticcall(gas(), 0x7, 0xa39a0, 0x60, 0xa39a0, 0x40), 1), success) +mstore(0xa3a00, mload(0xa3920)) + mstore(0xa3a20, mload(0xa3940)) +mstore(0xa3a40, mload(0xa39a0)) + mstore(0xa3a60, mload(0xa39c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa3a00, 0x80, 0xa3a00, 0x40), 1), success) +mstore(0xa3a80, 0x093f09823d1bc802dfa92df11f64f82550de7da83c33a6b52b1082fb95633ba2) + mstore(0xa3aa0, 0x0165e4eb80d2549a3108ec745464a9960d35c6af439f6f9bf00f3a1e642c4743) +mstore(0xa3ac0, mload(0x73780)) +success := and(eq(staticcall(gas(), 0x7, 0xa3a80, 0x60, 0xa3a80, 0x40), 1), success) +mstore(0xa3ae0, mload(0xa3a00)) + mstore(0xa3b00, mload(0xa3a20)) +mstore(0xa3b20, mload(0xa3a80)) + mstore(0xa3b40, mload(0xa3aa0)) +success := and(eq(staticcall(gas(), 0x6, 0xa3ae0, 0x80, 0xa3ae0, 0x40), 1), success) +mstore(0xa3b60, 0x098d1c0908538f66b424aa9b446fcf4a6c9f1ff7192cb66de7ef03254b8e6666) + mstore(0xa3b80, 0x2af6405f2d5c0e6a08b9f979894cbcd73fc2f0b4fdb1bc029b88b4d1d9753c31) +mstore(0xa3ba0, mload(0x737a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3b60, 0x60, 0xa3b60, 0x40), 1), success) +mstore(0xa3bc0, mload(0xa3ae0)) + mstore(0xa3be0, mload(0xa3b00)) +mstore(0xa3c00, mload(0xa3b60)) + mstore(0xa3c20, mload(0xa3b80)) +success := and(eq(staticcall(gas(), 0x6, 0xa3bc0, 0x80, 0xa3bc0, 0x40), 1), success) +mstore(0xa3c40, 0x06c64aae046306da5efaedfce7a7f1a4d977a73caf426f3ccebbeafaec5b8943) + mstore(0xa3c60, 0x18f05a277f932749fdb848cdab0990eeb4d2aa7018715cf7dd225ce1e9bd0e51) +mstore(0xa3c80, mload(0x737c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3c40, 0x60, 0xa3c40, 0x40), 1), success) +mstore(0xa3ca0, mload(0xa3bc0)) + mstore(0xa3cc0, mload(0xa3be0)) +mstore(0xa3ce0, mload(0xa3c40)) + mstore(0xa3d00, mload(0xa3c60)) +success := and(eq(staticcall(gas(), 0x6, 0xa3ca0, 0x80, 0xa3ca0, 0x40), 1), success) +mstore(0xa3d20, 0x19f3843340056d65b4a61b8effee9204414a91c4ec12b69e5bfdb2347ca8f33a) + mstore(0xa3d40, 0x02d9b317527179fad693540cf08b5a2bcada1a9b5a7e06a32ee554cb09ed84d1) +mstore(0xa3d60, mload(0x737e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa3d20, 0x60, 0xa3d20, 0x40), 1), success) +mstore(0xa3d80, mload(0xa3ca0)) + mstore(0xa3da0, mload(0xa3cc0)) +mstore(0xa3dc0, mload(0xa3d20)) + mstore(0xa3de0, mload(0xa3d40)) +success := and(eq(staticcall(gas(), 0x6, 0xa3d80, 0x80, 0xa3d80, 0x40), 1), success) +mstore(0xa3e00, 0x0afc51d4ae681e7193abbda6bf06fd92e9b7698a9310568f5821d6dc7ffb08ea) + mstore(0xa3e20, 0x2e36ea3183007ac06962bc35a0659f279d52bcd8dbe62942d17808a2e912652f) +mstore(0xa3e40, mload(0x73800)) +success := and(eq(staticcall(gas(), 0x7, 0xa3e00, 0x60, 0xa3e00, 0x40), 1), success) +mstore(0xa3e60, mload(0xa3d80)) + mstore(0xa3e80, mload(0xa3da0)) +mstore(0xa3ea0, mload(0xa3e00)) + mstore(0xa3ec0, mload(0xa3e20)) +success := and(eq(staticcall(gas(), 0x6, 0xa3e60, 0x80, 0xa3e60, 0x40), 1), success) +mstore(0xa3ee0, 0x11f154b71ccaf90e0cadb4a46407724c60a4130a63666e449f972c0e4280772b) + mstore(0xa3f00, 0x1293b16db2fbd0424c37c01eec7e9b84e1c1e75fbbebc2044616b5e7be52db13) +mstore(0xa3f20, mload(0x73820)) +success := and(eq(staticcall(gas(), 0x7, 0xa3ee0, 0x60, 0xa3ee0, 0x40), 1), success) +mstore(0xa3f40, mload(0xa3e60)) + mstore(0xa3f60, mload(0xa3e80)) +mstore(0xa3f80, mload(0xa3ee0)) + mstore(0xa3fa0, mload(0xa3f00)) +success := and(eq(staticcall(gas(), 0x6, 0xa3f40, 0x80, 0xa3f40, 0x40), 1), success) +mstore(0xa3fc0, 0x1d2d5ec4183c6f468569839b8c6ef506b99cc3dda31e22b3b536f2c1ecfa9c8f) + mstore(0xa3fe0, 0x152520cef28e8d3cc5bf03256eb7f251cd50bafa7c02e584f3c898062e049d96) +mstore(0xa4000, mload(0x73840)) +success := and(eq(staticcall(gas(), 0x7, 0xa3fc0, 0x60, 0xa3fc0, 0x40), 1), success) +mstore(0xa4020, mload(0xa3f40)) + mstore(0xa4040, mload(0xa3f60)) +mstore(0xa4060, mload(0xa3fc0)) + mstore(0xa4080, mload(0xa3fe0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4020, 0x80, 0xa4020, 0x40), 1), success) +mstore(0xa40a0, 0x03e3b614df857bcf9eaf88f5cebc2c651bf0f3a4e8c90fcbe38d4a0e4f89871e) + mstore(0xa40c0, 0x1cfbc5efd708e6b6db1bc70be7fb7b7c09d4eaee44cc60ce5f4c2def9c787e56) +mstore(0xa40e0, mload(0x73860)) +success := and(eq(staticcall(gas(), 0x7, 0xa40a0, 0x60, 0xa40a0, 0x40), 1), success) +mstore(0xa4100, mload(0xa4020)) + mstore(0xa4120, mload(0xa4040)) +mstore(0xa4140, mload(0xa40a0)) + mstore(0xa4160, mload(0xa40c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4100, 0x80, 0xa4100, 0x40), 1), success) +mstore(0xa4180, 0x26be494358a707991e5aedcf9dc6d3a528c88583849e7486364a1908b571f4d1) + mstore(0xa41a0, 0x13cff4648311b157d7f19224078c25b78e0f4f18a9c33ee540acbdbac96bd285) +mstore(0xa41c0, mload(0x73880)) +success := and(eq(staticcall(gas(), 0x7, 0xa4180, 0x60, 0xa4180, 0x40), 1), success) +mstore(0xa41e0, mload(0xa4100)) + mstore(0xa4200, mload(0xa4120)) +mstore(0xa4220, mload(0xa4180)) + mstore(0xa4240, mload(0xa41a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa41e0, 0x80, 0xa41e0, 0x40), 1), success) +mstore(0xa4260, 0x2817974b008837a5786954651327479086a60eca05295132d9f11564184f221a) + mstore(0xa4280, 0x27d788c2179de7a4fa5d9bdcf6ad235ddaba1300007ffa7aaa698b51b4c19f8f) +mstore(0xa42a0, mload(0x738a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4260, 0x60, 0xa4260, 0x40), 1), success) +mstore(0xa42c0, mload(0xa41e0)) + mstore(0xa42e0, mload(0xa4200)) +mstore(0xa4300, mload(0xa4260)) + mstore(0xa4320, mload(0xa4280)) +success := and(eq(staticcall(gas(), 0x6, 0xa42c0, 0x80, 0xa42c0, 0x40), 1), success) +mstore(0xa4340, 0x0fa29e28451b2748ea73f3e132a9cae22e4634e2a17afc107e75dd1693501afa) + mstore(0xa4360, 0x2d723cd3cda1d557941c6103f7c852981580a91a1f47222583dcaa541e6f197c) +mstore(0xa4380, mload(0x738c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4340, 0x60, 0xa4340, 0x40), 1), success) +mstore(0xa43a0, mload(0xa42c0)) + mstore(0xa43c0, mload(0xa42e0)) +mstore(0xa43e0, mload(0xa4340)) + mstore(0xa4400, mload(0xa4360)) +success := and(eq(staticcall(gas(), 0x6, 0xa43a0, 0x80, 0xa43a0, 0x40), 1), success) +mstore(0xa4420, 0x0df9ca417744530129cac841c2a5b835b56eee19a152361bd16d6a39aa0c5f00) + mstore(0xa4440, 0x1813bb5c296f4d2d312a64cc827ddfa851da866f9dacb22485260b8a814dadaf) +mstore(0xa4460, mload(0x738e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4420, 0x60, 0xa4420, 0x40), 1), success) +mstore(0xa4480, mload(0xa43a0)) + mstore(0xa44a0, mload(0xa43c0)) +mstore(0xa44c0, mload(0xa4420)) + mstore(0xa44e0, mload(0xa4440)) +success := and(eq(staticcall(gas(), 0x6, 0xa4480, 0x80, 0xa4480, 0x40), 1), success) +mstore(0xa4500, 0x10d878e4c454d43ae38ff1fcfb59326df69a69377c097e8726e237312cb135f0) + mstore(0xa4520, 0x2b155acbc7d77891e39da288ab158a09a13cc2442bf62c174edacab54b181d77) +mstore(0xa4540, mload(0x73900)) +success := and(eq(staticcall(gas(), 0x7, 0xa4500, 0x60, 0xa4500, 0x40), 1), success) +mstore(0xa4560, mload(0xa4480)) + mstore(0xa4580, mload(0xa44a0)) +mstore(0xa45a0, mload(0xa4500)) + mstore(0xa45c0, mload(0xa4520)) +success := and(eq(staticcall(gas(), 0x6, 0xa4560, 0x80, 0xa4560, 0x40), 1), success) +mstore(0xa45e0, 0x062fa5d6fda8820dd9882823c4a9ea97b4e207131ab29f5743bd972e24fe6c6e) + mstore(0xa4600, 0x18aa843b365d522de84036cf2157759fe4d4d0071a9ce1cecb37185c738115fd) +mstore(0xa4620, mload(0x73920)) +success := and(eq(staticcall(gas(), 0x7, 0xa45e0, 0x60, 0xa45e0, 0x40), 1), success) +mstore(0xa4640, mload(0xa4560)) + mstore(0xa4660, mload(0xa4580)) +mstore(0xa4680, mload(0xa45e0)) + mstore(0xa46a0, mload(0xa4600)) +success := and(eq(staticcall(gas(), 0x6, 0xa4640, 0x80, 0xa4640, 0x40), 1), success) +mstore(0xa46c0, 0x07f48c6d657b8ff51029420a17b09ddb2b83e7642bac3b5e340efd9596643c71) + mstore(0xa46e0, 0x300bb19e2e704c8a1d5983e439fe811724cff9c22e905dfec4bb04aec5e4831f) +mstore(0xa4700, mload(0x73940)) +success := and(eq(staticcall(gas(), 0x7, 0xa46c0, 0x60, 0xa46c0, 0x40), 1), success) +mstore(0xa4720, mload(0xa4640)) + mstore(0xa4740, mload(0xa4660)) +mstore(0xa4760, mload(0xa46c0)) + mstore(0xa4780, mload(0xa46e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4720, 0x80, 0xa4720, 0x40), 1), success) +mstore(0xa47a0, 0x2ef8b380aa774f4523760f8a527d438d9ce158b211694f289541a76c4823a116) + mstore(0xa47c0, 0x2f1e6d9270fde668cff94b6afa6768cc11384e0d167bb17f046186def4977092) +mstore(0xa47e0, mload(0x73960)) +success := and(eq(staticcall(gas(), 0x7, 0xa47a0, 0x60, 0xa47a0, 0x40), 1), success) +mstore(0xa4800, mload(0xa4720)) + mstore(0xa4820, mload(0xa4740)) +mstore(0xa4840, mload(0xa47a0)) + mstore(0xa4860, mload(0xa47c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4800, 0x80, 0xa4800, 0x40), 1), success) +mstore(0xa4880, 0x0c54b45ba6d4073c2382bf9c83f98744909e41dd1ad597773504ae239bbfc346) + mstore(0xa48a0, 0x2c3bec235299a51f26f87c09b0bc04048209fd4ccac6f73fdc7a7b4b78ec1859) +mstore(0xa48c0, mload(0x73980)) +success := and(eq(staticcall(gas(), 0x7, 0xa4880, 0x60, 0xa4880, 0x40), 1), success) +mstore(0xa48e0, mload(0xa4800)) + mstore(0xa4900, mload(0xa4820)) +mstore(0xa4920, mload(0xa4880)) + mstore(0xa4940, mload(0xa48a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa48e0, 0x80, 0xa48e0, 0x40), 1), success) +mstore(0xa4960, 0x2877e6ee68651c67c4a8b140d5f9b0399df8a2c413d2536b3a71fa7a1fa139ce) + mstore(0xa4980, 0x27fbc63f9e3250a713774c21b2ea7fa7b0834fba08ed700dea54b143fdf7b7d1) +mstore(0xa49a0, mload(0x739a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4960, 0x60, 0xa4960, 0x40), 1), success) +mstore(0xa49c0, mload(0xa48e0)) + mstore(0xa49e0, mload(0xa4900)) +mstore(0xa4a00, mload(0xa4960)) + mstore(0xa4a20, mload(0xa4980)) +success := and(eq(staticcall(gas(), 0x6, 0xa49c0, 0x80, 0xa49c0, 0x40), 1), success) +mstore(0xa4a40, 0x1541c705c1517dfa0f8d800317468778b2e5baea3e1c5d52709e8a43463fdb0f) + mstore(0xa4a60, 0x0c257ab2d4b2c8f7de5cb362fd4ab53b57599a8fee4b73e0011e51d88ff1aba1) +mstore(0xa4a80, mload(0x739c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4a40, 0x60, 0xa4a40, 0x40), 1), success) +mstore(0xa4aa0, mload(0xa49c0)) + mstore(0xa4ac0, mload(0xa49e0)) +mstore(0xa4ae0, mload(0xa4a40)) + mstore(0xa4b00, mload(0xa4a60)) +success := and(eq(staticcall(gas(), 0x6, 0xa4aa0, 0x80, 0xa4aa0, 0x40), 1), success) +mstore(0xa4b20, 0x0eea595163f9ff855f380f622f8555032eaedc9f98d8bbf63e7efb528b3176bd) + mstore(0xa4b40, 0x237316efc4646c5ff1a87b7c4c302220fbd96d157f816db7932cca693ccd827c) +mstore(0xa4b60, mload(0x739e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa4b20, 0x60, 0xa4b20, 0x40), 1), success) +mstore(0xa4b80, mload(0xa4aa0)) + mstore(0xa4ba0, mload(0xa4ac0)) +mstore(0xa4bc0, mload(0xa4b20)) + mstore(0xa4be0, mload(0xa4b40)) +success := and(eq(staticcall(gas(), 0x6, 0xa4b80, 0x80, 0xa4b80, 0x40), 1), success) +mstore(0xa4c00, 0x05279a47dca6c41f9c3290b0f45677f07ae5daaa15c28a4c833cf50063efeed4) + mstore(0xa4c20, 0x2a52a153274b256031a4089ade40f97f6fedcf6b7c69a73e69341f665d4017ea) +mstore(0xa4c40, mload(0x73a00)) +success := and(eq(staticcall(gas(), 0x7, 0xa4c00, 0x60, 0xa4c00, 0x40), 1), success) +mstore(0xa4c60, mload(0xa4b80)) + mstore(0xa4c80, mload(0xa4ba0)) +mstore(0xa4ca0, mload(0xa4c00)) + mstore(0xa4cc0, mload(0xa4c20)) +success := and(eq(staticcall(gas(), 0x6, 0xa4c60, 0x80, 0xa4c60, 0x40), 1), success) +mstore(0xa4ce0, 0x1fa0028ef13d4e92f3aedd0167b27f72e76dba83c927917c87d8682b2d7a4c2b) + mstore(0xa4d00, 0x06328f92048351c381ec492697e9964a8397d218e31f3f079ddc236cc83d30de) +mstore(0xa4d20, mload(0x73a20)) +success := and(eq(staticcall(gas(), 0x7, 0xa4ce0, 0x60, 0xa4ce0, 0x40), 1), success) +mstore(0xa4d40, mload(0xa4c60)) + mstore(0xa4d60, mload(0xa4c80)) +mstore(0xa4d80, mload(0xa4ce0)) + mstore(0xa4da0, mload(0xa4d00)) +success := and(eq(staticcall(gas(), 0x6, 0xa4d40, 0x80, 0xa4d40, 0x40), 1), success) +mstore(0xa4dc0, 0x252ad4d6080d2d2de7b87c61eb97441c6fe349835fc879572d8a9cf728f717af) + mstore(0xa4de0, 0x00544901f110474120d90a5077b9574435dfd32addafd195986bcba8fdeb7b00) +mstore(0xa4e00, mload(0x73a40)) +success := and(eq(staticcall(gas(), 0x7, 0xa4dc0, 0x60, 0xa4dc0, 0x40), 1), success) +mstore(0xa4e20, mload(0xa4d40)) + mstore(0xa4e40, mload(0xa4d60)) +mstore(0xa4e60, mload(0xa4dc0)) + mstore(0xa4e80, mload(0xa4de0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4e20, 0x80, 0xa4e20, 0x40), 1), success) +mstore(0xa4ea0, 0x1ac23296288b8dd990a0ed7a9df0c5c9b1f2526a15ed81d3face62c27617f940) + mstore(0xa4ec0, 0x257ecc7562b8f8480b2647bbb55483b302c6711c9d5963d8857416f67bc67477) +mstore(0xa4ee0, mload(0x73a60)) +success := and(eq(staticcall(gas(), 0x7, 0xa4ea0, 0x60, 0xa4ea0, 0x40), 1), success) +mstore(0xa4f00, mload(0xa4e20)) + mstore(0xa4f20, mload(0xa4e40)) +mstore(0xa4f40, mload(0xa4ea0)) + mstore(0xa4f60, mload(0xa4ec0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4f00, 0x80, 0xa4f00, 0x40), 1), success) +mstore(0xa4f80, 0x234927d940a8bed46f0e2d21b8732501e02e8e4064c22e9899d228764a6b2bb9) + mstore(0xa4fa0, 0x087c29986c53b8d8dd9eebdda45e34369b97283b90e2670c9f970fe636d268a5) +mstore(0xa4fc0, mload(0x73a80)) +success := and(eq(staticcall(gas(), 0x7, 0xa4f80, 0x60, 0xa4f80, 0x40), 1), success) +mstore(0xa4fe0, mload(0xa4f00)) + mstore(0xa5000, mload(0xa4f20)) +mstore(0xa5020, mload(0xa4f80)) + mstore(0xa5040, mload(0xa4fa0)) +success := and(eq(staticcall(gas(), 0x6, 0xa4fe0, 0x80, 0xa4fe0, 0x40), 1), success) +mstore(0xa5060, 0x289e985dedddee3fe3c822ac0d4f91bbed7e3d3ece27e53a70f0651f02fd6109) + mstore(0xa5080, 0x138cf42af93ea6fcbcdbb48a3e910c5df26cd13089245c2fd258ee8644a76b0d) +mstore(0xa50a0, mload(0x73aa0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5060, 0x60, 0xa5060, 0x40), 1), success) +mstore(0xa50c0, mload(0xa4fe0)) + mstore(0xa50e0, mload(0xa5000)) +mstore(0xa5100, mload(0xa5060)) + mstore(0xa5120, mload(0xa5080)) +success := and(eq(staticcall(gas(), 0x6, 0xa50c0, 0x80, 0xa50c0, 0x40), 1), success) +mstore(0xa5140, 0x0508384157d34cd1d0933a1ece14d899b5a0a6b2042860eb7b2c41354780b405) + mstore(0xa5160, 0x218170d264316dd1f874eed3fa407de79e1e4a09a127506cafdd0e8e939dd019) +mstore(0xa5180, mload(0x73ac0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5140, 0x60, 0xa5140, 0x40), 1), success) +mstore(0xa51a0, mload(0xa50c0)) + mstore(0xa51c0, mload(0xa50e0)) +mstore(0xa51e0, mload(0xa5140)) + mstore(0xa5200, mload(0xa5160)) +success := and(eq(staticcall(gas(), 0x6, 0xa51a0, 0x80, 0xa51a0, 0x40), 1), success) +mstore(0xa5220, 0x0651d73209825fd7a8407c3b46f32e863a50acd840ea6fbb81b3897ebf109372) + mstore(0xa5240, 0x0b3e482bc36baebdcbdfa7e644cbe135aa066ff0a9885e754837dfd8ff8f2428) +mstore(0xa5260, mload(0x73ae0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5220, 0x60, 0xa5220, 0x40), 1), success) +mstore(0xa5280, mload(0xa51a0)) + mstore(0xa52a0, mload(0xa51c0)) +mstore(0xa52c0, mload(0xa5220)) + mstore(0xa52e0, mload(0xa5240)) +success := and(eq(staticcall(gas(), 0x6, 0xa5280, 0x80, 0xa5280, 0x40), 1), success) +mstore(0xa5300, 0x14a1727e6c22df53ef6b1de0ad10995ea4bd17edf9bb538ee0a1991a96f56e21) + mstore(0xa5320, 0x134e2e4310082c179c9468bba3f753f522b346de0630b6b97d472d8fd2870ef5) +mstore(0xa5340, mload(0x73b00)) +success := and(eq(staticcall(gas(), 0x7, 0xa5300, 0x60, 0xa5300, 0x40), 1), success) +mstore(0xa5360, mload(0xa5280)) + mstore(0xa5380, mload(0xa52a0)) +mstore(0xa53a0, mload(0xa5300)) + mstore(0xa53c0, mload(0xa5320)) +success := and(eq(staticcall(gas(), 0x6, 0xa5360, 0x80, 0xa5360, 0x40), 1), success) +mstore(0xa53e0, 0x2daa1aa6491310fade72aff965a58a94f6cff00b63179f953de8e74d3d399ade) + mstore(0xa5400, 0x25630c95021d5e9d1400c71f7d29ec213e038e3641477518007b60ee5af2a482) +mstore(0xa5420, mload(0x73b20)) +success := and(eq(staticcall(gas(), 0x7, 0xa53e0, 0x60, 0xa53e0, 0x40), 1), success) +mstore(0xa5440, mload(0xa5360)) + mstore(0xa5460, mload(0xa5380)) +mstore(0xa5480, mload(0xa53e0)) + mstore(0xa54a0, mload(0xa5400)) +success := and(eq(staticcall(gas(), 0x6, 0xa5440, 0x80, 0xa5440, 0x40), 1), success) +mstore(0xa54c0, 0x0497381aff56ba4b4620df3471a81ef397a6b1b54b33c9178e9d6187b24de0bb) + mstore(0xa54e0, 0x0f71b56acb4c6e941b1af3fb332c16a8fd045022a72e51c80234f406afa107a3) +mstore(0xa5500, mload(0x73b40)) +success := and(eq(staticcall(gas(), 0x7, 0xa54c0, 0x60, 0xa54c0, 0x40), 1), success) +mstore(0xa5520, mload(0xa5440)) + mstore(0xa5540, mload(0xa5460)) +mstore(0xa5560, mload(0xa54c0)) + mstore(0xa5580, mload(0xa54e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa5520, 0x80, 0xa5520, 0x40), 1), success) +mstore(0xa55a0, 0x02607cd29ff87490274bde2cd0ba0eb46320e9df9a42cf93cd6c0d0aa860eb4d) + mstore(0xa55c0, 0x16712a32104ab72b5951fa71d11f8810b8f424a0d1df292adf4439d9d7c0ff4e) +mstore(0xa55e0, mload(0x73b60)) +success := and(eq(staticcall(gas(), 0x7, 0xa55a0, 0x60, 0xa55a0, 0x40), 1), success) +mstore(0xa5600, mload(0xa5520)) + mstore(0xa5620, mload(0xa5540)) +mstore(0xa5640, mload(0xa55a0)) + mstore(0xa5660, mload(0xa55c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa5600, 0x80, 0xa5600, 0x40), 1), success) +mstore(0xa5680, 0x0d8bdefc30fc4711b41c589837556e84df84b5219fc925a4d44e9c5b211fffce) + mstore(0xa56a0, 0x2ba29eefe2f1d03390fc17864cc43c0e24eac455977641b2328a8cd576413a4e) +mstore(0xa56c0, mload(0x73b80)) +success := and(eq(staticcall(gas(), 0x7, 0xa5680, 0x60, 0xa5680, 0x40), 1), success) +mstore(0xa56e0, mload(0xa5600)) + mstore(0xa5700, mload(0xa5620)) +mstore(0xa5720, mload(0xa5680)) + mstore(0xa5740, mload(0xa56a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa56e0, 0x80, 0xa56e0, 0x40), 1), success) +mstore(0xa5760, 0x1514c53676b003ce7bed7b1d1430ca79fddaf468d05769f6c004a6ab63fb2b0f) + mstore(0xa5780, 0x0462ab036282e1afe4df585f1524d46e13908f43f5345510c3a4eae675864650) +mstore(0xa57a0, mload(0x73ba0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5760, 0x60, 0xa5760, 0x40), 1), success) +mstore(0xa57c0, mload(0xa56e0)) + mstore(0xa57e0, mload(0xa5700)) +mstore(0xa5800, mload(0xa5760)) + mstore(0xa5820, mload(0xa5780)) +success := and(eq(staticcall(gas(), 0x6, 0xa57c0, 0x80, 0xa57c0, 0x40), 1), success) +mstore(0xa5840, 0x13c82842adcf3d608282b1a0389a49a1251e164fcc6e4ce236d3375603117020) + mstore(0xa5860, 0x07de7b05dc17ca3b0d82eea72b2a675b74b62a9b6cb2b2e60834f3bf7307fac8) +mstore(0xa5880, mload(0x73bc0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5840, 0x60, 0xa5840, 0x40), 1), success) +mstore(0xa58a0, mload(0xa57c0)) + mstore(0xa58c0, mload(0xa57e0)) +mstore(0xa58e0, mload(0xa5840)) + mstore(0xa5900, mload(0xa5860)) +success := and(eq(staticcall(gas(), 0x6, 0xa58a0, 0x80, 0xa58a0, 0x40), 1), success) +mstore(0xa5920, 0x0eedd9074e356d6a5a9a81806346bf3402ff9cc69518a4e37a7049a7d0ec3be2) + mstore(0xa5940, 0x0d231b2e96281a66aec01c0a5c3a67207a4d72661c80823014113ad32d445ad0) +mstore(0xa5960, mload(0x73be0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5920, 0x60, 0xa5920, 0x40), 1), success) +mstore(0xa5980, mload(0xa58a0)) + mstore(0xa59a0, mload(0xa58c0)) +mstore(0xa59c0, mload(0xa5920)) + mstore(0xa59e0, mload(0xa5940)) +success := and(eq(staticcall(gas(), 0x6, 0xa5980, 0x80, 0xa5980, 0x40), 1), success) +mstore(0xa5a00, 0x0d8ccbfb6bc75a2a11c4655fa15da0c30f656ca30e38ef186a714aff351c2bec) + mstore(0xa5a20, 0x078c42f8c85059b138c27d0145ac54dcb7e91f10ce345b0d525447d563598a5e) +mstore(0xa5a40, mload(0x73c00)) +success := and(eq(staticcall(gas(), 0x7, 0xa5a00, 0x60, 0xa5a00, 0x40), 1), success) +mstore(0xa5a60, mload(0xa5980)) + mstore(0xa5a80, mload(0xa59a0)) +mstore(0xa5aa0, mload(0xa5a00)) + mstore(0xa5ac0, mload(0xa5a20)) +success := and(eq(staticcall(gas(), 0x6, 0xa5a60, 0x80, 0xa5a60, 0x40), 1), success) +mstore(0xa5ae0, 0x0fec4976768c036bc5db90ca8f924fdf9b8b177909c84c580625d139d9795bf4) + mstore(0xa5b00, 0x0e157fd539759c64ea852be6324b2a9d2387467ac85419ae491fe57e9363aa30) +mstore(0xa5b20, mload(0x73c20)) +success := and(eq(staticcall(gas(), 0x7, 0xa5ae0, 0x60, 0xa5ae0, 0x40), 1), success) +mstore(0xa5b40, mload(0xa5a60)) + mstore(0xa5b60, mload(0xa5a80)) +mstore(0xa5b80, mload(0xa5ae0)) + mstore(0xa5ba0, mload(0xa5b00)) +success := and(eq(staticcall(gas(), 0x6, 0xa5b40, 0x80, 0xa5b40, 0x40), 1), success) +mstore(0xa5bc0, 0x2948d97e816a4222452dcd1ad1555d38b9f85666be6a3207e001f287a81f9ba6) + mstore(0xa5be0, 0x2bc027702655fbdb6134b2b2b09a2ce9f465eff6de604c46ed58fc3114090c12) +mstore(0xa5c00, mload(0x73c40)) +success := and(eq(staticcall(gas(), 0x7, 0xa5bc0, 0x60, 0xa5bc0, 0x40), 1), success) +mstore(0xa5c20, mload(0xa5b40)) + mstore(0xa5c40, mload(0xa5b60)) +mstore(0xa5c60, mload(0xa5bc0)) + mstore(0xa5c80, mload(0xa5be0)) +success := and(eq(staticcall(gas(), 0x6, 0xa5c20, 0x80, 0xa5c20, 0x40), 1), success) +mstore(0xa5ca0, 0x200ae54aa4e3d26e934f4945b80658220992e8cc1c70c534890b56d277768f2c) + mstore(0xa5cc0, 0x208792cd95884cb175a2b2ef750db0bf42be67d6b80c0cd01ca01c145ea5345c) +mstore(0xa5ce0, mload(0x73c60)) +success := and(eq(staticcall(gas(), 0x7, 0xa5ca0, 0x60, 0xa5ca0, 0x40), 1), success) +mstore(0xa5d00, mload(0xa5c20)) + mstore(0xa5d20, mload(0xa5c40)) +mstore(0xa5d40, mload(0xa5ca0)) + mstore(0xa5d60, mload(0xa5cc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa5d00, 0x80, 0xa5d00, 0x40), 1), success) +mstore(0xa5d80, 0x2656a4f4e7dc8ba6318dfa6ed84c61e40553ce9a35aff48d0ebf826b8f60f489) + mstore(0xa5da0, 0x1a8218325079198294f97b0d0a98937174f3961628a8d5910a98b5bc8a34e8e9) +mstore(0xa5dc0, mload(0x73c80)) +success := and(eq(staticcall(gas(), 0x7, 0xa5d80, 0x60, 0xa5d80, 0x40), 1), success) +mstore(0xa5de0, mload(0xa5d00)) + mstore(0xa5e00, mload(0xa5d20)) +mstore(0xa5e20, mload(0xa5d80)) + mstore(0xa5e40, mload(0xa5da0)) +success := and(eq(staticcall(gas(), 0x6, 0xa5de0, 0x80, 0xa5de0, 0x40), 1), success) +mstore(0xa5e60, 0x13e31eb046795f13bc5bd5cb02dfded504797530ba36bca1d088fe63aa23c50b) + mstore(0xa5e80, 0x1d37bf82630881f5c3c3c1d69e8501d04935d1cec55273181a38f6fd42a1537f) +mstore(0xa5ea0, mload(0x73ca0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5e60, 0x60, 0xa5e60, 0x40), 1), success) +mstore(0xa5ec0, mload(0xa5de0)) + mstore(0xa5ee0, mload(0xa5e00)) +mstore(0xa5f00, mload(0xa5e60)) + mstore(0xa5f20, mload(0xa5e80)) +success := and(eq(staticcall(gas(), 0x6, 0xa5ec0, 0x80, 0xa5ec0, 0x40), 1), success) +mstore(0xa5f40, 0x266c8432ec86383e72c6ebed25502b1cf984b4d5f824313c7737c0704025c36b) + mstore(0xa5f60, 0x2448f053921f4e8956931c40befd15c476ff357a85338bbbfc3c239e8d51979c) +mstore(0xa5f80, mload(0x73cc0)) +success := and(eq(staticcall(gas(), 0x7, 0xa5f40, 0x60, 0xa5f40, 0x40), 1), success) +mstore(0xa5fa0, mload(0xa5ec0)) + mstore(0xa5fc0, mload(0xa5ee0)) +mstore(0xa5fe0, mload(0xa5f40)) + mstore(0xa6000, mload(0xa5f60)) +success := and(eq(staticcall(gas(), 0x6, 0xa5fa0, 0x80, 0xa5fa0, 0x40), 1), success) +mstore(0xa6020, 0x2706ea97757103a77c4b64b9266e7f7f1776827918e32e0aec5983c570c587be) + mstore(0xa6040, 0x1ad37c453b2940000b6ee6a9b5b2aabaaa5e8d3aaf54fc1042dc3e145a9e506b) +mstore(0xa6060, mload(0x73ce0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6020, 0x60, 0xa6020, 0x40), 1), success) +mstore(0xa6080, mload(0xa5fa0)) + mstore(0xa60a0, mload(0xa5fc0)) +mstore(0xa60c0, mload(0xa6020)) + mstore(0xa60e0, mload(0xa6040)) +success := and(eq(staticcall(gas(), 0x6, 0xa6080, 0x80, 0xa6080, 0x40), 1), success) +mstore(0xa6100, 0x22242b36404fae62b2c311aea96a0741dd5fa3e37232f3c5672167afb4627776) + mstore(0xa6120, 0x1c60e8970eb9bea85eb4591cea786f59d04ef1a5c5d0cbe93a678d417c4097e2) +mstore(0xa6140, mload(0x73d00)) +success := and(eq(staticcall(gas(), 0x7, 0xa6100, 0x60, 0xa6100, 0x40), 1), success) +mstore(0xa6160, mload(0xa6080)) + mstore(0xa6180, mload(0xa60a0)) +mstore(0xa61a0, mload(0xa6100)) + mstore(0xa61c0, mload(0xa6120)) +success := and(eq(staticcall(gas(), 0x6, 0xa6160, 0x80, 0xa6160, 0x40), 1), success) +mstore(0xa61e0, 0x0e807ea50c93588a6a30143448bc72d157a19f26c2179171aa1ee0b18eb25951) + mstore(0xa6200, 0x1e7efbe93b5f73dedf13983a9248b01f9aa0d2ceed05d456df8e1ff5b610aa61) +mstore(0xa6220, mload(0x73d20)) +success := and(eq(staticcall(gas(), 0x7, 0xa61e0, 0x60, 0xa61e0, 0x40), 1), success) +mstore(0xa6240, mload(0xa6160)) + mstore(0xa6260, mload(0xa6180)) +mstore(0xa6280, mload(0xa61e0)) + mstore(0xa62a0, mload(0xa6200)) +success := and(eq(staticcall(gas(), 0x6, 0xa6240, 0x80, 0xa6240, 0x40), 1), success) +mstore(0xa62c0, 0x085c8f502554df144f3b3d0c5dd88c9ee84b04783b1eb646a00ec0d9c5022851) + mstore(0xa62e0, 0x0d800e217dfbe2fb9f512659a5152e8123ab1dc19ae3ec6bd471dcdd51842b41) +mstore(0xa6300, mload(0x73d40)) +success := and(eq(staticcall(gas(), 0x7, 0xa62c0, 0x60, 0xa62c0, 0x40), 1), success) +mstore(0xa6320, mload(0xa6240)) + mstore(0xa6340, mload(0xa6260)) +mstore(0xa6360, mload(0xa62c0)) + mstore(0xa6380, mload(0xa62e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa6320, 0x80, 0xa6320, 0x40), 1), success) +mstore(0xa63a0, 0x04c15186c625429bc6936bddace3f8ad520bf807d87d68cf5f31d54f2174b7cb) + mstore(0xa63c0, 0x1708a0cfa257e7d8b45625d087e6e3f5d2741725f66b23a607d541b1e150c32b) +mstore(0xa63e0, mload(0x73d60)) +success := and(eq(staticcall(gas(), 0x7, 0xa63a0, 0x60, 0xa63a0, 0x40), 1), success) +mstore(0xa6400, mload(0xa6320)) + mstore(0xa6420, mload(0xa6340)) +mstore(0xa6440, mload(0xa63a0)) + mstore(0xa6460, mload(0xa63c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa6400, 0x80, 0xa6400, 0x40), 1), success) +mstore(0xa6480, 0x23b390f9aa1dad095d8771f222679a7c5c7809f5cabf53d6faa42ad66b2fbaeb) + mstore(0xa64a0, 0x10dd94b655055c71018e0ce0e3acfeceac771c3759d9022e6259e148beb603af) +mstore(0xa64c0, mload(0x73d80)) +success := and(eq(staticcall(gas(), 0x7, 0xa6480, 0x60, 0xa6480, 0x40), 1), success) +mstore(0xa64e0, mload(0xa6400)) + mstore(0xa6500, mload(0xa6420)) +mstore(0xa6520, mload(0xa6480)) + mstore(0xa6540, mload(0xa64a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa64e0, 0x80, 0xa64e0, 0x40), 1), success) +mstore(0xa6560, 0x220b25b081c0b19346bfd3c861bdb6fea29f6fa8a6f6d2f166ba996c2d872d38) + mstore(0xa6580, 0x0e00ceb9961cd16a9e9c0f0fbafbf7658bf494da2043f3d81ee6fd7eeacd8684) +mstore(0xa65a0, mload(0x73da0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6560, 0x60, 0xa6560, 0x40), 1), success) +mstore(0xa65c0, mload(0xa64e0)) + mstore(0xa65e0, mload(0xa6500)) +mstore(0xa6600, mload(0xa6560)) + mstore(0xa6620, mload(0xa6580)) +success := and(eq(staticcall(gas(), 0x6, 0xa65c0, 0x80, 0xa65c0, 0x40), 1), success) +mstore(0xa6640, 0x1de321c70766dc19c303d69edf00caaa963f9b91f75e366b133c28c15eef3a5f) + mstore(0xa6660, 0x268d5e0d8aadd9a41001763efe82e82f912b5896082a49c72edfcf1b9c3db61d) +mstore(0xa6680, mload(0x73dc0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6640, 0x60, 0xa6640, 0x40), 1), success) +mstore(0xa66a0, mload(0xa65c0)) + mstore(0xa66c0, mload(0xa65e0)) +mstore(0xa66e0, mload(0xa6640)) + mstore(0xa6700, mload(0xa6660)) +success := and(eq(staticcall(gas(), 0x6, 0xa66a0, 0x80, 0xa66a0, 0x40), 1), success) +mstore(0xa6720, 0x1c28f11cb94de94fe0096137a7b51608543e98b94104ccfa07a67dbf2d1e1d02) + mstore(0xa6740, 0x2db7137a29276f4a181e3d2badcac1da2615ab85fd71f2d042e466d4237b3bb0) +mstore(0xa6760, mload(0x73de0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6720, 0x60, 0xa6720, 0x40), 1), success) +mstore(0xa6780, mload(0xa66a0)) + mstore(0xa67a0, mload(0xa66c0)) +mstore(0xa67c0, mload(0xa6720)) + mstore(0xa67e0, mload(0xa6740)) +success := and(eq(staticcall(gas(), 0x6, 0xa6780, 0x80, 0xa6780, 0x40), 1), success) +mstore(0xa6800, 0x18b9ec81abeb406e9f4999ed918893d0652c710b8840ada61d132f7ee2be63c9) + mstore(0xa6820, 0x1ee4846ba6bca9439bf551c28c4706c09ff91d3d27ea2bd85e6086cda7d32848) +mstore(0xa6840, mload(0x73e00)) +success := and(eq(staticcall(gas(), 0x7, 0xa6800, 0x60, 0xa6800, 0x40), 1), success) +mstore(0xa6860, mload(0xa6780)) + mstore(0xa6880, mload(0xa67a0)) +mstore(0xa68a0, mload(0xa6800)) + mstore(0xa68c0, mload(0xa6820)) +success := and(eq(staticcall(gas(), 0x6, 0xa6860, 0x80, 0xa6860, 0x40), 1), success) +mstore(0xa68e0, 0x212c82461e8dedb1d9991184f79859dacf7c5e7eefedb788eb6900b266a1d8ec) + mstore(0xa6900, 0x28bdc1e72db2ee85b72f01896c6f0c9b94933899d1af3f9de4b054b3546c8078) +mstore(0xa6920, mload(0x73e20)) +success := and(eq(staticcall(gas(), 0x7, 0xa68e0, 0x60, 0xa68e0, 0x40), 1), success) +mstore(0xa6940, mload(0xa6860)) + mstore(0xa6960, mload(0xa6880)) +mstore(0xa6980, mload(0xa68e0)) + mstore(0xa69a0, mload(0xa6900)) +success := and(eq(staticcall(gas(), 0x6, 0xa6940, 0x80, 0xa6940, 0x40), 1), success) +mstore(0xa69c0, 0x063acc4f1306cc4485bbef846b38b1bc7b2d009b6aeab7da5d920d4245eb089c) + mstore(0xa69e0, 0x11fe3a699d7a233b5deefc7b926e5fcacfda9f5acc5e70c3424eab8efea25f9e) +mstore(0xa6a00, mload(0x73e40)) +success := and(eq(staticcall(gas(), 0x7, 0xa69c0, 0x60, 0xa69c0, 0x40), 1), success) +mstore(0xa6a20, mload(0xa6940)) + mstore(0xa6a40, mload(0xa6960)) +mstore(0xa6a60, mload(0xa69c0)) + mstore(0xa6a80, mload(0xa69e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa6a20, 0x80, 0xa6a20, 0x40), 1), success) +mstore(0xa6aa0, 0x1bb01d816953bd13a002bc0657a489ca0d177ac9522ff61d017c6d32574d71bf) + mstore(0xa6ac0, 0x224b88919c26207fecfdab6f7c2d6f7b7e9ee95ac6328e85ee7d0c5f292dae41) +mstore(0xa6ae0, mload(0x73e60)) +success := and(eq(staticcall(gas(), 0x7, 0xa6aa0, 0x60, 0xa6aa0, 0x40), 1), success) +mstore(0xa6b00, mload(0xa6a20)) + mstore(0xa6b20, mload(0xa6a40)) +mstore(0xa6b40, mload(0xa6aa0)) + mstore(0xa6b60, mload(0xa6ac0)) +success := and(eq(staticcall(gas(), 0x6, 0xa6b00, 0x80, 0xa6b00, 0x40), 1), success) +mstore(0xa6b80, 0x1fbd7f3c62e00322790bb3b88ce92d27b1274f214db18a8f765f0ae9a686e767) + mstore(0xa6ba0, 0x0b2d456b6a92299438379666566a42c356694a5993acdd7f3a05cac6aee24d04) +mstore(0xa6bc0, mload(0x73e80)) +success := and(eq(staticcall(gas(), 0x7, 0xa6b80, 0x60, 0xa6b80, 0x40), 1), success) +mstore(0xa6be0, mload(0xa6b00)) + mstore(0xa6c00, mload(0xa6b20)) +mstore(0xa6c20, mload(0xa6b80)) + mstore(0xa6c40, mload(0xa6ba0)) +success := and(eq(staticcall(gas(), 0x6, 0xa6be0, 0x80, 0xa6be0, 0x40), 1), success) +mstore(0xa6c60, 0x03cf35dc79e711e637fe2691ac9b96ddc412a57c04fb592bb48b844e838a6cbe) + mstore(0xa6c80, 0x122f318d59472d031d1e6d9a9d35f049a08bce6bc1c079897be6a373125b9daa) +mstore(0xa6ca0, mload(0x73ea0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6c60, 0x60, 0xa6c60, 0x40), 1), success) +mstore(0xa6cc0, mload(0xa6be0)) + mstore(0xa6ce0, mload(0xa6c00)) +mstore(0xa6d00, mload(0xa6c60)) + mstore(0xa6d20, mload(0xa6c80)) +success := and(eq(staticcall(gas(), 0x6, 0xa6cc0, 0x80, 0xa6cc0, 0x40), 1), success) +mstore(0xa6d40, 0x0f9214c086eb7a631771737270e7cbd393d20d40111a82c88d901dcc5fe1d440) + mstore(0xa6d60, 0x07c09a990f89cfafa73c40ce72d5628411d91dad588e570fb174b15814393e9d) +mstore(0xa6d80, mload(0x73ec0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6d40, 0x60, 0xa6d40, 0x40), 1), success) +mstore(0xa6da0, mload(0xa6cc0)) + mstore(0xa6dc0, mload(0xa6ce0)) +mstore(0xa6de0, mload(0xa6d40)) + mstore(0xa6e00, mload(0xa6d60)) +success := and(eq(staticcall(gas(), 0x6, 0xa6da0, 0x80, 0xa6da0, 0x40), 1), success) +mstore(0xa6e20, 0x0874d6d8bdbbf58c278ee7498594141bcac30f13c9e2d184f8d531d8be168f3c) + mstore(0xa6e40, 0x1d06f44c5ddefe26511d68a5165444fec074f0f447241251fb017dcb1254d0b2) +mstore(0xa6e60, mload(0x73ee0)) +success := and(eq(staticcall(gas(), 0x7, 0xa6e20, 0x60, 0xa6e20, 0x40), 1), success) +mstore(0xa6e80, mload(0xa6da0)) + mstore(0xa6ea0, mload(0xa6dc0)) +mstore(0xa6ec0, mload(0xa6e20)) + mstore(0xa6ee0, mload(0xa6e40)) +success := and(eq(staticcall(gas(), 0x6, 0xa6e80, 0x80, 0xa6e80, 0x40), 1), success) +mstore(0xa6f00, 0x1ae19caf86146fc79214922d08eda21c0eef0bd1cc4accd47addcc57f96a98ce) + mstore(0xa6f20, 0x1856a73825ac6be51ed602c4fdbfd7173a4d9dd98ade6f02e8d041d3ec5892e1) +mstore(0xa6f40, mload(0x73f00)) +success := and(eq(staticcall(gas(), 0x7, 0xa6f00, 0x60, 0xa6f00, 0x40), 1), success) +mstore(0xa6f60, mload(0xa6e80)) + mstore(0xa6f80, mload(0xa6ea0)) +mstore(0xa6fa0, mload(0xa6f00)) + mstore(0xa6fc0, mload(0xa6f20)) +success := and(eq(staticcall(gas(), 0x6, 0xa6f60, 0x80, 0xa6f60, 0x40), 1), success) +mstore(0xa6fe0, 0x1d1f535d322d5624f3eb39283f575d667b0c3c582ec97073bc91a28f1042036b) + mstore(0xa7000, 0x07ce58f3af11ac1a6abe78303375079484adbf543b4c7a499dd45ac5632f4f15) +mstore(0xa7020, mload(0x73f20)) +success := and(eq(staticcall(gas(), 0x7, 0xa6fe0, 0x60, 0xa6fe0, 0x40), 1), success) +mstore(0xa7040, mload(0xa6f60)) + mstore(0xa7060, mload(0xa6f80)) +mstore(0xa7080, mload(0xa6fe0)) + mstore(0xa70a0, mload(0xa7000)) +success := and(eq(staticcall(gas(), 0x6, 0xa7040, 0x80, 0xa7040, 0x40), 1), success) +mstore(0xa70c0, 0x1338973c6723f626449726d50ff15d37dd07aef8d27094391daa22e30e6bc7ce) + mstore(0xa70e0, 0x275056b2cfb39ca12f22f2b0f2c3aef428503ea490376b1c000cab909203637d) +mstore(0xa7100, mload(0x73f40)) +success := and(eq(staticcall(gas(), 0x7, 0xa70c0, 0x60, 0xa70c0, 0x40), 1), success) +mstore(0xa7120, mload(0xa7040)) + mstore(0xa7140, mload(0xa7060)) +mstore(0xa7160, mload(0xa70c0)) + mstore(0xa7180, mload(0xa70e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa7120, 0x80, 0xa7120, 0x40), 1), success) +mstore(0xa71a0, 0x0037f390e7ba11e2ab0608ce6943487dee5d67ed4df57fb006d85f60e9c1b8ba) + mstore(0xa71c0, 0x271e5d4a9fbb7790164b55ccb59c6a27cc9abaed2b6248d02ab4c87fd8786978) +mstore(0xa71e0, mload(0x73f60)) +success := and(eq(staticcall(gas(), 0x7, 0xa71a0, 0x60, 0xa71a0, 0x40), 1), success) +mstore(0xa7200, mload(0xa7120)) + mstore(0xa7220, mload(0xa7140)) +mstore(0xa7240, mload(0xa71a0)) + mstore(0xa7260, mload(0xa71c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa7200, 0x80, 0xa7200, 0x40), 1), success) +mstore(0xa7280, 0x01f12d207370b0f62d73dd9a47154793f9b2ae645a99248f9a7f4c772b8fcfbb) + mstore(0xa72a0, 0x06854340b55b36af71b7f0afdb1c357c7dbc739e553ecb9cbb10a10275dbb0d3) +mstore(0xa72c0, mload(0x73f80)) +success := and(eq(staticcall(gas(), 0x7, 0xa7280, 0x60, 0xa7280, 0x40), 1), success) +mstore(0xa72e0, mload(0xa7200)) + mstore(0xa7300, mload(0xa7220)) +mstore(0xa7320, mload(0xa7280)) + mstore(0xa7340, mload(0xa72a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa72e0, 0x80, 0xa72e0, 0x40), 1), success) +mstore(0xa7360, 0x250dda51c7818f1b37a0d638b5b3aee5a047f34666fa73976facd04bc08c8493) + mstore(0xa7380, 0x0e14a07f739f106504151ec43f5400b5091fd40708caacb70af417a18c2dbb53) +mstore(0xa73a0, mload(0x73fa0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7360, 0x60, 0xa7360, 0x40), 1), success) +mstore(0xa73c0, mload(0xa72e0)) + mstore(0xa73e0, mload(0xa7300)) +mstore(0xa7400, mload(0xa7360)) + mstore(0xa7420, mload(0xa7380)) +success := and(eq(staticcall(gas(), 0x6, 0xa73c0, 0x80, 0xa73c0, 0x40), 1), success) +mstore(0xa7440, 0x0a7522391da06797ce39ad04d7db0a7deab52ded0406a127018e6d06640f7174) + mstore(0xa7460, 0x0d44a95dd97bd19b61be4c33d2da59caf4645da1df60dd0698e61b16d4f4ea8b) +mstore(0xa7480, mload(0x73fc0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7440, 0x60, 0xa7440, 0x40), 1), success) +mstore(0xa74a0, mload(0xa73c0)) + mstore(0xa74c0, mload(0xa73e0)) +mstore(0xa74e0, mload(0xa7440)) + mstore(0xa7500, mload(0xa7460)) +success := and(eq(staticcall(gas(), 0x6, 0xa74a0, 0x80, 0xa74a0, 0x40), 1), success) +mstore(0xa7520, 0x0b6da0dc9d744edf0b9c697b5c04a146b8fe505bb107f59201613493d39e13a5) + mstore(0xa7540, 0x0e1bec7420f72172d905098d0ead61b9646463813eaf8dddbee071173ffba350) +mstore(0xa7560, mload(0x73fe0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7520, 0x60, 0xa7520, 0x40), 1), success) +mstore(0xa7580, mload(0xa74a0)) + mstore(0xa75a0, mload(0xa74c0)) +mstore(0xa75c0, mload(0xa7520)) + mstore(0xa75e0, mload(0xa7540)) +success := and(eq(staticcall(gas(), 0x6, 0xa7580, 0x80, 0xa7580, 0x40), 1), success) +mstore(0xa7600, 0x05aaaae5ff18d1cc1f524e9f1ea591f3374812949c3798b2bb0442a6dbd937a2) + mstore(0xa7620, 0x2d7567f220c0e0478dbff732ef0883c644e40d5b609bb45a4cb0eaf8e577545c) +mstore(0xa7640, mload(0x74000)) +success := and(eq(staticcall(gas(), 0x7, 0xa7600, 0x60, 0xa7600, 0x40), 1), success) +mstore(0xa7660, mload(0xa7580)) + mstore(0xa7680, mload(0xa75a0)) +mstore(0xa76a0, mload(0xa7600)) + mstore(0xa76c0, mload(0xa7620)) +success := and(eq(staticcall(gas(), 0x6, 0xa7660, 0x80, 0xa7660, 0x40), 1), success) +mstore(0xa76e0, 0x2de3505182bc82e7a383fb106736bf97713195b6599859560f377eb7f55b8b6c) + mstore(0xa7700, 0x18d22f8e24eaa85fc3557714aa3b080a96a96187bf4b103af6438c3fa2debf1f) +mstore(0xa7720, mload(0x74020)) +success := and(eq(staticcall(gas(), 0x7, 0xa76e0, 0x60, 0xa76e0, 0x40), 1), success) +mstore(0xa7740, mload(0xa7660)) + mstore(0xa7760, mload(0xa7680)) +mstore(0xa7780, mload(0xa76e0)) + mstore(0xa77a0, mload(0xa7700)) +success := and(eq(staticcall(gas(), 0x6, 0xa7740, 0x80, 0xa7740, 0x40), 1), success) +mstore(0xa77c0, 0x2bef1ab7babac74601e2d9aef1fb36c8cadf7a295f8607bc6c2e1786a757e644) + mstore(0xa77e0, 0x186b8bba57d7243ba3a7c7928cb6f99c14f2e00faf71e176006bb61e7dca47ac) +mstore(0xa7800, mload(0x74040)) +success := and(eq(staticcall(gas(), 0x7, 0xa77c0, 0x60, 0xa77c0, 0x40), 1), success) +mstore(0xa7820, mload(0xa7740)) + mstore(0xa7840, mload(0xa7760)) +mstore(0xa7860, mload(0xa77c0)) + mstore(0xa7880, mload(0xa77e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa7820, 0x80, 0xa7820, 0x40), 1), success) +mstore(0xa78a0, 0x0f57e6e10683fa7e7ca20a746cf73630dd7a1ae1ac926b26dd6e5e7276080629) + mstore(0xa78c0, 0x0a0f546928d0c8a5953624eceb6e138e65fcbd0984f9269d18371b377ac73084) +mstore(0xa78e0, mload(0x74060)) +success := and(eq(staticcall(gas(), 0x7, 0xa78a0, 0x60, 0xa78a0, 0x40), 1), success) +mstore(0xa7900, mload(0xa7820)) + mstore(0xa7920, mload(0xa7840)) +mstore(0xa7940, mload(0xa78a0)) + mstore(0xa7960, mload(0xa78c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa7900, 0x80, 0xa7900, 0x40), 1), success) +mstore(0xa7980, 0x07698dd3820f28d2d57b54f6641682badf112dbf2eef6d1f8a650b496c253c32) + mstore(0xa79a0, 0x13f622f5992522368a78b2d3c2fcaea4dbc7b583322f0ec110d1bacf7851bf31) +mstore(0xa79c0, mload(0x74080)) +success := and(eq(staticcall(gas(), 0x7, 0xa7980, 0x60, 0xa7980, 0x40), 1), success) +mstore(0xa79e0, mload(0xa7900)) + mstore(0xa7a00, mload(0xa7920)) +mstore(0xa7a20, mload(0xa7980)) + mstore(0xa7a40, mload(0xa79a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa79e0, 0x80, 0xa79e0, 0x40), 1), success) +mstore(0xa7a60, 0x27dd8d960364adf8e4b8e44ac777a7b45c4d7961ac2265756ac02ba9f0741628) + mstore(0xa7a80, 0x2aa232a0e79d39de942a62bde35bb2fb4c03ab1e17f6eed47d0fc86a433a7ef7) +mstore(0xa7aa0, mload(0x740a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7a60, 0x60, 0xa7a60, 0x40), 1), success) +mstore(0xa7ac0, mload(0xa79e0)) + mstore(0xa7ae0, mload(0xa7a00)) +mstore(0xa7b00, mload(0xa7a60)) + mstore(0xa7b20, mload(0xa7a80)) +success := and(eq(staticcall(gas(), 0x6, 0xa7ac0, 0x80, 0xa7ac0, 0x40), 1), success) +mstore(0xa7b40, 0x285b7c45def8c856e89850902a7fa48e4872e14c3dcada09b33888bfef8eb826) + mstore(0xa7b60, 0x0cca07c2492b38f33f77eb4cec482fa30058327b012965a6a59fc6f4fc72f6e0) +mstore(0xa7b80, mload(0x740c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7b40, 0x60, 0xa7b40, 0x40), 1), success) +mstore(0xa7ba0, mload(0xa7ac0)) + mstore(0xa7bc0, mload(0xa7ae0)) +mstore(0xa7be0, mload(0xa7b40)) + mstore(0xa7c00, mload(0xa7b60)) +success := and(eq(staticcall(gas(), 0x6, 0xa7ba0, 0x80, 0xa7ba0, 0x40), 1), success) +mstore(0xa7c20, 0x06a6719851bed9a44a2b8a1352826ba173c8a6e0560e304a73ec1f9a3cfb29c8) + mstore(0xa7c40, 0x1ad376d07093ad7053078a4b9d131f918f3704e916ff11e85973b55a8f158fee) +mstore(0xa7c60, mload(0x740e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa7c20, 0x60, 0xa7c20, 0x40), 1), success) +mstore(0xa7c80, mload(0xa7ba0)) + mstore(0xa7ca0, mload(0xa7bc0)) +mstore(0xa7cc0, mload(0xa7c20)) + mstore(0xa7ce0, mload(0xa7c40)) +success := and(eq(staticcall(gas(), 0x6, 0xa7c80, 0x80, 0xa7c80, 0x40), 1), success) +mstore(0xa7d00, 0x2be840d4ff0cb6f551f7abcd47ff432a8e8af7e88b96ff7347c8882308feb78d) + mstore(0xa7d20, 0x2ff513d0bdebe7970705c18e8114dcff7dfc8a07ab803b8296861a8ecf8b250a) +mstore(0xa7d40, mload(0x74100)) +success := and(eq(staticcall(gas(), 0x7, 0xa7d00, 0x60, 0xa7d00, 0x40), 1), success) +mstore(0xa7d60, mload(0xa7c80)) + mstore(0xa7d80, mload(0xa7ca0)) +mstore(0xa7da0, mload(0xa7d00)) + mstore(0xa7dc0, mload(0xa7d20)) +success := and(eq(staticcall(gas(), 0x6, 0xa7d60, 0x80, 0xa7d60, 0x40), 1), success) +mstore(0xa7de0, 0x10223d1e4ffdd80f54c4ba1935ae3d50f410976f46ecd828c7bef0d7300824f1) + mstore(0xa7e00, 0x2de7b604803c7e2b339b51bea0f2f218955989612e4612ff12f1fb1596e0ee1c) +mstore(0xa7e20, mload(0x74120)) +success := and(eq(staticcall(gas(), 0x7, 0xa7de0, 0x60, 0xa7de0, 0x40), 1), success) +mstore(0xa7e40, mload(0xa7d60)) + mstore(0xa7e60, mload(0xa7d80)) +mstore(0xa7e80, mload(0xa7de0)) + mstore(0xa7ea0, mload(0xa7e00)) +success := and(eq(staticcall(gas(), 0x6, 0xa7e40, 0x80, 0xa7e40, 0x40), 1), success) +mstore(0xa7ec0, 0x1e430278e43a7b89e794b18d168f228291d65bccffe20ef0e9e0c026d06a3a4b) + mstore(0xa7ee0, 0x0c881dffacd3eba62919ab0bd505032341b248dcdd82106e094bd5a9dd8fa54d) +mstore(0xa7f00, mload(0x74140)) +success := and(eq(staticcall(gas(), 0x7, 0xa7ec0, 0x60, 0xa7ec0, 0x40), 1), success) +mstore(0xa7f20, mload(0xa7e40)) + mstore(0xa7f40, mload(0xa7e60)) +mstore(0xa7f60, mload(0xa7ec0)) + mstore(0xa7f80, mload(0xa7ee0)) +success := and(eq(staticcall(gas(), 0x6, 0xa7f20, 0x80, 0xa7f20, 0x40), 1), success) +mstore(0xa7fa0, 0x0b070620ae054d707448b0bd6f7fec3b7bf4696a8eafdbbc90bf5e3b2833d064) + mstore(0xa7fc0, 0x061851caf9d761a32d68f7656031112dbe2a30411d3d981d70846493a0596948) +mstore(0xa7fe0, mload(0x74160)) +success := and(eq(staticcall(gas(), 0x7, 0xa7fa0, 0x60, 0xa7fa0, 0x40), 1), success) +mstore(0xa8000, mload(0xa7f20)) + mstore(0xa8020, mload(0xa7f40)) +mstore(0xa8040, mload(0xa7fa0)) + mstore(0xa8060, mload(0xa7fc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8000, 0x80, 0xa8000, 0x40), 1), success) +mstore(0xa8080, 0x2880d376b9768cc4569356fcd1d1929eb4743372a627de47f7da84c6b566f646) + mstore(0xa80a0, 0x09bc3d7f1e8f53fbd0d10c44099a244852190ebb9f4ef7ee642756f765772279) +mstore(0xa80c0, mload(0x74180)) +success := and(eq(staticcall(gas(), 0x7, 0xa8080, 0x60, 0xa8080, 0x40), 1), success) +mstore(0xa80e0, mload(0xa8000)) + mstore(0xa8100, mload(0xa8020)) +mstore(0xa8120, mload(0xa8080)) + mstore(0xa8140, mload(0xa80a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa80e0, 0x80, 0xa80e0, 0x40), 1), success) +mstore(0xa8160, 0x21807c883e069c3285459455de4a6c648fee23403341b0632f6e525a34d98857) + mstore(0xa8180, 0x1d5e0c7c0ac4c043c1dd31f9e583ebcf4661c21ed558105c462ff5adb47e5b2e) +mstore(0xa81a0, mload(0x741a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8160, 0x60, 0xa8160, 0x40), 1), success) +mstore(0xa81c0, mload(0xa80e0)) + mstore(0xa81e0, mload(0xa8100)) +mstore(0xa8200, mload(0xa8160)) + mstore(0xa8220, mload(0xa8180)) +success := and(eq(staticcall(gas(), 0x6, 0xa81c0, 0x80, 0xa81c0, 0x40), 1), success) +mstore(0xa8240, 0x01c78634b40414a7e4e01daf67dabe41fd558ecf192f2b6c4a9758708037df27) + mstore(0xa8260, 0x0108992780ea8288ed346c5a9e0ed966bdb71f6d4967980e3676fa1375af2acd) +mstore(0xa8280, mload(0x741c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8240, 0x60, 0xa8240, 0x40), 1), success) +mstore(0xa82a0, mload(0xa81c0)) + mstore(0xa82c0, mload(0xa81e0)) +mstore(0xa82e0, mload(0xa8240)) + mstore(0xa8300, mload(0xa8260)) +success := and(eq(staticcall(gas(), 0x6, 0xa82a0, 0x80, 0xa82a0, 0x40), 1), success) +mstore(0xa8320, 0x0196b68d03757b2b74eaebcf194305b1a264bef430176c7a534bbefa964c2528) + mstore(0xa8340, 0x1f5d71ff2885b31bd56689f95062374d78f7d884203958e48e8380f056884e0e) +mstore(0xa8360, mload(0x741e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8320, 0x60, 0xa8320, 0x40), 1), success) +mstore(0xa8380, mload(0xa82a0)) + mstore(0xa83a0, mload(0xa82c0)) +mstore(0xa83c0, mload(0xa8320)) + mstore(0xa83e0, mload(0xa8340)) +success := and(eq(staticcall(gas(), 0x6, 0xa8380, 0x80, 0xa8380, 0x40), 1), success) +mstore(0xa8400, 0x07d29b90ea5d19f650af899a96a244e642f8db995554ca4d2778195472dc20f8) + mstore(0xa8420, 0x15a303fd828c87e5a741330fa7d182c523a107d90d8b1208fdb3258b4bf3f400) +mstore(0xa8440, mload(0x74200)) +success := and(eq(staticcall(gas(), 0x7, 0xa8400, 0x60, 0xa8400, 0x40), 1), success) +mstore(0xa8460, mload(0xa8380)) + mstore(0xa8480, mload(0xa83a0)) +mstore(0xa84a0, mload(0xa8400)) + mstore(0xa84c0, mload(0xa8420)) +success := and(eq(staticcall(gas(), 0x6, 0xa8460, 0x80, 0xa8460, 0x40), 1), success) +mstore(0xa84e0, 0x13fbc613e3f63c1d976fd1c8ecdceb13918a496f52602e8c00f3ebb31d396858) + mstore(0xa8500, 0x12e79cb3302d01c9d41749d24f3438cf4f9ba3513db3aaed5e470468dc2f0fe8) +mstore(0xa8520, mload(0x74220)) +success := and(eq(staticcall(gas(), 0x7, 0xa84e0, 0x60, 0xa84e0, 0x40), 1), success) +mstore(0xa8540, mload(0xa8460)) + mstore(0xa8560, mload(0xa8480)) +mstore(0xa8580, mload(0xa84e0)) + mstore(0xa85a0, mload(0xa8500)) +success := and(eq(staticcall(gas(), 0x6, 0xa8540, 0x80, 0xa8540, 0x40), 1), success) +mstore(0xa85c0, 0x101bf899160d77a8c63813b4359c4fd296b640c07277b2b20d6d5029b2cf4b2c) + mstore(0xa85e0, 0x2fa395c344bdbdff28cced1be606b715606f9893cfda84e1d327fea38cb5bc1c) +mstore(0xa8600, mload(0x74240)) +success := and(eq(staticcall(gas(), 0x7, 0xa85c0, 0x60, 0xa85c0, 0x40), 1), success) +mstore(0xa8620, mload(0xa8540)) + mstore(0xa8640, mload(0xa8560)) +mstore(0xa8660, mload(0xa85c0)) + mstore(0xa8680, mload(0xa85e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8620, 0x80, 0xa8620, 0x40), 1), success) +mstore(0xa86a0, 0x1e4fe46e082ae5087bc1d6b1a2d09bf7125c5d867f19344533e1f2a122c1771c) + mstore(0xa86c0, 0x2a77e0f55acefa264c5c916bf7b0c2b1d5876d40fd67f8f9ee21f3064a2568ed) +mstore(0xa86e0, mload(0x74260)) +success := and(eq(staticcall(gas(), 0x7, 0xa86a0, 0x60, 0xa86a0, 0x40), 1), success) +mstore(0xa8700, mload(0xa8620)) + mstore(0xa8720, mload(0xa8640)) +mstore(0xa8740, mload(0xa86a0)) + mstore(0xa8760, mload(0xa86c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8700, 0x80, 0xa8700, 0x40), 1), success) +mstore(0xa8780, 0x1c016fad3b1daae8e3aac04cf415dd2f6ad3bc29047fd392d5c3e336b12669da) + mstore(0xa87a0, 0x2137d52a8f0ab407f833ecc58eedc2b4ab3404b18ffa3ff1c07b8b2fde0ecb53) +mstore(0xa87c0, mload(0x74280)) +success := and(eq(staticcall(gas(), 0x7, 0xa8780, 0x60, 0xa8780, 0x40), 1), success) +mstore(0xa87e0, mload(0xa8700)) + mstore(0xa8800, mload(0xa8720)) +mstore(0xa8820, mload(0xa8780)) + mstore(0xa8840, mload(0xa87a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa87e0, 0x80, 0xa87e0, 0x40), 1), success) +mstore(0xa8860, 0x29232f6a81d71cfa00747dec7476f861f9e2f23a5c98e637a1b5612b1da9b63e) + mstore(0xa8880, 0x01a27c7060bdafb116bb01bc1b00b9c0585e271816fd1162694f8345fb901a74) +mstore(0xa88a0, mload(0x742a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8860, 0x60, 0xa8860, 0x40), 1), success) +mstore(0xa88c0, mload(0xa87e0)) + mstore(0xa88e0, mload(0xa8800)) +mstore(0xa8900, mload(0xa8860)) + mstore(0xa8920, mload(0xa8880)) +success := and(eq(staticcall(gas(), 0x6, 0xa88c0, 0x80, 0xa88c0, 0x40), 1), success) +mstore(0xa8940, 0x304ffce16487b377e7594c76d98a8dfe3b29b311efff63cf3211895a646ed155) + mstore(0xa8960, 0x289ceb024e06b3abb6d16aeab6a7b4573ab7dc84a450424e3b8ece9a22b7ef20) +mstore(0xa8980, mload(0x742c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8940, 0x60, 0xa8940, 0x40), 1), success) +mstore(0xa89a0, mload(0xa88c0)) + mstore(0xa89c0, mload(0xa88e0)) +mstore(0xa89e0, mload(0xa8940)) + mstore(0xa8a00, mload(0xa8960)) +success := and(eq(staticcall(gas(), 0x6, 0xa89a0, 0x80, 0xa89a0, 0x40), 1), success) +mstore(0xa8a20, 0x2df1da7c10b0fa6b4114a06cb27b6846de7cca7d0b5c5089c95435bc7a41f95c) + mstore(0xa8a40, 0x2496151239f1765870d642418b5ae1316b88d153f532da2afb4fc4f74b15362e) +mstore(0xa8a60, mload(0x742e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8a20, 0x60, 0xa8a20, 0x40), 1), success) +mstore(0xa8a80, mload(0xa89a0)) + mstore(0xa8aa0, mload(0xa89c0)) +mstore(0xa8ac0, mload(0xa8a20)) + mstore(0xa8ae0, mload(0xa8a40)) +success := and(eq(staticcall(gas(), 0x6, 0xa8a80, 0x80, 0xa8a80, 0x40), 1), success) +mstore(0xa8b00, 0x077003fb180024f6fbdf17020bbb6121c364383be4494ca0be8c3381db483309) + mstore(0xa8b20, 0x002e8c35ef79760387dab6696ecd8fea5db8be0c38060f690419bf48107790c9) +mstore(0xa8b40, mload(0x74300)) +success := and(eq(staticcall(gas(), 0x7, 0xa8b00, 0x60, 0xa8b00, 0x40), 1), success) +mstore(0xa8b60, mload(0xa8a80)) + mstore(0xa8b80, mload(0xa8aa0)) +mstore(0xa8ba0, mload(0xa8b00)) + mstore(0xa8bc0, mload(0xa8b20)) +success := and(eq(staticcall(gas(), 0x6, 0xa8b60, 0x80, 0xa8b60, 0x40), 1), success) +mstore(0xa8be0, 0x1e2c5a4c1149e3383977cd7ffb95a4f0bc1ea259bdd6fb46d51d7ddc04812c88) + mstore(0xa8c00, 0x2f8f06b720b29e25e152f2a32d20ac96bc4250636d0d0c0a88b1041f8e49a00a) +mstore(0xa8c20, mload(0x74320)) +success := and(eq(staticcall(gas(), 0x7, 0xa8be0, 0x60, 0xa8be0, 0x40), 1), success) +mstore(0xa8c40, mload(0xa8b60)) + mstore(0xa8c60, mload(0xa8b80)) +mstore(0xa8c80, mload(0xa8be0)) + mstore(0xa8ca0, mload(0xa8c00)) +success := and(eq(staticcall(gas(), 0x6, 0xa8c40, 0x80, 0xa8c40, 0x40), 1), success) +mstore(0xa8cc0, 0x23bbdf0470008153372357ab03e3d95cb48e78c3bd353973515dc11858448a90) + mstore(0xa8ce0, 0x0484379a4a91c30eb146086500994dc1bf07c69d1d8b5952749fb5bb6be6eb89) +mstore(0xa8d00, mload(0x74340)) +success := and(eq(staticcall(gas(), 0x7, 0xa8cc0, 0x60, 0xa8cc0, 0x40), 1), success) +mstore(0xa8d20, mload(0xa8c40)) + mstore(0xa8d40, mload(0xa8c60)) +mstore(0xa8d60, mload(0xa8cc0)) + mstore(0xa8d80, mload(0xa8ce0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8d20, 0x80, 0xa8d20, 0x40), 1), success) +mstore(0xa8da0, 0x0d6a41e26542eae8eee837c2cee2c5f05a2e4a236bc8c90b428f439527e9bc34) + mstore(0xa8dc0, 0x18701d22a69b6dfdf9a27056b29c6d2f697fd56dc55dad268864d46bef653a76) +mstore(0xa8de0, mload(0x74360)) +success := and(eq(staticcall(gas(), 0x7, 0xa8da0, 0x60, 0xa8da0, 0x40), 1), success) +mstore(0xa8e00, mload(0xa8d20)) + mstore(0xa8e20, mload(0xa8d40)) +mstore(0xa8e40, mload(0xa8da0)) + mstore(0xa8e60, mload(0xa8dc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8e00, 0x80, 0xa8e00, 0x40), 1), success) +mstore(0xa8e80, 0x227d89e2d6cd80e5a90b983cee85c5ab1f5c70e559e09fab930f27bb974fd91e) + mstore(0xa8ea0, 0x1576e2f9719a43b67f71ccd3767509a084249e0da3dd828f6fe56ce5b540219d) +mstore(0xa8ec0, mload(0x74380)) +success := and(eq(staticcall(gas(), 0x7, 0xa8e80, 0x60, 0xa8e80, 0x40), 1), success) +mstore(0xa8ee0, mload(0xa8e00)) + mstore(0xa8f00, mload(0xa8e20)) +mstore(0xa8f20, mload(0xa8e80)) + mstore(0xa8f40, mload(0xa8ea0)) +success := and(eq(staticcall(gas(), 0x6, 0xa8ee0, 0x80, 0xa8ee0, 0x40), 1), success) +mstore(0xa8f60, 0x0c8f0edbbb2cd9d94c92f58a0ac2f39c44b5f3fee54dcbce87588217eba324de) + mstore(0xa8f80, 0x20b11a5624f4447c99a2183b047edaa6450cb0a6f234c905fa20b3228cfe36d8) +mstore(0xa8fa0, mload(0x743a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa8f60, 0x60, 0xa8f60, 0x40), 1), success) +mstore(0xa8fc0, mload(0xa8ee0)) + mstore(0xa8fe0, mload(0xa8f00)) +mstore(0xa9000, mload(0xa8f60)) + mstore(0xa9020, mload(0xa8f80)) +success := and(eq(staticcall(gas(), 0x6, 0xa8fc0, 0x80, 0xa8fc0, 0x40), 1), success) +mstore(0xa9040, 0x14ede40e830b1366f403ef79c9ad5049467f2bfd686ff1efdb6aba13697c5412) + mstore(0xa9060, 0x20b5017d46102b75835857f4a43261c596684714e5db43ec73e5c4caf1ba0524) +mstore(0xa9080, mload(0x743c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9040, 0x60, 0xa9040, 0x40), 1), success) +mstore(0xa90a0, mload(0xa8fc0)) + mstore(0xa90c0, mload(0xa8fe0)) +mstore(0xa90e0, mload(0xa9040)) + mstore(0xa9100, mload(0xa9060)) +success := and(eq(staticcall(gas(), 0x6, 0xa90a0, 0x80, 0xa90a0, 0x40), 1), success) +mstore(0xa9120, 0x0d22d38ebfbabf989e57b896ff7afbe127f2eeacdadfc466e3f9dcad5dacf84c) + mstore(0xa9140, 0x1a7c4a4b4c0187062e418c063f84331ea90797816de08137ba6f0c208b49434c) +mstore(0xa9160, mload(0x743e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9120, 0x60, 0xa9120, 0x40), 1), success) +mstore(0xa9180, mload(0xa90a0)) + mstore(0xa91a0, mload(0xa90c0)) +mstore(0xa91c0, mload(0xa9120)) + mstore(0xa91e0, mload(0xa9140)) +success := and(eq(staticcall(gas(), 0x6, 0xa9180, 0x80, 0xa9180, 0x40), 1), success) +mstore(0xa9200, 0x230b6bcf2b4e5b6153b8e7dd17c4d2d9d7d86f2f711a73a9a2745dac3756d4c0) + mstore(0xa9220, 0x1f73526d274633b5209f9fbefbf3a1623cbeb83fc962c52c53f7d7dc7eb328a9) +mstore(0xa9240, mload(0x74400)) +success := and(eq(staticcall(gas(), 0x7, 0xa9200, 0x60, 0xa9200, 0x40), 1), success) +mstore(0xa9260, mload(0xa9180)) + mstore(0xa9280, mload(0xa91a0)) +mstore(0xa92a0, mload(0xa9200)) + mstore(0xa92c0, mload(0xa9220)) +success := and(eq(staticcall(gas(), 0x6, 0xa9260, 0x80, 0xa9260, 0x40), 1), success) +mstore(0xa92e0, 0x177a1cdaa16c09e737ad5039a73f8c008fd27bbfd9f33edb6f8385e7e5f3fa60) + mstore(0xa9300, 0x14337ccfa6ae4dc9dd984d88b66f92c52810243a22c7c35c25608ee9fd362dd5) +mstore(0xa9320, mload(0x74420)) +success := and(eq(staticcall(gas(), 0x7, 0xa92e0, 0x60, 0xa92e0, 0x40), 1), success) +mstore(0xa9340, mload(0xa9260)) + mstore(0xa9360, mload(0xa9280)) +mstore(0xa9380, mload(0xa92e0)) + mstore(0xa93a0, mload(0xa9300)) +success := and(eq(staticcall(gas(), 0x6, 0xa9340, 0x80, 0xa9340, 0x40), 1), success) +mstore(0xa93c0, 0x12034548e45594d2fbe3b7c5faaae8d41e6cfe0ac5ed34b20725110d151b9859) + mstore(0xa93e0, 0x16e6166c9f9d64963a7e2a18f9d9706009635b577896aaa90cbc5917ac375218) +mstore(0xa9400, mload(0x74440)) +success := and(eq(staticcall(gas(), 0x7, 0xa93c0, 0x60, 0xa93c0, 0x40), 1), success) +mstore(0xa9420, mload(0xa9340)) + mstore(0xa9440, mload(0xa9360)) +mstore(0xa9460, mload(0xa93c0)) + mstore(0xa9480, mload(0xa93e0)) +success := and(eq(staticcall(gas(), 0x6, 0xa9420, 0x80, 0xa9420, 0x40), 1), success) +mstore(0xa94a0, 0x26629aa7bed1fa4c132fde89850f3d59ae464b9d1e2acf1df144e0259c9f80ab) + mstore(0xa94c0, 0x0cc902013b8819a0a8debcaac2f05dbc4782b62e97c24cf47cf85069f8e219c7) +mstore(0xa94e0, mload(0x74460)) +success := and(eq(staticcall(gas(), 0x7, 0xa94a0, 0x60, 0xa94a0, 0x40), 1), success) +mstore(0xa9500, mload(0xa9420)) + mstore(0xa9520, mload(0xa9440)) +mstore(0xa9540, mload(0xa94a0)) + mstore(0xa9560, mload(0xa94c0)) +success := and(eq(staticcall(gas(), 0x6, 0xa9500, 0x80, 0xa9500, 0x40), 1), success) +mstore(0xa9580, 0x1ee9d33e1df8de6b785c77c9874009c8e15085129f4b328c856c6246b16ce8fb) + mstore(0xa95a0, 0x0a2b752601a61857466a2672afc4db9e664123b8e6c1b5ef6cb3fa30a0a33cf6) +mstore(0xa95c0, mload(0x74480)) +success := and(eq(staticcall(gas(), 0x7, 0xa9580, 0x60, 0xa9580, 0x40), 1), success) +mstore(0xa95e0, mload(0xa9500)) + mstore(0xa9600, mload(0xa9520)) +mstore(0xa9620, mload(0xa9580)) + mstore(0xa9640, mload(0xa95a0)) +success := and(eq(staticcall(gas(), 0x6, 0xa95e0, 0x80, 0xa95e0, 0x40), 1), success) +mstore(0xa9660, 0x079348688c5ee635962e34f8f35f846a0bc591c60a2d7568202b3796cc05a61f) + mstore(0xa9680, 0x04f9a40e2938ba58d527b58d300ba616b6cf38915fed6f7dfd7c948ba1080660) +mstore(0xa96a0, mload(0x744a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9660, 0x60, 0xa9660, 0x40), 1), success) +mstore(0xa96c0, mload(0xa95e0)) + mstore(0xa96e0, mload(0xa9600)) +mstore(0xa9700, mload(0xa9660)) + mstore(0xa9720, mload(0xa9680)) +success := and(eq(staticcall(gas(), 0x6, 0xa96c0, 0x80, 0xa96c0, 0x40), 1), success) +mstore(0xa9740, 0x28f155deb8e544cf47fb554db72ba8eb959b6be90a1b9cbbd5069993a3a8461f) + mstore(0xa9760, 0x154f66a2de923b9525419f30f928399ae6ee268e79486a3eec9b5afd61b6d1a3) +mstore(0xa9780, mload(0x744c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9740, 0x60, 0xa9740, 0x40), 1), success) +mstore(0xa97a0, mload(0xa96c0)) + mstore(0xa97c0, mload(0xa96e0)) +mstore(0xa97e0, mload(0xa9740)) + mstore(0xa9800, mload(0xa9760)) +success := and(eq(staticcall(gas(), 0x6, 0xa97a0, 0x80, 0xa97a0, 0x40), 1), success) +mstore(0xa9820, 0x2deef1533c464d363d056e8730010af27f9597bbceaf62f72157beb549d81244) + mstore(0xa9840, 0x2d38bf11eb2388e569af5408db71c92e9fa8f1a5cf70a3a7e24357010e3dbc48) +mstore(0xa9860, mload(0x744e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9820, 0x60, 0xa9820, 0x40), 1), success) +mstore(0xa9880, mload(0xa97a0)) + mstore(0xa98a0, mload(0xa97c0)) +mstore(0xa98c0, mload(0xa9820)) + mstore(0xa98e0, mload(0xa9840)) +success := and(eq(staticcall(gas(), 0x6, 0xa9880, 0x80, 0xa9880, 0x40), 1), success) +mstore(0xa9900, 0x1aa0b19cd3e7539509de83577cd2d6b43f5ac150c202361c388672da131a077a) + mstore(0xa9920, 0x2070b38c7c679e6c626319aba680e744d3f3d2b30267dc9b0ac897cb3c7ef581) +mstore(0xa9940, mload(0x74500)) +success := and(eq(staticcall(gas(), 0x7, 0xa9900, 0x60, 0xa9900, 0x40), 1), success) +mstore(0xa9960, mload(0xa9880)) + mstore(0xa9980, mload(0xa98a0)) +mstore(0xa99a0, mload(0xa9900)) + mstore(0xa99c0, mload(0xa9920)) +success := and(eq(staticcall(gas(), 0x6, 0xa9960, 0x80, 0xa9960, 0x40), 1), success) +mstore(0xa99e0, 0x0b9d0cee9fe78b961d25744f9b566d016ef50deba64d9c064275ffa9b35351ef) + mstore(0xa9a00, 0x0f36164d36f5ce3a658b827fb3e138918303c4690fab9df86ea5257e1a1cff9a) +mstore(0xa9a20, mload(0x74520)) +success := and(eq(staticcall(gas(), 0x7, 0xa99e0, 0x60, 0xa99e0, 0x40), 1), success) +mstore(0xa9a40, mload(0xa9960)) + mstore(0xa9a60, mload(0xa9980)) +mstore(0xa9a80, mload(0xa99e0)) + mstore(0xa9aa0, mload(0xa9a00)) +success := and(eq(staticcall(gas(), 0x6, 0xa9a40, 0x80, 0xa9a40, 0x40), 1), success) +mstore(0xa9ac0, 0x1d9dcada2a2d164b46c46a1a0c0872153d60527bda6e61c1bd2cef72afaa9033) + mstore(0xa9ae0, 0x11a46ef5b1683874555deab0cf11e3516337c3a802e348e5557168cec98642e6) +mstore(0xa9b00, mload(0x74540)) +success := and(eq(staticcall(gas(), 0x7, 0xa9ac0, 0x60, 0xa9ac0, 0x40), 1), success) +mstore(0xa9b20, mload(0xa9a40)) + mstore(0xa9b40, mload(0xa9a60)) +mstore(0xa9b60, mload(0xa9ac0)) + mstore(0xa9b80, mload(0xa9ae0)) +success := and(eq(staticcall(gas(), 0x6, 0xa9b20, 0x80, 0xa9b20, 0x40), 1), success) +mstore(0xa9ba0, 0x1ebb61c86640b2816f4e598f7dba8199b54cfd51b52e83100c83d9a2c2dd716a) + mstore(0xa9bc0, 0x12ebc302c1926c9ae650cfcbad1b1903586ae4644af12819bcd83b6f9d0c0ca6) +mstore(0xa9be0, mload(0x74560)) +success := and(eq(staticcall(gas(), 0x7, 0xa9ba0, 0x60, 0xa9ba0, 0x40), 1), success) +mstore(0xa9c00, mload(0xa9b20)) + mstore(0xa9c20, mload(0xa9b40)) +mstore(0xa9c40, mload(0xa9ba0)) + mstore(0xa9c60, mload(0xa9bc0)) +success := and(eq(staticcall(gas(), 0x6, 0xa9c00, 0x80, 0xa9c00, 0x40), 1), success) +mstore(0xa9c80, 0x03432935bc1a61db347b113ab6365bc4ca41db465585cafdfc4481ff14381040) + mstore(0xa9ca0, 0x2678cc9038866ac137a7d314cebc9bb541eb8b91efa64f81c841ecc29b49413a) +mstore(0xa9cc0, mload(0x74580)) +success := and(eq(staticcall(gas(), 0x7, 0xa9c80, 0x60, 0xa9c80, 0x40), 1), success) +mstore(0xa9ce0, mload(0xa9c00)) + mstore(0xa9d00, mload(0xa9c20)) +mstore(0xa9d20, mload(0xa9c80)) + mstore(0xa9d40, mload(0xa9ca0)) +success := and(eq(staticcall(gas(), 0x6, 0xa9ce0, 0x80, 0xa9ce0, 0x40), 1), success) +mstore(0xa9d60, 0x259e14257444b2025c3bb5823e095ae6a33c9a01ac57876cf03489418c4277ac) + mstore(0xa9d80, 0x1b5027dbb249ba95cb935fac77c88fee8e1ec44862d1c521b4739ee6acb692ed) +mstore(0xa9da0, mload(0x745a0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9d60, 0x60, 0xa9d60, 0x40), 1), success) +mstore(0xa9dc0, mload(0xa9ce0)) + mstore(0xa9de0, mload(0xa9d00)) +mstore(0xa9e00, mload(0xa9d60)) + mstore(0xa9e20, mload(0xa9d80)) +success := and(eq(staticcall(gas(), 0x6, 0xa9dc0, 0x80, 0xa9dc0, 0x40), 1), success) +mstore(0xa9e40, 0x07fa2894707fcf04994fc0a2da259de53fc5603749441ec1fa37539a57633b41) + mstore(0xa9e60, 0x12f13c87ca09e9d9756b6886899ce47dcf754d3067853bb4f1313f17fd4ee89a) +mstore(0xa9e80, mload(0x745c0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9e40, 0x60, 0xa9e40, 0x40), 1), success) +mstore(0xa9ea0, mload(0xa9dc0)) + mstore(0xa9ec0, mload(0xa9de0)) +mstore(0xa9ee0, mload(0xa9e40)) + mstore(0xa9f00, mload(0xa9e60)) +success := and(eq(staticcall(gas(), 0x6, 0xa9ea0, 0x80, 0xa9ea0, 0x40), 1), success) +mstore(0xa9f20, 0x1a21c5f1091d3b43beaf52a24a6e28c00400dfb8717fd134f260182af9b872c8) + mstore(0xa9f40, 0x0843fb6c394eac4486d0d48bc8b313b3608d4f089d5f08c913ee21b06b35ad68) +mstore(0xa9f60, mload(0x745e0)) +success := and(eq(staticcall(gas(), 0x7, 0xa9f20, 0x60, 0xa9f20, 0x40), 1), success) +mstore(0xa9f80, mload(0xa9ea0)) + mstore(0xa9fa0, mload(0xa9ec0)) +mstore(0xa9fc0, mload(0xa9f20)) + mstore(0xa9fe0, mload(0xa9f40)) +success := and(eq(staticcall(gas(), 0x6, 0xa9f80, 0x80, 0xa9f80, 0x40), 1), success) +mstore(0xaa000, 0x176d079413ed2b3bdd3f85cf742ffd8d0b6164b9f0bae06c05256a69c71b192b) + mstore(0xaa020, 0x191352151ab641ad7640879d587dea03b3578b1ef8eddd2ae07958b3328b1788) +mstore(0xaa040, mload(0x74600)) +success := and(eq(staticcall(gas(), 0x7, 0xaa000, 0x60, 0xaa000, 0x40), 1), success) +mstore(0xaa060, mload(0xa9f80)) + mstore(0xaa080, mload(0xa9fa0)) +mstore(0xaa0a0, mload(0xaa000)) + mstore(0xaa0c0, mload(0xaa020)) +success := and(eq(staticcall(gas(), 0x6, 0xaa060, 0x80, 0xaa060, 0x40), 1), success) +mstore(0xaa0e0, 0x01b0c434bcc3091e86f397950ee6e791c9fdfd994c1c56bc2b82bd411044bd64) + mstore(0xaa100, 0x086e6d2ba5dc40c222e817955f57f24f3557cf26827ee0218d821f65c34a047d) +mstore(0xaa120, mload(0x74620)) +success := and(eq(staticcall(gas(), 0x7, 0xaa0e0, 0x60, 0xaa0e0, 0x40), 1), success) +mstore(0xaa140, mload(0xaa060)) + mstore(0xaa160, mload(0xaa080)) +mstore(0xaa180, mload(0xaa0e0)) + mstore(0xaa1a0, mload(0xaa100)) +success := and(eq(staticcall(gas(), 0x6, 0xaa140, 0x80, 0xaa140, 0x40), 1), success) +mstore(0xaa1c0, 0x0bb34b48c2df75b3643e55297985ae716e17204f15209d8f4615fe6b6256aa2a) + mstore(0xaa1e0, 0x2280563ef67b8a46c7b13c6dbcd063a988fa96efb99b6cbba80a1913d09d63de) +mstore(0xaa200, mload(0x74640)) +success := and(eq(staticcall(gas(), 0x7, 0xaa1c0, 0x60, 0xaa1c0, 0x40), 1), success) +mstore(0xaa220, mload(0xaa140)) + mstore(0xaa240, mload(0xaa160)) +mstore(0xaa260, mload(0xaa1c0)) + mstore(0xaa280, mload(0xaa1e0)) +success := and(eq(staticcall(gas(), 0x6, 0xaa220, 0x80, 0xaa220, 0x40), 1), success) +mstore(0xaa2a0, 0x2e785879e3db638a3319b49d68a3aaf12a420af0f88bf4927af4d18cbab5a2b8) + mstore(0xaa2c0, 0x1973ecb7a4dcb438602d34b9ec0bbdfbee5bb14299e39d61f7c607a899d6ba7f) +mstore(0xaa2e0, mload(0x74660)) +success := and(eq(staticcall(gas(), 0x7, 0xaa2a0, 0x60, 0xaa2a0, 0x40), 1), success) +mstore(0xaa300, mload(0xaa220)) + mstore(0xaa320, mload(0xaa240)) +mstore(0xaa340, mload(0xaa2a0)) + mstore(0xaa360, mload(0xaa2c0)) +success := and(eq(staticcall(gas(), 0x6, 0xaa300, 0x80, 0xaa300, 0x40), 1), success) +mstore(0xaa380, 0x29488a5ba22734041bfa4d37ba63153d09100c78b615eabc2cd8a37d90195004) + mstore(0xaa3a0, 0x0f67d722d2053310f37e5d1f1414c8a04bf4b5552ca42f8afa2728fe7b05c0d2) +mstore(0xaa3c0, mload(0x74680)) +success := and(eq(staticcall(gas(), 0x7, 0xaa380, 0x60, 0xaa380, 0x40), 1), success) +mstore(0xaa3e0, mload(0xaa300)) + mstore(0xaa400, mload(0xaa320)) +mstore(0xaa420, mload(0xaa380)) + mstore(0xaa440, mload(0xaa3a0)) +success := and(eq(staticcall(gas(), 0x6, 0xaa3e0, 0x80, 0xaa3e0, 0x40), 1), success) +mstore(0xaa460, 0x1a58da1f677eb02bc3a97532393bf6481cb09abc41b6d9e64fa8ebb4a5ffce65) + mstore(0xaa480, 0x05da0cb9e4976833debda336b6a3ca352d663d38bbf565305326f0b19b530f4d) +mstore(0xaa4a0, mload(0x746a0)) +success := and(eq(staticcall(gas(), 0x7, 0xaa460, 0x60, 0xaa460, 0x40), 1), success) +mstore(0xaa4c0, mload(0xaa3e0)) + mstore(0xaa4e0, mload(0xaa400)) +mstore(0xaa500, mload(0xaa460)) + mstore(0xaa520, mload(0xaa480)) +success := and(eq(staticcall(gas(), 0x6, 0xaa4c0, 0x80, 0xaa4c0, 0x40), 1), success) +mstore(0xaa540, 0x262463cae690f3a240aa2462ff7514b57d754bb56df7a86877405390aae686ff) + mstore(0xaa560, 0x2014effd14a231cf7798fd188eae2123eafc7f7c7122ae90d10b5b3b1dfa1a59) +mstore(0xaa580, mload(0x746c0)) +success := and(eq(staticcall(gas(), 0x7, 0xaa540, 0x60, 0xaa540, 0x40), 1), success) +mstore(0xaa5a0, mload(0xaa4c0)) + mstore(0xaa5c0, mload(0xaa4e0)) +mstore(0xaa5e0, mload(0xaa540)) + mstore(0xaa600, mload(0xaa560)) +success := and(eq(staticcall(gas(), 0x6, 0xaa5a0, 0x80, 0xaa5a0, 0x40), 1), success) +mstore(0xaa620, mload(0x80a0)) + mstore(0xaa640, mload(0x80c0)) +mstore(0xaa660, mload(0x746e0)) +success := and(eq(staticcall(gas(), 0x7, 0xaa620, 0x60, 0xaa620, 0x40), 1), success) +mstore(0xaa680, mload(0xaa5a0)) + mstore(0xaa6a0, mload(0xaa5c0)) +mstore(0xaa6c0, mload(0xaa620)) + mstore(0xaa6e0, mload(0xaa640)) +success := and(eq(staticcall(gas(), 0x6, 0xaa680, 0x80, 0xaa680, 0x40), 1), success) +mstore(0xaa700, mload(0x80e0)) + mstore(0xaa720, mload(0x8100)) +mstore(0xaa740, mload(0x74700)) +success := and(eq(staticcall(gas(), 0x7, 0xaa700, 0x60, 0xaa700, 0x40), 1), success) +mstore(0xaa760, mload(0xaa680)) + mstore(0xaa780, mload(0xaa6a0)) +mstore(0xaa7a0, mload(0xaa700)) + mstore(0xaa7c0, mload(0xaa720)) +success := and(eq(staticcall(gas(), 0x6, 0xaa760, 0x80, 0xaa760, 0x40), 1), success) +mstore(0xaa7e0, mload(0x8120)) + mstore(0xaa800, mload(0x8140)) +mstore(0xaa820, mload(0x74720)) +success := and(eq(staticcall(gas(), 0x7, 0xaa7e0, 0x60, 0xaa7e0, 0x40), 1), success) +mstore(0xaa840, mload(0xaa760)) + mstore(0xaa860, mload(0xaa780)) +mstore(0xaa880, mload(0xaa7e0)) + mstore(0xaa8a0, mload(0xaa800)) +success := and(eq(staticcall(gas(), 0x6, 0xaa840, 0x80, 0xaa840, 0x40), 1), success) +mstore(0xaa8c0, mload(0x8000)) + mstore(0xaa8e0, mload(0x8020)) +mstore(0xaa900, mload(0x74740)) +success := and(eq(staticcall(gas(), 0x7, 0xaa8c0, 0x60, 0xaa8c0, 0x40), 1), success) +mstore(0xaa920, mload(0xaa840)) + mstore(0xaa940, mload(0xaa860)) +mstore(0xaa960, mload(0xaa8c0)) + mstore(0xaa980, mload(0xaa8e0)) +success := and(eq(staticcall(gas(), 0x6, 0xaa920, 0x80, 0xaa920, 0x40), 1), success) +mstore(0xaa9a0, mload(0x55c0)) + mstore(0xaa9c0, mload(0x55e0)) +mstore(0xaa9e0, mload(0x79e80)) +success := and(eq(staticcall(gas(), 0x7, 0xaa9a0, 0x60, 0xaa9a0, 0x40), 1), success) +mstore(0xaaa00, mload(0xaa920)) + mstore(0xaaa20, mload(0xaa940)) +mstore(0xaaa40, mload(0xaa9a0)) + mstore(0xaaa60, mload(0xaa9c0)) +success := and(eq(staticcall(gas(), 0x6, 0xaaa00, 0x80, 0xaaa00, 0x40), 1), success) +mstore(0xaaa80, mload(0x5600)) + mstore(0xaaaa0, mload(0x5620)) +mstore(0xaaac0, mload(0x79ea0)) +success := and(eq(staticcall(gas(), 0x7, 0xaaa80, 0x60, 0xaaa80, 0x40), 1), success) +mstore(0xaaae0, mload(0xaaa00)) + mstore(0xaab00, mload(0xaaa20)) +mstore(0xaab20, mload(0xaaa80)) + mstore(0xaab40, mload(0xaaaa0)) +success := and(eq(staticcall(gas(), 0x6, 0xaaae0, 0x80, 0xaaae0, 0x40), 1), success) +mstore(0xaab60, mload(0x5640)) + mstore(0xaab80, mload(0x5660)) +mstore(0xaaba0, mload(0x79ec0)) +success := and(eq(staticcall(gas(), 0x7, 0xaab60, 0x60, 0xaab60, 0x40), 1), success) +mstore(0xaabc0, mload(0xaaae0)) + mstore(0xaabe0, mload(0xaab00)) +mstore(0xaac00, mload(0xaab60)) + mstore(0xaac20, mload(0xaab80)) +success := and(eq(staticcall(gas(), 0x6, 0xaabc0, 0x80, 0xaabc0, 0x40), 1), success) +mstore(0xaac40, mload(0x5680)) + mstore(0xaac60, mload(0x56a0)) +mstore(0xaac80, mload(0x79ee0)) +success := and(eq(staticcall(gas(), 0x7, 0xaac40, 0x60, 0xaac40, 0x40), 1), success) +mstore(0xaaca0, mload(0xaabc0)) + mstore(0xaacc0, mload(0xaabe0)) +mstore(0xaace0, mload(0xaac40)) + mstore(0xaad00, mload(0xaac60)) +success := and(eq(staticcall(gas(), 0x6, 0xaaca0, 0x80, 0xaaca0, 0x40), 1), success) +mstore(0xaad20, mload(0x56c0)) + mstore(0xaad40, mload(0x56e0)) +mstore(0xaad60, mload(0x79f00)) +success := and(eq(staticcall(gas(), 0x7, 0xaad20, 0x60, 0xaad20, 0x40), 1), success) +mstore(0xaad80, mload(0xaaca0)) + mstore(0xaada0, mload(0xaacc0)) +mstore(0xaadc0, mload(0xaad20)) + mstore(0xaade0, mload(0xaad40)) +success := and(eq(staticcall(gas(), 0x6, 0xaad80, 0x80, 0xaad80, 0x40), 1), success) +mstore(0xaae00, mload(0x5700)) + mstore(0xaae20, mload(0x5720)) +mstore(0xaae40, mload(0x79f20)) +success := and(eq(staticcall(gas(), 0x7, 0xaae00, 0x60, 0xaae00, 0x40), 1), success) +mstore(0xaae60, mload(0xaad80)) + mstore(0xaae80, mload(0xaada0)) +mstore(0xaaea0, mload(0xaae00)) + mstore(0xaaec0, mload(0xaae20)) +success := and(eq(staticcall(gas(), 0x6, 0xaae60, 0x80, 0xaae60, 0x40), 1), success) +mstore(0xaaee0, mload(0x5740)) + mstore(0xaaf00, mload(0x5760)) +mstore(0xaaf20, mload(0x79f40)) +success := and(eq(staticcall(gas(), 0x7, 0xaaee0, 0x60, 0xaaee0, 0x40), 1), success) +mstore(0xaaf40, mload(0xaae60)) + mstore(0xaaf60, mload(0xaae80)) +mstore(0xaaf80, mload(0xaaee0)) + mstore(0xaafa0, mload(0xaaf00)) +success := and(eq(staticcall(gas(), 0x6, 0xaaf40, 0x80, 0xaaf40, 0x40), 1), success) +mstore(0xaafc0, mload(0x5780)) + mstore(0xaafe0, mload(0x57a0)) +mstore(0xab000, mload(0x79f60)) +success := and(eq(staticcall(gas(), 0x7, 0xaafc0, 0x60, 0xaafc0, 0x40), 1), success) +mstore(0xab020, mload(0xaaf40)) + mstore(0xab040, mload(0xaaf60)) +mstore(0xab060, mload(0xaafc0)) + mstore(0xab080, mload(0xaafe0)) +success := and(eq(staticcall(gas(), 0x6, 0xab020, 0x80, 0xab020, 0x40), 1), success) +mstore(0xab0a0, mload(0x57c0)) + mstore(0xab0c0, mload(0x57e0)) +mstore(0xab0e0, mload(0x79f80)) +success := and(eq(staticcall(gas(), 0x7, 0xab0a0, 0x60, 0xab0a0, 0x40), 1), success) +mstore(0xab100, mload(0xab020)) + mstore(0xab120, mload(0xab040)) +mstore(0xab140, mload(0xab0a0)) + mstore(0xab160, mload(0xab0c0)) +success := and(eq(staticcall(gas(), 0x6, 0xab100, 0x80, 0xab100, 0x40), 1), success) +mstore(0xab180, mload(0x5800)) + mstore(0xab1a0, mload(0x5820)) +mstore(0xab1c0, mload(0x79fa0)) +success := and(eq(staticcall(gas(), 0x7, 0xab180, 0x60, 0xab180, 0x40), 1), success) +mstore(0xab1e0, mload(0xab100)) + mstore(0xab200, mload(0xab120)) +mstore(0xab220, mload(0xab180)) + mstore(0xab240, mload(0xab1a0)) +success := and(eq(staticcall(gas(), 0x6, 0xab1e0, 0x80, 0xab1e0, 0x40), 1), success) +mstore(0xab260, mload(0x5840)) + mstore(0xab280, mload(0x5860)) +mstore(0xab2a0, mload(0x79fc0)) +success := and(eq(staticcall(gas(), 0x7, 0xab260, 0x60, 0xab260, 0x40), 1), success) +mstore(0xab2c0, mload(0xab1e0)) + mstore(0xab2e0, mload(0xab200)) +mstore(0xab300, mload(0xab260)) + mstore(0xab320, mload(0xab280)) +success := and(eq(staticcall(gas(), 0x6, 0xab2c0, 0x80, 0xab2c0, 0x40), 1), success) +mstore(0xab340, mload(0x5880)) + mstore(0xab360, mload(0x58a0)) +mstore(0xab380, mload(0x79fe0)) +success := and(eq(staticcall(gas(), 0x7, 0xab340, 0x60, 0xab340, 0x40), 1), success) +mstore(0xab3a0, mload(0xab2c0)) + mstore(0xab3c0, mload(0xab2e0)) +mstore(0xab3e0, mload(0xab340)) + mstore(0xab400, mload(0xab360)) +success := and(eq(staticcall(gas(), 0x6, 0xab3a0, 0x80, 0xab3a0, 0x40), 1), success) +mstore(0xab420, mload(0x58c0)) + mstore(0xab440, mload(0x58e0)) +mstore(0xab460, mload(0x7a000)) +success := and(eq(staticcall(gas(), 0x7, 0xab420, 0x60, 0xab420, 0x40), 1), success) +mstore(0xab480, mload(0xab3a0)) + mstore(0xab4a0, mload(0xab3c0)) +mstore(0xab4c0, mload(0xab420)) + mstore(0xab4e0, mload(0xab440)) +success := and(eq(staticcall(gas(), 0x6, 0xab480, 0x80, 0xab480, 0x40), 1), success) +mstore(0xab500, mload(0x5900)) + mstore(0xab520, mload(0x5920)) +mstore(0xab540, mload(0x7a020)) +success := and(eq(staticcall(gas(), 0x7, 0xab500, 0x60, 0xab500, 0x40), 1), success) +mstore(0xab560, mload(0xab480)) + mstore(0xab580, mload(0xab4a0)) +mstore(0xab5a0, mload(0xab500)) + mstore(0xab5c0, mload(0xab520)) +success := and(eq(staticcall(gas(), 0x6, 0xab560, 0x80, 0xab560, 0x40), 1), success) +mstore(0xab5e0, mload(0x5940)) + mstore(0xab600, mload(0x5960)) +mstore(0xab620, mload(0x7a040)) +success := and(eq(staticcall(gas(), 0x7, 0xab5e0, 0x60, 0xab5e0, 0x40), 1), success) +mstore(0xab640, mload(0xab560)) + mstore(0xab660, mload(0xab580)) +mstore(0xab680, mload(0xab5e0)) + mstore(0xab6a0, mload(0xab600)) +success := and(eq(staticcall(gas(), 0x6, 0xab640, 0x80, 0xab640, 0x40), 1), success) +mstore(0xab6c0, mload(0x5980)) + mstore(0xab6e0, mload(0x59a0)) +mstore(0xab700, mload(0x7a060)) +success := and(eq(staticcall(gas(), 0x7, 0xab6c0, 0x60, 0xab6c0, 0x40), 1), success) +mstore(0xab720, mload(0xab640)) + mstore(0xab740, mload(0xab660)) +mstore(0xab760, mload(0xab6c0)) + mstore(0xab780, mload(0xab6e0)) +success := and(eq(staticcall(gas(), 0x6, 0xab720, 0x80, 0xab720, 0x40), 1), success) +mstore(0xab7a0, mload(0x59c0)) + mstore(0xab7c0, mload(0x59e0)) +mstore(0xab7e0, mload(0x7a080)) +success := and(eq(staticcall(gas(), 0x7, 0xab7a0, 0x60, 0xab7a0, 0x40), 1), success) +mstore(0xab800, mload(0xab720)) + mstore(0xab820, mload(0xab740)) +mstore(0xab840, mload(0xab7a0)) + mstore(0xab860, mload(0xab7c0)) +success := and(eq(staticcall(gas(), 0x6, 0xab800, 0x80, 0xab800, 0x40), 1), success) +mstore(0xab880, mload(0x5a00)) + mstore(0xab8a0, mload(0x5a20)) +mstore(0xab8c0, mload(0x7a0a0)) +success := and(eq(staticcall(gas(), 0x7, 0xab880, 0x60, 0xab880, 0x40), 1), success) +mstore(0xab8e0, mload(0xab800)) + mstore(0xab900, mload(0xab820)) +mstore(0xab920, mload(0xab880)) + mstore(0xab940, mload(0xab8a0)) +success := and(eq(staticcall(gas(), 0x6, 0xab8e0, 0x80, 0xab8e0, 0x40), 1), success) +mstore(0xab960, mload(0x5a40)) + mstore(0xab980, mload(0x5a60)) +mstore(0xab9a0, mload(0x7a0c0)) +success := and(eq(staticcall(gas(), 0x7, 0xab960, 0x60, 0xab960, 0x40), 1), success) +mstore(0xab9c0, mload(0xab8e0)) + mstore(0xab9e0, mload(0xab900)) +mstore(0xaba00, mload(0xab960)) + mstore(0xaba20, mload(0xab980)) +success := and(eq(staticcall(gas(), 0x6, 0xab9c0, 0x80, 0xab9c0, 0x40), 1), success) +mstore(0xaba40, mload(0x5a80)) + mstore(0xaba60, mload(0x5aa0)) +mstore(0xaba80, mload(0x7a0e0)) +success := and(eq(staticcall(gas(), 0x7, 0xaba40, 0x60, 0xaba40, 0x40), 1), success) +mstore(0xabaa0, mload(0xab9c0)) + mstore(0xabac0, mload(0xab9e0)) +mstore(0xabae0, mload(0xaba40)) + mstore(0xabb00, mload(0xaba60)) +success := and(eq(staticcall(gas(), 0x6, 0xabaa0, 0x80, 0xabaa0, 0x40), 1), success) +mstore(0xabb20, mload(0x5ac0)) + mstore(0xabb40, mload(0x5ae0)) +mstore(0xabb60, mload(0x7a100)) +success := and(eq(staticcall(gas(), 0x7, 0xabb20, 0x60, 0xabb20, 0x40), 1), success) +mstore(0xabb80, mload(0xabaa0)) + mstore(0xabba0, mload(0xabac0)) +mstore(0xabbc0, mload(0xabb20)) + mstore(0xabbe0, mload(0xabb40)) +success := and(eq(staticcall(gas(), 0x6, 0xabb80, 0x80, 0xabb80, 0x40), 1), success) +mstore(0xabc00, mload(0x5b00)) + mstore(0xabc20, mload(0x5b20)) +mstore(0xabc40, mload(0x7a120)) +success := and(eq(staticcall(gas(), 0x7, 0xabc00, 0x60, 0xabc00, 0x40), 1), success) +mstore(0xabc60, mload(0xabb80)) + mstore(0xabc80, mload(0xabba0)) +mstore(0xabca0, mload(0xabc00)) + mstore(0xabcc0, mload(0xabc20)) +success := and(eq(staticcall(gas(), 0x6, 0xabc60, 0x80, 0xabc60, 0x40), 1), success) +mstore(0xabce0, mload(0x5b40)) + mstore(0xabd00, mload(0x5b60)) +mstore(0xabd20, mload(0x7a140)) +success := and(eq(staticcall(gas(), 0x7, 0xabce0, 0x60, 0xabce0, 0x40), 1), success) +mstore(0xabd40, mload(0xabc60)) + mstore(0xabd60, mload(0xabc80)) +mstore(0xabd80, mload(0xabce0)) + mstore(0xabda0, mload(0xabd00)) +success := and(eq(staticcall(gas(), 0x6, 0xabd40, 0x80, 0xabd40, 0x40), 1), success) +mstore(0xabdc0, mload(0x5b80)) + mstore(0xabde0, mload(0x5ba0)) +mstore(0xabe00, mload(0x7a160)) +success := and(eq(staticcall(gas(), 0x7, 0xabdc0, 0x60, 0xabdc0, 0x40), 1), success) +mstore(0xabe20, mload(0xabd40)) + mstore(0xabe40, mload(0xabd60)) +mstore(0xabe60, mload(0xabdc0)) + mstore(0xabe80, mload(0xabde0)) +success := and(eq(staticcall(gas(), 0x6, 0xabe20, 0x80, 0xabe20, 0x40), 1), success) +mstore(0xabea0, mload(0x5bc0)) + mstore(0xabec0, mload(0x5be0)) +mstore(0xabee0, mload(0x7a180)) +success := and(eq(staticcall(gas(), 0x7, 0xabea0, 0x60, 0xabea0, 0x40), 1), success) +mstore(0xabf00, mload(0xabe20)) + mstore(0xabf20, mload(0xabe40)) +mstore(0xabf40, mload(0xabea0)) + mstore(0xabf60, mload(0xabec0)) +success := and(eq(staticcall(gas(), 0x6, 0xabf00, 0x80, 0xabf00, 0x40), 1), success) +mstore(0xabf80, mload(0x5c00)) + mstore(0xabfa0, mload(0x5c20)) +mstore(0xabfc0, mload(0x7a1a0)) +success := and(eq(staticcall(gas(), 0x7, 0xabf80, 0x60, 0xabf80, 0x40), 1), success) +mstore(0xabfe0, mload(0xabf00)) + mstore(0xac000, mload(0xabf20)) +mstore(0xac020, mload(0xabf80)) + mstore(0xac040, mload(0xabfa0)) +success := and(eq(staticcall(gas(), 0x6, 0xabfe0, 0x80, 0xabfe0, 0x40), 1), success) +mstore(0xac060, mload(0x5c40)) + mstore(0xac080, mload(0x5c60)) +mstore(0xac0a0, mload(0x7a1c0)) +success := and(eq(staticcall(gas(), 0x7, 0xac060, 0x60, 0xac060, 0x40), 1), success) +mstore(0xac0c0, mload(0xabfe0)) + mstore(0xac0e0, mload(0xac000)) +mstore(0xac100, mload(0xac060)) + mstore(0xac120, mload(0xac080)) +success := and(eq(staticcall(gas(), 0x6, 0xac0c0, 0x80, 0xac0c0, 0x40), 1), success) +mstore(0xac140, mload(0x5c80)) + mstore(0xac160, mload(0x5ca0)) +mstore(0xac180, mload(0x7a1e0)) +success := and(eq(staticcall(gas(), 0x7, 0xac140, 0x60, 0xac140, 0x40), 1), success) +mstore(0xac1a0, mload(0xac0c0)) + mstore(0xac1c0, mload(0xac0e0)) +mstore(0xac1e0, mload(0xac140)) + mstore(0xac200, mload(0xac160)) +success := and(eq(staticcall(gas(), 0x6, 0xac1a0, 0x80, 0xac1a0, 0x40), 1), success) +mstore(0xac220, mload(0x5cc0)) + mstore(0xac240, mload(0x5ce0)) +mstore(0xac260, mload(0x7a200)) +success := and(eq(staticcall(gas(), 0x7, 0xac220, 0x60, 0xac220, 0x40), 1), success) +mstore(0xac280, mload(0xac1a0)) + mstore(0xac2a0, mload(0xac1c0)) +mstore(0xac2c0, mload(0xac220)) + mstore(0xac2e0, mload(0xac240)) +success := and(eq(staticcall(gas(), 0x6, 0xac280, 0x80, 0xac280, 0x40), 1), success) +mstore(0xac300, mload(0x5d00)) + mstore(0xac320, mload(0x5d20)) +mstore(0xac340, mload(0x7a220)) +success := and(eq(staticcall(gas(), 0x7, 0xac300, 0x60, 0xac300, 0x40), 1), success) +mstore(0xac360, mload(0xac280)) + mstore(0xac380, mload(0xac2a0)) +mstore(0xac3a0, mload(0xac300)) + mstore(0xac3c0, mload(0xac320)) +success := and(eq(staticcall(gas(), 0x6, 0xac360, 0x80, 0xac360, 0x40), 1), success) +mstore(0xac3e0, mload(0x5d40)) + mstore(0xac400, mload(0x5d60)) +mstore(0xac420, mload(0x7a240)) +success := and(eq(staticcall(gas(), 0x7, 0xac3e0, 0x60, 0xac3e0, 0x40), 1), success) +mstore(0xac440, mload(0xac360)) + mstore(0xac460, mload(0xac380)) +mstore(0xac480, mload(0xac3e0)) + mstore(0xac4a0, mload(0xac400)) +success := and(eq(staticcall(gas(), 0x6, 0xac440, 0x80, 0xac440, 0x40), 1), success) +mstore(0xac4c0, mload(0x5d80)) + mstore(0xac4e0, mload(0x5da0)) +mstore(0xac500, mload(0x7a260)) +success := and(eq(staticcall(gas(), 0x7, 0xac4c0, 0x60, 0xac4c0, 0x40), 1), success) +mstore(0xac520, mload(0xac440)) + mstore(0xac540, mload(0xac460)) +mstore(0xac560, mload(0xac4c0)) + mstore(0xac580, mload(0xac4e0)) +success := and(eq(staticcall(gas(), 0x6, 0xac520, 0x80, 0xac520, 0x40), 1), success) +mstore(0xac5a0, mload(0x5dc0)) + mstore(0xac5c0, mload(0x5de0)) +mstore(0xac5e0, mload(0x7a280)) +success := and(eq(staticcall(gas(), 0x7, 0xac5a0, 0x60, 0xac5a0, 0x40), 1), success) +mstore(0xac600, mload(0xac520)) + mstore(0xac620, mload(0xac540)) +mstore(0xac640, mload(0xac5a0)) + mstore(0xac660, mload(0xac5c0)) +success := and(eq(staticcall(gas(), 0x6, 0xac600, 0x80, 0xac600, 0x40), 1), success) +mstore(0xac680, mload(0x5e00)) + mstore(0xac6a0, mload(0x5e20)) +mstore(0xac6c0, mload(0x7a2a0)) +success := and(eq(staticcall(gas(), 0x7, 0xac680, 0x60, 0xac680, 0x40), 1), success) +mstore(0xac6e0, mload(0xac600)) + mstore(0xac700, mload(0xac620)) +mstore(0xac720, mload(0xac680)) + mstore(0xac740, mload(0xac6a0)) +success := and(eq(staticcall(gas(), 0x6, 0xac6e0, 0x80, 0xac6e0, 0x40), 1), success) +mstore(0xac760, mload(0x5e40)) + mstore(0xac780, mload(0x5e60)) +mstore(0xac7a0, mload(0x7a2c0)) +success := and(eq(staticcall(gas(), 0x7, 0xac760, 0x60, 0xac760, 0x40), 1), success) +mstore(0xac7c0, mload(0xac6e0)) + mstore(0xac7e0, mload(0xac700)) +mstore(0xac800, mload(0xac760)) + mstore(0xac820, mload(0xac780)) +success := and(eq(staticcall(gas(), 0x6, 0xac7c0, 0x80, 0xac7c0, 0x40), 1), success) +mstore(0xac840, mload(0x5e80)) + mstore(0xac860, mload(0x5ea0)) +mstore(0xac880, mload(0x7a2e0)) +success := and(eq(staticcall(gas(), 0x7, 0xac840, 0x60, 0xac840, 0x40), 1), success) +mstore(0xac8a0, mload(0xac7c0)) + mstore(0xac8c0, mload(0xac7e0)) +mstore(0xac8e0, mload(0xac840)) + mstore(0xac900, mload(0xac860)) +success := and(eq(staticcall(gas(), 0x6, 0xac8a0, 0x80, 0xac8a0, 0x40), 1), success) +mstore(0xac920, mload(0x5ec0)) + mstore(0xac940, mload(0x5ee0)) +mstore(0xac960, mload(0x7a300)) +success := and(eq(staticcall(gas(), 0x7, 0xac920, 0x60, 0xac920, 0x40), 1), success) +mstore(0xac980, mload(0xac8a0)) + mstore(0xac9a0, mload(0xac8c0)) +mstore(0xac9c0, mload(0xac920)) + mstore(0xac9e0, mload(0xac940)) +success := and(eq(staticcall(gas(), 0x6, 0xac980, 0x80, 0xac980, 0x40), 1), success) +mstore(0xaca00, mload(0x5f00)) + mstore(0xaca20, mload(0x5f20)) +mstore(0xaca40, mload(0x7a320)) +success := and(eq(staticcall(gas(), 0x7, 0xaca00, 0x60, 0xaca00, 0x40), 1), success) +mstore(0xaca60, mload(0xac980)) + mstore(0xaca80, mload(0xac9a0)) +mstore(0xacaa0, mload(0xaca00)) + mstore(0xacac0, mload(0xaca20)) +success := and(eq(staticcall(gas(), 0x6, 0xaca60, 0x80, 0xaca60, 0x40), 1), success) +mstore(0xacae0, mload(0x5f40)) + mstore(0xacb00, mload(0x5f60)) +mstore(0xacb20, mload(0x7a340)) +success := and(eq(staticcall(gas(), 0x7, 0xacae0, 0x60, 0xacae0, 0x40), 1), success) +mstore(0xacb40, mload(0xaca60)) + mstore(0xacb60, mload(0xaca80)) +mstore(0xacb80, mload(0xacae0)) + mstore(0xacba0, mload(0xacb00)) +success := and(eq(staticcall(gas(), 0x6, 0xacb40, 0x80, 0xacb40, 0x40), 1), success) +mstore(0xacbc0, mload(0x5f80)) + mstore(0xacbe0, mload(0x5fa0)) +mstore(0xacc00, mload(0x7a360)) +success := and(eq(staticcall(gas(), 0x7, 0xacbc0, 0x60, 0xacbc0, 0x40), 1), success) +mstore(0xacc20, mload(0xacb40)) + mstore(0xacc40, mload(0xacb60)) +mstore(0xacc60, mload(0xacbc0)) + mstore(0xacc80, mload(0xacbe0)) +success := and(eq(staticcall(gas(), 0x6, 0xacc20, 0x80, 0xacc20, 0x40), 1), success) +mstore(0xacca0, mload(0x5fc0)) + mstore(0xaccc0, mload(0x5fe0)) +mstore(0xacce0, mload(0x7a380)) +success := and(eq(staticcall(gas(), 0x7, 0xacca0, 0x60, 0xacca0, 0x40), 1), success) +mstore(0xacd00, mload(0xacc20)) + mstore(0xacd20, mload(0xacc40)) +mstore(0xacd40, mload(0xacca0)) + mstore(0xacd60, mload(0xaccc0)) +success := and(eq(staticcall(gas(), 0x6, 0xacd00, 0x80, 0xacd00, 0x40), 1), success) +mstore(0xacd80, mload(0x6000)) + mstore(0xacda0, mload(0x6020)) +mstore(0xacdc0, mload(0x7a3a0)) +success := and(eq(staticcall(gas(), 0x7, 0xacd80, 0x60, 0xacd80, 0x40), 1), success) +mstore(0xacde0, mload(0xacd00)) + mstore(0xace00, mload(0xacd20)) +mstore(0xace20, mload(0xacd80)) + mstore(0xace40, mload(0xacda0)) +success := and(eq(staticcall(gas(), 0x6, 0xacde0, 0x80, 0xacde0, 0x40), 1), success) +mstore(0xace60, mload(0x6040)) + mstore(0xace80, mload(0x6060)) +mstore(0xacea0, mload(0x7a3c0)) +success := and(eq(staticcall(gas(), 0x7, 0xace60, 0x60, 0xace60, 0x40), 1), success) +mstore(0xacec0, mload(0xacde0)) + mstore(0xacee0, mload(0xace00)) +mstore(0xacf00, mload(0xace60)) + mstore(0xacf20, mload(0xace80)) +success := and(eq(staticcall(gas(), 0x6, 0xacec0, 0x80, 0xacec0, 0x40), 1), success) +mstore(0xacf40, mload(0x6080)) + mstore(0xacf60, mload(0x60a0)) +mstore(0xacf80, mload(0x7a3e0)) +success := and(eq(staticcall(gas(), 0x7, 0xacf40, 0x60, 0xacf40, 0x40), 1), success) +mstore(0xacfa0, mload(0xacec0)) + mstore(0xacfc0, mload(0xacee0)) +mstore(0xacfe0, mload(0xacf40)) + mstore(0xad000, mload(0xacf60)) +success := and(eq(staticcall(gas(), 0x6, 0xacfa0, 0x80, 0xacfa0, 0x40), 1), success) +mstore(0xad020, mload(0x60c0)) + mstore(0xad040, mload(0x60e0)) +mstore(0xad060, mload(0x7a400)) +success := and(eq(staticcall(gas(), 0x7, 0xad020, 0x60, 0xad020, 0x40), 1), success) +mstore(0xad080, mload(0xacfa0)) + mstore(0xad0a0, mload(0xacfc0)) +mstore(0xad0c0, mload(0xad020)) + mstore(0xad0e0, mload(0xad040)) +success := and(eq(staticcall(gas(), 0x6, 0xad080, 0x80, 0xad080, 0x40), 1), success) +mstore(0xad100, mload(0x6100)) + mstore(0xad120, mload(0x6120)) +mstore(0xad140, mload(0x7a420)) +success := and(eq(staticcall(gas(), 0x7, 0xad100, 0x60, 0xad100, 0x40), 1), success) +mstore(0xad160, mload(0xad080)) + mstore(0xad180, mload(0xad0a0)) +mstore(0xad1a0, mload(0xad100)) + mstore(0xad1c0, mload(0xad120)) +success := and(eq(staticcall(gas(), 0x6, 0xad160, 0x80, 0xad160, 0x40), 1), success) +mstore(0xad1e0, mload(0x6140)) + mstore(0xad200, mload(0x6160)) +mstore(0xad220, mload(0x7a440)) +success := and(eq(staticcall(gas(), 0x7, 0xad1e0, 0x60, 0xad1e0, 0x40), 1), success) +mstore(0xad240, mload(0xad160)) + mstore(0xad260, mload(0xad180)) +mstore(0xad280, mload(0xad1e0)) + mstore(0xad2a0, mload(0xad200)) +success := and(eq(staticcall(gas(), 0x6, 0xad240, 0x80, 0xad240, 0x40), 1), success) +mstore(0xad2c0, mload(0x6180)) + mstore(0xad2e0, mload(0x61a0)) +mstore(0xad300, mload(0x7a460)) +success := and(eq(staticcall(gas(), 0x7, 0xad2c0, 0x60, 0xad2c0, 0x40), 1), success) +mstore(0xad320, mload(0xad240)) + mstore(0xad340, mload(0xad260)) +mstore(0xad360, mload(0xad2c0)) + mstore(0xad380, mload(0xad2e0)) +success := and(eq(staticcall(gas(), 0x6, 0xad320, 0x80, 0xad320, 0x40), 1), success) +mstore(0xad3a0, mload(0x61c0)) + mstore(0xad3c0, mload(0x61e0)) +mstore(0xad3e0, mload(0x7a480)) +success := and(eq(staticcall(gas(), 0x7, 0xad3a0, 0x60, 0xad3a0, 0x40), 1), success) +mstore(0xad400, mload(0xad320)) + mstore(0xad420, mload(0xad340)) +mstore(0xad440, mload(0xad3a0)) + mstore(0xad460, mload(0xad3c0)) +success := and(eq(staticcall(gas(), 0x6, 0xad400, 0x80, 0xad400, 0x40), 1), success) +mstore(0xad480, mload(0x6200)) + mstore(0xad4a0, mload(0x6220)) +mstore(0xad4c0, mload(0x7a4a0)) +success := and(eq(staticcall(gas(), 0x7, 0xad480, 0x60, 0xad480, 0x40), 1), success) +mstore(0xad4e0, mload(0xad400)) + mstore(0xad500, mload(0xad420)) +mstore(0xad520, mload(0xad480)) + mstore(0xad540, mload(0xad4a0)) +success := and(eq(staticcall(gas(), 0x6, 0xad4e0, 0x80, 0xad4e0, 0x40), 1), success) +mstore(0xad560, mload(0x6240)) + mstore(0xad580, mload(0x6260)) +mstore(0xad5a0, mload(0x7a4c0)) +success := and(eq(staticcall(gas(), 0x7, 0xad560, 0x60, 0xad560, 0x40), 1), success) +mstore(0xad5c0, mload(0xad4e0)) + mstore(0xad5e0, mload(0xad500)) +mstore(0xad600, mload(0xad560)) + mstore(0xad620, mload(0xad580)) +success := and(eq(staticcall(gas(), 0x6, 0xad5c0, 0x80, 0xad5c0, 0x40), 1), success) +mstore(0xad640, mload(0x6280)) + mstore(0xad660, mload(0x62a0)) +mstore(0xad680, mload(0x7a4e0)) +success := and(eq(staticcall(gas(), 0x7, 0xad640, 0x60, 0xad640, 0x40), 1), success) +mstore(0xad6a0, mload(0xad5c0)) + mstore(0xad6c0, mload(0xad5e0)) +mstore(0xad6e0, mload(0xad640)) + mstore(0xad700, mload(0xad660)) +success := and(eq(staticcall(gas(), 0x6, 0xad6a0, 0x80, 0xad6a0, 0x40), 1), success) +mstore(0xad720, mload(0x62c0)) + mstore(0xad740, mload(0x62e0)) +mstore(0xad760, mload(0x7a500)) +success := and(eq(staticcall(gas(), 0x7, 0xad720, 0x60, 0xad720, 0x40), 1), success) +mstore(0xad780, mload(0xad6a0)) + mstore(0xad7a0, mload(0xad6c0)) +mstore(0xad7c0, mload(0xad720)) + mstore(0xad7e0, mload(0xad740)) +success := and(eq(staticcall(gas(), 0x6, 0xad780, 0x80, 0xad780, 0x40), 1), success) +mstore(0xad800, mload(0x6300)) + mstore(0xad820, mload(0x6320)) +mstore(0xad840, mload(0x7a520)) +success := and(eq(staticcall(gas(), 0x7, 0xad800, 0x60, 0xad800, 0x40), 1), success) +mstore(0xad860, mload(0xad780)) + mstore(0xad880, mload(0xad7a0)) +mstore(0xad8a0, mload(0xad800)) + mstore(0xad8c0, mload(0xad820)) +success := and(eq(staticcall(gas(), 0x6, 0xad860, 0x80, 0xad860, 0x40), 1), success) +mstore(0xad8e0, mload(0x6340)) + mstore(0xad900, mload(0x6360)) +mstore(0xad920, mload(0x7a540)) +success := and(eq(staticcall(gas(), 0x7, 0xad8e0, 0x60, 0xad8e0, 0x40), 1), success) +mstore(0xad940, mload(0xad860)) + mstore(0xad960, mload(0xad880)) +mstore(0xad980, mload(0xad8e0)) + mstore(0xad9a0, mload(0xad900)) +success := and(eq(staticcall(gas(), 0x6, 0xad940, 0x80, 0xad940, 0x40), 1), success) +mstore(0xad9c0, mload(0x6380)) + mstore(0xad9e0, mload(0x63a0)) +mstore(0xada00, mload(0x7a560)) +success := and(eq(staticcall(gas(), 0x7, 0xad9c0, 0x60, 0xad9c0, 0x40), 1), success) +mstore(0xada20, mload(0xad940)) + mstore(0xada40, mload(0xad960)) +mstore(0xada60, mload(0xad9c0)) + mstore(0xada80, mload(0xad9e0)) +success := and(eq(staticcall(gas(), 0x6, 0xada20, 0x80, 0xada20, 0x40), 1), success) +mstore(0xadaa0, mload(0x63c0)) + mstore(0xadac0, mload(0x63e0)) +mstore(0xadae0, mload(0x7a580)) +success := and(eq(staticcall(gas(), 0x7, 0xadaa0, 0x60, 0xadaa0, 0x40), 1), success) +mstore(0xadb00, mload(0xada20)) + mstore(0xadb20, mload(0xada40)) +mstore(0xadb40, mload(0xadaa0)) + mstore(0xadb60, mload(0xadac0)) +success := and(eq(staticcall(gas(), 0x6, 0xadb00, 0x80, 0xadb00, 0x40), 1), success) +mstore(0xadb80, mload(0x6400)) + mstore(0xadba0, mload(0x6420)) +mstore(0xadbc0, mload(0x7a5a0)) +success := and(eq(staticcall(gas(), 0x7, 0xadb80, 0x60, 0xadb80, 0x40), 1), success) +mstore(0xadbe0, mload(0xadb00)) + mstore(0xadc00, mload(0xadb20)) +mstore(0xadc20, mload(0xadb80)) + mstore(0xadc40, mload(0xadba0)) +success := and(eq(staticcall(gas(), 0x6, 0xadbe0, 0x80, 0xadbe0, 0x40), 1), success) +mstore(0xadc60, mload(0x6440)) + mstore(0xadc80, mload(0x6460)) +mstore(0xadca0, mload(0x7a5c0)) +success := and(eq(staticcall(gas(), 0x7, 0xadc60, 0x60, 0xadc60, 0x40), 1), success) +mstore(0xadcc0, mload(0xadbe0)) + mstore(0xadce0, mload(0xadc00)) +mstore(0xadd00, mload(0xadc60)) + mstore(0xadd20, mload(0xadc80)) +success := and(eq(staticcall(gas(), 0x6, 0xadcc0, 0x80, 0xadcc0, 0x40), 1), success) +mstore(0xadd40, mload(0x6480)) + mstore(0xadd60, mload(0x64a0)) +mstore(0xadd80, mload(0x7a5e0)) +success := and(eq(staticcall(gas(), 0x7, 0xadd40, 0x60, 0xadd40, 0x40), 1), success) +mstore(0xadda0, mload(0xadcc0)) + mstore(0xaddc0, mload(0xadce0)) +mstore(0xadde0, mload(0xadd40)) + mstore(0xade00, mload(0xadd60)) +success := and(eq(staticcall(gas(), 0x6, 0xadda0, 0x80, 0xadda0, 0x40), 1), success) +mstore(0xade20, mload(0x64c0)) + mstore(0xade40, mload(0x64e0)) +mstore(0xade60, mload(0x7a600)) +success := and(eq(staticcall(gas(), 0x7, 0xade20, 0x60, 0xade20, 0x40), 1), success) +mstore(0xade80, mload(0xadda0)) + mstore(0xadea0, mload(0xaddc0)) +mstore(0xadec0, mload(0xade20)) + mstore(0xadee0, mload(0xade40)) +success := and(eq(staticcall(gas(), 0x6, 0xade80, 0x80, 0xade80, 0x40), 1), success) +mstore(0xadf00, mload(0x6500)) + mstore(0xadf20, mload(0x6520)) +mstore(0xadf40, mload(0x7a620)) +success := and(eq(staticcall(gas(), 0x7, 0xadf00, 0x60, 0xadf00, 0x40), 1), success) +mstore(0xadf60, mload(0xade80)) + mstore(0xadf80, mload(0xadea0)) +mstore(0xadfa0, mload(0xadf00)) + mstore(0xadfc0, mload(0xadf20)) +success := and(eq(staticcall(gas(), 0x6, 0xadf60, 0x80, 0xadf60, 0x40), 1), success) +mstore(0xadfe0, mload(0x6540)) + mstore(0xae000, mload(0x6560)) +mstore(0xae020, mload(0x7a640)) +success := and(eq(staticcall(gas(), 0x7, 0xadfe0, 0x60, 0xadfe0, 0x40), 1), success) +mstore(0xae040, mload(0xadf60)) + mstore(0xae060, mload(0xadf80)) +mstore(0xae080, mload(0xadfe0)) + mstore(0xae0a0, mload(0xae000)) +success := and(eq(staticcall(gas(), 0x6, 0xae040, 0x80, 0xae040, 0x40), 1), success) +mstore(0xae0c0, mload(0x6580)) + mstore(0xae0e0, mload(0x65a0)) +mstore(0xae100, mload(0x7a660)) +success := and(eq(staticcall(gas(), 0x7, 0xae0c0, 0x60, 0xae0c0, 0x40), 1), success) +mstore(0xae120, mload(0xae040)) + mstore(0xae140, mload(0xae060)) +mstore(0xae160, mload(0xae0c0)) + mstore(0xae180, mload(0xae0e0)) +success := and(eq(staticcall(gas(), 0x6, 0xae120, 0x80, 0xae120, 0x40), 1), success) +mstore(0xae1a0, mload(0x65c0)) + mstore(0xae1c0, mload(0x65e0)) +mstore(0xae1e0, mload(0x7a680)) +success := and(eq(staticcall(gas(), 0x7, 0xae1a0, 0x60, 0xae1a0, 0x40), 1), success) +mstore(0xae200, mload(0xae120)) + mstore(0xae220, mload(0xae140)) +mstore(0xae240, mload(0xae1a0)) + mstore(0xae260, mload(0xae1c0)) +success := and(eq(staticcall(gas(), 0x6, 0xae200, 0x80, 0xae200, 0x40), 1), success) +mstore(0xae280, mload(0x6600)) + mstore(0xae2a0, mload(0x6620)) +mstore(0xae2c0, mload(0x7a6a0)) +success := and(eq(staticcall(gas(), 0x7, 0xae280, 0x60, 0xae280, 0x40), 1), success) +mstore(0xae2e0, mload(0xae200)) + mstore(0xae300, mload(0xae220)) +mstore(0xae320, mload(0xae280)) + mstore(0xae340, mload(0xae2a0)) +success := and(eq(staticcall(gas(), 0x6, 0xae2e0, 0x80, 0xae2e0, 0x40), 1), success) +mstore(0xae360, mload(0x6640)) + mstore(0xae380, mload(0x6660)) +mstore(0xae3a0, mload(0x7a6c0)) +success := and(eq(staticcall(gas(), 0x7, 0xae360, 0x60, 0xae360, 0x40), 1), success) +mstore(0xae3c0, mload(0xae2e0)) + mstore(0xae3e0, mload(0xae300)) +mstore(0xae400, mload(0xae360)) + mstore(0xae420, mload(0xae380)) +success := and(eq(staticcall(gas(), 0x6, 0xae3c0, 0x80, 0xae3c0, 0x40), 1), success) +mstore(0xae440, mload(0x6680)) + mstore(0xae460, mload(0x66a0)) +mstore(0xae480, mload(0x7a6e0)) +success := and(eq(staticcall(gas(), 0x7, 0xae440, 0x60, 0xae440, 0x40), 1), success) +mstore(0xae4a0, mload(0xae3c0)) + mstore(0xae4c0, mload(0xae3e0)) +mstore(0xae4e0, mload(0xae440)) + mstore(0xae500, mload(0xae460)) +success := and(eq(staticcall(gas(), 0x6, 0xae4a0, 0x80, 0xae4a0, 0x40), 1), success) +mstore(0xae520, mload(0x66c0)) + mstore(0xae540, mload(0x66e0)) +mstore(0xae560, mload(0x7a700)) +success := and(eq(staticcall(gas(), 0x7, 0xae520, 0x60, 0xae520, 0x40), 1), success) +mstore(0xae580, mload(0xae4a0)) + mstore(0xae5a0, mload(0xae4c0)) +mstore(0xae5c0, mload(0xae520)) + mstore(0xae5e0, mload(0xae540)) +success := and(eq(staticcall(gas(), 0x6, 0xae580, 0x80, 0xae580, 0x40), 1), success) +mstore(0xae600, mload(0x6700)) + mstore(0xae620, mload(0x6720)) +mstore(0xae640, mload(0x7a720)) +success := and(eq(staticcall(gas(), 0x7, 0xae600, 0x60, 0xae600, 0x40), 1), success) +mstore(0xae660, mload(0xae580)) + mstore(0xae680, mload(0xae5a0)) +mstore(0xae6a0, mload(0xae600)) + mstore(0xae6c0, mload(0xae620)) +success := and(eq(staticcall(gas(), 0x6, 0xae660, 0x80, 0xae660, 0x40), 1), success) +mstore(0xae6e0, mload(0x6740)) + mstore(0xae700, mload(0x6760)) +mstore(0xae720, mload(0x7a740)) +success := and(eq(staticcall(gas(), 0x7, 0xae6e0, 0x60, 0xae6e0, 0x40), 1), success) +mstore(0xae740, mload(0xae660)) + mstore(0xae760, mload(0xae680)) +mstore(0xae780, mload(0xae6e0)) + mstore(0xae7a0, mload(0xae700)) +success := and(eq(staticcall(gas(), 0x6, 0xae740, 0x80, 0xae740, 0x40), 1), success) +mstore(0xae7c0, mload(0x6780)) + mstore(0xae7e0, mload(0x67a0)) +mstore(0xae800, mload(0x7a760)) +success := and(eq(staticcall(gas(), 0x7, 0xae7c0, 0x60, 0xae7c0, 0x40), 1), success) +mstore(0xae820, mload(0xae740)) + mstore(0xae840, mload(0xae760)) +mstore(0xae860, mload(0xae7c0)) + mstore(0xae880, mload(0xae7e0)) +success := and(eq(staticcall(gas(), 0x6, 0xae820, 0x80, 0xae820, 0x40), 1), success) +mstore(0xae8a0, mload(0x67c0)) + mstore(0xae8c0, mload(0x67e0)) +mstore(0xae8e0, mload(0x7a780)) +success := and(eq(staticcall(gas(), 0x7, 0xae8a0, 0x60, 0xae8a0, 0x40), 1), success) +mstore(0xae900, mload(0xae820)) + mstore(0xae920, mload(0xae840)) +mstore(0xae940, mload(0xae8a0)) + mstore(0xae960, mload(0xae8c0)) +success := and(eq(staticcall(gas(), 0x6, 0xae900, 0x80, 0xae900, 0x40), 1), success) +mstore(0xae980, mload(0x6800)) + mstore(0xae9a0, mload(0x6820)) +mstore(0xae9c0, mload(0x7a7a0)) +success := and(eq(staticcall(gas(), 0x7, 0xae980, 0x60, 0xae980, 0x40), 1), success) +mstore(0xae9e0, mload(0xae900)) + mstore(0xaea00, mload(0xae920)) +mstore(0xaea20, mload(0xae980)) + mstore(0xaea40, mload(0xae9a0)) +success := and(eq(staticcall(gas(), 0x6, 0xae9e0, 0x80, 0xae9e0, 0x40), 1), success) +mstore(0xaea60, mload(0x6840)) + mstore(0xaea80, mload(0x6860)) +mstore(0xaeaa0, mload(0x7a7c0)) +success := and(eq(staticcall(gas(), 0x7, 0xaea60, 0x60, 0xaea60, 0x40), 1), success) +mstore(0xaeac0, mload(0xae9e0)) + mstore(0xaeae0, mload(0xaea00)) +mstore(0xaeb00, mload(0xaea60)) + mstore(0xaeb20, mload(0xaea80)) +success := and(eq(staticcall(gas(), 0x6, 0xaeac0, 0x80, 0xaeac0, 0x40), 1), success) +mstore(0xaeb40, mload(0x6880)) + mstore(0xaeb60, mload(0x68a0)) +mstore(0xaeb80, mload(0x7a7e0)) +success := and(eq(staticcall(gas(), 0x7, 0xaeb40, 0x60, 0xaeb40, 0x40), 1), success) +mstore(0xaeba0, mload(0xaeac0)) + mstore(0xaebc0, mload(0xaeae0)) +mstore(0xaebe0, mload(0xaeb40)) + mstore(0xaec00, mload(0xaeb60)) +success := and(eq(staticcall(gas(), 0x6, 0xaeba0, 0x80, 0xaeba0, 0x40), 1), success) +mstore(0xaec20, mload(0x68c0)) + mstore(0xaec40, mload(0x68e0)) +mstore(0xaec60, mload(0x7a800)) +success := and(eq(staticcall(gas(), 0x7, 0xaec20, 0x60, 0xaec20, 0x40), 1), success) +mstore(0xaec80, mload(0xaeba0)) + mstore(0xaeca0, mload(0xaebc0)) +mstore(0xaecc0, mload(0xaec20)) + mstore(0xaece0, mload(0xaec40)) +success := and(eq(staticcall(gas(), 0x6, 0xaec80, 0x80, 0xaec80, 0x40), 1), success) +mstore(0xaed00, mload(0x6900)) + mstore(0xaed20, mload(0x6920)) +mstore(0xaed40, mload(0x7a820)) +success := and(eq(staticcall(gas(), 0x7, 0xaed00, 0x60, 0xaed00, 0x40), 1), success) +mstore(0xaed60, mload(0xaec80)) + mstore(0xaed80, mload(0xaeca0)) +mstore(0xaeda0, mload(0xaed00)) + mstore(0xaedc0, mload(0xaed20)) +success := and(eq(staticcall(gas(), 0x6, 0xaed60, 0x80, 0xaed60, 0x40), 1), success) +mstore(0xaede0, mload(0x6940)) + mstore(0xaee00, mload(0x6960)) +mstore(0xaee20, mload(0x7a840)) +success := and(eq(staticcall(gas(), 0x7, 0xaede0, 0x60, 0xaede0, 0x40), 1), success) +mstore(0xaee40, mload(0xaed60)) + mstore(0xaee60, mload(0xaed80)) +mstore(0xaee80, mload(0xaede0)) + mstore(0xaeea0, mload(0xaee00)) +success := and(eq(staticcall(gas(), 0x6, 0xaee40, 0x80, 0xaee40, 0x40), 1), success) +mstore(0xaeec0, mload(0x6980)) + mstore(0xaeee0, mload(0x69a0)) +mstore(0xaef00, mload(0x7a860)) +success := and(eq(staticcall(gas(), 0x7, 0xaeec0, 0x60, 0xaeec0, 0x40), 1), success) +mstore(0xaef20, mload(0xaee40)) + mstore(0xaef40, mload(0xaee60)) +mstore(0xaef60, mload(0xaeec0)) + mstore(0xaef80, mload(0xaeee0)) +success := and(eq(staticcall(gas(), 0x6, 0xaef20, 0x80, 0xaef20, 0x40), 1), success) +mstore(0xaefa0, mload(0x69c0)) + mstore(0xaefc0, mload(0x69e0)) +mstore(0xaefe0, mload(0x7a880)) +success := and(eq(staticcall(gas(), 0x7, 0xaefa0, 0x60, 0xaefa0, 0x40), 1), success) +mstore(0xaf000, mload(0xaef20)) + mstore(0xaf020, mload(0xaef40)) +mstore(0xaf040, mload(0xaefa0)) + mstore(0xaf060, mload(0xaefc0)) +success := and(eq(staticcall(gas(), 0x6, 0xaf000, 0x80, 0xaf000, 0x40), 1), success) +mstore(0xaf080, mload(0x6a00)) + mstore(0xaf0a0, mload(0x6a20)) +mstore(0xaf0c0, mload(0x7a8a0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf080, 0x60, 0xaf080, 0x40), 1), success) +mstore(0xaf0e0, mload(0xaf000)) + mstore(0xaf100, mload(0xaf020)) +mstore(0xaf120, mload(0xaf080)) + mstore(0xaf140, mload(0xaf0a0)) +success := and(eq(staticcall(gas(), 0x6, 0xaf0e0, 0x80, 0xaf0e0, 0x40), 1), success) +mstore(0xaf160, mload(0x6a40)) + mstore(0xaf180, mload(0x6a60)) +mstore(0xaf1a0, mload(0x7a8c0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf160, 0x60, 0xaf160, 0x40), 1), success) +mstore(0xaf1c0, mload(0xaf0e0)) + mstore(0xaf1e0, mload(0xaf100)) +mstore(0xaf200, mload(0xaf160)) + mstore(0xaf220, mload(0xaf180)) +success := and(eq(staticcall(gas(), 0x6, 0xaf1c0, 0x80, 0xaf1c0, 0x40), 1), success) +mstore(0xaf240, mload(0x6a80)) + mstore(0xaf260, mload(0x6aa0)) +mstore(0xaf280, mload(0x7a8e0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf240, 0x60, 0xaf240, 0x40), 1), success) +mstore(0xaf2a0, mload(0xaf1c0)) + mstore(0xaf2c0, mload(0xaf1e0)) +mstore(0xaf2e0, mload(0xaf240)) + mstore(0xaf300, mload(0xaf260)) +success := and(eq(staticcall(gas(), 0x6, 0xaf2a0, 0x80, 0xaf2a0, 0x40), 1), success) +mstore(0xaf320, mload(0x6ac0)) + mstore(0xaf340, mload(0x6ae0)) +mstore(0xaf360, mload(0x7a900)) +success := and(eq(staticcall(gas(), 0x7, 0xaf320, 0x60, 0xaf320, 0x40), 1), success) +mstore(0xaf380, mload(0xaf2a0)) + mstore(0xaf3a0, mload(0xaf2c0)) +mstore(0xaf3c0, mload(0xaf320)) + mstore(0xaf3e0, mload(0xaf340)) +success := and(eq(staticcall(gas(), 0x6, 0xaf380, 0x80, 0xaf380, 0x40), 1), success) +mstore(0xaf400, mload(0x6b00)) + mstore(0xaf420, mload(0x6b20)) +mstore(0xaf440, mload(0x7a920)) +success := and(eq(staticcall(gas(), 0x7, 0xaf400, 0x60, 0xaf400, 0x40), 1), success) +mstore(0xaf460, mload(0xaf380)) + mstore(0xaf480, mload(0xaf3a0)) +mstore(0xaf4a0, mload(0xaf400)) + mstore(0xaf4c0, mload(0xaf420)) +success := and(eq(staticcall(gas(), 0x6, 0xaf460, 0x80, 0xaf460, 0x40), 1), success) +mstore(0xaf4e0, mload(0x6b40)) + mstore(0xaf500, mload(0x6b60)) +mstore(0xaf520, mload(0x7a940)) +success := and(eq(staticcall(gas(), 0x7, 0xaf4e0, 0x60, 0xaf4e0, 0x40), 1), success) +mstore(0xaf540, mload(0xaf460)) + mstore(0xaf560, mload(0xaf480)) +mstore(0xaf580, mload(0xaf4e0)) + mstore(0xaf5a0, mload(0xaf500)) +success := and(eq(staticcall(gas(), 0x6, 0xaf540, 0x80, 0xaf540, 0x40), 1), success) +mstore(0xaf5c0, mload(0x6b80)) + mstore(0xaf5e0, mload(0x6ba0)) +mstore(0xaf600, mload(0x7a960)) +success := and(eq(staticcall(gas(), 0x7, 0xaf5c0, 0x60, 0xaf5c0, 0x40), 1), success) +mstore(0xaf620, mload(0xaf540)) + mstore(0xaf640, mload(0xaf560)) +mstore(0xaf660, mload(0xaf5c0)) + mstore(0xaf680, mload(0xaf5e0)) +success := and(eq(staticcall(gas(), 0x6, 0xaf620, 0x80, 0xaf620, 0x40), 1), success) +mstore(0xaf6a0, mload(0x6bc0)) + mstore(0xaf6c0, mload(0x6be0)) +mstore(0xaf6e0, mload(0x7a980)) +success := and(eq(staticcall(gas(), 0x7, 0xaf6a0, 0x60, 0xaf6a0, 0x40), 1), success) +mstore(0xaf700, mload(0xaf620)) + mstore(0xaf720, mload(0xaf640)) +mstore(0xaf740, mload(0xaf6a0)) + mstore(0xaf760, mload(0xaf6c0)) +success := and(eq(staticcall(gas(), 0x6, 0xaf700, 0x80, 0xaf700, 0x40), 1), success) +mstore(0xaf780, mload(0x6c00)) + mstore(0xaf7a0, mload(0x6c20)) +mstore(0xaf7c0, mload(0x7a9a0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf780, 0x60, 0xaf780, 0x40), 1), success) +mstore(0xaf7e0, mload(0xaf700)) + mstore(0xaf800, mload(0xaf720)) +mstore(0xaf820, mload(0xaf780)) + mstore(0xaf840, mload(0xaf7a0)) +success := and(eq(staticcall(gas(), 0x6, 0xaf7e0, 0x80, 0xaf7e0, 0x40), 1), success) +mstore(0xaf860, mload(0x6c40)) + mstore(0xaf880, mload(0x6c60)) +mstore(0xaf8a0, mload(0x7a9c0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf860, 0x60, 0xaf860, 0x40), 1), success) +mstore(0xaf8c0, mload(0xaf7e0)) + mstore(0xaf8e0, mload(0xaf800)) +mstore(0xaf900, mload(0xaf860)) + mstore(0xaf920, mload(0xaf880)) +success := and(eq(staticcall(gas(), 0x6, 0xaf8c0, 0x80, 0xaf8c0, 0x40), 1), success) +mstore(0xaf940, mload(0x6c80)) + mstore(0xaf960, mload(0x6ca0)) +mstore(0xaf980, mload(0x7a9e0)) +success := and(eq(staticcall(gas(), 0x7, 0xaf940, 0x60, 0xaf940, 0x40), 1), success) +mstore(0xaf9a0, mload(0xaf8c0)) + mstore(0xaf9c0, mload(0xaf8e0)) +mstore(0xaf9e0, mload(0xaf940)) + mstore(0xafa00, mload(0xaf960)) +success := and(eq(staticcall(gas(), 0x6, 0xaf9a0, 0x80, 0xaf9a0, 0x40), 1), success) +mstore(0xafa20, mload(0x6cc0)) + mstore(0xafa40, mload(0x6ce0)) +mstore(0xafa60, mload(0x7aa00)) +success := and(eq(staticcall(gas(), 0x7, 0xafa20, 0x60, 0xafa20, 0x40), 1), success) +mstore(0xafa80, mload(0xaf9a0)) + mstore(0xafaa0, mload(0xaf9c0)) +mstore(0xafac0, mload(0xafa20)) + mstore(0xafae0, mload(0xafa40)) +success := and(eq(staticcall(gas(), 0x6, 0xafa80, 0x80, 0xafa80, 0x40), 1), success) +mstore(0xafb00, mload(0x6d00)) + mstore(0xafb20, mload(0x6d20)) +mstore(0xafb40, mload(0x7aa20)) +success := and(eq(staticcall(gas(), 0x7, 0xafb00, 0x60, 0xafb00, 0x40), 1), success) +mstore(0xafb60, mload(0xafa80)) + mstore(0xafb80, mload(0xafaa0)) +mstore(0xafba0, mload(0xafb00)) + mstore(0xafbc0, mload(0xafb20)) +success := and(eq(staticcall(gas(), 0x6, 0xafb60, 0x80, 0xafb60, 0x40), 1), success) +mstore(0xafbe0, mload(0x6d40)) + mstore(0xafc00, mload(0x6d60)) +mstore(0xafc20, mload(0x7aa40)) +success := and(eq(staticcall(gas(), 0x7, 0xafbe0, 0x60, 0xafbe0, 0x40), 1), success) +mstore(0xafc40, mload(0xafb60)) + mstore(0xafc60, mload(0xafb80)) +mstore(0xafc80, mload(0xafbe0)) + mstore(0xafca0, mload(0xafc00)) +success := and(eq(staticcall(gas(), 0x6, 0xafc40, 0x80, 0xafc40, 0x40), 1), success) +mstore(0xafcc0, mload(0x6d80)) + mstore(0xafce0, mload(0x6da0)) +mstore(0xafd00, mload(0x7aa60)) +success := and(eq(staticcall(gas(), 0x7, 0xafcc0, 0x60, 0xafcc0, 0x40), 1), success) +mstore(0xafd20, mload(0xafc40)) + mstore(0xafd40, mload(0xafc60)) +mstore(0xafd60, mload(0xafcc0)) + mstore(0xafd80, mload(0xafce0)) +success := and(eq(staticcall(gas(), 0x6, 0xafd20, 0x80, 0xafd20, 0x40), 1), success) +mstore(0xafda0, mload(0x6dc0)) + mstore(0xafdc0, mload(0x6de0)) +mstore(0xafde0, mload(0x7aa80)) +success := and(eq(staticcall(gas(), 0x7, 0xafda0, 0x60, 0xafda0, 0x40), 1), success) +mstore(0xafe00, mload(0xafd20)) + mstore(0xafe20, mload(0xafd40)) +mstore(0xafe40, mload(0xafda0)) + mstore(0xafe60, mload(0xafdc0)) +success := and(eq(staticcall(gas(), 0x6, 0xafe00, 0x80, 0xafe00, 0x40), 1), success) +mstore(0xafe80, mload(0x6e00)) + mstore(0xafea0, mload(0x6e20)) +mstore(0xafec0, mload(0x7aaa0)) +success := and(eq(staticcall(gas(), 0x7, 0xafe80, 0x60, 0xafe80, 0x40), 1), success) +mstore(0xafee0, mload(0xafe00)) + mstore(0xaff00, mload(0xafe20)) +mstore(0xaff20, mload(0xafe80)) + mstore(0xaff40, mload(0xafea0)) +success := and(eq(staticcall(gas(), 0x6, 0xafee0, 0x80, 0xafee0, 0x40), 1), success) +mstore(0xaff60, mload(0x6e40)) + mstore(0xaff80, mload(0x6e60)) +mstore(0xaffa0, mload(0x7aac0)) +success := and(eq(staticcall(gas(), 0x7, 0xaff60, 0x60, 0xaff60, 0x40), 1), success) +mstore(0xaffc0, mload(0xafee0)) + mstore(0xaffe0, mload(0xaff00)) +mstore(0xb0000, mload(0xaff60)) + mstore(0xb0020, mload(0xaff80)) +success := and(eq(staticcall(gas(), 0x6, 0xaffc0, 0x80, 0xaffc0, 0x40), 1), success) +mstore(0xb0040, mload(0x6e80)) + mstore(0xb0060, mload(0x6ea0)) +mstore(0xb0080, mload(0x7aae0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0040, 0x60, 0xb0040, 0x40), 1), success) +mstore(0xb00a0, mload(0xaffc0)) + mstore(0xb00c0, mload(0xaffe0)) +mstore(0xb00e0, mload(0xb0040)) + mstore(0xb0100, mload(0xb0060)) +success := and(eq(staticcall(gas(), 0x6, 0xb00a0, 0x80, 0xb00a0, 0x40), 1), success) +mstore(0xb0120, mload(0x6ec0)) + mstore(0xb0140, mload(0x6ee0)) +mstore(0xb0160, mload(0x7ab00)) +success := and(eq(staticcall(gas(), 0x7, 0xb0120, 0x60, 0xb0120, 0x40), 1), success) +mstore(0xb0180, mload(0xb00a0)) + mstore(0xb01a0, mload(0xb00c0)) +mstore(0xb01c0, mload(0xb0120)) + mstore(0xb01e0, mload(0xb0140)) +success := and(eq(staticcall(gas(), 0x6, 0xb0180, 0x80, 0xb0180, 0x40), 1), success) +mstore(0xb0200, mload(0x6f00)) + mstore(0xb0220, mload(0x6f20)) +mstore(0xb0240, mload(0x7ab20)) +success := and(eq(staticcall(gas(), 0x7, 0xb0200, 0x60, 0xb0200, 0x40), 1), success) +mstore(0xb0260, mload(0xb0180)) + mstore(0xb0280, mload(0xb01a0)) +mstore(0xb02a0, mload(0xb0200)) + mstore(0xb02c0, mload(0xb0220)) +success := and(eq(staticcall(gas(), 0x6, 0xb0260, 0x80, 0xb0260, 0x40), 1), success) +mstore(0xb02e0, mload(0x6f40)) + mstore(0xb0300, mload(0x6f60)) +mstore(0xb0320, mload(0x7ab40)) +success := and(eq(staticcall(gas(), 0x7, 0xb02e0, 0x60, 0xb02e0, 0x40), 1), success) +mstore(0xb0340, mload(0xb0260)) + mstore(0xb0360, mload(0xb0280)) +mstore(0xb0380, mload(0xb02e0)) + mstore(0xb03a0, mload(0xb0300)) +success := and(eq(staticcall(gas(), 0x6, 0xb0340, 0x80, 0xb0340, 0x40), 1), success) +mstore(0xb03c0, mload(0x6f80)) + mstore(0xb03e0, mload(0x6fa0)) +mstore(0xb0400, mload(0x7ab60)) +success := and(eq(staticcall(gas(), 0x7, 0xb03c0, 0x60, 0xb03c0, 0x40), 1), success) +mstore(0xb0420, mload(0xb0340)) + mstore(0xb0440, mload(0xb0360)) +mstore(0xb0460, mload(0xb03c0)) + mstore(0xb0480, mload(0xb03e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb0420, 0x80, 0xb0420, 0x40), 1), success) +mstore(0xb04a0, mload(0x6fc0)) + mstore(0xb04c0, mload(0x6fe0)) +mstore(0xb04e0, mload(0x7ab80)) +success := and(eq(staticcall(gas(), 0x7, 0xb04a0, 0x60, 0xb04a0, 0x40), 1), success) +mstore(0xb0500, mload(0xb0420)) + mstore(0xb0520, mload(0xb0440)) +mstore(0xb0540, mload(0xb04a0)) + mstore(0xb0560, mload(0xb04c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb0500, 0x80, 0xb0500, 0x40), 1), success) +mstore(0xb0580, mload(0x7000)) + mstore(0xb05a0, mload(0x7020)) +mstore(0xb05c0, mload(0x7aba0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0580, 0x60, 0xb0580, 0x40), 1), success) +mstore(0xb05e0, mload(0xb0500)) + mstore(0xb0600, mload(0xb0520)) +mstore(0xb0620, mload(0xb0580)) + mstore(0xb0640, mload(0xb05a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb05e0, 0x80, 0xb05e0, 0x40), 1), success) +mstore(0xb0660, mload(0x7040)) + mstore(0xb0680, mload(0x7060)) +mstore(0xb06a0, mload(0x7abc0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0660, 0x60, 0xb0660, 0x40), 1), success) +mstore(0xb06c0, mload(0xb05e0)) + mstore(0xb06e0, mload(0xb0600)) +mstore(0xb0700, mload(0xb0660)) + mstore(0xb0720, mload(0xb0680)) +success := and(eq(staticcall(gas(), 0x6, 0xb06c0, 0x80, 0xb06c0, 0x40), 1), success) +mstore(0xb0740, mload(0x7080)) + mstore(0xb0760, mload(0x70a0)) +mstore(0xb0780, mload(0x7abe0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0740, 0x60, 0xb0740, 0x40), 1), success) +mstore(0xb07a0, mload(0xb06c0)) + mstore(0xb07c0, mload(0xb06e0)) +mstore(0xb07e0, mload(0xb0740)) + mstore(0xb0800, mload(0xb0760)) +success := and(eq(staticcall(gas(), 0x6, 0xb07a0, 0x80, 0xb07a0, 0x40), 1), success) +mstore(0xb0820, mload(0x70c0)) + mstore(0xb0840, mload(0x70e0)) +mstore(0xb0860, mload(0x7ac00)) +success := and(eq(staticcall(gas(), 0x7, 0xb0820, 0x60, 0xb0820, 0x40), 1), success) +mstore(0xb0880, mload(0xb07a0)) + mstore(0xb08a0, mload(0xb07c0)) +mstore(0xb08c0, mload(0xb0820)) + mstore(0xb08e0, mload(0xb0840)) +success := and(eq(staticcall(gas(), 0x6, 0xb0880, 0x80, 0xb0880, 0x40), 1), success) +mstore(0xb0900, mload(0x7100)) + mstore(0xb0920, mload(0x7120)) +mstore(0xb0940, mload(0x7ac20)) +success := and(eq(staticcall(gas(), 0x7, 0xb0900, 0x60, 0xb0900, 0x40), 1), success) +mstore(0xb0960, mload(0xb0880)) + mstore(0xb0980, mload(0xb08a0)) +mstore(0xb09a0, mload(0xb0900)) + mstore(0xb09c0, mload(0xb0920)) +success := and(eq(staticcall(gas(), 0x6, 0xb0960, 0x80, 0xb0960, 0x40), 1), success) +mstore(0xb09e0, mload(0x7140)) + mstore(0xb0a00, mload(0x7160)) +mstore(0xb0a20, mload(0x7ac40)) +success := and(eq(staticcall(gas(), 0x7, 0xb09e0, 0x60, 0xb09e0, 0x40), 1), success) +mstore(0xb0a40, mload(0xb0960)) + mstore(0xb0a60, mload(0xb0980)) +mstore(0xb0a80, mload(0xb09e0)) + mstore(0xb0aa0, mload(0xb0a00)) +success := and(eq(staticcall(gas(), 0x6, 0xb0a40, 0x80, 0xb0a40, 0x40), 1), success) +mstore(0xb0ac0, mload(0x7180)) + mstore(0xb0ae0, mload(0x71a0)) +mstore(0xb0b00, mload(0x7ac60)) +success := and(eq(staticcall(gas(), 0x7, 0xb0ac0, 0x60, 0xb0ac0, 0x40), 1), success) +mstore(0xb0b20, mload(0xb0a40)) + mstore(0xb0b40, mload(0xb0a60)) +mstore(0xb0b60, mload(0xb0ac0)) + mstore(0xb0b80, mload(0xb0ae0)) +success := and(eq(staticcall(gas(), 0x6, 0xb0b20, 0x80, 0xb0b20, 0x40), 1), success) +mstore(0xb0ba0, mload(0x71c0)) + mstore(0xb0bc0, mload(0x71e0)) +mstore(0xb0be0, mload(0x7ac80)) +success := and(eq(staticcall(gas(), 0x7, 0xb0ba0, 0x60, 0xb0ba0, 0x40), 1), success) +mstore(0xb0c00, mload(0xb0b20)) + mstore(0xb0c20, mload(0xb0b40)) +mstore(0xb0c40, mload(0xb0ba0)) + mstore(0xb0c60, mload(0xb0bc0)) +success := and(eq(staticcall(gas(), 0x6, 0xb0c00, 0x80, 0xb0c00, 0x40), 1), success) +mstore(0xb0c80, mload(0x7200)) + mstore(0xb0ca0, mload(0x7220)) +mstore(0xb0cc0, mload(0x7aca0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0c80, 0x60, 0xb0c80, 0x40), 1), success) +mstore(0xb0ce0, mload(0xb0c00)) + mstore(0xb0d00, mload(0xb0c20)) +mstore(0xb0d20, mload(0xb0c80)) + mstore(0xb0d40, mload(0xb0ca0)) +success := and(eq(staticcall(gas(), 0x6, 0xb0ce0, 0x80, 0xb0ce0, 0x40), 1), success) +mstore(0xb0d60, mload(0x7240)) + mstore(0xb0d80, mload(0x7260)) +mstore(0xb0da0, mload(0x7acc0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0d60, 0x60, 0xb0d60, 0x40), 1), success) +mstore(0xb0dc0, mload(0xb0ce0)) + mstore(0xb0de0, mload(0xb0d00)) +mstore(0xb0e00, mload(0xb0d60)) + mstore(0xb0e20, mload(0xb0d80)) +success := and(eq(staticcall(gas(), 0x6, 0xb0dc0, 0x80, 0xb0dc0, 0x40), 1), success) +mstore(0xb0e40, mload(0x7280)) + mstore(0xb0e60, mload(0x72a0)) +mstore(0xb0e80, mload(0x7ace0)) +success := and(eq(staticcall(gas(), 0x7, 0xb0e40, 0x60, 0xb0e40, 0x40), 1), success) +mstore(0xb0ea0, mload(0xb0dc0)) + mstore(0xb0ec0, mload(0xb0de0)) +mstore(0xb0ee0, mload(0xb0e40)) + mstore(0xb0f00, mload(0xb0e60)) +success := and(eq(staticcall(gas(), 0x6, 0xb0ea0, 0x80, 0xb0ea0, 0x40), 1), success) +mstore(0xb0f20, mload(0x72c0)) + mstore(0xb0f40, mload(0x72e0)) +mstore(0xb0f60, mload(0x7ad00)) +success := and(eq(staticcall(gas(), 0x7, 0xb0f20, 0x60, 0xb0f20, 0x40), 1), success) +mstore(0xb0f80, mload(0xb0ea0)) + mstore(0xb0fa0, mload(0xb0ec0)) +mstore(0xb0fc0, mload(0xb0f20)) + mstore(0xb0fe0, mload(0xb0f40)) +success := and(eq(staticcall(gas(), 0x6, 0xb0f80, 0x80, 0xb0f80, 0x40), 1), success) +mstore(0xb1000, mload(0x7300)) + mstore(0xb1020, mload(0x7320)) +mstore(0xb1040, mload(0x7ad20)) +success := and(eq(staticcall(gas(), 0x7, 0xb1000, 0x60, 0xb1000, 0x40), 1), success) +mstore(0xb1060, mload(0xb0f80)) + mstore(0xb1080, mload(0xb0fa0)) +mstore(0xb10a0, mload(0xb1000)) + mstore(0xb10c0, mload(0xb1020)) +success := and(eq(staticcall(gas(), 0x6, 0xb1060, 0x80, 0xb1060, 0x40), 1), success) +mstore(0xb10e0, mload(0x7340)) + mstore(0xb1100, mload(0x7360)) +mstore(0xb1120, mload(0x7ad40)) +success := and(eq(staticcall(gas(), 0x7, 0xb10e0, 0x60, 0xb10e0, 0x40), 1), success) +mstore(0xb1140, mload(0xb1060)) + mstore(0xb1160, mload(0xb1080)) +mstore(0xb1180, mload(0xb10e0)) + mstore(0xb11a0, mload(0xb1100)) +success := and(eq(staticcall(gas(), 0x6, 0xb1140, 0x80, 0xb1140, 0x40), 1), success) +mstore(0xb11c0, mload(0x7380)) + mstore(0xb11e0, mload(0x73a0)) +mstore(0xb1200, mload(0x7ad60)) +success := and(eq(staticcall(gas(), 0x7, 0xb11c0, 0x60, 0xb11c0, 0x40), 1), success) +mstore(0xb1220, mload(0xb1140)) + mstore(0xb1240, mload(0xb1160)) +mstore(0xb1260, mload(0xb11c0)) + mstore(0xb1280, mload(0xb11e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb1220, 0x80, 0xb1220, 0x40), 1), success) +mstore(0xb12a0, mload(0x73c0)) + mstore(0xb12c0, mload(0x73e0)) +mstore(0xb12e0, mload(0x7ad80)) +success := and(eq(staticcall(gas(), 0x7, 0xb12a0, 0x60, 0xb12a0, 0x40), 1), success) +mstore(0xb1300, mload(0xb1220)) + mstore(0xb1320, mload(0xb1240)) +mstore(0xb1340, mload(0xb12a0)) + mstore(0xb1360, mload(0xb12c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb1300, 0x80, 0xb1300, 0x40), 1), success) +mstore(0xb1380, mload(0x7400)) + mstore(0xb13a0, mload(0x7420)) +mstore(0xb13c0, mload(0x7ada0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1380, 0x60, 0xb1380, 0x40), 1), success) +mstore(0xb13e0, mload(0xb1300)) + mstore(0xb1400, mload(0xb1320)) +mstore(0xb1420, mload(0xb1380)) + mstore(0xb1440, mload(0xb13a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb13e0, 0x80, 0xb13e0, 0x40), 1), success) +mstore(0xb1460, mload(0x7440)) + mstore(0xb1480, mload(0x7460)) +mstore(0xb14a0, mload(0x7adc0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1460, 0x60, 0xb1460, 0x40), 1), success) +mstore(0xb14c0, mload(0xb13e0)) + mstore(0xb14e0, mload(0xb1400)) +mstore(0xb1500, mload(0xb1460)) + mstore(0xb1520, mload(0xb1480)) +success := and(eq(staticcall(gas(), 0x6, 0xb14c0, 0x80, 0xb14c0, 0x40), 1), success) +mstore(0xb1540, mload(0x7480)) + mstore(0xb1560, mload(0x74a0)) +mstore(0xb1580, mload(0x7ade0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1540, 0x60, 0xb1540, 0x40), 1), success) +mstore(0xb15a0, mload(0xb14c0)) + mstore(0xb15c0, mload(0xb14e0)) +mstore(0xb15e0, mload(0xb1540)) + mstore(0xb1600, mload(0xb1560)) +success := and(eq(staticcall(gas(), 0x6, 0xb15a0, 0x80, 0xb15a0, 0x40), 1), success) +mstore(0xb1620, mload(0x74c0)) + mstore(0xb1640, mload(0x74e0)) +mstore(0xb1660, mload(0x7ae00)) +success := and(eq(staticcall(gas(), 0x7, 0xb1620, 0x60, 0xb1620, 0x40), 1), success) +mstore(0xb1680, mload(0xb15a0)) + mstore(0xb16a0, mload(0xb15c0)) +mstore(0xb16c0, mload(0xb1620)) + mstore(0xb16e0, mload(0xb1640)) +success := and(eq(staticcall(gas(), 0x6, 0xb1680, 0x80, 0xb1680, 0x40), 1), success) +mstore(0xb1700, mload(0x7500)) + mstore(0xb1720, mload(0x7520)) +mstore(0xb1740, mload(0x7ae20)) +success := and(eq(staticcall(gas(), 0x7, 0xb1700, 0x60, 0xb1700, 0x40), 1), success) +mstore(0xb1760, mload(0xb1680)) + mstore(0xb1780, mload(0xb16a0)) +mstore(0xb17a0, mload(0xb1700)) + mstore(0xb17c0, mload(0xb1720)) +success := and(eq(staticcall(gas(), 0x6, 0xb1760, 0x80, 0xb1760, 0x40), 1), success) +mstore(0xb17e0, mload(0x7540)) + mstore(0xb1800, mload(0x7560)) +mstore(0xb1820, mload(0x7ae40)) +success := and(eq(staticcall(gas(), 0x7, 0xb17e0, 0x60, 0xb17e0, 0x40), 1), success) +mstore(0xb1840, mload(0xb1760)) + mstore(0xb1860, mload(0xb1780)) +mstore(0xb1880, mload(0xb17e0)) + mstore(0xb18a0, mload(0xb1800)) +success := and(eq(staticcall(gas(), 0x6, 0xb1840, 0x80, 0xb1840, 0x40), 1), success) +mstore(0xb18c0, mload(0x7580)) + mstore(0xb18e0, mload(0x75a0)) +mstore(0xb1900, mload(0x7ae60)) +success := and(eq(staticcall(gas(), 0x7, 0xb18c0, 0x60, 0xb18c0, 0x40), 1), success) +mstore(0xb1920, mload(0xb1840)) + mstore(0xb1940, mload(0xb1860)) +mstore(0xb1960, mload(0xb18c0)) + mstore(0xb1980, mload(0xb18e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb1920, 0x80, 0xb1920, 0x40), 1), success) +mstore(0xb19a0, mload(0x75c0)) + mstore(0xb19c0, mload(0x75e0)) +mstore(0xb19e0, mload(0x7ae80)) +success := and(eq(staticcall(gas(), 0x7, 0xb19a0, 0x60, 0xb19a0, 0x40), 1), success) +mstore(0xb1a00, mload(0xb1920)) + mstore(0xb1a20, mload(0xb1940)) +mstore(0xb1a40, mload(0xb19a0)) + mstore(0xb1a60, mload(0xb19c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb1a00, 0x80, 0xb1a00, 0x40), 1), success) +mstore(0xb1a80, mload(0x7600)) + mstore(0xb1aa0, mload(0x7620)) +mstore(0xb1ac0, mload(0x7aea0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1a80, 0x60, 0xb1a80, 0x40), 1), success) +mstore(0xb1ae0, mload(0xb1a00)) + mstore(0xb1b00, mload(0xb1a20)) +mstore(0xb1b20, mload(0xb1a80)) + mstore(0xb1b40, mload(0xb1aa0)) +success := and(eq(staticcall(gas(), 0x6, 0xb1ae0, 0x80, 0xb1ae0, 0x40), 1), success) +mstore(0xb1b60, mload(0x7640)) + mstore(0xb1b80, mload(0x7660)) +mstore(0xb1ba0, mload(0x7aec0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1b60, 0x60, 0xb1b60, 0x40), 1), success) +mstore(0xb1bc0, mload(0xb1ae0)) + mstore(0xb1be0, mload(0xb1b00)) +mstore(0xb1c00, mload(0xb1b60)) + mstore(0xb1c20, mload(0xb1b80)) +success := and(eq(staticcall(gas(), 0x6, 0xb1bc0, 0x80, 0xb1bc0, 0x40), 1), success) +mstore(0xb1c40, mload(0x7680)) + mstore(0xb1c60, mload(0x76a0)) +mstore(0xb1c80, mload(0x7aee0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1c40, 0x60, 0xb1c40, 0x40), 1), success) +mstore(0xb1ca0, mload(0xb1bc0)) + mstore(0xb1cc0, mload(0xb1be0)) +mstore(0xb1ce0, mload(0xb1c40)) + mstore(0xb1d00, mload(0xb1c60)) +success := and(eq(staticcall(gas(), 0x6, 0xb1ca0, 0x80, 0xb1ca0, 0x40), 1), success) +mstore(0xb1d20, mload(0x76c0)) + mstore(0xb1d40, mload(0x76e0)) +mstore(0xb1d60, mload(0x7af00)) +success := and(eq(staticcall(gas(), 0x7, 0xb1d20, 0x60, 0xb1d20, 0x40), 1), success) +mstore(0xb1d80, mload(0xb1ca0)) + mstore(0xb1da0, mload(0xb1cc0)) +mstore(0xb1dc0, mload(0xb1d20)) + mstore(0xb1de0, mload(0xb1d40)) +success := and(eq(staticcall(gas(), 0x6, 0xb1d80, 0x80, 0xb1d80, 0x40), 1), success) +mstore(0xb1e00, mload(0x7700)) + mstore(0xb1e20, mload(0x7720)) +mstore(0xb1e40, mload(0x7af20)) +success := and(eq(staticcall(gas(), 0x7, 0xb1e00, 0x60, 0xb1e00, 0x40), 1), success) +mstore(0xb1e60, mload(0xb1d80)) + mstore(0xb1e80, mload(0xb1da0)) +mstore(0xb1ea0, mload(0xb1e00)) + mstore(0xb1ec0, mload(0xb1e20)) +success := and(eq(staticcall(gas(), 0x6, 0xb1e60, 0x80, 0xb1e60, 0x40), 1), success) +mstore(0xb1ee0, mload(0x7740)) + mstore(0xb1f00, mload(0x7760)) +mstore(0xb1f20, mload(0x7af40)) +success := and(eq(staticcall(gas(), 0x7, 0xb1ee0, 0x60, 0xb1ee0, 0x40), 1), success) +mstore(0xb1f40, mload(0xb1e60)) + mstore(0xb1f60, mload(0xb1e80)) +mstore(0xb1f80, mload(0xb1ee0)) + mstore(0xb1fa0, mload(0xb1f00)) +success := and(eq(staticcall(gas(), 0x6, 0xb1f40, 0x80, 0xb1f40, 0x40), 1), success) +mstore(0xb1fc0, mload(0x7780)) + mstore(0xb1fe0, mload(0x77a0)) +mstore(0xb2000, mload(0x7af60)) +success := and(eq(staticcall(gas(), 0x7, 0xb1fc0, 0x60, 0xb1fc0, 0x40), 1), success) +mstore(0xb2020, mload(0xb1f40)) + mstore(0xb2040, mload(0xb1f60)) +mstore(0xb2060, mload(0xb1fc0)) + mstore(0xb2080, mload(0xb1fe0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2020, 0x80, 0xb2020, 0x40), 1), success) +mstore(0xb20a0, mload(0x77c0)) + mstore(0xb20c0, mload(0x77e0)) +mstore(0xb20e0, mload(0x7af80)) +success := and(eq(staticcall(gas(), 0x7, 0xb20a0, 0x60, 0xb20a0, 0x40), 1), success) +mstore(0xb2100, mload(0xb2020)) + mstore(0xb2120, mload(0xb2040)) +mstore(0xb2140, mload(0xb20a0)) + mstore(0xb2160, mload(0xb20c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2100, 0x80, 0xb2100, 0x40), 1), success) +mstore(0xb2180, mload(0x7800)) + mstore(0xb21a0, mload(0x7820)) +mstore(0xb21c0, mload(0x7afa0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2180, 0x60, 0xb2180, 0x40), 1), success) +mstore(0xb21e0, mload(0xb2100)) + mstore(0xb2200, mload(0xb2120)) +mstore(0xb2220, mload(0xb2180)) + mstore(0xb2240, mload(0xb21a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb21e0, 0x80, 0xb21e0, 0x40), 1), success) +mstore(0xb2260, mload(0x7840)) + mstore(0xb2280, mload(0x7860)) +mstore(0xb22a0, mload(0x7afc0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2260, 0x60, 0xb2260, 0x40), 1), success) +mstore(0xb22c0, mload(0xb21e0)) + mstore(0xb22e0, mload(0xb2200)) +mstore(0xb2300, mload(0xb2260)) + mstore(0xb2320, mload(0xb2280)) +success := and(eq(staticcall(gas(), 0x6, 0xb22c0, 0x80, 0xb22c0, 0x40), 1), success) +mstore(0xb2340, mload(0x7880)) + mstore(0xb2360, mload(0x78a0)) +mstore(0xb2380, mload(0x7c2e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2340, 0x60, 0xb2340, 0x40), 1), success) +mstore(0xb23a0, mload(0xb22c0)) + mstore(0xb23c0, mload(0xb22e0)) +mstore(0xb23e0, mload(0xb2340)) + mstore(0xb2400, mload(0xb2360)) +success := and(eq(staticcall(gas(), 0x6, 0xb23a0, 0x80, 0xb23a0, 0x40), 1), success) +mstore(0xb2420, mload(0x78c0)) + mstore(0xb2440, mload(0x78e0)) +mstore(0xb2460, mload(0x7c300)) +success := and(eq(staticcall(gas(), 0x7, 0xb2420, 0x60, 0xb2420, 0x40), 1), success) +mstore(0xb2480, mload(0xb23a0)) + mstore(0xb24a0, mload(0xb23c0)) +mstore(0xb24c0, mload(0xb2420)) + mstore(0xb24e0, mload(0xb2440)) +success := and(eq(staticcall(gas(), 0x6, 0xb2480, 0x80, 0xb2480, 0x40), 1), success) +mstore(0xb2500, mload(0x7900)) + mstore(0xb2520, mload(0x7920)) +mstore(0xb2540, mload(0x7c320)) +success := and(eq(staticcall(gas(), 0x7, 0xb2500, 0x60, 0xb2500, 0x40), 1), success) +mstore(0xb2560, mload(0xb2480)) + mstore(0xb2580, mload(0xb24a0)) +mstore(0xb25a0, mload(0xb2500)) + mstore(0xb25c0, mload(0xb2520)) +success := and(eq(staticcall(gas(), 0x6, 0xb2560, 0x80, 0xb2560, 0x40), 1), success) +mstore(0xb25e0, mload(0x7940)) + mstore(0xb2600, mload(0x7960)) +mstore(0xb2620, mload(0x7c340)) +success := and(eq(staticcall(gas(), 0x7, 0xb25e0, 0x60, 0xb25e0, 0x40), 1), success) +mstore(0xb2640, mload(0xb2560)) + mstore(0xb2660, mload(0xb2580)) +mstore(0xb2680, mload(0xb25e0)) + mstore(0xb26a0, mload(0xb2600)) +success := and(eq(staticcall(gas(), 0x6, 0xb2640, 0x80, 0xb2640, 0x40), 1), success) +mstore(0xb26c0, mload(0x7980)) + mstore(0xb26e0, mload(0x79a0)) +mstore(0xb2700, mload(0x7c360)) +success := and(eq(staticcall(gas(), 0x7, 0xb26c0, 0x60, 0xb26c0, 0x40), 1), success) +mstore(0xb2720, mload(0xb2640)) + mstore(0xb2740, mload(0xb2660)) +mstore(0xb2760, mload(0xb26c0)) + mstore(0xb2780, mload(0xb26e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2720, 0x80, 0xb2720, 0x40), 1), success) +mstore(0xb27a0, mload(0x79c0)) + mstore(0xb27c0, mload(0x79e0)) +mstore(0xb27e0, mload(0x7c380)) +success := and(eq(staticcall(gas(), 0x7, 0xb27a0, 0x60, 0xb27a0, 0x40), 1), success) +mstore(0xb2800, mload(0xb2720)) + mstore(0xb2820, mload(0xb2740)) +mstore(0xb2840, mload(0xb27a0)) + mstore(0xb2860, mload(0xb27c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2800, 0x80, 0xb2800, 0x40), 1), success) +mstore(0xb2880, mload(0x7a00)) + mstore(0xb28a0, mload(0x7a20)) +mstore(0xb28c0, mload(0x7c3a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2880, 0x60, 0xb2880, 0x40), 1), success) +mstore(0xb28e0, mload(0xb2800)) + mstore(0xb2900, mload(0xb2820)) +mstore(0xb2920, mload(0xb2880)) + mstore(0xb2940, mload(0xb28a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb28e0, 0x80, 0xb28e0, 0x40), 1), success) +mstore(0xb2960, mload(0x7a40)) + mstore(0xb2980, mload(0x7a60)) +mstore(0xb29a0, mload(0x7c3c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2960, 0x60, 0xb2960, 0x40), 1), success) +mstore(0xb29c0, mload(0xb28e0)) + mstore(0xb29e0, mload(0xb2900)) +mstore(0xb2a00, mload(0xb2960)) + mstore(0xb2a20, mload(0xb2980)) +success := and(eq(staticcall(gas(), 0x6, 0xb29c0, 0x80, 0xb29c0, 0x40), 1), success) +mstore(0xb2a40, mload(0x7a80)) + mstore(0xb2a60, mload(0x7aa0)) +mstore(0xb2a80, mload(0x7c3e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2a40, 0x60, 0xb2a40, 0x40), 1), success) +mstore(0xb2aa0, mload(0xb29c0)) + mstore(0xb2ac0, mload(0xb29e0)) +mstore(0xb2ae0, mload(0xb2a40)) + mstore(0xb2b00, mload(0xb2a60)) +success := and(eq(staticcall(gas(), 0x6, 0xb2aa0, 0x80, 0xb2aa0, 0x40), 1), success) +mstore(0xb2b20, mload(0x7ac0)) + mstore(0xb2b40, mload(0x7ae0)) +mstore(0xb2b60, mload(0x7c400)) +success := and(eq(staticcall(gas(), 0x7, 0xb2b20, 0x60, 0xb2b20, 0x40), 1), success) +mstore(0xb2b80, mload(0xb2aa0)) + mstore(0xb2ba0, mload(0xb2ac0)) +mstore(0xb2bc0, mload(0xb2b20)) + mstore(0xb2be0, mload(0xb2b40)) +success := and(eq(staticcall(gas(), 0x6, 0xb2b80, 0x80, 0xb2b80, 0x40), 1), success) +mstore(0xb2c00, mload(0x7b00)) + mstore(0xb2c20, mload(0x7b20)) +mstore(0xb2c40, mload(0x7c420)) +success := and(eq(staticcall(gas(), 0x7, 0xb2c00, 0x60, 0xb2c00, 0x40), 1), success) +mstore(0xb2c60, mload(0xb2b80)) + mstore(0xb2c80, mload(0xb2ba0)) +mstore(0xb2ca0, mload(0xb2c00)) + mstore(0xb2cc0, mload(0xb2c20)) +success := and(eq(staticcall(gas(), 0x6, 0xb2c60, 0x80, 0xb2c60, 0x40), 1), success) +mstore(0xb2ce0, mload(0x7b40)) + mstore(0xb2d00, mload(0x7b60)) +mstore(0xb2d20, mload(0x7c440)) +success := and(eq(staticcall(gas(), 0x7, 0xb2ce0, 0x60, 0xb2ce0, 0x40), 1), success) +mstore(0xb2d40, mload(0xb2c60)) + mstore(0xb2d60, mload(0xb2c80)) +mstore(0xb2d80, mload(0xb2ce0)) + mstore(0xb2da0, mload(0xb2d00)) +success := and(eq(staticcall(gas(), 0x6, 0xb2d40, 0x80, 0xb2d40, 0x40), 1), success) +mstore(0xb2dc0, mload(0x7b80)) + mstore(0xb2de0, mload(0x7ba0)) +mstore(0xb2e00, mload(0x7c460)) +success := and(eq(staticcall(gas(), 0x7, 0xb2dc0, 0x60, 0xb2dc0, 0x40), 1), success) +mstore(0xb2e20, mload(0xb2d40)) + mstore(0xb2e40, mload(0xb2d60)) +mstore(0xb2e60, mload(0xb2dc0)) + mstore(0xb2e80, mload(0xb2de0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2e20, 0x80, 0xb2e20, 0x40), 1), success) +mstore(0xb2ea0, mload(0x7bc0)) + mstore(0xb2ec0, mload(0x7be0)) +mstore(0xb2ee0, mload(0x7c480)) +success := and(eq(staticcall(gas(), 0x7, 0xb2ea0, 0x60, 0xb2ea0, 0x40), 1), success) +mstore(0xb2f00, mload(0xb2e20)) + mstore(0xb2f20, mload(0xb2e40)) +mstore(0xb2f40, mload(0xb2ea0)) + mstore(0xb2f60, mload(0xb2ec0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2f00, 0x80, 0xb2f00, 0x40), 1), success) +mstore(0xb2f80, mload(0x7c00)) + mstore(0xb2fa0, mload(0x7c20)) +mstore(0xb2fc0, mload(0x7c4a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2f80, 0x60, 0xb2f80, 0x40), 1), success) +mstore(0xb2fe0, mload(0xb2f00)) + mstore(0xb3000, mload(0xb2f20)) +mstore(0xb3020, mload(0xb2f80)) + mstore(0xb3040, mload(0xb2fa0)) +success := and(eq(staticcall(gas(), 0x6, 0xb2fe0, 0x80, 0xb2fe0, 0x40), 1), success) +mstore(0xb3060, mload(0x7c40)) + mstore(0xb3080, mload(0x7c60)) +mstore(0xb30a0, mload(0x7c4c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb3060, 0x60, 0xb3060, 0x40), 1), success) +mstore(0xb30c0, mload(0xb2fe0)) + mstore(0xb30e0, mload(0xb3000)) +mstore(0xb3100, mload(0xb3060)) + mstore(0xb3120, mload(0xb3080)) +success := and(eq(staticcall(gas(), 0x6, 0xb30c0, 0x80, 0xb30c0, 0x40), 1), success) +mstore(0xb3140, mload(0x7c80)) + mstore(0xb3160, mload(0x7ca0)) +mstore(0xb3180, mload(0x7c4e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb3140, 0x60, 0xb3140, 0x40), 1), success) +mstore(0xb31a0, mload(0xb30c0)) + mstore(0xb31c0, mload(0xb30e0)) +mstore(0xb31e0, mload(0xb3140)) + mstore(0xb3200, mload(0xb3160)) +success := and(eq(staticcall(gas(), 0x6, 0xb31a0, 0x80, 0xb31a0, 0x40), 1), success) +mstore(0xb3220, mload(0x7cc0)) + mstore(0xb3240, mload(0x7ce0)) +mstore(0xb3260, mload(0x7c500)) +success := and(eq(staticcall(gas(), 0x7, 0xb3220, 0x60, 0xb3220, 0x40), 1), success) +mstore(0xb3280, mload(0xb31a0)) + mstore(0xb32a0, mload(0xb31c0)) +mstore(0xb32c0, mload(0xb3220)) + mstore(0xb32e0, mload(0xb3240)) +success := and(eq(staticcall(gas(), 0x6, 0xb3280, 0x80, 0xb3280, 0x40), 1), success) +mstore(0xb3300, mload(0x7d00)) + mstore(0xb3320, mload(0x7d20)) +mstore(0xb3340, mload(0x7c520)) +success := and(eq(staticcall(gas(), 0x7, 0xb3300, 0x60, 0xb3300, 0x40), 1), success) +mstore(0xb3360, mload(0xb3280)) + mstore(0xb3380, mload(0xb32a0)) +mstore(0xb33a0, mload(0xb3300)) + mstore(0xb33c0, mload(0xb3320)) +success := and(eq(staticcall(gas(), 0x6, 0xb3360, 0x80, 0xb3360, 0x40), 1), success) +mstore(0xb33e0, mload(0x7d40)) + mstore(0xb3400, mload(0x7d60)) +mstore(0xb3420, mload(0x7c540)) +success := and(eq(staticcall(gas(), 0x7, 0xb33e0, 0x60, 0xb33e0, 0x40), 1), success) +mstore(0xb3440, mload(0xb3360)) + mstore(0xb3460, mload(0xb3380)) +mstore(0xb3480, mload(0xb33e0)) + mstore(0xb34a0, mload(0xb3400)) +success := and(eq(staticcall(gas(), 0x6, 0xb3440, 0x80, 0xb3440, 0x40), 1), success) +mstore(0xb34c0, mload(0x7d80)) + mstore(0xb34e0, mload(0x7da0)) +mstore(0xb3500, mload(0x7c560)) +success := and(eq(staticcall(gas(), 0x7, 0xb34c0, 0x60, 0xb34c0, 0x40), 1), success) +mstore(0xb3520, mload(0xb3440)) + mstore(0xb3540, mload(0xb3460)) +mstore(0xb3560, mload(0xb34c0)) + mstore(0xb3580, mload(0xb34e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb3520, 0x80, 0xb3520, 0x40), 1), success) +mstore(0xb35a0, mload(0x7dc0)) + mstore(0xb35c0, mload(0x7de0)) +mstore(0xb35e0, mload(0x7c580)) +success := and(eq(staticcall(gas(), 0x7, 0xb35a0, 0x60, 0xb35a0, 0x40), 1), success) +mstore(0xb3600, mload(0xb3520)) + mstore(0xb3620, mload(0xb3540)) +mstore(0xb3640, mload(0xb35a0)) + mstore(0xb3660, mload(0xb35c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb3600, 0x80, 0xb3600, 0x40), 1), success) +mstore(0xb3680, mload(0x7e00)) + mstore(0xb36a0, mload(0x7e20)) +mstore(0xb36c0, mload(0x7c5a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb3680, 0x60, 0xb3680, 0x40), 1), success) +mstore(0xb36e0, mload(0xb3600)) + mstore(0xb3700, mload(0xb3620)) +mstore(0xb3720, mload(0xb3680)) + mstore(0xb3740, mload(0xb36a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb36e0, 0x80, 0xb36e0, 0x40), 1), success) +mstore(0xb3760, mload(0x7e40)) + mstore(0xb3780, mload(0x7e60)) +mstore(0xb37a0, mload(0x7c5c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb3760, 0x60, 0xb3760, 0x40), 1), success) +mstore(0xb37c0, mload(0xb36e0)) + mstore(0xb37e0, mload(0xb3700)) +mstore(0xb3800, mload(0xb3760)) + mstore(0xb3820, mload(0xb3780)) +success := and(eq(staticcall(gas(), 0x6, 0xb37c0, 0x80, 0xb37c0, 0x40), 1), success) +mstore(0xb3840, mload(0x7e80)) + mstore(0xb3860, mload(0x7ea0)) +mstore(0xb3880, mload(0x7c5e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb3840, 0x60, 0xb3840, 0x40), 1), success) +mstore(0xb38a0, mload(0xb37c0)) + mstore(0xb38c0, mload(0xb37e0)) +mstore(0xb38e0, mload(0xb3840)) + mstore(0xb3900, mload(0xb3860)) +success := and(eq(staticcall(gas(), 0x6, 0xb38a0, 0x80, 0xb38a0, 0x40), 1), success) +mstore(0xb3920, mload(0x7ec0)) + mstore(0xb3940, mload(0x7ee0)) +mstore(0xb3960, mload(0x7c600)) +success := and(eq(staticcall(gas(), 0x7, 0xb3920, 0x60, 0xb3920, 0x40), 1), success) +mstore(0xb3980, mload(0xb38a0)) + mstore(0xb39a0, mload(0xb38c0)) +mstore(0xb39c0, mload(0xb3920)) + mstore(0xb39e0, mload(0xb3940)) +success := and(eq(staticcall(gas(), 0x6, 0xb3980, 0x80, 0xb3980, 0x40), 1), success) +mstore(0xb3a00, mload(0x7f00)) + mstore(0xb3a20, mload(0x7f20)) +mstore(0xb3a40, mload(0x7c620)) +success := and(eq(staticcall(gas(), 0x7, 0xb3a00, 0x60, 0xb3a00, 0x40), 1), success) +mstore(0xb3a60, mload(0xb3980)) + mstore(0xb3a80, mload(0xb39a0)) +mstore(0xb3aa0, mload(0xb3a00)) + mstore(0xb3ac0, mload(0xb3a20)) +success := and(eq(staticcall(gas(), 0x6, 0xb3a60, 0x80, 0xb3a60, 0x40), 1), success) +mstore(0xb3ae0, mload(0x7f40)) + mstore(0xb3b00, mload(0x7f60)) +mstore(0xb3b20, mload(0x7c640)) +success := and(eq(staticcall(gas(), 0x7, 0xb3ae0, 0x60, 0xb3ae0, 0x40), 1), success) +mstore(0xb3b40, mload(0xb3a60)) + mstore(0xb3b60, mload(0xb3a80)) +mstore(0xb3b80, mload(0xb3ae0)) + mstore(0xb3ba0, mload(0xb3b00)) +success := and(eq(staticcall(gas(), 0x6, 0xb3b40, 0x80, 0xb3b40, 0x40), 1), success) +mstore(0xb3bc0, mload(0x7f80)) + mstore(0xb3be0, mload(0x7fa0)) +mstore(0xb3c00, mload(0x7c660)) +success := and(eq(staticcall(gas(), 0x7, 0xb3bc0, 0x60, 0xb3bc0, 0x40), 1), success) +mstore(0xb3c20, mload(0xb3b40)) + mstore(0xb3c40, mload(0xb3b60)) +mstore(0xb3c60, mload(0xb3bc0)) + mstore(0xb3c80, mload(0xb3be0)) +success := and(eq(staticcall(gas(), 0x6, 0xb3c20, 0x80, 0xb3c20, 0x40), 1), success) +mstore(0xb3ca0, mload(0x7fc0)) + mstore(0xb3cc0, mload(0x7fe0)) +mstore(0xb3ce0, mload(0x7c680)) +success := and(eq(staticcall(gas(), 0x7, 0xb3ca0, 0x60, 0xb3ca0, 0x40), 1), success) +mstore(0xb3d00, mload(0xb3c20)) + mstore(0xb3d20, mload(0xb3c40)) +mstore(0xb3d40, mload(0xb3ca0)) + mstore(0xb3d60, mload(0xb3cc0)) +success := and(eq(staticcall(gas(), 0x6, 0xb3d00, 0x80, 0xb3d00, 0x40), 1), success) +mstore(0xb3d80, mload(0x4680)) + mstore(0xb3da0, mload(0x46a0)) +mstore(0xb3dc0, mload(0x7d900)) +success := and(eq(staticcall(gas(), 0x7, 0xb3d80, 0x60, 0xb3d80, 0x40), 1), success) +mstore(0xb3de0, mload(0xb3d00)) + mstore(0xb3e00, mload(0xb3d20)) +mstore(0xb3e20, mload(0xb3d80)) + mstore(0xb3e40, mload(0xb3da0)) +success := and(eq(staticcall(gas(), 0x6, 0xb3de0, 0x80, 0xb3de0, 0x40), 1), success) +mstore(0xb3e60, mload(0x4700)) + mstore(0xb3e80, mload(0x4720)) +mstore(0xb3ea0, mload(0x7d920)) +success := and(eq(staticcall(gas(), 0x7, 0xb3e60, 0x60, 0xb3e60, 0x40), 1), success) +mstore(0xb3ec0, mload(0xb3de0)) + mstore(0xb3ee0, mload(0xb3e00)) +mstore(0xb3f00, mload(0xb3e60)) + mstore(0xb3f20, mload(0xb3e80)) +success := and(eq(staticcall(gas(), 0x6, 0xb3ec0, 0x80, 0xb3ec0, 0x40), 1), success) +mstore(0xb3f40, mload(0x4780)) + mstore(0xb3f60, mload(0x47a0)) +mstore(0xb3f80, mload(0x7d940)) +success := and(eq(staticcall(gas(), 0x7, 0xb3f40, 0x60, 0xb3f40, 0x40), 1), success) +mstore(0xb3fa0, mload(0xb3ec0)) + mstore(0xb3fc0, mload(0xb3ee0)) +mstore(0xb3fe0, mload(0xb3f40)) + mstore(0xb4000, mload(0xb3f60)) +success := and(eq(staticcall(gas(), 0x6, 0xb3fa0, 0x80, 0xb3fa0, 0x40), 1), success) +mstore(0xb4020, mload(0x4800)) + mstore(0xb4040, mload(0x4820)) +mstore(0xb4060, mload(0x7d960)) +success := and(eq(staticcall(gas(), 0x7, 0xb4020, 0x60, 0xb4020, 0x40), 1), success) +mstore(0xb4080, mload(0xb3fa0)) + mstore(0xb40a0, mload(0xb3fc0)) +mstore(0xb40c0, mload(0xb4020)) + mstore(0xb40e0, mload(0xb4040)) +success := and(eq(staticcall(gas(), 0x6, 0xb4080, 0x80, 0xb4080, 0x40), 1), success) +mstore(0xb4100, mload(0x4880)) + mstore(0xb4120, mload(0x48a0)) +mstore(0xb4140, mload(0x7d980)) +success := and(eq(staticcall(gas(), 0x7, 0xb4100, 0x60, 0xb4100, 0x40), 1), success) +mstore(0xb4160, mload(0xb4080)) + mstore(0xb4180, mload(0xb40a0)) +mstore(0xb41a0, mload(0xb4100)) + mstore(0xb41c0, mload(0xb4120)) +success := and(eq(staticcall(gas(), 0x6, 0xb4160, 0x80, 0xb4160, 0x40), 1), success) +mstore(0xb41e0, mload(0x4900)) + mstore(0xb4200, mload(0x4920)) +mstore(0xb4220, mload(0x7d9a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb41e0, 0x60, 0xb41e0, 0x40), 1), success) +mstore(0xb4240, mload(0xb4160)) + mstore(0xb4260, mload(0xb4180)) +mstore(0xb4280, mload(0xb41e0)) + mstore(0xb42a0, mload(0xb4200)) +success := and(eq(staticcall(gas(), 0x6, 0xb4240, 0x80, 0xb4240, 0x40), 1), success) +mstore(0xb42c0, mload(0x4980)) + mstore(0xb42e0, mload(0x49a0)) +mstore(0xb4300, mload(0x7d9c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb42c0, 0x60, 0xb42c0, 0x40), 1), success) +mstore(0xb4320, mload(0xb4240)) + mstore(0xb4340, mload(0xb4260)) +mstore(0xb4360, mload(0xb42c0)) + mstore(0xb4380, mload(0xb42e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4320, 0x80, 0xb4320, 0x40), 1), success) +mstore(0xb43a0, mload(0x4a00)) + mstore(0xb43c0, mload(0x4a20)) +mstore(0xb43e0, mload(0x7d9e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb43a0, 0x60, 0xb43a0, 0x40), 1), success) +mstore(0xb4400, mload(0xb4320)) + mstore(0xb4420, mload(0xb4340)) +mstore(0xb4440, mload(0xb43a0)) + mstore(0xb4460, mload(0xb43c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4400, 0x80, 0xb4400, 0x40), 1), success) +mstore(0xb4480, mload(0x4a80)) + mstore(0xb44a0, mload(0x4aa0)) +mstore(0xb44c0, mload(0x7da00)) +success := and(eq(staticcall(gas(), 0x7, 0xb4480, 0x60, 0xb4480, 0x40), 1), success) +mstore(0xb44e0, mload(0xb4400)) + mstore(0xb4500, mload(0xb4420)) +mstore(0xb4520, mload(0xb4480)) + mstore(0xb4540, mload(0xb44a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb44e0, 0x80, 0xb44e0, 0x40), 1), success) +mstore(0xb4560, mload(0x4b00)) + mstore(0xb4580, mload(0x4b20)) +mstore(0xb45a0, mload(0x7da20)) +success := and(eq(staticcall(gas(), 0x7, 0xb4560, 0x60, 0xb4560, 0x40), 1), success) +mstore(0xb45c0, mload(0xb44e0)) + mstore(0xb45e0, mload(0xb4500)) +mstore(0xb4600, mload(0xb4560)) + mstore(0xb4620, mload(0xb4580)) +success := and(eq(staticcall(gas(), 0x6, 0xb45c0, 0x80, 0xb45c0, 0x40), 1), success) +mstore(0xb4640, mload(0x4b80)) + mstore(0xb4660, mload(0x4ba0)) +mstore(0xb4680, mload(0x7da40)) +success := and(eq(staticcall(gas(), 0x7, 0xb4640, 0x60, 0xb4640, 0x40), 1), success) +mstore(0xb46a0, mload(0xb45c0)) + mstore(0xb46c0, mload(0xb45e0)) +mstore(0xb46e0, mload(0xb4640)) + mstore(0xb4700, mload(0xb4660)) +success := and(eq(staticcall(gas(), 0x6, 0xb46a0, 0x80, 0xb46a0, 0x40), 1), success) +mstore(0xb4720, mload(0x4c00)) + mstore(0xb4740, mload(0x4c20)) +mstore(0xb4760, mload(0x7da60)) +success := and(eq(staticcall(gas(), 0x7, 0xb4720, 0x60, 0xb4720, 0x40), 1), success) +mstore(0xb4780, mload(0xb46a0)) + mstore(0xb47a0, mload(0xb46c0)) +mstore(0xb47c0, mload(0xb4720)) + mstore(0xb47e0, mload(0xb4740)) +success := and(eq(staticcall(gas(), 0x6, 0xb4780, 0x80, 0xb4780, 0x40), 1), success) +mstore(0xb4800, mload(0x4c80)) + mstore(0xb4820, mload(0x4ca0)) +mstore(0xb4840, mload(0x7da80)) +success := and(eq(staticcall(gas(), 0x7, 0xb4800, 0x60, 0xb4800, 0x40), 1), success) +mstore(0xb4860, mload(0xb4780)) + mstore(0xb4880, mload(0xb47a0)) +mstore(0xb48a0, mload(0xb4800)) + mstore(0xb48c0, mload(0xb4820)) +success := and(eq(staticcall(gas(), 0x6, 0xb4860, 0x80, 0xb4860, 0x40), 1), success) +mstore(0xb48e0, mload(0x4d00)) + mstore(0xb4900, mload(0x4d20)) +mstore(0xb4920, mload(0x7daa0)) +success := and(eq(staticcall(gas(), 0x7, 0xb48e0, 0x60, 0xb48e0, 0x40), 1), success) +mstore(0xb4940, mload(0xb4860)) + mstore(0xb4960, mload(0xb4880)) +mstore(0xb4980, mload(0xb48e0)) + mstore(0xb49a0, mload(0xb4900)) +success := and(eq(staticcall(gas(), 0x6, 0xb4940, 0x80, 0xb4940, 0x40), 1), success) +mstore(0xb49c0, mload(0x4d80)) + mstore(0xb49e0, mload(0x4da0)) +mstore(0xb4a00, mload(0x7dac0)) +success := and(eq(staticcall(gas(), 0x7, 0xb49c0, 0x60, 0xb49c0, 0x40), 1), success) +mstore(0xb4a20, mload(0xb4940)) + mstore(0xb4a40, mload(0xb4960)) +mstore(0xb4a60, mload(0xb49c0)) + mstore(0xb4a80, mload(0xb49e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4a20, 0x80, 0xb4a20, 0x40), 1), success) +mstore(0xb4aa0, mload(0x4e00)) + mstore(0xb4ac0, mload(0x4e20)) +mstore(0xb4ae0, mload(0x7dae0)) +success := and(eq(staticcall(gas(), 0x7, 0xb4aa0, 0x60, 0xb4aa0, 0x40), 1), success) +mstore(0xb4b00, mload(0xb4a20)) + mstore(0xb4b20, mload(0xb4a40)) +mstore(0xb4b40, mload(0xb4aa0)) + mstore(0xb4b60, mload(0xb4ac0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4b00, 0x80, 0xb4b00, 0x40), 1), success) +mstore(0xb4b80, mload(0x4e80)) + mstore(0xb4ba0, mload(0x4ea0)) +mstore(0xb4bc0, mload(0x7db00)) +success := and(eq(staticcall(gas(), 0x7, 0xb4b80, 0x60, 0xb4b80, 0x40), 1), success) +mstore(0xb4be0, mload(0xb4b00)) + mstore(0xb4c00, mload(0xb4b20)) +mstore(0xb4c20, mload(0xb4b80)) + mstore(0xb4c40, mload(0xb4ba0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4be0, 0x80, 0xb4be0, 0x40), 1), success) +mstore(0xb4c60, mload(0x4f00)) + mstore(0xb4c80, mload(0x4f20)) +mstore(0xb4ca0, mload(0x7db20)) +success := and(eq(staticcall(gas(), 0x7, 0xb4c60, 0x60, 0xb4c60, 0x40), 1), success) +mstore(0xb4cc0, mload(0xb4be0)) + mstore(0xb4ce0, mload(0xb4c00)) +mstore(0xb4d00, mload(0xb4c60)) + mstore(0xb4d20, mload(0xb4c80)) +success := and(eq(staticcall(gas(), 0x6, 0xb4cc0, 0x80, 0xb4cc0, 0x40), 1), success) +mstore(0xb4d40, mload(0x4f80)) + mstore(0xb4d60, mload(0x4fa0)) +mstore(0xb4d80, mload(0x7db40)) +success := and(eq(staticcall(gas(), 0x7, 0xb4d40, 0x60, 0xb4d40, 0x40), 1), success) +mstore(0xb4da0, mload(0xb4cc0)) + mstore(0xb4dc0, mload(0xb4ce0)) +mstore(0xb4de0, mload(0xb4d40)) + mstore(0xb4e00, mload(0xb4d60)) +success := and(eq(staticcall(gas(), 0x6, 0xb4da0, 0x80, 0xb4da0, 0x40), 1), success) +mstore(0xb4e20, mload(0x5000)) + mstore(0xb4e40, mload(0x5020)) +mstore(0xb4e60, mload(0x7db60)) +success := and(eq(staticcall(gas(), 0x7, 0xb4e20, 0x60, 0xb4e20, 0x40), 1), success) +mstore(0xb4e80, mload(0xb4da0)) + mstore(0xb4ea0, mload(0xb4dc0)) +mstore(0xb4ec0, mload(0xb4e20)) + mstore(0xb4ee0, mload(0xb4e40)) +success := and(eq(staticcall(gas(), 0x6, 0xb4e80, 0x80, 0xb4e80, 0x40), 1), success) +mstore(0xb4f00, mload(0x5080)) + mstore(0xb4f20, mload(0x50a0)) +mstore(0xb4f40, mload(0x7db80)) +success := and(eq(staticcall(gas(), 0x7, 0xb4f00, 0x60, 0xb4f00, 0x40), 1), success) +mstore(0xb4f60, mload(0xb4e80)) + mstore(0xb4f80, mload(0xb4ea0)) +mstore(0xb4fa0, mload(0xb4f00)) + mstore(0xb4fc0, mload(0xb4f20)) +success := and(eq(staticcall(gas(), 0x6, 0xb4f60, 0x80, 0xb4f60, 0x40), 1), success) +mstore(0xb4fe0, mload(0x5100)) + mstore(0xb5000, mload(0x5120)) +mstore(0xb5020, mload(0x7dba0)) +success := and(eq(staticcall(gas(), 0x7, 0xb4fe0, 0x60, 0xb4fe0, 0x40), 1), success) +mstore(0xb5040, mload(0xb4f60)) + mstore(0xb5060, mload(0xb4f80)) +mstore(0xb5080, mload(0xb4fe0)) + mstore(0xb50a0, mload(0xb5000)) +success := and(eq(staticcall(gas(), 0x6, 0xb5040, 0x80, 0xb5040, 0x40), 1), success) +mstore(0xb50c0, mload(0x5180)) + mstore(0xb50e0, mload(0x51a0)) +mstore(0xb5100, mload(0x7dbc0)) +success := and(eq(staticcall(gas(), 0x7, 0xb50c0, 0x60, 0xb50c0, 0x40), 1), success) +mstore(0xb5120, mload(0xb5040)) + mstore(0xb5140, mload(0xb5060)) +mstore(0xb5160, mload(0xb50c0)) + mstore(0xb5180, mload(0xb50e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb5120, 0x80, 0xb5120, 0x40), 1), success) +mstore(0xb51a0, mload(0x5200)) + mstore(0xb51c0, mload(0x5220)) +mstore(0xb51e0, mload(0x7dbe0)) +success := and(eq(staticcall(gas(), 0x7, 0xb51a0, 0x60, 0xb51a0, 0x40), 1), success) +mstore(0xb5200, mload(0xb5120)) + mstore(0xb5220, mload(0xb5140)) +mstore(0xb5240, mload(0xb51a0)) + mstore(0xb5260, mload(0xb51c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb5200, 0x80, 0xb5200, 0x40), 1), success) +mstore(0xb5280, mload(0x5280)) + mstore(0xb52a0, mload(0x52a0)) +mstore(0xb52c0, mload(0x7dc00)) +success := and(eq(staticcall(gas(), 0x7, 0xb5280, 0x60, 0xb5280, 0x40), 1), success) +mstore(0xb52e0, mload(0xb5200)) + mstore(0xb5300, mload(0xb5220)) +mstore(0xb5320, mload(0xb5280)) + mstore(0xb5340, mload(0xb52a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb52e0, 0x80, 0xb52e0, 0x40), 1), success) +mstore(0xb5360, mload(0x5300)) + mstore(0xb5380, mload(0x5320)) +mstore(0xb53a0, mload(0x7dc20)) +success := and(eq(staticcall(gas(), 0x7, 0xb5360, 0x60, 0xb5360, 0x40), 1), success) +mstore(0xb53c0, mload(0xb52e0)) + mstore(0xb53e0, mload(0xb5300)) +mstore(0xb5400, mload(0xb5360)) + mstore(0xb5420, mload(0xb5380)) +success := and(eq(staticcall(gas(), 0x6, 0xb53c0, 0x80, 0xb53c0, 0x40), 1), success) +mstore(0xb5440, mload(0x5380)) + mstore(0xb5460, mload(0x53a0)) +mstore(0xb5480, mload(0x7dc40)) +success := and(eq(staticcall(gas(), 0x7, 0xb5440, 0x60, 0xb5440, 0x40), 1), success) +mstore(0xb54a0, mload(0xb53c0)) + mstore(0xb54c0, mload(0xb53e0)) +mstore(0xb54e0, mload(0xb5440)) + mstore(0xb5500, mload(0xb5460)) +success := and(eq(staticcall(gas(), 0x6, 0xb54a0, 0x80, 0xb54a0, 0x40), 1), success) +mstore(0xb5520, mload(0x5400)) + mstore(0xb5540, mload(0x5420)) +mstore(0xb5560, mload(0x7dc60)) +success := and(eq(staticcall(gas(), 0x7, 0xb5520, 0x60, 0xb5520, 0x40), 1), success) +mstore(0xb5580, mload(0xb54a0)) + mstore(0xb55a0, mload(0xb54c0)) +mstore(0xb55c0, mload(0xb5520)) + mstore(0xb55e0, mload(0xb5540)) +success := and(eq(staticcall(gas(), 0x6, 0xb5580, 0x80, 0xb5580, 0x40), 1), success) +mstore(0xb5600, mload(0x5480)) + mstore(0xb5620, mload(0x54a0)) +mstore(0xb5640, mload(0x7dc80)) +success := and(eq(staticcall(gas(), 0x7, 0xb5600, 0x60, 0xb5600, 0x40), 1), success) +mstore(0xb5660, mload(0xb5580)) + mstore(0xb5680, mload(0xb55a0)) +mstore(0xb56a0, mload(0xb5600)) + mstore(0xb56c0, mload(0xb5620)) +success := and(eq(staticcall(gas(), 0x6, 0xb5660, 0x80, 0xb5660, 0x40), 1), success) +mstore(0xb56e0, mload(0x18920)) + mstore(0xb5700, mload(0x18940)) +mstore(0xb5720, sub(f_q, mload(0x7dcc0))) +success := and(eq(staticcall(gas(), 0x7, 0xb56e0, 0x60, 0xb56e0, 0x40), 1), success) +mstore(0xb5740, mload(0xb5660)) + mstore(0xb5760, mload(0xb5680)) +mstore(0xb5780, mload(0xb56e0)) + mstore(0xb57a0, mload(0xb5700)) +success := and(eq(staticcall(gas(), 0x6, 0xb5740, 0x80, 0xb5740, 0x40), 1), success) +mstore(0xb57c0, mload(0x189c0)) + mstore(0xb57e0, mload(0x189e0)) +mstore(0xb5800, mload(0x7dce0)) +success := and(eq(staticcall(gas(), 0x7, 0xb57c0, 0x60, 0xb57c0, 0x40), 1), success) +mstore(0xb5820, mload(0xb5740)) + mstore(0xb5840, mload(0xb5760)) +mstore(0xb5860, mload(0xb57c0)) + mstore(0xb5880, mload(0xb57e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb5820, 0x80, 0xb5820, 0x40), 1), success) +mstore(0xb58a0, mload(0xb5820)) + mstore(0xb58c0, mload(0xb5840)) +mstore(0xb58e0, mload(0x189c0)) + mstore(0xb5900, mload(0x189e0)) +mstore(0xb5920, mload(0x18a00)) + mstore(0xb5940, mload(0x18a20)) +mstore(0xb5960, mload(0x18a40)) + mstore(0xb5980, mload(0x18a60)) +mstore(0xb59a0, keccak256(0xb58a0, 256)) +mstore(743872, mod(mload(743840), f_q)) +mstore(0xb59e0, mulmod(mload(0xb59c0), mload(0xb59c0), f_q)) +mstore(0xb5a00, mulmod(1, mload(0xb59c0), f_q)) +mstore(0xb5a20, mload(0xb5920)) + mstore(0xb5a40, mload(0xb5940)) +mstore(0xb5a60, mload(0xb5a00)) +success := and(eq(staticcall(gas(), 0x7, 0xb5a20, 0x60, 0xb5a20, 0x40), 1), success) +mstore(0xb5a80, mload(0xb58a0)) + mstore(0xb5aa0, mload(0xb58c0)) +mstore(0xb5ac0, mload(0xb5a20)) + mstore(0xb5ae0, mload(0xb5a40)) +success := and(eq(staticcall(gas(), 0x6, 0xb5a80, 0x80, 0xb5a80, 0x40), 1), success) +mstore(0xb5b00, mload(0xb5960)) + mstore(0xb5b20, mload(0xb5980)) +mstore(0xb5b40, mload(0xb5a00)) +success := and(eq(staticcall(gas(), 0x7, 0xb5b00, 0x60, 0xb5b00, 0x40), 1), success) +mstore(0xb5b60, mload(0xb58e0)) + mstore(0xb5b80, mload(0xb5900)) +mstore(0xb5ba0, mload(0xb5b00)) + mstore(0xb5bc0, mload(0xb5b20)) +success := and(eq(staticcall(gas(), 0x6, 0xb5b60, 0x80, 0xb5b60, 0x40), 1), success) +mstore(0xb5be0, mload(0xb5a80)) + mstore(0xb5c00, mload(0xb5aa0)) +mstore(0xb5c20, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0xb5c40, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0xb5c60, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0xb5c80, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0xb5ca0, mload(0xb5b60)) + mstore(0xb5cc0, mload(0xb5b80)) +mstore(0xb5ce0, 0x0181624e80f3d6ae28df7e01eaeab1c0e919877a3b8a6b7fbc69a6817d596ea2) + mstore(0xb5d00, 0x1783d30dcb12d259bb89098addf6280fa4b653be7a152542a28f7b926e27e648) + mstore(0xb5d20, 0x00ae44489d41a0d179e2dfdc03bddd883b7109f8b6ae316a59e815c1a6b35304) + mstore(0xb5d40, 0x0b2147ab62a386bd63e6de1522109b8c9588ab466f5aadfde8c41ca3749423ee) +success := and(eq(staticcall(gas(), 0x8, 0xb5be0, 0x180, 0xb5be0, 0x20), 1), success) +success := and(eq(mload(0xb5be0), 1), success) + + if not(success) { revert(0, 0) } + return(0, 0) + + } + } + } \ No newline at end of file diff --git a/justfile b/justfile index a49858bf..609d503e 100644 --- a/justfile +++ b/justfile @@ -9,6 +9,8 @@ lint: fmt setup-circuits: cargo run -r -- sync-step -o artifacts -k 22 cargo run -r -- committee-update -o artifacts -k 18 -gen-evm-contracts: +gen-step-evm-verifier: cargo run -r -- sync-step -c ./lightclient-circuits/config/sync_step.json -o evm-verifier ./contracts/snark-verifiers/sync_step.yul # cargo run -r -- sync-step -c ./lightclient-circuits/config/committee_update.json -o evm-verifier ./contracts/snark-verifiers/committee_update.yul +gen-rotation-evm-verifier: + cargo run -r -- aggregation -c ./lightclient-circuits/config/aggregation.json --app-pk-path ./build/committee_update.pkey --app-config-path ./lightclient-circuits/config/committee_update.json -i ./rotation-snark -o evm-verifier ./contracts/snark-verifiers/committee_update_compressed.yul diff --git a/lightclient-circuits/config/aggregation.json b/lightclient-circuits/config/aggregation.json new file mode 100644 index 00000000..1eba6c6e --- /dev/null +++ b/lightclient-circuits/config/aggregation.json @@ -0,0 +1,267 @@ +{ + "params": { + "strategy": "Vertical", + "k": 17, + "num_advice_per_phase": [ + 245, + 0, + 0 + ], + "num_lookup_advice_per_phase": [ + 29, + 0, + 0 + ], + "num_fixed": 5 + }, + "break_points": [ + [ + 131060, + 131062, + 131062, + 131061, + 131062, + 131061, + 131062, + 131062, + 131062, + 131061, + 131061, + 131062, + 131062, + 131061, + 131061, + 131061, + 131062, + 131062, + 131062, + 131062, + 131062, + 131061, + 131062, + 131062, + 131060, + 131061, + 131061, + 131060, + 131062, + 131060, + 131061, + 131060, + 131062, + 131060, + 131061, + 131060, + 131061, + 131062, + 131062, + 131060, + 131061, + 131060, + 131060, + 131062, + 131062, + 131062, + 131061, + 131061, + 131061, + 131060, + 131062, + 131060, + 131061, + 131062, + 131060, + 131060, + 131062, + 131060, + 131062, + 131061, + 131061, + 131062, + 131062, + 131061, + 131062, + 131062, + 131062, + 131060, + 131061, + 131062, + 131062, + 131062, + 131060, + 131062, + 131061, + 131061, + 131060, + 131061, + 131061, + 131062, + 131061, + 131060, + 131062, + 131062, + 131061, + 131061, + 131060, + 131062, + 131061, + 131060, + 131062, + 131061, + 131061, + 131061, + 131062, + 131060, + 131061, + 131061, + 131061, + 131060, + 131060, + 131060, + 131062, + 131062, + 131062, + 131060, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131061, + 131060, + 131062, + 131060, + 131062, + 131061, + 131062, + 131060, + 131060, + 131062, + 131061, + 131060, + 131062, + 131061, + 131061, + 131062, + 131061, + 131061, + 131062, + 131061, + 131062, + 131061, + 131060, + 131062, + 131062, + 131062, + 131061, + 131062, + 131060, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131060, + 131062, + 131061, + 131060, + 131061, + 131062, + 131062, + 131060, + 131062, + 131062, + 131060, + 131060, + 131060, + 131060, + 131061, + 131062, + 131061, + 131062, + 131062, + 131061, + 131061, + 131062, + 131061, + 131060, + 131060, + 131060, + 131062, + 131062, + 131060, + 131062, + 131060, + 131060, + 131061, + 131062, + 131062, + 131061, + 131061, + 131060, + 131062, + 131061, + 131062, + 131061, + 131060, + 131060, + 131061, + 131061, + 131062, + 131062, + 131060, + 131062, + 131061, + 131061, + 131062, + 131062, + 131062, + 131060, + 131062, + 131060, + 131060, + 131061, + 131060, + 131061, + 131062, + 131060, + 131061, + 131060, + 131062, + 131060, + 131060, + 131060, + 131060, + 131060, + 131061, + 131061, + 131062, + 131062, + 131060, + 131062, + 131061, + 131061, + 131062, + 131062, + 131062, + 131060, + 131062, + 131060, + 131060, + 131062, + 131062, + 131062, + 131061 + ], + [], + [] + ] +} \ No newline at end of file diff --git a/lightclient-circuits/config/committee_update.json b/lightclient-circuits/config/committee_update.json index 58079201..6e7c09b8 100644 --- a/lightclient-circuits/config/committee_update.json +++ b/lightclient-circuits/config/committee_update.json @@ -1 +1,33 @@ -{ "strategy": "Vertical", "k": 21, "num_advice_per_phase": [41, 0, 0], "num_lookup_advice_per_phase": [3, 0, 0], "num_fixed": 1 } +{ + "params": { + "strategy": "Vertical", + "k": 18, + "num_advice_per_phase": [ + 11, + 0, + 0 + ], + "num_lookup_advice_per_phase": [ + 1, + 0, + 0 + ], + "num_fixed": 1 + }, + "break_points": [ + [ + 262131, + 262130, + 262131, + 262130, + 262130, + 262131, + 262131, + 262131, + 262130, + 262131 + ], + [], + [] + ] +} \ No newline at end of file diff --git a/lightclient-circuits/config/committee_update_aggregation.json b/lightclient-circuits/config/committee_update_aggregation.json deleted file mode 100644 index c64125d1..00000000 --- a/lightclient-circuits/config/committee_update_aggregation.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "degree": 22, - "num_advice": 5, - "num_lookup_advice": 1, - "num_fixed": 1, - "lookup_bits": 22 - } \ No newline at end of file diff --git a/lightclient-circuits/src/aggregation.rs b/lightclient-circuits/src/aggregation.rs new file mode 100644 index 00000000..705894e4 --- /dev/null +++ b/lightclient-circuits/src/aggregation.rs @@ -0,0 +1,58 @@ +use std::{env::{var, set_var}, iter}; + +use eth_types::Testnet; +use halo2_base::{ + gates::builder::{CircuitBuilderStage, MultiPhaseThreadBreakPoints}, + utils::fs::gen_srs, +}; +use halo2_proofs::poly::{commitment::Params, kzg::commitment::ParamsKZG}; +use halo2curves::bn256::Fr; +use serde::{Deserialize, Serialize}; +use snark_verifier_sdk::{halo2::aggregation::AggregationCircuit, Snark, SHPLONK}; + +use crate::{ + committee_update_circuit::CommitteeUpdateCircuit, + util::{AppCircuit, Eth2ConfigPinning, PinnableCircuit}, +}; + +pub type AggregationConfigPinning = Eth2ConfigPinning; + +impl PinnableCircuit for AggregationCircuit { + type Pinning = AggregationConfigPinning; + + fn break_points(&self) -> MultiPhaseThreadBreakPoints { + AggregationCircuit::break_points(self) + } +} + +impl AppCircuit for AggregationCircuit { + type Pinning = AggregationConfigPinning; + + type Witness = Snark; + + fn create_circuit( + stage: CircuitBuilderStage, + pinning: Option, + params: &ParamsKZG, + snark: &Self::Witness, + ) -> Result, halo2_proofs::plonk::Error> { + let lookup_bits = params.k() as usize - 1; + let circuit = AggregationCircuit::new::( + stage, + pinning.map(|p| p.break_points), + lookup_bits, + params, + iter::once(snark.clone()), + ); + + match stage { + CircuitBuilderStage::Prover => {} + _ => { + circuit.config(params.k(), Some(10)); + set_var("LOOKUP_BITS", lookup_bits.to_string()); + } + }; + + Ok(circuit) + } +} diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 5d3fcbda..299f4856 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -186,7 +186,7 @@ impl CommitteeUpdateCircuit { impl AppCircuit for CommitteeUpdateCircuit { type Pinning = Eth2ConfigPinning; - type Args = witness::CommitteeRotationArgs; + type Witness = witness::CommitteeRotationArgs; fn create_circuit( stage: CircuitBuilderStage, @@ -216,45 +216,6 @@ impl AppCircuit for CommitteeUpdateCircuit { stage, )) } - - // type ThreadBuilder = ShaBitThreadBuilder; - - // type Args = witness::CommitteeRotationArgs; - - // fn synthesize( - // thread_pool: &mut Self::ThreadBuilder, - // range: &RangeChip, - // args: &Self::Args, - // ) -> Result>, Error> { - // Self::synthesize(thread_pool, range, args) - // } - - // fn setup( - // k: usize, - // out: Option<&Path>, - // ) -> ( - // ParamsKZG, - // ProvingKey, - // MultiPhaseThreadBreakPoints, - // ) { - // let args = witness::CommitteeRotationArgs::::default(); - // let range = RangeChip::::new(RangeStrategy::Vertical, 8); - // let mut thread_pool = ShaBitThreadBuilder::keygen(); - - // let assigned_instances = Self::synthesize(&mut thread_pool, &range, &args).unwrap(); - - // let params = gen_srs(k as u32); - - // let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - - // circuit.config(k, None); - - // let pk = gen_pkey(|| "committee_update", ¶ms, out, &circuit).unwrap(); - - // let break_points = circuit.break_points(); - - // (params, pk, break_points) - // } } // #[cfg(test)] @@ -272,7 +233,7 @@ impl AppCircuit for CommitteeUpdateCircuit { // use super::*; // use ark_std::{end_timer, start_timer}; -// use eth_types::Test; +// use eth_types::Testnet; // use halo2_base::{ // gates::{ // builder::{CircuitBuilderStage, FlexGateConfigParams}, @@ -319,7 +280,7 @@ impl AppCircuit for CommitteeUpdateCircuit { // }; // let range = RangeChip::::new(RangeStrategy::Vertical, 8); -// CommitteeUpdateCircuit::::synthesize(thread_pool, &range, &args).unwrap(); +// CommitteeUpdateCircuit::::synthesize(thread_pool, &range, &args).unwrap(); // let config = thread_pool.config(k, None); // set_var("LOOKUP_BITS", (config.k - 1).to_string()); @@ -340,8 +301,7 @@ impl AppCircuit for CommitteeUpdateCircuit { // let assigned_instances = load_circuit_with_data(&mut thread_pool, k); -// let circuit = Eth2CircuitBuilder::prover(assigned_instances, thread_pool, break_points); - +// CommitteeUpdateCircuit::::create_circuit(CircuitBuilderStage::Prover, pinning, params, args) // gen_snark_shplonk(params, pk, circuit, None::) // } @@ -359,28 +319,28 @@ impl AppCircuit for CommitteeUpdateCircuit { // end_timer!(timer); // } -// #[test] -// fn test_committee_update_proofgen() { -// const K: usize = 18; +// // #[test] +// // fn test_committee_update_proofgen() { +// // const K: usize = 18; -// let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); +// // let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); -// let mut builder = ShaBitThreadBuilder::prover(); -// let assigned_instances = load_circuit_with_data(&mut builder, K); +// // let mut builder = ShaBitThreadBuilder::prover(); +// // let assigned_instances = load_circuit_with_data(&mut builder, K); -// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); +// // let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); -// let instances = circuit.instances(); -// let proof = full_prover(¶ms, &pk, circuit, instances.clone()); +// // let instances = circuit.instances(); +// // let proof = full_prover(¶ms, &pk, circuit, instances.clone()); -// assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) -// } +// // assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) +// // } // #[test] // fn circuit_agg() { // let path = "./config/committee_update_aggregation.json"; // const K: usize = 17; -// let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); +// let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); // let snark = gen_application_snark(K, ¶ms_app, &pk_app, break_points); diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index d87f3353..a8256ef5 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -15,6 +15,7 @@ pub mod witness; pub mod committee_update_circuit; pub mod sync_step_circuit; +pub mod aggregation; mod builder; mod poseidon; diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 43577a0f..82c5d436 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -295,13 +295,13 @@ impl SyncStepCircuit { impl AppCircuit for SyncStepCircuit { type Pinning = Eth2ConfigPinning; - type Args = witness::SyncStepArgs; + type Witness = witness::SyncStepArgs; fn create_circuit( stage: CircuitBuilderStage, pinning: Option, params: &ParamsKZG, - args: &Self::Args, + args: &Self::Witness, ) -> Result, Error> { let mut thread_pool = ShaThreadBuilder::from_stage(stage); let range = RangeChip::::new(RangeStrategy::Vertical, 8); diff --git a/lightclient-circuits/src/util/circuit.rs b/lightclient-circuits/src/util/circuit.rs index f73b1cc4..b7d3a2c3 100644 --- a/lightclient-circuits/src/util/circuit.rs +++ b/lightclient-circuits/src/util/circuit.rs @@ -1,14 +1,15 @@ -use std::env::{set_var, var}; +use std::env::{args, set_var, var}; use std::{fs::File, path::Path}; use halo2_base::gates::builder::{ CircuitBuilderStage, FlexGateConfigParams, MultiPhaseThreadBreakPoints, }; -use halo2_proofs::plonk::{Error, VerifyingKey, Circuit}; +use halo2_proofs::plonk::{Circuit, Error, VerifyingKey}; use halo2_proofs::{plonk::ProvingKey, poly::kzg::commitment::ParamsKZG}; use halo2curves::bn256::{Bn256, Fr, G1Affine}; use serde::{Deserialize, Serialize}; use snark_verifier_sdk::evm::{gen_evm_proof, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; +use snark_verifier_sdk::halo2::aggregation::AggregationCircuit; use snark_verifier_sdk::{gen_pk, halo2::gen_snark_shplonk, read_pk}; use snark_verifier_sdk::{CircuitExt, Snark}; @@ -85,7 +86,7 @@ pub trait PinnableCircuit: CircuitExt { pub trait AppCircuit: Sized { type Pinning: Halo2ConfigPinning; - type Args: Clone + Default; + type Witness: Clone; /// Creates a [`PinnableCircuit`], auto-configuring the circuit if not in production or prover mode. /// @@ -96,13 +97,18 @@ pub trait AppCircuit: Sized { stage: CircuitBuilderStage, pinning: Option, params: &ParamsKZG, - args: &Self::Args, + args: &Self::Witness, ) -> Result, Error>; /// Reads the proving key for the pre-circuit. /// If `read_only` is true, then it is assumed that the proving key exists and can be read from `path` (otherwise the program will panic). - fn read_pk(params: &ParamsKZG, path: impl AsRef) -> ProvingKey { - let circuit = Self::create_circuit(CircuitBuilderStage::Keygen, None, params, &Self::Args::default()).unwrap(); + fn read_pk( + params: &ParamsKZG, + path: impl AsRef, + args: &Self::Witness, + ) -> ProvingKey { + let circuit = + Self::create_circuit(CircuitBuilderStage::Keygen, None, params, args).unwrap(); custom_read_pk(path, &circuit) } @@ -112,15 +118,11 @@ pub trait AppCircuit: Sized { params: &ParamsKZG, pk_path: impl AsRef, pinning_path: impl AsRef, + witness: &Self::Witness, ) -> ProvingKey { - let circuit = Self::create_circuit( - CircuitBuilderStage::Keygen, - None, - params, - &Self::Args::default(), - ) - .unwrap(); - + let circuit = + Self::create_circuit(CircuitBuilderStage::Keygen, None, params, witness).unwrap(); + let pk_exists = pk_path.as_ref().exists(); let pk = gen_pk(params, &circuit, Some(pk_path.as_ref())); if !pk_exists { @@ -140,11 +142,12 @@ pub trait AppCircuit: Sized { pk_path: impl AsRef, pinning_path: impl AsRef, read_only: bool, + witness: &Self::Witness, ) -> ProvingKey { if read_only { - Self::read_pk(params, pk_path) + Self::read_pk(params, pk_path, witness) } else { - Self::create_pk(params, pk_path, pinning_path) + Self::create_pk(params, pk_path, pinning_path, witness) } } @@ -153,7 +156,7 @@ pub trait AppCircuit: Sized { pk: &ProvingKey, pinning_path: impl AsRef, path: Option>, - witness: &Self::Args, + witness: &Self::Witness, ) -> Result { let pinning = Self::Pinning::from_path(pinning_path); let circuit = @@ -167,13 +170,9 @@ pub trait AppCircuit: Sized { params: &ParamsKZG, pk: &ProvingKey, yul_path: impl AsRef, + witness: &Self::Witness, ) -> Result, Error> { - let circuit = Self::create_circuit( - CircuitBuilderStage::Keygen, - None, - params, - &Self::Args::default(), - )?; + let circuit = Self::create_circuit(CircuitBuilderStage::Keygen, None, params, witness)?; let deployment_code = custom_gen_evm_verifier_shplonk(params, pk.get_vk(), &circuit, Some(yul_path)); @@ -186,11 +185,11 @@ pub trait AppCircuit: Sized { pinning_path: impl AsRef, path: impl AsRef, deployment_code: Option>, - args: &Self::Args, + witness: &Self::Witness, ) -> Result { let pinning = Self::Pinning::from_path(pinning_path); let circuit = - Self::create_circuit(CircuitBuilderStage::Prover, Some(pinning), params, args)?; + Self::create_circuit(CircuitBuilderStage::Prover, Some(pinning), params, witness)?; let calldata = write_calldata_generic(params, pk, circuit, path, deployment_code); Ok(calldata) diff --git a/prover/src/args.rs b/prover/src/args.rs index bd787f35..6d628e63 100644 --- a/prover/src/args.rs +++ b/prover/src/args.rs @@ -15,11 +15,12 @@ pub struct Options { pub enum Proof { CommitteeUpdate(Args), SyncStep(Args), + Aggregation(AggregationArgs), } #[derive(Clone, clap::Args)] pub struct Args { - #[clap(long, short, default_value = "proof")] + #[clap(long, short, default_value = "snark")] pub out: Out, #[clap(long, short)] @@ -46,10 +47,22 @@ pub struct Args { } +#[derive(Clone, clap::Args)] +pub struct AggregationArgs { + #[clap(flatten)] + pub aggregation: Args, + + #[clap(long)] + pub app_pk_path: PathBuf, + + #[clap(long)] + pub app_config_path: PathBuf, +} + #[derive(Clone, Debug, PartialEq, EnumString)] pub enum Out { - #[strum(serialize = "proof")] - Proof, + #[strum(serialize = "snark")] + Snark, #[strum(serialize = "artifacts")] Artifacts, #[strum(serialize = "evm-verifier")] diff --git a/prover/src/main.rs b/prover/src/main.rs index 03e5067b..13db7dc6 100644 --- a/prover/src/main.rs +++ b/prover/src/main.rs @@ -1,14 +1,22 @@ -use std::future::Future; +#![feature(associated_type_bounds)] +use std::{fs, future::Future, path::Path}; use args::{Args, Options, Out, Proof}; use cli_batteries::version; -use halo2curves::bn256::Fr; +use halo2curves::bn256::{Bn256, Fr, G1Affine}; use lightclient_circuits::{ committee_update_circuit::CommitteeUpdateCircuit, sync_step_circuit::SyncStepCircuit, util::{gen_srs, AppCircuit}, }; use preprocessor::{fetch_rotation_args, fetch_step_args}; +use snark_verifier::{ + loader::halo2::halo2_ecc::halo2_base::halo2_proofs::{ + plonk::VerifyingKey, poly::kzg::commitment::ParamsKZG, + }, + system::halo2::Config, +}; +use snark_verifier_sdk::{halo2::aggregation::AggregationCircuit, read_instances, Snark}; mod args; @@ -27,49 +35,85 @@ async fn app(options: Options) -> eyre::Result<()> { async fn spec_app(proof: &Proof) -> eyre::Result<()> { match proof { Proof::CommitteeUpdate(args) => { - generic_circuit_app::, _, _>( + generic_circuit_cli::, _, _>( args, fetch_rotation_args, "committee_update", + as AppCircuit>::Witness::default(), ) .await } Proof::SyncStep(args) => { - generic_circuit_app::, _, _>(args, fetch_step_args, "sync_step") - .await + generic_circuit_cli::, _, _>( + args, + fetch_step_args, + "sync_step", + as AppCircuit>::Witness::default(), + ) + .await + } + Proof::Aggregation(args) => { + let params = gen_srs(CommitteeUpdateCircuit::::get_degree( + &args.app_config_path, + )); + + let app_pk = CommitteeUpdateCircuit::::read_pk( + ¶ms, + &args.app_pk_path, + & as AppCircuit>::Witness::default(), + ); + + let snark = read_snark( + ¶ms, + app_pk.get_vk(), + args.aggregation + .input_path + .as_ref() + .expect("path to SNARK is required"), + )?; + + generic_circuit_cli::( + &args.aggregation, + |_| async { Ok(snark.clone()) }, + "aggregation", + snark.clone(), + ) + .await } } } -async fn generic_circuit_app< +async fn generic_circuit_cli< Circuit: AppCircuit, FnFetch: FnOnce(String) -> Fut, - Fut: Future>, + Fut: Future>, >( - cli_args: &Args, + args: &Args, fetch: FnFetch, name: &str, + default_witness: Circuit::Witness, ) -> eyre::Result<()> { - let k = cli_args + let k = args .k - .unwrap_or_else(|| Circuit::get_degree(&cli_args.config_path)); + .unwrap_or_else(|| Circuit::get_degree(&args.config_path)); let params = gen_srs(k); let pk_filename = format!("{}.pkey", name); - match cli_args.out { - Out::Proof => { + match args.out { + Out::Snark => { let pk = Circuit::read_or_create_pk( ¶ms, - cli_args.build_dir.join(&pk_filename), - &cli_args.config_path, + args.build_dir.join(&pk_filename), + &args.config_path, true, + &default_witness, ); - let witness = fetch(cli_args.node_url.clone()).await?; + let witness = fetch(args.node_url.clone()).await?; Circuit::gen_snark_shplonk( ¶ms, &pk, - &cli_args.config_path, - Some(&cli_args.path_out), + &args.config_path, + Some(&args.path_out), &witness, ) .map_err(|e| eyre::eyre!("Failed to generate proof: {}", e))?; @@ -77,41 +121,69 @@ async fn generic_circuit_app< Out::Artifacts => { Circuit::create_pk( ¶ms, - cli_args.build_dir.join(&pk_filename), - &cli_args.config_path, + args.build_dir.join(&pk_filename), + &args.config_path, + &default_witness, ); } Out::EvmVerifier => { let pk = Circuit::read_or_create_pk( ¶ms, - cli_args.build_dir.join(&pk_filename), - &cli_args.config_path, + args.build_dir.join(&pk_filename), + &args.config_path, true, + &default_witness, ); - Circuit::gen_evm_verifier_shplonk(¶ms, &pk, &cli_args.path_out) + Circuit::gen_evm_verifier_shplonk(¶ms, &pk, &args.path_out, &default_witness) .map_err(|e| eyre::eyre!("Failed to EVM verifier: {}", e))?; } Out::Calldata => { let pk = Circuit::read_or_create_pk( ¶ms, - cli_args.build_dir.join(&pk_filename), - &cli_args.config_path, + args.build_dir.join(&pk_filename), + &args.config_path, true, + &default_witness, ); - let witness = fetch(cli_args.node_url.clone()).await?; + let witness = fetch(args.node_url.clone()).await?; - let calldata = Circuit::gen_calldata( + Circuit::gen_calldata( ¶ms, &pk, - &cli_args.config_path, - &cli_args.path_out, + &args.config_path, + &args.path_out, None, &witness, ) .map_err(|e| eyre::eyre!("Failed to generate calldata: {}", e))?; - - println!("{}", calldata) } } Ok(()) } + +fn read_snark( + params: &ParamsKZG, + vk: &VerifyingKey, + path: &Path, +) -> eyre::Result { + let path_str = path.to_str().unwrap(); + + let proof = fs::read(format!("{path_str}.proof")) + .map_err(|e| eyre::eyre!("Error reading proof file: {}", e))?; + let instances = read_instances(format!("{path_str}.instances")) + .map_err(|e| eyre::eyre!("Error reading instances file: {}", e))?; + + let protocol = snark_verifier::system::halo2::compile( + params, + vk, + Config::kzg() + .with_num_instance(instances.iter().map(|i| i.len()).collect()) + .with_accumulator_indices(None), // FIXME: use >::accumulator_indices() + ); + + Ok(Snark { + protocol, + proof, + instances, + }) +} diff --git a/rotation-aggr.calldata b/rotation-aggr.calldata new file mode 100644 index 00000000..276c078d --- /dev/null +++ b/rotation-aggr.calldata @@ -0,0 +1 @@ +00000000000000000000000000000000000000000040e8c2e6254055a03c4038000000000000000000000000000000000000000000e63383b2cb454f524778d00000000000000000000000000000000000000000000011063deb610e5d7badc70000000000000000000000000000000000000000001b8532a3f2dc08d08c632d0000000000000000000000000000000000000000006349176c4b60d4a723ae91000000000000000000000000000000000000000000001d491833b03f33ddb29d0000000000000000000000000000000000000000005fa70b66c56f175259dc59000000000000000000000000000000000000000000cf5433d5e8417542c2ebf1000000000000000000000000000000000000000000001b1484b26f50775ee74e0000000000000000000000000000000000000000003607702e7972efc5ae41100000000000000000000000000000000000000000009ee3bee511e900b42fb00100000000000000000000000000000000000000000000089a8b0bc1e385593c10245e4f4ae6893a2773c3e98090ec848e3fab2178e135074bf784ea338312839c254cae6674da73cdb5d9edc060a9e9bedaf52a5fffeee26e44c188c8e87da7ce01ec3393707594c19e519a5f05c3a2c06f4c3d3a77412bd2fecfd7bd1e8e8932144aa5bd7322a82a058bf54c3fbe0d3894c4fb89117fea6b51041f971c02b82a0de35bbb8cd61c80fe3345a24b33d38f118d4e94afcecf4ee369b0b7344303ac26875c22d9f9a6e289fdde18fa35fb58eaf79dd085867292e40b05ca682e1a1c13c43f6d5ed72a810ff7988e55c40ef7d759b8a1d387cd24ebc70048bd28962429977c94f9b79977a7f5850c90a8dc6fb5f28da84945f8e58cc7e26c3a4c42e01c55d4266d4318a4a6ca9feef141cf2b885694d2d4506bbc158c69b78db8847f272579622726e031209788349fe38f863ce98b16df435780d9cf363cb8b5e48b2109eceb10cb5518b795eaf6a2db032fbe0130a8fb115e6692d0dd17b10f32ae28032d3fe5e62d2b5c9c53da2ad82c44d22e7d42e6320af3192f356083fe65d52a13bee8bfa3e59c1cb6771d2e4c2b1e12048610f1fad1d087483727a14eaf8124d569bf9b57ad57cf76109d0462480944f02fc18cd28d6bff6b08df526ad5c62c91711b8d3d3de8c0d156b8cecc2249b234a3fe00f7cd8553aba642238558fe05ced8fe219ce8d19957a77c4b556a941734fb70078175e02dc3ab849390e3e91305b6d9d93635534fa525264c5f1fde16c13ee760e37833ea20ed7bbfcf6b1a102f8cbf6d2189ad75ca2e59d4b81a5b856ed2aa0fc22803e71e665d35e1dcdf150338d04546c6db450b5efbe2b84aad9de4ee18d3d9ff88236f6dd71ff8d5341228685e28004d4fab0119478468878ee90f8eecc2164bb6761ca3b80d89392f09f4880d4da06a93a407c58365fcf1d007844703d2b4ada87dfb02bf53dd28ec266ab5cf4b29e2d226eece702c8dfbaeef9751585b4763bd45ff2e17bae0c6580cc8501eeadd5cc3c585edfd388136aaab39a6b95ef0a0c83066c44177fe46b92195942652df97fbb4f33c0a5935036b6b549c43b9f2e07a5e6bb401815b0a9f210b8252098e3dba3e50adb9d17143aace7b0d10abd058e55d3ccb5b11431d4b092648e5796c49e974dc2d8832ea033648f0af598a791896b3c71424e07ab9d4058594d91ae0a7e7ecf20d89c6593335293f6ed684806996492eb7d3f1d3268f127e0ad835d7300bbe2d185cfbc63dc061a4f32304951e612a42bfc00657a7970036c770bd1435866f47291d34051c82175d8038a0d16c2927a05666a6990fca27cd75735a5a2c4031935ccc4b8d996bfdfb2a6851e7f8911fca52f289707b9f2b0bc0d658d5084da79b2f4a8dc8edb9f27f04716020e8d4a02e93fcf117b0ef26f6b2293f33c418d1cb02d5b744c0f4ae6449f388badc4bce2bf35c4edf188f162a411d50317a4a7b2765400c04ae039242d3d53fb5618cf0d7812a6568a5e507f725ef1ed1ccd8bc9a9705d1d2dee59a7bb422ddc9f607ca1ab58c207adb8d1ef967cbc75f5f57df2efe771b542efd9572ef50fd2ae2ac4305cbd1bc9a33a1296703ffe4427d4a7c415ad6aba3ebdd588975af2a8e5cb98fac4c4ee29c6fee00990ad7eb38f17008011fedca459e41f0b8bf2eb940cf9b0751dd3ded958e8316e29679ccd33cbe2248a125dfbd9e71b7854abb74245ffb75e5aa9cf58a7cad0cff5777715ab92bdd518bdab4fb310d8f016c01f7c8f3ba8d9d4273e0c9eeee23934b76067ef1f99711d081451df939d185b8bcab853a59a9e25a006db48c670bd8694cee90474451f4f79920a9129a14ebb040cf9add08507a6681ab021bce11175df7eeaa2dc7c1a028d7f1ff930fa09bccef598ea16652d46ad4a26508f6070ce2be709d963fbb01ee5a19ec645f76cbb1a255d44497ac4cd0a71b707d173018352db3fc51c83b99690466876707a8923f4956e340d9670aaaf51f94d17c23a098a7cfa7fe79fa8667b9b0f7dcc53c11ec2fe6ac24f4b020dcfa913ed55d266f618941284d73c76887113dd6aea1471f38b0277b6e1a978f7ca9a91df4440b93235f32c4908637d2402919b060b096c7bab44714da2af503ad72b6d19e92076f8e00806c8bb51523e43f595e82708925bd49702ca4c0cd2b70f326b1046509ac255c16bac6716fb553b3285d5dee47d913c292d39b9779f2800dacacc6dd2e346e4b39b85ff77ec830f41a84fd8749e2218970cb8da8d457af9d451164211915d7ea96e27461f82f3c385315462191b4e48a0ecb5580749f6c45a0a756642dc659ef138fdbd87a01549f21b7556862c6c247063be5a73cc6fb27fe18260d1a61bc09aa773d2daf32b063d74222987292638d322fefed12a6b307c6fcfab026807094eec7ada812e4aed6c16720cb9cd53eee7fe452907624b3948f07d36e112dea434884c6c4c19c93e632ad61243eb3c647e6d6e76ac06fcd53594900fd19ec2c4dd3348cab789048bedd4b9800457dfb97635d3f780b270c0d1fb864bf2d3a601778bbf34966df2bbb186257ab4974a4c0521a0f175c50e312e390d85b05cf1bc7b6bc8ed7991ce9f033436eaeaa120ae3ef10913d59f87f998224db8e2c942c9ff83155b4bf0613daefd7f6050dbe8457c6ad3387eec1ad400eec0e5a1b8de5b511203f06016e3827453fe668f9ffde367a307feb68f2642f1614d09d22adf40fba61f6e53e4ce5b09fe6f2df038f75bf3a340791bfc7448713d99c4b219ba8704aa156fbcd3fd5754cdbdaca9cbac9490953dec9c602de866cbbba3b1a0d9bc9928ca2dc984174d00286763543c3d3add04395acb617aea43486611a1434914357d1277c53aaba8f5bb0d2350ac9c39b82bce59578abcfa336a3cad412a35f5d9c622b366b54b20e3487731e6b7903fba7b76d3ac2dc1bd7da1fd52b23d1798268c1dcc72d696ed3bba8a88d72404568d5d1f7da2829e31b40e5f3ac0d72efa0eca494a769841baa5208bf4e8d7523e53af63bae5e9f38003dee853a22dc398a68ac0d3fb7bbaa6419ece77aa000434a0340b878a3d9097f1d27b1ed1aa4cb76e44ab8107cbcb779542e0ea539a2e636b0173ea174cc94115c3907922ab551fea3ea18f59a83a1acc544c728ef8899e9c990c60f3ec5db00ff8ff65f2ec5290ec7d41c039781e69839467cbb0a038c70bca4f48de7793a539df876bc0f9fcd9c1caf3e3decaf6d7d91ec0b64ce8ca1c212863782adcfa46ec22c59ba0cd425cf190569a1f1df0a1e865228c3272db39725dc289b1249bc2bc864d62921ed46babcc7ece662bcbbc6b0ef3bfbd8554aed2bd25f5255d94d60f3215d6103bc4a7630b11910505e0d70673b3c8ae2fa57136a3630689786c902428cc2e513568c3464a575dd4e2c0f39f5ed4f0f3806b2cdc0071578aab199b4bb52508a0a0028f61840afc8350508ae32c0e18afb607ba4b7be65a231a48c0afde3351528bec47886448414fa43fe65d0e617b8be65f3f88dae4dae02cbec03bca1bd98247fb57b47f047e053b5a92d8468d579e5fd12adef27f66b9375ce69e1b35f9c1a1d7dbc8ad890204b48f3698d372748708548441fca124e2a05514891f19265141800b17892677e5ef98d5703d2b05312af9db74efb102d2406874b4162109922c7b8ed53af9d7f71f53a8fa6548374bcbe164aba1d8f31e7f76a540f42af4f0c8981a4f3d386c9fba7b92d452b59d237db56b180a0c77f1a1685493b49fcb71ed9f61ac8ff20dd4dcb5166666b565ba54204ea9e0a44fd409a9b12dccc04aa0973758c86caa43e1c47a26fe35595bea5d5a8d80f9d3f7ebbca936c378047ee103fd97ed85066008a87b3d85cd4f05471ecf33ca7b9de2c962d347e92bbb39e15d3c29428448ae73a135fdd70532c2714a775fa7a27c19a21bbfd6443ac3bfe094f3b2300a7548f63a96bdf974bfbd40e6e96403ad0ab3d5059ff3505b975be1dc1b0ffdac95ee0268752b469fed06079dde4a0dd7bc784d1242027e556648f109900132079a6dc13bf5052c90f0f3fb02f843ced2be8c8c28fe77808b81397011744bd1b89b42417b00882fc54cfc8e1481deec0c59c6db49df3346f3599a7122af6ef7ef340c8296565050a146cfd27c66bd519167ca544a7cb6257c166630c16a9f06651ebb4756af105682eb5b3f76dc073f9294c730cc950c625a186d62b715cdf4e111beaefb9512d0230509254e474959b54f6be74f03c822b3a450d08fc46e9c3a79cbd87fa0bed680939283e8c2c8acb86c5a0736daf95583595a22b5384a4a75da47f5b005d3ab3e036c6afbd041253cf5b2bdcd1dc3d5c0e3c982e69fac5cee46c9eb421ae244da44b617366b1029fda9e52e20babbd8d59972410b12ba2c354ccb84d53456417843a349c8bd89df2cd74b195529387032c570b2b1de34fe200d1eeb9447acc39e109df82756990f4b641c25b170768fedce1ce254f544b2ed5949f9d7ce5e6ba5991a7d51c41d78c6206a8fec112c95efc30ef143b4d5120b224699aaa59d01cb21ebfdb7c9d8ddd52ecb141b76f0ec26df65325a9413dbc90508e40e8f7b974c56f5ee4fbcc50a974349c9fcfab32b9e1a618204c0ead9367e6594e11ec32ba5390f6f05a35544b4f34e4e738270f9024bb6a039db94a6f60870aba76d98c8e590a703ae616a44d4b9a87579907d9084c86bf2cd4d4cd9a0098e8ce706fb29184e35515798a26a5a33c420590fca6d97ef07126d991472943e76bd74e21e796e96f5165cfa06e36bbd8c6c665cfc11a83ae530af4e6d1a1078bc0acb92f7f18b7e88d1a57c746cc2256c131eecee51dd5b4d91d3ebd40301eb6eab6ff37e213cfcd88314376971395e4f581169285d618595925fbabb35d711277d807b1e2554af645b2ca520970bbf81898e8ab9b6073c471194d924f4b85f3340ed090afe6b0399bf04fc9740b4ac3f35bcda582b97c05f2124c0db0ab890cd730776c3da6f31b747b1892c847d5ba64abe1546ee6d319aa1c22a69ce73ba5b3264823b6a3ebee1118dc07ae8fc73c5165cef664f69874121aaf074647f2ad1bcc8dbfedb1800248b82515aaa797985e64a003e68e6b0a8f0c02ea4cf475f88472238a15fd92430d89ae2a5efd9bb100b43d80fc6ce1fd2a0fe711f8d62e2cca011834e21a77a3b8edff727022e790cf9c80c6d50fea87e0126ad92ad26c1aa10b5ebaca99ab825f60933f040b6052b5389b13c03530ab0e21fb458325c9c45a153cd013646af8019aa23ce7b6436eaaa4c337bacdd3c15011c2fa407fc6d344323d1b4b8bd15c034b63d8d57a9cb04b73c62196c25af1700fbbef20f370b31a8192a2c0b9f887fdc9b33d8f92e1ff1def4a127b41af352224388d6373463bf93dcb72bc8217ada2254ea2c2a35b00e49742ebbcc91d14371e90ec6b793418843d77358c6b740165073c04bce8d9f5ef5a6228191e5a3bd022997b0c5e557e58acb02da49cc3cd0cf2bbd6172e3b35279a09b70bb8e7967f271eb329d20b403705ea21375b5ed0f3254c687a4cb1b4fe52f7e0cdfedb3aa115a4d470f08ef11d5b183f7ec4be2204cb13ed001b7afc733da4df6ea2ac7adc1032f270023f2a7da97595bc199c8d774b7d1fe32cd25ba61bb95867fd999bc61086adec1a1064c6fcbb9558d37d70594e271fe27b6f64d01cda6a12c52a1bea2b55db24ee9c56d2c41fe210064b4a1d6894b37812300f2a1ba9a1c4fba6d08d0d43a1a1f6d90510a7663341fbf6f8bba60503e1a508c94d1f3d9405a957d49f24e82ce5ca65500222977b147a2feb8b27a1c32a49d63dc8ea6d3961decfb2ad0332ee52efa08e196919d4cf153c74dac8147c733db946bc5c09f230e63ccdab184bf4c3508176c73aa9ac2e9e4d59a290a9d019e030fef29d624cffa2fe8b3d041f937e6735d368dc8a1b133e81164fe92ff56bbefd218597dec3ca1d11e2e70f1dded7c6f6a56e0b704ce4cd412a41567792d2f69bee05dcbd372607b3d2471ec9013f51cac57a0ccdeba889ba3f8d104e20e1d72cbde764c8f044c9b071fb30420190d0a0b7ab8c71959af775f64225e2a533a4c8d1c7061c955fe03d56e81163a18bf6c6b43859de8be6f3d15b344a5aa1907957e9909c9a02c5cd0681ed18137dfe68321916d28d970e189d40b612b654f03fb22434267e7471ca6b47600ea0958dd4832712276321f2ffffeb7edb0a969c4ed273b9e9d0f0beab61cee3206444a1d5aed6ed3fa465d5a432b464d820d056d675de2542bfcecb5552a595046057694a3d06b3d1d32806d842dfb32bdfdc3bc12a1b26a8c5bbbdd5aa27170220ffaffd6de6b513e239fc8839344f91b4cd0fecebd5796afb955b7be02a5e03dda1dabf338c32f8f8685cc59d6c69c09cea9257d384b79b9a860434bce4d22a723298d45051a0c9ffdfcf495ed8c329a650d5533b076f30c8d58eaa73b39427b4f8b8bcaf14e0f86ebb3a272a4fc38f58b9e7791961e801552219c506beea2a1bd6ec380f0cf8c41a527490ed15da5f57017c3d9431c673d0f61420ad5744114502b3c0586cb2fae588a8211609d798a0cce1d25fc4e4ad4af05f3f32165f1dca0c4720603a18a17aa987b1a81f0cfa2d34eb59b84319653fad679ee24b03166fc34c4a6ff4728ca8e00b10db792ba624b186e7dff2c91eaea91a1978b2be2a6f02855d325a85ba34b06fd71827f3c1ef6ac0d43346e7a652d2550993bba827ee9407cea79270ac3cdea7585e36321e2ad54dd482ad0b47e178af00629cd105a5473b2b0aefec1fb9518545eba56dab54cb27b98ff87f8c00bac35ed4d068050ad4021fa1f09601ffb30eee1b128fb65683d3ad9124c54816bacb12b4587e08ad029248c093b756e44e048efa050ebb0a26d56e7d9ce64be776491dab13ff21b715f4cfca876efbd8ce5a22a1c5ce6d7f625c0427505ffc88eb4c3ad54dc7031993a54f1621282988843dd655a25f098d14acbfdca37fde7e4ef85513f868013b3bee0ba5ec0e8d3a3b90ba81d5e243d35397d58c85e9c5cd26f3bbf64fa520b6efbde231efe51bf0c2ff6c9d093b4aff1e74538c24711186079a5988ccca1497e8dcbd75919c819eed1fa5281caa89a3579ee7b23ad4ade6e9c9b6de4d75163b27a4f7f82039f91c4ce943a4a5fd903acb2f899124f5213d798c6470a9122bd8063f1f8609f21f5059339a691fd5abbc96bab19d55eaf6746ddd9d1c19a9150486cb29afd78ab676b0b038aa7f4aa70fad639411f051135633d9728940170122207f71227f930a847f1d76f9571783c43f362dde369f858bcc7573db1992134676ed8445e4147d5d8cbb086cb8d6ad67e89b5195252971f6b498cdb743c30ec688ffd732124d138e4f01ecad65ffb35ae995cafda4575c3ad5baa2a6ec03076f56c61f3850431c32d6515240fbbf7308c9f16fddcb0a1113beccc68d408e1908acc94b8fd3bfd444947104cfc2671d0c549e94a9ea59d384de7aa27a2288104af7b9a5c0fa3300160eac23a37e798a8a3506c72d83deef91fb376550b85b192926f79084563e1b93b17a3bed536fe5a1845f26e3dfaa0fb62ea929903bca1979c5f74710eaa30c23b0df0f2cccc6f5add0cb45559b162efb331ee7951bf81500979549764562520091895b96491617b3c278e228c1fe045b7481f34957b2048e8e351ee82d803fbf8c4834dae9ea4642d38f0a7a3813de3b3a8e18f82a8312f95ef40f183df0104691798fda57a1bd9cf16928145f44370e88e0388296ee2e22acbfb44789f1552df810658b95b5f0bdd58411bbe9be729a78091c3639600ebf55ddf9b8e9cd7df0cf3bc56a08dc66508ca1e0511716e17d0f54a68329191e444f86e637cf7c10db226f1f2a3bfa61417585a4569ec22f098028df5353f20a41ec958d1eb4640c4225dfbaf1087c002c8e4128f97f63525ab7038dcfa2060d24b59944f705e48165c96e9c081a120b4e27fb52484c7f15a604717c56488f211826144121efe03304b5c71c74c783ce0ec2e6fe6662c690d1bd6b399fa4680079d01f926321d6f7fb9bc8c09bf91c41b26f006d4cb78ef59afbb93e24525d1d18e394c3dab49b3d0e2ca5be4d78bd364494f0ae8331a031690be2722885031ebf51b7079e05c94c0f7fe126a3c3931eee048adc21132864fa02f343050e24034158b969d66aeb46ff6149cfd47dde01a8129d17bb596986be7c3b4cd35c9408424b12ad3294326f3d4818daad3e3053d756bf00d9eaabac675c1d11813169002fc895f08bf6869b30aaf3c8b975b3eddbd73c468d2d9c771a647acf0ddd040b3ac8e8f234fb1ad9eb95f8efc1baf0e13c22f07e0b9a7f1d9ff2bb68ceff1c1e1b9c2cd326fa1fe678310334b252bd6027909dce80afd0390608cc9152fd8d2c56422ed18bbc23babc27da0939bf399f992d4fb339a236968b1cfacec7569a01ea48f304f3bd7b2dc695524b24e592b7343535c29b464c5aca019116b209a52e32d377f83e1bb1320a7e33c9547238c69dac5393d05748e1e7bb49499cf5da2b100edbc9fcce5b41db619088fcab5162dc9675927d1bdb515c2dbd6c104a9826bf61e500caa7ad2f53c753379110bdc18b36839d5324896f3aed02317df80b0f49f6bea60abc44280aebf8b5f323d17029c175bc13f425d3478e84cbd815522bd578eb37d659031515958a63a7ea33c5ed9d053f2686d0b8a36fd48b67d1cd2f515c1f59cc67060c55387aea792a501de054ec946ee976bdbc1229bb615be02e751cac3baf74c5fb1d16ef35da448e0092d5b9c7a3a6d3f395d0a0c6d290c903f4ac8cf3f7d93578674ae1f7751d662e89b016f8c62bc462c80ec8972651342b8bf614ded7af0088cc1d009a03e33ce53e8408c0d27b398d82269b0d63957d053686428dc5af3d0c55b46f91ae4859c26b6758eef5a6fdc0f3ababcb26035c1df752cccdf3bd2e5acf651e0af3ca49b227e3a6c34fa0a850510deb2a107d541b63871d0c7fff2885b889d2f7dd80d9493b6c9c227dd2daa089a76e51fceb8b22562d616ece3bde00ace763954311b66bb7a037793be9e298348924eee0f6c3264ba58113782247960b8e3183032bd9c439a0a3fe563f9a4529fc33981c19311db0658fc26714813b75940755eaa47d5ec26e174b444ef7e3b216da24ed79b200654b158d915af212abe5f5963b6998239effafba20f7bbe7965c2b2bb46a032bbcd0fb60971db5e4261cfc81838d04fa1c384a73594a9b7e06e04af2e7eed50735d8b9099ad027f5b0260b742bc22f6567b055a3f9bbf07d4f5a20fcad5cec20821b0b77b2b043daaa5e116a2125db5f4e8238d5ae88a297d1a02765e7b7ca1ca8b80f40c2a92aaf69c46c8e61e37f27bb6e07ff80efee5b0c1d027bafa87609e724a766c347b4094b8982ac168ad45465361b5916e4b3999c3bdce2352cf513e07aeedaffdb6034f84df60d30bb33b368e7bc35eec365b4c90937bf75017b0d7a92597ef830a84e09ab28763f1b203036e53c18ecc36746c21b82f0ad0f000b4ae54216075b36bfd48f6705de8721d1236493a378da868009f9296a27e9fa03e3601894137dd5517d59eb231fcf1a266b12f0e8e4d4cd57677dcfd85e8668024660e616fdd38223fd2d9baee9798022e2e49932a5c1434cd4a2cbda9090012154639af7500ab1243c80c7a6bff01f917512e6cb931574c55bb1f0f8b08ab527b98b4b7c9e5631b79354c2c50fcf8c3ef2a8290e858bb87f8fb5d1caea321c222d4883e06c7286b0ccdbd786af2303cad42b2546b2f78cf693d9e61f70d0ee2a5415882d3db6896838af0cbb8cc2fa6f3008eaeacfeac0daaa4792745b0c971d6730b0ce5a53ede26ab288560371db48487e26f50f1debdce257145ad795ff0c5f395e6d00a2e3b9c8dc95ca5b001821f4d01c64de75af2926c8dd205d83e11c7dc5f043a9f410e67945d4c2a78b260b2c658579d77d29f4ee2d09e63917240582cf4fca47aae36a97ac0791903225b33254c98998962e2b4bd1ecd40d2e172d6b4ddd2581ee29d553083602036909395e32d5e794760601a2c8cd489382af1a9bd654d3164d1d08bc5b729aaccb6053e946b4119c2427217a01d615aaec31208f0a37cc14f62522c1c74b395e07725b19d79bd29c7bae74c2cbd1804d4ac10178c75d3facd6eebd4e24de4b9f39b2ed2d4eddde133e33951877d74d787d6c1a6763d2d1befe3c08ec0934a492cae91dad8b2c70366d586d7ada1d14f74e88073d38df85f9d9b1ce7dc1c01d09437f2d2967dc0f2267455e1a9091d2ec5bd906745e071e947a97b0cbab5321730078a6e8a94279e9667504de0acd2c575ca40308c8267058fc39826f353534310c42f38a04b6ee9991eb12d6eb5c36873f0d2553afd0f97b44b24520b2b0f22cdfb0067f00e5e803d6ae2897f7784b3a12ab058a0180488b30676ff9a5806521c44ba162216dc8e1fdf793abcec38e6d2ac81af89c821d0a8e5c136f27ce4a486c2e5bdeb427ad8bf5355fbf29d69c4549681b372e2f8a8f06573e6d60cde08d3728672271afbc4d25c79aeb64d2392d425600d1c5827310440fd4aad6de5581230b7dab0ad66141bd35ef1c8e6ef7c5829a0e25a26d1f1c26cae474ce69e25863cd08d65a51c1c5370b707b5ea4fa3575ca093db8dc3cbe60e13e08817a0d4b5ac40fdec8f5ce1b39adb230dbc3b2acf66218bf3e8a06d8393a27d93d1d12ffbaf3dcec936282dbf347f4f3a0b5663da3610e2ba9b5a398309d0221d211508dcc89da79e2cd5506af1723ff677f72b03dce1686990f5af296d3c16873b989d089e387e581780c888d3f79cf01fb7d96f9ce0294e56b2704ba3f618441fa6b61b36a8344ebfa3bafec159904f3d2a3df22182d08767560109f87198b110dc855114a160e6bbe1b6b4d1fa3055377e0ec352c00c0795007718d75a0120348d0932a024979d7c209135faf8ab2bfb02285e13c18d56db0d3b585c6fb86c407dde896cb61fdce185bf68d557e972e4a28da504e14a78565ac523fa3ac102e78dd6abdd32f4b2aafc2c7d2feaa2f5610265ad65e1b12a4c33528fbb58792b9b077a28e57be10d0171522322c3a0a6064abd6009b1dfe75db071e98ceb9670371c81b7353bc6ca0e042e18531ad2e55e83040ffd8278bc3b45137e287b323c41bf0d28559f574cd30310f5fde53f96e064a8b8a140836a5b97913e273e710ff9bdab7920cc6d90f31e6ed6ed8dc7073cf4a63879e2ddb3112965282b11d943d02c3f5d49b9a553bacd5609a5ff23e54533557c93e247afe8e19f5d0008b89fb9abc5ff252ba37190db67d38ba76604697aa7b08b92ded3a0e0d4883eef1725ff8da9eedc67fe5d607b9e9779a4574a7d716c847b006b995731d0baf1f35837aad8c333057a1ccca2d540bf3d53398d68012bf56ac0072fa372d017597322a87fabf18d4b0c1c9cd68b50af3de82ae16b110f312a121fa2f6f8b85e31f1ee68936861931cdc65cb5ef73d869ec4f956d49daba430a198848799e2a69dc0e553a12834625d67e2a6f4be7b146ff7ccd6763cdb676492417422a523eaa0e7c58d0f3af4ace8a7e730540e93baee90285f8dd52cd1b481cf472c00fc1a8b8068f8f29014929ffe85f570ff9a4076abe78886fa90fc6580f04aa21cc39098dd3b8641abbae3f7c1f8b8e2c0689ff4f3a328a5d1d044dae1c2e5b12d693c7a61e8a5d81b4f46c913c5e4b86c50aea05a717820b1fa1bab026bc7e70e11d0fed90dfc448758461fd9c56a6e1bffff700a90b35a342ff04c3289e6174c5295f52e9313ae4bd6192aae23abfd4844db9c6a0fe70aeb4dac6cc0c0596aa519f559152df42742dffd1117fba7ca1c3e153b6806ceeac062ca7651e70f6179bf84a1383fa291cf6817f2c6c739981ea514625d990daaf933011be298837385ff2179965694749343c1c08172fc55eeee7be760ab63a57e5afab242d9d718a1034b16cc7c62e25c5436903a055c01cdf14131b7b8eecebabdf5ede2beb37998ae20cbaa530f08c347ad4f7b881440dfe857ce28031a7d0066ebd6b18183c0dd513e3fb40aa11b8ad969f95eb8ef0696fff64a9b84b3bdd34be42c5297957effd213b1d8a9c93b419c0f95db49b8ee46d8f15e05ba926924b4a131c05b3d0964f13ef35d8a57e53752a6aaec8b645031fdf17fd04b218eb483c289709fc22f714ad4c9348f60f6fab044a650cd14f1fa941fefe080b82b1ce61deee2862662ad9da49e84878eee7e6b84a3ff4ed7dc51a6324ba89b63361e3009a0c2660ce5f7c9c624b35c44a66184410de86088cb20088981595d52a6b407cd8b80c8235fe02453344bbb1bc3dbb8877ebf5344c2e9f34762092b1a406fca52c5426f472b034af3206bb9b6bd335d3d9735dfae43c536a23e3828e8117cbda6e8e2f1901e70aa877c27fa928c38ff7b7f8e635ac3d38c58b76336ce6aa764c4f5e0e7395bba36854de7666570064dc6fd3464d9dcb29dfde796962d850c2429b43268f44015e53efe0d9c2bd30e2c922554683e2541ef97e3f8f1936250e97bf641094fdaa6f9029c9b5ecd0ae068a5eadc91fa0bb585e163bf702bb3f0edad4991990f98757cd234ea5733d95d6f69ff927765d9a354875f3927875562799fa2b131ec6b9ba2aebbe0536ee1f5dfbd587dd4254b89af702b1ac3cea516e14559828c380c08ac9f8bddf07dc886d1f0cfa84981ada706c2a50d90252aa2c85d8f802bae99dd93d713c743d8dc56f4f23fb60a4c111d788213de450af8a78306436118432035088624630dff18b42baefb6828b6038bcd5ce20ee76c29b567505a902b4cff53743ff4b89b8db6ccdb50122ae58bae1e8cb78eb93b291a1ef5a8d0b110ff01f5ebcf7f56c3c0907d667abf7a5e2e4f6510a164182206833b125ad841529137988a80c5c6ccdfd51295178f46d0287ed0e2b0c6375e8a810838771661728906e093a23b48f21d7a6d8cfbd52c1ec688f643f0c4dceb45dad38541e5d160da369f1544c4039c4313374262334c23031f5b124efa3a28c63c323b7c82a1a302db7f4f14ac21826446900767a3265a7d4792722f7465c461976ad040c162e0b0b5c5fe8abe37489d5f7cf054ed95ab252f38eab87d04cc77ddbdd5e15130595d4385e4cb98c2a194235de9c9143007bcb3e3c2646f36d1f068f9a54b0280191dd68ffe04f5165bf9fe17d631503a401eed715776bd96f56631508c3039908028dbc14fd9a2a7b9e49c123e1a38301e5c5776632c7b308e09f5291fd425f0b76f400d571f209d7183e5baa02b5027db7daf3b2f7017ce127ad304c7d109116d2f7ddeedf9e0135df93b156b4433a12bfb3b428bd531ff148328689fd101d0464a99ac0b47691d191804eedc23cbcd57112e5cffb3a5487c3dd775a2be7361963d8d971d3a7feeb77ae589f00d4a06d05dd9bac5ccdf9ca247ba5c86e5df425e7ab6fb0ae4c65235e4b00125293bcf806a5ddd1a9dbcfae00bdeb4630b2dc0600113e04952d33870eae9d55e5d18fbbc34b203f501cea5cca5f341e5d680f1900d8ccdccc4787d3d5e7007ebc64f6dfc1100aafd799af40c0e783e0f023e71771ebeac749b0cbd9565a0ac9dcda26f53a9424eaa8ed16bbbd0bf37c6d19fe0dde12884be8cd54657ee8615dd0dbeaa337b50e55a703a4b0250d9b2c146641191ad91fb6173095bd2e3ce0aed438a57f6f0a6ef1e2b4462156dd95e2ca597b24d2c5c4587316250cdf13b2aab846802163b3f6d66b388d7a29899beae8074e28a3d215730b0c51a866583d3d9ccace919babd0a05b22313e4f3cfb3ee0dcdb224e5352095416788e85124ccded40dde55c3fe8d9cc65f59633926294c6445b2c1c217a4fc1153813dc410e2a3ffd7655a7921b2518f8fc934050c44fe4f2930e381c50c536927366ab773be5770c398671d68c65e6f14f4bd91a4ffd82dbad2932a94a616cf173c84f0c860a0af256379784cf611e868ee91596a9ea18d92d209fd22c2010798297329acb0582982a1950a2643c8de6a4bc4e231befa4f9ee0ad564c6bf2b95809d5f1f9072e719c4afbf68a62a4ba625ef876b1542105a29026998e083ecc6e64a64e9587ebc32f6b4c1e2ad25ca080ea9b7cc8b506e729b276642071f77a395eb634e6be43b0be72a9e7d2e4c34a8c956a7ad7ab795623c000ee65a61ecdb86d26a143c5d690f3aa2a208682cdc2d47bf2a247a761ec03718ecfaf9a2bd38135665b9768952fea678ea7656da9e27d8bef33d115767b7211a961b10f51d6cd31c65d1f12fb1875a30836822e4b1b66ac42cb7a468d8ad9c1767a3c08f794eb645bb0103f3c90e302a8668764381f4cb59d1afd3319cf2881c78c9b47ba2354635697cafd1cab24eddac4fbe25954c31f5d8adc43f355b741697a8093c86477bf9f61726725b1341d302bfe02729f208ade10dde7751208c26162eb40fa7b55a990bb833188c6e265f6b18945a855ceec9e69cf490fad157076f39f697d7c55854469c302c0e6daabef25d59950f73bce91b32adfb7b2b4321607726f79c5ee19e66f324ea836302133e291a7d677d1b8bac0080694c37720f57f090236c18879a7026a65ccd231c8c2c7999c417699693a603ebf38ff9d5093eb8261d0549369a6352f788fb0d94dbed5f93d943c8485cc5fe62f52c26601c619c667c5d64206b6190a2f32f3e478d3c6a5cf85daa4d87f27e6bb99ad1bf0e928b9e80459c09a897720e996c6af389d66e632c228ab8acef7a8a6a37f4110806330436262c86316985aeab3ca8652b06a520d1418a8458bbcf1b4eea0f4815e45ac2af0ab33ddecd2fa2f5ec602bf145dfc11ddc4c1041e45504a445d9130e84421c814335e20c1778a14f9b4d6ce7d7ea67f679a9e2244496e93da24f1527824d4d186a6fa64270b13b3803f503a9c1948aff09d26e1de80b32a63611c215e722ebf791acb3e46eab8362a3750b056bdf2817225d82e84094e71aea4ffa2ededb569f71a92c717e2c218e04fcbd290dde3e0110c22dc1c47f676a43ee6a01a5c4e0a0854eea1c3f6ac131c4b81da351c3103f39a4fad2228be8438cd5e10e70728705088403c1a24ac4d8d4331da23aaf004c1f8a1b58fe8461975c3d5f127492bd90116cea37da6f3974e2f6146c38613755d1c88d9e457c626e738a82126a263843d026333d8c0757cbace53837172a69b1d8031ba59f5eeddb409405021c5bf368f4e93a3dddcfd7d9b16f0ae94290723c2cb7e67176e6bb0d0185280771a56ac76c09da26a61734fdc8d8d926b40d99e666b85b62df98e3a0c15ef52f8ae31d86bf3c4d1009a99abb74477412c5c27683d09d8c3f7732b60d37b5a02ffaf63ab692e138ac7b3672094e1ea33b4dd6ea74fbcf0cd340d7a49cb94cf11d16a168365974b944aae7796553418a661e62d8c9d1878b21316097f36b36c712cb3de7af3c9651a63e33e5d24b41ee5050cfe6a0cac81ae899b1ac42b327a11430ccb52a3198b5a4255efc9e242c505e905350b8adeddf3ec482114d9ac7c82cfe94b247ad4e5bd5de63af698a3c4b0426e675218275e06ae2d438d9a49e6929fa5f334cdb8157ccbd679ad3b6cb4d18887e41984f022423f70b9a6ff836651b5718c86c6ac6d7dbeb8003dc276f33bf20425c234f999b5b60585b0fa85f012347cff21436d0241ee698b957d8529b77306acc363650ee6f2988744ea9802427e31b5e51cd97f1e65a3d7db1f65b71b61b3d16fc4e6fcab6cba55d459b7a741a4f9e12af5a62474095fe66108b44cc3687d8f0fbb6e23cb7c1bbe53033c6902433467691d3569acdf758732dd600d417fdcb681886c36643a178b1fef6dc6d0be3405d99be8878f65cb650e752d938b622ecbacc7031adceef2634909b00880dca2eb355467a8ee639e3b4b15a963f26860bb802af49a20794b197709e165d09d7311f5169374485efebac79f9e73fc01e2e80e87d8ac460edbfa490793a94020fef2611e65479f3ac7536e38fcc7364640a103c8710ce901e74172935e3d82bb18eb886d1d25c886c691172fafd5971fcab7ed2cf02ee7a7c6ec6929668c02a15833f99380d555766919d7df8b8ac72eac6aecaf2369d3721d9525a19fe72107e65c17f65cbb82cc628e762a362f303e18d3712a1a2722d46cbeddcd128ac224848bfa8cf2781e2b7eb1a7510d00148a9f8240ab71af1fcf470072730bc821b6f160a68cfd1fd183eca808ab5ebebf8aced5379e4755ce81d64913e1e6c9d034e94674922ca79d9eb0fc6e2d19525f86952bfb40ec73bd96f3d3eab4f65bb03b02e6a90e54ae16549b39623495de31d325dd5b0fc5bb137ce70d51d71dc9c216ed63d65fcc827693594ff8775130172a1073ccf3062f86d583932ff1607f6258829c84513331d6a7715aa17fed8a99c8b20561b11765995052bcd07384e0527e30b79d37b780f6657fa697a66c55bc805d1aaa3d8bafef6fa95a6dc0676f215bd542fbdcb5581f9e90614d48e93d77b18149a9d61120e7cde7289a712ba26283d5bbf0f6de5891f2ab6e12a9767898ae6b25aedac4e2b9476b78b4c3e003c2565007887da826f20e6756faad26ab075c5d2d2a66899f7854e1290330dbe1c0092ed546ed3d625c58fd7b75aa78b2de1253cfd64751b370334d0a2a27169560dc3e2b344b547bdeea10e2f47472a69203012bebb4837a71e89cd15c974bb502be5c1321e952622b3f1d660e6bcd84763907941b9a6380dfa79e1df8d99adb52883bd9d52b6e9354d73d5271f218a03cc652439fb03b7983488f2f25da336b00632ffea8ede87df7a16f916fb53b3707fca44aa3f5799ec95ba91d85811488f28a43d3c143e8d21bc6920b1a3a125ccb85fd40a07b42ecc77b7fd88dfbb7d7b2fc5c57e6c24a16fd2258d89222b2acf9967bd382db52e759628a06ff6f81a21125523b8822f9153efd60350668d7a29fd79be4d329f9d339a348d8dc2e56af414bc4b2d102cbc1e38ed77171fe9b11a651775dfcfe54246974fea3f9e4962a10314c62dda4d707700f61c5352e72c2ce446a567842f01064ce871675b0de5921dbb3fcc9fa217807cf6f68f6b93fc72cbe690dd3aa66700da53988e6a2f35de109e21719cf3b31dc4c65eb371672d6fc50f12611d48221553dc5f37adba2fb90f6907feb5a69449242ca646d0049481dc63ec07d1095fe779fb10f7423e23912b0129651c423b50b112cdabc1ec0c1747cc332ab74ec9ed2418f40dee23f0c81aae259f8ec54d36e86b3bea2d60a02992d89202b04163fc26e4769ecb01084e092eefbc5f49406463067e7fcd868cd5ceb3b8710d7430323634312fac2937de274e1b2b2424a1fb70a5b375bdc59782d166f8d08c0222ae50de01f4c73f6a391d71dd74bba31ba27e73d509537882d85aafb1463cf814f7ceadf50b2aaa2cfb2305e0a0b68aacabd64e1843d451bf0c645ca2bcdabddfb3bcd955ee28c0411128c4aa6f75e9e1449a7bbf07809ab34368dbb4338dfdc01f634634cfddf3dce22c78f2212bf75334521b9348534802c122e7323e8674d0ce1aeef2f1eab979911ef37c59994fdca6853df8733a98b52025e946bda7d6482f08a0c23d7c5f767c200b821688c368350c8689090b1587cbed86c30977fb626b40c7567c6939ef59045a62cb8812ca3f4e1fdcf6eee0ddb5983dd8e997255e8848ac61ea3d283d6f196d47e12759b691408c03d0cff42ca834a0ece4120177c864b9fb83375cb7800ccf2f9c1d35256705634a2f67ce02c6fa4801f77a31e55eb95cfa93f1c9efeb0e18bec8b144fbae817d0e42f485f7f7b6975f738e7fee6980aec53ff1b5a14919585715fc7b9a3fff216078d8a256c29ee081e54b1463d3a8e023d9a40529fe12a92c8450e5a20c30c655716f7443cfcff0d01b6d516670025f4a77325166df0317d6ff62a97a76a39e9bbcb2858df4f7326ad50da98f405b77e1d41062398201aca6f4068e3bffb184b1e3586499a35fed030f57813d60b80aac86e0a0075b2a67d2dac7233c4c82cc83e61224be2499978ffc080e93cb1cfe95d2031ec5e1188f076f24cf3ce5009203378d2f290cfb549af7798d2a0538893877e12b049c27e6b46ef1cbdaacef837d22a32f83fc05296f9aee0243442f2aa2f501a96b131c33cd0c97f78aece8de31a36a21f5dbc826a64ecb3298b0b2bc60fbd9a065922bab211c5d233f4bc10e058dcbe8cb26007cb5516e3ff8d0cdb517cfd6690edf25a293abc6ae57b791510b80431de72ff0e8792859a1b8b12c19e89e7c1f65071a6a7d0441ba5f8e50464a6acc89edcfe7bf81a156c7d8932ebe75c2d21eba2123ada2e2429f5b3b046108c6699c73758381340ca063f15f2ea259d9dad61d2113844dda2404cfda29169646361aa8ca897f343b3f4e9c425827edbbaa2c6cd91923dcc48a74492b471b16f5a5bf7e3243ee7850fc809c50427783b5182b30c81f3273a4f68d9d47e0c9022cf100ec1b032fa8f2f394471e69e2ca12378a0107126ffbe7013c2874efa7bbac2cb61357edc124059f63533865a53bf015741c0f10f829dafd9bb28366b5db4c7abcf977e41187565189f6978ff1e363d7289eb9271013b1a0f9be66dbaa43e163ed9fd25875bcd4c2c326a1943cf9473cc7fee20bca38044a8dce5d736eae2e98da2abeb1da8d6e747cc20596458319d880324b03c0a2011eeaa596e190c62b5739493fb1ffdef6743cd225acac0ab9147105f4128c954914224d9f291877ef295dc1d61e00d20d7e1af483164f75bf177db06c01e1a93338a6718e244af592eeb9d5f4f22ffe328e143680af97de164de93909259bb7fb546600dd1acf9cce8c1325f24472ff515b0977ff322abb7694a8b4c90d2343e5fadc138dcd640ae3340ca7d0ad5dd66473097e9cef81db25ed40e1df1a68ffdbc3b4c02872fdea2ee91e94cc987051abc1deb6b173bb635a6666b56918c4530e15b3b4105c8c139da20e3be62358236bc822788c99f7c4719bec9e321ad816ed50d12a73d5befe9b2df7a19ff98c0bc3ee497e9d350ab0ca17b085952fb7a9b6c2f7f91c9d3c982c0798f80d2a64c9f4db5788d3dde9f7ed02a89baa300b960f460031ac51e94ddcf69d640ad554854cb10eeb237ca0b51636d9072810b14a248b4183c5cd5bd17202d1c81173061e3081126361ba7494552621863e114b2030854b40c3f19ade07321c1bf94cba3dd0f2474e0bbefc0f0db818999d0c189841d2a04a99c8889d556aef26894971b8ba0e18de1884302f09b2bf18b424a0c3a13d730b64e9ccfa52d7fb42ec179ab756b3cdbf94d7fe33c4ea9bb443073df572547568b2c7b8796a55bac6a0142fa3f077718a61545f445f8f912b9f3023448cfb3609f2c6856e34b046fc44f8c54678eb1584ba6a8a369420cbf23122fc1a860fb048ca158be3532afe240fa53e96b97b7916a597abecc106fd1d9a255c170060f24bdc9895409ca0b8eb99f88d7a20bb671209377a5eb455c2b8540b94472af5a54a61bb6193948ce670e959d65245e0fe2ea99ea17d344a583afd08be4663061a2189f8a9511d562be87ee62e20ee48183653f61981af7d2b60cd1139abbbd0a6b727873c77943753ae2645324279c2914c60312f0729a163978c23dd72796e1c6c8f0b199561a7ea0f4245cfd153c9c876ee1b802c14fbe2e9f522fb7ed3118e234982b0efcef9fc09b08d1c90fef1231ef43e907bbbd13836ac17491629ac3afeab63aadd80f8437b596ca96b09a31591ce991082d46f16ada512cbe159a6606b37c5b6d3fc2d8c2f351f1414c558f3f0104941840c65b95f181c72f6f645edb02709293ee5d4d5c0a8cdb168aec963c3a4a90de736dd73675c18cbc7ff4edc2377937325115713e9808fe3ffe8cba248c66e7f85efdf4fc06406a944666500eaf8e355fde78daf124e77158a888f724055deac61d11741ad37245c005338a442355c927e6eef07dec63eb40f86bb392258f41c308844a3ef960b14d3707846ed2bd22c524f1cae74046f7359a53e89fbc5263f08eae964bc0900c33869394737b15dae5d2e69262d0e9421d1b52eb5bf375edfcea633ce06960cfe245323629649a12c3e562992439c70dfd99df28b921e0a529becc76f6d69242028ca0f758b92deb5ae9efe3e145ba9baa4b84f76875fc672ec5d377defb6189627e158daa1065028e04164a4adcefba8aebb695a438a6f567debc138ffce199dbb1b003c9ff9c94a8c8d0fd41549a1e8fee2b15a8e918dccf82cc3f4a55e0e4c693f88c47016eca7abd03ddbe2911fdadc1cadcba8b54a4f0fc91a8cd6ba14ea92cea610af396c793ed61643e0c86459800fb161b137de6e03f5e3d16fd5042836703ee263171edab2fedbb1b0ec897ec0f7e4951a9abc00bbff3c071d5c17f2270ac550a01cd62f3e6525b280568beb3c13aa140761a2abfec279ae85ba27d5741d99fee66cf3fd535013402d229d512115b01832b54ddf401fe2118147192d0338e5f4b42625d668835d81664fc343095ec8ba218f692721395be1d1f71ab6d45923da70ffb89a4fcbbe603d0b3f26ea00b545e18d33b0a5620fd2fa1d26e081dff411d1b1158921b47638bc02ba91f2bec3f5eb1d894d8c9f246274210c784ed39612e19e1a30be1879ef0ea40723203c4570eccbc9f51a60709feb8c2f233e6d5c5712b0a2d27c876238b2b645ffdf15ddc8fe32080952007c8e7e3c09d69b40666e0e0a5fd9d756a63f4140573db1ec803deb3303b11311dbe2dfed2a9f1be5f61fa87553e3430550ac400a04116f22ed3a4a691794da675d45e94c1b19b6ec6a07241a167ef5f515eeb15885a1094e98aae3dfaf6e81ca0fd822f523ec2a5217f1657865d243460e4727bf6b991f4855bfa30b486588e3464ede45169aa7c1da9d1cb918ecf16629c461e34e88972b667212a707a09f34b974c27e19fa52a62fd59633d23f56741cc362508746fd2ec22b02808f6abbfcae99d1082474b3c3f663edfd273d2f6cc6e84595d5d55a36fa32c10a2bb501ebe4014dab06afd34c904eec3dcfdc5285019e9cf23120da85047b29a865204dca29488d6f101dcee859794799e43e6073ae1f6f765f3cff52f7a2b202a6c7cef371011b9e2e89f2eb1e3e97ba4de0c9c17de5ad9d019e546e6bad44e1137751bf0dfbf5fb0ecf45ff9b66502095e938d6d9d73d615ee217ec9966d4f670ef88d242652d0726ae80996ba37d0f51fcda2bd2f7dd329871c0e1a7496a06fd88457f513a34272e157fb1e788753c063b8108e9867467a3281ded77844aff79790f7b9eeb1cf62b473beca67c2cfca2565d592ad31683005077c3cc3ed29cf7cae4b855b20ce419c8cd300cc2a85e851085ed522c4fade68635aad4cfcc518daee0f96384d2da1196bf5942bf4242688b40088878eed88e5704082beea30769156381bc075897210ff22c4885dc4eb855431a12b98cbe8fcba27003d6fd5b0052004523d5f1ee30564ea78d741afd1cc4f6f73e74c3f5a14c60fb1e31ce4f6a0fad0b230cec2c2e1476b434e37306b9051f959aec11a55cddf4c328035d909082ff0147b8c00810d458c8c381f86a9bca596aba2bc0ed061af3c6504370930e83e133cc8f362f03abdb0e3c6700a99d841b8afffb8240821279a4ce02618e83ad043615e96ebe1a18299b28cedf4f3882f375c94b445d8528fbeb135638c8685ce5f45638248b2a055f9851379c1c9fc33560f465f0d5824f9481329fda98b781614e5fddad5129c393071a900305e03d3c98f53353174cfe9087cc1ea3b2745d462e06c14ac2215a71e00af2c641bc9c283860ca16fe31dcdd3b22b3f32ce6bf2a1fbc2f528120884172e80e76a1a96b8e9074a872129901fa9c933dc052fe44edc7b8b5a82e0ff1af45ae8384c46a24295e4828518c7c7623044774ed65c25636a49015712c11aea64d2394c9a6af1e6d9b0dd0bcd76ac019e6c44e9f410c3304d9c1c27f652d72081bde48129379b3a1dc4f3dc131d11da1375dca33390ad75f9dd64a2e1c1d4ee5e41fe0b3b161a82244e379a1129844b8675395ac02bb5afdcb82ee3b462f73da62868849ac977fcf7688094670b00125e5831e9b4c59b896dbb47329a12a7dc2a9586a804ab8f91c0929a4d6515faa36da529900cad8ee6aa49b9d38612082d52870bf3ec452c4c4e416822a2778178160199e7bf5f1d3a226815c1b841aa8da6b307527ff679e146a6814acbbf96c777e53dbff29d09f3e8c2eb128ad16fc9161e9abff8b7ee3a47c47aa72a5ea10bccf64adc07ffa56b0927d5eab9816598bcce92060f54fc21308887762756d65e5241bc43b1cd20ff9a717c840d42cbdf49253b8b89af2af45b8097c63e4a07ebff88b2b784ae27f655adcdf67801e4980460b06716ba1065178b56a878fa9018d7238e841af6a967284a529c1950af2a6f0d3c0901bf243771808d9d26f53c7865321ccedccb8b6bceb6c522e390d75dd4fec0ef095e6aff9493225a7520e36ebb7f8c4bd5c58dfb601565dc314174c9d198217e447e6745433c661d2c297a8ac8d0d887a64e0d71589b8ce7b2e0da78b12ea21f35b5a1dd937d3f70110dd0bb6cc838bee19b9593ea44a877a4f0d3d87b5df98f4dd60dd1c097ab2f177b5ec51faf9cba4c27774cd8020cc8eb4163e209157051cfcfef8e33ba103b44e555d4505d8d6b7bde6d440ed697d404609f4ebfac0b8df95be9c07466425779c65c7bd022d25b4671c6d56665d2a092c0baebfb1c4ea984645f46effeba2f0a06c1d10c451b9b91b86592748dacff6a4108bc6a317db36f0f415b83c325218bf1f0a3f6bf3741106a4cde7abf201668d1f04ee5124a6aa09eff017dbd21dfe9414fb44ff93459bc1fcce661ced9ba5fe150b8a5aff55066ff05ad40fb1303272cc4c616d0c4d541ad5c9c20a367a95ff274bf20f68d8fc51a9c141b0bd410b3b728197e9989d3ad94f2b9cabdf4060d52328a04eb456444479de13982db9a1ceb046a841c3cba3c5498b8493bd7f10cb293350d2f5407a40585b1b709b3efdeba8aa11cf34e19715835fc5d3934e69531c50549028e4554d8914ab8894d6fb45f4e091ad8e876e0f7b6eaa45a095021f1485e41507fb0c3d7a7db993ff5d9a1709d13026efbada05c908e9520accd5d415117e69ae36d2d6307b753d2f3d4b220a84ad8373539851415ed930f10a4a00073eec2357b753f211722a0d62b498b6c4f26bd06c44115b684ea5ce66a2b5aa03da5c28d0eda195cf0be1f9f923d0e7ad7728b8d6299d55312b6da410b2ca8312b71982f2e3f5ebc031930f568983ea3706f9958e0d283ad3333b3e8dfeb1402c15bb8de570469b6a5cf90aa6d85d028a70cb180d2102774016595b2f72279c10bde29b3c63b550143d11bdab391bd761c6a505a52b49efa5dcd2199571fdf10f5c6e755976d799110f25013cf42351ba27a6d40db2458a0743aeaf0c2da5e0303e99dc7b6fcb43e78a9eb4effa1f74a2fed2e37412eb8f221dfed784d0cdf11debdeae3ec1c0d6d6fc053279a25074d3c5dc5b1ac2353d6254a319391ea002118b9e2aa5083ff3b8275ed1034319bbcbda831fca94184c8d23c1d160e96c941caaab93919ca048020714e43550c38e9cdee9628fd5eabc4f3e43a2f5acf96c24082418a7ac6cd1f02cb5219334e6523b46c151e482042a93aec09b272178ed152f60264de57f3c72c40725577e9799f83a3351d546576c467a6b2c0055c51c2c5c5dc439fc74cb97c1d3c5d72d5deca21c741d2d74e75344d38f634a7de1e90cbd1224105307f61fbeae5e5da663d0eba6e17463460f55adef4a4d7496046c16e0bc1ef88bb554a5a2252c2574d785d0339f7f2868f33030e7b17dee4a3b6130186376533779f748f6ffdfa91ba590ffef1bc44543cadba0c07f87026d27c911f689db1e167602f2871814143dbe5cac1e2a318a14c86c8c53ae59a581c93d12b3ab735e349799d1d780accbd1da736d374cd464422d8307cc5c8f2e104df52d289e8a05d1a9740e0d774cd9f93d87050d1904ceb4caba9275fc908ab465f310b8289649710d2c46fb1af570e30f3c7cbb033d8bb2a48c63fc778eb926df68265eec85df18c774dcd8266001b2af46f51704a89e542ac7b5fd9fadc7d1dbcb29fb163d765a0b36252f664013632769d88fa72fe85364e706c1573921bc42281a654322bef6003ede9326e721a6d955ef7ff18ffe129966160d5f12ce2bfbd93054f9907a76c57f3dfe108db0bf78035db31206bdd10c97dd14bef46985cbd125b31145005897155b58b2fbef34867baa6185f68e74a1eca8f723d5588e7f0004c4589e6ac0c739a9648c3f54dc259c683b3028173439f67b9710bd31fa318e1dd7e469176ea4ff3e2c048e4fa3865ff8066d4c2738088f3c01d6d533c671ac2b7b404503227be18676414a0dca2322e84bfae98a02f57d65ad5d5660a9953d18cd60d63e00087ca2a8ae44439b07619491fcf953922e5759a27ca2f673ef061a2db02abff9e7e5aa1fdb19e10dec2a86690e02ebdc92059dece70d084367bf08781894d4bae88f25e85119854f849a1315b9c4aab2788bd6c474a22ea7fb8200b21b5701f9c3e45138239e0e49adca031317cc43cb45002f2f6d3a492d5bff06000b1ef4e085fecabb375e7888bfe4a4eeb8246db83b8cce994b91b1ab0322069b8ab737b3f043f7b1d34396fa4c27670577fb93148f08552b1170aa877cdd25b1bcb21adcfc0dad8bc0bcaf9e48bd11c016e925bba7c823923156dd23e9c106679b2afbb443e3b5b4fe6d2d7d644215d79fbe0bba01fd43d93642c32146032e0e25b266593ea607cdcec476e02fb4a3df8211044d43e252de78dbf13eef5a2a86c07a82aae7989ebb86b53b60986985a933ae926554c466344660898266e000a6ef676216a21d49a4c00225fc8247af1dc776bc7153a5c105d319a00b80a406c3af603486f828114f3b3bbd24c21a9bebd3d11c994056a8121ab888e51fca1fbd9ade8a5462b68bf25656e634945ec8811c8b320e8f097b824cceb39c156c2b184fb402c31d4881fd108b2ab849031953d8dc889e65fbc23870e0f3be0697217a750ceec856939967ff7f0aa439fbc2f5cc5ba4993670880cf12dcd24568a1adf5d8edf9997b4ef199ae60f3fc0ca9a51e07a5d428dc76b6ec28dea307d530e4faa17e1fe009e61477a55edd04a5db2e44d69f77bbda11d5c8c1e4d463f901be55163b25c686adc1841b644a2390f34971e2869b8ca87ffeb07513848e6e418f77d58ba1a3d1ae5cadc0c50317c72c0166e14e12a75b3e3be3dac06a18bcd106392bef51858f4c023694376c83f348efeb0c02668540d8acb1c367eb35a5614117ec0c985faf7ccfb0e90731e6dc422978da75ce1922d6284bf90ede3013f10e66d2efc47b4ade91cdbd44bdb2a15732db2ee425edb6c15a321095f2e1c8913a5d074edd803969a6a60bc7ebddec5627c2f727b58e1db90c558d48956bfb025a6cd8d2a4c37d74bba7ffed5f22db3b8259c94bb6a8316d74247afba0d70162b26dc5619ff8e5c55438cae3da89ad3db67362be5197578497622dcbb9eebde24c6325900828b585569489f4bfbd0609e6dac0a360a0beea6eb1e71734361720ef05267df0e0abe21a42fab98792ab2a5fb3031bd5bb2cad463f35c41e545d511b8ecef10c7b64d900c77adef2658d0a6bc9fe029c35663a707d5f00713ca7b06d48cc724b8375c156fbb4b3f39a27fe76c749c0a99846541927af4584ff5aa257f5fe95e5ea4672b1c64ab6f387616d9810a9207595ac22aceb8cdb15d936119ef2e4ce816c97ee931ccc5a34623d8dfdde09a3c0a14a30726d9320026286907cd2d2e4440209dcdef873bae63cc8e128d8fffd9e250deaee2f5debeaa4fc20f81e09e9ebfa8f6139d43e03056030de728a54f36e2de0593c8e142d0b653b020ecb6f039517f46e025b58bb32c82c4b66d8e7a0fc9ea437ee491919eae2bf12a8eefd3cbdd56f481dd056238ea6eac999f05368e61b00026f4320617ad3da22c909221c2552cf6216db5c2888bfb81a4b06edf5b4951a8d626bee2fe9258a80f4104247096a1dc694706c69c83e0365c9908aaf73c12b01367e46a552f3b582ee814eec00b9d8ab44d8359c4d3eb0484d5e42f03b2810c99e3ea749b48ad6f051c5529966eeac3d1aded79899bea932a459484c27be1838500217db3243bea1ffde20c1e29778c024e2d1eda7281340f11fa040adbc2e56bbe094e6c4cb8fe2c331b8842a0a12c099fe215e506e5964098182a2124fd86f28ae15fa48e2e57129e63bd1487f5455cbab09d13115651e86a64454d39b2bca94a4aee52ddee192e34214f10906a8191fe306c201c04b7d8cb778669d9311f9a9828fb121ee27727fc6d6b754377bff0d8d3ce5e9a75ab0775c469c7e8176bcf8bb62f23f4707f2238e650c18c416e0783c71444207da2da9d3df878bc0b9e1a030f5158ea586816a4e02beaeeb6582f004e155b7665ba975bcf7cbd9583afa1d7bfec6b0c944c023b7082a586e979a7e431f7bcbf8d305c7b5d5a12cc5653dafeb69db83889cb0923f6ed825a42e9d90e031c08d856d9f8a0b6156f1e81623697aa5dc233e2cd0b1d330fbcc3998de8dccccb628923b4ca9817fb39398e482f64e4c5f119b6d001bcb21de048937576accc9530ba4f39aa34c2bd2edc4be8115f1cf37c52b92812d6623140035ed142221c545344f50729a20db02b4915a82c0e252d589ef5c81510b55a17250fc3ecbe5c0a754242ae25942d8af12fb411a0db9b5a11e4a7490e74538ad45f946af865a78561b68a18d3656b9af93d0a49000179ade80030701dcbd95a3ef55318a21b737948858cb7421ac482cc0a3088a61208532b6438d30467c6c2f791c5bac99abf09cd1fbb7ede6b59a3ebcd89aa8c7efc57030d0a9d1a148a8f5123526bdac4822a890e074cb9cd27db5cd77310a4be2b11415417aa20543c622e62939c4cb9f55d829ff0709d3e2f47be37cfd1a5cbae7f486dd0472a80ff2a03e75aa00ff8bd499742059c8f0547674dfb98bdc7af4bbabead19380fff045a9708d15ba1b8521f89c7b7619302988a480c95e41c5f8dffa419fee20ffcef88c3402cb050aca9d4af59f74a156a99423fdff6c17d51d19c611cb2071181c3fe32a8587e82aac250b7a684c2e5522829cb60bc112b1fd4a1910e56630d63fb04d5a9b2a907474b28c19b6c7db75ba0ea022ac32acfd51f944724367d2285577d3dbe23dfa4d19aed0ac13aabfad11773a0d93a1c707e9b1cff3e6c7512cfffd6f1480c8640eb9249c710b61af74f789686e27a187c3ae07a6e5a5f6423392bafab6a3ad8760527dbea0667883eded4fbc3f3aaeea5ede710fb1c7ff80f20909c9fb92a28b38523cdfacd4553b575269d72d264eca3693a34cfcafc2906c1a226cf73e5352ddb8855bc737761be7e800fb8ef5d9e256896245a0460e110bded8dfaa1cb1040221edbcfc786ecbc01d8ba1ca621f25195d98cdfb9e625053f3c99801860d408382533f6a61af0aed4098f7ac14af74b70218809443a2a038dd30a8a0c5ad9f625f4444c3273c64ce86140f6deab574f243ed627f6667d069a8c2562250afb79f459a717829fb3cc1b2f3ca09250a63a14d67fbc67698017bf68f95e88a82d411d7d3d842656226a2eae4b8d3592fd721effde5d832f7a0f8a28ed52eddb09cc05f2b048be3974308a87837528eb1ee5294aaf1ca20f621e5a1fb34f3606e13f05f917ca9eb092af426c50f7d5945e81e0f5c1572efc6f04a3febb89bccee26b7e9fce8042ecb63cc91c0aedfd08cfebf41b2ce706e0ba2027b79483c323fa2c7d00c4c7ff0cb21b111663ae6a72667039c5a41e1978922e22eff2c94be1f799563d1e57d7b8b655f961eb84590479dfe0dd359b46e5e61c664ce779db8afb991995d39aa04ebefa545e70556a2b237396d955ac17b41e0d4b8948b2b3586ed8d3ff55dbacc190f3e615292dca02601ff8d789a17c000f05a1581088519b95bc4129bc67cdf418034bb37e9dfaa43868e7f4fa7066b2390e52ba2da8b8434a28b0b75740bf847dca3275f0f991f7c899c832573d99004328d25bc78835ca1528c2b72360701f7e9fa6ed1eab77752bc477a379718849510ec0dd3941ed3bc3c0b5e6718fb3c7e4d88528bb1437f68890433edbce862c87241a70a7641bf223f6e36582cbd9cc6d0dcaee1557d434e0aba3f19e9dbd43301e39269b0352bbc5a48aebf652f9fd42d3dbe85a4c3fffca97e1684a548c9e171b778275d80d0b1a8808d9360cc74e5e4e8afe5c223b323f72111f1c267cefc2139d6864189407855d870d482f80ae7f750f510fe2779f5c850d2f905f57ee8626c0f4a95f73c76ab79fec55c5166e62dcaab30212719bf0c342da3d7e0c4c3f05c33448396191af8599d1be3020b8ad75ffebd3d6f86ade76698971537bd0000554a277d7aaf3838b19f82aed2e9adfb309680b4ec2f0aa66722b52dee6227115d412845baa9f61f3b29c3088dc0b2b2dd67bcc83c2614f0323ec2a0c12dddd262f744132b4ccec79c499d67914024a399a17364c6608f353af5c0a1b9120032eb348274455fb876a1486989654fea3ad2f930d05bd7b8142b7d44a1e375dbb2c291f1cfa99e3f6f6f7fa4e41e6b28591c482532e57564da67fb1f0b930b285252281406cd4b2daff3943849fcb3b3ff8a98ccf2088a06bda9d6f1602c8e4341299a5b6169499fe243f01bc962040cee3c8960e79989b61219392fd32217cef1fa6496c452cdf97ba0f65ff30940b54ebd61d3f8427fb0edafb01cd0d11badb06313b04ef860abd706852e5563832c86bc3c7e154996104f9d2ed3f68636aec0e50cab1b0355cae35fe2b93217a5cd63becf130fcffebf30b8b7497ff9133e519eedfa46cbd4d53bb226d556a7b519a13961d27f2a5e3589b285c0d6f4dbcc21e18d8e97a27eb994ef476ae3e56e9871a6c8cce793b40e1a393574382a078b425bbdc4104ddd788a20712ab38b3c40aab58e38636112dcc1f4497296c05623f02425c2a685e5d983082f30e51feb3c74e4b30a9378ef5dc3e849bf3d27bd3b5302503526087b5935d4a46ae3ba54643ce1e32a97a9a4b8cb3ed3c1fc8c913b218d918da5a1e98341a71af6a28a95ebcb57231ccf47675e8a25edf594cf52c8d05fc5c372df18f29b9458fb87a97051b6e407169540683c13a06d843641ff92d0315b8cb28d464d5244e55723f6c81f952fd31ab7ee76cf6ec80a359504019fa18bd074ed4e67a80c050998e47e3445eea3b3dfcd823df49037e45eb543e172115d6e0b84ca76484a1b0e8eedff6d42d632822b8bc7409f5ecd5d5cb52afb4ec23c1eda98faaa76bbdddb47cfac7f69463944018635ed5544ca9cd15046106f224af1ed0954a563572c9b9ee4db21ec836ddbd54d182b8a728c824ab69b1ef201123b7dcf280b511cc4629b3759bbeb19471f430384c52ffb3088f3d95777d571cbc687c2d8874a36f3b912317a76ea59cfc11ff8fadd1e79256e9d58ee7f5a217718ca928cd53cb93948d1f0fc529771d178a03098ebea59052323a25ba22fe14fc3746ad4988eaae284475f8374379d5fb6a6c6818dd6be49548509479fd161afe96279b519cf6e242051330aeed21dfe9ac080ca4fe38738991510910d6420a19fa34d3826b081f0e7b827bf98b089f2bd740d6be9acc2c0d8fd5db8f33861b165ac231b80633fa2f15e2ed728c4c7706afbfa2bd3e11ded637085b82f8cc2f1f65496fa583cfd0b82a9f7f8181d08bd8bc97b45f340e42c63fa9262c3da70b256a20e719462f17f9953ff95d281e8c4117f325f854317d20cfd64ed4367b257888ce6f31096566325650d8022bdf8a1dd17a0ca0812ae5be18b2dca84522106df503ab1b03ccaa445fc7304e4535e9aab41925f3013747b5ed37c79a589415d1d91a45c71140380be0f5ef44918c7d34c3ad32c81709eaa176c431f78336281313dab7bb39692a18929aa0297d60c7a31cfa5851791d6cb51b17d4339e8e242fd2542fda42af2823d84412d130d128dc9f222d7e6168cf79bf79110ee72315e74549195872d1a6f126dbe3523c6431216ffc31e8a2dfbe3fd4e1ba7a62a5286f95dc8949a5bb92e6ef5d7e9e9a9f8d02fdd39932d539ffb753f8c74c0ecb2f5be2b7989ac6590a2fe8ae87234dc7122a9bfa0a8045be6d2d59164330cbcd25c9619caf23ab7aaa8d0f6ae2cfd7b91d7eb5c97f8900c60561777f05f1192416885e172d053dd32ab1332c30d97bc0721db9f176e8d1f95e17c448b4c59d861b9ac1fe90b2f3b9b006a201bccace357c254890439230d4d6ff5cba9d6056ad29f3c09c8d5cc24a6ed05faa368e0069c68e5f489d839e2c4e5879ce13f47e2317444eb0878fa278eb699164cdff2a01206671f2ab2b3565284d8af19461890705f9474e5500d59bf6733e28c5e9e1e6e8ad9e194e229229e63eb464254a8f4b274f69fdda298421b44b91b89a4ac8d4f3045311eb9373d7798f472622e795cb1095b29a4ddf5b2dc3f86e5f9f882b5b4281b7ae47e29f6e3ab6fd5a7fdfa3160544dcb39fc9f1293ec8f6a4790b02ddab9f047077b288f50c7114271e2bad220c2b5022d271bc3b975f021dc11b189c583fde475b5d49e45cbb13f9dadb7f1403d7c5426c891ebc1989288e219ccada1e27567728fc3051173eabd7a3126d832dcb5666ae46cbce5ea9c495dd5aea8d2fa385b53a0c45a075cd00e2f5c531c904de94713f274c410fa54025f89d95261f24610c78bd98c5b1502034e87c787f1aa5df9847bf95da8f1795f46c78b2c46a1adf99d7456aabfff23972f17c1ae225b090738792792ffa09bb8aee0c96c37e83a12003993eee0df6346270139e44223f6927e7a837a447230f6d36cc327ff1e942090ac2abe174d241cc110aeb4320316d7c774f9d2d224e83202ee621cb0c88e25aa6ad40d10dc3d78cecbea76c1e5e7766105e6ebbfc6fa29fd6325654befb667d9a3ee7076ffbe4d9c5863c5c17bc32c2a27edbb6143814dde03bf174a47e7841bc3b3fea550e3024188dbbb026236a34a60548c0cdc058058441b92c8a953873a877ee5fdb6989f346ae6d3f1188d27de169a0201913e48ad027a062b2998a7c5b27436e286e1fca0aca07d90075e91e3385ae253e82cafbda899dc49001feed2ee33689a808cb47341f3bb32bbe36b54deca3520c1b9c1f45ef89c3cc6ffc3ca0b644cb43abe7e91199b9bf1932673d1ac6e6c319e0e1bce019dd9bc53d6ad047d55abe5a964376f0e4e0cf28d7f41ede26b713bcc6127b1e8e09d6a9d52ea9df8449d4a45b5e1ee1ae8569089f84e011b8917fdb05a066f71ad11b0919bc7091c4276f064606115d8bab3c2abf8d61340a4e97fad6313d06fceded45690ae60ec63bd41f754fbaa0f751c406fd2edf2d6338b89948bdd728870b89c884d8d2627d81ee53a6df43874a8ad707cf66744c8fa92c4acbf18ed08d95c929d99bd79365acb1847bc9905843fd3503c1458ee8a636aa2bdccfd68117dd97490085baf7f1c6a89a1430346cec3f912f3629750d26c0da3f960f6cb36f3b9a7c3cf26c7605e5f1077a669e9c7d24762e5bf94d5d008edf188530b6bd7354be6f8ef64b3b170873ef6355aededaeb67246895567f1804ec335222052215784433d9ebac3504ac21c2e4e76292c665810693e8ce2fada3fcb878c3ac99985c8ded3b27133037b140b81193e621b379df25d815cf872787e16adcc74639f8df1c598c1596fafb66b9547881114abb2a0305ff50e2eca7278ae517bea86990a027f6d79597826e47f2e55d972c91eced811a908884b667309e6aeef07f8367145f652d063440e87bb969d7dfff13d6d29c2c44caffbde76101484b5738d417eeb24e883755927bd53f67dc12efd64613a1045a7e22f7c29b7b81a60e42df52656da8d5d3b21f8c39df1dc222525a5c43ee1d4f1d36a72e5689fe05511d7252ac3ab0797017eb259b9090ea6dd57e9ce42304ded1ddcdd248f0034f96809654b558cf87a6952d5d2ef9d44d991f0019ac7d2029271199175b44e0029ed8b05b8f7dc9d8e6cf3cb0aca1b3400f3223ea01f127403697e782edcc979126f36569cfd5d1debba95d36b0aacb791579594dac9422a3249ffd098f3dd95e00f7b8e221ea61f06caaad850233d68283dcb8c19759082170f6505ef05aa42c065a18722063555ab766e8e9a57c979b1527ba4a484508fd1cfd5031eb31fff0b47ee7bd7f87d01aa3509ab4f187bf114c5249fac98c10644f1fa8dd7ef94d00351cc1f665b855eb9456966e2e23d7b37cef2483d11412b42f0674f3f998cbe5796547e8aab5f253cb40fb53242e120ba2ff6fbafb362874d9c48d15189fc0d04535c262dfd5d2ea711f7001fbde65959c1b7b5a82892f7b91435a72ef2342690e7fe7bbcecad993d50fb1c361f2266da22aa0bf71ff0c6fac0dabac6e60309a71104b6c2f470a716539fb859166e94f2dadf61c5e5b1def8016ce316c1e5f19737c793cffaa68730254405308906762b4084a13addb22046de86b24a4f3ba4bf935a0d5ccb463cec92ea2e0fc18f5e7d56a5ac04a1b186eb716ee46feded5ae558653891d776ea1816438f3663e270ae62e1eacc0b10012e03d2c1687296fb7bda83cb7416dca96d9f8543f5483d1ce640507ad400906c1fa0f3868a833b04ce46baf72d9db6602c88b98c50641f2a75475a147337d1234d19dde8acd372fb1927e11203e395d3ae7bdc74c17b3a34bb841bc8626902620fc3ca0a74adafc43b1d23a517709c72ce7ca8c22f68fdc046c38e2c8870324b82d19f666670aaa9d2c3e9219f018c49612d3f8a1f25623f856c40c5292bc0e0174981d05b1ff33cb5a1db462abee63e647e9cd4a4aefc2fa208f740bf6e820515eecad10f57770accfaaab7709eae82c2727428cac99aeb3e57939d321700d57c642dfbebce9b185c202219ea9b86cd580db85b96e684ad99763e7413a2823db82254516ce9bf5312742733605747c5331b883c69266bdb05a3e9a518cc116166c7075e6fd963fc30b862a79d044fbe16db97a02175079091255398af70c1f60efd32a1ea9ce6e8740530d3f1ac9d2e92a1c6b3363bee258b8b5e024b25e11798a5f0097cc7e1faa00135989d15b04d4c09f7a6cc985b4a89710cb0754f81689591e4417566f3ae1c707e875b60fece2351cc85658450b7b6f63e8c12d3d11947bf3ea91ba8137cf7f453949292672bd9fc23c7c37fc692bca63d193bee71250b2f28e1cf70bcf08b2f3600dbb3aadda62194ca8e7e08c4f2f9ff0f41c98028fc12d77eda6de4be5e18248978d5d63a9f42e8b91117eb53e41353ee63d2b1e3aa3ccfa4e46d2ebf7ec83b1c6f3b5fd649502b327e71c270f025f06f258232fbc85278b7fd91ef3d145386f43d5a8c7e5830efbf4327d114483eb124ae9872dde39f785793632de45e238bf7402ffbb0ccb9d5a5396b52e9fdc6bc642f5aa01222401869153350fcb5d010d49f89d369eb06c76e35ca1dcd75301ad47da251390a63b15c4e5ece511bcbe04a124a93da19855ef991c2641a20ffcd551a5122a50b47bb2a38f8927f62da3a155b0e349ee8a04e796f97d514748ac87e58ce72ff6d32fa5ce56ee48954f5481494412fa345e4fa0d099e45c63f9f95657f88614f849c5f4c09ca119540104e24fd788d0c4d1847424194ba3935767bcf4480d047d159a2e2705c2294a43415c72a3286ef2887622b82fb836ef1bf8e16ffe2b058635a5e395c4bda6dd0eab03258fc2ed07237763107282ee79b8da09d917a4101258ebad9580dacbc38d8298e2d53eb6ccd608e7e98aa3156f78f4935fcd212a5c031d905919933d09ef5f751bf9b11fe3cf43275b5bb6038e11318f1ef9a316ade55871294f421ab8e90732e389e4c2974610d7cc5ef383fa4a593dc91f3c18efd9186f00b64b6cce5b2d084903b32f1b6a64f35edc460b4b6133c8c53a3f25acc4c3e4866271b3cc75ea6d923543bb348b9f20a33a5cc30178d55fe153c20a4530ab3aa234e8672bf79c12b174fd7561a165fc5c8304c324610aa8202ec52e1b6bfb8828ef885c3281db525ad0926b0f25e58c2f695af13fae38549d0b0320e944a64860f708c6d3310e6da378df30d74198a518da67f5e7f9ed6cc5d2322b2f92d7d0c9e0c77e2b1c5af99ae6936cc603e305499e70192f74d8f9b3e3ca25f07a486c20d21cd482be3327896d122b2b73abe40e9bff85602add235eb3a52b0df3bf4a3f44bcfb79c2ededac78aa623630ac300edfb32be9d4621d03190823b84ae9cd7b5b99e39623418af1b6e26edb141adacb9764951415f62090f81307943b1822b43f07349095d3ef5eaf58a3b9a1a0a7478d657ac9b321a5fd03ff13d712eff23256a72ba47ccdb22c49b7d4075f071a53993680a7bad453a862b827b6e986c3a15722abc79f39c87c88a22265379af75b04595e2e02cde3de8428108b522850ccd05455902bcf09cbbcdc85f693f3afb0a2a25ef1bbfc303265870f3d7a8c2394bfc7d8c40ed04e2040c3660247c668a88cabe4bbec14c8b851721e034d498a7cf79a70dfab116b1dfa5498f9b75de270aaac49366f7cb24e4fdc08ccefafb41439404b53fff349c496618af4f2c611fb59f938daa756cfb4698b01a5847cff970f53409bd0d229382aad2480bffb19d1971470a11e6e4951491c16143f1fd364525926b6a25fa5c5d395e6d5c5d37a71d8b98dbdd7b4005485b41543ad2d38acff53d0d5ec980a0cfb1671d20a5b716a038676b552ed36123bfb284106bddfe74db10220bd7230df5f4efaaf22eae719582157e6f068377442c31e35b6e3c2c40c8ba732b34348fd9ed04089456ca8f23ae3f84950c5c9b6e6370a1a7a02871928730e599b2baf9554eb7bc4135987330341b1286b4244925ed228437be80590f3b815f9ec5a431b391e5ac4e1a7b8bf08870bea00b71a280cce29c880a0303045f1fd9553a2a89ec38a28711d1f15f7f91f17dce8239f767c3d26550b952179a9dcb67641e4b17a3146405147e3d380e956cab240aff7099fdf133c5f3353afee479722866ae03b461c0c0b21b14dfb70e7e5b11a78d98c2df030144d4927d0aebb2f36acd458a7412de3dfa9e6352e768cefcd982a1caed12e0c186c3501348dfb933e4b1d0acf2e848ff86cb2caa26f7e7a77b08ac69047e41e6c954d20e5a50f90d6807333a14ee1194e464ffb558cf8185dde62994bf85a2b10f7569b13c13852e0bbd2d00b79eda0da5964de14ac2aed76977a3f4f9e330fed7ee539b3d297254c2716bcd701238a26be2abfc0aa31a7d32d682ce27ae72e31c6db02cdc64ee2e42365b57a71d02380259e0cc396112e518b43bdaba849044ff44e1c00a1eac72353aeacf12faef4feabb06689db0bf0ca1deba13366720d679982aa89073e89c2969abc5beb47b39d53b9c8c118752732e7d46bba3e6414ce11565ae6b487b2ee01e691db80f13d5ba352e8a58f514b49820cea03e3ee2b0fc7da7713679a0a4a89b8b0dad13ed4c0ff4cc213f993669eb47f6b05397d04af2fdccea277827e5ff05b67222b3a72c660ea1d303c134cb2be52158891e504ce3223f1616c90094adc5cc383ed783ed495cad1aba214341612c41ebd679303e1b6109f1978db2d9f3b43cd087d0a6ff07c00793386e7b7d7f8d8f7e93615270876035822f071aa97ae0130c52cbf53127922f060d9b980cf3f592ddad7552edf56df4ff5b249b975f1b2587327c3d3871abb032da5234a2e88106108549b207bdbadf361d4c1cbe797f0a9878668af6670cd498f7da635b3c27a0bd51cea29de30e80090f3dec2e8e2c72e7207c695e74ac77f746415b464e9d429c1025d140fb4624a4876b1d4e4bfdf08cdd693de212db0171baa73e81b00af50be1ab117234c2efe5faef9c6fdf3e4cf9647a2341c89746ab31edd818fed8a861082b826ae8b028df50333b29494e54fa0745480538ee9d63e6194b63dbec9904e057c05868b78d05510acd373c77c55ff96c7fcae0e14f9b4483cc65566113d18eb20232708b8503fec64b438bb2863e4388644033d54c5d95605f3c405ccb3ee323720f2afd9dbc4371231b3c1fd18b3f23f409e95838d7f283f0a2c0db434e395922fa648c7fa0af5c0178cdda2e4fdfab4c0236bdd195bb54950c1620a08dc99fe3012c65443f8762585093c8b224ef07387a1eba841cae9914e544075842444382da192206070010b5efa100af536d9245ebf00fa36e8916c78344e77933e51f216024e8deefb88146ab79b560061c9cf0798efde15839753e22977f0c4e3ded32c1e5aab43141e9a3730126e9dedcf84dcd7da78b12de8c6e2e91848a542f1c9218f6e4f289ab777de64d85ac898ddf0b5782fb52d0b18151eddf408bf0447c406887d86217a59d2b2a88f2a7f6a28d463b7bf69b7bfeb530b5a9e0d3b481290020b19ef40a06e3c54301fecdedd7fb6c617cc96bf599622c0d3a30ee580d0d6253a3f81652d67295825d7d216460fdb4398189a3a00302694e4c20e3d875de12f857cd61373b6a3dba731f8ac68f417cdc16d618c771bc21c5c15437182c3a912a2dc14681d00c516846607cf7f1425715edfbaeb57f7218e2ebbc5b4f0a65a1d896fa040c76fe5589bec5b1038de3fc06304315879d55fe7ec226505069cba05f9699eb898a2afe38a379c2dcad2607d372de29486da43fd72a088fddf22ef2d30dec545d15a5e0ba757fbf6a3c0342f59f6ab83f6be84701d101cde165efa16e21c3272de2f8ec0eff1b3d7b207044e8781e45e47e1d06b2bdac4299c0dbb10a5c47f0b65730f1871dd5bd16cf7cfb367739a5051d5e6e15e82c3ec3a8f7903b842304b1791f2b917e71012cc018a91b744184cd75a52697c0d11d2fe590922a6e52696d13530fcba04e76c862655e360550dffc5654fe4e58e5b51c85e0019bf38973c3b71647477b3adc54ea9d50fabc808c8714f032df3988fdf0703510cdad624b0c054979a9d1ffef3e8e88760512e3e236c6267920d6aac9a08e6f40c45287553f724722e3a60081916f1d66d1593c07264b77837d60cc7de102ab23040caa22639b49fbe580837eb885a971b829c3344e73d83e162bf25a4b0bf9a0c51a23961a44b7919c3d52d8bed871ba2fa73f7a521c52171cbfa71b06dc1c22f05008644b710bb1a29a5764e8e3604e6d58179ff7937d329919a643911051315ba2a8cdcfe5fd8e1e4bfbb523d8863c53d5a6dd55e5632f631489c63fd00972091b9cb7044e2e4bb21aa5f4cc2295d3a05cfd434b0a60314ad123bec5936f50a5cbf27f84da82bd30a6e3bc3e6c8c818117003e7b04c66794fced09f1d0f5a1f0bedfb8aa0f7871ce65b93f3e864f1d095d5d572a769ff01cd6844a07ab62f166ea4d27faf9389fbf7ee6553ab0ae97d6798643060cfdea31cfe8405e4a4e0304c0f7fb9adad0331414e0028e20a60f0e3480f86577cad5fb66c6e0f720fd809714610ab74aabd45bc45424c7850dd2210b7d13af20b90a5a7629d162ed9ae2ba7e021d3f5ccb433babb25a73a453e6a66db9a196d17474de29e58fcdffee11aa497d3e597db67f09aa963786b737e2cf4becb5bf602e040a4c31e2bd116340de7cd1c1296b8ec7ee70e6f51c1170048b5a1f3798b473beab81dd9999c25ca10ca9b7fb3cdaa5af7cba87fa80a8fdd71d176ee0bddb937fcaf43d1de5bae2003d892b8565a10479d6eefdfef72db33a268aacb958affc4c5dba165335b0b8e1799330e60d688a580e8397edc9bfbf5f8725f2489fe25a7773b0f41b575e3871e91645a7739681a2273dbc7532c5f9b95d8fcb3596596c8aebc5ba5a360e8c51e4e6f522fe171883f28f981ee16f5f8d6705a3becf13342daee55775e28d06a27108ee97e36ad88f8fc52f41eabb6e05ff7f71a23faba60a7cc30ae28b38608118ec33d5eafb2d526656ad113bf9f326cc16d0a3c35b01a0ac5b02a61758a292d98226bd36c828876f50fd03d2cc255ab957047fd662c09ea14fc6c102e4bb2271b8663bac9fba63bf4c4cd898df09eb9099726a3b3bea53ca92221dfcb07ae1a9fe24014f37f17b7e9f465b14b72baac9cb212730c6378c747a41e579f3b260033ad0f1e9952b093b4871e29c1eea441d2e970924f3c051b5ebe27c7bbb5702d80d3319828d4db3bf2d68204a8d5e4455bd45085d304bfdfbfd17480f6c7c425e18d674dd9681819be55363800475b99e7553943a40f02edab28dc10aad05e20055e04bee2a45ecdd1ebee114559bec28c0f28597c20a56ae5eacae9c3fc761eefda991c5f18785edb37ccb1b1750dab6f744fcd65c536cfa3caa87c0d690100159739e201c82ff0bd142e8cfaec284fc5b975854382a9c042d282e7fa9a271017523e28d6e6d15dbb1fa63841eec4fbcfc7634c1083a6e82ed4ffe020f2a512f482a9802b0375ebe31f6dc1c145257a9e4711db354dece6908f9ba795aa82105f33c5dfdb1d5ecb6866f00652033dad0c637d4c7dbda6ff6e91460281023601a12201fdff4ce5a86d788a6f8edc86a12bfecd7610f4fe4a3f7799e5acba7a18720c7b90ca5c68a161335ff7216b6905a84107732521a0297afd9ebad7a89a11feab0b9c350a8205aec968842997e44653e63a22793a28ed94a3a548311b8616ebaa982bc1e8de13fb36559fd66ae09163b13b269d96555b11f94ec4a6f7a610efc6997a41e8947e6f67845b30f4756884f445c5d38929d1a2ba10ea3a3477013e2dfd9e3c45ad6cfd8efe5a8ae823e84d3f0a400406ed5de70a66d2fe053a04eb55de18a94284bd9be0966b3a7d193de657129ce0f7a875bffef8d671c5f51b3fde1426b5daf0c027a88c32c0868fc7cdf641216aa9d2a90ca6592550f78c2f6e4fe67cc06ae6cd888da78d164f1a33fa455acda40076d99f81f89fe3501b235dd258784756d9c57e8775f191755f6722dbcdf694836133ff3c6d451835980b4525aa8d579e13e0cd150c794a6d77360cddf4eb7dd675a79929531bf1f1901bda560cc3b5f69f400f44405865fd61b10a24f73f4b53608faaec73aa8539ba087605092b52d8697ef0b5da8be075b944ae2b0912773cce6e1f9a26a00733d30b0caa17d3a0c07f945b315ac693ed31959383d8616c0c6bf5e2612b1632243b1410a6f876d8967a3f5177676b2df0b338ef147085172b2ae5f5bf64752b49eb1c5596e3ea252d6937ab8c160998782b08e4f44546e3bb94af3628e94c4ebc5b1a5d9d4276bbb9b28f7c72d778e7bf86956b3d2e7565140cce196aa3dbb85398118f966a983c4226d3f2d8b94d7d89525c7dd4089b876bc833768b8e981d222e137ea055b2aa524997333ee80b2b766c3f8e7945bbc4a31f822e0653536e7d490de668d22f61dca2b6e869f5830028ac8ad72cb1298daa3722441798e0aae6b513ccb33468ccd7495644d43bc472321bdb6f21f93d1a7e63de8805f8c86899822ce8ee2a78a2e765764db3e67f5f3764c0d017e1165988ae0e3306acab2e6b1711781ade84aae7fce89f3655978ba2a2f612a701d14f0cae9ee976978a79a1da1e4f9d852e3b7f7b4da4c5f099b525c365c0e997d127fc54131aafd7b9b366fd0adbdcc6f6f9fce07e962dfde9820e68b1451def4c820f204ea49d7c1c1b190724439bb6e14ffdcaaee4477051b1a089199eeef9e85a1a560529e2940da54a890f29e3b20c1a07a69d973fc3872a887f3323a980a5d9689a35e6d66f0085d3940b18a27ea8e3a4a7ccbf405fab72c90725fdb094ef8d869413d4c876a1a6c4a811a8c5da4d579b2b93ae6c8d79de7367a09aa5d34c306e0d3d6b1324b2da04531954b7c623fd983de65dff6c5d89b07444bb0919d307c0b98365ffc15619f5320dc71d4e883377261daf18211b360362fcbcb82c902191da0f0854d2599104ff03e86226a0951df3f5d448ba8b88b9664be5cd4cdae9871bc26ff8c49a4543d421ea40a166b3782652ad7b8df870d9e7d241bed6961d42c464e781840cdae51c06c644b31269a78fbe918acba9c006d0c66fa2e5bf03d8ad66cfbbae0b3f485b1bd59bf9d0470636d7058231ce17f062cef8a28f3a5236e1a02be9fd38c8b148099b098f46d67986f335d49c93a03796ad8090295c4e4062a200f251db5bbc2e23a68d50d0a4e298fc8977f599590ef65932ad7089c383cae33fe3bcc1d5e7541dbf0f6c893b4295b783ed04a0bcf0a33b500dccd231f3cefbbce817f20608e02673c04731d725f9f4f3e043421a671a857eefce309c15df609e2f843fa95dee24c25757164151d3b04c4a696f0b90ca9ca979d6f5d32977443a89628a1d366519eff3bb19f98500979aca40fdfa514906447a07174a49dacacc20eb90edc6bb277870996552c49a5cdd96f622f7d196381eefe3a8584e74b46052e975aa247a075c34998894d7b6c1db508d1b70d8705e2597237590e732ea8ce24dcebcfd3616005f1001df4221e8ea5ad0b19266207aaf6228f8402d6d09437965ec9fa771193cdeb6f1fad6cbece321e0d5bcbd94d8b37ec12c69bc213944a7b525d1d1970d9198500135db162ac38288150d1e83228e391e80c7b3cc0e4de9c141f11d542f1f4bedf07a6bad47d07a3330555bc33da7e1956d666e6aa2eb6e5ef4527f8f06ddf14ad8ebfd3ea3f32a0b50ecaf0abe3f0d88d753dad4395ffc430e9b6dba0ae745921ae8dd3b03a15532c41f8f9d41c712e75955ec2834302a4277df34d2178e998241dd2af7438e1ba5e00251b53b7bf56bb26624e1f39e215e1d0141dd1fbaa36ce0c5685277d7baa9a364d2ad3da0e5c2561a4a4c8511cea3dc79198e0c93fe180a4a69ec3268939807b52964956b0b85fc566e69aab96fa2ce11bfa322e07e0de89b1beac772eaa0fe2b7e2da7774a4720d55ce0f426c3862171b928205fdec1fe37f38a39a2bdd341b275874c19674195b6dc5a7738ed22faf7adc21a2b1c96cda88234981f91630fbd6a60fa601c22a96fb59b3650232c8d7c239706c5ba174a1fc691c44f107708e1f3113e0b02bf3cb3e165d3fc98711ef63c990667a1ec6f4eb11243750d35f2f0d3f685a6004d38e355a4a9e4172e694e5121228cd6a9071312abc8618a00a1b653cb17c8f8b6758eb3925fac70ed989b584f230267a7383508535d313f5b844f77b1cec5ea4b6e43ef0bacf1404e56c6bb8e0a9f2746a6ac094bf109cded21bf170d7cfad8ee92a31fd0acb5c3afb4e7c5d20a963c6bb42e457ae6145084c57d5e4941eaa7cc51004fdc22378331afdce816017a56fd30191e289c4010ae6091acb4348decec5165a7e0c242db31fb0c7b8d2d39e9d7b5a92ca51d53034a7b71af996f287bc36b892e8f35f6ba75629654bb19a6459db980ee3cf943186a76e5d6e0b5be9c2d4e03a204793a99161484df810630d2fac91f46ec113cf76c453ab344692731a8d5de6c166ffdd579a64fbdf915cfc0f2235b5c31af63913836acb5f6063193fbe50d47074d44b6052efd27dd193f47decfc4db2fe921fe7abfe88c8ea63d0005561aa0a3634411a3f94190d511636b974c0404f08623c4fdd7bba46ca223ad51f6d05fdb27b17ac87b85c9b700c275f0053128226e5cd7139099f51b2491754a556c6ebf32e6ec4680cab54012e1f29ea417e485c23c6ec84eee51df182532c9f2c450b98b2019f57b461f1804e19663ae6d27802fd0ec29614373e74a31971188d38e6ac0e33446a92906d901f86ac53407bd56cab39b9d96731236b7bcbb8fad2dfc9b4b58b2eeefd0f8661bc7ba236ca0b954e54fd7e33ce6a8b7c004e246280f0fa290d4d9e9389b70f927abbe4db1bb502c1109c0abefc5aba07a054d6fa84418cf7394fc05ef807a5909051c9abea5aca66d00d165b30353982c427548905b25028d1388ca919d504200c47831f90b74e144f48b53c1069655e7dfee37d8051bed3f23cf8c800b380e2b5c74a23f0eb5534ffe2142923d41bcc5ee9d251037591d55822040ba8a56a2188fe752b335a99e79643015f507533b1911cb4b713e66502cda593ae86517c8114636e2d6b6c3b3712b4fc22dcd2c7c8f4bbade185997d5828223380330b4c428b65605be35364bb0e25e871815594113af0a78adc98a94627be12d837cc7ff1a1f9c790c0b333581f816f5e57da4ecc0ba4d768cd2097f51a0ffbfe1b7421c2f21306030d55e5ec69611e0c318e046ebaba2d0051313a95aaba337af1360f22ab12ed49f064041188a11dc8f73c57ff3abaa6848c4763d527dab886bdf84632f7ba0b577d7afe61608ad731ca9f238f65b6f0bf432393aa0d533b1612b73a015ec979763f86d1dc822423f1c729a5724426ff359052fe0cac2ead0ae2c549b18a5e0b99f7cbdf52f80f5b5484c034f40ad317f4692a6c044b6850c1eef16aa2cdea0eec67a13690ffd4fd48f4b39934f16ace013e6b167b06f08c43761041227fa40cd09cc5e6758842ccb330e28b6c0d82242ba0f979f2812b220f407e2881c755474e07aa83b49c3c6cdc0815c7d4fb7bbdacd0b7a16de2da36c3743332a2d758c713b657a36b031306835e3ca19f024f03e4d4abedd3382fb78c13b9c252332671997f1d7cd3fc6779d130ca1f5d84c819a3a5cd289e90f8bbf3f4323e62402b01eee9e92769bf748030e490bca31872ab072a61c56addbc15d96da42f6254a48f32e969a48cc2516f68874955db4c6f3dc961392fb1390072f309cf1cd184a4db278c14961844a8cfcd2a71bfd128ae4d0417a9f80ade2577c02b6b25e0bc36106446a0afd9a2fa75180069ca61f438c54c577267f857968d8261400311d90b0426bd5cfcb8e1785f2362bcc67d8901c70c9a0767756554272ad984a320bf62e596c1bff00d86896c34b12095a056bfffe384791b27f641c54238cea7016b9a7a0b50589b383d872c940c68276cebb234f2dc3a0988fb5f0b1a540873d2ed7031992e44f30a9f31086bb44dfe80daf775e9e23b5e586f73071633cbcf5219f1e6146925a1dd0ca884501051dc250656532fb9945b5610a2d3dc1f8865908312b9702825cc774f4e739f63a5e01524b64d96b605b0b8e02bb2600e108fa1e8e9d51a18f0d7c8d012da131a858be8168a3d53b0fbe2d4739ad3aa5aa066d05796b7214674775040bc527541b63207ece4dc320e93c27556ce4d87f38a57c048d47ca7c0398e3047b4d221541fd9702202b388becb8820e56a88e2669a8ce220f24271ac33dd667876102d1ce6a4863dcf28f58338a2eb6045c94aa3ce9590dcc9088c48f6a4db730cf41221b0c0fd583d36c3d6219b40526908e67d5c3452eb16fab30cf82def51a071ec44d550f719cb7520b477145f099758e341fd279137a8cc1fd5c91aeccb46da4a23c323922ce8960d0bcf33bcc1968417559b3892e3d269d324b28248ac0798f64ab92bc0d4fbfa36597b915a969d9470af59a3114be05f32c95fe6f5585295675474122cd90d3b5214d499ae6f63780bc7b1f2f198e9888c112255b76f120e64aad4839bcc0ba135a3c5fec980f230d6360bfc1255b278b0bd7b979cdec1cc913fa88f7cd7a619a6c68caa55d3c7f8ab40e88142b7a7f3527625468ceb0c50aac083f203e29f875a56d24bf11e6bf8507b9e07d210b73e637862c01fef1e7a9dd00644512a09f5bbe49529b9e991711cdbe46360aa76059ddbbeebd42ea092fff315106cb12ca9c2484ab29797846e5edc5847a0517019c15e48fb6530a1036bb39692fc34bcce9e4bac49dc52db9e65a4b89a70ad96d89826ddd84040cab549bf342d8b83ee48df122774536e8f308d0690de90b155cefa08029012ac47680aa2ab831fef3515d6e43d7f7e701848b8a523e1b1b2171512cad7033113c59c9f6cb92138e163478a8e4f5dc6f706734d301e55f167a87129763bf5ee82a1fb3e22912271ba50d42304598d6b29f6cbb89c3e45f1718abb5a3ab661280dc74ae3ec58e84a57e3df9af2f48bc384f5f9f468106fe0731e5369911915d225ce1412b303e1c6d49c945256a42f3a287f47cf31ab7df1cf636ea8020f2c4270d8e59b5fb2c3aafadea775ba0d1c0e72a4662e292f87f185c911b8f47b6c042a3b752f1fcb9e4ef50314a48e413a6d1fcf2282618aa251f20010aaaa2079b139aa126a6a1ac8003ed088ef32166b989b868e8579433a22f9900a1830de89dd332009f52a6e6ab02666b817e4c1758e752c0880d126a6c031de584110663d145368648252938d5db976fffe42f1f19d4de0ca4526391910caf7d27d7f611a4b17bba8a04692ab8f5d09ccaa3e0d42ea3d3c94a499c31e410d3d34fdc144c36366c0328a33ae7839485a9d58910eeaaab514d0df3243f3707e3db46255e5181f633fc7f7bfe60147295c3c4adc5874e15ea3daeb9093a1e14ecfcde74698d3a13563a3543f17e73354cd0efba2ee0a42686037479c3de7d2daccad87bad269ee69bde8c6aa72d1a93bb1fee5a683014a7df7643cd3c236c0600c2db537eb3b7a7fae9f315d314d22198445338bb3c6810ff8e2614461e8a29aa9af0e3551a6131a3eb568b88fa05c183d45a49c733c803d010b1385204611c628ced00b5a5ae60b01ccd105eb2aa20b832fadb5d16106ed79f26158475c003179b684b37d0754472c22c3b1add6a71d9c744a239f7728770b108b43e738b1bd28b8237d8ae4969572e4b0c1fe536e9f9c14a95e2837d8d41d70e661f459c08798bcd27b4011d0aff77f252bf8a27e444927507f6169b0904269aadcfd51f1c96e6ba950973343fc29e78311b6a58820b7c676ecd30b5dbefdd0467f027f2130b5b2a9b9e857300b0f5ed3fc7b78fa53cb5f999cbcf982bf26d379788e1fe085befd9d73930437f0fb2f83db0f2ce95cf018d8216769d5b6334d3d8205f2a2d7ca7afaddd0dbde50a80a9c70e1ef0868d594fe104e9b58cf390035d4d68da0bd7c058bd16d8acfab5a92242b4a267addc6133f875ec91ab5b19bc2d05147918deb6fd2783e4a052842aefaaa607d26ee3d52cee023fcb7bacdaf7d1b481db0c67d296c82b2990071bf611b72292927cb08f7366edc566b9fe38d396aa12fd25b833d8ab894f6eef72349ce2bab7abe0858840b29397f1c3e642b054b835cd300bdcef2eb2860fd4ec4a869dccc2368403a34a34af25f4d93c80e573699e390ed7ee39a813f166f06a3cf1304324964a5f3ba4511ce754b2a9b38d26f66b9013abc9c710bc91c9a454efb521b81b41e0bf2abdd4d8bc259b1b391289be82462772a9585196f5a671dad5a96d2e06cc4c1b4c71a09a666d4f435aa4dbb5300300af2ab8f28068f35510e192864ef363d1e54cabf309bad405b029c93143e69011256cd36f439b7ddc3ef622f6f8aa38a5fda66dacd0e4f0e1a56c262b5c937417d2455ed57b2724d0c59cd851bb82bbafea3b96dc20994bafab1ee50c91fb1a217c538fa8e89d7a275f1cf29226a650a1880abbe6ae1a4c0fa1cfb28d5da0a72d459a2e41e16d008b12d3fb07a3ad251a605468c7a3f9b2ffdb032d08d0065c18e505aacaff1e786af98fb630d296a9eb19c1795063578b93f63b86cca48a6628b3a2cb85697c0abbeb624ba13bc1431c71f2348dd6244fd0e2ff3583136c4128af352effa2eea5e2030bd6c209f28a8da66fd2a6ce6d1f86201224f9ded79718e8bed769a219a8c2ce8d0b534c8834700757010a5e8b9cca5cbd1a6992e6632da2be0957a757c10635ae72ad076f2db0dbc440a587fcd133fe19219a7a2a8c2782f9a4f2311c0d948ae3dcb22255b7eae00396d386153e2600476ce2d3a6d729bd6d3046aa8fbccfdb4212b2732764d9eec069aa3a203c0bdac4f2903a118328eda29676bc2e3409d5273e2610ec7972017e596afba3e58fe60a7b969cf72628e0a8f02473ce72e266f2ea01c8d71d2b15246e47ecbc525f5801e0b116cd8b17acd6e7b4f9e165825b8cd5e26042ed55fd4243926258c7721c2c731b99094419412d52a07df261d19621d26b33440a62ff6ab54f8aaa7eba9ffff7982c32600fef75c0e7e8788aa9b088d6d30d68adcb6c770ce90eb16fc157b85d2c021cbd1bee03768a7d59a5bcbc18e60f3b0f55f7deebd16d0bf250b0a9656ec826a83f1e503b525c2cda5130757bf5d928b81ddaefcb523b216e3f2a1f688b8eb842c82cade2b7bac1093238c710cf4e3b9b3ce360c101ae85f5595dbdde2aef12b87921d440bed410ab220bfb36a633d56a250393736b5e1934d46e6f678a1097b7e02ea5d6badfee4fd4e4eb9b4c037f0928039e37d91e09f7f9e96f78aa337c9c6622745a915f2e153d61dc0bfa54a3a13234aa9862065fade68ce5da21934d980f14bcab334d679941a8a9cf3ce1de46d6f4e2bc3f463d57d49cb5e58fe989c0ef1155e4817411e41e167e05174f6bdb4df08e1b9342c8307aa9a5b9e12ec794c528475651cac6cb4722e01f2f9286417e3c8785deaf304bb18733ddb3055e4cba23909563025fd030ba2c90816cfe9c5cdcfb3705ca87f7d0280babd46d58278c10750c4187e06d3480f3a4495cfd8e21c73bf1fa3f42df66e2b665f39b32ffbe03a41cf16c3b3d72b7e712c34e52c84822ea207d37a1824ac35332cb25f72ff21a5eceb52c4868d891e505d4a3c0d191a5f1a76ca3047dfd04d4038532ee66021d6f2ae6921e37ee25532895bc78daeea290b2d8b4a051cdc717581bc423f03103a9a8941ee37cf59bbbc2f4dd52e6ab48f2cb96ed086a5df521dc252d547c04180f110798e264b34efaf74cb19ae59fa49d0777443209dc1836a06d38bc75740365b998d1b6db4b6d217418559054ec4acd62a0e852e231c599021582d466802a0c95c4a0b7e23acc3ad3033b3538f90bf156cd8929e860248a3667aef45e722fc4269642b0522344c9dc56d445cd9bb26dcc4288e0be554d4ebb5909da7d112cde5601057d202435d2168bb06804ecb9d17c13e782564f5a30d018ed3e3c7b02e8c30b7536a7975da5b7ae3b50b491e134a1df943ddcc87f20411dcec3893f08016d92f3f1df700662b464a7e97d8e05fff95efac87284fbd3f23f4ca648bb087dc528d37fcfe7fb3b9dd592a0f4aef86222fc4c27b27aa9ba67d46ab0c8a8084bf2527db71b7b990c7f4faa9df7aaf59e84b054e71f18af3a55c04f5ab63b2454a3163e422018f97427288d81351b122bafc018547b36a75c1d1eaa7101991f5f65048ac05505786f8d0fed78a1f15513545255df7dfb05928901e8f42e151cf58b23bfb68da8f238a5ea70cf6de106f8861ea5c830e84439d0fc58db5d7e0f627bce6562aaa7916415c7e58f18ffbc95443a4ae4978985a5fa14f95ea8eb185c933208eba30f6f36de8cb8eb88966076723e4296e6663cfb5daab5c5d0c82bf202b170e2a87874f23f85d815eeaa4210114327e0c43b86afa5d62f525669078160574d156d584639a76409e3c09b904f9a35339410d61cde4a0da1028ea61d7261237043e8bb22c41fad833238e9f5af65d390cb3130d304cb557d2429db305f8b97de478654480d5ff32da6bfb3a7f834aeddb2d9c4677e221b6e679c0a0a5fe3489bea5280185fd44355bfd6104d99a325e1c0a07fa47136045513550c2227f7f4d666d4d2fe015341c4b5931dfd3d5a97befbecb11bf2b44e4329a1980e8e073f05893cd4031ca6d35f1383c6072c0b46895b7efbaa913def4285d6ae0a9ec21bbe954334619b88fed56deb8b61d7fd9105c31fffe588f41c48de285d0283408c33062282ec100397d70e790c8092b3d67cbf753e907713f690eec47b01b2e8431ce08ab39f909579c6a4b24a08a5950d5a83060c3ec8280fff063f2d1fdedf14a6a14b1469fc02fda74f93e923e410d1bcfae2af5e166c27a237ae7b1539fee3a55284e6a85c0f5222b5800305bcfa6832676658aed1f64ee653a33e0605e89f309bdb7d503744f9b0eedf8d864d7e7d82f95b94d20c5092221ad257131afc19bea71c714702c4fa998a4ecca052b5f3c2a9385942dcc5b76ddef2750867f9c1dba79868e90f3e3b4e6ec3a9bc70f1600766f2236de57b9d764e3e331ebf584eac6c087716366a51dcccbd9e3d6244717f6b140446c9d3f55b8b1cb40d15bea5868a0d1cd565b9a2b7f081499dcb8fcdcd15ebb0a74acd9b1488c7512eae0c3bcb8568b6f8d610f3e50591476a130729004c1749f2dc95ca7ba70d2b0b401ce3a8607a9f8923655d99a88390ff81d6b8a80e2357b7a1cd3c28706789250764bd44a03860330480c30c4431c8262985f24cd14778daec39f8eed69c2216ec478d34657cdc9d91c774bbd58f4b36c60701e7d7d89866f3bf5c655052581a5a5c8a24ac27752cd37b0aab0e11d46bbbf74064ad352a7b97877870e8f76c088ff36265395bb7c814bad620a311aff075d327f4046cf03a43c416af266ff52e666306eec54a57c28c300da173dd4c9c55fe70d0dfacd38f28dd0b6746bc3e1142e1a3e71a351b1096dfa4a2c34f9d3a34dfc8f7bf45b3b4173770b286d4b7039361b892938a33319427900cbb86bf5254d575d37f504d1ed93212a5b0e31627e33d0d2d94cd56434637ab5f1648d53f65d3eee17143f9596dfcfaa830163719feb6ce55fe3e2d2ca6d66275db7bf54e88a527597822c29fc9817df24ecc1613102d0d407250580772d9d0053bcb01e86e8d7bd2d7fb216aa3813ab9d4b56a0c6f331230855bbe7ff826171184a5a1caa4d74d845a4eeef9381aa211ca191007573a4896def084e52664e76760edcb1aa83ab3c9e6ed41bf1f7ca13284c8d6063378947893775fd5be99c7f93732315ce251a59e0a01df90f6c34b14e69b020b5a3676533907be4c7c868d44114e2cee8d1d1474b92774f254bcf7d292c3d2129a4c1c6ce17653b82270e1008b3a4e4002622ad689606e3dd0eb75dbf52157042291d93b94c495acc07158cc9124f602f8f8899c6c2663fd247ad2a55b205c11f10c970c9b4ac1230dd99550edd69bf82d14bf386ca4974edd37cd849526632ce50db918ecdac0a3c9007513adf0f2b2553e0a16bc0f6d37b3b0636ac84c9a012d3cb414bd211672ae7e5b65c4473f49608d8a5d7d22c5f8ef7792175839bb21dfa1d462a7b483fe3df9c1b164c4b7c3a4f9c0c8c7582d173f70d1daf5072514f7f333c8e11c2ae4a85d3e164efe414d9ad339f4289bfbc3218e45bd747d2608e8d29b8ce547daca3a877f907a4524a4da15694377f1ee4f3af875884ffc7b206ef3080b5448192fe750863670dc1b6e35de4ef5a25d731bccfb52505d0e62084ece08e5ea8c54006fe99f8b99e4af8021a09147c8ac27fcf29bef78d5020124873fb13269c51302babdd6a04da5f1bf8a9a25475467cca2a648ed75c6abcc26bc742d1b1ceafc5d56011e1a531b7644c19437950a755f1a05cdb783b6906709c6f684c3e8a1a2fa4c3fa389b5f77d94c941faa48083616e04be7c80b4180b25776d249332fb6b9121386bc30bf47a04c8fc68c51233d9c0babedcb42a2fc11878512c84e56edf200f73ca8be4236ea5f0d70f4802c75eda01b7cfcf4f12d40a7d24e544637691ef09781ed958122e0f594118221eb8c7ce2cd869108302cf02a0d136c98d86c6179b7df9850f26d5d6f03591b9d0de9dd8ca7a41930db64c0144b544d057b6ecaddafc38dee45b43965edf56d188b4bd05e252afa7d1979e1b714d9429c9628180b72ce293bd296c6654009d3f11a1fad50803d5664b98f40386c1e56b41169c0b9992da5e859794023e9baa6ce862b7508aeccccac8fcf71f83514e884f527932a86ac7a2ac600be86a4500bb917d370b30d63402788ec52fabcd4a7488d43454e92cc910944ba70c4b42966797434ac63b4d85437cfbbc03d1f47610ebd7c1d87adcb30321712a8a4c79a7bf249bf8975f2788c713e9060b69c16f60f680a9ac8a4c5022e26584262f7d2c01cc051ad39c09acc3b9480207ba693b7b60e3ab1fe6b22a6a37d6ef5e5c63e8579f95b44df008568187eb461918e21b53453eefbf79fd9a0ef519889ddd20dfcb6aaeff60bce608d0c5a48d1d07b415b4875aa95711271e5eec233bee32393189a52b66e5480bf08d4ec60b0c49e87df397ac90bd8a58caaad04544e4f8aefa4106ba5730c51d04bb5479231901a430804660d0f54087133866d698918d63dba07bfcd0f399ac0b3b94a4640eb4e295dbd751785b13cf1856f6c6ed4d6516d522c0cf3c2bbd332bba681dfc20938321a00ec64893190a32cead764bb5492bba2661ab4dee01e3718486d96710916b980e1ab12605c381c74072379f38becef02c69884bc245a2bcc52894eb18547be11a96c2eded1a1f037e0ef97338cc09001b93335abed56c70ca6712340dd60976707a889b83e1412c0d60f7159b0db6b29a35a356361fdcca9b5d0d21294ba9634eb6fcd7566405b0e42372320b1c6b8a37d88025b5132536aa782b6c1e941f361dc967c7005519465e17b3e6b7468d790a3afea49ed8054844b7d35b103e01a9506afd4da4f83d4092f259c39cca27343781d90b880641b2c3415290218f4c3a6459c6d1a7e0284e6cfd2cc291dd6b643d349248904dc90bbcb7473011dca9e9a73e0b8eebd3105114bcd01152584fd4f56fca5fddb005201f026e4d2d12e9a52927d2ef330d7e3c6c8e46430b7bd230918295d5b35d2a29fd4bfe47168b8fce7dc5d71d008e609fbfbc3be011b1bd72b1809c397ecd60e9fba4d79206e3bf8c551f42db0cc09296173017d706c535fd5752bf2d609919e8ef08935723c579d858b6f020b3353e61d95a6c713cc54e01d090c593708cc6865652974029f8b3420876e2aaf4334a4213629506bad4fc8c683d1420f0d39a10675763470b84d48090dc34a2e8da478310801dd4314f8f7b2345204ea70ceafdf6aeee172a7c1e660dd2bbd7929118224bf8c00bf981606f259c38d90cfd16460a36c8332a60b0ab7c6b80da96437400459e79ab837e484e3eaa2230a120616552e80d222cc85211390e84365f439a5f094a63e2997e8ec4a092a91a99cda4b4eebe831b2f71bdc54e436cd60af0eb89792ebbd674347672e1b31175b16ccedefae104180f2433c852e3db1125c9d573254718ebda81a1a231dafdcffa9ba74277411720200c6e5f592e0886aef90a9949e544fc1ff777adeb1d693d4fc5e8eba08a6b942aec4f6894e6c4a68fa9e73a952209a118650a80b399431f30d77a356b9713dd0e03d6a331bdeabf87cf36a004664790538c2cc2c37031b34eacfd240a2f92f002fe47c0875d40b3abc1fb7c0c6bd8c63144f7ccfb4941450e3fd9f94f8b634d05d9113130f8f240cc2b3d1bfd7fbf6c9580a8cb4b6133fb9703c5ebb6876d041ff0088e062d2ec4a778e419f4226d7f2c0512f137e7cf14206847e7f4963d7d109fc7f6d28dbc14d81b66a9c5b9ffa18bd69494871c38b84d0384a3915841c11e66fa3464278cf265179888747faac6aae198d026deecb35dd97918af1089d12a690d36b0420758a448cd4c5f87f086a5c8cc81d95fd6b49ed5218423c9df041d9de02d9680629c167809444d508996aac94a33254d70bf708ab077fe8ae6cd081b3ff8a37c4cf5fba97f0c6768297054156a92aeb830fb690f3e6837cef2ef1b21b60130bd17a8ea14b86495959e5cf499b859c28012250a96a01120f9498d0159110ba9fe3c37193b22f5a824f36f0f0ad2c1e0de7d6171484df0772d0f7719decd4d015d83d508cf230d921c6f948722d99b86528b8aa505478a9d46ef49123f27bcd3fd229e1095aeae113b374a4c8efc55e0f902d8f90bc23db6afd6c110af36ace6d7106ce56af2b9ef440c5f23c2af730930597df889d83faa92691f285e62b41f1816e0734fd2f69666a14d18807ef7a9a0bf46531f5c8d7af079e71706eb8070af08fafe7fbbb529e3e75ffc279d3defcf3fb6543d18af14513b6907b026bbca5bd3c98a523c86d73748dd92d9e71de557d32868e262b4c4617e6d23ecbacf374a7f83c2cbae39093eed34703845e774d267a1404b56df147bbd24120bfc6c2eb9ddef82771d2b317f7b11999fd8a2d49e7b23ba6fc64c746094550ec4573786ce5143579c6fa178410eed19358eb9dbfb154794ee3763929f9dbc022196453723d1391648b764054c215087aee6263bb0cdf939e2514d4f54f3712bb57070c683350ecb10b546727a23bd2aa1022b8c76624eb30dda844804306305f4cd844497dcd12fcc2b71cd1087874b19e708052d62994317121a9265554a0a9b7e3847c766cb42bf8190c3edd402df3dc26fd95ce49cc454629853d4d0cb09b7f8d80b7123901f3fb1db4a3edeb04ac2cfc4f3d59454391dd32dbdc87fd32df6394c95865632d9600c060b620b05f1b114c898c270696b9508045b7872f32f575a81fe2c7801c423b7d4d9957d371028da8b6927d0ea7c61aa7c330cb62f236622a15bc36860153cb0f1c4af344a3a0d301f74342cf7a9497dc9505f7ada1f835b819a8e357919c29abfe0b333c70bb71bb61112b3dcc0e2b6f45922dd521b093ed8f0eda2719865e4994c8605dc064788c5bf2fc109bafedf2743d2751d25bc9fd636ad648bed681085c75515b321934168ee163a9d1561cce2d5c55a090d6603e9bac98f09b7583b440098eff3370d367f5d31caa30919923bc956efd3116e228b0b16c06d7b225b5d972122cdaebe44e1929de48d57e3c6c15806f36f0b5694ee508a9db727a32c562207cb2e6aad3f43882560e3f585351ca8154ec621606c6b806764f5387a9869168f8a80934ed827344a884363c2ef14d39128a5205c6c9f0cb2477396380bd2a62682c9f181606bf1bd67a9dd96b68f53aeddb9031cea2cf25e1b08a016bf8296d64308a7b43b02a573368b8e5d4326d15de2252fbbc9f6a3cc14428990f7a8910e11d9ccdd7599e2a0eb38967caea18fc000dc2e081500512a50a7bf3a47c6bd26284a5c9f03d7a8e574238d2581f14b6494e9047124578591fd2c705577e86c18942fa5724a6f36329e19ee0a662eac814161161a6c600dc26290018f80ae58727060f9d85d83f18229e05fd216852733226327f7214eea34461523112b86a8a279133dee1f427293b7e235671911d3fc8e2b14f617b19796a15a6798a30fcd2d65951964fc9d99aaa0de2a5a384136a6db672e693a888a8e6ae6af03ca44faeede7d46959bb894daf0450d8694dbf139fe870a24a72480b1403c1d4633c805066ab4833c3b84c30801a9c741512c35e587141080c78744714df5747bd728418222536a79899f8331a4b7f37c5e60ecbeeaff0ea097c86f5e11869a6e578dabbdf7bb452790e01271e42739fef3f3c9f94324242fe060593aa43ce137ddf615bdc73ad2ebe11b4a9f035d0cdee1feaad523a61c4f00c696d6530375027bb6b9eb2df4f42c132ed2e673a12eb6d21901475a7a21f9657e32d53806f863591a557eb7816258bea2320be9161cd52faec2c59ac21dbd5fd51aafd4f4ff422f450c5e0a544040d42ec10b250468fe58c5467dd9101e2b3d3f6572be4cd9c6052a5725b5c8afd0f24df4188a53d87d3e18387d76bc2f9fb587abddcc58f856a86077aadff9ba90e7c4a95e03b3ccf959d407dec88a2d64a520f6de043042aae416535f285d6e9be83f58559190d9cdf52009eab6e32bb5f69935d9c83af7cc91d6137779547b57ea0b174f341e663917fd2d38fad80d3e64877bf4295c02ab16b85914f5e869062f1a139d0bb2bb0f2b0285d10eaf2889adccf00da3ffb4250b5d069375c00004b2c96e592ca6fe6cee5a3293f7c90054b31855d3cc941aed3527bb94d79e03379d4a14cd1c6fc2138f95ca6fbcbb043e92bb4f74b68df3886a64aef84b9ee7b8896090fb200a92844fe1bfc31cf1161899cbfb90309ce8848b16dae7e97a99b3d3c758109b86167184b51277af51199b62eafd2dfecd9de46e39215d3a887542e626def4af44ef932a11f4ba7c030da462043bdad3f7f9be0671fc9225c609a3d83719a4e6d3169750ea112993132a24e1a02e0db0ff38004af18ea48bdb9899aaf95e61f6922eece4b13b216ddb296a9650403f8fc6a143b6b70f4d0d3c76a9684190aacefce36bcf590137214c0ad7d8e726f9274018f3658f304fe3bb35cfdd84894af058f2b228c82c4e13be154eaaad446743b905fff4890f52e16f625e57e4a6ac7dc87770d05f0d9307840025ad1f7a1823f135ac758ac41fbbaab9e48cd3c38691625d48684e8d1c9ebe2003b2b9fe32f56e63f9fe4cedaf04f9ac3878fcdaecfb56ac45b7e73527094924c1d04fa0fbdccb99a09497720e302cad9e42b00df9214a8058d3df5cc960ca0578b41eed0d2e494c47ed27b9ffda6df21e917e414d282cb37fca6fa7fe4c9d11b375f558a9a560d37703b3915e74a979a4f555065c15c1e7bdba1b0ed72c8e2402d2c41cb469110b5e905f42e3ff50628ef7f2653ff1d14aeb48e0c2e6e9aa284ab309fb9fbc592883c78059bc36ebd869839225cd0bbb3e54eed5fa6b02b51f3e8216f12a41e3bf31bfa3a467bf5deca6b7e0d3d40328c6d895ed9a0600cc1af55729d36441e24d8a3d9bba12121cc58312bc3ed62d6a31fff9215968cd1c0a1983965201b6809c74c4fbd4a76467cd79acd1c5802accd1f1d05052de6fd823ba069e40f63bb4da40c156ec4bcb2118ece4f09a5bb2ed6ee4f1c70bd8bf132bbd8bdafd144d44384de642f079145b9002c5459edbbc0b95fe64d15583aadd04e7f6bf380a0cb50c50254f4870a4d0b1c6c82746cf96b39334a774211c31e224a25e7c013f46be697fb5a9b221f72ca1d72147802b7431d099e4de6e8517a71f8774d16176a3c0ac1b73e268cdb85c53ef03350d42a41ccb7eaa71b7b0ad0f2190926ebc012c4c5ead4878e76bd495aab5bbc513bc14251207681d02b43dca11fa845478e256b4c0508f694918325950ade5da49c3ab9644b1e6d5ac8d47c40d76421a00fef45a54950fd77abdaebe62b6c5a655bf67d7e834bb497fb8bf8710341ff66242e67fbaebdfe042bf4ea047db624d39813e5b4a714fadca1d83f32658fdb814794a773bb0bd9f722a6fa0e21315e5d5dafd117aa1a92a1d8cd8e6164745598a1dc6a19b22ac8bb958559a58cb3405716a6b990a112b367c1a52d608fca8edb9a8288ad5fd771ee454169093f45003d8df74439ecb457d6f100eae0fb749239f8502361876b18a55c399d225561bb18223123668c6e44d1e5d41532012a0a3997972c5d335ab2c4cca5a501dddf323371c958cae31d19ac90e3b050824f56c23a23f2fd2bec2f497b868043633bd2ceecabd473d6d92e2b1e21a5a058b2e968ef831dbdd0c44fd3d349a7a0f05bf815263c1c1ff073ebdc674e48a0d888c8f293433bf09b60f851ac2f6be2fc5f3989e931e10ac0bf396563002792aa777b97bcb7250e3dfd050bdc30382b492a9a77d2c9ed797f9b7a36ad47440303a1e15e81c28e1ed401596e3e301e1f3179919ad41e6038d79c8296a06be6a2c8d7df50ef04e37ad5bf4db15e849a72a30079ed73f617932b095b573ae9c0819ca3af36858217a8cc8e8a5439a51b49574cd015669aed00cd7506a70569c8e23f3e6832f32d9597787921c536c6147fd975d0592645aed3c1f33186427f1b52cf8dc8cd7afa71b689f1b7d8131c87b1bc902aa2fd8027a5ba4454801daa5df18238daaab57976d887abd89a25537cb55e34e2eaa6ad7fb5bde91cdefabef3428122be6af4d625249368d0de4328586c4b3944732f23b9c917fe2326df76b4014946cc2a8dc03543d2ce88b81edb6946d4387da6a604ed89acc2699ec03ab3d08c7993cd2cf7472d336acdb2c0fe827392109a2be9cbf52c72cb3f050ffb10e2be89e4a983cea9d6a4f93542f155291664bba18cd5d8c40a9714985c136fbe11e568e259f1f17913380dbe9b9a2122cb8239f3cdf28e077523e3f9ce935a4d02703c3d41c7005ba184403fc07bf78d57bafac37cd021c38ecb4276555b687801534c11b1508d1d0df73a82f096bac222e90cb56cad11824390623cc0841c90c2b81818bfff80daf3b980fbe2f42e68f37460f1cabb38178a9df37eaf213cb672dd71b0505ea1e35b759fdf64ad3cad56f1b5f438d5ec60325325a93c4b5d67014c1e3dc8d15c1f383d28abd9fd5b35cea749c27e9f6180b027669a2872795e81138c148d43a4d6ba15e58bd84e36a754d5be58464a81521cb93e06b52d2e66204e83c5693278d935b39adcbcde49c60987be2454bfd38e5334fa98a9c458b082c16905575a7a0096a3caeb7f2fccdee8e2999dbdfed254ce4f4b7100acb225715e07f99f3e968487eb644f90eba8a85a1a86c245f5190cc328984f33638ec2d1be6aea5f4720d3a74d684d85f3c107ce7d393e352a2158c379ab60bd790e7be2cb9ef6e43b09e850af12cc4c7bc477d7080bdddb17fddd8a52ae5bbe418ac59252c075ab5378adffd3e00650936255662fb699a7e4717cfbe3cd67b68493b1625ac4b96c1fc1cad4e3d8d1b6ec607c03ad7bf30c91ad14f3aea33af9bb7b1930d9fbfb8211837be0977cf26375e38122f08fcd17ae71a94aac2a9fc561bd65f1887cef77595ba61dd76aad30e0affb600c87d4ce22538c39b49f8eabd298f4512459f6cf0f2fdfe7a750104996a8ffef683a5d9d2cba97659d45853318872e805c32e4c4d56efe93d3b9f45f0f027518cb385b2dcb891686afcf1ee28df97bc2505e834ec2c0aed4caf89457e624578ad45100a2bd70634af616390c3614c0d2e4609088d215218877140cf4409e18e5b1c328310781ceb2d5422b7d892eb3b246249124e38b74abf9d7d31d82c3e858bb080f8fa305244538f147bd4c5902b12d1b97da243f457d41a0ace605db02133b354818ee9b1e7bfad1709c3f6430b28450d4e87d525b4dc0ba32777dfa27f05e00464a9beea99b5255640ef78e5b910605b2b88ecb74ddd3209371154acb7e2bffc8189e33f4281c008766154faf6304e0e4b834c6c5a9aa446d1c1b15f369a0acf2b338d6489946d10cb4f358ab320be8134cae2d3f12619ca0b61503457254a01bbcf2ec9132038a82428d4d2c313cac71507d3a02986337ec77a83480dfa695ceb7459da1aa98b9f1f45b6f2570037717cf9a005cd941a60e0536c35773be051d03e8840d422a317066b62e44704fd9b96336b5e971af06c13fe23f099afd2274c6372858d0b52a485c50301ca29fb45db477c50f294d327aacaffa31c0c76b2dcaef468bff66ee609d1dbf7af129c66fb15cc2c5a22137b5659753bd41e47ca084539f9cf940f298f854085570a5cde65af3bb2d2ff7e67a4ddb5f08f5090e11d3a58a3ea05f8dc2b9e6e9d711bab331dc1d43cbdce4bd76a4fc1696a647d2717604defca0a92063033b97b8904a458e97a596a2e850c790a3eb7eed244eec5ef2885bf124e7a951f8148c10a2494989f2e72cdd7ae3885cc68382547fb27f4390e8e41b311a6a4114f39560101e086427cb4cfffccf69d12262459aa704bf6151758ebf6232730fbbb5098f120072084b4c1b7b302e0653f689ea0248349b9d2a1ce27606faa0d6c67d73a832346d10a6c5adb081959dd740ac6d534197d701a73e6060106cd12a62a9d3bab14e6ba602edd6d28010ae2d20e55821f5419e1f3f0ce276a3fa7c3224c4ef539205afc39f4566e8fd05f7b1f05f3f923222dc091d813a99b5431a8903e7939382db12e9e9fe305393cd8de8e56508c6cc06143b64bc22cbd4bb8a6a0a94e443a0612178b7c2179d2dbebfb9b1f9b58078bdc7e7079f19086dd8fde2e605ab13804fbbc025dadd8862272da29bdede6b9413ec3811ac23df071cb4a38cdadefdc2456a487c45fe47aad6b3aa51527b17ae7abd119572a272d01d2ccaa82e8cf0912c8e43a449bd2651573124c84cdf54173b848885d4e0492d34433c09ddc181125a37e344302756a06e97e535da53a2c0eff3e0dee2cfeccffc44f78c4e97d6522c226b7fd337e95ffc2ed024c2224d17857f69b257386ee315d9f0d68b71d152d1fb8a1f335ecb17939ca2048443d7968b86480a846eec327611b7ee5b3087d2f9491c38f79848bc47c624a54b4533e8692af5a6d6a9ad423cc97db52e500f802f0d69fdd0c1684eb0762019a31dd86aec3388e3d30b83ef1c35d53b4be821d00a600132c93337c151d5e9716593c7dceb8da39bfe229d059021531724596dc2a8e0a4b3047b182d4c9b128d95ec3daf6a65f17feb5180eeb232d8011cd29940971b2a3e9697b795f2531b9fbfd6c7cf58ffcd2845e496dd918a1081f078d9b2b7a69e1d743a67aa1b20a5ee67b296baf701829ec9cf134dfcfa3df88a74ee112b73421d4418ea9e6f991969438b873c5a223c91af9be15099a0a24264f73de2d41d98729bf7466513d94bb85388f96fb70a9ed85dd2b19664e4983db39780f237825ed03d6d2e5fda772e89170b9269b0df9427298b858cdae12338dd6280e2a1cbdf06cc9cd204a121d8fc0fe4244ebdd83b1cadb991c7480f9e9f6ef636e0e0fa5889097b78354898c29e4f15e26627f4b3bd76ed0723debfb717894e4812b68644d9cc993d0b334f7fa268e3007ab86b791275f40d15035eaf2fc355c4c00fba50e5c1849afadf310dddcb39214ed591ec713c4967698fe8957258c7a0628cd6e21c87ad79aed22ac294217a19e12c6e6c11fd4124051a1b3585813536e101a7313ce2b66211bb97a87edab0ac3826df3f511fd1bd0c56b3184fe05cb1807a665f9c3958a4f6ff6735ddb8bcc93b4a5c8ec58c728ef8fa0c9fe98ff0edb19d049565147ad51bd21d45ec0ac40020d83e51d18e81a21bf301aecd883ac411835c988033afa20467ed3b75c17f355b10697c8ae26523ab002953fa7d296df1bba5a3c67aae79e694b390027161c93c28adb955eb03d5debec7f35876d2b0d217df77f6efdb1ae631a777512639a120ef94ba79aade92f058036aa175d7428130a39e4bff1290b8c1b9915cf48ff260dcc173e41f52a74fd21c2c0ed96c2f91c764661be0f812dd45a0cf0383f0c16afb6a0483274786c9fc2429b6a0f8ca42c3a2eb14a73532d4531778b822ad6a33118fec870b63da59a7a82d9f0bb4f911bdf87f882c3cab3ee0210ec25edaccd3e948c7a5c3a90bcb4925ef34596fa7b0822b751402d7aa53331f1c5265ec762616d0582ecf564f659798eb79da1317e1c14b39e9607b0c1dd1e37ea122096934dd5e9266d2a5fc89d1f70ddbf3342490318b866df551386f1172791eed4361d0857b4b74c0cc11f44b23a285032f11d29ff86ec92a09b64507fb57aa02318fed4d38787e60e999238ad3a470ff348800db3a4ac2c08f4c8ff724926a0b231d9643ca2c9747e4a516f8b1ab118650e9029faa87756d3376780bc5dd86754ad9ea5b1beadc01f8bbd8c2987952ccd6e2023ea13dd6ecc54fb55ab664cf4962c5c051236ea0b51b3039ab6ac2bd492e69300335a75e8ee33eb956d7747fcbaf1294bcec73d030f6b850c534fe0f9f20aab171d12eea28faf31680a4fc401c29055f15100e7017bc77708fca666ab49eab31f8892bdcd6df41140fcb8184e29a6057f40a2c2d8ca8f7c546050127ec8f8bd2de639c08e9f9282bd861cfa5218dfeb9436e7fe2f9fb71b17549f14edd52fd90ddf14a35e30bae2278b57d4e50c3e8717902e3f79bd6bca4d09f7563fb31f0506ffc508f8eddf78c61e8853d2659dd2a7aba9695ea92b183020b9e95e692aab112baad89b9f4554c6157af96f732fe93a7199e308fd667afe40e5f928b880e0217c15247456dd5ff1c2f46773e0c0a3297b302166fdcb81d22a72e38fb89b1a16c4bf832010b670681d15808853dc3019069640c73b2ecdfb168aa61dd4a8901b33acd02e2b7e34ec4eafefe1ea90cb3ebaf1643156d25c426b00a7a34d89e112243d4bf336abc4661b4e0616330a0533ef5d9570762efa7ce8f54dbc959a9e201b85496fc456278fab5b430ab278975878fb7208f550f68f0ba458dd74f013016120d4a383aa7eb781ae372aafabe7a03cf22f8c3aede2e5ca156ebd2ecd8a181f8d0c29e3e5481ea8a576a23e3e8a1d5f56aeba8a3c3c8859503e71789a43250eb099144acd3ddef8e3eb64b8ebcfcc8ef33dbb995a7147bdb2c9fe779f452358a91ef986966a3659ba8ea4be10b569aeaa8294c7ef1adc10fa44a594ab211a6a6e3a3021d8d1e19ae3f588d8a4171ab1ab986da316ff8d05bb704faf1d9d03a1afa41ee6badd8359ac7acf87d7ea9f68233625386d09b10cdd8dd969f1722973469108d82aa69be5ff3285dc938777754774a98589f5d48e038364ef6860064387427cf1a84173249b9f1c92ac2f330dd568554af75737f1eeb246add72113f9502a7e643e99068dab1d8e6769a401d30310844a6213d5b7114642c500d00375bf081e4730e8c902ff71c67b66ff66ec423d2b707c6af173935203ed53e5176fcb9adfec3c860c6bfa9d12eb8c56d50f79fb390cd258af5fa03b1c38eb252ef4b26d38f29362d03aa28b81f140ce1ee6b5acf9c1f83dc3dedd2e55134e902ea1c55dbfe60b6c562498e62dc096ae97d43b4d867d5f1e732b8cbcbcc1b6ed13955f229ad214fcffbde31434e09a3ce600edf006efcbf57e66b8426a7ec78210e5173ff0761977db45b94daecb2302e4dba4663b8233cca802d6b8bf8d01f911e579f7edde9e0cc7a9d21884ed8415e51ec05e2faaa8afc9249ddf20cfca3c0264f22e627eac2e5dd8e23aebcae28cd5816df1b29336b1719998786cb20155045de2bf54f0770e06a0147e9d9e2baab4b902b697c6274ed6d825d3edf5fd590f1eb26853f204ca15bb558048a7de9800742ec8f7384632557b6c6c57720075109c6cb51748115ec1e59055fd7e194d9de4fdae12cf403d33a39885c04740e621de3f0bd9d9d58b4c791b3c4bc279f6a298d3cb6a2a442da86fce45968e75fb16d63b84937b9d1698e770c4b47dfe08f76cd46ac005dbf3bf19cc10a9ac28ae0bade1dcaaf631105cc7d9f11e52e633b21cf188a05a8699366dbee82809d4ba06339ef116ed692e7230ccab6ed054ccdb84b16dc22bebe45ad38516e6b2dc531124af3fab353c7223703c716cc24232968826f44c70fc721052c7aa2cadca222b38b3cab0a48d0e0f7ce1cb7cb3040f76f1eb02ff9414900ae36d572d23d4150c9a1dda3ed17465e5b610e6b0960156a1d399fd145a65d3f6e13595725c909204b355011c67b8de47f5e6335cca6b7cb70b236fea2b9093ab3f39b3edec4d530ff488400f6348f811520b007ddff53a64e2831ff160d0bca96f199a9d595d7e234e290eb70ecd3d9818ea30580abb8287597c1f850fa9409143cece9c2ef08c07415cb98cb896b326005e43aedb239dbfae33c51da39c31586df99967b20953111db86c2980e155d52f93d5cfa84861e8c1016e1834ceac390519baa83ed7042632bcea5e9e2f21bd0d7c4c3c381c78d9c69bc92f2fc697a9e61ed8214219790bc48054b084c72109058f68a588dfc34bbc20b50c31ab0d9a336bc74d726a8e06a3f0ba4893810d7072986629333a3dcd28abb3b457ba1a8be0fce3a98138e528beee1eacbc7244e7106238e6952abc1a447cbd6b393d82fcfce399855c4d6a17ea6d8a19cc0e6588d079c45ec88ebbefe782e38e59eb13ae2ad2d3acd4db952cb0881b77d2bf84fe4ceff7a11108af4c8fa4c4fbc49b816e6b2d5c8d643e6b01d05e5926403b8782b4b550178a814d8c90feb68d45510444912b9729de123727f5fe2118ba3422d3f4e3a6f89d550b76fb410c50bef381abaa803c6ee32b942d41de4ac001a6030f2cd64d753ea2a8cd8dc8181a05add888d425bc7667518b069ad5bda53b8ab8593022fc7505884eb24d094c1dcaa0ac84cbb0ac11ea735a2af080ffb5584ce6f06738427cf787501885869ddf563d318b9a1faf73bc3a1d0dc5cec42e2ccb9f1a9e4103fb5cf633fcbcd4202f4546a06aab706291e76b560513d4db8972a023cf51b75fe17c6fcf24f1e97b4985e392a6dd70d1fe5ac26512bffedadcefb2060ed10b9227a304def843aa47051d0f30ec1629c9d0d0d6372e84199db072c6ae1c23420765237b9ce8cb336443ca62f3491f64ff4f5bb125042375f84dca80642fd1846f6baafaaa1655aa30c0a87efa894280181b96291d22cabf8b9f8318e18590104dd18ecf06ac6538aff839288def463ea9626b85d8133f50a33afc8f4519e9dbcafa2ef285167656003aa7da90544c347f8dfb46d70c3875d9bc3b1859acfe8a9e647bffc07b9acafc5651c87eaa86a92b5e1a1dd711bedb64927a8f31210a79f78470b35abf2064694a7ac2290045c124ebe6e1e321134445ee6531ea195d8e1c3be695bddbe15e894c4bd2baf661efaba785c7c008cbd57c8166df29c7c9a2c4866f987cf7b5c913e0f9290eeebdbaecb0355e5d126b104fd28a3fa5810c72af06c4f2f9e19a07f5f8cc41e9546271c2d79583e81644d330353c6abcf46846d0225cbc00107ab9d936a7cd4ceca2e80b9479ed7b09e8ed2f8dda24b8768e7196a4417f73d738cfd5eeeb2dec0744e87959d812e826fba981c3c5e1014c330f1474ebf4e2be2d661fdb382fba02f8ef95e0b11ebf174a7d31e717906b6d22c687b0b4e7c52f7ce234101b95a687c703f5b69b3d543061790f847fdb3596c95a2a9ae193fa0b94c0701f710c743beab0fc0411a6cb2e08c31208413a1989a2e9535d102f7c58118c647883ceb08aa2c88642d6187c07afb3fa4795e7d97ee48b1b84034b97f4fbb55cebea2a2a2f99a4dfc622c53e2d38f6d2fb0170de44bfd052b2f1a37e916a17d3b42fb9f45f19d268b136c18d01b8f994cf37b1ff2f6bf7061c972d385d3a1f135bf98ff6199c2bb71a4fb585034b9094bec5c41c86f5271345208035bb15b9fb06a85801aa0ab17bccaf306f2bd28040e0172d4bb409f820f50e4689a333ab0cde3ccee444cd9b7b8fa205d02f497f0b3b1e0f7fd3775ac5f2b5c2bf91ed0da51065e57ccd09ef6d0c2df9372bd300e59de69f7a5c2394f076b95d6a04eb0e30a6456bc7cba311a2656c4b9f0be46e4939eac3a5cb8b65580c9aef90af75f7bbe9005dfe436b0337ea33b9eb0a14fae96523ac467d9fc1d38e9db6d69a8e8e9cd11dd62454d22ea2013795cd26661367a6a033905ef7684bcf36e0500f0dc135583a77b35e84d54007100455107a0785d043989c5711cc7eaf86957d0e313854c72b2dc77429561dc520b8e220754e1e1765a3f5983049aad80b5163ec2424fc39bd2719906cfd6ede5ef3bb1009954bf5e229bfc22c6d7e84bb3bd3bb124566d797ae3bf2170ab69f9899d40eda2b6dc5ae27224eca4ae0ad945231ad126f0a00874e1cef69ecb013c765870918581fc351e1835a424eb838cc6f8b9a882571df5d34778670ef19723669d60f60cf9057218937c8a463da154b08d2d31da75801c798f76d652ac5c97f1dde2f4e9975caa6c6d49f9b5f4a42947ddde4e811ff7513d7e6be2d622f584d5c161575fe1d532ac6620a37c424760ea18b6e71f3a84f2802f4cbe2e68d2d5b687705db9b8ec487f16eecacad7187a615bdc7c85e10ed6d1fb6be6dbddbaf8ad33d130d4babdd4acc093db7f8655141243ac37fe4bc9c8813956d85bcc8e0fdc6de0f6b075045f326bb6f72e7f6cf2b90827b243c239b5ec1437df0e974f810f0c901e9fa34564ecc90136239a387770f87310fdec149c58237dac5e3db329830342495d3f2bed8e7808fe2fdbc50390b5a11c2e9648c2d5d09d1311dfa2e27df13038ad13c78a42b935a5a324d07c6800f6b670ab554201e2283eff7ccc08c1e442c82f696b62fcac6d92b3b9d8826740a294339d3d77dad04408ff1c313dfd6af22ff10165bc2104d1a6dd751d69e3bed1925d428c0841d475899d367599e69f40726f5dc9b2e5ee2a18af0235c1c4b9f77609380a71c708b5d90d09c28b63db9084613ee0283f5723d1b6f425700fd94be603ee985264241f5232a4d982463031143ecf46c18abf3fc70d52252bad1c9ba85eb397b67d7a982d5f01d7397d3971c23190d52ee69612169246ca8b9461dbb9a161323ff6b0429e6ccb52711bd801f68cf7f13bb61e8d8b6355e837ff0edd144b27aaa086f41b5781b8f19bc1fc026d4b7c1440d9e284e45b601879a9b8e5e26c0884126aca0b54c588c8f1d180122279a7945d959eef03edba84077a379157637cf611e33b82b4b61b87029842805ac6b02a5058f3bd735e7dd929b446dc71b2c32fd25b3edc6bc12af61b000692d813f5213eeb4e7448f3001380c9da79bab77615f8bf63a4984bd69fd59889121af7714c461978cb37d2de166bc43f39f2da9ac3e5f3b80abe731ac1c44694f15aff73204dfd5abb5d08495ee4ba6bfe18c18076910657c48860a2f84be201215bb9c4ec518217e4d9cd374cb784b8effb84ca8d7e9d5da49ef3495f7560e14269ac9989cf874958fd84edc38ec4396fe4abd50e96afdce966ee0bd79575281284185bdd63cb4df28c1efc87b77c0137d3b362938a64de7f169bf2550f06da8025bbb144b7f673a3aa7b4e45f1c5c8365b48aedb924e08d08f71d7bff0575132f865d664d9725724c070d43f1124c11bd3dfdadf60d884a26d9ad44a1f154d52a905b7b805859cdc532f22a5ee7634c109af9fa857275dc912f1524fd442c9f1a37021a2bd327e153935cd760a0923da5c08ea2ed83e53dc354204843668282122d3ad437fe586ffad20885ac01ba797777c7610ba49824eef3b351c08d66d50542fc3689937917a70065b96605e711cba074d38e02e5b0889046182d9e17a90ea6b50cc241a1215c16119f79f2f74cd304fa7ba55d05c2e801b7304eca31de0b4db386d77b727c0d7400ab24b91d16c38840d04eccaaa50a594ff60493294b2cf7e2dcf4471f999cb249db8a3d6a32140884b9858290d13dd4116e6164349a05a6506b775ca5adc7aab5f649c6da0e6016f5deccb6abbebf11c5c56f2c0a5710210bb92e49ef09c63cc0bcea73389d840fea1186205d5d6c04e04aeab38ca32d70230062384620262648c85e10bf1b580234fd2e71172d81f74cfab24a9eaa1803efa03973a6f143d9f0c683e58aea1b54993bbd32837408255142b878a7df239a2ad00d0df0cfcbf5f2090239c06cd10a3ae35b76881d0307ee8a31211ab81fe65d21d77a8d0f64e7eda3d5578da28af5b127ddc218e75004250fbc567d6b106caff0faf230e4cbf6d7e89f3599a228b3742cd7792b82e6d5ddb7e1842bee0a88024284dc72cf35dc07615ba4c7015bccbe1e909591d74a5aa5344468b2302e5d42a3d0d18860d1a19ce2b57d21f731eeedeb46aa2ecafdcac5e98f09ba871ecd8e74d1552af9e28554ad9433ff9fd8aa12f7ccf800cd7406db81ebc7d18d174a8a736c6e25647d8b0b868e78fba83fcc966950a83a5ccacc65c4418c262613f5f250f6ad28a012b64a9222af4f8e5c9625a32908bb892d8a19ac05cea97d29739793932e1d03b4ed84ca9bc17cdd3546d9c8cff0cf3519e7cab8c40483e41ea6ea52dbe37e17cc698b4bd5aef5e68b31fec7dfec7540848c3c8f9d57efac0f391501e51750b2b1cb08c335045a7320df5ef496e1ba423794692b530595ea1dccbcba7286d01fbdd2d65b297c3adfceb738b89bc18635623d8ea7428cd399181a3d82b605a5f5e500e55366f975bfcf3d2bb41c5abdf846b71615534b5b17019fbbda742b1377fca9842c82ca2a85800abcf8c82f6a2c7fa1834ad3e893482013036baa1c6529ddbf32e00ae1fc039ffe9f090cf5ec199639134542dda465131f1828d46209ba3b1fecba321ac9c06c5914feb6a7edc56995679a13512718023ebb016d876b2bde6ddb9d59918c8b07ea342c029533309f5fdf62bedc7dc601cc432c57c5d5d2c04ef5b447fb1be1901bde544922a1d9dd0ac7b42e287b33153f259f417f49131ef5512b6dca89f1088558cf205379920e3208a77657819a0767435808c4d439ceeff96041923789494c9e42342e0835acbd0c125cc9ab6f0746140a5630c1ee396d67d14e64219d5315948075bba2d7192058562edcfd4c2af0bed1ce8257e0afc6f1354391d508e8a6a155f25cda3ffd02eb2be4378c411d497eb60b14b0bea1dbbbd6fe358f5ae7cf443d7d46028915a99c9f0a90769e15af3c6592cff803801b671ed7467cbc05bb8688b95133d4e35e30ca0c70c1192ab252bc0c78d1b7edc0e94529260a241f95c9911f6ef89e2e5fe85ffa3801be1d811a4ce747a200389d0eede6cef387b8124af0be49b6a47b29dbb3fe528c140871a616c1c525531b208b0aa521841b24741b2ef9d3c74c217409912e4f2b2e03cc8de28c8e72a37076f80743999a99c889a4a0e2299a343f72d54db1ff2e272ad3a714d4988fc5860132cb3c372ad65a1983d82bb7d73d50447bf1067b81d8170e8e4267de90b78fb714f6120659a546ef36fef3b249f1ca1589c97d0bf1222915f45ea2a843219c0ebc8773e7b7b4eeaf85eca92550e06e44163c5f5294d2022fcc5e0d27e5ec84520a894beba059ccfde877087c6fcc5146b56c4fb50bc91afc972fdc7971285f99d5537bebe75349b39f6f74423f4deb93118091ef9743263db5cd48a39998f6add66834ad36aaefae73ee730082b716616fc3b4aec88b148924fe72230b63c197c8f5ccf1bae71c444248a3ccf2f46bfcd69c37975088004be49b6ee94a594395f53f30beb6133ae47530e51cf6d3fe890d82fcf4c8b905b62325ca1ab97a6e860bca044ca0f2df97e2ea1f28cf742097fc4426b11bd4194c4d5dafa6c92b4bb8b614dac9374681dc91dc2267b7eb4f17f8cf1df9f98729c1b2cb4be6d6efd9ec888545443355a616b801f17f581291c0fb754b3df8aa03238b1128a04f548f2a297c96b7636f623632bf0b465747565f4cac1ac3590329fd038ff8c591417603b39cff897f6b053f67ec0f281a508c6f56408ff7376c1353f38dd161fc896e89cef0de2a17931e32f68a5231c7a536c800baf7b18bc01940b5028a309416026681577b70e8af6165b0b727f8c1d1149010b38075d97c1de37d48875e0c6fa4934fea676cc611408f996440fce34a4cc5aa8020a579dd1a7d7719c46a1aa6296da5ba7444bf3790e90ca6460d6f7873b562dcdd97ae190d80d0bda6d28873e503304f888ca7d66ce04638329cfd74a93537d45ea04057103b816ecbb17e2dc6acf5cd36526a079c12fdb79ac0eb6214785032599575262cb16de31eaae955b68cb9fa731d29c4e2fa0a1a45963a15d3fdd56e678670ac212d448bf50546b2be925ee7ad1b933addee08bcede48e60642413b76e40485422fc85f7f63a7c418f342b81dc5617e0ece5a15d58d5ca5758b13847bd77ccd10f786f2d1be54ce250e13c76d88a6cf14c9b3500b70719da21de5f63aa093f610a697a63d0754db2cbb251da3ede670018d29e8d8def40a35cad2ede557c603a278059dcea833b648f68cf8912c47859eee6641b8aee1fefef3657a5f3332b5124ec5ff63d6a5010dcc9f30087cabe6880954780e13bc8765ef13020254c4ac91fcf653d50d898af714cb6954b735bcf0dfd923dd21931e4bbe0770e2a4abb7c10cc9ad9f2f6064ae0a53fc69e133cbfd3e7dcc48941614ce39e7822ba5a22450fb3ab48db2639414dc890a4d9aa0e6a046ef54695f80bf6118844f52844dd7207f41e5c17d02e866aba56fbd7471c9ea4d2e00a9615a1601aa75397fd61f5b6011d529cbbe899146bbd25a5c1e2dad48708804fe8059a99105a71a4b39b5e2c091b7c25922cd62835c4b15d612425bb0f58ba9f1026c5fd49052c01ad6511bc2a5a663d65b85ab4cbcbd0d7611eb2fb41453f53be989aa8a90bc8bd5be907c720747a409121126f00b4dfc55a7aa76b92f6a7c95140b65d11311e2761a658be16bd7940b0cea4e582090447a71bb30e0d44c73c81768312b8bbb8ad9661103524fa5ffdd04f67bde75da8a355ccc066c0dd8a47407885c1fb31e6a3c55986e3044d6119c4c1853f7534e6af0009ba2ab1e82532229aba64a5ae374c3e23c0211cd60ed4670f056dae5c6f45025bb0b22620e9745cbbf7a60a7d0310788efe1c1ad4ecf0bd606215896d6e8d3c04b15d34567283aaf27835cbf1bb3618ebd2402fe5100fa29812728225409dda960f83d992dc87a20efa1a97406de39ae4d1d40daad4dd0fd4976fbea69a26ccc562a5d8ac29d093adb2bea19196b1e6bd718a252aa0313317d0351bd30a09c46944e3dee85700456519e6fe96324f530892b4256ea58d0caa8dbdc295773d3286980aec8e2984723fee85e49e9361d8a42c560ebf9bce27ee06a600103ca7ba4611e74740b9fcd03a95e98516abc5de60aea313864b47bfad7fb3841183ae0d62c0d1fbf056081fa5698e10e21ab0c9afed7e204f082181798b89a1cdf2f987fc4b6d7ea60589fb570002f6184ab99f36699e0e49e2f0a00972289e379a7c9809f98b61b90f463eb9b9e6a8abd144343f5d0b27f1f53b1a65a2bf8646d3962db32ed7c7e3b6c93d86b5e8abb2e01c677b1d7710e2284717a21cc3b65d2ce1944c897ede1d3d4c8afae391725fe9b5ac49e35c0f2c4acce0422669528898bcbca77fb54db2ca93cb6d09577e90a08e9aa0274b03f8583f47ac80eee88fff2119fca2f40f2e8e36e9a773b1dc2744ac9ead7bc2093b680e502b6ed34e3b96b50de8156ef0fa938ad938e912cd4c368757b3d3ae02c31b4ea4b3d83f1778cdada3dd90d1de153db9c6a52a8e31fcb748cb6587f813fa40c5a7243190a5283a40084649d7b1e51d7354b3c01696db8146939cacc429e0929e7af4ac47949f7e0da1d3c53fa87572ba10554e2a8f760957cbd088281a2dd093efcf1e745fb9b5c3e45098bd51cd006d12def3ea11643f5159910a9c1c5ed8ddecd962ddb625df63e75d5e1eed7372c3c2c46368b8ddcc56b3525bc823d821057b7a0c1e77d0b01200b0d659098f53d59b8e04f86fcd0daf6252a00e193c80b4376c1c3de475c8770501946950ce43b7f622fa7f04f00beace327f5d0a81ec2cfb028f0ebd34e6ced073890e82dea69257c3cc3cf6ac4d049080f6d40f14fbff452716192146b12a9638270376eb38ee015544323a4239218554e09f042a35e2fb0162b6d3a939f053be778ba69d1a16784468011454116b3901578f2d91f704ad26de37d0859e19714838c9b26c1fb5a3d281869c8dd1c0e384f9bd2d0c0e952d3272ca7efd6af583ada84f3017d9d32275db27f1f59405e480dd2b03340f34fade503c3999fda11a6bcba020a9507349d46065541c48b0347ff460020923eb72607a77c295ca4cfafc09203ffde8e3de9c999a0fec4e174708d83b229aa1a03ad917d7036220f71dd42cf660b4b7b6c31544489a988f37bd7cb09e075520227bd24afb512f4ccfb1cdd1371cc7a9ff37bc28a9febc0c64b2ff147004c09799d1f6078e4e00b8bc7e9d7997793aafd683f9e1b4347aebee095eb5ba008d6b6bb7aedf338867d595c1da66b7196017a8b7207a04882b6ef317652fd3040beda0a7333aa3538c8bae89c53eb1a0adca04ceab3ef7dc7b41043e27c37f1fa0acd9b1625f45d08ee613c4169683bdcfd0019a1f434506a59209e92383701a2a8ed552b150831c784de2272cfbd401995831829c546ce324fd5110d7207b250a6e6726de35068ba310e4ae7abee25d2bb3899bd53d0ef0cbab0cbbaf407621973797530f9756aa175da3620ecd9302a47c1446f84c2de6e81f02ee8a2bb3041761fc6efc9a8ab2e83ec6ddfb1eb887620078094e4118c421fee868b7644f108116cb8cf01d10b10a24eafcc8daa39cbefa8a3d8ce2c42c0062bca500cb5d12771a30f45468c3ba9ebf9d1bcfd5cc8fb2f86d4e30ae8ad0a82224e7a459be2b4274d5b36bb4d65c78f348e14acdc2f27a6508f5a01369ba6b9e1ac8991ea82816959c3f1135dc0bdb0555ea5f9bbd46ec32ae63c1ebeb0b8445a89ffca8f12dc3d2bb6808efc16674cd5501c2b61b28e74797ec8fa065a7fc6f777822d6082785fb2d9ec4b608914fe56dce66cfdd030a8aca7c8b1f95e48cd1b156fbc8c5183244a1fa0ba80ec47520fb36a2c55fe9f19a0a87817e21e21536f6c3bfb9b928c6d9ea335cac04d89d9e2ed78bc32f4eff5c60f9073d0cf18434ae0563cba629291a1acfbf20645660737bfd8a3549c04c37b2d465303807b9592528a8d2902a9cbb83dccc8719db6849fe74445ece728edefbc8fa70133ae6c4d504f5461528a1840cfcfc48e79fcf05168cb5dd2ed0b8e3a47f8e7f65c457358fdfc92f0e2ee85dfcde7274901a5f3c25a7c3d2c9da2d4b552f8cca544acb71b1f0209bd0060e2cbae0141f264b6ad254f4c9290a6f95fb795f27cfd5321e998c7c370604305a3a7f1b5bb475221472685ace3a94a383a04c7965ad88bd9d6cbb805c9f590faf80c7638b4110e13a93b92a339a3825d0d446c437f923fb9b290348752f681e3ef41e1b44ee1a795a7bae6a4aa25768e3fffd28ea305c78d30e82fee9f12409c5aa298ab16e9338f997681481bda32aa7f91c00b49aa851425cab75e85309140d4be2e2dab82e771c0e474ea7b99e8117e3d2ac6dac35835020179466a9c41a582f20413f1eaee315ad89fcbf6b987bedab744701ce7db7c166ce3c57530115b6d9ee347197a54b23e5a172469d94b2f22eaac9c2ef40ededc3086ccfeb430f9928a3544e3d3a6e348d1adf742f8b9e5a3a61fd434ca4e78bf407109912c128e23c1f1210ac3308f18306599481175b90c603d8a92f396249b59b1b42440e2a060625da43666e56aac85565cd6566557af6d014b9d52fac41bf759dead70107632ee3b319f56bd2a75e7d281923446aeb747111c70b8d53393ce6706af2bc2a654b9f910ccc362a72ecbcd2ab649935560c087a666cf6155161f81d3e0e402349f6faa56b41983a31aba6638eb72ca8b76de129083d3990d0c318324ef0dc22eee40097c340ad809ed43830fa09cc25103f623a535c9604ac820e698dc4c71aeccfa7402b4ab63db9d937ebe087aa6af6b4f33d4bf20e8b33085294ded0a0116d2318ebdb46d79576579e3f74d8447725a5800dbf4dad1b51632d5a66bc370c886b53537da1d636075580feba76493bbfa10936d45c2d89248e6a0e5edb2102346514fd57e190d8b88a97d2709c38f2d5cedf4a47f76a6d11cb30145ac6662cc1621b5a2ad53a4af9deec9810b59ece11a83efdf86e7a0dd0cc3c1db8bfd6122e356507a685258fb53017332c2b981357d230039e6ff3870836cdc6c4a52d259c6c0bcd5ce5b722595627e0d19bbba528953e03c4588eec63cd880a6d9ffb2b126919b46e7370419692b13e4958e37a3b2974b2f3c85eaf6ec0df64a42ccc0994a98bd2ec68f0f123e1e7d5de4a4d7bc85e61777c41c52f316abca8f436ad15c0a506b0f82a7aae17948f07c0a673122573ca1463c3f744590d5eb52818cb195c75930e234aa2c2bb6550b6c6e93c1c14b8df220a529e664f45192763eff915f7154c3e238cf6baca975050dec578c01023efc4a5c49a0ca89d44c6a2d2440d6ad4908bc60a0f02746f589cec8f7e929394a7564e407f418bf5d9e0b023581a21a6451b8d0583e4c967da78090cea0819ae3d4125484d7bfb9ac5982f139b21e37369b6fe20994debd770d6acea189cf12f57db3e2105acc5d4c49dc5e5512e73e63ee9b39373854b38070725f473f0aa5a63b6818a5cb3f916bc5932f9c12d8e281a18bd4f42eb63017dea5e06dc3bfd4c5b59e55532812406338c7c0baa19ca25628ca06111f3fc19277f01d6744fb3a449a0c04a5dfa7419ae461494551c1101e299c8ab43c9ca12ff73e96772cc447267438b13dc16fa2940323df74f1dfe2f75fc65825cb6e8f25771078e5b7347794e7278e4c6a62ab37c7b3a70d00bbec6bf9a236b9d321d370883816bbccf940b4c89228b414baecd81dc624583276385a5a9caf2b9f3828301c7aa5ca736bd29d675e4c851e2adf593d421837b2e3787e7953984dfbc83c3a773767c08093a4de6f11c762e8fff2a6835eaf4551850ee4b0e1cf6f3320e2c5eb4a5730d1cf16ac1e464c1a739d9258b5349e8ec11434ee10a8edea323422d0d1b3dbeef2a7e075aafabbc30ab92c7d5794605b91f23070fe69323e75729a6cdba80b08ca6df0a382e18046560e6f8babd67c2c307080ae8244ab2feab1271755905cb8b8af080caa56d68d78ce6f157de46f0362db4b86ee0ab24bdfc220e00af1db7889ec29d84f7dcb636075bbc4d90e14fbe011710a7711eaed584a49e1d89b4e75756d83c2734051212f55fa5f585d073c31948b2cf56194c98fe48a4eaa876d3bf0b379cd93e568d585cb3c6cba334b8cd10eb9c2d4472449e00886027bdd1028f7c006e6e53282c48f6922215a57ef5532188a1db1ec5a6486eb4b047c128f64c463886a7f1cec3f93901f51dfe6a0f442201888642a20dda073ad06aa391500920c4eb770ef5490fb8159df91c45b3ab2dcea31b715c3bc447e1050a987e01e49dfad2bfcaf0c9d4e4fa9eca4ca347432751306415944061f895ca1390ca0aeb3f6285c71f071587920af58d09fb383826ff228830c7079fe089f9ffee4ea0986d9c79f9d917871ee67736f458096e5b2c109103be6ad5d54cf1d6614e690871135bba2e0ebff805a5137518f448503323673fe9715476d38058263ae813fad3707449d4074b38db5dc84ffe31bde0d304bac9b825da5cd4fd846c2e30bf51e41378174caf903d7b728c44d57cb14d1414b437f7542df7615608897446c972bf67d9d306d70eb5a1c31c0d9cbd7aab2d16ee8d0d995ffa49b4714aafdc353d1fd6e354a13b9c2a13ee335a48c5369543251bcd274da21cdbfc6f22d8d6d257aa31ef871073b630fd293a1a90bdd67fe42e71c68056bcc16cb00571a9db31998d126249afa1a628444d03c59566a3349f1ebd7fcaa7f160fc59fe0340953abd9c0baddead969e32a4d83a3fcbefea674b2fdef48e6e455219289ac5282810adce89e7e6cd13baccbd165593615b68b26f2c2d245a56f5e9aac8bd7275f239a43445ab834c804c1de2642cd588dd2cd8342714f82289d78e1f597c143589f1c54baf247d08826c14695f431b0d2164467401ef616f4cc846df2f3c6baf084f687b190a45daedebafb510ca3dba136e1ece1bc79b3de41144d9240dfb73f64a748c4ee3ae75aed3861a4efb6ba688710a552a47df788b589d2bb5b874c15b67005506e3aef1cd01f4ef1fe2c22d5c4dfddc0ff93e2a086d9fea3198be4d2ad52f37311e288e5e54d3cc182b4331b0df0f1e04809ac190c4f6df467f15426736d98d4bcf7285c1170681bebd2888f3b75a83194476871e2b4c7fd98d0f865d7b02665fce414e0b2ee2058bee65a2f09a5e2510b0ee53e9b83ca30b9842d1ca75184d98ad3b25e652a8c264fe29235f740e1d026e03731e72698981b6373222326cf18a111b94860eddc722f85292bd01269f2747493d7fc756c5c73d7d5f516544ba5dcef040c7c07b5c69a5f3cfc82f144e1db15b2aa873cd952a1ec57d975bcf97f0a299d4b7c729b88666f4f2f23fd76702234cc914b6c413d4d75772b3b45b652c1bedd52003ba500b6a46b2a5bec4432275c000cd0bf35a3105d3f830c63f6491210c5bb251206de1a34a082044fd512faac3a8c9316d5db662e9a36f240a92a5a29b1ab24da5d22c290460fa5a93651819a1d87aec8d46782971a6ef6952908b4549d4ea11b332b2e777b817d6d802282a54618d4efa8500a4771071175deb4acf5b8af7a0c864bf57a5970f52dfc02da5aaf0cc95bc20887277603dae86a7c2c65aa8de5e4aeeaaf53f5c69b2ab13271124dc41717e6a7b2a69f63ef4a44204c4d2b59254cd97ffa5cb05bea90933133dd4082c4a69b83b79cbea7f067cdf2b380ca7babe2a4981ef6b0e7bef646510ad2f4526e8f015b646d3a513982fe0d07f85fd9b0e9f623821a2fcf793c7e7044502f35546240a07cf82932023b80e1ad4edec0c2b6b6891f160391932992f09b5494a483a6bca8c1ec05b85cf37448fccfd468fea3b22167f9019b20386d6284d689f1aef60b959bdebfc84eb8c6a9f146c1573873cec3efe7106aeb007eb2c3e0b6114389d625f5cad5348a1a4acc64db3c38bf2ad4704c797d2b52d3c451d3c1879b2bfc0b2276489a4fceb29428566a1d13d32b9444de8160aae9716601a3caf3f603f6dfcc603076e3910e69c3db35fd748c9a36eeb879b27dd41d47814719faf20cd18c6c7679fbff74da2ae51d140416c043aacf100b874c462b20907a059fc605f632bf413978034604f1b3db350795962b8df76b428b6ddb32f4b1cf97152725fcbf25e7e79f5f2e84f8e34824ef5ab82195c9a0adf4985080c2a0ab28b843326d8aca533bec679d02db901c5a48df4f33ea445524898d7fca84d260440dc9fe36494a36f3da2a628b7f9c72117d5828af70bf4063fd535fedb670d6dbcb599ebb005f62c03fff5359ce9fe99c1d2bbf923b3d027f5737dd17b6f2566ce681b997ef313e8fd8cf941016ed698b3e4ef4ab36798940212591f61f21f83c09279fc3d94783073c4cb76c96d6bdc9ca4da88240e80aca026fba0a631218a3b9c58d63ce864c99c1f83cd574e07d6cab2a395cfe9236dc6e95e49faee2950f2e582b1b93866d7ffc13219395fafa999d66f6594184df28be84c327b3509bc57906f7d4009e2d9ac86d514247234c1ef4c612a40b3c22602dc8fd524251ad4c526fc1a5df3e7b467f7f1a2084965f6d07e81b00dc599a80e55f3a021581cbf1adda505e519e200ca315102bc34e9369fa330ab078db01d7a183f23d41a2020b48d71e051978eddcecd970e246ebbe05987ed5c06fb944c7ccf2302654e0bafda20e59597dceacc3289bbe975b260c446d3e017a7d5feeb42323f2559b21d1f00370359648e1c3ef0d3fa66da557b0f48c0f98b05fda588984b9a4aa45711a37c8b7e16376f8e7f9e81c08a1d323c1cfd507493657a711deaabc74f39391a25e968b838c565ee0c684349f325b11904c28b414953e0652127a4c6175d9f170f998c09e0e092259b0c1daea856f220355322b754a2d61d07fb302f9b7f3d18b499cb94761924a30a3d387e38f24e2b93e7e1d16a0015053c67ce217de7cf2a4b13139163da0e56c4456cef23b6686d1c47127080d73ccb011aa070f8eb932fbb3c09840aa47177dc37af99ae2c61d95fa23dfe4ef5b40600cbd53dce410a20367e1323b2f8b67b3c249acc5fa51e4c72fde5e4d7b2efd02d4c9f34f298fb225e93aaf510507b802d1bfbe93272770f5dba50ed35dbe4bac493b53b264e8d2508167bf173f47432ace21897973ede4fcc81277f24feefe53737d4ea69659702b4b2c3b2148825afeb560aaa254e02ae9e94e417f2bbe8b091b515cd801e06230e4079bda905324741548b494cfd7f9b334ed3b47e90ee7d553d50279dfaf6299601afdf3384aa3ca219c87a8196c9aabaca53abc93a70ff57e92bb2eb4dcc242dc60dc581f2b1dee47102fe61c9e93952da3ad907d4061d68bda5602c19f903d4f74b3b04c596454378bf6f955d3621bf5b8c93bba185429650b7a92bcb971101c6107a2abd225401a7ff14496496adc0d34a3cc03f37f8425767fa1b506a0eac4061adbbfd9424151d635e2f991fe6f62f3d2a619acea41ab2a0474b21d40dbee42f0faa83bfbab6ebb5956cd8f386874002220a1e1236294181e58b872f0454462fd1b7446f295506ff945be25f5983f8ff074371954ebb59f699c45d773019d099f445ccd7c2eb357c5c9b3408f9e3f769f018f4e579e67161419c7c1e0f7bfbbd024784304a5b39720996e5e5b7e0f96f102fc51fbc7e6b19fe0c2abd1ecb3d0efcffca9fef30bfa16deae94e769e47a9760a84be295bf1d8372b60b12075d57863d6cec051a8e0acb7ee6fb4c854c8c73d7d6a0822484fc518815735063fe7f371fdd786bd09da8936bfd8540ace06d05e44f7317cfe5d4bc40096231f8d629889322c94523d1d29c824c410d15ddb6ec55773ac4d67a9b799af78e201051ed0f122ff678925035673265be25cf34a2cc7592a5a37fc1b90be49a6a828a3fc92b986e971ebc63c76bfda503a2bab90c834a150f130dd202c62aacb2b2b47bfc0040ef509d83e1d35f47a80b1aa9429b2852c8f0c235e43bb2efc2ffd28ae81b7e4176db5e71aa049ae11f214ec4cccc9f998b5c77a7553cddecc8db902feef68452f59e4457add3952d34f7872f9e090b43791e2368607490c8f79e12e59247407c966e1e219c6530e20fab8c4b9ea5a0c5dcfbaa454fc8318f5f2182f3ef9b1ef8006511bc17a93fdd703bf0a92d962f414de09a26dae1490377c571f21c67933fcf7ec9be73b5f4fdb5cd006153ead62077d77825d5f2549e2be192872ae08e7ce2026f19a2f3f83282fa8da960796be8821823236073fc68b98fa25d2fa5ec5c4c8bf370f0a3ef615ce1bff2addc337f0b3869022292f0794b0100df956263082b0efde0488de84710062a07a3a1ffd727931a6217893cfeaff7e21c8ba96dff6427fb31891cfc148638f1cbabad63e757e27a5bc9a4515c7482718b9d01fd2dff0a703a723f2733bdef928a96f8dc50012b66742e86323a96ff500e3a93fc586e03f460d803d715696c20af0576d6df360ce01406290b6579dbf2e02b2cba5b8c8fe441a1e4d6965364f1562330ab75a40e5d4e483bad5caad31281723632b003efec1207e1d525bcef669b2057a55e79776d64f2167236d137d254e3bb3ada52895de4bcc3f9163a1eda5a84a4902ab50ec74a7f2400a34be0b1981c7540dbfc9905bd5ee986d4781bbcc07de142074fdaf69b978cb5141658f0b27e36a0b72852c19b32d3481877e0bbe78711284122eed0cf5b15c3a9230b30b5b01a6d61b3a385ee6f71704051686c255a9271fd2eb7a25e5c53a16eff6131a4fb765dd76d6d4db7cabb6b9bc315c1cefcdf012fbb90b9d36d148b9305e7406f699c70d583af73686dc5cc49bf537b99924f61b0b1f9429af78af4b2ce7142bb7d224e5bed7334b26746a69f224f77c28623a6bc4c0f8a08b1f5605a73f0e17d83a2f650a630c652756f444eedf042ffbeff50ad1aace01a212828def2f101512cdce8d31d761f375427a475169408ee283ad469f8563b1ed49752992416529d0a9c404ecc30d4fa12ecc9bf4e8a56a17ed58630ffdf0cb32936e1b79b33b07f499d264d999d1ad20d1acfb7eec1b453e57db971d132acfea2ba91d5b51a70545ea5fc5cfe53f28c5ee6a2071e22b32f013d7341a13adaeaadb10e9fbb2ec12f22e82151d2f99c1187e5d5aa5711df3435e7ed6d1ff99a55b573724852b412f8c55932062b2f5bc06e586227e72b5003126c625c7fd978e5df83789286a090aad19e523321e14b9034f2bea4b4d0bc37d6f0a3ffecdb9b13936f63c4f3cd80690c8c7e5b896f28c1ac2a97c8807f2e7ee7cd68ea1d024dade17b03cbd2d692240295a5f1d288392cb8f7aff779d8427a822d22e6933b226f9f51f076d305b0a383210271264f6c28fd11dfe260911ae147025a52e6539ebb2cf9af36b6fc41aaea44b52330e2280eeee0c42e237d692f73fc1b18e77466ccf40000a6b12f31d0bac68b37b6b89e91b820abf497a827988dd2ff2924859810bd80af6ce5d04105c5685e008e279b37bb129556d06c2780439c2a69deeb9e721a5eec2bc36de21fb3560f7ee62477d845a4a685ea8f6e37984ae69afb248c446794d90c9da581ed9f961b8c0cc8dc59f77daf4ed9a658bd864328e4210dd0aa138524d5cd8ee0a262452403821710498761b1ba432c4dccd6b636a6aa18e734c003e457066780d911fb93836a4a52151c3e94b98e3afda34029c596c04695f98ae0f5ae51ac530346d5924b13b548c63863fff6f797e4745e1bc06751e000cc4b88023b8bbeb1205b6c460c194cb912331c221f17d3d21224a536418df4fe57b9b5376479b2a0c11d8c1e685002cfe3634f983100dd9816a65a998063038fea359a67118a75422692dfa1d8c60b8d75f39e714e7a4d14971c64be9de461b7e346e5f87e23cd4125fb51459e26d2e2c644ae08cbff526c2fe3a591f1d22e79db8adf4014ae63d16b17eb679eb7038c660968ee2585afb56e8c5584d92037c82b317e861734d4a172ce14b5c3ac91ea8c643c63861b8b06398e408cf2a8c3ec57dd96a46790d5b2a08ef80bed93b9133f02a50dd25913e0bf7304f9cabe413ec678ac6ed5fc37825e5e50a252109a39375766bab7c7319bb950e96c8ff77a4e07632c8d3a5c64d01a48bcd9ac85d66db479d3b1d6ec20885d50af2a878b31a8b58660381b1ea981130e188957aa1f894f34e79634dd333773bbc644bfb62607b8bbfd53413a9da07a45aec073537e75d5e6ab057d18f1bd8dd1007e09b2a6d9e99d0d37c4d62191ad943e569b0099e3ac4601bdc05dc546006597049b5b3f18d5cf7a0bd648e1027cd1490c3faf6b48d03b97d5f5e27f5b05080c25f2488666a1b8c63a4c760080a4dc1265abddfcabb1037fc2a99382954b682828651fbefaaf7fc84646477e40b8cf94b4b18345ecfdf98f00cee9226c93d986c7abf465a0dc37a3be8a182ce0643a92a097bfbb37174b177ab481a4bff1b6446307eb9227ff67f0cb32e84fb05557d3236df2a205fa834526c3cfe54c8f723b9dd8d64fd1a53b68d2fe251b71df5c0d00ebf7d5cfb0b283df40c85bc3131fa4b07bccff6aaf61e6c98a893c813e027e3d57ade61d82afc85ea778f9763eeac79532478fcee10bb31d7655ce10f3fb4e0f7e22025792e17cd21ceaf59ea4215b1b1a7959d59d894a82546deae2f5f3ab51c1a645b1be9fabbf478253e7ba845aa4ba1a884fd891025a3e133e6032f12413567f58d2f8a9a9719ff85daa4e7f72b815f3dee53a5e2aa82f380c8063f1d264f740add550f5585dd154443e417a539a75df863ef9f9b353994cb3c248e5400a57de4a24a69ff2271b0758f224eedf4c2f8336402373a7231a9f4d1246ce2f473ce5a27f6245e998f60cd922ac58ef55c103fdb45eebc471afa94c62b70d09175972019c0c2ffa7240cd316adcd852d26d03855288d8db1a7ffb6491ddf5a0cc3315f2e3256bb20745f1b788decf03b27e0ede4c5c98b1ddd055eb10b2cbf7fe5914f63b42b0831a2125440f46c58420f00b4d146814e9d88ac991809874b332e9da77133138adcb03656992c10af8666b629a1d82f19a15bbacad3112eeeb120fc0520235cd26787a28d9be1199d8c2e120684fc0df1e869957f0c1f9e92748897e67899ad798fa93a79dd3edb3992b62b55fdf78ee7ab3d7438e8060fba6131f7b90c51cfe812e47c0ccd85c499986b0f2197466f412c268495891d913166a35e769ea2486cc2affeded0ec45d6dae9eebc5f86cd047e4ac9931d1df4bf43f7d7ce6e724cec69436e6116e544419800f5f5059d630db16507b7ba0347067c03afb5d390f23bf859168950405e79835b6aa85861c0d2e8e16a24d4013c9b0c99dc5273ab554889dc2acc3e28656562cd4ccdda0179744752562571167d65e66581734c9100b4f763edaa6a5fd3d3f1cabe24ec1f6dedd7dab8a7202007f4fa94001a15cd3eb55aef4001b63aa04736f403a7f1fb9f0ead290956cd08a491d301d22b9a5489dfbfd54c5e586a418a15822c05959705c26f6612263c1825cd00027a768ca7727fcfe3b2cf2fbd323035ea8d55a911fbb7e87bf81dad254cdf953b3b88276932a971796ea8051a7e79581b05206d465939e5c47306090addf3ffbb0b807cb1e75269661dc385e274b3b5cfa44ee216dfb71e155d339b28116aebded49f5916ff493f8389c9e396f1990b9ebc9c446998dc53c808a0112f3883d216f80a20e7f24da97862e232acb7e0515aed109894276988c96f971f0bee011c98af250407ac33a8a3f3835b9b31e40e12ab00d31f53542dbedaa69309136bf5d582d829501856e01084b2cb3c8ac5de611822a806c878ed296c1c720d0c9cd42c4f3faf704a94e2830bca82d1f744871b7fdc7667e682eb914a002813bff2bf9fa85b8658c2f5f6d32549f2f053e29c54c4e0ef997fd4a8df63b13814b0862c080df0636508061103fa2268a5dcb5bb69a5a2bdfe5b36203398d2401e5d09be629560ab69f4a41a7e6db5e246e32bdf5a000e2acbc6c74578a63b941cc356068309acbaa372f4bca5e66b7d8f60e4c799492cc2adb3434c483e0a160be511c5266894a6a5995f8037ce7e15dc677099a07f83393340385dccaf582a1fa0d6ec054a397e2f2b9b73e4702c9324e2096fbceff96b38483dd493bd29d512fe76054aa8321d9119b39e025638a2738e8a4f4308bbcda377fac5142bc22816315ebcff3ea53ce746ec5b602dc8c2f60c0d0aba71ff99a9bdd87926dafa1a10a846d5b00cf5c9a470adfa1d69d9a494448fbda499c0efd03f49d855ff862312d3d80d9d13f1688e4a1f6829554d6d5decab6cc423a4fc173ca4cd76a802242d408afbe7b11be6ea95c4ae6870b6dbdb5eaddec04e8479eeeb34f642898fa90427d6c9ee9ffd86a8b9577968643334e3f6b84f9903c56030e38c97e44c70350b293e100d870743601c1dd5ecd4f0821dfedbc2d007d94b2d4e5bd68b962e9c1d849b4eea950899ad79729341993b372ebc657fbbfd40c70098e17e1560c5860d2669001f2493eb2befac2c7410a96b935b91518d9bcaf9832ad50ea917b1ac0b7877bdaec0182e3b8d136d9d34594d5b09e7f58a01d82fdba494850ff9cfcc03b73f9c3dda9d03c5de19f373fc686d3e4b83c3a6d5d5cb79a5a7c3dee0408d182274a8723c67b2cf4e8e91475acae9c700c5786082aa38c28fbb6aca94c0aa2c9a270502e5be7b152f606d6d23a010d0f296764c365ef8e6c82eeacfbef322265c06229764c32c9a5d63b1d49b4775659da6b26bf857a7ab890ed06d86bf671aa04c830e53c868b065001045774e6d42cab849154a2d5c4cfaf167225883ce29da458943a38aa006bc907e5dcbe93d842d392f028d3dc4fe8adf12f36d61fb2ac62f031309f7d45bcf5a6b4c5ec27938508e7f43d1737c1990a702aa5713df1f385fe8433b7cfa5092cad87cffece1988497977cf18c78bc22ab5293fa427b2f92f6497dffe17f353e323f7edf19caef4150308c225e37fbf35ada0d2a4fae12dd99e5a3bb08a9e56cef544b8e37583318a2a6cc6f32b85d38d7a70f8e15a7234f94432114d4ca5bfa5ca0a7ac5ef0e527aeaffff25affa2059953004b9b9b06e5911dfbd8ad81df650f046f0e1d0bb1f0060b338571ff8fc81d9641b5a09c20ca1a40a72943d6955f33a7fed5df91190ec79a8ecc63c49a5908be1b2e330c2e71b2f84e3052ea5021b9fd5f46a148bf5a96beeb2de34ff126c457b5e702ee1e30c7030fd96ee49bc7af77c27ef7fbc57b54f2914451578ce6e82ec852170509e8e866d068640d3717756ed6f69c41585d91dbb693948b148d89dc11a2652b266f47313a573ebeb220c477b48061466e48cadb3700d6c146368a2a167179902bb313e88bdac6630c77a321de03d9d83059dfa3d5774927a67a2577bff400e7139a417637fd76643cfc45bac3cac73459724dacb4a31df2c8920c1f63f38551219bdcfa38c01a1ce9c2c1181866cc204cb9b420d28baaf12c9b42e55fedbef2100743fea4ef38f5186559a1a958c63d9b50c5b4b89c29a9554dc20d86c7db8606962594dddc3a3dfb28fa0dbdd72a9320414801b3eefe10da127b2cee2e5e5519741e2774491d166d0d1918d1d49d41a0314677e4738ccb6e5c4992d8d317f217e59895ab93b7bffd9deb3cad74c864e8da053887797d9e6fd4bc4632dec21705bd5fd00417992cfb8e8a13919a521a642f6bce55da2e20c755be3cf721ebc923d9a5f5c04cc98c5fc8c2db20711e60386158c0156fe00d01f5af86407ba6e10d4b98d2dcf9efd08786255498455dc11d0693c6799fc344102340394f85bc362c863ed71e88f9a6458f33d753b3e5f98a32031e94ad139d83fcd255c2cb8fb4088d2788dda084a4bc5c4ef6fe40cdd628365e01485f0049fb4875211c3d0e7021b7fa38fc60f5c59336456268d9290a098f4c9fbdf6f8374e71fb867006f6c1265d8715fda80bb643a8411c3fd1d863efcdcb0da566b4b7a6e2ed21609d5e761ee543590eee70fd1a7254e6a2722853fe400da09dd90841491f5821cee3ef4912a81b3c49fbee812a7f94bd3b76e22d05a81bfa0c26720598828744db563ac02dc1e976b3d7846c770b986fac0c43132218477827918f3140025795f41f367d1b559b53f1fbd994cb832cc23376d683ee28f9c5613095b232971b8000b92ea31d64032acb6bb5624e26a633a507ad92e7ed1e4417c4415897f3d349616dfb7b0c1c9cb58eb52d4a1cbf98a026383d57ad7482e6bed672ad54ea97a5d65a003e14d70b7ce79e6fa757a339ac2adcb8d2adf35c3098f4734181f092e2615e8bcb05eec17862c48cc4a2d87c9e68c7f03814e6585549ca9a8f0560cd43c7658956009b152c0ec6db6139ec60bf0afccde2bab91bce7446e5b39fe4c1f4b8393b7d28f942d69fdd64f242acf91dfb94c4112abb469ec1b8fc1b7fb1b6bb9b3a9cad2184820eb0f601817ae91abc23bc7a0a2dcff52ff419f4128c249c50d63e2df02542694336e7aa4ad2308784f581b3783702940ca58cf2cb5af238b8e350988a1c14cc87d57b710c77099d89233062e595ff61b6a2564497daa22fedc2b6a49825c7496b90914d34064a180399e246c6a1e24a423c58a3d72bac0b6a24ce9f9b1fd0bd5b9fed3afb9621379d1217abbbc2a7e1c1d16f49361a8f5f8a163b147506d1eea1c98521467563ae6f6319a6571084e2a3bd340b2da7cfe5830ff00ddf020a2a87afec2569c4835fdb034d0b0f5996385c6a7266951572d00f4e6537950b36dbd96ec57e2e5a10157d70cf6fc63e5423d4f14b2ce4c5cf8767cb78a8ba062fa7a9cdbbd224a62507c053acb6a763247b58710ffd5801158bac99a156e929893a4381beea0f30776e834fab9e147d1b580dc94d0199702aa1995e88f2482923e081ec2133656da957ca0ce8ba3b467d12bff535b27d4d826dd92ffab35702836662639af2b71ab0919218d60312000cefc7ac23a95f91eeee8ad4eef63a0953d6da9926e0531d3604cba634fe0b483a0a2229cba6f1c6074e2cf6bfd06f21a7288aff1f3066f261efe6e19a9c540daa5b3e9de18869562dcd678ec3f4ee177de481e3a9b1e378248c0d5493430fc4995382f8b91c08df2ada60f1c9e6fe13008c5a83c68574fe69fd1313a05f25b74072275485d36fb5d1f55685ca2b021434757c0ab36c683e4f01d3df20bdc77103f053321ec57c7aae828dd1c3034e217825d81c473fbe3bedf9e06379919c8a8e313a3bdcebbb23af31b04b0b9f212ea9b1fd26aa9b3f969f2ececd5b7b635deff749ca996379965bbd421c1a3e2700a1b982a0b679bd1433e3a74ac27ed17423b5fcde5b5b08258765a98db501191e093dd038b6ba8031380f10abcb18eaaeff23b270cdcbdc001d79d7f46c7887143a5dc380478cc312bdc99b32ff707b89c4ebb11f2e19048bf6eafea391f8e3210bcbea86ee445a6ec0ac896a557ebd5c769ac9ce489e640016d21cdadfd76409474d70279e1c258f6d9a63b3c009b8a88f02d105d09c0f6899be4f84de118b092f0a7f473bd0d6de8a11a857aa2c8ed6c4a6ecb536a3af8182b64658a154642963c666e176566e0f8a2fc848723fc181679e5573cc2c57f8879b153aac5f0e1d788249337b9d199d7ad5fe5f0cce571347dee7bbb805393395d1c2bbf58ac30d2ab2ff9d11aba02b1c5b05089ded862ae08d9754212b991d680517d3dc60f1153b1c47d04d6e9a5ab74b990e488d93510603e77998865224ecd93a4f2e28922c9dd1791790911d0fe5c488349461f16b0bafdef939bad76d61b68d83b332ba0d22c2810f2a6dc294c78e271083879b4766e1d7564e2524074736dd57f65f510dc769768fb444cda64fc3dea63132d58fd0454ed89c3a54ba39b389a4a0554805d492a570a58b8b3138459d6072dcf174f1a3f1c6c00651f4a764bf09d95dd300d4d8305b6ec7e67faabe8816f8d411796d06195bccc35b650346d6e26bf90e015b96e913d9c9616bed5517d173bb3dd30f81a93f11e44e3d58830c752b87a61891aca67fc90d2047f7b6ebede7996d77bc85f1d93e4d91b92c9c1f12e5bbba1eb6f1f4a1d691e13d447880df86267f025b803848268c250fa372d60684b7b42701c7e2d84e83fcb9b8a023a2d59e71fd5c5c6526b902edd7f7dc911492ae1516f2b5c73b52295c341c1b8164450893eb7ccb7b1e28c05633d7386f38f7705428ba59d552953b134382fc594356fa7167b8516e900e4522c4dfb96d96c356742c97715a39e972a4adfc7367f17d09823e274bfed37a60a9de5a9d946fc00bfb29ef20aa36aee480c8d338e8ca020b924a3b19cb0fae7b301c62bb9bc6c113e81bda07949943882a45b7eeda7ad242e8cd891de929c6fc1c65c3074fd5aebc6114deafc3be472971dbf6f1cec1f6268d013124ca4bf13456c15829045af0359622d01d834461c0c3317c4278281cae3e35ae8efd2ef62ed2d1d78db9e89d8e7816e12017c795e46b7d65cbd0c0ec40505066b6e2fb3a4edaf3fe1a146d7b0b170845c5c3e6f7b9bb2521ee0c088094a100dc479b97907894f8dda55849e8bfcd282f8eb87bd928494f09685c087e462b7e8ffc99f5934a38a2f6883369ee728f1d010c32f9ebf1fd0feeb0ccac65ef59a1b781f81004a69e428d9267cc9e2dae2db9890044c676a89c6e062b3383863c16deac6ed715d64610f049897161dcfb2b76ce25102d6061df1e9a31ebfe4f60f4d5b20e0095b773b9263144f36925402997a5f9baf7fcf126a194b5fb9843584a20322639f9e3d8b23a7d83646cee3b201e1f793415e23f60c8d8170c1ab6c3118f99683d222c653574948d708e547a1ccd8395438c722013d460072d2338c401d44d27cfdbd0dee34908297b50e76d1815928dbde3a0cb59e433c4ca0e3cf6cffe0e1610bfa63fcb62d77f643b453c0c5d49bd0cc0dd03bf4282bdb082de3fcc58ec9213413e6ffb6749f39a47b83629ce63559c4680c9318d34f264f78a8b769306aa99dfa2c21529cd3c64979b66228ecb50cd751caaff8696086bc56c4a477125742ed2ef7aa12f2a9b49278c950c3aa8d24609a9825505e2d9452ba619a635699b1fb4b9e1abb59e6cd55b4cfb0fa59e62b91fb115f2440937097d6d5aca8e8fbcf9e99fe3bedbc3b101fc80a1069fcc81a871d18efd67fcbf9e3795e958902a6d2c972f5322d2f5f15ef5a05916b98cdc92ada3c2abfd49c46a38134084266cddda786c8d65a64769ce04c98d163f91d138c5a106e739b9357f6c9eec01654a56fc84a710cf9721fd11b8dc712d9805602c769d21ea44280f405f3fa89dd16eaba6e66212399b6b370314f5a90dd5fa73b3bd3008058553cdace1f0182735ab17355fdcd3ee6bfb9b37db50722265a8ad2b583ceca7edf47cca464fdd3d1810fd6cc5112f78a1cc54893e30cb29d19d074e654419052c538a19296ad612a031ebb83b23947365af87c3baca7b188192d09523991da25b6a90d97aece0d545529a30cd22f47ef9281bce8c671208be00f4fad50ff8b548a766eea9e0b9ede1e32b07f26bc37f1ec6442ea289000036b182f0e32f5432900a3ebcad851eae53f6b0ce8d076fa9e42288bb57ba8301a0fb6aaf17f55d310bb569b1498b2fc8980f2b171ab1cbc02087264b59bac51c68998f31ec703704ca04cf4b44a9c4d52e57965787a92b4ddd70367962d936128768a9f9911caed66b17db54da642d537c416d63dbfb68d9d1e52529d447c016ffa65fd562136d0354b770c3e0addd9e628467a52b9c345214f31de86fa5f708147421cfc4babba725e1418a65e51738eee829cdd5a381d2c85e0ba4fcb75e0ae445f6c5cc443af66186c59759ed0755e9edd27deb89d873188a18f2d47398179efd3e40038ad43370c6b694716dc176ed3c09931d07534df998c98528740408ca27d6156eb587960c997b503bad1b7a69c25262ced7038a458afd314c324f14f57c699cee35121c5da5fa85f6e2caad4781ac74e45f0f269e4bcadce4011110c9f655658e489daba62f0e6c47a7b09c151239f96f476d117079ec4559bb691dcfd24145bd69b204bded34c058596000a986a9a147270694f78747e03606e020ae67cc7534ba739ff3227074afcafd579a522c706a127ab50838944cc0dcf2082840f61e571e3d023622c69edc328474d0c7f80775c61539f3dd077d0e9aa7131209470750696b79a0f1f876c1a4fcb301ea7dd99c5419094e6a3cf91cedf31454f17a0e219037ca321e03a33c6252486f4007902289fad2d8388274f40a3629d71c4618c51369eca2fe86af7905c32ea9abfa01b54b34298c2e02e347991423c82528babed3fa9e82c999c9fdd9fe50a954465f215c6681411f60723471120d3a26764116fb30702b41c9d1f28d43edd1e20da3761fd823223f6d37a0ecf321966294a8e7ce246926c59a93dab13ecc354b0c59d74a6b0e8e87ddc5e8d65a2182dd57e0546cfa01a94ead2d2a22828ed54239d8b2ecbbdda65308685105ba02907878b3d8314017abcf28cec9e8cff9dc1745cfbf5406e05e7f57977da3b309403761798158e0d8724223492e02d4f1cbe2c1743cd7916cead48713d5027f0aa16ed3249bd07ae7cad1ab2bf987da3249c92b8230c2b343d5a55d783e275e1f8f21873a7870e52c9059b0d3afa807dc025cfc873f741a4fb3dab2e9f09fd61d5a62cd8deb9fac551908099791c669d42090c714911ddb04bcce13cf87204d0fc96b489ecb8aaecdb1a8e774879d5555284f7175ed6e8fd1bd3801c10d22fd27b80a5f0b5dc6863191d2083fc6fa6176b33519f18bf6e599655ba7b5bb71221d70f9416940f4d20235abf5c50c237f55c715c796ab80c3974cefe1e75a58542cf945fe4d367278dfd68ff29ad132116fe1a8ad5054e148e092d6cf754f3e002ed5f8878cacd7b013e8ee22ae32888bfd6ae71bb5473f640f8b4052220cef5d03e6e06336f7b436f7d84b81c77435fc0969b22bfde0173f9092dd151baaa128014b54c24176ade199049c8803044d0c1a5d99baa09ec25b233e6254acf91acd10a86037b0b72509c3212a5f7c551eadbf968fc044e542dcb2b741d13feb2b880b306624fcd4431e797d1f474cb48999dd708b30ef1858aa0eba35cc240520fd2095d1b8713badf330c369ff5663b2bfb2ac73b5f9f973c2be0f6957e1b115511c61567132e3e70ef42c4833fcf97002b01d0651577b8c37f125f4214c550a8823fe992620dd90d6661f51838e99297ac8cbebcb7d48b50d025d284139a9f03f03a70413852ff2da573985d1f6034fb1df9a9ba278c51912cb2d6083fcec40162523bb1a7ce99c809117bf4d56da85fb97a3c3871ea050c2bfc8bac15d985bbb223adcc69b40e1ceb8b2da465000e9503200ad5dc4432ad3aaef44ae382347a2253f26d7dafb888f7b7b5a54f0d21b62d25223d90578ae23029ffae6bdb3d3ad0f12f38935391cb0934948ac493f4e6f961e8fece5e84ac6aaf950c890de73b921fd66d8e64426c014ea6bd5e3338803c15c42eb3b8eb21fd75985b7c0a0762700fb7d886a0f4877525e8cb24268c04e1f956035058915bcb4d2d51b06b33fb11ffa00e531e7ee9c271454cc65d8a9435fc24d31763d770884779e456447db420941ba754d15adad12cde97e404f2b63a54fc8967f998b46e9e57034cf2264ab03efcd16b18097960ee6c1d86ea73cfece6641ef4c4acd78539a07cd6f01f50815f96001618d24cc815511a0cd52a6778799a1d53a64d14e9275c471402a641102447aff3eab6966ffcaecd30e71e8b48dc79874163434885e1c9b2e4306b3782becd8cd5ad8b16ae3671a23b21e09c815cd1600c6ba2ec4c4452e8113725215000fec373628919ef24adf744d4276746d8e527fb9f6c3f2fc887482255d184518e55f08c8d8fb5c3adc0c9753b4af55cd5238ea11bbebac071ea4cb4c875fdf1f7922c60b5c314f05a823a6a37ff219d43f8394417c8ee7906c758bf4e8983924ea30b24e50e64c84ac5058d0f95fb790086b7ae146a761e8b55b0db96d676713136013a70b311ff0b207fcdc29c40391fc6e850b99cb1516a133191f3ae6662aed17ebc5322733bd13ead28424c1a3068a17257ee24c9daf2b7ac13113223d20e00e81dac605837d5c1b1134d04f8fb7c71ce232c2fb2d7d028d89fcf5ac6423fdd5672d6f4751233214a385548b99d5f4420e08810dd4ee09b355f64fbb251f80afe32685ad9d7ed8fb66d583ec7e87cf82e6fa15744259d4e22bb7a3f9a40f5d4e53b4bad689be7322d1f6a1a33774999c6b1873e437cab783b629c0d9ba24ad6f5290c388b3f40521506536dac68b9d336841ba5a7268ae63ece7c77ef3283fed9eda8468c47eb2c807bd35548a1b8fa59f92f41a1a7244e24a09b5bf9c24fdc0092f86bf2f994a3f2c9702e4872b007f4cc537980ad7859c7b7058c1e913a21f0d600543bec8cd4b4f0c521513afac404d67d1efd6f2953225c8b01a900acccebed2748440bceb164613e528aa5585e331b60298c4d03b3a287342bed22d7d28220d80793c694dc4ebad4f9ce2e396fa791d4ccb4f41a9042ad412e0df29868999a45c2bd7419a53744babd726e081d2b8844dae366db23dd9a6ba7fa22933c2d15dd06bccfbaa6f16144a77175f2eb37e7e1113fd6f563b414dcc0020005b9442cc68375caa2b2485e0f14d01d220a0a03bf25a7bfa04d4ce5e8306e1282f9514d5fe4cce4b47d0a39ec0e2d750e3adb700b3c4d26ffa58508c1008430bcd2cf31fc6a7929982f43493e4092a540dfaa71d8c0517b44aa2bc9812cf8707ec8fed5ba5041ceab6823630c96b7ad57113ea96d6cb0155e1b77011659db011d8a546227b86c4c372f4615eb226cb3112282a1124ae14434bbd9a7eda2a4806d5a3dd8e17125017fcde0ff4442c971326030c28c6540f4e5d0caa904371f30ad4f97bb1401bc5887b8ca462bcbdff35da25677fd342261bfb28f870e5d6ca1ae1755329aa4a2c3e07cefd3e62bb0ec1ed7e1aa1927444031ea6a318dcb1fc1098d23ecf2b47f440f70470e58b95828cf13ad419d4d67049a06a37ac73fe0a2463dde1fea2a0a67538b1f5bcdddc3b27ce933bc65ca420236ffd1bd949a3641190d01038e7484010fdfc507491f725cf47da2e6a2e84ec687d2f00558634c011d2efe011267dbf7b783ef5cf3f227116fbd5537de102f04d02fdce6975edfe2cc05e676f5b86b8514cf115090d0dbc1234052c207b4a3e71ec7d261d5daa250f82fea9c80f09a18bdeb836667ea3805a0cbda06e1a2d806d9f94bc8405c5b30e8fac64ea59a6b99581a4f415a47852c08f3f173082941451279d07de0399ba0d756766b59a384d8f0455312eb8ff7801fb42e7b1a16548a3b5cdc1b4d264ab2dd4f5755122456d5ab9c0988486f9defaf8fb9b2f989f8aae09e102f187d24e17ab0dabad746277777a3f02dab421a41da7943de3292688eba58e1bf839065e1f89fdbfb23d5a4e230421bf301d2fe72411aa7f914e2da54769b73733f8121c1de0855efda8a3f017b5051c8a93295ed93fab55469dcfa17fde2b34d99dfa7d0e1fce555c402b17c710c937e856d5860f24efd0fdb12ea312b4b031d41360d629e72fa3eac6eee20a2644ec3f270d94d9531c352f4cddc1960435d782d68c722b62e835976cb6379f6d00a84a07d511c9f03e43d76bc3fbe0d652f91046ff162da361f83a93f154bc88cc3ffcfca5c85355650b7b85a41075c1ac7d9b20ed9509b567be1f6f6bf6f92538273a39292946a2ea4d506140e1f856107332175ae102f7b2f12391e2cbea8e51ca0d699319cd780e0caa880f28ecf2990fd3d96479027e25851904cda1c4b188bbf506b85fbfd2bba7dc58ea35708ccea60399b6eb205e83683c27fb5cd4d28a5ef07a1cd8392c5c39f91d9d4455113d9311d2be3f1846bfcc2689d06250281d5a8d132dc9052959e80cc754edd187fc7ef57ae0e405dc3f0d79213655149850dcd63cc677fe547dc661e2e4b1b259a9e748b22f171323db4eb9d5688c3a654169e99a2997c215f8e277c5d1f45c11f10223406809097e2a3bd3476141c5dd335f37fb95be1881c305215a803f716876ab51b2674f2e53d4a149c1c5ac500dc5eb7fa09a6e46394e6c9decbe973224f472e1d02b8623d0043e30d81dc04dbfe3d014473d22f5419f6643792746881617ec14fc3d9520b8694f9179399465eb7055e19a6115918b0b3abcccd65d4d3cd12dc03743d203965ddab45a65cb92f22a2a0c2aa18ad4b47b247b616ba0c53793d9bbf718831f93db5c238c1c0e30d35939b72deaadd773b22bd37f81c8d42bd1894a092db0157f6c933a8b1a4a85619798d7b952975402322e43a676d1b087265201228d471d51cee60092e84fcac9fac1820a483b00b4494a9777710475720af44a47ac241773fbf30e0417ed82ff8dadde65e827775bcaf514257ebb1cc1cbf5a0d7811e086fa086effc00dee20ea4a2908b48b17181eff88ca3b865f10e621ecf21775122f798fcb0a7fb727e4e1e910e912795c5989229ee7825932cde474cdfe0669626f2c203f4676112cdd53494104b6dd7f1ae08b7969a4e86622421c67a3bfb0b122f81c8168a388325ce2fb470e48982baa38cf5f1141f2945ed3346260ace990f4f07e8aeb15c770c4777dc2104308776296c0bb07ae20616debe30983185e325e3a38adcfb4473cb08ce90084091f5ef6c4d009e4ae1324dad0de22e1f42f10e45be57ff3dad084d6c4eb56a62883e8012f20e016e14ee235686b1e20211f12909883074c7a6c5a2b5c8578839cbc4dc9c8363c94499d8285fc20e47306f8115a67658814817cb1dcc0b9ed9792fb1d9e52f3ae7f8b2ea2c5ed80cde090e1c2ec7a5b984e7267baa824b5dd6ba01423a37f24a419e5528bf0afb4230c5b0e50b42434ecd1945df079f3d4dcfa520c860cb12f676fba1c9ff1cc7fb0e0f89bc01f9b0d12a8b78151a61172afeefcfd44cd90bab01da958010a024cbfd7a308b015e258958304f59dd8bd2849a36738cda22409929ac428358cf997379f509b025fd40d26407476c070a329a3199fc9fabd4d66dc9ad5724f2c1d911116dbd2922a9aa28e261792f3a9765f1fb12e341301aed25b131a86f8dfc5f14abfc2d3a0bdcea481456273f9bf76526d08e1f20cf747e3e9d912f7bd88daa87c1c82c1622f3eadc693305c6a9bcd0278c2d522f4fb889840a5dfe9a57fe3d3ebc255bd21cfb51f47cbdf6bf350fe78341031099760dcc1783585068e40b15d8f9006a2115bb1156bf89b51670e5ae77c4262b7e0bcc65f92161d05bd26e50c550b7cb2e2c5eeed10303f75c67558e15671be7263b4f0c4d319be3502e5589367926c267220ea340a7a156e013f87e2d819e4bcf46a5c86072086434c78abcd7401c397115edb1fa6733fb7a09d20f9fb995a75ff6e245a658a8d8c80eefca04765c8f6a169ca0ff3a959c547fc1ec496e54ccb2fd1b6967d2a2ca14380d5ab238a834780ec27dcedbd20ef6d6a298e30d25b80e39d4e524ea2ff681410c8d5391e991b61a79d27ba8453d9baaa9a4f4f5427f0b16c3b5d3cd53164b8eeb9c182874fc771ea05d6d81c8a0536090e0c09118d37a53a8af74bf47c7b35820a5c61bc802ce0e56f8744de673dfb061c09bb0ee6bb11132b787e08de553450f912bb90580690771635d92c29bc22fb819e79b28761fabe1c5a3f92aa9e5612dbc10af7a6cbb2f60b26fd3c22c1012f166bf117b55ef2dd81393db2d4f7e90092730e798b3c524dd5cd11e48d8dbbf9a79ce8e44c61bf49a80d490981768a958a32cdf0ad1c823e2dcca82fca8f90e1149e2f4263dd421ac91553c09a69995e2ea377b0269a22fb0c4f64c689ff478ebd56aece446ded659efe77623052a2ece4c1ced8058552d1e38473e82112a45bca2a9374e03615a3a18353dd03f534b236355ca293117091240402029c29b1fa5c390ce68ce472062a9d4e218eb44a276f01926f6a42e2e3dd5afd7f82af2ddfd66ecd679bb680085067e146d907c0ecf04c221ea00ff2f64504f79e9f556ba015869a5cc4300bb9cd2100b6696d95aad1d1e7d98586113a3841abcdcf36d4067a692e078d83955073c1d153429977455b11e5d4f0c0528293293a1c7020fdb776ff19c4126c9b5391645e1e99be43a71efcff1f2fb512f75b35013483f5fb9768fff931af28ecc5a37034ae7327cb8ef3f19262aacd20f5077f1e9426be5ecf992acb9985d5adb13875bb6fc1ea8717b05ca1fb9394f0fe2f619df1639c316df9b64b2a88f942625a5a8cf21f8be80fbb7c14cd5e9af028a742d536b4dc91b61f5e792ba47c33fa1902d7a65d02d7a0bbfe9d40c0efc1769c9eaa66cda822a62a99b31a5beab7b9dd1118cc9819d8f754250c94ab72a11835b90518629e5bfccd7c0c102895f2f7450adef333648c586844ab3f1e59712012db5bfe5aa4e3a71979cf6b28dbf42be43886b5489239c5d8d8b36eed41a1ae86a72b011b6cf8586414cd7e0abc0fc7406888a5af23881e606577b520ec81e878273ca3710824e675cde1a0d21a9e47a1f322ddf1f0dff8d5439ca696a6124f2017b8ed06c2724ffc3dda288af31792f84ecd45cf0f22adbeb2acffeab8b1945b1ee220ce159ca99bc7d4e00865033c89beb83005b6e65541dd430790574111e9fdd2864353bcdbe799ef9e2ef67e5e9e71bbe8eb3d9c1003fadac7b5ee90174700c35689cd42790198b845e571666f691264c3414d9d16349769f6edeae1ac79f24d8dda3821a6a82702f7964e7a89bfd67f4b2ccab15a67fee3381afe808151400828ee287a04f50f5a19f99b33507b7fed87cd46b42bbb68e40a199441e6c26cdbacf0ead1e3ecc585f4a4d204335b4779ccec75b803ccf416795b9ea1a8c4fc3b4b2e6415de30a0e6ac1dc8f4d2ea1f8c7dadee7f03699ab7867d8690d71cf6f61f8759007c324555ecb2c6986f1f29fc8d421172202cbe7ed3554d40b1e02ca276b2f110a24920334f09592fc9bf62c6ab81faddedf0c628b40efe91d4276ff3d925ab614e4a4dbcbfb2a096c17a4c5aa33b5b1ba3f41a72331c7451901f9642d7e07eb0f0403e7c6e9005c3b39fd3f6ebe229432a03e4baae68f730102c729bcd8d481cd0de3346c7bbceba0955d8ea5d699520ad8c587fbc3bdf50bc16b2c4708945f15197f197e732a6aecf95b7c96ba3c35692ecbfea874a91e11ceb2d3b52b7fcadb6d805fb430f1c2ae51b73c64f2562d1f9f00061e3bcb430d0e78b12ffd41991fa1795909411c868be223b2e482d58ad93c9a75fd879ce72c49adc2548e3dd633d31bf363c54307ff80a02cdf31c3326588f356159d6c4e0e973d2d9dcd29f8f8a55c2b7a946ea895b1085c3d2fd53c658f2c9776720ffe033186c79799a7d574583bc17f0cd397a1f990ff2c2564c44897f047fdaa78c91487dd3dd3af210bd2f021a8b965bade1da61777f217387c4cebaa32fed41eb51b28a90da1f7e8df55379885be87c48500bd95962e90de366226066c70c4b70c00453256480c49b7bd78d6b9433b7fbf7b7669992ad8cef27f215a041219c5432f6a9eb5da09c6c48910f16d68eab2e268f4c05892007904beb4faaff51fcfae28773e1c29b703c6969098b363ab9b13cc36691fa88acec5f9e5cabab362a5ae3053eaf2888554eca22d9f157e79cb0f97d70887ab3aa61ce926fe7e8a95e313037226bc384e985e11959e0bb6d1e1df9cda86778896587fb1e28bbad976a214285027ee69ab208c8618c868deb4b83d1ee9e2e90a1291139228f04d9e29a4160256ff951f4b411c5e3507d13e98a71e0e8c9919869219c931e3a18b82dcf6510da444d10390ab90428e9190036fee30f3fb8a7bd71ac66e7be926d5a025b5b10ea262e69545f9fcf57aa205c8d0860c811a0fb817533c5c0e1d2987be729aab1e6f55617a79006bb7d0980a6cad50f8f964aa0e508a26499fa875c9a506ccb409ffe8bc6705b189476f88826b202e1dd0854e937fe1f49fb7a7cde2870c210a17742ca93beac5664d1973d6e6615b42bffe687ebee28b7b3905b311d34486a40435c6163a86dd4b9e2b9bef7d74636b362aad37afc0d4769e4b3e6cb520bf6a2985489f9b513d3e16dbadacdaf2c801fef3ec5bcba6effb5eede00922d2df871d1bfeccddc78e4dc4539091fb3814385cd815776b3a7bd852c571cb942041bf04c11b1f30361b2cb12a1dcedd591f9bf9289c02e30645b41d7b5ad66464c5d609b8642335b31cb2dadd1ae377a98cb7e7407bd98b6a12da4a582ed87a7dfb1a0caa2e1aceb9cbc8dfe33147f0e24abb1e736731c6d431cb88f19f4554673af70a213bb91474b5d487205b57cec20d50614f891bcc7d13a72155b8370eafba142ecefa00a80d504591e6e97a19966bba94b56ef2979a345f296653783a669b7d0c1515b56d7e9d3cc2e41a5958e8fc33617c4e750c74564d0e318a7f581f33a306055669cd0bfa56466b2f5e7bc0e377df4ebc34932abee0e06e18cc7437b1090e6c14cb4bd6a4280027df80c0bcc10036c0de74e18778e12686a7620e45e9a403502ee3e4ce63e80fe0036890fe7f1bef6b6b1594055c515a6d2fcfd1804d3c2b64461b6aaad609219959d31398d90c75e6165324697e020c68d90bb7a34dc60204f3388823a239af981bfaadabcb1e62d781214ef2a3240832b986f81430f509c2245750ded15ced806202270160caa850ed99a7601a0844fb472bf74387b629c0d0f5df8a9ca22696c9634986705db0d0019384ad4bc6bf4b72a541cfd1b31e1919877a3b99472f75b97ccfb5a7e53b695cd3612a93b8c9accdea5afb81f90ac82022f4ee0f1b1a2a91422e6523589a4ccf2dc7a5171eeacbbf389f550be10c7c9a4b4f60ebbab01236e9c9b2f63761552c93ddf9ee18f57aff09385f495d206debb61dc8a35e082b739bde47e8051645a9b434891912badfcb5f2986160a0458a52994285bf4bbf755d7348fbf9574d745958417355c341204c7fe4a50881d0a24d8508bddb8624771b9f998095a424570869862ca7f125e0e601634024f24c3bd8eddf6ccbe71bf6f32a28a227d3b72fc1eee67efa97024c1fc2ac57f210c4488be953f7d610e62161df14e89c5b8fb11bec0c79150127666015653c5331043b08969241e0734ce99a0d9c662d0a4e602bb4bcbb1e2cfb4cf7b349b19c517ac2af29ad2a9bd43b52237d90acf02ddef3a8e55f6eb2fef86069d18ebafa206b05df18a06bc13132efacfdc446d55a9ad6f5c6035cff24fa2cf48c3bbbe4d0ae8b815e27351d681302c1c939a210c68c3dc07ba11e8c9ee341bb64302123d2e57c9828f1583032ebdfffc6a8ba072e3b916b3ff752f5510c5245db2ed91f61612128152ec7f723fb3b03bf5012eed944cdecc229f1ed494f66f68fa5e18162e9d35d80a67d2d0b47cb4d2c6c9bfe8e3715461fda3ef5fef84d38181ebfb2a00c1cd198044f8a1c5a14213f74694d3558a1dceb32984a744936aee416fbb34175aa7d60773d2da20776468f2379b0ea9a95d533d0fbe419af238d8c9f3b10427c5a380679c1a058c8311bbe0bd23404ef15eaeb8f0cfce3385b5d87389046900b525575507e16768db4a08419e225662207b282876f887efcbfa06977db5fd204da2fcef93ffb2f1abcd001c7f25193caf6e1ebdc5471754be2f4482303f7215dd232497779f925c6732af93f3afb679c1db9403579a5a3c2b99be4e37bc430756bf50beae6dcdfdab9d2347695a3726ca9f5ec2039bb0bd203d7d862535fa0f682eb3540e3b2e370b95dc770de17a1ab860d1de3126734b313ac96b3d8b8f1a91d02ab154c19f61895ce3d4c116387507d4827b0b08c8b288b366fcc6d33b1b0ca24b6da4888637d458f1a73bca2ce3f00374a983ef0b223d80c6657e016306d7406ba7662c157510823a59abbd44e7554bdba40fb9de59ad8ba0678f585a25650f29b115c120485af04b5be9aa3bd7465e83d3c600e59e792ab97348e4571d9f4ac5979380a911fc3fb13ea8510d14f5b61accd23cda1b0d944398ab80382df87bd28f858eb77fb20dcef5d46328c39f9b82a91d1b03d19f4d62005e0f34252248b19287223594ba3dfb5c8f75f8ee752ed3093880fd7276783e80825e562fef5847ca1f42a3ec87c978e656368697a2661f5203e66aafa38f0ee06396e7183edbe76d15437a5642491ed91740f80f788f2ac2877bbe9dfb8af0eb00e0da177722835a4d6c3d74eea38fd8768f074fc4d661566a2f6e6be150f92491c75b1d5072849f2756f5a81aa4fcb4da3643c57fd06931b927ea5456f75cd2d8bb821643404c8c59c163e8a3b8341a89eeedf0985aec3b2002566e38e1dfe2559320300c8866ec898267bcc81ec5ac3614ba8391a1814d863128965c759c8ed3cf130aad390ac3ff74d3af9e31d1833b6808a7534213cdc9e6e2177a7892ca3430a52c04f7b8141fdc0202447b286482e20f8bd4665cf6a344b29ae61a5e1838df5b0ffc4abace1f75dcc03bdb7cc3ba96b316e90513fa1f1ba327dcf3219cb6085a143b027931689a87f3e122ecd00062a2eec9f2b47d05543ef4e78e07ac2f18601d4fa16d1bf0a395b215678464db0766ab1948bdeb800913dec79b5da732e5ce11d6c91144b20c6ddf068621244e306348eb556fd2f0a4979f9706dea08684932f864f8f5baf76b9630cfa18a800c387ef0d4bf5afa4ecc082b18f921810eecb2d4ffa90f9788dbe941e323b89c0a13006b0e89ea3d42b79afe614845b69af632fde1a058b9a188f7690d1338e54e5b18504bb3d6fc126b6a5a11865f2ffb57d26d44793075aa5ff6ea7a610a5faa091aaccc11b45b6e33bf0ad207386680ab6219947cd84fb15a7908535a98c84ad43f7e4856b3272fb28c2e2b15208fee13211719102e7717a23731a6e993b695a3443f562ec25bcd2eb497d7c4347eb39ae082d4eadc3e80e40bbdc9be38669a50247d80e202e26c9bdd8110a05601ee5371a45eec51d41c2a0ffb37151919d4f16caffab119386955d59986d98a6bfdf931df8cc1b9badd3994f73cdb782a9f0b34a82f8ade2930100c5446b8116b229fa24ef9d56a941963353b50c0e0efdf7c0d9d2c15429c701cb38e421099d82887d2846d603afcfe51d102ad2298b229704caaaa1e9c77e023f1405432e8ab70c181e8b4eac5cfe4c333227612c0db3d2be89271dcffc8782965fb351dc2da1d2b8087ae8b247666d8dd80d52082b6e13a705b4e383401a3cd494a172923926c7e625b2f565f34a880df3934d8b8a0bee374fb1edb0f561027ff87cf5047b45a33d05f7e530153f771f0c481635c984cba35182519066d549726257bcd277c5a28c2a68f687cde3e3b950be53e9c1769fa6ca88aefafab8a2dfbeab7c015411eece2437fce60ffa951577cc71bbb3d976865279a67246206940acd0d77a6b9a06f11efd69ff9b791fd46b3cf2228769771e14298d1d25d1dcb934b24e4f8c163f2215f0f459e6740617818f901b94f55627e1a2bb6ff14af1151de07fbc599dc4a6071e9a3cb2f7042150a3e91f5547c6b40aa757f401090d4fc92a439a8ed1ac2104ba0f4822d2bde7cbf359670525e3e732fd29da25ef35fe84c4a1b7cd6222612d45d526169716bd22f7ca86531edb0530a07b7664e1cefd9864a01d5004dabc20b9a0cad5d1e03e4b3a5557e72ed8c9ec2b43e6e267145189d95ccf005216501dbd86c60838d3d9ae7a074dd8ca59e38756b21b85cae5323bd76f3405d47b9415394f763351833534401a4a879e87c984383e08e56de75dbc321d08fe6283c00deb71e6499e1cc103ff8ee9dc6d291c067d2929b44dbe3ecb7cd7ae8e1863f31615924f08a8872ba16d53f615a114a6825bd69ecb52e6de165f889e33bacb1a16d47478c1f456493992580f769aadef6665ef4ffdb602ec954aad7bb4a23da30bed715b029cf0213ea24e2e2882cd392ab286ccd3d527b67a4141ac0bd7341b2e1fa03f9de582a5a42bba3b91691864a25cb115c19823ed4defe620e7f0908d1792afd1e46b1cc34db5f5e29842b0fc1968a081078da2a32e0b6cb83595196a182c58e229dea758a8782e6945ff21e7a77cf01c65f6bd335d9cdc8ff462da381328124fda1f4676f81a6de223cc3f2b29872856b3ba8ffa0a89ee1bb210f27b226e228d7e3473f4dd4c7c9dd82e39702b4353a160ce663dcd0f7114c0a5a1f50ee5e194b3ca98518906182a47680f4c512953e307f61ac0e77e727bd567abea18efe9288b94c07e9c71ef6056ec23110d31d265e2047ce6083a14309a9e676b12584d1d828c4407d95ff387718db77995dbdbe00c2df64674fa7bad8208682e13bfaa41ed934e5e8dbe0b6ae5ede4bcde3c74abc20a0210d347b427859919dc0fac5adda6785afb1d66409049965d2984b94243ecccd0f51237946db396ea612f54045061a48318a7006f3e53e08304b604b5b83a001af7e07367ab45aceb191d6390f50e92c982eb2c89539d8d6bbfc5a8f83df661bf25cdd7ba10b123af0c070e318b30182718b0226f0e610cbb81f3aef79436d042c770a576d32c4456f71f2021c20c0ef7891442efc8d4c0d4bae74837b2cac00f255e69e04a9f4f07b5150fb91fe8b757d2819f68e406f5f87b990bae428a10584a06040a2b2f812d1d0f14ae80408441e26824cf98e2a0fec24ba0cc28c640a933e13f53bd72f4a5df207f87e7e9e0d2261c740722c6500604c0ae496f0f8f467042cfce73a07ba6a40f946ee5f6c06168d1e843fbecc0fe3b1970fa19cf0ddddc76e3ea6a16d586d519cea74e8de04d1ea080c1428dd08a207feb49f6f54440122d63725a3663b7b22f676846dd9fbfbf2a444b91ea6519ee2c1468b71afe4c2538369b42e9287c720f723947fb15cef6158f831c3a861c61638c5a1e0105cfe98645c053691999432f18ebfeaefe43bd909b8b55ca8d7a22751926f36153ac7fcde28b2d8746ee7c1ef827c02586714e597af347f87ffc95d4b23a99371194206c250ff629787e4b2ef5e787ad0190bfc4a8a0a7accf8d2070265cd1cd3b63199f5043fdce5a2412227fa005178c0b737181c5ae30e4c2fed9f79eb9be733550fd545f4df9b0aa2005dc9b504ba7bee62cce322fcebd84ba9c65b1c2526a83b2606d66668b07345214513b82be7edd3b9133e1094d0eeed7b376d62b6edac56a5a9d8ebf3b5cccd7301c51fe3d5b44653ba9c37260967d8ced938962fd5a21e449f6ddd390bb72b80adb99acffb9e44c283066e3820198b1d1c0f5729dc758eabe936f4422c4298529279c3bbe01de45b82a73e0dbbd3dc9f4aef32242f3d4c0768420a8a7f1b8a805bd06f76c72376dcf27ee502378f15a955beb5a013b45ab5ea268c5cdcfd6b3056f0c3f5203ae0e8b3962d88026b61ac7f72745115eb503267d7ad1b9dc4fca0ed1f31bb4ec4ac779dff2487167eafd11b791bfc9d2ce399b100f0d3d22cf6e1ede62abdbc83f5f2da2ae85f8dd0fe60f28c6249f0806477a2d834c7182a91f03f351f213b551f32bf8c1f68b8863bfa46f9a2fd47b1f45c760e05eedd5ceb52b73c488fa70100b18c4a0f3c787e124d54dc745445cae804d54a7756070860c2b82b2c86022271d138a2fc2821dad2487cf14400e7d968a3bc49bee3389f4200653c5651be4c03671d9161bf69927a2281d20648b060485c95a503d37dc3b07267f6a28cef2bf5066e64affb800be6a0777a2deb1727f87f14e6d010958134a14d8d35e4fa9e336c0c39a39a1a6aef3eaf6fe01e911839ff6ad71fee21e6af009d3744656dea17c5008f82528e333671711dc9553cac51de0e927336b54cdeb2e4701dd3b4dd48eae91fe97405eb517b847a19dacde8c8d89ceb5f1a16bd49f0bd135ac142eac463a664a32748d1c20fe2a4588a3f73ddd85f88b03c27a481b2f94e06cdba83b0eec9ea564383ed0aa0111428f7ff2fe9be330da974670637b23505c4f96d28635990812f4ede459ae20673e66577de5c54719681b149a6d072c194d40a05d2481f7a178295dfcf97771516f32a9a138fa06ff69c4bb1c91381191af3f956a056afe49e67dc983f1d4d4a01375ccfacbbe8f043c52f630c4472686094b03ec4d6bf9b4ac6be76a8d4edd4e5096ef96d33bc68cc91e2a76350009c80891ceb0dbd19006751d458b3cdaab93720de9ac735c82ef7dda0c0dac491cfcfe64995a1daa4230df8f5459de6a15754ab3e07004a3cae91ecb91b3c9b40b3ef9857165d43c3c08aba6301f7820a119d1148bbe1186d1fb168f79facc040e9b93c3012c5d076f0a6e651cb3b26b39e671c62f2d0439fdb4781b0a9edb0c23334da7c3c0547b322fc351f24a716b06713aa314e8382e0e7a858e40d07ce41cf9eebe918e85edff3ac754dbf312bdc32fdaa059565b45782717737ce71fbb0e06a5b38a4324a63d10ff3fb131358def67226c4e3046dc59084efdbccdc7ce0137b5b15770f10ac5d2dfb1c0c4d631e4507b140df814be071b0d926d47e5e623994876ea119934a35fac20e0c48de6dc2349c128d3eeef28aa84843f84a0bb28cd7d2284fa3969e30c9bfe6ffa756b15ec835cfec4818ee9a4569c4b0b71fa1fdc067dab171720e9a7a1b208980980b909cddf6bdd3b04be5edbc3012d799412ec5574a23e4f30a5bf64bf6f9a2373b48fd4dfa8db51834fbb2b6636b0a4b906c06f08f5dac5849ac6fa8810a1f800d49b55fed22adbdf44efc1f1211fdeef004042d4bbf6e2f33dbc119b42ec80f4bec3b04e44942f0ee1c133fbdbc6df67294f7886a6a246e3f394edc1100985a7d98ef5dfcb7982555332586b3f392bca0356f6a6078470c212792261c601b2bd3470d6bd9070a8d621f7b5bdfc58e300223d989298f922865e2fbd6bbf676ee4bbca9cfc4b96c1cc933e8eabf838a94309d3744656dea17c5008f82528e333671711dc9553cac51de0e927336b54cdeb2e4701dd3b4dd48eae91fe97405eb517b847a19dacde8c8d89ceb5f1a16bd49f0bd135ac142eac463a664a32748d1c20fe2a4588a3f73ddd85f88b03c27a481b2f94e06cdba83b0eec9ea564383ed0aa0111428f7ff2fe9be330da974670637b23505c4f96d28635990812f4ede459ae20673e66577de5c54719681b149a6d072c194d40a05d2481f7a178295dfcf97771516f32a9a138fa06ff69c4bb1c91381191af3f956a056afe49e67dc983f1d4d4a01375ccfacbbe8f043c52f630c4472686094b03ec4d6bf9b4ac6be76a8d4edd4e5096ef96d33bc68cc91e2a76350009c80891ceb0dbd19006751d458b3cdaab93720de9ac735c82ef7dda0c0dac491cfcfe64995a1daa4230df8f5459de6a15754ab3e07004a3cae91ecb91b3c9b40b3ef9857165d43c3c08aba6301f7820a119d1148bbe1186d1fb168f79facc040e9b93c3012c5d076f0a6e651cb3b26b39e671c62f2d0439fdb4781b0a9edb0c23334da7c3c0547b322fc351f24a716b06713aa314e8382e0e7a858e40d07ce41cf9eebe918e85edff3ac754dbf312bdc32fdaa059565b45782717737ce71fbb0e06a5b38a4324a63d10ff3fb131358def67226c4e3046dc59084efdbccdc7ce2b2428f74e8a823f413d95ad0a8bf94723fbc1598d16bfc0b6bfb1850e4da3e02ab54930562b3781c8d9622f99e75f607ab18d6802aadd864b94973d0bfff0b61b39d1650d681ae07018e6e70a73f5f8382e543b3c07289637583c9f623b2f5a21b7ac69bd075c2de572e76f7334229cda56ae25312515b75efd2a89e65caeae1726ff2dfe0904ba69a34bbf9189fa2141047fe2afcbf41f60467874913572b92c44c31026472579d9fc2b139ec35382fba966dab940d43324ff3e315b6bda2c197ffbf3b486a9b4ae497d06923e4f1eade90772205117c2e12d8f3a93564ddf17c06f986f5f1d222e6304431ee05aced0ea85e5469d1abab4d8573919edc1d60207f41de58fb4b3e34b4b0fdac2bc86f8c6e4733329dcff9eddad0326d4723d1c15a18c9f89bc628302a01880741a112d362f21d44314a5977d7c34a601cfe3100f7d05a727f98218948271383da6585e84991276315f5d2abc49d73e5cd1cd02de9bb4cfeacc0a382ab9f20c2df90775ca5ac7301c220376dd90a0f28862b90e5410972b5641c4f6331aef16d71534ac1d6c1da075eb5db1bebe2975862f3708bd28f8d78d762d3abe009c064869f6cc2db82322f792fb7f4fb5f478be0c4726e8787bb113a8031b25eec8006acab9d3f147d3c2f03d031201d2e7f707248907b4004d0b68c6069b54de359051e0297b6ea81eb56f7dadf1804594327054c915b4ea51096ca9d840802b978cd65489d0c2693a9893c9ce384e131753ee609016b0619d97749989b2e1a21a43e6850af332e4ca2def5860e3a4d97df838598b0fb31acbfafae8386bfd1f92dd1e036ea7237379d746f9620824261bcce5d4722dc146dfc02008255657afe68d888af681ff74a5a86b1d7e357c6cbafc572fd13020eefc5e2081d13dffec8d1bca9999a77b3ca288718c47ce983afdce4c996c00c641dd7416203cfca4a57f532d4185ce52fd34e4dee2605384f871641800e72d813ce3f1481d74e5f2fae55c06654dd6858aacc5ca674c297d05798d92c504159e4bd8ca85b3d7b012675c9695924becd76142d69a4daa6dd1abdf2b58b6360d34219c84b6dc65d10c7a777d79c442a4f1f1e638efc514c450d55c02426d8e0d8f5d01d08bc19c88c8f1675bee6dc4a2452a51b828bfc1a93b54b555bd67470c497e155d5e98d9b994687fbad6a5dd69fe86439998a2d5b2635b005c8f635c03b1691de4a7ff2e4f7ab90e11f0070ee1c14a575ea3f95cdbca0e5e5d3f710e0127bdc53ef07f6fca438144a4846aebfe51438601d77c59a2ef1012d78d29d50987356ebdab533590d10459b36d06a5c06da6bd50f87dcb02a7cbb480ae9a5314a62bd0857d367d97c2fde1a97cddf0eea043d0b47776e656511e39b34a9a6f073317e75da8458986694525b321c3ebf5fc6339fce0165334cc8f3ef5f0f9862c3075aff3ba7b2f5d0d9fa06644790442ef4aee760017497ef94a45e8e6d9d71b8da710e8f59f2e385e3013c75f66fb24fb6f9c947c08498f7b2f969e5c9cf51f4b4efb522ec70e16f486149d4861b846aea0f345eb91a62399084c1749840f1b401722f2fc881993ea8faab06bf7e72384393273efdc4037a0f8000b8f10ff130512229202a9fb458df1c85b117d80fd0c39284bd0419bfb690e8c5456901606f88c825031cfb97aef6a3d4f9595a558515edd6caac01d48e7c75bafd16ecd2d21be515f4a1ef15e4f06ad084aecb39fa2f8a6a4da7e47795890adf19f66a40533b605351006a001fdfdd0e592d34f708fa2f5cffccf3bc40298aa2ede260512b66eda86e62383404bb0baa1fd0e878ee04a5cebe82262da87809c802893410d903284046b211cee6eaa1092373fa928b0ee817993f12f8bd5d2887fe202d70f7f40beeac6634320ae96206d583d074a6176e1d97c7f50e41e7d5ac74e00c512cdae88ef5b56105ee9d1cbc7f59a09b52c6aeabc5748a9bcf03607bce7f70a0ebc880f3864ac072f277fdf41a82af5afdb0b0e450d664282915a121bc95bd11f2fda3d399b510c024c72eb4e6e9b0b824e59716ef845cd2b051ce32874544d2e65dfe7aa50844894f89e6881e36edae287720e08c504417b3a2c188d67887c2186830af6a1f0b6b226b207d7a67e223f573e16207d666ddebd8a6b56c5a3162ba1127fa415cff140639a445a795b6f56ad7af743956fb85f2d6c929e369dd828b4eb889b962490c2802014b49691354b66b0b1c650ba1b77d50b350ae247982abf9221c47e8ba68dc17cb4ef0a3a5e054c8a9cb2dc01672b91d3416a2f61ec263ea125dfbbed046cb0da2ac85b3f15b4d0f96ac909ab314475aab6221208211a68c3a432927982c75ee182a5ab04957ab5bbc15f20752870f386f10f6371da1ec775d749e36d187a7aced5a3124044d64ee13ffe85f6e3eb3fb87cb358f2f61fcae3e4f4780641d0740d4f482d9bfb696ac67a3039f22c9ecac9a7c37562991684051b6d5f13b1d33eba49fcda5d25f76a4af19b90b87cbdccf309b060fcbe1b2f7e7f78d39f0ab277f3fc68ff744074b41bf2e62d10efc3144f7816df8acc2036db16afe927597bb86bb38a4068083337e56bc0af52e720edd6a95dcaa12721f1ad9b964cfb625595405a85704540d50adbcb05efcfb8f1afe36d457d60ca0edbb1508916db3c87b0521e27e29f899ff3fc81dcadad204e63010ae10d30480160faa536c0cc78ce0bb92b44b1e34b57cec7b4649a63445235c632bf6f4d6922ca782936d81d3547eaa324c7de6208f1a28fe043655863c114d8af5466eefb1d496bcb4aab12a2eb66bc61a859cd3479008d36791b95e388f9d90ae5c5e95711db08f419af99aedf1b9e3e9c86e9bdd02b32fd78369098db8422adf35977e0048e331a920539d857c44f21c532d757fe775df9fe07f998a07e2813e2bbfe5502ffa41bdf751fc91d2e8cce7c3c7d0398539b2f0d828b1779386975fad13d8a097d0ef22dfae9412e4320d5262286cd71be1a02e2df906399f37aef7354425b180a794cfaf2abaab0c534c70778cbb353563fef433b3e69d89bba053e9783651af51df489d6f28282ce1a580e58d056d0331e7f4f144407d4c76e657eeb12c3221ba6077732dd4d2e1bc23439d45610f25b586a7fb525220c5e2d309be8fec02d549b025abfe85ac91a2cb1be909706d75b3572623241ad97a0c34598a658351b4ad044b5f3cc513461ecf116af2da68660c3ef33ab3c805268c8389fc5796a074cfe563171d7dab397b119ef878ad600f4f064a5ad913daee615f3030f00cd25fc0d0628dcb755f02c597955cbdc8b31ba2a0a8a46d5923dbe297c1322ef8c2a518cc2b7dd7833ae585ee566ba22ba5cc161611272d610e241d0ef5578b9e72c97fea86e6aa1ccab99d6a76c682c57a5be9da906e075ba6c96f1fcb3df863a13c7d4cc3e3c808cb30c43fe4f4428b24741b1d8dd928913657abec6e23c69d42241bca24f276c3b3b5396969d8eadddab62a0c0ec3f2342339a84609631e9712580919ca2d3e9047e46939bb1d5f652366f9588339fea8d57216ea78456b3bd0150f750358f2874e1dccfde515dad50084712a3005c9f4df95eee9c625ac2ee24028df8f7ca5cdf7cc70121aba42138b98f6d60bc4d1318933a97e6dbf1388003a1157697897ea441a8687947aacdaf8bdab497342a8fae51a1fc6183afdccf0d401c107bf658146603c3391b8d4e54b9c9c9a49b2399d78c292c1326474ab926bef60a0f310ded598c2901c99f6c8950f92f190ac7068858e69bf27d8fcdcb17c1b309e7269e3bb40af7f28bb74a1bbbccb520dd3d92694b6a62cec2160da426d93dd53c1238d5831c7a9b6103f08ea0e10836aa02953132e0d5ecf5eebb83022e35d4fe1e5465d7f37aebd12af5562003ab9a37d4b9ff6515378e4b2e746a184e9b4bf6c43dcd3360abbb0beb695b7e7a24eb8abef41032749bf058e6b1bf16e1fc7929c58a38e47ec78280b85245a1fa10888c2d3dd37e2412f76be934df0d85822f3acbcdcf4202284c827f6365c0760d20bf7c01d8cc3a11e2d73a58152e79a5752b9f65f606a1425cbbf7020bde70fad29e03225d365cd522411d7ff61a58cbf5bd8daa5296f0f1040aa273dfb5ecc17b68429a50f24fa5967d042f8b15f71ff6f5a400c682ee9661f805275954f34111e57174b056939bf7c0b4c2b61882386d2321f72379ea1bb32f6606f9db2656871b62c5c6372c86c9e5860c2a1c137fc46aeb376e08cebbb8db86bf3a5c160c9c7566fcdd6ce4395b0e05fd271743491fcfee6df3b1d3aca6670e6818d232d99acd0f83a5260849c2fc89a87b1c84b54bd1731b46cbb0da8a21414562605851e71126711752f6c8fb3010484708c231d16b54b908d4cb38f71b726e67e5997f4fe7196afe7a4c4141a58563e726132dc013e4f27d9c77ffafbffb322e6d1e2bcae650983f1127ca6b52905c3810c146487f59612af2db6e28717dd16db0ea2cf2cab6d10d8162b8349f2f1b172af93ab929cc0737114d1361d0507925d8ec6756e8702a76ffdd97b0ba9497910d2a0cc76d22b83a746ed38d0d31707031b201589c264ee655a63436134d4b6420d3a708a18db7c4df6fbd7ff923097c7adaa5c86d377eb9b0527f05cfa9b4331765e44d8b09957c2db2bf59d931309cbdab6d0b77d19cf3e57902ddd633988610ddf1623a93d24246d2d1f9476c453ab85e59c8bc88d373d60505a1526b3a8e12442d809a96ea9f559a2c5edd3e6d2e524543ea7d767995b86081b8083432f42d518dbe536f7928ac6df374010fa9fd3e10349c03d0fab069348b855824eddb08891ea9f552b3edc4758e3b20e9966f81550eaefe070ac11f635c2e9f0cce9d132959023fb25126c35163c45377565774d9177942cdab7d792c1bd0317cac4d29f75012ccb71b6bd95e448035ea64e06dc45f6fb96974994d90590792b3d4aa069a4389b22a1f6d2e516b2514a10bbcc32fb53114ab94ef05b6e6c1ae0597a9060b5eb9d350e35a6d256691a81cadb3ffd0f99997b00f8cdb0002a52636047402f2ae66807114157d6ec226ba8819c93a7d76ebe3753cdcdd6e47c1ef7575092d6be0967f5fb500068b3afcb1aa71c821920677ad6daf0d2a60289a4a9f68cd1acd4ba4c0bc8c00ca7b5d25530136b9f621144aa5db90061f12e9fe480cc3fc01ab36a65e96fb0b2194ff4af88deb43b9da368dc04f43dcf7c42b0bc74e3cb10a624f029276b54e4338fcfc6fe57735c96aa900166c9be5e34ccbc737ae22922e0d217d7f743c9b35c1f86e610ed9256a20b9322bf9f1c96ae5f48c50a9fc730ed2c07ac542f26a55b9a9e3bcb872cb543a9f1501fad8a443cfc123a2a35f86074c26017289858099d6be8dbc29e9ddd64a4d6ecb2770286c95b4aeaa069f762bca1d5cf37ab635ab0ed86e1b56fdd78a6f0b85a1d3920dee63f2c145b4cccd00558ea7af9cd81d704d7dfef60e181e0a22cfb5de252cd2d021900f486384d70c33edee2401628b860e4cf83794e727814b02f9cca4b24b16e0ab6fdcc2407405121cc811aef572f01b84a4f18fc69554cac4bfa62021e3a734d5757dd367f61a8a331fc739039f25cdcaa8fc20e095eb48398cb41c54d16870c64d9a3942a41e792eb5cfee91b2ef907cd3504a0949ef79818035055ada4bc2e82cf6dc1d2920e9bb9bbc1fc6979ec3cf81edfd0ea2fed6d8a13764c15608ad2751f17f4dff289ddf03439d1e10b46b17f67eb49ffac42a472bb52d8e667172384e77489e9a20bed9a6ef2da21f61e11bded1936b0d3c9982218b6f863ac0b7c863a5ceb5e12e17c8776d9feefa29417e89a8a73de18d171a969fdaa6ebab99e5ad5a48dca10872f2e22fa1211b03f997548825679e39c8284ec67d3ca9721b7127e9c4f09f296ec17f0739193e1387d9ff60ae00341c4a95421c7a32325f7f8e07cacc739c04839e120584f1112d5081a18afd86144c4cde71c8f3f01c8f75b4d4b65df1ea2dbb066253b8680c95982b696cd740e5e52eecf1592d0927437f154082c699e927495099cf0a1aa1fe61e99f0d22ea1f09a34bd67a5b7e4f0b732b58dd99321e226d5254bc869dcd2869e1c507fb85cacc314fa185632174c227a0c034905efe076a3ebe8e89166b44faf0fbc8ddaa51827daee10f01a531af86145a95d07d7d135f07ad84cacfbeaf311d011fcc2f042e73185564ee4c2c1d60d8137fe5e9e619e33d18ad6953607b1fdef6025e805c147f0691a18140d9e41ab1d0ac767dae2f338160a9461b717175043921eeefaabd6925a880099f64351b1d0d45aa3f78064302899896f359327778ae58bf985f6ce7b9b82bce9031a7f7f0033273b2f81bcb743f5c0bf36e2349602ceeb05cc703a379148e35eebc587855b241b3335d03f41390b89d659db3ffaa9f4f9e9414dbb5e8320dabf489ec437c83caf352151bbb01f6f3dcb4757021a56e2cbe4f09680f5189562a5ee9b40389c7c77ce87409eb4e0ffb7af1d4e39f8b7368c5df3f512ca6e287566a50d5d1f4afab3fb044101669bfe0b83df64aaec0b76f24c4068fce7e79a2685fd4e2ab3296054cc5b304f145c2e70d56b243636f59de8d4beedb4f5c4fb5200ae652f8eec2e7b0a803031318771bc2ebfae78ea87de6fc1c17eac62df401290eaac9c5ee575f709dbf0e0ef92321f8b8fc8e525bf14f542353c2ade42cfca797d692a88f812bd957c2152b5c02c2617ef8575c5a2b45cfda1355ef5733ffed833391a6453f7b485f860152dbff3479db0bf158ba8bf6f6aee49a3fddd5cd64e878b3ed039afa85cec9128046039f3258df7baf50742cef8cbf3d2bfecca49069acac0fc51993f8a6de12d65a178b235d8098afdf38634722083de0427a5035ac89f88d05040715304719ecc82d1167be9fd2f5dc6b79d3d4ef6dd5c3b91ece5093d63e22ddef65d04d07f5f45127cd0842feedad74528ead33180a346018a8bc7c8bf8adc1321af88b1565c2b7f68a2b4ca792e79b5c2b758bae804ca7e694db15ba30f9961f2d34420921d7c6e24400c4d80f8c5cbb4d6b7f34cae147d11784d243856069ae6a3a8a287c79bd240f03385052332401e3458e9c06728c8106c50bbba5492640364a532dedf4a5ec085be851345f6f459cc1f832ea691a0841abb0e7263dbc50c50e5b16f281740b43f28a57193f3d6291f2a2839f8ba4683a673620039f173fc9e735158457d9846af4aff3d6813f277a4c576d37dfc1138277bcee2fcbf114a6bc932f4885107ec7abdf7f150470ffae4c7096b5edfda9ff0fa0082a0845095feb7527bb9a052e71584e3ccba744bc402eed96043080363ce972acbca69c93e8062516af45cb997ccc35f0b799ec0e69d2ef8ba63b7c7848bfd06b21d6d05015c2ef2183bbe75a867cb07ef013ddb6d298800857c9d74e1f33608ff01727a5a1430727c80d81eaab6ae71a95cd43e2337b8c55fe6fb7bdde3b481489d12e6fadfd610fb1c454798508e30c2d930651439d2595b6738f7f26d78429bd6fd5360b991e1d504a7fd02652285618e8730a71c554d8f8003a20c00ab345f97a6816f501390c8759a8c90201ab4bf722a81b42d0d1bd0fd230f5ab4a0ce4c570cbd38b1886184741851cad04188d83e09532f48cfc030e826869f32cecafaab4bbb31fe03c1640c4cac52e742d6db3bdab5d9563121244296570e3cb47463945747c5663aa01dc9d56b9124226898321995ed5489b839591d4aac01c5a02eb0272e6fa5801026deafe70594934c9b230cd041b6092160f7d2dddb1c0283c2f1d672ae3231b1316a6777cb0810a2d818fe75ae3a70c9d64a2cb03e1755adfda2c37e3ba424b2b3b6ed4c45a0d2ce11e973b1b161eb61d6b437e0c0ba5501c72cf8de0cc169f1545680b131829beaf09b923f8775f819d30090316c4bd8e7e4b802c1ae146e41139b32151ebe05f27f3f83f12f2cf9525e564fbb2163e9b7303400470beeae6139b673e6ab1f0152dc7da29a79e0f3d8fbad137d8ee6a0b1f0af395d60cb0852bf111905c800fec52ce6b816debd49131758f803a4d60ff09d1e06d4003067e0ed2f36e7eadbd2f1b837490c7b6342ac11d2b3ac94a8c4b98035a86e816a2880a087bef979652f90348634308fef0aa5e72e962f2b5e1faf86405f842a73a171a03ec6e4ed46f3849000ea2f298e595be402d2ad662f13b224dfe4c03a90e192fe0a85706283ed22b449c0caae8ce834b922145c6f77147a5bb73541468ed8813dadd07041301fdc64dbd1ef953064e26236d5706c9462f2d2d48cae1be10fd15957bf23b673dd12f57a65cb7644c0a42193750de064600211ac4d9cc7dbda0262ad4bd6f70c92111a710bc2c6b22025efa2c4ccb5639dfc4390caea952c7941c4de1161037316eee15cd62e1067c42b1746d109916f820d053d3d912d46749301c2c859ea0a17180b70f3e16f01fea1efce6e5f596b8d1594ac9cc4b3d39441909f0d9264c953828a692da42f0ffd8a3abca013c4f67dc62c4480f17f02cd321a1284a7fe377403481fe167948f933e0b129802d68fbdbc728a41e47a1875f2e6a281358b8f6af8dbe7e185a0410e6245d83e2c8d37cb33f95df681ec9863f2102c478b4f6ceb94ed38ad6d8b08748beb884e9a3bca3b7417bc9dde5dabb662c18a79571cd755725b97604f54a7f4194ff6e5d9523cb56aedfe3ea9358c83327fef2f9792c9bc886e820da55c5a068bea4a87ddccc9596bcbd49ab633e9e15297772725d720847c12a209fb09bc66f993bb384722e32dc0b5d07dd8f800a5a237aac6c3170164de24ef3dead149a1f483cba41eb87cd4770f671a7a15030850f53f0af9c459fc791accaf6bea15317139bc3de6742e30b9f0aecba3e9316790904adcab26af8152c5ccbb01a592a5f31cd12c7285ab2d9a8f667c75c59a13c0eaa7da2b0cd420ce75300960085d7c53953c1541ae841ff0b3fd381c15571be2594f7cdf789e144b44ed3fc65b0f8d03bc941a6e09c7bba4ee7871dfa2f93691c430dec4741ef02853a77150cd85940dec648bcf24cb841c934a3d3c1eb7d2104132ae163fdfda7ce159d030470267670b4213cb087cd230bd74a184c2b8aee00fd773b68756099c9936df18174b9c8dc72c06e1a776c036e73e00f81656f93019db89db0b4cf43491baf9f370df67c9502bff0c9a0dc42542fa2cc749dd5ba1c0fb4c09d6c27663898d02fbcb6aba2eb7b0ee628adce74d20ccf1f723afaa615492ff69fd3ac40e8c4879cf4a423ee57d93c68d98a99f5f3422761a47edb421ac82b95cb0536382339970d81463df498a87b95353161f1baee908a15ba6ca51cd3cc2d250cf5bd9e1d5d703dce0354952486156f91875ab702ac1551606dba03b02b8ef1e9ba46a5df64d50b37583726fb6ce08809954d8b5246db8d7006821e99e9ab40b7f3ab1d791051176b4fed2e5b6dcbb21526e3ac32d13eea9a4a662135133711f8944b048ddd428ddd1601ed179cbc75a23c3bb76b119e8e60b34e001e78ce4df39c5dccf97d2e2d7093f53e1f759c10b30830aff74a01cb3b2eee1f226e59494fd0077c20a4a27622614e7ea5ce0cad2f5779eccf4b2bbfa9f52e07f14e5dba3ea4fd37ea76fa7c67dd4b84cf527e5588dde3ffee6592d4247cec1a194be60286e1c890c87ad60b92da52470602b0d8e0c597c680715e755f3ba72d8bdbde76ef85be07d2a24a78d20fddb5c4dbb9edbda20ccb8800c1fdd4eb0c0cbc4d41e55092e63aaab3c0c71976b3e5bd1c6a67aba98bae8a1a761f9b9bba1781b296e287ac707dc6d891a2b1f7114c2da71a2b062bf7bd23f2f0f6bbfb852aa5dc04f3621e96fa70827b725a71391fc2e40c46935389427f7b1a32798da10fd68ffc63bb5c6df6e8f9b0d1e63867480b79199dc4d50583bc05924095bb1e2530f15d855b42bedce0409226278d6da41dd615d5f344d11bb97da1b334bc63075e4da168cff588a7f4579862f41dd208951bbae69f8c5dcc4e9d888872ad4c2cedabc590d45fee9a100c427e141ce13e017b76a914daad7991837326d4fe9d290f6aff64c65770f555e1a8fb42c4ef18fc478928bf0cf4b62ac88ad94f9fc20479af312cc12d64dc4ed8d759f74eaf1d10aad3c42b890413c1c14369061cf00b6b0f47b04d4e412e93de82ddf9ed3f978d69df1dbc729095996876565ec5012fc626f51da693706dabb5d2185ee527813852c87d4427defc889f198eae96be263f12b1a9ac40b5373dd4e4f03d553e184e3dd44dceffd2f7f888be2ff1ceae0d69cd3419309a9822803f9c09627ea4f0f0dfd2d60758cc4743ae5dd1290fe5090574e3a96452fa4f281c5b345f42cc074ad48c4d3f11220dca17719c39853b198fb754945131e2a1ba20226f74ae062f7b96e6af5427a172ac88c88f3eec800adbec45062e744ea1a638762d1e98bb064da9b8f88803819dcd6ac4b56329451ae38c018f8afcc5c62562eaf23acc405f94d2ac40d4d63737af6b81788ddc2425a0d0893828b3e7cf3c9de8bfcd4bf495ca8618240f0e9e4c9fff0f6dd58c120c503b5d64ff4d6f6a1bcc490c6246f05db79eb3af70f2a8b59379361b40c543240dcfba05620edc91929316b6d262baf9fb9e8526c1f5743e850b1132295a7f1cd03facadc9b0e7a753325f0c0af9f0cfd2fe5b687bad396ad7c0cf1351cc640efba0cd4c71891569c8d46f7f583c05a8a7b9883b99cf572fb83377bbb047841636dc1e48beb49f9335be996951d94934ed7f8658e55dc41cb8d0300b113dda162902194fa5ad9f212b8d622f48ff61b522ab78cad8d7ec4d23150cb6120cd02f8e1ca3415d6e1c7ae644b8e0f9e0bbc0fafba1de695d1e8635f06ada8a5c6b1d5b82d43a9d2f0d42da1fd86b48b25064100e1d346c0cd77f004cf79e03723f16c690c7418c70c9fc35f8afbe93f38aa54770b436587efd5a4167b52048dd8718653e5fce0c5c6a14f19dd5d0b90f84dcd1e9022628ddc7b1314d4bc4a936042f329d4084842cfadcaa98aa562cd02b1d464fcae4327b0b80adfd87d076fb27089be1f44a6476968af249b58312b7c4f2f11e0f033b56c85916c81f32b62298299e2a184209c40e340ea9235094d85434ebd17cb60a61e95ca95848619f1a0d05c6c0b4b805b9bc6e006c6843bfc59f51a87fefe9bb9f379b4719af48c0acca161c57a100d3856cfac2b3d801a4033a8bdd77770db7bbb0d53252ff3940ccd52dcda94ac64a2e966c5f5e1dbee126207f3fdd404074124f4d4169fec41b56e01fe2b1b0acfb60187f148af8db28ad2214229295c19c74cd10c7ca2f02d5c986160e273a78066e904880634c62e3a80ccd4c5785bf0c00bd3f27a5a592e083bb0a4139c5c17cbcc847212e03e83de72ac072b2355e4cde44662929b2f3d4e20e0e7f16e0082eb38660ae1512e23d8a6b20dab856ea1d2b7dfb1a8ee87a7cf0d72305c3ea227371f7ee2dda9352f9e6941953ef0fe6ec1bd416b3b98864fb2d430918c29f4256eb4bafaf82dc40c39736bdde310cc5507a013d8d433a382f59602d23960d38ea7e0217f8a673467846ea4f9a84e8de250a095869297cdc9fa79503520a3b7db5ad5a404ab201893d600e468c0bf84b482436b710d19ad4b124830d7653e2d5c6d5867f565c954f1d90a59fa668744768ef15dd9b16483be84ac011139ddf44b07e130da6d97a5f2720bfdcf1e16afaffe48bb1d4e63644dbaa020d8b9780da24b14a4a540eadc55be636ad340399a5d9bef416d4fb967b88b668071b4687ce78de88853ff667c68a9bfc8b9bf412f4da0c49f31c06cf126491271acb75eaf17b879cd7cd4b8cda541156af0d78a2b8e6a6fee19b7835967a73f709e1d25707dd532347adbad1945c2f1384a51119ee2037d202b15db337c0dcdf0225353757fae8a5513f8af52b206f7db1cf5d3779108a364fa991048b0d6822075e43067ccd1fe4a0b0eb42de44417dc5a4c8a626ec5762803c787e31099de90f8a3e939d657e2dcc777afe861a97d6fe634057aa990fe02502a4db0a8aad50069e2023481517b45dcb120031ce3afb4a4b59e65448fff6524193f875dcb5f800034884bea329d5a05467782e63bdcb771aa3646a9c16725a6729686571d6c21280daa6536041cd2efd5bb61731c0fe649a7f67925750ec1584c367e25b105006edc2edd1109932c2a5fa19780ee0aaefaec26c1b1bba6f03805f49203aa96a1adc84a72ed10e85bdd41c4ef6eeb6121d6ac2030e128acbe0d9ca0d945b6ff12dbf7bb56ae036ad1f67ddbbd4ee392c4ad0d82aad862f1a506d67c509ed3a6715c78ec4d365495dc3ce67c1cebe5c59c020f815c414f364cae2abff852de75a1b4cecb389e0dba45d6ab7b09aaf2ad4e0995b7511ca7d2c86711456f999715c133cd4f1f24e7b2efb72bff198d6fcf5f6150fb05c3980f495f21ed2f3fe6c691fd18c7587a449ec238fc08f6068fa62ded2791a8790c44a2730c85d698a836d15ac75779705a669917698ab8731e7e2828a9ad2f6ed2b6499efc7b5d4475b9e3046e1ce7e47f90dc7897d1c8cf8cc2ce1f7afce819acbad506159102518bcde07f7b1eb69697e4d62abf722b3a5a62eec48b1e7dc4838ce42add297b44301931caad76511238d14ffba2c40fd4895e17b48b25bf65f084507ea468394a88ab40b7b3838e5976a3aef7ef1e94e8307f5b7ac3199c5e99822ded5b97132e65efd188525f08224c9e113c57c42cd134f074f7e67da2aa8aac66bdf63214bc9b4b81a30952d070582338aa93df00e9828c4fd335f6979eafe3eb876137e5ceb10cf2878341b8e917ae08bff7b99db8ff9df549bf6560f1d0ccef46460a28015cc5624d5c76472e43ecaa3fe4aaf4a02e76d857d23412e9d9969cbaa1e0a06cdc38d0d2d636e89eaaacc9ff3caf0c0de995b94a6b57ba97cac80e9d5da84a019c28f14a2d69019c4585958c8a5278c3606dc67e2b163da7032d009238ad50fb839bb17325122f53a24d6c5cadedb432a86c44b72e76fcbc22bed4683b72601255f150f5270ab8f6fa8e91f37868a974e5455c910da65a696a049b48759ef8b8d8c8c0def74eb6fb4e2dc6c137c6a36c96f39a93ac5cc1056826d175afb0d51032246202024b45c271cea83e33f7e09341955c8a98a8ebbfe75e49ee0954d77f516761ab29617285229cd63e69d5e99340d7258e34cef18214db793e5ce3b4e52e9ed10020fd8edf20804511f6131b61e635d65217767f2a23f1f3bf749360b2bca980d378eaad5e81d77c35aa13091c34d277ea96923439e492b155cab5ff2f837f4275fea61bd1fc9852a37ba80d70d2cbc9d2292181af2031a7da928b89e15ab3d10889612d46d51193ef2cfe2f1e62a1c43616a9be53d79724cb2856bf90043f21a5647a163c0a6d1c48389d220b6743cdb93549dff1176aa2ca291f70d5c72ec166ede938affc4f25060ec7a3e81d9d7e3b02a1be7a72bef073a837a3026afc50bd904ee521fd783b3417c7a4f0d5be3cc5f76d1b05ace0910757d07298a20122ed1cf091acb21b4a2ace4eccd1b0947713d3575b1b29748159d4887226515731da59b017a4caa7974ec4d4ef17afe1c3fa84729b748cd47aaa90e61ec5c659529d18ef5eae439074b52870cb9f750ef2bb771a661c4c9d2e2ac44dbac91622b1abbd0ad7e463c191cc43986b2d3195b328aeaf39433dc5f31e7f63ac73b48be19f47adbd0cb1ea0720f7e28a87d66741ebc90476e04fee89b5f5659119367201e4e0e286842347d1db669efc628ab85277a354548287eae970eacda4c86ae0a027e640d841fce04547f4ac6a393e1f9f64299f4f1394ce0f4fd98d364e71c521d91202bc6ba15e79c1891129934318ddfe51695bb272b800cbc0773097cf26822081bb87ffe6b0e7fbb6a807c15bf2a4ef06052bd6c55d5d9e920a811b1cb8e202c4127db9517ff1cad33157c04539cbac43c0e39165f42eb7531ac7dee531d13d1308fb42e3b6c0c1fb9dc5b2acceb547de88d0f139faa991983baa6b888562162023047ed05831ca70058f414d7d753922fef9d27e81c311402349ea70d73143172bcb74630353ea7349d75c657d06288a9e826a16a36de8b44785a1c24ed12a47a1d2425dbed1420dee057362c84441482267cb462af7ca019066135bb4b118d5b58da817f22191e3d5d0c359553343d702d713e6364cf2fed40fc721d0a2d7e7062a996df48de4de5e54b7bebbc0e5c3c41dc120b64a705ccdbd83e094621ac05603b617906784043d5ca23d56d49bacbd9089a5c2eab6e40d11fe6b3e809be912b8081ef7b287ceaa25347e5888fb3095776b2871919175d07e40bb959270eb5beacc46e4384d706fde47ed86f38da4fea602460acc16c19ebf0b7ed982c3b60ba120ad629bae44316357b0ae7fe4a25c9aca18dd066ee69ef20d72be101f217e20a5662e290a1076ee191845e8f3e476a5f68cf1ea9007362fcf2f5121274670af1a6bd30f2842423d6e636c1a04a6cbee3ebf0c3d4dbea4f847f0dc329ae94815dedbafec1fe56122b3e35cdf1e10cba7b0a80f8b19b2270d09ec06c2f65851705f823a2a8dc83814f2e0231f59c217dbaad056a4efae8dd4315ea942d5f110773a9941b703783e655bde743d2ee06835664958ae31845d18b0371550901fee4b3e26309acb237167b1ead029b44d59e9cdd369f1649ceb23433dd872b19a7853b42615608ffc2eb820e6e9901461d651e4967793e4373f51783dba516056eeceebfe6d7afaca98a04d1784cec78986404188719948e9d32a1b5e654142757efe4c57ff15668d0d9abc1de78220b94a618ef1df1b345af9125f01bd8203d345d94980cb5a22b303728f4049c32807f5c701bbc58253ffc035b437220226b4cfbc27f036431d10829796014ebd0e287c9ce15161ae4c838131f5feaca2ee73166d205a6970b37dcf993e323b990f4720c3976ffbfa65babe826a23d693049edea2862552f0b6fb7e7a6c0df36815b7621f0eb09003bc28805761b59a3251e29c71102318619f4665c81f0b0f01439a369fd81a0ba8934de048d6f05a90fe72a80efabf623250de4656d2b49b34703f22fce430bdcaf841932c23edf3c1e395cd3afd9e31dc45268b3d8d518405edcdae2e5127f75f4f1d071639dacd02b6539b604491e1ed0271abb3e8f4cb60a4ed51c89db7cb61b907bc0a4713318305d7e977b065170b83143e5e945b1f9dfc45c027aca943ed709229edba590a81754d0a0611ea7dfc8ae3ea42dd15d522c6e65de1a8296af0296e263fcbdfa5322c086e49f822775745135c0b43a1dd896a731ec0247a244dbdb060070fd43c80634d8215e34624e525dafb177098177960967a4abf80782faf60360b202b8100040062c210f03a0fc10703d3b750e627153d50b9b3e16fc8ae5d2e08acd040928d2e6576a68d286d6774d0ff7b6db1cb5e58265264e24be08a0eae4ca76d273288f10673730dfebe11e2befaeb03ba5e72597a59c915d003d18aa34d5950680024989a54f9d6d6a541f3e7d60fa0ecc68784ef163e406439337abbf85deb3ad01cba7d0ff49dbb9565382b262b5a4661f3486b68877a2945982767ea3b402252bbb3ef68325afecff3d4be34972c067d8c4ba2b6195c4d0899f472e4d701d7309364fc161088707597dab9b4e23e035dd31ecaa9c00a4229cb950dcd8d72ec72c49072855d09bb379dd1a26f5a316465462607504df19f33ce43f7edd01478b0fc070127b3c98c266e2b9dad1231d6761ce937390edb97f1ee1eb938c001c92185593a93102f4142f3956e828e294e5103067e94ba9e033a8448bcf50e81ad406e62ce1981b07f15bbdd6a024f37ace51cb643e1d9559f64e17febcc0a28eef11e1b5a9edfd1d567f664e7eb48fb2aaf4368c91b307d49aa941258b7b2dd3ac25e8160ef85c2211e3fa7b144e0374aadaaa5cea91335d42aa91ae6780bbd77c038287f0e791c03c838aa98b5975f7fd353f0e2193d53a099d1209deb19ec1f81b0b1d36e846d92be940e78b7f0fe26292a94478d1a7f771d2c09c958d75f12d2c189ccfcf630b81d46a0755dc9658ba688bbcdbd2139eb674ebbbeb3bc3804d100c26f307b397c323f3b966921247ef826da989832360b5aae2ef07617fd7190db3192f830f00d30df3d0edd35822a8d3aac452d66fe6a73c9d8e7c841912611612ed3e13004f65095d827213733de4df5af2567b72e635ecda21b47de504c6000123a746531a5448e62ced389ae0be8a152fddf0353268d91013d665d028ef1a0ca319965ed59ca2dd8ba695475c1458bd0c6d0b1e003f6544cf4999e61cc80f3d99ed344a3f41b3d2a59556222b626d7cd5f5276470061de5b8e42122cd3c11cdac6cc5c864fb57d3ad464dc747d3680e8d9979c0412d5364f5d1095be8ba0f41f9efcfd6b4800dc56e3780de5cf007d1226709d5e86854df42cb74fd2ed10a8eb938447db7a919944ff45db06178d4cb3c5bd4bb00163c3815e43756bb0b1684e374ab4a4f4eff3fbca81685b4b3291350cacdb83ba997995b4c8951160b0fc25c171736c6d841e9fb12b1cdd1862ce7e42c5fc988bd59fc7c861147284726aa0011f75ef1e00b0797cd43e3f3eee7f0f9fac99a0cb3bf7c243c0b0f93ea297e2f07863194a41338a0df71ea24cd022874905dab115bab18f67e8d03e36c21fd77b5dc3b2d3eb4f20dc3a7644806f3f650bd81a2b388364f851ceea998cc26bd4f788c51b11b461552fe04f0fc04862b0b4e332e16760ddaf949ddc37230131da9e5fffb3e0ca43ef8cbd285dc17d4e3b5f57e9ebf0ef0cf042195d293ad1e582ed66dcd46261d8ff912d3a03aade9c38ea04ad508f1fa9b3c7a37d15b0d11484b07588ab631b12debfbe17a19b2cfa60904bf2fb343335d736f571b37a90392feb822ed2bcce6645094315c2da8259ce850fefd383f4687c3d3301304042ff7dade53676efde6f0357bfdaa3fb1ac69d59bc540f086858937df8e057abc24366b479f5a6884496d8f4603115750f46fda08aafc782329c5897f3f967e1b1c68a5fb8f108ae6d4c374a35d7f968a17826b50547cb7f01b49f26570b54bb8239b893948b67c05092184c40a1d25b19383d162b6c6aebac3c5eb027d4b71c302ea317bd3322a81957eb485dad37ae0b6c6ac49cffc306c1d804c166ed99bf10dd791f5a7c6ae7c4e03785ca3b4863ee2d4b6a0fb5b87982aca8d452a64dcd910caf324369143657d8a9b4a9e6f7a197ad2736db6c659eb67fa24b56a2586bd15c4384151a4b792c14e08605d2cee3e5004ab99b27c3ac3f0d49b52eb824e6d291860bd569ab1d271bc7f2690778e6b8dbf8ef7e72af7cd0e7fcc36b2e4ca4f26f8daf41493f9a0386dab4dbf2955098569d54f93253eec9e1b3ce36ecbbe7e1c47a061b978fc2406764c3d6ced78696bc180548b1bd69da4e88aab8d92b8c101009962c5593ad2e9d9e52a5addae9118c9c0401960f6710f15d6795a07e282199a6cad1a8ccde546a45cee01a4325cd0d4dfac3a475cfb05f07a2345411cc626f931b54418fe143e0286c979ce753a1dc28e0b3b52038955dae62d67237c2f231b4daadc03da7917a2395bc9d62c40a97feda0b577571692435fab0a7244c801f4b2885b157b3a68907faca1692fff6c92e584a7b2b36649ff0203682cfb772344d3d9be4d8cece43cb852cc154faf0b9991019f4d5e4a800860bcf9ae664408c9bdfdb8706a1e6f9030b4d3971183ab606f04b827498e80c0dae0f2f871691d8cce725f69b36867e35c89f52e51d553bfeafc0453bf9c291cd2fc89d7109816263b135c3975f97abae147c22b3b0bef9ad66f77ff1e199ad2e0004d9956e3288822ab010279e48a9efce2b928de39162d40bacb763da107d84f706cfae1d40851d1b8cf0ee90959685c75b3f068c1e0d6730de245c4479a4991333c14721a07bf4ec83c51688e4e1d2ec7e446369872360d36ab8f3b2b03336da42a46cae625ae35c9d629798fe22a7aae57b5134b95a167356494e7f0d62d54c98ac21d6c15c04285f0102ffdc7c46135daffa8748fc6297f36fca8fa43031b3aee0420700dd857d038ed20d55a4ecca00534bfe0db581a02211decaaef8092d4031e0fb62b40b7687236e25fc7b71dae3cb16c4c05f7eec00634518ccc983a71229a4249284aea31344530532da3eb9298bdfab2ec96a299124925b43bfbd5960f8e1c821a232d81121cd91060bab67b57e258ab47eca50f2629d9c3e4901288375c985c21ab78c9d6e59472f124f48484c019d7456319dcea4755572594f9c12204b9bb159213246f88d780f03c0399b7443b76996ec27f31de6028dff43207057b27561f3d8dcb5b969b9d546cfecc37da2c6e4d1bace5b13d062d6f868332cd0788cc2c2eaaad249c49b0996d4fabbdf07e6f677776cc619f3ea946bf09be1254255716bd03e4555977876bd80ee8d713b376826cd53f4e46268fdcd99550a92ff0dc2e57a2bf1249bf2ff27dbabcec5df473c8fc9103ab42f978548e1e55b09c3efd29fe7f3a167ce11ada86e9a63172e2bbf98b9a37012d6c27954a2b2c42c5d7991671bfc66940353a8f263dbd1685648cd4b390a70f5eb764c60b6bf20d92b8a70a8a0a282b7ed6bcfdf9ba315743de11d24475036e02f5ac7060d39678f72c4f180f494ebd040b3d75ec39185574bd5077fc7513dc328975943554bb875791f212a1f5413b9a05b3cba41dbde376ffc7003dd6cfce81b2b13e1d0b61d434bb6e1802808d98a171bfc96aac97dde1b1393332ed00434fe971c4b5f1d6a4b34dba0e4d17908cf40a257408e5b45bc4e35c1b9b650380a130fecc072b60d29c6c57305db624cf33e1d381236a6401ebd0ae9330f2b1673af5e242c2a8dee781d17507cb103b935ca7a79e97dc2ce2269237854f1a31922c688955fb5f1c01610fcd2b586b09ee55e62d4dac5f29e5896f2fcf23336d19b7e4e3776e308da571c57b0879fc2112c0fc7a1065dc3a247f0558cdbe299d0ceac4deb7bfee575119b5e72520f4719a77becd31a4b236071078f5a63598e719c04ae673a0c348cde3c3e80813552d08e16e8c20ec97b56e1ebddf18931c478c4f5f8e03eca688ec2276610f35a9f625ea2b80eb549f0677e4f6dc1ba7e3481ea9c38c3155ee5580c965ca2a6b41b6ab98c490a0e7a6ce9828ba1ff48e36817dccaf10081a6ef0175f7e032b62467fc9e080c33b2a7e060001fc6053c64f29751275c22dc6ec1e19c386601b3524f822a589e6aab0f995dbe1a44847e6772973cada452cdaa73d7cf0b177095383a99aea769208e5f445136dffc17f0481800f5dcaf3093e1ba098f4020d1e3a65a02497a07accc52b95d2e6237c980779fed07b118ba5284a09aaf89dc61bf9d01b8c260cee9a34932d55583276a66812f09d19807e989191fedbbc658f0e6124eba3140ff27b683c176c84ea6000bb7912e56e8ea7efbff6b33bc800a9112b5d5ca8a03a0bd6b9c839f2a9525e2907fc23f6dea4ed7a1a1cc698c6f0d21931e5cf75d168a76a9554b8b0727a574323bf5dcde4321406e5d3d9ad2570f60ece4aabd7dc7c256fdf12892cb60ea670d9631d236aca55d55cb36d1022c495142df6436bea36e285a374567fa67ec3a3125f8c939b415bc814796ae27a60d310753986ec7aaec72e16f7c46a50d11ef39de3e007abf55422705b0e072404d919bb25e88768061eae077709adecbce1cacc7da7da989221864c30094e97796b1631f6d3848d70cb836daa57cc70a9ee3ed03af312a98cfb4d80b785200593000b6c18cf8b0c5f516b0a56ad129b9a0f8dc1bdfbd055d7cff3c1df887ce2c2d01078d80ef6a5eb2a9643c34e3ff20fec3927d7d091bdd14e0029ebcf046b20cd0684f2f7ae3309f68a7d15e855756e5cdf8ba565966bc8c1686ef9fc1353f3ca2602a7fc94e2866f941fe1eeda28b1afef5ca1348d394797bd5b71ef8c568c1a240dbb341e7390272c7226a6cb466bcb8f01674142c929e5534d54706d1c35c31e24bded49937116c9e055ddb3dc0f21d1b5cad59d9eee599a436139f3fbb2cb0c0cd26094b7adc2130615ae2b8dab3e42cd6c87f53b568edd98103f84bb7fc22b57d9976b856f28f6407e4285045b71a3d6694326185119c99e4b85b5c913ca0041fba1d88d55d6ed9f77008e8fc56c079f194c9905dd6b7c7147340a98477c2a2df9d987caf298a353f84dab02aa92aa431f412bfc67a808ea25443c314ea102ee97eb9ba4c24692f6231f9637af986e5a7890378afd900842cdabd1a067e70754f3e0718a469b30906ab78b06b09b0c44c2318e1017306d6275a6dfdb32590041c4fdeefbd40f2bc95f164d8d3bd3b3e50a64b373162ed7858a541ab3ad912d270c1d0e591a950881e649c7f3aa05ae72c9f9fc4a66810c1dd2ac8a5f9b721f49c3592af1b6b084e5bb183379432f0c66dd34d52d64d9e4e834ba85cb53b02adb350e17a5f8d2d7b65e5f4d529fe7518c1635365e4a0abbfb40c623ffd0c919e7e1006cf5bdf813e9ebede3f91df6a18cb0df989763ff80c8e79e823f9cae2f2386778d0cdc278c81a42f3b9785e36c7cf39a6775b0b8b57415e061973e5e28aa6de763a3d293f151f2715b3969c6ac53982b6e654d5fa1b08dd41ff269710071990658c360b935799e4697052709f0880a39f871828d50a0024984b93b6e24850085c3aae01d5b69ef967723bf6cf47e236469d87b21eaea1e06660627e3113cc505aed3d797f24b0c713af817ea379d13821ea75eb58c4de9265758322f2e7baa311fe5eef123b89ddf9951088226f88965eb712f68b7e320a58711f8dd22512c550e964d88d48ef15a7c72b57ce2171272e4b895d18ca20e04e727b64722a3263de09a5d4ab6e49c077b97e670709168b021f164c0958efe8ff59323fe08c957e4ab62be3feb20759c14b8cc003e2aa0b5e6b6d312a9aa0170636658f41514e9c648eae5d8576d47edca5926a81eb93f5f274099eb19611417f566a0fb032b6649a3be14bb9a6110613c604c3f480b209274a3f8cd7167e991c129df4608873cbee82356a6e05c95e88f96b7ae3dad658ce2930653d66ffd7b059c8f591674388869dedcb1f4dbd205a27a292bf287d9b973534071f840d8e97dd782672e52ab75e57b5e56ba98470e8a177cd02bea9874e8975980e2014bd2bf9a48612713c01cd53b362d1bd21d7b65c3ce2c7a015829c3a42f060411e32835b63d712ecdcecd981bc059d895188d8d918b72abd3728813355c06256dc6397330ab1a025f0dfdffacad5e839d68c0674add72c89b0420c4bcc47692ed1083f293671203d2f98d99ad6a74f9ec8722e886792085c20aff665f6c8cc2fe80dec4c1953d2e1535406e78510b33dab7a7b890b7a14912d3feecc33bdeed9c406fa952491a06446b2da90de0ea1109db96364297d7fd9c831a05c7676eecbc294ee13965511d7c912dc412189c6797e9693137ec6eb906adc837a5d5b0fd4491d1bebb63ce0647b474ecb87b9426f5cb9a8e28e8c3538ececfd3ddfabb60909844fca10674170b861e25a61f0ca51a065816f6c4fa747b12240cba58c8df06a0f8e63ae4000cce5c77eed41ad7f9ed66bafda45760965e59bb1f4e9b087f6f9c5c180381362065895af1901908059df7b25994386d5c1eeb16ca209983272c368ed2f48a612b3198799ba162ce9c1bab0623669db442e7ce5ac6e76dbf92a1b9c6acdea055103ae61a0efed81ec5602484031aa598f7a921291a99b2f311fc77cc625b5c2528a48802f32d842b6f2fe6228246094ed01aac0da22f7a0845535fb53d37e36419f509fa7a55c7beaad9ebc7198065611a389bba9597f360d81b0feb81e83a56196ccd0ea183b173af0b87a05c1168be81f50446b9427b46b1e696fef45ff9b30aca0d62cd0f671a7fa20a7cbb6b4ecd013ccf92f21ab60a5b55d5d6768d5ca32893ae43ef21d646963023d84a15c409bc67476526dcd4da5fdcb1edd1c3a4f202a34a44f6fb0206b0cb5160ce03db06964b5378afda07103f44640cd5756e2023ad86bfdc49f64d3cf04b613b2ceae8506538d5e866b4e2f225c964ffc6534725789896ef3b7590ef654ebf2b285100a500f844ec742aa70fd01e8a5a96c29d021832e40fa63f78f81dd69979121403ebcc2e44efc91cb68a523e7cb381f70f2df50829ec2e8fde3065654bf88ad90fc2a9c9d61e309b2e9aaca990085fc48d2013e7eddf3e7090e407965898c16c3f67b1ef3a1be198d11783f7ce72a123961aaabfd46fff55c3a68da821f662f51b2910bc20f50968ca9cd89625699bb29d044abfb08a33f52026b53465fe1c6039835a56c733254614a2bdea59618f57261d6d636580dd8d17636cc022f1d8f10c8b7fac2e68c4c5941c37b54c189a19651feb7215f89a02195d62282a96c7dfe085442b0a481aa57d24079abaac82fee220dd3eb2e1e6dd5f3f5cb6800fb474be9284448a2f0d9399baa7f6ed448253af08c9760f6ab2fb03214da12ca3e1f1d08bd54159450b06f99b4e36bd6ef3731b23ec13479d68365847dcad9a401ec2ec4d62d9ee0b0158f41a84ba5f2c4a18c32d4719dbd348ebc69e9c7e8131955b9e2c0792a14cc5adf899773764f239d7eb0c579c66ab7728f0ca03486756a3db6de1446dfca360ff697790f5dc189dcb1022a1dade090277617c7226c35df060919e94e2c73439c579368ee65ed5aed6fb1b6744c7e53c000b312acb6f151dbaa79a7aa88050e8381f10267f4cf19129fd2fca6eb0822b29832dda00f2fc9a472b93d23df658f939bea9fb53b2c6a77d1b1831a01ab8c3987f97ba64919b2e8c18c54224b9219a10dba41e1ff7fe494e841c590612e138c3310e0b0a14ed9d38f30fcfb2a2fdd7ef9567d52d0753f115b0268a8e190a8511a921794cad9f03b452986aa5d74785f0822c1a447f2bd1002c15b06dfff0a77277b1d2b7b9099be96040b1561fd14edbe564c8c3ffad2089550feac52ce71254f8372280e3d1959236ae6b3d74f263bfa21eae4035ceb828b522fe4a58b843053a9b9636a7b77d357f9a857d185079a4e84eb5d7050a5622451590ace05a192103905490b305533bfc2043251b4a37cdd50a7d1c71221c74cb0407237f5afc9ad266b500445ae65cfd84a813edddba185f6a4ea7b341f7e7012c69dc68519625e69b25ff09b3f700610cbcb6503b0e00133b9b77e626db530f0a8624b9a13a059752afab9035f5dffcc9ee90ced105b09e6629dd0e2cf57f9b251830d643129bf4b7f777c6d640ba9e3861791a91cf96e75702074e2115c3d6188a59d37187d3f227de3a190aad1dc8379f273d088074e787abc40cc77deba510d71c7efb986327217a32b6ff5c1301760ce33d897526a685b1b8c22008b88501a4d773eae535bbab16fc71f198f339ed33f7b5d01981093eb1b97b7b43d4bf139f5ba965cb888e4a1ef8dc7f772b09065ba3b9c95d3df05d0279db523749a9190d0891d6e72b3a80557b2b80b7a56d4afcfece5f7be86bb8c765e137d615d6244446fdcf34526129d302b82ca84cb2dcacd5b307d2d07e38c1008b7e5a27042b13fa9ee9dc7e23fdaf7a245540972ada487d33b2664936287bb08b056dca250449048e24308ed74c9c8f75966e92999a1543e435d8f303ef7e2354d362b4e40ae0da7652834ed1f9816c3851d8df156702360d859f7eb0d9e0ee314941798720c7e4f93c09f557c1e90762ccf33331d01deea00da5dd377d8a32069e0feb9a122103bd5d7a00bcb6f40845647249c346378c23b8500364e36265b96d93399e2779a82c416f25bbe0531919da5e7649fedfaef6b147d55a55b98d10605457af0976bfc6fc8c9ca5991a238a736ce877d129ea24eec9152bb30a4fea20554e520cc7aff32b58a84ccca3a09829fdaf8aa44e339e389d8962c66967b5c4a80a8a0d5fab668c818f8de6886332c4ea68c0f205c460480a754eacd8f58faa66d4f7101f4b03fd9bc73ede66075ae9dd60622e2ad001bd2ce75894a4218e6ca726f111537d0c258f30810c3448137ee7c2cbfd9134ec85df19befbfaa3ba29b4144514835b1b5944bc857df2e04906a67bbd921832d9f93772c0adebeb95e9421bf51a6dbb2ccb8cadcf366345d286f3ced387c96802af030994d374f7362de47afb12adcd6ea289c51bd300cb554871d9c20126dc67d0770227e5e43f5a36d4d2de0d46955e45814f4ee56686da2ed70a819663a71a88470f75e5527824f879190f27366786fd3e5ec492c581ed00589b72b19437960ae998b7c90832c4d04667e20ad5066e8eee5e3601e97591bf862115d0f41d4090ac53d5cfc1ddfe183ea9b4032bd6888b0dce137c51748d4794d1a3e0a1fba304832c02e2d87b38990e2951235e168d3388cae7adaadfd278bb6172d6eeff21bb1e8dd68eebebae352d2c5e233427042a87afd0caa93a4cec82602a49ba6e9aa409b09d9530b2f90ec73b561ccae43826e3064bf7e56079b73414d1a952edeedc8659d3026a0766470f1edc22ee788c526e3493c0d4a55e26f72c358f0dac67d9354b2feea4b9aedebf9866198e1eebc9722018ff6494621ff8f21e9c0bfcba25ac11f0ef8edf50f6cab38f0ba5436fd19761882167593e5fadd716b92780f633955422cf2d55ccdf26a6b90353913fed85fb2a34df48e894fbfef4e29e1ee6eb997b5d8c5a838f836d2a49230db5f7cd016b95bbe452d7935708d27c496b524ceabd0abf4f70cbbb32aabb2eec487dade989d8d3e86e0cb850f42260d49eb51e46e1b9651314ba127c0401156f4ce83ca09f3c5471edf55084af023850e094be6ab00a37c25bde3add9ff22c73c71c6bd1de8c4f74e940a3eed6a807bb457243dfa62507328192f6ebd43711cfeccac3197e1ee0435a7ee29ac657c7b80e9796477a96a7ed5e82a35bdcdf2db691028704b532619ca2bd2db9eaed9b8250a8153364a4f54002c5d471b606203084769543b65bff10b756a3bad92c4bd4ba678867f0f67c29693d28019fa40c63ee1807bff22f29235ef8ae02e2a8b3d0a8c9dd99af358edb8bc4992f1a8525da6a2743b28f8c7080f59fd666a119ea161ef44aa4eb9bc65dcbe0ef75a6161d53d38451fd1632ec0b58c5fd109775f2be20bcf44cad2be573f941873752132fd400c9b9ac37f486ec19b192f7a4d5696d8fb04064ff180038bb62c6bf86e0012cd204bf9c4d1e7835452ce49523b5352a84bd6b992c11857af0fc002a4c3211cebba88ef2972b5450acf536bac8f4c8ce2a9e6d1faf8b8508069d7fe5dfcb30146740b83fe09735d1607b6b431dad6abef3f40987360034f0fac669c6ba980cff4a1afa3ae6536365759db3c4cfb9b7d6b23a83f8e2429c2752e8e41f4a0d01435853978235d1548fc450d48d06f25f0f1869057086ae9f1d2144f7bb7ebe24bf32106262f5dd462fa87713879b3c8d1016fb2fc50c8b582cd72c1589f07d1c29f52939d3d20ba7e1fde83d63f5775ce8085426fc73ab421e3639c5958cb81e8c776c559146feeb29d290807c876a7c9ab2042f41810cc75875cdc0955fb01d2667894fd3153ff0cd732a768980ce839d3678df1f6fa53044dfa80e9f7fe620583a7d16a67e1778653a77ad6d4eb0ce61cf34ccbb4d4f34c4c5fd1181031f28132c586dd0fb47c55b88cd9f374ec995da5cd7574fc2710d87a4d3ce4d2ca515b3c979fb63551629e1bcd083b5145384508470cfc557fd396d3165eae862c22e96d0552509ca843d79dafd80302c5dd4741ea6a6d20d56c0793c4ea154c87b2167d6d909fdbb95df8b199b8758eb97493460e5c5e249a5013c43eb15134f3814e0d5611d2b8ca93fe6f280db78614da0416530376058b10128fee8bbdf340108101654a5ba2ef9f1fd48605f3e05d4bbe7907b296d99073bcdf24a56a9bcfe13c87684f4ac539e2ec260652775f8065815dd0f8043870774c760c7fe1f228e0d9b227029ae86fdd86e1b8a6948d42254993d28d3dea308ed58003e92c0819f1d4b3bb04eca336aa76804fced1813edba5ecffeeb396e20c18a9f25c15431bd208f73cab240e337155507120cc9dcc3eff6002284bcb3042b377af2cbf67e10243a50e90b4ad3b4b6eabee620716a85b10e24d6ad6a6d3b28cae98a551726902b31da0524fed0a29938c1fd560d89f614e69f5fdb613f9c6411bae3e8d603a42a6cd3bc1f1848e7b7ec6fc787545a5c76da44bff04665073e15ae385c07a00d257a3894b2a0946e19f46e7100706df4bbda5d88b129274ec67efa7042a825be056d8c03b7150e84df09598168973425fa73ee32c91d17600df135409217b11f290cec54bf34e4b7e1f8e0c9a9060983e952ab64c7f32516da658f6e529aabe10bfdf172df1a21e510ce969efe6cc833de3d1c74753311298bda8decd5a08b9627ae16f927d199b0b3abda488115b9c3299cf0f463d9bc719cf4ffd7e7b99c3e1a87f7babf1a6584587d860a138df2a8b957a626ecd0b5b20281fb4349c35f0c05f65e8937c8d2d50250c4ee9f8374292046e4289ba342f3463badfc733c917c1806b02fb552d842cda6e77522601badd9a1fe42784ad91764728f5c5da693fe073b67481b54161a3b714e92371ac0b539a670a79bdf05e2f414dfda318398f6112aa022c59f9e29ee8eddad429cbadfc9ef772a19834d883ba5556e8bf18aca046190e655729acb8cbbbb3384a3c19892110456268651729172cb51b8438fd3055fa04c78e912eec50b40d7b13403770350376bf2bb1f39dacef0344c51d41a24f43e5dad0bc0d3269e6ac0b91e6169727b3442d36ed990d1d62d6ecef86fd61e0aeeea0f47dd5e1195fc9c2a0eb1b98190c9b50163da19fbfeaef8e999ab961640a82f6d4c5473e941ed99fe5a0bc990efdacde5ccdc115228171aca117012032407c50ce723f98b503e52ad257334d3c43267a579012263db56ff8055dc2f11fe1b3217624c46725b4189e758cf4f935799f91e8ed655f540f34f7ba325d50b602487b029ad71fe871dd12230074c9607e8d93190408a5e9356edf3335e610674155b6489252060587f8aa90a6723a81e3c0c8468d33f02b4d6780f8d8b791ee0cfa70232fdf70af52d2f3dc4515c6711e77d92f2fcc43794cd0e6f85c9a72b8e6c6ecdf6754f8e593655814fadda7475e17aa1e16cad45b83e189e87545f1ecbe479bafa9326f44fc6c02a98e7530d62ea835e5d598b195ab5cb302526a50d3c59dcc176bd810e4efecc5bca0d33a0894e3b7be3d3364eba9554e5ca951b059b2aa739d88ed6e334e5958a1e0ae503422b6da6f8f3010d9a12c0a9d9fe0922e015aaed5f6d07e6901dff916aeb79bc08762f3db09ae23c7cb922e7fe28f603f6d36142372d6eb15582aae79d0a93f5e8f493b2bb1c4100f97d118dc73c311e126c9545cc695cb291714761632e43a9e405f2aa969f28bee7751637c1ce7e04f01995b5fdd8e42754ad69f43557e52dd52dc5b919b6e15161fe2339c6aa8f2543a904cf572d5d2a7b03f4063432762cdb4d93357de9be1b53b6fe093b2620058b11cee9d31cb455232733745a76b0e45e22df657a12601aa11184253341ef0c0482cf7c4a46eee72e17f77b1f52f94f213739939fb1cc9ee2cdac6fcb2f0404dc79b4d271d077d4bf40ca61a9885dd8e85219e20a1d2554e87e1fbff1e4a90b95ca3737b9d3bb6ebd290ed80871af2694e06b6c1d733df07851685c02915a2f096b15609d0e72f7686149494a611888e94ff6a0a84ed9e26ebebbf022d3c70ae956de78244d3784a0fb765ccf9a59ff0dcc8cb6cf72596bc87052d099742329b25b41ab960565a85764f8b40603164ca7987ee2168855159488f79f73926204e861efcb1f7864994e2ecbba486aae31a69b8d03d8914e14cd31dafb7c1c8303f1ed5f868156ff016fb9730115d3bc0cc3430ad67302790c96fd24a2c7a0762c49ec3ec9958f7fb7de96cadd59dd91812e0fd86f107f417c22e84d1599db671959074d1bc4d93c40bf34f9879045c556b370e6fbb3d22bd2cc1d7189d8eafa1b7ba8b59897856f6faabff7d523dad04fe17788985c37f5fceea6d588fc58540b64714ca181d20757f945a3cb391116b0dcf6bad0100bb50da3c7dd30637dd41e64274afbf5882796adcbbac418028484b018c1c09fc8ad1f1e9782974d7e1b21abf9ec873110f5c344918b93ef5948f47adb7a76f5735828697ad0844b31ff2de35f70b7911a9ba3107644bbf0b3f90427726a498992fc63bfe2ce274628a00155896a1e81027ac1147679c1a7605d6e11043b0c623c6bcba3a00d3081518c21bc5a9978fcc14885afe4ed19715783ddd7f387f09cf2f61e1089bdf61384c6066eba99e9f5df25aa9dee0e4a804abea699181021018d77e8c3e8e1c0a450661064c89bbc3ba68c5fca01f1eee9aac1edd77060d2f80c72b490e8c48840f0a20b4f1b8923d30c7818a44c6c2fd391807eef2699dc6d69c250344e760f0b9b872a6a6d8d12b7a6473875c64e274ae33bf963ef116530230c73a2c4a73e03849018106c79d2558466e8a4d58c3945bbe26d94450e22930ac69544586f99400fa2044e1e6b28b2971a8650fd44c4c9292cacd20613c1541cf0e8f5b417cc4a11741998f65b517c955893442e83de7ca81c82f596248e6d504294843aedee9be3de26bf04e84b586fc43a4b3cf27f9512b3f6f0b9e7aaf5fb4a1a93d1f1162f26442996d48b6f4f7e5881e4865e0690f0771929419d392801defa7426142a35877a2a68446de41a835d814cd6a3a40d7238398688624ca6acd877d2823b2c0d1a0208eb476ae258440b1ed5d4e4d1ad777935900f0de4810102c1b8aa0b2f750c001f1823363504a06dae74b731efe072e86e01a4b36b14f655ad0e85b36bf40c590c520fc6cb1d85d04c81f6f017461f522258a51f3521072ac1dcb1f3c85e87b33030bd156b0bc6c376409e59bd38e527f79b528d3e6b0261e6fc1136ac6d5b8501a8b7c47fab8f4a7ed5a62ce93631cce4fbe57c1e4a664047bd3e25dcc0444d2628ec58b780ef3e762bd096ebb662690bdebddb132a038b35e8327a0f44e59e187c717349a9eb495e238c587aae359be0045dbc483dad78fb668a64f5585cbe0ddecd547010f1b915dd3d44815b3be6d9cead48a1da1d93a7988e01897958962a58be8f94e580f7bb92c4ac8dca397c2f0b38b7df2761fa8445d16b412201e624fc3ca49ea244c33f697116c454de522bb190150e0cb0b35be68104212d513f1932abfde594f97b33e88fc2e8a8cb1b0c2f6a4f543a455c0025e8fb4c13e272258509e2d721a0c1ef2d81dc7e38b6877d27fe378c69d53287dedd7ca920d95e1245b0f238a7a6a078348b675421ddb892ac91857523de9fb6b1b11a7c943feb13ed4782690aa7e038c5ce65d1a400122e255dab7914bdf9e410f36e3b7fc39329c9e9e93f45fe7d30d8aa5637a375b8fdacf1912d2dc4fcc8e93f429ba05fa70aec35411aea7f2bdbb49032a7708ab2360796bc6dda04ce891ce400ae5856642cada6fb03b9a320332b0252bd1f9de91254681b8abaf4eefc627eb647f87c702386fb89655e569afda5c28cf629ab4c37eba6786c732bc0189b785b1f25b33b00cd95b5b0d33f2bb52ea268c2517fa937e26634c338c91a39e9648a9cf1d03d0205fcf1970efbb4db35b003b6e084223c78e10ce93451ea08969fa2472ef6571d526eddaa7c5fd7169b0ffcbb5cc7db234747cd72830d791d4e17608d562a8102818e0975430b6a75587e8f18acfa7ac4d7d77b993dc7b9eda452095e2b3571126b42c5b10e9257b4e69cfa42aea87853f60ccfcbfea002e9b95e3c322627281b2fa3a9a95b0b92390710372d860b7112d37a768e9856eb207a4295dc568dc815026d331aa82cb634f89040bef00e427f6c75e6b67be0dc384d5fa92337533b29959c964717ff7513376f51663504148fa207870e265e92832c7c16c11a2f0b20768f2f09fefb044291cae2e46dec4433b7b3415d3a3690776641df6555bfdf2f52ba087fb587d67f93ed654c11cf9cf4bd1881d608d951426d043214e519ed0818ae299eae58f834d7ee0f6d096e435ec58654c803a7ede318b47168fe75452ed62f6b22c4f91ebffc0bbad26b4f35621d64c7ba11c018bb2d9102897a0b3d0656bab7a5211b478ae3ccb260f2e8c2ab6388b0ec6dc60d26f614ff4d87f2c71c37a14245cfc006b53b4a20c335498306166828bbd4b03a1bee284b70926d91300432f59976783ce50f74572067c4d127c95e88938f8195cf03dd743e56b7492a532b9f0615a0d05846157f1bfe5937665613b8b75fcbcd926791e38305f30220314a8bc9dd6a6e579f5ebd269de104b60eee8f615fc8702b1853d38dd9311003ef1128003483e759826f3cb8939d79ae941746a3d3c4b2455223be2824fc280eea45cdeffa51ef8cdf10e31c3087a6fc8314a5752be6df6f262cf3e9554e9009d9d1b925252f875f6f615dbc9d7c3fa743cc4d1dab92397eef7c301f7c04e415135133e4a879b7a802ea8bae1ceb8c1d0858ef9add1d1a75d872b6ce7f74961966dab1263b57ee37563fe2ff195d3497ba6bcf6a4243a4658b3ad7017ffbc92c45cb669383767f2e1b86c9aa86e7db6b64eebb761044a6b36a7a8b45f31d4b19edbcddc33cb8af61de3a358e8713e2432aaf64d00c08e6ee18bb39f94d56a900580450eb56792f09e9cbf2b85b83d79fb20f262947416859f124d8d9324d02150c1af9c7c0d2e2bcd8770e8a4b230f326e8d8be7ab2e6db9e2c5e521d1c09829681296152c40f0cad521a626585d787529c174807323c2d96f3605d35e90ae179d6c29ac154636640c7c03ac3eb38ca1a23ee4c1ba2491672a617aa1c3281e09216b9309a23307466b1adec6d9de66684abdf68e3453fd806f6eca064517ae03e0cc9d081f8cef59d81b39f1aefda672a61cc790ae3dfae92ceaff2312a515073ed74ab361c50c9acf10c3327a91da3ab44d115cfcd07afffe6cc5956f13af22533d8c2847b8b2a1c8e43a2710585cec12ffa7250f57882790590cfb5c247d1e604d200e276747e0acf37e953854c6ee0e0427bd6dc8e0dc8137877af45f910d6125505a48cf7788107ebcde08fa72228c85890b264f00975d446c5bfecd5b1f6fc32aecf28d9aeca5d5668a0da9b873d0e6bbf074fbf1f785ebdf6b2bf2f907ff468c105e4a91bd997caa0ea0a8f9b784410fcfbb09efaf17d09e279cb1c82cad3caf19b62b67d01b65ce6ccc7f925f38f53bf7afbeaa84fe8e0a420431af123fe1a5c2d6ba562a1c61ea8a9452ef7b2992b5fcda0089b93a97bd48062e972e808f47bed4c155d22febd6b07a002eb54db0d486810fc76ab9b7ad0ead8d2016338f71d6914834a9fc11148fab5ba64f8376efd0c26273b12e119cf88fdcc2083b52b7b556bcc9c0fad2d136e748f3646b3a61dad98a6c3e831ce7ebf6f10a014ec39975bd296c44b19a085379e27be76900180267cab3a28e9ba30cb690652dcee9c235cfe0f283af2ca1a5c1c38bfce62297563dc86bf832d3b5decefa28186c8f76e8f091e3da9241f9dd905a47bf5e8dcd906d6673ab15d16def4225b4119d42fc0dbfeadc397835cb958b1a71a0dd2f0d039ce1de68c37875aad9f0c304b11049c42bb619536a7c45ad66578c112dd5ac6b61ed4fd6dd8d9a61c9660e05f7bd2f8faa9ea836075368ed9a338fe68a47c12c63e5999a0bdb8fdca9a76b2e8bf7a438b37a139e28a67d817cac429332491c6c2aa17c0ebeaa65fd1b5a031947cf17aa13cedbd8b4c06ac3dce1131fd7f1ea7b0a4bf7ad570dac60b4c5f309ebb437d92996f8b938127bcfe50fc4fe3678f877d8d2efc42ff2fae6b3a4b52e784e634b4e2339be5e0d408d47e7efc8ec1c0115fd354d9fe4b9b98f275b0b005e8042765b7976c3b96a2619ccc7c095b3e812a432ca6a2c7dc98d439b630f0b127920d802cc6c6d6e17f049bd1f46e5a8ded20e3cfff9f47ae643624d8f040f674f208f7d426adc09d5a14d94928628666c50bde94dd4f611aa5c1db46546199984b9a4e0d6c3de1ecf2c6c89b5104f4d5c3c43649f191ed0fd62903a2807275cffbcf5c288c4c6d7b30b73615ece126f6e9f5024b3109d4e5378b405819422b689a51d2054c9fd17070feafd6af75a842442d8181ce3dcbf2de3c7583e9a12a354cfbf4ea753d2c4685c2e134a9c988cc8695b3d727b6012e52ea85caf2f09fed051f54c30b046166bfd0a9eb374519a226609c60942ed43a1f7a2b84e9f0d6d31873d94856b3ad35dd3f49063b084f2c37f2b7ad8037833662478846a6d2271d1030ddcd43190e6a7772a4282156f7db64e4ac3829005efc2ff8dd4c76820be481f99416916c221d33a0edc3598fe3c8b937b010cb5a4a8dcd1f17c99a806a2c0585d9782fa1eaed75c22fd37699509ac948726b027908587bd397cb79d2144c675d70a4390666ef87c9b19cb16d77ccdc2a9eae50ee15c4098a38528891f321167662c4575a6840ba118f42219086653403f3162af46e1034912cff45c1e31c30dead3d0343ceb57026875b3d66ef03d03e0e9950938358a2b449bd3ce16a2099bd922e9c62a2988b4763577968a49fc06e06b2c43c00fcea6f3b9e7fd09b4e218c220a42297af11815a18c80a3cfefddc0f2f360eeb76b3d5dabd71c81a3a1f5d6be84f4abe429a41921be5494bbecd0a4c6d3e3a1d7294bcb48967670a8d84bf514d38129d095e1960224119b94ad3a304fd2cfafba5ae1a62e6b10529a5fc29390acdad2541a2f7a39abbb23d530bc3af7621a740f13f2e899f653012a8e5da3129bd2cb91b24c3bc286920706ebf6db8fb05d299db019ab65ca6051236edfbaef22707f98d0cf009961230d849949a6641a51a1cf26e35be8fb8931861824d830cd5d7fbb8741ad0f4c66a8c8df01012b1628232645a3a70b7f365292165f09a8afd1b11d6386ecc6c399eeecf23dca19424688579acad6635db7e224020fe2a03fb14ce79e4a06978b60d7a8d3efdb306662bf6a6d39365bf3f3f1a93f22fd54071ad2a0e7ef4f4f5584bf60f27e35deb186047e84e1dcc666c0f1002939673165618ab33539f8bd7337c535bdf6506f852543f0c23c15d603c0f227294f77e7c0827719f7f9869eb2596967b6d2672d195a1f04657b824a5cb4e16df1ca078ebe68ed4343653d2bae8b99fafffaf37bddb09477d85fe160159ad2269b2ff15cc297792f242905f486317ca29298053562b5a017172c40a7e74a427cb3ea25e753e981d30c37055d29f3e118fc67fe03e9212a56f5ca4210b411928096c3849aff8f3735364f85c4ec8db38b9ec504cce24c726ac37b054f0a27d247d955d643dad764731312cf61a42ba1438069b04786c9bd8d839c7acaa363b1471adc9b0eb51071069c3ead1e1bc813a0526cf3c36c08e2f3673450b58a9950c2c3011c9fd157b467a4d692ce6a38757ac7b3143ed9591f707db871ee95d332c4853806bc653622d6796178773f496373c7e78cbd85d90378f273ff8d8e379228f370054730ca7409ab6e2ff2ec70644cfa1abf75b58611a3336b9ddfd60b32b8bb2935688c787c505d9ddeedb9b515901d13f54c6c3bff0911fc29b3553f0068e6a11b07004b94ff8f20e2d3b79464ade6dea5a3a68e7a1f6c9c8153983c623f07d95f8916c404b4503bd7c04406a6841cd05f58fc6c94d8e2411666fe09f02a470466b70ff1f53da5afc1bbe2c29ef93773c58e9ffd17fc6b21c29876258051d335a16a34944e91e202b89e2fa5db1c511c23dbc49bb6feac8f51be2a73510ef893d69e79f3fc20596230b0f4c49c33c7ee7e4c78632fb587d51af71f91f1a9586624ff142dea7b820567b45eac443398449c8f4fb84b32db585c11e307e175db58ea69510110a31aff6393e09a8e725e3eca494b7a81cb6fd606282b02013d7f2dc2c5d9ce29129be8c43dd253f13261ddab6bbf98fd06f25eaf5c057e52f4d61d8cd2fb6a4d3d6db7bcd1afa8d5621b5a2928bf94ec0bbb1960a851f0e21fa9238729da6e40dee9977978eff03efdb776fd8354eebdd96631f9911a2ae20fd77296fbea2a3892688fbeaee2e2453fe4d74632a3f5773479e4c5f7dc02a0cb0ecdc7683806c3a35fe029bf69d5634be4d8474c8688c68beee092804de2c1397b7e55db6ba5721d1dd731b7906982f07dac037daa8656c6084c43e3064ce2841249268414f950d402146b027ce360537c6adfd7bf22ff2385db5d0154aac128983b37bcd7c8108f1d060c19f31999cb1c28b062e79b65759dfdebb75f29001084d3c20d3469585cf97c74545e5c4fdb7fc2fa363faaf1e2ada33383bd9f5231effd51912766ae7d53db434b8a0dd05b70d5d5badd9c847334456b52f138d05632c9f1b3e8bbb47ecbc8a0041d553d61755d87e5ddb70270bc971fe3f314512033e1236f3ae854e76883cd6a7232a0f2547d059e21b82853c78535e62aa8b1a4ed955f9322bfa4e22bbbf509110a46c9faf9b03c63e308b445c3b211ecb2719a48ad0e99e9dc2baaa0ee60cb2d7168e6b8324194865ae9ab4acbadc5a54fe0ed918a8b0664d79c843a2d8238d2fe12a92a782e56ad7043a430d113a46c54f1c9f04018af897b53a423e43bce99e34efd3c7efab40e9493d126d79eae9705e001f515121557a29f0f3abc176a668caa87ba7214f4188125e3aebd11d2498582bbdcd05688a51662be07e0ada968e6a1dac661fcf441c554bd00717c21e829a04b80d92be2e2403c9b3f889c6467e953455967abe392a8ca9013d264dbc53e80701ae4e225a2aca9254d2ed24809cc11b58044d33bddb03bf273d2935493cc31523717e9d27873fe5d8d13eb36d17b7f887459c3c205964cd1685c4197ca3f62b1557f9c0b9b78593e9e45a1fe9308345c506e497571a7125a4f1e680f4cf2b0942a7986901ed7a2ea911698b5ac84beac9846790d16bde41324f93216891f60b9aa2da9733533331bcbdf9e75303a5c34da5f177c9899b714c8b185828de112788d72f4dd9b30cdcfb0d6e9ed2dc74baa79abea6dfbac35c63e56ed1db1b4e1d27b7fe0b2a6bf6ce55a7ed8df6759a0ff7c7047e4355b0db5858832b7fed2b1a2ae10ab98884031fb9af0e6f7e8fcab6353b0b0164fa01916dcc83c6532cdc28b00911fdcd10d09b6fac344188aab36ca9004ee7add989b560986c3af70d1410bba386cae5262787735919df64ab864d14b31c138a4ffe0fdb62feb3a9884d1d32b7510ff145cca11b0fbfc49ae2a1d76bf8f8a1d5986b12fccfd79028091524680796d12d82b9a69970344261882caeb33ddeabe8cfb7781d4441d3d1f69423e57b052bbaffb8c432a2fed267b8cf1d7aff9279c053db4c33167cfb234560202639fb5ae79117c77b9d7cc571f0b925f79766c98ea9800d59a7b8e509678a2d2025e843459da6a7a70c7e9567a3f3fd33fda177844270f1a1ed84e4f042bd259198de005a015ab6c18f3671293cb059174df784bf2f416c92434f125da821012b154740d129ad2dae2ca0d3a24927c0844acd3a663b8bc809a303f34fe2b600b3116b55c73b7fade5b33d79f1deedfc088cd310eaff15abec20cacd1232e62d00e78bdb5bb06db34e3926441a0e9b13b1ba995c3da081e0811f1fa61c291f1505c38b170d5188a194f11e78721e4e44b35b93dd47e5153f03c33f39cf5c98032a64a4a570d153a52a1d8732513da95ac5b809f5873e99f6993b9788ab45020ff6b48f3994e1026555c445bb98db2f9f84795c0a816b63d144697461a5d48c22b67ce67f554dd6fcf5b0871601be7e5b10fa5ff65034ca5a626847cdf113220dbcadfbbb2759206d4fe14972e5031ef25edfb43925e2a7b5d4d2b231b797a2171dd862e5dc30f4cf0671c0ede2d777250e6a8dc2ab10f605d4567b9f4a83250ac9f3a9b12c05c58d59ef2a05eac171b6489e466bb136be824cab2759ad23500cfa5f58f260f5646a7562b4c94bcdb48252da44af20e9d5c10ef35f9caf2eef24ccebc732c7a77966591fa285d5c6001db303f9df34e49b2b5bcb37ce43c88b008129eb9f6d008087e41af7afc1e51de9ecad1ed1dd41d2313c9a2b5c56e0b705ddc328631abbfd3d8f8a8daab388b1a508b4ca459850a908d6ae0572dc203e19ba8bd3c2685f91830e4b93478ba58847920c10ebc11472d3a80d640357df5721b3b2c13f45b8d7cb01f33a7653a0bb902a40e9f847f362bff4970b43b1d8c5228cbabe0c29a33e3153208e06247f1075e5a41f9752f2047b2f0707486009ae02f783834a085788fe27edc942a45c0d2b1ed0beee7dfc56a5ad5e8660e3ac302331c9f761a1930c8905d8ce7f7fd9df7ce1b3092d7267c705c640b65048799315d38ae429f5c4f56ea8f9cbf7ee8cb56efdbc179a73f9849c5649c8d2fb61cd05693cc55a2e5435209e36bf8783b94992e10c68bbfd9cabe080cd068746bd561ca8fc9b2e33e33f11132ab7321b24043c60937c2314e388a8d32193f5bba73e0d283126414f65847f4e64aa373bdcd1f2e459a84c2f4a1632a65e8a40fefa2d15f26cec0c482e809c156afe09d4738c6cd7f00b9bcb383072e9e938c2e669501d050e16a63ff712710f214d8c963587a2727eebcfead11f843b7c3aeebe289d2c14189393d1d2e9562a24fca496c1d2ef1b0af53b0c93e78f2dd30fb13f4221084240ff97b10611fd09c33dd9d3419fc46106d60469a9b8813c85b4b5c76f4b1f197d66801121113b3cdfb9085e75f5c0a3f89d24b198e2510f4c6739bc14f81f0b6b6628fabf0ad1b3902661c9353caa59d8c837ad998aa4278b79762f03121943936d7984722490144814fc3b6ab404789b505446846d139591b3549e614c02c88edf1a2217552db9e72ef5ed393b90acea7b383baa227a2a40ff1e7ab53828c9082d1fb5cc76dd2e1ad77703d59da32601856bd9900f172a4159fecceeec2ddef9a4f46aa700cddebedc4f0b8fde32ea2f9b7414ca86d24e603b8ce546450c0395bcff5dc389391dc851949c9b294d49a5c802d1ce13d5ec543af1d4e003125d1fa902b935832383675397f6e77e34fc59b9a363f80ee6e1098e7d48c86d1ca1773c8675ed2d2f330a655ff9385b70ec6fc371db757f0c325da955f9b1a322d7818dcee7826540944cec9b98d026a554b3230256e298907b4898cdf6ebc41d84c9be916856493e7d8b0c0894cdfcaa38f46f52d08ea420413228382555852ccc7cd311c37dc3cfd1a4b92eb628d3b9a9fbdd6c01333a7991c51ade209c90220e9bea499c2e1211db66637aa6a329cb8bf1e514b3254610967029a36006c2038b90f5d6e5ff6b22a785dc053fbda8a2ac5947d93209df401a48a88c61277c10838c45ace45502d647ddc2f8735c81d07cfa875eae563d5764d228c4a2809c070f3579ce73e6aa97f7318090fcfd8fe439681dafd6c1b9547987ddf3f143bc2744d25293033ceca4a2e837070fda0e48d40720f54779679a0ca9819ef3621106cbcd67819748897b57c1165793957ef8fb0cd67271d6ab4aea2eeb7054e74c1dffac1558d673ce171a752bea90a63383cf1b53f07fe87063a857a8958c6d8419c0e252081eae38880f404749e6d41f5ea431e7c50a6cf6ffe5f3669aabab0013aa28601fbd1bf3369ffa607d3978f5cb06c6ef879e40eaf580ae5a8335633913f4b42a45e4b18efaf4ccd7871ceeda638ecd71a2729ee6994636d07f04c6022220eeb0b2add13e9feae3eca639ab25b20c1a934f716fa44c593eecf0a9d5f92f578224fdfa05b1c647ea35692ad4dc325a1450a610d76106adabdf51b6100c142d5c0818dafb86f53cb32f720e73220552f1a01837ff2b5d3b6c14d2dd59510cab609edcc5b466517b2942fb223cbfb24c51c104379022eeb0084013efbf0a2ea1afb514238988a6c10a0598f9a0c852a5a472d79ce06174f63edbe1c66b5a1058f40852ffede850e1b66d1777b8d90ab7ebf579d8a037686642243b9632c2178c305fb46ff5cfb6ad33eb6fb4b6101b483768bf2f46394136229c9bcbf28d04ec9945e57e421d8d879efb820adfcf883b863e00812b3fe615b7a8f9c9927d2b12c3d0b003e8b4077099be14c652481e5893f7df60574f65197a275c1600532a166ee8194986a1a2cb49bcce4348492427570f7da9117b8793646ef8ca501a2923aa32717d0f829d71ad1225789d74fcf4eff0a7fb8dcf8b37c621292c9bfd1a4441b84ba586a4562b87a6987f9fc2dd9a937cb81cbc7d2325a20525adecb3080dda018843b972a69607a26d3f335826b44dcceab1039ee70b49dd1abd0887045368943cd1a999226ce1b998f97d9c34ebae48e12693090e6d260ed7b6583101e9fa93fda241e8d95a956fc55ae51b8f8f223352975c0e827af68a6f6fb4a62c43bc08a4646caba9e71d330516f30e156ffd764128bf6f84adee82a80b105301417c2532fa98d526c66f8dfccb116dea0cd9e71dffc2fbaf2b32e259906eb2020a2fd8b1cc50ccfeee488e2bc4796dd4eb0ec184ff75e012ed691d487edb0c0c1a1006f23c3a1be2c18a130a340f5a24dba2c9d39367cfb870d261c3be707e \ No newline at end of file From 71ef2b0285cba7066ca9a5b9cb118865c19fedce Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 20 Sep 2023 13:34:08 +0200 Subject: [PATCH 24/33] uncomment tests --- lightclient-circuits/src/aggregation.rs | 4 +- .../src/committee_update_circuit.rs | 365 ++++++++++-------- lightclient-circuits/src/sync_step_circuit.rs | 278 +++++++------ lightclient-circuits/src/util/circuit.rs | 4 +- prover/src/main.rs | 6 +- 5 files changed, 359 insertions(+), 298 deletions(-) diff --git a/lightclient-circuits/src/aggregation.rs b/lightclient-circuits/src/aggregation.rs index 705894e4..5ffcfc3c 100644 --- a/lightclient-circuits/src/aggregation.rs +++ b/lightclient-circuits/src/aggregation.rs @@ -28,7 +28,7 @@ impl PinnableCircuit for AggregationCircuit { impl AppCircuit for AggregationCircuit { type Pinning = AggregationConfigPinning; - type Witness = Snark; + type Witness = Vec; fn create_circuit( stage: CircuitBuilderStage, @@ -42,7 +42,7 @@ impl AppCircuit for AggregationCircuit { pinning.map(|p| p.break_points), lookup_bits, params, - iter::once(snark.clone()), + snark.clone(), ); match stage { diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 299f4856..12bbe599 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -19,8 +19,8 @@ use crate::{ poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::ssz_merkleize_chunks, util::{ - decode_into_field, gen_pkey, AssignedValueCell, Challenges, Eth2ConfigPinning, IntoWitness, - AppCircuit, ThreadBuilderBase, + decode_into_field, gen_pkey, AppCircuit, AssignedValueCell, Challenges, Eth2ConfigPinning, + IntoWitness, ThreadBuilderBase, }, witness::{self, HashInput, HashInputChunk}, }; @@ -29,8 +29,8 @@ use group::UncompressedEncoding; use halo2_base::{ gates::{ builder::{ - FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, - RangeCircuitBuilder, CircuitBuilderStage, + CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, + MultiPhaseThreadBreakPoints, RangeCircuitBuilder, }, flex_gate::GateStrategy, range::{RangeConfig, RangeStrategy}, @@ -49,7 +49,7 @@ use halo2_proofs::{ circuit::{Layouter, Region, SimpleFloorPlanner, Value}, dev::MockProver, plonk::{Circuit, ConstraintSystem, Error, ProvingKey}, - poly::{kzg::commitment::ParamsKZG, commitment::Params}, + poly::{commitment::Params, kzg::commitment::ParamsKZG}, }; use halo2curves::{ bls12_381::{Fq, Fq12, G1Affine, G2Affine, G2Prepared, G1, G2}, @@ -192,19 +192,24 @@ impl AppCircuit for CommitteeUpdateCircuit { stage: CircuitBuilderStage, pinning: Option, params: &ParamsKZG, - args: &witness::CommitteeRotationArgs, + witness: &witness::CommitteeRotationArgs, ) -> Result, Error> { let mut thread_pool = ShaBitThreadBuilder::from_stage(stage); let range = RangeChip::::new(RangeStrategy::Vertical, 8); - let assigned_instances = Self::synthesize(&mut thread_pool, &range, args)?; + let assigned_instances = Self::synthesize(&mut thread_pool, &range, witness)?; match stage { CircuitBuilderStage::Prover => {} _ => { thread_pool.config( params.k() as usize, - Some(var("MINIMUM_ROWS").unwrap_or_else(|_| "0".to_string()).parse().unwrap()), + Some( + var("MINIMUM_ROWS") + .unwrap_or_else(|_| "0".to_string()) + .parse() + .unwrap(), + ), ); } } @@ -218,163 +223,187 @@ impl AppCircuit for CommitteeUpdateCircuit { } } -// #[cfg(test)] -// mod tests { -// use std::{ -// env::{set_var, var}, -// fs, -// }; - -// use crate::{ -// gadget::crypto::constant_randomness, -// util::{full_prover, full_verifier, gen_pkey}, -// witness::{CommitteeRotationArgs, SyncStepArgs}, -// }; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Testnet; -// use halo2_base::{ -// gates::{ -// builder::{CircuitBuilderStage, FlexGateConfigParams}, -// flex_gate::GateStrategy, -// range::RangeStrategy, -// }, -// utils::fs::gen_srs, -// }; -// use halo2_proofs::{ -// circuit::SimpleFloorPlanner, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, -// poly::{commitment::Params, kzg::commitment::ParamsKZG}, -// }; -// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; -// use pasta_curves::group::UncompressedEncoding; -// use rand::rngs::OsRng; -// use rayon::iter::ParallelIterator; -// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; -// use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; -// use snark_verifier_sdk::{ -// gen_pk, -// halo2::{ -// aggregation::{AggregationCircuit, AggregationConfigParams}, -// gen_proof_shplonk, gen_snark_shplonk, -// }, -// CircuitExt, Snark, SHPLONK, -// }; - -// fn load_circuit_with_data( -// thread_pool: &mut ShaBitThreadBuilder, -// k: usize, -// ) -> Vec> { -// let args = { -// let pubkeys_compressed: Vec> = -// serde_json::from_slice(&fs::read("../test_data/committee_pubkeys.json").unwrap()) -// .unwrap(); -// CommitteeRotationArgs { -// pubkeys_compressed, -// randomness: constant_randomness(), -// _spec: PhantomData, -// } -// }; - -// let range = RangeChip::::new(RangeStrategy::Vertical, 8); -// CommitteeUpdateCircuit::::synthesize(thread_pool, &range, &args).unwrap(); - -// let config = thread_pool.config(k, None); -// set_var("LOOKUP_BITS", (config.k - 1).to_string()); -// println!("params used: {:?}", config); - -// let instance = vec![]; - -// instance -// } - -// fn gen_application_snark( -// k: usize, -// params: &ParamsKZG, -// pk: &ProvingKey, -// break_points: MultiPhaseThreadBreakPoints, -// ) -> Snark { -// let mut thread_pool = ShaBitThreadBuilder::prover(); - -// let assigned_instances = load_circuit_with_data(&mut thread_pool, k); - -// CommitteeUpdateCircuit::::create_circuit(CircuitBuilderStage::Prover, pinning, params, args) -// gen_snark_shplonk(params, pk, circuit, None::) -// } - -// #[test] -// fn test_committee_update_circuit() { -// const K: usize = 18; -// let mut builder = ShaBitThreadBuilder::mock(); -// let assigned_instances = load_circuit_with_data(&mut builder, K); - -// let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); - -// let timer = start_timer!(|| "committee_update mock prover"); -// let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); -// prover.assert_satisfied_par(); -// end_timer!(timer); -// } - -// // #[test] -// // fn test_committee_update_proofgen() { -// // const K: usize = 18; - -// // let (params, pk, break_points) = CommitteeUpdateCircuit::::setup(K, None); - -// // let mut builder = ShaBitThreadBuilder::prover(); -// // let assigned_instances = load_circuit_with_data(&mut builder, K); - -// // let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - -// // let instances = circuit.instances(); -// // let proof = full_prover(¶ms, &pk, circuit, instances.clone()); - -// // assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) -// // } - -// #[test] -// fn circuit_agg() { -// let path = "./config/committee_update_aggregation.json"; -// const K: usize = 17; -// let (params_app, pk_app, break_points) = CommitteeUpdateCircuit::::setup(K, None); - -// let snark = gen_application_snark(K, ¶ms_app, &pk_app, break_points); - -// let agg_config = AggregationConfigParams::from_path(path); - -// let params = gen_srs(agg_config.degree); -// println!("agg_params k: {:?}", params.k()); -// let lookup_bits = params.k() as usize - 1; - -// let agg_circuit = AggregationCircuit::keygen::(¶ms, iter::once(snark.clone())); - -// let start0 = start_timer!(|| "Aggregation Circuit gen vk & pk"); -// let pk = gen_pk(¶ms, &agg_circuit, None); -// end_timer!(start0); -// let break_points = agg_circuit.break_points(); -// let agg_circuit = AggregationCircuit::new::( -// CircuitBuilderStage::Prover, -// Some(break_points), -// lookup_bits, -// ¶ms, -// iter::once(snark), -// ); - -// let num_instances = agg_circuit.num_instance(); -// let instances = agg_circuit.instances(); -// let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); -// println!("proof size: {}", proof.len()); -// let deployment_code = gen_evm_verifier_shplonk::( -// ¶ms, -// pk.get_vk(), -// num_instances, -// None, -// ); -// println!("deployment_code size: {}", deployment_code.len()); -// evm_verify(deployment_code, instances, proof); -// } -// } +#[cfg(test)] +mod tests { + use std::{ + env::{set_var, var}, + fs, + }; + + use crate::{ + aggregation::AggregationConfigPinning, + gadget::crypto::constant_randomness, + util::{full_prover, full_verifier, gen_pkey, Halo2ConfigPinning, PinnableCircuit}, + witness::{CommitteeRotationArgs, SyncStepArgs}, + }; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Testnet; + use halo2_base::{ + gates::{ + builder::{CircuitBuilderStage, FlexGateConfigParams}, + flex_gate::GateStrategy, + range::RangeStrategy, + }, + utils::fs::gen_srs, + }; + use halo2_proofs::{ + circuit::SimpleFloorPlanner, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, + poly::{commitment::Params, kzg::commitment::ParamsKZG}, + }; + use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; + use pasta_curves::group::UncompressedEncoding; + use rand::rngs::OsRng; + use rayon::iter::ParallelIterator; + use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; + use snark_verifier_sdk::evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; + use snark_verifier_sdk::{ + gen_pk, + halo2::{ + aggregation::{AggregationCircuit, AggregationConfigParams}, + gen_proof_shplonk, gen_snark_shplonk, + }, + CircuitExt, Snark, SHPLONK, + }; + + fn load_circuit_args() -> CommitteeRotationArgs { + { + let pubkeys_compressed: Vec> = + serde_json::from_slice(&fs::read("../test_data/committee_pubkeys.json").unwrap()) + .unwrap(); + CommitteeRotationArgs { + pubkeys_compressed, + randomness: constant_randomness(), + _spec: PhantomData, + } + } + } + + fn gen_application_snark( + params: &ParamsKZG, + pk: &ProvingKey, + ) -> Snark { + let witness = load_circuit_args(); + + CommitteeUpdateCircuit::::gen_snark_shplonk( + params, + pk, + "./config/committee_update.json", + None::, + &witness, + ) + .unwrap() + } + + #[test] + fn test_committee_update_circuit() { + const K: u32 = 18; + let params = gen_srs(K); + + let witness = load_circuit_args(); + + let pinning = Eth2ConfigPinning::from_path("./config/committee_update.json"); + + let circuit = CommitteeUpdateCircuit::::create_circuit( + CircuitBuilderStage::Mock, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let timer = start_timer!(|| "committee_update mock prover"); + let prover = MockProver::::run(K, &circuit, circuit.instances()).unwrap(); + prover.assert_satisfied_par(); + end_timer!(timer); + } + + #[test] + fn test_committee_update_proofgen() { + const K: u32 = 18; + let params = gen_srs(K); + + let pk = CommitteeUpdateCircuit::::read_or_create_pk( + ¶ms, + "../build/committee_update.pkey", + "./config/committee_update.json", + false, + &CommitteeRotationArgs::::default(), + ); + + let witness = load_circuit_args(); + + let pinning = Eth2ConfigPinning::from_path("./config/committee_update.json"); + + let circuit = CommitteeUpdateCircuit::::create_circuit( + CircuitBuilderStage::Prover, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let instances = circuit.instances(); + let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + + assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) + } + + #[test] + fn circuit_agg() { + const AGG_CONFIG_PATH: &str = "./config/committee_update_aggregation.json"; + const APP_K: u32 = 18; + let params_app = gen_srs(APP_K); + + const AGG_K: u32 = 17; + let pk_app = CommitteeUpdateCircuit::::read_or_create_pk( + ¶ms_app, + "../build/committee_update.pkey", + "./config/committee_update.json", + false, + &CommitteeRotationArgs::::default(), + ); + + let snark = gen_application_snark(¶ms_app, &pk_app); + + let params = gen_srs(AGG_K); + println!("agg_params k: {:?}", params.k()); + let lookup_bits = params.k() as usize - 1; + + let pk = AggregationCircuit::read_or_create_pk( + ¶ms, + "../build/aggregation.pkey", + AGG_CONFIG_PATH, + false, + &vec![snark.clone()], + ); + + let agg_config = AggregationConfigPinning::from_path(AGG_CONFIG_PATH); + + let agg_circuit = AggregationCircuit::create_circuit( + CircuitBuilderStage::Prover, + Some(agg_config), + ¶ms, + &vec![snark.clone()], + ) + .unwrap(); + + let num_instances = agg_circuit.num_instance(); + let instances = agg_circuit.instances(); + let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); + println!("proof size: {}", proof.len()); + let deployment_code = AggregationCircuit::gen_evm_verifier_shplonk( + ¶ms, + &pk, + None::, + &vec![snark], + ) + .unwrap(); + println!("deployment_code size: {}", deployment_code.len()); + evm_verify(deployment_code, instances, proof); + } +} diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 82c5d436..b022e057 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -19,8 +19,8 @@ use crate::{ poseidon::{fq_array_poseidon, poseidon_sponge}, ssz_merkle::{ssz_merkleize_chunks, verify_merkle_proof}, util::{ - decode_into_field, gen_pkey, AssignedValueCell, Challenges, IntoWitness, - ThreadBuilderBase, AppCircuit, Eth2ConfigPinning, + decode_into_field, gen_pkey, AppCircuit, AssignedValueCell, Challenges, Eth2ConfigPinning, + IntoWitness, ThreadBuilderBase, }, witness::{self, HashInput, HashInputChunk, SyncStepArgs}, }; @@ -30,8 +30,8 @@ use group::UncompressedEncoding; use halo2_base::{ gates::{ builder::{ - FlexGateConfigParams, GateThreadBuilder, MultiPhaseThreadBreakPoints, - RangeCircuitBuilder, CircuitBuilderStage, + CircuitBuilderStage, FlexGateConfigParams, GateThreadBuilder, + MultiPhaseThreadBreakPoints, RangeCircuitBuilder, }, flex_gate::GateStrategy, range::{RangeConfig, RangeStrategy}, @@ -228,8 +228,8 @@ impl SyncStepCircuit { g2_chip: &G2Chip, bytes_compressed: &[u8], ) -> EcPoint> { - let sig_affine = - G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()).expect("correct signature"); + let sig_affine = G2Affine::from_bytes(&bytes_compressed.to_vec().try_into().unwrap()) + .expect("correct signature"); g2_chip.load_private_unchecked(ctx, sig_affine.into_coordinates()) } @@ -313,7 +313,12 @@ impl AppCircuit for SyncStepCircuit { _ => { thread_pool.config( params.k() as usize, - Some(var("MINIMUM_ROWS").unwrap_or_else(|_| "0".to_string()).parse().unwrap()), + Some( + var("MINIMUM_ROWS") + .unwrap_or_else(|_| "0".to_string()) + .parse() + .unwrap(), + ), ); } } @@ -325,7 +330,7 @@ impl AppCircuit for SyncStepCircuit { stage, )) } - + // type ThreadBuilder = ShaThreadBuilder; // type Args = witness::SyncStepArgs; @@ -366,118 +371,145 @@ impl AppCircuit for SyncStepCircuit { // } } -// #[cfg(test)] -// mod tests { -// use std::{ -// env::{set_var, var}, -// fs, -// os::unix::thread, -// }; - -// use crate::{ -// builder::Eth2CircuitBuilder, -// util::{full_prover, full_verifier, gen_pkey}, -// witness::SyncStepArgs, -// }; - -// use super::*; -// use ark_std::{end_timer, start_timer}; -// use eth_types::Test; -// use group::Group; -// use halo2_base::{ -// gates::{ -// builder::{CircuitBuilderStage, FlexGateConfigParams}, -// flex_gate::GateStrategy, -// range::RangeStrategy, -// }, -// utils::{decompose, fs::gen_srs}, -// }; -// use halo2_proofs::{ -// circuit::SimpleFloorPlanner, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, -// poly::kzg::commitment::ParamsKZG, -// }; -// use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; -// use pasta_curves::group::UncompressedEncoding; -// use rand::{rngs::OsRng, thread_rng}; -// use rayon::iter::ParallelIterator; -// use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; -// use snark_verifier_sdk::{ -// evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, -// halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, -// CircuitExt, SHPLONK, -// }; - -// fn load_circuit_with_data( -// thread_pool: &mut ShaThreadBuilder, -// k: usize, -// ) -> Vec> { -// let args: SyncStepArgs = -// serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap(); -// let range = RangeChip::::new(RangeStrategy::Vertical, 8); - -// SyncStepCircuit::::synthesize(thread_pool, &range, &args).unwrap(); - -// let config = thread_pool.config(k, None); -// set_var("LOOKUP_BITS", (config.k - 1).to_string()); -// println!("params used: {:?}", config); - -// let instance = vec![]; - -// instance -// } - -// #[test] -// fn test_sync_circuit() { -// const K: usize = 20; - -// let mut builder = ShaThreadBuilder::mock(); -// let assigned_instances = load_circuit_with_data(&mut builder, K); - -// let circuit = Eth2CircuitBuilder::mock(assigned_instances, builder); - -// let timer = start_timer!(|| "sync circuit mock prover"); -// let prover = MockProver::::run(K as u32, &circuit, circuit.instances()).unwrap(); -// prover.assert_satisfied_par(); -// end_timer!(timer); -// } - -// #[test] -// fn test_sync_proofgen() { -// const K: usize = 20; - -// let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); - -// let mut builder = ShaThreadBuilder::prover(); -// let assigned_instances = load_circuit_with_data(&mut builder, K); -// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - -// let instances = circuit.instances(); -// let proof = full_prover(¶ms, &pk, circuit, instances.clone()); - -// assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) -// } - -// #[test] -// fn test_sync_evm_verify() { -// const K: usize = 21; - -// let (params, pk, break_points) = SyncStepCircuit::::setup(K, None); - -// let mut builder = ShaThreadBuilder::prover(); -// let assigned_instances = load_circuit_with_data(&mut builder, K); -// let circuit = Eth2CircuitBuilder::prover(assigned_instances, builder, break_points); - -// let num_instance = circuit.num_instance(); -// let deployment_code = gen_evm_verifier_shplonk::< -// Eth2CircuitBuilder>, -// >(¶ms, pk.get_vk(), num_instance, None); - -// let instances = circuit.instances(); -// let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); - -// evm_verify(deployment_code, instances, proof); -// } -// } +#[cfg(test)] +mod tests { + use std::{ + env::{set_var, var}, + fs, + os::unix::thread, + }; + + use crate::{ + builder::Eth2CircuitBuilder, + util::{full_prover, full_verifier, gen_pkey, Halo2ConfigPinning}, + witness::SyncStepArgs, + }; + + use super::*; + use ark_std::{end_timer, start_timer}; + use eth_types::Testnet; + use group::Group; + use halo2_base::{ + gates::{ + builder::{CircuitBuilderStage, FlexGateConfigParams}, + flex_gate::GateStrategy, + range::RangeStrategy, + }, + utils::{decompose, fs::gen_srs}, + }; + use halo2_proofs::{ + circuit::SimpleFloorPlanner, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{keygen_pk, keygen_vk, Circuit, FloorPlanner}, + poly::kzg::commitment::ParamsKZG, + }; + use halo2curves::{bls12_381::G1Affine, bn256::Bn256}; + use pasta_curves::group::UncompressedEncoding; + use rand::{rngs::OsRng, thread_rng}; + use rayon::iter::ParallelIterator; + use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator}; + use snark_verifier_sdk::{ + evm::{encode_calldata, evm_verify, gen_evm_proof_shplonk}, + halo2::{aggregation::AggregationCircuit, gen_proof_shplonk, gen_snark_shplonk}, + CircuitExt, SHPLONK, + }; + + fn load_circuit_args() -> SyncStepArgs { + serde_json::from_slice(&fs::read("../test_data/sync_step.json").unwrap()).unwrap() + } + + #[test] + fn test_committee_update_circuit() { + const K: u32 = 21; + let params = gen_srs(K); + + let witness = load_circuit_args(); + + let pinning = Eth2ConfigPinning::from_path("./config/sync_step.json"); + + let circuit = SyncStepCircuit::::create_circuit( + CircuitBuilderStage::Mock, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let timer = start_timer!(|| "sync_step mock prover"); + let prover = MockProver::::run(K, &circuit, circuit.instances()).unwrap(); + prover.assert_satisfied_par(); + end_timer!(timer); + } + + #[test] + fn test_committee_update_proofgen() { + const K: u32 = 21; + let params = gen_srs(K); + + let pk = SyncStepCircuit::::read_or_create_pk( + ¶ms, + "../build/sync_step.pkey", + "./config/sync_step.json", + false, + &SyncStepArgs::::default(), + ); + + let witness = load_circuit_args(); + + let pinning = Eth2ConfigPinning::from_path("./config/sync_step.json"); + + let circuit = SyncStepCircuit::::create_circuit( + CircuitBuilderStage::Prover, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let instances = circuit.instances(); + let proof = full_prover(¶ms, &pk, circuit, instances.clone()); + + assert!(full_verifier(¶ms, pk.get_vk(), proof, instances)) + } + + #[test] + fn test_sync_evm_verify() { + const K: u32 = 22; + let params = gen_srs(K); + + let pk = SyncStepCircuit::::read_or_create_pk( + ¶ms, + "../build/sync_step.pkey", + "./config/sync_step.json", + false, + &SyncStepArgs::::default(), + ); + + let witness = load_circuit_args(); + + let pinning = Eth2ConfigPinning::from_path("./config/sync_step.json"); + + let circuit = SyncStepCircuit::::create_circuit( + CircuitBuilderStage::Prover, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let num_instances = circuit.num_instance(); + let instances = circuit.instances(); + let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); + println!("proof size: {}", proof.len()); + let deployment_code = SyncStepCircuit::::gen_evm_verifier_shplonk( + ¶ms, + &pk, + None::, + &witness, + ) + .unwrap(); + println!("deployment_code size: {}", deployment_code.len()); + evm_verify(deployment_code, instances, proof); + } +} diff --git a/lightclient-circuits/src/util/circuit.rs b/lightclient-circuits/src/util/circuit.rs index b7d3a2c3..6966d49c 100644 --- a/lightclient-circuits/src/util/circuit.rs +++ b/lightclient-circuits/src/util/circuit.rs @@ -169,12 +169,12 @@ pub trait AppCircuit: Sized { fn gen_evm_verifier_shplonk( params: &ParamsKZG, pk: &ProvingKey, - yul_path: impl AsRef, + yul_path: Option>, witness: &Self::Witness, ) -> Result, Error> { let circuit = Self::create_circuit(CircuitBuilderStage::Keygen, None, params, witness)?; let deployment_code = - custom_gen_evm_verifier_shplonk(params, pk.get_vk(), &circuit, Some(yul_path)); + custom_gen_evm_verifier_shplonk(params, pk.get_vk(), &circuit, yul_path); Ok(deployment_code) } diff --git a/prover/src/main.rs b/prover/src/main.rs index 13db7dc6..469b92d2 100644 --- a/prover/src/main.rs +++ b/prover/src/main.rs @@ -74,9 +74,9 @@ async fn spec_app(proof: &Proof) -> eyre::Result<()> { generic_circuit_cli::( &args.aggregation, - |_| async { Ok(snark.clone()) }, + |_| async { Ok(vec![snark.clone()]) }, "aggregation", - snark.clone(), + vec![snark.clone()], ) .await } @@ -134,7 +134,7 @@ async fn generic_circuit_cli< true, &default_witness, ); - Circuit::gen_evm_verifier_shplonk(¶ms, &pk, &args.path_out, &default_witness) + Circuit::gen_evm_verifier_shplonk(¶ms, &pk, Some(&args.path_out), &default_witness) .map_err(|e| eyre::eyre!("Failed to EVM verifier: {}", e))?; } Out::Calldata => { From b6a9e02d4439ba9358e235cb6d2c95f5d5b8163e Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 20 Sep 2023 13:59:37 +0200 Subject: [PATCH 25/33] add test with testnet data --- .gitignore | 1 + lightclient-circuits/src/sync_step_circuit.rs | 6 +-- preprocessor/scripts/generateInputData.ts | 4 +- preprocessor/src/lib.rs | 38 +++++++++++++++++++ rotation-aggr.calldata | 1 - test_data/sync_step.json | 2 +- 6 files changed, 45 insertions(+), 7 deletions(-) delete mode 100644 rotation-aggr.calldata diff --git a/.gitignore b/.gitignore index a6a12395..73579fc6 100644 --- a/.gitignore +++ b/.gitignore @@ -35,5 +35,6 @@ params/ *.pk *.instances *.proof +*.calldata consensus-spec-tests diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index b022e057..53c336a6 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -420,7 +420,7 @@ mod tests { } #[test] - fn test_committee_update_circuit() { + fn test_sync_circuit() { const K: u32 = 21; let params = gen_srs(K); @@ -443,7 +443,7 @@ mod tests { } #[test] - fn test_committee_update_proofgen() { + fn test_sync_proofgen() { const K: u32 = 21; let params = gen_srs(K); @@ -475,7 +475,7 @@ mod tests { #[test] fn test_sync_evm_verify() { - const K: u32 = 22; + const K: u32 = 21; let params = gen_srs(K); let pk = SyncStepCircuit::::read_or_create_pk( diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index b1f00fb9..41e96dea 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -170,8 +170,8 @@ let input = { pubkeysUncompressed: Array.from(beaconState.validators.entries()).map(([i, _]) => Array.from(g1PointToBytesLE(pubKeyPoints[i], false))), pariticipationBits: Array.from(beaconState.validators.entries()).map((_) => true), domain: Array.from(domain), - attestedBlock: attestedBlockJson, - finalizedBlock: finilizedBlockJson, + attestedHeader: attestedBlockJson, + finalizedHeader: finilizedBlockJson, signatureCompressed: syncSigBytes, executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), executionStateRoot: beaconBlockBody.executionPayload.stateRoot, diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs index b0393f51..ed15ed54 100644 --- a/preprocessor/src/lib.rs +++ b/preprocessor/src/lib.rs @@ -153,3 +153,41 @@ pub async fn read_rotation_args( _spec: PhantomData, }) } + +#[cfg(test)] +mod tests { + use eth_types::Testnet; + use lightclient_circuits::{ + sync_step_circuit::SyncStepCircuit, + util::{gen_srs, AppCircuit}, + }; + + use super::*; + + #[tokio::test] + async fn test_sync_step_snark_sepolia() { + const K: u32 = 21; + let params = gen_srs(K); + + let pk = SyncStepCircuit::::read_or_create_pk( + ¶ms, + "../build/sync_step.pkey", + "./config/sync_step.json", + false, + &SyncStepArgs::::default(), + ); + + let witness = fetch_step_args::("http://3.128.78.74:5052".to_string()) + .await + .unwrap(); + + SyncStepCircuit::::gen_snark_shplonk( + ¶ms, + &pk, + "../lightclient-circuits/config/sync_step.json", + None::, + &witness, + ) + .unwrap(); + } +} diff --git a/rotation-aggr.calldata b/rotation-aggr.calldata deleted file mode 100644 index 276c078d..00000000 --- a/rotation-aggr.calldata +++ /dev/null @@ -1 +0,0 @@ -00000000000000000000000000000000000000000040e8c2e6254055a03c4038000000000000000000000000000000000000000000e63383b2cb454f524778d00000000000000000000000000000000000000000000011063deb610e5d7badc70000000000000000000000000000000000000000001b8532a3f2dc08d08c632d0000000000000000000000000000000000000000006349176c4b60d4a723ae91000000000000000000000000000000000000000000001d491833b03f33ddb29d0000000000000000000000000000000000000000005fa70b66c56f175259dc59000000000000000000000000000000000000000000cf5433d5e8417542c2ebf1000000000000000000000000000000000000000000001b1484b26f50775ee74e0000000000000000000000000000000000000000003607702e7972efc5ae41100000000000000000000000000000000000000000009ee3bee511e900b42fb00100000000000000000000000000000000000000000000089a8b0bc1e385593c10245e4f4ae6893a2773c3e98090ec848e3fab2178e135074bf784ea338312839c254cae6674da73cdb5d9edc060a9e9bedaf52a5fffeee26e44c188c8e87da7ce01ec3393707594c19e519a5f05c3a2c06f4c3d3a77412bd2fecfd7bd1e8e8932144aa5bd7322a82a058bf54c3fbe0d3894c4fb89117fea6b51041f971c02b82a0de35bbb8cd61c80fe3345a24b33d38f118d4e94afcecf4ee369b0b7344303ac26875c22d9f9a6e289fdde18fa35fb58eaf79dd085867292e40b05ca682e1a1c13c43f6d5ed72a810ff7988e55c40ef7d759b8a1d387cd24ebc70048bd28962429977c94f9b79977a7f5850c90a8dc6fb5f28da84945f8e58cc7e26c3a4c42e01c55d4266d4318a4a6ca9feef141cf2b885694d2d4506bbc158c69b78db8847f272579622726e031209788349fe38f863ce98b16df435780d9cf363cb8b5e48b2109eceb10cb5518b795eaf6a2db032fbe0130a8fb115e6692d0dd17b10f32ae28032d3fe5e62d2b5c9c53da2ad82c44d22e7d42e6320af3192f356083fe65d52a13bee8bfa3e59c1cb6771d2e4c2b1e12048610f1fad1d087483727a14eaf8124d569bf9b57ad57cf76109d0462480944f02fc18cd28d6bff6b08df526ad5c62c91711b8d3d3de8c0d156b8cecc2249b234a3fe00f7cd8553aba642238558fe05ced8fe219ce8d19957a77c4b556a941734fb70078175e02dc3ab849390e3e91305b6d9d93635534fa525264c5f1fde16c13ee760e37833ea20ed7bbfcf6b1a102f8cbf6d2189ad75ca2e59d4b81a5b856ed2aa0fc22803e71e665d35e1dcdf150338d04546c6db450b5efbe2b84aad9de4ee18d3d9ff88236f6dd71ff8d5341228685e28004d4fab0119478468878ee90f8eecc2164bb6761ca3b80d89392f09f4880d4da06a93a407c58365fcf1d007844703d2b4ada87dfb02bf53dd28ec266ab5cf4b29e2d226eece702c8dfbaeef9751585b4763bd45ff2e17bae0c6580cc8501eeadd5cc3c585edfd388136aaab39a6b95ef0a0c83066c44177fe46b92195942652df97fbb4f33c0a5935036b6b549c43b9f2e07a5e6bb401815b0a9f210b8252098e3dba3e50adb9d17143aace7b0d10abd058e55d3ccb5b11431d4b092648e5796c49e974dc2d8832ea033648f0af598a791896b3c71424e07ab9d4058594d91ae0a7e7ecf20d89c6593335293f6ed684806996492eb7d3f1d3268f127e0ad835d7300bbe2d185cfbc63dc061a4f32304951e612a42bfc00657a7970036c770bd1435866f47291d34051c82175d8038a0d16c2927a05666a6990fca27cd75735a5a2c4031935ccc4b8d996bfdfb2a6851e7f8911fca52f289707b9f2b0bc0d658d5084da79b2f4a8dc8edb9f27f04716020e8d4a02e93fcf117b0ef26f6b2293f33c418d1cb02d5b744c0f4ae6449f388badc4bce2bf35c4edf188f162a411d50317a4a7b2765400c04ae039242d3d53fb5618cf0d7812a6568a5e507f725ef1ed1ccd8bc9a9705d1d2dee59a7bb422ddc9f607ca1ab58c207adb8d1ef967cbc75f5f57df2efe771b542efd9572ef50fd2ae2ac4305cbd1bc9a33a1296703ffe4427d4a7c415ad6aba3ebdd588975af2a8e5cb98fac4c4ee29c6fee00990ad7eb38f17008011fedca459e41f0b8bf2eb940cf9b0751dd3ded958e8316e29679ccd33cbe2248a125dfbd9e71b7854abb74245ffb75e5aa9cf58a7cad0cff5777715ab92bdd518bdab4fb310d8f016c01f7c8f3ba8d9d4273e0c9eeee23934b76067ef1f99711d081451df939d185b8bcab853a59a9e25a006db48c670bd8694cee90474451f4f79920a9129a14ebb040cf9add08507a6681ab021bce11175df7eeaa2dc7c1a028d7f1ff930fa09bccef598ea16652d46ad4a26508f6070ce2be709d963fbb01ee5a19ec645f76cbb1a255d44497ac4cd0a71b707d173018352db3fc51c83b99690466876707a8923f4956e340d9670aaaf51f94d17c23a098a7cfa7fe79fa8667b9b0f7dcc53c11ec2fe6ac24f4b020dcfa913ed55d266f618941284d73c76887113dd6aea1471f38b0277b6e1a978f7ca9a91df4440b93235f32c4908637d2402919b060b096c7bab44714da2af503ad72b6d19e92076f8e00806c8bb51523e43f595e82708925bd49702ca4c0cd2b70f326b1046509ac255c16bac6716fb553b3285d5dee47d913c292d39b9779f2800dacacc6dd2e346e4b39b85ff77ec830f41a84fd8749e2218970cb8da8d457af9d451164211915d7ea96e27461f82f3c385315462191b4e48a0ecb5580749f6c45a0a756642dc659ef138fdbd87a01549f21b7556862c6c247063be5a73cc6fb27fe18260d1a61bc09aa773d2daf32b063d74222987292638d322fefed12a6b307c6fcfab026807094eec7ada812e4aed6c16720cb9cd53eee7fe452907624b3948f07d36e112dea434884c6c4c19c93e632ad61243eb3c647e6d6e76ac06fcd53594900fd19ec2c4dd3348cab789048bedd4b9800457dfb97635d3f780b270c0d1fb864bf2d3a601778bbf34966df2bbb186257ab4974a4c0521a0f175c50e312e390d85b05cf1bc7b6bc8ed7991ce9f033436eaeaa120ae3ef10913d59f87f998224db8e2c942c9ff83155b4bf0613daefd7f6050dbe8457c6ad3387eec1ad400eec0e5a1b8de5b511203f06016e3827453fe668f9ffde367a307feb68f2642f1614d09d22adf40fba61f6e53e4ce5b09fe6f2df038f75bf3a340791bfc7448713d99c4b219ba8704aa156fbcd3fd5754cdbdaca9cbac9490953dec9c602de866cbbba3b1a0d9bc9928ca2dc984174d00286763543c3d3add04395acb617aea43486611a1434914357d1277c53aaba8f5bb0d2350ac9c39b82bce59578abcfa336a3cad412a35f5d9c622b366b54b20e3487731e6b7903fba7b76d3ac2dc1bd7da1fd52b23d1798268c1dcc72d696ed3bba8a88d72404568d5d1f7da2829e31b40e5f3ac0d72efa0eca494a769841baa5208bf4e8d7523e53af63bae5e9f38003dee853a22dc398a68ac0d3fb7bbaa6419ece77aa000434a0340b878a3d9097f1d27b1ed1aa4cb76e44ab8107cbcb779542e0ea539a2e636b0173ea174cc94115c3907922ab551fea3ea18f59a83a1acc544c728ef8899e9c990c60f3ec5db00ff8ff65f2ec5290ec7d41c039781e69839467cbb0a038c70bca4f48de7793a539df876bc0f9fcd9c1caf3e3decaf6d7d91ec0b64ce8ca1c212863782adcfa46ec22c59ba0cd425cf190569a1f1df0a1e865228c3272db39725dc289b1249bc2bc864d62921ed46babcc7ece662bcbbc6b0ef3bfbd8554aed2bd25f5255d94d60f3215d6103bc4a7630b11910505e0d70673b3c8ae2fa57136a3630689786c902428cc2e513568c3464a575dd4e2c0f39f5ed4f0f3806b2cdc0071578aab199b4bb52508a0a0028f61840afc8350508ae32c0e18afb607ba4b7be65a231a48c0afde3351528bec47886448414fa43fe65d0e617b8be65f3f88dae4dae02cbec03bca1bd98247fb57b47f047e053b5a92d8468d579e5fd12adef27f66b9375ce69e1b35f9c1a1d7dbc8ad890204b48f3698d372748708548441fca124e2a05514891f19265141800b17892677e5ef98d5703d2b05312af9db74efb102d2406874b4162109922c7b8ed53af9d7f71f53a8fa6548374bcbe164aba1d8f31e7f76a540f42af4f0c8981a4f3d386c9fba7b92d452b59d237db56b180a0c77f1a1685493b49fcb71ed9f61ac8ff20dd4dcb5166666b565ba54204ea9e0a44fd409a9b12dccc04aa0973758c86caa43e1c47a26fe35595bea5d5a8d80f9d3f7ebbca936c378047ee103fd97ed85066008a87b3d85cd4f05471ecf33ca7b9de2c962d347e92bbb39e15d3c29428448ae73a135fdd70532c2714a775fa7a27c19a21bbfd6443ac3bfe094f3b2300a7548f63a96bdf974bfbd40e6e96403ad0ab3d5059ff3505b975be1dc1b0ffdac95ee0268752b469fed06079dde4a0dd7bc784d1242027e556648f109900132079a6dc13bf5052c90f0f3fb02f843ced2be8c8c28fe77808b81397011744bd1b89b42417b00882fc54cfc8e1481deec0c59c6db49df3346f3599a7122af6ef7ef340c8296565050a146cfd27c66bd519167ca544a7cb6257c166630c16a9f06651ebb4756af105682eb5b3f76dc073f9294c730cc950c625a186d62b715cdf4e111beaefb9512d0230509254e474959b54f6be74f03c822b3a450d08fc46e9c3a79cbd87fa0bed680939283e8c2c8acb86c5a0736daf95583595a22b5384a4a75da47f5b005d3ab3e036c6afbd041253cf5b2bdcd1dc3d5c0e3c982e69fac5cee46c9eb421ae244da44b617366b1029fda9e52e20babbd8d59972410b12ba2c354ccb84d53456417843a349c8bd89df2cd74b195529387032c570b2b1de34fe200d1eeb9447acc39e109df82756990f4b641c25b170768fedce1ce254f544b2ed5949f9d7ce5e6ba5991a7d51c41d78c6206a8fec112c95efc30ef143b4d5120b224699aaa59d01cb21ebfdb7c9d8ddd52ecb141b76f0ec26df65325a9413dbc90508e40e8f7b974c56f5ee4fbcc50a974349c9fcfab32b9e1a618204c0ead9367e6594e11ec32ba5390f6f05a35544b4f34e4e738270f9024bb6a039db94a6f60870aba76d98c8e590a703ae616a44d4b9a87579907d9084c86bf2cd4d4cd9a0098e8ce706fb29184e35515798a26a5a33c420590fca6d97ef07126d991472943e76bd74e21e796e96f5165cfa06e36bbd8c6c665cfc11a83ae530af4e6d1a1078bc0acb92f7f18b7e88d1a57c746cc2256c131eecee51dd5b4d91d3ebd40301eb6eab6ff37e213cfcd88314376971395e4f581169285d618595925fbabb35d711277d807b1e2554af645b2ca520970bbf81898e8ab9b6073c471194d924f4b85f3340ed090afe6b0399bf04fc9740b4ac3f35bcda582b97c05f2124c0db0ab890cd730776c3da6f31b747b1892c847d5ba64abe1546ee6d319aa1c22a69ce73ba5b3264823b6a3ebee1118dc07ae8fc73c5165cef664f69874121aaf074647f2ad1bcc8dbfedb1800248b82515aaa797985e64a003e68e6b0a8f0c02ea4cf475f88472238a15fd92430d89ae2a5efd9bb100b43d80fc6ce1fd2a0fe711f8d62e2cca011834e21a77a3b8edff727022e790cf9c80c6d50fea87e0126ad92ad26c1aa10b5ebaca99ab825f60933f040b6052b5389b13c03530ab0e21fb458325c9c45a153cd013646af8019aa23ce7b6436eaaa4c337bacdd3c15011c2fa407fc6d344323d1b4b8bd15c034b63d8d57a9cb04b73c62196c25af1700fbbef20f370b31a8192a2c0b9f887fdc9b33d8f92e1ff1def4a127b41af352224388d6373463bf93dcb72bc8217ada2254ea2c2a35b00e49742ebbcc91d14371e90ec6b793418843d77358c6b740165073c04bce8d9f5ef5a6228191e5a3bd022997b0c5e557e58acb02da49cc3cd0cf2bbd6172e3b35279a09b70bb8e7967f271eb329d20b403705ea21375b5ed0f3254c687a4cb1b4fe52f7e0cdfedb3aa115a4d470f08ef11d5b183f7ec4be2204cb13ed001b7afc733da4df6ea2ac7adc1032f270023f2a7da97595bc199c8d774b7d1fe32cd25ba61bb95867fd999bc61086adec1a1064c6fcbb9558d37d70594e271fe27b6f64d01cda6a12c52a1bea2b55db24ee9c56d2c41fe210064b4a1d6894b37812300f2a1ba9a1c4fba6d08d0d43a1a1f6d90510a7663341fbf6f8bba60503e1a508c94d1f3d9405a957d49f24e82ce5ca65500222977b147a2feb8b27a1c32a49d63dc8ea6d3961decfb2ad0332ee52efa08e196919d4cf153c74dac8147c733db946bc5c09f230e63ccdab184bf4c3508176c73aa9ac2e9e4d59a290a9d019e030fef29d624cffa2fe8b3d041f937e6735d368dc8a1b133e81164fe92ff56bbefd218597dec3ca1d11e2e70f1dded7c6f6a56e0b704ce4cd412a41567792d2f69bee05dcbd372607b3d2471ec9013f51cac57a0ccdeba889ba3f8d104e20e1d72cbde764c8f044c9b071fb30420190d0a0b7ab8c71959af775f64225e2a533a4c8d1c7061c955fe03d56e81163a18bf6c6b43859de8be6f3d15b344a5aa1907957e9909c9a02c5cd0681ed18137dfe68321916d28d970e189d40b612b654f03fb22434267e7471ca6b47600ea0958dd4832712276321f2ffffeb7edb0a969c4ed273b9e9d0f0beab61cee3206444a1d5aed6ed3fa465d5a432b464d820d056d675de2542bfcecb5552a595046057694a3d06b3d1d32806d842dfb32bdfdc3bc12a1b26a8c5bbbdd5aa27170220ffaffd6de6b513e239fc8839344f91b4cd0fecebd5796afb955b7be02a5e03dda1dabf338c32f8f8685cc59d6c69c09cea9257d384b79b9a860434bce4d22a723298d45051a0c9ffdfcf495ed8c329a650d5533b076f30c8d58eaa73b39427b4f8b8bcaf14e0f86ebb3a272a4fc38f58b9e7791961e801552219c506beea2a1bd6ec380f0cf8c41a527490ed15da5f57017c3d9431c673d0f61420ad5744114502b3c0586cb2fae588a8211609d798a0cce1d25fc4e4ad4af05f3f32165f1dca0c4720603a18a17aa987b1a81f0cfa2d34eb59b84319653fad679ee24b03166fc34c4a6ff4728ca8e00b10db792ba624b186e7dff2c91eaea91a1978b2be2a6f02855d325a85ba34b06fd71827f3c1ef6ac0d43346e7a652d2550993bba827ee9407cea79270ac3cdea7585e36321e2ad54dd482ad0b47e178af00629cd105a5473b2b0aefec1fb9518545eba56dab54cb27b98ff87f8c00bac35ed4d068050ad4021fa1f09601ffb30eee1b128fb65683d3ad9124c54816bacb12b4587e08ad029248c093b756e44e048efa050ebb0a26d56e7d9ce64be776491dab13ff21b715f4cfca876efbd8ce5a22a1c5ce6d7f625c0427505ffc88eb4c3ad54dc7031993a54f1621282988843dd655a25f098d14acbfdca37fde7e4ef85513f868013b3bee0ba5ec0e8d3a3b90ba81d5e243d35397d58c85e9c5cd26f3bbf64fa520b6efbde231efe51bf0c2ff6c9d093b4aff1e74538c24711186079a5988ccca1497e8dcbd75919c819eed1fa5281caa89a3579ee7b23ad4ade6e9c9b6de4d75163b27a4f7f82039f91c4ce943a4a5fd903acb2f899124f5213d798c6470a9122bd8063f1f8609f21f5059339a691fd5abbc96bab19d55eaf6746ddd9d1c19a9150486cb29afd78ab676b0b038aa7f4aa70fad639411f051135633d9728940170122207f71227f930a847f1d76f9571783c43f362dde369f858bcc7573db1992134676ed8445e4147d5d8cbb086cb8d6ad67e89b5195252971f6b498cdb743c30ec688ffd732124d138e4f01ecad65ffb35ae995cafda4575c3ad5baa2a6ec03076f56c61f3850431c32d6515240fbbf7308c9f16fddcb0a1113beccc68d408e1908acc94b8fd3bfd444947104cfc2671d0c549e94a9ea59d384de7aa27a2288104af7b9a5c0fa3300160eac23a37e798a8a3506c72d83deef91fb376550b85b192926f79084563e1b93b17a3bed536fe5a1845f26e3dfaa0fb62ea929903bca1979c5f74710eaa30c23b0df0f2cccc6f5add0cb45559b162efb331ee7951bf81500979549764562520091895b96491617b3c278e228c1fe045b7481f34957b2048e8e351ee82d803fbf8c4834dae9ea4642d38f0a7a3813de3b3a8e18f82a8312f95ef40f183df0104691798fda57a1bd9cf16928145f44370e88e0388296ee2e22acbfb44789f1552df810658b95b5f0bdd58411bbe9be729a78091c3639600ebf55ddf9b8e9cd7df0cf3bc56a08dc66508ca1e0511716e17d0f54a68329191e444f86e637cf7c10db226f1f2a3bfa61417585a4569ec22f098028df5353f20a41ec958d1eb4640c4225dfbaf1087c002c8e4128f97f63525ab7038dcfa2060d24b59944f705e48165c96e9c081a120b4e27fb52484c7f15a604717c56488f211826144121efe03304b5c71c74c783ce0ec2e6fe6662c690d1bd6b399fa4680079d01f926321d6f7fb9bc8c09bf91c41b26f006d4cb78ef59afbb93e24525d1d18e394c3dab49b3d0e2ca5be4d78bd364494f0ae8331a031690be2722885031ebf51b7079e05c94c0f7fe126a3c3931eee048adc21132864fa02f343050e24034158b969d66aeb46ff6149cfd47dde01a8129d17bb596986be7c3b4cd35c9408424b12ad3294326f3d4818daad3e3053d756bf00d9eaabac675c1d11813169002fc895f08bf6869b30aaf3c8b975b3eddbd73c468d2d9c771a647acf0ddd040b3ac8e8f234fb1ad9eb95f8efc1baf0e13c22f07e0b9a7f1d9ff2bb68ceff1c1e1b9c2cd326fa1fe678310334b252bd6027909dce80afd0390608cc9152fd8d2c56422ed18bbc23babc27da0939bf399f992d4fb339a236968b1cfacec7569a01ea48f304f3bd7b2dc695524b24e592b7343535c29b464c5aca019116b209a52e32d377f83e1bb1320a7e33c9547238c69dac5393d05748e1e7bb49499cf5da2b100edbc9fcce5b41db619088fcab5162dc9675927d1bdb515c2dbd6c104a9826bf61e500caa7ad2f53c753379110bdc18b36839d5324896f3aed02317df80b0f49f6bea60abc44280aebf8b5f323d17029c175bc13f425d3478e84cbd815522bd578eb37d659031515958a63a7ea33c5ed9d053f2686d0b8a36fd48b67d1cd2f515c1f59cc67060c55387aea792a501de054ec946ee976bdbc1229bb615be02e751cac3baf74c5fb1d16ef35da448e0092d5b9c7a3a6d3f395d0a0c6d290c903f4ac8cf3f7d93578674ae1f7751d662e89b016f8c62bc462c80ec8972651342b8bf614ded7af0088cc1d009a03e33ce53e8408c0d27b398d82269b0d63957d053686428dc5af3d0c55b46f91ae4859c26b6758eef5a6fdc0f3ababcb26035c1df752cccdf3bd2e5acf651e0af3ca49b227e3a6c34fa0a850510deb2a107d541b63871d0c7fff2885b889d2f7dd80d9493b6c9c227dd2daa089a76e51fceb8b22562d616ece3bde00ace763954311b66bb7a037793be9e298348924eee0f6c3264ba58113782247960b8e3183032bd9c439a0a3fe563f9a4529fc33981c19311db0658fc26714813b75940755eaa47d5ec26e174b444ef7e3b216da24ed79b200654b158d915af212abe5f5963b6998239effafba20f7bbe7965c2b2bb46a032bbcd0fb60971db5e4261cfc81838d04fa1c384a73594a9b7e06e04af2e7eed50735d8b9099ad027f5b0260b742bc22f6567b055a3f9bbf07d4f5a20fcad5cec20821b0b77b2b043daaa5e116a2125db5f4e8238d5ae88a297d1a02765e7b7ca1ca8b80f40c2a92aaf69c46c8e61e37f27bb6e07ff80efee5b0c1d027bafa87609e724a766c347b4094b8982ac168ad45465361b5916e4b3999c3bdce2352cf513e07aeedaffdb6034f84df60d30bb33b368e7bc35eec365b4c90937bf75017b0d7a92597ef830a84e09ab28763f1b203036e53c18ecc36746c21b82f0ad0f000b4ae54216075b36bfd48f6705de8721d1236493a378da868009f9296a27e9fa03e3601894137dd5517d59eb231fcf1a266b12f0e8e4d4cd57677dcfd85e8668024660e616fdd38223fd2d9baee9798022e2e49932a5c1434cd4a2cbda9090012154639af7500ab1243c80c7a6bff01f917512e6cb931574c55bb1f0f8b08ab527b98b4b7c9e5631b79354c2c50fcf8c3ef2a8290e858bb87f8fb5d1caea321c222d4883e06c7286b0ccdbd786af2303cad42b2546b2f78cf693d9e61f70d0ee2a5415882d3db6896838af0cbb8cc2fa6f3008eaeacfeac0daaa4792745b0c971d6730b0ce5a53ede26ab288560371db48487e26f50f1debdce257145ad795ff0c5f395e6d00a2e3b9c8dc95ca5b001821f4d01c64de75af2926c8dd205d83e11c7dc5f043a9f410e67945d4c2a78b260b2c658579d77d29f4ee2d09e63917240582cf4fca47aae36a97ac0791903225b33254c98998962e2b4bd1ecd40d2e172d6b4ddd2581ee29d553083602036909395e32d5e794760601a2c8cd489382af1a9bd654d3164d1d08bc5b729aaccb6053e946b4119c2427217a01d615aaec31208f0a37cc14f62522c1c74b395e07725b19d79bd29c7bae74c2cbd1804d4ac10178c75d3facd6eebd4e24de4b9f39b2ed2d4eddde133e33951877d74d787d6c1a6763d2d1befe3c08ec0934a492cae91dad8b2c70366d586d7ada1d14f74e88073d38df85f9d9b1ce7dc1c01d09437f2d2967dc0f2267455e1a9091d2ec5bd906745e071e947a97b0cbab5321730078a6e8a94279e9667504de0acd2c575ca40308c8267058fc39826f353534310c42f38a04b6ee9991eb12d6eb5c36873f0d2553afd0f97b44b24520b2b0f22cdfb0067f00e5e803d6ae2897f7784b3a12ab058a0180488b30676ff9a5806521c44ba162216dc8e1fdf793abcec38e6d2ac81af89c821d0a8e5c136f27ce4a486c2e5bdeb427ad8bf5355fbf29d69c4549681b372e2f8a8f06573e6d60cde08d3728672271afbc4d25c79aeb64d2392d425600d1c5827310440fd4aad6de5581230b7dab0ad66141bd35ef1c8e6ef7c5829a0e25a26d1f1c26cae474ce69e25863cd08d65a51c1c5370b707b5ea4fa3575ca093db8dc3cbe60e13e08817a0d4b5ac40fdec8f5ce1b39adb230dbc3b2acf66218bf3e8a06d8393a27d93d1d12ffbaf3dcec936282dbf347f4f3a0b5663da3610e2ba9b5a398309d0221d211508dcc89da79e2cd5506af1723ff677f72b03dce1686990f5af296d3c16873b989d089e387e581780c888d3f79cf01fb7d96f9ce0294e56b2704ba3f618441fa6b61b36a8344ebfa3bafec159904f3d2a3df22182d08767560109f87198b110dc855114a160e6bbe1b6b4d1fa3055377e0ec352c00c0795007718d75a0120348d0932a024979d7c209135faf8ab2bfb02285e13c18d56db0d3b585c6fb86c407dde896cb61fdce185bf68d557e972e4a28da504e14a78565ac523fa3ac102e78dd6abdd32f4b2aafc2c7d2feaa2f5610265ad65e1b12a4c33528fbb58792b9b077a28e57be10d0171522322c3a0a6064abd6009b1dfe75db071e98ceb9670371c81b7353bc6ca0e042e18531ad2e55e83040ffd8278bc3b45137e287b323c41bf0d28559f574cd30310f5fde53f96e064a8b8a140836a5b97913e273e710ff9bdab7920cc6d90f31e6ed6ed8dc7073cf4a63879e2ddb3112965282b11d943d02c3f5d49b9a553bacd5609a5ff23e54533557c93e247afe8e19f5d0008b89fb9abc5ff252ba37190db67d38ba76604697aa7b08b92ded3a0e0d4883eef1725ff8da9eedc67fe5d607b9e9779a4574a7d716c847b006b995731d0baf1f35837aad8c333057a1ccca2d540bf3d53398d68012bf56ac0072fa372d017597322a87fabf18d4b0c1c9cd68b50af3de82ae16b110f312a121fa2f6f8b85e31f1ee68936861931cdc65cb5ef73d869ec4f956d49daba430a198848799e2a69dc0e553a12834625d67e2a6f4be7b146ff7ccd6763cdb676492417422a523eaa0e7c58d0f3af4ace8a7e730540e93baee90285f8dd52cd1b481cf472c00fc1a8b8068f8f29014929ffe85f570ff9a4076abe78886fa90fc6580f04aa21cc39098dd3b8641abbae3f7c1f8b8e2c0689ff4f3a328a5d1d044dae1c2e5b12d693c7a61e8a5d81b4f46c913c5e4b86c50aea05a717820b1fa1bab026bc7e70e11d0fed90dfc448758461fd9c56a6e1bffff700a90b35a342ff04c3289e6174c5295f52e9313ae4bd6192aae23abfd4844db9c6a0fe70aeb4dac6cc0c0596aa519f559152df42742dffd1117fba7ca1c3e153b6806ceeac062ca7651e70f6179bf84a1383fa291cf6817f2c6c739981ea514625d990daaf933011be298837385ff2179965694749343c1c08172fc55eeee7be760ab63a57e5afab242d9d718a1034b16cc7c62e25c5436903a055c01cdf14131b7b8eecebabdf5ede2beb37998ae20cbaa530f08c347ad4f7b881440dfe857ce28031a7d0066ebd6b18183c0dd513e3fb40aa11b8ad969f95eb8ef0696fff64a9b84b3bdd34be42c5297957effd213b1d8a9c93b419c0f95db49b8ee46d8f15e05ba926924b4a131c05b3d0964f13ef35d8a57e53752a6aaec8b645031fdf17fd04b218eb483c289709fc22f714ad4c9348f60f6fab044a650cd14f1fa941fefe080b82b1ce61deee2862662ad9da49e84878eee7e6b84a3ff4ed7dc51a6324ba89b63361e3009a0c2660ce5f7c9c624b35c44a66184410de86088cb20088981595d52a6b407cd8b80c8235fe02453344bbb1bc3dbb8877ebf5344c2e9f34762092b1a406fca52c5426f472b034af3206bb9b6bd335d3d9735dfae43c536a23e3828e8117cbda6e8e2f1901e70aa877c27fa928c38ff7b7f8e635ac3d38c58b76336ce6aa764c4f5e0e7395bba36854de7666570064dc6fd3464d9dcb29dfde796962d850c2429b43268f44015e53efe0d9c2bd30e2c922554683e2541ef97e3f8f1936250e97bf641094fdaa6f9029c9b5ecd0ae068a5eadc91fa0bb585e163bf702bb3f0edad4991990f98757cd234ea5733d95d6f69ff927765d9a354875f3927875562799fa2b131ec6b9ba2aebbe0536ee1f5dfbd587dd4254b89af702b1ac3cea516e14559828c380c08ac9f8bddf07dc886d1f0cfa84981ada706c2a50d90252aa2c85d8f802bae99dd93d713c743d8dc56f4f23fb60a4c111d788213de450af8a78306436118432035088624630dff18b42baefb6828b6038bcd5ce20ee76c29b567505a902b4cff53743ff4b89b8db6ccdb50122ae58bae1e8cb78eb93b291a1ef5a8d0b110ff01f5ebcf7f56c3c0907d667abf7a5e2e4f6510a164182206833b125ad841529137988a80c5c6ccdfd51295178f46d0287ed0e2b0c6375e8a810838771661728906e093a23b48f21d7a6d8cfbd52c1ec688f643f0c4dceb45dad38541e5d160da369f1544c4039c4313374262334c23031f5b124efa3a28c63c323b7c82a1a302db7f4f14ac21826446900767a3265a7d4792722f7465c461976ad040c162e0b0b5c5fe8abe37489d5f7cf054ed95ab252f38eab87d04cc77ddbdd5e15130595d4385e4cb98c2a194235de9c9143007bcb3e3c2646f36d1f068f9a54b0280191dd68ffe04f5165bf9fe17d631503a401eed715776bd96f56631508c3039908028dbc14fd9a2a7b9e49c123e1a38301e5c5776632c7b308e09f5291fd425f0b76f400d571f209d7183e5baa02b5027db7daf3b2f7017ce127ad304c7d109116d2f7ddeedf9e0135df93b156b4433a12bfb3b428bd531ff148328689fd101d0464a99ac0b47691d191804eedc23cbcd57112e5cffb3a5487c3dd775a2be7361963d8d971d3a7feeb77ae589f00d4a06d05dd9bac5ccdf9ca247ba5c86e5df425e7ab6fb0ae4c65235e4b00125293bcf806a5ddd1a9dbcfae00bdeb4630b2dc0600113e04952d33870eae9d55e5d18fbbc34b203f501cea5cca5f341e5d680f1900d8ccdccc4787d3d5e7007ebc64f6dfc1100aafd799af40c0e783e0f023e71771ebeac749b0cbd9565a0ac9dcda26f53a9424eaa8ed16bbbd0bf37c6d19fe0dde12884be8cd54657ee8615dd0dbeaa337b50e55a703a4b0250d9b2c146641191ad91fb6173095bd2e3ce0aed438a57f6f0a6ef1e2b4462156dd95e2ca597b24d2c5c4587316250cdf13b2aab846802163b3f6d66b388d7a29899beae8074e28a3d215730b0c51a866583d3d9ccace919babd0a05b22313e4f3cfb3ee0dcdb224e5352095416788e85124ccded40dde55c3fe8d9cc65f59633926294c6445b2c1c217a4fc1153813dc410e2a3ffd7655a7921b2518f8fc934050c44fe4f2930e381c50c536927366ab773be5770c398671d68c65e6f14f4bd91a4ffd82dbad2932a94a616cf173c84f0c860a0af256379784cf611e868ee91596a9ea18d92d209fd22c2010798297329acb0582982a1950a2643c8de6a4bc4e231befa4f9ee0ad564c6bf2b95809d5f1f9072e719c4afbf68a62a4ba625ef876b1542105a29026998e083ecc6e64a64e9587ebc32f6b4c1e2ad25ca080ea9b7cc8b506e729b276642071f77a395eb634e6be43b0be72a9e7d2e4c34a8c956a7ad7ab795623c000ee65a61ecdb86d26a143c5d690f3aa2a208682cdc2d47bf2a247a761ec03718ecfaf9a2bd38135665b9768952fea678ea7656da9e27d8bef33d115767b7211a961b10f51d6cd31c65d1f12fb1875a30836822e4b1b66ac42cb7a468d8ad9c1767a3c08f794eb645bb0103f3c90e302a8668764381f4cb59d1afd3319cf2881c78c9b47ba2354635697cafd1cab24eddac4fbe25954c31f5d8adc43f355b741697a8093c86477bf9f61726725b1341d302bfe02729f208ade10dde7751208c26162eb40fa7b55a990bb833188c6e265f6b18945a855ceec9e69cf490fad157076f39f697d7c55854469c302c0e6daabef25d59950f73bce91b32adfb7b2b4321607726f79c5ee19e66f324ea836302133e291a7d677d1b8bac0080694c37720f57f090236c18879a7026a65ccd231c8c2c7999c417699693a603ebf38ff9d5093eb8261d0549369a6352f788fb0d94dbed5f93d943c8485cc5fe62f52c26601c619c667c5d64206b6190a2f32f3e478d3c6a5cf85daa4d87f27e6bb99ad1bf0e928b9e80459c09a897720e996c6af389d66e632c228ab8acef7a8a6a37f4110806330436262c86316985aeab3ca8652b06a520d1418a8458bbcf1b4eea0f4815e45ac2af0ab33ddecd2fa2f5ec602bf145dfc11ddc4c1041e45504a445d9130e84421c814335e20c1778a14f9b4d6ce7d7ea67f679a9e2244496e93da24f1527824d4d186a6fa64270b13b3803f503a9c1948aff09d26e1de80b32a63611c215e722ebf791acb3e46eab8362a3750b056bdf2817225d82e84094e71aea4ffa2ededb569f71a92c717e2c218e04fcbd290dde3e0110c22dc1c47f676a43ee6a01a5c4e0a0854eea1c3f6ac131c4b81da351c3103f39a4fad2228be8438cd5e10e70728705088403c1a24ac4d8d4331da23aaf004c1f8a1b58fe8461975c3d5f127492bd90116cea37da6f3974e2f6146c38613755d1c88d9e457c626e738a82126a263843d026333d8c0757cbace53837172a69b1d8031ba59f5eeddb409405021c5bf368f4e93a3dddcfd7d9b16f0ae94290723c2cb7e67176e6bb0d0185280771a56ac76c09da26a61734fdc8d8d926b40d99e666b85b62df98e3a0c15ef52f8ae31d86bf3c4d1009a99abb74477412c5c27683d09d8c3f7732b60d37b5a02ffaf63ab692e138ac7b3672094e1ea33b4dd6ea74fbcf0cd340d7a49cb94cf11d16a168365974b944aae7796553418a661e62d8c9d1878b21316097f36b36c712cb3de7af3c9651a63e33e5d24b41ee5050cfe6a0cac81ae899b1ac42b327a11430ccb52a3198b5a4255efc9e242c505e905350b8adeddf3ec482114d9ac7c82cfe94b247ad4e5bd5de63af698a3c4b0426e675218275e06ae2d438d9a49e6929fa5f334cdb8157ccbd679ad3b6cb4d18887e41984f022423f70b9a6ff836651b5718c86c6ac6d7dbeb8003dc276f33bf20425c234f999b5b60585b0fa85f012347cff21436d0241ee698b957d8529b77306acc363650ee6f2988744ea9802427e31b5e51cd97f1e65a3d7db1f65b71b61b3d16fc4e6fcab6cba55d459b7a741a4f9e12af5a62474095fe66108b44cc3687d8f0fbb6e23cb7c1bbe53033c6902433467691d3569acdf758732dd600d417fdcb681886c36643a178b1fef6dc6d0be3405d99be8878f65cb650e752d938b622ecbacc7031adceef2634909b00880dca2eb355467a8ee639e3b4b15a963f26860bb802af49a20794b197709e165d09d7311f5169374485efebac79f9e73fc01e2e80e87d8ac460edbfa490793a94020fef2611e65479f3ac7536e38fcc7364640a103c8710ce901e74172935e3d82bb18eb886d1d25c886c691172fafd5971fcab7ed2cf02ee7a7c6ec6929668c02a15833f99380d555766919d7df8b8ac72eac6aecaf2369d3721d9525a19fe72107e65c17f65cbb82cc628e762a362f303e18d3712a1a2722d46cbeddcd128ac224848bfa8cf2781e2b7eb1a7510d00148a9f8240ab71af1fcf470072730bc821b6f160a68cfd1fd183eca808ab5ebebf8aced5379e4755ce81d64913e1e6c9d034e94674922ca79d9eb0fc6e2d19525f86952bfb40ec73bd96f3d3eab4f65bb03b02e6a90e54ae16549b39623495de31d325dd5b0fc5bb137ce70d51d71dc9c216ed63d65fcc827693594ff8775130172a1073ccf3062f86d583932ff1607f6258829c84513331d6a7715aa17fed8a99c8b20561b11765995052bcd07384e0527e30b79d37b780f6657fa697a66c55bc805d1aaa3d8bafef6fa95a6dc0676f215bd542fbdcb5581f9e90614d48e93d77b18149a9d61120e7cde7289a712ba26283d5bbf0f6de5891f2ab6e12a9767898ae6b25aedac4e2b9476b78b4c3e003c2565007887da826f20e6756faad26ab075c5d2d2a66899f7854e1290330dbe1c0092ed546ed3d625c58fd7b75aa78b2de1253cfd64751b370334d0a2a27169560dc3e2b344b547bdeea10e2f47472a69203012bebb4837a71e89cd15c974bb502be5c1321e952622b3f1d660e6bcd84763907941b9a6380dfa79e1df8d99adb52883bd9d52b6e9354d73d5271f218a03cc652439fb03b7983488f2f25da336b00632ffea8ede87df7a16f916fb53b3707fca44aa3f5799ec95ba91d85811488f28a43d3c143e8d21bc6920b1a3a125ccb85fd40a07b42ecc77b7fd88dfbb7d7b2fc5c57e6c24a16fd2258d89222b2acf9967bd382db52e759628a06ff6f81a21125523b8822f9153efd60350668d7a29fd79be4d329f9d339a348d8dc2e56af414bc4b2d102cbc1e38ed77171fe9b11a651775dfcfe54246974fea3f9e4962a10314c62dda4d707700f61c5352e72c2ce446a567842f01064ce871675b0de5921dbb3fcc9fa217807cf6f68f6b93fc72cbe690dd3aa66700da53988e6a2f35de109e21719cf3b31dc4c65eb371672d6fc50f12611d48221553dc5f37adba2fb90f6907feb5a69449242ca646d0049481dc63ec07d1095fe779fb10f7423e23912b0129651c423b50b112cdabc1ec0c1747cc332ab74ec9ed2418f40dee23f0c81aae259f8ec54d36e86b3bea2d60a02992d89202b04163fc26e4769ecb01084e092eefbc5f49406463067e7fcd868cd5ceb3b8710d7430323634312fac2937de274e1b2b2424a1fb70a5b375bdc59782d166f8d08c0222ae50de01f4c73f6a391d71dd74bba31ba27e73d509537882d85aafb1463cf814f7ceadf50b2aaa2cfb2305e0a0b68aacabd64e1843d451bf0c645ca2bcdabddfb3bcd955ee28c0411128c4aa6f75e9e1449a7bbf07809ab34368dbb4338dfdc01f634634cfddf3dce22c78f2212bf75334521b9348534802c122e7323e8674d0ce1aeef2f1eab979911ef37c59994fdca6853df8733a98b52025e946bda7d6482f08a0c23d7c5f767c200b821688c368350c8689090b1587cbed86c30977fb626b40c7567c6939ef59045a62cb8812ca3f4e1fdcf6eee0ddb5983dd8e997255e8848ac61ea3d283d6f196d47e12759b691408c03d0cff42ca834a0ece4120177c864b9fb83375cb7800ccf2f9c1d35256705634a2f67ce02c6fa4801f77a31e55eb95cfa93f1c9efeb0e18bec8b144fbae817d0e42f485f7f7b6975f738e7fee6980aec53ff1b5a14919585715fc7b9a3fff216078d8a256c29ee081e54b1463d3a8e023d9a40529fe12a92c8450e5a20c30c655716f7443cfcff0d01b6d516670025f4a77325166df0317d6ff62a97a76a39e9bbcb2858df4f7326ad50da98f405b77e1d41062398201aca6f4068e3bffb184b1e3586499a35fed030f57813d60b80aac86e0a0075b2a67d2dac7233c4c82cc83e61224be2499978ffc080e93cb1cfe95d2031ec5e1188f076f24cf3ce5009203378d2f290cfb549af7798d2a0538893877e12b049c27e6b46ef1cbdaacef837d22a32f83fc05296f9aee0243442f2aa2f501a96b131c33cd0c97f78aece8de31a36a21f5dbc826a64ecb3298b0b2bc60fbd9a065922bab211c5d233f4bc10e058dcbe8cb26007cb5516e3ff8d0cdb517cfd6690edf25a293abc6ae57b791510b80431de72ff0e8792859a1b8b12c19e89e7c1f65071a6a7d0441ba5f8e50464a6acc89edcfe7bf81a156c7d8932ebe75c2d21eba2123ada2e2429f5b3b046108c6699c73758381340ca063f15f2ea259d9dad61d2113844dda2404cfda29169646361aa8ca897f343b3f4e9c425827edbbaa2c6cd91923dcc48a74492b471b16f5a5bf7e3243ee7850fc809c50427783b5182b30c81f3273a4f68d9d47e0c9022cf100ec1b032fa8f2f394471e69e2ca12378a0107126ffbe7013c2874efa7bbac2cb61357edc124059f63533865a53bf015741c0f10f829dafd9bb28366b5db4c7abcf977e41187565189f6978ff1e363d7289eb9271013b1a0f9be66dbaa43e163ed9fd25875bcd4c2c326a1943cf9473cc7fee20bca38044a8dce5d736eae2e98da2abeb1da8d6e747cc20596458319d880324b03c0a2011eeaa596e190c62b5739493fb1ffdef6743cd225acac0ab9147105f4128c954914224d9f291877ef295dc1d61e00d20d7e1af483164f75bf177db06c01e1a93338a6718e244af592eeb9d5f4f22ffe328e143680af97de164de93909259bb7fb546600dd1acf9cce8c1325f24472ff515b0977ff322abb7694a8b4c90d2343e5fadc138dcd640ae3340ca7d0ad5dd66473097e9cef81db25ed40e1df1a68ffdbc3b4c02872fdea2ee91e94cc987051abc1deb6b173bb635a6666b56918c4530e15b3b4105c8c139da20e3be62358236bc822788c99f7c4719bec9e321ad816ed50d12a73d5befe9b2df7a19ff98c0bc3ee497e9d350ab0ca17b085952fb7a9b6c2f7f91c9d3c982c0798f80d2a64c9f4db5788d3dde9f7ed02a89baa300b960f460031ac51e94ddcf69d640ad554854cb10eeb237ca0b51636d9072810b14a248b4183c5cd5bd17202d1c81173061e3081126361ba7494552621863e114b2030854b40c3f19ade07321c1bf94cba3dd0f2474e0bbefc0f0db818999d0c189841d2a04a99c8889d556aef26894971b8ba0e18de1884302f09b2bf18b424a0c3a13d730b64e9ccfa52d7fb42ec179ab756b3cdbf94d7fe33c4ea9bb443073df572547568b2c7b8796a55bac6a0142fa3f077718a61545f445f8f912b9f3023448cfb3609f2c6856e34b046fc44f8c54678eb1584ba6a8a369420cbf23122fc1a860fb048ca158be3532afe240fa53e96b97b7916a597abecc106fd1d9a255c170060f24bdc9895409ca0b8eb99f88d7a20bb671209377a5eb455c2b8540b94472af5a54a61bb6193948ce670e959d65245e0fe2ea99ea17d344a583afd08be4663061a2189f8a9511d562be87ee62e20ee48183653f61981af7d2b60cd1139abbbd0a6b727873c77943753ae2645324279c2914c60312f0729a163978c23dd72796e1c6c8f0b199561a7ea0f4245cfd153c9c876ee1b802c14fbe2e9f522fb7ed3118e234982b0efcef9fc09b08d1c90fef1231ef43e907bbbd13836ac17491629ac3afeab63aadd80f8437b596ca96b09a31591ce991082d46f16ada512cbe159a6606b37c5b6d3fc2d8c2f351f1414c558f3f0104941840c65b95f181c72f6f645edb02709293ee5d4d5c0a8cdb168aec963c3a4a90de736dd73675c18cbc7ff4edc2377937325115713e9808fe3ffe8cba248c66e7f85efdf4fc06406a944666500eaf8e355fde78daf124e77158a888f724055deac61d11741ad37245c005338a442355c927e6eef07dec63eb40f86bb392258f41c308844a3ef960b14d3707846ed2bd22c524f1cae74046f7359a53e89fbc5263f08eae964bc0900c33869394737b15dae5d2e69262d0e9421d1b52eb5bf375edfcea633ce06960cfe245323629649a12c3e562992439c70dfd99df28b921e0a529becc76f6d69242028ca0f758b92deb5ae9efe3e145ba9baa4b84f76875fc672ec5d377defb6189627e158daa1065028e04164a4adcefba8aebb695a438a6f567debc138ffce199dbb1b003c9ff9c94a8c8d0fd41549a1e8fee2b15a8e918dccf82cc3f4a55e0e4c693f88c47016eca7abd03ddbe2911fdadc1cadcba8b54a4f0fc91a8cd6ba14ea92cea610af396c793ed61643e0c86459800fb161b137de6e03f5e3d16fd5042836703ee263171edab2fedbb1b0ec897ec0f7e4951a9abc00bbff3c071d5c17f2270ac550a01cd62f3e6525b280568beb3c13aa140761a2abfec279ae85ba27d5741d99fee66cf3fd535013402d229d512115b01832b54ddf401fe2118147192d0338e5f4b42625d668835d81664fc343095ec8ba218f692721395be1d1f71ab6d45923da70ffb89a4fcbbe603d0b3f26ea00b545e18d33b0a5620fd2fa1d26e081dff411d1b1158921b47638bc02ba91f2bec3f5eb1d894d8c9f246274210c784ed39612e19e1a30be1879ef0ea40723203c4570eccbc9f51a60709feb8c2f233e6d5c5712b0a2d27c876238b2b645ffdf15ddc8fe32080952007c8e7e3c09d69b40666e0e0a5fd9d756a63f4140573db1ec803deb3303b11311dbe2dfed2a9f1be5f61fa87553e3430550ac400a04116f22ed3a4a691794da675d45e94c1b19b6ec6a07241a167ef5f515eeb15885a1094e98aae3dfaf6e81ca0fd822f523ec2a5217f1657865d243460e4727bf6b991f4855bfa30b486588e3464ede45169aa7c1da9d1cb918ecf16629c461e34e88972b667212a707a09f34b974c27e19fa52a62fd59633d23f56741cc362508746fd2ec22b02808f6abbfcae99d1082474b3c3f663edfd273d2f6cc6e84595d5d55a36fa32c10a2bb501ebe4014dab06afd34c904eec3dcfdc5285019e9cf23120da85047b29a865204dca29488d6f101dcee859794799e43e6073ae1f6f765f3cff52f7a2b202a6c7cef371011b9e2e89f2eb1e3e97ba4de0c9c17de5ad9d019e546e6bad44e1137751bf0dfbf5fb0ecf45ff9b66502095e938d6d9d73d615ee217ec9966d4f670ef88d242652d0726ae80996ba37d0f51fcda2bd2f7dd329871c0e1a7496a06fd88457f513a34272e157fb1e788753c063b8108e9867467a3281ded77844aff79790f7b9eeb1cf62b473beca67c2cfca2565d592ad31683005077c3cc3ed29cf7cae4b855b20ce419c8cd300cc2a85e851085ed522c4fade68635aad4cfcc518daee0f96384d2da1196bf5942bf4242688b40088878eed88e5704082beea30769156381bc075897210ff22c4885dc4eb855431a12b98cbe8fcba27003d6fd5b0052004523d5f1ee30564ea78d741afd1cc4f6f73e74c3f5a14c60fb1e31ce4f6a0fad0b230cec2c2e1476b434e37306b9051f959aec11a55cddf4c328035d909082ff0147b8c00810d458c8c381f86a9bca596aba2bc0ed061af3c6504370930e83e133cc8f362f03abdb0e3c6700a99d841b8afffb8240821279a4ce02618e83ad043615e96ebe1a18299b28cedf4f3882f375c94b445d8528fbeb135638c8685ce5f45638248b2a055f9851379c1c9fc33560f465f0d5824f9481329fda98b781614e5fddad5129c393071a900305e03d3c98f53353174cfe9087cc1ea3b2745d462e06c14ac2215a71e00af2c641bc9c283860ca16fe31dcdd3b22b3f32ce6bf2a1fbc2f528120884172e80e76a1a96b8e9074a872129901fa9c933dc052fe44edc7b8b5a82e0ff1af45ae8384c46a24295e4828518c7c7623044774ed65c25636a49015712c11aea64d2394c9a6af1e6d9b0dd0bcd76ac019e6c44e9f410c3304d9c1c27f652d72081bde48129379b3a1dc4f3dc131d11da1375dca33390ad75f9dd64a2e1c1d4ee5e41fe0b3b161a82244e379a1129844b8675395ac02bb5afdcb82ee3b462f73da62868849ac977fcf7688094670b00125e5831e9b4c59b896dbb47329a12a7dc2a9586a804ab8f91c0929a4d6515faa36da529900cad8ee6aa49b9d38612082d52870bf3ec452c4c4e416822a2778178160199e7bf5f1d3a226815c1b841aa8da6b307527ff679e146a6814acbbf96c777e53dbff29d09f3e8c2eb128ad16fc9161e9abff8b7ee3a47c47aa72a5ea10bccf64adc07ffa56b0927d5eab9816598bcce92060f54fc21308887762756d65e5241bc43b1cd20ff9a717c840d42cbdf49253b8b89af2af45b8097c63e4a07ebff88b2b784ae27f655adcdf67801e4980460b06716ba1065178b56a878fa9018d7238e841af6a967284a529c1950af2a6f0d3c0901bf243771808d9d26f53c7865321ccedccb8b6bceb6c522e390d75dd4fec0ef095e6aff9493225a7520e36ebb7f8c4bd5c58dfb601565dc314174c9d198217e447e6745433c661d2c297a8ac8d0d887a64e0d71589b8ce7b2e0da78b12ea21f35b5a1dd937d3f70110dd0bb6cc838bee19b9593ea44a877a4f0d3d87b5df98f4dd60dd1c097ab2f177b5ec51faf9cba4c27774cd8020cc8eb4163e209157051cfcfef8e33ba103b44e555d4505d8d6b7bde6d440ed697d404609f4ebfac0b8df95be9c07466425779c65c7bd022d25b4671c6d56665d2a092c0baebfb1c4ea984645f46effeba2f0a06c1d10c451b9b91b86592748dacff6a4108bc6a317db36f0f415b83c325218bf1f0a3f6bf3741106a4cde7abf201668d1f04ee5124a6aa09eff017dbd21dfe9414fb44ff93459bc1fcce661ced9ba5fe150b8a5aff55066ff05ad40fb1303272cc4c616d0c4d541ad5c9c20a367a95ff274bf20f68d8fc51a9c141b0bd410b3b728197e9989d3ad94f2b9cabdf4060d52328a04eb456444479de13982db9a1ceb046a841c3cba3c5498b8493bd7f10cb293350d2f5407a40585b1b709b3efdeba8aa11cf34e19715835fc5d3934e69531c50549028e4554d8914ab8894d6fb45f4e091ad8e876e0f7b6eaa45a095021f1485e41507fb0c3d7a7db993ff5d9a1709d13026efbada05c908e9520accd5d415117e69ae36d2d6307b753d2f3d4b220a84ad8373539851415ed930f10a4a00073eec2357b753f211722a0d62b498b6c4f26bd06c44115b684ea5ce66a2b5aa03da5c28d0eda195cf0be1f9f923d0e7ad7728b8d6299d55312b6da410b2ca8312b71982f2e3f5ebc031930f568983ea3706f9958e0d283ad3333b3e8dfeb1402c15bb8de570469b6a5cf90aa6d85d028a70cb180d2102774016595b2f72279c10bde29b3c63b550143d11bdab391bd761c6a505a52b49efa5dcd2199571fdf10f5c6e755976d799110f25013cf42351ba27a6d40db2458a0743aeaf0c2da5e0303e99dc7b6fcb43e78a9eb4effa1f74a2fed2e37412eb8f221dfed784d0cdf11debdeae3ec1c0d6d6fc053279a25074d3c5dc5b1ac2353d6254a319391ea002118b9e2aa5083ff3b8275ed1034319bbcbda831fca94184c8d23c1d160e96c941caaab93919ca048020714e43550c38e9cdee9628fd5eabc4f3e43a2f5acf96c24082418a7ac6cd1f02cb5219334e6523b46c151e482042a93aec09b272178ed152f60264de57f3c72c40725577e9799f83a3351d546576c467a6b2c0055c51c2c5c5dc439fc74cb97c1d3c5d72d5deca21c741d2d74e75344d38f634a7de1e90cbd1224105307f61fbeae5e5da663d0eba6e17463460f55adef4a4d7496046c16e0bc1ef88bb554a5a2252c2574d785d0339f7f2868f33030e7b17dee4a3b6130186376533779f748f6ffdfa91ba590ffef1bc44543cadba0c07f87026d27c911f689db1e167602f2871814143dbe5cac1e2a318a14c86c8c53ae59a581c93d12b3ab735e349799d1d780accbd1da736d374cd464422d8307cc5c8f2e104df52d289e8a05d1a9740e0d774cd9f93d87050d1904ceb4caba9275fc908ab465f310b8289649710d2c46fb1af570e30f3c7cbb033d8bb2a48c63fc778eb926df68265eec85df18c774dcd8266001b2af46f51704a89e542ac7b5fd9fadc7d1dbcb29fb163d765a0b36252f664013632769d88fa72fe85364e706c1573921bc42281a654322bef6003ede9326e721a6d955ef7ff18ffe129966160d5f12ce2bfbd93054f9907a76c57f3dfe108db0bf78035db31206bdd10c97dd14bef46985cbd125b31145005897155b58b2fbef34867baa6185f68e74a1eca8f723d5588e7f0004c4589e6ac0c739a9648c3f54dc259c683b3028173439f67b9710bd31fa318e1dd7e469176ea4ff3e2c048e4fa3865ff8066d4c2738088f3c01d6d533c671ac2b7b404503227be18676414a0dca2322e84bfae98a02f57d65ad5d5660a9953d18cd60d63e00087ca2a8ae44439b07619491fcf953922e5759a27ca2f673ef061a2db02abff9e7e5aa1fdb19e10dec2a86690e02ebdc92059dece70d084367bf08781894d4bae88f25e85119854f849a1315b9c4aab2788bd6c474a22ea7fb8200b21b5701f9c3e45138239e0e49adca031317cc43cb45002f2f6d3a492d5bff06000b1ef4e085fecabb375e7888bfe4a4eeb8246db83b8cce994b91b1ab0322069b8ab737b3f043f7b1d34396fa4c27670577fb93148f08552b1170aa877cdd25b1bcb21adcfc0dad8bc0bcaf9e48bd11c016e925bba7c823923156dd23e9c106679b2afbb443e3b5b4fe6d2d7d644215d79fbe0bba01fd43d93642c32146032e0e25b266593ea607cdcec476e02fb4a3df8211044d43e252de78dbf13eef5a2a86c07a82aae7989ebb86b53b60986985a933ae926554c466344660898266e000a6ef676216a21d49a4c00225fc8247af1dc776bc7153a5c105d319a00b80a406c3af603486f828114f3b3bbd24c21a9bebd3d11c994056a8121ab888e51fca1fbd9ade8a5462b68bf25656e634945ec8811c8b320e8f097b824cceb39c156c2b184fb402c31d4881fd108b2ab849031953d8dc889e65fbc23870e0f3be0697217a750ceec856939967ff7f0aa439fbc2f5cc5ba4993670880cf12dcd24568a1adf5d8edf9997b4ef199ae60f3fc0ca9a51e07a5d428dc76b6ec28dea307d530e4faa17e1fe009e61477a55edd04a5db2e44d69f77bbda11d5c8c1e4d463f901be55163b25c686adc1841b644a2390f34971e2869b8ca87ffeb07513848e6e418f77d58ba1a3d1ae5cadc0c50317c72c0166e14e12a75b3e3be3dac06a18bcd106392bef51858f4c023694376c83f348efeb0c02668540d8acb1c367eb35a5614117ec0c985faf7ccfb0e90731e6dc422978da75ce1922d6284bf90ede3013f10e66d2efc47b4ade91cdbd44bdb2a15732db2ee425edb6c15a321095f2e1c8913a5d074edd803969a6a60bc7ebddec5627c2f727b58e1db90c558d48956bfb025a6cd8d2a4c37d74bba7ffed5f22db3b8259c94bb6a8316d74247afba0d70162b26dc5619ff8e5c55438cae3da89ad3db67362be5197578497622dcbb9eebde24c6325900828b585569489f4bfbd0609e6dac0a360a0beea6eb1e71734361720ef05267df0e0abe21a42fab98792ab2a5fb3031bd5bb2cad463f35c41e545d511b8ecef10c7b64d900c77adef2658d0a6bc9fe029c35663a707d5f00713ca7b06d48cc724b8375c156fbb4b3f39a27fe76c749c0a99846541927af4584ff5aa257f5fe95e5ea4672b1c64ab6f387616d9810a9207595ac22aceb8cdb15d936119ef2e4ce816c97ee931ccc5a34623d8dfdde09a3c0a14a30726d9320026286907cd2d2e4440209dcdef873bae63cc8e128d8fffd9e250deaee2f5debeaa4fc20f81e09e9ebfa8f6139d43e03056030de728a54f36e2de0593c8e142d0b653b020ecb6f039517f46e025b58bb32c82c4b66d8e7a0fc9ea437ee491919eae2bf12a8eefd3cbdd56f481dd056238ea6eac999f05368e61b00026f4320617ad3da22c909221c2552cf6216db5c2888bfb81a4b06edf5b4951a8d626bee2fe9258a80f4104247096a1dc694706c69c83e0365c9908aaf73c12b01367e46a552f3b582ee814eec00b9d8ab44d8359c4d3eb0484d5e42f03b2810c99e3ea749b48ad6f051c5529966eeac3d1aded79899bea932a459484c27be1838500217db3243bea1ffde20c1e29778c024e2d1eda7281340f11fa040adbc2e56bbe094e6c4cb8fe2c331b8842a0a12c099fe215e506e5964098182a2124fd86f28ae15fa48e2e57129e63bd1487f5455cbab09d13115651e86a64454d39b2bca94a4aee52ddee192e34214f10906a8191fe306c201c04b7d8cb778669d9311f9a9828fb121ee27727fc6d6b754377bff0d8d3ce5e9a75ab0775c469c7e8176bcf8bb62f23f4707f2238e650c18c416e0783c71444207da2da9d3df878bc0b9e1a030f5158ea586816a4e02beaeeb6582f004e155b7665ba975bcf7cbd9583afa1d7bfec6b0c944c023b7082a586e979a7e431f7bcbf8d305c7b5d5a12cc5653dafeb69db83889cb0923f6ed825a42e9d90e031c08d856d9f8a0b6156f1e81623697aa5dc233e2cd0b1d330fbcc3998de8dccccb628923b4ca9817fb39398e482f64e4c5f119b6d001bcb21de048937576accc9530ba4f39aa34c2bd2edc4be8115f1cf37c52b92812d6623140035ed142221c545344f50729a20db02b4915a82c0e252d589ef5c81510b55a17250fc3ecbe5c0a754242ae25942d8af12fb411a0db9b5a11e4a7490e74538ad45f946af865a78561b68a18d3656b9af93d0a49000179ade80030701dcbd95a3ef55318a21b737948858cb7421ac482cc0a3088a61208532b6438d30467c6c2f791c5bac99abf09cd1fbb7ede6b59a3ebcd89aa8c7efc57030d0a9d1a148a8f5123526bdac4822a890e074cb9cd27db5cd77310a4be2b11415417aa20543c622e62939c4cb9f55d829ff0709d3e2f47be37cfd1a5cbae7f486dd0472a80ff2a03e75aa00ff8bd499742059c8f0547674dfb98bdc7af4bbabead19380fff045a9708d15ba1b8521f89c7b7619302988a480c95e41c5f8dffa419fee20ffcef88c3402cb050aca9d4af59f74a156a99423fdff6c17d51d19c611cb2071181c3fe32a8587e82aac250b7a684c2e5522829cb60bc112b1fd4a1910e56630d63fb04d5a9b2a907474b28c19b6c7db75ba0ea022ac32acfd51f944724367d2285577d3dbe23dfa4d19aed0ac13aabfad11773a0d93a1c707e9b1cff3e6c7512cfffd6f1480c8640eb9249c710b61af74f789686e27a187c3ae07a6e5a5f6423392bafab6a3ad8760527dbea0667883eded4fbc3f3aaeea5ede710fb1c7ff80f20909c9fb92a28b38523cdfacd4553b575269d72d264eca3693a34cfcafc2906c1a226cf73e5352ddb8855bc737761be7e800fb8ef5d9e256896245a0460e110bded8dfaa1cb1040221edbcfc786ecbc01d8ba1ca621f25195d98cdfb9e625053f3c99801860d408382533f6a61af0aed4098f7ac14af74b70218809443a2a038dd30a8a0c5ad9f625f4444c3273c64ce86140f6deab574f243ed627f6667d069a8c2562250afb79f459a717829fb3cc1b2f3ca09250a63a14d67fbc67698017bf68f95e88a82d411d7d3d842656226a2eae4b8d3592fd721effde5d832f7a0f8a28ed52eddb09cc05f2b048be3974308a87837528eb1ee5294aaf1ca20f621e5a1fb34f3606e13f05f917ca9eb092af426c50f7d5945e81e0f5c1572efc6f04a3febb89bccee26b7e9fce8042ecb63cc91c0aedfd08cfebf41b2ce706e0ba2027b79483c323fa2c7d00c4c7ff0cb21b111663ae6a72667039c5a41e1978922e22eff2c94be1f799563d1e57d7b8b655f961eb84590479dfe0dd359b46e5e61c664ce779db8afb991995d39aa04ebefa545e70556a2b237396d955ac17b41e0d4b8948b2b3586ed8d3ff55dbacc190f3e615292dca02601ff8d789a17c000f05a1581088519b95bc4129bc67cdf418034bb37e9dfaa43868e7f4fa7066b2390e52ba2da8b8434a28b0b75740bf847dca3275f0f991f7c899c832573d99004328d25bc78835ca1528c2b72360701f7e9fa6ed1eab77752bc477a379718849510ec0dd3941ed3bc3c0b5e6718fb3c7e4d88528bb1437f68890433edbce862c87241a70a7641bf223f6e36582cbd9cc6d0dcaee1557d434e0aba3f19e9dbd43301e39269b0352bbc5a48aebf652f9fd42d3dbe85a4c3fffca97e1684a548c9e171b778275d80d0b1a8808d9360cc74e5e4e8afe5c223b323f72111f1c267cefc2139d6864189407855d870d482f80ae7f750f510fe2779f5c850d2f905f57ee8626c0f4a95f73c76ab79fec55c5166e62dcaab30212719bf0c342da3d7e0c4c3f05c33448396191af8599d1be3020b8ad75ffebd3d6f86ade76698971537bd0000554a277d7aaf3838b19f82aed2e9adfb309680b4ec2f0aa66722b52dee6227115d412845baa9f61f3b29c3088dc0b2b2dd67bcc83c2614f0323ec2a0c12dddd262f744132b4ccec79c499d67914024a399a17364c6608f353af5c0a1b9120032eb348274455fb876a1486989654fea3ad2f930d05bd7b8142b7d44a1e375dbb2c291f1cfa99e3f6f6f7fa4e41e6b28591c482532e57564da67fb1f0b930b285252281406cd4b2daff3943849fcb3b3ff8a98ccf2088a06bda9d6f1602c8e4341299a5b6169499fe243f01bc962040cee3c8960e79989b61219392fd32217cef1fa6496c452cdf97ba0f65ff30940b54ebd61d3f8427fb0edafb01cd0d11badb06313b04ef860abd706852e5563832c86bc3c7e154996104f9d2ed3f68636aec0e50cab1b0355cae35fe2b93217a5cd63becf130fcffebf30b8b7497ff9133e519eedfa46cbd4d53bb226d556a7b519a13961d27f2a5e3589b285c0d6f4dbcc21e18d8e97a27eb994ef476ae3e56e9871a6c8cce793b40e1a393574382a078b425bbdc4104ddd788a20712ab38b3c40aab58e38636112dcc1f4497296c05623f02425c2a685e5d983082f30e51feb3c74e4b30a9378ef5dc3e849bf3d27bd3b5302503526087b5935d4a46ae3ba54643ce1e32a97a9a4b8cb3ed3c1fc8c913b218d918da5a1e98341a71af6a28a95ebcb57231ccf47675e8a25edf594cf52c8d05fc5c372df18f29b9458fb87a97051b6e407169540683c13a06d843641ff92d0315b8cb28d464d5244e55723f6c81f952fd31ab7ee76cf6ec80a359504019fa18bd074ed4e67a80c050998e47e3445eea3b3dfcd823df49037e45eb543e172115d6e0b84ca76484a1b0e8eedff6d42d632822b8bc7409f5ecd5d5cb52afb4ec23c1eda98faaa76bbdddb47cfac7f69463944018635ed5544ca9cd15046106f224af1ed0954a563572c9b9ee4db21ec836ddbd54d182b8a728c824ab69b1ef201123b7dcf280b511cc4629b3759bbeb19471f430384c52ffb3088f3d95777d571cbc687c2d8874a36f3b912317a76ea59cfc11ff8fadd1e79256e9d58ee7f5a217718ca928cd53cb93948d1f0fc529771d178a03098ebea59052323a25ba22fe14fc3746ad4988eaae284475f8374379d5fb6a6c6818dd6be49548509479fd161afe96279b519cf6e242051330aeed21dfe9ac080ca4fe38738991510910d6420a19fa34d3826b081f0e7b827bf98b089f2bd740d6be9acc2c0d8fd5db8f33861b165ac231b80633fa2f15e2ed728c4c7706afbfa2bd3e11ded637085b82f8cc2f1f65496fa583cfd0b82a9f7f8181d08bd8bc97b45f340e42c63fa9262c3da70b256a20e719462f17f9953ff95d281e8c4117f325f854317d20cfd64ed4367b257888ce6f31096566325650d8022bdf8a1dd17a0ca0812ae5be18b2dca84522106df503ab1b03ccaa445fc7304e4535e9aab41925f3013747b5ed37c79a589415d1d91a45c71140380be0f5ef44918c7d34c3ad32c81709eaa176c431f78336281313dab7bb39692a18929aa0297d60c7a31cfa5851791d6cb51b17d4339e8e242fd2542fda42af2823d84412d130d128dc9f222d7e6168cf79bf79110ee72315e74549195872d1a6f126dbe3523c6431216ffc31e8a2dfbe3fd4e1ba7a62a5286f95dc8949a5bb92e6ef5d7e9e9a9f8d02fdd39932d539ffb753f8c74c0ecb2f5be2b7989ac6590a2fe8ae87234dc7122a9bfa0a8045be6d2d59164330cbcd25c9619caf23ab7aaa8d0f6ae2cfd7b91d7eb5c97f8900c60561777f05f1192416885e172d053dd32ab1332c30d97bc0721db9f176e8d1f95e17c448b4c59d861b9ac1fe90b2f3b9b006a201bccace357c254890439230d4d6ff5cba9d6056ad29f3c09c8d5cc24a6ed05faa368e0069c68e5f489d839e2c4e5879ce13f47e2317444eb0878fa278eb699164cdff2a01206671f2ab2b3565284d8af19461890705f9474e5500d59bf6733e28c5e9e1e6e8ad9e194e229229e63eb464254a8f4b274f69fdda298421b44b91b89a4ac8d4f3045311eb9373d7798f472622e795cb1095b29a4ddf5b2dc3f86e5f9f882b5b4281b7ae47e29f6e3ab6fd5a7fdfa3160544dcb39fc9f1293ec8f6a4790b02ddab9f047077b288f50c7114271e2bad220c2b5022d271bc3b975f021dc11b189c583fde475b5d49e45cbb13f9dadb7f1403d7c5426c891ebc1989288e219ccada1e27567728fc3051173eabd7a3126d832dcb5666ae46cbce5ea9c495dd5aea8d2fa385b53a0c45a075cd00e2f5c531c904de94713f274c410fa54025f89d95261f24610c78bd98c5b1502034e87c787f1aa5df9847bf95da8f1795f46c78b2c46a1adf99d7456aabfff23972f17c1ae225b090738792792ffa09bb8aee0c96c37e83a12003993eee0df6346270139e44223f6927e7a837a447230f6d36cc327ff1e942090ac2abe174d241cc110aeb4320316d7c774f9d2d224e83202ee621cb0c88e25aa6ad40d10dc3d78cecbea76c1e5e7766105e6ebbfc6fa29fd6325654befb667d9a3ee7076ffbe4d9c5863c5c17bc32c2a27edbb6143814dde03bf174a47e7841bc3b3fea550e3024188dbbb026236a34a60548c0cdc058058441b92c8a953873a877ee5fdb6989f346ae6d3f1188d27de169a0201913e48ad027a062b2998a7c5b27436e286e1fca0aca07d90075e91e3385ae253e82cafbda899dc49001feed2ee33689a808cb47341f3bb32bbe36b54deca3520c1b9c1f45ef89c3cc6ffc3ca0b644cb43abe7e91199b9bf1932673d1ac6e6c319e0e1bce019dd9bc53d6ad047d55abe5a964376f0e4e0cf28d7f41ede26b713bcc6127b1e8e09d6a9d52ea9df8449d4a45b5e1ee1ae8569089f84e011b8917fdb05a066f71ad11b0919bc7091c4276f064606115d8bab3c2abf8d61340a4e97fad6313d06fceded45690ae60ec63bd41f754fbaa0f751c406fd2edf2d6338b89948bdd728870b89c884d8d2627d81ee53a6df43874a8ad707cf66744c8fa92c4acbf18ed08d95c929d99bd79365acb1847bc9905843fd3503c1458ee8a636aa2bdccfd68117dd97490085baf7f1c6a89a1430346cec3f912f3629750d26c0da3f960f6cb36f3b9a7c3cf26c7605e5f1077a669e9c7d24762e5bf94d5d008edf188530b6bd7354be6f8ef64b3b170873ef6355aededaeb67246895567f1804ec335222052215784433d9ebac3504ac21c2e4e76292c665810693e8ce2fada3fcb878c3ac99985c8ded3b27133037b140b81193e621b379df25d815cf872787e16adcc74639f8df1c598c1596fafb66b9547881114abb2a0305ff50e2eca7278ae517bea86990a027f6d79597826e47f2e55d972c91eced811a908884b667309e6aeef07f8367145f652d063440e87bb969d7dfff13d6d29c2c44caffbde76101484b5738d417eeb24e883755927bd53f67dc12efd64613a1045a7e22f7c29b7b81a60e42df52656da8d5d3b21f8c39df1dc222525a5c43ee1d4f1d36a72e5689fe05511d7252ac3ab0797017eb259b9090ea6dd57e9ce42304ded1ddcdd248f0034f96809654b558cf87a6952d5d2ef9d44d991f0019ac7d2029271199175b44e0029ed8b05b8f7dc9d8e6cf3cb0aca1b3400f3223ea01f127403697e782edcc979126f36569cfd5d1debba95d36b0aacb791579594dac9422a3249ffd098f3dd95e00f7b8e221ea61f06caaad850233d68283dcb8c19759082170f6505ef05aa42c065a18722063555ab766e8e9a57c979b1527ba4a484508fd1cfd5031eb31fff0b47ee7bd7f87d01aa3509ab4f187bf114c5249fac98c10644f1fa8dd7ef94d00351cc1f665b855eb9456966e2e23d7b37cef2483d11412b42f0674f3f998cbe5796547e8aab5f253cb40fb53242e120ba2ff6fbafb362874d9c48d15189fc0d04535c262dfd5d2ea711f7001fbde65959c1b7b5a82892f7b91435a72ef2342690e7fe7bbcecad993d50fb1c361f2266da22aa0bf71ff0c6fac0dabac6e60309a71104b6c2f470a716539fb859166e94f2dadf61c5e5b1def8016ce316c1e5f19737c793cffaa68730254405308906762b4084a13addb22046de86b24a4f3ba4bf935a0d5ccb463cec92ea2e0fc18f5e7d56a5ac04a1b186eb716ee46feded5ae558653891d776ea1816438f3663e270ae62e1eacc0b10012e03d2c1687296fb7bda83cb7416dca96d9f8543f5483d1ce640507ad400906c1fa0f3868a833b04ce46baf72d9db6602c88b98c50641f2a75475a147337d1234d19dde8acd372fb1927e11203e395d3ae7bdc74c17b3a34bb841bc8626902620fc3ca0a74adafc43b1d23a517709c72ce7ca8c22f68fdc046c38e2c8870324b82d19f666670aaa9d2c3e9219f018c49612d3f8a1f25623f856c40c5292bc0e0174981d05b1ff33cb5a1db462abee63e647e9cd4a4aefc2fa208f740bf6e820515eecad10f57770accfaaab7709eae82c2727428cac99aeb3e57939d321700d57c642dfbebce9b185c202219ea9b86cd580db85b96e684ad99763e7413a2823db82254516ce9bf5312742733605747c5331b883c69266bdb05a3e9a518cc116166c7075e6fd963fc30b862a79d044fbe16db97a02175079091255398af70c1f60efd32a1ea9ce6e8740530d3f1ac9d2e92a1c6b3363bee258b8b5e024b25e11798a5f0097cc7e1faa00135989d15b04d4c09f7a6cc985b4a89710cb0754f81689591e4417566f3ae1c707e875b60fece2351cc85658450b7b6f63e8c12d3d11947bf3ea91ba8137cf7f453949292672bd9fc23c7c37fc692bca63d193bee71250b2f28e1cf70bcf08b2f3600dbb3aadda62194ca8e7e08c4f2f9ff0f41c98028fc12d77eda6de4be5e18248978d5d63a9f42e8b91117eb53e41353ee63d2b1e3aa3ccfa4e46d2ebf7ec83b1c6f3b5fd649502b327e71c270f025f06f258232fbc85278b7fd91ef3d145386f43d5a8c7e5830efbf4327d114483eb124ae9872dde39f785793632de45e238bf7402ffbb0ccb9d5a5396b52e9fdc6bc642f5aa01222401869153350fcb5d010d49f89d369eb06c76e35ca1dcd75301ad47da251390a63b15c4e5ece511bcbe04a124a93da19855ef991c2641a20ffcd551a5122a50b47bb2a38f8927f62da3a155b0e349ee8a04e796f97d514748ac87e58ce72ff6d32fa5ce56ee48954f5481494412fa345e4fa0d099e45c63f9f95657f88614f849c5f4c09ca119540104e24fd788d0c4d1847424194ba3935767bcf4480d047d159a2e2705c2294a43415c72a3286ef2887622b82fb836ef1bf8e16ffe2b058635a5e395c4bda6dd0eab03258fc2ed07237763107282ee79b8da09d917a4101258ebad9580dacbc38d8298e2d53eb6ccd608e7e98aa3156f78f4935fcd212a5c031d905919933d09ef5f751bf9b11fe3cf43275b5bb6038e11318f1ef9a316ade55871294f421ab8e90732e389e4c2974610d7cc5ef383fa4a593dc91f3c18efd9186f00b64b6cce5b2d084903b32f1b6a64f35edc460b4b6133c8c53a3f25acc4c3e4866271b3cc75ea6d923543bb348b9f20a33a5cc30178d55fe153c20a4530ab3aa234e8672bf79c12b174fd7561a165fc5c8304c324610aa8202ec52e1b6bfb8828ef885c3281db525ad0926b0f25e58c2f695af13fae38549d0b0320e944a64860f708c6d3310e6da378df30d74198a518da67f5e7f9ed6cc5d2322b2f92d7d0c9e0c77e2b1c5af99ae6936cc603e305499e70192f74d8f9b3e3ca25f07a486c20d21cd482be3327896d122b2b73abe40e9bff85602add235eb3a52b0df3bf4a3f44bcfb79c2ededac78aa623630ac300edfb32be9d4621d03190823b84ae9cd7b5b99e39623418af1b6e26edb141adacb9764951415f62090f81307943b1822b43f07349095d3ef5eaf58a3b9a1a0a7478d657ac9b321a5fd03ff13d712eff23256a72ba47ccdb22c49b7d4075f071a53993680a7bad453a862b827b6e986c3a15722abc79f39c87c88a22265379af75b04595e2e02cde3de8428108b522850ccd05455902bcf09cbbcdc85f693f3afb0a2a25ef1bbfc303265870f3d7a8c2394bfc7d8c40ed04e2040c3660247c668a88cabe4bbec14c8b851721e034d498a7cf79a70dfab116b1dfa5498f9b75de270aaac49366f7cb24e4fdc08ccefafb41439404b53fff349c496618af4f2c611fb59f938daa756cfb4698b01a5847cff970f53409bd0d229382aad2480bffb19d1971470a11e6e4951491c16143f1fd364525926b6a25fa5c5d395e6d5c5d37a71d8b98dbdd7b4005485b41543ad2d38acff53d0d5ec980a0cfb1671d20a5b716a038676b552ed36123bfb284106bddfe74db10220bd7230df5f4efaaf22eae719582157e6f068377442c31e35b6e3c2c40c8ba732b34348fd9ed04089456ca8f23ae3f84950c5c9b6e6370a1a7a02871928730e599b2baf9554eb7bc4135987330341b1286b4244925ed228437be80590f3b815f9ec5a431b391e5ac4e1a7b8bf08870bea00b71a280cce29c880a0303045f1fd9553a2a89ec38a28711d1f15f7f91f17dce8239f767c3d26550b952179a9dcb67641e4b17a3146405147e3d380e956cab240aff7099fdf133c5f3353afee479722866ae03b461c0c0b21b14dfb70e7e5b11a78d98c2df030144d4927d0aebb2f36acd458a7412de3dfa9e6352e768cefcd982a1caed12e0c186c3501348dfb933e4b1d0acf2e848ff86cb2caa26f7e7a77b08ac69047e41e6c954d20e5a50f90d6807333a14ee1194e464ffb558cf8185dde62994bf85a2b10f7569b13c13852e0bbd2d00b79eda0da5964de14ac2aed76977a3f4f9e330fed7ee539b3d297254c2716bcd701238a26be2abfc0aa31a7d32d682ce27ae72e31c6db02cdc64ee2e42365b57a71d02380259e0cc396112e518b43bdaba849044ff44e1c00a1eac72353aeacf12faef4feabb06689db0bf0ca1deba13366720d679982aa89073e89c2969abc5beb47b39d53b9c8c118752732e7d46bba3e6414ce11565ae6b487b2ee01e691db80f13d5ba352e8a58f514b49820cea03e3ee2b0fc7da7713679a0a4a89b8b0dad13ed4c0ff4cc213f993669eb47f6b05397d04af2fdccea277827e5ff05b67222b3a72c660ea1d303c134cb2be52158891e504ce3223f1616c90094adc5cc383ed783ed495cad1aba214341612c41ebd679303e1b6109f1978db2d9f3b43cd087d0a6ff07c00793386e7b7d7f8d8f7e93615270876035822f071aa97ae0130c52cbf53127922f060d9b980cf3f592ddad7552edf56df4ff5b249b975f1b2587327c3d3871abb032da5234a2e88106108549b207bdbadf361d4c1cbe797f0a9878668af6670cd498f7da635b3c27a0bd51cea29de30e80090f3dec2e8e2c72e7207c695e74ac77f746415b464e9d429c1025d140fb4624a4876b1d4e4bfdf08cdd693de212db0171baa73e81b00af50be1ab117234c2efe5faef9c6fdf3e4cf9647a2341c89746ab31edd818fed8a861082b826ae8b028df50333b29494e54fa0745480538ee9d63e6194b63dbec9904e057c05868b78d05510acd373c77c55ff96c7fcae0e14f9b4483cc65566113d18eb20232708b8503fec64b438bb2863e4388644033d54c5d95605f3c405ccb3ee323720f2afd9dbc4371231b3c1fd18b3f23f409e95838d7f283f0a2c0db434e395922fa648c7fa0af5c0178cdda2e4fdfab4c0236bdd195bb54950c1620a08dc99fe3012c65443f8762585093c8b224ef07387a1eba841cae9914e544075842444382da192206070010b5efa100af536d9245ebf00fa36e8916c78344e77933e51f216024e8deefb88146ab79b560061c9cf0798efde15839753e22977f0c4e3ded32c1e5aab43141e9a3730126e9dedcf84dcd7da78b12de8c6e2e91848a542f1c9218f6e4f289ab777de64d85ac898ddf0b5782fb52d0b18151eddf408bf0447c406887d86217a59d2b2a88f2a7f6a28d463b7bf69b7bfeb530b5a9e0d3b481290020b19ef40a06e3c54301fecdedd7fb6c617cc96bf599622c0d3a30ee580d0d6253a3f81652d67295825d7d216460fdb4398189a3a00302694e4c20e3d875de12f857cd61373b6a3dba731f8ac68f417cdc16d618c771bc21c5c15437182c3a912a2dc14681d00c516846607cf7f1425715edfbaeb57f7218e2ebbc5b4f0a65a1d896fa040c76fe5589bec5b1038de3fc06304315879d55fe7ec226505069cba05f9699eb898a2afe38a379c2dcad2607d372de29486da43fd72a088fddf22ef2d30dec545d15a5e0ba757fbf6a3c0342f59f6ab83f6be84701d101cde165efa16e21c3272de2f8ec0eff1b3d7b207044e8781e45e47e1d06b2bdac4299c0dbb10a5c47f0b65730f1871dd5bd16cf7cfb367739a5051d5e6e15e82c3ec3a8f7903b842304b1791f2b917e71012cc018a91b744184cd75a52697c0d11d2fe590922a6e52696d13530fcba04e76c862655e360550dffc5654fe4e58e5b51c85e0019bf38973c3b71647477b3adc54ea9d50fabc808c8714f032df3988fdf0703510cdad624b0c054979a9d1ffef3e8e88760512e3e236c6267920d6aac9a08e6f40c45287553f724722e3a60081916f1d66d1593c07264b77837d60cc7de102ab23040caa22639b49fbe580837eb885a971b829c3344e73d83e162bf25a4b0bf9a0c51a23961a44b7919c3d52d8bed871ba2fa73f7a521c52171cbfa71b06dc1c22f05008644b710bb1a29a5764e8e3604e6d58179ff7937d329919a643911051315ba2a8cdcfe5fd8e1e4bfbb523d8863c53d5a6dd55e5632f631489c63fd00972091b9cb7044e2e4bb21aa5f4cc2295d3a05cfd434b0a60314ad123bec5936f50a5cbf27f84da82bd30a6e3bc3e6c8c818117003e7b04c66794fced09f1d0f5a1f0bedfb8aa0f7871ce65b93f3e864f1d095d5d572a769ff01cd6844a07ab62f166ea4d27faf9389fbf7ee6553ab0ae97d6798643060cfdea31cfe8405e4a4e0304c0f7fb9adad0331414e0028e20a60f0e3480f86577cad5fb66c6e0f720fd809714610ab74aabd45bc45424c7850dd2210b7d13af20b90a5a7629d162ed9ae2ba7e021d3f5ccb433babb25a73a453e6a66db9a196d17474de29e58fcdffee11aa497d3e597db67f09aa963786b737e2cf4becb5bf602e040a4c31e2bd116340de7cd1c1296b8ec7ee70e6f51c1170048b5a1f3798b473beab81dd9999c25ca10ca9b7fb3cdaa5af7cba87fa80a8fdd71d176ee0bddb937fcaf43d1de5bae2003d892b8565a10479d6eefdfef72db33a268aacb958affc4c5dba165335b0b8e1799330e60d688a580e8397edc9bfbf5f8725f2489fe25a7773b0f41b575e3871e91645a7739681a2273dbc7532c5f9b95d8fcb3596596c8aebc5ba5a360e8c51e4e6f522fe171883f28f981ee16f5f8d6705a3becf13342daee55775e28d06a27108ee97e36ad88f8fc52f41eabb6e05ff7f71a23faba60a7cc30ae28b38608118ec33d5eafb2d526656ad113bf9f326cc16d0a3c35b01a0ac5b02a61758a292d98226bd36c828876f50fd03d2cc255ab957047fd662c09ea14fc6c102e4bb2271b8663bac9fba63bf4c4cd898df09eb9099726a3b3bea53ca92221dfcb07ae1a9fe24014f37f17b7e9f465b14b72baac9cb212730c6378c747a41e579f3b260033ad0f1e9952b093b4871e29c1eea441d2e970924f3c051b5ebe27c7bbb5702d80d3319828d4db3bf2d68204a8d5e4455bd45085d304bfdfbfd17480f6c7c425e18d674dd9681819be55363800475b99e7553943a40f02edab28dc10aad05e20055e04bee2a45ecdd1ebee114559bec28c0f28597c20a56ae5eacae9c3fc761eefda991c5f18785edb37ccb1b1750dab6f744fcd65c536cfa3caa87c0d690100159739e201c82ff0bd142e8cfaec284fc5b975854382a9c042d282e7fa9a271017523e28d6e6d15dbb1fa63841eec4fbcfc7634c1083a6e82ed4ffe020f2a512f482a9802b0375ebe31f6dc1c145257a9e4711db354dece6908f9ba795aa82105f33c5dfdb1d5ecb6866f00652033dad0c637d4c7dbda6ff6e91460281023601a12201fdff4ce5a86d788a6f8edc86a12bfecd7610f4fe4a3f7799e5acba7a18720c7b90ca5c68a161335ff7216b6905a84107732521a0297afd9ebad7a89a11feab0b9c350a8205aec968842997e44653e63a22793a28ed94a3a548311b8616ebaa982bc1e8de13fb36559fd66ae09163b13b269d96555b11f94ec4a6f7a610efc6997a41e8947e6f67845b30f4756884f445c5d38929d1a2ba10ea3a3477013e2dfd9e3c45ad6cfd8efe5a8ae823e84d3f0a400406ed5de70a66d2fe053a04eb55de18a94284bd9be0966b3a7d193de657129ce0f7a875bffef8d671c5f51b3fde1426b5daf0c027a88c32c0868fc7cdf641216aa9d2a90ca6592550f78c2f6e4fe67cc06ae6cd888da78d164f1a33fa455acda40076d99f81f89fe3501b235dd258784756d9c57e8775f191755f6722dbcdf694836133ff3c6d451835980b4525aa8d579e13e0cd150c794a6d77360cddf4eb7dd675a79929531bf1f1901bda560cc3b5f69f400f44405865fd61b10a24f73f4b53608faaec73aa8539ba087605092b52d8697ef0b5da8be075b944ae2b0912773cce6e1f9a26a00733d30b0caa17d3a0c07f945b315ac693ed31959383d8616c0c6bf5e2612b1632243b1410a6f876d8967a3f5177676b2df0b338ef147085172b2ae5f5bf64752b49eb1c5596e3ea252d6937ab8c160998782b08e4f44546e3bb94af3628e94c4ebc5b1a5d9d4276bbb9b28f7c72d778e7bf86956b3d2e7565140cce196aa3dbb85398118f966a983c4226d3f2d8b94d7d89525c7dd4089b876bc833768b8e981d222e137ea055b2aa524997333ee80b2b766c3f8e7945bbc4a31f822e0653536e7d490de668d22f61dca2b6e869f5830028ac8ad72cb1298daa3722441798e0aae6b513ccb33468ccd7495644d43bc472321bdb6f21f93d1a7e63de8805f8c86899822ce8ee2a78a2e765764db3e67f5f3764c0d017e1165988ae0e3306acab2e6b1711781ade84aae7fce89f3655978ba2a2f612a701d14f0cae9ee976978a79a1da1e4f9d852e3b7f7b4da4c5f099b525c365c0e997d127fc54131aafd7b9b366fd0adbdcc6f6f9fce07e962dfde9820e68b1451def4c820f204ea49d7c1c1b190724439bb6e14ffdcaaee4477051b1a089199eeef9e85a1a560529e2940da54a890f29e3b20c1a07a69d973fc3872a887f3323a980a5d9689a35e6d66f0085d3940b18a27ea8e3a4a7ccbf405fab72c90725fdb094ef8d869413d4c876a1a6c4a811a8c5da4d579b2b93ae6c8d79de7367a09aa5d34c306e0d3d6b1324b2da04531954b7c623fd983de65dff6c5d89b07444bb0919d307c0b98365ffc15619f5320dc71d4e883377261daf18211b360362fcbcb82c902191da0f0854d2599104ff03e86226a0951df3f5d448ba8b88b9664be5cd4cdae9871bc26ff8c49a4543d421ea40a166b3782652ad7b8df870d9e7d241bed6961d42c464e781840cdae51c06c644b31269a78fbe918acba9c006d0c66fa2e5bf03d8ad66cfbbae0b3f485b1bd59bf9d0470636d7058231ce17f062cef8a28f3a5236e1a02be9fd38c8b148099b098f46d67986f335d49c93a03796ad8090295c4e4062a200f251db5bbc2e23a68d50d0a4e298fc8977f599590ef65932ad7089c383cae33fe3bcc1d5e7541dbf0f6c893b4295b783ed04a0bcf0a33b500dccd231f3cefbbce817f20608e02673c04731d725f9f4f3e043421a671a857eefce309c15df609e2f843fa95dee24c25757164151d3b04c4a696f0b90ca9ca979d6f5d32977443a89628a1d366519eff3bb19f98500979aca40fdfa514906447a07174a49dacacc20eb90edc6bb277870996552c49a5cdd96f622f7d196381eefe3a8584e74b46052e975aa247a075c34998894d7b6c1db508d1b70d8705e2597237590e732ea8ce24dcebcfd3616005f1001df4221e8ea5ad0b19266207aaf6228f8402d6d09437965ec9fa771193cdeb6f1fad6cbece321e0d5bcbd94d8b37ec12c69bc213944a7b525d1d1970d9198500135db162ac38288150d1e83228e391e80c7b3cc0e4de9c141f11d542f1f4bedf07a6bad47d07a3330555bc33da7e1956d666e6aa2eb6e5ef4527f8f06ddf14ad8ebfd3ea3f32a0b50ecaf0abe3f0d88d753dad4395ffc430e9b6dba0ae745921ae8dd3b03a15532c41f8f9d41c712e75955ec2834302a4277df34d2178e998241dd2af7438e1ba5e00251b53b7bf56bb26624e1f39e215e1d0141dd1fbaa36ce0c5685277d7baa9a364d2ad3da0e5c2561a4a4c8511cea3dc79198e0c93fe180a4a69ec3268939807b52964956b0b85fc566e69aab96fa2ce11bfa322e07e0de89b1beac772eaa0fe2b7e2da7774a4720d55ce0f426c3862171b928205fdec1fe37f38a39a2bdd341b275874c19674195b6dc5a7738ed22faf7adc21a2b1c96cda88234981f91630fbd6a60fa601c22a96fb59b3650232c8d7c239706c5ba174a1fc691c44f107708e1f3113e0b02bf3cb3e165d3fc98711ef63c990667a1ec6f4eb11243750d35f2f0d3f685a6004d38e355a4a9e4172e694e5121228cd6a9071312abc8618a00a1b653cb17c8f8b6758eb3925fac70ed989b584f230267a7383508535d313f5b844f77b1cec5ea4b6e43ef0bacf1404e56c6bb8e0a9f2746a6ac094bf109cded21bf170d7cfad8ee92a31fd0acb5c3afb4e7c5d20a963c6bb42e457ae6145084c57d5e4941eaa7cc51004fdc22378331afdce816017a56fd30191e289c4010ae6091acb4348decec5165a7e0c242db31fb0c7b8d2d39e9d7b5a92ca51d53034a7b71af996f287bc36b892e8f35f6ba75629654bb19a6459db980ee3cf943186a76e5d6e0b5be9c2d4e03a204793a99161484df810630d2fac91f46ec113cf76c453ab344692731a8d5de6c166ffdd579a64fbdf915cfc0f2235b5c31af63913836acb5f6063193fbe50d47074d44b6052efd27dd193f47decfc4db2fe921fe7abfe88c8ea63d0005561aa0a3634411a3f94190d511636b974c0404f08623c4fdd7bba46ca223ad51f6d05fdb27b17ac87b85c9b700c275f0053128226e5cd7139099f51b2491754a556c6ebf32e6ec4680cab54012e1f29ea417e485c23c6ec84eee51df182532c9f2c450b98b2019f57b461f1804e19663ae6d27802fd0ec29614373e74a31971188d38e6ac0e33446a92906d901f86ac53407bd56cab39b9d96731236b7bcbb8fad2dfc9b4b58b2eeefd0f8661bc7ba236ca0b954e54fd7e33ce6a8b7c004e246280f0fa290d4d9e9389b70f927abbe4db1bb502c1109c0abefc5aba07a054d6fa84418cf7394fc05ef807a5909051c9abea5aca66d00d165b30353982c427548905b25028d1388ca919d504200c47831f90b74e144f48b53c1069655e7dfee37d8051bed3f23cf8c800b380e2b5c74a23f0eb5534ffe2142923d41bcc5ee9d251037591d55822040ba8a56a2188fe752b335a99e79643015f507533b1911cb4b713e66502cda593ae86517c8114636e2d6b6c3b3712b4fc22dcd2c7c8f4bbade185997d5828223380330b4c428b65605be35364bb0e25e871815594113af0a78adc98a94627be12d837cc7ff1a1f9c790c0b333581f816f5e57da4ecc0ba4d768cd2097f51a0ffbfe1b7421c2f21306030d55e5ec69611e0c318e046ebaba2d0051313a95aaba337af1360f22ab12ed49f064041188a11dc8f73c57ff3abaa6848c4763d527dab886bdf84632f7ba0b577d7afe61608ad731ca9f238f65b6f0bf432393aa0d533b1612b73a015ec979763f86d1dc822423f1c729a5724426ff359052fe0cac2ead0ae2c549b18a5e0b99f7cbdf52f80f5b5484c034f40ad317f4692a6c044b6850c1eef16aa2cdea0eec67a13690ffd4fd48f4b39934f16ace013e6b167b06f08c43761041227fa40cd09cc5e6758842ccb330e28b6c0d82242ba0f979f2812b220f407e2881c755474e07aa83b49c3c6cdc0815c7d4fb7bbdacd0b7a16de2da36c3743332a2d758c713b657a36b031306835e3ca19f024f03e4d4abedd3382fb78c13b9c252332671997f1d7cd3fc6779d130ca1f5d84c819a3a5cd289e90f8bbf3f4323e62402b01eee9e92769bf748030e490bca31872ab072a61c56addbc15d96da42f6254a48f32e969a48cc2516f68874955db4c6f3dc961392fb1390072f309cf1cd184a4db278c14961844a8cfcd2a71bfd128ae4d0417a9f80ade2577c02b6b25e0bc36106446a0afd9a2fa75180069ca61f438c54c577267f857968d8261400311d90b0426bd5cfcb8e1785f2362bcc67d8901c70c9a0767756554272ad984a320bf62e596c1bff00d86896c34b12095a056bfffe384791b27f641c54238cea7016b9a7a0b50589b383d872c940c68276cebb234f2dc3a0988fb5f0b1a540873d2ed7031992e44f30a9f31086bb44dfe80daf775e9e23b5e586f73071633cbcf5219f1e6146925a1dd0ca884501051dc250656532fb9945b5610a2d3dc1f8865908312b9702825cc774f4e739f63a5e01524b64d96b605b0b8e02bb2600e108fa1e8e9d51a18f0d7c8d012da131a858be8168a3d53b0fbe2d4739ad3aa5aa066d05796b7214674775040bc527541b63207ece4dc320e93c27556ce4d87f38a57c048d47ca7c0398e3047b4d221541fd9702202b388becb8820e56a88e2669a8ce220f24271ac33dd667876102d1ce6a4863dcf28f58338a2eb6045c94aa3ce9590dcc9088c48f6a4db730cf41221b0c0fd583d36c3d6219b40526908e67d5c3452eb16fab30cf82def51a071ec44d550f719cb7520b477145f099758e341fd279137a8cc1fd5c91aeccb46da4a23c323922ce8960d0bcf33bcc1968417559b3892e3d269d324b28248ac0798f64ab92bc0d4fbfa36597b915a969d9470af59a3114be05f32c95fe6f5585295675474122cd90d3b5214d499ae6f63780bc7b1f2f198e9888c112255b76f120e64aad4839bcc0ba135a3c5fec980f230d6360bfc1255b278b0bd7b979cdec1cc913fa88f7cd7a619a6c68caa55d3c7f8ab40e88142b7a7f3527625468ceb0c50aac083f203e29f875a56d24bf11e6bf8507b9e07d210b73e637862c01fef1e7a9dd00644512a09f5bbe49529b9e991711cdbe46360aa76059ddbbeebd42ea092fff315106cb12ca9c2484ab29797846e5edc5847a0517019c15e48fb6530a1036bb39692fc34bcce9e4bac49dc52db9e65a4b89a70ad96d89826ddd84040cab549bf342d8b83ee48df122774536e8f308d0690de90b155cefa08029012ac47680aa2ab831fef3515d6e43d7f7e701848b8a523e1b1b2171512cad7033113c59c9f6cb92138e163478a8e4f5dc6f706734d301e55f167a87129763bf5ee82a1fb3e22912271ba50d42304598d6b29f6cbb89c3e45f1718abb5a3ab661280dc74ae3ec58e84a57e3df9af2f48bc384f5f9f468106fe0731e5369911915d225ce1412b303e1c6d49c945256a42f3a287f47cf31ab7df1cf636ea8020f2c4270d8e59b5fb2c3aafadea775ba0d1c0e72a4662e292f87f185c911b8f47b6c042a3b752f1fcb9e4ef50314a48e413a6d1fcf2282618aa251f20010aaaa2079b139aa126a6a1ac8003ed088ef32166b989b868e8579433a22f9900a1830de89dd332009f52a6e6ab02666b817e4c1758e752c0880d126a6c031de584110663d145368648252938d5db976fffe42f1f19d4de0ca4526391910caf7d27d7f611a4b17bba8a04692ab8f5d09ccaa3e0d42ea3d3c94a499c31e410d3d34fdc144c36366c0328a33ae7839485a9d58910eeaaab514d0df3243f3707e3db46255e5181f633fc7f7bfe60147295c3c4adc5874e15ea3daeb9093a1e14ecfcde74698d3a13563a3543f17e73354cd0efba2ee0a42686037479c3de7d2daccad87bad269ee69bde8c6aa72d1a93bb1fee5a683014a7df7643cd3c236c0600c2db537eb3b7a7fae9f315d314d22198445338bb3c6810ff8e2614461e8a29aa9af0e3551a6131a3eb568b88fa05c183d45a49c733c803d010b1385204611c628ced00b5a5ae60b01ccd105eb2aa20b832fadb5d16106ed79f26158475c003179b684b37d0754472c22c3b1add6a71d9c744a239f7728770b108b43e738b1bd28b8237d8ae4969572e4b0c1fe536e9f9c14a95e2837d8d41d70e661f459c08798bcd27b4011d0aff77f252bf8a27e444927507f6169b0904269aadcfd51f1c96e6ba950973343fc29e78311b6a58820b7c676ecd30b5dbefdd0467f027f2130b5b2a9b9e857300b0f5ed3fc7b78fa53cb5f999cbcf982bf26d379788e1fe085befd9d73930437f0fb2f83db0f2ce95cf018d8216769d5b6334d3d8205f2a2d7ca7afaddd0dbde50a80a9c70e1ef0868d594fe104e9b58cf390035d4d68da0bd7c058bd16d8acfab5a92242b4a267addc6133f875ec91ab5b19bc2d05147918deb6fd2783e4a052842aefaaa607d26ee3d52cee023fcb7bacdaf7d1b481db0c67d296c82b2990071bf611b72292927cb08f7366edc566b9fe38d396aa12fd25b833d8ab894f6eef72349ce2bab7abe0858840b29397f1c3e642b054b835cd300bdcef2eb2860fd4ec4a869dccc2368403a34a34af25f4d93c80e573699e390ed7ee39a813f166f06a3cf1304324964a5f3ba4511ce754b2a9b38d26f66b9013abc9c710bc91c9a454efb521b81b41e0bf2abdd4d8bc259b1b391289be82462772a9585196f5a671dad5a96d2e06cc4c1b4c71a09a666d4f435aa4dbb5300300af2ab8f28068f35510e192864ef363d1e54cabf309bad405b029c93143e69011256cd36f439b7ddc3ef622f6f8aa38a5fda66dacd0e4f0e1a56c262b5c937417d2455ed57b2724d0c59cd851bb82bbafea3b96dc20994bafab1ee50c91fb1a217c538fa8e89d7a275f1cf29226a650a1880abbe6ae1a4c0fa1cfb28d5da0a72d459a2e41e16d008b12d3fb07a3ad251a605468c7a3f9b2ffdb032d08d0065c18e505aacaff1e786af98fb630d296a9eb19c1795063578b93f63b86cca48a6628b3a2cb85697c0abbeb624ba13bc1431c71f2348dd6244fd0e2ff3583136c4128af352effa2eea5e2030bd6c209f28a8da66fd2a6ce6d1f86201224f9ded79718e8bed769a219a8c2ce8d0b534c8834700757010a5e8b9cca5cbd1a6992e6632da2be0957a757c10635ae72ad076f2db0dbc440a587fcd133fe19219a7a2a8c2782f9a4f2311c0d948ae3dcb22255b7eae00396d386153e2600476ce2d3a6d729bd6d3046aa8fbccfdb4212b2732764d9eec069aa3a203c0bdac4f2903a118328eda29676bc2e3409d5273e2610ec7972017e596afba3e58fe60a7b969cf72628e0a8f02473ce72e266f2ea01c8d71d2b15246e47ecbc525f5801e0b116cd8b17acd6e7b4f9e165825b8cd5e26042ed55fd4243926258c7721c2c731b99094419412d52a07df261d19621d26b33440a62ff6ab54f8aaa7eba9ffff7982c32600fef75c0e7e8788aa9b088d6d30d68adcb6c770ce90eb16fc157b85d2c021cbd1bee03768a7d59a5bcbc18e60f3b0f55f7deebd16d0bf250b0a9656ec826a83f1e503b525c2cda5130757bf5d928b81ddaefcb523b216e3f2a1f688b8eb842c82cade2b7bac1093238c710cf4e3b9b3ce360c101ae85f5595dbdde2aef12b87921d440bed410ab220bfb36a633d56a250393736b5e1934d46e6f678a1097b7e02ea5d6badfee4fd4e4eb9b4c037f0928039e37d91e09f7f9e96f78aa337c9c6622745a915f2e153d61dc0bfa54a3a13234aa9862065fade68ce5da21934d980f14bcab334d679941a8a9cf3ce1de46d6f4e2bc3f463d57d49cb5e58fe989c0ef1155e4817411e41e167e05174f6bdb4df08e1b9342c8307aa9a5b9e12ec794c528475651cac6cb4722e01f2f9286417e3c8785deaf304bb18733ddb3055e4cba23909563025fd030ba2c90816cfe9c5cdcfb3705ca87f7d0280babd46d58278c10750c4187e06d3480f3a4495cfd8e21c73bf1fa3f42df66e2b665f39b32ffbe03a41cf16c3b3d72b7e712c34e52c84822ea207d37a1824ac35332cb25f72ff21a5eceb52c4868d891e505d4a3c0d191a5f1a76ca3047dfd04d4038532ee66021d6f2ae6921e37ee25532895bc78daeea290b2d8b4a051cdc717581bc423f03103a9a8941ee37cf59bbbc2f4dd52e6ab48f2cb96ed086a5df521dc252d547c04180f110798e264b34efaf74cb19ae59fa49d0777443209dc1836a06d38bc75740365b998d1b6db4b6d217418559054ec4acd62a0e852e231c599021582d466802a0c95c4a0b7e23acc3ad3033b3538f90bf156cd8929e860248a3667aef45e722fc4269642b0522344c9dc56d445cd9bb26dcc4288e0be554d4ebb5909da7d112cde5601057d202435d2168bb06804ecb9d17c13e782564f5a30d018ed3e3c7b02e8c30b7536a7975da5b7ae3b50b491e134a1df943ddcc87f20411dcec3893f08016d92f3f1df700662b464a7e97d8e05fff95efac87284fbd3f23f4ca648bb087dc528d37fcfe7fb3b9dd592a0f4aef86222fc4c27b27aa9ba67d46ab0c8a8084bf2527db71b7b990c7f4faa9df7aaf59e84b054e71f18af3a55c04f5ab63b2454a3163e422018f97427288d81351b122bafc018547b36a75c1d1eaa7101991f5f65048ac05505786f8d0fed78a1f15513545255df7dfb05928901e8f42e151cf58b23bfb68da8f238a5ea70cf6de106f8861ea5c830e84439d0fc58db5d7e0f627bce6562aaa7916415c7e58f18ffbc95443a4ae4978985a5fa14f95ea8eb185c933208eba30f6f36de8cb8eb88966076723e4296e6663cfb5daab5c5d0c82bf202b170e2a87874f23f85d815eeaa4210114327e0c43b86afa5d62f525669078160574d156d584639a76409e3c09b904f9a35339410d61cde4a0da1028ea61d7261237043e8bb22c41fad833238e9f5af65d390cb3130d304cb557d2429db305f8b97de478654480d5ff32da6bfb3a7f834aeddb2d9c4677e221b6e679c0a0a5fe3489bea5280185fd44355bfd6104d99a325e1c0a07fa47136045513550c2227f7f4d666d4d2fe015341c4b5931dfd3d5a97befbecb11bf2b44e4329a1980e8e073f05893cd4031ca6d35f1383c6072c0b46895b7efbaa913def4285d6ae0a9ec21bbe954334619b88fed56deb8b61d7fd9105c31fffe588f41c48de285d0283408c33062282ec100397d70e790c8092b3d67cbf753e907713f690eec47b01b2e8431ce08ab39f909579c6a4b24a08a5950d5a83060c3ec8280fff063f2d1fdedf14a6a14b1469fc02fda74f93e923e410d1bcfae2af5e166c27a237ae7b1539fee3a55284e6a85c0f5222b5800305bcfa6832676658aed1f64ee653a33e0605e89f309bdb7d503744f9b0eedf8d864d7e7d82f95b94d20c5092221ad257131afc19bea71c714702c4fa998a4ecca052b5f3c2a9385942dcc5b76ddef2750867f9c1dba79868e90f3e3b4e6ec3a9bc70f1600766f2236de57b9d764e3e331ebf584eac6c087716366a51dcccbd9e3d6244717f6b140446c9d3f55b8b1cb40d15bea5868a0d1cd565b9a2b7f081499dcb8fcdcd15ebb0a74acd9b1488c7512eae0c3bcb8568b6f8d610f3e50591476a130729004c1749f2dc95ca7ba70d2b0b401ce3a8607a9f8923655d99a88390ff81d6b8a80e2357b7a1cd3c28706789250764bd44a03860330480c30c4431c8262985f24cd14778daec39f8eed69c2216ec478d34657cdc9d91c774bbd58f4b36c60701e7d7d89866f3bf5c655052581a5a5c8a24ac27752cd37b0aab0e11d46bbbf74064ad352a7b97877870e8f76c088ff36265395bb7c814bad620a311aff075d327f4046cf03a43c416af266ff52e666306eec54a57c28c300da173dd4c9c55fe70d0dfacd38f28dd0b6746bc3e1142e1a3e71a351b1096dfa4a2c34f9d3a34dfc8f7bf45b3b4173770b286d4b7039361b892938a33319427900cbb86bf5254d575d37f504d1ed93212a5b0e31627e33d0d2d94cd56434637ab5f1648d53f65d3eee17143f9596dfcfaa830163719feb6ce55fe3e2d2ca6d66275db7bf54e88a527597822c29fc9817df24ecc1613102d0d407250580772d9d0053bcb01e86e8d7bd2d7fb216aa3813ab9d4b56a0c6f331230855bbe7ff826171184a5a1caa4d74d845a4eeef9381aa211ca191007573a4896def084e52664e76760edcb1aa83ab3c9e6ed41bf1f7ca13284c8d6063378947893775fd5be99c7f93732315ce251a59e0a01df90f6c34b14e69b020b5a3676533907be4c7c868d44114e2cee8d1d1474b92774f254bcf7d292c3d2129a4c1c6ce17653b82270e1008b3a4e4002622ad689606e3dd0eb75dbf52157042291d93b94c495acc07158cc9124f602f8f8899c6c2663fd247ad2a55b205c11f10c970c9b4ac1230dd99550edd69bf82d14bf386ca4974edd37cd849526632ce50db918ecdac0a3c9007513adf0f2b2553e0a16bc0f6d37b3b0636ac84c9a012d3cb414bd211672ae7e5b65c4473f49608d8a5d7d22c5f8ef7792175839bb21dfa1d462a7b483fe3df9c1b164c4b7c3a4f9c0c8c7582d173f70d1daf5072514f7f333c8e11c2ae4a85d3e164efe414d9ad339f4289bfbc3218e45bd747d2608e8d29b8ce547daca3a877f907a4524a4da15694377f1ee4f3af875884ffc7b206ef3080b5448192fe750863670dc1b6e35de4ef5a25d731bccfb52505d0e62084ece08e5ea8c54006fe99f8b99e4af8021a09147c8ac27fcf29bef78d5020124873fb13269c51302babdd6a04da5f1bf8a9a25475467cca2a648ed75c6abcc26bc742d1b1ceafc5d56011e1a531b7644c19437950a755f1a05cdb783b6906709c6f684c3e8a1a2fa4c3fa389b5f77d94c941faa48083616e04be7c80b4180b25776d249332fb6b9121386bc30bf47a04c8fc68c51233d9c0babedcb42a2fc11878512c84e56edf200f73ca8be4236ea5f0d70f4802c75eda01b7cfcf4f12d40a7d24e544637691ef09781ed958122e0f594118221eb8c7ce2cd869108302cf02a0d136c98d86c6179b7df9850f26d5d6f03591b9d0de9dd8ca7a41930db64c0144b544d057b6ecaddafc38dee45b43965edf56d188b4bd05e252afa7d1979e1b714d9429c9628180b72ce293bd296c6654009d3f11a1fad50803d5664b98f40386c1e56b41169c0b9992da5e859794023e9baa6ce862b7508aeccccac8fcf71f83514e884f527932a86ac7a2ac600be86a4500bb917d370b30d63402788ec52fabcd4a7488d43454e92cc910944ba70c4b42966797434ac63b4d85437cfbbc03d1f47610ebd7c1d87adcb30321712a8a4c79a7bf249bf8975f2788c713e9060b69c16f60f680a9ac8a4c5022e26584262f7d2c01cc051ad39c09acc3b9480207ba693b7b60e3ab1fe6b22a6a37d6ef5e5c63e8579f95b44df008568187eb461918e21b53453eefbf79fd9a0ef519889ddd20dfcb6aaeff60bce608d0c5a48d1d07b415b4875aa95711271e5eec233bee32393189a52b66e5480bf08d4ec60b0c49e87df397ac90bd8a58caaad04544e4f8aefa4106ba5730c51d04bb5479231901a430804660d0f54087133866d698918d63dba07bfcd0f399ac0b3b94a4640eb4e295dbd751785b13cf1856f6c6ed4d6516d522c0cf3c2bbd332bba681dfc20938321a00ec64893190a32cead764bb5492bba2661ab4dee01e3718486d96710916b980e1ab12605c381c74072379f38becef02c69884bc245a2bcc52894eb18547be11a96c2eded1a1f037e0ef97338cc09001b93335abed56c70ca6712340dd60976707a889b83e1412c0d60f7159b0db6b29a35a356361fdcca9b5d0d21294ba9634eb6fcd7566405b0e42372320b1c6b8a37d88025b5132536aa782b6c1e941f361dc967c7005519465e17b3e6b7468d790a3afea49ed8054844b7d35b103e01a9506afd4da4f83d4092f259c39cca27343781d90b880641b2c3415290218f4c3a6459c6d1a7e0284e6cfd2cc291dd6b643d349248904dc90bbcb7473011dca9e9a73e0b8eebd3105114bcd01152584fd4f56fca5fddb005201f026e4d2d12e9a52927d2ef330d7e3c6c8e46430b7bd230918295d5b35d2a29fd4bfe47168b8fce7dc5d71d008e609fbfbc3be011b1bd72b1809c397ecd60e9fba4d79206e3bf8c551f42db0cc09296173017d706c535fd5752bf2d609919e8ef08935723c579d858b6f020b3353e61d95a6c713cc54e01d090c593708cc6865652974029f8b3420876e2aaf4334a4213629506bad4fc8c683d1420f0d39a10675763470b84d48090dc34a2e8da478310801dd4314f8f7b2345204ea70ceafdf6aeee172a7c1e660dd2bbd7929118224bf8c00bf981606f259c38d90cfd16460a36c8332a60b0ab7c6b80da96437400459e79ab837e484e3eaa2230a120616552e80d222cc85211390e84365f439a5f094a63e2997e8ec4a092a91a99cda4b4eebe831b2f71bdc54e436cd60af0eb89792ebbd674347672e1b31175b16ccedefae104180f2433c852e3db1125c9d573254718ebda81a1a231dafdcffa9ba74277411720200c6e5f592e0886aef90a9949e544fc1ff777adeb1d693d4fc5e8eba08a6b942aec4f6894e6c4a68fa9e73a952209a118650a80b399431f30d77a356b9713dd0e03d6a331bdeabf87cf36a004664790538c2cc2c37031b34eacfd240a2f92f002fe47c0875d40b3abc1fb7c0c6bd8c63144f7ccfb4941450e3fd9f94f8b634d05d9113130f8f240cc2b3d1bfd7fbf6c9580a8cb4b6133fb9703c5ebb6876d041ff0088e062d2ec4a778e419f4226d7f2c0512f137e7cf14206847e7f4963d7d109fc7f6d28dbc14d81b66a9c5b9ffa18bd69494871c38b84d0384a3915841c11e66fa3464278cf265179888747faac6aae198d026deecb35dd97918af1089d12a690d36b0420758a448cd4c5f87f086a5c8cc81d95fd6b49ed5218423c9df041d9de02d9680629c167809444d508996aac94a33254d70bf708ab077fe8ae6cd081b3ff8a37c4cf5fba97f0c6768297054156a92aeb830fb690f3e6837cef2ef1b21b60130bd17a8ea14b86495959e5cf499b859c28012250a96a01120f9498d0159110ba9fe3c37193b22f5a824f36f0f0ad2c1e0de7d6171484df0772d0f7719decd4d015d83d508cf230d921c6f948722d99b86528b8aa505478a9d46ef49123f27bcd3fd229e1095aeae113b374a4c8efc55e0f902d8f90bc23db6afd6c110af36ace6d7106ce56af2b9ef440c5f23c2af730930597df889d83faa92691f285e62b41f1816e0734fd2f69666a14d18807ef7a9a0bf46531f5c8d7af079e71706eb8070af08fafe7fbbb529e3e75ffc279d3defcf3fb6543d18af14513b6907b026bbca5bd3c98a523c86d73748dd92d9e71de557d32868e262b4c4617e6d23ecbacf374a7f83c2cbae39093eed34703845e774d267a1404b56df147bbd24120bfc6c2eb9ddef82771d2b317f7b11999fd8a2d49e7b23ba6fc64c746094550ec4573786ce5143579c6fa178410eed19358eb9dbfb154794ee3763929f9dbc022196453723d1391648b764054c215087aee6263bb0cdf939e2514d4f54f3712bb57070c683350ecb10b546727a23bd2aa1022b8c76624eb30dda844804306305f4cd844497dcd12fcc2b71cd1087874b19e708052d62994317121a9265554a0a9b7e3847c766cb42bf8190c3edd402df3dc26fd95ce49cc454629853d4d0cb09b7f8d80b7123901f3fb1db4a3edeb04ac2cfc4f3d59454391dd32dbdc87fd32df6394c95865632d9600c060b620b05f1b114c898c270696b9508045b7872f32f575a81fe2c7801c423b7d4d9957d371028da8b6927d0ea7c61aa7c330cb62f236622a15bc36860153cb0f1c4af344a3a0d301f74342cf7a9497dc9505f7ada1f835b819a8e357919c29abfe0b333c70bb71bb61112b3dcc0e2b6f45922dd521b093ed8f0eda2719865e4994c8605dc064788c5bf2fc109bafedf2743d2751d25bc9fd636ad648bed681085c75515b321934168ee163a9d1561cce2d5c55a090d6603e9bac98f09b7583b440098eff3370d367f5d31caa30919923bc956efd3116e228b0b16c06d7b225b5d972122cdaebe44e1929de48d57e3c6c15806f36f0b5694ee508a9db727a32c562207cb2e6aad3f43882560e3f585351ca8154ec621606c6b806764f5387a9869168f8a80934ed827344a884363c2ef14d39128a5205c6c9f0cb2477396380bd2a62682c9f181606bf1bd67a9dd96b68f53aeddb9031cea2cf25e1b08a016bf8296d64308a7b43b02a573368b8e5d4326d15de2252fbbc9f6a3cc14428990f7a8910e11d9ccdd7599e2a0eb38967caea18fc000dc2e081500512a50a7bf3a47c6bd26284a5c9f03d7a8e574238d2581f14b6494e9047124578591fd2c705577e86c18942fa5724a6f36329e19ee0a662eac814161161a6c600dc26290018f80ae58727060f9d85d83f18229e05fd216852733226327f7214eea34461523112b86a8a279133dee1f427293b7e235671911d3fc8e2b14f617b19796a15a6798a30fcd2d65951964fc9d99aaa0de2a5a384136a6db672e693a888a8e6ae6af03ca44faeede7d46959bb894daf0450d8694dbf139fe870a24a72480b1403c1d4633c805066ab4833c3b84c30801a9c741512c35e587141080c78744714df5747bd728418222536a79899f8331a4b7f37c5e60ecbeeaff0ea097c86f5e11869a6e578dabbdf7bb452790e01271e42739fef3f3c9f94324242fe060593aa43ce137ddf615bdc73ad2ebe11b4a9f035d0cdee1feaad523a61c4f00c696d6530375027bb6b9eb2df4f42c132ed2e673a12eb6d21901475a7a21f9657e32d53806f863591a557eb7816258bea2320be9161cd52faec2c59ac21dbd5fd51aafd4f4ff422f450c5e0a544040d42ec10b250468fe58c5467dd9101e2b3d3f6572be4cd9c6052a5725b5c8afd0f24df4188a53d87d3e18387d76bc2f9fb587abddcc58f856a86077aadff9ba90e7c4a95e03b3ccf959d407dec88a2d64a520f6de043042aae416535f285d6e9be83f58559190d9cdf52009eab6e32bb5f69935d9c83af7cc91d6137779547b57ea0b174f341e663917fd2d38fad80d3e64877bf4295c02ab16b85914f5e869062f1a139d0bb2bb0f2b0285d10eaf2889adccf00da3ffb4250b5d069375c00004b2c96e592ca6fe6cee5a3293f7c90054b31855d3cc941aed3527bb94d79e03379d4a14cd1c6fc2138f95ca6fbcbb043e92bb4f74b68df3886a64aef84b9ee7b8896090fb200a92844fe1bfc31cf1161899cbfb90309ce8848b16dae7e97a99b3d3c758109b86167184b51277af51199b62eafd2dfecd9de46e39215d3a887542e626def4af44ef932a11f4ba7c030da462043bdad3f7f9be0671fc9225c609a3d83719a4e6d3169750ea112993132a24e1a02e0db0ff38004af18ea48bdb9899aaf95e61f6922eece4b13b216ddb296a9650403f8fc6a143b6b70f4d0d3c76a9684190aacefce36bcf590137214c0ad7d8e726f9274018f3658f304fe3bb35cfdd84894af058f2b228c82c4e13be154eaaad446743b905fff4890f52e16f625e57e4a6ac7dc87770d05f0d9307840025ad1f7a1823f135ac758ac41fbbaab9e48cd3c38691625d48684e8d1c9ebe2003b2b9fe32f56e63f9fe4cedaf04f9ac3878fcdaecfb56ac45b7e73527094924c1d04fa0fbdccb99a09497720e302cad9e42b00df9214a8058d3df5cc960ca0578b41eed0d2e494c47ed27b9ffda6df21e917e414d282cb37fca6fa7fe4c9d11b375f558a9a560d37703b3915e74a979a4f555065c15c1e7bdba1b0ed72c8e2402d2c41cb469110b5e905f42e3ff50628ef7f2653ff1d14aeb48e0c2e6e9aa284ab309fb9fbc592883c78059bc36ebd869839225cd0bbb3e54eed5fa6b02b51f3e8216f12a41e3bf31bfa3a467bf5deca6b7e0d3d40328c6d895ed9a0600cc1af55729d36441e24d8a3d9bba12121cc58312bc3ed62d6a31fff9215968cd1c0a1983965201b6809c74c4fbd4a76467cd79acd1c5802accd1f1d05052de6fd823ba069e40f63bb4da40c156ec4bcb2118ece4f09a5bb2ed6ee4f1c70bd8bf132bbd8bdafd144d44384de642f079145b9002c5459edbbc0b95fe64d15583aadd04e7f6bf380a0cb50c50254f4870a4d0b1c6c82746cf96b39334a774211c31e224a25e7c013f46be697fb5a9b221f72ca1d72147802b7431d099e4de6e8517a71f8774d16176a3c0ac1b73e268cdb85c53ef03350d42a41ccb7eaa71b7b0ad0f2190926ebc012c4c5ead4878e76bd495aab5bbc513bc14251207681d02b43dca11fa845478e256b4c0508f694918325950ade5da49c3ab9644b1e6d5ac8d47c40d76421a00fef45a54950fd77abdaebe62b6c5a655bf67d7e834bb497fb8bf8710341ff66242e67fbaebdfe042bf4ea047db624d39813e5b4a714fadca1d83f32658fdb814794a773bb0bd9f722a6fa0e21315e5d5dafd117aa1a92a1d8cd8e6164745598a1dc6a19b22ac8bb958559a58cb3405716a6b990a112b367c1a52d608fca8edb9a8288ad5fd771ee454169093f45003d8df74439ecb457d6f100eae0fb749239f8502361876b18a55c399d225561bb18223123668c6e44d1e5d41532012a0a3997972c5d335ab2c4cca5a501dddf323371c958cae31d19ac90e3b050824f56c23a23f2fd2bec2f497b868043633bd2ceecabd473d6d92e2b1e21a5a058b2e968ef831dbdd0c44fd3d349a7a0f05bf815263c1c1ff073ebdc674e48a0d888c8f293433bf09b60f851ac2f6be2fc5f3989e931e10ac0bf396563002792aa777b97bcb7250e3dfd050bdc30382b492a9a77d2c9ed797f9b7a36ad47440303a1e15e81c28e1ed401596e3e301e1f3179919ad41e6038d79c8296a06be6a2c8d7df50ef04e37ad5bf4db15e849a72a30079ed73f617932b095b573ae9c0819ca3af36858217a8cc8e8a5439a51b49574cd015669aed00cd7506a70569c8e23f3e6832f32d9597787921c536c6147fd975d0592645aed3c1f33186427f1b52cf8dc8cd7afa71b689f1b7d8131c87b1bc902aa2fd8027a5ba4454801daa5df18238daaab57976d887abd89a25537cb55e34e2eaa6ad7fb5bde91cdefabef3428122be6af4d625249368d0de4328586c4b3944732f23b9c917fe2326df76b4014946cc2a8dc03543d2ce88b81edb6946d4387da6a604ed89acc2699ec03ab3d08c7993cd2cf7472d336acdb2c0fe827392109a2be9cbf52c72cb3f050ffb10e2be89e4a983cea9d6a4f93542f155291664bba18cd5d8c40a9714985c136fbe11e568e259f1f17913380dbe9b9a2122cb8239f3cdf28e077523e3f9ce935a4d02703c3d41c7005ba184403fc07bf78d57bafac37cd021c38ecb4276555b687801534c11b1508d1d0df73a82f096bac222e90cb56cad11824390623cc0841c90c2b81818bfff80daf3b980fbe2f42e68f37460f1cabb38178a9df37eaf213cb672dd71b0505ea1e35b759fdf64ad3cad56f1b5f438d5ec60325325a93c4b5d67014c1e3dc8d15c1f383d28abd9fd5b35cea749c27e9f6180b027669a2872795e81138c148d43a4d6ba15e58bd84e36a754d5be58464a81521cb93e06b52d2e66204e83c5693278d935b39adcbcde49c60987be2454bfd38e5334fa98a9c458b082c16905575a7a0096a3caeb7f2fccdee8e2999dbdfed254ce4f4b7100acb225715e07f99f3e968487eb644f90eba8a85a1a86c245f5190cc328984f33638ec2d1be6aea5f4720d3a74d684d85f3c107ce7d393e352a2158c379ab60bd790e7be2cb9ef6e43b09e850af12cc4c7bc477d7080bdddb17fddd8a52ae5bbe418ac59252c075ab5378adffd3e00650936255662fb699a7e4717cfbe3cd67b68493b1625ac4b96c1fc1cad4e3d8d1b6ec607c03ad7bf30c91ad14f3aea33af9bb7b1930d9fbfb8211837be0977cf26375e38122f08fcd17ae71a94aac2a9fc561bd65f1887cef77595ba61dd76aad30e0affb600c87d4ce22538c39b49f8eabd298f4512459f6cf0f2fdfe7a750104996a8ffef683a5d9d2cba97659d45853318872e805c32e4c4d56efe93d3b9f45f0f027518cb385b2dcb891686afcf1ee28df97bc2505e834ec2c0aed4caf89457e624578ad45100a2bd70634af616390c3614c0d2e4609088d215218877140cf4409e18e5b1c328310781ceb2d5422b7d892eb3b246249124e38b74abf9d7d31d82c3e858bb080f8fa305244538f147bd4c5902b12d1b97da243f457d41a0ace605db02133b354818ee9b1e7bfad1709c3f6430b28450d4e87d525b4dc0ba32777dfa27f05e00464a9beea99b5255640ef78e5b910605b2b88ecb74ddd3209371154acb7e2bffc8189e33f4281c008766154faf6304e0e4b834c6c5a9aa446d1c1b15f369a0acf2b338d6489946d10cb4f358ab320be8134cae2d3f12619ca0b61503457254a01bbcf2ec9132038a82428d4d2c313cac71507d3a02986337ec77a83480dfa695ceb7459da1aa98b9f1f45b6f2570037717cf9a005cd941a60e0536c35773be051d03e8840d422a317066b62e44704fd9b96336b5e971af06c13fe23f099afd2274c6372858d0b52a485c50301ca29fb45db477c50f294d327aacaffa31c0c76b2dcaef468bff66ee609d1dbf7af129c66fb15cc2c5a22137b5659753bd41e47ca084539f9cf940f298f854085570a5cde65af3bb2d2ff7e67a4ddb5f08f5090e11d3a58a3ea05f8dc2b9e6e9d711bab331dc1d43cbdce4bd76a4fc1696a647d2717604defca0a92063033b97b8904a458e97a596a2e850c790a3eb7eed244eec5ef2885bf124e7a951f8148c10a2494989f2e72cdd7ae3885cc68382547fb27f4390e8e41b311a6a4114f39560101e086427cb4cfffccf69d12262459aa704bf6151758ebf6232730fbbb5098f120072084b4c1b7b302e0653f689ea0248349b9d2a1ce27606faa0d6c67d73a832346d10a6c5adb081959dd740ac6d534197d701a73e6060106cd12a62a9d3bab14e6ba602edd6d28010ae2d20e55821f5419e1f3f0ce276a3fa7c3224c4ef539205afc39f4566e8fd05f7b1f05f3f923222dc091d813a99b5431a8903e7939382db12e9e9fe305393cd8de8e56508c6cc06143b64bc22cbd4bb8a6a0a94e443a0612178b7c2179d2dbebfb9b1f9b58078bdc7e7079f19086dd8fde2e605ab13804fbbc025dadd8862272da29bdede6b9413ec3811ac23df071cb4a38cdadefdc2456a487c45fe47aad6b3aa51527b17ae7abd119572a272d01d2ccaa82e8cf0912c8e43a449bd2651573124c84cdf54173b848885d4e0492d34433c09ddc181125a37e344302756a06e97e535da53a2c0eff3e0dee2cfeccffc44f78c4e97d6522c226b7fd337e95ffc2ed024c2224d17857f69b257386ee315d9f0d68b71d152d1fb8a1f335ecb17939ca2048443d7968b86480a846eec327611b7ee5b3087d2f9491c38f79848bc47c624a54b4533e8692af5a6d6a9ad423cc97db52e500f802f0d69fdd0c1684eb0762019a31dd86aec3388e3d30b83ef1c35d53b4be821d00a600132c93337c151d5e9716593c7dceb8da39bfe229d059021531724596dc2a8e0a4b3047b182d4c9b128d95ec3daf6a65f17feb5180eeb232d8011cd29940971b2a3e9697b795f2531b9fbfd6c7cf58ffcd2845e496dd918a1081f078d9b2b7a69e1d743a67aa1b20a5ee67b296baf701829ec9cf134dfcfa3df88a74ee112b73421d4418ea9e6f991969438b873c5a223c91af9be15099a0a24264f73de2d41d98729bf7466513d94bb85388f96fb70a9ed85dd2b19664e4983db39780f237825ed03d6d2e5fda772e89170b9269b0df9427298b858cdae12338dd6280e2a1cbdf06cc9cd204a121d8fc0fe4244ebdd83b1cadb991c7480f9e9f6ef636e0e0fa5889097b78354898c29e4f15e26627f4b3bd76ed0723debfb717894e4812b68644d9cc993d0b334f7fa268e3007ab86b791275f40d15035eaf2fc355c4c00fba50e5c1849afadf310dddcb39214ed591ec713c4967698fe8957258c7a0628cd6e21c87ad79aed22ac294217a19e12c6e6c11fd4124051a1b3585813536e101a7313ce2b66211bb97a87edab0ac3826df3f511fd1bd0c56b3184fe05cb1807a665f9c3958a4f6ff6735ddb8bcc93b4a5c8ec58c728ef8fa0c9fe98ff0edb19d049565147ad51bd21d45ec0ac40020d83e51d18e81a21bf301aecd883ac411835c988033afa20467ed3b75c17f355b10697c8ae26523ab002953fa7d296df1bba5a3c67aae79e694b390027161c93c28adb955eb03d5debec7f35876d2b0d217df77f6efdb1ae631a777512639a120ef94ba79aade92f058036aa175d7428130a39e4bff1290b8c1b9915cf48ff260dcc173e41f52a74fd21c2c0ed96c2f91c764661be0f812dd45a0cf0383f0c16afb6a0483274786c9fc2429b6a0f8ca42c3a2eb14a73532d4531778b822ad6a33118fec870b63da59a7a82d9f0bb4f911bdf87f882c3cab3ee0210ec25edaccd3e948c7a5c3a90bcb4925ef34596fa7b0822b751402d7aa53331f1c5265ec762616d0582ecf564f659798eb79da1317e1c14b39e9607b0c1dd1e37ea122096934dd5e9266d2a5fc89d1f70ddbf3342490318b866df551386f1172791eed4361d0857b4b74c0cc11f44b23a285032f11d29ff86ec92a09b64507fb57aa02318fed4d38787e60e999238ad3a470ff348800db3a4ac2c08f4c8ff724926a0b231d9643ca2c9747e4a516f8b1ab118650e9029faa87756d3376780bc5dd86754ad9ea5b1beadc01f8bbd8c2987952ccd6e2023ea13dd6ecc54fb55ab664cf4962c5c051236ea0b51b3039ab6ac2bd492e69300335a75e8ee33eb956d7747fcbaf1294bcec73d030f6b850c534fe0f9f20aab171d12eea28faf31680a4fc401c29055f15100e7017bc77708fca666ab49eab31f8892bdcd6df41140fcb8184e29a6057f40a2c2d8ca8f7c546050127ec8f8bd2de639c08e9f9282bd861cfa5218dfeb9436e7fe2f9fb71b17549f14edd52fd90ddf14a35e30bae2278b57d4e50c3e8717902e3f79bd6bca4d09f7563fb31f0506ffc508f8eddf78c61e8853d2659dd2a7aba9695ea92b183020b9e95e692aab112baad89b9f4554c6157af96f732fe93a7199e308fd667afe40e5f928b880e0217c15247456dd5ff1c2f46773e0c0a3297b302166fdcb81d22a72e38fb89b1a16c4bf832010b670681d15808853dc3019069640c73b2ecdfb168aa61dd4a8901b33acd02e2b7e34ec4eafefe1ea90cb3ebaf1643156d25c426b00a7a34d89e112243d4bf336abc4661b4e0616330a0533ef5d9570762efa7ce8f54dbc959a9e201b85496fc456278fab5b430ab278975878fb7208f550f68f0ba458dd74f013016120d4a383aa7eb781ae372aafabe7a03cf22f8c3aede2e5ca156ebd2ecd8a181f8d0c29e3e5481ea8a576a23e3e8a1d5f56aeba8a3c3c8859503e71789a43250eb099144acd3ddef8e3eb64b8ebcfcc8ef33dbb995a7147bdb2c9fe779f452358a91ef986966a3659ba8ea4be10b569aeaa8294c7ef1adc10fa44a594ab211a6a6e3a3021d8d1e19ae3f588d8a4171ab1ab986da316ff8d05bb704faf1d9d03a1afa41ee6badd8359ac7acf87d7ea9f68233625386d09b10cdd8dd969f1722973469108d82aa69be5ff3285dc938777754774a98589f5d48e038364ef6860064387427cf1a84173249b9f1c92ac2f330dd568554af75737f1eeb246add72113f9502a7e643e99068dab1d8e6769a401d30310844a6213d5b7114642c500d00375bf081e4730e8c902ff71c67b66ff66ec423d2b707c6af173935203ed53e5176fcb9adfec3c860c6bfa9d12eb8c56d50f79fb390cd258af5fa03b1c38eb252ef4b26d38f29362d03aa28b81f140ce1ee6b5acf9c1f83dc3dedd2e55134e902ea1c55dbfe60b6c562498e62dc096ae97d43b4d867d5f1e732b8cbcbcc1b6ed13955f229ad214fcffbde31434e09a3ce600edf006efcbf57e66b8426a7ec78210e5173ff0761977db45b94daecb2302e4dba4663b8233cca802d6b8bf8d01f911e579f7edde9e0cc7a9d21884ed8415e51ec05e2faaa8afc9249ddf20cfca3c0264f22e627eac2e5dd8e23aebcae28cd5816df1b29336b1719998786cb20155045de2bf54f0770e06a0147e9d9e2baab4b902b697c6274ed6d825d3edf5fd590f1eb26853f204ca15bb558048a7de9800742ec8f7384632557b6c6c57720075109c6cb51748115ec1e59055fd7e194d9de4fdae12cf403d33a39885c04740e621de3f0bd9d9d58b4c791b3c4bc279f6a298d3cb6a2a442da86fce45968e75fb16d63b84937b9d1698e770c4b47dfe08f76cd46ac005dbf3bf19cc10a9ac28ae0bade1dcaaf631105cc7d9f11e52e633b21cf188a05a8699366dbee82809d4ba06339ef116ed692e7230ccab6ed054ccdb84b16dc22bebe45ad38516e6b2dc531124af3fab353c7223703c716cc24232968826f44c70fc721052c7aa2cadca222b38b3cab0a48d0e0f7ce1cb7cb3040f76f1eb02ff9414900ae36d572d23d4150c9a1dda3ed17465e5b610e6b0960156a1d399fd145a65d3f6e13595725c909204b355011c67b8de47f5e6335cca6b7cb70b236fea2b9093ab3f39b3edec4d530ff488400f6348f811520b007ddff53a64e2831ff160d0bca96f199a9d595d7e234e290eb70ecd3d9818ea30580abb8287597c1f850fa9409143cece9c2ef08c07415cb98cb896b326005e43aedb239dbfae33c51da39c31586df99967b20953111db86c2980e155d52f93d5cfa84861e8c1016e1834ceac390519baa83ed7042632bcea5e9e2f21bd0d7c4c3c381c78d9c69bc92f2fc697a9e61ed8214219790bc48054b084c72109058f68a588dfc34bbc20b50c31ab0d9a336bc74d726a8e06a3f0ba4893810d7072986629333a3dcd28abb3b457ba1a8be0fce3a98138e528beee1eacbc7244e7106238e6952abc1a447cbd6b393d82fcfce399855c4d6a17ea6d8a19cc0e6588d079c45ec88ebbefe782e38e59eb13ae2ad2d3acd4db952cb0881b77d2bf84fe4ceff7a11108af4c8fa4c4fbc49b816e6b2d5c8d643e6b01d05e5926403b8782b4b550178a814d8c90feb68d45510444912b9729de123727f5fe2118ba3422d3f4e3a6f89d550b76fb410c50bef381abaa803c6ee32b942d41de4ac001a6030f2cd64d753ea2a8cd8dc8181a05add888d425bc7667518b069ad5bda53b8ab8593022fc7505884eb24d094c1dcaa0ac84cbb0ac11ea735a2af080ffb5584ce6f06738427cf787501885869ddf563d318b9a1faf73bc3a1d0dc5cec42e2ccb9f1a9e4103fb5cf633fcbcd4202f4546a06aab706291e76b560513d4db8972a023cf51b75fe17c6fcf24f1e97b4985e392a6dd70d1fe5ac26512bffedadcefb2060ed10b9227a304def843aa47051d0f30ec1629c9d0d0d6372e84199db072c6ae1c23420765237b9ce8cb336443ca62f3491f64ff4f5bb125042375f84dca80642fd1846f6baafaaa1655aa30c0a87efa894280181b96291d22cabf8b9f8318e18590104dd18ecf06ac6538aff839288def463ea9626b85d8133f50a33afc8f4519e9dbcafa2ef285167656003aa7da90544c347f8dfb46d70c3875d9bc3b1859acfe8a9e647bffc07b9acafc5651c87eaa86a92b5e1a1dd711bedb64927a8f31210a79f78470b35abf2064694a7ac2290045c124ebe6e1e321134445ee6531ea195d8e1c3be695bddbe15e894c4bd2baf661efaba785c7c008cbd57c8166df29c7c9a2c4866f987cf7b5c913e0f9290eeebdbaecb0355e5d126b104fd28a3fa5810c72af06c4f2f9e19a07f5f8cc41e9546271c2d79583e81644d330353c6abcf46846d0225cbc00107ab9d936a7cd4ceca2e80b9479ed7b09e8ed2f8dda24b8768e7196a4417f73d738cfd5eeeb2dec0744e87959d812e826fba981c3c5e1014c330f1474ebf4e2be2d661fdb382fba02f8ef95e0b11ebf174a7d31e717906b6d22c687b0b4e7c52f7ce234101b95a687c703f5b69b3d543061790f847fdb3596c95a2a9ae193fa0b94c0701f710c743beab0fc0411a6cb2e08c31208413a1989a2e9535d102f7c58118c647883ceb08aa2c88642d6187c07afb3fa4795e7d97ee48b1b84034b97f4fbb55cebea2a2a2f99a4dfc622c53e2d38f6d2fb0170de44bfd052b2f1a37e916a17d3b42fb9f45f19d268b136c18d01b8f994cf37b1ff2f6bf7061c972d385d3a1f135bf98ff6199c2bb71a4fb585034b9094bec5c41c86f5271345208035bb15b9fb06a85801aa0ab17bccaf306f2bd28040e0172d4bb409f820f50e4689a333ab0cde3ccee444cd9b7b8fa205d02f497f0b3b1e0f7fd3775ac5f2b5c2bf91ed0da51065e57ccd09ef6d0c2df9372bd300e59de69f7a5c2394f076b95d6a04eb0e30a6456bc7cba311a2656c4b9f0be46e4939eac3a5cb8b65580c9aef90af75f7bbe9005dfe436b0337ea33b9eb0a14fae96523ac467d9fc1d38e9db6d69a8e8e9cd11dd62454d22ea2013795cd26661367a6a033905ef7684bcf36e0500f0dc135583a77b35e84d54007100455107a0785d043989c5711cc7eaf86957d0e313854c72b2dc77429561dc520b8e220754e1e1765a3f5983049aad80b5163ec2424fc39bd2719906cfd6ede5ef3bb1009954bf5e229bfc22c6d7e84bb3bd3bb124566d797ae3bf2170ab69f9899d40eda2b6dc5ae27224eca4ae0ad945231ad126f0a00874e1cef69ecb013c765870918581fc351e1835a424eb838cc6f8b9a882571df5d34778670ef19723669d60f60cf9057218937c8a463da154b08d2d31da75801c798f76d652ac5c97f1dde2f4e9975caa6c6d49f9b5f4a42947ddde4e811ff7513d7e6be2d622f584d5c161575fe1d532ac6620a37c424760ea18b6e71f3a84f2802f4cbe2e68d2d5b687705db9b8ec487f16eecacad7187a615bdc7c85e10ed6d1fb6be6dbddbaf8ad33d130d4babdd4acc093db7f8655141243ac37fe4bc9c8813956d85bcc8e0fdc6de0f6b075045f326bb6f72e7f6cf2b90827b243c239b5ec1437df0e974f810f0c901e9fa34564ecc90136239a387770f87310fdec149c58237dac5e3db329830342495d3f2bed8e7808fe2fdbc50390b5a11c2e9648c2d5d09d1311dfa2e27df13038ad13c78a42b935a5a324d07c6800f6b670ab554201e2283eff7ccc08c1e442c82f696b62fcac6d92b3b9d8826740a294339d3d77dad04408ff1c313dfd6af22ff10165bc2104d1a6dd751d69e3bed1925d428c0841d475899d367599e69f40726f5dc9b2e5ee2a18af0235c1c4b9f77609380a71c708b5d90d09c28b63db9084613ee0283f5723d1b6f425700fd94be603ee985264241f5232a4d982463031143ecf46c18abf3fc70d52252bad1c9ba85eb397b67d7a982d5f01d7397d3971c23190d52ee69612169246ca8b9461dbb9a161323ff6b0429e6ccb52711bd801f68cf7f13bb61e8d8b6355e837ff0edd144b27aaa086f41b5781b8f19bc1fc026d4b7c1440d9e284e45b601879a9b8e5e26c0884126aca0b54c588c8f1d180122279a7945d959eef03edba84077a379157637cf611e33b82b4b61b87029842805ac6b02a5058f3bd735e7dd929b446dc71b2c32fd25b3edc6bc12af61b000692d813f5213eeb4e7448f3001380c9da79bab77615f8bf63a4984bd69fd59889121af7714c461978cb37d2de166bc43f39f2da9ac3e5f3b80abe731ac1c44694f15aff73204dfd5abb5d08495ee4ba6bfe18c18076910657c48860a2f84be201215bb9c4ec518217e4d9cd374cb784b8effb84ca8d7e9d5da49ef3495f7560e14269ac9989cf874958fd84edc38ec4396fe4abd50e96afdce966ee0bd79575281284185bdd63cb4df28c1efc87b77c0137d3b362938a64de7f169bf2550f06da8025bbb144b7f673a3aa7b4e45f1c5c8365b48aedb924e08d08f71d7bff0575132f865d664d9725724c070d43f1124c11bd3dfdadf60d884a26d9ad44a1f154d52a905b7b805859cdc532f22a5ee7634c109af9fa857275dc912f1524fd442c9f1a37021a2bd327e153935cd760a0923da5c08ea2ed83e53dc354204843668282122d3ad437fe586ffad20885ac01ba797777c7610ba49824eef3b351c08d66d50542fc3689937917a70065b96605e711cba074d38e02e5b0889046182d9e17a90ea6b50cc241a1215c16119f79f2f74cd304fa7ba55d05c2e801b7304eca31de0b4db386d77b727c0d7400ab24b91d16c38840d04eccaaa50a594ff60493294b2cf7e2dcf4471f999cb249db8a3d6a32140884b9858290d13dd4116e6164349a05a6506b775ca5adc7aab5f649c6da0e6016f5deccb6abbebf11c5c56f2c0a5710210bb92e49ef09c63cc0bcea73389d840fea1186205d5d6c04e04aeab38ca32d70230062384620262648c85e10bf1b580234fd2e71172d81f74cfab24a9eaa1803efa03973a6f143d9f0c683e58aea1b54993bbd32837408255142b878a7df239a2ad00d0df0cfcbf5f2090239c06cd10a3ae35b76881d0307ee8a31211ab81fe65d21d77a8d0f64e7eda3d5578da28af5b127ddc218e75004250fbc567d6b106caff0faf230e4cbf6d7e89f3599a228b3742cd7792b82e6d5ddb7e1842bee0a88024284dc72cf35dc07615ba4c7015bccbe1e909591d74a5aa5344468b2302e5d42a3d0d18860d1a19ce2b57d21f731eeedeb46aa2ecafdcac5e98f09ba871ecd8e74d1552af9e28554ad9433ff9fd8aa12f7ccf800cd7406db81ebc7d18d174a8a736c6e25647d8b0b868e78fba83fcc966950a83a5ccacc65c4418c262613f5f250f6ad28a012b64a9222af4f8e5c9625a32908bb892d8a19ac05cea97d29739793932e1d03b4ed84ca9bc17cdd3546d9c8cff0cf3519e7cab8c40483e41ea6ea52dbe37e17cc698b4bd5aef5e68b31fec7dfec7540848c3c8f9d57efac0f391501e51750b2b1cb08c335045a7320df5ef496e1ba423794692b530595ea1dccbcba7286d01fbdd2d65b297c3adfceb738b89bc18635623d8ea7428cd399181a3d82b605a5f5e500e55366f975bfcf3d2bb41c5abdf846b71615534b5b17019fbbda742b1377fca9842c82ca2a85800abcf8c82f6a2c7fa1834ad3e893482013036baa1c6529ddbf32e00ae1fc039ffe9f090cf5ec199639134542dda465131f1828d46209ba3b1fecba321ac9c06c5914feb6a7edc56995679a13512718023ebb016d876b2bde6ddb9d59918c8b07ea342c029533309f5fdf62bedc7dc601cc432c57c5d5d2c04ef5b447fb1be1901bde544922a1d9dd0ac7b42e287b33153f259f417f49131ef5512b6dca89f1088558cf205379920e3208a77657819a0767435808c4d439ceeff96041923789494c9e42342e0835acbd0c125cc9ab6f0746140a5630c1ee396d67d14e64219d5315948075bba2d7192058562edcfd4c2af0bed1ce8257e0afc6f1354391d508e8a6a155f25cda3ffd02eb2be4378c411d497eb60b14b0bea1dbbbd6fe358f5ae7cf443d7d46028915a99c9f0a90769e15af3c6592cff803801b671ed7467cbc05bb8688b95133d4e35e30ca0c70c1192ab252bc0c78d1b7edc0e94529260a241f95c9911f6ef89e2e5fe85ffa3801be1d811a4ce747a200389d0eede6cef387b8124af0be49b6a47b29dbb3fe528c140871a616c1c525531b208b0aa521841b24741b2ef9d3c74c217409912e4f2b2e03cc8de28c8e72a37076f80743999a99c889a4a0e2299a343f72d54db1ff2e272ad3a714d4988fc5860132cb3c372ad65a1983d82bb7d73d50447bf1067b81d8170e8e4267de90b78fb714f6120659a546ef36fef3b249f1ca1589c97d0bf1222915f45ea2a843219c0ebc8773e7b7b4eeaf85eca92550e06e44163c5f5294d2022fcc5e0d27e5ec84520a894beba059ccfde877087c6fcc5146b56c4fb50bc91afc972fdc7971285f99d5537bebe75349b39f6f74423f4deb93118091ef9743263db5cd48a39998f6add66834ad36aaefae73ee730082b716616fc3b4aec88b148924fe72230b63c197c8f5ccf1bae71c444248a3ccf2f46bfcd69c37975088004be49b6ee94a594395f53f30beb6133ae47530e51cf6d3fe890d82fcf4c8b905b62325ca1ab97a6e860bca044ca0f2df97e2ea1f28cf742097fc4426b11bd4194c4d5dafa6c92b4bb8b614dac9374681dc91dc2267b7eb4f17f8cf1df9f98729c1b2cb4be6d6efd9ec888545443355a616b801f17f581291c0fb754b3df8aa03238b1128a04f548f2a297c96b7636f623632bf0b465747565f4cac1ac3590329fd038ff8c591417603b39cff897f6b053f67ec0f281a508c6f56408ff7376c1353f38dd161fc896e89cef0de2a17931e32f68a5231c7a536c800baf7b18bc01940b5028a309416026681577b70e8af6165b0b727f8c1d1149010b38075d97c1de37d48875e0c6fa4934fea676cc611408f996440fce34a4cc5aa8020a579dd1a7d7719c46a1aa6296da5ba7444bf3790e90ca6460d6f7873b562dcdd97ae190d80d0bda6d28873e503304f888ca7d66ce04638329cfd74a93537d45ea04057103b816ecbb17e2dc6acf5cd36526a079c12fdb79ac0eb6214785032599575262cb16de31eaae955b68cb9fa731d29c4e2fa0a1a45963a15d3fdd56e678670ac212d448bf50546b2be925ee7ad1b933addee08bcede48e60642413b76e40485422fc85f7f63a7c418f342b81dc5617e0ece5a15d58d5ca5758b13847bd77ccd10f786f2d1be54ce250e13c76d88a6cf14c9b3500b70719da21de5f63aa093f610a697a63d0754db2cbb251da3ede670018d29e8d8def40a35cad2ede557c603a278059dcea833b648f68cf8912c47859eee6641b8aee1fefef3657a5f3332b5124ec5ff63d6a5010dcc9f30087cabe6880954780e13bc8765ef13020254c4ac91fcf653d50d898af714cb6954b735bcf0dfd923dd21931e4bbe0770e2a4abb7c10cc9ad9f2f6064ae0a53fc69e133cbfd3e7dcc48941614ce39e7822ba5a22450fb3ab48db2639414dc890a4d9aa0e6a046ef54695f80bf6118844f52844dd7207f41e5c17d02e866aba56fbd7471c9ea4d2e00a9615a1601aa75397fd61f5b6011d529cbbe899146bbd25a5c1e2dad48708804fe8059a99105a71a4b39b5e2c091b7c25922cd62835c4b15d612425bb0f58ba9f1026c5fd49052c01ad6511bc2a5a663d65b85ab4cbcbd0d7611eb2fb41453f53be989aa8a90bc8bd5be907c720747a409121126f00b4dfc55a7aa76b92f6a7c95140b65d11311e2761a658be16bd7940b0cea4e582090447a71bb30e0d44c73c81768312b8bbb8ad9661103524fa5ffdd04f67bde75da8a355ccc066c0dd8a47407885c1fb31e6a3c55986e3044d6119c4c1853f7534e6af0009ba2ab1e82532229aba64a5ae374c3e23c0211cd60ed4670f056dae5c6f45025bb0b22620e9745cbbf7a60a7d0310788efe1c1ad4ecf0bd606215896d6e8d3c04b15d34567283aaf27835cbf1bb3618ebd2402fe5100fa29812728225409dda960f83d992dc87a20efa1a97406de39ae4d1d40daad4dd0fd4976fbea69a26ccc562a5d8ac29d093adb2bea19196b1e6bd718a252aa0313317d0351bd30a09c46944e3dee85700456519e6fe96324f530892b4256ea58d0caa8dbdc295773d3286980aec8e2984723fee85e49e9361d8a42c560ebf9bce27ee06a600103ca7ba4611e74740b9fcd03a95e98516abc5de60aea313864b47bfad7fb3841183ae0d62c0d1fbf056081fa5698e10e21ab0c9afed7e204f082181798b89a1cdf2f987fc4b6d7ea60589fb570002f6184ab99f36699e0e49e2f0a00972289e379a7c9809f98b61b90f463eb9b9e6a8abd144343f5d0b27f1f53b1a65a2bf8646d3962db32ed7c7e3b6c93d86b5e8abb2e01c677b1d7710e2284717a21cc3b65d2ce1944c897ede1d3d4c8afae391725fe9b5ac49e35c0f2c4acce0422669528898bcbca77fb54db2ca93cb6d09577e90a08e9aa0274b03f8583f47ac80eee88fff2119fca2f40f2e8e36e9a773b1dc2744ac9ead7bc2093b680e502b6ed34e3b96b50de8156ef0fa938ad938e912cd4c368757b3d3ae02c31b4ea4b3d83f1778cdada3dd90d1de153db9c6a52a8e31fcb748cb6587f813fa40c5a7243190a5283a40084649d7b1e51d7354b3c01696db8146939cacc429e0929e7af4ac47949f7e0da1d3c53fa87572ba10554e2a8f760957cbd088281a2dd093efcf1e745fb9b5c3e45098bd51cd006d12def3ea11643f5159910a9c1c5ed8ddecd962ddb625df63e75d5e1eed7372c3c2c46368b8ddcc56b3525bc823d821057b7a0c1e77d0b01200b0d659098f53d59b8e04f86fcd0daf6252a00e193c80b4376c1c3de475c8770501946950ce43b7f622fa7f04f00beace327f5d0a81ec2cfb028f0ebd34e6ced073890e82dea69257c3cc3cf6ac4d049080f6d40f14fbff452716192146b12a9638270376eb38ee015544323a4239218554e09f042a35e2fb0162b6d3a939f053be778ba69d1a16784468011454116b3901578f2d91f704ad26de37d0859e19714838c9b26c1fb5a3d281869c8dd1c0e384f9bd2d0c0e952d3272ca7efd6af583ada84f3017d9d32275db27f1f59405e480dd2b03340f34fade503c3999fda11a6bcba020a9507349d46065541c48b0347ff460020923eb72607a77c295ca4cfafc09203ffde8e3de9c999a0fec4e174708d83b229aa1a03ad917d7036220f71dd42cf660b4b7b6c31544489a988f37bd7cb09e075520227bd24afb512f4ccfb1cdd1371cc7a9ff37bc28a9febc0c64b2ff147004c09799d1f6078e4e00b8bc7e9d7997793aafd683f9e1b4347aebee095eb5ba008d6b6bb7aedf338867d595c1da66b7196017a8b7207a04882b6ef317652fd3040beda0a7333aa3538c8bae89c53eb1a0adca04ceab3ef7dc7b41043e27c37f1fa0acd9b1625f45d08ee613c4169683bdcfd0019a1f434506a59209e92383701a2a8ed552b150831c784de2272cfbd401995831829c546ce324fd5110d7207b250a6e6726de35068ba310e4ae7abee25d2bb3899bd53d0ef0cbab0cbbaf407621973797530f9756aa175da3620ecd9302a47c1446f84c2de6e81f02ee8a2bb3041761fc6efc9a8ab2e83ec6ddfb1eb887620078094e4118c421fee868b7644f108116cb8cf01d10b10a24eafcc8daa39cbefa8a3d8ce2c42c0062bca500cb5d12771a30f45468c3ba9ebf9d1bcfd5cc8fb2f86d4e30ae8ad0a82224e7a459be2b4274d5b36bb4d65c78f348e14acdc2f27a6508f5a01369ba6b9e1ac8991ea82816959c3f1135dc0bdb0555ea5f9bbd46ec32ae63c1ebeb0b8445a89ffca8f12dc3d2bb6808efc16674cd5501c2b61b28e74797ec8fa065a7fc6f777822d6082785fb2d9ec4b608914fe56dce66cfdd030a8aca7c8b1f95e48cd1b156fbc8c5183244a1fa0ba80ec47520fb36a2c55fe9f19a0a87817e21e21536f6c3bfb9b928c6d9ea335cac04d89d9e2ed78bc32f4eff5c60f9073d0cf18434ae0563cba629291a1acfbf20645660737bfd8a3549c04c37b2d465303807b9592528a8d2902a9cbb83dccc8719db6849fe74445ece728edefbc8fa70133ae6c4d504f5461528a1840cfcfc48e79fcf05168cb5dd2ed0b8e3a47f8e7f65c457358fdfc92f0e2ee85dfcde7274901a5f3c25a7c3d2c9da2d4b552f8cca544acb71b1f0209bd0060e2cbae0141f264b6ad254f4c9290a6f95fb795f27cfd5321e998c7c370604305a3a7f1b5bb475221472685ace3a94a383a04c7965ad88bd9d6cbb805c9f590faf80c7638b4110e13a93b92a339a3825d0d446c437f923fb9b290348752f681e3ef41e1b44ee1a795a7bae6a4aa25768e3fffd28ea305c78d30e82fee9f12409c5aa298ab16e9338f997681481bda32aa7f91c00b49aa851425cab75e85309140d4be2e2dab82e771c0e474ea7b99e8117e3d2ac6dac35835020179466a9c41a582f20413f1eaee315ad89fcbf6b987bedab744701ce7db7c166ce3c57530115b6d9ee347197a54b23e5a172469d94b2f22eaac9c2ef40ededc3086ccfeb430f9928a3544e3d3a6e348d1adf742f8b9e5a3a61fd434ca4e78bf407109912c128e23c1f1210ac3308f18306599481175b90c603d8a92f396249b59b1b42440e2a060625da43666e56aac85565cd6566557af6d014b9d52fac41bf759dead70107632ee3b319f56bd2a75e7d281923446aeb747111c70b8d53393ce6706af2bc2a654b9f910ccc362a72ecbcd2ab649935560c087a666cf6155161f81d3e0e402349f6faa56b41983a31aba6638eb72ca8b76de129083d3990d0c318324ef0dc22eee40097c340ad809ed43830fa09cc25103f623a535c9604ac820e698dc4c71aeccfa7402b4ab63db9d937ebe087aa6af6b4f33d4bf20e8b33085294ded0a0116d2318ebdb46d79576579e3f74d8447725a5800dbf4dad1b51632d5a66bc370c886b53537da1d636075580feba76493bbfa10936d45c2d89248e6a0e5edb2102346514fd57e190d8b88a97d2709c38f2d5cedf4a47f76a6d11cb30145ac6662cc1621b5a2ad53a4af9deec9810b59ece11a83efdf86e7a0dd0cc3c1db8bfd6122e356507a685258fb53017332c2b981357d230039e6ff3870836cdc6c4a52d259c6c0bcd5ce5b722595627e0d19bbba528953e03c4588eec63cd880a6d9ffb2b126919b46e7370419692b13e4958e37a3b2974b2f3c85eaf6ec0df64a42ccc0994a98bd2ec68f0f123e1e7d5de4a4d7bc85e61777c41c52f316abca8f436ad15c0a506b0f82a7aae17948f07c0a673122573ca1463c3f744590d5eb52818cb195c75930e234aa2c2bb6550b6c6e93c1c14b8df220a529e664f45192763eff915f7154c3e238cf6baca975050dec578c01023efc4a5c49a0ca89d44c6a2d2440d6ad4908bc60a0f02746f589cec8f7e929394a7564e407f418bf5d9e0b023581a21a6451b8d0583e4c967da78090cea0819ae3d4125484d7bfb9ac5982f139b21e37369b6fe20994debd770d6acea189cf12f57db3e2105acc5d4c49dc5e5512e73e63ee9b39373854b38070725f473f0aa5a63b6818a5cb3f916bc5932f9c12d8e281a18bd4f42eb63017dea5e06dc3bfd4c5b59e55532812406338c7c0baa19ca25628ca06111f3fc19277f01d6744fb3a449a0c04a5dfa7419ae461494551c1101e299c8ab43c9ca12ff73e96772cc447267438b13dc16fa2940323df74f1dfe2f75fc65825cb6e8f25771078e5b7347794e7278e4c6a62ab37c7b3a70d00bbec6bf9a236b9d321d370883816bbccf940b4c89228b414baecd81dc624583276385a5a9caf2b9f3828301c7aa5ca736bd29d675e4c851e2adf593d421837b2e3787e7953984dfbc83c3a773767c08093a4de6f11c762e8fff2a6835eaf4551850ee4b0e1cf6f3320e2c5eb4a5730d1cf16ac1e464c1a739d9258b5349e8ec11434ee10a8edea323422d0d1b3dbeef2a7e075aafabbc30ab92c7d5794605b91f23070fe69323e75729a6cdba80b08ca6df0a382e18046560e6f8babd67c2c307080ae8244ab2feab1271755905cb8b8af080caa56d68d78ce6f157de46f0362db4b86ee0ab24bdfc220e00af1db7889ec29d84f7dcb636075bbc4d90e14fbe011710a7711eaed584a49e1d89b4e75756d83c2734051212f55fa5f585d073c31948b2cf56194c98fe48a4eaa876d3bf0b379cd93e568d585cb3c6cba334b8cd10eb9c2d4472449e00886027bdd1028f7c006e6e53282c48f6922215a57ef5532188a1db1ec5a6486eb4b047c128f64c463886a7f1cec3f93901f51dfe6a0f442201888642a20dda073ad06aa391500920c4eb770ef5490fb8159df91c45b3ab2dcea31b715c3bc447e1050a987e01e49dfad2bfcaf0c9d4e4fa9eca4ca347432751306415944061f895ca1390ca0aeb3f6285c71f071587920af58d09fb383826ff228830c7079fe089f9ffee4ea0986d9c79f9d917871ee67736f458096e5b2c109103be6ad5d54cf1d6614e690871135bba2e0ebff805a5137518f448503323673fe9715476d38058263ae813fad3707449d4074b38db5dc84ffe31bde0d304bac9b825da5cd4fd846c2e30bf51e41378174caf903d7b728c44d57cb14d1414b437f7542df7615608897446c972bf67d9d306d70eb5a1c31c0d9cbd7aab2d16ee8d0d995ffa49b4714aafdc353d1fd6e354a13b9c2a13ee335a48c5369543251bcd274da21cdbfc6f22d8d6d257aa31ef871073b630fd293a1a90bdd67fe42e71c68056bcc16cb00571a9db31998d126249afa1a628444d03c59566a3349f1ebd7fcaa7f160fc59fe0340953abd9c0baddead969e32a4d83a3fcbefea674b2fdef48e6e455219289ac5282810adce89e7e6cd13baccbd165593615b68b26f2c2d245a56f5e9aac8bd7275f239a43445ab834c804c1de2642cd588dd2cd8342714f82289d78e1f597c143589f1c54baf247d08826c14695f431b0d2164467401ef616f4cc846df2f3c6baf084f687b190a45daedebafb510ca3dba136e1ece1bc79b3de41144d9240dfb73f64a748c4ee3ae75aed3861a4efb6ba688710a552a47df788b589d2bb5b874c15b67005506e3aef1cd01f4ef1fe2c22d5c4dfddc0ff93e2a086d9fea3198be4d2ad52f37311e288e5e54d3cc182b4331b0df0f1e04809ac190c4f6df467f15426736d98d4bcf7285c1170681bebd2888f3b75a83194476871e2b4c7fd98d0f865d7b02665fce414e0b2ee2058bee65a2f09a5e2510b0ee53e9b83ca30b9842d1ca75184d98ad3b25e652a8c264fe29235f740e1d026e03731e72698981b6373222326cf18a111b94860eddc722f85292bd01269f2747493d7fc756c5c73d7d5f516544ba5dcef040c7c07b5c69a5f3cfc82f144e1db15b2aa873cd952a1ec57d975bcf97f0a299d4b7c729b88666f4f2f23fd76702234cc914b6c413d4d75772b3b45b652c1bedd52003ba500b6a46b2a5bec4432275c000cd0bf35a3105d3f830c63f6491210c5bb251206de1a34a082044fd512faac3a8c9316d5db662e9a36f240a92a5a29b1ab24da5d22c290460fa5a93651819a1d87aec8d46782971a6ef6952908b4549d4ea11b332b2e777b817d6d802282a54618d4efa8500a4771071175deb4acf5b8af7a0c864bf57a5970f52dfc02da5aaf0cc95bc20887277603dae86a7c2c65aa8de5e4aeeaaf53f5c69b2ab13271124dc41717e6a7b2a69f63ef4a44204c4d2b59254cd97ffa5cb05bea90933133dd4082c4a69b83b79cbea7f067cdf2b380ca7babe2a4981ef6b0e7bef646510ad2f4526e8f015b646d3a513982fe0d07f85fd9b0e9f623821a2fcf793c7e7044502f35546240a07cf82932023b80e1ad4edec0c2b6b6891f160391932992f09b5494a483a6bca8c1ec05b85cf37448fccfd468fea3b22167f9019b20386d6284d689f1aef60b959bdebfc84eb8c6a9f146c1573873cec3efe7106aeb007eb2c3e0b6114389d625f5cad5348a1a4acc64db3c38bf2ad4704c797d2b52d3c451d3c1879b2bfc0b2276489a4fceb29428566a1d13d32b9444de8160aae9716601a3caf3f603f6dfcc603076e3910e69c3db35fd748c9a36eeb879b27dd41d47814719faf20cd18c6c7679fbff74da2ae51d140416c043aacf100b874c462b20907a059fc605f632bf413978034604f1b3db350795962b8df76b428b6ddb32f4b1cf97152725fcbf25e7e79f5f2e84f8e34824ef5ab82195c9a0adf4985080c2a0ab28b843326d8aca533bec679d02db901c5a48df4f33ea445524898d7fca84d260440dc9fe36494a36f3da2a628b7f9c72117d5828af70bf4063fd535fedb670d6dbcb599ebb005f62c03fff5359ce9fe99c1d2bbf923b3d027f5737dd17b6f2566ce681b997ef313e8fd8cf941016ed698b3e4ef4ab36798940212591f61f21f83c09279fc3d94783073c4cb76c96d6bdc9ca4da88240e80aca026fba0a631218a3b9c58d63ce864c99c1f83cd574e07d6cab2a395cfe9236dc6e95e49faee2950f2e582b1b93866d7ffc13219395fafa999d66f6594184df28be84c327b3509bc57906f7d4009e2d9ac86d514247234c1ef4c612a40b3c22602dc8fd524251ad4c526fc1a5df3e7b467f7f1a2084965f6d07e81b00dc599a80e55f3a021581cbf1adda505e519e200ca315102bc34e9369fa330ab078db01d7a183f23d41a2020b48d71e051978eddcecd970e246ebbe05987ed5c06fb944c7ccf2302654e0bafda20e59597dceacc3289bbe975b260c446d3e017a7d5feeb42323f2559b21d1f00370359648e1c3ef0d3fa66da557b0f48c0f98b05fda588984b9a4aa45711a37c8b7e16376f8e7f9e81c08a1d323c1cfd507493657a711deaabc74f39391a25e968b838c565ee0c684349f325b11904c28b414953e0652127a4c6175d9f170f998c09e0e092259b0c1daea856f220355322b754a2d61d07fb302f9b7f3d18b499cb94761924a30a3d387e38f24e2b93e7e1d16a0015053c67ce217de7cf2a4b13139163da0e56c4456cef23b6686d1c47127080d73ccb011aa070f8eb932fbb3c09840aa47177dc37af99ae2c61d95fa23dfe4ef5b40600cbd53dce410a20367e1323b2f8b67b3c249acc5fa51e4c72fde5e4d7b2efd02d4c9f34f298fb225e93aaf510507b802d1bfbe93272770f5dba50ed35dbe4bac493b53b264e8d2508167bf173f47432ace21897973ede4fcc81277f24feefe53737d4ea69659702b4b2c3b2148825afeb560aaa254e02ae9e94e417f2bbe8b091b515cd801e06230e4079bda905324741548b494cfd7f9b334ed3b47e90ee7d553d50279dfaf6299601afdf3384aa3ca219c87a8196c9aabaca53abc93a70ff57e92bb2eb4dcc242dc60dc581f2b1dee47102fe61c9e93952da3ad907d4061d68bda5602c19f903d4f74b3b04c596454378bf6f955d3621bf5b8c93bba185429650b7a92bcb971101c6107a2abd225401a7ff14496496adc0d34a3cc03f37f8425767fa1b506a0eac4061adbbfd9424151d635e2f991fe6f62f3d2a619acea41ab2a0474b21d40dbee42f0faa83bfbab6ebb5956cd8f386874002220a1e1236294181e58b872f0454462fd1b7446f295506ff945be25f5983f8ff074371954ebb59f699c45d773019d099f445ccd7c2eb357c5c9b3408f9e3f769f018f4e579e67161419c7c1e0f7bfbbd024784304a5b39720996e5e5b7e0f96f102fc51fbc7e6b19fe0c2abd1ecb3d0efcffca9fef30bfa16deae94e769e47a9760a84be295bf1d8372b60b12075d57863d6cec051a8e0acb7ee6fb4c854c8c73d7d6a0822484fc518815735063fe7f371fdd786bd09da8936bfd8540ace06d05e44f7317cfe5d4bc40096231f8d629889322c94523d1d29c824c410d15ddb6ec55773ac4d67a9b799af78e201051ed0f122ff678925035673265be25cf34a2cc7592a5a37fc1b90be49a6a828a3fc92b986e971ebc63c76bfda503a2bab90c834a150f130dd202c62aacb2b2b47bfc0040ef509d83e1d35f47a80b1aa9429b2852c8f0c235e43bb2efc2ffd28ae81b7e4176db5e71aa049ae11f214ec4cccc9f998b5c77a7553cddecc8db902feef68452f59e4457add3952d34f7872f9e090b43791e2368607490c8f79e12e59247407c966e1e219c6530e20fab8c4b9ea5a0c5dcfbaa454fc8318f5f2182f3ef9b1ef8006511bc17a93fdd703bf0a92d962f414de09a26dae1490377c571f21c67933fcf7ec9be73b5f4fdb5cd006153ead62077d77825d5f2549e2be192872ae08e7ce2026f19a2f3f83282fa8da960796be8821823236073fc68b98fa25d2fa5ec5c4c8bf370f0a3ef615ce1bff2addc337f0b3869022292f0794b0100df956263082b0efde0488de84710062a07a3a1ffd727931a6217893cfeaff7e21c8ba96dff6427fb31891cfc148638f1cbabad63e757e27a5bc9a4515c7482718b9d01fd2dff0a703a723f2733bdef928a96f8dc50012b66742e86323a96ff500e3a93fc586e03f460d803d715696c20af0576d6df360ce01406290b6579dbf2e02b2cba5b8c8fe441a1e4d6965364f1562330ab75a40e5d4e483bad5caad31281723632b003efec1207e1d525bcef669b2057a55e79776d64f2167236d137d254e3bb3ada52895de4bcc3f9163a1eda5a84a4902ab50ec74a7f2400a34be0b1981c7540dbfc9905bd5ee986d4781bbcc07de142074fdaf69b978cb5141658f0b27e36a0b72852c19b32d3481877e0bbe78711284122eed0cf5b15c3a9230b30b5b01a6d61b3a385ee6f71704051686c255a9271fd2eb7a25e5c53a16eff6131a4fb765dd76d6d4db7cabb6b9bc315c1cefcdf012fbb90b9d36d148b9305e7406f699c70d583af73686dc5cc49bf537b99924f61b0b1f9429af78af4b2ce7142bb7d224e5bed7334b26746a69f224f77c28623a6bc4c0f8a08b1f5605a73f0e17d83a2f650a630c652756f444eedf042ffbeff50ad1aace01a212828def2f101512cdce8d31d761f375427a475169408ee283ad469f8563b1ed49752992416529d0a9c404ecc30d4fa12ecc9bf4e8a56a17ed58630ffdf0cb32936e1b79b33b07f499d264d999d1ad20d1acfb7eec1b453e57db971d132acfea2ba91d5b51a70545ea5fc5cfe53f28c5ee6a2071e22b32f013d7341a13adaeaadb10e9fbb2ec12f22e82151d2f99c1187e5d5aa5711df3435e7ed6d1ff99a55b573724852b412f8c55932062b2f5bc06e586227e72b5003126c625c7fd978e5df83789286a090aad19e523321e14b9034f2bea4b4d0bc37d6f0a3ffecdb9b13936f63c4f3cd80690c8c7e5b896f28c1ac2a97c8807f2e7ee7cd68ea1d024dade17b03cbd2d692240295a5f1d288392cb8f7aff779d8427a822d22e6933b226f9f51f076d305b0a383210271264f6c28fd11dfe260911ae147025a52e6539ebb2cf9af36b6fc41aaea44b52330e2280eeee0c42e237d692f73fc1b18e77466ccf40000a6b12f31d0bac68b37b6b89e91b820abf497a827988dd2ff2924859810bd80af6ce5d04105c5685e008e279b37bb129556d06c2780439c2a69deeb9e721a5eec2bc36de21fb3560f7ee62477d845a4a685ea8f6e37984ae69afb248c446794d90c9da581ed9f961b8c0cc8dc59f77daf4ed9a658bd864328e4210dd0aa138524d5cd8ee0a262452403821710498761b1ba432c4dccd6b636a6aa18e734c003e457066780d911fb93836a4a52151c3e94b98e3afda34029c596c04695f98ae0f5ae51ac530346d5924b13b548c63863fff6f797e4745e1bc06751e000cc4b88023b8bbeb1205b6c460c194cb912331c221f17d3d21224a536418df4fe57b9b5376479b2a0c11d8c1e685002cfe3634f983100dd9816a65a998063038fea359a67118a75422692dfa1d8c60b8d75f39e714e7a4d14971c64be9de461b7e346e5f87e23cd4125fb51459e26d2e2c644ae08cbff526c2fe3a591f1d22e79db8adf4014ae63d16b17eb679eb7038c660968ee2585afb56e8c5584d92037c82b317e861734d4a172ce14b5c3ac91ea8c643c63861b8b06398e408cf2a8c3ec57dd96a46790d5b2a08ef80bed93b9133f02a50dd25913e0bf7304f9cabe413ec678ac6ed5fc37825e5e50a252109a39375766bab7c7319bb950e96c8ff77a4e07632c8d3a5c64d01a48bcd9ac85d66db479d3b1d6ec20885d50af2a878b31a8b58660381b1ea981130e188957aa1f894f34e79634dd333773bbc644bfb62607b8bbfd53413a9da07a45aec073537e75d5e6ab057d18f1bd8dd1007e09b2a6d9e99d0d37c4d62191ad943e569b0099e3ac4601bdc05dc546006597049b5b3f18d5cf7a0bd648e1027cd1490c3faf6b48d03b97d5f5e27f5b05080c25f2488666a1b8c63a4c760080a4dc1265abddfcabb1037fc2a99382954b682828651fbefaaf7fc84646477e40b8cf94b4b18345ecfdf98f00cee9226c93d986c7abf465a0dc37a3be8a182ce0643a92a097bfbb37174b177ab481a4bff1b6446307eb9227ff67f0cb32e84fb05557d3236df2a205fa834526c3cfe54c8f723b9dd8d64fd1a53b68d2fe251b71df5c0d00ebf7d5cfb0b283df40c85bc3131fa4b07bccff6aaf61e6c98a893c813e027e3d57ade61d82afc85ea778f9763eeac79532478fcee10bb31d7655ce10f3fb4e0f7e22025792e17cd21ceaf59ea4215b1b1a7959d59d894a82546deae2f5f3ab51c1a645b1be9fabbf478253e7ba845aa4ba1a884fd891025a3e133e6032f12413567f58d2f8a9a9719ff85daa4e7f72b815f3dee53a5e2aa82f380c8063f1d264f740add550f5585dd154443e417a539a75df863ef9f9b353994cb3c248e5400a57de4a24a69ff2271b0758f224eedf4c2f8336402373a7231a9f4d1246ce2f473ce5a27f6245e998f60cd922ac58ef55c103fdb45eebc471afa94c62b70d09175972019c0c2ffa7240cd316adcd852d26d03855288d8db1a7ffb6491ddf5a0cc3315f2e3256bb20745f1b788decf03b27e0ede4c5c98b1ddd055eb10b2cbf7fe5914f63b42b0831a2125440f46c58420f00b4d146814e9d88ac991809874b332e9da77133138adcb03656992c10af8666b629a1d82f19a15bbacad3112eeeb120fc0520235cd26787a28d9be1199d8c2e120684fc0df1e869957f0c1f9e92748897e67899ad798fa93a79dd3edb3992b62b55fdf78ee7ab3d7438e8060fba6131f7b90c51cfe812e47c0ccd85c499986b0f2197466f412c268495891d913166a35e769ea2486cc2affeded0ec45d6dae9eebc5f86cd047e4ac9931d1df4bf43f7d7ce6e724cec69436e6116e544419800f5f5059d630db16507b7ba0347067c03afb5d390f23bf859168950405e79835b6aa85861c0d2e8e16a24d4013c9b0c99dc5273ab554889dc2acc3e28656562cd4ccdda0179744752562571167d65e66581734c9100b4f763edaa6a5fd3d3f1cabe24ec1f6dedd7dab8a7202007f4fa94001a15cd3eb55aef4001b63aa04736f403a7f1fb9f0ead290956cd08a491d301d22b9a5489dfbfd54c5e586a418a15822c05959705c26f6612263c1825cd00027a768ca7727fcfe3b2cf2fbd323035ea8d55a911fbb7e87bf81dad254cdf953b3b88276932a971796ea8051a7e79581b05206d465939e5c47306090addf3ffbb0b807cb1e75269661dc385e274b3b5cfa44ee216dfb71e155d339b28116aebded49f5916ff493f8389c9e396f1990b9ebc9c446998dc53c808a0112f3883d216f80a20e7f24da97862e232acb7e0515aed109894276988c96f971f0bee011c98af250407ac33a8a3f3835b9b31e40e12ab00d31f53542dbedaa69309136bf5d582d829501856e01084b2cb3c8ac5de611822a806c878ed296c1c720d0c9cd42c4f3faf704a94e2830bca82d1f744871b7fdc7667e682eb914a002813bff2bf9fa85b8658c2f5f6d32549f2f053e29c54c4e0ef997fd4a8df63b13814b0862c080df0636508061103fa2268a5dcb5bb69a5a2bdfe5b36203398d2401e5d09be629560ab69f4a41a7e6db5e246e32bdf5a000e2acbc6c74578a63b941cc356068309acbaa372f4bca5e66b7d8f60e4c799492cc2adb3434c483e0a160be511c5266894a6a5995f8037ce7e15dc677099a07f83393340385dccaf582a1fa0d6ec054a397e2f2b9b73e4702c9324e2096fbceff96b38483dd493bd29d512fe76054aa8321d9119b39e025638a2738e8a4f4308bbcda377fac5142bc22816315ebcff3ea53ce746ec5b602dc8c2f60c0d0aba71ff99a9bdd87926dafa1a10a846d5b00cf5c9a470adfa1d69d9a494448fbda499c0efd03f49d855ff862312d3d80d9d13f1688e4a1f6829554d6d5decab6cc423a4fc173ca4cd76a802242d408afbe7b11be6ea95c4ae6870b6dbdb5eaddec04e8479eeeb34f642898fa90427d6c9ee9ffd86a8b9577968643334e3f6b84f9903c56030e38c97e44c70350b293e100d870743601c1dd5ecd4f0821dfedbc2d007d94b2d4e5bd68b962e9c1d849b4eea950899ad79729341993b372ebc657fbbfd40c70098e17e1560c5860d2669001f2493eb2befac2c7410a96b935b91518d9bcaf9832ad50ea917b1ac0b7877bdaec0182e3b8d136d9d34594d5b09e7f58a01d82fdba494850ff9cfcc03b73f9c3dda9d03c5de19f373fc686d3e4b83c3a6d5d5cb79a5a7c3dee0408d182274a8723c67b2cf4e8e91475acae9c700c5786082aa38c28fbb6aca94c0aa2c9a270502e5be7b152f606d6d23a010d0f296764c365ef8e6c82eeacfbef322265c06229764c32c9a5d63b1d49b4775659da6b26bf857a7ab890ed06d86bf671aa04c830e53c868b065001045774e6d42cab849154a2d5c4cfaf167225883ce29da458943a38aa006bc907e5dcbe93d842d392f028d3dc4fe8adf12f36d61fb2ac62f031309f7d45bcf5a6b4c5ec27938508e7f43d1737c1990a702aa5713df1f385fe8433b7cfa5092cad87cffece1988497977cf18c78bc22ab5293fa427b2f92f6497dffe17f353e323f7edf19caef4150308c225e37fbf35ada0d2a4fae12dd99e5a3bb08a9e56cef544b8e37583318a2a6cc6f32b85d38d7a70f8e15a7234f94432114d4ca5bfa5ca0a7ac5ef0e527aeaffff25affa2059953004b9b9b06e5911dfbd8ad81df650f046f0e1d0bb1f0060b338571ff8fc81d9641b5a09c20ca1a40a72943d6955f33a7fed5df91190ec79a8ecc63c49a5908be1b2e330c2e71b2f84e3052ea5021b9fd5f46a148bf5a96beeb2de34ff126c457b5e702ee1e30c7030fd96ee49bc7af77c27ef7fbc57b54f2914451578ce6e82ec852170509e8e866d068640d3717756ed6f69c41585d91dbb693948b148d89dc11a2652b266f47313a573ebeb220c477b48061466e48cadb3700d6c146368a2a167179902bb313e88bdac6630c77a321de03d9d83059dfa3d5774927a67a2577bff400e7139a417637fd76643cfc45bac3cac73459724dacb4a31df2c8920c1f63f38551219bdcfa38c01a1ce9c2c1181866cc204cb9b420d28baaf12c9b42e55fedbef2100743fea4ef38f5186559a1a958c63d9b50c5b4b89c29a9554dc20d86c7db8606962594dddc3a3dfb28fa0dbdd72a9320414801b3eefe10da127b2cee2e5e5519741e2774491d166d0d1918d1d49d41a0314677e4738ccb6e5c4992d8d317f217e59895ab93b7bffd9deb3cad74c864e8da053887797d9e6fd4bc4632dec21705bd5fd00417992cfb8e8a13919a521a642f6bce55da2e20c755be3cf721ebc923d9a5f5c04cc98c5fc8c2db20711e60386158c0156fe00d01f5af86407ba6e10d4b98d2dcf9efd08786255498455dc11d0693c6799fc344102340394f85bc362c863ed71e88f9a6458f33d753b3e5f98a32031e94ad139d83fcd255c2cb8fb4088d2788dda084a4bc5c4ef6fe40cdd628365e01485f0049fb4875211c3d0e7021b7fa38fc60f5c59336456268d9290a098f4c9fbdf6f8374e71fb867006f6c1265d8715fda80bb643a8411c3fd1d863efcdcb0da566b4b7a6e2ed21609d5e761ee543590eee70fd1a7254e6a2722853fe400da09dd90841491f5821cee3ef4912a81b3c49fbee812a7f94bd3b76e22d05a81bfa0c26720598828744db563ac02dc1e976b3d7846c770b986fac0c43132218477827918f3140025795f41f367d1b559b53f1fbd994cb832cc23376d683ee28f9c5613095b232971b8000b92ea31d64032acb6bb5624e26a633a507ad92e7ed1e4417c4415897f3d349616dfb7b0c1c9cb58eb52d4a1cbf98a026383d57ad7482e6bed672ad54ea97a5d65a003e14d70b7ce79e6fa757a339ac2adcb8d2adf35c3098f4734181f092e2615e8bcb05eec17862c48cc4a2d87c9e68c7f03814e6585549ca9a8f0560cd43c7658956009b152c0ec6db6139ec60bf0afccde2bab91bce7446e5b39fe4c1f4b8393b7d28f942d69fdd64f242acf91dfb94c4112abb469ec1b8fc1b7fb1b6bb9b3a9cad2184820eb0f601817ae91abc23bc7a0a2dcff52ff419f4128c249c50d63e2df02542694336e7aa4ad2308784f581b3783702940ca58cf2cb5af238b8e350988a1c14cc87d57b710c77099d89233062e595ff61b6a2564497daa22fedc2b6a49825c7496b90914d34064a180399e246c6a1e24a423c58a3d72bac0b6a24ce9f9b1fd0bd5b9fed3afb9621379d1217abbbc2a7e1c1d16f49361a8f5f8a163b147506d1eea1c98521467563ae6f6319a6571084e2a3bd340b2da7cfe5830ff00ddf020a2a87afec2569c4835fdb034d0b0f5996385c6a7266951572d00f4e6537950b36dbd96ec57e2e5a10157d70cf6fc63e5423d4f14b2ce4c5cf8767cb78a8ba062fa7a9cdbbd224a62507c053acb6a763247b58710ffd5801158bac99a156e929893a4381beea0f30776e834fab9e147d1b580dc94d0199702aa1995e88f2482923e081ec2133656da957ca0ce8ba3b467d12bff535b27d4d826dd92ffab35702836662639af2b71ab0919218d60312000cefc7ac23a95f91eeee8ad4eef63a0953d6da9926e0531d3604cba634fe0b483a0a2229cba6f1c6074e2cf6bfd06f21a7288aff1f3066f261efe6e19a9c540daa5b3e9de18869562dcd678ec3f4ee177de481e3a9b1e378248c0d5493430fc4995382f8b91c08df2ada60f1c9e6fe13008c5a83c68574fe69fd1313a05f25b74072275485d36fb5d1f55685ca2b021434757c0ab36c683e4f01d3df20bdc77103f053321ec57c7aae828dd1c3034e217825d81c473fbe3bedf9e06379919c8a8e313a3bdcebbb23af31b04b0b9f212ea9b1fd26aa9b3f969f2ececd5b7b635deff749ca996379965bbd421c1a3e2700a1b982a0b679bd1433e3a74ac27ed17423b5fcde5b5b08258765a98db501191e093dd038b6ba8031380f10abcb18eaaeff23b270cdcbdc001d79d7f46c7887143a5dc380478cc312bdc99b32ff707b89c4ebb11f2e19048bf6eafea391f8e3210bcbea86ee445a6ec0ac896a557ebd5c769ac9ce489e640016d21cdadfd76409474d70279e1c258f6d9a63b3c009b8a88f02d105d09c0f6899be4f84de118b092f0a7f473bd0d6de8a11a857aa2c8ed6c4a6ecb536a3af8182b64658a154642963c666e176566e0f8a2fc848723fc181679e5573cc2c57f8879b153aac5f0e1d788249337b9d199d7ad5fe5f0cce571347dee7bbb805393395d1c2bbf58ac30d2ab2ff9d11aba02b1c5b05089ded862ae08d9754212b991d680517d3dc60f1153b1c47d04d6e9a5ab74b990e488d93510603e77998865224ecd93a4f2e28922c9dd1791790911d0fe5c488349461f16b0bafdef939bad76d61b68d83b332ba0d22c2810f2a6dc294c78e271083879b4766e1d7564e2524074736dd57f65f510dc769768fb444cda64fc3dea63132d58fd0454ed89c3a54ba39b389a4a0554805d492a570a58b8b3138459d6072dcf174f1a3f1c6c00651f4a764bf09d95dd300d4d8305b6ec7e67faabe8816f8d411796d06195bccc35b650346d6e26bf90e015b96e913d9c9616bed5517d173bb3dd30f81a93f11e44e3d58830c752b87a61891aca67fc90d2047f7b6ebede7996d77bc85f1d93e4d91b92c9c1f12e5bbba1eb6f1f4a1d691e13d447880df86267f025b803848268c250fa372d60684b7b42701c7e2d84e83fcb9b8a023a2d59e71fd5c5c6526b902edd7f7dc911492ae1516f2b5c73b52295c341c1b8164450893eb7ccb7b1e28c05633d7386f38f7705428ba59d552953b134382fc594356fa7167b8516e900e4522c4dfb96d96c356742c97715a39e972a4adfc7367f17d09823e274bfed37a60a9de5a9d946fc00bfb29ef20aa36aee480c8d338e8ca020b924a3b19cb0fae7b301c62bb9bc6c113e81bda07949943882a45b7eeda7ad242e8cd891de929c6fc1c65c3074fd5aebc6114deafc3be472971dbf6f1cec1f6268d013124ca4bf13456c15829045af0359622d01d834461c0c3317c4278281cae3e35ae8efd2ef62ed2d1d78db9e89d8e7816e12017c795e46b7d65cbd0c0ec40505066b6e2fb3a4edaf3fe1a146d7b0b170845c5c3e6f7b9bb2521ee0c088094a100dc479b97907894f8dda55849e8bfcd282f8eb87bd928494f09685c087e462b7e8ffc99f5934a38a2f6883369ee728f1d010c32f9ebf1fd0feeb0ccac65ef59a1b781f81004a69e428d9267cc9e2dae2db9890044c676a89c6e062b3383863c16deac6ed715d64610f049897161dcfb2b76ce25102d6061df1e9a31ebfe4f60f4d5b20e0095b773b9263144f36925402997a5f9baf7fcf126a194b5fb9843584a20322639f9e3d8b23a7d83646cee3b201e1f793415e23f60c8d8170c1ab6c3118f99683d222c653574948d708e547a1ccd8395438c722013d460072d2338c401d44d27cfdbd0dee34908297b50e76d1815928dbde3a0cb59e433c4ca0e3cf6cffe0e1610bfa63fcb62d77f643b453c0c5d49bd0cc0dd03bf4282bdb082de3fcc58ec9213413e6ffb6749f39a47b83629ce63559c4680c9318d34f264f78a8b769306aa99dfa2c21529cd3c64979b66228ecb50cd751caaff8696086bc56c4a477125742ed2ef7aa12f2a9b49278c950c3aa8d24609a9825505e2d9452ba619a635699b1fb4b9e1abb59e6cd55b4cfb0fa59e62b91fb115f2440937097d6d5aca8e8fbcf9e99fe3bedbc3b101fc80a1069fcc81a871d18efd67fcbf9e3795e958902a6d2c972f5322d2f5f15ef5a05916b98cdc92ada3c2abfd49c46a38134084266cddda786c8d65a64769ce04c98d163f91d138c5a106e739b9357f6c9eec01654a56fc84a710cf9721fd11b8dc712d9805602c769d21ea44280f405f3fa89dd16eaba6e66212399b6b370314f5a90dd5fa73b3bd3008058553cdace1f0182735ab17355fdcd3ee6bfb9b37db50722265a8ad2b583ceca7edf47cca464fdd3d1810fd6cc5112f78a1cc54893e30cb29d19d074e654419052c538a19296ad612a031ebb83b23947365af87c3baca7b188192d09523991da25b6a90d97aece0d545529a30cd22f47ef9281bce8c671208be00f4fad50ff8b548a766eea9e0b9ede1e32b07f26bc37f1ec6442ea289000036b182f0e32f5432900a3ebcad851eae53f6b0ce8d076fa9e42288bb57ba8301a0fb6aaf17f55d310bb569b1498b2fc8980f2b171ab1cbc02087264b59bac51c68998f31ec703704ca04cf4b44a9c4d52e57965787a92b4ddd70367962d936128768a9f9911caed66b17db54da642d537c416d63dbfb68d9d1e52529d447c016ffa65fd562136d0354b770c3e0addd9e628467a52b9c345214f31de86fa5f708147421cfc4babba725e1418a65e51738eee829cdd5a381d2c85e0ba4fcb75e0ae445f6c5cc443af66186c59759ed0755e9edd27deb89d873188a18f2d47398179efd3e40038ad43370c6b694716dc176ed3c09931d07534df998c98528740408ca27d6156eb587960c997b503bad1b7a69c25262ced7038a458afd314c324f14f57c699cee35121c5da5fa85f6e2caad4781ac74e45f0f269e4bcadce4011110c9f655658e489daba62f0e6c47a7b09c151239f96f476d117079ec4559bb691dcfd24145bd69b204bded34c058596000a986a9a147270694f78747e03606e020ae67cc7534ba739ff3227074afcafd579a522c706a127ab50838944cc0dcf2082840f61e571e3d023622c69edc328474d0c7f80775c61539f3dd077d0e9aa7131209470750696b79a0f1f876c1a4fcb301ea7dd99c5419094e6a3cf91cedf31454f17a0e219037ca321e03a33c6252486f4007902289fad2d8388274f40a3629d71c4618c51369eca2fe86af7905c32ea9abfa01b54b34298c2e02e347991423c82528babed3fa9e82c999c9fdd9fe50a954465f215c6681411f60723471120d3a26764116fb30702b41c9d1f28d43edd1e20da3761fd823223f6d37a0ecf321966294a8e7ce246926c59a93dab13ecc354b0c59d74a6b0e8e87ddc5e8d65a2182dd57e0546cfa01a94ead2d2a22828ed54239d8b2ecbbdda65308685105ba02907878b3d8314017abcf28cec9e8cff9dc1745cfbf5406e05e7f57977da3b309403761798158e0d8724223492e02d4f1cbe2c1743cd7916cead48713d5027f0aa16ed3249bd07ae7cad1ab2bf987da3249c92b8230c2b343d5a55d783e275e1f8f21873a7870e52c9059b0d3afa807dc025cfc873f741a4fb3dab2e9f09fd61d5a62cd8deb9fac551908099791c669d42090c714911ddb04bcce13cf87204d0fc96b489ecb8aaecdb1a8e774879d5555284f7175ed6e8fd1bd3801c10d22fd27b80a5f0b5dc6863191d2083fc6fa6176b33519f18bf6e599655ba7b5bb71221d70f9416940f4d20235abf5c50c237f55c715c796ab80c3974cefe1e75a58542cf945fe4d367278dfd68ff29ad132116fe1a8ad5054e148e092d6cf754f3e002ed5f8878cacd7b013e8ee22ae32888bfd6ae71bb5473f640f8b4052220cef5d03e6e06336f7b436f7d84b81c77435fc0969b22bfde0173f9092dd151baaa128014b54c24176ade199049c8803044d0c1a5d99baa09ec25b233e6254acf91acd10a86037b0b72509c3212a5f7c551eadbf968fc044e542dcb2b741d13feb2b880b306624fcd4431e797d1f474cb48999dd708b30ef1858aa0eba35cc240520fd2095d1b8713badf330c369ff5663b2bfb2ac73b5f9f973c2be0f6957e1b115511c61567132e3e70ef42c4833fcf97002b01d0651577b8c37f125f4214c550a8823fe992620dd90d6661f51838e99297ac8cbebcb7d48b50d025d284139a9f03f03a70413852ff2da573985d1f6034fb1df9a9ba278c51912cb2d6083fcec40162523bb1a7ce99c809117bf4d56da85fb97a3c3871ea050c2bfc8bac15d985bbb223adcc69b40e1ceb8b2da465000e9503200ad5dc4432ad3aaef44ae382347a2253f26d7dafb888f7b7b5a54f0d21b62d25223d90578ae23029ffae6bdb3d3ad0f12f38935391cb0934948ac493f4e6f961e8fece5e84ac6aaf950c890de73b921fd66d8e64426c014ea6bd5e3338803c15c42eb3b8eb21fd75985b7c0a0762700fb7d886a0f4877525e8cb24268c04e1f956035058915bcb4d2d51b06b33fb11ffa00e531e7ee9c271454cc65d8a9435fc24d31763d770884779e456447db420941ba754d15adad12cde97e404f2b63a54fc8967f998b46e9e57034cf2264ab03efcd16b18097960ee6c1d86ea73cfece6641ef4c4acd78539a07cd6f01f50815f96001618d24cc815511a0cd52a6778799a1d53a64d14e9275c471402a641102447aff3eab6966ffcaecd30e71e8b48dc79874163434885e1c9b2e4306b3782becd8cd5ad8b16ae3671a23b21e09c815cd1600c6ba2ec4c4452e8113725215000fec373628919ef24adf744d4276746d8e527fb9f6c3f2fc887482255d184518e55f08c8d8fb5c3adc0c9753b4af55cd5238ea11bbebac071ea4cb4c875fdf1f7922c60b5c314f05a823a6a37ff219d43f8394417c8ee7906c758bf4e8983924ea30b24e50e64c84ac5058d0f95fb790086b7ae146a761e8b55b0db96d676713136013a70b311ff0b207fcdc29c40391fc6e850b99cb1516a133191f3ae6662aed17ebc5322733bd13ead28424c1a3068a17257ee24c9daf2b7ac13113223d20e00e81dac605837d5c1b1134d04f8fb7c71ce232c2fb2d7d028d89fcf5ac6423fdd5672d6f4751233214a385548b99d5f4420e08810dd4ee09b355f64fbb251f80afe32685ad9d7ed8fb66d583ec7e87cf82e6fa15744259d4e22bb7a3f9a40f5d4e53b4bad689be7322d1f6a1a33774999c6b1873e437cab783b629c0d9ba24ad6f5290c388b3f40521506536dac68b9d336841ba5a7268ae63ece7c77ef3283fed9eda8468c47eb2c807bd35548a1b8fa59f92f41a1a7244e24a09b5bf9c24fdc0092f86bf2f994a3f2c9702e4872b007f4cc537980ad7859c7b7058c1e913a21f0d600543bec8cd4b4f0c521513afac404d67d1efd6f2953225c8b01a900acccebed2748440bceb164613e528aa5585e331b60298c4d03b3a287342bed22d7d28220d80793c694dc4ebad4f9ce2e396fa791d4ccb4f41a9042ad412e0df29868999a45c2bd7419a53744babd726e081d2b8844dae366db23dd9a6ba7fa22933c2d15dd06bccfbaa6f16144a77175f2eb37e7e1113fd6f563b414dcc0020005b9442cc68375caa2b2485e0f14d01d220a0a03bf25a7bfa04d4ce5e8306e1282f9514d5fe4cce4b47d0a39ec0e2d750e3adb700b3c4d26ffa58508c1008430bcd2cf31fc6a7929982f43493e4092a540dfaa71d8c0517b44aa2bc9812cf8707ec8fed5ba5041ceab6823630c96b7ad57113ea96d6cb0155e1b77011659db011d8a546227b86c4c372f4615eb226cb3112282a1124ae14434bbd9a7eda2a4806d5a3dd8e17125017fcde0ff4442c971326030c28c6540f4e5d0caa904371f30ad4f97bb1401bc5887b8ca462bcbdff35da25677fd342261bfb28f870e5d6ca1ae1755329aa4a2c3e07cefd3e62bb0ec1ed7e1aa1927444031ea6a318dcb1fc1098d23ecf2b47f440f70470e58b95828cf13ad419d4d67049a06a37ac73fe0a2463dde1fea2a0a67538b1f5bcdddc3b27ce933bc65ca420236ffd1bd949a3641190d01038e7484010fdfc507491f725cf47da2e6a2e84ec687d2f00558634c011d2efe011267dbf7b783ef5cf3f227116fbd5537de102f04d02fdce6975edfe2cc05e676f5b86b8514cf115090d0dbc1234052c207b4a3e71ec7d261d5daa250f82fea9c80f09a18bdeb836667ea3805a0cbda06e1a2d806d9f94bc8405c5b30e8fac64ea59a6b99581a4f415a47852c08f3f173082941451279d07de0399ba0d756766b59a384d8f0455312eb8ff7801fb42e7b1a16548a3b5cdc1b4d264ab2dd4f5755122456d5ab9c0988486f9defaf8fb9b2f989f8aae09e102f187d24e17ab0dabad746277777a3f02dab421a41da7943de3292688eba58e1bf839065e1f89fdbfb23d5a4e230421bf301d2fe72411aa7f914e2da54769b73733f8121c1de0855efda8a3f017b5051c8a93295ed93fab55469dcfa17fde2b34d99dfa7d0e1fce555c402b17c710c937e856d5860f24efd0fdb12ea312b4b031d41360d629e72fa3eac6eee20a2644ec3f270d94d9531c352f4cddc1960435d782d68c722b62e835976cb6379f6d00a84a07d511c9f03e43d76bc3fbe0d652f91046ff162da361f83a93f154bc88cc3ffcfca5c85355650b7b85a41075c1ac7d9b20ed9509b567be1f6f6bf6f92538273a39292946a2ea4d506140e1f856107332175ae102f7b2f12391e2cbea8e51ca0d699319cd780e0caa880f28ecf2990fd3d96479027e25851904cda1c4b188bbf506b85fbfd2bba7dc58ea35708ccea60399b6eb205e83683c27fb5cd4d28a5ef07a1cd8392c5c39f91d9d4455113d9311d2be3f1846bfcc2689d06250281d5a8d132dc9052959e80cc754edd187fc7ef57ae0e405dc3f0d79213655149850dcd63cc677fe547dc661e2e4b1b259a9e748b22f171323db4eb9d5688c3a654169e99a2997c215f8e277c5d1f45c11f10223406809097e2a3bd3476141c5dd335f37fb95be1881c305215a803f716876ab51b2674f2e53d4a149c1c5ac500dc5eb7fa09a6e46394e6c9decbe973224f472e1d02b8623d0043e30d81dc04dbfe3d014473d22f5419f6643792746881617ec14fc3d9520b8694f9179399465eb7055e19a6115918b0b3abcccd65d4d3cd12dc03743d203965ddab45a65cb92f22a2a0c2aa18ad4b47b247b616ba0c53793d9bbf718831f93db5c238c1c0e30d35939b72deaadd773b22bd37f81c8d42bd1894a092db0157f6c933a8b1a4a85619798d7b952975402322e43a676d1b087265201228d471d51cee60092e84fcac9fac1820a483b00b4494a9777710475720af44a47ac241773fbf30e0417ed82ff8dadde65e827775bcaf514257ebb1cc1cbf5a0d7811e086fa086effc00dee20ea4a2908b48b17181eff88ca3b865f10e621ecf21775122f798fcb0a7fb727e4e1e910e912795c5989229ee7825932cde474cdfe0669626f2c203f4676112cdd53494104b6dd7f1ae08b7969a4e86622421c67a3bfb0b122f81c8168a388325ce2fb470e48982baa38cf5f1141f2945ed3346260ace990f4f07e8aeb15c770c4777dc2104308776296c0bb07ae20616debe30983185e325e3a38adcfb4473cb08ce90084091f5ef6c4d009e4ae1324dad0de22e1f42f10e45be57ff3dad084d6c4eb56a62883e8012f20e016e14ee235686b1e20211f12909883074c7a6c5a2b5c8578839cbc4dc9c8363c94499d8285fc20e47306f8115a67658814817cb1dcc0b9ed9792fb1d9e52f3ae7f8b2ea2c5ed80cde090e1c2ec7a5b984e7267baa824b5dd6ba01423a37f24a419e5528bf0afb4230c5b0e50b42434ecd1945df079f3d4dcfa520c860cb12f676fba1c9ff1cc7fb0e0f89bc01f9b0d12a8b78151a61172afeefcfd44cd90bab01da958010a024cbfd7a308b015e258958304f59dd8bd2849a36738cda22409929ac428358cf997379f509b025fd40d26407476c070a329a3199fc9fabd4d66dc9ad5724f2c1d911116dbd2922a9aa28e261792f3a9765f1fb12e341301aed25b131a86f8dfc5f14abfc2d3a0bdcea481456273f9bf76526d08e1f20cf747e3e9d912f7bd88daa87c1c82c1622f3eadc693305c6a9bcd0278c2d522f4fb889840a5dfe9a57fe3d3ebc255bd21cfb51f47cbdf6bf350fe78341031099760dcc1783585068e40b15d8f9006a2115bb1156bf89b51670e5ae77c4262b7e0bcc65f92161d05bd26e50c550b7cb2e2c5eeed10303f75c67558e15671be7263b4f0c4d319be3502e5589367926c267220ea340a7a156e013f87e2d819e4bcf46a5c86072086434c78abcd7401c397115edb1fa6733fb7a09d20f9fb995a75ff6e245a658a8d8c80eefca04765c8f6a169ca0ff3a959c547fc1ec496e54ccb2fd1b6967d2a2ca14380d5ab238a834780ec27dcedbd20ef6d6a298e30d25b80e39d4e524ea2ff681410c8d5391e991b61a79d27ba8453d9baaa9a4f4f5427f0b16c3b5d3cd53164b8eeb9c182874fc771ea05d6d81c8a0536090e0c09118d37a53a8af74bf47c7b35820a5c61bc802ce0e56f8744de673dfb061c09bb0ee6bb11132b787e08de553450f912bb90580690771635d92c29bc22fb819e79b28761fabe1c5a3f92aa9e5612dbc10af7a6cbb2f60b26fd3c22c1012f166bf117b55ef2dd81393db2d4f7e90092730e798b3c524dd5cd11e48d8dbbf9a79ce8e44c61bf49a80d490981768a958a32cdf0ad1c823e2dcca82fca8f90e1149e2f4263dd421ac91553c09a69995e2ea377b0269a22fb0c4f64c689ff478ebd56aece446ded659efe77623052a2ece4c1ced8058552d1e38473e82112a45bca2a9374e03615a3a18353dd03f534b236355ca293117091240402029c29b1fa5c390ce68ce472062a9d4e218eb44a276f01926f6a42e2e3dd5afd7f82af2ddfd66ecd679bb680085067e146d907c0ecf04c221ea00ff2f64504f79e9f556ba015869a5cc4300bb9cd2100b6696d95aad1d1e7d98586113a3841abcdcf36d4067a692e078d83955073c1d153429977455b11e5d4f0c0528293293a1c7020fdb776ff19c4126c9b5391645e1e99be43a71efcff1f2fb512f75b35013483f5fb9768fff931af28ecc5a37034ae7327cb8ef3f19262aacd20f5077f1e9426be5ecf992acb9985d5adb13875bb6fc1ea8717b05ca1fb9394f0fe2f619df1639c316df9b64b2a88f942625a5a8cf21f8be80fbb7c14cd5e9af028a742d536b4dc91b61f5e792ba47c33fa1902d7a65d02d7a0bbfe9d40c0efc1769c9eaa66cda822a62a99b31a5beab7b9dd1118cc9819d8f754250c94ab72a11835b90518629e5bfccd7c0c102895f2f7450adef333648c586844ab3f1e59712012db5bfe5aa4e3a71979cf6b28dbf42be43886b5489239c5d8d8b36eed41a1ae86a72b011b6cf8586414cd7e0abc0fc7406888a5af23881e606577b520ec81e878273ca3710824e675cde1a0d21a9e47a1f322ddf1f0dff8d5439ca696a6124f2017b8ed06c2724ffc3dda288af31792f84ecd45cf0f22adbeb2acffeab8b1945b1ee220ce159ca99bc7d4e00865033c89beb83005b6e65541dd430790574111e9fdd2864353bcdbe799ef9e2ef67e5e9e71bbe8eb3d9c1003fadac7b5ee90174700c35689cd42790198b845e571666f691264c3414d9d16349769f6edeae1ac79f24d8dda3821a6a82702f7964e7a89bfd67f4b2ccab15a67fee3381afe808151400828ee287a04f50f5a19f99b33507b7fed87cd46b42bbb68e40a199441e6c26cdbacf0ead1e3ecc585f4a4d204335b4779ccec75b803ccf416795b9ea1a8c4fc3b4b2e6415de30a0e6ac1dc8f4d2ea1f8c7dadee7f03699ab7867d8690d71cf6f61f8759007c324555ecb2c6986f1f29fc8d421172202cbe7ed3554d40b1e02ca276b2f110a24920334f09592fc9bf62c6ab81faddedf0c628b40efe91d4276ff3d925ab614e4a4dbcbfb2a096c17a4c5aa33b5b1ba3f41a72331c7451901f9642d7e07eb0f0403e7c6e9005c3b39fd3f6ebe229432a03e4baae68f730102c729bcd8d481cd0de3346c7bbceba0955d8ea5d699520ad8c587fbc3bdf50bc16b2c4708945f15197f197e732a6aecf95b7c96ba3c35692ecbfea874a91e11ceb2d3b52b7fcadb6d805fb430f1c2ae51b73c64f2562d1f9f00061e3bcb430d0e78b12ffd41991fa1795909411c868be223b2e482d58ad93c9a75fd879ce72c49adc2548e3dd633d31bf363c54307ff80a02cdf31c3326588f356159d6c4e0e973d2d9dcd29f8f8a55c2b7a946ea895b1085c3d2fd53c658f2c9776720ffe033186c79799a7d574583bc17f0cd397a1f990ff2c2564c44897f047fdaa78c91487dd3dd3af210bd2f021a8b965bade1da61777f217387c4cebaa32fed41eb51b28a90da1f7e8df55379885be87c48500bd95962e90de366226066c70c4b70c00453256480c49b7bd78d6b9433b7fbf7b7669992ad8cef27f215a041219c5432f6a9eb5da09c6c48910f16d68eab2e268f4c05892007904beb4faaff51fcfae28773e1c29b703c6969098b363ab9b13cc36691fa88acec5f9e5cabab362a5ae3053eaf2888554eca22d9f157e79cb0f97d70887ab3aa61ce926fe7e8a95e313037226bc384e985e11959e0bb6d1e1df9cda86778896587fb1e28bbad976a214285027ee69ab208c8618c868deb4b83d1ee9e2e90a1291139228f04d9e29a4160256ff951f4b411c5e3507d13e98a71e0e8c9919869219c931e3a18b82dcf6510da444d10390ab90428e9190036fee30f3fb8a7bd71ac66e7be926d5a025b5b10ea262e69545f9fcf57aa205c8d0860c811a0fb817533c5c0e1d2987be729aab1e6f55617a79006bb7d0980a6cad50f8f964aa0e508a26499fa875c9a506ccb409ffe8bc6705b189476f88826b202e1dd0854e937fe1f49fb7a7cde2870c210a17742ca93beac5664d1973d6e6615b42bffe687ebee28b7b3905b311d34486a40435c6163a86dd4b9e2b9bef7d74636b362aad37afc0d4769e4b3e6cb520bf6a2985489f9b513d3e16dbadacdaf2c801fef3ec5bcba6effb5eede00922d2df871d1bfeccddc78e4dc4539091fb3814385cd815776b3a7bd852c571cb942041bf04c11b1f30361b2cb12a1dcedd591f9bf9289c02e30645b41d7b5ad66464c5d609b8642335b31cb2dadd1ae377a98cb7e7407bd98b6a12da4a582ed87a7dfb1a0caa2e1aceb9cbc8dfe33147f0e24abb1e736731c6d431cb88f19f4554673af70a213bb91474b5d487205b57cec20d50614f891bcc7d13a72155b8370eafba142ecefa00a80d504591e6e97a19966bba94b56ef2979a345f296653783a669b7d0c1515b56d7e9d3cc2e41a5958e8fc33617c4e750c74564d0e318a7f581f33a306055669cd0bfa56466b2f5e7bc0e377df4ebc34932abee0e06e18cc7437b1090e6c14cb4bd6a4280027df80c0bcc10036c0de74e18778e12686a7620e45e9a403502ee3e4ce63e80fe0036890fe7f1bef6b6b1594055c515a6d2fcfd1804d3c2b64461b6aaad609219959d31398d90c75e6165324697e020c68d90bb7a34dc60204f3388823a239af981bfaadabcb1e62d781214ef2a3240832b986f81430f509c2245750ded15ced806202270160caa850ed99a7601a0844fb472bf74387b629c0d0f5df8a9ca22696c9634986705db0d0019384ad4bc6bf4b72a541cfd1b31e1919877a3b99472f75b97ccfb5a7e53b695cd3612a93b8c9accdea5afb81f90ac82022f4ee0f1b1a2a91422e6523589a4ccf2dc7a5171eeacbbf389f550be10c7c9a4b4f60ebbab01236e9c9b2f63761552c93ddf9ee18f57aff09385f495d206debb61dc8a35e082b739bde47e8051645a9b434891912badfcb5f2986160a0458a52994285bf4bbf755d7348fbf9574d745958417355c341204c7fe4a50881d0a24d8508bddb8624771b9f998095a424570869862ca7f125e0e601634024f24c3bd8eddf6ccbe71bf6f32a28a227d3b72fc1eee67efa97024c1fc2ac57f210c4488be953f7d610e62161df14e89c5b8fb11bec0c79150127666015653c5331043b08969241e0734ce99a0d9c662d0a4e602bb4bcbb1e2cfb4cf7b349b19c517ac2af29ad2a9bd43b52237d90acf02ddef3a8e55f6eb2fef86069d18ebafa206b05df18a06bc13132efacfdc446d55a9ad6f5c6035cff24fa2cf48c3bbbe4d0ae8b815e27351d681302c1c939a210c68c3dc07ba11e8c9ee341bb64302123d2e57c9828f1583032ebdfffc6a8ba072e3b916b3ff752f5510c5245db2ed91f61612128152ec7f723fb3b03bf5012eed944cdecc229f1ed494f66f68fa5e18162e9d35d80a67d2d0b47cb4d2c6c9bfe8e3715461fda3ef5fef84d38181ebfb2a00c1cd198044f8a1c5a14213f74694d3558a1dceb32984a744936aee416fbb34175aa7d60773d2da20776468f2379b0ea9a95d533d0fbe419af238d8c9f3b10427c5a380679c1a058c8311bbe0bd23404ef15eaeb8f0cfce3385b5d87389046900b525575507e16768db4a08419e225662207b282876f887efcbfa06977db5fd204da2fcef93ffb2f1abcd001c7f25193caf6e1ebdc5471754be2f4482303f7215dd232497779f925c6732af93f3afb679c1db9403579a5a3c2b99be4e37bc430756bf50beae6dcdfdab9d2347695a3726ca9f5ec2039bb0bd203d7d862535fa0f682eb3540e3b2e370b95dc770de17a1ab860d1de3126734b313ac96b3d8b8f1a91d02ab154c19f61895ce3d4c116387507d4827b0b08c8b288b366fcc6d33b1b0ca24b6da4888637d458f1a73bca2ce3f00374a983ef0b223d80c6657e016306d7406ba7662c157510823a59abbd44e7554bdba40fb9de59ad8ba0678f585a25650f29b115c120485af04b5be9aa3bd7465e83d3c600e59e792ab97348e4571d9f4ac5979380a911fc3fb13ea8510d14f5b61accd23cda1b0d944398ab80382df87bd28f858eb77fb20dcef5d46328c39f9b82a91d1b03d19f4d62005e0f34252248b19287223594ba3dfb5c8f75f8ee752ed3093880fd7276783e80825e562fef5847ca1f42a3ec87c978e656368697a2661f5203e66aafa38f0ee06396e7183edbe76d15437a5642491ed91740f80f788f2ac2877bbe9dfb8af0eb00e0da177722835a4d6c3d74eea38fd8768f074fc4d661566a2f6e6be150f92491c75b1d5072849f2756f5a81aa4fcb4da3643c57fd06931b927ea5456f75cd2d8bb821643404c8c59c163e8a3b8341a89eeedf0985aec3b2002566e38e1dfe2559320300c8866ec898267bcc81ec5ac3614ba8391a1814d863128965c759c8ed3cf130aad390ac3ff74d3af9e31d1833b6808a7534213cdc9e6e2177a7892ca3430a52c04f7b8141fdc0202447b286482e20f8bd4665cf6a344b29ae61a5e1838df5b0ffc4abace1f75dcc03bdb7cc3ba96b316e90513fa1f1ba327dcf3219cb6085a143b027931689a87f3e122ecd00062a2eec9f2b47d05543ef4e78e07ac2f18601d4fa16d1bf0a395b215678464db0766ab1948bdeb800913dec79b5da732e5ce11d6c91144b20c6ddf068621244e306348eb556fd2f0a4979f9706dea08684932f864f8f5baf76b9630cfa18a800c387ef0d4bf5afa4ecc082b18f921810eecb2d4ffa90f9788dbe941e323b89c0a13006b0e89ea3d42b79afe614845b69af632fde1a058b9a188f7690d1338e54e5b18504bb3d6fc126b6a5a11865f2ffb57d26d44793075aa5ff6ea7a610a5faa091aaccc11b45b6e33bf0ad207386680ab6219947cd84fb15a7908535a98c84ad43f7e4856b3272fb28c2e2b15208fee13211719102e7717a23731a6e993b695a3443f562ec25bcd2eb497d7c4347eb39ae082d4eadc3e80e40bbdc9be38669a50247d80e202e26c9bdd8110a05601ee5371a45eec51d41c2a0ffb37151919d4f16caffab119386955d59986d98a6bfdf931df8cc1b9badd3994f73cdb782a9f0b34a82f8ade2930100c5446b8116b229fa24ef9d56a941963353b50c0e0efdf7c0d9d2c15429c701cb38e421099d82887d2846d603afcfe51d102ad2298b229704caaaa1e9c77e023f1405432e8ab70c181e8b4eac5cfe4c333227612c0db3d2be89271dcffc8782965fb351dc2da1d2b8087ae8b247666d8dd80d52082b6e13a705b4e383401a3cd494a172923926c7e625b2f565f34a880df3934d8b8a0bee374fb1edb0f561027ff87cf5047b45a33d05f7e530153f771f0c481635c984cba35182519066d549726257bcd277c5a28c2a68f687cde3e3b950be53e9c1769fa6ca88aefafab8a2dfbeab7c015411eece2437fce60ffa951577cc71bbb3d976865279a67246206940acd0d77a6b9a06f11efd69ff9b791fd46b3cf2228769771e14298d1d25d1dcb934b24e4f8c163f2215f0f459e6740617818f901b94f55627e1a2bb6ff14af1151de07fbc599dc4a6071e9a3cb2f7042150a3e91f5547c6b40aa757f401090d4fc92a439a8ed1ac2104ba0f4822d2bde7cbf359670525e3e732fd29da25ef35fe84c4a1b7cd6222612d45d526169716bd22f7ca86531edb0530a07b7664e1cefd9864a01d5004dabc20b9a0cad5d1e03e4b3a5557e72ed8c9ec2b43e6e267145189d95ccf005216501dbd86c60838d3d9ae7a074dd8ca59e38756b21b85cae5323bd76f3405d47b9415394f763351833534401a4a879e87c984383e08e56de75dbc321d08fe6283c00deb71e6499e1cc103ff8ee9dc6d291c067d2929b44dbe3ecb7cd7ae8e1863f31615924f08a8872ba16d53f615a114a6825bd69ecb52e6de165f889e33bacb1a16d47478c1f456493992580f769aadef6665ef4ffdb602ec954aad7bb4a23da30bed715b029cf0213ea24e2e2882cd392ab286ccd3d527b67a4141ac0bd7341b2e1fa03f9de582a5a42bba3b91691864a25cb115c19823ed4defe620e7f0908d1792afd1e46b1cc34db5f5e29842b0fc1968a081078da2a32e0b6cb83595196a182c58e229dea758a8782e6945ff21e7a77cf01c65f6bd335d9cdc8ff462da381328124fda1f4676f81a6de223cc3f2b29872856b3ba8ffa0a89ee1bb210f27b226e228d7e3473f4dd4c7c9dd82e39702b4353a160ce663dcd0f7114c0a5a1f50ee5e194b3ca98518906182a47680f4c512953e307f61ac0e77e727bd567abea18efe9288b94c07e9c71ef6056ec23110d31d265e2047ce6083a14309a9e676b12584d1d828c4407d95ff387718db77995dbdbe00c2df64674fa7bad8208682e13bfaa41ed934e5e8dbe0b6ae5ede4bcde3c74abc20a0210d347b427859919dc0fac5adda6785afb1d66409049965d2984b94243ecccd0f51237946db396ea612f54045061a48318a7006f3e53e08304b604b5b83a001af7e07367ab45aceb191d6390f50e92c982eb2c89539d8d6bbfc5a8f83df661bf25cdd7ba10b123af0c070e318b30182718b0226f0e610cbb81f3aef79436d042c770a576d32c4456f71f2021c20c0ef7891442efc8d4c0d4bae74837b2cac00f255e69e04a9f4f07b5150fb91fe8b757d2819f68e406f5f87b990bae428a10584a06040a2b2f812d1d0f14ae80408441e26824cf98e2a0fec24ba0cc28c640a933e13f53bd72f4a5df207f87e7e9e0d2261c740722c6500604c0ae496f0f8f467042cfce73a07ba6a40f946ee5f6c06168d1e843fbecc0fe3b1970fa19cf0ddddc76e3ea6a16d586d519cea74e8de04d1ea080c1428dd08a207feb49f6f54440122d63725a3663b7b22f676846dd9fbfbf2a444b91ea6519ee2c1468b71afe4c2538369b42e9287c720f723947fb15cef6158f831c3a861c61638c5a1e0105cfe98645c053691999432f18ebfeaefe43bd909b8b55ca8d7a22751926f36153ac7fcde28b2d8746ee7c1ef827c02586714e597af347f87ffc95d4b23a99371194206c250ff629787e4b2ef5e787ad0190bfc4a8a0a7accf8d2070265cd1cd3b63199f5043fdce5a2412227fa005178c0b737181c5ae30e4c2fed9f79eb9be733550fd545f4df9b0aa2005dc9b504ba7bee62cce322fcebd84ba9c65b1c2526a83b2606d66668b07345214513b82be7edd3b9133e1094d0eeed7b376d62b6edac56a5a9d8ebf3b5cccd7301c51fe3d5b44653ba9c37260967d8ced938962fd5a21e449f6ddd390bb72b80adb99acffb9e44c283066e3820198b1d1c0f5729dc758eabe936f4422c4298529279c3bbe01de45b82a73e0dbbd3dc9f4aef32242f3d4c0768420a8a7f1b8a805bd06f76c72376dcf27ee502378f15a955beb5a013b45ab5ea268c5cdcfd6b3056f0c3f5203ae0e8b3962d88026b61ac7f72745115eb503267d7ad1b9dc4fca0ed1f31bb4ec4ac779dff2487167eafd11b791bfc9d2ce399b100f0d3d22cf6e1ede62abdbc83f5f2da2ae85f8dd0fe60f28c6249f0806477a2d834c7182a91f03f351f213b551f32bf8c1f68b8863bfa46f9a2fd47b1f45c760e05eedd5ceb52b73c488fa70100b18c4a0f3c787e124d54dc745445cae804d54a7756070860c2b82b2c86022271d138a2fc2821dad2487cf14400e7d968a3bc49bee3389f4200653c5651be4c03671d9161bf69927a2281d20648b060485c95a503d37dc3b07267f6a28cef2bf5066e64affb800be6a0777a2deb1727f87f14e6d010958134a14d8d35e4fa9e336c0c39a39a1a6aef3eaf6fe01e911839ff6ad71fee21e6af009d3744656dea17c5008f82528e333671711dc9553cac51de0e927336b54cdeb2e4701dd3b4dd48eae91fe97405eb517b847a19dacde8c8d89ceb5f1a16bd49f0bd135ac142eac463a664a32748d1c20fe2a4588a3f73ddd85f88b03c27a481b2f94e06cdba83b0eec9ea564383ed0aa0111428f7ff2fe9be330da974670637b23505c4f96d28635990812f4ede459ae20673e66577de5c54719681b149a6d072c194d40a05d2481f7a178295dfcf97771516f32a9a138fa06ff69c4bb1c91381191af3f956a056afe49e67dc983f1d4d4a01375ccfacbbe8f043c52f630c4472686094b03ec4d6bf9b4ac6be76a8d4edd4e5096ef96d33bc68cc91e2a76350009c80891ceb0dbd19006751d458b3cdaab93720de9ac735c82ef7dda0c0dac491cfcfe64995a1daa4230df8f5459de6a15754ab3e07004a3cae91ecb91b3c9b40b3ef9857165d43c3c08aba6301f7820a119d1148bbe1186d1fb168f79facc040e9b93c3012c5d076f0a6e651cb3b26b39e671c62f2d0439fdb4781b0a9edb0c23334da7c3c0547b322fc351f24a716b06713aa314e8382e0e7a858e40d07ce41cf9eebe918e85edff3ac754dbf312bdc32fdaa059565b45782717737ce71fbb0e06a5b38a4324a63d10ff3fb131358def67226c4e3046dc59084efdbccdc7ce0137b5b15770f10ac5d2dfb1c0c4d631e4507b140df814be071b0d926d47e5e623994876ea119934a35fac20e0c48de6dc2349c128d3eeef28aa84843f84a0bb28cd7d2284fa3969e30c9bfe6ffa756b15ec835cfec4818ee9a4569c4b0b71fa1fdc067dab171720e9a7a1b208980980b909cddf6bdd3b04be5edbc3012d799412ec5574a23e4f30a5bf64bf6f9a2373b48fd4dfa8db51834fbb2b6636b0a4b906c06f08f5dac5849ac6fa8810a1f800d49b55fed22adbdf44efc1f1211fdeef004042d4bbf6e2f33dbc119b42ec80f4bec3b04e44942f0ee1c133fbdbc6df67294f7886a6a246e3f394edc1100985a7d98ef5dfcb7982555332586b3f392bca0356f6a6078470c212792261c601b2bd3470d6bd9070a8d621f7b5bdfc58e300223d989298f922865e2fbd6bbf676ee4bbca9cfc4b96c1cc933e8eabf838a94309d3744656dea17c5008f82528e333671711dc9553cac51de0e927336b54cdeb2e4701dd3b4dd48eae91fe97405eb517b847a19dacde8c8d89ceb5f1a16bd49f0bd135ac142eac463a664a32748d1c20fe2a4588a3f73ddd85f88b03c27a481b2f94e06cdba83b0eec9ea564383ed0aa0111428f7ff2fe9be330da974670637b23505c4f96d28635990812f4ede459ae20673e66577de5c54719681b149a6d072c194d40a05d2481f7a178295dfcf97771516f32a9a138fa06ff69c4bb1c91381191af3f956a056afe49e67dc983f1d4d4a01375ccfacbbe8f043c52f630c4472686094b03ec4d6bf9b4ac6be76a8d4edd4e5096ef96d33bc68cc91e2a76350009c80891ceb0dbd19006751d458b3cdaab93720de9ac735c82ef7dda0c0dac491cfcfe64995a1daa4230df8f5459de6a15754ab3e07004a3cae91ecb91b3c9b40b3ef9857165d43c3c08aba6301f7820a119d1148bbe1186d1fb168f79facc040e9b93c3012c5d076f0a6e651cb3b26b39e671c62f2d0439fdb4781b0a9edb0c23334da7c3c0547b322fc351f24a716b06713aa314e8382e0e7a858e40d07ce41cf9eebe918e85edff3ac754dbf312bdc32fdaa059565b45782717737ce71fbb0e06a5b38a4324a63d10ff3fb131358def67226c4e3046dc59084efdbccdc7ce2b2428f74e8a823f413d95ad0a8bf94723fbc1598d16bfc0b6bfb1850e4da3e02ab54930562b3781c8d9622f99e75f607ab18d6802aadd864b94973d0bfff0b61b39d1650d681ae07018e6e70a73f5f8382e543b3c07289637583c9f623b2f5a21b7ac69bd075c2de572e76f7334229cda56ae25312515b75efd2a89e65caeae1726ff2dfe0904ba69a34bbf9189fa2141047fe2afcbf41f60467874913572b92c44c31026472579d9fc2b139ec35382fba966dab940d43324ff3e315b6bda2c197ffbf3b486a9b4ae497d06923e4f1eade90772205117c2e12d8f3a93564ddf17c06f986f5f1d222e6304431ee05aced0ea85e5469d1abab4d8573919edc1d60207f41de58fb4b3e34b4b0fdac2bc86f8c6e4733329dcff9eddad0326d4723d1c15a18c9f89bc628302a01880741a112d362f21d44314a5977d7c34a601cfe3100f7d05a727f98218948271383da6585e84991276315f5d2abc49d73e5cd1cd02de9bb4cfeacc0a382ab9f20c2df90775ca5ac7301c220376dd90a0f28862b90e5410972b5641c4f6331aef16d71534ac1d6c1da075eb5db1bebe2975862f3708bd28f8d78d762d3abe009c064869f6cc2db82322f792fb7f4fb5f478be0c4726e8787bb113a8031b25eec8006acab9d3f147d3c2f03d031201d2e7f707248907b4004d0b68c6069b54de359051e0297b6ea81eb56f7dadf1804594327054c915b4ea51096ca9d840802b978cd65489d0c2693a9893c9ce384e131753ee609016b0619d97749989b2e1a21a43e6850af332e4ca2def5860e3a4d97df838598b0fb31acbfafae8386bfd1f92dd1e036ea7237379d746f9620824261bcce5d4722dc146dfc02008255657afe68d888af681ff74a5a86b1d7e357c6cbafc572fd13020eefc5e2081d13dffec8d1bca9999a77b3ca288718c47ce983afdce4c996c00c641dd7416203cfca4a57f532d4185ce52fd34e4dee2605384f871641800e72d813ce3f1481d74e5f2fae55c06654dd6858aacc5ca674c297d05798d92c504159e4bd8ca85b3d7b012675c9695924becd76142d69a4daa6dd1abdf2b58b6360d34219c84b6dc65d10c7a777d79c442a4f1f1e638efc514c450d55c02426d8e0d8f5d01d08bc19c88c8f1675bee6dc4a2452a51b828bfc1a93b54b555bd67470c497e155d5e98d9b994687fbad6a5dd69fe86439998a2d5b2635b005c8f635c03b1691de4a7ff2e4f7ab90e11f0070ee1c14a575ea3f95cdbca0e5e5d3f710e0127bdc53ef07f6fca438144a4846aebfe51438601d77c59a2ef1012d78d29d50987356ebdab533590d10459b36d06a5c06da6bd50f87dcb02a7cbb480ae9a5314a62bd0857d367d97c2fde1a97cddf0eea043d0b47776e656511e39b34a9a6f073317e75da8458986694525b321c3ebf5fc6339fce0165334cc8f3ef5f0f9862c3075aff3ba7b2f5d0d9fa06644790442ef4aee760017497ef94a45e8e6d9d71b8da710e8f59f2e385e3013c75f66fb24fb6f9c947c08498f7b2f969e5c9cf51f4b4efb522ec70e16f486149d4861b846aea0f345eb91a62399084c1749840f1b401722f2fc881993ea8faab06bf7e72384393273efdc4037a0f8000b8f10ff130512229202a9fb458df1c85b117d80fd0c39284bd0419bfb690e8c5456901606f88c825031cfb97aef6a3d4f9595a558515edd6caac01d48e7c75bafd16ecd2d21be515f4a1ef15e4f06ad084aecb39fa2f8a6a4da7e47795890adf19f66a40533b605351006a001fdfdd0e592d34f708fa2f5cffccf3bc40298aa2ede260512b66eda86e62383404bb0baa1fd0e878ee04a5cebe82262da87809c802893410d903284046b211cee6eaa1092373fa928b0ee817993f12f8bd5d2887fe202d70f7f40beeac6634320ae96206d583d074a6176e1d97c7f50e41e7d5ac74e00c512cdae88ef5b56105ee9d1cbc7f59a09b52c6aeabc5748a9bcf03607bce7f70a0ebc880f3864ac072f277fdf41a82af5afdb0b0e450d664282915a121bc95bd11f2fda3d399b510c024c72eb4e6e9b0b824e59716ef845cd2b051ce32874544d2e65dfe7aa50844894f89e6881e36edae287720e08c504417b3a2c188d67887c2186830af6a1f0b6b226b207d7a67e223f573e16207d666ddebd8a6b56c5a3162ba1127fa415cff140639a445a795b6f56ad7af743956fb85f2d6c929e369dd828b4eb889b962490c2802014b49691354b66b0b1c650ba1b77d50b350ae247982abf9221c47e8ba68dc17cb4ef0a3a5e054c8a9cb2dc01672b91d3416a2f61ec263ea125dfbbed046cb0da2ac85b3f15b4d0f96ac909ab314475aab6221208211a68c3a432927982c75ee182a5ab04957ab5bbc15f20752870f386f10f6371da1ec775d749e36d187a7aced5a3124044d64ee13ffe85f6e3eb3fb87cb358f2f61fcae3e4f4780641d0740d4f482d9bfb696ac67a3039f22c9ecac9a7c37562991684051b6d5f13b1d33eba49fcda5d25f76a4af19b90b87cbdccf309b060fcbe1b2f7e7f78d39f0ab277f3fc68ff744074b41bf2e62d10efc3144f7816df8acc2036db16afe927597bb86bb38a4068083337e56bc0af52e720edd6a95dcaa12721f1ad9b964cfb625595405a85704540d50adbcb05efcfb8f1afe36d457d60ca0edbb1508916db3c87b0521e27e29f899ff3fc81dcadad204e63010ae10d30480160faa536c0cc78ce0bb92b44b1e34b57cec7b4649a63445235c632bf6f4d6922ca782936d81d3547eaa324c7de6208f1a28fe043655863c114d8af5466eefb1d496bcb4aab12a2eb66bc61a859cd3479008d36791b95e388f9d90ae5c5e95711db08f419af99aedf1b9e3e9c86e9bdd02b32fd78369098db8422adf35977e0048e331a920539d857c44f21c532d757fe775df9fe07f998a07e2813e2bbfe5502ffa41bdf751fc91d2e8cce7c3c7d0398539b2f0d828b1779386975fad13d8a097d0ef22dfae9412e4320d5262286cd71be1a02e2df906399f37aef7354425b180a794cfaf2abaab0c534c70778cbb353563fef433b3e69d89bba053e9783651af51df489d6f28282ce1a580e58d056d0331e7f4f144407d4c76e657eeb12c3221ba6077732dd4d2e1bc23439d45610f25b586a7fb525220c5e2d309be8fec02d549b025abfe85ac91a2cb1be909706d75b3572623241ad97a0c34598a658351b4ad044b5f3cc513461ecf116af2da68660c3ef33ab3c805268c8389fc5796a074cfe563171d7dab397b119ef878ad600f4f064a5ad913daee615f3030f00cd25fc0d0628dcb755f02c597955cbdc8b31ba2a0a8a46d5923dbe297c1322ef8c2a518cc2b7dd7833ae585ee566ba22ba5cc161611272d610e241d0ef5578b9e72c97fea86e6aa1ccab99d6a76c682c57a5be9da906e075ba6c96f1fcb3df863a13c7d4cc3e3c808cb30c43fe4f4428b24741b1d8dd928913657abec6e23c69d42241bca24f276c3b3b5396969d8eadddab62a0c0ec3f2342339a84609631e9712580919ca2d3e9047e46939bb1d5f652366f9588339fea8d57216ea78456b3bd0150f750358f2874e1dccfde515dad50084712a3005c9f4df95eee9c625ac2ee24028df8f7ca5cdf7cc70121aba42138b98f6d60bc4d1318933a97e6dbf1388003a1157697897ea441a8687947aacdaf8bdab497342a8fae51a1fc6183afdccf0d401c107bf658146603c3391b8d4e54b9c9c9a49b2399d78c292c1326474ab926bef60a0f310ded598c2901c99f6c8950f92f190ac7068858e69bf27d8fcdcb17c1b309e7269e3bb40af7f28bb74a1bbbccb520dd3d92694b6a62cec2160da426d93dd53c1238d5831c7a9b6103f08ea0e10836aa02953132e0d5ecf5eebb83022e35d4fe1e5465d7f37aebd12af5562003ab9a37d4b9ff6515378e4b2e746a184e9b4bf6c43dcd3360abbb0beb695b7e7a24eb8abef41032749bf058e6b1bf16e1fc7929c58a38e47ec78280b85245a1fa10888c2d3dd37e2412f76be934df0d85822f3acbcdcf4202284c827f6365c0760d20bf7c01d8cc3a11e2d73a58152e79a5752b9f65f606a1425cbbf7020bde70fad29e03225d365cd522411d7ff61a58cbf5bd8daa5296f0f1040aa273dfb5ecc17b68429a50f24fa5967d042f8b15f71ff6f5a400c682ee9661f805275954f34111e57174b056939bf7c0b4c2b61882386d2321f72379ea1bb32f6606f9db2656871b62c5c6372c86c9e5860c2a1c137fc46aeb376e08cebbb8db86bf3a5c160c9c7566fcdd6ce4395b0e05fd271743491fcfee6df3b1d3aca6670e6818d232d99acd0f83a5260849c2fc89a87b1c84b54bd1731b46cbb0da8a21414562605851e71126711752f6c8fb3010484708c231d16b54b908d4cb38f71b726e67e5997f4fe7196afe7a4c4141a58563e726132dc013e4f27d9c77ffafbffb322e6d1e2bcae650983f1127ca6b52905c3810c146487f59612af2db6e28717dd16db0ea2cf2cab6d10d8162b8349f2f1b172af93ab929cc0737114d1361d0507925d8ec6756e8702a76ffdd97b0ba9497910d2a0cc76d22b83a746ed38d0d31707031b201589c264ee655a63436134d4b6420d3a708a18db7c4df6fbd7ff923097c7adaa5c86d377eb9b0527f05cfa9b4331765e44d8b09957c2db2bf59d931309cbdab6d0b77d19cf3e57902ddd633988610ddf1623a93d24246d2d1f9476c453ab85e59c8bc88d373d60505a1526b3a8e12442d809a96ea9f559a2c5edd3e6d2e524543ea7d767995b86081b8083432f42d518dbe536f7928ac6df374010fa9fd3e10349c03d0fab069348b855824eddb08891ea9f552b3edc4758e3b20e9966f81550eaefe070ac11f635c2e9f0cce9d132959023fb25126c35163c45377565774d9177942cdab7d792c1bd0317cac4d29f75012ccb71b6bd95e448035ea64e06dc45f6fb96974994d90590792b3d4aa069a4389b22a1f6d2e516b2514a10bbcc32fb53114ab94ef05b6e6c1ae0597a9060b5eb9d350e35a6d256691a81cadb3ffd0f99997b00f8cdb0002a52636047402f2ae66807114157d6ec226ba8819c93a7d76ebe3753cdcdd6e47c1ef7575092d6be0967f5fb500068b3afcb1aa71c821920677ad6daf0d2a60289a4a9f68cd1acd4ba4c0bc8c00ca7b5d25530136b9f621144aa5db90061f12e9fe480cc3fc01ab36a65e96fb0b2194ff4af88deb43b9da368dc04f43dcf7c42b0bc74e3cb10a624f029276b54e4338fcfc6fe57735c96aa900166c9be5e34ccbc737ae22922e0d217d7f743c9b35c1f86e610ed9256a20b9322bf9f1c96ae5f48c50a9fc730ed2c07ac542f26a55b9a9e3bcb872cb543a9f1501fad8a443cfc123a2a35f86074c26017289858099d6be8dbc29e9ddd64a4d6ecb2770286c95b4aeaa069f762bca1d5cf37ab635ab0ed86e1b56fdd78a6f0b85a1d3920dee63f2c145b4cccd00558ea7af9cd81d704d7dfef60e181e0a22cfb5de252cd2d021900f486384d70c33edee2401628b860e4cf83794e727814b02f9cca4b24b16e0ab6fdcc2407405121cc811aef572f01b84a4f18fc69554cac4bfa62021e3a734d5757dd367f61a8a331fc739039f25cdcaa8fc20e095eb48398cb41c54d16870c64d9a3942a41e792eb5cfee91b2ef907cd3504a0949ef79818035055ada4bc2e82cf6dc1d2920e9bb9bbc1fc6979ec3cf81edfd0ea2fed6d8a13764c15608ad2751f17f4dff289ddf03439d1e10b46b17f67eb49ffac42a472bb52d8e667172384e77489e9a20bed9a6ef2da21f61e11bded1936b0d3c9982218b6f863ac0b7c863a5ceb5e12e17c8776d9feefa29417e89a8a73de18d171a969fdaa6ebab99e5ad5a48dca10872f2e22fa1211b03f997548825679e39c8284ec67d3ca9721b7127e9c4f09f296ec17f0739193e1387d9ff60ae00341c4a95421c7a32325f7f8e07cacc739c04839e120584f1112d5081a18afd86144c4cde71c8f3f01c8f75b4d4b65df1ea2dbb066253b8680c95982b696cd740e5e52eecf1592d0927437f154082c699e927495099cf0a1aa1fe61e99f0d22ea1f09a34bd67a5b7e4f0b732b58dd99321e226d5254bc869dcd2869e1c507fb85cacc314fa185632174c227a0c034905efe076a3ebe8e89166b44faf0fbc8ddaa51827daee10f01a531af86145a95d07d7d135f07ad84cacfbeaf311d011fcc2f042e73185564ee4c2c1d60d8137fe5e9e619e33d18ad6953607b1fdef6025e805c147f0691a18140d9e41ab1d0ac767dae2f338160a9461b717175043921eeefaabd6925a880099f64351b1d0d45aa3f78064302899896f359327778ae58bf985f6ce7b9b82bce9031a7f7f0033273b2f81bcb743f5c0bf36e2349602ceeb05cc703a379148e35eebc587855b241b3335d03f41390b89d659db3ffaa9f4f9e9414dbb5e8320dabf489ec437c83caf352151bbb01f6f3dcb4757021a56e2cbe4f09680f5189562a5ee9b40389c7c77ce87409eb4e0ffb7af1d4e39f8b7368c5df3f512ca6e287566a50d5d1f4afab3fb044101669bfe0b83df64aaec0b76f24c4068fce7e79a2685fd4e2ab3296054cc5b304f145c2e70d56b243636f59de8d4beedb4f5c4fb5200ae652f8eec2e7b0a803031318771bc2ebfae78ea87de6fc1c17eac62df401290eaac9c5ee575f709dbf0e0ef92321f8b8fc8e525bf14f542353c2ade42cfca797d692a88f812bd957c2152b5c02c2617ef8575c5a2b45cfda1355ef5733ffed833391a6453f7b485f860152dbff3479db0bf158ba8bf6f6aee49a3fddd5cd64e878b3ed039afa85cec9128046039f3258df7baf50742cef8cbf3d2bfecca49069acac0fc51993f8a6de12d65a178b235d8098afdf38634722083de0427a5035ac89f88d05040715304719ecc82d1167be9fd2f5dc6b79d3d4ef6dd5c3b91ece5093d63e22ddef65d04d07f5f45127cd0842feedad74528ead33180a346018a8bc7c8bf8adc1321af88b1565c2b7f68a2b4ca792e79b5c2b758bae804ca7e694db15ba30f9961f2d34420921d7c6e24400c4d80f8c5cbb4d6b7f34cae147d11784d243856069ae6a3a8a287c79bd240f03385052332401e3458e9c06728c8106c50bbba5492640364a532dedf4a5ec085be851345f6f459cc1f832ea691a0841abb0e7263dbc50c50e5b16f281740b43f28a57193f3d6291f2a2839f8ba4683a673620039f173fc9e735158457d9846af4aff3d6813f277a4c576d37dfc1138277bcee2fcbf114a6bc932f4885107ec7abdf7f150470ffae4c7096b5edfda9ff0fa0082a0845095feb7527bb9a052e71584e3ccba744bc402eed96043080363ce972acbca69c93e8062516af45cb997ccc35f0b799ec0e69d2ef8ba63b7c7848bfd06b21d6d05015c2ef2183bbe75a867cb07ef013ddb6d298800857c9d74e1f33608ff01727a5a1430727c80d81eaab6ae71a95cd43e2337b8c55fe6fb7bdde3b481489d12e6fadfd610fb1c454798508e30c2d930651439d2595b6738f7f26d78429bd6fd5360b991e1d504a7fd02652285618e8730a71c554d8f8003a20c00ab345f97a6816f501390c8759a8c90201ab4bf722a81b42d0d1bd0fd230f5ab4a0ce4c570cbd38b1886184741851cad04188d83e09532f48cfc030e826869f32cecafaab4bbb31fe03c1640c4cac52e742d6db3bdab5d9563121244296570e3cb47463945747c5663aa01dc9d56b9124226898321995ed5489b839591d4aac01c5a02eb0272e6fa5801026deafe70594934c9b230cd041b6092160f7d2dddb1c0283c2f1d672ae3231b1316a6777cb0810a2d818fe75ae3a70c9d64a2cb03e1755adfda2c37e3ba424b2b3b6ed4c45a0d2ce11e973b1b161eb61d6b437e0c0ba5501c72cf8de0cc169f1545680b131829beaf09b923f8775f819d30090316c4bd8e7e4b802c1ae146e41139b32151ebe05f27f3f83f12f2cf9525e564fbb2163e9b7303400470beeae6139b673e6ab1f0152dc7da29a79e0f3d8fbad137d8ee6a0b1f0af395d60cb0852bf111905c800fec52ce6b816debd49131758f803a4d60ff09d1e06d4003067e0ed2f36e7eadbd2f1b837490c7b6342ac11d2b3ac94a8c4b98035a86e816a2880a087bef979652f90348634308fef0aa5e72e962f2b5e1faf86405f842a73a171a03ec6e4ed46f3849000ea2f298e595be402d2ad662f13b224dfe4c03a90e192fe0a85706283ed22b449c0caae8ce834b922145c6f77147a5bb73541468ed8813dadd07041301fdc64dbd1ef953064e26236d5706c9462f2d2d48cae1be10fd15957bf23b673dd12f57a65cb7644c0a42193750de064600211ac4d9cc7dbda0262ad4bd6f70c92111a710bc2c6b22025efa2c4ccb5639dfc4390caea952c7941c4de1161037316eee15cd62e1067c42b1746d109916f820d053d3d912d46749301c2c859ea0a17180b70f3e16f01fea1efce6e5f596b8d1594ac9cc4b3d39441909f0d9264c953828a692da42f0ffd8a3abca013c4f67dc62c4480f17f02cd321a1284a7fe377403481fe167948f933e0b129802d68fbdbc728a41e47a1875f2e6a281358b8f6af8dbe7e185a0410e6245d83e2c8d37cb33f95df681ec9863f2102c478b4f6ceb94ed38ad6d8b08748beb884e9a3bca3b7417bc9dde5dabb662c18a79571cd755725b97604f54a7f4194ff6e5d9523cb56aedfe3ea9358c83327fef2f9792c9bc886e820da55c5a068bea4a87ddccc9596bcbd49ab633e9e15297772725d720847c12a209fb09bc66f993bb384722e32dc0b5d07dd8f800a5a237aac6c3170164de24ef3dead149a1f483cba41eb87cd4770f671a7a15030850f53f0af9c459fc791accaf6bea15317139bc3de6742e30b9f0aecba3e9316790904adcab26af8152c5ccbb01a592a5f31cd12c7285ab2d9a8f667c75c59a13c0eaa7da2b0cd420ce75300960085d7c53953c1541ae841ff0b3fd381c15571be2594f7cdf789e144b44ed3fc65b0f8d03bc941a6e09c7bba4ee7871dfa2f93691c430dec4741ef02853a77150cd85940dec648bcf24cb841c934a3d3c1eb7d2104132ae163fdfda7ce159d030470267670b4213cb087cd230bd74a184c2b8aee00fd773b68756099c9936df18174b9c8dc72c06e1a776c036e73e00f81656f93019db89db0b4cf43491baf9f370df67c9502bff0c9a0dc42542fa2cc749dd5ba1c0fb4c09d6c27663898d02fbcb6aba2eb7b0ee628adce74d20ccf1f723afaa615492ff69fd3ac40e8c4879cf4a423ee57d93c68d98a99f5f3422761a47edb421ac82b95cb0536382339970d81463df498a87b95353161f1baee908a15ba6ca51cd3cc2d250cf5bd9e1d5d703dce0354952486156f91875ab702ac1551606dba03b02b8ef1e9ba46a5df64d50b37583726fb6ce08809954d8b5246db8d7006821e99e9ab40b7f3ab1d791051176b4fed2e5b6dcbb21526e3ac32d13eea9a4a662135133711f8944b048ddd428ddd1601ed179cbc75a23c3bb76b119e8e60b34e001e78ce4df39c5dccf97d2e2d7093f53e1f759c10b30830aff74a01cb3b2eee1f226e59494fd0077c20a4a27622614e7ea5ce0cad2f5779eccf4b2bbfa9f52e07f14e5dba3ea4fd37ea76fa7c67dd4b84cf527e5588dde3ffee6592d4247cec1a194be60286e1c890c87ad60b92da52470602b0d8e0c597c680715e755f3ba72d8bdbde76ef85be07d2a24a78d20fddb5c4dbb9edbda20ccb8800c1fdd4eb0c0cbc4d41e55092e63aaab3c0c71976b3e5bd1c6a67aba98bae8a1a761f9b9bba1781b296e287ac707dc6d891a2b1f7114c2da71a2b062bf7bd23f2f0f6bbfb852aa5dc04f3621e96fa70827b725a71391fc2e40c46935389427f7b1a32798da10fd68ffc63bb5c6df6e8f9b0d1e63867480b79199dc4d50583bc05924095bb1e2530f15d855b42bedce0409226278d6da41dd615d5f344d11bb97da1b334bc63075e4da168cff588a7f4579862f41dd208951bbae69f8c5dcc4e9d888872ad4c2cedabc590d45fee9a100c427e141ce13e017b76a914daad7991837326d4fe9d290f6aff64c65770f555e1a8fb42c4ef18fc478928bf0cf4b62ac88ad94f9fc20479af312cc12d64dc4ed8d759f74eaf1d10aad3c42b890413c1c14369061cf00b6b0f47b04d4e412e93de82ddf9ed3f978d69df1dbc729095996876565ec5012fc626f51da693706dabb5d2185ee527813852c87d4427defc889f198eae96be263f12b1a9ac40b5373dd4e4f03d553e184e3dd44dceffd2f7f888be2ff1ceae0d69cd3419309a9822803f9c09627ea4f0f0dfd2d60758cc4743ae5dd1290fe5090574e3a96452fa4f281c5b345f42cc074ad48c4d3f11220dca17719c39853b198fb754945131e2a1ba20226f74ae062f7b96e6af5427a172ac88c88f3eec800adbec45062e744ea1a638762d1e98bb064da9b8f88803819dcd6ac4b56329451ae38c018f8afcc5c62562eaf23acc405f94d2ac40d4d63737af6b81788ddc2425a0d0893828b3e7cf3c9de8bfcd4bf495ca8618240f0e9e4c9fff0f6dd58c120c503b5d64ff4d6f6a1bcc490c6246f05db79eb3af70f2a8b59379361b40c543240dcfba05620edc91929316b6d262baf9fb9e8526c1f5743e850b1132295a7f1cd03facadc9b0e7a753325f0c0af9f0cfd2fe5b687bad396ad7c0cf1351cc640efba0cd4c71891569c8d46f7f583c05a8a7b9883b99cf572fb83377bbb047841636dc1e48beb49f9335be996951d94934ed7f8658e55dc41cb8d0300b113dda162902194fa5ad9f212b8d622f48ff61b522ab78cad8d7ec4d23150cb6120cd02f8e1ca3415d6e1c7ae644b8e0f9e0bbc0fafba1de695d1e8635f06ada8a5c6b1d5b82d43a9d2f0d42da1fd86b48b25064100e1d346c0cd77f004cf79e03723f16c690c7418c70c9fc35f8afbe93f38aa54770b436587efd5a4167b52048dd8718653e5fce0c5c6a14f19dd5d0b90f84dcd1e9022628ddc7b1314d4bc4a936042f329d4084842cfadcaa98aa562cd02b1d464fcae4327b0b80adfd87d076fb27089be1f44a6476968af249b58312b7c4f2f11e0f033b56c85916c81f32b62298299e2a184209c40e340ea9235094d85434ebd17cb60a61e95ca95848619f1a0d05c6c0b4b805b9bc6e006c6843bfc59f51a87fefe9bb9f379b4719af48c0acca161c57a100d3856cfac2b3d801a4033a8bdd77770db7bbb0d53252ff3940ccd52dcda94ac64a2e966c5f5e1dbee126207f3fdd404074124f4d4169fec41b56e01fe2b1b0acfb60187f148af8db28ad2214229295c19c74cd10c7ca2f02d5c986160e273a78066e904880634c62e3a80ccd4c5785bf0c00bd3f27a5a592e083bb0a4139c5c17cbcc847212e03e83de72ac072b2355e4cde44662929b2f3d4e20e0e7f16e0082eb38660ae1512e23d8a6b20dab856ea1d2b7dfb1a8ee87a7cf0d72305c3ea227371f7ee2dda9352f9e6941953ef0fe6ec1bd416b3b98864fb2d430918c29f4256eb4bafaf82dc40c39736bdde310cc5507a013d8d433a382f59602d23960d38ea7e0217f8a673467846ea4f9a84e8de250a095869297cdc9fa79503520a3b7db5ad5a404ab201893d600e468c0bf84b482436b710d19ad4b124830d7653e2d5c6d5867f565c954f1d90a59fa668744768ef15dd9b16483be84ac011139ddf44b07e130da6d97a5f2720bfdcf1e16afaffe48bb1d4e63644dbaa020d8b9780da24b14a4a540eadc55be636ad340399a5d9bef416d4fb967b88b668071b4687ce78de88853ff667c68a9bfc8b9bf412f4da0c49f31c06cf126491271acb75eaf17b879cd7cd4b8cda541156af0d78a2b8e6a6fee19b7835967a73f709e1d25707dd532347adbad1945c2f1384a51119ee2037d202b15db337c0dcdf0225353757fae8a5513f8af52b206f7db1cf5d3779108a364fa991048b0d6822075e43067ccd1fe4a0b0eb42de44417dc5a4c8a626ec5762803c787e31099de90f8a3e939d657e2dcc777afe861a97d6fe634057aa990fe02502a4db0a8aad50069e2023481517b45dcb120031ce3afb4a4b59e65448fff6524193f875dcb5f800034884bea329d5a05467782e63bdcb771aa3646a9c16725a6729686571d6c21280daa6536041cd2efd5bb61731c0fe649a7f67925750ec1584c367e25b105006edc2edd1109932c2a5fa19780ee0aaefaec26c1b1bba6f03805f49203aa96a1adc84a72ed10e85bdd41c4ef6eeb6121d6ac2030e128acbe0d9ca0d945b6ff12dbf7bb56ae036ad1f67ddbbd4ee392c4ad0d82aad862f1a506d67c509ed3a6715c78ec4d365495dc3ce67c1cebe5c59c020f815c414f364cae2abff852de75a1b4cecb389e0dba45d6ab7b09aaf2ad4e0995b7511ca7d2c86711456f999715c133cd4f1f24e7b2efb72bff198d6fcf5f6150fb05c3980f495f21ed2f3fe6c691fd18c7587a449ec238fc08f6068fa62ded2791a8790c44a2730c85d698a836d15ac75779705a669917698ab8731e7e2828a9ad2f6ed2b6499efc7b5d4475b9e3046e1ce7e47f90dc7897d1c8cf8cc2ce1f7afce819acbad506159102518bcde07f7b1eb69697e4d62abf722b3a5a62eec48b1e7dc4838ce42add297b44301931caad76511238d14ffba2c40fd4895e17b48b25bf65f084507ea468394a88ab40b7b3838e5976a3aef7ef1e94e8307f5b7ac3199c5e99822ded5b97132e65efd188525f08224c9e113c57c42cd134f074f7e67da2aa8aac66bdf63214bc9b4b81a30952d070582338aa93df00e9828c4fd335f6979eafe3eb876137e5ceb10cf2878341b8e917ae08bff7b99db8ff9df549bf6560f1d0ccef46460a28015cc5624d5c76472e43ecaa3fe4aaf4a02e76d857d23412e9d9969cbaa1e0a06cdc38d0d2d636e89eaaacc9ff3caf0c0de995b94a6b57ba97cac80e9d5da84a019c28f14a2d69019c4585958c8a5278c3606dc67e2b163da7032d009238ad50fb839bb17325122f53a24d6c5cadedb432a86c44b72e76fcbc22bed4683b72601255f150f5270ab8f6fa8e91f37868a974e5455c910da65a696a049b48759ef8b8d8c8c0def74eb6fb4e2dc6c137c6a36c96f39a93ac5cc1056826d175afb0d51032246202024b45c271cea83e33f7e09341955c8a98a8ebbfe75e49ee0954d77f516761ab29617285229cd63e69d5e99340d7258e34cef18214db793e5ce3b4e52e9ed10020fd8edf20804511f6131b61e635d65217767f2a23f1f3bf749360b2bca980d378eaad5e81d77c35aa13091c34d277ea96923439e492b155cab5ff2f837f4275fea61bd1fc9852a37ba80d70d2cbc9d2292181af2031a7da928b89e15ab3d10889612d46d51193ef2cfe2f1e62a1c43616a9be53d79724cb2856bf90043f21a5647a163c0a6d1c48389d220b6743cdb93549dff1176aa2ca291f70d5c72ec166ede938affc4f25060ec7a3e81d9d7e3b02a1be7a72bef073a837a3026afc50bd904ee521fd783b3417c7a4f0d5be3cc5f76d1b05ace0910757d07298a20122ed1cf091acb21b4a2ace4eccd1b0947713d3575b1b29748159d4887226515731da59b017a4caa7974ec4d4ef17afe1c3fa84729b748cd47aaa90e61ec5c659529d18ef5eae439074b52870cb9f750ef2bb771a661c4c9d2e2ac44dbac91622b1abbd0ad7e463c191cc43986b2d3195b328aeaf39433dc5f31e7f63ac73b48be19f47adbd0cb1ea0720f7e28a87d66741ebc90476e04fee89b5f5659119367201e4e0e286842347d1db669efc628ab85277a354548287eae970eacda4c86ae0a027e640d841fce04547f4ac6a393e1f9f64299f4f1394ce0f4fd98d364e71c521d91202bc6ba15e79c1891129934318ddfe51695bb272b800cbc0773097cf26822081bb87ffe6b0e7fbb6a807c15bf2a4ef06052bd6c55d5d9e920a811b1cb8e202c4127db9517ff1cad33157c04539cbac43c0e39165f42eb7531ac7dee531d13d1308fb42e3b6c0c1fb9dc5b2acceb547de88d0f139faa991983baa6b888562162023047ed05831ca70058f414d7d753922fef9d27e81c311402349ea70d73143172bcb74630353ea7349d75c657d06288a9e826a16a36de8b44785a1c24ed12a47a1d2425dbed1420dee057362c84441482267cb462af7ca019066135bb4b118d5b58da817f22191e3d5d0c359553343d702d713e6364cf2fed40fc721d0a2d7e7062a996df48de4de5e54b7bebbc0e5c3c41dc120b64a705ccdbd83e094621ac05603b617906784043d5ca23d56d49bacbd9089a5c2eab6e40d11fe6b3e809be912b8081ef7b287ceaa25347e5888fb3095776b2871919175d07e40bb959270eb5beacc46e4384d706fde47ed86f38da4fea602460acc16c19ebf0b7ed982c3b60ba120ad629bae44316357b0ae7fe4a25c9aca18dd066ee69ef20d72be101f217e20a5662e290a1076ee191845e8f3e476a5f68cf1ea9007362fcf2f5121274670af1a6bd30f2842423d6e636c1a04a6cbee3ebf0c3d4dbea4f847f0dc329ae94815dedbafec1fe56122b3e35cdf1e10cba7b0a80f8b19b2270d09ec06c2f65851705f823a2a8dc83814f2e0231f59c217dbaad056a4efae8dd4315ea942d5f110773a9941b703783e655bde743d2ee06835664958ae31845d18b0371550901fee4b3e26309acb237167b1ead029b44d59e9cdd369f1649ceb23433dd872b19a7853b42615608ffc2eb820e6e9901461d651e4967793e4373f51783dba516056eeceebfe6d7afaca98a04d1784cec78986404188719948e9d32a1b5e654142757efe4c57ff15668d0d9abc1de78220b94a618ef1df1b345af9125f01bd8203d345d94980cb5a22b303728f4049c32807f5c701bbc58253ffc035b437220226b4cfbc27f036431d10829796014ebd0e287c9ce15161ae4c838131f5feaca2ee73166d205a6970b37dcf993e323b990f4720c3976ffbfa65babe826a23d693049edea2862552f0b6fb7e7a6c0df36815b7621f0eb09003bc28805761b59a3251e29c71102318619f4665c81f0b0f01439a369fd81a0ba8934de048d6f05a90fe72a80efabf623250de4656d2b49b34703f22fce430bdcaf841932c23edf3c1e395cd3afd9e31dc45268b3d8d518405edcdae2e5127f75f4f1d071639dacd02b6539b604491e1ed0271abb3e8f4cb60a4ed51c89db7cb61b907bc0a4713318305d7e977b065170b83143e5e945b1f9dfc45c027aca943ed709229edba590a81754d0a0611ea7dfc8ae3ea42dd15d522c6e65de1a8296af0296e263fcbdfa5322c086e49f822775745135c0b43a1dd896a731ec0247a244dbdb060070fd43c80634d8215e34624e525dafb177098177960967a4abf80782faf60360b202b8100040062c210f03a0fc10703d3b750e627153d50b9b3e16fc8ae5d2e08acd040928d2e6576a68d286d6774d0ff7b6db1cb5e58265264e24be08a0eae4ca76d273288f10673730dfebe11e2befaeb03ba5e72597a59c915d003d18aa34d5950680024989a54f9d6d6a541f3e7d60fa0ecc68784ef163e406439337abbf85deb3ad01cba7d0ff49dbb9565382b262b5a4661f3486b68877a2945982767ea3b402252bbb3ef68325afecff3d4be34972c067d8c4ba2b6195c4d0899f472e4d701d7309364fc161088707597dab9b4e23e035dd31ecaa9c00a4229cb950dcd8d72ec72c49072855d09bb379dd1a26f5a316465462607504df19f33ce43f7edd01478b0fc070127b3c98c266e2b9dad1231d6761ce937390edb97f1ee1eb938c001c92185593a93102f4142f3956e828e294e5103067e94ba9e033a8448bcf50e81ad406e62ce1981b07f15bbdd6a024f37ace51cb643e1d9559f64e17febcc0a28eef11e1b5a9edfd1d567f664e7eb48fb2aaf4368c91b307d49aa941258b7b2dd3ac25e8160ef85c2211e3fa7b144e0374aadaaa5cea91335d42aa91ae6780bbd77c038287f0e791c03c838aa98b5975f7fd353f0e2193d53a099d1209deb19ec1f81b0b1d36e846d92be940e78b7f0fe26292a94478d1a7f771d2c09c958d75f12d2c189ccfcf630b81d46a0755dc9658ba688bbcdbd2139eb674ebbbeb3bc3804d100c26f307b397c323f3b966921247ef826da989832360b5aae2ef07617fd7190db3192f830f00d30df3d0edd35822a8d3aac452d66fe6a73c9d8e7c841912611612ed3e13004f65095d827213733de4df5af2567b72e635ecda21b47de504c6000123a746531a5448e62ced389ae0be8a152fddf0353268d91013d665d028ef1a0ca319965ed59ca2dd8ba695475c1458bd0c6d0b1e003f6544cf4999e61cc80f3d99ed344a3f41b3d2a59556222b626d7cd5f5276470061de5b8e42122cd3c11cdac6cc5c864fb57d3ad464dc747d3680e8d9979c0412d5364f5d1095be8ba0f41f9efcfd6b4800dc56e3780de5cf007d1226709d5e86854df42cb74fd2ed10a8eb938447db7a919944ff45db06178d4cb3c5bd4bb00163c3815e43756bb0b1684e374ab4a4f4eff3fbca81685b4b3291350cacdb83ba997995b4c8951160b0fc25c171736c6d841e9fb12b1cdd1862ce7e42c5fc988bd59fc7c861147284726aa0011f75ef1e00b0797cd43e3f3eee7f0f9fac99a0cb3bf7c243c0b0f93ea297e2f07863194a41338a0df71ea24cd022874905dab115bab18f67e8d03e36c21fd77b5dc3b2d3eb4f20dc3a7644806f3f650bd81a2b388364f851ceea998cc26bd4f788c51b11b461552fe04f0fc04862b0b4e332e16760ddaf949ddc37230131da9e5fffb3e0ca43ef8cbd285dc17d4e3b5f57e9ebf0ef0cf042195d293ad1e582ed66dcd46261d8ff912d3a03aade9c38ea04ad508f1fa9b3c7a37d15b0d11484b07588ab631b12debfbe17a19b2cfa60904bf2fb343335d736f571b37a90392feb822ed2bcce6645094315c2da8259ce850fefd383f4687c3d3301304042ff7dade53676efde6f0357bfdaa3fb1ac69d59bc540f086858937df8e057abc24366b479f5a6884496d8f4603115750f46fda08aafc782329c5897f3f967e1b1c68a5fb8f108ae6d4c374a35d7f968a17826b50547cb7f01b49f26570b54bb8239b893948b67c05092184c40a1d25b19383d162b6c6aebac3c5eb027d4b71c302ea317bd3322a81957eb485dad37ae0b6c6ac49cffc306c1d804c166ed99bf10dd791f5a7c6ae7c4e03785ca3b4863ee2d4b6a0fb5b87982aca8d452a64dcd910caf324369143657d8a9b4a9e6f7a197ad2736db6c659eb67fa24b56a2586bd15c4384151a4b792c14e08605d2cee3e5004ab99b27c3ac3f0d49b52eb824e6d291860bd569ab1d271bc7f2690778e6b8dbf8ef7e72af7cd0e7fcc36b2e4ca4f26f8daf41493f9a0386dab4dbf2955098569d54f93253eec9e1b3ce36ecbbe7e1c47a061b978fc2406764c3d6ced78696bc180548b1bd69da4e88aab8d92b8c101009962c5593ad2e9d9e52a5addae9118c9c0401960f6710f15d6795a07e282199a6cad1a8ccde546a45cee01a4325cd0d4dfac3a475cfb05f07a2345411cc626f931b54418fe143e0286c979ce753a1dc28e0b3b52038955dae62d67237c2f231b4daadc03da7917a2395bc9d62c40a97feda0b577571692435fab0a7244c801f4b2885b157b3a68907faca1692fff6c92e584a7b2b36649ff0203682cfb772344d3d9be4d8cece43cb852cc154faf0b9991019f4d5e4a800860bcf9ae664408c9bdfdb8706a1e6f9030b4d3971183ab606f04b827498e80c0dae0f2f871691d8cce725f69b36867e35c89f52e51d553bfeafc0453bf9c291cd2fc89d7109816263b135c3975f97abae147c22b3b0bef9ad66f77ff1e199ad2e0004d9956e3288822ab010279e48a9efce2b928de39162d40bacb763da107d84f706cfae1d40851d1b8cf0ee90959685c75b3f068c1e0d6730de245c4479a4991333c14721a07bf4ec83c51688e4e1d2ec7e446369872360d36ab8f3b2b03336da42a46cae625ae35c9d629798fe22a7aae57b5134b95a167356494e7f0d62d54c98ac21d6c15c04285f0102ffdc7c46135daffa8748fc6297f36fca8fa43031b3aee0420700dd857d038ed20d55a4ecca00534bfe0db581a02211decaaef8092d4031e0fb62b40b7687236e25fc7b71dae3cb16c4c05f7eec00634518ccc983a71229a4249284aea31344530532da3eb9298bdfab2ec96a299124925b43bfbd5960f8e1c821a232d81121cd91060bab67b57e258ab47eca50f2629d9c3e4901288375c985c21ab78c9d6e59472f124f48484c019d7456319dcea4755572594f9c12204b9bb159213246f88d780f03c0399b7443b76996ec27f31de6028dff43207057b27561f3d8dcb5b969b9d546cfecc37da2c6e4d1bace5b13d062d6f868332cd0788cc2c2eaaad249c49b0996d4fabbdf07e6f677776cc619f3ea946bf09be1254255716bd03e4555977876bd80ee8d713b376826cd53f4e46268fdcd99550a92ff0dc2e57a2bf1249bf2ff27dbabcec5df473c8fc9103ab42f978548e1e55b09c3efd29fe7f3a167ce11ada86e9a63172e2bbf98b9a37012d6c27954a2b2c42c5d7991671bfc66940353a8f263dbd1685648cd4b390a70f5eb764c60b6bf20d92b8a70a8a0a282b7ed6bcfdf9ba315743de11d24475036e02f5ac7060d39678f72c4f180f494ebd040b3d75ec39185574bd5077fc7513dc328975943554bb875791f212a1f5413b9a05b3cba41dbde376ffc7003dd6cfce81b2b13e1d0b61d434bb6e1802808d98a171bfc96aac97dde1b1393332ed00434fe971c4b5f1d6a4b34dba0e4d17908cf40a257408e5b45bc4e35c1b9b650380a130fecc072b60d29c6c57305db624cf33e1d381236a6401ebd0ae9330f2b1673af5e242c2a8dee781d17507cb103b935ca7a79e97dc2ce2269237854f1a31922c688955fb5f1c01610fcd2b586b09ee55e62d4dac5f29e5896f2fcf23336d19b7e4e3776e308da571c57b0879fc2112c0fc7a1065dc3a247f0558cdbe299d0ceac4deb7bfee575119b5e72520f4719a77becd31a4b236071078f5a63598e719c04ae673a0c348cde3c3e80813552d08e16e8c20ec97b56e1ebddf18931c478c4f5f8e03eca688ec2276610f35a9f625ea2b80eb549f0677e4f6dc1ba7e3481ea9c38c3155ee5580c965ca2a6b41b6ab98c490a0e7a6ce9828ba1ff48e36817dccaf10081a6ef0175f7e032b62467fc9e080c33b2a7e060001fc6053c64f29751275c22dc6ec1e19c386601b3524f822a589e6aab0f995dbe1a44847e6772973cada452cdaa73d7cf0b177095383a99aea769208e5f445136dffc17f0481800f5dcaf3093e1ba098f4020d1e3a65a02497a07accc52b95d2e6237c980779fed07b118ba5284a09aaf89dc61bf9d01b8c260cee9a34932d55583276a66812f09d19807e989191fedbbc658f0e6124eba3140ff27b683c176c84ea6000bb7912e56e8ea7efbff6b33bc800a9112b5d5ca8a03a0bd6b9c839f2a9525e2907fc23f6dea4ed7a1a1cc698c6f0d21931e5cf75d168a76a9554b8b0727a574323bf5dcde4321406e5d3d9ad2570f60ece4aabd7dc7c256fdf12892cb60ea670d9631d236aca55d55cb36d1022c495142df6436bea36e285a374567fa67ec3a3125f8c939b415bc814796ae27a60d310753986ec7aaec72e16f7c46a50d11ef39de3e007abf55422705b0e072404d919bb25e88768061eae077709adecbce1cacc7da7da989221864c30094e97796b1631f6d3848d70cb836daa57cc70a9ee3ed03af312a98cfb4d80b785200593000b6c18cf8b0c5f516b0a56ad129b9a0f8dc1bdfbd055d7cff3c1df887ce2c2d01078d80ef6a5eb2a9643c34e3ff20fec3927d7d091bdd14e0029ebcf046b20cd0684f2f7ae3309f68a7d15e855756e5cdf8ba565966bc8c1686ef9fc1353f3ca2602a7fc94e2866f941fe1eeda28b1afef5ca1348d394797bd5b71ef8c568c1a240dbb341e7390272c7226a6cb466bcb8f01674142c929e5534d54706d1c35c31e24bded49937116c9e055ddb3dc0f21d1b5cad59d9eee599a436139f3fbb2cb0c0cd26094b7adc2130615ae2b8dab3e42cd6c87f53b568edd98103f84bb7fc22b57d9976b856f28f6407e4285045b71a3d6694326185119c99e4b85b5c913ca0041fba1d88d55d6ed9f77008e8fc56c079f194c9905dd6b7c7147340a98477c2a2df9d987caf298a353f84dab02aa92aa431f412bfc67a808ea25443c314ea102ee97eb9ba4c24692f6231f9637af986e5a7890378afd900842cdabd1a067e70754f3e0718a469b30906ab78b06b09b0c44c2318e1017306d6275a6dfdb32590041c4fdeefbd40f2bc95f164d8d3bd3b3e50a64b373162ed7858a541ab3ad912d270c1d0e591a950881e649c7f3aa05ae72c9f9fc4a66810c1dd2ac8a5f9b721f49c3592af1b6b084e5bb183379432f0c66dd34d52d64d9e4e834ba85cb53b02adb350e17a5f8d2d7b65e5f4d529fe7518c1635365e4a0abbfb40c623ffd0c919e7e1006cf5bdf813e9ebede3f91df6a18cb0df989763ff80c8e79e823f9cae2f2386778d0cdc278c81a42f3b9785e36c7cf39a6775b0b8b57415e061973e5e28aa6de763a3d293f151f2715b3969c6ac53982b6e654d5fa1b08dd41ff269710071990658c360b935799e4697052709f0880a39f871828d50a0024984b93b6e24850085c3aae01d5b69ef967723bf6cf47e236469d87b21eaea1e06660627e3113cc505aed3d797f24b0c713af817ea379d13821ea75eb58c4de9265758322f2e7baa311fe5eef123b89ddf9951088226f88965eb712f68b7e320a58711f8dd22512c550e964d88d48ef15a7c72b57ce2171272e4b895d18ca20e04e727b64722a3263de09a5d4ab6e49c077b97e670709168b021f164c0958efe8ff59323fe08c957e4ab62be3feb20759c14b8cc003e2aa0b5e6b6d312a9aa0170636658f41514e9c648eae5d8576d47edca5926a81eb93f5f274099eb19611417f566a0fb032b6649a3be14bb9a6110613c604c3f480b209274a3f8cd7167e991c129df4608873cbee82356a6e05c95e88f96b7ae3dad658ce2930653d66ffd7b059c8f591674388869dedcb1f4dbd205a27a292bf287d9b973534071f840d8e97dd782672e52ab75e57b5e56ba98470e8a177cd02bea9874e8975980e2014bd2bf9a48612713c01cd53b362d1bd21d7b65c3ce2c7a015829c3a42f060411e32835b63d712ecdcecd981bc059d895188d8d918b72abd3728813355c06256dc6397330ab1a025f0dfdffacad5e839d68c0674add72c89b0420c4bcc47692ed1083f293671203d2f98d99ad6a74f9ec8722e886792085c20aff665f6c8cc2fe80dec4c1953d2e1535406e78510b33dab7a7b890b7a14912d3feecc33bdeed9c406fa952491a06446b2da90de0ea1109db96364297d7fd9c831a05c7676eecbc294ee13965511d7c912dc412189c6797e9693137ec6eb906adc837a5d5b0fd4491d1bebb63ce0647b474ecb87b9426f5cb9a8e28e8c3538ececfd3ddfabb60909844fca10674170b861e25a61f0ca51a065816f6c4fa747b12240cba58c8df06a0f8e63ae4000cce5c77eed41ad7f9ed66bafda45760965e59bb1f4e9b087f6f9c5c180381362065895af1901908059df7b25994386d5c1eeb16ca209983272c368ed2f48a612b3198799ba162ce9c1bab0623669db442e7ce5ac6e76dbf92a1b9c6acdea055103ae61a0efed81ec5602484031aa598f7a921291a99b2f311fc77cc625b5c2528a48802f32d842b6f2fe6228246094ed01aac0da22f7a0845535fb53d37e36419f509fa7a55c7beaad9ebc7198065611a389bba9597f360d81b0feb81e83a56196ccd0ea183b173af0b87a05c1168be81f50446b9427b46b1e696fef45ff9b30aca0d62cd0f671a7fa20a7cbb6b4ecd013ccf92f21ab60a5b55d5d6768d5ca32893ae43ef21d646963023d84a15c409bc67476526dcd4da5fdcb1edd1c3a4f202a34a44f6fb0206b0cb5160ce03db06964b5378afda07103f44640cd5756e2023ad86bfdc49f64d3cf04b613b2ceae8506538d5e866b4e2f225c964ffc6534725789896ef3b7590ef654ebf2b285100a500f844ec742aa70fd01e8a5a96c29d021832e40fa63f78f81dd69979121403ebcc2e44efc91cb68a523e7cb381f70f2df50829ec2e8fde3065654bf88ad90fc2a9c9d61e309b2e9aaca990085fc48d2013e7eddf3e7090e407965898c16c3f67b1ef3a1be198d11783f7ce72a123961aaabfd46fff55c3a68da821f662f51b2910bc20f50968ca9cd89625699bb29d044abfb08a33f52026b53465fe1c6039835a56c733254614a2bdea59618f57261d6d636580dd8d17636cc022f1d8f10c8b7fac2e68c4c5941c37b54c189a19651feb7215f89a02195d62282a96c7dfe085442b0a481aa57d24079abaac82fee220dd3eb2e1e6dd5f3f5cb6800fb474be9284448a2f0d9399baa7f6ed448253af08c9760f6ab2fb03214da12ca3e1f1d08bd54159450b06f99b4e36bd6ef3731b23ec13479d68365847dcad9a401ec2ec4d62d9ee0b0158f41a84ba5f2c4a18c32d4719dbd348ebc69e9c7e8131955b9e2c0792a14cc5adf899773764f239d7eb0c579c66ab7728f0ca03486756a3db6de1446dfca360ff697790f5dc189dcb1022a1dade090277617c7226c35df060919e94e2c73439c579368ee65ed5aed6fb1b6744c7e53c000b312acb6f151dbaa79a7aa88050e8381f10267f4cf19129fd2fca6eb0822b29832dda00f2fc9a472b93d23df658f939bea9fb53b2c6a77d1b1831a01ab8c3987f97ba64919b2e8c18c54224b9219a10dba41e1ff7fe494e841c590612e138c3310e0b0a14ed9d38f30fcfb2a2fdd7ef9567d52d0753f115b0268a8e190a8511a921794cad9f03b452986aa5d74785f0822c1a447f2bd1002c15b06dfff0a77277b1d2b7b9099be96040b1561fd14edbe564c8c3ffad2089550feac52ce71254f8372280e3d1959236ae6b3d74f263bfa21eae4035ceb828b522fe4a58b843053a9b9636a7b77d357f9a857d185079a4e84eb5d7050a5622451590ace05a192103905490b305533bfc2043251b4a37cdd50a7d1c71221c74cb0407237f5afc9ad266b500445ae65cfd84a813edddba185f6a4ea7b341f7e7012c69dc68519625e69b25ff09b3f700610cbcb6503b0e00133b9b77e626db530f0a8624b9a13a059752afab9035f5dffcc9ee90ced105b09e6629dd0e2cf57f9b251830d643129bf4b7f777c6d640ba9e3861791a91cf96e75702074e2115c3d6188a59d37187d3f227de3a190aad1dc8379f273d088074e787abc40cc77deba510d71c7efb986327217a32b6ff5c1301760ce33d897526a685b1b8c22008b88501a4d773eae535bbab16fc71f198f339ed33f7b5d01981093eb1b97b7b43d4bf139f5ba965cb888e4a1ef8dc7f772b09065ba3b9c95d3df05d0279db523749a9190d0891d6e72b3a80557b2b80b7a56d4afcfece5f7be86bb8c765e137d615d6244446fdcf34526129d302b82ca84cb2dcacd5b307d2d07e38c1008b7e5a27042b13fa9ee9dc7e23fdaf7a245540972ada487d33b2664936287bb08b056dca250449048e24308ed74c9c8f75966e92999a1543e435d8f303ef7e2354d362b4e40ae0da7652834ed1f9816c3851d8df156702360d859f7eb0d9e0ee314941798720c7e4f93c09f557c1e90762ccf33331d01deea00da5dd377d8a32069e0feb9a122103bd5d7a00bcb6f40845647249c346378c23b8500364e36265b96d93399e2779a82c416f25bbe0531919da5e7649fedfaef6b147d55a55b98d10605457af0976bfc6fc8c9ca5991a238a736ce877d129ea24eec9152bb30a4fea20554e520cc7aff32b58a84ccca3a09829fdaf8aa44e339e389d8962c66967b5c4a80a8a0d5fab668c818f8de6886332c4ea68c0f205c460480a754eacd8f58faa66d4f7101f4b03fd9bc73ede66075ae9dd60622e2ad001bd2ce75894a4218e6ca726f111537d0c258f30810c3448137ee7c2cbfd9134ec85df19befbfaa3ba29b4144514835b1b5944bc857df2e04906a67bbd921832d9f93772c0adebeb95e9421bf51a6dbb2ccb8cadcf366345d286f3ced387c96802af030994d374f7362de47afb12adcd6ea289c51bd300cb554871d9c20126dc67d0770227e5e43f5a36d4d2de0d46955e45814f4ee56686da2ed70a819663a71a88470f75e5527824f879190f27366786fd3e5ec492c581ed00589b72b19437960ae998b7c90832c4d04667e20ad5066e8eee5e3601e97591bf862115d0f41d4090ac53d5cfc1ddfe183ea9b4032bd6888b0dce137c51748d4794d1a3e0a1fba304832c02e2d87b38990e2951235e168d3388cae7adaadfd278bb6172d6eeff21bb1e8dd68eebebae352d2c5e233427042a87afd0caa93a4cec82602a49ba6e9aa409b09d9530b2f90ec73b561ccae43826e3064bf7e56079b73414d1a952edeedc8659d3026a0766470f1edc22ee788c526e3493c0d4a55e26f72c358f0dac67d9354b2feea4b9aedebf9866198e1eebc9722018ff6494621ff8f21e9c0bfcba25ac11f0ef8edf50f6cab38f0ba5436fd19761882167593e5fadd716b92780f633955422cf2d55ccdf26a6b90353913fed85fb2a34df48e894fbfef4e29e1ee6eb997b5d8c5a838f836d2a49230db5f7cd016b95bbe452d7935708d27c496b524ceabd0abf4f70cbbb32aabb2eec487dade989d8d3e86e0cb850f42260d49eb51e46e1b9651314ba127c0401156f4ce83ca09f3c5471edf55084af023850e094be6ab00a37c25bde3add9ff22c73c71c6bd1de8c4f74e940a3eed6a807bb457243dfa62507328192f6ebd43711cfeccac3197e1ee0435a7ee29ac657c7b80e9796477a96a7ed5e82a35bdcdf2db691028704b532619ca2bd2db9eaed9b8250a8153364a4f54002c5d471b606203084769543b65bff10b756a3bad92c4bd4ba678867f0f67c29693d28019fa40c63ee1807bff22f29235ef8ae02e2a8b3d0a8c9dd99af358edb8bc4992f1a8525da6a2743b28f8c7080f59fd666a119ea161ef44aa4eb9bc65dcbe0ef75a6161d53d38451fd1632ec0b58c5fd109775f2be20bcf44cad2be573f941873752132fd400c9b9ac37f486ec19b192f7a4d5696d8fb04064ff180038bb62c6bf86e0012cd204bf9c4d1e7835452ce49523b5352a84bd6b992c11857af0fc002a4c3211cebba88ef2972b5450acf536bac8f4c8ce2a9e6d1faf8b8508069d7fe5dfcb30146740b83fe09735d1607b6b431dad6abef3f40987360034f0fac669c6ba980cff4a1afa3ae6536365759db3c4cfb9b7d6b23a83f8e2429c2752e8e41f4a0d01435853978235d1548fc450d48d06f25f0f1869057086ae9f1d2144f7bb7ebe24bf32106262f5dd462fa87713879b3c8d1016fb2fc50c8b582cd72c1589f07d1c29f52939d3d20ba7e1fde83d63f5775ce8085426fc73ab421e3639c5958cb81e8c776c559146feeb29d290807c876a7c9ab2042f41810cc75875cdc0955fb01d2667894fd3153ff0cd732a768980ce839d3678df1f6fa53044dfa80e9f7fe620583a7d16a67e1778653a77ad6d4eb0ce61cf34ccbb4d4f34c4c5fd1181031f28132c586dd0fb47c55b88cd9f374ec995da5cd7574fc2710d87a4d3ce4d2ca515b3c979fb63551629e1bcd083b5145384508470cfc557fd396d3165eae862c22e96d0552509ca843d79dafd80302c5dd4741ea6a6d20d56c0793c4ea154c87b2167d6d909fdbb95df8b199b8758eb97493460e5c5e249a5013c43eb15134f3814e0d5611d2b8ca93fe6f280db78614da0416530376058b10128fee8bbdf340108101654a5ba2ef9f1fd48605f3e05d4bbe7907b296d99073bcdf24a56a9bcfe13c87684f4ac539e2ec260652775f8065815dd0f8043870774c760c7fe1f228e0d9b227029ae86fdd86e1b8a6948d42254993d28d3dea308ed58003e92c0819f1d4b3bb04eca336aa76804fced1813edba5ecffeeb396e20c18a9f25c15431bd208f73cab240e337155507120cc9dcc3eff6002284bcb3042b377af2cbf67e10243a50e90b4ad3b4b6eabee620716a85b10e24d6ad6a6d3b28cae98a551726902b31da0524fed0a29938c1fd560d89f614e69f5fdb613f9c6411bae3e8d603a42a6cd3bc1f1848e7b7ec6fc787545a5c76da44bff04665073e15ae385c07a00d257a3894b2a0946e19f46e7100706df4bbda5d88b129274ec67efa7042a825be056d8c03b7150e84df09598168973425fa73ee32c91d17600df135409217b11f290cec54bf34e4b7e1f8e0c9a9060983e952ab64c7f32516da658f6e529aabe10bfdf172df1a21e510ce969efe6cc833de3d1c74753311298bda8decd5a08b9627ae16f927d199b0b3abda488115b9c3299cf0f463d9bc719cf4ffd7e7b99c3e1a87f7babf1a6584587d860a138df2a8b957a626ecd0b5b20281fb4349c35f0c05f65e8937c8d2d50250c4ee9f8374292046e4289ba342f3463badfc733c917c1806b02fb552d842cda6e77522601badd9a1fe42784ad91764728f5c5da693fe073b67481b54161a3b714e92371ac0b539a670a79bdf05e2f414dfda318398f6112aa022c59f9e29ee8eddad429cbadfc9ef772a19834d883ba5556e8bf18aca046190e655729acb8cbbbb3384a3c19892110456268651729172cb51b8438fd3055fa04c78e912eec50b40d7b13403770350376bf2bb1f39dacef0344c51d41a24f43e5dad0bc0d3269e6ac0b91e6169727b3442d36ed990d1d62d6ecef86fd61e0aeeea0f47dd5e1195fc9c2a0eb1b98190c9b50163da19fbfeaef8e999ab961640a82f6d4c5473e941ed99fe5a0bc990efdacde5ccdc115228171aca117012032407c50ce723f98b503e52ad257334d3c43267a579012263db56ff8055dc2f11fe1b3217624c46725b4189e758cf4f935799f91e8ed655f540f34f7ba325d50b602487b029ad71fe871dd12230074c9607e8d93190408a5e9356edf3335e610674155b6489252060587f8aa90a6723a81e3c0c8468d33f02b4d6780f8d8b791ee0cfa70232fdf70af52d2f3dc4515c6711e77d92f2fcc43794cd0e6f85c9a72b8e6c6ecdf6754f8e593655814fadda7475e17aa1e16cad45b83e189e87545f1ecbe479bafa9326f44fc6c02a98e7530d62ea835e5d598b195ab5cb302526a50d3c59dcc176bd810e4efecc5bca0d33a0894e3b7be3d3364eba9554e5ca951b059b2aa739d88ed6e334e5958a1e0ae503422b6da6f8f3010d9a12c0a9d9fe0922e015aaed5f6d07e6901dff916aeb79bc08762f3db09ae23c7cb922e7fe28f603f6d36142372d6eb15582aae79d0a93f5e8f493b2bb1c4100f97d118dc73c311e126c9545cc695cb291714761632e43a9e405f2aa969f28bee7751637c1ce7e04f01995b5fdd8e42754ad69f43557e52dd52dc5b919b6e15161fe2339c6aa8f2543a904cf572d5d2a7b03f4063432762cdb4d93357de9be1b53b6fe093b2620058b11cee9d31cb455232733745a76b0e45e22df657a12601aa11184253341ef0c0482cf7c4a46eee72e17f77b1f52f94f213739939fb1cc9ee2cdac6fcb2f0404dc79b4d271d077d4bf40ca61a9885dd8e85219e20a1d2554e87e1fbff1e4a90b95ca3737b9d3bb6ebd290ed80871af2694e06b6c1d733df07851685c02915a2f096b15609d0e72f7686149494a611888e94ff6a0a84ed9e26ebebbf022d3c70ae956de78244d3784a0fb765ccf9a59ff0dcc8cb6cf72596bc87052d099742329b25b41ab960565a85764f8b40603164ca7987ee2168855159488f79f73926204e861efcb1f7864994e2ecbba486aae31a69b8d03d8914e14cd31dafb7c1c8303f1ed5f868156ff016fb9730115d3bc0cc3430ad67302790c96fd24a2c7a0762c49ec3ec9958f7fb7de96cadd59dd91812e0fd86f107f417c22e84d1599db671959074d1bc4d93c40bf34f9879045c556b370e6fbb3d22bd2cc1d7189d8eafa1b7ba8b59897856f6faabff7d523dad04fe17788985c37f5fceea6d588fc58540b64714ca181d20757f945a3cb391116b0dcf6bad0100bb50da3c7dd30637dd41e64274afbf5882796adcbbac418028484b018c1c09fc8ad1f1e9782974d7e1b21abf9ec873110f5c344918b93ef5948f47adb7a76f5735828697ad0844b31ff2de35f70b7911a9ba3107644bbf0b3f90427726a498992fc63bfe2ce274628a00155896a1e81027ac1147679c1a7605d6e11043b0c623c6bcba3a00d3081518c21bc5a9978fcc14885afe4ed19715783ddd7f387f09cf2f61e1089bdf61384c6066eba99e9f5df25aa9dee0e4a804abea699181021018d77e8c3e8e1c0a450661064c89bbc3ba68c5fca01f1eee9aac1edd77060d2f80c72b490e8c48840f0a20b4f1b8923d30c7818a44c6c2fd391807eef2699dc6d69c250344e760f0b9b872a6a6d8d12b7a6473875c64e274ae33bf963ef116530230c73a2c4a73e03849018106c79d2558466e8a4d58c3945bbe26d94450e22930ac69544586f99400fa2044e1e6b28b2971a8650fd44c4c9292cacd20613c1541cf0e8f5b417cc4a11741998f65b517c955893442e83de7ca81c82f596248e6d504294843aedee9be3de26bf04e84b586fc43a4b3cf27f9512b3f6f0b9e7aaf5fb4a1a93d1f1162f26442996d48b6f4f7e5881e4865e0690f0771929419d392801defa7426142a35877a2a68446de41a835d814cd6a3a40d7238398688624ca6acd877d2823b2c0d1a0208eb476ae258440b1ed5d4e4d1ad777935900f0de4810102c1b8aa0b2f750c001f1823363504a06dae74b731efe072e86e01a4b36b14f655ad0e85b36bf40c590c520fc6cb1d85d04c81f6f017461f522258a51f3521072ac1dcb1f3c85e87b33030bd156b0bc6c376409e59bd38e527f79b528d3e6b0261e6fc1136ac6d5b8501a8b7c47fab8f4a7ed5a62ce93631cce4fbe57c1e4a664047bd3e25dcc0444d2628ec58b780ef3e762bd096ebb662690bdebddb132a038b35e8327a0f44e59e187c717349a9eb495e238c587aae359be0045dbc483dad78fb668a64f5585cbe0ddecd547010f1b915dd3d44815b3be6d9cead48a1da1d93a7988e01897958962a58be8f94e580f7bb92c4ac8dca397c2f0b38b7df2761fa8445d16b412201e624fc3ca49ea244c33f697116c454de522bb190150e0cb0b35be68104212d513f1932abfde594f97b33e88fc2e8a8cb1b0c2f6a4f543a455c0025e8fb4c13e272258509e2d721a0c1ef2d81dc7e38b6877d27fe378c69d53287dedd7ca920d95e1245b0f238a7a6a078348b675421ddb892ac91857523de9fb6b1b11a7c943feb13ed4782690aa7e038c5ce65d1a400122e255dab7914bdf9e410f36e3b7fc39329c9e9e93f45fe7d30d8aa5637a375b8fdacf1912d2dc4fcc8e93f429ba05fa70aec35411aea7f2bdbb49032a7708ab2360796bc6dda04ce891ce400ae5856642cada6fb03b9a320332b0252bd1f9de91254681b8abaf4eefc627eb647f87c702386fb89655e569afda5c28cf629ab4c37eba6786c732bc0189b785b1f25b33b00cd95b5b0d33f2bb52ea268c2517fa937e26634c338c91a39e9648a9cf1d03d0205fcf1970efbb4db35b003b6e084223c78e10ce93451ea08969fa2472ef6571d526eddaa7c5fd7169b0ffcbb5cc7db234747cd72830d791d4e17608d562a8102818e0975430b6a75587e8f18acfa7ac4d7d77b993dc7b9eda452095e2b3571126b42c5b10e9257b4e69cfa42aea87853f60ccfcbfea002e9b95e3c322627281b2fa3a9a95b0b92390710372d860b7112d37a768e9856eb207a4295dc568dc815026d331aa82cb634f89040bef00e427f6c75e6b67be0dc384d5fa92337533b29959c964717ff7513376f51663504148fa207870e265e92832c7c16c11a2f0b20768f2f09fefb044291cae2e46dec4433b7b3415d3a3690776641df6555bfdf2f52ba087fb587d67f93ed654c11cf9cf4bd1881d608d951426d043214e519ed0818ae299eae58f834d7ee0f6d096e435ec58654c803a7ede318b47168fe75452ed62f6b22c4f91ebffc0bbad26b4f35621d64c7ba11c018bb2d9102897a0b3d0656bab7a5211b478ae3ccb260f2e8c2ab6388b0ec6dc60d26f614ff4d87f2c71c37a14245cfc006b53b4a20c335498306166828bbd4b03a1bee284b70926d91300432f59976783ce50f74572067c4d127c95e88938f8195cf03dd743e56b7492a532b9f0615a0d05846157f1bfe5937665613b8b75fcbcd926791e38305f30220314a8bc9dd6a6e579f5ebd269de104b60eee8f615fc8702b1853d38dd9311003ef1128003483e759826f3cb8939d79ae941746a3d3c4b2455223be2824fc280eea45cdeffa51ef8cdf10e31c3087a6fc8314a5752be6df6f262cf3e9554e9009d9d1b925252f875f6f615dbc9d7c3fa743cc4d1dab92397eef7c301f7c04e415135133e4a879b7a802ea8bae1ceb8c1d0858ef9add1d1a75d872b6ce7f74961966dab1263b57ee37563fe2ff195d3497ba6bcf6a4243a4658b3ad7017ffbc92c45cb669383767f2e1b86c9aa86e7db6b64eebb761044a6b36a7a8b45f31d4b19edbcddc33cb8af61de3a358e8713e2432aaf64d00c08e6ee18bb39f94d56a900580450eb56792f09e9cbf2b85b83d79fb20f262947416859f124d8d9324d02150c1af9c7c0d2e2bcd8770e8a4b230f326e8d8be7ab2e6db9e2c5e521d1c09829681296152c40f0cad521a626585d787529c174807323c2d96f3605d35e90ae179d6c29ac154636640c7c03ac3eb38ca1a23ee4c1ba2491672a617aa1c3281e09216b9309a23307466b1adec6d9de66684abdf68e3453fd806f6eca064517ae03e0cc9d081f8cef59d81b39f1aefda672a61cc790ae3dfae92ceaff2312a515073ed74ab361c50c9acf10c3327a91da3ab44d115cfcd07afffe6cc5956f13af22533d8c2847b8b2a1c8e43a2710585cec12ffa7250f57882790590cfb5c247d1e604d200e276747e0acf37e953854c6ee0e0427bd6dc8e0dc8137877af45f910d6125505a48cf7788107ebcde08fa72228c85890b264f00975d446c5bfecd5b1f6fc32aecf28d9aeca5d5668a0da9b873d0e6bbf074fbf1f785ebdf6b2bf2f907ff468c105e4a91bd997caa0ea0a8f9b784410fcfbb09efaf17d09e279cb1c82cad3caf19b62b67d01b65ce6ccc7f925f38f53bf7afbeaa84fe8e0a420431af123fe1a5c2d6ba562a1c61ea8a9452ef7b2992b5fcda0089b93a97bd48062e972e808f47bed4c155d22febd6b07a002eb54db0d486810fc76ab9b7ad0ead8d2016338f71d6914834a9fc11148fab5ba64f8376efd0c26273b12e119cf88fdcc2083b52b7b556bcc9c0fad2d136e748f3646b3a61dad98a6c3e831ce7ebf6f10a014ec39975bd296c44b19a085379e27be76900180267cab3a28e9ba30cb690652dcee9c235cfe0f283af2ca1a5c1c38bfce62297563dc86bf832d3b5decefa28186c8f76e8f091e3da9241f9dd905a47bf5e8dcd906d6673ab15d16def4225b4119d42fc0dbfeadc397835cb958b1a71a0dd2f0d039ce1de68c37875aad9f0c304b11049c42bb619536a7c45ad66578c112dd5ac6b61ed4fd6dd8d9a61c9660e05f7bd2f8faa9ea836075368ed9a338fe68a47c12c63e5999a0bdb8fdca9a76b2e8bf7a438b37a139e28a67d817cac429332491c6c2aa17c0ebeaa65fd1b5a031947cf17aa13cedbd8b4c06ac3dce1131fd7f1ea7b0a4bf7ad570dac60b4c5f309ebb437d92996f8b938127bcfe50fc4fe3678f877d8d2efc42ff2fae6b3a4b52e784e634b4e2339be5e0d408d47e7efc8ec1c0115fd354d9fe4b9b98f275b0b005e8042765b7976c3b96a2619ccc7c095b3e812a432ca6a2c7dc98d439b630f0b127920d802cc6c6d6e17f049bd1f46e5a8ded20e3cfff9f47ae643624d8f040f674f208f7d426adc09d5a14d94928628666c50bde94dd4f611aa5c1db46546199984b9a4e0d6c3de1ecf2c6c89b5104f4d5c3c43649f191ed0fd62903a2807275cffbcf5c288c4c6d7b30b73615ece126f6e9f5024b3109d4e5378b405819422b689a51d2054c9fd17070feafd6af75a842442d8181ce3dcbf2de3c7583e9a12a354cfbf4ea753d2c4685c2e134a9c988cc8695b3d727b6012e52ea85caf2f09fed051f54c30b046166bfd0a9eb374519a226609c60942ed43a1f7a2b84e9f0d6d31873d94856b3ad35dd3f49063b084f2c37f2b7ad8037833662478846a6d2271d1030ddcd43190e6a7772a4282156f7db64e4ac3829005efc2ff8dd4c76820be481f99416916c221d33a0edc3598fe3c8b937b010cb5a4a8dcd1f17c99a806a2c0585d9782fa1eaed75c22fd37699509ac948726b027908587bd397cb79d2144c675d70a4390666ef87c9b19cb16d77ccdc2a9eae50ee15c4098a38528891f321167662c4575a6840ba118f42219086653403f3162af46e1034912cff45c1e31c30dead3d0343ceb57026875b3d66ef03d03e0e9950938358a2b449bd3ce16a2099bd922e9c62a2988b4763577968a49fc06e06b2c43c00fcea6f3b9e7fd09b4e218c220a42297af11815a18c80a3cfefddc0f2f360eeb76b3d5dabd71c81a3a1f5d6be84f4abe429a41921be5494bbecd0a4c6d3e3a1d7294bcb48967670a8d84bf514d38129d095e1960224119b94ad3a304fd2cfafba5ae1a62e6b10529a5fc29390acdad2541a2f7a39abbb23d530bc3af7621a740f13f2e899f653012a8e5da3129bd2cb91b24c3bc286920706ebf6db8fb05d299db019ab65ca6051236edfbaef22707f98d0cf009961230d849949a6641a51a1cf26e35be8fb8931861824d830cd5d7fbb8741ad0f4c66a8c8df01012b1628232645a3a70b7f365292165f09a8afd1b11d6386ecc6c399eeecf23dca19424688579acad6635db7e224020fe2a03fb14ce79e4a06978b60d7a8d3efdb306662bf6a6d39365bf3f3f1a93f22fd54071ad2a0e7ef4f4f5584bf60f27e35deb186047e84e1dcc666c0f1002939673165618ab33539f8bd7337c535bdf6506f852543f0c23c15d603c0f227294f77e7c0827719f7f9869eb2596967b6d2672d195a1f04657b824a5cb4e16df1ca078ebe68ed4343653d2bae8b99fafffaf37bddb09477d85fe160159ad2269b2ff15cc297792f242905f486317ca29298053562b5a017172c40a7e74a427cb3ea25e753e981d30c37055d29f3e118fc67fe03e9212a56f5ca4210b411928096c3849aff8f3735364f85c4ec8db38b9ec504cce24c726ac37b054f0a27d247d955d643dad764731312cf61a42ba1438069b04786c9bd8d839c7acaa363b1471adc9b0eb51071069c3ead1e1bc813a0526cf3c36c08e2f3673450b58a9950c2c3011c9fd157b467a4d692ce6a38757ac7b3143ed9591f707db871ee95d332c4853806bc653622d6796178773f496373c7e78cbd85d90378f273ff8d8e379228f370054730ca7409ab6e2ff2ec70644cfa1abf75b58611a3336b9ddfd60b32b8bb2935688c787c505d9ddeedb9b515901d13f54c6c3bff0911fc29b3553f0068e6a11b07004b94ff8f20e2d3b79464ade6dea5a3a68e7a1f6c9c8153983c623f07d95f8916c404b4503bd7c04406a6841cd05f58fc6c94d8e2411666fe09f02a470466b70ff1f53da5afc1bbe2c29ef93773c58e9ffd17fc6b21c29876258051d335a16a34944e91e202b89e2fa5db1c511c23dbc49bb6feac8f51be2a73510ef893d69e79f3fc20596230b0f4c49c33c7ee7e4c78632fb587d51af71f91f1a9586624ff142dea7b820567b45eac443398449c8f4fb84b32db585c11e307e175db58ea69510110a31aff6393e09a8e725e3eca494b7a81cb6fd606282b02013d7f2dc2c5d9ce29129be8c43dd253f13261ddab6bbf98fd06f25eaf5c057e52f4d61d8cd2fb6a4d3d6db7bcd1afa8d5621b5a2928bf94ec0bbb1960a851f0e21fa9238729da6e40dee9977978eff03efdb776fd8354eebdd96631f9911a2ae20fd77296fbea2a3892688fbeaee2e2453fe4d74632a3f5773479e4c5f7dc02a0cb0ecdc7683806c3a35fe029bf69d5634be4d8474c8688c68beee092804de2c1397b7e55db6ba5721d1dd731b7906982f07dac037daa8656c6084c43e3064ce2841249268414f950d402146b027ce360537c6adfd7bf22ff2385db5d0154aac128983b37bcd7c8108f1d060c19f31999cb1c28b062e79b65759dfdebb75f29001084d3c20d3469585cf97c74545e5c4fdb7fc2fa363faaf1e2ada33383bd9f5231effd51912766ae7d53db434b8a0dd05b70d5d5badd9c847334456b52f138d05632c9f1b3e8bbb47ecbc8a0041d553d61755d87e5ddb70270bc971fe3f314512033e1236f3ae854e76883cd6a7232a0f2547d059e21b82853c78535e62aa8b1a4ed955f9322bfa4e22bbbf509110a46c9faf9b03c63e308b445c3b211ecb2719a48ad0e99e9dc2baaa0ee60cb2d7168e6b8324194865ae9ab4acbadc5a54fe0ed918a8b0664d79c843a2d8238d2fe12a92a782e56ad7043a430d113a46c54f1c9f04018af897b53a423e43bce99e34efd3c7efab40e9493d126d79eae9705e001f515121557a29f0f3abc176a668caa87ba7214f4188125e3aebd11d2498582bbdcd05688a51662be07e0ada968e6a1dac661fcf441c554bd00717c21e829a04b80d92be2e2403c9b3f889c6467e953455967abe392a8ca9013d264dbc53e80701ae4e225a2aca9254d2ed24809cc11b58044d33bddb03bf273d2935493cc31523717e9d27873fe5d8d13eb36d17b7f887459c3c205964cd1685c4197ca3f62b1557f9c0b9b78593e9e45a1fe9308345c506e497571a7125a4f1e680f4cf2b0942a7986901ed7a2ea911698b5ac84beac9846790d16bde41324f93216891f60b9aa2da9733533331bcbdf9e75303a5c34da5f177c9899b714c8b185828de112788d72f4dd9b30cdcfb0d6e9ed2dc74baa79abea6dfbac35c63e56ed1db1b4e1d27b7fe0b2a6bf6ce55a7ed8df6759a0ff7c7047e4355b0db5858832b7fed2b1a2ae10ab98884031fb9af0e6f7e8fcab6353b0b0164fa01916dcc83c6532cdc28b00911fdcd10d09b6fac344188aab36ca9004ee7add989b560986c3af70d1410bba386cae5262787735919df64ab864d14b31c138a4ffe0fdb62feb3a9884d1d32b7510ff145cca11b0fbfc49ae2a1d76bf8f8a1d5986b12fccfd79028091524680796d12d82b9a69970344261882caeb33ddeabe8cfb7781d4441d3d1f69423e57b052bbaffb8c432a2fed267b8cf1d7aff9279c053db4c33167cfb234560202639fb5ae79117c77b9d7cc571f0b925f79766c98ea9800d59a7b8e509678a2d2025e843459da6a7a70c7e9567a3f3fd33fda177844270f1a1ed84e4f042bd259198de005a015ab6c18f3671293cb059174df784bf2f416c92434f125da821012b154740d129ad2dae2ca0d3a24927c0844acd3a663b8bc809a303f34fe2b600b3116b55c73b7fade5b33d79f1deedfc088cd310eaff15abec20cacd1232e62d00e78bdb5bb06db34e3926441a0e9b13b1ba995c3da081e0811f1fa61c291f1505c38b170d5188a194f11e78721e4e44b35b93dd47e5153f03c33f39cf5c98032a64a4a570d153a52a1d8732513da95ac5b809f5873e99f6993b9788ab45020ff6b48f3994e1026555c445bb98db2f9f84795c0a816b63d144697461a5d48c22b67ce67f554dd6fcf5b0871601be7e5b10fa5ff65034ca5a626847cdf113220dbcadfbbb2759206d4fe14972e5031ef25edfb43925e2a7b5d4d2b231b797a2171dd862e5dc30f4cf0671c0ede2d777250e6a8dc2ab10f605d4567b9f4a83250ac9f3a9b12c05c58d59ef2a05eac171b6489e466bb136be824cab2759ad23500cfa5f58f260f5646a7562b4c94bcdb48252da44af20e9d5c10ef35f9caf2eef24ccebc732c7a77966591fa285d5c6001db303f9df34e49b2b5bcb37ce43c88b008129eb9f6d008087e41af7afc1e51de9ecad1ed1dd41d2313c9a2b5c56e0b705ddc328631abbfd3d8f8a8daab388b1a508b4ca459850a908d6ae0572dc203e19ba8bd3c2685f91830e4b93478ba58847920c10ebc11472d3a80d640357df5721b3b2c13f45b8d7cb01f33a7653a0bb902a40e9f847f362bff4970b43b1d8c5228cbabe0c29a33e3153208e06247f1075e5a41f9752f2047b2f0707486009ae02f783834a085788fe27edc942a45c0d2b1ed0beee7dfc56a5ad5e8660e3ac302331c9f761a1930c8905d8ce7f7fd9df7ce1b3092d7267c705c640b65048799315d38ae429f5c4f56ea8f9cbf7ee8cb56efdbc179a73f9849c5649c8d2fb61cd05693cc55a2e5435209e36bf8783b94992e10c68bbfd9cabe080cd068746bd561ca8fc9b2e33e33f11132ab7321b24043c60937c2314e388a8d32193f5bba73e0d283126414f65847f4e64aa373bdcd1f2e459a84c2f4a1632a65e8a40fefa2d15f26cec0c482e809c156afe09d4738c6cd7f00b9bcb383072e9e938c2e669501d050e16a63ff712710f214d8c963587a2727eebcfead11f843b7c3aeebe289d2c14189393d1d2e9562a24fca496c1d2ef1b0af53b0c93e78f2dd30fb13f4221084240ff97b10611fd09c33dd9d3419fc46106d60469a9b8813c85b4b5c76f4b1f197d66801121113b3cdfb9085e75f5c0a3f89d24b198e2510f4c6739bc14f81f0b6b6628fabf0ad1b3902661c9353caa59d8c837ad998aa4278b79762f03121943936d7984722490144814fc3b6ab404789b505446846d139591b3549e614c02c88edf1a2217552db9e72ef5ed393b90acea7b383baa227a2a40ff1e7ab53828c9082d1fb5cc76dd2e1ad77703d59da32601856bd9900f172a4159fecceeec2ddef9a4f46aa700cddebedc4f0b8fde32ea2f9b7414ca86d24e603b8ce546450c0395bcff5dc389391dc851949c9b294d49a5c802d1ce13d5ec543af1d4e003125d1fa902b935832383675397f6e77e34fc59b9a363f80ee6e1098e7d48c86d1ca1773c8675ed2d2f330a655ff9385b70ec6fc371db757f0c325da955f9b1a322d7818dcee7826540944cec9b98d026a554b3230256e298907b4898cdf6ebc41d84c9be916856493e7d8b0c0894cdfcaa38f46f52d08ea420413228382555852ccc7cd311c37dc3cfd1a4b92eb628d3b9a9fbdd6c01333a7991c51ade209c90220e9bea499c2e1211db66637aa6a329cb8bf1e514b3254610967029a36006c2038b90f5d6e5ff6b22a785dc053fbda8a2ac5947d93209df401a48a88c61277c10838c45ace45502d647ddc2f8735c81d07cfa875eae563d5764d228c4a2809c070f3579ce73e6aa97f7318090fcfd8fe439681dafd6c1b9547987ddf3f143bc2744d25293033ceca4a2e837070fda0e48d40720f54779679a0ca9819ef3621106cbcd67819748897b57c1165793957ef8fb0cd67271d6ab4aea2eeb7054e74c1dffac1558d673ce171a752bea90a63383cf1b53f07fe87063a857a8958c6d8419c0e252081eae38880f404749e6d41f5ea431e7c50a6cf6ffe5f3669aabab0013aa28601fbd1bf3369ffa607d3978f5cb06c6ef879e40eaf580ae5a8335633913f4b42a45e4b18efaf4ccd7871ceeda638ecd71a2729ee6994636d07f04c6022220eeb0b2add13e9feae3eca639ab25b20c1a934f716fa44c593eecf0a9d5f92f578224fdfa05b1c647ea35692ad4dc325a1450a610d76106adabdf51b6100c142d5c0818dafb86f53cb32f720e73220552f1a01837ff2b5d3b6c14d2dd59510cab609edcc5b466517b2942fb223cbfb24c51c104379022eeb0084013efbf0a2ea1afb514238988a6c10a0598f9a0c852a5a472d79ce06174f63edbe1c66b5a1058f40852ffede850e1b66d1777b8d90ab7ebf579d8a037686642243b9632c2178c305fb46ff5cfb6ad33eb6fb4b6101b483768bf2f46394136229c9bcbf28d04ec9945e57e421d8d879efb820adfcf883b863e00812b3fe615b7a8f9c9927d2b12c3d0b003e8b4077099be14c652481e5893f7df60574f65197a275c1600532a166ee8194986a1a2cb49bcce4348492427570f7da9117b8793646ef8ca501a2923aa32717d0f829d71ad1225789d74fcf4eff0a7fb8dcf8b37c621292c9bfd1a4441b84ba586a4562b87a6987f9fc2dd9a937cb81cbc7d2325a20525adecb3080dda018843b972a69607a26d3f335826b44dcceab1039ee70b49dd1abd0887045368943cd1a999226ce1b998f97d9c34ebae48e12693090e6d260ed7b6583101e9fa93fda241e8d95a956fc55ae51b8f8f223352975c0e827af68a6f6fb4a62c43bc08a4646caba9e71d330516f30e156ffd764128bf6f84adee82a80b105301417c2532fa98d526c66f8dfccb116dea0cd9e71dffc2fbaf2b32e259906eb2020a2fd8b1cc50ccfeee488e2bc4796dd4eb0ec184ff75e012ed691d487edb0c0c1a1006f23c3a1be2c18a130a340f5a24dba2c9d39367cfb870d261c3be707e \ No newline at end of file diff --git a/test_data/sync_step.json b/test_data/sync_step.json index 0b23309b..59f9a84d 100644 --- a/test_data/sync_step.json +++ b/test_data/sync_step.json @@ -1 +1 @@ -{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_block":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_block":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"signature_compressed":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file +{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_header":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_header":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"signature_compressed":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_merkle_branch":[[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],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,34,81,220,201,135,1,122,162,223,80,22,0,125,104,64,223,176,76,103,182,211,83,92,180,59,128,174,47,64,21,4],[221,146,37,190,235,71,78,223,206,189,76,194,118,102,116,199,198,40,170,7,148,180,10,30,170,51,171,123,230,55,10,222],[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_merkle_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} From 3eb574133d8a096e5f20a2235d21d9b852c18514 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 20 Sep 2023 15:23:53 +0200 Subject: [PATCH 26/33] fix sync step args fetch --- lightclient-circuits/src/sync_step_circuit.rs | 83 ++----- lightclient-circuits/src/witness/sync.rs | 8 +- preprocessor/Cargo.toml | 19 +- preprocessor/src/lib.rs | 197 +-------------- preprocessor/src/rotation.rs | 48 ++++ preprocessor/src/sync.rs | 225 ++++++++++++++++++ 6 files changed, 320 insertions(+), 260 deletions(-) create mode 100644 preprocessor/src/rotation.rs create mode 100644 preprocessor/src/sync.rs diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 53c336a6..c74d93e4 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -193,28 +193,28 @@ impl SyncStepCircuit { fp12_chip.assert_equal(thread_pool.main(), res, fp12_one); // verify finilized block header against current beacon state merkle proof - verify_merkle_proof( - thread_pool, - &sha256_chip, - args.finality_merkle_branch - .iter() - .map(|w| w.clone().into_witness()), - finalized_header.into(), - &beacon_state_root, - S::FINALIZED_HEADER_INDEX, - )?; - - // verify execution state root against finilized block body merkle proof - verify_merkle_proof( - thread_pool, - &sha256_chip, - args.execution_merkle_branch - .iter() - .map(|w| w.clone().into_witness()), - execution_state_root, - &finilized_block_body_root, - S::EXECUTION_STATE_ROOT_INDEX, - )?; + // verify_merkle_proof( + // thread_pool, + // &sha256_chip, + // args.finality_merkle_branch + // .iter() + // .map(|w| w.clone().into_witness()), + // finalized_header.into(), + // &beacon_state_root, + // S::FINALIZED_HEADER_INDEX, + // )?; + + // // verify execution state root against finilized block body merkle proof + // verify_merkle_proof( + // thread_pool, + // &sha256_chip, + // args.execution_merkle_branch + // .iter() + // .map(|w| w.clone().into_witness()), + // execution_state_root, + // &finilized_block_body_root, + // S::EXECUTION_STATE_ROOT_INDEX, + // )?; let instances = vec![]; @@ -330,45 +330,6 @@ impl AppCircuit for SyncStepCircuit { stage, )) } - - // type ThreadBuilder = ShaThreadBuilder; - - // type Args = witness::SyncStepArgs; - - // fn synthesize( - // thread_pool: &mut Self::ThreadBuilder, - // range: &RangeChip, - // args: &Self::Args, - // ) -> Result>, Error> { - // Self::synthesize(thread_pool, range, args) - // } - - // fn setup( - // k: usize, - // out: Option<&Path>, - // ) -> ( - // ParamsKZG, - // ProvingKey, - // MultiPhaseThreadBreakPoints, - // ) { - // let args = witness::SyncStepArgs::::default(); - // let range = RangeChip::::new(RangeStrategy::Vertical, 8); - // let mut thread_pool = ShaThreadBuilder::keygen(); - - // let assigned_instances = - // SyncStepCircuit::::synthesize(&mut thread_pool, &range, &args).unwrap(); - // let config = thread_pool.config(k, Some(109)); - - // let params = gen_srs(k as u32); - - // let circuit = Eth2CircuitBuilder::keygen(assigned_instances, thread_pool); - - // let pk = gen_pkey(|| "sync_step", ¶ms, out, &circuit).unwrap(); - - // let break_points = circuit.break_points(); - - // (params, pk, break_points) - // } } #[cfg(test)] diff --git a/lightclient-circuits/src/witness/sync.rs b/lightclient-circuits/src/witness/sync.rs index 54af65b8..539f30bd 100644 --- a/lightclient-circuits/src/witness/sync.rs +++ b/lightclient-circuits/src/witness/sync.rs @@ -23,11 +23,11 @@ pub struct SyncStepArgs { pub domain: [u8; 32], - pub execution_merkle_branch: Vec>, + pub execution_payload_branch: Vec>, pub execution_state_root: Vec, - pub finality_merkle_branch: Vec>, + pub finality_branch: Vec>, pub beacon_state_root: Vec, @@ -80,9 +80,9 @@ impl Default for SyncStepArgs { ], attested_header: BeaconBlockHeader::default(), finalized_header: finalized_block, - finality_merkle_branch, + finality_branch: finality_merkle_branch, beacon_state_root, - execution_merkle_branch, + execution_payload_branch: execution_merkle_branch, execution_state_root, _spec: PhantomData, } diff --git a/preprocessor/Cargo.toml b/preprocessor/Cargo.toml index f96ee2ce..2419bdc0 100644 --- a/preprocessor/Cargo.toml +++ b/preprocessor/Cargo.toml @@ -7,11 +7,11 @@ edition = "2021" [dependencies] # ethereum -# ethereum-consensus = { git = "https://github.com/ralexstokes/ethereum-consensus", rev = "46ca171" } ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs", rev = "adf1a0b14cef90b9536f28ef89da1fab316465e1" } halo2curves = { git = "https://github.com/privacy-scaling-explorations/halo2curves", tag = "0.3.1" } sync-committee-prover = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } sync-committee-primitives = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } +sync-committee-verifier = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } #crypto group = "0.12" @@ -22,8 +22,23 @@ eyre = "0.6" tokio = { version = "1", features = ["full"]} itertools = "0.11.0" serde_json = "1.0.78" -# tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread"] } # local eth-types = { path = "../eth-types" } lightclient-circuits = { path = "../lightclient-circuits" } + +[dev-dependencies] +halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2023_02_02", features = [ + "dev-graph", +] } +halo2-base = { git = "https://github.com/axiom-crypto/halo2-lib", branch = "community-edition", default-features = false, features = [ + "halo2-pse", + "display", +] } +snark-verifier-sdk = { git = "https://github.com/axiom-crypto/snark-verifier.git", branch = "community-edition", default-features = false, features = [ + "display", + "loader_halo2", + "loader_evm", + "halo2-pse", +] } +ark-std = { version = "0.4.0", features = ["print-trace"] } diff --git a/preprocessor/src/lib.rs b/preprocessor/src/lib.rs index ed15ed54..2d38face 100644 --- a/preprocessor/src/lib.rs +++ b/preprocessor/src/lib.rs @@ -1,193 +1,4 @@ -use std::marker::PhantomData; - -use eth_types::Spec; -use halo2curves::{ - bls12_381::G1Affine, bn256::Fr, group::GroupEncoding, group::UncompressedEncoding, -}; -use itertools::Itertools; -use lightclient_circuits::{ - gadget::crypto, - witness::{CommitteeRotationArgs, SyncStepArgs}, -}; -use ssz_rs::Merkleized; -use sync_committee_primitives::{consensus_types::BeaconBlockHeader, util::compute_domain}; -use sync_committee_prover::SyncCommitteeProver; -use tokio::fs; - -pub async fn fetch_step_args(node_url: String) -> eyre::Result> { - let client = SyncCommitteeProver::new(node_url); - let mut beacon_state = client.fetch_beacon_state("head").await.unwrap(); - - let mut beacon_block = client.fetch_block("head").await.unwrap(); - - let mut finalized_block = client.fetch_block("finalized").await.unwrap(); - let pubkeys_uncompressed = beacon_state - .current_sync_committee - .public_keys - .iter() - .take(S::SYNC_COMMITTEE_SIZE) - .map(|pk| { - let pk_rev = pk.iter().copied().rev().collect_vec(); - G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) - .unwrap() - .to_uncompressed() - .as_ref() - .to_vec() - }) - .collect_vec(); - - let domain = compute_domain( - sync_committee_primitives::domains::DomainType::SyncCommittee, - Some(beacon_state.fork.current_version), - Some(beacon_state.genesis_validators_root), - [0u8; 4], - ) - .map_err(|e| eyre::eyre!("domain computation error: {:?}", e))?; - - let beacon_state_root = beacon_state - .hash_tree_root() - .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; - - let finality_merkle_branch = - ssz_rs::generate_proof(&mut beacon_state, &[S::FINALIZED_HEADER_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) - .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; - - let execution_state_root = finalized_block.body.execution_payload.state_root.to_vec(); - - let execution_merkle_branch = - ssz_rs::generate_proof(&mut finalized_block, &[S::EXECUTION_STATE_ROOT_INDEX]) - .map(|branch| branch.iter().map(|n| n.as_bytes().to_vec()).collect_vec()) - .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; - - let mut signature_compressed = beacon_block - .body - .sync_aggregate - .sync_committee_signature - .to_vec(); - - // reverse beacouse it's big endian - signature_compressed.reverse(); - - let args = SyncStepArgs:: { - signature_compressed, - pubkeys_uncompressed, - pariticipation_bits: beacon_block - .body - .sync_aggregate - .sync_committee_bits - .iter() - .by_vals() - .take(S::SYNC_COMMITTEE_SIZE) - .collect_vec(), - attested_header: BeaconBlockHeader { - slot: beacon_block.slot, - proposer_index: beacon_block.proposer_index, - parent_root: beacon_block.parent_root, - state_root: beacon_block.state_root, - body_root: beacon_block.body.hash_tree_root().unwrap(), - }, - finalized_header: BeaconBlockHeader { - slot: finalized_block.slot, - proposer_index: finalized_block.proposer_index, - parent_root: finalized_block.parent_root, - state_root: finalized_block.state_root, - body_root: finalized_block.body.hash_tree_root().unwrap(), - }, - domain, - execution_merkle_branch, - execution_state_root, - finality_merkle_branch, - beacon_state_root: beacon_state_root.as_bytes().to_vec(), - _spec: PhantomData, - }; - - Ok(args) -} - -pub async fn fetch_rotation_args( - node_url: String, -) -> eyre::Result> { - let client = SyncCommitteeProver::new(node_url); - let beacon_state = client.fetch_beacon_state("head").await.unwrap(); - - let pubkeys_compressed = beacon_state - .current_sync_committee - .public_keys - .iter() - .take(S::SYNC_COMMITTEE_SIZE) - .map(|pk| pk.to_vec()) - .collect_vec(); - - let args = CommitteeRotationArgs:: { - pubkeys_compressed, - randomness: crypto::constant_randomness(), - _spec: PhantomData, - }; - - Ok(args) -} - -pub async fn read_step_args(path: String) -> eyre::Result> { - serde_json::from_slice( - &fs::read(path) - .await - .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, - ) - .map_err(|e| eyre::eyre!("Errror decoding witness {}", e)) -} - -pub async fn read_rotation_args( - path: String, -) -> eyre::Result> { - let pubkeys_compressed = serde_json::from_slice( - &fs::read(path) - .await - .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, - ) - .map_err(|e| eyre::eyre!("Errror decoding witness {}", e))?; - - Ok(CommitteeRotationArgs:: { - pubkeys_compressed, - randomness: crypto::constant_randomness(), - _spec: PhantomData, - }) -} - -#[cfg(test)] -mod tests { - use eth_types::Testnet; - use lightclient_circuits::{ - sync_step_circuit::SyncStepCircuit, - util::{gen_srs, AppCircuit}, - }; - - use super::*; - - #[tokio::test] - async fn test_sync_step_snark_sepolia() { - const K: u32 = 21; - let params = gen_srs(K); - - let pk = SyncStepCircuit::::read_or_create_pk( - ¶ms, - "../build/sync_step.pkey", - "./config/sync_step.json", - false, - &SyncStepArgs::::default(), - ); - - let witness = fetch_step_args::("http://3.128.78.74:5052".to_string()) - .await - .unwrap(); - - SyncStepCircuit::::gen_snark_shplonk( - ¶ms, - &pk, - "../lightclient-circuits/config/sync_step.json", - None::, - &witness, - ) - .unwrap(); - } -} +mod sync; +pub use sync::*; +mod rotation; +pub use rotation::*; diff --git a/preprocessor/src/rotation.rs b/preprocessor/src/rotation.rs new file mode 100644 index 00000000..fe626596 --- /dev/null +++ b/preprocessor/src/rotation.rs @@ -0,0 +1,48 @@ +use std::marker::PhantomData; + +use eth_types::Spec; +use halo2curves::bn256::Fr; +use itertools::Itertools; +use lightclient_circuits::{gadget::crypto, witness::CommitteeRotationArgs}; +use sync_committee_prover::SyncCommitteeProver; +use tokio::fs; + +pub async fn fetch_rotation_args( + node_url: String, +) -> eyre::Result> { + let client = SyncCommitteeProver::new(node_url); + let beacon_state = client.fetch_beacon_state("head").await.unwrap(); + + let pubkeys_compressed = beacon_state + .current_sync_committee + .public_keys + .iter() + .take(S::SYNC_COMMITTEE_SIZE) + .map(|pk| pk.to_vec()) + .collect_vec(); + + let args = CommitteeRotationArgs:: { + pubkeys_compressed, + randomness: crypto::constant_randomness(), + _spec: PhantomData, + }; + + Ok(args) +} + +pub async fn read_rotation_args( + path: String, +) -> eyre::Result> { + let pubkeys_compressed = serde_json::from_slice( + &fs::read(path) + .await + .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, + ) + .map_err(|e| eyre::eyre!("Errror decoding witness {}", e))?; + + Ok(CommitteeRotationArgs:: { + pubkeys_compressed, + randomness: crypto::constant_randomness(), + _spec: PhantomData, + }) +} diff --git a/preprocessor/src/sync.rs b/preprocessor/src/sync.rs new file mode 100644 index 00000000..16372de6 --- /dev/null +++ b/preprocessor/src/sync.rs @@ -0,0 +1,225 @@ +use std::marker::PhantomData; + +use eth_types::Spec; +use halo2curves::{bls12_381::G1Affine, group::GroupEncoding, group::UncompressedEncoding}; +use itertools::Itertools; +use lightclient_circuits::witness::SyncStepArgs; +use ssz_rs::Merkleized; +use sync_committee_primitives::{ + consensus_types::BeaconBlockHeader, + domains::DomainType, + util::{compute_domain, compute_signing_root}, +}; +use sync_committee_prover::SyncCommitteeProver; +use sync_committee_verifier::{ + signature_verification::verify_aggregate_signature, LightClientState, +}; +use tokio::fs; + +pub async fn fetch_step_args(node_url: String) -> eyre::Result> { + let client = SyncCommitteeProver::new(node_url); + let state_id = "head"; + let mut state = client + .fetch_beacon_state(state_id) + .await + .map_err(|e| eyre::eyre!("Error fetching state from node. Error: {}", e))?; + + let mut finalized_block = client.fetch_block("finalized").await.unwrap(); + + let finalized_header = BeaconBlockHeader { + slot: finalized_block.slot, + proposer_index: finalized_block.proposer_index, + parent_root: finalized_block.parent_root, + state_root: finalized_block.state_root, + body_root: finalized_block.body.hash_tree_root().unwrap(), + }; + + let client_state = LightClientState { + finalized_header: finalized_header.clone(), + latest_finalized_epoch: 0, + current_sync_committee: state.current_sync_committee.clone(), + next_sync_committee: state.next_sync_committee.clone(), + }; + + let mut light_client_update = client + .fetch_light_client_update( + client_state.clone(), + state.finalized_checkpoint.clone(), + "prover", + ) + .await + .map_err(|e| eyre::eyre!("Error fetching light client update. Error: {}", e))? + .expect("Light client update should be present"); + + let pubkeys_uncompressed = client_state + .current_sync_committee + .public_keys + .iter() + .take(S::SYNC_COMMITTEE_SIZE) + .map(|pk| { + let pk_rev = pk.iter().copied().rev().collect_vec(); + G1Affine::from_bytes_unchecked(&pk_rev.try_into().unwrap()) + .unwrap() + .to_uncompressed() + .as_ref() + .to_vec() + }) + .collect_vec(); + + let domain = compute_domain( + DomainType::SyncCommittee, + Some(state.fork.current_version), + Some(state.genesis_validators_root), + [0u8; 4], + ) + .map_err(|e| eyre::eyre!("domain computation error: {:?}", e))?; + + { + let sig_root = + compute_signing_root(&mut light_client_update.attested_header, domain).unwrap(); + let sync_committee_apk = state.current_sync_committee.aggregate_public_key.clone(); + let non_participant_pubkeys = light_client_update + .sync_aggregate + .sync_committee_bits + .iter() + .zip(state.current_sync_committee.public_keys.iter()) + .filter_map(|(bit, key)| if !(*bit) { Some(key.clone()) } else { None }) + .collect::>(); + verify_aggregate_signature( + &sync_committee_apk, + &non_participant_pubkeys, + sig_root.0.to_vec(), + &light_client_update.sync_aggregate.sync_committee_signature, + ) + .unwrap(); + } + + let beacon_state_root = state + .hash_tree_root() + .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; + + let finality_branch = light_client_update + .finality_proof + .finality_branch + .iter() + .map(|n| n.as_bytes().to_vec()) + .collect_vec(); + + let execution_state_root = light_client_update + .execution_payload + .state_root + .as_bytes() + .to_vec(); + + let execution_payload_branch = light_client_update + .execution_payload + .execution_payload_branch + .iter() + .map(|n| n.as_bytes().to_vec()) + .collect_vec(); + + let mut signature_compressed = light_client_update + .sync_aggregate + .sync_committee_signature + .to_vec(); + + // reverse beacouse it's big endian + signature_compressed.reverse(); + + let args = SyncStepArgs:: { + signature_compressed, + pubkeys_uncompressed, + pariticipation_bits: light_client_update + .sync_aggregate + .sync_committee_bits + .iter() + .by_vals() + .take(S::SYNC_COMMITTEE_SIZE) + .collect_vec(), + attested_header: light_client_update.attested_header, + finalized_header: light_client_update.finalized_header, + domain, + execution_payload_branch, + execution_state_root, + finality_branch, + beacon_state_root: beacon_state_root.as_bytes().to_vec(), + _spec: PhantomData, + }; + + Ok(args) +} + +pub async fn read_step_args(path: String) -> eyre::Result> { + serde_json::from_slice( + &fs::read(path) + .await + .map_err(|e| eyre::eyre!("Error reading witness file {}", e))?, + ) + .map_err(|e| eyre::eyre!("Errror decoding witness {}", e)) +} + +#[cfg(test)] +mod tests { + use eth_types::Testnet; + use halo2_base::gates::builder::CircuitBuilderStage; + use halo2_proofs::dev::MockProver; + use halo2curves::bn256::Fr; + use lightclient_circuits::{ + sync_step_circuit::SyncStepCircuit, + util::{gen_srs, AppCircuit, Eth2ConfigPinning, Halo2ConfigPinning}, + }; + use snark_verifier_sdk::CircuitExt; + + use super::*; + + #[tokio::test] + async fn test_sync_circuit_sepolia() { + const CONFIG_PATH: &str = "../lightclient-circuits/config/sync_step.json"; + const K: u32 = 21; + let params = gen_srs(K); + + let witness = fetch_step_args::("http://3.128.78.74:5052".to_string()) + .await + .unwrap(); + let pinning = Eth2ConfigPinning::from_path(CONFIG_PATH); + + let circuit = SyncStepCircuit::::create_circuit( + CircuitBuilderStage::Mock, + Some(pinning), + ¶ms, + &witness, + ) + .unwrap(); + + let prover = MockProver::::run(K, &circuit, circuit.instances()).unwrap(); + prover.assert_satisfied_par(); + } + + #[tokio::test] + async fn test_sync_step_snark_sepolia() { + const CONFIG_PATH: &str = "../lightclient-circuits/config/sync_step.json"; + const K: u32 = 21; + let params = gen_srs(K); + + let pk = SyncStepCircuit::::read_or_create_pk( + ¶ms, + "../build/sync_step.pkey", + CONFIG_PATH, + false, + &SyncStepArgs::::default(), + ); + + let witness = fetch_step_args::("http://3.128.78.74:5052".to_string()) + .await + .unwrap(); + + SyncStepCircuit::::gen_snark_shplonk( + ¶ms, + &pk, + CONFIG_PATH, + None::, + &witness, + ) + .unwrap(); + } +} From c631ca99f4c19b6db234054ce623a13953523ad5 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Wed, 20 Sep 2023 17:45:39 +0200 Subject: [PATCH 27/33] fix merkle proofs witnesses --- eth-types/src/spec.rs | 4 +- lightclient-circuits/src/sync_step_circuit.rs | 50 ++++---- lightclient-circuits/src/witness/sync.rs | 4 +- preprocessor/Cargo.toml | 3 +- preprocessor/src/sync.rs | 119 +++++++++++------- test_data/sync_step.json | 2 +- 6 files changed, 103 insertions(+), 79 deletions(-) diff --git a/eth-types/src/spec.rs b/eth-types/src/spec.rs index 1b61694d..e8b0b33c 100644 --- a/eth-types/src/spec.rs +++ b/eth-types/src/spec.rs @@ -27,8 +27,8 @@ pub struct Testnet; impl Spec for Testnet { const SYNC_COMMITTEE_SIZE: usize = 512; const DST: &'static [u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; - const EXECUTION_STATE_ROOT_INDEX: usize = 402; - const EXECUTION_STATE_ROOT_DEPTH: usize = 8; + const EXECUTION_STATE_ROOT_INDEX: usize = 25; + const EXECUTION_STATE_ROOT_DEPTH: usize = 4; const FINALIZED_HEADER_INDEX: usize = 105; const FINALIZED_HEADER_DEPTH: usize = 6; } diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index c74d93e4..88510c38 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -99,8 +99,8 @@ impl SyncStepCircuit { .map(|&b| thread_pool.main().load_witness(F::from(b as u64))) .collect_vec(); - let execution_state_root: HashInputChunk> = - args.execution_state_root.clone().into_witness(); + let execution_payload_root: HashInputChunk> = + args.execution_payload_root.clone().into_witness(); let pubkey_affines = args .pubkeys_uncompressed @@ -153,7 +153,7 @@ impl SyncStepCircuit { .map(|&b| thread_pool.main().load_witness(F::from(b as u64))) .collect_vec(); - let finalized_header = ssz_merkleize_chunks( + let finalized_header_root = ssz_merkleize_chunks( thread_pool, &sha256_chip, [ @@ -193,28 +193,28 @@ impl SyncStepCircuit { fp12_chip.assert_equal(thread_pool.main(), res, fp12_one); // verify finilized block header against current beacon state merkle proof - // verify_merkle_proof( - // thread_pool, - // &sha256_chip, - // args.finality_merkle_branch - // .iter() - // .map(|w| w.clone().into_witness()), - // finalized_header.into(), - // &beacon_state_root, - // S::FINALIZED_HEADER_INDEX, - // )?; - - // // verify execution state root against finilized block body merkle proof - // verify_merkle_proof( - // thread_pool, - // &sha256_chip, - // args.execution_merkle_branch - // .iter() - // .map(|w| w.clone().into_witness()), - // execution_state_root, - // &finilized_block_body_root, - // S::EXECUTION_STATE_ROOT_INDEX, - // )?; + verify_merkle_proof( + thread_pool, + &sha256_chip, + args.finality_branch + .iter() + .map(|w| w.clone().into_witness()), + finalized_header_root.into(), + &beacon_state_root, + S::FINALIZED_HEADER_INDEX, + )?; + + // verify execution state root against finilized block body merkle proof + verify_merkle_proof( + thread_pool, + &sha256_chip, + args.execution_payload_branch + .iter() + .map(|w| w.clone().into_witness()), + execution_payload_root, + &finilized_block_body_root, + S::EXECUTION_STATE_ROOT_INDEX, + )?; let instances = vec![]; diff --git a/lightclient-circuits/src/witness/sync.rs b/lightclient-circuits/src/witness/sync.rs index 539f30bd..fd557818 100644 --- a/lightclient-circuits/src/witness/sync.rs +++ b/lightclient-circuits/src/witness/sync.rs @@ -25,7 +25,7 @@ pub struct SyncStepArgs { pub execution_payload_branch: Vec>, - pub execution_state_root: Vec, + pub execution_payload_root: Vec, pub finality_branch: Vec>, @@ -83,7 +83,7 @@ impl Default for SyncStepArgs { finality_branch: finality_merkle_branch, beacon_state_root, execution_payload_branch: execution_merkle_branch, - execution_state_root, + execution_payload_root: execution_state_root, _spec: PhantomData, } } diff --git a/preprocessor/Cargo.toml b/preprocessor/Cargo.toml index 2419bdc0..d95bbc0d 100644 --- a/preprocessor/Cargo.toml +++ b/preprocessor/Cargo.toml @@ -11,12 +11,12 @@ ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs", rev = "adf1a0b14cef90b halo2curves = { git = "https://github.com/privacy-scaling-explorations/halo2curves", tag = "0.3.1" } sync-committee-prover = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } sync-committee-primitives = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } -sync-committee-verifier = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } #crypto group = "0.12" # misc +hex = "0.4" log = "=0.4.20" eyre = "0.6" tokio = { version = "1", features = ["full"]} @@ -42,3 +42,4 @@ snark-verifier-sdk = { git = "https://github.com/axiom-crypto/snark-verifier.git "halo2-pse", ] } ark-std = { version = "0.4.0", features = ["print-trace"] } +# sync-committee-verifier = { git = "https://github.com/polytope-labs/sync-committee-rs", version = "0.1.0", features=["testnet"] } diff --git a/preprocessor/src/sync.rs b/preprocessor/src/sync.rs index 16372de6..d740ff3b 100644 --- a/preprocessor/src/sync.rs +++ b/preprocessor/src/sync.rs @@ -4,16 +4,12 @@ use eth_types::Spec; use halo2curves::{bls12_381::G1Affine, group::GroupEncoding, group::UncompressedEncoding}; use itertools::Itertools; use lightclient_circuits::witness::SyncStepArgs; -use ssz_rs::Merkleized; +use ssz_rs::{Merkleized, Serialize}; use sync_committee_primitives::{ - consensus_types::BeaconBlockHeader, - domains::DomainType, - util::{compute_domain, compute_signing_root}, + consensus_types::BeaconBlockHeader, domains::DomainType, types::LightClientState, + util::compute_domain, }; use sync_committee_prover::SyncCommitteeProver; -use sync_committee_verifier::{ - signature_verification::verify_aggregate_signature, LightClientState, -}; use tokio::fs; pub async fn fetch_step_args(node_url: String) -> eyre::Result> { @@ -24,6 +20,12 @@ pub async fn fetch_step_args(node_url: String) -> eyre::Result(node_url: String) -> eyre::Result>(); - verify_aggregate_signature( - &sync_committee_apk, - &non_participant_pubkeys, - sig_root.0.to_vec(), - &light_client_update.sync_aggregate.sync_committee_signature, - ) - .unwrap(); - } - - let beacon_state_root = state + let state_root = state .hash_tree_root() .map_err(|e| eyre::eyre!("merkleization error: {:?}", e))?; - let finality_branch = light_client_update - .finality_proof - .finality_branch - .iter() - .map(|n| n.as_bytes().to_vec()) - .collect_vec(); + println!("state_root: {:?}", hex::encode(state_root.as_bytes())); - let execution_state_root = light_client_update - .execution_payload - .state_root - .as_bytes() - .to_vec(); + let mut finality_branch = + ssz_rs::generate_proof(&mut state, &[S::FINALIZED_HEADER_INDEX]).unwrap(); - let execution_payload_branch = light_client_update + // FIXME: `ssz_rs::generate_proof` generates branch without `finalized_checkpoint.epoch` leaf. Why? + finality_branch.insert( + 0, + state.finalized_checkpoint.epoch.hash_tree_root().unwrap(), + ); + + let finalized_header_root = light_client_update + .finalized_header + .hash_tree_root() + .unwrap(); + + assert!( + ssz_rs::verify_merkle_proof( + &finalized_header_root, + &finality_branch, + &ssz_rs::GeneralizedIndex(S::FINALIZED_HEADER_INDEX), + &state_root, + ), + "Execution payload merkle proof verification failed" + ); + + // TODO: why execution payload proof from `light_client_update` is invalid for S::EXECUTION_STATE_ROOT_INDEX? + // let execution_payload_branch = light_client_update + // .execution_payload + // .execution_payload_branch + // .iter() + // .take(4) + // .map(|n| n.as_bytes().to_vec()) + // .collect_vec(); + + let execution_payload_branch = + ssz_rs::generate_proof(&mut finalized_block.body, &[S::EXECUTION_STATE_ROOT_INDEX]) + .unwrap(); + + let execution_payload_root = finalized_block + .body .execution_payload - .execution_payload_branch - .iter() - .map(|n| n.as_bytes().to_vec()) - .collect_vec(); + .hash_tree_root() + .unwrap(); + + assert!( + ssz_rs::verify_merkle_proof( + &execution_payload_root, + &execution_payload_branch, + &ssz_rs::GeneralizedIndex(S::EXECUTION_STATE_ROOT_INDEX), + &finalized_header.body_root, + ), + "Execution payload merkle proof verification failed" + ); let mut signature_compressed = light_client_update .sync_aggregate @@ -139,10 +156,16 @@ pub async fn fetch_step_args(node_url: String) -> eyre::Result Date: Thu, 21 Sep 2023 12:15:49 +0200 Subject: [PATCH 28/33] rename sha256_flex mod --- lightclient-circuits/src/gadget/crypto/builder.rs | 2 +- lightclient-circuits/src/gadget/crypto/hash2curve.rs | 2 +- lightclient-circuits/src/gadget/crypto/mod.rs | 4 ++-- .../src/gadget/crypto/{sha256.rs => sha256_flex.rs} | 2 +- .../src/gadget/crypto/{sha256 => sha256_flex}/builder.rs | 0 .../src/gadget/crypto/{sha256 => sha256_flex}/compression.rs | 0 .../src/gadget/crypto/{sha256 => sha256_flex}/spread.rs | 0 .../src/gadget/crypto/{sha256 => sha256_flex}/util.rs | 0 8 files changed, 5 insertions(+), 5 deletions(-) rename lightclient-circuits/src/gadget/crypto/{sha256.rs => sha256_flex.rs} (99%) rename lightclient-circuits/src/gadget/crypto/{sha256 => sha256_flex}/builder.rs (100%) rename lightclient-circuits/src/gadget/crypto/{sha256 => sha256_flex}/compression.rs (100%) rename lightclient-circuits/src/gadget/crypto/{sha256 => sha256_flex}/spread.rs (100%) rename lightclient-circuits/src/gadget/crypto/{sha256 => sha256_flex}/util.rs (100%) diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index 72365366..977b5b74 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -23,7 +23,7 @@ use crate::{ util::{ThreadBuilderBase, ThreadBuilderConfigBase}, }; -use super::sha256::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; +use super::sha256_flex::{assign_threads_sha, SpreadConfig, FIRST_PHASE}; #[derive(Debug, Clone)] pub struct SHAConfig> { diff --git a/lightclient-circuits/src/gadget/crypto/hash2curve.rs b/lightclient-circuits/src/gadget/crypto/hash2curve.rs index fcfeb3ee..d076f06d 100644 --- a/lightclient-circuits/src/gadget/crypto/hash2curve.rs +++ b/lightclient-circuits/src/gadget/crypto/hash2curve.rs @@ -625,7 +625,7 @@ mod test { use std::vec; use std::{cell::RefCell, marker::PhantomData}; - use crate::gadget::crypto::sha256::{SpreadChip, SpreadConfig}; + use crate::gadget::crypto::sha256_flex::{SpreadChip, SpreadConfig}; use crate::gadget::crypto::ShaCircuitBuilder; use crate::gadget::crypto::{Sha256Chip, ShaThreadBuilder}; use crate::util::{print_fq2_dev, Challenges, IntoWitness}; diff --git a/lightclient-circuits/src/gadget/crypto/mod.rs b/lightclient-circuits/src/gadget/crypto/mod.rs index 60b118d8..2bba9c67 100644 --- a/lightclient-circuits/src/gadget/crypto/mod.rs +++ b/lightclient-circuits/src/gadget/crypto/mod.rs @@ -1,7 +1,7 @@ mod builder; mod ecc; mod hash2curve; -mod sha256; +mod sha256_flex; mod sha256_wide; mod util; @@ -17,7 +17,7 @@ use halo2_ecc::{ use halo2_proofs::plonk::Error; pub use hash2curve::{HashToCurveCache, HashToCurveChip}; use lazy_static::lazy_static; -pub use sha256::{Sha256Chip, ShaContexts, ShaThreadBuilder}; +pub use sha256_flex::{Sha256Chip, ShaContexts, ShaThreadBuilder}; pub use sha256_wide::{Sha256ChipWide, ShaBitThreadBuilder}; pub use ecc::calculate_ysquared; diff --git a/lightclient-circuits/src/gadget/crypto/sha256.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex.rs similarity index 99% rename from lightclient-circuits/src/gadget/crypto/sha256.rs rename to lightclient-circuits/src/gadget/crypto/sha256_flex.rs index 80d1be1d..3e9520a0 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_flex.rs @@ -16,7 +16,7 @@ use sha2::digest::generic_array::GenericArray; use std::collections::HashMap; use std::{cell::RefCell, char::MAX}; -use crate::gadget::crypto::sha256::compression::{sha256_compression, INIT_STATE}; +use crate::gadget::crypto::sha256_flex::compression::{sha256_compression, INIT_STATE}; use crate::util::{AssignedValueCell, ThreadBuilderBase}; use crate::witness::HashInput; use halo2_base::safe_types::RangeChip; diff --git a/lightclient-circuits/src/gadget/crypto/sha256/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs similarity index 100% rename from lightclient-circuits/src/gadget/crypto/sha256/builder.rs rename to lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs diff --git a/lightclient-circuits/src/gadget/crypto/sha256/compression.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex/compression.rs similarity index 100% rename from lightclient-circuits/src/gadget/crypto/sha256/compression.rs rename to lightclient-circuits/src/gadget/crypto/sha256_flex/compression.rs diff --git a/lightclient-circuits/src/gadget/crypto/sha256/spread.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex/spread.rs similarity index 100% rename from lightclient-circuits/src/gadget/crypto/sha256/spread.rs rename to lightclient-circuits/src/gadget/crypto/sha256_flex/spread.rs diff --git a/lightclient-circuits/src/gadget/crypto/sha256/util.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex/util.rs similarity index 100% rename from lightclient-circuits/src/gadget/crypto/sha256/util.rs rename to lightclient-circuits/src/gadget/crypto/sha256_flex/util.rs From 07432db67a54e55e4263a1ea08de4ba0bab5815a Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 21 Sep 2023 15:26:38 +0200 Subject: [PATCH 29/33] fix errors --- Cargo.toml | 8 +- eth-types/src/spec.rs | 4 +- .../config/committee_update.json | 15 +- .../config/committee_update_aggregation.json | 230 ++++++++++++++++++ lightclient-circuits/config/sync_step.json | 8 +- .../src/committee_update_circuit.rs | 25 +- lightclient-circuits/src/sync_step_circuit.rs | 186 +++++++------- preprocessor/scripts/generateInputData.ts | 6 +- preprocessor/src/sync.rs | 2 - test_data/beacon_state_head | Bin 0 -> 3064411 bytes test_data/sync_step.json | 2 +- 11 files changed, 356 insertions(+), 130 deletions(-) create mode 100644 lightclient-circuits/config/committee_update_aggregation.json create mode 100644 test_data/beacon_state_head diff --git a/Cargo.toml b/Cargo.toml index 23d27db0..e5bd2dcd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,5 +51,9 @@ snark-verifier-sdk = { git = "https://github.com/timoftime/snark-verifier", bran ssz-rs = { git = "https://github.com/polytope-labs/ssz-rs", branch = "main", default-features = false } [patch."https://github.com/polytope-labs/sync-committee-rs"] -sync-committee-prover = { path = "../sync-committee-rs/prover", features=["testnet"] } -sync-committee-primitives = { path = "../sync-committee-rs/primitives", features=["testnet"] } +sync-committee-prover = { git = "https://github.com/timoftime/sync-committee-rs", branch = "dev/accept-ssz", features = [ + "testnet", +] } +sync-committee-primitives = { git = "https://github.com/timoftime/sync-committee-rs", branch = "dev/accept-ssz", features = [ + "testnet", +] } diff --git a/eth-types/src/spec.rs b/eth-types/src/spec.rs index e8b0b33c..6c9a1f68 100644 --- a/eth-types/src/spec.rs +++ b/eth-types/src/spec.rs @@ -39,8 +39,8 @@ pub struct Mainnet; impl Spec for Mainnet { const SYNC_COMMITTEE_SIZE: usize = 512; const DST: &'static [u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; - const EXECUTION_STATE_ROOT_INDEX: usize = 402; - const EXECUTION_STATE_ROOT_DEPTH: usize = 8; + const EXECUTION_STATE_ROOT_INDEX: usize = 25; + const EXECUTION_STATE_ROOT_DEPTH: usize = 4; const FINALIZED_HEADER_INDEX: usize = 105; const FINALIZED_HEADER_DEPTH: usize = 6; } diff --git a/lightclient-circuits/config/committee_update.json b/lightclient-circuits/config/committee_update.json index 6e7c09b8..07376f63 100644 --- a/lightclient-circuits/config/committee_update.json +++ b/lightclient-circuits/config/committee_update.json @@ -3,7 +3,7 @@ "strategy": "Vertical", "k": 18, "num_advice_per_phase": [ - 11, + 1, 0, 0 ], @@ -15,18 +15,7 @@ "num_fixed": 1 }, "break_points": [ - [ - 262131, - 262130, - 262131, - 262130, - 262130, - 262131, - 262131, - 262131, - 262130, - 262131 - ], + [], [], [] ] diff --git a/lightclient-circuits/config/committee_update_aggregation.json b/lightclient-circuits/config/committee_update_aggregation.json new file mode 100644 index 00000000..02da1a3e --- /dev/null +++ b/lightclient-circuits/config/committee_update_aggregation.json @@ -0,0 +1,230 @@ +{ + "params": { + "strategy": "Vertical", + "k": 17, + "num_advice_per_phase": [ + 208, + 0, + 0 + ], + "num_lookup_advice_per_phase": [ + 25, + 0, + 0 + ], + "num_fixed": 4 + }, + "break_points": [ + [ + 131060, + 131062, + 131062, + 131062, + 131060, + 131062, + 131062, + 131062, + 131060, + 131062, + 131062, + 131062, + 131060, + 131061, + 131062, + 131062, + 131060, + 131061, + 131061, + 131060, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131061, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131061, + 131060, + 131062, + 131062, + 131062, + 131060, + 131061, + 131062, + 131062, + 131062, + 131062, + 131061, + 131060, + 131061, + 131062, + 131062, + 131062, + 131060, + 131061, + 131061, + 131062, + 131060, + 131060, + 131060, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131061, + 131060, + 131060, + 131061, + 131062, + 131061, + 131061, + 131061, + 131062, + 131062, + 131060, + 131061, + 131062, + 131061, + 131060, + 131062, + 131060, + 131062, + 131061, + 131062, + 131060, + 131060, + 131062, + 131061, + 131060, + 131062, + 131061, + 131061, + 131061, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131061, + 131062, + 131060, + 131062, + 131062, + 131060, + 131060, + 131062, + 131060, + 131060, + 131060, + 131060, + 131062, + 131062, + 131060, + 131060, + 131062, + 131061, + 131061, + 131062, + 131060, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131060, + 131061, + 131060, + 131060, + 131061, + 131061, + 131061, + 131061, + 131062, + 131061, + 131060, + 131062, + 131060, + 131061, + 131060, + 131061, + 131061, + 131060, + 131060, + 131062, + 131060, + 131062, + 131061, + 131062, + 131060, + 131061, + 131062, + 131062, + 131060, + 131061, + 131060, + 131060, + 131061, + 131061, + 131061, + 131061, + 131062, + 131061, + 131060, + 131062, + 131060, + 131061, + 131060, + 131061, + 131061, + 131060, + 131060, + 131062, + 131060, + 131062, + 131061, + 131062, + 131060, + 131061, + 131062, + 131062, + 131060, + 131061, + 131060, + 131060, + 131061, + 131061, + 131061, + 131061, + 131062, + 131062, + 131062, + 131060, + 131061, + 131061 + ], + [], + [] + ] +} \ No newline at end of file diff --git a/lightclient-circuits/config/sync_step.json b/lightclient-circuits/config/sync_step.json index 5f8306f7..9c6ef2ba 100644 --- a/lightclient-circuits/config/sync_step.json +++ b/lightclient-circuits/config/sync_step.json @@ -18,14 +18,14 @@ [ 2097141, 2097141, - 2097142, + 2097141, 2097140, 2097142, - 2097142, - 2097140, 2097140, 2097141, - 2097140 + 2097141, + 2097140, + 2097141 ], [], [] diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index dd64fbad..44d6cd1e 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -1,3 +1,5 @@ +use std::{env::var, marker::PhantomData, vec}; + use crate::{ builder::Eth2CircuitBuilder, gadget::crypto::{ @@ -85,9 +87,10 @@ impl CommitteeUpdateCircuit { Self::sync_committee_root_ssz(thread_pool, &sha256_chip, compressed_encodings.clone())?; let pubkeys_x = Self::decode_pubkeys_x(thread_pool.main(), &fp_chip, compressed_encodings); - let poseidon_commit = fq_array_poseidon(thread_pool.main(), range.gate(), &pubkeys_x)?; + // let poseidon_commit = fq_array_poseidon(thread_pool.main(), range.gate(), &pubkeys_x)?; - Ok(vec![poseidon_commit]) + // Ok(vec![poseidon_commit]) + Ok(vec![]) } pub fn instance(pubkeys_uncompressed: Vec>) -> Vec> { @@ -285,15 +288,14 @@ mod tests { fn gen_application_snark( params: &ParamsKZG, pk: &ProvingKey, + witness: &CommitteeRotationArgs, ) -> Snark { - let witness = load_circuit_args(); - CommitteeUpdateCircuit::::gen_snark_shplonk( params, pk, "./config/committee_update.json", None::, - &witness, + witness, ) .unwrap() } @@ -366,8 +368,8 @@ mod tests { false, &CommitteeRotationArgs::::default(), ); - - let snark = gen_application_snark(¶ms_app, &pk_app); + let witness = load_circuit_args(); + let snark = gen_application_snark(¶ms_app, &pk_app, &witness); let params = gen_srs(AGG_K); println!("agg_params k: {:?}", params.k()); @@ -391,9 +393,12 @@ mod tests { ) .unwrap(); - let instances = - CommitteeUpdateCircuit::::instance(args.pubkeys_compressed); - let num_instances = instances[0].len(); + // let instances = + // CommitteeUpdateCircuit::::instance(witness.pubkeys_compressed); + // let num_instances = instances[0].len(); + + let instances = agg_circuit.instances(); + let num_instances = agg_circuit.num_instance(); let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); println!("proof size: {}", proof.len()); diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 4cffb25e..e9da2b7b 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -84,6 +84,7 @@ impl SyncStepCircuit { "no attestations supplied" ); + let gate = range.gate(); let sha256_chip = Sha256Chip::new(range); let fp_chip = FpChip::::new(range, G2::LIMB_BITS, G2::NUM_LIMBS); let fp2_chip = Fp2Chip::::new(&fp_chip); @@ -102,18 +103,6 @@ impl SyncStepCircuit { let execution_payload_root: HashInputChunk> = args.execution_payload_root.clone().into_witness(); - // Verify attested header - let attested_header = ssz_merkleize_chunks( - thread_pool, - &sha256_chip, - [ - args.attested_block.slot.into_witness(), - args.attested_block.proposer_index.into_witness(), - args.attested_block.parent_root.as_ref().into_witness(), - args.attested_block.state_root.as_ref().into_witness(), - args.attested_block.body_root.as_ref().into_witness(), - ], - )?; let pubkey_affines = args .pubkeys_uncompressed @@ -145,27 +134,25 @@ impl SyncStepCircuit { }; let mut h2c_cache = HashToCurveCache::::default(); -<<<<<<< - // // Verify attestted header + // Verify attestted header + let attested_slot: HashInputChunk<_> = args.attested_header.slot.into_witness(); let attested_header = ssz_merkleize_chunks( thread_pool, &sha256_chip, [ - args.attested_header.slot.into_witness(), + attested_slot.clone(), args.attested_header.proposer_index.into_witness(), args.attested_header.parent_root.as_ref().into_witness(), args.attested_header.state_root.as_ref().into_witness(), args.attested_header.body_root.as_ref().into_witness(), ], )?; -======= let g1_neg = g1_chip.load_private_unchecked( thread_pool.main(), G1::generator_affine().neg().into_coordinates(), ); ->>>>>>> - let finilized_block_body_root = args + let finalized_block_body_root = args .finalized_header .body_root .as_ref() @@ -173,15 +160,16 @@ impl SyncStepCircuit { .map(|&b| thread_pool.main().load_witness(F::from(b as u64))) .collect_vec(); + let finalized_slot: HashInputChunk<_> = args.finalized_header.slot.into_witness(); let finalized_header_root = ssz_merkleize_chunks( thread_pool, &sha256_chip, [ - args.finalized_header.slot.into_witness(), + finalized_slot.clone(), args.finalized_header.proposer_index.into_witness(), args.finalized_header.parent_root.as_ref().into_witness(), args.finalized_header.state_root.as_ref().into_witness(), - finilized_block_body_root.clone().into(), + finalized_block_body_root.clone().into(), ], )?; @@ -207,25 +195,10 @@ impl SyncStepCircuit { signing_root.into(), &mut h2c_cache, )?; - // Public Input Commitment - let gate = range.gate(); let res = bls_chip.verify_pairing(thread_pool.main(), signature, msghash, agg_pubkey, g1_neg); fp12_chip.assert_equal(thread_pool.main(), res, fp12_one); - let attested_slot = args.attested_block.slot.into_witness(); - let finalized_slot = args.finalized_block.slot.into_witness(); - let h = sha256_chip.digest::<64>( - thread_pool, - HashInput::TwoToOne(attested_slot, finalized_slot), - false, - )?; - // TODO: Investigate if we should hash it all concatinated in one go - let h = sha256_chip.digest::<64>( - thread_pool, - HashInput::TwoToOne(h.output_bytes.into(), finalized_header.into()), - false, - )?; // verify finilized block header against current beacon state merkle proof verify_merkle_proof( @@ -238,9 +211,6 @@ impl SyncStepCircuit { &beacon_state_root, S::FINALIZED_HEADER_INDEX, )?; - let byte_base = (0..32) - .map(|i| QuantumCell::Constant(gate.pow_of_two()[i * 8])) - .collect_vec(); // verify execution state root against finilized block body merkle proof verify_merkle_proof( @@ -249,56 +219,86 @@ impl SyncStepCircuit { args.execution_payload_branch .iter() .map(|w| w.clone().into_witness()), - execution_payload_root, - &finilized_block_body_root, + execution_payload_root.clone(), + &finalized_block_body_root, S::EXECUTION_STATE_ROOT_INDEX, )?; - let participation_sum_bytes = participation_sum - .value() - .to_bytes_le() - .into_iter() - .map(|v| thread_pool.main().load_witness(F::from(v as u64))) + + // Public Input Commitment + let h = sha256_chip.digest::<64>( + thread_pool, + HashInput::TwoToOne(attested_slot, finalized_slot), + false, + )?; + + // TODO: Investigate if we should hash it all concatinated in one go + // TODO: Investigate if we need `finalized_header_root` in PI + // let h = sha256_chip.digest::<64>( + // thread_pool, + // HashInput::TwoToOne(h.output_bytes.into(), finalized_header_root.into()), + // false, + // )?; + + let byte_base = (0..32) + .map(|i| QuantumCell::Constant(gate.pow_of_two()[i * 8])) .collect_vec(); + let participation_sum_bytes = { + let assigned_sum_bytes = participation_sum + .value() + .to_bytes_le() + .into_iter() + .map(|v| thread_pool.main().load_witness(F::from(v as u64))) + .collect_vec(); + + // Constrain the participation sum bytes to be equal to the participation_sum + let sum_field = gate.inner_product( + thread_pool.main(), + assigned_sum_bytes.clone(), + byte_base.clone(), + ); + thread_pool + .main() + .constrain_equal(&sum_field, &participation_sum); + + assigned_sum_bytes + }; + let h = sha256_chip.digest::<64>( thread_pool, HashInput::TwoToOne( h.output_bytes.into(), - participation_sum_bytes.clone().into(), + participation_sum_bytes.into(), ), false, )?; - // Constrain the participation sum bytes to be equal to the participation_sum - let sum_field = gate.inner_product( - thread_pool.main(), - participation_sum_bytes, - byte_base.clone(), - ); - thread_pool - .main() - .constrain_equal(&sum_field, &participation_sum); let h = sha256_chip.digest::<64>( thread_pool, - HashInput::TwoToOne(h.output_bytes.into(), execution_state_root), + HashInput::TwoToOne(h.output_bytes.into(), execution_payload_root), false, )?; - let poseidon_commit_bytes = poseidon_commit - .value() - .to_bytes_le() - .into_iter() - .map(|v| thread_pool.main().load_witness(F::from(v as u64))) - .collect_vec(); - // Constrain poseidon bytes to be equal to the poseidon_commit_value - let poseidon_commit_field = gate.inner_product( - thread_pool.main(), - poseidon_commit_bytes.clone(), - byte_base.clone(), - ); - thread_pool - .main() - .constrain_equal(&poseidon_commit_field, &poseidon_commit); + let poseidon_commit_bytes = { + let assigned_bytes = poseidon_commit + .value() + .to_bytes_le() + .into_iter() + .map(|v| thread_pool.main().load_witness(F::from(v as u64))) + .collect_vec(); + + // Constrain poseidon bytes to be equal to the poseidon_commit_value + let poseidon_commit_field = gate.inner_product( + thread_pool.main(), + assigned_bytes.clone(), + byte_base.clone(), + ); + thread_pool + .main() + .constrain_equal(&poseidon_commit_field, &poseidon_commit); + + assigned_bytes + }; let public_input_commitment = sha256_chip.digest::<64>( thread_pool, @@ -307,24 +307,24 @@ impl SyncStepCircuit { )?; // Truncate the public input commitment to 253 bits and convert to one field element - let mut public_input_commitment_bytes = public_input_commitment.output_bytes; - let cleared_byte = clear_3_bits( - range, - &public_input_commitment_bytes[31], - thread_pool.main(), - ); - public_input_commitment_bytes[31] = cleared_byte; + let public_input_commitment_bytes = { + let mut truncated_hash = public_input_commitment.output_bytes; + let cleared_byte = clear_3_bits(range, &truncated_hash[31], thread_pool.main()); + truncated_hash[31] = cleared_byte; + truncated_hash + }; let pi_field = gate.inner_product(thread_pool.main(), public_input_commitment_bytes, byte_base); + Ok(vec![pi_field]) } fn instances(args: SyncStepArgs) -> Vec> { let mut input: [u8; 64] = [0; 64]; - let mut attested_slot = args.attested_block.slot.to_le_bytes().to_vec(); - let mut finalized_slot = args.finalized_block.slot.to_le_bytes().to_vec(); + let mut attested_slot = args.attested_header.slot.to_le_bytes().to_vec(); + let mut finalized_slot = args.finalized_header.slot.to_le_bytes().to_vec(); attested_slot.resize(32, 0); finalized_slot.resize(32, 0); @@ -332,18 +332,18 @@ impl SyncStepCircuit { input[32..].copy_from_slice(&finalized_slot); let h = sha2::Sha256::digest(input).to_vec(); - let finalized_header_root: [u8; 32] = args - .finalized_block - .clone() - .hash_tree_root() - .unwrap() - .as_bytes() - .try_into() - .unwrap(); + // let finalized_header_root: [u8; 32] = args + // .finalized_header + // .clone() + // .hash_tree_root() + // .unwrap() + // .as_bytes() + // .try_into() + // .unwrap(); - input[..32].copy_from_slice(&h); - input[32..].copy_from_slice(&finalized_header_root); - let h = sha2::Sha256::digest(input).to_vec(); + // input[..32].copy_from_slice(&h); + // input[32..].copy_from_slice(&finalized_header_root); + // let h = sha2::Sha256::digest(input).to_vec(); let mut participation = args .pariticipation_bits @@ -358,9 +358,9 @@ impl SyncStepCircuit { input[32..].copy_from_slice(&participation); let h = sha2::Sha256::digest(input).to_vec(); - let execution_state_root = &args.execution_state_root; + let execution_payload_root = &args.execution_payload_root; input[..32].copy_from_slice(&h); - input[32..].copy_from_slice(execution_state_root); + input[32..].copy_from_slice(execution_payload_root); let h = sha2::Sha256::digest(input).to_vec(); let pubkey_affines = args diff --git a/preprocessor/scripts/generateInputData.ts b/preprocessor/scripts/generateInputData.ts index 41e96dea..9315d72d 100644 --- a/preprocessor/scripts/generateInputData.ts +++ b/preprocessor/scripts/generateInputData.ts @@ -107,7 +107,7 @@ let beaconBlockBody = { let beaconBlockTree = ssz.capella.BeaconBlockBody.toView(beaconBlockBody); -let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload", "stateRoot"]).gindex; +let execRootGindex = ssz.capella.BeaconBlockBody.getPathInfo(["executionPayload"]).gindex; let execMerkleProof = createProof(beaconBlockTree.node, { type: ProofType.single, gindex: execRootGindex }) as SingleProof; @@ -173,9 +173,9 @@ let input = { attestedHeader: attestedBlockJson, finalizedHeader: finilizedBlockJson, signatureCompressed: syncSigBytes, - executionMerkleBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), + executionPayloadBranch: execMerkleProof.witnesses.map((w) => Array.from(w)), executionStateRoot: beaconBlockBody.executionPayload.stateRoot, - finalityMerkleBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), + finalityBranch: finilizedBlockMerkleProof.witnesses.map((w) => Array.from(w)), beaconStateRoot: Array.from(beaconStateRoot), }; diff --git a/preprocessor/src/sync.rs b/preprocessor/src/sync.rs index d740ff3b..1f890c5e 100644 --- a/preprocessor/src/sync.rs +++ b/preprocessor/src/sync.rs @@ -80,8 +80,6 @@ pub async fn fetch_step_args(node_url: String) -> eyre::Result-Rb}8)Zv^na zvwn$=&y!qRh}SJtaAOEcHOHR_*$*f8Rk>3Qd6VVu{)ox+f2RS&0{}Su?>YkP{y!nW z|NB1){D0z~ISD8)TffH$)qX9zRsck2(Z|E062oQY8!1xc)my9ollA}oc8G-_caR=e zE=VnJM^bp24&dpJS?5@To{5pV9!&@g5;k1Wx`&S5YHZ$1TI1F-FA!%~QQGd1MRgA{ zZJQ9P1a(KcP5HG91<4t)G+(|3Re`i0Q>FGY@j(ybb6uTCJwpxx&KKwvXf;p=8J&9s zGR%>U!;7n~efdfrZ28Q;q}-8LD)jP{?A;=ocO}#Ui+{x=3w-r9nWv#q#RWCSf&gz3 z8WOnv+D1J;goJFC?|^^2*!4LNFY$S5o7YDz$2gWdD_$J>u+TxLN4{lA+3c7eELJH( z)_5(pj2*qfsrGwHO^D0>fzKox#R4~liExMi$_@WS z`4^=RM1>zsPrK<=IvxbP8skUY36OpB_kYF0%Yl*0dw3P1AJ-ReZK(-@RNY8kAE6|7_n>Oh@kOOGZ6Bst?R?>_!*fojKg>IM0mSI-){ zCh4(!p&3okuutWO2Ancc(QRBxZItTf4JmE?E;vlLf1}LAWN1#Qb0+z5UF>90q*Pl` zG8sAm9{FzUZ;&PL$xQeW4!9zrP(I@SlM}>jMpkx-K@*KpWN6>e`s#1cPZg^#3(GNP5L$&jpQ#}xOZlqWNgV@OoSVidHDn8^Y%D)t31Qj zLHg46Bxayop?*(>;m(=MdhyiEjTTRy=7jDQioX0F=JLiqy)J{VhgQJ=sr9c{cHdD| z2_F(rvL==X)$&JQg|i0E+wvO}#R6GoT2?Tp!rV9Iu^SB>h9vs#Vch}F760rW)2$@# z1y5176g{lt=}E#o?Sub4GS&pmzN<8*TpQ-pEi zXuT7BL;Pojvq6>;HOy`Kl1(9uI!0 zCt+MVDH|K}*jD%>@bPVSFDX92l?iJ3sA?0DPGhNZ#mDPC50Gj3vsgfL<4TRCuyw(q zSa!+GKm;v?&ai7OINc5|PWq+2I^xe^oTVK4!mm!?d($4Ax~UQpUekH!;wM-}9+CN# z2kIbpjHs+0(E~b)uw>Vvtj=bQNI2VY`9-b~qf;P`HBW_-qxv%gxM!bnw%@7CM{$h; zXMAnG!wA~-5XQiio?7Sb=Pg7o1lrSo<082-33k^J#BND8v`fKqEEBNEFk+IR{`CW6 zr!-C~K=fYbd5R`271xXh1z*jJ97|bWp+du{T+I`$DziuuTlFj3$Lcc^yD1(k!V*q! z65el^#}^WP;ZMIp%8TtloA@a6D_5N|dN%*G;i26b{iBit7`I^4uD`(#6qai1$Nk*` zbO_uLwB7$6IH}0E+(`k zUyfL7(#*l?k7P19A6Bl>u%TpTh=KaLyDPYLj=7s>`$A<&WpBDiP%S$5ruI|?*>?Wo z;=erMVjZ{b+Z4feMS1RVk?wAk=j#nL{kn6ZAoniP z!luOI<9BnZ~ zMY`Tmh3_o5E-gJ`d31R-4Tn{n^`ov+t316fTxWsVPD#HZk7gRBKF2@l7Q_f!pkOMsmaQq0>BwxRFW}rLw0=552gh+ z?Rcl~=fuAvS;ewpPj(iK{@J@Z$o*c~Hg{=}Ocd!d6@9^Qz|Ym`#+rVwzur)nk_lbh z(d6ZPl8%a&7iuL#vp?0)K+mKjUWpGQd|>m|R$xXzUtS3d^|xapM5VUEOaENT%EXk2 zQ}mLLs#wjZ(D9+Ht)hcO%lt^UJX{5zab!Xk>@kNq%FYHstbuSrNBAK_KV{Fqo0do= zJTpp{Qn zJUPbfQx^NfW+ldd`RPGFL1&;kn(??&VwHgg4sqk2$mI|9OOriJjrTu~IykXlM`ks10f+3sVsN4tXNvs|)EFn5LC-GX>D9Lmo zo#-eI)CFThJAc~y3*6vH9{ z9{~p`jn6e+S%+Pvvw3OET@nHHr^~7A(9l|Yu>smbrB7|T`~7EXZu*CWOjsRtU2cJb z@jvGWDW{sPgA5Q}Hm?0Z;&5WhX5*hBK86XTiO~W(uO?`*Sbv8M;*{opha3ieKUzy0 zY!t9(@hAv{6hT=!GClyGYU|TxKF3BBxgJ}RqbztJnDlmK=Kg+i#8Ne}L5pnrgSa*t zFzIhd9KXD-gqRTFPx+6+f=7EZkwW1JQ3+HFOI7)7Tu{9WwWQ4HMKjU zJ7VMfwA)mAn9>1J7Y}jhcW>9&e{M@as9Et);5@|-Cd+KvWEXCf&4f&NB_ZihhIJ=e zYr6br7+NA(RT537)`%&LtiT3mQ}n_h{`< z^g@i{-Q+I+DsOamLC@ehennGvbz-0jiyOK*xJ6F7P4$aZ6tJVgFfz4&#`B9#1Xh7a zCOK71HyTiuWA?VmB-7m(Y*o-2fjk_LzoxP#Y{4v5Jl zrA`xq*EO`Mq^y%zfNvgZW%vrSGB#m=bO&K>t}>V55ynZpvBuO;X&fCRl08U^v_xZ4 zhU6#HJiHS8=kAeRfkK+sjCA2IH#a^%+0>_b{$%Qd4U# zW{4?OH*e{HPrt*(7Ii@JdNnEQJ0jj>5hIk6U=uk6nEP>o zzb}kQLbYqhlCCv{imrs~{BaJZB$gkLk*x0yEd!zvmyfBrZ$ElR)2r4kP4wH_0`87mMiFVD!9!de}1 zzvH-E*}4j}U*b>-6;OCSxPvHXA}*Fo`b+-6GzVl=ukiV&BzO z%ruWyKEr+~^?C2Fv1-)tp_p_^v%LaiSVN_lY+v{ilC|eY$5}a{$0SP>YS!CGPBN&U z0agG;rLxX-Dy$)v>~p)M>}NazD~huw%D;kIRP_mf>dXy36wxx-rGE}b#WB!bh9eJ5 zI&3Okw66Q{(uTo|o1XqNjfxPziLTaXa(+)~iL zv6~;1p|}n`@EL)nmFCMPii{Uikj7w{00LQO#@1-WVK>CIELj8XQ#4B3;yw*A&gB!R z!$isMky}SxCA0=xP_qw3lQa*13EW3SDr3{=ykoLxRq+y0c5P?mzUwJIu@G?e9CI>& zQb4gatR2h;@Gu>ZV7aU+k|oPN*GxG)m6Zxg_NIWc8p63jM>LV84Tyg#aBX!jA*=iY zGHt-Tj0UL6*174%j>4)ayXAXo_7Sa*;WCtCiA$8$b~DLkQ|N7_ugK+Lq{8lu&pkq? z%Vb6K94RyEE`}SJ|4LI%nfb{c!BV2&HSAn5zaoipEz(}&5RWyyo{Z?@4HEuW2b8>z z!GdYO=cyV;ffu0e6qEf|Zn{;o#w0Rg;Py(kbc48F5B@pQshffLra>rwd?@{Z3-wGl zk~~kB)q5MD`*bfGPc?ddtTq9-Q$h!+Q$9m$&l+B=D2;J%ixcabtJ4(4aqm6KwLzey zbd;>|JRiwiep7eO>Xs%QoxNQC67kc5^Y_>W|FOsEr0ptV8Fl{L45y1x$3A z6G{9rZWWfFhxi3rL|jj{QC(UGL$@+U(}Q{a*o??#ko}pp@xr<7l>2bObs^WAcDAu@pE@A$GIm3bMY1eGk+6-5nhPG`zLJV2!aoKY0ebw=)6C+YvtjNW7k6zL#hXi%?)D2xtb zutLuPiLl4kV7-Oj1-U%BQun3MjyQIQ=I+Mn|0Pss$v9H$pwBK3HCmTUNc>UQ#2xxO zQMdQ<4MmYB4+m&cK*ArJwN&!71q%-+aA0IF83ct2#-O@KHow9JdvzXU_0?;)~$HxH>#{D7Wj zA@-Cy#xhm6mjYy{56szu(|Tk=Yv;CetbHT!5;xT**DiP(hOxBlNconJp1{Y(KIV!G z$a8+#G{Ush6VRkmBkyslmaxUTQLhANtZU+EgFwAmc&+La<39dwDiR z){?cJiLCc+m20w1?h771%{i=CGUbREF+q-ev|})Hs8*8Q)Zj8tu@l!+c{>PL6x$Y2 zsp8ccP>qm0px;z!bS`g=fIElaAlb4K4Nim%XlrS9_uem3E&PNzKpB!b&LaT#m{f0i z;eOh&n(Am}+nux!6V=1N_8!rF`)7~|qQL@~QKiNy0$?*7W|K!8yU2WvLRjlO2@O-6 zr;OJ&Z)CIy@sNAhKG=RRr(ZW^l1S%ONuzKHh+_G|Dp8lq+0S}%ZF(2ENV7`FNjo{# zErGiS$o`c^(!M7X4+^F1hePftO>BL%BEYMYO&E-oYOi7+hm#c^DB+P!g|bQIQ0eq7 zVa_iFnB$s-bD$~F>Uwa=^pQ--?bFveK&VG`gn zf``jugxe+6t~jQNxw_)Y{$}8 zN|`+Ofx_`8Iiw5MjHt03%>K%^rB!kdm!e%9_7CdE4=|Fqf5cUfDl|sNWU@iok{R^$ z?*wnK{quDAV}0w?7Q30YXD0Ic=kEX>wGeE4KHUm+G7WRjxOxDZBqz1QaM{|K01B5y zheVFw)KbKtvQ<)TXG%(NB`8KFHq|iBcL}=$J~nn#do32sw`87FQL~karlFU*96);s zV$ zYB6)n99Iw8uNHSt{PuYqs99Raz1i6)yL|||K)S_M|9U^I)Y|uj&=sk`MixY!0_Mxa z$%JdIf3#jpgl^O!T@4_FmSk?cNR4NG*Gyn>lwd*8+#-_U5u%;3?nrv%RAocwUl6lz zIueUjH>qU=ftm$1Xpy=pt)I;Y)kxzc$Lbqa!q``mwZB5*F*aB%QdXwDo(Cim$dc7= ze>tp;iAZ^3G?j|U)K9|BjbCyoh){j6y6vRva4J>X})jxV?I#rF(@hzpbQEG(XVY?@jxu6wjx znj{qWcsBXtZ>MfDfRMQ!rMl6QUDNY~q;Idgk&zw^#!sB?qE;4YXM3*lcgg@H3$0a6+oH zcCR2C3ZFygV5%4o)W41$6ha+_o9e``rPp?n{E1~jDHnMo+zmm6_9Qgr>U|t9s+XR% zXlB;K#CxaLevDJdBs4e`S)3ispUFcn%otu`ARJ#C2l_6j??dM2jw7azO3J^nu2MyF zg;2T&dtZYgb4xR&N{0_@TaLpMcLf&}yH_wV5ykVBsGRM@yr!w0;?`e3+9AM&2~(kZ zqd#MA!>BX@0p#-S#SyOydJE3?ftucdqc<1{>LIIq-P1*&GPLNxO?pDhI5~pi_)9Nq~K<`f@e+9WI32{DwzQ$I8kb!P?{!AZrh!IiMvthlcb9pN$>{PlrJ^*29CyTi-Z&HPNg+5cCssq(OFToL8bI_Y{AtOKzo-@?SlO0 zF&|x!E7eo~+ujLy=fBnIgXGuJWMo&%*ZtueGbZ#D*w3K_dgoAQtJ!83>#U5rZSr0t z5y5KrZ)B?I9mQta^ZLNbg?|CN*f#KNr|_lFqa`P#jfwNA6z#jIL)b*NyO*y2N8Dko z1h&SM24=`8S_4nFXJM}+k#%6lac?!%iMnh_wS_LlEp##-fn%xv`CygG9>O^L?gfIn z0dIK>RHJg~7d1w~QQpapQ!&3x7^-chP=z~tyz-Toi|@+-Yt(}>V_vZk&ADoiHtZz) z4NA#_z(M|O4oSwNX@W-=PVkVUapO^p!crLuM~d^`1It>e5tb{LxuX(qQW*?=E8{qa zOFV{XPT(U}lX_VyCis*W4li#&xsZPqKT&NzG$rfZ1>~;X(yXGdP^u!>ZH5>7fhx0f ziwFOZx_P=%cY98d>uaW0>F)?#!44!4vT(vx1wg%V)KN0iyo2j>1(1E%)wpe+@!@z* zyfYc?8_6|7ghQUIq=5OepUDAgNv%>O&m8EAAi2@x$C9>cWYBGM?$zmytA|6#I9hFof6RPi*OE^W`o0O9- zrPyAt^wBTKjnm8r)5$*5VH*%Uwps}flntM^Nv8a1lsi?YJE6~7rhGVYC{KB->sPPd zi@^_kbtLS-_0OC3=JUaF^KOpx1Ui8vFE+f33cgZHT|iHoN9v8W;n*M}?Qbl4&l>U4 zz;uuedj$7^js@+s$%xXss<=N6LvY{>B*HQ(yNK+%!TBd42X6B!w+JRnOul_kjc_E} zAm{4j2Oj-116R*SlXVzP7|Ika>nXduLZrJQPZ*>WmU7G}(aC#^`V3 ztL+X!c8}__wXP|>7NO_@nCTO!md|D_&YlRZg=(yY)l=)!1AECp;B&f&W}4}#j7OuY z&My-7D`KLs_Yr)bqsxzht8a8Cfl&|;!S*)l7JrTZ0tYFii>1g&J3ZLnF46d$iOAIC z>?+2k=Of3dx3f*?F#ctIAIi0h8j?=Deft1;l@Fi;K;4mewN9)m*HDESSzKmgUV`2o z6t~iGr@XQPYs{m9Hh-mJU4!f1(oesPHpRSwc?KhXNLjDU2CaOcUan6OcH zn6B?7O%r^6q`Lc2GVdFmv-2XzDE?7Hb-ddH&W;4rCMT6AxvX3&m2UN?RZ0zuz16{g z`67EOf&0)pRJ}otF4Xj@0idhUK@-^4)<2nz5`lwTHbF_ir@KWvZkY43bxnVDZ1{4^ zW?slSji0CNMca_8WYV&>#FSS}?t6XldHPORBuoFhf`SCX4=o0ndROe`%6054KpFl< z`$cK-vmIRfbtS7l@7IgWiRuHf2^3jBtD!3O$AqYFWkVLwSbAIV9iXSgi<>@y1&h7; zZmVJw)vDn@jGkiJsk{_4vx$>|o^j!L3e>ho7@xES(Zhb6wN_d<5yL@^a>b=X14;U1 z6;ZwVyny%{ms-}ROE9q=JF%QAhZv0x(FQKmGFiXgN-Kq7!Z4{f9Hx0CP&&&^#-GT< z5h_L35NkxI^oum#^^JE5yi@^O|FAVS=R{`rjnZs4*R5JZ7(jh%lX` z`|hRP1feVk%cZy>fKe)+HO6?@q;uY!I92CTm`6cbvF6%8B6bRn-ok-PkTV zr#|rQI`Xm}RHLp`*QLolugc|d-@QSzs|0Lp!@JGtlKzOT7a?0i>BXbmzDaY>Wb5X8 zB@QZRC)?dc*ea#YPRE(FG;kl^?i!b^Ll$l(9wxA|6sLEIMw-204rQBa1GJ$VlllfcQW^q z#k9K=5t@$?yv0Y1eO@)KFRzF5Nci;>6pDh(_N4SJsUA*qM%*kc>#2m?=)Z*B?Jy`) za05j4x|IFnV%3>i5t*ctxfp`Wb65J|6bQIY={!LqGd!_TyTNO8{Qt|VNZURb@dy>8G~Mb(}JnOz4KG3d;`d zJa!H;dUb^@{6qaE-;pxz_v~L=MFr!^c;+O!5f^f|mA8K2bPbz*PE2+-$F%4MaQK@^ zx= z_#>1Da>^PPF2B?pk0b~z5=?YlV1|kvrUlu8ENbJ(Y$qsPAFE6W*;KKiQK`TaA$);N ze?=w(&Erb>*_$a+Zra_$NCK@cC6J*$`e4*_OO9WZgzSk|ROwTy8%_Wq`?7Bm09aw{ zEB_VoV_D?>2yDlWw)eVD@45=CFaDVClHVHFiBC4Vp&v$8z>z*z{cyROG0i!ZR_Tg)De?8BTOLV5m zE<3040f*Q4`P&WIm^Xn)7XO8_Y2|w1jJqH6$;j~%h(^(@GNz19v21;GUPyrG8HS00 zc~`;h>zxiU{?TR)D<(|kEo`3OM8p6)=t_~XR0%!PbR1qR-y&K7BAeL|=yi;YnXC}Y?UWP)f_RF(cQEE0 z&FwB9t{vPO0hCxP3!nT{mn~aRbQ;d5gO`%NsJYl91^MM6{KQ(_uj|wha$F_Xq|h$M zs?pJy=?I6rnK5~BTNwK~W4?W@sW%ISLT)+hPUY!^WU>a{D9L`B{3|AjjLYr11t;y1 zC9|_e9fSsl+!&X=jg?a1)$Ivb0qMX6foH5I{%1V%gS))YZ`}ifyA99O8{3+w9)YI3 zdQYgr$aKfqOgO>+3-Blx1UUzGe^7X`YRV7N2Q0P(wmI?8*XRfh4I}_3^~#Lp-ooFB za~eyfS_(gy&xgd)B@0Is_7g}sSq9!{j37T74q46}KYK$B{;gD1`bSpJI_W%ucHOjN z>lRr{=teN^>con@K|dU=ABTS_TuDL;cXD4kv8y#SKjUVheI)B{<_GQ#(80QO#{_ z(UQ-+-4ZQAV7=wbMk}InlS2eWdqua{FN&IID~WPq%0XFf2k<1i=xxwtb%E}7zrrhr z?{r1&8Z~dN0|XY=kuv^+Gj&CvC|uV1S56R~{FCTMu+8>R2xj8nx@4I|B3>2tUU7JH zrmdN3iVVEprUW!JA~r?fB7g&5l*-g|L1A8DQ}Va<46n&Pk25TUw{{e@`oI9pQC8T z7EXeBna>%<`4t-5YO-UR6HG59RyQh|r42jYB(H!e=?)gf&I0N9$Y9+C*_YZzY))-O zn--ivz zvMCCbjgX$sQ(0T2mDRFkfVTKZlY)Hmv+PGm=KR326LTR`NS*Y(hB><6Pjx@HP@+Ri z1hc63R}T1`=wALX07MCe18q1+p7$5-QeITE+wE$ufO-9JiF24)D2M_^;%dPI7&y2r2H+J9n1Cgl0 z?YGK(E5UTGU}e@buZzx7jXTbggL+_<63pd=OydyJJq&3F4v?~jog|fbkfbX&1`ima zZErU@5Nzj)O89|cArX7TMv1K(76uUXvkR?wh`u!~eCaK^n@K$VH?{lE>2|n~&SS)N z3NVA$pt!VL2*vu>NyBuck0S{GwE`W~qYt@8Q_i^O{&qpr=v($Izi5c?jcdajDawl~ z^y8pej-{zFB1bkgt|`$L7*0|*gV7n+;#{_-wYZZJ)JNX1%~OJ{l~*V@G04wMg_#k= z)SmMm;f%mmtYt#|fUmQ3A1bh@e=4Raz>aDq?s9sX;GYC;gb2om{3ZgtMpj1549Wf} z?0pch4jb%~g9KE31!gIdByze~@u{nVd{MshaFKFKg+c#6eXONCHn^4NVT0WrtRFJ5 zJnbJ?Clw7NN-qmD%Dr39xCJ@V>b8YSlP9x2nP<8ZgV9rzp{qaL;Cl$LtL)5qy1GN} zNr@6Lz-9p1cIG+;bM5`L)Dj9S$@rTyvVoRW*e`mpGe8a~FEzVNa=G%HXjqZ8({O+L zxIvgbOW$TYf17NKNBzMFgejq_Cnrk*w(y*%CVJZ#D(q#Z(*vlLtX}6tLo88QEb-uDHBC)i zB%XmLAFD%C}xyZQTO+t70caxB^aYoEg1qD#7Qh_9)^C?Q%E#K(WDzX9@Y_x z)W4JV|8gjXGKG?<#y2I%eCi7|;VKI}^+PG4+4;x?)Ouc}2 zL)yh=RdA+SyW9WrsZhAatubtS4n^Db4=na&Z0cF*1nZW!`qB( zM@8)hRDA#HC=2+Hnm8QMu)dJD#dbdH>)^i&Lts4u2lEOot*Hbm=surQ{S@$6wos@e z)JBzp`zXQ@JN1W6*5wbnhi?;QIMTi6;_V5^1kj^=DLU&+<{-Ax8jS@NveFuxS5ec0 zckoi<0E%hV;8v!#!ZsO5bJ*Xe=e023+{7CzM6ts+uD4S;3=oH0fcOi?shW&~HjX^OQ9gZ$agsmTu3X(rxJe5x0b4lWdZo0YL5x z2Pv=$AWizQj|(d)o3zIH{vb=p5x_*tNlX;U)25QricO8Ec@4?!LPvrCPT=39Hw!+R zQmpsw*W4u@m`epl3l_BnItu`p zW^O8F%3TL$5zOaja|*`BH_1t1agjBTU)l=c7+H_kHC>!g8a^F^rgYWE#Z zve6m)39K|Y=K67Kdf$#WN|x0ADH@spvQeR6;S=e|mG^H6<|vp^nx}3I{co-1^5~zy zvqglNLC$i8ZBJ%dk>Ovc8uUO-YUIUHHNU12ViHj#Wen_g+8~* za(u|mjQ@S5=b*uSpjPU=BNfxM9wdBVrtGz&E25FC)Up>Ef`;d^JI4fu)|H4~o^Ah{ zl*?jLn-SMKOP7n~!icefHn}9~sl*I-!ukKG1Aj&3_JUq{6c>~f_v(7AhxL9xYdeS9TnSiohMzl@_ z(;hW`BWx021j{rVvCYhDMyw8UN8wMx*&>vYhK0&aCJ{ZiO#*mXvsRoor$1u$dEpf1iR0x@dUHX*SIC$YByN54SA zUsK2e!4Jqh0fQ&^MbabMvV}DTN;66f%}#v?ETT;JG!YM7)c1Ut>sJuw0O?mId!a+L zI}lEDxPiZ2VcPcR^Q2;2e^6=pG@8o#TeHObA&sbxOqv zy_gMN6+ci>`Y~;qjnp=EnJucjsC!jT+LY8Tn4g82Ay3Eo)09GCk z71+H8PEZe2x1v&6Yw!IMMw~)Z!_sZ^1+Y|8e>+vHmukuLE)4AWio6Ty{5+A9&Vor! z)z6=NZc0rG2dL)hELH10tZsQt_xn}KIB2bG&Qht-$$+<8`AR}0y$BnHLy(-A_2!e# zk{M(V7OsZWBVHgBp{EfW3BpHOz9Wpk2|D}J5SBxwu%%;JOT9Y=B)t_m?lQWOIo1;2 z)$vC5mszH>Rl^oJL4PW49`D=m_3KD`jX$T(4s$!zIg+`bCrw~}KB~W_kT+ip7$wH9 zpvzuFPu*0y??vVlaLs^`TjZ;ehN4{nwQ$Tr5;?1c2#!orDy6n?zk$FF9ch*ZflOzG~Z^0f2J8DtlL<>qWwqn+QrM# zgxC{l4CLZpCeLw+)f^=k5_+s&%>cX!q7YA2n2sZ&4J4$qCO@oG={n-Pq4Mp_3;*T5 zEn$K;6-VbxsqEVw*V#i=ONZjFs0tHMI$B5MSsa+?-EF}~79lm$P}HvVP-#lHB7bz?j2qQfbSW_w)VoIm{aM6#)ysUt(&leS_)V^21OKZsBotFQ^h=K*rEiP|*w=Lc zvSHu=c_cB-AkPk?1YA90OlW)V`ZL>}YH@hGXl9j>-1EQ04FC}vk7Fo@a<{=nHR7`+ zfhD}4K?9NW7K6=nw5%Dk1Sk2nvCy;eqNXl+8;t!ZM+QYUca5GU*Ua&){(v62u~b-sd6>-3^SM7b-S+ ziPy3VHQS+L4($99$`G@TxClCl5a3Iqolz{dQq=Jp+nfzU+ByvsKPPqn<@GXrS3S5Q zM+K+XwXfI8Fgq<+y&qko_WNIdef}VgV0%e=tJb*N#Gq|zk6RoG{;P3#4DM# zs0GD65#xVM-hSn}(-Sa*=E*3eowJ0=j!!b=>ETDj5b0}|kZhT$%P-pC0hcr|qyP(& zM^d2N%&arv+73Is_@_v;D1}~lrWk`3JL_Y30$fvvMehm0fs67`a!QMVFQNhXqkb!| zuZxOzPVBqcfzy;ym2SUdkkAN5ij`nP3LB^=>C7PrZudhhp0p-fI+VaszBoy z>rtQAJ2D|J^}{fpHM(&4wRkyVu#Oee#cq%$n0G-;IAQ7`LXGh z-)1k#M)GrS^5Dn*z6h;`{I1?%si_0RhFsaQJHh+TkS+QkM{r(H*J^=4H}tnZXowg6 zQK5%HxO_4@?>Q`vBsx!oSt3PZRznF-zf|4lS`GiNljDrd~i$zOZlDj63?VIE6 z{#`>6GNU&W;m3Zs9~!#s^)XkiS};q#8BKJ-KR-dJtxD&GdAGhO9ya9>gQXH%mMtdrJ&M(Wy!bZpZT*_H5vLQVF1;by-q9Xevy^E^l1+}c@D=sj9(ru$Fy@s^{d z%jM3#O5mAR{RuposQnauHv4xvVA$#Ppwp?TNdsC|)6iYFyI$x#s#5-MgslEBl3TCH8PBoC$V~f}Om-t*bh&Lq2RiW1X zFvgURcjfKX5<#Uny?%3x)^!?7+Ipd&Z)n0r^y8_qmAaEbt(LMexF_K@neKJ&g5i`F z)Xto~4nyb9=-ap~GVF^}F z)XPONrFg$7Ll4h!#&|^x#dk7(w%SbQxmnp*ZFm0%8STiI;?Fem5_M4^cHtz9dnluNGnMnlWk@UA7 z?*Tdl$T`(&A7I(BxnUQMlx&MJE{E(aP4&5qZ7l#s&@;)U=ONJ-c=vY%DT$O~6z>Yd zTx6W9YKg9v(;wiT!T_8p$Wx($Sq;ewn@A6Z$BgdP%!G{RcI9?Rx5qjR=rFD8SQ)_Z z`e0HWpV)!W=1PPQ7NEvff3;P0ANUzsiG19X>qM{XIWoTC4i+q3+Oll8F1~dh`O2nU^)>YPW*AcaaS?ydZho`S==Kbsksx5i0S; zEl-KPvP_djHlZ=3#Y2lPr~iUQDy#p~|II>@DgNsNEAMaXjk3n3F*WKBOu{u@*3|Yp zit`L^wX!y0)f`k@`8Mr8-4V0TJaWUvxT8QV2>imTDRur*lilS$6VT^97sMzkx)-Q6 z&=!lrE$*Mk1o5#eX6B$j5(K9_ZvPh}n{Fy~=c9mcDLpuHcE)9z{DODRbi*keR5!$g zC(rEb#F^m}PI(ch=6Hi-Cr|EzqsSlw7Ijj*c-N)>lOWXUgqq@`23t8GCEY0_ESfUV zNw|R~tD${F6Jv0Qz34R`sxHWOhKhey30|ckcUGS@J7%wYKs!xSWjz9Ru91C zi0>amenvlh*%j{bs18l?ue^y!`0ZvhOzHdBR)7BHA?|bo!n*2#p;;?mI^OTZ42ZuF zY0I!{IRNxKEaEw5L5Bb=SsnnC%f0Laz8Nr5=5;e=eGrBiXXn{`WMTtlt7Db_l5lQ1 zV?cdSh`~Z?iDi4a0vJwlCHr<{ZVW$Lm_mNQU*PG&$<{c0aWR*3PA>-9tzc+~%fTkC&-GI|f*vx8n_F13+Z^E`VS2eWHBc>!T*oqv) z1ttH`p|I1l0u5if0ulwy4^EH zUHXb;7W}}1oWvSW`>tA@J*JfYP^}aLue(C8T^`CQ6;{_zLkUVoN)CZ-Ylj&;`k~-u z!a&H$iE^4NV>pm1sL6*w{-->fKkM2IC876sgqaOHhr9iaZm`Zhhc1uYr>|mea&;o= zti-~SAAw(laz^8`(h&S(PwLbk={;T6d!`njk5_Jkli}ZNpMcAqQzb*&B8A|uCON83 zYm15wVV_-OzScK0v=pf{guw;i#=P95<>4as&VvZ?vm}O*T93Z!-l(H+?pz>HXKX_q zPr0T#B^?khum1@&GFs(Y|7?m{kp;R5E6XDyhTd@}_)4MENZfjMg!(QN|sj+r)X{F0uS5Cq+JM z)YvOy89nTJp%w5?Jk@^oYoeT~5v}ZT4ysKbN}76S^tVU~CpZffnfAJ42Fz02=@j<8 zL2iR&6rp$K4Pt^U-F@bzP@f>ujE)r1m~Y}3XwP&={llf9Tx>)iZV-C92?D0dbQZqL ze|ebPlnwnED_a0#Uh&|^WiVkTVW)%I&sn9ufEu#*EVriza8{k71$C&VGw0u_TZ=La zX~CV}#j()wQRtgjF{%q_JGCIoq7Uj>^vo_Z>Sp55C-y?3j2vVUE5WD`8dFRIP)lm2 zEV1bP+aol&O@P&84Yv4|3u{rPE!z{c8hBQ5_>fM4f}96Zmo$xI2XbuYR44UD1z4iS zbintVNjdEMQ5@F|pG+Y(99X8o{@e3I=5Z=WWpa4$ z4kuwgIeoEavt8x~uq~P7Bd>E`8lcA_z=D1sK@ym=H)^y@H0bxjOS{e0z98zBX<Gwm^0ayQi3-5jH*-4sI;Z8PExLvNg&he9dom(3aJ`Ur37NA;{FZ(Tl5v`%XiNuM8 zN2n5@HDNwo+6j&rV`{iR%qJwiHfQxhewm#-XopV>_MmYyWF6yt9g0k^DZClp!~QSQ z?x8WTWs3rEY}>YN+qRu_Y}-l4wr$(CZQFKU|ARYt<8OKfr)sZSTb7h}wu^7dSz%e(`|AC-qK?H(97t{1$_<3xX~*pxA@lZE|@l=8dzB z#h-TvI^Q2q>rsR&`D}DGszQ@dW_wu&b2Uu}4|N?f;nGpFJS%hduRSM4*i%rA&6kjI z(I_xdVd@(?P@`gjElbMaiPesTfjh~$b0}bHJbr5_|7`1O3V{lNsi3YG)%{9qMtjr2 zto`0*oJ69N(s0FZKPib9D&~wW{$w`*MIgZS3@Sfi*2hw67xt$9IQx5Dv8OhXgN{b{ zuT4(*@?Z+H_{Uh{VYNBI<1baeCc!mA-bPweit)8iq!Yhk(fWw2-|#oKy1);|dGRoR zp6Majz>Mcvgjl6!FMP$K_(oIDVgNfiXW6(FqX^e6p+xv#el{tk@bFG}@YfHe69tW( zR!&*Zij6UJ`H)wYJ@A#M2Sr74UwGGPSu^qbtGIwsz3Jj!G#SX0QPA-{AdoAJ z{>5j-WQR?fr~dV&P|Kj}(bX>$LNPd>1C>JCUC<1fpC8~@1k}Enzw3@pXfshGe$e{j z1fGpl-sa;olb?Ea4*n)52|lG1aDTUl>&~V5Y(W`eLIGasiztQv(xoh08Xp?9T}KcA z1~8wc2eU&@V_X9a3b0F6WnmTG`^6WUnf!`%phrMbs9_=6%6)5!>zu;;ou~y;)F}3l z9h!MTnOWh|2<5i|Rv}1jSs*(SVMCMmdB|?>NmMvTvFXvQZ0hjiXn#M6L+1`luTbIc zV)BKk9c{iV1h%?dC%I90c=7Q|aFM#@`>^zOX@^RM0v4#vjnpH>BxAP05GYjIckeDI zIuN4FpFF%G&#x&huK{j5BN%Ewg3fT;Whhu`8&`$!w_47u4n)@-2s7s+##X4whcEs%~ePNKAbZl{R*6wk{oSr>M!4FIkU9coH zM3!E+p4bVknH{_qUQN`1J}sf}PZAj%Wbeb&Eo?bmNHyRq;t0nyvJMF@t9l*!Pnkba zFl`VKISl2bL%zHH?dHX&4Z3_*ae-KsB$~jNXbDU%ZDWYNNe3TRPl9B_a&~^q0uj$< zC{Rr#rmZmwI)MBHN+5>8`ZzDj4a3!!D{<8#Z6av6@b>@Z7TmDS5$`e&)4rkWZIPk= zkoxBV0XC%BQO^?E0CSFp$c&qZ{qJ`rPN2JW!Mc)60ylVxx6O7_`pApJ#!#*V?05ia z4WBikALry=H3%CYF-&dL^XeRNSq$BL5B}jR=mgNsaIBB)SjiZTOQ#hMAPK9Tdl5gs z#fe!+Fe_-g8?{Z#IP^Ewo2oT8-*E$!MCB zpX16!2XHd8Sko^2MS;Wz_fs_N`-x_LA1TF^12E~(`PD4&{>oea$@OX{>5Q%X`h$oX z+kun*z8ao`&^2-*6Z+h_ZnpFS997DJDPb;~V55@_ZU*UD6r+)8u4HEQJp!c^==IKX z)LgPVQLd)r`8;Zf419upGIZ)!15L+@WT$FBkI~rYk){z0gArpbx%I;u*-J7}&#&iH zdV(Qis*j`=FpFH5Wtj9b?Xl!wt`~uICI8hoz}Eg12po2Xgw*r1S#Lcyxv|sUGa(!i zjfS65!sMGfu?`W>UGp3wI!D={jY+9ZSlk>}>3}Kp@AGV*{6G^?RGcW{B7ob-YB{zL zLp`az=ydw?3F7^3dkYUy2_P`8+zAwzPn6LSK3@$cksQtNM%vF>+EgHOQ_1669!g_U zNfrNn&$dzZ!Pfv@{P9kFehzogyhP&?2_;Rx)b{%I7yt7h_ZWU9GCmozCQ%sZuY2le zhKHW)s&TLH&6I$q0~O^~lN{vq`+xZ)*b3pLy#w{iD^|-3JJiI%kDeE$O))!TI+`WX z4-wt>h#+_*cceI{UGlJ*^ay{f9HaMmgFhrIf9MmZ5!uFnxv1I(4JzJg6-g?2$DvCm zr_bOp19m%Rrc%I z%>|Xu#NhtD1R|YwG{>&HxL);lpN1gkBWpdW^?!N5m{6s8It(@~Ru_4h-&z?hFwNaD zRtBQJkAt0!IT8*V!c|rO2bJUC`nSMdhKp7SIudn?EKypVD)O{w5|0D9U}D*yaQsm7 zC?1SD?x+*OR?*@c=A0O;kp!;|P7C24MkCA%fz)ntZ03d)4hL2N;v9Gjt|Q`qmuS{m z!)@G8)~K$L1%wm8_URk@?Vgqjd^%X@kHLfD)m6ZiFGOgQr^KrX0^Xw5ENJJhkQ1dK zEb;1hy-C}^8>t|9LOa_%_ zn`c@}Ct0j!Nc*cRp$)HI`VOdHS)9If|Qpz$4 z$8&D}R^LJKtw=yL+lc(xRG!U$z);F^iczoDr!Vac_iI8e<*UV=el?aQ0-@_@uEg+D zgNr=Lg-=2CIwS-mfk&|?ymg2c<7Nhi`H$&)lLX$K@5;w0!6<_~vMdO*I*J#k=MWRN z5GhGi3)k~wH)K1sC1ei!%8>01v}deMbb(MkQ-@x#f58a&6{l1bgLsX7&e;t;?ADh( zcW!_w7hWzx0X^3n6e$FR97Ny$rG5INkAKN0L`2GdQJKL=?xi{^p`vxgiog6}$b_W! zC0&pJGDzJ+&JqmsbfPf9i9ba|n{1yzM1^UYze-gqQoou%PE$N0nJ{s0>MRfc%Uu+J zuE8H|(6lUu@%gM1lwxmOZamKlxdWZXq2mE!&_}iG-$<-OLwxjLwb-%XKSmyihW#*g z93==*n@n@(#@hxy*UnwSPINpX1@WA3iyMSE>HZDg`o1smzrC_~CO+JW;f|F!uzp=I zb+Ih-7K;ki+xqR|C0~|x!!t5NqMx3-p!LkkOE)nsmI#ZUjdPROpYKMJvaq2Bs9kD8 zlW4N>8k8_6T+hxMlVR6W&;cm)F)uU z$2TBUKJK9P9b4_Nf6Xx(L;AHbf;@{13KnJ;Xr(UguO@)?>Kxl_olcn|Qk{IqO+PTT z9q*#5N2@ECVxvA_NK!96rnR|xCqC9he?nVq6h0Ty6P5bYKRt^kl*nY`wD#nt6^}M)>j6hD zv3J=8MXSwv|CRCNlX>Z7gi?$X!<-Vm!S$jF?Jv9YwpxJ4XH>gJDv0|LWYOP8qcEM(Wu5m1$u=>ExhqRUYiz2J`+O_Y3XYvbHx9lrgOU@#9MUjEOn9yJt zw=lB-=R=B5ywuzNL7vwdgQ6Pcu;~iFhm0`7M#IPAv9s<=>5~lOnRIhK8SZ?! z?{zO>b{5UQX&e7g@vo-qDUFlLehqy;i0*8VVhubUi>0)R37N7d8T00r9QSYp#isRd zTepCuQE8l=Ne7D{ z{9Zq1*{T#YM3J5W54QFL{jW{FP!wMOtilMjESys&Whh6{Oc8<-Eq3;r52tXu%w^8h z_#B8id}5MCrH%#BL4?U#{|toyD%_Ew{Bk#Of-kzgFVckY%-Z0103rHjb!-zQKL@s} zdsE0+C$)HYf`~{ma})L0%zK)B=bKZKXAZ9AZyphcR3wdtU(M5aE73D>)?L^EoHj_x zh+^xfzuaZ)`5R4n|BKY*fom~z=*LM7|lQbHW23dgs3Qb z-FYb}Dk1)0%BqZk)a?$!27a4kREK^f#S}J8i5jDl!9XS}U%G@Uwj%op$j}H`cd{dh zFXj`3&2M?mpM-6-5@keBM+zy=H%_4m3LX+jqX=z8`o+F_S;s*?q=_z_lIQ>|{nu{W z{eK-PXXL5Fj?0Z9c>(?uZkMFJr3&MytyauJ`KLanOVy%=2O@L}$ao~kO&yvjQ-#qc zoNZpcIZbr)Ht+J+=Hr4)J>D5Q_A}%U$deKDK{P6zQcH&*NQ;r*iAv8w^TnVs0eOYv zF%h{QBg8|-hD20GV~hykLR|9n zWcDR^vr+~MWP4Ug`oc9e3OU5~xmp=$Ox(#;I+)}Dys)3cA5F)+RY!gKk^?^sSGq}P zX_bH5T(hOf*%@)6ghV=WxYBbfG53^S{R^Dqh0$kLl|zJ!F|E*gMeeGuMIOg`@d z8AgOktBc)+{P-=`yxJ^=CT3-rwFaj#h4Y08M|Ix7cp5Q~E~O(22!r@IJK!X`KOtrMz@ry1t;m`AkDZ`S1^yt#4&UXfiIo?#9o%>Uc>e)4M z(jF%`1oNw0amwDzrt%3H6WMqq0=N(E710h-ks$ntz_?fyfBbiGl-rNU;C{(wK^&Rc zPhit^^l@S!(L$QDM@_PE4|&#?Shh!X!Xyd;_#p>{ROiye1t?gy9Xa^R6JI=5Mx4m; zaD^nKv?!;@yVXn>ngDzjyGjy0(CKLgZ-EqNopT&$)g9&j$GU&PaA7A($!_J0caxbG z+-lvMa9&Th1GtXuBbFZ9R_;&r@W9`3Up@RwW?yT9Zz&#-uhgG!ekUrdJw;=S$;x#M zY$G?>UapTi!lUQ1JY`+1iux~|QP9u%d*k4wn*Mt=#(mKId%oe!jjq#`#;N&Y3`7ph z8vWtb?#H09kttsNi-Wl`8Uh(Kt|OPvygaXSH(qDrmSfto$*UTlF5-Mb8k&gF{s$@) zRiEn$Yrzzlkhqa05Wh5sBg#fS5PDGMX^fd8d&1&svFq6%@N6P8D~$qXUTFENYaUnj zvLIrqs!{1#b668Q=#&$PK}iRka)=rn!W+Oe7{{|%a*~o^!1$skzi^qxOVYLsqCa?M zKjza)Lky&l9SGaf>E7>$8k1~doup8^#y>RTSE}4QyrQ|TlnnplcQj)U$*oIDJs;5`3 zVNdGni}ya?{uY0_H~9PK!P3+johl3qI=-V}=on`;a9v%?#_tOci4Qv&Jpj}V&L%_v zQE)4^Qwoc8NuTqEq)rg zv4t=w{*6TJ3+~!}8fUe=>O??ir%=T^ez6I{b#qcMJOkJuP|n(XWIVeqJIF~leW*re zX?i#tnTu`0^TXfifhwySf=7UJ76o_g8nFq8s!r`fg_?vtXAk?5lJzAHO!DC6id|E4 zx&PAWkI(xzwtfUA!@^kpJ838VLCFK%k{vOs`Gp-2jnyD6q-@}v zHl{ph6K3=|`)5cxDw!>(-<6-XPc&@p?sZr3$w7E0w%Hc9*dqL@Rs?ejyt^2zmaxLe zlOCMkIKGCN9Ci0w8P()GAoR*1Dz}pu!NMgeLc?D^+#GYJ8H}35fj_ZjLvNq?}5h~6)V8*R`}3DYf8Bq-_M8z=CXOoq*5RRy9~|8R0EsVxr~W$4&?q&jQa{CDn9 zQksSjiBXm4)+dT5bBixiC+l?-m>UeF#)kUcj&RdkI*xtnKH5WJ*ee2?T$BddW=Fsb zash`O@=qG-nf)omQ9rzC3stYMv&E07Y*h+%c-j1&OHH(?F-2^FSheG$x;y5?8y0K$I*ov=@k zmGNF(MO>HyG^B$oL9kco%1FvHGW_#E`EunackAm)F>o580=mCt64IUvZ|SYZT5Nh> zeiohvqqN9%<$W8$S_EYc>^SrbokLuL(qAUce}oh&KMExqn}ciY+5!FssNSf3*Rjww zN1F6)ntC9Rjcea?0*UBTcrQ3mo?&tS#=!wEK1$ZU+~%lP`Gs7LMe5ND6ftk!CQJv7G#*U4K~OF!9goC# zQC?NHP2AOL&&^Pjx?1Sq?cRdFGUSg2e12ClFBLBYKbsPPK$~{u|1bafbhSsmE(QQ) z^v~0YM3qjLdhyX1;~W1TL`o{^TN_!TgFg4+ z%>583{cO{zs_i=QBL{V1PfxA)4pqZA-X@FLPTmgiN4LaJWL$TrN+ zT47EvYq#P7Q&H1WGFEPQ5qR+Wb2ud*AJ~lEy=c;_UyK>re7M+B=2r=|Gyfc%Y-5Eo zh48TfFZ%-v^&oiZy8%V5bKKk)YQ;#KB5m`YPe=D7pP9dTtEiPdmkI@cn6~L{vz2t7 z6hXH@XAwTwVEoe#vN{%e^zV%wSm%XZb0jp`)*3*so_9S{+E+Ty;!5E2SeV?p;61c+ zT469Vf~`d59||U&Gl|JD8rf4bdMHXROf(2VUVtIpktZ;Fk_H~3CAP3`srtXWs@*s| zI~l3D54wqhI9V+rZUNn9X=><1BfEo#$2gUoC{%4NWWq?CFdqde zM#6u!Z$!ABN4VI+^_Wyek|5<}kA^ zog?++gI6}k%uK%r+T*t+iL_1V7V(A8Y7ri?xxguULIgMt7G*AtEl(G7#c=o6mSW(CjhIE7n5p;Lx+Rl%4 zk?x5`JP)cf`*-xTMo(2bPZHMitGVht2$K>D=X44F-Gp8Jvd33oVVuc|Wb>9uvqrF> zEb*e*#TR?Hq{?mX8ALNcC8HLavsk{-Zh8CgV%M~CYGTIvreqQu#c>DbBLsTDC$b?I zXb}U*Qw_5+@x0jQVexhl7DIfgNh?WteVqXEaAcYhQHhBj74F81*La23S3_u zv~+?ttBAMxS3#@n+XUzYoBLnx?FKJMiR!BG+L_OVb$JPxTq~aKodg*=b?@qD*3!X0 z>#eYk>-{qz(3|y>oEXkKOHeg+Htd>ZgH4zU3K2CK0{?I9=PZr(Hr@%JDr+l6q7+VB zxfK&Tk{^}m9oD5D)1Q0!>qNB6Rl}^`1*`5l?Z)a*?J&VN^3w7d##fdd*Z%H z#u^&iPk~O>jVrO7T1xX8_iN0XwU%Ni6=DrrOzH-ypSD~mse!p?2R2M-T}tQsGTo{Y zb*u2*;Mze1BYq8EeELLdJ}dyA8s zgx=6!xGSARYa#tkbz&CMmr<|4t#duh)s8-%dn2{$@l=q3WDJ+mXt z>pU^?-HiRkW(2^=`YoxE$M=6DwrPlCDLSrwP{a`(-#wfJ04xP9Z{sI(NM5_{ML2&w z#@cP&rn~?sQ@q`Izh3-!kw+Et_hO;fxAtPLfR;mBq$-9c@L*9)Y=(%V-z-xPzs?mKX zAVkIjFUC0YJK?jUh`}ld%~vYqj#p_1mz0Mmrh7kD$Y8FZ9)SS`BnjRBOY5{ODZt6}q%Dds<6BCKR%0cZg zQ%(hhqsUP`>ZxuLI}U$3GdyXHIjZ;wRba@rumW1AMz?Sx4@?+w?xUPkA*E!)@J|5w z-LxwD!hDN$6Vf^L5a`CrxBgac6vkj1yXjYjf^51ngwm`?=$V&~;JP@dlfUG;?9{43 zbHGhct6IXUQ}uJ(FY%hFy7o2S|Ca-Kl7%CS`2aU!OSE7&uvCpb3DuIGcG&Sb zL<1>!nr^ME!8l!1LwChDm{qAhv+ja3vXkvuaR<_uIxc+KFxGNg(H!{GAWg2^fdG@PF965O4jd<60pMo>-iNS|b=MQbod#CCG z=TUt9D9zWE>ZXMb{_5(nk!U*cW>GSV6rA*=8IjSSza7@!yJx^0m6k-hY71CbR)KIV!E z=Tp)MNQw5~k=MD;r%2)`5%xognp_wwB{8tSIK-iKkq`@<@_Ahdx!suw>H5IreQiNA zi0ni+dDOxgowtkG5VAUM>h?VMT!NXftL&L9Im-2xkZ;Hib2P92c$Z%)p!iN_PkLe1 z-m+A>%6gkFLWb)tx(??-=bVx$eltVxg3GmSVd_S&Ze z=0mWKj>k%ap@tP^Zvl<9@4@a()6}c~Q%eZ6nEQaTM>DeO1uMQ;fk?tNJBv{#)#v+P zZh)X8Pf7eL_{;cYMWEw&I^RLBSY#`!M_wMY*d^Zm<`mTdvKb*nVwvm$r%S!G#3RW8 z6w6@oBJocDp?j+;&iFl?F|(4I=M0DTy3=z?1ZzfT9-4_bxtrTl#FF5cD1*QYp5r7HyaPUr<=MTnld*{ zm%1{W>%BblHdwHgnsBDh5RtDW)sfmVLUH%c(+hVN5C6%Bx%kBn@c=N-If{>*@GAkC z@tPl~srbpT0g=B87`|Eb7+bJNHS|O_?;>7c8V-W$fR*Vs$X`SEbnqM-W`<;g-!~6j7tvh_x@eqPyv!y_=JnbYxkv5*cY6dMzoXdngf7W!EYlk$_o1 zp{Uxu*(J}tkEtQldnwt^1Xf9cShY!61`$$SWcf~vFu510;I=OL#>=!w z=bj^|^)dh_DNeKc!(&zd{>C5M0!yZ1veeolG`3{0j3j};d>awhC$Mu6ti6x7DO<7w zANmDjfJjSYT(RHJdFQx^F~r<$loDcEcBm2|C4EFowPX}rVhf}Ttmnn#h+z9w!Wn)4 zQLGte*zVAnD2_HJkE&IC>n47!l3s`q|UJ zyNYe^ES4vma)C!r?1YG3ALR zRj<4xc8+u<)Le(u3wh7lM>K@DvnA+sX)Ck^m-wZZQoz*8H7!xyy!c;sJONV2uvX#H z`yMk@>|uDAd864~9yE{h?o=J_B5G!(UFCv?!~j}?klNo!kdichF3o}wyJ>_`u#&{Z zI*i(W4^k0KKB<28b&IXgS{tk_e@G}^*-8u|IlZWpE5RL4;I^3U^MBI&#`wSJiXk<* zb39T4z*|vFd1`3KZ=XHzs+gOWiTN_e4Wo4-EIdc*2v~6Z!AWajdP4oH4n9(-=)6Wc z``|a`sbLh!DHdLpx6>0LFsA6T3*&bJ8XSY)xjTHk@B(<^8ftV2^ipH;_|G;mlCi6G zNTy0AR3?RWhT)0vJ>fLgGXBlLLEM#~&_CK2A z>y2M$okAj16h29|3prB1_}oqJa6!q+7HmaN{q=t=RtYRpG(%_@v;JSFCUHd&YP_50 z@l)dRBIB722aCoaqZVlOZsL32xlR>2Dl~^yn_jv(u>s{Ob}&d0XrdRbhOU)eraX3b zs6^{`XN@8}j}2y){}U=`r2u2c78E#`i3^q=2k<4m%T|*IwZN>okWo8Fx0PpyqEipr z(KcpBOp<>{jpO@=YS23mWAe&Bw4I23Gs;vLQXoT{<;I&WS#4WclrGHk)3PVJ>0g^U zCQ*pzJ4biM7u&A8<|BnZFJ7rCt``%rQqO{{ipnBz{3}Gvb%cm6uRfG*qF%Ko@7bvj z`Wu8C5TDM-xO6^_Qz>**P@>+FZNBIt;PHTA9xgW)geHl?WC80p2!h<#1p1)f8=SOx z$X*i~-yL#$z+$fRk*@DX+*zYVhy_(Z;d5fxLAdH{ae@ObWxoK#fBC%5DG~z6&*m4I zc3F}Mcq;c(F@sX0ErAKhMf6HAeX!~x(n;HM&E_l1Sb5o5QJFP$)`;=;G~O|4x-Z5T z;dM(AJMS$nAyphB6WNm&I&1#QuOSDKYe+iBW}}SwihFjMO6PJ@Yfp#)&pC~VQ~~EmSQ~5qE%cH+#>@3;~*nubN^JB~00;PS^W z7JCG9?-n7$5}F(-z(Ztys_Ru2J@H-kz?y3Lh~p*S712;jX6tr-N&zBAW`+FC>{N4X zQOilqV0#A3F7^rFh#8*3fcj#uP!Ta0C*%)7ZrsdV8Hll=a855~0SvGEDt1wM+C? z*_kcg#&gskIlWenQgNQ-Ci1heR!)&Xr)3*;_eQ)f>1t?}dvi*v--s+v{VFu(Hj-3>S`6 z`-6ng$$iZXw6g>X=9n!+A|->hdK*DOYzsGNE}X6t-7Pe1K56V6rs4UnOA4YX{?$7- zX;c;roAbfgJ>J<>ax5Rje{Qkq&miND7t2WQyET~KQEHzM8M zxk%Yh8YCS^V;D(O7`G-vE^g4gP}I$8s+P^pGm1Jzs5rw?mo|>IxpJ~=g2^2MuVQ7e6fAsai>Bn!2t{AMrX_9+fL+$E1koGak0Xaa zDpdR>Q}?%N_nEQ08fxkh7!a;Da21!{(X9REHS-;M4hUf2&xTre?ZP=agSR2e^krd+ zAfXQOtnyADn1;l34Lsbpc2CK;o4BITqm8FNF7BS0!doa*M|Ge5OV9gjKt>V9v_7pt z!jLA7{dRWlb14=&crT59oa_UPym3A+2=^NKwFNK{gNlX{u4T_D4lM6aAs8z znOWOHq`xUU7-xIz&ii)g@Q!l?{$wolxp|ya9Egytn~>ZkZ@3&Jd75$36EdVenbO+q zU{FLZD)srbP^=&!9Ap&oRW$B4XvA2n_|~;yTJq!A+vHeYci>azk%B*OGOmsl-~_gG zM>@>!O)KI;WCmNF^{duTxQx;-K3+ong#iewXCZ@pDn@TPPO?~-)z%)2c*q-^@9*`k zf^10)W``KUa?*a_J)1*TF(48>WtbEjd{3+XL%HEuq8iOJb`9b~ls-0d&Kn9B zzRPvPOBJ8cbkifBXcfCVKT_u)wP9vv(2XS$WQj9~O@@BV8)Vs9@kH|*n{T@$A7zQihJ*DD594%YpNSNr%-iuVo&L+(p2O0ukM?`u-jSn)>WvLhw zyeJrByqW_NHA)d@_|hVpSB-nB2;iM3R8Gtm&np@{EXnagiazfB~fy~T)#IW)Oz5fQvbJCT*C9E{3 z;4R3S{lUl$orAfgtq`zZd2Zy}_=30h)5;?6kYEX10L5q1?#~~7l%J&Ba%(ky0~@c9)onU- z&F5L-Z5>yY6b`|MzJ$z;J%kDrI9X(z74K(pFYr9bBsGM- zScaif83qbrRM9Lsh2w3qH2G|1?e_1A<{&@-7DHnmVrj<1+<} zf-cKI9fKE-WGLeSUl}U#(5P$KIubnjb6ia+z%I_aQKtWBO-1)%QP*0?-l_yEsuOk`paK3m!$Hp+v&!fU6 z-tjTJ6MC(bBlFn5lo>C(XGW9?PF+6*x&Fo+pLwXw+M_@CnbL3ZIHnFmW*B#alA6f( z^b{w_p}L@MIQ{AhCWpI|CA$>PLX4s(?~TN12xuVi15(bH9JL8~#w$rL77#IJGeeZU zG_y!+A;fDu9BQ)Sp_~nETanAF|4GFj^IvPp)zzrm{rYSo24Zq*8ye7PalF!CtV|8lDmHhJb*7GTV9DRIJP zq3*+Xv#`Fu^??%D;PuJ9Y09e0ql=-Y;*or_u+M!)z8dD`>cyM}JUSpxTWYGvn9iaj zv5{q;TS@h=Cgg=`8h%8T7|Wxh+f2Dae?k<29&BbIPv42XnF=!?l$HSVSj&9krWK3f z!x|d3GUe$>$YynGzvU~7!2#NN>DXf!B~Ok0x1LTNXoPO3>)~}0gRTBdYg3{0X{BLO zZfrHxOGb!`3O-%z*At7n3b!dTg7N&9UqG~%_ae32LKG|6Hv?G9y`%PmnO{(`^#}`E zG=v>f^3WWg!jm2)%Y!^d6E9YMB zUZT>da57aX`pB@q%PkqSBuTh^!uTd#1S2@7{&0{SG9FqDo9h$GzEyfW!;{LgLD=AYh!CH)xY*EtCj;xfTei&pURbK0{}`5KvgN{ zur!ckQ@`Rpn{&UQ@B=6C-P~Ip==tc6foi|HxIQ+-2A^1R*^sa~FpQe7HraJ-XmOJ~ z%Ax^?ql};Q!661y>Xz_7&hnpp#4c*1TUw#p!QI~IQvUA%d>Z?Oqu256Yeh2|Q_fVCi^jTI7Jp{lpQzgWa(~bR@xhKggi>pG zI+#H?I012hc|L+}6~c*LFa!1HW8)C0 zY?&SzcQUjCBZwK)k)~GaV!+Tp59aqV1tSXTWyaYKyk6h&SOMF>mb+$x0OE7R3am&E zR7FlxJQrY1Gj4eV)o#9VKPHT4bN6lAs(d1y>uPfKSG4<9z~=yoh!e~8Z;THSw-$&8 z`-qZ4ZQOskb5`R$QfS{&7VT8Y2#aFjj-zr)67QWYfQ2dUMpA>A2CZf#V=jhIBc`04 zdHSTuODNu>L<|a^oXTUt;L?I?okUVUA`#8}n4i|C)3=CFuGGS5?T-fD`n23|FGL^I z7PjiV2;5i{`6*rS9Wl2_NVHQ25S)iponzt(_uzSDBO@ai?oTJR{W3yo=?(R73pdnx zqXtFCd|mKHMD%(wUo~9;(_MXk?#k3CBVMDQj@M4+LCVg?PRe`%1s{(1<@KQTG=+`D z%!w$;M6b^l2FW*tlrkCshz1-JwccNXag^sv1ZWs#tdfx5m;88*^Dy32@VX{4=|trxti3D@$-o;q<|)oAzYZ-^b41|H}h4nOFoId{80uky!hG-M@l{Ddm z5Y_BsN!8~|=9Ep38b&hV=6~6a416vPoNo1B`LpxTBJDu@tJa0Z#SM1Xw}O*%Y3{iaGe0u~zXcWM29 z-O3xxT2io+j6o3WjcbwU_5;&$;YxIq8{#vw6bAJgmN%t=Z0Jolun1b%d&b|WtAlqv zG5ePmzj$o(wndpeSNPUL4HLulMakG3#JqW(uxts^@|Kw-Nx!|yUF%N0FJ~zt68oOP zhM92sgi7Jh35FzILxH}ojG8-tNpC8C0_mnR3cBbn%{eWGyY+58XcetrZ*ok|y8la- z>XmjhWf(h##v+W~%s5Q8B1YkJE@SE$3ilZ^*KlS(@C123k$0we53LdDuq)#_b|Q+c z2z2JDR3aTRk$!TJVXbX2KrNxWe5LN8b_MHK2lN8+&HBf+g6d3%1yHm=@jRAnP)(qQ zZNgUk8Q4jHA5{z;ZiJt&)JRHmAsAfd&m}3spuD`;0ihHGAM<%_N=W-kfvQ$hYFB0v z0$*yPj7v&fuyfi~F=p|)ooP)qTGHXRJ4aROHl>pGRJl#=8!*C2{PA9qJ-83Lhynj- z94B%B6x#*htWB|bex{pD1sSWAps!pTg+>Ep^?i=ON_y_wFY1et79kfp=6IgsU|7Kn z(|>xmC;$Guqz{Np``=5aY44%em>yG{n^DVZImlNZR7e}h?eN`&M zxWN4JW=~fn?bIg2-(eg*5!;#y{ZbXvYsNp?qDs zbmgFqZ_*_TgmO7@F>PW9uzxSqK#V**z1If_Bh=0bIrsOgriyt+byA$d=96twQvOT4 zFEP83jR?=K2%11@q#rj^@;shTAWV5n1e7oNtru}ITZ7+IPK$u$ylQkVIRaiY2%9Kw zvQjF>=6`%_&;q_>Q$vw&_WZc5)$XJ5KQ$QZsNx~1drv}?D%;cn=m-^HYAOqY^E&Cz znLWWt_!1DO`4JGAT0<<*NeP4ILz4BZIDLY2xyrN)&kSTiI6Kn4GF7fQV%V?vNQsjc zEhR4Fj$gacg_N^cOy_;3a6^J#z<>g zs_59bN4(twFFgj^bE3p8Ey;zBW!_gZlf`WQ&F>d6ia?QD8iLryAeUenjNxpsawDSo zE#k-m49!O}fxh8v%SYn68iD$X6USR7FE0Ntw~LVo_@lrMm5p1QXvu4P-#g4)SOcVG>Eg4`j8=iPr&4w*w5+k`;rkoMEr3dUW4<_ zqW=o+T8DTW$J<+uQ^5j7jx1;dQUKEPs*B+tol1qfvt(~%JFEpMKq z_ntLT8P&qpWChb9Tu9F*%GR{V6WOgQv_;xEDQscV@(okfF07V*Oe}}!L($>S`ojcW zP|n}O(y5Ajh5@Id%!5jR_rNabb--k>rvLK7*(c%5VQT}KS=yY$G&zQPAc`%q<?1KRkSv!?zN*%avfhA8<;m$mlsXSwp6IT#y|y zW@%{U4}!!9FYg{ZHgS&g0XWNOIpX_&TjY+czw2(7Ub2<)p|>34r^ zXad8e+s}C?#i6T+i=dgNlZwpv1sP0Oy0}(%dDmzwPQ?3ZJ{a&4o?&7q+(+p8$iSBX z&>#VO60HJQ5$u1f$Vl4>w*Bt4SqdUXKQ4n6EjDNXv`s_@u0;+gyr?pDx zVn&{he5fiXhyyqjSUg}G-8#y@9OuT9)_}>G%@q!o+uhbrckWLPhO(6s9ktwQ7FJ|5 z!M~hRnZtu=at{~F)=(_}?rieW&yIHMk;s3=#N5#6vxA;3(?^a?xe1NvnM^x=<-ja5 zv#XK2m7>S(zImMv0EL~*RP2HtTW82T$# z2lzgd7)u*_=1-UADg{1n^Uk~c#nT*G@_Y0+Oj>k)Qd^i^L#u1~K(MKBBl&y_dh8`D zLao$Cdcp`}%(OBXE?Id@{3d&R5TI71450q5&jjeoS%FctTVaS;;d2_Lz(FTD6s4yN zCi2Y*PKM1zYtUxx=beO$Rcrfn*(`#!zGj@XV+Q)rLnY>Lr{`ut=b?X9sa63@_!fMJ zjHI|<=9jt4GwA?tT8r z1GZ&m|7pM#QIk$_BYhG66LJGDvo9cj_)5HoF~3T{tIi``Npk~+ZW8y?rF!;m4J}Qu zy3QPLUCQUM`33Hb+=iS-ZS7nJ1=8;nqC=EK@3r}-d<$`HtxL-;b8F;_-el@|{6=Le zgF65Ao0{=PKkDOwm4vph!7qgI>lO4a(z!Ql?d05DbPE3fh3C_URO!Q${=6y5!_`a# zBJXz*hJP@hB`%1hki$wtOo7N$9Sb4u$iUy*^I!gkOixVn{0VJKQ;(;a8gj$FOzJ78 zM1&8;0v)Ix@@$b9_qquNLL$9GrNKKL!)VSqKNhB#=d_{uH`H<1VVnm-2}H9Cp~40o zD4sBOfk|kaM_NH*axVpCd3Ui<#D z@SN$tEF4<5dvZ&z1#r`$>k=H=bl8mtISN?AaRC9`Uhx8JyRWmRJ z04PYN!@zHivVMrmEN!-WhQ}92&#QO1zRE)Mvm`uk=}%5_PXo06E-YPK_MNw5;CIVcHvV{SH~G&tXCa4EjZPme=}K>H zASe!Yr8?Zc?#91tO6p(K2rA%wa@sx!<)*Y|;dEs+gY`O*L%VU~6bj2N@MGv;;R=Wn zS9<^5>=IMty=(Jsxs)}!W3NN3F7rD#p7eQd;y?AhS$09|SW3DgBzPeTm9dy{ne0#g zJLRv`ENFv^T83P}F~MGKp-YTj&exPChyQZecFqkdaIN5$H6h9~kEf`BJ5?Qd4`-o{ zG<2ytOH+Z=p>^n}m#ECBr4W)ARbUuLXlg7DnRz}AtHFL*=%Ka>5)bAR-p5P2PD&%< ziR8(4wXV5|hShOcKHF<|geEW?TUF;fDvDlb|RYg*o(?nb`Gfm9!Jk_NCN{ z9XfqkF^`q@R6F_gU=OTlgzTB+udZ4gGWy)0bj9_~7hvlLt^8#`dKrrMyI)BYSZ>w7 zVf&BxE}KnNRyfW%A2$%BxP>CR5#1|>XS$tJmzE>(gRfrMiDw@XF_)Fp^%U;-t@0Xg z>r^)U=Mv*U3bLN?hlH&`8$V$!01BN{5WpfXtL*dnbzkf%4(W>ODYrq4LmTjfs4N_Rvt1(Fr#rBgxcuellHw!FPV&%?y7HyljT@ zkxcOYk+B`8U(0?@t!x$TMk@&Ek6bRg6X28K!?}g+-Bw$Yn=5i;E9yhdfDbBeS;&(7 zy`m3&WP>F)q;Q~5*+g%42@Gmiu}qKt@!qqR$E$>c1+%ONHfXkJ#I2DWRJl-tEi^xJ zpccZs+-A#$D8wbqVKUQ7jWH^$vWj`(w6|T3`)o!<9!&rm;_ug!N_&sb)ZlnOKjxY! zaWX4rQ3S6C*}u?{0pOGr9^@;yw}`v4 zN#+H^u15gUcv3Rm(H(#ba&=}h3f+P*RJzC>@hhU?@H)%O1hsf?y*pyrPiZJ0{*{bJ z=?suW&yGnfI7*jt8{8%25IiWtl zw%ffo4)D&ldCrCr7T74;FNs{e6~vq2qkMs@R)`(y){luM`s|gg z3r&Zbtc}KNPP@$W+=L0TFv)L@X2^GlfONsu)Nrz+srOph2ug5A6I+x`qBx)#r~`gxdZ>b~iD zQU=+Z`J2jsucmytbL~2sLPUWO0nlP2A3)ZrRqTh(S;Y3+-M(#|S(cs$9XpJD1%Jb& z*8zRVO=9##=H89qbvD^FS`?@}c18ooko7it%T`@Hy0E}$zM>_m5lpiv{|V%~eR2^+ zwDGraci`C&hrQR0t{c=SGoHw~?;+yYSa+4C+X`Y~Ks(YWY>_t(-T1H@!yW1)o%@%w zFS*I_CuPAHKU=sg1-by;2#)aVYPru`x5igLM0tBxLi-@`Tn;?CC~k_eOOP)Z1FOMY zCR(UskAq0VUdf!kA=H4K1*;JKbsV!`_`NjD2p7pJ9qnAX!}z<$kk$+^d#NSUw;}6y zUctc7x_FX? zR{d{&wA?qVcnTBJgV{D-cM);%L+0uAgfqCKEA&^4>#OYOFT!r?X7X4LI zuxtMUy^{szi#}&OFH@**cIgO3xs4&p>wZj$J7`Cy4(xkp6!CY-|47KJ0EE?BaL>S} z?xo);{PyD|ki*T~xjDwW4^V}|{>c9=XdtYOMGCT@B}@TeOv=xKnDooez>HZzB9{$21TNA`O%k5@+}O=-)2 z&`m}Uy!L0Ju+trTAqp<%Y!Dk;DPqV|Kwp8v**kC}P<>_!IQ?lqIlo8>MYTuh7;(M4u5S0`oJk}a*wObA7cpok97gqU6m@qm>FU)On|1QIIoLhrbg-Vv4Mbm z-(xLvm2DLXa^+Cl>Ea3ix@zGv=td_SHEyREH9KK#}hES>CP9+%J|&A zkVk^E5MiN)i0W*>)nf&tuIPB+f7KJr9Ox5+y^n76c8&n@GFuqEdPFOQr4P9H4>;D~ zQn2Oj`0D;|CDga;!8r>h#SYGqoTK+UAjkLDvO{=3<^k942YAPLl!)=Kp=Bf!u)eM_ zbN7%8SUOu2#H{q6fDc!1-yWiDtjSqi9|H)P8e2jHcy8UO z4PLhRY854G=2RX4qR`lw2#yq6pJ&DezafJNpy(=KJ+A>g?(fyn)9B&J25iacXp$zc->M8JNkwX(0eU*_n~e(3T_MZp zlcUWQDx7lGGoYkFi|q#p`5qKQAa*j~N50Vd#pgMOd;7EOOt|Vj-FP+)axP>9I7Q3) zyqUWHwX2zzjwW35{QmVg+juVRh)ne?ahQWdYbmRNG;nhgij|2fQZgrsOB!0Vo7^#5 z=OQIU&za!+OYMe30-wRb@>&~K3|;iMpm0Svns&`R_Eq!_QAZ>eC4KUYZjRKBg{MGa zcW*FP!*H1*(>7$KbzWm$VS-WM7*8wy(!+4(#aQLFYEnk;x5m{>nPMz!= zjGg+K{DQy7+JEW@ZEHlqPoWg;vx;^8-Y?3ek1qxk*l&tS!#usDlRpfEr4so}osnO3 z4WH(Gv+FEDjP>pjpsRIpT|s5w9{jRZ{WtU9eZ(EzVCEBAFZuovxW)3k2y2XsLwRCo zc$5XX7Y2f2j#wT#lze{}t{KXLW!w*cnpcDr7|@YP`HqYOUKx=Fl`n=g?^qJ`(3-^P){$K*2B`id1n-JVuv)O+@0=r!JKavI+$YJSr)ZRy1Pw z=7f#MaM~yY@P@m*f$}*mK*;Wc-1e8l-;4g`!6~}d`6`q;JgzuOYf#UHa2~`UHnWgGUG#dC4j%^SWUT@)N9R>#eUG8g)P0BsJ`F` zkL++8vGF^!UoIx!y))E9N^*@&fl?3ieP@tG%Nif?~Qvo zw>&^RghDQN>2{wP=PBm!H@1tt!|eXETICi7F~N<3V;e~Iq_+S6HZbE zCn7}}kdutlSG9R7NFt59BM4h+fV46fo6?e;eQi5sYXn|fI_v05mqKpB=svMz#fg~l zMdrCW!~kg959(83?TK32&v8|3&eT&HEt57b>gZGV>*7t%Vc81JM={#zd`6uwQuT^H zn7q(l|I4p((toQx!CE$&7!WGvO5EZBtV zuFN0Fgw9=Z*y3X(xGx03A9*2nJTh#q9GE0GrfJ@}rP>%OlLMD*K6z8)q$w6>$D;lO zn(Se68u&`Ne#M8eAk$Sv$FDR+HtY~-y}kONaqt;(6k)ntHBvlV+l z@>X`&!ezF5`lytWGKhsvBE6U;V6zPOrXplXMJbg&vuK!-?4a9vA-HWUswD|esBzoS zwsNa5enUx_`AQgqv6>8~XyB(S4)+MN+K!5TA~!PW25GYt_3PD%0y3co7L=cLKbBiK z!!0Ic;Uhli8j z*)FfLwy)QKu`B&dMMu5)OEOCDygAX-2@U5HFHQRpfBHo0w_?uv3cTUK>n9A^mR?L& zet4~h-ZTnuA?577juRi=Q+v^0=9M5~Gb>Aqmt{pf@0DhR;KZe_AN=dd&ALCnO9fdJ zohB`Da+VSs>l=`7n%{%tGZ4iiJ3x~Ou0%pSByAoEyV$k1^RgmE*#C37h4!m#ez_{pZmudGGV?#0pAu}!h+nD});cN6?F8N$uJXgx1I!-1hd4CP3!1~K? zC&Lb9Hw6kZ!Blv2^A{6l0 z()KV`W%ZNVYNU)NpKX~KUTO@WE|TKDy^stOyW)@40Hb*cUy`72W!$hm(hZY0pwEobCVLxCPN%>29BaAnciR@-EufzCo{7wKaxGy-9m6@7)6R6 zJw)*;o1a8R)35Du2auQ0$PLc(&0#ud{O};*kJSlS<-~rEc#(oK^@^CvhxKJ?Sl57r ze7q^2O>L0Xhj}EsIvIPn-4c`X=XlRk%6KsIWPvD24q1lP_povwnz)Xu?9ctI?OTAd z(zvz$``J%?LF|ydM&6P+G2^68gfJ4FtC+(Un)`L_JZN`2MN%l5!q_KbYf|0Y$)Cn` zmSU*-6C^u78XT`_OmCe^_j_{0Lvy$;4c98kS)Mu;NLRIgc}{d_-7_{ut7pisI{rk- z;|21@$t9JV!2;%;WE6BO2GfSf-H7rfi);Dhz2|}rj6!Kf6monLqpB6AOU9MiUEZM% zQ)EbC)%Up=T5r6+bHeMGdnUnT&3w;exrX^y$G_Z8>Bq*dKOXo#+>VtKTdVxt(q%r` zuC-6rcy%|CERbkCG9f6W9u>Tf>xo zrtoFAfSc;zN;GdtpLptMvuQ!-r<{<_=meY2+Yq?W2wFsK-vkG@SrrKezvvNTa#Q1} z`$AiohopV`dP@;0G>G-A+3b-@5;Pc}Du}n!TnEG15p!8`9M^XhrRh7<{TOQG)}y^9 zHhQCj3WWRcjer1d(W3=NXeU~?!#f)4gh&Ungm|X#m(q_XB{}-RmS7H;;>v4sRQT=w zk2~oDe-#KbutM}!1@#V9&ywVGAOyk(AESk9e|KsG47(ClYRFBb*M{$Q0WlSUsUOf;$*!fjm<)Q!^uSaLh-WjWCCUd9~$hxg*X-s8BeEJV2HKs!j2{j%OOb&SBOUan?ehJdvY}U-`P8mDM1z<93Or+b+H*D`m zPc6ItAECU{6kea`c`lFKu}v~0dbXYrTqeM0HZB^IqivjzbT+2o_o}wCK7e3m{`ujy z@K>?uxQdRxa`eIC;=dqFQZvC(pQrkAc1F!1Q~C(ywz5Pt8f9NAxb*vB5Ds_N3|OAK z#wo`K1_MuG7s?(NAg$7|6|chML^Upa?w`pSPIGyTM~di>9b|SXwJcL4_-$Ia?D)}s z0A}Y8a;hU-Xe$T4$Q}I*B3Qv{+sEPja}1}=nC@*ru>Y@ zt(fk5Lg$~Ls`sHK2pV7DtV5pUxkpk0Tajy@$(6Z$OV>L;j8gSTaAh&SU^c-oWmQK^ zE@Z+|P7>KYy$A&LeA53JKH#1n{+0MD+F8uLfslALO@^cOhI~dzh7#eY%0;wizo#_k@v_Ua&_tm78m+rjF)98OyukQczf!LJ zq`o&5-hdVF*MOBd54@g?THj0rx>ufzxfZ_DjV93UH(t4}x}28_a4 zwC}o!Dq%@ufmtmlAZ0%YZ{XwUr|29>|8i0m_C(omyL{fVwmBEy8h;daxv019FGc~* zNmaGE*SRkK`joftI+c=x0^zbOG}snk$*X)@)U2%Sv$0k8)GiA)M?)JQ0teppDp1?< zWy|PY1%o7UOT3f$@wH(3K0wFN=+K5fA~P&5MpB_IpGvnnl>3HUB3?R$58|Fw^p8De zW1Gk~J?0Lrjno?Q>QkBNHu3e7nYuDotKJznv2Uzrp0!7oBhVA8YgxZc+-L($qkCb3 z)){vypkox3|N2}RVv7$L3_~+r$`REvjM<*aVgHNJAs^cRp#2@5mSo=xE_mQpd*|aN z8~K(2nLtvB29eJ9c!~E?0`VSD3ya4=__7BsZWUmnlbU(5+iSCg-(ajqLxm2>q>&|wETT%9&JkZcQR>n^$Vf*Ud)RqSy8KciOR9JCxD`XB z=43N-W`rKcXRd8Uu=+z8nN%SW+Eg)SiDGFapO$e^UK)q|_lVZXDy$ElRuPZyh! zM?87Shm%cQ%&~f z`3$@oM$Ro8(c`m%9mfRqx063{c$$<-+iRe`jgzm#$_Z#?0lNhug@-M3C~Sc>VUOih z<(F_Wl!NlX1ASCN#lMpYQN8Qo>JYsaeI~(5goOIa>&7rcBkURi*N}cWmyfZg5`KYg{%04dm*Sk3LFZ#4RpJ&1wCs-xLy!P=S z_H2uDs8#jqVf}d1>bl~E|A*00ERN4wP*P1aZ{;HStZoVn^QragteIlD`xdk#xv@?^ z`5R3_0&@f`NR5Bg;7M%+9HdN6Y?|0XhQZQGC9H&49B~VaMstE>R;CzMVV)NU#;ugE z(hVq~2$|pTR)THiO!s_kJaV$nmk`rIH8>OgfG=_RSy9wk;HTeU1RmgK<72IM zAk|F1l%I%BUW)u=tt-7AiO*1*K{!v5RFzE62U>fS5W&VlpP6cm9*14un07e=tM501 z?v9cf!Z*=+1yhCnfnYd9O{=cZq91**9#%^u=0Og-^2g99blH~(k|Uq9o5k-T`@UT{ z$o9dnQ74k5!f*jJzF?C}R0E{#u1*03m&H3LHlY%11_XNKt2#+ z)m4vJ(*K|gB9+jqiG#2&@_c9QUHX9Nyn2h2`j8{k-&%`dWtH4zm>O76FTuwCuTz@K z>E};yXR;Yj!2GI)s5`M7+r(Y5VN^oamBEX?>Sd41zR{`KP6&M=iL9WWWWs?ZBEzP| zVY*&{=ROJp!*P*Z&&-otYxd=WSxGIQ6?}NUf7jg!awZgnF}U4939&+$yRU#HonO6> znYmUedX-S?h$Z%8)I@ZUeM_@BpVougBvlB;z{_UC-Te@G&3szZ%K~O!j&)*i^SfBe z$c+>XG*ehm`uU6IDuJ9b?p&&kcrpwy0+I$h#O9>XX4kg=Dch!WWAF(CiN(`Q-@!pD z>BnH2m>|R-3M`J8W3v(3Zo}t#8*N6gZvKU^;-jH5z+eBLv6gZEN{rHvH>*cf-+)Vh zF<1@7k_AUC++$+{7nN36lW=#h7R*X22`*gXJd1Si#bEg z>O7&YVJW)a*vcwKR(@?e*Q<^$9{y7uu`m5~(7IV1;~O>m53!-Q9svmDJXmt zux8lSYk^V1WLQ$GX?mO!YK(+gG3)>Guf(G9ssxCwD+s?N8y0iRRt}P^EV#F@mB-G*AI?GVT~U0 z13E>+c6a!BBqGLH9)h@#LsQI1MTv)7e6;JDo*IIV`tWJDaeL+^UN0@iU`AvU5|5I+ zc2Rul^L}J=GOb1@%?V}#&7Ay~%SO1+727F>p75T2h{b9)a zH0d3-Jv1)&_t1ugxXgMhkg1J3m<87qz0fJEX4#Q@N0&fE(Bvcfock5y!DAQTzC4&v zfhXass*9ohhLm^IFEZnFe7~GCeOQQsJN6B1NqaJV+g6V7lmu|@JxKxc3I@>3aFa#X zhKpC00?)w6m;pSTlhSyC49~(IrR{Wt7MLF6|I$ho!Mi6h8vF|(Vs_S&|8lfv1P9ka z_`l-OHHh4S)_#M-aLEI8=w_sFOYJdA*zdZkHdbDSaq`VtYZDt$D-4pueDD2F%DZDs zW2vW{MG%)5KH08ck=YQ^yQ7B3>F47I**wi)E-k>VaZ%TSfyG9Vx08}8o`Z?}23D=O z*zl?%-ECcd&@@F8zS@&IZeZL?Un1lpI{g_r>q?<22q*{W zSZd$NQA4Jsw2lS{AQYlL#2`iE75#3hFe%~4vRqFy?xEd;nWmLuU2I1XJr#uwl>xco z(uz;B-CXcpHLHBYeJWRf4>u8#7u0;7*FPM>Qw3y+Yjyuj{YV7&;15QZ>q!&UaMJd= zLG8H1JvvG&FGbHy*R1($#A&jY@D}FtPUCauikpr2tk9ON1Jgw zS1UWI`KGFh$?3uEFTw7%!BE_7+G@lNGanFt@9}rcKL3AbmW;E0KRZ5;4o>OK8BU1v zjw(!dpLCUt8-?RLWTds&G|AK3UQtmAUIXTW%SSdTUN0pFa5l5W?K0_D=DDsrMiqXCaMsPGn9rTVy!n#XwRt2`9SpaoOB;6m&;3RmVEFAPt zCLBNRSyU%zNO#QEU7;RqC1pnbtFh~LDRH2h0Y~3u>cl)tary=?3hFSswK{0KdRB~$ ze$6AI{i1u^(4G#sDSv_j9HOs*rNvIWv*+zYaTc6#Dy!)hk;lOmk70xUgd8mLqpmi@ z7=NO=n0M_6)9}QH4-Sjjc?C44-EYYL8#hjskmUu*I%gXWX%(W9Tnr-%MWt*AXqJMS z&>~_+p*96LtNH5pYmo+txsg7s&rTGOlL_G@ZX~wW_w?F*8DG_Ka4VyIQnxnu)fb}M zKjW=Deb1i!vKPW7X{H(HJqOQwVBcvUMzykE2v4}lUpR8=3Zxk;s09b7c=}bg?2Me8 zE~}&v<*- zpxk`0d1#ikn8j(>-abk&T8js9|Kt>wWQJbSnlz9ncaRD8n7_G;lxT_H>AU5~RbNao z-2z`n6900@4z~CCa$!7=_^jVi-A%J0`VI^ZTF}WhnVPSN8*_y;_q6w1Z1cqTJJVmr zI|8adNE%4cJt+?6Yjj<;AfLnkuN(RJGZcbTxiT9MZLX6W+2T{;n0)TIasdf8063vU zlqTGAf2-l#!^a?CJ(6Ip@e=xN-GZE;_IME^Di5wao|1$Xyzmh!NEey^6vlwyC=#9>EY1Np1^CHi&_2Vm|jsOs~bD;P%rM068Q-afrDgGM#?BPNE+NK1fi ztNVIOu3rjmLf$llFAaip$%v~p_EvK_I{nM@Y!aGX=;II7P=*_Kz`W%Ff1Vy99OocHLF) zM-@f$=!i%FaAT3O!((kBt15p#9ab5^OVjMJiXF@0oiqrjKC3}lYDaXcbvet~kx>|< z|1@w{LoO(*@zib7CIK-6U%mdZVE~!DMankn2vM3p3xq`JvdAAl%d&wLPs((pVOM9l z`N^9bbD9S2v}#{97?a`Drhux{SXGZ88>&#J<9cyfJTG*nQ?SUrBFhHMml8X{HbxM9 z&M9rHk_;DeE`tm~`_!g#Juj-|jA=j~IzB{JhOEq&N)hknf*~weZVs&k)J|H~2@A!; zc8puI8_cH&UvZ{)Wg)mpS#4mH*d{#fyMpQ0J>LBGw*G}LK;P;&9cp7Wfwof&B5Ka? z(>Xal9WsV%`yu81gLfy5joGgn1&C4H1Ljn0$1f}omUTrNU{l=}=E{16Qg8$X_uubS zN1A!I2h>KRiEdVsM=%8?s=>(LP+Fd|<|p+NLi$-&j9g$d`By&pV~GUJ!b} zn`ZQWtpbLYbWt8K7o$_PHni(;d~nE(xYVp3c${^6N4~tFlsKc3YX>lfw5@)O%ya{E zUh?+|6`_lx(nqhv+3BSrN!@f_+ocvnw)ky9 zYkb9z<%mtj*H(VeSAEMa5@-8X(eZNQ46HMEZw@Kh=xwxThoT27GKI6}xHTsba#%+E zQpf?l8LIxp8oM$dXg8X+IpmK@RG@EO?0E9mCS zY`4R#jgoBecvWRbLzu$z4e(D$|B*LeU9D(bIpw@q2GiGnIkZP*mLV3lY^-=V76e-v z>m3^$D%JsOL(coE!>oyy=>r8j^IpG0rU4c4>^v!w6^iWrXJsP&WYiEcX^dsIaJZGCr%?p`4Sy*JZmTS&1a~v=DU;@?TW4K9v|xP;Zd-B1C^n48l2odxREv8Ni0< zg;E*d{L0=AgnxN#7B;dUzIXh>3r#-F&Z;Ms)Di zjx51}X}E`w^IE1FSXf0=@~UdKl8qxNt|IKR39xpi5#Nb?Y$zwQ#q3`+V>Dl3#Aohl zX#;RQ(=4udk`GR)I2&|!`yKkA1r0%k?hpgxT=AMdHFUqXO1p^#3Np=!M^}B{?U>vS zpV%2+J}Pc;z(Yg1HJ0}j$^d!>TF7EoV6VxOSDUwu6*6%ZZ{LtHzt08a-AbvYg{-m5 z{c6lYHDKI7FlLyBrS=pYN3-0=2S%ycqYhmq70%}gAhqf5lcB@WA>+XhuQP2F%+rY4 zE_Gt7+uG+j;{A&DO+)O+>hR`&?#fz?+bXbXt=7zSc~G(2gK3Xad>1IghsA4iO`C_w z1{ysP`7CBae2AP5bzBP3@oRE&gaG+xzs*0T7VMC z;Kt-4h}G+i0R4HlZ0{$Ltu`2H3B!N(5pjm(NK+L(d<@k<0%h-5TRNZW7rBb^gvO+P z6zEt2m-!Kc&RuV$HB(k%AOwQ3h78WDk)eG4KnQG>8^_4dH^qc5TJlj|#<&gIe8BghKy2xY%Fs88xI^j9Mjh?} z{x*PsdYw>Dp84-r-M%pj_PW>c$B4L+(6QvG9{Rkg8fv*r`p1}UD<7y&ae_KM_|*(k z+`4tVfjXGT6_xnMjqn$6YD}>j8+=f=JCs9@f487S``(6n!AkmRv*aejr1}MqfqyaB zEcZW87q)Vx#y!3dOo+mhktR-u&FxMDhHzvu+}g&E;I4s#QD;`@wzgEKKZW9i@`{#M~o$1|1TeZFH> ztm^b1UzW|l@FyrQ$eum+6A{x2e=xJNfg!5_F5%L#a_j7ClLe0GhE8?O+DP1tl3Y!j zYDi^Q$ywgqF-7PJKU%evFIS4;$jKi9c3T{x7nguD~g((zCR)M*lFoK{k zY5~pryIhP^nrqvn;14+PKQ=$5t?nsyZGKFwbj;OA>}+3L$P{-xYB&oJmw*k5~wi_^fn{p%cP31@x?(ft@So!@-=!9e;Vq2zk_5?e&<|L zggNUxlu`AlP74&1#mXmhLxNDVo-JVjEs$tNUuXc5V9-89Fx>?WDlnA1MBNqS>9prA)tP@MIuL_Bew0onrb3%>eiL? zl%6i<&FINXs73T>JLCf9?vW;?gi(1Y-R6*;Hc<6c2!Q9|#%E`^$|4Vgk4dcDcRH8~h@>Wz?M=bp>N)UU z1TiX&kwqTVJfV`g6s+0-u%A(KlT!u>u22qxF|en6zc3EsyS_GnQuH1Q#Ne zhhtrF{Zb)1-MVD>+E&ypPG$x|jTIE-Y2nOdL&go5I z-3@^HsnU$MzD5U5)Z!P=8U}tXZJIPtW+^Z?_*DXwH~(_NU!oPu{>I>q|K_8Iw*!4O z3>7$PAhHwUvNVjO5^$&gSZK-py+s_zsL>@@TzlH-ox<9la{-7+#md{b_doNMTy;&g zg`Go&$0tmazPUtl)N}8~JkMj+_H2Z*#zJXS^1^t5UIz`eZKs$tW3tKm)i!7W2FNOMWGfO|+~kko0b~zB)8J`io}2N1#Ef%2?#MgSVnaJfyVO?7gEl zQh_BH`erw@XqS{%lJ`OE@PM+xf2$W17nfWa*moa-*P~cUVsS)Q$Bp2EponD8J207gq|^P+FVg^A*lbBYKB@g(820#bz#d>Y4dQL#%Q9ABy~nMxTGtf^Zn^&;wXspO zq$Vdr=QAq49ivRiT9ut|2=N)Xuu&4dy(Mr3A-Bc)%d+Z(^E3sLhU(1%!yqQ_{%|@w z8XET1>?Grw(UpL2&<%vvRdWd2#K>zrT%j)*Mp_pK$D>3-4~|=PT6kULlQ+$JJA2{@ z_ZCwt77I=6c8m#OLE2CG?koI-&6m?Yumf^m4)ialHX3EE_%!zCJ5V!gbM|MqeY4X# zDc|uhDe>OrT3db}FE>6!SwylGXlmL8uot_H^v?FaJQbH)ZJf z0cAX_E@8h!MB9VaI_Y8QLoDMtXYWHxlKq#HJLqMpH9)33fVsW699~&!{kL?O_!fdm zQq_SE2o^!f$`#u*ynPzud)Tf_ZH#prz8oQWEszv_cnqz^UJYdHUk>%F;W!+?r3CNa zVzJZ#55)K(9#S314C{Y}SLCIgagLBUgnspgw~NKj@naz2W@BoE-3*HFew(4`#G`FJ zub3>zq0xSW4v%VVd{ zSioU6HghET_grnwat^tExOoyI>T^CJW2-Or9cbuyJm+#Y@_Eu~?_sw*ozKe5L6<@u z7&rw!(de7NnzwzetZC(vxd%QIq$}GowcCehPr3Ug7@5Dws4_22v8g&mg7D~_vW;Y; zb>J+52DbfFRu~{F_-4XR>I6>g05HC8rNHJqSIw}vG_V4wZ<_JKB4HLr4agkpJhb_* zS+~nE>%`_EVKHryFonxa+9LEJgwS$72mI_Lo6+F8EVMI?N>__$0hnh|D8!UlN=Z2x z2EWr`#0geyFKNgZPpyFoEUJQ;I4=8EA4yP0p0d=^ew|EopO*wH4N#I~1-=^E?c8$& z;OpRIx=SreZ-lNmD(}vl2JZG60ZHus&+Fft)3~XYPuv4^xnVv8EqTPUO2&D~O$)}| z8g!o82dBol)$BPBQy~t1$Bo~$&iqpI*WXzbxlfi*O?9O%H+!w`8(`Dyyo@7??1jg} z@jnDTBq>!CGcWz%V`=GrG>xjIl=IdTMIf3S4WJ}Z@?4K_ZpliowjxE zu-Y8jBNm%=iP;N8gE~q1Zc+3x!^~loYd_S~oLXATHFbOGZ)etX*F|4u%)B!J7N^iE z$mZwwD}0sJ0*2?V5au8DNPdG$+Ij~A`eIDjadrhwGImm&Mg34xoVr(+pkXU(OTeWe zD+SEg`439kdGoN=r%Uk(d*^dn%;OagwkJPv?F|PiVmeUB)`pZsag>ZP{BJgrwL=JL zkWlm)8r4|xtVsr&8<*~%?02I8d>NO&^;|efuNpmOyIWYP(vYKOXIuYrE;cu1jM;bj zBnkIsj@A*jy!iL(kNl`P|9i|SJ;2QvD&o!aId!$>6gZUlsDe#=MJ*KtG#*|c(~2?Q z4X#(l`WE~x=5*Y7W3`#a#BCNTn4DR?pN+cGE~>yx+bkX2@9!S>*7O z$00GgSD`ePBHM$Zfq1fmK8kvPCLl+KksCa_pzP?+X?@_~uVX$N5yTz8A!SXzY+6L3 z`xD@`5L^x2YdFo+9hZ2`$U0WX2J9aEfb|iGjri`vCnPO5Ea07J^oo>k!P46)jB{wx);P~0w+tUIoK!bE- zZ(!B%Aq1c@sWLl}FG^WZ8Z}?y(OG;UJiz^2&9UD??L*Xu{r6+)Zn|U3Qe4(k&M*N~ zlhy(_RWxQiVNd-*)O0;!4G5EUvf=kLGLv14prztD@j-M5>*&9nDnMJl zoT8K}CQAxUAAk{e&u^WRBCtw0t<<-jws_RD@L_*;xtR=$I6@6M@GooKc~}{tsd%lJ z7Ym6#3-i8yjK9SwxHj_~1Yud>j2av@-KO|fjji)yC6Rh`gHdzFYzf37qXPZe6q>@oKyKYwZtlt;17m<}C51U()up@xZERTfP~wt1 z`hSH`HFlmdZtJnDY#3VCUdByXEmY0aE);3w>l9myIc(2kMv0aWCPzSiZX{JSI$4U8 zFs8UGJt?8s!@Derqg%lPC=F(qmm8L=RPG2${eva%!%=L2?`xK;1QMo!Q?H$k@*tFJ zygB0!R?j0a+|OGbwau7n7|x397GZr&^ZJ)}H*;;H$o}B4Vp<_c37ZF*LTXM*W2$2J zMoJnY3U*{@ku=N1{vxql6a5+nY1Ik;a$dw3>Pz}cF4y~US}V08Keu`*0Wj6u3V9pn;H3)ox=F719C!FPvdacMC+rx@+v$2xr9~1YrG#Xrp|F}l2;TmWw0qhPMB9P@8r!yQ+qUhbW7}58 zwr$(CZQC|)|G{~<&+`lR*tM!oFk7Ctj3c}urQ`EBdY5}PMVe!TM~#1f#92wPW!zs8 zdaiUe(!pYl;AScRa4DAkRTre~32?7RyBQP20Tw<6B+zYl07p|1)`6};Pl$+z+7x$) z2Z-bi;t6t_0F<%GlLR}^DKW1yN&EM4OVFRu!_rzI5YaFCHHLsw)!~u_8vwEpFYNA36#N;=>%9|Qcq+#zQ$&ICF2K=J7)yFC#+}qaP~2=>V%N;Y zvs+ATE$~6kVr<$7GzpxLV4x}(c9E@iG z4|9ygDR8QB?!03^3xuE*wDez&6Jv^h<-?_t4MF1?$3)aAoE*mYaML^mk6+==xFK^M z-dh5r&GtM%=E+v1W4T1}cueXg^{b?z#jRe+b5j-JLD(%<$l?%d=!i%FnoLXZ#2e*1 zAlY~h2aJL}tBrQ<^z3x|>jRWb?7@(=+Y}hmRV&Ty!zJtFr-je&IWL1pw^Q(ygHiFuS24;xzHlTSvTXSW7Z&>FWSG zhw?AlAUJ(*39CM^8p%`#x(`63tuuYAE@^KxFeHBivlsyZrT_wvmZUpWjun@&buG$C z%`9+}S%O=za^XvI^i+k-PZOu<+SD>OSId)4h#Pz-=-{K_IupKfSNGTx8d2Q+&Q3UP z7XuoyQ=C~&ydRq{p-ln&Y5Uu80w*5%bw+G1d;leU0oChIN2Mz3*Xr5RCY=pAOKi1s zK5jpmY;U4t9YB1plOj~jV(qhR&K+6_X<(g-GKt&lwsw+<+;?D#oJ|52X@WG%Z=jdh z_uJkbO9Jz%{b6(P8Ip~jH07kpSh|AZn}{ZN=o0u~aw=~n+cs`|iU-ajBEcR=uZ8orDp5as+aT+s5SzFUyGFgMSg==7H z)2v69Up!_q5q`f=)1dTrD*B^)mZrlt(VZG5epT~nfpaQe+*Qoif;_tZ8}DMMcEV#b zw1{N+e!4iwb{Tg`!qp_Bs@5sh9n}oHkt;;_`d?=CJ2k&=WwV`lckCCsuKxMAttnaa zUt7-b95rp9)28Rh%j=Q=G+n=|{2!;yHN)mVUjN$r-eM%KaIY5g4jbjWRX4Hgd+vyL$ z$*Rc7d;q}(oHtxVyW^ZwAT?6R_fwHp8D=*1WBat&KxwT=EpV|oDG~NGSKiRPR-`E* zro{~KZ0?)iV`BC%K>9UM^Q{v$hm#nKp@Sr`UzQ(i6FG(zGrFu!42MbYI3v87@y|<+ zt~45B!$hHZHhC4CwEEQ`le93!@yWwEndkv-8%G05`nCqcR7O}TP^&^D;j9LXQM8&J z-U7&&`(tSmy*1C`PIm&yv6f$RkBj1d!YYcGnNW)YwOXvJU8}ljt=f=PU9^=~)FRFC zSoM%QMS0yaSrOnQcG;US<1xv?YZ?hWrdfF`wn{lVtU00#e{&3?bjNand0BrDx1fZa z!_26kqxdL%k4L!ieBQhB8{ls#Eot~ zJ1J|Kk>}{zRtLz%k8_>XG@WHEd9f{LM~!|knDC8oLiMmUC|nixGWWKG*gOd2vWT-a znYF7dpM3zP(m`1S$ky_L)+Y)k>ykbO{IbviV>mI~2(tGp3L*-Iq6}LzSspp{;V{?p z#5mzm!R#k21hKQ&XB5_vbz}!J7DTSG2nZH|Z>fnuQv_5gk_QgkCSt-M2U2XkB9*GS zkAh$TOh17$rXQ3B1=CqatIIJU5DS5Q#bAwzuSAF~gw1EsPVeXJ7QA{JncJmDzW7e7 zC0Er739ggTNuMaxf_+>vH-NfsP+vE2Di|%+qjIZP|3-KvuO>wJjOb9vPNoDZ7b0wKwL9OK8maFC441tbwA?c|!;x(;i z`Qkm~e5uk4#95A3xlgOMB%OL(#AlokR-kLC>*{ZF`fUw!^1mUkH4l~O|jXjjqiXg#L$>n zl}QA%__4FeXIwj9I1H`K5_Nonb!r-U4AA(G9+pnSNS!oM5sG#Ju%w=7CrHM^B9}|Y zxOLMf`QUbo(8fV37 z*gr`iu%*Sr0PB(~WKCWzx{-g_FeDE`JDUIX@28pe$_(jzoJV}fg z-y`9{NdunIA1fr+fmYs*ySk2PCqMsnYZJT*+~O(2AJ;4c#AbZat_=D!+G?j7MK*am zgzag-7pa9#5oWPcwFh-OEW8+?B&!^b%mzo_oBQQLHoTW0p_(+n2E-G^SztHCn;HaD z6K}WPT=AWd+uPyLjI|G(q(l~g9}awQ0V>xr()W5VJNEaW`@h`HX9OcU1Ly?Haumvu zdS^zA7h|s zjdS@dGDCrsFM}S0a96#TerKtBB8Pm+YSfZJ-)*hO)!U;g66Dh)<-M9+Xpa_Gcaf4Leve;!pm5$xDzHbs~Wt zUhU=}yb3bB=54Bo#g5v4Ie)g~f!}TGkRTZ_uxQb(`XUg3YXE`90ae=NxcnNpBts6K zDc&fkl;He1;KHXfu8cK`UW3DFdKiCJZT!1`Mj9_nH#tR}j11X(n@!Jwe4aGF3Y*fn zHWNRW)frfY97@m^{FDPpz{TqhT6RC-XDQD@i*&&QluayNxm8nZ%W&2*I$beo1HHZw zhNg&lFBfn)55k%9YuuCh`DlqcrcsFUg^-tISlL~L_zh8MZ>g0g3luQeSRG%pU6WXX z;#frzX4eC&znyJ_vw&m@1&R5X2?)lElpcdEP@VRLpB!IcQs6vFNyr}<)HOK6q&x$* z3-!IzgvAgXJBxQ>QJT}qs_Y{iN@Cj>8;bU2%5|sp!hgAKE((R1N9%3R&D87B-i z9wprAJO7UzqnBI0xXv1LTatWQ#%;`MB`J1`@Ps~UTe#yDFI)4It`=0yXFDN4)#0`b zJKv;TtdmE$F>j)&ziBoM5=MiXv=Ao;QH#loD`VrqeXvj&w|jHk8ehGvUMzn4UX)yU!fF-Tb0hdzX z&9jKaAjaJ!nUq>SSoe=wg72_F0Ngm!}p^HQ3)if9EPH1{D9_5ux{ z(gjn`kIFD_RgY{Z>z43OQ?zAa}Xpq;Lnk<5t0()fj`Q;B8ingzcS(GQy`YlL z<+iOQ9++pU=%rcRE5cgxbHE}ffC9E1AgWvFBUi;@0Yd4)0Ukzv|XH_EcF*g|s0ldSo4b}Fd0 zBdJ@?z6O`M=-ZLDXucaI`(KM~b%WNot+-ebjb>phLrwj~rt>rM{hEvg(?ZiR%pey; z=shOu5mw#H6f=G6-f}budX~-y+uf2mSZUSU;OHmp102BcQ2KA+CDp%^zoluhOESo4 ztOOtAa|^5EVu02m3C}6w)H7h*0l;Ynl0&C{C{SbSA`TbxP? z4O#f{aCG_&k^PF4pdJu004S!=R!WW>v=dUG?Vm4`4C_Jud+9Ind_ODllj(rJV0E05 zW7G#oU9|5;@`ZWmhVwTd!ZTwaP&PoAQ<|X3;r!Cz4Y7s6%wc~gP6kG&@L8XVrhHH$ z)NZapZeKsV&IQb#H|WIr?)x2yx+bi?+~(l5N}tp5GX5SXA!D5&htl_C6>rS3m{fu4 z`jzsZROU?!D<2z~CAFuVowD{NN=tIAm_*y7rs&)6>_=ZKA;>CjzJRAnPeOyz(ow89 zVN7OFxwWyJzcc~cFRqr(Be??y6|olBNZdv9QJ(&n!^HcSKFjq-5-m;Qym-(rn*8a? zIKuzS);N8^?)If6<1L!FcYK7vS!`AxR%USrz=dDJL42|^l{l&Y>Y2lv{#7Icuv{b# zI3#=o&Qu;Z_PA^DK?daAiEVEhv$%Dgi$pJi5%eCikl$Iqhvw&yXTXrSr_>#;kA@}d z%|t9i)Y)_L{ip$S?B2}eAe3*JuU(TMl)Tyuym~RPqoMN}KY{dA6lzA+NP(%kIUsU| z2cD97z*N@xxHZm_tgj7Aw^56ExRdoquZcM7=gLHbdc-SUzQhVT(E-N4Qx{k zdTwf01)rjCL@5NAsW;{~LO>jEI*-`N4BX*33GlORM}uFh54Y(ELe_QGVH0>H%;^{p z9H|Gbx@cN94!3C;`FMN$yuk#0RkZl`-Aq;@#hV*?V6Kwb@vp-05A&rHK)=}t+GOpM zSFSnFgz*^ngb{xoPxy%+IC{)rnm8XkYjd^u$LrcQ4o!szS>ch2h_9~lzSwNnOP~i! zJffm|z}7++gxU3=QLXB?Z3h%p_vsux82o9g9!)7hvbDR$da)iUl-atWZbMKN>ADBm z;k)k6=&9?Z%LYIKT+#$xEr;#AYif>mQ%YS=tQrfmHvogcwvv@bCJI+_J2twQ`&>P~ zr}U3*S59XbarK89FD~||o2Gx|15}#Mq-td0ywIFnS>8c7nYDPwN-yKu#cA@me^Y^L z`RB%}yV^zS`IY^oGza4$yc_I{`*VXq-D=fnj|!bli*GZQ%vLjM`q;?}2AU2Y>Gyt~ zt4jJTBQo;jlNDK>Pk-PTW{>Z#qq9F=#a(&j$%31E962Z+`VXyLUWGBLoQ~)W zBxYVl4bB8OmY5@MX7ze?aoGKieD?x^3ZD-M?zJBwmck6h;M5 z9pHGXwW0}r-!+w6f2|*db_h&JrFzeiSVv<_T&+)N5)cIj}R^fa=bqhg4@iT3qdGN4CvzS*$WT^y_r+w59i#Uc4=7=gN4G| zPlUYiEf%mZoI|3^s1!HKztT7}BxGi4&EV(of)PcED)cb#O%XbYwZ3A}NyeUj&KCZd ztw(LF|Jr}5EZ!)4js#T5q~D>NV`ncOG zry83X!)mq=OoaB4&iBsh8mgp^&qGYI?IR!OC{IOrms^gk4cP==ni}IC`@?obQjLi` zbMAsB#3brDy8Jo`s!&z@U(U$Do8V~KyBv-3gxm4%AqRU=NCHy4Y7Xv^iU!j+q|iH_A#5tIbY2D!j;( z(Qqk-?u(0(Ge7d_B$A&xm9dkf5rqs z0^tF~D&_=~lOqrv6p3jwAjRWgf?HdFBN9vJSrxEae<8rk6p1NH<>7cirlWi=&xw$+ zAEv^(5sXuAZ}BQ+~@)fT!2%y*3f@=Ym%@7h+)rq+`0-C$jh zYQIkykFco%X5nXsWJ75$mr}E!=Of6ju80^Z@d(=a=jpPrN7{{rX{Ts*Ers`^-d4uU zIJYns_Gzb*D=1%{zR--6M9$+z1gqR`@6YwJ1+lF?MXH>Y=L-Pp^vD?0tq>s(<=_IK z=^c2U((KgA6PZw^;Vl^ecbVdV(*0^CwxcF#NsDYfd|w@Ah^H?zq7Rx1>%UtNOuhX- z^Lvu!^Fnt9@wa4-_NOYIF_=5@I_s-iJA%6rZG0xnP@Hthr5D6rv-dUfU)~w(WEEsv zfu;*XTPT(xWR%LG5&7A{tRylkg)5GtPO#v0f*yJhd76?+F7;hWWZf|PVB6+d3yIj* ztQ}Y-#dnU}oQNEZ0WSH8aC7!&E`OHx_EVj$Y%k*uq49FAzn>-ns{D}XdGOhHoVAmn ztu|Y}!_o_&_@r7$ErVv3(RVW^ljWBmeOh8qfT}vz_ zct53=qIi<-l-8|gwj-dr%Ru@MdU4WrI$ykh64k3pmnh>)jx3_pQ}z1Q(rzi4LGxR_ zJykSMSXL$kmTLDqYe(iBN%KO}J(Q@B#VccG!vVUwQ}(5>Nio$vRo0i@gdSy2z%y4= zBde#Wgc#hmiz{4AQes%f;Hm=im5(s@jX0l||3s%o;0XeGrWDt?(IM?V-==v2TR*KA zOeY#2VWt8|iWMj3%^MiIY^YlN3xqTTrXWWd-mQskyEIYaFNTC=Hc|DE*4DNc+`uNG zM^rz-2}S}@?+@0=nbsB%lf9!L1JR(Vw=A(yUk9Lcxn$ZH4(|j2W79WSjYV&^Z0>9t zmr{+)%l5b-&KhkO#731ZAS1wve5O5+n`0dK&N}~m@T6dU1gXWBFBJgc@#jz#U3KXwoJQ3Gb|M`Uxix4rnGmT#Q zL!RC76p)U3^9#YU2A zf=g8-%B#wy(F_NSEl>813&Y62w>9r4sLbLfw%X~%RnsM=3wVF3lzTB_6K8kS+wT4RRAhEn?g1DR0L4n%$#idmldQieJuhv zyhOy;?oC_jNt=a;<%P7Xp@0>dFX*4YJc{=ijM^z?@a* zi13$JXQsHU)IHq`&UDzMw{FUYt1WtRs*~a$t2lF&m#~JLBSE*EsK_IvvXiriAy;$k zRNiueg`92=m#gh1n4luuUE+r~(Z}IPx!8D=N%4`39vc>En2#Sq5fyjC%k;|ugV*r? z@*6aE48~(X-5=@KC~a1dUwxYLbhn8k4=K4*cLF-8XZa^#^V^A%RU!u&ZJ&Lq5+l!N zo2qu0z=?X3vOe$hYS8OjV3X4^*R`8gXXF(K1)WEQ9u%x%6urHLm2$l?J+lsXFoUZ* z)S7d~X}9gASER+TAx92R72qk1fHD4%t|PHhxF{Np{FI66VzF$bi5^F6Hn&| zse%sQaZES#cNp-s|+#_EQ+>!s*frlVzRL^DL9Iu)w^MVb3aBB1@%*$?9a-RaPT%7SkU@6J~1YjsaKTf2DKj~_gEn3RT72QD6rN-U}|hVYnSziGiv^eYSm_)?sCD#O-EkKElY&%dxPBVz%Uh9 zVMv7AH?Z{-xem(P;i$!GC)3uN|4KcwZD~giVYHc=9Aj{toL05 zt4l9;Jo}sA^xtqtinp;09z~DdBV7nV&Din^IIS#Hfe3L8W451YLg;BEa^QW2dhpmB z&9Gl--Q(OS=zgXHAvG@dz|XB?hGG*3+>YU|@Ee8RkO=z9}y>^M>)Bi0T4sRN5 zS+m{O-fkLQF+g|6eGLQzI5rq;!DRuQKL>WjATh{sbHl{+KP?~HQAOR(*o3B~YUwFO zp3!`lb;;x?F$NrP@{ za=l&x;J5r!UmoUpu^Q4%!L`8gl~}YCefESle!y z#()XiXb(nbD21X1`lvi)`p7B1T|m^;d79bswx4ZJ5YhrqzRf$7xdiAWn<4LJVm~c0 z-or+OI(XfSi$i+zo-sr+Y_(dD@bMpjpQl$BWCIFkr85X0;PU zYud`_r$(6a554(%lQR3upV8tVZ#sV17AnY|9ppbhtka+646tzz)~6L;E(i^2Vod$~ zSo5a;Mx_>pj%bQ)I5p>Tz|l`2@A$|YFRig_wqYrVGgBihvrt7w>UB@9APR2Pce{?S z;|k}V1&$a#9V>E7*Hi&>UWwc|x4nC4{%Ved4Qe2f)8xU;vQtXIwAiEKOBCe0@fT&V zMDQRnvIbS2&+Bu*xs(XsRG42oyrzt<6uZ$tMcqsFv!UsBd7X*9nM`L870@{P}bQY z<%}?jbfQcxU1D;csT25Jc>3t772mJ5wxQla<)WBA`5q*NPC!ec4F+!qGYBDo)nPQY zZ4&|FN91+mxth@XOwKB9V_g45_Xic&NX13lz=&Phc-@iS!2o#GAEM|AIE`Gq8nhUJW|G)fC9rI}>N>bC}tMr(U568nJhy+j@pF&R8 zABFa<6p-~U>3AH^vxko)8_wAZ!ib8jd?f?NkEgL3OGRG>hdkZMf0q-qh?ndQ5uAVI zP_%Yku~K}%qR?m(u3i>Fkc)!fQ|{O0Z3=@N;VHdYPpqHv*^nbVw^<7geO8bkxK_k{ zX!e4kw~tDWR(Vc5UevUm2D9D^wL|Cz=cb!a#TuBJgB(O%2qYkd9*sH;Z<=~D8;(bk z1q6&1sjH8aj_!sc3#z3FxAo{g|Jusg+Fmue?&1k6(n%xfe|tvpXJMzcWVU2XOg#tW zh%L8O%9pnfHf$#@G-4BltIpiw1jl%lHeaPnVCzZCeGFq?=fEI3u##BQvoc3Kb2^C{ z(K9nk^y&gs0U+6*><~op=ILHFPXGQ?LF5X0}(#*p81KHb@nsB!PhqEp!r@~aM}$eX687^Q6#LZF!p3%zv- z&j|n^yBMN)b2Iu8ve2#TM373OzL2c=3E1;*#sP9E3RE6ea6}qnHNZ8R3hAY7T*uYB zYW|+SmVl)^^+YaZWId_r)uWd(J57vN8#pMnvVc6c(TC3Xdv#lAuxE|SPwx;1K27Fg zTpH6#Ynex;+QS~N!jD+JitaE6PTyihpXnLNjEby$Yhqis=nx-PzS~eE@{mFdsgB%u z@`kl|=XY|?CN1h*Z#7R>wUQT`&e@C-3P2^fN>U4Sp`|w0$HfH&D92}Ufx!nOaU~Ny zW%6i$XYcQ4uS1nEf!P&4W)(1Bg1yMlndTc9jDhPB7q01VgQ@C3o~q9vG^no>8&(QP+L8AXbVdwNIk(Cj zn_cK9x)=hk-OYr&X?P)NdVS-*R@CHX(PeP1ChBMP=oU~gkxecJb-AAGE!BWI# zx+N(pjlL2|NQD9P< zcd~MYO=atwTftMW^xHcg8Kr`)9ZD2Iy2fX4AUPSs5GPBkY7sP*zRn?LN{Bz-a{URG z!Dhb~QRalpqkQx0kvMKJ9##Y`Bd?X1g*`h?Dm=l_m7N`W;T&mytl5XuG*&iiZU-2W zg~?vOfN|&F$}>v$zCj+lyt`xeN6-Kxr+DAf#W zx$i}uE7IM*ygkN~K{*k!jy%N;K7Wz##dQOcO(wJUHE;+`&DgtVuQe`aF z>}PL>fSky*hBIY8jp@H|ns8#nwE!wquCLei);(IreEmebBP^$t^&HO&nTvhH{lSVY zHUy==^~0WmYg4VhkQ?HHLoI$J(c<;xC&a4=Io z1<7p^hjg=t#+WoYG#cJx=%(EZ_s*rXR^%muljf}BFZBIV)Bf1ux5em+;zk@Qqw!yY zgS}@)Z)0lLx7171bzhQTSH)Gv#NZN4V(2%neO4z+)7h|453?it_V{5&0X~;3|}2_XT3Gi$CSO4#Zi0dRGDMtt7O0V zk5u+$?}wqPVqSP!eS7sV%_}-T<49s`+n#=s6cywjj-o2WL92*sye%Fd-%p*&LjEI9 z%Y&(2PGy0*U4y)NS^Jgfq6=xEuML)#qb76G6Es4)d}z+GI1_M@WIB0J2y%}l%JnTY z)IfxlbAED+oY6P~;n+kwC3u}UF5bIwYy1{5xk&3^2*kG0CfNsyqBP&hg6uKR;SA%B z)UiRJ{#4G)y0{JocHRwIygKXdHw4Xz8v^0LT)JW?k{Z(~(O+5PbC1Hee{bHc+2p<2 zlD>hxS@P_PMKOf94APyIC;1AJe|2vL3JC}Jei{x;12sy2p-_#oltWk zbPFaRoR04T&>`DcG>6mvJid{IFWlivYXjN5s$mmpI^C*iezsYSai0jw`~OqhLq zmIf29vL3+WBdXi6LhA3-wcw0$w!A#}j)p=D(RP4#`fkcMOa!+bRj*u+e@lCj&IQ;c zX)m)-kmE48l|aOfhUexRB#yI8pPia$`d?UxLi!;kx>#HpV?-x}0oq2($Gp)XqreN$({Ed4k>EEaK2SOtizEpZ78ws}`4p255Z*C7uxbh27JhMXy zFeLpqWDk`c{6RqR@4AE>Tmy~5&#td8Tc>kSa8AvhfvdS8_S?aJenh%Ii%sMe?H}6_ zwSx~tN7Z0zx4d$~hTRl9lNTP4q>HDht+$j><_AO6WWR=3GPyaw5p>$A z>zf%VYOC@@gI#vhpiopg3Qm6|%Zr$d&mUWb)*FB*5reZnTivuF_c5J9ZTnzak5AWEph-^FG}0guY+s{k%gAe zC&2MM7xgFxZenX;g>yYwvHJkF9yUGV&|u*hy1Z!E*W_^oFHbo!h=@Y`#9;ol`@N1} zziHuH`=PB{Q9tSsxzGtQBSeiCprbKhXr?dYM5E}?e? z9fY?+b!~(s<-1;=w5bH%j$*rUeoE|VoAW{xXEj>Wi)&CAs1U)CXNC|?I$)ix`#j)F zZw0<*K?y^neVE*00(fdPlBQHoDL#|Njv%|p0=aKrkyN!9xn8l-TsJ+i=u2Zhnqqo! zD>`R2KUANAp$yl?!kEWZ6Dca>PKi%ae#V8{HgGE!kK)$E1`2q>FfZ4;`WvpS#$@3w z(@TV&lU~wM8y=OvybJ$l2InAQ;Llywd7b}-Jk;C=y>wk9|7;#PQy~>4CSjvc2W%-h z1}r{B#}!iN*T!Mk3)doMuxyS^Rk_F1aGhk!up?ay?0qa$6$uERMhJqvyZluKLhEad zvHO#~^?m3Q{%dV?k={_5rF03)abJ=?Y>XxNdPE(h4C!aNm`>fwm3}X{q88JTz_K*Z z+Yn6Y$S@*Qgs{x5hH+zraO?`<>UH5Vpw74CIcy&LR$BMqJZTlBDGl5WBEZ73-UO{- z@YVp(4GY6wTd$vNfsn}qF{o1-Y5XGTfo0$T7<6ZlS5-q=puaPx`og{B0~5Si(>poE z3h$!#A$wDr4y{;+UkMz6I=JU{`|n&QtIh2f)X?^EK;`9j#MvIAF3ny6V!J8?lFZeD zp$`{`ZXg{1i%P;s;LkdYLmPwFgQnVe+*GV!J(Tpi4cvRL@a8_V9=83=%ipEynMB4f z{{vIJ$u7{w9jK;YMeW@^nd!Len~3kcSWx)^7LACO>Os~-V>u#S>kxd;;#GNNKq<6f zVl1aQYw|f)#{BUe%oL`H&^;>@CWCr@!ppLTB1g-7Jtjm*%xQ4ybC_bEt#3S3NJ%JQ z8NgoJdb5aRhA9II2VL`!Ulkdao4b>fLpa*+b>zje?T&?mOwG{Strm!a17R-v2=y+g z&nq~9XPk45&9?vmAThf{|0KvYfDoPaM^_C> z>vXHf+WcXt6B9l=S`n!FkfS&G@~Z~Vo}p!yj$SFf8g(@WWrU8LsN@EWuA9a*6gIB_ zLq)y#es;Wz#;lv!Y1%IDbFx6~LryO;aHoJvhOVbej2L!HJ{IMV7R|Ew;fKM2M1F=4Vkp>Atx2Dl?i`zt4k^*5xP~f6l1P+T2WZY$sNzg z;Ge3rckvUQV;X4G6-#R3vS(~XoC;exs~KVhUu_gF>zxg`tX#U&eksHUi0KRxmtH{G z#NdIfVb~L#kc&Dhvy%X85w0m2x4sH5;ALN%F1+a7CjZ;Mo8N!1u)=k@wQF1Ejl$G; z`Stg{1;4nlYxAza*rC3RAdtGunz|6DfdQ~ir*fi^CA5R3bUpAE@Q3nM*DjV206q^7 zv^34qcD%Q;%y8cKRdj%HE;#~OT}%E;Uo=U|7n%gF&*keDa5$s=N7FU0#3+wzK1Z`t zd2)8{cwGOer_)eG+uz8*(+Is*`LU?oavbab^^%4IE>mAQBQ9H??hQuOB_DucK6CSv zTH@d86|}QZfdBG}>WOP_Safa;@8jZREj3xbqLa!s0L*Y!6@luXXff(=ZCXrR0Jbaf z1}L2EAfseB9}Db-($8;08Lj5Ir<#UPNs+bNBOWPIH6c{1fwW~i`oY2|RkIZAF~T7@ z*^-v=tk%-Mv|iTT63MwuroRZyA&ILaQ>IBw-r-;Ox{N&x9p^ut*d7QAB9Fg8YEn&r zsSygm$(4Wh(__uEh#4w9%0n2p!>et8PO6wr)Kkti*h?Tx7H#HykiX3R7)A7oNTj=& z-@~-ug6pkdy8Qsn{L@UBSCINFd=%Fq_EC=>A%s3@TsgdJA(28>EyLzs@L;c(b8zE?SlzrmN)H>Cim=Z zSsx#|MM{e62t|3I^V*r)Q1HdU(SE)x(Kahr3nf0~@5?lal-PcK-hV*&0djsUtwwdG ztJc3Q`*`1Gdo0?GH?&)NmBi1U-O|X&IYzOm3*Bt1r>5C+7HJ`Djg=VY0t1;MLxtm6 z&oE5`gWLw)!JVEA6U+NS?4J!xEcvYnfu%2Xcf6y-eH4RWy&z;C&#{rAp5p zXu|Mc zTgkO4s{+?_Wx#>h)o!_vSZ8R#NN86YMXQQ#s}_u>4b>6P5oqG8Yx^+5W%X8w?uaXX z#ar+x_l~W2tf_C?y+C;+J;+fFf%bTUB2&w z;Hec^#F90OSGg#qm&(8!#KKi?_mdUk_!Qpl=gcx;s?~$pIcv0-Y#gbpq+&siTFM1J zhgqcrlw^UGzDeB6zKm^U%yglJMO5?&{ZORg06tfJ5pslS#8nw(u(url(@=yo8lbr9 zU$L&2RD5YAoVpok&8781%pb|8kvdAI>P(vgAco%<*HbL^)RTrY(6y$1(#wq*fPTCiL})W0T(4cN6EDKcm~7*sZg1di!jD48xv(@oMm~cuwi9&TpJY%bGhntkgTG{>#xw)t-{q zm~LAG)le<FkVGzIz>IWnaKYJpC;e2G(}Jnflv!$T|P1P0&2y> zTK?8aEpLA{yyZkpx>`6({+h@ zl9s2P*9el;50Ydwb>6T9PW_wS=F)F*V^eS32&3f?k1CNDV_`K9yb_uPvwQyqCf;R_ z+)~^ksr_rpTZg9VK%I} zT+Pdb^kv~!m2i*hBFZUOr3VX9Q=iR$CAiK+EnVk8u5OgnDSnFYjycHTDJd*ro^Je# zuzu6FuJ?kHuCSy-rg!CU4n{m=-p@wCQ_pD&69MIfkq~`RpAfT^aje()}93i9rc`mAnbkPZvpcbKyDU3Sbahm2qq0R&SmbN&$XI z(t7#=2*5VJh$a%mw{%Zn zuDE0aKqdl)(8=7rE26j?<~DCAJy+dX0CYNPh0rIMbGz%sOlClD_+?(1DALhI!Z$gf z?X=JKjCIOQ<|kYgBbgR3p;Va3+|q=1%D+}IQ_=#IJ2>V{?uFnQuZ-Tp=NjCZC$3bg zJ&0?7BA`8byZ?Yy{g%wyp;>0qURJQIIgaYhcJiliqph>WDpC__2yPZ627EXFAYV*< zK9<03I@=_9NScFuHhQ}$2x#?;kaFd2V4A(c3$K^u+x*t~byPsjV0Q1iPw+;8GCs7o zXW8$dq7SgvCPTzq7!;*g4_M#t#dr`~h@-y#Veera2|u)b%wQ{fF=g0vfc^xQP&j;p zC{*+GM$l&UXU%wXw-GE%9QP!MLbruf;6NzkGrx4s-$4G$-%9qL)Pz;#@p&{FJDk(yt$^aF6@oL3=7gn2YwF~lV(W7RlLaH~@l6w!NcaN~?f2d% zU15LZOGOeW#eNa zM{)VL-4kSC3$Sh}k$BwyYE=OWjH1Udszx@oEbt(Uv=w*E?O zAd<>;WOst|O>Rl^yf06w$6jNGp=sNgD-G{V&@cZ>Y~W*gsYVJ_ueTN+DAtC>U^LKB zidNB0la0DVbK;={p8X7!y+K(IEap2QM($jvoV$BcoB-z=H!ShDojF)h0#OAVZAf zLCnI&|BuO#IVQot*3Up#BgC)qii*TJj?`--3=!^E|9kRv=xK0LuhIe|@I*mQVBcc5Z z_vgKg9wPWK5$ATwv(5IDjrK|@0iI*$Ci<3A%@2N>al@8XC{$Mr*_5t%Yb&7`Rw`MM z+{CrfSFC21ZLDZ0>Sh#jT()&FLHHIms;iL1d@)u}|J+#c5`k7SbFiiH0*_0H&sv!O zo)gd)7gePZn<Pmh(L|8N z-MsA}FgViU6Kce!{WS{@->e3hv$TJ8Nf4PD^GV&-<3`1K7NkoHx~_U+<>Hko^6FKz zg4bsXx&%U4f!e&{j&*;)Nu5-Y4c59E!*D&n-$|$tF@Gq0$sYJ-HB!8SuZ$q(mf3Am z`ha~nXlN32u;5T`;ls412DIfPGU@vmkMw%wd zb3Gq@MLMeZ%iHwMGL^Y-NWcy7D8#x!Bv|3%_9-h>7x5K5YB{_c%t+6tyn# z#=893YypDRErjjOnp-@)tD~o`?eL%i$b)KNC;i*ijjad?i!&^HcH*ccp_uBANC4w& zZbm7B)uZOMs#9y1^2Z-p$z0FVN)a;dI%k;=K<_pW<)v=t=5_I#+GGu18Fm~C9s9|^ zFSBRRB*TvcqFwKHa^gBa-bv8?G|*H)I1ipt$}F^*5cOXZ=p!<*j$Fn={9VLs|71$# zCZ9REBolGcC-)&>I}Wy{c^t#&nOUFHVSdq;(ZcZUX?1KL$NVsbQ{sKVGHh?l#_U&6 zKWNsD0iI^s8ze8x$SEz;`VtNBc@GjwKK+8eIpSv3HsY1GLXzW550joPbe-dF>2f1@ zN13TOlq3X6Yx{Kh4y81+DCPINs=o)h0Y;O4nkmV5%R01&THS;yb&4xPjV6T4!AGtn z)ORRqJXu4x9MRoHf`^el#BnNWu$`p9VCHWDJy8I@=0N$)fF};VX5;A` z8&)N)=yfuYqMR1prs@tVF{=zpz)RxzwM5VjV4BKRiV1z<1oTx|*}Ndo@;a#OjRksa zMh9t<>k#JFEs8Eajyfh97BvBup5y+P{yGa8W99I`rVV=zPu%SlYb;F)hXd5GC&QGE zi7%jV)+arZPiKg>JMEo;1@Dp@Fn;V>_fc1CZ06z?(56U%!X0|YqWAjm9vBlm@nK_! z86M4}G7i-g1m!a*3Zxg`+opA^(Ob!bt!K7DF-vmM0n)Y8XXG5)!lux=8WwZIdKk(} zG}#8EF?CYd*Bxq@K`bNzn^ZphHu5e=40db=;J&}gB#Pzuh3%c80_Js>F$Vm%Q`ypN zUhMO1$WH-xZ#%FjiR$C(VUlHwoiBhs%B2+Op(|?#s%0D>_JC+9;w=xU=gvTcCoHMtPJm;l zFzcJiwhSB@b3-D^#>7{vZztdm%BqA~m*Xw}azO8)(mhp(c;hU{`3UiEdqEBnG@fAuzR1YxpEPb_oI0 z!v|ExQ96lVU*+H5zH!Sdq73pyf67}#`|mt+xlw1!Ds~$Q8WE#Y_5-hkChE}z6%$mK zUm`s2&BCDg#Ye~{;T7uB_K=4m8+t`yHb``DP!nT<1-FY0iz*q|ArRDABf}yj1eUtab%i*aXu{LK+p|9Jux(-Q-`-Ba(+zu zr&*Vl?gM!%HQ+@WKoU+fvdI?4WtCUPe)OUurUMpEwSSwmZVoA9lZgmT{gNRi<1rQG z9gWC)6&q+9LR>dHmOY!AdxLV!5yw2J0ZhAY2NTs={yzBi0Bj<+c|tuumWUQ(LS=Tx z*P;eAL%PcAUDrsJ21hEG{8x9<2^d8~6o+!g#bwZVO7Q>)PnAblh9H?;D(43&0q**%CiW2 zLn@j|{hU6zx9(0WQYDgQ#AQC&TQ%&vweG3}J*yV?oRzIg8a8h&U4QhnvU}}}pY{HT zS%lYYdM+<3Vp_$V{}OT}U{C~8bT!kp;|nCs2|sHSZN#4Fq+W++ct9)Rl_AQV%Cco_ zxkv83qQMKQB(6hHC&`1;`C+c<{uw_qk2|ko~ z>#$`k3roI&ie5!zO4|(y7&w9j1pi_psL?5JVR;c_smgR`B}I0QVJ$s zzgf|(aQR8fuv4=47T-DoB`2Hx{b^Z{-bP%@d@)uE8N`p4I>+tNUd{V$m?dVS;Je?F zd>UMVi-l&LAjJ6e6Pi^vZ;$IofW>zf7$g|lB;}HzlqWAaiR`kaD5AkLYW2Ye9o81O ztTL_%7BnMJN6_9`t#(B02mgEEn5ito}6cor#9QMPq%A}P!8=if2k>WoXw7Z4?9Dz79~9VBA3vV z*+f4?3KX>nYx>^?P^WL=aHs4NHlJ@oGf|QdaGed>#586TfBfUG>vG4Tazs+?yTNwF zvJXsT3?Lr!une$J$uF#7gRNE)whgosGqhYg3(O<%sKLn*_TY%%8C$lV;l^+`96lt< z#P$08>fUfytoU5>2((FeDgiV>r@5wV$^SCBf45YG0fzc)>mmCYg5oHCIStOHxZfvw zBgX+A2PTEQiBSJLFU5z1ezNi#@w@Wm?LThkzA|f{#%(C4q#0axA*S-P1cC%L8$vxU zLuR?A7G)Dp7KN#K>@C@g0qE||^V;`-L|St(UJ+9{aG+U%ywh6UM5`Xy#CBv9C5qoB z`sf2>KNKZ;fJY6a2qgPbiB(ib#->^$3=eXXB`bN`E!>po!Y;dyN9c2;R|U>y2C+Em z6Uwr*-j3LoqqlN&OKOCs@{<&81Tb*E6WbiuW;J%GSQ5FOgs*@~6A z=CMf%*j(>%AeIOuB1@)(&7X|Qo|L1J^P_@ zU4_RS39RQ|Jog%OTt+A)CZVwAE1I^9d`?~!S&_||p9$H?=n<@yERJ1Naq-^A_T6jc z892pXrc~ic?u@7m6RUX9rEyBYQQ8?~Q>*K{Qr%q$>LhvZFSELMynz{+%<4Av1v7B=sFDcQSst;h)^TBF%K zGM3NnG&t&##SreeAX9` z&EUt@I9<7NsgQXiVyGBv3d?YTGjkjHP?PIJvjYGqk`c{XyZJ3sZLd<>E2+W{Mm^cQ z;leK{$%~6WZF*XlFZQt#0fT^Ez8@n-Z<$7PQI|r=lyvW|lak|Gm87vwys~Sx02eKA zIJyEF&XP|&n*pK1>NJn=T#*Y+E%DQdfbIPW1m?A89Zl5krc?yyXCsMief4;Ayo~l` zOGUJhUKB~5z$oK=7W?Zb`LZ9WKU=CUq_3aoM7-7^1@ z%;Dyf3@sTsJt1Z5{k>p6#U=A{S?W})-|ZT>nGgC>^w*wot7;^93bN-8oWb{GzE`QS zm5DX{<5mpc=%=;J$8h%GgZy6J{b#-X`^r@3`wu0%5Mp_xzrCPz+@%e3#Rzikr>_YJ zwl;*BIEiC~CHi1%W0G+`NhTFQrze>MtVkyH{mKf;yYS$moWElQb}{GA79p zG*_X0Rf*Skbu+CRJO+|uzW`{?l#*wiM$=%LU@LoxzOrMeAw#o)EI!890zPJHCw{i< zw}$au&(JMp6~-m(LYt8{aG!BCjh0Bqr2meH#`2DIv2VeKx;xYzT!pHw` z$Kx@r(woQN35&fl#gif9h}N$f0l;59J>o`_X}#ff*3}VxBYifphl-F3SBmlf3SI*3 z9uDQwy+OK%(o-_b-0p59Cv`Ga2b@RY`=KW%Fu7l|tTj8m8FQDiGrF_C42t}OC|;1_ z6b^D!)yq`k`$Ij$36N6>m85D{{k;hWLRWtY=gYJ~UTtx27D|^z6{H9o~))vFeSAiL75wulS!RwaX_j|fw@S%$lnjZydozXsmdTjDznd3}|5 zgUF@{{mL3tWA)6#_`fN87sUD^=D4o18(B8PV5GQ-eRI+|iiqt&7NQ>aw$P0gMi{T* zzj$o@0%U1BI0!w5&m72dDy1(qdJ*OcEnj#v)o)OYguE)2{6+SeY46s!13sL^G%<{~ zuXqnfaH^?elTXOplCwi(Ci$rL!US3(E-Dd}Kx0+27aOFeO49_HdB@r2C_Zr#0WZhL5$S?`ibW3_fq7 z9wPLT!h^H8@i0uuFUdayNzbR->jB>|&cTyoK*P)N#STnHf20y)78zl>D&9L?PQ3J8SOvxIYN z-Oc03s?<{v{(wkPu>1u4p)U`!BzxmC6mH9%ha(8|BgRE%-Z9A;fK4fV%H2`xBfBXS z+LC6#3H8xe@CK+2QACJNJlW%SE-u~8JfYl|ut8U=oRtSV=A1s11<(#XGK|EejzSRdwQDCLhhGDnb&Z`z zY{EseOD1v3q!(duPJgkFr`+2a5GhLhFBcbd-WHBv@O;JT6m{_P9IWS}ANbDn#V}^I zQ1gtofwjm}r5G_Rw-)x``rCE*!{SDrp#dApP4qD;R1m$!$FL|*CDogP()Oh2Jv zeJG?pblA1PO)X+3e$JcvHLsx$g@Z`|n*|wM3)Oit7AM)w>wMbG146)6pt-TW31mFg z{5~L+`t7@nuDkLk)(^?hk@onY?7MQfRo>wkP+_Wf>JjxePuj|gXgbx8q?fNFoaF+Q z9@@e8e!Xp_smWoLLRj$L7+^lv#KCE<*zs~l}9Xm`I@xQ!vh(CW2E~ zUWGiNl0u6VW*0K_?fM0nEX`FLt76`0G}kpe>agf?UBn#jhKN%~9u&?M+TE;+I;Pt- za$D(915r&F)lH{zHcLu}2|_Pd^iKJ$V-KZkvkIj1s%7)vxtCY;w|+LI1EiXU8zppe zuX&vt-B7G2vEFjH2S?D(aWJtP7V_>~Nc_t;&44t9wPh$t4!<{>x2W83=>Fi+t}>LI z;*>3A^bEv+-sm28<&YyQJ@i&!mVM1{yM8wMbRT~e57VeIN@IX=ts-q{l+Qe6%Q(#6 z#Vow$Ii};^3ViNHuwfT}Xh*+$N{XCRT5QC0`zsuCS|R`psv-RjrQFV1!&CGp-bZ-K zY=QsnSG4y~!vKjGQp6KM-f|QWIkbRwfV^#UT;3gUq3+Y+zMr{WO@t(g(By5fgXhB# zC$T68yKPx&ljxrh7(N@&gG@Z>5fuVwy-BMctp71A)NUElAl8q;I6`vA07cZqbEjL6 zb9w!8^$~CJd(k0aV1!-|S|05x$+eOoJ%g;`AZ+=rBmNVAAqN zq?kK%fBjrcX|xp+g#4?fR1#H$HFlckzuNb3HKYbJ*>DBC9yTP{#ilA+gR%UCn}QI7JvM;!M zS{J$G7sc++9t@ol3S^J|fR{d&Db;u_0!~OR_p$!CRER~Re1Ri;E{ylmEYasJ?G+EE4TZKN6=Bl#BUf6iw z{f*g)1#4^gb-9Mi+#yb07wkB$uby=pJ9Zd&4RC`sqRv7xW)*E3!>~dqbtDnO{=<-y zOo&PsbAY*)1X-)5TOU#^oWyvAzFZ|T4b9ILul~*3bzx3#yJxZU8O485O#ik=hLqC!!t|$k`y}hU>3Qs)YGQaTvC83P z;lEnTN43A^2Wh^W!Dbr2zzcxW%VUBQZ9(}6o&bZ1-cai2QJ`j;0>1xpzJ=vqGfbM7PYL!9nP7o~@;0?fd&;6P)~I&bDSIH;c-^D$Jy+-2b$ag0OWf%p;owqV zIKbQMk`Oh&*Jk{%`*_dbT-0B9-?auC2b*{BZcAQ$gks>pOBF(jR}b#&&Y~UX2~*c} ze}0dTL|%+?`Z8~3zLdfU-yOis0Ljr>$97j7tuj zrB7`5>16(@eoyNq#6t00OHNvFQ-^FcSm*u*k(o!JI@XjivA!Y(>uPY8VHE&JeCDv$ z=pBt*(2WaJKS7bZfV32;`0h=Jj#AHLWr`~gp{c(x1U~hV@lNebpL-*J45Gl9YR-{J z6^mkEB83bRuQtunZ4eWeYEszw7;}6;Fys%LqnGXz2-rPg;T16>Dhn6O6zZg?_f)kb|lN_8*{^c5daot)FuWa~yMn#mmGsY!L=NGup2A`x-$sc)-MVVE0T3MB{EU})>IF~Bl;G9fe5C@8|+ zj;rEp(|;L-(9sWhfa=lDOYO`8)hZHH_-!TOfPrent4NkO^mBY>WQT|yw6QJ_M;L$( zBw*f`(@c!MMG78wI1i}F7D^$zX@mUjR}iRa>S{@oJ(vNWw1s2AMFKP4QRb8Q#V0kPe-~e%dI(qrHXCMS;+INJUi|77UDP0h;x=De! zt3PS@aqfi9h}x_OahPv(XqXnZ@sYKie+Ub01gGdcdD?ky)RedQvnsCp@cU0-b=Y(+ zxwpEESmg->>;%8e5C=wM(VrDld_AcYxBK&%I+Xt9j{3&ex~kKi8-D=lQM>nnM4i-X zjA@#dh7$&MY#QTRv9aExvi?T+k1tGz+GoKxI<3_$ne~Jt(Mj3-8U%`MP*IXHGHf&8 z)Ipz=Eh6}iOH*=~tLtfsWs7A7)CDQ`*3d}|?K^g{*^9{2EvWywM2I0uzI<)eGFj|r zi)Sk@24*2^Uenf_G-4)&dvPK9coV(rW^P|*Ho-wb%60J)|L@yuU-y*vLC&{BwC^_q zeK{{8-(J}X|{SK!KTf*Ti#$lsd|atEO#R;B{4mG!R6e&Ff%}jK#Rh{ zJZ?t~EB-hdbxQsQoYTtkKoIG0U?!0eTE4v+*!*HoRuiF;P34^BFz%j1{CjO|4=}=y z`!S!;o{4>91WZ%I-#MwCC8S$->GFfZ+e#|0l)vs?GdhJRj7paVlrw~N@aeT;nPI%4 zgDN77yd3dpW_}%;PLo|*B-oPrf;yDbMfgf6Qg5X7^Wf^PwL%epPf~q-bWv=ZvZ1+{ zeX4ycD(!2%dk$rSmt*8zTzDFkOt#KkY5K#KRyYdHpV1Aj!MvRu7i zPmGE<&Ky+J+jw`@Bjk_a$hYs`gKDYNLOy8zl;EKQn81J7O6{YP$JH)ac4dB}Z?E?b ztHb&rJvd2_J34&0Thf4!6pLk?YC}2gL)U9e^^~?k6jIg#=g%pLj$+V63smzXt`(Dc zYh9EajRUlg5RCsgIEH#l$otVqA{)U0W+T<~SWSGs*rHwRD!9JyF=Z8{I)@$Le$hf2 ztf_3aOG=Sm{yzNygJMNRz&nWobZK2(|EsPJ378q1MaQk~eSL~>BFQZ;TF>UmB_S`U zk06qnC}kOdY$a0nn?&a;=w)&co7MuW*#gkGW{@YyhM{TwJw76 z#5UH$WfW1w63m_0Sl_m*yjxNaZHZYgA_8B%+0?IPf%2=>Gl_L)TM?|a87CHH{Rc06 z{sbkO@8iL*<4HuHWBXV(r{T;mq3pjKg@+#`dR254K2#qUew-YOmry+y>b%uR6)!{8 zLLTx(dhH-rInjy)bzf+%_7>BJ9}^7^{mFw8TO=~?v3AB&wgi20Uhp)zC}ziUS? z4FSj5Acv8TT32Hp!rtZ8T8RyLWnOdl4GJtUN8|5apZRGZQyW>t6gt*Ft97xxRV%df zNiRqY(i%hhq29*1*qCuGe&270?6ofRwD!JoI(O+sh}MPm={z&PxV=;!)dJC50ei&5 z53$^siB_v2O`m*HA{>lNu&5|Cc*|c>`6}6aDz=K@vQuSMg9Y?BNysNUDO9yEyg2Ft z+?saxFEvzsvLtAIm$TsF`PXBN5lY zu{k;6Gx|ki<{pIBj?jB_Ul0Qwl@GcJN!+ZN6qj88NQ8az5{om>Iem$gbABtlQ65iY zAxiJOF5{fVkm;?sQ}c_m!t98`Qh zK%pzk=&B%WhCBm@Ul}x9uClZmE291=YR(O|endNv{kPn7YN?@RTgV(bwVyTyw0Xm3 zkoe+Bw~A#O@(VxkZenyf{zZ11TotpwTInz@Zg8NbxR|p0g<1WF2K)%7%dA2oR@lvw zcWh$=kTyX{cFSoHOt?07_C3h>l7R{Uss_&lnh~m>@&0kCMtKpg5E`8QFc1@l4#-)g z!BX$asJTkcmdVGaq7dHWPLsXjx7oukgnJFF2I^}WAnXAvO@JLsnrd{R+F50Z51l{h zNByxu^0tF2IP*@wFByj=fb}`?!LfM}sG2phHLz!8B7vq$I_E=|k5XNg$YD#b#2}v+ zL;UUFPtlzTj$t!8uWpW_%}6wDc$of*`QeGfC~m~I^ieW@8~peHPpQu+;P(zIp(qly z$**;rm3Np_-6>Ai)^mc<*cx(LPVBoI-iN8%_2??_spl`s!6*{0oP#NskaWB>O4_>b z$dN7CeOII69k$+^8QoRX?B8+jNVt8k=a>thGcMz~+hdL$vZ=jvd7V`}a&|@h*%BGRV86BxB%2(q4kx#3yzriJo-U8R?$7X(~uDAp;4 zO|8Li;hGf^HY;xl1W-LmEUVgPU{c$7?$5Q&9o=YlKK3`oz`n*}r^N!ARTi zRT}!1Kt2xWJBJ6$+0+>5?Jb&kROvM$Cnkcq z_!7OjYVrO(9u`YMbN9-jPmp8Hynq4aDU;56t@6P81__Sco^!C;NUNZ4rW3CC9byt? zBRtDLv=s}MpL!9QpU&ecVpSCQrDDK`slRaS3NjRhx<|$mH6Kx3?F>k+Oz0IKm2hK} z3Z#gG;s+<%tvs|cF6l5yf6xy*cnV+Ogz1NocYSabFtdI7GiXSYl0=mX$Ze#t+okTX z;XHaGj)A`&=t}DS+Jmg93>-KSe^=SwA{RJ~m>~IGxe4Z~ z2luwibaQrm^`T|ee{s!KBtCKJKe_CQ(tYC(Gyrgg&KkI|Xd&53Ri zm0|Lbk3x@w1Bx6AVn)CZKP2}w2=gprslUx!LP{fHt35|(*SE+U{pJek^v^mh>Xt}m zsT>(&{d|biSHjf{>VZjbLI@d695l3&230&6aA62@St~Z)jrTH z-ix+QutYGNSY3yu%vRR^-2LA=mgti4muzgR^U`)`vOi_rX30);$K3Fo>SFr16CC2! zKh`Um^KyNxgkvQobMf}=F#0tjC|yGb(?(WM&BX^?y~dd65ShTbJ75Foa9p*=pDI*E zaKl5nQ?{lbmm<$g*MerIi4q-T2(xw`t747Q~IT$2-%9ZvQ_FTCM zFFJM`2DV49lKIV10?pUIMkV~Rld_N`xSyG{2QU54p(~uDkfq|iig;c<144_~4N9Pa zjQJ~RQmB69&~Ke=U+yqk5SQhQT8~v84*mRwmsqLD7TDtTkV1yg!z<+G653|^T}b_0 zb{Yns^k}$J*mMq`DO{`y7c!nH8zD*T2HtLZQbJA{QelD2OpUJuug`)wmGeu-5rrEcJXZ!|tzK*|N#_cORHHm}~GW!Z z5r3{hnbI*27uVt=fB;MxeCNuN72ksk-^jIKM~c*rhG`e2=6O;BiRF-zjdKtrPWZ-> zCoP5B@1LgTs%vq)>LA)u=C4(EyxH{enKr26K zul!$CP~|3Ry{HX-0pM6TW+g@Ai%u$gx1=~=<pAjg3)W=$+++_-)(2lOhXLmIw>fj69;6Z%2w~fVGLsf zh@j6pOQxql#Sv*Q+DJ>=R?-(jS5GU#m#dcc~silDjskR{0$&?8t6OoM@h0+xzlX|L9YMDg~m?0IsBC z7;~ik@vva_y&nl*s+Y|C)XY`a0fSRUi_sLOv*m9CVh|P*hlXQUjwGFk*=H8WAT0r1 zF&%Q_CF+`5!sWgnZ%v4P)U@hg=3L8&X$)oZhhD5SPcJ5RnQ((hZr0W^PQ+8@dh3-8ymir$xV0KBNcsfRckb8YF&m#VPv;C&o#5eLYEh>4&la&Tz=+<@O_OM#>3X%FzW--GX zIq%iI*p9-XG5_plobI?3)9kXFv|+fRIU%erAubfygIjRfxc>tPT+4i{5?9LMUIe2 zkC#q=V!7jZ)hzJWGCFS2Kk#Ol{g>ZTu%x!_B`@|48*GD^m1@N9_#|~=BC{r>#vm~5 zb~*PwuZuq3y(2!T*XI{QKHCu8o@y+s9U~6iYANWyTFeunUm7+&dO@lr7Law^5)~@p z%d_ZTUNI`z&4x2qsZ%BsIO1Dw-5HBPWnKRrYN6aayN||aU;{czwQ2?qDBs);f`{X4 zb@=gkH|!n^Bt zH!wrU^kZp4yK?W6C%PsOh+8=Et zQygDiAv@QN}^ggcsHr5{kc00ebw*%BVI|yilW&nuhgpt{XrCH ziqLp5hOtEo_saf#$(lE_37PMl)^&KoTTC)eP%TZs>*6cvfLY6Wm0sK%IRy1F8{pgKE?S%5PVAB%4JvV|2GAZ3wOxm&mvvl@m?QXc9M z7!xjx*Ahqp`!rNtY&?fZGG^GyU$8NTstw}PS0BMQqgh|v)8(GRm%FT@5mwL~+giUx z^KlsN^L4$&)r-Xn;Rgi+lYMReg%&g1l~@mBaoJUMDaXBW-4kA-{Tzkq#t$@&p?Ii5Wd_ltO;3 z3*nSO>n8lGFjayy-E@I=)I_Sj_(*n(pbtq4gMyXEnyjTXcMTom(BP-uh!_AahEhtp zpHyoEi_@KB5OAP)^|Yg3vGBLEJ+!y|zgsuYMD3P^O}|>1Vpi9`{GL4~p=d$_bJcG1 zxNM1^XF|OFq(>3doILyYu@DU+@>|n4u^XjSZ>f7I+)Bmx{pR&phZP=CTbvNt1=gt; zqo_c*oVhlVY$=`I(I+Zp>YYxAzjfO&Wno^>#oK%#Yn4Gg(qH7hpxn6ZG65d>4cev* zlaytW$n$!1fH*^~YNDq|S~mf>q0(_6MJb)&%$~Z`bM#(H6SnPTY%?yo8MGkJuiyrr zGBj*C!|VHWnRz9F+8S^Y+tPKfg#0ec_0v&=T`K+DL|g`E5;pM6sWI}KKurf9>viD~ z88KU1)CtPy_m_w<%%)&>6W`Mq)Ha_1))^x#Ml}2N;C1@ba10?mHudQq=uDQo8l8{I zAi+{j5@6GxjQ(bxZK!i%!maWVCm146D~21s1q={0JRy@-`oF`qh=d26@WR zik0|X&FiofL27;=NIm%N@H~6_gU`=H*hu7N5;^ghTHL%-c}S^7Na($A&?2)AS#U7XC~zj@2#LX z4x}6*UVH{JJ$9iEc`5!+M+I&heqRRa*;NTEPXSWF8zWWPz4Y!TCoa(H*;9ef-e6AxgfKT1Ysl~9F)Ll;Ypu=M@i83oL^kby zE4-%S8`N+|4kZfpX6rR5jAoAzX$YQQgJxx{^M0Vyds+s8M<3O@6FQhI(cKL~W=iy> zaxT)^6+Gd}x?VC75=u%=*BX;4I2Kyr6VV?#qHU$;L*FU`3ilj?$S^_C&@sH#2d!Pp z=pM)p4Xp{U-LOHtn2LldHqg zPN;HefZf4c-Ez6VCjfz-HN3s45pe0b1dH#Xm9ZU!54Z@Ycig7Upt4ol#V2oY^ZvsE zXRs{z-{6_)B!}Oao<_5d*o~i=Ymz^(sSYuEKS>aNLA@K4Hjp}WQ@%T(YFmPm<=i-I z)hISfg}ac{*!Z zO^NHM~6xl-w zd)1VsNL=sbGhZ$|eZ94p`_Pe;cU(=KvTy+xODF3u`o2q@!| z$`DRE6K9c*>NGalPM;cQe;*9FVz*Rq=-3J?r*VK2LoHg_#Bz)5= zPN=Ap4vfQX3}=>SG3_G`6WH?n({DGbfasVDRWq#Gg_A7t=4j~IQvzMH)h*fO|64jH zej+$M2PQU@z<)q($ z*yv|1PDjZ|{0O}?{MlN(MFS@nDNQb@6e<53Z|#is2p~odhUA8yv)t9ZAw+XmP1!9mZV535 zd-E7lThkPP_M|ZUqO%btgTsMTm#WRXEm1#-Frt%g@tpy%!K7U5R1~`Zy&1vIb3=SQ zG(%gLd-)UB;!`_^rtZo{(v@e2TmxbCRzi8K_{HSm$T0ab{*Y~!kJ6;s?3PxJ+!^G6 zj{#o>u2XIYaDv;v++3m>@a^N!pb&+xDVT7@lts4eOy4Cf$rVh1&1seq^Is0peqf?q zmBbHO_3qKSZyn`Wb(?oVu?yo!3SZ2Qio%kB3Y=^hs&3?Bg3VP96)535ZK(^CnBXp~ zRv*YG*}Yj60mKNp4rSIrF6es*X?MdGCsu&1QJhf(;W=I#Plrs7%BmYiCbIx0j*;i< z)~_Qn@$$zb5E1})Yntg8UnPej%H|k-lNuwCMkq0ylV>U2y93CN zgh4sn>-=|4(RAfG^~6P|W+xev{CBY_yY{A@p;)%s;P_t9rLPo=T}$ux$92#H5W%kW zz6cR2C@c?i_B`WqyeN^C+Cz)Vb@z72!6d)Qm5cu?FoP05GFLPx^$&~z^1P*64`sL+ zobSz$qy}60qpvbER+YlNx3a6uF`rc)oFO)28ziDMB~Jh=b=7d+xhQIBk50;(U{BNH zz|K@bmXB~G>N~~Xr@a4~HIm!_P#|de6_>8LFY{rUs=lHuSFmG>gwaaO(oFqAZ%U2v zZu=3?Q7XK&AEGG|m4}qkiYBMk?z8Ec$}t8_E{EYb0MHX|doIk>f0UZv1Luc%<8uxG zO#d44Ucbcfss?7TkD+xL?^fH{ z5d7AJnkFFqL5oTLQ6{EwGOHQm-9DW%-?EvS1D$?eMDGGHHeZ>fpZHT08Niv)*j}c> z8QZ^S8Rq1-lhH+`V+wBCBT}Nm5VYh@t6`br-Gu`=MFHhh;L?IqTVrUY;(@}&mRU|i z@U96eArm7yCT6X3r<%Ui{xe`FqV4b1tM-wcU}M{Kb(gg$t_fUK#2QJH(zf zcdyU0zPi@7dy>c1*+tW8(}f#Lbzt#_i0qaPZjs<2J|Fh+Yx`if}pha6J~0))C2 z#C{pIh9WJBcX>>IVxON0*6|4L!ZdhzA#1 zG`6HTL51sP2Su^Y`H@oUkK*(+S|&V&>hz# zaTZqK{N_=j8%DC-J_&ic{$wK`HgREfif<~~?5KZVSUfM$^mw6J3kkVqvw~Q4L)N&x zrY8%u?Kc_^tD*ozq^IfIr+HLC%Bw~CPj*Gs@89MA{>w`$Ut%WrRQGD@?(;=NsXQpc zFJSlgWdZ3wxAw!6iC&4IZNeNxoTgBGDs(zFY+}y+yH56K zW!J(ftNI1=*Iz8X!%Nj-UlrxN(335Mr0pME4&;0T4m4f&d>5xd+5jdDY3d^4CJRX1 zeHbyNv`M=gGOyyU&ka$hyW;GR_TPh*T;CI`Ad-EQGo! zuwAJQ8?s1(jxvezaCHfK0hV7V4)^c(=ukEoH80YcW42qsr^lzgI?@Hch_II9EOS0DbOmyT_9WgQ-sCfNGO^v1NMo)%e;({lsQE7ITE!=* z%v@QVP-~@98GB7|sMf=DS?9-Gl^&!YDNqx=2&TU3rH#Xw-g^}Hd85fUPY;pm01NF9 zk^tHlxScAxRvgHlmyJNoD@o=osozCO6XmAd=8 z;6dx#{|LLM?Mk>M3cz8SF%7e4oZ-ihcMw~! zWy~yRj9pYSesP9lzjAbm6SZO4_j+ql%<3axF1M`^iRgOf1OyNhhoz5MVt5OLHI?B0 zt2&Wn&j8;%3$2D1zO6Mqp%vIKx$)^;fi9VL5PiUL=Z+JFLKAwdt-UOZ7$s3z;isSUchgyhgtX{D_P-mdqa_PtOd|~MIdJh) z-77q7?Q>+6E(H{KCbz0S7hR)#<`ivVU!pXg#={yv_5+NkGCl&feuW*NNC>C|QDzgy z#8FpYR>idXUv&)Kj)&S1t2rw$^IThK#s%s_# z_tmke>&{+}Kq4|NfM~Gp@E@+Lmkl$=2iq%UQY$%(dD*V27x#0(kG3s&0hm8A{x}kM z)7{HcGZx!K{*VKwMkdPo@+D&pT!)uGq+6?k^3g-jryn|xTayP@DKbA1PoDqZ0w41(D;hcM zJV_{*44`jLvsvDT(DiRUGYDts^Y9LXK4N@Y$j{l27tF#P`vV-EhS&QIUs7Fb7uTnQ zCEayA>K_46J`MX3`+mh0qcA^%YN|c~f~lQba;Ks#QF6Dzq+%CXFB0bl<*OinfAko2 zkUjBKn5zf_3PkIkbkO&04UlcKAwWi_-|WA*41}L#9r=G;4hOh`BN;6#0nd{|+)GUR zo{SRisr&*0D=uE=UQQD^$ERt#7|BEk5wc{|FvTE6%d(dL%0M^lUYvc|LN2Mh>{IQS zBVMfi@vbmG}radQP+Juc1N!7PHJ5w zZUQ=Fcok#P4!EGoKsSnr|K)F18<}(2VSC~rpCEPAyALP-JU`#ttiH&=qz$3!>bMRx zW!*XNsZ_{BgQcP%@b6gy^2GV>#QmF!wy0k}`CUjh1-mm4WL@NB5iO4tw4m-Il z#_6@xM`1j#mN%NosYC#)lO)J?h3sz(bK?b-BXyZgy*a1h2Sfn*ATCTo<{yej z-1IB|#^IXhkl?!cJh}*7HPdFIk7XH_GURz-I2`?un?lml=Nn2E|6x^tvRPnSr{T?C|D_6X4-=h4r43_dVh)}sO6HvtOe6-kFG0Ce@ED-0CcW^ znph0!+a-ELXm|TE+$>P#C*Dj-{-r{plIA2yMm)=H0TqFRrZG{~$_8`7fS`S2Y_|eg zP)_0{PwKGO8DYNgFqG;@)DrwnsXFbOwJuHH(!508cp-~29<$3W5Ma(fH{RvI>?+BQ z1);-x2=h?jpaGS(NL#t%GdRZcp{!Z42E!{oJ0Z~bj2;Eh$-;Ya&|A4h z;N7o4GVb>=NVip(a|Mt3Jo#jk6JB`HMQUDT2cJQ?qkp0VQUpWKOw<$-09YT_(t9U5 zQ|oHKCZro~?QkWk4X}iZ(6wp-*&XKKgvMw4piaaJ-E8nk5zsB#=^{AI=N@xtI_$y-T-yS|bv zt`rbmS2?4I0+y}#{sV8B!iG~a!i4Xb`RIs*%O<+YKqvR&?e%+!a>}~!5j~qLrW!kO^hZ9U-Q{tA2u$6) z8@55Qx*4z-I;T0%<)(tnj@d8Nle1y%pO-1i)8(JBCkn+WwjBu;1f6){W#%vuhMiSf zzUNMEXlTZo4h;%bh55aYXuiMVAwIMNRU1<&>7p_XP8WGOorFF1u>x=ZS(9X^Iwids2nF&?4pxU{e!~j-BK#1 z=XMu?W3&~O6ygXc;?+&qewH9WRj(%uqah-TWSjdixBg*B43b`qnH7PX52s`C5duZty_z;`x#8UCF%Z#bti$UiCG~SyR$)aMKx+4&G^Y)b1mtwss4s?aV}ERJMAu!5gzQJO-m zRw%h^7ktZ!v_56iqN(#qGL)$4cy0)GCToZoF0~oX&dOlUp^lgu zuN?K}xX%&68yV?LCbv$=$$7@;>DZef7c#L5TbWxXBd2?lyr`inLrDCo@lzkDmR(K( zW2OdL#8VVakn;Vft;El$-P~jvPa6IF-I(j-?0$ZkCPrbs1`#eJe>BzdEllmuI?h!i zxzzshNmdzM0?R5a0m|Vto0_C%t9donY~ArgvlNEQ{z_j2QBGzmgmZF31Xg3U$8Zj^ zG~C+~K_5?6UWD1=A}@@6F%fK)zVarwDxCNdq33n`gIvaxko!ZwN4~7wR>EP;$_@bR zn!VfH(DcJ^23wp0g6qSR{TBaF#&N-Q`_b~22c39YL-TAbzkD$s@Xy5fI- z%c8ftGQVl51*R04=3INb$#yW?clLIK;bf_eTjvGdRtK9f%-ynA+NkCXa?=NTTaY3k z^(;?niB37n^fUp63hAX|c}2(_kSc}52>89Hp@Oj!qyoxBC+)PI%uiNn8i-KF?k=J* z8%qxO5Ip&S>N`9JG;(z@LWXFgTipUHTvTJtE(eT+C^-y(ttl0d5E{kSZPe^uA!JMb zKG@p@jgtD8wSqc7?cvOt{a(_96y|Yh2~$GW*^W9kfHc4{C5!a7l9}iH|B%2VpKG{l zIIEHTz?3phegv|vayW6|dds)PNoI;oq`2*rf@FL1-UXv)^5vE^`ry2d0f_67suO2w z$bh}A`-xe-AM*#Fp`-Yz3-~hHr}1#y9+IxfeY3IyQDn2FdBGWkfM)}4?+>HI6&Oa( z1Vk^HU2@moC^%7+345l3$`^0J#2555h>f zX$A1)W~&}ws6(0nFI%^~=mHZ#72P<9Co09};3%UmpSM#psI~dH z?tx1NMnS5HTHWz=#}_!XzI;F`+=9Q_1RvV)_%d+wxp@)sN*Yl1n4Y#67HblG9W4e$ zdwJ}&oq3m4(AM`V3e6^naW3c0#DBS)BIeopU!G%6b#ZR(LzJ@EVz>&mPN_q~!XC|m z9e(b)LLdbb3`r2K&7sMIDbBuUsz{>!Z<#TwKX0X%(%lX#JnlDH^WNrD2^#uC8g3_L~kc7vM4Tc#o1^7(;mSYN90; zUPEhcLl~m-#)2@%TH1N)GP-L#$SIaHysozLi$~3W%@E}ua&PZ$r;bqe6w)tE|IbeX zzcJKYTCbF~=Grj=BL-pO3=0wVxugKvU}xHo9~@tLVcEsC@52qSSR!!}8l`-+eN&6S zuaO{U`{SN!NoW}G$LXmog10j3bV%&Yx8wW6*4~OGzeC)}7ns^OGP>WJo4X8jN#Z&K zn=*8Bu?0I`PVb&cM%-T z!>CtLJU?w3gvS^(A1hzFNAJ}5x(TnTeb3L?k6HZY7&I7emVQ7po2rcwe2u1gim3`L z!VX7GQ7i~u_;KN+R{^_bhYZyJF#a6kLN`-H_{(qeb z8Tm(=^Bu6?@U=_nFa+(Dow@6F$(;8T@&~X|5d+OVwiyVN9)*!C^G%(!ESv*?XwV)` z3&}nqnvIEF<#v%8x*HhGDgT9ndth9Gsqm#AspRp8_ZEr3e2Os-&DbjYHo4%~+K$eO zx%(aM`wkk2^S4kx5<|t0P!?`!$+*YP+?1M;HLQ?&pv-9t^=z<2ss#paZ2)F*2cZ%p z$>~Qe;#W_Xu$cnF|Kd%pHicyXB4`$mefVDp=YKh{)7*aTcOphgp>sT51k8SEw|ixk z!eGYlo$s#%PWer?bM+h>8@4MX4q0pZ=xu-dDi8*RhIkjViTCRMYxIMm-?+gkbw;E^mR3Yw3A?b1qCH{ABBrmWunm=B0=};9c-VD4}26g7MQN zMML|%ITjegfb)P9bp@$5HD3wXM(|a&$?FJOM6X21~sVT8<3#k0qwya z7H2X^&T~v^5#Jqe+qColrWN9c;SM?viOw9MW+s_ggs!h$5DBPt+Gr_+=hFQ3;$@k$ zP3%0#P;xcwnb&;1?95md??DUIJ(^<2fyR4x(QMXfn8h3ig%y;!ig-873eyZI; zfY0S>-5vo5Q2|KtEG82qC!wv?Ja0KIwVyo=0V z9ar&H9AwKZ@hkT4MZzzblfRUwLszZ}s2+tkwdI?}I^f3t5TPG4 z%E6S(6>S}bqSbwcqBQLaIB7MB+!(wq%T3Hvrd_HzO2BJ95FRr+iU^n( zrPr@?XM%Jjn~$p|_2y-{AT{hx+aFx~u?$%OShVejIlaudxV8Cn!*R4-uex>a@Y*`O zQ6)JFH;T9u&cCgjL*5A3{3J=6#_3t_=>3T;-=4YaCc%a>&>-~EUVbg^K1wz2Kw3d4 z13MZ9rx<&&!4G})3_JL;^4RTcRCz8|C?N^#c|>2wQXv8U_o;blXnIEg@<_0tuHI8eld3S!%XjL7KGkXG|Ra&SHcVc3qHnmh3aCL#VMU%IGqJ>9A^ zt=|sjOIsUM6yd7~F2Uc*U`jH6&^0ZPJKru1X!X<`Ao7RSgdRM+s7(s|iR9-^f{mvt z>s4mT@S>i9;ziApl#R32qkw2s?=6Da8eBZm3a%_uMd?>myzXN;k1@Wc7?Q+TD?J}Y zmFejfdnQ78iwOn4ZhfSx$~gR$nycdQ)?KSOf5N>iz$`F(H68gMEu@%>R{zuL;jSn>gP`YFt$LvLQdTP{xUw^U6uboNzN!fh~?>z6Qs~6gASpcH?lCa+YcH~ z2kkubb|5AaiKqt==mW(~#zF{P zJGA*1Qy_l9$t;r{MTN`^wAo0dobT;|SV#%>iA+O3@4sJs!CZ^j!H!HPO>UQo#sB4| zdP#kR%c1t9+H!^PpvXFo%j`61*nUv>ROS0MH>DrIANvcndN*Gm;jv0=@eh^3xUhXB zM87>a9VArna;D+oUQCH| znVuSz8wMdeYz+xe!(#_7N7Xn-Ti%7}&MG(!VrVOsOG7syRZh||DD%J#F5vXm)<8k6 zRhgB2_F|^o=kI%LZk*>yU&p>Ag}Lyq_8M1BFtbm%k{|f?U*4)X*$p@L~!WYk&8%V-HzX_@9qJ|q!klU;&3`; zaMaWUe@ez3KD;=eUU()(>Tj5f+U&AkAb55+*_&=NCSv4Ad?J8W-q{1F?3D+4)EUx(K5Tf-#H7+(su=MTm4b=>(E!d*hVMky zSu!gA+io@HMMGrTW3wnu`2<5pP)9o-#Jt{J5kyW3r6droM|*!sHF#&}M-A0Tj!yfF8<96=R3O;zySY?iZLFy0qIBG7wMSWP73GJ|VU?mYFcSdT z#l#s(a*$kQ>o;a=N?-6zmUH^jJ9#+UVN!2!r_no)S$1<^dC^KddmTE$%7NG=BS|4s zB&}b`H^vymWNCXq{7e%oUSHT3`{Y>3{Te;5qheR3e7d5-c1x|YxWM7mz-Tb?SF!ncbscRNTcHm#Ml^)bf^4dLB2>g!6`JkV79h*q8FzbT za_bPgXx&QeY-T9Nm%qy}KH<^`+G9Rp>uBGn#Tt$jL^OOEA&LUWwZ}%{w3&VwFsa!K z4e0=e)*5gASsNON|L~|1#NG{-!k0bjJ733p@DQU>bkQM+Kuz^YXhwo#oq1VETQ5b> zG~aily4He`MWU$MhmbJYP6&FYx>shhPHpO)9n_wZrzL1NC?Z`3Ej}wJPp>O+rtWA? zh5<8qOr_VBFxSOeg@@5GCnacom@Jy=_e|K8Mx6l%+{Nh5T^ilaHt@JkqkBB@`rF_jQ%Uz8X z`Vu2~)&IHuCz0c_+Cs@E+rJwBJ<0T#1GDN=$R9Dmwx=Uqz#6JpYR0?-eo&<4)z_Gv z;+O4P4rkQb7FPbrhRv^M$8Lyks?kUI`bI`<#1GXEF}WgjwP}nGD(9WDuxGcjRZPt! ziy`cCtjGGN(N1o1>Siry=o_Y1Bk~s`n;tS2T0)2hj@isjsa>vyxC^$n{GZ_e-!sHv z6>9AaGng+Q!SUIWc297nV0>?y?DQBqXg>e$f&jh)s5)Dn->aN^pFv?SWY16my{DiO zE{5aP*2}-e{EPkJB0ud2DBzRc89IGesfOvw_*IYfsv|K)STG=DLTWNy{RvQ}=3!dh-E9_^eRo@`x`1*m8`)XLjx zC~|s!weolI5Iq&Obm<5u9wO9uhE`zN{Q}LV2vz{s9mU7_Xa~Sq|44~W9 zSMGpMiLzUzab`8$z6_4~xkasx@lC|wgUF;@BqHDb??3+M%OxRs_el1oo8pfyfHXrN z76>aP{QV7!uK3e9xOfn2)Hm*x#ra!1cLQ6zF3`Q_W(?GD5=b^@FmXd_f?{w~CAY14 zFWeK$tCX-~->2TJ&RLnei>mqk3l}7{A8WAHG|?cP6m)`?-4xEIAh^l>v( zDVamNGzx~Ov^-S8L*HQennsy3iuvBLfl)j$nYOrm4_qVZg+T`#x!3*6#5OD@kjwX* zzKn7lA-jja8wwuc9bR|ro{S94+ho&E)4ntJq|tJIwwaFDJZ8J{acM&XVkFdL!6AO_ zQi?nHI|4rZB*I=hGw+95y%+ek%PzuH7Uz!& zmn{2Fl(#?W^c+T@1`ChF`i2IccND&jTxF~^Rt4oK!ZJy9n(!6S3;^Zd{yKU| zKm`2SmD2@Ur9~AjEZ7uVcYwKb;GA2|^wz#s3MS?&9wt(tb+Ksh z@1OtjORUs&r8Iw)#{TAv)Kg?_E`!|2{BpTLYM)ttH|<}0;k?E$lSx}~uWsoS*v)d-cp9#4$@%`@CAt5g2tjU(A+68Fv55 zK4^%umZT*upG|2_5c!yh!}7VaAzI2R0*|Yv;2)|p_nGIi$$6n@uELo!=e7eQ>}@)V z_d@4sEwOU4htxHS3~NsBNW~dEI1_kSorG`^>AkhyL$#6wJHqXXkuTCM@y*O_T3KK* z0UAXxmCHXWYCG)^;7maOj;}%EvU{NT(Fe&3{m`AxhlX{et8=2dF>N>Z)k;1Nl<7<= zqpuPWVI~QUjijJP%*bM}>6h^JDewYk)2WbqeezY}A-Yp?9;~r>oL~y7*iN=Hh@Exf z$2+b*l=L4%$hVYnpyF>gxMl+T8|qRmyZuplzee5*zE$y1D@#^X@g9 zIgsUVAaVKik+CZU(D3|c&;5;WWw2y&D0YDj&zbek!90Wpb|XFGq#?Bv-jwRkqo%-E z17d%t0;}}aN?w)p^y<(t`OU0rWjH1Y z1&k2BiO=dTf)VJ{2*sOodZY%M2?N(O|fo62YT&IE`tx06D8TpoGV(r zkfqPt$XQ-kKG6!63gxH67$N*V3OB7|DY5(!NmATNc5(79<;7}wWohNtmQcpfTKr1j zdoe^0NeRE+17_M(=2E+t7%DJLrf|r|YAsm+fp--g8n2ZHfgIo86UP7oLc5TsAS3Y} zDx+DfS_oJnBpq3Lmrx54k*O-DWe9%KN{CnoIQwBt z+z}k>?X1etwK!?du#@>!=Qjo#&WceZ+FG}i_IW055$dZTb1}{P^w^_jrUB}u^S3iY^+3~?77f!b|0o- z2q)z&6%bERe4AWw2WyT<2u$8o+EadZ2l1>A=_`PV*0xS#llGlH-k7yep?!)cERvKK z_rTQPmiG`L*%J&IS-)=ZDDXS%H_$^-C?^xZh*ol5OA2T5?q<|04Wal&DS~BP#qbRP zZUcE+PZYi?2HJbamquDUB}YGjJ^tSA@{r5kF?#C{a*{T?WVarHRMDkOp zs*E1c7|9bU1#N^x&0c;lJFVaU!DY|!rLdu{0B&(eShQguRv`^*bZr#rb30)_Gz)`Z z%y*2fpZ@=`8g*B?+jY~8785gveKa9e2@9d3{&r(D+DX6UqAtbai5nm4UYLI7u`^CQ zvJ>3}-ZnU0UG&HYL3QLTYjVLuWoS3GZ}QzOlZ(S+@~z_wV|aeNf$eF800vMuIf?Y! zZ?`f*!v%qC1zgSxT$4l_GfD44y*!Y*IExzi)`h%T6*j@jr%G1uI*G`HAK3 zpv1~pP=PhjC?d5xIrBcsI;|`9BajEhVg{^(VEu2=ZnvgelRdoWxHV&Ssi+dOZ5p3Ab zKYa?*jE{t8<(S(6lskT!6L+(h~CeV+|;XlRIQ0-+;@qlt?YhcJwMig z-QdYVB6U7?md*1|_2;%Sth{czYFqV-zTUi_x-Rh=RK?=mU^A2x`l8JR&V}L>`rrcr z+P9U0!V#GZO**DoWRB|T=df$N_7%D11G%0~C9@mbAcJ``btbW>Y^A)xteKo1cn8~$ zPoM*!m+hGGz+_q2EPFljlc41c^uos&$7G>C6!YL@c|dB~(WNT3*vu5YPSoth5{X|# zrX1I$v!+*iP#An$KFaTG5oR-xJj2!d|3^P zxUN*Nf1~i;+b+}wq3l#w0?I~%j>Q^Fw4T_^CC(73<~DfqmoNUBZ9Ys(t>({IK94h_ z_GV_i0M6R3*1P^2$<_!tkfXpWBo!UG9MMZE8L+>f`uAV+zV5b!HU8c0^(i6KKMc^- zvfj+^XZ7ps9*j#5P^4sY5m<3n8&I(Zp)|TC2t(Ku*MV6Y>t?F)TgADuZ8>_%jO90% zXE(9I``z{K@_(N?6o_O_O1X!4vOyr62||chm$~3|S>*9D!<*bQAnVk<#qIG=X#^Z~ z9!JQ$=(%8Ix$sUW2|336(50;-WC>Fm93&3WDVZ-Vs1ri)J%xQyrq|*T{^PivkaD0a z`}Jx(IsMd^NxDg-Mq~mtPR0i%5oMywz3i103)~*N)_VSK$iTXxw9{FDxR%_+_&=&P z*Y}Ep6Rub0=1j`R+j+XLjXP57_9O^wvh_cW*!LA=sSWvtO@%?h#y)lGY`hSA^g&(Q zqy_t!F=)c_dzh`uz_l&)Zu+b_qQ72HIvf}n0jp1;FRg^k<9??H&04|F*OHkch~?+F zozV8nU>|CHkg6AK_emFKEx->OeZiO?dL1>bzl&($C&J@()Fd6HGJOO!sH|VDDRO=- zXB47x3>2%66&3AmQs zi=_G^KjUCt*$e`gf5L+47O{LIXx}K|q)ue0m$a%5#nNU=yGA(i=qMR-m%y3mfZ6=P z{^W0Z{&kD^Q7Msz-OB<@U~RV=u?r=EMeE(Xb~Sb^iBExX1`{_|i8{1oOgSNF_sC`& z^c=jbN~0@4GkxNs%p%_$;vueQ*6e@-6kMoMzgUt_sAZ6ARcsJTA}p zbf;k)VYDOM1abm z-*)i(M_(RQ!JdB4#GP0Dpw1t#k1|D%#>upsSL?c!slbN~9?-5}Emp|a(lJJ2g9 zE#Ca~g!u+o6J)iMu8kW$A97f!h+nVcl&-VFmlVo>(x zIB$N*<0?5q;YMHy^tQ4#>%iOi?bzI|P{vZ)`c@45W@Vr(>9^vgZBw6&<=K z0+kJdEF_iCj4Qw*2C<(y`1deK@+fc#S=sm2NM4rv17^hd>El{)BrZXf!5EhIb|>G1 z;wiHzM7xH(O8vkNMYHD%l(1t71?^TdQS87N;xVvm^pIbNwfB!RBKm7gZPzrYx_KU#}th6SAByflY)TLXA3?OLn~ z67C2wmVY>#eA>#&+Tfl!;_O<2G{eHpY<3D{Xj|LZPpGzq%O@)1v&WDajG904qQbpF4QT zCeU%C2F(5TmWbtjP6*e8?lU+FplO6I%r@69I?S|%WU<$pPc{$MmnR;0%T(bJa_Z5l zvAE6eah?7X41AvGIAhmsR!qxW>35k4klZ=Hi+v#TT(kzFqHNe0tk@CoWw(lY`bs+c z>E76XC$MNV>}Ygl6ZAxp0nsy&79ccTlE<_8QMe5Z>&SaS5nEQ?wO^Xf5V{tWIeAJz zM}#{M=oX9vgBL)Xi~nM^D=w3=7eyI&D}oGjA3f{O+VW_KT;pVS)>KO1&R(CbT4Blk zetAWmeTTk_7Pl7M2hOekTyyD7^=28rTQ>*OjO2!hPVzA+TFj~JDp)>5xt|sJ=GGrF zFp3GLv*PN)H=A3P+(R}QI_F+j|C!mhol&+iu$R%}4bk~8SJ~JPs%gXc#wMvwY{Oex z#wSbk7ny3QxG*O3IAuzNI9Rl2(KZe^rr56o@!AA|ie*@XrwFO8tqykHAOU^JID5b z%r5+_png3eo$OXKvx;s8jjv=jex;{#o&ix>^1Nnb$TQS=8X|s_IPGQD96WjhyCpp5 zjeCk3*e*sTPDYe?M?$OLr7oPuHAoIB*H~HOo~sAlhCj{31?0O^madhB#LC6+GNl!3 zG2{uQs`x|Lb^*Ye!$k-++LdCSP=)*WvzZIsExjLOuaO!A9xa6Rs?92a!K!w%tpsMe zw1xiAhA^&WGM3t&Wk;;B%+eNS3_C$e4h^jzfH=duJmT>F${rcGacKl-qi(xMOq5v795GZQ-N4uO* zy2ns2hr*Vf50fq2_Qj>AcEwzfV2`XBt_}%2sYaTOt`w+2c^O2x(B!b(j7E3*gUiWN ztiDqIyh`+!S$nLqZ)VB27OkE{=^x3GEdZ(Gh=zS`YOZwNZ#EvI{Anj|SXQ#{5tYFV zx>#MHFI*ol|DEIQi;dUTLW3K*8vsv{$`t2#t+?01q3lviTvPCRZXI!;0pEv|`j$k3 z2OV2^3P$Nmjb!>NA0-Sw43^FPX3?xzTo!7Ln$Y0`C}d^yE{swhrLbF4nfjr|b4}Gb zRr)!)xOC{HN<%b0N-A-((EXSDWEf~T8gmoWC!7d}&&y(KM2mw(tBkO|c@vuINXVsq zz22dZpI=EW>|3doo~AN4x1yDFk_v`tuqC4*ou)!DOigj_gc=67n0oBe@N9zN(sI!9 z%{_;dYS=G%Ou$E?@Bpq)r;`6+bCU)t4pMNT;Anf3oEMhnCE<6Yy6X1EPpni@WCi2x zoxo+FyrB5HE|;ANU9c=fE7BztwS)B%q8nErMf=R6nr}o$RRzQ~wzS9{15+l2$ZJx$ z6m7Nl@1aL^v~1$&9*SqJx8P5Zh_%80b9BXAZYocvJhe_6x3FjQAcG!`D$@eixarG$ z*y()6az1R*ZY5DD%%yILhaNu_qX0U;jC`2xD=d0)YJ?c|V^h%_W(kG;WcM|LOe6pa z9YvBllqN0_F=AZS>cwfJS`j+o?VmwpL-LIT4S`UWN^9Doc!}1x>Dl++B8qQB+~+^f zv0h1a_h#DS0;aA7CAL1(Hrw1G{4G>wIDB22HFHjtD0UG8YgZ=5=4294Iq7eC9A@-FnFf9znU{34?A>b|eP^ zstjn89Oh(?(V9;KHXcGzZXtr3w3B$8yUOAMuG1DMX>IX%ulu4>UMD`3c_;P4F=@U2 zYragCk5#$0(JEVfzsR>q#FmMfJmMR2JjGxPI0Xm4&n+`;HKxUSFIEoS5F(s(bCV2( zedPP!Hv?~1SV@Ow6bTvf?iuqN0U_DBEzwL;x=)E7=p(+`k@FYPYYVGQwb!+Ffe)iT zN^OaWTj=YIec`W87ob7SL=7>y{JAQhI3|aNc#2*V#>OYdZ1T^DXtd8mc_G#xk z$V*%UXmvj(#`t(RvPYVyR$za_H#c8@7H#gCbZyzgBcKLyLS#;4;P9b#PCjGH*2%f- zxU%~>n;TE&E0I@$_C@0s5tNjeSW(Au*Dceb5LJ$u6-+LW{X5e;Pe5yWofFSs#CI}z zz_;S8VSY#89R@{a{nw%y7!pJOmIXqiljRRke!_qBcZ^v>P6S5~!awRWB;Y~Qj@}`7 zm{`xO|8zDB$6i*5Qq9A#2(Ep)fAlK%YZik3ksY3mkNDx&)3=$QfkLNNRFViA(i=Nz z`PIp}!2b!KkH!o*u75^DY@)qMzGxFdeJ5HU5qC0wd2I`?oS>Lowka^$904z z@H4;PB_QW|KPVesSZo8kNp~u@Evk~qP759osNQLgi$lr@r^B#er4iSX9IL3bkMN62 zJiBghV=ffrWFGOMB0(5t^Emg4BWFPfgR&jY{6Jz-;|&2n#< zTf0+GQklb8DxkOBDWT)ehWw$Fmi>;-CbFitt(jA8I{fkfdpSMZGft@U!zGs0lN2uf z)K5wG+Rb<>38ar41CgM+*Q0x%#>Nltbhls%>;Qs6fzCv;)D&3c@R_SXkQbSxtg3DG zMR=VMh#EV(uh~NmZUDZbs}P$?bVG8GE}E&kYdJH`&0K)MJfqrQthBi2&*lGN_88n} z&}NEX%ycKDSQ-&kzAoi;WEA6=kj^#v8M)~FYaRp@_8?_AOJygWDBeBU9q;Oclfml+ zOf{NV&ZAw%fh5AepfxF=oe+lNE|?KKwr$()vTfV8jobg=4DR?H=gHp5m$d*T zz-Ma%LwwwNY!vmUauxvM$ouZY1m{g?Z7!gO_8e|W+b7!2)BM@IyRCH0H+_}_7Y z$;^}hzjM_~Im5Q+Kz<5)Sq6UhmN2Ke<*Ii$5BEIylH=6sDL zc#SK9y^G#8uR_Zf>97HFHW9Xn=x!OGoox zZbEOnL+!$}J+MSnNayZFh+MOK3{8V!q99>W%iB5+s-)5am@_*w%%-}5kiWyqyqYVv zVPk8S>XC8HVnnux9Yu4LD=HL?du+Vw-)p;KHP?P)j`~Kl+uaHZ6!@qI?Xnis2qu-* znldiP_T=bKVD8&*7*TCGlOl1@HimgvV&>xL-p9L|t`P$8q(>i7QSLor9vx+JCB~BJ zT*|EV=&oR4 zWWiH@9&M-LCf^DPo3S7A@MpuZ_o~QYs-Gk&il?&lFl>iGlJ!8F^JkLrq>&9gr?f_= zXd-H5P%-sGk4o$p`xw48Is%p=)QZ7cY_ol^Nc{OCd8(QLKcWBvk=T1~22Igc!fa^= zQFth4Q+b%~!?eMoIm~iyup{G*T<>9W3yC(dir(*4;AZ{KmzeDQljrlR0?{nIAlCz+ zFJFP;AjfYK2-5kpaVO%uUIn48tj9R}eT4hr)vw+BJmXb2>*kruk;AUvN7s1V(I#Rn z$z$@n>+2L_FWNgwWlP5E2F@xMq=#93RrwX-cvCHZ<8;X*2SoM#X<`XoOEF$x9o1@~ zapzIC52=_U%ZJ8)SL#)EqK60wT^bGQ_O&rRQ{$L!pyevJC1@FK>ugw%i1K!*5I;{6+{5i&5fMymnIldmo$|hawp(`=wFRW>B;fK`42dvswe~jA`tLO#4~nBT z5@NNU)t4l!t6Mtx9TE=l2Yg#9mXoBa;JN!&`OfboA60;4LJs%&;Fhfl1_U9dp+5BP zt+k9%ma{i?iX7>2^__h{_nMC|#+ys`+;CRU(Ha&W`61ZSdy7&BOVz%CBc9Tj8orBh z!NP7j?a&8^pp7E5_hkq6fCAqG3Lz5Q8tn)JODBryGG$z+ZiasQ6W zt0Y$E5yX!IW>AnWU&$k?{vIr8Z+8_!-;rE;YhHm-ZNGJ1N`IBZ<9>dS50Wzs84uz} z323k=S|KQMy}xDasBd#yk75N3P+C^TCccW(?>y{OJ7Um6)X^al&0SZ@w(3mbrpgPl ze}eLyTM~#&IbDH2ZtNcaTg{=!i8}OWWxw97XLYt~Dh;zQZJ!JUu-sI&5Pr|KI2I9@ zq5Lh;I!E33JnX=>pKXH@q26`RU()#o6#MKvHlL^@ijKx1cke}1ejG2(k4HkKB1|$7 zAjnsc-W`7F%Sn(n8lpr*w1bbBisET|ar&O*;=f^H{QGB}#16WZ;Dq|HDX{M)wa1Oj7SrLa6|W(XgSLe}X>3WLLu z%s7hS>n?Ql5mx^b9_Y)&hc8h6J=o}BW0R7_&r~-j_x-)-fl5yi{IW|JHGmdjP%|W2 zGULl<1?hkSFQR^o4|uonYu5r4$A%HtQ)fh0c$P8KJ$Vc_XSoO42m2)gR#cLe^fedu z@JlV=cgX2C*VhyBPli1<;9JZ{UgXfz(x#zATiL~)SZ5@~vS`la5`ccp^X#FnQ3jro z!UPZsVrVR_7TWZ}*G4}T>mx`=wf6@8g)w7D3~eH zqxz5eot8?_>h=d+ZTv4@69yP}DudRn;(Apbg1BB&_L^KQSYo|BNZ)szq)Z+WVy?Z! zNT5KP7~{{Q8|3jZ-EXN-AnnF=T;s`}W932PCNzQU z$ea)mPt*(=dnzBGK<&!E@C|PoKmV)W1StuYZ|0fXGN| zDDZ$4Z{J{ro~|q}H&OCOoZ;Z(AsVP-UQ|S-pk}Vsz1~JQ2Yq-?Fu7{d@5{m^^m+Pp z{OzPq2+EXt)UHl`+urxfjA*IEoq!_5SbNe&vE2rsQa4&CyqYRx*9I?uOzXqP=rDiUMQCA;pfdss%V80vZS0EGg6c%DErTP{ z1h(K2Tpc`4)=c`xcn~LD0!Gc68U;NLXh_ zjTGh}#EMYMO-0X%u<^DMkVMef1-2Ok&|L5IlNfLb3@}K1Ur`A#GTVwjhjA6peApmQ z*BX9K^8#70d5lZoK+KH5tlnEbR-^p##A4Q4hpxHo;MosLqHFi*KfV_MsywElB7U}j z#U&=~Cz0l2%V2l~WHW?U6tk91ht_67O>DKv3~!ki!Vgn?SD~0Gjt%aw(W;x|pP}~8 z-Cd}HBPiJ%FjtfmiHots$UBivEhV9^rvf`mi^r%y(5p4G7_$KVJzJ;H?dRJG0F7C*F50|zSDBu4v zKs?IQH#|jf`{OqC9z+l9 z$CYYIxjy4(>jVDu0~j7ckJJaDP7HefYSWrv+9JS1`0Owh&coR0f^TPwh#j<%a0r8# zpedooK<#&EcdpbqK?1jimBRpC*Y-2-6n`DJ_qskBQ}fj5pSRG)1T)s)s?2*)yKW#~ zrS!Y&?ub1oXl9ZOMtNe`Gaq#ZX*kAks0hvScev*Fcfb6gPj2YZwMHlG|8h`{S^ogo zTU-;tqJ{34w$6dFVd07F(1EokPgWE*ahBod1}ay|c~2>fU{w^~OKsq3`=x;Th67ub zMh~au2Kz0{*^GSM)Gqkqk0g}0STp1HLqQJ>d}v>za&k)Mk5#49xQ|EiNZMnv7V;-u_XpKIA?_bb7#;w6o*QON2D! zbfxZLVQMZ6AUP^ebV)+i7gA)>pyu=hrTyzs|AKx$q`C0tSl6_78@Zo))$bD%rwET> ztg7YjV!zVq#(A+=tHO&T3!#uNYB#2!B|xz^vqlNN4y;JmsvL%Otcd=|Kd3VqL^!H@ zIwAk%MvKW-JDPS)*tZ%Md0nav$>3Nxj0_{vkwf>Ae)8I;nDksYts4`7duzA;vC&riRj#3b&Z?h5(?TA!>Gz`RHamH5U)C->&~JS5SVtb1Y+x zG1bX`dMQ-<5cZ!6XcVW zkpr6WwDVYA1de~lMejcISD%$4NGJqt9Q)VP0el$4%fmEIWZMb%x*fAFFRx&vI=*I} z4OXGE$Nv$HioO)a;25rXAT5O)iY~$3AzU zCEA^L1w0dgccQ$Z1$ZlCzs|$msK$2s<%lrJ0VY#fz;|ECr(0i(MyP^jo(ImwA2^Un z4etS3A04N!Bn_8nVh=FLL~0+C+>K^Iz3Od@a;JzB-=zL;xa8I_1`twdbX5(&2b!Vk z<+T4ir`HG~JjxcUKWC_iWr8x)R~ zqrrIBk;c)tEMCD-S;9&iozDmN700-!RsOY&Z0Bsq#@=PmLoTyQvlXzq74U`w=p_%%=>;Us||=>dS;cCz4t*Ma3hW>P|5TN^FhzI3)ir{=CK^S!Kj?% zAQ-Vg0C>;dqeM|qKaf;2pFW=c+ubUu(|-#Anal&k{$tx^jxtF@(a3|9gAD0yaVT_w zHtt+@0ZzW3jhA+oY4p=5*2vGY@Cow|!)F4teC8x#kKK>%4T{ms9Ovez*>+iY`PbN) zoAe0~;PVS_6o+N8NGR3roWWNcl*kQc2x4NX8D@DtMT12ShQksYRB-#RccqrZ!un=* zer*_xLN1IoST{*FEHx>g7TQb|q8NCJuw~9~rL|xpENxz${wcmNnni;GTkPgAPAgJr zt{WSkq```jHXOn~VQ z0+v4=5h@u161tpI{nf5kLpPgX{e+gSsQG_CXZZpZXZ0rr%3e~uZe=1$Fl;A`5}=CR zP!!4isQwjB&Xt&c9DODX*HB?u04Om(twgQFYf7n{)l1+;xR0nVefc<@~lJU5CQXf4) z3a79v(tdQ;A;5Nn2UcCphA)lK3^5Kc)GB+<#t10W@7awm-ZTH?|IOd~e;qf7sN`=e z_Bm!HnOXcWbixMwvDy3KaT*V%1U~@GtOF@ROY2H*@CRmz>q%a1$rW8!iX`$k=Spo4 z)K6+j$6dQMZ0{91Rx-uU#!5sz8U}78jrXR2Y2M5fK9@Z2F0)qOzB!vp1kF8LM*XcC zhlaTPE>D4Vzu0BNrrg4{_iKEK^o5aDK2z-Dv_GRsKXl_k>{vc(pXZZtVj;517k7rocg6_Dg_KiHNQ zcp2rZKJbh84+RNInPzt#bS^xb1a{)co0fL+-Ca6jLjm{-xT9G06&GEpV{qV`(h8{C z0PnFy6>bJ3PM$89GWGB*hg8}Tl>dKuzbf&nezwAylfUG+9bM9!sF4{IU?~B$w#7{N zHv6-9$u7sYXZPV^JtHXYlLRTX*nnWodnSEZIxTc!Mh~R=Y_V>XD1LR*S;o^tWDZ*Fig546^Zft-mKM(gXNQ`=m^LY$BO-@bGzCppWBg#v@Sw>YHF7TvIt`p#kxU&=V(`n2(1o`#e1@S3&B zlfF=&`(0vu8p}_Uv<{8bmrStjVPf@?k0_MtAPFHR2KVSq*4Hv%y7+l{Pls1oDhZK;c;Y zq88sKR(zKK@~+OQGPY2Yo`!zffrOjQIqVu|zXb_vhfgz$p0kF?r+pN}`5c^1=RqWt z_y@2AU>@m*CM5IxBiDh!5g<481JH1xN)y=V06khaQBtJalVJ6Y&U5;Hn{>K|`8N7Z z9`AVMqI5K>xP_=-sp2c>t{*}D-x^$JdZ4v;gD5EI5{!^G9<>}wPq z$2sp{2}oGk=&P$roDunzA$H0=@XisFqrRyq#10G$` zUmVi{wYygFP`U}O=)jvC_U-zP1MAm*O_$9Y*`;Q#V{HeYh@zIPd4z8SSkh2{^xa?K=A!K8r2Z@>g~ufEAs>5xo?A-|gi8 z@`4kltVQgf+<)O>X+8rVVZT&NhLW9jFDADcu1a6wAA}#iuH%jU^CyO5BpoZe%%%Nb zNY(~arYjf*7%qj6hPK*jX9)%F3!Ph9wHmmz)1`muH17_rTE>wdvQczMuK{}+I&)3e zv;RdmawJi$p;_4n)$8_FZ$@7_enJB@1N;rEJlQ+{v_jBa3FURS+ej>=QQg$OMz1@- zP%;T_RlzChkdixMb}bltZ;*6lv{AOC4XT5Nz!{duE=wS8kEfbIv+4wpJzlj9Dj zT=ht^h-Y_DhGGo^-vH_8}*?3;m?csj)hKk?g#*095FCnuovR{pgqOie6PC*R6IB-|Dy zh#EqN`f?{Bq|fc_FFOib0L->OeRcR)=}y?hxy0YZv$QpeLfVg`Fl@Yu7>2pZQBJR| z4k=8(aJF=#y}B}8SpWZW;lNK;!H8vRRSl9~4#Y4tfO6=>`~Jo~MFw$U1XEgW5$Ru- zrumt`3OHc%(;)gPIW(cf(X0k0 zkUD#E8X^=Lmo7B`4zUQcs29@!c(ucLZ|%Bj9ypPJs=9{9<~7D>XmP+Rw+28IxZW$Y z7sLvI{<;>uu?_xAhx6275Woyob%cCU$VEh(x^)i&%8=N_v6jOMip2OzFn(Z*5qv8@p4l~2fmdu!{;{<0CR%^ z^{>$h;g$3H1E zLR|H*8qApry)n%VIgmQC7*B_oXY3U!+CCB9*7gg=#q1axcH8TO3@KdoVak6()c?y* z5t1DuyC<*+`v+;^8G%THA&-M&vN5^j2YF!Ehb0WC3Uz!1p7 zF+w(NBU3SIwT$uZTlh&S%4EuE6dpOT+x`CKQBVRf5}A>`&<`vY#=Sr1uCo=y=X}Je z>@FAKS?|a++#zz5|AhwVZTryJLGTv9XftMNq_&^0n##*At|evN9F=uEqdrinjd)_v zNIUjrp)cNgJ?F*_zy=B?`nrtG0$EUWiD7sbIeN2W=kUM)!d(CIXO=67%0-&`FAw!H zlqY!k`Q^7dfs4}@N)Sj~nlyh$TIF7SQVd5u2)JJ~i#fL@KleE}QnFYK$7aCsvb91; zTcYs1s&e=a3HvKDdnU=WVs5we&@?T?L($2BxV@}G{sU}C;?MTn)SQ*l0kA8FlE|T_ z!iF3lxk8e2%*o1pT0B+Es$4h(sjp$Y`6ik}a9&=LRwI92C)_K4@I4ux&85-DLHcz2 z7WQ9WO!hgQ;4B$MeqtrzvhyR`RH!_CrgRM-_3l3GB%HYCQSOq$P{DLT)ASpiP@bQ& zHJ?k(OuNX~7r(7hLJU|ViG{~vyCf@+gbg3MM2;JsZf6Ua%qyBfSSmhMpL$aZlMIqV ze(7jUydw3fwIxyrSdRTRmY;WqC8A)5Z^3N_hkpv=H2XG$ne>s#*vaX1=kV1rVo8*|DA(SZbCV$9o0mX8K`m#RUynmpz+Xf*cO{?rz11WBB z(VhJtUh!{xZ>R_d{5`L3U~}XQ)!?iKlo&!^5rf6sMRo8o@bbEftcBoNH(=xMSwuSX zR@~fK$2vi}^dq$%sh_xABtyG_CR++@4ERBsoWY1p4ZYgd=`oM^K)=t!I;`({Ly2z3 z&{Ip$Pr$c{eoqPl#g8_1#}g0fY=d(S0?U|^{_ID}5g2X0ZP5#Z#Y5%3s^PMK^|NC0 z$Gkb79Y78Uz`!-DK;cH& z-+tD#^H+#sj}MWU>?vy@ODXZ=mtmxd#StOJVNvVQ|xQ+hK9zL zd9%$(QdRV#7z_pwOVnSjTgWkB=FOvr(XWPx#@3JmaSz{=4H#xX4LSM@VB~s@{`(Kk zftxo}AqP*lAh4ZkCCE6Jog1TsRh|xoE>buUMLhlyWX&18O!EW2vo3(bTM8WgdRwPO z{aK&cJTch6PB#19lQWL%?wrdO2p|ryb_^$KyTl0Vhv;2IDrQFU(}1tE5zBVs6a_L~ z0f?}&*?zsI>S{Lu&T0bIlMtfB*8^STUB4}wBLG^jXP8u3W zu3>i<7?sPV7m`OpjQunj4b}lX-Tn0nXCM*85eG?F8V|Q@zZ@4_nHNQQnD|t;R~ltH z>puIHbf)~h(p#JSaA>`@>XMi|1C%A+LEUlM@SWE$*B%c-ajx)3=BFc+Q%GkQa!cq~ zKI;GFw~WmlO9BwLR`${&aQ38zrUhhm-3Went{pLPwYZFz&0SWH4_i?EzrU-yKw={` zKA~qs`mHQ+`5aN7F}$@d4=a&Nld`8yweoK8kdWz<`icMGwsof zrq_|M7V}NA%FGe}iU3SL9_U!&xbXt&x%M>`dFU?M|}13 zs?WOOr`)onNKa>>K4}EUdtfqu*aNOf=@GK56_4XDoWXIlImLIU3v7M`+X@#sC`eox zRSz{P+D-@&Ov3VQcNc;5ohZd-k{sfZZP(2gm&nR1-HM6W8_iCYx;*SDPJ!@*Fd;o@ zEd26+1gk@GB$5~2pzFBmQ7N8%Efv5PXDvpVhSb7X-)LYzACmR!;Hh{-y8-foAE)BY zPjiGi1VjWnzM~yWMNW4RNZe_;XCIv{Z9RWl{K?0Jz#crJ9f~YoaJU?6uwz7c`s)sm z9)u1Efz!FZot!+sEi#@a#9dpYqg;2lL2=4q65JaCj`uk@p1wgrxXo~?IKA(cEc4zP zvLd$aQ#N-fRNgI+{@o@lfCerCejjc~(O`;rlE5WJo@S&gGog{%@-DvN8tA0rO>Xn@QzWTF=n86-h5K*@Q+OBplp9g1JGUBHgrY-Q)$ z8EmWdOOJ_ci>4@Qh)JL;KV%g)GaD44R6vEP|^Sqm#&yZXtJrxEEYY@Yb z68yDeOJMTP5jlGe7CoI%qmxBQ+?jeOPg-|V!~bwJ?N7_lgnfKtQs$Sj23FPK{^BziMANr87lOW#*Ac$=V72*a@-E?dC5F%L(k7 zjS<%ca2MH)IV8#&6D&Yu3RPZ6Z7$*$w4N&so7-~haH)ckY``oEn>&tXY0O4=)W3hA z=&OlH92>b{z-jTqo-~hKF^~va29etWoYA5O!bh03v%ScB4mxDFi$-{k}fvjRX<))tnS{A94g`%iIH6k&6t$JR9 zXy+|1LpZR7J<@bk|B)OkQ%QfFLd=RfqN>V!>qs*Ftoz}y?i^JO_15x<*zX@wkob6g z;Q$i(%)ys2`te_Y&@Ei>ojf*zN9+(qj$l_l_Aav7a4TQ&*ALE`d_fpTVW?zZtFkF3 zIRd27kpf+-Mv`5b}nydhIdks4yL^84istUKpuAM2fwjw+*RFzcf z+Zl&0BCgmsFejU)UogE%(!}p6jE>GrFnU{>?vZ3-(O4lWp|;cR0y%QayMhRBC&OE- zoyk`i5sL+n#Pw&rBbBDXP+XZ2ii$-^6RU`L=qgoHzV_qeS3B+xH4M~tzGt~^2E~M* zabpYy1qOnpNy-Goht(~$-aM)Pv?X5Sx<`Z7SwrW2HNl)Gd22AV=$$v>%EliI)_Q(8 znH;)&l06SI9|iW*6)0XL!z76Dgqh;@Z#q?#{~mN@kLDhY57x8}7C6JmJm?4`B~g8S4yW~gipGSY$TilXll2aEWPRn~xw$MpemXYm&eF>k zsZJa?6Bh;`S`tvdoT~hJCKA*crNCDeZ*UtyCQ>t1QSI)`!UlDr{h0)=t5k!fxv-$H z4N+x4+lpnwNK=uD1ceS9?&hsL^Nh*Af(J=ZGBwYh()obG_!_glTiI+Sr@%*24E1n< zn7~#8rD%j{^ZA90SHedm2;=D*USqhYiGEITRDy){k5LqyAo=$US$VVDO(mVDZ*15RuGOW zVl6J-+B}+czV}ZzO;-ClooXO#>0cS*YTf~r;#Py<=*t1x4osyRZFU~-bYwb{GHu`1 z*B+v$&W?c>X5zNdx-Vh_yeh`;fmn@4)J9HdguPaA-Cl~NG6IF#WJ--rkVO+TV#R}t zem*$;*R69CM&>x0lkDl5rut->U*=2LTkrZQ)z|dwknav;1ZuT1ntx3hlHwiehf&(X<%uGP@NAi{B^_1C z)iEld`kpuPRQMCb7IL^Dh`N&!(kUK?{sTYoU#=3%S>b?PpI-zPsJ2`Qoqt-P_$zI? z=lEbTfs^ONc;Y2J_~7PVUwnvn&H^o4GFFBa5mfp{uO&8-1~Q{)Iu$*w^W;6e8`LYb zu;d;4@VG;u=0!*RU}%OEDC7NP7#I3s+^aOum0W~-{E%=mq>qU~ZSkcnk{AkgI!0gkNK>U309WxsGUxy)-l8OHn|o6r6+b8k5}TQ*Znk-R>eC} zn(gOuSbotqWlh)on_R+pyKs$|d^#MS?(ieLKceCltkDjciFAm&Fr8}43X0)`Q^z8e zJJG0#v~#xYfIMI^4`qo}3`u5Ou`!ZBLyiI!7xX}~)=iNS@LOCs1eDiT^)1*Z6~bOa z-hg2@SN<4BD|8nEd4PPRHs)~4h0!d|Jt~}$dBOv}(x~#lSDyTsKn7SOBTsY`>p|~4 z8Mk0mj$JL)LL&3-nmoNT{yiY-b3#2lg}m+5_BV*kcPF_hT~>vVq_+vX&dD2K@*%by zViR)H+9P|L@(_SLEfj<}&&N{_>Qy(S0uV=Yg7q)SV>GTjGA0H{8q^qfM3wS5Ct4gQ zKis%bJi`vDSeVt_x=o0SDK6@xIQx4b<@S!jX99m^3DCJ~;5{w2#NADha>hUwo>Ydt znAuRPA98&v$B`moMPltx&U>pVh~t zr{;6ucGu3j92^M|$W-;yWqu*jNXu5wXR0uF%bd;DvoqL#WDi@zDRH+OK3$aaXFW9l zQ$F|&L{+iAH z0Z#vJ!;23{x(AR?&i^pIzyvb=Q@%IYqv+4ngHu;wjlJ3ysG!~za-put&~{~;6eQ%y zbT@RE5;bH}H=g>du}o+}Ab>wcW^AtDGdMZFfBmXG^G3A=43&L6(_Xpf?N#2ySM$qy zv3UMheV`5PQ5WY6$&OYQ0L4Wj$y$4{6bR9nI(7$baV1=)g=TJNeGECG(Z3z?(EB9M5uk>!H!_HwgjRs zbv8%BmHTVcdU8BxF8Lw(%HG0vKJDnfSmq`I zIeqDi7i|WfxBOrcT+9W!b$jCw#&2vS`V^dKPww6pIyq0;YtB~PE2>UI$a=i6aoNz6 zpcl9^!k%QZ`+CIHdss>m%)6bd4Z?1WYSlb-ZM6Xz%&8X~-Q1y8oeU`POoGB%eQgU? zUtS=!A!uvj_pIZ|lL{8N`4gL31qk*h>fwbf3L^N{y@c)k29e3NpV2$<+!Ur+a1;#Y zektR>+#ql+@^p#(@B=VDZBINV-JbO6m3xAuCj}H*;bCYSY>fnY)V2VuAB;j9`xwi1 zieNg20x$P%y!?(661D?DnK=68We$GhNp9yV5z(`yY#Yh_^~A!#(5VTF2F^$kJR1a(DD%vu%Z8sWR(95C zuGfuZbP%2?dnXZc)z;ZNmGE@hFko-J!H3r{66 zVQ@L5r4Jl$zX)C)*|Ba1FKL^V+xBy~n}HvcN;2J34rEdFm^BRFQEWRSb>thd*ZIj^n}ck1 ztA<-`A$oFs!zGuoPyL?NNTE}T4Y;;pgJ$izN5)z)3|+_2=&oX^noZF>Io_#L7l!h?RA^(K62|6 z^`+j}Nz)cQxz0cH(6kbSS9TlW^je7X2+nBJlr$1u`7(syNTdf2GoQ)WXkT%IUyUfK zqw5Vo^o#X^YJpY4SJS{OYtZ*C!M6rQ0g0itjwIQNHS|rc0Zf`Uxx+ zOCO>NOcGHL6M!fI5QAziMAhPDDDm{Z@o`uO;m=A&itV+&T&ycGq?|@e5@oh?a~+iU z)}6-vc5RYWIM760f5;~_l(H8TYJ7gwzu91L@`j^(VU?8ULB%>K4WQ%Wn*xf)G7E=j(Lng<9l0;rPx3)!S0_mg)s7x0~LS_J( zbnpi+`0LVhQ0_RmX80~&Udy(UJW?`{qX?e4L~;?QoV7au?7CXDC3Tl^Ht%XPQG0`5 zA3M<)BK>mPC-zuy$au;?;+OCk5c?6PP6j2Bx}Tz4$sfqSw@%_vmQ5ARz#?BUT;Qz0 z;{IaJq;liNNK?tmg6obFG+QFKwv2_V!a~3~dpOdb13->Sn5!LXa&tRC4(ggl?)m1T znq=Gu2}^vR{>_~bcT^W&(p47aGVqozZm+U?|9hf3Y^MW*E2Rto2kojVzan7zojvH6gB`a4?rA`<_IxpA$4V+?r)Vo-O~ zqnd;!3U}Np%IXM#Ff8P{=bv3+cDcCOS>TE+onB-0ZyWiRqbuOgzYquA<{%w|f!W== zi5b|pVve$+=}cO~gBVfx=DRTN&JNnRewJNup4I3#50tN3Rs#m_UCbc&#`P7y-?E$w z9R{|Sb2uxRw_+D>#zCLU{c}(e#qLFrbD63NXCldfRNo!e9~@%R|DN?yM%;Y)y@i>+ zsJ=#&!z)kF#DLradyD=a%C1cs07WO`^3ny&M?AVNl!8kSWNf?&h`+7-qoLYLrTIqS zHSQJD6yY9A6h*gM8&yza#s}5yHZx^3^X`q56rEvG7;HplyAhBg%$;>QNpY*&w z@jC!2*KrbU^_S0^q}j%NXHc`b3{If*YE3(6g*Aoiq270U7J%K^9$16#%uPqH#IG?h zC8t8`zN4e#ZrUdx*l9jZBZ`9}kir*CawglKC`O+aL~-_X1yZMiE8dB|s+p zp^_|%RL;D9c*9bMg3d29-YVBluF!RDPpo|bjlxT>urxCGu0#eh8v@}lfGVCpT)2R`3HZE;1?MaISfco{Y*?H=2Wzuq*a}Fz~abnROJ@;A}+sBi;qRCu1R$Cl& zWWUG*3$F~@q4;uW6}AnswOdx{68;=)hcq=BV^^Lg3P0b>Nw0sC8j8oHQ31|!jw@{$ z44-m?dZ?~InM8xhzT#{-2szG<7$%R$>9h<}nGIu=&si+AtD#a+`uDmQ0la-MMLB{r zqd3ie*Gs%c_=~c|pZt|GR2SVo{LYwMo`Eo?zgCM!(xg;l>~#fy^T8E#s|4Np zu{@)_FIwE}SnS<+Q|iy{6%oktc}j594Pv&vrdKXGZZa5)F~844nL;l@QWOO|NAtDP zl2+|K|B9jp9$1=`!W;ztlz+;5&>>^Ej=N*52@JKx;;0`Y-khm?J1hZnBaI<`C|uX% zAt_dd3Bo;~(!ZE`dM?q@)IIo9t-{V|Q(Gutu{44br+}(9BF2GfORyj&ASe5jOxT-7 z(l{T)a|S4lLS{GOV`X33{g>-icV~ML7(c_sGujUjiolIkv1%AL35vs%TLs-13%V=I z=-`630c9RIG)4zsdAyx{`d!Gn$1?XDm2TOjIWjPhl^ddzv2Oa_ISmo2qP2suw!rc) zf?Y-BA;XvZIiuUA@yk?1Odi$sPII|w)kfiYRU+Lh_(=r!kHHdEmv$}cmP-^M~2jVT(?eRpY=5I{V7taUg)p%2dpSlhZr>jBMSj>Whj zl!Z)$pLk#~3v`iR-HPDBQ+`U1NClYT|BN5Sd`a*l?T#-}KMjoN(5uBurSK=OY9J1= z9xWEnG*#*gsf{P(6czGpY66+h?KQ?-O;F@o;GxAX$L^?<7x8L%DR>1C5{oNua@~}} z&S(Anps~Q4OY>--bhbma{k_uxyp5V$sqNE$d6=kzrFT<@ArOzA;b z^%n)c2_Xwuun|#KdLTIKu1ogLErJAJ6T6W1P?7EmliuR7@<~V|QL$oBI&wgQgOVC1 z_|@?3^Mk+lRpQZ~Y|}O3B&wb%f?+p0r)B{Vu6Z7EhP-`*%bk~%J&-`dID9`Z$<%P~ zl0T)haG`=5tgf`MEB11KZr_G3SOhZoGwFUWuBtcd*%yTxj;DSv$`sg)MNm0=8Itn`qTk4j3qnZ8n?R~Us)i`9R{z%|3(Aj zpx}uQM2a`cPPz3vO)k=EX>i~harMyTOXWveELC`Pqe|g(xRXEsA^!NJf_rv1k?!{i z)!$A??5&SB5=PDD@5rc@O0Owe=pvNQ?{qPc?1w}nA#|Jiw24_&3hMf4najN&FkhBU%mZDaB<+ajgbC|u8*Uq%*q_aOM*eo!-+udMysx|LB#Nic! z|Kc<9nLRPV08vQ!D#ack0XZ?&(wMVaD*D-N)~MGxQYGJZAuEdI6hpyhQbqlU);@WS zNkPt-LUc`y!bJxZ$Mf$~2dRy(dGe*#}i$s@2${c%Cnv)>)KL;!C#1HI3d3fiI zXPnXhNIZ2{w2#Q(Qr}xmr{z34Pa3%xKE(l~dr4~*7WBV8-@{u*J42d72FAVdHuV{T zE&4;nbN-7};onJys2^`6e`WvkY&~DFuI8iwdv{v+-T6i(0#4_ar)!6TJI+Z46;8Hl z+TLm00;~NuxNc?L@?PoUe!&WWNJG3GL)Hqx8>n+ew*V#MI_J)Iap&dHJU~a^B=E(9 zDPNN3Ue$Pu^`=j~(7^7@Y~uQmz1tsuGI7skm$6SDf3I zT{DNFUFzABj;(2Ugo+V{$k;5FB7XcSMu;5$#4q1KrI5-GPQCcn*(ggLBEzA@i z6MT3sy!C4ILLW%#`=f;#(nxMx0BaGQ4&x@%dzc#7NLSU9>KU{tyT&8qBKUuV-P2+v z+7boO*tTsa9ox3;?AW$#+qP}n=-6h*PVW7K^E|#_%~dt)pf{VB`gXnUaLJgj73T9M zvu-ZB8ZaIS+H-uFfD-TRHb;x?->VL1f*_i)X|lv^lxih6(2)T&6vu#4M(Ery42|85 z_8R2&2x!fE*oc<3`ne#;Of=)fvdang&XYXurA32z!=(~H7@AzZPudN8A1+b(E`#>LIj?QWR~Ib&2n0bKVAK9I>Ip zMEO#8Bdz7sbMSH*DUs)YSV2!)q@JdX7H4w0sTsT>=J2)fB9Qi!k`R_0ZRlA6`GSPd zxdYuMKHC9Vm`2Us-7;hh{VB9*)1RG)VZ@LCY5@mPFu?r!sx{3<#a|J3C}61l$Lnle zuxK01x|}?-m1Yr7lYEH`hPhU!8wJy~vOS1g`m2ccYB}t8bMuuGq32H$4z*uB&eiw- zgo_@cBVhJr$C?s#XfKQzD1*1;iTAU2zNHqXYoVYVGD(9$+{vSho%C<4mWQmDCfo0&=Gxp6+8E%@B3RecCIp zlNF;QF4>v}^*aRVlsglj^Avm84#e@gNJf|$8;R;?!3aRX8i=oD&FooHKGD3#N&n0j z>LHYKfV>qGXY|hvWz&8xTjBDOm=Vy4uFf@X@_mmIx}2@0KO_0|@|wX}d-r4CpvNR# zLST36djJLvYqKg}a9=i5Vt;{rHY$mhjXpWg?hA^!4kX1r*Mn(eN^l4;4eyS#v9v2! znsl-rFpa@sh?|tsL)Jb3`;~~G>rpsoNyO=kjk7~sE9Im6aQi--d9U05ik{<$U-B|5 z-o|68s7dwA_*=ek69KNXVE+Ds z@hK+6B^y;}$tmx7C zRZ29&ZyLR=KWs>R={FK)NYy{K>7@$KTe}Z!@S)E4LeBLM4#(8(YPr`BOITt+%Y}o& zm9YbJ88JufGjZRmfIh8^U|j1mRV`Yhqq`$_Qo!&u#>xRm@Mgn%!806NZg+%&E&TTE7DO1S2_ zYP(t=6Ig$a6zy-Df+&gC%0P%wA{}=R;fPk#9LLJE#;ow-{KdKDSqFUn6M0W2s}lQ1 zc{NOj`gu7jX}$cU+TIihXI_=bza~D6M_qd26_%VKNZ8K_aRPFABS%rd- z*e?ICz|g?(%0+{~AA zXP!UQ)(AWNt=B5oUz`HKzi|Riw~+Lo_hI6SqT+T{a7HHUauQ1zI3p+=rWhglM~Ek^AM{KLro<=)+Srb1m}*GPXJVK2doRH|Xf{tY}}$1kx$k-8k5v@odre9w)ehMn>Sz z@uXGv1AKp{igOa^y)@>wy4bD4T7NcVC2CGbuxhLo{Woh<&&#qlN09g$pz@KS=dypjo<7asPmLISQ%*HVbnNDDjJ((Ye;Qx z%Msg*vc?O=#ld%<*V?gw8DM&vZvhQ+D!)8tCwkEj++Bf%MK?tmH)L;Q8}QxhMASIV z25DxNqM3Bs@v)YF_vcUqt^sk0^5q6;Vn$4W9I9h1d1oXy^h#<%3bQSWU3)T<-9yLweG1EmY})>t`y&lJVjX(>p9h~~o(F}atY z$pcI;BUEV`0PREj4qYYdR7lcm*nCk%QQ{n^wl0(6l%_++()`$6Y@zKXotZ&nAY`kt z;zJj zmASMtM;2e9^ty1Ce*i)G|0c}_QBF7Z#;IkJ(&JBp$Gbm93`4deaGY-4%M7_(Ub+1+ z!&TjE9<{s4P@IrXol<**b=NA|MJ3#^j0f2eNR`;vAd(TjYgEnXIw%z%o_yPHBrQ^T zIFbVrf-Nz>>Ivw$AZm09TR)I47XOT7gI%5%Tl zV`Iew$Sw9xo1GoG4Bj>&F-Qb)nJ`&j%=G0qvD7zkEuf+nxC9D{aEfq|#naNmi zzgMF)`~T&S%?SzRo1`MVmDPJDz>EJ@eg@_^KP82pS+eN;pskI}6GWP3W4U*}{tC=# zB5AD*wt%FGRbr=zqCLO}Z z%E_ZSUkOjw$+JP_E4}Klb*|<5hgQDa~=owvFzw=C87|7OE4Riuz zoc`@EGp)oe-G%u0v<>MxmpPhj%G6|mW|71HIpq;E=am({w8}SmqFd0g^wBnkhv4g8 zs6j>%UT2iP`ipd{#Fd;kauIJLM(rXuF)Xl6t!0tIm5$oUx|#9UntX&Ohz$(w~ICEyy2eh2Wmk>c|Eq%`%qudKH&JA~i~+ z^|2I^uwLdxt(AE6`)jc9MGnrYevnj(-3E}~W?IW$5s`gY86r{u_=8l%S_NnFB-KDd zMwHz_d(?r3Zzn_}?oJZqZ^I4RRku9Cl_Pg`<;+{P!rtkByPz3vk!>SyWWI554@Er9 zemey5H9KiT+h|1ck;8==GAcBwrapWTg!<*C90~LMv!2;=h&?c@Z_o!Vt01S4Bl4l8g{n^~$E71siIlRLUYz(6b?fkz&_f*>&uL8|ioARr}HRMt4wG zbRKA4kSJJ%WSwTTm;9#V`aD8G-te{9473Fsvq^3+Id)8LJ6!{>LJFkLtLbcemmY#* zSZ9LX`dY#i5M=nlh=M`uFOGr%fqsVb_|J^Hjh70{e(O(cJ^vyTvJ4v2+x@aGdBur@M937bN@Yc50my1o-fQuza;_fk|B*sAL#r$i1(YI&t37v zVAM)hHoC&xo%Z*JBr|#U^RHdVU5Uonl$H>Mzp7ham9eMkfZ5U^YqAyU-~ZZ zY9pvls~#1!rI142ReeIeBVK_pHh4hLL;L-zRAvg zb34Ny*q(H)0d;B?kOCX+w3(xQX{YihatfHYUkw+K#T%8`Jdu9RY!iQeRc=QNn%{?eu=w6 zkg^bz>5SdM_sPL)cRGJ+e~s~n;T@CJS{Uy(1X?RnBfx(N1YgXt^a>*yN)688f+NG4 zs!#^FNkU7q%9~aji`8UhV6~hgGNR;`Z*xtTqV-X3iKrcKD}TwEuG=1Xm;M|HFM~ev zs2cnA`)i4*<`>t*pgL6B{Q-yhfArN8xmkc6CVdFm;k^QoVgZXSBt^cl)j&5X@{k)| zg*QFFe31eTq_&9rlsbZlztotyEo@kDXPH?7tNXKh8ZniB$+f=1WR1V57<&BDuj4=} zCU-Ldb&n#bdSZ1|7Ay;qwIm0Mlu#}IkXYh{IN6y}l=26n@2w0Ci1sAi7OndZ;ipSb z?2ylQ>#%dq4wGjpg!Mib&kzyx&uH*{+VkRnxnA@b3*)=1iZPryuo?6`4_XOP;#ir! zWw|E^%KL`N)3|Bqr8ZOUJsdj00+Ay_e*gd!mf*2E>M>6_z`!B+!|@ zq0O?kd)BaI;lX^ZmUd&bL@arQ;gU{ccD+_Cyrne?CdUdI{0)GCw1bcOb!W~7D5A<| zT#`+Ecu;#;w3L6XMQnO$7X7Fhp#ICPPeW{ue4x|}!Ld>8p#xq>a)M;MN(q)Z0UsVH zq(EeTF8li?BHjKM%%06qJV{(B``W!?mMb3oH(^>cU-YWCo|21N`47@27_A3Xj}GLV z)u5@TNc!GBNPq0hZ0nzKN>X@i&!Z5|Ia(|OzM*q@BjSK`X;_)jgmTD)r4cN@;!arZ z!|g0IoHpN9!0LRME(vB`bX3*dBg``tW=AxCj&I&sT?5i(dgjNfwS z&H>r{N8JEEY2aCm!~H$4LfXDD2o>*$=xT7{gF#JjnU@2XoO z&Ltp1oR7)FVYy&!NKzmvEQ@Rb?;XvX2+sQFc_Lza`a3wG1h7a<1n@#=K)#~d51g68 zTP@HdsoQ?E7gx2jy$;hKJGJEWHKH_>V&OQJf-}kEH6)qqMV(AguxvxdnY^K)@8|K{ zpT&%27#SpAxjgUWM}~8p2nQI)+rWKG@a+~ET-gzohCq7k_<=8dno^pm@r16uG}X29 zIybcPq=q6rR-$DFQkwh|y#AXnz|)hBArm->Ss|-3Vglc2OYVhR#)Zd={pBzhN9inJ z?9P}lnl?2=@EqJZ zwu148o(dD5SAMvRE0eT4t&mo1(NdzDcIc^_zAcGUG#)&thlY#S71dE)8lnsFAxRXb|`pN$|&seZPvi^P0-3s5EBlMCHA-W_8zk zK&W@w!TS#UfN%lh!S&pcct$7yDajnDHFus3D`cdJ2N2!=CoOuyrEHhuy3NbapF4EP z3@2{Gz*b-J2aJ<7pC~2Ivqn5)7s^<;0M+E`iz0$@3-)ca75~G*<+9$!?i_@V&(5&+ z?AI?Y1KY7r!-7-@PcLFX49eEIhm|F6+~h-5rEd|p(U7@^6M9G*Bx&XUcfi8($MDF6L3b0HxJNr@pKoW#+Y(g#-wpPM$v>S`SK{z;2%=lGd)m zw)_|tb0c!l!qQyn>u&T!w?~Cewu~tmWrB04>JmGrb0B%)Sy3SDD&Y5Os&YaAEv+VE z^PxOv*%gW%x(sj2$5+4Yi;#>BIJ?8Q)FCyHvgn57an{H?M z04@JFU5@udTMlHm!Yixa$Pyq0sAfJWAZrpgeW}cn#+XLirb86fA6Tdyqcu2k&G_GB{8*1g0M+$q#O}OIRrNPTtTCdFUk5EI$|VugTAhRtvB5HEH~nCOA;c3*J{Y zQzC1~Vz34WQs)zW=Yc*0dsZE6fzA-<#&+UEtlGXj^G9JNa#0o#_$#-_+K?9_$&mrs z>OMCQs8wXmnD!4@t0b|(BHnvpn2 zfJ+98zjl{(BPeg$U%q$<$nMSj3~fYVR;Dh1FjOHURt6H4l0ucZ^i+!de_If0EiF|` zJ@ynk*Y}>B(`6NJTv>0!ukpWJx6{&n*Yan6Gv8H;p$%st+0C;PRGHRPjFsu0V%uP5 z(fum(%+`XnzlQ>?<%%irM+V0B;V)dSy4mDpwQAQwUg)k^N=C`mye_b%;|XtUy44n1 zBFU}3kuTgMFOc60nj6v=6lq?y3b>)33iUYu{M(npEY=|DI-0VTd*P_2O$7QIy7ZTm z<(whBjAWu0)n8>!OIL0O+z|FH>t?=z`6-Kd1pO4r%*7mOZGdT!vjKU*zl|wqTJvVZ zFiSLRX!n?w7VkV}X&cOq`)hrzf?}biSact}amnr{2)@ucdGv_3FQ39(+EdY?Xml7P zhJ+m8jEB^!o9rG!UbUDdsY;EGNM;}v@S@a`0)hIXzdU`w1oervOCi?Ov=FUSsL?&~ znnrLZy}dPdU7b4QG=ds3`#0tUpn{XTSh$A3@X(*4R{g4%=wb}q2ca4~Uyib2Krx6V zOT+`MIxXYG#WR2d=E*WVRQ(Hpsy8AlY^XOE3iySw#x%WDEQ94ZhfJX@DBC$h3ln%1 znk9~6=dW66l99yIUEaJ4y<>6(KJ=@re`(sj_Z`Q$d#L5$$xHI7YPNeiOv)6k2<1o81}pELYk4zJyXs$YflqOCQPujPf|^HIc0fc+p_?63!0@sE3POB|axF^$<3j?G*qvcZ zHa+Ote|2{f)&!?VfK{t^Naf1JH##U_8LZQa;S6tH5ZrCS;R{BKH#xN$E~Yr!!K(iI zrzLuc?frVtZZ28ip$R1;#lKx~R>>!y0SW4=f^<`ZW+3nATReeuxdnz7i<3TK@jR*V zMez&_7UAOwhFsp4^EgWV2bQH23SzHOsG(Qgum>Uv&0^Rt3$a-K!~s zJo^-s4B++HHrJKRK{YKpX8awgLo3V(U_aX+CoIRB_n1w|$Zv)eBEsL~@qX2d=#*!gHH%CC}aI=Lv12 zHRAh@*8AViKXC?`Q*HoNbDVOrZT^-|i_LEpnr={>U`6z_ z@;Ft#pZ#B+3)bI91etkm#P{5%4bbZ3+K*4v^$1S96D_aU^>~0gQ=O^`jAOL)t<_Hu zb4=v*^tx;a)vcx1N3DYqgA!t$7jRlpLv`}1yfV|Rsr*kfn(WqW|OgC=9J zk8(a{w8DWXcC%WoMjRp5n6i%v-2>>-9~$TmC7@<)dc$Vyj$?EACYjL~B~q+-p0ng} zN<-WJ5)n!G*jbE3t|1P(G3ck=soV*ug&g-W<}Fy(*2In|2-YGLBU%`wW7QL!@m|I= zA%49}0XOJlr;097)O5m_zMHVJN*lHWq@VSZ|8iG^xQ+5XXt)|hd{3owIJjXF+=FmN zYevT%s`ET(gvM;HjSPfi=XB0aE&LYOc!Tz@7Nzd-tg(=<8Qg;{;y#H2$28mvHm|MVc7ZQ0>EPELbvHyZ7<~qXBd!Ayp#K#kGYd{so7+dLuB-tukv=V?)p6lZ_hjSN|@KO`Z zAX#*zg6zWtGw}uTn&G`0pUt5)KXMIYJv)v%Lc6t*-O_bb`|a-oWzdYq!N(suh^ z4K(1$-0Su!ELA{8Y$TF_1ci36w-F6L`S4P3;~mljd>&5k4FzG9fQkHvk6QOU3qh(i zQ%fL!VdlbKV4}I?bhBDJJ7#mh(y5z=0l3U3qpPW zR8zI9cFzUe!KtK`!{axYXt5r(x%x9>L&4`q^f`-z*)1wuU0!B7bvO_(qy^(McPp{% zKl@Q1F8|91*w&*RrntPmSma2)Y|JS)1y2Rxb_QE$d-b`Yam=yaYeI>g$fqu6W`BF9 z*`Gb-8dxA@?2i~6CfkKnovRUxq9q|$RMnkzL3b!ot44PfzLX zM3NR@RToa|j!?-KSCSuGYwqjQBEK%ici)(#H%r|#4mr=6nK}OdBU!-W_O&i?C<-fG zsQL~vs)DlU;x?R>;qvNY+XIzH%;$ZtZTSB!8TTI$oplXrpCc#kv43N?9!dCeERdU( zymt5V4Nn7PcQVwS+fFQ+mbY4Vt+W5W)Ekj$z*q7?TRrzzE8TXj`<7 z_66ni%xz{c2)2gyaT(&!?#hw};CK03ycH5n57$@^V>kCE!%DwD!a=Oc($U2_nOc_-Qqm zf;VvSqwMK&u(CLcRa{|bW=vbH^wIcBt=?b?6X58Nj`7jDAS_)&BQRAZAq(Hq>jtuu zooEK)eah7R%EJJD7`6#YnGY52RD4h0Eib_*u6!;N$jfH&YY?Hw_#|H_Bk2(ZR;8eg zvf@)+v%J9RYQe0E?}Dy9=gJXZ%cN||50f8JF@}1sVqpi2j7^pE941u#6dq(*`|NE& z!>N;QV=PeSgi#syG3+M;u;fH;uqEVk0u1|#Xru@o#eOoR4;~ofKj?pw%+=C*!aF>l z38R<4`c5;>Z2Q@fH4USi^YjFV4EIHdyvE^W?p-4*j=DYOT{$m*Mv@($eov9sAt!Q> z@yYn*jhKO^7x(%khypL-rPc_${$Y91ZOU#wkFKw$HQScB&1KoT*9hG= zCZ;~!hd!B5Kg>|7Q)4Sj!Y&6_28GnT#C*96%C4cM!rhck$}}?(B&9&d94XA-brH|T zp39gK@G$VST%_lz?#&jz{$+Rp{9&K-7Aub)U5M-(MEb3F-qC66G#x78@+OCVqWIMv zkGH%s#UNXlwr=QgO|URKqZu7s%GH&gO)jDq)CrDBVO*PhmS@V zYC97lAT9MyPY-Jj*3uxPEYt`7q)h2Eyks;#E)*8OV{h< zsRV{Wt-wr}S30t(@{6Obi&i%0W8L#8$Cj~2a#z!8-}fNV8|H&5B7+7 zh7#S2J>@}KW%da5IiB~)G@#)T01h;g?Pl5=du9FSfy>ehh~uDEhJ~f;n5IRsR8||{ z!h^e-_TDzw){hJZkjGlh$l4E}@eo_6fbH+b(x93_@kjDUP^uetD11-{)w;SVQQD?k z5_STL{Ncew6OX~(^eF9HPF<8YL7Nx*f4LZVn}1~VHR@7e<&>Cu2HZHeZg;>YB(UMu zx2dhEr*<(Z|DYZnX%Ecvmr_{8()>rgEeXpogLjNoO!EDg9*rLFJ=SA5= zd|A=Fv}T5V`@vfyr#?fbff#!0J`dlFRJDip-t(&~zK77-R+#p@9PgK^{qg|9D$!u` zm{J!zhSEI~#dR_imQCf0--b}dT%Ne$sXYoD=6VFmdyfv1jzK+wZG1WJ=kq3l(S7nD z-a`|XaZfUO&F0bkNNqmUbsfy3$$9DHYUTa4KW>R`nUmPd!%jvm z(nY&aJAtVA>*r3BCpIq!kVW-)qs|47xSNi}+dh%rKYG?!XJjY{mr^abZ)2cr{khxd z<(W_i2f67=k>(3XvUd3u=-L)1}qB{YjU%jkDixi#APD#=R8$?~=gaqfyd*W+#4kig%$ z>f*D>3T2?`)L2WA&wGbFOQ=;K&T^8hhQHZcwkIP}(L?0OoGpm(2IGC_>MUv$FX9s> zER?BO^ela4h7O#-~(MdPV{kjCFmnQ%qNlb)kJUjy!YGYE(R3f6EYG^!UIWzLgs@) znZd{w8%fWGZbDN`5Gd5!z`WyOdD^Yq?(QvYs&!ghw?M04S;1MDz=RcgVSXe&G(*JT zUY_uc3zGlk_>gLo zx;ic{x0!)sJP-N73k$I!qpf-?$ST;iJuQvT9JxY>c48%c`;ILQO>D?*c2(=it9JNO z>D{tX;&@rGuU+0`BhxB|ixi6TD4Z+S$VHRur3ymvM9;j{v7r9b4Ht|7;B7!KeY?qc zN0F-OfG4r@c{tmu3lc^8m{ce@IakOFm)nSH;!E@oRfPy5{ zoc~nfQJ_jRI%P>?=W__@7V0RR)v3F3_RE&;wc~t#8g=Cd0+QK%fD+*ql-3fdUrGa| z(?7efneMdw5TqI5B*X+wtNSP(8z(4=H6rxD~~-NW`wr zO*R`iJT_Qp{$dLmCMc(K1WilyZQ;F7)?(NsHlRIEO%RQ78OlRA)l zsNvW=8$-X_K4f{`J*V@Rrex6P-o~{^qxyKP5Dn)`XS3(9tYHt|G-;l2FvR!C30U7 z)$C+@@g}E^OuJ(jnOdgoF<^SiX|M(4q}%;WT~biR)Ji0HdiUV-?zGs&95PjhZQ)-@Jm1Toh=Y4*-^eILH`|PFWst z&L?@(yz}B{`Tuz;xKEMhuZ8dr0l)Ey-uO{JWtTXSnMSx7Ky}JK+I!v@^bS`CAFzXr zv3#x$##~eUH$?|}BE(2->0EMi!Ef2C@}uQ#`HgTQ?L&hcx02yO<9tSK)xYwm?j-5z z?$Da<<%llyDv^*gk5EFmLaSb!+dAU1TKLol3%WVE;az@_k$|%1Q?e^()JX9Ub@~3e zE(%JSAY#f{<#qii-MEnTj-v|}Sy`eQa%R{$U25)xjhCfvVu@rhTCO{N^ z=ym4aJ+?iv6!Z&`d&-;QVXGV9y>rXk?toBUV;GbB}Eng&0 zvng)I=a!04<|erP%U2dk^DAyZebFGhi|dS>5|(mu-ePiGTv^wS=boG8hsnpn2cUzQ z)zX4K;C!aQhw%e#B#EZ^0i{!owB?~x#Tv%F35fRa|t z(|G?12gSp&hY;|S*tlz-(Cb$%^&6RGg4+HS7b4QXFx$bS-o3Wl3!z`UR1`ELBu@(@ z|jajaeP$D;p-$@2q>gi>w5;5@XTDpa z;slpQ#lt;P<-|`F$$efj51};!r! zi(~gZ#c~DjlqT&8Hnz>YK`b|PdBD_}@X9k% zHis@P0U`{AA_c|~3HcfSD3a(GH`QrCP`vF*EdT8a01eR=A%MmQDj=%fB8o47gha_C zAYO1}k%_66Cl)8!51t|gT%ufpYvHeo-t@Ic5= zP?H^zZFAws9{=RzS3g-IbWuVyvdL#0Ep~0WhUSZP^BAE>ZTcE#@vvtZqGvsSW+1jZ zMc~x{Qs5YCZRA*indx5hD>Z6CEYv5QM=S5U!OWaR)5yB9`FVs*G$T{DoyOR_qy^NoRXzXkv?)+=fAoMScYE70#D_KA`n0d0EI z3rUqM+YI*Sz+C1_|C^ z+v6kzIqA#8wiZesYu(gdmqq@%H z0=3>YQ_xC7td{RU`1E5uz03Zy(($RwDbsaVF(Q(492}m~SRBLs86Yi^_(EvE9T2$eF@v!OKa7sII_Vw?NYm4e~1`hUUa zcs}i#TG>;VMaD>KV`nK_Sx6K^2d!9D<82kv7XgP;PXg&OhC{;NF`~S_9k2iL(dLX9 z$i2jTJdXCAt*xKYetsn&c7WNEeDVLAZq-6F=LQf}H{S*bWu6SGf?Hc8lB5O`=JU+r z#wRgh5n*)z2J664|MDQ&WzDmNJ2492l(r&M`~gXNH8Ro<@#VG@64x}QtYI(|&fLkV z#^ygdC(q{g2&(@5y4tA~d28dcf+8ft9-y`@_XBJ-Ih4)=%Z8gO$Fr>5$B@K7sl0V5ex?L~REk(b*_3ma`C zg2*A51#P-J7WR!BauDcY{g=;3V?K;2X{REXW9oZ$ABZ6gwCzgH=$05^Ar%|N zCjM+B)VUs8@p4}qVRTkv*QJ&0m~4onxr*BQxE0W z8R&Vww4meH@;lL^om7#z=kSD0>@o(RVdxf$<7!jiWSOByhX>bd1}lu5bFQadp5URPy`>NfA)WnV5h%c>-({+3sOHPu-w$VSc^%Qv`O7JX^&x5%7NhO& zA@K;oRSg;MDmf(HfD#O(F@l$W^v}tAjl!knuc<2)y<{aqnQl}4ZY#VosCvMhA*cAO zrSeHlO(*Nb1QOrfLoJXL7BReO!Xjm^y?#f2SgSV*?eA_9qz%FX-ivpQm&p7fpwX|c zlOS*kORJDk-?)?mI-5B({w;7w4EbgwWT{FME3yc612E6r+}XqZAX)7rmf}5sfEd)6 zCH^{V^%Jb$xICw|KowSG?1NuLs{cG3vKZQ_!ce<8X9GLnvDO+;=6r=%779mL)Dtfw zoQ*j34PVZ`I+PrOWHCceLvN|OxCGv{eXwAK598|`*1a+p_X(NNiYy#qh&8a34k1#O zZs3e@kIMc1CNq0vsSEW|8rs^d8^$n%PyVed6%fPmJ#4Tf`#sL?sJovRWAp39h;J)l zY)67{x0=ZXK+4;r-6*J11zMr>`VvTq`8M$N_aQse+O_;zJ))F44@Qm-nu^jd3nRaL z7c2Q~(Oan3v;Y%rpvVQJQ1)^*5s`ByE#_{k?hsO^8{(aAZ+BtyRq*GVTX~MHXN^i$ z2M_;49@nu7h5;c2M&3EzVAOCYW>i!b>iW6-36HwTk<_|;u(Whw8YmKW3oM)2rBf}< zD^OY9Fn&R=&GJ`Ps^hSXH84t3iw0^g#Nx!>PH+rX8hhG(@^P}z&A46W%nsoOD3j-_ zJl>=aqW&pXc4f{mCuMkS!sQ5)%O^}eN#ooFA!xbJ zE0-uwO+PF%7L>Y^`dx>*cJ%Yh!W~|TUDilH(Umu_o)%#|n@oAcK&=u;BhW-92QlQq ztd}WIT~MYYi=t8=_^{kHz4j7cuk_IB{C9cL3rlUns=ZK0ORkPXJ-`j*>2vgSc1hDE@_W8mgPB`=1AJ6>_1~)Yw!hD~wuMqyx#1no~bUhJ= z5CJeOo$kQtoxk3Q+ywUEkx1-*QRCHTL6A-DC}g#Y{&IH+(d=7-Y@npt8H5pFh!mnm z@lM+Gmh&oVIaESV>XyR)b%Q)w7{ zmbz?_2eVT!JB&=eII>UM(P@t-YM8bQ(h`~CV3)9Wc-CvVS!HX;0?M&mpdKKeM=7WU z?zN6gi54id@k6J+qS@? zIoeK_b#BrzgMWx?Am?0&Jujvhu-#Pu&Z2?trciMzas71lGzPoVo5XqOvV4_aI&hk1 zZXb9;3T6X++GuhOOd>IcYW^QS;33Md&|q zNDiTprcURh)pn;$D)$iScyAEm`b5JkNPx|rF4M!@OLwXeRur$|*e@(aO0sj)q9I8f z-;!C-*#YNxI;BxFi;1PM{$xF}XlNgU+u<-5Qj%ISmOEoSa9BAoEj_u$uFd<8PD4S( z2OaY!+*7rxO(TJi+D2BP`13j|m~wFDH8AK3UZ;y1ZD6?O?zK-*w>)>TL)gHo0@08~ zan)3^H%Lu`T z33PCfy>&J`L<~pn4X!NrZP55g6z>AD-h!jWC|l6MjR@A!zyM2|b&b9>x<>f6Z9hk8 z74ST>6TCK#1{BQ?pA&aSC>-Tzb)`oGAF8l*O~Y08zLISNM0Zdlzn;T$0zEf~_RbA7 z#UzRRi6Iq#3rA76xg6L;bUK`VQ608X2B#He+3#CLOJe1o8pSS5ONcWU( zd_i(A#46?6vo?y} zaap`vPNf)0@LOV+`1iFMK^mTUGR^_%^dU{h*_zpMJ%(v;z@(H>As9?REGSS=%NR-K zFGOhuuv6+YNmsgYFVnUKGHHp0vT4da%`3IYwkxe+r+e!jt9($ljnoPwM&&~n2>0(~ z!KvCnc7`CtBzTavKdmgI+?jH|B$d@(=Am<_rxp$aDnvf&v9nPaz~H-qVv*U z8eYYdV0_#?z}ge6z#+#Gx`qvB)9@3PJ;AD(Oa)7ZW*m5&^ z-3o<<`*~_x0auhOo3K1eJ+ATo@{)SDbxWX`3Yd6dBfG@%_KGqKnMY8lpu6Y}0z)ZY zA@nWeq6;vUiHp+#o#TJP;=Usy#eRd;X;|m_rmuuHj>#>0IgCgt0o1R8fkjcHIRKau zfX6P%9lk-lrT@!!;M0gR1}o4L#Sbs@-edM!SWgks{FBX%_525b$9+8)V;Gn1iop`r}w|M})c zQ8}mnK0NZ#r?tK6UQbxxN0rD%V}#WNsjN}9K!}wa*D^Ew*blL9ZV zx3Ckp9v9M69Il9KU}}de@$@);3QTbh+{sffV)?}5W{A47eakd)1OUfgYu-v;R7HVh zi2KJixug3NEhR1k)J$kdSQt|y&60x$Iv%dt>=Pvv57+{>P!zw%1MEE|}4Qf=wwtI%y6`e8d=*A~Vo7MMlywW7`ybv|{!bu!uZcb5k zUhVp0X=Rz@>$}6b(Acvz^rm!aGiZq6q$F;6h;nGwkQAGZd5wd#-tQ;Wk}D8kRo20twekKAn3hT|KYe%&d$Y za2AS3OG**+fBDf)^gIcR2InvFVF$=BIO>GCHDcJ6T)mM4u7FNC@y_cRZp;1XEI~0Q zbd^eKIRzTY`0Op&W0;0swT}iiS;ZeJofqfCRo>^;lyt(*Z$pH79EmZL&gjZp&CgAA zQqs*xosnH`IFY9hx?79Hr{l803y7u?Mz0Ua)t*gjVk3rN-u>~&zqnX zgBB`b94K`_j=dL+%!XjX-$>ZWyLQU=!#c5Cu81u};b0=vswMgqjl$fFSbKHiIXd{h z<YkMPyqVVQt^&d-q0|JFr6Up2jlL}8|+6YcU zw+PGr?C9uJCyj*?fa--_KZCh6x+)8I6t8dafjRQkhp_4Go=-_aH(9qe4CZf)XY&8o z_2)lRz~Y!U@BB2${5a6ZPDhA=k$6Qz)5HkV?ESrBi~TmVn38BU)E8~NAIb(7BCs{% z@qk2`tMW8LU?oigRlR;_!5I3ayD~wm#{O`^U~TFfadKF!?$thBe1;bay)zLu1My2> zKbDz@Aa7`cszglB!$7gya_Xcdx^>7Gpdd#Mjx6ah7`kRfsN8v54H#Yahr)ov5$f;& z*FC+yL!UGUx-iT>>fN`g?5upQlrgndhW+|H9MaV?p)fB7po1);EFZ->wcQzSsUfX) z4B1QHVnE_A+0{nOGT_-nm9A?|7(l&7wms~`4MSOtPe0lHxamF_`RSBv^r_-H`h7Vg zq=K8%%0s7XJztCd4LLK#AL!!P7C5%quq|mUp(Fry9;LL+62;XAL}eiy`L~g_TQe(? z-wc!--;^7Wv*8aoX@+>=-zI9+20K9f2qgra$`T)sJi%J%3`;%sn_kFs9twxP-Y>z} zOe|~c{rvGXwsPMM=~-$mE*GrD z`h&hj?v39JvuhY;e`3=IO6M(rmljj7*3cE&caRgx)}s!SzTXo;lyxTB2?GRPN+z>a zjM=b+!if(9_dZriVjwSPyoWS$<$-2L(V-ap4fFsu4jTZFLaLircKGYTSX+@pHrfr@ zazfa~_YdjV$~NK>(4UecrzP7_We)-ErE<(F#5}j_5U-xxgXnSwE z1Mpfnjn+QQ228TWrgcG%?LPScUVi91*4K`2(L{gxFTjeYi6z-GaW|jFS)^!z#r9 z891jfqz6|_W#LHqe`jlV8DLG?)T8{nQ|P5vS?!dz7C_b2yEhk{G4CV>46+7Y3R%B5 z%)90R1HkDZ>2U`<mOrcnuOmNcg<UV^~rw=WTjLFjnMc|VkY(Qfv-Pm<${kmT4>7tm%B^ngKU7# z%=%{$zFeMPcF0gHRGv`#ZjUJ*T=bmyy!Ej#q$0;&11Ei0iw-BvXzV`{MhNp7GEs?m zeZM?vTHoeIlu#Rx9Esdje#rf~7WYMHavk`nr#)Ij5{ma)=s?sq?kde6J%Ysl;+hocyp9&gdFwU^C!(>WV}l=W|MtdO_pjzaQj$SO9Ph@YOeSW zAbUDvN>^i&f3m$e#%e@qLcLJ*uvemkocylk4UNf+pIkDEFNiJpqD@k<_ex*mqji1U zZAutNwBv>iITBPVKt>$~XEza$AXbf;5sVClFl9C1xbF^ z`c?>{UD;~MknUE9#}FF;t9(!D{&rx8ui#YwJuJ^qM?)l6YGj=2$vCe3-d2fqO`VMd2(mr#UdQ<>sKZd#H2w>j z&o~R5K0iia7jda&!~X$BAX+}-#4`sq=4^78;bcAgqdhTJzLNT*&F?8UQ0Ve*&A9BlxQA%qK?Ec zNboS4y^u9olmLDGNu0pl_Bm-BhQtI;MZD=YJO zSQPu_(;rLLph}axQg;Bs&#ik3yF+Eay$v=maLU9>i^pUFdmsYx3wX81fd~YeDwFLt z2H^IJy^}gA6|!?X%Eop=HTyu&19pn%Gb3k!0atldM zJ@SfLy|;t-CvV!+`5W0y26f#ABFq&)r8i@^p7d;9oXGY@sqthi&gxnwH!z3h=og>$ z*tl|!*QYAexnPT5B$P0B+=0+DVGqM(-EZ)=%Kdgmr;y1j7I-vAFA{$oZ#WIxh^y!A z&zQb&1Nc0%$1Qms2<3W=0zg4zkwsTJnIa97$wG3cydZP;FMKK=?Dc%;lA&@mzDMKs zxg?06OykodznI2`W#GOw-~10ab7=n+@X#uN_>^Mll0uqTqimINCt?A)y$jcf2lmM| z0J#rOD;baxy8JVN9P)8-2@GP}LF@D#urzcq$$;D@nnH=1-Lv9&p8f#C$%`LyX zzLwhwGp1OCj+jeRSbZx^b4{tfQFQ&bnjUhpG6V4v58ax$db_b5z5F)6yy=J2F%(rR z;253`vw`lM+N@1-jJuXf{FbxF&x^uk(>FiUe|cMf&IiI^x|#RP!7~YtcRSCalHlC0 zE>1zU1GXw-bGQV7)+XJh9XNvgGR~&a+)(g$je9*OS2{;wdu_+r>{s@vqVZ-8G(4O60qPzkWjM$fIOg_?34VHiJ z!Paw+isbL8*P!G9h`zLD>|ljntI#ZBKg9|Zf$^Zi%lrT9Q~r900rUF<$>uZ|>fjdY zfJQX5=M(Y|0?{?LWZGy@tmds5H*Y{zIHDATRwz5#TnidqCzHa*5Ok5g2>*ugI+`7Z zBQmL87uYh`JCejopKGER8hrU+kTU<&;wEi^{lC6l%M=^39FJMAc%+sMlZRSY6$Hi; z8JV$5kNLcoffux;NVdU<7Q6%DW*z*4CwdJ}Q6nvCtm!$4J@>UE($FUfbL{YO-NS$R zffG4(#|!uEYfhwfMoYL+1PqGHKZ9oAn_sJ#C=mjUHT1@VL0`NH{?}&NU#Cq%8jwfi+&9E5Hh;g0>-oX__m@HBU>=vl!zQ z20It%@r$C&WVRN5)DKF#D5|&8EZr$s)E#Ji{xK`Yu=Ew2P(GHW0oY2RABV3)tU4ht zx%D%bbbDBYL)QvShNgv2QPspvIV z?aqvkOrgb@B&?`qnO`(F7@*)i6qH=gsBBW82^rnuyTH^oLwU+6UAoGm@hNY#dkdE! zAGRHO>IBq;mw(mcwvpMK@=zERkmsq=Wp5z4@;o`O8SrN)KH)x3upUDiyp2#NsnhVxR`dkUp#5d+dp?qV<3op%?wWi;zt*g0`yXxAO4tJ#dL}MK_M+YzQ4$ zYdh5JU51!2NwgSZ|G!+ex*AXB?y2^QB#l+?>CfA_QYG`LRKrB=Fo!)M-EFwtTKo90 z%U3A6gN2bphg4X2@)e0ug=z!9Zs?Ay`G_{H7$ibXy*gW~0m93yt**-=%brD$;+4q^A=rbv53 zuL<%w*oBYAwHmPrH%9r0h$3O)5;S#11Gc)bkm2KMgYAbwd>Jvx%IH9%cj{MEQqWZ8 zVeDYQx0&0=-2fWu;-dLW!-%FqhwLsxLYeivMsjgBKr-td{)oWa&yBeRJEGdxp*1-S zzY`yChawnWY5B(GJPxbGIOS`N4Dd8qQ4a@Y4V~y^I6@KtSE=#)j=S2-U+s~;g@Az! zykYul`9GiLQ2V?G{(fqR3p3hny!7WmvZ#%t+*~ona8kl6$yM#9EpLpWCJxX+#)rJ+ zu0m#$KKm>A@**vhccm?OBb(=cKE$sj`oY=Qoz-=#OqUMMHWPQXnXMex-9aWo6zYA> zhqJ>mYJ?-F`%G4TfZWT5N6QtMB@tf^4`GQPq;Qiwm-hw>Jm^t?Ik6EXW}gRdL!r}d zHhm;$lzWAOA8Dqr+U%AaGh6RMh8~cF+KW!BnZHyFE(WSrc|d)?(?wxhwu`p`CR?Ng z7*+fUG3Csb-Av5*ulbXp8O>;zU7)|5# zM7Kl}d^|zCc(G+FhGNCq`#5G=9xOWQoVCv!c5$mCFxwQvBKoz0hEkA#4@iXkumSRP z)Q3+iA3g8TihD4CU4~it^1^y9A@oM#39V=`K7ye#!m-P{pR6{J?B}^V=8|vjYG&kbMxUtJ-oY!6;REy&P8!*UaA+D;6QX$?OQWjLOU6V^LivfkA%y|tg~ z$ccdH2aVINuwg4Wq|-CXcL5LGYq6iHj-Ckm@!x%J>ceY}Hj0I=Btjp43;wZPhGY7- z&QWTb2wEFq9}A|_Kmd*XtQ;5Sc>RhmpUNkuLT^!Eg($o@6yo{9OqAL5(=++cRAPfZ z|1-}KXx&<_59jU#3Fvxu)MawnI!yV$i#inJU$zuao#@44=vPVnr)n>9(E@OXk0r*l zDLd*d0G_6^mMPP^7cY5rbIB^=Iz$H-{wM`3uBoSEu3JbQg_E=CfxMT}e1c}QKWU)-<;=TDvW zOzbyX12}ek1c+shZsW=IOTmA6z8BCe!|VqnWQ~9b=oVbID_2Y!CFcc5FdyJ_scp}t zXSHIFEGj1PeXUtaV{UDCs@vMWeTRSnR9KJh#CwL^f4K~gBs;^{tf7|?lW#qK`laOb z=0@W{Ns8pBYLc?;$*_Ud4aYvfX;;QKL-_k(?2_ED)=hdnwBLD*2 zomg5E1?EvNMoG?NKb%6Zkw$e_6u=I5JTNcyIVwK>OvbG{c5YcOjHIU&+;j#%*14-SG#JscF6)nrlNP8Xp zh#>_AA2FB3ts2RFzxlMwN?tY;8>aZz`iLIdViwP=uJ!jDYH#LI`L#8hMjQfTVJquDl@)R^ddX}bp;|<{-M(bD9sOIxj zrOJCenl5T21<~NVeVKmCQQVWmyJ5;cT zHBbh*fE!wst}yvV4jp*14En~MedP|0D*OWtfz@wHY1?YdO&?|!y! z>*0%K*`J@~xUO-T%R1YAR9)C-rS7ptfu>}aAW_eT)?E#npq)PIA|_sPw$a3s7a$W$ zf{@LLzRdnYP_$}Ouh4ATm4CI$ClM9xF38UCG!L?^h7-Z~9L>8YEWAtZDkbj|)PEOB z6YdhA7hNr8uSR&3@Y3xta#&YyqnH&F5QK;Kolssh(GRo}4l?L1LSr@feRfLWLHhi# zmcOs{u2jj&{0f{Yz7o?#n}#E|K*|v#WZ+)U(q1EzEt4kVmuo7;T_rz zr}e4#>FE0yMtsppUuSi*a-I&xMF7gquFH9)lqCC7;`y}LZk-kfn5$BOHm|&w<4-Gk289jbqKb8JG=nc zu8!$?J#{CDXA~NCT>v+wrqd8c1%b=)EGIAc(+kjcbGR8X2*%^gM$ofkm*<|{_^p#F z;C;+c7I!NTnSuvZ=KeyDb?pC_ljokQ7f)6ILtG6Yp?q_g)B2+#P|0F$(;rU2b&q|v z@n?yG7nDGv9h0E+#(FnL7?!~!`>&K6p}dC)yHbEQ{Fm!bp*BNjJ#YI#X9m8Yy&*LY z3wFLZV_$vY9|XL2go1x1v?bA5e&|MR9%0|=fSv$w?D)~*%x`$U69M^&56rlKChzT` zl8)<3C74h$slKq)bk;?aCKJm&^b16cmZ1uy+G~HsVcRg2Hyu>%H|^`{L+4eOpEj|d z*qq=g`!jPD5cjG#>%#Q;c8VBKfffodPFQG#avY`Pwhaet=G|63icfxfaPi)EFg~d) z?fXz*;L42&E2@n(;-lVw&b~w>hD9NUiA$GXL$1`Hr4@RQjF>e*pUCd(hqsb#?b*dF zFG72(hC#tbZjK%a^eS@_-yS&ioxrL$0)HnS%WXYHJs)RyEPlZ-J6C3-Q*5z7LmQYl zusP);0M0=^y6Ootz&aF8ACa7G(meOv_hK_Ng| z_?Qh+SWc$9ivr4HEM;g4fzR=&dP0<g=oCNxZ^LGw5H z-ixsMLFC;@{Ahg|gi65eX~^!ZIRh721YV}7YnS^Gm^Ec?2ldQ*+zIZLGf3}WA@3yD zE@8g#(Z9*UE<@cRfhzgi`?Q*ep`}@)N1XFwqo1>LTdE|}ST(BrtP{WtQXvSkJ`P4% z@-)BHe$p=Xj0uBNtrE3&3+qV9?-h;Q*`I1ai>OJ9?P*%j8fURFLijA->3Ds%F&<8` znPfRi&VHnk;Qz(EU9<>Ox`|e9PJjosoR^O%hD|oVg|-X3GZt8ZpW_Zi)J}=gV$T#l z!#cjMq69TKQvv>V^x9W`91Y+o5f>-NiGwm1FtFg7g$nR-rKkj#zAfRt=P~y_aSn<_ zWDa=Ucc6RA7cm)rRJ<{l%*F{m?Vqft`dU32{L9Q)%&T!&=IG0QZwQsouj=tP z3tU*T!J9ZQ7eCc_-?F{l-mKOdwkr#O$1%(vZ09IxIX?k#QQrr=>0(1h;2`pr{jHPyTC{eBSJt$x03rId3|Ti+adkd)tF_FY z>e~;*(*=E5u8O7ECovX=B+v9w)+G4x<^&8Reh7WK<_^mHk^mUf!Hrup*W#PWYZX&r z;XYN&)5(JC@9Vji5}dxK?RQ2;QKzT#L7vH+T9H`-PKTFQe9;Lq|4tU#o3l8aucrOZ z)4mnHYX};?U8mYZQTPb-ZMv2Z>%ymmorP_`6oCdo@Z(~33L#}6Sl?B}%M6~p?l(bt z+J8A)gO?)dx~X#8zZJ4Ufi{;BY#zQIn%Qo0)60A$LpxAS!7%*hA?a_X{xbS3aw6a2 zl-32C`0O*u)aJlpMv}dhK2otbek*iBBt(j2mdbnTvYJ;N8eabjRc}0NKjc-WC-hn2 zFjhpGSXLHgdRYcqLk!@m{69ZrHcN4J&8HfMGneV3jeHF@9x;Th>2ZVTDd$(}lKVxM zpo{)>LF=KxHqp8RWuiZOl*!KG@5kLgujkQQ2W7J*vkK40=|ZKf>`nF&AEr`F)MOEq z?C*yYT~*aX8^KbOifm(((l}A)h&q;TJvmu+#;FDcd|~E5^qAtQc{mD-ir(F~gS`Ep z2rV~e2$hGqJ?8`p_#(XfaYJ|t9o*PiL348(nKtND7RQC*ql4a&j5eaWjC&KQLgEY=PdTEY~TxUvlcyZ2LY&Nlvct3?^RcI<{4dq)fwo_x!`Pd! zoyGkWHPE${-2N)zc3B0$;Q9WJkW!8Ehc_dg-~{O>z!UUD`ty9$Ub40kls_U)jvkcP zXHUd1@3G)YS#UFTD(ogx!){|Rzr?w>AL*lh`yCml$I*5s?jU3i_%~CRM58ZxjOSdD)O4@VVH$_-BOCshGrgUqLAx>; zUSu!~LQ(g&r^Z-;ZL$E@;9><*R#IE${Y)I_r~mTuECf*Y!Ut2LE$~|xjpT6G1PG^i zDG6WKA>W(Ufe6^F)Jf(P(G}(-j}V=0J_OTY#o@ps{0bJ8r!8M+Or9Y2jq$P@kv9BP zDmW7w@i0Li@uzHaQQ2SVNv7PE668nE-#tT(Rh@4lO;0?Fx#ugG0F|?b5`o9KF1u9Q zcGSq{UV>|O7`sjZe(Ccb?rpGD9KiHg*o_JtiE?k#UwTuIBy0STdHkuq#QHiks2YUW za^w#gF~9HX*y#8)QdE%&y?Xy$uXmBHP9p8 z7@=NG+Alz~#OD(XiJ4|ZI>(2Y{cuB9Nh?;~9v{Mo1*V7%!hkdz=@17&bxI2r#|D`9 zD|YmQ0DWe{hQhkCg@}i4(lr}-(L()p&bM4r-Y=p3zNaPupwS<@A3qD)&;ICsJHBc*H z$4N0sXDQ~&k9lzm%_)C0%9Bkie~I`KS=KaLvj(a;22Ok?_gTQ41Vu_-b8dZ^Hjoo% zL#j8$E|1;>eAAN>+Pzo9r7x4wQ@jJf+6vp!7N$=pa=`HRZQ_re<-3E>gspBL*ajX5 zrj2PtCh>g{0kyfwtW9L2R`WgSkoL;L35sjdG)({p2X_lE?GOaHYWJ00pn75eM2xku zr5b2K|KU<*VbLkSq)+5^{^@~wJpTZAY8&|CjW&kwat7s1SaZ|*ZB|iU1OKCuqMWzI zlPvt1a!BSV%Ev7HjII9ZzSvmmM54gU2d~+R zySMH||1?M&#o$?d+JtbiccfityD1bZ@WELDjS1VpXYy|=d8%##dtG};Bb!I(_!$3^ zwyn$Sx*I#al_^Rv715a~sbH9|b&&MJ#06%IptKi&p{%R(nf6(&{zKv}tZrxt7dLiI zv1I_PoRof@PjRF?HsOEyYVW!m>wf$Z`G)3b${ax+y+jj5QF#c_zmAlxbKH0GfBC7R z!X5F-x_7r-tcbJXV*0rE-#=}AwNX1ZQ-1v~rc6o36(^|%fL89M!xTKzxNhy3|7L9u z*8M;l0W+?GMP$nyQw_<_H?5E;1_yR1$qeWkGB9O2KB^t;S0IbT=aGYW9HZ!UB8+zc ztCY}hgbX9=5RMqy$O0`+ubH#i*_Rgm$H9&)9_3!C=dBeUr{Xrfi;mAOH%~>GMwH)x zajzv-xsq&Ss|zme@$8D=X_i?+E3-4k`-8{EO5s4xWXBk;%et_3N^aH0EAM1`+;eH& z7WmaLFIBfkMcz6Ms`D6TOA0bnEx} zqVm<`dpTAgkOPC#9KP(jGMRcprW)mTcANvYEM(zAg~sCq7oAnySL%U8S3^c*hJaX! zjHyc>C2ijYI6J6P_zcA{pgCSmy}c7$(cZ3ZoZSAZV1sL%#o6y;d@Qe8Zx#eH2J}FC zgpU-`x4zH+d)lG&NJsWeK~DA1GkuW@^(i@>#9o1c1fR|L+hIc2=QXn^Xq-Q~ek|_x zmLYf5K2akae+sk3F9P@`zb5of7kN^VXf+$xRKP$6Yg6xA;jArH@+QnuFy{wHoQ=+s z8Dm-+<{=zfVx<}BwlSMk!?CUVvwQ3HYPr}#1x0NsE+QWIgm$|ce=*)J{!P;c)JIKz-Mwfr}`SDEDj?j|2WsDo= z_Cbl8R%h>65Uk#y?IZvhQEi|^2>fScGZAmxEL zu@sy*t@PPLc|8ARWpVP8+ee-|Q5XIlh-k2$wTKHjI<+9jz=CGFFJ&VZaLR z$^RQy2p`8YeQU)TZ_YE#faZzpz#u7(sL*gYL!;vmYgZ4Uf8bFQx=lLh*Q8snu_X&a z`7se+2Qdw!y%5J8mxYH}5VgulhHFf*9LnT;36NYtgliG*b1is?e01wpc`&MaMY4QS(SG}9~E z@J}npsjC}2bQ{S!jfBdg>7D~wPQFOj3J^0}$|&)r9OMKWWa zVa4hQy+BNx?ouFkX8u(F<*_^WN52eNAs8xY#JDkj|Mo2ccFUn;>!${@lGmBz7Lm;g zTXj8E_RX@m|l*M z_w_&6q+FInhxON&=$dH5D#o42er0~7|A4|(2{c?@k}5cZv@IMW9y>PMQp#s}lF*tZ zwYAJ!65C->yd~QoJU4U%pVpnpXf$6VXZK*l6p=K{L<*q*Ce`!RpGt)OXa*e%|HJ3L zW0%=$QN9^wprPls;SCh~!*of5El`cfg?c6Gl01eHT_^B;`Ao!j?-QONI?9;$&X8FH zgxBVkv<$4+NF~!lJUfOmvZzpT_8b6wY$XVQuYBsP4MO8tX2#HmdAQo37(;edqo zfxoSO&_@b6I3FIWv3dS#80KWZ@eQ+aIP6T$EDsDdn&gM)Q`!u<^e9a;iRFMdh0BGMh}O9Y2S4mdFP;(|pM_&U&x zlJtdVsnZC<4Sl6=Xo-#=2{-(&Pyk@nB--5$QgcvRFU?mrfjzMG%3<>^L^3zs1tZXL zpVht)0+W;eYJStm+6wpH&)LuY%%@keBF@sKX_rRcs56oxO^zKRWXV}=Uet2n0c*tO zhQX;|Q|cebV&v4)-#+x_=amH!4fIamt1Jyp5F z|L7$ESR#q1b!s>)f&Xl(aCt6j38UYs8*w*`+E|&k|PuHqDWWHpYZGnbh7+y zr_qR*-kG{h)##>=0W8>mTabKUsrF29Gl}AADgMxK5UUVDeGvi;XsqS4*BNb|Hi`1H z9e+b%%kgUIOjiTZ>JFp-Zz0lh9r=dehO7TI8OuGcc4W1c34)4qg$HSk=zwd38BpmU zXefaca@n;DWx_zJ!^L3KeoZ9u17Mv-va-{RKs6rSp@)wUEEBRmGdf>pheb=2uu@5q z>Fn6Mq2k@%(_KFm>lBAArNx~P9F`nvjoUr;?>qurbf@x53r8vrF~k$^{&7KxR2EUm zh9fT8zrTh;Z~x{T=WM0_nrmrV!(I~)dcBw@t;;QRLFp#cBu#sw^kYtiHb^SCwCfD9 zvRo~{^w~jI(bVz?{A3Po+G~|Uo7DB_o2(2M^tv?A4om5D%9lZ@q{BfI6+b_m$i9yJPBKV zyoF!9=>r8+ zFrVDPqsr^e>kYL9O$`4pzX$kCaDG&3bKZz!LN1RHVrE)w16U4bsbd^l8+|-(z5m%Pz_TPk_OAqK9Uhe0Lp@$ml>|G}cbrRJp*gHo1{XGo znX}+sc=ZxJR9Tlixu=zH#R8d%!#|Lzd2DBMomtu?%6l8I)Ld5g?^ztFHFnk;k*0Lt zO95bfuC9WqZV@W705?W~(4ZJ|km4rqjLx^F8o`}26}rX`pqQad^hgNpj*6mbWRx{P zcQx(|N?^|rMPtg)iuT2&u6J^FPWry7$?b-zVFi=!($J0>fpnv)p+$!)*9-|Ex|nKp zRp7hRNmLn{k3*$#fnCANQ_Cf&X)l)>H4QbIz2Y6$5jEsPTPNI!zunKGwh&3Th>CUm zkiJhdGr9fHqP5m5Wn38MB9>0PA3bVJ0)_rc;Cr$vRkRnY^wF>9RD%vqK?cF3J-VsD z1LLfPA#P9cN%r`rW}&gWF!FT@z}>rZjem96O{RZ6H;IFEB$#MNw;`%5JI|HAq?dsXyOWJba>_nEpK&Iqs^>|S z_fBOVll@P*IkkG5Hl5*|I$Jp`w}o{apr+|o=)PvtKH1jRo9|CDL9$*6uoE_k0D8_^ z3Jk^x9pzZ>>=(PuPo0Zrm%V)R+);IlEqAJ;<{)0n*JzlyMjxWC*ukqnY}hatJ4Q-Y z$7M_yggvcA(qlnv-+j$Y7Hr6H&EBT0SF4cm2OhGK&tu}O`@0XdDeUR)c&;?sbYK@N6uJxe^yuD2^4^b0;=#k_jDQO~mK^)( zl8=g&vpV?B$&<@Rp?FCrWS{RX17~czm7pQc7t(P{qi)>BSUA^WDUYP@KZyV~POIrs zXupZfta#FCTRjUrDyN-fY0A8J+s(G}3r8gXF1l6*>=$jHS7XZPcW91K!r+p4u9S+od03f1(KZeSq*~gMV}pE^V@xr^Ne~eY zimDXh0avr~U<^*)zqzwd1(gztB;I#4ETtfi0`U z0|DlIB|9Y~lUJit5od#FLr-H&JjWe2ykO6RYNBmgN&n^Vg<0EWKVS?$mh}57o8b!) z+{>+fgf7&%G>O|n)(|(Mv)&wnfuBer@=>m6@XtrfreVleCg|=+u0EC)UM5ip6+dD?8UVSPl)RJujqb;Hnw-t5ScdG>%5 zTnusk%ZY6c%N5%|^q`T{A^#%!lPm=-R((VI2=GY)(mbIBxIj zg2Cr5-Xy!cyOk3+B1~l^CDRXc6G5L-90kxO2-<~XV_Pgn4ory2kW)4QL*;KqD_!vj zenXPtLT^TO#qBPyE6<DL7*uph~efW(^3N-mL2+hXDnTPk7 z+3@@FK?(mFOg#1W0NT`__}E~$@m)e|?Z~Sa{3)t3W5?oK*vfvEV*FudtDT5OnoBbx z0pe~w(e`Wdr5sdutD9s5U|)4V{JT) zRLVclSgeBT*Dw54YTJJ%J{5q%MV3g@<{@M0*6`yo02OEq>Cny0=XTbkdj?wF_)PvI zyn;%V4Pp+?xpc1R&+D4ixr?y z)vB*y`~LbYpPS_RznJ|zC8JYU6|z}>YX@sGG_MV;r6g4S^aFl2+S)LdRImN)D)8K- z=)5dsbb@bhsvMXXuFXof8wN&Q`I9L}Cz}3MT(rMIsmjIlkuAR*hjt_<_gyXxTZE+< zg7X7-u~D>BQZ;LYal*~{acyyHvMjQ{JMz57`K)R7HS62SqL`nx)fc^jZo~UVkpq4% zgXx?__vako40na_T`%QN=^WPFeMso2!y_l=EUl_=Ii(Y55T5Cp5~!cR^2Wfpp+S@0p&#hGkglQa@)7B^HBD7KUaZ!U!q++#t4uq8^QBv zUfJ0rm(4naTbGHM(0Bxr@3Ion=JQ{^`8bxF=8F&~)&z{(2&QoR3aAR&_is*`4K^yL z3aZynU9D<_jtTM|8=x`UuRxDbB^sP&5}X9Q>7l_}lV$mW$KmI5b;+EdU(ZvzJuePo zxyzr`JO91+-XTB!W$x;ENff8xnLKuHY5%>qJW^AXF!W#ZYRg*t=2p%fEaCRAv9RW- zJT^vCz#X0pLqAxc&W!)X)p=7idRQC3^sYl80^zIP|NDLzgD4raGmQH1}?kQ9({Z+ zAr$|!zRpm}h-g0raur~2F+*~v?3t^LSaKkm!PkaXEJmo$^(5HWHX(S zfaWz5p{FpWpR=Bm$SM#21iaMW^^2Dgr6VZzLAooDgNB)Kjn0vep5@RN11&AV%!ii{ z`~frmRfWV@diTuLnB)49FI*?6Mr_pPfeD8Tui^U<6@y|r>8jl8C({1&R;{}`GYU+U z#7>>N!y?*LYB*14y>|7!E^m%RzH^??xnClNEGL#SG9)uH2ObFXecd4T_*!&P$0haTViIkB(&5~h;pzHgOfTw3c8zQKPUBQAC=+D!M z)?zKlG2Puo$fBt5o!_Ly!cwvbpJiNqq@rPnKr^%{N&c?9E3@MOjPolOcBH+wuI_9& zd;0}K^JzFN$Puj%{g1YLS`tLr7ARV_ZQFKr*|zO2+qP}nwr$(CZJqrG{cz(xj}OR< zm62=yn!h2>qVbHh$pk2wm#d^QPk4+TXri&IVt+-r>tgKQF~gx~{_=2w1kK8`TkcId zjj*3RP?Mi*H?k?K3?wQH(Apm{b$cJ=#4_*y*TZ)Dm$#|?3A&Yea7VCrdvLS;WVFHY z#kq28^Ee6{Q=N$$6CP6}JS|}9hg#3_qaL`~yYqPgVSHCwUeYJbz!>DYi_r9HhTm}a z1}t(0JVIg!-1o(Qz<8;*-qF{5u8DzuahoGmdQC71NrPk%)9MdoH=z^VJxg4weXi8n zXKxhY?O!*tO%CwJz#z|bHW=dF)kV@s>LcEi0yunJUd;(6XP1}`E|`_G9WGG37+tb! zI2#f#>OY!rf;gb;Z9=-1?l^i%63p%2wqPLy#>g%Some|Je`0RVO7A(_4!99n-x+ek zvq|zbIvXV=0r!$TT5!4md#DZrfz91z0?ImM+3$eKXr@^xYpB}OpEiU4|*V-r8*LlnF+#8V^DL3 zXs=y^k=fqzlVMYKssAWafq79FWAUJO3<1px6I7% zxOGF^h&QVdWvj~y?o&c!fxrZ$hjTCJAmC2?yZM9kuwZu%E%ItLt;x>ku3-J1GNl$G z>}NcAT4&h27#nPxqpOG5$4#_g-`{mpGZrUcpw)BeMl~*Pq)-Jj$U%OgB8BSrkZ4$u zlspW68Q>0LFP7n2TcT6`==LwaXjgynxd#N_TPBt7e*MNy>RwEfV&}hwDPtNNiRywa z&$1qlG=s1oEV&K+bI$h3(d`gh?9ZbUmuusJjEtSYV1+taXwH-Q*qZf!666cjlglwifpU4Es4LTXdaIw z$I&!DyCrJ|bUWZ|eJ-~X!NBNSyv{O%XNqVHlsrsrAQ}AJWDRpyxof^|HD~8gZ1E-@ zp1=}DFtl~Q!z>OlT(2}0-p3gQf#a0p?40Hiyhki<-^@?o{4Dn+y7l3Z97T=qj7REB zQ_AN-Cl=Dyga)zp0sF$|2EBUN0J5`6J}(9a(w{wJVG( zi(Da2${ta?6vlI=R~&ozhw|(3PC#Z zOUY^!`USMswOCDk_faR9A~r}ZY@#D$)tNi%o;&#)PvA{(WV_9pw+oXh7ay4Fgrwdo zRyrKJSbX}A-qT$aMWylvdaWk(gziN=xqWWJ^UJf1!;U#>lVelbm@(;vo z9^P1C|5xXtkz-r)2+7Uq1#I?VntMVeLIYY(8Ex-RtzFbx%Q(hOEF6I0!Rh4JRxjC$N^zi4nkPM`(=IO_GRZHfW3BGqjySy9k^SWGpQ;tO&;xF<8>CuU&TlGs}CDuJ}3?c0^jZ2oGCN=V5=rA)XlskXulY znDxrcf9T<>wPQ$}y0sXAS40rl1okOkSxtpEsKyA?CN`aNGzzwUHOu*C0Roe|v=LNx z8`40^8$da%KFH3X=NF70U{rp8@MoMi9cz(CZ3F*xA);po8abIs*@7H<@8Eqkr1P)g zjEwetD*M11eN+yu30|Rc?Hxf^+tD4H*_=~5$F%eI&z3f^nO|$R$aJ0qhaG?;`R?FT z8%Vi=6HD8Y3U-=&h11pJ(xK61`EGB)xHRm$M__jUQESGEPxq|D$@?WlawX&*`-w!A zGGYu^;y-}>k!8AUi3wGNr2gp+Wu%;5?ulNGeG`{_vjg!%89BUqfG2dHv07d{;I9W1 zzq2J&;2}qB+3C!t;xZSpwu-Viz`pvh^6d^>>4MkJ;U%VJ}B!imihEh$1dfp*wX(9k+ zw^NV0S1&aPwoZ*YAuLF{Xu#57lQ|lxWfs5k=6c3DWnq8nhZ6zp)8*zidCjHVF?_R-e^^~(BKMciA(ZbVqrN~n zJZCG1Jug9$*wLs~(=N^B;laFik!ll?kT`B!vy`Bfi^H|@BM2m~bfs0H16Iq}nE20) zS#}EAg{}rV91V_1YfY|Ls@K~2Z^5joO>NmZQb*LiRHS(SXR^+nJ}Fpwwk5$xL44Eo zfteBhbO_8>XcpN`i4=zRwmSOkE#4^NdDI2kbP5)L_uR~WC`QBM0rpiV6^_U8NO48^ zD)@O1Vf1}%`g=rBmg6F-w+i1*$W<34EzRxj6nII$ubU6^=rbT((!zNFj-BcB!dUV$U9-7$XNK%9usOAtpG*n+Hlm(W}raU=LZ>NpG5 znuYw&9-qxe;&isFWSyUGrz*8-qAK(GIz;8PzJh~u}bY-gh$tr&n8oE)MuFx+o%JC zJl|JccHP0&6{q%D6cEAM6Wx@dTp@GmiSgY3w--8}2dl{9xq16YTOv7=vAw78A&L95 zkF|RXufP@c`c&|q^+HEwk4C*QB&4?Xf~p8Y6fB$+6nUqTSvm!O>%L)G}`q~K1-~ix3a;M@K_63*Iv6+$0=5V9Y7c(&>u)F>~Izsf+ zex%^}RpB@k+D;U5wN=VK#9Qy^kK&_NT`zHbO zA@5wC<={S&HL8g?Bcz3xN9lDg=QBd!7T5ze+J`g8e9c)~NTj*cJ`UU(MKy#k}|uE*=!XLqg+6H@tik z?V(Jg*A)9<3h@n9z%}2%BrSPKh~}r@9O<<~VN-U~0mMa!@mSKW=MvWl2T8>kVt)?Db%O9o?f!x}U+hWiJ_aDPQd1(m`SHLv$4nstUr*Kow zI2B^nfy;WDHM@lZAnLxOEZ@zdzV}`#8;2&kwz;yQwPZW=#atV%QQs&%?Br}4k7(`y z=XB#FQR$L1)@tfwB^V0ZRFl)zm_A-+-~x{w=JM&f2drP%kD3@2miDiYBMq96OhBAu!e{Njcp^;P+7#0y_t#Oe!N6PHVdpuA7fgQ0PiU~302njNBYev+4HmGpe>m_QA@01YMK5qb zu!j6EuZZ&HslqHM=U#;dxWBG`yYIO$x9>lmg%;MU`AlS?v+$U&h(cdl9>0`}Qi|icPjcEUh{g(%~ zPjyX?HEa)RTlz53o9x(iH*~krUh)GrXXutr%YHqBs@a1VRwO#Q*F^x)!a%Hc-XVBh z71z#J(eO}(1No)L04<=r_`BYf0spw5wn?=m&lq+GWtCF&ram(41|7MpttsV8tT?r5)X&xZy?&@gz zQIU2dnWp6{I$>mIUC17>2rO(VvLPTr*QLm^#i*S^wd5APOr>VPlQ)i}rK%4-D`oFV z;)NM}1uyMio-~Hq-~Dl-f?>KRYVPOsg=mv;m_J-_H4x+Xo$gNfLPqnkG^2kHbxjp!pX+CmL$Dp(0+bd)N6r50GW*) zkvQU%nNk`yv1r0=;0qauwQ15Tyw_7aw=stT{x1*gI^KIo+UdR~^;UzSi8A?v z`QGtr^7fUq*OsBtnkwYHTFZaOa@QMFNae*yskK z{YZ(ql{C@du0yd?P;EzFj^Vh53lr5Z>{+-CvW7V3T|{5W9T;-`N*P+q1_O+h2rl7o z6QG&qV)K+mVG!zK@0ADR1l$r!gTg$Q$=A|F!$e};4=cKtDcp2CJ0i0<7DB?jXwqI8 zeEpJv$|gg%-|47A^62ih1vmgGl0i*iWM4WjpY*=8;-DaX({VVdOg2;Wr}%J$=U+Vb zJk+y-ld8YdGdDM85hZEyFT9fF*HKDvNrVKZUmGflm6{fb zuYs{Q^=Q71IMigJ-}Uz;q=rp2Ap*}#20N7sYOhwK1*ycTW|sx-W(5G<6-j7?6vo54 z-cYNBR`3U4i%AQef~(K~v3v;q{_FT+=2QqrJU|#V@q>{3%NyH%Nrqf-C;4yEa}Jm;WX_G@|%>GTT(lva*% zqnal6B+FffY-6?Gbw=f0B>!0WiQ07xo(~ME2=r*KX1id2Yg0A^vFhXq*;yVlhrW$y zB-db9@uM=MVAM}f67tw96KA?JX4z~;R3 zBt!k>zlg+$t&2@0dkrur8oho-e@X^roC$v(pM|B6jlt_Uq#Dh8(Oq-$mi zJ}u<_Gh32WZt9;A?NcL(vhsxsZD+@<7S6xznk3+cVm2J(4G?NaB ze(iRJpIT$~;)t&OQbu6gqmJX6xcU<2cn8?3$Hl5edPRO4JLWb5Ox($m<G>d50~0&XFz+p}{h&LVqn}e&4&AK#2A{%={vpNfT&N|npy#z5&WqI& zRwWVU1YicWr16tP!eLn3@s2^Zf3)22c=vkVrgBAk^0jWraNz&Mzw%F;N8T+NK>hhy zmwKSjIsuE;xD<5Opk|WAw=>pSL3JMpsgweHq#NUGZn)b_J%Y03f$;9gCVnX&Yw265 zcYh%ktUqZ~M2t=RYwqTo>i>BgT{gsXtu}xuL>C@`KU5l52!6OrvsX8`>wjRLZZ*)m zaei*J1Sx?`QHCfr2cb$}g<6NG%_UuNh~Qzq)klF`!;Q0qM?Q`eEsHKC=>4=Kte1=I zsB}Ox>jw5lSYy~RmM9S#Cj8}dh6O;DCcP{SauOzo{VzvH+Q{Sr8;71SbezTEv%ZjV{CKQ%MsD2Zw642ZL;&EmtJBX9 zg!{v9*0iGsH`)E}5xJ-ibj#OkuIS`oG1ZbOvjY}Qx*)KR$XQV^)r{MS1~WYopolI| zS*}!@aXgs^e_nYKVPyfy3XM*LD#PBxN2>NyF9*52(?ml%sX6}{!0TA;wkTVXkCf*D znCSixOIY?}%ZQ0)`6Oc2;|Nx;qZHL7OA{L$g%V94UVl0R&cgu&sPpjvFG;cLeeO@D zHEb~CZ=7JK6+L@@ChPX{dOu7chd9|8=I<G_xX9Gh2%Uf zcxz^sRvb+-dyP6;xTY<BcEA_c_MZNG$QghqzO_&B?HI4_Q7Wn~ls7v>l8erbcp0M%A-Xfap!{a9% zE1{Me-r1)YSVB=Oa4)OX8{Lt;`2~Ug=R?RAf(&(zdLru#^m!cJyk;_i({;LPV~Lu9 zmZZPBZL6xpRPKS*>`DfGs__6LQiF8>S|stuc*Jft&ff>N8E25I!aQ{ixnK@WP>mu+ zSsx|+28rV&Rg6!(jsx669{j5s5&ON^*mlWNKtYp?(})ll8~=Xs#w$%nwVk#s+VQijML5e*@yvV&`Yn_nh%X~bU` z+L$=i!SGxGrKaXVi$4i|4Y#(ZGy;W$`FDKoV_)n$Tc+K%{pInMco$sGPPhWv^w)UC8q$#BxqowR-|*&N%I8ermff;9Eo9F0;;gxn9ZLQ$w=wNtYYuIC z^RjXNod=2)fVyndmeCxnssx7}O6eV}iMW)|MJ~S8 zzy{tEhxR2<1qdmC%sc{{2<=|c5Nj$WNnw_xNA2IdW$3?MhIFR%w!o%x3L@CBAHj9KwWBi*n*}%Ogf0$cC6l3HZ;i1=MwW8D#8FV?E zPaST-c6wt7+wn&|&+MINH*)!W1BV3XOF#_t!5}G3bMw6|KqGT1L?Jm!F2xIy%?m}G zcr@knoFCy-DmYtzOp5-N(qX&oAq9Gb{yuMI+`rw6>%J6hpPgzz{_X*-X|M20aqRk< zy$_u4T`!47D`~v8ZHprnS1_36-n8+H@i!}ej1G{QwAG1dUaq$fCYTk+yQW!os;jZ4 z)8Kj5g|mm}3Hv9=QK$@$Rhk3-8q1*er$HteaM#{;j$*^^u{+%xHhC%j%R3%N<~A0jOapKNKO)cGg3@v#DBD|YEtNDlq2qHveC?zNpbU}(q^ zQYUAb#cebWkb)(UIXJG9f4UeZqPcs>gn((N+US+E?v#YI{z_jQow%L&F{E37wsDmF zuu#MXt|V(#DArEwp>DDLcU+;T(1at{u#)+~0OiY8bz4;b^E#?PN2cEn1S&^ zl}1aHxy&5LWk5`qx`|O)wk99PR|id*cXJ&;-8pf~r0AU2Nk8E<#;A{sD^yK%6Dcci zh^K_~u7`sP@RdcmScs5~BwLi6TvE`-NjIwc$3Ix(QBue(_U~qFtcdnJp%mjVtIzgw z!rJFu*#@DSLyG8_M;8(=5?7eU)$DNT9}Ya@72!$kIe;RPM+55ptm$I@5Z#`(`@XmGB@%`((xa-{TJC2>4jXOnV12%aLsK2Xz z!WzyLcld&CG6zrb(hkmxO>a{ck%jwMj~5w$KjaJ^oXY4jD-oULn`<}Z)6H?S@{a8r zNJ`1yEY=n%Y&CiP$XU>#(fZ9*2vCN9Rve{LkQ#x~DN!LY>2qqs0q9L}ampVqw9o_k zcU_^BD<;B_W*%AWrfZQTV4YsboyF_nfmXHo5=vL$w~an$VTLaQFSpB)t1aw%?;g^V zmoH#ehhYaQc`Uc?*G1>~WtQSu3&Qug82BB{oUOI<`oRLH_nT7S>D(9Tg3m+x#j_UK z5TAvu6-qz3gh$%2wv_%b>eoK9EG4Pg;1pY>*o6e&>g)G}nZRYpg0dO3qswd=L-Y7F zYYP<;-eY;bSpwpsNBc`fSkP$xX&q3Gw7%Y^x#SPSh||UGsdE6EbpQTD@MQKip7VGz z0+aFFu>6h;dJDc7N2PD#Q{QcSwk@eBRYAf9{mTG*M%uBc7CF3>PfjF|yE3AJ{)Ig6 z!Xpqo8zXf;#1}^IhQc7k5Xi}e3fJ(~gQ4@nq4#LDh{b)tu` zT_fOq(80AgJMLQF?gehcy++-kx!^~5TYsmIzSz1!3f@#e%xscxNSL`q)|xI)kibTf zzlS0?PA}yw&|}}$EjDJy316nLw**OH(y`WwXyi<)zIV zI*gMnLaL*tCF|CFQ4tkbq6bjSLq2k{3wpS)T4`&=k`!CnH&RWM(TLo^3tK;G8UUd= z_@6{YWOJwFFGn0e3`0&tD%lpx8mO%*?^GLn=VHlVsy6PPTu&L>cyO4!D1UVE)znRK z1|yNSbyVHIgmb&TeAfW4%J%gu2^And-nGzUI?0Mnq~5L3KPL4BvTLH zF0u8GN^CCY#W87}jhT)mzEM-K5f^RTU=zb)v^d5{i}_6W)bYi4NU@gvrTo<+(!fy% zd((|o7b4&RZ!4w6M*!EP!LW3%eA+ZV#Nbe`zw)m%sX+Wj^vBu*2NL|X^HkJxszv|h zXSk}xSoy7tDVxH{$9k6X%o$ditX{;yjfxpf;7P06|MJ<%Msll4bS{uIQ^(-1PVy8p z?7#?Lg9Fl^-HsuK6QaWGOB=EaRXo)=Aei%^JnqAsdA??wr2$IF01E_HJS7l?VAssA zY<0uJPrEi&>veQa5qD!+ZhHHk!>UjnMskHF8wP3j5hq{Iz$aeA;$Su3U>^V4^;_a% zA-O{sU`PJZ0ZXgZ%)60!wRP11c?8S*kCh-{Q2KR%K&HRmmLrLq0t0d?u^u^3?8`^R zC!b?cPA{-bF0mq}KgoII`%M#!&wCfedU$8`6+O|H0<5ifyGKEUbeGGN@4B8&v`G9n z{zA2O3&e`Z+)++GykN0lim`3-e@~ygfVAJ9)ocr{86?p01M?3fM#E zq&6L|KEt+*O%EE&sHUWg|4qo5^pfUIIF`7Q#-J>mo?SS4sFOudrJD8fnW*~;gvTXN zzicD64cat+4ee;ol7i2n2B%sc`fZS*&hJC3{;=eRc?|@d(HaM4v5wOYz3C5=ONziC z($q!;Ww5nlaEVb+78zFhZbx1Kywtj&%*3&6=gaT~#-aVo$@PwHIaYb|%ED;Denfm_ zlJeqls0JVRA-DGjGIPVu|G(YUqcHhNY{uye^)+A=?`Kkd^(0ryPuc@#SE~0oT)6oQ zB$_Nmtu?E_{t>g49$sV{-6td?Yd*a>lDxLo#F73QSv~EBpdMTX?6T3~X!GzhIo1*O=t!&RgPqF`3U7n= zg=1iR$0bbM0vtn+y*K$+#J_Jp;B`xa{mT2*bTTq}YwgnuhVddICk4H`-=`G1S=&m& zD`bl#IB=M=B;2C2Jf^dl9mVb>yUV7B}uI-vIW zAV2!li5>ANxZbb?w&o^BmP-$uW%hd|m8Nb*+2>oAeo)l%2!Zn9;4ss7*k`k+u_oJM8lMDf@ekhP6CYRdt7b{kAzKs`ly)0|RD1U4rYaV? zxo0en-mkr!>jFV_X^;?l$tIQPDR%1aXJ!j~4vO8syvHZSe&1fbLObJXM5qAZFacs% z5THH-%SYMFGwoH^#cme|e>`+9(Y+TNAPe_Sc=A$POfGbOmKIJh!8h*`IkQ+*a$_8`NJN^*kx1h zE7nKK;a2+~4chGtbEeB1rg;_&aq*xm^w`J|2d-G61T7Bc=U7M}VUxttuhhbqAD8-x z)S8B?@JQ;;X^xp(xukR5JqP?bB7$rwsbr08>L#&K=zCF!wV^sgPaVj52wOM9Yc)JP)dRW(Wi0MK}Yp?1*WnFv-rMm zE;&l!S?Zi|mB8b?Ng{8?{{J9$S5UQ%3Z{Ss|PwE@V@ z{Y`_JD~;v*6E2I%f>9Rl3wx%qk%EII4v~5u(MlFd0zg%5Gf+|NYU(nO);d|)HZ!{+ z$72@Z6c3dRZLZ51M%(N_oO7YZ3yA0%UtJjZE%HrIc+Sd?WVmdO;w##Qe6weNJ|-kh z42bJ`6Ol6rg{6+!DpY-wQ(>@OB-M4aAe7lr{nsir1Ba|83E=Fq+>fjLh3UPbwo9;^eTo;+&OIq3G3OstKRv3nfbLMS72NYep~_J1k=m`odY z`x`@Bw6Ond4KSMZ&ct{o>S0oE!P79FJ~-|j6b2si89h=KAF`1&5vAKDN{Tm@?c3+$3Biz5SYv!n%$(+;O@0s-{qA_AOB z>oc8ZVf*#Nnh#yxx3_$(Bk$ZZ$P*?|O&fM}apP+v>Z7DnV3s#mnqhGJ_W2v7-gvXI=C;mgGxEls4y|i zWB;((W_^sJVsY?*NUH9QNf7#5@jV2Nzw}WlvUqWUlxzK|4+>pd3w%IuAb@fY|6UXd z@Qru+2>GF8-63&FxL(N`cNk=6gqsdKzLut~2`O5bT+V+z+Xu7*X{YGEn*2dIcXUAM zR$X<^Qr(`C#nC)iohvzaZUYFZ`GL3_Cr7BdPDp%PKWaR`JG$MT|*U5nf_I~3i+!~-^X-b%w zzzxZ-;IEUGmiwK)zvxmwg?qJoR_~__-Appzt_TJh-gOOmlvwv=-g4NMn0Qvy@k(fV{&NuF_zNXsxkbcai0p-RjqIGbL~+WGYV1yW$~PFtqcMhKBH>I*S&963KIi zzU`zcWdMVO_n!w0jTjClfAsV4oZKgdVL{ElL7p{HR9F_HWCO1R6J!7N9zactoX(y5>0uI{v`C<+ZsI!X7q{^!=j?V5sU8Z=ro?HdBa8;Oem{NI76? z%FN6*yp!$EHu+uTnN_Kna^tN-(7rB4>#o7S!Z688ckQtvH%q2Ad%_4=PL7aZdT>4i zg(Di{Iw`ZXk<$n)8I(~g(79@zi2oKKzcTsiA{Jj9n?gLZBiefS*b}x(tk{dYpTYXl z%0EJSFZ7z&8}2%lgJ5hd?ha`i43}}Ov(Jqe;8t0iING0%iSf{n()8+hFHTGpM1p#W4uVZTwVH>Cv5X;#V;QqRHLeq>AcE=UY1U{^1~<1}x{Zd=olQ zZM|l)@i8Q!%XRqy%%dE@#ynLilO|Z5uc?OWkA)48>6T3zu)Vn*?Y}Yx>LcTC-U+9x z0;NBt%#0iC>>y%%Bb}YOA-l3sJ>-T8MJjs!D?JQXt$OpGj_5lkPs7+s5>1&6&EalK zp)tyhm_3xSh6>0LyAsl!+O5R1S>pcJzkUyAbDGt%tRBu%>+e4-uU2L zx(|qVn2EuYFI3|CbvW2MC2h+ssSGs~z4htbhws$%#Po;mO--JkJr_T7KF^O)ThG@Z zOjQiJ_%`)PXrn3l)8pzvzK*vx3oM68JW9fweP3ecu*&tf%X2!`d}@M7NC0 zp<{T}9r!L>CYX1nwZm7u#>dPr{H`%*@w;LURL3Q*C^{PUAfYm0RpIa`Iv*B*y{@z~ z`1??~j(uC3VX%PZ%)ieu)Fq4^jdjsVUwz2z$IQoGQ-T0Q%p5%jP>TgHoWkj9Qo{>v zlL5?~dC+V)wagE}wpEDd{Z?SCk}pp8Z~-a0@l2fAI#GS~wwD$@in=wj@E4J-o6cdb zy?Z)$Y-Uty(waXLJ!vVXeF3=OrKuqgZvl*1N1sfX)8&RX`Ntv>im}01z9fQ2rgeJ9N zvfzDA!3_ha5oQG*fg7fRx1=5heE&7&*S(muqc$E?@im~%is^+69T@fD+h&M%IovT% z&6|rxUx6P+`#fvJcsX~qf9!FClu2{`xape<%4nOyv=!6IAL;5riYGshva&5XQHm7AJEnHzSpFqi1VJJXI2X zO^BGFeG>QL7gX;#1e1K-j^c-p9+g@qswk+Joh0`^?JgnLdcY(UmXxWFoW&7y^Kg3t z6O+@DHASoimHlT~>g+k>*^K}4`ZSNg_aR8&P?rG!Hf+m|web{c;AI~dv^3ysX$uf2 z2O|A(q!2AgSuOvb4_d8tBW(H~`lF>}2$Ok+>m-oTV)3fOo4}%u)8}@yB@lv1nZG%uPV-EmkCPw! z0q=ZBW3L&@X7E!O89LJ+%RikbH-9kfSyFc&BOhO7)SOF`T=uQQc%kAjEKX&D`Jx+K z6J)u1$u6NROba^E-=IbJCRVRaJyI3k{WOTm;cWZ%t?CAo^9!9v<2`34I-Wu3juNRE zZ08KU5={pu>X!W|PtaX}{^fGlPS>1(gAjS&&n%8vm)W&4`%v9Z|NWabugN5Rz(a4s z!PJjb8#WxfPrtN^5u8Qa^YnFWw0WM%2X5+Jh&SL8;ZRkOy!P(!C}a3EvnSY55?(<` z%w8Yt8c&jpO12|HXUumI;vt`v1bN(%mX)q_F0ABBI?`^Ujk;7~G#(|u@G-bXsjsZq z2=W{vf$Y~RV{f(0nKQU8A~DHCZi)PtpG!q`;wcfTj|`b`sW61pve8x!ruuQIJ?K&T zxE}GY18JDtF4Nd_#C{OUS{#G^r0MGL$xzA3&V=aOvM~L?02_ZwHS~m`$}WOWo2aDl ziKGac7IcyNUJE$RA7?yZwmBn|p6kpt*NBw33LLLWRu;LIbxYix+_Q9*#o{y3xXczN ztA%Qea+YrGBXgjc$*Qh*dv7=lq0(rPIT%8Wb1TF6Pz`9Y+XD43fJ&Rm+?J7uvy}Bw zkK=I(!E^AwtX!To1bdAH`V)>; zMtbW&XC(&(tr{wdtJX|!nwttH9xgsWFj+M#)jyp(&V}~A+?9Xdp`M6f;PIl&Za)G1 z_6t#ii?y(Dy4c#LUUkN=eCTKH|3bz<)UB_aF`FBM!I-~g;6NBNs?B>_@+)^(=|XuL z*$!WUx(gmyd5JC=HQYsgTt7d&lG98_R%?R*7~d5!pf-mRqMvs`(0WAP!B?sTf=|vU z`RR_fXH2d4 zsNhG0Im-IAXi;*`2RK+7rW7&CgpS5Y)@pt{BE=IC`?_J4T*X%urUMv9&azfDl|=V*6SK8QU%C19@r8|w>4 zfLMBR#RfD$wjlHR4@K$DbmW`8Q;f~j7Vw}vD+HcSQe2p*J6hNrp5S`Wh&zLLRgHMhp!sIFRM7T(EsjH>H3eIB{v&FP_jexN} zb0T|I&-!{$hY$xzy7a0T3oA00O0Zj%-}yZd4JxQ9hi&*SJ|(ff5+;|Mg&X9YWdDDY zKnmaAM$M=zlSMI!Gg+ypfs=5{&}?nzXPYWA`e9E809`oOyQy~+tT5U9;;2VfFPEv zqg@SDsFKG{o63=ly9T8Pn9g}s^F(&ADD-8pm_czcpxVlwvhGEe+6Bi`C4}IK&TJgg zo73<9xDS<1LdwtYw`4QTD%3F^00Zrt;g4(P`6+u(SN@>7Ja5W`qH&f1^?(7#6vhgXI%I~@669gS&3QX9b6U8wG#=<*g4~v42;6{={^UpcoHQ#%j@hyy*8PtV4+&y+S zb6S;9jKn_RI0RIXn&b{fofibAI%V7s!1c$hGo7kObHc^AL}3BW=Zau%dfP?3NEp%s zDQ`Z$O45YWCQ{M+0Ic);%hP44L_x%K1Ww>jFNN(sxh%dbh4!Q~3h^dGo7vG#R}#)u z$hYr85JDV^pjWS4T!?DaCljBB@?tsmY+B|7-$r^cidodJP*J+8dK1{Z>Z7>nl!=y! zaT`*4lf?&yNB%DBTWJPYSQHu{1k&P4?4ZG|KdYl0H$9dHIeJ*!stXQ$5S_~f-}I9V z{Or|%deSVl8jX3Y6m*fqUOp%Na%*?Nn_p^9jXmjbwh?&u;?ceD=nUOSd_0<~A)uZf zyZDn*BhJ0kLiYT1n=_XjbW$MAX3|f?-e=M=-%Fxj2fd4kK?BTHqVcEvS@IX?oSM2x zI#6kmuR<2m4&+Y#RUEez7F0)T&3Q`QWiykiw4|6@^g|X-Rt|v?>MjjX-ujoDRW789 zi~jJ=x}I#MuN>*va0+TLe>eVRCox+CP};+~u$if`EXR;Tam&UC>w`9B>u}TgmVGi% z1E5~%)o`B(F&K$KKPWRf)}_%A8r#8U#-c^}6H;_*xJJc-!3G3_fM{@@FV9w$O6Ni2 zivL@Sf1WEzl}JIr(xB9!G?MbymPcl(l6Esk@^5CRPI#9+O`5W^2}GBm%Orx{b2q9> zPAQ?4dyc?@AU``(re_KZI^NT`eoy8j9fc4Y8$~FFI0AF;C@Hn%xzgoB;kh-xD$sq( z)d!qnpVCFuCU~6-28uJMm*MfW=LQ4^AGf~(=4Blq^B06WX;>-VhKNo19Ia~f4l`^fgL{Zp;oTNnl+qg%(oZp z;|sehgX?A{)(%)hTB$=jwbB{VZenV?uTOLzG@{^AR4^X5VnCkq&jXxmOi+yH(fo}I z6N`Q)eSt!2xd%hws)CSd=8NE0j3PoH%#E!AGV^+?Dou(|3@k)dWsibI z~FE!Hz`}W@;{qjNM!ViuiuuRVpqu))(Z_U4l@Y`7`J+6gKy}$#0Tnjh$B8m zNzqzP4mnAmB#az*a$-G433(jz`eL6)hCun8aKr$_p1HZV-Na_-3kd)KDZpHSqrXV4 zXX8dQoacKEg8w1(w(o3#-kZH|I1}sZ^^pW1(Mb541%;7v+lKt#!!Q9VWsFSH>e@B? zRR+{h@{FwpNY0MH{ZT|D4Fm@J8ci(;yp^$|o`$%&UQ};w(E^9KIagS@-lY#Pdu@_c z{gcU=Yn3=X;Ib-paE5-#Z%$820?n4}Six>tod2JDdrn>(s=0Ul>-8c6QKaNcp_v?p zK_YZwj53lWCY2St-oz505$E>%g_kGEywUxT(OryqWEKL2vUZjVsmPA#(E)oE1iHoa2vh1(2X9f;z; z_>7qGfz}IJLN&ld9$HmIh<+5+Mg+_~Qlw+FB{d!i6pTxyzwUHBbQ~@Mii6Nre9CNR z3DU4a8h^>Wx8tSQ8DMjq_1de#%sShQ*7Aj+k#DbQ7xyuvnw{J=fkhpx-(m4agLhKu zzgS{-Jm#EF?n^oEK4bO*K_NQz>opX6iR6?w^ESyO+_6sdSZ?b_m1ITls%{p4`znp58nCr^IBGHYm3wK0{X1}WGt8GIe{XD~jQVfv^1=e?IM`0#k)&31B$9JgURoJe*tpocoXN#5d^ozFHKMd^ zb!*^cNjUCHvvBjwwlb3nsg)uJaZYtr1l%` zv3Zj$F@`cF&wxNWMQ5MJz9;>@t{J8lHxkib3YsmyN97+ z{+e~woyI?a_QSMa{z>5J8JNWq%etNX?r$dhHe0QjGOGi|8vT+x1=r3GAhYc!XS*R$ zUS?Og+}#FV<}TKbkZ=Ooc{OCr!TBa}*=E4E-ZK__33w>ZL$kJwz>6CUBGisU^^l#A z6I+4XGISR!oeg&r!cLO%h*j)%P@7oWqnS8KQRY>r~`5G+0$Fz!{ipxaSZeSAaX z@?gI&_I;v@%BCy>??ImW-01o^9|t=#T7eX0=E57SrF?c*5rHg|7$oINm4$Mf7-B~(2G4b%JUpO2?Pi!E_mEMA9tP4Mg0g_8PDdIVCnze7>hDh>F zQPLXRCct>}wch;8jh1POpG!=P_CD0(pOs@dhiaT$`?=8BBZFB|n^KCuE1Bt9wLU?h zH=>j^Zt4$=?T8olWdYN^@RYXVst#&EN~p5I!8n@bl$y=kd|oCqHhTN0Xj)wKd0_Lw zszE0OE+^KGPS$)th{r329bN|e%yQbn8vQOdlu%dQYZ(1QSqZ`X^RyHG8=})R&pUNQ z;L~x-Q0g*TuaKVj7oGng98V(tcRn0q^mpNNKrP&sE8V#Lfa #%I5#1kPfmnP6? z39rL>hWy2Tpr4*WVr%Qq5KIl#LJf>r9@83`180sLmvVoZEnRWAea6@Iv8;0-nKe;E zcVo4u~YC%r!YDy|>WKe9`v{kouQbO!@#v1ljb6X=ReY9OONK(+JGV!xL&Wn}0lizwVbide>0WK~S-qk7_L~>?Q}g6; znU6YZlO>pK9`z`n7JLP>np-^@k!^NA9>Ht{!TF{>u9EXki(X`cNmv{%yFWi@Jy9KP zmd2u%qcxl;S5Nq<_~44uhPM&!v{yf+RhFh6GOfI#4IFu^UaEld_jK-Q3HKC634LF=KF3N-5;ueA8rK1Ctsf5hFxf*@NK1<&PK;G6Efe6j8F_&IQsZqCHK5KBg58Kfbv(!=T7Gr z-T%Qz`xkNH+-p8K68TKo{Ne=v=3G)Qvua2_{ItR#Pnk^QeksLXC2B^$sY&F!|N9Pj&mRSsjK1W_rnEsk#9Mz}!Gphh6>WlurRaXJQqbrf+V|V~kUtPp z13(bV8vQxYbOf$ODg<*7n^1ouDIe$Xb4%%*17mQ8_K5%4I(B9#Q8?~+R=xIYvR{(vBe$Puge=zLxO>@zZ&v!r!J?ZVCUCRHFk zPM1$;I(`u%H=bwc6Z$fl9u!6mXu2L%r3=1Y9{Ac8R${$-HVyi%H;}lwi%a96i&(?YY`1! zYh@=fw$Uw&VmMK`Pz2)gA?vWz@seJ(<7fy(+}Cd`{sho@?yg*dbD|TuJ>LOAj$C8K z8n2<^ar{GV#z7P>8Ino%$Jz1TcYU_`xUAe|8p6A>T4~fcmr+N(>AxJixKZm8TpN9A z(}Gm$Um#H!y;TB`JU_?P<3=C5e!pxLs=R}cu8SBO;4Y;^^kmM}-(%?P?|&~@2=YNb zhW4c;^B&@PVdjey6xC1jD1W{=Z!!`vSS?YGej@-czP-`;rzCezk&d8ELvAAA2A!_={+79BnUYVN7eBR z%hs^FC}L(;YcPZKVJ32bX-eJy<&d*((41+S^?+|uBKKtKXWiR zCI97*?-UWj&@Z3~tT4N$NJFCH__%plJNYL54X`hIAA0P-ZFd~1<`0q)pwROs+P=XQsC*+Cxy=E;g9-poK#5mInSG71VidIO;tmdqx!2g9&QS13vvF2RNm%S z^!v+`zHNG{?RZnG_=O4{&sF1|HzS4|}WR-Ho-Eq|;D)8JRb=njw;e3BOn-V5+%qD}%Q{ z!bvljG!kkFq!IuCDA@A%l0+@?^Arl9NSQB#1BchMAv2Jiu4suviU0dZ4;_67+iG<1 zC;1bWULckG?Qor?N!=i;?J}XTS^E&$+G#Ub4tJu8=&ok?x9EwK!{xfAwcL;kc0}4x zTTZj7v4OB;?skeBJwooDEHO(WWWW{jgd-LGsMR`0_LzDAq~7Fd?n~NEJ)dtOAQ1JW zz1NVn7B&aBU+_3z_i*dylpiYo z_5owUN>649cN$Sx6=^!M{2%+>uvY(e@wn8x>SI`Dl|vzeKU9rJ?$&2XB?_uo5YCWN zEVsz?o(b!3(|7kP^x2_gSx3tGatam1s=eR@sJ;7VR+3wvuG#jY?zDLmkcE)-TThPS ziNWYWGxivq2~J`Rd|ldg)|)LWN_fq+hbrtLNT6VZjXvN?e5PC1Q%FY3^iNR_!z%C#>jYPyb4Q~Cv`asO( zd@~Es8;Zn3oxBRX%^h(m`;oS5O~p5X?c5hMYR>NwyjaaG6c+x4-K_yMrr;pc&*9tf zJK^({OeF-Y^JMX>z3b^zvu_+o<9kPMN;J6pu$K%~=fc99!6!WFEl#S8Ga#N)h|^^TMG&~+*8f~VOU*j- zWz-<^?N~3Mx>{s)N@g99z}B;;>v$Aba{~)oO*U2(juzh3fk(GAn6gO+(wqQaHlcta zxRih=O?}!^V}JFotadddg?~+K;{{Xs>~C;#o-OT{^HP)D3dfA+g@3&>TuNktG}!(Y76q;~T{q|2uI~obvCPnc$`x9TnP1 zV1Z>7ar3jGs|N}WT7TknI-v@=Ew~zUYP1E$Vc7_d77C6BZMDHK*?f55W^6VHou(Bo zvJ^v+g~C+aqQN-qnpUEGG7kycu5}G7723;ggzxhfs+Tc1PG~rQnm#bveHsQ+pgUN) z3Hc6pl&fOe^trxI?SPiD_LYr^f{z#%3PGGORW)&|G>&XBjQhHvz@bpaQFUtwfF&TS72omp_&w5E zx9i`ktiJ$4t)d1>AzfT~{zVN%eqEWij`qRLfPP1Lfil+WswBL(yoJGoq@B_tpjjxs zOv0iB;k!2{y=S>XW7Buo267b;N;|K{ZwK*_7JWQLBvP6-!ugY6!9B^7syw>ZyI)J) z6+?^V-UcA;FQDXy9xwhUzUrptk@MJ`L2BZqTb2nTNUa$x%_buY47$+3>@`xW)0+=7 z%BTaK`||!CbD#enA=yYwiAL#!X)EnMD9g_BOLG>vRxpCU$3*q&A z>c+A?s&VP=6H=_jr)eXid~HQd)w2cwx2Up1D< z&~20^?i^RFoD914eKx2#jd!k1%6xpWbR5$t@k5Cc>_9*Lw-8A-#=;nL+)x|;Dwko9FkQp@q!mdkj91e}0Pzh|e ztZb|AcrJ5T#%j#a%Y>WxQ=4s=diAK1Np`+XoKK}k|JY02 zfW?r@x^-N4_K1Bj7*jVmMq>x8iqZm;Tw3Z2>gQ4_dtZN-$8^uDrII~y$q&HYyT1~+ zB?S2(QVX}0bwap_(?eZ(778naZOa020EG7NIjPDFqBp?Q;ubnjpKTTi5r(5mI;fv( zXD0=k5YQJKaBwYcu0$#+@5Ev!1k<|epBz^Hvybw0q`zGp1fFy%99_r1_E@49|BA}P z{b5bc<84bX&3Jlpx>Pqs-Z>Dmt?z5#7SEnKEBxLNPo#uF&3sw8u65+$fscSz3Oi_z z;xan@QN0d~zN+ZsCoQ@YqkH|ff|a4+BREzh?)d|nL7%0WFSkaViO68g(?k*-{6hI( zUO5t`05P_rmMRs9LSWRtuRLuHS^OTW`j@;ni+xWY^I!8$BZ!$G;s{II&`SK0&|M2X zXJTLpSG2%yU3>x*;Q-22Nma|9^~74C$?jGB1)9YQ6OVmqnM0HGg(cQ<8Zm|5S97{0 zB;n#lp^M=Py#bcXn#^nd#*r6S_$YZDIEdPhXWU`gki~)=a23{?6*|}#Q{EIXw6(DS zQP7jwoTLj*aQ%xv?hLX&^aX=Fla)4i7-k623^k3gUR+3N%CP^kHT0ADPM1uiHq=LZ zC3}>{T4v@}AswC_&Mn_07lkzI$RdALP~pVkPm5Ebl75$!g}t5QXCvL)!>@hUk~Xb= zkA^Ed>I28Qt@+On_bsTm1oyq|A9uZ{*!}le0!DEahD{hd?UdnAWlx3__c%g(fTJIP%H2(a1xK+8Q?}mdZtg`|(b01=FftcSxN^K8PcJi;GTxiG||T{GE7}<$_?1;`yf}wl|eShs|_M~7*M){tX3M58TBAheq`}c=dNe6^PW5yRAYOz+u2xG?a8>0P<$ZA5!iH z%f&`(QCJSUr=wc`^(@h7V3%PwdP!V3>Xj73b%sqh=+LXo+vytb>t%sd@_mu)fBVuo zYU89?8JH`vV{KO5$hex_yhqB>row@sz2avx#Z+)N+_uyXd6&TBdu~D5_a*^7D1^1y zPr*Y-%!zbZU$k}Y+D?t^v#sCxu1}-P=c%y6XF&~vX_90yh|o{BYXJXZw^e~|{K_(6 zr-+`FEwUR`OWuW<_DPXY4?10!Ms>D}G)mMR7d44cuKXJ34Ts$(2MPl&Akd9mf0=%= zW2B$x86HBWBT}e8;C&sFte~xcPc4ZD2VGYV7SX0;c;0_mkxUptF>@*Z%V*zLJ&79` zTBzdn#W&krgRZcFiA_E&SA2^y^{$?HK?l`p589{Oj-yjT_Bv?^7S=frDT5D)erIF7 z!+3SCpPBRfaTm5aSi39EH;qSqd&Y~@g%88C3t3*(_XFj)sB2XNMFT}!dY}K07uhdh zm7^6}bUlqt6 zby=a45;R8fF(;uw9&j&|JDp6!_O6vts_1U-)%}2jChL85J$Dr!8_@i>f+tI-+PBe8 zo#9z+Svbb>OtOm%sd&uu*Kb4j&VQ(Btk5S1;v5}pQ7n#HB)|wTZD(!{oa=Tb@z;sr zS$5g#)kq*xWaCJ1tLXUvcGGANaqqrqzJ#|F5Jk z)8sORkKRqr+?B5IvV35ghg3M|8`*^^{>zb;3INA!apyCDd9aF_=z;R%aEihJF!Doi zQN4d(2i>|i1d~IHEsxhI0KX?G1XkSH<&R{x9de(ru*{)#jbZ-Fk*X``%6QL+FJ@fV zC)Ag*LHM%yPy;R+d94CtShdWiwV$mKMWfBxbL6N5#<8jjbTb+2G3Gs&c^NAO1QS34 ztD6G|=CF@j+Q9h+z5*IosGZk1H$2Idu_R4jlmE>!_z@*xrcvS%%Qp%_B0!~=(g8Kl zvQ#Ewe4AIqlb8dUZHcoQDy}c89M_G?cc3-kRC@HnqmrZo{ROswdJl5ojuCF4 zXMQE=Nu*19MFF=rcferGA;-Zbs0U>1FLiFTPf*}%%zr`u4HP{MW7n)lArzXT`py3~ zs;@YZkB@})IwVHZ8tPjFV@(8Pshu_u^j}y*NlspoL{-O zlQ=GCynpXk`{!ZVDi-qrAV~JvD7}+OvNvT%xI?J$t09=TS`}r@WLcAOHC{>mJZ+JR z`?bXscGjqA?{^{K;%vx?-z>vE-bR}Ju*{dAT6A;~xoo%^woy|oCoz4N0pML{e?^4x zcmAa8^8${+Y~J(KN&7Elmj<+{m!wS8+Q_T;9;BbO|1j0S%L%O_wpaA_WIIeuFAKo^ z_l8p>CVAn?fe?Byk?MCh9-h8Jh)Gtr9LN5B;ODc>A+Zu--}HnpS<}8U5y=;}+Ny7s zA`~2?_Rr`RWMe{E;F{B%eh0}|9^mX`iqc#Seu_tzPbH8YKIHV`>Y5uoDXaifgAF^l zQE-t385h_0zZ(A??zb2T<_EEYA~*JYDI-5l4)3?NgAl*VM+sPH;rjN``@qAjkQX868qYV#da*GOdimw>6a;6)rqVUtb@YU@apO z^}`&hxVM%CgtcaM-*K#|E_w`(O(B9p~Fm?q$mC~ zA~|6Pt^Jged*yWF-I*2UcEe{xSb2_;eG*~3^nLQCaiArTf0AAiL5N@ugw5=01aKGz1?ThO-eX!DIipu*PyFq?Pw8#8iuVD&RwleJ*z zv+O}Omp9#V#M&s3x^SJA$Uz5IZxMt9i?mNMm)$e$1j+=}f~y^=5>Pg13* zCAwuReKYpgAOh=$W>&&H&HsvcibWxj4et8INsBF9`3JDZjA>T3&U!I1?qWmO^-H|B zk-eF9aWzG#0RyG?jMJ~OsVV;W5r@%vqcawm6?$KRhL=}LvS_qkDwDMx>KBCqykLT| z;LyorR{0_Nuu#o%F38IsrecxdO5XEWzftyW1LXi3UsQXFBpp5X3H=FGypUK>&C;a* z{WkwbdGS{RG~cO~D`kY}`8W2Ryog&CX$W*Q{7X#+I1e)gDEiI$JUJ+6-K+z3xcvBD zb@5klg1IrZ`ewcLEQ>d)oGNa4v=xvNj1Cr*A&^O$(L*fP4^R&SacI}}2pU~*x1-*i zh6c>k&Aq+U(3N1%79O0cfQc(#9F<=y?&(r9kHZ%%I#*3@0fS1DCX9uNpH71fiwcfb zcdBmr0O4MBAX!yJOnH}Rw^J?es~$^MKT3PoTraw8%q%Na&V#5s4K*AX22C&&^=t0J zy{B7YfxNzUOJ(mo77e7q#mDapt9&SSW!Mj*IhUY7t_&*{rTnvf+4Ie_-2+tI z^%**p0T)tOp%I?FC^Uv`52B*uzdQjYyy>r$EC*D;145+G6!Z=M5Pg<}uM;M{Fb0>` zjNgAbpU@m@mTMK=UWwEB8R5qcC{(y1ef~1A$M4ELh}PqU31;VY9O+ue-TaEgWapkp zY+14GzKMih{j2S-11F)^D2nM3JMA$}JBuUwq#2;Wg)_7fvkhH~=Jh4aGiW=*e|eAE z%W~;-1{)T4m}z%_qxGryvYOI2okyu#<9<_as1+-P?|}EvLn>J>`bd3v59k|;s$}ph zrfS-cGd5{SPKeW3JdJUxV%G@+C)@B~LQNTYIZ0Ap-x-|?lUYaPD2Fem>rT=z%;#zr z(iFqoPwtwY2xo+SYbcYHc1&KVfXW|+k&fVwFe2H=)2OdclVjr)XYbkzag zH}gr=_seu0p}2)sAx30!N0^$ zpP3U_QVB4vaP+kW92<4W4iP$f@wuwqa>52tL$0C9cL z%|yhiJ1lyCvy`$U&Nq!?3_0i9 zLd?hOU@7v+_ukY)O(x0x&BjPH>w6fQPD0|Y=%G#;MxeP3%Et0J_v}*8Mmq8Eii-wQ z5?nKFH%jl@0DefZl36Oov>dGn;o}oDL}9F>oQ_Yc%@wNd)Y;m2li}JNM?y=S4*iR( zgz#rP__rB}o>ENxcp<9NMxRS4twsnyT~GR9jd(pbqs!^1c3tZ~?3#iODCo zOjy#jhD4kmP*~0oLKdI$p+dIx`P#jQy$>S3c-V2n&CzXv*Wufx@`feHy`ElD$6o-of8` z_$_OvxSvx>rJ1qveF0}RFI|?CnCHyhIM=BJlpM!NnEP%%XCZOxZ;OWtYi{k*DNT>u zyEqf5mD{OerzKXH;2*qy+nc6D_V7wGp`Z$)f{Ou-h~+K+PPI0glfwN*kwUU|WXYY!hUg`>+ne594fE#&y;Ud?M3rjaLRL;v`*qn*u znp*@{HWnAWBq>{zBV26))~Eht7cw}(WXcC;!l(D%yJ~iZf=vDp^jr7&AzFRnN$3r} z!Bck@6fo9AirHk|vm`~%mU@+tTn5{GNVS%DZbTRd2Qamp>k+ul_Y1!EZeRHu79e^hGX7N2 z{$o=~)M1QJ%a<38xD>{i%|K}bB5>K2|E)}#e~|Nt9v*Sk8?T!?Ft}6mq&gfgPoW5P z$`NPnW4s*O<%e=A5Nxk0Xo&L1x}v`S0Xhyk1jpenQ8jLNZQ!}+8mVcPss}l}Hxv%G zCZtgfA%P9oiKP7Nsf6P4IM=hco}Y@GYhG_5v|E zoKAEVZ!CUFmGtD6sU6_5k_>^&mu9ScjEbLUlQvUmT)SYLZm*~lg<)^-%Cyi-5!+z7 z-u%s+FfaL@HCT_aEo?qmIs+((y{P{8=OzV9#@TB4>9EiIyX2kOkIJYP1O_JUYfWl| zYlN#1r@suCzgfh`*|TS)kcNeVJ)u7RWq@nH5d^%AWJv2=<^m;lRk?NRnlPrllStNe z4A>HItsBwY4j|CoBUFa(%WjlM|Mx|2bEP%q?@*HgG3L+vAU^D{pa%>ks_ApQ4}SWM z;$3_c)$pbkp^2hXOB#cGNzx{lQ}d~k{|z+=X0eQ`c%oE438t~0_K8@n)F2cw9OLwa z*n+rkJB;E`9kaYYw_g-%ts#QnyK%u%vV!BVj?Tb5(oS^>IRmi1#Ms)Wu|mV*LF{Wb zocFok?5%jR+z~I{8(kt~^0aTeO7g{p$EsVS#1v6vq1W6wK^lz4U*f9#g*BzSly?r( zL`E3J--7JSOR?jFll6}-R!H3jIT8vlMzXu%seA+>dHhr$4ZT;o)mdrteFZ!j@_dQ$ zPX=tb;CLm7W1Ye+INv$4a8FgvMgMdZ@x6>`cy&OWE?otFo}N&MeVgE@Z03T*)1EIe z8BPR0{FX=&LJ<=+KqY}KVAeug3l4@VW>L?SmK&0gZL%qSjAN27oS(jD-$U7J&14YS zcd|1`Zcf0`8C7Xq`IVV&N#``Wi1fd+{N;$(T`e`obVeeY$)8lnCbNHEH z!xY{)^Ix?2R!as!T-N=|UPx;gd+^C%#hseBny5$ime+}dH0%Z`f-=n9G(j#;0xo}* zR^>=fppgX!(_0Ltk3NKm{za;3y6 z@30&k?dX4wF##{RI&v@l&;}fW84zoBYH>sYZT3=a>jgv2;tWBe%w&?4f~az{Q5ZRX zcoQX0-IuIa16Li-`J9Zz%FQK(2KB{+miubc$a-vD7CCS<>OWwj4x_yFT=)rR$T=@y zwvfXuhJ9x}1iI(ak5Sn+KrT7d9ysFU@c+wAY(s{jw}_LjY2WF;^?1wE`7{zf;ZmBU zE)lY6Z}m79=o;2?LZ28QB*l&6g6>1pfeH5-ZJLys8kVn zYX3G%EDb}?C!7J*bobhL8z;I(Yqv#ecRLgompYKcwvDzy&ZoT-q31kil{y9<-i5U# zq*$H0Z=HkPrRPL1+aH%a{m2m1N_-sVLVMhJD%C%!hflUwo5jFW$tc@Z2&+?45|SZK zKww@%?6B?ACw2H;)wGUbVQwIM8${F-Ym_I;rXPX=u4HsHNHu|^#t>RWd|6yAY)ay)zh$Mq<#-+BLZNMZjz=$#(@H>RC)w&rD*jQY} z2XJnMqShqRXlI2|lu&^C) zYEJmN)g_Qx{8E`DUlffwUGFi&;S63LR3>~njxJz}{IzwqXkA;#&8M91$BPW}t{hwX zcTOK*Qb&>WMnHDAuYLHEd=ktBZEsxaa?dg04@#+RMk7KE1`Ohc>z^(KZnIU>93Oz? zOb@sW!4Ko@48bC{bN%y%L*J5{##Y=PB@s6fs(>U%v}6G+SGp+*fQ$XXrJzs@xXwg} z?~$`{kYTU&aWgkHS5GPBGj|;%8|opwi%~ea0hmVU3ABVa5lf~ZDbgwdH0gVnB+N<+ z0^gOnd*TAncAm@gYb5*Wh;-k9d#rohyfs3K^bl+fgTn~lxg+14N%?btCWVNnwAD4j zMfgJfsyzg4=rsu36VIiQZ3ZU}l1QGW|8mP+6kKnpZca%XXn!iZ?6Ha%Q+g$DF~z@! z#r0p5)@;EEFSy_rzmhY<^hK=Qsd0H8YE6&vVQivWIC2~v#h^Y`vU7Y zC9tRRreNXmmMqGMR>2;_VW+>Mz{a$r3F8?YP^kM{Jtie8Nx}k}a26O5k-omih&-P8 z4n_@~Q2Re1U*iuu+f)StGEM&CLrn-qLIM>wzr|7Pip^0yce8nS$_00pJtm=<*{4zK z&HH((S4+07eZJ?J`J{dDnR$YjQDUO8_X0BDdgp~y3&-&s%-nsfQXGn>9y-1G8jQ|o zu77Q@1;25R#;IBFM}}DE{jNi!Z#=t#|tR>4Ra%^r{4!c&9m0yS~pq|>nwJz0#)Ey zDYi7Ho^F?fV%{d9Tn_q}Xysa&v=uiW9~lZ!!B8}A6{0!>uQ`u7Kg7^5Zk=p27B$&s z7G~?iugz%IA5^=5%H%X~m}Q=QxfBM{t}2>WIye)OYh{&Htu{$s6Y#>NhhD=oY86*! zc=%miw56a6a1ea3MN;5VpFd+}w`kRW0s+$-reRJgC0MNrYc%|_z~&R-uNS5D1}1}!3aK9hKGXt8Pthx?PybNC4dVFGTEW^&EbVU} z_N!csPSl`zmK~qW3$lELK$D&R;YOuksZ+AkYJs7N>|=4nR@eZgFW{6e>C`nG@za%o z!>6ban`65n+UytxMYB_i-WjWbbHFSPT^Yk4x)qci z^tykf8hQq8^JUjsv3Brrx+!r<I>kOt-`zyIEwo`Soax5B{NRD!U_(J4J!qrrYbX1BAL@E_5i2X( zaKf%agd5Yy+VTvwLY!qL@c9qEx&=|QqVJ@_Tx!xa!f~FWKBjqb&=X8%39bbJ1_7NepENp}inqJ9 z_2rL9loJU`^tf(%4-IkLEHpe92XSTU}r4v1ie3ZiEVi}v106l9Pjyz5Lm zOVj}~5G7%h3QjRIz9qeQqCx=nR;IjLf36he2Rl%c?#~rvG$npfISQVqb%Y`5JpIbS zX!lSmalhtufXzs&I02R(c7_*H-PTHkItx*hUKhn>rFA(F!Z0R>HF%(mF?=<} z3qTDnfOv_?8b^rj;@XHnzuU^<-oIdo!a3z6Q_px?JC=H6Ww4O@w{nGTKy&JhdznwW zBfQO&2zjIUtDwo-e(Ee6QqECUH}1T98)M&uq65WL_@MxFmp|(e^n9Tn>EI&Cs|@aB z?m!CzQicp1a+1E3F>6S!)}FxCzY*ZegON*FB&yG;_8yKo`5nX%I|t!znQUdTbu9et z0(_;s9%&KLWP0%hif4b%J1vE)7E6yiDZfAMJM>TZsWeIawse#ZeF&%vXST!OcUrZy znpsQOY3$c+0(>m73-ec}g_|kHS$r<~cPKZicHz6$JGK%)*2dT%lLSY#%yCC|>VXM> zE+$69PMn@LRK3f1JE(MI4>~3*Z3uM{A69KAs9)Q3kyf{QRMjPahc)>vDtdMgD8p(( z(8A|_<4L1?A>3Od2qNRFCNMeIf`_BboM`bAt6P(eUqE=QH#YS; z*5xN33Z^fB9q#WEe$&*%4BF2ahb(QNc2jRYE=p%*GofdMQV3UFV=Nh4C5-v{rP)gr zsj2ogF*k!@OsYYp6U0D(XG}&OUC|j0OXX(~c>VQ5)(kzB^QG8x?nv^HjNIDYl==M; z3(;r6mdULn-LZ)E_RH9^)ehb3p^sBcKyH|=RL$#+oCG13TM1lzXD1A5Vv5O}CbGHG zC5ZauQI7$JMbvM+%=GQpt*e)icWA^l^5-A9H|r*0aB&NY^67!Y_~k?=acidC?3kXKG8)5 z?DSNegSp#-#3-toM7*IVWx$2g3$G-%H zGA>A9_QiulaEQ)|_`kR`Uk~;`9qjO+oVikCyFNRQ3%o8GB|EM4MK5P@WiS>GvrgG& zjtYH70%2>*+sN}$ezLhj9m3m_FuII-sfi@6wI3_Y(*VCCg~leHv)HS@^kE&%X!=kN z?ss&Px}>jm-g=@DPR(hI^eb#=+|C(t!kRCVa)vnDB>T>E|7y32g;#ERXgeMEOBFKJ z3uwbl8?ySTZV*>){N__462A!jZW7t86|4&P`2xMJzA z53z{7Y8G9h49xzY+;tQu4Lp4*o{ z6^WEHDSb8wa7V(X0Q??trEs?(8I*;nX&MUttvC%=LBQw%(t~uSN-+}m3VGtK`onE- z#6>;2urUx0Z%zW!OHRzxC3kO~97FY}Zy0*;gfDlx>=sXY;AmK)LsSfR)-p;PgKOw@~XvKYTnN=cYUKxeL|}}P5qeuJESNJazR^~HSOM9y^Y1z z)50i-+k%dlZ;x`O7X_bAZiOXdSCm3f_b0iUfGngGryRv0oO_+I5!{q@aG;7i)DS|h zo!fO-;-DvkwcQjy9w)wqK}7U+mVDDh$54Q1DptTi6l!Yl|b5#TTP9>Igr|`FVgWL{+xf#0(jhHK6x{-hrme zkM(6h3i+1OY}{i+y^x#k1Mu!I&nr`@Lv(=+`1L16YaT*9uLrB>1iJ7x7~)oLF)#E# z%0AC4f`z@BPG9Otu^>i|Fq{I;eS&1wu3KM~xM~>S~Pgu`^;6J#r&vHdIChFT1Sbqc0kN44kvA(j05XJ&6=KZJtM3f{0KdhEf#Hq>bi1bo@;gI6@n zoZq-|%ywxgZm>>$S}_xqBQ&q!muk8qj9z8fx1=P=7Up%FS-h!`PUWW1msm~h%71x{ zwL0#CTGJqW6*1R#@%hgE^$eN^sJnTq+o!A{vB7gUr+?|2&XvU$RK5{x*6<37-Uav=pgZzy2eK%zyc89`Cw>>B~xD_h76Wc~NjE%pa-w zyeAxKU^h&Omx4Fl@J|XT@t?xK7hcnZvTw0fyNGAtUC~51VU;j>j}-9#^O zc6<6akf9}b!FlgW`>@jG$nFijROSHDv}l5T^OK5y{GAh{{*3zm>N#`K2B&5h7L;`5 zXJ5pKAs|AahHiH4U_p3nO}$>(@7WSUzZlVWpoL4KxfZIfkwcp4quN{WvwnmT+D>1dVUER{~3|e>GGj_zhZHEVVWXO|DidO?nnV~kiYSMv^=nN z@LbNoV5nL|7OOS9=R8`}00gU0G7YHL9nZHhNepU~K3~PM+1d+>8b5CE!Io7=E_n&$ ztZol}2gW2>d<{Y}LGo%~3O530Y*(@0YL{}P0(T084OD>gag$Da;T5oH1P3?{xtShR ze6lX;_)bKK8S9@Pn|epL(@<~q`+*>og@H+hF{T>G_HF(#69p^N+V(LJ?ZaQl$DrvY z*Nwt?ug(6bCfbDZjg+TbKHbrmGKOh^;~0Nb?72#kPx%^I4m*bLtRQem@GsgJW8EZe zmWFO%7NikqgfR0;C|5&>d~MqkkWq#_5(dJf3RTZ-hw6E`?l+DgLG(R&M8_kcUr=!Q_xctOA9>UQ^m&0D+P$$2dHm1D+I6kwc*tc z35xd|Fn$27dNV zRULW<5dS>@Kd|*5Sd5m!v6}XjVj4 z(i>dYjF4ANtmwnyGlTh?FjXEt6x0MsWqiO+xIa%Mh(;__lG&YMm(m|feXS4|Vtt}X zrU^6BL8~fWCyR*2>sV%x)Wvx2ig(wb+S0?gS`G0wgH3oC0~9btj=p~Qlp>5SQ&#fo z*^whfSkP5MGn7GsR%ZvMKoq{}GaS=E5WjSJU~J#P3pO?21DEhK07e?T++jX=iyLsi0VuGCNl=DN4}j0wC4^%_X0Lk-E3JZM2zfYTxw z)ffRSDu(%;{K;5DPPP&FGv)#^ll~OWM^f}ltagQxSR?+;Tp`Hc{P%@wCA32SE{Y+zAMVmT1L+_L zkUHs0vwtw_g9-wrRvv?MUOq-Hu8RVDlEye*Izq!2C}a&DWK7jm&T#O!d>hDLoGw96H(@=Fh-|;}Z7fP4%~P;xeaI08UEX zF=d5kpN5K2-OLJfo>JRE!%cH95qS#?VJ2u**tkwmGyUXEzm8GWbGktLs(&r>O13bi z`S0=~xn!8hP&|#L8!@joSiYss5+Qv+m{PfNU$JtPNU&)?cR#$*Gq0zr+biTm&DY+J zvUM|5&5pUo4>z|AGz-UySXO`5&8ny4m6afmCB5QtbjZHe*;-&P?HTg#;kyw9N8Uv3~ zv-_|@a!?i76!sw)&#t$YYqBnlZoQ#ptn;3tWkYHYoirvhyo%LY)XLyQqvlRIALNsx z^IZPR@lQZVhQzc8CefdDI>t9$0&s-2nXqN|KVoJcqf+8*y-kH?VV@cFAx-M(lhak> zxG-dLFS@|jv+*=hl3pBQRiO=2Bp-)`HcSh+AG`QT)?wq_AUN=L5EP2FAnnQ?_^j=3 zV-Ho05@t0pVTj{i%~cd&k-ivc)!)b%p$r)5Q8JCdyP#7}Y1@eOSC=ZPrr@}9#!Ej= z5i!JM=K@&9>ib2!NZF~lHV6iElB6rLKqUNk1;!k&!DNvXoYB>bZ;PUZ6!BfM{GRp# zEk7(o7}YIFMAl^R6xm+LHziW2djDmi1ISB1dqv;!xfGUj!iANqMTE!0cqsEFks`F# ztx)=ZUvlSwZ<#jdUYyc0szejrq-eu^qJYVx+CT?8%j6wZ7kA;ZG1>7$b4v{EA^@XE z)21>*NZ12s35d88(gH?Sn&adKEjc!$bilBLSWge+y?M%u6f@snJ@91ZD_Oz={eWhR zb(OYgN5Mo4S4WGlb$}%YL3*rwQf#GGeNztlo_s6jn!e)o{NynGE5XL#HfOYp#*YiR z5A7D`JXMmV>(aSY2-<4E=u0f>%F0fGsQVn^tRdrbx-iVt{g*>r`w0B#`4*vzEey{U2%fuqKGMg8{T`+qR7^ z+qP}nwr$&1mu=g&ZQXu@Gq~e5+>?CC&Y#uCraprzt;8#pryEte$J(6$p58Jbi-non zL0aA>(!MK_kSd2Daa47(3F0XLNx)EY!o^@q*Rq^w>4&#cc#ZnN353#JIK!`2Dfb2> z2{48pXLcR=?f6m>D#s*eOiY|obYhi;aeVUu2#Bli{@$RQa3c#cop!LXfFb&J+~4_J z452b&I~lul{I{Ez<=s9M5%A~S~DfOp6P&OriQne2mdg`-5cDL!vJ0sYo}Ui z0jJopkrqXL(gJCu?`7sNEj)Y|o$;;VYFJ~yz_R#|g*&sQ%R88W_Zi>*QKd`b4UTwc z7U#G@3?7XmUivy4e*eU!N2Uwj-_p2()Gi$Y`rq_fL9_^lucND}y2!v}s_h{?OPeTT zb~s*UcKQZv6ln%(xGRIaEo=}SSj*vi0ejkdI#ZVm$L5RtrQ-S+0S3)EpOXjObm`r+ zMd-dDBs@2^Rbkg!XBHuAa^shU@oR^e%FuA5+CM$8J9;=KDL&xm?%QFi{PmMz$?5Ho zI=_%`dp$@%c^)*L7S6_K(`iw4e(PytIhM(=;hc!*5HEzTC;JV&aZ5TJ?NOr7DE030 zNKS){YD~Zf#)gV=`>*NhRgwy%>cS*c8~IkG*1hu6_fkke(t7|i-xy6curhW^BLs4t z$3593|K*u((wi+8mFpNiYVD@!)JrKbpJ;1%)0X*MmC6ZsBMVE_>ZBs#rhOP?5d0MWFxXZR4Do+!M4g`s6EQ7nN*|7&ToSlD{m^O=^J^O2e4)&ZWi>_&h5o7nMq8IY$Rk_Xr!@`^i%@?N>TZ|d#rR}pkQ zlf4*-VubFRBQ`A?CQZE!8gbLC&*XWD1S-G+q>_^_X5!NK|ZM(=Qd0yJGoaEatyehU{E0?!60x^_o+^Nzl2l^?_ys? zTFu%`<1df0rVH8xLjG)=1%b|Gn6^fsi(TFz!oxk6jYd3{!7Yg4ZTyZS2-r$`9I}!j zM2eH*R6fZitp7t(AyOO~S@>``i^HBU6hNC7pgGcy-K=ZmpTM0wn8&D5ab8C2DD2(ziE#CqYQ_+VI zfKTY?)BNDeH}aUI*pyLFmL7-a_~7zoFWEAiE10+)m$yIHon^)`znj>|O)aESeN`Ca zdo>2{yTXOeDz)Z4iKxJ)B2hxNI)WtD9#3c-q(c!_79SZa3)Zs_=zi$VO>?0xji0ZL z9>@1|ex+%2S`&@M7};fs#+~%DdOA>|bf%Mcfx0k{q5X!@?3sMfh@P!Fl}U0l9oz|K8-3Tf|#x`B$_l*;l$ zjVzmXRJ+^Z6G54oDxuZOo@G>wFQiLUe$*sq#!aF*)j>0Q8ETq0I0Eqx@^&`qQqG=G zi`r_q0;*;Nj+d&G6Hq)O8p00pLpMn5FPi>K53!CpblCJ+c6s1qfOjUoahf5to{yVf zZ`^cJt^#-KhBn=p<@;StDdJ3)5f`nx_FCLZNo1PeR=DJn?|h0463Tr>`rXS=754-o zclsDGQuaDECiWcNYF|*pMnLw$JHtph{yILf3#8xeL#^P=q5GaEr0^9+)@Y!lB zkMS`}=;F?le^#k@zNFW5LbKWsV)miCPlfD3*o#*W zo0ltbzQM<_|{?%7!oO#cDrPVKyAHWA7IN!IEn|S4Q*9k*hQm*RhnJ7U+SZ*h(_tahiMOF z`hG+U*`bHHK#V1+3aNL4;7jhc`nlv?`aWVsT@VrctakW$81=@Kpclpb2kMbv`)giV zhrVx1JWXocEyZO$J1~q?a$17?)2#w8ybd+F`}88Wwfy zC~{mw1n=%a5x4@CHnM(Jf2HHWn_|P(NItOzS=i~Ad7F7Mdya}RFf49E3`k-<|9&QB z2|GiFm4UHSe@mrpY@!Z|BwTJe1M;|jtg)5*JPu@I&z?Mck7M2kFHaMz1vGp_?RK8$ zD0``5VV4EaWvxX-g}dO4{tV8$zUcc`lRGsr#?KuXVRV9s4-S^?~l*^y76J(~Ctohr~p@nYH#BnYp7-+$AfW2A@T8cQRLSC=_30kgUr(O`|gwHo07`qkfc^-SwO zZ^(X9JpY{m+!qc8X$w;S8lK3Gx1b!SS*^rR7hKkV?dNe3fBeM3a#jO=RU6|8+d&Gfnbi>1) zyk55L1>IU~=94 zwinohG7o6si>T8S0D{N_*iS)f_Q;m3XrX)NPwlA783f1}`qe?W2U#?d@svK@>ERx} zqL0hfI2@xSF=O)khPym@g{AMvtDu8GOYs~j2slOO6osZ-`tn%%O`>$Dc}NT@mGhO< z^d0g(*`ew$*ue!I97wi_^>5hPkY)w_A#MV~xi*v$9IUHZ&Y+Dyc&A1{U)JR2xUO=1 z5FRZIVPjx-TA#bXmW+1ZHTcDzlWljQ)${_Cc;X$@PiM~_c54FP@T2-SrDZOcYi1;> zjq?{nF0`80PV%df9WWO^i4>;dGTBnv%(1&Y<4%41H2m*5RYCXxKU9c&&+&+M$ZoxT zWUCUKDD66#b)?+v>sNK0koi7~E3{HF!0#c>L=TxKPB-zhM*E#1j0*eQ#-}duox-c| zx;Ou`Tqy4`uo$TYB;jr9qCFn8wjagZ_Sf=}i~J%W_dxChLURja%LEikCc7+7aAy5h z0(mQW)v)RK&y<+mrGQ)EZH(MEapjHssHr|yv=Iqr4K)*4^=3-{{5tfDCES8`XFnRaRJUF$PWNlp0lgEK>44>J zgy&DWa6H@)He#m$H0`XEk|BX-XlQS_K^ezRPuvar3J3nd8Igu<$&(gGYONFvHn{XR5X2pCe+Uh*5B>YS zPOV%I-b13r3sbQv#AA)h4ymI4QJ7a>0Ks6ELiH(l^8mT0 z3#LxI%f8fqEd`@+b@;9Rto zN-genYRB9QrelqqzSzY^@nemK=hktFd`rY}JCLtb>1(! zyH{R3{>vveQhA=0EsQK|W1O^348es}BaKhR92)*DgGgRFrU-*3$YOtn!n%zqKccQ!*OpDr# z%W?%_%KA~H7VfP%+btDaX>?BV?hxGKO%Sxew!z^6T)#2GVcwxqFt|Qs97FuYZnSQ% z>buTbIYwjQ^e%j=Cntms(DtP6vj0A6-O~0nQ;FI`j>Sb{b1@(pces*ohIei)3atbh z^!FexrX_OHg#zM7NHA4~5IKR+k9P7!1jq2yt;EVHG|B;yX{}G56Foqf90HNOj%d{7 z9DIv!Anr7Lwx~#QMTdQ?Ei5-(30c9x1Dp1nQ*?tUvA)3S?E7Tl@GdHW?c@|UnZNT0 z9ouCeA|8&y4JoEe$U*ih&MKghcOYFid#?@K^ za&nZMNr&8kv$0ZMupX9PwKNy%%0*P+@Iuoq%CC`!4#NXHT~($F1*leS=&^~f&d>Fsodpd^|4j{OqV=EYO1O-B_$8LC3TMc#*2Ob4f13Y$y0rATwy^b`|KWh*z zn(Uq#YXVphAX`dk0Uf{04O}PJle|f;lCt-<`U)aOn#!H3{G1QMVXc7-N*AKVx0xk> zL?CmNUn+Gb0}@>kbp%a`Q|dz}fyQrsme-4BS+K>M_T&ed4}tw)ZfVW6?m648rv1k@ zC3+?qvyw#u@B8$tj8K}9;TCXHQou7c2&yl3X$d$iD7n%#rp-9_TF%(R{>DA;*3l$q zB7&CimKWSAR0R~gqSf^gF-D{KK3~?_=w@k-b^{;aHnHOgTHJo4=)B)J-h~iPv=tg@ zCFC^F5h4u+^&vSd-yT~@IX~a=*_%MbKdPJ!D>jEF-$wz2g;2N9=;(521&|q!rcxugYc${ zpAWT`Bh-y-WY^TBm@~tm+8^@d%|2$@9H9f3Y^^a#7*8ORek0LoX1Ia?(X76G&;xO| zR{nAoUtw|sLsl~GMoaf&Aj-CjUC>IDW=mSRhm|j0%T510<+x6LN zKvhU!kN|53KH|R;ORosZyR0S8db-z;Mu;?4!o&|De3c8r_@DqsYb=IvdEi2qva6KB zsZvDg+KM1rM;W_f6pa_1%>CkV&c)sEX~FtYBxHF&p|yxH3npJ1qo27&imjsmvjA_{ zM)Ht8=78W>=zfd=aXLa8?zVdwZ`K96#5B*h;w=vjw;9w!KGkv)23vwX{NNz9q=J z2TehZ28ht=-L)Oe-CuK}LNh_M*zwbAFTK2m6KNRUwJtPdqt<2WiMecT#m*a&Z?L5_h0=y`Q_2Ci$2cT#Nd@5IKnCtEv$>ofRGRnZ$mxyeB3loar;Fvi*b7Da|rmaZNa~ zHmlrWS*S(7)f4UmDP63$VsPQIG>?ODF3M3WI2I!qY{U{)!4z?(}4| zoacW>s=x$E5ukXbIlEMNXVr}@eQ*b-Cvj0Dg05CbD}9nDR8$ZmqSiEaK<{I#kegKp zV6d3DY#&shcm=$ngYGJDPC&%GI7H)B%4_=-3grJZhWEja-ra<&BsNb|;OHp~3YMy> zO#B!XI)~qTHPjpKs9DSBrd$GV|Jjaeap2(YQJK)zl(v^GLhCM4Y?b$JmH#xA2fmFR z4xx4YTM4vgRDH-FDO^Yg}OsAMJ>M(AjtkVim%3fj_*Mk%`6!P7m_JFRg*xT=IUZwFaT$0tnd zTkSu={&HcHpi{1i5Y!{nyB4Xkms*C2u722>IMqaBH>Dg~RZhQ1TjdORhoZ0uCsy8~ zjRCnU+hFjy<;*+ol}P^5u&G2bB+_rdU(gxi`Z$qC}81Sn9b9y%MG-S0CY_0^4J&Cu6IS^4cKppc%?mUM?@lB ztAr~u8`h}x&a7Mq$i+LAPK51^l=Lil7eK-%n_G2KpR|~@PW^~qEn@nPKFN5e{l~TO zLVm3gI|y9D!-Ho!ebKSo!4|%e+DCZW7s`3HEmz1um=*m!*FfxmYY3OG3d48y^6Xfj zy9%*nEj5Zw3N11(kx!f=h6Jg+An{Y;^~2}JaCcr?WdRs)l`~oRnlKm4-3^D+2bi+s zuA-+`b!>sz>;<7qOkHZxp5(A`ZNA?m0#WOq;L|ugC3r;J_axvp>nS@Zi6C^t`Ps!_ zp+zM_f5((O^gh~GS;b12D@3>+WoV{V~iR&noyE)I6tNmmEudvLdpf5v7X6t&33I z^{>2T@WvyA5$)7C#v^ai5xED#aG2~;x0uWrHb&zL$EmTWsf3@0B#-{;+MQK@&QAsl z`O955!H7bjHHtkad65DqqJApq+>EGE(tr}!oj3&{4#=dl9$FIx*oBP=3(Fw4x6%|m zaMVKP6e80s4}>Jqe}yO9Ig)LF3&#TpA$f)jYZ*N59-#+Ir6!XvQIZPM=eA?) zB5BQ;KXZL$@0tP;+;@}xE-=Gj#ua=UCk32c#GRiorAjvfy`6Efwpf~BrIU-WYVg?(L~U~d4J}B82I&3f7wvnF+q)o3bpCTFh&_iOkb@Qiwq`@afiBxmQ zaeJLO7Ms*qfCfRqCNe7;sLG`bU)@F-l^&~BnhYj3snx&)9(a2>{n9oHXq4H4qc#9j)($1 zs`=sosvkOpg`TN^ADmt+&GYvZWsMjZwDG}nK-XzZ&4>PUC$8gPd(ryl-fwYbM>t3v zM0s}jk1DT6YpQ;Kg)T64?V`81H)K)t4`UL)IZCkDoy#B!_)Gh^8O#y9i4Sc6otpqd z#m#J&q>4;blIZ(^mWLA_+$HLsW1z+uMyyHkVy80MZT=``soV>fV?RvA@|11XuTGBz zL+G0f(A7Fy`qD(!Es-if&XWF*dTS-U)0otg~01Wq82G(>mWh+SafWu!GMt;3hNs9WNIOa$clm? z-I=1M{`J2B)krMo$BsY=v2gg?Y8TBKmG3d!X_9|nHd2PBH&nH6U0PWW(Rg1lns7( zNBrWIkM)5EGd592@3W;q4RxgN5N}PEv;ZA`?`5iO3t0ri+ZC(0ac}kI$@}CJvmJR* zaA%WJW)scrFJ^>By2W1C+KWL?o-x#4I~uJRNpUK z>FszBKmX3DsJF6R(x>g<-gv^YQc@*VSN8&!PE!jJ43HVC>w2h0QL7Oj^I+v zL|&T@1brGqIZ8vzTw3!gwY3CQ=h>_V(>y^Gq0?qW)IVDfB#go{4twASz^I;F#gDYU zSVbx?rZUUiV7;xO^9jJOM3^s9%mac0X9~XXkqywVu6KNdx@Usv^V6O21mpBhei)i`B0 z$d-}$o4@ad-E?)7i`ndsv{#!qLWX5XVG^jpu_I5%#TgH_8l`87Z6@}ipiG|Dx(4sFL z^|6w%Du(s$r`JfMWsBG{I~cj&^hTT8#4!C+8K2K;3tdf^Qye|EpN7HfVlb;w`%1O{gmA+))_{}F zfPI5R-TFl(m?FA#!{gAz+Zzz5-i(+!ZwP7jbx731H=cw!iq4N4&GXUA)QKHT&8gCX z?O+7uXu2ea0SM$Bv;NyDX+*aFSVEXSh6XIWg5vaH3mPBQh^#&hyu?1u_5(mRi*e8W z-MdZ4Ftj9oSGw`{lN$xEzw&n)X%Awxs(0B4a9Y$l5^_wJ40=(g(Y!MOO4lm!JP??> z-GfX^90g}5>0_}HL|Wg+!vb%m=ZLWD9sfZU=_kCq5k;#-pc+JdO8j7a4!j&#-nisb zQSBdCtguGybV`av@+l`X^r0j*{|pYQ=LJB57h44?yX23QTXQn=-37EXPXi2p9726!$;Y1OHQ z_LWVMhB}IHS{zm-K9I5%6O)8Ehg88}$fkO1oj!&C_P776S~S_ysd$xlL@#s_#EFXVFjsr3QRvQR=eLKhTQ=AsVNvfhaAn6#Z z{Bi{&IBX+tX4IS3_k|o-)Pd=Rajw_)JTYg~aV4!u ze9(`mQf-RGgf_!WP0jyN8I$r9F8mDoUlN0mJKmk@Dyc$FpRm{OJAps&+F2YAT{;B1i?R{c^WzbyYLX#^o$M*i;b+s zgohws$C*0@5=n@wuy~<#puEl13zBc`hYxOhA2!JYQ-Y7I?X%3aT(+$pK$6IeD9)Rh z-5-BA%FdGjsLX=$@so{XSqd0DnVQ{Qtl%^OtUY@Q3khub(DY3v+*YL2H>Y2SLyy|; zXnM>1*a*necLRto=^u-Xz1OC8|I4FKbDDhq^a3y$@lAoYjBQW1cJcjbWN>K?2rzT7 zX&uY^=4n9ey3i>;Rz>&5ILa91UqghidlU}3H-a`m#1?5ZyTl~KFn#Z(Ju7butB4Hw zVmk7#p4hLLtr5aC>x3iQy94o+UMnVz7FT-HF?YO$=Vb7Av#EB}ju+*}W@KLxRU<$+ zh8eZfBs7IbdTBUk6eEhUT+ac*k#ZeV$JbAF< zPgg(z*??A6^93ME~{a`{X485uIQAb{y>MJVBzE^Z@fjFbe;2p8TG4u9%2zB2q z1SOMWer3M=X!`%l39tN{JEtA+Z9v=}Jkv(0tcqkeLge9Co6T<`bV1mNK2_{`77{u(d}e;D(v z6S23;|Cc{1_z--!`@K;oPryw7S`~L_7#3~s4<^y@(8o#*)%e@9Z~9E!Op3~L2X@J?9W3|Xe2d$8npm^7F~6FJj5V6=rLHi zj+@Q6I-+~iM>qSyfkBIG!E)dBXmw%t-coso?r2DI`Bv3Ct?#%|zwBZUVaZ!Irl#B8 zNi(Y2pvO+Q$lsb5fdRVkJBI*3EAG z@gYnk&Dr{LIGMD~+f`nJXP4a4V4#)vB-yjMG~kzjXqb)*67~epX#sKk)x?E@(X3_d zi{;3GL|vaOs0B(nrM?u8f5z}UrU5Q|(kBV%sTJkiVOw?L40E#I%;{A^F2M~uEq>0;DE`_&Q0Lj+{Z-W(^?lFDl!Fb=*B$1*|R>uRO$5PCXLk5EjxIpL7 zfzN!KZ)XQzha0}-a+)+nc?|SdlFnXB>mg2md74+@_b@Ft7b>=8=GzzeLe%h z61`UZSogRJ(~E5#p#@_`n977+>Y0x-y)8*%%u7N5YTgMX=NT+`mcJP@oNPm09iURy9_0`IW>r%^;?^Yh18^)l zj?P~rLB1w*qmd>BjVG&WMj%(ua)X+Py2+0w5|&3tlwU|KZbfBH->#L37uJs}$j?w9 zAzIF@)>&HIwT(>d#yubQb|dWLW%rwB(3Zemh?Jvgi>xEfuxaOVN(}IqB-Nv#@bO0C zfNsR5mfbcp5mL3_f&AOUU5A>eP!j4o9nS8+L62F8dN`7{@&(K1G)byB(#>vA*qr$B^KBnc=3gqQnf`#8J{tAtQc6vfO<4lw8L=9-V+N9 z{wE$g%TA2OD=w^!daK@ole{jyN}n|!z1<^K@*B_evT#pax9Mu!XUn;U6g~jKAajX9 zlqVG}uKEp9`pIhRuWy5=aEHc&@{bY&S5q>5DQBO}YIQWz(Ip;% z9NtQU%~KaM;z^Q69OtIW(#=L$jPQ3&!M@VCe6Og!?PY{#ZHDw(qn}b<77XJ+!D^YN zIus75h7?{G{p)e^qziC(;qaxin>X`$gidy_V1#b3NDG|M&h`(~4=0X!b*|M$y;wuZ zub1RRQ$@Di$j*o!KT|^9JdXB=b4DX|`gUgQ&rLU|tzQCbtgzud!K5!a=me)P;0sQ_ zDiaE3=z0QB?2@h|Kp3$U(gR)FUJq2jH5*r5P=)k!rRCIcQfy*SXJI3Aecd4;)k@37YpI^A#w zU3s`+an(m2#X)kHhP*s-=Pcy1SPGDG=bU_TMO;}r5Q|!WDYG63C_QU+lml8JAwvn| z4#S=3pxRvOU$`0@EH7-=v_<|LMQr++k5rg3^k?1ZR$re5dw&PQ6q3vo7CX9Rb%E&^ zJq|2CsB&LzmwFNns-U6s@F7;yfPWnr7Tk5yfw5Ui<{LbxH8hbB0cW^ZhavbgyhUDI zJV285SvJGqDLqf@LvMGE-~!*H0s9Zm?^gI%W!@%hGQ`xh zfVuQUJ{l#uzb5GfqdSYHB*K(`>W;)^8X77&MNTb?8sYP9myKRqwh`e*=LlHLv9wYtpPS8S5laUbY=Cm7*+u7BQ9F3?hQ(M zghsl;W2Q2tepY<#6@sYwFHtUC_GDlc@IKU0@+KG>Spk%(h?sC`1`?~b;nxkA`#{vY zS2MoARK{%dw^9c~Rag&)U+L}~)7YHi>~6%nJ4daewiL~Yx$^k0AEynd!+cr$Zgwg$ zTyhkyBUGStsG>czS2kYiXOT#YX`9#k^FxoE*@N|A2f3#I^HJ;xTX^ZDA|`j!f4Q_x zd^TVv-HYrF&aFEjTEj7;LVqQ?`(id+|}?CS@nlC$)7jSdz`> zs4EW#)I&9#$abtI&t5FRE7E$p>L&vqpc~v|8}5c8wm9ZGFkY-(si_VG<%GmUR?B_N+)NT+ewhrmw5z8v5&o`Tx1C-2a0Y|60ZelY>Pd4lC=Ob zo;EjcS!3@xm-M$9lq6lnCwmcBBS(!S(iX^S)VBBcv>z%+Q)$BotDYLei7VUZ`HM$f~!iip#(mu9~q2 zm|{MDD*6PiS=mxo4h_dR&Zfdy9P0VbDWxaEH~Drlbwz!k(UbjMPLx+>1=!)BIPbw& zir!yC=m*r1u9AyxnV$`hQqWKpW#DmseYj8(RA`v(A(Yy*ic5K9xu0OaTE?ox*hL@b z&fO1K{S&@?OpY9)BxMrOdg7fYx1dqVwHt+~q=VOJ3)xKG(+{t5zi6~$KvhU?2PqXy z9a~h3Qr3cQ9fS8>Uf7G;Hhl$s4KBpbG8r)fXxhjt>P^DrMB}2BCDa>zLDWHeUJUoL>O_1L!~yk!zV3b2Hb%2Q6kd=D!kgq+ zR=zM!XP=A@{5dYtK}qC}Zp21-xXrFh6ur`u#XM$i|K)`YS#W10+H~n-&0f^K7PNGs zDc}9(JHsu{X?PXgn(a`k<@fePke2+a6d_nYPNIqqrEz=|-OIDRmcA^f{g5TP=L+Gs zoA%TyYL&b^!|Gq5tEXjHKg4XY{L#IB1O764WZD^N*3&KiuSuOcwz|^(o^3UFfNx<1 z_llSBM~`ZyZzRNO#3nb4#5(EAA!%S>P2mDROATp(b;BsM-NK(DbQZ!KNmf~2jZu%|KK^ppc1l0L zjr{Gb0rr@J3fa=e7#OVZKdC)eT%Au_8G-#VCrI-jUg8rH$hoaG`0(SiyRD_`WORm{D{l z`vC%JH^$LEy9)k!Czs*aUkgvk+H<$~440a?Y(9SD4DolPQNpSf`*eq?Gd#;|V#*)& zk^R5fyoQ|voQA7@8P0Mz%U(~uwwmmOAqzmRhH=YS3js1U-dkKYUFrhTy1xJNkc zB`Dj=*OpQ_%qo7|@G1YkvH%PHJ!go|hpJmolI{4b}Z)msjr(rG8i`QzBN?sWQ0ki#iYOL)H%3p%<2!rUB- zu&%`9i>p>W6bP-yfJ}(79yA`qcyiyetA3OECKutOC}5v7hb1=94*3sDg8kU2d>Ks0@)NN(bIfyTH#^QVMTwaY zKG6dT&L(}-m+6}KuUkK7(KFQ5hEL;JVZb1lGi!DQfueG?&6uv&u(jTJ6F9ZBS(1l$ zwp`!dH$#&jLgpmEAS*9+wKE*=S!w=v=i8~>k=56njdXp{1WT1{$gbkCZApq0t)|Ts zZPG|!Wo#8z{CqMmGY}NVtgi|`7t$#1#rkU&r;TYpeB%MRp9;}{?maN8a~X1z?534I zBi@ksf_vAv*0ssJa? zzEgP5&^q`l4Ahh2ie2mSa?*Qs&33r%V@V2J|s z6x+p=+gs$>8<5dPWo)D+=U+y|SB6LkdC^#d8W0x1>-#Ll zmBg#lqnoKOE)|?!sb3RW>4!v54}Ew!mDMNCM2|azq`y57nowe*AzjGJU(mfP`u!#Q z;?37f-eD!Kl%#hu$dzwQEY;O&u<`v6AJjmWWktK&1h%&TmCQ%u%_Uv_-4hda^y}7= zqqRSB8{5235YBUH_;Pwp@qR;0vf24hYk4ugFk9#UY zCTv+G5f;&bTw2kP4nLErc`-!Sz6{EIh%!v`sH$u9fh5%WrW+)Wp2B9j+@~()&FyM% z{A|A5QK2J8e#1+`Tq>>i{hxJMkE6`W(C1WTi3smKY)cb%gO}fsf<$RMZH$MkB!S|Gb=fC=%icf=g|<>9##mazhV(px@sVQVA%6YQ0Ga(4Irq>=0OABbj^ z9*%^2xh^-x2xGaGiR~>C!+7WS zfH}DdR{WPUH~aVwT5;X6gZ&1!K^;h00(yhks?1@5)_60oWR(7?_yj3>2JGMY`+j9< z!|0ejKtIwce3esYTKl$^7Tsu&$(V8Va-dTBHLC`Gl&wk&@B_6_JrkX|u?rn>c?e9B z_?tADe~^tRV`IvX9=LAH0n^w|Qwt%Z$ufIt92efhb4YNLBTEBKv&;Z~%C~;mmzJ#7 zGy#lNN_`(4wX<^&`zzP04|iR$tF%DutEv1WT)B;`Is4+c;Z%KVV6i~%UJ|W=E@3`Y z^Zslv*=N?zk)!y*UyF`J_FfdNhM(i8w&G!3h7vlpFE_WMd@2Ke=*)f@7fbv@Yx}H6 zsC>&2ELfohG!jq>#tiXGlK!{5iA>4jW+Qto3(9Lf{F_MG(~H(MWP&j*qh6zH_iZd+ z;es0BUUXeJ35r;nm5LUpBg!) z4%i_2sl>u4wNE|ld3>eo7u4NrkCM&%)aN?d@Wg8LTQ7N$>jP;9#lxUFq!s*?+OsTq z4Z-##mR~P{DZB5V%T!srOxdfFBA^F4te(NVvOV{Pn!r$15j%&0o)Myp^=>24ama8q z4#FyvuJ|CLN`G7N=|XQWREx&D<=tI9szldq_baZVGJ^64e%)n&oH*%4G>sM*x_)lf zN#|}AW4fv1p<(FdqJJUG3$hBM;Fizyp-peyNU|P(ViV-9@1{Z0N?ZrZO_=j)ZDv!hn*B2N`lpffoH$*Zy{dLePI0)BsSX^m$aRXr>IJ@tE zi+Y8l+x(#)eK)~m9U9PxZJ)Y%Zq_@`vXj}DIW#dm&0<{}PY4H&JhD^hwTdD~H6qf+ z3sqe(V%1DJ0e-j*mcI1d9Px39XPI)sLq8!l(|_iF$Kf_Rq#Thx!80|ex&B~| z^ln;0T}J^>D14fLK@=c_OGnf88xz=q9rRsU zcl==Je9#BjN^^gx7J!!!e=&bVZO4t1LkEXLV4-IW`dHf!l(Z-#R-_ci#L>*^mPGxmY5L(N{%O~ZCoY&DA4>fKQBn5s+x4OaGF<6q z*(Ajwl@=QK?h$w~lL;u^RHVv-1R-ihjj<6C=^Ccp;W?Socf6&Hs%-qR6i>%QZ28tuCGs&b@)>66d_8qwLMWT^x&=XUYU3n0S{r`ISNXNDn+4J&d%k&2WGSe)t{83eMeqja-UG-IB;`zqV z`+hQi`9OpC3lszAau>V{eWFt)Q?aePM}&o4Y3s>1`W$QHy;0~8KPyo{~L zmyvUTnm+3JFRR}hYu6=^lEh}A{e}TXqIw$L%~Xu)GbZD*I6@k~a@VUHgqbnW_7q#| zLqqtH3=KZD%pusT+cEaE{1)mOAz*EIisXyUoh^qh!9YWr9kn@`GxX{9i6Xah5sPIW z56`6A%xrrP&wr@z@s65C(Ok4v17XC(j3!Z4gOri3HIhLn#iD$4q7IK?kB-)cSYn_O zr57TxDH1^9zfKaGL4PlNjYUpWFIaE)A?Z&JR`pUAKR2x|;gR^2af7bfNSY67mwVLf z=9-3l3|0Et`eh>!-?|ZP@nHtqmR#LfAx}f<7u0H23TB<7*N=9;g~9ojE|=Y@5R_fN zW+mufYW!O=m#})5bzRx!=e<5HAI$ zx2hAqaEAX!*gfrvqGdq<-L`Gpwr$(CZQHhO+t%5(ZQJPk2mL&rXR?x&s#4IuJ7J$> z+LKu`6wx~qlS-7F$sKIV){&RPmI-EeDPr;%BmYNFl`Tr&K8#|7!Dv5>B=T{xvcdBy zbLpR91~e`Fn>50X4|dG{xpE-qSCp%nR!s zHa;jvPA(XR7Aa#l=<{C7NKp(JP)oSm3c2TCZ(0kqB>$@;rv^U*d zp4aI|mI8z1fNuSiGI^%O0{H>4t60DR4)mW=r{K$nH9p>CQkKpy&xR=u-r%WH6rG=U z)G>$Bc0Q)6u*Tx?r}}Lbxd>WhY4)1Mc4WNVj*L3WJ=sxMfDPnkOks_`%)5=p%wNby z1;|o^O>HhvHd2=1N!02=qzedNM$-;qst6C*PLwfNKQ9Hgy z)X0k3EsVL%1>QSjWE=?)8-q>Oc!+aI z#Y|fqgyDcU_BR!=y%GQ%5M?FQxCWYu%_!4Nm6u85p7^tT6b_S2B)Rkb9tqA4`|=9? zMqSlaG|z@&>3I?6zQBoD*j_2NffQCh>xk4M?cJI>^c8sXh#4TpHcCE0p0FHN4Uuwu zeG>HOR7M-okkbe3U^ zFQQ-M%#p|#1NK%^USExCjZwCEzJPbEhF;0C$s#b9VpsqnOr-(N$0{(a3Gb_=%z(y^ zY1u(maqVS?7v#4%ZJH1a?kDdv&_!=Uq5od#u){a;lPZlD$~lfK|JGB_l`qSsfH*p= zXay<|_4NFIx6VxQ1Yo`$9fSDxja9Um##!xEE)3sKN3p+?IBCP$b*`F?4rc_Ix*`IT zCtyeN8ZeclKREaSrG|uypc)8P-FHCPM1E?IuPh!eL0VyC{~NL2`o&2jpL|kPbV|Z& zr9ZZav9&B45ELaDwmL9*Pl(;;Xijb}hH6bRvje;JlHXWVjO1pl&|GfCKwB>y`)l0g z-w^DXR{0bK$F5C<$%Cgv$mOzRok^a)xKgywFf$h>wX$LgNnIg*5|^@Y31NS#{CAZW zL_2YcAA8C_YL0#dc@Ufz!?SLV?4{1V<^0ABf^iXb=uZPm*%sf9!q}!Tby)Ea+{J+c zj#IfiEegZU9>pNGM^!S);KWnhJY^xf_d{i?$qsJqd)OA$**SWL2uIfH%j@SjU_v#^ z{dCH6sd-$Rx(2}=-sHZq89tct0t%mS`zIhZCjv0-hECL! z_=oc+Bmt|;2*`p{5+IliMs;fkVbZSk`(8ewA8hi>MF2{DP*BQoYe za(gPmsLHdv)?vgMKcLGwpoxo~WU^2x_Q;goU9#;xaa=@+Xy2vYoAy^znmG7f2VZX6 zHo`BRtJHEA9hvv!TC?{}8dW~$+!D}YcE%VjU=+j=zRe##z`a1Hpm{c6F9{O-tL_b1-{Am^Ka*x* zBu+m;ea0hRw-50mM@607&hORo&ebg+W-f=5iQZHU%MhR^q=ZZb)xEU9U8om&NoRfl6=~%$zt({&P-ndI0DlnvG{>nm1-8*S^X z;CCLY5kyCJG6e(%;%DWl`)?y+h2V8#Qb(_(lO zbES6preiuRp!FL~2@95bL@#e-fphXkA=Z4mow@!lf$)_2n#*aU;n(S;TR{wa4t;se zanxfF`zQ=-uA+fHq!oEnex-yMk2yN98B#_f?Th>fuw9{k&iI;`6>AAs4mQb5dEeqn z(+}vTpVEGqIzeW2p9o6nhCX%a#kEKjD(n3}TjZDvi#)ns%St?;OUACwEeZN)hg zYYbUC6RWH9Hnx;w>OeFD+rPQ$o!T6EWafK?#l~hY>%2kU&dUCn9^Ue4aIQJRHy&r+ z-delW`K2HCfuh@nME~?fbCvzNwMuXK*U)JG8|aRN^)`{XR+B3a1ixokGx`dcs0T>+ z2w?a0!I`u$y%+Q#5z_TwhY2~GY$HxSg-e4d`6>#$SIcknpv>UT_~-UwM<3&}^D9I~ zFBcS_NRSXK;*0v*3qz;m6oh8Dr-J4n&_50ao5E8=)%fBMA{q?MiMOY!xz zOtw!&aJsMtE#K3NKaP*X)8miF6J|-2$;KxE6O&QW1w6LgY@j%J(@v<@Ny$bGNf8zz zkDL_7l@8F(G%@h87D{=l%W?-Lf z>k-~0AEu##L0NI@&qR1Zf3Lq-al=OSRhtmtK>(gY@Y=74S0e$>f#zOWDq%lDnAZuG zht8BEqgh5o8z%-+)o6m)B9Kc>{2%sj(y3q55u!3=-D|)@Hu9&+!stm_RU+6OL{T3K za9kvAxg zWU!`<_W`ylA2>#Lz69^~?%>59_*pMRNjqdFGsYcFi_MxJq7-wWanTP|;q>vYs^pSs zsV(78G~TsWsU}EJzNb<@zVAaPU)pi%W(UP7Nd0*Jn-NbSJZODOi<>%Qe-UX$X(_ z#x7Y0nWyY`P$nP<^%+GkBrw<*iDRelE&km{6$v#y6#&o4@sdH};u6B@WuC)ScjSaWyOnl`awT}|26v@q zKHn>M7X_L~(gw=}YBe1b*t`@EHKVD=aD)qf41nKnhq@0THMg@XDwS8KW>2e^k0{o@ z$qw1NfPmJhnBXPWVKwV@p`xjj1aBT9x> z|9zd?PI>aZy%kXCV~lL!lgSIAPb5xH&V$gvZiKS-l&N7qrHEdviEl5S7T^vF|wH&Fz zy&og~Nl%g$`K415*W|d=BT?}$j&%e1_5vMjeD|9@m}RLV43d*MaUs?t9t^inLuAK( zjH|Ydd4rek?9i7Y7Gjn)RRfW{bCvFr6NtrG`l5Y}WRF1I#xZe6!D%F-1CfNi;OIA{ zT)RAJ+IFe5_Q)s0`@gOPmnyU0R}rVvNXi-%7s(-oz&EymDGi>Si~B%WFs6t_AI!+ zb)jJEUS9RE+@#k2`a#jKTH@YUvtXb`Yfw(FZgTL|x5t|t8}DBdORPNrcnCsJ3Hyxw z&gP_$iCm^+TScsbH*T!vs62iT`Be;wW4NbhL4C79hz&9+;7&ASJ~vnF-}n=F#6nF? z3g=Q#=rBN;0g`vns1)V4$y7uX_|eFtVUPj%OhC^qs_0t zJkfE}e-Dx2^z+R@l>2zvZ$iEeVd)~;LGyQ-rcaO>oc(eR^3GH?u@V8ZHVZztH9?3p@EPdEr%s^CnQnQHRRK%%Y}LNrwB^Q zq!b8&N?(b5kj+cB7^73tj%>hIb7p^(N%1!;X5VA1qKHm~*2z2IbZ)C;c0XzQ>|pJ@ zCfu7z$$!>ELCRwjPI+uc-pr(d6(cdi>YSXxfB(;`rBLT%S&&fJe82qHEOy3a!LfSM zM@#>~<|F<$hRV_9n-$ao=xPFK0w;s&CLgmnC+tpHD^iL@{cNCi1*pCBGbaJ%ZRh_O zsXCx#-v)r_BKmk(Txz(?d?Q7Qyn1U@`Pe4&7ns?vU2O_q!tj zsOx|mOw3ZZRVNqzTvUd;iNKk3+A#uclS@@{NndG(s-j`OvE)~!nf#l%$~FN}vK&=7 z(>sh!&o+ovbmCz_vd-}LoEq=wY>vUN<&cwY`q6xYX*q(zZ2_V2nVyuIbMGa8z=gzG zo^FE0?~Y~Qe5AC@kHP$YY+p=}i3d2Z!uuucgP{nuINCBcO8^9IbPb}x-`=|~;*OMQ*Kx`n^VWX86SR(x20YcQZS$d^Fy@~uIp#NsOJicTuEaC8 zEA=cdx@GbQI4XMcb54$xBBO_&Y6Gv*-wBNC*>$}8V_;qN{IGaO!&xp-Qc9SbJ(L|S zkdAQJCy+&=@I-U>qgXn9Yql1(`ku5|GSV-oG1nP!NXNnL+gWsiEFX(hp7E9jxFkIbXdNm0cipor8n4>K1;wru%}|K}+!2AI?aLr|pX zyq4t9lr4BNK}I!N&XSGTjzVw&-pd}a*W>p`pZ*`kJ6b5X)4QaVf7l@6R%Q7Piv7d1 zDve@ccoVm{y(}e`C1wN|u`~4kd2m-VntsM5>sjy(p?Snq%(n%M2{s`{6PmRhq@^lqS;*sv+r^55hUJH(r>>0@&PzXi$a$ zjDSXy&iHFZTdx`3i)P}(A_X8?)=Q=a;yxgtTjL4gDG^8u@#B=%XrxZV<1#vDP#<~E zx}0Y(EZh{ZhSDiRB>&h0P|gH9)!*>iI6L_IZb zX$5@8xx@QQAa|3ZXc3gtTjFmaT=Z-JAVkCzQCSZ7E-Uk%2aK3BwW70#Y6xk~^@7HF zH#jqEA|{KnDxR)v5}+m_{8z4P7es2@g=GwVo>f0+ivoeKH2h#|-c zvowk1C0o%KlpRx9h75N_E)miAFv$`=r^Y>;&=6>5`!E%PG=ev2PH34sKg*V4unKG1 zw(F+jYpoqnXNM1ttq7)jAW%-mX10P_l^u50VtMZoTi4AR^t-S}n2@Ougn2E5k`LBG z!}qt++_En#PfFq zni06b23z=DR9SlTkUUw{SLDCwkb3;Uho@j07zzt#rVmUOy^YpzJ-T5w9i&i46)+5@ zqHPdaRHitOSblg#(M4Zy%P%g;zs~yCeu)1XbQ`U6fP4Tadca|4&;f<{4q`iYs>cRbQP0_Uq2~|t(^&mJ752A; zYGP%}@WGUI!fDGEg#4d>@zVrf<(f-P24k0qyG*P7$nRAH%;DOSH@^`tWq!^!?*7{# z6%hDMf59#DoV)_Jy^=AQ1NE>S{)EQgFU%e5X+lIvc3oX^9S$J0ycY!GudNn0655FI z4D1zg&+3R(xUQLj6eVz{e;LS(9*}$tZ*Tx!L(ds3&zzLmY zp()i@wycj_zbb>+Hsemr7P-&1>`7$jNY0ZY=QnMPCovN-cW9Li z%4YZ#x^AhYhL==-iHV`Q4pW2XP7j2s{RxzlRGvv6bQS$z3R)`Yn2i|ZEP1FD%>`Z2 zMKG91bOHF~q0V?iM(^@M+><`1FGKKs(T6(BG%A7b3SWSMA4oSPOT`Gh?3rAd#-+TC z0NSF)ImHtpSES85MHmc#Tbc&0rDbG@wJmjCM(J~D#N0_wDn7j*hBEQp@@i9W@L-4* zN+4gzQwu8d>}~JbbAY52^yUbG3LqxK0^4C0cWB*>J%50~Y@mW>#63JdolK+8z8EI;MZwR_GommbsY~e>w0b`G)OsdS?1oP(A z&vhi_{9Q0c66q$EoSCu(bbl^V{TRjhf4;WbG?#&f5)X+RCes9M7ml*}AdD{`DKnWR z1@7KQxhA6>ef0wM{N@#Pi^^~e;0R8F1blC=+(OWU{~R=nOBe7rz{*>_|M{xQR>`na zqdPMS)UtJ>uZ1#Uekdm!B5&i|^gF%9udWF5?Gy^8yBoK`rgTX{ZLiVy&U zc+3*7}~z>tOCX9m`lDS5PFLM+lepoKxtLMUOT zi}gy?>a?H?akQB!^yJ=xZTA`&4lSFQ^G7=Em>w2Uz@-H1Z_HZf(fWv65Mee9Lg%Zf z_68xfvU(vz0Z7+mawM;*)^Jw#Yx+tg74&{5@lw zXT!*Cvex?`3DeUo-iGDstWoxCJ7MYKA@?NdmgT;%%jVRowuAC>MuWS;Ry0CxoCj^7 zm@)_2{ieju=xv_snf43zQ?!%0+HU+CJHCdpD#7T*XS5GwzrkPP59+YKZr83kSG*!fsgd!msiaZT&@TRtP8NXyGUDD%90F?iXrb%OuoQW#wObK6D=1|Wi(-n5dll5))UqVBO#wSmc@t@b>2mj zXgs3edn-4p4VgCbIS77G2L@C&><_vev&3*_4c~fuIYV!8>$781KceyCCT?F+5&E_* zgD?RE$oNxdJVh`etP{ym)9t?SE^N`KG`IX|jLC}(_SY*Ok{Y4CG-;PrM^z^NDl=^g+B@z25W)i6JB!SXzJND8q-g35+F!A|L3K z4AABxpb<`@(EZPl?BsB9@vnm z)rUIZ4?pB!1RC@o5ApuW9-EVyTA@G!Ubj4F^4i>NXv2>mk4=u#tY`cH%|a-K^HUsM z@V|Fzm6H4Ll+#f#x^d9s#O7pIS<>s zcgoCX%*;2WoABx@m}6Co4gOP*=~*tkHj?yLH!FE+AjjnqiCF?x>WAvetjVP9h!P9kFNH$J^qtsvVifG}N6Zk>(6C@wfp?;+5mw5cxc zZdr(%R-{r{iOtrv@su+u=)6_B-X;|EsyB2Xekx{xhyyS4;FA*mr`na#ei9xQfAxhWT{uqISo znrlJO(O{f2$L4QHqE-I=v}|Dx(bWB5#d5eM>{lttjZV=2LAC0{97}o%yz{^s#sN2KvCr4SkvmVc z`yx))lrzYA0ZJg%3FVd$;(D_dg$WCEo#7S{(3KM(P6b`L?m*Fb_Sw+ZP2cO#sZ2Ht z{Ex+!h{SV(WIf2o4IR%%(|o48)Tu!mjpcdL_(rQz8Z(#D4{Tu6L*LdQmuDKgi+QHW z6(xj>cW+blz81@=JW`d^N$N@^3$0!A{+Vs5}w-OlKum;j{D=^CHI7V;tfVPUaUutQ5^-H|)pN0#9N~QzK}+cRH8f%` z3)hW``$x^}6atymrCRwUCL|Ut@axi%Poy!sN|h-62YtPXrg$2>1+RiP?=BpDox(ft zIjqN^z7Q<`()co|J`<_CRhztskWaSIA_T}MNZXHC1m_^K&P>PY0AnJG+M|4*&Esia zw+5ly92W(YbgXiF2y>wG|2#9EFKeF1X%`uNYRW%(uLE{?+#ODlQkTAJ`75MEwi_Zz z4PHrxkW3swu!#YVmbk#dq)L`Lhqi-Wy+Igwpre%Yz(~{fM>Z;_A_jLd8BG!6O0r<+ zqrXEh?NE{wSW_pzdO0p&{%s43%{21kmha=kIz3G>qnasaht*jcuoSL=&}u!son$t; zCj@1p3$m%!eMn9t*rppO%(Nyuo0TS}o$Qx#3et2jW5f4}~JT@hi?^ ziNC3`#huh2N1eE!WQ`$S=Et%264!W{ zXOJ*{@3TaM_^+EFomQt>B9tDQOUbrb4ol~k6kZ$@qed4+CSa}dT>a@eft%2KYU9B| z52l?VTxpq``vN$O?^u>r>wL~Fp)jY;qCp-g^G70!7?5UX8-k)mxkV*iHY}OSS}?*W zw>DO>bp6JP%@JVJM={yN&RrxB;P>^dQPk)_a}=fG>Z>&M3`#w7cqlLpm7%_)3J1SN zm+eEoTMtV}zBtrNe9y^^-ub`nfS&0A*m4p$A$RpkvSl!hH)5QQY=HDrE8_iGM_1I* z-#!jT)EuUi9~pZqk|M&)TcuVoq8%J{Tv&L+SfKJQLDjR|&kc)gRAlXf7Y$WcvYMly z@J|#pJ1!*NQCQMc!4M1BIf-@{QL@P`+EOhX<0ebV(?^l!UZ1GGRmEx^bwYRy=eIL0h8N1?*$b# z0CVMrtKU(7TIm=S*W46`2NsQ6fK$ZU!&S8QAW-9D2CI9CE{=Q~vC@FA@OinqX(V;3 zdiX*2t5GkcdZvy+rAHc9|}x@=GN6h^|XM z#H^`h3kx2@gW?i0zr|Yb3c~R9^<@?O zL)t{N@Vb6`?GVyC>4$?O7SiGpX{M>-(2_i^w9I6fd&4NFk{0}fiu*z!&7~~-WJ_bH zbKzV}chSEFbDbTT{WCjI1wwef;)KO#CqmuMGR}T82g$p~c5o%?n))e&wgeLQK#e%c z^Q`j_ySEo5T*dk8ZNfQO9e`yAN}==YE3i1`OieoV6L=1%Xs9#W;q^?pDO%thW>soE4WA6p4OjittDlL4h#}$4Y~aJ5*S1E-;pqE|EcM* zAOXM(Y|c|crgL@f$ip$2mU&crCagi;FgKD|)>lDuNn}%eG1@Zwy06Wq^eL>!A7vqc zu|&Ea>Vgy&0Gu)|-;1RB*#^;)q>1p;>HY=_h#xL)&;WIgA%{3Vk3^nycC=0R@8Hst`Ex|8oZ# zleF280rLKEHfBed8PeYsx>8FC89`pE&*Vr7=4kK8yZxGrc(v+?;`;L-PRVmd|Mj8Lh&z%I|~ebOy>4RJNXQ< zhm6}Zb5n&Be=!^AMS{7UZ_w?Tq%`SNjO#`k2-(&7aL?kYOAa2q^`_QqeMrP>ri+q;7xuzE!GmMk z7kvXeQ*I#`uR7LQY7LZUY6zaT^8~WZt!!wK&-CgkK*68z?Q}OnclfJO1?daQQ56u9 z2==l|7-8k6;Uc*#)rkre|9v63(t%~?D`?!JgH0U!lkqX#$S`M}aK~S_w+zZj;efMT zy~O$ALE=yQQE&w;t+N|4ief_-@Sxe(U9BxU4}ktj1y~r9nhgUOy^N&zyE}}WuN!%U z873W)({jDya0u3q7Xg>-hC(WVTPk2la!Mj z=gHE(r|=`MaIribztuc|}mCjUYl{IttjC^zYb=?&r_Mk{i>- z)FOdZiCAN_{abC*(=e4-#4_D;Nc*Q7Wl)Rz00}fs75$J50f)L71(Sk|eNt15UHv|; z^C5?pB>oEv5Qv19_7O8tSuMFi3|d;thX|lr;D&sEe$#>_pMSBShuC_t;_vJ9K$;~F z<^-1{P!T+F_8!_89w+)OIyG=0r5d*fli*H&kg!iZ2boRv?0`c8`pwbrZ)D6lqJdU) zswd4uy*22K4eT7|`7#{m*ZqeeX?h!Ld(ZAupQE}MM{|~VWA9H&@cz%lkW~u|oGyOa zJ`OM$MXM}3@T$=uer=;L8v8HclMGgr7PZv6Evl2#ut1*G;A;yO0p!FCsEr&=MzwrB z6{&Z;9^fJk{k+tesAel@7>`9yrcjF!ZLXxDjvz@iB5&7t4;Q*AmAdJp4=hle+!|OH zXH4)o(rD-XN00if=-ptxOZ~#XOhlh>LX#V!m+!#!_=z`I2|Qy-&W^7&WYxcstyx4(dLo zZqAK1Ln(E1EJSlzIr#7l0LkB#=+oxG3{_+>b^WtIbjAw)y_ttj&(1_-qHZw5_E{7w zUS~Yjq1?XPp<<`iSuAi(tmhn7%e8z zu%6+CG*dDP9B}IbXu_L3hl*Fr{wnkTdEelys#t94_p+R6%}@n)g_1p$+%Ge#22Wg4 z2fEJz=?nA9x&>o=HD7NNUB|Z8h8r=rgys&`m*zu-*MB+S;)@RX#-w5xj?*?6%(AOw zt*PrPR}v19T_<}moW6rlSB;9NshV(;IWOG!`BLrTovWGeK@neo)}^Dv!dr;ZJ&N=I zyxv3mk4pgia2Fomos`~Af;bP{k$XR&%PghlLl5MUscoZb!D29vSYF++g@Q5w)&RS_ zOU#jJQVG$q#*$);L?lp#RB8OBp*S?Zr*Tr2oFf&uKuvTZMW=Yy8CImal^cfEzVqCj$&HiDu z5368NeKl8vcCbt`z=(_~s&t6ijPB46S-I4IyrYlY49)qh2zc0;eLSOm%k(a zMrPXQi}(63T2-!0P<`d&_4RRoZ#6CfVatUJB6r{AdNPlaiU`UUC;3){1{;aC0{Z`pT}q^$tvJ) z&xtdfrSJ~qGNg)TV6v?F4O1yPJf%wkqZZUFVR;HgSQHsb7;9A=HRne17Fh}7u9exD zlAcJaXDtd`>szuzdDtHC_24q8ipIUa_g=wrP}i38#Q^jKwy}0ovIQMUm&|YsyWF+x zrorNkV$NNN8$ZS-Zp#tWK+jV@E$VL_+1Ue_NAEJPD(OZ;F@TLKHT zhm!XQ%&PD}eHLmc4U)0~SJ)dx8B8Rj#5nw_Ejza3U?j!=da>k!g7G-2e^^Q4UsEFr zW6-K8>{6<35kU`WdYkX?w8Oq1QZ5+gVZr_)%kP`VYvhq6*uTyAB^GNGx|8schklhk0>*8MJ)7TOyWbw+nE|1SmeWN|k z+#1L+l^>9Iww7r+dnIWoQu>j6a;PI$ygH7y>U**A+DH+J~*?tpo>h$QF3Z15? zhk+zea(^Z!$wfag68%g8%`hK%4mFq3yqWf#Q@6`LviLFhCRK5@9>sa%xj7`5i)HYB zZ2?wf2RBe30O7pO~fn^B8!bi&^Lp7tb=SUS=fMx9 z9zG5kk~yQWRo;fy-kQoiS|}SA12BTvdI+2slObxSYWYWpJEI7$>;jB{B!Kt~w_6qD z>P)Wn)e)2Dhz!jfrKbndz|?FY4D9U^c}FUYw@M}RS;GS|hq-G#9L4Lc!pydDiJtp6 zU1VSrbCXgF;wXt1&%z5sBi`?g%w6y-0@;Uz@zG|O!|{wS`B*khWT9^?8TgJjOH<9L z+4gJODSSR2IFAP5-Z|($F?p2_a)$^SYsQyKh2yJmpf6uzpP8D&l;Ffr@O%x2Xa=c6 z;s5_!NSBz)G4AA_lEH;Bp9|>vu!n%YMj-k(g z`UhwA7>xJtYl0h?5U4AOfHV|qK}0VV+~&>9qeT|ppx=Qrsz4{W9@B0Bv$o&sg7Jg* zZvzn}zK>)XnkPt{IqGHZVYA1-uEI~&2LWb+J$oIBH-zmTHRH!TSCpx=5(O%2ZPX3R zo|_`M=Q0<(F=GV(Z06QNv?sl#+-mlU-kXKBJ*Gn&^QJ(3a_z<|7U^NTK7ADCD7 zksh|-7VmtWam+r~0l5FksQK{4`x_kP#W-^YW4SgW8jyh|$Ch^hDi)ET)_H0Ag&96zEH>ryIg_ zLS(l`7r8I=XLmu+!H4pMakq{Ev;?+X&rvmXN31!zCe>-IrH%z`cJI?>n1M-J3Zne$ zu%lK!cO}6&_X6iNT_|gK?{0;CQgC{Qb^#2ku6T_(o!9bVr;Gw&REF2@hIKE*))Ybh zS5vkHJQ~T+VK;?Nm9KpX5V`jqtji;V~29|KNNnClWCP)g4>$+Fw0m@Qk$Qud*Or~t4XTli+OmCG<+B9q zT_vbIH+JMW9KJT&b*u1szB<}9>-;pqMv0snFG3(~$KmqNaViP;W^isoAB^Wfkp%K6 z?=$KR#v#N*ceBZ}@CAmB@0x*G+kvO>*>+xnbxmT@b+Eo>2*;YaMKrh)l8TH%&04oR zy#O^ArwT3Sh@Otoc)a;@qQMjoo3fa#Yy&)dyKa=Ul{4ealU=88uf+xUh7>2gA+`&_ zae14*crb)idkbEk6r^(jSiz|B&f>^8U`9K&`TU9pVUi6V!sw2)KBwDnOW^!)52HCt83$x7oDyGJ6<0obcF1hEXgdD{ShL{8jF@f)jlDaLEfC+7w zXGS?fh~@7sN0^#%dlp71BhVDc0(5-E0`DlckkFQ;VCP^I4kQZPS4eEScc+P$xVor{ zxI56x#D2*BlaowjyIiIHCGr?~RdqXbNbr@S)pfWBfCB%OYl#PjmSsjuASo8sBS>;3)F=ckp; zV55=86DdJ6{xVcV*v#<&2ULn_%`}hZyOru!E=goJGi$z{Tc$ETB^`=s6}xGf9Q_?Z zIW?3>52#R7;@1b$BlLT@(G*_ihTgW4ULmpkUrAIa49=qH)%d!yZMbbhmw+I(Al6Za zJXjHE89S%TFUUY#FnP`zNb5JBrPj(AoU32F-0)DL#g)rKC4-g821y-s8Ii&B-_q74 z!3Xn~0HR2%Mg0@Jl0V%EV`7(?nhHvgp;EuRzrAX}F_6~$O{RmDBf@D3O2xh#B-7G% zr=M>3Z)dr+o;eN&HJOUe7~dwKWls-aOa)vd`ql8oXpr{u z05?q16Z)RzhPEgVgv0yyL~Zt_jmO(->p_-Kj`B zEXMH79j_}(*8iU$jNICsF;|F56`2~+2dZ@4DgO!|OnRadF%k~PSA8S3niom9`GuwE z8kg7b)DiXBf-1nFohS(WGgjkonwh_cdvuc2mk#;@D75A+5gt4&^ggMK@sM6(#h&x(3QI$I+KZ*2AE(+%28@u%YuMoy|4frzg}KTnxVCvHtJh0EaUuEf5olUEc%jW|g`X&2LJrr@-^1=sIy zk~j95k`8i_A--MSEZXeS8p6&>6>nEwMN@)2yAF0{>`OVmx`Hlx``10kmj3RG(cyeE zshZ6uSGYF4$SN6?OuYAu@#lvB)&Phxb2p9Q~SZYl%RbSFt`v)TH?R-Vvwlq8Sf&XeH zQ2GUAoF$?=l(2MTE@gbhWLnYELiH(5?Y2l)N+~ZB;>WO6c)ez~rbOaClA7FLxYwwc z_7bo59XQ+RELK)uex{72^QQ9Mg?9eiCvNbmeZqcTXX&`qgbv0P)$?$Rq-G>g)wxuxr#OF zmt(T5J&t(vz!d4M6pDKo*vXk2bk<*StY$3`0gxueX6|1k1BRkQibz#dik<&v<`pC^ zG`@;X*gX2$v!y;|T`0Zhx}|LPt2BzhkC!hx*6sxAzP|lGkC3PBcQ(NFs@FAy#-KII zVwI+p>+xi2MQO;lP&NB)qWUcwdzH-06KxAWe`o)uJI|~@@p_WmsBJpOMSv{o`PKv< zil`|4m6XDYrOg{AZg3;|uW+k0#XRKQIB|&OoAA92qrGQzZZ=2+$d{y%k+@F!HvG8t z*rdS9wC%0pfRjg`V6A%T`_`J$h!xJlR_kd@AUInNn6D2Y*gj?eB9__}ym{zj0ejfi zUrb+ad;#MdU^^rII_eJ8D-wvPo=C9z%olxQbK}fK6lzYns2|IAdMk1$q^)Gk;V;O13`9bcpA=Y#{RG-!i0n)k#+ zW{>I=PR5h@w)gwH;#_JQ@^kB;G*foe?^^=bjK9NcdfPRFo7jZT&X-$|Z@AO?}+v1@3qNptw*%HZOsu<1_|79 zpO7MQ-n?qo!}!vRcl&Xe_~j|Fg`LBHxxsh7s#tk($n$9b5d0RZg)&RqnnMo0S^6+? zb|h3a^u4-!z2iq_>080#b~tEECoti`Ow>`7_>;4A;GdZIpDO~!u!a1P+%6U$;L_<< zF)9eIeK^qi~fdY?#HN}}3UwwF& zL<)uafL>4h7rssO8i!D7eXOI>@oV|96k!GB=$DxP<&8;ZD*myV>`dR8GkSkG^E$@s z$|Oq8!+wq$C?D!tjpMhwXNav2mUxr<16O!Bv_xBB#zAc|M5Md`H5r1plqQ`?QUtA9 zoO<3Cdz;9!IRI;oF#w(;*iapCD}({d4OW2Z;2BgdXlAJUZbl)71nWNagf-6UJR4I= z2WqnS8K#{NYYT;hrQmE=v zll((pZY35aTTgpo(dpR45?FcYWrju1HdcEi^TZFs+&5 z0GR-RZH_4HJ=eFW;1ANtiD?%zjO~rQ`Uej0YKne{z({h8<3v~~vC^b3nkp96v`EQ@ zfNq)UdUb>Jg8$1~Om?5&ozXUE1Eg7(yx0(|EJzAteG;^v=qbo<^ry>wJ1uXERsUAb z9rY8O_9IcM{vL-8S?Dyq1UaJRZ7S_R;9?o;TQiA!+d9PwC53G(?;JHam3b=!Ux9W* z$=j-Tp##a%;GI%9fTzM7_1nigTo5N67+l$3KRsWLkx#(;FaKLSNvno*xuHsjRVvdz z%N^+*i0vifa%IXo*`VyT(ZA&bZ~J=4_EUZ!susV<3Y?WJE9eW^ZuK8 zOH!4mVh&sfE2^bl5Q;4BU90zZv{m~yceJouc~tGm+WmeZD>X?Q|4ZZSlN)Zf731N< z+F7ituIjF1EoCsBxK?T%PnX+UCaaSwpnz=1dL-D-fCAwq$RNgK&WZN6dDz0K~BE$IB3b%xA8`J>~>aT%clJ4 zO4!8B09tiUtsobwOeN{~^;j8t9JC0@QU%Sp*}Jq#B%Ci!2kwEcT6AifjTFBU)YONiC5DZthp*x?^#4&9zMmImTDQ2AO*kbtf??N9ZWXl0lBGCel9Cu}}OZS51K!9LpY7z{a zRjzPF`xoI&sSQMc-9@&|{FIgb4q=$9;EBeF#yg1V)sp>A=%gvt=k?7Js=1O)^vgH} zYAh_aLmP(@{FJ>am`oN;Os-;u3T5`}QQX8|w@hKv#JKdjw-24B-No6>3Od$}6QuH^ z%m`XSokJ`tPob+Dr34T1prRjfCbe@lKInz5iu<04s}23i9$5gTqGb-Tq}~<&wVUWH z-L!2r<&=;RJ?Daf?q`sn`N>oltIAjq%7Bvoz<$rG<~<}@Tdhblc+V?O8lmJxw-6=# z#Dd&DTBfNl!jt#5f3sjLExb&bQEKf2gV75|NGla!6GJY*KC0WAR-+5YlYpgUdgoz- zt>?%HR0V>Dv9bgX6YAAj)wZ1$+)a%B(p+iSQpvvHk} zhS-Q3AK>U(QnD|-k>{`g|Anc7rl3Y=!hgkQ$Bbn1wU!Dls}}o2NPlQzlQ8piF==lu!!qTTxnZaY8UtPbC#H*LlOS)Mf(^ z-h-|#Vqbq^94E<>bK3I@V^YBEgW@(kxy*k}=359fBrAG0;wDDWP|{d?_2c7U~GT{nm48c-LflVXTR_> z%ECbd$VW;7gDBQUXUy?@4(OM6fE$kZic|BU6wVVsR?y$8iGJ#}V-H~Hd-56?OzjBBsjGNxjXQOCkx5yA=gLzUQ=qo1V5<+3y(;GXMmb+RtT zyR_M;&oazZKS$Z~d<4wRj4OpO7W7jK;90ykZ^n)vp8(;UVz|#8^`pUzFw2%0C`x+M z1{9OKiWrdZRf0~;9pGaCM6Fl-sxh}Uye0P!CXQ;@2Dz*>T#~O;x|NjCv*RX0TQ;g* zpFWB#3oUIQEDgKrz}ZN^8pOui=c4gjy}eYma)!b6>dSfCN%g zp`;A0X?#EeG$z1LwO)|_o~jKfjLG9!*i*Tb=M-&P*f>sW33Q>Nw^UPMg$!6W8Fza6 zwu;@*UuCN`Csw|P8oDQUa*yUuj}6A>U70g?lb=&iVB*oUjlQZvY5SD;lP~wXdstK} zTgcqL4#1l~`(Li8;DU4-L?=GIUiyI;rXK#t_sd}0WrRtSpI=%;9nU%Gz*Fp zX~RkvJ^CR7*}w=qlxI&F$U;bM=p2S0?yhl>wAe-)8}`12e!VJ*?Ski3Qa^`G!Hw5C z>^H;Q{iYso_w=LIBI?B+pIq8eSIv-F1hMI5>dZQqBFZ3b)1i^#`>Yq!PUUzkYAy2y zh{YSH4RjcHAX%Aa)uK_Fqd5FlPs6M6DA&k%8I*(i1CjA%5C^qHO4XCKx18Ilm8(ThYVo-=u_w zjNU`b+vx$a?Ds~?mK?6QZid{=NNzOZ){tW~+Adm(Jg^~kOQ{{~ws$vBq;QWIYj5cB7W zN9~zM7&@}YAi~zFb;N%gaiwn9`_}%Y>7Kks8cVdN{-|$K@oYGKeX=7Om+o56sbj(j z6QU2SFwD670c_-;p5_(;(He!Xy5Z6mJhInT;n(-8dT6FAEWC|TDdrZe?l|1a-J1iJ-9IXszfeq+s93l$guF-_+Y zrtxYv20fLbQGYPSQRFvo?+cqXcu3CAu8tUJ&RO|rI4>k2yg0x7+u#nv9wjnsGR7Xo z%vQgqUS#8NtaDQsd}TUB`udga(rDZyES4Cn$t;%lw6^~jW2$TjMwMs&_#ht46TdR5 zO9Mzr%^2uh5wW(PH|p~`iGC; z66sI0g`+)>I-6Yk-?Ms4avuDg^a^GeeyTChZPp%`Xtqi|b5kL5hDDtKTor@3_y$Ag@K^X~7^v8qFCF2v&;?Kkz= zocs@Ak|C*9FuTSQGr_FK3A-{_Od-rWtRM~A4}Q}ZpSL)hns|f#I;<^zK#ZOTOy7Tc z?p(#WaykE*#gIPtb--U08GW=&|AgfRYn_zRzlDn8Yvm)&=_vd|X+fVAVl0w14j**y zjQ(B$KhKgrgTRY{7m+Z!LI>o*1TA6fh0M$Mk9H62#iPxa*^h>Okz^sr+pW{5Y0@LV zk}_qn%=roDE70hLhoWN4CK6yu-*{)SFeHnzg=dkcPEn`C;j9U&X%YG6TdnbqoDKS} zQ8tVgRFRiTWUy4mJ=n@#J$moNY&bd5F{=UA^wPb*$)}oX*J--Tc{ccNLzFdyu?Y0M z6N2xQ#E1GF#*(K1MD8^<>cJ~FCZ+{T*9n5^7Lb}8ZxM!SKkKzFZ=a?Q57k3o!6mTV zw`5u9OOr>NMlV4Vr``Fc9I;CfU;uv1De)~sI_6vGVtV1a9PFTk&pNo0F|SQco|eF>%L z5X4*tZH&Ux8jus{vL}PaIT`p~6$r947wJbOCIl~nJfo1AQK!Q&?uW!-Q8~8o3N$eP z<)HAhF!$jfc9ldpi;F<7+V{?)3))Xg>0mf#C+h=t+DCDab^O{{BajpO=ap(BcTh<@ zVNFI8_@Xv6r{2C`QZX^MF+G?`Y{s(W_?jv9D>w35h$O8T`N=$`52nqQ*sx`~x=n~4 zXo#)tY-c%)x-ojR3M?OYv$#K#QBhlCeC@v2Rp|ka=2YD-V!<`RWFY?pF!SN!+orAg!QUEE(5J{k_qx8i#!mwW=697n{YInx(A-vAi8}o+I|;2Dd4&H! zg^sNX&z+?U>->0ShqoB#Kp$VV=f|qIB)7PW-olUkRQ0nkX*{XUs;d>L(&#Uc71{Qc z;zG-u{TttWdX^EhrA&Mgks|_Eq6z|8Vz><{CkV8GztLcYi;Td)ctvysKFp(4oJT)t z{3@E0bpgN-c0JKJURcvEus?L`-JRP!gm}^{C+gSW0Aw@ftVRuDf;W( zI<#MnOp_On>{LHq@tmeIyl%$JU8IOigiWHwi4%{MnTkXG9$&VhN$*2fG!h}OrcB~( zH#$3?)^<*~xWpcvxZy&glnRM*$JsGtoX(1NxjtSO#A5Kr2l#QJ1q%)lC$KiaYl0yR zPS)?)kYz-c#l=&CyracbAe~7Yk1nwjy0p_*LSgAbzbsq7k5>j(!+sz%EjL5kYe)8| z_81xVK_Nvq;h{EUI0Enb(uK90WxlJ#yxLK$9)|CM?TB$~v)!%+#VygX#&oTgD^MM5 z-bq3p3jYTYH#(hY0xu?jbKH`K)esS*30=3>SH6%y;1i3NO1d0yZwYC_OlD6P6jQT| zu1=X5U_{NGk40GN@#Y#c?I~R+X^i6^VF+;gpLMu;4e>Hb>in2O*9H%PNV21mD&E)^ zq@wEtDmDiL=gW|@o7nRP%u4K*$H3gohX)D51+P*)Y1cUPs~YNFxdKei(>k){36}Zv zY=8v1%IXhC{thA0UYK##ua>!sz+t%L>WF7lI{0QvISyv$=u*Md(#b~^$HiL^E(^{n z6LmLMpG!mdxOikj_0KXV>n0PRYzO(fJk@|crMxiwx}g?~bcw(43$>`B+wn|(iIUSV zq4_RZ+E6;q081##205YR^rH%>HYPbSS%LKrBRuvu!E8!+`s3hMjKEMvjCn52Jj1Lg zTkZq7nvNqkv0xc*1@LF=&umDP5PRp-<8dZV@CjF%9OYxxgA(Gt#U^c5eha-K2! zCCQ)o)SKs<`*I2!ETt8X|K$ixVfZlLfgkTww=iYGYo9UB-TjcDk2$_oc2Kzwr=r5i zZS%+bc`gLJLc-_D#nTLRWTeH0v3O0XF*Yjj9o#^^j+Z#snQsJ=)kB#Jv_IH!GCWBPGR+^A2K7|2=lBiE4s2+E019A{5r&T9`?8%>>( z2~jzyddHAxBDZ(@a3QDZi5rgvb27@qmf_EisxAalbWLt%oA)K}j4 zPB8tJWc{;`YjJmdoXF*MmFdx65Aax;ZBTsF@M|i^@DW-h@mDj~H#G@_7#+p4!OWeK zwn^c#`9jM#t8dtG4YrKYP=N+pF0u@2BD;~6^@LnRAnG)ChK)#MIX`EM9ItK+Z?Ad| zsUV+%Sxh?WMIsFh+rhTv%#Z)eo!Zz~XLe!2OuCU$z!x_RkeNSi7Uonc!JM8ZOVv&& z$??lVYQ4r8vURTdOD@>_i*vS~OFd_QY2vg>Kaq%4m~ zSis|WsL#fDY4%Zq+Z=+q;vGkZC#|ese2B^S_jWQGVcP_=Q`M($B*bK=+3@kX$~67n zjqStujCI6x3yNYMF=?qNRY9JO-KhY4tQ^h^wLa=bzyZqn4}4~Vj-jn56(aHjVZC+5A+BI7!snd^V8PekhRH$ zqY%reJ+mdv5)+waxi05fjx29+ir0MpCPGJZa@1~s@dFASCPy{2mq+#mNn1t%WEIJ7;z~7siiakVo z!r?d&ozc@totjaVF$m_kdz&|kEL+}STT`!dr310+?c9w3ZO)ccS}4xtrSuV#2e511 zZI8S{*9KrsSOXP0cqkYpyw7!y8S~3F*kzHG!tvzO6zm=D`rT~{NxJg;n*5b$tPgD6 z1x~l%?Y=}@oNsj>1bDShukr61wZQrV5~(889ggQ^?&d-?1vImbq9Mw}-z5$XUmWgs zRW$);OK>suc=h`*2y|JgzMCL$uZXs+a_M3}gXaeH>DqZpHS|uj--R#bGx=(b#-q`Y z{Oi$JD4^yKMv%#03F*RF-$|V>?RR@rI!{9kWiks4=TSU~ig(|kU|kd)fb`p!u2--c z?5t+o)H)^0KA>jl`&{>RO6Hm){Z~G`G3MX64I!!JtUUCQk9O>s<yD@aS@FKrqwe+=! z{@Pe=q(M1-9@|=}Q({>3@|8t;Uu_8}{c=YC$R3LuERJl-(rOd~;Y0bOrA+*U>&i%< z4MsiyetWW7&!8QkK&XD#zS+{^>lk0yv2-w%lLW*4uL*hOg?iR-swf7oY6tey1G^qZ zIJ_u<&?BlL3gCZKO8JV|GBc{4%RkdpOy?{%MF7;6xcqH=+?w@h#W?aw8el z+&x)J6Z(oGYe!*~YSKUK3}*9j90xwHxxDvy#=aMu1Iy{6o2|@K#pP8(-_y_(<_DJu z9ZFiAObF6LCWu?(Np4CmAnp6?1VL~o4M~t4f1+Tpr7V}tpV|V&rkZ~THx;f!A?cm{ zk0mX*A$O4p!};CslAEgyJo;omIy(!$9aaZwFP#j25fZyko^kZdg6KW^0s|8)at-SX{xINR`x>*bEqst$Xz*{aUXIjUKq@6a&(<=_Rm(h(%!9 z5{#Y4@&B(sdjbXQW zU?4_Hc@vdtXFn6POt26ux^oR7%qNX+mxd3=-Q<)rdqzfN-?DrRmA^#JbUj#wAe3&E z1@|yqTGF#y=>EkrFlK$H(y-cjL1weX>nG>eL-1b0a!ef8W~45H)K$Aftf2IrJz0g4 zaGdY1K;dL3#Bo0jvYG3|wKe*;L>HUl6+8%{&-N`Q1WQ@DA0S$?1~`}r5z+|enr1}SLFs8odR*w?B?0<`_ZUt4qj3&kR+d7xW#7NFPeUD4hwIBb zRuANXS6kb|D_&a>jCq|ar=-eVzdHpz$2yMtxtF%^O@Z3K>A3*2hB-pE!Pvo-_Hil! zH9bzs!ENHJL&Pc_d+9IM1gd6_M5WcWRle}1O?j!U3qTz;<@R(Ekz2~~P6s<2B>bklTTRXiHc+&&J|m5qeJk5isMNS@7#2NEa;kI{ zOJ<#u4kH71MxP5CX)c^R@UnS<&WOYl*eeE0jPG8HkstwgGIfMhqVp!At5mmCe4_I4 zpzTAZaz6#SUt6hecPoQ}d?jNmF76Z8$Wt&w#|BSEinPOkDjk*1rRD<5XED;XV7s7HC&vb4XhijoDP? z+1fI@RWj$ZhDLTaIGQ z%)=t@01af#kohV_?=pB|`IzTUPI;VfQNi|OD0a#Lo}w1z?hnOHU<-=-a`y}?3vtv-}^10Mr93MMJM~5+mp3{OpY&u=|mCU(hNRi6U ze^>VoI!^dh@nm1^iOBgPu`Jd{xk-hSWW=u-*5UXNc!8M;#qwQ`^q2-|E{;{68GlyC z88mYN8gCSySzlr*iXcy9rH?>8F!o5>22U3{*w3V6bkAx#vJ49<_D4%rz7^F*{`&a= z{3VIMwS}58y+;BySE}uj^C{Brh*u&7BhfhH(j-ZOvYaWpOmt;IUla)`l0j7q1v_w@ zU=K9g`%+J@ta4uy!DW*-1=ucZO4{qsu??}aXU5zTeeTO>#$o&~?^B77z_R=84p-qDd`Y)f6s{PP4`o46LPHA3o119ipt)2IqkHAVFg6BNm zsX7?+pRNZgdnpvIdD^D_nzenj!P&_i>4VHg*}tVPh6}ONU_^$D-75hS5==|2|G}Y# z*IqyKh0fL{dQ27W4k<_VR zprpT*+8ZD2aUj$dMnv{jxNO$bLmcZaFm>9>Y?Ik=CrSV}N@{=E6ks^o@}(3o{D-A{ z5ww>u*P^GtxrV$lqMeMdwwRxwOUP5KK`dm2{10!qpsN^QRad{)84zHyZ?6fyCY}kg zS++m6wbc8+_*XldZd{2&&Mk4gwhhgbSil!#r?tel;4DtOpRKaXPj;rC!|jU?GY=95?nA0^osw9646|gm6QMW!DVJ z-{kNA>)i^fuFOLPmJ4)r{gCIYU4PGj{u zA`^Mm#FQ(jO?{uUYYuu8a)#!@;#s(TZZ9&YKNZhNT-LyciWCL0TE%)JIA$R5jQ{1$ zh4R1M^F5(^2a|CLRw6GH9-Aj6sE=6HV|L!k@Q9-YD>s&B*b3)9e0Hw@>&g_a#U8bV^uAl=NUDb@<^I{a3&QQM) zIIeNE=mG($m?&M4T0H*I4-iZn4yX2zNn?VM zuh&KVmnUax-(s7Y|6?C|4<=o{yw!c>G;xn~|PyHK(g@V$@4kx}#4GUDIx>O`sx)#5}+FB_e=VO3h)z^36l)k@~iu zJvc1Yuk#3W#`f{}PHXgit$9a~n?bRV_9*|GMBWb#m~|eZ|FNg>J}NbO^0oCd5VKMk zs1GE|zRZjg&A7`aH2X*9YXrTF>8|L&(8>jc=efrhIEsjV!S&SKVens$g#8o{BN*GX z_~6CwCNM~CI1h2hsV;V%`3;K+`?V};XDXI4Rf7$On?ucM)uL5}bxa{U9Ou7WP><&Jwv057>}ihIXs{C{blt#NamGZsnVzF&orat$X8{od@`hu8gN6C zcg^B)Zz^az&&36Yno^bC5*hk7u7ASS{+sn~(Cpq(T!egg+uu1%=-xfne3!?y7_E++ z%^D$k5bJYoIXAgAP;^XKsJBX${h8qO$eaY7nqs~`uJZ7D9nAtHL)D@SWEL8sVx44; z#7;`)d5oAs*#f2JDVVc@r;JW$Napk$+z@5>{3WK!x{uf^AD1v+kjpG$6xd2>$^;HI zr$htYIn`VWtB4%{|K(k*5eU5Rt(jh~L}!=RGR(hWtg`Bc#fIg4!DOG?IO*Mm1FDNJ zDWrp-O;Xm|3T5Ah{_KPW{i{V?=cN23lvQR|S?@+a`GxiOV`1GV9O~(HWCOj)yK(^qh0*TN_2Hd#tKES9{0)ps6M)jGzQL zJZgB>W?9Fm|K7r`{yQN=Fq40@#PjZC`oEmtL3$CLs#P=)S~}2?_^-iF`cU1n zY-Gz1>6L*3KR4fF_G_BPGA1K+>z;$2R32)GxhPY|y z(6s7ICs)b-cHWpE${g67Idh7R@2gI)6b$JKr6WP>A9vE;?m*C(s5yVl_XskT&DVXZ zGxU~}W6~`d)toT?m#^g!mSmHcuZv&Hl;GF1eeOpp+ZHJONx#}w{m`bm{^(g32PGOj zX;pG%=~<3~QVUP*P21(QyG8@$?@zsBk$?Qim9S0u(k=xJe$KKZ}= zW6mZ7i?Y?rAD%+ZlLYUI&$U!C)k>H7Y-^lZIG|M?z->qUojf<6QKG)mu;TYDxoEs1 zMZf6kLE^-}Q9JRGO{lrP683&~u%mDW(m^m?3;F5X)^Z^~@2gYZ*Z>d6cDpg{O!c-!G zRiAd<`qs^1zn?1d+En;qcX?;U)R z1FK!HNqu8tEp^p&4u#j{R4#=1p1Yn`2^v^7=!VEfe}YRLUL3NEM8fYrg|~-r292*!ODjIC@2*&0@i#3()L2HdifS=u$aejG3Qn0LL|ftdQMNPFIkG)8>_ z)!#`5<2~4s?px~K^IexO!DWr;W{@ORQhy2i zuGWz5<@rrCniFQvFxV~hx07L-&Lg)99|9$jE|c?1B<;v>;W^}QQ;5BQig*W3L8gGg zxNvplpLJuL?VP0+KL3wtjK3EqWDk5G)&Q^Pnlf-;LmSsU1eCS+TF>{>^k6jNv@+X6 z*}6@Q*L}qSiaxqmvIGnr^UTBYIkcC~FEG7o|MHXR)-97i9Yeg)P2WZ8Cg6_BI})IvU=X2-Y{fy%(qmAADA& zsuXT@;V1>IiZMM4N5$wPYe_;UrqLZ6Ji^?y0TLsVTa}w)cRfy1Zi(%RxNEAz?971m zEiKbFs(H<-vzQi>DJw(+duMZHKiUPVK}yl~W&K5-&HOBTY17ODrnE;o;S#?nlz>9X zgEg@Edb2b|;lGabBElg;{^;AtrZ@rrRvZI0ku)!Ai&If{9&a#;8^=gUH(A?1o=F=R1`;;gg-i)(%{k?fxd( zBB+|MLQs{5FZ#CiAQJOJiGX1!5Fn%0i7>;0Qh3Od29k7G1+rIi`-lIddsd^|oUej2 z>e=1^%?j|jU2cXeh+ z8s8*LsR79MCBnEScL08BrC9hH)1l|DY3ouJ-0Y%&B_1)3!k% zO@d?@IPId}`q%BR6QTAHfGXg3y5El7I$KuZ8l~lpt6%*6+Qb3jkfy#p zSQnxV;3hgovDa@-%{oIB%4h6VL|6}_iu4=PL|f5e8x^r9>dm2TfgrO61wl1fs1f=u z{Jei#0N7?H#0_wDP_*ttbuXvC7X9Y@j zhMXAxUMo-2<7D;uFGnVEX4*rG9AI<7Xa!r7gaZb<6XAoCF%wlP?S(3r&`RGv8bLPnisMzE;rXzIg zie_{B_~)&R0g@-i;0$Sz0Y@O1j^IjZ?&gAx_HL^Jsr6O(S#|H~#`2{u}zkC5im_3Af z8F)e4N`Dvmkx%SSer#&TqrCdlF1p0=qSNlX!o+q;B?Ber+K z=K0QuGZzO!JKlnMi8xI~2lzOJcLqXsqViL15T4xc&mx!^3E|ErDrVpY2dE>d75L&k zUy9*ybI7vuXQ7z4;SDJpJJDLT#gW0BZZc&`zM^xuP`joROWU$*;#Gxu6%3aAeB4Tu zLRf8uOVAi^SB}!69I$VnPD%V$(uM_Iuca)Nbbk7oAGgSzI(93UxVY6nPTfU!*wmJV z@;t@-WHObgsOWt{7IDqd_gHHc(j8p><-Axkd|3tIxH&m`crS8Kn+YJwBD(TfkPk~a z{?*<@e?{jsct<3R(k1?1e-#1xJ$wK<$mKa&uxtqSD7T+7zD%yE|!*tpuh>KgkF9s9#=ebd!7V z@Xs6fO$PG!zDRC@9Sd+KXzI27#Y8kLDLrco8|J&I;Cr`5lI32FK%<``77A7zb(I#b z>75zoApX3+>su%ClfA9P%ZfAZNIKaw(RXk0?X~J|I3sB%7eK_3FP`ToXQ0F3s4&jzJ;!|?1DMA3 z!RJLVeWxhkg_b=YKzzwF(^p4r)`fKubdf zP0u5Z1d!@Gc-6@j2&`K(wrgCB$V(jQVC0+Pex%lPb*1uIZO4;j^$`W%+>f z>L}E27MGFM_<(A6mwTkW{U(pQpXaoB8&-_3yk_z~?EG;;p;6pp-B@}h2YN9+W5sM*9ZInanb(x&5Tfx9@yDMVD z%?JLui02wxQ75CazF*egLZhA&sJDi>@_N@noC7~eg&w><+(54Y^^0EkbLMMNPV6K# zVUyml`gpB>0RMKzy`#==J>OYXG+#WBY2P^xI#EmvY6*A5MM)~ejBf1YWP}<%bJ_$I zpJo+8D?m!+!J|e*g}3gWe+c=a!c5zQG0fE310`h|>ra0};Pr8qrII-OJ6u8lr2poN zv?|Xg#nto%AQct=FCRIB?Kd%mGa~1;Mmg7Ix<5W1C7QdP@>f{1L>rMYm;gh5qvSac z62GW%6eI2(LWb9B0AAAo#};Faus?mxx4*U_LwLrbaxDtJkU-@_<&p+@4u9}IV(Fj% z=)ebwkjy3zLa+N-a8L9b1AN}tOioJW8hj01j=PxRUGpEQSHDl>(&Rsw`>Ptf0j2P> z@_nF!BD2bc9CudM!}RpKvadGOfCTf_P#Rip7pUxh95ZPXn3tHX;jyTv!P~xv#UhRk zmL_z?>D3Iv*qZ*mRkX(@G|&%x&wZ& ziZL#`B#PVM%O2Q_iNS3N`TnNAYoA4qQr8W7`Gq&*ef!240vp*_lJkjb3~-gYiM?Sy z#O@DGL@W&Teo;^6U@gia?t%72T8FMhWO9@5zpks4>|F=3s6+NICByfu>*+n*R| zY|sY>dk8FOXe_S{`nQl)CCTda6_2dess1tD6VSaYC2r(I={u2OK@+Vo5%12B{&i)A&xCC{*pvY!*b;Cz4x z%?oB;s?|x9iT6F(w2+2(D|bt>2JLN{- zef*#i&lS7s#p3WhS-4G7|5eousMG>9BZF&egVRx1+Hk6s#C7V;BE17|DR7cNdV~e- zJxhD>(Lzck>_%@x8$#3*EVf_@q2|bOr79-f^DD^);AmA^$~{N>aH(=b?}clX{X-Ck zFnVJ#rMK+obR|%3>svn2sAA5IQm|PM7IP9UY78Xzh?NnLnOC2TmcmX1j)8eapAvZ@ z9=w&!yZ+C(G7O(?7W(W5FO)ls|B(r6%x6Sx{5vS^WP#^`)C%qoTd#-%)$Z!8kyQTq ztkas^^}WD9Z|1-4y22@^)K$XaaK}Iv>G@mrSQ{7sZM6>OuZBQ|`wd4UJMcTF0>vCs z;}URydoKhtV&W0gnXT1>w$9P2vno{wi0C(95WTTTNIPeVF$~SSBg_-LkuTIWA(COt zY4g^9ceWlCKHXiy@uc*&o3Iw;$NArk)-sm#M}S_het(-dK6$>i)5O;`lQckNk z0zvE*frws+M9Lw3)xY(R_Pv#dL9t8_H_Q{1PYhCbJ_;(rK9s-6sOanj#Z7d;=rk!$ zVU)82Iy5LW?>657v?N_;Tzd#7Ld3VE0|rVCK=BKP69&I#8c6Img}aqb1T_HMq9Yov zt2xPZPdxk(L5M~O0eh}ZbA~FmSq( zsbktjRGr2ix}}eY2OY|WXJb$T_UTFO;0bf@XbQ7QI+}qbu(%-<`Q!}^c0t>+70nMj zWx$mHE+~T_{H2RS{9SPx60t7HNOYFs3RKE8jD;AYH#-8xFhvBEwy*D4RKXLl?L64? zE(iTCe~W?brPW+70&;|At>MBdp1fgL)I4sAQm^7fB+uZNq{zM-cN{t-hj4}v&w5w3 z#c0yZnM_zDk)>>`nAe^N$U+-OeXz7B3B+tHz59d$g$!1DMM=9I*+y2g9U=cwy&Em| zF$R3R^%A9Gbg>CWB&ov#4c9%p2=ZK}iC}0ad4Z`KP}lIilZ^pGGtCjnNR2QkZWa^q z9Tcz?nq~+=$YAgaYXkWoY4^~b3A053IOy1RI(%c>wr$(CZFFqgR>!t&+jegMgKu!h z&!|SVR-Ik@WFgu6TfK}(*WoXWJou;e9w)h|!{J6hF2nvF&^*{bN*#5!>+@ni&H2me zHlD&5siOdF3DWrgIBNwOYyLbAFmcd` z2#tu{;GJ-B^C4MF1-N}T(I#97qRdW=W4>-2sG1~|H$O=^W$X=&L^F1H{*mBrvqNK_ zCX~3~y)!PSiEq@&b9jM6Z%dUj<1ZFk^~~aTLWZrUC6~tlK9-?)+*H>FKN~wy&+bIr(jP>qhd}v zie@fj%Wa0CP!_qe_}s^^skm7gKpk7MNgf5HsOxLmb@DM}?192U#zNkgAz8nR_m7%t zDFJ^l_$b&Z?0Jfwn(G8V9r^Nr{xyPh@;!HCY(U9$YgWy0%lvxl8tqi8mBgQ4$fY#X zrQV{s$g^G$s3&ACsx*3zYJ*ha>#))|^0k5B3K@lx% z^_9t6|65^FyxkgiijuJ^aD&i|5^|Y{mfP$b7c-%|bD38NgG$}jIr4{YY!SEN$34=f z=LZ>z(kFc;cOWIn?bIkHI-zNo=Fe~kVB}f>KxUQp(zhnWzu>(-l!_le8PLs3(f=OY z2kNrhStd?+FP|N9EdGS(B@P?nM;w5EFvvlP~F2Zm}WOj`Dj9m%aN3cZy9!%WC3PW6Qr_$*YMt33W{{)&G9r;w(ZL zQ%ZZXZUfR1&|pC}ZFEF!FQ9AUaJg?+2bA)`hi42FqGr&lAw)%*-YW1J$LZXP0?Uze z!8(Sv{Lwvj;hg@<;b#rhHBY}qVW`Kal)|oc?!(!Tm5)&xMzX@w6MgB>C7kv_vs1=Z zF70>89ysQ?64C-_2>D2MQR=#(SHL+=-K-$j_#uD;EngX#-|n(zTIdq7qdZ`afU(pYe6^IR z*f6xhmoI;AQQ0M)$XwBwu3S8@&XCV6cx+oLmKRev>jOGco^{@Qgvj*yMALnpi(+wp zXemD#L7D4rY(A)Pesl=UL-@HHt;qu{hlyU>5UdSh%>uw+0z_ClsL~l$!3O^2QAw6< z=LM{gg3WtKge#dA-&Ts z^kvMv565!*{9Q2xemCGAPY+n1Q%n5#kGV2@WWXbDk}Guxcx%PtA?GF#H_2I$5~-K-qF=@X z=M)5eT-R}L)s~}=s$xr(d7Bs= z+CN<`-ogZ@5(CW|T!wZ%8jwkH+qH|{{L}dxKVm&9>i*md@`+owYLFEY?f#pUE_loi z*w>Yu$8RjgyG)7uo&9_}1Dp8wWbz$4_p4vq`7dl9wr>@UbabipHYGKM#9hiR^a1;7 zGf2-K56a*7jF6Ngvsl@=w&4=3<*5yQnPsy7<8R zShd_gWCm+oDyI_Jg)rI9zynrF%rQ`hlUTiYvJVV|6#apjrrUe--R;WgM}lt}oUh^5 zT0sL{KqEoFXem)7P)gLU2R+N!XQ}YWw+}z1pQqZd6_0xGRmcxX4rK*<7w{vzcyHK( z^rbV{ApIGOy0f`c6#3 z&bFiRL;av%5QKqVwT0RH>jlVp3qq}vaG^!KUd2-}m0piRkFw(NE0&UjMI`LXLaH8jgakmQMoxG)UZ=X0z?buf+jP z9chLKD5h*3`u$pfquN{gjRsk&>}QU$O2H$hyGd)F?f!hPelm1fTf;Txqvn zx&L^J!lO0E5ujCo#Ll=~XjBRr`9S^N?S{9n1=IQ=D^lAYz?;HKpurE*J(cw`Fu!yF zcj4xA2sdcAc^F&RNw?&6->*wqhkl;Ov5OoNP?2@EBpkFQB?&(-*S{E9z>U=`WTWz@ z#Crn4@ZE0E#GqQe8b*Yb+cB6BMY-pfhN16m+orWz$PU`ZJKPiEgG$Of zWo1XWbN`}RN0j2{COTbQL8CxET+-Z5Y&q|*SYHAphwLU~wexMgW*myO#?ZoasG8*^ zQ|<~O_qRH}V^Kl;oVD5OO66c(&L)P(V=>R@Z{gR+7}*p`5li91mDaRU?h0%03e1Jm zcdT7tW-{3LP-!7oEwKu2j(-Ve$yO9wUhiTpTM_?uAUOu{d=(gJ4Y~>zegQCGg3`Ag z2VFM&64$tdF|Vt3DXgF{wtl!U^gzsaSa%W)VGD`PiXO^p?YoryOEa@;GCxRii+2ON zPtPqnI{+T@hpybVW_Vb}H<}VNNtA=}-ql{^F^1z57ke7y_~G#&C3PJoT-(`_ynw-$ zb|^JgM0IZ_3|S`ElH+SVdW@RQbQbc9*`*8K!Zxm;0v#8OfSFcL0-lL`{=Ym{JbDHN zyi}&HILcmFGMv@hqh|f$cZ_n?M0alH>}6tslDXM!?F`$=evNS1kia>~p+0&uS3*(9 zXVLw3==!l}D_M@%;fKCa0i~M-n+a!0c&Rmb$3SQnAJG25U>Cx#Vus#tC{Vo3ay23! zUaXZ*sbuD@2fBQAFLVmU1RKwCN7@>RmEq2ktDcPf_G77E+!Ye#N$tu48~r0BzI3V9 zQ#37g2D|91+J8b8(e(JjzX%(jhFL{BQxW!gf)yYOgzJ6Oitl)1h(2dF(yfk48FYEE z9kVts!`D*@`u?Q$x~(L%2Vkz9b0TxMJ6n6~jf%w`lC2v7c_SFZiqDe^|H?@K-%>cR zwS3CzxhlzDn5$!-ga3-5+3+*nMX*4e7YH8D?|v};2C?x7@JM8nlIm{7%sPh% zDJ)w&XqC9*>wHm|CcAq7VS-nFiOk5Zz#~qKay<|EX_Sro=GgY;uX=3mh zY=q`$ex^qH#>in0&<`dRWd819>Wf%5a#DKJ0CP6pp7NY$ul>+%*65d9uFncwKVR_w zS7X=giyMwV*IZ%JiX2FK;H}@qT#@nK63W0>T@tn=v_%_W8FepjY7(q!vjkDANHNGW zItrV=x7$QayX`eaB~irhO>IO;mxq}|Q>E8h;jJP>E72nItr^&{{Rk4x;L6CP(fKoi zEo;{^XfL{$1U<(oXm;x0H)Z^<`SO(DCcixdxq?X!2@F}}{m-!}%gWaMB>YQI$jLM) z0#8XG-~L*?@M}gu`2}XFfAdds#|SrQqr#o>Y|x6Mv8ad>N~iEKtAud9`;0VEvNO87 z_20rNjte{@iG|ZYfibSKKTqUSf+7`p!@%wnNoeEx57z|ifh|ZznjM&@_M~XaMAO&o z?r*K<>hHH7Q|N|>DHQcu^Z~bP#8`<({>qWbq@SXgTiB=`gYWh6AJ;C|D?hk#bCkY+ zia%EJx^PZP5{Wv$>UK&L_dw%wep#U$RqIIoxn$mbwg}I-rD_d$WXJU)DJFe;Z*X_X z#1QO*>w!WM**Pxgz)AP8M&|*|+9CKaS6ir1!9~axc+46WK$S6CPpo4`R6@aS7D*d& zfqs~Bcw3!Pvk%AQ9sD)7XkmPOC#!o2;9|wKODWc&0ep4`Q-OgixhwZ)OwIdK4qm?a zFS`28bS^Q|2oKJgZlZ)O70PXRsKOKU+wla1D;dYUDSW@y6N~86BAS|fe>Kqi>lW6| z`m~CC1w7&qm zQmBBkcVDH(GH_4e+e*BQRu)MMnoY1+m^lEoHi@>JJ|Zr6g++z_`Hd6olGGnHvY8X; zG5dFw_f}){Ae^xNxQ81yg2e5wEG(@PTOcfS@LtSB5nN2^S^9BDsn*9dRv@pDnWE5S zL#${KjFmY(?|Ww45!Y|P007l~Zb8C*g{&XEWSX0iG_fu@e0Mkc5Wt78VD>&JAIBn@ zC3(1~`T5;vjvAJWE1NzR31bLH3VX2wyhsbhmwD_KHbw;3ov@)Qy z*G1I}>1B%|-)&y0N#4z(*&=#6B>CPqSJ&HdRlXE%2fWeexE$7|{am=Gp)S^L*qlYz zW)kKGU|`nM0t9vT8l}qZ|CcK+rz9}utvG_COs35R_l>D{*4w}TxntL{uy)-RHXUrF z75X;|>uO{|NX-VeDw)WE%J-)u6Bf+-_cpW5yTM^zA60p09Do3}f1)y_v+~hBJ|2OZ+q)u}&O}H8N)op+f-G?9ZJ;{4=iRq)i1t`_U|#t# z022WREdlZc))|`Sm=ED~#4b|IfZ98FHsMs%v60Ofu-b~8@m^qZzrSJv`^!s9&>$Vjk!JHO)*it5W4s_?_CX++f1RoUU zvwC7AoR~qP2u;!x%cGez#w>hF>~HN$5nh2?Pe>Q*R?&l9=XznO_;7{XM=NBxXAylD z56IWJRobfo30%UXylxiyu*Bg_)f3Y~cV`8UypuGwlXLJ3P;`=o{qq#Upv-oz7v;M_teWYSk-_A{1Ske(wTU6IutA3DoR(`aG3 zX_oueiG6fck#Wj(9ORX+L~4KG>12wvhc{3w^n?hq41KX*oBaLHSQtFJz)J>wnusil zTlqfAMUoBT`(}{#T?6nV8$gQ0jM_*Y*>teOVA9aC-kYLFLXSwHj!sZ6UiFrt_rQP3 zj=_6H0JUqHf6B}*!D6}$tE1il-DE`7p98j01iv@3B=HhA>p?Hi;vqquwmg;NJ_j>x zM6OI?1JrbnNyn&)VfYqXzPQ$W%~K#gGCYMJ*!>V<79ATlaC&O=OrDE4Eg3;@h)weH zHJLiq=*d~6?<1|VR)LRMyngQf+=7oEvb&3vSJ}p0r}y8ch1n>z@Aji~26_+jA?-#2 z`VOIJPED~ue1<+)KSM7Z=-sEnLoimmR^+VnKSM~c##Pf&Sbgcs=OrTVQhlr1_Cn{< zRL2+Q;Jy;NA8{cY`<2Gg2@f!%Q7Fy$A3D~(;R|~%ELLDNIMdEpqX>Nb<*wy3w7u4_ z$bVhU^dT4{BbP@%>WedvHugHhtXa%nB22@e;c`@D?LR++LdSf_3rrZqHgvckwb_1T z$kT5kph_d=aGQFAMqu6lT3GH(;4oofsES;2PuljugC$RHHZQpU#yM}Z6X&WgPxM~h z+l!6mGs}QMv_O>GTGK0O;lc%-ffz+KfpLbM@=XCh8F5)5LW3Fr((=U+;yRN6wv=*^ zJIOmpfd<#p`XefRV7*NgXl6JSUz6!8OyVY^XbVs|J%GxixyVn#6fu@L3FNNkW4~l= zj9r1Gvwp1QmMMS%I75P~g^MSYkJ?iBnYIK;-qg<`@36vS#yYXyOP&P5E~{0np}%cvlxSAtdH61gn;k(+Da>{( zOozCK1o~t^_bT6c!hr4k*prjOhwJTw5E#jAZLhN?7{IrIb7V;5 z$JjYQHBv{S1AoA%SgI5ibf7rS+*=xd1CP0d(oBU|NR8cicHtK<--11Z2l!3x@u6%( zMF^-a0n^P(_!1p3uzu?q2La<8N>jzMKB6IK)yKhCwy-G}!rH7Iz|#}LRsRd?EzK9H zR)FzAge|~f=js@KUDn3~_`u^Cb*4na#00~NB`%vz)F(UgD?~~ab};APS)2ZZNwl#J z*=V!9Xgw;z07uOJm)GUISRriKP~ie`#p#NfsREew0a2Z)LKbHOAK!8qkH4P_`x@r( zd8xJ(lZB|*MH_MoBNoDMYUZw)bIrJ@G=-79P%)D>UMoe$WlQL7rQ2_v$gC3frs&B{ z@OaEs$nLFt2PiMt{WQYs86J}&2AI)Oy|9TY{46kw_r6C0+{R2)gI(X#DCWIItyv#z zq?lO3wPVkRUan0!2HG3Z4mA;wqE7!PzLUJ)%)-kAdZbh?2>Jtbjvj z=WnvcIe6gjmocM)*^XItGoK#iKt>_?9(|lEu{c0moAxVHh&c}))qPSXc_fbd|=^r6}q*6`y#(RQ}6A>t*HZyui8w$0imp#M6-fH8iq-DdyL488FFte5&BvrAf_O?92HZw@9*f zB(Wfh39`Y|1D4Q(92W+h;^6v4Y-Kid&5yk#Ij#Ko(@TU~{lz-!ul~%*FNaxL#kKAKiBul65KYqa0T36lEr>lK*vyE%!<}k{5(x5HfPqK> z5O4!nrXFW2 zaK|$s-zJY{m&}Ki+c&x{1tqnfUlU^pBCd%DkIPvy@!83%(`r)DoTw($Ma_msL~~@X80ETx>=%QW(qR_yh@?i; z4CXY6&K+>T{Sl~ta2=f0qXkc`vDaV5MGSERg2s}wU;zpPlioJnKc6VPSF@AFtX<44^L!lXECjneY~1Ie-FEV@+QH-$)fF3G0>( zb1YGz{8#Pfxa-NS9b^x|=NLuW)dwn&tZ`zr%5dK@6e$NE*oAZvHXh|Gx{Tb>Dqiu6 zHgW+4MhVH|4>ne6CxF+akhw(W0r;uTml!ygGgp*Qi!Ta$!3^91`y*9~v8>}~qVgUk z%g;6dTaRyI+v+5w#mQ4x)<7R6QSS8Pw{wdAB5!XIjXNT=gG7375NMvDA1d?M9O=)Q zg-AIv>jaX8D7=CU;$+b<2XEVGwp6a`zPljXWB*f=TJeU<{DSB&ZzylQYK(11wy?^^ z!<_#23Nv4zb=`>BFM5d~*z}Z7sLN9gwr6Hqp33;8F1e7**g6Rf?e9#Tv27c18)S$~ zj?d`hIZiTkMF1dw+8g?puT_j4x3k8P5O~mE2BBOiQO2`n z7h8tPG%4ti7ggR?noR_Tzb*cDUE?ZBk=ISau(pz|2>(((k-ngXs`Ofkvt_nZeqTH} z*!h6t4JV~~`S@Ib)nm`+`7h7hWV4TnkQb^bo)T7!OcjFM0HMTHd5b2ztY7}~<)A<2$(bxk0N zy$>~!KRsMb5cT5Ly$yiWy0Emf$#|($-8-~Wg?3KErgcwUN(=}p=&x7Pn>*(dO86;r zfG>GC2xEd%v@lB}>YN1NT*N2yTO=qW1;iac{Hk&hNV2?l&r&Zb-4g#@ioq|augF{T z^P(UBx=Q!5v3;nYpcp(>WCdv7XTrcr(ar*O`_aKct{_v8D-^M9r|9tQE;M2;;QTv!yH931I$%J>q{@B+FUX-l8XsgQkX)M6TzrbA||Trz5?RuiS@iVcx6A- z+xLpRsC#hSf+Z37v-EHA+-p-9Uje~>TyK_@2G|$ZS#&K=IDvEO!(a4sVC5IwYB0jw zt*UYSXQFPscHcA~+V)BEVR=E#Dwge!@_^(-*|x@FvZx>*u3;DM9%^ap?VQ-@MScSv zI8=@HF5a`C^mpAzIa^y)Cy|?XQbwp8Kt7DY6y60G=1x5y93u{U;s?U}{wLmrihSu0C6Qt?6=EAv~jeDJ#hi z>QN(H$9>D5rsPt?X(Uc#++wyYfPb^*Q0nTS8|%GHFk0-BPBkelrqFQ7MHbLubrj%# zO15&)i-T!N8~0lUUZE4DM>c;zjUHS+-i@7jV;5y^278+Xr?3s2KB^B9l!L{Rq~3 z=#%W@yEBRZ?tFg5x3!tjvy^^-i7aSTP3y9YRNi=mVxIE=w&`o*9QkA%>#IO7U7KKH zp)PDcTMwEr#YEJ+tvG<05>2cKpPZY#TgG{zAZ?kI%`TI0h($%1$uD|4f*+g8Ew*f5 zly*fnP88d&BUUM+RcYdvzPneog}3ipppwW{hnoE4;d;Ah(2Wp3z*+PO!oI<^WL{lz zg_jCFG*R!*Hgu9h58_pban{~in9J;Dqn5l77Z#dX6OHu@K`LW$v*l45PDkYIP;ASX z>!k4^`Z!2R^0db{NUWhiakdDZBb}D*5tRE2TGZEJEl0*Xh2~Hid2uA2GHUaeG-KX} zH-cbaPMBVrUAcrBWD>D0N<;nXvHf{kdYNB@iL9yMhOX=qHUn!B?{=uONwKVISNC-y zo*0W}1p>A-cP6yWcnD{ad)wt-ZOl}%UF@VCb$m#gm}RROC=IfV2dmrUPYXv9&fDEu z5T)TN1K_S>(YIOOKc~fAhS0C!Y5u_nu^1RJ1l-(PL$wXLF(9R=NSug?K7^VMfxI(~L3H8-ur+3~k%L`a9$EZb>;%+GmY(c- zw;cS~aSa7)_L&XwbOhW!@cA4aL5JdP+*eUoam|PAUL@(-GpJ(;PdO^L)eOdPse#w8 ziZ-aN8AwuWO7nZ_fzbd)4lU~AK|VpqCRF2}ul8TQP78nVXUkG?eB#67TKFnzj0-sS zqBy(sRxBFWVlter>5PEmo9kr`gQ;lP@Y21w)CTKyZdXlygJ%N#qNnCGUiU}Rii*GT zJ`F)T+3k8z%9rRA3t;0c_e*E_B6;>eVGIciQOodRurwZ1pRnu%=P(5v}$hqH_F&x zrw^1FIusFg1BpfaQq+q6RpF<^m!aWwNc(3+@E+EvQx^F6kk0WsyzO=PO%@DJVAg^L z_VSd0tzGrBqh_x|WMX~-@GnTu+kIQefy>0kA!lB9RJ6PaAqcG)cVYBRpNXEIc0@q+ z4X)>&W`Fq@a?ksOy>DvY^5Y%_X(>U}UnfZlo)+UoTs7>t5%(B;tA>zHNKSuO%D+zA zf^Lmgex&XOSWYfXa+R@+>9Mww@vmVAM)ry4;5znayP)uSy8`aGZ362Yc1onW`!J5n zmTI;Fe{V`~0-y-npB5mzd{i4wsC#`HFu{i&c+_ET1RxGB@o)cwR>Gv9g_h>cSCKc}H#cw*Av+=T2PLQS_WDJ&ndEKiM%11Ga(~Nl4;^kl9KqJa zg_9Ot((pX+_ii#WvAW;>aFgSMI-6R5B%t1oAC zUsFl`%seHg>Qrq@lqrT#_c*P2(vpO4yuzKTRmjG>KcH4aYuCmh2#cG^4GUcN;~&0! zU39|!)166x+sz)$0j_{**Ao{i3@YqcSe|gghwP;&ra^-ubJRS>&g#1ik49B%`y4B^ zn3jW6kBVGrq|Eh!jN<4_>_EFRy`tbPD8~wfnOc0~3K^sF&09l$GpSzoY1(fC_ey1W zD`WdtGmpMu)Vg27#d(Z;L{MqW-llSXgwbvAht=JWm5W>_fwkRgYJ6H$>06WOOB)BM z^W+ZE(5*a7mUFAd$$0{1bVp8PEmVd4*wlf6U7Q?$|?Z2P$X^2lwH1U2eBl4HhDLdV_^?dsF z$$qnYBT4-wP$m6qg~MtH07b{&dsp!+%b44u)I-V1bgs;#m!Ak9KIF9%#gM4IdUa{u z=w{|~!|*C80loH);1ij%_uhP6qkYR=Mgf}QPFD}?hptXmlLcQ%t{`QCF&nX1D{dgB ztMcu0B0_I$8B2&i#Z!IN$oRUF4IP9+bdIYfVK4hxJ%7#y8lkdYMJVwy zhQXh};A;lin^GQUiN*Svq(o!Mff;bO>uxz(Nwmqr`q?^|>IW;yQa6*n(e|LWl>Zcf z1whKFp(r0#Ro4>*usY02C8gA(CoW7uO$>2mztO!bV<7!aB{^SbcKJJXcsSB4fUjnk zs_0iw!3lk#jCR%IYp&5D61^W@T4N%Q{aa3+q})zjN#3y>UQd@hSa$6Li~d^;&){)8 zV`_Kz4+WZLj|pfQk4y(7Yvabokgx?o5?(TpiOXo^GWV8P)PhjWUlra@5IIK3tuD*^ z37IOT%HKUc6K%nyU5cNW4?9KhYYMD=n1+v+5@**>hn;eh1RzrHMw!lpqA?V!iduHv zUm*YGWF(a&Pl>QRSt573RTb3$YA}JSJRpB}5WXqjAv@*Eo)A>nt;r^#u7PZ233Va1 zjatMeTmOp}yjwsI559~+16r-2bgC@tdCusB=zx4c@m5-P$YZ|{GfLyW*{>wQRe*r5Ew`T@~8|3Vm~%CYilbBIK!Kebq=$B8J(DN9x}O<-4^&;qyqn!ccCDcnUiP& z6J^b~aAiITJHl0!E8D3Bz}Gfkb%cd{=yOT|!t#GGKi*yxXq_j4LwPzpv#-+(h5K|9 zy3sa9j&3k1R?AZVtjptiyKKC%@IJ<3R&90xy`mSvGA_-0$m2N-L8ys6gI%imeZB7^ zAoHto^%}*)6js`VUAJDsI`=yDcGA8%&xS@@4V}Rl0xs(q33M08Y8ICsWKrvqIWjW8 zLzOj44DQC}v&ZH-Vcm=_{WS9~px|UZp!vAIeYUO`WQK+`b}5igIxY%$UmiVrDe+7O z$c^Dx2O5whBoMTtM?LZ}D-TL+G!LF^EP$rS|jD6?>2cD%M7Ed(+tNfgr9f zt7ma$b4%O6JSdLcVLyiGt8RVv<`lY@!eMU>?5 zD*z9RND4=aTEe2A?xr4fSagk?NfB#Xm)_QOuTwY5F8Ag>^bM(SV3=4y!^-DI@ycro zZjFW3XUSUp9^Exb0gjtHM;`ayJr%NF0Eqi$QS>K|V5O?9F}92DXQxN23dYr9x&o%| z_=wvl9;rYEKwG9RaArmy8kg_hBvL30+B9nn?w-zf!`t`XnN<{d-c-D86Fj_s34tD~ z98***$;W<*)_n(A;`;&PdyM0OEtRsw~QMGb!gE!VGNQ*QhW zri~V+`iD>2KB|!~xh^KXr4lA?2b=RSw`?2$m)KM@! zM_J(JjCwnC)!c+TgxFR^Mwc?FHD)$TeJ0O}@5lvz7&}rCYj$MiV?klNMzdl@U(kp4 z8H*+Mo3~#poXsb~<^AHdcIferAWOB6Z@-KGBW)I+*Eg^jAHG*D;lDg${`kUILX~r% zAw=ajB`Qbqn>i$r?E7hT&u1%yAB|Z7k(kR7(8bW`UD+GQ&lL!1(kH%2NIB5&NWF{j{(ZA|foX zsf%SkFl%+MrQ&|c6gktLG%FOgyw`%#9-(p-YJpK{SZdwIuuU_8#h2cma3bCiJuUy| zsbxv@B*%bg-DGBIdD%+P9J7I!ImwAeU*y^5M9iX{^oKI%Fd-kHIxFL?V84uO;wH|a z`#y#neRx{5hclA(@S!Epw(xL`41#qVWFa1tc&!5&&O%aR=}LVu`(u4t`-<&V!09)d zxfPc%M$4@eyqtj*C!HYu*+jB;7*4yg6WM0$B+;jT7C!^7l0zVX3r>bGB}~eAgpG){ zjaeVMi@Xj+_0c6)O!*Zgh<~`CWT?cEUC{EaK5FW}yb^4B86Ab2eLimtNevM}q03e8 zex1d3+V}PgROLZMR=T_9yr0U=Pk75D_uBiqNj#52EE;tJKDV6Yf&>U@faJ4hXGW*# znBdk0F2CD2wrBcA}ndGS(yh7yRMy=9cFruwiTu;Jc)QF5J99^gqb564Z$}avJ z$~>B{C2x(;WK4$%N6+lt9e?QXz&#CaTHcF7_LZvFCWRpGgGRq1EY4Pqka#Fd`VwI=kqVmdH(=UO{;`=xe0s?=mR*37;kw zJg9XqcrvhfSU{IK&!gQZ?8zw+m|Hfj;5~SZg(BSbnFbRJpQEW%#8Sm8*vk?MgdCU2 zy!D9rgNbEu>kdyeB8G zgK)ri7O$V}=$em?f8!7ztYp+Uj5J1Eg1l3jFa?Q9zP+ha_2KQD)|_p7=m*noE=W>og4NHN6Dbk_%J1tLy8_|8aSggqM5d-#!=m+9VuJCon;D;!+q+% zjb=(mb7)Zjx6nJ;EV(!0MN%6f`23-}6J1}+P-2#eV2y*@ougj%Uh_kst74$u%>MDP zhbwR^)(hRgb~YmT+L@`H@~c`+^RbCB!84qM5d|mZ`5TKZdd}94ks8mZ{(#e^(gwyDTEL7Nrmj4_e~-=xBYQ*-9e6&f%}19DOPqW%v|-lbk95 zZX6RSJ@b4&6<3C4KTK67(rPkIbXPx3#P*dDIuarV36*SOKkNUM?D@9m1)|pg#x%1A zDUhcIB-q+@K8-m^TK>(m6h<|sH{W9LrNR|gTP|$XFR#!_Durl{Qb82^+Br>;13u;v z4eCwBSCCX-wYj^|#vsPisLbBHSx53i91KhSO{dG}I(|ybs@!~UfLnq4WRkr;>wigO z@F-kjgJKjFe&OQxxDtrONv!nqHW0xK%+e&(@+8n@Blv+&t&3}%ByeFfZbtJtBkOw2 zZ3Uy|!Q+HmH{|_ zPP*P5DsD#^edw9CHYd(AS$eU}v{b7@BkiQ+lK;_+(Aqi{`14@6|EsKHLytRw?9nXR z+4bIMT!{T@x%k9$#;*tg3lcoRwl*IRWmH)3|! zM1pC)F1Fr=CfDq(ZRjR6S8h((W~D^ReK_$qVNyj=%7P=r_1Nx;ZX%kxx9P&HWza@N zRxz-^ujxUK@vZ}o_f#;^O$Ajq?aaJg1z%RS_K!VV^xSTs#Y$lD7|jbqPv#%38WJRB z`mb{o4=d;oNBi!Kf2TMEO?#dJ;rM@S6N$9E+Qx3+%~`1JNb?4S=( zNbaeg>&46Vxr8L)T`a~r6>Bev9wg7u%xL`N>z9ZuT1%_warF*Oml~Q z&$}4t0OFLl>e-v+3E;r@g(VF(Lh?ybhE4Ke^vK8ce9sF8f*eBD`iLWY&}MVm&D&`7 zxzI#Swd8yt)dBFz!rf_JU1=Jck|7 zP03fVgQLgV=5ZBzbOJ7Q?ow%i!3}M^gJf<&*nmX^Y~>fQjMaa$ZTcV!pSxflFn(3_ zT8$U`_Z`_9;4#o_n`~txzjZ$cHbI>tR$lh}6sCgNW$q0==57NLy8PTu(F?|(R~to3 zEVdg&5Rn@?^i0n__6X!0SAH`h5(=tgCq}zF0Q}vJu!D9rZqX~<1UIDd@MT)*61*aTMM>O45bGF{@;3WN0 z;}0o->Qpb70`-I{U{GvB9;rD?G{7<# zxyQoCv8l%><_!3vNV96=B#aZwNI{~|pRRr!1jxH$lNckbU7fkXZDsz!a=c`c0XAwk zrc#su$VEg6_kp*~F==ZPDP2vRPIl$i2o`2`a@@iMaZd8jlf}99hPqv>{C2n83?G#A-kCP+2Z&=govOiS305O(R6ez$Gxrp<*`Lf8 zoe-B0yttCAcQhWy2JZ(N;?u{UfonMNK@bCLU_erIQB@VfI!O#0V|w(TRTio1#F^oD z_+7GhCdJk0(hIeYg}wRiz18yx&YoMk7b8w2j+DBSN>)wcz4`%!xi-R*8XeoeX6ii_ z5ko_)iZXi+_mW~Yfoo%DU5gk!%T2Pxh8!Pj0Whz} z6+zh-EQu6QB9)9e#jt;Ip%$GfkqTUNg7;7{p&#;_4@zl;2q}+~>ES|WtgkCaLBIGC zrg~F7zBqr?u1Z7bFFvUT_KUGDeN4<6)o7VCdw zX}J14u|rBJav)xUa?|nK!8WrHSqsyce|=y`vStg|D|R-JpKas$t@I+KO&Rk&`F~D3 zrQAWAp|pt9QW+{b8i@Uur*eY3&Wi`E^og^OFYBv}sHRU-+oiKV^QHu~46GTPeuEcb z&nc@2O{rs1Bc0x8lpxnuuVqY51J`N>ivBw`INxf9vaXU+1<6;~ z%JnCjlgc|UGV8&ba%$j(73%%Ua%qfPDz$jtAdIxTO^IZ{tfPN^ zkrs>09Pf(}!yD9%tTA#mh#teS2=fyXbRg1xfFd9q|Ch^o9z{7t8!`!cf0jXSc5R?& z+&<_COr}(BHhX%d$Au%??B>XxPT9Of9~}nZSRO1F=ox!(f>Ec+pV?IIut?A= zFWC^@Y1UqTG@tHZ+qp+?)I2>nW9CVoBVOhff{bkyqh?16&C{RbL_M_aEQ7`}(DMXv zNUms}NU^&fp_E$*;Ur3VXlqd&dh!+upI!(_diY&-l#)Wo}aT$pP#jjY->_mxX7V9 zwqs&SDja6FF(`S!co^AIwn@E(;M0C>{ycx2F8VdJ=;jZI(>L*St9|~AgFDSAVD2UsNKM^XkLR(BxI%Oru%o_^3*2HEBAfe?Rb^9db#XX!z%c~q&03gIZTfi$%1@^Asd1)AVc(KD&)JZ zAvML$WN<37ra!H;+pOjMxvTbtke#{G0Xu!-U7t1 zBX?1uu^Vh~NYasZ;tuZv3r+N5y<31l z^~7>d1`JscA==hX5;u)-DK(}G)oma0UhiYIv1{v!778`jA|4H~A{cpU`G*jK;!}vl z2FQ;U!=SPhY^o7o0^80ORH;>Bl~@tLxQr(aMBSPm$!r(on$z2ChO&$)x#{9M_sP$Z?-6Qe3~87Wb2SLK1trlXv|seagi06$9PMR=5tgiNjzw$6)t$e; zO@)(@8cRi-Bz8NCe{V(!_R%j;-$K*t?hFb3sB%R>pHdXqO7pZQc)Jc3Sg3K1AHwuq zWx6EI4!{Z#m7l4LSs>Uw-ybAec=aG(5FP+MgM=ZyQr@2Fb$~rnGq|ujusBSwl@BA0 zpG|Ft(ZyoHT1t^f&~~Y!vt%H1kF%N%$P*<`5gAcnEyMk$mfW$?C2hdvG|wJ?7k!*f zusfsm;Yw;nYb&!a?^b%;r{!Y3616y@Ox>eJY1^*|>&kl9vFiRLSiQJ-`hOjZ8Zbq1 z%ZV$<%3upFf3Gp>y*+gXr7TrSsBAwsQ0Ma9(JPCziF`}}i8oMDp_BQCoQS$DpG!)F zz$F0?xY6r+_&>tVVM`P(38H1&wr$(CZQHhO+qP}nwq3XEet*#8nC0YTtUM9B3ygUE z3evry0{s$Aqje?o{@WvxAw*a%Qcx7mnRFyUH=4U=%d<;Im7n4*i%80@#s8}AW2hnh zw$6eI$MFB@2R)}9>P%@)L^-u!IG$wX*74>)sWHu}6;A;@K*6c@mgg@vGlxqHNO8}e zPqiB3bP4^(!$E4No;0x(Nr2YG=9?5{+T}Q;VZfban!Pd7ZmR(b!^;}r-1MrbqASJ) zWjkTFL=@@=l9hLe+eR|mm4r>xz`*eMq=^1*fXq9F6a53mInc4Aac0KmKq#$UxU2B& zDb}u_yiLZ0lC*8x%hb^JkQ85?tStuXH(7ij6iav~`i4=P>4g#(1pY#~RJZC1cwnqMhV14O~Cly?R`QDnt(dlh(&rqUtpMgoi*8z$S1tG-!-SbC& zql_%05g%ua7!VAFz?Q^3KGe|g;jvI0i^S5VTQ%sd<1)kzalcx*WEtAhJXl$c+1!^} zvwUkBnurg6zAbpC9|?r2gZ=&eh@@%LQaAzHR2Br9nCw+$2M)KMB+m-9)TQxx_?JvY zq<#FC2aIty1b-b(3$KWm2`SPqwXpgn73j4HbR?F{kg9G!3{8ER0A=4#PnPE!`^y>m zl6f@wRgnqbiZaMDdD2;U%U|CXKd_jZH-qL>4IDlg2PoE2sb~6?%r#AZth*?^&v-7x zuvJf~mER;94f8`RWil~>+TwO&ZOu0U%oB%)h_{jT4V%#e zwRB%o{3*m}%yWEONnRjdLKT_J*cBJ3*W|HivS%Nd5P^~_*a}h>iVd|Fw^X^JJT$Ye zoXvQVq8$woUdw>_gtD?9kRB7C{~Buft{mPedGxL=lK8RS{Q60Z0kMK<2i0Hb^2 zQ%Wm2Lz#$cQ_yLqbKi7Hv-IR~#79SGbAKyb?*<))mdDc$m1`HbVTfEI!ShOXhz2#5 z5ps}K8omX3(k7GqEa3a?j3N+eY!j)c)@{Aa|Vx#h=& z)aI8cQz%1*4*=xtIp|B#a8tTXwU%*_J!KIHs$VgHgB77@fetuSZ_HXTQ=g6xX0bQV z6VdtEBFM4&lYMB(3c2?tSIFH=cbTcMXE9{w`(&`6+$m3!c#r~;rs}7`7bFCw)o;QM z^TMt3K<0dpRxsCNhF>gpsHiA7TVR0|QcAi8Skzvy^y92oCuod2O26v|nY3}+QE(!A zf7dreMHn3C@D29>>gJgv%LwZgw=*i50az~;< zme6L3YXonjdK#E3k6fbXpI0V<-K3e!9~N!@++R`A6UOe@01mq*6+ULUL1SM>*QU-d zoB&Z>S$sRSkpxp8YGN=gXgW4Lp#(4rqlW7$uL|WOO+4xryk@qbfI0#O;MRM8+M_qF z722U-x>CmdnD2+QTG9{p4ON|m7eXe@o@Wcsa)aPuvIO|(`9dv4F-n+{DhW)umpcoC zm&}M47BiJtBjb>vrxn}a6+{p?>Nzi}3@=P_|J{Asj!OAqie(jpz^pijz5 zsE>%A{#!u?`0}&(+#vzACkAW;j`OeyAhIG)r+9o9J9!qwN;-*M|(W?~JFMCtUm ztjaEHSXbm0$TdmCLyY|g?vU4(K3MFRuYQwAOZFJZAg7)a2;+-ZK#nl#fXv*8KZjeZ zUM0$8;(KF&c@zT3NQwmCv}ms9=%j@-F62OueFULec0cm*ZQ)B<)vpAIS-vPf4am< z{v9TmF@1E|9?@`ISln}(t<2Nsl%5C9!FqK-?078t!~O%T&EtGoee3Du6R zD8GouvwTT6yF99sdHdsH|6y$CMq7v z&GrJA1nQE&G9$`s1f5S%)j|K3U?O^=4I_kXBmii+{tef3@81!4 z@%>FleDt~k3L9)PuJq@faX_A!1pbiVtm<|jv)E#ked{fn77ALTCk3>=dAYy_3>varKT!O$y)&D#Jy$p~o4mv4he+s#_a`H$72fgTR0_eK(vn^N<;_ zdWaEx>VQ~jJa@f6uD~go_2vismu^&Zql_W1B~xpO4&1U|l}#u~tyw!3(qC)`?K2H& z=xa#zFZZGN8-c?auYCV6@!ZdT1`Z zdkFPX<#z4uHx@b~$Sie*=Xv>>>KGO}`?-pWwBB^g?tBoX|6i#$VIzanmalSP(zGKFu`3+(3n2gOjUZ<=FI}WA5%& zC0#fg&Bhm7rFBri1uo=SzbYl_a!o@;m>vT#CgL4Vk2BxTWxY@$*gUGLj=T5_sOb$l zOQ|xm9`bHOw)0NJHO$dS=x7Q zMy(&q+EPm1q`u*NLOMBo{i)TTA)OGM$BvGeXpJHTRFM;2?z>a-ao!s2f%hSC`*sCN(KA{zr zaeL9$v%-jzMi+WNioGUP#ymvBQK-a$>hTODWVVuSxZ2C4s$!iNr)CQV9|W z4f3btiC_)gMI3>`p!b8tQfnYR%8=V$;V39YUKBvNf*}Eb>5gs?hI&}&Ik-OZakXfY zvMk0SW^8O{n?#kv>AcP@3#?^~8WbVS*3rsS;XmtDf+|RqEgGq`qBUKMDxd6iKM={o zLW+pu>T4yu(m{kiI0Dn-eAgqW&#(e9kWOVMCW)tmUqU2bPGGPQQRy>4%7~qb_sbqH z&gOv3GFkOAa;%}2q{(9lQVsZt<(AKAo9h*tPWj0U0C>47)fjN>Bg8YezuV zTDW{{!R!Xd4vcEqI$5qZXX8)!^}Y!hq`_uIUTuO#ho_Ba<)_)vXM^a)n!vzH4eX6k z^DYRc5?gIyvxRVrzq^Hoi^#Q#Mzrsb_;3yUt+sW!zZNjcGpZ>Wy9cvlxHR*&`!;k2 zo<&Mf)73lRKBOch{BKGK4+lD0u>1y;$;gvu1LU5n0V-EM9yT$>auM5-3@b4nY1ju1 z&}C;h5sr($r9`*EmMHt82K=jixhD2`vK5nFiQV|sYp*vo;mTS7*&5;POkOnKuFGM+? zsxj(cu~@Q{A&mDoMqYmIh>*%|YsUi^QBFYNY91?ojqaTUuGz0;_6^#O;s%By%5K+) zOJO_37K}pPo$Anf`rKFP3@UU~4w`h6;`Up1sYJ3SgTWYl`OSZnxVZ7ofzZzBg3s$# zV#piuTmfWg(|RZ%j3kJAHy``$=Ipp7M2IF5{>U)maB#`eE0ePYm%~XdTIANJ->H6^ zh#P`WJ^%3Ek+oMAbGH@`7^PS}^eVaL1xcZrtQ<{KzJ1(I2EiXvs*(#wWV|x*EA#-5 zceBIJ`7+Do+8ypj|Cqxl;1diQeoNb844=;xcQRm`a{VLn?O?!^M=Ntnl=C@@z)pbQ zqNh_;ovdT^BpU(FKvFC~33@8pyEWkfR4a0PV}L(M7%m-Ug}eu_W90k*eWi%7?KT$@fx{dJQzv)nx9RK z??51R5*9wVJ}akCUVXu$-{SFM)t@qU&N@MfLl`XpnbXZ(1OdipB8pmZBOUw8;151=5bJPL? ztS6AaLiy)f{PIV0TIdi*NrcA@^=|t>2yB?T>4;!6tYSDuUJ z%#Ck%BwU#mW;6aw<>GD~b8^Xg`e6V^Mb+8ria!8@4*UMyA$uZ#>u|9GDS4kNF=AQX z1npPvhRq3pt?gu5C`7t)wdjaZh}I;3CRHbT8o)t|oJe>q@@UYC5sT6lkvn|XS!;TE zHmLIpj=ui)El4Un$76CZiclpu-4foTaUo$qm)rct_aVD&igB@|jhS=ckNI#j0 z_~W6`8nJW_sr%A4)2hg?G07hUB#eiUb|$LVFGa`xy}1Y@{v#|7r2zhrfjtPCYWC?W z=z1D8@PJDQRZis&({Kl(Cb=5uc=&{$bIlH!xY5GBU@zMdJ@3`*f@7bz)nf4Q6HJ^5_Alpi8?uyTfuo^Uq;|ISqRxR11)1~5ts$KQE{V>Mu2C2*WV`8V?P zQ{gLQCm4yOpH!MZA>8Ezk)+=KmJy6H+WJpc*EWb9vG{VTVA`k!$L`x8$^uLKV33deh><-}6b;hi#soWXhx zP5xu6KQl-TJJb|>F40dYRq0+JecFM}!p|m{RD`(58;LZu;Q^gu7amaIYi9(cP<3>v zX@f$Kuk0$tADns8y(`2Hdg!5B{_aMt<;v5`NbGEJI1X_RLCvFUj`c!UR!8T++_U#M zgiDc6T$!6kpqn~8)`TyD0uJ z7i;aF`l0e-I8hOs3sGIX^X$Yw_v8aYWWvAjwp#C8i!rZlRL?H=EjA?1j9kh~i@!3K zfwpX@-l$I4g<#Y#89IK~QaZYO(J=(5?p5TyIq@1DQ68Fb;&KYlD* zOwH0bea&@ta}hjROCQ^Eb!=AFyK`*(Tn%JSe3j{rp5ySAN7R!ok`V}QUhfOwQ-$ha zMx^ZX0M|A-t^A)#u`!k(M|WFd=GGqQvZo}$*s8UJ@@NOD+WS9}B`z<)vj*}#Lm`Q< zRhNx}b}=4SXm`T6`y(jzV|qmgT~d!R0DNqoo|enXiub5RwxZg#dwJ=N{tcHlZv**9 zX<~}zk3874DS)^0`W_e_z-h+r%KUfKMts#*w-Zj~ax=9%lB1+_Gw!3Pd^fz58!s}Z zajsmhd>UXCA*p2i{4*vx=L7jWy+&h3OqPnRSJvJ7;=#&u6+>xl1lM^Zj4*+)-;<;= zLf66CIU?CMqvk)YCHnHDvO6>tYaj~BWcv>6ldCW2VhZUm2N(@m-`Tjc1QzNU968`x zj|nTR8>B_1zCXeNt5ix4P+SC96M9mOf4OJEg{z%8==k7;CqoiD@;pdp;+7#kjPX~< zvUNDyGUXF503Ry_QCM`Ft|1xgjH!V)XkvCZJxZ+ZzlNGRl^6H$y^SQ+sgyJZ3!0E= zTcNbM^ewzuplVqtyl@Af-0c@i6R`d^qH9LVpMs1}Qo^m*vFtYk(*&{T{6BP3C_TUX zgSi8-%?m#mSrJDoLX63D38r7F#N|lc8w~38o4Ae_X&cnYj7xB%`^){-ak%_s&ktmZ zF)CCZ%Y%Z_*<|?QI@!mR0!x^06NXO=+#1X@R`*-1Oeig_XHnm}*JA=U0hTCG<`eT` zJT7kE{e+v9YA4Ni4O;CQx|u?$l-HG6P}(FaXL^RaK1*YNaGXe=c?L z9~}v>2*1a8eh7uUPs1wJZmM8lNiH7Kgod)sc_q0a^#OQaPjC{;QkDULj(bXw;cPR8 z797DtfKb0Y$wqPqz8CfFX;W{jQyQW85kg2J3`w3@zyeo$_d-3o#X~{87g2_qCB@Cx zuD=K5#lkh(R@F5d8alN8)uz+v>FG>tYak80tS=%+GjhZnj{XZ#d@c)fXL=D!?Tt~0 zXN;Ll##-?wThVFtSy!SnFDApcadii^A$}>{F(hQ33hNDI@7fBhks;;cYFPj?>kAL%i52(s^nK+e`w!NX938{p_Q~gdq(Ja{M zxj!VU2~cdhmP9$TMPZuWUXb=u4L4N{R0VN|yUtP$(9y#&nD1~b8~Rh4y`cZ|xNohF zUy10?wZIY=EkQCCt=@UB&PkW0h|I&R)FIzWSMs@vfp~D_SB2L+act1wrF3#$J7bab zjXIzOJZsXlvmQcr6J(OetqH~^)U{=sKq`@Rxcqakbo&gTjd{~g8plL{zCM@cpM8XR zq^Sq!ig#%)LR0t0A!h6IO2-LEJDXy}?1#0<%Wz~q21nUq6UkVTbgH&(uJET1A$kHo zt5mEgY*3V#3lmxwu%y@rEkUbbHF@0G7K8|r)*})SNBm@a>Y(g|D%H82t2)OEi!D<_ z%FF?X!=^g3EyX(+XZ3(@wp3UzmT$)+Th9@;|6tSoEe0dI4= zSFJsOb|7c0x0=gjD72^H#X$p})pq4pxVgw;9l+(hB&F~moj9<6G*s3GY3cux)B7zE zFvMH%!vX-Lj997+#MNsCxezv%;o=g}iZn;PJ}Ponlbc9ArPTiei-tUlHBeyAmSqsS zW|!#=c1?{^FEZCv4cBp^PC+U32xd_@qOX((P@tZOW*Aq*4Zn#DOjO&ptc z(DQi;5z_YL)uOX0=5lTZ#D3H1L>Hk%ICJvxiMrUEjU!(?)hR1!ThEZ<@&KJZLT)X= zP^pUdxCSX#5{~>^Jd%6|WQ{&m@V7P4Ok1dw?ILuSM2Nc zIrxCq*3W+;_Tw3%P;C0I`FQd*&)de!R`|g!n!y`n{sO}@9&EScj#P9^s7KtT3ba)= z%-9gV{3BdLqWu+c74^DRii{i0MZYtTMX7U{+PK(9H|Mu|7!j_V$XWQ}>Dm#is70wM z7J+2<_2_0eA=Js>-M1az(9ifRN31UDnvIZt4tgj zF0btnJb|}k{F$A^Ea|^vcR0`2PK831yhwq>P4{8_bW#wuEzcYY$K@IH8u8!?%(K+k zB@&foL8SqV+nj>6iLM)fc@KJy=0-iI7@3O`cJESQMe2h;yE`(1RK^BK zsg<7M*|lO1j4fR8)2dyu+1XsLEGi3YIoBi%yQ z;Bzzx2d$@ey=6FBu-V^fqAKuGOXO|hXgj+wm z(%#P+N$Q4LnoxX~yi5}0Wnl(4!~d|v94PT3STmI5kl=s7Of{lapO?#u;Zmm7*EL6DiGRvpr7)0kFfZt5Qxwf4_au zZNN6}icQQQQ>+f-bJ_X9Jl|jS7=Ewg0rJ35S3$JZ`HE-;&T;TyDhdwKM$%J|6zYz~ zERU+(m2JI`!UB?L4Zd_QaM^}KfJ*kn5~IQ2<^IgHz4p1oI;>SwTB%9yIov))>v=Yv zR}YR&FhbrlAYmxnYRey)K+b{OiMh-+pHP#^BMl=vTUZiqapCZ-D#|iR)W9f} z!NIOl0#C5YKjc10BDl8=+G!Uwv%Vr<(+q(~FQ{`8tElpp?8+7|_JlDXcOKsFAplx@TT{6%;0L`#=VgwMOeqtW|)cKt^yED zRX^;1AOO9saT3#(g*zJ~8ApxiTVIZMD#Y6W^}1KHd&d?|{99=``HhXrzofQcw4Tgx zLpE9#f564~xXxY+s=<&;m8KAnp15U*J*{L@nvKZzfY7_*DG2;=?SAN;QOMLM6P%jZ zPLfRuSaG<}reV~yUQ_$2(Yneb>x5{i5-sq)*}uvR-Z>aIN|we+6rQdECvAgpO(tr$ z@Gp|#c#GfSNydG_9T*_9XkSbwdnMucd6eCiMEcsO(!O3 zmBN{K`OI8=2O8y4s*x|xf_Me>fx}gF`V}Mc;#P7iqvVo;DIWbyAu?56mCo02ua_dXNdxVZKy|#&DgX6N^6HOW6$-tdgSu1 z?_XfWK;Lv3o6L1T6H1->>Y0+Kx@*jezKfZBPSSEEXv>^|dqK6lu=`1q+v}ko*M2#2 z4SG??oWH^;-;N@$ZVnyWBV)gm89#j5*hR`bnS?T2NQ%bib>AFOvcj}JcEF5JTM-H3 z9&4jN@97jM3Z$qbO`jM*Nl^(wfGAYwADkeD( ziJwBv4o0JcToJ1i4Fjzb6p(=a$cQS6s^l)vyvf>xkGsnI*Gp+wJ(;Y*9dcg!po?xw zQPH1{|5?Y1>Q4@xQ-awL^>-^M$@bH3RpNwQtl7$x3~LvtuO&w#2ZLBb>29%!k!gxD zTFJ^J)(eWWM+qP!sfL+LN|+#}gh<4HXEj$#9>&y#5wu0jo+@VO;Wf?X7hxQ{4hhv+ z1_PaXdIVz3gMU>|#ml;gcVfux!MtJ$ah zl?C^)s~s+VeW(4qrmZa7`qw{35QSaL8;Sr0^8-p4gSYqDwEFT>MTbNsoXd|(bgg4t z<-FSYoFMp4#3+=RzbWT93zh;#e^6$=~yWbNbwfKcv{{aTh0`#L?#wt5k2v~Uj z;mHr{Q~M>QR__VVWChHdjhqbYvpif=!52(X`@Hlh${`S{#*b+~gYk`uy)IK4W|yul zQHEF1$rwog0jI~8BdmTL5f5qCXSyUGD^L=}`VWJ)LNxu_DVQ%m4M?j#!G2SY6n>l$ zLMkdw!M$foZn@7=H<9$9_! zE}~KOfDE}18p+c7$mwuUtI=kdyQfUqt5;pkw6)Paq|oS`Wr+a2D!4+43@gHOrzU}g zwT;5ZoIq9mI*PKV+}3IUP)Lk=M__#Szp?pP>vz3dOPP;bXO^*nLh7j?^`nD8;vJ_i zjLMB zItE^=F%lr`=p_)UNB(#mC*Rlt>XV1_9i6+)&W83dNF&CkKD(>hcW1a1eo>u*x(Ak| zm4=&a29{Ub-RdD9H*5FhXow3A#Zbz}dF4Wu71Z;6UBu%Mslew6S-MKrOJnX1^6&%B?Ij!oX_03>Oc~K`krG zk96S$imu^G&vX;}=Na>|nmnm)5yVJ?mO!@=0SyL z`4h$uH@xY$y=n;H*D>DyG-)0w0&j&hLyMSmQTmj6_(f$;#&%FJiuxmWfPi03tdJ_- zhf)bT1Uey6gLHdVln3ew_ol%q67414Q(Z1dV9&bOTOiXvS&rwo$PloE~ko9BrvD^Ww zy-sj*Rk#!R(5@E?X*d{2rCP-<{eYgyh?42nJ-1>Rs0}s_UKHs3jNYF0Vk=~^#T?## zk1-keA^n7#iY#4&EvuDHo*mL9=Xq8pJ7Jfy37fhMKw8WwIL{vQ$t{2MYml5yD8$YT<3nWkb32Gw_2M8dVLqD1z~KiCDR3S`rT#3(cQh ziuZgE6m!*=$4{0vrvL>+X>;s-!pE}@FlvXq^i{WgBFHfkkf+zLv{2CNa=9HSAr2*7 z^&7X>9=mApFYw0#6IU#0AOwg2akk$xt$Z)jPd9maFszInUR;sHRGAS8tU~~62?@fQ zb|qT~ep+C^CX6G=H-I2B&ksz3o|XUV)Qjq4hRr?LE(pG!m;cl~`pgABf<0>^*uG=3 z3XI^e;@p*+aN+Oy?CT^u zx-vX*(;x``sp zuF+ZiT;aj+5Rn=NXHypH7Ll76AFBw$w5BpM#d}pW+c@RC&*Ow-m3_)Xjokqy;|*&P z^QHlC{1%4l#Tm!oujhHnU}amohGn17C$gZ(Fab@x(N~fl`aVBu)=Z@6-b86rQp_CF zL*O%YTfcU9b#Z>>baUt5T&gqu(%UNLfrTRKeD`Bm1TVOC~f#f-6o175&orGJ#&GP&7Zq z;^k|l#*km~1R$@*z_@8GX0Sek zf`y>NMt95g-zP^QPc;l{Sbu!d)ntO(S1OKsLADEu$3VkNEf_-jvLtfkwIS+?s>{yE z(&D`A?Y2)`qI^;~nT@?~$i(M_*v8EE-x*c9Z2C3|7HbrFf_@tpwOcS+t!->*UJUwr zvv_7*iwDt%O8I54MFc%~*G-KJ?GfJjQWqu-iyARzj^&t6AN&c-^+237ggg^&0cIY4 zYcOEq;ZhM3yct3L=zlpicMWD91tRo!m#_+FMEN!9HS~fLc>Xhv^^L)@RdO^ippmKx=UWH&*>CYy_DHNMW(w7s=;82GlB3>AZ zilO)zCI(ClAP=h*O1x=m65;cf^CL#Mmp=1GQlF^6g2MMV0~!vGc%%}uixqIsh;N4R zW5tXlg*@RBB)bYAAXKzm=K2!I6I`f5-vDRF>L?*&JdkFtyv%@2z3Ay%Dj97;Pi5B^ zc|?JFt>2|egI42V4{z>K@t@oG=153uMzaDIu>@%MH-i8h=CBL;Z6|3TT2Z7zn>|%v zAZn|JXg)wX^X5E_mkG&gLmg^K(@Dy$7}Hywnh)tRSLJT%cq}P2*&QndPddi|S|8U0 z*9G;VOdbuyM71k3KTNYXN=kr&$U`thT6X+DRFX_EC07$eWDT>V&hMNs28=tQNkzYt zrhtBdC*y}T|MSmG_Yy}&%HVNr1C4FEc!$$IZ=(!)&S$_;yqB2ScsI7Doh63N3)^vh{5ZOV zlG{sc&P1J~;xC~CI*+TDOLi3BQ5z_sr}~ymyIsG^*ScZw#t8%F+Syff=cCTl&nLG*`K44qo0! zVY&2xE08%7RvyPaAV)M~m0K%vzwM9@VUVQL4Y-j6M%|Rq`jlM^X=B4d8a?(sS_gLB%V-U@(LTXoBLNdyv7)_gQ@*N9}0muz_H%oT3*PaDLEw zW-!NArg|*uIk4kPlX{8B!8Z6!#b^EPH{Wt}z!aMTz+ZT^ zq8g-9$Z)s2c!-YB7No^)lX*}P8vr;D?42rON3+@VZ_R|ov4XauYtMV%{$M7W` zB_O(`X%jnepWJ7;-8`g5Bk4lMCO)vC%^YW)TFn9q8pWPP3etN0gms zypbJBm~MJ8$nd zN8_=|B{iFD8NOqwX!}?Xj*r%?e5Umw-I4p0yONY2@V4xu^D)Gx=o8r3yvRz^&GLLt3UU>-Ht2S*~iB@8_PQ`VIu6v=#`c#@sz8Q%rGn4-9&N zr3-y!w&AUA>+!&_fPI96kSPi(aYvNtdG+z&+-CJop;{K&39{z|ngE~u&Fk@Zs{M%B z!M_I24IqoGB(X%VRNm9ED{Lq|V3j_$QlN&p2l`&9^lU_qjYVHtuA^k(X?nRDPp3y2 ztW_Lh>YE2tMxb%pl!fS-)EV%-jNKA^@<&Vr(!WMDPo2)JrZxX;Jh5tYMh0l4R4rR z*DA#wEC0Y+?Z%@UB)CYqDFKrhJKbJ*_inukFDyMzipP+)!QkQBhAB=QI4O=Z$mnBq z;oH!Ty3|bU*X!i?T`gjV^q*UZ!1o^JLNNgw3{6LR!l(mCBuX9Ls{VPD#CEToz>yzg z9=sEcK{*oEooJ#=6r2g-Z8Y_f-(-6qxvtibN*5gpFFxvYAUis1(J>;P!{sV-#TqR0OH3tD8O`Wx89CHBPdXQ zH&!W7CEv=^ZnVG}|O%$JBRez7`5P1(WIXg+#)APL)`kSM$LWzXWhvOOd(V z**SN<>NMYlu$tOcZwzyDvkNEso=;~k7IR7-*W~)d|NH!IEab<`K(ZvWuRu$ZF7Ke! z>?K`2vy=DIi++xCry|(}x5v3;u-*MX_L%SEK5I=>OZK2jB>xPyWYC?Wij)im@QV#J zeo=EgxVk}_ZP)V$F9_-I`f>&tFWeK*M%jM|OcRIts>-sW1WT4XbY$(O#_S5+0O~4L z@Nu^U?5t(G&zhJGX!fzYpP{%7Ynny8}31kYXtByFj*8i55pPMaSme?Vk+%2gZ;jW>(aGl z6|u`3gg|xAq%)t)dncA7c*An!4+0v+{0!IBw2I{9+cQwis_l--fLgp)E*^BP3)h3d z<7#b^C%*lp=odh`qJ8AJGlEu8L_IoFdy5z$7v=8_>#<(;)iIc|jk_9WF>rjui*{## zjqn8L8>6`V>9Qr2O=Q3O?tqoLqB>W8L4srybt107i^8QqWAuZ4qnMT+{EuE9;0QLk zU!Mma(WD3@goSqg;|5sVg?*)!c%F5UYISNcjboqN(A{@d+|1f|pa8p@&@=2;^rcc; z3WwiX`qG9yytAs_(XCKZFy{zH;swo_ zBkAn$CV09iSb{Tt&QS0(l48Z2riAXwZn$Z*uN|@S__p}o3L8VV2gn|gH0qFPeUr>z z6jb;H)S`mXJD=!~Vh6;vB>e-<-)qKhs&bS;mfJe4)^+!hmCXp1jVSXt zGtjQ1ICz9unU)f~WcBFHEA}-8N9JoD@8{3P{&#&X7BeLfpzH7#0Ii1q!kxAo zsT2TC6v+Q(ztxW@vNI!~`WaAxP**Q}p_0Zbh#T|Oy2=-DQ+sS?JDkH~z1@3BauJ0s z7uJI7HZfzq?->M&0lJHYO#a$*pHksb{_}cyZ)a?Oo5?JhglQHWXM_rwG2CEL(c|Y3 z78S@i`R4M~Dny`Kp|v?16{s8ljLzC{REnzP@TTe}{u0ua-Q3-j7iBU=eWsoi(o*vApC>9DPL*$QuxbZ zYS8Yn5M#1pSza7`BzJ;)Qxb5vzZhv)>V)>5vZr()R0}1BfhGs^zBA!F5eA!}t{6Pg zUHpAvwm9S>->qO?i-^n4|F>iERTpki$mNm#p5?ntjk7y%l^Qb$E08q5oW~vi8il>1 z)UI5O*mp6s3*1?B80yQoJ9HR2%^fWl~F6(|)r=X^6yd;yr6@`6Y&wr&F)$DqBt)E>mY!g`PGu;xZSyJKhIm~V{ zRbvSi)j!Y- zb^}9vD5Sgo=)Cm9k99z0o%zFSMz?}ROgFjncMd>&<-fruoC5}NQX0__j{wrKTTuz` zp2}D{mQXeM%*6rMD3v>@xCTJq_Usq@`hgIJ+LO4Ie9ybgt%^vW&WKH$cTtG*92Dvz z14{L2u2N6v_oDRQDjN!S;JOfRgyIGLRy}Q)b$-nwqf!#^ml16}1-%*d$2mc)gtuZ6 zTl7pf0Z{@a#kI(0>%{grx5?Fl+eeL;r>PRvCxhGGDGjkK3MoNaChis0nD5*VN_Mtl zE7^i357d}-$(rQ(DBUel zDMl^4q}8^5(BEZgLkp8xCk1kA!G~*9JL%F?NVTRFmIWQhA3?>WaP)}YWXuq%CVs(x z7TC_%aDgJC`AK}miiX8flUK4y3Rcl=n|*g4>{i=m{?Ak$91|QU6^t$Av==$w0%hN0 zwgi%yuSyHj1j?W*#omneG@J=;{ND~wOq@1h!k5x`T#?w(-+yV!KMp`X^<1M%C-plG z)Y|D~M@XqVOd?}q2wITu#nsKtdr1RDq~xu$CeX0~QX1|%IphGzlBm$^5G;qy8tgbQ zqIe(mS?m>30seYhk)Fu6I|p$IUw%0DgYd?$ZO9HO_tb%v&6z4a=qZRnBy=) zvn7i?_&VTsk;d4JiC@~XfcX?zC!B)kG|3yVsR!1{T3Jz{C4s;EBPq;C!5SW8>;5W%;6FNEx9_bvdgQ22XByI0Z@BBKi1?l7i7VqpqFo?Pj z<`*{o7Q#;>l&v%bP#|cisOO4j8-b6T|6;plIKx{LG{g+hd+mEr+&L)j1TnQ=EqExpFnsRB&e6XR0w0j_@daHVjb3b%*TuJr zMnX~%)&tc){}F4IEe01>B7dQvVxMt`TZtc8h6B?(I=^pFi2?Hr>-PdQmwaOKUkc7n znIvFI66{IiIqH}Si56gStfi&-J_0Y3YiKwemZij|{#Y@T=w>JN9qRkX|0S{*m|f6y zLL+yCkk6xAQJDqf34?J2S0!H5!6)4i>qzLTr801@$)Rtj^nTEr{1iI8`ooXk92S;i zfVN!u#2jNxWD?^`zECZw@R0&WHL3psG$r@m@r9Bpd9EIox|QI+kH^0x#V_jh6Kl?1 zizvJ4@@f*)E=|tew+m`pNYhk?z)ECbDp*7bcBvPHvrc+NljKqat9-dXcf* z#PC(bAWHKCQc_qB!49iplpLXhSu;9y!XecKj({{JE+75GRaR72G>9a8jO@8AbQGAn zgD>l!u;vrxy1IzWZvr`@0dgOY6ie)vA>*u!y|G;>m(^}gxRCGn^S#{h)q_QZj|BpG zk9vB4g0S`xAS@srDY9y|+4p!Vy9X&UlvpW%WF{}$?D#BoSQ1H|9b{f{i-VOz^~SdE zqQrvA#Nk;T2XN<-*CzCBL*hqWj`DJi6GP!7U-nV9i){Rd%@*K$%&tqMsW;^s6-InkDiD6Ah!aTSEHI;xV5$RU#~*qVsGHJbJ<6$K!*FR)g4#s zN?!}8qypGHd1!4Va1^4MYBm82bedJZe8WaIw-nHyF1ndYYdxdTOJ}J}w^MIa#mn|KGCa@v77L5MYc08G@T%t-d%j{^-Jj67oO8wh$awFo zxjrD3Z%?jWqqx_5GdQvbH-t{Z-(HS~+vFyKxE-+RP$}8QydnJ`bV=+CmB8pfsR+2g z(8R6@=M^;7LBI&OH>?pivJ7Kzfj(|TYsE-z>u^VhGvWkmlDGJ*RP$Ec;$nqSe&ZhpwT4Q$Iwoa0*Z$69;AvJQMGD-$8U? zA@3`!?4M)~v(b$I%Iey7*iD#2&$JIBE`J!2j98K}7lNL@seL$+7@Gh-l%YgsxxErX zOzs9@1!2~O4VEz4BlC?YwCVZF&u>@(Lkq*Y#?aCw8Vkd#-NRdE z=k!#b(f27$N{hb*v_x^zP;#8Bi}$uveHPD-Ny`i0CzXwfn$@v;;P}kt|HaGGR70z?wA z=rvj}i_qP$oFFZQycvrkcZ+vorX!*ZNfH3FvQ<;OfkU%!qvsa=E((pgNLDfYIsjSI z3Qq87DrZjfJ}V@LGS}NILl;)g5yH-RYSi)lq&e7YG43cbA-)BvvMy9Rb!V-K4BRDe zn)UUbDfB{P@v-g6Z*Tv$?qd&8*tPhnpyy5HJI;}K`@+LRa9wZPcxcmCR{m^|G7UHA zH0G_h3;$CgAv7IS$HqQYXYh%ZOWi-|)h3(lXcFL@OUCd;E_hK}5yAj)I|dH@qq9PM z%e-^XN0xIXX>D`0*rkF6n8B3QwY1w->t-Vk#l1l?QZ<$y;iF)xBEp;tbv2|GkL^eq z2KcXg02KWYYV*7HJd+#>gEkyzSEQ9c@Uc<^=g(#y>-n`T-dxbuC7mh5L$7dJcNbA^ zW+G1O`?7C%r!JU@N|Blt^I2!FM7gyNZh@N_(uAQGIA1B@B35mlMIhS??ix>QRF+cL z&~J}mA^s^=9!NSt}&z|fGmdgwQ z7X0(EvSQdeYp8Ejy#On6!^A$a2jth#VL%0~3$fjTFzV zhrn7iiNEzVR|m93>cMG7)-vz$n&h&uj}VDbmY3t4;>5EA^}zPQ#Jwq%S=Nq46=^6U zM2@9%AM)v219%Rs{HqqzO7RUCM4AX>t;t(BV?F0O1DXek5LY^Rw&^+%3|r?`7p+c~ ze$h|kvX%s$iy=OakAFfOI&$FW9jgES(3=GeIC@9DqAKLIN=PMG1m!mo2m@E5Q9OiV z+RTnONNSvV$dhgN7hFi~+Y9b~Zicd1mno*^DB`!t%I+F>_rgCbHy|eb9n>~u!U)s$ z%VYdEnS;lo)H95=fzBIsnjZI>b$Fw}A@OTx>>vUMG!nfqXd9T0z#Dkqoyl}UAD;Pt za;`s&R~D+}4@5FqpzI>^e<(8lQoedSsQ;O4nX1s$;ZxO`*ZHFyA}B8FlMtLhw_7!C zQAmw%t{ma;9#Ew+We~Z;0nXvVsW7#4o&T2kUCGj|N}1XClZ{r6!U)(dMwZdsz%+lI zg{@g=8W{4o;g?-N*w|~~n^9(L8Ju2*apGq?e2}o7(Lam;uNL6+vWU6m1ZEhNI~MeX zF-SyuxZTzXnB`6Z8E|5nd$I0tL-VPXMtBl`oL0dE!xw6719~CHL%M|Ruz?7nVXB>n zSS(Agvu}u_KV@)Xl8@Xw0q8k0`;A5D#To0{WjxZLt;%tGzkmrL`4Uh`krkHm+pmk3 z1}i915*8*=J?zoy&7-YAw`dE)a-pBMGF&xdr}%&XQg3~A!^+zUc0?N8sDEJRdUPbi z!2MYWU8=Q4l3LK6!Pl1R(|O<4{U`_sws8CcSTznXe=yN}u+w*6+x&qrR;6o{?mW@> z@QKFop#Hh1Qzcd9SPcZr4WRc3OK~f+7 zd;8oZmTSO8g;t?=R4lcYepTUA<%O+QXcHXjW4?3p2|Gi~M}Ok&;o#NAX=-6~%H&m@ zm)^@#MNow!X7(0S&2VI=NQ5wLxwGO5?ifjvN31#M@WT0^HIdA~2eHlL$r?qK_b+~l z-gzov)$#lf7-qa_jwkf5Oei~tq*B0qLo!a;nEc42jPUdaX6p%=rgqsu*l}jFUR2Ol?`e#vpxjsSl{iHK*&1>y|M{?co-zsv za-Vq#KYyv6h??nM9;NNx`Y#IR(*^z!-`0Noq(Ky3-`#<=Ok0bG!tp#p3_FyMOh!4p zFxhYt8*T<`ebvq_-L{Ia0c+qRm2A@TKM-fgw2kX(7sOC)+$t6~iTFw{ zwGm|io_6)-^M8Adyfn%b5J)cC4EOhihgv=@FjK%8VfL^0F9tu6S4gp5p#v}1pXiiu zpl9_J8cTalhy@Y#iKiroR;2xlS@#|e+IG76fwzLPenF*+s3}jU471h(ZfY}kse84DZ&QL?qLg#H#|b89N4ORgzY_E+qE4#E;Q<#r^d+LlJXd+V zkNRtwyBHaV>OxWT2s5!m0SH^zQN58&6{0}%bST$#W3nY{PrlrXdvz$=cm?zxc~dPe zjC>?^H$mVbbOlxGuP~rcY6v#vpG3jr#CX2r0>qr7^mpiOAnUW z29D4la1g&n1P%j^2@zL85I9e@!>WeNqn+SL=>GuD4lPKks+LeSQZgzHXAu4oz$A7d z_F2Ecm69LcdyGrq2mtEv`lZJQ&t*?S$hxB>yT+RG{N}6_{_Y>iaraEA5;YWF#-(`V zrSemYizNoJcpw527Rs$K>!Ktu%pJ{&d~{Tyb@Y0MV(OcWQR z3HklO;>5s4h$g_XX7K0~BVF`Qn8O$O@$>f>Ap31egt5k-rk?1cd!pG22VUKtB2#y2 z)q$xsb=LT>n=UPP4y`!q4avR2C}bv>pjfvg!)(A|eVK#e{5WTqME|w0AqEm{`m=nU zQ4>#D_n=}e4_$Mx@aR{11&ouHM-1qOBVPQmhm@}o&6h#LjSA-n*G%|`cu}hvs4>ie z>?*MAdN5oKSGtOY1b1YXYx<*HzAk(7XR16MTgBrd0wSn3Mqq|7)~lOFb7M1FztT<< zEh}K`#JMGQ2K5H+4o_~2eQWT**cAt=!HSRX5zfwyW$q&uBXw&<7`5(cj#N5s$+gBg z_F4IxTs&rS$*5O)rorM8yo6q8+$nIo9tMn9wA66O0YyL9 zcR=t%DsNw*P>@G0VhxV9mpACLE$IgEME=WnNC||Wp>jHseG9OoG(t*_Lqv_=1BjA0 zbhWx^4mZY?KH5uj)T&~4R8EEsi>aw=rp1OxAnclDon|452yNd2rZpx_0$H{SaJ*D& zX6w5K{CdjTt+7|JdB%$4$P@-gLFQgr@(QSf;uM!Vc{xL5|G^kM$gayvzuEZ?D!%L3 zJ$sTYnTb8kF!X(KQAr3c$Ce3G2J&SmVzKJ>I=0Twg1G8$)EkpC_jTw=3Uq-8PS z!-WX`BgEKwQHuMP3(!K~ehWX)0;uWau7vUkV7W^hWpT~&K~l2K!ZAT$H~opF$kN10 z4D5rCj%i}RFyvG$_1lGW9)gC%<^h&kvjOJ>xdc*5uRms@*F4%2byRya?QVp1{YSc$ z{p|l>hdZO-)gwNrky@cArT&-{tR=iXeg+efo^t*BriK8XJpeIZPmiT97=$s?c$fV29>t_Rs`J4KB^QT))1{yGv8YMnQ4^1B%{jp0|RHx>Egtg(HY5`+Or+iT`K zILYSrbC3>{463i6hkRNA`>C0cvP~&g?_+GjLG)wk7vmubonB8uVJI}(q`X?dF71UQ zsiGbFnM%s0X}HgS&SYBo-5!d5A_HjejH36xJ*L|l%WdZ4!$nxGdK?nNd&m z2;a%jK2O6O48zSjn%9a7M4IC+H^6HKeo@FJwS9zGx!0mIt*XdO5RNMcjQ-m@c{BFy z0dUED1p2$trh!^~6|+7}3wZ_0pOSK#sD`54Ux|nImgB`EMh~s~3*_^5svVaN2-CB> zHQ+H#P4ta&3Xf?-;fF4jkv-?trUF#_F>t}9YWh#0(xMT%ZTvhBWplf@cf=PQl> zd39X-`fBA<$ohjDBKiwpZ4I=yUl)sHjN}p4VrS@Hskl46O?su5Dz~Rdwy!hSDLlR7 ziHULJ=}k;C@4oD-AX4f@6LM$Ccu<|=8O|f3@k!_m5M0k?k`H)M<5m*6QZRkY%ej>DTDx`UvhxC$S)mqq1+mpr+ftwPBzbtj5EBZnUNe zFdJ~Qo1ETd#GE&5YhHr=OLB??saVNQfGz~|V5)dh&?T5!u{u87IbBxU6i2Ge)P9WtJbdXAYbTmTvs2bAfmF!>?4c$_c_0T)apGamnD1LzO zD#9FInPBXsUg_R`NRB4rA#d$b->!z^ZxkV>j?qQcRDpL&lF7?hD}0y|+%Jx~r)=;{ zPM($DV$t`qhItujJTok%v%|6>Zziv$#aT zRyjx$%&TdZsiNfz1DV;Iko_hLH_QhTaD2t@(T)$5OO}rq5$T8hr~q&LS_8syLA%d} zHSv+fhT=vSHj;571)j)OborwmZ0x%p_;qvORsXUP^roAK76JwMy3h+BJ1gCPEEap~ zzubK{#4vpbdSld{u-d7UqCFfFU8RWsN-2e$&b1n)aq z7pE0vJ5V6L%VxwRwJJ#e7>n<5STA9uQ~p3L!~T=kS+<-)(t$+egDb$4X=XQeAgXCH zq3;J6`N@#zlQ18g)rhF~hf5vZd)lUUfUvz=Q+b;P-}GS1djot*6q8E9|Zj^EX<lf_P%5~x!6VTXX zCRB@jgfd;XvDZiI`M4gezWH&Tee~`ob*Oe6g2ydY>&lZBcug60(L>{{1sDJ zoBHr%@37N9k)cV*E)D-5_sUpvpOb%IX-KnIt)MIgdc+TO$}Q7B?BLj<3GEA>AZX^B&qsdWLwzjMaYaJ zd6pRd>9Ngn31|LhiwaL_Kt4SBtkDnxu|gb`aCl(QLXiSMk|n!;)t9W&7qOOJ^`xBt z3F-}aHdxpf2y>u!^b-+07fffnXxU?$MGy*&3#026bxX69F3fhZc7>6)^yXXXz3)@pC8tZZ zZl})ZK@CU}Bt}2v?S=ZNVe5i)65XBbgzW^22@Q|Im226+zT_ZqJH`QqXIqejMhJxa z`WG68A}?w`*ePxd-w>(sPAE)3*{obHCdC8$felQeNMPER0lh1NZEVOcHzS8o_f6a5 z$8K7ytqx4QK&qJys|4np_q5#O{RAGm@d;tYoJIU|5QV&wvLerEp|_RYdplh%+x*v9 z+T~UXQl|G#toNgWcxhI#u_d;3|5t!_A6LrCetFp+Y}sd?Oj#MhwHv?TNe$CKXj;Oo z4wg=rqfbkOPjq3e9isALNo+GWl%|E)u-3#J*Vp#Q5`bkG$Y1Mf)j5kmza};Uw z;2@M?y8K=o2O4^gzi{Z^($tZdOz*iU-=1KBL_?~u`Q|kPhcvcq0uI)|^9!bBVJyrB zZE3$>OTxCAZO2SD@>~JIe)H8}S{aFsjfoR@3IKf;p)GPL_*3X>lgm~?3;CO|p^qHf z_SC2Lo-U3xSOqz7S-vFKHH%xxKcr2s^*a-J*^^mT;e6_n;g6rIN0I5whPD(E`wC~| z8r6GC)$M!X1D1LxFVZ|pD5vF_u&$4{ge~ADO6#t_T3(gwk@+znQRrdXo%M1+d?crM z#Nlotbt#2uj+$6VU~a$o4Z_-iI)ZfwkpjmrwyyZk2zlb+OxulxrQ>^1#`V~sjo<5p zj9B=#57q;b%NT&X?ol=}%8se?JquUqL~=8lCB**Y-LG&4AHc(4K5iC#&grpd&cD1T zwbb$wvc735qJ0yWB9CpC+aM6#>d^B;iGQEXpz3oP-Cx=IG`+kUV+DBvHGH-xSGbug ziUBBYYcivgvzHSLO@#kwbX$^#N@S?1I)-T7)|!BY3$3OQlvM?Z1-;}pxuO}qu z7v;=tiPw*WV)rbeZ&WH~u3XsrbP`d|5`fTXU>**lZk5JGDGK^}5a)f}|798$@AXaJ zPE`&aL{L{2ob#4Zh3g*4;b1OXIwVbd9h~v@?Em}*c;NcxP>cp)qzWhRenHU(J zNql~_6)Gv*#Nqwy`s!dji98xw4V=rA7;-t!_Zyjt8Q5_-pfhCkqa(!Aa`n?4#*>`3 z#|mkBdOYh27;vIq4&A8t_tI@xu5h$_6%Wu#dyyTYW|TB2q&w!ApXu9i*QPzIzEV}M z)dkt+(qHw9*x+$o9d&!BJdpDNpa%P>W2{{#z0>M+sCVZlR+`R_Z>|x`jb)Mr%3|nv zDr78p&N+Z3&VpVBwwE1&oLo=O)(Z62pYB7G!mjyk|KWv0SO`MwMA#@t;bp|p)I1hU zawFFpk=t>fD}ZrrX)X}r!u&S7or#e6loG9(ejSN*6<1*f;@X_qW}gY`Yi{8W;5nM| zJXGfQfujgx(e$)mn0LBql=KqxW64pc4j!l)t(bc`7%D&dpn5tyZlzzifxD?_PCD@1 z46Fca1gDOOYgt5O2?H`-+U$S@3BP$=ZY)(gOjit(i8z3S8qw@xTNi&w%#rqgN` z=co6G<2a?INya`?WFZ6>7YE%}U&8Anmih-wrm^h696<*8CFUju(Zic2H!6FgEwBOa ztD!Rl^wupbGp?Hv53vG<)L`vEWTB|dT!#`5FAq&qcy{7Rsp&W~X=PAg!5Nqkm_2j& z_l>qHzK>Yf)ygJo5YEe*c=p?|9ooQ@RyvXDLU#cf%!8T`Koe0r$CeW$|6yZu!3N|s zzJE$(w6d<(2lVF|_07JtVv|h5u!1}bm%(s!UM4Ozbi~ z&h2u62l@wa#gm;eRHO34U*sKiH!<$IVXwQFyqDt1-7f_0rI{_!7UM8vh_Mbn{q7fLx2-G13`S z5+EY|mNDcaHxVgYR*Qa*$K42B@tmK61=FQllupz~CbYE;b<}PuT4trYI4)MIv9=PO zMe9@K)FK|MPi~eJL+Sv9@O*OV+4ht|_1so5JlCkaHM6^lYnwn8h;`$YSA(tjXir&k zKW)A;_gGA2?Y%Za*kET1k^^YF$S0Q;00nibfR(qP<9GJ-E!!OXWbU2teG(dobTZ&- z;f`f1ez(=2>hcMpc9wPg*OarmpMfD%D;uT)ZYWsUyG~8a${vjuVwSi|3ITkEE#s*6 z!p!US6p+t{_7TIyOg&ZnoUy-t@IfS$``ln1W~RKrF!oIMROoRz%c7)>nPxjNH5D~ZpEqghr8*C@<&JV zzV~LTORI<>9U=>^57L!d`{R||v-cE*jc+X%80Qm(?q?oM5C0V{n|{|WJTb3y zhQNVr@+-`+YYLiapRc={mQ=j7QuQ!Nq%T=+*-4(+`Ej4@~ z10U~KB%`0MKec7;`?AouIk~2h{oEpl+LPw;Dl~xZ7LhEOib8748au-j6)Up%)?V5s z209&A?u9^VvCHJGSm7%>CKL&4ikO;ouc#)!vis;Id4WVGI+7y2lqm}+*uUq<#Zq5$ zxT11y1!f-4j|Q|)i2Z%D4(Eah~;rk zF0RmD0&gks>R}f_plXEyCvkqwNqgazhfXv~5Hw-E-{A&eqkZwmv{~LR>F16to0At( zu@c~XCTcL7GW@nLy^oW9Bw;`HhQz1W?f_Ll%}3EO~Dby_KO* zgb@zBIR-7$`H}U)Ut;VP#h-MEYMsublM4o*_oSK-{~J?c{Tx(stb-PuBW_2-vIhYM zEFhzG{%k+;IbkvZ8o|4~>xd1{>M-?oM~Bv5!K$tNdZKo3z_vrCGs>drXc5l2(dKCw zoY0KtjgEJ}G)y*i^sb7GEeWxce?*0zbJqtb00#1|6Tog(dkx6QsEMr`O9?s3f$|OH z(Y@NwR8E4vx_s|~k_~}j1z`1yH~^CNnl#JKgOh^t;%x5Fq)~d=^y~F`F4{X|S%nuD zg4wm3mi6KJd=(}X2la|C*X=ZR`Yre&TQi>5XFAhIa37xi3qvF!A2n!IP<`*wI>s!9 zXv=YFqF*jMxL~cV3ZeC(5I$ZH)@o^&r+|FrmeBnvj9ofLHhhM@$Q8-%WpbOja4Es+ zdw~=L^C6DubV~vGIzCJ<{6+woj=KI31UAgz)34H9L;CM^D&WpLj>5D6q}n6KMTxIO z%J$27hpY`yb+?Dm)J46^4nDj$42jRQ$BnsXt@;E+W{9W0?gYwWh^0L$<;*d~d9Rw9 zmDdjB#b%MoiTV>)F*}+6vlD$#yC1#$yG<~<6kh;ku1am4fdX^_omo098~#%H$HTHp ztkx@(l)zqVT@f68eys1;xDN6OYewcZLApqAInMO96X#*~4p^#oS{bCCnxxbOcX}(k z2s0z6Fw^-Z8EbRip5KBf8TI9NlZsl|}Q2P-!EK?3k3DZ}p?VnX6V0H}!sQz2>}#p}dU*vM4= zIVb(6;wIIY7tQ;yz~o+Gb_OevY`}VqD&=&(hJ#<#ex{P{daChaZDDQUYI^MECSu!g z4m-&8*rmD*s@y5*bEpS$-=ThKiY)Es*d05$R?*W}T1vS5DfYu>L_C4Mv3#`xfM>shCCaB_TH$O5qGbJJm z&e0c5RB(f>sD6P7e&kVYcw;POZhQ-6DlT&6YE#PiK6Z6w(13~NY-oIc1KhQ38Mo^V-3OFc$3k@=cc{2S#v zl3&?j;A|d8U`nFqj6w!kXG@1_>frs2ie`^eopJ%Yh-&H}ymC*#B{354d_TR-O${q1 z`AyJ(nWG|u%Z!%B>SAE8`d4UmQp3m9>ofmru1tDB$E(jw5{ql*6)4k*+WoeXtMBmL ze~W%``ok%M0qx^E8x6KEA+n0xO;^nAt|1^5n;F3nVDw{WTE?UIWfmUm+1?80jnt={|Z0vjH-TGBx&lJrF9+bFNvisC)6C4>Pegiw*U=`i*jxoJVAXm0KEkch(xDiy!AaF6+Xz$ z;i+g)KUhfu*{9&W-=%=)D4M_t8CBq$EYO=~ks1A*L;u%0@U1s3EtBQrEENJ134bjH zy$eJsMt_`dQ|~6kf+jzYjjklzl<*K=$W>8|ZYrrS*}bA$Gm>K2@M-mPRRgX>+knAv4h@1U9QGgqr8Ew{99)Kowo~>S?#jEggMp1R^ZA& z#mX031)JTpVvui-(jdGia)@q4OzFfB0=@*66byX5ZNBu(snDZR7?^lU1Cu12#PTxzY-k?PU zvpD7o+jN_Z7aeW5g|*c%8v6B_S8{vzQkRad$}~UfN5-zQ`6Ne0N+X%6F3@|psUg;5 zBMhJ_hY)0sS%jj-D#S@P;)!q(xcY18FPffIsTqm19Fhd=QUt=TTlFguv14x8mee@g zP`1NT_Iz8gA{9JBE4v2v&-GnjnP$8HPu%4L*nwKXC#P9PNzn+ll$cJ@A08EF8z&qN zBQ}PJ2n7Z^db@5;hF7D@L=cqvY03x=*x{WgYAMA8)9WSrOQhBLuS?2ZZU3-+q$G}< zn$11wJ=N9*h)Zu2#^~|NxeP(u0{vsj4B=U>mw0+UXSdI_uccA#du|C{4md< zY$(J=a{=Rman3?+Q`Rd5(^UNRdSC^!B<_DUzajBYtwXsn?Qf|l!4l)JFbzENB2L&s z*PZ@kDPk#pRQd|nfvRzmRT~_9(tIV%{Q*r)jPe9)~0O_j%*SUOnFHO~=y@h|-{KRu$*p$=jC$uC-D^vGE&%hw!L7X_{|O=D6Jk zm^5#A*=)FBg-rY2e2HiNqIPI+7^pG{ZFxgU2fQD&TR(dCq&oYx@OvhQKkaYhUj`Cb z>i0`G#A(16KE57+l%d@OVcWLaD-vs`7D^#-!Cs+E)-D@jDU1O7GZ=MsO`|_{+Ct5-4gZUjyp8tNs=9ZCaGkVK#3g9dij@R zlZ56ijT6-g?{HqE8XafUctJ?zlf0G!JBbpTXj|d z2oCNt1`;MOF0>N4Mc#v2pFl6aeSbABQi+XA)g~8*73U7FpW~JJX^0?M!NAnW6~d~0cXJAqvQt_4TsI^07T?)9!Nxb!l*^3p!eDmI zFPM)iX5;}B#zHm{_N|S0&xs-eaG9f6QUd)6+vM->>5+C3Kfle%(?EIV_emvs$8G_d zb6=1T4bT8!6L`ZMrT>+{>j+RO%h&`(u9HtT6obMur{S)(#$0ihb+^98%`@kXJcV9JDP9fI?yWe=rvjXG~lPs>e2S(Z&QxIRqeq|3>|^#uqf!q_~5p?(G?G6()^3)4m}+* z17MT)Ha}{L$vPhih1!m|6<|ZNS%Hf(9m~Qkb}OH_qj0m%3{p_F-XwkS zmla=dkf^~`2P1L{(UAuTvrZJ#OF(xdlcTg(M=RZ=|EhNz!0RS=k5ii(zDQ%9%ZjbN z*G~DVrs1p|i_rc$am1Q@XV!3evJYI4oeXB$RSeVBsGP!ktUn@dRt{fF+Sm1IX9+Zz z?QVMhxkt}$K%<;P-V6af29dXg(XFM?5^>a(zkwcoUfqhu8pmh#n+j}a6g=cT*n-@g zNEay9VoR=yx4iw#{p{FYUGAW1S+I*CCocnse$B{W1&oyATw67m#nqJTta@Ih-sCF1 zl)oaOHxCb13-zb9&0@@yxsSeN-`iFylasY@mRv0~vQT6Hh0q5}zl=a%yG)K8LPQPP8T90J{^fBHhCx-xi*b> zuT&^Qb{C9@m?%IIJAC4*hZHjwc0Z08?uJDBcVs}*Ify$-Pt zD32A~Xw-Txn^b9P%O|9n=4<;V?>rxmCCL;(w`QZ{#Od*|!weeuA97Oh;zuXccHrao z(~PJ3QfJZ(?vVF~U5xMK)D0~h9;v|Jq*G5fCfpc;(?Nx2NC9Mdup(n)KU-AM6&1uT zMr`i0q+3Vk9w{507&Fq63~dDCWUiryM1>b;t69xEguiZY0TW2Y*G;$nm; zSOlG0ft$0aXGT*-r=H9y@Ee8(liY2`yWN;@O>4Sf*1G0On+>_s(5+5`J(OFmoN(X* zzCZq4+79a0jjeK2vvPBi=xAUHLvD^oDK&T^7-?AKs$#p)NxOfs?0U?(yp6U$R1|c2 zl_%W?q5X>&%q0e^m+ZJN#yk`UZjYcN2UzA@(XP$~P>Z3AED3j8U*;u9+_Lf)Dm1Ci z1DXMK7?Me>(dbwVVhL8%yzQrqx6q?#Q zGy!*)^042Y@h#8D z=X$H)FC~R*-BvbhV-i>#)0=qNyQB%fcI1AxXnS8q5&(f%qgpIb8r}NC0Y6B7gDV}H zGZM*eIlR&IVh2iQ^kBZZ(UBQ~%ht!{yyt)wftav|4jEbe5PUKR^oIx~)Gu%xiS`Tr zbbsY$nALC=%thiGCI%p$jzmxuAoi8lGAJXLF?jkiP`RNyJ#2t6iYe=$L3B~o&YTI}`}GJz4=MbY}nZbCJHJ7^vulF5j&D^s?Z=b$FGoO3rT6@MGT6!7dv5#H{0W#^sI z(STa|FYI>Q9)aonR@|@KNX{b}q(jEcO5=$)SnjRWXRG|Ay4wWFF>gD_MXQb*R43Ue zytKEQp<`)(sD#j+lY}s73y)F+^J}bV}p6 z$|2o``5v&7m$1J0Qez`Q!*+8dm^Yt5%rbh<}{$*DOaZ#p1X62*u2zTH7i zdw_Rkgl^(2?0jyZH1^;5KTv{WE9mQ5!PPm|WDWi#=r=kwNKr%} zQ1>Qp;v00OlhVSU;E7QLY&fiSDZ&ElJfkTayBtRNluFxw{mhl?TX~f%vW9ef$ONFz zHKmeaUPm`n9JA8`b!`OLM$m_=^N|&fR=Q(1Ak8Fcz@4z694Ccj_|pkof2I6>>pg)g zDsuB5v*p7$rt8USK|}Z+;i3Xvpa#q_%7ac@kr9OSuhj)4TFN;*TipW4SQ&BwZ*VB7 zzz28zG_o>MZsWqA1T-6waIG(c5>|_mwk~CpcORQ_+DskLT{ZR<^de4$mwP-YptuBhTQO$kE&Ct#z^>$R8@M_e`eQNk+jP@ zUsJVuuq|dC?q!O-yjF5P`A_Mwdcn9i)YooM3&DRmdFc;gZ{VMh68N+TbgZcEUL?^% z69d{kf-JxBMAYfv?1(`e4#GUS%0~@k;pOD@CEag#n4*wF%%s399jBWV`WPu$Sq0_8;uYwwrc6+4&FckKaDPK zQ|l^ZVc^>wsshPfXAp-$AGO4D)!`^7bVwN;#f8HsOrq8gn|D#OVk=ORB7q|#SBmVBLIXX67KEMga|lIeI*B=YVkug_zF2rUmj*<_}+lqQy z?{8KtIHA$d&H4IIpT05uE%A_(X@_YFAr*JrWXtP!oWH(rJ+o$k7$fKG-iu$4h%8n+ zmlx~;t`*h?TmXsCYQmWn_#>PhaMbrhg<%;Z)Yj(lbl9jb#->>`NSTY!FBAfxH>98X zYpsc-m(SQ%{`O@~+mD@r@%3)V@#9CEe@1;>aW8%VNvYg#s0y3}w(dGAzf^Y{vax|A zDC-{T{HV0V81ZZ;hWAz7gnNlw1F}#r7zF?ma7q-TbN^B>7KyyR5WwX86eQ+4O~fWj zisF&X?MlaZ0rDRn|DlTN);4IUa?6=a062pB5NU-mGQ=&!S~o;O&LDDWVq}%vKaeyF zS3;k^Oc9T7cI=zPb*=e<0-?_zEsd--bWA0J309m<63@xV>qV?sPK%r7a`vc?s2FLp zPpfnvREyA@wC3iBZ0GKQPw!oXAPH-g3eHjBTiL%P|hJZl2)n<1l&#vV+L%!j; z8N|rw5@kEBdwDkA5A0Wbd9ABRAxRV#lCUDF%=gO1la#ptgAjJJ2mH5pDXuCKBIh5Z zIKx7qhx%IAH_Mu9)D4YT!{0McvD#P_ zb-O0ht`LwelCLVX`+uNwGzGerQaCLgJNWBm=z4qDRQ9>@REE+gFgd(NT}-`P#BGna zpXz?f^w>bZgnL|w(e420e^8jz$FDI;9fFfUF+Gbhf;sAkkCWjuI5#(lWdsSmkk6N9!8(SSAj%EYp&^L-d zj93OF388x1{;nMT<)14aafW(L3}C8O9qK{PGWo3!o2G(<@$4Q9L*=rO@%v;tW~!%j zMn8~f$f-_-Yg+@d0?AUh$BZc~Wdr=unj0m@KHcC0cd}rjSg2?RBj!ppuyM&cF`sm%HUz}ahIJ=;>G(@D7Re*5a_z*6D3}k#n;>MY zh)i0Oid2c$7O6pv_hsF08NEsd<-tLI`)2n7nbdRdL|sGxGiZ*)1Iz`1Oqrj$+QoW@ z8)&TZNgQ=DH0Uq-OcEF*4;?~W+|NQDJMi2Cvb8a}u}7r^UKBejbnAUcC)F@Mb=|jw zSYKCDRZIm=CXgEAbrK^>www4x1zOwr!#BQsrXC+e#(f^BK}zLxmi~`06PfK}HHe2w_SG*!= z9s@>|(#X{86AK6-%;x(R9W~JJwS;Na#WyWpivpEh)9;b0nSoE}Me-)jsvT^IHW?#g zAc7`3v3Fd>`qAe>^P16|Wvqn}1@X05j2+CrABEs@>G3(1a{H_kCt2!eC&&C9k!m0) zP@onx7n{!gehip;Yadg%g(Z+8(r)(vk+@K%4=t!|glV_ZpQBj3L!)NIC8eh!vy|fA zbt33njtH2>EiEfSri0Lo9zdprPs>7NUysfHxNVm^0=B*_0##h$vqjH*<7Pe5quO#X z@5D{nxM$GX$?SRLtu3`Y{+2{O)>4X(F$h-a06{>$zxN}<0Qp?Uuu+Bh1iBmqh!>)| z0ZGy0g&{t5{797;>@lLPnh3^M8SN`^Y?(b+7#G{+Y9^X{pvevP_xpHAn$zk_3>-=- z-461rBvbgD44LWN6dVx!UBRX7q;Q?x4@DI^eY*6549F#jY!+XR4%8R04X_!~axDEqylFxC%v0J^nHfVm7YBQ7pk7M6uBMQ`Rl_&uNz zbBVXna*+@YM+lFqGvdmiyX=!|BJYVu2yfu>79HFS_TPh&DPEMq5*(D1M`Qqq=cAW? z0D^W9@*+lVzH1MUpky-@i{D1S>BC?0Y5QI>2K7F}{CRzubO%?D)XJ}=(@$cfrXl>P z0mhl%(LLi?m~uPfQ1HD_Y0Z$Z89mrYwWhR!*#+(==vVJ@;7-nwzQMx2W45)g$UIGp zTi#-=Qw`fw2N*QCSmrd>Hr<~@2LuuvqjU{gpj4*Y$&W-`X{Q@p>$(%_RpbGzsvBFJ zuoyRM2?_UkXx8*BoREGUc{+ZbD=ndFkD6Z<*L642?`lYr%wm6mzk~JV7JqDY@F9Hg z)n%PbL$3!GXiShYO4^T6@PPO@-qYwB6o&;0*UZ79trR@7snaARhmb$4YtZ1(Rr$6@+f&riCJEzc4e zus-9zM4)jet&P=s1nF6PVyl7rrXK?N1;AIPjmKBdC8IIWW{S1~f#Zen+dm+HX9Y3H z=bX+CNPhsX4iQf_ey4Z`*2l<0`Va@)t3BOyL&AewKl!-o5VMJ71PdA6j|Jp+NM1Hl z3M48T!%VpCtcj4`IH7!~FM#cE2(YvpvsTzRTWlr<@~OV3hp5}-=L?`4$2JCT>C9$^QTdj)V%n3#W_+y^-CrdgiF`>Rn?SFVd}CG7<*(GoL) z{02XZ7Uu_nM<)|dsvO;!ovKI84nb~5PpUUcaQsIZB9JVmEB;td7 z=f%{hmJK-Q6R|0v}iZf zgUvdd-@7YOr(EVS8%ZT$@}#JKEenu0I#tK#PtOR=uhf>njPlVVxDus!lX267KpH_S+M%-3OOb!$NUKPZcujM(Y!i_GI!fpSH{IQR)dJSp-7JB@u zcnmM6x;G#Q4HeH~4e1uOg=3U)lS{zYsz<)NCwl^{004fn*2sW9CFsma?q?6VgBg+5 zkkE(1Ou39nt~5nOTN}rsYuS91}oKwP)6STA&74$r#BgSIW!v;cO4v5tkgU8>+ zT{7PlhGa<-ErtU2gf>h!_T$GX&Z6TnUoRWPnzuF-tLNrTbo$pd^wbgPgQnKv?sHHi z@;4`BUW~yY$TkWj-EaiXk(5DX1|zcQk^{c3I5#26p+SW)$CK!@;V)eFrL#2MzUuTf zRQiY|`H#{bmX!myb1f>!Hs#cA^YPg==A^c`+r4Yq3rt?tR|TX<0n|IMHNCO8Q!`g- z<;nG*{L4RrWpqK3x{H7r>utU*%2MF@AXgM$8S=b%Fr7Tva9Ywz?qqYW4E4^p!yw`6 z6$&f|#jz12EFi|zYs8Dd7kd;(mB)x0T%_qF#chzwP)t2X8#{lgAp!q8(IDr`Jm|>{ z{#%rcf__$>II-6C{dzcWYpLzXpkS=iZRShF)ry;|8A0vzrQ;LO6*htbF`s~^vlx<} zQ#T|16PxrDPPx@R0S8UPAuFI8@Rik)t% zCv&&PDP^1P;}S5-&$;#ic_D2p^QoISt3y%+QHL+f(fMaRB4W_20B=v_djFU_GtzEE zkBp^Co#fwMdHh=Z!;u{U@h1r)X;k~@S~NqpJaH;&qJz-4L13yReJP!dqix*OITD=! z5JVeaaOY)&)K$&bjM5Ots*GS<0g$0w#F@07(P#o#_Gh4UD$L8q^xB_o*+1R|fTxdq z?OPg+wa};7d?r`k1fjlx(*|WVGZE0_9Xed+=lf+wR^Hj?~W&H9} z$ulIv)kR6&SIB6EH0&UU?kB20%9k%inAc}vzugC^d68S6&HTW32DJ{Cb6`$CFPw|d z=vo3&l6OoI&R8EQI7$NNWE@kD#H{4_;Vk+X8k6-lQ%H^e=R^Nhu3Z02OA`?gqr6NN z>d+wL*YldR7XYN0!N#AbZLFgt(-cX5PN_uT$MJ)S_5EylZ=+{mFQqR;#)F#UtoTcj z2%5SsP`tlvb&Pz{iLGNH<^a+G{u!vt6$kZ~tRE7v{UcI04CliE{|Cn|jL1x3MqHV( zYd}4Ha^ehedE>i_YEcpFz|P@!w?(s$$iO>A}JG)dNP8&b~V>Tv)c_b<=Wsd+;R$2@%w;V?h7RU~vwu z4Jj!}XVg!IUjbh9yhVv02~PrlI4DoWRP$0TFgbZk8O189gb-#{irGSi-r9#HQUbEX zHPJKhWwAM2-;9K!D-kapfwpc<+V#<&8^)}9T0Suw8k4eTE(Q2nP6SG@QuJhpI>C`zi0?zXQ8AXk1HI~|7hiH zoDr6G3j0G6J5uD_fCp@UVEX*VI~L)TAtt3o4dWS54tO%wTW>v5Q|V>9XCm}1Xx)mU z2sezD%h;{LT(s}V77XJsuS0P=e54DH_etianoaQN1K9e{5qev24zchL4$Wz^_q2(B z`-X4;3`W;cKV^yFt7eF`c*CIETY}ZjbnJSK-r;}CL^I0>sg-8So!VwM-?-YUKaS&( z2&2KDSfR0P2y)N=N_j0xz%~nG>-Tc;pXRe5v$&Krq8s;`R{DndUvATC3{&Fhcge6y zP6i$MubKPx2nLkzfVbH*);`rALb7?fFA*bo6_)TErHVH-J~Rbr&Vgs@a+#ls7fX-p zgqiqz&yXm8z@w8-TQ)^$?btzjE|DE(?vzcXqEQNEnU2(oVnVWtpaF3B+$FK$HlPign-w#W{S*VEQ zxfnL@*sv3=-$Pj}<0rg*0gc#~ ze?5Ej4rj+ez34R}j+;cXTdvur|1ji`Z9+{9L*>zmnhh)*3WlM0vzNIF_DpO}q5+Xp z1TT+6JTu&d$-@W|)?t=BW2cP}W8FQW$6Pm`#jDmV4mX8SWnrHsUq#e!wwe8gY*sMP z?Fs)FIH5PG8*6}lRjh7F$w=7Br-K54ip*AHMUa2K^BVv$ah8P4a_T z{3!<#a8E+c)Sy*Y?D*>gRZ5ZC;IjuZx6wh%cF*Bu4^ z%{G?|V=Gc>-6TC>);({nN;W{qSHzbe(7>8;WIr$Qf$8hcIj85l(TM_l{Ihaxm=v7h zoBD6La46Q)o;3RNV3`*l>ybpifB^w;Mf?QoQ-?oY`q@9mkCM-@;h#uykk{{5qTPaA zD7R_hnaxq53KidS{>U6f5I+6d*q1vaOZJ|7~mk24~O3)4{ z7#*^O0Rmojdd^Ogr+9QhpucyBdlH1@L$vtV-vnHOoY@vR5DE;C88D4r+?}S|Rp4`p z$(B!VBHZC2lS?6RzF7S23xy+eY%g-nt$1mj?KHs#y~W>+^AMvi%`*^(5JZI3djRQt z1*hG!mBmIRW!ifuPS$Y9f=B{ABo-b@x3^&a$kF~jEN{d5kxOxrttq;b??|HTI`c@^ zwk}fQ6LgmQLJz{p!W(HJQm@49R-n6=*lLj~<*Y1|`I*GP$Pl$QFPE%@xDS!k4gy_(-d z$QJ{=f8NdJgj{#^a9lD-`$vjOV;rQ0CSd=22)qBl0XSLrdwZK6gh5%%@#&hj=uNuz zTo@g7rcm5t_I{9D(=~&i9T6j`DsAzG3Rq&z37GBwH8@U6LX}DX#jj5QKl!vau!o5A zXl*jslb_S|*{g`L9Kl(l1}SXsj+WQ} ze99~-(H{>|%RS|C@UZ%6jZf^@kMeg)}v^Y&pen*=m<@u`~WGuTz{lgo>d^9WQv z9<;mngYeJB*TfJ)I*)E%vMnzy#7<=RUrIES?NT7v~Of+eFAy!R6_EC~3fbB98 zekkeqnKU80QKrUbJIK|2<#M;*_9{m`xglZ~$Pp|ilg=T4^~1q7O@9SEp*}EbYN9U} zg~wps6%2cl*4f^*XmzWx^np#N>#Y7${fG+a;pOFNpQIX}x$ZB~Qk(1dlrMj>hNp`G zV4YHT{1*qSB)a-mpX^+B;Jq5;Mlg)xX)Lq%KesUG5eQU18&7lJ%e4)jfC0{=9tOGp zp?nBi4Os0%EoETO7BqX%YOt1fhzP^cXU~&yH)_=41)ubO2Lpa)XX5kBK#Eet7+xA~ zhLI;{t2CL+cLaRZOKw+!0~zJOe<>}ocl~Twi}q}o&~uT9VzyvW^(5k;U$w4PGk?JJeS@Y98;&Vdj zSyQC#Z+|U#-sd?Zm%dsrXd5(_xt0Qgclx)!b0SN~LSImL=P1nSP$3$N%a2KM=+BsR z!(-cS@%9J|I92&X{tY{+GlSy2(ZY^4K>W`;St)qvI%ssch^2eD=V4}u-4O?!(PBBV z=}!mcBfHtVAiAe$sE!}`egw@CL6)(T41^Dy|DUkqoh2iW!yt~H7~Jv4e3@4A+;aEuj~?Z8Lp1bFg;TcG*P}W8GxKPERPEU+FhfM(EfINqQou?< z`mpcZh)VxaaZ=P{E_r@Hgd`+j zp69RdW9W7E0D0G;2d#2Cd9uRgNtXrp`qK(FoVGZKN_L>&knic2a9e2^(YOu*+}s|Q zCwofda8UU%6(9U}wApf~P556|YtZtlM`TR9kf)p@46`pz#>Z;VQIKlUdaBpat=27o znEfwF4IEK)@;$VON>lDnML)deYQzhyHqA`YNnVoApe%i}KNRpEO~}QYE7XhY@RU$) z1WId%n$vS`ApEalW}&mwbVDGDX7n8=y5{Zxzx$%LA+ah23R{_g=JQQXD)W!HLwinW zL&X|Iw*(-hZPi1{#_-qt`tgAP{y0*%9{WYs=W^F8ixL??gNHR+hKzJ=Wa%%~#5!#v zAgQSxUNPYnUvKhZM!f@jJ^HChozG@O9k0I7V#K_wA`WU@cV@ZdMeK}+ZY3c*fsTvP zN>#le<3;~~3@*`eVHTlU#qobaW+u|pc_(`rL64fABo6XZJrFSyD|#|xg_@r0X~go+ z9!6#E-Nsq|A&r-Sn^5zQlPrH`&RGpW7Q^uR&vn2Gb=Ov6hO;a%5kDi$&N5@yvb+lj z{Bwe05eKW3R3d{rfyzJ%5gpML!EZn*H^1O%%GL)*VYssdN63su}& z1R&c})!}~IMhC1*RO*aYv&mIxUILyBSoL#RCpf<%wi%|D`$}Dno69~=67kVm5!C^Y zl|G?1j*QUOXanQCWpH^@7}nj|_baiY{P*z~hMXu5qSqn2U-^|;tTEh}a$#(8HUyWg zz@Ij_uwI%%lD33CRQ{bwm89zL$3ryXd^G=F^#sDE%V*c?A;tvQVtESZVtk8@d91cv zF2vK6dMNC1Pg?rRt8$NcXaIZ?JvBB`dF`=ip%PoyKcD0okgl5Vb+(RZ{_~QfS~5Ke z$NvG!+6U2_*a1O2FhtNmfs(j1X3-!PB{lUS3-E>U^!SVUzN5V;4@h|*B0Ek5$QM^N z8+t$v_F;XU2U|{$aZQ1y64?0vx1|`yL{lVfPL+d{9{v|p6`KpWY)9?EAJmD{QBkuI zG#YMl4`$2z@799pulW8oE8hc`K3ef3IB{}y5G=Td<8QCI6{>8G=&AJ`d3&hZizhz~ zIlg{RQB}K=b%(PV;aU8BfC|CMi#<$!8Nl<#l3XuCIm6F-hjobru06V`cRR=@AJFZDLk^T0> z66y*jjLM6&)=0$+--9^w@_uCTtp1o)OVuvoaDw1AhRqUD%;H89cW)HGP6n{;^-|9w zwG+}PGq&JA&MW<=%C!4oNeSJxp!}AP)b!BEV5NKT1j#_##-PrMwM)C#BJCvEa_PN1 ziC3YbBu^uiN{z3c_a^p}VUYFbt!+Rp)So}VE;D)f{tmI<-=)CHplUx^)xoi8u)?r6 zcBR-W&Q=r56}q7Pg&V(>>;aP`0BfmsbJ&(wD1^l}4y{m`22K}wKI?ty!(tPVpj>>Gf^Izi zOpbV`N33o7q-wI15_2tfQa)&AzbXGX`=m!NLNkh;Sea7&Qg8>KL0)yddH=|mk<=-Y zh`R1%tk|eBc{C49wM{&Oj{v!yC_%gjD2NffdtwEt83@b*FmejY2v&8sy{Zuma4Ejf zaGcn48lRJU@U3bg687j_q54MpB3xsv4%2ASv)~G%l1;y&Cxr`$!+}?GW$|f$+4-#3-71urKXYc-~7VvNlCD;Aav$9Kr{B_ zKmaV{XWE_Z>VJTkYl85v$KufbLImRfNk}z7ll%_JD+#i)F^PhnP~FAdYq3yoqiu25 zYPFRp*xxwqJ@fhpj83knee7%%_He;61ngb-*{bD{*T%}8evtnJAX-ba0cmu-MNbOa z6&Oa2e?+#Gt$4#khGYjMpI5AWoJKB09y&21CC;rP2*3-<^W)Q*&OCCL4g9?5A(}A@C$ubs?syrn2eH!l50I06i@M%(iJYyX;rWpN}o(#F?)GOJH2LGJx zugc)!`I}c&mYt6BPckmX#n?^+)0%TLWhSD24V(tCDqtOSvpL!cR_3^_)%r1 zF{qnF&#F9`C2D?R4AvU`oT)p^*)i4{#KmOu=4HuQf0_6`NhCn(|6`DJ=CH5cwtnpO z`!VgJ4~NHnMZGz3=V$#Oh-`{E(V%@YLe|S$AAHyaZl_TmEG@_Cxfoix2nU3_GAf?oD;u~^E_)Tixm=LHRK*dE7!vTEsz{#h2^fY- z%euKn?5XZ*BBn+_daWD%81Xj5j~p*9At}FyS@l&_Yvd`UEIY@dw_G{Vy!KGswe%e; z5CYZfanX!=x@Q3((i%|NTD_)uuZt)UH*|u3A)}TcS9A=LbpSg@K$F}AE!r32)jy@# zEYWgDMUtQb_riH+(f9{_*Y78Dqf|Heks#Mbv{TiMjM0&|kZL1(R|?-X=QL7!vzknD zMVlvPS_CUD+|Q=%slR%gFU(e4BDGBP0e*)y%Us~s|47dQO_+F!yq=Dcs+B51s>#N~ zd5g3D*sYItmX~trQDkf#Y%Q|N3ZH&W+`gu`34EzN4?1%MN<*hVZeocm`S4zF*pC(p zI|GW`r^*GOC0mEi(5)9GYY~vdP8qv6Kc9J4bxH*q)_?;SrxGxhlosCvTo+em^P60> za++8Wc+XFi0uJa*1-&%^@Chfy#s`6+?6?0NX^|dDH_**~B#P=jbV_2;c4$;@W-SC5 zq%K)w2xn+2rVb|!3eC*0qR+FkZZi1mE+%^Ilq2-D`0u(-q98f?9B3gk3c62-3Mt}% zGci7ql?wa49L2Uuv1Zutxk4ceoXh=4EeMq6mbkG%F`~euEDWLzb5j>KN(Jy$1 zf48-uD@K!Z!F&&uUpm^~!OYhQPv7b29yF?8<;Bj^u@0$0Pat?X)>{8PMR5)!0?L}4Xty1iVHMxw1%w?qS}o9t9jf0n4dkPs#uRRA+*p5XdH zvNhSS)m=Y8TEuS}nLN&ZvIwqyq1Te6dv+vZ5F1f!y+idBikBR?5mw2ZCmSXpG?tjR zzEk2`0JQe+=t6ybg?>9SLxl6@+?fm>oO1fcYjRL;u}JsW<~J##&O-YTl<}~R*Py5T zRoFXdA*MU_=CZW6fGj)j4I%^mGVv}M-ZiM_RU%TP0iG4byMjsau<%?F7?UQpM>A9G zuz$wAJ|Tvi0~X?QExjERGu?=nXt)4lx-^&uEy_xHVr~H}*Kxr?n~VLT3<*5usK41% zjhOPXmZaUI09Rvx2Af}D*iD;IcJ7b{^(L_4+`OpCr?Mk^syc>#+QY2@bNq|bKt9p` zWIN+P9ClyRpuN`r%V6ZH#^`vMCZWKf5y!LtM^=J&KEfN5RB`7&xS5}M7*yR81vsb zUkuWSVz#1+n0u~_0e6GiqO}`?_HZi{SIoLuEwCSL)Y?qs`dCHhW~gtupH*d)z-W=Z zQw@+(HFW=%?_3>p{^6?nEy%|_miMqQVwE%P` zHcacPP*0V=LnUZGfh=BtMfc(ca`qm26A&K&=o1j!}$XmF=23dxUWVTWq03iCuYmUi> zdzkVyt-VUKY9J#tx(Xp1^Z+}vn)N!EP|q1>Py>TolH&o2l{lve>uF2+apfAgZ_LeS zZqRjZ;+5i%5~aLB3V&-r&noxW>=N#KaaxjE1_+)^ZOy89o}rO&?)rAEdw2D;Nm1&nc6e2IrwUc@Ns^( z=HLM_?i+J6MWhYzx8&bm5HvBL3eG(sdT@QAlMb8`I)#rj!b{J{W%35Evcr1I5x&z4 zEn2OE*R7${1U8OqMH7=UOmb>3?(>o6kO)d9(@lej=VrBMd`yRt8CSRsQ!ypr01d|p zw9HBY_vJjrk~5+;Hk9YZl;R~Te-}5!efiGfP+q5Gkcq^}sQcBG8=7U36}kl@i8?&9 zz9k*`d$@SLRU|gW8ks4`Yz0yowI7fN5OFxUAo9qmyx z`+>8Em>u%DJFjH_70v!nSOWvrQO4GTXH;O#EP9PST>^gHctR!zEtAUImJ3#L#osokK=77tf_ih|t(p<-B z(bX^6!3fTJ_mkkU+*6p|-C^toL(L!l<%zUijJ!22)~uX;<30F?Ak?{49R2|LYOtM( zk(%Rh?t}1#e!E;;H)Vj@ffGx%p^5J5MW<5p)3Oo{&HU%&E>NA}UZs~XtY?koM?jMs ziiQA5KSN<%@`Q@uEkrb8`t^yo`e90wvfD}ciRzi5u=`A31MB(4r9k{X@Z`w_%FG8q znwK%NZe^d*w~kGdJ;nSZjivp z(Ycd(dAY`coJ4Z}foFcMfe3b(okm4;vDXEna(B576~rO-FUa$E)eV8m@^W+lSEJoV z-6%&y;L$sm)`g+=YP!b;hjenNO2h+yj(W^*-xv@cXFFJ8q2%AW*oV-yN(A22a~yEM zyIfW=xaGowfi;^;HF|zlB#jdb2jyyFj52rHN{)wI3{e)HE%UY3&G;>d0Yd#gx#Q;A z4MEt@*08&Av+2=iFLaGH_+{255R=C%j`i2ZDh;^0Edjtd8ZqIF6vhO!4! z@?!4H4U#1yD8;#Qd?3RQ2O3y`lhLOI4K$1#31bHzI9y}$_!&ZUq1rho{QmOO@ZE*? zIV%aw1>MJqC1OhFrMXw*f4}Xoc21-0a5N_T7{P%u2gF;hGg(T)ZQqf=$6LV@5c*@< zHmS&n!67lDJPz4R&=7LbFrQ0%l#{7L!9F|da&^1nn{pcGDPzxZM!RF zp+TF!|8_@)zX&W-c0)hrEwk8!()R}AgEjL*#GVasui2K<`v6#5gsh6in!Us;s}}dZ3glHmn7E-y z9lN7fj7~uc$aag@f-mHCO|>G3Dl6yg#dLip2R^e%M+u{56N*t5@in*4WJ&b(vjj+o zPWjMd4hHB(RXXlHekl%_PnfLLCqLJbFZ#B!mI&Y{wso}uF5`PcZkUDKx^0}oe)b0_ zSU*eFxv+XTRfXhg@i2*ZNjfyq7-%_!Uqs{j8^Skpi*(#V(u-6@${W z4Mw?kl{)zf+WO&BJouPvS%dCR@2F9t!34-QVs7_o2oc&cIe(P~=>yi#pERo8fB*4P zn8@@1&VshW3%!_!X|w1~KrDEanaPPYIc{@Oem|3Ay{Mgu1x>1+)`b}}8KDJ{dB8dp zb=WD7Y*MSyZ7w|ORi*?>sCTgRw|XX9?Qy-Ml#e-z9K*iFnh0k02rzUAmgu<FAZ&T|(s zefy|3H5NJU&+NS*G10vncq@#0mt5A#COGB^h znkR;rzzn&yU!cmMzID+G5#C{7vrL1nU{Wh&WMgup2xSr@Y1HKyc_(Y1P}c1SVlGp9xnD{(|E4k2p^IG#WiMamPaC zgAy5dZ{~VCn0Dluie~jzQEWmmModf~MD9GsLNuG&oGOGDJqvUqN}vCTU)2VedZ2Ez zdrclbg7-HF<8mon77J{!{%30XdanharfXFh*2z-x5yVD2>Xs8}deVr)Sk4}W2c*E^ zeVP6|S+(*kql`lS0(=C|r)wcWcF22j1tG(&Ctg+BLRdt-v>v3)>BthoMbP0i!`qg& z$}ZIQ0mDbX6a@?bOK`B&ODCTLyk2=!Wb+fI-G>BT zS?63Y`u=C%Y}kDUT<9k$=2k3=o2mPDk)`L|s&wDFBH2hGO)SdYjou}PvJ4q3N}OJk z^k>BtNbGei|I*5lJsh_zLHXLUW%P1)jZx-dvv*B2D3YVp_RbTJKhV6!OXDA@KV=3< z2T(b?<~R9@G`$ly0e*y+z>eA+N{c3AeBxb4RIG{6-{8Rej?Z|m`#)%yNJ+!d%t_4N zo)b_(g+Xim4~#q6HBxi(VoQm!f@(0b6WO9^swQ>@p47x!g~O8Sby_`}V^+U}u#dt$ zdVCz2<$oJ>6c~H8MP=3{Q~^GWacU+x7eKQCFzwJa?}jq(7e7*{7Py)lN(6{=5$Eso zePfNGa?|E;A?xfjvXn0|<^4%~w+#&5I8EI(#hfZ#i{mVTD+3y^^Nj^>C-NIi6GJkW zKJ^?MSM2bKT1p{V=}}cX&H2>TL_F!)2Gs;ldmQP?k3V`s`QiKgem;9s5grjlHBevr z_P^9VcLa;6RpAtz{8jkrG2o5_S+$IUFz`_0s9L4Hrrw)R(byurnr?-Woyaj&$$EK4 zuBY9*YJ68L8QxH<_#08DW%`l$%E9*R3E!=#%-!^cFO&>De{~s!u2R zgp6j7kD~5`wv{a1*IqFG@zuLP2tpeJh7>9R0NoW|D%>9ERD8q275JSprqFrILya{c ze4=G^5Dri(YAXhtU;5G=3{$9DlCqET?&_k`g4ZEb`&{HsL}HoZIku^68sp(fQM4eL zEEN#OuTy%Z@RbOg#;YF(8QTP!x~l$6pd%$adA?}<$&gwJ&8f-Z6<2ldF#0RP9XIKY zIN7(7iQ$a6RMqJ!yxeYGlA%M}yy_ZHogvLuE)x5jh_~n^#@hG9^0OEEB>qxWr-b5k z$eDN9%a=lESlzZSIDQMXd~laFnQ1%)X5dUxZk~28U-I9TPw8)e#l_?UQWb7-4+*!KH0P)%Rj zy|tF6ytM#Naj=9`aKFRV9pr-5hNO7DMSP=P{{ql-Ntuei*f&cZ!UAHbn=@VRG|40t ze65S);H3IM#ung9E#hR8m@xWbaoYJN(9;92EL5$sy^rx^>1$t>s|EigmPC3a)ng9G zWAHcJHD_f4Yx8-dTIBkX0O2SG7Av`CpRD+=aww^GF|W8J$}S3)8bn#LnHuH zvO|9ZXOa|ab$`SAQP8M57T_~eGi!36;c$(RQmh(&YdUqE>NRmS*@|`mIHmk-EV6#% zW`a_Qu3cLB&H{d5venf_ORRBb?nhYj-MjkjkWEAP*r8Xv7~)9weFalnF2RA3>m=7E z*VH~0bVs10Io@VVaj4O?%&KL2o$>2Y8X)-Al~E$xRfQ1T3)f(o6ZHylxgh`B^v~p~ z95n!YQBq1lsCFGWpZaqSPtGqwh z66PaTB)S0Z|?+{wr<>>6Y1=#;}kiO ziuVDIq@_I3`QnSJ@h%B_rpP=QAvPWuR3>3f`@ohTy1?G#VUypKRw+=9&L5O<1Yh`V~xN{Z+E%{ zAPi$Cm!|a<@!lmIcLz0Cf5Vo9iFs>+nwszH>UAX^$shL&JfM(DcLM6_gd-f()AF4& zCLg;dH2#P5&YSoNR+>gyC|%?;M+V3Gl?16g@YG!0D3zL6=qWJGHJH1JPiU$#fGPo{3JPqTt@UB-w4LULwwUc&)yeQKZEw0%(aN1~J;|9v)h&^vU5U|>sEK_unA$B+s zHL)*dzkF=WP^BCi1~;bg%qqso~L4MeGej!*~dnNe*6XN5}ac1{ZxM-80yT z*Y~8$uXiV(6}0lNej*TRU4HZ?r99Ch?tGcyahpOX^<&C!&|FVV3+lf16Nq%YmTvmx zYAnIjQj`M+pIdzNEZX1p)4inYVQjM2wM)(`_QVKU*TgCODND1kTt~(3Qunq`{}J6> zS0%!w-93w{iqU}Q*uE~W7^Dwi4)zgYTMwL>^J|tfEH=pp-m`Z;40OA3R^4}GNqwgS znO!x)q-x>i{w~^(^ER;Vpa3gcSjSQ@r@fY%iV9i3wm!3|xJ>nYjfaK2suJW_DV=+ zFdWXmOBQ&jFMht_ko)%mMhuwgzB&6j(OKfyUfO#av^+NZow%9&4OykGreRPrHa4}z z28+}x)94|5op!FnVPfai=p`a+a<4Pa&`*0U*Y;4=@Uw~vx#UgyPm7=ohDH_&=3uDW zL2AcJ32LuZP%Q2>*eRi^C{p7__6Ij6mcuggIOL)RBh_SISJs?$Yum3zH;#E6mcWLD z-_R{>HZF~vXWhV-fI%+sn8|-RG4o+TqAPlZ4CjM$N2LC0S_>zSD5}DI!wChkGn(Sk z?T1)~qj?oxQTi+Iw|lP!(5JDHIkJD57Al!cLzqPwg92L;;dc$l9G@5LiMD3U#!`-8 zz=FfQeZi#!ZMFdHb_iXRcO3g)Z6UzZ43$%TMp7@Riq#nO-U>U2w!C%Qios#+-vQ`D z?Hu5WhtE&s8Xbapvl8X?fuLc_k)ZIkXp&Z5Zh(PfRcn{wXldLG1M(|g=t+Wnl(-)*-xn^h-?MI4$5AGWb-tsSrsF*69bT&` zPhKx%E1@$^jo+Mu7}cF4-t4Hvpa6A4+>qhky7Od6<`WMU9zDue3EZe;sbt#IK}O2i zE5P(@ zD)FvdSqiXg*m>qsseh>m^3SyQi+gK~#~|MLfd6c@Z0_9Uwy4y?IGQKV_~Os{&3e(0 z1g8Hg7_1l*A@yLr$Id3nYX)D!!#A9#D_>G6EjKv`Em%W<9tuXv+Fc_GD8h5wl=2o; zR*y(2J@m%N$6p@<0|n@AG+t=h=?$oTvi_R8)i1h$(?bOANCU3@-)GIubHR++Rq%1Y z(yL{ZIN9Y_aQqMKH~gMyZrcS>H&&S9wq4lYP)dSCPZMbLt(;B8GIyKsFKrqrvX5!Y zwR9c+-I5JgVaP2}jp)_O(20FL6{VSHb-H6BG|0lNW$ZJMR@N9fg$Ng{JjyA#hGZ(7 z`7C>>p~l_*W4F&FI0;uUHqL4;7fwNM${;#m2xOo-2OPxE%<-*#I=IQb=ZH$EV=W-`b z0pV&cqqK4=5q1VtzTae%0j#Xzt&Dv-&*T0HPYTRmd|9 zb25li2ZVSq`octqtR$OTBzB9^C}_Lj&gqZF+2(s_2yU`kc*IPWUmN7c2dN&aolCq%7N`c}hm^H3q^8}%Em&SvKdj3ehy80Oo_$0ybxw$|%KOb0@S z&qK+*zM`F+1)yCMmxL6}k3XC;;$S%bRT%_xb-+RRTYg#FS@l0xz)!%us98F5)!$V{ zq%QYm#pa@=5yj@Jtwx{J-3Zlsas{s*X)+X3#7-7TxsJfyZd^|2j$hmN(m}y$%FW1H zskl>B=Q$d2vcRsL!J=2tWjLP?jc?iC@Q!D5!A8J;#mJaaydFlmW}L9C=XZJYzdFW*5Fj~11qJN?rei;l;Iy_ zQi@B}i~l|S3C(0{-LfA(W5fmnWx9>aNs!hnsD;xT)RZmxv4J018&cMe>`jjah-%Iv zA}AU5b$b4NE(}cW&8}Y*ecqTX5ZN%kQeoX#6bP;U&8K(6ZTC0z*e^hz%_rVghHb?m_0wO!{E$eWA4a-6hs-=9nH$D7&n^2@ZV{-d zMBL7MjCZ6+xNeHNgs}D8OLh5y`>7fE=q5h$iYQ-qWv+^g6#=BR_A&^qMBfC%Z3BJf zb_0zRvv>8^V2pi_!a5CN8?q2b!Y~tj5)YMla9_6)f#-ZYNYp-LQ!JE}0CaR}Rt2n3 z14VSh51MS~`{rUB#mS5BkZw?cf@XxGvY;Z`>fr}zbTv}M6h^Ftu28lLf@>N207-@$ z4?Tu8elfaM=7ZP4CM@R?Xi@APwt-k3^U!(mg0#N}{QI;JGuL9qiOT8i8qVFb%TW6! ze0fs{K>9X2D5afCJegm$uma@)Ho0c1EJQFCdn=ebMA9mpgk7R}0AsF)eqC$?I`*t( z(>s5kEn;-?O_6Ndl9qeOmZwN?rqh8=n{$5iQLU3^-*&A;0lQo^3!i!y{NnWN4Ss=~ z6W`D_o>MyhVI9fg1Zqqws(M9t(FbC1#PAl*jDgdN+zSj82T}FX*~7%uAK!Y^a$c3* zNt`Up3$7svMJC~<*)3*0Kbp@-->RI)@F+ zvoUY3_fg^QOE`zQBEoYFRWkTGFdl0^IBj5=n3bK#*xBZ^0Su}j-@?1|#N}XCgTA## zm+u2S*tBFcVvZRSM-QmG2$2);B_kp6wxpGExkUU(SK2Y7SKm(rRuP+Dn{;K${p2fS z(+w%G5$HpUiRTMWNax+7;{AB7RikiYr=#rr>5d@292EKS5Szu?*H1;|kS=+yuX!0< ziH7w#J3xCqx~XB0A5uP*uRIEGo!Z8B@9c}>+!LkuBGu9@s-9`gt~cH~#hN_>*-`*S zK)S!BXt@a+5@T$C^L_DkH*z!XN)N{wer}|f;VL=R6_cMpvYCW4_U4D(DCHCdDtB$I z@7K5~7%1sXur=L(115 z7Y19vT=iJL$vrm;4iJ%{dxD_7Ju7i*#F>;-x9Y!~BD5`No^TBiDd8l9$+YW$xs+m* zSQLz!;)D%M?^y5m^+=`Qvo0F?%c*xQLvhJ8Kv9L2v5qvDSoz8#vh$~GJb!ZeA{sve zi>`_J2BC2qtLwgjS!wj}<>l@>9MZZ;Lb{u86Y7ay7v4uUQgJ3LzY>3!E=KQ)NMgmQXq?lI#r*Iv&>n?=fuEqY!$2M_uE9y~94no7USj#eKVqCS&gTT~ zY5mRAj~1PYXpq<7PY5ckoltun7Ef!PTgA++J6^jdLNo^<+%U!(XfHcE+}m|U5@=?A z2>(updpFJL^kV(I7GQDQ9QbwaO|gkpIO*d#h*PIdshg05-9(ye#QJeyY{r^7-tKE$ z*%z}`?e4(auBNpNO`h`kIEWd2DGD)9Nd?VaGG2t#$M!@}rQ1I`epD#g??Eja*;i@e z{{Ef3u6A^92;lfWMY2lW>ki`G&ZBawDWRR1*Vorvv~ky%exy)Dsm$w2(ZSn9?)u9CC1gsvFARYRwe7se?r)96m|o-#CwW2&8C;&7m7F>Q${!{6f<*7^ zIIKwv*9ZMuJS7|Q{vfRx=6LCdf5m@GHWbxush5cc5_EMoaYB$Vp(PAE+optY$b2R4^UUKT=~}zHn#DW~MHd}u z`!Fr}pY&bHR04>-tSmx2Z#Vm4klYQd^%l+3o>C2H{2p4vm!(L?!ke4Z2`c)(kiEw} zwVdj$H{9}+z{(OFwu<{z5_u!zw}j2(pcCvlEQ65gH-%sWsneg6lS=xWhj^ol$^e5J z9sEz38tEM%7zN3;(|Q%Qd`(4rtI?G3CmVh9!_8B6F)&L&)4Nk-5YTA_W|ZE!La#J3 zHz`%isWi$t#&+6XX2WM!!V3(m$WxAYDlcIT66`IHE&i|cGBkz|=qb&H#%X4t;(qBK zD(A9LY3^3x!3n9={BXjcihlq(7%QWtc}{)$DV^>8jac?LW2@oI51tLG!Q|$3V$e=| zb?F>*cs|sTWd-lp4Ho2t3z^OUq-;n!-7&h!}pJ{ z!K(5&z!)N2=6SYDw)C9g++r5Dx%?hLBEhL06up%Wnn!5FegLdb%wF%H@ z1}{9vru`&U1m|CUxS?`Z7~Q_tyA6%N6|sG3sHlagWo7_QhB236VtLq;vDKZ!`bgNmcRajk zo!dFR&WA|f!p$Xx3o)kur}ECV)c1^aiHDK8Q17q5D}`_T1sTCIQ@NzZXLvYcZ)*N035y*rL)tdX3UE`LRxB6PGK$=R8{OM_nsqJZE-kLukX}Hc6}=V3z4h_+ z(?7CTAvIG-aIM3x*w4scu_qL6QV?4c3Lcs&Sr@M1EV5!sf5n3?H z@NY)Bgs)JNgJI%Z8#XHqT~}1)3TNDvelV;(IkRc>5YtFUu-8%eTzm1k9h++Kc9N~q zEd!)^kh@XnI4l5Fa zz&6VLg(-Q%PQe3L;hLgM9gE$y^?aMe2ZisPr)GD-r^xCv>|o~avI=(RQdj=`$EY-8 zG}Q>?z+WfF8N7fr(r9cxd~^p%-jckfrG#0n{|9)?5B28+)^O+F*9&iY|U`*VYZA zrV_(Vi)qClULS{G6pQ!SY_ldJKS$ivvEW_;KEG6I*TeA2uDvRQ%Ith9j7NUULMf4JMK83x)+V$aL8m%pgU>oAWpt7P}cKc zKBWfUrw zHP3%x+~Se)SMP6x&1YIB*7kt2|Ik<-Fz=YcAdNh%%76xnbSV5V;|MYvuvNA`_&fPq zgqnMw^;FvT)HC6I-O%Idw($*ImvRor4;aI7dA!@-!#0~2?CRHyWe=P{9|E&B3CJGa z@aR5?Ed=a8A!L47VyuSpIgNnW-I*K`YB`TSNTHN4P(QntEn5H9)%M~@PyEAN5n}e^ z1+UY8>NEp1njJ?T-b)CqbI5SL6~C$qQ$q*2*ZOwux&7P$FydNIbJPP#_TKZl!+RgF zn-(q0Zppapy67m0-lr9vXO6DCDpB0)j#VvOikMR1Kgk?IvWZNuBQO9^PVOZ@wu3>g zH^EOe_C5j!&hzj4Hb$UN)@GcOA&a&t!a{MD`=ADQ`{j$SED45Zlg`2WCg_$X+nS`!x+Ed-jnaPXu4Sa1l4ti}gIzB#t>FDJm z8mDV}2!U7XQ_Ht>w0~;Lmds>H!%HU2yJFq(w=B6|mkUwwQT7=8B%tx_i0cKc6-%VG z9kvgvCH086z&?P4O)H4tp&3=R1sy79FuZUNl!SK&K?edFKs&NSw79QT$fj}fSQ*m9 zHF5`Cvj-wAg|POR$A~OmlXH?jTHn z&n|AF64a4YXZXz`p5_@$S`g&)2No5J!~9Zy<^S`vY20-PD&FZ2WY9*zU2P#vlf&>v zH7R>lRA(Klh+*H~SAO zzeXk@kx!lZO5`qrRhUNO+ccH)dL*yOo!IuymxHh&Ob)CCy}WoU;w3F`ObVJ(;14El zOE`p`x|e9SRrlSrN-)aL7{*nW%Wx7Nh>8zbfgoRe!-nj)7@0cKRgr|na--2& zX+#y-^s^u#ASm-CnGE&enL}OsRY&lVg6pjVar(`K51oDVOJI20M5FMY9@NjII=!^P zHMpb5Fk4gxFKGp*68Cy?IoL}UfxbxoaX~u1^lXN;BWLFOzDSn0e-FjVt16jm&50kF zy)460Sm_KHeN2)|*-U;=cW?#cE-7x{STA$8+Ms7d6d8Ge#0dH1-YaHNX5=4#dK9G#Wqo8f+br{ex2x6At5CiI~kSSHdjoD6Q0*!U4`HKdCYMoQ_`AD`@}i_~YUft53DGGnm9Oe0xVg5x02c?> zj3Gpn*`2CkV7wfF`2nPNe0K8~*}1&c;u2T-Xm?(6$hs51GA6L9wvjH&)1(s8xRjSb zn!6FoyDB(`I}j*G`rFu<)fPcSZVF+SX&8?YM6=U9Q8XC^u9Dg zcBXlLCDL-UAh3wU48FD%)eOkyCo;JwJvE((R&72uwr3LjOkeM;x}F!7ZMmyT ze3FN)@P2<$D{SivcJSA<2EP3!j=d%7S5u>bs7(~1uBbE^9g;AAVC;m6bk9XDkX9vX zltwy8%7KU0lDcaQoeLnFe)^h2!q-Na`$Nr>_E@!8h(Sz_YaLRE+gnSD;u1SzcI$m( zWxynCAQeNrF{be%wT)Fs@8HeQ%}h_Yl9+Ea$))$)_b)hw`p$1!Av*sX?0_xi0sg6I zwmhPFl)xrK=h?8I@?=ioC}y?|xL5L;UQG9Aye@U}?TJ>v&8b6%LHi-murgu@e8+&c zpdS!V&Cl9@h4ju3-D}f1lL3gEx<+ZmW+JrE+vLs1#1R#`bG!vOO<)dAoi=|5X*@{O z<8H3IoP2l9`RQU3sP8`w>MzdtEJb)fIl?HH*C&$*G7=4n!QjF-w}I9+9m>qk#nj z*!%fJB4&tFU@AeK^vF=ispbzgA4+$9eb~Cr=YM_76zwp5KtPKpL3F{-Y-mopi1HAQ zo?zoxUREPwd2;j^k0=UEcPV#87(1&Vv;ocAqGr=pQwDJLGVMY z_tv~PPnc(B(*z^ylVp-6%_Xyeno%HGSvXSFD0C$Kp|Zz~x%>X!#smopXZepC2|N)H zf@Ep8tM@0{_6F+niB??t*y}>HjNABSIR#B!W5F(A#79~rJTe%6C&Y~<2yiOskXX6@ zh7^jOEwox~vlTc3>}0n%>vCP)796{S;c_(Y|& z73%LuMbj)e(VZ81mZTHP`g{|Q>=g=%L17!mOFm}>*3hd!=gX3Bcrw5um1RNUMwK_P zdpaJ%A(1^tekE``9sftq7_aE5O4|e?MBlQDtLWt~N}yiwKdH+k zJ!gS6Dywo=Q2XD@*0Q)a10_c$)P-tl@xg`D7JaU)yj{xMd-_;$8v z#93}Gw+`1;7?vAI9!yy%OY8PVRYcYc7oPu+{iMC%uSqs(X&1;8xxe9iF$9UI7$H_+ zt-wxGAIwN`q3VJ~$+5Y!t-}(fvWm74EVoDBhk1hSTWGkAMhJaXEg{))a*_J>ygX&z zkoe#}<-znz1>?IqW#nKD_Pn3@Ev4?+;HWO}7DPO~@J3J~B;MQj_gNiTqo!GonLxzT zzCW8QJPZ}wgLLu`(^}zabk<}y?ce4jEXlgb9M(IxU9~=Cx7^|%LVMroDt^PTDC9eF zX6qHf7G`s7Y@4+#vNW?{UFA=F5@dJrh%*wpZBou)dy%Bc+4LLf%~)xuU!*hNr#-Ys zb`3HT10>=ePtbOsC9?1^M;0f=D41Ko17RpcEFwHypfC^uObx4W+C8H>T4|oh(6))C zOcP8!sfUyrP{gO4c;lN+e(X%AU`|n+G>jlIK4u<+XCWseGuwatiMl$G&XG*N9Gd1r z1g=QiR+@+W1HcLx@mg58P3(S96e*cVR^^7q{~)uO56=FUxLs8Rx8D>ROL66}#S^Wf zNS2q>s>y9Rlob3yRBRnsf*i_DjeJl5CXy~mOJJ4s*`dCcJB+RTxm7Rt4%HuqF783PXb$(H%!b0g1ZwZwH+-F$FJaC-5G!%b78l5BKnmR z#UK0{%4<9D*D#I=T40M{YoVHUYpK;nz!?i;)twl(KN$#<{!Nh@HGl~E8xTn({-b?O zzg%K;;oW+7_`Q^03v|#Z7e=v4t=WecpwyT4Kx??rw!X%=-lr+K+V78DLV9#qyUQnm zwt?$2JZP0b#oQo4Q|?C(p2*67&u(|h?NCl|Gv4s;d(bRuwKSy$C5t+ll?3QgXjobR zEkce=Qq(}oMi$AE>wo4a-T3xRczs&$`4Z#PX0<1PL#O!H)ZKW_Gg7qo*NC@;y|#N< z*c(IMYgs5`n%}?u<&A&Dm-<=;r%fMT=shWx?smz9UihBsq$iDrp!c8~PK2{;M79fu zDC^vqb_#&!UveOjqr9+J^G^XgVL)474dJ9bDWYjr3e_AnF-`F;s1dpQ;P;u6Rk1>p z0Gp5kd66dX=#*uKBb!Yt!*o$_W!XWflgOw*htW=>2NZD)3**{|daquWtu=bdJe2R@<7ilgYof{HdZf7(lcgM+O4CM#Gs<~tLHH#qconC# z2dXygi^U`YjCsfTsVFmGR^88ep=&6Gt?u=gFdToT?ZeYSEAMftfnnr|l^NWV@mS1d zoaU6i`loJSkv3LCK*`Z>!A5eO5an zzP|}`SMUuC_9OYPhc(L$w1uS(U?Fn(JA-O}rJGkxwXFV*b2?JM>vK7?@7{i$m-cql4qvBj&INjFhIwZ z{I7jJ4cZ@(yWF?lj@mvoKSEHb9qzLN@+O$;{sp89mO=tOeXecnqF!Gfny<4j*0k-n zv_Mh_c}g?@VN*x=x#I}LqvhFSz^32#-yl$*9UJ9p*h+6Omk&4i&)-a5!b?-{>Y{$< zyC`8O0nk_)FrisW zT$`q)8XonbNmZ{odlLl&x41L<%@;El@mnvtypo)$w|d`7r>eBVDI0(B;hUoyxxyOU z2N~v12HZ?0$ri>)&jRM3fahbo0k#z7M)^&nt_sfW%cOYCHP!@4_u8xXY%49d6I3tj z-`M!9W%|R0*HyL#X7Gf`(h715VxgSK{7Hu@pMJr%D~21Ax+_JA){Vw;_6hKod5Iw) z4s4*w9OXSO%{MxQUt%Hk5drTiTQYtA>K|MX1Mm`qdoE-0$)ku^sHSg3L3w%q?|*3z zp-Z}J2L-zGUvJsl;30~XxjzjZSqKIgcNPTAU@2Pd#ZnkxW#{)JOc0v&FS0J3$cpO* z!7GHA4!jH+cNE08fkDtxSsMpCN~XzX?^~W zhP&ig0V@*{qu?_c=J1tl!@r>{Hz;M6vT~S3qs$-PcQ*ysA`*)dO@>uqq<$Je+cDZs zn*mD+sM1e{CoSl-)c?1i@ZT#16jTG7zhDcI#+SJkap2XB^B9Wurt4tQ=ebtn$W@Ha zt44BLy67DJ-iNzBTm$v&{OZgdKDscnO--u*2?`<4RWqt>rx=6NzV80#V7qx{U^e2~ zTzyv(AlpUlpLHO*xXbBladD=@uWcizNSdK1cq}Q_Le`z(ct$+|&9os%%w9C2`bOl8 zf=_42$56Oe0>;cNlkQzs$YsQ-t};+F#YOIi{`LnFN$R3l3vrF!)f%TPFi04<2T{XI zzY7+@holS$uom$f*zeTnWPDe6>L#1D(0BU;++}h`J<{TXTeZ!Sp;Bca;IEP6Em(oO z0Th093})bmUr%)SB#&S-<;;*Sq&I<`x?^RkoJ$8G5z9R-II@4he6*;>!Ld)u`PAPL z8&%tSwY|SG^GU_;YF1wrp&%gTnRXP{C_s_DVtCS5I?uoC6tH_xA&ik~XYica))fxakFY@Oxm+l`2CWmWA*R*ud)8wcoOTPAG6!AvF|r& za(P2*sXVxS7Q3V#8gx$;=w2q*z}XE@m|i`)F}1Gw{9E9b{dTMA+k-oLH*H^2q`tS$ z;m^QypqvFO0kp~O$}~5t`i57Nc`=PycY$5Z(h8I-L$DqepcZE>`D?+>bg?9C?-j+a zgk^vo3(Waj#GFWuVkQ6ePiyMk`UyQGpWEoy`;tQ_Hk|&T(r9KTyG22;z6e|e-vt8q z$*Q9QGj;w%bH#wJ{xX2wkBzmmsc-Xi8`a%=qIyaUUdoDq5}7)Rztd1KD+iv2DfyV6 z9T(RX5u&N-dE{_ZwGuNUe1Ndoc5{;jDJUfI66O&kl?>xLLFYN2G|j$@Cyct72(xOg zGgVkq9d?>Of58eufdztLmP0R4o(-_VUIqmL<(v0dH7^{7Wn8E*Tq{;&^l86G&M9vx zzPX~|g<%>`rP22Lzr;o#W#~JRQvd5UOU0EN9=ZGya2a2zHQ3MyVF6 zDWvPZr0OR2R(6!da=T1ow++m5?^%X5qH$f9_I$$bQb*q{J$qaJhffw!5q&a5&CuLT z{dZi)@-`2Do)T>gBP{r*ZCe3cvWv-q0>=;=;&DyG22Y2DCSB4( z14tS@sCBcK%{Odjw+k=tc)N74J(+p>$F-1V3}116@rp$$^TLTGzzzrG3<|P;8Zu?k zF(&8{4#TfayeWS!%`786R?G<6^Vg`=mjP~8Oy;9esDf(Sw1Kz8a zqKi=1lSRm2$dhnodT%4>vm{U-y8(O~Zkpa(>iUNJq9<~F-<_Et{OYXA?0M-TG6*bm zpy+?H69=;3I`+U=!LuD$<2tM#22Y$E9G5FO1lfK@CO6svC)gq;@O)#26hRe_`$5TC z45_c+E;zYH7}t}P-Q)wRVRp)eT{t)*!zC`#_Cal|M|zMKDy|(Y36X)OPGu^J>3)<1 z+W7*W$~0$r+8ANhR!F?D9^>s#Q405@jO2Q<^r2{c9s^s*Dh868?tn-^coE?}V2eVX zZcZfQ><%(Y5@qUxs6T@ZDG#>DvhR^)7@D$z8G|f?^}!{7@f;8u zGaYN6eBeuIlD>R}ER-~lwO`|ysejJAFNa? zeSdl!08>1f>4+#WlXyZ)F2O-91fHWR;3`<43^VUQg(1tcWw>817-nr+-DxZ|fWoc) zMvlY4v8@lRR3yh4%GC}lQ*wziQ!=dFDJ~Xafsi%U@&eBWhfbkA=mbn_n1 zl7pm@9*F(Lt0bU^mS(}D0=A7 z?&z$ZmKu3rYLptr21Kk3;J1?b(5a)@s0EG_8p7DHErb1-LZ%}B)=BV+i2&p_# z4m+f(XQeJK8DW$Sve<~6VY(xx_i57Hi}g(aYBkgLAZvA^_nTzY5T)&$o*h$P`KPJJ8(b<}alGPWE6a zL=Dq+?>605bW2n}B#|YIZCk`kKS033>0h#}?pe6nejG`F4HX=OwXa42&n6X6RYP|d zrD+ZA11Zf2h?#v=JZ%pWWc3(im9`LUg&}spNd4+nuKuh@>3Ex_My0h!i{($uL=zn? zx-G1^sGx5qmz_z|#Qi8~YXI}S2O@b8)^d-XEQAPCf$*!$-J{tEi>i&hmrN&`y%xOa zkBWTFd)4Ll`uKkE3}cX}%!%vYdsR#o&Ac(mR|5DdQeVg~c@eSd8Cz>MaYimeu$86u z@`d(NEYbRVba|9zuMcGEP*)`_8j=<_jNY-;@Ig06pVf!LjW|yq1m^0ykt?ltA!n&s z^Nvp}MtgP8u6NLaRn-S=e`7Q392)JBcAjnHa8Hc3BF zIli60#dvp=&jX}QxDU=BP#V>6SBpiBxp|rK7dH?fdAf@O4@KYTt3j`Eed`X_szHv> zY}l6T>7!OF?n-6%5%x#z5ATv#e2NQ9_gPFHdpD|$``<(Cm-D%N29ti~R7nXA)eno^ zgMiFZ?5oWR`?|q)=b}60%O(7iTh)qtBv3~>Lm8UN3dZB`kxvbu6XV5oW!2V3`&M! zsVSf|qM)&f-MfzZ^0FlGS6g?T=((w9JiE`PEI6d>Xl_}_uucnc++(OoHW{lPD&xvb z0PB9`V(JOjl{qW4RoGtxqilPV38L*uIqD8l>?cs8h|R;KY#kPVU^=uIUNsJarDo9$$fJSh3DvH)qQzMINv^0|CbQ8g6fqew?dkC z#@XVA7$cu7leLV5iLW3khPD49FWpBeu#KB3Z$#EI1QX1GlbQ0rIJY4={H&>6=!V`%N?G?$)7 zv<=u0<7DBY!FCB`%0~3!&3Ph79yAOFDDUfy!*vA;$I%98y+X(DJ<(~IbF?+iH=HWmU- zFN&r{?z-4irVzr;y@eh);BcrBc(MFdJ!X&+4#0^9!bN3v z$iSrv>^KB@BQBXfLL1l678!T3&>;S~)(XLFgij-7r&5=e%$Wn=MH_?`9k$pOz*YV5 z;kgKaMpN0adP1=-x*m8E|FDemuyPc5TM$j*<@3n0Qg=9e3BmRw&phB9?M4p`Nbpfh z|7?0E=QFuA5q<~5oNMw3ockPRi-!3;2x3?Xy>M_FX6a2{i4y-G&Z-_T4_iVrsGN8e zv-NgCWN!t8S^pu}VjmLnz3Bl~PMjJ>gGnSFwR#k8a*klkAF+79eUcsj{Lc&HI+7!R zi0R#QBKO#+Hd2lZSuTq-vAd#Hkz%*^XxH*J;gwDCN-WFzz?nJ5Zwq%9A*k)vRs<-E zM$FD8dW)wEu2+|hG-YNY$EbySgCT|^qE)TKpyP~)89uP-c&*}Md}=2(&SL{JBB+Ik zpX)UYyP*u{;d6QMhKae%oN`;0*7sc z;OEWa7?^K79f6U1SRivRon@~(6Ymp=gM2rjnG9iSq0xGNqp)cr|J`8Vl;QY$0J%0b zVtB+$?Eb+cLUWu3z@uUkI)0N6Sc zENF6vc;oE!6fuq+no6Y-BWB00wKupxaPLT7hRmyW*iwzrpk7w5yyCny)aK?#gnBn- zWucAFB+ctIE0Ei$7CA_K5!??8sNtUg)Z&?!NdP4n zyULH;WeRl5lAs@;jiRMaGyZt&!5Te;Z=UkrL>!ERTSKGEY-Z~}kzZvCK1X|?3u+7h zg$@B-lX*Z5IXff#s+z{J4XjUAZvY`B$< zC@T;qf$Fm9hZO~#HaY-6jSByG67+LaDbk{4@~1C?m=#+{=$l`wA9EPU&7C6wb5 zq*+FR31S$-s9Wa){5(SpvO((O9sTKXG@P&mB|pW)vcD{`T_+a)u+ev~u7M2DLm*>{ z>=o2?xJ+6P9sEB-1;aX8!4be$z^Sx>jG0IYl7hUeHYF!Tcx|q%nzDLREdvD@emP*o zx(88))&7k&LjZa;>)Ei0$kvCwBr|}ELZO&h{&o!*VbPrEd*#RN9lnbB)|-(uxb*M& zfZbX80cT$`Xh9ySv%gao238EVXX6_h0mb-&R%N4SSLso8Bqk+Ez^QZ)z~~>e(*nCA zm+ilZdzuG0tD{y=N)Fn7+(~d~w!MkWs5vO%!YE%`2-a(M*8u)^BK-*m!kSnN>mJP5 z(y}+dJcq4-=CjM;p{b<2fbp(aLQIl?sY4307G*R9U=`Q8Y=|d6(y>mQ5qwf4p`ZJ_m(M(U|gaN_P%9yWxWc)uo6W)7GfB2@3x-SVwyy4 z15=S=^{2{7M#Jv3zDz0|dLI&G@xHo5e2JhX87DsI{(PM`)wqGOw7ydnzcQ3c+-IU2fu2($f3=8eY;^h}E z3UYj^va}!ikyyOcjcyk3M53)1=GBgBE?9_~&xdPUAFLx~XmyU@GVG(0szL1L_sdu~ z(_3D2>{8jT15oqqg2|sMN;2CL$&E2oToO-SL_Ioz8QaSXCv2>(3%)BbFdL=s;bUm< zl*m(@CW^O*n%mc-`5+!w7#oNLEt263>_lr~jcgVo>rT=uc`qa)?p)yc)|J+{Sr zJ#uW^f+5k`6Yq@aUxH8t7$E;z(+fKq2~~}+jBV|SOg6yKYhzHB{-+3Nq^6uUasNHY zEEr5UYUtEK2z#F2P%3f5F4KVr^i->SPfLI!=Qj0RGvy%>1$pPhq4npq332G5$KU9l zy9Soi?5z|mmy&OJoEf@51e>Y2@&J{3B;3bJV9L47n5XYi+Ge_JVnkuKm>8c&jztQy z%UW5t`d(s(sq#ktTy~RCvap(!pess;+;_*80K@*XMNDS}0ZTMI1d`lWe z_|KX2v*0gAY_UpV5F6}l`$8&0H&6k$TU=)>>$ zR^L7qXLVx-l1|%hUI+w*jl1RY4|yZR20!T3C-Lae42|-sURnanDxf%-zr(J-XXsM8 zC6*PVpFdAY(O{ZX>LtWo5Qvl-v`Ue`cJfG@aVpUJ*H12jw+Akd{YL_dosCNsR_S=}99DE3fSTmOLWT?aw~`1;P!1`iCv;1=FR!-i<8l7d z^LDB83F|qHY(W0y|4RZHA0?t*Skm1LnegLl0js5xU~3{wn`mW4(uLw_b@D&~ccN}1 zt)S7_+8m3vcic30Nu?F2HE_*Ogp}ZjND8tF;0qrREm~!B3YFbZ`Y#K@@+FND=jrYq& z;!t{VZ6m8aB|sy*%&*TvM{F;EDT2@9xA7z zHAqMG%m-diK_h9nK)p``@c&%wl56nT?-PJeHk@_~VVvupHBGVIOL8!ePwpNZKJ|J1 z?=XFnjAK<5!a$z88KW31jo~E%o3siZ&SKph{f;H#Hbo~jp?jklz53a9rmhI2lV+wL zm1?_ex>R(|Z)Rs`62GWbW}y1K3DOkTmQ%$JOMsndY}pJ)9-6FNQ;G03eJ_R=;Nwue z!GFI=q9QI33Iye$!N~w^legnX8&l*6Xo8n9;p}bk7Fd3knNn7qix()hZCS5$|1ydj*dC zJ9sUG=4wv~mL8_?jp>@mx<~eLC_FxzLqhU8Lbb5$2fg^NWc~2Aq&WwJ6*JV=Ig2xL z*RqLcx5c5lhrcsRrCi)+c#q>Z^p{b690irJijIFjij0oaA3Pr1Dh!i_Dl~fwUQ-Le z%AvyjOR-Z0NU|ZTZ*=Q%0#Udh|lNA-M>su=m2mNA8 z4}2l94B~3(>gSja&v(BU1zseSzK7~~(Z8GQ1)V4TH`vL&t#)e`2!k3OsV0?^ONX_h zCzgU5csm#J1H5dF*CmpuiNJbE94c^4&O=z>69ma47rXa{RAd?ST4UTnPh*I-+qNy^ zUgD*m#W%(L$?Z@cGjKF(JS0pK*kENZsfnR?EMGcq=wX)WfWfRPIEoN4*4 zHeZKdzhUmsf6$lbMiWP>ueI9#H!%4{$`-qo(+JNTACnfqtJq z96yo6+-_NfS0EKHU04m#a@u@H!mwQNRkn|&CGOF}okE5qtb1yDKDLihl8B@pZz5kg z4fhrq{+(OiSZ-U#_~}Pi)t><4rsCH-)I@wMJ?Vh)$w5#q+!Mi*f#I31Vw}MTY&NMe zsJ3ZxF2BP4+7bND?IXAKht!dZ~r^2Fup=%v85Oaj-R z5VDy>TuJj1oVu*)o`RHa#BdTm>XF~?OS8C4jZMo+e28#IPQ0~oc&!*Y)HbOS-rIk) zstjvBhK1AA?ovL7?6v(<5Raw2$5_@mO1ups8q{?uK|Zg%t@%VDn}yS?1{YiGa)ckO z`iR|C6q;NmutN^8`L8qr>2rp49^Q5FAxnaE3ak1qO@IG3P-En$AZaUN;h9?Q&+cUk zzw_{s@mkuX!JZ|DL!AG(t5mt0-vSM8|2}#pt~XR@xwZptyAo;{Df#@M>$$l9E2u zHu}A)E^m2LrQ0s$u(U}YG7#)gM9jwlZdgu!B+fA@>5(VgqsH{8_>}d`_cKQ)^tzmu zA!xoC?8yV&M0q;m3mJY^n?4tlg-6#W@PHA` zV)aqLV~97@fT_0SMr6Pw5-DI5u+iHmcB!>p2F9PK7l{s8gUVYIp0*{yOs6*0R>w|M z1|z4KXTF|%(WKo8->lyQr3V8)aNILe`!|*K@I?HWWfYJ_d&lGX zj!^MS<&Xe+WoIojJ!?{4X#rg`cF#~^&+D38(i zv4yM3cD(+F+t%3!g;~7mS^n2439L&7VSzfqR|pmxddDEQxjHQI$d{yPQmXCR=#tEO z!5*T-1ODU;JxnNDZ!dd@OBpo2cR}bYhmVpE8)+w)J5J5y57<~@F^yCPH~x6_vGO)DpL%ZWfICUhlJ_|`HqXL z@pDdlzNB=s<_&P0B!VXf8&`$X*YzO&Ro;tt_8>XK0XK9oMX#&$Xt7j8L5KD(8x&T{ zMAaitSM1>{o;yNq_U?Mh%c$Q?zlDW5h*fG04wVBnT1w=NM52uVs_o%}h_`UCk0A(5 zu?$Tn%7FV~`@50H$V}aB*>V=Y%hx!xUX!@&oovM4iOOpiT@%rlk*`a^gI zfBVu)hr^Z0TtPk+N2va%C;mo0UWuS7mUO-3Do)4%R(_uu8VcB6Bdf+BzGtE{Sj8v> z^eqW%vrO}J%qi+I)2->A{hwetkFYNxNCNZ5k;|G{uC4q5`=O`u!z9xYY7#cfJ4Qv# zZk9n(X=`#6b7rqGfu+S#+6uK+qsn&w4va?Wm=OIdX@m61wRVt$;(C!G6q7N=1QyWW zh}RKD*ijOYFFt={>Q=vgrk8nhW{(&d40UIL#y%+iDBovyc0kSMH7dXl8OQCVz0O`mmV2<^r?BRn1N9lb1{c z)meXv!lhUb|7(mgX8a>^od<2=d-rhyJmV?=F7S}A90rO;{u4if6W*xJVwl5N-zx)% z%Smk`2XU*OA+YP>?_s2q!DwqxgP1j>U$gUMd!_|%P@)W5G^_zi58zb!)b4&->(#~l zAL=ML(`GmE5ObV1{7`jPjN3sbGt%mAOG=x~ZRISieySeVp@y#tH+^$ZKz;c=cANruV)QG?;Kzn8_X4SS`;pnO8`ROFTdjx(IMt;GZhmpOu`5pJO)tmEht4in zT1&Y-TU3%#_Yf-^LsP9SJSWRDZ63dnx4HZcLDRxd1*OZJclC7a{ySEqvHJ@c>K*vK z?^F|u$j(#VR~q8-BTw&=Kv^o%GF3oujSy4cJ*AN}&NDheDmX{8sp|4G3`_2VT`sj? z3+jM=e%IZXAhq0(*=xo`UfAEU+t;WF*gUn!Tvs)Yh5a*$f>`&(gtBmO%pcf2u9dp% zxOl?d_`o`~X#3A<3wF5i??*{)-+^(0qD~0CU3}cYsK3d97>MI#fGHv=e(@Nm2{?bO2_5A(R*UIaUFjK z^Ue_{KR1Lddt$zEWEunpZb3zqa9n_c{*4%%Ct7i|Oax27b$8>@_S4;;MRF$(L-Mj( z1SkwY4_wkU!<}aV zz^X1x+JK}B^<{j-uJ30}uTJ2I?AeB0082o$zij_58f9In%Z+Q?(;_ssYV|~|&~NFA z6io!78?lo2s@U;B`1rP3t69xZ5^rV*1Wsc5yqsx=?q!~ktkwMLTUjz|EuF<~4b1`6 z`dc0^mF`p~Xw#ooW;9zwWd1jryO&2!&jY4@%4<7e1h5s8kJc(mgLxv^Oi8SX>nfkWd9(hg)FNC9s+z_ z+TUhlGfE&Rovh!sFLzw;t3FK}r|i$3mNDhl)3{KrlZ8rgD~9Lp8m(Q4u7 zuZxs3x%sGYHhu;_QaU;g$M!VC)6G_b5tCw7bb~7S%}eJ?Rc$ha6TojqLNXvNJep^q zYK(ohNp=)Hew`Yl?=+B&VJy}3aVKw7np^b^fYk$TT}L5RJh z^X{9UVKn3SSZkg?fivM*|G7&h*@XNxG=OO?{FvUJSZi3`7E3S}-Rw|^Yxfp;;N+Sx zYFRIhvY2!Wb1`qLaOQbe#eZDFtwNd}G2jCr7-iL6uAS+Qb~{_hZbxit6N|ftpNoVn z7N|7~K=SOyzDTI=;~LOTKZKVf^8mGhFH7ORVU-D_6|Mg1uUmUu4C92~C#fke7^g5uz^h4?8ca!-V6f|k!Qpk(c+rTqp<4V&8pr7 z<55oL+WZH_hnH?zvSzZ5Uzj3WY|i0gKmN#JJ7Nk-krqbuj}}>W#HP&~T(-affX#Ec zH^P-&*KEA9z-6Td%N$2E_E4LFh!iZ185qD&1p^WZxicVYF*f$r5=Q|r7U`WmiJzik zsse=o=QKot5L%setW=UDrn3~85aDMm`)xG5EG839G%3BVFujbI0O56( zrkpP$bqYatQ|Entgzx}{`_sozG`aeuv69`{A|&e0B>=@8@NO38MH8~!2%q25`633p z9wQmN8JnZYVnFT+@tO{!gdAPLK|tcI?R9axJNG|fiTnTDy-F8x8p>q(ykW}{+z7O8 zo4(1+fZs)E6r;*;ke+bBh#4 z8Z)`VJswan=BhN1ZckIC=Ep+cT;&bT?Ya}}tsmSV^X4$|r>>Q#2-gwuvzJCTL=S*6 zAMjm>gs9&j_==*49l8Qd2Y&nBfB-P~Xsup_;pdH|!m~@#oWhkb zHY`RM{#Y)0I%tysfyw$^33tA~KY?mDk-sC*whlPJ`Z<%qDJ<{I1>xGBPM9iq1r~vV zc|=d}^=Orj99PGVf2c(c&$EW?tW(DIURCt_y)fT6v%b_qZMouvLoo-Fzs)RS=h{_1 z7mL!v7@F=!9cc4M`BW)h=z;$@0P-4Su4Gufq(v-8N-g=Gf3van%n8)N6Wo*g`VUej z2Dgy1;P8ri0$dRcS=2d5M@F>@)O#^TX751e{IbESKSLPAgG&6tx3+!x!V7e0x=zW* zE_4To9KPecR74wuBHj-0W8nlHbcSWJvY19d{6`bpP`CNEY-~D!9EC{2b@Jzo5$<}` zOC?c&wGOcHB6Z(CV?st38OsA`8G`|etLNWZ3?*C}{qbS|SDdOGvJ|jPm>-R~xyFwP z5dsE>eJC?t9`j+yzq@W9!8NwTb}RuNPnQb;F!;!-`>&fTK`09IyM?cwl`Aj}Cnf=n zr@{aCimOv?)V%AL9BL=VgKZ4z&=bigTw>5P5{tjHrCLSFN{*}fke%0JYXzB#WMYl6 z0(7IdUqm>R#dSG&JVZk_d&Coeyh}t3`hq0+8wQ090>sDjUC&9B(%dq0&Yq=XZD_wO z#}8jGWlH8tHjs*0WU^GEgJ+Pn9Ox-sJ8nUuKZFw!Mg|QvHg%jeoDDQ@Et7p)2qP+` z$`he7?}u9wGaFy^n^h^q6OM@dQr*+>}iBq0Ms1!oYOaPFkw{YSCO4CfV0( z32w;BrdOf+_jj}Mo*rrC;wFaYP2W(ReOmK;rBBry2&2J!p{hywLNjgjgDTLvVTQG? zYv#oE-8}W1t?0jjZOS5G**xtxE*OUXDQ=I|!Vo4b!T?u}c6&CkjyFx5&ZC=$vhSX1 z9=+XM!v;i9i1IGVPAA)e1HgmeD1|@zIt`d(=2rI zsw9M5A+TfU?WZ$PuXHCPHUE?p)|*nD1zw7jj#3E>rsyzFD!sKUtJ=vmNUhiAx;tk~ z#Qf}xM>Yg&(uxZdSwqArMT<<@#SkIwVRp8I$!?xvfkksp0;Iy(*Jbew>i8H&TeXHM zV1C%%ODHBdkpnHN$5C3WER)Mwp)Jkb2gml?r;TUR=FNtVk0HKeIf1dJzQzS?`~#C6!`qJef`*ZA@``i-7KqKR{N$*z$%Jn7hK^1eDgY`x>bdEjv&mU>ZQKv*Wz#4vs1QHL=tpiEw;0gZH@<-JL-tNdz!9R3c&A0C& zUmubTFupr|!j$+8jA#^?qWMxQ^%9)$nQI>{5GDomm`l57AJu@0Zo{~~d#%i8KI;dMO!PhcQ?A0()opf4SE%Oc5wCrAyR>TJx`w@`jphOQuisR2~==4 zKfAKVSRY2_*)ig(1{Ktx{7#9(=17&UQ*&Vy)x>d3tinw!cjtMsU=RJ={Ca__=-ugY zS35jI3-HWXJxS~4Tv&qDqDt>xNL%0s)2!| z3*M7w8>@LV8QZ_oHjz|A@~!_cc1%7-l!z89TtBY-sS?{)nSqMzMEjrApGIswvKq@D zMi+AL_uX_q`{&#K#Lrhy@IK1eB(z!;`|=2=`Pt60hm}ek;|b+2_80(A$|b+L;$}$} zXJ(q&U6~Mc{$~IOGwg^R(qb&yWDQ#9N8z;M7E-br;x{9kvYYdxO8(F77M*)ve%Q#0=v1ZWzcl+A^zyO_qE!L`km) zWp56sj&Fj*(qqow^z$Lc)_!*Kxy7T5h};y>^BMJTj6{sKo`&3q7>>Ho0~EgjoPGTjDT==ifqY`j)S^tlp*;xLaq=U9tZD|j)WL3v|n5{=~# zQy8jGLYR)=;Z4bIXk{(eql)~zQueLgL;84wA$7w&FsdI)WPkiCK6_>~C~_JZ@X3(i zn<{p4ka=NV2h&T)94lR1w9H(%Fdv-m9l7hc;&!Fnb;JpF-yQ ztZMJ+^S@Q-p&rH@#4e`%;G36Bzb_5kuHUOckry!^m!^(~#gJx<@}e@DCIj6K-Bn=Q z7(D5$O`)#3)_77XH0n@J>^`lbG1PD~+7_FT3${wz*a5lae@scHYh%x>Rfs3t%q-~V zyrhRCXgUFZQOTt?jAp5Cph4&F6taY6lfqw*uQm#gPGvRHDSI8>XSf7^h95$HfxUi@ z>ltAukg+)B&^~T@N7rU-7@{X%hcCCJbIlhTP1L0(IXdt56H_IB3R z+D!oGE2?xMftBXMTw=wY!fEb4@u~tTZj+*qnd5kMzcFr?9xLE}j8?Vk#JBiY**IBo z)*}U=)QWTOD4Y7Kb2UB}47XGhpw#2OVXptTvKy0t2rpg597U44^Q(YLCNvc%r_I`X z;~9=2)IG~LV^tNVtjwFO&6)rlL-VMUtdn`4Yej zKlGUGCfYM9^_>@SxmC545+a5GgaH|IWJ`=?{{&qq*%%AOcujjBG!UWp*dsxL-A~y~ zjZ? zsL66u@e5>%NcV}~wVpJlwMn~rxV{DmoB~Cr_ym4i-SXiMHRM!$L#cZH9Tu?a|0Nh} z`h-CpjzYyXe?wc{X2y?6p68>3>TM|zlMiROn=@N%e!{Iw6~&JSIST6u6kr= zniM^}&wm7I?cr-TqAf=S;J;Gv!bdl7F0J%J7G_>{pk1FFr(v3sd%` zxOV>PMAT2b*%*1=CFFwDsLUX8M}wcJYI55 zPOM%^*b{m+2Kp~6reo0*%K)-2ZAT+UZ0=dJ!ka6R86|9XBg+?OcN6{`r1erDl&8O^ z5FKhYDz_`A(gad2cTcUdg^oNi-wolLnWTTEhvy~ryhIJ+%KadDeUB>@w~f3t1Zxk= zdetgJp};H5_eG^K<;1Syyy%{M_AM?i6W?%=MDW|C`%J_^@df+s4Mm}7>}Paz<_;_} z`yv{7fMT@&lRcyA_1J<$`%?ow#g6y@qFe|>Exp+rkx$Euk?W%FGAgLQTx^}LS1*X@ z4{yggPd!+wDHnn3!r+>uX@C6nGz$h`^c*cw+eFi3ODZ6lrL>$lI2uM>8JD@;nEiMS zQMnR_^Q+}&0_iqt87nArh9jeY81;9JOBxAyxfj%QuVt*mlW~ z;fC+B(8Nn}MENgG>JRo|!)5;%=w^)U5X{}zxG~tD5S}I9^Vju?_8xD2hC1=(-pau_ z)f1ehxs>=YS#l(@nss-A-s`ELuRC~C$Yy-$<>>bhk(Wl6lqExy<+!U zuc{AOal$(PK&AXQ81yW+gUOY*=|6s&aAEB7SuvqSo?z>qev?nDz)P?qM%({k;&Aj* zFQ>nsmj|qZ<`B=QTXvG;dGt`Yjr{ zsI>lfmUUXjeYDR%93}pY4#h6yStW;xH{U<1$1)VMKQCEAXaIq00cTUxH0YLMZgA07`B|L^EoYdoj>d1byq*s z!bE<5qW6nH`h&!Xt3j#Puknmc9D0`FJwLb9p|_U41Mb*T^kd{3jIYz&1>d+~fSGer zGTf$(s00AS9jqE-!eel-eeJYK*}WM{=DqTGZ~&K4(_x?J>hG#5}$a$`oxeN zl^jIVo<6{^K&hnX@be%FAit`d_X0ef*cPhJDA{!$v=!4l|n5*u+mz=dtBZe%Q^->&|z0tF4>tV%Wx}XekZ{B=Y@f=uWzDE;H~hDbd$!p;#TEo-dz1 zLQD7#UL|pdJr@D1^1A!OEcn$fkQN+!T@Px!2RHu9;*wELdBLvN>pW`>qsdApVHCL9 z4D4cL9yZ;hRdYJ-P+U~IJ?8b^PXkfVU0S|qer#l+kG!C+=j*hvIRrb|&evHW4?j9( zX~`>e*8^3HHueZdMj6y#Jp~DW$uQ;r1K^B*FVdd?9$iGAG1Svmz&6trUe+fzl~8zv z;$u&fop2R%3EC?Yk*QOzgzohP@@owJ5G?5A+gl6eH*XT&n9H^U)l?JV!;~Mw9A6!$ znrOooG={YRQs(Q5V!2v(?|BlttpqfC!iVOXfP2GE=+Jn)VO4W&L1gaFk>oO4Iqd{G zif*#MQZ6Bd{lX{foUgR9#_1ZWafK0yuHT@tJ~jdXUgQ8por7dt2XbFBi7hr_N=Gtd z-^am#2c4^-002q(%X!A$81HX!#uh}0&CRBX+ggP)P{E7(`Uj}!*!l=$^!-HrHLJVQ zT%>nv>k6h#vApp~%$(x8qyu7TJc#N4-BoKVeOEJL>Vn<>Z{sbfycjfXXfg+*u#*-W zgf0KPGO9VFmRe(53evb+XC_n8zNLc3{*x5`+gg3tV}#RSWSz#~wT@LN&%Lc|WaUem*n&k^5b-z-mKfzpojADs=@8mo+b^YVa%b5>G@NkN(FK!XH}{mUUPbNhpbaB0ZBQ-D3_+ABZJ*)$4b=+$d}m zIVHF?yx6!@kEteOt2}rnW9D`cvjSb3RR*i?6AA*!>9ImyiH%hc-sdxNOfX4A$u)u& z)`JLglWJ>crsf7W+63xaIw{CQ160bZ_be$&Al8OmogBoz5gu*Mmcwsa${>-wo0b{# zwhrW#*CLboChE}XPOyb1WfXhD9eER&7C|gH{S-nrUzj{#m}0m2I3svS^y@}R9nvf0 z3FP2g+epI@e>DnZwIgpBH`x<)M)hRgmN%_p9?d2i8r{IosvqQ`@LnreK{NbCDXx(L|v{&4N>-rb7{U20v)6oP7jS+T+%G1aM;N z+_?4nreM?Xg#i*c;6@2AmE8OE#$DH6NSd+I$27`!UD+n)S>erWJSTTo`zUl%4_s?F zAdHsO=fD9ML3&xF@sHND{M@C#?%S_Tx+r+e>pmaiuWqV)K0#tsg133Q`CEN2CPtKA zN~MXzeu=PeQP_^QleFfm)9=&>zLD}J-&cY%rmgToAfUzVdxgbr+yytc3t1o=I-gncfmTKIep2R*EkrAkpBk1*zzA+#|? z=R>k+LXt~X&`qQN*_L@^4`mri*jG-pc;6kC^#{FyOPyN(rg;oVHXnd`m02${Q}q*S zd-iW2BZ~S@oU^#^D5$iJ8ld&e)AU0Rc;WLp=al_iA-LJAw+6A)tPsnaMRfTL|5=n`5}cSw*r( zrSNY0tUb|Hz84J4wZ&><<3z-oy9SE)pDXkO#yUe26#<2o;Y&^$ep!uP?`A-3b62Eo z){<5KPrB2(DSTJAJNi}J=a6J$8F~e$$10W6(?i)>2cPlcBxS#)RDj0OZ_?_Dt_=tNg6>%4G&s)C&DkO zUf;d62~L$n96_~S0r{i1fsYUTa^!v@!7&>6&M@BeR5>~>_n)7ZTN?q$lQ>oREK@5K z`~e;cVTa~l6)x!h|2WFqDoBx&jILj+KsxtqT8cs;6(yr#$by*}c)>kee(6oMB+@PK z=LH%2=TYX!)%o6j6{O483V>l(@ma;z)l-J_ULcc|tKag;aDHDEv-lEv!UdyAk%}98 zprW9}6b9z9GPUBr*7Y^b^{_@_0s-1A5DZ+f$X#@2>%vSALSb@6>RsI)9b&t`FXPxaGT!hy$d4n+iVeUjI%(*HbTa=>cZ+^d?oA_zc%lN+Neq>a_$%jBO z_%Az6GPB&?_r#9;N(`jpmbWeimKbh<#o+hp0mED>goEwuff+z`I&&TI`NrTXHf9tw zQpA2?40|0sj(6e}O+5ya^t4$fDef8$Y^%MrKVH0HFNW1mmm2IqFIfrp2uB1V;}3-| zE>e=8WCNr=`GQ~(;{6r5j#8(=fv1&&EEg3{J5iC<{NlhVV=C4V3=7IC~T)8gASPEJ9!(?mJjs? zKisf)V2*}})q4w+nZdkAv6v-c?49Gf=)=K#`B$0Ej6BI;IH4BH(VLZNzHloU_7<;> zO-2gIJT58cnoi^%)=;UBx0H%yF%J8I0G_ER5j+mwf@T~dZq(w%9v?~A_ExME- zOIR%g8oU|n6nOUt@pD6?U3$gYqSGO0r@=~pgMC-s5$j^PG&EAO{yTw>X;bS8KuV;` z%(X%`T-X7zVB5U&Bu)W&91{NUV27PNGio{4y833~@^c)WBEXfXkAKWa8WKYR+HD5oZ|t~ zD~IJ%R^Vl;i_8KUa8bPG;mIPGYek5k6I%7U5oWj|57(7&Aq+r+`q5EypksDPC5`~g z760x17xZ|To8(ts;vi7=r~hp}RQ6I1_#63-(z`G7pFE_smM#o-*fsiS)4aqM6uKBco9Lhr2oC}O|j z&@iusAhW_G{=D&%p)3$7DNm+|DB=B0%bN_Qptek&))_id3yigJe`C@GRx9Gj)9*_B)E4>z1aD9%2N&veroim>$amTXm+D za&t1vtyUAt_qen5vG^ zwav@wow924)d6KNc{o@@mBkS0M=vU6gK|1iqK=#N<$O8OX-08gl55^nA^#H`uNp#w zq9DNy)$0Jjj^te{Hk#i7P}XPT1|}S}rSjAAKu+@fpwG-G z=e+nqD}sBi6wD+)i^+ZR$vi-`I|ceiuv} zV%){B5o!W57pa1^xeno@zS9yT*TfBL_PyYnTHaCHRfA#heZIyyH+jWT-jYDEB@A6$-cpo5u9s1{m$nR|3DZdJ!LGD5$&SLi_ByQ_G^3*xu5qcU`8N+})**JmG zMUq8eb1a{-2Ip;FO7bQ`H6_Vep(TuZ*c&wTIQcqU@jxyR>6|0)7^`3jC^_EJ^`0c% z;bit9_*u|c^6jIV_eM9y@)|O}+YDTxaa@N+v*>n{i9(tW{K|o){V`1-RjVzIQhm35 z1RZ1)9THJs@$sCa7-V-Dhr8YXH48*5yvCTtVX|vD)ty%Dl<3BIJ;U6v!)eiF8`Vfs z)Yq?gp(C>M55da$U54Cm$T>!BvECF{^e7R2jx%+anTPxOY2%z=gOPq3!sEFE=Bg^$ zCId>Fx9*ZN%Y)uC-RQacb)Vt@C2-CgOx|^_AxGi3zPGy%;~NeU3cf|!BY`!7Mvv6o zxX5vf<$ua?9d(Y5ZI?XztrHbo&#WvR_!)0mozv({_6 zK7Uhz1|m2QAu)yo{WkCynj*#?=Qe4>tq%T1z*!f09^r7?oqh}PsHvGmRL|sMmn@Op z7?%<)-!whD{*fuw%{s?eV3Z`T0$gqxis0&cdi(EMsk?2C#s&w*;knZGq~H6 z_|X%v1ztj(Jv^aBgpNo1SCex9Sml%}>d_^yhPu6I&wq=3Fp7?!l1Q zq~$3l-wm%_eS-O@n}i<}f|q?kjaJ$Hs8UcM#53kxB#<~PL4)q?zlngzS@dtV%zOP6 z4k>{~O%6J!SXT^v-5H6=uGg!DeS7lCcMmjihV1{yW!HmZlCIDaTw})lBv1neO$k0f z>H7R}Jzt4a8wzl!3&s~^3v4HV5n_XUIaTJ2B6V}*TOC|QnE4QKOXHB~Y8L@p>W=^r z6S;Cu5YlQF>x8tUGu?m`M7@{G3$E%Nav6j*VFhAT)<7WWPgpl*T$4P#&4C~|R!Uf` zm;1T_bm>m^^ODagUbGd0V)L+jfv|u{aT14iG;; zP^f)=7V%Q9`XyqitTpj)8#tPW#1c)Bbb>1#v-%Ub#=7rbXQ+w+pboN?-$eV;LgXen zxk(i&Ae#J59CLIg8d(r!AqP=x^{R+c4`aX1#oVqp~ zE^8^uZpWs#8i7KZ<9il38ZfW2rP!ks z*-Uf)TfFTiN#sZ zu{%a|*Ok4N<6dA?804s^=WOeq6L7^iGFV4M8_(? z(55HSE`p3wYGM!KCpOzQKo3Q?z zV+R3{x~(4}T}hrib@OiJ?^F#!u;aKIl-sEtKatF&#Gyfz{@$>&epUdh>f`H*t;IA! z^1u!+{Z&Srv~c}-cEkMMO9V4(I$FWIk`3ru(^%@vEHeDz4okmi+*{r2J?KGkH9*Vc;vqh4X+X6KvuL#{WVWx zLFP?EcwM3VV0L3nk6o)EM0!;s1x1!0nhfO8f+<&xOW-Z`z9CILtVNXkbP0e-#h-^i z?TA)1>Fy9N3US~tdwzgxkOydCPlj@lKt`7`nNS$!iF!<+D7AYqh0E1Ne;5D*e%O~m z+|l9C&pj>(%(R5$Up(kXo4rZgV0iSe9=JZU3?)?Km}pooNghWc%->0CaY=R?`qDS& z_zY|IC|{k_%oYEUSC^Y1&c3*$=v&CqU=>ixOjrPcW&zOIm|Zgxn&CSw z3$o5&*0R>_-%PE2KO|GAz#YP(DjC!)x#`Yae>IA~uwWBKsoXP=VWq%gJtW_KMgB`6U6z6Oc+$?9|-}XD)bhYBjk2pJ& zQ-%+GrL~~q!R@3jk`#kuyb{O)9B24@=(kZSBk)mx0%=p=UPFcXGbJ|pCL4Vno17QD z;^nwMSz@)|U!kn-%>3yB2%vSm4ha>42w|kdjhX5t1f{~1HBaevF3JQNU}30P z&aUj~&s4tvHdXRz6uGVrE1v@ZKycER`aG2MYR<>UFtT}82VXO|#Pz}F4~b5xC6LpGP?eAZVF z!9Tg;3Zm6Q3ey-Y7-fR!IX3mg8-;iCthUWGt$VEWA?gsS{!kcrO|9zFv?OnSEs_Qe z2%paX-qv!FbsrykZJf8;*nH=9XkA$M(o>qJh(ake% z!)vV(2dojt$&E?vf3esH*ks}OfY_XA2`<>yOaX&rmZM%)y=jQMJe#w zTNo91w2!KU(ORnoft%XI*8p_JGK@jP-l@c9#ZbWYH&2Bd)#Evj3>L(}!_y&nEYoq{ z9Lbgglp3kjPiTDB&kmhx<}mqT)3VgLGWW0*E-daI4+ACI7N;Rad-(u4$aq_R++c5C zVaz%8rFxVHw1X4vs9XvUSAud7DLN!$SHKqn1Ce#ScCSet%zgWN7$l67{D8CyXR%# zDTick3&BpVDOMB|I`TMR&eKSX)C}zxDr{D+7%1p#ngRaL7+`D$kvYKO1i&pnVk&RxN7kKvOk@KfmLq8nh9tsQ z1se4?ZBQ7miZ;FA`d)Zo=T1XmlY&Fm#8Y%QCAPtd`>BQ`xmBz>!U2oN!`Uj=YXFJ< zB~xu#Mg`xIM#%7_{CiG37G2sE$Y1LO3E_GN;M&Ck4o`{X)s4`S%;iKeeZ_?1N|_Cr zGUY79tumpDe{Vbb*ETqs@jJkVnOo37=Xin@FUY#4~QZY8J5u$AX=I zqOUOawd@*IGS^C&j!2Zxf%YCfnwd+^o|;`nx(x)yIwdl?l)kVF7=H0GrtFCepQerv zsDDss8Mw+4=cLIRq3Z8FIe>7YXS1v=j4tyG%-O_I`0x|U=<8yyytvt&4WEbE4ptn2 z3*ZymP!H3U<*hT7`fwOb+hyY5evUrZC%wcy9}hc+4{U_<^wS6z{z%=6lXHbIL+tqr zN9B_dz@foyX@=!e%laQltDKJC00Jw|Ck>7lV&>HA_<(yMYsv~$MJb$z9BEc1tx{~v z&yv1`M_65DQ-Q*Ec4ko#fE(UB+%KT7hL zZoZm}9DF(rcSfAKFJ5zCKFA~KhW0~9U07J`nnH%Qb!7nP5J0q*|5{{PkaOS zT1N@2oY+phW^N+6+Qd86P!oC>jrZpEK&yfSl|=z-F!t4C%-YMZmnpNh>uZ@RAueNS z%i+diz2W)2#&*&Z^8Y^mmbTwJs_fJ*=2zcm$^vqdd@Zzb*DWi^q0I6Y@cI#nMDuF^ z1L(`C0v`uR`V+z)3jRa`r?(J&xgPhZZDJRAEUDTK>UpDe@8A@l6OF+5bTcEI09`vI z5(XhV7Xa?Re_^Xn@`-&5uT=MLVYQW!Htj40FJ+&S*u}#uZ)V;s8h_+od2g}jSfwzC zi6eCM@j^YsiKYF7;Z4%sL%)=RDd@Nc4rlQeb5hM(gOYiyb>)qO4c^SVD5l=vHd20w zD3Yxjj$i)TkWGL^J!x^J3e6aS#c|0bY`kY)MI3Y!;6a>YIkoB~WEz1wY3CCHYJJo^ ztn0OQf)3_OMOkNJctb$pjQd5E&DQ_gyu+1vM8-ZQJv%g?Ue^-j-3gqKBc{nY;>K*& zU=7zfOAj!_(=;+n9v?hb0ok7BLCz_R6Yi}m7C1*R%vm)OB6N?JbcI~q&W9*M!y#4b z*M?N+pS->jqF--oY<#*B1L|4|+%GZ_8=u#w8Ad^s?(RDDbN+qVzK#Y`H!fI3axq(J znzWWztgn)8lLvkCjD0nap8~D&N?A6;J-leoLV6UuK4O203=mBnb_06jZxg zxnJ>7_}@&nBB)VZohc;(YSo*#g|<`B>XXLqn##ES1*@>P^Dk(h=j-!}GXCffl@{w2E`|iV5Pd zMvR|3K(g1+W}>1rLLwjB5^~$g7n0(z5ui@1%1cu!w^mH5?rG>J_NP_xJk^1RPTRplc?65@%W~=CfkM^&Uol>y{;j*6jIu2O zD13EZHtp`VvhBvx6t0x-8-UncbTVPdTrEs&#uHm9l3TNey@#u;sqJP7D0-*D%!OaB z!8}J#g6*D+O=`gW$47 zUXZR9m2}duzJG$U(-9X&A(pcXS!^!EM_%7GDVKVESkF>WEztiX<+>Y?pDt;dV2dzQ ztpd)u_l4|0sxE`y{o1hV73#Np)?uBnItU{7QBPeIbteg$I$G+Pcbo+y!&L>Y=@B{R zE?Bt6o8`0P%In547JRP*c&iR3l%mNh3?}%3GM`6G=dZXx7W?<$%Sr9U4Ft&jYOrDs zCviCH{K)Ztb#_H6`O*r0*gQ;)5QJb{P`_b6qs0`dRLI-d3rs<63QFM({Y81HPC3wZ znp%+wM$j^;_1yRUuz#4#EQ*bKxt^fN)K_n7SRUUky0vkquJ5_k&rp2K^|6AgS#5R8 z>lF6d1VkzazLWGPSbCet*;`tIpi|G!}&)SR-{L0X0;xtvbpQfjMS-vBZYytQtq z%#w|T3MA2fAbk*T@zuU2W4u0ep`*zU)g8Z-=A!0qU$K#e2zQ_;loWMx=GE?LTVJGY zppkf2OPJ@YR#Y+XHpmKClrG#<^aX)x_*OUf2!9-%cE->|L)#Vm?-MMteYbedMKgrC z1wj!%>l#`etaH=#kty8L&}!U>n{LG+!-^EhW|tt00#G322-+k#b&oQQ8{_+D3wStl z&l?~^VyF3xmQA_GBae-e&ij|wioG5HZMu9E+kyS?My$3XFGvdmyhzWNVl2&*5#~;tFh3*Z?M)`6 zi)Y9naGsDVxiCy`FEUt`a@K6s4Dm{J6?0yH?zePkL1iD1_+$8+m@pW*C!p;^{Og+y z=xlvaTR4c`J>t3wfKIiWQkX%r<1J_o{&ZSPla$doyQZUbj@DR$ut5cFk#)Q1YG~cc z(ZEeE6lWO>V2%KQ508rAe1~%wE;|xhA{5xu8<}p*v7?H5ZNy9A0&u=&

IfQoXn zs8-zh>NXFm=-;J4zMiIh+dq?n2%5Hp>?eT1`SDPpaitA$489n+1z@3{M3GUBM&_b( zTSxrrKMg$&JFuU(_wjD2cF5Vq;F`d%v^inoxY)AtT0L9o$(z|+AbBu!v2D0z zK@ZaW2FHwd|Lu5-5Ogpy9@)RNxW(>q7^VyWIo4-bKhwuniKVF~u5bMZUFIDaD^!1X z{J@8|JJswDL;MLduY<&0sEIXELe(K3bHM&OI zV{6>DCW6e`OS+aiBDG|4bX{O1`j`w<6Hc`2(Bw~I!Zxq}6hyd?=GGu|^Gpnv5Gzjh zZ1H8qiBl{=_ccbAqK z-(9e39wC2yke)sb2btu6NAWINRc8%piOHTR?e4hypYx8Peian#o7u&If^J%_@Z16m zsIkR*+dSjW@klP7+^;9EPz<45YVH>?EePMyzFb19T6WP;;kbgz_8ghS%3)2C%(XBX zFxRYhRuwZop5q+)9n+Caa&;PNi6!*zw|3ciFR*qG^MEQ$Iv{ki=jp6UT`{}zFMyQ& zr857wqT=~Ma85XF_LWbSl%#FrP_`70j9U;6adYJBRaNjh%rF?1=JeXg5{<0$j(;I& z&)##+e*$#)x%+W_;)zX@#L;Pvgv>X_vK9c(=0@B&Ir9bRq0PD}n|-A`>HuKV-QN&E zgCF;tFKL*l=vY@iFhSdGN`_d!N8o2S;k#FW@`BT`z}i$N8eDe#6F_bfbV3-A zbVSG=dmmP=Rus#IvtaefIVeM7P9{yXH##exeaGj42i6Df-SQ)Li z$MSMrieJKJx!z=%$n4n_qY$7ohbQP{n_LGN=~m|#P;e?`p#-K8Q&pP82SJAj-jvX6 z8tRw$tzGwd#3qam%2fg0XH%<2tYs1eC=#z9qJ{9VMd}Nk@bg-@w2)z(E!Va4(}D)# zb>|S4O6LM@Oc$`w%I+W&m=(3IX{U9D2zzOMHyu|E%8n>S_@HaGfkdWW`cv1sWi}7P zg~O_Q`%%Da6!C^1Z)ud%^Ga9blw9NzkBJ{VX6T zb(~P)6iECnFW|o%=ha$*&h9iC&=G6xta~2Pooz2#dLe*M(xJbyXQ#|Yx1o-o zvlw*!abpZ-LK^|}t6o&2fjLlIhBH9}&!v?L1YiH3p*BC-Qm&BC$DPb0Y`@;+cVCnB z&O|*nI0{!lRZI@aS=7Ain?GPQOK>M&m<*lWSJl;xUWQPP$@X4=1t8#5;_sr*I zBFGQ4687}Ks(u>c-3B1YJ70ui*HI(}2o}mxq>Zd4u1Hxvxyu&NQuT6_enodTjyheH^6W%z z!BCtDQ<_f=A1?R5V^bmqz~b+6c{cZ;bHf-hzt~nYU8{Hx??DVQ=(~9G<8^j{X#M|; z%v_a*^{tnx#@shZ!A4mjwSCTXtVWNJ;6*Wfam4Rc^$&AA2zA}q@=N!E2~~&>PV+$Q z|1=U}=G2E}kp8BCX0iS&1+m^f;1U3Dl;y46!$IIvKv5cHaFL@+ns^;C)@LWBLYMQK z?=@K&04+e$zg9Xld&P=2>7GD&#hE4y&#q3K9esAVJ)Ue6_AcA-N(Rb&(tnU6Zd$Q6 zx+Kpz*)1@y+?(pd2|MhJs`yPJ_DjQLAqpP%Wl~Gp3eeGG9}T3{YW*^}@53EyOIoRM zc5PK3xTs&yzSFD4mj-|yV^x>Ylxuv>{aUQMT;F;71N9v!t|f2dy-$L&*OgV~CLV#c zrG#`y3Q~SKjvW$-{Z!m=LL*nM8(uJ0R5l(x#bqEPzbWdNiWdYQjlpdX`VJb7L+^Qz z(8rd*p!=7&u^_D$F+$`t2Tbb02r4yj`arXOO=2yvxM){x8kI$}cnkPp@v!9Ol>yu> z0pH-A!T%a;=Oj$*C$}8^6c*1Okd4Hccow}RG1<&BnXqKpt`a+);YEK<_h>o+=^Nt^ zPkSc5WnWq;mCR*=10dTy1`}qJxk*MT_Vw2m<9xCE`JT#;#=VjwBA{#z%5P znONb@pmUGwPMif{Q-6~ce1q^q#%K>V3;Ibx^>$ldamW`zThyQDunsRe@8(%m{Zj&u zo3(F>CKi6iX;=e z-!d*ykWwzuIg=6ed05zx*5DHI`o9Jk*Tcr4Fz?^{xuhAl2v}-C7Uv_mbJksBW>Vr} zNq;{ri=WN+DwE&25X7TmJ&tqagk{dSE0N!VfN z(~8Rxg*|UzJYvYRu$~CXPEQNYJ_WL!_g@PI$3)8dl*x7|)1}OeQu3lK(&lro*nCzt zY`>HpXK=|4wsKB`6$w~nx1SQ;MWuG0(a;(kdt-(_Z1)#`Yja%N+lw-3xd@2rd~-~Q z(oT|he}Kpu9OPr5+EN4^#Lkwln7tooVf|r+j1S@Qn=z-NtT+*Ym>@U0tT1jyaE6lV z%RGraL>{ax@F>Q)fz@}8Ne%FKomYG+1CLKW(}dbSmnAp5YKu;29SXxlD16u*5?ikD zcAO{dYJenRsIX_vvMxv=?@j~crUz)WR>WV~x0N6otF~}+>2!6^1W`!)tpc>}78`Li zKo&NsQyjJTOa=f6Gd2`^%Vzckm7|~rVFBVQRz_H=eemoZ!FE)mpX*J$&~hu_#Ev1% z+O~|_P1_v>E{B5q12GIZ8h1IV(G3Oc=+#w7D#MX zDn}0N-JmtP_-KeO9aUR=VDH|&R- z*n=bwm|~a`CQ%NxbYYkIt`g@zK~`J;Gx8EzeceyIG0rzynRh@VRTPQN|1X6SYYQhO zRSvzNP54>e$UK-M$3R3JD7uGJ_!&H0UOCJM(H-G{Xd`Jg3RIZ-pXbd+9O;^%Z1L<( z>;)XI0eC{>pVK%;ho^SmsKI+0#kfl{l8d(<8|Xwgg{YBh<4cqyBN$(iJC&DO~a zgQ?0tFGKg$-7i=rjXd0nCRl$Abql0rrM>1ztaD8`!t5#?J`lAqGtFWc^hxB95^&sO z!d>jTFaS%^h0_L0R9d^}(bFnkU`7m0CBnt%M+6AiGnq+K2;N>pj<;Wdi&QQ_H;4|Q zbNgAQILId2&t8%`HVM&$-4-SUmE4MIATBmCKKVoh#w?#UOm{p5*7RY=q4&))RfcMG zhlylj2hmWy>=~^;o|-Rpc;Ln=u#|;dG1Z5lA~R=50s?vyZJ_c*UgB2ExZZb6JjKQ4 z2@6?BL4_|s?Jb{5(U_HvET$`7D9gZf^EhNc37v=jPtMC~Jv!eRb>j&v3lZAac`ZR5 zr+&;)`#xWoUT+T=Ff#lw0#c3KO4=Ohr4o2!nWWMWLsy#OLd{l)T;n&Ir@oqTlxZ73 z5i4zP{b-f!ylbnEv-<=r3mzDBfSqGxT7(^1yps zM~DjBGLhh=lrkY=Y#=8Sfi4&VC@I^67@+X?QVnAqdQ1a9fU}e#c8yv4Vmu>zHf40< zonQrP3TXD~UP|p;eocKl2ubRtf&<471Pd5faLV#OmwH_Qp9)lMPszGKL{cdBA&b4S zMQo0xLg(M;oXol9r$qcnL3xm8$#X*v2r^(K!+$V?ubH|1{-6SN1;P^J9Swuwt3-7v z$1=Eq`Hlv#QhVoOKnmDfB{kl|J|so4)$H|`;H)XH-Yy3)JU%OooMvv)uD=BX0+DbZ zx0*q8w8SpNrW7O>xf;U%To>pPF%Vg(wyfqc@!`fX8FfmS)pT_UFo{+h4kOWHXvjCth%t*obMTA_%4usPh=pX~)yuP>PpKc17JiUQ^4P z51C6YA7O~k0wj0d8;X*_V!nLN6|QYk-i#H!U?AhjrQ)LZoT>e@pQm8uCI9Y4tBywat4v*vf#Mrki14#vXIE1$uFDljg*<2zEd{;4J!?%sNa#@M<;R`g97as2b7-(t5|={|_``Hi0H{OaCTb;4?nwg6S9 z8!&N!B2#_3n-Wrl(Pi#@l#)GYKGv5E_I#iUl6Aq!3mUPIV`tmILIwyfa7@u(fN&lB z`Ghw?;osI#{G_#8NssyNCs4_@On|m^NjsG10jCn=_Oq}vhQS2E@cRmb8t7oLMW}GV z$5`i@m-~Hu8JI=E>S)oR3zrm#7#BvJdbbVhjyJhy0qRQhxx6HD7*R>27pi|XrZ|uI z(-}Lyy~9JCHS2RBlayu?W2UhZkr3o?fA8_t81URY%w+C?FGta*Hgj!RA(#ll-I|j|-2r`;jOKNu+L^jd!=)-vnAt2nm8sZTV zR}0-#&WciafYho*SdQXS*VT3I>T#{j=RSMkdi^1)Kg}YkVf zvWGo1NguADa>E*Hd_gCw{3V_8W|VZ-_OZbg?rcl0Wu`@X1Ud?^x|~8E+5b8 zOq@x}>f|~0e~jb~JEd(YCdy~L%ApAqT;t#T!Awjw5%+{ATY8O@r$)kdH3Y0u7%~c| z8=)KG)~q_aUN)%a3nC)aQ5?yD#=;^Vb<>Soni#HlM72tVcRByr*8EM+7$pD4%)7`D zmAyeFgj4U?c#zgH`=&Uec96xUU6cjhI|%y%KZ?ElWb5EA8@QhxK1N&P!b~+RtVJ^h zNwkceWuBo#{S@on;gAT?b|(G}b8qwh*5N3mF<8tiD7_B>(IDnBOaO8+w+nt+Y-B@< z{me-DjL<=EMBy;cMOp}>IH>MSV;hdqKO=|zC@rGzM?fY0IIbey_WITc%q~VzxCdlJ z&3DS;5z+{XyeU(<&vW9#-caE{f3M1QGXT0ohX0*gx9B^tOjTvFQpQeqFMtK<)`dD& zZy4}MdqIb7Jrj=sNGiE3fHE>#`5bwJp|&)8JYT_`$kVq`x>90gpL9(qgf|HG1*J=S3l$~IfcS!j5o7Y?u z^L!s569K8oNtr2T6RF%c#l1Op>I|uPLG%SQ%*4p@kF!3vmuP`tw{tAOV7~srfHuI}9Y}C5;riM}6qOj?rGTuSR z_~w&(GwR3lz#;>reE1O@JirBq?|QFN#gmJBLx&)!g7qkj3AwG5V`YC6-B3wb%|v+YGgg-p3v&Q~gc(`MG?0EO@akb1I<2Cl(WniaKWtGINjBc|D+JtIzU$J}~D&!!X zr0qN1Zk6?q^Z>KQiVL(9GLU}$5O~_nhn2gBtBn{Fw)AAjRDU4a$i@TR&_gx};_WM` zqyV<9M7|9E`+!(?nl-hNtT8%Py?01&vYQl6(m{{S2>SiGF{*F=M{l1~b{FUT1WotM zH`e`6BPzc&a;_M@N;6QCla6(dwDrqnJ`biszA-mM!zz~QY>m$y^Am5T?=KS(+M1i0 zKh6=}<>^~TCozAr>~&vAV8n?t$y}FqP*&kbs4Z4WGZ$ICxL`%dmHk%d>X^Ikex0m_ ztYb4E1#>eiSmo27fwe?RaWh}he4Bu3yoc_^aQp7{>tHin(otQ{&85s6OT8}sI9V#7 zSHzpBg3dxW1#e1D-?I$up$HI@T>o%re1B16q!YYdH&3M0en_wHKtu{3$%4{aiS!HZ z-3qJ)f3oz)vRl&CIb{RupS@Jd{4-z5R19!DMZg7}ILR!EO#k1erD0g>TeUN1Fh7p%DCIcH8xotZ? za@vWFcw_Y1&WSR=eDp&$a9O9h_-yNYfIbew$<@bg$GYo$I)ovXRmTqG4qOowAhjx> zPjFU)fcex3pV2Dl>5!1V6Z^8}(~TD&TQkcB1G}%>2f{S#!|>9m{zoz34a96#d&S<-IhayZe&CnSKsSo2g5&D9qd+@SkGfukS%x5{0JhY?x&tW zzlIDwYsEmLq8LP>!%Q7XQ!B!*XJ*tlF%?aadSS|HP9xwa@oW<%G;QnZYq>hFh^;ha zB+*PG`Y@W<(!3|~hsFzo$$zVAQTYL8bKl2>h_PoA!-+jaiGlshy82=?onpGfOT;&n zX>s2)@>0XyxaG@IN=vPLOPnnsLa_Vd^-z=NanTcyzRz)NS$JwU@1&M;zA;fTgs*b_ zDU_J?dbY~Z2|Vq(i*$%u=0eKpqq~mmqTq_zM_bsv1n!xXX3Q$K@Ek}6qLRW27o(B9Vk1G{LcrjXS<%-{& zKh3UgMgipjsh@DpH^|+%ORArlH&x&Ri0|*rvVk^pST%kQ{p$f2$2~;zo-{Z za+8>^%y9mcmMzHh4?*(*A4+{)a^*N;TkevOQ5#K2_OTI!`L(X-?AC2rDeKV!4&os5 z1EX5nqRtrojU!C(eIyUPSe|ZBy&P>g1|5mX#2B5`_)_I2^)ii{@3mM=e2tB2fp1EC zrzHTf)*GSO16V+j=s~x8d~sX&6?$^VEvfq*Mc zgEGAMC!SnWGl*U{0(!d?ol}h&;slnbvm2IKR=-?dARnbfwr)-UsZE%+Uqb34qCFR= zxLx0H@w@Ip+gst2CB-jg3U=gc9NZN|)p(6|DnENVv9hp}{GFFQ%)fG7>@npkoZBu^ zNji1wU133zxO=DiyjFVMj_+9V7Fw%F9PsLL9`3PI{R2DJF570AJ%L;)Z1a_{MYrrwRllU_H zJKT^6U5oEFKlj3B`12GnW3a=B)QM&jcYw~(#*4^6$ym}X2Ugpho8NBsvPq``r5A1? zPWYfRFU_s!i}b`0|IeA_hHXqNiJT(aButgJbHCZ4>|^U1;F+{PpyzkGCFo8&N|NwmR1W<)?x-~G_=6)7*g zvaJ@uf;)OBR@ykk8A^Jn*#9Z^?(DVA^Yr3BLNz{JWdmIExL=GjMjrxWUcdIew*aq1 zK&ATRy9pPVb&|>WrF1svuJVhRg}I|Fa#i8ByY;PPexBRb6$J+i)KC%hZ`gV=Zn;vd zSe*#2M)EqZws$(8k=>6C%|;=(Y_t;{Ka+EF2z*h}az4N_>$mh<>ZwV2q-5K|7C3AT z!{f>9pe29C{pqqLsj-M8P0a^^!d9#bxT9%Z*w|-HY=saErX1rJpn7CXss^H1^4S23 z-eiVVJTxjyCs?^dlNhi=xA35ep7J9Z^5s$_)L;8f6&!Y0fRCGik&-fsqphhY+%5b9 zdFw4&S4ND%XZ0~);VJnrH826Pn|mE3hapRT)?M==ZAc>{^)ieH&MhVdr9;B-MBpU~ z458>*+i>dkD22f>wBwc&#g1C?6!P!!W@Tr0wLUGWXVuEw>Co_!CDbT-03z|JC_@q4F^Eecua`8%(D^Wtz87-o zl^q9dA&}Pb90fV3^4E;v4DY=i0i-Yfz()Tn=KPn6;`P4OltBy_k8L$_-rSQA_^=PI z((YE_7mp1D6@qeid{!rr043mBTr)fENfyN%0Ak7M>PA|RU1_s^e;qwi(D}pFU0Z88 zLmFM=*4`3t#2_k7z?NoOC%Z3wfAFsVhECr{LcSci!^pC-97K$1=x@)fgv9-@72vrT zxoL}nZKK_H*qIa3gUgd(8Bm_@|Us%MJ}GRN?i=o}Vi?+B?)GW-u`Z{g3wX^5tO*37#! z;oV3TxVUM(utn2bd~2daqOxNTu{v7|kKa8t?|Gnb#1>*vO$&p(QYE9E$xW9{JLYcR z`Ff$?Lk1KAf;R{BSJAI1cO=f$24MVe3BYm|aEg0}LxI|Pz6KgX#9T7>6QnW@3{)*X za^QH@G;^(00T93rTI8!N#{fcNo->m()}HpbWKFW~Y#-D2R!Gulja`F7aN{5Ds+x2h z9pgG&1=t;tvfKT*O=A!lU{i>i{hHmF)cI`+*hMI}+{C>7c@J>8VH`Yw=THgna=$kO zX1PR&{lgx$=~D}=`Umo`YfC9+N>tc&>6rgT$+O<8$rx|{FrgiN<;&alX5CkT6;gJU zib8}==%~mu+1*K1Vwi=N)vt;$qCtCL-jMXOg!&!${_!jBVs$9s3+^n`%s)W-iX%P* z&ath?VI&r=LO5>wR2X_w$=H*Dcq^v0+YeBTUof!meLVP}eeC1$Wm7Dy+<&3C*tCRc z6Z5;ZwjjCb$%YSHs4}Wy)RhGcOc`K5c@fwUl)sbmB@-UIWuf<(qgXv z7cpF_-3y;A_Y%{UX%jdGSZ_>~`0nXHA8cIjorpj`KwtJPJe9Nr^4m}DJ2KjKM&ngN za+^2LO>^l@fvFx7pDozng4M8bs87W>C}&7S(=IYBHg@iaxDs`DVO98&wqw(FYEnX|DJx6sQ1{V>c zBt5yiS^^`(@?<<9qt-5`cwj$Jf;OlVlqH$vJIioeXTGNWNMj*p%*uSP6BA6+AF_U@ zUJJhf(uGP*VS2QA)sQzlxMqAbjU?!j2+l6#XBhey!U4OF;J}r~1maLn=Ydd;FMT|? z>1HYC$@j)Kw_?1n$9WEuX=9KtZGo*x>CDYb&gLvDHYml())wNyY=x4Mt_qYIopPU6&j{AoIk~W3%`lqLTAN@%{qtD^XA>p&y zz<#wctR6pbMx{pyN#^v;oKnOjB2@_*sGljRVz14D>#sg`rv+@-m5M(`6oOZPo*PW& zA$(E8Nc_o9nc4*`7^Qz7zsHw{@Yx~%reosbvsU3YiUvwWj7%p4Few1_m+;9Xj}~{v zoJNoT*P?79Sc-K(n1n=(@PyVFeSf4xKY^CQ<}A4)bNaErE}Jza>Zs~_Rm$k+N{Fv% zSXQ`bab_Pd8DyiH@eW_Ku;2NyuKdRT`)B)YF`1a9% z<2dJrVJF3IkMVzq|K?T+P@YQ^k2ca=zzCe!4o?^H1?0POw`@l-gQLGomNS7T`fd0X z7sj6D*^C-0mjDLRwT+4w)xQDn{F$oxVKc!y^A6Ip5<&bF9P%m!yPv+vd#<;@_4OTE z)L;0y^x`mi>LSJ2%QkzZYs;z^ea|E~R$e4oa>j*O^5uQk2iON+-pv7!E#=3;bV_#yEZ~>0ugdKhP0IM3+>@ipOh!R5iUQOHX1mL(o9G3gtC4> z7%T~oY1Lm{@h~BHnC0j&Q{)Wl@lR>|wosKoAaT)oF{mkYA-Q2fWFD((XE08s8FFv+ zuoP--RqyBHtjGPIdx2Iuaj#RdxB%GvdAYXVr_PLbIzCTjQajwBhvWlKI4&i?ru89) zUzGfxeKBNN9v61@Y3=vymQ~6=tb9LxgFshosXvwgrkm$uxQ$pJYE8#CHu4fh0vH_@ zsdNr?p?lv;!a3?M2UI8Vvxg>JZFwZMRR``BajsKH?k2Q$Ne4S`A^ZyX;IJh8v?;Q*%N{Tr=s;TXofV16<{(~ER;_X!nH=2rBQ*ePlfz^R)|A~ZE$ zbN^hs0T0QPLm5WI^hv-egTo00fIVl&EwF*+&Q&k5&(1wA-dWK0l@VZIoQER0lb=8e z3J$@vWDsH<+tCFYHih2bl-&M`gBBo%Q9)GTNjL-D*gZ7b1J;n1n3kh{)z|Y=VM4E> zvd~ZS<-FCoOHK;ORj63TB`V{Pzf=8OT{I&_H8L0$l-{k&t@tly=2$?r2QgzzK)Hx3 zi1Sig{4OIv6*HG;9!az*qE|)orRiK$N7two zb=P~{jUcr(`|e#?I&##_Oj&y+8fmE`g+~QkEv{H zjpgH+k!%zmjN@n^LH!jJx&3|UC;hLzLKwRH=n`M4@gf&`d8Y8GT4d;$;NC)HMFK5G zzGr;g0i7({gF&@n%mX%CYZh#vI1L997R6a!kz&C1Lx9J|XVP&Tcfb37xvI@{+}8~) z&A(2H#P*Np57J}&Zmi~|4Ourn9*1Z?&Vm|AWAS-jpWSjwIWL>0$%j38s&jSS-;P6Y zIr~Q>;oY_iK)uXIb%i!p_kHI1_oy{;14&=dK~-zckm_N2G~3Q3iwX2{-Fky&=)%xfbyttBoUcOLyd@So9+Q7LtXa=-Y zt$H1t!l>Ut?{RiGd^x4{3!fY~ha)X6-YPnmVX`W8)0?L3{|=QhX_^@Y{Y3drbYd1{ zTophVx8vjPFU^oinU4CsO9*0>!6pmRDudOJ_l{pl@gS`k^b)uqd9LDCGj>=^Q7+@H!gZx;u!;o}m6O=}apsLumEH$Zp`!(vV1? zf8mTzC-18lSWgA@E4})Bu>c#9IE43KoF&W^dRKomdXybl52?bn`QeCit~*cH9MHGA z6`CLy!@@UH9LOp~G#adn3x_moQ#qlPOJ`FWzR#-=NZ2R<^f>2L{6s+A1^y#uM+fAt zINyu;pKwG9x(`s|)JzP^MlE&}(N?KB^zdAaoE0ZF?SCYxp4NISSz1(F!JAJ=1|S66 zxXJ%D(agJ~%5Kc84r;B$oYB9elay#rb#TRPT7XI)`1C8+(KlR=4qmyRs&aG3xUMAx zYSfj7W8-)Q$bGwWB8Q#8%3*M-Mk3T%-|i0v>jq}e+*V`1k3V^h_%Ld1m29%htCuex ze5(>mRix_cu!>2EOE*u_klw5Wl(FdxQ8-ftyiWOgy)F=GYd_=bDD-8th}(KE73qJs z-H)KriW+!<^)g%yy7F6kkTlP@=ofz5HTlgWaxPl#u^$=jaz>=WrWckhMO(DYSK>2s zLs50`JgzdY#^jsn^2LhLpv(J?wg**jbS!)C-+xgdW#1X~4`>Xc2YUQ`a6xF@3%%72 z>TvXhyrzkMZoz%-K^SVDvON$DwGzpg&KtySSOFNw4b+i5^5-^@Qi zfLW~zFX?CY&H>R)mC0}Cs=FT3F*x>-I7kss6v+SEC-U8@-M>_r$J02m^3O&>&S+j6 zpb49lIG^*FB^eWYs~|}Z>A9%O8x@IPvPhy zMhFnW%%^K3Md-kTW0#(s4kWFl-?+GSiOt3bN&$u^dKvGw%xxQ6`desKw=?DiRp#=R9fR{Y3$92b+ z0f{3QtR;|E{8w79n2~oX<3G-aqoD>-c^2f0Cex- zsgG}&R5H{BDkrc;*!StlBG4mwZicxo+l4W}Qb+kk^{2GY;ZFfu;iO0@3nl?)ke&N( z`b(4_^|Yx3pPjb}6l*jqMEz75)YMB+;nL$OY zC%8G@eRpe3NKau?d*$hUSdw?Mz=#PQ+>-s|ONa7ha?*+k1SJkc)!gvjTemcU7PQD^ zfuBXECbIo`W5^6bim6h`W4+*=H_f$hUZi2gb`Ye~1y@4Wzn{$Cw+Vq<3`RzT!fx`- z&68O%4+R9Ld;Y~KTqc5NO$J|c-xqG|*{l`#7>`&D0fHhu}Xnuamx zgj(nlj~)#*9Pv1GKHRT!4M!@AAR4{+_`mX5fRYnV*7<=i(AaR@fUo)=3kmF`{*Pxc zav9D|*``A+r1fghkh6A6A7-1GZCizoSfu++m@A%B0xU|a2O?!8PR3i-Gv?5x1D zxJEk_=717=8CQU5yV9uW@4!+4-5l?=Ul?%s8Q`?STDx6xmZppAEBgX+Q6gM1%HzWq z2$h5E2CdYhT9oW=_|>C@Bgu5M^M{fw2_`0p=r{;LpG^l>)`QRvbP{M+knek!l8BJiLch;o_0PrnCEpsW4KIR}sLv{H zd<yjT`2bUOMj$tP#|7DazfxHqsnz%T4hIj}23b?PFF z21L)j1d_%D-YkJL6<4 zsIk#qLyfL;HQTxwfLQwKwqXh}#faPK34w!U^xhevICyOA*i{Jgp|a=J(1X6rsjqSh zvbT<~EwRerW|c5*s@x-_dOXtw%oN$^wn}U9b@;n&MJkFuFT(Rcf_TlH31W}y0+pZQ z3=NEP8DNFXoN5c`@0=Q41OmV@ct_jI9pYoA(Vr8y>Jd=R*%8wv1X28hK}T-?j%3g; z#rsViifDKEB?qt!fX!xyZ4AOww4=V!j(PNpv0dn`ixE+*r(ta;*bCq)pz{QLc|Cih z0q41K7Nhy|o`o*MnHh^H12Qk9e)?BVC;^IGI1mefa;Qovzh#76ZAZg}1qYOmG0tZZ zEOvd{uqTm!mEr$WczeX4R!%tr@h}abpPH>;$kamSblB6+@oJ6zCmb!dsf^!yxsZHF z2HSu89v_Es+nb&?#gml>{nmjVPNdKW`ORcbXO)~Ujr2EsKW-+W8B~StS(Gy8qn&x? zf^O9Y0pXIOP*c1H4YX$;HY3udlqDac+)KQedpKiYlF13k#Bmb7-IwtSTKSJKE4S?< zC&?(~3*(ZFp`iU13*+@kTCLoqBMN1@3p+9X1D8He0L+AFo}@9VRe#arB%{!GP+2-_QtC-u8flgQE*Ni)xCF zw9g!8Q-=z&X~7tFbFDInO@FR*-i4#y>BBZi;hye%1iXsyj0g zaB|HlV$)~CNd|n=bU05$_E^(J)UYdEPS`*0<#JCJoS#L$0GyZdyQ)|V?44xTV(QWd$o=k-G;stTCop@R<51k^WUOv0_AK3ZV zCw*8ARV|!dj&P01U??|oo;>mxnN#oSER6V!vz?mOaQ7j;eDZ)q{TGykY zWa@SNE}y1!11FHRL;0h1&XGdVi|LMhF6d+$v&F~reE@X2-#mK#u=wN}QLM%QK~T0q zf0snv{&pzFtrA4Zm^~n@8MvLO7bu+`yv_uJg>rqy(ffLT*jtiPe=lKjZ@xB*7mfUH zs!ZE4pG2U5d1%2tZ49w@$;fFkPwqM1^(>K_%UzPtEEQFQq~U}^)=$llvPjSS?jg@e zg@$HQl5WrZ&3EY_i32t_mm0c_vqjH$-70qRp@Y-G)O&0T!sX?89+{_WpqAsB+qZ*B zd(|jb=>|RK1NR{$iL2zocv*ME*7YWP?hDK!uGUsjqdlOaiX>r;ZY%!;qP zBL3WV1-SQx@_eTJj@x*B>^TZ=JDZYKu=|b|IThaGrhxja31oWe(5Cdso?n(t>=wW`XK7v& z>J!@M%D|Q8i=w@caie?{6{7u<)0{e}JV9cYV;xtnn1%CD6j-@gec3v`Z<3Q@R#eov zI8Q)KRaW;mly*n4EM(}}1u#F!vV1}Yt7HFW!mmNmI)}Qr&bun;9`q-IFSaD-0?+>p zu@^P-2k3fS9g7Z{5Cz8wU(|=5xWXM)(D@yhXiC=&h3h|}bSB%Mt?B5)^&D!v7st>2 z+ALt?Dj|~^Imosgk`1BWyD>Cb8tD;Ch828$a8xnUnw57-YLrYE=5W9wCwmvpppb(- zAGA!`2MS#+Hhl_KU#mq8g0DStw(gA5$QIr06-Amt*I}+luE~dwp8|83x8LgB(BY8S z=Q%YPmnu*3hs25ZmlduwhBIq&Gp{UgLwQ_j-Ku$>QF@9qLZfA;a=73gifgNAZ!{Fx zUl`xwK)330?KHU9Q?8>a5V0CiCaIv3epNHt<7ZqHC`^8LX2Abum*nyS<91Xn!&Xfk zaH?D4poXoBU7z5)?#_%m_|O|_@R;ew_r!54VOz6vMSGYW>U~PKpLy?1Vo)kq`CDL6 z;nhi3Lpu20+0t8NytSO`5WtQi7^V#`W^Fqt^M#LSxDZ^w5F?VG*XzT$%Y9WPwtt#B zQ&tf4Oc4>SnEOVZCEu~EX|mln*3YJ*LkOXm(5L$x8AFe@J`HSwx$jaV3G8sP@w1lA zh9e2gVaeZnvOk8BfP{71tOG}wgr_}}AwFvt2s*RKTJc~+iyfh@nN6eJ4+mspbqt`$ zPTt2RkRBE_Nm5xG#~35v0&62T?3`_mQf@_+x$d)pQXWEW6qyTSEb4|yp^5j3Wt^46Pqzq z<+f(gp4!$yy-S#14|Noe!d!tG$D&zBO`eZiVS>%;rbVK0M!-OfjnXF4a79x`gg%tLkOX zpI3hLz+>@HqqO55ZxKT`+84|cx~_t2-bH_h;&+@lBBIAQ_1|gfR}*VGqM7~%ot7JT zM~}H{pUp0d(n~qIks<*7R!}vWs@N>oeg|e1Tz^VUuOqZYo>}&qQsXy2IuP1crGqmb<<-c1MhWzTBpRnBI{T-~$ zYG@Yx7!HOwzKNwfb`@1sf;MBgg@KI3xeTl+e5F~%Jgu`Bk$~9e5w-pO1kT~SzXI{; zp-qM4girLU9s-MdY_pZDc}M=%8q*Bp`-!Da=lVU>0Fb8@^2XB)(+LKIpoJCA6nil zM|N?N7+?t*oYBtD7jLvCX*p`A&;7?f8j&WSw?dfv>lA|6ICcJX?Mew=|KeV2( zEsV6dS8<6j?f2MOd~Flkc7eR>MR4>$&27M^tI>9IMGWXpsHC=tb@LXr$o}T%#RLP=&L{@GQN)0zok_>(g8eR@fBXG&J zt11{FG7IX09kz~el<$W9Cv@X6H{7oGI}96B7cUxR%Xw2_ba+gNsY?Nf+B#KSFRm7a z&caFeT~)E*KzG3yQR&xO=&2s@AIV_7*dZ4rnsNBuj0%knDz9An{bJ36Megv*r+#-* zOpJ6--BTN5HpII~!&$I>YBO^AB(57xuJ~q*P=7iPAI^grz>7ZL<^0OyaH8Wa@+WNT z7)Q=4WsUt=j2#w*fLNJi`Pi+Ot;*%R=AResu)fb1bcR7aDg{`{`2q;ctMwHwvKeze zM;?42tA(EBT3c$7#friH-dZ^^!dri>WD!m|()xjgA5PwwI!sI5+lsv}mqckpr9}Rk z#l~cGc|K{8E0uM!2^i$`%kR{v!=F0X{*E3wky^yA9>+-{+q2)Vz!Iy(7Bo9>gBjgZ zkqqJ3m}HmUy@VG;jR&S;-W<4j=w#GiiJy`fDJZk^c*Pd=AxmnFYGT!UAj8)-TCA}-3b4?Uy7|o zc!wUb766K&+HG)B*HpWjMTHS`b(yqgs5jx>m7UaxrgprdB01xjuzV)UBb(zcD=0tV z0gudKddqESo4l95U*b65sr7+?HvW>YO*}D->h5y~Anf?MQ29eMTmQxMT5UaKKE$9=ELm71WPmwXvhx-c z7r0xfp;Cs!WN5oW&IkOqHTLV9TS1eAsc>5>kP*zn&c73$mS1!on4_Dx)DqRCX;@Jw z_@O3C6`*8II7{b_1u?A0ue}YY>doN=cO$uM_+2TQ72MRaYZqK{E@HrpZ!Z^{u}nB| z2ppDA=if8>bu-87xw;~nr2CX3af@Kv8=M6eQexesjnTn zp5WZ=850z%7$|m|#xndT{oSu^xW#{T2~fle$GvG?$L@_TE^0W5$2(tquC{6;RE^R= zl=nT`q%i+2L+Zb^Kagn;%p`_LW6#vhkJkP#b@`rRxj$_o79*fKgFpox`#y!86Svqr zFS$7AlNJ_7&fctJ50OPo?+zpYq%}>jkZa0bkDlZ6EivK_E4i&h3VRz@{79@g=_&bE zOUuW>`id*S^TBh#Lr*#neRe}{;K)jfZPx3|+7-WbUaPQjk%x6#*@ZmsMW6c4phUEc zHrQ3@62>`2?h>3@F7Z%&1Cydb=*OqSIF%Q$zA7a6a4m>6Y*=*a@OXnM2TkP$|E)X0 znOobTLR&fWC@!b<gp(X3~@#f9X5*Q!l@CU{HLYl^7Uj9fV94JsUN6)?aO!e30WXYjtSuf5_Ln)TzPk z8L%?vYy$qkzB578hcRThkz1n*bB-TEVaH+X$qXnk_&75mU&DS$H06Ny&aSg#Zn8Qf zM&ErzpI~@#3NSaVw&~U=DYGb*+(J9?<=EI_*f~`0AI6K#suKQChON8F)Dl^i@Z5{9 zb~j~&e0jY2(+85RC--+65(ckmwJ{qL76q(nsUpnu5o{o|`9{6Ooq4@f) zpWJ5u&;8RK2=P_HsHMOop#DSs2sNlGVVknXx@S7{5JSOPt;`(#!xaf?g-!Q40RfAd z=7j&m*%E5XJVxS_V=RsVgzd=6wsUNtSCrSkMQr-KeRhoz8~gzLyJ;$(g~W#uuI&Og za1e4Eoz=&WcrBc4Aita5+(pXZHLuta7<-bzC#VO~2&-lo|D|r8?RXT)6L3fn-WKN{ z7cagccZOE)R8gj~)S%XtbCDMJvAmYc0r}LP;2<%a0I!LxHv4&=kCyZ;S&Qm}<(aY= zH13pYKE)o6EhfrpikB?Tu&W5a$2hzliR8Z$hwt(JT@B}4cx%rPV4&A=NyXW8lr=6Pwk0V zi2G3~{f0$*K5$CaqQAe*L7Yakq?|QiX3d$5peaIeJcNo;Q?mAWku&qTJ;MpbbI`+f zA_BYHzA`{PBnW*nlJy-*rxP%0>xLE!_*Fv<{P$}4DR97NJn)$Sqd`kJ(GGJLwN_Mx zM7HNHj|j^-=1D!CX!ggbXY~4-!B~o~7s`=^8?g#w5Oh+Sc+w!>9NLvC0duXdHyV63^TJndpqD%Dk3-<5|;{zzG zsQ3MKiIb`!$hgsF`PMkZiZg=@D-6rxdLVt>+ZSkB1(PK!op$xvROu3+h_pSkjphlT1i=}y|*x*wh_Mjt55CVbNc>ue}I-9P*r$G6@T zKB@O!YxEX7R;XZw^1=xzzXHTIXSWjdsHGeuaIz-9B4Q3Pz^OTYl%D(WnQsR`#2)cO*Uo{Ks38c&aPse<`FrwcwMTe zB^fHrd>WK+a>+S&HCc~$Fjgy5223t@ocwo+*0VY%uD;)Z0^oiBO0^f2jQVy#_($4E z*mXDw#(ui#OSMe|wP-RNh(&+BCB-W^Z*3?e2U%vVZjRUZ=t=)~hUH;xsFd;6--zH? zniX@R$xmV34P5Lj?jf^}J>J(q1H;ZC0K&838CXP$R}|u_@y*NIeb<*g%g^Ze|1^>P z`nLnQl_~%?K*+z)yarXwct9jm*n2P;r^)ag)WIbd@Nv zL}(%)ey3Z(gHvVT>f5}z>0)0&o<2{ zIzE#H%9TyEh|V6X4;>;kxhUG4Ch29IOw+At1XkZO5gLuG?2xIlNnD#?u5q%*s;ys{x*WigG;C`Wb6c#^8culhTwiGJA4W;2o8u&{22Tr;Hqq8sE1DxFh zSNKj|xNGA%?IP}n!%NGZv0HR;xRmjOHfB*PFz-`>YhCU24YN_psvRQo-3(|FI`*tm z_(pFa0P($q+gE-RA$k&*IIkFW8+<@Vf1L)iG` zG1Z*Ye17891_+vk-O=wY@Cu>T!kGK)B3QNm8w;Dyp~j@B9Iw_)F<$)(hihk#q$^Hj zVduw$n^hZB|0Rf3Y8?84P>~}hKZhmz%Q%|ZA{^9~7=qGkCUV3;&k5Ti-DpgWbDKz>%BM48hU>4mo(%0Ek zpvB7`s7`+vkxM82+p>v5TAGtE@4sOyWIn!h+?y%E z8BGU=_a7obTr(HuiI5SMs%<-u(dPG<;$b043dJFQFUGt5c>dP_?0Y;($~gz@UDotj zuGb-;k4R8qtV#1Kk^6LHTWvxLzd(6NJ}o@ykL(=|6UsxOTZdK)D!y0qpA~m+U8u}1 zHSTpfTKcSPoavwZ%(nR{c@D{XTA4n{!26+wXBo9{$0VogfoDX*v{gCrSj5&sFmiar zQsHOtz#s2|KrvH{9i}q=LL%veEp|sy`P=IDs^>}kULmmk11?w^fjj1YlL=Aw;se=t zN&Dx#on#p|Wq?7_m84+>m7IFr8=Wy>r94O2)ON!gc4%QkF9aeDG%*mn=Lu_5%ny5Q#G?cYlX+t{_fG!hgLL!NE@72gk z=p5*`+;3D|1pnsmr6)y+Z!Vxy4KHOPclGt#q(jww@_aM+)gx*mODQpdG=1z*V%&kX z1S1A360BKWsM39C^!pHTphGUh`$ynBS&c|REs-zoU~#kYZ_et?kRAonFv@Gp3MI+q zn*Y^i^aYevkWTEai4#Q&=P-9Mxk1UI)7N|IA2kY2i`?TOaXGzkTQKl#;_#x7nfUn& z$oGr?JZ2=~KLX7zLV$q+r6gCWHsH=>hwNqVwRS1I{TRTG%9;!LF}qT>E)wgPj&#oW z>#1p!-9POcuve*wPq@iLyEGl(p8e|OPo)sz`U9Qz&|5>u#icVWy4F9WQ#{=6(3m%& z`7URSi8JjIo#;GacEpnI5L^%L+!iacR&h1vZp1cf;TXo$hC!voUL8{(`8k3*&L(NAs6jA*U*UtEA+{=Kv-Iz-N zmhT=f?_f$v^BX?K%GVm6SAi;GgVxe{@uQR~EASnL^>0@fT&A&l)W@+;N&CmGukm92 z^>2OS8A5?Y+#VHIn%UmAqQa#s9=OySW2A6KRUPl%E&8KCYLvH%k7Z=d2}(5t)So1q zY>!JL2xdvIV@|?=O&G@V>_WsF<7{d&+;{|Y3Q5j14$2SJ+J;9sXMw$D59FB|IHu!N zVGbZ67Awe@I`H=Ebs<$a)oLf?OXrI!-GJ7s00tz_tQNmu0hoP5&-V<8r^wdxZ@aLy zpQM!3P^|ztEvPi6CrC9V$Jq*zyn(2ud=mB(*BtpMpEO* zf$r|)x|#aCs~rC#kd7jH@Z>v@9WoM&+`shkNRSGv!S}0gL@9wEecx(~eY=1AgWQ;K zOe#Yo@xd=GXs?$KtKDMuap#&XOvBqap2>k4;$Crgr4j9jX@cIhv-+ItytVYa+QjRO zE~Ud~wS;n_D8<@>TEhfZt^Qtc583s3`ADmg+uZQAG>4=qs|*EB9i{!9K}JY)i4(bI zYiZH#_v6g!kS{q&%BH%#3vO(s%-7}GEvpnT3h?DvUtI423k!zT@ zW3!qB!E)Sax=46++9Eh>Gp3>`vyBXH6RX!?bP5FnsqHCA5Ee+&1ao>6NDT8%o0m0{ zsaB3T6mzxm46STEo7MMhEMecY290a;v2uEBEBE6D$EPqqvV7M!35ElIXA7RnV@!@FIT#)H0-VRCG-Kz2NxsKz7*dV!myiS2I2Eu zzH1WCD&y9oU8X2WKFBOpOZgDt?G{I1;e0+@#4fRM!hm4>z(c*0qUh6`M-YoRTPWVq zgOKA?rldlO9f{L3bRMe!@6i?qQy`~GruGqMJ`LULznNl-0F?Agm$*ko@u@<|Dnb{% zX#Vd0Nq2s5GMMCh%gp2oBz4VfbW@6CgJN3}Avz=K2+(AXTT?p>!BRwIN&7o=x;2KZ z>MEeqC$ihp%tb;Sp5M#YlZ?kC^ee4-gjVJjdPUQqT)0AWn%qJ<+ zA0?+{*5Kx)VaUzaXR0s!8{4pHI!o9%wypOs&2MKhra49jvJN(!0=Tq*!xlnCMCbw! z3N+%;2WEAaXYdRu+9;7vy8xgA$rrXGoQAk+8fe1GAhYolhfQ2!1xj*i$LCu;MmW5} zz9}@KB?*(_)3_vJK{thny4D~m;IU3>07`qUet^oUt)0FQnp`W$ppo~@{jS3!eXfW9 zAlvd5daGI?y`{?D&=77D5wHH!33}>_Ppq0RRbBSA1U~3{+5NloI$6tzxc)WY8+vO(x?g~*KAPdReX?vp0oNm(-SkJOr z72Yqz!>MzZFjeo^ipW-&#=|(yWn2m3!-x^G5g4h}~gBlAY2LXcvP zB#X(7yL}kMc$MJaO0~M+GaY13;ecUJxZ_K&(OB|sb=o{pG>dA;U%5{#G48chalExH zqaW^F0UQ;@s@4*r8WSwq{ql%#T2FrZm05dmq-oE3UqzZAAvegd)m7Yde@EhRi!T?{ z%eVZ2&=TojQHjb(8t+!3?JfXFvC)nYxHuPWnNyAH_1>64Yu($spN*~N%fRu6o#j~m z`Tv#g&w@;}LWR#C6yRCC3}t2S=CfA7W96N;>{dV~7HzB>UB8fQ)O{bCscw~J2AE{S zrQf5^A)6r6)hi6FVkPohmr8@5rglr=FxBD{^s)RihM1Bw<^}|ne*Ybpc9f8{iji4N zIIV?EVD{DWd0f3lX~;{9n+#%uUrU$d=$XFM@?OZIuLo`J-P~_iB_fz`!f^vSXM_9A ze*Eo{`TA!MO6}F=wcB3edYypvqd>fl0<`*R_=UQGpR1STAwoFDEa>4RGv&O25Bhe!8s2M&<{4uA55D709M=_7Z@LFvxY|F$fJ9OskXkYO>6qv;bjanJ7E{+|`* zy@TBkTe-?{>QtV4`yB4TLgv&Au@egkRneI}3SfTaFo!9(Y}77z4?V3N-EviaK0sNr05tL`Ccx zf~^OvtwiDte8aruF^|4U;C7O8W$QJmv+N$%@}lF(A}wu;AE$aP^1XpagdNPi^iJ0F zDXRGXeiEL>arx@e^+PczY;N0xPITNCx>Ql#&aUY)%+m$uxd5`9$3UK~BJo|>KD1Mz zzj0-Tk$~cK<*O7{Uy}IAY7GLHx{w*KJi?!mZ+y3(L}>?kut3WjPG3>@ysmP*Ks)9_ z6FDG>H)f)6NP)q8oo(Cng$4QienL#}facrEm4Dv#Ed0oKRd;*OxT-phzp3SX3rXZ< zMw)iPr@(AuRK?yP#hEd*vu zo9*{j3?AyRRflESnm_(JU>3FgGIgL~3WeblD(aCs(kU3}s&lSTnd$K288 zf^zx%hrM~lS-1r7y`)KD{g&;oDH@(xNuaf7z@rdXX)|TM@v0Wpi(2Pj&0k8(;`H9Y z5EXr<<*+SAdYf!iogqZ;7ucG!SPvd0XsxNkgou^M3Ul%OXer?eI(6kV@j~F%Nu8 z_p>caGqTxeB}C}5h&r;EJkFvkI97m{iW*Z-K(9iQZxq8Rnh2SEl1aw#%>NQe^N+hI7J9gL=ii#}75|abyl9$dLmM;Z6V=5+QztIQp#N z!JxL{&2xP&4+(Yb<|J(IvtylCf0s=gbdm=S+Thx$nY{;QI;J={JhuZ^=p>mG_*A}w zO|1?IL_H?b0sDG~n<{7tidSw8H!GYcWsAlXN8?ayt2peG(H1}m&TWN1XeLu0T|R(5 zRwD$VR{wiR$3H?z*uc*d;VE zyAtwRbQ7AiOfSt8Haq?9(XD|pz}8Xyg5ff|XRR$YDfKNe^)ocN9t#!9od7)ahEY{% zcRP()Lefr5a|$yC`u%=p>1{N%w(5vP-(;R)kB-x2ppGzolJ9RP7(|qj=<;zuTvDgG z9bzJrKa#UyUr0pT!);zc49$b=SjbXLxLID2{FS+~qK{z;6dKGg9dz;R1~0(>`Gg7$ z`g4X(4Ba_dtTTY27S7@Yo4M4df3*YC43Zlu#gXR#z#`qAEXwxIkr&Y7&oz!t%;gLs zp3JotKXaAgbO!}3n^NrCE(Jfk$0~b+BTwQOKAk&et2H~x2pbdiI-YBn|AaEr-tdU- ziY(hxwNFqJ7C8wos$VRP>s_xt%vL`d|5YwCbim~;&l2J4|1wt%258h6!Wj?8JYN0o zPI}JS;5m2d@S)t2*^Gy-czX>CSVZ4sL-ahBtZi{a<4~5^t1Ek^A3v97k$cWht082& zWl6l1CY^K0-$9Np47c1Ol(16LMk-L~^i#9*QqEmqvn>l=gueMX645wyMOMlU@x$f|%ga9I zI*5bia1M@6eMSDYM(-mttMmVVDHiqr#eh@lfzxei0tu#}<*YVMk zS}{W{M5e>cMnWjPs4#~`(y#S{wfDd732FQMLA51zO^UFDS8@(a0ZCLe8ap;^o6<8h zb1Ke^u)fd@Guc6R3sj&m*@mtLvMotJUQK}@>3nLD37uvA$-}9u*g!KAu~?)n{yNSy zf!+F~dcybEihsQ>)lDyo^86pZ0Dt<*HVvWc7k z4lQ(U1FfsJe&76PH%N4_CJ-BeY&Z>Q`e70Pvo87g(>{=sCpmalW(_)`9n)r6TLut{ zKUw&m`^B(C{~V>Z(fzG21g5gE^ELo&XKrn&KbQY~lajhDsN|-4>jvjQ=q;N}HP5@{ zs}_!)-CLPb8`CfqN16W+>c*O6Vln51r5*fN=upc_(fmtKcTCm5N^vyXen_b_7N>SW zNP_;58du-ksv#_)`J7Cq*)^!070LCPZB~ zy#0|&$BE-)6QgU%b3|%9G7pVWTmUN@- z3wFmXiD{8cPFv;^fTdZ7Ad2<|*NM(S`1`k`vvcxnpoMPDnbCuCTV-5v`4F_IA2!dL zbAQkN`np@2Vz1I1bAGyv9@4V7T8gyB@SbCHW1TutJP16g!3)U)NxsGKmNk7I#k^FR zKptNca9g|2FxDtFmIi+zjE#zFXR+)}sdip&hcL|`4(tzZ^HupEa$R9pTRLJ0LO5t1-PbBq1zZR@uASsbA4FG(j1hCob&V37= zHEAzCd`dz-5h(gs8c~zxpW%jqMsQ3gtVSSp;#aM6f@ay!hWI{MlcIUW-okFaVHVgx z6qe#JI`s>POImsng-mjS3Us_mQ_%jP=s5W1c`dLu)fhf3W*XJx1-Q5IF+hw(k8iaE zeC)1Liqla3I-UBJRx@PU9(-1&bo2PlvycYdKV{ExHWFtX6j-~Ey!|1oeP10Pd_d_X z^fwGth>+&umR^NM9jhSKbIgwOC{Rg6MUXq}HHEQ8`V~xpc0{?FHc=`PkW3Ikd!rD# z2v0sY(`vE*^8NmxkYMo_vDvD@m$RXTs3ti%qEmkcw0+9yzK{3Gmbioq5 zDP$%980%*xGgC|O-zf-WB5X>W5!bzd_qT4pW}du7+WWC^Ld7Q|)C2qq|DU`YA?5Ry zH9!MLU}>W3ii@4=9uDj3mdX2L?rtg{`mD(&9ZEumVrK&gr_{k8CbdLdO24LfgcJ%)9n$Yd1{WbJS>LL9J{b5_{CH;cPT^O&E z`4%#0N}M&6Ua0STg!^RROz%Z&`ju2A&OQP(cE<7){FlwTWhP?n2&P4?O()DFAxGrW zu9A%`@LqYY*usiPXQEu;bhJH28M?;ytdbmUKh?xdEn92PEAP>l?A>aw0gWd{+~klq*98-Z^MALy3HQ8XSs36RUS6PBA}2o9j~N2!t*(VR>*QZy;| z9iWmb63JzAC85qSE_;ifCV*QuJWJmkph8?1xiH6{IvH~ zbw*G^;T3%uy294Kjp2Lx*Gm&XZe1N2JG!g4>|Y^7Inifr3h|&2W|}2270UmXV04;V zmiw0X6&`QyGwO7C+F_`{{xSrjyH;k4rYB99W-p0-K|X;Ppy_ zfC_a-#ZWyufKw-lfQJV!k3CSwzTb3~=OkLne*aHXC5-3L7})ww$Y+eP#jmb)=Iin& z3X1gUZaJb+TP6(qD6=Cj*Wp9EXqlN&;p?>xiebt}G9G zV?u5cc!;++0hkF)BfGzdg9V$6P_FQ?dn@g<5 z+Mu%kyi+>wzxB@~pP87Nbu| zurl#`<|iM&?@W|H`4a@|>-6>l1wo2(kqJ{JEgmUr@eXJiFWmf4Rb*vLJ_bfB6o}GS zB||07%ICL?mIpKzN-_Kkigee*44(=|b73Ysa(lGwO_)&FXv7d&z-w47JzTR-Z{5b; zohb`Wdn8~fzMDa@?Y0Ca8wu}Wc=$DJ8u4GVT&_;~4g8>iHa%#8%baHHg*4(!JZNwx zF}}Cr=u-JTIU=(@7Hi<(8V`JziEPw9fNHso32GYgI zx?I_{mtH6uv2pkkFVdg&5&(=1}NEC&XYw$4H3x=yVlEjqSL0^G_aI;-U=2?ijiDKJB*2&$DP+l=tv&fzxy$B3C$tmL$b8;ng5wP}y2i_Q(KaWO%<rpbJpPt`@aE zP*6vuuqK2%nE{f;oYBRAP3+c+#@KZvg$VI@cGEEb$2}{Is~^=HMq30Wbssj-ivaaj z1}1u7h#NZpWn87Y$z*S(?I*Z8Q6S%TfdEUY!wK$=3`zcymf^nB8Pzmr!&u1ixdYE;*S zqftpDMipg?zfvhSdRl9DzHA^Pi^Yc|c4&Mfpu-*B7l7oJSqZJmNzAd@6o?Jj9H*^l zvihy4wXCkUyIG(Pv?q}5atKY$W-!+wGW!Gk<2eNk+ScnV=?F4UE%a3;v?Ik z`yS&9xT`KA4DmWf1?|VlYN%7AuI;+TYE_iWV|c8Dg_pa(76I?G`CGwA0isO#rMSGH z1nWFA9Wu4|)}iB4E`Yr?d6+aX+e|@|uBTd7rlQwx)WZ6^=`HgIXrN&l!%idI34UvW zk%TXy*;PB0hhY>HK1BgF{7 zt4)ukPfVcXwacoJIPFpWqPb63a1M`CA;*sbvozS>@K;Fmhgpx@3=wzsFg3|cG7>uf zm~#m`1+4Jo*hNs5svQGD;U+y*y`+oaDerY6wn)C&==QF*>kWNS%eP)ktod02WF2Eh zSVr&3apcL7+LB$`p+%JJ-0SBDM4+#R9CD$Hje$VJPab{QUG$bK_PR=qpp@pbQ0+1L(PeO)=?}89X!G6oh~l@L=s$ zrIax@DMhxiKw_yxO^)vs83vA_>4*o%D1>gjVl;he7Hpe6f1l}Q=p@9@dUGSJA|k8f z%sG1{;30QvEM}9W$xpBsC~E?t*9iM=Sa5+$DpdRZ>g3$Dg6Qq83wj~+G*+#%?^b;PrN= zYB-GSrRooeqXZt!iBb=mNPo57SSZs+U7c4&2h!Tp`J&}L^z&rNaOkQ^j0kYMUio5N zBV3dLvm6erp<|_HBK8~u88GR|Pw+0RF1v;@uQs?9LmIRI^r71^h8XFht|xNjAoXg(-tS=FM#?nZOR zAAt_2VL|wZm;9#JrY3Dv$-$c^705Q3wLJCLscb5$;>}xWlujs@*y7%cbs=E(NMdxgCYUYbs z_(V&hn=}nZPliNm6JA2OsV*1;NOLv~h`tN$lSHY}382AJ8DG`078vBB$pGl+^_9CszCo=>*O_v$>4+2<-JQ?y)vuJKE@-6Nz? zi%RiG&h9E~Hbzhw_&jo8r%tO6<(9H??SGb}Kvd%y%RM9U$_8C`h6Oh!`K%TBnfN9( z0SEDf%&t$L=vgO4EX8MwTkn4%>~)3Yppe>jGJG*-Hwt3d?<|PeInov}oI7?E+0mu-=n&yQEjTt2o+-tQvj4>?x`MqiJoxvn0C+X0bn_wI4~FBC92735g}B`aK(KxNj# zR(re=WPyFux!pouP4Q~Kt78KiFa&s2a*Qsa4^a7)$vFuDxJ9Tz68dYsv`zpp1XeTe zCU$5=*V1a$@%w4em)~=)nNQSLM+X@w!AGkqj~m6s;|*&~i| zZW_#hO8Fg%*ur6rzYwT4AH?sGr=p*}?#CQ-XC_!P7><2J&Rq2L=2`#yoLZ6>ycWZ- zUurI&9<_0^E*{{W(SE4Q2owy86QMI2r$JEkc9;&V$%$tXTm!lBUQ}* zoeHBWu)zL#O0$Bd_vo%pfL(Ove})wK7S9mr3Kw3%A<67>wsu1Fq<>6>ZCJPzFPIHd z?eK^vl}Wl^IBnRb4W{y#1N-jU%BcGpN4mgGKhFkto3Fq^6l6Z~uqBFXH6$LeHvk$= zw^|v$s~R7|;y(C>g>$Om3-9P~4q6JKn0FdIA%FuS^W9zoI{^a6>l7t})#kU7uUDh{x8*ocIJ*G1`&ajlJ+W)`Kj-{>l5~+Gb%14Vb?g z5h9M)aW!)&1phIioM8*S$BJpU&36KzJOeVwiY2F2xx?U9m)v1Mi*#{-^7Ob|l35nMC*9c!pwO&r=YB$^T?T%qMpj zsRnsWrSOD?C?DY7Bc1>ko?!L^EcM9R#2C?6^U9StCLL3twcbK93%8JD6ZKnbmOR*W z{z8!qz|4ujrc!!?7~b;$O}#S^?OT??qZ8BfU!>BCrGc86O_|0PG3-4H`Wd6?<1RLM zauS4%N>p87k8X4olM;n|Tl~<)yL8s&)ArO@1hMrf9s`kc*0uJ2Pvn&Aw`iEfEqFVX zRk^Tvft0=%0J$6$9OLMMIR~if_Gd%~ah1pb*P0|o)^Sq|wX~`K?NoK>Z9dC8=D`s1 z`XNbyZ}2#mZadeC0?V{W+2yP3<-%*#I-Tl+-08i?o% z3|jM^_hvX^*~`GQGm)SF#}=R$JFw=uR=mrVECOuUKpbumGoK9#+gKc2efC|gN6=j;fve4RoGHcCx;0}F)>X5;f2jC z^Y^*|G*ENn=YU>_j^P`5JqK8wIzODHk93pP$PP|-Vi#-M4@P#GFs(IwxkxC*)& zwly&C8ScEa+Kt!MPC$tSrfG&Lf?mtY?F!A(*GRX;2)h~v;3!4M% z8Kx4mLq#c@aY$s;{@i+qjtMbit3TS%pAGMy>ILErJkiFT(vy&=F&eiGAWKAcQ(b+!+ zAN7_(?Acnj`Pxtj*-H~~DX9(qC1+6LFA3}-XCItIOy5JrG)DWLTuk4KpPW>|A=q%x z*QaEVUAF10tf%R-Ro@7u^N5X}qz8~Vhy-{BZgK|G3AwX$5v_kLfAfw6Vh`@)>dFI8 zE{^j#_B#icg#^twlZc$ZEUUcjJt9B07xdbFAbKPuPY;&o{JRacxx;#W0?b&!RTIVJ z$0K@_J`jm2`bE@7jc847hrmU zu$XX^vSIN&T>R%KjHgD%PSf5a6YFBpxks3D^ zf!h5X3~3f*b(PdXoU~d`sG7SGV^_rk5l7*BY}!6i%tB~i+H82^EPC~)_GoFx{{FNY zEF&%sI?*R{3wD3LP(%m+c;B=*Asma#lEHMa6UwlTk_H1{dv~~253he54q1FW`z&_p z@@_8^G05bI?pEN;2$p!sz42BfiOO zZpQ~~+1kTg+`Aj^dv+QszJJc1tO-5AVcf+zdPLMb3;OMP&-&dSix+5x0}jn;#l~uO zLAA!muMuevMdEk>mVUn!$1UM!gJ%eW+t&ohoPo~dBbZ=P&@<*NMFzzfz$057Ul3rW zwNJ$fVS`hoq82x%Wcs#8`hz+S*JHY1lAQs~wtbdN!q|^T_-(e1Auj*uR15(DdzGjk>?=c4H_vH@+Fo50HOL6d&QexH~(+!C{X^2A)Qti z(TZmxz^A5TePG_@bD7KE>RhVY#tDv~=(`*jiN}y}`nZ9# zAjEHkest|^C_*3j=V}=Dtv1KRR4@SsTQDv7yWCZh1(tf;)_qsSn`Dt3Cou`!J&+WY z$sUgZ>YC*WQ9`ys7OJEILiK~wJ_xldMw-}dQ>|N19{--drRKA$;k0q5y3&d+eW?xW z;!96D{pEqjR20J(>wIDvHvs_(mN2vzZLq>#TRM2j4fM)v9kvrpzFDp-G_(;}fECWI zBv}yQ>}5GQKp4EFrNYlpxWbl0lIpZ?J&jutnt#Gl6pzB=nN{(C+;CEqkk7^^V^6=M zsU#pK(+!T{(Bpxl?jRa`El0B-^D8|SF*7Hm1>~2=abJvtMgPN*qDA>>D6It~>y`wH z-*G5LR`~RZO148&CZUpo1BG?_bh}vale#6aX_(l?_yI|Gv*y}x8{Uyt99qxr+tyNs zm>z?c9>a@4ueP$;@ahk+H6voK*&OvQCxCC(n%2a|zm~;@{ygp~VGXW=_U#W1UO9<# z#Ty@5zijfQT#;9x7|z<5zmkIqH}_IT+$&ICYCo&mdz*NUGIRjWP6+LFBz-YH?`v?% z`VCzdA`_bV9SH3c9tj@Mnbzx}y{_ZBc9+humrp0`r2X_2k+GF|=#B*&cA#Fi?lQrL zOH<$rS-Vc~u!LYzdU$B4sH+{?~MdFxv2><1FT)i!xK7?-3^az_SeqbL1 z$DqOM4y->3tVj7zJw4a{N4oPN8{--J7YO3Cl0<8e}%q zvNP^MbHk=bLH@(anug&Z1h{ z{yk}dP`7<*jmJfV$8HthNE!lL=H0?`uzGEz+$Sn9wjH3+7rYsDsA|~DJ3q8NDZj=f zkB#*UU|v3ML(ezi*c@5`Vql9{0#D%Za|^c-iKzIJj^KPcoFY+2Lnz-TkLU7{(J9kJ zJ|q;qeQ)^VM`lC=>QB^JZu?xYQa0q2^!va)F&Bgxtq=UPxL+EP>bZw-34oq$GzJk` z?})DSgdQKA6Z(_>uhOQWVvbi>e(=!0AUsY#;KPW4zHasodqblW?-Ge27A}q6wo4{8)dAEzk}wqzGMh^!R)3CctmeH zt(iX}g$VKBhh+7^bBoTuITQet1BW1aWosP+SmZVevvx%vcs-EkLZTJk7i{7_ynu(2 zL?E_<#wIVs;pc=WYSE_<#*1A$nVRk$kO0O~W^#I*;R0^R$C@!g8!4cr%9=kipPQ0! znEN56hrrj$&J<|ft+9zjlC<(@9%gC~Z*a4(-*y3$`Up;h1(Vbh03*H5N78)LL>sp_{d zsgO5w(e$Ej4lZVPjw-y-&WtYi-ECh_Rd8?remrs{Q_Oe%v6*sLlY_M|?dMH1hy9Il zMQW#csytlE8YqBQ*TXO6*OX$`X#TGIZv)cGhaP7xdj;H+X3|fNkIr-NBxUY;z3*;R z(7bH0->2T+VFult`E+@=DN>>>DA}%R7h>=3cHu>z6hPzXL&syG1=YtHfm?tWHb?*k zH&^9l!t0ny88F$nVuTT&=!|k?Vzvl%Qu7qWR`LS}X*oAj2RnO&PSQo)*7}Y^4OtjIAArc5^k0U zk!C=fSY)8Ss*Fh)ph_nTFAsBCk#k~D%4jtq8=9J@oZVSX%056l_G2~`jxgle$|elV z2X$Rm+RoBE(s7&qWW~xDz3{xn(K%ABSFYTb!{Un`_;RwD*`4lBqs>sC#-pV1|*9E`mlVZxlq1$ zX8(`d?ZGuw_w?yuaeqaXlK?L(#&;j#Wy4BFg)qj?JLezexYWU*v??{$#Ne1o_Loxh zgh3Q^7bW=)NH@jiIVQ4W!M8o1gBA)!-I3jtOij9ymrdZa8Kb_^*nC89V)2Iq;U_bs zTT}_p@Zb#n@Cx1`2+L-hVFvB}kQs0!SQd*A5H)MUtIe1l>Ylj|!+K$kmq=ZR(ux*< z^f+bS`9=!B!MZziwe;LtwZqgvVNgRx4*7)M34besk?=$O=~sd6KdKFG0dxC=lg$vb za&-QsWyX(7IXsE6=Q|A z9UD%Y2zCJQw?yH0I|6r1?eYi2a7-C%4(n8^4kP^I+eXaLlt7R@RhEh_BY&6|noVE$u+2=Y`w(FK)u_Z!>kR7TkX zK1HaTKZ!!oLl)jKcKDtFIGBZ-6rXVPr5Q)pDA-8r)yhN{R?L0TdR~qryX7i9Aola2 z;Vi_P{;8P#8XelPZr;V-x-P9_M^AX8&YbA;!j~>9^w^}=s98SzZL}JWsnq@yYCY~# zT1pzI@UXq>2Wi@x==6H`G-4qMyz>eUmy82%5S40*{)i&rtD^E{e$eHgtDFxUo(;KP z!uxl!d`9tR_`zWY==TqLEj}3EfQUf|bM)bh?Qi&xZ>pU&2Yxan)MtbxlLeq}u4Cjh z{{JwNQhee;^$oF0#Pk-%X$#fplqD%^$*@KjfQKDqsE!e?5bBE}^U@>&*y6Y&{NS;h z$soTlK74t?9cL+Ja!(vf(7VhxtQhI^-vc(pFEAZW#CTE77q^Jx7n>j8)kHTI`N2N( zG3qcKbLwiJ6KZV5vU@Zx32Zx^b}0e;5I=@Gos)icPF1BX{S5|yJz zXuq?EWxVE$;JL61tmSfVL$js+=tW$iGd~$rNxQMD-1DSPk_4t;35C5;p)Kq(YvNMZ z~aPn)6IQoQHF}GuR4Z;t3e$I?Ecqi3h9i^}Om{&6q zj9BGjw+Ts|X1pqVDKT#mGac{4#kpf*Xt>P|$tLV==ort!6BuM#fkF1PbZuN?p;P<9 zW^C<&gak`=!+6r)L5m7pFM<5i9fDQbb@;u#d3_N&_chTAbB6(Esukq(X+GxL zv6;YAz*_-~fra#G6WlgjaZLEXN3{+q{H71{)CAU*7v)_c_4=cdLk|;Vvq(VelzO)1 zA6@@=Wk4{1EC{O(3)HB=gtxYrj(gPKOiq1Y@YmdislnLfi%D4~rlVORA?qt8#}gMM zQjF06<02Xx^VDIl6Wsz|JnEt2KD1TR3UVQM{2Q~npV%`EbN1-N59%Dxsc!C) zd2zgXwgot9OOD+HVy#6Slq<36ig$H#V227f@xfLr4>Q9JYpoyE2Y-Q(Iel=c_~xSk zfAAEx64$?hhvvyqnUcUkn{5C;K)}B<#mOH&Y(Ai4FD?eDC1JG$0b@JF;E6HsHCaXS zeUnAT2$QBSjZo-mMYNf|Le5`XBsEmZDq%KQ(QyQ?TxJfI~pj_hy~q${t_*PL)6 zCOR)I=w~{h($6|DNUGI1kXjCoMSqCazLp?PtqJ)cAJKN%md!tvtILL65>hDJW# z){_0c>^v((I2oOEzo#r;Nh6!Jh#)bGDVSZ-<#R-sLkM+6--mj=xMase)x8Y!SUdvJ zc>&xu+t`~7vBhqpaiFS09|;*jOimE+5#*`b7gZRo#Xq@m=L`MG{=`6Kj66%o_U7fh z9_fAloRZk1VxT+U)hLR;XdQH&{8Qi8kJDF%U_ETOepC^odl9BFk2t4KyuD*sKS@uc zRExH+pTq}x7O}&Jr8%-KAAV;*2(5$U%||#AMGpE(>tru!4*ei%usL`I86eWh3=ml( z1R5W;+NNWKckeQr)mZXFQIKHbBl}!A4#u>Ti5V1g6>B%lyRk4!?QQhBPJ7c^jim4R zDNQ^`nG23Y$qc^`jaNK49SlZ={;;&F32q}S&i=?*O&YLXDChV zhEIvRHMn0~a?J6k;v0P{ka_NNbmS`Xq_OtX$cS0&5h%QUKv?z!F6yaJ$yY6C82!$H z6~a9qC5H~eJ7OMa3SeHM?Hv&)hM+q$RTq}dO*;)7C*(1B`2MzY4+wPj12$202~Oec z?_L#TH5tKFMpoH)5L={KUsbQCbU)i9$X_XB+UUp=$PpMY{Yk@JvV6D~5ls_+DuM!m zSW`5^De0XZYZl@4PJHTx2ux}uOA&=g33nxb6FCfSrWl)8=RV0hkBWN?8I(Fy{P_98 zZq!6706*&WyoUnDhGh7`JYMz55WELUHQvF{3lh_1o`bG!$Nw;vyg&Q-b{ra-9W#ho zAZHXPnT=8`wF@x}#<1nj3)XV;%=$TU;fdkPi?{}mbexKh(fBZh2?Bd2diQLir6U-GRP2N@ z9Q~mVZGb(g=t~FXXVjfyf40tRcsfhat(rW)yZOkFw$R~t(4~2cDYS`DGJUl+Mj9Wh zY+bPA-PULFQU(Q|O$11IyfWRrAq=?vVGi4UrL=UO`;|2=A~!P?5LsKfEuQ~xrI`bS z{R+qyi`$QA?Y!BBsJ&hL5YCb_HRbco4$gfiH{UI)iaBFE9gy7;AkFG&9r%Y$9f~DS z#co);&tUWs2#@kYpjuvg!)%WISs><=3pUO#m;)fWb}AL;Xyqv@GfO+`Rf zpC>fiwXx`v+umL%8}UQCtwFFu^dBoX7$%l;-NKETTKVY1Y2=eQ?K?b4p3c%R9s<>scdwoN#D0m$Ixq z+=D^(wGeC7aggW>OLdfL7tgV;UpR%lWADPF^45l}vQQM-H zJLCS`oik!jkhM=Zr-8vnUz5FXR{DE~in<(UIL_(5=hN)jXO=Z=9Fq4|cQ;bPhEo{U zA~U|_y`jJ^U9tOzul{XWW9{edK)B?Ex{Sp5yYm5SjM4nBG3cG+Su}nT`qZ;NTg``d z-_6oQ`!kzD)gr57H`C2k7SNLxy%@D#Q8gAR-tQX5*)iN*)C@-B&MPyNWGL(Y$8%Zf zAgY>a-xL$RL2-T+lbuDH6gDS4f#eV+c>LK6K#iU}-`umFCuds1uO9ck`FyI4AkzBD z&Aw*t_Q)2&Pa{nRn*K?M#saMl>=|0)EV&J+=&{h=QVT6Kof9?8HS_7qY+e9g=8|KC zYKs3(K!5$Ci8PO!)%#9NMJ_0yJfQmpnTGf&WzFGlHb%+y?my2WrVI@jAoY1+^*Eq% zoT)3i^ugP}?w>1;TABoF=X^0I>Gwnp*Tr(i5y~L=lNzRbrPOB;X-%}IF$%+?ga{ca z?VsaR&-AhWTCtR}abqbQ5&NH3U84A@7{|(N0F4+k+hWX?T3O3!13sL}|Aa@~ed9u2 z#0c*q^8X+6KFNoX?;3bHdhcB`xFYm$Zh z2g?yrgdiGlDA@b?JY4l5Y**z8YEw1e))amTJ|j-vT_L;p8h?O0(YD!diC?QBOiX8X zBNxxXU}x#%>AUl;4p;R8&x zKM=-@98eIYo0dty@wA1?a}-LG$rGI>7b@C8zSl$_b*A5E-UcLdy{4HY-mPRvV9hg`z%je|qbQPw7iSVFN{r zYl7_&rvhzjTF3vs5QL>cl;4zDeJc)MQ)8cf(`i#98p@!$MzncSr*DcWb(lZV$#}2W zP(dL^j*tBDhxyuM*?jq;EadHO!67OsVu)Ke=O~!4w*TqN^T{8)#@DCq%CeCz`!B^e zxF_@BP_oVW=#@CsV~&cTe~i#C_-EeMp6A>zA_hGK70sI3G0lg}Aoju-1X@RlU>-Zx zC{t04q{UFQ?M5+u#|U!8U4C0WR_JrzFN?a;Im}p8hV?wToDhGtmvoB_)$FSEERpi7 z2T=PO$~ws#1?Pgaj6lDM1-R(UUyKgW5+p!Ca8lwlwKOf;sulKK^>_YAF)q&O-|rh^ zG0_r*E0!m;bwjqTnGgj$!)o( z@T)MK_Xux#b3Hq~XT`srv?*DIYkPhuh0byeNJ^!Z)4b0rH#_!-yZ z=n^*`u))eQ*9X4*;~Op8zVP%rxI(=G#THv!xWkLDO_re{m^?e^UMtt1Tim+Oy5NTN zC_Qd}FoQt*hawVGS}%)!4`#MF2$8J} z7df4&mk?1hqOAN+e2o1}x~yeG4l3%bWN%%Y%9AJ015c!rIeLD>(grlzXN%Wt3OIw5 zdGChHo9QK|iJbK8zQtz6PmZoPXigrMMj3rsW9Wtg{oNNiuhnODjYS1R<~ZfH&-bjB zHKzim!$V{Zss(A2mBy(&#T3Uc1u`W2;98T2H(ZzaK6^>vNIVrSkJW?XopF+x#+h*& zgP%Q}UXd&QURYn`rDuI|R3SG#vwiwNqfJXTLaI2+EYyCE>WOTuLWg=C)$^LyQcw*o z9w+tUmp^4bSE=ma8>l4wF zgeX??NF`_?U>>;3b#-{@(jUg&ly~k8M9}t}a~ULz4Vpaip=%ETsl9KnS@MF#o(@;6 zy%)O;wgMoj-$Ua{E>d*_hyO91QfLy(qrSlIBF9FmAZGt2Ljeuo<{bU|d$keGqLFAP z2ZW;>+G&Waxr_zaxI#?|%$`#tBmkqLPZLp95xE}Jn)Yu;U!g6m%dNBB2_nMefOf$ zi=zBQSE5&c&&|A+I1f$Umn7%H&tF$JxgcLo0In9*>hZ$inXLsF#!iikxMcpa8|YWz z==P!Y+2{|p3tLi-{;)}@Y$*~sV)9PR>w7WeSD||JN~)4Dx)(x%!(^`7> zoB=)W8Hm{*foQu_FAu{WeZAGBPNk@HfE2yj?5N{BD-vp^Drv=+ruPIeT^lKf*~3Zq zeARbbHkA+BLR1Ufk35JL0>=p=PXmI)zLdE`?#Wm_Dfrzb2xC8zlTQ`fj<3G_^uTEbOrDE!~VX7cEHEecLan7=MN_lNV|$ zQ7@`SK>78G(-gEG`^&T3w3saLzL{bsJ&qkga6Y`L9`8N>IYUDj1@4^(t%2+A3!|>z ziuzl13_pNUEMgV>QHh-9B_D^mo{!lvn%>o7D%MLw$dp&0ICJ?m+8lE2 zD+_o`eVLKjnsBhy(nUMYL?=8*mZU1%>oy>Q3QRpn=ZuhVJ$(ErxAOf?I99~LZ3(nY z9@Cwlc_>cfH)+|j7lwJK74%Ia21k;x_zfQRKqR&N;`q6SxAMY zo*V>o`$QT!AXK_%Y1Bp{{MKnlEYpReb$2V?0!WtYF21_Sb3IyYgmxN}?oaHZM8&u( z^mPn@Tw>`EPG#IN)_sL~X+Dvp<4Qlio$dTC^{-5uoMDEzhpy*K z0EcJVxO_8hT_7S47}6ROY$m^EnBo&&-9+9T+{qI|2B(sjZzD)I#(-;TO;gMD=sQYs`+9@;HQ$OZ|w0DJx=i}Bl;8*gu5aH z3}5~kpvRmiiKis67-+b+-@NlxxXQMs$8(`e6-gClagf59ndB=r2HtAN9R=Nub76TS z^Qxhp6@4x=#I^R|-+=L}n=y|puKNIx5?Cb?$itOyJu*oi%{T6$9aoX4kats9QZXSk z4h#=q{yNsRX6GuKOEO*#HpqoB31Z3wt}se7nv1kY+=;e;#in0TP;La!I2gpaiuOhmayNL7><{n@ZJ5)#iY^lmQ z-4b5Tmtt&US#t96xPwFKF;Dz~If6?)R0d>Df{X=8kdtLKhydtX&-e}HBEya(RQSP*R=F^WHoNBc2!W^O+VnQm{4p+N z0RnDc-l&t6veK zphM*+Ld&2K9^GgH1aYE9ovduuVm{6d0&_)h4-m-(NDN~g!c-H;h_v~56VBelU4BZ# zfA#LHK=bqZt?2^2-oQi&LCqpptb!0MN&sp&hU}HVcL9n;aixREAEKacAu~l@*iUyV zQHU|!z-VmRvbLb>LmJ?6QLm2^QI*oyX4_ZRzwLXK@2&&OU4g(JpHHvD94~66NriTg zD}S5)$4RV_S33&>J+sC+HWpxwr-%<s;2M|za)PT;O1+;ZiUK!wW~%xU&i%s$yrEcgz28it>?>&WcOcKi;f#hPWgxO5n# zMEKq+tX2$M5GxObc7YVW(2%PYD0nxY4O!#92@HqwmXSrgA3(Zx?%PLQyz7_HzPflE~qRgVkyXRgDi6_W= z)k27u{zkAJv{!)hKxdTjj8W1Ie)Z2!H;^8xkWewM82Yzg;Frxi4&%;IzJM!|J42=9r|o*hJ( zRsTe=)$GzX!1G-YYyyJADePSFoNe8BTfKoxl~wRGK~`VYVVu)y`IYD^puvI0^M zYCkkgPx3U@870#-cc~WhXe)m&>szYK#Yt=RXaucvkDXkNpA-1N9amu1*PID;fcv>i zMBF48eO0059z)sa4>^`?8-LlKVpf|XwS-M9m)te3@6;%BYgllT;Vv$S{C1wKIzGu? z_%QB7oJAE3?8%QRy@29;=CUqTH%+NQ2o2Q2KBj(_LE%Ayu9K}=uWx2#wb&_z5bKl- zFFYTTCQP}xyO_b%BZ=Q+4z0NnRIa==?IH_{xM5SwWeZXptN_NZgwvtL@YDs!8C-BX zBYG5^egB92!-5zPfL1CObEsYP4(44x!r#MkE+sO8irw%U6rV137?SjN9L4n+U>hZ2 zu57rTUX7Q`^WHz`&XB3;^S8g;aE>3L>f7IcgY%&wM$JX<$hgi}+r0acHR5 zK>3kN>sz2K>%U^*Yr}`1owTkrgo8hX@pmqFMnF(f9k7os8YsrkCH?FSVA&Q+Xl8a? z>Ii)HAT;5)BYTI{1g4niursRlNb8yF7;e`rj(42dA)=qJfxT~3=?SnpgHu>i$1r@3 z=CGp&G~=8Q5qKI#o^D?HzQTu!4r?bIkH9bje?{5{=@`6T<|iP>Hu~us!oYyDap?g$ z%F_Tt2^t>rJ6mP0?Oq2nCKH*|v-BZNBPfqcGEeCbO|#hE!RtiR(QGZ8@fP75uQp$m zC0u(9`IL`L#}ce7YF`-koX>7Kg(bX?&O1KIH9MhJR2N0rK!qVWYu4PMB*YS(v1-k{ z>F>lK)C??|(m_FU$~(T(_-&>mic;g*sU=1ZB5+zN<@=pK?U&ZUD8HAL)abJ!dYciz zU=)%RyPXhr3NvM3URAZu4UvZTG{=(};(wj3I*r*2I^eHM8d7%Wun+v5cVwb6eJon} zo|1EfgdJY#2ncOqu z69k_rB+W*H#nkfw*H?CMNS98~iJ^YN*|C)sRLT=B{-BFLQ$x`CMvcoP3pO~5zu062 zAaF%Sa6*ssx1XokR!{zA5I<(KaJx+vl=<69Non*#_j{hX`>n_0b#}qWsMjm;1FeiX1?3g z797K;mXl?Y+HQk_ACyj~bb_sazFpa%=B)tzEO-g!3#pEOeg^exjK}sl4+2RnZmMyj zS3C+>;w>v0m`4iNwz!L`qd3=}+c$p1y$pwH`UIwchb`7=^7uNaQ>2u;g!0Nn#BlhD zHx^zl>GiZ$7D^gpDH#4!1qSk;xZD?-(`N#I35<`C1;^fdfs8pQ^uFxxm)`-P33J_a zm3eeMd?2$Xy$T~B3?uxwF-T(&!N1;8H;u5r*n@R0-&(}UC0JI!IEUIW6u^O^k%YQ4 zEA3Y>i`QN#|BgjUJlq&VwdmU-V7dlm>XwL6(y|fJ<~vaT?tb1Gr508=3DtS%3mT3F zOl>T#|J67`Ef43l7vcy&I(1Ap=#RZs&=HL-Ebf4K9FO-DzV_kzQ^#Y=Y6bZo#T_|F zCoZTGLfDHt6iv1$4FAa93Y9;p?pT5VkZbJl)~CEhIztFi!Li)rYe{?J;zhumv~7G@ z$AZy=5#jz$1H$HKz3T-Om^Nh*UW#nXs1#ii@dVFM3cS2q2-|Io><+DZZR;k&7%?FM zIfN@gGIGWhA$1VtGJu-$bg{_5r({|z;MomEs&zVmHeMQw|4hpi1FOoScV z5J`}tcu-XLvkI0vs7g-d6VdRYm5(yUN^hk@wo*BpCo6=Q8@=GW`{wnu`#+d4&YL^5 zF-TWOPk5|9M4yR3qt5F7N>CxHP4G*eBD82}l2pfxMb$G#41$rkut+6urp*Nry)YFX zj`M!{}gofa_yoM^9YcY)h(7$2o2@5ZA_OW z+Sxq^za>0=5QOVVL|pNP5aS9TW8`iuBQ1g&VW)XUYao{8qGm zhq-U?T{^(O#&8#Q$Nn$;voNPHHN8dn?=~=bz=S?os3{=Xye`siS*8b>CiT@xF6TxX zN~m(mEWW*Jocg+q1ir<)J}!;RG!~_8xH~+Jl6*2#WvO0R_<_!XL}7f0(dUQbSyo|q zY^pBNB4)5SDwfRX0xBLm%;gm5naKw4*y<{}TaG{Op`G_Yl7Pl(tVUTDSM+jT<6lL+ zpt7SL8`A}{)892A{V;2`VY#H1u+3XM0nB$EsDWqP--rDvDgcK{ZcaNyk5Z^UtB z0<%osmgvx6vxU&$99p5N(fT^c^rOU=QVBF;CjR5)oT05po48X{u&EKAuo(wlve;IW zMIH+c%pn|*UTh{OqjF9jh$)b>3FUzUb>&jJx=A0{)@8-I{9$)1NNn0~N6Xs!ASk zy$#>AXEcR;iT%d|A&4KUhtJz~vNn*Z7RG4n(dtzE{r%XxVb0h|t>tH{&=|r#T|uFv z&vmO+_xHsw=k(Ksv#$y;Ex)_K5PJx6o*U=au4>q&UoNS#9?vX*{V2g9#M9fHH> z7-FA)3)qz7xXN&2Xj5bgJC{Ua=?Uy|7-RU`wqA^mDsT1V~Xy)BQWF$Qac<*W6r|Bl(FRxG)(q_1Lsl~o68S2%FQ{dBg}nQhF_ z41nqxoMM_3rP|BB`0w+HxMum3oW^|Sjql)rQ*m-Rf1dRdAZ(feb7GHFO;77zYs|!+ z@5wQfpC2H~vK#=h+(N<6Lmw5kY*#z0E>|=?&CvU^NPPQ=zx@s_<~o_YKz*ps=q4{- zdIFC82QCf$Ss#XOdV?HoWLYuO>jfu7NoJ@O*4#vL}Me80hxjh$aQH98k`mb6|;;^b>4S#@WB56NZ7>}n8q zA?nQuWgEB-mg0F>c_5b07Rg_1CW$uQIj76OKt(6Z)uaGMfgn zs9xrjU8Lud_Vl#HKU9 zls6tff8kkft($Unm>Y1Y&C%2}A3^V|;kEx@9!O_q_~--W4!DP{WlEdTE_Nr;x0Sm_ zz?+kP5^~1zCCAp)>3^N)aq^{YgvP1engZaFlBSqb#ldIS?`Nb?>5 zrW0=18p|&*E^F{~zf!JOS}7-g?&4XxF}a`(onkwdA(m3_-M8{glC_H)W>w4mEaw;4 z8Ltjxo#cS?Rw328PLKYjO?ziAd?-BzyYf-$Ezl?1JbW}THP|xUibw$$z%%}DRX6C4 zs7;qtiRXB%piX3a!G580w@)~C+HX4sxJtgT_lMf`s4=5jz1Yh$qVpU51sRRU-)R^I zR;ybv*1Qa^z(AFx5{%35soVK3iDhI?zz&N>8tDk-U%D|8u#*AyH~~D) z-77?-wzbje1D(lMm`tL``!xPnh+1H@S*pb*hr;Ek(Fh*CPTgGi2B};|h#yVTVO+%A zZhTq@N^*2@#9INIAZrXq5wBB^pJb3qGz@)E*Q&YBjFQ3g&B)y~hIq*-7O}*DJogUBTrzTIMwz}jCGMjWPG@hLx142|_DPHHalFwT zW83am4swA67qSgl3a_q~aXbbGm_{Ku0^N1ns`Rw)%G4lAjkEaNQcjRphiBFa$BSL5 zlL=R;hzgq;AyAd@F(oX(F#tZhdZMy-fFI}O zV5Ikig)a;M|5j;xkolt--3<$)IQqIAs~=CGrx37J(qFZ-i5;1Z61v!46dwKg?Erz} zw758k5${$!iP`Y_HfrzwVH>7`^lrzh?>)U2gceYBeYH;7IDUmJFbg6r!(m$(G3D_g zyK4}`FoJS2RbYu0v;unAOHa-G4w<4=c~CGxoWOYijS?k#HsEhF6SlZ^P070c%Ep-> zins1smvQb1IQenK|tEnHyhz5y5 zdNo$wl|YDYi#x&jSsCd}?fjUHRCdOvf~=u>f%b&mj(*j|K;orRVMU48dZj>}?yXtY zv9hFr_N zUm`6%2=h6?TkrBONFl9ar>P6wbUQqPY{@x479M~j5v9P+E>O`<#d)_bJ} zJ>2j!g0_NM`ariLhW>m}=ziVy9fv`sbA&xWk-Z%yoM z$yLwEbK6G?JZv?^Y=0`l#KvKGWd{+Zy8RW6&P8H|Vc7d9k}+T}lgV4LVA}zHw4f3D zq5m%Upm9E8)p{Kx_0MFSN7;Di2v#U)e-UvWtl&zjY1bDbz+>8M-3FIcZ!w+>g7UxV zZY3|?C$>W|0BC4%;)jtXdiRf}Hy(nV z^bBJ!nET+xg2nmTp*!@}TES2GLc;V17TJ6KrQsT#IwS zk?qILB_K)zv$6YL!}om*(W>OS9bdaq`n)hLmA)>^skkMvs;M?o`{6h&Jk zji-<2cKUDK7}KFpLB|nq>H(mdD5>4TmsGrr-4Rf<_#;`iNxzPzS9zEp5Xd^L4oXbdU$$HO zTX3VPddiVbFw;o_bWqD4{LEmOtbPCe;nDys+MSPH;WZsD%w-(iuZ>Z~Fijd~ZjQ4e zAf4EHC?VW)rMCz4`{b}*a@K^vTlz&Z8T6?8c9B%M*=SC^3x-LoHpYe;#L*QUa7zMl)XJw zCa1q<9-RelvmQXL&uEs7c?tI2*BO1yap`+)x)o2Uy-a4&6U>RT&MF}#1v?m&vrDCM@h@R7AHDUxQ zZ_5?+4D!mcaE4FD5H@ajYOt@b(%AI&N#1DP^tBUtg9WZ2;^NE!z z?*itCEzA+~7GxuWGhuKPyg14(1uAFi!p>H8U|b5(8{cE)>QRs0ur-$XLMXD271K5&mOAEyAUlGX#Fv(5#zBLEm=# zul{(|mPbnRciuL;4spoSGR}~EwqX{hwGdnuya|NmbuqTqKEt3GSLVT?mj17+l@bRv zsic7@hMKvouQ)V_#h9YACwm`SRKOjW@h^tzJRwcUZ&}qdLBwVEM?a zablY7+f6lXViS*J@5_Ujy>Vv2GdM^amX=TF{|_S^p$%cWqGZ z>7=Br{61}14HcCbXT57iHf!Lx7+RQ}Y9jVcZ4~4q`&}6rILNL|820`yc-mq#UHjT=_I8w%6Y(!R`sj{Uw87MWr1d zxKeZKsT#Fb7Utu~DzT3Cjz5enrJH&Ae-(Gw;);f$<_7YNG0KfRPD5B*tg;X+6FB}( z(Y6#M&N@DMe`n`jy|qt-hs5R>8JYLNjfoDRm3btP-4A{q2PzwCjfS_pzExK8z`*!# zO>Rs1W-O-x4!*?`I*#;||2Q4AY79Mh~`>98qk)wcjgVmW^>?_0~#DKk|flb)HL&pQV_5WAvi6B9;t~e^Kb)wS2_$7 z4h)UBj8TluCmyI*$56^-QhT6po`fQGDR2HX#7VgzL#*Ueg15r8ggF8!9?Hz+ZYOf& z;<^1-eX5=e?CesSp&Mc2Crm9@ake})pQEt9#8mZt3 zx0!xuyfLad*Ixuonv2tjOZz`W>2JQwo>-=L_9#nXXn6(`>UVZ`#c~o=A{5Ec1~y`V zrLy8WmhjnzUfS6fZ>rKQym7$;9>eIhQK1U8Y-OS#A!XJb&sv!BCQ8;J&ASuJW)y&tjzr)a=ifTp9RfYHM_p$hd8t$l{rs zomTpz1p^am$+jXO2V5gFzvrkTswZnj(Jj!b*PkY#I(IBdZ?PXv$LE9OTrvO!!duCj z2XB#L@3Y$=-m5K-mXdd;u{{7y4bXUP1{S8i-67@Zb=Vn^;{-nKnTK0Ytknz@o|W33 z2FsBdXxtW<9WI)H#w%s?v`+U{E6r-c!)*w{LcU5NN@PMq(C&%8 zhf-XJL;cfduig!S1SVNp3lSzD)OMMaSWGfUwM^L&(P;7(18;}!fqmVC1KVl{w0cT_ zF~1uKk?%pMD#?%F=03siUZ@R-d-V8~2r0?NQC?P13E{3lYkS!?tmC9iyh*m)<6cpC z0-(1ApR=86L{Bok=#I^-chwAaUy)LL)|IAwvc2;^A&yT}*Iko7?9+v#b?06+;^@2Q zk>)jSyMC`9e`oL>vJl27iMD?PbK4x6gDwsjmXQ#VgJ zVkm%vHzl+9ur#O|WwdCL4THNBySG#XQAIOrc=#M&_aQB~)#bK?g@*kawC-ZWyp=A} zLHsgb=Mjk~#S{ywI*N2$Dm#&p+~=9AG%XEmwob;@!(wj*5y>s_vf|qc@(mPqS0+Ic z2i9PE&3uYf0->ecFlkeH#Rch+t69q?S|0h1p_JsXYaatRE2&%oV`W|4bL2_CZmMdC z9a(2@rEBzF2-uq;6e~Cl{Y4%C2#!?Gcd_PQn_>Pp7`)jPSz8TWXM*~+yd)=qfO!S6 zS?0Xk7fw9WzALF`R;o(jlx&`(XNqkTWQLK?q3$gpx%bCYU~yN&n?a`r?N>fu3>=Wm zErF8N*3@7whks4HnKL@or{W4VqLNp+$DWb z*kqmxR?H|v14n?70hu1*mhE0d2+d$NPG$I@C&Sz_Trt;Ca%f(8^c^;1Xk?f_qFIK8 z(j8&LJ8rXlpfT^%<^|IbjQi#IuUG0MI|J7GSc{t++3QWte3XE>S%?|HaB)%>_X!&Z z7GvPCZ{pN(r-Pdz(WR?6YTBAJz3zdj5SR^c&C0o?1rhP&xWZFGY3nAe8WKQ9pLkiD z;*H8b^G)U$C&4Is$U7+YQ{KPcTA9JXc%;2U=}dO9?+xh1la_uDbQbTk>Kueyp4cg- z7Jej}b!O^^TLOkgiLw;34>V+l^*;1gWPe{@ePaj?=KDx%&N#WfTnTD9Can8owXp0E z1#QG6YH-BcPW3G!-*SlG+t6p>en-3-+QCA|(%+%2EzpX-Ub@Aze&g+z+>C*kAJp}< zm1}C1saN9(!1d}diw!sa* zG=LvHXtKKa?;~-vEuz##K`SN-_-x)I{We8@=;q0p^53_x>Es*al-py&Nm(VEn=t{e zlGLHX$)QBurvupVV`%gOK|!JW6%yNW*!%u=ph9s|1~8063wVt1n#tVXF!q&mpzVpx z>@KfN=7I3^leQ#I5x&fpm_Bz6{IVmD%Kk|-r{-mGA$!($SUB&G!L>xoq~p-sj5UrO8)eJ)-BS}MKZ`6nq{ zc`E5bdp-`fF_?EU5Te&rx|TE=z`PA=eKyF}uqbCkke>gX!j4kM2H-pNFe`eD2;6^y z-F^~%tXZ?4!^RZq?@G8pOOc-MIAkyPW%qBoA+ZPkpnJuAW!Z zBE+O{c`cFaPo%SX2~Q>6L4Lo#aAz5Lp|c-Cr}>z9Rkr+BhX`N*n-f#vs?Z|K9v^x_ zt+nP053rCU2Aua7ojFQ2se>~vguxhazt=3zk|-)V(5K4d8TCV_`qMqS@j%C`EGbk* zFnT0v(}56knOhfAR!3F-WlS33-HvRK=d4hZ(lf@!!^)=)?s+N3TG)Z+n1jeoEtxKfM1KzwANgvu5Fz7mc z1~I-lh&Q`M$HaCx>oVbe>a7g8M@JP|mIGRv;;mf%bG9w!F8xHKL*8N@AWMC-Tql6T zmc5!8Zf%;el0E=my{Fi@a%tEebXndh0pUp@i9!)zX)D!dXZ$G8bAmt4J)CWw@6-83 z$~F&DFI9V*6w7>47Lhmk^^0A!5vU>1bGl7W3aTpaf6wKcR(+Sd1Yh9BEDzbF*{-CB zxQzz_wgI4|bEL0|Wb|m`@~7`5QvP;-D)-ry$3(x13-j-FdWN6G1<^QknLF&B=B&@R zBk|K&Bf-X+hsljeJKu~vFc+J1DZ>6G;;$w!ii|zsv(?$Vcs=#A{W!H0b`#l6z>lapN@b$wBC1&7xtBUaUl|X|nS%(^R;%Yq%WTBozO3#`<}x(^CX1qj zhdaT9jaq}5%oU8PwBeMlwz`sNN2G&}z}Be(ol?pFpo0sN=kE-aF?eqh*SD@^<&I8l zevWwdLonnQf$PR&W+>zFMhc$q;3VflDR0!S`Nup6C=r)Fg(=bAksB(7K#aT|DuC+k zd~M_@R`egxuAdk_r|ekIH*v4%FhX2_R76%^yQ3Rybb+uggaa`%o;oOYSMY{oZ!k|M zz5eNx<(&$toTKV?xAe=#vZRm6cD;Cwc`1ob-N`MchJb90%031(G?T^YeKC{9Vj2F_ZhY~6z57rgN9f=jEIcC44x~DX~By*Z-~>l zcUYL~VR!qdXRdiJ0!5KH5l(^84waw`o#&5FoxMBpKgQN%(1zo6Eyb!pD+vGlpj#vh zWv0kr>X=n<_=rGEbkdkGf6B=*u$SwwA@sgiJT^8cC}F3J-@~PS%53iFIJCRBNA8SA zdA>)B&-m|ak8A0U!0g2N4=9|JCC2q5SFPV6&OoEFpVw%!+fcQolsRY=*W^b1q8QCx zN~GSbsgiq?A*87+nwbS~R1nMFOhy8#0i`oa?A}}zR2Q|Mt)~s%Gu~Q#NCCl;)Di}m ziEPLo+4&qX{O7np!RL>bwQ=IG5;mQ~LqlFDsmsv| z&nfiq#HvI>o#_>fKvQI!!%QE+=Q$%Q>UvMS6)$jMPkXtx3XHz{q7$CqxxUF)dUbP&_gM zW+?#YYZBa6k^_xtVgak4(It}!Xb5Ptlagq!u$WbsF696->-IyWq#nl)f=_h zA(ECOiVWEbrfO<#3(Z3%zl$alE8ZaNpb5g)$L6H`st=@Ulf1tA;b;>Buy=E4l& ze|RTd33tV#%gezA5up$HYST(45jV?9fah9@q!lKEsB6HABvTXDtCAJo7qz;1IFu%HEjGvU)M*RTYz!b&ws! zol2I}(KPm-6q%dgg}@;a*Lh=}NE-J%VU>B4%|@RsFkL;V623hxHm)1ENwev4$zaxY zb)92R-~J)Bk&Jkd;LrKdc)`FRp|_qa6pV zZ*Er}!IV_N+G+FhVjXOill~iojS@?ENo>u%2Jz3lUd_$#v~^)>$J-NsQ8Xx_FBkKC zmRaAMZCuQ|mN8Qz)vR`anxLEjo=!HTQ=X~Djt zf*D7kWw!)uIdUs)79V1}0$(p6g~9&2q3+%au2Vy(IRqTgnauz*K+M0mPg&*I45bNE zY0(rx@m$%6iYcE^OEanfwAddJz+qm}r8QP0h#(A3`|mpSW42S>9Dv4(?TBe8Q1LKW3Q>PnyAStEd-C;@KAb(6w-05%E|r*4Uf)=g%V*naZYildEL zk`}!iv7c0#T?E>+E5^UjhaV2!ixI7C&zK6WQiex}k;j|Vhp(3dF{ajowq>-Qlg+u0 zC>{4s*ADNK*oWFQpQ#qZnp!NYzm9+XhjHG$ozyQg#M6U`q@9p^mv`Krp|PeH6rQiB zij0k@&&0vYPwKwj=y#fs%i1ym#la%Y6IygCtLLPN?7Gs)X);Sw-Ap?m6H%(OJk*2s zA(s-oIG>XtY0g3Biu2-?-a24<{;0(wC&_=cvVcSOYP=jtb1*QiCsF6flog8d%J`_$; z(5yUBUt`!K3DAP?M4Nki09T&*wAT=*GNyfIIw<9y|5vru(UYt7uz|KYBCYXk1}ODS z#V|OaT0ek7k}ilQYKT@KH8Q>qry3mN;#E(UpIO!j($O&4XJ&|X1ZE_= zj>Xf5eNGfZtP;8GC*712URiA7PqAdk;{$;W32+V`Wfh9^>?9l35yX7;MJyXLQ-hH<_kjeNt778Ca_b{6ASl?CxV=cIDkY9#j?E1n%EFslca6VI zAVRr1TDe{(2L~q6pR$^2HEMiK+|C0vs3f1y{AkaQoL;hsda0pf49yx!AC1{6_jcN!HK*)%{iook;7)DoGnbx-mE*0-LP{|Rxgk>l zP{#Qa)^yJ#c+WFU8SS=~6kY9_RkHvqln8WYFZGP(b?askt;e(!4?Q%i0*n%NXRyK!Rv-o=xjFI)w3^kZ^6wfDXco z*~8}^;2p{y_LJ1=39F1;<%WLyg<%dLdiR3}RP{SJ;P8qQc^SF8RDA_LV{48-eh*i3 z%^rkT7^P}m;%~T@T2-+=VT#mHKY&Mg6pE_<6X%c!1_imA!oss$qTL4?8Roc=l4df= za;IWjv@+TI)Bs-xH zF*SBOo{DJS`%w7ex!Vi~Kqz>TjnMv%u#bqp*}3{U*Rd4-XlD=wTvU#2tfUtB)9-B2 zw022d-oC(iIx36`8N&4!);cG~oYt2-gx-rqXb({(J~*R4UsVYMfl({cvTmv*Hqd5YPE$6g@dY$I?rs}Q@dBHyn!F$>tr~JAuUk&a07gLSs!Lh&o=XzKH;zXLttfO_~9+u4y0P#Cv zdpQnz@XDOm*tZqm@CS85l-k)v_zi>JnDxgS!58=RB|CH+3dAS~;?d{|wuZi*mb=I$ z3UV#JF&lInX0LVbn@Ti#C*(0x_XaQoqx=o~9VcsSurC=IeU#+XPa zX{(mDnnV!O-AW)*t)V4BwJRQ*TL7%7Xoy>8<73}F!prPGhtGLBhabaa6+$*Jp_eqJ zXMTsrc_{>X$h<|!SA!(odc_=m^S=QFiqan3tsAMFvjHMainCo-;+o8!qTdNcOQV{3 zOfGK3*lXp8!xCm<5E!BLkC)EY$MQHf2vETh$vB`O=-NBeYhI2^PC=3Yo;Lj`ceNANnbu|oMg$7=a&Z(_Zm{i%2D`!{1nRBAN~|yEqca1FtZ9+?ZDnTe!V}uCTSrQ6#1CW%YI};^A-R@* z1A1VDQ>#Cbiq`Oo5r6J>b^rk#IiX-J_{fUY48M^6gVkCTK4`HUA^r>s)WSH7apP#vxH${b_0Xu?q8m?3&wKjT1Nv>OP235Y5l`*;U2_Cql*z&SF zk!iSHz_WS07Gf6k;<)-WywF;Iye3A@4fg$$GLJ%<0y0iLiW-b%mqY4%xlGTjfnm)Q z0p-|_oVw8X4)lhc@&w#gGL}&?Wc{lVy{1Ol6}wCoXqBd{Z&+Wb`pf*np5*FWKltcd zfJf?+#7-u>eaUnek6CVN1obiu$;)yGUdciBvFCF?2aEe~o$`c%=6`cOTru%7hA!eiY29eJfL;2eiIE~ABFel?}HZTF4<9{#T zHk6IUV9~cqepd=WKx;m@G-xa2d2?o(23&TOa&IZXZ>qjKNL#ro(O#J8O+PG@8`)x7Srzk)?Z2Q3O&L1%uT9pE@pqoI**$V-)?&uOVLf(&KbNeh_zxVm&G4(K)88J1Q%@wHIr@EJn@+rrDAq`-`U$;De=yAwZRJFwr}TBf(>J+sKFQsyacO0+$H@dV17r0vY3qZ79t z)j!KQtkWsSoH4_4qrlOe2}#FS6zq#VEGh4I(TeT+k1qc=K+(NWeZv0j0)l$8)={gG z19CVZ?UP8^KFQwT51v}pQU^vzFTf$%IWX2?gg$~SEi5(Gw0X0@OgvV$a{Hu+_*38M z+biY1bX!vE^gbARRr+z@+R9lrbf3TU#9BKDiyMEmwF}z!< z(F)SXvDpa!J6L#CRj@v}a*ekQD13d(AB2WO`%nKi${2w87fd7Ht%@E!_c zvo6SQGzxat8npZxYA$Z@8g9;z@^6h?+lQbt^;85y9=`LD-=-oK=NX2P#1$>0-~zcLb5`d)+A z=N_1?n{St?K&QXgP8QrMYcCAXk|OSQh|^yu2my66oQG~v)h#5lL|Jn2$WRiLYTVkK z33`z%L8wkt z^t(KD5Rw17<~GDQ-0dQMBGn-SoUl%pI1-%*b7&8g5o{@H2*AuO8Sh7d(=eJLhLVhe zq(7n))I$nd-qR{+^*mJFL6$0&1j&Qgq&~N&JFdss>$6oZkpDb_!u@+YJ~ooCiJSka zc%snRTfT%d>$cci1zEcX^$^qx{gcha5=oq zqJZ55Tbh3mqZCQKwxaNpZ$HY{s(wAi2i;8vVo`k%g%4Ia9A`FBAIR9+ohGltl{0G1 z>ZVg{`iog*@V`jNMXL`)6zPt6D;61&dv)OZNRquCUmG%Pot(&tcf(89tcD_$M@t53 z9J<+RaqdSIy?}{MgEG?^^V@5q(Qf+ybnRcE#G(k#@_1}2ewQ>U%e8}gR0CUI<|(YO zD68o2n}plhX=LexGT%+ow+lY&>)X(>}A~EDwHAq9aB6I#4z!{G{nzL__5J+`5NCh$+$sTQ z8n9CE1L&lCO1n#|@y*bvP14!Y%l=E@P7Yd;+j0^Lzxyzatn1=gCD+cjVYmlVShtD* zdjmjlFbYE17irwG{0DaDlmq=QqH9cf{TE6_-~mmw@I6WNs2yQ2_|~cRkq55t9AnK^ zGt6FrsGB0#ML(Fynm;n>R}>NM10%qG$00~f^QcgD&r=1bD|if1ha^VUmDE!JeR6*;a>=2@@iVC-R|-U484+`b4m zMO(t`j^?*dz>fcqE}w%fYQHLDJPQSGr7B%zshA3L(FcKe>7zZ;R&s(?PLyiGGyI9FCM{DTcMWvtPMQIt|JYHTi`5dd= zlCR;-Mmk{LlWI+7RovSAXOo5*-uTeUS`vci-6a3#E)5WU0QuJywc4%;gU2yAXs|%y z(N5lH^r7S)5FYmdGCI^)zHr#8+pMokqa3Aslxk0SfXgoct_r^I(?=CTw@3RPYD0%x zHh&UWz|?Onf!5=p^~#cw!za|4)V^wAV!)A#R-goU%UqSTZMS*}gtS^4&QKRH+A9B$ zz13cNe0o?h|0~Z#f$+&3xjJ4f^TS}y;FM-fqUXvWEARq*(kyrpr@TtFLe<1VM<4o9 zOvmra$t~j0Hy-0wX6{m~JvJW0@eL`1)d-&!xv@y^b+{1S1JXIq`EI?V=ukUuydny^ zRIRm*$DSZF{#5u?D%q)^hM((2)^%GSBFS^oMv6Nj%?&J7G$r*a=8tv{KR10JzeMf| ze41>Xaqv3?COv(OKe9%ktqRB_S+!N2#q>s8U$X#3O*ImR?M9Ugf&nlYsui} z2SelF(>N|cr0b4VhQ+QNlbZf#gnPcv_u4mdH{mZ-Z9ZbD3rs`XRzjg{0ozq&su=_4jx=s{+m&^596oE3I;*Jey`?P4*NU6GJa1La*_@j&4k z%0|9|A=DHhMJvd9D{@2ss#% zl6BWH$6Tgh46q#1`W%;XUHSlKA<fo*#f~nVL9>(D-{*cm>Z=u&6)jAC?4zip8H35Yn8*c58fQm9W$} zH`+ahYje7rfbSZ_fCbk8%)O5qnJ*dcOl=lT;dq6Bf8HeCxvP4wMhcM_W&JFQG}BV` zl;-0M3k#POf(oQ8VXQCCm+aaSvcvWIr5Q%`WI!_8(cw?7pev+!ye)Qw*XbuB9>7+q zHI`vnxmbC?$>`V$S5UW)^}5`$XGuV#a{%}@dJYA7$H4-wKfRiOY0l$wKwXjrR05l34AJ)}JJnyAcn4;_GewyLQyK$(%Da>m| zcO^r5;IG2dXQ~hZcedFCXr8_J?2wRH za~m>SpS#?)4n;v6U7US+3I6idlA$5-js5bS9=~J!^N<&d58e`h*IU~|BVnaxP?s!o z{@9B{VNa@6Yc~o-gJ3tTC&3vdjc-MFEc(77y+a|BPmqhIkomj(B`1r8;FLRO>E6WA z9=$|zo~K}fCno1Gtd1@?;fG`6XGR7d)XLZXD)w`Vu!@phd%HE`>;64=vufW%x_fYw zQml7fBv%5pa>ewANJ*dSA&FsUv*|2fnK7jSACkT4=6Qj3%-KlDL|k%3o6Ij!&Eeb5 znZ4-hnfmr4otw}qq81~}mcm+JOEVP-m`9K&sC$?On=y&#)5DKai;S4!kUr$cp$7J+ zYAR_LsfjW-x#6Yq@mOp{W1__r3;c3HtND+&HWCq&?t>sqPyWh;STo$1N%e?y1EWn$ z{yT9z%M%Wbw!JQ%*KkAg?@W>jKTU}71?ydLZD=fWio<_#A_3NL+`93Yzl2}c><~f- zBww+QEEPUoq9y=xLhyOUF3yn*OkiyZ>9)g^HNLr3M6>>kz3bvg>OJRVm$2l3?;bC| zjg9-gkmsrEeH;fX4+UJvy-l(eQbx;u$BtQen_j-W3)Ie+@>xi+d?ZS>%hevQ@y0AdVPPo zVkRk$gL7#hJ4TiousP^2&eF(2LdlfTHhI zd&qWLGlJn@xiaU6$Ji$Sge}YlwBcNJ{^pPO;?1K!y41qSfnU&zxV-Ee50C8bzUpA8k z($kP^c5!5jQ-?7trv@|=)9tKZgsJt(ZQvSr)09LW8S9sUG|T+yNI4oii14~Bc^7r{ z^(hp#>9D5lpi4U^Q=i3C+DbFCI;bmu?(TF|#$sSM;rdm*-;n(2RVpRLyea6d1=Tiw zzM%#rCI073v7)vAAO&E2Ds-wmbb-8eyEVMR=)AF$qbGxplYhy~I%9_|j5_~b!KA;R zC*M&Krs4bqkT0AY}X~+O}De*g?vUP+=&13 zT2op{cwINiFof~m)jhJMEM!iQG=c-Qy}O-_>h2+XK!q8Cp>Z8;&@9-juqwPQN`y#s zlc5Yu?y}>?2|1g|s={|3C)5Lf~I!=`}UNB&Uww1W$ z*@r2{n{~2yV(cLkO>hKzh5&{=}_L>v1dWwqePja5om=o7q=YRcEGQkeW3=%2L-Gj`;8|_zsg> z<4wE;6SzCj2s*^2x!8_thMGAC({I8{sLh^6+=SfoL3a~(dUDsrg0}OsCZy$cb zJ-J8B*U*;^t!Y5t1+0&vbD{BDSmVX;&0E)3#%xQ-uQJcwR?;8@v`?3L{d099*# z@R!vI4rCEsFR?#KGSST&L_>h&`^ z-!R$(jb5ZcP#Jfkg`P*Ir?p*!Q2oe0$mCon3G}dGru1n^EIRR~y9yCuxdH&lb4WSt zVq*afjr!(GX`K;Lg)nSunD73AI3O~JJHxNtYIW1{se2j^{^31r99*TvXul9Je4kLT za!mF~gLt^)#y4hIYaGDKA;2PJtqzeH{)y@@<763jf}Yztw^y?z?Xp{DXx;P< z=I>VO*J3)LCg-`aiDCN+{FFh9L_0ZN1wq3Rc>9xs!$8Q=A zL=En=D@m%b)gg`z1qHqOI?!h&%!*hfJX|{uujAKlgOm6}40{pU9fn7`}>4ap)Yk-8wQ*7YYcd`C%uGw;#vg&(O9NVB0oe!2Kp z%{wE=I7$4yunf1?mCvi_quz;dT|-8%>lm;kw5(fv(KhigR^^>`gN$wJ6p@S#`$+{> z2mtJfuqKUgrp1rQgcBnc6PwVQ+o`>%o}zbC46$xNpV*K@fs|MsXPpi<#>+u=CCqWU zo4wD(C;&)4wa&dIQ%7P58f!4-2mQk6hZkhWg}J#Q$UyixZs-;DltFM(^Z-v|mrNbf3U>~% zwB2NLn>yQ+p-^)uSb-^yg>2!+zDs&CGQ*+`w)c)YWF7b)%SrdsI#$A7KUkX6ej~#P zHZ*Vb*O&j4GY=bNQa|;lm@s`)$4UG`{aJ4|H#j;R|v!WJ;)(W zh6pDA$S?&DUS!^!lRYmWC#dVijIzD` z5_R|;y?jG-qvs!ohl-5sgvp}#ZY7U$&@|$meVr_lUfSf!>iYZJGZYib@+nY)MIK{y z(=D!ARdmrv`tU%_x~cTsdqfe#>kbK*RI5IpD-*r z#E~zix$WSFCMu$y06hvTqqge-KwX9P|A;d{A0+XVTHAM)<4vr4N1Hu80`3$PMl8cj zQDHMX$k#Ocu0s^Z)7cF!bF8=Um7_aR%|fa(_efx^ZjV|f<_&MG?Mhg?CmnygNiyeB zj&NuDDTfsyEVsq(+vxzOV*GL$Hcg=`q2@HHEJ6+j)8B)B{Mj`P9}tvtF*0rsvxMQwB)?1q5)4*#}ZO z^zs%+y>;5&Zs9wkR$h|=q7!ge%UaJo-|;vwPp?dDq{(-k?towoVOWj!-=nRe!s%y{ zXsQ@~e&-}o8L!G}Y;{?wkQ5*G_l<=fpQ_+LGd!;HORH1Nu707|94L*(q!-Tx?xKUe9?}sXTP*+}j@wjx?${@|XO1jjE%`lz zzsDyH3&4o5h+0CpYzLgv>>5a$^i2FSwe4DbFEnt~03)F22_cvvvx~kRStSfxnpp9; zo5FYw^?# zVj=)2iEu%>UaM}zZ4KtCtUwS#;m*~zHO1Iu{sig)raPS{#kD^HI(uspTx6!;PM+G3 zIX9&4D|x1AP?K06j-+hv!5NKU2lj0`{-bZM!=w0#(c3Fa$?J5#?+j0?lrF1hEd%091ZS_Z~`)N?*xvw z8(0n4obTq`=a8Y>>ilnu1y%EvAPRIVOgGtP*`XimDM@^ZE7LXQuL$#&?3LH&@Cj|w zF9H1$r`*bGwKrRHdFK5nG)7DksGnz8rb8UKEq44)ZDvo0G^*wEXU^*>w-Gmu;lK)0*V$jh;7!8!y`7#-9cboAsHwCJo=*q|1foz;OU z8XFYfwD0~M$jTezy3-o$ozoYKTw8-}ZXi(o!jtbqQO=n}%#C8v4;$Zg`yJ*b6qZ284q@T1=RMw(0x-(qNl8DwiTI`H$M{Z>#)Uc3)zwDOxE zkC9h0oX$C{l*Rkw83k&tK0W?Ckr9h6ytW7GXF2}KN&e~!YAIFm;3cGq%-JshV75Cr zIwWBBrshLT$5^%G|FM$Cn#DAI_ZuuNMf}z`*`Fsb%f#~M>ooXpOY!arL^`p!6HrJa zIBf7Ieuk<%g*cPjT6R*1ZDf}r>FfW500__x{%Q=HGx;9 zOh97-A8W9UiD{vjZihiXu)n_9HMjMw32r6Qsh!?BM_H<6+lauk5ZoxER~_{g(40k` zqQI?7x3#MGh?xu1NrZ`%Vj6(L*HjrF&GZwCM|Ljx@KHC;DSAp1RFIhL(um3b0 zU_WutZf8#7fDUqG;Qu)pIWBsWpLPL>)e~Vzb%R0Ks%*Cs{3m;`ZQ4lw?22*Hp4(&q zIz7beo9ohW)~)OSS}}NH^d9%FL1Sf$RaMaYFyp*qsfQXpikNcXr8raDLdbgN*89ghf()648xL9PUa5|mm8))Plt^4KR8}(=sjLysR)v%viv=( zK7-(~HRp5(K&rp~CC@G8t4qAIQ0i8vK@-^L}+|yrG*?tJ5Ble@n-+puZ zhQE_`Ew~e|cVL6m1;wRiHePSwE(zNC#bO)3R-Qc#iB&c~t$&WLB>-j~lO69`S*oF* zrrlcAiI8B^ zYxWT{PVN6}F0)d2!iFu_=1@OVxqgKZ(= z33cY?uANrc#%DglG5zX(@ZPFlR_|0jAkqmJ+Za~uZ8OhQzQ7gA%fLwx)Hwjh|ZNw0?5uTKpNl?9-;}iN8ls zuprGr2NKe0G?D7<0KG2gh^n#m?%xxNJg7a9o9Yi=_o<`P^dqA66O8-nxlXc!d8&jA z;W)wFjL1E@9AJV&ItQO0llMc8j~Ebjh=+*(7WWeL1xlIorXsS1AL3*%QWI-6$JbEM zyBP?zC$YZr3aDHTTO6B|fWvwMF>ka`uA0w`v?X9$eO7IjQjZpC*XK>*l}(+-h4#%^ zim`|Gj5t{nmys92>F|vv=(>&w({pFmAq_TSxe>OBslnS{Gu#NdwhJxbL3|C?Rj@t5 zROstGQ3rVPgJt~)Rzl)h{URSAnFDJ&7<&(w;t^Yt06l)9Y3Wsf-bk{0j9M{~K2VH^ zkw)|YmS(;yRNp}$_cZgLTf((#$n15@LOf_U2sq?j zJJtkMMc?6W1gkvnOoK*qBsrgHdYE=G4R7-BaKnBt%CP6zfvu6V{aBXxkjXKTr6#IIe9l8DYXWRZtGyUY|yvBMDMR7pmrRKQ9gndQv2)C0s#?nw2 z2$>yYwFL7qD@~(C${uQAH>+MFc~(mLMT!0&D{g)_fmO=}Upub%k1+lMw&X_i zJU!k0ZS|j4pq-sORNoYb}TVX`l?=S zmObV-A(62R!QYtWM=gyzi({3cu1@p+(ZPAxJuLZd86<#-aKFwTDC{mf?z@E%QRVeh z5rawei@4Q^dCnlv=V#QE<*tdX`ocMDL|?29MBU*Z^;B$TChTlE*4b(j?ypY7USA)+ zcABa@JQ>M z)_x-o9AbL+#N=_=;08tn)T_^)CJ?EnsopCEhQL{y#I6z4a^MsJrV}l0QM&B7zJ3-Y zY!L&op`dfDc&Y5<(hldzER-hz-E4Z`_Ao{r{T?WVj$!~2!D&7ZWnw91@3O{$T4@gY zEu!@`1VqB8xU))}pvIbrr_#Rp1-z{yX@A|$035617>)!>DD0cT#ip<-F6&xY-R5@o zR-;*uDiCbkZ*A@=yf0X(UhHn38sIgN24yV~nLFFGYF@Tj0>x)JGig=tGq0hmy;J>! zFt&b}3@rncnL?A=iXvmyqiVJ^hogOxuv4=h+FfSc1H_Iz7A52YgKrJ@B^X=^5c+A; z`v4bYkb%^G`lt+fz;@60Ebbtt%Q588$t3?6fbo-q(IqS|EJrK44SpcTVRUS(qAAe=5RAvbc@+jYt8KHDgdv0%M z5sTd_r!Azd(twhhWn zG8uZDYK5cMeZymulihIzm?^QLbCvNjgIh{{j2p2okdgW8T6ah}FBho+UF0J4#S&`=Dm_!SewAq*$w%{L2dV1DQLb(LO1e1kf#9ybuEuIcu#`O3 zz)BE1$D`Z1Au4vVziVMfK#74ewfLXI@mX@uO9F64TEU z+CWs3`sRgFfIba%#?U0%C)HsPx9t~1LXq%>zXGPfWbTjT5N}f9=m@oi#&spL4!~6z zmY78Ia6SL-fg}#{+neZSy4MHN$67NwCb}Bu%Dg%f8IK$*93(+FmhJfaWS?$}+vJ1PqI~ZYYycoy zu{#(k0XH|;J!gBQ9gB)17;iLP)H;&@<>1HveO@qexvN^j z+6d31N}$(%t#t~C;KE+`=LieC{F?oZbXvRWUlxO-y}c_6d88{1r`{HU2!>-uM|k^3 zQiA)U=fOE^_H!2mB%=Y<-gNPc**!-sGGSy-JeZ_S+R|=OHSiIMhV?}Y)z(U9-^pwaO z0Ix!Tmf^VBS%SNOIt|#6!K0B8_K*X*9D+n$zZ@{yTf!jAVxz>nBDb`f`E%iyz5SBGfs7z_{kV%#Bwe0!du*V&QjVdriqMkNfekKx zDeZ`aSAcNiId+;O_c{B0k)WrE)!GYl9x9~F$>B1r=W6}UW_O1c9e(Wi3gd54nB4b6 zwC5?0VeUhRwXQUoG~|pZ2u1Xrc)M;gV@b__Qj&JWJV%SciY4g^eFO zF6Jw)RKx#I6L-Sf!Fivi`;n%`lhoiBa~a!tX*H88E#8|J#mwUvrFXHLod{%ybB2w3-u8b_tpr)E9$Dj@Q;`$5)K;hz+VRB6VnLZIjwQJ-0{^ z>m>LldD#v!cnz;{9jmGp-V^|%?8t^8ybFp$3iAQWMWC+^qLf_l(N=WGGI)T#4oXDl8BTl~@%MIkO+G$yB%SfkQ>R-6Iw1 z^$WOGIRDg;yD@q)C_gW>HMxC3A6JIGD4aUT}L}_W4G_&*PB(5I@ ze4$e3-8otyIi z^~^O^1J}ol+chxmm6in7A=gA$YiqkByKvi`tS<(bU!SqkZ$46<8*r)f%$k0_xX!j? z5S^))3ao7BV}GWLd#IKqwlW^;nVfPAAss{Uc$q#;t2|h1(B|=xyOdV1rGQ-kg%L;t z;~qV2OV2WNaq7Lne<59Ub(OkwH?@;&38YKOKZ$gLgOw~2^`nJU_ZNAp;bg(;tr&DaNf-pV`9Tl2d{IBb~z?rhic^|Dt5`Fo1rNSoq!7Ww*#Sv3{5ADR1 z-B`$a5Jba*WwEJRRh4gEl=#6;4RYpB@@bAWX<_7Ti~RiQ2G{q8fw&GC*)Nhpuz>&^ z6Cy^YdvK|_LI1F>BKMc1YITl-_e=>Bi|4_5s1&w!oKC$0f3^oMl2TX91zrPrd zs7?fl^VeGNB(ZTLo7*jLw@#q^SM8zT<@txeGjKLCXEiOw;(HR=Y?U_@AfpTXREsW+S!)L1AwEYkR-&Fy2yq)o;}7zn1ofin<>&~)}H>vr0K zC!|&%3;tPz?Qp-cM)sG9ZxOv%Jk($xEMb!Yod-vd)hr+j;x<74dk}#LaV=0eU&rj; zBQK*JpVgy!?J}vpJvj_Z6Om}lI82{GLW9VU6Yn__e3A0s=ZqoTNqk&;lxbrk9gppk3Qlq{UVyQcO)un#CG5a<_3;uinZb z90h$^gr%c8b|c~R2KttL^R^L4TwNp=#a9jyblVH?K~B+o-82y(oeuKMK~A{xK90pZp;=g z-Mie15IMC7Z{p5@cr`o1d#;tsE*D})w^53vU_m+>KCv#BI`>WV0U~R3r(E zDVsOd))H?%;z%ve+W0Ujl=HaU?4gKb0R&VjjrQ*2pXi$#f zaVxTGr(TeG3(S^{@%qH_{5`5E&+qD!YZ6U^M{56;1?S0QK5k`rdU9#(@!>WIc+*W@ zGJ!!7wBT*Le0bBlfKXTa4bJ`vePlPx`5_)?Q{ukvK6>dr%6h7vkQMu|ZPc5%t5!z| z8$s?P+9XX){bZ8+R;%`L0^kC^wWKn;5e<(=7be%ny~qJ_BqX6Gq4_ z5|cYEHj~vHeRtVTG|%$)%jpemO;{8rdJauT6=ff$ut0@5iekbqEiRBlMHDB|o9f*S zeP1MjWPDWk7`ZPv7O{+1DVM+1vmMo{ZMpg!5Rru22*mqqQ5@wo*t0t(s~MABoFV7m z(K3<2K@4-)9x#IR08o9m(U3FTaY3x!83A#0p?EEwyPzm{BA$%C)YEwYV zGO%#%NQ)DejdJfw{RlGqv<{!lXM_2xRmrp!devnuwp{rE!jKLhSpGM#?!5ptK+3}sCn@Rr zJ}3Pz-ZzQHY3eg4{yuqOj#o8Dae+{~LD+iWb_2M6iHqY`#Lz%#MfsD2ybne4ibE1q zWQ0uQV#clG3*#{o*^ZqdnRsZ8&FZ;h04r)x=?%>*@yV1s5m4qiHv9%suLxAGvj?#i zpOek^(l);T#ND3%kXD)9a+OuECz;B-xZ9e-mkT7;Tvlz97#QUu0HSf-3_xJsbUnZn zmaoMIHmRo3uZPMRzF4dJHdpiK3)Na}S`BlA(+q?09whan}v9g++Jp>&=0kOG?olguW`gk~M(YKBg3G=M?#C z=CfXxVFbI)ZS`%miy68yK@JM6+rlJ5+0zY)1XLXlX$lgesqYS@U?hGh1ZI3*dncx> ziHo z2eNi1Jy#$}?aJ(HNp`KLs5$J1-{pAakGXIu8nuHfUe7gK<=h`~h}#oU=%8zcrnA*D z3B7eW0R@f&e6sP+Z>8;Q;>U)GZ^9YG2>qYK+WB(`w~ldXNTF(Oja-uHg!{Bz3cgDp zQcNh1GP)tj2w42Q^?(^^XI?a7#{q>S!JaTT+B<;aSaijZ5M~I?e@u~B z&(#e;co?>mK%ArsP_JMm_m9OE8Bu4om`1vTv;3Pw$qrfuIQAZ8Umva|VuCpyq!gDu z{!{2Vl74{hobOTQMzBfzv?=>&=CVt{f8dAX&pC46WHBAJl$||<=~{|(Jl>}{@4D%o zH^7_@u1Q7k&NM=FTAs+eLVj0NW<>rds!PAp4&!%=+dbJ?q5DrriJp-j14E7`???4l zo?!;~PN|CTg?U7fi!RqHZz42)31c58&CeMSV_i!k%)}c3GL>->BC*Vn}sqsWvvzPUx0oNd3WJRJ@?Izy5P$hy1v5VVnKC9ty@!g#sj zQyBOzZk2%j(}w9L>aqk@m072g)Ula>$idSmAvHIQpsOH5^|6W*-?JZGn)eQb=js~? zhXc2!cf5Eguy1!?K@#ErhR9R9oU`P20&yZ`sEzPfsUfAYhJmqSzk`hSCQf3&)lGY0a=a8V$r5Z(J4Bsw8%qAJ z>$IF#&`j&GRidWxRO>dz(pS*KZGRCPktiV0?yF=RbrBtl6=Z3C97HSfIg9)veS}&g1q5q>~wqw(Wfberq9`gLY5y z*Ot@COKzzeyrU|np>_9V61tqI6ZJI#sH+|R4(&mnDVZSHB$K`k7w=rRSXUncB>6GG zOZ)k`PLsyETokGB=9ve)E>r+&U9_XYk=#?5KDrQQ6TSYB!h$FaA6((jWc}q8Pe@Gij@$GW73lM_RRn7LzQc}?IwY(PYu4O2U?JgD@4B~wNUdtH16U2ZjB}hvn3_Hd?Iu-jrEZBon= z9zOw8t|YJ!j0+S+f7?W@T?R=V!~66NV4cugF&6h}E=H8Ds1;8vHT)d8zJ;2@D++246pPj+;d3eajfW~%y8UJ+l`U>`K2BmzikH?D=n40TF10I&T1kyWd23)(QUM)d|g&DVkY^Ci4hT~dQIn}xAe!jP=Vv@{1Xu-o@ z|HA8TIBWe`BhMfe3O ztnPY4GJ@PF`%7&UE?kHUy7Xu1rl#kF*2dKe6qT2yBa{-Ay-R6%C4+(6d=8vfdOc}P z=s)@Iiz(zyLar$>@R#!&ecSx0YpE87y3a^FoA&k7s90+Obc+EuFYuYFs~=irc$hT>u@fFh;iB#{bh7PphXNK{Hy!B5urG@4j~Q|~|$Cvk^W zR52G|eIw!RG7MqU3+8qK@PK-1%Uj4#OuOzP3aHbk66OAyVAOp=T6;jRRLH+&{1VzG zhnb8O7ApIg(0E&c0U75-W{zE?VzxvM&}-a+DQx${Dw{edu(@-x1_NMajY>6)cYGW) zRMmIS;#Mh*OaCjK25zUyNT-td#s|aj?wCZIb~qGBH}A(zN)Plxk&G6=KLh4t^`l5q zoN9Jf`DsTy+a;?uDp*j~(6tWb=Y@NIK<`k#Mt)*(Q}9R;%4ee1&~2LWWF*n5;h?y?shS} z#AD;c3_HaBHBPl+c&hzZ>LenKQj+V0o^!Lm7`L`FM zqo~q5HA+N$LW90Vp!Ut(BWWMIpXw$!f~l>$>$OkIF0zSDD}uOB%xy6mW~dMlL5p?P z){rt=N5`)v4*|05Q_jY(35-l(>p+Y(D^;a$C=~0U3F?)~mM?lRSJvXJV<@WIk zhbyfY)o-d&j2Yt6S7E5i@rPY60F*h7vm=*h$bce((gVk(e3|{+>7!iQTFKB;UGJ=W zIMy_kB&WHSKN4=~Sc||wHE&G0R1FuwIbeqWY$}OL^rg2BO`V>>q7FW1Wt(}jDbjKLGh%?(BnSy%WmrZGD4?% zyVOL;cNiyjI6YN@4TY0%eSXTKAa{!4ohtEzS_s=+Rb|Zg;&Zb&F3JjvRxDj244=F$ z{6ak(3105^vuVh4z?#N@jx2$4kb+^l02LFT=b{|LRlwFPhT$B4i{$#AH5{IWI!ey1y-BQe!z6-O=A$H{Q!ezmAIUsMKhi`v~A zN0XK6yZgwD!j#V}bh|61Q3!y}%LE{$IyX+~EOy3F!q&ZmZHC)#SSl||@Rh>aa@@P1 z3pAb|gMp6M85{J)?$1NJERsPceQQ7;KJ=x=pHp?{7I6-8skldwKI6sI3LrEufj|Ko;%$a(K?Z0|VdIJzfbIG@ zW)L7rq^y6r%!&jzZbq{Y*D*;-KFHi963>cU0b=3rS!LRWZiT%AVh-lY=+Hcs7EKH z#WgtDHc_jp;mXEFK6+Db+XuRchRm|QfkASu9jpe^ZhcZn4}0A8EOq}3llF6{sV$Pu z1zM}ea7rmW#Qj%y-n6Ce7 z!sui_%78Nse%D^W?8#`W#)45ib!DhNRz+m}GyPwIwZ;OgsL=j9Xf3>lJNe2v`!<$G z4WRlp`Y-*vW#lG)?pX4>vjS0c0WV|}-da@KB>64}2auL8_9vxVF(f{dcEweM+H{lR zLwA|oBvv*8QxO#f=JfbWd!r5AaUg}zFM~z5QLs8MF{pL6|d}E+Upr=TGhzX z!nk1uYAqgmJ(Jz(HFv_xx76;0@!{^e@~J%XqL)|4WpCSoGPCoIqr%?xc@$B1QmZmoiAAV_XQU20G4D@G+a**mHt8$* zwU$mo^X9-3`_a4;?y_N!7u|TAuXwwUg7r?y-&pTwp%36q||EY~U^zW|>zHqn8 zn()b^6PTRkuKrnfI>JL$EsUuo+vfy16xb*+z#`m`_gT3e_B~BA&;lfxL)(`RmkpG+5jV7nyp2z}r9dGbD$?Vg)+9tMu92cA^Tp6fx_xm^!UUWF zzUWoSj>0@QzmDNPg(&5sVP37ExX@KT5CcsgLFiU?hNVtWqez2kg%DVoVl~oO{arU3B-LPoYa!!=6w1{wjHAzGLkFqH^+=F5K-e4EfAYt?#{+z=-XAQmOhDYP zRtkYDyK{15hyW0w7a$ts48VgKK5PS{xkiI>GOWcDYZA(+5U#EO*$jp`TQJr=uD1NX zl}Iu8nN4E6!A}rdqbhMSo;g3=pGHH*WI`bb-|h4j=dHra<1g*$_`sZu-+^b)5A;D* z4v=QZJF(Bv+*!4}b8(WA4)&Fw!$rbQil!^6091s0+AsxgZu$CNOz157UBft@WHc(r zp6%g{f`#ohM*5NXnb^hM!oh-<#eF^qRUT*XZ!&6KiN=o7PJz`-K9kx9+QH%H1yrCa z(s|Q?Y<203m8!QbAVrBRwB6`i2dW>5R(h;4b3L5c?PuDog~eOD8b6*1ro|58&GbrR zzhx1=`Mj|nqs)w83E?obvl(>o}rRHd| zpOlqmRjNnel~35jsq)La);YQhzd-(gd7ORbo);mJPkKQ7Uo>hpLvvtu^wQ7wRh>MY z{^~&_QR+JllF6e`ahV#&d(|l3x2HB?_wfrTGc$C!pFT5Mp{j^{Q!BuoC(==En{?%9 zpwwKs^FYQOq~5s6tQs$cuBepBR&C3pFZBIEfR=x%FQ;p4PtYHkwaIVnUsqyT{kg;g z2d{>Z+Zg1)W03SraO8>eMUH3%9iC!yH~JX$q1Kq|pfCaPF0JkaEzj#}TR#6IZ2wXR zi>npX^ae|~(P#Vm$6OoYK9yfCg*9j%GZDoi+rMqRXoSI=a!zg|8hFcY;23WY#!{(_ za*z8&C-9FsvS>`ZLK)gjLNP{w)>{_NvFd5=`wvmRB_Yy`AOGV?xmEjUUJ)ZtZ&9B2 zD=_y;o@r4G##>_R5;&doBelUn+?oM;a1(7sge9FLi0!?)CO8e@X%*MT*9gaCWV``Z zB@o~>b$nRa_AE)m$N$~axpc2sdUB9d1T8AV2^+qLAnKpsoaeBIsfWIU9^1v9o1;m0 z8pC&$00;IP?U@;y;v;S^j>;j!_uFbOicCHVm?OCk_35MYKG9Tn-pHVW!e8`O6LYtY z-^FNmX!X6?DU3xtP#r|La^7y*fsUU%&ZuqWSnef|2`R8{hb3&A zQiZKLkl4ZwMy`b)XSmU{);v+!!25`UD(vl_3ZXbg?6NuAw|S9Siy_Eko5(Ip{1%># z)qYjPxZ$>CL^X7PIj_5S-!~8Rj#k>r?EKuzo}o)C4Sp#Z_lmzp;h=g;huX$z;eW1H zPesa;=2Eoaw+$wW3*59@CA)p?j@%=|r-iG+^~Dh>3&)rhBJ=%~5RIrCVRi)6VqhVo zw;Qm?@m1hHV+RKPCHXNJ>RL+*paK=*!XqQTR=Bw%+bKoRIuN&_X?= z%#B27j9yafM!XmHfo_ucp8U-!}z zg%^*79`hrcDazIn$wc33BC+f2yO_gW4AHo!E#e52c?5S5wiBs(Ec11E<~HB3ykmM6 z9~|ZzyMEZDAfHEzQ#A$cl-yu!ooP z`)qQs3JMJ;Nm9n%%`D-ckJyN>5pW8-e?H(z?jI*0G6rj&v^+Hw(o zSSjnAynef(J_ORI?ZezOqh7Hvq~BgOk(=zdV)pC>cn68c~8{z?W@ zsTO}k-|cKdlxu95gSi*i2q_Em4@(BdfC+^A8E;!Zj784aa3QA?>0k`PpT={|)pxEW681~WW@InEbq3X z1-~$!d`^381=RJWO3Fr)Dz58?TG-#ryf$^Mtc=Pyev0e=-foT$+`}ay9!o^*yifxo*I>F3Y^NFuhfp z0vP`wur5}3-zB^35EE^g92S6*3LR0N#HoQ`^WkKZ4Pv%cw2cOu#XwF#hR&C0O%q4} zemk3nEwva6CQNgcF~tjGrj58!Q`6QX$TE0+=y1jH!~`uwpbeUtQ*l{+;R-pUfXm%q z&I5uOq(#~LSpX#dfPHiad#{~U{E2vAssYkDL$+`4L;${Ra4K;1-H3QG74B{P$t6RY zOCxBBf{#R2XxIF8zsk9;>t^gVYz?C( zCR104^@PsgXWF#D0psl~4WK#LOF3M;NS<1m?<9y4*#=K8ND(s&IYqn)vij8npl?7T z)f*NKaZXLz_?DUaQs@&`4l#6;*8Hpr!TrED9N3S9MV7e`$v|Rl=L20eQ0su~QuNFg z9#9A#dr$WNr?}`#N0X}DDaxCAE3TUmaW`UgSTbnze!-9LTn>UdG; z=NA}`gCc_U^@+gV|pyqXwy*4&(!0#6tbJAMc-x>({AhBTF@@U{Zc`6-fpw6QLB zR!SbJf#Q>}Kryc|mV>hC8jsCMO#!11L^0`HKoT(~?OpzTsU7RnbqCv8I)uq}{>CGy%Eu$K2Y6d< z4YQtkb}sA)2At{-_g!svue)SwHS8jFzF3(9>R912(NHfURIlh}Ys0?jK1N3|`;J+* z(mRPjz`?j%1;Uy^_CUSx3mBX|x=RRI*U}!^OC&Kk<8_i8I#b)Zn@Js1S_1B?N8(j9 zk5!I}`8wCY4~j}Pc5mKTS`-s7q6f7Es6KV+`|QMG78`p4AnB$q>Avu8s)V;65OjyY zg}GxplA|lbwv{p<37AY29MiM_tURr@#ZU7%c91G!QWxhUa~k1bZvfOWE(Q#9mXm~u z5K?v7g^jq$nV$e&?}etXP(Pox7?uEXv`s+acP3f&Db><_+4O0BF{2MCG;f~CqpwKs zj*)*!*mP1%A6e`!L#G0unLn3YZ4vYBNK~hAAaD>Yl00gQ?CGTDy7A(*+QU8qikp(X zx<^LYV_D{WtcsfD=})XyH$1Jk$Y+OKKq6SwVUsuH$wZIFqr?BNYe#ANSAo>_8iw&- z7;^rA76{#HQzZLp3@4ARI43`E!Om@3@_OfS%#>d7JDk;n5gUxO|;`_i&6=1y%YGy!;VKC%M6$+ zRsS5VrIM9FHT7#n9EX#Y8sfHk^6rT>+41oa zMzP1&JiCkxIRVl$`h#;wL8Tp+3^FPa0wM_}e8x~__0-CNI1(GswdG6aYd!;C)d3Cr zD&Vs{0%N2Iu{}=Y+Z1hofCr!u?4sA|CU4~nf~7g}%l=-=R~~vaVZNNl@t<}z>8u=H zts24D6CteM%RPhStj`5JM_;FQO=r8iU#e-BGzE-qeah>faDgS$$=#2?we;}L^exOI zN)`-5amg`i7@8?9y$sd8Wgn8|J%1|uY=$b&J8;n%fZ-f z#dJ*s-x&LPxY&JQWXypvRPi-88qF2CX!I3mHw(Ji@-^J7Fv&!Xiae!{cN=*rp>=Dp z0ZT}h?8jN#ekz)2o_2YoU}a?7O4kx%JT)nAZ^ACDeGWLxlMyH+=QPGl6C4nrcSG5o z53CSe2JSe~uL>?jQP}4AgdAsExJD&(c>avE%GJ{JJjZse^TcM80^Jqi5T&jgg6XoO zDjzHBz1mKC>S|mA3&<;X-MF7tqepPL+-qg9O^74195H!RA5OqnZ2m-uM`XOa(h-j@ zXp)A0XMwe=>G*bGa_Gp9Nai&ai;u}v=vaR4q(`EtcZ>UpHBLPJ&JpBMz*=hiv|7!h zoCUbCoGccW#c}papC}4z0;nXbXs=&=R<}7gU$4coomZQGzD~!UpGNL<1do=x868?e z0jLsmAjTzVz9Qsu!1Q1=)CxZPL$~EQ^Fv1smg(J07DI*yG=j zUgYm!j8T25R?@FPo+T#o6}BmADdm&0owRYM6l}LAhdN{)E)v?L`^FeM=C}>iHbu3; zLpyMZH9vHNY;U_Y&IjPB2baa29&fK6x0oN6oHsE zz*Lc8=CDQP-$HTO2f1P2;Mqrr8}RZh6slRFdt0S>xY@F_>?Q(~DgR3?Ik)C)9vaBC zc*AV?m-jpjZ+i%{98G`fXdUpyaAlxDv5SaCX0ze_F%&FI58`a8E_hWpq}ju|pYG21 zlziLqi8kyoV(=txpS{aPILG5(9Gl}B=hz{I0N?_<4HGCps&S(SyYJFeD@J-%i=z1u zj>1INW`R^zPl~e8NCMq!%xU%uwggz52Q+Hk>wVvuxS@S_W#wJ~=TkQU^MyYlhkj=|n8$a(wIatNF3q z9xGS8f{pax^6J!sb?zxQ5b!Re^NCer&v`6B==9`w|Lv&P(0c7IX%r!av8lYB3J#Nj zjB$zC-^3<-vz3)-!0h-0~U~#bk#JE=(C}+P$HHjJ57ZyxYG73g0M_2`Ea*k8B3fNe=rb%Hf- z0AQT;pC!(lNCU5+V|tA#OU5M%)HnLx^+q7bk+#$_p-xhgO0QU8^$G<`U?jKNJ}z?n zxS!yHq9|kfWfx=XS7znPgWxEnuv6;Cg4yP*B%!Bjw%py>WIokkfN>2Ilb}0C=BD|O z!dV489sPb4bh}u$A9Q9olUC|D>ZXVYkTo%nNq&yKpe-yJ`6U4-UiZ6F(&{CzPj>+G z@RmrRJ^5<4=}`)^x7l&-dZZGYY7}2k!Q?n0sV&~hmCHfWAO;0 zk&m@E22o+*oZ%Oe`$wFH?8A|2g6cA%R8tZr1Sh=RlNqJ1{osL-B}$?|iXNzqej}Hl zdB6~E%zG!KMVTssy??8_5Do*qW&IWQH;YaK`tRkoz z7Fp43I;4W3ufsV0M_6n!%$=*}VNr>w7f%wUh3aej!DF!o-q*62&+fh7gnA9FG>Br%LI!52t6cH&s@t_dx zGE#Cmy`JeuQxnYl%N%{dNWzRCVSj20Z3ZZ7|Hyly{=RbGE%Z5o7Zh8;`$haho;3U@ zy%bhtilFi>jmSQc+?^Dnt!>enLFP?k%b-Z_C7~kv5&}{j`0P^`cMS3}5^?4zi6z?M zwrXt7lCoB8Wa&EbjVVer=!C_-QFYY5&^m5rE<#${fn1i0jrS^pDWjWqbO7Px}?712JmxcaFJ0z)lGW?9*(( z2`Io`_eV{F0NevfHI3E2P?jEwfWbzrewd!YlD`G~|GnW`6`>4P&mZ%U4m=$V4_r5y zhsmDPD=F1sfEHr`Lhjkz!MIg(w~j7DY86QhwaqmdY<*@PH;xUl5>46uGZF=sL9|2g z3?MJNtE!1aIDVCOesSF-i@Y1E!tI{zjXxF+K`CKr5O63DFn7?P->?p`Y&<4Ih76G@ z$We^bu2-t}_Qght{x)&i9h}a2{)7;20Gs}sVF|A3#?8hSXLLwis|b&6_iDK_chFYB zRPsWghL-0luyGusH}KhQd)i|}D$sOu`5qBE1Y81TjOT46CJUWUZ$#{>+*y{31x@3R9Qc; z#s-RlK|89{T2{x1f&f2WmCvQ&E+7>E3;Z& z3%O;}$eD%frYx`4F9Y>UoOszWxFr6INX3cKWEJA0!4ky38M+>a`OkidpvS)c%Lrrc zNNX+A)UcbH`S0s3UJx8!?`(HPSs&#YB&PyW zavL*s3B2YSZAE`y5|L>|Dzcm3@j9oP12(V0L8&D}LCl}=l$CJ)meK6_3+`RXVEieZ zmUx01Lq8D+pV*L3(r!?cBBUD9%slscz4_o@n{4M{0{yuEGVoELqguN}H~&J;z6`&2 zpeF8}YFzDE5LEu5>moTBoLL6USzT>qB6C2PH3QM!8(TB^TclseUEe7t=6V0Q&Q?U2 z=Io1D zlG|p0jBeBSjGx(RoAYFawq^>y9{+)R8*kpx%vqU5k7rKOk(dB<)iP7#l9(T{8^(Jk?4t!k1L&8M4vweEq$~zl<_$EL6A}5}SeS zH&D>?1Sjv&$DFk&j@;8&Xz@L35UzEu1dHlXh*%=-9fj={SjrOD(plaA?&%x+y@g$gu`$u2U|6V?3@Q-MdP9cSV54*KFTimAY zI(h$23!S;aI_!2}c*kOD=h!#H73(Hm4gyAGy*(MlE{`8i-50wyla%S~e$Cmc9UO{} zK7^%uLuv}}@&i)I^kJnis0rS}W=x%B7{F>TK z{fb-XWX)*=aiutF8c}YbpDADDo%P=$@^;&+P#U*(&(M1fjwfbtENxT{4u_GW{3&or z8J_?lMOx4)5wP7@n_g+Zu8$%xL2<{4X16j@nsrb=1d??c>7voF>H-+yf5gZ(5gXJ# zdr=15CAkkRd5*p%W~>-pdiX`hsA~P-=JjL4n{o+pNKegR6`yk1 zwU8Y`srF~S$r$tM4cb4 zRprXSHB}M3+{>rVlpIXW4()AHR|(t(;ht2zS6GQ^Nkw{lnGdYj!j>kzSE})8f0}?! z>}X6)!p}dh+uSjWHz~I&WJXL6r7@mv9DNMJB~UI`ERi>tjQGH)m$9|h>qx0R})BKuDkE~y#*S3!1eB3y^knGGJ$0y!UhDSiTC zyXE!hb!?vsm@9yC6T(ZRVRQA=Rz;^VH#^F6EoDw`7Oqd4KLUbwcs>0OUt`;y{eH9JxlkgNq4kdd-hr-Be<)fFN9h=FO#`y(AKP;SjB&_&x7}FqS9=H_ z$;u^s;0N!fX`{2Dda2Ch>`^ews*lZd_a27Mn8~4po!A+|8tTQ3R-SpNPvhNgCnaOg zSPJ+_Y;d?x_L!3}W`|OrubW0h5=$HW1iyMhzZTR>hu>Uaa~j^t-=!7SzstYM;esob z2onl|s5C;Ocrmq_RYLWzWpyd$Z#nfPdzvkwHm9n^?%P?x9A|^kf));KR-*S{Vp;8t zdH|FXkriB!A5>uv>?*VqY$qgX-FJMwcn53s0hUQi)`DS?9iZ^jKQ7WKgX0P_@yXbX3UYW6R@JOcE9tz_>z^M%GY{}f?S{QJB> z=>ZQZUK$w@u9V8G*>^Ec*c{Fw(bDMrCve(EfBK3r;8{fShS>cmtab36d+h7VxRs~? zoLrD>e!A`n2ov&Zu9!6BV%KkQYn*FnT*C_Gv@V9_STWPA*(`O2MR$AOMdYg7-zps3 zBBUdvnGx3T@|TGtgV_Vkb0X(paH6CvhQT2Oabd*0i{Ug*2_?<3ch=JpRaBNI=FRmg z(=UeVz}QDk8Cg}jP4~+>_MHR&bW`_9L`mGrz%-!FT&QcaF4rX%1HB9H@Nfb-f`iKX zJd;UHCs29|NZU5Z7mSrrtRCf^m5-a$(vZgiXBEcM+OM9IS8eBTd!FJmi}{@7%*(9# zLK{{-V2&zC5E)6yEt}ZR+(X#ud0vq~3RwvhLfmsKPn9BU;|BEx>Vh8T?DrM7YV~Bs zPDCs^K}f)&4=GLXyS1iqkWi0PWE6`l-k<+KN&@&qNeT64duH1Zo>s^kfjFZbI=UQ% z(U`nnn->#ZPZ6(h? z?K05M2+dh6%<^QdJ%oA=@00p9h7t95iJlokV2SaVPYvpKOv1gBxsr{eqS!OXc z)+ZZBJb9UjE_*XV$enaeMgKk!>3;*`mJcpwPeZuD+wcj5)0`mBBjPXwljjoyF6;T% zeK?+8Jp!B`%^?jsNoY3RMgqA*8;0KG=4MeosJg|Ipu%cf!FABY)9^WB@j<5FV55nA zJ!m$=tiM#q5Dw0j|ZP^&TW;m_&xX?*2akSv?1 zIEO|ZTK$%RpZFRB)Plmjp1xu)(Rk1r9*ku1#qNQUtwXn}iGEZG{{vUy0}9lwk1W?4 z-kp(d!!36;awFWJW&PV;+A2~pwgg~ zet%C{iTz5Y(?v7_HXL+dR|s$sRj#p0)-#GJ+Fxy`jsYeWlywM)I<9yp$TDv5 z?;B4IW#)*!D%S(cmsQU)rb`K#^m4Hf<4v!=btqHY8*euC8yUv9v^=*;FpROPxByqo z8@NzPgdTeL*!4s2v*r+II{Hyr$;yN9|EdglG^ys4L<1iZgAnTi6ILjWxMRUGe~KGt z>-Pd?%UnRXyyayd=K5H_yupf}w>aADjp3-h`lhQiIe#gV>ZaC-Fo!XT3oS&MbuZ-R z=T+MOw)aKvyD||Kb0cHSxka#1gUsE7nKp)M9X1ynW@Pi#nJA6n=_SElT7ciNY zgG>Cs72}$NK-Xk^aDKTbe?rawj=pcn=Zl1W2NaP}ait*h)V6;2J9>^Hd>v zUmG!`OiuH_ELd#&m$ao){3=)PAFV0Owh(vCD| zB^H!^%jalrfx*3}36;&_9);bBpNG00f5!tXJ%KDx{dhfS40g29Op1c~H?bbc?PH7^ z(Z*`wyiLYM1Poyroxi;Th}sAoYaSJ>(9NEX_6aoM>RXE10g(nG1V4WX?Q1ziySaRi zu=rd-pgw&_$nM!N>7_Kit9q@smvM8_vc)V*)0;=s;89+@x*lJ$SrX(!(aKvla7w?i z&$QFC$}8GSMK7qRNC7YB#|7{WZ1=wF& zeKKdfcsrcd-_Qd51Tsh?hs>ZR1DacordvimZhNLX7fB#UdqQJm&0w(@cfL3PKiMm! z-ppRk;zW0`{PF?^!0P#d7Mf;29IO|2rOY6qS|^$Hug%1+AL|G~OX64+4Z|4u?aCGk zJysKjl(TFeS|HwJ7z%xJjI<>5j?Bxg>L^oG%VILb!^i;Rx5-H(n=fmYK}|b~o-y)B zX`i|F^Y=~WLE47D+CzsEt&QE&E3m^?HCR1GJM}IkyCv;rl74>7Cp#rr+GN6vWP)3| z#DHuHtLxYz_U1T~%L~|Q6Mu72v5R&Y2&aYO64hyaul=T*u6;Ob$fGKt)lWlkjga+LDS8oCm3orlEc z_xskwGsp<=!={EC;bL?+F{DKak2)&j&UV8+-``o(g3)y=QgEJGyBcw>vNoI5I4M-T z$l})~mH+&OX+RBy*)8B(m$urNo`xNOo;l+#i_5A}QQqog>fwKNW#HMe4RQ7PJaLH} z7`d7fM-0$KBB_EgIKUm0uG=9!+002m-NmAL2>y&e9wgJm1m4vd%&$d=dgyWo%ULg0 zK&w{K6iQ*Hi|J`~Rur+bs)LaZ*K4@{-slMqX3U=@0H`r7B=rz_X=lS)2z0MLQ|nNfD!=44 zgyPJ>5BOBI+@r5(I#tNTY+y+RTH07@O}U~y?fWGF(`7j``LW!o8$|~?e^mXiO)XEM z3GVtJY2dkt)Br=9$ITlBJRnkHb0dxHTy_rR==%&0KVsgMLSSu@_4fp_^Es61Ka7V6 zPJ8g{$M#iOW11$CBWRe+v1Gfej`S48VyPzx2>JgR#C4q)^o&eFM0I$z0wcgtF!YCS zjb23D5K^~R4Gykp0@kFl$N8vNnrDlLphOT4dX1d!7o>pckz(xFUf$aY9(<7nN z)52Hew~doakG;tZ1=o@g82$6;6ba$2;$oJb5+ADrVlsc9Rg8j-k1%W*fa!Na$&_lV zCkGH@1RDg7A1$6IB5%y81d9jR#o6ytLp%9Y#UEttE)Zj+wUD4-g@!}_`f+U1zyVw; zm5ZT7&m(tw?a|25+srmh)3v^~t%tDBg z4@h{*$hH=Op$=#1Eh1iVbks|;jSt=jBRRbdo9|Ow33zWA=I}ok4r)I8>56y+&;NgSIU!A#}B!cK!uYM zLzOY-|fn@BQ+h$R>`dMQ^<*}qC1Mup-0g)f( z6Gr?pA~>TkT%}WH{CC#mi+xxY#(tNy|3K}3ZR21~*9L~vYN*nEg1~6-rKG)c+^BUL zf2If_>m@C>Y||{LMqO^1B$64qq#L9-7G)$f4~6!w0nqtO@dkr{rPs7 zZ4_|KUTRAu;9xzcjx%QD7$8?Bg=PW5fZ{GxHb|ONJ^pL?Ov<^N3fPbt$+MX8YF{Ns zTeUcz8QYx<)`%_56K=*&z5^(Dg8s4&d0-cmVq8B^C9!2I*ypiA^YNNq(2~`{&H?{r z?a+)S|EIWgEKme}N`RU~A`<%1P9l)9)ZtSrpS!hGNk%R2Kpo4dRVZIZ+@SU%1Sa1T z@$d1oc8G5P#m$DL*TpQ2qXXn%(K(EbXmuAN3>M2v6_36~d8jWmh$Q`#F45=t`xNV! zNAvMfeGR1Cw#e15;|^S$4@hBg}^8E8B*a z21zXN06##$zdyrMn?5G@sksAKQnxw59za}X_Wz>Jq^1+TEt}O0q?7~&9d_rPM&EdBr=m6A1@)`n`H zchD=L_Id<$7GL(4j_@xfoXMGZ!l{2iHj zU4-eM??6@`IY+;mwM222hffCF6Z$3GGr3d7I*nO*vIi@9j#}k6(`oL87xlb$QODV0 zgmP~;G<{qyi*GZAq~?!iliR9|R*w6l=92!${C!=0$mS4YJrMM9l64uQ|C`RATRjdb zcApG~0GzKp&wiqy+m(N1wy}yq_Nuv_IhLjxb8_drgVtXFFQ+x&RHW45^qn%DGO`Y0 z02{bGse)v?TT6nkR#d;7Q35TP^5N$3*mkGkYrQ8U^!wJ7Z`TZGM{aM3-YubGY2dJ) z%91Y3ZV)74vzaLgiiyq;!fI{SklbmuH660(5VLX%ph{Q2$^Dg79}-(j60v3wsQBSo z)2tJQ(q5l7w~+vd$fa@IN&2!&`FX#wfuquHhpv{n%ZpnT)8gsGzo$NOY6xMUXFH!L zR3x7O4JZ;TZIg&@!*tvIm`aM(a)=kq(^ zv^aXF)3jtf64n9NVO;EKftFy1Q7neJgdin`NXrI@0;3(;0WWnwi%E`@2U|sI zXA$+%NImIi1+}mW7N?rq12T#mgl`W1wzdC}N$@*RMA26XXE}Iax$sFV zT;zJ~&nclOdvBw;#~94w_1A3X5j@4ZBY+jC+j%pNBajmSTL03lZWT z7lCW@+gYUGSktCnLk$e@?XEZAm1Azz%^Y8LqaW{t&$eanI_7}!rALrG9;@v$mVOgM zEz4-;Yx6Hp1n>RifrBd@_$(0x(0d_7Gs^ek4j^GCW{08pq?ALmFZLK>b8svZ?6;pu~^p3^yoazKTbmpw8O zzPv*l-f7<9lcRwUt(u;_!-C)6b8No+jGPzW-N$_c@^A)iDp$?Nczq@D3;`S5?fHiYF1{5+cse0O@_*~mLCBMXW zZtNyZSPJ!hMTxPs>{TKPk(mclk zUxHIj$ZumUVKjj^f*)>uOArW4-@S0)y%cOz)F`ViefDhaX|%L3x*p@Rg26wqHVWOo z9e`jFT?)p1Is{q6-V_^h`5{!I;r(xq*gDhJ5gaM>OL#FhJep%#7hQA9=qM|Eo6K6 z=;WOD!FUbVYo$?iMj4ynvzkS6&h?8*P8b|>jLdMwL{EM0sr{OlO`@`_Pg*PsMflcG zBRHR&ZHCX&4;}#^pzV1%6lKY><6sZyMKwkmT)s~A7nc8~jTj}v8^^j~H=4Kjq_KZg z_tMeyN-o;H>Y}g;4UoibSdrlHvj@hClkv4|&EZ@uPNuZs8ep&N6 zJi-jyUG`NJe2|J0%sNJ&R_m)#w8PvL_BK zJF%#rTfL_lMjI_a)Vt6Yq;~ELViSem*Z)NevylnpzV2^TkDz_z;hMxlPDutvG9$N~ z-E7K&P7;`$i1+RG?Xny zA8@5@9Uh8)rdjo%noY}4qK{56ZlK!XV5utJbTt8Y0yI_dNR#FUT%yDFcqeD8En2pf zE;^D#$WC))*X|QU>G;R_i==3GFe1sU@dqwcO6JG(8nXi0uyDpGPmi64vv{e?HyQou z6)G&(g;Aua`x7J{*$F_kb>kY*-O;ZLUn)*-hI7(G=!E40 zz{^*a{@VOYEUxe}p5Id_ooHNGZ9T{T*Rk=z4U%@#0x6D(>-Q@uf24d z4luU4+{h>l6!dq;)UvYNg#U{>m+?@F`gGe-B^iuN&@2)~5R;UnF$|{fO&J)b{Z!XF z31=0re2VblUUX8t#I8POxDT|K0AqR^;4M4B1P5x+RA82KiqM41ctf@OHRDe5SYVE4 zVMeX5se^bbq42)i3~h?4gR-){;kzliG$97s=inKt%e%1lfx9Y?k=59{mT&41Mn_ zK??;z(I#yvBa)ai;I=v58h3(7#20&R^*ra-j2NgdaFc0b#CyHf)B+KN)ST_Pacb-Vl+q7=N=%Q}JPqH4OH`gjv zL57%YKlGCpfH6@WWBJvGGa@F>pIR$}`D0c{RG``Qx&e%Q~xKqs&gWL=6 zKQEE?KjMN;s|~$`J+l~@zpKu9#TJF=X@6c_i~%dt0EHrPO4T|n2M*R{x|?vU-Ko2sB#UMIW=;Vak$%ZcH2K zM;9UVoZHr%Jx{8rV;tVmzT!MKxnvkF0Wba4X;HC(*==m5VB!Z6W>E%q;UmU#3L$cI zd)E1KaPSOeXx8m>Y!Mh|2>%Yd`RYE=4FQT<;dc5ki_EfnKki?qQ->KR?Gij4xta!% zn>~!8VTp@G=Fts@6o3UCn5oO9r@3zCkv&$j!q=bP^wc)^t$zq&Dk*GBH;rsA+6b}q z#ya289lus3&&0;MSTmIovtS+9C4{v<8|)q{C0px(Ot$)D zs}WvaU=Qp3!0Yr!sT)+}}?>mz7MG zbkcu<9GdokrS{|f7yH<9{%@hLXDYL2d(pV*IAY0Wob%KY7F$Bi%lp)FjQ`w-b+alI zE$UJhuW}hN^yHlcp<-C@T;SL+7QvcH>aw=5dt?UNYW%I2&kU+NaMCF{`!A(w$!sTo zV$rY&AuKb$WgqI<)dAxcK6UF0v_Juf!!7*fbz~Z8qYO!aX-`N6>t5^A%>LBLEPqj= zsnS1B;s1~0IuMz%;VKzn1s&=!gon?KdJiZ25pn(>0w_pxw1jxGK~Q*Kbo4{ht({1L z!P9E2H02<-S=CQ&d*5Rbr13yn0y7DS)=9E_7v=jNW{7cLNvL^)YrniiX>~CF_`5e} z?_lTC*7t72r(&^#n;a5Bij?%$`Q|;u`RB||dAOolF(P-aseu9^2E^EApD?M_<4rD6?qdWp!e(e>#Sl95%(S$B)fs6|^@@QXE^ zBTW*Lh`BL?71(Lm0-|Q(dn^GLxUyaDBCP&XQG;cPqW;z>o9K)$ zIp$`5=MwPf{EUvi{zWkUd@h>t8K-Do&ovs1U@=8z!u+2hxXebT&ZJjWIbJ~MMFNr| zHyUTcz&q-o!`N2Pj+e|7(@wS53};X5sI*-}pH{^>SdK2Hqy~~5%ZFpf@r|XVq{*qT znzLL`hLAJq_rMh&^gBek$ID7&`_%vqcJ&0%_IOUf1*wNPX9@MA-Bx*Bd9d|kBZ4{| z9b(Ls*1!aW@jLPj7N#-4{NQ$i zvQES!u6Wv#+1hTy+lJV9WpUT#xkG7&2D}GJk8@I-ME%#x#3%597I_KBMxrR{h1HG= zGj=q~+Mn_{&mll6u8&<&)OcyAu-nGXWuL}^!X5x4_><_IdTRTmUGmLq{i=AF>qZh* zyKeqRX(Id!!7U%cj4gIzT!3OlQiTk2{KDgpY~Xq^hv6e|wH#f;K6PG*-zbzsyP9hg zR=qHL{dV=Q0LrQrOolatm5G#W;WnZ4&m;Y`B>V_KsuQMJm70VoQmNBHzjBpj+5V&8 zX_s+6V3saHn;<+jN7}>w4Or%F10%1|8q*)(KkXA@LyfQ<5}@S z$urAXCJQDFCpB%mlp+(*DW3G}WG13i?T^O*{3{x^(Nz!9FOz%JjQdoNoK>iWs26+A>tPJ8(|7v*IQZ6?Q*Jb)80zvWf&k z*lXLuxtO4vs`M_5D}#0lqzJdJ_`KC@e|_0Wut z#nbR1-T4_hCP|^udM7Y-*6J@e4C_F6h>RWKdWlB}_YNbkW%JOt8Z6v(02;r`ilrZBeX^XY|; zP4|GT`Se+IgH&Y0l2{C}<&;``in2+CJ<#bsJ14bL?As)3hST`h%e^A=kp05qg++Nh zu$;+NZqq(fV*5i}AG!MqW@K<43vSEI_DxbYbdyYp0fqf;ICH{s_416zLj}%0jzfyW z*S5-Djin#^u94DZ-eMTU+S-iRx8!2|Rw=P#zSKTEq9Z%}(XN{+!Pkom zV^{2<%e9q*cPZmUva0Q++E)De$oA%xp|kO-EGv72h@(YgIubMKi7F_E>Ok^d_T;zz zev{uI;SfzuP_*BEeaVHV5%iP0GHTv)8AHF{9Ur~DYi@=qsg!6(neZ=4 zs03fa{x!452YwV%T~xG9lP$X4q4#^muxp~8qDwDzXjSCJL}0kPnfo#J33AqgHLMIy zpG^~c2|9uf^>R?h!!Jd+)CtUDxbNl9IzsZ8#L?*9`b=UHVY zH?Jfyq~-+%gzSg6jT8wW*P+IPE`< z|J%Ni7f)k@piyoSRVEr1;jes+l-WYN2v6L>!}S)JWsPLBES&nV`j$1~_Hr*XoERewmf$ zl86runJhYW^rh|eLKXHE!5%h_fhkkQeH^4l7^6HB zn{FW)(p(!J7s`t31Oh164R-O0HgFTx0^0X9@J`7M3>mr0^`3q35mGMFTE2p1Ci%N- zP6_qId=NKdOot{US>4=rpe4fYfG z%24+pmlm|$A9qedtRMw2WD@5~FA_;pP-fd!vr@_2iOAX8U7+Vhws0%?5S?-t#b?l_ zBZK$heL~Pu$O~L0d?-e3w!U{HTl95GyRdpDG7VqJm=axOaYyw}wiYivatOCcxr3-+ zAc5YR7^3{w3O=4mO`F7`xt*8X6?&cnk>0GfnAE3wEJLkEgtmg=&r9bxUg2SS8kiVZ6PL1 z>ZL%&=16eB!B3uU2qr1J15=}u{;}Rjrt>V}s_-eQnnF%VKBS|_@j&><_C@j*3lRzM z0M%yYYj#&vn=g`=sFZ{U#wB_f#>%lo)rcOOQ z;WpCIDq7768^nkQVL9nkSLt5*8uko(U>HBkCG>%L!~0=tgHX@9HCG&0uHVBdx`|Z4 z7bh3=Q19HSc=~Yzpz1u0 zT+B%|y@EcixuKTjolJ*An}XNhK7AT4h8+3j^1x$`6pGh%IF0vmX1q56Kb@|i%Nf}P93yvg zW6yB6UxhP-D%Bk6=vhpj%aOb=v*FYa1xr^GEv8aLm$Iycqd%s>Sx3J6c#NinO-0}b zg>bPfi|!6eUFhtvfqj0&$p#J2`%yRZ9f2uAEADaH>vn?v@Gk@pr}0Mz4QP)`e+iv^x^e^GZV`>2 z|LlU}8kuV(?3uJxR?B{H+<*1$mvS>c^$Bx)bEJ;IhWl}T33^5p_`97ruiP=*z=`j7 zbBZES3u5?;K~!drxh}8uudn@eS18QbU&Fe3;e``NQGm-Ef>xlul6u~rkDhJCR&D2z zWKVxKEU(gg9Bw%aCxc~QqYY{)>^+Y!A-&64Bpz4z$c zBRIJfVEkQ_^!(9Xvk0@s*$u2BY;IcWSx^FAVRIx5cI3y1_mOngrT~4N`X&u=eZgo@ zOBhU|Z0P66kk>;Y)%A@y?(OxKqgV>7V5F}$5)r%=W*47 zU~7V@ju|^-^aB|?d3=uxK*w#9|6LMnA86Qs1v@o7U?sLQ0xmN)yMf8@28_Y>XJT-& zu$PNG0z9jOZlogbiZG6W-Y(BL@lJBh7g*sV+N#FmFqAi6|d~HwglxKi<@gWcM;C$1^r7HrZqd2 zl~Tx&ivZPKs;$v@r^>MQ>Fmx@a~UE7H*^S$n}L{yaRPb6FmSky!Gb_;;f`l)yHu)6@(UQ!pcI`SBijI&9MYx0_Y@_*n<6R*Mfi4ZR(!zFMI4gdFvXCY_X4}; z9^QBGY}}XEi?a&1=-eoGI+|{02A1JoY_#w)2q!~QH zLNX}!Q%Frwvp>*vGT;#VD=eE$g<}SO%?FG`%Qg~+C9JLVXaCv{E2v zVq0K%g9uGDj{Rc!90U||djblP8`dH;tQOkQg zci0?~aALk*npkAjP1G@N=CgWDxRvgSsK2l|0gnqX!f~aJY8!=)##o2`<7J(Ypf6Iv z0*?d{PtZHe?FETXq{FOjBF3$%4tV^uJ>oSP@9b_wNf#6BLla z^=~KoD^*1Sfb}cotHGtlZE(?ZAwEvMh)3VQ85729-2yAd;XMnSIMkFHX!3z&#fU?1 z?i22s4!u@kh9FS2o+3XLMjEWL$Dk!lKXu@Znvw71I&|=u~X*-AU!~Xq$pf_EX%k)YS6ZiXqdut>FGI)OMVYjw3sN=*xTEUOF85 zoV>(c5Cc}XFEKH5qHF1aKJR4~ko+7}>K(;e(LuEze`%{g@J^IbS3F!7qwfFN-^4i? z+f0)b6R~&E>ss$qHF%6z=`g)--aZWZC8zjFBFVy0s}G{J`fEbRL4X#eL%=;2cF3#* z&bqxFP>uVgV*}ZTkX)8iH$F$%RK7s(CDUD#s`bS)0lyznw>c!N-z}-d@%X>B*qPf! z>a#?=8uuE9F^eC@perQ<_;*q$C&%e;PJ_^D1>ei;hro+J54F9GAd*siYJf+>2O02a@s?=j*w6A zmBnPMi~7x-M}b*Hk87$R(BX=D0X2jLTM@_}AUbyypjbJi4N9S>6Q%p6RLFyk-#mAq z>6|SZ{H*t_vyS4I@u~iYZrI$N%Rs3hXU}*~1BepG?{S9sb--dJ%h1}o@)7F2c?m8O zb=`_bjqaBr#})}X3v&)pDT9%fA1;YzknG;M&LX|r%ccEK&s{ZR$$pf9p1lzpAaeaH zN4NTX|H$DEgw}F*;r6`IF1JB!FZs!s2K;(w`}*3Nfy1Go5=c-bO`xg%fH5r}ctCBvQnv8tNI7bXw_rsv+x0?+sb*$0-)R_|DML2>0y zT7tl9Jd*!86Q?~qQxs@wIV+FSO$85`C_?0bG20_Yjf9^Sfo96i?Lw`9tUR>riYdxU z`UqUu@VO5!`&opa3HH7s=caER>3tu>=v*42|5*}Ur(;{;^}!vox^ykZC%>cLaa#yA z(FC86+#990hyaw^^l(OThPdkQ?eZQ^NVF%l9gp z%-UUUH@JO9hx4{{L@>L!#gT}|fId?wYZNjFD8gmmVS4>>N~cc`Lzx)@qy< zd<^ygLiU!`G1QyT;_Qt}UZyLIO|?@PZ*maua+ z-|URGx17~iCc&_41tvAwdZ*si&f0)BK8ZF7M49I!p=|lv;DHXxFRh;pL>S8&bKRyu z6Dy0-ry|3JEs7hSEiBy^q@oOAy7kY3rCdY447CY;4jSqEBoEl?$Oies);Nau9##^K z5jFV*0_)C%0XURc^PdLEw$buE`MpD@Fx5IZPM4ruLQE|-nknZL+WoH7iikSUk_H%XJftrxqQ`gb%%Ob&6iC zrxuGC*_s{h{nOHU2%;eSPNb4(*(fto^Sol0bQL^L*sYJjqw)6c$101IWUU$v&Z0cJ zXB#`xqaQDtsV~RJun1Kl5R662el)dtQ3HV*GT#JZwqI%hk~jr!=d(iXbJV6O0rnlD zj+JrDfAnzH3Hk6}-U;3U8z1 zNQ=n5S0?t`Wq>A!)X0GfIW6yO+M0Hd@Uu&166)-5?zci7p6bfD#fAYM=fUxqjrLHp zl&)s?I_xK4FsNG&7pH}9ma|&0aXs=`KiUpK=jIe`J?Lo|P-BuwlJ&+pn!uu3Pc+YH zQ_C&mrDmcobq%V{2Vx0~Jl~>XVXR}Nf_nF<52Sn;}1hJl>)YbNFs4~e1J)!l8d#n&!gU~h|=EhVRBYA2V3eWs*xu3Jox5;Q zmo%|`Fwjjhtvq<8u6p>*5Gm$w1z`X)6UKOLDxLyr(QJ6XDTG~ITBPSL6x-h+rm`H+ zEra?5Xno-**wFiXGP|#91^fWPOOA5g;wP$B8Bz}-YN)k3jba4rWpb3F+HtS<52W-U z+K`$f)cqIY!|J!A587rcD^(i#LgU;#4jL~{go9$4i)Oz`R@8kzDIt3%TVCq;J;^@l zPkTlgAok83)~{y>h8Eg~;3ntN+pY!x&05@;9~xi_0)gMMm;sIk1d4?+s{>eNR3Uj0 zbu_iOi{SPv^McP=6e0yEkA!60?-`z-fDRe@5k+Jy9Rn?dLkEYz2Ixff2G^GPg)qBu zxCUs4vXf_>aeF8oP5YiblNVY2OHE;WQv(cxSv_j7skGK^@m9QuAHD(OHDC54tc#48 zw3?4EsgGALft*%~&K82}y`2_a=W4LS)Yb3Xa+zL0!h0zcO6B#mC*6D%QD5#!7WC9Xe=G@5BfYWrqW=jeQuDdtD0I2^2I- zy$4EQi^4BDQFEbS>Z}Y6Il2UB4E=XyBA^zm2*QB?Kx4=44(yl?I~>xp-WhFo2PK{Xr}MQ1B#Y z(%%^G{!yFmpqLLT_C@$!q3^+`!+m6r$-s|dNUoz@7Z&+>q!Y?_4|l#k<4fjaep4}U zNl;>&u?g*6eg+9&>N>$uL7KNbVxAsTPkJk}C74sbE7mb4SBm1bn}uYyG=SM5bs%XR zgMu^$o)|;=<}7)iM*FU9rf{ZK^lPO7Sd>TvU6b$VUiQJG7-hsE-?*2ieO|S?g*s~o zzjTb^k_K*v30nv!8vbsWCIZ+aUW{L1_{ewPx1Y{}ZI=9JWzy&uPu>zG>hkQP9E*`{ zn!pJe4P>boCpdato=FSuLjc7r6DDp`*HDwDhkns@F%cj@={p31OD;=fXaktp+7h12 zVOU3s{%rig81?XF_5_pm7}932$f@accp&~NqegvJYFk3v{r0IbJ88 zUt$A%2`oOuwYP6uSJ@J#2v3a^R}!Z$&?Cqtq~$w(tD8l)1Ap|{YBzw_@W83zMA+ak zvNPW~ETwFRqa|U9Ez96A8;@{yc)ERTarYzu5QdC}1rYew(S;D8?r{2-96qj=8-265+r9Vbi(zG!fu;WW<`3_|GXmi{LKi zIWYsFjdcp(q-cR(5M_?T0j@k zmqf>oO-{8NVF)Lr-RSo&9MkRH)~2TP{-f9WgUw>DUuqZPllDIl^O{ZjI0^V>`Js=ju_WBpS?F5AEr)Z55*rMhh&dn&w)tTMa-@|XX5Q;`6k$_K9^k8 z!v)<(c!k-a#LB11Sp6Nf-gFlbEVWAwDH zC6qg37-{wlw$to;4HoMl0WqI{g|z@zVtgKnrnP7=?OE?ZTXtE^UV~9yaXYW;1z*`6 zi)n!aQx!Ro!uiBx8p~-%KED62@2|$UozolB_7N{@5bIN&qs$hAyuw;8!3}q4m z5nY7}1{h(xxZ9u`tNM3~Ov_}_K5Jb9p8%2xW?rF5Q=`LwBloI$tLwgoqSD9Xt%6e( zIr;rR{Va2skJw4mf;poMbHM z*T6)yylWo|6FHcbn#!oz$dcwE)CIYD>d@uTe|p%=vi-RZOOrw!0{_pwIR!xa_(X)@ zJ+KYqnwZC6YHToci}Z<6&=vlCky#MK{~BtnAs{?sy$*z%%t#TE@AiQ2VQ;>Pl}Phn z>mtN!@LuRnF0zGjDmjQ|nJ|4aDcJJc?QLW{j~PQCzD) z5N51G)?14oR(T*U=D5dDV3?;M0-ZEg{*1O#%mOY_T8*8dd|mZ!%Uz_lCBr&|1uv5V zOq>^naVR9vv+A(53c0{E89Lf-yONan5+C-v1J|+Xi2tnKz>6?fwL0m;$a-H_y`lP_E}1ztICf*^$6_kX(p*#H$vU*Zv^LL@`N_ zsG-I>yB1s73Q4(|IZ-{#$loYk^W?-yXBOS76U<8cs%c16&^kd`oeQ znfm+}vdynL=B*3^dm_fkx-n({Zy)i>45ZU1W-lGAZL{YY`6_Dbof|&2An-YN44CBQ?xR^_4=ah-<#)CF!k!7Ei#n46bPW& zsQ_4fId$qWHPWA=y*eLkS|7?axYCfFRA{+5`WQ_sO|#7HL1!z4%TOE$h1wOQP{XP=vFY>h#Y6hiXHwp0-(1Ix{&25;3`tLpK#!m3!y0 zCWdwEDGUsVT&J;1iktd<(BS)cVdf1XdXM^O!DYoqQu0-AWppBv*R*w=YTx?O=fx!l zhe1^y4s-s3_ce%A*k@Qw{PGUXnuGlv`X9O3-=#opBJUViF%FqxZU#S#U_JUB_IUfg zMX!X9XSL8*IpG>JKvU6mWLFwZd$pu%a*TT|(<7^W*+9&IXr{&8}eEtw`eI1of!nv8v zLD2g!Iv9q#a@2A&v7hOj%q}ABF9m^xpfoh~t-`J1?+VrKz2ub(^XO!k+`&p16nz5) zgcS=E(lbFl6fB3*-}kF%Cw^T$*$Cj!IL0X(fMiD&0!Wpc288gnUiM@+jFXhbOzuR_ z2fYf0{WEVetDCt4-blJX0(P^_fO#-Wu-D7HD?@Z26j?9Po7X#4$6aiqYO%RT>n_{$ z(VDU~{!Ih-%y7Am53V{R7BkuU7x(bU>nX)-1i?Cz^YeScyCX3jcleHfH+u|~``Eps zVG`?Yav~*N4wiggNgk z9N%QdEF0XzF+vN&%oB@Fv}$&I|V`nXPiS)P0+8Q7~CPz;?UUc0ds z@VDOZC&K^R5VF#(>nw3FGpSqF`#Qhc0$X!gKRup-=>HT9UtCrk} zXKy8ij1}li8Zs^9j1cB&7%$@0(Dt5UaNyf zZ=&se^(6CndO;`;MQ;g;=piLUOfed3NYL1ov7>oTuN?(p88{7Hib)`$T@qq3yC_~w ztHA@%J=}L7mGRDq9ZR)fr{l_Bsl!#jXe)laOg8nm5YOK4hS#4|oOdM>br`2;w#~(K z$+%n`VE4UJ8=)j$;iUk<8G23&Vh-fG8?kdB6|w%bjUZ?fo@8v!io#WDD6*Ows_x#x z_c{@IBE`VsxEPRwzTW)CC?yDYXn`1P#xq5L(=8yA;jy4Rbh{#^UQ|O^zf>=x4}bAG zHr^|kUMv852c&tq{C)Ih1b4opJsDLb4M?@=sP-w;l0dO|D$X>cPHI%vCunh?dT4A{>H?T4I82*`sM`M(PaO zz4YsVDZ=s!q)*W$3PtkV(ZPi|tj+XfP5?$+UN1qRw{{g5tW)kZ~To77=V$-iXeU9$kX z%e`{Yj$Yi~e5EI!knuq>=!7c#8D^y1&0=?Vt4xyq%@Fy zn>o&?MNy8S2FX45eIL*X8Z7^-EIihBChYH;Elft2lq*L?N!XT1^27$&jqFBQnbuhr zV>H1_3ev)G^*Lr760}HfLrbZMT_&zAXf`gk3vw-ISEv>&w{|J@JG*)HukS%~AuLw~ z#9InPStAYN6f$z7k6;{gz{^0!jVC~x+8lVoyW@e7!KeHMiiYpW)TX1^h{bR&Ck#9E zopAr;9`P`OCNtuA&7WO;1RyJN;0gGk?N`R^aN`}-%pC+DkjTb(Jx7_>9S>IvV@#>o zgm+>#gB}(}@{lhcqGMP}(QGL7W*{srv2iO$_^&$0W7lrZu@wbYagF*G3>g^$=^jCf z5-b^s7%r9tU73Vo?N!NR^%N(0A9e(xEVeT8j2R-mkVyfH$%_K=ea?8zBjk4vqIT|a zXPZAgkM}el(1vUd2@ec9vljL7u%Org{>L8AXvJ{Htt{lqFjySNbF#SR8;Ec=J+N-ogr*tvV3^erpDU!lumUGl}>=8C}-(Ir;$?2 zcD_~8YgCH5-8#xF)GkeR^ZjS&H6I#>fcNh%B*F?!A$CLsek(L$D!W5~Y&T3Ykt?op z#RzRFk2Egwr^UV_&4~e$)+*@}B+Yv?+XCWjh*w!X8P(%1VdBp#YB#~&-X4AM{ zsI}%Nha%)`=rZc(h}5xB-Jm?e&|zKsp^*cD7Q_i8@^zuvV%QO8V=R;rFHtje*=Fc8 zxSxy9*eW)x>xQHHJlki;SEjtk$4hKa*lx|}C>rSOHxkR3s6Br6`iJsJuy`o)Ub;N` zl~W5)*KROAaoh%voHPqO1dT|IMxI1hTXIM^(ru2?Yc z(yN7kimw!Ix&olyWOB?-u(p3wrZ-`ZF`Bxkn5(_<9=%{JVO&L$`s{>TNZSr58~LF` zmWv;Q%nRu(Ei}&rJszi1k(rZ=sU$1vjX^cxgL#+xG4s@foli)jK3l>p?SYF;lM|ipX&?(EQ>X znr4{M!VQ8yXyA<3w%oL9`A;{RE_dF|1ocgirRUMJ zuKaAwxK{<=ffuMpA8n94uoBi3#jr_pqQnMAvq&|NJoShcZ(%u$LNmOA;)(L_se)VK z-4Ycl@JOyQ(tPeHeIEwrNhZe}2Kr401(;r;@tWMaYC`Z1_9zF}=NOlYr(Y{-Sb96B z1YNTZrs$qD`sXD{igH#_3#`DAtIoGVIj)ObUF769`R3!xl6(lu=a92r%;_>tD?=-` zjrisF)y5h*n7-ozzBa0d#m%-oobbAoH`U)Du|1_`=nSLvbC4cv9$o)=HvLU~F7 zr%m0q3N`zu$pwE9ZO@pL(iUDO1mBo(kuVm~_6CcWbAPCre&Qv*vND=^T*^r(Q-WUoV$ELa+ zvTyT)97Im=flTpfNaS3L__{lOt;Y!U)abwx(NLv~Np-;%@eyQb|EZr16(cjt%+n+# zhSXV@pf;VNVx9K5C3)y?wAHr z3U#eR;!KkNQgjKYV}-Z^F8~{*Nx!+Uh=AgwWyuR~C~V%?o5h?YGFe&1m2wypY!)uR z$j{=SuRw=0CASHWb8C6UXDpwh!(u&ecDcY=6eo63aTT+(#KF?z+0Wu$Rfw|RMAF3& zrB%bLa=YjGhcz!5nRf!3RAo2Bwy~_X2+R(t7*x0tB*u7CH1^l$>5Dv`u^j~HA8fvQ zs%^RD8BWxySN(X5CqkbUWYj}aEOUhV%yVkvwAj%tCL69-o!Zq!!GCjs$IkmMzJs`0 zh%H+tZyxLZ=y{l6t%UA7N*XRQtEauM060L$zf?F$j~L(xr>#yJ;ie*5QK+0K@}a89 zhW_D`iPngMATTy>Pe}AhPbmXpX1;1WCdHDiTv383sFr;jpqeNfm{R<-#Lfs-#$s~R9qhp3_@S&(rO4vB3o>>OME$}YG`*h4@jAg6S z3y81r{4|~)UvD^Mn~#Pel>8k!?)XqzYOwyEVo$3f54#X zb;Ay)Tb|y}hxcG^$-8i0e^K?RKkod|L}Kz;?mBhkp#@g}PKo%`L{Od7C9m^*W?B4eR*^S7{7ClJ)Q6V;ox6 zK6w8NVf!`yBhPVyK*lJKQi6|7_pE@OmY&M5PyUadpF`&j@?O>rqADRMKNyjx9rv7C zsdB)I+H~|#$M65ST`NLfj=UAhL~CG5^p|Y5jzf-Izy`UjbG8_WUD@_f`q@smfm#^2 zk8Y+@LmFOzR31Yh3WA5v)F}Px3`HNX&NLNqO4vWWxeDg=YM{p6$y~{+G*^C@0@xw# zCRX0^Tg~!?HecooV|E#F4nK^fnrJNmrJJtzt*#Nu`*VFL!Bcqap_adA~5m07@)YLS-t!U+}O5 zYNPxYJfjKKIV>^u+45}Q{RozFh!8ML%Sp{>rJGK*`K(3+Rwigd0{M~a$5-@~UCz2p z>1A{%Q8!O4jUxn~f*9C(1IsT#mr~3z99HdROUuwe5~^4|zt8#m zV~2Z7t<=YRHjg%ew}@;U$#M%&T?Fr2psUHI@iC&*W=Ji)fkHN%e;mCB05)n@SAjq63%xBbKazRN7}S#&;N z**xqamaY)eYjpKVbcsSnHOaYU8})_PA(kMBvoGXLXE~MSAZZax=J4CaP)TcvFwOqj z$Lh_(K;oU8p(U?QV}}NwLhX`aKV3@yA0O;&RlW2r>-LTA{IS)j^3K7#)?(e;?_m{F zs!j_2@q1;P#{a14O8l6b?Y}C|OIg^gI!T@zs*9;$4^VB}At+yN^N0-oZ$Vt5$&Css z_8jMj&^a_c>Qf{$q`*%13nNm)Z4+kUIqwAB+pT#8cj6y}{8IV}E7kd&vh`s9LC&jK z!OM58*TU?KOA9d~EBEfULXOLzHtbICVWVz`Bxhur;9HDmKPDtG7bwL0paZM3#!+L5 zEVpO%)_?50T%Dh8HNDAf)IaS@}Y`@Byaq1Ulm?S;DiRb04q}Hkc}b* z99F^{5-q;kO-3<*>>lSK-w#K=PDYlSDYQ_b>-hgFMIjJ^G#3|0Pr4#>BCUp!7VD3XQG29i={9zbs`{`g zqzG>~wlCk{fv3Bh&n#)&ymLf%*R-{z5{UcfYMPRTnV{dF^&irhn!*?V6xuT4B6=;v}-)9e4ssJ4%E?Q@rQuwKqKaLw96y*?J{VchUPmFbDaMv} zAU8ixG-nZpz06hNNM(da-aYP+3wH0Ea>}I7{ehA`u;ygaZ@4V@UOJ?V&Ayrg%pxOP zYPXe~KO|@i@MutBmfbcf)|$$cx)9E;I_(bP(Y^1^ZS?jDUms){%*$MK4NHGH9A-Rx zcB@r4SJbnfg$z2fJAwFRU)F-H(((P76*S@zyKW%pufvV9RnMJbRO7c}2y>u=?MwQ7 zw!d1Ztc;?By0~K=8Rbwz9>%C!nY^@&s1kWDapG(A{k-K{Z=te1bTN(Blx(;RdOV1> zOnGI%li;y>?ZH&`id*C2ngUe-Kl9_l%puslGBwR{U4Tu#4rp*?9PA7MGs*9#lO_Pl z&DFuugA}>HVP|8vs|B0F;1bOi)2 znPlMqoouHBYL0z__uVIUm?Q%0T$6G`#s6L4u;!Zzw$bGQaK3j0pIHSQwcfaaCMg$bbAHanU1IK*$Wtn$DSkikKXz|pxBwE-5(cmrT5ib}uMdR(zn z7bm1sMSeh(d#6{`vP4*bGf<(1N0C=E;{pcPJcFYzXtr|VGz9PnfxV$meml&JIpB_R zEFn2y%#(y?x$PD(?8x?*@eY&xH%PEPFHw$9tg!u9`0tdvutOJE0vZe&Guw-cf6W^> zia6gDR6RmMpH{nwKZLe(Ku3=pYpaidnt!5%``k$%colydQ(--L&Un_#h+Fm#Qih5k zq18SpkGYJ4^=(<$lVa9x9%AKR)&K466MVhCsAD&7dd*(=sR-HTj}+SyxVV2=Lq%=}ui2B&hfm4dYHlPfiOe1t5>(p63=`kdZ@AxY zsto?V!hs zv!?mIcN|Od3W+@?szGvFKm7FRl zZxa{mzW3h8Bg7x>EF>Yt*Y;&TWOONNhzfN!V$IIfT4k!BmL5m>x&82H${3Xatv^}6 zb#ypz03#S?e_zD?~-3@wc0ffNnk_TUG zQO0N|R7?Rtr}f#>}=44QKp%&M%yJ0w0}*3Vw!l=M!EUb#U6b;=deNQ#X~;GEEHY$cZE zOMtrwC!Q&N(Qv)D>7U*DB}(>nx6)c*CsrR-pem$5{B^pf`Ni^OrGGyVQ6QA_JM6aV zDU)(a^$V5QDBPI3<+%udp>{oXu*0Iv&p~HStAI_Db%Q!dcE|iVje~03L2ZCuuAaVj zvsiuX_&@J|Ivf(h~<6dNV5Np@DXDuxm!whd8%J(y0)Y zEoD8HOumxt0q_>7dg0JWXYYi?{Yi|Y;y=32a=eu0q`TmInZ*yD(6}k$QN^PyNJvVE z;A(e_(#qC>Zt?* zi(`x>PGuDgMhTW@>)~(-)2NZC`Ku;6Qf;CEym(I!>@cH`uGTnQ{Um~5m4C)Uj-ik& zPe)|(%2(5R5A^i2^O!N}m~? z7nfo;^UIf`h(V`B&^hZOk;%#PanL)$X=k(PI(&d4bdthkGL&KX1=XAZNqqjw#BgqF z_ZK!A0Nh7>9khTgHA3<|$m^q|#thqFtd^KBFW|u=ag}U`dM(TTZT*Gqo+x1SWD-b-X`LkWqI3 z)oe8dtL|y8@Oe3hT9HIG-fdRov)*Lqq_J=_PTbDjyU?M$aoWFyKkNgy6d{2$- z`8sE(_}$b86X|n27auvuzXs-j_0v7dR0#03iDa0sZ7F@yo zbH3g1nAMJq)_lguNViLw3<;wWU-n#o+&tjBBnyl7DCkcC!lsEl72tv}Asm|?yYAO6 z0isCBIestWIQM9eC9<)VBHQh65|DKniGPR1fs+T++`xAXz35w$U-G)mCm!>HlSJJ` z1mTf_@*VgNl%+u%nKNVU9A-Nk2Wi`XpmNDMGoUTaTQ^vnt*x?iUGdI?T<0ILUBCzI zSapO2PNi*o-gZSd)N{ppe_l7lPjQ})ni}?$EPb7=uA4daD$DEg^nT8%NDdkJ&l}YK zJ=N|LANjbYOsq%1AG58Y-tZw>s{T1w@7@Ll=|~AvIJCgy=l#N6&i%!Mk|m)(~3>w4BlcR;M?7^OcqTx z5f2*)C+mLi$ID?n8y7qS565SxegEt=-(O@firEv$gGPTi>ixVa6R1nQ+3d$ zLt_V9wV&oyyh$68qA$G0;$N~zL(yiUXmr-6Q?`x=N!GCOXQaf7;!}DLd~2=cA5mmN z0Q`evP`oREod9n4VK2g?<5|LBKr3bwKzCr;o`t_UJvyH-LZK0&n)5vBXZv1XLu;5_ zMCE|C$_a41!C|bWVX1L~BF;X8?egrKak;sy$S&Ct-3#a3U_kD>)vFZmGES$Cq{U1W zCdH1T@f@&X)HldH=TzJpHTm655O@1|_{5Q0vo3Uj)`SlSzU>1yoY+Ed0J6!fy(|XO_;9pttQ?f>Mw6SJO1&M z;pQRocAL|44cPI86%vi?9MuKf)+#Ao{p1JPp)8wj$Zf{|GQTVXdStq`1fF0UJKnUO z9hoG3gFi27gz1j@W>d!!cAavl=GCbV|W#FyMl#zL>>iv<9|vl zP}BfO&7N;2EC7C$d=u`OGdxDm$#{oq;a4^A6EaABi%V5^C(MSiNPmpJQSy|h|8q;4 zw_kb$DRa!dT@Lf1a3U*uO*&!9L%vFJCr4=cyOLG6#HxZDm99EgK^xxHT~WkPOc{e3 z?b@3De-oo99&`ZzH-m7hB$QkrAY}FG4;X|`Hm{>K=5Fb<*x&{Z-@Q`=E@j`k|Nfh{ zfOub*AyGz|m~QHa2rj|KcpEt4ri?r$H!1!GGV~AHU%QtC>3TRosKi_=9{nGkBD5pj zx{YLD0B_$vo@~cDDT@(RA74c@CWz+QYO@u_2-1TpAdPcMWti7myH6Y15;hKuMPP1pZA5eQ0nzZWr4 zlX~>3Jl>Nqa@;(KlyB&S70tJKJj zGR83WRB+*Is#!I7-nIOcCeWT!=~miJbX{ajjz^zt8a(CUTsoHI zyo`?b;`Fgh1mViSLt%`;5@0TW$rjFTiepJ|PhR#u_9i-)d+tYRvRZ#bC+yGe{Q#Xw zLYLmWU#2j1q0*Iz6aMhfcm$l+aCz%`=M>RnDbN(OsL}Y$lIkc; z`>dg{LrxF%v_in2YWdm?t_0Z;23~kdexTPInCJg#LqS}&La%AekN<6S#foemMcM5* z&X!@0L>BNmVixnhYbz0VQOLa(eP+&z`4Gt$?n(g`G-SBhkx%{v7qr;N&s8HNASU)WHx z-PYq{QhaauTv5h;Z2 z>oUD|p|+cKE0NMJxiB}JF&1`x@$bvsw?}ejtw&!hlZZ$p8#fLxQf#YU6sp zkbd&jo+wfI$^&mY(rl6DB_Bo=j`pFsc=PrD>oJ+p_!+(*wuenyjvA9EGD#1jVDt$c zN&U(b$gq7)P7RIZbrdFkZ;IkQy10-D%Q2WxIrBfQaMAQf9#NzE)_bi2h|HQ|63TGO zDR&~Iu{w}s6Dd;XED7mw!FJr@uR-T=US}e$eb*Sc4Haopl*2oVFy9Y_8VcceW*IXhES8e6mg{jvS%p(I;JM_4&YeR>VXyT4CY+ z@>Uqm)QM8^gbvPCf1MITPM~I;XkN*P!Wvb)VcV^bRM57i`MT zi4&QOg@J!nujOLkB_v0OIRh;p)frKxmhe1_Tdg-;_^}E5KeG1A?`mW7H3*!k*sUcv zCB*7gCmV!2g$@{wvthNjmdU_#=$fSM?^XEd6_xN5o?;!wDrbjhsV}3b#O4Kn|2;>% z23F->c4KRePug(?{y@+dLic5;<^+!;CcrcJK@(|*jvhJwOnYr%TCOhYjvuB}EO16J zF2XYOgwaTW2I0`WkxyO=S=yG1ThQwcyd>cTGld7}hN|YMMJS`l{G7JDvvE=-wiULx zf44X6p)}YK>M&Z+4+;rA;Whoi&MeinGzR9Bz-Hsf5K5hV;$%B+=4o5!U5p^XGNGWv zBdyCap^gF8^ME|O+Vq5Qzvf9RcnN3T4k!);iLia_$nxoaJx|Pek85XV1~*)cTX%ml zL>GElH_g53N0%$kN?u71dI-8_$|cOfp4SD!YO-i2oM%49E=|%B5F2`g=PltzXBul0 z+aY`~9gwWI)R%?524u#dr3T25wKT%VHRKg_a%WkP_y`giU@{mNQvVq3@>%BY6_&2F z;)%F~KaVdAQ8^Q!X+b`qtp^#b_el)fpzI)u8vk;w#Mzj+g7}A3=QVfS55rIs+-a^? zZh$F=K_p;-aex_hV2ROlur<;ae$koM&Y++R@Ww$>(M{ojMq2d5HCz&Y#w#6yu5g&G zIPg*<{wRvl;tQ=7oY&w4R4`uJcfh0_K0isM>6KravO9Dl6hO0ur@5w3r4X{_LSCPB z&v$zVc{=z}LKLp0gy2g30lW>vlB85{L+%|<{TeBWeNTdDT0#`9Ifq&n^?k*>^E@eQ zi<;vX7l-!w+NST>2M%+&L^D@A6@?u~M2ln9u@C_mkIkk_11P?BLZn3tXK}#bgb^P) zr`Yh8@ot;cqCnUV?`$77W%8bN?ltH#nuM4su84@dJs|Wk%SNzLVlA#&^8V!5D7h&(1WtV zNBcT1p9})JGqObTn;r?xsHd@Z#ULNVtsf}CvSL!VN!zUK%8gGHUIA~Y@kaN!T}x9m zGri}1v2T{Y;Z4HngNxx#NHXT!GJNKKVCJS-fmZ*|$nZNtEEiK8$fSZdCqs}ktW`Ol zXdNg`yE58+iUZc5MoGO4l+Hl(U?njYQqi0!z@{pp*h?iKB4j4_ib3+N)06oJ0vFDVY^u>PWZQ}L1x0kHDsydY9ENeYG;Ql+c2zuPk z6<7u|;xX=A7@1AEfS$tU+w04JV7z)76Di_q5#F*Zb6#Jm#LgJFn~AzV(eko8Q9LPV zV&st{`<2}F+1+9)%pni?V+@#G%Z#i24Ga{g3t+gWRVaXfGr61nuc?)(QCIsdLmqS& zjI^#U)j{{h3P5;l_feu`MrBx|XhI&>=;A-M`-dMm1ae;h$tn;+Yy6P?`1iAqACqMf zQvLpk4qp}6XyAf3MZ@kI zCDpP^>ozk|ei=_>PEtHT{YydTsV(sHWjVa7Fd@cxTDdXs$X8NUXv7%o!1UT!Xb`2H z&$GlFxq^Oy*s94X-{>|6{5^#g{MbY18@81?sCK87iKW{lo5|cr%nei*JBj)d@&%8m z#Ve(ck(UQW;q$?<>WmDE9a232uw|zI^}SHZMu4dB%v<8)8hM%V8M67JpG5dyu?leI zKto5Cklnq5*@`-H0U*bn5u3t#HH9~kLFkEaN*=**ls(l{jr}yNDun+?k1gMeV>gwZ z^|+it>#A&SxE6d$=_*QL164;O*<2M3hTr}roAAQFdwcrfHJ1)IA z?H%j}pE^P}FaYD(igsqKrC&4d#dGPOMiu;+9o!}WDxF6UVU5)2j5UivtR$uF)`-p3 zT4XW4APQCI-SJ^~F30qIT`Ag{SVRHXvU&yTvHm{y2>9c>c-XsrJpyu$tCV+k z5Sv72nvSc8{E#06dHx=C3Do99!q>AH;2=x?A06AQA~Z*fN7;yuS^VL$1%LL=&o9^r zf59qg=Wla|KwSOjyw?r2%~aQ z4M6+q(`ZV478C#!`WqrZGZ$VnA(Ofe5PNly6(9l{HG45fT%f{8PiJdz<|Uz z@^CAzlK;jm*|QPUacMNx&Ch{QOPg|cR1XK>n*8l^R=0W-26CosX`Kle<<`=M31UahaE;uPcpevKd-2H2QI ze*G-Fxk!ACss#kF5BCbMJYZ=`bvW534jFU{RlcZRAyhmh^eT4V@N9Gm)S`_+nBh zIsdWq(`8`=)Mp+YZX%!Eq8taHgFqJOuTf7b-BtP9i_YO!%kN^XgdI_Eunym^K=p-` zZZ=lH)vDN(aS0+AjNH^;Wu?`el4J}pJbh1~l{7W`upWL+8ZTZ6%JV**cii^`{+&|~ zp+y`g72cx%+;3(*eNX&d09sk(RTxRbvs~L7CNZ1&ELIoIo~s-~$1RFpt5GnH#0a|G z@!-ZColLHuZw9rHmIdFgVABB>&)y*9MNNOj8^Mf#i<#!;6%HK;71ppT1bit*%M}{s zF)APx-C0VHrs#&&E|HblXK2h}nO-tB3G0%oQl0NN__KV}T`vc9=%JYe9S34^JqkCgg{i0#rzQEK}yAp$Hxa4-o`HGDsNWr8ChJ z{S%zDlns%ZyaK(Py0sV%VQ#aM)TD;@J^M)2A+L_mo$YmM7cnt?#D%IHGUI?t)Od0cAT$$j#IeB{=vA>TYH-c7Ow%M4&3xBAH$cp zNv^oTy7f^pcG%Rk0Exth=)jS=P>(0(fA<4|!jE2=C>I=-0VcBK$*Aju=8&&7*VMv5~NIU=SQ zZKFno)X>!8lI3Yw+4vVNjoMUU5TP5i9#pwFj07O$H~T`p_{ohB1c8t1(eUtikyfIz zUe^5=XOllu@$PXp&e`!6!$%o-{6ee)Pmvg%Vzm>T`xoSZpw2f9KhVr*hVbilY}DF zAZrDK9#f3{`Zbw*YTN%Ky?QnkVKJ~YvOd7t;}0v|vj*>(0yh0;G`^t@f0VU-sVFf- z-kWsTpxQrs6xoY*_k0y2Sa;KvL%DH-Yl7+v=~z(Usw?2G@HM$7>VF>|v1~7(SoeVx z9%7(Z4;<-< zy->7UuDf%$1e;@o%w6W&DMPOi6FC2DKBM_h@w4a~EPXXEN)`Bql=!WPC{h70n+;Ca z+Toz8sLqQzq_FztQqZ{7v$TpfVsT{rAo5f42qwG6bN;Qmy4Up1z#<3_MGJE@_CZ}A zj&Dc>F~(aOazH*z6g5fqKW)A#l;5iaWd85rllDseZ_(>e9>cI3cK!}r0|z|t>}!20 z$u@i56bP?>N6IIYx74CXfFO+8WKw2bQUak>u=%zK<^GekqHo=jIuFJlWTXK|KD|ft zV@V#$UnBw&YQlnXKvD}85E0C>U3m~oz0Tj^vZpUNk$h#9@w;4nm*Ui`kpV-8K$@nb zSSYd}_^V}on6IcOxsL=@UCDXPHAY@!qxPY@dNr@|&q|(p2l8Xs+ylze*s)%_7;`Ag zPk%ImeDn|E%uHq$Z`mr0YMkq$b9`UiUUQcNkbyw zk>eDEHBl{cZBbxoHR6_-hx+cba(GbFD75Y_22H?mKNLfh8PgW4QIy+wPFY{|TD@hS z@gHi%EnTeQ%(lU_kX&7n@y*qOQHS+YapEnz?-wU8xy<7L%SNB#bhSg7wnUG(kS=-) z}&t++-!KkTy<+59f;8H0n&hl&~|q}#XR;G>8gNlZ7yRE3Km{y ze!w(oBAZ>k{7;&94ML(|Qb?XUxcx0E+@?T4Qbb=>$oCh(xTdZeL%yfIjB0DQzvC~w zDz757)_g>Hj`|}5>wZ%E$taXk6vabz{E&U^F1JittX#7L5!8$bemQfNJIW1h=w{fy z00U_Wq~C%){6M$%3>Qf3dUP`b{+>UO8dKFz>+ z(s}h5*$x^O(F7qGW~pjloK7{k&sJ>h{8ntgpJ9aP^;;fVLHZ&`Ter@Qfnqfru1jR7 z6vu$p)ypvWFm1;jdhZR=_Hv_N#Ng+9zmNB>g<#tAS)Wb*E)Pgj=8P+$HcZW{lZ(ou z5s<-_9d&i1F^lo5Vm3ik#SiQ<6Ilvn4r2GO{1)r872Ex}Wfq=Gx8Ef#DE6oc0)^Ns zXi6K5(znoqMlr2WQtN(J(3%?aA!H>en*G+TK(ODN2<{;YO0+eRF?dbIm^)l{MXo3A zGk|=mSrc3Yxi z0I%s5guiLSHj)#G8<3`LFy5*ayZs=|d^^2=dEZZ&LwsRgGLT|6lu^j79;i_a3Uz{+ z?U_|iOw0MF#REPfAOMwg3)uL_3N2owsyyF?viYxMk7dQ~WAbZ3=i)TP_!SCe+UsfY z+IVYCs}{Rj=%E+AR1S~IENBGxR?A>C9x7TFWrAcSLbR-tygXI>FLZWdPYV$Woqk=a z$#NNj5JQiVV#(Prw7FvJoiDWsLs1`|kEShm@vBB(2`t~phJK;(0F`9NpLGwPVdl|w zBVo08WbMw+FxOE4`z^{>t}>!+kCX^=n66h#G&RU-m|Nx=bkZf%$b>Mcpr?~QiWB6Y zSNp}Z(>OLkZViv3=Lxlb;aC1Oh2l?iisHX?3C9R`Ao-(ZNx zC`rK}Q{=Xh&ly`st|3{!$q&gCEO1Fs$OWF3RC(8i^)D_0DuJrF>p3zV3f5G@;Wp%B zEXts|pL!#Kvhux=T;mntT%^)j>!a>%3r>j7aPAshj7+GgVJk|#E)~4O!90wY@mUc5GB+MutSBuH(3u2uj z28@x$_BO^GV?Mt*+Gzx=JIne~r67Vqw3IY1XCVsz-EJj;e!r40_Z{n2Hs&O*Lt3cO z__P#d>V#nIhR`#vjcCQ6?G-l0ggi;a9p$h&Vt@Yu0)ZIgf0Bs38ddlq51qHHl>-m) zmygd&2BRRBE$WfO$kdzOR5oA`cSG(t{;pgxTcOsxZMAXbL$z>zXVCxg0rWURkkwzs zeqJ-|stt1TLPhKPzW-s>0jRshrd*A^(*kmS>^!Fxsp_f+w9!06rh36n67ZB8JB!q66B(NG2f{iKJDgu$`_&W_4zTW}~` z-9M7hk2Vg#Kc<4+#jHGjm5E4ECzRHoZf#67oT3#vK=s=juOY@Dic%r_7jYdgALB@t zB1s_(5gfgQ67AYs}Kt6TZg%;b7!nH^+DmR(0~jB}!!i$KbySm0Xpn zvr#e%B9`L;EO9ON#H{^!aX1tAeI_zl2~Y)(K6OwUYSwvke1F`b zd>;egHA$>X{-cJ7_ICQq8x@Gjj|^fh3mH$c*;h58nWz;%l+-?C=jVq$fVaKTmk!rs zY9BiuQU5X$IMKkk+O|F&lL0?Q8I%O6=4p`Z!A0w+s*0keS~aEd4(*}m=_mTIa*y+V zwx?ZZu?j-z#^?frr7$0wLh4Dn6?cfnS!Z?u6fb5(J87UCZ_!gwwM~yMe z&`iUosOaWveaekJz-RyTlQ%tEd$X(Ctq=60?sgqZL5$*+Nk03jE3!3>55?^XfMW+z zuPD}(N!Co#YU_Hcm5iHkeDM^bfw|mE(}G7XQ0RP*OT7fy594c*sN>f7%4Yq>Ws1@15lTvP2g3uGSbiSfi0Zbk4xr0$LfM4w?_`HrYatn63{E{2a}6$WXA=_)Bji86Gk@lPJ_s*a>1?A zuws9lGlAsm3A$oZ+>jR$5B|nrfWU1EuDSlnG+3Qz`?&)hZ0nClI(g0^z!mW;rd~2hSHdiO2G`0ucBy<}!{*_*S?cPNF=-=I5(J1q@^pB& zZjbX0a8PV_RwtVIPD#A#q$8#UucY{K27L>K{S+gEb`b?vFxdEK>l{-G!6sv*4cnd8QTtX+KEsKfv;rpXXW+a!}TGUhCp}I*e?vByt=~IUJ z5;?2<+z4vx(n|~Es!ENc_znsw79xex8`?Wq>Dg!Ww{z^7Y+U2KjYVoThL)#R^0aY< zp})H=hS4ON>17wzPI!xtL)Vzmq$!oMPLx&)R;*AP#qq*AWMFJX2gF#@h`*wRa!E(L zfpxw8BXsqD5O$Z`@f_REY|c}FFpK(5dCT?>}-etsBj^JC45>US6%~dn~^wRF+WKx2jvfLG6qtzpfWx-NW zaeB7))OHIPee5KoiWPLvG{$o`C$Y3zd4k+>7qHX1rau1Ixg+ z>d?yP4g~A)8IvC*r>^^Rj?WKIRtC|(6z54xxs!qb`ZG8c(K0J8bF=O1NDG6PGk>Id zH=>9|7i71+vq~=ysY4UnbK|+N${IAuJ`|2{%HuRTqw6p($pa4DXzGPfI?*UbK zj35280S58NFYWD}-*+H+URxH|UH`eBOR*TLC;9&oHFTIQM+Cp+&@X@kg?VJT=0d{xJjp7 zCG&(u)fd(A^1m;^@Yr_HY|y!&*U$R_$mNK#BUBq=d~5^q%j}L$7RA0bgLBFBd{(Jb zE}wV1Bmr`moB(rZdh&1|;n=aNZVuFlFWVRC5No<{9?EAf>>hoXHRqVw9z-rvDdcR= z$ZKV2ofF}+e$Kv>O`om?RKq$@0Zu>NbF;D|a)u}az?90yMy=;cFL zUg$XbBI&~k;`EuGS>r?NUDhH?Ni~*7HuFvMGpMqx>Mg}q$w!~~NcvKRJ^s+#pN{(C zI3v(h2>8tWl!##~@T2XZZ^Us$$|6ZQegEV{)k5#=g9`r)WOWUH+?)oTr=mY2qb3E; zwMSDROE)*HzJzE*O#m*g+d=VaFw7`P#;A8P1>7jVhpH99eW$PM}UBkJtL+XgAQ420A*7hjCb>4I9ag`%7JIeCb%9N!QN2;1viH~b!3 zUAeHA!GC4r z)`3-EHNfx`kq#H!7Ug=((r8-wdb-*gmgaE2dNK$byKZ9^g}m-Qvk8Z?+=&~fz{0(Q zvlcSOyE}5O#X*x__ja`_7?Su+EH+(R9ox*9L*@9y))VSO;XuD8*hzv4vq zL(xCa;hZXVD%1W?*^5V98DO%|Nq^FTLBH0CV^kiS-@Lm543 za9C;(K%r>(o><7-WPB)8b(-0hOx&$U$I_LD4Q>(hv7A1!U%s<17M^~9+AcM_6Kd<= zqkq;MMvex(GtJW?ph!_lA@7&`HFiU=TuUAvZ;_x}_8dGV4H2hqk7*O~D<0LG=N2M5 zB6@{eMt{Wgas8I*o8V4mR$v~P%T9|U*u#zR}3gDw|A*SQ3`KMYk z*}`iov~-|7W2sSe&5l?GMG`JW)lt3Ck65b*>MZc~gFz6O00iUO0B z>)a-?l1l^_)1Qy#doBP&xhDkJI~qxyb?<@48Yh5UN=18JuJ}XE>wEGpHRyuO43_UFattJ2-C`O`U`dbH{*t%A zFK3a;0c^ppK-f3B z!nq<7_kR00aFNEBaoyqqO+~!{&s}X8W{RUW=^Iv8`t^-6@%hGj?moJ|IDeg-Jxs>0 z2Z>f3|%vLbr~j`rzgl(?0G4MK>D}h zX}%U>`L1}xbBY#$@>)P?+FR!k&p8Ca^f0Ad%;FgXboS-rqMPQp;w!Ihtkp-5w}FqF zuDz4o)M9J7G)qqxnt_c`^@&$aRW{ZRF)hue^Kfiv10;!j97PPVYpHSP4&SZ#goz6t7R?0D2{%=qFSs|DYYqmLP+ikmwo4Jfa?X;e=1VS~#f zTeMk4P}a)f|3@Ls`$ifur^pC$hrgw$`8Obm;uo9nJfX+#efmO+d8z4H#2O}c@j@}) zNg0JM$uL=;=yY&&)pdEbcd^R?NV@S{*c%w^iDYRR>R}IsNYlV z^}e_QHY%;pEk2@10JcFZ{m9rP{f>T6&DQQSIG&}418uRAwwfj@?%87qg@&#BB>a^f zOai8dFX;`-)cc!m7pqY8%DQs1JqEvrzOzkUJ^A4OuPZ*5830E>xWAS(a#p!XK9cmQ zZ8?mfshu(=Qn^?CuPKM)zZ3Sm2-E*5U1DKr7WnhUQPhqSHaKI40Kih%{AS(+!tB%W zva-$LBZ-7XoCQM0bUlpHBbrDQ5N&PZo$g#iDAXkEaf1j~0}?*$Il&rB6s-N62yO}x z*TK`mtEvT;8-<|0h%qZ>otMS2>aYb5ws5fUHZRedVJgDvTFS0s3NvkoF9t-H%S`Rd z6jNrjrpneJUr@w@dCW-r-!S{;O)PwrCzU7h77kgTyGlo;PMqZPn zKRa1OTFLbZ5#NuO`^{bkT`#26)^a5ut%N^$TGz`iT@W>9;_dVVE4-&gbnPKFd2Tgr zfhuUOwyMMvUVhnePc205NhR84KjcK@0D}s;pswyFq@ufW$sNLesQ%cS3UIQ}fby_K zY*RFq*kFVWq;Rl%e6}WY&cH02^fbMk9ie6xPP}|mz8qGF!iKm^!i~e&IW@Gs`(>^YI9-dNHRMh=yx_W7kmM z+X;6c%{@5;cXw5dWVPDn}cr;kZ)7w{X-as9j4x zq$T%)8gm|Kkm54j7gwG>&Dmqv&W~6dm2c}m>9X;Z5}F*pF4B^k>;Cs-sf{(X zA&WUOm^l0|j^8My%RE_d;-fI?oPD>0X*ag1SPJd8f~`#ZKC|Wrgq1Pm+7qvBz}+N7 ze$3V}{vx=vf1H1r$Azp5fVw4HSViO>kq95967ZZjUbv;5T zFD->yO}G%-1v_X1#Sx6rGufMY?Or0u4hYMkgb~(n^mDZ@((*VqQsTH78jMyrUF2Ab zMdsxjlOZ7Bq47E!=Ft6G0(nyKAriC@>Ez*8%SJN6WtP=wd_6CSoFHS zy*48mO!;2c9$YZ~QK4-4`g*4ov7}#Af}QRt4;l_`+vzCLQB zYvcDueY4?*9r`s8)@-b&%Nrn_fhsGoQSK%fFUSjaZ#l~Z3=B#^nS#91IeF(#O^ifo z81}Bz)vLZ;s*ql5Jr0u8ViP>eFs!{FNSN1o08+yb6!ILE12o8Bk%r-i=nF|eB#Ll} zJ;Ph~qMLW}wamqYN2*SC@+aa6ixS#nsQEJ=*^))KLd}ufzuv$@4}o-44lUSPTng0h z6A*-(LhktKIRZB3<8&(Lt>d44er=~5C{W(MENVi-}WqC+q-|mNg}3t3XhLyiHC6O6VbmiGPl|4dbRHY z8I_>`H%{#ryoSfBl#~ieNk=q%o*%XT{6Ma6O{F{00GO$K(S4ofML8&0SvJ}5E1QHI z!vtR}sMaW~r7BGA*uQo)7aPD$h299J|r(+Y16TAG%iwqz7eh z!q6${S`xOxI1B2>5LK(p#B@f0m|&dp+!`IE_s7tP3F(|#%fV?}f?@M~KC_L>I@;0E zG-)Kq%z3w?j1hd~4^UEcC_#x&UfChf1x<1fRu+nc3UsL|urnuU=f)6X+Bmb*cuWcOuJrMmamDljgA|?fnU`ksK75q1DQG z#RHvsC$|H#WB>%6T#L0!%2^&VIy^Fam{S$tRe1&Lh^l6~Dc*Y1PAnqnI?yPkz!3Se zgy`$Xdsw0Ge_eKK;OCJ1H>MGUbg)FXgq|FP+6M6597B#yF{qWkSbk}^g9Y9mz_^V) zBf~yet&|svxB%|E=BM9WtBJ3f63p(24cEY+of`)}JIK};+NLrBEYP|I2Nv0Q>Vr>u zsu%jN7vr5wOohP&*d>%g_O{EQ8iMTm6<*)R>r%y*JF#QaE_QYolY+jJyGhSA+Fb)tJ%HknR6YKva62X@NW z@2->i|M$dtJ>p1|Vr3o;O&X}IK|}Jj-z?&{)>OE>CtT4K+qo7^yppy(a(9MKd-!%W zM?izQnmE9(6tBBY{qJ=3yw*j(c&4e_u7G^fHa6%MClF`Il}Fmm^`Jhdid2g^Twx49 zhoA=I2+1D<)I|`)U93&Ox%bDWx!(>8DYH~9So4ThWQc0UKd~0DfnVQz9e}E5wMb>Mm|ghCKea;Xz>d506=Ng9}N{(rbK< zjR=oA0~4;v@2Yr@-#7BM$0sEou(YrI5Fae5A(qgYS~J2f1hrbS@h+|=N{$&-@+ZLA zao>&0{3W8D`=Uv{oG)`Gu1f$^YN6AtsxJ2xZJOvboF{aI4+IF?iEoIbSUtpRzG-wb zbp2xA5XFYptLmkLmlHCZX^fo8KeW+82p|Q3t zDq*?XFe=2T4RcU6b;XWvW`m17tu%BmN7A2(i^*n2#b8XHP9Ncn#=A!^Qp(>jK#&QR zK}q_8unT3lG_~EB2jnjKJ5c23-_EK^?C$0UH}IxOq;p~;Ll=9j>e*s*HSrIL5^s9z z4WKue%+bO8HOKvp?n-6q;$YUy0Jz%wLaC(=JgT?nHkzEyWHI$wNf^SZBEzxVtsx@nmo@ z9UG=)6b*6Dfpw|gfmvS~m;?vc!GbcCfTw+fQB{(2ZbAnXwA22bDjFo4j z5Zym+;ukqcQL=sMS?X@Bk9dcgtK`WdcfUif36v?5clcS@J03ky6HA%aa<5WwS@CAD zxe)18HYFui1(6rI9X_O+PJ^vg_@4vVvrJ04sM4IoOpKH6;ZI(ufBuV7oW2w*9QjD% zyCEIZF)UdFG3jQMoNwdRJ}R;F4l0RE72@&UM zB~J$o%_ZK$iqK%`k3Y@;eK46+3|19FyLQQ=@0T;vfg&&Qo(qf3noC0D6nNI!9lQF? z4VWwCynNJMIZ8I6BPACWdQhxbdY5Fhf}anp$_t4hy5fNZfd4vo zs9VE|8=QVi0;%?f|8n<@fC)D{#5PSYbZG-$GJtY9Ul=t;$i}JORiTB1!J7b3I1-Q1 ztg0aRNVfcpg@fFXQ_N;dUx|tol)?JV&raOw!zfZ$m1rr$hSv4#SOgUm(o$>wO(o4r za(6SuMRuA@AcAW}*rPd|srg~?THZ)J+`ez^=TwMh?irBpg1@y5Irl~m%f&`01Tb4bis%UG684JC*acI-4HJlb=O#RZc#`_ zZACy7a(xv4HcEs54afL;3<8#UCTT8|{^~ zKtxj#@>-}CIP^@5dMmtR3fOzvhb7KjzR{a57-CK!@q{88@3>6G+y?)0V-Lj}{A1XI;&z3;sTS%UuKQ2WRAFghi78kCaUgN>7ar49tr z?t~W@Uj^^!DkGyj(Uie4XQD}RepA3x_d-$)e+kz%v0njFu-Z6HePVgBEm#$kNZtJK zMGv*^r^0HnPByV9Uf_UXiMO^J4AMaoh4T}CZ7|{e)Mg|fTUPwqLOg)RE5-43G#>V}y^oY3S?I?uqF6H+Q=sk00pQ!|6wVk8f?Epmv4WI|KtzE| z3T4?+(n5pdp0=w(p4ugjGn>yH06LY%MT`8b(>{r_%-|MXn(C5pJF(5{X@myXXQciY zP>UnP8)A;=y_W>rlas(a)=#PUteZZt>D{L17~Ms4ndxAnMDfMWYKB0HDxp@pxDPDN z8JvlN#6eeYfJ=gA2uUFBwbJs);rXnVzWPx~A;U7W=$k#4RwQY+)p`AuI6%O{=BtFy zrtL`n6=7}tRRtgZ4d(r)*;KzgG0jLdq|i_4Xe%=ePubn0qRP4na3OO-v=k$|<75fI zDP1WcWzfJ^@jc47W%>Zcyg!%$?g%reu02xyvkMgssa` zKc1S2V{r5l1-NbaMtPAbU=vYZU31<0`>8s}x}uOQsYRXf!3Ch?Rd6W+$l5F|aSHDl zdMu{(#U*flnk0lxSDp0q`r-)Y^oR37tcn1b1xMy)Sb|;IVczI*^1wV$G_emwU#j`> zsV{A(7c8}<{!qsu1r~9;|5fxi=p#gS2b_NSSa@UD+|F3-xzWsCW*BigzRO$#`#M?2 z^L)f&*NVE~!H0pAx_EZIlf@ZN#NRK?IAt9AuKdv$&mq*AJ_cf90^;w_*j{+-Qs&1_^coy5T3D&9rm zF>I`(AiUB?!zPiKe*YOMf6<4T!5A?X0rN2jAjjC}zvTK<#71)7fV?F8B*u}jUYzZZ zh#bY6ZrFXW`D0?o?X2{iEo5dq9`t~U;qu%gQZ*_fPMLXoNY@&#JU5WjWzY^wju+l} z_ygD-(U9O9WoUiuyof3*bHy=fwnLe0wd9=2PY}hoZv5-efauc>@z}EH0~l?WCbVBf z;}6R1)#p6?NY>LmSix)mKy5tHp}}ywA#>>F$nWJN3z8Kn2Fvu_R~>9}e7Gi;R=9ZI zg71|5W;2)3biR;Rhu2G{6(K13`|57-ulM5tc2cXHZhZO#kU`W*8CfN7%r-P8dNagE z3q-HAkzyyQAuzsH3_@j8k;eydZ&++B##sqa;kGizoNwm}Bs1&0cW|HF|AESoBjd1e z@Dr}imop1Dk;Jf?8z#H&zz@r*BGdys-&@Y@;LB2uZ?|qVFq&CDSy~F%ou}GJovy|T z{MtP}f&fWXLVKPyz8Dz}8zpX6YN%}%JsJUtt*;2p)Ky}-*~t-GA;t_P~aLsKU;ld)=SJO?@N zq($rAM4$5ZA-ut>&FE4Ra)(gFq6PRjM4+NKxG_8BnIl^R(gAj$sI$)B(?cYs#xud$ zQiGEQ;07UiWHRqBfGNV0&z?j+^2Yd|9@6LMTT<@ni2tf!MG$`f7|-MqH#zOpQ( zzs_%xDYZPSbs9kQI1HQrdzADFoE(Vk>@9+|8jR{y3+j#ccS?!RJyZqK=oP-XniOMI zxqE5&;P`~@ZLbzR3a8F*vUYHeQFMb{*g->`oqdF+Kqy6-fP68J|k9!78 zf#0p)f2p}RAqo>K{>6#eMq#(BZh>Td7;@m*?DIB5RE7?fOiMpoVD&4LacLXF<3C_p zl*4myD;xDRnGLsMub*lFyq~I503971P(-;aK^p0JraNyZ@iJ!h zAojSwL6%aOEH~0E*M=Wd7b%w|Y7c%$l`&~muI5Er-W|GbH-G^In6X_$G*!Feo>dgH zuUOG(JF$d_np*yPtLVswC&tV2=e4DoUdz6$A50>ILpne)HA$DdS zk9@wclm-WnCefu{QAED;l$=iig9Lwd~qcOfxmqP`4c)JWD3Heg#~VkCMUJT{URelEXp8K^Nx;ZEdjJl^7(Bbw%* z;b_H*%2sH_dv$y5q>#B5bQ=_MUEnNn^3h5RQ>mr$%iWY&dr?z!p%uLDW1-lz;Hz0q^f5CwJ}HM_rp+vN&lZF;Q53S=IYZonjjzy5GgCXqrnCR~Ba z7Gc#Hid>&VSLt6ncmaRH#t~KT&D>t?rEB_MxtDk);P$_8)*WWFWmRC=Q~x&L8CJ}S1F*M~b{2-*&TDATK6WQp)Hy|ZTk9APKvjQS zNiMxn&I#9gg&-r=DY1gc zX!4Q+a^^@fy22&V`Utdy<<#P0By}u-?t%|hT` ziPqH;4EUpMrW+Q)=H~LjpMly|Pa_Z<+nTY)u-}&#`0weQwZr9&AEO7NnpXL9$2u<3 z&nY=p)*{F5mg?m6*p7CEG^Of-X1ZiYN@kmxNOjf!hNrktfWJ^yd65y(8tZ z3Qd1FlD^b9K)R?fh`(z@`1B+bRTaF?G_x=URCT0_&fK*I1(8OxO$EvPT@jThpV2kP z?f_ND!8u**C~?bUES}mn8C(&5kg&DVhMEXM-)46H3uwa6-NdK}u&Vm~EicBR5=Dg? z62e)x3`!#vgs2EA=XVf1SF~Y%`ed6LWCJTnot7E_(V{aJu2}rX+MLo9l>URyLkAkb zAEHRznINRc@62Ym{j%ZUiOoe5c|S@^a&fhSPzoKGt*1Rh+1S*mZDmUF`R7G~#FKTd z)eTI|!_O}?wydx3Y!@4Hp^Fi^(^zCdlmik*wA~zCe+(E9+ic z=i%`b8vr{SI&c{*9!x}6HfJkfLiJ6*K_`kw8!duV^x(@epO+5fK-;jJPJFN|ucsjo zpKRzp=5L$wb80{E5$*BxUhdL5iA!Nv{lyRGbBf}YgjxGMgZC20eWC_yjbMve+@3|+ zkVxOmeLRN5jPl-EPfKFN%PCuDd?|^u5Jfj}K=`+rnGn0-ZZ-f^^6-U$DET4vFC2#^ zX{2dL|BVL!#I0dlM6<8HGBnLr!Y@1er zjzWw0kqkP?bCeY%peI%&dJhMU^$2cz;6VyT&auEP#y?H^8PS=k`2JCD1bIp5zZEa? z*_8#d@nL)y@FOG>=PJXjtjM$g&8^gTV+lxlSIpCuokH2rbJ8fkPdj1}ehwZca$Y*4yr9SX+%7uOE0LsW)8Y;73#dKk{l#=VL3O zQd2^5;Le0dlf>0`7g+-2oxgexT7%NhRE-$EgCSyl7m2D!#)U3BctzP@eaKv! zqe04U1G=pJi|sTYrm;4pT;(@Ibe5hu8$)`(av1LzPY0m?KQ*#tk#o?^Z)?gNAWbgW z4S5`_gfC-`ni$keP5Dmz%6SgAaxa;|On;c`-#A%jrj(qES}pY9iKd$jVK4d)9@c0g zG9?-N}iBVb>cE{(j21@LcKlgNpU;Tm%UaV>S;(3YnJFctLTi=yX*4 zFlID?^F`&zN?R;iz|MTb(LPrqN~lPC%UcfS&T?Z>pHaE-DnOUDgg|UNi_<7SXXbnd)Jn-PrYgvCaMC`5RM#vq95$#Aixb5P(=?G9 zv;xq)igUvkg$2c)PMj+|2QsL$`I)$K99XNzY_JF^!v|S?DFyCuKmRLVl!0{Ao6-+w zpHJ=VS#sQ#1$Q_`%cQ~Ym(*M(6is0DA|wH7Y3rzuTm|TD!nIb**{ef`R!XATc0v?h z+-y%Cdq@CrI4h>^g7fOnuktu{4}VN|6ZX=HAh8#zYYHg9J39}8ubtMA3>OWr95aK*-TpL1f;}`1}uFihmvWMcIR3p$new5la{5A?)#vQqv^qmHa>Ajl>{TtXA#V3 zq_#IJJHYy4wGT6aTUN7ic+jP!>?7x_n|p!U?c2}GXeR*~$n^&=(<|z|>}T=Y#&bPw z=4X=BN>@W{7c$nNN1sX|$ARAPUl+A6OIGy;LSQ%`qD2>+%L= zDUkXZbQoTFOczJWoef)rjsK6+vY6f9lEp2EX~mGRN91xxPb~6dyNVG|W?oZocngD- z&D^ZpW|1i;F9v%nb1$38wO=P0%UaCrf8FOTlT^>VKT?(A4$b7mJ+(ieESQ2IcYzb! z{Clk`hoH%fG;#B(dIk3-Zw*h{n`kZc1f<)P#d?1HM7eb9?IbI{=mLDXbn)}UVN+E>v#iS6Cj0*)bJb~@T?>{Y~ zBUBGM%NrFFF{+n?5fR=IylzpMLzqZD)g%+cAG-2(J67W~#>cS*h}afNH~g|=?6Ykb z-su67!!~PkM6j$x-OYC1IfkxIQ`3N@*i?gj3>ApO1w#72Rkg{_%{vZM4Zzn;ec#!< z7e?N}_xQ~J?lBm|VZJRP9yRGyo;r@~JE+UIiOA7aR}+t3&>LYpS3!J9%4P_<8@uzvw;&wU}y#jlQbj zRuA0y`+2Fuq8vOqZ&)(~L93j2taT!<9itp=?IC09R=G7?=u*?i+b5Ysf{@QOXIOQ< zwE%j=zawa%(1z`Q(IC2W%)=#EY{{3Z%TREM`o z=FO^_dzzC|53A7$xoTRpF5xjkis{cJ4?h?^WSd<$(;#5-PamAk>sODOd4ku>#~HZV zIkewHj#%m`pm>3Q-}_3H1re`~O17>AZMJuN(jgsGp~!2YNV!1V&xw(G%#?14cUl$s z*Kn@#e(m~R$5)x5r7LRyOD?B%*~EcgA<^ZjHt2QuO2hV9VZC1EbGzb6`atpz%9-+# zX;)MEqnEWpj7L{I7%Pt09zEdUb=*pj*?rph@qGt0lt!D2J+VZ@qq)RRwXp!#xxz+e zrOTC6kv*SmUZppZLBcK_xo+F{T-Ekxdde&>Ak!xkkVB5A@Y?qxzT6{jl@RgADC~h8 z+m#&fH*bwk51XkvdgF)uAqV2`dk|-4vt@Q0mU=n&baH?_GF^ji7*t_O)qeT5QOYS_ zqXw@3V*nd9e}|v*EPmviHaZ)mDb&yJ8L5^ zO&M)r^hk!F>UAD;0AXz^!q69JoDI3D>A3?rb>|a^c^NKe(aoXg43loB6G)imWmYT% zDK|Fz8#mFl(%c;*$UwGD$ZNA@*yVTr{2*D(b%~n8E}~ATb!Lhb1j>dH(oyL6n9!+e zg&mnNMVVg2WJy&-ePi+{r)p6!V6RVVCzQQOkHIh?V6G13OXIz?@RyDJ({p-ZbEz3+ zdIy{NaXQjp1wcnP1rXrV`b2(=vF)pEDbLR2p$3o+_CiT8kHmi>=Y!#ih`Bemorfiy8UL^B=)n zAu%-aAiQiDD)}NI;tfFhMh)RY0L10J3Xx^GVD$tn3=_!b3<)8^=ZF)WZYf~SJ2~Wd z(~|Dso-)C6LN@#AR99X0%f#N#l9VSbN=s8G?vM{M?j##QS-39G;^vaRZB*Q_+I zTQks4>~BaVN5s8XG#zI^ioQVbScNC5Fk zk0WZFaz|!iz3k^VZ+$Kcbxh0mbF#4JH~3!}XiGq%PqPmv4CPEv=8`auB;=?6}pTbHIoMutMmC0?oN z4%^rg=t5J+rETpBBgAFw%#=0aYWp$}MN7X0mI`c~_Mfny#sDm%%ICJKq@E=TtVls= zf_WK7@JF1e!CK^I6ZmPpmZtW@b|D_&dBIqxSw)4t^b|v)A9mCh&{C6=NDWyM5-Z9{ zQ)}X526ttS=2d073Mg397vt^8<1TPEgxDbM z(3VzM_b_-_xOR3PBnGMkL5)y?d_P{YnI)kxpksvIa{S*>D~Wq+(wxERmqfx!#ZtPj zv|%a`tA=iW{iOnvpA&>~b+n0euXr4Pw>!e8;-u|L?m?a`PBmw4I^9zjWmFi~I{#I} z8q<3OC*&PB{)9fS(-E8jPN(AZzZ4NZl(_GRZG)t^$Xx?~Mw#8dBx=0VkJY~BMY!6r zAa9(AEkBi0Xs2hmkn25ZDCvU-SOKMh_T!4s^_D7XjTV$6kdnhTs z-kF?;1bhY=G;08yR?gRWS3(K@EDsAhnc-8NQ7vrZR>rL`>s_2fw-l}LmHBvyPM8@S zkG?w7tdKi@EgMzhly`9q9#QAAO6oviTj(paiO+6{gJqsOT z=NI=Gt%#@z2jbZlD}j6TwRyU4#zv*yUP`tB+{Z&mLjZl1X~_connS10=PZFLVJow{ z_xrNGMrwmb(^A~&r6lD%s?N}?{oyQk2{(sTZP~e~ueq%~x+o485};_WJLE`ue|Zi6 zzu~rrdfzJ5)~1edm|puNmVWgJ%o`5?IIL;1wiIqS_9TpZpZaIJ!OglgmiFzf`B&QP z)?4=`ncEUT)9{Zts6!e8r~+*;`)%{*qK`sMQQYv|k#qgaA6yCVkFc^+-1|rVpY8*T zIyuF^IXAj4+hk1nBL{I(L2mMetlFw0vn5B)@P7^-$1Y@hVnw8&>dd3##HM;OqUy1+ zU6K<#=n4pI{GS<0)<19jY{Mja@9@8gxmF%w5VYJD=g29nt&;Ap*C(g0Ud?f-Z~@@t zPS}hLPRciykv_+Ipmuzflv)Yc5mVaQy!4NUSHMs!H7bP6iK&`lS0pwcbF1@HkMES~ zVdSXO$yL+>EJmTIU<|cE!R%(bviRYOCU7j?M3{S^J>4OVPjpt)c1f_TE%kWR9dUbN zFyomD3!Rn8mM60u!+56JdMN{M?2x6|Y7BP=6@nF7IOhDM|z{j7GcM- znRStvMMNd5VUqBzvXOp_FgOHhv&Z2K!Xz;=r^ktHJyjF0SuNjLAfW-Jkr8%Al~@Rq z2P>q6%N9evCjD&z`nMQ?imHfTkf&X=%Y1B*)Q<_ zAnxSD^OpudhN2jrSev}sEfH;4U$5mah)??fU|>>W!-|EV+)s z5i#;_i>t76C#*Gz|D;bAI5hv5O3JVF2GVe}uk7rKPc>&(A@a+vVewMRqB_8FD}h20?9iK7 zj^xyBK3rkODAtp>B@Z6n^m3mx5lkk5Usk>YiJax@<|WT<-BLl#CmN0%+wCerE$vqS z1B3sR4uwU9G^_--&1oQ-_^3U0BJ{J8cDD<0Uk+RQiA}&SZwTx*k(>l#XKonrALxl` zk+v>=0++QCp07S~>cN&+;apeEwF_tQY<~xAZyuZFkO2JwFv^o-e6Z(F5q+e zUU7CSV1?93%QrDBKE=l61j-1@!%bBlT(7)h!iI$$buO9QBKA=QMcCTpvn?S%no3*y zB1{^9R3jF&(;b#UV%LoYyC*bT3Bi!!s-f9#!Cv&7;Qx{wiJL|t3@0NKGnW1JKP$l7 zTYhT51?M7j^D=<2`iiw64W8S2n0F`-1;0nHh475{`h^*~RjshP+MDjeEe;gyZ@>F)(Tz`z2Glg-?l$5X zli9+TPFEFZmDB#@mw*| z%zdeO*g7VBgtD0h@q)s{rfOX3f~Nc*ovpRt(U3s{P>c=tuW-#;z0ME~rd$qhw;;9- zIq|Zf5V-n1IbsP98LBuLx7dB-0xM;L?n%L$07M=ufztLif=61#ehr77Tj%aS$qk7A z4p0B=)HW)9{6k#IPAL|rj0KE@NI1bFo~$=9)Bvxh{N{d*V&ImrV;{`vJ+O^BP zjm9n5;sF$zM{OURd6gjyb!LvQ4Rch@R6`XVcibHyUN*C%`nUi$#|=KNdwgmZ-CCgT9+6Po_#~pOMrG*tOC7`# z?Z-eCP8xYWXX(Le4ud&}%vWw&p_38HRA z9_6dq6bKaF7bC+QA6$)K-DQ4zd5n-zz4D7NnmL;2g4M60a$fSR65QKj!5mP_083&# zyTN6pW89C+m-w6b5maV(MlpABLI?5ZcBf2H6-8RL2E6xJ!$UrLA~y) zSxg6sJ7HMF(Rs`K?@=bl;yD;*88RCgAJ@{Lw^iD}zdMnQ)e{)#yJ7k6(xoziw0$`p zD#jEh8xzmYH5U3$GWVA4`pFD1VZ(N;@WB4=?r;517Kz9Z9oF*0bKA}89_owIOZfGl z0G@fJ`Db)M4Po7%x?^S4BP8f*V~97>Dn|$MSvZD7Kvi}QI6pq&omj`oGB2h^=}Fj= zUdqVfV)Eomjzv-FZT0=xpzkXl)0~$bLIB`$=Kx&MKpnp8k5(r>R`qqAcBWyGxjrrZ z8hYWg)YimQda=HjkI}X)D!ehreai#=D%-x6ZimlqXB6b)W1GKUOdZSOa_4T0bDRMZ z#rqz8H;8c`flvoSQ&IyB_tseRr3*h}kc?8`_p+lj6ZHGt+-#=PN||?tiduUTr-ttQ zoSn9QBWwS3Z->7aZY1e2yuCEylvS~-;cMDFj~P?;%)sjIuHW+lRos0CsugW@wyOzU z7F9_`Q-!f{L&$saxGP# z@@nEB{nsn-b}HD7E3Qz;Q<( zQh$KHpU72#7TBtwmE5ckMdgd8kD0!1dXyd-@A*=LCQreRGFnSJ|X zPZVBLTOi@%@O&X13zM_j^oBI9fQfuBV**hcHWt#bXRLr>ugZ+i0pA6zT6i<$tJ@l@ ze1o19I}+Z1-R6z=rn!N;7F(}QEQ$yfB)43g{9%%wO7guBZ+Jk4N3T1@AtJgnS|c_w zTej?2gQy2A87PKzFOdsPI&xEb_8Sethiu-XX*hEuS?HZ&>=XgE+folF3~|WgS%%e= zOj!%e3pdv2&4DoczYZ&3`zE#=8D702F_mR$quL0@u7JAZdPX6yUf6U@-vJL5n1F(% zVtk5m0b_!;Ks`w#J(jY*_H4bxw~Te+rJ8ut(4zndhoS~QHq$5lhXhSk#MykXU!c|+ z7aKhn*mfBrYY1p|M9%6bk+fF{w8Sl-uY;`!*0u4hG;p{k2ZX9b$Q6^&7FjU?LBT6c z1rre!5Goq}C0;9NeyXt!PcXEATwc=z_qdXN&ml?3BWPZq$q?kf|Es0DENKin$^x`} z+zNi&*MS3FIS*k8b#r$rIVZo-F@R1KBX_I?!LkPeTzg*H6$=PVS~HkQoNUGGQ1=s3 z@8!#MmI(*?zu{KUJBJgH!6c|la@Vhlh6?ONR7w)b6gu?jW)py_v;)ZS5vpe<UcNgPzLB0vSBfzT>kLU()7fd{3_q8WSH8TS#~daqb}lNN z_Hv zDK3*WHoQcY32bubs2h=VO0PF5g7#Z|CE(ETg3QR=vV!rn8?3@3&}Gd%JpraR045+` zaX>J#XR;Iu%*zj#guJgVze$;cL?py+$TUs)!EXg`;q&~Zi_ou{yec=0qzM#7zY*c1 z19h_Uca5dRU9po%{DfxZ-Q}BpLN%g#u_Q$ody|6asoN+i6% zq2jF&4TCkNBlGN8%KsT5p!6e-AHd9%Ef*2Iie2fBZck;}?cifzU;6u=x3wnt2fT(H0n)XTAGcGA|R)?Evi!rWH z`&ITiFq(UnzhAp^CG|*#ORb8}^v(Weit0E~*X5J%lRe-uMU)?1re-?j?erWeXgyNK zjqBzMo(L+qANYYqL9>F+u6&3Uz{|?xab4a&iAo(J6#%xoG9ViPBAq52Mo1x#OSNxS zm#-Dy!Uy)-bKz_%2lD$Fh6=pKW|gO$%Q4S=qVHrD!?o6bkKdg#IH@E}i~pttSK*iX z!my0Yhc5OjRf8sErvb(P3wuwbf8W^*KTbo2t2t{AZ>A0}*}rtf7Zmnt?-&SNmV(3> z2%qTDGm?qo^5<%m!S<&Y8;Jw*rdNqmRwEQzuCxv;S~tNExI^`@ws2L#jwp?rI9M+(aqXA}cH6bMdT#-{r=*UM zKCQEc7mCONtKwJ)D-zrzagM9n#t;@D06C`{Th-1ab(KC#);xY^|dfcptnmWsIj5FL+6w%l}7QJwc) zpwf$8YHLc_iln`4_fYj( zD*|K6{oYsKC7dpG@G@jw%%-t~%8OA|sotzK`}v^48BE2@@IYtSbDCeu0n8|{n~+f} z94NNL_VnoXXDea_$$OIdo>2orP|rkh$Pd}YEW8)7B?R?BvbPC{A2b^X8Kw|R*W9bA zkpg~)@2R85#6HVwa)%R}Gaxt)wJzMGQv;x2>^_NAXr@0kbws;8U_BpMGqAZeFoMa! zd@o5OmpT*=Py~?1O6z}Y8og*aSEdAfrgYu?CeKDydcWvyXlq)28wcFA8$&Ze`4wm- zxVC_jJ>4LmvNjB^tZ6sdJg0~jwX%7sTzZx|3(Juyy38=CtAKN67`diC7`qa>JWNf-!^C4 z8EJ6Q8ya<1V>3xevjC%B#d>4!H=N!XnRPUN@UMvZw#R5JlQ;!T*!ZwX4opsFK zTNg^oeddb#CnJzs%|{H;6%1EW0LQ|(NeF0%@-s1~5%TFD%=3mv;R7}8_8#4Gd8(T^ z`+7ZLd3~b2%|Lz&gpP6qX&@G`Rrwhct*zI0W7pCX#r&;O zW%qIZ?HVbsZdy}aa(vn(Md&%qpM#n@^=Bi;!$MRs1sVh9h7Jh(R0>s)0B90Hb6v&K-G40P|hJ( z$`nd_2hg82F;DLRBz?1P*2dF~3WU@R5)cJE~B?g96lk6-fy%R*`6=@&%>E5R86BfBd z!v1`>nYI@nwC`JHiAvSnl!_NWZ11@sK>Gr_ZKAKbY)ge}DeA(0vkAal(X>N8XiL$> zUfNZh5WH>^2yYi>Vz;(DvTZsWCpxr*ncp0gM$!ZIWkKRa<#XP0Oa7K*kw-!jj~jY~ zek9*o`;p}8bDl6F^pG{~z0{|cnJh_uSrv7{ zy!MdMRH1Ies0_>J-@7ns3#Yu^cEwFJ#%vae#Fw7BJ= z7>}|46LK9W)+3bB`r1dVd3ap^8Tru{2{|OD5qf>`is#}j55kXQh(BFzdGV7Is&p4r zgBsAIS&slw5VO8gtyzAM)TprZ#YYLay`n?=f`F%xj4zS=+o+BfR0 z`~bymO8)6LqMavKpdx|XUOX1a^_?m@Ngqp_6=IGqOuHZxg}oY>{44GViOj*17(UC{ z3WVZ`&pF|P*T#fO*($S`(?h@SWc0ZIzC8;((zUHaOeZyD~HJVAD*NIz1t%<0tIt1qH>? z53JgqN=02+Hj8>zPfqRY$}PwECJrHRN8cm?&^6Oze1WxpaJS=<#{}a^*7L=?S6&bSoZLiA$H8Oh!$)d!6OU`GW5KD>iC!?qWU_55!A+O zp%YX_BZ`SpF+oNpWa_(;{^21s0KLxdosg~Wut;;7gmb_RLO zk~V>AFExvvGgo`85s-WPAvGO;a^LmPU)T?&`v5SsG-Xsn+fva?pa;&M2K3E0VY~R@ zq!30Z9;T^eyJ8Y=HO->)>T}3uKk^}=6hk$o)XWg2zl!>E?LARWIR_CdaV{#x=Wwp{ zQN6|w$B&duwoAgp5~*aD)xkIwIb)`;1oKk|zn;FEB0JI&pOKSxN5#`$=A88uLg^H& zPt|HFWG;K&BYyLQU~wO;CQgQ3FWF6)5ig~}dLa`o1}~aDVTGz`NOF;HQ=n_k9iI?V znWL z@tLKRxDi7W);FpozZjVw?uBhZ4bhQ#IA?Q}b0V@&$~>37J#Gq!1k3QBbKe4Uw!us4 zL+^|39jPy{tXUPUYR*NE7(S>lObgQqS8MYOGA&qtY?xJl31(w1J0DZn`_=j>DSle` zfNWA2b388hmCnO{=*@W?WI7PD9J@5stsH2@By#?rKVF0%mqa=@RUWg&fx`X{+^&Ca3CU20K?T7vN&Ii#m` zl{4=36qEg>MH{OmBJ}L7BRvB#LZK7`!ku4Flx}(ASTZdc?V0Z+gF9EBI%4F>y^`R3 zAWZ?U;bkmWiVXBuR9`0SG{`CPJ9H|-u({UEUvU2>b~0`0Wk;-j`Ve?JXt7Nw09B`! zZ5i7?BR0&u>mrkh2wGRk0Wy@4ioh$5P}*72GRaHCU`U2BIxfV0gPB@=Q~sY7l2wrV zm|!fS$yY09?KuOg@Jcf}Qqfe_qK^Rx)84~o|2LQAr%%f>=Vbx5lJvMWTMc<-IpJzCC6(y_2PKXem=QMH*Ly9;~R` z>u;$Gn*^{pbT<+t>gMqbu=_0t2~^)S)=8s$A2!j?1L|ux03goeWH+50z&~f%u$B!t zn-9c8`i=9-Tr*eQzz0it-4 z7R_sJ$6q3PRw(727nh>jNUdIp-aN+tFJAm&zm`RWAn(`beZmxeaceP-@V3>!O z%1Al|sYQYJ{SGO{PCrLF0dePPU_xM)i_7EblY{L2jol-@t0xVU1hCrhxbMI`(7-eI z7U7nbi#OV{Nq=Z*LSWgJK$P~z0f6#RTZQmHRCstEJ}fgXU5FN1+60+NH&IbS@T_lD z$pL1EgjY*zI>(XA2*Q-NwC9r0`*GW<=fQWGk&EH#Z9y(Gq2~ty4QOi!(39g8 zq|-;qNqN>H2l_n9ssXYrO;{L^Et2g8v-pJZ8#aSS3kWoUnKc6LlZVrAxX|aM6&Jt= z?NtTy<=WVQh_&Gl+0aWTwc*H3ngQOupgjaWNfF-62R}#Sbph~TeG_@n@na-H10au| z`j}*lwz-C%|0%E7raXR}0y)^hKkoL23z*JusBf>auv(S~Cb2xO3)8r)!RL>)s3QNI zGHURyx8^b_DT5u-KL;sF5*jz$v7#yT8Cp%}ih+cBZK~b6{r2%B!Xz`$hn*1k%!5s_ ziKE>&Cc!ZOs0=C};`8Aj{DucI*5+8YS21*tjJUYyyCUr{H7#$(>&>njJFm#1wRkGU z!b-y;cB|RN8OMm_aHR8Y-uZAb=>~%u+6z$YU`w*=L%stg5}!;p?&$~x7U1J*y_wW! z)#F1m^4CD_JCxY9NFV=$p=oSLh{g{|7PU zx;xH{u7Z}_+?t#5IrojJaj}Es6JsSJs;JnN7hUfDrmWYJXBI>pecJDRVAf<0|NR9! z%D>oqBX!^qebHECRU=IV0R3{ng;&#tp7t5>6`Yq$zI?ic1(U4q*q60+hjn#Fz+uLu z(bZ&0-C1d}W|l0!RZTsRuj7%y>Q@|Ler-aUms|V=<1Fz(FE0Dp2c*-E6XsD^>Tm6y zSptE+w@B3@7K>bJvtnQ`JZHQJ%ck#=wqX|f*0a6({Bu(Q`-j$2pH>=j2n8I^a2MRi z8y~9QThxlYhuJ`XIIS#-I~@p@PxMBWSH(%C40WxJ&1#jxj=Qnw`)SLIBgUf7$Zv#z z)SfomeCK0a(d>gR4CoIHbyVAU7`O?*@E}q-aNoux3Uq}W?+FNJ_K#ed0C_xij;mAe zdlJ}0rTd-V<2SwEGMHAz$-S44UaY#O3I8$jvhQSfg%hMaELAiB`|4h;t-dHL*-xJ@mSChux~l4rrZ0=luoT2`Sb z5=x^ePN(cjDeuhb&9{Fr2a*gosk4el09r&OB~9jwSn3oPZw12OrYobh|@{5?6k zqaH^e0iVb9Qog=eE(S~U?$J1-0`YL}xqglok)dn?wJdZMz8t&LG-%i_j$y1zX{1tT z4cPKufGsafrFkRn@IcmLlm3v8aL!z;{Ed#_0mWOy$yj?{bS*A6R81a2(O)`8`7RK> ze#>)`r-xwq6|Dm|?Jyd-WV3PT4#|41(eYf3wl<$qQ_<$e8@QY|&`R4`#dnR01n;Jr zksdTPS$x_3@4zXZvVCwv0tLIVyb5+^=lJw5{uEI(bORvl1{rO|ge|@(PuFAu!mAES zSxT^-jd~}}Gxx#=$ zWl&njm;+h}trZdysEM79b##|$okWdy z^d0wvdj7p5WsQ)OdY^EBhy@H3^q4>l3i$c<9Bzk%K1{8W0Uv)`Ge0+Q9DY5yzDh6@3ZB>2AuiwP8!St zMSdmQLz+?9^X$&Xq;j93fdVPRPMKOBWn{F8t9;2e8gs#co=Wp-4b3RhI7e;XO%nf9 zW3fha<7c!?!XI{=?ai@;5Otu7&L1J31WzcQB2ZsT=n4#cu)umazj{oXGG^>>gUTD# z#>~b9jry0_UNazfE$ix^K3k$&61ntgCB5nIV$I_C?vtyJmDrY`$gyI3AC(ez(KN5y zKAPTNCTu^Tf+G^G!6n|L9rHda#;dQ>LWl6f4kjG16e!;1bmU~ltcH7VO5`}w0}}lS zsDA4VMM$1vn~SDv6?nL@1+L0EhrPUGTh3UwDfsqw zEN^D&Qz@8qir5!!^=V)^;E@rYv{N4$I!-`zRdgI(7bz~e$wPxvES#PwbpT^` zT*JOeCghASNAcb(npcxpSv$ph_uDA@wv=j$-C=R_bS<411-u3%Kv%lGx?l_iIt{t2 zPDFbIM&}z5tgV#fRQf1agOqROMHQ*h_D-yJrihtrnh_Qik(#;U3U$b7+sjv*dh*K! ztn;2?6g&i$GEMR9C5e5FTCU%hS3gxj73B}8~QprR%Dh{jeSdnadE;0{J=yB+iRfXRx`i&!(=YkNrKq1oR66!*J zqf>d!V?7+fmFWDK0xoi%w8if`oMEJ0wcex7y$%V6Abh>Z+5=Wx6^FM%Cci-evjpAi zy9C!U0hlh1bw`s6c4g{7Oqnj!&=g%|CT zp47`Y8ae;tuNCLN_l=7$WPPwu!J(%7zF<6<+}042*@OX(7H!n}3#`}F>LCD?Y7by( z7atkKoQ}jzXSw?1H)qH_BSq*(^Rh_U;opV0p4~Z)4kT1c1)nnEHJSyt(;dVm(vs76 zRtgz=9GUo01Pd3MDl?1C!H=$Oj@TMR)>L1kqg)hhFNpky(j8O^jlZPlMrgo^^`ury znEdWo?EtfPFGKMAard;q$lRZVCU5OS^+4Bd4O66ZSe0%t(5ZnjU>MfGzfzn~K@07* zBt;da63`Ys3cT;+Xs&y8-7K z+9xki*@qnhIZ_|&S#cu&RXs2TE*hJ|B5$lhn^jL1t z0QMmy&f$fn=lrhJRydo;?4S$VwT|qFSKl;2!iw!3uFAgSOCo;aUnVB*+boR_F6CH! zi*(VjdQt?(JmH{0*xvF$;YuApOW;3uu7LO8B6vr<+QDn4&I8i}w1llJA*2_s$R`oY zk^NH7r$m)wG{*nI64)3x)6|(9_SY$=(G1>_R5y3!G~ znpk04c_Xzurs##E7)CywvW6OO*)Y*}8_#5mzEXF>WHYd+YOGf!W~yq#*m1$+#M_0l z0ft*Nma?$Qj${NCn>|JX!ulbb&S>pk2Eu2b@CyCHgM*V8<;xfXxlT&$(9U>fC*V%( z&{wx$IuqwW`qx`jtT=eZj#dGAL(rxl+ zH1`--1V&*A-AS0$50EWdUBz$qyZ~@^9j68JlyDz989am2%TyBlV)9qrl)2sM6gPd- zA}mJ?_ls4{b=F^q3XCdRdX#}w<0}j!&SFhg?23(O;)({G+a0+9{A+gN(9Dh{!NTSV zF6>y;CJU^CSe95EKnG-e0Gy{uD9~W{mvO-=%_~Vby%U#;LE-b!q3LY$_v?jq^I`TA z%NGU|#}xG8ai$nj7_*8$ya(8sR8RhOT`#9%hu+r77;;l^%!QSW=;@-*MOEi8D3bd< zKN+iz!knWd*IIfI^~z6gbXcnen-URX156_3FiVbMUVJHP3{j>5Ej2V>%p@uwa*-7* zB{;cwNu!*!7hY#+Y_TDo5URYg089%>bDY$hBjINK>*lMap55*+j3`aN5Dm)9Bw0*e zSyx`rCa}T|{?y)qIAYe2xBm9}A+Roygf=@V`+Tm!D0JSTF$jh68TfwNXhk1`LyXlP z)vemVt>r;N@ySLzvm%1_4;vg5nKN}3JrR(~&}HSJsqV<@gaZA5X?2^ykN}V78{-c@ z<-IM0o?GR61p{7qFReYHhm0=|vQAuWA#CTcmhCMgKBA_vij(f9uGkt#m77$|hd_$# zD?;67WbOSu=Sz)0-MWilzQa0*9&lHI@`+x)K1VY<@)+2N=RDd7U&1%SuBYP-c}k~{ zV%byrMlLpU{@8{`K^Ga1&{=F8NqdO%ix+gIzT!0#z#3#O&~ zt@bhT4|UDcQLkQmcLuyzcJAj?jtTJb(IB6ziC3mP$s@&5i7ZN|bMZ=H-@MSqmxcaG zB5OmJ&vJ0IuMsHd2pZNWgXVUEoY|j!YV5Z4O;bm%&LVrLp9h%JX8Ez&HaJ>3YiK zgxzvdmrX3?%u*2Uxc1fRECtG;TDWruBB^lznM!|#5)yPb12R*BFm~Ve5syo=zeuOU)`1~ zRiho+5*N}2D}(0=l3$-LBYXJg8jD4>QXk|lTUsSaNwj(P%Y_}sZS_ARV761_7^Bvo zt;2P0vu%_i){ab&4)|9)HeY*1mBGtdN6NXb4Go1MjbNJmz8erq`FV^;Fd00ek>)*J ziC-u;7fe)=C!8gPWXlw^#jDSakp)WUeo^NW|3oDYx!hvUODf>X#V_EJ5@kZ5P3#sR zf18@>2}zPuZg9sll(C=Mg!I>~re)D7S<%J=$(e=6HN$C}9)#{j7*9RZkPU~~DQU~O z|N86>fo`sVPNL$D0@ebR3=Cve1rcidUG0s&o!qI=!xDG&D$o-~dZ~tIR?6^$m(z9Q z)L6%ohqBL~DwzB#_6(C6w3jmI`dxdP#q8I4E2(?HU(4brdcSk$IWzr3jvpTtwmP5| zR2JI-&Df}BlKVY+FFgP`ZAxMJ5r8XO{=?!K1+=oA*8X$>_r)1xYosVi_R98CPTO69 zTUm@?KJG5bVUmkDX%R6{y0YQ5VuK=~0{3|B9LRU_Os!mzBM)jK?7|X0W3lwZpWSCj zo{ag8@85TYX{WNYL`WM`_$Mo~){~~d-G`l^FhRo|+%eSDdkd?$ zGr->V)SPQ_w60l4Ix|)3&6ny$&BQdC7UOc#z3LYg*yHZFxn#)*EL(@+91J!S$K8h( zC=8twSE9rUAtnUC<=4N8r%qAm0@WKP>m0M*GWH@DTSh(UN@X6n_2=NiK~t3h4ZR5b zXoH6BujO*9kaPu)M=8i`B~??xOIH$ed^Ue9ujZOOk`0mA_zet!r6`&R3LbUU12uu- zv6BKMU$LLnayguh593&(e`X%|&Uunj4U3K?%1hku2|Go)dPE4Z|LsahFCW1ki#hUP zO8ME{!AgpT2GE-$cd|Lp)QJFT`NNioFzjAdQ?c$xB5k2D^f7D81cUxQo&RhQa~(hB z_W;WxAG3WERp}>hsfn@E#X~0P>yh9+K+*gUzEJi z90Lrd18pCbR%LUH%SS=iN=wh*M1h4sxF4o8HC=;urKw-NbSl3j+?S^laCM<~Vz3@s zDt-IfKy|nso&-dl^J_X(ph%o~b_vcTP3Yk05@UuIEc z@zO?prAla;`LTnrx$;+SuADBcJ*AN8$ts*7+^NI{DDl;#_ITK-cBGQV0LT%~)ly(! zryWDuCiq9VvVr1{(qB6$7=%mTX<2(&oS@q}b7!<3#+5Z(5Laf!JRWu8)&q08;;I)s z3g!HY8`|N3&R%Y9^?s();$ob(FG3DjROxiCL&QIUOp22p)pQDYNf@p587hRJgF z?8wjkzdS;cWPbptK&iYhT*&auz`FSR^0E?$Q}t)VeaaJ=EhDeoojq^k*D{tVV+1SO z^y9xJJYTnCqGzdWRUd?iE&_0-FCugS=?61pG5EGxB8p=5J?0P%BHTcVI6C2@-=eR+ z96Bp3Tb&2_JvjayO!>ZD=GnKw9(eMvwQ$&O$q1Bx`#$$c(Fcg=uOyek(E9Hh+I#(= zs2~rWX}$OX{yfOfZ;<$1n?tV%!s#bkSIwMX%zoxrqgS zK*f@CkpnTh055h!v#G)cD}*N}4L&*W8q@21pLx#OoEsn&Lrd5Y;?>WgBzpMS(r{zu zWqYVUJ^^NW-^XBc5w(qH?lsK%gC5<>Ebqd~hT7X-=A`ynK+xaH73g4AcrMtmY8)As zlG*bi@WLN(+T$zexJYcrm*hmc7lF}j1oGu`v(9x4RegSMC&9_eeBQmos5T;_{&6Yt zdn;@99%ju{2m>@~264OYI@)gYa3=tTe4F`(k~ylSaV~7y_Ha>oZI=ys7oY+jgr%y? z?%ZZ5;ew;|uvcnRj+FNEH{n33@&n@KHbw)*LPcgnm}&%CSqs{wDBAcJWDaI~bX8Ux zbPbz%=39*wKQ?B>&G8na&EEM9&Sdnc=3h-ML%`T!rkuzorM-qP>`^leuJG=B-f0Br);crxKHt;b37RayXcLZeg*OIBs|0^gn!*B}^z(Nx1f`Vl=$gQ)GI z_UupZ6VoOj>t=niTM-HWW=9`*^#qNilB& zf4w`eW}I(ter08Z<^cAqfHh?nL-mk%|KT?$1r*FE(@z=TAtiIA}sIO<)^Po-bp%PDiamPlGSs z_DcfbsHvfl-`zfatj3CX-(jkjfoo&cVKU&xLgg~H0JDxMhy4YYfjM8JbP39CS)zl3 z`8Ql_4@o|DoM_54@#IoC%-|rw7B$U_r3S`lyqeEI@0CY(E=4!~kLfR$jJk%SK_NKSEdtdYnRQ98=ywo!jNZ{0XEiMoEJJq*;!z(P_+qCh z{bTfU2wRVt2ja2ej88wYnD(v8vL;N3y|O?oL33G0#x4Mk3ao55eB`w~EFjO^w^DBk z!&%``KTCAdo#*LYYnV@+X9}%AA9z#v0*GeM?LpO^q`9(S#wv<7R}n+P-E_nuTGpZ7Y%a90bh_RMiV zr<}Zan$L;V`h-o#NekE!ntFK264Wj)zxms8<3e?D#TV4hjz4uz6O$3?n#`W7OoLdU}*^cA&5Q=|H73uaslM%6cMn=j#kv=+%UG`r#jwgUg~$#s4`17Wq`@J88Z8x zg&lfw?C4t{mZL$P8RV{Mr?eE<0-i_t8N|6oJWfV+C2kq3vuSj{dQV-}*;;o-Wp}cU zrN_kJkBiMt(pvTdo?W2CP&THwN8?sb{z#k;ritJIE`9aQ*zwd1b(fC>tRbKRIocXu z&G*RsH-bU*`Ya*aB$OgNY`H_3`9tsH#?faUA8BQ7y-T!Lk0hY>m=MjG&SEt}eAEk5@9Z zs4p;cY_gki4boqPno0mi>6pB^E^G#vt}&zwppb+uo_0z^1|DCqEm)dEhpA)}tNtR^Q;&aO z3KmJbid~3(>SH*JoJEwSZJoJi#VIHe(%-ePX)@Zv>&}dV;z<#bs2HdD`9NZqU&+u- zh0!cvhf_Zd2vgx3H2V>!X`-IwX{gBG4ArIvL(OgSkmri>$*r-#E}Q{v0rUP;g~4Gf zt+h^^=GaxTE&vL?3{y7%@Fg^7JGzl|oh#_G1omwW!6?geOLC3B)fOu`CocIya@M3F zxk7`}kXW=?iIojEyCsQNC3KN=+fs3Ey4;du7|t^mpzUi3ces>qif-zIZH9wlXQ}~v zJnnrInlt`sfj6pBDkl-{L5F__rQQsX8yU{#rxwIju*n4>ZA~01w7g%G*OK^!wE*mN zUx+!P#pbJBR0%wC!iw;?hM}UTTZp*;&}dIY@_n@)9Uqy@E?0*%2a{R)9QL(M3IJA_ zq{h_KSu4fkt;#|G+tNav!IR{Z&AY=ACB$Ig+$xgQ4G&`^mN5MyYbLA?4su`1%pDkE zxoDyz@dzb~i0aLd7;JcW$!pN{$-cc7foYrOl>=n;rpNg0FRoF=Fe~n&D|4n z1A#B&LB`>k+HPq14bv~I#~@(to37X)*eZ7L>=!T-&KDiFshcNQ`o^@KAv1LpK+Gw0 zu7S;rB;3v*`#`{SHQv$$C#w=f5ra2R3Eu33onLBZM9Zz&($$TyAI5EcH9E8RZD0I;gv>KBCU=J@-_Wp7q{`XU?$J&g}>cvc##B?P5r>3p`kzxnv^f^c6vC7WCMmnkSiAIcilG8Be$a_5Mfm{zAaz zXy5adNTxlp3MZM0P`Pp+!sM{^)L_Zc-H8T?eQi~YqTh$)&}x5-S6w#Y^vsbM;vCa{w~BOC^1c<+tQUsH(de>dLx7ndEDMWz+Mnxp zF61!T=75vY?Dw`Qbp}6AIRK47`sEK1R`7OZ$S2y}KJDm>eEXi5MF{RUZhFY(MtnUS@ z9sLjAzNyC9_K8i|FDe0cOY#bv0^D6kre2flU)ButG4M!3(x7V|4Jm*!hRydZZTLl3 zBEEx?Ms5n9e&htn^iyyF$N0b=aXR70;T{LqgST}ozcQx)a$FMW2JTVf8F~GTQ-3|# zwL(~F$tP=z>;qHkbtV%ID-f3muz4#wSJWa`mL76LTm4(LYnmn)RKU=~5Qq61^@DKv zxi^sO_DHFe_XWyOA|XR(mp|nHkU!;;T^4u&%nWBm)P>As-k4F=(*L96$M1$qlI~TX zYwJ#*OU44`i`N=c@MN;M$fG7v5-PF_0T2v3R;B>xn{I9XN+c0_OKU(}&MrQ~KQy57Qt-7- zn|@&efF=R!DLx&&*WhQy=#y`gK*U@WR7>Qr%viK;Lf*(cX|D&c{l58uO*ynL7hE6_ z=6UMU=9kjJO7=^G|AP?_nd8zRIJN4w@hN0E0$PY8JA{@8R zwDj9(h&lq-wdu^LZD!dUs-;oD4V#=)cFq8jT69QYgKf?%pq)g5F{nrHTdqN-DDy0% zzi2wY^l1d`reIL@yBCLRem7EUb?IY^bJ}}c)p|OnTOS%_iwPOjJu?bNrS5I;z6knsC7SubH1Ak_Cai^?Dtu)s;oLR!M!={EFIEDlpXSIwzo z_i}ZBc`PP3gW^ocxz9b3EneaVj!MP*E`D@jXgASRi0?5Mqpzjg+-G!c> zjD#muq+LuD#kygZO=7AR@S9VeRfBhKonF!PMh=6RnoSLwbT9gmq_dVSBkV;!J zh>EX%5))Xomvh}_M~l?PO#-ST#5YS@I`-1b4|=6#aEKM~aAq#m*)>h81+)L)&hM!U zJCQ<)`c7Q>Z+mO%!EWrHll=!I9e0(w@WT{#h}@t*_|>WV#&>UkeQAWNwk1#bZz?7Q z&29vcz-W18m$~lf*-&CH1-x1Ul5hA{OShyx68IDM<)l#BTeL*&kz9{5>(Ma3hu1JN z!6VmnmYxpe2`P0vwB=k$o{;L8?W~Flq;cZ^&#f}oMw@`In7%K1bNIWC>Xu}_h1l3H z`uQv{eu&;foy?$oHuN$1ia>*YB9b861&GXHXz`d`rp@I*%8PerYWQ(H$DIN&jzfEY zIIS?+|&` zGj>n~e zQ8^eevGX2;GtDKSi!<${_=&Sh4d*gU<5Yr(({{}KLI9<4(LE$~-;a5e?VfMQ`g-+t zM2#{qfsWFt$x0U7J$*$Y>$=)LIF6HhOF)=n6foU6hQ>KElKc7jXj|E^=|Jexg>-Xh zpIXwLq{9(29=Apy_@-ugFOba`Y!{{OdzYOO_ANpQj8?}--jc&~*qRNmxC9}cP8&YlA2Cj~|Rg#FXN@y1%1PU>1yMnfXQ zi10k*J>%OhfHQ}gRtvQ1_p4K=+dkKPrP+?K7xH{u`&=w6a=a;XU>zO#u^~p}SHD#d zI2$L;T{)-jxV(n&zw_!VMgaG1ZecZkU5(kom(Ua=)i9=h=}GO-J<$X zr_$+)Zzo1rlxlUTNfCl+jtgRb{8JZ20&pwavEn;A+Xh|Z(+i$;>gZZQlnk-Cpq}Z6kD93o|987ZcYbaaD)e_jqTOYXf8svs5Ib< zs5in*%XPlBm%XB*xN;Lo{-5}qXmU7_ll7brewOxwMB?I&so}TY6j?ly8(}`4Esx_M zS?F8rNZV^dzwiiscWf|4cyGvl2<1#Sxxadrls2APLZe`&GqVFcxJf&}Z)rgP#T3G8 zKD4W;P=Ysm2l^IUxDp16+^o}|#f*@3Gy~XPCDJXP}I*|kn zL|y6xu8F67)aeN7t|p5UhG*KL_2)74_VM^{H`+L!Euep_1e^+Lz=nSz-!nDlWP(w0 zF12@1j1apoziS35xR%xz6Nfr`J`YvOCJW9nlsQ|+Oa*nfri zx!yjB6gp)cXx!BqG*Pje`n+fkdnp4KLNh%j9-3MtT|m2W-+0-GNxIJK?vqZ0=Ih+& zn%lm%!zR=H0mm>0VO%~m*IozrJq2PBEQ8OG8wv`GRCn_#!Khu#o;I26%LD8`0qunkUB%vE$KU$ zEtSx8aW5&4+5!4EH(#mjlD@p27X!=vjpDh~a&~)444|86prdPpk36|vA3M%FJ6EvQ zghXkUyHFWKom4>!pmS=RiWEqI?H9gzfBYTTasWMu4=~sqYB}>80H(`w2OJ{lPE&|q z>RX?IaPvJwvlMYsbCNEeCVgrogCxUw{_12D4SCQA5AVO zU6I)8n<^yN`(B0l+xZ(-;;U$B`MOC~Ro`UW{iZ=#yg;O*tyDj@fz8q_SG;nYq~l>H zDF>86@I=c?IqSW)79U6%1O|q@| z3NJ>h3d#PSLIGkh*20YZr=K2jy~xE!kZ>K+Oj3RF3Mucdc0FHUm5A=~1^`hftgx4B z2T6w+85_tbOnls}j2M&e|0Y>$g}=*zQyj&@5XvP(A#Fym| zRw+qGzEbMSCjna5s?{||mx-FMlqEWKn;?_x;kYl28 z(aGFS071>e2WBhHN|mSJJhz|uRUvIbU_K}F76qB0Ud&19%*4{PSd!KweIJ-_reZ#& z2xnK9ur`IlIvVD1JT-?TDF~xYE5jFNU2GzpVyN$ZoDO=n-{>sB|E@#F4jm&G9zyyLI4H`$hSgS;wq|{(1 zZR;-F*#R~y#xaEcPwCqZuXzANWGSr9r65HF{-=Fm^ZGEodAIEEkO0%po}so5F_9O` zcIcD)|E*DcXfAC6Y2$|`#Fkok4q({x@<_&_kR@7!SA^}NQ-*wx*)9=O10{|79L--};hQznH#&E?=CU?}2`$ zh9CZwJe(RoF z)VNmyT_C(<`ygGSJ+81Ntjzr9;!NKl{ER4b3YCiU$B96-YwG_^NjuJE?~Y z8W;T5k;cAH#^N{8Sl~mF51?_IT`o#|M9yX_4`>|Ol1IvIHmsDsUgl|T3+a=hokuzK zaGz3k5)q&zl#7#cC?j4l14pQWraiOl9h`X7ZrV_g5je$N-MmXxsFSQ}lT#P8$$jZn za|bHQoL_vdIrkYX1{n*L^xf%t_e~Ea62@aPvn<+f3-N9zg$&V|m|TOldtQ@*-W_`r ze#~U%^Xf{5xXJh2bb?0(J*lz38CmI8*SwC}nxqav`1`h{v%%6Yqx5VqQT!%NkBKMZ zFE|xvhw@y^!pMerJp*ezFkZ})r`R5if3do=QsOR&s33}+v5lxzS~ffsC~)79j_9<( z{~hy+#j(mS@fKUySB){R{g!G@p0qbJZc5_L@T?`iD|<(X3;X;apqNfeQx6!R9Cq&% zk&V2k$gf){Fe)D*>|G!rK$C8|HRs9d zh)-}~SND1zua;MxVxWP^;F12;pJ_YuL0)K|STY6)q=q6XmeH+dj=FZqHr1)Ts<_w5 zOW^7NYA-}U>=*2m4B33a=9g+X4Vs(wTi30-oqZyjt zIOnrjv18lhiR5rbYWWv&uPqCIN(Ivd3Cto`GY7i-@7O#r8ffcUE1j9&9oULhv=pC% zjRNr}XZumvKD*}`0gAWR`ZG9k30>q4Pv02$Hh8ry+nkhjv7X+Gx>;dPM>4VJL4xPU zu@ki$nMAWo%z=4jmHYgdFNvouY1pznsOO`3)?@CU{ncY_5}4%d0m&`)#u&5BNieVD~o=O2+d zOY!8VNQ7q@7{)zVH2U`THM(eMHz@{AV-fs_o@$}M-NFU(F_$>Q6>=WTPD_DNdHB_h z7UiC&@CMEm3#Z8yfC6uHkKqqB+HTChu_{slTY0&a$DpNr=~Y}X_pDa*oej!9dDqe5 z$r_*BDjMPAIM@?>bSgFkQsCGujB)_!UuGXVP>7Y7npJ$^{+s%TznK6Etl}&*9MGes zB(62Z*&&U7x(%qW@ufr5pm^{^9&QP6#vfFk z8r`eRt7GK0h&c#OE5apMiCm8Ik4YV5kRd&zAb)Ni2}wyM|H6hy2=mcF<=RsP(w@AQ zc?$3RtwcywSDMIPBkP3gu6yKOja-$6L+nG$$+A#*#-=cXC(uG&%Thls>y!XR zf0ZQv?Vn4CM-JhEI?Mh%jmM;*@#?ssmatj^L+47u_?l*|O0CN2W(Kj_m7-U+^Sc`{ z|5>W~R&5)`f|Lq1Y1#4UO6XWO-#%~Ad$w|KqYLxV3Ht4wC;Jri5^AY`p;jhHvSU58 z9)Q7}6T5o>a`@##p-DbcL}O#Fm7fe(JIJ^;VvIf(6`$&T6(8`GkL{dB zBwFF}F$1djcNu8G2?3a?X!|2mr_Bv8<5(9@aeV}JVyg1j`3YeZOe`8xOF zWg7UGj`?!Ubdna+WbB{3^+h(F8cQfq8~K{lHf9VgRwszP?9h(VYt<*l<}4*dpC#@C zH@Xnmi!G*<2)d(IYc;)Rpi%j^h8nAM7aa&0qhhu*8Y zeM+CJtdpVzS)58Z3>UwSXG+OD-JV%lz62FTg|&M;dRmQ}VbdD$)N@-~#x?4a#HY}=ml&9FnHtVT_cuhBpSYiOUa#KKG+}$PiNYY6K@UroEE}nl0W0Df` zVRW!1YzeF+&v@*+k0)&Q?8fHe+5TQv&}^>hN)1YxRO+=a+2c14K1F;Y@}$p(nXMVPcUQ#R)tK!qb8G94yz!@N(~1zg;{RYZMCd(__$^tl%$0x z>l;40^_2xhJAU)ac+-u#MuCe0>!v?PIgdCP9Uhn%qhK(n{bB%3qJ`qJC--$R9)43d z=UR??dFYG^k6q7XPz?6Rw_855W~MvCf&*%&)oI3_Y=DXa72-U__T1ft<{8h{5<$22 zOF%1d1LQgwb6s%X0B`h+w=l|0Q>x!QkIiW0C3EFrvgA%^P%}^Ha<|3W&w77J0S%%l zV2C(R+zP3OT;_hOwX@H62e`(7#AGw=i>;DmmBZI{Zmx}nAn`k##Mfyztnx4tN;{U{ z(ii4h2`6lCIMPD3RxFaU!6{49oZzGVy4#>OEyds`J$ZMgufgkG<(F3}RyP)o=T8wt z6u}Im5l~P)?~j zveuhj{RSU=eNQRoEcerDv>T6fZR^n(;RPBym-1m82=B|S3uYhr;OTSSH{{{y3uC53 zyl}Tq33N=bu8+#DFfCZebjfrg$Fn^8%1_9qXG zgOtG$UW{g9|L?8&_J(pKE;1t_>k9iQ8V3Qyvz)ioTTOoi|Gr-d^ytb^Uvf19Jhs|9 zsk(?NVE(MLISc4}$5Fz#@nu@Y5E51dFjT}Smjz+X7Q-_89Aq5l)XAqYX>!@J!<&Bp zo55WGZ$N!^uImaZQmTc>FaH^|Ih1zYCp&Dk!asQ#O9}$zgN6FYN=`!lGq_&zR0F68 zd-ag{fY?++g90b(8h&gRWaQ1w8q3(@PLo20;iL>`qP3S~M}TFP#C zvz#W2>KTrA!Ht2QjyGfJf5R0Wpo7?bgk$*DI2Hi@73b`0wWa8}sD22H#X1`@M)WA9 zKd@qI%TXs4tQ32nR_tVjOZzJELg(>QB&q7&7p8d^N;Y`k`4@`c zP|-wu^cL6yy_jGQZto!7xWr}D0}r>+OFQpa&Fl|c!FfO^4NAiz{T}<7JyXg<{!+qo zhS6p=@dgb7Sfj!k#T^z87GMSJyl)B=7p6G2Ha{QuFmo|S#CuUHXc3$BJ9nD30Mff= zXOLSu$-CuZy-eN;s7l~N-&`%J-gmtb_aCPNnG^M^Izly#M|;Qg?Y(^fbTD1mbdlVC z3}cGT!^H-TFwQCN)Ue-oPB2^+q62>b@}m}O7u7<0@r`WsCM&(lK2a32*@AmeZc{55 z`R$i2%d`v+4ioZN&0ZOuVGLRY;KtYbzfHsAA{rIkHmh<>g)52@!619M+0fieZ=WIW z%lBv)y)&1vDhh{)YWNE;Wcrg)0>sF;R-EONcEHA6c6V zEQ`KF2wz|cul|XPpYx`&%)4b4Ip8zjVwgwdMp5hT*dRzFg~~{18qZL;+-0fiBkj8g zt}n{aK8`k&pq1K~uDN4w9?PgOt&`#7Itt z!d9J@uy?hcTd=QCMG#`_P;V2FuvWv~^5&2%16gJX#U)uN(9WY^y`aA=CP1sQ0ViHk z6B+8`CRm3`@F?TKVT=vSn!0)ck^=JCY1bJhhnEgSh71-SL26qK`;25@wP=lR%Fl|W zEwr}W=lGm`5aJ*Hd%_j-o&?B-EGzH4S*ebFEZiV{#qfK!xd#Nev_EQt{kzA>$F zjqL!Pv(V&9?wl8DPR9=DPC&D?H8xfy3HSs^dwJdO>w0OMMRRjE>*kbfXQHU2=kr*%=h^9-9%OMH}-ix|q#EOtAMz6ge5J+awO zVI%o?C|_X$V(TN0#czT<+9-v8c`{aCWRHz?*Twb-lsrj&0>)4bK0e2>LO9N3hgCu- z=V_s$f>IeLLm>>unLhKUpUCNcm;{ot7sGaD6Ub1q?k1xGV|4^$7d{9IR)9-eR8^HK z^A9SC)Cme9Ybkm+RA%OMwx7}0IaldxQwtkxP3+L87$^;iw>5DiS>7};F^WGDuJ?+T zlVMZf1!)h$0t^p`o2Q;dI{a-14nvJx;5>qoB_RiuL{moqAN8(8I3giiTY9KeVe!!m zmTBC82pt8iaO``18gG)VW1Cn2pw!rV?-#|)_fmgHs3uYWNG4`)AqLnnypjm>oY|gH2Sl?A`bk~XzvuPMleG{5zOBj)M2RuQVcLK8Vwnd9aZU- ze)Uwu-GP|QIVtO;yR78p$LY^UCS9ksF1}EVfSWpIVdeNIP_K@@C)y%h1a%%qy0-Ln~ zF4gCOh)DS5%Nxebcg(PT`D(K^enNp%H(dn47Sg$=MMQrbm>5Ks!o`ZixKJYlQ`zHO zn2oL4JoHk6CTuQRRyeBMBM_T2WGT!Bfw>Qy%Zc*+Z#$D^b!>m%vn)k^ruws=y>Ecc!}N}KM@#6}Au%0aCPWnx7`R#9nP&5>HW30PP=@ z(5Ilgs066iT?%&_76J%5+Hh`Y6h9+Z$I;1h_S6DJ-fp;Yw>}-{4@Bugpb%jtvFK+2 zZMK3`(8g{7`uDhWn=0ufAG|^2Cz?;|cUrhD2*jhm&#AyDnvb1;A|gKA5*YP6rF(b3 z5KPMgq0lt;4}L16v$#hKq-TkX0c}0_P8{C?&jvtEBZ5mxadiUMD~_Nj_gbXACB(}e zp8*R!zusm zGPyHKKp9Y>{rk0_jG!kiNQVn;U#CKpHV|(VctxL&OtN~dEe8y^c1aSIKyd*Ot>JDI?_%h0Q;F;%#6dk^|?Pw7ybWS8o)-C=OvKc_frg9G+n#HitH-uAnA?{_gRn zdcHAu0@H9P&tS7ZTK6Gwm2yW{3HBBX9<2LQsZ2Je+5SG4d^>e^!_CZ$hJUn{8{@89wsQDK|t)>#4tj? zc%!JnepDx5CkL4r+I`_0GwFicD(XL@n@|#FyGsP)OVEk<&(L@%VAg%(n=V_I)s~d;>koaGO7Sr zdbx+?WREOXJ2X7oM>nVIQ}G}VcR0|%(c1F_q)+4fWUe9HOr26F^@Xa(RTeAzaCNw% zXjEo4e!q0oS%XnL)!%5DZoNhmAY?lDNoeOJzXjcqWek3{u%5tk8r#h>GSqbG$!5*A zOS{Je0`TBZg&OKc-9^=s{*EJ2{q=@tsz$C3>%PS;n|$d@ey6lKY13x%4Usi0)hkt{ z((>uCVqx`eii~GSiu1j$&tx~`zc{j3*ItW*!ePgeq0$TJUW@2!L~o07HvM9wUy7Ct zPlM+vq>z3 z*zw~e*<7(O?;QOQo>VX6;8}xV=t#_7bG=TWbXw~4s_wpxsD#`m+WTVW4m&+%p(eSz z0C7Pxb%TT)&Wf^$3ykrq0;myfJE8E}y9VOUL!d)fTl_DLaa{BPzx4^~(=eDu@dYmb z_B5b9`e=leCHeUqh5CtkViI0zy4^@JO!$iAb(ouFmH~ISm#gUABEaqnyMqbMql{iBfpNNXQ7E5SFfi0ZK0U#7n`C#Lv+$HOF|DgLpE|NNf+V2{J3&$)#8gQ{0YL#C&DM*)e2x(A zJQEluy#SC;JHH1-StG%m3xHvQkjI(Y*SP=Ej-Q~=Z(|^X25+nX>od?6f$R|oJL~m5 z;T4tGj&C&G7Mvt{H6>Lj>>!qzuH1N<|yvzfeh@M)Bpp{f?Nq2v= zVl9Cd`RgydSA`6|JKjcJ-cI7rt;l|WI+;1oqdr>ms=&O)RUf$IpaN#j4GBAfe_Grm z=gz2s3^qY0h&T3!B99#ocdUNLS0uyj3=dNdSTmO5Pg0?e|LAGCBX^88GTE|oTzYz? z_)cNuDiZJx;uHo0xEk2IP^akJhJ+%j`RS{hXgDMguoZHmwu}B6QQyIFe>@_VsX~gk znj5s%ZOn^Tv!Z*!%ne|TpsJ-%cmCJ_(ZEyl_2Lk=KXqheLhqz=BXBp&-7Sf~egrCi zE2=mJ!jhnn;aqU4m}i2wD*cOM8TqW~OM#DKBSf4evwcaDV)mn()Vtgl!jnZsF|UHf z@nWS@{p!7Zv3i7jQ|Vfu3}iQ;X!=JlPf636rmNE{{Za3pMp~*-%M$2PRf8W z3Q%#6_29#=?g*@MjN++c>Ol$^W>O%WK49KC0()Qyp1BcsNwr0ynvYBm; zqqXsM@quUa8#s`V+Ff{v4j{gXDB}Ow)=+g6 zZF))lOMj((V6u*Y+mIQ#4h23$MNYq`ld-wH=7FKq;>0bSFs?>$btW+JE*q|1#!skr z^99tdml0`LWzJV#?*ks+T()K>*J5HpuyL8U8Z%r7+8yZ8=v(=iTLVb?8LDr~-l2V*p^TG~;vbyp+L5 z;nE#wrbTr1inxBbNSUsnvucQps_Ht;lo4PqlQ)G}P-RSND~ ze3soq-(qlCXB2uYoWlct5NjGY&~Y5lr!@-c$EJEK^y-msZADV4R*50zWmN@VSqQgEZyr9w8xvtwZleMOus0pv84jDg1$~8qJD*p>NS_AE8hU&KR zvZFp#pnxYAI*i9r;u%kv1k;h^Yq}BpxnNlxH$03GavVS7j$-9{8a1z_`+y1b3jT-% z9}BNHH-TjKDr-rek3!$g_?qQ5O~g@+H*-ZT;W|D*7frM zLebFL&%ZhP4>o?jOYBRcGNx|FAlKO;6j(KD1u8b7VR>t^CzfUAtQR7}fg=gR z4HZCPqfig4$vFX-^)n`U z3mghr%lL&{D5dn+T5vqD@vFQ(5@bt}j}d{}iFXF#J1yNB{@KiGzX-hAu@Esqk!91P z;$oHA2;YC8AfjT_-_x=~51Bd|CST0U(dE+5JjyOuNXKo3Qy>&*W=dn|-C_Sh#zKkg zS{$#3JWdTk*%#Zng2lES;6K)HZsW}2mKbSJPB>?U58;;P41~c6 z>hi^WYMlS3MS4Qn520hm%J^8!pz?-^|Ul!I1A?2dxSj!3v&tGeL) zX-Gc+z56t;?!T!hoFh{ek5sF+b}tl~3ZW9Y|>sYn1lTZgqZE{6N8VV_;0K zod3p4ukHuTOVBjC_m*9Z(G|-}r_{8l#pxz)l{fYLWD#*R0A6Gba|j?*l2^hoAw^S5 zL(>046Mp1}tnEftG~nD7gF}M~h&Ms!SzR50tEpYQ+~DBk532Aj6&^_(e~<4$vBcB! z9-AOw4+0&OK1YdxvI2+UPDt_Y-~!OhLjhIEwFI8Ho-1yo6gpnB;EzM1*+0TUZZa9 zyU3w`0q55**#UIA1XV%91@axJO;?ylP=gI4c_1Xgg$Y!y@mQBl1=T+&9T~UR==E#V zIs&EDnmTT~Vcr@ohYT1%VtjRH`pp7yDbO%Rx1y_|Pb2 zOxYV-)cFBx;-E5y)l(^Mq3(s^ecP`VGN?l?sF+-q-J}b~iAiZfQjv!sOCA%DeC}*9 zw((Q2vM&+>lVxd*)jpKNtrxczhY;pNAguKl_gdEWsVSxcVVwJ>x5D1dQ{z>hG}Rr& zJXxUyW};UL$qb89eIDIyU@L!Czcmnz!-Wnk zP8*`9H70~WYdEzXcW`_=Tw-s=WG-WTrtqe6(|>|{bCfD+8_}(FF^C5firG%uZKywf z+&`kH^c#q%WW9tLO1Oa>hfMo^wt?>~o>)vr$yC#67h>wx^@GmxF!GMQ9+fsoo9ut? zQU(4mO9jtjDF(^?1baHXW(V9)l%l?8i-(4;Lw=R3rqh@>@WCEJc`G6S4r*i`DrwW& z%W*?9HgIy z7H1)UZyF&YgE88!g4`6UT<@jha_C3k#w~#dkaZGQ(SZ!WJ~>np;4mG$WS@0>Zr89Z z(*$;>o}sx^M*_!Y&grW3t{tv`Q*v>7y1Y;QpbLu434-sd`D4#O7z>Xc0?Qr07JHFm z?0P4hJ(Ddu!LWy17d6JROeeb~Ov--NYbT$_Y$}3SrgHd8bi;q41$u#={y=4hBE`10 zatEW@8)7-X+oh2I27NU0*ygh;#MAv|L=1CdxJ%~L*M0ALr5beLVjk@~75Y1d^T~#BUg!QhH{-s9I>6^JPiY@hFSz&BfHx(WdGI=I9dB@Y^ZBQTQscL2 z_r}TF?HrnQg1-pDj`WB=kkf*O3?)8OK%X6?toAQ)Qvq$zT3@BLMu-t1tEbEkjN_ zkoO<#OV@R8+t4fJY3Hywhsw4@Vjf~Q}f>A6Wmgd^aRzd_5sE8o1rvIq?N1>Qo;YU;o z4JC6G{dx297ga%FlUO5a-bX{{444dsk7|yA^EGf-Mj93R@5U}Oj_fN|ETqvq{I1*3 z_Tmsr_n~x7z4TzpnhBTC5g5sKZoEQx1bB6x(nUiKrsf zms<|+eqx5&#ycU7PBsY&UGQL_cSEepRTNU?rti;-iKTL&K_4tQ-|rZ4yYieLJHM_KM-xpp@Ph!HYDRo25n%8vsZ#snm`Ak@KDGN!#f8yo(^5SY`8~B2?B7Yo~#aH&=g` z^ZRez$s&ud{1VYQ^a0xXux%kH(lR`%v}(;_1G(5KGRQ+6&fDOoW<+CYtrs?Q}Bvi`s_ z$GFrLmg%L9N^OXJhQ|GV!jY6GPb3#|VyOfXh_9Fh31X=xy=#x0X^&6@8AMopQj2v! z7EhPyvCFC)C0K~q#!W{;h^O=ToD{WwlK%1cv(%WIMiOSM_m6JmufGL@S+^7KcQb#K zVMVW*4SZ<+Md=B_Hr#ua6_8^tDcKktlzVAl9;r?K6N-%%ViWZbI3`Tu-2!pFMO2U2 zkyLNMJa>Zg6}dGVNKj}{N+r1F0k{uTd|sfMBF$^Yidl6I#jC`2-q>CYx=OYN1)k?}UUamZD>a=aV2!+F?p022~YRJH2WH_M*QUenCo;CmG^SBmF<%cBx@Gijk?Grpuf(6f{e=u@n z%_tsUUN7hdapZq8ajJAr^(w3w$Ar63Wt2^9u!4F=`^L1k;&_AbzuF~wKNAI})Qs`QH!6ao9GRezW!ClyL#p+0?Z@YYv~3DGn)6rV z^PB4BHgKaOnBwmM_Ya)d-K@)9&*N`2X~Mh`Q8;QXR+wrS+{087HUN`Cfn#BTfL?>3WiwU5;*qSIo`xwF z@nYL;bD#!jcAdjyCt9gJl_T|K)}~E)iR7Qu7jb68fGwJ9&0xxA1!Y5p)<}-*1sT@n z$T=WUd_B)j-{Mvf=X><#rD+MN=U_bfYx6VF3;%G(KE8_Or&ZFq(tMuhc+VZ7{;^i_ zDVt#9m$Jz zIdkEb^~JXt3AJdRq%3C2;#?P&S%dYzTESN0?WswHkYFu49d??7=uE z)-`MHS()j{3!W%)zghMLZ2%wMFaV;p@qv3aL@b`n5ds#P4waK-pj$i>)riiJK(64# znu5+4(a1$^9b1FonCUiVaHJOy)5Wu~U?tntI;j(_d3x=P4PbvgB-6bc;*>vwv@dyL zAR3iK1GV({OI)Q|_8=0W%{WS>&fOW{-5jk*K*n&p=O~$9QhsPb*Vf)~8;oB5`~k9U z&xJ>xR?%Ihf50mp%v!|Fscja$O^wTu9mHDw$pEGdcW4dO5#2FX5usLXOk$K>Lda1o zF(1yJz*F*89C_BabN$+Hn=srDdSpwqBJ0j;LRlBZAvQk*T~IGcWmc3&HSol9E;x8W zC>GD4-ur!@2cH2W#W9>xe3CFmSuX#yz8-U%jjFqe-&|81vclukhi4$ z%n*48P|m`-LV#`0@~8sJ__El!%x#+|M4vO_P;eXys~nX=>X%oeGPUjiH1itb(#*;| zg7)AE*A1uUD-_zFHi=ck>^{XnYT0Oxo*I ztuwRB$X2(%FN{-$onV@exf8Zcc(6>Tmcls;UOBJ zjS%38cM44bM>_J`HXFRK7GE#IPXA+Odmk21ZDdgetDkfK1@uhoGWGyAsFl+MremM! zy_Yh{{1yUftZ!pC+*nI!wVa<^A1z!BkmLl_%z%8(jcCxK=B!DuzskTiXXTr@&vI3& zE{tUAkAjiw8h_FDQ40Leq#pv~F(Wm@Or{4C;B2*SzY{5lqHxv}6N5e(Ia?QHPnKyi z@2Q^^Yn2T)mP;yBE{PY+i zXo*?)t_PBSo~C%v#&@F6%mN1{MIi8FeDrhACY#{a$<)4jHb)~Ufbx@uZ`Q7lt|A0T zsVZO?-KVVt))t`OZzAm}>{k{O{UE)lbxWU+rb(E-fhYx71fl|x)ifgB#tCi>_Ksch zwG1Phpx$#`Xd3Eo3yeCaeYXIXMQCji%GPlrH~=ESZ$deiiU4u@eIo}kaLdWaN8SA? zi|mpYZLnyUf_9trM43R{k?w;hpiG&FzBbAficAL{h_rO6PO-n+6g@*4?l-o3_M?r5 zIviuF@eK2-(uqFJo6}z{az9z?z==EOQ)H_+76JO+X_sqKx>Lj4PaQYq>EYt>8o_XbDl&Z`bDWU2%`{eOI9J2^RB|8F?x*J zp0E?BwT0w$Yyz$26^)Cip5M!8T zr$i!NXDai7>BZB`@pXllG3h?^?YdmO;Qz%WiX-lmAaQZ78$j-wsQ(6))t^7=AtztF z+7j5X?uBeob>fh2aKO+q%rCCIBlx%ggqE^X-va-1X3oZ{3UV}>N}{m(M%6caCni5; z06XlBOa7{xBX0uLGT8#Ho6WQ?Ph@EZ#Qfi77qa0B7*v{3<>2WyO2aNjObDSO!4j|03{`iZyz<1;mnt1f}b?U+B_DLxU<> zO~=P|8wdGARcBUC41~cnEQBG}V%mEGmkFx@l2L-Kg3!e-^X~Qm`@-gTf*%4djc;Uh zJKJ=9{VJHUTOsh2<0NK;M5+=ImFjMhifxsYZzDcXn4QW>i1E>%EL$GzPn$t<(|2TW z8q!*1*s7Rm#fc*)jfzK4lpRy*-Bt}f94wwx6M0`3*aP1kMP=T!#ORc=K)`9hf4PjG zTyURRD;r)2HV8BW!)TJN<$=Qw+FFiE`u+rqjgdG~R*QMb{FsT4!3xk}mKGL!P+VWg4|QRl*+`;Gv}~lOv_d0COGp z8vZmoQ=%lt!#a0PrTcEd^?qib2%$W58lt~>WRxe}RE8Pij$VdV^3Yxp`4RYAKa1A+5re$z`Re1(Ii=xPD{?-Ew@^jXDW>!5d-br;ZoGTR7yl_ck zFqN3Q!9(80)221MfzfrE8TH3-t?~{pV_D>G4Ej&CkCywuBFdQ+He-wUGSZ5s+AN)q6j>NFM0}5bu8{Wq!a(SK5Vwc4r_+9$U$C;$$-hPd0y?g3? z_fv?Y66miiW@L@I=5LF~38VF3y-{NO6-hh&!?X*L#yf)GAFtFZH&PA&kg{&h$Az+D zQJi}bxQq%twQqKw?PcJDkO~fO;@4LTcsOSNohWZ->E!yv@^ceP8jRR1p% zoBc}F<_@u^cO}O-Z*4WVaii(xfOWM@LGc>mVnW5=AMt}jx2Bmj)D*y;0{X*u$aiyy z8z5VB>Y3v|o#VasXWdtc(oj#TLNpnS_Znc96*nGq#IouMi3X9tiP8dvId4G5 zB(3BH<3|`q6AZ?OGDRQ(y|YwiBzET-WRgmM6LpKIgxP_!QiWH`#CxFRJR>#Xg%tj_ z(TluE>{u~eCB{}UpS-EIXadH(7NDg41$_ufE1oW^l|-w1aBGc3Yo8hol0*cBnb{WR zJ~|g#6=nZ@_TBTQ`|K#|My!K4nvEf)kR(9u8E4ELDI%?#2gjo%X8q<6q4KteSeAX} ze|)h~+!c=WZy2lB5A7HtE-G`4ul;g-9z_yh(-~rP< zQ>ozI{#l9Zg^4~}YdR*Tw!whC_vcIx+&$?v2=DeHdk zHBu`~qoS28=%6!>I1;;ODlo{)0Z;@5fa_z4O_h6047|%1E|;w(Kzni8U&+o9!g18hq%CXlz5rrbd_(3 z<<%D0t^2qC>Cm8qM=pXr>K9X|!X>=M9qUCvCiCSp=9G^Kw@EoI(8GMP8pZ(C1tP)# zkv}aiwPAasz71*uNfbKOu~7S;e|OM|$%U3puLqL?oB3hjoqzU@)RG2;%cV ztZ?^=*j=jzl@UKo^+Xu8C(l^*8s6pef_JZ@Tc*w|C_SLBq!avT6jBk9P1mI;k7L8- z*d<-qXH+o5 zPpLv3In{J}>|NAA+E!zM%Tkg!q@is4o%oTJ!x!AU%EIxdk15}UGP(tiB5#^-$CkUI zLjXiA1<=#S}C}C9w&UEz^7HFjb0;EGOqCfc&K7E*eN*QTDy)uI55>- z^skX*z+a|UzapXW7?oe97BFbi{0&oSSn?ev-aP2uZdF(8P{;tp`^Y0>+@g}muIoZ9(YwF2Slx*};CS!}DAOd8RC#w-R${^@tt&PfB=wkwBc^P-k)uK>hPOA&tiN8mE-mQ#C=b z8WH_6-cB%ADme{@EF{AXeaXq=Q;S~I9W&TQxXUij-YyG>?vP9!PY*D!7+#IH49#X= z*kVU}PqE8)i^WaIk%=pCQ}e^6Lk7{!#@5v!<4RQBe;}L#4A7L9S5PnGlxwr_j@%`` ze9RrP5T2YhiDm{WY>1>mZfH!}XueO%Hi+~=X(ji?9UX{jDoio72r|32I-8WY`H7leST za=`;kh5djqg#@PoBjqQ{Gt(}kBa6?u6QljpfPK5ZILfYZSbuyD`ff&aR!X_Y#}+&;0pm#bW=1CDoGxorxe@?V@3isR z1n$8ZYAHi>eaysN^xRaH9+~EULP34WjNC)vwYp2vSFI8%@U@16F}|Ifz?fzp8ZLm& zs1WAzAN@=9ZY|}p&%x1vDvBExijD(Cj6+b*LO$N!OVkI%Ek5W$3U-0oIR6h7^bUp3 z)c`i79KPu_kr(|F+-Oq74d|l&p#R5#4`9qsbBiHiT%~$mnIH| z^-D~!ctdyQ9ZM5A*jHp2T5q0ZXCPK?=Vq-559@|H&>8@mAmB6Q)Ux3L6qzz?0j3f= z#t?M%*l4>2mOrlf?^4+d(_oh=&YL|Pn|}DH`95ceeJXCEuEA5J(kMx^ie;Eh=A0TC z%`&5_#n?n3uxCK_Mk5xCHVOXwv|ia zgnjN3NsrFW8tHwIkpvYMBWK;v2H4!zK@|D&1ABPsT@wQH&K8n?F0Ml372Sy?aJ1%5xn6Q-2(2kvX*_-!TlJi%b{>lFwFM z{;tAItB+h&?(+(DLJs7_Tc{oxuik#Vb%=(}g#Lf+4LQ}}bt$)<+D@{GZEsY5aEmgx!SeIECIXJm3^|4{Re!83pP9>Fi*IXnwe_s-? zzPDWl!IA>y)r&lOZIa!^r)6<975bvuBz%Mi@An_uvrB>mm1|jFml2IVVG0ciP|5K4 zO0wEX$^S(~$s8P&XxuF;P)w;Xf<-vm5}z|xvK}`=8lWp-cGS#62dhbqT94!SE-P8g zEk-kaO5WOZdDik2$nYHEK}LFC@m3;-jqPy?iMKmP*3zJm!e z&nsQ0U_Hx@IK&C!p@WlhI6MwuGhBHHlwYfS;(8{0$)pm0Yp^TrxAkT%fAnw0ZSg1R z1&+oTl`@OR7xRi$$gjOa!8^E_VmN;h5Z6IgmH#FHpzkFo5%Th&Bd41|A#3Tr<2Ley zyXmL$LU>`x0`*s>f2NZM58F3uROw-AF%jEfMED2-$k3`2?UJ~y3&g(vL=C6wP+f42 z1#YqKMlijE*jCNM9SJ!c?1EUv7$nnE517Ke8q&YKsRk)2Aal~sSC|>jou^mO<)=g) z{U5KX8?=M!17!VYfR=X6q$~DNu5KO)$h%H1@C`yEN5dmvINM6oUzImzerH~o%mYR} z=QgD*nR#Wu5@jZ-PyLIFmpV3|Xa#{Ijz#%`y;*Cvh>|=O!dzpFCN@-E0vAU9iqHlGUh7g*pZUAI#- zKC5SP6BAZLDBl0pD^&x2=$|l{I4GJ>^_czq zjzy;*$WV260}5mX?xrG^*|kSES=C^$FvcIA2}5ROaF)iU#>9>TQWALYGdB=A#U)UTH+_Jrw8 zZbfIGPH`esf1vY!IIO021VUoh+t8y_i4-|Bbx^euIi~(4;mh+sK;r1%L}U8-v|D;; z>RlvZpgiKzQE`S5evX&!+uYKTCihPl&3-OoJtqt^;r)?3N~Tb%!?RkyUN$s(;~0HH zwZOAT0BR_TF9EWGdtL1n?XEkdfqhH5;zFGVi6f=-8d}zl>cB=HE!2{DJ6BjQ@{EmZ zZhbYm^_zrm$WDoUK?sN}N)-;mpvQjTKB$BHRmgKtP#d&$FIvdb3v_%gsq2^2Jn^js zUJKyy060bEzYx4}(W_)aHds4=h7cml9ujO{3Swc?A7y!&0X8m|Ak+()0p9_o%otM1 zw9S4V?Y=iHn@CAu6r zLyxX9NmrfIz#9u?i>lIrq*-e-UEanhuIcTGjw_R^?g7oL5iXYDtNyc&k;(>5^K7rhRc762KwwAL1Z>kK1xK-})V<%Ktnj?n`xWi2f{pFn}gp1m<~`8vn$aX|;N7r|PS$;*tWHDaGMT^9 zI3Tm)=%t=dQ~f22MsioyG4eW;V;Zp7cUsb2xF12&5|&1Dza;_Jbs_c%g0tG@$U%1^ z=JCazsU6x2<;1;3XqwqE3`cl>7|R6_h#RQJLH8*oLBH++oo7;2V8losIua>O&)x?&2zp+uRTW7LNaWHg+J4&3l-gL83!`sOj?<0$+-<}pjE zMScH*g}NKJd7aqN_Kj@X8NUXrwSTNa|E#`V$!X!0QoXpx31k4yJ}8p}Swi|kU{|Dc zaUje^{qm?oD}lz&s1#)(mS@^f$t2x;1y8wMz2#*yDvrg6`UIOCXWh+gZ>yNQ4= zuz;jTcap=5-C`AZ4Ni0KW)1N|)>+7!B)r><=APB#UDTw!c=KV9tY7CNa~J;#D=U2!@G7M)$E>v9zv>m~CJ8Vt8APZIyhcQ%(;t?F~E@tZZG*ghbej zHtGmRH_TEC|0=XV=w%MbE1NKJ}(!#~og}Opdb65^G5jYjlA0bTqh7 zu-dBxP0YRuCdb@If_tJ#-bBC(r=&$6Q7AjKnOziHJ?M$?{0MVdk-GKG<{OwDbgZOa z3wyVIEc82%XTS}CfpodAWvb&gCmvnvow0o$7GFa{t9vlc>MdGoK8>)P3`!lQ$DA*pid7N(82$7C zBoTo#XGnotnvCq%1S#NAb1k65Xau4G!Zsf#Q}uk-&fg5&!MNo}0c~4#f&MmT4+L$* zU^y+3**UjjDoIlByZ-Ni3PxCtgu*w!D6=e*XSo)rMy{b`5$RIlVG5R`_GEqxp_{v; zT7H0=7AP@VXZ%G)pXc$yvQW)HbX=|ZLS48jXrlga{hh-6xoCUT$U$^J#4`O;s3{p? zYpV*8^Ep-P_N9GF{f5!k4PuiIF8mot&3gGOWiyY&IMAX#7{x7(_5?h&<0+mW3>d(5cgvZsdZAsWA;00b#HnR7`Dh6yYR zkJYN(i4@I0MjGw;+Yjne8PwmaC+}(3>uoQa*rjJ%R1NMAZj5d=ITVL%t%7+>ICW6C z3inFS46AsB*%9RQXKpXK)S)wAP0V2Ld@PMG945Lu!_+Mh32CF@6dBI`l^9#Yb^zux zg<6Eq?bOeN#SF^GfbKDmLbZ;tr7AVg4R*|9okC|W!etzXEMxgll`AhhtSO6rNAP5j zUOE3s>V3OyFCA!^K-4-_#qA`_i+;st1W&vg_wBren2*X+PqaM=-4eRd*3tmgm_6$wd4V+s zdg+-pyj{-L2_eKYApN*-GM$S>j=39n~q z8Gu9Y*eAAChgjorVQWP@3m^uUiF2-jpJl^(lMP7=?UL2yoirp;^(mtkar(KKU)-#X zW-h2ZCUzMRw-|g)M?sz(9%|_DJjIz&EyY;KS=a3T6u$+@VE@gSW9XL!$6-JC-1HxI zl~I7ol4QgoaQo;SamKCz&?zsYJgikIr06FOUnfd(5t|+|`JiMDGVZNlFt^HB=A1|L zN?nHHRph_xp$(kDKjx{5Ly0%fd?MCJ-q!V7=%0J0Uw86FtW%;?;4nge-N2BCsbk(6 zmEpVizWWjb5r!uiHbbcyb)R@qp=AYlr)ao`4Q`Rs8-@{M9Yc1%XNRH8j<&1yQEV=v>( z5i$t@Y9|QB`6H+m@mw0V9$4jh(@vxOX|_*|i0!9h+1wM6eEL{k^jeM8#3J~yti`HH zegfb0^~jH%M5U#ACOC@08U4HcJq6%MCzt*2M?F|qN3hweZqrAfD1MIv7JK5ZjdLZR z%Jf~apy?ZJ-Z?j`E0_8lei-tgTU2hpo_+?u;rW4QQR!dVZ014ZIPl;)!$@e5@C+6D zCvSawz^SHX!U`0~7-3y~Dw_I78XL#(>i1Ti9zDL+p_H6wedP#*8?IfKFqfDb9T z^Na6(^S|J@c$3eKlP5EdeH9C@i=`gYM8C$5oY!T@+}WsHia)+`FNiXGm6?P-?UVa$ z1JJEYMB7e*3K~__gTffJOFO+kxrC-oSBky~_(94#C{^-IeMw_s!O;Dx!Bgbcd`MNv zJKx#Wj&=tqcKU93g}_G|D_? zj$r$3B3ok$8F=^;jn&oI2TDI`;WnFuol9Q05$GHiTmGrZ?o?fgs6fw3R|g4&r1}eo zjLce2G&oYk_hYMcw37y8}mz2*1ASb79XCSaIEC;D}W-D zrj<^vijCC@&BK)KZH}I#R6My|l^Ub*EoBd4TVZ&{(Roev#e%3kgPh2}l)WKQATHnT9q3t zbr>t60zTxEG<-4Su@Vtc>(T9X7nS-mTDnL*Rc5&Jbrm2jqY&~N5M1x$>#bM;)j1F; zmIF6Fu^;!mS?3NeU|7^-Hwzt2Qo;)aZe?Y56iIWX0J2`3_pZsS=4H)uv4XdU>mbgA z2@NyZcnS*iheo^U;R?(fx+kZ;STeiaW!%-9*=cVystDOEy9S|`hAfCra1JfqR=se& zve%$OfN9h`xDE}4-oK9}uP(Y;T@?=21pzJHKba5QiYN?qX5a?az|Y57*Iu?0)VS%0%Krb4&dxaX#-TI%tC#i3^CyZ)y;>vHNo11 zK6F*PFRYF)aP+3Eo*>c>Z1u!P{7Dm;xxDDN2@Olt#CuAaDW>hA^Zq1S6Unz4W#bn< zMaK!HNVM}PV-{e4#|(Wx6t&XdKcD*lhU7jL`-sNKuiFLnSZRQWr+`&Z#13L~&;_G| zaM|5(c(sci+}qd4w1)?*l-l+YT|{LrG!}5_vn!h-Fji~PO-jf)H-!_?NLR&=paIvo zAPukgID?kCJyNIkL5UwB6P`nyT%Y2SBSu|L@CJ2n-N-TTA|5=ZKz>1JP0w{~wa-#* zNuwVZhlU3=hinzJGmEpcYgmW65zm{AAO+pVWn>C1WzI70v^1?ZA{YZ+)*~NaT9lO45Iji3Vkndt)rIv&!PM z5Kg8y(@-i|+$W{CbZk}T;+QM-ywzJEFmeg5)NU$6;#w^;$9R|ud?Gio(vAr$>{P(* z;Y0qoudc`H4>QJWiGE4;vDPA$+e7BJgII*-ggFOs%y3ar|Df~NCL!+)BOj~R0s;h< zIA5Su+7{?UrDd;TeoQIrMf{(6J)N0u`y=uBgQ)2peQ(4&6=*@0)>8~l=CWTw(p9YK zzVufx2M-Mr5E^RcyXC}=FQF!w2+t`kT$Fhz8tHq^z;TtnekhZU=tC3h+R&j1#>ac0 z&{hw=^7ZhYkTpBdtGZ)!;Yc>74PhMV@WBKh6LWGh(6lHZNJ?Z<3+cIK=Cp%%8t|64vbh^ix;qDP{Ip^VQzd5X1i6*c78&qYrVQ00y5WPF=;+jm2 z#p5w&zg?Z=0&^*%^&RX%AiRb1F3enO>U+mG0s_BHdn|+*q2_s9mmoS@g_G zaRojh$VUP?5XZj@@5#dLSm=X*KFU4$wyNf=OE)wy5>IvYl)Vi_5$p_xAzrX=@p+W#?84O>c%DOHIRZ zw~D5OXkJ!t@!R!Bk2=6qsA_PI`(RZy8kLgZ_RlR&zhhji> zWDvp(y#Tbu<5uGyux|G;XreZJ*`ZqmNFeZV%RSfqfP&=5slSRLlYI|{hwS0s{?G+C zd}~@^|Ak}i7hY#!XI)LMcKfe@6VH6+C@HS-F-)fQP7$qmmZOJ}6wY$lKzp&lzi8K1oq)iIxcX1W zQ^HPv^nlSH2n@#>0Su?5G2wOl+*@OHX`XI|@BGmV^AOvE5@NN|C<{WNDF~pB$A*P) zG3-cZnEK9y?T(yl8Jaa4;MgaWQ?Y2$$jl@oGwrs*TGD?)15}rBe4@71myTs%#Ri3d z!ceEUMj~xg>Dccz$#Y(MhJ%7If~yL$$%g`Nb}Y-?-FzwDDz3IiiTWk;UF8B=Rstq` z7?`#4V>4EJW^1!4e@HUF8+{x5s3BLHk9;XPRv$+rOC)(m2qIa;^eu9Nav#l~gsE(O93|0eo4Xe;y};D#G^ z*mn>XhYkWk7^PP)N#OCRtodtlVx$!(HlS%Ht1zs+@1^!PRG~06#e(K!) zUdd;@3Rt=_lt*Jm8!#&ax1KS>jp~cWAmTVO16E8gj4IZwr`rm0NU-ochjEPVYXok@BW@cpw$^qa3qRf(}iO3q{8Ldvm(&CsCRueeQSk7q@R zwh70HL|Upk&0jxOh1zIDONY(4b5PR}$k15ckXzH5s;Y|Y6$whm%~-nMknF*UGJnb` zP_e-sl^-K5(H>chTyrpCArR&tJ*}Tu>HrP686a=u2V{?sr~XD1@P}ads7+^{F?@;q z$olHrH-6m5o?=Q;9nVM@{$M%hC$qsfv&g4+)Ij~gxm|fypPf$Gu6_d?Itddd;Cso3 zAXx|bYQMTNS*8J#DRR=}p6yW=d{ zd(&OpNwHnimkzOX?FaNXnNNivxnbRqB}=!7-}yA@>*f9FMH^5K{;+O8b|TkMF7~4Z zf;PgiOJ-yahy^=o1%m~0-%z6%#~m#F11&vaI}+eYbuBz(cXM@4>cOHyVgUHIMh3g{Z$cW|uUW zZA1i+wqIw^M5dYMi;RWYf?6VFKNj)H)i=7BBYpud?GJigrmI)#v~p5_1)h@FV5G21 zw>5t)0z5Y9sN0eGIkltY9dG=U{09u?vFwd`37PnBhvqtBCjW{`hCIHrqgX zMjluOwZ0t6?UgcPNtxyV()tA>=a z_@hn~!>Q%uC1C$F)0d>A6?sZaQLy9r^3l+nnmDaxU6EDi{4`TVfr^l=-CvgU1YcGF;dk1K3dE}-h3LOYzL zK$82d+UrP<#|wUM1RkA|LB0GeID^j~rD~KgLSKD99 z@$u{PRddK6e5)g9aawrwJpdrx57&rpR{TLKSFRlSqwQ_R&K~EvS;0g(j`lQ{d^piA zE2;}@#kVq{hpPlBK2mjr@ArL7bSppUP*y_*rrA7Zkyx{?#5tjcMDSl&Ua)$ix^23c zzxGCIAc(93P{yTdIT2lGb9*4oT>H9OsWiPpzeE`R^Rr$W;S+cTt}fBJ9%cAx6Yza0 zLBH&Vle!^1I(on)LcR-~b=sQc31Q{&=uWsyq&=;K^9%FNf&0#}5Tf-t*F!1sL`(v? ztA_$-%4IpMW*Z)0U>p=5=qWwK-waLCC8G&i$!wu6H>%&gC$Eoh30;@lHs4IjC^*(c zaKnjQ2qX)D$4!i=>Kf8_aHb)Z^JHfzE=>qhP})=W8ZSeI+etdm2v?Z9DroVE!$L*C zZO3gc;p01Zh`)!<^5{}_vFOYHCM%uhjX>IAW zlR%RdFy0YpY`|R+e>Oi1K(D*(G`uw=6j^&C+cA3LG)~8+1jsdh{_&07A?$65L41!z zt7xF77Wu3S?vIj#Pb!B#&2OO?e$PGIQ358Gx@GGtjX@5~+7oaa-VQf^rvL_^hwiOH z)cFG&6ac)}!^8{q7}jOFUz75P7a|;4K>dS}h~Oly!68UtrkvVj46d}NCW!zG3NtEk z_Y37IwQXml`R=n3Vo;5sPDc4FIYSW2ZE$C%N%JP#{p&zEx^)lV^Ce#!)NTaTy9<#m zp3q01uaoN$u+{aIk8227dA*C=AB|+=&e2WP)V8^qlbj* z%uN;xqOzF|U7v##x9QuZPcV=Ai4H8h@ljA^v1YzctPEn1~-!SSw3 z6fRDA!F@=%`0qg{uo95@gJGSxrG0)7RZvF`f)jDlo;t)S7@hdQv4l$C@`W zk?$Kkx~yojs}yX?CA0;ce$~kV|BfK~yavpS&5k$N=&h=C1)uzU1#7+_KKUJ4iE>`8 z;$1F>Ale-LEodp%F6M;+J2Wt@5E67_+&UF{c(b6+!R$f$9Bq988p;w~dYgh7;IpLwwq4^8We4+3di_6`|F*0l{7JCP&(LLI ze0wwj4#}L=1ZQ7BYd4(GY`eMbvn&#`_l6(99kMp$0W7yeQ{A#{iX4@$+-{Nq={G3O zn$dc8WLdp(FJE?E0&BmBn@+U*aPKZ(Ia7pp7IuGf!lej~BM%bRipgDR3YjtN97;nI zfOkK6xXGv^Nt8_H9W;}5TyLWLqra$gqqzw!cEK(YKnth4_lZOmUx4q}e~Lnj#hrZ! z&a)mnmq)H|9g(tJGT;Z19(}a7UubQK7oQrPFDrBGACh^R@G#yhnc}sxch^WZ!$28@ z!-1+Qc!;0qYDBRazosRVT^!2vD^~$R0cGAh$mjmwm0Qe?Q9So}0!QXuMIjSTx=aQV zwYtHkL6#UFQ_(;9XJRyG&RUa#p_wq2i;rr9XXw4}aBaGt90RxpZn^DcE-hcqIe9?3-ZAM+JI;V7=s6g> zwD*y}?g`zpOLpp`s?Kq502_RnDeoOt%JIxQ5B&fi-rie&KsfTaV=8-FU)}KM;6*?v zAy0<^D!cN&b`|OuAofSjv2#Gb2(Fp7ccZkBiMf`I*+>2H@Dt`qpC88*HA?rbRihE%mr!XvS1Px4-L=T zy>>ygd@}4!hty@ijwwo5F@d_ll>UIXOaS$bwUFD^G~slL^%tuXCV)V^A@|=|AowVk z8?(98DTp-L7Dm#bXf2EoS@LTH{I+*FY;HjsK~t)kek;#CZ2f6Ej+r_TZWAtWwoUOa zAETZkYuwpq5tD#OHS$V1$GUDJ@32ohRfsmU;@g=hp~AXOMl0T`dQ?7CoK3N1QTZv< z(NRla)(-C~=83pQ=JEug%JdFB(ly7wt-3c*Y<w@F5i`4t%2$a$5I`sQ$;ZN^ zW}V{It`sVf!vL=Fym*Vk)BB!kC#b?nyJQo{BXycL%l zVz(3azANu<=#CX5Ej)7D)s16_D%+AuAkHY84fT*cux_p0i9S2;n#f19VxDtUO588|jrR45VFbpU}&3yl2p zi!~Q}Vb!a+Kri>aMb|G^O+*dQ0Z0)@)sd%!XFJ)W0Sb*3Eo*`sYEMNQu9Wrcdda_@ z#>dY`UhDt;{GaT^n%JVGY~H<5szEPZ-#QL2!Yt%QHIl9j(0rminJen_Mhd8Ip=o7a zImfcYc-|%91KEx=mT5!6NEYv5h=cHotgchS`oSPUnoCuVYmfS7*NYEL-Ob?bNaV;` zOVh^-1t_k}FSBSgA|M=O(p1FuF>W*nKS6#O7dqk5x2IX`vRo~DU3NyhD!0#4q9v#w zj4ZOiCiBs?29!VGJkLJDLg@b`lQpJDb$pBIVykEIk7>k&Lv62w zyif?MnYo8y&w2)ryr&qqC-VagzS`)n%m{%ZzQ$8&5`93+oCk6DyTI=h*N=oD0mk1@ z$fkVo0W%{lQM)-X>qopm%@4-z#xg}V4W2}b=f{k|wW97NcaQZ#zl2K47$qi=eyrk| zmeEh~hdC^?t-4NqArjd`$tKZiDJY$& zO|SfSN__s%n3uQ4^m}U{#Wiu~`q0V;w~)A{bA6|Bn3<~sbNT`x_Y*BJW!0Ij>jAe~mtpG#;&+jD87vF3e40yyTFlfzXswfwOxo1DFT3~6V>i~BV_;T}9T>>w;z!5$O%r)7Whk*ONbH?Lg^c=SiX4WU-te-o1KqJZ4{Vo&T7V@KTx=7{ zg->RjE$Ciy+jYa|+<#ml1H7wmbaL;$YnTZOW+0+7uX}`6T&3&C<$CIW{nIr>;BC)e z|D1out^Gbkv=}ys-UvYxm9wmt{f84=00IFC@Um6`o6_4b@^ObFP3Kj=2hP0zo6|(d zyOsyL|1&-sJ+PH|bdn@+wl5nebC$yjDn1HY+-xzNtBBQGx>R9f9fs}Bm|Os#SCx*l zk0-1;)6icRB0Ik`hsabkd!%8xPMuPd@*hS%dM z_9B6Iwy$BLH3Y;?JPlPEg4@vmwnex6Z+%mFbN5#LSW^LXrSQrG4WfI%^=4xrZR{5Lv@&{!PsQ zN={!lMuKwMo%TnoIGwquIBx?^-SOViV{9Z|LkbObH)z&ogb|usHPKMxnCw}u%5Okt zZfRl)#pkegrOMTcIqil#ZiBVe2MD7k%5M`tT~(U!G|c?z&nSpIRc zN+kG~E$yW|@7>6V`->$RgpRMswu*>4Soe>X1)8D7#jq!qG=|YkCk3bYpxdtf6Yb4&M(QqD&}Y=|Z(ZXEoZ8*8H? z*=?ur2cy6n|G})Iv^@L$H2?p+=Bxe)0t>ee??w-uv?5dRIyDUoi_%G)Y=aHV4|7zT z+1)1@LfkPXA*YYv`%;1kdE!tjBn&$SPdq~yxQ`ea}oT5WD={QcvCek4-SJrE1H z?$z~b!`2#5#p7-+?zYhVDg3DxZT4V){~K<|g4DbT`k0p$A&RpKRAoZ1*hsM)z@X@@gh);YqvZN$mQg&gTU2JyRy>4BBS{HO`Ba;ke!t5a86lgUVJMehL zEjP<#uT459C?4QDo=>T4r=%v2U`eqy&jbA5-iJnsq%GOu{8)IR_ie%MZCY-Ubgt?N z9?^tw{$;^L+h$C-`b{4q#6c{;N206UMdC7F5*%T*`;y~iS;M#?^-3$H4lE&R^>>k5 z4NgVM{G>2TbGjz*A=}yHlGKDtwlvQfTxy2hXG`NB8YlB=WlB>aekxRQ;=2{Ekm^B` zqY|#F=5S4aSGAXmNg`|aM2+Ne3|}92J8uO1;7+9jf%~rhVH4ovbL2A9O#Nn~;Qy?7 zu%a$SIS98SRk1su5%@a<(t(^}3bjvM4>ZKE?_Xh`@vJLfCqDD1nyG}4WV z9oSj?5El*a|LUicPSxpG0>c;+q`1hO_~eZ@XdC&P$2bUUj2yd?+?&q0s9Jvf}mKa@+v<;x$QKtodoT zu(Pa7dKGV$7zxkiS)tL`a#RTN z<7c&DAm-E8GvKd^a0kLr6?}0IHqp4!>9S@(Lm#kIkR*+EgZNVGdgZV{Rwf-$2{XZLxok){w_o=?tV?soK9GUVU{f4GE_Js9kj;KKKZ|4G3ggya0 zu}PvLY=#Ywt|>GU%0)=+4J*U_(aix}diM4JT`X=TPg<<&3R_`dZ*^c5!bK zT6gL~+o#!u7d_g@B|s=dz_}P`aIy!)M2HupL&7yc|NPpn?CJnZbqbMazBDa5QpEPf zk5dZh3=P^ftXWBqhmcrG4lT7#neVwvC1&HbCC{4`8j873lTwTom61)Jcrq`)J)@Wj zWCCI%XFmwu77UpaDcna9A24~a?agwB^Z1x6FAS<~lc*`ILZ=b7C+L(J(}JlTjvR@8 zZN6+3SR#FL>_6{0AGba9;h{7`?B;ACDV7M|N~9~68nkYB0kNx^LMG?Yv4EKZ`L_-a zR{Sedmi#RE_k%ocaEG1qXL)MmqzR?S8cCmugPqm&7G9Eh)gG=~c5D zF0hK%c9KtPQ_SG(491eY40q_n^48J+1|B*Mx|B_%C+RLM5N}DH(yM>6tMTr7p1py? zsXSJrmALQ;TL$@+(L^eW=}PiAn4la2w2l$_JLp#IR;>b*wWMoFC^RuK)-j|e zIPJhmniuqZd8}`(w-DQ+O>MQeVn{Rg_yAHUQ*yHm*1LB_AJJ#orFe+#Z<6uzeG!-j zbipO{4B2^vYU_)4#lyi2tZ_eaGtX-> zZ#uMw)P?L75^U0mu7n9ZOLudj&r~zx8GYN$R1~th;999oKveols})Xh>+LGVFaV)p z!cZXz%P_UmaAUEz6(FC^CRz2>Rnr`bidsCapH~dRnYT48H zG-27mVv0#IMd5Tn)vt9lY5lk`fsD)BvJ>Ks9$Y;#<2R-eq*HC0b~Z2a!FS6q_#X?)FIN+f0ZX%jQaAXdI&{Psdgo zL22h7##%nSf~uP@WHBX?yf$!_OR=NsL)bWe27Qx3L@(}&o%)4`S$(A5E#&h>l9tu{ zgJ*yJ#JDY{1j*?zHia%Kcwo|~W~*c{09jzn%$Tbu{EGkh2RIl+gK(- zxajuS+kS}|?OS9vap^-vNVjc={DGCcDUt%`)CFz5WVB^??4*ti{tCWkL*lz8r~kCm zk9XnHfaNomU2b_A(BkkaB}xhsQh@@GR)I@>gDmb$Rc1Iw!(kE~=LNybujQuuXSONW zg;{~*mM9lfnP9YATW;w_=wGhYw-Z75O$1Z^$Vfm^Kyp!-gY@Ivww>vbBsw(e;tC13 zmp$1y#4W6l1$93GI8vr$mM#)C@F5KhYsrMuFK`;?25ZO0A$Rm!Iz?v?-KPMQl=ZM-%DgOgp+=58Zri%2SBE9vgE<-MnU(FFU>Z(S8n14V zIic?iY)t)p{v-X${%H8}H=_hO?lgQ;w>nk(TTzx8JHwlPo-DP|L2Ht#E?C_k%0eCO zdaGMN>||38&DoXQ{tVX8?=+{y9)l8wULhQRBpaubj`H`3&#Ek;^bl~&uiLLV)Xgk! zl#L%Afzgu)PDnGZPxkwxX{rS^qiu;DmF98sC1(fXu7uJw-j*aP(-Vort8okf4Fj+s zJ0g@}zy}&&S)+c2_)GUp8beQzwLOSFSp8TWKv;dwM^o%REq7(N82eY?cyxSxP(v}zN4kK)3zg=zCfKceDz8fM5{dAW;E?JwX{^LWHg!4J6ZTns-j|xT zrM)X~tb6R>@Tho++pKLHE31JzGyS&cmy3mzPmx${a(E219T8<2eeq@ZtGtj9fxZ^q zGtZSM4l#V5l3XPx4q9<0&fRIysA3<>%ch=T@A${sx)wU_d1*qK7blBWAyEjM>0MgW zq4BwtvS0`6akf$_Jp;}7rd4(wgFVuOu7^u&@B_k(WXCjU=v=S>f77i{50`R6k*E!y zVfKlb&0w8Z)zO{OnW3|NfTN#2$4qW8YMYXG70_<%TL{{@s>G8))PbkF3 zhZ2)$jS+7?5Xh1qS+{RHg@~D`=6neB26G&kxlL7bq$yJt$LeHQI{#@QttN$kqX}Ck zICsEYB>9{`89SFk0a$QR$!dR|x}ZoZQ&s!}e@>A{!kW1sBZWy3Um^-45w?{O|NRx! za|&Z>lxC00TL7fq{ewiBl4^A!HTzAqq;%V7G=yf@_nmtCoC5$qK)}BVR2kMVo;mr) zF0#HB@Pb&X)QZMrf?2+v)sZWLpXDl*0AX-#ZvuBLiCE9zl`XEjt9-sERrj3G#Ji-5 zES}V+L#Q}c9`v%Rj(7koL)9dn7h5J(T8~+&{jwlcI~4MTKOgIiIjcv zBwS}$a-*TYUIR5P3r&Ix#075B@-CVKmi>%YNJ_O-hv2sw7miNo_4G6Eifgc~b8(5K zZ6GA8Dd+}h@afd0gHg^Ckr_3n6xrOe)D!>;cdgNa5)Q9Mr40?j$`~9EIUpK^QFJWb zr2uxI_qba6eH9EFDf4(QsQ5YPYzNj9v$_Nkm4^cDMygX z-eN><>cWz7;Q~pMe~X?(MzV<49^_K^@!P8cU*>Q7eH7u2K6qq~)5Ktz_Uw+Yw6kz6 z$_Gh9&EGhuAFdd{<~EcjkuH%uum=_{k)iN6TEn*es#;c=fT|_nnD>Gz_7KY&7Im4s z*bqOOShI_X@l0s$G=nq!we@|?Hgz`WXyKYES7YKX=TtCe`ca!HYhTj3lK}$y!{g?T znvd!0YnHyLwGJ?r(I`nQE`2?IZj zLej!KkjU4ydR!6P?W-haa;vNGd5hX-OROq!b!bkLZKSjpacZRGrR}yegVEzt3 zsc8)$qY9z1;%nvCHU3lndVrpJE$wgdgLqm!w55vV1!)NM4pyx;vOEuE1~}Xhnt$t7 zSgVtLJDk^kNgCtSb%C1~AA)rbT3cg!&N>vP_5akeEgl#DbbzBe6^WhxUZIpn_x^_4 za;-545>p@Dxn52`gr6-!KMT5&#o?@U!;=(0000000159mvM!_qW*W1 zkm&e299f<+tJceDM1G+SiC@>@U181LDFBlJ00000002E?Dgep|E&u_7m6^bC&mD-! zG{28{B0~nkC8D*;#Iz2Bc$NKSmz>M*A*LBoN1o#{7FX($!$5v9lBsp0gG42N#4M6C ziC!(ssDMwDdXlQ|VX&I87(+)u1eRUV{k*F-50$d@1%yI6Y+)14iAjg8dsx2R#w|-U zHG=L6Uv|K;FI{4Ij7mLlpTgk+`Wj)*zSz<&-REt-u#l{qjhKjN?RcufJ1)JQA-7N< z%2s#;LccGM`n|NFvG)W$xz%2Yq>>5#o_ySpP3v*WaX^$U?5pXk70c`Wr>sZ zK?(ybi`1)?52?GJ6as$%@~P2tJm|+Uc2dkc#cG)qp|?hP{2)Qu zh?1JKAtvZCX>!>r9zbk)(h6u?1r)l%)R)PSMkGtQL%*t@x5)q_1=jza)7t`70qsTN zXS0+6DXe5YW1A>S5fIIQ*=8qXr>n5ybUBdS;*@vNW7pS*6TJgObW{Df<>~JMWb{JJ zA0Q#lOyC6?S75YusSfBcYt0I~V9UMTb3uaQ6pDhh;XU3B05meS`T2BQ<1V}}x$3g+ zE*u$VD8FHPH03ADfNaojS5L(GIXNhoX)BIzNa-BX!!^JKMO3}&d-1KMh|!cL2>_vd z4o66tY5{kbTW(*~>ChE9KX}377g5{!F^GD-G#b6TmU+RB<1J^TfWOrakfE&d9);!3 zBzI)5D$QO4=Ts%0mXfu{TGBxT{kl={O^oC-Ob>DLrODQ<-WW+P3jb%gr{G(7S#tJU1nwz6EgEfpw=qf6q|R}cQsVP#m;tz2 zjNQbUQxI;v!CBMcB$34k^eAT`@CHL6oh}QdPm=8l+JOz(Qa6u@O23jSKUM~S7t3je z+EL|*V8F0!(R3?9xm!9=#(X8^!56A?CK`Qy(_uIK?lMY6djsVLI)x!|E_Dg1VB#y) zx+(98TnpB^%#kuQ6+-+KHek>w=G~p5s{ep%i*G8-JB1tmBfCvcdm?*F1U;kqh8+~&FgC7IM1@^csa?u7|586@<+(^=fB@LX&p=zx#0FF7>{y(h*vnW16Tg*LTse2xY&{Ud)dg*;F?CeYt9Zcxx(&B zU8lFI!t+|_8$L(gMb5-1CB1nx!Dq%nMGbJ7HW5c)xK}FS`8%pwNNX1|MOcXD=ZuDZ zV9-(^&M^9&vZ-y1|b>@=IgwsKcK`I=W=tA zQ+Y~u&iDfaCTr)&>7FH!Num$zjhiL49IS7`2oJ?SXe{iHJ#*8SqySi3FyXFDUVm4` z`EtyAvl2N!A=WN$(%n-})y>pt2+==Qb>r7-!m;&4icm|Ty-YdAB#7M?fgR*%MraRr zZ_LMJQArD#f*7waS{5{Dnk336pX6b+MdGcX?G`%>>>Iq(mr4gJZ`f-ToVVdma0Ci% za%V%l6Ff$KIWZ8M!%y;b?j#xygrI{Q!kEC*8*(!G^?Pbd(OO{|>mNERN+dc^LluV0 zohv&1(x!?|$cSh4KF-KtyU4U+9O22BEhW7wVG69oZ_R|H(LaDNx*(-8i(h1kVdQFr z@cMsRl&&aitZfPer|ksC)gxCzb%;rP6nH zn9X2}DZ_M8OTU!bewp1pWd+R~;W;@Z{$&VbOXeN@6Ttp5EtyV$%m^P1BP7%sVH7Qc zeCx1{ON2w|RCoo65t8B$uaoyKqCsEY8b$@}fv`!>@?#${- zYk%aV3WQPDbm$QhIP}MS0+LcY!o8TX1c#i6Jx_c%N+(LL5zL6OL(fuw8Pl-@T^qh& zFC9Z6;BU0dW6E)DqJyg_OB@po#4*CN0X3=FcXU#Ga8oj!@(?nCr$vqnb*o~LVO0Lp zZjj7^ddh{Dse|3)JRB)VVO0A+&$&8&?#rHfUC^RghVo|(QuVIiB@j2w6VP70X#J6^ zt2{xZxu60|gNssDgIp$rYQMtR2Py^{m76<=xZWun-{c5MrS-;5%bj

^UGOKhp~REIy&S}2%<(w`nxuG!S=sZ z1e4v_kEH!VK{3v!%ta-c9aoBkEoFdCKDI)loTy%WrfWB%S^OJs7TTWG=GWVw89GbE z+z-xwajLId zy7{hOy*x@>*I1NmW@jTdHZ=tpJg{|K%-&c%>3tdSoRv8|BeR?{HjRddR~*vweat6A zbQIMqE8v_eY8R;ug?Een=o_u&e|E3>Id~X`ip+68M=jX-om6DRr$}Ov+2a)v7RzcL zPW=4P&4$!PMD0bVF}DCXArd!bh?KG)kOV?Ts2+NGz8_@d7iI&1moZF7SXKkmo)>8m zzVEi*42W5E9gfCNu@Ls442t&;dMUmD2`(!(pb3Frjmr_o)5*__yV}{I*ICw%5-KPh z*er<^s6KJN%^;nqeSvjGaO=W+@ApS4$}(37h58huCR(E3`f3ZkP>udi9itAVHx&^@ zLYo8Ni40J+N}`heV)sw&YBfwASv6R=b9dH3Sl-~7@YN5r)V?$9s#n0`0^Hk3ET(s= zhNZMJcGN*>Sx!X#pt0VwaKF`|A-2?Zy*r!S8kr*0yHI~1D=@gP7KW;VBDu+2`Ub|U z91#eHr&P41UAj!J+V1I68XzcQQ?h44+5TWip)dI0dS_+0b8B>+&uFnDs%-wNTgpuQN0^kBZ0qloVCls z!;^|6>>r2sI@mdJ819N_Ya{8;m@j}`HoO3#UY|g%2^s++GMhpf_XoC0tdgF^#2s9( ziI zEUK)jFY>whuEcjo@4_dPfYCviz6)ZfV?S#5;3>@mduGHz%$aGtuEZWLaJJV9id6X1 zDMwF{9L1mMa}@sN?14mHto8T#tRR_8Q6qdFUSBtCRXYQ*6gdd7TE4JgfQ7#qLf1+p z;63%hbBpU4waxutJYv`3Uw_3#u^r4LDDzL#(41Q`(tDaBo?W0!rr({cK}?BJS>KdE zqyj>*G2n8tb6G|1B6~#Hl8)%%e?4n#1jabgg(r}s7G3xw7aAdSpXWG~g;BpX2OckZOe0n*NsjoWAdqo_J%{I`NT zaa-j6(l6Nmkc^ThK|OABMx4rN8zhz>6lqCjHMiF+R|XSiJY|2TAk&B!V!3iR(%1rQ{&~ zBsp9Qz!?nlP0WI+A1O8DkQwWw1TS37xoe=NG+WcmE!l(dyM$5|_VA2xDAtXlm8n{R zh1;#!C%)!m*dG7c@T&+(B5P2H<|QAIc&Mqd?m*_{nMQz_auY4 z(=#I+g4|E?YEbC!{r#m6{Bcv*|2hC<8fOMY5$9f(!NYScvi3R6CiVI3$6-y9H8r4% zt;#&tbrv03I>nZhK^%jCr@hHHbDR8*g_}gM&yu)5Ke%M3~YM?|IBd1*P5hh zDv)Fis^!8T2n2pI)d5f&Ze6HL&Ed)ThXD>tNUFPVl08OF#QtFQ4V}EDCs-(e^D{n+9Pwm(|q~MPVTTy~|)Z-=V@CbYv(ONQmhL{1yr)|3PU#o5ou= zIT#1Am$I>932#mP_yE{|ogO$FVxmp~_D}3W{VA5ierakKCWX-vxIfL_4&(I9Gq5Yy z6~qn4n@C?H#VPXaj!+#*J>K+2XCP13rok3%zGS0bp#gmwnVCO@jxJuC%^Fz+X4js+ zo<2PXVp<^9`&*6!JpH2$B3takpLM!D7&DL&7tI5MAcn*a9LQ{9I3(m-8zrY zRic`xNW?stbf^XKc}@&K(p{MU_rZW=@j}7o@PvLsQ)PNR%F`DR%&3}-p@;Vtopr#c zgw}1Kk^(>0vSE&!dHONh{SXrz;AINwhKkg5j>`$I=7}hVVuRSLyV*k)`49?_s)L^V zsIOEwB)udL3gfO{APL}0qyEQAu$Bf3JdCARGdHI|n z_RXh(kTFQ|i5Sh~A0U~RJY0~$Tk`~S32$4O3-0EIn9LQJGmaCN7k5ky-IZy0e0`nD zsdnflfm%!(Wg~F_GK)1$<**mQx8{MznD$dR6173l)vJ5glUFAvPC;s+JW&TA-|w-; zvGD$W@TM7EP7}upMuGCkFZ-!-0oxMT z=_f(oL`$Yd#zVO+dT^!wR4Uy)fQL=BiUL{#l|Igzc&wP_3PQj56iQy{cG{~}(Pa?9 zfqIC%Le>^!VF{}Ps)E~RBBc!nN7X)ZGr;qH1a|_=?h9|;t@fEzub&fKD3!ZG()Ohg zEPIuvrYlgfkcA7$73Q}IIVgio3XmZP=3ylK>_e7buRF7C8B5X4O|uO1ODV|pS%pN# zn?cSSYA+i5)((@)FjyvYvS(>-1uwwkoGoRg1{ITm>W(X;L5BaoPcbBY^Fl9fDtsx~ zXoi_;@V0xXK?wv55eR1yOC*&ZOG3>?3l0Grgh12@t*PP(#x?r)F;zrdtA4jav#t-9^Rv{FJWzb$?3i8#u^QuILIM*k z84vY^UrJP<$E1RVeO0$gVZ5ZzKzs<|7&NLl#B`FX&Gbj#W!gA+ZZ3~qLFIc$RRrKr zg1MZKVaWjp4O4_zzn%*@mDDvqkT2&;-L_`Jy~?~S(eM=nIr z6JNxFo5OtLv?F_y6qWlV^g~IHK7EKdK#Oy&UR+h-_Di!)N)30%S1c3qc_`cQ-l?{E zBqlx*yJVLTy-+peDD!A8X{1|DE(pVxV>)Bm|Vl0j_CH_9UU{8|T^(x0xRM-Xa0Z!AZJclf5Ir5!8!TRU#l zOgk1+5)h&oFUP53t;A;K)kHWaB*= z>PgE4Sn|r2-xzt+0E8?;-%<}&C3mlUJ-5BynT4yFKBL~(smeetJ_lW$3EI) z{oR;mu{5DJh8khsEl3yrRp(N}9_~N%O~(mhu8)IO*4lF~Mbp|b`4pAmg0Et?aSsU& zDCcjscvd#sL-IaBwA-Gy(MfDNWzB@aP?TMtW++9+|6_G>!R#5r2{f<*DD!oUa7AO3 z4;uJyfE;}g^mkP_=fE7;3ee3`fWTZheo|Hc`pI3O!(joP{+S~8xENrxs)`(Ppz*lY zQZD3n_yRE#C^*!RgC zG^bp5M2PJ133|2aZriy8DB<*OSLcTf><;dmG?!z7v#tfdd&})+5zq|gI}p%gJ}|{0 zu#L_8ErS|rhC#0fV%R6T<>mZ zIq()vKn`D_|9iXd$QnW8VfTFaCFrWrVT;c|6BbIIV26;8QqR)}utC1Xj{_TSL;vpz zc$tA3^XirE83XCvBL&sXCN>m`%lnQkiwO?|cdHwgnO=cs#ChteEFO}sWMG~?Lj^BE zp_%PiQW8}$bZAZudi>g`I-%|(b&Tbe1xNBFEi4&LC4fF{qWX#I9C9v7+2G4OVm;Q2 zaz^ZSNpW$Jhnm&b{#BsNjr>CpJTS-_zf5B`U~IFRBlSH zW${@r%QPTRGW}rl=+Jl9OfMt~(yA1usvTgtrIRN|*y!0l^>(3dcn`o=0h2HWz{tjh zayy5DTM?Yyu`{WQ`l3bXGN*N%!@VWQ>X!TFaV#uo&KJWbaX+OMJ9xxOU~%a7R{#LP zzl)o)tli;fxK<|&_G81f%0Qm-sk8~Kp-aXIUd{+EOJ?@yYrx;+8<$;nYE{L_uiNbl zbjMNM+o<^~E5c{Hk|KypPyv#&X;(cHj1{{SNu-Lbg1B+o)K8*38<5L~e!yu=ZcavC zaJ}~TPFrBkf~ih2k)(a&VSyf*4tA{VuNE@)RKN%nK8WcAv@NfP&SzNz{scXYx`ui& zPA2bObv3kCAM*D}4d&qwcNU2LWua7P5J>3qNSa+_EsABgiRn73WS$8>4Z+LucakJm zamDsoXC=5#b3i=j5Y8nBQL#3$``4;!(sPtn6W?+;bKTRYVU}y)9pykoNh)UW-ucJE zmrf`cku2qZR^SAR=6Ivz5^C}O77L6!g z0@RQJ>yj(fvH~V((q;W7h7F02+PQPX4fRwcf#yIuwQ1 zO+wAxwJ|Zm8St=wW<0g!Y;;Im8Wzzq_HJR1@dL#sU8Xe<3ZO~q4A4Tzsmrc*_zQnJ zkr^^LA*(YKx$LdPWhtLgAIJeeCD;y*CSh|>IA==^kF3=@+w9#vL7FrQ%n;ARwONzM z&VuHk`Cxm6asf=Ucg0Z=V|-r;L+m!kQ!e5M|# z`Ng<%v&WgW%%u5T;!jWoA5KXy$1VvRx{s7v4{xHbk2$>`d1&0+xqaR$CQ?F%3lx=W z%0jWNT;NbR`RL=@@V*#czRb2x)&Pofew)-kC&P#dO~x=m2J$gNJK>=}^>_*&2=#c9 z^HMLtw3E$sEOuoyPll&HjF3i|u6rG|5m!g{V)93qyf1tI%esMlHU8K)73z9FtzB~R zH*bA$6Vw}qAlX8N(trozDSX~ZbC;TYw)Nj)pR_7sp2ks%lx29buy(1B0HXv1x>woI zvP}wjkZ%ZYzClLY8ztm1OP3N^pCGXc-V<(-O&8PCTL&@XO)lr%ue6&{E68i5NrA6N zR-EUbP1AQyz}-?&weykEYF68C}8~9vw7(NQ8yT6PZ=9Eq8hJs?zT0PhguU}1r ztNX^Y8}FUjB{4jx60P zjKC$!OhbN=5pd`2vif~?;)9RMx!lS#@vUVxah4`e-jGfwx!q!e#Ro|_O{8H7&OD5p;f`AOSxQZ5iCOagVXZle~;F&gGceDEC z%*kmA+AWv`Zh6}i8gk!0SV3m{Q9I4_=l_QHy7Nb%g$oH7DeX~tgALU+)m2MzGy)( z9akkf6#uu^aVsSB2f>&^U2pG#C%hx~+E9HcwCnncBD~{@UP6u+656qp@Dm(-Ua=JJ zGQ8@1=K0$wg;pO0Y!yLGfgkan$LoXj9zQs`br7d#8qnhSNC)#A&e%n$>XaKlckjNM zKjFxFxhy@B4FGUEiRw_J<9?(yuvNB*@L%w{U9Sw7GVs1t{U*9gyl&?i>20H}PO_&K zObEFr7> zKTHGjyh;@4D-gZRUwr7)b|4TZUS}W^tWmy6q}xG%-r{jigR^Pf=H1)o8d1&yGu5^J zyhP)h&MY&-Bn+>=7wpz!kQp_LE}Uzwy3DF(9K8~guH4!%%dMb~`-`^I)kD@ql^TMtkf&z)STJ>PD{94k#A z7{?{ou5ggdH#Q^q|MpRq#q>LBFa=C%g7m%qU zxNSub@ufB6$_^gZXsl)Dq^A604L^7ShcL+n zhdI-t8_F*16;z-Q%`&kr+v3kHPZ(#H3`-Gw8?7^w!PJwhHrO(x~_N zTGY0GTKM5}^z7YS=<sN{kD z7pG++D)3AAZu}t|j5gqaFiVXP{%oR%?`2#AzwTZhNOhU`s(N94T~jlc3U_=)iI?f9 z3$M$^NvOUBC%CM33jj#k#Ew_#1n4&jQ#wL|kBl1=&di)yHZQENiY1S`J5rb#kLdZz zcOFtbjKec;(=uG|ld!4+XjV@W{%dSRGRv9#HP_-WFOony+-pHFB@AcvOj5PA-d^$3 z#4t{kt5G_Zb_VR7;_*aeUFxQqkFWpDlh)@J>;JZ72q@UNBjq*nVwA5fbt!eRTVdWe z^ehI6brc9jRGU0H|2T;r(92TYwgMn6g3!O+aP=G0$Zl`7-TY`eac4qVh-e8I<(aZ9 z3&c14Y0Zs%@Zh}_B^<#IuUkm5;GQK0Iv&4~L{BeWjyh@G3L~+%O|yeJdrYRSjhvIR z|7U48h0>4OwhabmrjYY;kH)UvFJz5PaVa2DHO2uvhWb>rDEi*^KqzH8jb|RT2>pcI z6=4f|U1OD-;Hb)-^|!HfRwYL0XGzb3WN1z=w*(MxuHo)+373L+56Q;CxL~UIog?Un z1;K_w?&XP^*K-o~U8oop3W7Q)6c;n&(FFlq?U>a4h&F6FOEwF!Q3H|`F7=y(3jbzh zJBhYYq_0{ zMMZs|z+I)_mIE>1bv5jig8U~qfbbx7p%U!k_atkF5=NQPqXP+VH^4raXCSJ9*hN1$ zSw|t}VgJq`n1i6DXrqHogj7Ps8_?`a>Y+=$pc`j70$NpO!#=->017(1F`?T`IECXC zx=1DR6vy1uAiNaXHx@}SDi=eAc{75$Eb}N>TW~oRId=Cnum+$5;C`nDAzMR0B>!H@#>|i?ypBWUNZ$U%iH~ zq;>20uQs~$X&-2G7^Y&wjp#?e=Ilh}j(q^nr zLfeiI9ec&oc^y6Vy9g$(@gx37wHx30EH@rFkP<*ynCeUebMSupM6;Kur2NACAwy*n zzU(OCSdxW|(@)FYK+X4hAD-IxS(1CnyYcoiyi;b=I6f-{Jkjk?=8LzDTsPviNp6=L zJZKORhis)*Xi#poMZ`fX_7t3DchzAI;Sw6n4rCUI$dykcm#TuO8t8%mRDEqPNFruc zjG6#(=7dHpfo&r215EhcU%mOXv0$jYl`YYI@~|;0;e@Tk#QV$H;gpLHyl4V#!x#kz z`VKYv=)kUNS;l7iJa6QqIUEf2HO7HWzb0SjbQR>DD-5wpmvZ{=ijqCKEw80L_g>*? ztIaymQTe2&kyj#=R73gG-KS*Ey^U04w1uT=<%Zu!0H;rtbDnSs*Efzq>($hclP_XWFf|Gv}B^Q|8>m}W76X7Izt31 zvWrO-WgfzyMgIqN0N15td0gL7W_LLFoUs^+k2xdg9?Mk7XvrBj!e~`PRFx`5mKgT- zEWQ9cUPCqx(o06$0<=(_&q*S+6Eu(ld?VZJz+dP{i0APVCUm;D4$pl7M&0y$K3KK5 z$Zym*^^;hqCxP&rS+C?zANptY%r44HimD^4djg~i&u~m&G2gzw;_?|$9)COZTWbedPuT894u=-KqW-GuQ zXUQu*-kq0n#a|KoBO~5jG>p^iND!ba*CDSDG z%P08t3RH$QB?sFEUF~@6Vqztf`mpj_MgjYMMfBK?;Vw`j=MZL&7|5KiMn^5@ARLI- zF|V8}lm5szp|Lr>c({4b=&w0)c^|44WqXrWIC1DFVo;p3PRm?7Sqh7#OI- zceUne3SOCP1V#627#uCLMN}LvblSxJdGM0Ke01Rli*DY9Ki!G1jDsI;$);_n5QYsF!Zi-NkakRSC=l z295aLuH2x@x=$h0SplcTun0(`JG*FK;UEVPlKxt--E+fM-MONUOWaqo$;nS)2Gz4; zsSUBEWa5}XD}JcIdA*g}Xt%~6!omw!lq#h)zK5Uv{oScV11uQ^5AjEP#N)v{*lc?~ zPDGM+KReO61A#Qv`JZJJXWOX&KAX{_D0&_*?Bpxf1yoqHTsh9(MQGlfQzf57pfdjW zyGf9VWlIeJ${Qo-VitbRdDor+syx38@oeVMp|q|mY=)?WqsyCf>;Stud(GLQjcMNU zkw{8>{}e2e*F#3%Zmd3l@0MA0g4kJnSPaVyuO1Hvsj+{leb49fctOzlkLu}!tS!Qx z!U>$wgLz*a-oPhaKBYBnZ-LQ8fD6{M>{9g_kx zk$nG#2M3JIiq9xnO$cj!hvO0|SZrrR2%mO6{j~ICBwFr_jJ*V_uXVuxm&N(#tzxs( zfI74?dm^I7{<+wzkTqZnSH2S5x5N&4X2k@e!l`TU7k#6?!p_iq9f>h^hf19v#_LQ9 zX?A+bY4=Q;k;V!b3-tf-9tYFZVj;~b2dbJQNrx@STvrPLyhwg{J?WZ~&}l|WgX_3u z%AsCaeq433mila-Ev15Jk|1`B*Q0LYyA81JY<+GZFRxn&?l!0gefO>yM^#3P-%|8H zNf__z)(N)gCNkv09R^vqC1Fcz4ci3csO)4?coGWe_*A@wI}k~^on-TMO}(kxa8ifI zeZiMTt4E?GXmP`wgWEd%vjPc2mU<39B zUrCVcl7;gqxn(aIBsHxFVE4Mvh<M%sLz0a|WnpqCTt-dP_JFT!D ze9*iKmn%Qp*oC6l^1@^{cAv)oXURiL_D!!3`W8voJIO^ehlR%RS>`prv=bZ}WxUD~ z`WQ@4GTqM9d}o7t2f{S1g`$$j@~z*=096?y874-84ORG4RPyD4wY>iSAASF%SbDU3oV`rUWn!d7bExq8<%QqO{s-hV>F`{K%qJg1xLh!jZnY23wD}qUB)7?v`+Ad zVlMDl-+~L#qq!ihLR&146$Yyq$j5bAxqC5okYV|04$uU*XY=Z259$b5a#5xhzYGE( zOds=M6!2iFX>qsTW?u_HmjjVinjzz~G4qfaS@Q$3pAtS#Yo>Xz+{ynbmL#vj&Dw+X z4hqowrXAU0%8>~qmD)SoT(yNWZmOoujNl@Kj>iyGRL-*L%51|j;T0TJw zGr%nI4`Z8vyhWTkA^0d}Q*M%x8yklmc1k=P7;W_XnqMRtKgU4iSr6=e12~9)#Xu$q zr{5|HQm&W*Fm2P=Loc)&6AX6%>si*ef)rB9?&DXjDv&MWFHyfv3s3b;pGWQPmnA~9 z)t9u{iSL&lnyHhNfc=4<&=pO%nONOVASXe4F(Kts(c+S4?Oql-;+cL=2c%X=4WV!O zjU2X_L1cp6u=H$S^eUZ0$3#(jfb;{#XJ$jDp(s$uUZIkPqq)TGZ@`c>1h0=#(|Yc# zvWz5i?@$(&t?4nTc{LIp3k4;XPk@GlhAkxV{8p=#f$x+elcj(kxxsF#R{Iv5U0KBk zlgYEV5Q0oWbg_pPl4$6ob3XTK^i#gA*&n{yEW{G4(Z(_#$D73n-%-wl5igQJ^6v}Y z40y7ljCVs#v~NT_^h7H@6}{@arO*-W!5K1@Z852}LU0XFL~FkONvObk|i*EWm|OHf0siAK*H??PTfa-kks5>#sFlR4x5Xpq8&){WG054M&!E z>S8S2C_=8Sf`t|67y3QPc^#>+vQm)NOo(N!`IL`&3MOd5Mz%O5-|=qwuu$=d=yg{v1 zdmwMTR2VrwNfD2)BB=x}Id(JieOImk?OdR2Gp?ZyW|1)^4FS()K)g%sUOGD#-Y{u5 z?E@~V0#2aYBDXLwFMl>Z5FbWuCI@Sz+uo=&!ExnmB_4>r*5?}93?LlT8Ul!5+97v3 zY2qMP(!2q${`sX`$(C*4WeW=Cj5_n$Roi>^EaBZ{uQLFqLaVA!Q~wzBbXA%PC?AN)zP~^` z#Y1bkfa2Oe$z12h@!pQXZiCc2w7pPrVv{L14%^ugO zIVxxZWVB*{?(H+q3g6Y69aZ(M4mexyGLPuhgMH6!l~g)dORL87WY-{^1hUDnpVV+Y zh2052{YK!Nps(bos76mOKCes$rgWofb4*a=J0|!&v7lPod<<$Fwwo8O(}AbejPy)X zAOMsWscWNsQf6{WjP61#{F+z4_RL;X~O0deMQs2TiKNLtEr`I4b1 zo}eAoEIX~Cn>@n;ucEjk8mJR&9pmfQJQXI3sv6lmKx>-&{+U9zPq(7(R+3{hUFjXZ z#-h^mpcozok)%>e?48)ks;$?HAZy1R8T;egdn@iW3@6^pm8#WqE=*8|`Rs6}4)K(~KDg@_ z`SyjmJW-q#q0282i4=BcS!Q zHtkI&HztxW-u(mA%CQukKFdN1M)F~`Q7ZvvR9pPGEx)k|kOUe}n$7sArdiKqYc|PP z>a3_`^*A~b4s^a*qPw--*YzW)(>A0YQnJhO9>+r3<86RZUp!O*4dlkVCWv&=q*iqT z*v1Z(vr)C&d92IksA3UD`+qwfLO{j)y^m=S43PEI>eM0Xh&#k^C5#AI77OT@b0#IaN?Xy}^tHxi`e z5ruIGq8<*uxE3URmyD9(V8=_h$!DE8G1iNPlj=BK18!D}-j&nmFg&O*{Vl^ooHlmD z0$uf>0k@G_&$C{(Qo744(-8G;mbMh!xKh{<=8@6!=i}3PNG?O^jNw-N+GEGdm4U)I zF&Q!{4$z;MP^B-ld^lKp3{ZH;O^#ojD!8R@a$M3r)fxn`Ao5j0xAU!C;yWz!kN*{n}#tkM7 zGX~4wT=0_2U{S*W=AiYrVG9P}Bn;iNKDRq_8Ag^Pqh|#U6NAq9%i%kG;Y$$|-w67m z`0&29f#=ITZ3?Fg;Dyw%jcRmYQ2Ug5qJc~l+mam#fNLX`17nTClz|TsR74N~OYV#% zdo0$R>)6WmHY$`Qkb|l4S)s98)-p95r;29_4dl_w5uOl zMEke->h!ImHVHHDo-TbdL-C4l$n_x@Y9q$XsUVkqwA>vZGz&jnf1CI}dM{Ojqb%uj z9=4~)D1q%1bM<#HG*%`9*_qB=2&Y2UYDQdiwF!^47i+$*q%HM8!} zt$Um|2R&MQAHO@@7otrb@jjnBF2xiM6|a3*)E_>0AB@E9--Ue{zBH_)0SCh|&S$>! z0;%OM>PY2)Flp_@Vzuo-dS7Z3q(b5umX@DcSQfUnFAMjIKf6u2@0+)551B1Xn_R0D z-F`QzXIl5e;u4C1(fY+Bv01%AD4!1M(WsYRQxhr1f-@^+jzkcHkfB0B)m;8{(QZiO zLJ_;^=v$j(&#|huljIxFSodYUKO4v%jR}gKjK;n8&Kv5^h*9oPfvmW8gT-U207L)c zLExbY->8QUGmwjM{0eO;?ZMBUj~m@%Xw0lNE&G?5>f4e%OvwUu@4QfYOuuMaGFF^A z=ELM@%rMchx6b^>_!B|xh2k}39w_d4K3%*jRKb-vO9CmTm?<309uYQwrH)e=l=@FD z8^H57$H*Shg&QvO<9sbuhyp2rUp;HzT5aux*zRpn{J(~ZK`Dz9j9`obyZ))EPWISC zJ6jK1NF@MFK(oIt7bDf<=8ud9-P;GjX8+_tl`A`4oU1v$6BJix1x?@rN*@iM`o2%p zI}D^&#&@_7W{HVS#1dyz6H?b~LQ70=*}=nH9DSk5I6#R3kjSx>kqSvyAnh+F7rfdl4>c45f)iqxx1dlf%qAYY9UuJ1J5QZ>>d*JPAk$4MRf+P@VjeY3fz`e1o0_l< z*}e1C;cbO<65!c&!rJe?E0{GyeF6&Hz!X7i)27yM9Mv=?mLyL|4VDnd6jx0J`W!M-|3otmx&Os zV*ChR!N}MC9HAzHGu4%KN}Tlqc**}}nm5+>gzeBs^T{Nfbrsl@!@Iw<3aa%mMx1m> zqW2<(EbQCByGp3cj$L8>q-@B~Wp7`zvc^Abh+l^$;cL2_NXct8qC5;tUt6?n@ zY5hT|^mptHgDN~r#uSN`eAVms@en}SNnSfjiIL({X8$qnOiLt-rQAX2~5bxfjeppwGcxaU{?p2?FI^_=UWtM5l2htKy`k8ZHE zZ5-d#UG9WKPdL4H6l4myTWttYE3Q*Wc~E>ndVt5p)f=t#(|&Sh!u!aY5K^9_Z@xea zT_NY>ef4_brf9qaH7|4;W7sK#!ALchvuyi!fQ+f=wAkp;D1CXauX)$z5|)NM&b9ib zt%@esEzifDse!L+d#^52L_HHgMMz{>VL!aPJpPZTFeZ_lCpo*}G z3F;kH_tm(q{;tzsdQ(WgM<<=)kqY=Z_?9b~NwgchFqKN+Fsxd$k6RRR4(c-zm5@`8 zm&N#tBMOsTao{5&gQ?y*P~|gCHS<1nI`nArX$c&7M!3_g#G@KGE8pL=?6_w{ou+d9MFRiybWDa(k{e2ynJ>d7|h2V%Vk(^ zCJ-r|N~8_qqxJpk_{XE0!wKn_gRl!ew|tP|&#`r>xc!agVHp8T(D>!o+Bqu+MdMfe z>OTW`mPR{S75J3--E5#tOZ<5aZ@l|!I1)b`9a2nRm!}HA_vF~0GZhIuYuGR1e~OK! z0}PyAvqED5ZX`gUbnwQ7!)(j!4d=^D9Lzh15qjW3F9lS_guBJK#udCvtMLJs8V-d> z>%eZaHXB{ezL4_xVZ3KhY0JHO5Ffsen(xjH>1A7mr>MEC&e_V$(llcI)(X>a-ix4m zkLS(bOOwqP2aVOWS7~Ro$MIt9IJe}Dp|z9R@XYZTv{3`-j%EIzc9D!2Vu=&9S>b5i z3w5hfE4hGtv~#~<67z!1%&Gbrokr$4KGiuFT6L=2i>%8WC>&m{Q39I04%XXW$Mp53 z>~$DjAWb`cF70l>1$--AOnEFo%C>vU;BV=8NZW^WQ;3xF3u%%)u(z|!Wu zK1hKn@SUk@M|}&^?$=TSjjf<)YPc+Y~tQ=4W3lCU2R$2LwFU@rojt(UvR24*6)`Sl^PAK2Zt?%wW0 zPE*c4cnR-}tdU8OIp=2G!!p`wuyLdO(IDp2j1LgF5_R+Wt4^;kjLM_Pb~;i2VZ_NV zW=sfyXlBCBW&(g>bF73->rOHUrBHK10A`mBPO>2u4p8`e(Sa;s^q=?) zlMOmk2Vye6%{%2rZ0)(!RQ#>>anmc@UuqxnvV;Hu$Cy&WoBwT z>^m)Y$>@z#s*`D54$bnC<$O@9Q@%cTF){C;BeZM&4d`2vNB{XR52>ta?CmJ}X?#ZZ z0gbn#G)6L51Q)cPi?V>;g*@!lI@@VDJrkBC74-%~2{~H32?K9jB7>ab1C-9_FU>VX zgixJ&z<3;h7^8_@kHbyM>XX(9G+&XoAiNvO6}B+0PSqGzn?*gULun{^La9O6g%wqF zexW{UTEgIGOrRKtmh<7K56-w(ZOXR!D%+gC705cM-H#EShEuu_>Qn0H?-40FLQQzD z#P+!|)=fpqb7az%m@^&v%D92cqa!#G!s<|<{sl$+`>n*hI%XgC%IV#V$_!y(7{=9+ z%@;gKELlIaO2wkQum!tmZc2K#;6V5~6q)mncHw5A%cUHl^wVe;!|(b4o@g>W;!_uc z9)}8J^2$H9w6)F~;O%%kJzp9f%ohKg%=2l2iTa>xuP|G0@v+TZ^!1#Vd9%x7@gsDWh<2eyPzYKd9K}V!R^JsM0 zW8eHF-(^k0xLXA@c{x&7PlsmZlO)V|+bPpDFqi%M($>^&Wgn$~>W-g-XVpkl1 z6VJPGu*u==7VuGKSLzYQjt)=Or^{2{_2A$f-V}A?doQ?oNE8>J`{AcvN}?+;$F-Nz z#HqSaqSL8_!jH-sWE7PsB{LH3uNNk8YW5NKNJU;|P$pqH95@Tci0U>~@Y>}%7zc&e zwUNDm#0kbTQBVK7#YKHjU+2JtxiIxHKeD%nkhgrigwfG=(rQxjDp%a8>1nP9{^cCx*X>MO>lE{3<8hyC{XE&YdDhI*LRz_;4s(PWlt?lrLCknzc(w_&9X;Eo zYh?^cEymWcs%KG?Hmw~2K5`OtHdn0WrJI2V`7lHnPNYw0!x)N?YsZZ+?%6LSmn5k1 z((6F+4-c${%rs;V{Ndqzpp$i(L%CfIH+^QNIWGc9S-ArNY-kI@kQA=adOKGszxD#| z7Q!_b$9nww#l!Fy>$-3-9@VxaB!qlJC01V!THsPdROFl8$do095u+>*hXA1LstduZ z$(GhPh{>P2LMeiLFL}UA%nNGY#XT}sBX&Mg^WkHdx{D7uiPwANVh_T8s>x~6B#{_~ zt$|k!Wn$=?CoS}EF&FeUd2nE7Xg_|;w7Rv_4Md&_L?|CFhEaTiwbS|Yz0VtVoye@{ zS$iAd!zo)1kqy+T*X7f*Rdl?%!Hxn+D@y2tZ8};xi@zaKXyzet8aS)DDe)uQhm`u0DDpQZ@>0k#jY(w4EE=yn)Su%lqz#JX~4Wz{}dHz~Q=ZcMD7ZrOdl|pK@LnQb0u3 zIRKZklu*SMWX!N5>UX)85!v&W;!ilq$YCHbB_*%iwT`-2w>($vljXk(Y%)G7tXas|C>$4hw$v28Vj1lS3vA|9)Jw*Z#TECsNU zAe2Mkw+o}b+fLWs7k$$pNH?9td?by< zEa6|E8HLt%{Slsi7KfU;BX)MYn{Wl#L;+iE2ti%ffFzo6unFl&xbsn0Zd0f3Nu9ta zhGXV0?;;lP`RJmh_dm9BVa1f0FR6{Gj-h9wFwja2fj|3XKf*TUr0BohtD~7js?pQb zoLI#Zlt+FV42bpojk^;R-dm7%#-swkV)O@2)*0<9*;wUv3KKHgv?eG94oNJbx@m%n zZNG3>8QrOGcA)kUM?7Z6Mj8{!q5~Zyzh_~r>lM<47R}rXx+32m89@1DYU2|uHWj(# zR?QRRZM`DU9+yCL)rdx3Om(NY_zmQFFrg_}2#cd)BRlsY*NFQ8gvFQtEajk~@RR^h z#?5)rd6a+S8|mBRmlCeEwFuDkM*?DjTT2JRG~r;~?2-IKY-#29OYTUMDr> zm$gv)QYbGL*p$WY0g)~HU8vI>8GOU;@o9l^ zD5DimA{2wc)Yo7JR=`tQNv%cWt`58m&Kphbs)^B-AJ&Ho~Zh)Dewd6F<{m_;QV>G*BtxzQMd3mI3hrFIgiBd*3 zZyErf_C2~LuP-?{`+!P{)V(2Xi8pw^4NqEFU_$LZP^(AjoNFXYthf-W4>T3oah=;7 zmsol2UU*iB6)=E(w2TE5vBXn$8uBU0_@4RCTq?DGLL%9{W2K;@snYRDI&sOFy{TCO zEK9Duxb!)B!O4cKeDQJzg;6*bhV6e*nc6LYk%+4JP!C6y8Ci6aL>5Jzj*1(qTf{gv z#6Nh@cTirp5%LQ61X3D>sx^~qmSMLb^JZpa#V590gC{8Eq@s5)c~lr7@(Nwcz(?Qd zyAqSmo|z+(dj5?}h`IRrUd7jy{>DN!ocPNheP0~=g+Lsk~!KYuTX}N}k!?En=qufLG{6knW$tlGTu*wZA zZ@4Z$+W%VoU3f0~B00i16GN{Ov!}VF>(y-hxfFYxKv0F*pH+4xv4RlNSXKd()sqOt z7DzZ3Jir!8Yu2`h3HqQAj4@tORN_$g{l-vc=@{WA7ko?}c*F-@f!(2GpwUS~_DDq>Jk)9hg&cm89#FA1_f)BZ`|+uX zIuLnZQ2fR#*Lw+RBjUeG!h%g_ZGC|NQfzr8M_wcMn0j5H5dusg@7{IRz2mk3+37z^ zakn{k7E=f(0gkl5J`WVGzz#^xAVsu=VzXs|8zrTYP6bc~MCIjfF;B}0^lz9cEXK)t z#FB=e#Ny|KF95&=ftb53dPa5T@3Pm5C6R?xHevoVy_PE?%_dyAoWkCXQ47GMsxV?_ zP@f#PMp2KAdL4<}hnV*{_n*7abLCv0E2CX{ zzjd4#xyOG}AikZEC{#k3A4Lyymx34;=!`vQOa25!bbD_o^#)~L$=Jkqt2*>Bah$+7 zGD$6iFssl7(1r?h<4(U%y2Uzw!)J%u4`Qab8%1lyd@_Bjl z%Dn+HxwfAiwZs12hMe*gJ&Cq|NUQ_Vw$#b(J?Uw;XshYa?roZZ(@{0Jn^_kX{a36T z=ONYoz+lq^sc_w})vgo9PvS8OnSW}#3O-d!%=HIGE1L_x{re5{ERJLX47$tN@QiJ$ zkD(*+aXx_{r9q6jy{yLyb4c_CyuTv7RTWX3S*b3F+}v=OA13pqn7mW77iHd^vsC7% zBN2E`Kt5er*iB6dc!f;^ms}Gfqi(RjEg*iv<|H7XI$%l`lJB=3S}MG!Q~bsfMPOmw zbxM?r)G_KHU#=D=oUQD8#!q`@JBJjZ?U?|L&GHwnVt8IFH(qtB{9L(lj6*kVBZ0-& zKIILJb&lf0SoMmFkG!ds)I%cn#9;~4p#8;#wD(|atMtj$bc-j{kicYGMIQ*PEj~USB2{ryw)IErMy4p^!;2{2nOv|jW#D}!i<{g|n z>0Q>Ah9KE^EX$yl(ch7)+5Y%HEAtE<&juxeMCYm8dbyK=?*;<64f3_gG(o-BvRt9g zJ9uU{V9V?p%=e&x%}=`_3FFkVcVH7FzlcAKgz9JJXmPzgC?ul0fh%ZNu26(o5F7u9 zPp(>XhFuTOw8OxsnM!9@g~7}QzVeUFV`zNS{hcb}hA=g2j^ICd)b(%1@K4by5$(xj z0{EW}R<&7HLms3LW{Clev!KPQ=+qy`m=>2wVgZ^!yL+303m4S_iX(GSc(KFXhn%US zw%*eB;^}T>ypOx; z=5Sdq=H6su6))!SWSC)Fvu~6cvu-VY+N9W4n98y%ri{b#Hrx9x5DoZmotR6Jy#qr+ zSFIV(g+qsnqylCb`ivy*O-8h4Zg#Z5}aV#&L&!M<> zd`OaNpnRil_P|h63}O-+^_fEzZfPMzh`fEr@pXf9PtX04Z{P_9*GK$Gt$ca?8r;ikPPCPaR->}qqX|k?3Z&~q# zZ;D$Q%rd8oiXoYL7Ex&nD_PJy@!$DcH9i!7IN1bd7Tjbh*E$x`NhU6c7YMV3h?pIP z*B+ml&lG%`AW?f~8YHkaFR+54r#zR=R`YqF?$ptoBV)L> zCyk~<`$Cv8ZlU~^MV~MK8EutaD&2>g*UdARns?3#X!&gUuyO350uZ2bku=F-SS*hGw&fK*6U6&54E|Jb_C>qz;U*I;skgF-ff@2&U%&TAD zFdICN{)(AeBkN(z)#@I3gd1rsI=^bYOgi9JkLVl+zSD;Mw9VnJRp+9j;_e*Y{pv)h@3Yj;9C)93HMX+VlCRzBVE zeTaKF-lZ|jbaT%|ml?&wjLoR3Qq{$+Eq#4Pr(I65lcqwunS2LQQ93^O*S}PXE70jmKPVY@)nwx2KH1SdmPelXQD}oLqoov;g|Q+(FBiX zQPdiD7ibMi&oq0vbcI-YDjgctlV}Ie-}9Z^!IVlaFjuAW=A(N@oG4|pe((bT3@D*#oxzLsGjc6Q^D#Y1CYghWJx6&quV--gJ$8YRsIC6lR zx;_plJD#6v_Jj%OZ9IfYXEgXXx`T%k1Aoh=%%ta)OS?w0q#oC;dS=)~rb2w6x`&WN?4;`EHG4%=wAMvK*wa%=?IQM>JVd4%;B7K4(YhU zn&@n$3%wdc+TYZJZqk^%0IXcM?3Ia5aXLfvK61j>8gNoCQ?%}YUYo`UMjfcn+DiTj zouE;2%p&-oBp>nDj8GH3`b@K%L6Kx>HmNglC+`# z)W$2c2nia4wSV_c)CKMoBOScw%+y`ur4Ix!mB!`xR9rN*&?BPsJ=)9AEoT`tVTfSU z79li!yVVnT?MCq{SjnACrmbs@g{z1EM#CW%=TWbUHKJLDECi5PLd;hr5eo^&kunBv z6I@v?kb$-79oy}~%E}$*lO~iqlwnQe##Ci+9pEtE;|)8*)_z3YCkk2CvTJ4}xo99u^w~p6ZqZ)7$!9A_!#LDned4xgj2HppM;a z?Uo#SsyK)^)rHlEt-;iG$bn!jlr!_cV(Ml)c?m(9433B*3>K-f7q^*J~r! z^ObuXzd}1(Dm*mCR-xF?Yd6d+Y(rRmu>Y!(N_YUt{!KE`Q9SCxXv1&uZaNm?rae@W z(So|q`pKMLVf#L9)ymu=8d{~(PjdJ|Wo+UY_L?VefD~v8v=0jz8~wQoIb1*%p4z=W z(58G6v&Y~~QoC^BxNJ{HQ)zvIA}s^f;p0*9c3W`1NonXgxF3lKN%0xV7Mbw@B-k^r zJ2D{ISqN9Oo*Ju#AKv&IqW#T>)!y^9({+^!E&gp?vZ7#bpsmX_L$};V zC#{}8Aq#b*Eok9@F`g6*q3G8X8@_fad6U=Wq2cFjQxlePlbH6+v8KLuFz38;&REV* zxb);Xpr}Rp))($v2XcdxmjFa2RqAmL=TZj#S=t(<={M9n3szbcg8>!xE$35aS-Vi3 zG0HH=JzZ<5a9}4}YM4on0$He;0moQ{)fY(1#hjWin!+vFc8Wiazn*0D|4RQF0OAg- zhi&sAJ2X2(7n(RD5c zw%~CR6{<@4el)V4qg|LFlg>>YV6h$y#!12uVNdNfEAk1?iOP<22uyNB`Z;Gipxv}F zl6_tm>Z`G{Q$Z389``R``CxW3H0U?R2$-xihUhADbWm%}U>Gl63QP+m-C!)p~qL#bs$oy%u zms-=6v?Y=)Rxp0i&LwgEdM7zLpq<=WK_%3khX0JFq?B^z3%7%TxXUe4Bd&fq);t%3 z3~h!r^Jw?K@tpjKlFeTfyO%{RD)>#)tcc)4{DG$j%*F0B9YUgsO(|@aiA#v#fU?Bx zFa&e_+tb8qtVw8GH2FwS%+FlNHfp#ZoD!h_xBy(GR94HzG{ahx%9owuW9a}}SqO{Z1RIy`3@FdZ2d_On!XL@ARniN?pLaX&t-ugkgYYdKX1ed8zD zo{91nFA-GDd}7hU$%5BN!^Y)fpg<_6b%qRkPe(TJtMGULBjKmDYL4qb%=I)p(@m4jtu zhPkY;2Pd(&AbYfAve7a`eW;q;!s7dz?OJ0c;v=q+eG5Ra$fWOC8sj>hp}u5nT77|#T764-)t@w8tYnJqJ3+26 zg)t(^eWOzbpQF8LR8n1R;E(EyX9DPIEi}lzqzK~?4Mlm;?1w7LS1(!=7qr~X8hw3- zM_|MeV&2_p2At`G@B?-~q4GPABE{9kT#3UTS^+s;)?5*h;K#X*@FN`#f^D};rDxO$ zJg@A6+iC7vQU?j>b_N6PP#3rYT@`Nwe8UVVC=i!C;rgaPu6zH9ai|IgHZC3YVFft3t(5HX>z5V5`ljK}190uu)Yf@&a2MZG?JB8J|*`)64zI zbIdw{d0huFx$iG^+4r4as2?!S-NDE}7 zcV8dttpQ1%m9AN>l+U_|>MN$N_~}0=4mnvjfnB`eeVyRwpe*CrT)#wu#6n>!zo6bT z^E^+7fwLVUz+Y01=iRb5fv{5w|@& zF|}lexmp!y<*hQ`%LPnK!rMDq{mG22^J5?2zUmfMOAmeTC^m_|G!CC=A2Vh5uC$*2 z>r~tha7_DA_<|{_AC7B=CuG@E+5nxU;2wqP8eqA|qVIs<1QM9kmtqGcLt+JF8g!P* zBdsB#I>i0ByF%=DTmJ;H89xMujQq!35S3_tX_($V&%j96^TC4Y1BrxUv)N9y=?9k&VYSP`z#&ji$b1|taBv;)Wx`>T z1{$dFdca{6zyRs-LvP2b`JXuMzd_^7|BWOO3oqGl8~Ol_j$IzCzdWd+<~FHnc{_?Z znXu1eN%3g~t=k^ATE>&`T6Vjpk};T_q-UWBRF9MO?AwS5D}^P@`N-@B-g|`ps9WU= zPGCcFMoqezd4mT9vnQ-!-*M17;#?egD<(c4X59(4sTDHYV`+efI+{3Os7da`^oXN^s z8YRbu3YZcgleQ+wVUflJjg-yQJ_LW8>L14#kH2KXx)^B@gcRX2_Q-r0g`&=%jJmId ziV%3v+pA|GwgT;ynKrv-y6+pP`A1{L(^kUMy4wz-_SQz%3bW%~ys*KXZ_5yFbNDJ; z^TnzL)A2V3ueq=$LDTI#T5rmTlYFj16o-dxQ3K4uuK0RJ%98FIW;+FpUp2f(b#`O= zCYYfAj;0whUALHZS-N3*3@Eo-V+q5?%Uxpp<_l@J^=eldH4g8#h=+UK;$7+o6%%5` zMHsQZziYyxy8_^?UOCO`0kmnZf;A7deh_zZVw^k&D~pk+@SqSrpDO+)X_}cCh^-By zR&Q&Z&==KD%z`m_LE`_$@dXk+&HB9h|J@b{nJH?;GBF?K%-ft!;S+S{*E(8F5hk;? zy2>1D_eI7LIOhA!mv@FF?6fYyT-ZC5Ry-FK7p86Lzr`bukFngIX7@Is7Z@ehCbm;<5E$Lx50@ZPz<}Bh0rb}nxI5310mlc_o&S&+G>3Q&a&$qFg;h zeOSln$>kiDz^MFaj8h^do`{B302wb5hb1mM&|-b0aHfz`L$OUxA$$>+fO|<-f@+40 znam{dvLb%qqT4|8l8<;jg$Wv88|~qgy$0HmFq_CIK!)Fjjp0NG{*q^l-@PDwAEB@? z?<}IZcJRRy#mNt9ZuOFZ75nU8xe*(V)X5lJ$ctV3(&U;oDl!Oo1nTj92pB=4BkM`D z(318Qpfwu%4O>Obw{tE7)W9Y=>p{FVBzMWS^2w+%@;bk7+ilistPda=6++-0jn&ZY zX}e z(=iTp9~f2y-+H;pKbH#MVB6v37F0-%Wb~G79@kKtDY!WjW)9TT|7E5^28~}F4qbES zfre9+eCTi!fLp}zGM>B`fj*8%*{fud0LX84H6v7(qU~?G|4Ia@b@MuRPAYx`O=i-E zy=RS7C|NPlt?*F6j;hagc(PPmOxIJ?Z_M3LQjDJ#vnjd-+KKMnWYHK}?wIdYE3VE% zi%WFZdNG|D-Yu?aV*CY>cPFQRwN2w)O$Y`aKu<6Y?@RK#U1+gRd_3?Vm_Q^ur{{1Z z=sG7teE%-R6b_*$x*vCw4xmp--4<)~DtCEaLK7->@L3}vU{{*gwoI5)%K-w1wN5G{ zYQD~1`j>JqNV27EtyK2xm(UwBYN)goK`Us_i2j2U=UE0dkAKqdGN|Qa& z+_KFI>Loj2&_tqc@DmU;D=!0H$kqJTxFH^->@yhf->4y8i`W<4fgTdhZj$N4Gem{X zH;ls7ma>5Y7$7uR!4F@EuvG?$hc<^eb;zeDj2mPGzpG+ZH?ym6Y{%;yYc;0BpR0C- zfz`n>EQ4oFTPiSxVwsAxtdEiZ{j7q9%nm&9VMN*>z<}Tn%222cm0I9#vjSzFApeu# z=30=#2wcbKe{Zx4%|T1rWW4CBbwD^0Zs13tesy&vlAGa(Hc$IIZp3=ZEtbiT!Mn-m%Y@5c%2&O)crqsdF zOAd)Q%XJ6RFlo#hMA3UcRHIRwVEB>VjAI>`*x=9`*i;OoVBG%Bq;G-fG#cn8#`iHa z{n~6YfaM>U-O?u0=A^20SLD%I7A8q*FO;xZZLw?4Nuq%!tX(9xFmcMbGQ5BK3(Z;X z=RqIBmQsw2pu4JQ~i%FW?O!2$fxQ#F?06h z+^<{Uv|#LJMH0$msvQ*C%4eSr6nf{_Vb%sSp;S_nEV}Qf7YqGO9-X*E;v$+454C? z@5|kE5yfJ=m@ibAyr(5-J>R0XpBkUVXx1l z4=^R&xd(+N>10f6kILmTUC;`KStbjJDcwUDW8Nbb?36=I+omI+`Y80G&`_Y8ftIu{ zu4C@V4@bRS3fqktKLZWX+GN)YsMU}dD+%;m4x$Hdr5A__sipRIPJA8&NYJn=^0F{+ z_R91|UQ3&@x9?ttYCUo`H$O&+L{+m)#-lOMA?3?2uNt-UcE(%c{Z}ZK50meH*dH5# zkqAMU{&oU^f6Qf4Zw?_JzNODrPufH{wd2MEKKUEz{VxsRs|7A2sZiH>km}$&XXaRs zTc)N()$!qwO5lGjYQNVv6it{jiY|w5J}hSIrr0TKc?8VIO9Gr--LOfdM^gl{0~99(#GVxJt*y2 z9@{(Gtb`mE*eP*~$6dkxIk+JIyfPEKKnG7L-87U)3db3wC69_I!@#0$fOw2UrnLQ5 zxt}ZEfDaeIC>J+6%PDjSIfjNPy{C46niIHs#J|@6)+qzOx;oW z0kUV?LRbnuB(`cs2Q1$kR;1^rMNZ|jBkEAA|KDwqoJTmCH|otf!zeqp&7B9(*C`vh zuy}$@5+D)tM$B=bo1)AMqn}ZV_npt_W!lSXx`H>({*)`%)nia<_HiN5N6|UtoPvoD zFFLPih3-O^IEV92#&rUKQ%y8?NPh<0d+cszYux9nQD&l~~1>UO3d277@_(#+yf(3`O_jnGQ^JBCU#C#%LpKxz}P*WLZ{ zDl3OAy1rOkK{KEYMp_u?la>0^Uj`d3%uj?bqtN z6}lmouaGswfJ&R;?ScBULvq>QFM2{Szbci{-23;L9qtVlQMl%N%!C- zgq(q9H$G#+Z~p8A&=bJ=69U+~v&7+QlL_U0hQENU4Q$rO>)%{?mB_1?zttdd4%`%j zv)&dPq-cUg?_^?kXAwS!_vi$9!>DjGHwahSkllDMVzO#ELp^Q#GD%40uApbefP?(w zLR<@hC`N);^1_G9gDMg|NEV~!I$Rlu>I++ zb5GxHBxfmLkF= zRvU&6!h`B=cNT)74ncqK&x4?7EG=;pKcH*P?|11 z)r^^gR$Qy$!+ephBN*;@adD`f-BO=v*~qEq2pO{6w@4oske>Av;PHt&{8Lm;NcO;Z z5Q(Q&rHm|O+}4A`APTt^43m>$=~9nWf_a)_2;2e(s`XIugUW=bZV05*1G)x4y9&n! zD>%f32LeVtav|sv{^k=knE63w78hPzt}}n?oEk-Uuu9w^Rs6J+j#be(?M;mF%P$!5 zT%Vp*pqB+PT(LqL-b`hELGqwh#_>6l{b5GbxF6A#_FiFPWJjz28F@qJ(h?C7E$k2} zG4aN}y(+bHqh>QK?w=gDqo}EoK87LhT~@}{7k$4bg}OZ+jBqOP3G*b8bm1l1cfK1x zGPJcS42=fSl7;ihquha_a@Y8{uo<_BYZ&_4BhwzRZ=aocVe19~nvh;>De*HhUQi`t zz1mXu1^ZVm-om5wfdTqpvUcA?z^}L$%w>hZpSw0MO%S&{Jp&5m=Tv<;-)*()Bzo2f zMwRN+25?Wj%e0AQd&~(36_ya;SqAJee2l^rv!AEgfIdA1eSV{3Rwp1Y`G|M3Nl?*^M zYY@8m-51^TVZPL&4m^GwVtW9{)8{EHsV~+L13&Wo{C@*3fNxog=m3vX>yHe{HFrs# z771_6W9Nriax*{{b8=G*cKgqTR*gNySx@fbM~J9HtZvKNPW)JNVmrwBYY;U*0IBoo z5wCMsG6W6U9B?$oeIKt0b9FyVFm?&B;T41w=>jV5?XXWy%=;u08cIYAiMIDO~rB zQ3^BKM|Ih z0Q`^G`401Gb;l!9e-;5xj47PyKo@vQg0Tek;o0@Rtat~nZ)x3}&b@9|czJe0FJtEZ zF)3MR={id<{yaIOWpPa>b9i)uM=hxMP7!LKhoAO=#tj;vnngBRds)s6YWG>bobiWH zcMvcZrLpz>;%n7lw+9gz%)}7t!a`{KR#mcAKnh%saWSKj2nKzifs*G z53X)ScXI+)%mingY1k4-_uQe?pIg)w%@<<%gXoIju~lEDP3K_PQ{cdMbo(W`N#5-% zbLCV8gT(~oSwqnopG^5Gha8ErUO{e{p+LYVwKx=Vh68@P^k%7W1NQ%D-^|diX=KM) zDIg&X(FAlwJ!f6|(_B0(%4mDDk}gTOK??dz9^ze6r3U?)bfLFL<`t1J)7DD_7%~07 z3xiqEnwvD-C(u0o)Bx|3;dSw-u`4(GhQ_pbzm-9m5|4o;c@#h#f8IbLV60GN7SfH;WW7|?(WP_Jm0}}r&gRdax6Fs?mfda zA3?aJPOBKcC)9j8NqNn zqck>A(p_Qc=C4>e0F)2OAdha?VX1ulkA+~*>2!VSSzXg9gfk0H7R3CZH#P%LyHEYA z@>PE9qxyNUyG(A_#*KemkS1jw^v4usM!zr4C#VAgMw9&U&eR{7=5@$5_|@uzEEO_j zLvByTwC`9nN|h6tete%)y2q$B2hoS8#%i5SXb;nDo|;+A4Q2Rc?MlS3Q~Ag8$l%x6 z4Q2t-tCN$E0^OoTRE2`Ck;lS`QYN^!wnjJh1mDuzcMWaxC~Vbb45W316{^8xc-D+M zR5ZnTiH+cGYq2L>?w!AXymT++N2?wyCb)KJqB~^U`rbYWpCaneJMlnV$`-?1@y%|i z-MF%*R?Kj@kDSiOb0A;2!V4#vE^XqX5$y_9{F7<`46F&|M=|9$o~{R$t?e@b`sKKU z<+C3$rrzxdEv7+D+aH}y%QK$tFGs9nCI`k2mGdlmiR>ytbb8vIvpcJ-cGsGJI7!~r zfS=KN`ImGyIa82@fTbW;o>m6{Of^3O`#}Gt0qK)lvf*XwMyryiC>AQ66&B>(D)2q&92zt|$IL7DbOrQF&xNt3WA&{xm^AMtXqN3^|++j^2S*R}QQSu;s; z!|za(eU*iuQf=c&&`i0@gs~oqe!OF&qB0g7jYno0;LKECj zRn6Sd1FpYjxv1#birn=)Z94IhDwN#I_e%Q^XwwWwPs|FhA^mGIYmwQ!nd&VbY!F8d zwa)4Nz`(J37RHkKia8V;o?gb41jpL^O4Z$NI`EL5p&3uK>b^8^uoQpgtBH@j?HfS4 zuQ!Of`FTCE(on>kJGyErR^rC6`>Qu$X)xt>^S>eST}{+v_8yw%i$S?>8^R+qze0Z6 z62VX8K7*4{tibl_GJj-<01IIfTAlllIs^>fu-T)OGL$|O4xNRe~b6aStqu9JE zGZP{x;#pspMX18(_|o#@7D?se%#A0%ZYehNDkb(3Dk#r3PVIOFIdq$jgE2d#%yab- zq^;DwwZ|ae>`uD_;Jcc7N3Cs{%aM0l5DU*9ip~-2Kx{rrv-m!a)vkl322p-g_6D0E zE{+g|a2PCH?FD`SNoN`wo?C^RGFB?GmG{AT2|%56~?zxdnxP>v_82)WSlq(6WMS0ZC(yaSKrHGhs?9|C7- zcr7}&szT<5a`a393A>QN?J+%}%30 zS;uzC86qfK#d1wlsrxv-h1W0g*I9Rw3Dlls(gNW}f-=YQIO0urIs?7WEGJPXBvuYy zrvV3k4Q^~Z{7*?~u{T{%z@Sp)An%*a)TvowXki^~#@YnQMKbOR9_0^OxonzFS7WJ$ zocP<(_ijxhhOUc&%rz}(=Mx?mW~5L7my*QY_TlP8G93(yUH*<))Jye)OK%%Mb34XB z)=iWd!&NZvKcrjcPo zD@=}(L4$9JdcO=l>w!@`G-b|g#!G3lqIaOq#?4*er2+w2Vhl~R@niKg9M%xG_*weL zY_$?-^o8`b3>OcKx|at#@7t%pX=d<3@8sD}NiXX56ypXA^vb^l6g21r&lU0P^=3~z zyNbjfQ-6MQKkUj@umZO1F?r|j+duB=0#hKNcp|a*cUs8@Yv+R>`(s~6t_;*W+q&sz zPw%N0_~3x-e;nv4toAWL5Ngjl@`lGadrTk%x($wauYEr$;xg$IbFPLy`@i{};I)jC z>=1})b@x|ET?Ky(*BS17g3{gq{dzR{i)LGVTd$%VbZ*WVPJ?`NiWjGee-UYsw_EkW zIe(z(w#3$pib=#rAR3{E9C)EU2Z|p%BWLwbE<-ny5wN(WgdgIFytqv2D#SE=oM{bd zCjL$3bnmc%UmePyg_+@)KvE6Dy9|klOwniZC#7ttbzO!96UbDdUN`KC@*u$NV+Gh_ zyEh2MS2@pIx&AUi=OT`BOCb7|)fewLVSxA#KnwSKL7_CI<3c8Yf0Y%xy^Cxg6!&qg z=CB0)Z2q86%qjt6AIjL~>5_t_zp!~Wq>*5Fx39aI87ZSfc`K2!8W+CAIn)c%*yn2( zcavgIz1Mw!b19~w({UBW9X0@yiQoBy@74q2`9f;DtMyvlT3azhnG7yy2>iR3FUd+N z22H(%=T`EWF1ORKpmlqIM>Xr*11(6PUW%RhAy*Ar)+LT+<_nfY z=WWlL4~5h!v@BeI6Kx}!Pl%%aAlEA0C80V9>eohCIAaU!n|14@3YeG*!;?(t=biXX0vbS`;NK28 z-uqyB^}0w-+t>~^&f$CucHg0ijfh}sQ&Np?DZjeKlH=TOW)6&WOC_=I1kDGWgX2_8u^;irGbc|hCckgxb zEXvWpZWAi8>T2_xV7^Ns8$cydNy#SdTUAItBY7iK zi<^ZYK`_HG>R-P25KrmxU7xcDaZ*EHO_}uza-0%o+lsBYz18977+rEIUj^>@1vitu z2vF#Jq8#=~0&h!xSOHiem$1wLm9!jDyqewEA-_ZxoQVyD@`r3~Dd)XKmH!|`SAm-> zw~l!)%p15%iN~6GC;o|h9K#y`dk9|MiC5nUf#Rv~gm7(gfVFnV0v`aqZLJH&i>eDD zo0g9uP^s0ML5ASOyCIk29ceYb(!8La$~D=`9;JPdK13_2vl=;-g70+8%dA+TD_B#S zF_&FXZX_KQ(+Q8kGNZFsea&8ia8Buslgx#s&_rLQ;NbqKWXFFE>~gk^MT3whZL5xa zz@TdFpue=v+Av;Qm8Ib3h(vqrJsuQg59qCM%bY;{c_Vj5K z{1f6eb51y+ZRl|2R0UwWkc8BzVF5LVHoc+}H-Gj`(Jse|*4PIyk1Ca&G{S_x@x>=+JgDm{!o+Lc_R_9Xhb`+>xV#W(z zRi4uUvb!(JA?_}Uz<0c-vhi$SR7s2|imkx$;5I~`t{hX2RNs3dMCA|gPA@opjx6Ce z*VWs)J3}^>FOhE3T22knJvyf8?=~{MYn%Cv|M5Ho--@<_P#v>f{E#Mg<1gT62l(fS zW{%xWcj#g=M1b^`)q6`ng5r;_WF%)a2Vj32?VWyXRSx$ql!e)#a4|gIT>?u2t+|xP zJ^w|--96O-FtM>EBMjmU?Y7HhopRXIRHov{7#E~QvdYG{)i_Z6aFSZZ21r*7l_BV2 zce5tScwxbN!vzpnZ{;p$4%TXXa59nb(sMCD1|U#o}jz)_|UWz!(Fi$8UAKCPrY!$m>l( z0x3_|cNKQPb%H@nfjo459b$vX|EqR==ot&U2Wu7&FZP~v1z7a_WU-THIz7*3 z_r+)y43Dzt1c=czwN2yb_sa?y*%hnafkkB9rTDJG37cdKW_T}G&F?e-1PK!Yig9n? zeQngw(?yK0!UYw&o&<_S^s=`Uja7YDCh855wNgg!dW!DQqfy`lL}|<%2@Rabom#iq ze9g_KKx0J*xGXN`(}*0<`H;i$MCrHp@i ztk{I;Yd-0<6`+F3?Usg!quzmE&_j_sQVajkNv5mZzFrrCOI}v4&#%&q)`d}7NwucS zLzN4+M_r*${{L2*NLOy%e*XRsuT)+vig$Cr?#yf$svW|9dWdyKtM#9y(umtNq}M{B(sA;h-wE zV}K_`$%t1zSbgd<>gqTB0)G`fVs+?$040V#?P~Ut+~dY{J#9Xwzav(3pROf>E%DJ4 z<#lE6{3wf7qzdg4O11JLKF>9IA^w|ZJWU2d0@Oly54g#(4W*A{s933$)`tid!EDV+ z1gJaW3at`kJLAojAVLsvocB$qcu|w610`!Ob4=BUc%6K}RW{_Xu`p zTH-f$TMj^IN;^gL#9@fNghZD2&zVv8F|!xa8INp(6#Qioi`O|HK<@lk~U+~JQnIe=Y* zFmW_WujnBzBVf5K9AoV_+Z*CQ0oRqK8m-C8Z_F7RX76bv|DZY`)WIDX=Qj5TxX&FX z9(ysOzhLur6*$XlSWPi&E55_$#Wn5zkWB3XrP}I1C&fw_1{t{a3gtK>E2o)e@T^b4 zzW%EC1yHdlP*-8`Bs8Wl{z;XK0WDP;ZZ%bT_Yw)<`m10=M~X!faqEcC?9Zf)(lFO_ zdU}-8b%%KhOx%=6_>e-N>$@NKVAFD%t5H$~k59MjU=jB)&dqKy`lJD~Btq;tLfENl z|BWHp>2O<9QHEZ73awvebo{>`=ZQ5yvXrAu^){Y466LTpUK~InmCA_@as0^lB>9^9@}wSm>hOB$_#<)Kl1aL zPhnlsdg$prGYVT5){m)Jr#-42ef6IU8K^|bBH{an$kck$IL@mWjAfw*u^28Dle92> z=A`P$#9MtW5FlU#WQ>zk__vg1tJe04_p|;FED;GAoB2$GZipi}-1%t@>zUuFmu}dB zFIZC!qgHn&tX-q24uxH%02W?D^imyaa(h=kboT)#L0xyOSlWiGadX`(MbvQf&s8ixy_$R+-Ls>aw-h>@oCl ztK0qj;3lp4xO{g*W25brSilYV&sh#HeI}c(j7lE@6V0kpsQ}aI>K!ZUUF!FHwIg-w zrHdhv2YDmRBdzj~RB4!kvKJZwuqg3q&qtT#P{+ZbzBz`z%O{3LmByApuM=q}X|n&R z$WwhD(eRcVi=!05&Th<1vWn_!snxZp)8zpv)4DeZR4@sBbwipz+kKbDseAPIDVCYq z5CEczz*{P>Vdz8w5cZ?R=3rmrO`W>ndmtbpAarf=ZyVxf6Ch}3l8%<(VN2F|TZy4> zi2RZV-x7D*t%oek@ZTfJ8NQB1Yfh?Cyjdgh;OT;Vg9|nabH#@9$Y$ZZlpJ0}mun(+ zmM!l-MuHM38OEB&{k_oe%q8b+#aSVJwV<3%(5zF_WVO;A9yT*6MIo~DAqJ1c)0AC& z#p!NWn$MVW2;@~6JRhMg5K6LX1?W+7R`v7B5+gF(d(%{vK&Ft+L4yWA1L3|u^2PE2 zZ;6nq39ny>$ZoBgyZR9^sR=qP5)u8X%%BJZVfh!j;YaevhipiQI=kx_d`{QEMY9ib zc%D_>k?P<4<9v=FT>(RLM!f~$LuCk6Sj3MwCTkwN_7B1I8GFPl=H-exM+YHE-m$Y} zy-9_A#{22k?e;YkmjBMj<*dU;oHBIM3wEbsLk!y!88g12=rpU2|9hLqzFa)Fhc${p2O1yih_qdVk>Xk?x~d_E z9M3|GxL?t6xj`)zQ`iyU>`4``1lP7EX+5TGs+7w6X7IpvDvVhoU*=&>Ad6kTq|0w;xo~Lb($%O4W&lZJwBEoqaS@CD26Xs*QWfuJhx>U@hD(t;c_ft;Xb<2xtqs0fIv=azt59ePSL z*1Vg;pLTG7jhQHh-+(U5H+cuq5b7$GvQ*LSliG%RcahK8mk!lS$3ixIa(pmLGouQ6 z<`mBu*bG_G;oCL;icp9l`n0k)$;T;b^>9|V4;IHms<9x+TmFbg=ZwPYY|_A{{A?g= z9?>w7?0^tmD2vdP2ESlio4T8%)K~76l$$;A(-Uu3O$hmGwC+7}l|8`Sj^EtRen!yf zNsc4A945+QueJHfp@T3Yo}+Rng?o`=ob>EA_gXy2cbNI71Is4cWP6vH1h1W4p7RP@rZ}6oOo9btO6hjDI zy_a>B*#!kc{f4KjRZ|_9>9*;Pc|SmbE2Ok^Xcj$&D(=)*LzgGj0?YKT0Beb+PpNr) zpiO^f3YpMSa64eSLK-N{UWP<}1ek2~POT?y{W{4RZsy*aB^NX-C~bl_g{IeUd8|Cu z>0ZzBFcCk+07>tGNnw)m@H&FDd}!5+!VEu3A}%RH0Tu}*nC`h`#9=E>u+X8=Z0sdc zjymsI4~IvxC}IYSvy_Qv``|6)!fr^stFR;693Hn|Pr}lZ8;q+@f>%RY*_{?f9+gbH zAGSm1?r?wLAZrgrp>BOgpw~TPgbhT`GHi$96<(}%hjCXWN7P)sbft-Y zG42DeNMz$q+$AHpbn&vS3{$*8{;0=OCk!ryR*0ptyILKNu>!t;jS5XnQ^C1-mboCC zu9_V{B$?0>bN86!TWOLJhnsY7XmDuccIdJR#L;?)IPo;!?4<*N925ziOZEH5!epgO zP%%%6m(k$L&|UkOd0XWPj7?dQZlgVRM5Wjtr{XZ664Hyu^-dvrLj|&bHRyd%oU({@ z=Bv#C2!G3w>e9{VEMk44bNMq{(O9LB@`o`&Uqss~INKaT2TH^(z*{TgUi+ckRBY~7 z0;xpoJpeL}9g9UA*In`$*pA~BOB<=s!SOE7~;Xg$!GbJaiuFKOE+ zmp<@~tDXb6`_TSyTII%(_|D$;J?e)GL!r12)#4nsiX%*K!R)BKCzKBO!-6ZZ2-;X< zjy=I}6u%dCGT7!pXhBAAcP9!dewp2UDwG<9`aCvQptQ`Y+8YYeS0 zHu|4Xz=v3|KmVq{T?Z2iN&wP#i@hCHS@Z4f+|b80G{+?@oPD(igQ(P-S6IWs6A^1t%`HGz)bq-~u4HHkyI+78$mY?GQEp2^U0F2`y!Nq$g!qy zj+gWPL|Mp0(axiWLAXhEG>&A%h^}>xF*j(iGq+bEaobX^3f1-t;um%JE>6iKu&dJ% z{*c_Qc`~B8<8bWs2>DUBudIK)HVbSlgPO>%*6a&6Q(^yQ8A~I=ewbZEJ%0CStm?h& zL2_XC6~9_zar&z;T}oyT)8mYF!1P~}-wU~=M1K6Pg^8NRV%qWy>-|)^MBM|VByzi| zl-CavSc#cP^WbNNZ| z({nQhg07P%CF>JwK4~us&GAg-2pS$=u z4J^v!hNugj;!Os-MQ11wQd$k)7=iPlAMM0|%mehpoySf{)psO)7!;E=mh(!ehHc>6 zop&q)*Z5z9LONwk8W?9r=I;=Jf$cW$a5haPZ4RLA$<{4uLPNBE?^CwOv*;?+99)c$ zi`b_K2lJXZ*aW-U5u6ykoeg}g3Eki#%e&G5C8U^9x6dR&!i(8aVreEzv<&cl_+8MV z*&HWUg6;#(=Vy&5ime~8hSk8#3YU84m(Kdx3gXBB2YeTJzZvOy=jTf?Ul%uy7R4Py;@Zyw8!ft-@ zN2$wQ|FhEJHhMo>*e4)3bVspYV<8z$0~<#gh;;{^E3gs17(Ag1G~u}I?C#>H29kkA zY-A>SEx`oA=l@khaRi%4Zgs^n04sFj&IrP*I_xx62;*t+VyQ?l4WkP_OE|V0Z&`_@ zWb(@{_|S5z_$qY|=2i%pyl~RZQX;HuXKKz9)?55Af)j%Ij(A2OShq7(8?FyeWxgD! z*y)7f{p>hG8(*GHw1-YyQEnZEmjA-P_6I=3P`yx8+D;3@5NQ{Km!VVU5C7uIZ;hA^ z)}f6{4fQ$j%7s5e>qR*W2@)rdjnl9F4EAp}&D=9!lvV^tuZ5@=uvhBG46@!is6iBp z^dX&k5w=jpU#({ECSfNWaLu`V;$w&F?XTPBA#Mhda))bp>dwYqyqBza+|~cg-I~pP zPNi-%TY4z*)+^crpw^@<(0F?do)wo6!+~%ARqYz3ToIE#9y|JJM)*%nl7E!IETf5L z^IuWVZ_OtJyV2?=n43n}>)|gPtm@uKe;qOa)AP_^Pvt`!T4}+LH}>PM!b2cZgA^L&s2%ur#QZ z$NU(pJb=u19)6X=tvl-ow(WJV)S+t*!{)=HvRY!^S`a$sVMCH7mdSDm$+XkKQz4b0 zE&YR%)D4=j?g)@^U+B5;xagzVds)9CT5TZS3o0JqQ~mNjU*n`B2YAR%!Hwa7uYl-s ztaz#F;EI(rp*u$QKxDtzI>f%SUdsPL(=E^&&53p&Cy$=#p_-5t8ij#7Gm=^m62rDE z!5)GI-7+;}GHzA4ujI8suO!2byEN@RrOcw1p)9{|*X3&9v#(o~9T4DC_hG5Hgt9+p z-K8uB(B>W&dD0Bev#Y$!^0iY;5PxQJFHHwwD3%SaBEt5dxB2ryrSioC)27^C$Ooa0 zqKHbyan77tHQ7jPrcO+`u0z*hPl0GK?nGeR0rg`+?Sak(qm6Ck&^tTWrEkQ8WFDbK ziV3G8dP=5yo2n?CPlhNZBO1CxzJjV1sJ=oQ^3wdeJ1>Q&0F~nZ-E4~%dmtenCL2^A z^c8`x2m(Rx>Exu&bHxhP9_uK-4+7h>(rc{AWOup?c*v~#y=ri3!$HUxpiNshUZ_(| zMX+eq8aN@BGQ_MkvER^9O3VK8@iwqKK|ccLH6x`Fxm+Vk6PPv*7OEX@1yU(ay6p`F zvJU7sL^%N+y>L^{v!hJ7(34P221s$H9+qDG>-*rB6uH2yHM|PE0m)bEJDyO4#JI#qO%H518+O##ihW0Z#6`a~FO+`RT&GSG$w~aAfYj^$?i>|jyg#df z!iKdv)5oEHnpqi0cc9g=J~ldH)%m9TdtQ0|K%Fl-ZyNO1oY!Nkw%9xS81w}zWJY^k z>>ZQo$v8nEpFP9*PQLy=J#h-Hg~%K#Tk+9eh(3&Z9=Twk;$R|sX7u0EmvJ%k%$A0mp+2-pLANt#l4*=b%#! zZ42Xvf5a2&c0J_B=V1iD9{-8WHi78O{5Qls^C;5{P(LW)^o?+0ad8x~YW)`#YHkAd z_n5GQBbH?}h5D_|^sLzkX|t@@0g6#RI|l-gXH71ICt9_wgJh5&Y^;`TVQ`IALd5zt zk8Co8DyLODS)qONRCD(8Etf)?d-8lL%|9rBMAV7DS@I0*o$`bxR@z0V+ z1tCQEoTD5bvcJ9jzP-@Z0$nH@m4~mcJ}|m+XV(IDl%Q3;b$~|ii98pQ7sysRk}@#F zb)?r86B!DiJ+fxeRAlEG?9td57DL^jGP%MO69R8pdd?Qky)!Uc`G#9A)mlX&=9ws7 zEGG*jW6`Dqlw-G?3pEEYpV;@w(Ua-ZafN_TMx(pZ=Gh?^w-sz3({^FT3=#0*4ktkG zNbnU6(aZb@Q7FRD_})d9B%&P^v>-G4t`f+oZSkd<9Ab6q{fK*4kUke)Qfl_rNnk?W zxTWr`qTp=#f)&}f(39Lb_Xf;4yFpA?sog%LJSq?J}CdF2O zS><=ll3E#vl;qZDK=P}B`Ex5HGw(30g~`D|MxD4ac5^-9!#*hTmK3cE%ucT88bWOY zI{J;U#jXZdyNT}g$Pl@P-chyMxaceesBZrws0$O3s$d=G*`St= z`=>Wd76>7&#{WUuGd3-F`;)wE(TyTjwSK00A)!Wp=t|QkOv2J2V7Dani##pMMw&qHzsk?$AwB1HU-r0AQ0}uJca$WjM_?X zL#a7DO?yTN3<)Z&FWP*yQoodXj}qGWtK2usHR$ePf$)%5w%ghg(l5WyIjN^Or5DN& zTJFB{Iix+e{sJUIbcK%x4ulgx#!A@6NTw_6R?q*nJeW8o!xy=uTs787NFI-SYC;$+ z2M@HjhE>raI?dK87Zb5r$-6ozu>1TX-0O(`_$qNhQvoEt$Gl4jTB*}ILBB0ar-d$( z`i5(&Zxn7vCV;HhK9n>y1aMTuYUFOKNDKgg-tahf0b2X3^oCpXNCxWhkru@C ztg#tq3T+Fog}K)@BDoEc&z%PB-hs2gqWJmjoLLapA8Mr%WDR$+$TJJzq3H0;?4M%NPUtG3`WJJ{t ztpcIrV->kpO!CL3pDDv9V}?)`$0CzVIz=KP$@HX7$n9((j{RNoonX zU*w!Up~A<2fpRz}Lh79tkjL!xNf>{CZ6o_XHh%|omncD6NJg*1gA!OiOroSL4_&?~=HwO*BQ}#(xm~UjFyjc6mLgSqK895N zNXBkLfqH$D8)s~{F7MZC@TM2|UC$zv^SHwue4T*GkD(tZv63f99$?qPKm2vF_U|uH zv?B~Ldf}kH29y za^MlBuS2o}=gI@+$40zftrklwB3IxX6MGn$e8+wo2nilPJOuoCWn$pbB|=XKF%5Bq z0WHi1fJghJ|I0Qu#8;tjxD!hfPCptRP2EMWY1RIyl3{ z326&n?c^mxB?FfDKmve;Eo1ZHoDqRUPP@#NbtE#;;aQ$9z~EQSq(>hO42Jgd0l>ig0tSA~%nYNiHJ@>x!C@J?H~>e}m{RMTs1kwToUi~GC*Vsh{A*lJu2fY~ z8`;~ov}}qK9zAR4pjoyH54wiZ07l)}T`+0Ic!m>b!fM#tn{SSMVn4;)i_@#A(dQ-* z1~c`fEBD_G=au>AWkwxfkNvj*?cXMtUqazjRfQiry1(OPuX@7FzxYS}%Y@|e5OHk^ z1*N5i_A5i48rBtt4f?~*>Ps7D{)rb}IZ}VCXcCr%u&IbzDi}%sz=wl}MbY2RJfP9` z;%*Y%%QwxQP|0=7OM?Tl0zl?>1?lk|T?<@3%RIB`;h`x`Vj%vbBv6xX%BwCMCt)2? z&D?t>diE8PIJ|57ZP`g(7_6wH4yqT21CDro?nen45?9WsWY^hD)4IPt4T!O!6=bE{ zq1#f6(>&)0?*xT&<+|sYDR~2DWB$%2`bV#~jCRKR?61ojzQw&pC!9(aAhv@ArIqI= zt4(-@nzWX3vsaJ~q1_7bC1(SYtOobvi~sO*hWFJ@_NhVDYv5BbX~%45s0fU4K+%=9 zgs{xivkKYk-DbZ8E}7K0^j)lj%^#}C$0BGJQt1nQb#TsyxmQiTa3&ZouJvtvA&E_q z&&@>ISpD(sK3z8+5N&wTXa}i+ujGUhnJnSnE)PWjX} zSNH*d4_Ob6-h{^gbFVg$Vx?9T4F_OXi9BUJz7bF%v%m=w8dMOdMVZZ<3^E1HgL-T( zDM6TO&?BnO43#Fqdg1(|bx$my607KkYVhoc$DHV*XP5uThb{ZrcbndVDKSC`RUU(o zU8HcAki{ovMGBssV4@&@WWNyDT7>CtlOThEZy_xa(w}vkZ5yQBmut;UGbj{N@D8wl z&UB)NZ%Zay&lSo}9hu2j_gpODyu<_R3ch?jR}3mCV*NDq&qd((V7UiXkM2%Z&?E=2 zceM0-v5zb2Tkkmp=5YHArb&sO^pFtjx=@-6qgVNfW)k!geEQW}QWW&yrq^_3xS(s$ znoOsAf)M0#h9`lV3i2YN%7B&^$n_n-C*S2s4&VHrx6{c#h0r7G+DoKv zaGmq&rq1Wy$C^GKPlGk`S9CYyCM%x<=w=aS2kBHJV)tqJm3oiVsdJMoA9rDNXNX?0 zh1F?_krP~dD8A>eus`_7`tI1Hw9Kn*tKbA+Te6xB3|w+AfVFMpVDd!5E@2DRIIeZ% z#Vf9d8eJ(~{6r26OKnN79e1JPX+KTgp+=EH`2Wb%j3ZYqu-5&5Rg8;mNpAM-LPFXs z$5N5iNWlm$2)O*yzp*kqJ9qWTp^mF@k@+JH+3wt%Wf#C5;he~djRr4s4%t?MJ~p8p zMXoNv*3tk9fJ|MqBwDc2ok})p>`C|h{Ote)oP#u66SGT)zJMO5E2#UAv>ZUwNF`Eh zDO#`6#NISaUdw%mK`$(qh~RgrF0%{(ki*PidJY^H@U#@;DE_Rd_&F0xE!mn7yiVA+ z(=N5XB&iiDg})Wvx(H;=d>q;3bP;}Vf=6D!jt9xG?`ZG<{l&85W@GW3AF40G+a${b z@k)%V;l6LpBJmIrZ&&iwd(Svw(jdrN~K5wt%+LNFs;PSToT#F_}(zG#s6{1)Zn-t3}e} zy*jlQ2=@i_2Jc=h*q-;}7Zf^G18w2OyAelV{}n$ic4kSa&6998nBQgZ{HBdXsU^00 z-9d9WY~JBt2XWugQvM}hT3vrLuDHSnt*X&&TnTcH7GX(06 z>@c=2jc6Ek!NhkpYfrS-(lM`(8F=Z~i(3C^q)=d*s6wg0&Wfk|yF7sk3KgKLZ$hQI z?GxySSMylx2$4NR>oG!MB{6>b3diB@j)b3`O=&{N2P|(iQAgh?C8dOr4DNi9j=j#g zs|B+)JpOZUzVxL$g_c(kd@^9D^fo{^zM8qtboU6XLV4+ilR@%Gi;L4JsL_Y*WC#Oh zweD@I?V;t+m9XYN(`T`P`v1O;=nl2^Vp4kC4WI2+b$&!a>8G&IFlLHxj#R750>`st zDDKU5{NRTqjT~s0=>&aWs7xG%3k@{kWjTXCaIgphx*e&p2mB(%;rK%UEEjl>G(lTdA `x^9{bdzR92|=8D zJ$OZNSsjQ#iSIxSq|MoIGC_O*XEzr0-Gi8Hm8x2(pmmen`qK8dJ1DOPe0>>Ql)uFf zRmM-P0&kvcX-Pj*qxi>4?e&sP4wvx$vaYwJvsr2zN36O%5eQ(BR$H017bM}qlA*%e zbXr1Nw2dCuk6%m3fMGjvUr4U(>gQlZkG5~icp+xkFP+NFemGlfu|0X1y-Sd>uit6| zcoI7JPC-`r+_1F$?h?LaUl8$lJ(~sFfys2v4-ElBb9-(}tL<>d01)7+6N|jkAXF)j z5sjxxZwKhtC1TNJNq+w!WJMo#&MM~|z9-1$vPV;lhdJ`w~* zR7kB2hPsuX7%M(DCN;azv|uq^MXrRLz)8XG47F9L^=`o7@ZaJhK+%stGWmc@KlJ({ z#QbA4-sZ>5=%T{eD8Ah8jS**B%sJI`*EH+13{eeEfHmvbOs>{g6zxEejl{ zKdGt|WfYXmu!DMlGNYk5x24aY_iu8Jp-%Q$)Fvx-!TXVDo-sC<1sbkk#rOoj1rj92 z0sl_$pwY9|*@)2+i#5dNh?8K0g0=ZMvAcb~R{XxHWU|Yr8v| zqvP~sbYovnc|I`U1&BocXq=uq;uVk0!R?NTX}XBYVG&S+C?ObkwMoSJ^zQw@aIQVG zM|xE`orjPvki3ii!?de0Ap)G-3v7uOgV%k4HFDUR?MNYsM#}jl5VE#;tXvoUL@==I zO?4QD5r?adsxuSRpqf6?V0VkJsxS>ZO3@UK82nE7pU1*m3+FbsxkwgtCz#ejzX3pP z!#+lcLiS8`0sf7Wr9GUiT7%2{!ecGih zHv}luD9E2~U;@BX%@lWcH`e!vSQ{KlMiT~&i-Z~8Ov#>x3>3s05pd8>6>^>h0@V!f z%u0_Y%>3*OZrnh~&}XXnbM!fCsZt=f!z{&ttOr+^r4mm1XW8#z!Ao%ra}IIs|KMp(}rcC zOD`)-!O&AOj*r+G9N;54+A4$seL&>3cvHU?26k zpycrvrIsddW7N>>%2x`ly|#w2VuaXM4zzKIJ#;9;kF?;|mLF@$ls%#J>xaSJ9eaSs znRBZBF~t__4nWNy?2;zc9eH{ytTjDh&S6`4(8XALsGMNX(F!Xr_zm`}v;dc9r}^tQ zCL2g+(XW%&Irv5j+05J={n~bLb=Et}$Ddn+U?Ck)jHN36O>gD zykY4h#qL_YH@twhV&Bsh@YD5W9vgAozZMc>re#mAH;K-V_dTIf@tYR9Qd^b-#YOp` z1W(&%#rssFRsYj<>~P}}%uKEJhXh~?Ks5{k_&5Oy+PUOyAQ_Bd9;vWWmlMucW9L7i z&hGQVoxvCUQ{I_tuS|}`1SUSs%Npg%QNu>Icek^tL)pJdO-S)cn#7KkyXXL&xzKZl zNElPzPU@X$_odK}BBJoFovgZI|)GIXt$)s>-EM{94+qy4{udC1GQE`g@6 zLg%jxulO}+A_%(x#869xt^v*J27>uRKnT+Ha(`|7f1QJh9!c{8E@qo1yhv_~ubRYH z+&GGOdz7KOFvm#nQyC;bbzoA+5))#|(qwp$KLMmf==sluUGj$AB-gOZ+e@qGU{G*Y zY6Fq+UAuXN7rPtrVKfHlX{F2+bl#cF?LSSqUtA99xt|&SE;Rh%Uh{Y#E|IX+$$&t{ zK#z$6SJf6~eE$~7_x)tP8{yILK08}~Zs2c&2UM*~?^x`bKK)M&X#&nI!hH~SVa7$W z>(UyMgwBn9RMGji3t~cX>ab*O`X#u=-87oU&i}D%dzif)u!hEWx%frId=BmmN52jE ztSZ81Xy@*9*KNloMjzdk(^DUfgNi2dBj{DxzE;bKsav(SPdZn7c3E}S;oj`Fv!O^SwP$s27{ZqA?Udu=@NCN0$1QU;M7aRlU7 zMiCp85Er<$O`d1Ux_7ht$!$mlsDGlG^JEI+y(-*%fKz=y~D9MHH7iQW;J%4Y`_#D-kRPAnKf0XDs z!Ie{E>obxGw+1Y=pSw5ap!(e|3+`YXC_=w!cd{8{b(8Qd)q10}-fbao?&>oJQ@I$hl8*UEcsr zbg{Il|Kie3VV-k5dZs9~(&bZ(L-i7(wd$WyHjU2bnv{0b6u79kZ7}*q$U`TP17Wr6 zdH;}t*-Hyu+rls?((Af)wfS48UyJ6{?P&?XGM6m4e1N+>;epp+ZO_VK$=SOUsO>Jz zOd-~~1-dD7T^lbe1qLQ*L`Pdl2H&sH*+>lUHtB~aZ{HNxD%@i-@ed~whstNyDqZZ; zAM9hwNqbeOlhJ`>(9lpo3-KSgS!g#t@UXa)WWkcvKXC*Q`g@{R`S*f4Y6JnXMO3W z2Oi75k)mR{p?Hqf@HEP}VMEvW0ykOIU4V9#2-N@9yBLo)qF&pXK^mAuTQ$Ktr!$YA z#gJ^k{`VVum2E0t^(^9C&**T-5r%7hbUWer>*BsNrV0uPm8^u_1h|;rN(jyX&FgAM z$xiQTppDW$sRY|jehr53md{V`k z!Iv)mdczSaryv>ZD$@77g6UF=yTV;ms``u^G$TQP{;Hj4^hU{31Lwj}KvmN7lk8Lu5k`Q2Vx%xO0Wk(eP=iF`#vS=k1a^bcY>XQMLY0 zPwL$es>1kkq7m=xW0Y#Eqlj)-Ji1l#@JdD&I^jQf&8Yf@jX#!nvn!#uV@%)<5Ts^u zPtt?KNCqFkV9t4=Z86y2B43COsTnF7Vy+YiY`a8Ls8Dl#w(y-6)@v~PA`f!=WyxoB zjo1xn+LF_xx5Pc*ji+5!pANa>Id~IxwZ@0BTnS(?0EG5CBv|2V6)e+|ufT@!Ivbe0|!_=AQ`G~!Y4s>qDZ63c+=?d*+p96?Ka7^TP?5^V9njchxf z922W4)92*@oTWwCWF4w;qh6C{%txtS+vO%_7VQn!)JAm^GW8cEwJc8mmMorG#Y=;_5Nxru~GYg_Y#A2L( zAA2w!yO~?sF-GjT|0o3&w3l~T-pmMT;UMJ|Knei_tWA=Eb=p~)SM_oysfM>BEd}?^ zTd3cSx-)`$tZd3^uXy!AixM4HC>Yml{sv9uW1=>F&HDL(aUa(tcGfm2P?=q zgQg5rFC^eRoT~x!BZ60q0^8h3zvtvsw5}7Qcz3VyO*I`i2LNS(dsP0dc(?RxIaMH#_nOu&q7C>s;F9@JdRgn!zey}*N`N~;vA&B%+XEz& z*Na{HQZRJ)_5u0tenDK9;X>zx!d1AG#Fk>yotH_UX_*(v6n)zwK+0DE{c-)xDMxcP zgE%|dt>?`2DGQG7;xIpi^%?pi*{sGA-&%2o!=tLR5>xZJ8T-1=y6N&Hga-|9u@hiy zu+7Pr4kxjnZ2g$Zb=G0?Mz%n1WwqNiN_tFR5q?37>s1qK3{1ZK3-x*=x5Db)_Qnk$ z+$NIrYL&{!3p1N+XE)-7*cG^d3?I345Tt^4GOAc_#z-M9F$ydJ;il|bQg zF>^NgeM?4c*(H>ei=Pn2BDH)^It;O)b;&)|B8Tdbpx-b#QCBJ(<<>B4p_=XqS?e)! zQG8adVhbz#n};9xD{nQN+>6<$&B3ffg|D2L&zb;k3=J}k3xZ%H*c321Vd(Ubg`o=$ ze#p}it-9r262u-yb+P6UE*S1m!G8I;m|7$E@2%VF7$b`U%wu*U0(~2BvJIS=sTft< zWJN33$aJfn582#p6BU}-&K6a^4$?%$%N6VUJA>o|sdd3vqhOsD58wn0n~eFUXgji7 zFn__>AC)Q%A=TiS8Iqj$r5^@wj2c7gxk9p3wmd9D(5Ac@9Va4VW*+!nQfF1h+`Z!6 z12IDgFfr+)C-9Bt__I?!Cpwy?o4>E_(_!!akT-n`TlGkTwQ~DJ1!tv{uiLVR{LyN&0e;-f&SF(EhY1g52{@>}Nc-OgEYxj_Biec^KN zsCCDQ^&5oVW+KcIR)2149(<{HdTjl_#!vR56A@i<_#5`f;C@2nkv`Mrs3!@UyGk{g z>`UuxR@mNFj)p!XhWo&&&2nnM9jUp%*-`z38#8qZY+x7j)#G&pR@L^K9wWLY#v`iG zP=;5h=a}c9UFHZ>D1V+_3wOhO4k1kSCY3)g<2&?@czv?J9Ml%6Y}y{P+DQf9sBl&-i6Z@`?Qi(zg1R~gM`$9MzRcy&OX-%f>=SPASiy) z!KO6mhQ?X_IWH1a;lQtZ@@UOzDK8fF+>%B_t8f8Q_&B|Vs&qp^$0;dx5#U$!?&vm| z-)S7T4ga&(nDtQsg1*n1!Im-sC8r#Hp3ir-3Gasm(CX*E`LYH~us^vRJN6iyyxRNX z7^h1^fqkY+zNhI#Y^CNKa6LXHAas?tCa%Lut5qHgqZ~z#=&0)Uma_CC;ZW^)o6){f zlxLAdVbpIo{ZqPIT_Ya)wZzi0vFq?`TZQ${Cdr0BRai*U@gD7}gA}-qb29DJ^w!ea z$jAbBdOyDGG2;D5Y>G>MUib?a+V}J}*aS(Uzo7zh03gkSY}&PB5S)!P@E?aeIYbf8 z&ihApwh>wh6qY4xa0=vH9V7+6apPw(jfBqib|uny1!VwQ?hba$g zfHz`TfXl>OPl4e=T>EY>&@x3K{{lL;1k4xflGqd0omi{9)!x+w8014!69%b1A+S3~ zzFts;UG7^HY*q7gQ@~ZB%45JhOe8IYz|eSk!7H9)*+>C`CcD6d3o{1u5${Zw^?{yr zMK`+#{GWhYvg~0x{euqA#!8;N?FVxv!eyWN>zF{ORt!4_zjSZ>K#jN29u%$u41v8< zBQ1>nHuhF{OUx+q#B{RtzjnZg1lO!Z4r)o^_l$Xu!}%czb^Q(@-8mOL$7Y}*LL5!9 zUWq05vF(*;bM&p!XkIe-uwri#zK;M4u|52ZQx{zF_RkmwKw6m~NkeltNz6IGZQ>H8IU>M=py9-FCN~=F-dlexQ z6EzjWGb~~p!)TE%vwB{XkY52FC~@wymJ@$Cr-XG&O%<$DNyB# z*J9R^W#{U-lZ{f3TeUb)yIM!oP(@OypVZ4jv=)qDy|eTGQrEaU{@I9G@=nR+!I{f! zX#0Nw7j_;|fRB}(J*IQG6!;cLzwp- z95tO0Oyc_gVoWot=n`Hq&BARtB~r*OKhc(6#>SSFI|-;zLK7Vq6ez>)fxI7kYR+KL zCQ?sKca=jRV|$$Y&N3y%A8Ytz?h6uZ`9m#En-Qsn(d&VphfA9biJ zX_U$!M}23ZnTFb?p!FiV!iGASWX(21gANS$7dm%#(j%@~zT$4KZw^`aB?wY({HjFm zB~iVSROng3&FFsDQP!6!GebJ~f5LJvy_E1*eL8;iYm}IRz1E3OR_ZU#0X5c`dn#mW zR@M1(F<7b-0-Z?E<)GU$rojp*Ad@--fZT4M0^`!NVTUsoEj?WHR1)&z_n#Yu*Psxt z{yS?d3-**UQj~2hV_kR;6qrTAFKCSKGiS{;Bfdiu$a!Q67ZNdx71M2ujFp^Vl6-ed zw28_uukkb;AjQbEZ+qWE85c8cwuz6PaXdApZ0!@Dt~us&oJzB%g#B$g<9*vgzjciY z^+GMA3Aee*ZptZCQ@~f-swF}Zsbp?L=)3iispTR=ShbPVP5VHmV_O-W|o&j}9`0o2Uup2KObB ze1S5(53b33Fj)pkqAW;%+xMvjX2bc{Fv`kKjenuZPoWf&o*MYFLN8fDN;ET&p;1IB z0kU&IY^)Ffsul3h2a7)dY7*fOp5D%|eyuvkTAstMLSX9+Rjm5ZB=>UF32#JPEF)9V z)1y`21C;zVls=rrHvGZEmRmn48rEg+GLa;WoRqZ}rVi&<<`fU1SNJX22*>=vbpaVR zwdy59+28Q%{w5mxq)B%B5K_&)Zvsk#)XScFpx~9IdQz%k{;C#Zn}`UgRj83T5P)UaSe* zj2TMn*^2DuKb_Syp;)YZMT)6jRUXE@4L)OD$Rq0E%jIyDeQHfIK~7@*^QC{Xk|yvSXTgX#H=^OI z@M51&H*Qg58=o#rwGme$L~4#x5e<7bWN8b#PYJu(QZ(aM;?UP7#gZKyBY&=CR`^Hv zKwBYGlZ!a(uIaTqVy7ec=D_P4R}#=X0PU_^$y24%CeDj==}#(A9*Cr*&JeALua!ksW?e?N|{0FTiTJq&;x$EVG+Ot;^^T!S(}5sWmdrR3qxI;&U(WrG4V`RYd5F1o zUVchZ)V;_Fz9)@Ce>0{`T6+EOEn=@ZCe9j*KT zE*V3yQOEGi2FOG&ha$))emEIpVLsP?F+az&Tqxk`HEm(Nq+-{$MpHS{v%`CG_NfZh zvc;Hr>>s1IX~XAPq&msVQqoG@%2jig%BUx>Eo{NPF%%lw`v^UUsY5Zo4ml{{`u!Zw z$CeFJj(ntrH&6l0+A)gn({`bT{~Wy#gYethY(0aTS}+y!e5Tv$xxF6yFbkU$5&Z{; z4OPG(6XQMS0H*JW0)%6Y>Ai4YJrv^qj@)FG-mBZhDk*74e$tHGCmQrh25TV{%3b>r zy$Jb!t;X~dgMNH5OsAKTM3g&G_4$@|Ao55+PIbXDt)>MUHkv$SedK8e{P%KK)DwKW zKEu&A9bBZtV;yMQkI5jzE%o7nh#T|Z0it+-FveKB1%u&{4Veu(!01Pvh245&-@p06 zIk$nS*9vwy!{c7fvS?0stwRwF4sH^l%EHIj&dD$Nkt&F^xcNlxU$JXVn1 zK5>{#3`?(Y%tZwlUo8V6PiX@;i-N04O&YOM<+(7f#+`ZSawsulmgLy-sv~0Vqk0TUr{UlxLsVUr!x7u& zWLEAb`plqmTdA`WAEA+Gv;E?5mkA`v)as`h7n~9hUt-MW0~r+j#|9dYKA}p$!7c_J zyxe$4i>IE3ks~K4IqYDGwW1)=!{<3nP_sFmXxFU8*T5*ydpjm?c#rN zZmB(G@?yk#B_oNZaU$WZVhdXI`?@sMU?k6~;ustQD8$#v9%JYWfXJoJEaLr@z-GP3 zhVL#ghw+9T&R1@fwe%aRtb+CRtmdOQ z`_V1@5JKQI(p#(cM&}h?m~66UkC~Kx6vXnMc--CLr>L}l>!7Qk!J;nV>-=x$6%!@) z8`1NFrE4YtX0oTOGC>y1;|Dx*r20Z`tB-ff_!oM z0f*#d4W{Tt_M!jL1ReyDp>qx7J7>}bIj@NydYp0IlhGYwZH~U&T4VpbM6}Ry!CDPF zhitqpN5qsdESQ9ma6plY-C&@ng$o!&`lgFl!N}`OPm1M4{+kvB#5Q!VWh~!^_{;S7 z$@DW?9w+@}C4j_)7h$_RF;C2$xkeHAVKp(nZY`>DvAB=J_a*7VN+feeTyu$rlIx7}tsf`}uvQh6I_7({j zged(f$U$eN0#~TSni0V=fm_b1ftMxXn+LF3bGQota^KVpb5y*Y8hSIGsUVkjXern- z{)(|aoEDN@(*kYiwE2)D{0_F7P&XB{ZIEeDha;-@4-oUc=Cp1)2M7P)w{VuxWa0ZO zP4P%N*d-qfhQ0-#mrJ}PQ#d4-BWO>%zGJ&9TaV4FkBrgr?`4n2<8(og37&I})L|%F z8^&O@tF7PbbX~aqb*bcVU!&$qyxGog-s7?z!2O=HyFD+j%Y8>5yLrKD*vAoSHw;AX zIlB~&U~bb{+J96@NjWQbx{p?R<`o_jZFXBk*W*FkW_ zus4uf;wdez%J}@rUpvchI{z^qLYj-O23T=D^7jB%X##7(E1h$uI~O?25phQa(k-P3 zH#g3vOU##xftnt~>grs2z?~4HN{J`iMolS!@9(z&L^QNxW7CmxN|#ObN*Gp(rk+*t z%fosyewx^Hs2QDjb#9nZH7`f=+mj5l=g+ZGgv&F}J#P`&BUI-GBFj+Qz6s4yS5&CX zkWHem0-K9^5HRT4lW`7=@|06uA(K#8bFn5f7AEMgxN(9pvZD+h|z%`BwZf9<v1ys$R?)kB*J>Y|7{ zncWp>IlV%!y%%=n;>2}ODn{Q1e)7moZZ#fO1~G|*@~OAVprogB62#(JgZc&} z=>Pxm|E{p99ryQ#zdo*4T3VR+JQ?Mu(m!yZ$e1`p<48qSMOPsBlMI?RHf?Q^mjjCr zw6c{cd*U(USnoxf-g|*Y8@|G5ev|Ft#dkncLD*M3!6iLj5GWr}G85t9*QtI45Ptzt zlOR~8TbaN(Ee%OkQ(~V*DT)%Eg9tk;JzA%GvcmONdT%(s2^)Y*4|0AQQ;F~8zs1Ab zY*B4IijK5@DO?(pw8g(^G;bKj_GCMTo9$HQ)^B>5Z*C>wO+u+S4|BJRhW0*(>t3gX zPB?GAYjhBID}r&-35qNN%Ak~tj|s9u>JKwZMB&>W({0+5%HJr@_!OHw&7`#JO? zN`?n-`o75O^NVBDz#P6f02B^63%G^#BX^6OnKshU0K?abAoTA?4Z(gC`56`=bE@k= z5&m8-1w~5!X`G>l_xWN4h33HH%LE)r*Q*urh_w(VM!_m1gt=FrI*deiaj0Z@nCM1~ zH(3AR!JiUc`g+?e1e|%CD-1R`;O*l+WXlrobGN-js8gGVv{TzM0q=@nTV6T-vn9|; zt9%cg&XVdk38(ZGaa}DKFo0>t=9;YN2QM^`-q0qq&K#C&->G5YRx?%SWPe^vhJ( z_Y`XRp^oo)Q3TA@{3%;OEFT7GDejD9@&8d2n+sh)>ma9rX@x-p;hKsx(Id1ZGtPOu zQ7y#R&V&b?IwO}2yCevz*_~4{whReeaLdx+}f$=4=BP1|qfSb0T;ZZ_F#r zgIF7?w^W@+ALdaIc`rCNxSKb#2)3?ovb-?l;BoL<_!{gG)n1T7;+TZ@9Am4nPSrgX zFE%wB>}J`FDlewx@>R!B!Y+CSQFlQFJ24r-NK9HrzGrQ`uSM$(c5+048@LvM;@=6( z!q(j4{$kP13sKXUDNWO)27|3=oX|nLsR!s2*DVCd*&4k7E1=Da*Xz48?!`BUer4a( zE{^(SGqL|?oIkH+V7~-NCk9^ig!A`gRhL=LbqKAnOn+7mE`h)Y=5dTeb?~lA ztT=+Z{_=V>sF0+pk)KlL*TL>ruTVs6&NKfVAQk@R(i$?L5VX)Q9_iAwq>>#5F) z6dyD+OK&<;_0Ba5w_>bt(8eq}9jL^lZtsuh0W^?dCugvGc$AF+j0Sm_OP%2ddnt_T zxgEQBN{Ylz@!Qj-QQ&FyTssuH`&EaBw@89IQUj_;GyHjB#W0Ab_59Sp5vnc434QzH zYZam{k^7_VZfJm|#yoy&t4jiY zxHdx-1!N}Z$V!l&vtiIpI3~x;JQm!OfNd668@qzB>mmUPhw@BxHHV9V=*yNNu_D&2 zIlKzPOcN2gD3@)PKv~-j+GS{sf3H&~ga!WnLnB068}_B)=6f%fXB(kl=0T_wzZo~u^Kf$a=SYjwiZ#ziH5Yvtkhj~ z`=F@JvN;uk@g*l#>-dg17Np=uFLD&BU>Td*gDn9RfkY1Y&7H5}nnoy&$o|Mcoe;*R zcQ(qndO{Il3itTG>L4yK7)KhVu$OaFVRh@8%EPEz$^^?~Zr(btnLLIz2Ri7xUrTTF z)bSbVyAfEru|4;VF3Joyo;kFVpcbOEk;xY7(a@bI%Kb(cE*h!E(mc_OQaikegT%f< z+WK_0%xWCEupGZ8Lz;wTO0XY$jC7jPSkaFSw4eG@;&;AqbjF|`*Ne?lbyzk+MAEL)5d|?)izsW69lF(tm!@^J4&3FuOO_jz_cnFMcRI~pG zKPa;ei9S74774bYcO8tzE8AErGq_Fk#DBtw&BAGU=GZ}T^ zHvjB9?y7r!y``XcuQ5dz@x$193RPK?h_lX{+ZY`nPC$`K(me3^|1*{uGUl*N_FCfH zEzM5{5~?kgw2MRaX+MJas>@FMj0zsQRQKObMI#Ctt_;fzX6szX!^XsV2Zhji#(l2_ zzAGR{+bkX(B4kT*$XBs6Qu<}EbbPeTj@ueWs;S~W2i5-JvK!MVoSpOg7-2dDxxi^! z#($(zgm1#hB^%fU`8qcqtrOJIL}qay+)Uum^cx*<8~fi)E&VLPk6%ZB1a}Fe=OQ*E za(f{2=Bv1aSQmo==^iaH-BdSm4SzL@l zB%*zr#+<0|x;WkE=@8O{Utl;4!tEI<&HyRK44g1IKwI6Xb>z?DOW4Gr=^Sr#GdTOB zc&*bo2^oyxwm7Q?3=+ELRpVX=aXu*YiG5I@JU>*4@=(5V)5$vBk6^{N^QvS%mgdK@ z6A`GvgD2u!)pURQBN2stR5fbiHIavIzJ?rBVNm&||HGWmGFCjl1T6=)?fhW`S0h2A z6V+1rqSuv*q@Y4mFclTZ{>WH6ufptH;H8um)U0}!JdhwxPU zQ}rV#If!h?@mVIwVY&f~yUTA^xUjIZyfo?55jj(zEX8?lXbB;KQG4KgJ@#@gfY?Jd zN6?~56PM|jMrrE;UsudEyhTkcT=tkVmYxmWhbNkDnq!O$UjhA#J~6x*cWN!c43fez z{qlbE>1CP%_IE^jX#DXWv>6_nzCJocXy*~y@K5qrcxnH3q?kpKjR;~a4tvFCYiJz< zwhd2waXJBp;hcax>`k1%VYyjbQSc4xrX`9$!=ql?zU9m_YeM(bfY_GE)WA7aR+?y@ z20yv(ui@gS2LqO-Lb|Rnzv~jNn1uc3^0*P*KQM=XaZt_D;>QLE-ml2i8SB?ju*TBVdu>y_66wC+xiZZ^)Uw9 ziBQ#-O3L#y_Q^&BJc{96Y_r4|N>Y=)*k#gzU_&Xl48g)M+0>p{uJMHuN7cKNRx>jl zqaX9!;ey-kLU%T>53S2vmoHg>?+bSnF)@HGMO=eq{17zjPJjBx8FnMAJYB*($OrkS zScZT*63P!b8_%{y(2rfT;(0n71{Dqra;iCwfFggx{8qinbI1EC$CIKKhfvw6ZXCP# zO{ywDrlz*vepx3rpz(QhnG?+O=QlLcf3~DsmW>=ye$KR0av$uT|Dv8z^8dYz@~N}Y zc=Yv#5IX(nj>mtfaA}*pv{vderNUJEJs8@h4KIt?GsAI+#fmm$-JQ|?X=#)kzJSNV z@K@;YJv%AO5dG0YQA_)F)A?Gjjg=+2Uwi@;p{DSu6-zv7uR9T-z8(5{WCDnP54wW= zz3ygX^y8)i0b(|BtZ0xKf;Brj1W>Dnc9M3{3+D?Ca4ez2Ol<8ZwXGs%4-P(oPvU?? zv^)$aNjLjt2T!HzVcbYi`~gh??!p))-~PHN-CsGY`@o_21Sfn~uDfVl1_Swm<>f9I zz+|K>1d--;7eaSyhy~{KQc^7<9!Hzjc++G(v!y~smiU3T9nGMMU)R0C6)X)q|ZFcGVF8Zr5-Q3^s2gys5(xX_u_Rp_>&R)LnT&Xk5-F>zzlsWD2_bCAQ0}$Mh97;EAK!8s_U*_p<-3^kZGNCoKMf7sy~{G1&%L~^3XMOA9hlHzCq`Oe>_Zl z52@(Fq`^u!L(m!i7NX7_=S{Tn`tVn3!LisUr>j}`@pE!GTSR>1qG=n=J9q<`_Y>C&gKMp~hY=t|a(%~By>;)ct5 z#n|uJa6V|liL}Qs@A=0BR>uBMdt3{Vnku_qleTxZOpw1Y8w&)pZ0xoxz*uSvZUMg+ zKW#a;oOW|1&)u~yB4cx#$#qo124rn74yw;1%o{5Gm*xhmWePDpOsC0|RqC-oB#6l3 z_^9Q05u=uz!E4w+f3>_X1AvLUr|9!Ax)*F-03bn9rT1P9omx;EQh=XNTXuzi&9B$! z0_{6oRa~+XBnH2()t})%K3;yWms<4dd-aki_me8u`$z)eEKO0gM<)&y*T@n zVr})xq>?%Nb5+0U<@(Q2y2NhyyJ~OW$X&=!xhI)2=Ig=U$znzbyprPhy&kcCR7ClS z|1!E;B;}2S4i4p~)K2OLT8lASsPTWNHykmJmQQ?Mka9Owiw-?=1st31Y+^}M3&pg0 zStL4qR1UT5V4F)Vc+;+vvkx3tG84AI0Fz--*WsXbWF9+GAsv|psne5`+3`m`1Y8e% zkqQMznv69fCOGu5jA1bY$0&i+#D;f$_Y@b?+sA>$h&voat=Md9aJk=#4fr^3Hyv+D za0;h;=7u}+ndlMv&8#0 zUNTObv{$3d>2t5tCSRSE^~806MqPDn-W@>u&v7n)^A0iX8b(!;V}RfNEZCz?Zq`A^ zl=bh>(E!Z6E?6URrm~#w(KRRl-f8)6W#a(YCp%>+?xZv z3`X8PlaV7#kIZyFk%}d}9D@WLob`7W1K4*kfmAphde9q@Y#jb!X-g7tqNd5_=WvIy z0(>=kJGeM*R;yP`h@Wstz{@wx`oI9%eraz9p)x4nO1#7lfl8O>=2B2zV!D_U67Gd+ zYNyfzRlS38agn?u!G$ab5{SB9oMK>@OYAcpeoD$PfTiSPTSS#%s{z)|w&Xv`AtssK}|TKX|lRbnSKXklz#78w32?W$40<$=wsP$64*v4!CDIhsFz?M0QH z2vIsd{J0A(kJ!-Z9fHQ|SiuBrsmZi(0QFDmc*ZyhZ{2sCKr0FzW zpVIo?Nfx8QpR1enPv{7E`2vbiaHa!}?=9dKHO9y!>#A5+V(ZOE?>8Yda+_!!S6S3J zMKlBJxQF1?OMt%aM5H`Jny}tef&8Yhc&PSB7uO661G{ku1qzlXh%1h|Fk{~BfI)G; zQX%elEE3AC9(q)1g6yhD_(Bka+WDnU3hiu~a`Y-(=QZVka*fx5yXAIpXlW1Uak`9e z^J~tS(XbJ+`sWC2Tku==!1K3KOo#eMc+5g(AU2%Ar#hyefKRoJkq&ZluKvA-?1Ics zE;^mYK;HrR3Q=A|tA3>)^HYGA{%__KX;pJY@KvE%X%|-6y4rva1xFk*b*p+1i%>!7 zj^Ait-(X2IZ$1&8)SE`6qWI5zSX^igb(&%sL+us^v#8NKa!{udSdJI#T34G+#}c2q zP%Rj=BeX8SVN)t!t|v{w<*u-L!zsMj54DbZOe|cuu<1aL{xvBzY1egF{-!TUF11&M zuwBU2Nts+T*k7)q50!{);4ZQF(F>bt(fICIP%81@JY7-=`9!c=^mQkMmNFnz6=+@s z4>oH#<^WTh`sK_Xc46jAmEtz`H@dp~l)Hm5p{U@!RKvO;!Kk@!1v z774}Q!m0b4e7p}07TxBGe5`7(L5stvOs+t7oFU0f4w*(OhO)m!ys@Z2YIyayf6x0#7`m6w3HG72>BVXhLa?Q;4{onG!&3y2RAT8Z+U! zrFyk5%?#7v{eS@Nbx6pq_K8t>^{w{9R?XJ4qLck z6rH~(1T=eXM+gptT#1(VV9)D-aCQ3OPmAEgpfb9x944uL=OAK~00H{Cmwdp49G8UB zMj5K)eo@&xzDDnitL3bETwbKS(9OT}UQKSRz-WA31}tPKL6Ze8Q`VDtpV7!EsR*+O z#=6d1`5sfh%e|f$lB29BC_d>*uVRd^PR(H3T~0wmITzG{i%S(2&@OU-Sk>r4(#DN& zSo5ivGTOxIsRno90`(3Era~#nfr5P2F#@!EezVwv^|eCtJ3ZMcRz#5M9i0yk`npzz zp`$yp*svX42QY-=u!84n#hQwOl&XNwoLi{BM;>3fN=X~O1tsa5gJjQ7#j0iG{zA}I zXUnHS3kCo=wT-#y2ofL$)f3*PyZpp7-Q?BhW?Ty`3^J*{8F%|b&%K0kC=BnsQPCiL z8E`sDFe&_fZrPBTf%%`vXpGcc|Ep!|6c)ob@6A^R%&6UHIFZ~ometQ)2K9jV9w$Wg z<4ARyuai%~Qx9YZ?|vS2E^2t=AkF9;vpPF~gHp&&wdCX)%l;y7k&k)1ja`|xF_Cgg ztBTfQCj`5#qf>NE#K3IqSLFEm1SdA(Fhnd2n$L5uo>~WM{7qyTJGaFVCh)X+S?ZXz z^hJ1ohaW|X_9tS>-e9>;u}#2uGKZEu2btf+a@?KgS7!EuMo2(F#4aUj2`DTv;faHP z9D**TNrPFsUwFfk;f!Ez_K98KYQ#_dPgq_%VHXO76Dq6`AD}HSyRm?;XCc1>@~jM9 zrZyLwbXTDR0L!TZ!hFU@=19wc>T(D@Ragn6n3zMT7dA!7IEU>*BMQg?0iWsbaE@l4T38b(5 zLVAV1aEP?yz^NypW|UOh$^I?0j2R&z8=HXuTE()HjXk?Wd#af(BXj274JK&*=M(fk z=MH)62j;mKfKD%xeA3s}pxTwnkQN6k&mTY>+aeK%eT{AY>N#tj+x(b{1y4@yEauVx zFxbC#U2HWUD(zjJxSuXPi)~QdkHpAHlMI(Y(?XFyzwfaMYQ^%+?><<1VMI}-JZhof z8s-j4GE^TeR3?udufHRSzJK1Vj%_U77wG;(m9*1bHf%vBjeD`O4ddiKO+Z>W3zdpu z(_|vSSz%kYpMZN_Gnx>W)L7gXq=;?)oB$ERgr}5U&!eoz^#6a%)|*NtReXbKE2dtr ziFLdV9yQ74Vl?bD3iTOTQIkv9RV^GPV51`dqZ(p$;F4Ji`Z)g(KhZ+S7!Wt_Yw*ES z2X8&AQYks$)zZ)0KLNbxrnwLa78>E6O3;b$1*3_T6p)5IPs9)bN~tqdeHs_j`6b|o zh&_j|kpaCjC^SV!AeR3b5*Y_J_7_Xr;quYh1=0@pYO_Awa;uja2yp9M0efPLI40@j z4n;=APVgubEK` zqn(=^Btk>M-6_r?Jbl3QEp8EgT;`;5MN$Eu!Rt&Vxky}^1U-GvQ{F>^TO{&II6oR$ zzptN+kaP?-k9`t{P`5|5pevRVSd^r$sRk;z8r{<@Y06RZ+mU@x)yRz4=PRMKkk-ok za$Ib^taH$F`*|NVv30zXR@o&ZZ;b09;aJGC9o8sS4jB(Isu=T%nZ{2ca+c7n*hyDp zG?&*E9yujf4Cr8`o`KOXi)55Xqc{uY6&(aJWbOOnz=4!*Cv=8C?g%-);W7ju`LqIgnX{v6rG%P7qY z=}`HsXD#%9yYU=lu0-dCA8hxy7YMZrW;Nbc0BoUa&F{CsF(G>$?HQH}!uyb%#0XF4 z6BXKh1?RvpzGCI2iLWcirjS8)RnK8NckF|c0CGH1&c&{`(&|ZzJpUKxweX*VlcJc{ z9j>doXQeEN9D!qNTN{UgSR`NlH7eM_LNSBb2VD?d@DkBKeD>bNyvm!hL9Dg-m8G!t z;wf8tHGf4=VPLiQA)!TFyf!YUs7RIT^p{71C+5;CDFsM=i&|v_?8DUABG&z8^&znI zV+|Ce>f(t4Q_Jgiwh@#kDcwvc2^G60VN^JxKcfe3QIWp#_ks+yuWsqpL9X5Jgk5Gh zQ?JOJj5J67YWJc8u6m*nZR>)@*C`t$akE1-O-?or$z-!T#tKLae8Ao}I=<76aKYE_ zf10**2hCP@+xslsp5!mHPsfL<_w&}-W?V$_1~IqZflbO6?1WFoCqjYk;k|Q6-XxME zhF`gP@Ri_hN~aO5cFpF~sePzS`Fsic0K@y_h6njUOe<)Tr~P{gb{1tDheJ(#W)8Q( z7C2Io&G5H@ArrsvrVhJjJe7uCEm!vpCpzX>AK(82^QwCpM8QFch^D_^EGLd?>c;N5 zz9@%5Q^9tr`1*TQ=Pp;fu=m%j_(&!9{mBOv7b1g+L-`+u?!tOP{^IEiFy@psCJUZ2$D|b z5Kf+dh_@Iw;(3)O72yfg=`6_TW3+2qa0cLE&g(N`!TA&h(1U2ThK^|6uJq4C(@8U# z;{9O2x0{#1X1|8&5N1&cBj(x`v731JqIB#l6R4{3oBPF1*9`<_6G4HLoX;HYNNF)V zJBpC%Z@{3F27wBdnO5y{F8Kt=iIHr=GNE37f1O;%eFP6#i?ylxD%e|SELbR+;UNmk zDGN=9?ba7q9d-!p&L10YQ>0BKzu96~+6}YWjFCFX8{6_Kre36Jv-8_>>{Xq771dRl zcf%;>V)${3k+mAoXY8&AWQVuygoj;0Ul~H)MJV%M6$1_R!GHy((G?n3NPQ%b#vjx^ zk$N)aqudM)Mwki(CJp`(`3f3JP`k3@1@&PT3Sb)EzBWV^fl<2Vfl}Bf3hRG>PvK+5+uql;WgL>KyUn}(8?ZsB6M3C#zo0x`s({m>Hi6^3++?SXEuE3thUH&gv0E? zf{qmg{KJ%f>;kEBIFu02`$FnIxdoKBfPyd=3)B)>c6MqmjxYFQYd!U4xDQGJlh?Z0 zdHp%r!iQild5#pKQJxfF!Y>ly^iTM=IUu=f9~)Ug$x^6*iUYiA!WmV6v^Wp`aE`#0 zZO(W3De!+{yR1F!F@z--7Du+jQ%~>U<4nO zB4ArD%4H)j;d79m5>%^q;{B{oxbmJM?^KIMKY0KzRhNYKa!tYgLMxe#2qkh7cHVou zOPMi$LHJedeax%dZOxZZpfMUs21PNC5-kgUaY5vb29%~+{If1QFRb#9HhIZ zS+tq72fw#e;{B=OKI%>2`ph;>Ni{D0k8pN*EEJaUXMp1mv|@+pf1Ymjx8!+Lj-@4? zQH;!&5!5fnm3{{#wX2*nLnp%W0#HSNpMRqDGlF1DCs?IBn!cS3IO;%z6_P?+*_NS* zs23TZUFAFTs=FV>Mbm|w&v3zFduq;O{X8aE`ENetUqNilTO~2(xlXTA(PIC>J^S8*e$MMUQ?-Jy&&1xD!8VIK4!=q8oZQFFptH8@cZy~ReZ#=_T0 z!0S`JYPKMC!iQJ>P!g7VlzDdA3_)7>B9VWgK`Z#(0||sPYQRtodTZa*C?{ zKNbRHTFQ*9YWlfO)WaaKapVIX~n{C6bVZ`H5?`UH1phL`1PDTDg@vVM$x(i28IJs6Pb&O^K(t^LW1 zCq3=Yz=dN)jR8_o4CuAN2u+WnP(K4q(bHgpnR-$>C-CXY%N+;h8boY?PU2JmGeFG0 z_%=At(&Fb*XY0#e%!r12Qe6F%@z%9pPu5_nxfh9);H`CHP`JVQBxt$M#!ynF(gNNk z>`*`76Se@VPeRbOU1tp1*5p$g?i1D^2HBL`Abk#h9|8BBgOvfA+&%x`iAYQ})xO7v zSmFxFR}-@uR?ts5dHpIQIH^!%TYjBXvBizeYjf6@oVG~Y$T={^nX>${>$H-`B>qMH zePq_e^0<<_A4uTyKrgv=G&m!)w2NiZhjS(4v;eagIS$2>OK{fszCawci4!6(+YAI^ z!vgKdJIg73!cL1zcRT|F$!SNngsytKR|0=-ZPi~lB+~;<(_aD?(#u0rJ~0KS3^odv zpUglUtkKw1%^wki05(E!iZoQ@M7SKbfm*i^r7DKIcYY-XE}je`bD|&Gs}J3wTqku) zWyDYe+K5hO&FFpDL>!S^1r@|g({UIZnp*4>_5^8W>^AbA)Li3VX^(-7doo0XBXqU= zG&bU;m<3PCB!bvOqgaVO(d7(3^ZKsf-1)^b-Z^t$!h)`3R@#A=sRlyW^v?9lRo}t* z^33JpHG0u$R5inbx~!zp)WnB#I;V~Qo=0>~l+XQaFfuO1Jf|yJ?UTlYa3uO08imNU zd8Q%gB)cm70kD*LmWxmTS6x zYWzm^9CDXJSOw`p(#~&Iy*!TR_b8^D6s-?An~2eIsq|tV0n%sG7tXJ#g&Vp1#R5`N z&FbXKC@hg~2cByNU|KjrHc!s4j9%#fB8en?+n}pW0ng&$&U>;fR3|sgQ0$;xW37|7 zY${^;w)VGB*DKD>&j&rx0@KM9x)Oyu$O&CvAmQf3<#q!;)&|VOtxBhTy^!8g#!Ud{ zb=T<3N!UEvWk|yb^enKF$p`Y~ZdnpU>^Ge$teU{r(MN9W9P(gtl9HNX3|CmMg1^?Mrbef<@n1%;))`* zFg%{aGOn?ykln9Lm1med$h&FuI)WnaRn#TUY5e z`g1)Nbo^s|eYn)NyM`~^7_(|(&y6D}g##yAj#=!-R6L%SO62;W^hQgq-)l<~er=wd z?V^1r*xcV-Hd|Bv(bC=^z8c?KxfAINXS4Ns2;(AupP*L3_pjBBLfP5%-YL1FPzg7B=h>{ZY=u@z`40#C zLx;HAIV0C|(^Z4!anP5QnAE_X!N4dRJ))0oaoOq`R>iS{cViokgX$9~O*KINos6c6 z-7)@TJa*v4_`xt4&UR|WMJBPo$33)7&(?uVhDmRSsYLZXbIT zD#Q-hqG2)4W$TPlR<#+2%HY%YfF45cS0~5ad!S+}{wE!$pVdN}gs&RrB+phlB{_+} zmX(4_rNMb$KyOV3VuN=CNi|tE%8EDK6J=kczMoj(5NS+GibTkoD##@(? zatV;DEc1ij`a%VFj;%Zm{qS%Dx_bVlD;FNLXq?v*{5d4;in~J2{3Q?NDk?w0Cpf)UL!NHB&NJJE zWEuyOavhaA9^h5U0mm03r+CEK;jW<0U5Vp^oBTEl;oa9CuKa2lz~v4aNLx1xmsNc@ zO28SVSuOVeM*en@IU41>*e%8RJq~EuO|`v)y~OTNdKX%nU}gJaGii{@7k12CTSqGf zfC!{}jIOO&Q&AiYxjS%d4f*$B^c@PBdC2m;SxC1>0aKK>)|eza_Y9Ps$Mt= z2PLgLOYkj!C5>ZGwN>M#RcZlNZdLC^5MWD9?+6-)J(D+*s+Scc?9)?!c+jbV*wV@V z65h_Y(Cav7IjO>(8I#=)_%f`;LJ+P4>XbjevddZk%R?);E6_)zV+IhWu9o3ZJ2v4 zAFVoySL~BHI@Bi(*42cwJ=FJwwwF!V-%i(~#)LE5dx83*+A&r3BiB*nIgbuj(+ z_x(quM@;;ico2Cmfnr|}5qLXBTE@Bk#c(gsXX%i+4w?Rshn(vSeC(>6QN+#=nMIwF zlS~5D;zY4gq_^lPWK=|*t^0Mxl4qp!d8F+<@rB|*5|OSzS55eo9G=2hUjKY z29&tuMZkB?+31smk@A*npkT5}dFe?Vm21__`9T_;CUtGEfIGYzk<&QdJXobwugeY_ zG@+0&|{BO^1Jqci=VPD-ya8|*%oTp{{~jkyjUn}eU)r?gt3UEbp3xV zIa(x0Tp8 zp-!~vlUPwo9esoX(_#DvfG_e|MrEU{qm0_UQm`&h`pgg(cpL`eb2~2y(nm#9!US)- zh@Z;@K8Xf{pl4-_czM>hT@}%I$F|<+7zF=aPEuR$mdC=82Y`sg@{xKENcZJa4jMyk zj$m$q(8E_qr}0!j ztzTcnWJP;2oWoNY+C6vJsr$14{0g(i|IbxEmf2CX)=GcW$-Ll7WG<7hY?5`<+}srY zs*X91IehGo>|;hbAHo;@WC=!$lz=TJCKTlpB~*KbJxqjqvVwSu6j?8C4xBvvTGLsI zHQGo0bU}E4^!y8~2OXXqaP9f$_WOQ0>@WzviV%*v72Z?Ty(LeuHpG7A$n z4|Uj0JLEQuL}Lm|9vXMUQ>V&8p50QtILvQ?5eSU`TpuY`jqIY~(2&#nS$!^fW158k z0Cy>={L&w4Pq1k+yeJzEe&Yzd2p1*I7bB2N2lXQ3<0O>WPdl){a#9O`Ehm9as2jU^ z1Hh=rwmLy*oD7afU^k_v_>kwG#a6n-FP|lWZrRlYW?Y6dUsu4db+s)7gnYTx1}ivT zO0-RgI~A4-eq9!|6d_6S4&$L@2Sc+D?%yB&_`5Ai`_UdMOynX;kbjj+u7p5g0hG)m zvc*Ymzp{I&kNxY7w3_vCb;X-ARVg)&ZoJEaBak=s3kx>M$LY>q)(mFIS3w^IOj1BE zV-~u*?Pana5MCvHhS%C zjgbk>QQ_w)51StshK9OGu1lvhxuSV76}4IpOf7>*P)*3=M1w(MHG@BOo9B#YSXSAJ z^cf2fP17kGzLMm`f#-j)w@e1guS58s2`?rWTkVasa6E`ZxKu1y0U?J2bVGSPMK$#$ zO1~nm;S<0>1(V17JvzhV1tZ4U?C{TW_~iuy7p<^0r$;0n{LF9`?@4Y(rH8eh`KO5=N}xBJ6?h>OvCE13?@HI_v7N=a;36#(fI)4544=bFP?+I z)|i!E$DcUm4N>e2NjrQwzEX%k&P6JB>iCEIpni{Wy&be=q}EiYi(fR-prv1}Zd<1p z?CANtc_p7hy~7N)i+FwU|NEFes}Ek2KhYUQAn+hOiM(8%I6(|T*&k;|y7ZX8<8-5$5(m)|c9KMLhm6~}UyqctCUO^g0yts+ zN=zsfO;iN*QKVT3z+E=)v?CF})G~^bfNI=o*Dt@h$c6~-nZbf;M41jc=W%^LZ zFNB=qwQEaWK7z6fqw7CMtw>1*nfMLg;+TnQG`BMf%an3UG5e#qI$DIgbqg?Ecp|oJ z>OGsrD5C}~YLB%Z6wD16xe7aU2l&ffDhl~CrFcjqv?fp)@)34(O8pBPtC$l8UiZRi z)_K^wz1Y*@wU{tMU}?LejZ?JJBOsw`IUs!BjBMowG-nLbC}u4jH#IuN1M4iUJfO?cu6}$q*h)*CBXv zk7wbCZL`JGEOMg_ip31tB}h~#>it)-O`}*`&ucrSJT(|`_JTm|i7`^GMM8kNJzoOS zj!lUhS?aQ~MP0l%~X0_N5XV5cq0Vt>Ca66P&@V+q1FW zfbIX-CM^(!&w;NHdiGov&6SE=US@811K{0qz~~_Nhib>u@bBDQ*>S^Dk!h{mKD<6E z+b&8=oX8jfh>hxVdazZZ*S(o^%GMfMpo?#i@`Vj$JE@-4$!5$G?2Hz|l@qJ2u6?>J zC%0)HP&ur?zI(uHWPN$xK4N+`@^rbEQfds|&&P2=#ifj!2^K$)O^9{mjzM=EUWg1_|Z&4W?J6{_$-QdC7VWY#<0%3S=-QsvYA$6LM6pGCO@!BU~20~wpVV($KGrGQiR9tiY+h4-zzm$s{O4ui=D9?EJ7>?eZd!_M#i?zaMCaike z#*EZv6a8_a;ex303>gzDE;ws z`rRoB0#VuIa64IVGV*Sw+NF-6Cr{56)*Fl3K1Gc+%MecYPd6#v2BQp9c!6pCC4tXlUF?0S*?Qxflke?a5N`G8d<3-*b?PLh;2=qBCmQ9fB`jZp9xaFV2Mwo zyB#DoW2Z77P4oy4jwF25m~-HK?>bRujBsIIZFq_{BkC2?2R55AO1O}13lC-EA?(M4 zOp&4Bj=(5?scUZ`7j}QAZtd5Fy&NWu!Lu7nADP5Yu*sGTe%8KFgQK96YbdLLu%Y{h zdIvuVIv`*XGgh#;e769}&|ycNj}+8bHMCM|n<0W$0f7~!UwmIUG{q+{Gh*JD!GBCa zL4voR_dDj(26q{>@CXwoCpn4gJ2ASWsWObH1oYEcvJe$VL*S@HJZ0Aa=?8+bdDE`^ znXK*giO#{u-QLs~T`lDVA0gu31cif}(ox{tgGr$c=Ri+>+#$C3DGybMH$`uh-0WLO zJ>Q0C@i2n)hdOK`DfZz(UNs_}#XY*x(SY|wNIJgeltdu77VeKoLtZ|#S~VEd+B-x| zxfQOqlN^SuRS6W3oQ!yJKW-V+wyd(Y;Odt!X=Nv2IYT0za=@Y3?TBk;9~nK-X>!7A zR63m{$eoE2;weO>$^{r+=l5b?$^#~VIukvs+EBiYfZU3C|G?D z`?{o7zreRy2;j%=v?I=D_Jaw+Q5WZ zB@A=$qCK=vXaglxag^+3HNlBnxRXWj7_6_wJ4El3tBHPFLjvV5{E^Q`eN-CG9S3&W zqW61i>Q>PR`iv3Yqz*jc| zUQnkXZB(ZIkC(9DP+VXbzT_0uvjg-|-p0e!Jj#Utv8NG8g&Z9I(foRI5-=EquB%rR zUb&VnJdl9!NbR5(AdB}5(`Br$V{QX}8n^;1lxxcVK?S^5`WR+yHzau3p$~c+S6;A7 z$~SV<kBb=NgM6_BXk31PN2hXE>Vz3qGR=3v>WI@0?=G<9`H>y80BThOIi9Yy$9SdTm zU>X^EpiLbddJoL`H-pU;2z#m&jllc}v374?1W)abZLB6iWAli;*V(|?4%x_SMNBY_uoQBveHK|vfHgco`_aUc(E1_PJJZYi_BAY=!j+EW5n1>GF9xmdHyMTl#W?nE zS>sRzIi?+T6=R)!>@Z=*agB31zZ9(U-D!ehUxIdic}JyRE0)B!dg*lO@{9W_!5`Lz zxeAT~hK7RAX>(1q%}~zY4Glt5w0E%Ck(38oY!?S30HKJl+=RQi=7ghb=&h!*p}w&V_XP%WKNW1|8`vmP7cV^o)?(d?0z#|f&n&3yZ5O#{JAtaebnDh!d6GI2xhW|L`w*S6TQp0X28*XZCl z4OdUb;UFh>tjvSUe4L{om_k%9oZlAqAiD_AaA+8kpLS4cQYW-j>l^a zeTw^5dIQV*^(sE$Z1a`)XaZIS%*ur^=HdsAdH2$I-O0AyA;TXZ@IzEFyx^cidELqR zcox@_KSOb8rn0$4y8ErxF+;p3f*xBbdy_&}RpNE8wZZN#PqQgLQThD~XE>xfqFZNR zKv$p^*DKUp>B5y_{eso2cWocTd}ig|=kZeZAiIMNvT{!OmZZ4KR${lq?BMKgchInDImwKUbD&J*Vw!j?lqlPV!i0-AIpksWf4-p zoF46e`+$)fZ(X;r<{#{&jHAhe`7w9nZez~TE37u3WXZ04kYjrWxSaSso&cP!cUd}t zt99*Uzzo$(oKPgbzd!ll$9pA<3)J9>tWvLt7oXk28u3;O!+EpUU|VS8l4yxxuK_EYAvo??goC+Vt^aeZa*0EOE@8g~+0 zv4?n1xvZj7cV;z=$BN6*LLA=2&BU~g0%b#lpXoO|4IH2nBIG`si1HA}rxaXR`d^X@ z?+3<7TZL$#xAnqzsi(qoq7%T3;&vgKRTmf&rH8D8$Sg@qfBMF(xUXMC4lTGAQpW0m z-p>SV&;eZ6=i9qFIci|1D@Y<67?*B*yDpPl#$q8!QQZ<##mWYD(SgGgk(w+HeKd5{ z7`V6MCUn$M-}SuP@DLLrq$h_LVJPjbl**fXJ63$ph*gWC79kG|%t*8q#}KzPV|4jQ zMMowienG&;Gh;>=vE?E>0~q4>-m${ZWNxeM@GbC?5tQ)2smR#c=V*^X6ki%zV?e5B zo)hpFVePM`jkTtlE%G%Z1{|u63-;^kLwEPC7?I4#Jb){ZxS&qzq1s<8Z!1++_IDAb z6h5YmNhBYCqv;g501&jCG&v;-sOg-lH7t~u*v$M11OMk82;0zCLfSoeO+Y1;FZ4rM;}Etq#L zt-N>oPCWjfzd~r4sqfy&dWQz^8-mC`SSqGS`!ZpOW{(4ttm<|%&f9YePG`&8Yi#ua zDw2Nlpi`=O21b&frV$JwqyCFJ#TpdM6X_)Q+S@6fy0oPZnc$UNDFc1=^+;QB`Sbm3KVl-Y zLHD1xfn>edRuVV_tO!J4qZcLE%UtR*%#JAKo9%t(+KG15S?{_Pf@kSkAzC6XSNMY- zQZ#@2!0FDNn5vqib_DTKh-AuaFE0~hQM8Ea5ba~noZ5b~KKq78LUQcnXk*-t8AgLt z@5*ttUbsWV@meogo&L*aC$hrfx-BcFU*q+yT#8aA2Wy=qTJ*Ty-DnQ@|4^N%)sYRCq>)sF?pN}M@>uGC;D zgR_ynz&l2Nbin%Zp;g$5u4?hQS2qWcAA2>BPbWA3(v$VkOZ}jtP5t|K_J}>@8X~@$ z#chTEMrX<7X1jCDUrpe6RFu|9f2M$KPV!M7J(J2Kd-(OHKJDuyV>$R;`k@WfSxyj?E()Wl>U`rqN&=bR6@>-+q`AuH8_+B+YcI zzT>921F1AB0$DTJAU|&mB?lmrf=vU>#IRxQBL(!4dgPu(>QJO?Sf5ShtiI_iC$mGE zkqLfRwFV>l+&383&e@WJ833DLTTjgK^u9du)lkEBJy2Bu_&%S&fOY3nSp-r+uoeYN zrvz@nd%oR{R=`Q-EEiqtH*Br#R53afhKo><&mnL{Rr=MD`OjAx-0%&z1f|d({*{8nCt`{sujpoX5Sgy6<@>;KtqFF?{0Y?=M6I)Cl7M@4UrpCQxfLaj( z&Hn1eryoqF(~0pIF=;flo4o{wLg-x|Kf(QK5jJ7VZT%YLwW+WoF;ZOf3s$N8O%^+z zd7I?b*dqKCbbF9?oq*t2PbpVb{k}oSia)X+Tu3@=79#!?6^Xs>k#r@jrf4%ZZ58?X zX)gN?7OL_GjV~xDpT=Pl&m}{zOZ7#~qKDIODBIe5&==%bdsp(6DxMh^rhj>2%-xq= z%U^o?1yyuO2yjWZ%X?W!aE(cwPRGe9VlD?=W<|HpBEX>!r>~b>=`0x&stO?Xxpf7B z-2Wf>T?(!ELRl%5n8hvpxh$_%~Kc^(&6R&BmatoOirMKks8k*f_PAXo&o9DA%x(YB>W6a_ENa zA%*EPgXpP<`4^i42St`4=C}FtNGD6p4(gWSjp*ILIx2W!XX38YJ2D%6VpB zC~=Mnf&A8F)LDPMt0YFcd8!b^*Wtfi95{a9#dH_&P7<09B^HTv*Yc3fGOGiSfy zq-*oN>jlfVopbn2U$iySm*z`XY^h%CC9beKu8(aKFMOxq>18K{MIjOl0K?xL6BJr*gi1?Rn-jS%5 z1g z?I;Gjl=*9ED`-C-D#TKp&-@{q4r*vl7+@Bh;<6gRCjgZh-$KEAj|UAj&5##aP6U>! zA|b#ja@&X<6CODiT%*w68~2@8D-U(iu@}RAa!w}gqYC!vFs!GVc#kjh*7Z3fk>p_4 zw%THPm!F({0e`qRS-+|#y!N20cGLfugATIz%b)yiPIXL zuGoW#jd>P3@LQ6uP=fz7Ui&Ynyk2zeJV#Ydw8d%gtn(4u z$MLr1CFG+hFX;%+TB(~EG1)2j4RzF=i9@Incog0dl5o$((Yuj{+tUZf1^qn>th4z0 z3PG~cJ6KxevN^YUw8LblD<|wHvTDa9W_cfK%{R2&@y5f-jC_f|Uj_^PI+|y>UH4IJ zd&J`I(ow=PGPgx|B@C7pVzOwv_{7o+KVx+tnj8W?QWGGWh5%W3T$2q6XO|rqUF7ba z$Il$ltLvf$Q@5>6alV=o=3}SFZh#n}8qxWaAB0~g&8^YYNogs$9?t&4oURpG;H#w< z&KWbVdCRxEVS(NVn5VZ3jJ@%c)NqEKYaSk6=+x1m?pD)S?XnW))3V>zG?1=+?Dz&V z)V<;hFz8FIafOfw+M!d_tdfwWpN=l%a)TYiY2ISWRI-jFEjxXwI_Z_gHUe@-Oa1({ zBNW}xXD(ah2^gHSf6M!3N`2a4nNWz#bvH{88h}X&&UKf7i|Y>EpZP?i*D|vksy%ru zV)uSu=*?Tggca=9(l+K;kib??YE1#h*FH~ehDqAN!)%xAk>UlRy|huEG|~whZ$~9< zfmX|wSB(j!=B`;gI7?@G3wS+<9jt?S*~9jIMb+?49NJGBT+U8iU3ZNqZ=**wtDfvF zdq`P}e%RPoXMAC|&!DB#*VqS^}6) z&saz}*!oOjP^LHgESLxwpG4|tCq`ZQCgi0H!UUbTDe1%0N1q2kNvwFx>SOTH<^9_x zm3547ychyp-S+e{sE~&fOTz3Nvr_1OdHI2*7$GILA+yu|JP>vfSbx0-X_NhG!hGvL zzBFW|*@@C$M|Jy774l&Q_s9NWZjR@LxoC9uyp-X9q6FbnC2Tq7YMJIx0^9sK<$R_i z96zfECQ3y1IBP9=kweZyb0Rpl{k_3;Y@XiX;TBRkHE#I=bH3Fz7=}I9@FK4|9uxW| zn(nuGzT-MgyYz1$X^uq`Y$s;jqB{5GrT_VFbi`IHt=L!fpcgK`@>_$%Yw)B_HaSSN zT~MJ=Sscj|l(3@^z2Kw@=__Us0NJO_qKLss=44(jv99m*S>nu_Z@-%iF|7@Z2xw@H z_aO6JUew4$oS&3yk}#%5-@d~FYtX0y9Li>1r`L?uIeXTNBbC>;0uyT7?m&sT*gdZl z`b?YQUDo^*{>Q-q9p{<`6Ufkz6t+~*?;xKuHMmFU@9}--E9i?WSkSYm zazoo$ba|fakd%g%VS0@A6Mo82{I{31yZ?macr( z5KcA9%Iaq;AJ58HA{sQ>Vm!){T;-zoI;Phcn_8UiJT*;i=a}zHk%dc&H$;k} ziCoyZqYC9aN%DHAXdlfnbc&xL0_~ap6|=P&4gymb96}`EqvuG}6sBbz;p>wpkE2=V z*z|CtM|Fw<{r482dI?q#;|OM;>l+m?PQG@9ket|Z7rTVAcvk9?3C&IVOHFBS!&@+k#yjFC&0EVH;Li1q=)9)@$&;CTwKPn?4!cHIsGUpk-W>pDR-Jsk5)SiO^RvEYuZjffnxPE8*W&y6|S8+$Lq6 zO4o5^WY`r%{*MQ`2O2AX5ZP~T5FN(9$^QJ0a9ZTu)= zEAmm{1MCp{7{TUT!hjCABq?ErbL;)68Ex8Jr2-0Ctnz0AOA~%?5aKnK0%qwN5S+`F z$k!T~=n!*Jtc!ozSc5XhseQ2kx-(AV`#@v0DhI@Z2gk%*iaPv1)`v@%WV>Q_o)p%` z0r`|>J{m2x?=mM}PR6R`YgUiIs#`C|Feg`n5u>{Sz5I(ul7*@sLqfXeMps?ImFmM2 z%us>@6N;hzJoOvz@0H0rk$0qv7^xO_$MjCJ&!gE0B+LAq?ICH70z3bKLs2o8(~t1g zC^qcw$xi5ETG;KnWLYh$7An#*y&)w0b>)EHP#h2ApSHm`d}{QPd(HP}&}u`^ z0)2sG5c>9cYls28ExD&=cJ~ zvWTIrFZ`9%3{bVr&ufpb2^Q`UmDHI7M}>jj-;2ait(y$(eOcuyCwzhT?yK*8Ti96P z-$ed2+iA32<(vMSKu7i?bMaT*%+A;R#!&PaS{&MGAWma!Q*FFYWDpRC(17uZHII7X za&slPV#;%zR6jsP>mvsNRnG=7s+pI|QJG)qhB8Xit|eb~BOOH*R>qUc0&1S4eCPh( z=T@-cdqefYK9*esGY#_MHfNrZQXd}7>u~J1-MvNbqG0Xr7IJYmf*?6Te8jN4E=hOy zHJb$g0Ha{QxnmyM$mA&l%FKrm08b6&lGIXaAfwL&d`oedmIuVSfe&kF<1~`Z+G?{B z=&Ea_vY2vz;8}A3H58Zr zRS5D5h&aED0sIB{i)G~D;r?PgF)$M0A`*iq;1`QiM2cQyQQ1ORVLD|siQpuydrlIb zAuhvy@PhmtmK%h+y|nH2Y%Ml%CAY=RK})l#2U90Cfc>|2Hz7f3AuO|H zjG$%fBJmq8!M)OThx8*fSI#vBQg!naqqG)=tCYVjGyQ5+FEIq74Je;m78Ri#Hhth# z0Y=0zM-_zA=qE@%>dGvrQ18o_mNKkq*X%>F|3Q;3i7Qb>yc8}Ils_TS!NT4&1ehs-kGFS zoJW$U>GfYbE9!ckP1B8tnRK_1yP($R<-}@GqlF7e@zM5!EADJ@;U8cA65$V7Z(-60 z#4uQB<4Cg8-t}3hxZ;F5LI2jl1qG6yk-NSPAAN=6eXGrAlYp_G+*$F3+rC5~$T@6h zE4_VghtDr= zpY)WQ+}r>{L}geqSH3p^Nc?&46^FbHSCOGS`5HSBLqRLt-9cRfe3kyv2@SY#vQ13K zA4;>I1>hU?8pJ1aC4LCTD9boYR!$*9i*epCY_OFJK%l>ht{4X)lkJ6VgSmgJ{}CE0qY|Fs#FboliL>89d; zOUJB2+xl;uH@+<#(ZDyc2TldFWt7ot0E?796%k*pWY>7R2_05eo_ODgI8WKIvIXby z!&!0?A8mCMXCb0qK5$ao4c}2aJmbEnH^3N$FH)y!dB6^W7Oi&Pv9 zv|_wP1idx7=BoCLCUB`o7f2?n8bsoqw8pU11fn$-jX9msWsP8si%TU^+LEf#Sh)k@ zOZ=x;Sm?8*J3?f>O>*tQn^Q}km~O5a%Egh7aO?Q;--CihhcAZtRen)PRM%^DHGq)8 zH%5QN*>_*ZrW8x(vuBM|D6Rk72NP`-D)~?gmy_?wIz+d5lG5`VNCN9w9S&1)lngBa zc?oMpH!=ur0re|3d`-p~|l*beB#h^05Mf;Sv>E0fLznobh1{ zXJh+#n!Z?~C=qB-321o}1g^UeN}%+S`^%@SPRQ7@ll*Gpdis85wynUh_rHG>Y;|L0;p)e zGf<-|d=9pHMw?^tI?l|3q%QpxL0%Tdkf+|WC@;XuJa0l~IFv0eJhw+tK>FlWu}&&_ zQ2$__uw&4;#^0!YX}=;YR*o%clHLsjNsS|2F$y>ivdhx^ec62GKj)!I9eLqY9Y-gD z1T#tR`?oU+$&eB_j7vvf_*?j*k2Cg*N^P4t`raxNRkyjn(wR7%HvQ=wq{EIArvz`T zgkOf(~jRDOaXm9{bApq5s5Dh*HS=RYqcVtVD8dc%u7J3 zAkDj!uNIIY)A^tOS)Hyj|F5xplP5q0vhft0qJ%97o>d4h$qLVer+9xTFPESIYQLQ% z=z`j%9PRlt?c%WhjML?5V<5=1Qlj7n(Vy90^f+ca`oh2DSNxd3m%@>lNHy@{v#Ra+ zeH;*Qs@puDDJPF<93w*XGt3l8u&miy$xc};K_wHuf138#iBzjXY#2)|_8RQndnx{j zD&vO@wCNRX;iGVa_4n+ZQnQ&JMwR@ThQ(F`V^+~?w(@DVVxY|<&K}6WV*mFXk8a%_ zUz2GkN^rpQ|MO-?rB#?O&!xS&@Ih)U0$h?^Lim_9+5Y$C+BUEGqttl;!yiAxw4*i{p|jKFobO} zf#stD+8W(4Sh1dvrpdx2Ipq>0k?D&~uZ$bd>Pyd>P zY0!&*Oq^0Pj(&i!v9b68m$gPI2zgxv2|03&UhgiHtPS`qG)@?6X^nYxrS zn`Mi;HbJVVDn~bN&My-<-y3DhT5dXA@igYTW07EMAZ}Jy1>v9JJCaC9omvas;gh|-Bn(9 z{-ScdSfu@;g8^`9bFNExLaj_oYn_NdCXBLrrFOnfQne$3#j326*ZIwt^115NR1>P_1`$K7SvT613IP(7b2$N8^kLbu{B7{e zgOu9)=T}=#Rz2{F`0P_2tG|6>EXm>N_LO0r>JNCwozJArzJ`Bcm8;n6b5~<=Q zPcGY!@^TR5z?lw!j{7Z*t!a zUbJ1_is7Vn!_pI!#{bf*WVOn_Mi|P5ohn7wN-8!;&TgmIQ4^bxCgdPVNg)#^qE2&; zzJ?J9r_@3myB=7oVLNHm>{#@(PNC~KM(B$f?;z}mF0Vn$v9nKE@__oShsoNzD97U; zz`b_Mu3E6Kgt1O_QQxi8pt4EE*?5^>?`d>D1u3<2{Cx74K1cZVn`e^1>{9`-K^tD6$px?W|D z!sI%B-LJO?0EVo%&?@+<&!`}mX&C?oys%ZepMQcMZ%EkVaXn`g6{Vx4QTd;N_|=g)S}Ms7cg9;zPW--(^&0G7MY829@^c z?XD+;=~b(Qgyi8pa%@xl%o;JqFxz7v8sNyy30IP668GXIZT%EWTB(R>lY(#ia`1o( z9J|$vDa9d&c9$|0Arsr7H`;`zMKD>$)nyG4QEj6NQ%wOYdlaSVQ^kzX0NOyuL|w4J zln_0oyxUtZVmfxM$(`zRYy>amT9XF8+yHRV{l1E?v-KoOK4Qf>Ql<>_uc)|LR2!~& zlUO)RK9W7w1b9|C1^$Y0!lidzGEc4KhA0CCVl3zEnGC@-0yvJQf1<&JFXBeWUPf0L zz;?Q}BiMx0YP8nB5g;mX9groIwQlGAvY!vD8ynKDQ_xL7GZyHcZ;||h#xhhea7B3W z2BS`tgI`rR4gc(^y#}Y(b~r{snp!;D&&yWy!>`TJsjt0&c|GO))u^;Em@{p?k8e-EkX`9&M0*sF@Q}IvTO5olh zC76|BS4G7X_8Oyi?HH0X5KFJD@MB|7c0iz6^nWsADVDle>*0BZfv`u|OXt=+ z@!zn)ejA@}@9iX{zhN&U0_n7u`RbH~5?;(JG=&@jPbye2dvXX(B=ADbz-^#BaB@zZ zN?o3?And7g=hM~`pfMn?U)Eq{vHv@h=+WqKA^YDfr7Z?0f+hv>dEHeB&b?c^p)L#JVPtaT6jgH120MjfP)Z!{Cds)S>Uy z1u{DeY2?gU$HXEP#tVcA)&)QkrtQ;#qJU#(BllXXJ37n~0`DoGjfM!2Kay^Od~0e< za?5dF7Co21_yE&D{@(jG%>12-Rr5eG{_RB4wkWua;{C#Gd%BQMLx6ZokW`oRi^YBS zbX$g!$45t{YhBX~ulWT*T$)zGIMs@x_H*Y#lim~qM$XF0hE2|MIh?XZ1uh;f}a#X5ZlbahzaJ8i~Igdr|qiVBPo2BjDw~Y@nM(sw017 zhf>o25Ga9!Ebz(;s{m6ME-}Qozy)h1d;CS~hWKc!0Fh~55g~yEcc$ZoVKrKV_HNF2 z3U0&@gqH6ebgsg!no9{h*-*_q_@B6~l)v(3YenYOfm4luZHx>4Od}=71DliF!&^nU zIexCcV0^$G7C%}`E$V3ZV}+%nrCu6!NRY4&CDhJpee7GyZ5tSasYo|^cX(O{^uOah zAJjmvjU`-)1y&7m;pvp62RyqQz|Rk8&b|XCG2!0qwugFhSq>4fX~PdPLQeH6S;tN- z3TIPB_NpL%o@+{1i3ic>o3>u4a)y5RV(c+JTiCezqT6we2capFsg zbA@~w-YII;(tC+ zw%)VVH(fSmu>NV?X*Ay>M0jLbjQ7kaVB_7z=F2)fVk9Iavc?HG|#H z;bawiHoQwet$*6q{pgY!LgQ)m7}t2l;GR80cZ!>oeDp6yLyO>%9VOs}CeSqdI(8@rC?iFUUD;q6#uj*yj40<1OT15U4m0%mDUi_!W5p*#DQ(E=Y zgKzUuqr#7$qX_Ey-VW=%YXPds!|Qn5`HSiVuWo2(dM10!dqq+vI!F7q&j5qcx_TiLT@a zlJE=B@5j^Tm3y$u*?=uP%-K>uDl>u^x}MS&l4yuGW{Xov+JtlHiem(tzV~GqTqm{_ z<&Wo$$+YJ|%4#$e>j$7K?MwybhhFgz{P2LFmY-EvTlnJM--72v$45Zu-tACIoo8}3 z=z`)$lnR+-!k&s^5yJf zfGNFF%Ms2j>{6w}rb5y6$YI~DFPWVjtS_`tCAkA`_SY7AqDwq!X6y4YOdHFN>3g8n z7A=Qz@Q#4CLK3!w;Dl-enCLL`G@VVo*RQ~=3djN75{F8-79j!}ux>GbY2Es;<$W-H zcLg{|(DQ??;5E*`Eg!MYn`LTVtOay`d7G zxdv+(9-dwoR3WAFqMxp2W?|)XdD&b&n4yG|X_qqF?2if~pzUV5fmUPI6AX-F9+}~2 zIP%vRdOXHE8hC{$#st1Y@)CZ?t0seef4Iatnk$`$<9DL_=P85pTuA?d7PXc7d|7gO zBQ7Zpv9Q;MNl0;Rr=%Q*XMscyKhBkSiK*3LpY8l>z#rOUHDhrpCX?}j*vR8FDc7u9 zkJO@2gE2IxV^W|VA;(7};&Vu5>h2{(43^B)`#@3ABoOU!~#I)x3 zwKpL{@OJ=%=AFhbG_p!2Oq3n+49w-fi;)5>7v!%x9)+YX70pjb1a<#MJ4Mx0T$Mvm z&F)$<^eK;MLR$7Od&`j_xWy)J*+$1&ORTY(HMEgh3>X+Q{bZFhl?$$@U;GJ|xTFHA zAUa5>VYzsjc{X~hkQhQlEfm0|zIk%><&C&r5TIbw*hB8+E_&TTC$0*(82;}1eFBV4 z+${8-I)Go`X&C>98YzeR5)u0Y9Zz0QefcZFW%cPzr zRR3mRQztrTmGVPcTitwGcRS!IUfzEr!7%dNv*GRRwN?=FxqRM&HB=5QWZl^IXiIPr z4}M500~iR(PQF}`a69kMko-D<9q#f&+opQ0o2rDrxK_jCCl;5ieJffC&^mxcb>kPHx6+&iYP|B%h#FXt%3R8DP&PF{%5VdNdKJ)=?P!>G;$+ z2VeG_PYo@TiE4TQXtZs=66R@8a^%XdkJc2O7%2%g;~rattwad%7kT-KE4v+9rqq_|%ptIzBO2{c=?;(aV7_-KGS_9YQ*}t;`hk8E1Fdtg z#mJP%SQqQb`ONU97M6!pPSZ3Kn`a(nUx)8fnF6+ioS=tjyQSKT}{u|d7PdFlOhYRbxJ|;k6t5s2bn{juu-H+s7R(|%w?1Bep z%4W`Dm8#>(RiS&GS(e>llyw0IzL}W9K>IMCk2q02HDHj(Y)r3EntoD{g`ZmPJe+sf zIV98;5YRAi6rTO>9ZDeEA=6!-ADZnJ3P|9g-JT>wwT&Mr?8ivvq>hmQ(4AN>)Y=yw zdwX^mh_4c%dN1-Au?ka4?TI{3&G+f-VFK0Zyeekg(EjBiHLTv_yb~gDU^ab1I1mgZjqwb7!o&V0J^@fa1 zK!)7z{%<-Ku#5jZ^H&WK6zA!deVqt1dy!2Fbnx1Y@tzs27o|cC+qq9+Sub;TL8^zJ zYPW~SFBn9)VBJ@VONZfR3Cdf^>$&(L;$c`2lOA(5XqVUlI}ORC(TAKdR4O~rQlCId zA}{o`-pC6$ofA`51eWb9o>BE3<-Mr|vdJ=TFff}QiZiDBaX1TL*|{SbNFBvBV`z|u zb4J1MpD2bKn~rQ4OP4{^F=^w}38J=yfLp3`%LKNQj}G6K1)>K1X{P^4Fs3=9UiHbz zgFUyp&MB*9c@d+`XwT%3_=Ry?@0-jgc`iW{03^#RS3Zf-9v`sw#YF0)D5H8!@d5;u zS&miY*KfBKVjAGml+GX?(3!Q=`fzcx^f3L*pfvm_r`sfSofF=JW2nphTZ)4hMp+t^ zJ0&?aOosPGB%0#qCCPM+VB$y$LL2Apk`>MviUCmcXg0++n*epdI3M#rZ%M{z#Oq=u zdv@(TILHaul>eBe#J0O1Xsp(C{Ra2hd~tvRl!y#lU#n(Nx|L8{(>Ica|9^5Z5hdeJcU(&>n@ zcR-U9e~}H6(lQ@}!~DH*da_pUb(rmzq5_2?UkET1s0u3~mG;1eFN~>(e3CqRiR8vu zRFZn=E9e_;*0XVP6+LvLB|fJEDK8)EcXWoA7yMDAFurdeMzin2RaQf``pb$Y^yLs; zCef({XF6D+roMR=MjtonyV_U%3yrH32#$dIt18G+H601}_LsmLl3~02uskUM_)a08 zVb<_Sz2~4O=aIXEAUv%06X0=j);QK!;S+uJ6vUr-)LB={zifiLsFeXJecuFI#>I=J zo31(-?TADlODXh*OQvN7RX5OAq3{oa#nC~G%cq9ZR!0T{j#?7~Fn>)$SELvwNJc%D%QJ6VUI z>D%LGrG?g7lw|tD9ou`MxX(Z*Z)e&xgK|-EE5;$&4tO-*rWphx%N_)IU<_0xa>br+{aX!@xWe9j?%dDIjHG}Frj3uN|cw=xCV$T z>L1`l^3Pzw3?^5DCK8pWs9gi=)u;pH@GLCegeEE3=pdcSE}koTI1;x`vzKrrS{0*D z22<71z2WoiUn6WpPlsvm?pks$X6Sc>_~b8jF+ILtWsdpRFPWdPVVOwVKS>7|PC7mB zbN_7awrb;lEuajJ2G8eP1IZ%=X88H`ls~s#R^g8jCV$+?uZ?*Apq1{qQS5xE=UKEe zxvLFE4%|;sS!|cDMT7{R?^usskn1~3Y$37o)6e{Hc_?=OiL9YxN1&dt7}}sv*lD=c zc`iT{ChUa31(X!3y9nz3#mLl}uVszRkX)9~iq2J(a9{Lq_^Ai zvM;U)t5R=#aWS6|3?9EpfRBeXE`A68JOxkbx<^Ps%gH$#?SiK%|4I6#P( z1W#+D#-CBNM4qU#-pue5DKi;Ti-<#{YyU~)Irf@3RNcDo`2eTzC6C&V>*fM|RA3!*7Z z6bGLF7NYkAYz_SyBd85m=)5>ZPwe-d+dMvC2kowyWR=^1EGhz z6Ov^^I1Cl`99f3`E9Za1tm_sEs_f+Ydk{Q`M)lXQ{#*J!(Hg|B z-(7Er{kY-yQ3vwJtPy1fnsyZq8x>@}o~M?4bTv8pZSz6{7xlri3nYGLQZ~hvrJuZ` z(KpP~*CYY99c}_=dqrIHH<@%sRby%rnt0_ejn)qKiZPY#%l{-k%2W5IXMOgJJT`qIhxg_>ZHS%dc&+KlXl#1%G!UY{hISs{y2X2A|?(f~cH8BLx z^-u0t=D4IBXv4S#$}mg05!Ou%Gm3}oo1Cihcd=z4pLBtd-U>^l+W-CQ7ofFm=MQPD zi#kJ8BipH+BK&O5FygSL`JYC}4-J7@pI?mhfK|~k{ApH4x{F)woM(Z8<<_yN_|VRZA(q zGG6k?F>%Ty<>SV5M<#n(y5E7zp2ttq-jeN$w>5L>eFb67v*mFcD<1<&F0Kg@dZ2lv z594}L>tBHkJUA+l?-x$$(Y~Gb6K{~co&Nh!=pD*_m$)vFiTHCkIDo_@g<#p~!HXbC z-`tSIFh|tDp1VdS4exId5Dw)VSr|e|hh zM^Imd$&h$+O_yPV3siiMR9ZW~0pCaEvcIR@elE9aWabsXX=AxQTd4?xG{q|jn`hM_ zcF^f5!19r!*!k++z!s5T{xU|J-Oy!SM+7!{wN!JAW`-6oQS8;W;+f|`Knlk}hojJG zz;pT*^lBj^4nB<-B<=37!N#QE%O_m(a^GAcj{2y<3`nw7gBr`~bS?0wZ?4F>Zlg7v zqo|pe5d4^jGl^*AWQB2dTR=5jJSyn^ML7caj}@Fal}G7&UC<7CpxWf(fwH^H-6?g0 zi^6IM_ZA913TJ%4uth5nosjw!taev3m^QxFu-4^7U^Vq1p@(E=B))Qob3uFc2x{r0 z`akK*q!w;3-@44ZTRe9A0E1<0^C+$zA@=NYt&GxnlEABXK_<{eb^^6CXC-%hj4dTQ zQ9ScJd;&aCMfhd}IY8tQf|$3U$8teWuKbao@13sZ}nsLzDfdOoZ#b-e}@0>@aD0J}s^Gv=)PNrhV}eY4+NU)Xsj=L2~{N z^TWcZqRMTA@F+Mk&$wPs_iQ=FO00(`xfO`A2gzG6R4$;L~Hw1)G z=0cm1znJmG)?+yOdIeS8peaC9P>@n+O&oV5*M5!|6kar>it*y6hC`iutvBcU+J(w` zJ2s>72z#iz<(sGvH{1yd1SRYbtI&RNYTFs%61X`GUZsVs2jzN;rorGV+j}9PX6g-|zZ0=QQ7cXV;vSlZSPS5CZOm(MY?`>$$zapX` z10;2}O)s;?+&9-RTr}PUf&#NB0IPLzag`~HkS^uxx{YVZ1a~+GTDdxpFi0&MU1dSt zY@m=4WVi6;s75S`aC0Y=dJ} zy#8$9oq57@$*=N5n?_!_o=fEW2M%Ju@f*_#|I6Wm3`sEQKk8=?9<><7lK3dadE}*l^lW^%& z&>9{|U9K$~)U|VZSCC8J-Fh&c-&oz=29r>ZV1j-We+Je7pHrijtAct;WNF}VTbJvK zBPq(vP>TtBhnSocV|!fMy@Jw)TC*I3_7iHYYNE_QMCv$`^LxYIa(1mvx&)6$ZN#tg z?h`j=@B=hIg2zn4u~MOt=L!~y#*o=rW`Ux_tYvcuiA`qs=o;ygd{+P|t-RlVNIo{cuMrKv zB|mGhRR9uQWiL=Hi_M1*g7C& z2|RYp`}7DCY*Hn~y4MAGX$zhtPT9ShZ1U(I=+<72dIMjP0iw}E#cf9WoKrUr*XRLz zYB?NV;b%{)C{*}{SI;%C)UIeXM$y){^|%w}iKqCRjJ1xvc)k(_=U05SmWTGluoiRx zd{^`V4rz`pRTYlXmA;-}x0yYS?^e_PIP_>f|GNZn^!s}@4Rc!jgj=gKc%Ab(>~NOr zyja^(PuKoIov8L~Lgt)S&OMM%YbRq{`Kyzqb2C*8i9qSxd+ zuW|Mq3uumS;aJVlg7ArV@}JW8>BvXeD0Ge;Hkk#m^ntmpN;&%}=x^dwhi85B(cN-* z?OX%RoOSLh1G@Dkf-B8Ut^_A6Dvv~wD+QBYre}H$Fo5K%PK&>k0>>Ulv)~rHHm*4= z)$Z&A)w7xU^Ref*&M)AjB0uLPm_$vUZH-(^%^lV|mNk4p)&s@qKci$)0o z_kNsXBZRlbs0x-s9oRcFg3G?F?g>VMn$--m-t7ibw%VDj!bsBPqt{rHmzii=S}cwn zWg9orQV&1nMTRz5g1Yh58aBxPR}F$|xeYr6B0nW2ck7S(+g*{)&RXiBd_+NhM)tN} zn4~BBp-MxNLZbalpRO;#ON~b=rWED#ubQ$+f6N)13{GjG)KjQ)i3H$ues4wE4cf(~}2b~!l_ zKc;bo4#1HW3I>VR<>Aqt!kmgX$tmW0^RK}J;wPJ{8+UQzryz0}8#rmp-8O?CmHK|L zgkcXFJe-cCr=y}7g`v(Lw%!i zV{nba?=X?jW^OAn2kQ@ZfR1JY1N|ihBiIumJ?BVZ>?HqCE5n{1qS)T z@5%il56&tAFeL>}`|l+Gu0;Ky(`)C#J7@`F+!L4bp8(R+&*T5t6iUV$GvDRfx3WKJ#pyjDcaQzt`|l%sM|G>0(KG%fqhe93zvxilpgTzNcaV zd1&z3;N~_W00nUbtm8a0wyLl?;a*6j?Gvg&C%qK4YYMj}*Qs9~&s?TB#=fOv!}bnR zB#{}L;G`QltK48D6UY|5^&vfqm2bCc(B`H+z!n^B^!HTzx3pH;9UbQF49*2&o&M^T z^jJ*od$>XXAi0hFQ1lwSi+ij{w0$7FgNpifKgozHMP6A=NEneENOEj9Fu&MI?$<$r zS8WDuqZP%TG|-k=Jl!rScu;gHt^Q2mk%%dl>8>@Q17v`+jz&=uD=N-#h2{ra|B!jo zeFCp(!DsTk%AsH&)42AZ#FH(CjzK{zv4DW_pa!YF2N5+Gr29KXL~%sFR4Qu{

twPR8z^&F@y=#!2EI)VbX;;rb}$~3sucbSt-nH(;&+is&g}8kJy5MMM%+h1LCL$g^qbpk-z6*mi~+ZYJH^_=35eZMaU&@JZB6u@*9*?6oL6ENNX%$@60A%EQI$B=J&jDrE>cL~mS#s=P%eUu?l+qeu=NxO< zj9*wmGIG+Yo#yM*9_FdNdw?Ry20OS6II(t3z(GAu2~qvTsb8=xsSHC0Zt#}{546k$ z4W=@;UIXCVo^Hw9ShI#-eT1`k+YkDob zJ!z_dvblT;dAf=nk{8$>yja17TYeuaPvyC%DNOM58AsZpXZ8*?45GRl>>*501;6ew_7DtqxF`?JGj8*y0X4)9c zbRztRUJ%8I`6YBPxkK&!uV9M1>>TvIa`=v_-Jp{@o-_0l9O~1JRy!GWh&@i=w|l1X z|8Q*edKEaZLR9S{mw?1(uV|eOk`hI;K1NP%G8ToK5v*_X#Wqb3_KdRn*6Rvo43c6;_Sl zFc!AK=M@&pf8~A*VTP54F>3@2`lC<8HSTSwz&G1j_)};T zU$i#p1b>)~WIij@v3_F=4yPwJ*;CjM>8@I3t)uf7O8Pslc^6TE8M#8v%BiY(Mp_h3 ze`D)LnlBAvZWS-+T^7H!rA1gS^^(pkN&`DJCJw6r7I8XM~vtKuD3fN5sL*OY6A)i;Q$^{3Ygf-@uu~8)LYqN9? zkyS06IAZ}YMH9YoMDaW?`7)t5LD`dw!xrl6vG`K%n{!ZYrW2*q1`#Fi0Z}*ilQ4;V>Nh!Syf5$n$HbWnXIL|ltBRK;{cm}Orfx%R-=ly72R0NOIr=yo4HG# zbo>z^EAjoN*6E2h-~9c?WUh>)vT>x8 zscT8SXI>mMI_-QlNh?$dZO=>Uy^M~Z!!$Sa4fx5kLJ<~}Ls$_d11Ao+ik}t@QSls^ zvCS2f4q|e;tEZp^i!A4n&Nrh z{)kR|&Z<8P9B5lS2iYfKG7VKxwJ$5B2RS3vH!!@*N)o@xXnVgM$_L)aEAQs7xRBNT z_NeVHL>{)A!d=FKnI>RFfPXT&(J{nk#bn2kJQesZPd8nyq+NnQ$UoZ~-nVPo<D9gVmfLyoB{ZFQ=aDoog_NsKH6 zcCH?TjzC<2H}4N?4+~%>Ga4y=cz&5yt|E_7CR^){)b?cN#DT(_s0wkTCI z{dsuMWKEf0P0l34{zQ|u1*<1{^=&opTs(r}yLskJB-jH({SL|P05Z&-{{T(Utp8hfsNbeDD*y3 zs!g>up(%`f!v)rVCC{W^JO7qWFt=c2OT|#zDjhi9R0tXVg|i(ByN1ZE^UX}~-FXRk zH}xvgxTbH==ksVo4*nsWRokVw`t7wX!}h5P~8L!og}+?arE|-JYVOKbvVlQ)~R(}{xL^+f9!Ij zh}E#wRPkf#Drc54`i>i;`MELfp)z-gNqyyFLgvC{w&g8Z%#7?^6V>;$oGnfoy9yC+ zBrgSDDrT*pD?YQINv>6F^FoG$TGg=dQ0R>_GhjqH*%f~FSv)zstJ9$W;0P`iL3IlH zBuZ$9!UA(E@^)<#f55QSoi5c+C3XxQc0{GHM#{-cM|xEs~Yz(;ygG|LSG0P@Rg%n9nMD#W00_&3>1TAw-VHJ3QoQPIge3Uk|ixT09i)7ZKF_YGV@wOBo$r) zfA=zH6dSU)K?Qew?xI8T0!wiR8pVu1|< z!6%#%mVRUb=JwRq^0I5`g2`88p~Qk#oT+PHCq`YK3vyb(*YkRE*-J3{FN#}C_w!_9 z1BBK%61%Y=6@s<+XST&DAwZcWZn2^YgpK4e2y|5_)X@oh1TuFKOmnO3THV&Z^|1CG z^RmlqJY?;X>dBht+`d2%e=L*~g(E0@TUxLR18NAd#E;nr9V3JxV;WKs-0lJ;G--L| z3Rw5v07xGik}bGiEttXK|4Y%o3S=uWs}dMERN~m4?R30I`8ktYNk$v>)RAVKI@lbj z4eoSG{6^D1V8S)5(DhB}_r*dx$))aZRKvD<@;lrPKg2!3XK&YAiw`--({{m>-~$ry zWXny7oNx?6J8VLeXNd31OoU}LED%)1E@?WZMmU#@gLp44VzWDReMMGS0T`06f9~D00 zJI|c~@+UX$|A|>gMo}>z&ODBo33H{x5F1YLYanU{ zA!;P**Bx3oCo_IyTdcRu9P24uKGf2=-a`P}LDO?Q!i1+#=i^M@UFxh1kEt~+00ACP z2DvOiBfz$4dx)2sHtMm^AA8RWPKu_YcAf8AiPs{t!viO+G=@DV>%v|vmdL2!4-fHL zYT6{xQdJK4E;*62*PvJZyOQv)CQO($JXQD;NPk}`#%5`FI)^@RZG|=Ge34pstyGdH z(4aGj&bG$2o-2F)TOy0;4c&OpFiI?8UcwNK)vPzZA>!9KqUuag`H@D%6+?I0X6OLJoyx|FLjnkkkjRz>5`LFlqYbVQP6f(Zf(XY}; zSKyVQJETY+;7~}j(~!By??i|aq9zj%+enVTAEBUi7>1cK!#|*<$RumYF*$}!bz<+) zqNV=PC^{XJwD!#$8brIS8LlT?Qx<5QAn4cF*J6)V_I$Z7Fz!{+6-Lw&D zAG?z87UOP3G$eRAb_TpZ8~k#XztOGzhQPSEmo=3)5UgSfp8Gz_(KTtmID}~9_LW-Y z=B>F5v-4j#eTmxC|1xB?DP9Qk*1{^Azm9Z)^-im-e?zyck-4pJm3g$ATI_mszH){{dhbiLPA{`)Yy_&` z`q9`jcN=;pQ(GM9*k#L)sb)n{sAQ=l_2Q5U=aVyi7r6v@<6f;hc2Ok?OVRJ@paM7|(XW z=NT~nSmJ5K`}{o}K!b)xH#s>3~>VRxd;sFdwaO z%Q!HW5yugo6ElzCGc!baSAhy0TiI1{LC)LamysBq+xLOw1JeBbt*v+kgHPBoxU+h+lx5ceF`8hU025+JBUsQnq5Yc>{44 z5J4*>wm%arSL>r^Fsu}M$D>J9UH;~dfU(foPw0qo*BYtMOK2c%q=1B?$$?8g5}ES( z1yrRWQfwa^@Msf)ZJ)I;;l(%jT|EXq3Rk3gJv)cLahk){62$MNCP zSAvaqd(=~z5aQ)jnE^@mPe52=n*ahiwi z0lxAjSHNee`4Y?&PBwsi!bUyTTiQA|iqAjPo4}Aqw-!ivFlgGv9A}56*C^svgyC9e zE^*3Xn%<((nXcB;bRa`h?25yH7D}W+8>q@_ZUn0)i**PkU-U$1L=sBxQ%U<=`MDBn zK*@?4ZWWZYnvy69pTc4L8Oy$tKZs2r7pOnpDKwYkRw@I361i+RNI~_d@ zt#hQiz!dC8J!4ypA-4`1lcNzYI8pGRSzvtwwJC=q>ee`onpYYwk00`Z@37Fjxq`P1 zzFW0dOPf_)>eB0!s+S-6EWXy;eC=rkxjwzxgMo9-d&amY(IH$7ntFE%(2g|XGcj-A zG{Uy#l{dKsbiTJ=1ybDy4I(sW3pDDU$9ld9ncgY|< zJ-@^O5~A>>*;9XYtiHSY>Y<&zy&xIK6cmhdh$5fP`At7~N5~`~3#xO(r>~45P+&@K zp}+0lkIij^V(8x`Lli7Tn7QROy}|K)g!h-}p7)=ibt3}xeW=3MCDo(NhpgUkdLYE* z8txPO!uVM8gh@u<&E5MgACxFuixhmbad1zA$bnFb|Dwj;MWK;%PgB9%wQX_4Y$^F* zt~lGzZfpEg~3p!D*_6QcB~#7c$p>2tPpIsK;5aTrN;onDl#;aHgscWhW~o$72q-Lkkit*< z+n$dGu!)Ie#6-3qoR)sk{-YS`v*uYI8=?-F zQhLm-0C*MZ0eYs`af9S%j}MF0)0K0r=P0Ei^~2MNy3}mlJTOl}gt~6rg7NsyVbo>30UQPOs_>muT+=~U6rZV! zM3U;bXi+0ey(_RES%`u1Qpr_fP!vpj9ABWL|z5&+a^kf!$Fqp2&Jk~x6tnKEmVk%K)21fW4CYo`&VD9oOyjdXbOgxOkeVmZ?5(VXe{$wsu(V0tyz7k&poILe zeRRYWjaGL+E_&`37}<^cy3%1W#^4KXl}bme8xm9Px~t|a_gGo6@20794rq(DzMcCt zrNpzLFoj!z)_9a&r(JEoN3jOgj+e-RkA%RKD3qJR5DZrG^H-y?oK0fYjy}Gj_`Yc6 zsCt@TcyQ63vbz?6%TB?XJkT+u&s%;>#FvRfA-58KJ4ZN(y+`kz{L}zU@AhO3=f}|f zx_=d(^RgAHsVUJ9ilq*x;^q>7cu!g&`Q*u&cT}fuYMM}kaa~!4<+qESgHX<&O7Wm0 z)_W=C%Zuac?r=Ul@w80J-;Q$ym4;l>y|RKg1gHC(l$7qbP(~q7G^AbeGC8!@3XOI* zQ4*%M$&N7OA%1;9OOy9b-@lCcr!0T~GwNWg8dFhdVgT6J3lPSph+|FQ5-W2I$o0Kf zHtTcUd!N@CdZaDTx|EzOy;Z2=?g1O_V+bY%K)~0(a4Xf&*X+w(^1B-J&gmigL@o=E zX>*y4a@J`twkgo7F5UY|243^X3Q)nx+p33J8(7R3M5z}3_+*0u1CYc&+d63c6qT0X z#4{0CwZi!J=hFdEtPF_e*v?!!wg-{^jXi#SwNJfXMtNzVpIcC{uUYG4l2{`%@!t{O zJNa3MI-<=!5?kRGPOC#=?~P=0WN@T2cO@KE=e1HU%aLcVHIPtB+WwyI!v;!|V~|Lh zy_$+U2zhzi5zDXLh1^fr-^ET9ad>k`)LNunMjN-X#Mqc&xiHG zZ*+amKTVqfIRAmiLf?GFS(6u$bXdHQVmlatySD@QUseM?NUesBtB@?jA3lfcsyu?` zGZf82WgPI@19m6TF(C19x<76P;b%t= zO*2hWAnIi4SPsij^rWkqTf8@H9B!9lDW#!GaSA~$Q__iFU^jW}b)EMOU4@Z%?dhAv ziGyB=b%;Iq?r%p{H(06~1*1tUBgFs?vyf=}A$5=`$2W{QR__^EAN$8kmJ)Gxdyqtt znJz;_1MjT5y)bOAJZb_fifdzpZYF}=NW=@V5_H&wuz;fSos6;T5jNr_aBm(pc5_2+ zvZE3v#B5#tl64f->1`ty)cvYwmDq?k7aP&Q`1O_j z8G3`D(%UZE+#jtgu00m=0Cq^V!rNuk=VD56QBVjnj_{NYu||l?71)=3QLXx2Co1}Y zo5%a%CH#AA9UKuLbX=F{`wBiQ|CtyMviGXO602JROL%(c?cH?;X#v`R)`Ss^Vv>`I zbs)M$8c>iB87&plLbGPj8SlIe2D(`b?Q!iCm38~!F)H9CuI}JZV&CStr&8Q;o<-lSyIM0i7ZM5Zrwj)S)Z-bgq^^h`RbH zs~+viAG$bZ+xl-~PXh_y^bAcd#fw^>Fo)0!Wv>LkAIdw*c;7Pb>@X?qp#zP*lA9$) zJl`G(!kTiuzKmo6#h_jpoI`}YA7jO9&hjnqI^$B$nIz~@6k=Ew8u$W$S zKHw`WO$LsQhqB!*WtTiydq9h0a=&a)<#3w_dFDMUyPo7j;py`%N3?F8mD#-(2k;*L zMsfB2s)qiHESgL>YASmg{NiZwNxcP6BHOD>JPDWGBO?d$)QgZkOdGcSYOV4Z`B4Lm zLYR?&Z-nnHMtV47QsbR+AU8?I|NJLlTNB4AUTo+c{F2W?IyO%bVU8Wx1UiD>Zis+~ z)H!VS6$yl`Kc!M$9|0Zo`3NPvsVzz2sRn5nC$%3d_dA6bl=qvK??q&KCni%(iM#@? zQx%jeI+jGZ&`zZt;33lL`&6>np>IfF#}5`v1@Y~)S>Iho)xrGkAdc^*hbVSz@dX*K zp4NuCk*1qKi<5#OKA(-U(5Hj>uda7axeSXKbSKbmLx+)Nw#K3(o@UJz;~>tw^ZyuEE4`)9 z#ytPRW%lAYM6zutE{ETN1IHhr##ZLoCwoV94a|Dc7kGee4#er3#mJXFhVgvhrZJZjFtSPAZq=T&Uxfc4(dzmc*F@L z^595T|D>PuMQcuI(czq<=^}(7#$jybZfH;4k8i76k1MVNBI%o^M2bDoXi+jb^aUO) zwOm0#$E;$wHY1o@A0_92wbzbYx)Gun1)GWc?DQKj8V0>Q*S%iw!EQ(FGX3OA5Jm-4 zw0f#R;%`c~pm`=Ro4>oLpIe33W8U6WTe+e_&hHMFLYnY)>ZU~^xSPYb@SXOfWM4!r ztqvM|;&6=3*njmcUWf-^O=&6s;jQgS-P$1Wd7D}n7JtoyF{Oxzqk~z^67k+@v8Xrh z9x3azXy+Ml@v|F{Ypd^X{4=8DcGS1__6ZSRCZ(2s?*bHN%N@pvGbE-A9Dm03EvQL- z^_Yik6JG$JA`=A5R^iM8cLdF$%N27tm}Gh_hR}z-od0fU3jU`)C8euX5uYA|?-D6O z{N9U3h|YQ`+qE6j`u_iM(#PWbPQs{`&hjBE+lZp>Hx|?KczEkdcl+0TyK0A5ls^UV z#F4i8(Tz5=M4FyOUNItrtOk4pjXMs?QTrt|8U!n2hNdx`h(f=?LlQ^hPF-~&a3-EIoD;T(inuhkqPMpQ5f$tg#?!~rIw8?ftL87b z4@0nKu`5wM%TP6PX6H^-xclyD4KbUe(uKdanURGU2XIx+64-e4_O!EFRmbA4L!e{G zikNsDF0etz>@Al_>8&$>qY`1O>KLuUa?ZYj9R)kmw+WtFPYl4Hxt;*TiN;g;UkKM@ zE!w7iF)rOz=|0=-(Y}?>e%*l{_vB=BSm=O7sN2Z)_R7y?FzWUoo3J(m!Hn;=8G}nu zM$*O2(s>J1iXru80C6ig{ZSc5wP5Al45wH~C$6T>N|fqzRLJzo z7{wi|Slrs*(wJ9c$7}AhtJiKW3`$!DENoJhnyA+!*H&a}`#vQ~sAD4o{Qna?XQP&( zXxH9qpf2~wu3()t^WNVDAW5_6I<9YPw;tRJBOTU*?Nj!&rD}P-es-)6tx<#r*Bdr0 zQYIHkFB%QJ6|M4;v00R1wlUymHzcD6R{C%-9BEX}OLS0kk-evndzL%0r2<4~Z*FX= zFo&EmBQ2HwR%&mb4BX)+3K(}p*Q+bXK{Qx3;mM2PV;rWp-IE-|D^tKMw7qf1Ao_t-Imgbpq$WeUR}F zURKFsAgp=5pY_^__#!*6+&1D<v^>#joo+RQm7Yog*Rx>4v&!+-F`&C=IUxNC%y*&v za>(N|cl>G?s(bJ^klu)HA^D9b!v_%DX>Tr_*nK&r=2BWQps*8df6qN{Kg0PCw=~VP zH)DayPSd>wz+KW>(O%6wx3d7S;bB*JODce(6*Zv%#V7mBIbyN~%9c31T>3;L0akvh+^5b6Rbwwn39fA0{=8wC)?q|#pa*$P8OmC&_QadcTO%k&224|6g! zRbxs>rnbp6jk?#v$lo->Er8_8RkWz%p!PIWKnv_e>yH!f+nfsQ1#m z4FbIEZb@BNTokfH=^vuTuVg8NG~~xJ_YS`*!Cv2j=|eGqIcJ*x@+Nvq_j6jgB?)ZV zx8B^=pla=RC z9cx*9m~(xx68=frG9q`o{zNDR!Fq90;3+u_owR;uGO!JRFH^(Pa*f9!Rv%SvNk)oO zbMbP3;(5BVxcumj{UYLj!+|qooL1*83QB9wO;IWofdurOjO=o5$`ND#T0yr{+nL(D z(lb`pU^YSJr$J(n?1p~7rdeo+1_kS7enJK6sK)Kn^9481WMtp5*uE?NsKuu(G?P45 zTO5*o(J9<6Vb6l`5nM`lJ0z?2?kPX$R}uJf)>LRt@xuPgzNfO}O!R~mEML&i%(pw%JdX?R25;4y`o#7fIxQ zI3O{L@Kr_2+9@A^^dqJNLOmg*Y_27Ni%HxvfbQ1=ZNXi1Ky`aUQ&Ifa0aRU5%u(6O z>O&e=?~4Hg8AXp|=_3&lZEr;xxNC`kI`LuzCz04G$`- zjCq4s=Ml++ATZs|&M@(WJsuZmXtH>nLq`Y>az^k!n-sV7b5^&&D6{{&ftin>pQ_N( zD!ssITI590MXVjtc-SC} zCw=SDcQqwkIk=vkqR`d8o*F`ncqd>k$r?;?qNF$HHElyEVXJ|qe@qECF(ZZs{lREp zf$og}PMHNOgr61BGE<06fqRbDgV4Sk?Jek%i9Dm0;vNqf8h7=p;_1cW-5PNcv)#$i zR9(%e0z_*_4j;zQYr~&9E3QwdFTV586;!p8`M|BmFN@xY(boh6yjX8hLFW0(i4Pu7WoPw;blYdEZJe90rr1Wphx6I;1lP6AFIk#w%@&Cm5Fe5b@B$o4va55-O?%DG~c;$ zfe0Ch!Cc2E(1zOfi6aOlnl(nl?D=4jXvJ|C9(<(v*kncH#{ z10@JZOlPst?gxIcx-sl*8e zAOfA#_-7jvKEVD~mkQrthVGEf-Lgwv<2^jz50i}l@V&rV+JS|fk^9q`WZfNmYKL7j@@M{H1ZbWG zF61SNZpy>I2h5US-QbV2nthc)S_H8VJqLmN}4wQC6? zj7-_@l1BrxTWz{A!2ZP&;DeWVTmyP@Us}8T>BgXT)d6TeZ;HFvde%4}?aaegfK-60 zze$#R6b6Go2w{hRv+Y|86#S2G<+kc;J#6lj7YVArZO}Imd7@CDC^rTr6m;jSs*|pf7Ddhv4bU;bOTW$RW^mJR@=&Ehbzq*>t`Q66!uptU-;DirIm0k zx-yb`6{cibx(hZTv9OM{>VC|ZnLT7PkBm1Jou^USvoWj3y)IE=`n(kbM8G8Phhj1l zZxM{rG2uZzItn90%oi^y5ZYT|et?b1UU!Jdt1FkGjW=`#FnF3^hZ&F+z3sP?GU}@q zP^`NZ|L#<;6p2^jp+YBv%lqfFQMPwc98C^m&^kK;o(l+DEJ#joyrr2Voup79X|p3D zA?#fFectFN!vp5KE7B;jsz4SF17;8vf24rG#O4hy$ zJKVhLw#(8W-z#Mm@bpk-;%a+3Xn@*T1ILHx-{YoTO>i9O@cQ_b@8-VwjItf;&2w)_ z$NOX4B*H>A{#@n2uQS;r7a+!nIf8-7IM25hRx^rMQaz2}l2N;7Z~`5pMzUi5JRQwI zjOio?C!>aWmNm>Cs#%5(Y;Ibj7KD*o-E}w+=&L!HnMxmGYPz66kikY+*FKdW1ksG6 zC#r?l)wywbus*adYe|Ywlh=7|tKHHHu0on#ZwYE(8a6Dm-X#6H_OfhwNVjiB)T~^d z)Dk&TLHx@7zjf$hSU9ro@7Wyz)plR8!g80MTuFPEM4n>gjSNRbL~)y`rOpqsrX}2k za-{o}GU8|4GtXZwhnlnRDO7j10v4^Slo=!6I=sb@BWebzy<0jc6P#(BlDBvxAh)%# z9DoTulIDHVF|UEF&(qafA>bb!VIlmYAOcTW9sF^3a&r=6LP`aDB z>dOQOOIT&Tty_r0NlB6y(l>EAk_HaiBzj|CSwgI2`F46_^6~&vGcjJKT8E1SaZemX)#@drY$*resAq)|ET$*W-jIn2ukdFt^kn%;;u4`89a4q`?sa*Ne(Yimt8#UG}Lw>(a z8uZ;~ylUma18NDr7m2=dacy=<3jfiu%Z|>`m)IyMvvNNUD*Vj^b34IU(8lx0+iTlT z@S)k>)tAS2L*M*8 z@`h^vHfAAiqadUffV!GGTmBqvVo)V8b9m_c21k01szEFF`Fv^5AWj+2Nh-Ei!(jEV zv+~UCfd=I!!}>u$gyIa|+e2%Zqfii~cGw$#5py{rH z7BOi`gfu0*O{VB_HKkXgmcQVToL*a`DR1msBdha5*rEiKM#;>YAA$E!A{y7{Nu}_;BRYTawTPRa5bG6rULBYlBj_2b1grERwiE_~EMn#L+e_7H#*fmz26x3~}7D>j8%gX$Nn__(Bz&WfhBZnmS;V zUZo%g)a(vpH>}CkB75pvLQtwi4?2ksi+t*O+Jmos;XEN0pl#e3%HnJnojS`0b205G0|XB_R!B2u!;o+onQS$>YZ|JI+zC zC+Q|vNkI@4^q}sYBo4b=#uz36vYT{j73jS~`N1Bv<$w8Gqg{iHhHxEFziwR=IkmJZ za9c=gFe^(B;W{}0QOb$VjFE;+en;AUhgxlG&)5zUXXW%@o*|`ejop`y3vpl!WPk7i zKA3fLoTQ8tE`V`NO&^|}4WEBFm`w=Js!q@^P)C`99|`_DJ*ph|ngW?YH|41;Y41YO zvp*a#Brrn5oUa~gM^y2^OQQz@uifVhh~HFqK1T8VMMrGIHv-Rh++!CkHAq6SvO+Tp zyQ4~HT40`1qb%M)r<#Tk=6~*i$zUnX7hb|KhxdO45rvVR(lQ{vid^X zowA#xFNEKqz3TL1Hc^pNC<%fb5Kx(D&Gn>ch)5cvaPkr9zm*51e;e)1*f0-~C!5A4 z4gprYT^n2jN1Vc_d5*b(x7tEsTbl`uw{d7%{-C1H$5NBHxt2Ridjj`F@uilIOP~k~ zB)Rp~GPhaG2XpzOb#pG!=Ml@>surFUJ5E=}XPR)xr*BI$!{-AT(02oHAT2HApsIF= z{YYUdAF3Hd7?UO$LlFJp_5Gq<6(i<(sP5PV?qHHBhlHfVb+=s|rzMj+E6i|}NazQG z%_18f2)k6xm7)~@c~QPKuv+fRk=)j?ZKzZy473<4;t;P%4JF7W`;}k2TC7>H7&Qj9 zjXp0ImqOr*JDkD!tHA4*0bnqlP~=lT%dgbEYBuoA&lW#9(7~eTKhma%I$lQKK?vWS z0QSI+n~vvS5+)fV>3MZKZB`;X$gkzx?waOLDRUL4y($Nkcv}tcdzf3%GSa{#aaJv` z&%(vIal<49f-)z`UM3% zU=ZUq&XWA2Wt2rvPQeNk>LHN#grOS^o#6!TJy6N8L9qnWQy~j z`nVUH`(|{}liK}Bks#*roLt50y2PD}kO=-U+eAaJhW(aCfRm_b?xGxeujTQ2Jt^_c zWHf(8>RgM^{S9dA?wyD}n=i`R07P`i!bo@cUZOYNdq|ewkt>i&u2(E;%Oy(8HlAa2 zq1XT!>2WF!_q&dXX-f1*oVu4cmX#YS$RhGwuT`Q(RdmTtlOZ$SD0s#+t|I#Pes zkS#8?>OK&|zrQ*%trdOFQG=$zgWA~p`8}IW#=YvhbS#P2akgL~bv8(==JMf=5V>xx zttp{YPYlM?1LHahd3L7z;*AKIT@Z;;UKu|W>?(06Seu)^29Pb8|Ei$Op{iD%d$9_j z9rk6klFJ(N^oh0Tq6h52=_ZUD|~Slz_Nyte|z z@SCc$=0&QPsS}%luVx3cQ)yKRQgc{&Dx2UV&iY=TSu*)zqj?j}WLNj1d^J|;n^5nA zPF4y`L4z3|suHG)lS~`!6(x?US##-+RZQ9h;ltaJptax_Ao=MKHr4oTfY@!=sya3w zHnyY|s-cq`Rf>B?7Pzy=ZEo)4fx`I!K({i7m$6vi5?_5-oj8wcHl?x9dK+(j{kCaj zS~_Q*-Kxk-0_c~0JO;I?g=T_KJvW%VwTb+75$t6vl^k=WNBC8vBj_n#-%$G>S?dEK z2GM;jG?BM*f@t31y8LiksX-iK!>5Hf$0F(J7)xWoVSMEt2hTCnhy(^Hd&o!tRa zrAHt}R))R)1D$!+8fcvvCdkxQOm11KN+3z~lDwg(9c|->7WB6U_@t9M>pAb&xsaE~ z)wqP*1)`7khAyL*3N|}7QOwM9GN(z1uK{?P-k$Wv|9<2G|4v-|wV$q4N~Vy$&@hdf zuW=*R!DO(yaY>)i$g*kJL-HoAOCs*)F=@`))-a;psZZhGk6%j>pf zCG*14F0l;{Whp%yF&AB?zei|Er@p)yls!25IBPflY`Nyr&4p}K7%TkEVo4#RHd=ME zxkEa~IK)`r0{Hd7&S;MB!dx5l*|6Z;FhOAva5U6~9s)I6IsK;9M>ywN^6@Zoe?#661A-!A6(A-prw zrLfDTzvMN(<+{awu-hNNH#2f(ouZ?8xEzbhsE5%=PRxu$d%<)^ll995f)uCR?_1nD zV;az)4-&FEh#6zYeZeqn@rQP=@!<~9FbO*)WCg`1l^lH>MnE@}&_L>zQ)j6Xn5C>9 z>Kn;TH2cK@j!Ic(k;s-H{hS~0!kD2U{9Q`Z zO%~kzlNz0GfF#=Q*=D?V^Ew*ybI3x3wPcz}5$J&fz zFE?6hBtG#TaC+RAYwM%89^qZ=(4ywGrg~1Qg@0n|-fh@4GQCkSk~!ra0G|)x+pu|8 zHqW@Iy{!%;?e}!MeFi*@C~xZO6AWZ;hYih3YqIq{$rUHzb?iLMW>(XM!a7hr^IW(R zQ(vmbm12FexYSJ3S~XSMj-rAe#F+$J+rR~};xtlFMtn1)#o;q+&_!DKwn{+b$S4Tp z@u9IqGtjy!O&(xBc*$9Y*v6VdLVn6y8xgI2m@_@KlRDqDR+5#o;x@&$?l%#EDS}qk9xUsl zYBn#&OW!s;y+ZBUI#e9Rl*mowh6oACcug(X0wftG;tnj#Bwn^|Vqy+*n?1MiVuM|f z9%NzmJEWu=IM{j~*~fft3``TdWfDT2|{Kv!R@vH)kJ;d_PpI+fa)SGG~-0eL2v$(L9ik$TYq~lt+IEi zMyQ%RhP5KsP!ebywR`A0Mbq#zo|u910vpA}(--9sO+>*J;-# z<1BMJG2N8MRl{O5esGT(G#zPYNs7wzOn!R*sVJXjRPn#h5W7;?VR1|om3FjS7XFkB zJ)UYuXOq4+I7SymC;;o>0U&W5&Tw z=P1Bt&N0Guwumw&ofz7EU0>uF&tU2M?Pzb4aMu{?*UU=N*Is}=?Dg!4!xOz?IQ5Na z(YaW@bsP#W2#Xs7*F-n_w_E7hY{P0r-!lHC zP9?`)G1Qp>lVJe4_!Fw2^Nm*gex{^UaaiXi8}J1Q@6A?^Wvf{oVrl`mbKrJ@cxdBB z4%!9);d3}fp(*!_5IMd!dR?DEh-h@O*YniLME)Y-SbE;|V zYRDa00pxj)MM;(eS_({nU`7|7ej3Z4mW{at86rc`(um4ysNVb1T;==&bW9jHP$5sU zq50M*u{m-_2encah=tvAN|Y+hH!rUsR{s_Z`{2flz_NYjTQ2u*Q}f0H`-k2U2oSC# z%NK!K4da4m%2f1-F*9Z^w1sCtlJk6RdW#Lq7>!k-Khs??&c_>`C|M_Q;_L(KeYotT z&eL%1H0Z==hU|427LP5ViPpiV8W9b^>CN~)`s-t5nud?)M^Q{xG!}LCab>OJ2+%HS zoGs6u8q7z$bNS2eG)qr${ka>oQg_KAA)2LZ^|C4 z=tbaMkl5`GegUWxul;LT;w7}-=z;fFUho&mXK4e*Wb};gxJD`dHxcp>T}=>4ZOr@_ z6(Fe?&|KW%lnW?^IfP7&JzcnWNfTC$DPs&sBuyc)r4WB2`*{`TX;oMzX}Z8e3OIhb z4zrHfIeGyzClel%?^Haa&#G2egpQ7Cmqo)Limay&W2JDEu3PShDe?^1u;jF73cT6F zV9S=$Y~AmU^>1PLC6@xlSa5EouFF#mWyZ!%WFKnq+L}XZ! zaA#vQA`&Kw8D{HBM7V=fgBl(q%94wznWU=1>YNeIBbi87d0sU;FKwc^<4SxF@A|}! z?-3gSk-+6!#mi?#W%gUkq>Y^WhJ3dfLlKUQQ%(dR7L}8`XoPF5Y{BuUpQBV~0T;nkkH6;YKp>UK-V@;P5W zE(AX#NY+Z-%Y=0<$}Ja)HIve0pDNCM6Pl94V^3YZAFJhmk@}LC7($FM41Ze1$wz4* zlc3L-Py_OfzY48AE|KeeG} zcViX6#SvZKT-T_Lfk*$x@D0(q!%hZTdKaBUjrfE`7TyBSa3dpl6&yDRJ!?haE)RVJ zVnc*!#eY7dBWKKyzjL_p7yRYJy8-cz6a}YGKa?oc~@%UHKZV6a_~8 z6I-SGLVGARJHbLdmnO=CileP9G7m^v_!+ZKsG6S7qKo7Y>iQ%^U#hYBr!?1}J)PWg z5l@uRac}2vLV@AFfEnzUm3rqfqS6+t$we8?uxlOw3G$9%sw1L*%S~zd9Ur@npGU^p zW&JyK@DITw$i&b#Q&oF6ew|(5h14k9KYAyrf@XN*pdZrcNJ4BH+*&iZU)I>^!3Gfv zTzzI!FjS3+!2-m+UeCew&;N~FOmnbAsa@mb3SUf*SKkMi;ZXcL@K3_ZWM$%{pC08r zYZ!da?T|%rl&+J-eWm((? zXXix->L{&_X9`_VzTT#A2V+qfgj-X=uyaY*>2xiDyeOV*z`Z^1Q0A`a5##x|$KtZ) z1Rgd6wO?q~dtL%t3A3+h#SE@7!C}!sh6b4su7S$U+&CuulXGMWY{_NC@|ZRf!~|xK zLdOF#4QmEj`k7~BVY^KMKRgcN@yQH>9s4N*{%aPvcf)0$M+FjWQYLq zc>MSL|0P%h>BmaSrU9JQfL6X-&`~_vP_-3nt^!M2Si4~pE`|s9Oc{;^f?KsZ^tG6G z%ziBait>UWZ_lU}z#&$Y8}uRm7P1IqS`dc85Pi3XM~O3qAj+i^HPD~%fV`=1alk@S_TY&Ebz=yxhTeztlM~gnmrpd z`@dT@IfLUqKv3VmLx$LHhclnR8OOS&Qp*wcjV-8cH@4AJUWrY+Q?25an=8UM`(Yyx zkF_5{fS0YoI0Nhj9tMq!(m)3MqM!c9+R&Bc!9(6Nm;Dp=9m&Qwp1XSd&o%_f!SAS% zaS2dNhZmc!A)7t%h+i>R;Q>e(9CL|Lav>3KudWg<*3eq|;p5HkZ6+hQIVtUx+G}lZ zMfT@95{OrI@Ya#tqQb`TBqpTa?}==iR~@Id{E_O^UGA3XcueHmAUqWK3{1@j9G0ADeIm% z%Xl+45Sk^E=X)y3+{GnL5_?ROusU0ZIBR653?ycsLvI+baSXPEEKQa;3E6_7m=u@9 z?6N;j)^-+HNg?G(XHhQ5;Vs^(*Dm+hJa>4eS!$L}HU3`1z(vcWV+hLs78Z2=Ak~U^(bUdd={>Q!2_ZXXe&ZTO!&{D~ z;5@~6p!T={T{Y(i|9R#@7sMW{f43t{Y3H2w9XVG5?Qok^p9mXLHoH#!qW;NU(Buk@ z*R~rYwc2|`kEZp)khpC%5&;N1R}WE%YCLs=0dL0OE9mMZ`8Cv<^4CjNBKFF;t$G?(}=bgIpNem?8*|0(Dyn(Yh8p)09UOF zxA{j}W-yFHQD+^x^hy$2%x!co9k0{iJ2AUR$N1E79jX{lm%N*-Wc+c_R7Lyb%R`+Z z+p<>3nghyZc(HJS{dAvxh8B`Dc}V=v(Wl6u3vL0Tc?E*jRg_V`1x6B%lz}Nm>mpGA zb0@mLv6ee`mOIYA+PtlXTBr`u~%DhU)uliw5u2YJ?4CiQBF&Mb?TigRd1^xkL z+Kxi*Y{5y$LT*(S8tMh~?ZaKiHrQnbLZ&(3@V^R;I4pG)Y!_nREniswyI@s^q(@>~ zgC#Bli-N)a00&m2I-zG7*7A)Y3D|n-*u7syWd1~q1e25l6J52w#-#3Px5Q-x#Ss2r zC4wVpo`oOyTHIUKXbPFw6(Sv>z|#V$&EiQc*JUNn#^BWo3ajk6Km@_y$wISc6m*XX zAefjA+6~uTeA^BlEE%Xo6 z&N`{LA!b}VLp$?}LT{$el&2_q*`=Y%Ks@nSe9zEj9^kNSx&nUq4Zt&mSZ+ijM6=Zg zKI?`JXnc&dm6H<=T~*?%vR$8eE&VYL2>o&~kAmLPd@4IFb*O3m)$B2#fs$_GZ6^xfnO8`&tbpkx^b=Auji&KB zazhOwfy9Ez-*xDUO4*W8kgcYa`R5ybO)tcVaNu&FO)q|rMKJ=;EL|Qth@0%*i~#1s zMi;q%Q>HWQ{fEuW3__`g!e@c?{$T7)S4&g@XnrKzNXI<-rs%GBYKk5vJc1m>FHrJ4 z6oNL@^KVg%=!q$pg~WWk3lWv4_ktQdNk__QSXr=W82{&wdMM|!=NZp!|=K2#iL=J zEcv&@-TUKZ^c0+>H-P+g7FY8p*Hg1vO8`q^@s_SSW$P1~o?G}qWX@6e;=y=&(=(CK zc`Jqzc5Eh|eJ6S?Mdv5a3QAi9n-hZ%=k0?S+&-{G+KqCFXXNHzb5p=G zZk~o|l?W%_78Xp<(Z`j}?V89zPF1(@#mOa?_hkMvHQgSkA|z0ttS~{5bkHi11w_)& z7KzZtSgc@~kC@y>(qJ%{2WIw>T7M@_8vkC6lt5kD?XTH~P$UyDh%GzC<-+a%p`OBn zwRlgVaC}YGA%EI}xv!Z@A|jueK{^SajY87u?@gEohq(ABZV7A$(^%czGd1QaF~$sS z(9oGiM1&?F-yvkJrTTTmx&KFW&T$r2BzFN8uD$J6@{H?Vd1W~d*jmr3ejjno4tYhu zn1C?5Z`lkZ@Fk6NkouV>M|0AUT#GFkux@PYE>r$4VzuZObisH7_Q3d7D6E8p)@lLi z@??&2NU4F#KDcDpHC?LomoQCLKRE=qWab<7OSA%l!jx-ShD4_nl35HQzA3MJDY_S50Oir zv@Vz$AZP5ThO=!m%Kh?@JzQbULPkOhIanR+6CBO%>H5A>) z^;T_7&wQJuylEaG}Yr^#l>sNV$;4S*?>boB##6fK4t7i{3 z323pOg`THG%#KYG`C`e0RHm-e6J;xBuK`4U?Z6_H6;N3NN&H-pHkGruH& z#vC`*dqAybCIe2>g8MZ%9;H(JX(}$IlR(utz|jRI808E@`VK2V$4Z@U|6-}* zB4E;ikV&1A1)r|EX#S)VA(}ijgv(Th*#gaF(h(sPzvZi}oiNP}C&DU>?7-vo+d55ra_fR`xcYWT7)O z4kPBZuB#{D(#`otEf%fT7K>K4aVprY+?ODgO2{Gj1~uh6f%^L%lg_dDdp*p?#ocg@v1AAxGig~fc@rYLJNwL&j8t4}fY6@# z)fHFe7Ot_5luU6RQyPteCBc5A5zC1UaW|9?G4FdU$BCsj`gX}#m{*RbO+@rfcfs_N zox7jfbEK@-TL5*RE&jt&nrEvN7+ezl$scC|dl5K1Y+;xT>>zKRVme_H61d{10m362 z$ZLVScMF%p6;|HG62|)4;PdVX&h~z#Nu!ZylNS!z2E*oz#>5Evr|n+$TJ_aQGF)~3 zoph0Zo@6IJOmIX)fo$cO{I4U%f8|iVdYsOE!#Y_*nBEri&S`8hL`+Hk)hDY;>;Z%> z9{@^8ts#W+`IatjI|Tv^CKkn$ z)p%%dFal)nwg4I_;9ph#FOlYddnAgP=ApSz7F8}nyHoUL_ym6rD>fULK%L;-=a2`s}- zv%)YB>}I=sV77l%DSOwY+YVa75lf4(?a<(GzN&QD5R7jF4S<$4!DWAtNe`3)^ z+d4C4SU#R! zQC`>D*R??(NvF=~pSrI?(P0*2Q1*zA?#D?LH%)z?O6mVf^eej7EG|msx=^!#Z z#@|>a_WT7O=qBe75hzs1VP5|7`Nv5v()y$znPBt7;D?TW^4)MB;MAlb{sGB9A3OB? z02n=6@7$0Go~LYS*7*2S$mV_T&;iviaT&FF`?`)JmF=LH(Nn$(cSuFvfO~U|G>LeK0`pD2 zG7y5`<_eZ)u{*!!^;c@VY?-DAW7?0`1V@fL-rYd#yzL6a2vZIF8B3N%6hCC<-sc#r zd%=jzTPEd8K+r`b08_x`gk&FY=PZU?Jh0eTcK#^b7KpvuSt1G8ppNkAW4K^DE;e~> z-e|m28LjuBSq=3EIVs+bsc;5rtJ%(?|XyxV@itMW!cYVByC z8VpOV5ce#IzLTub>~HBSJjEqk!Jo&d;QQn4Brp2^4E-hQ`F2)TjiPE>$_|mPL@1dM z&rO5ebDaXw8ME)(#ZtSb^FBO&HG(U@&xmTv&WuKl@_VKL#7@l!Z&M|(qNdCZ1o>jy zS|(THrX7%-;M?foF;CQwM;;|{(43Iqbu_7F>hnAKK?>VU*1!koeF-0ctIA}Iu*(XNi^_;(?oPqV*kpOMKx$eW=l|WJ5EcKZPPOMfZhGFX(D}rn zph`vJ#$uRB5!>s-K#|!W^Spd8HHA3o8{ccyQNwI~$1dtY=iWm@6kYEuZb&WiYgrGg z&eg@@=uz$RA7}ygVD|E(i*V=ls7AOP<4ge~`eKi5!$4U#Cxth~NxHux?O8apG~{Vi zN5K6uh5Vl=K?K9282ob#$3Jt14ny@gVkAcM3x2s5!gok8pU9xF%>MELC z9R+y@hpQnKD~vbA8f*guS-s5uOYZnl&lTebm}X%V%8O(c-kTgs$0`^pO?jICH1;smvNay^(8oC7oM!Z$(vK4g z^hn~1s`F6mrk1=04ZkL<(&liFHCD0EpsUcCde3wESsZZigZno+;A^=a_G@t-70)t3dpij4eyy6x3RzSl zKFx2rMjlE@I97}#K$0+#xnl{)q9N=&(Ufe61kA6@B@*{|#RFBhb>^^5r%v9TcxhQ% zS7$WxS8X#TYxjt>NBeuQqD0BXJT|U>5$gT7}0-l{HU!%HQ;1Ri7SEJ(%C7!4`!w!;?+8 zCUm>J^?MX187)FPs=qAy0pbIDLU|}GpA;OcVwvZ4xZRnlJ!xxf>W8}%Nu{W26`Hc+ z2Kl)?l;$gl@)8d?RJ&B)hUlsP!8(i9m>?6_jzPmQvw&h}D)QG&ec3}f;mg$+XFNng zf;Y9xyaZ!O0wO0xB}Z$lAR?^~a?^Q(^zj1l6X;hfw7uyCTU+@F&{(L>St(FMFWskF5kY;mXlB+;vVInK`{Pq%3TogSmO9BLys8@m(S^H0Q$h z62BnY41ns=;&4r^rg|G){~s;H|Iwt?o0#e zF?{LgppVGVpJ;bKKgxR_0}Xx!uK;+;dlRNf()LG@FiW#(YhGVk+rjD?)3J~CUq21O zn2@N@Xb%^ugOP)hI1vF>r`Npn*C5l=THtu*13m@@q8w>e4L!8Y7r- z0emFwvdukBAn=kDN+<4+THa3A%0ntcM(HsKzL3UzG@y7k1c~B|4$~7fi0yNO1%{UC zoH3N8cfQz59u|5~azKF|FocTky~9O_Mj39r3hI`4TSxUg$-X>wNSusKp{ufqpZLZ$ z9oV}i!J2B2hve~pV;|J@#M7U(F^IF6_nvNH+0xy%F-S~oGwfw@CFElvC4hjeQts|;_ z73ugcA=?H>iIpt7&c~KvWD_z+&Nt`Bc^kB20WMDZ*;Z6I21T&1rG1L$8L1q$n935G z7Pg_R=7qt8kkqxdPnF(GufQz%5FBJ##RS^U{!)4wO>8Wh6k<*w1(UP4! z+H-59_vUVX7~>^$_*L(X4P2!ET!`558a5~qcJYJD)ckRMZgqSk zr5_>h1|hwDUGKpp=#7;ZW&#h7bs5@KcvI|0{lG=w4w=Y<*Z!*IHe8j{Nl(1mKDNGA zKh!8R>JTU$BRVD;bV|&aq$xH|CWp!_wtsHWSevS@N2jLYJY~1G_&Sx$1Md<3Ae0_n z#C!%88r78+??+vYjV?(hshsrEhWxob{!XI_9oi^S*n27+%FGSv@OuicI;yIfe-4z$ zGG%qdKuy%B(c~^Mk(EZ4KEtG=xEXiErgQ6D;hnsOX z0k^&B&6+$11Ga69YRXE&2yfSJe%bt4oRuDYw73BcsHZ{%^&g@xXJj5H1afyYkLYFq z2D5QhnpRiN5OA@O9)_M2aer4Bq?i_1RgA-}Rh+4OPg2X5`FDB+KP;&GdUw-p*Bhr< zocdd6s~VcUeyyYY1L*Zk-^sKz9;M%YUmSmkG8AP4Y~S!8!Q2(48LRBiifab**A}6+xUOiwk%49G(`y^?pKJ~C z$B{U|fqvq(JdL1krNb- zTq)tgN~EGRU^T;-_tZZHb|qF}FeN<-uVWQEt9Yjr892GYTNGY9cx<^;t&wCmOJ9JO zVZEEss0<6^`~?H#DyQPiJRF1QZ_+64u<-Ea{KX?i0_I;l3jU71=# zj2hI4DZgIC5N^SfH+HMb-;nt4NR*UdFv%nbV!}Wefot^Y=3_p@l)BOae zX0$rK4ru~fR0i&Xw1Uejt)l-ZSd?U1c<*v=tLV=5*=1_q~q z!p{nl$C51-UR*K#lw8q}iX=-t+c*1T9|GERMIaKpcwv#+CFJOyc^WHryf{S>D*qx9 z#9F$R4Mic_5G-tBN1{Xtd(Q+f^em1@Y9}NEX2qnqAmAg=3pa?G0QfE*gK@;m_jCG_ z!wZ-h&ZdugI(ZGE`RoFCfPHZU3`KEVa&FivDO5xpI(Ifb;d8nX&BoN8IlmM^N&l8D ziv2Z)G5+`kV$RxO!2SJ)4q`kt%Q1JEzIZJKS8=iP_#NB2YqwUTAojE50`(G-SDVhL z=ikwQ%ZHhoNadklY4tDoy*qik%=P@z^_k{5yLq$ePC8y-Ld^;9FN$4+i!r3wDQ2zQ z&+n|xHhLSQh_{Y&bj#DwWi-_Wrz+6YiHVZT=+Nh5iT*D%nzfx>9tq^Z0Rp%iIb=Ag& zy>9oGY4j5I2VQNtZTW5N=IPyc@9jRK2xa@V+TRJN;tm1lZQ2#8?eoLxy%@tKtZ-e7 z?FX4Z@`U}AXd<>J_ z#IL&_9a+P95=Llqfkso@4q*SbC8WsA7{qP)h1t6R@d%naLe|KLgjT!8mY$1>&*(|$ zxh7R&qy-;8#BsepCq+NlXI$F@)TvjKHtbhU|K9NyKc%sz<%(C#jsTQf%VTXA4qX{| zPl(B24d6)gLN1Y2;h^=-tR0#B1$rR(4Up2e@0oS&e82cQOnY#7;^9^Xd7W z-+aM-D>dBdhw2r<0E+c#YwvqHM*tAotzn>ae`5;lcq90)#m{=_~8n!VlTVsdHV}>XkT6= zqnY}<>!3u<%EbAQA(A_-YX)hr8D#}20yJt~(^@!}V4MUav#h7mXh}@7;nECv%*2 zhGlc3mBZ-VgyE*8xr*ZTmK6|UP>{=5a8p%h~`oJ619K+WdtbNf$Iib`!6UTH}iZPo`2#E};ebR~Z{xYuJl z?hqA#1;5LgH2|3YEaxmU3S%SIHkNlJyOuyWWdRqDNTnrF%RjoJC)yHqeBN12gaN^_8zkr9qlxW`kFnJ^<0K58Jb-E{w!-oE&n8Tmowl=3YR+VaNUrG zxeU8fod@HrD*RyMTqH9qxfPaAeR=}raIDIT9qny88W8W6G1#Cj@B@b=AmtGNzL7}M zsAue%d9H#NwU8%9HjsSywk?>gwcpYugJlESf)y$%&3-bJiqtnzqN#-x(T|eER#B&- z80OG!yj+(aX}*zQgvb1~Uhe2ol|mJ9H@ur?p*wpbc=GhZ7dTj16Eo1w{cBOf_~@u| zS`)p#EzYlnp)M)`nSd9_F@LEjWV_P*>M$kZU#3{r(oi|4R+DFYoTD^F;x40 zcoKiL0nU#_pzBl6yLwm0A!O7*B%lte6yQSe5E7(j)f%|K*)lJi^Dk&ZKWTC53WBqg zsr^jh+*eql_Ic0T*#bdo_^#Y6b2bhrl{}l=3}FzGBPuT4~Z>my}z5EDA4%G8!Xhz4H3wztArt-Uw5t&C&4s;V)v@R*{!Vzgg} zvl!Mu-E$eNu+dq;_4hIb)DU0J82+jVN=?07NbiaX@48e`6&dhcr_*1oY{oaP}ayUlHl;jlz z+M_lCE0SKzH+nPWP4uHJP1E>OFSxUqodY5CnS8kk+Ssd@bnZwjnNK2rGW`#bTcntY zw;%6=vk(c+vDN1qjrFd)?l1aGk&NOoBc7cb1H(C-1jk@MLC-KR4T2vBewdHM4i?%6 z`PW)XXIGSR2O3o|U0Ku50)KNGT;&r6oxp!}f#y@hzgpt1=G2rC`AsMII)(7q7WDFr z<`gl4L0IpL^XiSzp$AmTMwwl+28+#PuIIXNzvIQiZzK4|u2>D>=#u=QcxJ^SccAn+ zzya1`_#D-ou|ZK?&x6&n#0LP1@IIg$t*|9*8CB2G&^Gn{V(xrOpbTbWg`-_J?W^bPAn_vRO`J$s$gQ3RKS=Q9M4NrfJl zjwh;>+=+<^BRClD(493xRyoHDBw(RmIh_fs%EC8xYc60SQ`X+98`{(ClUv#mYr_SY&pzP7uInRaG5Nzad|w z<`Uu^rfd&ZOpM-{AchyHPmfC)DlN|VYMwvds8+Ai)-}HfX7^x&R#L&TyPR=V-j5L% zOyf)`jALW65-9lX#btm=|D-qkI{{uR?$$0{q*v=t8ST`WQhm+fFgq*@bLV{$i>tUA zTlv*(g$L91h|?{d!H9kc$|{2()FAE4%sFN+&8N#D)$C=TCQ)(mWyBngy!Y?P2sZYt zL7I$bVkhm%*T4r6PIi?iu<5)%ocwCl+JiH`W22WkJfcSc-kRq|jFgokS*S#B}hg?>EskvhfsO2 z%p}6iKR*4*qdtR)0Ay>vwAzsmkHds*0uxrsgHsH`a*$|3WmSj#LFWvUjiDIAabTxBz@N=r9XPZLbE0$$82H zR;@M;ua?$lrx-gWBHvGMQq7#%T@X& zGjmY)+IK{tnbQnnkGNu5b+KzV66Bi3K}v+aZ%+w@%3Sig)V^Gh3cvNYwd{iJNL(+y z>j*$1%<>5u=^q13Wu;%!_+-J#Y_53cVrP5^xfJfjp{%Q_FlN|pdzX9peMMwBw!LCS z&dWlX-Tr|oKuK1W0~zUfzp}(k`y?Qf`Ou{AvDKemcKU5csac zkY}O!CDn4UyLz^;IOZ~cL-mxjS*dto7BnE?C!5lJ)n!jt6N-i+vYC+jxBksMYT?gVCFaFsY~wgb>wDiGa~vC>SG5tLY&6 zp_$-kBrgzY6IH#F@cL+MS}Bonb9V`z0D2)>B3Af^6PVtdHv3cR3xiv(>bivAG(}F7 zxVXTgc(S1WC=;S@vihobt8OZC~eBxy`IVHF(bm0 zbR(m04NyJy!PM1^MSGd2*+AlhaE5X61z+Mv3q5eOP=`720dfx88&WN6aTDcyH@<3v zmhW4XU(ty8I(JW1mX8i)c*+Qa3%$8y1VDGd7d}%=uz`+-fg};JRX87V-r7bIGompgZ8DHl7EZ^=X`dZ4h&?pFfTbfGg0s*yu;)GT}acGQs6S zz2Y4_`1!_;SZ||$nvX8TP_A&pc`m~z&4cd4AI&I&m@^wXHcCG7MzH0zH$-R2E6*vq zb5WPOSnVid%8GsMaHs*4|6KS|0QPw3ro6Aq{*0svxWe zq4+AeFSOmVqfSdBJaqCC`sQ$XWz%Rv4Q3thzarJQ=)^tosjG<(5h1^4*2LO>GOKrP zT^bMre%QgXvntjDmL;UV1iW>W$jmbR)(k-^38Ti(?jax@k1i-_h%z`!2_OY|14-A~ z5OGiJYSCDO3j((%QV|V2iL>KfGrOL7h6uDvOaoVZq-eJvxP3%d+0lpR(jUy!iM14nD74sV z=Nn_Rs4f_kcX`NWA1@-{C8AQZ6GU&XX*Va{t}by!zd-$|WK zFeLY9{04ht0m=s&CwuZr81_cN8lc!|?rd%4-cbo9a%tVwlOYeO+7uOiQuftgJdj7* zj`ci_a%JWR_0C!xP4`-XCjgI-n1n(2$J0M74Q_n&?|lF)(#`I827$llqjjS=7?Lm| zl%BzK<5@QUv9L-cx&`|Dx^0vc|wvMg7jP>xbeE%iy1a+5>o&NgrI47@r~plDBZF@^c$lGwWU zH8VcX=P3c-5>3_4uNBh~Mi_7u zQcv`em!*#+q(y)OK{_BF(=;Cf@Zy=BMLjD{F-lj|uR3bckT%26%Q+px?w|~}`&_w{fMACw#qRqub4R!6Eaaf35;vJ33h0ZKm=;{Saxcy*$=bH;FN%iPX*3rYs~SoQH5K_ z0_`?7jGx<$?A@l{Ol41|-252YJxY=EVx#N6kJ0%QU?1ukkFJWD^TTpbNV z>OilXcQoGMN>JHpa3b3;rXU^5@pJ9ITFeK8J_lIYE~XNAri#nY&c!KueYP#t;dR7P z=#40>#fdD{p&Zex8<sNFuV z-0(a!P?rY^LH#Re*qlxcf!;6?>OT9K5_qWE=5z4S&{AAjqNqalVz>Ay6ju#1=I@AF zR7Mk_{H}uXas^Dlt}&22JOVjCfC$EBjX&NmWu&P3Ru9B1>6J!?w=N&32`uiIWdDegoR)((eQJvKy# z30n?WB2u&7J3iKQ#oPK z=TZ>G1g(x1Xx@$krP6U>jsswIiZFm|ad3LZ& z+ETvSX~gsmq6U!F+aiJB^*)}70b-9U4JcA7+)JtKJh(|z9k$_8aA|WO8crhEwIeww zR!{CJB<~cIJv$y1Lm%|GUMfg`X*efOw`zENQ{h|Ax6?_bZQ&gXaX`+!xoYL;C4CWM zW$xu+MY*Wq>XYzMPph3Fw_pK%!l~mPnWBsM_{&0LB3EkT-m5oSg29{VwTWw8H;8*E^#)>JWFJ{S8tR! z300j*c)8bt#giTJ)>nW4fPU!Pz)L)3latUoVXN(!2h*U)6iC zi4`o-$^EBu@0?~))CM#zrAQ-aYX_Swcr6N&nGi47!sra`?rL($Q?xI4vu+)pq zqzV4J;1@iszGXsIhI#Z6j@OMtL6J?l$Qis^TBXk!f=wgm1YlyQWbM~i9oVp z!w7dfruD|m<-1N+6>8~J2LSN}*jsNl$u84;Kc9|RM2DTju@G90pY`S{ZbM$6oh9Vt zX^+$(jJMyX>M0~cfNGtUA}U8gGfAV-xf*?dr?uEFr!tTs%8_wM38M8dzUPVAjy;-N z0#$oj&~02ZKn9m8Y6kh20>TE+NcCGv0|Z{1HtwBw})Lw%y4KW zukL5C-aB@2jG~LaSI+ zZ=eru8X}N|_qLg?NOj)0IGT@XJ+@mJ334}Nbzo*%-NLIfT(|H0dSieRs=tl!9<~Z9 z@C-4q&GrFUg~9Ew^Xwlh!ce*TXek}Aw$Pa^Mq}aJ^4wf67p-wt4|7v{mONhTbq_Tn zr{qi8f8(dLw`@%*PlGJgCWUV@$qbXZ>Zwv@#bT5oWvcY_GEjG@#+c{_IggP&R_j^F z9nTORq=Jds6^`lQe~UgoaUj>!+0f3AdSv|FF2$E1Z_+qtYVY6HtAc|=0S-wm?~`C} zWtR_INBX4Tt11(r6D~PQ+acjw6>ZNB`%4l%vzefQKIveG(psyt zs8sV(lDo=issXb@+5e~ABG(MEaqC5~1)1P(!T?r*EtX`bjb-H4GVzfm&`hkMX5IHD z%10J{R+&7SaW9s*F1VnR{$5h|Jm)0UAWscC^>5rz}^z2vL-g^-IGOaGU1A|)N#NBuZUr)`aR@ zRj_SF^45E*C&V%J4+Z1bf1MJhL_rdoD30MzQBn~>@J)I(F?n@~438?RGGd$MbZ*IS z2FBW$Qx?uH=NRbD3S4~y_7%C$ekSbqC_}yC*V*IXl`iv_S1V%PWn3>ads?mkz zi{lP*#4K;Pj*0AObqQJ8D2qD5A3WTQz?tgbJt0U3=K88#|4z!Ld9Bv2=Yd`+#0M() zN11#v+v*t@0i!&>4Dz>-#J{hw1IRETf74V#1LOJCwkYvrigGmm1D^8`L9n!`L@ELN z-f1)phqB+dQ82Nw5QC3+Pc$Zbj>Kh^`%fxaYsrU|sWX*X=TV5i>Zrj-V)i-EWFh>J zW5eOQ^AQU0K@?wNO5-8zN>PCz2`5>9t@7T@+TMnGa0c3gCcalZl@P2$ENqxgw0R~V z$8Cas%SbJqf8}28tTdzY1E_%Qgo|_aw=^{%8hD*8XgSIW6EnpW_(fIbv zgwyBhv%L5E(Me$hqAh{}CH|1#cCL85P?;k$kEc=h7kBC(rDcRV+DZqJ&$;V<=Fqn& zRFAy9Ce*BwTr{NSrI9hg<71E3Oza+n#HvqR)}*Z9=lCZ8y!N434ENhiE{||n*|j^u zR`LS18W3T#-0d<0xiYwAG|xq3rJfI=Icq%2Mp(iK6po<{&4-ycs3+7;z(>OxQc9ZZ zBF~D2zQ@iR<%iE^CL5tzG8s_@;TX(g75|XQ9h!Re~6T0z{1?1;;y=$vwziNugPH2-CMK-=clxON?XV4B3UzAqcs;#YW8O1zd8- zlp8;Coi%yaM0f3B#`YK;o+Rm zULO*xO4l&KB{?1}EH%gFf+5W4JQVtqP@Wg}_>Arme^x!?+^kh{ArdpH?`J|%W(D@y zM6v_QBO@a-@P>vvyol^ePV8tJd(3WMnX59raRkSj;MQg)q&SXyS9Y7tkS%T?7w6L$ zhCZkbyB3cWbR5-=zIDQtD50LoP>H;yjB?x$vq}uTVbZy7ZWIAd?87ZREjJarvoJDq zRcW5Y;cNi_P69G?4)j}ksOk~vt3ce&kVOTr4h#CO2oImQzFj7*v- zGEpcXAYeED`|Y8RN}hoWRgip=Mz|KZv~~6v3tsI|Jxr&s;ZmhzI#*Chl~Sc6L#p8v z;UShc{`S{SXrS7$5Yssx%0ZnX9=B! z1Eb`6sUW2wF8R&u}h0gaY>8HvYvm(o%tt}+hbwAC~G9PPUhJp~w!c(JKAqrj{4A0((CZ6zdx z8Jcr`v3>Qfb;7{}-1cC-yr@1$c_JV*E=ydtsFkc*=1X4;QD0=SLWDMMJJZrws_|2Z zf$%LYnl0WP*t4j&McUof!Vb>RMi!4LqSQ&XR%|~L_xFi~AuEaHVR~riOvXu9vEj(a z3Q0r#0mQrM_Ta&&d^m*GjY&RlcDUyNML@d02Fy~0WLybC(me0}eH66mOI4Y@dXFth zUb)3zAt>nJf>GhKK)1)+s6ON!F0Ctj{l8)egV{5BqhjFpsOFWy6@<&8kuXxGz1M&( zkW38!F<8cqpbzGe>qNf$G`tWMe#q3wL}9lYAU?(fZe`8`Qw{Ek<}X~cP~xf*f_?ut zzv2eUpn}q5uz?tvt3Fg|(*>CurJ&|UU%51LAV@=D^wHlIoP0S;5ppK|+6>XQ6WX~8 zak0^%=QwC?q}Ku$n6ccM=Y=pB|I)9a1XnJ|{pV`P^^1LQm5$z8uia@Uk5%%2Pp6Wc zeLc}ey&5qb2lH(%>R5T<$L@YetBo4dl__fQ*cwZ$82(p*CMSx-N5Q`d3Qc!B`VFq>VZ!`G$b@?T7!buUZW`k4_1|hpv_lOQ*O*N}4+Xsnd zYtD(lW z7_VAs(knp>JNDyN|d)ckh|5E&msFZDF zB+*eg?x?4S&2B2)Dn{Z%y?>r`L;$;c5H${|aauU(a5isE)}DahA#tHZW~}NMMb96? zw1&tz0OrWcP7gWASX%5qn~b*;=8yVzFyBilab%rRK8^Z@r9U(eh?$8NgYNj4X~%G5 z6c>h~!xj+AE~Cy`L+C?#ShcUx;J=p^LDI;A#mpgNU@s3oy#9M}QJbm34f)v1A|ANc z?^YIw5)3K-%J#hes0ffVuZoPQVnJ>UX-W2%PBUi0OOEwsSi?=W($b1+AL`V$R?8Hg zgfIQ~c>zqe_}wLkqH$t+c!mcm9e0kPUTR?!b-kQi@q$!1Kt9L>+SgSoy|%Qv8e>*rQP`@EQmh1$Z)xUPcdQSL{cP$WM>|<3{+iWYQ6FDh`zFS4$++ z$$jfhok;_3c*=?XXJ$_=S`P~^3C4I5VhUJg6vQEG)AXEF)uv)K|BD%O1?_9!Vg_p$ zL-4eek$u!vrHRb$&{y)A%Z=0l8sX0e(mKSdPP4zU<_&Lw;0cx7A8B>dtHpnJ-Mw@? z&WiLMb64d?-Mhs~u_RmR7BN1%)bZe4lK<)ND)8r*=G56Q4vy1dgF&3Wr5Y+y$D`ud zZUx`hO+#emM+F<_uSQqTElUtqyv5rg^_nfjkgui1Y3O0(?|%V^bs0VN-(Kr;ir#G$ z(;OD3Y9p4jU+C>QO@&`#E)(AO=|uaQg$int!5<8R4oTsZkCdYhi99O$By6bqym-cX zLad{2u3km3L93Z#c1ya>u$`fbiJ%VXio?7Z=feNa5d$3W%{McQc>qE6yF22;X`c46 zt}s)Kijg=Zb9`4$Ag|-1$ICs1x9^z{I=HH-VBRx>HukI{kbtWYW963N{-P3U3-zS= zDh#Kg6;Vs*0_^Sm%*RnuIh6|u8&Y2kT&7aRv=E8z6dOf4avCX$%JwuWN2ZaPd(dNRN{iB zDGIcOQwR)9=#EXL(Eoo5A68WOtkmhV6tEE%7 zjvGA%kgH9S38_e&U<>sdc0=*C?WGDt-Nim{N(}c1O<-pX9E1SFcM8}&wI=qrlk_`W zkd^YVbDfRD-l^fgq=~$<(SndDq6Sy4OR)I9T)ZTUr_z!Q5_I|r$0{CQWh4e_c>wM~ zf=~xkST*C0$;kmTDfn%;Toys3-fz2CxnRAy@*daf%Kzu;+p;mZpx>nYab;~@_ocU& z_!vk|y!4R^TpfH__W0gWjh6lKyaa$-&#n&zEU)`k?VaP(rwIE!-q3LGD=mFit;)~K zr3SJPtH}tKB^_&SJLc0J1+~(7!CKUeq8&cpW$8`D5D(p@>r;X*RY-o0hB296cY@oM zkG|n#<-7Lbu-NhT-}Vms&@!a50OC{H$3F$5DS7kCh(D_fVorIL>A-eFB^2GqOnpv8j+f4WN@n8Fa@#=iytF zB0OF9W$;q{=w|cz;5$5sYIoio-Vh&a?C66M3`So{fTu}Dv(*bC8)-h?(AJ{pX@3G& zMg#9Ch~+&INVIHvdb-Tq2y^n=ywsXi2qUENQROyA)Ls#C_hIyS2pIV<|Kjf;Etd}b zBxf(Btm;7u?r00&vs$H~vVI%1ag?04AePeiu(tQb(xCA-8~)Wq(|2zK(xx^b5c+pdk^6IwJWznH*R=X#k1E{l-9w zr}R6AMiy8@KOPf6NJ`__|COsChqj)(2GaND%meV>k;WX_63R`lmf!LaJE1-S%L2y~ z>Y~XyKANHQrCvmTuRR70$5kAMDqx$qda$=S`rHQF?_}Tn3dqhwO=%W(kfz*m=Kv_p zoEmxE!;|g;zR%n1q$SuwgdUa}AkH_T$L2Cu$%DjhK*wV&AW0kOD32!bf2O56@rA21 zaDGEz?ppfNJ{)V)CwMRZJ1Ff5ah5!$BYbW8X;ogTLt!6;U|t1p*=oZqKUZ5@x0v_P>pl>D(u56I=xi! znRH3*lAS1+Srk#gw6zS~pSvtyfY z2~6kzjCgmQIy^(C(#RmIdIDZ5Z`CIw=jKH{ZEYz?XAR;hnNvBDdy1ya@*fnBGrASg zTZxf%xld2v-fsO=o#Me0y*W(859gE}V{1I`>oAQV1`6$Noi))gPZNac5i@t#lEHUT zW@fl}ScwK&PiC0qg<-YBA31lQ!--B9>s9g03UxZf6yw6Gu8k)U$EVM_von+?FCbfc z@qKzB`U9atTzV{^BBJM#Z&C+ka7d0v+wqA!Q*Gkrc`&T$ri(4JH=85Abu>*xDGGI@ zPaUU`wuVrQH@L$|jL%e0-u;K<98iOIOLe0Ykt}097Wc3vC{qDEi!_bdM6r%>eiS*x z0&Lr`M`iBq6E0e?V)Aq+l{c zv&$EdrlTCTXc;XHw7VaWxyU14(H2DByHSEc0w{Lrl?)m^cjAJssjV`5&Z`ZmfnwV! z!8vtd_c*ef6aZrWPD^osDlfAkD32IqxP-f`kmRVYml7~2kV)ip9 zKZosuME-Ro$wM_yv3!4lwfL-}ixI5yKq`H$LTjqTslKqJ_t?W{&T&0 z99>U)AMt5vj5AMTfOo5mPd(3DTV7~JQ{cnenS((B1B`HCrnHKiw1 zFEX?9$dXf!)h0STHXT1K<8#c;&olZ}Xe{ z)dj^p4EX`Bn&24QLUEQAUHn>ZBiHK0$7E@9VZ~IbUiIN-I%e;lX^|`NK4Liz* z1d=>qpiE`&0+!BO{MoJm+qO4YTH}Zh7knR!?K{FWau5h?LcUm4vQ2Mo*1(u#ZZjaBTk#yu^4zK?~zf+|2iVMa4%Zi}JDJQ&h zJs$y}k|FWgOv=uP9pnC*6@P3`>kPruT%CkfBDvX(rp6VfBP$i6<3T7BiqSK8d$#Xb z`(efAZSv<=vzXIBIb!xlM-xe9)PZSJ*i8CRd68kK#QhH%lux>2;O+N}WM?jIK9wv6JQ)lGq8?7I%>(0G7qygP@&@+>hZ4KPMb9I(6m1f@ ztAYqwG=zq@kySvNe= z^Ac(2_vc^^`2R$}Oi=_xjkX+Ve=@7=A`b(_%V?zXV5&!FJHdbjC#pYP=bH1Re55_7 z8&ipnS9|WgNrUIdrdZbrOjYJ<fv!kEUvsCly^d1}*?h+#Qugj33@i%Il34kmu&^I7kuX z3HG0$?~@lq&`Y^ZH#lw|=c_6~;VI`YO%e}AP2zqu#KyZE;>%jtLk}B)Wb)*OvDsWZ zdHC}XCuFyQ>e{JQq00YpzRW>u0{WWqQb%|OdNy9Ny0Y&1cx>TwYklPfF>mez z8$o>(WkuRf!JqiWf(=u1<^P2!kzM%c)<r`J7N!>>n(V@Ni*8UTuDs=PE^D6Ss8X~V11 ztAsRB(#28aE##wj5Sr%H%<8&{6bM(=(jP^Tcasc9*NhXtcw}XgpZ|wHlY0BTxh9Cl^h0Ni-lgQ_hMZwczijG+s z7lDQD;4=mZ5S*-XY0NbI+1@24kn<{Mk#K+C-?&6NpoN0pTaBB!|7z%K%W-cLN^*L2 zm|lcp?ur3gnHmvtFUu6L8DDxNDhkJI%>>jFrAbE=g9%@69~d#~W=K{yQPb@WiANQn z#0*P7ra^5Lgs5GgN9YA^Rl58p3{DFHdw^f%o0&ByI$}UXWyv#%QPa?bfo0*rb1&{?>>^nJoH-If3}tz%sH;mYovlgf1Jr&m_j z+ojY3O-xU7I2${tVzrf8W#wL!{BH4BEJ5)677Sw=op8#1&96?!$!N&sEMZFe6*rSv zF=~LfqUuV>I-_#$Z|?)GyI8&%ql|1Jq%^Bkec--D&~7C*Yy=q?qKmlue~tl`9ri*0 z7rr!6ssLWl1ZMVgwH;3E*QEWtc38}96 z4L(&aV0SvxE9}e&lj}hRW&(RV!(e4zd?nxfpcN)X4y(oaghi6z)($BR_r0WprLSwk zI8q`~A~;^qVHk8uCERvwtHFCFt_F5dKZ0BrYjQpIuA1N4Cb+#6D<9t!qsZP#OK1$M z)pVin5P|DVTwDUXy|E^)ewR~T>o7>UdDZLb3aF&f9Y=0k zh@eC2wT2~-2Z6RXnGmhq|K*m3NwI$9#IQu__A6l(l`xm3@txg?7>fKrnQqU!OIb6w zzkA<5M)Kj_8uxw-(Q0Pv9Ex5OEDB#X@yxY-_J^{bOKDRoVG;PF;9(ySX=Auf8cofr z1RWL2C_3kNxcXJok}pD#JVqBXJ|U3d1d6}c6M%0Ync1a;m(oKe5^XqnRo=vc^M71e zx8v*OXzW2AITVtyrZWtE)_f5oR^>sY&DR$jF;wJ{BExqaN7K7Gu4<4*K{2e`FHrU< z8aBRrDTCSQmiL8)0i2kjT{K@PMJr*WXSVM3P5uVjaSeUjIM)TFPlI5&i0krr{d}l^ z4Mmc=| zrPSE5_u8+hv%=3#$*JFukqAn%9XBB?DX+XHO5doI{pT3j;ILSJ^+QU;>G)eL%Bf<_ zB8i9DADCH^t`toJ$vu1OJM6yUA;{y;3hZnXN^0!snORyQ0vt$dy@T_(P;}wlTU@)1 z4?9Xou}x=>E+is8Z=>IW37bdqD@7L8iS^1;182q2eL{GVDN$!5eg&#&h%2SH^;NZU zz)V?Pcg->3w#kEYfor8k!Ys}@a`1R<2$}>gc1tZS#1Ln;o=jiE0i`I#>4JFa^VUap z?|SrJj5v~cZ>dmf(8svQiyBBxc}cG={DxqL*3NBp3P6MOof~hoo8ug0$IXB zQG9&FbgwP#iR^3TW3`FOEnaXISv^fHrL*n1?IzW6)v%X;!AyK)M`IM^#L3rzuCcs2 zcA4jOby@Ggmz<|UH*2P~gkEQjWM3a^QWR2{f7l^SStG*R$3fy}^toQK3S@r3bSRqG z>BisbpS;Hfj7O&Rie`|NONePOUYz{Xl+MYZ6Ps)nv*+{;tLHtOsu zbhYxl+CrhUV;|<;nY4?8GhQ;Rr#nMa@V^3GX@_KYo4h&T-#La%nvnY+{lZzv0f4ns z8^P)S*xl!z>?^E7Tt`DTru9S*ET1J6xpO#zIN6&bMsbELmtOvlYCK?=jQee|vd%PY z-}1}Nn>m3|^if%(&y(F08n@S|RrmH=*45}24$PWc;Qmh9Vku$?^{RdsJKM8$i@BiA zx<#5dI9fA-^hI<(=#kq&+fv$*L*h{8kd$7rbsu2yNvUNHc%X(ci|gE)6aq_f$_)&H z7BS}9sd`7sBx@bxV+Rz%HV_Adhma^)u0Vi%k`FrvPin@c$H+sJ>kcFE00Jg?LZP;< zqJw+sFqR5wCkdEmxf9OU{fr9^F@l~8fLlwF=G*X4hJn_B@Ph(F9u{3LWyi3albSeN zQ%UF@xrlvxp0o67?~QYysm$p8Wvmf~yTY(Pc=d&u!^x%xCAH+Yv>g%b`+y@%2&j^n9hd}LGb6O6Bj&U=(0=7kH*JC;;7PjAaIS1zyIZ%)JZ8Z6=?8q^I zt7+R+P-TD}6TZcHsK+$s^_Lr>9!DYI1K1~rlYARNY;97k<87cxSC-Vxaox;FRuA*Y zN#iP?=vbuf3Fwr}2H#({Z;!#d%9~l}l&AvpvIAn&=^8y*8uRy0jc=x*Kw>51zi&LO z+BQPsc?D+jHT(nn{!)%y92)Ql2tD9qhN-wNcnwMSx-3-UP zp0xAxP6lZ(aC0h{E1aG_BOfnHpAC;IsjQ%wIk5Hj(m60+lv3cLtHznU9&odno9~1@6vd7hb;pM zG$P2IE^qrytKr{Dt7AQLb8yRa=wm5=*z*1%l869;L8zU?-4!}AjBf35H)=Hdjm|LO zKBA2JiN~zb+Et%XG+V?y$hZu5r8ju_SAF@NY^mMtAR#lX;T^!*Ts5kdaYx}a|9wwD zgFN1FSJQ9=QSj8KbcJ~uzY2{B28NZKaYm=6=QXuM$uKa|;N+61)ZAGa2H7-$t-8zcowc=TsEWU;9Bt^m=<6t$! za7l0GpLMhUBytzo&7)!Sa(1#<=;^907C}0Z!2_LKey)iHb#G~jgNR7hF05AkDBg(# ztlMtF3p_*{^)Bem+V4qM{JV(_oV1Bdgh*`Bi)dZ+M#U$?g#1mU!OuuLu^5XUhPpJz z%#00&zic$_


_6M7WxJ z|MvDsZ+d3%*ITZRJp+@Yth)YTYbpa70`x9lUxSMhG8Jfc{V6LwKb3WiFeuZ(aL zE6TKTd94bJ4LNK9zIk9vJKP*K%tp@W`t)8w0#S?A5A}P0xdlrTK+=a)4ID5}TTNBB z&&~DQl+eR_ccPp8#^>9c%<5iVX~aHZ#*xM#t7MDu{OYNg$Ex_{7h5F+_csW&MG;5p5fN0+)dQYg z8aspUGc!?Zq~mYBQB1th5~gKoi54V#;gha^s2Zd1t}f@f-`^9kz#)vQ817uiEpLHY zs^+`p>93kYho4KYP9%&4ydE+sE3WIH;aCCK$!zlq-ls2trh)4~RoPuWt)*G2Ec-xB z{jKXdV4N?@xVwqn7|A?(WyW{ z(V*aGSj5%tO_pf`EtHjvyL1g)?e*a?@>;1Lol+rSu=crp8Ht;)1Yay^{YrfjX5*Kq7#ae|eQ)wNvdk&zX_YH;wYjl_JykLzPxLPLEUgW`FMg zCB(K}KYM083rn-KQP&})KTg#CB8$0feAu(yeVMt1ChAacI&{B5Pl*L5SLY3jwuS1X zVLBrXg~zPkU6Ud1Bje5PVBls{+}e)u?>O5oY4Tqj|W*Qo6=T_YeDM48UH%WTtxG6VsjbWn z>@_nWHAr!^C0vcwE`-#flzNs*)&QsJ)rWrmE?h+IhA0Kwsk+sF_J9Z}^8Rt&iNpZ( z`F}{8g(Z?!*R*gZ|Ab+KsFVK3-!QgD&DUg$uc5c61HiK}{<1n8xBW%KNxzZtvXOI> zVn^j2s*wq+sZ5}o2vmbB?OuCR3qtjx$7&(OtQ|5y)7d{43Ym4d$H~)N1gA(Vp*f%K zTMOjaGWM_AfKT5(d%~v-Y{EyB?Av;X=!CN_pnAx`HT|?3YBWrp3Ow88So_2@DLaGT z%1L6u(J0Eqj`ilh>%0!?-%)>HR>j+cKjgp~kxb)`axNI*TiVd8e>Ih8k#e6~psld_ zqFRu4e6tuC6k%!;i<*i{x62Y|Wgh3ztbsE<7KLg455a#90XSTjzeSGbgy*chk0ULF_NlFBbkY5K{)b)Sa6khxPgzzIMY2rB# z!k(11)x|nN=Q#VkUok9$a8>i5glWPjN`A}nf2MYV=nZ=Jn7%eE3OUybeLBB}_UKRZ z5QEH(iTX{G$j-`${t`ZLy>1P38XOsUmD_mc9l>kfl z4Cm2{*4NPz2$CT|cOJAY&%EFwcJ3Ay;#@`)pf}Y;t${R~w^`A!FO;VUeW} zbdT>kp?A2pD1omN+ShcN`12QT9vZ(W34Qocn_#C^U5xfVyCB|1U584dDBK;1gmvry;i#q~CySb5q%> zYj&L7x`-NcEx(oX%T@=_=)Ushz+W$ojS#r*&^;>ayf4S7uVI#jiuWEclWTzX0o5{S zOMX#(UaP@mHqC=(kp~rFzOC<%s&&a-&s$%-(4`4Eb)TEb2Jm2Zcgd=q4NC-kW74GY z7z*F%GnP&7hqJ;OXq5aHlB)po=T*0&9}GPNI=fRhmhTy>#Y^wOOo6}7j6vtI*7#sP zB5~vMDq8S2X8rMc4@!Mp3hKucnqD%oJl*6HS6DhtSz z<<)W3Po?0s2MzQEzn;#buFnv0jmJj-0U6McBWWF0v>4*z)b8!$6OPi}ic&Lz_&ip7 zYv8ZlBYI?7u-%H>?=ujHBrmMXAqe=n*UZf@z%sP}M$j+c0#V0OgBcW|SX)H5qbMQY zyMRd=I}LO}IpROwGW%RAh0DVGYFVc4&`OOJmNzEaXpA^b!zy1dJL0#GRdwnxUd0w{ zHF(BKwB+^|rkR~I862?haqFV{=lp)6se)K$`Dn?EGwV{FhB@r}{m5U<=fTk(Y2={# zO{r1VMyzWwa2ER8+RK`Y^dWP6IMtJ!AaQ>~%7)a$kWB)w2)y#nc(S>5cW_MyR}l04 z)uU-9OSc^eY}1vTXgF;^$7dVG)YBH#O0gV}rf2>^3f)1sHp7OP|#^^)l&z-pX z<``kK@-d{52>w~q0)WqJQe~pMajlk}=`*u*vON*(lv(tBL+U41`Ycsv;)OFDLa8sj z1OAhi`=@OJ!Rw_#({X@N@M(fZHCz>Uf!&IPUpFxTo!y9tN+DKrpO#pL_o$6Tx1F1p z1Maa&4=F58$4NxpQg!fvTQl+9a`G_4dv#tZAq8W?mutqd-^yMxgX(HcY}U0`_n5Qz zSi=ASEouTi3khUQ^TO((=>vN20cT|NSW--{XZaYLM=gZc$hW?NZ2mKV_i4=1?X>Wl z6xrJL{y{`|(CVhKX5u;LzUxs&ev68iKFHV4!`LU0s~IcqQyzYNy}uMbYwvZBUHd;& zqmKXe@WNA`JZhAohLtUx*)|AAqJ^aMn>6;m9At>eOaTHDSbOfDAK~z#sM6xTfDNX$GvixPrhVmg){R>po<-*C;1CWjLP+fwo!MjzY z{DI!n3_&h8m*{JS2uP(NCYi`2C`>O{hVS7PUBV^2Bmw+a?{KXp8Xav5 zm;>5wQi~v7LqA(28k?qw&may^ z0glAd1>zbIHee<=9&~I7TW^Ofu1zZdc9VL5yZ^zK5e`Ay3;mP24E|!s^VI7kI1Z5? zIB}};)h~mdym4XMU#k`Ld)|h%CiYY|~EIB1hgMZB^`0LaYvWp_iOubnh&eh0|rSCLcS5Dl24V z>MwiP}nXmKZhnF(jm2@L4TX5?$zeg=O@EMloxsFgB5~o`0SBJClkh1mCyf~bwyZsIbm|V9$!bLhA-ZJ*^BfU_fcUdGcn-LqL(m? zBT=iHpIoRpJ=JZGD{4L#b^S&hSV^G7XblgH`dO*OFxoMJ>=vkny)aL2Xhw^;kI%1H zp_z1$r-Q9uRdC-bC@+79e3}Ye3rtlYof=pbx7a6BfAxTs1UX)L#%@2WSEna0*bU60 z*4OK$y>YW%&)foDAw~fApqsNjJUb+jk6d0p%D#zLA*--+?c69ix_T331iWk0U%DoV zt(U1r)k+422qOteEfWQOa|A^iVw~!ix_;@db?XVnn4H4+{Z)j=M2u)fPgKt@dI*ym z1YKT-p+&2-VBw6v>ZqgCbpC<|;?pbQHeP0Rvykp!qUnL2N}(DU^~y%})p$J?ifzl) z8i~T6TNWyPKwQ)@8Wk)(FRsJDgv{jwbO5529<1&;!cZ6D7aZ1?>JDZ@1Z{uJK(a`0 z@)s#O>Edp6qWq7haeNT1L37fpCACq1J*EanpQfUPF?jhGo2|$z@CQd~!-l{o>OW1& zWAdjz?xKA*k%#p_WWg_PB)TieMn1P%I&HbSa+d0y9>_m$M6Ek8I=wr4Q#;bkTB+bn z47v5x(LsM!hx%*RY2(UH4tm4&wT{8PgWZivD99)p1W^vDN!kS3XSIp2;&SgtD*XG3 zJP@+%tvY@*O}Fq)LRWNC$9F;X(Y(*~C0(ueW#fIPo_}0!kksxhrJKAjss{Y3ua(WS z$B(7H@Elftbck4!*HRWY*7md_Cq$jORAUVmWEqMp`gtOcCZqj%rZ&fHR=PdI^FV9O z)gv@`mmqf$$#sd`i!v$DI@1?R%w}%`J|D7%xqT<`$p=#h6?b=|8k+XfvsdI+-zg5( zG@$K$Nk-6CnzrQa`ILJ@g||Z>u7jYh7O|Mb%$iFXKD6CTVQ-!ngpk(96p$VWyo)7F zxdVx*XCv_V%>^tq)ktS^UsgOjjgQdLVSrIf!`2Lf&4y+M6x{@ujSf;7LwR`X(f*{4a5Hwlo!nU?Ji5AqdzG9|wx+61+4fb$j4#Hk@-m zgppR|1l*0*r50fyze-j~!rGJqAx%GQ5GVkdTwp2AoCCBqk_GVa$I7{4d};u;tn-6M z*`D5omxrp8?aPQfA<%TY!ObmPN+v3e(F4lN!>rRJHD{Zc5$;wkR0l8F=!Y-IS6S|! zslyb@1npN2vifus1kQ1iIY3(l86E~KQw83%Dn3`PSs)uCw~Ya@hFsB7I#F}EhKjYZ zU^b0v8-k|8L=o-z;kznbOSz0Jc-RyM`%OA4leUa8KwV^yGIe z7(O@>x@+OfZL{EQ?e3)HgKT3~kzsfgq}b+_8Bx4-yxy4e!?FVUyuP^@lNW-gwej5y5-4+4WzO zb5$BXZg*EWp?4V-0y&9XsIFe9=bj-%HfQhe^2!O4QDIpWuv+l_Dc&(hz26;Iq$0BR zn2k9K!|BB=O~(_zr68tHiH?1I_czS|h0{Ig6KpXlVr5Bsa}GklWzFEtPEDmG;An4o zTdoIIxHLR<{By)ABEF<~R8GEkyf?n$bleE%r!l=P&Cu&qk;+Gh@aBB^UB1IuYj0G* z*;3->ii#(DI$G;8=slH;Tw+A-EeMIa;GDSmo0Jn`I%GIG64Z3MnxIvSb?&P2j4I}u`Dp}1HLY=y#7g_f;?l?=~eHl;`R6JV3{8@{q zG(axN1sCHJB9jbKkEW!F1yd-hC0pK^o97`*)~??_FyJq#7W1&ywE}M>{Y`jsC{!B~ z++XNGljQQ2aJ$s;8K)FaADeF@iwSt`X;lTE1ETk@C9gFL+Zx1=XPfWM0NlSPJwf$J zu%})3^to#P&oiH^?fRSb*3z?OX3tJErC}P{i?XqbypYGnOHOb`n349u;hSfbpu6nJ zc{aE9vp7N#xxpQShlwm>8XAt${P9xLMmuh(;SU)s@~Lzn-l?s4GLCatPz9 zE7bJuQ?TS)An;%pDKbY&*H)%uiL>aVmN!JjhMs;I#HKu(Z|tCrQLRg^`!fl-XGA*C zt6*}L*h6`_eLd)(EqA+;JYA9KLzA^48}rQEjW}x@s)8$8{OB(nj~0n-p!wP%HBcg3xePn@cfv0YCV+Axx`?B2mi9XgG?~7R7fTy3FEIZ8=j0 zFMWF0c87T>@TIA!;q8&ublr_c{eq6i$Z2b!DbM6neF&DdoJ_lXEFSSTu}YTs;78-g z>GfDKtcL}zQE72Ywu_A|Uzm@6Semg$e}&_xx&g9bd+)V}m&rAbg+mt_vNAG2!{`1b zV1BC0lWz@)Rx$19r8FmAMaXt}8RfdO{PkXlmM-D5EL-aYOV#Hz zI)8nyE+8AGU`S_D>frjL)js`b8?#sQ>semC=gK)Ly;=X)k#Xs9QL=zC#QE#oGV)QT zKbWU-vG&K3mHnlb`+KCLImONT53S3h5S9lmB!i9fdN=E&39aHP;=J5KfaB>{=*+LX zHVB}l9{hDG{}pz0dvewqOCm*0Z0w*(X&pIRC6p9BxdPZpgSN8sbD%7D*0>3|FWlH7 z&o!s-zEwOYJ^<=v(>^3klFT_R`btKa;-bW?4|&rx5mi8EaZNp;fNly!@KfuoSQ6sG z@UZH3&IE{;(FHD3<|=H>%s;Kt!q$O@iw8+gwxO-NZ5v6|;M0615}TWX6jGidE1u^p zFpNx36j=8uL|tW@-Y52+M?(qu`-x4@nQM!`KK^`O;glI2DcuKemMn9SEG&FDGq)YL zgG=uDZR#{9#vlB_=t_inA|;1L7BK1i+pFpEGVUd=;9V|^Y|^*oor-sP^^)6>v?#x1 z3pA!&yYf4K?84Ja>;fQ4P;&+S_bC1;=qtKzw=kO{ zyMi};{2j3JT7r?j%f-hUG3o_^sy2rKa%^!QEa_n{Q4xpl&FG;Av(9)#cUHH@0j|=X zS8(%;EtZhW=u$sVZHTQzc}a;Qpvyl|$kTc2w@))-h;XGey`)-Er?6)BM$3*-Huek*s^+wQTivWT`xD2AKQOtwxzmEKWg_m zM4K1XGk<9F_ur9L`de40`OlD{?-EWK=lqbCVsR%_pVC@~ZCe2W-a7I{w8?`~W#(^p zCxEnn2Y-Z$;@7OAN=q0^eiGLSDv;o~JjTuwgII-TLTW3gKdZV{im1+**3e$qj?CGX zkxv^Cx;H7?b~rDRb^l=6yt?6AybZqe7U?piCq~LrM-=&ct@0cVn;_0B1AnhMhtbQV zz0-&|+xaBLu{-@%qr=f=r_R@+oN+EJ`kN`Qh&hhJw+ZJV|LX6l8IsXy72N6@8W`uW z1Yyo)OzRk#;X1iU%2sQqx{OZn5b@=g6B>ER2;8-b9VFRXf-JL>H$gjr_8XLF{ziKN zO~gLq!OL*&oQt=k7Qwx9ccOM-A=5Lxq|%4hzhI6?n2w>D#DY2DJT8}S!Gj;x68@-` z6Z0!|U{S0x$KAtag1Rq!aOw}rEY%juJSqqIhQ}!2hRauaePKh?&U>HpAwLl|2s!iy z)nnqn4MHwin}Ouf#iYrEHv6T;5lW~oi`TtgqoRE2unLeXQnODQ*R4SM?W1SunyZ)|h8@UrF;NTDBmi(T@s@wngxMp1)kh{ZXDEDD7 z;)~ZD;U?m6Lo%5-GR!>&geuBHN{}EZA<~$|qX||%bR~^;dk~sTekhNixGx`TGfyH8 z^@lDkl@!A5?iF{FR>3Pa-AIy|+S;>z=)O6sxC(;6Nti-T z3mU|Hb<>9V9Jj;BBzS&@GMPR~}u||2|y^ z1=GyIs({fniyZ=zMy_N3JN;FDmw)M8Mf%{hCd^TO-}UIBdrygjT=x46J|1Kw9{zqn z(b|<96wD6VWRE}F4-kYOfYKkJrSpyV);WVyP47PU_6)Bqi_+UYT$9a_UCDf?Chd@2 z{L_=;=t!e6J>t6Bd-j$!(t>u&@ockBVG{>P5Y8eFSLGWdmOl##$t;60s8UI-ix!zB zrC+bBwKKyoScr`YroxKZKPh$D2q4ZHRH@C4`86OwPD!lzcfm18or)PI+(d*s@mB>? z7vn3O>TS-kUdMowzRiyR5CRHwUiiOBEo8&Wf3*nI|GKFsj)7;S^#X|g3DXr!rj%*1 zaXR*-rEm<}6%fc(G6% z0(t{CP9Lhj%Tx9PgK{u*rNjes^&D=^z94$OiYK>K52Em*hNi?fUQm6O3}i42iT60b z>tm>9;dDIY#O8q24`rKr;aMCJ?xh0!vZpi=%WIMeNwv#@B?nI?5X6RpJYae&>ca7K!acDj1t>1P%1+ zxySf98Uqn?u^pR+Q*y~s`i+ads@`0?Et#}pl0ZX9VBY%8zdQL3FWs1)@OjD&#~l0H zMqq)QA1a1x;BYWdGf?Zg9Af)MUWnAmcnbyNu>h+1*Z@jy5M&|8HvsP{m-&LjcfzYG z4DVomH1FY_i1~s^EbtZzyTqBmfizXrDztJ9`~rCD(*6^$dL3r);p?OHJox$^AVGC> zI8oacM;jPA1&1QmFCEz+(Omdu=_ifDi-@cM$Iby*biPjw$pE;o#9ZYhZY=)ux7!)8Mh5|?zban^M{Tj6$vMg>hE`#@g$AQ-{`s^|Boq-CLe(j+NsPjy zw~(3SI#t(p9t*Pv{11s&to;`rFCs)us5mff!x%C0@vUx4+o^=^QwiZ+ouk=?bG?l- z$?ysNtJ}0ladg8)mJnpnw8K4R)~UupA(LUQOVe?wtVY$}9{$t{U{a zF&AAD-`hjFDJxo>EBUFB0GhU-)+%MRSZ2y1U_Z{_6NDnkhLkQy<1$!HQE{Ws%6|SD zN<>;^O)paP7*B-$%j{25CF5S^_gEDdm+R#~LisP@JnO-0_u)#ATGR^bfY#W+|Mt_;`26Y4^^QOk^N=WNx%Y#jAr z1>?707<#bpMzv#!@m=B&HWixcV#*$Xq(L4{sc7YuIj0BAVz%EdO=&65^oaG#%-H!Q z-ZJ|_-JNr1IECx8l3)pV-@!-}uNsGEvxmxcneG7Z zCD0)bZ)7dVXRMH2(S1R4a|GEK@$Rv&uq|fQD3%(wlQjI;^JrGap+6v<-+_IN9{dc& z8XFf^FQ@VDx=W_U_1Uw63jN)_;ew@u!iIs4*&CgMubi)#V(U5`fQ{6+HSzJPV7)ZDDNjAU% zL79US@W2Qt!0~wFB0f$$=T^dS-R=8Y~56 zY;f$W3KNr&?ChhhG;mm9z6TQ^jD;xexS2Bx(qZf8t^#R54J>)2yc8O%Dm=sI6C&a)s~lIRH;U zu)mneZ!^Oyx2C77Q||1ZdCf0D&kr80>M&*RM@9h#9_}#e?>Afy9m?6190|1mJr(yB zOGW1iTw5IL_<4LE=D!x_RIT7f_e8&GU$%=rJgf?+OHQ?+F zOJx^)w={S=n=WOT5d#RAu!xmS%^PQouYN{o4$uG(*w6B*wwUy8gZ6!;DMrD0f^r@#i?U)`zntbyr;RuaJ6l+Qsv-fjfA) zsg00ap8ViJ5laF^`s;$yg7Li4;uZE1u$H8bi1LzN^s4Sz@xYd$c`&BX*pWo`7_`f7 zOSGCblrXW}$&$)$kzZn}MX@i@-_K%}yeC(lNlee5=3hO)TF9Jo5c8%gyuY|PX_PIS zMWIc51V_mTtL%a$Y}$Lmt7>wtW~Hb7MSF1yllb1<#=)vD_Fga>22lMhi-sRO$#nyR9s!csTJ2x zCL0qhI~r@MiI+W@oZdkmqP7!eDDKbaq^DgEN={B#*~EUru6x?kTjC$=aGhoIP2jqv+f=q&n>GCO90{o@$m+=1UaVFksOo(N6#ooue z$4j&k^M4%XA=_!}!K!>h>Gg==n%FlIZ-&Gcyoi3@N0jf!y@-D%t(nN+7M!5iA@u>4 zfbD7F%B^M6BQJv@kx;WEdx~R$kFKelmk^0L2J>0NZJt zr{necW88dbv8uv8_7)YPwC9C>0QaVgT^r0^T_X%5CJk#&Po5ty%GwAkU!#5DijGT) zw>04z8%j{UKq?C(T(*>eZ+$fGAD;bF)W0+IFDu3-cnBfDVQLsAJ(6NwEegXhs6K47JNCB z2lY88{I;a+I8;|&wN~h8Cj8lZ@?=IwKLn{Nx$2Wb`c0OJ_K{uJ6zY&=oBG}L@#3c} zn@lZcY5jsHg?p(N@bUC))cYLh-f6syhNYmbYOEVA`_9Jb1(a!`8P72}5SKp)Md>!Q|HiMym$DssQYtOB49K&)L;|ZEnc0!yR74zc zeM^h(Rd2{k|G^e)$2zg`Y~GUUhK%jf^X>FsOrZlm*BOj)sCpj$<;xBq zS0#9;sNgTnDDmF5p2W}1L@z=up>mX;Oq3FBHk8cySJnOLF6`^`ulmasu2()bkliuJ zEVGYmoSoNOcC#slOcIoEw3m#`0`PG-bM(HdR~g0?Zx1In9-`I$IG2p zelvU)din6Jc(K(ymmkHkW@$z>@>y7(5NvR$SmduF2Ccx_>`YxKj&MThw^qs@VhX*B z4`*x;-7ETCKO&~~i>Er2SeRNd2(dVSt*o@cWaV?&7ru4Z!nxI|YT6 z17>sKu5t$CH^gY+S?r38@eAO$ceH(&f*u!Zkm>;LTEM4UDEdGXPEO_SJBqs; za(7_=2zMYJ4nb4V0=4jS%avv^l!D3G-J$E z5V#RHuOCn1_bXS5YCOW1t>X-^Y~2`vK0vZTGW3B0D-oSMmy2L{m~u~Y@V5PTxZ;#x zm;~4M3@!qv&WuHFUVZG<;>oh~xB`3$sS2_b_{0QVJ(P5Mbqa`|U%=Q%z_b4c@+p1x zQWBN->~6-=H0C`;wrZ|$pAN2|p{Zv2`=y$)@_n5FZo5PQ*g@g4@2h(tO6ZW5-Qq5s z@0AB~FA5-}L%7#|Z%1wRhVxK%PZHPX#wQRoy)ZPkgow-AZu8NMv`XP&Wg7BowYF<{ z#A!W$#-H|~{(n5tY6t#;k>(qJ01t#9yyS2=0%nWc5GxHu2B6Fx@R&C45bxzB799IA5B7`j9n)iGTp!(@U4%5;pEg1b#Wgsd=M< zN2w?atg+P%r_Llql-b8gon20Wp)_UAks?C$j$zQ^WiGr`qA?-=K7>t6O~YN!7E#n~!=Z@Qy7TE&gvsRrrcd5ME&l*ZpO2N?1~$19 z1iZDv&;bzUZo1zvq8GA3^9CXB3ZP?cMTHl)o#XJR2kvS+@d@oi!*aCTTr_3pSSxM zf`p4&RguM!$}OdbKd_ae87g{j-xXcJhts7DbnAvVb2k;vs-$%%HLO(b_sjB99gIZ1 zP!4EO zt_pCPo${&BDHjL`Y^rlhrL2%kFIbUbF%kBPfPiXD5m2 z@Fh8zHG?LB4->9dvOS=EhI5H)XKVuIeWesj$|ZP34oa&;FwRVLwzfVs)DyvT2kzMm z?vRCRL(UmXM~-T28&-rY*}JLp7vwgtGRAF%f3s*#2B@p`!53JozA-4=%c7uijm_+R zkTUzc2{EcRMP1O@wUgQ}Y{4B!%&gZcQy`H=OLAPD#cQ?4!KKx@a@%Q%G$hOAQBvvG zt}5CXsp@<=P6K89$+g_DEP)yX)p}?=KzQtITMfSik~N!Wmnu>2Uvth4u%~R2vLxO= z-iIM@wU7)yBsv42!bi0Uuzfk-;X|AHy|IL%D58lr!)A6|ststbrWFLJF-~a`w;rrf=qNPf6~`|MJTSjvSD<|QFM?75 z`Nx5bD}SHH9Uf=_KhZHYcy9kyzSq{!THFcY`@K*w19XyFtSDg_4jc0T`o~^xq$dr*2KdZPge#w_K7jfwGdbdS!HflK%4hn85s{36}rj@+`RRc z0Sx7NIakrQ8nh|ByumryS6*SaYyZ|-+MQi>ptST$w4$?1gI(9u(G=PFnj3H)-5yj} z5RhVtsR{lkFD%zM-At=$o>FRBBmd$nffh(W$=cFZOx=S-PS!UdZJ0>y5f|O7hi$)Q z^lrRY-4ph2b(k;e&%oF5;|I_EgV+rieHJXsNB>5^^bG~WU#4t<*VXVaC3X2+Gh2Y5 zE#VNxu_wUt#3GDt7`%zdb5!7ysXU~XS|fW~6K7K18s1q7ESp=rg>VAl#ora=Z^RW0 zpX*fw?X|TVq7b4xq7sb5*05#tT&QX~jrx2wwkJFQ+H{F5Is`wa!cqsz25mQ>B)tkG zf2KGg;xXXbo(cG^PvOKKX}N}if^=P&vH^c>qL#nrl|6P|)rCTp_~)4jsX+!~YPdke zCCyQkCGWX4x3BvKV(()xjZR9l3gfe+KFxn84UB*)csh$~{VIE_Fnr%#rIMRZ)rH({ z``#^U1BnepKK9sq$WXR5XXa0H;}zc5Q&<4NxSrZ&bkPp;4>mh0jpZwVPgeBq%cZdN zq3VqSsOBOLQeunUnhD-1DYP&s?36d+bRTa%Laxrrj8j%k7>48|Lktpt9rfDEGE9t6 zHzF;9m}6*3orbOpmWFivWF92CkH-hA*YSaTvtB(;M!9~(QZC|n1=Ajqr%OJn*T%xt zIK89f`$Nvicr^xp5!8T{=?W`@rX}rp3}gl(P3i~;T`tMj^vRjZr5|DMDQCSAuq_5G zs`BoiIrXlPN(ErGMQU|b==z_R7)VIa%S;f#KF7fioNh5gnw@?xRooT=lc$cn~V; zv=;mnPna+5vo*~jC#oA z8W1v={LFV|qJi{c?9QE%wA7>c;{WRudO zX_a3vQr;301W(-%@x;i&n&K3N6k{&1Qgk6VpsiAb-Zpp7|{!Bv^IvA0wL8Jv9U$N zec3Ybhc~#uUqkD~ay6P+d$XEQObP&A(?$eSKE+bAMIxl7o5i^Xa9^JulXpI+QKr;F zy481iJ`~}u*wiGnC+Q(%MXB;^2L5ixw&P39Z%j46s(Qp!cW5201KPz_itHo<{H$iB*=ZcW0=K>qE1RSgwIxl(v@ixx<}{iYwcox8UY)j>Ex%-cUxVN zSfs+pSo>(qq+u1}qX_V<6HVstnYp=j!lOJR94W!qN-vMwXZ;Ivz{>%b;T@M2UrEs{Z@)K@mX=Y*)sg&5;mQ!7MH$_~6w&;{53n14 z9|?B^lD%8L^1S7d*hJ2dnM%mxdLh>TZMN_PYZYOjQPocE^T*wR^lS)pJc(8zqc@EQ zqIWGE3dvbVz8lHC1Pr|}jie4-_#->Fe=a|DyZtMss=uT?X?a@_Bc0ZG+E0Q=r6n?C zqK=gHDzGe;fR&tQ?G$WsvcTL+-i@7j4`P&kQz_}OcDb%RIPG(6tW#)X41oS(QKr$#|9nk0#LlHKpp2RVNeYDvY<#KKl7?Q3|nKrVq)#D$1>k$`)5Z4_4+P@i54i%sNV87`vu#5J0Q({<&@XK zw+w}jb-5d^;l{MM*o3y)C4Ds- zCy5l`hiCM=KaInK(!8id7+Lrs=gt0__^H&fh)-!Aq=G{0%|?fhhAL}%2lx`qELgU3 zbPdQe!!AC%5L8HVK~m?d6gsANnWDSjuoh_UA2bUPr9LvT_eO*xPB|_F>>vM|l^jdlv#GRTu z2&=VAZDe9!fGN`7{S$CJcd!PT$JY+GptL~0gG0BWh0*6;C;>=M5wN)BXo!VYRcbLM zPv50Ra95V0zu~tpzvJBVvarNWHx*%w1Q4oxmoR}y7cW6haSOPuZ6Li$FLGd|a0Qg+;Z<}hp~FXRQjL?qW`Vem5?TI`ZZXb% zxMtxEBX#VJuGe~^ZFfk`EjWN@9h1x(0g0_rYa#MjWG#E6sEwN^Hw7nlDR zv&>R{#{D{-%o9}U6@ ze1qsU6?96(v_JLyIY0gN4Xm&+IURJJ^zroe4Y?B;otQy}RlCbVhaUw-YFhjhe32hb zMU$9Vn@D9uL5idRlD^mu6CPg1XWk86T^B9JAnIm=9p07l^&1a7jR%s9e-41hMw%#8U3DqNhzq%c#b70L6c#qM ze0SrL^GC)N`PV!z1rtH!nS$@&ge1Rxl#H>07OYxm7 zYrop|B{QK%?&G%CNDm75qNDaXjc+zoSj_)E>;;tVSLJ?LYW_?=t!m51(c$IPn8QaJ z1~n^fXq$}fs8^&BKomjHuQ1&I3&aus6ds!v@@wFNsa_Abt_T@=mhd7^gZqPfAO=F* zuosY+cLoZJ5;~)lm(ZJtN**~pbpb(*fzH`A@2K!(1I1pTniPD5lfIyTBuSrj4;k(Q zspZ9wUYTnD{Cc$xwo$YbRK;c6jj|MSJyKRekry{1_a=)vIk2ltl)L}4vuJ6@1&t1Q zHw1w}Lg0b5m6*1ENi8%rM^nez*DL?rW*B4bzhu|s`b42+iQiqn>f!$38?ZL<{U^U! zakl6Gc4hVYT3ExWMKxC#u#fMf!;N-#{S}&d7F+T>4VvF*?f&1OBRsyxtekZN{X1fa z*EuAqv(^{yo8^41ML!|w&qlkuA02?2{!l%TwKj`=Vuy;IBatp#X*yH|s}K5X$)ckPaNf+AODhhjw%v5&OjLx~DO~?1g{_LuNh(;Dvi_M4la`GU&>Wx3%AMo*>%Puqi(3=OHzB~KCcvaR zpCK*R%dzBlv79F~5!@O_?h-wEjw^7&?_)orrO`-q0bUA&%MZv~>b|0I>MXnRt;xfs z;tYS(Zw+KJUuVyv5JQ3G6(s7adUmr#l^;?q73vO(v5@1YaVw`o<$uv>m;Hslyvxco zGM1}1ai0FXA9QY@jI|>;3W~(Kx3ox0eOYz@PF`LvQ7pzHNrcx(Yt7I$lJ4BrnC!=J z-NSY6voj(s1b$quNos#1$v$Lyl37?Ez}KX5=iP#f+Z~ZAlUHG8yn$82FvysQ<+`LC zRd975uB`8&qe?l1#3?%^QCOR}(~@9y& zVuop*EmG%^EP|4B(55{~`HF~$pm6&dj@;oI&^wHvj4GrG3%qKhphfl3`(7JP8OY=n z-S6Ba7&-QU!Ua6I#}5FLQwh+3K!^kbR@=^sZfhSJ5M%WP&1=>`&Qqkgo>eexZd>6cagy(nV zn?*SS$umiqTuzTWJxOZKk`2v-rkVppjgy%S7$--vDZn*R2?(q$-f1E97;iZM|Cy)! zgLS-xjELSL%XiVK*A~ayMYeI568xsit&^DX5F-&VHG?w)S`1rHDgTY(i(AjS->)s%r|xhJ9rNar`7$=xr|X!FXfd&NC$Z%K&=(3A22&_J=@o{6 zw0l&e?xo^)$kl&Ly(+lsFp~a8uTk3&T=+j0iDPEc?Wwnn)vp`Gb+y#J0VtksT_QzJ zm2=oEDOa(PDHFs?UY6vm_L`k?a@xbXD{2jaug^$J%NXS`Gr*sUa!LWm z=bvxsoS>&yP!!f-JwTk}{pN%A@e@zg3?I}&Nga`oq^}6^slNNBEVhOzI?!s*?-e>a zWLeS69|o#GF2$_5jmhs~Nw+KRi1B;U25i8xIMy<7rCuj0AmHw=c$t}Pgdc7a1Gp~~ zWw`TCFGu?0gnK5_ZR z_5QbE;nww;u)y@?S#*{Xh7?N>AiFU&UWbLZ*dpYQp?2=^ZrkSe zTM<$=D|K}t=x}vt6jY3?2-JAZE>sJ`RrPvWD)t(+%1`}Hm|21xcAkH$IWNjXr>JNy zX+pQlU@kpoJFKz>X&FcxbOidPK$a;Z(F`!o`z%8si1a`Wfz?Fhd<9w>&N zX|UfrfgM>Bk9npYB4Mm>U@N)!p@#Z6SRev9ji?&n8~B4dd0DQRzrz1 z+9jIE^b{ZWYOs!~z&7pQq<0Yz=*e5<-roWwqrbv|U_Dbh5v7;4IXY?|K1GyOXZ8;S zcxh%4YwCgFP>F=#;Z)hPKd?YOB$NA+r^r9Z(87DD7o-exUMNbeLq+}k;wX(VAjOHv z9RgD3LD*soQDush`7POLIUZPjYMZ-!Os}r0gVO*9@j2oN48uQ6{nfKxT1#+TwOLE9 z$L2z=!g7}uL8+HW_Ghr7v3@63)dw(|*E&Yc`uA`7?1HlQRCl36=}KaoPWI$=o!#_P zsbkZk*e?8=o63q|Iyh2@v#FmggN6YMscFGA`%z( z47>^s&RrY-Eww7GBS#e3|KddMrK&=P;b45gR!;L9(4HPh1Z z$#)h@(dAAB?OCiPC@OQZP}X^fZstu2+QyYv*>PJx>r?dbr?UQ-EDfmGIAT@%R=Th} z&Q0*@tL}1R%J`*!GN5_)hhF+cefb!dstx)sG&^LIROK%u)FVEz;6{o^MKTNdzSd6- zh3GXWy1~vjG4rn&0+2>4arC+pY7 z-DBydT&ZALd!f2Vn8hY2-r-=U(ld~<}to^IbnOW#McdG-;mi@E~dY>Js% zS7=B8;Lh=RfX(3{$6|6{h9aZpjwjBYBZ2kxdHLy;3!GyL#Xlq%aNWyMq@ieL6uI_1 z?qu-bAAM8CGDviYczX!#f>%?9WISqp6>*|m!VVW^u#NoDZN>9uPVBS=Kd9+(x}uj! zeZ6VbginB{uL44i4vF?c>EArBne%k ze64RB{)KtT<5+_=sm7_nUrs!>(1{G$Qn0HZX7>a~?AaN0bl46bl-|pi26--6fc(cp4#SVo$BDU$&AcVfRQ+5g_$po!LGH_Sxg~EwB;0* z#Iq#3P2q_^IUw}bQA4Z74frfi{$-|%Ae9vm1P>C-v=GWlBauok?c&0<2%MKzA^(WR zwW)rjWJ0aFfz-9F2YYD)z%Wch4g-fjz?F~?Fr&?n5wOQ3rO$=8m1%v3rKU%VRW)K{ z$;ooSSBgvtY5-9W|1(u23^jySGCC?v<{qW9uhXhj@r{wJ)J@{}XhpK=vtIOfNWdS( zbJ2dOS~6;fjH5wF~})$=1L7o0%#%}CIg*#IW(WvI|2)gl_uqdEP? z7tAt^kNTn+kEsaF+p$*_!gi;1nR4atW#{2qGD~$9fC)|qiz_BHM7SFeGHbOQ&syOy z@1k|~L0t@XX+7xZ`sfEEl)i&7V|42dC#VVUpp|uQvU!sZl*B}fMqYgJkxOmXcMlzE zLy`3Iz}29L-VD2U)9fPSH`JkUi7&W}`VTP%A>afy3oAInH!=31RW_DOt`Beej^1ol z#&SsBLy?ZP*Bs!CH)9|9s&t?y5Ty5x^@JP|Y>QJ1aqYmU2BA_} z6*sgR>X^A~g>}p!&H=nmPi{qs&Sn3qhE5-SA*|rx#_VYzN+kCBJ>|v+wpZShchE~| z%!5bAI>z7)Vad>oH{&Ip%bF!6rb|8}*fgGD%l~o}W-4U>WciS6OZvt%LH=JK{3BPk z^0hE-Q{!L_PNvL461%CHOe~@hy0`6^+jlaieT+>wEQkXy)@X@;lLl$uj?lJ_9T98f}uSV zdPVsz8t5GIC_R zI>&K0y9|;TlBOHPr;M?zYWEueiK>J66=)72(3Lg%ESio#S^zI|8J~yT2#>`^qv8vQ zd>yAw{y;daVCmd@MXAYpf<Vmyo7si5yC`2SfnP!aE4}lZ1YZ@HqIa2JT zIS1NK{Si)8lpYccKVNvMQ?r^Qk?I5vfbO-Qhv*wgpNT&#Qrn_xfP5I? zwTB=)4(2<~_V>KpydtFbE@m+&UH;@(@RqA=Tn}lyLa*q^%&G9sg%uDklWJgYM?1AfN<#gV9q_0B(U_Qq3MMd{Nb zP|Ae)<>7pKNfsUX*FhmUnd$y$uXdDL34R$>d-U2ze0vNo4osZTJUZs!e`GEJrpp|)f$qc<$vBs8=%CYDeTfWEit(7>wltGld z8x9eoZ(34UYUm()!X$QLb+Ec4nu2rpK%}@a2%Hc7hM`S^=YKSaNu$ zHe0;4r8>aBsccpxUS|U}o1%~$q=JkiDgGHdt?1i!-2nQVneU4k|0X<|aTmq)>v{4jFgQJhAgZK+9`%Z78gvFHXcsA&d#3*&jH%&T4KJOe>smWzHE~gb z1{~Y|Hl>+4HCEZ)1e%M;gRZP+8SolWFDaC4tAtWC{JW_UNG(hKjGQz*>{KrO#!9{s z+<7oC51}=Y4?qtUv)W8yZtIkD5o_3yx7zBP)etYQb2UK{NH$rW{zcS2jfA34=Sc2t z&Bq%vp4kcq#Mqo7|6%LG)?&;E!j)UWv#>3SlhDfweVo9)KFsD=e#%mcvZP_oS}p}I z!olYIZYJ?(Mr!Uag?FqyMQgEbjzUtP;HEGheO>IBC)8_{)Xc*k;k+X;r6{tG)TmElTp(VMK}O%NF;z&51e0iX zW>!RMtNvMsBu^>5$ybV!C8D^4Ada0F5`ZvnVV|ufVZIAhx91UO6Or1!(3ypiBxi00 ze+durgjHooEIHV(0Sum(M1Y8p*SIShmT(s7zbs1nsrAStR02(!RhlJN^n(rD*hI!C zlsTIwnpuZQAWYe9X6n#lrc`~QkFgVFf@Ie&4g5yber9u@*He1pu_x;a|BE=Jf1g;6 zhr{abwdI7U;~ig-F{}5n8 zZP%~(>NF#rsI|RSAlN`jHJdf#oB=p zTEWU>D07KGZQaxc9X!8*yn@q-DO$0E#r9brJ^+hoHIOAM&)9Qm^TbK&l(xu!sa`Tl z$4xgRj+;n^6`6XX(tNLh!y?>t~A=b9sLW2%s0E{@`kI&VgM zBr2eJ>Jn$jix@m?je-p~jUWvo>y|!hHy(QQIc;!9inT?{<0T=#jN(+BNmX3Q7m&V^zYaU+7%^xN`HPX;Q84S8)BDH&j@2qYe8%MjWxv;D*OeBB$mqpnq* zv<#~{+Kev+5)c-38pBk(xrL24s{)SC?@5IwE!p`iD}R^=u~_wYgd;R$OD?bTqEGrj z*Z&d2)mB=9pFD2d?=R!CRfSX~dTZSSQ4|{K` zv<(FhEDk(z-xDX*R2hTiaUKkD_w{|bp_=`p&XdJ_O+5L_c5&}J4=KgE> zV&l}s1Ov`AXAEHR9PgF;os^vH1H`C%NA8{_b3sL2snG(j=1*S_iqQHj_k(qaF&%+{ z;$KL%3tD2WdK?D^YWcuvH*#;=l9W`jng1}xzc z=kSZRU60^E+E|vl1=>ZNy=9;B{sIwmRF9bWThjLcyk|J(2BVG;KzoVn|Ckb&L3s)l*sB~ax=LyV z-XC}oTYc8qOz{^C7*DRjIC66ZYRZo1)~KsYvR&RgLwGIHXaPYvuCyhguL3g`6Y;`g zzjB$;%`cs0qpoR97t>`>JR@LSd!rxb1#&-!3I{XUjWr>}7f8Fz#RDr4il@NrHd0(p$ zN+Ka?3{RG?%5)e|@WzQmgUO6DAF|L}bC|o0Rf{a3j0gei_bu2FL^nL%iZRyhSGVjw2GRb<*gq zGpQLc&<$lzy<-PSphK2|?Kc>!VLkF~J-~^J>2sGLXw=x+?KWh$fZ&pF46Ym$C~+>u zH4O5xasH8Hs`YIISgV?PY~i^6n38*nb8AmKR|izws%WvC8Kpspjotfp9ft(GRpxW# z!RW;79ucoW2KMg%`mVB;{~SbMlc!r??t_j)^3?ePtyrYbiogj~+4f3!>ZAHU4rCC| zSrYMZ`Er75Hw7;xTQz0GS?c+A7a-N*kI3eZQ z9K0627|@5GBpa$=NvQx@uOvMcDCX1tW2bDX-FzQOTWQ7^Ypq$K!3QG+L?%jW1|Tm& z$#`B22EUbs((1P_A?6ZU#xhIA|5?^nb0pI~3qLDKK-d2=4~84|ao=b_rRvgSom`3E z6vGEnbBbx2@V32yDr!Dzaf7#-Pp?c+|7qBR-zTUE%G2fe-KI^EG{eYqvm-ZfETIpp z=K(-JhEmr{;D|K`={^H9^vS`^T`JK_p1idwp4k^u=A6rA68l+cwpe$~qb zi4R-<#q;E#?)SJCY2^D2{NQfEm`|3d>IQ#!A)Cke&wEc31H@f}$86B)^FyQ*)SRc6 zoSOrV>CHK0-_Uwf=s~{M-F~-vGkl$qj1ARI-&)oGZYl1gj`)r@a2!gY&WFv3k$q%s2iBHLlcGvtNtU@vnJh7tx^tPv~?iJ$i zq`+C*=PkcM;zu%pd5VB?^bo;dOh%KV^!r@H#V)luhxOQ$Kvu5ZMs)7iq-nveI^Yzn zrt9543fC4#C_TQ)o6&J&AI~vc@{%ifYWg7K?g1>N8G`pe`Sh$=7& zy>tD;C^>Z2*Uc_|&$M*BpraBB@lB7Es+)c0F%Ic#oL~)A->Uq|Af|9^llURN`h|_B zkUm@8|DER!@|g`*w~;4>PhHYO@GDiSA<{;W02PfWaz$!ZYr#biZ+j?$3-8?CQ+E*~ zm>muKUq{)+est!aGYd17PQO1IxtSJwxE+Pz*w=scU)G# zVW^l&%O1y&I)OXW*RfJh5WgFXMg@Gp3{Zya=MX`k*1?iUU%d&O2~PEFqCSblhkHH@ z$#}H9@X*!C;d08-6Fmd(fNYhX}OTJJHjHEp;!s*w&F;y;|e>g z4D>qme*Vu!^d#p2>P96(m-kXo<8ur;z>^jM9cokH`@^;nJ(P3d4P;jYQmA z6;yju8=Qd4%%p_lPB6-VhtS=rJ)m+K3sBTEraYSj!?8}E7G2zstHPcYQhL!jfHPh0 zN6j$BZ0~l^$R&))_Mfan*^`~_Lc5q~=4B|pt5n6Tt?W1X%sNXp9HM7T&cx&FItY}i zZ+O*Quf)4lK)>Hoau=iS^^Jwtb_D#Y_mb_Ppu9Z%ZvOt+Jvt|&eSDY%C!(XxK!ye_ zKsL8}e4&hoU2$~Wo8h|(G`dcg!7+d@jB7xO={a=lmw_ey#zskM`LMlMP4EBbUC&uT zt5n~vK75KMjIDYF~Lzxb5h4psq=rBOToDzz^Als#rC2svukvm(N3WgKe zT2z)d>l74`|Kdj#1{G?AX16P*L2y}7W!=IN)S$zoB__6MR$NiRU3B-9c8oM!)D)%2 z!(i{;MIEOZs!goz?g*D)Is9q8s8DYJpvh(L%n>V)XU;Bzj*FX~v})$n*O$o{4-NAy=oKd(T;ce=Enmn6OG{FxeDut~!K(+0zU?$}8 zbOQ$SL&tqx0 zXae-Zf-|C45lF>-jeZfbcrToA?(Vb4g(w8v-M2jnAq!FRf56>S@f5EzM|IRYK_TJ@ z6~w<%;A<}!^R>Thf;Wr&5k?er<_I0F9kCID9$8OQ({@Y66u%-DU8T?{i!{+Wj8!(jc?jRH{(N)VK;m(+jX!v8Zw3W$X&NpW zHVI966wcn%F(QG^tc0IIY#GPd$BT$%j8-3&25o8T1{`X;H5TiHG}p{tCjBruc;y-G zxB&hE(OA*GNu4`^^yMAt`!#T76UGTAyC9W{mcBF-pi}m*KFvtxP)yT0=9boeC(mK7 zzq)kdkO{X|M9xIuI1Po;=OZdpZh!6|p%p;a_`X3;*mh%14B@(o zGxi;yM5XFQpDfM7q2^99WbUAdW(5)$o9EbY;F+-9s>yflxwdSQSLl?bX4OtGBYj z(#c>Pn;ToI5gCUG+&zCc(u?l)Opqb1qD~%Ll){1?c>R zHP#%5RdGb2){vhEDm^F3R=VpxhLYC?IZfmgBYmK%2x<8x$kBLvlf(Az1ZX-W?q-3QJJr#Kuz$6uum0yf*9YFk*H7z8inFS2c3n9+=^ z!Vt-HeT!HX|BF92GFTe^!tkpX@z{Ui>4D_Ap)?vhV+#N)I^*!GSHfXpslb1XMQO?+ z8oUH0p)-WewDXg!c>#SUZjR^vRa%xDJ$ zZ6C03Nf0alL$-o4c;KKmf>OO2)Et)0Yx9I+DDifCssKGe!oPw#t7OZQ_BOJZ?1+>n z8v-6moR3PL52yf>*uR1(s|aUHs3=pv_|*+R{w-1hWri^|x49I{RHp)W76L)iE|`~` zrCDob@fNej8I*j8hG~5-syZ(r`8w5Sev=0eO33Sn4|qa==$^5w6hdj4P1#i0;*ss* zoSDP@x7qgyZzB}0%z4C}^iud1A8qa-2o+aOiq?%=l`hDZ#hu=?(WCXg=totH_s2%x|B}!G)}aLF zVl5L((*KMQro?1w3&6bVxFwI;@_Rt zV(dO3LC#X+7r~|=>i$Hb4Cp3#@q0%?MNC9H1iYkMw(UHA$59YcFJKQw#2~f(C@cXo zhsm3DEvGD4jtOrtz_P z%1H&95C&bvwU+Y~rV<#Ypx?L_EotDluHGj?%~c`SX<=AWj!EOK&utfp!0YM-7YXBL z{8&_`^`izd2}X@cfy9OKRz%QPFi+9in-J@;w^=^-P9Kk0`4A~*FWSW&Vb(QU8%tty4-X&86fc(u!lNR?_sJ! zT%?%GUGddN(*%b*nSsBm6=RwvybV=Pl~urf#ko2VM`ic%EGXFm<|bDMb5J|<>=dVc zlahK-%w{9*C_vfuvy1P?4uA#~1yZ zv0vFLppyxrKJBe=Am*{-{6Q$Ca}r%4iZl)wL42YSMLXederOH@&y&4v{{7>u=`?U- zcf>b;hO)8)g*Ie2ASl5`Ldfztx!{QP5emFG)HS6_LPRP^6Hr5m9g&OaY?|ryT3!$K zBq`TC@3~^cckM%L>vifmv6E#b;C~P*UpQCNjvMt|TdeVG@G>EpsWQT;>k@JWq3 z^*IBa;)!<>-PM6Ua4SOOd~x0LT~O5E?XR^dN|*}|xpTz{5)g2!^UNwmTsez#Y&Ri~ zgU(@~kI(~qE*;)3EX5x%iJmOh7}n40R$>3{!RTubd=yolr#P(AuSF$#t zyMfb#Ru5PMs+plApWsK5Fg+}&oEMGYmN+{b2!T*vBc-}-ttoLV(&89zr}0SxN%||(x(?1zqj8SmIn=c!FuK#Or+^)Vb|jlcXqg%2!>L>V zYo-=;8=Yd%`plyA25{Leh(L;A_}vEqo2e)E;EgaH<-#14TlQmd)2T4bp6UxG7C0}x zUSROFy-T%CBYHOZ2)D1y5)gDw-D|+8Xh2md{{>+ zj8@1MY4x)v6DBr*^=S7B{P7O^wv1N}x>H00o(EUNMF5J?_8?^I+yeM>Po9(+jxxqzAAMT~ zsj+1~!#W$2B+TIak-QaUV#RFS^Hb%DC5wBwtvK#APuUWK8PXtw7v)-BZN1rQw}Tez z=oI3he)3vxWi4n8Ai(8#lP}DSGhi>1au%UF+r9`?GAT#d6G!ExCLcsdnsmhLnVgY&QjP^j*eOe+Gdvz%f?G zAqxhL%31YiZ%6Hl6;rF}VelKNme%7I!!FXJLRglN7XK)(1G{~s2b&NP4~iXQ;Ey2b z_AmyK=^8u6<>k1nU=UN;VqwO=Xb+>E9?1#%B|L;4y9B>F+s&cxgUV)? zGxWR^uy8((RR#5^TcP%Y$Hf-f%w;@N>bT^oE_wb!?LALd4Fsru#6 z2gL?LZ6`MJ@fU8nP{{3&@b#qAo~wyFL1?r(Zpe|v`DTv<32DG9t-d+9Bh^=dB!c& z3*K%_VhZpbeRcKU<@yYRnz~Td{9UBn~J7Je)_lPk2GFkE~b9Ar!os3(4Z+0npSME(_>Pj7! z-M%l_^jDaeNb)*kGad4!yB%L6X{tHM<6V_kE+2MT-CZG}MRnoO9xEcby8-!`l|HGp`@}WH7fO~8c75zml?s)oM z9AFjo4=XH%=QYD22xDp8vV7;&nnwk|=UClx)2}_+P{cB?D)?4joAB;pj${hZN zq``VnL{T>)>oI#qdi<}3`h$aK?jmyc0hp$~PZyq3NK5(8L2NG+wwk^pl|Q#M8aB1# zcfs1!EYVW9n-RBc5%(N0M2u)N{)??-x}DRvmof6(6(;m#I$A94H_!^l9gKVGqcl5yNSl3s9oZ+oXNG zG-z`=BB*I!-AFjHs7{S5z2El_{5^az`f?Y}v}B0O(_0LynXA-wYk*tGH{JhD} zHhiCr7R6iga7$5@s>fzR01gdvo|!~nNmQPmEm=FO5FHm$D9J6Rs&pV(O-2Tg%~>A} z>3`ZR+js}@A%IG%rh@>&3hkWV4!r}x>`Y-?2@vK~pwaS6C~)^No=K*tvzsQo+(%KL zdV4@RandoUIl?bc`s$(a!2*=@SAwPvj=L0^=CLfSZ3o6P+9M2B_T~vk13wRHqJmy< zbU>)KRJEkDVv3R87Or(pxZ@n1CqEWz>DaFcj12^VTz`6^nYDT4xuZ+W4uPcl`mn9a zZRB$rNPCl2xw3D0j9Ss@F)6tvRwp91R2MD-6=ut9^|cwk$M$wVv{;dQ8dMptu|AHb zQ&ypd*Y<_UBWQ`m$1lVDYw|+706&;JdOc5H-pv3olEpxp7`rpUf((+B{(0s!OaV{H zD?{k!ug_72ZNY({l#%xYdsZ|JqL||+^OtDo!bK6NWSW)CSO_)LGo0#!XT+iX)r4Sh zde>^iCsUzHwBF7O zlykT$kdC=!MxP4_v_F#I8QFxHG=zU}y|_R!Xz)X*1eq7CMB)k{ZT~jsYPs z%#@7-Abro~n!ha_EQ)6ATcPX~IFnyb!vuVAOT&1ceXE3_-(-q+VGT43SBa<{TZSP@ zJTjv95^dMBiqsE!JcAqwS0B{cY(Kt!qltLnLF-54%YFZQBbAke4Z-F)Q^xhgz>LP^ zdA}5}2C`As+!2}Zkrfe&Z)aDx-Z0bY33h6hy;6@}AogFs)rd`MDiE-u=>kF?H76|-^qdh80%0`0#{qG5Gc!J3J5HfsY&%9aano42k}I2qLb zGmn5fF<%YZ<24%MpKMM^B4@ny7K&c>IrVg~{e^M2vg^-Drqg73yiu$ij##UT3X0;M zH4?9#+tp}=8fljLjgw(o4DTw6_Ua`Fa7?FE70rCP$A2K+Bu0Dqk})>5pEhHtC}C;C zGwzLm`3>Rs@Mo>Gec)L_&+a6|J-->Av)ik+^Jyf{dGie~qC;_{o}5n~J>4_Z*FYS` z$V;!t5>IQFg0(KbZ-^Dkq%|aV;v+9Rt~9gPF0y`n;X%7yq+v~d$7kzVQyDnP)@eDi zpmPG|_o1VP-MljsLv%0o6lur@S)Yt_WQpK zT=Y7G8tF6RthE0^E+b%^L^9L$O|gTAAmGt=>x<&LiG=NKbK0eqe(ZNh{!aZgzVZp! zdn6upKwKY(IlDZ@zTS=mX~mFo(-kGxB*D5bmZGFos@Bi+%i=d8$ottk75n4c}F@y|N4mA#>vyBnuDmvX31TSW|rcfB|3Sy^v zVS%FT)gIt5bv+>=lh!~#;s}=O&1T_1rqQK?4`QVy22pYGuM@Yzpn06(lk@%V4pO`& zj|q0=-qZ$H$gFqcMlA~_f=0jE)?|RmqP7<~o5SDn9Qs^F8r!jx)^O(RncoO}Du>M)?VlKuj zpkfw^eYm+XG%fnwrq;ni0DDTu)4889`j8Y^L)+;i|CW28?flSEs<-IYczq3irj4Z>n97zm)@UB)7s+P2&#d(Yn*l0`Ex_nTh^k9=cTcMGvaU3-L~(0 zInUEVVdw^wAp!R6GTV3=S7xg1gr%19XiVSlgL9MRqeMUkLGYQEeGCUvb;P6_D#R^$ zncf_R!zK07alVaSQdxPTi$10)V@%|j)=S0N^a|Bs@Uzd#0J&j7oD1v3tDi-Zc26J| z=~I;f{OLuCMBMqL;lr|IY_zAJS^FqG!|7=8NPmQ##^1S1jg)7#gjA3SC-qu{blaO; z8}Z8pJn(Y!sEZH;s|n9HsaG+5={E1Uc8Zf-?b8fUaXp76B*){3$(C;c!TUz#J_+u4 zPjQ6<$xmR^3>Gz1`=lte>UoaSRsh3Uo$Ct}lZS|azAs!AS3kTdZAp5)%C(*OXMc(J zbAk?$R^VhhV$4Y<;&60dhW=5eJ8o%3My~N2Cf8IXc+024T9RU zU$@J$NkP9>DPDwr$(Q|hBfkK_n~N@{uP2>cw$BHxI;YpW_ek&i_^MeLm=QQrR*BtV z$`ps2jSn_?oDNNo-X>z-b|5&0*Z;=Mj@c~aB4ggr3w~i8i5Gw~ck}+{YnA*VN?=Z4zaz8?>M&CEL)aJUO(ZgBnMK*2 z^a{#9<_l&ykR*xHIz8a2wM2H7*gR!GRiXdl9MViAth~#*Rk`M8nRsmss{ryK);}F( zdky-Cxco~kpE`k8e;Q9=_Q%-2y9%{I>4-DL=FtS0b@~Q4kYaP|)^;x+*wxOY^Su!C zq+aYBPMqtyz~iNP)VV2yb2)qDKw~$3F4OQ@fY-Cs!<7_7R2TTDHF1=hd3Z&uH%kSN zq5gt{IM1-C6`Fi)QYhwMW|#$eC^4VL(&2pqOrZ{+xXhUephFWGk~P*Q=j`F)w@iej5Qi&8K+MQd&9+l`iL##c5jji^!kZoVtlu+k7{ z6NH|O>vc37nne%bm9uddms3ACe>r&MFb-#m_)WdyWDs3CI>4xP4Xewbb

zk{~ra_jjJT-0%^%e96=7LQ&3Lh8{{((p+43XU&>X1i#nlq+U6jD~Y|-&$Ki{U;!<0 zb^G~l02dRocu|7t3;g9)Bj;DK3MvJZq?tz)u0D`B}=#sH*ROUT{x`rferOfx;;FZ+JAqgui~xoi;!HTUW$pYZftVzsCv zUg0!>6?3CJ7FUuP^OPQ2ML=4(5LqZ$T{$b-V~R5|#lL=lpXa;KZC#wE^2?wRlSvt2Wet!vIKdTo8> zOxQsbuowxyxMXD37IMIMl-fASvUPjtvTnyaP1K+&wE^ZZgz74+5^x5-9)hG9m@O?b zzkHW>g6PZtd#Ep1p-P35R9zUd?Y2267Bm!}3iN&l_v1D>b2!p|PGLI)(bhl%k_54- zb=%(mIC%@&@(@%sOSTcEMq4oohFUnODWVHAS>;o+@C=(rNu+Y@6j#K zyvLBlP?OD1+uU9gk6N&`Lltf2p$&}g9j0+q~2VKRz zAWD+korzJYbRp`3S7J49Htm@IT!crOkd*~NtQ%a~?3h{s1`tNSwrV5VXFeGu9X5Cn zKZ@^Rb&jVaj+?rqv75@aN1Mpp{Tpno838Jf_@HjM=!9Kp74|H~PxS)_PwRw>-l8EV z#KL>qR8xzp9fh)$xzX>Ve$%v{f?}L7+jIQP$aV9)5_FnH`J4rCuUg=9@*{Jh$kMiP z2iCZg-njLZNcM4bR{UVe^(6$(+!(dd$;9yig|Rvp-}FuFvk}Jfo<290{oetjDK4V} zVGr$wc=Jg}MLUc=NZy=HrI#l-W$1}XoTQP1*0wO96Clf7k*Gcfk@`sFn0_TamUbJ< zf^N`biiAcl3HK$wo7|F;YWQHKs3CFSO*2`AW?ipw>COoVB#80X(tF%$9ix?~08l5q zK$-fBF8Ra(-M@YmCPSta140{}Ow1StK78n3;Tl^Z*IFQWmMWmn&bpEV-Ndu)-zSY; zEjou6kXL0^#EEpr)EVo(SOP4mVp%ARW2;sTHrrCimNAh7DCdb+X=`MFdd!9;*rR*C z!@T+IZnlI^uXC|#ItCPK+&mbJ;$RoOJ~tdW6EDTZTv5^;e8G^pt*HK47*pVNEhLKl}5xpbA>%!OVlp z`#M6MwBlZNKbOoHK|PF_u7v%THN(?nSl}gae`LX-Bg>0th<;s98-u(E+fvzm;9i){ z7qO%9Re5_;4!d*9P1f1Exse&PGuFm`R%>h>Co!olIxjU&w@{2KL43xg+phX$K)?zDi0G4Smg~`Pk41!pj4SI?;EMw?;V+KouJ2K2t^SfFJ)77L8 zWAw6Wvd zHM4bOQpy*JU1iEP5|jMZyXv^SG=aUMz!UBkB998jabHs50TVQnG<9q%yHga1TpulU z5(e$4!SGcYZ`kFf1LXI7Dt*-V{Bk#NSqX;YO}K5Yy-Zmh&964HUbp;e&*2}ZBEN0t zGm81ly4h1Hdi)5d-2xt`01_+@>p?|yh6rSBe%{R|_(P@qjt$ZZ;J}9vZLXz}z2@7| z*1jPTxp+g_b=^oU*v6?63Qsq#`65nX>L)(A^%K00;_d-0maK|Pd+P*t>TPMkE5_?M)ON-m=8vK`zQx913zr*I;=Xy^4`%Dj|DeT<=6sdA9!8HX*{mI%s6lkAt%9=YCH6Euv%e~#np zt6xG@+zF=-g)*hmyu;#M04Da5S?sIm{|p=GP*BQIcLzo4X|TlN`Kq~mj362c1Wwd`9O%F^^~eW7apE%*5=wJSlJBn*7YM<`VDDqx++9QdXAm6qPp4Dsie;FgF(K zC-ZO;`nJKgIJkY>v3M%hEf6fZyUvj-e+W{KP!9b*Qmsq{Db-5QD zF9Ec09j3+G45H>s*H>+~-5b$oa{3xpt!iPVx~8L8Yq<5(<$diB!*-S=Td;dZ)1m6C zL2gE>H~nFTXW83OO88v6ZO9aM#@&qp{qem6OPQM|XU+_34*?tSnnuFp0ZDn!mD5~5~bcHr&U@)YvqLn`P$dPtt;!m-@nv0uP#T1U* z7;u{Hhi*Fh=~ed3uLCmH9pvgncjA#@`1H_gWY1G#p}4>iR2y_-P5B^88OlqBm*%FB zbdO90G{!74Ktib7Z*qV$0JDvqC7&L9l!{{h7m4LUCtnAO(QrE1iJ+1eRePwTiII}CT-t_O z)I_k{8KKcph#{86r1si}%oRsi+5Id38*pH90k*mht;aoeR;%Y$Pd9F($aheraHXtu zF1ElOn=?fx2*Hv9huXSEhVOVRr_}!?lgD1#%9XCd2fu{D4Dq=x&%Z78;Xgc}KKeSzr>SVG zn{s)a(&2JXaKYXR>Q^~!;z+xPus&xfL}II_oW|A>A$;=%qKUu<(jd=)rnyY(mZ5vn zwR2Q;_)STR1R{Gfc*UvQ@Q| zq)tB>NQ@sL%^mLNkc)!t%i!qHhMqzFLHJ1$Azn~9Rhw>mZ2JBRbJW^2>=4g%S<3kQ zHjsC=Hn~N)WffI>fYx9j(ak(I@NH*tV=ki{xO#p!XMKRIWp1ri7CfL_$~aD?0iL$+ ze=KFu-YPTNm7O`nFfqGq`^;?oCrFzVR&MEy_3oH6)MyWLV)*o+FUE_T(wYzwe^r!3 zM>GWV36!vliz$Ohqf>2;#tNy>forRN>pTVzfz;c>j_Ba(U|cV=V+r&D{9#&2mYQp{ zKu-R*ZE;C5WaDgB;I3_B(!2cGkRs5tuM)pq&SmR=Av>+9F1{o$c(<3d@}Rn;;Nmre zG_J3@knnVyNRzb(XSNC=+VV81mL0?GE*U3t{IE{3H^H`u=B=ia#7a!(A)||TZSGmz zBo-M48;T4@fItz~Ts*~jfdrRAd^+BD!4p5@g<;U}UBo`g)HZelGx2@0b@H>}k^j6D z40aV3{ing{%1I-q$qp|XLAa=JhlKjMIX{B_Mcx>(wg0K#u+(u{g0o{x4~b^~*4~d= zr9tFzq*5Gezeiux#h&w3qhAN^Wp+Zb^(W<;-4jKZem1~%4x`x<5 z3ooaJu2yjLk+6`hBQ9vgFQDRKlb%Q|z<41(Kt~G7^KyeVRE>uZ42&^%660 z|N14qiaMNiFA%fM7lE;wg`{!q&DbWx*-OP%gKRj}YjBs(KzJFr~Q$F3A56 zDuF9J{>qk)_oW@MjNf#b93Ygo3nT_07V!gVck^?WA zA-sIcesH8xS(Nyt*wZgHS%?~i`hc~E8(MvFCj&?3^r5Ns2 z-)^x{zH!>twn-bP=bNyLVM-irpJ0@I<QvBKAglT+<%YKCTlADj%m;Jq=tvF;FM; zzm!lHzkS9(ObOV_Pa3`^)2AzhDIF7`2YSW8PhIgeTS-3y08kP5d5sDQGXQ2hs*?{K zZqfJ8mw9}`pWp;ow^NkznKD~dVL(v)9TmWSBtE6@PYlkE#t7+<>7-igNwn-DUSgGO z{{=GcdJuZQ@mmm=x5G*>q~LAvY2o`#X=OeZH)FlSs|-f z87fDYa}Aer(?9$wf5C``1s25%yJ zju5OHN4K~VBAJYZB7tC|dlp)mqM@=KrWjdy+Jlo;Uoo6~CUcanT|jbg*fm+DyR9;d zE~+^0?L|z!0!bP9`C(X05n)&6BHZrl<3KH21N}SLqF(_Fin>TjIJn=AeIbVM z1p~&smisR~7cz_krP5Z&;_AHOkI)S98g;=F%>j!b-D8HFzcNN*qgj}$6*hih%Plg; zbnM}VYbdK*ACF2sy;wZ6dO>^X_8`2roudhp2p4MgXbY^Yfj|n#rKQ3WLqJ1<(tgx! zsRH2L{qz5sC^?E&Bl|L|#68_S%Y?h$r+|=r?kD2Dh(YX+`FJyYK}!$|WX7Y7o-n)c zDyRX>r{8`iN}MJBM|2-_q0i%zxg`2pkB;Bjt~T3yx2LNgMV}Q9%EgsMayEQ%?p-w^ zE;)!l?CClL4N-i$^dwOW67Lwt3VpftKnesMW?jZ=E%ZW^(s*?Y*s78qWDaQ&E-}J z3y#xQpJy<6iVBI~^;=kZ#BD0}JaO8jTG2bMxL>r-p#+bpLnBZvPdoWn5E zQv0N9IFEM(+6qElW7cK2=T5J>JKRnFQ4%?X3Zj|v? zQGIRu^-mr=o%n#-?ecY^-y^NYBO09faB&8VAWK_r`Nn_r^d~#JHyrJ=5x!6yA$%fk z*#W3Vk&-5Z|AakCEx~XkL2z`vN^{4?;NUg9+{EY*S7>p$eLjItq_t{+Q=7SUutS4s zj^h1fITLgc=oUk3CbU9gK)A;QvrB_Z+%j2y9c!7$^Xnu1CiTeL-#IE1JBr!{G1V{o zm9X(jDOq*F`WCb8B_v1Pcp#W4>S_xl@TE=kv4Ny9kFR(b?^`&~?69+cMCl%EuL@gl z^JR6Z!TXsW>9$?CMOL|e-Fhy;@Rb`_q?dzVLsmzBglH~J71?MZx#_)FABx1qG&re! zhg8He*f@KZHr7)QDEb7igIGYo#5@H&EWE|rNliSHGu$X0u%smVbF|0(D&8V70lP zHN}3!&`H=A%(yj-2BvmX4)Jfjg3EDsomnsGn!YF_*nT$p-kx<})|_?!jT|DZa9x0z zpWM65j5b;$M|?Al3lf=8j0`E^aw1%iCRi=3VL@qJz_=@`6Q+qQlAdprh9XhA&Aw%+ z<)e?_*)Uo9zM|hHxGgJK0@$BQWsh z(Yb!JH$j>){?w?TrJvo$%&7eNU3ZC8Qi3N#XJ|x7GRXKAwAK%Vq=w~*AbirgmUqhb zz<;)o-@_j4gVHT+^S!qXC?30Yg2Viatwv8O^_80P%$zKgArjc6uX_3GXJeZ@(g6t9 zXbuUP#Bc{L4pppCB-5mWmc$a_XZ05kGMSuI)7KOQXLk(X-6O)Qw8~hs-UfKzsO1UZ zMdWc)|L~cd^UoJ)VL9TQgr~vR55z8PcHh^!7YSJa&W`{jNyDZ?qN;8cFG(bdcAgnV z^K8{i#&UYM>)~l;$inv58U))7M4I4E`^OfiO1Je;Dc*MLgfGTQLw0w|>bbgz6Buxe zVzvMFJ)s_SA&|Vv=%S%hV=c{>>i|7Ax@VLwlMhyEBPD&! zFWzriZxJVLMCvI|FHIUC;18Sx8T(C;!m$izg5^DK;>w1gVf1JyJEd;2d&UCvYKyTA zEwv$n=p{XDJJwjD8IoJgkvp_dev9LQ^wBf$UvtYfos7c4WD&_3Eh6xMZw)~j;7E~e z&*ye$5&~Q2N?Elyn#nUAy>Q@J;%o{qLuQ9vtE1 zc147sQ@lAcm)jr*l%@VdeBhc!#sPBErKP_m1r?d2qWb{w9IfY6VsgDCyGxvDJ_D68jtPf$B4d6XbaKNPrne`|3Jc4F-Zk>&df* zpPq6BN3N;4IaoV$Tss(+4^E5;AO=oYl|rGnw1#)`#*tu%fUC7o)s5c+i4E* zNIn5IDN8r3j0x(yt*mi3mK->#zV?FWI_%*y^;E=D(Hptj5)=@fV~|{Glj%QbS?%Dh zLPEvo)T%PSK~rf*!o$bZD5?VpBpirRSJD>)<_;-bS!XqiAi^5NnZ6+HfvHGcs{ICL zW50w9pB=8n{slymrpE5%GVICD%VC8xUb_zF4Ying{06|`>;HEtTeqlHu(&yBVoa*X z)*{Kch((3%tI?8GtXf<|wbR7Hnx|GIZih|;<9tgMi{d#1+kqCHy02UsJ>+$yEsu>EEb08bQ}2z zB7!^awX)g?Z$Th6S3M~*Qge4L*DoI|x=vT)l~81$;^e9623Z*}fx15%bN>})0t@D? z4SRLc$*NR^Vkt0mAaC{Mtm{ax!Z+|9kTO^Y9Q*##@z6)?f=pezQ|C?GA}UMXgD;?G zd_8q1-yKEs=oL?WB>Tj4#@TjdqYyt@aNWLw4Gu5=EyX5Eim`^?Pb6V|N?T9a+kD|Y zZ9$tr&+qbi%L1SW8t7-$$uiEi8vqsm@8*jvjpH_Eyach###{wU|HqRtdvZa&tdbN7 zegVEdDWpCT5|nlS%VYC~bf*O%%j_a%V_u!$)=^~#LhIuFqJyylj(Mwk-T?jvJrt_Y zp4Gy9&O+2JPUW6@IOL{Jh0)=XaB)xEcfN8xQ0y}GhXXg$?$Sy)faQ=sh`AM)Ogg$n z6nyng;Cx%Xah*_Rsx?1 zm&`2jDwucZt5`L7D;^UQsTRt$j(S~f1+#AK;Zr2K5Bm9xmsQ$3%}&wB_hk((%<5lZ zQjCf+$Sv_EuBu1|Db_o(Wx2skakWYWo!qr?(2L3=>@1`L-vAy$Xr)YAVt*9>kwnig$)ZdZ78?IDir5xzrUiOsZgq$JdV<|%-r6=FU z*l3g^5EH@%<;1kcrAPZ~@5VSZcG9fFg9r3T?d}Swkp)F8yOxB=hp_lDdpRr@hu(J7 zhFT5{o?eNIC|9~tZ`yixlx_FHiqmS9mUuC2Z3HFLqV5GVZD)k-$|90Rc|NXq0iZ@x z^Q?FG_AoM48L4jNA174aOL`iEu%IqzEh=b_vCykr7WV7N!CX07dpi{@ywB8|Xi1>hx5Fk@;P(()=Oo0n=i>&7s(X}t8& zPS7k+#jLa1F0dmn4W8)GlcceWrqlbs#n8d_jTRH~@+{p*Xj-VuM2=GUwZs>{=<@O0 zl>MIMMjZHUqrLgb)~hvdz|K*6;WE!!{1fvQDPLJi^<2XE9!+Lhq!fR{5sUQZ{4HS> zqmH1k6^7I))S0^`?PI%oaoaQ*F zC+4rWd?&_ZrP5#LLy`H&_Nh-vo1lEChYF3!pZcG~SQ9?vn8y*(6NQ3-k~O%;sB`~5 z`}89e(0*p?wmfkQ(2{kwdPpB%Z%yw<-e`W1! z$ulCvRdy&yrmv4@2h+#w)v-OqI!D&$GI$v{YfsE)Z>ym?a0BE4ALq`oGOY>y@7xE@ zT>z*(+QldO6fqf|g1YvYy_2{>*6SY`vn>(*;C`NQTKCeSZm#p-2jTt_@XED$G<|DT z?hMZ&p+477oh@Y?D%1&A()jkbf(fBBmWH^`CAOkj%5~$?)ESe`apF*DS%bX@u#dWD~Pqj8n0ye@E>bET4%LyBtJQ4QZ0VW`x1u!r{8F@QC%AnUb zCt;Fkr6f8!)tz7^YyBpOj9E?K>r1WMT&-@> zrWxIjeer>GRk&J(A7zja<^s#=TYrxZ$5kXx`Wkdut!fCtSb>fB7#+2YUKwk}$tl3< z<0~yzgRmbJjYJ&sH$*%&f-9CS&7XC)R8a`P)E+{w^Vfkcmgfx5c}FHr+DBk&e=*%z z3HQ4Gent%pJ(Bzy5H+J|3DU`X#GQsFE;%j=C_E8dW4tTfDguAe^NxIU!PpxrVGtG@ zCA+b>l<8Z)cda)AOT2wZ&e3|BM7UG~UprRE4FL-pptuHx>$qLtOo+<=CIsXPo^K*$ z2qx2U9KCyY>#<+U`x9}z31VYu#YXAg<)CZefn>U}^;nNFE-D3o7AAhTn1zeKG(_Fp z{hHO2fOm(1D^wacSO`yMJ*z`iJIDrG2jGtOn|+SUZMg~3$5g#tb5KLEMo$al=)abF zlz-Z)TyH<|S?Dyf!-kG<@I3#cLJ26%tc{AGLS@ZK?M1Bv?KPW)UtZO?~+7mrGyvR{hz@ zPueU`;Fu>PzGIGBxhqoUj#)LT@#7DcQgUf9v(j|I>M4o>_ir)W262ZTYiY58KOxpwwmU+Ks!Sr?hyrGX9=i%jfsNfKfsMos&*mVaEfiU0^_&F!Mx0M=#0+ z|Hm<8Ffe|NK)9B82HnuA*~Ej%mg|BYxFSS%@F05Uq8NJA{Hfavfy!SL1`$2#wHNz| z%ab&$J2Xb=)+Djlqw=IT@F$0=t*F3n7VF5G1-IL*ko~)BY*=$iA(EGaUx!PgWZbR| zm80;{7{3rtM)TNPSbZoRdgMhrj@R}5ym}W=u6RSE$ zN+m%!3Qy()2Wl9Ka&ulgI#L8aO>|_G+?!ik0=o98ZMw2&VRFRbtkv0yIdT;dVZ+28 zTc-^-6>@?ygU2}9@!(Q)D*+J-YAbTcdR=6Z(w{or9goJ0I3BoCH9{4dtW!KO1)F?? zG1SMeE}K*i`RCppY@&c8C4!8Yc;QW5o=-m3|0!4dAe@>a9;*p|S{sNT^PvM9rfB?# z7uUWUTglSoyFSJ$asa+~)9JeKnff64#HGDxmUre#KH zgd4;qyQ7kkIve{ zI!c8FdZh8=!YtQ)#`9|B)bOsQCZvUyOssI47>||0Qd)omHMN-|EICUMb87@Qr=&oI zNM-D(rHKb_{g_bqsFsX3L6D9A=uzB_)NP-z@HqAuKm{o6PU%t=fCy7|ujY^u-NGC(8&&VMfrt zGha(?;^f!HHIdPHlCSwH| zl_`}fgg+Vs3ye9scdE2eY43P}>~F**8^q_HM(T~n`sMtQ2I>_>H%Bczh(aJWCQz#y z<*)0P^jUi|4lUjZbS+N^+5UGRVvGOWBsBQJ0c|Cjs#wWP!epD2fBQT}mOSAF3mpM= z-HS2fDpzZMNO=JIR6e(-V!S4Jii?VR7mXHN zDzcK#|G&0H+*CLZG2miShi#R4+j46Buj5=m$|6Wtcc`pex|W25qal6wG6eK{;Wtqf z|Eu0j$m^_vqvBPxa5v%nR_-F-HeoeI5O86^14oDGq0jwD~789lG zB~DSB&6~wuoFB!S_xb_m*4VGv1U<@Vv-tUfrci%AC0Ba9qbAunZjjy~d$4;AdtD;*@x1FT; zM?MzF&x`ZZ1e&=rEHod0L6nj>8L2Y5*$A^{_vtVz>}ICXBo>HYbsBEm8*%hvdjk zE>C68`yg@DvLl!F5S9W#JYCLf!JZxY%v_to z7<$eakou>UUgdGP5VP4e?F+^(KKm56JqLK<(TqqGCKv^wscNSaN+lE+{z%!0w9MXJ z#BZ!Ztn&EUJt2rx$_?|X%>-d}c)kU)h((u>nMQ^Vr(C-QLx z(o(K~_5l;}dtttJfZ`Cp-ZYCZeh&a{7d+?YlpnSIgT=GnXB#ygX73fge%a3)Ap0~%%&?h6T*m>>>!_cMw5uA&z!J?Xm9k{&K~f951kM zzw|^~Nv`((`aFLvt4@$Vzkmp=AebmAqX#Y*6*<;gO*3klz3D*|n%z+cwpXO^Q3u(` z=JS@YW~1kGa%18vhTMgt`>Id~oH|0MY6H@p`g?Ga@R|G;NbU^GQ{V?9$r5enal9vO z%7d{mwm3rt|r1554A>iC7t>A0eBuelhz%8m3J~gh4 z{Rq_(HFQF4cqx#=pn7t?h;1O`Te$MM>z1)Rr(L;O-sc$~hE(YoTyW&6VC~EaK{_2D zthmi65)fK4lW1_FX*J)NMJZ(Xi&#L23*v=5h@kDv0)fL$07+i%U*mN(Sr$Grn}T^Z z1+j5872fUP%;_T(JWjb?tIye&@w^2RDqM5&7}S~X4w6;u?eMx<4j=mt6IrQ1Dx;|11{k#w?7CG*5YU@vf%CyO{tdCdd`-T8yq=N3}Py!pof~4#ig7stOuK2pplcE=6b@=bT zWhD|}Zp!2y+u@Vg@+E!7=WG?!==1`0IR^Pzu0$U0?pJr}mOIsU|1eAdTUDep_MbFu!d z>lP+pW7Sh+BUuTCGo`nz5K{ta@w7IrfOtI=iUBzh@h5!W&usvaxF6b2$fK;h=)9UQ?GN@#10;L>XsV+s&Up+AunT zsDDgqsk1vWBwyk+rvmR9q!WqU@J2`wf67RV&<_(ihSNuEKJc?*y@{aP+E`tU7?s!% zCnQ z3UeoF{5oWN18js#6AjO%a5Ya0Z!vZuDEoPjZG(I%;;d-=63@(C$?!vqd(N|hZjt@W zMx9IgNF8UbYFAfF&%q;u&w31&5z!lY3FUy_KdiHpV)mb@$2vKHrfS;>buD;b{3UFJ zw)Fe2;CNsd&Wj7+fLspdGA+1l(Ss4_x9@1!Sm-vsU_#4BYw*z<8aB&jCcS$2QOkb& zOM7(fVcBCFR7E2nb|TFbKe#wD4cbH6Mn=PfL7*^=K`(QTyRbbEF0!TtsXrt63y+aNSH+BX5Em> zV>kk?)UOTd@XW1%1W=ZOJ5P=-e}@I!*1aJZM}Lh&A_%}sHw+x)Ll(JrteCodzc0N6xP=xtW>`vUDG5NM zC1IZ+%YN%ogP`ad>T&EQtIB>i+Uj>b+&r*m_a^(h`c8=?8L8MfXvZ&$*3+q*bI8gl zvQ$r~10iz23a_J#C-OT?_!6|7zML>i&fR6HSaqA-ZK6LF$wC>``AKj`@Uzi~qdyB` zF$daIQqO|dhaL_(eEiDKU5Lb(qoBGsJ)c>ezh}l0Aqgq1$!jJd+1(UM!Rji<;0QTl zvKUw^&fndyz8fakO-fXJo|5)8y&=JpT7}l9eh-P+t!&-0G>zjuhIO1tPE>8}oEXl; z|L=kBPp$PT_K<;5*+*e!g`WssJHN)R94KlAfV>|Oih0ucBPv0}3#OB-XVP(lv=pho z@$PvVbh-rW0U_GdD1XAm^!LoU4iR|raYdfS8M;x_Y(a*dp`_pfXa;vMEyD5>lcXan zV#(Mh`z0zV@wO%COiw13<)9x-ubW06Ie+^mVHCh$IGfyrVvW-`JnqRE>Ml&c+ zN4J!Cc2u?e%5~4mCwYB*?=F6Q2R^WF+7H5!J5LH=w3@jz1Vt*}!(i~x>+YJo+EeOT zM6fX06(=btyh)NX6Xr5fMnN?=`3~_yC=*+7}8zfE|6*)f|d6MgC6~RS4`-){4SO=QJ zm_gRresfv50IU-Hahw(!S zONXL(epT~sZ1m_=iZO)?)S~!slnoa2aggXz_l*yJm`NMM^>uV}^#Y}Uyc2qRP-0ft zS?Cu-Gnn}0K-=xG2Os0*)c%kUK{0`K8Xpb~{|F%$vbI+c#70@XE;LC09wEU4N^qpk z3~0uoA4sz4xJBEW)F5l?i1_J6C-L^;NG8?)c`0Gl*^|w89PGB2zjK{adgQe z&FRLUvM}G)xC1aUG)LC@Z?!_)T5aiWFY-SFDBGf>UPf}g!m`c10NJjizChe#6A$52 z#Ng&}w0ln2!rO6z-~Wgis2ZT+(J-{kYdLP?FNUrB*2(L_IxIIaZy%Nxe=xX^mUAN7 zTox#GZKzq$z7W5kDnfzrEV9;n2KRV@5Hf1ctfdT}Lfh6#Mc4nM0dnD2;SP5bWzL-? z_tI!EF%8F1NbL&O2OZ0|OThn~Th?WVei(7LOT`Sq1-*gUmsKEAd#Het();f|JboJQ z#gcEt;v-)dR_t6L7q&2B+oXx{|4})6TXnuidArU?;ab~&xs9I3EHx$n5Vlp}zTcKA z0PQ_0o*k1C9s9r%Bs>E2kFOof)N?~U57TAkuW&3@;>5LacK&VGB`S7iA{TIMFxA$L zPcgNk*ccK@BunMO={Qc_Ct6?rf_e?A-6xb7jg}S5=OJ5?h9>4GChWpWpf@}=I$(YP zH9*S0x*I-tcXwNoPsaba_tkgE=<3!FLHv8o+%C924RW>yg|RwuAM1k1ddTfBjb%ph zv&}ir>u^tlmL1fp;K>aT;j7+Alh)e>>oPCLIrAwcyn7uJ`N$la%9_i-sQ&XOG_@64 zCU|kK&TJhI#OugL{;wq{+4+WF0ZZNj%ItIxRdwe_YP;C37=ygau6cIn6;{ZQ37`Pn zCQ5@A@v>xs0p53Ao;9H7_G^G>*f9laqJPJ8*0zKN^$f}4h<1cn+O;x%dUpm4JBsib z6jROM3w4qsUnrONX=N!rJHn&)e_U^L*X^&}<9~{_wFlv4?@j)y(nmdjq+$e)K%JSm z!Y~~xzK9#`bxk}okxjr}sw=UgFXAkem&{J`k|}y2q+IBs7fXKi0{dkU>imVbwz2kr zr2@vkn(dcQaNSW*EB5ugYRIJ-DuFd0bSq;6eQgVn5rS%t0trP%TZ#E9xb$1;q{oYz zhYgb|Smp&h96b1pmqREa10IQXO8r~L5%RSPik5QmA^zNREI80xe$B@g1D_tb=lS(s=hzHsG@YZ9iR(^vlg%3fQC_d5oU%(b33>%(HcwI`1|RR2H{;05N(J~S=S zA%ZsYg8C9Z((GRz!;CLZgyPAtshV+00YI(^S+u1=q4Uy$r1oQEV;B28O9+O=w2?UC zD*iE*PTdX3Zx9}B#hVV_pKm(#kgaW!G>om2M1IZ|rvoN&Zgk@6I5zYOk2(4L;9(Y|?-xf}l|9+cHu^o2}F!KlqZftP72 zJThKS9_()D7tjy~ScpP_fCK6@kFshxGFni&@D3(Kx~%b*t`JWg9Fl%Hp{PhTr~_sy91oU0C~N1K!>5N4%j|n**kqd2hD@LEmDc!o39rMq zFHKaT!%dZC3^jdf?%_-1gnAu1mSNJCsVe6+vbEswP>^80e3NNJc}@*ruQ!34 zq@#fCmx&*dF8K23#5KBD?VUztg(&lsw)Dt8q0y+Z;Nnt&<-12GlY|wHCylas)4B(Y zkHwiioI~OU4sk5~Yz{G*DGSlJ_g9XbczIs3&;WBK3ryK4m$;MJmZmbGdudPh?FXR9 zm!l*h(N0BRF&J|s+M+g6dzwq3i#*NZatDLq+0OI**4lkeU5b};_U#U2WQT75g~dSO z`L2ZWAsTwMu!XSpv~DI%+CPgZo=bs`^Gnue(SFbWUIuXnnf!T6O~jiq>>`mBSY;#u zJU&frkz^dtlnP`nb;-ZN*8P4b?{A9gB+Cd1oq4YxPOi!qe0d=$#|4)K;i0{5AW%}3 zpnoDCO6(Qn2nXz*EG@Hyz2V@KHf?uRT5{B8{4oE)hPL**`_0DYi^K6n{Qj3}hN@uY zS@R}cTyxhjo6mtrqci^8zDhMr>A%^B&0Zew3^*msla1F_8Eu-gK2CKVYBo9285FGi zVQZUO1tcsfumc2X*LmVhO^T2Fy{oc8eRb^i@sG7vJqt{}mA*oN(ar1GN?q`qq-dwL? zT88*}4UA~F%SPVhYCQX*iP^fcNpNcxH-Sa-^68itZf1uW7VJ-p+JmOdfg5HeDePPR zD4pbW6ws@I@&zP-{UZ#%%rJ?Tn9Me#@ccjAzA(_Yv4MuKRKg36O4A~D$sz#Nk?QDV z=RsI^BWE1(awpJ=-uamKGYOKn0(b3w`!ROGBm&gq>sO81U#o^V@!}-mR*hdH z3Vy&|k-=e$K1}D{~QoE07^r#i8hX@tRo0TK{Y9o}>(n=UfwM+}zY!`F@$DCI2eYCoNT3!$)hO%pbX`ARBJ zwR*FTH!uxp+6mt{LsucOOq6}RQ3>Dd-1{%ukY6lpV3O%m49Dgaq7hIzv%3dMr{z=w zC2Uv(+vI+?GFiWuGB{<#L|HpQp(|y4?q)?c%7##&og2x?GG4BBb`uWFxR%5(2>=|C zm+E{ymnj;6f;x#U7h}09NyB0{S2++P^F>`ab@>`kL8L&|scLoN|15bBI0)+YCnrCb z3(gU#y!;YqYGwzSZ<6N7dL`prs>LelwKOCGw6eKSrMN<;FksFrVynr%J*gr6*fq!S z%(eW^e9id4oFd+5b5Zs|@awo@$^zey=-r@qn`nr&d5TaZkhE;5fZqe;OZy`^wyOB~ zQO;aY)$;jXF|8O!jIcG%mb^_?@21S7K?UTX*5cTRC2aLjL1$R8$`3`9Nfp6p`91CP zEa{b=+UTV{s5D~kz5Dtio+2B}M~{6c9|pfZAcM;H9;I?q5v+lD;J*i<8?Qre zw@&(h4xhNocEyhxM;bCtT7@Zz_Ph*|Fk|(vTdXJ8cAcyzpd-Jsg>R}f*0QbKYgMON zl-TTrIpVfI(eb+geB@^`j?31zHBedg1zM%g-1bu8Ts4x~{F=CH7Fz$Mz)imK&q9vA z^I&`VBbo195G7;gsV+H4uEcn2L0PkgHZ!aR{MA3SA;iae$t5gMJ3cga>hj#=3h4Xq z8CDBZ+BbXs%iRrQ{F zw1m`y&+0dpnq10ERQK@kzzK7jhmBfzZ-MeO-Lu3f@uVP9)9cCqzAjZP6G=HP(1{8a zJIIKID1+?}m*^vrb=DNmrUblPv|;I7M=V^bLB)39C6D&H^3qKxO_dGe%s>1UeoSm0$3j zo5r$Fwc#?oduUTT`6!`fPuJ8#mOQ#)-Ka5{-?wA?wGCZy_tPmG`Jk>0r_E9jtGTd- z${NQBdAJDl6f#O3_q=A_(oz{{AhUxz+Ah&m7`d|Cd~!VZcF3!^A`r33SxPwaWJ1r< zxl1=5vT67xEVxylHl(A744F%eKVrxIU#c&RvF&BAM>c#c9kJdMy?>#XkXQ7|Pj%P$6}2-VEM&K)!8!#$S2kkDJ33|1Y;^3l!p z2+Oi%u!Irb=sc^1;%!}BIVZM=YX4=h5;hx!Lq=iYhwlEBBn{EY2+nNCb{9&~n%H8)xi2?5~Q#tV{b+!CGvRaPRqh4J#fGjTA-M3=x-Ls5)G{$qgb7XS-B6( zM2DWC^gH8HfEcEqE5>sDZP^<*D`+kJFVxX@r_B|9OCwNqDOI+i7sOF-XO3xt`j9GQ zO?;4lNcRv29>jc^?r1&WzWx_esYC`GQqUoNFN2PKV7Cy)xg9g)3G6?$8P8SF1xa6H zBu&KMl#@=9_(C@163ZTlc&EFoOUtk?)Uni2vfs*pr~a7Poq1c;w!c$Nx~Z@tA~Ic! zAu10G-MwKbC=gFVa)|6n})jP@Glw*n-xPz#b*dS%5fr%?*+?ujMM8P zo{L$h-rEI21D(%9LfB&_33}mAqmnLDP-12DWgKLsCJB1wo)KwXj=Xk z6FNO`{rQt!w4k160y&*5mQERhWWY)Zu=2w} z{sO9stI@|XQq@1ud9Oi#+XDvFL=`8WCF(8H2J27|fTXukCn+C91EpHFqORvF&cxE_ z?vjqVQ#|d((zD;M_nc3IT_F5g<7a%41oTc`PX^g8m|-;p*6A|mjWZ!2SN&R=)xXPD z_mnYHrtxclqp1(qo#QGfbb8p;g~SK_k)Hk@6)0O3F^0W0ui4m@dvNd; zVn38d(~oXSA}l#fSDv3bHakSwv36KQ84J>Ey-xnwOlcNbXh99Z^YKlnx$N=@=KSca*Dbpy1uMt?)aI1Q(h zm_z04n{E#o4FjA+6}4xoFLhCpWM7C8I)rW`xpfkyd1{<%&d!nk4)ije+@E5~@n#5FXf?&HyVO3QV*o5WyzK4d)SIxwl&+XwKg;mK>E{ zWC4=F|C=pT*eRm08(LaHYtU}nVkZxFr31lyxyoYt&0Sh(;GiEX``B%UAVlpMCYHm7 zue8PSI>%!8Ugg@fc6{qn0y=)k#i}ZM5pwr>I=E=MG>Avjfo(D^<6y8DN>KTjh_V00 zYnQr(bUWV8s!9|1Nh;oFyWwgKp#i#2w6q5I1 ziocxhe`Njw0>DEduC128IOkxI3hW(aWV3vDlG{$_8G=r$Gj(ZV*Y8k^%8>JS0wW$0 zAirtzQgb-P5Jc=WLqi52iBy=!30_GE6uX|e4JW$)Ig;tg9+gyu)o=JD?&Gm*ByzA3 zBLNd78iM1U)=jtE1C012cav&C%-?CK(99!-(v-MT`$`OiP zR1p*?=3n{oCsGrJ#*{;2B&hELGG`YeGESikEx>c>G^|*q;m?^<^xsZHPTYWs{1w&J zL^)2fDfpHE<~S}aJ(G1^VUHhDVSZySI~xgOpMTK?ePk!n9Mu~FQ`ZhmkT z=_n2;dFVIHpKd=3ZHH$s&e+uVeb^6maelQ9e?4h8uWfIm=lbCj9CHG^sOKhf2;E7& zg;d|vRTUG3#{i7h7%4P5`(Gd#o(F|$?tX+xTHsG|*l&z@f)Av46y1(8Pe z>eva5u<^jE7}@hgJY@gnt2dnkl;4ZthSAG7ioX_{U$m4EUaW0n(&0fup)!_bl8URt zj-?ZAUEXUwIz7!8^oC0t%G40u0dLJZv1CpXl0)+X5LcLAh}Z^N?k%+0b>)}>%+AV5 zh?&3;^4X?Jrgjf1rS5%O(-JAU6fexanb>7&*H4sU8lbB+ZYHMS9Q{%fC!DM}^i~h>7=PC-fk2=2IY9TL4*lKH=*!bz3;mnz}W3LLULg*OF6JbS56!Mp9?^34H!J@lTh*>(L-O1Q>TTTxI| zHZYY^(l5rHsQ3eXO3rmQe0D$E-c86GlUEnTzu%bUNWE=PF`a1O>4Or4w(nho`GFj| zsjl+b1d7bH&5+?%rl)Y>d}PYiMCMt!0juS@_!OmsaU03-);RjMQK#@a=08BV%)z2c z5aruJJSlt8IRs&^Dc)CU8*E~YkzzT(((_>Dk)dnUQfLhK^5txo2NE= zqeJMYu%Lh89E{GGFVkNYd79!9=kDAqlz~24-btoDy=9jaiWpas=I5(Y9v{!JuVPG& zAg!?;ag}x(9{H2!pXTKYOnKVBKG1rWyQwV@yoLH!VGEr6tgnd1l|$3 zhTekpIE6ZSyu$tPZ>&yi`7?OOw+x1ZxKU(|k%^yv1~S*o&E^bHSTdqY@jC_UxWYsm z_+W((Uxnbb93^Ex5s&kQI&vAYEZenC6tH2S7|X_Kg$r8>mf>G(q^I&{{!H4?4Lm?t zTf;x(;a)gZylir1yJ&tlYjQRxOWd|6chb3RD~Tk-136TPP#QvM$9{b}zo|D%$&I4g z0k^uVY-|f?d=|^Kck-DHZMvv{sXM@xsIkgY*}@Gm?iV;<3B>WnB|;JmT2nG=B2hN$ z(6y(J8W2XZ@hS|zDoqn8yef)pU@b!=@OiLfUBEFK|B;s2CtEbL47g^5h4KnPX@Zu6 zZhSdqm)88NH1GRPL|hb2Qk&MvI8Rv7ZTW;+&A74`N}*D5FfiIp5`v!{E+X25A9&!O z(|LWd=%8yn+wOx2j5xchW(9QOV^dcE6l*h_5YBT&y0GqJIayzT*(jqxkAzz1E4_Z%kSWOn``!_ zepNqjvL|NQi7}yhnP(5BG7!*-_Y}iHo0TxDOu8*p2R|Vuiw*8^s!01!#NF`ta%8## zi~c0CJ=cF8yE-RjQnmBAET;Pl#+fZPLIsZM&^8cbL~Z@bEn{_KClZi;i>hbii1 z@;VpaA%;4*qbCUUyhmIXQo*`fb%}W&Bl1QVWS?usAteDN;6TS>Q-;*jRU5r|;gEw1 zeRguFD08mkt@#~Gbd!j(oIu|(!TYzx62=I?QMqr#AQFisgCJuf=%t3@KY__EC z5RQWxDp}RfH{(t^+6VGv58!J8=zz7P)@{o>BFc+1wIPEAiI{#Y z%(Y~+V0Ec_H_gbXN{(JRcA3KwkiFD*WQ!L!!N-4@M%v8idnox6O|*%NlG!QJ-)qZB zO%#(yG`habhnA0zZiZC&;7vAV`+`cu3UN%b`$rS9b$TQU(k6U~(Z_e)DlisY7i=WO z9F7Q#3uhg}GT&W}O!`Zu58Fv=?UGcGKfCiz$QtbI&NkoNof{YStt&<(?)|(tUH$7O zjRkVkz77MU&rub6)5h)s$x}g4H23|bh-QEQ&qcr^27ECPtiY!hCFD$%HEk3MDlmFV)=pJjswp1j2$KY^=fkUE^q-}L9#)TIV+g&-*jNKsRO4d?6QVSn2itG zG2Ix>Tn{-qeBjWE53ws)I!LOepbZ{z1gA@j@Ag_5&6twF3;Rrk5+!9RRU#sSCRE-) zK@^45%DR#CyW#&QTqa_*##gaFgIN%=A>|PddUk>RjAz6XRZW;X51@RzWRQ)GtmX(U zoNu10S*ugmQb4Q^;N` zbr{`VO=MygdFPk`LhlJk-K~<~l2eWfzx@)``KH@dlk>a{o1z>%ZNflN*4&nb?)yVM za~0SV(g`!OF_W>nt!=xqL_~BG#y7IcF9kSe1od5SsKy9u5~sw}8ewC;NFxC3M)bmG z8q0bS8v`hjaw43?HdI1V5@ACE~<$7zK&Aha{>iBO#684(62hk1}V zn=mv)bS0#wJnAB;;y%OosLdvh>-^9mtWQ|Yv+KJWV`4^b^BmjdYQvFt5Nb(GmIw=W z(JBFXTwukZe85kn75$?B+lfXbPxGq2s=`0XuscD8^cmZGA#ZA$^K4oWIx`Mb%ye!d zF>E7u9W)W)2LDpJz?Jm+seSsE$ql8fU}71a!RjX}NYf`|q~vvZiDh=DQCf5qw~O!Z zu4`DVEP7yK5y9Bie?}JQv?hc=WV}XC2Vgpw#o#BwRVIcNW0bd$1c(bJ`KfE;S|Na5 zNfNKXl!R1+cQB6PK%Xc_Yn)|%L5=j3N+2;9y_M<*z?teTV>8+AMv9X?KFN7yGm0Q* zN@8Dy-#^d!?xFwHOTCBgbwffo zZ^HE^_I;XE?YnF!;i4NiVGRGcQPRaWTM4Jf1(MUNW`#vXy{nw*x?Gz`{jWY40pgJk z(Pf@^o9K$Miz~rc*grGxTKTYNOK0%N*(|O;zcDvwtLFd|{&QD2;qpIQnp+Z5{Xd{9Sge?{mK?coYgGprb$amVokJXtT4HE^o3{?N- zZ+WY_e&HiHAZrfCLYg)AG#v@1ybvX}`<(9hfymTm#D(=%W#EL%AYa%={5{V9g6MB= zR_G6z!htr8>YyH@da>)1bwMAbUJZnm7gI$AMq17S(E_Z4`^boCqASsimvFyOHF(lP z%I3p;=n#}B{{Vu18xUW3-Hu*#wIrpIqIr|*Yal;-wf9+|AEHW2K{S;-_Nws-ulWxC zKMeHjm@q#S2zFYRIM>-cy4ezJI*}|t61jx6%S1VSXm#Ti+H*spk@lnKIrLKr1^$Ia z5G0xjRSt6fJ;A>FARq}m96=1*lqDp1GmRG#ulXkaxhDjx=>51xDn1ZBir!QNAm@rv zRG}}m&?SFKXdlFqyR0MeI1wLN59o4i{%60nr}@NJO4f9HDKQ0DEQYm#n?j1bB48Iz zy2)??_2XiU^CBduvZQbMvl%)uW1Lo7cFrKFyQ=^pcoyW>Y;7Gmr|z>+Ceg&Mk9kKM zwal^tS5Mcu2z#SKRc<13A(GT>9Hb+7uI*xZ<0@!SEbd2@ui$b~`5b40_+z+rnI)A= z@XJO+2%5|C;}o*xu4|gUo>AGYC0irZB*aeuoQAsf7At;*#UER6uB3zh98LcC;Mh~B z28qa`HcUz&ljy^yEnv7%KB=UqUa+?RGqrR=^M>@uKkd1V}w$vv>k-62O(Q|Jas$Tw#*>2FR zoqkL_PIB`C$VAej)6RJBH3L~$ZOX+B?TAZ*MHGeSL7=%OZ$TTKuoH-T2?W7D(*&)h zKwYFcOA}#g$e2GBA$5?qk8VnO5Cjb=_K7wIFXKl=1Ps&yXUdtuRkNd~MCeLkIj7*B z)20*cMl5LaN^en^(%r;SpbOPZAbVF8+qtdHe}OoNC*K?y{a~dYSWJ?S(N5iijX(P4 z&Wu=pjTZO{)1N*1Vwp@GG_kRlA^3&C2MQIt_1W;sSEt^%DlS2tE9sIoA2Q3u%cbpo}i zK$+$sky$=;4~NPF$KM9PTFDi0Ht~w{ZAK}h>`Muy$|kFLH{L2Pcdq*4*Z#WBtL#Zl z(jWv&@BEARJ^pf{)HNgSP-5B%>8**10BZ^|1!{~hQTKBQvy39qQf{5Rs&MGY0lJ1E zr&XZ`)d{#+be2FrRtn0w=&jSNe08l9Kp7x#m`qx$>3N$h9V%q0+={{MFU0Ck%-Zb{ zLzeNB+GGlKySE<|1g)gvY?1vyI1rUDxzGVQM0&F!$PlOdOxZe!9|n7G8ZBpp$kwS; zN<*ffuQe?JSf%9yADt=1P4?%xxA>;;;8GsX!+2%Xnz4be85WUi;NykFq#Bt#naaJU zCKqZ9NPyxfueoemD^8L$ts{ynM^E?=bmMYL6owb_MmP*D8ju~qZvBq>rcI=3E;)*8 z7kl$_@f&~t4}RnevjHd#N!R?KH z)Z5kGOBz6=da|f=+mhV@>C3yc>M1X1NM8loeMdsn%1$)28;-&DgfH+qk2NR-kwo+0 z@|t2A*0#*foGte!WrOpiPpX>+pqWP0!iB@@S{z4ZI4*O+(AaT(fiE9p9H+Xr{BH2? zV~N!~)F?jU)ig1{d5KPH2`F>wyXcxl*N9s*3PFN_e>Q@iFHjR`LXOdIx zeoI0f=^+CODA94Wbva?ha9A?ITN*(+=aQ>;_XwldX#)C=;L`*UWM{||VJSsUM`Z|z z6Xy8m4d75&iLY_h`MT}YYOxTrR|_mrOb1A4O`eqc}+RNWav$%6Ga=#Z3@t9Xf6PF?`8{l*5r%l2sChH1+5OMtx;a$lw z>J3T#M1A3R$Y{A{s1*YMEk_YU&#f#n%2j~L2Vv`!%D^mz^HAME&?^YLg;F2mKFAfyfy|#*7Z~#EGA#GvN{$!x?5F1 zVE0CbUGP>mXL8P9Mzt^}OE{2CP~*&uLpIxtxH05O)u7SokP;K`sY`i4ZjoU}DldJW zD_6+#2{fU}ycA1KT4h{j?n1I%=wrHE?N!Jaw{TMM@1EtC7+k6m^e%SY z09D}yX1l%``>ZG+lK1O@i6Tp7gA=|qS3b-x4EAYg0j3f)9AmROd3za+Yxt_!SzA_4 zglhlK5z}lF@O|WeI+5S>2Pnj(`Q%lnS$NYNTOEPAL^r0%q$@v;BdjhS6Y;hS%isQg zfRc87%(Se00}^n`x^86_(F+DrXgz$IcXdb*(vk`{eJN{6BR3(uKO6wiFY>|^a3v+Qd?mf=CTyXRGxLmdafYf+zd{ix< zh_5W!vXBN%YJ>06jH{;N+_g;ccxnpfHh1UQMwWTkT({g_K840IB&T_Z@5Cl2r{sn&@_z#C5!S6<#2tZ5I zUz?H@SS!oL_NH1T=?b7MBNhkTqfK7)b!JA9rwwTD7krRYDJ^miWtT-=V_#;g76vZu z0SdW~oOIXyjQq5)_PeJH|4r^}N?xm~EE@7hp;1sr;PsVq7EUEyiRqylP2+xV{Tu7u zFV98ueVMH${rFj9)V4{HcVkM>@dlm&1zYmG;u+)_F=`jghE&{ti@JkoFiLIXj2!a= zOLTNA!v?X4Dz!C{%QsKlnPU)B@OBHWmL-Td)GP(&D+ynxMN`CN{L!@d`Fr?Ho6T>2 zS3+8Ta2jz}^z<|Q&45~ugJv5e9=&(bI(+|Ca6Rz1^{W!T>VXcRAi)+cJe$G1Jktip z{ua29BGZcK&>fxgMNq5UA?I}9&%@_-&^aNy-iMw*c)(|v&0Dx`LF_2ZQ}sFxVCQFn zlP*^KbV4jYqBf=?pG#I9)G5fA+(K!!u2&U34F?dpO==4Up8R&tfIeYPe#o1Lm3Aam zB+-XE;-+SKV-at6p>?=rOFMI)_4vs3pgx1YR|af#qX=2t2D#^+IJAq~s)CM`lp1*G z_wrHn2_COo2x6GX{64|!KEMNkWA^Nxzzfp;usT?p# zd*0qg-az5&`dkX0^8PH_xa-cdnpjzhmoZ(E8DdeU07e#kdP02b*PT4}eV1~v5(eud zlSR6+nb>I|E$>QsO7}z4C8ryE6E_MzG;?DU9M7amu64My(8hx&*>P;&&(89*86+S} ztxnAKy%}b5q!Z?92b}^Z6un(rdM%7@WFodxDY?imeu9>;XXvd34hoguz*)#RB}@F=}eJty+hQz=~O6$_>i3(yR% zjE9LX6JG)3A#s+?_+~lFTGtUDXZKx?D?Q9MMg=Wkj)E@ZE{1L% zXt3}*Kc^Gn*XSo2Nw}R|>=2|h-Mo%zKZHocbmT7xC4*3qB>`{pkbXp2WY7No);6PB zc%t@%_-pFZCRJ*}ajCSXrm*MZReYRZUN9%i=ei=Ix=i#1G_o&g{nFhw@FW?^*d|53 zR$Tu3WNf%q1iH}^5JWtVTROSj42GQfe>&56yk*o}+B8zN$x76eS3Z0^8UCDFg2Nz2 zdL6{G2HQx8nnB+>x>dRwf)RZzD5+5=saGC=1&XljdBe(x`cvb%6Sp(@G5O5X$9I)L zjz_-jl=TEe+V~#qRjqfP{ILSDHOIj6nU>3$*GB_bWwvxyKe51@ebPHon$$>SrYWXw zfXA%&Q2037V67r!9s2!#`we+_F(yipLMklP5BIOmgjPofF^GqY3H~W2S&!tb1mO zV#Mi}t}jzhG!(;=x^_OYDc5h|og>t#k#NgJJfcE9U0XR(rEE{B`a++DW8cGuK^AH(@lloNBZQv%<#nK&V z^{UB05!+Ozit(U%dd$IDk`YE7lt%+Bv^l&KefX>9X6ajZsOaDwrh9idn0Z#ySp#n5 zRPN)EbnGK!*Dfek`Cyl2CU@=B!Xy>pfw?q^+SfLZSm*!YVY@f6c-pGDR0E5HdV&fh8QBrq>rX#hD^c_hUsBIY~|l3bed{8Jhh~`L)E-tY+DY(chpC{qNIaYE)wQR zxEUJW4Nfeo+!=?(tVtOvIXHX206{@%uuQqSF4G7RcXlhcIOjh1eVWhjlfB$fx*Dqs zi2JMb+E5gKxLR|-q=%as1{mjbnLvsI96e;^c88B)B{hksp2&X+;1yys!{re0VNJOR z8B+ZcZ~mQEH;`Dq&Jk%@Q*!H6xPTb##m`qKZmi3;cs#+NfE9#k{_s+%Fz^6>t=K)6 z_1!`H$ECO|oYH~+92+#06amJm29WTiZ;gp~IVuVJ1D3&}E7xehFiIUy46F0!h@j}0 zDQ=bYW`Zhiu`3)b>-MmV6*?e^WFzmB84H!XnI|WcreI3brlXhek)BAvyEiz-_OjKx zWXDE!)WHlZh_F`QKe`chC~c(rT$5Dwnwk8z1XzCOKKID z&0hM=Boq2RL>N|Qa*^`tgDpH(+O5nv`u*s$R0^obi63R_axGkG(|GI8RSxJ;2CzCu zgi#xX(*Jbm3PB6f46~G6?P}Y>QI{4Y|K6MnWW|v^n@(lMyb6WDdw&<}? z8SL0N6AYkY`g>S=WZM}~99lsY$qIF11(_op8GYE)i?tNOKy~RUE{;{YFROUO;*c|b zuj$DLKC%!vyZgb}d4f-9w*!yF$hUOel~h9P{Q*RZ({gS#3FWSpe`)%NS5KK8FDT9n z?2-ojge2CVJ=v_x%2zG9QYYD$wy!th5v9lMyz=dsHpzDTmbtsHE;tbyQDU1vCVCaW zgC9`50-k^cv~&&x2;4C%HL8}n=VHjgN$wCkR!i$OnvE{PO;4V;CKO)^;Cme{7w{JT zF0+%6YWhOS0NeP>x$KDGWY|H?{@IcYveizL{%DK_F_`SzYN*z+N3Opn$Tjb%=Tb43 zU4$ODlDJa1{DfCMbuN&KT3R-%h&Wy}!_B_l_zayV5Gp}1GrD+c`qb@9v!5^6CoDWeoF;?R`_5 zFYka@X-2Sl9k);h+c`%#)P0L)Ym#AakJM`OO20n8gZ?I?q%dTgdn9hIPQ@sjQ{+Av zeMG_eD3kd5Fuol{altg(!9f+l3&7Q(!x+3eS4Id@4Ve8|hP$4+!Dp7*jP~8i zh@cS9^6!x1{c(R(@;+y-XNMxU+1tstJMtJO0aVOo?P-OUU>aj#o~qn!IF-XqH>K|{ zlO(Qe6Cngr*f5!-X4IZ)vliy+({R>;n@-=#zat7P;;%3|6U=6gyAoE9>RI3brutsC zpcHR^w!=nlsy{?OC!NQ@s(4U0fewb!9XD zdrTF!PO%@qN%LL0izogs*X&-+!w|)zTX|Yo%M^-fKjXjM?k;tE*uw|o!Y-bjWLm!U0Elf{L3DH&1M$hnvw^Q)%xAIN}jW1e{ z7tcp?3Hw7bX!{pR=ww*M#@ftbLnwnre@86>Mnu~@JXek#b$U{b03sb)^D#B^fUV|& z6vyUO9vO~5cnh9vreSkRvxZs9z?2tRZku|EXy)vj-}Z~(mRU#CNJ<%IQM+`&(kIYmGC#SAgjSif#hv=F^jw)()d_0PL=oP z?}zY_uN*Ho3XcSt0T{aN6U?_A)faP*CyXwu2w3OFQB?w5-2aKDH^~8F2l>6A^NpSv z-(bph-R?$t3*Z+pl>D|$B28st!E!h8W@>@kit=HzsO_$GOS-%0Wyvp2qgQ)KR#mvo zk2n%0EY8rTH@yArJiAO@RRJnSWYXfbCbL6&--Kb?E{Q2fVDe~FtQ!q0+H1l<8l8QR;%nLt5xp{c2*@raaZ#ZjENSo@~EfJO`YeHYC8% zHsv>TvlzoD^;j)taK!5gvCRL?Qt8vAo|Ff(-`PS7P42;-8!=Vd9U%vwBXtuJgXQ>m ztjJ;esK>&6Bn_-JS`T4Nk(N5Q|J|}o}?#yPn#rcpc%MF zkw-jry~7XupCpV+>VKL$ApK+X)bm*yG$dm?G&-?3K;YgvY?s2v%SuWd)M-hhTxCyJ z$a=;5Gek`VRpE@@JgRX!HBLRG=eS{|`^CIhFjmLiRHxB{x0ZuUuc{t8dYo9#kSuvLt=1yT{hOEvs3iQU_37c99+;F>dPMpY)rfRBYX zoWm?y^cvxgE1tgF#caN>UF(pZ+6?c6pF))(*mdkaqRL6~^8kn`7_5lO;7pA+4U+p9 zzmTz(KQC5z=zR70L&B8~t!9T&GDom0kh-v$v5d|V=V(MTI8E8qWY|}`<2TnN21MbP zV8S~~KO8Ao6D6{=0d`v5puw4Um{qic#)>NUkuK-DKmV&G*>C^0M#MhnU7#1?nm*RxsF3GcSo{d^)jG(i?miqTCj=>1FLFi1_G!OyKZ(nPTlyTjG#qDd~MI5*DQBZ zE;H!mWuL!iOsgXZe$2AnhHFKVUi0vDOKc8xWP#RVp`d-|MgFx;A{(DZE(HBRM4;Vc zZSCA}STq=)`*~T+T?SkmAD?IZk(c+rZ zvG7mJtAsBo?wOf?_eII-<|SPuqmWg)mImJB)z#a(Bral^0vSi*WwM_0wDg$h$DbLW zrp$RxX8MicM-;H-Y4gr{hkoa81z@9KU2X)JA3CM5+l@eSn5^I72 zI$9T#jJi&j+eyzyVLj2K3q`M;eR36zsfhY==UD13bJ6{kdY?T|{Hed?)GXg z-aSkUG|L11fT8MZ^}ub4Hy3BNnYsDp26dUucLn_}h-_n(=oP3z^XO#a28rqe9px)g zt24s)N~(ko%6j=yU+5k4oy34zn9TAaWRIS~V&=}{WQtD7b(<@IPgU5!vl;*2?QRjl z#ZI*8vO`gpnprs?SkFdBtLkunJ_*9u%=%z2`VL>F__8sbHAU)C*cl*b^w%&&Y6OO# zz+h9pENQKe1V116+tOH?A6h(AU1yt~d?fJ=UCa@!EZDmLm4&tnp#=&9vSwe8`XZ$o zaX;QMxpoIX?Zy`9M?~&6zv;bewwZbfD~+OV_H4%9u6Ee4xTIO^8k`$4X3>F4R-MQjGs^DK5q%ZMNi zO+l5y&zMyG>XpDpoi|-}b0(SEQ{17sKVr@+cy{@qJw{t0c%ufh8W^b6_N?FvQicQ{ z+BN_!^eN;{_JpPa?CdrnS1dEiJ~QjNotbDC1h<8&RG4$102E0*jXO3BWJY<=cWx8b zgf&3~nB0aPJ-nl7XiurO!*&@ckBz8I4L1IQ5!T_Bh0Fj-Ya~Bf`4xR+pDO*k`+3}8 z&^lmJ)z2?yUPsF2ELZ#&t)m#6v7tN#RQCBsKeqo11ZuvYT;M2EDdfSleSKBxTv{@P zyS6R^HernX)CJ%4*SG>DY(2u0%VIFi1A@1X_wqtwdtyqr$s2?hD)~l0&`=+O1l7bV z8Yw&l5VS)dI8ePbLs5u@1ViXOWX(_*$LhPcw7wG0NE^kn-wf*486Fo@4cn9a$Bt!b zKz1wPr3p8N{Qx^a#J@R3iFkYfeHK}uVc6q_=ubjF`d8z-G~m5tk4tG@LCu{KvKu!x zK8d5uv*|vw2}ImBn)~{HOIKrPee#neDf#3$@87MCs`5^HbW@6v>v%`X1s5@?WBH_or_3{u* z90T704x>AhqW*Hl+G+-r_BJF9S9VLeMu6u+k&rx0lvxY8B?|@^tF<8fXkM}u>*Xe&iZ_5LH&{{o z`>79UJkJqIIQ0B4r=C#M6!O4WI_y>6d6wOpbULS8{RpCMWKC*6zi`r&50u(y#NAwg zuos^sGCN@Lrqtek=DbVLB&qi9fIx#f>?jbK`O5)>q;65Ah{{stxMwlCP} z)!*4zM3`N49FT9=5FZqlfLUfK)WiX5$lG2Q=;w!uK=g|?jTw@U4E-f-;;hOcRc{4I zKU|QIi7LF|J6;SF|A@6DGYZp*L*Bzh@@=r*_Kqs;mE1?U zct_wKv<3k-qwarOSCoK%MRrw{BNl2TG&uPHd(QoG$eRWHe;ombEHqxPIS?f&t-hw~ zPKLhjLY!=;;b*9(fWSmRt)|Ov&+^(&_Qv&0(g%_etX}eDaC#ITPGqK7uU~!}23=i< zA}7A+-w2*_5dZs5ze)8>#q|t)Z8h*nhMw{!^kTN)RDSQ>2%U4Q8kk>vUp8UVPmY zv_9sq<5ErnNye`;=LrD2XJ4){uJbMLQ_}hiM=Yf$ghyF%MazA3#@uyy(k@ONlm$-a zWqYkpZC_w+|Q{)%A_dnce!1Agqf==0RzZQU& z=g`;a3q=oFJ^5a<2ozXgqZ%d#)7}7{wY9&C`Cp%Iy=4!a3zlT$k?;@BMSM7&`^cUEA+1dWT|!hy>x=xeXE785^((5z z4*simUyJdmN^mHlRaG`8XK@O=JSvT0cx-Cw^RyBNd{F(hTY>UIH3*{F2Z$@q;QWz$ zBY}>%LxF#QawDdZVb*pQ4J_UblpX)H6B_Wg3mN4=@x;f3C!V3c*f^%vfK(N2JPKWg zd`O`>rJpm0RrDV|E`-rQmFM}5{3&^zH8S4Ts-eZU3K)E<)gkRN+ipI92o2zz?io#) zB^(?|N};Bsx4s>qlI+F|qPD)RdMSgh8UV?!ba70K7J$(dBH_*^XX=*Lo;)r_lW(;O zOts-^sDoT(^tB;+ZMgU^mGMz`x+vu>8Mt_<2y+PbEMs>tz8(usw>rT+M@hCTWTcE? z;%z+VUZS_Dc2b|6O6Bjg?hB+a? zo0!8&C*s?x?#*QF-zlVXZ!vQmrc_t5;1A)yMppRm7|TFh2w%tip9yxKRXq|p`&Vo) zr^^hEnC!muRU<=zAp0*^{#3;Y9&xMp4n7=UsO?OrAzim%WlvcBT;%_;reQvcv5-hp! z$Oqxyl+lefyFNHS8~P&trCcGI^P9+?Xb#%fA5+dnZJIEkmr`IHVvegG&y|JaWtfbq zvhY$$EL3IPL)b;PQMTh#qQl)YxX>Kjf_JTbPfxex5bXa3<4HsfP72eq>)F5bt&W*3-)WC$~H6G^zZJ&Wx&=H%%S^?I8yrTT{z1OKB z>g!>J+{csVN)y@TuE?Ms`nSQ4@$RI)IDM5T+oluc|9F8P#n?EzU;a6;cLGV|U9I^6 zzx=Zns!(q62H__>N4Zk1EH4hggWc5067ST8Z${{n$~{nmeU@F8m?B6lP9B1U^%h*s5IKFZ&m_sE+|_f>;V8F6Ene&;maN%k;;naZ z2eyv6f~LZ=8`v=&iC=}F3MCe?L$&7PSJ`;C?C0P z87yH;;LL@L^=CD8n$+^gng=4O@g&~8JuM9LRe}-|Qo2t9S_c~X2sfUfRzhqc=9Nz7 z9-9jG$_QZ3`BAP1k2c2=Q|Ys$MC-Z&(k@>ZVZ%?nR@0VcbaQYz-mxACYA#~3wBYCP z!Ngg%3zsxEM*s%GW_HWc*ToFs&eY3*!Idt9WuYA19Ue_w;l{PEN#_X?Y=q*GPgUrV zyh=kuwCh~hxBC4&G0JTyt^5Vr#zD*}RUm4;*hKk|D5kR)ar@K`YM7@DMi_s!F-bz*y?4B#ZrD zsk<$G>E!@gZA-D3aIU7dVTyD&S8Xg^{|dB2Q>fV^u8LCV`z1;-;_pX=rXwt?7+H%i z6zX?%xx6Og@ww`N`!yt@o8clrXI@p#c8{;tuqEXeja8Mhg%E_z`t0>;+Mf9Fk2=d> zRnvZyB}!ml8v_UF=wn=iJPJ4~uDR`@oD;kY{d|I@2185qBiiiCo6EAtY3Kqt+xmtY+nQm@&_d*9F%sX+@HF4~QvRxKD33++GEd`J^2EE-n0 zdC@6j@Gw}(>g5vpwRDq1bQ5&mOJ=W_{l(GPKHO%&qM6@#&KyJ*J zVa~7v+4_@~Vtl}uJCT3?0dXJGvW(9eNpv7&ChJ2IQ3mwNo=(%YXP;HtLSOJ$OTVB$ zE+(bSWBW2IRDfV!9~qqKV3g0>-=lG=f^n}#m3_bA(USC82$vzQoyju`Gs`sAP`^r|7GS3pWf%nyCBZdUUYDN z$Gf*NgUbNvjEaLTW=}J(G6EW%f=D9$3)_Z!*P_|-Q$m-jE_?~#Oc{CXYn?1!D?W~A zJJcQg(^sB#?w+_y3;pJ8j`v!FxvdYa^Q+BUb=7-oIg;9*}@faBa*knsBIca z1k2QfOfT`KWcrhV;c7_EkI0S+8ZcR zr(hC27jK}HvMb+7`V@hO6At7=#sRl2YZ6ppmEJZPI_4REBEQx1=~-d-3mx>A*l493 zwrXJL&ip;qq@ogakQwOEdIUv{p~}GWqRliJgitU!T{9N8rrdsrBDP+Oh&6E%?!TY! zLB@qIblDOxt42#=P~s0Wz$qe+oww( zDzmQbH27VK>!ajJ<%Fj^4f%6Y84AJb9f}8>Ho0HN$8xcj=0!Qe9$1v<32l21J;?h( zXahSnOD*e)y%M_Dk2T}So5sYhWW4Jj6rJI7qeD5{9P%5Wl^jli211parL*;-w5HrlThSi#!Vn zg3^L?{XC6%mYEo16@mA{%l7(WD0iB0DPuo>)O%aJ}_ zCQf>Ev4E3RSZQ0F$g#JKM~GvgKQ6e23hJ0FTP1FylF2mk3cPcIl*>*k=f%{U_}9=} zu>{+FDiEyiN8F^8$*2-0f}7!_?+owW)W>=`>+Ew841OI706wE$%}obmhw26ca#o^f zkij!B)9srLmGWUzChX=)F39#go4+q5%lO*%??GXHIY7+`(rn_3MI(NN{RS{=ha|^D zYrp$`U&!@YA6cUqytq|qD}tN129JH*EOQhF(j-zj0Pb0MoO;{DaHT8U*2iOl>C(Fd zEr0{%5l!>`*f0dmPg(+>3bp#$%xT!?=@7MG-b*H?VS+=|b=XOMxsgbg)fB|1TB)3H zRFJghw}Y>mPEG9+Z&4nfA5f3|B)KmX6rQKbFr(5(!JF5B#R+KsVL~E>zCUyjgGltU zcQXh>+7Ib~g#}Kax*hgmZ*y*uz+nQ~hdg)&O{%N(=mudmhu0;jh90l-c4)EfG%VCn zbcWF3j*J?cF8Km1P>09ke#>g$zVQp|qYNM?L7b*vG5wqbie-LPUHuKL)RIL0HA)n} zU``st>H^1dM_DSv#R&c)OSa47;;348Ni<}^oC9+g2VmQdDX^h9o5O02y+q-S`w()= z-0<*9!uW?8MbRp3Ac(G~dmKmzU})yH3)-&75VD3rWjdr>zycwZV&egXw^ES%>U%&H zn!T^9xF3spnT1g@&dmTfZd--he;V;2e-BhVU=%wr7C5pmAF}w-4v)pMR@AObE`1|a z93b}X*0nR5$7U(SJ0dp)%j?`VAEgcK2 zWYCw)(JDXpSCJnamiYv8Pnl(4(5zbafKLL&NI%NYc3ZMo4XR-h^5ubeyfuIAcErPl$*E> z2^o96EsXZrg&qEb*#DZHqdse?8RyM&v)xGNtP5%VK8fBQv&01r9VHV(R}m6Pn4bIq z=FIY?Jd_kvLkbm8=jG|z%`aGxRA&v}ThFM=A%B_jLq$e~W!~>W=U4R<8Gv_LOqz|w zLY#g?0LQy!qVseb8`Ww?H2v00SA^(7n&D8l?aX4YA1D9w-+W3G=oV6{&f3F)l=#lI z?9)i(miIF<&p+SZ3aZ9G{Zc^+&Efh>TmOBl>OQ zj}I7Fvof<;NBW;=!B-!8s zsuPe4o1fhmK-A2}JaBE@b=2xAG~nu-{%QOkKjJ=BN;}e0>-C_+H)!?W23QP%=awi5 zBQbEf@4z9;IR2}Sp3}YgIy=sich+7CZz>UCOzIB4cG38c0fIc88SPn&Rih9JzI!OZ z)h;mO))89G>tLn<*Bi5EpiZ#G-2(=l=S2Q#>AEH}l3%V!8fo_<#J{C@JD7&oovph< zw{2URbWD4lat;8ygTRIIn%TH62TCdQfk_aog@28cnu|z06*<`jO>Vn+5n>jMPf{Hv zR%8-7H-oh`Uscaq0M5&!x`Z=@xt3ULfXF=`1+mDC_)c={`vFOej9%d?$7F80>XJ_m z5C`+_(Q0g@5Va)WL^8>z>~>qEo9S<2!pq;klVjNJ|9u1fx?BPc;6M#Qg%T*stq76O zf8XQZHul=GD|yAHOTeN*u^qA3UEub6kk}KFub=Sn{5z#6ho<2v*Yk2*tDTjG6u6sm z#xf8nqVS9s9Kp8`V#@kQZUOzA4z}OZZZA~;t0xZ^Zj-(tQ}I4n`KKX3=KO60msRu{ z4d7(l?>jgB8@UoLuxnNuTlB&h*t;fCZylAk+mQ~&ORyTc0qzM=8o%qNkxiuDuSKjY zE(r5Ht)6jWvpAdOzP$GG8J2DDTAh3z8iF$56B!y8^qLYDN7$4KEOr03QY(a! zK0_C$_YNu|dF*zUzu1~Lqds*6n{6fLB2oAFahfL)%lCz?$nA|}C0K^n5+lABHy{!M^;?u3b>pbBJru_0I9zq;w?n__B;=ElB?l= zEYCyCJ3#4fIXVymE}sihma5n{4Yop=e#s0uwZ}dvz2rps`KcP1`Z2|X6kjQ43rWZX zdmU<#*n})G5>1yS6=x!5m#Gm?444)4t@EQPHvzLJI(H*o-|)&iWIwSx?8I%nE~5sc zu}(!9Q^Ml06LgP7k8W`AD8w{+!hq1;G1=U31R0sfA$Je~v4!QFWLZ+UXvk_lCmRit z8eL*gmEV#n4v$&X%^?rcf8CmfCuI`EB*1imK%o5xj~?m=M#1xr7i-&T2sZ_Lo0Joz zc?dV72gv|G2Qgm&k%N*$3gYUG8Y;QHZN71-gJz600Tk)6)s80SKMCCpDhe1poFLse zomUImB7DM-CC?TI{J?#TaKe8OVl7aaa>^uAsihDQfe;wBFblD(u5}Q~PE+WO^C?P* zHiy6O!sP%PG8fVN99**Iog#3D>AwX_O4aSLC2 zTAx$L0D}Jq@2K%m6QXYJTwu&gQW0*Vxdm7eFRywfxjbvIA+YWSV>(62l@9V$QQa9r zSfULrDQo%BSfEn>)PP8$=`O-aKIju!0h-Rf%0-6*D}OKJl9zyq09#riso<86n8J~1 zdm=^{l-;9B)kKCi#M@P<8R`@h^s+M|UZ1E)&P5!zj9Jm^Hi-|~QpXY>3CNZghy42<6#JebJs z95pm`-!Bt+w6ROD5B;a#6i2L$=}#J6{wu+hR4xW9B3R`|Mjf@3z=W!Hh$LN*8)MZ$7T>1A3d_?8i8xmh`6J%|w${bV zUR}w)NO&<%u^t2WNc*ng?zCkcnM->l!CbaXHJmkI!o)#u({@f6~ymb!JSsue2 zM0CEnFv>Ilx&IM;YEOjG@>F9fC&XhCJ@HecZ6)U#fvu8JIfUQYP0yw=3 zf^X|t1T#$Lg0$LBj7~gT zjL6v&!^|l~*V+AC%IoQoCX@HKNI@GX6)UkRpWOsS zI!ecnTNw9d7@t^baJQg^ANoVyC`P5IONkd73*rPx2>JC}Yvazu_+u~HX0p#@bvcAK zth)IS=8Aj_ZyOZ9TknP*aCWEda0By?<)k(Un>hBRwr9QGli=~ySifNsG?lOEacyhn z&IVn0NzIDgG^uDw-Rp8puR8ZV`mCV~1+7I`^U%JdNL_vk0w_9+l~Si=lmh&;szgF6 zkrO3+kxKfTme#jTL`N`P8FtKPitAR7{vY}Ivs(TZySP)lW0Ro8SiVnLMWS#E*WlQo z%11)^>W}LND0zFf{ey>Unxx~Q=Cc^@>U}}v*1C@*=q-Lr=y?4x?d@h{#QmF-qnB=H zKH=Ia8gV5-N8u|+#KL>QJpq*Ud!v|gQ<*>SV`xWb%_NeX7BCUcpin%0$7=gsi5^1Xb`1B0Da;e(AZm5ao_RSUlEK;r8CeVMS<4vaNw-7o06%hGNK@ zL1`YGmU{ufm|Yl9b;*|`SLVS`($;8+|HQ|VZ6zJl(gg*Jwd${)0Eo_UhvD!Wrx62I zyc$t+wy#FU8NqT4$hTTAo9X*c{J-6Z?ze}ib4w${AU8ds1>P#*RfFKnql))jC#lY1 zqk-#JVc}MKfMa;X*N5jCr%*Ju)u_M3krK@)&%-p;m(M#!{j$OaUl!}k45 zK#!xjELnD^DE+)Nr;g~A)l%CFY-@S955XXFGG=Xum-Ut;ZaE4=H|4z@7ymaVQ#lVE zr4D|TrMCn=H>WRiPwniPocU1uX3x!3)NQO|j;40xAA_aihvF}>4{-6g!Q65{vQ^kU zC7oCL<7ZA784?Ssj(&2HbL=LghMKC;W^QdniHuH(Vr5R~_+?G=4zyN8z+&>?R65t; zaLtqPg-rq4gJ4#4Ezx&Isiq^brud7C$~kG?wMK;_A^3T2?ufp-w`ZY7fYZv4kn;~^ zmb=Gu#L|1Aqh#?wrKG7BG0pLDOs)sKQ&C#KPMwolk{Tx&CoM51w->9#o;1TLDQ#AW z*vW?(uZ^Sci)}w#@jPwigDv;&AKJzuj6O^mNhpZjVYDLz9zA(aNa=TB01yWaTFso| z6COcnKXog;*yM9fC=ay^p^LP?q+`PIE`p}#TC1fbS`)@Nsk_dt)!5A#$=Y}mKz#^5lwFfn?D~7&Z0RIY(S0C0~{zDRHFwzRacnY4BBwXWOKxnR_1QvdHdnOL6Y! zF`yC&oYBcyj1pwE7HJpT!GIO93-ypBF^uAQ@Z~lEw4qo}@a39bRXwi#g^17habI-O z4PQ^-KCnpj)~`0T3tknr77vg2i~kQ3)8FtSvK^HCIBp?Wt03>-;tuad`FjAg<_yTL zn`A6`^8t0~nhdFZCq#c_Tj{H47cPgr$h})s3cJIhHPFNXBc!?$N*rA0{I`k#>5LQx zu5qZ1MHNoUNBg^dPKD%4bU7wY-IBEK55~rPP4LqEGu#!33Z)hj!7%X0E+&T(u2=FqtHK zRnxMDITJ9~)8Gu3oJ*Pt>lzmwxHYF1l!jHu0DaBSSW|5d^h7DsTw9>DK(bKut&u#@8I%FnlI7EC~e7 zmv(XL6a)p8E5Wp56K-#dY2so=SkNt%F*Af;+7zK~t~;L?#riG75Uyx66`j zv~1FxFxCJY(b+=%rAVIzoOZ{5Kr**u5{1fgucJgKFxuK8+QhLwxx&ygT^c%Vy!?XX z8roDUGw#hzJ^HyBZ;@f7^SY@qUb4oc@PTw>Q8X(}A|Vx8a7MM{A4l#jf~oU~_<54H z+s1;_dAI(+uQJ}tVse^i&wyYC+tZU~$pk&+$1nh|k|5F9>H z?Pez>)s=#jOCjOhRh1+%%lX~Yp^9d^d7eX#xF{q`b_?_9k1XLthmg}l)rC-Xqv)D7O1P5IB7^@_^6DH<4=el7Re!J0TGMAN$7yyC! zv1i{u$d1GKC~oK@A;=OJPa~eXLeav)(fS8T$_#34fm*UJ1>*4MjiO_Ez9z@PHqb%5 z(OpL#hve3f+NX^TsuVkqJ;5x#Hx**|rz_6~pbtF6oavlmsVCN#i@Vj$k$F5<^@y5< z9K+))E^rH^g5k+7Mf5*iG8PEg$7ePSFxd7x|3z30Gq+D?w&Lw6KETf@;MY}NH@n)?V_4odEv7Bg=x?KJeD`mDZsjCAvHQT#?@E6f- zSd_DL^AZ6tGL!!Ro&E-$$5$s#ObFNgn$zwUU~%6Rt9n2XtHvN#b8 zKi{MclSw7D=443+RF``%PkbxA?FM-pG}Z86+U&3t!Ilc#!QaHU&WvZd%iGdhE(37~ zoSn;>uWGT3w$cCjh>rCO3l;iI!{-s8%FyadzFZ9DI+Gr5YT< zQ67>nQ)!(e_UYYBruq<$db7iRbm3JxOo{D{aP(*ozNFhq5wTREV;gL7t1bT-?JvYj zt;`9XKQv75f<>n?Tpu2~_zvb-2js#_Zo--kTLKu6qY&xi%e}iv2Gix2k4yt5>-MbB zp6cM}Nw1S6r+q{~HSaGuTSUrwPnb`Kc*#=^)EmY}o_;o!E3k|&z)hJD_$@OO6oTvN z=0WB!5WneyspRvF#?k_v(xMT(^ZSoNF`bhOzKBb2-wZxiPh2Ddh#D^|YV5McBq?ZLC7b8W;RK+E zGo&LO3wysA{D=cO&=oI{1++3FJGWp@k&7B84v8up^oIDxtHZ4<*tqD*RKVI3G0bsz z)8Q?`+nZwBk?u6#RoWe>3D>qK?AmmY``0EHwbt+%=ZFl%SEOPuBBiX3N!zLJ;65Mc zr$762@;Bxhtx;}g=b_13@R^!ho&+VDN=3;f#922cr_hiCG5xszyQg-aBKXA3f~$ex z2{{KVdlV%sDD*J?VVcN0J&tSLpU+XO5gYA#R3gt_-`ohubdin@=#%9pSU)GlqCP*u zE?0Dw=|}aZaEUZU_V1TO!dv`5_srM_SXj%iVl*G?uGL3R@#1e|CZ29U4a640p?6l1)CYN4)+r424_00 z${TlJaAc}l3_9xA=L4;UXwpcemAPUOn0=@WYRgq`fh{}UBA7mNAD+`o&HTr>*0VIeTKImn;*C-L)E1p&bU zxK&<=V&$5hgul!7C2;Mji(moJ$I+e2SlK&x_QM1e4i3vyrBuC~gTn=CwKugl4GY>i1V`u)o`MKw@S5aTnO6Fg!6I{5MPO$w zKkD!OSA(i88p4x{4`Vb(`I{9H9WfRkhUADaQe{jpGFU&`%MKgnqx**+`gx;lWbFlZ zSr+KB-pJt9XmX5i&aX6uuV8hVHbB|m`82B|r`|A25vl1yx6f&$Xr?;x`GVEkbKNf} z@%7lkXhQ3X3d2dU^d9qP{N4hD*odvcZwIthrm?94hKOpFs$l?>#Um)&7T-SZ+<7xjAiZ_US;O``DR;bWVNwdIKPR%QA_C@z5G}{nVps>~;kY}|)Ln>r4dO@X1 zDTmF$p4Q6O9qT*!8-&ME{zD%I5I(U2w%5wBX+Ls>cFOovii; z{X8)6-*U^?Mhg|t8;$-zf2%CE6Rvjr--J4lOelI$J_y(goOYrSjm-5)6MLY8zFIa~ z0dfz)j?dSTA4{s(6jxdIw0$_}=VKiCw80ecq1?amdxe=fa0$0~)5l>N3KHXmmSpFg z#0hAl(7a}cnSEH`zz95_*7iLX=!(KZzPP!$aN>UocWhwh90jn{La)_2!6!~pqU&`* zu%h%n;hbuZ$2Tn2FT~p>B5Ap>d%}{j6g_(;5PDP4>Qj;f9iOBaeIk)}OONi?l=o?6b)ibWfeXF?R#VX{ z%fg&u(I!vEUdAuaMZS(mH#_59J5;%1kTzUo#UTYryVeZ)&F9M_UBGRI&be{AZHF_h zB3sg(c@!p3k^av6lTVWE9TWYwsmU&dS83$dfUhnU)w1-W{|3+Qe$u<#y?J7oq%g0) zkWL8=hS{^d_kRVLOjy=1BUC=a<_$r7>2ht3r6&Ff-P>E2HEr?)6g8}UZb2bB9heg1 zXs4mfQJz)RaIO{`&K25Wq=O2N6r?GnlI7U;f|9s38G6^Y^9e#r-VEz@?z1s!B`9el zfcx4+5Q*jD{rY5n96-ZrIfPm=AUvL!8S+%4C@T~%=IviF!>gd5ZaQsO$W*1cukkhp zB9y9VIeM`|;von7w-XrOgb9;Qs>#Na7QGpox&ALuaIBnFiQ+FMzM-WqgW5QbC-bN3 z-wh6LMBRsX>}S2>2y+KluRB4Mn1nhn?|H~Ug)KZ=i!q(`&e*6R{|N{z7|ZqHB37YH zZ^)9y!$_R}tGy&ZL?ytur$#9HQ~QGr49%o}lavQZmH-VHH*JS@5JX&;uj#aD2{=iV zRwa9SvigINTLV#0J@ryq8vIgVP5kJXfsbH#VHLuSq-n}Q@2OU+F|H@$m2OEk=#>$? zPt01{(wbaf=qbBEdMYpqf+2_tYT$Q9!=^8cZzmh??3sY(2?4&clr;@|Kji0k4C-Fl z;~BBuWqgVPZxA`J7j%2J5lqmz+l3iE$mee9EhE@ zNY#Dl9Ovt&!22e8B{}h3#FBiXzRiPmlUXa7iYAId2$ zuFcfO1o7Lt&?FAC;kDn6MxjyqjUU!wdR)|kp@XLHJe0se5;jqsC9>+ke&V@3U;^{+ z=rQ8L-E@o`s3urCZ*D0?{bgTbkXvB+*2H}f^1oYG;I$VnT^hEC-_DcM=K`cj1av_e zgmiA9QGyVNaq=NZ=d;i)+SZuSWT6Gl8~b&Y#(;UcpPHpsA*t;qH6KPA69rVq6I} zYGswk7cjnAGO*i$WRUIPA`q_3Koh-r7~bTtABHFtKQ)u!bKMewFy1t0y!2*>Ohya)F@kmVBj1o9J&8PE0^StLq>{vCocy#!llCgTg}-4bm}2H~pt_l*p! z7(p;2wMw;X6?`QVIf8jpW8we}>Lab@q zxOOB$_qPo*{ELGiz%(f<88zn{Nx?1~9(ZS`vJvX*m%kKRc>$B&Tm*sqN{27-!R76=1bT zFmi~>iOuFlyhi#X^;jX`5y)XVayb>{JmHVEEtsuhu1G8-d+;A1{>m79D?BV?9yzsx zEj^EW24h-ha#dZdN^fgejciRSD2zx|fPrssJvQukmj-^<(+dp7`ClxI*+v-`3ji5( z`gy>|&!)ufl_JkUA3gx3pm{zQK>4La58Z2`zsp5ZmNss)H8^|wbu=)iSEolrrn(PONN z8Mht(D4?_WaxP7$m%GYx78DZ6LC;12>RDrs90Oya`VRSUUnC0@oMs7wwU|N-%ViLt zYjO$LolMh_H923eA#!j!Rw1G1*F!|T8ks=7o1!e?si}zNaQj)#T$MA^jCVI+e-bE0 z$^FKW^7DpG#&3O%M94=kW5hSUfxQVK$kvRMGhf-EWD zdZuM^$dav6dnu>$uhL!fG>%~=J5!{6C9Qy9NqRLJNU*KrQ@Uat&4!MBxG;b|g21W4 zD}As__%J|I8vr5j5_={QYt{&Ma&o!uK^y8O6XNmNz^Rr#y{EFPu2=8Wae(WWlk9xp z;fZ>JKmQb6cG0gpRt;B7TjI)QRae1ufRA2kVgQRVBonkNpkRO&@!K7r^kN*&$wn;; zD!+K&wQEviy(y3|4MgnUB72W|ob;;`bE~{KR;?ut)E{)+2sJTIuaz$?)#V7o21wcV z#9A5laFF1KH1rHL=7sO$bTKw_tRxzpPcjH^5RM;t6CJUkEtm9BD2Mk*5jOuS@4H^R zI|~WiXjbn7j@)^7#5y-}g)JNzyI}LAz;(SJX2X?%>eQ9lcF0~>4NCXS<-BBF4Nk{C zt#Q*S#_@Ime<~^7Ci$16S4PkQ6FsJ_WdYsBe&am7n7D1wW|A8+Vh$<}tGXdmFQ|Fh zcdH!Yawaa3gUEwVF!}j3rZ;(Jr)r`=wZk0Cm#8~U{6a!|=%{eq!g6XWLW)!4etT-|gR>Ea*jC>?gx zuFZ(nYetOgppA6_XlYdho!KPQvB}gz5XgdszB^RRKau|<(Zc2^fyt=%`2t^XW{sRk z_Y9M^zTBVdNvD!tc$xU~LWRC1fueC#gkRIgs;2erD!_|fR1xK|^bD50rc(#es8Zjc?0*rbvE7 z-$70N>X!IPCXZh!OyO9Igv3y=-CV7FS3TiGxJsQl)H?F%1j=mftU4zM_0TA$*p}0Y zTYHCAGD-H>`ila1+|!11CV*qap%*NUx^$=98MNiT z-4-T;@!ZP+AVyMYUL;E!M9fQG%2y-E;X7Z1#XecH0i?~__AL9=${z9b@DM)$~!#Tn(a!U z!+5gd|Ju{>Fgv9G6^|OK#x_Y>=S{SgKNlGd>l#A&bR5gW+8W>hJN;-kr{HlacXLth zpG z0)pi7(!=@Ob|cMsSGXTjugV*i@PDNdlwHtCpM^y9!O=rtvVh@1vjdOlSQS}ZL7LA1 zzWBV#%8*RgzS>ikVH)&JpGVM`mpGQKsEBZuB0q9pp`GmVy9@3Leam2Qp?7i)BS!OB6-*8XNY=5cRWY~Xp@*4xKkWwJ+I zQv5Ce04fRc!x1mh#s}jAO=8`J8O>GO#wZbX4LLjg>5c_=oxl9yyj0zGn|-6^Q}!WkKrGMR=3=n=lS@j&;7T`W^@v=V-x8|- zUV`sKjNO9yEjH}G6^;t0ib{UwP&JcIm1UX?+$ANnU3OB+9KxNrg5T6V@Us|j3rKyQ z4EUi3YN+ZAxXn=Y1@hx_M~Gu$wFMEF)djhTGe%jxr|DKclj?u*gO%7;R=)d>U^bTA zDpS+XV=8`^9d%^yTq!SLNbEg{6Ei1VU2tK{LssmKLL zll`V@edJU}!fVDPLXdu$oqb4Y)!;Ti2M>}S~W zKQvMj^4a;o<^FVPbNjk)f1pH{Wl9*WZ%&y6%|Y>C9~0@RgUBc^prTI-8s;+%H$cR= zUufjg;_r*TK<))^Kzn!0^{x_%V9i7Mo)nGxsOL$->YDH=xX9z_%+WbJl{cjyOUr;p zE#0iCYvvmZkLdPHFWd*XSLhVwpcFRaI?vZsTQix1gj=A_oj#w3V`UIH)!1!$t?vVh zOX|35c>(cB-U0Q9`3D8X z^uyTqAIx8vZLc035F~Wq%RF;zFAUbt+LZk~+A!Wq&UE^6$>UqU1?AoVou_- zccpHTegFypy!1yJAJPw_5uZ8PBv~sN)}LUh$s$(E24!vI5)BrN3s%;nn3F9yr3z{* zsMwk2%CExc29zy5XjUCg}Z( zle0boQ>P5%eu7zJdL%@bF{C0s7VC74%2;Cd={EO%A;+FRRs>#Y?x0P`irL(BosT;2y_?5mfX*aiXxg@+{zelwog_#LuN+r8I$^0Yi!h$ zk4cn`d9Wx$Y(n7ct=u$-YdZuY3QVctTVmhY z0cff&6HbRD@X~93$hb?}P?YTORn9C<+1e^-uRv=+hlrr;43vc4B+Z@3V(6Vnd@unH zG9{7UzqONTE$6x}bf+rAyuO}EG#6GZSeO!?F}57TV6q6s_SpQqMSV&DZY`B>*XV1; z9dkvN-I{u}XW2AC$ttTI8{7t9(;-?aoJ!jm3xpa+>G%vf+ON4^q|YRF{GKj0PmtlP z`dSF3mqynIgNwVOr8d=YcsL+JJ`TvzXWVusJ4B(V5!)tng!=z>Y+Ndn8%0 zT&^1{hZ`$zD8)VK>)bXJdoN=AFNcsKR{QTW7L zbDr?HyH0CWhaU9u5RIrlSfK)Z0#-h&`hYgjsjO*@foe`tQv1~+URI?zICS`r^!wju zN;B5lf5(?12q?7W!R&#PN_v2;Y~T;1DF8`8w!g&Sv$kszsatZ;0;f8hQYUbtbw>-% zF{J**m?B-pphe08k7g3i5dCB?#Oa4-4L}$NO>kJT?3cuv(=l+<pE9*zpI$jXxCABP0ju$z#%>Pi`^M|Ij;P-t4Cy9^ z+{WuN&FZBxR6*H7Zt@Euur?ezy$yYpO=*|PfKvC=7r_%0){|etFENr{&C4dSu6I`%44%P*h z+k|u6#k|!3uPM;FL1s@eV7tqAZl9Goy6opq0^$TEzctcN7qj7dfrFGiQG-7X@qi>7 z{ozCkX`H@|8e6@()sOt%;36&67Goi zcFv;UTp&h4JTKI#b@OjqD)|r$_@JYP`9|l{SX&eNTQ|)JvtA^HrHnf}==9$#C1O%N z;{7>=9DE$1D7CHmoI;8e)B2cA`Vq*TC_2qi=&O_`-@IuZwf7XM$3RA@=;O=Sa%D;j z+-*@Z6)M25K8;75QJsR(RE)G`T(C`Q zjf-%X>MISJ|G{P(u+r>-ThrQeFny}eFh?icDNF@0-wS-IyN>*IV!i@f6OZ$FY&+^72z4Fl5bk?9l#rih^2CzjK#_Vb%-EVvee)r{`IPahMAsED}j~odE3twv%Z@% z%BTR>5^BRP<^|V`$3knx{h@&|RrpHXgT)DDe8gAS$8%yDpB&E3(*t~p@Xvfd8Kc+V zlxZ1TeHEEG)Tg5r)uIB+-d%bk^zsIqlv1;s?7{<28H3hd)K9BA>8QQ`0_Z&J9OIu( z>Y^)1yjbbrl(nWYhuaysps9AlW#Bn+E5K+n7EDdIo{b&Bbsjn{$z}rGh-Bu<8=02v zVta#);(VH~Go2DT{-MPX;|V4MbbyjO&EQh#3G}qpj*#BV$BHc&yeUWqKkZeCLmj%{8QqHCaa_S)TA9du?gKiw<@#< zzqKo4oIM(_#<66K?V%WNw4igyH1W*w_HDef2{yTpJE&DH5cA!&?xuRxS}hTt=G`Jt z?X|Pxyw8vkzdqZHC&Xfhtb}=l&{0g;TO6*&LmQ?#4AGG|8N&t(Zk0LRzk z#*^%&&wq{sZ^=Q&AVY|P@Tn>1JZ4}C`J+iKM?FfvIVf))KTm6=QDk@u5 z7()^-&o&Z%;K8HT&F*+#oa_t2m&8y3_!je!nyjXZ#ok891VU~o_XmCPKj?mnPtD;! zX2LJSbhbuFQ)lEbZ^qK|$hvx;5SJV?N9S1e9T-$4=9mf?iDQlarj5jNxYOU>YhJt6mVZUh6zc^$t7?EC&> zQ1n|Hf7Y5D(l$V@WHXm-C*k!lriR_eE;DG~ZGh8Tyf;ckCIJ<25fP5zJ*pUvG^QRu zxJ`0e(sTWz1<*M}J^Lsq^L-!6YR3IO!q#LD%ukV!z-M4+9Ny$$w466Z$AA_Stfg1_ zhnhDOb$H<#Y-QD7#2ygrX}qeY>LuWJJ9anoGwMtEhyKQo9;1~XDF7+hgJCd`cM0VG_^XS)q_Zy;N|o7Op~%xXDz1_F>t3{6 zX2cdaAg5>}bexfCf;f7ax%f0C=X>fNvAPSR^~=)w8*VE8BK;HOMHK;R&XD5f{B5^ zaMU*^aX<%9eS% zRr@?d_D&S5{s$6z2=NJWej89@(r2Ngj_S|wUw8hjX@`CjfAfBAE_>HseLwc&+5V?F zz#+BIy6#_?&

FWF`p!G0;X-6M^>s!ad|67TzlM`KIC-u~S)h#I-Ul@rKjY@mAOreQan;r2>;4Gh z`&-!fVZOA^uI-z4-<@%8J4h7v3B;=cE2AQ{=wRNVLV=Wx4%#dz60sShK z){0YXP6Ae-Ji)@Nz*mBeGShMH)~E(HMuF4gI>MN@WY?BTc?Mk?LHgzHRuzOGM$^=_ z9yKK4IQWN`u-J7I!IRl0=6NhFWw~YpnqC;e_rOfm>_TdtqDUb4kueKa#sZF3bH?6jLUm=V8%ot7^W*RaGKe!*_1%qep(JR(wq63VLH~wQc@&)rnR-zzc z=eQoFak6_B0AzBuXzhy{J~gFDVG_)n{9_J#SEe~fH>U*Zdlulz8lrnDGACBA{SiqC zw(rVIv6#w5U)$Cqcu7748ct+37G>HwB#jon2oAbn9ob2w{5J^uoSe2S_O7~`HlVP= z$?9wNI5c5?#Fe6&_E}kN$k|y#W3Wq^=qhxW9@3LBQKwLmAPv{8UK?mC-bBl!(qE~Quf9irtH`CR z-2e#FOKM$_PP{R?Idu1sf0tEw`Y&f0CAuW{bhN zGo+)Yl6CSWdx4*rNAPuFiZOzYTkv7&A?h^W7(;&9G1?#ra(+L6$0lmnk)lRVf3Z}|vzXH)O?_vPM;dg0F=~IfMvS4zi-O4YVHn3R6n4BNA7^?SD z%yU8{r-7}|Nap-L@2s#I9@fCBPI2CkJFF<^9;9l4IQVMoCTh<3Rgly|#Cf4~4_;9- z^g!wH$d;@(9VLTZ;xxzhz>5i+WsaJg!i0xDewiB22}1Opu*YrgEGi+gd!U!;00V{? zEBzbm!ynKB`7FRT?`y8)-c^6d9kkV_ONbS-jJ8+wS21SZR}Yq)yR<+}u;7nnJ`HV$ zWgD)3jum-1Tdg?I4#uA(bl(`Fs-Yh)>QbBb(A_$XPPu>lxkfCK-#!J~Q^Q$PSInFs zvLkegw~!*@l>eB0;JjlXjcU&E4}0iT%ZT#XVms?0g+sQ=BJUyoMYlYnhf!Wr{IWL; z)`j-sQ~7BZQc)B5!69Ou-O^F~8K#MG8H8>tLHajm2vqzxwe#~rYudSI3-_XU z2#3b4IJT6Zs)bngFr*4g;G5)9dcy zHO~F}-K?a2VyG!TumAIW34u2R+oV2EwY4rk1Js^CBgyZt6bjo~zTCs%XP4gOz^xM` zElKr7t_k@)6@zTfmVf=5_r=JOy8OT6Q|t%Oo-tL4_8ziA&xjImdmvkPQ8ohN5)!uK z=zBu8eDLw-CzD;knv|;22c{N{&2{aDTz7aDZ2IL_nULm6tVBnkPH1VPj#~uNp^B(PBC{GjtHCS$zYk5Q=BpC+E2EnO76j`v8IDcYuA6i>jkej4^)^-)3oN1~Yc#O9Zwm z-bcU63YeO`kgeBDfXjcIpwLrc9ie0y((zXD2R$wp-vrxoJ5)**|GhtSda+R>>l(+@ z&od+apFI>T^}iy}$zyji0ibCNz4O|n+z!BlxC0o=z4>Et`W(KN7=qYQH(0ni4Pfz% zdL(N)&))SR^d34Mn?>`7zlI%z`?-zuA${qJCqsH{hVB#9tS4bGC>f>pobY#sr#gET zW=LJ!p{pIhT!qd@HG}Qp>oftgO$H28F@TWGUW$N$vB|$)GSU+$B=YEipOjL>%wak>2$l<@G40U2MAj>fXHlZ$&tmyu&`1Ay2>vzQciO*eO%YgBNaH$;-A zwhXQtS${?lS&+BenA5fTROni|fu2qcE*bZYLpC(`1}t;0mk2q{dJPHkdLf`an240d7UqOt&VgM$VHEMqbE zDcmWf^z=}LK(v^0kzr%^) z3^JUPI3!H%H4HkFKtPJ^Jge#2i}@Y+T61f(Vw2Td`;uegke@6xZup+j zurEe-2vqe6xyd)G8s4u%8(G$tq2CJY9(EUy$X+QSXUluboL^S?Y*SE+o8Hn1(;oMd zIlQJkDwI~R8?8*8ox%>{8$w~lL|C6tf8D#iyM`O@`oNyktZ<$tmADQP6=nsqoR;5L zD&hy>E9O4@kzKF3wuFKcNHtDEtcoR=jFNGrV5!0ehnASxqu502lu`)M^2@Z}qg@;J z(YQelNrk39%2)cl!-2)^=hsodihsItzK-rlbeyWRf*E zP7Y7F;z$yV5sPl%;8_qKp$jf3>eZyK+jWt*3~q#f;v!a3=BZNJhOQc-6{XW z@r3_ax#p?W43YJoW0ZjH)a;BXj7yA@wgjQH=&Q$=bJv)757T?>-L1$x%ElBCZ9YnO zLd8&Bd;y?(PV|P4mfz1Oz(xcGqr^P1{1XpizA78fI^bo*8%0N=!D2IBICA(~MV~OI z!FFN;J$V)G^c~+GouzE|E4XyNWYV0$>&2j0q_vL;pC;a?%HvqgR=O${)Fr=L)0%$) zONyLN^$>a87z@&Uo15QbGogbu3`djZMDc@{R2!Qitbp&Uu8TfUh=Q}~z z!xFe1XX0a_L>lZY&r|DI!$dt{kp3f6M+pkg3_~N;8R`O0 zt{kdZEhOG-t;T8wOPkPvpP#OFhN&BMrURGskpm29Ay$En#NJet7b*OBu^kXvqa8P% zU*_t7AvZ$=PZ*60pR<Uket-qsTvg=+aBvWZb#>T#}CPYjyHV(WONh zJPvkms6M?L{oDwgD=h9DH7gN#Rn=lFS=AG3U?j)#(nK{5Um~+4VOP2YYinU5h4W4- z!+YeebDO3u8Tuqj!Exnu{T`g?1OTXOJ#1;-9AiGMJ8%_H{3Q^MpW7#6gMM+9HF=Gg z>Gid=_4r@eT`$^9f?@G+&4uhjk6}ijaoa~YX>JQ2_kKke)R$e8;P;zfZ3=2g;Jzal z8>@O8{A(}om8w6rYD*SL7-|OTlxAn&PqNM6qou~FA=uD1GI)Qz(e0W{RIpR7 ztov(Hz+tHO6C3JH(o=yc+1)%%yLJ0D(rp#2{VL3QLAC6aDK2tUrTvZt;=XOe#1(%& zPo0S`b=_?%0p&8gmWh>KS21`VTA~T$+=YQ3G~VsF%py;i%%oC~d6F8muPo4Q3CW+r zVqg;$MXa%I8@y=}_K6Gi-(ud<>=9qm&JdKN;EbNd3O_K%Bp=W$=UGCs=%HH}Zc46% z6P5nz>PRJ__O+3LZ6st_FMn1TcA`*Xfmjkx$Y!vuT$*gS1hQ~5sF+`Y+YTQYke>@ug`Hw=Hy zounT9@4*2$m3YH`7lTe#@IQbLC<9t|dKc(mJpYItWZ$+|%l*R^YF@lmjJ?NG45EZ!z)2l5UI#2C#JuVCcmqSp;@O6*X@ZWB83K+K%jka-X<$lqf# zX-;t2{GJ!hl=haeKTK2&+x#6zp> zSJMS%0>#o-nrJhn5HB$ywt zPiSbEGAPmTICGNQ`Q5?UBe^O`86!kITCyDWP+<*F^B?Yg^^M^0HS)GLqgaO><0GK- zq*PpR^D$B5LAO_5ZhJWhDHUx4kHb38Xs#1cn&h&+(e(Ol&6ySb3YP>!+H|+4=JV`B zbq=nDS|$eS^n03C>^*YLduOw=72N3}%Vynv2F&PdNchW3HC^DUDk!)B z6fY05-89qrM-lXfgX2g;M&UT-R3WltU+x>1%HN8b)sPqXYhRos^lsvn?B}2{1!0o9 z$kJ~q2G#{v-g1i6Zabn7KOAcG2KaZs_Q`5I13NyHg^-PSlALB)rw6Mmrla7a8pO)# z30$VE(4kUq@%I`#@;ikoC0UM2GQJpgRuQr4VhQog=qBeb)3St;Qw|htaa=bZ5ngl7 zPajuEb_+G=s$QKV_RD0<#O_YN!3Hi>nM@W5K|BYw zBc1+yv%d~h`$xS`phvfOs)z-idAcpUJPd=+6z90Z|AlN^0D`WQ9iSD3`>VY8>IkoW zwxwf{0pUVtP7XlT?W=^TffA45EwzEt6Nm3weW%|gcwu_5e5&#!`g2d)OAiBTji$V= zK6(3`brH9)v*0(KrLmcaQfUoe=GZOzmC(&~75+v%CmhyMtMMp?ALlJ^Q~E$HXtXtJ zt3C4>9+JJXT^Dm+0?}>QIUOJkClSUe9$qj~ubjBBd^@)h8?sj26sZXl;*0bz-IbqQ#-#7l(~RoFDFij>Nc zq1K&}%q}0o(|b4KWTO9L7|e@&0a3PyK_m&*&gyPSXgN6*`+{e>v~SI1{^` z;&>ZjtPI7ND4e$gOZc28&w1nTZD}|ki({^?dKZ9m2gbe>#g?wEwy~UH?`i6$SPUVb zm(BU*qUFw(E&;bh79jjXdZ%y~Z&*eMQ2ztKF1(IzN!sRzR>1CZ0f`P#PA zhB)r_Guh||;-%bvM@05fyKU*VnrdV2(hWf6(Ei%@mD~nR4(;5g{O53#dyAQAOuR49N0U- zqkdX{PDDCQ`B9Z4$ol#+^=n0>k&*mB9t4Kmn|F^aIBdsBG#eXE7lH%qi~VuLUVZ93 zU%qMyFtenq>l^}hB$PNc{RPOn9!ms;E_k>jWHU|?1GF@^dLWmD%P*|)jzUYhyuAhN zH6)Hl#UgQ4xzM8SO8w~rO{l!(OeO9~CRi?s`!@L#Dd2L(8KJOn?G2O)lSHM;$oKd(XC&t>#<_7jYaGDhNL~ zuaO9B>vX*LaZ%(JbPDyB!}63_tv??6=EkS;<*;LTzLfl+R7g4@E$u36y}RW(LH11V zmwp402Ug!6d_#tN_CWH`4K*&?82tHNNvRq~!Y?m7=s0}k2=dJudJ0oxE_B`W-m75X}aT|)h_ zN~XU>hZr)by%-uz_Xn9g+;xNqvY_CsmD&WKV>##&B%-8Ciw#P5G<(}I5DR#FwKa|x zz$VszOkbGp(PZ30Q&royHbZI|Fk}LFO9&&-)|gDZ&kBd(u%hux zVBz7wy0C^68r!LZA z933V1OT)o1E4Wr_bRCI7eJKf6;${Aa6) z8*N3s=M8_0?tM8PJi!&YieNtSr49CN_TJ>auROAuM|V#AMqe7!gB5%J@7h@~a!Sz- zEJdN46lA*3-cZ36yGZ>F293-n>tpC7eO-+T)o0^`sezPTa+BNk4eFqMbX>iJ1JBj z!!2LCq2*E!%MLSE9FK@6wt(Q(K^C%h>atBh4?`v+Dyi);YN*hPb&PvMwLR8xs?I5U zkqC;h(0!NerD%0K^&x$RAh7(Q(w)Gljn#04E=oTaGZnkehL-1=uHDrGC0xHrJFCC{d zXQXD5YAPy^FJ5Xdec>0Xw!9?4Dl>mgyMW9uTOnh^4Oud!fo><}>OF^Cr}zq(py-*o zTd9>69{U7&`K?h?rs?qx>lTRw$Te%5(u_5g@ZwuBO+t0y_9M*{kq^x z+Tv5+Av(PAfNKjB}J+sP=2SU6V|%p-l{q~~`|kwFGfYx%v=$Bu&x zG4fFDjhWI%D(Y^}6INwG!8~F?ICji;FF#FhyW)%V4m|(phihmLw{MtF_$5=b$H^@dk8mD-fBhRF^sFKAr5kNwEru@0GQZeJVC1xV*K2>Ap3W`D22PgSJf)BFL2Q>|4q!@Rx&S<#DlxP0aoQ!Vzl-F_Qn+Ead+T5$aub6h(gwFR)_MU5uVEVtVu_eA zbT%H>Bs+DVLbiQKOAp(co9SlxA-c-YNQ4@334+Rpg39hRYCrwN_oHRNqv&O<_NQy$ z&51y?c%9Euv$~QIMAZ^Br=x(`=M(}i?q5tFiYo@M0U4lt@6n_01cJPK&T)f;#aUjv zEiGsaKgIqNG_6*>xf&b7%owNsN)enm{>m_!X+oMs*yu553Y+-FYV~BB;45R7A?5A* zE*fn=ZGAlAkUt*o(!3FoSmiMm9;ce09&4pm`fI!>N+wHQ8%+sILU;I;%S-DpgiSK; z>EMS4HCH*|=VMw5`Efi)HDD}#Z35tqx9o64?j>St2#Y)l z^0*Bu2a-9BtC6{rbQK3(EYeyl;QC^GzkT59shgyyd?iHF;G=O*Zd5jDL~AxPPox_# z@&z-rpp6Br8(p5tK>&jWiDO`QRysIupseLaiae8LXZD+aeYX~PWA)_H4^H$eLPdpA zXU8TbeNVE59iV;~)OXG^H0#qfE0wRJfM~dvy)#B@Z`KJPvqjnm7;1WW-`{6DaaVhXN%Slh+%A^8qGWe^Uz8E@fMF4X zU`JmtVTMG{Lh%I`*T)^=E9*ABFPJ+MOh!DJ`9b8%?cZmb63{RIHW>$q zzrl)5Q+8SV$^7@_hC?aiII8At4n(IkZ}QY8MmX5XD_NGbws~EOF0zO$CWSt)oWvEbeaU z8B-R?w#`oc4Er@7MvYW>tPQ6~r;36QSX-@VW7`wIR@kk^kBNQT-4Tz$S1M&na6$9g zIn;R9h`a9OZE%^O;jTh-p(YR7<#ALf1t(r^Z3hltE6%QBhkCcTEg1RrD{SEi8Q4TM z=@EHm+Y-Ro`Nu)=XP3`=EgQuC4}G}Mf(~L_s+5N%7h8ja!gOK0OV9Eo&coa|x0(k= zcTR2@0%-M-4aHWP;OwWp=7M__bt%RV4z(UJm4q!(fv$T>8JG@Xw&5|lCnn&X-gG}$ zKa8xHNIchmdjAbXl%cNj&qI+06uqFH%N?50cYf4ajzS8SOtfnUWN|g^q^>>jRS|4X zs#4pVilC2-+#VxZz)zFcCuhzh9kvKG1fFFxv@xz^o)a2<-BX)Wk=51htBSY0yoBkV zczJEa5Zq-6qdvFruw7vG^k6Y(;z^;3jSw((RgUA7eUW-E!-wKrGz34PoP~W;W}HdWTeo@17W$IGj8P~D3wYmPf45MnlH0R*f?Tc4?8xQjd@$)j#45VOXA5rud4vkN{e{JA!9HBbtDuOT9+02Q zG+5s~NXk&rPx1PWe5eybNe;1Sf^$gB{45SJu!DMx&)S!@)rfVe{$Ukf|I>e2VIrf> zc9Oy%98Q{s>A=lfbcl*rhxSJpodsJRN|=x9I8duV2?3)u??p~0JjV@OW@gyNuetss z)X2!M6t2qu^sHX0Lp7tTh`|$+IiESzd_O5|SA@RgrM1`jb{7%oZZK1-(*tRkF(7E_ zNI&6^OYBYEXalWE{MzE7!|j2Hu-g!UhY~xN?>eChBf^_IZ*B^%|#C=s)!G$M0XpRF}|xn@;aXMlvMg9Jvz zmT@Kmjy+c4HJ~!bV3^Qf{!Jm~qil;v&uXu)3DG7Oohyqvn0OwAP67(hy} zS2In7#XI=nMe+J45=KmV#X_;O*%gA1dtMbE-_|9&0FYQJTq;Cwg zhhQ9w%pBjUlAJK`*`+bN1cSVC_X6Tna?EO`^3qyUw%8HQAJna$SNV08DYIxBmu;cZ z-Wm*7y{;&RVjD~)g%OO$O9k+pg*Ds+)`$-@S>W4Lf2=WY3Cm4tiitiFTJFCwS7gug zxp*bCdE@VeLJ`MySWskv0}*S41%*KFU1}@06W}WRd$-y;V}LyTBkT@i*7|ckQz;*^ z3%W6xYGfXd5#q!zENlI}?*gX}4I|lwb1P-=DE5ACHkdZVx!cQ2u}SrLq~i9?3tz0) zE6+dXy+U!o#{wdO$UF7ouM>GZO9IIdleHL>fa&gLZhL)qXWwwP+crSHgT>qkMU9V~ z<@~Cj!?<6kiDzN>HO(1&6C7Rlg#E$t6caMne5cFayqpWGrmT1}^xYzWCc`OnDeP_h-1N5+n2%&VV9Ee+jFb4E!9Cb8o(Zx9fYBNDaGclgpWNZP1Z_ zr~sBm;`L)D65$Zb;@#Wc+I4n@BB|;(Z-q3X0V7UU8dP#Q@Yri?JOOAawV{|?Tz%-p zB@b>OgIh9qtQG(r<3I(pncJgY)rLF7rK2iEA-K{?R!3Mr40Y<_`&zY7J<87HAr);| zuYNSkI;4X~ACLa1Eie?}w`qf`n5$|w#>@8UX@Rg!hBsX*i}R8vY^a9RSK*z@<2_)@&6pB7&R z8$20~nAA&fWi)#5cH?6*(^jJy6Z5*or?z%ItO+nj4G7$DyrLn88g86b&f24FRZ5Ph z#E`$%mTcovd%6bMs~>1fk0S2->5d3s zsAsg`P{R;7Mm&B_y43xTbL2rsdV+6Sep!@`SzS&6yhV!5k8;kTrV~h4j!@k}3F~n_ zGb##tk@^!5#aE>Mes~ktf$gHsKwiIufJ_R-aTtiAZBK1q1?ouGMaHPsL(k&B8&1SH zbwTPv01TCie}I?ZQz@cFZPh%zBm9`5v%3*^F|3CWAS!mbW9=_2{&QW85JlcnL*vff zg~C`biO17XG}C;_FqIQ-V(1-~{wBy(X*nu6yB#-VpCilE-hBXsjwa9Md_WNeDUq zx4af^%!hQiMr>{>b?`k~nbjy2!dLrCpu2u=#$S6L5tS#HQcaSA2z0`g1r3J>_6<%n z5BiJKO)0c%ecBYu=AZuht?L^^x7FICv=W?ZAkvK9oy;YdNf7rH4Wj0Lb zx0q(>+1S&&*SI=OnnHjgbOc2tB81pMszX`F&V~av-y3@#kE;C7B+xyZHV`<$H?_3?@ZQ(nK&YphkSa< zFBcX3=_+1pz=$1b=de;KkE5VYNxWdwBj8j<`ZmFF{Q)^5SR~iLiT7{Sx(&Rvprc5d z^#YZcuhLsddNv1#(O8fema55#>AvxMGQ-RvW9aKUy;J~KeVAGr%b;&NY0_{4o!b~RYqBz;*T9oS#CbKUj!31D1K*@!UsmMp<^{yP*2T@6h=#G~B0qiWRUU>((lTxD za~X@eg!h07bCZFzY8lV$1sSx1t{VKv{JK&Kn5+R-y=8Oe6Me)ENVM z`4>dAL&bdnhITlHZP|N2A`1ay9w?w?G5gfJ{LrecX zr>UopAdmgvdi-{`ssS*jov$4upvq(#N?mhC$ICg8kD`rllpJc; zI0VVIfy0y?#il4n%Q6`%)M^HZ<0HwLc6r~{XHCQZ>Pfa>SxBU%3%x^$y&|B-9a z_H0q9()+FAZ+$?GaP6^DmO}PjJObF{P*e%jPP_oFe!HgkV`XWV5yA=XV`pKuy9rIqq}MYphD;YscaMi)&ZS&Y>p z+(&M&qc#I;?)jEidcXoyecmk%EXYg>q_6^H9KYs~AJI|#Cd4;Gmk3$6cf-eoy+<#? z(7SbPxwe?|+NQsfYA);Au9JvaL9Wu6B*`2?hD+PxO2|2I44DOp+RD-r!n2^1O{9fQ z^qslZ1Hh;=L%YpNb0?p42d*iW@1DE03|10{&jYF6&ZhPA>5pL+q~yNse%V#u44bHZ z-UP=M!wOg2|3|xLds^-l8G3K@QxUg8WBSqD687!R0ph^lVpj#k*gFx=f)cWi#tLWu z02Novd3G2|bI2h)lb${>z)K~NlXV&x1j&>_c?1EUY)LRCfQoS;RtQtA1>lGrE}7U< z{SKtAU10SU-9prI*R}q%2ZhU3ZBLZ#Q~p-bz0s`HmGm9?f;rKkomXI0*wVkZ;KBM| zb0`vS*5-&kYGSsum&5v$05;2ie{Nj^kDQD2E+dM@>50EAM44_s1>T*OKqrZA3$+J) zBCTov5B54jv+9nb@gP{y&dK@%&+uyPvmv?FZu6!*?3(D2M6xc&$xH?aJGJ`+xU=vX z8`gMNjlcZe?FzKbVPA5@{CZX~K?Sxi+o;j2Sc;UnHz!8U;av4b9WUj=`fAA--tyq* zZ-hq5?zwwM>?{y$a*tYkbwjt6m6I%M!hvLz%aW)ozG~^`cnYC-hE=_f;@`q28x!Op zqaps*flJy#z9?I)X(w_bt(#IHQ}75fi4)V;gs`U;VVT0xMI?@Z?)3ANrL(0ed>wb_ zURv@sCkPF-4Si?|=ZASWaH)1!19Fz7wNej3;4|gfRFQm14{WA3(OJDa{3r27#Ou@B z8|S^~%=}&Ml%E|bi0wkyZ!`DRV`$C7YAPF;RULh70OeaU-2o*gL~qVBlJ-u-oA0}b zXkBm!rJQO|+O%~E4l?$#mRmcSb?7%Si55LcnOlyooDN&-T6^YhYT+VyLCKcyrQ^Rz zk9bP7)!gYfVfO)&Qde|0^6{^l=!O;Tbb>~sV&c}9s{{E$pNpJv^oto*y|c=ycrb7( zSy;5NH~%-OGtLr~7st5Hc-BL+!Z%mnNG~bIDsm(SOPeca&ro=&zCm-!3*Iy*MabM+ z03okYQ5<2h1Q`+<;%s1Cfy5oM7PH1zb}$yX9pt9`Mx`a~hmF6X>YMsq8|QXhtyV^q zB3BDSlh>cmksxt%Gj$f>y-ZSHN0^v`iY4PUM)4eJQq#^66*bocN04$_!*$i9r@CVZ z*H}T8UeW4nLS-wvV?88AX^GEA&Xf2%;y(RgR%y348$0|4B?d;{Zqzo)no-|hD*@aB zt)D3;0q|~zGi)A_aBmsXKdzhN?m~9GR7!v{{$s(q^iXHDj5n3}V>)u7MsS{HSXGiT z-hO0ym8SRm)NAzyotSf@iSy>mac%h=M7nw8vE|KUb@x7ME?a3Mx~=a!3ln0(RgpYk zm0M_?^I7b|uFggKB#gp76zq+Glhauja>OtlhZ(3!(wFG>i%X_m&m;(}>J)XE5!(aFOhcM09K0X9w1Dzf1D zr;!FV0UD>IT6HMV$1<@l&}MVvrUMw}H~5y7BA~+IMr?z$l>_*UjY_+jN>mzaKe2;x zzaf5?EFtHrx6}<30bZhR%pi2N+11gWcB>+?NX$>!@D?L{@|)-TKO*YkUC8>nC6wj* z0yAdZ%TDOgz|PYs$%NWV9~^e}@_gG8u=w-dlXDWlb}^=NSUf|;Vx)6`I6xK!!0`Au zJqZ{(LF*A6&5)H=soMqe7W)!2Qeosic75A(aL) z!em0fYed>}JH%|o+B%nkkNdjM6Ws=Kmcq16$va*Mk}WNB%TZV^KHO4Bp|yA(gT)|W z5O>w3Qv8##FF{xw@3$1}TM8c`UKTE{my4IMkPJkV(a8p9KwcymJAp*#RWedtw|$EC z^3e+?rGzzQIMX935KrvW3qzmGzVQ0+yn~zZ%VZg)A%r-ds(8G4L*h{5MB`&LRFVD% z48bmlv$A`di_scbd?P5XXSsM8m&KXuQd6JQkLmwqx}hsY>{sr?bpns^upuBI9f&5N zAtFRdgDJ#y%*Uhyj!dwl&J_!7Fh^uC2Q#LhKMaWF$^@EavZsucLNYV&u*-63Kw-12 zaFD5R%%Bv0v9=>TFb@4Z4(spE1j1C&$9TI;wtttdj##gpmir2q(8`nr^k9*=k`pNX zPq64vAOEUa$dZ1v*7m3BPFmoF8mZ&{VN6?>uUq9&aN@>tMCf{$OD0ywek{MP9Ay9%Aw{kgtkKnmI zvsi%p+RnIn+09ZQCPwoCBgwvElNqxDjThY}G@L)4YzFe*ScSC$(L$|-g)P?TP zJqo!(99sdxzo1}C&0mz1Vh$t*M1Z3B5(k9AW0d+aSthTHr5n8le;6y8Pm$-iSwkfe zmE;fQMrsC$&4B5!V8_RO`J|{+E2mtR?*asphF~aZj6s#!$L=pMwMD@3jw)GJWbBn$ zj_}hB?;=)G+D&NpDZ)0Mnl-jXyO!|TjS1l8%=y%%=0Hm7xh=LfJVBNe^=COsefyy! zg3@5BSRrbKx!6y659*s1Q1_pAsdECk&L+FQFrX0cHFndmFO>>>GxVU>1;?h0>xUZf z%t5kt-NX~V<4QPV?lk*u>^@MAZQ^Xb#lxC2f^xZIL{UTwce(lAEBy}aH*19v^*z~) zB)mVxl5V4^&8kdNEyGdC*G7GP}&vAwsT*d$D625G&)L02{KhILu}NtlINATwCSU zN=3OQK$jI+$pZ1QO^3;19AS2ED{pbCW0xmsl$zhO?VlfmUuZre`zXU$0$B%|Ew(fl zisjC`5(uC;H@6Um?qoUZ+-x^St7lTFL$1RXmN|M7f0T1qDZxTsOi%w=Vm=-s*cMr0 z#FS;IqEFM&uVz(M5_EU&oJRdq7}3VY$9%8djpgDVOHW17n&XD!Jq62E8q2n{P3rKH z;8Y!Ox}tsaVL`wZ#&9@hxxpNXE_>Bi`pA0*6NJt943JTLb8xx&yrHh}WFa>kq=tjB z--*-o(O{2ivL->aLKcn}5DcdM!pa!K zQ2fIvdQNc7O%a6Ktdu?@HFMPSzDW=wmWYqh=d`SX8D%wNLXZLbF9#qe;|a#&uz2OC3+ zu%dyS)kX!xB(JOHj}=<`F-fsySIf5TeaOxdl|a4s z#T0I=mC{nk1={9@?7B!CI;)M2^~1GHtL0!-x^li0oG&Y)`e%uz{rRTnmB`*QfpIL4 z$qjfZl)$D+BZvXt6H4}s_a6!S5g39-SuKGm<_FW&gh#~eF9;B_{t-HLB6kKC=QOkH z39rvqitc3MBmAX8fAXGL3wRAcMbwrDeNDN3Aay)n2)Z1b2err1srcZ4+Q22#2$u#e^?Y=Spcfw zj;)p{!cPKef}R;{JAnzxS4Dz+y7!Je?AKkqZ%^j}6=%EE+w%BsM>i-#A`5jPj+HU*&J&RT zSNcc;Io-UXS3OZ81TKvUqfjNrBc)H2CRR;FRdiYe@2b!${?o^#EuZ%6FFv6891K|5 z4`mq<-e^^3;ugwIGP69m>o+=?jS>PQ+}bedC%~J?_kLAZ^r{*+X5)Tn=xpJ>zyWj- zVy05Y=y&G)7i=M0D<|(T^Ya@e#c6cXXm=ZXOoW6w*YIs3EeGX#ZDJcN7&Um5Q~SM9 zN}j7s%KQFmV~NM-61f)P9w?Xz|3~e5z$>0Z7XrFWdq)J z!5eK78POB`0~dhO(W#WpXw3TSen?&c(vFzQ9)vegrVnXlXLaiwF7si71G>gbv@Nd* z9e=Csh!c|{?OLn}IlxB`R*Ljo=%vZZ>(GOu&|{ea^JP>X<>VkoO9f(=-2WIY^wn2> zr?1*PKN@3WFyw`d_8)FQ7)9%EM25HJgb z5~bv$_~kfaOmD2s1=F^yw_VHq%@R$-^$v8*dYusYb9xA0Fa&sOW(;iBkyq#0`TH-e z3Yb+!LfmVa4R0xsnq>+EpGG0h$|(d8K5?z2wGOmZ)yh=5Qbqrs@4r2&itcW26HF=; zy*(I(Of(}@q{MrlFFc0^8(h)LQs~g!WRetm7hcHMRTC82OJt3N2Y+rKo&P&#&QIbp zT#n`R*YLweu9)Q1J;zZ4Pr&4Yy&cwi-(AIrI1pr0;h@}_k_LL9W!M(L@3vY8@UE{! z_YMy+TI=cbD1J6jy3K$^@uxN)!4pIn%cP8M&p{tM5nkEdwj3oree>pL-;L4CQ0evT zYSn}Sv$&@p&fBl=o)Iq_Wl^dg{9p=j>4okNJ5sn7w}MlC0OETPX$XFsp4NY3(Nlv1 z*{wh=R1}ZJaUN$X7zuxzqd&_7?eJ_~EvA9LX-S}O`VPubuY}6dEa!v5+u)&fvUT@R zLFB%9sF9kI93t472mfR<%us;aMX)x`TOZ0g2k-ud!*1%eVK*Bj#yqlkwrlo>aoZj}@hf~2{z(iqamiNv?he8*B(-@R^zrAqmIDtE=y zcd4QrtD~o~zJAvE=2??R_-P9N2dOJoJbz9jaHqse<1ZiZly9M zpBi}gC3(Q*yDcID!91aN*P^2Gx(>Zpd%g08jo0OfQPjs}kUN|Z?_i1^v=#q`9b>uD zkf~`rR>qQo5is38KgV}5W$EqX>(EGuZl23;J89S#a})OwJdT9|x8(Q(hQXYC#~s*E z>#^dDCdu=#7S~gXo zVN;hY@^^sSrAp36-$=5C6iIsjGRXYD0s-W#R|e@M@Tu5rlxu^ zc@5Nyc;KnirXi?y*?qwZrh-{pq7K50xZ!TqcV#}?-m+C>2#h`6;k(8*UuqC$Qy9gO zT0OWwqp7q)UMPG#-kr^KOr(A$0=>IhSzi6TANxx_rI4-A2Y5UZt6S|9=nyqS(}%ce zG+k68pRqK-DH%%YvLP09nh4ccx`#Kb@g+=M_iYjM0B24fg)&`DL9JhzP|nsL4kBiI z342QFqP$&Y+y88ueGV5@#3cX#-IjRF-KSVpuAb$ztot#=U(A5uL`tEr6u!GfedYwt zkWZ&7H#+mK8We$SN_=DoI0;vmYbBq}>Tx4BvIiDl4s3}ER$dFRqD0P98R80H@|Twxv!G zLgc>OHN!S7Rh=EM6lG~>G%#&#$#XN|5UCg7K%Y3IX#|Sv`0NO%hsS>FF0lWp@Rb0=#Q z1{ZvR-yO8?JPeo!eA~Ru${n0i$wez0j34#|TOaMAH1X%o*Fg9x{}l>IcTf>5`QE>3 zsIck*mJomCt;9&p&Q2S2h9WMWt+n#Tb@Mrqk2R;u^&vEQ&n$@;i?KOs`J+N@Z0$uU z=We9#oxT7dKC3vg8*AxR@KYl%^24yo%p?lU?9|)T@;IluxS_WH6H;45=7rFOnnxAH z5#Lo;w_r*?uT!$0U9?JD2Fg(-sF%bcr>cmEi9aW|0^ywAp7WliMY!pp#fav zjlapY9=0yPwm-ePn0ClOo3H=9C`Xgpj(J;hkKJI2duF@dCd{8Nr1|uA7YO)TIZR^V zzc|@?w3CEA1wARt3Boi|gN$U)<}?QF?c`|7@tmacY3;X34O)joV_q zJvS8J6jKk$X`axB)8^#`c+}07MKrobsuFl3Rn?_}PJrjgMj~|B?h4JUstKrh3nfOx zVL#Eo%c|>O#J&iCqr^S0I!*}&V z&=X62vL0cBTdg|Oq+Bz0gijq|!shIhl>X*-EmQJr{c?I&uny)D2E!%}e`%C-Hsr55l1@nP z2$p++#tmdssEKf^;^h|ez)u8Vfd?i8d{Z10BAJ@IH$?OWDa-hV1pB%g7_`;fJKOp{ znec6$kV{+p>r*h&6-^|ZibA~?*aL)CFsB2Xk-?Xon)UaJ_Nwemnly48wSlR!j-4GP z^@dcq7TBq22C=59uM~DSgd#M@$~4{2WZ#f)%u%C-fFmxoj@RzRgOWFvFBk(asRy%V z>NvdkegzN0-*#$@9WMg?v=F+h`U9_kzp69`SsD1oi^DQ~xxKkxI)+$mg7Q33z zlF&wKC_a``lJ%@OoSchoY#_0gRZXy0|q=4~s}d zdYDQiyk+*kIjwrKwATgH|&0#z++UN<<~axMc9J@#WUM z6v^+DlKnsrCe~K4nnwZ-(X$+#CA>C)0*5VLUrzQ5mjC-!F!*jp=MwxLQ z^-xAN^P0kuVB56rUvHW$ra zKy-`?oAY|P1&Vr@a4gJ=y=NMe-g1AU7od&xZ|wMm|4-(0a<*`t2>Y~=WpHZyV&Bjo zA+kJAOaGUrrar}6U(qrq&;MOSx>Z?bsdx$79E14f?{qgeND`wUV{NvZ+0i*Yo^x3#OLdfr2K@&s zH#3zK>3)CLd}nikvAJP_DIL;f?jy1&mcT_k-^q|o{g9th#ttn)q50DaGao^)J5f}4 z2N)ZQf34$SjIhS&ttI7p|BZ)E0t}us$M;)|`avgtWiNm;AdtSgB?gbCcl)>MhW{Ym;ZEqJUkukWu{`if(YdjYPI*Wv)KeHiUQ3yfiYH)XQb{fc+7Oz zfS6Xe9aOLa8!k!?&eEjLPcMU9{hBV$K>Q;l<+?Wa4@$DvSnsRACFN z`N*$b!ADUq{?>C`Bbl!h9=N4dL2#vXL;cpezvlh~I?LwlD)}4OwZaciAs0q9#`gAq zte^Ok=b4^UOr=m%tqRRY*6ry`Yw9i}cLBkNL^s+m^*nA+UaC`f2~7&>AwasK(E1K~&dGJRpL^rS-%v;4p78|R zB#x@`clkewQr^aP*Mpg$F&nN-uRh(9o(6q-P38!>ShV~dX7$eesKX)d*ON{$%%YCp zI!RBiSxzscl%=LH{k5BfUlNhC8&YfzJ$V!TQ0y-2`>37=#3eBh*!LcG( z^pzR-w?*kDl?Rp$7uapHUdjS}+xeB8s-k*>4uY&2gM$*p0RA-e7<}KGdU%F$Oo$2OFZU0bNdNZfP4O}KQ)#%Z?eMsoLd4G!D)HqO!6(PN0&wM_ zSxj6m${t9xP!_avPRHvJGQ`YxmUl#BYm7^1!`Q5#J0eF;2@~E(BlX2DNzuYTV;XKU zrxaH(4%RCrnTJj%55sXP0km4dNUF;__wUBxB18`&OhTm-)4l|n(aeebD~Ga%snKw1 zQ(H+!)swE#j&J07p0HlH@78n7k8M24-x8Nux+v8oL&$Q__ql-vKs)N`jC>i^%;>QL zpML3Ohx6)wB|r5BpR(d%L|&v>S(wLcKtIaTBZL=nLQY3r3mUop50off%pu{6n^Ff1_s+GTv$#LoIU< zOaMacdel1AQY`t5}=tB_%mbjok{_lr>kCWg2 zh7jUQXJk#*GYKT~VZdtu=RAsA=N1Wu`1wKsjx0~b-iM0inWHM}$DQk3Ezgc!k{XZY zgY{c6=dpnocl(KO#-vLp;XCH=CT%%@euK-a$f~ybizZijwQ{F34JYnc zhp)uV=bIDkC;MlMOFf=pT5R@;2PAMZZI#03bN*QBdk+HRA;z|f8~wa~g-J`Je29ay znWn~z9nIj}%y_a)YhpJlJqiNAqnl$oRvO$R${ZF5keV2uGO^%urAoWNxL?q)7wx3X za50YdROqZUDoNM6ZZ}?t$5J*=!lf(Xwh_nik^bMjqO#B^ZOI|$_idnq?h`pv2A3X- z$P}w`5gr^y48=Fj-gUIxW;R zk)`2)+83W}?ume&Og~J=0_9*?IVj|hHx6#-}WW*@LK6pG)uQ4C5%beV?TJa0wN&&JV zj+);DMMH~;!oJ=?& z(vbGc8yXkF{Dgpohk(kcM$c8&09MI*38}C@+&U$RH1&J~&Q%81@I|=ooV+(Vv{NCO zlxb&4`1@`J?_s`=XKL0EB|z1z==Bw+k6cP{*1!qtDpSCBS&<)r97r*)J7DhRi>fF1K^?d)JKQjm3$TD= zZa@~A0DXCL!CT4_z{@w*SS7DPcmdAkzJ3{!0p3!3=5IRse#G)sZ#H_a_ygZH4qOEK zg>ei2_A;>|ON(I9Pc`ghr07@An9afY_OZ5!-d93XG!A@cR607I&f@=15HE9B^TXVB z;SET&Me#_HjM2ThXBtbBKqD-Ah9Y7@39+jbzmsgp!_^9CAyrqF zUWj7S==W*5tMTZhBYRw}cF z_&UQu-otic=~?tSHNsB-3is?}Wk#2%&M&gRGf@JB2_G~yZXwXPOX-vc&s!^reoWJm zN%K-To%DZMZ@vVsSao*nEia;F>qO+)G9F)xLMw+F`+**i*>0j9qGml-9_hY*-aCGs z5uN0=`@ikfgaqOY8KPVgU~524LN%M~#(deeJ+P26@uR4T0>H8#T!UB$m^B_XerXZ( zBpbDYW;ZXw?fh^ejkNc4-xLU#-6t374o>jdI=}fJ>rd6=P!$aUNgihOpsm;?SPo;! zpI{j2;+ zz4BKsO^g!3=I}~#XP8V^_@q!u%;kR`L?UK?S1_cz7f}T0+kbJRI>L5h987yE`Hz$wMFR6e?dT^TzWNzFhH>67has^lYFER<{? zQE!t2IxV@2-=$b8a5Xc&#{ABU@+{=lB$Ul6tp&*puhi43B!)AlZ|{1bK&!K(N`5eB zueu`^A8RgO-rZgU-Sc&QDDa_m!%8idEluE&c^PWtY#Qlq1V8`Yr&~fZYZLPFe|gja zC=F*zYTHB|`c~}sgwYTQA(?o&>Z!(ypUmIPvf!vvbz&GUw48t)pkX3QHOd~^-_ZZ^ zKE=lul&&T2f&KU5n@5wQ0~_v$ugb!9zzNqP3R?e4aid!kyO)_dJ7N7;bAeP9O8=#( z;c7)^D*UobU|kIU{&;{lLjY~lzzmCfKn2Nt&PqI74Wg&hzSSj)PA?;1mp0URCJ1eY zNzfQuZfWTAQEl!_6gozhE`7YALqtST8FfEwb-LXPo1DsI0nAub4thdNMwpe-1%OI;B9f0QF{2^o8uA=S9&>X7 zr18bwKS`j?QMnv*Ze9J8?J1u$z6qHSstl24?DPE1V<}OM@Ey(6qLqPSso=NiUHwBG z7X3Lp5prgG7!GY#)}$$iyt4Uc{&WiOQ3>+cenAA^AMEBP5_f=Dw9mdNc|2A(Ip>Q% z*YmB5#(@=grj7i-Hw(xA>7?3Y8ry0F)X!c;4ymRLlX8A!p7-M02>In`DQWrQamLYs zdb{S+0iXJ>o6)4>%7ugT`}kpsQTgX2yWlqmt$c6RF%nV?n> zi)n2A%zrD1ULEm}ZbS3-WDqMtw@`$*B*DRF?{4Dk4118g6Q`d$0OTa<`089tC$;?oHs zCM|5Dpv2RHAU4tnI5eT9Ps-=uG`MC|nbrsQ1kM8~Xr=y;>JU z_lw?#HzyJAOr_3HaSj7(JDX=fXKguMxgscqbl4uQ7pKp?K!;gKP^3dTkJ=u~WLfkT ztfNQfx8Vok0p-p3yzPQ{_SwiT^^Dy+IW8t>+vtQ#D;fwTPOiWSwhPGbRZOxFvxs`C zYV>{Y=7K@oZ#Ris6$Uj$ho4Dacg!EkCNJTHdeH-GNYK-_RL010qnNhG)3rw+{E1S6 z@EeV*u;Whijxa#hyrt5t*X>RTtmn|08Ga4YA!?}q z8fs{3sc@Xa*8Aos<0LW-1$zRMFAcFHs<1;8D;eE|>e8q96y

dm!I_<-<(I9zVQ0 z01jB@R|Wgz3L7zk-5EJfWYqi%WL%J~K2dLBvh)Teg>=n;)ugDRrCE20wNArY9l395 zLUIq#Ey$Umd%C}%5?e`XkHImj%p1-Oaeifja<0U1I%`vx>(luYQanjTZBgIxJyV2C zl{}y!T8~OW7V|_{i^VOjeNA1IR<@W z#9@p=26PHW3+SiXK+ZMNx1KCs!UZSRWN4}@d9C^7=+~cyz2wA1p^O%54h|OB3kE#l zsfWconXq+gX1zQ8>bpp;pw}$jxkGrnljjK)9mZub!RTqUdl9(!Z+*M#sX!LFYSF#B zf_YDP0RVRqFHA|r_pAA@JUCD5GwSLOa%Nb`cd#qQ^GDUCwdk@?&xl05U^d2z(o~>C-nbkK7PHf@;*}3+rM< z*gcSu!yRsq6Nm+uS|+i`#tEag*aAjhtd)tBqq9$qPSk~uCbm`AwpW4PU}2RL$<(iX zImO>4@MkC4iH&t+Z65z+i!+IkOckF+1e@19HNA6L7kn@rez@#Be*jDvl^QML^#3vj zH5rsd4HV8+b$}Zo@=C8OhE<5=8gO)Bmtn}fr7zd+ssPy(;t07KwdRVW2h7tU-xZay zkn-1MGr@h&LG0iOP9rhMCM^}ItS{ESDG8UIUL)G8k-a`K7R)6?>g}h=TDiQOJ6|JU zqcx_(sGi5TbxOsbrd4``E_M)zmJOG;#6v?M-7yRpTUFW$du{F{!^g+XCmVJ_L*wwW zAuj*t9>ZK2T4e@mz|Cwt#;c7NDD9uc=L^sfusw%dg85yhQa*m66f1|NpE!Fae(!Lq zCE^*;3W?^e9dzpB=a|lpC8B|RmJk9Vb zgDeJD9vw`3aR&ClWLoLbr0u%5l0VpsZ~oUfZRGStX)@P|ZLf*|#i<{W&sYOoG_UaD z+W;BxL=t%y8(Jk@)k_7G-8HMUaQh5Yq{&t;pWiy)kG|qAPDcfPnFr>9LrULz`}5nt z>xwr9Y^1(~bO;QK!N~QqC)G;xV4=;q#Ny>tdBjXItASgOxfBi74R?387>l_z4+P1< zLzFgCC26kz0ajhKUCMNot6jAIU5OgOG-|v+YEyx?d@V@{0#gUYKdo*IZQs)d{HJAZ z(#l0qRR);VEZQncn63X!Sq-tdL-e3DWAVM#XYFfP+8Ki-^h|Tes#QvgY#qI-Gg zfy5)7YtvQz_uXdO2GVM#7K%^{JnUMknfG4^t2)7%iQMPLPByw) zSdlk`ARrQ$(J;QUomAn)0AEF+AFBH%T^t>hTK$e~Y`MgxTa^crI;xP`mwDfKXLb`r z4W6!eG<0Gzy|FP~K94&rs?W`L%0G_u^UE10BHhQv7Vj1&9hJbZh4l4OyJV5nk+rcv z27(dDL`+QicIoXTo!pFyULE)8 zaWpb-?STJrk%|Lc67(C3+~y(SlwJh7O}*YCB#5A=o`m6fcoQf7bnNpGBWQ|(J@)sh zN>k>bn=o=4jg1nLqW}%q5~W4$)fO@e5ZmNyOttoyN8WqHCqL#xVFodN%wOl4ON_Eo znLL8{DY6=c3l%NiE3G$Q8waeaZVwba35bggxLQ11@(%v5=7WD9^S4)Xb_{K`oiCV% zDruytpylg#p&QVOLFETAhe$i&S!CvRrL<+mo^rqzSGv3q^caw1mTIYxIKgzh!)Zg# zEO7(T5of1&w1JW#y>%!Jj^%<5=fLIFpC)6nSvBlGOsxCg z!L;S7WHD2{c*=Xk&+_@XYgd5}(wKY+k1{ytQI*ZUw}Mg0z@P z_gBtjF=xFqpC};7hwio}*yorjn=9*_Es>TQvhomrZl%6lpz0 zd11>eY2eHMW)Dul7Pap=dilms0nuw&TXw_zvJsc@fmArjm?QcMwB7SKv>?c8v(@K^;M3u5r zdspGifnTF1oSw<~{()K7@-IxnKk+bYLk^`i$2ibz)GzO@5%51`kUlRJ=09~S45s!` zsqrtI_PyW|#L25X+3KO9E|Vo-%Ir}x<#7uoB0Kv_^Mg;r{gBO`B(%B|-k>aO+6)ob zZ3#piG{D4=mDa%6Y$*HaOae+pD1@T|6u%a3SjRvz;QC_E>g z{|^~;{g_8uHu=>xyZ>(j4W)n4ujszdq6*RH4 z*_Zd~r4jR-t>(+!P2bv3Lq=68S4&l}Lc{Le&LMNS7>JCC!I;li7>|$A;xAK=AwFnF zUuZ<$L$C zNTIJDqnsW+qmOoupDTf|E+ zip9{G$U(!YI~E?F-_25|uVPM@Xn6@_!DW;E)OO8WjcfX3{ihwLqd@GtRxh|36G1Gx zhAe$D(inGaUiO;e-gDDQa!ksb-aRcCo8)WgPS!K9rWJ8*^A3xR>p)(sR%A?9nnfFO zb@w>hf3TXcYCGk%q@r?!7}NUB`9fWa!B()c2J-{UQV|NVTI#k^25`8852?RC&)Uqq z#&(-ntlRx)^LzFZ8>2eR>E1IZ^@fwj9_3Z1E?LUz^I`Zys5?lKnkMMM=2QXx2~+0< z#RWLE?LfuC^&3HyJIu-5evs6-gl=wVhgY`qN!+{Hb`oA4q+-gpJQa^xnP%opIQc^9 z&s37H6upsz(88m4-4b+PYx=EXV+kxroppk7BS+h22CGiED=sIzjz%{mk;_OD9CiMYSUgH;%{0zzO&? z!wuu2Rxe6r&pXxZF#$m5CTiuQm2+x|7s|$Z@$=3x41X_tDCuoy7jz3(etkfLl|OIf zwvenadtnKvcv=j%sKEmCqNcLKVWQ_8SFW|}R2$*AO>_Q#aOyvxOyz|3> zAi?<|Kr@qcFLkiHTtjWF=S8T6=73LX#sOFkG4SU&U5AoydyqHgjp5ZYOggXyXvv@o zwIzo;Na3TxGfQLBsUYM#>2Emf)`uZamr5#7Wf(j40FM;{WzKngR0G5Qb0MJ7mbgf; z7y=&kJ$FbaHwwLpQ0fudj|(kmQ(d#1wI0h8l!rYEULfV#>wkTsgt_8VT0If60omz6 zg00R$miu5A+lRF@Vr2URgN>U<^7NMS((f=bSj<`XdYGk2P{TxjmBN^Ar<2%07}K(< zt5-d(J(E%3VcM&E$ZT`&>MrwnU;cN7dC;Uh$cR87A)%|X7&+^zk@@8SKp84X1S%u6 z`2vR#N~_u?gUwx;UA}3)2c`q?<}O`a<97I<-Y+s*>pM4i>=P>wjn~s`sl|(_8h6eJ z{m|6zII|t=Yr6v3r*Cx0J(o`(rXNhz)?Z$M4soBCUxXf{f`osg$!2T{y;#Kj0s>jts-yl4j&KPpQZZWBeP=X%X>6M^ZS<$cDzFcvy6Dy zD~FWV5~G{17lU+;E)*_T5HWP6%j|~m|8Lq?;C9)bG9_$neUk1^ zmyTvxV|M7%Se()j2ju54>4-UK0a$bbbLSZ4pXrH#L1CXpp&EaNd7_JKm2hcH6m zKN|<@8eZMT()|hM8l03-`0|J@iljy0d;a`PC48I?yf(mLnFX@6iF3X_Rf!5mVmpTN=g}JD9ZCPBcxY3o!36ZY%2g>jXbPgWigL=@wnd+`lB5PmL+`62_$e_>M>IY=^`I{9>)Er^;5) z?T`rTEC?s@m5wi;9wu3Vd}yCZ#nG#S%#jNP5MccDcN;;h^;-Se~ah9%V>I zsO3A^=77rl3d)odc9HfjP565`-jkV#fi3q3evg&}==cB}#fAitGQ&tg_eS+tL7$3^ z(P!d>OCkMWiQ)Z2d}7iWKD_c|RR9QXNbD%g=ooMnKjv-RSz2^{^u6nu-9J82hkq1$ zUP?^YnIvL@K_SIcz2MdOlb5cyh@5wAEvpmtm%*dYdidrrkpgz@T3Rrs-|(!ZDw;A3 zb>m|23fGhK{8!9R9c|D@P7sFN)JPwV)@Qu_UQSH{E%WM$(u)0?RcpRBHk!~#c4zfG z*LdZ!jAEPqAbYV{>(qzrC`RfJg&r6rdS!&-AoXWpQh&qzKk+23x~2obV;XFAk*k`d zS72@|i3gz?A|%|kr}Qame^A$!=Ito9Z}D(_hjX8^mg{qa=u{;ZI7tRclgJ*IF6%0D zkzB0av^6?m377UPo5&4x7F(h|em@+gd`U6TJ(V?sC%VX=2lhL_6J(D+83kb?kE`f7 z4#N5!Xpb~_!OT*?-tejNwA@oo$aKXcy*W>i>fr(QF&L&`PYgjmm~h5 z?nm|OXi}%)TOb+Om6?F8Hj=Dy{`r1>?l*o&Ka0oBt@s5(Py z8rDRhAy1{0%d2!#;mSEJJWj5U)6+QBZq$BqXKAH6Na#x9Y;09!4-Irgb7P z*U}fBVW~^oB<9zP6!mnyMW8*dtCE!q@hq%;Tao0;K6X{{Z7$#vFB{ncz65J_(I|>^ zaSOu2NYS)f_s*N3yL1yUwmRy)iYYx6vEwJWGw*^Ix1Mdb2kx!gI3fNZG{(_{_Q40o z>44I@MR5%~lDpJw@w^qC(mONec>n`9p$X@!i_0Fyh8n*zf8-b_-LNJRGebyPIrK{o zu((JruV-JDC$i5_wf@I@UZ4@LY#63*5Yd56q9~-7%OGild47M`3vH+` z*c{6uxs;&+JNw7ZlY&oZ3H01|Q=*xcNBFlC-Me5}8F8{MFNBv9hiCTb${Dc^?Jy!3_1|*FllJev8|$v<%hy z5fZmzl0psJB?V6mXKvhlyf%}cqr86s?$i*$3-ot!p$lwe6)rOoX zc$_c4sO*|kF!w8t8nz6v@uI&ZV4EoG0%-yf_oTj}VlGWg4z9NSe;P-{8pd~Pa)m@SK@(bFqI@hdQvJqXnq;Gs0*elEWIaS<(^)Dg$5p^s0MsV~QdB0&o zWzv@ApYWTFwj0$8a2u50MR6F*!R}2(lDb^XueL?>fWKF-ZXKmMp0Jfh1#`>e0=loy2OBg4*dqdgp(K)lB zZt&0^ZCBFopOxmJ!+l)DjypOR2x?Wr{nfMWb@b_|S*EY`sqy|9)Eo_g_hp)GSG|U( zcyU`_ZY7q~(A=(pGlq&PQ1B~`R*t0z)%AJVw!F>;PLDM!g7D`FDu12{DV5)^+ka^J z>e5t$I>CmBj{Y)>L+`_@V;;d*vb0<2VXfwuxrYr=EHTyBJ`dAe)lr~adR$7wPO2T7 zSR6m!K`x_mI??2a|G1@su*0tR6xbqfVYv-)vfxl<`az(Z%fmXCcK8h8)V1J#UZbd_$Ld@Jab)MRMaF%j^9EMWW$b zMlz8?CYUm?TX87y>ME)wvx;h70P|gF-FZZUy zb263LB_Xt|pO7G=0~@G3Oh<__mw^v28B#4>_ttpTaVCIhqL@i-1XHp2hihaTcyJZv zAs$vGx8EJ%xmpx0g&h}Qsfi{iuRb+BQ`SD_k7=PeG+m0?Y=KjfyyQ2ikg4-LOAe$X z{@F?x=FTup(u?E(#Ghf9>LqufNV=BzT5X|H4t5pvOodT zVYk`36Dqg9AA-ht)m9(L6V#FJ{63~~!9DmLQ-s83OnJ$~X=xXDx!p3vgQP&0W`u~# zYg&t0dBngA3M1_SFu_5@2>>}j#=oovq3s_jLA7M)K?U41 zWKHdN7SS6lncSO+%v!7z)OP=5KRaE*F)6QkBLZ%`QG@D$6+M&Eqp4&_=UtK7!|Ev7 zb^CXi<>A6qeSu_l=}cNliv^IZqA}vsa{*>;w~Tlu3FBR!ONI?sEpKlimDww5+ps!_ z4HR#i51X38;3|>;qZ7`B9nKQpF!A|V_wx~rU$mUJZjx)hpbtv@Xi>5ov)vyi$9<}- zD)%l(Eh+Iva(`Xj8h#RUx0=iX44G;dxoPM~0u(eJ_}^^XT`+&ksJ}|~V3{4MSnF6u zgGJROle<&dlSMicVLT6h^tn~8Va*+BGu&W4WwxE|EYstbdhTI~*NAj(o<#5tanr6> z;R*Q%3Ih{UZ@ux=E{#j0cJ_C2MGzqCJW0K9b_w&WU)AL|A4miBpBOhSbPzPao->NI z0zTSO7)ERBat&DS|LAiUnlx|#5NL6cc4hy-Fg#*KkAm#4wzuPtwTOwg(M+um&#SD9FNG|!&e9Ol zdcQUa&spbBO-Y`#ei8FuyrHeQqz+&OGsgy;FfbgybqZu9ORWZ!6t2Qzirptayyl<62XzN3ueB4M*> z9)Tp6L7&<;;iPph!$_vM`dP=#C(f>@+ifH7$oyAP$A9LB>|mmpmAK;R1C-Y^jE`ZC z>U`9@ri6F_Y#{__gD}i!H?uyvyg4GaZ<9UYx8lc1y|pAv0StHL=4=JAhGxgy$gCFm z;j#R5MR~d(ahg4wJS|Go^FG#b>wDxcB5uVQAlC^`^vaAt!vzO)k28YS8n^@~%oE)#;i4E|&zMp6;%cg$0hl=1zP z9X-kASe^x_qO6~ti|aByW71QYiD+C7-JiUUCtj8fsi}aYRdl9=^WC_Jm(FFBa^$4=o(S!bwgeJ)(JRg5~R$bVD;S)pjwhlq$@MbL^nR zd`~H>&3B}8!U7j_>KDrc*?Auto!l%n8}!T+pIl*ozfbnEfv9?s)7YRr8beasODnfK zX;^<5k?fG0178<#F8T+_y$tl+#Hw8`+0+4^Iya0qnro~qDN>@`g0d#iV7`xiBkw*;u6PFzCrX&^N0PNUi zK}K(6VfADUgF96=eiT`;5oMs~?{mG<)!;$6PV!=apc}5%{|m2Ia&DWb0a5~N@H?@D zgWg9dI$5pO!nD%na;jVq$3*@Yxi3=296g5L2Ru5(r<3JV{`Y-Ht!%pHi_C68?PqKJJ7=`7 zC7zgal%0~UdV4PBWAw!@-9=`mfo6&E_v-q~Zql3AF4kW9MRR}_)HjF1! zpj)ij>Yx7>ST?!nCvKtkg+o`VSZ#Gepf3$VCVZNo`R-iux}@oe>WPG<)A-s;xe}L+ zCXUA&J9_LZh~odDa9ikDoVFkr6Qos7-8MW+JCpsYrlVsr43TZ=N;mI;uB?N7)p-?Ex9_DeV^w2y3_De=-+|3izt1q(eRJ71 zk7i-*97oU7efljUsAS-8R|5_yUF0~dD$Tajw~y_rYjNFRxJkI0m;V(?rN695trIdr zA;%Sp$lbM)wF=C9PlLSb95ZQdiWO^emRk>enlGd2ioMUtY4@15yUtoFRuM5n)T%fk zc#DzcTdbwN3o+@p5MEU==f`Z&}Ap#*ZBWFEY^;Pnk4-JAgXoF49POD7$R;ns0bkOqr zhU5Fi%+Y6!WwlKFZ~|d;eC!{x8Zn_KFMTcuD>V#5N4}XG@>@vwBew*KF}+rCGxKH*7{&eY;NP3)b{S zw^*Q%@;`6}i0OyE?Sa2IVCFCQ3%CC%k+3dEILWR>3-@c5X3SYtP;d@BBC~Hhw=R8c zb=6@@PZ{0N`CtiKwu@O76&T z`@oN~mCSt5q(+W`lYuXOHN$c5Q!e1$-I6LB;5%EWkeDZp!6xXIF1H;pEVPg#2OP3EGbp1YTr zX<&rS$hPI?rq$9pGM!Kz{g6T`#wC!oF`aeysJ;ZW4!?4yw4TRwVh!&ON;k#|AvI>v zIe1-CR+X0XL8mAfMcgJ9Ne>1>IUG=z$R53oMPiAT-k1?qnXBJN2`hVlh=Tn94@d=} z4^hNBnualn#5VG!qLu=h1K*Np^(hRX5ZX}Ae`d_sD&jGGyXF$a_5>N#=O)@h&0fL| zOQlM}CRtp6a-{sC-~N!`;vqwa(~6+$UtB;f4-_YGkwt|gUJ!^BrQr%xU8tyQGbAz7 zD#nv_boW9z&t+MGRgk0QxU|`)`=(yge@5sZi>q*)>&@o=g4>In1}5CK5w(A2V7YA_ z(|lT&0X0r;LMGci>#Ur5cBw5A_F~0PX*k%c>*|nJAO({KV~SjLADy(H3E=aI;&!5Y z=hK?4Z``5!;+R0Sv2m9l2FY}lYU0y?>$cgIw_1DE+Cu>R4C5A&)`n03JGbP z;6Cr$a)g|S0 z!>5wi)ZCMKxz@)YWtHEjnWZ?b1Y{ZW>L8hqfn*#pIpW3A9on144c=E>L|GDwot!Nb zqJ#qo7{Rh7acobpK1uaUzA*z|cBbecTk{)G<=J$EdC#y#a-bc!ULlHm4&lYpS5gdrIO(8(cxd zi_`=00clSeJG?g4J+(Eu<+Z0qJ1h#Xdu2{KSEdEZq3UAN)+h(+*xMb~zBsT!IDv~> zLdy|hMN5^;?k}3oTvSw3!|_5$gLxaS{zBOE?>Q~4$}-CkSrU+Dq-``PJ}~@7QEkPR zefI0o8(294x6SsJg4DQXv!>54aik@M2hq!v%rF#Jx^WPESg&sTg90vaG&5ZgzI8#8 z$`scqPKPZZ%@dsOb<-CblxW11d+?%}-i%CYHaN_ovmycxbch$!E+YV?HkZm}k8L1R zD9(8~RquI@kvwt7%g|l&nNBVHNSm-!832=#zQ5+~rhC6+veU*gf!E8PE!ZdMVhzM@ zG`%{V6q$K5QqQ9<<|hrm zn_g^8pWLVJ%)Mje#WAZ)<%jDWE7QfS`_4gQ?24%ibCTfDDo-hb}N&ZW?&v*-gF&?Q3Ap0+#f z!bHrwLd*0p?UXMBcJ$PjrYeSg0sb9tbM{sPaIk6y=e5@DAszhIDJJObc;M4u7JZ<^ zF~Xil+D5Mm(p>7X{rrSBvNv@aepftj?D<<5M%_AxI{c0Nmf+_W4}h8yJF#}4Xl`~!X9=#)_aV;c2=D^WX4-+J-_Wc&(=z6#gJ$DW`>t96Im2Kw>z zv1hH$0R=3r78^M-h=GlM)tGt47m}tYl-*%IbHHBa#VIgcgAZbszWx#D>6$bts>{qxp0I1YZifACt8KGed@8) zpI!L!eZgl2i_LMGhhPvHox=wMgE-Opw*`{NWhiDjO7e;xSkko(6+dP&ExY-P0(yxr z@F9KLsTR8#xN}B5^>f?qYe7#(X{q#3Dw(0Unjk@)`Ko;V&x>sH?qeGVbHF1KOzo@_?dFaH z+F32+t4kvkAM8_6NppEJkkSC{ULS;0iG8(M&)3N}NMbv=)-dMGAV+kK$t2V7auUh_}6SQTt?_`X^ zw`3{x#Hyj}9V+lT0T|)PFZSvWA8|qjJrnVszb4;WM5BT*-o~oWdr$wNT*$63k(pxh znqOT#`~)nl9U}HEJd@c^_(?q$Q;8WXDsq<1Q>z%*wbBo`DogY14S0-4`|^*JCmiSf zEpz4tv-xZXA0mIz=0w!5I;Sv^hFF;oMtSgSDOF8C%F9h{YMZGkH1|plJ;Ro5mSY@> z^U&QG!K1mC6{Dpuy{uREU6)_`0f+eT6WSv!$aY~44Hn^lRWt$PAB&CI;#Imju&wT` zto5~Io{Je!iz~5!to^s&_@ZARaQUH;^^>_kw9dm;S*1cmFnjsK6Tsg6Bn(x-tufFH zzdQ^1Qxr^Zki0)fhqE2bK+ZY(D-POnkNyPEwK6?B9*7f8JZ*`5&VnHnDvrRNh?4gz zhl0oOj-tY6VFiFLPRMg+fSa>v&7@k~^)F|$df~oz&DpW&?G-&Yv!zC<#lSBgw;P3W zmH7J#1uPu#Huq;iGOy=dgy776;i6kAnVJJHM1Vs|gU1SG{WC|x@v_=~CAo^-pU7rL z(2*lZ1z3e^`TH_jJ=3StDw>w=D{8w&Ow@kzOa^o*t!p;Vh_=_S0Ym-1h)QZ{1ZA-2z(+y*O;H6KTl!0eKC1T=|6i0bx40F6hd_%aIG zg<-&SMM(nD@1d;4kuncKKf}qkdYGG7-;D}=P?mImntN@RQM5FfCn{gNlTRL>ZVLG( zfZ^U9931(NaZ%^DuQ>*u86$$tqgS`j_nS2jT~E2d$WG@Hs?`00kCxfK>Fnxz4q#+` ziBLTbEKlplsHU4MeqP%Cdw6w9)J{tG18EpCq$T-1Jc`=&*0~ z+qm)}vB>4$^hRp{hVFw$hy&Ng0ZqlCaGypzB4fh{j50tG!To2r50qJ;+z>ioK<8i{ z>{bSBbLA9secQSd9c^0&Y}#QRM#%=J{l3Y&Odg{al)UM&TLKKori0Eny_K4H@O6L| zc8gYZ0HZnRBs-sxI0uIaxZGd`ZT)8wz5FosH@Lkt5jw5}UG$IdGBx6-aewGk8y=)8 z?g(5`+Jh-g?yKvc(+Y>(u4&SiVS`-a1Z%`r;_FHmh_zKged+a%LYHO<7`5IxIHJY5 zC#JM(6}D{F&NH9)tKg;1DBOu+(iKiJ&J>)rt5%AIEhj=R73G6!9I|!46Ohq|1!X4S zl0k^b&6MP!z+nwuuyp-m6@oy6YR+>HZ&RDtT4UrZ1eReYY`?kl{!~UDV>6lw;ao^+(h=)WsEx)&yzWT z7%E)VBP%tRgmtuIZGB}=u?%RtNnq!UqL9tt9W1^H@&FcggJN+CtXqK^8N;pffX3Nt zpamb6GftdIiz}?T4)(wgI}*s5W9?}sF&kE@y**vS_oY=rGrriyg4lF@3_cI@+`o8EqA zI7ME#OyZw^Ih4>&!lYg$)b5#Bn5)u2(94qcirVV<83epP|AkgX!ORjl_JKNqCu)PS zm`~1W@47d!P-aVe8)k_qUDCG&i#PcTXr4ig_v+Ul$0T1<#l8b{O7tYG-*PplmDj|M zf>+=mZ>O4BkQ-EYrINbS5QJ-bTKABdTpoNyP^8elec#PvE)_zW5GG-~f~m3V`^m-Q zuEZ_YTq%|%0`ZF;tJArZnd^mE&hJ`m$Q1r^_dg+f1Nf1uUD7j>;2Vu07+@Im#TTn- zgX?6Urf}Sw3{&mWN;V=C$hvoT=uLiV~!g!QNd8_ z8mK46exXYk+Hrm_YuD0%KvAnJ<*?-u%v|`inPv7D*gc+Ikd0jKWOyc_pVU0C<@)^E z26bZlPKIsWosQa4hT2lN#|$$adnct0^Y@q=i(}HSxh3j*pvj)*n8|DYOE@x!qdtOe zxOJ4v%p7`_Urz$sR6ChpShW?%6P=ffRBNC#x7)Y4-^x=$Q22*7U^LT|*q?qO`KRY6 zG1Gs#Yh(Oun7HEjZq1L>!Fz?{S9+RB`Wup!GPU^dQlWbgq@(A}q?^1}r33VyTvr!X?@K`O2Lyd=l1X88wt8+=nmD?g zE!Rp~|0j9hp8mCQhge6YJPNIKFqjaARbRxE9hxA?s|YGLg!@t@A|=(PKEGpIqz2Q` zrjs(bpU5Y@WPA}MeSRhGOf{}5$FgfPTnaM{@ATdqMcs&FJQXD#g z_9nbFau7WpqYyufzsAag^s`R$JvyXx!`c3&c!DMcR$XV9T3|FDOzlGSSQ^;fDKAU> zCFqr)to=)p`{Iqo&61UBFF7}%&+LaT9IGjWpmvTfqJS4W)%@If99J{0V$HUwu!IIR z;Vnhnj%wKJ7D!*d#RI^ovqdC!le5qkG!}2J8^_3LRNsS_mcBN(%#`B$3W7pnX2W7h zgu@h$;Af&R@ny~lP)B;I6sMR^nR;lukQev)`cJ>07uvc4n96Y>#oJ2CACXexyQxd3 zYn`bgpg6-grE3^&GxjZ8l_0ZTMP2;QjPy7&Q%iMzI^|)O%O)Ymu}P@lId^g@P~?R9 zGeR3{5{)99_-hUpf47fDc8G!C$$AS~c7JEtrvbx{FoL%TjL-{JNi?+9xS&woo_k!` zNs$TWbKVU^vCvPA^@Ntj0 z_22UuIWNZ-sRgVxyKQavj>P=gt@{iZc zOMYp^J`bL)$%sx(<<=b`|%{8f^IsuyhrdY^pS^*mx z^xH?;6HnY6$Ct?*&x^5m9;t(x@b3IM!~tEO3e!j0%mrDi2rj)$4h+a6D%VY^#FZ7L zxPKAA?7RQ<93iVm^wrGaZk`T3!kB?xDCD`5im+k=7XXN}VJl?18n25DRb-4AR3o&a zBY3eFgq6j@zt;xbezo?i$$zB-8KMW^P+zBRNmp}T_N_MviMB}WrI^6va-2xWyFnxB zV9?@Yh#DaBF)sZwrApDIXa+z+s?%C!8K>TovoP`C9+7AqcA|UMefPxv1+nt z!C2smQFGQ8)M6Fz;1dRN-6|EVE5)aI9l&=ZS69tk0v9H#)b|1D1q?N9_ap^k?C2y? zv`;ByoFupXXGN`=l;%?GBEJbv$SqQfc(HZMw%sKtz&~VZDdhVvy(*txC859DGHBm% zz#QjFzaxkhMFMc@;A#lAJc9nBQlir1X3JAKW9do=`QR&5cF02D|4cIKdXY@_zYH~U zB%zLTg`^nsaOfJD#RupuHerVZa9{Iu6RF)i=y&tAXK`^KXl^r|YYV5O6g(==_SuoU zB9P2_cw}*2QI0F2HKpwT7dzHZ^Vc9k5NN@K!iRlhCUeFNfXUKfbg8;zAwL4_xNr$U zxOU|0_VX|yF(oo{-3-s6Y|%Igp+s@d4Sr_5{CT)KezbM@N=r*u zeT%gswQ?KqD~J?eoZL@E1D=#{uw-HI?(PIh7F1aH@fW!g7G(PxgYlH3SZ{9MU_3+) z8-_x29vnbSS%}}9w}HnEXzwA_WT!nkxUf%$yj8w(m+GNMREc34;nT(EdzkkZk`O?) zdz6*D%j}788#So|bB_aY|GKRIfo^A=T9*FA)bFI!*r2sM$tnB*=Rp2gYxL1ENzTL)_Tw4|` za5UNB%7;<~pdUVJ3T{=oN6##X6q}!-R-eOv&|3FEy0_QbTWI?=xX+6cK{#8y;9NC= zvdCZan`IruTZ8m~+nK4Crf*x?*;&$kQq(qxYY>Lvz<*BWZNPIuWyERB`V_d)B>N?_ ztvb{z<;9^qYTvvbhhp?KZYfIxe2{1AW;GqbnvsZR;U~lQDY;L!;n@u&klB4efy_UR zAb?>hwb`uWv5Wh*Am=d&g(N@tDi3s+^LLeSgGBkwvsa>S`tT zavDZ^f4+(V;?v!oXyq-oGj-DtA(l^$)!Pm}YczbC4l9?*swuU1AK?Spgn?++r}i<+ z4?@S8%Q$TH%^EGHx`C-l^{$Rsj5~_$j}8|2aVAjcXoh+ zqXoc2TB}#O&`^Qe0yawQ>(*rfn?9KI3g&pCn73&y*mMOlj?z`m*;(15Ar$uJ?YrP2 z5m~T$JF!=Ce#<3H+10V`q76I(vBT#@Zh2_0$ejUrQE=H*!Hn}@G8xRL)R;rnmCFH9 z49VNhl>@g{uV#E}0h8bs-8z|Y%?0+76YGcDv8gh&j8}@UX2-QIGHi*pP`CVB<#~6v zvb!|=@x~;Six6%kPWE|2w(r}sZMGYxJ!A)80yz8Y4U%5e4((yYheETPMU~AEt&n

)^lDmfxt=BM(E47CLS5 z5QrbF69YHqt&ewgVfiZ`N|Ci=;I-sLYn343J$QCI}uNAI(B_TM>te74~Dp z1(dDLQgcXBYgB$s2bdrd7SM;8S0hFa+oJIpt!E-4pZ=8O1v=;DqU>$;&KXNt$zSyn z0**z*0!`B*9gd9G7M{@MExhn+{$g~m zm{wmhNJA-M+NWr2K*W$@rp1XuFC@}4wRy$bs*>l@L5}a%!wt+U?vyeCM`8dPoUAD{ zv1;7Rb+sc=yO=?+GjYL2C=t>7T6`WeKbiMA z?GO^7$~wc^a-wnGqgW-8j5B8OP`yDmQnFpSk7AlT>qo(MCg|BUl4A#}b$%P^Q+Cp1 z;Ut2?%&wC-E;=L6i(B;`SJ40OfarIDtQQ7xc_yh*DRM+mUl zbmr9u=bP0+vxr=d2pM891%iPmwxQXEGGN@XKakN+3{&l1K2_E{Bh7}h$4NbvJ)VDs z_a*O*uk$5(&rSt}&PD%U4cg*_zO0$!Q%$zd99@ zc|vDfo!$m_R!52~%h0$8>v?>W?qmqz$5~OwBj_!wx(=MJy(L8UgymOXl8xOSIQcQ% za%ruMJXU~^L94UWR#g1F#bN9xRDnC};A9_Eo|hwP`IX2`BqJ36SBIha;w6hcIs$Yg z`uf-+%1gETdit^^WUu(>i}(u7*f{Qt3!Wenp9hBUW6M5CaOHCO0J=$QYB_IYVA_CA zSoFgC#?NGgs3$8^M`FVHQBQ^zY?ZWM;LX^7_S%N|?XBq1Nx~M$-qY1hERg6lquWyq zF>a;A(vMF%sGfc?8qJHyo!<<&M_e5wfVwBMg3cZFxDTs!0#M?J*IHw-Kvcm6Mu*OM zF#Iw6k&bqt|MtOel>g*);b@>O-rk@oY9bvMNBr82!>jex9hY!{t%{Thrt;hf{l7V$ zu%op%hJR5By6l+!pfzN~mc;oxF7*K2Emc;e25aAyjzO*MAc<5D9m1^5xOwK_1QX(W z@l86p!0c%9;|pQv%8NA<&MHgG#v$n6QG-)1%^9pIOxJm&J_)g1<`DqY9B6qpxrd)1 z#E+rJDOXs?bi=`Dnjg{qrA#xV_=Y^}Kdk`UxE*f0Wad}--mQ&?F(g<#EFJi-8&Vp&xgP(4_{5vZ0vZ-W*S_O$ue%j!cM`=1 zt0j9>PlrW;Ap@A$9Um7ZQUVW4qR+5FOak>~liI7_HcuHjRd@1Q;Y#rbZ`PidzORci z-xuV3%mb6KJlMU_^%>B6Grav@Uky-MP=p{gkT9Oxx@~*>bHHS1j}$+eA1y9Dx z0o`3^4vz0hhQDUE$h^dHFPDk1m#qCkTKbADM8@ldmlzX3aDcNi}I*ytr*X zkV(QBgYtEy(Pl*cq+h#z&CT$-cV>h6$>k4Cx`itCz6~}$ZClx{<@aZj#TUXZ-@ugtc<2OLgFa;+oOicM1CidD3(`ydG!H-hdCCZiC^4p zUsCWO$kp1plxh{{)8VJ%^W@^p0)8ie7nrIED_hmoijo9>jtM9gV#OD@7`x$4qNH4>*mB<;2RfVkXDQ+sR;)nt6REfqd4Fo^1V*FX{j}^@=9-K$gFYw-f_(LdwVQgM+aD|#4Eu@;2oQ7l zEXORrYMfGzJ1{(bGHlNzzY{mZF+#kW;MfOMB3aSUfQLEniqk?i`_V-QClVueMEo*_s_$J^m*jwd{;CfG z_OoUYC;&V{4e4zfQ4E+}-BeD*wkcq+455Fplbw=J@RG{Pz!(@haT{ccWA6F6Z^WFR zG?{2WI?O$;gLd=Q;qC#-sDg8&aSS<+9S(*zpHU?xdVV(gL&5!(((OYialK>>y(bez zf`XtgmMG!xq7!#VHBhsOD@+wQ-JWOL!?0F5Ka{`~TTwGwek&&ZT-mh+4BGhzW_du1$-e!yk-`$%qsqe}NM!+TnHQq#{yWj7G@!EArq$pLza=rx{b#+)HF?-zE<)Wq*^LFbYHsSOY# zp~pb@Vp$ukWUT!XuF@@^-PyiXnUkS%N(9Cm#AXMJ?6(UYU1q!pVOkn4KQEkIc3^8_ zET&-ivQ6|d3qS%1HkYnZh9QJb_@qcP=RhR@)jAg+IZphpZv@o?C8#S&80I511OQ~v z)C4D>$+pZV1YQAZ(zFbEj*tDz)T4YGMGcK2Wro0w*hBu}$h(O03>QLXVLO5u`V z4D)l%SkxCN%0?@^amty6On$(T6{wAtezP=_dD|&YnlI7DIM!fFr@4XR!HmJ8l;pKN z+~iXjvE_ORMBxc6Md7VINm7nHeHgg7C(P-Tx z7skM%j^lwG$gMQ)lg$o0d6Ajpj_FKO<%ZOC&PII&=L`#4_1mUGgNu~80^6&q2K-)B zPF|_OoN0j_HK6xqaNv=$j|^+HqLz52HH~u~D&*26R*hGEB!EsFiTY*}IzvwNOYphA zfCE7^>m}6?a$ormL(ljC;P7^#+o~bd!+4t-DrI7ZXo@(iukj{*>Ip7#Y! z(+Dz1)Y%=h&qOt55{w96QWJUx7W6iVThHX76Dp_-jaEpY5jrN`e5);<5E~hh?6?Sw zT=IWGgP#b_*v^pO6&V6Ga_+GKvnL=V4{lEwJo&cWmUnGznKTmfa*R6s=W6A*oF(Mq ze;P#u(NlhqSJa@x6wY=}lbb%Q*cL8=UE6kgNRMO7xMa5>ge-aqOQ1h@d z=JxL$0v(jZud2eURr3t7VKVjU6U8v;Ae}(f6eg4(lMekQDG}~~0do1KE@&$=S4pYl zKLyZJSE=+JzO56PZn92&;PgU}M-#VFiGzqzZe6k8r^`J3EN#z;k3ccrQ{1`ZAA zE%0j4Scn&OyD0oX7wn&yG^Aei)_Bpob^uu#;pXX3WnhH@bY?~ zbm)+CPoCt4*J8rUec3C0QHQ+RBCs%jia}ZN#x$O)`cU_;S%vFwk{7se(kBvW$3V;r zsiWo2P2EwlDPL=b41!a(dyOMi^M#jgH^3%AsY7*{7z!xn9B9DI4`3R&)1dvTv-Oy` zkgzO^Px6Nc@j=&Ggi1b4j~ht1Z(~PxzrYcVdoHEeo(c*(<#Fhq=vllp}Fj3iXzJwrr zlK@d2wwt{W*r3qV)%KYgnFOF4nbA(|hYVLhk<_K~5?8E>)e3H^{u2$7C$%B?p4*JD z(%&_9FOL<}_j}lm2bprfOgW!gBn~ECJL7E;$|;J;&;+tYSH8`vi?;iZaGQ_3(-OJ1 z!!AD9cbG21IKuN>pU$gGa?o?AazqL?4+fE>t0RCY%(j?i&l{xP@NBXjg_}QMeB$<= z$-h#0cSML%p72~%HybFLPYaxn7OVPhZyY6DKU`-q`;$x5(ZKkW1I1WbFZ{u~+>b9G z=jkGdr5StUnVI?)-*;I0qyYcx07IYaTT_$7o`vQNI3pdt*eM0A2SExZYjb8i??sP6 z>#Q=s(JYAE0zKK<9;xBLmr4|$#;>43MR1@=o?9BKeve&c+=uvO>^986;s{k9`AS@+ z1(XPqOi!QGYpcFwhe>Bb0mm#q9J@8;9*6u`0cY}&gF!ccr91bZa2%4T{#^9}9qi>s zwdk@o9K>ErgqU0wcBtceUIh_-aYdB_EGH z!Q^1|1`HR&_U2C* z=Tsu%HyQns%WWiEz1ow~qr^G%6vLx$^CSiV2Y~Z<<>FV}H3_;E&wonW_wZc@a-#TZ zp&BdM5Q*5Dzg+e##UJrSZ>graVq?V&@}ncD8X;Z)L~bec=y-wGgjJQU4-w%U3f^r) z9S9#jWa_u{Tk@CJtz_`eU1&c&y&yLd93g?x1!HkSN*mq(bGLY ztq2}e%Jw5!CS(;1ZJqRIL0u(3b`h1=IeN{pYofVxCG{bZnNjsKggvgzo6xRoBXj*92*KxSOlhDC?inlz6^XV^*9 zdN2Nk7rW;^StAx5G@?3&ai&TZiL6#7&XYo3%JQ*wLKB)rD#@@0O4PCx2{3G z8*Q)4-j*>8%!<7!u#zRQ0H zmvuOm3Ilu>9<)D}O$tI3I0ESZkc@X7mOlAvW*0xT@e;kl zyS%ZS&lK9%EK1K27`(ohPXHjjQ;$Z#CGn~y837?{>5Xdt?2D#Tf`3sZZLWhr>J+=5 z?u5E0qmQjUk_wL!ytjBIPo*wDr6l7-$dqzd5ruY;1AZ17m!{!mE?G$@@b&V*(OtE9 zmDZV;XCqUk?Oc@9pH&)ho%o;5C3&LU5~qSN=2COugaO|k@_eXXdK0g#{GMBoL1S@6y3V3s*o%OO_D@-x}ISV7aQm2Z@TP|Uf?IovWU~z7}%>|Tk1x4?% zVyf(GHtR06PI@=4B9S`Y&V>Z<$@rOg_D;J5j;Ca`UFI>S7=TlF@3pE|b8b3E`lTA@RVw9V&C7 zGA0vf(+r4b)PZX7M5cfsI`AsEmC+Qg2D2+-a~HNlkj)hGX2rNZ%5Qp;*4pahBaR*v zVv*Pr0kd`*0+3{)3MsrO0-PzLFRp1ybKVo9(_x8>ZVBxn1DUFQ!E=81)y7MyrlO=h zErlU;`nJ@H!p86a=+(w(<%I_QAP1^9W$6d`<~8~5(0$Rd3}Z2nZ|s^!b7vzF>?b7Y z=i2?o{TlU>1zSkQt@wT|<0*l_2D!--q#B5DG05%Pqj*@pVU6p8|7R8m`9d~`KvjeD zru=?yo@3!cfy=BV$MZa>``Z)YDP;M7JKh;|r0SJNM~l1wV3pv(i?x}XN^B|@16Rgp zZ(fdfCTx#pvfx$~lKQ_Qu&+X7>3>y>n2fmT;uJ~+zSFW0%BsHEHN%T`(4fEy%UGp8 z(MP>Phx|JAomc5FuY;_mUtbQs$>c%oPY@agf&kk#G@L-`3f#sEwgz5F@rTne!U=VV?DAAb>^U8(!%(P5KX z5EL@he2{%z>2eXj2C_b95m$?fr=?AGo(6uZ4A837EM|6*9<@G`KI@l*XvCzG$?3Tx z(f#k#t~V!;d?JTi`p!|eIwNnx0kxQJnKleB-1_?OMA+{7l#(45>0WK!d>)^m$Q(GU z8<5EN6vw-NRBi=0=I1RHZmD)2#xazt?(V`GG0v&E0ex>7yNi6~72yU|7jG|mKL}B* z0Q8OKd5DOamoaaj;5U#n$P_Kx&2aT{0#cf)ZS)x&H-X|LCD^{{y-98e_BXEh$%;J@ z20}WdY(XytH!psb%K?V+r#iCacBklPin{tG6ZrUAqD}il0#TWEbMmmhDTo(G4r?XC z7o_7h5Vm$W!$`_)6mAbgZoIJk@ew=8vj;a!3iR!VB9>p>z1OpWbG#ot`4Sdw0cQ6> z&372Crjz~&&iq+e0f+hvqZ<*@ZhI+`nfyUw@z23&D~>+WJ~WBGf5kSLDt&Spy(TF! zNA5l~1*FcaKi1^Iu9pRa%AyV+&rc|bXkLGm;>cx?@VG&yT zGzOLYg6cOLOc9svYqrw9`ZG=-6c40QeHAk-!!rMpHaQV`bHtwR=zBw6cNoHesDeYr zV!#?Xmg0ndVpJ|6SwK2)J^gyVDq?CgZ2xfLgTp0DwE*VGxyR^oh#8r}%x?^`L#B)S z=19RLErwG?%a*CLcx`uH?CUvTy^&27VaT1ym23Mz;eswY8bRrkkL52!#$5W&+p5GT`7r18`>qd=K>c>Dx<0-MZCfVih0 zzL1l`ztMM~8>_9nsb#`jIGmq3U#Bx<|Mz!uCfaIAp1^d=L=WmYE1oh3s~$GMK#40h z#fR$u=4psG51CpEDw72ZgOU>efc~UJq{8g-aW;lyifAtHO*_rWcGJ*wRE_$CV&=77 zYpDjGxs2UGgwY3xoH+*Dj3jy{ApbY+OvH6+?l}q)G$J%VHz;o{pE~%Kfd^M6d|;HhcHybo#O zj!&s*;L7t$A$m?vem;CsYg#8edgU$rhyM38qHGv|P={VfkX;s7^D;oe;i3Ut5P}M? zzVZ9d#BZTCZw>ep##cl_!OH=&dNt76$`Df*Vfm%XiCK{emh1qhpCx?~kw$|<>w!f( zEx$}$NWpf8^>~0)yo;rVAHqkh(S5gvyHaDbQELY9d6F(c4HSrfw284Bcv1UvG}9|< zxHJxpu|D(ZlTFb#YdX69MefgcpLXwe6T0L*_ba!cq|e{4^4prnAnps_CJ?wFBWm?D z9!0*Z@>sMDtaN8~lsmA}e{3zKML?^_xhf(TyndiiU}j}xsi~U)lFmFv7NRj)+s_(?D;kAJ0)W7Vp(1i*+CaGt88p2M{~vat z=AG4!Ch;>RKA^xbqxCrLVvJG3u6u9!PW-DGv`kv789`J@80ZIzQUP}|h7L4>bL2U6 zH^P@(p&%ITnhLex&~%FO)pA9NB3?}^vZ1HSX<;F6|B5c-q?-c%(j$5sHjug@J(!j- zQrPN&thcf2$P&mTzDCyr1eNo1O9zbSK+~Bq({2_19!i@1DV)~?x=d@E+WEks07&J+ zt<#CsOG6|EO*KpyUeqbkYVtbNERDi(0lQ+;9pt8&)gO)j7$!s039WD=AV7yt_%aH;ob9N5asw9NqB`L3 zry_MQx0Fu$BqVI12)$!qj2;7g@E=hG&etK~MrR9OTvM8tZGU z>+8)~FMDrGWm2b0TUkf6IToP@lfM`9bg6=qg6Z|{$i}ABXWJf(#E5-S`n9Rd_)2tE zIn!UztHbzuXdi^RKKKl($O~0j<3QV{)dKbHebk>n2YTCHXdRgrKHqv00uw|QI@d;} zuG{!(IGeqd&6ijnm+MKMiEz%NA1M#a`0Flvx};$E9X^`N zL&MBbz@bF4tWKD(D$as9(yYZ+RT?tHQOL%>@Jc|%yveDZ95-&BPujwIL2riv@*eCl zc3$B&N)~MH$g_wy_dgTOZ8(dvJrLgeMkrSKv*1r6tS}Jq&S`{@EknH$&L!y9?dl3P zp!=Xs7th`!8ptYuBh2aWyC_#RHa~4j18$zU-mxUy1V?jcF~@QoAq{e7g6l%t@6pF3 zKDmuYzDkbGK%G4?Tdqyz?c)<}KDSu9NBy1b9BD=qSu{p_l zaqI1}-JR&#G_Y$1U`62#nK(Q=OOte$J=cDUSsIOtZeu=%hE(xnvz>W}C5B5csS|0m zM*4;lwyhPvrI%i!C6~ko3$TJjCz~%}**@YFmA3UqKlVvmD2$T9?kUH#EPW?&8vxHz zmgz!L@FfaEie_WWL-U_12@|(!atI9q01f8q(Vg2XL%G@IaG69D{~nj>S@`K1_R&<6 zVAeEgW@;%*ypjjU>6Jy*ga{Efll_PfFOmN-@=&HZbl9QWa)6xto*YPiIM}>nO=ft| z81T!d9#IRdhL;$H4`~7P{Z%7jsq*NYkmv4oi4N;0P;c0mM}VgdeNZU$wf63S!sL7j zqA5E_sAJBJp#4&;f7K^AxK~~OQW>uD1i7cnV<@b)+uBi^C5pndBOd1pS zT%ECZ$lo!0N(6P-SB2>_tnK}e(2GlN()5yfCqcnas{fRLZa{yvUZ(MZ=V#j}*hjE$ z_*`>IRH;v)@mfmUs}+P1J%1jq!^I}x!>Cv>cJ5#~J?V{@-(q?VwEvvo%SBSNgCFmWC@*cDM=Nopgf|`WfvUXrC26U z?Z3eKSr0(y8AdWagToW;42eepVQX44G%`7_lW)av>dT28+Hn&wT=Q-bX~()cPBxx6)>Emc2Hg1N6V zV~K;jprv&x(p2IS=TmCJU@STche#F&+o6K&GmgBP-MUgUQt+xtcAUaGDSsS@Umdt= zeoB zlx?G7#=DQCMUW9kF7glONC*3jt2c~CgQCV(H-B-lx1Gz?0kscxAa9YGx4A|FZ2cdW z2X0cWVdz>|j(A@bEK|04pX`GMY9Z~iNpN<;VlORdoVOFGgT;wJwVk|G6CGu044xC^ z>Vi#^yt!d>v;&r}P*M+b$fXrNcJzqHHDn^$A$`brxYst*3E$O3dR5@QuINzM`3I(x z-T!7APR(v+;?wP_;7-q;M9%&}5-n#4hnNcAY{NOiteLgWg6`=9Oj!$)*Y0++*YWQF ztG^YQ8&r|8s})q<{f!V^w&y+4-YGmwLv6K#ta3i2%&Bih^VyEcDa+4aNBx8+OY3VJ z>VOq@@dK+gn{FJe0iSICZsdgJs46joHMG?5jj8U0B}M+Rrejb?@MZPr7t#S*&LB0K zqhT=LQyY0!4+%ea7}}Wf6Tf;P!}8Qsu}`8CZMl7OS?-+&(Nt|?dW-`5KsS?jO6IoY z;_9Pa>|&Aqrhd{^1gmfzlA*1Ii@$F(gwI&6GqJmzSe-9bjK*{}*IE5ej#57vdYebd ziKlDJmc<4eI}<@>8D{sZL%+4WeemYp0QcA6x)_j{$~Lq=S@Ea#Mv?Y(<0NoOUc3|I z=|E*XV6EL4CR}%!SMJro%gm8amAMN&{e5DD^HivQHjj~AXfsfF5S&sQit)oW*zK+0=PHzG- zk3K5kS~|$+kLI5(ug^u5uwrpZFnL+`>DrQ8ruujdXN=foKYjp6-O-PZ6rYBBKeK|> zmFn4XbV<&-;RrdjXww3ornVT~{#{vFgIiC0vjA808xNGU3plU4hA8geC^JwUJw!eO zZF?N&L`uLIKOtSX^fi%_BCGgrW9u`ko7*|@C9o_uU@}zrRo=xcg!mmw(d*b~;BMnB%0~P7yt*p$rnVdf zOV}8vCVDH$`Gq2Wf6&enwVTXSF!RDUmM7cpq>7zDLn70PtameXXtcH`JSNAKWZbBg zBOwb2)b%b#rZX`kbeEOcYg!#$u8luuyzI&)&h>7ZzT20o9 zSj+iA)c7UN{MssXCIu=NZ_Wg7iNZELN9>SX`qWKB7{&;S#I$Ksl_$3dxx4&aq&HmG z21FAIm0?LRA6Q-j|cGYwW~sg+|ba7nf27+>Lkhc9)b#*M}So7^6ST9_Od6m z>FA&Ljp?`%Psmy6kpQ*``MyS3Fh#7C;@7~Ld%{$NY3COC`kfihuNMy~jp@8PoRZoT zm_vWOnvM`uEtZRJ&5J~3X`YUBpp4$~ zg+C|Prx4J&G*a-+La=P;nAB(SHYYd-ol0Z|S%z`Y>v9%sc$n@4?)H{@yjUQ3YV#Lu zF_sTZE737NeQ@=@FH$#N&kA&1B*~pL3I^F|CUYNBPl?*8kDI7B3Y^58c)rpGlIa%; zC38u3a4zf$l*Qy_0zGCA-tL!6{Z1yN1}AM9Go!h$7u@6&InOT?m3EGS37I}{{s{X`TFwlmz9 zu#}N0j3^Cqvinu5u>EK7T}pkkdJb?`pG_up}N#PSeP0X=VU1c4DP) z4X}D2bTDT9j|i~iHptPW=FMl=zC~Ypstq@T+^Zi)j(WXP)L~uV-194w%ztbTF8giB zfr2Y(`D!rEw^Qm?M-j$ynPcBw#I8&T(EV3J_6ANq!sgx9_TpMEFJQCiBfVG7 zvIUqNaFkPP7u~c5)GP0QPu0v<>Qd;?t5v*h0Dl}hxMuLWP4c_5o{ms{xk^?bLcs&B z0E;vFoKc9SWnhH4`q`4A z-a>FDBB&7+eG2$;X9{US52QH7FCdS>y$hdXoogXl;Btepn~L!F_#muQ39zf*7^JAztP9+|Z_hBwvc5O(}Hw zP)z-?mmd&Esdlf%q|YF{B63^{Vde0}VBJk`U)+d2O}jTc=!^|ww+TI^Z=Fdc zZghQXtqukX^UMR>J6DG zx5*X{6OWJGy-f!>`;cwB883jr$a5Wh8<`T0Y|&iFPg1|NSkjda1Yb|CB6ONyq+HwUnhI)<3vx6B4#_de~ft z((dR(VL=c?q2U7Gnx2{)4H!mY{$-@3L{Y3_nsd3i2@VYyo)cOn@*ZHO>8U3knOf$#gh6uBf6|>8tg)>_o2%)bxj$q)^5P6;LpY7uJY zc;POrxRdO5{q~VK7b=2EeRn__@eKb0pt=-4lx95M*-|W%E@u{_yt(@^Mi5Yg8y+bd zmuv$U9MYxhNV6U#$NPhhl;nspgFP{Tc7iG8mDtz|pyhGOa{2nR{M&0N2z7Vp9 z3DvFR25q4^hXeye{S(;pa~~}?yA*i)xHdz8RKp z2%?Ty{k0ZH2_VOSv5>8AxN5+XgCR!wXhR~=x^+IJPUQ#2J<6_C5+u@z81S52W&I?LxW-e!q+H5RcSi$hLitG47+^7`G3Ghk>kW~smZ@r&+;_&0;TW2W! zp2~lW{)`#q*soLY+&~Zv#;0qo%^*v2=P%dKuj!J&BT0~Bmc^aLbFIoB-tKSz5Fyq9 z$TF_C@m*x=sCJ-xyV)suaG0At_psNru65a)i~1|U8rTHv%qPo@$EI#Pb;P`|pn_4; z04}xOIyq%X%%o7wI9`BL&%1*>JSs8;(Me-~eRvdL1b?PVynIQ{Odgn?Bv3N91aEew z5hb@jlJJe(eq3sJPud;a;N6|nG?=_zpwsKE`WAN~qG9IJ7C){v z9XisoK#bF8J&d`($Z|S8d@I~rGjtRrLqA0sKl|X|i7pS8io7^AqxTS09XBpscBf9K z**$hUPXy>UT#e$mHp_%Z2#SO2_tT(ipAnL3)FS>?lwvJ*tzG&~chsg{Z7kM=*`pI% znVCA(8R4fS0#q|UlXzkVUwLp{pi=3b@sv}OL<$4 zxRPU3LHd8zEJH1*py9_!1O)t&mnQ#3eq)NhaOH#+Go-etW1zwZ1G*C4Is zt3+uVD7Y!nzGUmJtgJ&+8kKnQ+4U%AF{qV|2<~f74>~hOPrv-M?fV*klSrDMDW&Ug zpW+JN+&gUx>Z3wSqC#X;tE|ac|JXK`Mk{%IM(K(&#=p_pLi<7pXhdSgRvfGi+jkKD zC+sT-v0epA^DzyB%}9xZ@-RsE$Ff71O9Yzx=&o03p?{ixcsTg-3nRHp+2sd*HL8W6 zteSTHEO&>ONGvQWi{W(JEY!Ddy0{^_m9#12J%_3k;=Y*j7YeMGSu1jrD9%`u)0>lp zM4({kq8oudUXn@H&i-E%6e5s;r!|ze)FVc$t>>*RQJ%tSGMsS3_|8waU_*U@wXSe{k0*Pm^+~2-M*BIK>F!Ax~}T7#=QF+_fJ!+B?sgy zihMkeAfIC#4agk!fya&P|9Fj7U7><3TD0A_mA6xn{{7&DIQ31VU&J_ciybeoUlsO#WjH%>U zNN)#H;A7Zvoo}?h!7lJVG<{>=9jRwpj+ODH~TR3#qgi4+8PrTv9X`6}+%9w-2TL+OBp@T000uF}6FF@;XJ`NLI&tuTM_UNKa`iDG# zmn~dVbnfNiRlUe7Z6J=r8_O&Ver}j1JKed+w6XC;;ql3?U|E`Kn>?4dTL9oWX&hUe z_X3TAkY3_00#cXyf%Fyzi(w4O}?Z+i_9DTZGt0SaqfoiJ~g74b#&l}U~M+lZoM8DIi$7>4)E%F&2 z1Qrof?=VF&KDR|oy-7;v&Y6Gj(qlx zcn+lINZg8!lEWM>2V2DYH5|kbOyh&8G*vU zOQyc#_WfqjigtnE8Ddy6I>EL7un749Q^k9mUXv^shobOl=@`dD^Qo;bev;6z=VD#w z5mKl-F)=zZU@cWVfabG0ysO6bs zrv=SV)|dvGA3W6AVbk7QCAsIRhYe-iKVJ_P{zK5qX3?|`(GUb<)@a?5)D7=RRhZ;p zi-sdGf}LrH>ZS+Sk)&Ssf|3_3Sa~>TCqK;eX92YJ!+-R{{xr?nSUPBOtifh08yK3H zA4rD}Uf2ZAM7jpkG)FrY8q624IC8o^Uw(D-&fIa$?V*I{) zr>Da_6&?eg`}2r_)F}9zxMIS`H1FDO{xJHCi_GMFgMNEYr?=C0eVl}Pcv!1ifB8Wb zAHBqJJ7#9?>_fqUX+=Y-JvIutJV!0^F1Lq!-N7sSNR6&`*G3JgQ~CR$6*YGdK(Psl z#zs?oLG@4k+?qg?Mcwgn&LXDbGI9RRZQV-P07=rdMEHY$}JIoEzf5w z0hd@}HJvch!U&>~dQ1_$jl@^eQqPLtQ8(Hm)5?c2(K!AE60&v;e=Yl%rIDH; zYt&2hd^LVDdwH;CubyY7rh1Estwmd;2%ufb@yTQMi+fqyC+n3RY?vc~#}_-uyF-H0 zZMH-VmK^|+zmKuZtf-v!5u?>8Bc2_J`!$mOq>dl?N0J->VKy0=#DiaM_y_|k{G`va zXx65w`@`8+br-9s!P`BypyDN_$6+^L&5lU+U*PlERv53Y-WVPgmt?XI{TgqOq&2IwLvxs6zZuDUL4gPCv{0HWA zw$|}5v)_gbdQwQ_qxF6_g^6?=N6w`uhliM04G*j0Yn9>tKl!R4dMtVM_w1$AN)7q~D zN%Qpc1mMLjrp5Arfy4n&_e^n2wA9ycsXWb{rsoK5KX~1CMVh zBWxJT5x23xkYtVga^*#X@Nxg&6S2Wh(?zs4tMd)f!Rek5c2Vi7L0=V|q*Z=LJW_q5 zqO-hHEhzGIa&QB8N?DU%9dYTGZl96%@jV$4oPT6-8edbQ$J=F*e=V`uEv4ePYfb`J zPlQtM8t-Z#3Pojyzum+gPni5ACLpyUJ8gCkjdCYSt8)2(;hY@y^%cH%ryxh?L?$97 zEuPo`YDq)spu!?1=zFs+#GiEF59G5*H4@cE6m&QExs?=D`Qd5m0LhsdU+}mSAA9lI z9!4cfQiSLRh; zGPN#y&_##b^UGPx!E7_Vv?85s@&msC`7MM<_4=R6JguChD976Jy_dVsjfp#rc#p4` zo#sj!HojjA^Nt`=s$WxjgB4pB*owxv&h`(xMQN_uy9l|Xg`z-&F@9bPby@79a*8C$ zg@N^uB`8PMG)syexM1daP%5*PN4g5OaqO$$4ZDfBzXZe>#nulHTRuoj{PpL$`d2!Q zP}>TFwjXV%?%T^0oKx2L)&PTI&zRg^=_Po$n#Q6@tHJAdWikk|kg090GY}QVYBMKO zfSt|$a%z~70J!cxWD^AU@wZT$^GlRqXaLFf5UDmrMp7%UEg_RiOFi?X2_Lm^9Kk>d zk5zGbcwLcVo*?;gQbaD!uYpjxL7BdyylJ-NVwc$dxaH`ampw8vcI9qA8jx#pgkp&l z@q4Bh74exdszfP;DrsSMAlRulGY$?jeywrfktAN@<#5?%JOmywkP#zGAS##~WBD6` z+#05zPopA~LEI=geFCd`3G9kmtc5=R(tvM6dHdsEx&q*qL9@G=j*SJ7E`MxL@qKV! zD?&@H*yfcKZYNGyYflq!1r%IC^LzpGXnJG{+h9;?c>$)({a~N*UyD;k^K6np0GDu2 ze`1EEaxP|7POi4qx1654X+cl$Gv7kH#rddt-xvW<6L0($a@HXL6?X;@j6n?=6Wk+1 zlFT$H?`K_n$fPM{pAKNCOh96*`r;JdondAVwwO_CM7D79y4?2oCSh`AFd;E$pa%&j zN+u~m$ui~fAzD$)7*)5=-H1xb9aSL=Me5pO$7A=gKfFiw=D6!OSse?vJM+kzJ_Tg7 z2G8djQ!NeB2eP{l8;@eJ6ijQ^)b+-hM#QR^`-x0dTDN&RnW2+I5O0 z{(gB}M~S9_-5>tTqIBv9?e^T@OI?4!S>sY=Gc0eVgKO=g(+w|nJ62wOz#A~sg5^XV zJ^)0-;FyGyoSW5Di>2@UxquR`fl+cj!?i6niQs#!;GsD*c=j1%vXYrn*Z%wef=rQM zk%k#w3m$k_A(Jnq8Cn=aEy25PS2Mz~%fRK4#^UI+32!Q|(;w9|xx%9)X-q(K^c(K5 zn73XTTA64XA45Q!B;(6Zy3Bw`MAM(ZXC&d~>yQU~Oa&>vS>NWlD_xACAY=1f>!q_? zs8M61#otJ0S3&{iX^eF}5R!H6lj@4O9qj1pISCHieiyJFR6~5dVDnR|$1fcr2->er zm-=*ieYeVS;$k2o`>)G@I&B;t+A4ZS_hJaXZp7Uy#SU(cs+rm_iYDwfeQy#)Vkoly zAcX|y4=SZ7ttt|LZy(F#y$#4vzK zsmRVIyHG!90#Uzxf`4L|=LTcs{2lF(dD!+B0iHSkRj%x1NQ^ zfG<0U15ue9)ls+(j|fZ>0RdY)6!i2|;_gxn3ULrSc97q&7H#Ur{!PR=U?IkV{N;Rl z8^xu*&+QQ}>_#t9d4@NfxgnNa{Sddw^nv^=z7gMR2ot?-Lum~#|>e++qW)T#M zyA3{*>JVeHpFgUS^}7z|Scd}j{;r?2&RU<0%Nhsr_jE&>L8yLM*oU$wHu2ov?Hm=D zSI|G*aXUM<60DQJjfFNUF7P0n>Q`k!V*h(u zOMJnPE5S_b2@t8=NN+P65&r@8?CHgb6Xo%bhoepzhl95=kcK(A=5T$1sNGIsOZa^} zqw&!YPtZ!n&8?D^XHeHlQ8LO6#z?)Ox9zN`{p~0EZlEaY>ouBz z9v0^Z2O@hz661w8HK1Z;4EKg^Nw8!!`(3q~AOBZll18s=NN*U0{#Wm&vUBX{X5(f& z_`n*9>s#ra-86zb9Kw{EVIDW0j2yS0Q=hfdU7awWm32b18>zU`ASdYqcn zKX9eJPTG)5!WrVn^3ZzhgI3hzB4DaqFU6hno{4W*5Ty9u0JtoUj}~Xn3_BUc5;nR& zlL!0qP5o3Kq0~`vLa3>x6zvhbq0Up+W;p;~`sCeG?vJp3Ijef0ioAXsc>+Cn(Aj+7$^%tXas3I%H&b?IYO9l#cy%vtvy4qm z?ya!FaTc@4wZ!~vO*r%|guwQdEp!&ja6ii9k?nq$;8_F&2Qc0<_=8PZGf z$|Hd@7tJrQl$I{+e_akZf7EOoQ3=lpU9;r72aM_{EK(3}FL5Hke8pQ@j_~M5u`uu+ z55Hi>&mbbs+DJCiK!$ek$BbgS{9e2E3`6qOHKnbI-bA;b05>md)*d^3rtXYUG}U=Z z(a`LbOJH)Fez209J$dFSKJDa%ylpI6+t}{E3f)pLwAq3gZSRkpr3D9SbNg3!9p^vO z1{s`p^U6_NOHMJqZEo2#NQOlJ27mp6VO_@XMbx;7&vNFpeUPP`W=7NiT1<~X`-pz|J<6V6g+s}U@4vBv)U=B$(gc+J$)4nHUY%I^N)GR0n5fw*&7?ceg{qpD z)y6ZR67p?#`E?8I zEBY6aGD#LcaQkJ-#d4{C#R(u^e5hE>v81z`gHdec1?1!z^~55ecFc4J-o|Ygr3d)~ zF?@ZhjU|@mjZ?$*gDIqoQUniH8xpN88iK;5 zeTZ5w>y$#QaDZm93YOF{(e^qR`1ME7zu>ma%V3PBMS+^AVr>~ybGPDA@`FwyFVs!W zLWrvQmw-A_-NfChz#R7{H41qa&&+`IPJfyOsrwrmmCcMBkDyIrTEBgdvkV%vk~xdc zbR!n)Uvcm$d#?LWr1+^N9|AGl<2=4=pXJl|-+M%NW4X`H`U1&)HmF1A`6cU0vT^ed zuBT<-ohz?38CHFJ%7`hZActrGIA>kDF4j6UeKb4{$xm9GL}q@Pm9k%Wc(?m<(mZfi z-Fa$|3e}-;dcxFjA%GZ~$(@GSjlpfl(A&Y9YD--jkST?NGUwo+o$>ulvWGsMnHLhg z7}3U*$;NEl?Hxg*?Ef0k|LQnPC{U~75Jf!;OXK95s?+a$u|?aQL*^VjWNPXM@%ci& zP37fHa38Lz=O)u|F}+g^HY`B7X&>0t*Q&iBX;yS_qI=QkwRmmJ9E?NZ1(JZ?0ESyP zwDdgx_lv}FcVbF;S5NfhI2tOz?d z;<)E7Bcy?mC!m!m3%LUz2CfebIC6UPm>?X1Jo1?s4`;c444QiW^f)u0HO5)L;ScDJ z<7zA68t(|79jva-slF%#{W)U8-_n zX?wG}Q#q{RhqwjCZRacyjjU|QZPcN3B9ePY@6 z`+Q9jT1RD^)^s3$?NRvFLllupW5fyL6STwMJPlw-WU*|pjFeXGnN36ON%F>N;$}@v zp2-&twB#VDx@OX?P=Gy1Ou?=3^IxC@25$RjfKZ?w!K9Y#@m3`h>UV?s#{}w-_Gae` zV%1<$%x4G+{0?Sl@tP`!+o_+%^U+>6F6C_zG#33N8B66T-0Y)Lna{B60d8me1iHsa z)>c=}6VC<|s1MP^O;lyI;^8J?99PJArE|O+d9hZ!(hl0CrFO)Q6rdhn_Gq8rrvYRX zbhigS3rJLBA6}%R1^4UECw5DRru^FztzzHqHTui-HsxRmnRApcwk_&xJQ$_#>Kc^% zY;|*Ak4QYJf%4B)h4=^-lIRfKU+!3wJY1#7{K5VpYFQEHGc-_S#gepNN97%(wG7>u ziHFS9^z<=|A;?+YsnEeBJ0*Yc<&ZZP(O+AgfT@u<62`z(iL(~8>>Bl~sK(IotT4Cb zk9Dsh`lhiy7!qwj@Mhv!m3u6r=&A2j1$RZr;mK{_owc*Z9fPKFhOAcE-|H)1734k9 zgCQj(q!8E-W>cC$C(oPnXfPF2WGXjE2YAB$fQaIZY@3F9?>_4G<3<)rj5#qT>5&YL zV-o>x83Pm4B;xe=FiXV{Z~Bld^Ga>5%#Mbh0x}PLS<@zqdX{0hjfeUxGkx^@&$e{C zjmY4AeVGj2oA8>EC0NTK>LSx;Qe@)o80j-n3&5C?3RT(0`>iL=U2b|_Hmp$QFA$7) z#e7KK#!kaU%hf*FxIc(tqVvUh4#&R`v{UG{H4u6Y5)N^`KQgnfM9SFBMQ}&Eb=H1S z+r>~$Z!WZz#N;|X%s%T8?w$MPdoL{WD{6Lq0pR5G=F0bU=@zb&+u0)Whk+#|jr<`% zY{utiWih;Q@Tw_PB3QHgl5E3>mOLT+1hG|!tqLS_%QJ|b=@YiZ2}CPvDEl+569&S% zmMuc2-{jlJL)PP;|33AlM8ieAIocIj3Dqty96qmYt3 zO4RQv>VtZgT=Pq2I8UJ&1Mv*6jrv%o%TmXE^BM0V8iPuuUO@--W*LRhWvF7xEpa-Q zny6d`0?&e>vdWnWd{)d>(6R48-=IHEm7}%-QS-7&6R7R&1H~|sJn7q&2NAN>3EFJ(s%Ar6Twg}>)&j)ob4%ySk0GWOip`NW^{pOc zh4tfn);^h(7k+Ep+1n7ugO4}4*NY(ME`+-UKf8smEiFC~!<3{Mgk$63TydhHIw3u2 zR)o!lEjx?2Tk?3)I57Jp;kbA$HlT<_Oh5pJI;-wv)tzs zuba;@8l6ozp)&!e(C5EHWshhAcg#v1s-}ew-4etd12?uVeYur>7+K z?Il#uhZZVa$sP4OEBEiGTYwy$Ui}ao|9dG{L0!R^%&^%T59@$}P?U3W`-XPA`Qn|y z5$1APh+&-`W6v<(B(#?3Wi5qG(nd^){mrNgUN%dt+0Z&bBq9apRlNuXQfEa_%d&$5 zeqKa{TFU!(8Lh>7HoxDoRMj9$E+f+4>0@k&i`BFr6NA_k{KQziS^6U#W_^yOi9o&X;bRo#4)vKh?Tj##=IDE)kAG*R97boFV*3o39d>&;1@h7 ztr7d(eevXk&&EFR_h4#o2gQPtXEmiqKcprxt}`4!o(g?B5M+rZDdkR%yt$p#Of?gI z`{OdNvPD`QVM`giz~+8VBD#X_#-(M8&-ypTeubiFarWB*>_K|gRZQ+x6j1#Ky4*)Q zH*!O9%!u+@Y9Z;5w-oVj9yyK`8@iG*hs{Yqjyaw#x-wuBLu=HkQqL zy{3e*oyM-^J9}+&SeENk(F7a96PVf9YIz)u%;~5rawiKh==_?GS0kv?z~CN9PHBYk z$8CV7Ab$*JJm%5qg>M}ls#Yf^b+@ge&FGkf^3P>7qu_d{_(F$oC*E++5+i$fkPz>- zLh>ZvUk?Bk$dW!Bg&^7T+3DLKxDxAct&DyIHlWT)IET4)b}_}kRN01q(2aiTE_cWNT9c${wRDT?371T0h>FNtQUIEm>E0H?*(M*?84k)0nR7B&LQ! z`AJynot5RlaJ!5DmC=CD=%nq@0Cs!x=zeVcoTmI#X9Z7~$PZdXA`C z2Gn9VjiiLooHIeLTcRVcq+5ziauWyEcl@}UxM&hu!;1{qk0no$X*S;Xac2vb=!X;1 zUhmp*?li#qamXAs7$EB`;LakJXPSWMLPt14390t)$ext|B3t7QX9cNxb7^?0} zmWSel52oU!wWyeo4Gw98h?@N(Tj$gY1B9x;!&$hXp9IDtZ#!V zuv;R`LqyQ)U@giTZjwfgk=^>HSy0J&3zNUnJPW~Jox+EU*|oVtMaHgQ_HG%EQh%ei z8ujn|oPEm7+KU6+>?3TougEB{cL82wWZ|$M+a-&hMozRmcYqyI6A*)WRzkwQJ@^qG zIo__X?~smdTzAuX`@sPz>ST+E$h{s7`#=NftET|IafdmJX;sv+AigHOr>5s!9c{B( zk034^<-<%=us-Oi3ZcA6kYo{M#@K9;0#d5^qBN6#`E|}XIfk|@yJS=9R+}gE44v&K zmBl!$MRwgqR8?@HdlPTBtH{FIq5Mjb86jAyZ4Gl8V4+CLnIB|>L5+>1=EHP;Ly0xI z+{V_KZc%xMUya5h6W@9+O9fc7Wyt5lH=U z@3EvC6}laRDg#$5-d%p>n{xW&%Lou|*26c_5PuI|R!1#>-&Tt}cL+hswSGsAu#sohacJp$;K3j%jF%)D6LXB$H0wm?d^k!I(UTM%`N z&O-|6naGH4vVjE34s4ILN>{}`$l{BFbBA97UVTnCQ2HeTFP#ZtDi^G}(N6d;n_hi+ zTE3X~+Wi<%I@DVH{*EZqdk?FIZOaJ!GoO<{-b5ehyR|%#sPNCU!qRyl`<@d$*x93h zfE$;LL|@?VR8q8D0V(Md!<(5JDmDyx)FYhfMt2bzCRe_6rR1}D^p@)dqMc8kI><*l1-DV~tS#03S83d{yM)MU~{xPG^|#2I@52^$OyOsHgP#$FtREqk9Be<9`UcS87YhG`2A? zQL1S&S#xM8iS_>T2qJh;7xLS`-j2K zp{bKsM_s6QAfBTAJ^0tM)P$XTbGlNydeeq|IE@FoK@kndi)T|PrrP`HAB`4OwDI|jQr6<%YnrVA|3 z!%WUuR)kv_Of_menLsU@S`lJUs$@GUa0GBm#%uZgwhO2vJdRZ0Hc_^%lhGe?D4HF- zxLC^Gw06efE6V6>G%hZ=!aFMo52(|0Wg10_Jjz#nZ&FWXqnm#^`{F%Bw@p$dna=Yw z(=_h~Q%<3S3oVU|Agm4ed~|)5fG& zcwQ_`kCJ(~`v?#VfxJ)Q`io@V;{+@swf||~4(;^u&1`o7TA24MFHX3Ccf`NdATKSM zEr`T9{wPv?K6?l#vP_>z7nlrO1lyXpU$_1jfM{mLs%o^?$u5|4XE z2IBq>U6q7FkuZpd`#>R)%72*ZiQRUYx9~o&)D6(tuK{+Shuk5T;_nW^WDUqD>NBib4n>3OJ{? z^!tYt%;k+Wrl7^IK~C=n(fY^VoK93Nt(x)Gja-mw))}#CJtd3N)!#c`(m%32%8Vmx zBns+@)HR7mj##l&Hg!bp(~MnNYGjM76gTBsOiPm)Hwja;-QqTiF#FMs6YLGXa38WJ$M6#83|>zB zQScoO%lG@QYM$47vpZw`Q%emyq6>x=zu`8y)X~zJ{V1f3gXMAn6G}Y|@d*^I)zl<1YEtxi2w5i0y>@O5Dzlg?}5C{7hFq?|PZynQJimd3NP@ip4)E zSCUj9i$FVvp5%n%Cmb9O5&2#BCAU5-F@+{hF|sNoo2Qs1^u>$yIZ}*vW^1%Xx>gj< ztXm##V$SW{w7OBm#E1YCOvLlbO8*GQ)b;q=*kT`(_)&ZSQu<(2jDb&jJ!!3Zyz11X z1igYjyRKbfaE#$)nT74zQ9jx`BX@E&u%%I)a3#isx76Xf0hqQE{Fuw-E?7u$Fb^>f z5r)*HO(m~Qg2FB;;XPfqL^^b_%-f8jpWdcLBl$0AQ=~Is4)v#)P-Bq7z<#C#Z)aKH zYDYGxQ{tz`96s^z&*`$#J)ib14WI!NW$LeJN()>2_AdYb_tH*hTrpC?{Qy5ez`sF! ze%OwMYI6B5$la6_r9C(ff0X(F*asXgl_3D9&71#T-IPH1Ka~1^o~nd|qDN|BLC5yzIpQxE`$(2( zUqsDcDy|_R_STaJX3r4#tetK*HT0@UoHH6CLD|I$l{T~zqSs4MQ42u2GhU;Lp!5$> zAerIOp+mT9aqd?~j=}3(x9>SMUNK5^sbq2CSb`(fy(Q7SMyVMDB^!^r27?&po1vi` zaqirLU#)_%r=d1WWpNuF=~LmDO6MZNWK#Z0tv4Os7>H_1oI!4Ie!}aEtp%`!C}|p= zh%hYV;Y7qS9u}n8Uid*hkGtB4h57H8>MjyXR+uCuRyMHwrN$v`qbaRk6Oo&JOg6)n z4y~8vU_S-vOA)zxUZ{0zO#6m-qS{`8;@B)OA`2{n;Rk;(FF_R`ik$d;&U?8fm3-bJ zXM~?!ipp1f(2wJ;Rj`jkfnK9hBBpxb_H~A&_FRo4#6piBB)Pbd^#+NVfhae+q{c=^ zsH;n3KQZ|95XUW6R6(FFEumSQ@tW3a3-+OEeRjp_#p-VQa=}qO3b%WadGi9aewkI} z_Oz!7Yg8L8W3b(QyITV?H|E~gC2YIxb^@-wf(a-H)5bL35i z^Z1}W!^uJuk=fjy&;P*^4GtV|661gJpULNCYh;j|Vjr@H0;^|O^&Ll6>ptG8`7)=w z1wM(#jYvYxxN6^8k^`@v|Kyp_?2yY1zQt$Ae?6?rVSE#5xH_=|?m>enTu58SF2!9{ z{4*Brh_3!SFWN&*lp-zB^qsBqEjy!rfP!Jr^CABoi@5)|ff&De_BwkOj8?T)D_i!H z^6=4zI+{91h(Gfg<%p4-IT2qQz2y7WG&(f+SpT)NxT^9xkB9Q8Z+imhAV%KQ!71T~ zlasqOeBkej#au!)SI;-H7R9x`zm@wa4HKi0jH}p-=?*rjm(Y}PAsGX8yL83xCEIiI z-DKrtwkPSeATI?gg$S5S72^8N#763gpbxF{WuUwEXi3&ccGA@HHTAc2Z^^UjR^^cI zI4hU|0YA0dxyGaM7~ggVJj=gude{&I3$X-&h#9T6FG}BRd_v1_sl!m+Qz~lqw>|>f z7@UeSWg%u#;os!gxbx_>d%F=}aVQUkHX)JXVPPmjs|VT?Z<~ z5QN&Wbt2hK*~DonwAzF#_Z>^Z7bQs&5ff2wdu~Is6NW;?qh=rXcd5H7lK2OA5w3vK{PBWxTj0}=7r&h2eW6&Znbkkn9hKZ@3C@H zNHKY-5rShF5MZu)1cHeHd?&fMcR&+wc$ft;uwT3e>ZpXm?(88M+tLOiWllRYt)-OEWbgZ;xp4 ziRBGFD_oWLZ*+Dmf;d(#Cl%B)W-ZDsZ8*kq);5jAwdSJqEB>ganN>&O-z@`YC&GN? zr34XTi*eG_r&K@F$S&vpfmvEWnE{-``E`YTl#sKewV<&)>wqKO)Gv+H=5wQin4AiGa>lFlNnZY+=P>VBkyRG_iwp&b;oYiMNrzYY_lp4QY0?>I< z4HolJSFP2v(Gx`}m+R58hb;<~S#X6b{PWdZcRN@hDQ+T|&;ds|?>j!1rsb#_JPQ6R3sz0a_YZa;aHV`X& z3+wKbSi*)FG2XI@Qz+G|s!Mwf!JI-h7I^BG&S$@ffrCL}4l?A{PP6?>3dDEZV6*gF z$cN4+!F38@^tp10xUI2xG@)ddVw#|V<>RXb6OIgee)02b+UV?RbJCUWI!Olpv(AF% zq*NFrO2ECD9?VmRcpTa6cg6ejXeM1&*Hu=g#p**Zv09?#+Y?6T{03~sf}%V}ypT5x zDZk(Dr$Fv&EK!`gWH`rB!E>1@I+QGC!E=`08HlP_+x1lo5F&O0dnid;&EHgSc_4{5 zuA~GA1vH~jfhl22nT%z{BW_!x)u5`1Xd^7n>AP?5$bgr=v(qEB06R>!*wDrS@XD}2 z=P05P*vRk$M!_uJv_y5CF8zyATZO&9b2E6Ly!(>511+Vt#V#6sg$)2cE{+j_*`X=P z;$@R^xk68*%^R71?{FLJ%hu6LPqrG%R%9OQ>h}X%eDoi{5aGcDZB;34bbNP-Os7TN9m)*n_ z$sdCy%9E^#irJhrR;q%Qwef7GI)V%7HoMFC5iSD*C=%6G$Y>jD zvBLvwp6!)NA%=Rq8GdA*eKKY8BXw`Pr@Qsslfg<*pxe=StMkcbh+#>1vpMn(hXssS zMAiR=XEcPu+llDko>gd=vaJaiaoT2ODk^d>m@W15T2aQ-95#hD>l}h(Mv>M17Edq0 zqQK4fGqWQj+WOT5SPMX$ER5EcUJYRRwn2P^q1;Z?WYHiPo*k$5=3@n`v=x%S7%%-C z=X9<16ggPlkeW#TB1pV-wYzgX-!PNq6)k{J6(swZ1T2@kVqHamHmeixS3f7gu#0mA zb&WfSAW+NdN-d`P1Ccg1mh=boP@&u~#;A^G8m#+Wa#JHvS2ZCU{3ZU$E?EZKc{th* z|Aop)o|VU_tZKyR_9faS%@m~?q>IsNrgX3$Br07KE30JP`Tdcsx^mJWIxVIL;qnOf z$2&GB@v`p|Pc_3WQypT;vE4i1A%O!BR`SXkdq>N+=38nKFJ+SjjA+btA$EvRn@J zP{4<1w=ZDvY&QM-fmK8&gYn7zL*~`52Zm8nw%s9uVoJ>D&1V2%v>2z+mal)|{t*1s zvY>$%&3zK8{eL4aIh}8G$y9zB)`yQf`@Jd^;p|69x|5>{3Js-asA*&a*CHY-&k>To zer_|4aI&(mpUaF0U#xS9$4YKqJ4(dQ#!W2MpWGjc;c|`C?_uvzcZSD{exCTa?Ar9I zcfyH=jj|&mX}!j)VC6Bp!91AY9;{XrEf6D*o0=x8-VP~YT>v5>5IRBGaUu`HH(;e% z7{?(L6E%+L0lwDcn>cSf%_A0rUdL>`YMp^p4#Y>D&=Bv{a)PLgO^Vt)hGBE*YUwm_ zh;WOWpWNR7x4Q=>Mn<>8TFb;RAkX~dcmib^%nktFX&v^+-HfC5AQ$O-AIBHqI{sE6 zyK9W=kv-z!<5T9(x zUgk;W{NCSiPH4WLl*&V;hu#H80$4Xb5|qZZW~ZoNa|NvB`Oc_GHz`FejzdH$ zgf?%)=8fSC5Ii_45DJ{ryQVsxhY&V&NvTrX1%NU>Sz+exkf<9E8$-b_%EL{KsUck1 z-W!O1m(?6CE4Df^n(b<`elp`<)}74lG7^ba;WA>WLa*86bR=6kYxVsioagUMVgNwR zY+qvo74{B<%+XLyPRg$T6CBnS64QZdYz=Xqz#U-9JGq0)`D4wA+b0W%L#OctrV4n3 zaceB#EIG-_yPb0_?W;$2b2bwn*8k~o{y{o!iI)}hV?YEtW6D`JvqsgYQ}CYpZ@bPuQ^ooK+7g^qda z-)(P&2$L+=fWJmmfqADpQF|%*^k5b|Ju&p<2xWba5mPRiS8vd8$9)lkl*Oy!ui36^ z0+YRR3jTP{P5^2k5Qkd<{vsY zG_kE|c*$<=2&Od!Pg9;lr&Kl0w!aRsiD0TP1e&SP;M!n<%n0GXl+q<|cQRiABQ z*5{J$wGBytpt+O9W0Bl4r+ADMX6-N(X|r?r+~81~{(HNBlxh`juKsrxQo|DpRG1_B zI>V+WC9P&+>?qbkw_X|Ok$?-@*W8!2I6UU4d4))2e4NF>?DnzZ=Unh_anzC(*TvrN zWMC|Fos2Q+R+qdEBmkc(Rg(pL!k5VH z4?Sz&o>fjG#}ha&K{;GIbU-G;TapHJG&P)6C4hqB1EG-F>GhRhS*h&cGs6FVE92XL z+J65}RB=FD)%nt~yngwe0Q;s=*V=^@D|OrkXY;ZaS?09Nl(st2Mce{b{Okr_Bm?Nv zS`(Ro8E&$6B2iCA(t6N@e80ew&s)l*?afOPwKv!kdgN8oId=yN2Jw`su?m;jzB8FY z`6~)ZLNtdH@1;JRw#r^M#1I$@N=GLbmXzA>CWrKKh?!dEl6{V2I7@Fin9xHVxHrpR zv*#+Pw-Q*;tt?CNI+c z3Qpq^NtwWxQu``=06V9_#q5Zb{^py~NKjEvyadHVHg@50;xk;t%a8xCAu?f@yae9U z$L5b_#q+`r^rh)cH^rs31Twh z`WrOvFCokh4U3bVq!|hTtYeiTzVMH$0Kx`7dz<=RY#{Wg^&E*Bg49dI5UZ=l#n`g# z%b`r8mc6zl4vFJvHn}K}1C!oSgwas<4QgxfwYUl17;Tvr$4p&ob5U8s63(N-aP;gy z%9=EUzl$*9Qm=L{BgD$4_eqz?B^2j99R2C)8t9Q&0_4;PXrg?gO$C6>pEu?T+ApV2 zcuzutv?HxQxZRU7Y@~rc4#x}2N$PueJ!GAnH}g!!P8V^97N&e5>^9;)Sh%j5NC^yg zjUa7yr=OL#%pjs&xEWl*SL%%2fi??+C0#i_8*MgLKN@yssTK4C77WRyUU9ZBZ$j_h zt8A}yjBiIzIvglaDhM*G{~hFwEnK~+hp;eWnpn#-V*9%O*_2r0ln=0$J2kR$lJJS@ zb*|d6Vt?HFs_@#=(OcI<9EGKbu;3*R)JWjFRZR2$c=6}s;AIb0t>9qGnL`}HPB$~RNa0deR2-(DG8+>X*A%5tP1Y%BD$@F*qGqb zr;ap8k2*IbV4CT$l|GI|3Q1wjCER2JfPbEXN3^@$x+b`~+ZQ0=P~`wogOa~eMxOc> zc|x`QMQbr+tDL!>FB#qV(sL7CeYdc9%|_N`S;X%U=n-A5gaWOkRR(6Ote_GE_wLy_ zOjUz)k6n<`EmhXG60|i*;tad~nO6y(b8-Yc8sdGVMF*UWbqpw{1e3PAq`w2&>yz?O z{6Z1x>oo8e?&k}CedhIPgoS{lRQbx0PWTukJsQ_@Z^3Yz&(68n@YjUq zo!@Oo_1K-s`pz?I6b{SKRZ;8{DkMu^LS>sXC0aeahh>42v{UTKOGIpB1cC+MK$z z#v02F5&5=`G_Idt0Q}UQzf(^&%C$f3NB&Y_sRuF$&$FZS^oYsQKqe}uWkBX?IcCHj zdXLQ}fa6gRxdGefqt83a9y*$v$biuN(Ur*5J3IfiOL6k1vk(pZ-Xy{J6bH&b4e+Q; z8tvFCB7?2(pi0`_Fp3!w`-v_R!j3<+YT?sV?hVtKm$iNXb}K)QO{im7tGf2R-k&Wr zg=eMEZNgJk;{#-Nh?kI8c8XEfUrL9C?s~k+v`BcoF!H{1o*R=$omTxS+xKCnYf?}m zy4F#ms~A|DO1B@#1Y@oHX3rjiAM?@@# ze9woLTP>M~wN_?M>c}05$*^sr4D5u74`juh4aALJjs^&L5^ANa4L_c#$kRn8aMGV8 z$%zWJKs-U>)e(kwOyND71lEOj!OXZ^yZE0eKyr)ltH~h~?c9b4={lNyuzWuCY($MQ z(dv)3F2H;Wv|5vjE%}pd8L)R9+{_M3Nc7CwlAwn_4UZUiXM+zdZk}xgn@l4_P9iIF ziWU0ubzrI5Ni7F6ssY1Hgx`(?h&TwLzx;2BhN?_YR+xfJoe#IpQQLKRP0_0W2K{z3 zHXiv}vZMcNhFH)PW%UqoM?ggr_=T=H94=)$VnxjG`Grlr2vX8l&U{q`9bp2@NE3m2 zF*VqEV_z)N^E+~T>7Ss2%lDX|W3MR#H!a`U54=xen`a^uF@}N=wW_HD*~g?bIWbY5 zXULFlvj-TZ>1L6B^)e%fQDbeA^{pxU2oWApW@l^91&7|*NOyoTCq zD9m75GWfVUEm=MFR$hptAU=ySU&GGJ*1olCIY+-}snstJJvn{M@p8=JFCWitZI?7` z{AJ4Fpf6-j*U2Q|{G{3pAmszEtr~VxIryCZU4dY8181bTz9JX$)wx-?qnoHr33mI1 zuMgccA3{H#VlkRY0C*4Y1O2TpHS-Dj(*^KI;{!hVXaAkhbI0BnLawQnfOuqUQp&oB zjVSzfX?I9~Bo!b#q)j;%<3(Ac^BS^-jn<_~KuHnGCUMTI|*%kDD*X5FcUI9aQy5x?}A*DOCC;P zA%NR!S>E$95A>Q=)OCtgX z{nl5fgA3hzPlN(B-UUqoD*XaE;t59%ccMYobz5qv+QcoiF+TeA$vXuNFQWr|dc^xg zPGN@j_SPN$n!|C@Zkjp#4V+=zZJH}$w|1(PRPsZ+c?c~eABfIFF9Pl{a#RXYYDE2Sas|&yV@42F}9ue`;<5sEqE2@#qmb4DOco# zhzw|9U zLM}~inW$OS60#|w=k)o`vY41)5_fuJ1MtJCxWfUn8{=(G6qV@96_yI0;FV}+XA%&e z5gsqQTN?=OF(KPuI6cSC1i%hEhLr9@w|~olIRm)ImJS676onm?O%ZNWvo29|W4KkG zT(ABb2u00mzGl2+YdhQDr4bm7ep}=T3O&;>14jMZ5p2>sixr-{V`(da$)hJjV2#C^ z%x=F@2-MewKlpvbx7JkFv4h{Sb2YxA6W($Jx9j=*$t3VAB(_73+optk*6GpMcbeY z!FH-`yhOO7fd3286^icuVleo*o#ETbg)L#7!3KvT1z`CoER*ikOBvTrpB(bvgC@!3 z{X6obR;w^Jh|)ckN_KxraM_blWqu@RV?%EF`2+1W#fI*5K1x|TMEKdeZunA^+p)QB z4abSI{AoH1oVsE5X!I{q)wTgSCB|(YgvE1u`2~EyNsXTv7do39SUCB(w#pWEHO*X4 zD>K|)^5l6sFo+siFa;s*){vZfP!*gZ6aJjmVyW>KW${#oI0}H+wGTOK%k?M2VZo3{v9<8-Q~G9l8D7QhCyXp zuS?Qj569~phb5G?(Ft(T@z5D0f+FICNT;#Pwv`eAFg`I}`r*AD0UUpzctX%aS{YZK zgZLbVMb}pbFj80vF6*MBI<8c=%!BArGZl>L^58JWgj^wpx}*Fq3}APVY`Q!66=A$4 zu_TPX^N>`Ci8-6RQ3e1LueilNsOCKT!+|bm$f=0o+0BCn)S1F6osENGw0EP3-m}pK zT5oiwGMTyhQE$^7qnYXhHgSadHf2nZ z9gEc$6UWiE6;hDWfe)zF*`qK;_jJrlsQUkYZZB{|cPHix1kwuS;A%{^Yk-P6kT^dR zu=z;vdX~)JC8zek`GIgDhsZ7{#2ClHtDN?4 z-}|A#tscu8$icG8Y47N^$~PIYh)zvSiXJEf{;pl=Nqe31U#=0DB>Mu4(_^;3CBYDdAzMabsdMKH+TP`N_4u^Lf}HSSd>ootWc3C$hu_>y zDY&1eC;f|n+K2(V18`smL8FPwz#3<&k-z9Pw3~kV!f7HX=@s~DSggmVBDYzm@JDk- zP2wrOwgl)A8M^;w$jzCgd(3PBCMc*>0)0Ua%2atHE2;;NhUHN&N zj;~3RPCDH*#k5H~sl1vusg z$Jf_yiWq|XE3dflZeiR(xb+^>Pt{oG5Wn|A^>tUpHfAlvca!m_MNCwV`TK}DdmyQe z?j2MNM{NSmBe{k@W-g=iw%7f%9CaQs z^^Ql7%y&1)x|=l+PozYi9P*UU=JG{82mTVsz%ghJYDJIQ`IdH2frumaBw%d%#sJM7 zP80$L3dd3_C%Y0-#=V3my_7`pGgwj5NoETm3A?VVO)Zj}?~o)wH?lz!urNWy$s?H7 zg1%?^Ldbsv88V96+WP2k$(**lN-qFGP{|<}_ADKZ8kU7;@_(>+rx^wQdysBUbZbj@ zAXwib+nVeqW6T7LH2nHJqP0>MUcW~7m}XAWBAqIy*`EMBVJdGnCRVTV9WxNZK4N>C+RY=m}~X65V^Y zt88P+d*^2B0h{p;NGzGK>EGQJZ%%#*Wn{~t6-c^gjH0awGB(A$-KiyD_~cT8 z=@YxA#0qGRmB`ol<*~u@4kZC?lV=tk`YxwDW$u+?Si>sv9Rd^a^6D(5k+k&!f0!Z}i?L)X< zjpRJIEZSxUD(@2jQ|F5C`JSQXyCQ(PlEdz@KtnR<`}z9u3u_rm4~YdLWMAl8DB0Tb z`*I-)U~FYqT9AGr0TSob0Lqk+20c#p#xQDjUCGWKBj@wAiH5TMP$UxPU(>#6}UXBkfU?4%Mi=0$Fr+$%|XuR!9x^j?| zQQZ!ySymMaW=f=rAfXQ@O*2=`w8{u>e%dMKs`F=P`l~E%-VdnsLeQh-k#!SnH*Gy_ zJJ2OR?b=kpzdK3tc~c21RVnNp$$&%sYt$OfYYlco%HNE@)J50{L{=ONy>D#a zg^fS>n{~5#D1CRxptn4IGEVPm9NC~Kv+><5uO?}Rmk=Wc|Lhtf2_2!f3PR{ktip<% zKkKB!UH8ZMztbrc@{y|%>5t@R+tw)!R&MyQCCu3(2MmZ=@@TdB=|BLq^!^dwu#J{H zg)WGCONe+l8m4iXt?Ccp2>i72I0rPcG#Vm0BCcSU2riD_cE?TZ7~;`OtX)#RPposj z+O?}CsHyPD$9+9wS%AR&>a_BxaJH}>9q=?O)rkWSUwGwmwk&%B=K-TT zx+^^+0|)YPHfTc}VrczBTJ3UJpP}Sb@H4}MlBiCASvt}adJjX;d9wJ}R+b}om&n`H zFA~va3-iaWi7tLV{4Yo{IcP!J8b|rec_dxnaZRG zR5Pg{*iBKDV-5ffe`(vj2*|p_zVTkcavWl)f|B?~G7R0%0YAfn_Z)vQIEHc0y-PE9 zgn&3PJkFgsqk6O*2n%h|$!2IE>W8L+IwVeZiZ5CRN8YlP(rjf&h!0|2LiLBxQc+J| zW=_&bs`S8AxZ&YPrjjoYN1Hj0V~}<@Xkb)I33Bn(+{;y7<_a3W5T$DlffXC^*EWu( z0qTh(&n3Np51XKG;aJ!gjuDiXVY#kbXxab`zQuUs65L+L3NRpQTP(TaN?5$5orPc? z`X6#H=G}za*F*V1^7!dxTOY}~=xAM_{hAD3l$Q<{Vx$F7x9tFJ}8)RC4Cpc6l?m+qCPE4g9OhQJs4$ z9x<$iAZMz*-X8LX;B6Z&tqHz5>%1PjJ4WJ`3iL7V?;=OAq^f2|eM?BY6UllgHwMYO( z3l`Z+RGut6+LdMx2&EPbA8;=Gn~B{H=4jWrE{d4H(H7H3oN=zoriEz=4@j#RTB<5HmzyOuNd^$zok+_pNR+3bw&P0dJ)(Q{F_uZ4@m2Y#f1=erPXWdW(kJou1#lbLiFjmlje0gR_t)4- z8O0uQ6UIAc@yUB&!rqGKl1mTjF*+24&?-t23|(aLBn+q^z@Y5335ACBQH~bgDgktl zFv)gH-lI1-Wc0>HKA#tBvnvY8ev-EC@zk63hLxSODT(6jI#;7netiH`lgda>-->A>t_5kQfG{guXY~zg)w96TC058s1z&L$igtS|xx0a-L^H5KSt#Bd= z5@r7S7eJs6Z0gO6U>)ACFooF%KA@y%iqY1)_5B`+5S~{`o2IfQ5pK)Oc=-?3!+tvy z00W~bas)l!h+B3sgPvw;24`4;Yp}t^cX@InJW2kWrtN`mCZxAV+g^EQKrw6 zUX0?wF#Vw{LB^Yf*U{kv8qp~!KZYI#YAX<+$S9e!nRCukC{D}%w%KFFt_Wa^WMH74 zLoEex3uTP;TJUwDsR)S&gWJ=BPA`Euuek1e_N10~(3EWh?; zWg?AqHkM~QdnIq=zY<2Pj8J2 z1TXF;D;)lvDh+#8#TQh-9a}&BzYF+^cs92K203Pq?g*cV3(0G$)8aIC=|N-8hY`y4 z@LwJJM@B|W#;z9V&+dvL#x3~}F$P|31|-*_|HPBHgIn9|!97vG5kX>7On)_tu2HRE zQ*i#c`6g^DCg4^QA(;OK$Nn~$#RZ2F=E9>AGg1n$pPgn@44tc)VhG0aE2;#Weevh8F&JZAbz}Kl0~TEacOZMp`3cGMB*QJPnw z9VRM;T-}RYx>L@Uwad14g&7RvQv)Zc5UAXlPneHLl!&nbva6_drR4XADp}MxkY6XKyxYA9Sf)aqroh{|4y}ZKXg(`SjfI zBw#G;RL#q_CP~CgT?-QXT?iz58_Hw~($s5}pSx2R%6gdybZ&~~W0H7tsfaPXDq=$Y~A(#1{wNS88Dg?4y z5g(7|jQn3Ve@N0MOfUh0pEvNbKk|*OQDBIi4~*PJ7+V6`#h59|3T!W|1uWhu$jYAa zM-3(>VvNmaSY=yfi>xFYX*9gm3aFzm0U##$GazC&c$B`2<)M>F5;91X;{6)_K5`k3 zS|~A9$kV6E6Htdwj*3h9x9lkUBX?&i#11bNtyP9==QOytvv5o~LB(@r^rybHhy6W+Roy5`gGYq2e=&cw^~gVLZI#LsU@8Ko}t*{n{l*A| z2L&_3m~$cM$(U{o+s8rKFIRL0)X3V*qH;;MMR7>-q;#O`0^+OjN>*Nk zWp_H_djjRxS#Gaptl(t5C=Gr}LvF)yl118|i)xY+ zhB(y32MFcI*?E5d=sCXfQv@5pH@P$jGQeXP`BFHskD2tEN(c&Iby*<+CBa=;JTG`) zVIdC=8oLaT=4AdJuQ#7c-;DEpigSYNJ!s7u1}qyisbt=#*HO=p7cU9|_U<N!{lXL+i<>GhQWb>+*3q#;x`S_kT& zS&!O?GL2#TJ3h8^W~nz(#ad=W85_1$2yvUBf*NWMteSe2ULTd43BE$e=s2slJ%lC+ z-*=9uCOM@z6d{QO5?5OIQcOTWnKfU#N>b2@fKj^W64_mf3<3*++cPA3*08cc%9{n~ z#@4h#u*|pEZzJEvGfJmYAyq7CS{^b8|*#}H~3P{`Bo9qzu<^U zg!{HLRK{bv`A|6JJ!GDbe^}rVud7_ip*k*=NI(l-7;}N)P8TZX@-F_YTSk-3DSaj| z1wpTZi!-~drdqceq)dnxVNX+Q6S7eKS)>^uD22peRBYUWS+)qS0*!#cH@uz6BA`T? z66EHsDdC-7RaRvc49HWj-O~)T1)U~A2*{S=o$rurkmImS!?K*}bWGr@2@ulW9E7WP z!T0gIh*r)%8HjF3oW{C{%&yA28gm2)qpoP& z$=y6uNO`2wZACKCt#o&!Up;*RI<&JK%cRiPJXuAjQFuh^zTPv80hw1p5r9pI_Z1S^ zMP9Jl%DnHt+tjF~{={No&*lVojjmXWgh4gUF_So|(XZVTEO~{?luCaBUFi|ktkeJk zr-kX5Qc1ogh^Xl`UuoRF6jJ3?hC6$ZedkR|+i13Z^9@Hu=#3Z4HRlHkQr>wv7b&1F(7znHjp$A)#C zJED8h{p~^+L#L@L9AG3eU@Ag7ft>AqJ1}ENA8*csg{jUm*byWPD7yT#+EV2yRKh&R z4U<9B{~KYWmG1@TyxPrayV<%ko;7k@u2RN}b3~5mNbVB>0)HdT@(#(nupX@O5G>;o zx5CBLWP3EHM1#@6G73uU!N9JVZH}R##N6)`$6q+M+QOH_@*30N9RGHDX{CAG<-3Bx z9*Du5zg@kh5ESy}G|v$ldeV`R9uFJhLOuo9)$oEZFnN8Nyvmvz4i&y%^kG!}vNIr` zl1C_tjbP-e>@#{=BZQ&xRiCMwP9D8A{4x-{~j+RxhBcrYO)ou*;W&m0)Iu;<4nV&Ik6y2y*BuhVYASUT~kV{UzEI|t}GT!7S z4nbD{$IvY~?9_%% zwh(V4d&}b%Fnc6Jq5|(K;&G&Os(LST`(*iOxz)*4ytATWzTp4PHkXbien}et2rNGf zJFw&?={F+8C}07wRIui#cq3L|rf^79aF+oXGHk`AoKK`KX2=D)f~gKeqWrci;K%=jfI z7%q19zThgaY zHO3ZOx9(_p5$Tp^YjyizmM``mwmsMr^UT&Z;AzjDXu#*%RmBDPjFLCAT)ax<%tGJ- z33~_BTt?mR81-dqD_3UUi3O9>9U3gb4;`*TVoi!;vh32jvONwLYdzilMypgF8GuB% zbt|wQ``A?zG}a*JSIqsVG5Cl$3UL!6kzfG#6nNtqp(T~HvXlp0IT=HZC`hGZgD=pQ zMgZ53ora0v&JCsoCK zqhGx*H{tk^TcB$iU)`8x6Z>YX^jVvxPd2hqvV)eMQGa_n=Ph74ud5v6(z2M70U77H z9aP#(Nq)V3V}afvK(m)U%R?OU%B?<$w#Sg8kt6JK+JK*PTDOl1<54VL&O-BDrUEsv zS(RoJkoFSBmYre06LRZyzE>u~Qljc;D;3&1vDQ7U*lH`_dRw|x^wv29v4D0)QTZ*= zd81T;l(S}*fI<0=or%SE)1MY*d;S6!Z z0+VU@R=s+SFNrU7a1V+u~@@92#^0~#VG!u4_ zrP%3GY<~~zl>D`cjri*@s=GPBg^u)>-kZI`SW((+Dyd5Iv4gR*(J*o+C4p-60T zC$q&zw!nu0U3<<)j2N>J0Qe{_CUHzV;L5jQ&Q+H{2Qdt8&pcQL84tG^FG>ok1O=&( zS(nbspY2IhL|6x=1RZ@#=kU7*iWvtwA$WCEH&Y;L+V_d%o^HmOJc2fR0*D*Qp$CwF zH4c5Y)nHtlsCgw)PaPD8h$PrAO~}`&+LWQQz3Z4b*UT6-|M?1iX+)6&qguhvl2yU_P-s)3L=n;V}w z_x;AgGNmr7A+66O{~=Rbq-OA7U_B0KhFrFzzMMdII3rE0+adpr7y0wv5ESKuTN3YO z=5K<^M)g45wxd_oM72EvLfY3U@CkM3Qz}Zb(Z-gJ>pU#hC~$;U#?A)+5k3;bsY-Htr|d_P(n$j8$2(6k)AG1 z1=hx^+Q}=@3nIJY^}7M{Xf*=gFtqhMUjjfaRi2^NxoFpZvBw76e1Zd3v(+mo z8D$><#jVldAysHbF1KDwT0wdoQ}$EvoD$s7#Gn+rW`h(mzR_CW#v*W?I3vX$+=rx> zWA)o{8^9LlBJI8rNmQ1VJ=jK!Sd0vQEO+NW_p__B|ldHC&UCi-HP9tk{vnr6c7}$)0ms z)X-$;dy_?aChmI|dn;e1qLMkSW?m->?DekX>E_dDFO@DWc^F6w&7dY-r(X5QF zDF;m6!eJ;`W0h`Y4JF4~+J_gqo`P$LbSmPad7EQ^cZ7fYN5wVx)Asm}e#nS9*IKSY zbJbdHU+dDGOP;9ZY=RaE={oSApjR%um^wHTki1 ze;yg^<;7*VeJ1rX$haL4cYoqoT6*4iM>J^-@mKkaBwT(tY#>rNd`GwSp z3+yS>6`}dg@l_q5H~>FDz`q}2)tCwsC_Jbi-vWxGI5x;zaD%t-sT)nr?nrbm`~a`! zLl=o2rc^NMPGn99?a?MKpb2LQ`#Pq3dIT%ML3Rqx(2>`nEe+d|e9bcHBH#TDlQlio!cP6ZemCAyT7_!;o|A9(F5fuoyD#xVul@}WmvCBT_Gj%B$Tz0l z=FiEm-Vzlw7mH@k8_$S3A^?{`Us`tv3F-EmYmtD#)dG_dw3yI!ODqd&etPhUyVIhb z7NGYLxu+gWpP7Cgk7iJQbp@D&Mz+>}>3BC1?$*CjEiRl!!dQs5c$P#Y2HC!O{*Xs4oi+s3G7Qg@W4P@9 zL}!Uw)Kq5tC$8V*yjT1eF6`R4;@nE9*)ds8UlU#65GnV5$6FOMs5P~oJYUZz`Dz`E za(>^h>6O4w zxg;uO;1Bxq&Z7Dh~o?qR3;gm_kkOZQG zby@eWjo~KR`OUTMd!DEWq?(7lOs$+9*naipADayxID9neZB{cyEkT<;O*2kUWIBaM zjuBR^@w!M4+y2FYN}rt`~-Zer1jN$afF?m#y*L=hNZziP1;$~LOLi9Gio5QZ0TarQ^; zY&P8Ft}373ihm$+(y=56+#`OkdfZ^lj#xg@Jvf@9AnXnfy74UoW(hc2Ws(p5QiCML zcyggisq3ehOmR%1+{`Z6_VhH7Eg;eIjua~n7en0D#Az$MeXW=u3md2Nu4jN=bvi|e zfL+p_ERjy{Zdl&*WO@pk-)vG*Q~nATO9@8ruo3rgxEtLa1-VL7f{Uwg+Q+(`JuFK_ zOQ#%ljdQMrjP8MsfgMw|VjkyBUAQOq9jX$$;7&4K3j<|{o8?_LY2I%NhcU|SO*UQJ z*n!C_<9u%Ti$4==@@E1_I-iFL!TYY?{P|{#BVq$O-V4!x(}90t9)2dy zOrcz)QA!Yb+hm1kRy-90Lh{x&N#i_E>BR0M;kaPerdv|f!rj~=|DLe{40^3?imtm^ z7aF!>{p>Ac$J?|dc{X7wy~I7vpj<(N6bJ$NDW&AAfq?=QK*=+3pUvEuITm@rwd9VfwKJZm>)w)yupR*Pka#f^TS@gzz-fUAP#;_t>o+efP zhGEn#@QZHNcGGk>KeJRpmqRW87KCBdprrzE)1O57te3?9i#)N9v*@}5B$(CsAL_B(iYpDTr1^2V=Xn}f zO@P<0CJnTjKk&ed9pA-Bh4ZaAG(i7v*-~zcL@K9F%gFPEUj2MLf1bQnFS$3H)k>9a z3#eBB4J_=m7KrLXwXX|Jx{bhmp`-wHy zlc4&#J@fO#DpHW_U!&5?aK_7xgPgA+;3_EL)IDAdtw}DZqVvz~Ucl|A-NSIF+QVJI zba4RF3*60cyUALZy$<4bF7hI-=(4C;;ZMod!DKAXJ&R|YIV>R3F9FDJ(9k$x`_>|G zGb78pY={Qt&s1rUEZxm+z9^Im2uex_9w^Pkp2G=jpLpta~V zqGhnkdckbQjP^VlEWy!SC&*#7(*)wm3EN{ z3~G5fw2X3=0U6U*pqJ`SPpe&L#Wir;-Yf2i6<#xH8Er?Hr?mT5_`;b+^y3#yl60tk0S9ANCnv7mrGo+AX|6M8?haqEq3mP3X!_{vZ zYc4BaT`Om2nl?SvKr}I+Prf*WjHdhZNEncNAJHVjTk)ON6wa5{@FPl85NpNBA-^ia z0D7M35hEIfLu?gG+#?=mvB$qHqh%ILP0BU|C>WU_1RP-1J4$Bz4Rd%M+;r%+AoNv8 z3E@#%0{fvPP9DY{Y(a2dv|45y7?&Q-+VAzd{$GG(;EtOm6k=djD6-|K5KNlEv4AnZ zUVq}GTwf&TMPNfpKBS_oPu;3GP@uEdHfY8}!VRk?=FC8>6hbv(Su66DQQ-{q*q<{F zEO5hYlH&}na1yrRu5gzEJU8y2$p>bR|4Pj9U243ss@e;J_Y>fnT1r~MK>G92#sNJ? zv5@D0Q3X7kR76mH+GEdT?@N`5>`Eg*t)ap*dF@H2osJc6vTt9VTt7 zlLzmKsgN)8TC4hmUM=mh#flzdnoRu)-oROy6X1wm<5}Bqg zm5=6<97(o=qva4wBNJy0*ijh3WR7Ak|TUD*M7gU_~&ui4*t@{82@#{rxbQ z){oel)(u*8mq1+Af{-l zl-MeO^4A)Or~eku&ZjHzXGjp#u4N#b8yP|S3PIMm{YxsAnDUC1r zaqsC#Cut6~Ph6IA9RQU0z&OIG3F)QC`Dpk&$HUK5(JS79ujtA^T5fegDX|=K-2X9_uY@rHWqD+Tz*nOj`) z;~uQI;=TDZz#=DK>n)FbIY3`Jc~itw*kK6#S{X`j&u;dYkz%W>CvvmheqGw7XJR22 zQ&8$!1OX@!5&IINO8FyZX3ZtxLJ1sgqch~qJb;etu zUEM>erOgA}jD{@VHr|Ssicj^{M}Qa4IeqA8Y5le50gq>ufNoM_1hFGlMrDikQ;%Ad zy^|UkbQ;j<%iKa*v%l4_0xZ_ch5E1Hxn;RdCv6e_g$T!GgC;4Qx(w5vx8cs+59(AT zfVz2bZvD4Em8uU+ta@f9ZP%FSK_`2v(mc=b#M2Rb9-B{PF%WGWxC?{7*V;#&2)_wv zz&>c&2z;+>Fckj>e@B%no#pVquN^$JJvb->waTyDPengu%Nprju4y;~9n9E|vJBMx z)!a$qM;5fy&;ss(s7rK_F0(hYF}vDN5I^1iLgQ4eC$KEX@g%Dezo^)8|AsTpgFo2TLU0 z58g^lh6KPRynuXa-KIZ#?ERITy3k`_;AJHyKA)0lqmJmLru;4x`Li1RNorD{KmavA zih@O(#+6aMcT!Gcc=lsPYa!e+|VxIx91pTaM=j6M&8*mkpWJP`eq1c^M8So0Uty2)pYkmJ_n}ue+RtB zR8SKTAlX9lx8ArEx*=T+ry^RBknjJwMl|G>AV}*2iZ|%{g-aNO$`hc%ckGhjYTD@U zK@8y@yKK}g1oq5wIl{7E*Jf6VmzXVMX-@+q-eww^l~gUlsGO@-&aqw8cqEWtW|m;e z5UfmxTV|{EV^ogal755Q4BfR+-VI93y2ys)FA14e;s>f6AoP+|y`DDds=b8yw`T6h z{xOEk15yUuqFcM->bBvMg9>}FbN#lQv4Mz3^^Cq%-b8y(d0qI%$AO#FpHX*i-tM0B z$0bQv0GUytu1A|H8F=0U%QznF!$Ssgjx)CZZ0sQFal$oG%S70MVN|E9(`&R`<4=}b z3ZIl1%WY^?vu5<9JbGyoc+qWmMitTF&In57kCQ*44%Kd?@df3yO!?(Zdq0fbydHsB zlbw@?sQuf-{ws5Ta|Q`PRnw^4x3&VjMdVfDtO|LVcO}!IqWCs#u^h9qooGw(Agt=< zDF{w;)=*44fQ-*^AIAS{--%dW`^eh3oXaUsGSo)4m`m%Zp*C7r3TIYl`Ir`&M)gfV zFK|X^!&{NuSL#cSQKv&6ZI^9tz7Y(`xKL&w#Cr6X^5fcPDfHzBVDUh>-v?SFXwYSA zORkTup~V$VEk+=D6F08T`Jd`aAbO`bn!&C=V?>riYmofdN5{9upBCDgN;CLDC;RfO z!1(-Wda}K!+~!0cgZ_c)IB@prvj36zkhkAX?lGKFyV01W46bf3Buv99DE^3BWn5~zF*Yx=> zqFRBLx?@Q%wH2VFMMdRJ7p#c5cNC$CMYn=E9i#3MvHW&68Y$R*XmX_+a4=xj zf(2>K!Jpp)S0mj)gP&@W=R{(NRI6oQ1P^F1bd6iDS7fLc0Vs*vB;# z#1(6jT;p%n&;J<1LVHiK4#|L?OCHV2*@XJLS-1^^!`T}MfLab~SCJc(-X97@C`ZsZ z-ys`qs#9+U;wuv1>4~&`u%0sdzFXCVt8W7XmD(3GOxG?DeG#>m9#K@gN*#S;8+S>; zB?SvGvnX}E>PKsW&^YPd#2{BzY_nb&&0djQKb>ib8|371*JR3D|9S${B7nGLQGQHv zWT_j&lpPPQxfJ+iGuM6YreS-?`ffJ{orm7tJ||8ew!{@iRX$yysQ)olv6>~ddtqxC zU_r(`A1X;BrCF206G?}#I$3(pmQYV{;dzo!Err1E+G3ybBqdo>afv;=-*fhVRp~SC zm&HDoa2dZz-|!@0*b>)9sly#k1g7r3ku|~EF;d`xX(igLBc;hrQVOp;%b@`m5)}dP zlHkl^m+mN=R#R=JiPXfQuk?H8)S9RqsQuHMpbmzMS?F(NjeHIiq1*~EalH(OM-5XP zZ@&02qBisc;5fC|G>fJ3^P69|#K(s~FfdprJC!fChnT7WCG)6nYF3TV%th|lO^}|e zxA;jHZWKq!jHufL-r!F(OF5H5sQJr>XNJ$vF!~6?#4=(T9QbDIRw4&&A!YdcwM0gs zp5y&vOU*{pq9og38A0;BBJ7}&kLmZYV$#{aKjiLj$c+}~NkG`JU@BcKC=d$EZix8J z8B3GOEeHz=e-vMDl;eXSI~D}-gr`i9V4P_D5FcgU7;ObFV`$=rNzaNDgZ)t8@Yj zY@8xOPEIAb)&WrO9(U4hG;nZO`eZnt_MSUXd%UJ9k4(k%<|oYpGm^m$xOE4nm1oj{ zUtV^7vHqP~p6!p`BXWH^?f0Yeen4i}D+CEO#EQ+1XVI*vi_TA` zH1hFo94{vvA;-CLbL~>AgWfVq%(sVLPfZ~`S$EW&@e-~kC`h9_@iSwiB5(p5B{j$^^sB8 z)w`n8>^ZIF*mgnEz3MQ@m2z|YZ|zehs-yP$UB*-b7Op0t-1_8UA=R38F6sm`5vWmM zEoe(Y^gDki)A)yr{6@3?db;xDXGJhjcvofO8sNP zR7?5#l&d~yxHN(5BsWq2zUJO}y8MDDvmXY{i(C$LoBZu zv*Ch%fQv7Q?5o&Sud7AP%j!M2gGZch6Gxw>NVe7GR|&AMQzvD0X29uP=b?7hIRcPS z$Xnmnc!XyY#yf_Bqcs$ZVTcqMWq&}@c!;<76sF;NIqISC&CbxO^#6>&j^#*WX5PYa zttxk9RB5d~fVuLQ&8g%*o0xcrXnxcjiZ?K`Dj}b1iwsi%pVzC96J#?FB^}@blNVIB z6gcJWK!Rs`fO07J=E_xhL?j%a9DPlL+b^#AE3=#-y!!B%uN2!<7&3aoSB=esK`$>6-4t{lZV` znx^s+N|rGmBN?g4I&>7c#=lF#pCPsI57GT)Rhf(hgu1$TNKRW7POr#}8NziewpDl5^=-tkQTf5*mnq9#a zNQQ>fF4?`P$H$D_198n+jy&}k5KgvK&_V=d?(#|rig$u6RxZ-miLK>ppQ`14rmv*` z{ZE*^El!@yn&FGb8pi+6hKFMdBkC-#(KWb2BclCwg0f=l;jYiqUZI#ryJ?nfNTr}i zq!{%k0Q2;+3~Q6MeF~yV_7gn@+rHDMbZ6h2&J^k4ZKWQiLX%51MK-Y|TRcd`E_hl` zdy2nF>+mI8Rd}*((X3qaB?y(!B?4G9$Eo;pAky|!5VQiBX@Ckl?b)cem*)v`dM}1E zyH^k|f*dQuGAlZPYv7cG15RlnI$$)Qgtz<~Es?2xSLkQdLboO0Jjsa_t_#y$H{xAN zP{jZNq&J;)dqD^FP8jzFf67 z(o%P2u?$*booXVHBUWynA^`veT=|uyoT4U~X=53QDCK)9wxbJ0FvUGV?)G%6hAkn`^yjnr%II_bI~Qx{wfmc1RTI`aCrb*&!6c)+@>1|CzDh)^mgvQr2m za$+ zWd-kAOt=Y1qM_1@binK2jtbCoAuEICBB;He5f&4vQ}jEUe3< zddzV~Sa>SzX+shp;i`J_G1{&&U+5QZN~)g%VT~i>$v|wYMJSebabQVLc?_BIeC<^} zlfy-@q@;n6ZVIOXYByo-67+P0JZ`MIc)=#cuq~7hX(kTqp~7fsZHQPJ1`Hd`vY)A? zVezCcvUzHx4QSE>7;qH%Ch%wg@52sEKTbD%8lN?oJ{v`at)swpABfo=&_J&@kKQaU zC{-(t@aPbgNwb#wE3(~-IriOJt(x>94p}QKIDZTlq&cbtOI@;8LTMzEhF48(kCrAP z)SwP#5tipaHsFjDc)|Ix_ZHcIC5=ZfCPbwiH&CS5Fm?ekrm5bM;BT2ZShetn{C{J zHl+mRG|u1Z;u+wk-)(kz3beu&Ypda(UZm2T)EZ9CDql*oar6-iS=p3xA0_f-HNVTj zP_AJG_IZhMcd{qY2kVwb1WsL2#WIpFWjw5APMWc2>W9@XAn+kZ18IfFPN^cXM_G16 zC8;+8gx;MQt%5x8sk#~*G$}aRLDCTQxlS2^_QP8|FFj4Y1VtS6`MZi}&cbAGz|19| zChmvYypIw6VOoWu%!NO=;zUGN zM8=1gzG)iSpgtc_n@#HCLohkj2DpV&YhFrdplIC@NoI_B%JK&{VSrBegHr@pVwL^j@anu3Iu_}@IMkC8v6Oev=2S9rzcbc`F}0uCSsv}1 zBO5;q3&Y0f`>DO2p=Rx3r2`ZEqni#f%go_$nRh~rMNvfp^_31KXGlt_pz01L8FYjc z;D3P@Ip}mjYNm6pk|EFxiVFLm#Scq5eVahPRX<{4a50?009`zBvi*tdHYL3ea_tSB z7f-dsxRx7_4FlF$gC7AM8gyg##hUey2Q$!LZ7)j0XxEiz&q+GY_bRons(~In*pWUN zgL-$cW7;HtW(KNh=A~+OqlAy1c|)?eICa3VtVWUI`1bM?%JLqnsNR@iK-YfHfS5;N z@*}Fj9(|1oIWgY2qLqxx0y#z!f)#)z&mY0e3i};&1fCL3ptf+FrDxns1DwMr#I`*JYTi<>b5*4kYvkWN)T)GY;wFw0LOQzWZeXn(9+_czF}T#x788!0@3R4YzzBp&e&rV$-OKa1ZlY_ z*Nu32Z12x6wq&f5B*MLq<06!rq3KB>Kisp&6oSPGL0hB}RiS=2Ny8hNeavk)*X5KG zkxe>7xdhb;2YLYa2DQ1uK`+0ahU!oF4`#^I4gxj8FDVCQi{pVBMj{{pXwHk?Z1g@5 zX!;QqvDY5KW5E0*_?WCzc$=S+5G@?{Fa@L33eRT&S6Y^6Z)atnRw>FeL5rB8TDnqiT3S*+ z-s^5XP+gL$5&Vw@s7vz7E%ns88hWm0GvU>jXc9giS!0OaU(`4t=e%WBU+Ddt0peQY z+%Qx|$st;pTUOb#q)-}6dq;KmUQ}=gcTRP2lPX#pKZ-DO*!V^4 zI=CTt6C<2a;8_jH@Bn7-36|5eXvz~2LX?7PqM1!6Tr0v>T4xe8^dOJ-z#L3?r5~rp zsyx)S

OkV6n^M2O{uXzzdOQocQwg{iB*?gR*0k&tT@aggtsU>OPxexyRz0jduPw zCi{kXqg@vRS)~P?D?w`*-0VhnfowP~#T3FC*d9H$MajN?13G|9pcQu^q9v$5Q0&_~ z!;*=6VpvnvUWHMlG&)B5B8Y$#fAe_7s0SymTBa_g5HijdI0MgWs( zZ{oVyeH4`#t4IF-{1Q^<3}p0o^zNnF@i}EV{)&zbV&bahIR}L%VD_K=As9zQb2TmM z=3BQ1dH9ncEn5Gbp2O#2KQ6ShOz&D^Qcn5C*~E@w&9C_~yXy=qROg2?n zr@()qU-xG{zvMXgEKn&&9mGjm92XIq@SDjii}Vrg)txlt$ffAt-;`%Dn*;Q*AwXTQHnxR(fPg$N?1WW_W)VY|B z%A@;5JbqOfP@s(XjHyh1D0ZV{Zn!HhMFhC#;3|hw1sN>hvQ=kyMplVALKq5qgF`AA z5wcgimKD*3s6xu*RxF8`#sFyhrINmX9)#lcqwI@H6R~O-K?x7%3oH;j=haO$UM&K@ zNkKKoMH@Pi9F->2a*?<(AIH!n=Toqd!o-yOH>RE~q1wz9;@U+XpjzOwt3QpUh@)U* z3IL6QFX{uG4S?iF^mYoR{>yyX;0?Bu9w%apfK3b42it&pRL{pu32a*=**-_9+jTA(HkQE1C#ftMwm;$T}$jj|j zRHcyan>gj4Tm574)wC~EOEV1{+(|Fkem-BL4prC%R?5lizXM{B7%ut`CKsb3p>2D! z6Q{elj@$X}omtU=(&pJw)v)NZd9X(E(uP$xLdQL+;SIekxQ4`hjN3f zu#{4doJG{cBuZX`A)`_Qm(rhWe=ddiI^S`6e%cRq_IvE75L`f$hWYMpo13gF|nI5$HdD%yH?OrB?lJ z4%pcMK*5CBr1{(W-M+9N6H#-Ue?T(%2ANvyhg0UA4BQ%h%-CjFmaFq#% z!OvY@^4|h$h~)5?0_d4fQfWE#K?w5j|=26Ch!^@tUJndEiIoC-5k(Zh7fH6c$`6ChG7l z&n5sb{ZLE58|47{5_gdP!alpYfa{0Tc67ewx9-{_76` z+NSCz>Jw{Jq=?h?=c5;a9PUJq={3A@@&^T$3DQQA*s^`05ryQLcA&w~MAtB>j{Y2U zP7Fme-{WTg8a5H(qLD<($`ZWTN*aBjjdK`qqCcV)arwNi4&=XrW*cg}F(rN!7G+3-L7Z3*lLfH4vOnC9(w*t_S@;Hnq{PTZXZt;@icm_I1#NQvVGEMkKM+! z&C{%|3=LzHTkkogPax{epuA;)>UHQ4C9%xM+B%0@GNNYC1Mg{0^Z&g_U~_ps~lcbrX?}uTFE$1 zYO&a0^N|7$c~o^Cl;E+bg$}N~Pyc*0ec4AZf<1&Wet6ja;J=0BM$lp_2aPgNS`J;Q zbLYtI&=}H+Y*!>cyOc-g`pIHq$wC5CIz0_E_r54pLFCVlu!(Min>c7LTVdm!`npbd zs*-4j(>@WXi-=ojlR*Cj(bmmCIPSm3 zTH8kut^ZXCS{Jw93YKIoP>EgDNYtF>&TYcIL^w1({PmJ|7hbwohy)df6i~`QhUV($ zoO?aHOmW^Vjq#b6w5y;w4+kIMMsR*n6=t{k+62E={EV!%+2z?#&Lj`a-{oE?ykXh& z?H`A2dDVQAiU(-v%_}t~*YlJ2(Dzy<;H0}i82+L&y(964Jpb0<01>_2k6#g&;|@(h zQD62L*F00j${70d1Y~P%CMl&U=b=G78nsBAqp?%O2-lt>-%=msWq=vGgBI%dFx+IC4AkFu z*}%vl=r>d+Dv1x-~pTy?f6~qC( zq4jD>Ig`A8%{RPXi;beVTNT|1a>0ij8SSK^PIo}a1X-7)0MI`%N!crSeY}$j7w|@U z+iW|q%=|K<(B-KLIwpFzyTTW+EH^F|iYN>pGL1FMkLyiD50> zn;)5*%92JQsPaV2xfI3$d{I8ru>JAW1ilQ)>jle-x@(+UWDNN9%`SkRPrl_6n$8U~ zwb!p!Jm3RjB8-xBfwHJxiqx-F9rO^e5xxO8jYjMM5p%SdRJ9t|$Vq@m7pssh=)wR)?b7L-Gtl5=i2-`LD+}UtLNds0zQj61tbyUvugAmBvMt)n(7Aq`$ z8qi-sGCNnl^FL98SnXH%4ugUyFOKzO45Xv-<931LMc0Bu&2Qa3o{$kklB-g=tc7KF zVhCr5t9j5TnMZKqLk_~Sy4M_GooNJm!D!i}1d6k!u4f1}TUNI=!wasSAqJh`2%RkX zEY+)T;L4C~mg-0XeLp3NO;XoDj$t-Rx`r+q(ZgxVakg zn?!ovotxI<_ zeyl?WWrn0TXl~*loj{1^~ap(efAw) zI9&tfNfuzMI;Gr%p_ueIh`ih@t{=EqanB0=*>$^h1{e$ZWR<2XP@~*~S0G}&Azoz! z8@A`Y{fR=8;P+KSP{X92#omkw3&Ka3w9To}uGi+b!VMWboK#PcJ2yletHLBJQz`bp7rcG8g$Yc!K!f+>~) z)a3=RFu~dC`B5J5sm^VDD~c-$5AV&@{c1jMU4t#V`V$d{fbs*jGeR#ZDRHAU$2;e zyIdA0p;)?Aa{XY$>Uh-4{3FBYS)wKu5?EJzDj>`HzZQzt_ID!lf99Htfy0t-HkW(d znNO&9HQYxxNp)JbwmQJ-7}-G4DEXhoI&_`PR%V40Q+O$wb|6>yKr3O|`{=Z&c zh+b1E`3jJsbGE(ZECN#Bp(Qs@AOW$NU}Ow)V1%{CxEagyhBW40xh8i4NskFuNoV~9vv4m z_8Qj+LLjVeZs|A?JW45!Q9(T9!v{HYpfCM)Dx#7U9G@8t(sZ&mdV@lLWX#wtp4Aq| zrbD^N!gpqqjitPa2M6fdL?sy17O%BZ^W+~lB6$1SggYeo0FcgdIWij~Sv#3Xq|m1q zL7^NK2$F3ZH0oO}E9(^wR|~BZ@FQr@5>bo{R8teLer^d?gca6AQ`B6jEde0-y`0Wl zK6ZuJO=qFfcBAKe)15=n61abgil%uJeV<86A=yQm{YOjjn=S!1Cy;{$Jf&Y1)hW+v zu=9@bdkF5lMmk`X&JlK2U7cSe=MmLsv;NJek32x|K8Lp7s8~-C5~C3=yu2?|6O{SJ z=S3Al3%tVppbAmgxCN~N&ve;d>e{L-Uge!ME@#Pr9s~E$y;&6a(~7%%tPx8=b*MRG zy!2M36`N-dX=L6z#sg_arXbV`4y0hLek&`@qoG38giltmt{bSL>Eyf^&#)x!%!?@D z1#!&&eS8ZPEtXW5Q6b52POahvVlF8iO>qeEaO4EkIT$@Rj9u&0R>n=5GH zgWn5R_Nus-J-nqLa?j@JKk9czr|?%P8%!bYbnmK$CqSZ(o*^-E)btgeH zALW&xo~*gzzIbSlrfbE^yBL>z+}g57d1QGKd8|(~ecp+WQtaULSI73(X!!(Mk6rda zo;N>S6AcS1J4}g-VM;y^JIhtnvIPcgl+fg-Oc6?~lu3CBeFlHcsZ>Xl2WzGuFhlT=R+ta8tsE^$<4NeBUADF5-+tFZO z7p1Dbb#sS$+9ZAmw^0PHF}AB3pzEo@@dP=cy5Fu#$UR*T^QY!B8q&*?VDHxv5K*6z)en|2y@a65xzd+pfgILNfQj(CyRp@wy{C*%A6`cWGI~+_;z3=R0;RJPNxLG`kFyE0SYr0quECu1*@)#{9JCfP>2vdVp2a zy~ti3hZ)<)Z=HUz)%3A2nqAR)rt~=k%T5>NMh29_TI^$V)eUSsLSbNl@P>|U14i84 zU=&%Y$0eDCt0UFLQ)nEfZ-+|wat~E zW?%>O32l-jXR8m}2f`V}JMArTvy1w_!aUh!9~2!4GsXJ_4UkgbunuSGYouGb5AqPQ z5dLhm2vs$%^o?I!gZA9-Ny7&b(6*&6b)vnkJ_1RDF>y?k)ch+$xDTKj@>ZsX0(U?+ zh}5~j8gU+kFAmGZ)~g_N+EDgjAf{pa?GPy$Kxtee2tOSZ*LCDoLT4b=75iW926-p8 zMEm#v)j3hEab(Rr-@J<4hIHK+bkeY<2*Xi-sd*C%C)td8pRB*Xnd&heE{VFTV@$itJiar2OE1jE-L{`jV!*Wh>oPis&(VT(JAZV zZmE#n+vsSdY77lyK+QsKYiRxK+AB}m2>q$<`H0Qg+sx029XfsBrX>q`=Ry-Q>uRbh zQkLek{SiK2you?)93N)!`>8t)sZ{ackRGdtz7+$E`IF?Wn?Low2}nW17V(lfO@01# zuem(ql}+aRmaEETAyi>WMYfJ{M`osGPG=mT7sX`W;m4ZfU|t~8-rvKlA=Cg^*8*1PSwVRs}t>)tmJE&rb>M(OgLE-99Z;i+?; z%cHjqE5HY{@cieq0C6rk&7gbN{=vxJD-6L>7p)S+Jt_#d8PZ$yFe$N20Egbeq&Y2I z^qC;i#pr+*Q}bF20UT?=!HHQsPI|b9U3o${Y7%%?<5lE6U0wCK4Gq8SVcoZ=fr6lK z1NDI2U{&*39W^JnXW*M`hhE<6|8M!Ag={_`m80_l+VwS0Yh z-2>Fzx5snrwqGQ|Ji`9*8qABD{y&spdFAo59QJ_fnh}ft79+3N>D=KBUMRRS{eyd> zmMLAnt(QGCd}6^9ja#RWI-PJ=)brQiKy8Np8WxvY4MaA^%-Z&#?B z!e?|w?4r8jv7rl(`P6(XCO+urV6veF_EX;%xNMXvg+GQ?(Q-$uAfG%wAcYdJS;Znf z7o+2%V4yHkq#Sca#*j;kG2p&DLDiMq!7KpqM(<5;MxHxLbL;;rBw7JruGOLo0a?DrSfkY_Fm!RgZ-@UN)xLyAivH;s?{>2Y;(E_wRI& zY*kzs!b-3|4&(49uR{%US7=Ox=?P7Ei!$Upt3dQ5Doy`puqeS$X5Ss<($=9kpI|tQxR~#f)g#`(`%i)Xf6{b1j>2>@h(_iZ+%^sbdfVA8V0p>E-;|erc+NZve5{e@ zZiA&tSj~{3T5W) z*~I!g;l5WMW%r2%Oj7|+Up)&bCGaypBb=~qC{M}r?kHqEX4%o*!0Jghv%Qj5;I6_4%S$=&c%-YRdR^;wcWA@7=ycYyQCL%S8 z?9Bxv9WE|;UROP$ULi%&cx@XJDT6Zal<3YdYKq?{p0hQAntna+jyR@CG%NmjsOg`a zTA^ACMmhvZTB}j?)x?>!LM*VrE1o1VX^F6!!+Ku29P``} zL%kV|8H`Z`+bm7cO}UQicd>&u4FK&LH=0YQw{i%XHVqXCZ~C<4-eSu zE?Ed&fu~U-wSc<6LME>{A^5EcV#sPE==t-yXL5K zaP!J-+0~&@bj|5}r)-T*zq4KA$Z^jlH>u+8;(KYGlzNEZ43Qs6ij2peZb~2S|2v28MwNkM;mv(8N%^K~LD4+D4S|6qk71 zUM(7{=CLmMVAL=*EnaQzG(UZ0(et0@fN8tYl8KNfvWD9g6tiF^Y)oeP4GwEfdGQN# zONJb9xglWX>o5x8is_=FNKrPj>C2GT%=(vg^osk%(?IDeo{bufa)?9%2(s}5ubf-s z&{;OyP`oY3$N_f!S+k~s&&ysl1b-Q-G7O7ZMa7{5+M(WgT${>Fp1FCTcj7m64+uVr z0Q8Z(>}I&~-qZ~ZVF3lN9&n0_a{J^N~zNcVB+T!`uIJcxIMpI=mio3iUzfryR} zb4X`?AS)SJ_PfMe^$BC{molou2H`hbc|bJ?aO-KgYE}cIyR=(Dd(uw#^zCY-6KC1S zQ?UKoFQKymXTs3$7u?27i+Md_dK0r)F>F{cwpw+HxVG01^P9}2i0y3&{k!E>v7F;3 zsUTfAJmfP7WfmKXoaU&sZakKHD_x^1*OE1e=@=`ui%z+@;=e8-D2cW6`M@RJd<7cb zl&KnZDYRQ1U>SK5MFI+29pndi=|CY@=q>J(bsqXIZ)VvLLDAwNw!qgUItl%b5i0)@ z*cjd=ia8-6o!Pc0Uw*?y8;Ib1`&@a-UY#E=AIBY;SJ}IIa5u^iSJGRiltvoz1cKb> zaM(OWFNziDKV#BFPakA#E#(vv5Y=O-J-xKvvYhu0)v-)b3+!GGp+Lz);|B`1NeVXF zfg7-A7~~v}E78&q9gL;l!(Ej>O)d3;#gd;eQiPHZ>!LD-w5;RT!HsO%LiIF?H0GQo zF+MRJaoRpJ4lHjNu;n0(J3fw53V#&5S{7cV);$+iu3kfBU!5L#xQa*Ukpp2uA;yI7}>!Y;jul?ksrmkjnIcWKxJ_vsK z$HwDp>TRP#h^^473m;LqoW}mnZ4p0I59VM4II-ZlQ=^ze|!V0qz~EiH>{ZO z{S@qtncb#T3Ww>DqDKLWbx)2Z*D=j=xoB3>H5T!;e+2|Ve)3V;2Wm*^27u~zzFBfx zLSP1ulKChBie1GM|wWhEUgNucAf&ZKus&wxLV-=@_h;X5Y@4!gUoEzzc#=yl14{Y){2{mgBm z?8bvn+VpfwwY@274ov4?$Skw3GJiNeZ6%4g$;RQnDbQkOD2mz}-?cWtlIb!I6bPub zYxtW!=yr$`qi)M5U%LYsY!U5adD;QoqeLr+cdY&A88L!iUbd*bVa*K4b770fa4VIR zUn(X7@%}A&x#kdD=tPYeDyK#nE9iKQJIs@Ft(!jCM&D992VhyEU}>z1wUyk$08O47 z1D7>94&v`=x)uUF9^l5{ui>|AW8aE(_ws){#G7q|k~)_pa?@15ve(RZ)<2{D6E*bO~=#S9@El$zeJs!B|C(_o; zf~>uz71kD(ERg=e9mNz|8o}uM=&-&d^V+v0ITrL1GBZ8`Xv5}b)`pL`Ko!ZTs;NcJ z3)&)!v+f{zJSGbbu6(h>+K_|RQk5|31HH%DVz~{GOb5b-X%7ktL$;b zb$O=8K+O6$1HGLq=rSILJHdDGHLD6&oGMuJuGbDX36G?ZkmMMYhmIg;NGG`c3Sb|(a_5RL=u z4)Qaz=%q+VI}8vN3;!OK2YOJ>F*FA!H&b-FFNkJ#yYytJE(LbRstKk)0a5rV?PS9Y z!;BwY?K3>Wx>E`%ipquzIYdjv&VjjgO5^@-wQsEhxajA^&qJ~4=Be)_b&;1E!=DFx zF=`Rg>d$nssOY(aC{F*ZHS9m#f&@i@(Nl9er5llR!U41l0R;&;>D5RjfkE-UhtTfU z*CVkM&IOL^&>#u!SjmABX%fnr4K4^tuugs44(o|a_QlTQplSS95Cxe*2bBm;4*ksM5aaDbqTo=2eSdE_7h@Wqh5Iol@Ua+%;Il!3keD#L z@U<~US)~cYf0I``C*DTNWS3#ZWfa7 zE@lv-a0Z}&nZN2HW(YtAT1iuFJO>xc*kqboIz*zZOlFHzh)^ zdp61;h0A=l%pHU$4DW+9dgX3B>d0krbJ=FVm8@0yo4uab&sszNc@9i|wSXNx)m9d~w> zjEFwX9C<~%0*<{6R518dy*lTBS+gND8xcZOh4y0# zb~|Qfj8JC|L|LH=4HYgxG-1)?tZ9L`#CYm2o`z+pW9&3io96nD^w^LHb7XWNovy0Q za~yBi`$6HQOa4$QXzWs*!UKw>me1r>&k70STtD$^$f|~oBXB<9=vh_dY{rS=MtTt^ zwA=Eu4v`)sp-T5K_vym&H;R#)ITudf>1G5787Tr(A2~G8KC5nkMoI)x&dIzSXc$jHm}M^2jf!|q z^c$$VPV#Ex#zENY>)BM6JvM@Vc8hp|Ns3tW^ z=p!~Bjt?|xO=tnHmz$CU%!ZjBuKbSd;Mi80?8fGW2_^K%(tG~2^7T*Kb$kpo_w|=; zi^7&3P{9hml$jp~aE%Epl3At%!4+O( z)$}!F{3~V865kPMOHKyqvh8CUZSOjDlPi=qD?9EVm0F=DVmxm$;YJ9I7GIo;P8N>H zk1Xs31Ua>g25SyCPPvCu;*37+Z?4>FB}`xC8piA)xrsCpN(`5sLpKo4D7qy|v&30G z-Tu#nzu9j6I>aIS!*aYfEAO5x7OW=y*F-DoJ#81Kxs_tV&ulvyprYj)hJ$O=5o0~BV`LKL9sG4#hx z8B~DVhJpmQ;$&jm%)qqX;cHn-mub7NNgNq0)Q|3&6;4!SN_5SorV~fS8@PBqvH%uy z1#YP+2Xs`()J+6V7&zL5hc6Jvx*}EYf#tqW)cHR;9UgAiP|lEqZeETd{M-w!dhl-Z zTyVww8$~KseJ7|J{e$Xjj0DQhU&-|ns^7U?9D=+~A>B1GxN5P-rr0`#PodwjIWmN| zJx)FLw8QhNW&VmJbN-x>_>zE@ZK+K%1H90_QAQS{k5L?)R~9{pbdwsE(fps8+}|;; zORUj#-CUj6MOeeLJqK(Q1{Vga`vO{J!jJjGk2=}9ioiUMODo}{#p7HMtQg>A=uOc} zGJJQ&NDs@zH=n&Bq=dvt0Twb;`8jmq>$8Mbg8cp^ z;APb933q$sw4BOooB4I(YD2LvKHNV4!-(VVd$V=s-)sNRGt**PjsXb;v`2?#IE8?0 zxl-^dSXeaM$0rxov=P)gQ#OVJow0+e3ZTs)sCvzV^-A@3~w1=+ZI6SLpha z-IjTe1IY9tTb=zry_@`RXd)fV!n~C#8#~NI*1#1shWwaAg6J4FpuL z42@qIfM6K=?P@R&8+?O<98Z!m82;-kC*Os2UyplycCAK(4)ZvCW-~9DTxuJmR_J?8 zeSeaieeCKGe)K_slM+{`bV@Jbjm&YyG)E;5sy560hmvfvNV(_p7a zV*L>M6s}x}r(Jd8JexrEWjm(vm3W!iMJSj1oxoygXt zYM$=xP`p0RzmTEMC~0%VZoui-!=IcQgJArUg&8%gjkm(WA13%Wt$P*J!W{`*db47jd|i%e6I~n zYD58ws70<89%oH)#=b1GIPh*0-kSeXmT-U<&g*f^aW`IHZ@*Cm< zneT*)s-j|jPx+_0?>p6(g4XMlsYODN>FDyvL@83}TI<;JKx1_y3ss+y%b$;tT^k+ZqH{ulLO6e?uqB!X% z=gM}QUWxAbCt`W>(}IC5OKA(h?g>#)2_E0ZB$r~l`KJ?t!!kcIlCw9aB3z*i4)6Oo{RutlJF@ zGyVdDE@Th2{Jh6^DbAm z`RtKy6Wo;1UIz((G@V-M0+G zkzq?(W!ynmqxp5$sUl3mDPo&gZlPnWvdfj!RMnvZ!&UHF+z9BMg99|#*@cS^5Y`$d zvz(X0C$j#4>PtR=hyn0Gv8_bmX6Z`T0cybq2#MVtjqhtls`yxlqQr7?us8ruj*c>v zTGvIm)sjC#SK-q6t=YLOY3@h-n#!>~wS(zak)r>-?veOTp}s zcsdu7A{K%|IVnV5QiR0hQvCCwuwlfnTE`{5^UHyE#1j2|otc55k1I>zIUxU;u*gh% zB(!i#oM}I1Y2)l~Umu1HflYs7o!Jt}4tn^F_!k}THGt|e0%SO{qoZeNQPR_f44;R7S6(P6%j7RbruqHX|l z+Lkjxfb$WA*Tc8hK};=HG(X$E+iXB3=606Nr4uy-n|CE?pk;ysu+xI}8deH^2`%r3 z0T$zWNcK3xWW3OHn76`VO#1#1!x;#-3v4BOx-rH`eqVAhhb_+jcSWjuc9^u0*~|laL=;_{IcvePJe&*hJCS0MQRQ@J8G)zhCSJ#w@CAR#NBwV}qsNNVHD@x~t5 zMVFuf-nfC8qA<9;XdGWyI%H?+k_rRuABb%dyVYKP;!fL`XftuF4p9a=G#ivz>r|*9 zc&5LL5T~iv<)GBZ;@7|{kT<}dgbvoL5)atBC#cTlJck3>d!fM^+jop)=F-^8xy4r_ zILrSWVrP)>%P^tiz;Vg6#V!@*ok~-snI*V&51@1Q9 z@Jaq@(ZTh&vr#E9nh2gpqv&h97AR{1ccJ0d+tlDN+%Pn^ex)z&&q6 z_0pyr9XJA#$8QtOVu=Fb=nNCg8{}cJ6ZapOTyAR`l{hFOG6E&C?w z)&}e`+Grw|DO!mN9x}X4T;eI?obuAV(dU!1V@Hr0*@}@m-_2#<{Nrqr+XhN}!&UTs zp2duF!Z}XM7y#^G7awIDIeQFI+}%QQ?!<4#bf2EV%&|6>8Gd7=l;%-8Q^CLf}~nHzSdl8*n*x>UdS z(3W}YUbd$9jZ*81_+q9!x@=w`Vmt^Jet3pRB&F36XEWR?x*Qy(KjBj15t|%l!1hxozXJwb`S}-pV&~FJ|5u|@9Z(E z+0qre%X|&cv31^>9YkLA?5RXHqBG-R!{hE>C>=tRoU_eZGdw56V(NUT`GZ}}R7j)p74*n&RS)`cBPzRo;RI#tM+N`fKcic3avqqcf7?zX%@N{zRzO=_ zn$&OsJ#mjpZFFW@YBHiL%sc|h3t}@2do=YNe};uPdm0N-y>MZ}jjKt=YGl!4`l6S< zFn=BPEsWfQY;wL}54 zaTmf_haEE4oIujsr0QxbA9bD^%eXxthkc`3@67Q(@tDOBCpzFruacI%W8fVLuW3O< zUUIC>0^fp5a21*|MPY4IsucO4Fd|_wpbsfv zJFyKnAbBPw&2mS~a3L?oc|#)0+6R@skMxKqC3qh<>=)MvO={e11AU-vs`IN_azm@N`xiy_NAgJ#7Rz?H2 zk)ql9hkn;}0=Mf4x}9qIrS_65WS!AxHN7M!VBcAT^yo)J1zUzytlH_)5Yg0T&<^W- zY&BkQ>h1?`*bR+!Y}Ae6EC4ds3oXn-beoDR!oqrjCv3yr zffgN+78+uJZ47UJ>k0NNbJ9@3P>KXsl}A(F^Ns7#qF~H{#-^ zgwP#y^*|AzN!t=64#LMP3{=s_r0IakrdUE&r@akx==VGE%IhQO?6-^=uSe_MaWnzhrhORY596oD zV~H!80$OO@{5T?B@q8ms8j)ur+w_>jjHwtj!{Wj8 z*ls0*=?h5B_|<_e)D+!1f1-Bv!SRVXjIDbptZ9Mi(j>EjB_LI!G`0&>A!#0 ziyL^rYA8YxlXqpt$fbA_|7wk!$`&jQtMS7wfbAlc@#5@Q|R2~7(>!$<&h_vof& zbbV2i8_Db%yy)>%&F{uk(4o2Yir1o*^|F)z;FE&cgLUfT;2-sFtb?RZL*90pw3#gsKP14$<_(4Wa5rBZi}C5h2RJ_f4Dhc zcY{9#VS2xJ%$SUrjq8qOU5-434BAV`-&QNE`XpKonc-B{%(#2y5G9cXK%_m{piVB{ zGeS+u!B-BkMR1?w@;cvBV;#npU)us&v_r(wrFCs607)MVT#YG*k_mho6rbOejQ@Qx zYfOg+aet;shca)Pn)jH{Z?b48TgY2f99NOAsrchSZsv{;hS!&yXClWI=!*z?Z{8$O zN?=I5CAei)pj+m^w7L_9Fcu>Wz6qL}BlGBI4IwL7F;|57s@q0#KaoMBZ!>`uIxV^a zB6H=bheJ98r50vog(MDx6OEzZrQUfAh;^VOiP}V!wEBA0h}gH#E?UDPNaGtIkHQU} z3MQB*WqYP<=z4YVfsG-?>To%92B&`1Q6{j=vcD}U{!Xqc;gN$k)tI>x2R268=^&yM zpu~Q5Y`mW!dJFt1uORD~wI4wvNRNr^Gk8~`%qhtOD5f~eQ>CYt(mDK6wXvXhzD(c0T@G)OQqxA z`e26es;&w1hb~FQy?_S|Aeqa^LF`V0wy;=?@HJ~(t1!T64px~Z&dq4qA~J}KD44=Y zx1vB9yW@5g4~<<3O^@k?Vceta@oeoSzj1W|yf^r53xIe_#knLOyH}t)9jz|3q5C_# z7`jsxBBwe)ECPOt5W++yxb*8WiFAJ5E3)4z1nb_Wz>;}-=h6DX2u`AX{=b!}U2J-S z3{62UDDP0Js3K{6PITFzRbC|$W~kS}V~;IAK7spbCH^-;onSJHH#JyI4kR=TDOXbf zX=W7FLTK&jmM_-!THpSML z(Ju+TO?|7k0O%NpER}YCq;bv2x8i23Y%NL+?_9#Uv457NAS$`|8yFx=j@8o z9}IvlyDwq9>JTg8ed=2^YqtZJ<`}NC0AcH2Slp*=qCw)!yRqPw-L|yF^+3h=yREQc ztdRk#WAEz1T#C0mS)-^!QPck}1x>p#!UNV5VO63cum;RoVmpL^8&FU>_B~_5^Mw?5 zzV3*0)gbg_P!RR73fQ+3m028nNTMEe{u55ex*z@)?+LB}*O4Z%%6m-oo*+Ye!P#ZD zYDZ{#;Ql+CV;u@~kzv?;@-F~H_ha7e{u&8;8jV^`wWswfbvIktC-CT3$em^(E z9++`eL}28H(~lSz;nVd+I}|d&TUYwKr+b;R*_A*zl|2a$cTiR{(26L$ENXVa8QxTe zap|bs!Gb(cce!U;^n>&prPSMpKBy`~~q)WCSSG;hlLxdV{<>7ii}i;462-ZE%KK$|bA_ zf6|;MzZwD_|2a>L0Q$JYy zpZ+RfxorUhe$mwRNUpwKo)0VWErU1Db(V59O#dSr>o1JFQv1f0F(JFa1LY_nGnSv^ z6_#;TWLq_T?u(G zIy(2mSWr@}+(6%&ckKzob^orjX|%)&k0eQ4miwBzb!r6%$0^yQU)7zLOKAAX_VpST0((Cn#p?uyh55|dHP_j9 zA@)ofE%_vT(gGUaQ=tBca^2RnSe6b|PTBSzcT*=DcZNza? zet^iei~nU3!@a`j@S}hesjG(EA~xMMPyxQM?c#~S6j+D4{C~6ursADXS!-R;8B3f@NV-NM!Fir`k`DMa7NkK=rzl8f%kw0vV!kf%Uwd%mO6f9;X6_AutslG7o3CXT_z;)?5S7GhM_5%P4~ty zRrYHwHR}gH{C2r>2h(H2Uh)q!`Z*cg-7U%fkOM2nJ$A(4?EHC5Bx#$e31GR}KPz|; z771}G1pPcYKGXZAL5BoGsh!z=VaQ|g8|dEX+%Z<9D8N1)N)z?59{+XGE2_20-0SPENptgk?aSAlTWq=xp5CM1h`R=DI zq!lRcbFSgAXzIqf^9B7GKHE`ZoigdCm3QE;T^Qk@Y)lGTMJ0j?Z%K?kz;UC4jxVrO z%iIMX|BjM%d-PW9wsG7+AcduR(9OCdPK!%v@}tJuCTr>^{)1YNoYRG9So>&MMUG~2)=6{l-byDG4^1}vKxwx)_GtOJIr_&XBk##3${^wA4L7vo*5zXu)&#_R0VP)6m^Tn0X3cbjY znUSp2EliOknZk-BwMF?2EIb*}(eIqe1~Z1zR4QC*yNf=s@u`iKm4Mt^&EPC<9p6LQ zM>abzRUOSsn`jqidvV#!fcLe= zOf6RG>>^qwZHjw>%BF61E1}3>pSa{3D)?V4uO-;`ouqhZmXu2(3xZKT0W_bE{PUuu z880KCcfpDv5!MmZyd~9tGi3&KRzUr5-m7c>xv~4gD8}u{gOHRdzuEqLYP<*eBfPjO z`BTJN3RG<*LiNT!OAGD}>bP?i@|^V`Vr&uSsh`Rjhx1BWMtYP+tu1U zXY!EFk>k$V5~g>h>42ms2742eHn2HIO-l(YT`9lvc# z^2_w0`6f%=D)+3Q(EFoou3tRZZlAbbVUDp!0(}E9G^o*_FlX{XbGMmdqc-*pbm}&+ zaq&mF#TkDtD0f94b$XK#=JfT%YN-mHkYM)aOrjWx!VQVnP@Q&+@Fq1aLivyMs3tTp zUgFI2PsYFZMB}AUs~wbxa$vE31_kKLQj4jkTK@L}_@Cd`-PE>TE`i(W=7B^}^N6J? zI4e(uJ?{9Qd<-|U7;iu;%K116XJWCybxH%q*CN=dl~uUka#(W(t4{bG!(=?J-fv|~ z17~WGBaQU9V!36Pn)O-C5h9zKmL@Cb3Oa3eBT`8-eB|VT0@)o>Sdj~Ha!-JH2L`kj z;Tou;n@gw?aX^4SO?IYZpzUSs4U$!>=*`&K+JW+dY~Z&Nn(T{Kwg zYgB6}>X8r7Gp_{{GL}}YFENj@o#CEG)WATl*GH=0jCWp$1D{)L_U`N!)yyt~6o?5h z`O-*NCo)hDtyA)Dgiis9+>8uDGPW?C2H1eYgEn96#BJ~0h4W^Pr!M#p=vWEJy}}+Q zmUZJyZ6ng!QC?vu1yge!j0F23z);}gUj%rsZmAzR>_;=aqtfyH!^(K#ut_*4$lD|I zzyK}~d@$R3Csd@Y$aN9+yqtKSVt%vmmWS*QGN4ABho? z&`%9=pO1v58LBy}+2D)5z?KDTY($HMbYFT5V5x(U3Q#8b>MSKgREmn^$FjhRsRtZt zlvmUi707rabu=z+6+m=%6jqgS9mk#nfU_(B3k_y^R54l21T_RU-H2uo#%=q)t<*7KKY9;fIQL@q~WQtMhEAKL_Li8GB1y+ zH~iDH=DFP&3zE)Feu`S-jHxakE`zHufffAy9w8P4$>LxKzT88dJ>As2_DO5-hX$*p z9ns$Cdqqo*2guoF%k{!4zrf%JLVM4PrIiL{T{s!{is{ps(SI57Tj^z+ zJM74>-6J4FIXooG{LamfoejTMW_Z=%`n)e2z##`)Ri+nuNcy@CV-NT3J1MhGro zA?rGtoaejaJyF-N?RuDo5olAW&0Mq2v6R#>XrL>ycjg*588hylpq?9U6t#t|gCIpb z%Ohjn3C@iZ!TdFoh^%gk*Y+uSToHc+UzRqmuFFlV9S^O=u3tAhMYz0re1e z9W$Sq72w=<@=#B1QQwlnWY<@8)W~yVt-}uh;vVNSk;4;4USF2Z*oA;A9dfX!<+_ue z@<3(Znk_RdTgAEhOarp$)MnH$h0B#pqOhh^V!lvUq<&Zzp&g@Y&9f{+mk zdcr(ruGK#18nc9@W4dsSBw&dmE|4U9MiJ1yG?~RVl|6VWNf1#6WGl!i+ennSTan77 z6~g#h1n$NgT4cUxc|uz(m#iy*BuG8|oCC!fMxf0&&f4Lp5noDvz-h(;11EkA|A|!a z2Yt-c0pkCAI}sZJsw*tWwexk%hT%J{C;s+DO=pJ=2i4^NnEUlrC4SEpR9QV@UO})m zY-*=U*0EUh+@1UQHU`K6=&wo6k9evW%W(GE&9FsxTlMbr_E5ZxV1$K8m`Vn@I z-$ZL5dF90TPr;mN{Jy^XNDQ)3Feyh4>53y#1 zk+aU6`l<^K>$~rkixIDs4@n|`q?6_+0SkaL3ZUUuZ`g@yH$XMhCQ>!=o;LaLS@!3% z-OIKGA3-ylhm<*SHYkHf|GgmIirW)^!zpZ4jq4FKrq@K0wZ&%MkU()^xfD~2#=3zy zThfuPbKDv=%~|L%CQKc*73{ZFHwu_<`}KIhi#9VesB74qcODRt5wQ2AV29G`R_Y!! zf`CzM&c|7ND5stjDAzknJbMw-;9_NEUJg!HFNI?R`cnp0|1+pUe+4ZTo|JxL++uqx zp7v(-q|(m`U8Y=K6-><(pG4;ci0HkuaeJK3%h|vB11^F>JUM}QBZ-tw{x#BewY-~4 z%40^)OsffnPBS?cP9+@$neHpuRGG9DI+8Ym$jh|56j#<}#tuH%|CnmQNC6>ipG z)g$$YcifSJokd3#aI0O3aii*5_AjIv!#Zr#r0V z^(4k(kg6Y(ugeJR3ro&a54vzg9{eXwR)cYr>1;b?P6kwQ6p89NKu)y6Skf9q8T+J( ziKJUQ4WQ?Egkq>ZFCK&UkkB=YkdVeWNl`bKYT$IWk;HP)x(1{`J-D~wu7Sm$#zn?B;lbp$R zX>c#14)s7|__g0ZLpc6ce$oGOA3@Df&@lnL-$5{a2Bs+gU+|&+eddWCgbPfExB_um zu(wpPMw{udHQkd^bH9ScEhLkKqZ|F=6uzpb5;2&vc>)3xQVXcuW{FeYFpRmPfZlVX zG$O=GYGp^8DOppn7Knoz$}wW6&DnZ*`<@SKJszfzT=4Hi^y3Y^ zAY<&a0EWb_zJgRttG6g)FWh~WKm#Nhc`n*NmCq*Klx^xd3%nE;)LBFyHwvUa+SuL@ zjozp9b@W6UPxI0L{GMaNj!;!zJA-BnH~kaDuK3yWH4uXO@BZ1s3}UZ5%?9_M`U0I{ z&-Gf-5DbsxKKaF!LSJGr!#4MIvHqWSXo_$Q`wBROs(bn&2o+ww+t6eNOU#$8M6m!2P2q)v3v2IfosTvA0Wxmshzp0&{WQ@1KPk z%1*EisYcqwP$H}8h{ph6gyo6|;=v#i6z#fHYnL&&&eVsA_xKX~kbjX0(lL@2nS;-funVWPKxrVJQt? z_G6socWLEneP|eyn>zkC?Z_0bj|d8sw9U(lL}?;oLF~5QS-!2;>RbXqnY)VR8-p|p z<#bJ3G6QTkE9uhX*r-}b%3LrY6y%Iv-l$?sOXJ<5TwPy%MaGl`iM9Aotc!=<>_+~( zv-Gb|#KmF8bGD4Lt+nby5|FKc{#fx_%oiqW_z`4jv*{8Jo#9LGS#lrh^qvsnJGxcF zc7}M#vH6gaIM)M}&TZA9l@>V6D0xC_e^!;{LpFB5g59UzbQ$Dbb#cQZb`1$%?fk;iX zV!8U`0_!rIKwvxW$WKd_Et$ZY@2So-@`l$+&P8|S2-LRBq(|YGKqV*gn(eXvSO!{3 zEQL{dO9q*;666IohvDsGf!X)El)9cU_cje&na9ce=0qtEGXZ;!g^zr$B0rwE-}y)n~b4}7)jGo}KHx#lGht|EssT+#!N*7_JRa0bzV zK1XG|Yk&9y-@`Z*u0K)I#xt+;-05lJPU1CaBlRvzXw5}t(goV_&-y@ID+xL~D|&19 z2H-7gvv*4+03;V}2vm&si)QN(UPYA&0dZzX&|puT`ScOB+8@~fF+k40=1`iWnhhb7 zLqqxChJyj5E8eYLpc8adyik$;N2$WDk^d!iS+jvgQ0T3YZG7IZr8mU~=+X98BR?j- z%hyJ=kg%&5pgzxD?IZ6#To;L#p##cL1A%4bIhVV+&ZdVk!Y=m67qOY33@nofy?V`1 zuPSNv*b@LE6CJmsIbJDhYwu4F)Vxa3=N{XkAD=A655BhZ<>Byq9}I}q{jro^43wJZ8j&a?>RhcJEV?(IrNQ5oe< z2T8RbZ1njVpO3fib2H%QeB%LLINGIJE-g?e#mj27Xo-{KePcq0pm8aS* zOLTsGI+SRCO^&2QjiZtJQcTC)wppu<`{7AU&P8>3Pz2#tqqkle1AXyY8zb!G2El8! zOzQ&+c#-xBG9C~S-+RG`IKqcMXQ{+?E@uKK62OInhqB^tDQIo#K}zHk*WlW;tAp*# zPd8F%`I90%{M<`YpHD#&)NrF9deKo5M?Y#)h(=PvuXMXat^}QJAA8cgrli?Kzbp+LOD_>-F>hPhAzq z9>bFPp*+K_w%I75cox?J&r@I73#_4iSUL#hVt$zx4QO}CT7U)#miFo$hHt9MzU4k_ zNxB$=P-ugZFhfrECl(-A;))mU)}W4HZt*{@Ymb0-6R%bbxr0R+Ik*)gG^YYeXX6G$ zV8Cw43{ka)ZV(e2A__F*LT6qqIkhdCF!u zn1JrVgsY-9Ke^V`j-LtbZKIw>_0`d4 zxAJilMDZ9;GY9A&uJ9Rl0xD6IVdf@l_KgifATIg)RIZDH$}$-SoGDUbfQP|Bt6yWgh{Ommr8gR+2II=l^CC+C$H%Akw?QBjbROT z7;p7$czC`9A>#m7Uc?a@QqpZxtX!|DRnO`=M3Kh$3a>1=r?^2jd6)V=Qw+mEXmiEO z^7zp|-$Y9IL(sKp1Oyq54eGg^n+y4vOS@?Ym*>u(_2NrCUXV=biZWPNw0?1_9YgXG z8%=i~Iu^HeP8|DnXfRGx!BPIOq)(O^5DCI*(~JO4I&aOC{|xeH7ySHAPF0jQeTnSt zUF9d+{gy&F^$*RUY*?~g7R_ejSTxGf&!`%fyX{S#EfveU78TDJ-s~>K*B?2vWrn4J z@;XLEYtrgW*)2Y#UHT&>O?G7~H;BxL9f@oNDjzorW<^AzQL<|}*wur%F`hjX9v!vL zuecg3JtfGptR+`jrm7gwHl}wZ0^BkSiPz9y(E3i|!M`EuDD_qcPhT^?%0(VQHpR=v zHc=b%NY*)Ri~JDAUT<$Yh0#*>6yMCs+4Pe}_STVXkn`k76WvmOnk z6#IUnpp2StwT#;Z#^zcqRo_WED5`||@sOtPHa`wNGJ5~Z-AM~XivMJ{FWn~Cz2jE; zv89HCqt!h?t6{I#rqi5*#e#2vG?wiILQse73q1L3QoF9NIK}fpsK)y{JquS*JPlvt zp?fqJ4*HLkgmDDHEm_lH@c=zOlST4HjR0BmxX4QJhGw(P&bKCI65ox4&a5Ha#1*Yq zabV}>cDyksmdvjl@vdU5Q$m6MKi3rPFLb-Upw&Sk;fEdP91>Yk>2(wlc1ogxK`WgK z0Dp4PT;&|MZ`M&4ccSC&SZ0YrO|Q02JGo&D+yx1`zRRxVrI0lWFNbW?DXRpWY4l4y zO|4g`&rV0KZ*&10mk^nu( zMCmgUT%G05`Z zW9Zqmj>#rJuC9}ht3#%yRMBjXc{D^92n0^&N?o#qoSR&4d8)={p1WT41qhzs=2dES z^^Ic18C_)yi{mXhYi)cD!X2(JAQaLcwf2vFzRqssDL#G4bs~gKUP6dq`~0W16=pj( zcZ7pFo9j``ElB!TAh4ZrtK1oCzzgMm8i-!#T$zh^8I!R%c(C_hKjzM1Vt!T`=#b06pd2sg2ZDNFY;TPR%Ajg#WVO!an3(6xd7xSVE_(+ zW(@J7d&K-QV^5FC2p<$^b2R#2XHXUqiwRyIFCJ%iNY&^5l~3;C>G#`E)lFwoc(qUS zIxcM<`J-&*7)RtX&)Ydddy%dmB~c|uAdV?ootx`wMTFf#fr!5I9+wW9aaa=X&rOnd zlCzPW>rkh8T>A25g&lVx;v|0$&~@lMGntHVaYsf_^eXj$9ubh?7W||vl6#7pJTvNt z(&Q^wvVRPX5IRx8qO35>I&E9U7pZgB9_8(Ora&15tN!{!HXE@q#xNo!B25YiEw*NPx}@$Ukt9yx?^-d=rD$R477u zzxzpK(27jK0#nJK;0!F9IgS>w;(^6CP|3ri_rc@HHOzlvUdFo*f7lp7V6*fw}4j^CVV7**b*}Ugm*V|`tFIY*0 z6elNy+~bqz+AFU&UMkBILnZs^_k053>GzzTZ!lS#q4D{5$ltPkZFa*g5Fv% z``{UYY9W_9EA3V|ko337X3G5lqV1Bsh|#L@Du2pb#J4bvb$^L$9Tv~37^_vhXFgm6 z{7$rwGV=))diRxJc83nkZ&n{a^(bDGIFEd%eVAD=40etlT6@F9Y}uB-ZG%53r3P1t zoT5jqQDA`jJm}X|J-b`otd|FkrT8b9^@Abj(si6T3**+t{~x`@WhLtT&weEl=eyw0 z#R}jsxGteH`WaZdYEJdMi4ihIFkt*Hr~}0_%nW3u70YAKQbH|!qca?tduX+6M*xiN zxqg=+g^D|sYlf%UcmX6`1}j1j}4@Re<2 z3t-qI!r2_vIFbeH{GNS}{q*A$QrD^Jzz|g}sq}e^<~3}%o+DJ9C&!OkS$JpNJU6N1SH8?y@kD*7k?BRJj#aJem)$WMk49^mevM%Zx@wDpqDRM2-`MGYY!`; zrQ9%l?FMpXBCzpecuY3oy@0x-sa4G{&F$`lFbLwbJzXJD#+emgfh!=b9K+l*3AkWN z*$0uiSG`;3!wXG%63GO?#0Nu`bE+W0LQT^zpLZ_4=Tr>J&NqcWpmBHfXcRN)}gmke40OV>y~;W zem)t0;uR}*G?#+_KS|a>!-(h8xUmm7G18=`oLww|4nqcMj@%W~?0SSRB8f&XU?^kW zs1v>$=m>9-pJh6X`&QeTzU-B#gc7aP8NUbXFAy!5u$Yix=*IcwVE=-75rDURTC zmF2`iE`HZ~^`;VRQCo|ea4Gu)sk6Wg1~rRx0zxsw)R$IZ5jZO;$C9C5BW@E5DZGoa zE^)U;(p9vx#-d2o9Z9;h?`~phsrFdf%s}^?rx~tO&mHJePtbc(VGNgh*zN+7MUeNk zTGtCw9{h74?>8PcKDRPS1$$;?_xdqf^i+=gQA;QIj=OTa3rMx`nPWLN#hIz^I+;}} z0S*Q8|M?nKOHUv*gX6m6$d@twWIWAQj+!;%SD%k!ej29O^n|o7=O}ztW-0eo-6^A# zvGm}0kQ*vaQJ6)Gt2KH!(=MIG4iy=%4!7{gKTPvQfjh_J%G14ESfK!*s*nH~tfe!R zJ=eSKkNh$n$yEX8y;!nE7{cVOmk71G}v;Wc9%Q!k>vGcZk7)f z_HJu3KzdCPm_dI0xTR_1Q#yqCsca%wi#v#>m6B|NL#~6 zRqeXvpH*Q8(srjEhG*`$GSaLh7)HnqR- zZ3=Ufi$L&mwb|cAQaXaX|E>RFOFx3q=gNWK}O72p(rn2m8$rn2K8RH6Tp_FyJm0*Yh=dRgkF z>=`u@%5I~eEGMdT8TwE@&P2Yh$e`PF-Lh56W(<<`fPJJo&FQ^O7$gEU!LW4@P!qATNb&8&uetP`WY}L-~6dmQLHK_B9Cp?QgS=U4P zK_po?U9FYCKs+LWE*`jNk9F@iNzf{^1)DHAshaK)*8lm5v#9`h%rGb-Gel6zI$>xl z3!s{B>sWE51ULnRa@N zK4F{kVgbFwOy|lCAiDTKX?B5Og`-$ZE2v^tx_GH@PC#Vh*r5D{Y_#=gG|5GYWm%J2 z=rNZcZ@E3cO-ea;b(Sj2Sxf9f?8|r3$|-t?#2s`YY$0 zGbh{*YyTcIbclCMUTa@Ye+_aB2?F%)`nL@HZV)6Lxm6>;v%%dAv;1f$DTk{+bHW%4 zHygDr5lg7XfMp~Sbk7*ff<4h|EIWF>Ze_E|Tt=vNbv{i<6&|PHp4ml!h0#2sK?lj% zDocH}FXD#5C@1r7$M$rQN+i%D8=bmOTi*ffdm$xSA~c&UF?Oc!nJYI{VukwF z#C1_27HqIRT_6Z`{Tl%o2lvMPtd0J81S=dDoTD z@6qaMEd?x7A6Rk zgl+dpS>dP%!HKSTrwTd_ImoK`A0fFlhI1k{rvRsC9DYv!xo|$GlC-W!`kNVIVq(Vt z-XV45fn=2j8;aFA){lL5cwh#>Hg&ExYF$7AmEurRmA1}42j^)TRXI2{VqS5N*j<9ZPR3$8OL}dT-5&;400R zY5BNQIepsN~9vtYLV{4g_YQ(*T#0eTA-+ii}4Y zZ0I|Bu9agEI3opmO5i@<%>D&pZC*W}6TdH)Zkpn{gB^n@9`<7AL61vTOWs8uL@`%e z40hOzlV_WSV|xRfQj^@b>+*c27F-J;XmZbC>2)}=_4QJpt~T`5R~)l8Yzkk4?5{I{ z#U&ie2^d%33(jy{c;p|Vt`02}9nU=E>Rrm|hm4Q4barSIH@pFcw+N_zO=vJ^d1D1M zLi9g`FiwM!m%MLxbfB2zy&4J?oM5TgQ_LHclnY>Gl1Zq7_8Hs=gm7$(E7~(MumisN znA4G|@F!A?lEG=WlqF1&yYwcfTcf{ge{(WBq_RPPdkf%=A^g~BMM**PsZh8yL>b?F zM)gd0Le@987ria`KebfFZIg5o2u0Z+@LR7V%tMX)(r0&#N7P?=OYSI2VuvNlKB#ssOG#TZ)AAFU~$X0?H@;!lfu30dTxlp6C?c;js^ zV?G7_rBCgCJv&T)oGdd4&PA=sBqKzFUtD*B-*dpvE1EjLQ=&go^J9%jO_f}Wtq5VS zX+%lUKRM0OOV43~;ujh9Z@`>*Hd#rakF7;j28E^{$Pg?wI+5dWnKqDjI!BLV?6F688A|UvHw8F%Rw*#HpQ<&U zh5~K?Kd=gDZ|xH_e0N7Z^Rfz-9%mZ;>l&yfJ<|P%0a#qZzChSW1 zEMMI(mkgPBx=)^-H>sw!SK8VsX-{GEy6LmJqhoDVh!LWO8}Qo52u})Ua0}!3mhkNJ zs;*+B&m(?=Tf@nLS9=s?$y%~jL7bVa;TjU5^HCD!AyGpZx=xn)EZHM2^{c@X*rdez zE1XnW4ul~SO-L$yTAl6Hy(b2e;m*Vf>4G!Y^7myJurXD?ZiQK)79(}6J6M8_Xp3nj zFXc_!aLvjlr<#wnYItNIc>;BU^C4v>Io2zkSm+5QiK;?HMT$E}lvjpl(?6VS z6B9_88dXq;X^)c)A#haPBkEH16(Ca=4!gw(xI^chK(ZuWOKQdXpYup`R!3<7H(<8G z7YOpHHxn+*QXRVctD)D96>3d%5VMcY#FH_IdmMlZNOoo; zc2W(?h04fFT5jbXQtd@oOI$@#k(%MfO`kH$LzoSALv_vRzDdPt24ncfLBQM+WsByE zmV@9=(&MUimipvF-FZz8l6O-NcU3EOlTy1g@4Tix88e+sg|rprQXcZ-lW9*9@UnP6 zBN3)-{ixI1t6Mv1i>MkzIl~~pHO9Xx$%X$gG(ogdm^bB|0-fJ#8mj~ubVUte-jf|f zYmY>IaNGPd(y|rVMrcdam_rZSwqi3|jxQ8E6~B6^Ra-SZ(7~b<%yc?V(V~Xjqe|>r zXl=-90^Yk!vNmD9uq)c5GwA$GmvPV%5vd8RW{pg_bFS?HD~DU9t{^9uH<&eI#Yxg8 z=+kS}=x1vD&EymY<&Gr#12K1y8RzUBN$$uKHxQhJKznRap<*Y`Ab&vzQFl@a(Q%uc zm_K(&40wCHLlR5loaM!7q{w0df@^<9q36ldPuL?L`T80;`ZHk&WsOcYLs(Nd^%~f( zL$aTxmi_FmdS>Y^Yb&CF&Q0lkmIxl=U8YHdV6%D;>Mmcd{zf4%FgWl(WI}hP`-?A6 z)9#)4ML&fF{RJZ)5lu{m?$}zM_3k&axsokvxC3`>QaL_ltb4S+g7+fNVi}&v0D+;A zZxVXP0tc`x)Q%17&9R)!m7(6iky(O`?yF(vGtvqflW{AsgJVkQWzlzh36B1=XLQ`$ zM-=GhDuH!$*_1G!Cy6SHjP-ub9Ow{1zPOb)J$MD0p|YMFYYk58V7VWuuXnSI^8|No z=_p1TNmAgj6Q-GSC!xegLpFCb_H%q&2Jclh@}Wn0hv8;=A}&5m+wbmx$0dnIuYWsH zzUgwTxJPN=8U_((MY+1jW`!YfCx9ElSo5;Ynf#4L&Xeyi*q8QQE&jlJ$d3HgFAN^e#uCl7o9_QL&`R} zahB*@HCTWX4Gs0i*r|e5y$Fy$rD_8y6;<&^$Wdrd;k&ebF zSYP}>c-h0PI=Mj_T5UIvqqDgOC8Nq{?;A?baKf|UNT0`aX*Y)xG2%)=g*CP;gV;Ep z-|ilhrJX;dtiq%q|B9!AVk-_uDBOQ7GH(;z^I4&jijq}vaz>={!|VE`9vDE*9B)f^ zHW`b7KYbJBm@(=9TBcWO*os1otCL8sx0RXFd%4M9rp@0DYCgT`o?d>V!d~6W z^B))0K{Xpf0|>h*8)rgQ@%hhdL7|=z3G1a|%>PbNHN#y6uu=G$HEXDx*}W(TP)IG< zcJhdF>iVN851X9$=X#?vg*$~cDLK)6Te3srKf;q7?sIAlOYPI=MN=Uf8Hr()^P(M0 zLV8@E$zLtM!Bp7l$KnOCDaH#{IsFXIL?Y-Npy9Gg3L!R?!oV3BLtIu<&Pzc%4O{R` zx2W3>Njf5S4xD}I=3H5QY)>+K#uq2W_tm27R3&p%QU?{8;Z;ejTZvSUS;q=g7LQr9 zx&i(KBzRSMFA7Jb+uu)c1&iKZk}UwlBqxx1=^kKo7+r+sku-!yZ(`Tja7$-*2TRHuf(IW}jPt zBNT*JND_AgltbyzaNB*x==<`9JQ3)?aZL!}|jo z6!rO#zjjI~Zy(0s#5kjhjp%^C2JdSQkIZHX_UmJ=YUoHPqOfQ=CTGcKdMvcR(g@0%*6+ zqjKbTL#)o2Fpy_Bga4_UZt_uo#U_> zZ|wUPFr6r2daqVXtW)fh_s{S%PGos#A;#BfGzvCf(qpQ3*yMEfjPJIF!DNcV0@!}A z!s^z)W_kgoHn7Ea+l_^y_{Gcv_zEn(g*j_hzr5*Hjc}gvkD62}>P^W<)&WdF$-NH9 z+U^Y-t2*&6S3OE3IWUJZ-;80ehL_^eKdstDQoSl)beRTZw&g-%j&N;Y7T_+Gd`$bo z??d=R3b4@uqi#d_M}_RV6S`MFoqc-ogh#RTR-$p`b`td8LSl0h{C#$6t+JRRmr{6j z;`f#!`gBrx5Z?Yk+zk;!RDs`6$y0e0Iw$FnuTi-Zkr7j#sP#zt@_wKfwANs76^QPo z<_=h$)_`QGwIsByH+qp(G{VgO{Ee>&7!JIi0jA~vO|n&W>#OO$|1r}Sf1TFYj(n*Z zBW+EE^+Hkwp61;GPNPuH&{C?h=mDlVbi%rgVM@H1M&7exd z8j&gmEhtt(3;~De`@u8f2bu$uR(<-45YC9Hp9l#5>*qw1_POA{CtN-qjt*k}pUpw@ zenQ0SPbrIpkq_k*2@}(D(n~*tWFwVx$^4eap5*)1<9^dzX&diMCl{)UN|3^Mdx4e` z+_@h;|0+`zM<_W_IUP$ zZ@}SNH=_iR1gP6t5ly7(=_~lPerS+drJL@#iw*ISN9uR%$se4m8L_B*eFAwp32IEh z;{cE#K@WaeL=@}|UTD72fk%<{ey+R6pG&V4!bDX&Li#HhqZp^zVFev_0iuj-m(k|n znF@vLgBPFlBQ$BWIvuN#(M*ZbmjWPEa37sg>Xewq)?ocaZy6vuDk{38u$b8tg+6|) z_UJNAEDvsHFy&j!v6FDOJWOHgH6fQ0NA}MGhkwoR*mG%mQb+r!{rKb2x}Jt=vn!No zqOF;|{H!(pk5OK4q`~!&GMyhAjbcE0<6smBggMU><9Rz*a6q?01Y_bu%k;8s5;)GU zLhBkY{sQvTXVY$Gk;DzLp`$-NTg;HT7>=vQmU!>0*am;-M|0_HVxgsiouP=GT^MJ0 zPKiLsBj^IFlu3$Af%2%F9DVR@4i^n30bOb=>;V_x0e0i7Gar28Etn4KxK5cr%oe0% zely?K!m71!24sT7_s!=I1!(OcAAJU*GU`@3XMY5sb^Hc-KGiV8HJ|%t)#|dg79v1p z9j^m6O)Jsx3E&OY@a|2)!88iSr4HfDTX+V)v83t-FD#MinZgM*O;jYm3pQ;ai;geI zF==~;U@PNT1&NI!iPm%e^eafw5>9zWaeYuKY}mJC^pYk_tiVAbfUN7}t+d-n2D9c%j+zjF?MPy!_%Y zCzw8^l_=G|C+0Wx`n7HLYp5&W%8IZF#=&0%<@fevki6N#%zwnGa%QEzDR{{9B23=Sk1>=wWz+4}_B9D*43+(+!EdnSPsUq0GYe89E*%uMP z<-%rHKrx=(wXLsXq^F3Fx^`{ak_6jv`ylk%6YQ<>s{O@?+7eixy$Or;62n#6r_nZD z^9zA20xX}&zuh*>IV#A@)=KW7w$(^NH#3?r3lUPDu5*v^vm_eLScDG=c!<^}BDNm} z5Nm7LFld}{el|3tClx*CP9khujMs`*jIAI!s9q8fzqVNHl5aY#AL#N^p*}9+0M_J? zYG(wnT`<>TIs|{Z`t6V#frd^+(rZ1de5n>EMbuQu{r`c>Nj~_p8=s>>1UKxDC4c>m zm!)Kte(Jztya8sRhz;MrVFggM1)SduThJ@$K5I)X3p3C!H;}htu01^$=~Sa85135iZu?JB8^Rf9*QE2iPvG;~wBA1HWmtr*THYgOY}pn|bWw z{I4QguF$0oQKfoJOtO znFGdT>yF{!4eYRG9zPoQ#mqpZmo=&Psw5g*ozK%^W40$El#ubOs9Igymg=fp7Nln8 zM+k8ee(z1otY&)}u#(|7qRw7YH3R;I{wSLD5rq#$5jb6abi6F{jP{gk10q`9NVsy@ zfW4CMh$4yiPb?pf*yo@v6GM9bhEEU1J?Ug-4;*XGzK;^?Cnf_hh41AQr=&DH0 zLIf&jX1 zmYKjd0Z7TH6doH{X;!h+JoBcr^0q#!^17^fVguen9Naz0#nI~SH~@2bva^b6BM(!o zEE8JSoWmsVL~79X_WG!63V0|6#hN&0;KatF>VCa{_W_Zp2yVwDF!y0fB$b&_#83H~ zZ2Lhl--e0osU~PI9=#*3T6f;qKzJStDlZ*~-c_$E0fIp6P=pqCSe?^qW?As@7k5dh zQ7t3PorTN{x7L#B3d?oe804cANe0AIoyIR6Z2;SG6U8#?UzYpDF!((gK}T8vRd0;6 z=Y6Mug-N@E)A7YEa}oR*Ys8EX_~s3gCaU_FmZQWNJX?!_8B)Myz5kV1slqT3REiSu z*2IZV!-_Wrl#{A@XhSNpDqp-)$lEvMQM*46Fwo?8+U6HEhkic*w zqu2fA0q*JP3M<2#bWpQi1D86^shI-|)90dm?U%YG($v78Y?TG$DLDN5Mcl8@GN9b18>yMDwVU?}@o(q8S!ywm|jtQ`>EXIehxh~7~ zk`HiqHr{5llK{&Ik$?lOEHZ9Lx5KpN9F|X9(#5DVDZEU^06$K~+60PF4D$gjww?tFL?}O$p zTlj2$QLip6I@{7k=p{;+9xG~h6xHM50+c`|%R=)NxQPit8hqnXbkeG;ZN-Ermp%%O zOfyw0U+8XgP{)@BbSjq&F(aizvw0JGl$EhqSt@~M@vOSucp2_1p?`Xdc%{t$=dl(n zD9MQ3j+N}DgdLergiIv?vGLnF5iJkq2fqAs{ODzDNP4pF!;0}Sz3il#xYk9dT7)k*zujiYUc zp3Rz0!fjWFg%gfj1mv^?j`Fyw0QB;1v~(LDwK{xhex$|4g2{&0S4c)Zic}L@*jsyP z%s2I3=pFyF9J@d~*0F|b_gQcf<0~=E`a>{l}~G5FJGb7JbZ20Jo{6 z?GT9ePN z9GB{8Ripan4Ll0N{YDPG<22M`-QieWT?5QXX??eP!(Wkz>~~E0C`cZDWu|8l|x9&(11Tk9OgGlWrU)bboCO& zxuoZcpiskZh%@(p-`vmPQzRIl020U=`*v=WQ18H8K_5^zmu@g6FvVWMgDGNaoOM3* zrilxM9u<<&e4a21JJvXW@qZr5ppU!@4C~iYVoMmc)&(iV9h*n?8kbFH1o#+jE%!=GKD>Y59Z>;A9J&q=tY{HH zZv#&3s0*_fi|3LJtXY{X*iGQ)daBQ1f46z^dMsQ|<1xNAqP~61<$9Ku@Oh-^BlHgacT z`E%n0nVK@b-$8y?3VL+ydlY2Faxmtq;4iuv9LdwX_z^JZ9GrgZA|r~g*(|J4YZikJ zSwEP*{1t3$C!nc1X7>y^SG(guF*zla?!(y)#6$HEPdV%ij(?Z77kr!CE z2SF$Ot3w@;+h}$9x(P995!6(Do*ZjAJkVUcl?8jA4K!yyVunv22}QM4cQ``BV~vN0 z!$6n<$NCtz`Nfi0IuSu1Tu)=wJht`^xn23uB%eLQ=;67mZC^^*9R$JAg zdBhLZ-aLkl;j|`sLLiq`Yq;C0G(1F3;9=WU7c$ed=;;EwWSmAe>*@?-Eb#@7Q6((3 z#l_SakC03BaWq?AGLSu$j!k2fKg5pCw(%u)9CvelryRhesh$AqVOoHOff_MY>pjNR} z@8GP>zLo~lNFnXWr4n=YAAnHa#F~jaP;)Ualp@CRY!LktOThrntBFQN=j9yC-kjHsDU_ zk$fs6Rp2lwa3y>H{un3BQIFdC7{Z9(kdzm%y{j*t19|*)lc`qfC|1FmP0BKB*UzeG zALCx2#P*kmUV-`z@Pzrxrm=f8?E?OvhycDQwQ*Y)9T}L|u71LIItJ%MHGg5g2}`6|{6(l(fJqC&4B@wgOyRlSc)Q?-WRNUP7Dc zz(s4AN_OjB)E;RKk`Y^ZzYf+J|4M5Ug?zlG#kQI8bW*8>;qjOs0r;i_So{!Gbx_4k zJeta7O|g@1ejCf4OORwc$8P~B03=~!y;bG=@ZeeZ?SDIVzcKkTJUVw8GrzX36namG-OH_k<>=` zUX`b9pjVjZFZ9!RbKOq_L^Hxizk$Ys57%Zr(YCVs)-*yiUKZM-eT7fqK~k^0(7Hm> zY^OeCa@lU`OO>^z%`nB;=7cC_BxH}H_bGeDX=(fxRLuV#B_(xoCJ1TV2LU# zsbt2($yN`ViqPR*?)6K&YkAVfb|d5bmex_Siu+a2!*ODOeTF)-u4}-)IZNBH@9vVu z_0%hyHsg1o9`10mH{k!0Dh8k61|IhflJh*`68Z>+3f*5-A*_iUO1f=jpn>jZ--%{K zy3sF8RHs(&MNiBMvL{3`GEj6txvimw|ERVgnpvd#%U`(G} z5~({^ee}hlA$U7!6ry5;M;dFWLTW1o#r}uiaa-?t*gnf(UXUx}Dx?d+8`09<$@jWG zh>KbketLLULvk<58NaD(*%fN82pcYFF-dr*#Vhv+{00D=I*`l2;5UW;PoRnv> z7Pr2+00(nX8V*&hMj6Rg=$)V;8anlcj;}?4Mbkjmf(2ROj0g8OBLFic#j*FhR#c<~ zHzatM}&+8#jU7B{lvEWPeb*)y>-~s)gF~^Un)`c zC!Jo;r%UK5ctSDBN(~_H2cNGX2eGq?9^36tXrg|^b)O|MIxci=37(C^MQdgJ$Fnev z4`Vv*$^5xfHS~*ATW_QY(|b(v^y- z-NLlL;z58TG?}5{z887_IZT%hjfP{LfS-2?t(1M+ntO~<;pvi+Vv|)VYU`bP_kbTu z{i6MadQIS%Yen-q^6e4{$IcHenF?@y6=|rX%t8Js|L}vtHK+4wOmS?aq1T^PqqK6u zbhgyFu47LHf;?XdV|%N^NDyV)#i&M+S`1rp2PVg=DOrD8efsLN_)RK6(c&ldFnW2d+t0h z&BnBhspGgmOJh`LuxfC=(TVkeUNz(n9|@AD8LUOBB;(P@vy=C`wH$ch-iT}X-RtU~ zmh`i7CM2C07W1Y}yGB-LxJm0m#fPn7MWbV%pW%TVRceo=%8xwI|9 zMx{b|UH9F``ZS=2=Fe+1r^Mr3yHu!hLApG-rgEX+dICjvY%P$-ojDB+1pwfr5XDEo zW3%ZH=kAJSr5+V+8VRVrO4Q>;=1^Npl%6&V8_;i^g;+Q(EK;3a7xroV$5;09p2X%+e<1mhvOtTP#9)Gy zsev!dO<3-ia9(-BvLzv+yXsxk!l!E6(PpvUJ7ct4-1&59Lt?P$N@%ayR2w*OX9UeG z0~z&7>ypqQ<$T)iB#qE|%TB(E5mpeQVGTLj9Q{S3FIyWvrM@l%O6rc&Fy3DFh^>Hs5Pkeo8QV+nWuI^6<8r`F2*R2rh%(<3pZ-z%XLjbBxH@V6l0@9tn~@ zS$SsE79}PcAc0$5knSiiVOMuq@tHfCf%DClVtl-LkdKdyX{J0;4+~2*hx5pUM3W#M zO3)ACXbQ8Av}OO|)0LxpqoJBa!A#yQhldm)pllyZt239^NtGbhY=oQjKH%}C%H~BI)GTp3l95?7JhL<(^Gv#Sj8Q-Z@mf<0&GD6 zRWjQL)?4Ag;Y_vdTc^qUX3usZL^YJWfRw4@YprOGm-X(9(=P^Wv{S>hAk`M?5;KhW1ZQ$0T);`1fy#eH0EqI z%0bmD@8d$)Cq^2rbEqfIxF5t&qt+>s@;8W=BmM>OehZK4OP0AoQIwVLX3i6~(EY|@ z)b|<=*=*0G$)(v)tCd4e=OvKaf|)zr14+GamM2?x<>ZqFkXM#gSL32ljg6$wofk6y zX@@#Bk;+_Ud_~_A`KDfHUFj4F(?~OYg#tB4RjVRe48)?cy$O`VO^VIe5+GAOX~sm4Ard zdkq6mQ%mUJ;k)6M7Bl3Iw6uQC>rmP#kugrO@SH_`Xe;9#VSV(OT;TXi{B8?@@KW<) z-b8^wvF(AZ%V(}geY=gq72X@F#%*U$QIiBT7AZ;r zhEz!XIUO6f_J>PZp!WxLpIo!$4d!0IL$uSb#y+_F5iNty+Y@5U$XLk-fHFrJ?huL5GIk~ z6hq7*ELder6MMWS+}T+6Tpky^aR|Y-QvnvMR7&b^^o1Qy((_RJAV?yWYBH$0U3-$G z)HL?jb4f%9e(%+g zexV0Mh^F&;37@B;#9b&&faCNFI9I@^f8T$At;Kprncz4=K*P5tQgICA6#zRx#J}BM z?OG!DVmB46W<7gLnce!pzB^QSkH5To&jy{yPnMnCaFdhk!E{l;xP3&gZRj!gw&iyA z1(lZmT>UV)z0y9p*Rkp>mtF{QcuS+!*1-UzOV`YPoUa1WBn;IHN+Y<@zik%a2ffzC zAA9oRct}~2%ty}E9xLB((3l3MVMT;H+jntAVd0}S$mFhMTT-ThUmo2vn}M-EkK)K3 zdXqhE=#B3N+~MKWxqH`O!*NIUjc*!cYfK;G z3pwuJh-DD+t&QygW!TO(`Pvk2ZY@d}*RvaS~B`l6|v2D0t^p z=X?_!sGjgQwQ!f(mMlNw0#8HDJJ_x{(SEYLX}-UHeOUw1nq#wQ)l1z)+ou4WiarTk zttRCBLj7|}1!1E&v6#VLS{ayHAVf-XG|ah=(1ADsdb{Tj?_SMQRbW2#PYc*G_PVRn zPH)beZdscIPks&qoG@FOvuw%rSl)l|UWuKvX;Gipanhm|9&a3;T=26@cS7*wgTzyy zzqg%kji%~QSi(W}%yzh>hiDun)u;m5Rn0|9IO6esS8zG#mj{#kRJX?tagn_%FmQ)& z9RIAF5)8GD$_Lrl2X;Jk=Lfz)!dJ;4x73Yl5|iPW0@Na7EGYN!d}o5VzP7o`51`x( zibMZhF42QUT7s-bp$@=O@Y8~X<7Aa{WT zBOQ|QQnzxpel(ejoUo(m?NU+Y7b;-zH&iNka5z$284PxO(R=b7h^{2p8C5CxKE{{W z_GI;)vtnFjX+Z!%N{w-{9Suj&BErZJ9{)FOqPfv{NorU?ED&NEn+W?jXuwA5UDLB4vQWyyqei(rszyyctR(__UC^u&`5kF#-3#Cq>Wvjt zR)SV(`WNh;qJC49XhIrfk$M!9etDJIHg^1MuN0Xw$#;|^706<8B~~4!kya0m($?{) zC}eYaj-=axc-vF{9u+M?ai*qx>DZ`dlxy`4-);p`nl%zH!<3sg814sUU$a_ppo7BT zs0?_;f?5omsuYfUaq>8xOb9AmCNc<3csFrY9Wc1+T| z#>RC1XK5Bg8egKK(F>>DONbsMTIpgs!x|~NImbl**fbXo)7azr*;6yD`s4Z|DDY0^ z)JrQzO&5v%&OjKQ^55)o$&w+US1q;-gb+Lcb;Yna%1dGTBRWHHM;lX2g|<^;Y$9Vm z?M1Ex!qiUVapsxVmm8JZ#?JIbC*c|@4`F&V-#6m$FEy7(aoeSQ$5e3t)ms^57_WXD zhw)8d9dq(oeKb-GbVHx5W&z-vd_SkA4unu#C%J6FK5|kkcI@2~keT;aJ>-T4WT)@f<;}W0q z6Cs1=zWGS&HYs(}Gx#705>YcN zVyd|&)%@A((qf~$8dT#h#&`*#3L#v3Sg*+o7c!qWc5)rz3~c^%O8%S}E4X*nDsPSpma*u?uW8ue7C$pCxOrIriumqK! z1E9mjP{n3CJcNL^wKY5eE5u>ihXhV7>-2wLAv4qVAilh)%XZ!RM?WOvE?-Xo=~MM- zt*qRqcTJvXF2O$ZDxk`wB|g)7xV1M5)Ftsey#Si4=>U|KIAegV2fvfy(}cnuJ`}++ zALb6~@o*r~T}wUI*Y5qJaw%+3#WJapLids}|3!RoZ)P74{$%*-%CY}pE`2^;b!k}P zv*_$bS}a}lqBJGE|0?>!DVN0%4cTiGslm&KR>mYF_-9l*?RpraBz!VU{5>UGBEmSz z!Dg?KX0#|zJuWxXWpY?P_R?FYjk~p|@Fx`HSRv~BP1$n*m3dnvvp11f4ivi-q~a{( zpuq{d62(L{CUwQvV59W86Vqq-_xxq=9YN{I4H{v-o~5`frV1s9%1EM0wuVRZ@{voi zliFQ5I7{nEd76LCm=;1sj(0TYWr65=$|Yl1IxV&4fZwmd7py%efgz7O_DHmuY1)^v zPN8m5<$h`Xw*wo7QoL@4_8Kq^$xu^~VFcSDQ1r*nXY9uzJQ+UNdf39(u!5^Z6$w9|FNa8fRGSW7BCx~N;J23VM{B%_8jN^Nb0_EsOYTdVFrjtizz`6eJgSzJ=e{gq+^(+jvVcrsqSpT%5WypmI{( zSx=0*7q!irP4ll8A_Ia3spE~YWG*u*X#m0f7ce*CVdB?KUuZa zDV~{_`R>g|$?|x)_3z^f{e)l&zo3gFp@)aM{}vi3Xrdv5M;v%Sr{9&Zdp7O ziN!-34B_${OX%64k)_hgh$fPJnb}(sRx@<0F;^_jt^^WM+gO)mvLNZ-C&A(92<2Ae z;yO>n4^A+^uHHq zCB&Q@$p~ZKJV?tNG$in;I7PeHYh!@*c01%9gJNbvM2&tc^<*6VXL2jF7An~{R8I5i@M*Bx5ePw#CcVgfeP70W{%JVe%(+(x3@UYH~ zz#yhGNSWN}?(xsJ4KyD%)1)gHOA8e!k{}KpX6p3V62~n6>@F!Botk{^11sEP`)(xW znN|4RWxb#f3phK?ZM!r^Wko%mTdq0z{|)DY2CYf6V0lI^2g%V7j2ZE$qY{#|T}>TRU^wQjNlUbiMWOxyqn zB)p;Z=n^W_g5$c~uZTv>N7PEqPylu#Ma>ib4(Ca1`Oms3>UD(;^0Olq3f zX)JyTj|E?L4!hOI#lXEnti=$ni+0jvJ-^z^KC^pbkhGJb6S7y&^C7cuSVGte!#X*| z??wY42nlSzso%uAC97@VbfS_xAniMQCEgR$EzU=L>v&RC?NWk4ZRfRVx?z|BXa!lG zNOhc;S1O+qTf!4WKR`CD{1e+*3WG?51`vlIdu2E{O&C-1X-cl$GSG&H6~yEnO$NJz z);ZeYJ<)F>q>y7D@9Zy3+Cpeg_4MZNc$fRT@7#4Sp{-7 zFYN*UAVYOCK53d9&};p^BKlOl^FO;+Q^BCFRRq~lX4-_dfu{V*rA!abb~K@4r|3iM zS&JKlI{ea+y=M1^PCQW)?n3l0tBjOnZ7cQMA;j_OlazyN0)`FtdIB9-gMdH@Cut_k zE93&}XBo6~R%^@=Qdu-*L1JGdUIZ}IeW?VtMyfvm=@b2OfZ6#XBO-J#(aHZpa%llg zcI7=hBM52&LlKUg#RKvyeB(DAY&Onvb1yzG^R(;v-2tOrP@<`Wnp|F6eI^N)bP$0} zwY`Z8@0Z+aN@V#Lf_GSeyiJ?bLOuHwm2mu~A6~8k3MWPFSiZq{#uh6wED@=uL~3)O zCIR-cdOx*YY5KuUWni-|aIbJ$_|%od%7ms|UGnh0b+cHagv4&ttFRPL+t@hWy*1Dc z-1byrvidBFDEh9jnXU+r#c6s)I**TFAwAw7Zce(g&iVsI=z?RR8w0Zni=jOEq;;Ri zA??Q96B|-%0b)NnF76#f*-R;S*m)uhNY|#H{L@@i0=+zFf(Htj(8GJP(WK@MGh{$)!kc5nNTh%nH%a<`0oN0=%0M5 zw`_82J)5aYwW;MGU7w6hZWf*}g5xQ~dO_6|8 zewItvg9MH&)tt#Vhse->kHnKGWHGYhLh{3RrGFkW@09b@Jy&OUA9*bxJ$y&GzknSh zZQ-3=h0rO(?9``^DMAKtt|a2j0>38!M>r6%@^cZ!pwcrAkEejD1ZJ#&dLG_Z)^<@x zxcb&4_eP4t%j~D$e&raBO2+kDSAf{&n2E{5qpnu{gTbXRPof`G{vB5TTnCLsFl?nM zPI{UrIeE9MHjjvV!~~)_>dLjbE7${(?{;mA*83Ah+h<@E$=qGqseprh9~H zuT@Llh%!t9Htb&JpmbgQ!~UaRKm4v&2@WfgV#vX>oUirSGtQBwr08OaqdM?p#*FNOh1)MzF6I_R%W& zawSKWdr;M&lu~V=m%wlaz2ivQiUh)zsS66csz!eLw4n&)>0YGi)eL^iv-R1#MH$e` zHwhdVrB~?6a1p5{HC^TZ+=4{;W^U@S;ovVrk3gd8zniFQg)kAWhKA|LHz;vT)4i6! zofOn|V!6Aci85xBFZR=~14=g|SWsweh@xEp8ZDe{|{^X$_P`7G6qpC|RY3up&2Zsy3g0VQ4K?#*bJu3rIy6`SX z_pgE^_?*LJ&t-Esus%j`6c))sw$idiksBK{5Q>Kd7C;GP5w3aThlkFO#QZ*;vi+K1xqvd!| zr{cHZ4NSuJO2H^RpRHzee!H>>X1Y`5`i`^XXSXtZl+Z_h5nOKuF1b2p2vr_{#DApD zzKi|BYjd__kWpRw+INh@$x9HTj43&$jV)Oq1W$~wUH>h*zBvoU-FO#qiPscD%8*@i zIPsM&s_XTuwS=GQE~`6z!#LVkAMf{l0c$8qwlw0mk2#J5(frzrx(7kWplE9Pk^Sbs zutpxlNsnL3^Vx2|%AA4b=9b;5E|pOd8WyiyR#LhvBfecLZi3<1jfI};uXX4R9F|v5 z%i5iKngN4S~3>u6K6R*fV zsJbAbc)b}B212CGdvEfG@j5T9r7)m?hUJaD-{j;4QFUy~@`fZ6u@E=KdAYX#-y8eF z#`2@*wdoG*7HWlTQ$xU*XhMH+ov5f-IH(BL3*pI=u5Kr~(ak}0wJT5W*NTO%rJ(kv zB&K$M0~GT_V*>8-6Lae>jMH&4_Kg~auMuCMDXV=X&u|1?{*(K9DU=tmT!ekgO#J+z~YGw^W~2DxbbpGkabURbGj*e}*rL z2=-Dz3U>E3g?0UJNs{I0k8RWJMVga389rye;+ftA$B~cf**C1Z@)3;n@M0PY4akqA z;s@-gfNbTK2FZE8f~85Ul2Ae{3VW6F!xCVam+K>^jtG;}8+jDCr#V8MJG;Gt zy^q%=5f0bt~ql!#ui$zGrSsf#gSmVj}!0BogV%k8js=? zT8ZTIgEgO=Ks>pV;Mt0bPrn2cHUn6S0vjIqBp{mwDR&>9q)GAO?{R1Jl7=}JY~4tt zTefdc@7lbKN9ted0-!oIC5a!S|T(XnU1> z==ML+J;bP~tAOQh9WSzBm3B%%c1MEH<-!f-+wd({jXbAHtht%#@9gG^<|(fx8qFS z5xzomjaXhu;EUkBEg*;C5-4%oY0H8`Sy^hu3VABWf1LFd&XnMK$znoSpN1RO9fY&5 z=6nuXij#}c3!myi({mN?QhqeH4VqCuGTswq_ap0@Ucx>7mOT~pavA7~)7U{);zn9{ zb?Jv!(>S2z(#G`H%nYM_2@Z`E?glP5o`fwXJN@p0zs!gQw1A2ooQn>;46{AK@wk+J z?7VWSO3M*iwMToDLgSYz5p)7d)4|ibyH$%ek(Y>FpYCR z^bc40LoO1^;oQ{_R!C_nzXkkchJ@}4y1G!~Nz*-j2m-(czYt){taam8al{M|6`xUg z)#DQehl;AAhsX>;dB4_i$nZfv)3?i^v5cQ3HKf^?!k)vu7rV4>lw@NlD?Z+8Hd;OO znB+2;k958ciMts}$-xnvHik3cI?rH%QnPi^U%N~NspT$Jcr#Ao!2y2I>#mp3Q&3-M zQS=94sLM!eXo#yXtTwk#$g(=iPXri{R_z)>GjO{Nl8YR#7fNM(!-ogii^65hd$#(~ zE0m~Ht7v01wZ^G=0(UpA-h)B@Tfw%5y@208mHrLcT*H$$KY6D;xBi3NKP)bt9}a?t zU1&@~x;?JV*j27$KD==lVCEvA!ERd=P23UWXnM!Y0YY>;3?C(Em;RLco{F+e@ zL6&))QA|~SqV)


zPJ5!qviJHe)*NJ)xpf9}cYKbApz1B>-?(f!?zCLJA#*?LhS zqHU%;qOH;h;I9F}ZVpD;UvDPvU&Bp|>H=ta5h)1BZX)8Hl=0j%zPmp^bE!?S8UT`J zg#fHn%N0TnN>^;K^4TBL!L>ATf@E>~pG>|{ZXXWq4 zJfCnB-F8;k-PcBefTt1O`(kzm^c>CCRANCtYn)-9wY_1vOF7j zeqDonF<54pC#&jJfhuzqUT(N335hQM7ksc9Z>zUH^X z%k{cWR%78rA0lfTd;l*uP7(y*svW&^4ky`}tdv65KB9r;D0goz;B}?@oxw$t4@kH= z5YjSW&mQPg^(R<3TwBzXny&D}a^&$=)rCoa2 zZS`77JXLs^-+OMBfHdfT)n7yXn_k>Lx zu>F8cqqB&FR*{NM15w{KqXI>H98ZZTP!f4#+b~R&aCS(M9VR)jpCq;sOsBFex`Q4T z-()a742m5;mEKCsh8Y4WFTS7Z5WE7}6v1kfB%^H8%%jjsHz;Ux861tQrtY}kxqCQy z*4FN}r5Ua>nm{I`yEfg~bI1NRBDT0=-hJX}rfy_v)V5pp58EH+n>)@4T*ejh*_8d; zycAiq48H3KoVJ=V0Zafn!|!*$Rhr^IU!Ap@u>@Jic$I!r4Aka+7gA@1@sMrH1fZ z6hAhTb%kCnUj@D4e6(RVb8t(y8dAitrYtX!TREd2s&LMWzes8M4ybta&2O;fLh1sm zFP_OhvxR`Io1umlzLvEEcVV@!&*C^g&nA%`Vtt?#Imao+%)6Uk|iuomuGtD9?v ziQ0*g$w`e$^J#;43nS`=d|OLDsDCYvzhEyaL096q-)i2SmSBFZY*#3}nogS8)`jWY zRW7t-oTfB3H^-yKU7$0hYQf22Wp*ErE`79=w;xC$_#r-SXl6ih`TV&xRnic+A=$CE zNX_syG%yb69klBH9K+WXqxMM6FI2rjjrtNd^ghrOiwYoDFSZf| zco2N5tsuj`vQ`-0%8Hj+C5{3pe?jPXEps`QE9ydIcZ3amJ=LswlhEr|k2|XUG}|eV zg^S!DT;#eXhv2KsyN`7D%EH9Tw710|qx!C9~7%1z9*^N&zn2z0WBe^IKY}hvp~TU&s_pv80Dfb;_25vQ;Oe*vBV| zbmMjLJz;mzFtSBBCaUmh!XcQ8a9<_(Q!Rd9UGqlRHZGff>OfW?$&^v21W9H88Y&<; zRSNCxOO~LpSXJu9pT8B3GtXwUZ1Jl-BAWy>%_F)H&qN%u`Z6U}x~c&Y-KhyfI@l^s zv_9v20Is?0f%BIay=TXGu3EXMe)+zZLhiy%dTI1KS&ar7(dxx!ju+k4tOQ9LSm(QM0q)M0NE1+C1YE!Q^i}XmvCP%-yqGIE z;Y`e1zdBR7DL2VOWaX6a-CEU6>teID;au{*xI4kZh6)nI-@3Fi#oM<#BzP49+1;(Q zO7Gm{usA5>Eyo(b3RBnll!Ahv4IgS!`1qQaFj4V`dFlA1H*T0L3jE!Wv z$e%f_C*51XCTT)2eYjmtBeUlrWGG`z*pUV;#m^qct*_{V9R{)=RjwiI<0r+=oz%oH zO{49DdH#Kp9V}Zo?TL{{cREgq2T9b4#y<6(f0VM%LF}0eT_^6mzAc#xgu0%NMuRaKvI@+|Csk);|32?Br?$cXcBM9Xd_5>ugpH$f0{9FAvd0$l zMs^*kN08Ewe!XfQ6>#g_I0b^zlP0nNQ=VKEL}%rK#@#-Nrx2dJg!SU9fgF*;)9oK* z#v;C68v+_?p4o0wy3#Y(Om2ouKdllEx8cP}CL{g>6TbGemvO95$i zTC2i;6Dr?hG1ZQ*3(pX{t5f{EAP3;#35Yig$7!d{C%}1kd;jAOh1=r1J@$Tc{CqzL zN{SE&b25UwCjJBdrB=piy&F?;F!FJp{UlMWa~hml9QH|YHR=TBwxA@!oq&s@kHf6G z6UO_5JZCv~uy?}lGL1`$R*}^Reng_E%77~6(JK3!`>o{#2!b+_kdtt?RUSUg6{0(8 z^As+?cUP7Zx*xG+$n#f8936!oln{ez5N)~%0-b7kxBJ1>W*(AjJ&f>+!8;nhn$*TF zvKI%iteH2q>-|X;mz~Yoftn0?i~m#v(@#95K#oKRLdHJvM_*349=|}{%@xnmAnJRL z$qOFroe8uUymA|prbUv18HPsb5I9Cylsf*0rTjgWZ_-2A%bs{&%~{`}6-Wkxmc2P? z$rS%c!A=Zg^~%g*_g+75W_*yXN1bJIrcB&f4aN~it;V7EU3w-)y{GjIq|Lrj8G3z) zfuu9Jgz6}P=dhoV3;P*`l)q+pzNj*P{`@y6}$M%8~9i-ynUM@m20SErC6}`%Uw0QhNHz0{G-P~R{mt4|^;+`%xbc|P z*`a-2)4b^82WbtrO#b1+IcTaKqD|a7ffNo!urEacN=*2~%dR|o)a!iDQNgvutZ)Bsc>_6J%nENYVa7T7wRQ?pbl6k{gZK?WT1Q0j%DQdq zeQYW>`nWwQahb^^Q-)*u(Ffcw*1{p3@;2Q}^ctk2Q}G(i+{<$ytwwOhTc zVYzLfgXEZz_C057f5CyPLftGvGQ2eADS#i^bWVb<4s+0Euig~~Rxs*KdJvkT#P+>| zn~U?tE=98kFua5q~};RH7g&hY9Xno)+VD_gcA;s&e6KA!E8+arhThj6O1<4tYB)K zw`VablcVz`2MH=Ib7Kq(iLL|5lF9c9jMHWr0zld3Mya1gx@Q4q=ua(6BGJ=rWPC?% z85<5`{m%ve6J6AD8;J6UN)DbCjSnPJEo-g3_3LONO-ktw!q>#YVSNV|FBRGx=BfYO zp?^1h&ZtF?RGncq&7PRnY_`zG~?I^1i+4xE4y|EWf{P^x5)RsFG*vM%`d7g=& z9_9(f&;3o8&;)1}FlILK{0zgS+<$e0if(--1s9C5&cj!VcG=;0p{7WJ?2IFXn|Ka& z4k(wQOhPB0d0?%N>l-*oDo1cL>wiV(zY(b&iVChVKS?s^m@~OlX(f8RF3qF%%Yk;0 zXB*_~6)v6bFuf7Z2&LJEQPd!kSnM;fQAs69BDn2#_zpN24QL7{)I!O~AVbpR0f&g< zOx}kU2v#Xn?aeBljjwQ>!?fuC#qXUG+Ydi!Z}N4)QliLI36It1HiAt=<_?9+L>)e4 z#2E`@3!!S>naL|(bRhSr%mAid2D6@@{=mdj%1@6#4cYkLfI?QxB83Jz_7*5NkuRR= znU|-k!~M9b>CB0Z(P5#r&S_>kUV|sEP<jppDeNexUwn2jN?dw+Jl|(Y6Zb%^UY&Tr)SmiP|6GcPR#;Ed+9A!{p!?f z-Vym_TH>En3T~B@`G>Flwi9|Yxpl^&8SdoM7#>RQdPhF3Y@q+4&4YwREW;!|NqCkU z`y%Cm@PiHT{r7%_i}*Wx4UX*%A%gAaOUAv`Pai#EZGvm}I znUY14@_R|SMa6qA_$}+RNQkEN05*}++E!_5-B&6tK_@}98NO+(>#Eu3)S-RVTZd*w zbnlUCuCf~+5&Efy?rMCm*RJE_Q0CW4`Yd8hQhxnm3v%d(9k-|Zhs7Zi*g#65BDjH- z6%Rb5gpaJvYl+{~CmK#RIWR=?ibB1~dY{CVVG=eCU$9=9XaYtQO}}gpCg&C+7w!C%L?&{6Bv9LpKL`&~0c> zC~ELAKQ~qT7Ye(Vk~omDKxiFo&pxMKbM(u@vjoNnDs9P*vDTiuWdNN;%?8jYq3rzA z#^Mm^BU%kq3#!akK{1<9iWNzd%w3G6aI1#o5iwG_)5E4|lzc23OR1!!S$EQj#A1f> zJNUcFJK2tUo|840`*Vv)XWua0=XY48V<=A2w|RjQR7-xAL$U$!Rw=wKk`)%gOqnX? z4=Th5y2&)klSx-r&FT8G=*hS7JGCM6#-79&48&$As}lf!$u|q}t!jmL@R{gmA*($d z&(g8)))Xpc1qGr#L(VKvcwVdNuP;{OxINkB7%`MVpMv$BKsowks6syHHX$?p%5q}# zV5|n*7nxVL{Y$*Hs08Bze)SIxSI{2OFRr?;gR6lJSZ+b6DSE{p5kI1UYNbI(*}?Hg zELK;4!T%}gkUd|w;Z?D=>GVDooIa)6iAJ`-R_g{EB7bX)(z|U| z(K!T|M4}L1Ph^X-Fr+A5^P9q56mkag0JaVqRx5$w^2HH1E-C#n=qq$@2^%_T^AA|} z&$Hi>e%%cS8Iy<-b@2F$Afbd#U0~cacVbq>Z>m-tKwWJORW)vym!2{RCgA zNZlFtdWo@DM()?D?+OEHQUo@sbl`VK`GTpdOdcGryFsBskY|~sC{AvY zq=>Z=Mi{D(?wI=;C*ue}@*EcJiW?wv4<6 zm0CyKv^jIctJGsYs0QG+5NQQ!#}#y@T?(PZTpVDRX|kKeIyU2)0USz~YHX&QFZy;Rd!pry z{2{~V6)VLhF}!CX`ys2|PS7xyjdTlw3+cB(@uPXQ`_2l}(h~V|gzZ$y0RrmPVRUZ! z714eGclDKD^)JeM@viAMLnB=gVM-OW%WkT8N;Bf@0CvCdImz3gQLDeA5XBV89EIBmJ z@FbKhEsqaU z3ayB+nh=IG7K14?CgqDt)2;_bHaB{6uZdxDKFl4G^e%535=7Ah)%q~m9(trtEf{YL zgtEEZ#~QG2p!QP11p@1ljF9?<`!5qD27Qp|d75`{Er7gp6Lg{wT{>;c&Te()6&UK_ z1t`oDSDcfd*paKu$|+LZCD0{ah;aj6GgRmVd7=)v%Yq#!J7p+_s39~@6ujblNAP^E zW%|-9wMj2rv(>ElY*v;L5Z(GXn^k~<+|UIlV&IU^M#N?7NRq0IuyOFhg2vQRm+Tn^ z*T7Juy5NIEX3vEWhN(@XGFqWo1m#RL0E4^S#$kB#JBo<{OIU$$N~~^2u?-yBh4j>Mj2}L+?jSwB9q;ZD)f=M+4sB%S#U9DD8 zzXN2aDNOk5)E^aBoS?2>BI3oVndGhZEP99^DtcyYp%%2Bq9Z^wrt8#;I#oU6DVu6; zbvYj^jhi5t&-1E0$kmes@BhpjPoI%u6q>9~=Lu|@NGq)7Mrsa8Fu*-Dg`a7OUrHav z)J+w4SSOhB+zPw8;Bpk5jXve0JU*HGQcKzJW_}DV-DNu56JEss+uv93_9FCy)iteemM>a=Td_4C~o4yOpCS_K=m5;D?dQvLkBdnWA{gv($y8i?T!FbC6gM zhj7omh*|phU2tead*UeA$8`?sgXxZ1(jp>VGPMeo_N$kW3k8u6YmiUyxKL4POld8h z_ihkO&x)bZZrV*lKHq?PB9mja6!+fA(+ITwDP()eTc&Tas9eCP`dE%W>g(k~Hovjy z6zjwU>VOMm;$E#{jQG@ zSi{R*F+8SJiy(A-RqMl8fd42tFTj=6CTtUjVv^74NeTQal6IuVTV{W4$#OUFd@UL& z0Y&p6fvycBI&B^NO%)m2patd z49iDrGFly%WzX|P4!L){?z00ltKxwlY%^~&)l=i7E;Cv7R*zQft#kFn*G$zjRLnpX zEDB`Bkwod2SJ(>3G8$n8?G=wi(uCD|dR9XDZ3JuXW`EcK(s$nTOkba3lWq`J_ZK05 zC|tKdURB@9Dc!Cn-R=bVu<&$+w6;*FPs#dMcu`K7UrHMe&^Hv(Oh ztN%BeDg|MO2LS@YqEBP?*tClwt<2Uc?&3*Bi`c$ifCHBWX~7_k{ET#}Y{kLu7Pwsy zI+A&Kh4J*r6-p=6#j;iFAjq1qL<@HA90p+>Vi{=V(;?mJz%9RC(2%QwZh=1Mae1GJ z)lnhJ_qZV1X%d#?{%IQ6q;y}y zV{@ZzELxUcssIl?)+TrnZ@Xq~q}$#7B8-$A!{6W2 z`QnegRw&ggdmle{B5bv+Y2LxhuZtnjH7^$f@WCl-G!)QGBh0}$RqK_xQW-^aNQ-$c zLTNNg^U~whZD5E?TSajdSbvzNZ_=UXauDjA(EY6WeI1_$h2bclPTQ6ROh^AC@8ZMX>iWfw^ouWl0tXB*iy$Sm&8((p+WspQ{2{TlyCq|8Z zbcE_chy)7(dEv)Yd_mQ<>F4VzvxTr1pUTgt-juMhJCMlYUt=1%ByTBZTo{l&H))!B zjq`ituR7916wNapk4eOyxDeg6AxCw!?0f8H8)xLHORj?)I)$~}S8-E0(6#eb2}=9^ zhzbbjDa|UN(ot*E2r>)Oml?yo+^L9x1PUl({)RZ|Dzn!fzRQ!Uk|tyA6amaTbVqhv z(Xit4IT8h!B?~gI@%^K&YB^H}KiIiMwpstAR+<$5L=+Ek>u_^GcRdz$Ujx_Lw3P>a zxh175Mm>xg4s{~^M{TKTRv8C)k&Q7cwpHqZ7uSAr*_>_<;={U(`C>=}@YKyn;AL+p zP?6Rrz~*$hzn;i#g-3Ow6AnJe&|g`%~wF8meom<5zG(Jd6%}rjFT%6l{F<`>rZ*XA+;=T2GIH> zqOYv^R|-(9?LR^&PaZf%u>Z;HE;{(Vx8tZ4;vm{6^I}A|#CC)1WV0gx?7y9T?4?5( zj&W=}v%w#Q$WklYR81t^9??i*s#vwUG#ldQ#QcwZi`rZ zhV}dLv4@+AZ?}FGAb8UkyIY*tcZU)K1w15?_aHvl5^4)^sYXuxE4VeA?L6HcqsLf5|;|tH}y2I*@p|HbVCj%}}CJryM5D*8s zgAxgzC~Vp2j$;lwxj51aSVGbb5MoT_mPk~zyfSFZhD{C(=UiOQ>>;kw%dyYT8R^G| z`eY)ebW2O?gQ>KzX6;4oqv6YFDF;-YpuyMcl}NyKOhM7IO+SKI$sc9#!No?2vY>yx z6y&bnWsu|N;+(O4RR2Por5MR75*}4i|0nt+2E1I&WetSju2}B8Q^8PS{IE{m_aRN2 zTvpgw+i8QmIqC+eWX<~ig!o*HrdVz4;n#l`&UFUV zhJF)DNXJH}JH`XJ9jecO?!?+2%iOWHrD^Y~7L*wYOEd6JZgV{9Xn;_PsLtxD(;A-a z_(2JopWrWfR}XJW-hJnX8_(`3+YN*YJwb4aT98Hs;y1C+&j?Z%Q;B_Tp$Sa0Ilu^e zi$xK7BrCS7^Aln6KSR!)EWuGkdW6#2W)k;h0>kPfpyXE(*$b`Jna%a(Ol#mbt zZ7ddlDT)0iG|eIn*#~m5TzHLuY4&EIifwQqwWuB77_6nAdb~4=KjhH5SWJtIeptA* zCXxfayN-=N69;rY106_4tes8#!^9}tR=A9*X6*>RLomI_aU(!RGOUOFKAL>rs=2wF zBc6t??4#s>LwUf%Oq3#5j7>C~@p{M%c-HB!ny_>p{%v9)4spd-4+Gm-q$mXFa2*$jbMu()b`fE*& zJMF5U)t-PGI9b9}E;!~|i&MtDcZqk#%m_gPLfRY{id?fG=?Lj8@l-ZniGdUrqc=~P z=^Zx8pp=Tr1*X@kOaZwGNYfvWh1Wn@wk&dbAizO}>GE^msBpk0nG%af@T$VQ8VVw5 zAPw)&GFA0}21r1oYa@_`G2e~PXNGRG5z?#|=+5cq1$#(X(G@_-{%DWIOHpSs1uQw5ok{H<*gGVsLbkuE(E2nmI|uM;qXe=aMH znfS(j+T6`w6#VB&NSf00Du1tt%!@&vPH9`D=iso^a$wo94nc-Lo18NFwWtV;()7HB z2+=CI$f1X@HP)|cxxQ5G-RFk8RpXz6OlSK~At>%M3qOqiP_;l*TT+bT@VwO`?x?!E zIG6`El|?Lm{QxyU%D*~lEiYa_xj+uxFt2`ipg(f`1le*#QfmUV?s=HP73=7bnb=RN zy>?)^r=Pekjzl3W!d7>`HxosZ4o#K4HEU^xKQ`&A%bg&tZG1<6bf^LJXO&|k4<5n` zbo2vhVpk}fV@T66(*>Jo& zqbaGYqAk`{(4iUQxo#r;%y5kiaI(#^yh+`12_RJpYjw`~oU^FJO%@iA0RLiaYt`?$ zafcrjNgS-AR&klB<~}ZOBTAlC_oIe;MSWRzEPCr&>MqJe9sZiDfEc*4)I5~s42E9P z^~ED9;G3y@%7KJIHgxf(vbgdtqXqY!CA|Y z?4E98?D0tX1LLaq1)#0^7))DcT_AsL8Uja0PJCLTn#P`9=>O~mr5uquP+dBtg~(MN zr$PYovAYOiB9mx5Y3n0;Mb5z`w$m!*Evn3@q-@|YdRe=HdIFudszpr79Jo|yKD~K_ z_3CLJJDeLdf$-((O5SfFBHlQ*5bFX9H3u7KoF;Jw1+^p9%sU4D8=@e6T%N%U1jcrRAy>%F-kBFP|qR3aE&h)19sJF3j={cpFw0oSpM)=S)t9JHA@jYmgG!E_brTw>u#?P1!l>z?vBV)ba z{6q{YU9ViUSfQLc_fJDa#QvS_HarC|^g;onw09`#jQug2^?mlvGu2)zADHl2hc3i< zTZ?FMEwF9l+*37J#h4hD9S5&^(?nqr%I8Hirj|Cn80QKeKD+a#(SQrtAROBYh@*;c zD6NqY$aCxxPj^Frv0}?>)687ulOGU{vN#X_juyMQ*2_-PUo2q(&0`f5vlp-K_>?aV zGGY(d3>&dW%$>krYPy7QBCPmP?#Qs>esoPM*6QUus*t`*^@yghIHydk?gdIuUu*&Q z69peTq@&K+lE2@Qb(45cPujLOb(N_yHT}(a*i4gPXtWpWm}tw<<%jW`KxcbS-|KcJ-)+Al#T*kXqi3Db>%oMI7CUSQew5E^ zfs9F-?K+AXae4>g8WKoR@bs<#g|G)ZnHOy<+v%tT(9;ts0dc~&XQg)jm#Kp7gDzu1 zo`6PpTqyG*qlR20csV=wsMie`g=#^8xyo86j*FWl^ELuo6cs$LGTRYZGavzLx0im^ zySB7c1^MN)oR3b6V|vFVpe8gsK>IcqdzpncRfeDS5oLB2=tu)=KM0(FjRzWvx62m5 z%Kkc4R&xk+w!q@JgTRO1N7}RrZ4r|l>IoaGptvj9wwp?^^i^DypBL#nb0>H8_hFxS z_@=&|XiN3K{srovqvxH#i(Dlo_5+YyceP-bxZpLz&@*rp^`je>;@-X`pyNFZ`k}MR z@bgA2LF+V{82LBTmAsuAQ#_afqI5?7(XpIG{XkMH?lTUh`Q`%72ptI$8jC1Ch(2mS z=<4AMtR~}WI`XVF=i3XyJ2JBrGScjPhP_zWaI{0$0z7>bUC$;cgMlx=>SZ@%8vTEu zUvUZrsP1cj)%%R;@#QZ~9-lROvfv6Ah+Cg^Ra#?Elfz;RKkhrilA3C7(J_Q-ok+hD?IS03Gk`!x)f8}* zC?k8&h^(pRJzv(OjTyYYRY4eB6$N5#{4nyhTwmTb0>Nl-!t;HP>k4$bnX<6CdahAj z5;Pw?P9EEnakZo2a+59k=T+ui;@3)**C8~}HxpfZ+3<19puug3nt`^#?Mk>RgVwAhp6 zINViv&OgR?Mh66LIk$C)I`}+-8rgYA5tV(?NHkgtzP|xDWpVCmu^G?A5KkUi@C8$B zMf4APD0VYupr?cfs7qL;P+IDS({L~{jMG&=9DD$%JgtyRb!>V!BNF^Am-PYv%oimo zRNj*RB@(P&I&6T_4l_{28PoDaOwmV&#U3vWzfm`jdCoyVeBPH3a2SF}8YJ zMnRR3{H5oo3_u`~%K?_Y^Agd#W{%p?A)f`SoRy9@YQ|x5D^<(1!$d~4-mI{r{XwgI!+^4~D0RpkSk@c81vYod61#)`%hsC!h8O6e1xXC6E`F|inC)rqZ{sFeho$eJXtI*4XdGgy6rCj#>_CJIHQm~K1}Ei zl>dvv&aHR&L(wljQh1xtIM(9(VuVe~m62gX)T%H%daW(qbg?x^c`ANPEq@E5h-j`d z1GH~DEW3YL85n#=!IkqBo@`Mh`MO-q^+dyR$EPp%254k(^z21T^u}sVD@IQI zxvtG9z8DP}iZjLO=^M!dW}7kGJ^V}LYh2qMKN9UaeQ3hlgiUod*WBKULN5?8*lv&> zZ0p#lW|IH`XM+j~h1gjoTm*nsI%R~jJ2BvfaR)nT{aG!C4?iu9D1BcV2Nhy)u&$jC z>ZxS$(nn&eN`te6zygqZ!`n104N2D;t);^T`V?aU{LYPJm>72*0ozwuk*t^W;U!3FMr43LTEmD797U zw)O9T@2wJpX|}|G`xnhGM`u5V_n8j9KNw)zBx~~ZRC^&ub#VD73Dsfy8F}B+dw|~! zIk@qhW;LjNvitutRX&n&nW63y*gL{a$dTMyeRKa|JXWE>?NdI+HMPl(R;#1(&vElv zNRwQz1+FA`-78N!1mxkXe)XJ(?N_=&4xFBVhbP_v5APXoDIY(*k9%rkdYlJ2O)&?< zx=id?4F^Z!SMrvfG!m{;KYm{eaF{^gM2y7@gs2`BHP;u5SAoOauK~ztrdjLB&6^c} zNy8an(4JC;-&y9Hbo{0)q|JRG0^X?xhR_%TVe{EhheX0StW>VvKfCD}_xf9cp|N%d z3+EGi9(`Fl6-d?=%wm)wb&~VaA24O)o%HVvxCTTCbSoV-W+!4L2lG*+NO+L8y~cIo z(~Fs+&~CqAY3A0)EEZ|ndj`D^eOdSlqrI0UHjt?*()j)(6<2Kx^n3W5Vx!LgR>#aQ0KXP zvoyvBcwTCHq8Bht$m_fl^3BoA#MOGJyDFhSD(b9Za3?d}pun<}kvO-5@Dg@ryb5eT zinWqYL2I0cIVYxS1IA6r0_xtunH3*ctA`MH-Sc6oxeULM;y62G$C=R*pEl+__cjjh zRz8-;1e@Nak;V?fv;F<>wBYK+uWG_ngNe%3%_d#Oy%~MEZ&rvI$Q{j==S&s5!9;k* z@9TUOO?C|rU^zIFLpE$&iWN9CRc^Q$Jq#-R`b9UTi~Ez^)dT5RINSh3KDWk2-Yyer zTiJh$?iw--=%UDGZ)AWu6n}%Bc!iqQf`C@*{^OCG?^N#wXR+tPo-OV_JlM4E36ADk znd@aIMg{Y%7)HyQjhj&r`Z7oL? zM4%{$;^_BVuF&KP8Y+Eq$T&pZZVd%ZP7ZSDJ-jWOf*0AERe{NBmUXp*k=OD`Q!inB zwwAuS!AF5++7ufdKfhKiS?ZUpNcci`5;Jtn;`fo&tQ|P2){zFC21V(1<3=%UP6i76-Y?C@&$vgOyd0GWJ zH|y|_#Zs=@QH(&iK4JSTx6rMBe~hvN-c8PbJY8h1t44=2RUlIIH3ot7u`1I=A`-dO z46AJ1c}kZUg^Ys&S&ylT?s1OHU< z(x;Q26`z&tC`P28xx-!Y`}4#VauKK{yb{R_{BK%Znaq7dfn5f`kV$^=B{#*tIpg1@ zr*4-i((?R7KQ^U$fZt13y?NJ8*FIju{}}{(TB$vB2;S_{N##z=Sn0B-Xh14hKq?6 zjxi=_+)euh&IytFb7|}-9dTDS1N{4POZUK61TpuNzwT89*yBN#z!T?`PZMc7a#S*B z0DX-$CcqrW9&>M-f~3V(S{bC+kWINAloBr;crWK0kyx3ajnvzCVon>tG>~g`ut(88 zTp8|WrrUL1!K3OEaL`>e!!h!%xlYhs;qeHxNCpkt!g9m+iiewF2-qfX7J zH=3z}e|UClN2%JKqLC~9UEk-qGZZg{P_u^tS6}BGk1s|(>v0*mp(uFfL0f{B%6I5m zy5`sUwx*CRf!S2rU~HU68|>t5TB}-;Z0P4lR7(0KX3s#J)2+F^DqSN$1k-_jp}6~$ z-!rwt6g}J-9IQaYh28a_e~4*{NX?i^x%zR?q;txgkc-Uu?>N>nRkTXc)Y!xc9?4PF z{>pqq8E)*VCgKS%>4^1Y3v>WMbbs;H0hZV5Y^v6R9a|2H7bl7lX2pX;BKWQJ8|kYq zi*;%XcMR_ti&h7x;wzmoKn4hB%1b$KF)H83LUB(u4k1$g%+o1^b@Nw{(z(+zWZwH} z=ND(^Wl6P>9oeT3`h41XHQ6LhePe`g%Cy$%hjwGw{j`D{-_sE~b(bNg1BwV~>WKaI z=#3H}4F5QE;hMWES4kbIHNqFnA-JZ|ZT&5lsQ^LQ6l+i$_M)+sEmAtcrGsV^y@fZ# z_3sMcC+qQvwm5cUVWcskb*Y6o!Qkj%`U4=6bgR4fL^e@Oe@dQ?D)RoAJP5M-!L@R`}&2CdK**FP<`X#OS88<+G9-(?Z-4Q4ka1kH8Q7cM4};@bHL@vS*w=;Mq9+esaL;Y{%e=~^ z(#7mDZr3baXXg@Ior|Ffg9v-7-4UA17fyH8xr(CF(%`;)DS1iBCwwr_napThL-Wb z+3B*t6cG5n5Ri+fE+kJ|l~Cl;^j;s|xon7ps{Ea)crL`}GD_7>)bzD5F-8Z@Jqpf5_1kShJQ5`TP$Qa$~E?v?=R{WSDgA2r$}Y zK?KV-XZaeUD?oF(6S%2I|{w7iqjLqI0iQ`TwAXi?(WaReUXoih@n; zoJ+z_xxnXs-2gBoNeRp%T2>D(%iYhk+UbEh^rgWn23Bw@UR5`**Fb!TfccAtmfjcE z??2@g{%Rs&Fu|_vQMOWzem?P84|0p0F{R#ubd8aWbZnMFCr)K%^vw)GxCP1$V#8Yk z5&YlA(4XUupCtRpC-AK@h{3TLfFM^wbbsT~q8z*~9A4mZc<6nx_pFE43Ia19#;>Um z|HsFTQ>Z*@T*DjEUwqG1U$KW)r53ulwSXY8O(Hu*nJYxxHoL^X3a@Li%N~5$_C#2v zC&Vty#T-6SmU1(-nn$ewF#Av@SM-x2aAP2u-y}k{w<*-X0X!K&k^xJcCsSUxoOw(= zWQ}=z7;eFWxMRy0I&m~|L=!qe$bEb4~ciMRJrk#iLK}v-ihxLL@ zDE+ygAXFd~WgSG%mw>mNC_j=)K*h>ec3nYcYJ0)Y(2Cz4_S4-{n>!44QqXIXL4O@} z#`!h5*4iq{We0snYy_Hhm&BS?bev5IG1(P{v#vK8_(EuMVUb79oPS%`TCvNh_TQ`= z-CX<^dj(;#9HlfOGlTdBWe^OS!jbTn--eHVL*|ofV|-^Dtp||6?tfGR^do`N-zAUUp9=hlO1eaj6>g^PzPa|yf&Axn8A00|v&@U$g50fS1R zBeHt^77!Ehr6G`iuuRtd!S%l+kYYWTr=p3G3;h{ucmzZ#i}4b+ zh95S*)MyZch@s=-L9f_vRk4eixP?IHB4du3{3QC|B$#xZ=((nG!l#hu1C`1_Nd2Vr8@WD(Cmh;TCLSH7?5Dj*>NeGS3&M^U2AA1W_%g; z1LExgjg1)Y)#FQUH$CORlSoR$<4XJ*@?%p5c%6DhK9JgjLA@l7;=+X!T4MAo&H8jW z19fYH74nJEsam^$dVB_=D!U2>8G7hiXFYCpx-bu%@y41E##zqlN^n{VQ*-9a*dBzz z0JzQVT{UpcXh;j9gR{l)s?>3Bhgm?snWRCD=yUb!Wm;StMb3o#HkqFi84T*^w6Rf;Xu2fsB}YG;Y62i6 zUF+5ghv&hhE>hW4Q(XI2v&^TVJ0frefSWMBzesSB+@H1ecOPqry8(%iCF)5uhL%(k zyK{oMbNzPC^$4OAhJ2~NVx9%GX}rJJO!+LSlDJ?g_C8^zr8!-$6)(^k`1Z3hQ1FnM@6VFY}`K{hE)SMs+Q`8>iD*%G;Y z=41u_4j>7I9UxM7wHU89o@~BxtA9-a5gXFiaTKw3r5%}{^8DR#ptZrOfJL=0QJX{B zS26n-^SqgcZ z5S6CgP9F3xbxA&jLVs3u*MRMzzuFjA?__Yt<_verycWjsnELsJM_U2@#+EF%Pm+p2 zL|R0~;bxEju9<4pQ1pcry(n|XlD6cojH!JSTl;cDxlQfOuRK>%&>HoXagJnsiD>0L zOxvG@qwP}X6QgRi9+Gx6^e&}oCwj2Z$2SC`o48cVEaS#if$&G(-$uCdI=%Z6DmvZ9 zpY+-yf27Hc6=8pb-$bT8&K^6`!K9jcYtsRHZvGuWA57V*=9h%sL4ro|mIMIp8 z@|Ld!$yvpdT)}a}cdZlBWM1y_N@V0AFI&VvCoFSh6WHhi!lz7l%7KAUZR4i}V+&Tw zP*GJ3R;(>=wDnn`HINkhr-;BH+5GMnuj>+9&^4PXCIoA3!8(iIP!;6Ppt}q%rvadn zvx42u35O;PbN4r@hQA`0iz8GGDn9s*-cT!TRCO?czB{>QI2mygxFGH+Sw6ptD6t|y z%;cx~vDHlm3Ys#=0D6|ikk<5ql!Ypm!#Po8&D?d5Dfar6-po;5RQA}0WOp? z;=mL_lp%&L&{}}1YsPtnWHNp0N_elY^;Z0k>ns`VzpD9fiyiOwHXXL!a(+rWKM+Jk zG#sFlhP&|ej1v*r?SPtoh(Y_?7`2z*$dcZw`0_Pc;+WW?A*Dfuf-+2dtK)uw5TnTu z)GWDlZxJzIQY6h3Dsv4+zIUr+RIcJ_qy4(~uJZ zoUV|1l9K1o9vL+P%s!q7o=n z_#^v-LJ#G(j#|whuW!M22V>dp0>*EGqa#}j5CUKNp969Nm(FOjgLzS!;UoNOeW1JURqB4D7aST}NE#tx&2(T9mD2$%HP-;$67Luz>W zHK*FyH-cPOXMF$cu*kga4oi|ybiKL#-CQ3&Ru9UzVyA2XegV*8eyr*>+O?;D*2C;0 zxGsg4#*(+MP>*d_9$#|V;d`Qa1S8WxMUNus(KzXmn2D=eULG(eZ>lFzm2C-X4iXCt zW9S!-FNN(tKdZ&90IlDDs(iqll;95BXQ=O_DTv&>^u#6TnjYrws{5jpyN>I_=^FC0V}{~CJFaVMPen7p zB85wYKNJirGoHtIBTFp2pc_l7E~vNfuf3YL7AdldK@v_foiJR*VIcc>42}nSXmcEc zIlxC5>&|yuF*9MTARgJ=Ulrz|Zpz+-6Yq=+HMOF-&~Cj3>XdfQP^}-GL}JV_o2dW#mk-$*r?f}?Jy}wIQyQq0;|`Q z;gt3(Jz4e6+Mr(a-9V4XK=O&1yUj|}R8N$!{}7v=R|f$SVa3u22EQ23S%fR4+>ETx zqyU9M#9uGhbI5wV>~c&sJ6Yrfy&Mgy_@+4uRg9)H>a2{qfN*NJ*LNp2N@{?c(_mzNhBY3g1(D~ zWDli0eC?7$!vL zf#$X?VlDMMpPt)suxVg5;k2c%Rm6~EjBsoU`{Eu^%#99IGL{sM)!1hNc0_L;L$x=y z!re8^xV!USy}@?UQnNw|XY$iw9D&h#d1jtB@*nnRKSb$6W+OY3d>|69ca8kO^l{0f z_gv_`V4WhXrj^R704^G+cG|{&Zv;)po2v`7&I#HhYNBKL(^FDX(|YTS9#;Mya{ZYK zJrUBhOvDaTK48WKHz4MWwiSF27tHM1Vd z9k?61j{|>H2k5a>Ple zky?z5N_4EmKlYj+{Zi~wGBIWLsykTbu%+~sCA(I?$h3t;@b^mH1Np+N6z zp2m9&ZMh&d3#-w=ang=RNtPZz1!opc;aL3hT?5J>hil)M8g;v+aTMlF|4ErU?mPggmv1KRKo_)nCs zk1@G3sa)=1x~lJPu)D_%+RKzdQ%)4-G?J(OVT2(b#qm@{r8_MwBs14h5hyv05$ZK< zM%F$eP6Bo$o`yf_mh0#1Wi@Mg#b8GfJk7K;o_Y3?0bfCBO`V3>*|{b?k!FrpbR?$> zlwUfp<;AS>>Mhho@#MVQt=2AwdTmry)0^HK+t`P)XErV)g&0w_Rgm3m8W4)DLtSOv zQ};-~7ljVmEBEbIlvIVMgyj^*JHA3Hjh7QELB*=8Ls_eaFNY2UMP@6SHRq$~IeAR( z@iv`+=)C>?AJ_)`Arz2{AB!&cjT+$JOctrIm{`>0!(dRQ$@}3{&o(2T5nHg?(>lB`RaUx9_nHO^lw|oHVPXQ%)sLtT!su`(mZ@kxcKGx}fHvoz~ev>;c7pV%$1& zxi-{GM6HfgwL}yuG0Q62b3h(|^7PTddC~i83qimf?DV0lpYt%lJG2;vJS<%6bcUvA zT#3&b8?NTJw)I(WCn{hdddBw{x=ZLUb|3rCr4{(Ml#9F*OYH9@f5$~4I8U#^&Eq^H z%7h8CBWA;@%nDxv)F(^q#_zBES)@hLIl{e@{jk%@u?w<)%G~taZt1-_yF&hp7F&No z1i=D#l%cK4+NWC+D^EIXl!y1l93QPe0dPSWAWF$m>9($pqPoWu0#%ADlPJ1&1kT+S zdqe#H*(f?q7{zC?m@X>wxu)BOY3^WDE{(T`OqY=>u#beI2kCBM?HN9zH1V(fBYT<& zpI`eu%(gQU$KZ3VpnZO5xk9=0Rt6?ny6ENy;{KwQ4FOxO@4q+A)`G_E9O_lPC{hps z=G>lt4e;Eb&G*zJ7v|kZ)<+mEn=lua$G2d%Fu&y`%6-xjmllSlRpgjb$3?XX^es6L z6{q*Uz?Xd+H|17K_r7e#r3f>>bg%J%FJSEk6~Z{F|fes*B+}#4!o16vm*0T@lN3Hh%w-BgmFF zzhSd2$d>vC6CWMj>&!?4c@ky7QXBAIZykm#R_kX#nPM^?-za*T6ucpp0MIt^REdXz z%8YbYH7Try+c=hmY|5e&60G>pXpUr97 zTu#wLZqIrJeoO@ZljJ**=466SRMj9>Oz)1UXIcLh$X_P$uVsED){s!8c+mw#;7g>w zPXjW^E`uqBfw<>DmQR*&U0L3Z*aS}vy2pEf1kk9e*-O+ITt!h4*Ov9$JLgh8=oenU zIio(wltEZ)W?mrS@3?+hR=A~M2F002bj-Tl8 z2k_lf5Y`Tf-&tdG2IVl5EAT#P#l)%qwLy2V`~nsH<>(1gsmNcWVPIWU6`tEdrkA=i zZnfp{w!#)sxqCWHBe#Oi@(6oqfXX)pAVGdVjh0;6y<^kj3iysieF9(W%H!>)1T2+2 zhTW2dqqVgp1A+v}T%ro%al#1!E%}E4-`8siu<$>Yr=#x`xA|Ir|T01;m88Xm#T;Tx03dqru*#E|hF-d+hkwZ6*(*!z*c$zAvv2hx~owvl8T`=nakI~%T0lZV<{eAtA z$Qw0jk9EYR6y*stUg+%O?~)9rkjQSgJGNUiwJ;62*Y;~e$R&ZbJ;2?)rxD{ILswM_}JfJopP|2en4_@?^ z7>+Sq7wseIVI`bO5Ed^KiJ>XMAD~bVdLZEq|H8A=!CZkwZA1Z~k2jN#YXnH3N>!Vh zMDl^TcDvr1o3_Y25l32Jy3q(`fi z6C%8m-o8iQ4yMDb{jN!fRrz<{gr@9#(rrWZi<UEifFsM(OMdt->&Ogu1ft+k| z`a7ObFTwKu4I9lVso-Eh*E|Mso!Rqff)0QVdgvK^41ASr8*eIyy$T=k z`#bM*MgS(uW54D;L9NZ-e9K`h5ZcQ2-CgOYc zD(4`}(O2mf=T z1Z~I}oFq;vzAgf?Z2R6qrxx%+a=2VEl!BK>9IK+Qm9WABCSP8{kO23aScMJz7fQWM z@l8QEs-eozjoxA)<8<@Q7Faf=`4u%DDY`v;VKlFLeKgLr&LYI9#%l;dHLPCkcqQIl zzNAn9KSlwLKgjqR#|HO@UH7{U=dG^wQU)4^8uQYs)FP`zn;OMb2~B0|G-`^GhwJBMk3^X_UN(M$DaX2F9t^B9`Ifke)aUyKhk%;Jh~*Y^Hf-}o;v zDW$${CQ~Nmo>+w-2-wqM1I7R!Fp|3qBdqsT-1?ON4BVXBz4@*-sRU7T)=%f9K*v9w z=V&df3pRa7-DjufI>srBndQO)D=ew84xCon9;Eg3R{@4~kK>b6p?Va8)=*f7^6&RH znepNyDw;zwLHYRV{opi0C;YKKgm9xo8;+uDj(-}klKn4Vc3dnc?yusml{DNFhOC6|2`6QMWPU>=1_s2c>IjlDzOU_TAz z6HHYct>(H8bU?d&^~8xC*P|>`=eLAijC=zoTe%cyp`Q3ETTXDp^$>RbL@0Wsd8L(s zk3`S(!6LJtZviiKz3bJN1QCmzFMV;FmFaZW4FX=x+6-1>EYs;U+BMw{nG95xO`vl4 z1i>?i^MQ59fXTnNcC{5HYFKR{WNczfJh@Lku=>3*(6~JKieOT+tp81bO?-7&kkV3FL zQb*=k5vs9OX@&A%KYXuxOc$eg4<3#7-J`i{8esBCKS=IUw-!W{h|@3-DrtMz{wxDp z)lfj1NZ`4r!3Hf&99#wXO?VZz;7iV-@uVR}-T%L+Oz>lVzQBzp(%ih;m~uoalVPVI zxU>(~7x`kpsVT;KI8elPO1B%GVP)expdpABrO8OX;ZS!8WtSFS6dP}aqTe>U>9y8& z6;1U7gM*^oHaNb+iBCL1GGlvLM0S5EUYc;yxRgsn@ZaYA-$)1gD(dk^V9Y7?u@7DcY|vv`dV-fRt&e7&s+r2_ zvypK3cAhhV(y zso$6Bn$TNEOap=ETzX{n^**%#$Ff2O|4=zzh|#k=oJymJZ>t&;D>rnG4do%oCrHCg zH+mKcF*7QHg64Vbb(niP1`VfegAZzTyut zRk)$igqffIJo+VCQ%a#`(fCfeI=vOB-P5y<&?PO+k3Hf5o#uRJQYuf@B;(JOB})`F zj@g{X&ijafFi9sy4=)N-L>>WHNwPvNs(zDK`MVh0IW4bcqO8qiKvVjx6_%0oS%EC6Q1C70t^Nb2R?c3&Da7$K%T1$)DXQAW0SgOlm*?@9-_xj2*g; zjC%k_jXQD^BXPVw>^ADVE|9vCv9mv`P2Ehzt3CKEW-=0y8AKCtq(T&Amp1HOq+M~(b&`GjBI@VdZYV^CvOi^H#(o^2kqjSthu~nHR&ad5L)gMc5{OHXV=lLIT-UGi9%;Clop}@ zt(k#@X>3+J3d|((QS%|S-!*HXRE%uBQd~#)mUaRaIS%hUxzS<9U@~M{eegFIc2{nq zgQnh(-6)kHW;!1f144q#X2*O0*%fJ-Mi!l0M{vyNF{(_tB`w-x>+#Zk8z3%OyK4P$ zFNVL;88=Lqitsg|AjE_GnnuxXn1mu=Z_jbBSaj|)stE`?pN=oG@Vi2}2q_s5jH*A< ze$eEkwELUv{*%SR8&Hyyi)~Dv803U}r?xh%Rh90c*GLIrJjKr}B(j3T!%s(M@`vE3 zdvOrA*2Ddu^AVsc#9+KEJRPO&<0pnok4sIpC{d+Y*0FmNz%6dH3gU*dLS{L$8~vu| zYfO>KqS}Za@~g=jPI2)5U0(g#upbVGCi6*o(6?n%$B(5-q{^ z4mP|BNUV-w#Txg_FW>5^kjFjY<>KgU7a?G zPR)tTD)Yd@H3EX#Da5d^)@g5`+%h;8XnhN{Ef)B=)!onESU?wd!?U*Q3m+i+~o8j2gqvunhu~WF9gFaEWjyK zSvXI6gnnj9K`@14Xrl*0nxUcX4NAtor~cCWva#lnL)}JRGD5+xdsNn@v`B!qtht z3k?KBQ>2o3`@i=Kx@r7zeTk||WWRp7-AF*|`$7O7d+-X*XHJd!Cr+onJc;Mert zk$!|j(gO`*slK%X+uDFI-Yc2ta^4jmwp5SE{FH5(8okF<=JOkOU(w6eO#*bvS(^vo zpBp+ZEK?1}rtIDUudO>Oj1;!?mRsF$0Hr}h-iYnmD+L3T#*t4l5 zuriG%{<~2Oc;HF?$&IEpMr>ImAGvJ!O;?_|D-LV?$tUSTH@W%`$HY#`e?Dj4p6&@% z)6q^#%|2?0I&Vk#gPSq;u4UmbsvFnuxk$nPAs5o(8i8+V^#LI{EE6M&Pn|~OV532K zKv)u^k82uV;usm)@&td7XaqTu1R#5pXYasf^KjchvV?_)i;!b#48$?CKb4FxvL_#D zFD{VHp{;6&B^a!ryCM2(G84#sO2=g@-Bk;Q4^SG6-dLWNApojcTj3Q zBp0RADPbYx=-O6&g&A4dg!k2|6XvXJ)MRZmtfR}d>m4QDI@f9eY`NAAX^^DGMWFa~ zus1TZt!ppr143I`b)M_4X93hcr*uLdIr(s}M#FSVcxH(2r>Z zuzg6hYf_F#&~w&LX`SG7JXD^Jg9BB)m~355=6dtWUx!cNt7m z9MFgF2t*A|e=tb*a7WOcRWK#KL*$00y=o7%%Z35n=QH`>5>rhy>x4)%zzo)$<2#Y1 zuItJXSiCSYDW@j20V#U4*WY3}8k}<3gu-R+=346@XLM1U{hs5_s#;TMGgz@_@{nlk zDL<4LT?{^|m(`*cg)S%NUpN=BTfm?Ii=c%=uT!(*kwaHFlYDoTFY*~wnzg|E47TI$ zG(#Jq6TN~|EJ+RsSp51f%k|<^^6xMG@R_Kz2R6s6MMiAEg^-3E&$qSXh&ny?Ce8eG za={e5x!M0ra}SD?7Nb^l2`V?&qui^{g$o{;)82>jn*(u#W=ZwIBngTcoqKJGt)u_4 z1XhZG>glySD;(X*v-HzCNCGuXw&fl!vBfTLps7Zp`0~c~3!<5571h>Vsga1WapF?9 zZJcitVV17sNc$AOmw0n@J^B$b0oT(NCZLkQ5w;b*C*ojoubdr|L z{#`5uiL^FalmMsr7QRZ)a;?w84EzWNZ~sXei& zo2$Wj*(H)#OZicjU~d~cl|n%7%rW3*94{Pc6d(o!#%aXw^GpCa90>~p43n1ByTwQ? zkakXQ`_CXKBv2(J_#`X_iW~-6O4O~oj8AK4kMTd7tsFdXS7=O!oa=UqiKv98c^~ca z%FgDH69w@}w#%(<*DV>ucMdrKpx*E_Ju1Omg&@t7ehuEybOYPdCASKAf)5yEpHAnA z88pAh(SVeN#&3^Ut=<<|$+kj#xo_gp7TceH;DQ-rd3)`b?|?W+w|d;OeM;#>CHKXM zs53`QIH{#ySzFDqAG{hiTo`L4E$U!ilY6}woFg7a)@%l93EqBjQTX;lYWnJbi!|h` z@LJu_9ISVBtW6Z%dR#}bPdbU;OwsrGSD^rG84)yN;sQ0oh5JP8(KWpNG%Dez7$|9l zsZT=weouA*SdjCZ7&zX^7q2gQDiL8nS8$Aw-yCxUW7kU$+=!{{g_MWA$s;t`T#p^; z=~W`>jt{3%FaJ_Gq}ww5l|e!1yNSA`HkMq5ZMc* z(<)-Z+ZA8l24jIRjF-m=i%$AfUyksu+M2oOYbYw4@8KIk|~?kPVoKrcB>=8nC3_u*h@sV%jOh|@#pH+*Q*?p zm3NVzW6PsmyTep5!d?Q}Xg!cUN6&Pla}vOf{k5ja`Ba*=zX643DcEjbv}KNB3Gqi6 zAy-bzO>6#JFunNBAH38)@$ zh%Zu&N7;%M%zKh(9gGlbKzf&g&($KiXs&$TJBUT%QiDb<jHQxS1x&HKn{bJ{d zSDeH|*D9?}Y5N1yK4383Gv@=^2fnWDEJJCnD#!fDVWQHqY*I**QTeI73*Amzv|Abg5@dr%9wQ&Tl zx`4}&`cBW%i3y+UtBv+uS?FQCyc&g))%axA15o;e@t8Cft-P=p`+KTBGJ8bcutj=B zUp!PyL92jYa1R1tzQUxdV1}71lk0+I`#ovXw-T$gImOZje(u|nkbBMh7S7~6in0m( z7O4=PNZwFfMGag&ukw6e#yDo5+z?>2r-=H6drUVcIHPVJ)fiZlm{5(+J=>l`@Wg=` zQtWfl)cfe)3>7BW8nl>ZH!e3Q4^b{I&r)9(p=R@JC+6Lv0#V5KD!IRQ;JkQFX}eX+ z9!$8I3B2P2H4lhM={8ar$a#-q0xj{cy2h%^v>fawb&f5Y5VtW95qtN%QNYj7o374t zK6*=gy#*q3Ia?}>iVj(3%DcmDrc!W6%ZGalF}&aLQj?)1J#6_zzMQyVYTGaIUgDy6 z0IpoUv9$P$@1;rQhww&~(N z^zKZ>S1~8|o(WRo8(untC6aeE==$wn z4bi_3t&2E-;127D$A<~pE7BWAw-G&ES1M)9y`D`W#~Y3Gk~6W1v!d#oQVsQw;Wg^% zgq+yp@Xuwo7XoSar!U&2t0>BKz8VggvkAs=FF+%vstJC8oe=tThAP;w|2h`Eeb4kX|Qa%+Uwf1k;oYYT*Lv?zvK7w6B^pR&y3IaVN8l4WF(|LNM3r z78V=k{|;HRcJ+T-wxhPOYLP98HNyO0%QlHvrzeUOu5rOUBplGR=yAt-^}IkW{DD=v z6BZ+cVE=Xx3V49UX@!$?e41EVSJDHMyc}kCng4$1csa{j@6Y{^4^-iME%epofk!YP; z5*<2w>F_qYr?##~VH1=ospYDtFOm1)SWMI%4T(Yhc*Wlv0kdh;q=SAKk?bMk=qn=Z z=p*A73D_x`8{M2%?q}1Pjuyvo#v{De6ZKl8%T545zaBxwX|Y;ot}sS)`fs`#z?kv~ zDdbs^l1cpO15zl?Zhw)pjNO~Ad^Ml3XQ=!T112i9Y|Pd${}&N4u**wgyy7KG1e!}G zUE`oF`&h)y4YdlX3r9NCMtD-f7DdZlfQIT8M`#=HdBJvWDeBNL$gMdUVIi&60rZz%;dP}f}Dj)MIA?{l6|DR(mi;wvdouN-2#VT z`sooP7}@5TCkQC|t7$yfsn+3Z38=%wD?PFRhp}OFakku18=PZd!MGHwXwP465+ne( z<22Y6W*1*_z0_Mn4JGZi)eNSv{=*~^=iljQY+@o_TcjqEy*)it20KN52)I8k6X7dB zQ=ei1pB+E-xt`=;*>Dxvs)LwG$bv&p6n&K&*`&O}w<<4Rb^#vTl`z5n#J#KCOt7Z! z<_&R%^f7Gjo>o=X!LRYDfv`PQsm6ztt40-5VG$4Yg8~3_He61RV!grw<}hbMz=oyx z4;HRVo#4U#ZUmZIH|ht9A3MS6bnLMs91Ob%8#TtV_^OyvuZcDdlf;`+t-Z9J=_8O| zR_E0X7TlSch|NCny$>vIFDlpWb53IVN3W zeC*xWBg3-h*G^bBr)dG+T=Gi|`v?da?oQ3;ozp}?VMzgrUNif?sraLX=K}Zr8ujk1 zTOk{MnC^EX<&->v@IA>Mf10b7O{F*7>WB=fs>!6EmV-T9XK@sq2xZo>g(+&UPRp}- z-X`Ga6I>Vx375+}&aDq^tzH4HSI?rNimjI-5*>THTi8%D6=Rase=nV$ZU}JQsEPy{MAu73eka(N2T4E zOV&Og2)fV+18Q&uL{M-+r_uFALeLEy#D8dTAhgV>&+SVO>WXqV?zWB02V`JHhHPxq zbZ0__TncBFS!d{~V4^_yHu}A-NfKI$dv==)x?X7yk#O;<7)`7<#kGb(1`I$^TP2Q` z>6w)dk)7C53H)h-ft<7DP;9f+E8o&Y#7kAzJwEZqiq*A=y}Bv#$TM-8DAy%Zd0xNz zUgJyQr3Vj3H1C5i@uT1vE*f+`-pm4hr=Z%Jp^Hd)!2g0)YB84T*>m}BAh0D@-XT6JJOP|!X`5t z(GJA=i5qrG8jD?wCOY=`4WG(h0d0J%QM&7hAn+I6c89P|K~X2vQU`GxP2L54b5LH3 zp2ar14~l_J49+tul|q~e4fE8n4eKG(QLSbt5kYAl6C7};WJ9Ek2(nwcrNYhtY9lqW z04l}1+iyiN+(={ennwUxJnbhOXDBQkx`7n`O}gJz9F!B|y6Fr)TT>(G;@4!-Sj>LHkVHNh(8mezLj&G`D! zism&6;$cCry1KhCnO#y+L>NEcmVLOs=%oNF0Xj_{g+&vjBRoJ@Q}6G_tRvu-%3%aX zexy2MaKbalQX*sAIz(W6l}sU_pe?%{{4+tq?}U|4!=t`5#&};bk^Z;yT&U-gu+^){ z0s2jMAF9E)%1JHh`e~j5Y=PZ~pC078g;4o;luj)WV-)igI4T&_6V0k}Ivu?4!*`wm zT=&bUtFFLudE{y+*q z!r{?+T&k&f)B*Bv>&rD-%pQXwHEiUi_C^@oqi9t_CbKj~N2L2WpfOm#JFP($*$Z1? zR*vO^JdsO-VhV`_Kaz54y?FIeH!4I7m9hjsLks^QT>zk8{cx!+e;(L4M^$Td+~hI2 zF`jKtvxK2>fYamVDQEPJQ6yz!NaST5K5rBcOBlpA1(-sRsD5`&((cbgV|{HAqgw6p zM;!sg1h*#aS@*eq_}uQsW9RV^=+9~)a2)*7k`V~!q;1^YH(|(n!yu)GL@P2Wm(e z{^Y-6!-zU1W=dzX3P8Yb!6O>?4U;t30^bE}TGTpT=a+M-W1$>8_H-cwo zBE|LvumHPiq|#6&8ubWvH!$ z3G^`V;Jk7QjcTIlq`GhvmSF{q@L6ycGU>{Zqo=K^vo)YmH7TGM!9vmrR*j@_ zfd3;kAx$I89+&eL^@4I{3=DHMYX#AuHJ-#EzbRy(XxrE^lWc9Fi^lThLNXyD_)5pd za(jx!M_>Bz5d>w&k=D+mb_$x3($5Uzq7}ur!dzU+)Gec&xh$s#s^=tsqh*zqq$oIA*S~EW3I4FuV!L2UUnv#-;hhiK|&e zyUNkcc{%t@cn2VQ)4&T2z;8p;~zzn+ksrP<})bI;2LX0jAVbF-$s7#-c``Owdmh!nP&e_ z2p?dYO-wY!)9W_&c7b9#b;b%<`#D+0-f&;djiQ~cdS(X9d105jc!HV!eBCsa?s9X+ z55@WjT+*s*Y83o|hiuD*ZVe;3X}r}h`__Y~1GTmLx%~`zV>??*M_$Y*NjY2!TJFfZ zxrK|6;M@4A*2iM`9(C+^!WVNApaNJC-2=GA)KC=_pe3GV{_z;CJuI?}6(6vgMTxj# zJJr73k%vB($9P}WxrzHjoA^D(ZER4(0Ft+HJXTxkuT~(dtIcJ@Q15Su1%K=<`Gz6d z!E#-#l#bx4u^M#|UJibH?)a&as;)xGssFL_x7wS}q3WTWqPf888}l@#6e(o@5lUiR zHz4fKRB3DKKPC@gOnE1n?n6&L3V&1Mx#){o;T^j~V2@=zZE4mkhtbGX*SRf>KTc?? z9aiwCp9j8feBU}EJ2R$s4US8ov!Obe8ZL}D_FLQ*!uVxvI;4;+%KYCN^Vg0GYt|{w zS`_HoO;^7u-lsYU_Z9U< zX_T9Eayydm)Nw4IO`LJR@0Ct6LFV}@Ncv2G(+!4$ku-x(?bX0qk%k+m83>NE&i`LP zCOg1eyZla_gBfc%(l@S45iQkI-m1l z#xOiAUj35>XJRP>hK7f71CZzkwN-mT%1*IzZ`|IFS`;5=R4=YAk=*+q2hhf?E)G|= z6Mmt-Pkx)=Swk0XdtmL@Lgq|j&pC2(XU zd383A^RZpIW5Qsvf8hZ9>xoJRPt!VyS62QN<5fmPA@mNtquV#O@FC9|jd(q`u0S5W@%^KP=x4dLc*fQv#vh`It-l;&kRvJGafnzEigT%#I z9uY4UZe#x5!BOX})*J2&@R8m@;def_K>o&zSk>3tup+ z{eiOq@{}%D6EN)FD2KzS573v1vS4QpThyZLxq#**! zBgUGlCwaLaxpKM~P+Ml%)s*$@Tb{UV;enttXA)1hg2b9sOr0#MIBahxwAzEuj?Ff( z3zHO{uSWrgTmR}6S4loP3eOzqN*xa$1p_^#%Qlz2fu!C*M9_>+id|mOmX(?7?ktYr zB#R|rnc_Jd-p#tJOM;4H%7mNgIm77-y#A7yFEhQw$*88tkI@JgMkczNhnf$m!|-tj z5X1AtA5Y6Ha;gvoY?QBUh9e%7@ z8Ykke4n-+Est8BPsQ2N8PrZMMhI;iyo>ZbM+Ul!D9Jh+1xAJJlWx!nNJao)FG?PT9 zDjgf-j{C1sMuchD{J)o4X}=Rz041g9RHd@5d`wHzao43Ud{g}Z#15o zBe!3Cgzllo6u&BqxDsBC7;f0WI?Px-4|U|2iTUAvOLiq`fC#KD5h?k5rvfR7Qv;+= z$<|;nvmNAN>UEL^$IUWWqyZjns{RRT#P^z(;h_C;x`aHB7&&j8y&`TxvAwo`y``PD zOL6KCioSAi$YX2AvBAhGd7|o6(*+P{bzC9u)B9L<*~@V5>i;_XpovJeuo;0Ev^?m8 zA?f0Fl0%Th!hUJqN$r^`sK9FCHZ)l+b%?y!-yz1JZWC zl>}3X09*|#mV~_?Raz)Er3%)sWqI1gHv;xv_!w~{@}R9_6}9Vi#c(_MQ3c*lS8#Jd2NkGvr z>IAasuiYf!sG*|3nZIP#?qwx>93}5#NuWx{#wAy=rGZ2U$V`(0%9goEcTPHblgg*> zwVQDb9|;kP+2(sVc*0W9D1HSUz;zL1cr;}0femyDy#A4icq;xGW*SOcu=GaiR%40y zn@Z7j(IomyTbJNF%UnS+Vln|>M&zXvInbvG{C6Q~3K;3%RBOsjIe4DE3%9N~TW5TT zdQE^Cr|9UX|MfzRZ{`^n4mvZipYxe3@|B_F=zT@lHp;&rU(s8zOI4|kfCIub=y-!| z!D?{;pC^!!4?{CW6hlwo;t^aL^76)?6o+O3Eccc%$Wdi_I@JMAaekhTgs}8=#3>=l zMqc(ns_pS8gd{BMBU?wF?iApq%PS{oh$a_KeFb24tE9O6MW>L>b@49DVNQ147IEkj zrmjD6Ok#_pImjs>UkVjD%c z2@#8asO<@gzMn6lLNIqFRF1tOJwZn(wI{QCNYsjlAo3^myP|dnEv2{zkdkB%WdJIr zph0C_i;(ub4iIUE7YuFxekrN7vK-@7dE(gmKG0hQW3{Cw=G?gZv{IC}t|&t^Yu!da zgjcNLO~14fBXMkh#RjG8B!S#wmzt9JN_Yn3kaDh8H7#ak=6)(LuM%5yiYPFoWw=-97=HH(*rs1Ie2_*c|LrOYf@(ekT4=s{9A=2`M3UIBmQ z$V7GqaF~RNy4^>A;-=*(M$X%>Wy-1Y!K#(kfcwGV&MAdtM9wL;WqQR$<~%K;*;6<;NKo8EiR%FVJ7$^guLVC84^WK@<69Wb8pqbCCQBM zK?&9lUI#FqoL)4ly7Gr5oEPhpo&A{AA&St+zau>xAf6$!H#`I{u8I^iz`#OwG348v zW{egKxY>6Ql2@06JQjsUENGLrtFwT^_22Q}0u;FTM!Ap9pdF~5)4OHXf}xhT%@7{1 zJX$LlB2M3zim>3Qg*32JI%PD(YfZems1?PO!+&;r7)ytu7HN3zP5VnAlpdD)ys=JjbhJppGJ(vn|UcuZ=F&wO)(2=^}l=0PB zM_T$C@u};Mgp;DO(jYlC_RPNO06nvs5q^KGOrO-{2_iz4HbReH?~0>&yPG}RfLlY7 z>4eMuwzx^3t030;wwowAZ!N;K2SeV9Q*B&u@YBDK5NoIdkRJ+eWq1RgN(4LKp72NIZS<@=B5$gj;T_H6E?^#a(?xB`(R1-|_kKohhd&^CwsN z;gcgQ$)d0o{?z#Pmikb{z|e6lBFTMrU)?F+5ZXChXn)5n^97Q*rxy*P`fn7o87y}} zS_W#$SwHp#8G3l>%N&-nmQ2(fQJPoh^X22LVSjdo=uf_=i}mCyJD&gODJ!<)4ohjU zuptPNV%Z$t$T{c4L(_~IB)QuO`$e|Q=%VoFqKm1EFZ>FFr!O-d(89;bu>ZBE#K?Z* z6+G-O?b2G^1-andrwo*?C;+7=L%ay^8ap`oFJ28;Ud3fV%}OPn9_8#V6nl-WJbU%= zA{{^`)N(ARm#M4MBp1SDTYw7x*c4AnY;tT&oX6&Iz25#wMb0grMeIqFm#Ne2 z>Hn(mJkZFgRCRD3U+vnn)@uA6<97FUPy)I1R2KtZI?wPx@J_=3i)YDOg3O_F9XxS} z2i<#n7S|wPtKW(KoYMKshw=gY;;{fQcx>(I&vm^uomQhh92I$44qbX+ysq(89Njfs zD+bWzk5F6*iND9Q*nDpi1IN`ZZ%B68TFizDwiO6E6*j+z*w$t%vRPthM78SQJHSs> zfO)I2V-h=iPt&k8g^CX_yLXiT?7 ze`ZmhlQr%*YfF27sN?x`YBW@0HsNZ~{Ej2SZZWMv?Mn#EAv`?EjCAZ4@srYQeRm4%E7>nka&$M7XysqA3&lUxD=^G9UpTH;T%)hLVZ z_C=_x2dBvjX|00WjKXW=POx|LK~^5h+eD0zI21lJv~^#V!}};fjtz7v=o-Mw>Y%zQ*HNKp3Ld+lg0eL?@>b}ts;NPx+g8{`vB#sbk%W(XBJcKL%L52X(Kp(s7 zt9{X4P2@sJAd^uc(J@#wywzwx`tj(Eku>p9GoWWhhU5x?zmoCg!D93`z)H^FRxkP- z$$+>wJt>Tb#_OMC>=nk8gUo=XJu55ss2+*n7R^1`b;m(ZYB5D$YK?~DK+Azc`q`Nr zr~JdUF!T?caL$gb*6r9GEjI02n*N=TjT$iSER4}-2q}R(+At4wa zMPUpzr;{w=2H)?6sTMYrg^>1gvZb#`jBWGekf30_4wsP$X(EAoDz&~Z#zX;cB?}J5 z{1>69wst9cLYGL;(~$@~W>A-W?35x!zo7W_tmtTZ$&#H3ut{)dGP8)>cjA@L3`5>t z2P6YKeJy2@G5EgL|Jb~pQTP!uG=)I|z*{@wQ*AG%CKYkz;~%hs5B|AKxK~Y=Cse1* zd|Ug6#g>>G`(bG!R7yP_XMj^i@|rkpp&Om}yD~7D>ERy%aXI~I9Dt4ew?4qsy;ZA@87e}Tg92; z7uV6PPT)KG1igQFpY^Z~2iztR;95@BShY9EUJW2`iApykY+Lpn&5QrwUsK{ZkwT%( zoNBfS3KaaP6dlU>g>W7~TH_%4HNDgW3tS)OyXQM$i*XR)u2mIIu}%GgUQU|eCnBM8 z=Q&z%aeheQ!H|l{s#*>^Pk#H54)Fra{5WmiWLX|zeQoz&!}7$ubsjPjIX1wgQygnUy!@^+~_?Tzl66ECOAE+G{E3 z*IS7OGuM`9I`58a)C1}|Nc(ClCHjJ+YBBa`SSQq1|$JKbNvKqG#jnErUK$e{qbU|HfjAsw+zQoDj`fE2WR?UVGOWh^{b%Uy})X&%Dl@i#w2g6+!yWKjzpxyfP*? zMMmZ~XL?HcAJ_;B+%BlN+$g`L2Z|YNi5zx~zp=`l+(NS}r=T~&7PaXjY%;7a1GPWw zrYwjh62$Yuy$qdiT5~%@=O!b>x1P0HG|p4ED(lK6CYsiMB^a>m9t4gTH_|PD5B^Ws zt;IkZo4;;ug63c;x;rkcgoSSS`{=dxRib)yi#-PcS^%MlNY0Xc+n0Q;9}v$6{Qpce zqWKrs4vDSWO}m<*DKROLt1H-+;p^v~Sqad@arCeT%O(NgHI&Y=(-lD2Tt@^_F{oc! zQdQ0&i;`pawY|i(7~bT;L-?#f;ShB2*2Mpy&^tlD2M+*llt23*7bw{U6D2qDFg`bs zEvxkG91?{%Gi5gW#JSQ%q+Sr`b`8PHYctDvZXeTbtMDQ|znj4$^6O7p8B}8sR^&N? z5z9sfz|1NI8K3Os+nj^FDcnnlq2I7B$x`FvY0{W8)i<3rF+FAYQ87ptMXj&yfJ=#j zL9$baCO@uEZ(aF8B>_M?*2`ZRKAw|hXZ0QcxhUB6E)NqM5~1amQLoD|+^ucuEnv32 zP-#0G1oFvBm{qVsNQ6eja0Sg~hN_5I=+*bQc1ok?H$UFrK-G|3St^riT0sdYA) z0x@MXm$`-hKX=SzT#XBLJpV^4G5q9rHA0Yu?A>Iitp6ySWW4IjKE~u|5oP@h6uXaS+)!2BK&JyC3N#_iW7BS>x~o z2*#r~MLA79{$YYk9yM%;!_C=X86FlQQSOe+eh@r#!w>~9wfdifhiaiWEfslV^+`Ih zUr{K~YGUBT6UNz1#r`$p;lWl{{ufbk8$%tJA=wq|9uMp)-{5~j2HzhQvna8aNPP%0 zOlHGVKSR6+E1W4$ZEf#!2D5HAhyrXM3wDri#3HIYqIpI1yW>qQ=W*-6^ZEs{;M(_MNi1-P`SEPm(_!S^a8jN(`_ zA7-4$h{>DYpn>LhGW}?1O1ai00K%5Tu-tXOI=<&y(C7<}y?Fip0}Ho!Jj{1Px&{$h zx8Xx|^>a|OZ1BN>QwT@(E1t^G)rz=a?BoYmjdXM>sBUy*uwb~zFp~M>H$m7ITKCyn z6f=PfYubEZ)m<2<=f-nj)p9rK$2Hp3otxCYD)o5DQU=G9;L>xL<=FZFUX!wdLmm)x z=DkBWa3gz3=Rq1|!;?^&?WkaBpy$pJ$RsQ!SH88E%@x*)cxm8mhC(N}#?^wv1e|r2 za#!xk%ON+B828T+;moS3qt(D`{i7J$>b|9vyjCq|11l5VTIl3NIF3Go3{o`o_cN#t_vf)FD9%pj2=S(!!T2paD{m!pa8l|%v``<^ww zuZg_qX41JxEv=&vB%kgJ)@e5IPtce3eNf)X1^VrpV4`Myn=<` zHo|cQF8J;hpw0EpE#5BXmwZf{ry;BU=`qUeW&mor}IqL4~_RR}K z$~1ykx_cflnr&S)W>dr%M*8=uq zhmkYZ;5f=q+%@%w>>jc;?CQytyZB)i{+T;O`>|~#+Ks^6p)`POjv?dkJ5x3wB$OhR-Jy753z~>zP~60ZJ-l@Gl+upgqyU7n{@C7-Tad@2UrCrzM-Bz_T8ME-gF=Wk6`dU=of&6{&_`vuF z?bV(tigVH;yVZ1h*J?(=JEHqbRcU<}kd)Hf+B_xTQH3MW%tn04Fbp)Ke9ZJ+j?SZ%B-t zS%s@!98Cvw7TX3@FA`-V=AB?dvT!(Oid%RudX2{ecw7wd$0@7lmFEVr#%if+-guK3 z)SUa36Etz?=^f}ogzuKZv2#!@0zXQD28SX;LnPncYhm==>PW@u$I1RD#g{w%rZC?E z#rHTF%?W?4EsB(TzPW09i)Bs&Qp<%W8r31LEz+?xypC~a-E72So^3fMczm`gYts;< z6TcX4g=!u7jugE!iQt9-L(q<&@~ac-GLX9#*hHB5kEAbx&`K21uF*bl?~LU?wl^E* zvTx@nU=SUW7Eokz^rtLg0!-RU_+A=jbN=a|4dXID>zgJ}CnC(?al`|10|Y<$0dZ*N zDD%R*DXC=k`+^|whb6lFhCYpY?lG2{Kn5_F%BszyOpFy23!kr3tdZ6SO&BvtXGqt} zylj4w+p18%vLgHMCKn=_h$Q_#+FAU;Vv$dDW#kBk$5l-#{F+2c5 z66MH$OjlO`;E_iXqN29qJ4Ja)E`K3RaObY59Tm)g>{u7n4R0Ss$PzHXxCtYK9Ff4R z(}Y~mg>(hI^?(jC1*&(fDGtBWE9nswAgbu3t?9P5&BuPY^T^0G?XC*zOUu*ShG5+*CChCYH?)c#cK04Y$GxdrsSUjO<&*D$*#ZoA1P#y0^kyk>dc zRRvK1fn#)?Jh&*v;xJM>nx#U4kFh`jam=wV-_T%4?)H8i=XrZSyIb4-Eoi*GEdSQa z5Z-Njw}@5_(R=t7qH*g^l=vT#H{5)a=e7`6y9&`H6g$mEcXF`YaC0jK8q_XDnn=~~ zG|CQEOV(j;_H;;CUCh`+iST(77!gjy@DT@z$M~@*n-Wrk)%~OM4hX(25(E{w(4_;3 zR5-Zg2r&Z2lykz$(pTnJim8cuxO%bOjm~>~Cab>HQ^U^reC$X1J{|-WERh61px<+9 z*tOW%2(UK0G5bbD6tP4>5p<(O_l-_22AU{Ky6mJx z`)q?s!qnG}C?13i;FiT0Ic8gbb=NmGpUz@oSi@<_FghV63|Y8sANb&50}5Q0Lk8Mh z$dV~o>N*;+uB^&@JTXe-=J+k8^kjeI9)+8**2V>{2=k`bU!auG*2ddTJ2psvK?^#= z{x6J9(rFh)zqMOcgOcQ3A|mT#(-l$wynDP&=etI)YZj%DELWpeDCW!k+lkC6X3TM_ zRZyWVx7fQ5XOXw+%c2K5orZFkIm=dQd@K&Bx*Y`0$wy&dWbHHAj1o5WqMuIJ_*8We zy2d{z$RBuYfB7^r)&>;CR+_*BNyN=uF#tArtXZM;*r6q>iZl-F6*1CpomYx{r+0A% zBR)q(d-1dn@Zds^= zgSj+Acvk|7-tGaMg+X1@)(L0d5Z(?!NvzLY6$@DP`1&6OgKYNL5Jw!0XOYtk3ULD+ zX%WxRG)5Ezs8Rd`0B#5kT z^E7Q>HGrtQX1vZjZl06S&aAJbijuJ`e?=|8Wbb*rWH2-kP@acp75k>}8I9L?8DWW;zm242DE$#eBgCp-=brZYcYd4TbXAogoL9+)W%we-UwPCo z6a^Q{cls6R=y>dLG^YsTI_pOLR^tW{q~ZBhpTZ!>gym#CrhNkjde0R)n7Rmg`@zTC zo7pCYbwG@!K20C7c}76(pu;KqY#`j$h^#S(igTo&0P9%qEE0p#N^}9&4y*u~RQ{_~ zV#{RVpDM9yxx{-r)+VB@GZ{42*E;B^&e9%M9_`30Py~P}Lt_eD!=&Ky`=;FlO0qDE z9Z{o>KW$7jkwjaW9ryRl6h^H8c2*7B7Y3!t>}OId#f7*T@-K~2jd8Xb)AIe$j8MUo zROfY6y{k^Qdlk{=W!w+UR-1?GO>od)0PD;(PsMmJlZKLh9e8pgJsIXDXT zhlI2M#;7+q83}~0+QE@@C@fbwhJ%7*!%dwe_^Ur4 zhE%eh4N}e9aCN9p^Jd!|M1mC2FU_6gl7x5s7ZrN_AxJj@8Bg6*-FP`o(x3Mn|7yrp ztp3=dd~P(I9ET#OatNZgCMGvMUk%)!Osx5uhMCKU-=-cK`vyCgnV`4 zo@Y3Hx&V5qtx0OZC2|k0Lp5Fvm;RLr-N|%+843_J#I=7a=l1DhINQz$EZ<_r@C-f2 z*u%M%P;eVOK>5Ss9{WxsRwe)kl;HHIw?|88Xd80T@+%H`LjOwjVy(L(MFuG@P2Zy) zz`v3*vKO(ihrz=K_H`oz+*TO~9>Dn1HDj69z__N%I-ZxNIp}cn!g=U5H~6*`cAuQr zR_ z>MKnGi`nGRTormcw^)?Q>E{@Pk*97LTWVVKzDr)D^+b9P+-}UHX)R{t{SZ1cIw31s{^`k-<&%dJHnskZ(wknKzsl0YQ)WNJ z1LhV7q2r9EuBo#fyp|sa#k|T4A}$}Ecjo@74HxsX#P57^GxSQ-Gp#UKmxUhUnB;8| zR=vdib?~Qche0a=9iMHF4rh&>VjAEX5#>qMbLtfRWRSC^al@2kk4QMg=uR$4FSx@P zZBA6GD`B4{oLE?8?Ky#X{7u4Yp@eZ-?>qdxuyzTo1J*eWwUH6ikG<7(pRKLtwl23D zZE7rCrIXGr*Bu-CXstsF`vWOC!j5}?r?MqcZ3}&=*X>*jR0R!6Bp7X`E5(p&hN3!q zi}p)!k$%ktw=3da8NE8`055k0RyyB!YkcVvT7lRoW|)u|KAAJq$RxkMPILxqgPK$k z2Dkf{cM}y$^j?0MXyV2tZ}L{)pRt4WwGl^J?7FOs<52AOs_zwhh@k`qm=@@&aV~Cv zSFIMkNRe=QQ6L^{Qpu$X3jsizmch9;ujPK8Lil)FkA^-SKI2SV15rODXU-xhNmt=4 z^=QmEA4YT4ns)iu_uX}o)0pPQA^-cl1a?1Bp9nQGUElZpE0HIWJ=4mm(rO8#%n9?K zPZc`)`$K4b&Wh9Un*Unkby&^{3z+T&)J%-koIpn z3ynPw=-B!ML)Rmhoxop}hal@L38Z@A&1*kB{|&9x7~qZ+_it3w&2YsREQ-ntOLkD9 zMx2q0rzK?y%!-8Zio@TfxfFS^W+)R+Dd=Y874y3jV@_{*41kjI0zC+GnesNxM)rqm zXCf)e3!im7tGgkYnz|TEoZ?3vueO~dAs!Jw2D)mGJV_T`l9o+g9RAx*v{u|ynRQsp zC1zxrRGhh+&1jVL*O327}d(`#G4 z*SLZQH#sX!e?<_Ssn9pa_bj6cI1U}qh=HC00rz}VFk*pEfTW71W(c7LFEhxctGA(F z?&O;*)QM1-;FA}y&6b@187%C!?$c{o)vMCc6d!PKwLa}FMIWX>`ZuZoIY7q0!Q;TV z?!a_*0u2ZjTM*>1pLTOd3`K$xALobmFLC=Z0*kTKusDRDTHmx{b@C9RDLO5mrxy7RD`Gi82ek)-+-b<=|C% zDaKj&+sk5Y#DHwlz;B{&k8H*p5!=rN)3i=0AH*Yn0`(WiYjouC^9_zK5Gb2$S3SYO(J3T{*GTORAG7{p zlsMKYLhK^vC0^7?7z5Yb>;G*N@T4&C`*VK`mGm1UeHYXA z+hW{c(p2`QlxEloA?hn`mM%#qxqe^)Yi=;#NTA!^LIX)V)Rw|Bv&Kjr%JAzIK)x#P!^ zLU>>E)Nr=EIfKV{HvXShbHz6sHpwFC$Cx08tFpW<8WpPL=1^VeBn1A{-e0namoIl= zISA0-E&U-~;58_+o|HM!fsZeL3Yr2p2#%CX?ze-U@Wx60)5Q9ebL#vkm%I>$n`iMz)#ElPg??Klu zGs9MB{Ux0^E&I31D|rd!uW|_~t=l&>O&}$tjW2VB5mjA4Ew~MHuW><}`#6pOL$YHX zVD;j=BzuU^*U*(?bc5gv>aQ`|U`7qp@a*TDjCQQH{=aKrWG$AWbZIaysy5cLNp{>< zSFkB;##xsOef3~ln6)I|EQj21i`-L10K3pOkJ`#5z5M+JPnHzxoE*CXvIv8dos2^S zp8su;Seb@zcVgCY7=MQ+OVlm`_S*;LD0fkZeo=Ez1uj#pXwk73=G;S~DE)hRxj8j$ zG0Ag>dH!({&Rvj>17@Fc&F#MiWyyX))$L^C#w5Y}^;m%q2@?otoy9E4o zg@gnQcK>&SL;uax8-X_~GoaeGYSfW0Zqq@R>bRq6RaiZyLQI(#POYK_RPn`BG#6#j z(CEM9dAAlG5~6`HHi`UD+aga$`ls1%j8o=$>?>yshgkRKWiWo-G!nNr<;!R|ZtX4g zv?)3m$fWLj!lA`ewTS^pC3sJ+Hw-eiJ?!^QT-rEXNu+qY&hZJJB8~cEl;@{-9x{zI zOatl-B+=)FPPQ3ZJx3b)$mHOZPEw04#GJ2+raW1jKpfI+ZRx%N*9*Dxx|{`>ZOI>M zu&JlZF>vTbZlG4CNjm{zu$x|%@z81$@Rf2ZVpgU{mZVXF_P6pZ#*h}oRWbd+e=Ytj zATd3&^*b&NY43)XkT3|DE#I9Ff7CC~!R&;}eThere~M1cwahY|i2BeCO;4x=GY|b< zXyzd~qlhE`fkTtXRR5OJaqp2%i*9xIbhH4O+Bhrh9$RPB#0|csJUsV?By7dBU?i#_ zlClD;MJFfTiLbS*P(gx|v)MBeDey{xtzJH}jdO5olCUUk?}A zMzc&B8`@-}AG#q?eNv85=b=g;*}Mw#4+|+aH+_ar9fXt9F`Oq2xvoKy<)BMHsSRZwn+aClOyeQymUg}| z^9L2LGxV&Z%0w{J%EDKD5TB`fQGk%Y?#vNDE@;D5fD750qtThVKpkl9vSYhTXxAWQ zN$nqVxRp4L0jcJIJ>r|Hj4*jUw{pq(W)m1|J&^8mT-K@yngBepY5B8C0E%E7>ZvTm zSynO|TeuVpUC1fWib44_45422`l?3jRZ82w#nY@+8cjai5y@oh2|gNo8*8YQvjd4t zB<7yT!jakuKsRE4Y9`?r%fNzBC6JTf&`89WzZ4X2r6y zG|;bUx)sNg8D91;k{Wi(w@qN(7K zPOl4cCA{c#?t~~&{fJ3{j&(%a631LqGsVg1i=&f|KjcYJf?VJx1fML#7;hWyA#Ur6 z@JasNdIJ8z?(HnmpnJs|cOO^wo5n5%<%R@pD}|RdoovH5>;)1|&o~7Ho)Tjt2gdt} z+%<_W%{JAsZ+hhDakp!dLuwrEL){jDMG_LXV^`6C2WOhZ;ww^-4i*jH8F}rKK%a>x z_XTaCErBzb+SXtBe%hHrn=&jj&*4T14$@Kz@B)~Swa4SVWRL8~jRp!}HZB%2hbgZs z{+Caw3eGrVy*D~atkkWjqq$3m{gd%X}^-b!r3NRA2v|mAa^KJ?wjMc*fvN)jFzV`c#D)Rx+N02(ME@}Hsz2TMyrnRAB(^D{UyGZ|#+vLr6tC_H)? zB!hf#jgP0o^8O_{rESSI>V19s&7$R%RAs@UC{Xe8F(OcOu_Q5&;GSH>#2x@dg0yMl zQCueUKcGsDnZ?c`DtBdn*u-en*%v{@ZU-jpeNY#88BIxqh&+prd}Q<0Sl(YBTC0{b z-)r~&bW$A~Ft8?kvXUDHaDv_gbBYP=V8P@YB-HFZA3VKyP z#2*}(d1*}a*6D*CNJsj8*1d;|?Ay)n<@`D_)gMija%oeJ6a$2e2UA;ERC5P{dn@Jf z-QdQI1QzG-=mJx;bq1{2E_zslWt1E~wZUu;QToi_blt(w@F*Vr{?tc9PVZ5^ppN~z^D-1gfX9qgPfAHjkW zr_MwD0g7bzLRA?s@ok}&u=vtM5>aYWQ zr(l@KQ-X#;;eLLuj0yqh7a(cZ2r=esK1+zzhR)p&d2M%yIty8Mki%yML)8~ z9QbQgjQiVh**87!1_*m-I!lvUzSWYHrA^g;zM!k%N$lQlpu-+y5kKGl;0LUG4X~=tTGamnd3BH^{lCdRc9fi%Os_KAQB%5f$2U7A;9J4+ZTtxD2DlEda^p$w28RlY)In6fd7MLCM^ zkYHKG!(1ssLo4wSx;2)1VpA&GPrOXBpcgYs@SQ5J=B==zXiy z)@F03@e8gMj;Ohre8d;zQXXs*jkz2Le}eYDU$38P2+0g$jfl08d1xp&5pZKrmXrlA zWDJe#l6Kg=nQdn=l84>Q5Hp&`8bj%^-jx#5G$0+lhJ#LQ>HLH~olNH}*n`)Vm`v2n z=<^Ta#n{_mp_Q2?#&#}D_l4xCOj~;h23T!yuZ#vX|z5iIX@F%%cP zJm4i&7m;R|Fw%T9$euRGwLn4}KLuE=W!xQLaQuv(t;@?_z;_7be_+7P``54C2jfP1 zVVpdKKsf>z9=0j6hME4m#qMweB z?Bta0iRb!tMS73#5h=h&?&M8GDIFAH(F)O7&H@Tt796V!PN^N_QoMD({V!-u5dCaF z_mchYPSV5iHqH#n*!uo;d9im+rw3p#DN0SNO8(Yy7F^_(8^nJy>YI(g&B*rEC`;+r zpwQfR4Sz=9n9(=C*9PHKx(b|1g-*3bwaV7k#wWw(!s**3$LK?P7r;WTN}VV-y{(twgZ{jk=3FxWyGf51on=_R8Mab3J=r9EZ^SvmHhCk0-Jau+3LkBf{cSp*o3v?dU9ASpr zCuV|e03FN#W<0|Ps$d%<={-C08uOp-9>AHXsJrA{k&d5Lv;S76&%PUCZ28Cd$E35B z*uVQr%bJ>vXS;NYP~N%Dh0&vWdtQntJVF+8tc!3x$kwkyA@akMjF}a8neIkaVXnSm znT=v@+;&N_7kvN-yX-~qh^R?Bz{p)1Di;eP7s(^r!tg-O@Z9Kq&-=r;>ee8G-#ubm zj*~2_df*vs*a&K(;gwgqV)aYjV-AL7q9=*lpdchl0D;uWFFrt0-Lw4-F&qS@k%L(T z29PcaMeQ}rZcCK*_9y*pF*wQYZv(;gtmX-`$%TrC^dlm$kF?-qYel+a#~EpbLGDSRJL0)Q5Cxgo0p5xPkQ0`yXLieg)2vdkLU6;#^jK0P}tb zNGYPxYxuriQl=+~c{)n6=%=c^PMh*cN3EO^B(}~B3d=jl>}x;dE+c%)>l(sG)Y7^` zFFMhAUT&KrJ_D;}gOyZAM2jN}){GU(Ci#5pp7zfc@oJ*Gd6#$94OGnD_GsFCCDE5S zm2S?-y3@hzE*#I?d86fp#&p-IJnBbbd;ju&9?xV>BPF~@18yK|Qs-vsGxmZBF2dh@ z%x>si@k+4axMaPAQTZ2jvca}Xb+$M0-W|3^j=sGJVycMDy4xH zFKrbvpy5j13PL1wzCQ~=JSQT_D)qKeuPoyCDuv|FhM;H+xrwQE^WZs_!Do@?v_|ew z#YgkA-2@C3l^=o%R~D!$FHBrfBE@n{!rwGhtAf1a(ZnrdOU5(G`qp|P%k^!x*i`jN z;^fVcaIBWU^h+2UZ)z&;klDqNHieRJJP7TUW{)_by%&c8b`75L z&x0YxVKKcj95yP9a;wGF;hF+K2`wl|Mtql>Qo*}NV$Xzx%Ub%^6oyS{%`i_03^4vP z2IT5Trvb~fDcdubj?Nd(0teWS@rYWGc%=( zR9P`Ffoo*%e@XI)T=~nA=6Y1K)wT@H@pb(}XD8$>rC_Y3%0B{Xo?p^8nV%}1`5e1Nq@?LD(a&tR*ECql%8fqtM*-u#7i~@`sFBFYSE*vAig{>?P8NnbNn5$M_!_W;Vg1>8{KI$jHO=vas98K@Q=W4fvnwv z?hm)P%n2QLWPF!?FXaIkm?F(9l}AaPk30dKxh5s-F>VQFNdP_qe7YvxP_w`XQ!^)% zc8=Pk%A-SG^=ys>U?yv$0^1vf@3u#ij1BM~BiNs-YCf;926+v7sr2)mJoAsyYwIo= z1SA_p=Cd;2gnimVJA7k)kZuFv@Ye`_TK#5^2zu6OR5s5jNElyL4DBqNvfHepJq0v0 zVF=lQnl{R6>hUb(;*uaU>O`v*{_Nhw*tdsK>U>M6-M)oZoQ)-$?fVGD?S85lfDOtE zwj_-wwSk}vZI!o{Z+g5-Y*VAvTZsh19Jq<$n}XWt+c}la;KL@?)BCG1I0Od1Xh>g zwlubkM$N0^8k92iVqUCe&l2+u7A7H15eGIkPebI%ULyFo!7Jb$bjp_eG+K07q&EuG zL)kvNSshn09Vwy9pZ*Hm@HgQ-{QrTZrO>THh1*!Fk*#=e)6M$5klfNEe|#8IHtIBd zXSnF)iiPoVlbQ?(!l&Fc$eDd?$Os!jJ7^sVXYci64%4yPUw7Xk`G1VMEq~_SK^I%b z9V3^R)K1s-d89j1;pI!sAn?bd&8tEK>VkbAyC8%eglq^-T%F!QM{kIGRV(%1t_Rw$ zjCOsb6Cfn(4EK9qwSE_ow%|~nX;|g^+NHg@G38C>eivE6e2_vbrz#$zYAEYts_ERH zB_aDqh>Tw1y$F_3dIbM*5JCnB1%;1aW|q_$1RAS|Pt=kSVQdPCS{(00K zX8Xfdg1#L!*EIyIxgU3{rOAft7=DT0f=3yYf!-wCA6P?%s5Tr5B*& z-0y9o=+I&uS}}bZx+NP>iJ7|)W*7irG6=D?Pl&b3yAf~E#C=#dnL^?a>xn?X-cSK) z!P;XiY9zc|2kg`NUu%Ciihiouz^$BhGGF6Ta zD~Z`51l)C862?hnoBx!7#0%bq94r^tcZ(DAy~V4s=GeW3&#m?6Da!PYL#Cz3!>#X& zSB=e9T(z;k9~~nvAEzbP{Q^X1K0&ewY!VJnkkwAg-f>n8*RvBX)!}P#4w-8C$ueRK z?`G^L85*@B_;J=!b!wC5CZV9*XRrS_v>NNwdVd3;lv0^p$ef-b#3Eb-De80@6jSLr?iQ;`f@Tanogi1M*_ir2BtlmG z>|0a%ZUwMW&>o>C`>owleHwR!BMAAZ5w2#7g_Z-iXO^x8Dm*q1pI5NZ~Zvvj`eZ*}Y+4PV=zrC3 z0aYhu_{1k}X@)2{wLuB3B}u7F&&(-WaB?8>tB(wrX03KpBZ@vwX<6*y16jq7WcPx~ zyHD;m&$JKs9Ck3+B^}2lOP7_}sQZ2xWsU$?=MC0?fQ5nYm@}#tK$1)!EYaetRu=7E zU@rQ~}Dr7yESIDloZ=Blm^Z)mang1Sl) zUnGhUB6nn&X53AWh6lIl1IGad-nc>y?x3ymmBr?kZr6ec-MjG~q$9{f4Fl9kFI>&x z+e4T2S*REzPJG&)dzBs=vF4{hYoVHU8%MMG{X+OAFki7thuf*}5i!y#qXp4Vn{vgJbJIHNRmA^MHF{mC=0r`rVlaC-Bf2iF z3?rlH26ae`j=Lru0WeVy>NLp!6euW_?p<|&_sc!u6G;StjPioxIa;4Xl_sWpe4=h> z%PtvcUM$yUM-@nCAj?lbDudpvq_bvxR=)fWnV@00V5Y009$A}7C8(lxX+WQW5Pa4$ zF#Iw$AsqvIADpJ~Ch~(@FRz0jlzf(jV0z~X^?K3}NsJYG05cd-`W%v+OW(MYj|S%@ zzViC#p1{0GEVxyP%)?IuwB1o+sD|6!E!;6JsocDUlbsXp5@bem#v}?=1X^8TL&jO2 zV`G7+%F~5`kK|4J>OuK5*z)jhpclF=(3ot78k@~+>TniIVmj%3j18VD$k_UMJ}(&| zZ!aq%NvmNv;aC1JCAYp)u={G$Qtw-V0tqEI*U~Inu>}^(9Q198kKCa)L<{BT##F}a ztbSa!5lrLxH?s(zTHdR(Dz$v`#q`1WIgslPukyX56^PPX#LgjCU(j1G_nJpkneEX1 zvHD57h~p!BU!RY7@kri3h!FDdizMes@(;3-1-n&0opxztu-c;cyv}|~S$Zs}qDxu6 z+nI(-#EPU0@(VDZ|2#0#SGi<}d{IG05XA?rCxKJ<0U)8=JU1d<w@m@~({$@A1N{T@nUTGV_?-U{Y)fe(Cs39M@Y>BW13_d6p%kCCp6 zF`N`bBN|7yAs21z0-n)a;B3=;ckCe%s2r8cQ#ZCD+gY_?K6lY!l;ZsisRkw`A?O_7 zLZ_D#Lp(AJ%`F?uj7LZXxXDJ$&_w5Y$hX1n4fvz+tUgy@fKPatAU74;L%nIH6HN* zYXFFs!OdY6ZQ$5Hay)H;|LGDW--nOhTY`FVhP|b=3&L7YtBvRd-Am~9YQq2>qzdLv(KtjR`V=C2gnLq_RE zm$w4%iFE{PU8X3fOG3?~MVsK<)*oI9XF+La{Ty!5TB@2P>5w|L&0QZf62EiNDbjlQ zVg>za-K{bE`LA+P^~C4DiHP-)jBAhPfy;F=ZEaTv>+wCp=$BuAdbSL<*W|TS4FLJo zTs}wv37kTzz9j<<9P==zM3xPEfk57~e11?K86f|ph!ZEa-sah?mu~R)N?9J9P}RZI zUCny8{2VgHRlT|WCP$b<1X~w;NC`rzFdue=OTCB>UypIGwP^+8dt-maVO7AbGh+Eh zSYy6Wu&uC<@$DmT%rxVj+|Ty`^A|G7I^cy4Hrw4bcrXc!5AXU_-=P)keGt<#aOvAL zc9#Jnsl6^<{M7?I+}O?1gaN`EFD03*>XH*D%=pi}tma8tO#@kAfzJ9MON7+CZo%i5 z#^QRyqb3}@)};MaKyw7-q@63E2Gxh#`iNW$(`wn$shiG7#!o4J-i*m;w5?4J+i7+y zwbd@0AqsAtMzE9_S&U<;3l#hrhUy$x9=-MJRj2Av=8OfKOm6|LtT1CUtD%LWto|n`9(_9D8~RN^cg+V zJ?M;1-l|uATdj-4WbvJx4Qn?i8!NfjH7`LxSK41S@=Y2}JwEg#ixV2(Hf4-kuryk4 zDm)lKzw7u1+3nxP!mXVi1GJz*F8+S7VjlkXrBlRQhKpoMx4!M0{GEsDOmBd@nYFak zP|uuJ5GYB%sQ3??aMH1z%4&H~=zuJ_4BPW-&Axf zevuDKp2N@G)sb^v95Gn|hB`N(Yr~o>{^^KNr8M+t&6pel5cN8<&GLZ!s>WJpV&FVe z*xU&0r+GNrNt^$@9U<$dT7aP-Uqsocqb-^JUQHNb;c4ZhJp&2wU45LLEJ`{?^_ zAzxh^{i1ErM1(~qc}S?PWVG7X4V>eCJS!!jTJ^kyLY$fCExhtV6^lY9^eiSAjBmsb ztN;JPFi96vZzr#i+cFa-T$P|wsulaF3x=9)nT=f4Us2E-ziP7udBFi4Eo^x%@1&3- zMY`OrTvgPtSj{#9Nlb3_6_{0qo-?f3N!~^2k^LVS{hy=BtkDSwkuOkxCez?7#p7VU z;O2IPRfnn9;0+nxfquS-`oe3Pet-bzoYm-8hS$fV1s46G z#p>RE3Ev<4BYeLH7R;9^GKv9RZJ?UH$n(7PrbX76@b6j|uz4&TrHmp;&2g(z!S6!u zX>N+;KZ}lxQ4hMlWp-8$ggJk*B6g96FYTO;?H)10Os~ij*tj3fHyu_Flr02%tf#`J zrF7=Y=$O2%Df z#1ip6d!_sq?W#sZ0VI=t1pd(*Oh-@A?66GPEUvkljzeYQ_ideUQlU`!KVx4}SX0De@pZFKk}>c(NGWI*UMuv5$5HG!a#eZ6wK&)D(jDPAKoWfw+Csk> zwV*`aebx>b2AZTpGX`}Kns2yE#KM<{^Wrcl#83);dZn3jt2xRlXtz|J8v$To)jq=2 zxx!hVc}fRQ3`O2H0>2ySnA?jc<|%J&$4W_loH=H%hGF@d1-u{f*kKr!|k_ zsZQ?nU6KNHo#tnOm|x)_$Q5rr>tPRvhLTGIOZ3d`L&BYYdT@og6`_lY4876yxbO#!AZ6-sYX`UXaYy&4s+E;%c zKU$`m$dN)~MEMVEu!1(ovGYV414>y(E?kkK+=M$WPvSzgfLO1*eiulm{ppFqz6BuH zR}2RY+Az`ssW!_R>>tQQg4ZDA<+4dX+b9mYLTSEuVD6Cu*nJ9KJXz1eTMp!12n!it zcg)7MNfnGwhqQNrOE0IetBC`NJu5ZMzNPHr{%O3Q4 z{2yKFrb#f)gp>t#6Omokub5}VYm&Gvu9%6~Rc4z>LDs#sY--okM0(LmFz%OaZs^5R zq|LU$Lb(S$t5PcXR$Q<7r$M>qcqP0KM+y9tD}Td3?n*uQ6h-H)ye)eh;Vv_IjMua6 z-|_nEuQzuY;m=~?T9PUD=hVJj9^ty&I%Zlc_Xt!b z_P>w4u{k=;woMy_lIL)c3p2Wyc6)>NCse&7t>Il-QgwGyTP$5v`p#jS z`p4%E!L56Sdst|pyJx;cLBfJn!cs~RaW@>Gs$#}v04Ay~O&sp%3B#1lV$ntvU&dt2 z6BvY=zl+NsS$l_ElH#)C0p4nM%SK@npb-NBKh$2~KV{JE#ZRh^;iX%hKiTu!R!KPsS@l z1E8$6J5#-fX{cOAGp1qW4O;-^$VGcqnu+CKHp6j996>Hnu42Rcjv-zl!;Enml@FMl zvuOE9XG+S$7%xzL>y0LBp+-Vf0ax*aQ78aSjh8VnxTuaON?}J{*R-7H2ZAM@`Z6Kk ziS#%82z%O|BOTh+inUiWyhYT;)O>Jn-P(eZiGd*6x#+`weJn&)D1kqSW$c%mr=^54`E8J_|fx0 zy*f0@{VPP{_4C#KgXYC z#r1M!vmaE;o)#lSc5E&EaR;Yac4(%4A(!z~t)5Zn7@iV0@KgkUD0vn#CM}*im4HAelLO8D>ReG)s#3kdV zu%U3FHO)a6ro_3*6bXsI$=a&SGdU1Jw>4Z}dG+LBSV!k}gY`Xbw1(CZuzbO3lbSlz zF>_Xi~N5a;EZ0iY)04nnDcG;s?^ z(n({cX{eWCol7i%?&>WoZbr^sj+f8V4K2n@&~dRrPhZBjoa5G>zzZ$sXOzJ7*i*^S zpl%{l$DXfB7&&^a0Ocxf#!sRzN8cOa4hy~bXrCYYKJU!wB$92;wd!o2mEomVf`vhT zg5Lv_t15CxTII)W>iy$q2c5&&8)ovqG(D=wp-ks&v@nwEMJ{@JVp)vhlYUM`sFH08 z@%UEjdW|H-E|3DQif3NSF7J8H9(?jK}_^O3Q@Tt(3{2UhB1>=l=o*kK}{`OsEZYI z{zUFJchmM-0{J%8Wb-VCC%>p^`7ML-?)Zk?=8EB!o)TB*?{sJxeT;UK$sRhSM<$k+ zs(K$tWR0wet1!(BCK)yhBun9j@0)2^va#=PC%$IN2|Zv11DhHNlfOsiP%C0^Ip{7& zvd!0x+KjNyP=gN|J0r#GqbCR#AgMyekQDep0j2#$Yhm(q7=(35&!07bPa=1U<)oOI z@CmWF4Y}qR*35Lz4CO4csMCUsJj{V_@oGlGq(-b#jO; zFuog|_A5?PDbHOUc>{S)zo~BHBruIYMLg0{rtwtNJgk`qm{K}x8-P2CuS`J@G4}J@ zKWX7g`uX*8CBNI@Xeb+DDO{vMfgp-@cC0q_%FyR7nTg;@9(qq(V{X1KMbi5L+UUw; z?)XP1)rChPFlnt%S?IUI1y4Ii>^F?6;MV*{Aa4{hINR0aVaP(MW|QT66iy451;;ff z?<21HLenrb3cUgZr<7s+yOle>9RYaWEIEfHQ>)V1pMPqzgPJ-B;6}B;b2C&jt)W8W z&9mxy-%H`?;_9npss;pNy|FVQ8ZFQl{2~f!9akz9zNB^w%e1bqhg#H+F^u|WGRb&f zr%Vv|!QvQM)kubMy_i^?ZDP=+%C!v*>>!Q6(*;PD-TW?D)WK!aw`KK-P=8GOc3E;> zIjax-ZE^YA4lAPjbs{zU>7&BDE&v!wLtMtfXOk|49)LSbTE4sx?)Hor@bHwF)bq|qC>0ApfgRd*Wg9H;7&D+YWIb2T?k|*0ruQGL7dlKRu>sO6s^_Za6w^I z?@*QUX@T3rkVow%4Z5k|60}SSO0eCz6_eN{D{z^~sEw-gV3mV7`9|69z&Do3ElSO! zUByFl83RUd&)i)fXWz>+Mqy}fvgcQigpE{U2NBfdl$^cZQON}J-%l!{A^@U?ZUy7b zs`!#4>YwCnb}DmWto*mm99zNA5%rce^ahH7sKbrqqs#?o^J$;>p@kQnp;cYPW z6ZzSy-cKz7JR^g*U|Qc?unIWWs*nC?YRI|>S$^XeE%_17Dv(j~ZeLt@=we$_Q-c04 zNI-9@1k;nwC{f@>xzTgUxV4f#A_+R~0s6@^#wfW_0akLKV+Nt^Tz>SCj}3s8&?PJd z?AZIr?p{taZ%fV_^%{E(wmKN6d%onMnY_c!1!wq1UF-3iLif+e@Ym4M0%ufs@qXT&NTEp9WqG)Dr-``y=Sol&ou{9LkFH&2f!d6812w7?XX5pVxT^P%6a zP^&9`dkliBNp9uv#kFl3_Idh05chv#X9v=#O61!K=u3XUMR)TzNNrgiPv2hy!|GtI z1>Ve9(R<2Lf%0gt^G6E`z)vF_r3-h?45PEUZNb_Z$9*~XrK|8(EhbzS&j5W&3~G?B zQ4Ynfz^(@vyfs`$L6UOlTZO7`VW)q0UJ^r$I&A3jC`(%$w9mn*iV_+g9&-CC=UPziT|*d#4mL7BFx^J%xVnc&B3hJNLqGQ z4+SPv*<2r7G0~Zxh3Q}azkzx{9D-QkA#im(#*XlUf@$H%N?^uM>y021xC*y(<{|Dn z&ur)sNnw&oEqc!Lh<_hgNeod`z%xipqw7AZ6_0Uu_v%5zdx|wMGeR+>l;eVTk?Bx= z?+x}n3yOOJ_;L8>-z*DrrH45f$K6`X4xf-a+Ml6FlbGca6Or5ZF!;>O(ZH9}0JyV7 zU^{;gG#$8q%TDQvc{jLSny2HlC?e1Dv%60SiRX;oJKy)YY}vDAm>pRL66^n*l$APU zYHn5QAi(GF>{@qO&VvG$LS8Z$qFu6JZJgfl?zB1>7H6U{HAlc+pbo6GeK>g-LwgT7 zMP2GMNS{(QTlb*eCI*M4j6Qx}oVn=$OJ0qAlecHizg0Js5;qjA&SZqr1y?SpCv^1; z@FXo~;Ejcv(dd|bg-M1PwG)~pGE)v&RK+?e^%azJD*lb%J?^fD0Gn3+>F&KLxAD3*_buvq`Y{E zab5%rTawwLbfn!V$N903w`MJj(Q#^PI?;Yu16F^pQnLdlF~4GAaN{Ch2~YFw@C~T0 zw(oo${7A{wLJ^+srEmTrr4x8>>ljbin7ik5dl+LoLY)_OSJqcq9cqE7zvU@^hil)B z85kBlDO5sJrFnicSh`H;CW+pNNYi>O4r0%;R$8jLaHuM_E)wq(?(27b^61HTmCX)&CJbBLIFNbMJRX4N;@ZLs>CZTR|K)<_~m&7WVtMOKx zf{$Tw3GMfk*UR_ANL*`h%Hd;9loX3c#0HKqMUTrhN5)+^KQBb=3&>3j2|?Sh+P!*v zB2YH$DA3s0kw-zMn!_KxSM7#~K&7A>#|IM|BLolADD*Zh&0eam^}eDDerK%gw7c&>Z1_XABUpJWi?AFI^ zv-Ck)x5QMxQAxg2#f@+18vaYTHvp%|`x_;r`OifI6(j7!arg%OkfX*4 zpHa`kI(lzca&NVVd@it)k!EjVMTql$?fZKzF8*9bOC zmIM`R{lN{SQ%!HrXi|oCLf`Ty%dt4RSB$)=ij25QP5Ey^LnNLw^;2iwNlM+4yH|#3 z*J)`Nk%SAV!|(^+eicFx`Mkc_45h}sDS#-R zat6lf&B-Q?+ZP(<4Jey}g%B3h_Sqr)1gAV4TNA5-plGst!n1rmw9e&GpMqzjL|SqL zkjjwZfSZ2yzFr4cnJV)(x6#mfJ6-YRF%MjHVIi2WmK@H6Ad;ZVfg&VNo8DzMb4rK_ zctJ3NzL!Js?$fN-vDAvsI;S9OFUArhJEMrU&dMGJ@h?Fn^*3=XSrX(Am(ZfhW)-Ov zD1_}!%%x{D(rVlpR=UTgm4P^LJoLK^=f{?13ja^?s?%FrL=+`s&W9>S=t` z?c`F}n|zKO3;J9P`OdchIy$VdT#$P0eFvat!vyHc(*dJ*EAG)M!9Qrqgm;C?@B(-r zRLRmJW|w@}GzKXT&Wg`?DK(juR9S>}H-H{kYFt$eL2#v!jZonUm7{%F>oO__k27Ba z;^YkQOzOui0={dcLi7wYrkV^-B;C(|_HB=drNYCJ%f-1%M5!`PEkZYo`;daGqx|7Tp<;Q+HgkR3Y_zY= z)MvOhya3LE?{@@5<|0;&&BbZfgyyJ9UsEth_iwd{inN)Dg9ra){MEetdvOveyK5a( zIBoHyl+a?&7WJ@i6d#!lc{K+C=JEp0=6?Ugt(E!|0d42Bd zq*~TV3nuuj7CmoEH7pG`@?VgdBiumK@(K5{&?#?^*Awx@I~;d%V)%6RXHa&;xE32& zD}AYPy#1wL+D`w?o1D!YCB+Z)_)qlXBZ>C|Fci!}A!R1t%MtHfgVQ8$W>EU`-f`%k z-KWHOmMo_013EPMqXC89KA=GLU_h!dx5PP+v}8ua3V(Ow*s|_7)7#=+cD>7=^Pt zb#)4X7%ph=oZm0jps|*~Mq2MU%cudLtZtchYs(^g4YqfhG zaOMr$&k*MKA`NJ!n>^E9hKTZk3nevc7223moq6&=`hQ2Kw!0A+L-VP1d^x&4ufOVe zkL}{!QH6eD4h*OuDWRDJK4vbTDQhl*?o3<(;R z%UI&_mxK%XIXY98ZMz37{~_aouH{Dp{tyr{nPT9X{MNXU45m)o?FT0L?hiw4=LdAm zO>S~dT(j+G_{)vu4|ZY;Dt+odjO<~3_7JWr`m?xt3M+4hjLT9~G@Erg3o(0zoHM`p z4`ZNJ99m-QZ={ugPr>?SfX}b)9RRr|m?e*cJY^UH5P z_G!tZn6;h82&}5YjM8LM>5e`#SzFe->}m+adW(R3T~<+v=OBqlRu7{5+p;v(G5HoO z;q!v>`)Gkw$Ph%Z>e|zfqIhcu4i|VY4NeaM1@FJ7x4fgwN|s)w88OOZOVw6<7Q@0R zgozJccK|~`yuay_`}Yg?)oQ#HE2F9Ev=j~R6K}mZIyI}mK(=A;t9&H;e2k%YBB?mE z8@U^HXRpX%?a5lbJl4AR^ScA7SJE-lxEwXHHGqZ1KvnZvlOU2w0d2Y=-R=x@SR;c9 zIgq{PCeZ~Xas97#ebNWV4^;JOYjNM0%ky{Nb?HNe`scG-R8$ILYt$7os_p zVixfpOr3|Hmp{a;#DSWTP^A-B8^|Gni62h^KY02d90Gmd{Bq6&tQ_ArafF`YJB$tz z`fP&zx#9owzg;xUYhzv znB{s$6RVXyoG%d{wi%3Y6s%%3gELjy04?I?M1RsbzfiQC8)~*^M^bi2yJOEj!)A(j zFE$}8t?F0}v=KoU#>5Z!*=ZJ*bRR9nYY~v9G?}nYB|TWYUfOK3^2G>c0^C=oW>+Up z7U3TT^;t;Jy$-l-`7ym3=tj*p#fnf+$)8zoVj!Cc<$7#LO=6lspd5uRbU9CXE_tP^ z7X~ctI%{8gb(o~yrH`EBXr`XGrds(Z&Ltc)Hlh@9%PvB*o1t`f7+TU8X)X_d$*P(Q zvDorhcSWUYb?`*wyDjxEvww6yHZCnJ<}wE;L{z>DKrpJ~O`3FRQeD)745_iBE1(CK z@TDCALxPtf4XThjKx>44i|Tv)3|sb#$0BJRU5VM_c?-Zkk%5Q9=6Fl9y_K{e5)?>8 z#rYUtiJ^-!$vZ4>q^DVFYP3eBZ-%xnMnS3FIzr@(4xP8T&j;RH-rIsmltIP2*cjRls$dbTVE@6+I@}>&?^s^bQDl2J5@(o9iHjR?DkZG+Zta?HZ3 zU7B&|Jd6W{M{Y21)Emb8A0aF_GqghhJmH&;C$sCOHj8A(|!@SBM zd6|XxTX$;W+k^R~qsyi3kz`i47$(*tfEG``8K04Cu(0Ufh5}lTB{^|tcp1ASUa@Fw{ z;2iVlEO8x+dEVT969DVyB*GlI@R2`1nIF>ZxkDo({iufK`*tka8)UR*{`@jrY-XPv z6*kJ-TNq~WEFi@YWRPnJ07~ z*BhgLE-!L-3O{iWc%SP8*^EvD0Z0|udT@WtoYz&g6{(?ldKQ(w{beh z@B^0xN`$`zx3I!bBD$Abi>2_C<+v}TsgBu-Ts`d#d)cRSxk{Gz4ALBZQOhB0>(N_0 zL^7Lx9^P`wnhn>-IT7ue2x#uy){VbjXf$H6=z>_5A!wYxPK!g>(L&j4htnRFddRDY za$K8YRR?q1bFa7Vf*I`)(o{W3boKdKn|h67spy?&Jow+96aL{2+uU`O1UF;7`+VOS zi=hl~wT3J`38qFxvD6;CrPJfQ<|91jK4E^;E=0*dD8hji<&uy>VrRc7bxMjph^LeQ z1^Qq4f2bV3;FbI_^_ZTgN{~>dekL({oeD5s5n}dpCqrCTYCP=%+5-WA`0(sMosAL3 z^59EArHn);L;?2435Nv9?ML+Pr;B`x^$6PD=VLI-Qmi8x>4z-FIn<5lp1IeKoh78Z zieB9mZCYWd-U)9c8|GfCFhleNgMeGmm5o{rUXdo^UXAERn`c7tg|MC^j@aO9j&d}} zXu0F)P#r}xBrZroNhCz`MHCn0qeB1%MX?BIP7f3@Dai?*WiqAiEx9E)(iQ~1kJ0ICFh~Hf8EL@e}0MeSTg{dV>D``1K^IasC zEa8*SkF5|2ZQ8Z|@s;C33x^N@L;c6%st2Fx_TPe`UZhJXG4C-)^!4Eq`^XPJPF$Hg zI7mw*eeR|p>QfMulpB*4xG!?6mCEiuF4oRdIQ%rJ4s$lCC^7S^LJZD`>d>51 zXu9M$W#G4gjZB!5Xg3CRqO5cO;tZf}#o&3IFS>(emVf0}9uq>;BKr=kk=Ac{|71m5 zMH4sMwhA&-U){V=Ta_Z$_gQ2bDfg}2{t5%iXhFFq!uusu2?HkA^Qd*_;n&<)9Fu*r z)h?qE12w+$C8Y`$4)4o%>dz-J*e(&pJ{+|$qr?%?_}NqPLN}3_NU|Vjdn-{~c=4nX zDGWQ0hn&v$=ej77$s%DakOTa3Ba;X&3+Hz8P_b)-%%$+DHFTqlj$xPMXTTINzoss~ zb%D-L2;9(&;%)9vS8FEN8<6F$S#_TFn)7fL!Vl@aJ} zQLX9_t?w40ZbAl14xz?aPHYO-trIT&l|&&k3*UjRi2EaVncd;Q$;?+v1{4TZs%UuQ zp)s~JzzgEbo#$0TZ*c}7BO|-DNR`%-rQn4<>SW)JYSK~+?!+I2`XZ%L1W|2-P0toH zks~eNvj{YLA8ljUM;r&5p~0-d<^w8y6av+LwPuNnnwme7F-!dw6v=wC!27@idoa+l z&o8`f;Q&r^rW`FZCH%LwL2SMk7fVA`YA}RCV+!~_x>-@Z59wM?>m@^zlx_1Wa4-~d z1May?4~LC%^e#f%QcKlGBQ_uo3#f;`;mB?@(&8Ml&vstibyat^=+4U=KwR(3vz}he z#5ru;@a2WzGI@w<_78D_=$4^b@FsFDs}xKa6pk+an~o&3zt!KB`Hw-5uVlWdDj?jA z?KDSDGD{P*s$#>U>B?Xw4R|X-4+Yf+$J{+hKEarl#~{EU@tx+=p!2_>ozO?k zm3xzjpYLs`DJY_uR4zNuIhw=T z4BPIiKB7U_^^a!LAkk4@^d1&}`EdjD($8q_+D;2*_nk$_5tSCz{3t2IZ41%==D?q; zB{51kmr6U<8quR>?9RRL2av^PvdqUXO#nrK6Am2!LvpYMf#9?HNp^niBaG`9Fj(?J zAcACV8~PYKEx_0Si~xr9LaDWDGEfT6g1DOMf}>r}*qVz=xhqX_Y99F$ zwQT;?pQXZn8<7!phLjMlq%SqWc>}R*ys1)is2;+Zu-(=4MV)%9repWXB8`YTF#wq2 zzc7j73KOgtmJgkSdCt{o>Q)~N6_paj?S(`**640EWSO{Np7cLip4{bT|7BgmqjONI zD5a8QJsw$Fdr_|j`B;Wa+JsBC8)lyX@nAi;rb;qy*7p=CVOVqZjv zKTQeJSRmi2{LPiHgthF ziu!|KjZQxhO97ToM^z(Ulg>`5J5_g`jk)$bZsXFv{+IRQ1wTQ~!xXGWE4Ucb42lzZ zw9$!FSm8#YI5Hh-7B%3@%}bsaFLQ|C1qs2=y0FZ#pFa6S(uh1p*4sP}R*Q^)hep6T zlT7`bU;|HUe+g=-9D1)>x)~Q*9Xw%?=%E`9d0Ohc zx5o%3|Jr~R`rf*YQJ+-Yauzfv+}y!`1Du|j87nP>**DpZ)GW(KFmp07~c_c%s%PcW@|Th$M=TL5r%Rr2b~a~fD}W(uXl0FRrv zI4~0f8NF35F1qcPmq(-ig>_9DVt`|s!b?WSpcI=7N+`MuKZf}AgD>FM7fONcU7Xbj zMaDg>F9c4%oB%O975;&SO>Dn#%jhs%NOc&X>IFk%D&8QE2E$4^L0m;yccI~G1v1}1JOyFz zKsOYGIq6~6{x>JuZgM_*Yx@*k5bsG`p9(0aB|#7cM`|5fB+Qte8FNm!BPD;?_#x#oa_Y=5Rs-ZVwd1xuv4H)JeSPvipW-Z zj@xo}=03Ak3a3ii9xfHBr?KmJm2&uLg+7OCvgvJ>B;%iPtQg&(TxU#lfcxZSWoRGMmK++;VpY){DVVsqS>Mnyt8B*lw>`T+xXy`(^d1e&;<=g&S;c zC56SN&jK;i1-saBnuc4{p^~>O8NTW9$7qX{_4Y^-P|-HCKS!2146fEdP|2$IxQlXZ zbAfiGcu+!D5cgD+cjc%Lw71+nGwp<4l}`)Zyiz~GydzTvzcrhNSm9)x{k5Q8K90Co zsiS04^OMpcK%L(`rhRw#P|F>jnm96*I3>#}onk7dW2X1@zjzgGW8v^HZK8g6yngMf z*@o@){GFKAFsa>RUD#^&{(bn7h=T0ld8^A z%MomZev5^Vb9D2c@A!wsHLHUc1dOwL8-Xyz1;!n2>B__(OcyU5vDjil^Y?U*{Vys5 zP%EguUel1lcdPh_JD><~gGLctu8=c6$_NSxEg}voG2+s-7nuA*pQmTWw0ghtMp~e; zhvxAKB8G^Iv}s4b`p+sLtFN(?s=MYe-uBfL$U4%dQd*@FKDId!rD3<`U>x;!)>sbZMau?M{YDU$L} zhYx|@H@IgwbiO=ldvDpPf(von z>B1dh0RBPFrGa8ReI+cjTCmZGBJ>m#*zwq#{#V<70020hV`uyXEDC zN@<&Kj0r$@X<4@T?5h&Z6s$J$9DDxL!rM>R?W3X}~ zW6^o!UT1Ip5OOJP|AT=J$KL3V0BwWOnHWvkGbf)|Fw(Q^<8^(ny*P+8p%XFJ_Ib)m z`R}xYQsQ;nV2XcRVc2%fFWl&PV$gw=LzMw>5{m=Va1TD&Xn6XzM7 z`^IoC1NwnCvsH-d6mnPs;9Cc4K%I5+fghB4%LIwPvli7E?MgbBRlrCAeq>8F!VH~to0FtkJm7>2S z>Qy%L7_&Ks3Z(aqB?Zeol%m;V6dPsDN&40z4%h4_Uza{!r0aC9W&DfzEUx-akd!B- z5@Aa*{K{d<7fppK>f-dgxJ@<9s%DuJa3c^nMkVuA!m5P z<4gxrO&O-*2VeVfNf9|TSK(<7m309=b= zjM`sE%!T_v1T@8EsX|MRoG5VMFXD9iB5bnn`DC6l5Y>z4V#A_^BDb~77qt1aNC{uE z3V8WH+Fu#BUZ!lxzx>NH^6#P#uoAM5Nmgu_0Bf?WP(N5yd&+L=0)4+$?IRT7 zXS8L;_6D+cI7=)tkENCgYTJSm3Es6R>|4iPG25{z35ui_-*W;_nHjj8Ot69!3_2g= zc5Xh7GLIflUtis0QUwkhyz}{{Z){F<>Ag2Mv*hhp3KLbQ-$uSitFZw@o?RP#M#-Cr zk9J5dT2YLFC^N;^O`uG#5^+_xSewqLN=VBDb!ROGnQV_41VkWQJ$-{lI~B^>67_~` zVgW*a!PxuKihuUw($6HhC_q39xv1>e@oNgSKuTn==przvq8mJmQKMtU3Xylqyba>&N68e?n;F zdw0Q~#Fe@hy7B(2Y+3$G*4E{T*i$jIqtPTKftddviW~7X6n*4;r_pKNW$)j~1}_g7 zxLIF1qKD&=!~t*VRfDnmm@i#HcqbXU=@fI{q(^WUE-RR8JFqPSqc(cI8J5XcI$YL_ z#$N@y5@;>3gxL3vU)A?Xwh>DIzEd5%D0t}4c&|}b?7&OdCjo{y-8K@UX$f?ot+jhR=G;1~)`j`+s$QcAKe+cke0?)r&!kg0yuVBwq zliNWW;3BPq3O~u+O&|Gpjvm`&OpR-lg~T;>>LB-88>c#5qD#lB;pVr^Z|i<}sAcTc zUuY&&WPcJ?j`!M(3wsrF5iZimD7RkuVzUAQhC{w;9-TpJMkiFRcqbA>1zMp|BI~OkPtSwLfX@cCZ6qRm0bg_N~X4K#fromM~Q|w zyR-78h?-V~UNlWKX>g$#Cw#U~sIMXSl9*c-@FD&i-1djM8#3lr`^Pb}S!%k&VHzJI zo5Hg^K$N5@N!%y+U+}tUmScqjH7=AWqVfQV;>H49DK~_`GDR~yEmr|b_rI5lZt28B zldJI5Zw7ET8epPHdMxc&0u!U-J z$%>ATvGYom-kG@h>g9O>^u%8Jn0 z?e?|&)oSe1=b}q@qA$0yH7Atj$4)PPiNVz)B2(7%w#&$tn{Iy9(Gd)eBMsBZF(sKZ z0(8)B6RZyG1N&zVT^e8{fPTo<=i4(FuFAZ~@ON4eeNh98`f-;Iiu(ruRbuT&$##uN z?MDV6W=qNol#U$$>b$iK>BhcH2&b|5r0JNnKvvjI!~tI2&wvM0I7Ok6VO|J&C9d>$ zR7q#CU(1!zn0UU{Y&KchWUaN!Va3^%%a`@$O;@kU{1n=R@X`A zaj+=PxDQj$IMre%Ao>4t;ID2rhVe{k8LT6cCS`po2ZjaMywl<|y%}tW&Xot0f41mC zDEC*vDh=ygCrax$lIm(kcM-mr2fD!Oq*-UH2b4cZ9VpG%2(7S8t0x9|q z=|S>YJ4^mbwT;yNxQ9s>Fj-t7)s@-I9lg)tY(TnfvnY|V8-B4Jq_NTP5!!fsnI&#-G`;O&OtlS5~PDpodohqlyY zcqashF~P}c8L;;}jS^l)KGC;WMfK*G3)+icjNMACGT{R!9{ni1Ns6RE&eU@$?c*Nv zMZ=T>p|{A)^NbX^Ujl>u+J2y_(#1n#T%!d4^Sq8zM&MBvmhNe^vFP4HZLmSWntYpX{Vd2c%xW?9BWbVoCZmZMw~YxE5?7O$YU9BH2FRcbJjq`B%nP8u^MU1KUE!36(}EGe;D+0Xtb(Lu+$w{jJf*C| z*?Zq#K$!9cXt2zcLK{L6NNfT@UQ44taPMl_P-tqjbB6OVrPvj|ZA%7v!n`?6C=`je z!_KRi1OMY#5fg>a+a1ACUpBg6?)(K^KU9YB)imT!UIFagj4cyR=_)(>s8{|Z6oD0t zo~ik&biIUdoYM8qYf?DS12sPLtawv0b-4S=amGV#R(Y9Z4MIlC?V*)h`1Vf_oZdab z_=wB1tx2|sE?t;YBnO<&@<;`f%~oY>xm793+^s|%z?UEBL{_`L)pVs!XtAEte!ZKU zW|ozxRtRm=s#yQo8Vi2;hScvzhi*d_43Ak2D3()CAAK^1G3cx{ig;@SEdHAb?*xsz zht!D&KIgoDcDeg-nV6hge!WxKxvb1D@H>zC>`<8!qu&%4Ke7!U7TZyZ4dlER=CO(|0y&u3FFp0p%w5+iB#ZDGGAASD0Hi^98 zQC)ZocZ=tmh&o7TdWzdEF5Va}1pAN8Dk?y%L>bgac_IxT01D`?#%w@YT!|GA^o9eE z_}3||f-zZ|#hrjJM~9Bf)sHxA`P1GIF(%VBiP1H_3PbVz@(YY$7YXxt>7sENuO+`Giz=zIiX_{weJ-D*O#ib)g-l+Qla_T$4%S6D1{3aNl= z6mc@L%#Zn+I)G1b7q6YULvGG0P+hUucVRw; z^&zkfMaiiMs|W9z4d{~3{vS?@io7Db=%q02g2g+<2{rolnm^&g&{=x6e+@6UK!w?? zJyAMGu!U3+k!xvXI{Q-WPDvNo3S|4Io>@_z>KyjQ5jcdpt~>qKcHs|!t_G0jE&+`f z=awck`}tNpswj3`s8HHW-ep$qP%-Z+`STVQXOW7zeuML*z0{iIs__$Cz3 z!RUJC{%{5MX@uRWqj!dp7PZ(pMCE5nm5+?qH(_seddLD0BWCod{?uCuJs-o_7lI0 zA%4b-H^WT#B{Qp;*o+?Zc!Df+O0X8)1^C8d-ZVIx_0@f}x5hc-w`uo-L?Fh5RbS%i z)!q<*=Nyi9w$hAV;lB5ua43S#XvucQ-wosrLnLYW(rIMjrAk&YQC>vq9+XU1^zcQt zYftvV?2f$fAwg6WtTQdn7Wp{D$6Vk*j^W*Iys8#cVQFndqnvk>H6|$!9w}yBdtjVi z$yyXqLnnixzj-*f?0CxPr{a!6sp~tiBz)8xcpZeL>8kR(px=|@u!$ckxQI{&wRy&A zq8gK&BtLooT41iZ`wrl_G9wY*>Q0oL?MvuRN)h?Pa&5F%o-ep-hK~_zUM2z4*L%#J z!>_;o4k!qT&*5B#Uhi>JnZ_(E3O>85#UN9#bYQX|cMYnCIjq9*u=Uq{h(5XF{^*0y z{hU&=v;k~)3Wosv0*NVlo*;8nr9n)n@<`iACOzcUksU^1UU65uO`r~T*_3;-Vz;5d z9Nz0fB?I~QvKJE*Sl~C1CYf&%_8=;f;zG|+CMG~@cZo|L-X>HWsx(MmVRpy?b8imA znHXO#fY_)pR!`{ja3En7*OLGcRFGPCPunw}{;cGPfC zDel2&z{n=^Gh1^XlE@c$2P~G;T^w;i6^Q68=z^Lp>zb~REd~)waG`s6>7VN?LbRk? zTe#rb%znD7sz;1bP9KxDfvQKQ}4G1Gkx@srX%#Wt3CnP{^?YV&Q zi5=Rryto2UZ_-`#|5V6?^1@+8CI7MQh0qe7E9uy(Li3r2ivG+2;>PcW5F5i(oIAWA zWphKMubvVhve&mEZs6fFfk15FD~xRZsC&COM4O|~#IcC$3LvYnoYJ|`05u!Y5rt@$t02z_&|GZ_*wDGQk0VvUVROVgzPvPT5GR zS=_}z1BrQt9f)hI{@NKPwU_! za$<4?6HC|gD0HrFG}rI-72s{KlrP}N%$y#jA`Ru}uv6G%xUOmlNHd|oL;BiUa%FTZNGSBYb8vK9Y=c)pJ5I%ld_)=cVoI? zf@_A8St9tyx4ct|av_*O#a8v+m*C%)-7+|4xSlv+?&L65m6yz%SKYFp?a*MZy6hu8 z;XaIC$I2FxZ9kwfz#W*ICNytTLaBlBCq8@py8sO(+70$GgUMa!z70^)Q=5=qtJH-{ zv9Mv?491%>pSkePk#=PPuQzm9*vO_{ZWYQh2d~`Hkqy+0gV>u|Fd{r0A8km+UD%(w z%Z2VHO|5hp*;AnrSTM2Bsvl)(Ey7a?CIX~-?EyQj<^u^Ph+j!BK?I>IP>+alE@p)G zB2Nv4n5|JdgLmxe)S&x!1O+`izp)wfDRo24f687p`9-w%GL}w6!nAP`% zfm(%5Pb-$Pi03c=@x~%Bm){!_jxS@WdiGa0{*oycj@O*+v>c3Em(o7{$sQzZ;@XbQKwe+axZ>Y_O zU3D=#$ub9nS^lKVYr#Mp_<*rygX$UT2ADu!OQawJS}Ns<_l&Cm$SrZn9KPy>4e^0qx)9UaQ_ierW)tSq)TI1d8*4UzL5Qp6<{w_apIc^{?TG}} z#z{CpSYiP_cQC0{`bRsZR;g;zvjrS(lI-%{WbLi0 zrE%80S2CnKWMz?J5;LB}&9G3OO7fH;cg)sLypZExR0LM&#a#Hn(A+^D{K}V1uGNt`$U(fnGIDM8+ zf9`=66Pc}7Xt4)+2Y^h7b=~_$w&{@w&DdgI5$O{g{!%N60UiDOiK&wbrQZ6y+BXaV zW6rSg)60HVhXyXEQ-qnd9E${G=hHC`7LM-sij~DAdLW?LCo^lXk?Jn zKzg5+*`+7s7w*1n@#S7*sUIMBX~pROI_n@i?+8rRI2O81#piga4})X=~m zB%`iW6Ti{YlXq1NUd<|0E23*5O`TbPIdTEL38B}{dfwhp)uA7lW`Zp%Ne{E<4O#C< zWc7v=&+>cf7LDfCit2sy2FDnCWEg%0K-SD=#Ve*4hl&f1JbVw>Ah!`-FB#V_$8hH@ zD!QnFM!kFg`9~H1+CYh;M~-m+&{22*Z_~ghhW30_g+*)a ztuA*bM>5k|AIqA$?1DOk))>8=GSXH(r#4{CB|>9Eyt9S`doKslM)Gh?AlX52$V<~0 zr2MzPjG zpk8CJd|@6Ei|rc_S=7)5g1Ov8fStGo-sq$I^?_u-&#PB$##S7wU{mL==G&em)^g@? z#dVCSE#&>g@r%|Nz-mt2zlw2D{y38#;(SpcpFk3%$7FY5wP=C9A#PN9sCq*6+aLm9W zbiaW2=<8tT)L-Y4Pv)^YHVzrotzv2FN7+n5`5-YFAU(dY`~yw$ zd<`G^0#!%ZKE&5A;O;Z8q1l~418d_eF==WB7XbP5vDe_-dU{A!i7HF+txhh(HMPIm zoV}lj)vFo9+_2bMS}ou#M75jd#%syThOp_?bGz_PJ(Qg}^AQ$vTGR-zU+w{4kQWS0 zMAP<0JDlH=HO{xsHx%=Ea~F7+!b0~^$;DV`ZmhK0>Pkaur8=UuCG(o=-_o8MhuZV6 z?^1sok<&x1jR6r5!+Rzck12c-g}^yO+*>e|Ru#$}J4X{kJFE z7Md-5W}?_i&ER7jtpiB~Ct1yfT2pS1?)7o`c&qBFo8A7>CwU5%E{uw=&_tsd=|g1= zf^R?-bW-WM5BUc?ERn7YCH=%6fu}}MFsrjk#LAvg~fx#kx;nSE?dq{MWrUd5BgBN7+`22;hybZ6X$L>bXK& zeCcW2*X4vqRDh2B1s?LUexrpGwoOI0?EVXlx ztwFsG6SwWC&seKOVPD6-Af9Q>)BHLhloHqAy^=Y|VGV}fx8ZbL@s5dPz`3m31-!fY zYTQSh0xX>pgW)EXdK$nBF!$K2c-|b8%v&er;>9bl9?s=w1p$exd7BOE2z(y&#A&21#%liGC@m zao>PzJjF~G+$W9MpVmX?D`s^*@lvDXm$(2HZ$(Cd)5_;E7RUQ^)t zN>!Q@TJz)773%y`b?YW9O3m{DQ`|H8G9ff6RaL6Jd=jF&6;EOIoKgnp)s9^=K<=m@ zurS8}?YzA^!}}a&n7LQR4M zdzgJZW0>f*72b|rbKhmx@q-O>CvM4U`Eh+!N<7NJEAAI#Pa`GUAWLOn&>rP{@Qn2; z6Jq~$olmP$okKX_a;wTiD2L|{j&_7wunR1}@o*Mp(ToVk%|ZMUPQ zqE&&w>(kO!o*w?Zl=a$GSft*}(-SdFbkkXkCHtay_^Re-`LXej z9P^0sLfvEHsz%(4l?VFO!i6<#Hn{7gtD})#p(22D)AyF7HnFB4y5ljA|}HDCm>Y)RhS9eq{^847Y?duaO)o%L~ey4x-@ zL(R-{g`v5b1_7vx>HjUg&aomF@@oE;I@y@K@+)2rE9jTRL$PKg9DhS8gfKJB6{(N) zUsXW<8gv{>;Y)HFhAmqkC!X?%Z zPnePH690lx7&CD{rAk==VLF@9*Xw9xB!m37-xc2?6!+{^B6z#Ydx$XC47UuFr(q@& zH~drzIS%ulohl9(vpjUtb{&`5+l$=={(|b$Z|?x9l)c^F9;2RI6{}idypsQLSkU{> zL{nF^yld61*j&o;Fqg||foW;Idcrtqrigx8kpW=dU75VzM)V*@shc<0j;NTr`vV<< z+u%88kR|Qjr9unTxUm(=#ly1M!+M!>kP=xWKUIh2Qf7sZ>I(~k%uM7#}nf41TCK>kann}pc zC%b7RvtavvyaH%{im+Oyj zS2|5R>g~}g%L_YS{?a3eqZC3=3u07cBa_Q5)nBgf3%;Pjp{wlq7w?tS4gRp!IAvz)@>C>>#VR524&I^stjfzTaUbAS*F+_LVyEeV)TDK`c_OrrwM`T8kZim!H ztvrF6%!LV7P)*kI_j!UJ0|prozi;~3F)Amd9*BCpFGUKRuzUNQT&Yys(*CnB2sbRp z+I-m4X&HYFl^+P37uW`rFxx4DobRKZ`IxJMBYENr&C&tu%@@37wVK}zHzpt)NPLr| zTL{|PYN3zBFZXv#Pc&=~$lCzJU0W}r&nQ%kD8J;P$1zLxK=+&27|&wf8-f>pF}$KM zk>skl=$W_aKp}Lp7(nzjeQ+(usM(u(opl=U&P%a7R)DV>ypR@_);@+P_6K^;=(JD|X)DRb%WTSh^PwNd}IJ1to_Q z7tWQiWBsjIzW2bqqIbpz?T%$n*INGtxAST>p2x+jKEDo_$>+?rm$Po$gSYEMc10>X zYd(yc9xsXq&Y7!jY=W;k`?b53ad0Z}WNl3n!iVPs)_IGYg{@(Bv$ZRSI^sxUW2<%U zFpL_pokK|lpmf`t#e>c~Mu4AkPG_kPOJa?O5CAVg(7!cCSWY*NYi?b? z7}^xhlpIQojz{M7+`Bf6u;*vhh$DY+hvp9&LQh!?SP!52dgxg?pQ_4B(B?0fQUORo zP95Yfm`CBXtQ|O(fBlyJNLqO$tELcQGxQ_#0oT?d=EU1hh9`h$v0NzYzcN>*@MX6= z;x%qu3SvD{5n?z*f*LabQfXB?OD4c%jSTJnqw>d(Y*=Phkx05h$_1lag2cx*!(=rd zv@c)xK_7}B_nlD~$3svb)(VSp8A0|8tt&OW=KLRGJwSsjnY=mYWfWxYCA?03x@0L> zt!=ia(ik|i;1@qjcB;q&KK`2a?4KDOS3_-cPJ&IFG(3oy9WU~rgDr@b#a#9IvS9)a zt1>(*`xrVtW8ym721G)Wac&QdonkK8Pq<^%tH!6eC|!Kbx#`~~2NV6A-vB zSw8CW&?;f2KBDloeQm0EjV_A$B+K-AG}g^u=-sw3FQHxdM6y?!iK4e-DnTZ!slZf(30|rWIDWZClIX%SOyA;3zwRgyqmmI%}V; zy>1WyZ~`_q3D%C!<{Vaz%ok#_hokzPrUE(V6@G`s5NamhPgH!MZ}CezHtB>f5H>8s zY{jMJsOK;o7&17iv;}z;*~7XX>rSEcpqzK0$$n8#q$vnaA8lb8>u6s3E}hJ38t z^iTST9d|M9#=$6xoVJZ*(O937MkVTSFw}Grk>7y%+2}f7n|-9NA&LR2@vMp*EjLs| z*wfMgjQY?iaXL93U_P8NRL&~)vw#BSE%eoyfaBU@FJoazZ~qT{qQQUmZj}TH5t<*2 zhZena7;ysFpBvv1zdxal0l|^0Uc^#vF$=14H9czitU17`Mc|HOo9esCz`(w%c{Z+N zqL|ts9_=e{K2Sp)Q{I|QiU(&Ma67P)&2i26z=#B0i`_nKXN2ZgXM}FM=54cb{RZ25 z4w(0ihsLxdwu2)I4U;9VH~$*wkpv}gkS(%Oq-PQsN#R9RZ=saP%eepkTxu-M zlo~F~1%?_xIna70i6oH3{TU%i^}a@fzV(cFHeN+GbrcB31z@%MP(zE$%N67odCPD- z1=x7om+6lhHf?4K%v^}zO1e>9c12wS1^Il;t^XxsOvwv|^6wbC4YDIAQ@bxVY6to# z$Ox`=4Gc#Op;umI$acIPX{j!=LK1-=42|*QDX}}3GX%+>)Pj73w&GL%9cYy0Sn$cg z@}&jYrgjq;U!WhYMoUde8dK(3>7He0EZ_2qg_3h?XP+(4|3bO=Pd)ymu=*pDFj-GZ zc_414R5XB=-Lr_893BT-?LVt15uLMTR60q+yvD}`w}%SV6dNSrvu4G1Ql(XqhtJ6PM8*ml-0e;eZdFce;uNjqi@QdKv*9y`6>?tW0w%J|81oJ zEpw<;%4ih7IT9Lyd6!sqqME=0y_g%dImcdx+0rbqaa0`K;5*g zD_hnS8GiBGaxt0`F!>usFS(L*kw>QR{vM|4Ig3ACPi?JOOniK*o0rVNzth?3Ik!vl zNO{f=Mx%vmZB^yDYk3d-A9I{!F8QSHZZh&m5eMe2>8W2&<{1I1O9pt3+2kNs!H@j9 zD`O|X8m4EetVyakrvg2C92rRc`+Hym>MQh|VRkXE-o={}BNV6{It-zz)n!t7rp;r9hh`kD?4p>%dwSZDhs#U!Lv|M09Q~4&Olbxh0at@FwUDb z7O3+4$73@qdgi(aeGn^&ooH2=kMIiAYamuDMwx9OFJXhT^{EneVkP}&B*M&m-(t1s z;uHDD%BS#^m60~;9X`8@|(kqD0mhKq$aag2R)73mKhx{aa z=>nca<1lzFCQl^5b{sdl!N3a-YBX9ObAp}RmroMV;%NH-mIT%aSg1R47U4FcZG3Vd z{LCKz^DqX1)Q*D9tBkAy!*-7eg1pv+uRFo{D^zqq{&t~NT~1XGC%Hmq}Yh=Damc!n9xfc&_Szh0hv%SChH z!bmMc7T@FEn{!>u)mFOVUfv*bCiHxP3~?dy<}kMav~^V430*w%3`D|D=y7wf1;|w+ zJ4MK4DKq|lmr=bZf*uTLqPK}4>qITafa<(^^TVDi%N#jkzf*BdLjSnWNe1U5=ypJ? zoS}&xv@YtCWT&f|Ov2`^|0Km=?32m?D)`&1C+(#bk{$!TJOp54zQj1^SswWhl+^}| zj%X>cH!hqiOu?lBcX3Y&nW|iZ4o=O{mMlrN#mLItbe!GSlSHr0WDhz4U~}$EFzJ5+ z(sutGtKl1aZ4y@V_=_N9XsGy{p~M)a8iCJ1ZDKXMQGWXGYNz5q;O@OTXuRQvp8Gim zm+kdN_E>ekER|T#><1wwJh8wRPt+mYa`J3{4+-oNmRh;tu$4!`Ix!p|{04o& zE&s-xWw3SF{5J~MdU@~0i{KS=X`wd?8rxB{>2!K2Bq@!#uD){w6{A+nAch&L@uqzN zC_H2v85%uRq#A!@@?;?IUH|4(6|<>U&P<2WsF@3_Q4w?MY_LsFf>2RFEpkic?>4u( z?_v2vQt|GW?p^K0oENchCSekuh6QG?;g>rAE%}d(eICPWp30eHgl2H=(5nC)1%34^ zcVvNn!U%5#ymxWv?g01-vh|U7t4da3=E4RBX z6xDA)9yp$6yf_}w;(iZOW&LD_lGzw#zUj>oOY+)T0zxL%@A;HUflLng;B%@)1iQ*D zP;#V{S2;6`!2_>?V~|L$>GyDyq}L!^CGzDMp+E0-AN7}RZl(U%_J-1pHt-9thth*| zj|xJ&+(({Omk^#8iry{hUz@FtvrbNS-~AXXUpL^Ke<58zzI!6OZKx0D7|S$5xF8Jz z3shQZ7AJrj+5O7?>D6>}(ZEvff-%Wls<0fhEg2jHTE@}3*3mtUbj{2Mb z^V_c~9s`D`z9ZjEv7ru@x z{W>ZC#6Oui_1yS$N*i6iN1I#~}fQ#(a%cqsC9;9+_Hm-q6M*%z!(oXbJVQXEqNfKj@B0_0$IG{u(E5Kn#6vI>A zT_7pN?JHp0e!YkdZHt&1y!>>4(pr$xOouC4l43f$uuZ3PTW6FhgGEn*Xvf!(VlHxd zCSC;5VgTUN8b$^)LyhdO_(H)V-&uf7M_UxuJ4U5c8oBKH2dvGEt=Iet?BkaT%J8}o z`)pLuBUT$OF7hFqf2|u|nL3s0IcYgG!_sBDl%xY_WY$+cHzd9RCK8hq=1@wbBz zc|2g`_>a?zrC96$h6LJXr@AyWqub4h?3B*0`C)fv4qr@C0;;=v^q_M@e2iReYcC-ZxuJaZ$;`exOrfLM_ZU^a zduglPPD!|LJCxXku$RpOdFnt4Frx+rWi9*MnH|Yhs2e7?vzdQCJaWYqMv*)sQwSEx zKdd#;F@x3BGu3COB8c`$`nxqm>H}+~&$rzxLz7V)R)I*(%GEBg*%Q5*7Atijd5Qup zm2%C^Qsyk0!=i0Yu=i@7V1ak>yb}SNRWHSM<^_0~M{gvds{=H`xd*u3kRH@j;n7+1 zS0w_iq8+#}Z7t?VwV9%Gpb>JCD4K+1+32-3<6|b+9CF>{e_b)jSdt2e5?Eb6XK>oV zjk77VbV~H(JKVJVN>;=#O#3gD-5CsQ>e#7yD^{R-&2&xdv@}4zUxk6UPQp&*W5Ja8Ao-WJmw6Vxbc|WaX~hsyyGE)@ zuA5=y&0IJAUHJ}4=10u9*_Afu)cruO4A|gqp)_t;V+U?iEu!yo-}09}lb~x39CnG2 zn|58yf{2H;>luC5EjoGKWL(HkSF7P*_aDhN`gHfUcTW_(xMcs@klx|hm*`;l1n2vW zPy>F2B=N*Omz;ZO&C>Y#(lg-j?z@g~-nU$bc^` zpOrx-qXL`gQ>`-e7H)0&Qr?%S!p8rdgq2a8WTX}V85H~yII|vw_X9Nj< z^;vi2;1_^$yclq710jBPWW-rFTROzII4bIOY}U{*-Ax^MBBzuzXYG&7SR{7ZrC;&A_E zpu6}37>2P2w(uK#e&Yu4hh<)zUN(#7a0nC3)xd#u#%a7CUkD&2j@EdP8R&^)x(oXV!q9<2#?K6`t}?Kd94ig(;mtn2XLO1_RbDKJk1iw=ka@SFPow zoUM0R(+v9j`ATO2ct8h);ox0o+-HUPF4GdYTb=<2p#}c~zP~$VEN+{W(d%J2YDSMk zK{E*pKk0d-{u%I?uK+@ku|P3)s>!bh3-FzIuBFGw7R%+LZ?y??t0zssI7obhfF3s_O{EgaEjRAp%=w58ry9&%C+VS(faA?@^i9*%IA|%`0h?rS1j| zGH@<0sBQzZ<5+7J%P6d7OI}TE5M)oO^fyfG<=_%17cEz<99*zV-ehx^4<|RqmbX4? zNG~D!>GC?fB&)%|?H4_SS0iY@gJGhD#-sH#sK;k_3~gLbGGnSxo(%sBnD@OV({JT3 z7O_1?RjS>0U-qNkT85P++m;9pXem-7-kSIwl}MRoIB(>MGDRK1m))wIRmX?;;7z;=&_ccdQ%ZP^ z-#=4g3+IwHnX>07)iv*Gdzd)=@eb)WdSy5bS~8KXS#i(KeCi`d7&|f^s5xCWS~%B_ zNZS&U+Z6Q)R``wKDBf~124J_E3?d?z0NgpIu*lfG-D*dQjK~eYp9+I0=s25ni`Gp~ zUis|VOY4rG)c1)<--8#jEWjO%XJZ%RP~5a$`KLvIt@Ol_L9i?#F9n6MLp(T8yim`# zcH4ij6t)2W9pK@w@;t>-Gdy3vW4?`T781m2>=h6$Y+xD;kQL(~8%Rk?6U zPF_}KE+fhlM)cZP6-AEr!9-t!iq7*#a{i}OWIFLRy?kEenzym7@I>cZl?6#8o>OpQ zzvv>jWDPvOBwX_vw}9Iqjv5(h+D(UHm}u#J(+P?eNNN1Xu*u_4>ly6 zXka466q%b`LaO0Yi0AANNn7Imw0Sn|pxb>bJ2-$$HlV?>B2TYo1 z{a(wE`nJ9sl5Nu(H5&wYwfR78Zu6!P^0S@$h|DG|`G-6HEh6Rx7qvh^ZZ34R@OYT^ zfpW*G*_*#!F|{%}M8d>9li&FE?0)QabYlnd9vOdkyh&-rlzqNL_D3fupOuMiR@^Q` zRe)U)TWhv5%^OsNA%5Eg!F~1G~%%W635=!FWvRriNZgk}dy z-6%!naZ_Nz$;%rNK$B`C99xhJu1A?5$f0pK6U5ebZgYx92CaaM)?X`Zkgc(PMRCLb zRjwujC1G!@3#z~r49{AD*0MuFfQ7+q{r#+)(ianQnva?Qv1#sx3 zqv{fE`t6}M%x`R<(Mh?nxqw;FxBBIKiJH`zfjdV8wO|}mygwUf1upLyr;PThdJz~t zN!~pej8){!m(*%L5Xl{Si3PQRxQaisb9bzt_cra=d(N&~vHk*hIl*Ty&y5ax<#Q%-IswqDUzQvI&Yt1(kcdW<0j+Y(7U9ggmxOU$vs+cM@Xw z)fh+5SXsBW$;eN5J6JfQrnx_1C1hfebo*%Iz8!Vo#P2H8>T|eFxD!gItobO(_o7z~^FvqIqyJ>?SsGg!(-4@OE4Hrc@;zz( zs5c%pVF9vdR6s22(}xqFi%-&xK*i=0z5A+r5E61-Qcw$Y4-Cwa^UAA9JDI2zntK(z zDDSwMBbBT1qr`%=VjO3jEzH;0uu(Sq3v-iiKIB0#d?Sw&c!;$YThC^${(yAqkPy9ruMM8#)PKg-9Kae`Gm?D| zED7C!JOnoOyAF-sJR2?z(c#d3+W>qWR+^tQ+P7=BHiJ)P5L&q2%YO)9;$h%v+uc3G zh#$%@cG#+U)*4G~(T|Y`hK>x9fg-kcRKbi;t5yXIjIu*=x-AV7qb|n3&pXU0 zQ{TUpnYzU(hp(55M~qTz#H2449BC4d$akVla6Sh425tOT2OIr*Hmd^BdJLiO4Qy;u z9gsm&?I9R>Xqnp$CnOSI7Yu{am>UtYQ%hZ_W~k-Exe2h6o><@5I)4_S`Qyh(BwC^N z=N;30`+ZOe>i91$ef*-3FxID3)`Hf3A#i5F#b>FvtN7T_9^jvoS5K|<%G5IPX${iF z-3H3uYa%=!i$+4Ver}|E2p%CV?dWsU4o~3e4`$R$WR4};{9ou}SPpXd*%A$!bs>;B z>(cc6P1Tsr|D>oj22zw%>=d0kY*qKeOjg0(%fR2i`m3fOpFbBwfwUae@ zv#2nVC8Q{zO|<9oR5)YqFGw_)hM)0IGj)Vf(KMEj5;LXpv~*Xv^IL_bo5^DZRR??R z4#aE=KO=C1Rdh0CMO8c0N&KvUl=AWI;FIfdtn-T7b929%q=-485Ato=iW2v!@Lo(g z&oKc7dH;eg)rwgbBtAO{e`6Wo0raX69F^H%S1r7+W)DX`c|?K?`WrHn#LBO0EU@7-<$Zoa_m-t!_OA10IN=~8UqxfD^EiuA6u)2 zmRKcho9hL4a9~CS@Ja?}u3B>fDj~ujy`<&rihR_~EU;Kz$uCIO3iCluge~B^i`sL? z8$#64Vuf3_PI&>}re6v;o3!U4&KK+94I+(uiLnzNYN({f224(3S{7ZbZTA`e@~-H1 z6b06i9iwEY(ybNH)q_MUa;a-M+gYIcOZU?D>d8bdwGbPiV7f)Rdx`4A&b6_$C<2dg z9x&mD+iue88xI=`RxpTXQy-}xQ-FwzGyy2qUSqERmr=EOK^!~g%bGm-_nUaB3K&J! zohlI3;zU2qarYb9gBriwRcbgJxqYsD--`yN>+bWEeC*4o_ePcx3vwcZ^{{E(cbebh zK;(aBw}(*P28|p+$WhJmn8%g~j7Xi~1l(&VDM)jex)xG8{V3f7)7mHc3t|i_r#))@ za??0vd?%VKn;ibOc$W7yq>!8a3q8=+kf3}>e^;-$FcJWUtECDE2TEMh0Y)1cV#^o< zE`+@O1J;j(+nY{q-Dw}qVHBAgaqo84RAQXJ zoyRj`B19u(-=fcWV7&1R1PCi6gs=s*@UJfe+Sjo7I;jtGn|zWKD7tAU3{16I_kBeL zu6MBpDmHW#NeUR?d36M_R|Ov_0F8Jokkn%k&7C^$&fwe4igyCeV%Q}tefHAwu!jm} zIy13N`>>B(KVjq8P~7)i=O3W34ChdEGofgIp638z1}`%3V$r?$x`Fw^H^FS zR}!wZo1E`%bat7Y=xK`h%8hg9^c%7445NVs7a|A5DU!wZhpjQ;GIy0EQ#=;(z8#S& zQ~@3q?Z*kteuAuxm0Mxwpv`{V{pv5N-$<(0S=L!pl9+J7Qn4~BF=vp7FtBo^V? z$5x~5E`CA7`0z)nw>NTrw6_jt`pU~6ZfBwz!GXd#1q)J3e^TvOYjNPXYoFwn*K3gG~ zFWaq{RwsE|?dXILqZpgCq(pF%FWijVO$tPUYR!F`4-JfAXN@(a$4zvZP9#HDMH7w0Ss#1ESLkwSU1*3a@*jX*Qv+Rz>kxE4e8PiyIS>but8BiC`2WU z@~)gb2WljX>5+|U1Dh)9&9I`8KOvzmo(&K-hCdI!>oN!DYmg}*M{;sFjSwGA^WXdF z3hTn8``G4>5q~y~f=PjzAceVet)pic4mt@=dr{{|-Dn;|Hhesu_S!6({L{Q=X{`Vy43hL?>&*QMq8v_KwK zLC9B(d+mtv4w#2V&bL7Uboei{-Bmc8eF{)oB;94-?1ejV%l;3-qGa>=P>cj_q- zfj%YC=<{j-O&taCj;Mc~-h8Qv*#!)Lv5HC)P#f^Vf@4u9nBa-hE$)9f_ruYjOGQE8 z-Vzdc)NP>Ho5o|z>gOGN0(!B6g+qYRzy0R!MOu2|2Hr~_oae3;~Z?Z15$O{C;mE|j( zfpp}2Kp^H2;h+>Gve20myKsKQ@Tp?w^rP%i6$Ph_gro8@v`=x^sdmc|Yta^3ZP=PP z#gFDcp~s6yHK+;wKXHgUdCFlh;U5L=x(wy)K^buE>5EYLtxKN(=@%Q%YiqH`4{~LA z)`V0!*_FuWdBtt<<5C$K0_?Lm9ZIl;saxX*OwtPr@*(*3 zLgry4HKZcl0HTiJA9X|Ql+jx31K1IDDp;jB#_#vd{OOOlQ6lib#}^ciAU2LzOr{-D zYGmx)K8JggN~I7onv^8MJ+=Ho4#p*JZZNjdt#;2z*t{Z5Gf0rS1Zh4lw(~}Y-cOTa z-1*`V)@MycYPF(D2URtOD4 ztkXA*I>S$EGueBKGd#1-qHwLV#Dt4y1cLCe!MB(d;#m&%C0TvL^xrvk(8rfK7|0E) zdnIJCt?H=L@NBEmbvKx%VYOrz|I425^$o-Nfa>6~)JU|hNo372M*3XfO9iYjiOXaNsPvMBipH+kiw8{7RAF@c!Azz{+h=hsy5$ ze-Dx3K~uG;mLoJv3}K5WaHjL+LMl~IFNC8O;Y0Kz4wv7!?e8)R#Mh0v#C90lrOZ#~ z;+D&zMwZ7FqV4I?o?P))29C|#4Xi$DcJ0?pBtO{q*|Sg5%fYpB=bZHkqulv_3T@9n zZ26C2Mr|2|D9mNAwlaIq6L=6mY+eJHl6p(TGeuq(^uz3a-5bf7Wjn_YXK4vAi}0L8 z%gfBoQ=!!BylyWtEiDARVK-C8)(k<@fLKH`%}$N<60<@$GAQGJ!H6h$#5As8ow!YE zY(A4|b|;M1zG=)uG1Gcb-~@pIA8#voNOPmQ-)aY>KoFhgyqZ3^*(WRij1XBiygg6* za9kr4@sCi;(mSKKe%`_Xk=MG<{iM<%_Eo+nXfd&7e2JYV4PiR4<-3Fjqj;?_nU~gM~12&LK`_Ki6OfmS67UDClz=|y>BnN`zUfjLTxN(@#&nU}l13@r(UDC96$NgXmyA97n3KH1 zu!zPPO*mm-=o5u?FgsdU*XvvLOB^GP_8%Xm0*yks35uns;jy}L>A)63Wx$+!6#tpY z*`YVYH@=LYpuukYgFBmqmJmS9xq(a&l6H>Pz~7#h020Y3Tk+2Br^D|%zn`b!LbdK{ zl3m@~$N|rum8NTVYBE3(UX@L!&vy07z?%^+=}yoT`(UTz&vT?`VhH79hy)ITQK;M=Fci@HcD~81 z?K9n@@%?oI9+%4B;Q6e$Lp1gRr|!46cfs(oX3I;WU&W~E#Ru}^rUV}1gL8Tfl$VOg z`fL1Q#v@dagnD;uE!owEPKz>R%XQ}XTDUKOfS=E@CxXu@Hp~#Zxs^eQEb|w$u3C` zwL_7>4OT!N&DGb1E>12lMockH<(@GsKjKC|A}mcHY{m4obVpQ#c%0+K@+>l};@o=~ zrN$>|csOj3n0;5pK6tHV?cR5N@YIAjdY9fxY(cAEK zeFg(h&jF3V6^VGbU%0o z->bS=Pb)S6wFIRAzp5Y<_}T>+>e9nWo~0i;(>vv|kgpRuw!dc)%toY{Hy^d6DN;~0 zIea=DsT3Pc(*w$5cK#9F$Yq!&m^BLMbDB~+Bj?1w`qBLSry&z0U20q>s= zw-=+3B=Tz|F0kW{$gmGBcc2YgpRH0HD`hO7JN-{26%uPcOc`Ma(gNy<5lg4M(9#6Wfy30h9l%gdRp2$(+(r>4#7T-j-J!DC@Zl zA}fYKry)UPY~VZ&*;*}5{2R)RiBaGlg0C#EBA(&(kNXmj$vY!t%t^W>P8zZ0o<9#f zWbN`EW53>~VO@Lm<|6f9dBrH3umX&rhehj7WI&Qji5O35vRU0-CO?j7kdJaIj9V*Y zYg3VcQV$)@U|4=P8x-@SXlI9IH`6mb_rD>V@iL+9!;uYgfAe;ZF+ymoIno@~u;?XZ z(=#q9aXLCF8c+6qT^DSuRYIp^>vF*x&-d>fAX-G5fknU)Q!I7*Hht$f(<=0M%d>gA zE2gL1U?(3Z6B}*@RL1cpW1k$4-ZK@EyOxgztt?27p7?LYcDBFf+oC?awj!`>K`@f+ckyJ25m_8vg<{Utq-h)%OB`{B4=;d%KtAB(nllIeUB4P5{&n}U{1YCez z@R)6jJR+sK&e~$wz0P4O?X^JuTbDI(RH z;z02o($dte^) zTzg9e+%LjK@(RJ9^gc3nTon}Hz=Uc~1nXGH`pz#QaZ@994=Eui;V2t>F~Um z&jk}4YX)(u+c+Cgas0wFL{gP@)OaM2+fzVWasE`17kq-TO~ai%_%w+ z)K?tU{G@sf^s0wZYAx*XMc5=n-mB!PosFYM5_o@cuaet^$8Om}asoq|ec@C}Ibihs zd4xawX>dcjzv|dssc&3=~*(mck;I5uNIve(vzkyw3I zxSe4t1;1vNze7~134?YacHRZnmxyBN`>T$h*o-YAqP-{;)%`Suxv-|H{+v~uiE*W9 zUD>G;OH9SB@VovFgK`0|Me$r4+(rY&mov)XN~0`@%|Od4cD4@zIiV(7`j`}zYGZ|k zvo2Bx}1q8JFFQl<=&Xw1k53^d3bWr}Ez&3{NXkrBnY4_UKOdEYUKX9!n?$ z8B*&K1tT%9rC)AVLaKd4?0H7M360x43qIg@vgF~Q#Pjb95{g2?udA0B8S=D%beR*uhU=)RMt0|3PjB|xrELB7BjSDt9MY#E034JjvR z3P3^3;~>qInnHhQ%A6~c0Rv=( zDJRPqPC|*sfi|5WLQxiNz3>TONt2@5PlZ>YsfSz4-i+%At!j??>3`Ym?c;hWb-9#v z)OVbs3f45pT;jeY*(MCJVeR{UTQx}$fi_G=fRP^pN$3r@(Dt=U^L$)WrbhDUl``KT z(+m>q$+w*7TnLTN)-v~JgAqAI;(`C<#5LtY%&vYTQ@@E5F*YJ*?P<)=km)j8Gam6U zUz79v>C!SX@dc|biw@!Nj&%=gCgnumC1x2Cc5t8CZAMEvUu-WDH2!^lB>$xQ>C$d& zxIqX@FxyhgDBz85M00j}=VZ=G=v#RTc-6t92vaE{!$%}a z`Vip`J03Vxo--%kO$1(+Ki*h4q7_f_AF)pyz*gG2X}mDBz*9P{ zM;Sa{?9n788GXwyd?^}5rh7gA zbEZJOh8=?GcaTkrE;N$mriNQ5XoH-7DRf|8+e zWo>uCi^KG5(8oMV2+2u^E}&2aq-Sf>yO+`WRs49a;iYWaI9yXOl#nXm2V@_*jP)%I*emsVYWN9V0{9UasP9ptg;&Ti`hyt2*=-d0+G(K`LUUB|09{ z*kRXzW=enfzs&Fqz7K5BbcGeTrxD3Y_0LMJne@pdB>t4fA&B&%p zRW{TE|COkLL&SDogxAcw@`5m$mt9}o5s@!6@4xiDV?UaILFKjY=(SS!LfEgW3T<>D z;Y;*FDEp7#>86cRrLq9KjdN<@31k_b`;^(nrL0x?3*h)JT^QQP>Yy$cA=Z8YesG;q z`?1JG!2;AYo&~w@*=`$kG*n}_>{R3ro|f#aQL=8@yDUDpBl+{QM|Z;lenQjTv~Z-i zt0z``Y&)B*pYEbNM^VqkE8H?duz!xk;V!E=)W|}`%l(Q1G~Dx!9N`%a<=|JtyU$w% zzieY4wb_>|(T&ucvsz2NwYVKze8fWBXU;uPB6sMVcc;BoM~tUv(JQLYg5r}g2%%=# z`2Nc@UAr{Gz5DRs5ZmFSx_@20p7!J9)3NtuL1?KhX(H`HsUh&K1#=KwMhjl!{nN~! zEyn;Ods1NLQ3>>~DX(IQ9E!1TKhm7=p{xV~N7z^^j00(vNr*yIj?J_4WG%y^_-6H6 zYp6clE21#E`aP<-ZtLOu-y3&&^IG7e1&%@afE(QUD*^(~$mbUv)B#i$8hssOJ zal1Ucwe-B}&{razRi9{09l|hXq3$_-dy6j9|6-Jw{mJgKzveJWmpoG6xkgCe_0YDg zR(iR?rlkyPpd1Ok> zfT7c%km_)MZiS|67Taf;DcaKk{;ps;@(_V+ zP0R|?lN6(O_d0j!uj2%NC3I+rUTSHCs6s^8-A?~9Gv5E&=xqfOWYKi$546mZGA`DI z%f#nJlo)y3_km_ri)U=LS1Nh=9ZEIfOXBKRUuD@oUmyf6(b z){17Q)rDl$)ZBP^Pa1%!s8FESnDB1;^4$pPyrv%`k=yRyb=xz`?QJ}fpZ4HR(AXEk`%pnG zkW||L%uh1qBS#CBEz1L;qXtWdPUX)ydtIm#kg!fI50^{d(;e*>_&2q*?W^NVQq%qV zN^c8Ybm{Km*S-Ev$~mB^nH91Cj^4-!pk1a9qzQp6FYOYt%BO;&qj?qjJDT47T5$i9 zO*q*_iLh6ZP{Aeuztdwyawt7G$l%)rQ{C0#(er`*HrkPba()b23f{;;0|e`7{7LMK@t^q|UgR`V^z+-R+Jq z(_#ePGN88Z$#si|EI1Ws3RGevc4tD3>XS1cIPOEl4IjC6RD2vxSsbs;9a=$OcAw+m zWca!bPG3TVT?3W7X~{X**5py*ZmDdY?AIb17=`+Ld1RpdYfEP5+BV`aPOkeAJrAJb za;N~5LZql7maGZWd+$_oC!fh`W|Tn%QO`B6mhj5UHu%lUc0N9(+=?~B4F~(H+a6L( zq@(k@348cR0J$eL)UcK+|51N0?N$L|GBXQ5bW*5cRS@gz5S&G6Ns`a%WeWl{!YCEl z#S&Z-tb@Gi?pDg>> zWytLaRp{P*gJ~V*>WkRj)zzqy=))CXrgaEOtj@+w&M#x9033wXj2fb_O$rOa5kxVp zbxuAc_E{SsKhIi>hX=k#C|#Oc$+vp90ikynXP6WEjQ|-{z7pyP-IddmQ&wx10_h;1 z^}`qf5)L5oip(%B-6TUT7^f1iJpGO-j#Du;&onGNEHu@YRQOM{MT!!-G0;v`8|ttCNT73+4xAP-gg% zY0uqeOqtmL>C1@L4h958nQw98KRM0?3o?6;_yD(9u;icG&CSU-v0J0$-KJ!Et94wG zZU64{+Tll5>Q`yLoMiRd@LQ~)EGmT)rneqS&*Wag=T-?gZd4A|jo5-^6CS6LoL(0? zuRa||CXyxu8d#fJFKLffa9n~547X_YVrY+6>`P~im!GgML0wmRI6QR=lZ!hEXa*Em z!RwImnnNpNb#uc-M7frC{QHOEyW$M3_9wwK0}r3_f`(vZa8^Ne(ZBIKJ~NnhpS4l` z5ZVo6g@zSXftmsW(N9=ZW9M~>$QJmji{;{-!tkN|Nqeq>{!z^`zKCTaQFP9X)p2c#c z7g`52sipz`OpH0NQ08;?>^`XCa*V#Gw~f#)QkCmb4n}aTATZkU+x_B?8v{PPnO~@t z!x!pbfncnAzEu~&WisSrZFbAn3LeA1YUl>&x(~s8u`MZY#lx9g9f<j{dOVIvmt}TPT5ud!c9c7$)(=PT83+4Jf{Cy&I^|Q-LK=%x~P`%)El0%iR9` zgtq=|y^d<}VN$M=GRLozI8lah7)fMcm=6?p?uK5*M#Bayecza=k$4O(W(DFdJ@c%u znbDriAFKzL2cWmaO&=%4@=YwPd9v0s!euH_Gg0o99gr>F-F*Y13h@C86Y>KIec#8} ziIf@2AISanB|9vW+ zRR5my-le(9Ug5e2ZQ3q=UX(>)L-j~a=)M>f2-yL_ztsiB5gM~=T%E;?J-=#L19w!}E)yGu|fohp( zM6=eHJt+g`7`Ar9QUdD#pey;|A|lDE^9=y80nqAhnd^Bd>WAu0?jCDEthn;DJKrV` z%LFL*HiJIw0hliR&>!NKK)9k7l^wFmro<@x9Eeazw7e>a&FABrLS>VPxa*bp^5&fy zQ3P;#$wtee6w(lMN%n01B{Tb7s86t;N4s8127-Q>n^T| z*=0#&0$i|*1-z^X6Iq$fntkm~q0v$i5`g?)IoFhFmQ-PTUCN7}o4!LVL%iwy z3w6#_f8O+)R)Bc!2H#uT-}~1lqgd2kn7k5bQ?OTb#-|Qe7ktZiMk{%~Nob<}eg@?T zt+E`78H=PGn{C0U)?!9Azn)Py+{3CVr2ug^0-chW$dLc793tZ{+T)t_l8dN<>SHdoevz5CmF4L=pMX1{hJ$PR(~kyTZI5%VExN# ziyPfk*?se#*B%2M%cMR1UH=k@p)1$>Jz-*Ve_kr!PdEtf{MDipTb4oEFzC|FIXs8O zHT`OT>?KfoVjqFIaMczCtdutyNC;wM3vC&I7lSJj4E_TtzVyaUCYP@X;{Jg$^9~(( zWz}b!+#~3}I{;f{ORsg*x$d*HZw^5wx2AItYfSLKC4cBd`xDg-jb>;^ti_rnw+f@a zq@n^N@3TwtC7uQz7g7K=8~bK!>BsB1Y$`wPebCRu6xFxv6>4uF^2+TFtxuI*p+^So zoNiaZB!C?t)cY{ryJaCvk*u;Btq6o_(C@_h@nqk$Ai$?-Crj{4Wgl^yFMY$kC7p-< z^z#P`h`#tLh=@BXgWxOIm8Xk0PoSSi`o*^tZ(F3D3m=n~xY6Pmz)$$e27{|4t=J^F zP;qI7tWGXHcDr)%m!RY3&dU_E6pQK*rD%9WuQq?)q84W1b{&;dOJ`}jtpxAtI|f7q zsc>c=t2sfdxU#i2Wqcq+n0i5N$W?nxv%pJlArbkAXzVLooGiso`rxV=u5c z!x9R$;`B0Wn(!ts0waxI005m{AB~Yc+e&vw7j@|@i04Q(=d=x9W5q~7ObIT4+`)5r3sotJR~`>gNx3ki0|%3L~ZA7A=t0DhJiU^ zGY#9{_|e?0pwGhTYEZ`?hbQsde|S|T(Rxv5Y-g6cGQJ(dn-pKswbrKNNHnOYBL>p5 z@03-_3N~Wx9gi5e-@@|^@aG+I7}tvL6!xm-d%mb>`qV1pDUfdsv=pqpLj-BDJU^ln?@hzqt+?K=Nm#OM@5w~(fq)Yh3q^} zJQm>rQ^8c~ZAs)Ss%=Z6q6Jfzqs&wvovUd*<%kS#;qB`EG=cY` z?sV;TO*muqwJ!$zZIpb;HjIZ?+~Q=eCI=yxO=F{4L^dF~Nm#=qi}@mOY~Gu2#>(?r z5j6aQLHeAT3ld|L!uq@fBMFeTq$2ZZ{5Bs!HQsP7Ys~hy0gnw_D`FoRh-B|#Azwo( zLd{}&%*Il8&TV`wlS5nm$ zodK=+8Zm`T4~fo@cr8kpY5WURIX5=T@aG`BVA)Iuge5Wa5@=<{18qrp+;h&bK}^DhEk0`~O&)0Cw(9AB)7hh&^8xY=@PR)_6P1Y#xpmrYN zIbO+^X`)4D~>+zMcsw`6N|1`lOCG$aOH}%1=0Ub2%nxY!M#j%u zFH_MJ-?bA0Vk5>f?0vc*O=tI@R)N?O=h1kee_5djv2+eF#zhI&2$SnEcO(hcbtP!H z>Ge(oZJ^QCq@2AIULUARI->R&+O%mbeb!M1lcJU*9rIvqYnmMk$YCv<@HumDC2!|~ zOE3j?HD<;yUAbRgH8cqA8#S45RuWcv6P}iF!Lm&3U@%U9&`DO}pC!yjM0Ty?5bNF@ zD~S841Ah0(p}69oE7;F1bfIK*;NGCL?zv2A`f>z&7`rfBAZ^Q=ju_V6$_`Lcat0sE zT1_v@Vip{B;s6rtqmd(i5=g^ZJuo(3 zT=r?z!&9w1fASbrEg5F8$9o43&Sm5NLOrv6DwC~8Mu`7vTfR7-kps8+Sq-isv*f_s z8@9GWRAK)Dyqr$)o|~bTW|cPF4gK2hl#jNk=^jYLI+UE2_+SC4f(RhQbJ1KZ{qEfR zGY~SU+WCh;$J77bg1A<)x?cLTUxox*%7%9-c@3Vf*$~-98?6rc3C_IM4MN%=p3mp{ znb!1XKJUJ%{T)I0axU0Hh)gsc;9n3;#|r%sf|L2vJ$YFEXJ6ht|Gkt6x<(-(hf}Af z|AOBV@HKwG^@X_n8!YcvJ}OYo`}1eR!UI~dA+WuKOD)29YxdW5k1&jZE`KHUh$tIP zRG=>~it8XT0-_Z9Rc!b+>XB}_T_}wXz(7LXiLTghZS_h4oR@cu1^8%%OVB+V0B9J~ zN#Wl}Q*-De^?Jg;YMVh-6pCwh<1Xj;xw%7^K#fw8U}nlmC^Eefz7qSH$&U{5(q%B2q*l%PGzfNqRAf+TTK*tYg~#bFrlm$;}B9>BM_ z=M^p94_z_wU0Og#D`3oA8#z)m3-<#*a>_lzRvRlO0MV?p3$g;2)VWgUA3$=|UZ0j$ zb^#W9RgQ{BTLOSoAEY1TX5DLwZDaU2;h(j%O=YpDu#*Svdbh)B^dIq_t_P}sr*Brf zYq8q$;3pc{1gTWaJHu;0*V?p3U5G*8VFR}%Y zwLtc;T%XbOG#M9d5%`kDm*<$))%7Im5*7pFs#L<952L1COgat+-idkb72;b>o*lst z-PdoUMYs`=^1|$F?f9sP5{EaLZkF-5qf}b|2zV^XVdzFiW5LW}M16Q&D20P%<0VL9 z2yWNVhkfy05qmD#EL7F!MI6V8{g0i#o>r4|l z$I0XTp3i4ZSgjf1@#qvK1SUGR#WTMGt4i4ANsp-lWc!wZ<+;$1hexO@$F6PjDKG3D z*9$>G)n5bn=FA3XwGp^;lQwWmcs+swB|b>w2(F|L?y!9-nsxn^*zLKa_c>hP5r=I? zWHu^z`TXc^{o>J*BnbS&%xz$4L`L>5gK_c?Avl%P`!Mx9nU=^mw&RR#h)RNq*qHa%i-~g7Q=p;Jj z|NY*43Zf-0G2OQB|704I;feJXreozSDd?Ak`|6HDZV^Q3&TBTBB!S$l%_ZDYzJtqY z>3r^1ydb-%_2EO5Hot=z(Tf?p?(}YAj%#BV)(T1@x@>U!YX+XtZD${rO+8`7o}*|* z_mMj3)j?YV>7J$JTKn#aRSX{v#SZ5o4(j}5M>Z=n%={*s`0S+)&aeA;eo?HvdX0Dh z`-Xn0nlMQoU0rQ_?p7#{3hbE<$Q`zgd@VoultWe@Ns`@+&h(KtNY*b5J(vRi(rGfV zJMT_2Y?mXfTNiNN!=>3c7FkFqmW6K1T&8g(2(S-gYO`JDDu@l;4`a)i!b5Rg?t`<= zf!J8A3+V!%-m&i#95!Nuw(aG1TTuWbLHv+VZzWHw@g zB>wkth_XRLZn13Irq+pjsa#H;ntQ?r-Bq`l;ooTz%7L zSmD^vwqqg;{?mnEYjKYy3B9cB13~Mxmn60OiDxfoRY5E5wArHIx4M2`JCKh({@6ln zm%tYa81Wz__X-SF?Eti=Z5O*m6{*)jzo-t$RBAw{E2!`x#DhRHHXz_wqW1GFH8Amx zw2BXzJ6I$r@=zIt?A?Wcj6aUjSrfRWh+>71NAdBa;eLfV#0kT-b~<|Pi33-LU5#5@ z6P7$~S$Gem=uV0tX6@Z2q*yb~bG5jX1BJ@+U8Zk!-%9>)e1u;`t)_KFmWt<*V7%;& z@fOU2Sc1SS}0<_>mZt9cjy0imcQ#cdccNSVnmdxt%k7A(x7b5@cCw_f@^>UL3_x0v6_ZEX`_E|vG$ zvm${cyXES2l4X zfm3$B#u7ux)Ek&Iy6@CMo&kxFajyzB=ai$U*t7~VD43UaQd7S8(uPPB8 zji}kj>tR}~7J0Y6lb|*-O%dDNpQhLk&kF#|v$v{?o2i&I+w^57Bpnb@<$7;%D`K&b z>U-l4{h#bvkRf(!<*w!DInPk&c;>rV#)D$FQ|ht$RVGyz%o$)v!hq#)!Um=MPAijB zyb+kOmft8tA{I4Nwm&ujyX{4GM2!^&C#|W9x~986*y$2I-`21Zpg9j>%Mv-;Qqanje6cKoD!4266+Cvjso>X1({U$cdEI@ z@Q7IWhj*kBxe=Ot{P#vx*%ZSi?}V#p5;I3J{Q^ZjUIiOOvZR4PG7p?CWjY#irYvdMl{Z{sn?uE zQsXq~>thc=wln87tB5rND@c7x5{r;6s zeF*bBakKwLx*}D!s}W)}X$L(*7o^e%6c9~Dnd#KHHK7!lsp9p2Da$;Dei1~TEr7k+ z9b}2Pa%e^#Ae0d)YP>epV=p5Zp-xC6ffduKV1M#o)ua@h^eY^7yU82M z8BdbtqyiJ^Vb(eAIh{G?>i}Ts#~M@{EiivKm6hcwg7kE>)Xcg2Bw_dl=o6mOH(gt< z!Q;3@I?6#m8kpMGtu69Jn@sW<`&o*C7p908=46wh&*>q5ZdT{Q-}#d30(9Ehd-$_ETvFd!eB9zZYpQX3wRNJ6L&4PLp$fwq-=#+D9)DAXms_mr$6a>@*}qYS=VZ_N%Kp6PzEEN&j*DBAG|%Dn>P`s z=S*K|i*17bqecYFe3bs~#@!X;_koFp_rvKa892`QUxKH~ljnN*K%r$L*65|CE9b*M ze%(bnkP?lG-WcJ?nkuQUnRXOzRWWqpaGa*-@4Yi)AQBwl=o|dz0yfuuxXt`>B)!XW zpu+escAM(H_4zDqkzFLHh51lUaE?Gsj5N)(6t#X1lc2eJ1Ka2-_3)8~cb!G~%is!M z4_B^P7NLrr$UW>*3-@11Go6;{Wvsy!u z1MBQd32ZCUr2?yM*(fsr-}F;sU+xbgqQP@FEuGvINsHuriv+@5m+Z#UWfeKgR|F9#*&{=mM$1tqW<9t7F2tD1tN8cCkg5vj4{ z<4n)d#e9Uj@{80+wiKo~&r9){=054N34e)yZu{OA#jW?dkU#dD{O+UcQef$MuIEy< z=llj;7i8RiG582-uq4_93#=!FZXj4MWmy$0#{(>r5!>e+?-HE)ETRN@1^7 z;H`Bmxb}~gGk`&5dW`riROlypUBjp^K`Ev|u9E!hBPE(d_)o78%iOnAmbI1R{-`a^ za_unZFCGxGQET!mK{v>$P>mkG@?i149nk2aAT>$f>M%FeqjPU{qy4F)IIT{Gz3)lA zkNojwyPE;DHP&QDhb%!(IBOYPb*20kFdTzn9E{Gp3V}~34TUiC@RM{R!F6>M zvr6LH!h}C|)CF%SawS1xe;=f_+BZw9Y2;p#p&-FtGif>dlJBw7mqu*0PNnPn{o-Sf zPpE74W7bK=ScLSDE1-4gduY1Bi0E#OD8pt%F_gG47jEtzs8n>$1$-esbGD})og9K_ zKa-2@;VGkGE39WRW_=`WG|{4U4T)W+=h(MVPnNCU!Ok?zZ9wH`$&qS%Dz(7hPXChX zj+9xOVRAAsvYW-jp+^KH2z~D|4$y}?&02m)9{xDU;(>uab7VI}x+h+CQzF&MXr4Cl zJrYK7_R13cO@@VX>8cOmUJ#pcG+8BJ#fnC#(H>T(8fkVXuh4MC%}nzD3jj)?6M6ZB zKj`y~f$%PL%G?aTQ-H~^&lDowmv;L+wpi{BWGve`>_K>{h3B`qGuBbvG+s?hgbIG= z9-2RciLcOd38zzV5sQTfS-K3xfHCY;5(+Sq4MMb-~le;w1rBH~G}u|b02 z^P2R4dByo#8coPn6xZ(|)~EK{fKfn+L}o-)X$t1(!_VUBHS-D=THJ$M4~G zi{~I*N+o(?(O)=qJ!1_ui~d#cO{kMXn4FLQvKok^sMlSM|3Wwmhj!OmG%m zf2Xi_Qt>;a)^0L=)qF$uPy$eqql)DI({ERT?>MMv*j51)7%Y)oQ6keGQ4P*$!1Yw0 zrb)fL^@Bh<=7J$c{dr4shZPu-X~%X+oiOXtyt23{%R3ThTE;Mk8H5R96FDVcgIbj; zGflAK{zd{{DqO@q^i1e=+cWAFsZK=_43;z$vN&Ovkb%6(P^FJqXOG%s^`oh0OVD{B zE@z1?CGhMd3oY8sY8&iSR!ic*W;Dz%8>+;Hje*n4rNKgmb zynTeJTl)dmiWMjLz1KcZy>_~m;KwY6*ppeVZ}0#z*$#!8B%_dR+&6&C@?>s?+*z-9CW6I&NEBl%Yt<92*G4F# zlq)a+CN4>K!sKFW11kfu#pgd1zYj_>g}jJb>e;rn@gs%cTM0<~Z+v6_$u;RRNC(jc z2h6_C0P4w_}g>_TP216&!PxeC%WN1?Ud(NPLf$r*a79>lW*2}O3^%zp|c#tyW| zAOq2k<%V!#FSJ3C2$oTVEr0E9EkczX0B$Je3O%*4J5?W&m4FYJiTxTrcppewJOe5W z$QTA)I?0RQp)E~0;Vdk zndW?StQP_9T5H;MzAchP6V?OYL-eme0JABQbGJX2lNGcdcCxUBN7tJoPjA>&ii?WE^n4GLZrzbN^ zXK!>i+82KgbEWNgF9Jy?XGO!XgzN-4_COqXI1Dx4?Q8Lee``U=)W-0D=0W@jK>_Zq zi6ZkmyU9%BA{UQqPvocXx(QaZ4dZpJ0dsJvHNUl;UN$hZ?%a_u3E=~Hf7Loy0>76~goS`zh ztEKvjx7Y*Z&Ih7FJhus0SDQ;&I!0~nwQZ8QL>vNU*x~dU@28P79j5m-%)ky@WG^N+ zqs=GrC!*g*PwmR8Y~!jKkfC*1p+clGBKGp}ZzM19V9c*Thg5}>XL^*Ru2c~kDpNKF?Jz-?qqn<;0wMAzP3Y*7qKRMWq% z_;}Ue&2rq9;Dn;%e#WMGX-`r*8Vs_u@L@@i!08DP6OhFcRU!iXzXoIh@r6Q* z<{T_wa4BFFvk`JjvLj6ivTF)JZ6n`x_=6LN3U8wt6t)=^Gr zyHFFc!Q0k=CRt3IgmoZVl2UzNFG^JvJqP11}uoye>fh)ZX(@ipV5pwJwo5@_YLJ)jFm0&9}0g! zj;k=Y)ScSb`~!|4aG&bh48>R2z!QvVrKfmrC&92~P{V&5AT^3>xLP%4BU7p{S4y`m z@$;JDdXLTMw@5nP`bWP;uCQQjNFzrgd_j`OhZFD6ZA_<15ZjB4{bNf(qs~7>Y;)9E zG@d84DcVMBCJ_W*9>8o2YLsU2W=uTT9U3)|79DIeC3pQK_mar*KZQ!HZQngYraN2$ zeE9Zu9c+O?9k3$*0T4-KOFMwkQ{}xz4_g=czdt8F<$~Ru1&{{gd?Qik6or;ub9~`?ITt+YuiaI zXZlq8<+B5E>Xfq?*r^%8sVlhL<*-@=itMy$nZ;FlC3;dLeA*aEByvCJcuxS1i0&6WxhIcwDzpDfjx z;}lnhUBw4Lc0h);qzvWhj^#>4I?J&Z{opwsfMK5g2^9+ns8(n|!)7Y!KiPa4nmrGB z^l7@>^35|~8pi{I7#j>RtrI}s9($jFcN}5 zEvfspQB%85PyV+Drwx>B!C?Ling-y2yWB^-aUI|H2Z_y$~bI+rHd>5(}7;7k(uJ@Cc_%8Qn zYf^6-sdz&~lbn+v`n;tW|Fa0##WclZW7)Jl2(q5Q9c*RFm;k>>clelHRW`H#KC<}bUo^FqSl}rZ=9%c6HFw>_s%Q67hstT(5FV{H-wcX?qZkP!!o5LuN*_zr? zY3b2eQVjZL!wv$DOn;6>uWn0S1qu%0N8)^8;V9F3>nfMJn*w|qf9+X*0D;|0FrbqG z>3Ug21?lx!tMuq9p5_sL!Q;_->+pcXl1tj`P< zW3-_H95JI3sEi9i?HZAz7DmvTavU=+Oj$z^)*u_f*N_>{Iax8|KZi2$ZDub9_Zi8| ztxha!QZ!6nIiA1sw%3N?Z})(i+QF<6qhhl_-{o@nyC3(b^|xjNLuCfmS~4>#nh&i> zR5wPlJ)O7fsMlfk@6Zv2xlL#J6>NX$>SWWU&4MeprSs`~y*tdK5_RWP533_h9vp}y z)sQ%%|CiqLxI?E!_K`*|nSFld+^Dl*54{vy1yZN3;x_lQ@SAB}SA(;XpQfsgRE7fX zCn5prkPF25_Cx5S9Rta5hX$GkNLF)VJUk>5&mpc%CY;0wiHI_dBpqZ2K+Hi$3cd4uC{{2?WJg15K)p2~uI$M|ky$YnJ133f1BJCCW5r>LMP8uxj5aB15uRR}5 zaKWnO1CutWOa{+B)A-XSnAn{Lw5BkR1BGI6{HXI^v!ySFX}K7fVYAAPf8Y|=dA5}3nR>%7r_YfUPJm-TaZkjvU(UryLo8+mv zXH|j7|E7b|-SyT38YUZvz)5;^{4@hk0D!s21nPNP<4rMk)-H!H{VyKzxKyO2Z+$aT zqoxD%?I&|Yx3Hei!U2h|I4hiZ)zj88P#to7)Ks7J+!}Kc;sln2uaD4cC%wS;vk{1B z0P0fDntyB3DNVW8OKAK{k7b>84X(C&fwm!h=zynr#i3!hK&|=(FUIxJ6FvKyLzYFn zx}d2%Jn{osY-ybMMxwriSPM}Z-$ke%{(v?cJML48lJ>0$v%efJVNN}V`?=^-NH!t! zp@p}#h?n18IvMA`0kzrW6nMw_QZ&UQs{SK7H(X)-k}~~2vNQnMvv!bi;>>Y8gK&b2 z)DkP63rMLFDp-_&k1oZ^Ff}Oe9<{T zR?EneYZ#g|NxkMdiIeh)zF6P5fEiEGPc*#l@6Z!&RcWjmf(>jJ7FF@SFddC*-Jfk_Bg3|B}KtU^x72IPZPSxN4cA zMUmVrZn3-GlIWN%Kp@+KIT`UZpW5zwVYBbtvNjlct+V&UO}rDwJ4Mc{^$`?C0PFFh z+2!!iN6-bhnu7RH{i<|GHP%)3jJ`0LS^>$H9rr%6jp`tej1bbecYi=*zU21GQ9IH2 z+l5Yj5#je$8is;RJ)ybTje{5x3F|ST>0qf4%5jh~4ffKO+%V7e>tQ`+Z%`OPb-9!& z=%Nv{d($#gRa2wJ2e{;nx9C`Jki4gw$GI35ODAygqZ)HSt{CfT&~$Rfz}#Ei8rKkw zJlef-8L;`yRU#tK^Yt3@fzm{0BI0$3#ehgl3uV-Q45i?6!a}1`>}2Q&_C^4B-5k?V zh{E_oxQ>`EbUXliZMAp)zov}mvn-i#@-=^AJ$u)4<)g=&iu!5UL~0gPLi~x;PH4^W z0t!0?y$;=#imHqDg`@6U?i zYP4dSqh#-J@DpOl^5?2eQtYu+!BPp1NLI$-b}T+^kWO7Y_B7sr9X0;*!o;CO9~NQi4JR39vn@r9lzFrynY#`-L><-zna-ZA_PA{6C*5hD02TaOpAs z271-)P3oTXoe9APr|Qc`vn!J46i|A(;5Zgy=$Y4_zU`W)W?)~4mXEit51E%VcM=@C zU~y{&Pi+% zJjw|8qf*|445GPw;y;@##e&pa+1G;Y{(u!B*aXXA!5P>=_33MSBTyN$WtQ2yfs&}9 z071mnFgSIQHV_jGMb<#zTb6Ef!=v^2T>J?w;UY%NK#Y@!zY)9#cWtKW!PUC%<4lVefqGd4yL1CQKMVV+|uDG zaZQji&SYqdryi&OX`|_eW$Zf^H4)y6c(O+t7aLJX|hoa9+ z0pf^lTTcn=0GGhkWEJ=xf*JiC^>s|4bC@r8K#Z|3mf0ZD;QJF!Cm@^M5|by}g+YoN zg>_k7sKUpzXTU{~$|uLl(!xH(<(jTFNb{I;h@O$X^oPb&=Y<5Q|3-+pQ!-+>rlfLs5y3Om!9xV&^~Z!Xl4>&rzV&GwtGRd80WaUHLF+}$ zELTTk4Ee9iGSap>Rn3j=@K~qw?em~IGjFl&l9R;ccHH&X6&oZer;`sfM7Q~8gt@Cu z_|Pm@Dk`l4Dk9JSNx3&O%7h8_6{QLGXUeu0Oxy(Z0;=YJ-VTSy#m=rwqW_H5Iles-`Lh%!VnC_1eBbg^iuk|HT{fQX zXKc1{D^ZX0Hwd5JAX~4&`dhKK;m?v_X``Wc8M+eIRcFP9J$ktnQ)5H~h?{D8TgNsD zQ?<;KrECo0`@cP|VuT6>O(E_gHjj@OG*};-N3-t%%D&>w_4++u~it?B`YiNn(Mw3eu69JE=9#d1ZwXq*cvd1 zr7*5U4PEV?$9qpBFbFGHa72H8bF|KM6@{k+mC4`d z4V@@O_-;qIVEzZ~kVHPPR>FD!O2$%YbnIu7M~iK;8ZdAHD+55G$$+bCACXr6QHDvD z#+#Eynn$9jkkp)Ia=&l7sXS*UIJfsV-+0vX-#1R5mgLILMPKwuaj$YzxkY*We@xDE zl?*Sswx5n-6VmE)Oimaiu0(4$i!3GLsx)Ed9o>($l#Y8QKfPLmlOm?#46P=9CuCHb zJ67W6A6+>>a!*)k%nY)RY*%Ys^9$$~R7?DpEX0AaBgh<>PucCMH3~JXcw9F$2ennF zKymSHAhwhpDtDL2xzD=5eoIIsG+6$m&4=YJz%x;%hCvl?&jC6NH8_^&EVpkq(6@N% z0G=zGN|t;teb}0Nca8EqrLAg@v{dG*SdaCM2Na^D=2Y3c&%(zxWnyjHfequWi}s3y z(|SAB5ISNVV0)#Hdt*O3t`NumSLVdQx^%wvV{v2ND2Vi_5$HI46HcV*NE@Hw()zaW zc8ze5V4jI$79t=K0BK#+eXM~}r|y+^Zd@q<4SoWxI#6f%;oi`9i6u%>V0%T$Y^1F3 zF|v9SQk-ae58ZDd@pe93Zyq1|RSM4oIU{XEt;V+K{j*;#o3@nO-rerjPhljF-9C+$yhrk_%?ewWS+# zsMp7&VFPMnzzp->EVK)ZeVa&2c`V3?Gup?8yz?c)tH8Mq*73dRQ{(Sclp>-JsKG^) zTqYl5A*;R*fb_dEJ9!mN)&CCtmAhYl%5nW8a(lcb_fdWK#+8=wmZ!$rA)p4ydqSeX z9rPi9=5hZJXIP#Z1TYD{!#sJcI%3oKkteOy3csD4S8zP`cEV;$TUDrKBCO9}D7r6o zMzM(ODKiO^aI<5wyiDwqDjNp&rIFx9E0_N}-Q&KBo8I)B%uwvP&~ljKP-a zYcW6e>WkV($~n>?CN_M7(NUfJoF`n)`-*!L-)197DP9vzGiqLs)w8;s)iIYZ&?xS6 zpxu{`S_A0=?YNgq(H<=^Q-dLR;X~&y2a_g~27V~2@NQ8w@YTg`a0=x+Gr>_=Gf*hk ztdJ{k!9C#Ak!)?b4Ja7mj5+3qE;%l1h$<>(>mlHa^G>fktma{2OkeDyRI=;Z&}HA(OisA`7lo%}RYBC!h$9dv{8zmDN7eOICUckUMO|9M z9jL1R1+foud#Bl%2p7j#rqsl3OC&O=K)v<4x&$i3M7;^EL77@ko~8M09>=dOP$Uv` z%8ZaX#H-P0N>rbM*qFLyof*eG*&sPJs^R5c;pa7!vXHpW^E@vE&my(Th}$Kq`)@~^ z-or+E_A6?A6~r$H+82@1M9%i-@H5d19?$bNi$eJ@o7=H({TSX`WX-@h<-%N z&Z}9&QmmG^zB;RtS(v?fxg%`Pscp@ zLO{!-hCjMr2+>cD;a5jE<|i(!F!?pA=UT}8P70tL%o(n^->$QHfuzye>s$Wg$fW-d zw5E#Qq#cgfizG;d1T3}fa*5WFdUOMqqvIB_k5}!Tkz>OwS@cDAuYWH@-xp8Q%8g2k z*T(P8WPt0q_%Aw z_DE4H9B1)3y2>ew;}wGDhM|5?=FU24L90KM;Q2Z7Zckk$rD}(tT}KmHt35+5ND|H#3&0*7 zkS}Bj*Tip#R)T+IlH+rW+MjQ5GF+-_DJ-WQ03q;%xN8*QzEmu;CF(i$J((5qN>LeF z@TSD8?{D>|Q~OSPXF5RIS#h}@-m*#bz0#J_D`uuEru!;?r^vC< zTwtS$lXG4II;XDA{JmHh{2n> zaxcZ(ZC7Vjd_;uNGiws8>g@1yVr=B?m(9EpAyzS~az=x|$~tEZM6>t;xd;B7YgBCF zyKGZI7p0}0nHQ1nfg7y@9niZyHyrKN)>>R(1MM*#ccEiaHk#YR1p*f(a zB-3AlO!x}Dn?P)BRl%DUvSnp9(dJicwBPFok8c*p`;V!pQGM&(gj zNWF-B>2jAnQL)I{f3&xhpV3QfMBj#!bptY>*Xfz4BSGO>bWv5E;48}T$;Y?_A#zX# zgFEQuoQVxdIv&0ge^dSu`hbJf+07!2sQ0k`4VOZg+sXsNao`mOn%PM))@NkF@=VQ4`?5lxIhzMXW)%4~%Fc|>o})N2T+ z_%*1aK?PL@`{LVdU2-}J$L~xa7zu(wiSplMb$=tybRbY#9E~3J;os`^RF62@zZ&Nm z_3;xiY8WXZ#{7E+VQb0>zTcV|`>n!zfX~z>CNn*rg_Wrt8C{Ca+Gb0yrB9kuO_r`i z=u3zgRpi}RBrAFo$kq|e>~S{8z~NFXpq94uUU+XRH075`*+Y$g4JdgbO-u8nt-rn! zaitb0_o!XYs4(tyDm#+AO@^kQK9MeI{C-t5TO9j4#3+;3g(uC-7-&Yck~k>>6f^UC zwY5h8%I7ds^$))+QAVGg;9X=SxXE1FRm{44Ma2f0?4I|=_tyu)A#Id0 zw^Ei*vY+)1h?!zKgNI7q4x0hs{@?X>u+ESSeo7*Fa=hW?_tB(zu3sF(@hn*kL&|Kn zOWRM}Uv^kcr&&8)_7Xm6J9pryztNA5=j;T$ z7Iq8qg&w25N{;agzfVdkVfX;Mt+9((=4H@GnDZD#r;P|lBiJ<70`?EoUEm#EC0mDG zw9imb>SxwhAX4#2ghNn&m;4t^4t;l(+W^XviB1gG{rHgHe``$oF!62MEnbXqZCLX6 zLFcOc4YoU{qDU}+*S*UcU~l+hxfRrN^ub)Yh%Wp9n(wNy9PR@2UeR{0;zw_uG$mSf z-`-=H=lTo~l^?oyuOPC?;U^=_>H`d~R#m)xKN5re2_Tue_f*P1Q$Vi~$y#g1v- zC+K@#*+^=l1~(x}2IA^1Gd1&acWNi|fUK2V?gye*izopv6t987Td3vVk*^-OT`8QU z>B1KbNFgb-x|D6P>uN2v&VpHt3#z*R$GzHRL{s^Kf_Gij&j)3&xb2VnNL+SGFQqo! zP72IEdzlLn#;F=Q696qh(!WW&Cuh$NxG6ZIg4gI|7Jy9ufNZoKjVnyTDYqh|P=iDy zD{aDs7h=$ds6RYOg5^RT#PuKn>Z|T94uRfOkr{T6NM#~zV5xx2tNFewOP;7VCV)f zOJSh{gFGNHj0VXd=x~?}87a=--}ZU$fp&7TH0~=acQrjQu0kx{^E%y5j^aiV`XI(>a=y&-1mg@r`XXIB7-Y8axF-l z+(W-M@h2z_-b#}HL8g-%#l66cC7`OhzmwPtHQa6{a#A4K*)vZf>NM)tj+|DEB?)lnA65!J5QvKEe<`dzcVdZ0OL|KOaPW%sAR!w(ikwI@d@F^a9}>bG z{*uYrI)C%)AHVUw z?X(uWH97E=cXF~E9D+D*soG%uiI+>(c|Q%!jVq^>@1^yj7WHUOF(K5Qh& zzm_s-m@LIZFq_9a*&fotspZH`@22T~jaB;Kbil7N->P8{8@Uw-|GBf4R6V+m=jDU5 z3ay^V9~e@mrnN|9MUad067yQ+^v;Kt9-zeOuVEe@+5&z+$qO`63UbV8p!Z%9>XIcW zIAL$Zo8?fw$BIhE9@WfRL{yc2y8@9L4sGa&9$UNeI;e!WqvZ0G&vtK$UoKg|8@ub^ z?5JU7@R(S+9Zxg2mLCjHTbPyYv;Mn5_I#|RwJ-6aI-!U)n%tj)?1{s6`t`0{kjk~v zdXS-8(Chlfs5kCedT_j-#2IWiqO}_V8DDa+k^ug`fPSHGqg^k~(17C(iDPv21>%E; zAPypN;cpmnvjjNtW6><*j6)eRKsi{}Gx7X&jLr#;*%8E+$7eb+pbdbncTvARK?W#G549EU30V1W54wi&@h$Gkm%oOG16lZHJgtA zsu7zGFr5@8TV;RF^k?H{{+C1**hX2NOW|IR9xS$l?oMBKowxCsv}1Mm5bMkwatopO z&UJVRt0H4bMHU#^;b`VP0NI*cfn(|4hYZlpYjQ<<3F|=QetL?{aLmNAAL$4gKyU}# zsc0VKAc;$p$=DQ}5Gr2<;_g@Ve28-Rk4mwfDLM&1+a&U7_2)ARzTn~-lvrg==JAGX zjn0vL7HQ$MMy_RkyoNP2v$fx9)F?^3mc36D@1(M)TDkA=i5piW<{0AD;%Qx(ag(G^ zNtr(~C&Z8TFg(Vu9m(6yh-JchmZ{Sfzs(};#=AM9eUE0td<%@%7Iv2Q_s~{~(BA9i zjR0Ve{GO2?tm9J+>uZZ|)|Q{T(j7*c%H7<(zebzAHLE?hBTaluJh-Wt$Ly^Q&@r-K zHzEIE4I@e(%^1U9eW1-0dPAYmAOl~T`J|0NaZiDILVf$UT!9HN(#ZW41Cnp#n^qAo zaun1QLO|Zd?8zdTV^>P)KfgM8vqlDX%Y%$GeYr#On0qi31(U~q^}@}UDAz~a`)~8A zVv_H~r^BX~dOv6gJVxR3AT8tVA}r0X;j(N>hkxcAs)$g&z(Jz)ClA`GyTq7LTk*g}!WawHoDZP~RIQG zOCl`yv*8_zE_7iV#Fg_D865!Zgw>rTqEkLO{^Q)%8ek)TLk*&(ntQL@zfeKF=f*z) z+Gcl~iLy2io``IPdM8BVyr00#1vAml6GKSu2r}>Q#A#Yvfa?B$2KN3|*1OX!c$t(f{2d8hlLujk>-|Z^an&&09c0feTl;{ktg1sB3)mTvKC|6 z8EDn4F}#??o?el^#*W1qSDp05S}rTAx<|r3`GJWIn^vz(q)WQCx8v@6+AA4ZOF;Iy!B|34w7qY0ip5#K+N$A z1B9dOrzZc(fbiLRLrZ8n;!-w5ZE*EveaQ`S)?9LA2n)_XA0Oz`_`ZmQ41VdY zM4Hc8a)o9^FJw!1zguk7{&<@w&rz-4#VlGNOitD-DG~EpI7P5kmD0 z?gX09#)dY6pLgjVNRE8j-HCGn->WPiZK7`)S;_@2?5vpxfO&Rc9tlng9MohXAZ-MV zu(VQuWWaHB?`go}J2u&Y0vuOP^Z0z-DkO_sa|2xJUgqXA`rVP(Od~l*F#*PIkdyiU z10(`C*1L~e{RxGS0(M3zVCEyihK^jZT-$&9A#urHE7e!^9#!@=q^`H}6C-J5M!kYL zumDPu*=GgGNIFd`iKEWxY;6SDk5pWON$9er2nLK^5$>KP*GN@LHkjjmwQ9*z2B%hG zp-!|){v_U)+sOmn3E&L?CVD!Yur0_H6oME6*mOIVE=9Us?=0ZLZ&K`Tu^SDFtU=c0 z!hH}Z)=xjl4O&EVpzxhK<&@Rq*kt?l`bG1(T>jpu{sp`Dm&I0n*LrVivvxL0e6oqx zyWVS#71%KpbU?0^3aECq{$Y1QDOy@Q@7eYu-uh$RNQM7%N2>?4$ zZfmXI#0*mru~GBcu@Oop776z4GdJEHWOIwrY(|*^$48&+!9jw~_~dXq{8EC|@f^?I z)#(_6So*%~Xc75ezfD$MZbs z@%rO)#43vx`DUSA zKC;ukum@gcCHl+$zDWH@$6$9vlR7A1PK9NcdU`Y;`{L}i^Z@QWMrV8rErer@g!MSn zWCQPd?~)ob4xb?wfQ{2Xk5-F98ZfHx2Hn)q{9dabB9it-!eIpeM!|m-J1uD+&_LC# zc=bx4HfN|%#97H^jLT3$B0B%lmFDCuZSXS+4Oaqa0Mo59=7fWvS}en^%mRRjifxY4 z3Uk2%SPieX_iZ`M1ePwthdx=_ z23jl9f9mvc+mivY&94`axuh*+dubLzje4W1v2x<~oan?IX^fgSOR}y#tg^ zK{S-5O0cA($ZkTK(|nbb8r=Z1(uGS>L6TX0sV#z`P&!_Ur4j%+zO><*5+4OkAQ76t zQ+TRO_jiK)IMQ&v-6c~El1co^G9iGQ>0#c|g*K?i&MJ#OgA6b^PfgVS(kcKo(Ix-4 zkBuMbk!bJ|KHGa*YD@0?0Lt7RN~qHm#O}kXW1X9vi{qB%7&NZ&K14yu@a;c;UTS=h z0%`iRxWR9{{ck<(N%M5%lb-!q)gs(T3SzQ0>P z@XU81hvp@)u5a8 zjBt3T4~g>b0>`fiz97Ly`51~B*3U}BFfB$bE~&#AD|>P<@M7yjdKt2EJ`t#WdVaA5e8Z@T}yS53OdO(3Dkv)#~nz?TXC%G zh}D4?cWg_WV%*z0+5`fRaaC?2Ip03Y`CuFvvH#79e6<@Lb=bO34aUMf*=^pJx` zs&4R$CCdEis=e}*BiacAc1uht(qowC_D8$yc^G&G`uX1CzWESgO3G%He0unYp(BPnm^`2edmy0x;~1KC#KG_709l^g zsDkX+z@zRKg6?am-;0sGYG=|}xHW7;Ud+KWo*an&QGHa9nqs6cBMDy0Z?eCf3cDH~ zz<{QX0RxE&uzS2M6GTyAwt3sO7Us1XaVzBFuEQkD2i5XB@{t++3|0~gMpD0wA~H>3 zM(4|X4~~dBq`mouQ9>V7pc`S-QZp=+FiEZ=Fef}RT;bx@bVn|Wq9Y)}CN1C$$f4O6u7y{}~dez$-Lp#$T1yrJSu*ccT1mD5H! zDJisKPSf>gP%WORn|EsS!cg-sJ+-M&%qCELMzq~js$3y-IP7D` ze~&eBr%}={`vb~Aa?s)~V~OOLVX3uClAKOE{%>49FVS&qiS zY;%=B?=?fgR3B~yegN+ZFfPIwg3Ar|d_gqCdAqmoj11KOz9^iseYhJJ>l%*N3n=IS zaMS6F&WhZ;N)H10y=tmw;S-9C!-@7T`d=vd(w4;%6yxh@Gxi#j@k@B~FkLIvNwM!i zT1N{aw7K}Z{FS!#WD$fi){rqG2$49-fGu?jd3Rs*zP^h@M>{|@1jaed-{e>A;A$^Q zJHfA?uY(Fbo98OdbuVxw&fW{2sQA9V@2}+}?x=D3P}rFXJjOb=QD|fy^L#q}?q$&V zx)0|YZlQJTd8d){_yJF_V0gOXRb!_t{h2eJ7n2)pYp-q&@k|)1=EKK?ux-?efhw=6x%62NiBx5t{5}v` z31#Q7vH;K>L?~0JVw8lS_!)rOgli9=aNYzm)F`M=cqjVG8p_ zep7D=oTtWGAaMnm4a+lnC0|z!F)xlB0FVj=VGJJI#ibm2%O>sjwO1d$vDB5(Q_sqe zOT6?zaR;n*caf~2O`>E$X-Pumn_p^EcB$bW9$S8xGb@Ex7W%YR61$uyLURu3$3{#20ok$iD%C&@LaRXC!0gP0)IPf+AcH%RY*S@y~&{vR+;iQ+$&2dgI z`;)a0X6v8U1&lMyt-pm&_q#KcV@o*EF#qSC#MU-SQb8Z{IkI68e8w9I-DY}?`*w#9^C=84LyOAT!$ef0qP~gv{zYl`h?9L&u@gS@MAtuJ zOJQ=6N(p4x7gz#L(H;ar66^{ijTte|!Us;4wXpRwniJ)yB!Hm5WGOKKS~kyyov`bk z%*b(n%Cy!Xu*k;Czd0}SyA@rIMJp&lKDj;6`$8PE(?eesZX;x0F|0exot+f~zBVmk zz71VV8e#%?gp|RXDW;4eE7Ip8{oM67qY4!5dCbcf0>;up5?N<4z1vPt4cPo##eYv+h3z#-^e@5HG|Okpbot|0<@~mMw3YS;rE!VuL22uWWjft9wPag%EZF?73Sd zP|XpMFr=AmW1!R-ZZ~uFZ>`RC0Gh6KsRb8b*~Sk17|j=x5^@o{>W@?6$16j!_h)H9y0dyKO*7YD{xL>wGW25`udDJNHP z^2-QLnk_$?*jw9r*kQhc?vL>rPjxue`H$(7Q%<{8H^Q+-G@R7qc zF+vuxy3JSnL%YdaBmCVUT0AMh_QrsQ02i8rVFa3$MhaFWkG*C3b;Yqy1-*A{PjWlQvQ$q*huT-fNpQD@IJuy zVV}oQBIJ#GrY{u1XSiBuHhs_QwP}x4a9`Wc?h?9czQ0i-HL{9A3r?@;x|sa_OS^XR zfl>tn?P=>UQNn=xSVOQfT5J6P+1|*(DJ2vjlljc>boz*;K-(zgHRh7UQQLC7O+E0Z z;RTJFsioh4U!|n)vN7JFW{<+C{v9@c$LAQc+iGZL*>#zQ5cC8pyAud7Vl@oR%HIg> zWxiF;keKpyfCQ!-b6iNvfe{oJanDmj@CfS3(zVKNZzYk8z0(az6_|yA;D4sF9FC{QWa?oB@+MKM!j=wC)*#K-f$Z z)9I0qTwxcsGM+988PugDqiR>!SfOP0a)nN}EYdR2As)(xlKVG;()i%nTWI(>)#7HO z*{Ip~Me&sWG*ftd3Qi21uT1A`9&$D#w83HWk`X?itQL7kG?Q!23BtpeB-?9UMvW=5 z-_1Y9w$x45V84-=b_5G+S0Olh_;7lKJ~Pr?Ww@H_%aKr~-w>Z8ktE@{hOH*2ie?KX zOkeW_EULIAzRyYmc5OFf7Qn@tKl`6P!DV{h^wxfM(Y8bFFnty6Bmh*I3Y80e?ft>Z zDOJ4T?xKeepf+yQ3s+m0TyV%KqDyYj)rcLm)?ptr1zPW38o;wC(UZ@wWzmgSW~^G? zq~?yu?S8jsnpiJ?f@nKb-;wGiI(K_Q+iRsUQ%MqMiyx@XJ6>p`EwIV~dmFylX&{Sb zlDX3eR{S{11|Rm3c{klxG_g1kFAm|)HJVWDs5Ktpjm|(@uYshy5C1?ge^acQD{t~o zSMC6-Os)Vq)%0Dxa^6=EH&Hb8^_TK+C{-0yQ2IJLs^$+#+3i3n#q@=Oz`uId;Z@O9 zoV_7r=w-uNu5%@isLa|MYaA1TS$+!&30Ac>^bJ5*1g|<0e^%xq_wLjujulI%x@N<@ z9@E){t2Nk%w`L*R5)=Jw}F zrP)u-YGFGD4SW6mSWQ+nS73jBVvs4mR$@obJyX>`4GB>GL7?&8t9d9z4<*Wen>1?q z;C3o)efASdgN7~$?IFXRTxP|aW3n}&x0`~;W50(R{$mc#KkW~9{2>Z3f2!kh*InqDw4r~?qX@nFA31GWH!gtF z%W>F)AK?44(#h8OvB;VDv2Z#k?)vSoj6!Wt5D1HQ;ACNDEiy`EL{GLAopp@_hBEbCUxmi1uk6$GB?&t4p)Usi>J^^mJMKvOdiO7ryGyo42``3$va*NN7Qp2ZC) zT3+V8h~L%IgJy&iVDhv2iUs^{+&k=b5Q#2aj!3QfMZqW=mn24xOlD3RD3@2&PIjE)2T%MgCliD&BoGpPzCj zN^Ftpshop)H(p*J4^>duzY|}<4y*No8yC77(t0h(DBh{RHSVDW4A`S#lLm%;n@xEs z&w?ch+OJiq2z!uF*@*gBI5!yxye%iC8&#alMS>#*y<+@(rTTK*=LzvBwVWY5ayS7z zjW&b^r*r?)1I^Y2{rcmOE0g!JQId!zN60zGo58`mc3)I?jMTjf*j)MxXr0!#=SiiQ@Ox+^>X32Ddd$p)3av)d9%qAPz@=s>M8M z=+vTlIrgG-E69QLfPMPAbK%iWkRs;Uw91Tv(TW6^$t$X!-EsPclh%S$wFt+g18<%p zlEdg5Q^QQEL7dTvDN=`hkMBkP?dwOO z>FjlVqH=D;AEj-4Vn_JQ!#s5A^!;fe(L}c& z^<8wS@h-$}DIA(ZGUgkb=?g_!IgWs6DO@|u(lK#_h9CWGT7Cqv{LE!{mK+$Bh?xPP zctR3NlpL2VfGzybh#^wcv(r0Cfx)lOgR!+eDy9jNo?{!E4_~iUW7ij3d6T4I^5%YZ zTV~n(zq0sxzO7M5D%8Z@^|yD;>$>j|obCQWj;5fd%>N!mm=Cw@vsXKi)BqF6_^rk@cd zLU{IvAPT?l{^peRIMOjK)ED{aB4XHdW~U)x)~Ag$+RDJzxTf8?Im6jCCO#ZM4{A;= zR7JFSDj}56j%D~k>I2B)H4bg-Tbk80B-YaTOwOxc*!ei}F`0jpa++vXa{nvU!J(S7 zl6bH?B<8Ts#YNnlrvN(oCn-)`U?lNCiiD+EOpvx?XMpA<_x#NOgVa?`HgMIPRpK~b zibnw}ZGhUu9BHd6Zg1M7jQ$=#1eFxg4B?fm=t4>aqr}GTKMqs5M3I9mNe!DdVI250 z+ezm@Fii(&q?`U--|~*@RP(D{2q6$a=Ibz+9ICyFvr4H4i8?XvfgKSp7!3jyNxB68ge{$=E{el+J_~6yXXC>E#3K~ zcqdvE{keWdOQitd7NzQnD}boFt!OvMTJhtbaAW}u_-ocGnjp)H^mhPZE_Y`7hdDM2 z!(-YtG0LhXEfAZCcBD`57ifjx!6&}A>_#ME9z{WQAV8}k;f=EO%M8ktNq^95%Hx>5 zs6{N8X(GYqx3?O~64nZ!M@VKDKt&M0$tSP_Q^-9k+KoBkBdUhLXmm#bhIqqVZ^d)1 zvl`aV5FY32T>z0{NXR$1$BxyKe*y;7u^Q(fdffI(z7RRSvEOxCLsiUlHp6t~a8Lp0 zvb_}4b*AbObw1mgjI((KaRapCx48}(#QW+`s!G)^4f>ZtNa>^Z1^>u($Ok^&S#btI z;*?Lt@S!l^vkB{J!ds&05jBbkuK1I>JG(}H z(aY~lu#UOoLADslwiB8AEKs~qQuqZZ3YTuKOg)b%gxPjdZT)|*^w;>EOSe01kl@(x zcv`+bVJ{1VJ0MHaNJj52SJI+St>7>Ny`tO2x zEsHSb0Ak%%H5Z_2g!I){LMTtjn6F)oN>%cjaQ3AX!apcF!knPt#FH7aoRW0nX_DZ;P7a0jghnub_|D9w!$@&5KNE@xsifn@Tw zmok9TRZ7i9Huo$?+Pr-DR=WVHbQXwfkCNrp$wWEK8k)pcJ=-tdFA;}K^G7IS{>A{# zzGvSfo7$@Mo;v^lliD*WN>SY0K=Zw*|8M%dDKK3zo#A_Y4HN4pKBLq;K?{Cyn8tSP zdGcuAP-u6D1YY`u9HOUROBwpk?UI5C8zb4RY3hxFt9paY8waQ6`?TdM$6YYu*96NM z9-qwbcRkrC44g;Lqemut)0L|kH(x|a_SJPTghuz{RuQsuG%MUviepQ~;l%&h$(4J6 zm*!xje9G4zAU@EW9ZHY8=KgcpvwS$EUd&4~CVFG~yQ5!w$FByZI0(i2iFK$pcF56S zA;V#>2y?PGPQepaF2j+6Dn4mYik@q&jk)JZ9cbt|KE;fS2#xSi4ia}!c7H=n1 zvLQrPe+w{Fgezg&Xp$KZS!z`VLR%nOPKNG@l4Dv(bFx8(;EF`|4C|=*+L_UPx4GAI z#j+@KKhDNjTn5tO9tf47(c;gwRY%3aC1}BK5*m~S$cR(=%IQYf0;6;}WvI2tUN#+j z9vZ{OZ6zx~yCGXi^AN^;{xIyO|aL6z-qw{-hTE7?;jJ7 zYZ4MO1}0BS3fpIyuVuShN2(MT)~Hf5SxBkOUuKpOHe5fIAh!-EF+sKR&N* zqdjhxR0MK~vQ2+Wi)>qMbD&Ftk|@+Gwpm)+PfiSaqDQ>wJ9WkyAImuAWCZsaK!5~Y zV?0Bf2J)K&&67zv3Qk16s)gRb8Zn-uG4ZTs^pVQll9l_$ zOMVA;vq#%iP?;6STJmNgHg{`7Z$JMi7ID4#0LTRpx4g83>x==+dklKCiRxFg!*sqMMgw%D+2SF8~-;)0^{1e-DPflJoafT}`|{o13g7 zsH|gjLRJJ2SgVgM`i*ZF{?mZ)E$eifo0-nsn&DwM@~6i<0{uc1vxQ9dn}Do6B2IOL zaR16&O?w~m-Jf{0hrzx2kqogqnh}>=Hlnd9%g*yIuu_GnUTS1e`Nw{X&5re#Ge7TT zw{l%kRU10KX7Gy9;z?FiS09Y6@6uBm7QWLGtsUuLO86tJmBO$IJ_?!=YyRqOnQfa=|ZA1Qp-W~Jy!60V%_R80| z9bL9at32$v>Ydu+{>9sI((kBH=(aP!}P$V#-r&MOXjX6-ZP3qSVKX zZwRs&J$ab-$whv`PMRV+*7FBMeiUPSMKdl+@%lf;Wu7kk`h8!aN!*op6n?9jHQ`S& zJ*_(ndn(i)|8_R{9UkAwb3?Q;v_ChxPK*~{5 zUqj9@6sK^1tiJ;JY(yVsO#=(OIvKD(qTIC3o56+68>8 zgf3AWC6@dL+|lj6QDZJEn+pflVx_2ZGVC(*e`*?DIGd#S8hd-{1#$BX$FmuV@i88D z`?l0dL2^4V_?yFo;(J2jjMtfY$*>$Ms}-#s$+TH15TO@2aVoB67ONErN&rjaIccHI z=Bn4|V@}Wr)MDR|`-{<%`O;rVi0%}WgjH75gT|=g(k7DSzB}Cc6U@zhs3=h_X{Oop z;ijiNc)^`8?^?akt=w+n&#|q`paDXB0sqggPq*hgZlap`f~G!tF-sN#NZW+9;gWc~0&}cvP{>kFgS9qi?MSyAw^nW>LJZ%SvI6d+v}pK{<(%vbUm) z&<@SInGL5Fpd@8hj9pNi9S|yQ)V$!3NtEpiHP7*$3)Nfn;;=1)0n8n1t-0+>_Y?6` zdB(y@!S{#TFS^NN;_U#gZZhxUvNG$)X1HFMzZ>V=z_InDmLQzvW5`ywUbbq2$b!dP zfZ(Acb9}}QDLA9`AIkuAy<=Y%Sz!n^q88+!>g;7Wb92iV>MC2}lUI*UGWLX(-Y(fU z1UB(_wX*mSC|Nk$-vGI9$jlUw<9QnsJ#Y(!5cSnz1iARHrxki73xsqF($O+ni1HC% zBKYn-)42LU81DBh_F@*g?j~3NbD`D;uixZ|X2nqZZs;8m2Rl#Dn#p^DJXs7XEn7n3 zKkkAdb(JEHD)_(b8CAk={?`=Mrzs$%Cu%bSp#yd3$_4(eYd&7LnjIU7`b^w}agss^6`Y9Xx>%7@?qobH5w-2BIKYsV&Eb zdB*w`Vmba6OBf_PJS>xiwG%EoU@yeBUR0H5`qTK6)^E`+eH8NzVS!W?pkGST%FlF_l zdv@<$ZaQz`wRsu^1Th81Ea}%%jGt$^(6?V)7;kkh%i6#u@aCO*T^Ru07lEs@9P*ST zDc8D1R{%zJ7{ht^$8epfKrv9};DikTgSc4DM!rJB86&?S(Zyc!aA%6Iqc6-_thXTL z0M)w0D0A&czL&2S%M^9ZWx4Nt=k!Gm|Gg%#y*x+R=T9eE1Q|RZYC|N=GvQr>-PgF# z6Jpjb@qmE!4T_f>w}}c736YI+W9bx;`NVk_ppd{CmL0|YW!~QuDvR+Nhz9Z6S%&(6 zJ6>RVZ1?`HbkkDMH|Dhdu~C|9d#@WM5X%))+h_gfb6oCCcQ>lb3>7=e&$GuZfnjT&%2*p>AL zxQN_-?d7?g4aOO{Z?o5zehDt00S*qXiPsKM4qRvf$`0aDRvKs2Z;M8f4;xl{U_?Mc z8sW5%p{P9=l*h$F_q;C5Sr3*sftK3$9gC~YBj^+M2D_@w^#aG67N97OSsp1TWD8L5 ze!lJ=xd=ci7PNc%ZY&P*e37ag!lKC5tMr$@Ver*-CE1<)uwFXc7nnfh*4Earvg$8@ zeJyPr8g^^7HRxH)#G#k%W5G$^KntIz&_=KY~8D_?)bnyjV@mI3sbJ`Eyr^C~nC z5uW_gZ)W#`rwZFwk6%%iRk8?~6Kr~0lHW?o@6mLb7{EkV)m6Ze%d){e#@Cix%-r;s z4rwjSNLgL+AI4eA@ebJ?8e@tR9pA6>4Y>v?xl)VXD9Df9C~@NX-hha%^bIaj7C{%6 zo_`w@mZjo010y6T=RLlL?5Wm^KLb=;`U9&S*#to^0U9cW$ITTg;CqD@u#C_M00=Qy zP_`*^TjUO)5RbQkEKqN=Mvs@JPz*(=~Rx zSY}aAt-54*yFRCGM+^>4V!--xME1yyrE`DYk|*4##@Qz5WO?kx#Dsb;d>6_vC0M zP>RQ1y@1hBu~6-Y_}GkKsb}s*N`GUW|t0YS3ukH7&!(o)du=*QSpRMp6EO8 z>+?|sxgRXxv4)n7>Ig=TiQi~faQ?{duq-a;$t~gLdGr?k1;r3E3@y|x)KyZb`zc|m zQ|bYvSMTl~x;*FTSWmzJVw;QqTJ~|ddh7>;$FboS32nl`IEWZ2u?U6r-U4gYKkhWb zp=7n~zR}$=+LEPN2$GCE)Bf@Sg}c7YCX6^A8#RFN3U#ZY3{HKrjzwgeiCpF;@h(o@ z<8yirj6Wr1Q-AU%;y>3!gC7r#)hkMhDIou4A<7W)#3CR_cN`Ek^u?Sk%He*4vj^#7a}PQ8|P|EhRRVEo=v_VCEG{Svzb{t5&0gpxqV1Bro5(cq;G0dR~3r zjLb>~7fgr{7@wS$`%;N$$~S>9fErknMI6Lu0s!{L^6*%@4ndBGp%s(yi2yk8onoM@ zq2zW1k))lEfN{*4gR>N1t!gxfH9+Z)hd*ymby zCDfaCRVoA3tZ&c_rT>Ehtf2VjhClDH2ZO6L=Ek9kyjU}25SGLIQVw(Lb5}EO+cnUd z&wA0GlTUwll5embodix3Dw4aKgOtP{^5Edxz=C1@EaR2*I*8;bnu2cu)ViMj3D-&(H@& zlnchoJO72hD-xXWx!zJ9G8fcgHJ7^_ z!q=HtVqD=Pa8#+z?DJQQV|YPT2O`#Exq7i<@Of$w9-c+(%{BMFO6}DyRBm+}vN?m^ z0SIP2d5gTc?OiA`gVCi8YNtHqoikv}v;DdvS}=B{G7K^ik?v4Uad5VECbIo;wn+F{{&8F3#I&uAV_8Y8xH zi#sseog#3F(*m}p5YAW#m$^l zi+-6R^xn*&d~$jRJqHm3D%S)jvXqnL-w~u5CW#sEf7b*mESKMCUIE*832_@oW{PPH zsF<+83j%}DLE#vFwskXj^%WM}!=DTi*TXb8wIo|TC*2afFRE4vilWq~acf6rKD(H& z@N^0O;8sWb0MuA+8f#eSB9x|PL126lYsak)d$s`_14B$dC=?FpJ@G{4>72R?nN&CrjcY*jwNU?`sgeiSaOl{zF)hI+qk}{cC zizIqHTuo$Fkh>?^6}>Czyca`E;24e*mfU@aXS364A8Jr7p@b{8q$8S_g$RGldNcn# zztZaF6PM!BVoWrq8E=VX+Z%*AKUcsij}IYyBS3M0HQxa6VZM3>#$C&n{bCM{@cofK zY)(!wXp6!CegG)72bt_tQhSL~Y0i`LDaP&fgNZSAJ$gYWiAAM4J**sf>F-eMHOo#V zf<6xAw8=;);i?A+%uOfj_(mu9)FLDxqVv0DSQ>@gcv6in} z^aKa>5Nz(_e(WRxyD)w)R|v||-bNB+D4u66;-GaOS((ghIkWkz5S4Z4N~LjBAD5mrrFcUdZ*)k!E<&g2a|@G=h|Fk>9NRE= zY$-1VvFiet1-1ZK%VP#alEVrzIxu%sY7$i<>s9#q<)xPmQfVc*OG0yd zf)WiAGrCI@CaANoSMgfwPc0OIga7WVELO=hUpq4Nj&be#pfNk#&0FJG462{>vg$q) zJrpET|Ey16iCb24wp;%u%|Fuj23x!53;k!Lj3Rn}OipP_ABTiQeJZuDT2>TQaC$cNHfc#qCb8rRqkade5R`~Y%L0H!A$cN@*N1{zd*$l7I_(dE!773$U;?Za z&SKcd6$Be)Y}ipFt*J>GdV=|DN#b|A^4~St@cdxoMsXwzP0jhfu-{hDQ(4M;od>v2 zlS)i6QQoovmIa*rfeS-x2o7yg;J(%{HAGl%D~!7;bE`=nS9I2=Ack#X##2$CR4 zT*b?tLG>4JYKf0sg4{5wwJ!xw0sWiJA|bL6Bht`Gnq^Rxo`V3RlRiV43hsLC`Rnrd zK6bu!9sk_?W(eDQQp~pJf%BN4_~ZQ~Px(@gAbJrd>z<8j7|`{4zUlK&ST&6Fr|`1Z z1q*T!2R%L7IiX+GrqFDaFU!TMOL#h!JmjDX`Z4vhDe*JxJB{$b`6dR2b$tjIxWyTM z=E&moGMaCj(||(L7dH4jg^!N(5RC0Xj2v0?(mNB!yyPDcbQ{_+GTO*}OhvYyJ2nmk z?guyU7@xSK7iCT#5NucUNAw%rPK|*=_XrAz2z%5y%U+M$a+$?YUJCV}%~TIExd{CW z=U~DCKcqd#&m%h|8V4LYn5^XjZFWh=oPP3C8ZSClQxuE8E9Qdiy67zxudP~D`wg4A zx;)kuQ5mQ$R%RIrjzUi-CD*jG?R69&IUWkTf#3}migXGB;!MU&<^Ru^Y<$kRgMP7# zv?kt2MWwQ0g(@zws}{9|#M90kD`aliZFRHUEAN*e?KWUV2inqE*o9%$6^6PJWH?y$ z5GW7`akTBQPMMty$Pa)VzhQsyrakCN8I?T%oTd zE~|FR#*EE05-==Q`Fx`7bu(CkCZN6-Nv?>oXc`^)vOs*AABkL>e%P`&Mj2XCNGmo} zk8rvLN1@}%6~(51VF2NpRlqL@U1*y}Wq-x2;tD{Sel=eF#Z`r=8Slczt$N(I@h}5a zMU;XOoyCZ?+P-nCS{dprw1uVr*Vuq*vl%FwQ4JR`v9lu2XB=-^2Lm%y;uX$3_eO-9 zL!9d~hQ?T%fD*rS?O%M)%hMp#|0OIvuZ68N=-DKy>1m#<;G0f(7fIrfI}=+L$QFR% zuWEGQm9z6QH#t07X;?bB56~LmgvvV6ac@Uezrb1taY9je^;jEcF4aMJm*xEQ(fVls zL63pj{{}fh6|zIVKh~YogbG0!;lH0@6&I57f&H@x;K|Vt`i$JUf-?)kn=I1|*G~p) z;GjB-VUYH{*qqiP6H&5#AaGOiZt0ALYpUg)8q^P%s|;^(s_fhtP{;>Ozo_O_Jy2lM z51C@nJWu2Rj?!%$Z=&FcuGLoK0`vSr3g3GTv>ZXbrd+o~pgFNb2%B9gr%XrZ(lXq| zA%}`{X$0Wcxv!{;F(o*|AgC6t)pd~K_SnJ*a|oV%P*AdER-U3U#D3DVq2FQzyeu*D zdn&ZLfOYj`AA_~XB!9mH6}icM+EH}mXo}^7&UnTRRHF?Xkpg?qq|Xdk218~);EfN1 zI**(g8(;d~Y*sDpkKtbK_0^2TtJY07wGFq7`B8*FoigZo_yTB}eWk0{ICnTB2#mez z4sEcr09?WQNvJZ=32SjPR;9snZdSd$@z3)UQ=wx;DV{KkN6@)Y8aE3Ccrn2*@?lsm z+XiRv!OrG}^+~mt^1_y1NDTPHnm}uaimk&-CVW)M-RD8lWV@r@5hgM&A(7V`@muPRVvWGhdS*8^vBGfA<;#Jc z4KqUZWL+W;0!1WY%W5xOUkK zUk8rDG1y5ECv8)rqVwKorQAdET$Y*14v5nN+*3yzyC?6ara8t~+GBsPX9!*78RlRr zjlFa-_3Os=Jq4Uz5!QvY3uW#8U(YQ9*p^o!e+A+&YO%#fMI zD*&gmiRD!z=wtL_5klN? zJqV3-;Q(%l*1EIveR!oEyl%5i^f%W@+$fBuMJnSrjopu=#LwuaRTqhRKIA3aZ>&hjd8~VpPO!X!~G;5x~RxJYs9Ky!a0OWmxRgjz>6FbsHXMe zUK`egjNHXo&-K^cs4SJCy56?X9NDi#8Jl(*62ImruN@g>pQk!!vA1)EC+Bare9QW4UmXZJZ7Rdl)mwqrvXE0o%d3u zLX{!MX`R}LGS2{Z6=nn8_Rn(Mk(UXjyRR6me(jATL3hR+I92Z$}{O3O*Mi|G6^_THp zfWky1TyV)#!Utdmea>@e=S9_s-#L**RQkL)0=s=8%#aO%mL2SdAdJ1!lquy#?P=SJ zI1g;_Lj(6QfF_PC1%xycZ3AN*S)~UCC2KA?zEU-e?Bd3sSwe{ccGZP2{1h449Kj?F z=tSyMaCL58DpD*?%vajXvDcjV-Kw{M^B=OS0dcCTHOVmwmjIZ^3OB6hAPi3kU)jl> zdGKDY3aK!sR62L9VRYJsluFL&T9&N+_RIGHeOIz;dzl_TAN&(OA5Z-lsaX;U)9<6KGl@ft*}@fTS4; zauIQmW8BgE8rdiBosT_72yansILtrJYDK`#1bQK>LfzO+X-HOYV;%wiC9)SN#!#S+ zw47wTB@#y#l{uuB0WIz^V%ay;33dX-7=sF-0-Jjc7YVJ^6w$NKNIxj@v;+;At9i)PFdVTtu8n zo9ISx_D%mxIGaX^wz3I;w}Ea96amzQ9I*Yr7_TdVYRJ4@04QPG{Q{th6g7g47x`a$c`t)+^Y2o4pjT^^XqiKO zFi5$Li2b-EzgI-=)fj0+AI|Zqp$P7Mrvum^kAqc%7b7dy-!`A)3|4n1tudt7@ZDk+ z2kn2hH3*1>-F&S9^HVN%TE-oqeUIYJNccZ&)?JI#K^C)Y4vUMZXfr<9L95eDUQDy( zfp{x3zt^nCr=GS@#d+*W0jrAV44x9$uWKT&AS_kr$kbkk(I*c{qd2Tf?%08 z=~Ur5DvBNq^SJ+yc&t2H2uqq1$0Ztfb$iSKnE;m@qVAxgwj4*XxsWnNI<#Ns3IO;! z9kt}cw{#iQ2WQp~z1!T1zjtPM0D@bH_Gk7J3EuBWXaT>_+ONyH3wt2c|GhA?*`eBH z4P>>T8zZ{WD`{$)8KcOhRsKOK|EzjZ7*UY56grz4{tjrRJ%tWY`|o+IWC0+5GVlt^ zExmNT)ia{#yKnz?F+km3Dy7npS2Dw!XDnI=0BU(RziS1nbLKWRe^xHFeE64<*L7M4 zotvqx27I%rAKU#sj}5w$t6&Wqt_k2rL&d87^u;|5Zx|CH|>pbZ0H#tk# z(ib&+OD>ZMyq?}?jLi)3M8yrLhgrjrQF-_?XIc_Ii)yu{sHH=#_pbCt6$}QVjy6EV zbPs{5BYMYFQ3Fq^T*zJJ<4xz`4(AEXPKrP1e6x00-TuB0+rs5Q?>uKZx+ou^ApW-% zW*QH5CKwZvFItzi-D#yLRh_&-H-wc(VdA@h)D)AgI>XJpxrASpQa!2Qh3f>6bpnJ35xQ3{H82&k*@68Ofrj2d@6`g`p*sqd7)6>JOe z0`S#XN8eo0CFJFc@a4Fdd8|>4Diqf)pJN^;glsuWhKhta%v}L=f$TKnjfrF)#8L~C z#z$*DKH@#sAs{&{-x3)DkA}(^LyG++PJbvUaO^6xsNmvKRzjylS@xB|THxAjX+ z`6SI0k`76JESgmu^j|PoYpS7vsFJ76w{bfQ%BiHBzUy+^=b6LUTQ*F2u)1MZ`40` zO$ibH-Jis@xQM@a*?bH1g&@SLiFlIqIRsmRv)vR2t*^#}r`F`Hx~PIdv=OD+5ixe~ z6L$Fd%S_b^_VvEyi0SxKp$NaVW!<@5ze-Lm29*S0n@}fkjTz-KO}ypdJey0e{qyWUpU$+sMi<__?TLggvI%}e7z1K; z&tlWg6wHJkWsV(F$7v5yAikl6TYCRjURu!o(L-hbz;YY+0p3@ox`Uh^<>!CZDI5?z zlRtupUrC9!%&KR+(D-P&kqPoN+(Q5|vO@l51)LJGmAcV~f`4)jhe?uAXy5#0Fshy2 zQkEbGA{Fp6rzoOr>11?h{P0$KpuB=)Iu^?CSh`|Bmh!}R@VlmK(6E>Ur*Fb`7% zExzhC&pQ=qZVsR7`H?}{syVF$NGB>L(SRC`Ddh(`QqrY^d1;V%nc3f(=4MH4_Skwo zr-#_AIR$9WJ!qY05VSyhOpvJ;Z8NeiYYrU#Voevwj7sGRpUTlAhu?4ZVV0!IpiRbom|h?9eW|=! zFT!So-=haqeoI`=8#Y|aZ81xoWkvIFPI2Djzo7cZ38P_ZT3^;WTX?dU5}+k}MRKF9 zmlo>6z>_k*x0NC6qHP1HuAQv8%mPly*sccgy}aoAsvoQXl=qUJ3=V(? z=}`4A4eO^i+v%EAH>dQT4#&v8Opa)%jH%OD_EA7X0in%5$#XL=x=Yx-mv2CCS+8Xa zw8rcIoqkfd&lD<@< zc=BQGkMeM!OgI}}LHL^XJB5`?c)wuZv|B^oM=mDqu z8Q7W*HHaz2LR)$Wr2-Ymt4%MmpXdG zfqhJL1CkM{?AElLLgo((Vj|kJ4^>ROBc#AtM#OX`lIi2$+{0Kl$9Q*!B_DSbu~veK zrIRH|!{Gz$(1aTQHx?S1lv9mo1q>3cubC_+Z!U}$NuT%j;S<_CoB0b&lSlkXeQ#SL zI|byPaRRKRGgLhjDGkQCb`Ge?Qja+w0VxZIVwx)xtDyD#R2h>4g}Z)@T4t*rL$A~| zd1LO`=U^JIa9&y$d$0fk`UDUxS;C)Aw(R~6E@n6$XQKn8Y)GEn|E6`FLilt}dA6H% zj*D#DF(-BzO(UOC1*FYOXLnf9Cntv$A%jfp9uy&bxi^IchClCp?!Diol^8AG5?9 zQ4A%MJIp486+A-Uyf=HCB_hMkL}NE=H*&VPL~eRnW_C3to|-4UASq&LNsOu|Y-`^9 z+T%a`cQ1`gf<=A#p3YF}kOeI9f)MjIPC&#@Qj#^F2jYS^CMYW)s0kEKjZ%Rs7h6Pu z_fpa98TJfYNw^2Rn_hN5M)%tvX5o<}&IdEF*e^=%+)U7h;L)OvXQZ4eq(>clO*1)w z)%JlqMte+^2CpGP3eG-7NeQt!#!c*8YHOvAYcCt^m+?OZ^(Y=jh5_sb7OlXnXg-Wx zb_w#}oXn*thu(5vg*HqU8aK(l?}JnGRH(StZ(Ad0+7AN`!IL!o-x^@paB+vgX)asUS{M}=Wf6T)1FeKV|V z{5ocNs0@AvkbjtHO4;?Z6QWM8{y2n+Xa}d?6iA3z!^l;zF?gXGHMJlSNQkqWDUHQY zX(1TQ-3s9!xnM#X*T4qxJtNafJ7<86cF|qfsD>N3QAc- z0CvsHTMKa&{iVu=lAP|L_5BfC<<3KqKV@vmlNP9}m-YKGWmZkyTpK#j{ADAltX`_y$HR0}tb3 z+o~Bbg3dkGP4Tl&cFLmDFRSPW8EwS1Ixj^RqfXE?a{?}Ng>XD4IW+~1@Y(6efYS1D zyy^k3cZ(a+h-!2;(biN?ByzCYLfOSkOt12Im@rZE{IBF^Rw{X&-zw|jgYpA$y4}SW!%ke`*#a&E%{%Lrz*HY6Ku8EP5vw<8fYj1BH+(O zO$u*9PJhz@qg;wK0!#IdQ7+(6t6eN$Y*!2b=Gvo{SuwJHZznfhJ9pP8{mHlxVoji!UuEJ1}$&yJ2d-D-1UY%PZhOh?htY{7gmiQ(L7Ec2PkqO z&hJMHAOl019vfsb71S#Wqu^e{$~?Oa=5K%o)x67DQFat&5o;4g2aArb%)a$yGKiIh zPa|?95D-Fa<{r!tNOh%oUUaWROq?v(^dtkFqUm=}pim_gce6!)R?xUa7HtA&tc8KF z;rSZ0Rt%XX_VLm}D4J_vKS1=VBxSCgsP==eYH}iR&U^C)Iz_G;)``#Hh9N&ld4~5v zZx}fEZmGSG&=cfCDqOWcf~1$J;yhO<)a?kaLABUlX6IW+lqQVX(+*ghl@O>!P4y%a zC(IqtKX;5Sw}7XR^j<2D$%=;kVsp%qW`@gD9*K=K`3CU%KxjhtnIUPIss;d4iwUweq@e}zjm~KppRoX ztQYTU$MPXjM`i^e$|3)jSL>4$eH+_2){D9IEbIY_wcj=7fH=uLq_}d|n1U~I+ErJZ zC+-6O_Ho77^p1DM;zbcd@(KD@lO_PEUr@c*3%Wv1`Usx*-jr2IE?q+C=`U-{y)%&b zZ~6>Y7&3jK5g|45$lChr!*PF~o_J?oJ7;ladmK%!^Ra>v1n&_!@e?t4@d&_t2hOt@ zy8MaWHY$_9;;kSQR4S$UGK;kWO(~*HE&%x}O%GVdJXA!Jy092h?9mxPR{Y!`?MWeSv%TF7tUSwl9reSGlM#oR8XSTNAQ6F$O5?My@D0 z+il(&yitI$qQm2J&j^qJlDs@zuc-mhI;c8W7#9XM?)8*3KLT9zjIWx=7i3F6=Ibm} z-8P%tpRYR~x8kU$QkHe;s{VXgrz;?qwXn8s8YKXaV+pgtd=*kf_2Ag$#=WbTJO#)T zNW9aadodAxJ3=mEpbi^?G< z(wc?s-+?5aCE~o=0Vc%V!TLP{4T+T;8s6M!{{ij2WT>hwpuS8;mON;$}Tij%6a${ooh4 zx(+vDg}DEWCc(12XW<=75b92IbJB87pHrL2=M^x!=Tps){T)CFr~;p~@8DdmpWjs2 z&b)UThbFeKb=?+n1+21=+fljhxj&m)W7Sh&>?~FRdLJi5FxxB$IhJc{e95i%t(L}A zukFu28m;3s9Mm$=p+ZbCpwbn`Ra1|)zfO+l)C%T65V4C1GhU@o`K$rDcnQsn5>{~^ z9rHP|2lgR{s)nUOv0CF;q~O{BgvuV@tHQCS9KvIFo@o7z;1f>%B#)c#4)3bC#RfCj z+lYy<3Fx?spDK+9X#d;FRXzUc^aIsK#4c%HqV5vlKCu><%~r@|fg&|E4i*4Bo(`^u zt0E2+%)n&nMMULm_xZ1&I+M0}b5oX_sMi6A{T&M$0jtaRjD(nY=XFrv9RQLL<`^Z) znsF^v3TSH`7w_I@waLspPaME4m=Q%8Nc?Nmj3;|};6hn5KuMGE5-gRpt2oE5NfmKx z3T$|CO<6{?0VA(Cy81k$<})^kgz$jJzuFhM8bxHk9>|6?lbXLjU&d(kOH*(hXjWI)`#8D0f-Eq?IT{1qL zNKt)_TBfk}XS6*K_Ln`V)c06wonBpKDP*p24U%Mq*3)``Fem;jwO`xwvY9n9zN*iO z7r@!iPL}-S(Hrh}3EV`#O_G-MzNT3;>%IEXI#DD`f%r$+(FB(&gl1jH2f%!qy5;A- zWtFqKMJe26W9xzpUier0!u&-?>aXERf1;ZpB7$T%JlWGy0h*fJspy4%leV~NSo>Y$ zzf*Pz1`XC@NAL4Ck?w^_?`28JkC`$2pCL3dx1z0U?KE$nSH%aBk5sDG-AC5*_3EfB z;F-Q48Hg@jbX#}G^4vIE{JPk_(4hXQhB*T~<7NQ2BRldvldc8$VClg78(&NS^AUivV=J6?NgN`Mjyl1Q`prb}*yiR_V|t zLpWr+Zq;qL%mlYV76jk>?^7a)9{?d~Go49)Qe?F%&J9n1Y39jB??ht3+$+6C>2veU z*L0cWcBL{|zWfnnEcPXZGq)_M0qhNVyV-Atw!>}%kXWv}mLsm+I!Z_!nV5=6jwRkM zNKyqWTOLtf*hebt6{x%1DDPu=`+y6VxLwjxm4e) zDujp)gAG7Q?|HQcMQc}%1vA{z^MpZ+?^W_`xfCUn%G?Am?MT}BgIvej$_gMitak__iJSOjztbSgvYQgj<(asxJb zf$rz)fc_);Mr|)aGhWQKvJNV!x*ci6@!-YMfe2p=?*>5g^{3^|@=4zMkx5kSn z6bTSsR7|my9Dw+zE(bRc=jhohAHh=QwDUW=KKRzqI~InN%C*KH4-1~JcXGo#(GX}> zWh7WTb0wdF-z!{}Z=;QiaetNpxj zsbIeX%a<0x!UTC(3&l}*;{z1P<^>?xdwXu8PUzlLPc(4n`lr8`)3PDr*rpYuL3i1A z(0o-H82!>&#&UhI?MIm}{(G6Y-HgN1=KLM@q1o|^JuSh8h#jDLApy7U-@E zW_$_eL2^vOAQKNHr>c) zeQNNcHdf=ym52lmu3&?nBiSj73Io#9dTRArukfZ_y{O<-EGPnz62iwGvW$7tU6#IA zQa4X?_Ju8N^=s=LGl~-%Uom@~2<-^}n}Ln!7XE$y%L#nI=L!~$erBGPm!{!6 zG7}W#-E;Sw<;KA~)R(y?Zky{C`zRqXJpV`rm57D4a%TrRm4nD|*k~ilcG8 z-xjs=z8m@!{dHA&HUF%6W|VjQv4TR=YaE^ zx}hpdITO>6yc`0U^F-sbFvh0cjXJavY#m97XbKWzM@fn9gWU#lmpFw8~jy1hJQLj;BHT9h<;$|tJ;42p(`4{tXlL3+C~ z!O&V`tsz&OS8(P7@&i7G7%`aX4&)a~|-n+7ZOsS7o5GXK`ES zxc)3lZkJV`-}?`nKBWiSF@gxMU2O36>zgMzu8AGZrzFaT`(Y;W&`=H2rn|u@Uu8B4 z_S)iyB#AH@>tP-ad!&YhrqM8vPo2f(+eV#>?*N5n68% zy|M$lAEz#)3JXg~V!>4(m#N^LtI3W(YyzY`tu5ylTj;^%kU*ZgQBB6FEG4fIRElYR z>imNL3~ZpIu4TIjnhAEM-fZ~l-ix<^ihQPn*NQ$X`#q6q*!x&34yEv{NxHLYE!vM* zpCw()#_iFW4s}|%bRJ$!WQ8a9N~L`y=g&?*Rz^}EH++TUGT_hrp0W2^kEb2(kr zr8$lrqR|hSGzQ$+*Ecv|rQhmPC_gHoro33G?5CwYO35(#kXYs7m&Hfyqs-Dr1Ip1l zrTT-2PvBZQvifhI0C_@u)yI@~wRnR*9fBMF`pZ1-`QyibJj~RH* zge2ZP^em5=Ik4#OaN*OojaOD+auu%&cWF=lb<^T zUpJEOG{AG0~r^g(oC#R>y|)W#MC%iSGvJ|9$4wjVQWeP22N6^)cL^tNQUnQXW-!- z#geN;_=DY-kU>Q&@;O1)3^Y~mTgfQ>vqf5D)Bd2XMP7mKo1@>|VVARggxVW_5DEF8 z#g-w4#I8T2rBVK+`jBU;!d~HOIh;W*6pEnHB-H6ORWNip5V+mBgdc2Rs5OlE$83iV zT(c*;zBQ?pGvLMOxME`94 zcDZ&xEx)AXvj0ASjjG3n8Z^a@-=5peN>vy3`f)fqUdjBccsN(+CF&Drq&n3Sg z8^~Q+LnrBr1p8`+`_qn%Ml3i-{G?07 zp+N;)<9rxp=Orv6T9!=+_y@KJ^-K)rqhl}jS2~x$&y_12M55F}NgEG>b5Qo0&Ae+p z{^_m}6ijLN*!>}|h#Jrm{ohB180aO~lb)iuYFiRY&%_3tNUzOV`YA9BS#&P3IBIvf zh9m^g>7xYXo%K8>im71PO}IZIbULOQ1zW?qYTycfzm=P#s^w^l=z;4KyS`4a?~YBC zz&s9^7d0h4TDks8!)H5s_iJ8q6pH;4^WFb0=b6r0Cs5khaB&|ANtIq{A7hl=zgO!^ zd~Fapfw5yqeG$T&eEIRmv6VT&aXAQd9k~SUlb@4z$pD50X1J09QbYZ3X}-BOOF8|b z4dj5YV~jr>n66i9@B=vbkkz32z;Op0x@&%lKeJ6x2q#0PLkI*Z-?_M!b7nbY7>#hT zMV>>vQ~Hj5T;yr~h_7`9Bee){YI`GcL6);%dNPrI9L?{OH@UsgOJp6wY_&hS57Gzp zT?SuT-ig30izH*^Rrbwa-)UT4*1kG`@>{xiS0kaA>M z8@=uT^7fqdpHq#9#k(E=+`!?HG4UzMkmas?`m?~ zPhEv~&M#hH;$aybOLf=J%699JHvl-$Z^ZBLWg~DjafmjZrZ|Q@~mMAo* zniA5}oY55x>(sV%MT+Oc0*u`%xU}Hwvyj|6D*lwk4~`H@g)^lVn*Ax@Sxi!J$r!MTLP61Jt9w>x?@IhEg3#=SJc%5C! z#ADM|L{b$*LnuIdOD-ycZObu}=I_FCi~?*w>bSy#4iM4akj}exn!~Sq(0Ts)iE-`a|h|Gz}C8YZAJ6fX)6FU;NNgXzJbJnEbx6*^WG&i+2%5 zgi~c%qMt)0?ua$u?U__-w#Kw;1gbuAdyCykG)gEMixwf9YF+Z=@89aBS!qBD5OEL_ za_ob0e&dB&D_UPF?Vd=u!D)IFPPr8kuJu}Wf^NgR& z2T1+&QBBmrI$rCEsWDDpIqU9h&H}$$4)Zk-qnF(dZ=}0e*FN|bKmxh-jZLoilo^e2 z+UC_K_yw;nlZztna0A3t=8d}x$ElREhm*LJ zwM-sVb{j3GzbfQG*q_KZkAFKz9zx?OYi;~yb9bcYqPpLs%b@c#@v8~tJ*6Pna|1a4 z2TT*ysd$IN$+~_#sut0Fzjfi2lwm`-h1x1^xr-Wk*nrB|l9;>TOBm8W4_;qJ&V+?< zEgso5eN z;es8+tPos33ReVtiNGsw8Nd0k=1rv*U#FDR{XcstV8g9h18*2WLMYyw)w(kc$G(-XMN>W5UbDYg)Iv;Vzz_!MLw45!-aINc1pR6|#K1S~BT%ikqQJ>hi6 z>As&vP?4*H53wi00_IJE5p7&5 z$e(>`4^ORw(8OGjeMm9H=(c7^q%R0jR0gz6Ags+E2K9Qx)PIE$BYxoW6uQ20D;p9^ zE#L%pO*jZJ#ci84!heYhk=0hW&ygmyuoSZBDK_IOVSP2eQGb#!2yyl!!2X=44)Aqz zG8|2k1g7OC(S+CM7N}F#0Ug0@ut|J@D82REs}m=cQb9E24beau(`2u*`^Ip3II@xl zZ$M`k;@&YJ_(@vfyR2gSj?vY`z4VN99mxCa_F|3$@Ch5p#dAY_{)YI+ zNy4XQDI0ZXT#7q>7SBMWrT!%%aI>-zd{h73|7cIsp}CCI+%3~4T_cht`0#9lPF7UX zdC12K078{k0MofPU2@24Jk%U*`B_~wnbCN!`VQ2)`B&Vwpp-%GarmRUl77i=oUSy_ zllmmpyvEOeC>VC+>eNP1J4cu>lSom;_^=4=IH|pihcXFN>^w+m;tnrL?&%Wn^cTI< z0oZFf66V(*s^Yn2mob{zG#A#;w9vsq>?v|rW%60}8y%>fliH9j&4D;07&cjL`?T@!pMlxI?3e#*;Z7h@bYVkd_ZdKndEk_nRg{fC4*- zhdvTz?o6?*dI!b!r|A%UY{|H&10B(Q*oTQFp@QX4k98l|AB6ifT zE-y1XP8r1=nt7x<Kiqxd=1Ma6t-&0OtVTss#{4%(1K9{u3_a4ZEqimj2v zG7jj)DnXg2c{+_F*b}4EPh^gwjf9vO(xD0#hBxy547hKCX$p(uF-b@6dY_vo(Ioi; z5Z-HaEOFXuPL_?|u5Ga%6QO!p2vl0s!%+Qms)oV^2)Q$THz)PMDRcO{dOCm8_PoKT z^=Guc)J(yuxE{Wmmqzh){_XivY-cW^?Se)y7V0)|f4mme$`Cf6YO>4Qg`NUo(BB@2 zBa9CLk4;Hf{6bjeBV&Ru0Et-OWGWY+&zf8+xmh7y&&U=@wV`P8#jB9B=Y1hz6Us-~ z$iQx3DAsk2hWhg=a_hsbP|$_S3^V=F3C&A5Vig4f3cYAL15FuSZCWx-WtLz;>e*0( zVu|}9#Q$RvBk4U~3Q9xEeroYH>c{OtiWmM~%ZCRxswmj%+t-Tds@I!S?7BOiL)SgI zG2vPp)L6uAD#^NurxQ)V=nLeAH)Qg9ap04Z)|&8cws>_2^T2y;7t#I}o^I-w4 zE-Q)QU^MDrK|l;h{@q}e~)~{#0`2Yl~CuwN^zuv=^Uyb zpYM0`oyqnFZX^ZvQHm!6yT-Kcct=|07?e+U^J_tD8zj2FG!z=@SlQDdz-Sd+wC>(A zfNN1~c48#mfE=oVeO~ugc+1P@nvfjMoC#{fCPipKP(n74Wb52W{_#;Wr$x zI{=nc#uRl#jPiBcsqVk(RVas_An&-8+V7fAKc)dOS8<>A{haF9bJDad=4NgE(7n~a za_u?t5SG0;aITmYi~~UlgjO#bLJ_ipPY#Pc@<>NMcl8lw*b^8a-(@?2 zbngVWLlNth6SDxZ@D6etuJuoo#>*HZjzJ4!wkeL{UPUamOa^1b)HMkf(L5h$!4x!y z#}5f7g{WS`VZMfIr3P$0_jgp<3Tb6Mv!mgK1OkDeVTkn@x$P+TmJIxu^2(N5uU`9`?dcg zG}d)E_9As+c{FqL7APwy@N*h9NG81uev`m^bU{f4DKVYzjRrgZ>_g{-_eQzJzX*31zC{zxr3eW z{07lnhr5SAuAY*hnzlDlBh3n%HFPf{Qy}$XS}Hr^B`hBPW=$fsZE;16JR_sLjS4M< z1FZSKa>+Q?zt2<@hFeZ>Rsr*a3YZ}~on>`4638|3+`yc-JYTj?)2U#Cgm15l$+y0( zTG!*`Gy|T540#n03?sERr45QNL{9HF`c;$vOkRZ=gRuVT?HW+5UgUVwT>tHJX|b4g zZPUrKLQT`sx99ACPbKHQW-)pKR6g?7D*b@GM(_~)U($z9*gOe&+~|az)5b&wN4ZL& zX6^vOrz(1cKN&kR=HQ=tFXT=YDm^8eg3Li);J{WN2)hP-rA46~M!W?@6WoR#u~zL(oO_6-f{19l%S zcBvK_xf5`Ugkx(bNjc*>Y)lFPS2jsE>KOVWz;o6ve)1mewJ$CL!l5}=h^+Cv=g;Q( z@8bS zCJrZvnsA!2qnBm_Xn&@>Gx_rJ?PL#4}$|n6(O5LT5 z5(CP5TK94i?+ihcXNaxUD`j2n_`kx0sElDscA9@N7E9Nbj(gObuEfTJ;cMlOJ)ww= zBsk}ag5>~0N1jPemWS*F@fDEKER;rDdpx}KOyi4{A(_qa=Wf;GckeS5T=4ev%-qg% zJ@9d+dts_sx->l^9TG{cq_-h~TSR4H#=Hs25rBaPu}3jr5cutq$2LYfbk zF`aq|g4L=SnADeXhCcw0K#2WHcn~v2zO#8+yTS?}pz_6(pdf)Hl~z=`j#v$ zq3rUSXz=l`3puU5kb!pZ3dI8dvwm`vWJvU1+*OOh@`ay`v9im{oiqpnJZ^-RFoZ#z z&$#p&mcw%`)QjO6gkD+}f~oX~M^4q-01`{KJVO459hYNmH?XdBVds5)DVAtD7 z@Z}Kgr$wq+qCHG0lPJ3>WWzGJGhBd|Sg-Wv$S^q+`V?H9C=NE2lNs5@g z%fsBeuSELv9C}u8{Y}jDp)IqN976d^?Gnb2`T1uGLx@zxHr|auNWY^t^K7|KWenzi zJ2Px}a1XMI0MOL&cL9XwnVnNyoGuKu4IlM|J5A5cLHZ43jbA`B`*mg}n!L$)xO?t1_tGij z;JFY|tp+&1_U)5L0o_3*7fy&$=9}kepEowL%Zx;e5|y8w*Wcc2J`Y4fYHq}#Sz|JU zQlQxQwNR_bw;OF;gH|nZonx8+ezGfjix;QHHC|lYFuFU5evf|)J_^r> zMK10%gjroQxAy-P5mWQ_0fwKn^GJPOQHToIfFUIsy0Tt8|0n8VeTZ?WtqaGicosKd zo{d%v#l}!WZ>p#otq2nJwD}$Jr2pM?+shH|bS4U>4~ek3y8uT(xWB<$ zYc=l(50tD4N3}7?IA=%=`SS1W82XV> zcv~V6^t))mTr}Yw0ku+AFlm;o6byXkOA9SY7HyKYW%S*l!qm$|y|=I^_(uV3>z#sW z=>RI75}_?`1YPI;3chtc$-Gr9HSZ;k*PHqWeniIKA{0_W+RT(tl9WUQq;utyu01J} z=U@aT#%l5DF}VTuf&QHV{~$AeTTjO7W*K{f#fIk_IJ1UjFa)5z2Cf$7%5mBqJoq}& zKiTV84Ov|j8P@PGQJekzc(Cm+m3Pt`*CgaMPMZb{OmS?# zrZt=cUpqm$czUIP?3z!=mFyDxYR~ricr?IXObYk?WZEIT*o0$OqLnDYg#&7ay*RSe zMT3EL15Wn{^AGKnb~mcKSoSR;-jh}!%Rvwr0uMe@)qfN|ZhJVM8$MimdY8?+#C0pf zDsj1cGA*e&^R&L;rCJC;1Vye%QOFN4(Y;Qz%7kmOT|-+Ix~Ky|wB*Q=;H6hK5t0|B z)~=7(-s%JC^D@~rMePAvzY$N)feSrEBrYLHZgPPZRV9d$O1-hg^cGZ_TKUk##X9I* z&yf|JMsJ$ILC~_vC*Ro>AH+$;LSd*sl#6C3@$b_m# zrPH4waAo;^?%$Ql`_(j8hxiPHq!uXSSarPo)8v98^J91>=GwdJkjMFGYQnKTTaG2S z4J3hG^E{aa7Ye~l&rXD^09B>CSI-!bE(R-s`v%h&Mvk&#zwZhI_8{&wf6m)>M*QGm zX*m(OVL$GZD^sAWCAzBW2tCrX$rrrk%YvRojvA(A-K#oYX@d=6)l$UX8X#HAr07%% zpQ-Anz@7eMK9xPBQvHOWDitec1-F7?vFC&?#&ETWBhLzd1wY8`bG&_O))8OMf0DZ; z+ILPP2jkALNo~RNJl%;B3H=9m1o1GG#IwB2>rRHE46ljFLZACn#LYEg0vJr+Ff_q| zjZKjD?*?!7$rjnkeWoVx+u=x#~-JG9Wl6yy|DfC?_RduIFt=g`)R$g?9 z?Kinvr8UuPmk>={4ATwAtDjp>VH&KS-r|+36?*hbUkZl=Sa7Q2q0hA7N-MSnc*e2nU-NVcRb(H^_Ws&0_4^v1G5d0ojtm`x+eLxrTF;>IAM%~FL`Z=ua zu*vS7O>@EsJr-FYd5?kcisaktQ0M~7$z8XhU~O4Mt?9J6s*yZQoe%-7hv$y10$&xU z_(7SPo>R4asIPbO;bj`CY9VRXp8zx&3iHE%{Khi~5?z22FEvMt8`CxsCsdhB9fo{F zBPU~3BLFmr`oVUzr4$GLhfnod^k^^Zx?d!FW5tKYy}y&~BEB63ecL8)*?OFJUKLI4 zJY*mNRpOP@4;UMSIW21i;on{5fDt?F29B%{mkm`bh$p-uGrtbdFfT;zsu*vwetb{F z+tunB8wV<(WSD-V12i}h>rwn0m9AnHu#Nk}}3ywD$Fo&u8wIXUn{JrMBRx+2l zVy=_hbQIs+GB0C}e~eB{*TKgrn#uNu!_$e)1Jq{qU!#N5-Wb8=gqhdRLI_mTtj%r2 z{P1n(nsqR$!Zd=v+cV}ib6-e^30H5WPsA&LY>t!zlx}pRM~D@Y`OMfMUn%*(GyB85lbSOiW39;R61QZ_6(e|FjjPKd z``$nuLNz*Ov&OTxXhX;UHxfDpm?(xVC=3Q`y!Q!DNrodZ>er~qg@Ds=qi{JulkoL- zfUc%F2Uz(9RL@Cqg~R0XlW(lXz!t07`T&xU`=U!0%21M4hZ-qEMkDDYe+hn0%GWrM z`ucjgGK|Qe28i+!+rgoHQ74T?AXFo}d?Z*az*wN*pb-dxh`UZik#CT2|sCvF#G;p&3coJiqshFca!rWzYyNH$QD*;AA=FjHQ< zB=5dU>IJjNxyl1d7SgG;ZqcZD!hTi*o7OZfEjVZFgwV?M+q^{MEPE-)#6Z`a&d_9s zS%!G7)-ddwXU>VS=g;|;J&HRteoY=rmqDT7lW@Pxq;CtHYwPV4W-SwS{mv-$MJhE# zuI-i%SgGi#HMwVOTFf6CO6+J=562q2@JI zP1V^jiVsr@aMy-qd`XU<^xPHPjrVOXJM^c2PjA6Ij=hGSfV>a9ABvSih)qa3}o+!Jte2z7yvceNGz%au`nC?Cb&u zWW&=iv=&FPK`D>LCaJ80RQj+!Pb~+3-pgXRrp6#>TU(`9EU$x>@+$YRSvZT@!$!_f zi5CeYVKi{EY)WXo7OLr?ij_VOalz|fhSv5Olc|w_vuz=SdFdv~M1nxe!WtK=Fx6d) zqw>$UCy;lkPs>rUN&5`B@4D7F7Bqh-O_aMFLCz`$2)iI?O#4sx_0mv1Er>CfoL+?* zd$1i5Bt9!hA&6lvMSO85M`_^A3l5-93#~fsq-;zkUL%5(H3i`{rz7^s2#n`HkJE04 zc9E1DF3wbdAg_`Xv;onR)2!+M776zn7Gd!%3+Y; z9N)0cM8E_^tuRxiVll`Q#=4w`71j(>L)nE({Ip8MOsd3C1;Nj7aNKLNxZ&$WFQ3`W z07gm}Hr1Kgb;48mZLEmaKcTXcMKa|?a?~i&o;z8A;wQSjHN7P+MJ3F1w?0iDheM+^ z*j?+Zccs1TaM@h;-ytfgA!oPEsoCFad;7$A#vUW7{gMiP?97_{h> zbg6FE4sYh@;Yc{v4&o}eKG-}hr)M!lAXfgf2cZ443F)gV_zZ5GeoeJ|lMUg7a_OZc zP^C9NL?Lx6mYX{LF?l6@X|Cy5$y>wrPdt#2X2ZyDg@I1NM}0V@slO5p?@e_+UgbR^VV|)(sdN2k08Zg@hmR1U&I)dJ-?&~U(8-J+7aaCn%EAz$* zJ{(8VUt1#1?`N3n;o#d8=}$}o#{=I=-31aNYJDavLwbTU50!e@i|~6pE))B*qvr0~ zfZv_yVDC;xIuL_5KfNe=fvGaA@0-7vVgu61W)mPZpVof}XveW9+|)LK zqqdN~f-+gBO&;!GB6m>#=K`d%=`ws!RjS|Us{goTYNX4VOh9vmG}a4w)UX^VF3^P| zTWWp?#rRY8&71I`yi5(H_gyyKA*t+eF{@vEbLw=c5^RqKL|X-scRfu_p+hGTv0T8` zEfT&I5yRyKXIeoq;R{r}YKNhC9btKai*S{IT_H10o}@&}y0E(xEr}IzvB&frlj^&J zo8Srtr@Pj)nHM1JCb*o=MydV=E%TVy)vHUJ2rAocv1FtzF}hWt6?Fmrbn#1$izMhA zZs2Cskvm|g`2?0o`?BF*J`fe^PT||QuHC@QyYp0R!1C0mWo&aHD4-l6;wlE{ghQG zn&Z|>BudHAR^l84=K_r15$ReX74UVBw@-fouwS1PBp5Z*vX|Pf|-S z0fRb^7{zx;cCinf`cAGO$?e(JG;NDCy71pnTw#-~v z^$cE`<;R=84W7uwBfzWM_2zKgCoyI$den9XG}UPxNEm%G3~ECklOg>bO98B_3+6@Y z^8hrcoi*=o#C^;&zW9x5kdT#v(I#=cNH?T#;gI=J^eyK9wQlDbD$J~quBJn29t|s^ z;`t-3F=?zQc@~vgzr&6E_1CWIXJ0g+;sw#L=>-6x9@M50`}Au1sx0_T*i@nV&f8vQ zvI8%hCMEyii2g2-zpf_A&Jk-A zfGg>AYjhaQ&17IxqU%60q?(&du-YqkUtWtBD8Fm_>E;NOH!Ed;-~JtE?*MxMdtnl# zgJ3!X;)|{jUGqIm=~x{-7ql2On8Lv=7b{;yi1M_A-|qU?am*5>(Vdk`eAItUO+Ibfnn%ypO$ znb&Q{*V9p~Nc3Jt+doP;M!{=YlO^3N!sfhS`#1Sf!XI>+luK&U%ld_lmGMp1-6JCy z3qa@$BLbizQK1r4oWwc6I($1f)}1_3QsZ2JVc+VrI*v^nLo zjDw~a(1V=g<|HTOAgqkc48m(&UrofA(nnMU#i|tQcYwLLovVGk{p=`W$~v@|l4z9r zE5Zi3wZp=RQnO%oC6vGPH2mA=YIz*x=vRkupXO-RaamSaG=XpmC)*$%+?{^?ryXM zVxZNgFA32n1HxjQ7Aqu0?4za}D(SUIHe@@~l3d2@?;!xq$_-=j2=F7y&}nHm#zb0B zB+2vX=JsVRRody-w!t`mXC61Os9ZRAlyCySeU0f3(gwF*$+yJ;ZhOrI_$fE?Nc3vs zWoOy;zqKI`S_2%=5U;>*L^<9k-J%WKZU*U5oJ*u1IK^*n^N}m;ZvQ;=X|~m47l{XJ zK=+(V~c8v+Txl4=G6`oF`U zbrMATfP38M=r{KalH$%&N{40ueao!BSH|{a?o9?T0n_7!u0{#A4EuXi6Ua&Y(zQh z@ayV>Pn#o63p`-qqbbJ8!hwq{kQ->zNDSc9gSZBBS=mK7lPJ=y{TB)SW+11?SZHK$ z6?{GKr(_i{Tz0E#5qY1wU2r}64s+UUlLHWTL)sH!zDvlNgqrVnhZ#Vd^uK$qCc>f+bhMUkgpdbG*Z!f&%Ir1YNtwhILG}*Ns-H`vQ`q+Bc>kY?Hz` zff(Ro zl@cKCs7Z$_oJ1O3&!5B>f^@d-r3O$bI*ks6PUzfOb&}MXfP}xd9F=m4wSS-&-5klN z2y7EDOeVxvB|4!Jh3?w8G{D&CM2c1r`qr7gUKgezEW7x{I=&Ezd4`tBgS*&&C4U5- zlyGe7bb08ldY z623*kqdc{Vp6OkfBmm0>UaM8Rnh;Wua^M*fsie*9u}4(;2=-jw0eN2WEXKzomrfuZ zk&+C8poIfryxUbmQoa1nRm4IC$cV z&Y`SJ<+I!VZwnjap-^>S#(3EUBp3$+9!NksVYZEb;Z&Js1Qst;>%@t?cDz$aAIO`J zy}zBU+cCX`2r5BV)J66zF0_Tcyi3O-gVed_#psU`ug6SEA>Uq83W-9g*zMye^G_HO zb<;XIK2f0(#Mqe}4yau`2;4GU%Kk=&;){=<7r56U4Ip6YZy%^d{871}0iM_9%R41# z4?~F|xdYrK^8i{0~f{j zvOCO0mACni&_}m2sXkDE(41JKaGMoeTK9q}m_jsw`s1YmkbP(WU$cgz&>6iLi`^ZizhQD^@7XpM&j`{i+n$}XiBb3k|h&J9jG14r#ZGs@t? zKZL%qy8@cUk&W?_Y6+dU61GDGe-J$JA*L3pbS&B0BJo3u_SkV-w5jn^>Iz4Xu%u@4 zVuwUYD$ECF6CijBmpAWav41xX6t>C zFilppLj6LBf1D_Tpx&j%eA7Mf=E2f6qcX6- zX~1v6!yS4q2Yk~FBjdy|p#{MqXj7v%&X+Su`2To``VJPhrlQe-e`Eme7Odrp!5>?A zYNwQnlWg-$3eHbV5H%@e_3k8m%k&)v_V9cI<*u747rnpbu=}(lxsQo^MS|+z;S?l8 zs&^S|3uBit1LB3cFlotM#`w8jXU6;;zmF=2xvewc;I>&DB$ma3zf%i!Y1Afdh@8*$ zdf))z5@JRh2rSP%ZBdd9=%pvC&(~@%{pnh11B}Lz@P<3^ovND%VZ%zkeykgQqZ(;h zKdAJtXR=?rpA)(q`}SX`Z=$WV8ghH|;;d2h*!w!PzWvUcO8JvQ#m@kh-Hn~`aMiGG z-|MKu{<^T|K;+yZc?+H;@bG&iOEQO^X7GQMeizjk4~_45MPS6Js6K zwasVVaG{XdUQtnwITw%cEKD^#h7gdCaJalV!nz8bFWJFChx?|&_S?~AOP|cLWcFrr z0(PW@x^w65@+qE*Pjw9{B4tvQ#@An6%f>1%$uBVlH9xHME2S=>gCxCAT)qxB#>SRU zA`ryjH(wk0sIrc49FmyA$hp;F=0BwtX{zHI?;h``C8QArQ8Jm}s3LPkbIUGEN}P@= zw+=K5*OgQDp z7mXiSrG0hJmqhId%w1AVaEv;OZ1hRX=>;kA6W;4e2ElsbZI0Dbr78B*{vG>bso+l{ zCUf+P@>&==S9wD@yzT}?ys^f^!dk)N~r$43L9b$=Dtdg z3$72EoIzI0U@V3;ocjtODifG|H4D437XDi?)(q^|8|5gQ&f)O!AFRRS;O`uiua)Fa zXQ%E{3^R}0DCN?R3_@w}o}Lc90Lx$dvC0hr4M3K%^P-8?C>BmP!`4zAeVqw3+HJ~l z<9MA(t!UaJ1!pX@{S8fwpPg&rT9z)8EMIe~|^ z6JTL!B*BY<6I0h0(t@2W!Cf{wzF|&`{P(L<*0mg%hD1`=2Fw5d)xbH3-+32Xm7h`K zOYFX2Ir_Q?_;-m9-)}w3f#{QB2`beG0gnh7v8D>fF*2Aicgjt!SsGXH_@fk^&6U9l zm`)P4AQtU0wez&T8Ox(XC4%ydHh`A|7xAy}mi71h;0Kg>6}`KCjP|mRm5piIn#67Do?3xC(XmnAC zMnLkAsw4#XdE>sV-!9lyv0_2XZgbd5_nV=w3Ps4vQdP%@((*W|BAgKbKUS|w8sv)c%&$$4rePf2ZuIc3Q41m ziJLSqBPdS7h8w%Rp)dm@fEyIYcWRg7L-~20f)O<9AHpzTZ~WT)N#rHbi{Z&f zV*}~V_QkFU3_<%sG*&|2+$HT?cDG$F-X>D7#y#7ig-eLOQ=^gv+zD6kgXm5?aLsdG zkOv2E*Q`kFY0-{0|3RAX>IxRioB=M#_%Ed6Mv+hak=xGOIOMy*8)Sey(xC5#`2(&t z3{DQ311*bKvDk}4KSM9~7Ca?W4?HPTHPACHteLB!;$n55h74$!(8D#=EfQGyZ3bKS z>i(!MDF&;BBxqR){Z$4RBcli?M$yMa>~Or&_*f75_ioH*CxK0K49AsTi1{g zgfAeA<^zbxTcxe8B$;F?kN_Q0l~CfZO{>BfS{i+?pL!HGhKtbcv>1^u@+JaA9VBRl zN5jRVlP8-YpHKF8Lk+}i^b_Xdm;Aey2I_CuBbf3X^d{iy!A@1!Bj>fCo9@7y{i6QS z;u~06!qM}WRMqHfB?$fD@?yHC8+g zsE&hD`1)w#HFL2C+VM++7sJHUc1gz$7_^X8_N&0#^KPfr697kQicNrGX*7WvhR|qg zJ&Fu?VEgr{$Z(0HEG}nhTU8!CxlV)O@-?4lGE%>S|pq3sMhGk*dD8ueE%r zk%EB!*YMobmUE;1jbG+4DOy=j6xrv=0jjV8aCfCj>&Ibo$K-j;(bXo#QKCp%>I zkvvxuPx^pWMDk4{Z$(gt*>6!PH=#JFpa0Ica$D`aIuh~GX&${Xhovu|hFc#A;Aw~F zgN1B6kkF)0@LC_?4X-t?-l22WM~2m}e#Bk!yfwA87JpMI!iVNAnNBn1QNfmQpYh7# zC`-1xttQNOY>{xUs$O{8uG8pl@I_wXZ1l%{E+7J`RAg2L?V5J*wd%(7Z_DHA>y(YS zw=FgN4Gt7B>75lc@!MPjsd?VT=V^+md_nxA6o)oFL}D>HsgcK~w>a<{m;bmGYFP8(Ck(2-A>hjh8T}~u4w>TK1bLadV@+d*W_ixEP++e z2WGX^BsEpxS4()0JyNH)hYHIOIdDavZLTHs(#%s|=~{qq8O7iVP;Gt(wE9G(EMzLAw9?#s4JcUGTbWh*MR(po3>c zPGs7IOL&9pY;L9yxv|B8$Ogn_F!4%R*GcHDz(fza%@?n<1Sq=aPNztvB3m7XOq$N3 zPo;7v`BsNA}FvY>iK|DkLQPZCMw9tqvqi!S&7O#R8r@Vy|Oo1w&P| zc)9}EBv@=%o^QZ}Ng_2Ee8nG7W@XHp0}4-aD$ZHOogNM-I<&I^hV972Dy%=b5A>pD zz;H%pf(21ff}ZdlVy*wi5X2owR?Yz88O)2M;;`yl$x_LFRGaSkbr=jbcv<)E z1N)-zY&xI+#*=jD3=mr6FdU+)+P><@ZaoF)5)}21Asb?*f}DM=zF~eN_qW@5!(SqC zkL+|B;%36#7y&wTA`%w`N`t%`ZN~PkR?1>L9oKLR8?j;EUd%FoS0n4B`gW;FDWwdp z=LN*Qz#+gz4b2@JOJJ&@-)GnwK4_rm_PyhR=(98_(zUFk3IYV;tlcCYv13dHPbFW= zav)l(gTu5gv}o%fr*)32V_LjD6f@}HvX-)>SZiP?@U|MIHXtv76_;_BV&i)M;=Xa* ztF!qPt9VS^cl{ZgOjl|4wU8y)S%&vrnglpFjdAQtkD(Xx;B-}(`V)1MO58hGF#@P} zb+Psv9QXodiQZRQ>iJVYf^fA`{VU>9P-&whE ze&wH6?7Z~dP{iHtP2$Z)17U*qFw&^=yw%l&!FK-wH;r#Fr=RGDy$k_@0pr-Et zf$^ZX;uKf0y_nizXbkV!9L(d*$BRmPt9b!^eN%~HkS}5)K>C@o42|9 z4l~Md)8(xTyaH5n#8nwh%{4E27n#!mTODd8_=V_dVJFpKC{2cDD zUV@(EdFYBo(MAs6Hg7f&w(1+_#O9n?lWYhh!J z@(E!9?6j8m8b-xuXHt$8Oz1S(Bzb4b*F;#ZXJ|uIyMMR|T2E|5*<9TJR5}0P5||y{ z={pCCB9=Jm3A9Vk#dwNIPcIh#J(RmK{O?}_)CN%d>TCPri_Wta;vNjMLOlg^D)#dW z$nH{Z+kGx)v=i37CLICW(LG!~(x+4|P{k7x~ zQt4(=vXpqS<8cY^^X|(eW@&NZL6ckxio;x9gyI8J6p&U>JD^fm|)H0Y+XC)1hDpr*`@Ku1-R!H#(k0wU^w4SqCylcnt)^d zojL;o@B_;AWMOy!0hu#GT$5;Zk$Fjhu9lMkc3wjq{CTa1Sh~V(AUlf^m^x+p9mrX@ zt-T2CZmMsOuFH6atrM@)7h7ni=8D-d z%J@-vjj8mP7w8{LG;{cZN8i;`_N1_ZfCwk-*B5UNPs(MwI;QqsA&-<5TmX_zZqK&q z1GqQ)&_dkOJNr6WZ*ny495vHgEN9K6zf8x=q7H!y4e6 zS`YPLFccpHv5@##2KagdT6@ZbHMewNV9?rlr+=>}Rh8OV^iNaJE~eEH#mv&kSqg4RQcf zvLa;B===2iB3Pg8dG4m2H)yb7awg@`6E#T`de@Qb%?FWs_;hJboyEWBhG?#YBe=tL z4G}quLFLnb^6JFmNS5Dbzig5A!&anS7S9|NHFn*xsIw;D4mex%rz9ZX{)(c$US6s} zFgYZOHcvSgWAh$pnKR_@OvHPZk4We1*KcBFKQ7nbIb&C7;!)HMN(Mog%KpbAlB}~$ zA@y+jSWf+F56H2q&iyt+-<0D_I$aAadNJC|6;(1dTBX?fz=gD)1#hgXCWB2KG_%SP zz6Ha2<-3Katw*2bw2X&iSiWk~R8P}LMe}vYmxf>5MBUU+UgOMkbQo-f*o$gWEMTa^ z4JP3B(p-R%Bbk!Vhna7G!JSt>iQzU#qOX(ODo>qeYZ)$tHxB}XqFP#^MC2&Mz=ji_ z{8%z>lZY>z4ev*68&a0m?s9!sE-Po63pXd2&ydeE2EL!0(#P=S#TV37UyGL%0- zczp{y9y+63+@Rdn-t$9)0n=;yk{EZ|T&pya)TCnd^p-TPs#R=RB03!3&F-li9!Yj- zeWmB6zAsB?$?t(v+u;*@=Fj4B7v<02auEM0h@I*u zC-0en#6Bw5`TWoPvQg!(3Md0IqOHfSe?`Dt4@y&ly^F1l)A}g|yTmGx3BPZp4vdW2 zVUSxrOGg~Xid1(%;e`cQ@6=z2j$^pglP6b*ia+O~2$0e%5R3}P(6T>$V+VVA?t88? zIUTtwc2$e|dv>kAy7Q;?)4Xp_5S$1SlF3`7as_xdsjtL}+>OGyAUwVCsmeyh z6K>2b?^fvt|17SflvV^0gzPd#fXw(G{l_yoW!de~d+~v{clrzE&qo}eCU>}P5+pQ- zFxZlu;jwq~z@k&w9SCd`d=AZ&%Qed{0Z62mMi=>=O)=8rcLGA@?ZnJCE(NI^^cwWHX}U*@Zm zMfeV;-aDdnaq%kvdO%UjVH_Ray{@lw#v`leu$*PGznjc$+VY z=zU)53qyj_{)vOk%LUH$1ng#jE_ZQj*{AGhMHI~L!MIXkG;yW1!ldek8w(C{$=V+qA){b=a=qPs1Qg_(; z`~&3P;6U!B#LU&(6EDCOZ&&F6qazt*E>QiqgZN4qo^bb00mKRdQ9Mk0SU~ zJx)ESUAg<~>6m0lz%^SELWepa7!B|YEj@_OvH|EPf`B-+nCvG0*zhY0_i!todF*OE z_dA6b&uwP4V-1n(@H|*-aTbMsMpDSzFCp7+QPr5N;!LWdx}Z$N52&vcZwu^DC)hXW zB8FzYLDg$A}{g=F$R9-C7d^#DkWHubpNpiz^g1ML+yhQMap#Rbs7b61wtr|3& zktC4T$Jr<5YP)M48Gr}Y`DxLM(^gofmj6#o-t}(Pbg?kZ+p`^0zXTRC;4lIOB1&n^f&L#$opBe4Y1M%p3TtzgK5n}~bTV#@_t)8=$0Z38_IPFWBWb$E3 zqxzu>rnJELWqs5I)Q>YY(8~p*0ox(S!h|sNyYwGGZLAF$yH0klTJHzQ> z>K7`od0*#E+jn7T=cAzCc@_y)<%gR$K}k@#juwnTUN={t^h;LhMXNSh0yHY*3y?Oc zQgi460$8Vn&X~-m+KI{NF)cdzuTX1_M%A{E4J2A0|0`pNj|ndi7BF@Lx6P4S1tDy~ zZ~rnXR&zLIK|gk=_jTL}(zpNS86T7Sx>`pDhTfT0OwR3oy&pb;G ziw*o}0v47YzC!@qhqBn1HS}~4K z7bq$jqR_Ns5!iDTG&oN7K8P(dB+;9QImU0257-rv6zHj2z>!;ujnqlJx~kY4&X9-h zfg$b*GVz~B7*+Z7ukspE=BTSl3#|Q=SK-9@Qc@Sv9T)D*M14a zwZUcrQ&*0Jx0B9<31d`kkRef#Q(R_|D%^LR=BYDrR{E>Ua(00Bfkw;Ha<$^c29zeL zzuF$Z+z=(3$0q4Al74wLgSw6IA&#ae6bms8oc79Jjm$_3z>+f5!jy)D0?wg;g6lL% zvGbhUPz!IvV-~1)msOG&9wj(OpZ+X#7(S?0z-+WoW(}!>=k|3uMcK=(^&>8%T4l1i z2Q>v$PEU@JM1s*N!I_!EIS10XT&cz>-x#*8LJvRdh-2f#ps<6aR3O0$q5;^tK3V=L z#p!wU2HQzCDe>yqArV|(yru3vx&_==@*#t`E4=X`amQqTp^*xe&0e0rk*1)8>^6Bo z_$mq35>>acD4|`ZjKV;S&c&NgdOc7OA>+^PM?Bnt`|Q#9-g22&k{B0YT_wIU2-e7U zV8K8wr{g+yB!f$#ReeMct}{l92x@Hs zIN;+^^9?QP^$^m))OQ}j|N1rsxBlq%$}HoPD^OJ&fxxj%i?DuY(%UC7r3lj`Q2?%Q zizJ_?V{lP*h_Ow{$N|?N#aeCj$cc)zQ^p)M@{qR7by8A?1kKi8y9ZDMN1t7g*8aZb z9n_X9b2P#$&=-5JWyzY2Z>JLfg`Ll5+rY%x}9I2;L9 z=;*2^gclHo)BW%R8;9~J=01kzqCkiM1JKyQ?V~B(mX)<;5`Zed(_>#758Am;O;jsA z-_a*TwgX_~rti6seKno;4M3v0g~JYKux`N~aExmOamB6LSO_1*Vx-qi@WNS*&_i^pSf+bon?#~l{qHkTpb z-!$m6pBLs=3Tra%Rqj4U#|wb7HXt}Kk_&aGlWt-mYXTaBY=T8fx?kXO-uMO8ma*a81aTr>1AT>b+us#O^U!aG(xv=Xd}&IhdG^l z>E}Yk%BTt39g5-20Z(C$M^`~ln1bz*1KF7`HUb*LrMG}dsDQ%>Do#%2i0))7t404*2vY;5%3Gdx?JVvWS@dl2E>LI`Blt*@Tuy}8k|HL_n_ zuriP8=5+L7NxZ{Og*C~$m>Tm*TsDligkdX!6?GAm!aOH}v}Jm&TITptyhF^il5rH^ zx+Fav-U~haNXId8{h)#h0%!oIKGa92he6^sIKL1*bni25|9&m<^t1^0F6Hh6_Po--TU_cP83!q#cx{O z;~gEoZa2aY>2<6l@^;Ydw7w*!SZnfT+*vcgC6gYWRA}B+x%6@)xj=&vomX}D8c6)a zUi_I)RshZ0>#g3lD|XKE(C(s;$iZ4wy1XyHd*X=herV}!9UmN>5b4`q618kY6K_NR zy;@P^pkWfUvB)hM_;`a@YzmWE6*G?|3(a?U-v^-$M{e?Z#>!z{;wdbztft$PoKcwpCBXRm>Q|tl#hKIxg`RjhBoJil(D7` z@{+Yj6pnwc4JauqEWYwpPfbfc4Dg>&RYzVgYtL1Q(BF7J#`8H7P2N&-=}k>LT{8F_ z442uhKqc1qzQdVHY4Gb$hNd(3*nd=pXs_C|v2dH%C&Qq{$x6};Ag=-;`V?>FM8hX5 zxsLkRN3~I&!@H!?3f+YLcKco|_bHkm%x6Vq4|a9fs@&GDM9mI%l|4Mgv4zb)BfArQ z2X$Md)bNx-Ao^4xFM__gfbH>ki<7*t35&6#lqZ+2dPp>1xNIb~5={uIOTpx5w)L(J z7!$7Z_GVAP$>Oyy`|;yAKh7iVWp*w5^x% z?T3Xtr#JygK5nlso64n3!*YwYJODjF!oTZpXZ1QVUf$Jcin-?~Iu|j-21@~94*-_V zSltZAY~=J6d6fK<9SU=f0Y_lkIa}BauFIxMZB>Z8G3LyA4vCe7D~sz?KJ>clUoHF< zNEAe(+4M96U7r@*ga-W|rx2c91F_7l9Ej|34>_2qE)qR5!Ujy+5CaTlxquecEav_L zAV>BUjM|8BPK&PBnVqsFuY=DOy4No(n^>Kx$Hzl4>{4tecdvHw#Rre1bB-;2fGl=T z!;{52l?4LvZaJ1|I-nN(cXF2mJl#~+E|M(7Oi%ueCt}|A_#4+9j^e~;uV(g@nuaE&hW0i-iIE%|aqL$|_Y_C0 zWuRCP+7&~z$y~V79+p&&K)`ZjQdhu+d|b8dS`Tbg>u7A!>bv}~;3Zu2LnHI(&7nK= zn0G#)(S@{Xu6u)YbpPHa_N%j~uq)K*e^)Oq^j3^*doYoIc?k827^}2sV4OFtq)v7S z;w1`3egiD43hgqfl(S^*?Lpk-X*!#?316!PWp7%70dXq*Ca3d3#+^|B3e@5o0*Eed z%V2*f0)A{KE>st`O39+0Zq!qtWEAr4f&hG$`#@ET^uaB*F5S;G?uXX!d^-2$xqN97 z4Nm25lm#Y|A*in51nD#_K{&a{4*vb3T2`!^Mf!(x5-(?5lHX4ex}=*f)}&@1x!&b9SIEo7o%Q_s~$om=6qcgp*heooZ0l+VKi zy+mb21oVjGYEXc)Xr6X{<=K=&x1`*?@!+z(^rxN_j0 zE_TYkP3u=!mNHeC%ZiOmv_d#alD^ko0MG_4G8CtkeI(zWMZor&V#Ora-`nlrn7DLW z>7z+x$XZ(3tZ#*QmOP6_poCMpbvaONP>%mOw;2$h??EWQlacI@d@6xJK(c(yJw0y? zvF-{e>yblY&jrlEZXDlZpbnW{mgr9J3@KoOQ~@w<01J(W+c4xY5)iVVKHHvv4F{sPmq^C0B~1TCP6>{sxH39frrIJej^V?cF=c4f$N8O88Q*fuKQt) z_O!w~WHTqIyEvb0klWqQT~v=Kc$u>v8j^bXlq!I8n z>I(`z@&oPVSgH;!(lh|Qh>3ZHUGJb_@@_*whap6^hDIP0y*cB@$GB1i9ZHe_*d@;_ zMbW};Va(H4wHOxJ28SRFTC@*98HxVZdARWBpays6V5%~?+Q#%X-|hX5FydW0ZIWum zhsiuGpizdk5%??g;0VsrPo#H0wq8TEh$w9($O_b75H0*T-AoPd%==4RhmrM4QwkOD z35-wtkOp3BhUVOegF=Q7E|h(Sdro^y&t8+>n8Ld?;al$6^?VKdi(>;LVOo}2`Fk+> zyao^QJNW!juAV&d- zU)-5@cbFre_Q6IFJI3;Xytk5yRRo$!8n$lCI&|!+>@EV>nU%cr#fHIHNA;M0$h+R06zKaM8@(d>fDc~)0&$}n+C9ifD$84I`tRTnwKktyB=P>NJv!s0?xbpvXy6u z48s0Yz&l2$`*UQmaSq4jq9Uae1F8xVcw`$v~_7q`r4HBVJe+_mJ^ zwR7lUPS_!=8K?8AA*NxOP`5VKedcw;A5QW;w0~X|OWLi+dI~ow-d;B_2DyvZtJ)@o z!_>~~f?X@T#Ab&pxF=6BYJ$Aj@R*u|=nw$j><>tp)lUVTW&&P_@(6XdMgLQmxgGA% zA4;b%x3@!#p?eXJJ+|_Fscvcrk$YymXdR-(@7^3C{{uWr0u@hS*hcPOvJ!=9dp6*9 zo+UGV=p61)IDza1doJl{&FvsfFZ~gXn;ao0>P0`Od?=9sLi3(%5ur8GylsXb7ZnIF zC_(p;HFZmFS=oKyOXwZP&9&Nn@pz9j&AmB_;Rpi&84m|+jE5C3ISseC zw#UDNp*XgF4vD+zSeV^Zg;5#k5st67u|BGgiHA-;>r;rHC{1F&njk4#~o$KZI|Dh_w{ zGQh+O3Y*xIoGCTM16=FcP{M>VMKGDb)Ek*X4Cdfi++t&OxlbCXGuY=2TF{t z*6BN|n(%fDKwqNpCIO7xS#}B>pxH!0fBxOtFY8Lv319Lw2qGF1kobJ#6EIp~$ArmU zSS_{e^x{*J3rk0f)m>3eacmR3V>zqe5saFf^lmtHM2ETLMDx*e`JLW!e|5Hn6M?~- z6G-F+j>lcz1lFWMoO3HsslVTT*@G@>>&?FXCu6f^mt5ZG26CThiFn4(jX2 z)&oQa&N2skf;@nnVB%H5sR8QM5cNqkWd(|Ay~Y*>jC7TYupCoIzFv26y6rVWZ+juz z<1zzP9XuMSZ40hy+ex;F`=7aXbJT5IMLUx&Z$>#-`%kPg_aXLglk255Ft!hRFe5lj z;I)B##q>DSse0;zy%L-03QC!ft|GsYO}?V~>Lf42aLKc)}rGy6g~fI{{R``&jUYZge%+=rvH znFcAN9Pz6{YWSm+D~uenDKue*?+RSZnuSHhVdxK4ywq1u& zE*E3;4@(29(6}s@XvG5i7+*uYko9UgmQOanWz*^~QckeW`rSnV`Plr9bU98d4!=V} zrm9SN317pw6p*Iv@g_kmF6v7O_V9azP@<-A=o{lIv~u-#GoIkWeST(=iCwW_GY3~S zaV?;5^som^LKJ*2VZT5F@i9Sy+u4k$CU5Bz?Fr9vdZ)WJ)lfch+-b&6UKOTA2=9u` z0~gejV2CG#!(01BAkRLfcUAy!%#NR`s4FmPU&#)%Bk%vGX}CNg8C-97ov$IKX2%DX z)Ks3+#b+ecVgU~iAaE%mrb8E=?R2thDZ9CG)HRgl3UisEtPut!oG{^-a=8`b&h+!@ z7jz~9bV$;5O}r?d1MSR99cc$7l#+VFE&%eZYa)A_q)2&~@x6X}vb58W#py)>H)$p8 z4C5%49&RH9ie%eEHQ*rLLSuid8*=k}EQpD;HAqsLVV>1BF@J%tA&GjiYR zqOBn!=9>Cl50law#wt8TRDEcA+$j8wJG00UDgijt#0crvlT>n02{gVtOlD zeV(3WZ3Pqx*pm&=!OUG}ypJ{eJnJGdvOAmt_~Q0l5Vgs+ZBs705T&{|7_|W400Uju ziPh2&z4Fu_(V1k;AMVI#NO3$qV#me~_5l3)Ta&FvGtc2s(OgANA$)-5P>tGHTl_8M zfTvBZpkIdwIfR0v$mZkwqHuFs44dhme!v2d)G53IbQcu-#?D{}3;I`(xA-QL#CTLe ze!V}L2;zan9Ky2T^wQ13VJJf+IDrP|DbK5i12`yKg(FF~KI#A<@v@l$xQf|Eeo^AO zryxT+?SDUtCpzUK^vc&jIHgPNq1QaSE&Z}N)qUtQ=tr9?o=_FacuV(kvU{5XKM4#4MG#0Y17uF5G zsxTjy)asP18IA>7^0W||eHxR@`Hqb9o0HFbMLPrU>-1p`;@t}c1QWa&IJ0l%Tx401 z;oDLx|dk!h6dUgHM^J3itvSI1rv65L3ayqWatmxOvzDkIOyYU%J|ltfF2!l#dAO+EvC#-og7xuS_1E3+ z!KAz?)QI78h9zqR_{J*ZDC9NhTl_B`^l^~oK%Sts2S|pxZY%Lw3wgoHQ4GRa+{6c_ zlmmt`_d$C75S@iX?R^%H^092dwF~%c#Yej+wz&DOH$BI;`p{yGrP++Hzk2&F|4)fK0H$9x-bA0Rh1-K1q4`tgpN2}SN@rDy&obSWr z>vf3I>F&ZdNV#M)HfYz>NyRvEP{DZp$I2sRT9oM@Qni`m1pc$|$p2S`eHH=~=*}6{ zHBxV!_fOhB9sKNOt>7mz@Iz{?U*YTQL0c0|ZM452MuH(LjM;QQ*HPh<0Iovx@9;FV z@=;Yci$^W``(LsLnm~d1v`C-WFp@-5#2;g5u=uo0hZt@3^moR9h0;Zk=rudnQsDfW ziBA@_C$(2SCIsDBuH^U+cNyy=bZ;_w77Tm*hU}?p7jMMYV76ST8%b18YF7*3v>}3N z8MNzYc^7b>5E?4=X({nujFFLKY44P>U{)qZ&}!w`|A9PC?Mw z8U0`&@EU&J;8OQGvaQQ4WA52UPY0KzHoCY^%R^u$P1CgCgoyhJ0zun5I94ZI2eZ=e zg+6HLagp980m=9mN&b)#TfsGry9u74Y&%N6Qd}lE-HCGeIwA=N9?h^>Lo9Sy`Xp|) z>}O%@@G()NI}188%z=u@^C=@1>f)8aA6n7pkQZ1q31P(z{Fw3U75)`bYTL|l2Cl~& zp-gW0_tje74Pg&XtfTy|R!yWQI^~i`TA9Cl$96~L)D8Wt-J!wr$l>Tbj>3!wyxR%J z!@uQ|?lLf>nuFYFbQ;dyf`*g()eE<4W<~YUkA{3fn3bBznpqi)nJ)dBV7%FV@rSqD81e+5Y zrfK?3joflB`r`;b>*0i2n9cTvdU`Tv2!P~gA3R>i41(zGZNho(mvr@^>xc)UW8t>h z2Pd~72g1A2S{v+KIGAb}*_O9YE7|;&AY(t(1SKu`{^5;nq7lvIs*w7^*O(`V!Qhf?-}Q8m&Zh+N|Woi<{;#0^|R#JWpUgye<7}wW|oVi z`MCF^49^ld-IsC=UbwVZ)UqUcXkdp~Zc5(u1N(a6>+KIgT_!>_1G(>*AuBP1Am368<)K+sz!p-TceBtxwt0Lmx!AjLM~#BdU6Tzc%OYPlQ* zT&bgd>1PwUI=CHZ7}x5q^Wdvvomu)o(%I?fsvZ_*@h0TkF9?{-(s7{I&ClCc#-JS} zIwecipKc_=|GT$chJ1<{Io?>NAon1#CXuWcSK|fntib`~){EmH{o2hh^>HPb)Ba?b*oa)KnlfE>!Ex9?w_Di`%{+Okw-=eICpfQdFi zyU&dOF5$`~Y1qThQ#l?i3tZ?AlhfLAz}i}iET08|sHrpYSPoU_LYtX-$4j;tdqbTI ziY-T`As-{fW>rnmWushTC(;|h%sTU;k)Pgv%%QyDr&rAApTEuLn3WVZz2xragwwPX{`;F$` zqAhEb>_wj_yLNm?*_wY2kJE530?^7%=ZCj%tv@MuVsKrC17Ct=j7{>onLy4s46s(W zD*~%3OuipVsE6lvbZ_d}kVGo8RzW9kPV;L*dBoDsEq}lF<14PXEA*|WWf~!hRXy|z z!-s-aJ@&D6>wErd|2cdy!_lp69{NKBRi*J@ez$%5?bs0C@CQSA2_Y#vyApXDV$Ozt z#$dV;UgK)1b>YBYU~lHeO2NCTR*Dts#b(oh=|zyxoX|x|7Tklt@Ko{_WM!$5*C^7m z-Oiin6e}_o`;*4>1g=S1xP8#<*rGoRTNn!|pL<+en62%91~|=$p(nnLAu}{uE@{~) zqFdxnS#N&#nNqj>We+zN$wYF_=FN=x=F{0?lnjI{M)`qDkt3eJY?tuoTA7b*qlz0U z+szYCT!C3?7*DTw?bE{7Awc&X&m{%VWEC2xj|y6>zKps=U{VwNcm(w`(U~ zI)&H($_%BK$MgaQKrMQh2FEvXCz6I!f|@$A8iO_&5#!p)2WtnH3&U27p^x&_2wl&J zbd7sOe@zgC`I7IRNmCHOr01fYT4xBwqyWF;0ufhVJ)+XqxQ=#Sy)2B>OMp%x!c{0+ z+N(Y4OAI+s{}F7FELN#`URVQ)aJy4`^sx25CQDx@%C*T_$jUy5)SB9ud6^Z@NwDfh ztWbeY|Aizq6ej&MYFy!UY6o@IN695Ff+LHA$Y2;}n^>)K~-EcDe& zHq-1Lm!so%U!L5(C6aBIypaKjqh%Gop6jD~_ejH@V6p48&=_{BQ?B`M5ciZu#=k1p zaa75wTZ%x+c$9P!j;K1CiBDe2HI52qUnQZ7Ls>0xzM#ArbEuys%}nCP7}9!g{8tMMS7baF(BQv#dgq?QI~ zdjPD#kAdoT6Fnu?%i@J;!sI*O-&(+)P-w!JUSEHqJhb6TfkYw%k;xmox+zAgY##;| za>lMXO()_asfJ=9t=gn^UGpvLahX879^<$iIa9D?q%-eeV{a;_pEm|&-o(+PDJL9r za%!(K`s#Z&;js*{Ajm?jNNNAgbxE0oJ1m!|B8(eY$|ni`IFJE3X+k{+u;0|c04Csd zRBftG(fdn2fK^&YuhSb@@z{A!fp_%1P#vCh$k4k*lgs~JsS5pi6L-k1kd(x^0Yvdp z@9)=nzM?If27D}!h*wQ%?l!gbW$lxEI#*}qN#aVdsA-l#&hm+FTG&oEEr@%R3AVn8 zRI|1iYn3lK4`2b>^{YP50$Q`;Viz$j+ z+W0*z7qZg(rS#uZRXU|qt?6Fi$OI#cx*Y=kUa;vrk#)^L(ZVoxXXGztM0L?GDr;(% z5_T1hj^2BcbDv-72$e?iq}QhV_7gVCoPlf8j}ZW?&wfr>!@iaW2eIj|SacN3+%bm{ zgAnkuuNx;Fi+k$9JDZ*{T4HyE23%i`LOwmh$mIkxw*0r&)M^~ZzP)De;aN=0-V}oU zw9MGsjF3~KW3dWfdTzv)Tbb5J5H z#!MdjPdVV~VGXjhvrqGFp{=wvAr+KitU~B#OMp)bGu2R&A3dB44HR1h)HB;2yz{Yc zzRNT6xe+wVgoW=+@+%-DG|81C=-fPjR8!^ZN_Hm`@uDf#5#&+n;%W^4BJTrRNLHOiq+^wW+29Av~~-)VpPU%|Hn=) zzUdnnO0IP1o$&TMsd@SVVKbla>-OR)DRf9kHe4a0oLUcAtsrLs6ju3z-G`N1*=^fg zDkM!xXH8dOYuecowY#bj7=-sq=oQ!1q!N^KlDn-G^zC;-O&(yUJ_C z3S8D#!%H1*quX;z-$!u8{Pm{%&Dtu_zfd%h_!H-Dm}`^?@R9u zs6WSa@G5PEmpvFtSWeQevGHcqlDY1UZHFV{JF+OhCFz0|6-yHS#P_2<;PZ0p$TO`5 z*IcYWs*BVe&3sHr49oNIa)K?HQ5oFcfkzLNt&B>lCNq`?I>4FmL{p+5UYBuX`UToE zp|$4c#Cw}>jRh`=YVD^;E4qF1?c66>+IjTp$_jdr0-g4fyK8F*ynRz}oHQC$rnJW1 z?^j1pM^crZFxCA@`{DTz|KxyyGsw3d8S|>Mk=Em3ZVltgX7z8sA!0RW+I_#D_%}`P z>c)(-EE?B)1;leiJA~z6Dm6WLe|CSxVU<`qCKm1D+kY(~8|LsslokW3qKC1t^6@*P zMZo5vS7C6JpvzdiFQ>$|Z~DNUFGV1FPC(2xlK5?4J&w1?K(D=4)x4&62p^@glMG#mlit_vR||w zw$cRaEXfof(eyknr%B8zFAE{Juyb$A>4;tC>2U+;68csDj+8d^?3B(0eB3S|yhgc7 z5IpqQhspJVMwhj+P^TFE)t2vaN;cq~phhopfPgv)4r54PS6X%!=+^oxy&;dn2(;H@ zSlx7B`z3XoYsPnNq5m|;ERbVc+b1esnT;JHnx0bZu{g0Ehw6dHn%c_N9;L0W?cYsSFT2%CI^;F7RR$pd(As+8Wp+@X6p!-x!i3hVYW6$I&_+=KF1-4lN&zco%M@b}kk> zT4?7fT^qRODg}D+c!M1O`sdMP7FTUU${MGW2}SGf?I(LMn~3Di_0Ak^f-AI@M37Ak zd~I&{aJ-|`IZPh8xd=s^+wkv=VXFW+$p{)zB^$1*?@-ji>nL;mj|h@ebJAx?>BPnZ znxVogmbekag`{*b0M}-97zCG5S4OalTLEjktyS=9hstGWPW|*k zQ{s5SU zR*~Jehjy$hZ2NH#hnRRgLB**7D@Yxl<_ZD5+PbJIkcoVli}Nv9ee4< znts#SO}-j+!i^QLb6Vlf4xhRhsy%l{F9A1QSg?NkJ08AaEFmmaXZAR#b83r!cvtz? z{5{tvsBgFF-p=mf$MI2(|W(3xN?E`;I65 z@!qM;{y)?5=3TQym-sqlAOH^GYp!ToX=FJNdq_Gfszj+1?Qoz8zymSBsQkdeC+lL* z6EL%!X?Lz{kV(igZ}v20A*5f#C3N2K)=lE6dg%s?2dEDg^rshtoRxv;eI!BnRpRa1h#lM>ZpKJ4218eROv-IzOD#Zn00WunOjj+r_}y(=pOj%gUt9T2 z4cFkPd1KkcCeG!l@H_HP7Nrs%vj-4M#K&xA%H@^Q;VXad|IpP|!Ao2NoPEy~Sl_wL z#m^co-gfjdmHfJi#w$-@V?p#;L2Bv{zceNNj6yw33SZS>9_d(@*Alin>bi{3{5p~;KOy9Kaj<3nR1K~pvDvf??`CaTPv+CCf@XzJzU;-be z4L;LD>!1EB6C0eMT%;NDxp{N$PJ}6Lo5fav@?(ZWHNMGnEVeQDZ1vWxsSzGujA>ly z!nOh}7;^-Fy2uxNif@rPc`ULl){xij2!I8E8n>6Oh&Zzc*y6IkZ0M6LbgK9+74ELO z7j!jt2M(m~pI3c#Gb*5dh41ciIfR+|KB zNK-0<@>!{2{dGNY_p|!UJvTn0Ph$3UY2b*$+@=UYNw#5oZA3Wk@MUy&b>3;PF<&y@ zDHkAqM(P^wmf1NhrHZZggqRxM)~ZOV(ZI= z9nQCvFIrNG9J?}W3=KNRZ5+Mo#~RMM zuR9(N`=@d3ew1ZqJf7O}=rAO)Al)1&fJ{#?{-dDgvB*ALaECRG#B$+oJrSrh!P?Nl zoI2>&l%AdQwyM1SIbtlT-GjrvaO0RG_-qol{gk3S5`;4Cw;%1jmG+CZv)e!!(Yx4U zG9~fxkeWuLfKlM`0E-fc3uV>~X;X>0N|g;HVzKt2yPViEs|m z=)sAeQl#w_#xq!CC9C~Q8RY+_JV&RAebG2ZkdMB6j#8_Gj>7=^J?3zoA6Imgdis)slJ`fuutk>bEG&Cm(( z^_q%K@MLh{kwgwMkrcm|W-6eIW`o*1VvbE@<51yqW5aUmL1<*mOeGu}mD%qbK{I(z zj^_(}<+Hu3*_1)pyfD*zcLNUu5lR$zZ?);E2`lLED`-tD{(X5xDvcJroPZG|fogw# zLMS9MY)3XTCD8*j0foI-AU8w4{>0tcgWVyVgJ9whCiBj z9*72-ayK)%`<2o!>tV=CWs>(d8JH9eDBGj#V-RulR_9o%jMp*!GUk#7ZHRXnoZrN_ zaua}NrFQEgM1#EJVKsYr?4OBN$Ue>5Ht?R9vjKN$0(;t8PI1>y{4Ey!>z0`IP}o z%HL-p)4ir>o*_GDORE}+7SD~NqNWNeA7 zqc=Jm?M%dnE|@SRY6^7-b*b}EoXIC#FU5J9Fe@>fIaxd_I1WM#b#5KEhJcwzr!fVV zjN82K&qZEHmmpZ8*UYir1%%yNzvmxOr&|``BG^U07ZAY`Ph#wsZyVTT7ZA)ORx(BwLPBnnPk~2 ztgkx55Y%b`I{Tvpsu!*`6qP^EUL(>+dLY>@5+#nAM(V=;x62)~nv->_9jgHNtTxgY zEDyJ!=3BX8j@Gd=4#kj~tmSFl448U!R< zK}(BcLK~aL!(t#J6+RNl*=+pQ9fnM3Fcga7EO{f^rRbyuVF#TsvUZr&=>E93hR?#!f*L=Xysyw+ ziik|S4Xq{)K*W&Ox}LQ_fn)UO~zifEKh^%jEgbz|PSO-+FgJt?}e`vIZH1r-(s zptakr9)H_`7a@=P@`%iSl+?@Mk|f#X9j(4+%}lH9w5C_V6QPDvvk$5~(7{J-k8+QC z=aGXuC>m+n4ALa9T+V3~n4CSTEY8Ihcxmr)VuN-=_1|S{s|7OKetk%HSlOhA&iSbe(X{{l9e0dVH{}tdIKBUnUgTV;H%!H^&k0&elD>FerG3CYv~B}f^%;7hsro>^6)2My2B5b+Z3fyg71 z{L^T>du`#m#;ki?cyL)kN{>(SF}vj*x6=w|syF9@=t^Aav`lf}>Do3xL3~ihdlkG( zRU?LZo@-a~$DmfYAeO>Tr%qcQ$*Q0nxedYP#A@IA`t0zd=x@9i_CqtkX97@V|gqjUM~y>6#Qox31uVHAFA+HyNOa|N;krZMBQLjN`S;-K#Y;m44ys>{Q9;Qu801i z%r&mVjdrjFQe#+|4`TnzW@qsg#&AExn!O|I>&FR?&jloOCyJv{pwc?CtODWhIlx5C zt6oE)p~kg0X%`R?X2~#dbXPFn!=eAuGc|7h`Z(_fETgt-HQ&Q4a@#XJcg|86lvV!d zwM0g(w$9UR>EKF-98(o=aFtF}btR1G(s4Bml1Gp%GK1Kw6scfjt1o03WL>1tQ0kwB zYs^%8)1KTxd2DGXETOt6`OU7wv-%kZx6?TxG6d|*mKTPw@gQ1WebEZlIpq{a;7(c$ z3Xfe5r|Ju?+-}SZ zrfP?YR^B**^S`V>mrjO^U(&@-Gh}4UnFuNx=3?7?NA*!ZbpJ}$qDbqT6~2$p^u_sCW;&8jF{MJ`AOih-1jH-K2ZNgmGR%Pf1v1-&CX zJ6OvpnVifI<^r1`!d=8(3=4^-tjhoszN4N$3>*FbX!Y+c=QPyc#QE^bA^s%S5G!hY7)CaoS@fozBF}3PYCJeXc zljq7~J=7B!wYQ^#;mbxEw6E~EzVI?&#M`&f(EM#K`#d?T{lQtgDqaqQ0lIAPD0qAjqX~$gi`PHIFBGP zt1T45tg>8g9pz!qsoxknI+??3em~qMHL*m0#Z1mBM)3Zw4rGoSZ|$nkKmt_m z9?RO?&QD(W%VKW&!4>wwmOa8!rEReG-1Kik+Zu>G@?B#6N}X=WvfhL8nl|K>S1Ql} zvTjQi$|Q&W{S=}v0H>w|k<&6{arx6?Y98A^&bq1d+sEEoQy`UcxvPn(<%4M5y(m%^ zl}4N)_1P7(ST2wPv?*8Q{|KV~k=l}V4&W7hISf01n1_#$i0KZg0-+{F6$;m2HwB9| zeFRGynq{-eP6;0l#SVr&7n4VCNPaHMi^E7|4`Iw%2XKSmA89Bf1Jm4&ca(B$d!61^ zS%Ubcq?t6}bSV)iPjHX*)g~=y^{1|J9-U%SVSj!h5}Eo!50iLC=tp+4v4)6#w!E?s z7~gtDV2Ywu*_#QhnRj8|=1eQhmMv!HRM`U;rHwD{$?vKvkpAqtSFu|4!D`}$D_Jeg zKNWN$2y#pY`kEcSht!A2Jt%_llqJcNQ1p8h5z-U_1Ai~Ew$ITecZvPbJUT3NGzE4F zwk|T*n9COwQdQCxLIzAi6%}KZ+Z1m)R!>y5!} zl1eDTk#zNcts1^7li&!NHZ8Ywre1LM0#0ASKsv_A6Yl#KukV@U-@%>YEn;<{ zQ}bW2XJ1P{JG*Qo@jpz6YZIKTzOND z(SuT1JXFjXc;VH1ce45Z#F;0;ZT>=zJ;d@zi2&%3uvlFUumd-n|L}U0#HQZuX!Tt* zGsRNSFw6)hbxR}vdK{?ZEfz-M5>hFU9dvomdXUXG*EZFVe-gQ%_oV-H2+5`lSmR{z`H&7& zBc5ORQ>YB2=Mb0+g+md}#sCTl?mypZkm*N5TIW#+xLf7rLB}n$hXR&1$=A+Oa%^4k z(UUxTk9DeESgTD8Qx4@FD{7Vqxxg04essMSh&CX{Til0WLby#Rgn2#!BQ;iutv>h2 zU2ss4NW3|2I*RAwRJBsB9&JvU^pfC(n~^GUE@nkz+~3%m_-Z<<(?x}B&*HS^lA8>_ zV21%i{*S~>p|2m*-+bl10ooS_9eWv~z8hn#C#7dhx13b(P~1ER!+GX$eOXegW*KZl z)umNv?LwG8&4M~!AAC_yyfS}93=qas8}w7!T-9K--{lw;=!F#05*8*uk}ATlql|+R zvR6Yopn}WYW6!#tbclSi&Q&Inzw9>BEs2$t!#1YGkz@srthBEH60UWa7~{GTnC#Bg zV?0U(AUm#}L2jwi*7=s9P?>hWMJdXHNYF2|EW?$>Hn8Z^D4IDKr(-wHOq{U$d2`f6 zmJQFCw*Cca0w#KB6tZxprDX>gHyApUEHuqVo36&Pi=XsZ;T#RH^GIP9XfWQ)i}T?V z&$ijFZs=l{>YJc3V>4{0-sOwW$2Q}apC*O*%%u|emkOUNq=BiBsqRTg&7lJ+O$qiM zo}$VB7I+Y$XY9YP`?>8(s8a~^co7`Qn3jzptKSs@LYcl01`s1S$!_3^wUQZp*OaiJ zITw?2`Jginm_jU|k$R}xeNXTWZbd<{d5n>+JGxp8yFABnK6uOQ^+_TJipu6{&DSYR zFz8aIPUA^#b3Gas@XE2U?gTQ0Zl!_o=!v>0y6wre-@fu!0n_~vok~SkrdTmf-h3MZ zg#KJ(WM@DPc_)vs;00GzAhyp*EPAt*mD(mqc`HBiPW4Qezvg0&P9qdZ%F1;Vv@qZ# z{aH>}D9K1$(}T?M@$D6YNy|mxXPwKTX8s`%lkb-2#^UOhd;BCZW^R&ZsN4I|w`Wqt% zl6us?^`=@U2(_|pzATLu4Tj^7j;*^M7k`u7$Yq zbHIp9QeTv^xgSUwK@kH120kX>(_}aLOT4(ybvvolL6LXAdcufHTy^@22vS!1;aPiy z$kNGys7$a5{^}9kp;Sfoj|(eeNt?Y}OtNAY3!&~B>-Sv`XzugpOD8s#-JJTNvNbGG za;hu!K!>jkhcjx2aB(VFa{$)A)}ZaVJvt}@Yc-H?0no0w$+#0q zNWqU^qn0wfi^_U}7p_{4^yjshjGnh(#J05EM6Ehh(QLOgYqo9a4AUX4g;e?9#%ed- zA%yaJoN-6nqm0GHei#DW)=a!v^$MK~w@3)&dlBnq3Z{=iP*lO` zBE-WT*m`#H9s5lhyW6;*AE^MDhr<)OTh67b)X5UIRFa+f`4CqmXJfLOaO%h- z{87`T5!^Zf)*n^}h=Ft$nvpLzv;}$G+n_~iQwvqi0#o}NTO@>etlhY$cFS}i$?@%O zXU1f`#gTK#_M|SuExptG3FiQ z(qMn8ldYna$2DKo*Q7HmIQ-O{yZ)o%JI$#6jks5ta&pS^Z?XZ>f>bH*mpe=0S<Qk- zm+0_`Ao!!DZd0hhPOATLMDpg_&R*{1-I*;Nz$g|wFa-@8eeX~gPU}GaxYOPhB(6NC zOFA`7{ob*r%lWh*X4Q7Y+h#;`jw42|cFUDp>$k%Z%A$8t%HibA{}T9Y~yCuM)C;s&;;- z_$z)p>f?$7*R7`MP)D|)MI`Uxz&6G3Y|+*FIaz2>N#d3kQmby+u59Z-QV+JtD2l*w z1Thbx?s&b94R{ zE_1!CrU;qb!#V-Cs&EwGR;V~U2!AK|m%f6ww0$6U?}PqI6Sf5xF4I*dI_VAWTkE^O zd{$P-l_fMn(tc#dbU+FIO8Y_9U;n;I2l2#W4~Xf){`MrX24}6lJmyYVPmWA|yu1H- zz;SsEyry2?rKcN_rB%(mnYaWzaPKYl5+&quqiyU&Y_f!?kuBQ8QR_%lunL#w>`kgW zIt%$KtoKdDlA2TI215|$hRWhiCEhppa0r7U*1K7wuX?bv_6FG ztsirlIsXM5uQLVL#W~1@E-bwFzb296eAHN}&AHw7@$vg?3Ju~Y3H?p#@e$tIxhwG_ zvP3NVNhTD@{n<7F2C2uH?wj^LFF3%^l;sXhr0G>9%!znv>gTgVBE{i8My|sqkhQYd z7mc_)CURJwJn%4*Mdamx9$?D%rKlBWEaE9u)0b~MTp>hIeA@X6IY!PkCa*n0RrN;H2$zLA{?nEBe=-C@V}K{7!L9 zE}%y!FI@lldbay-*=%WKaNdq4@`Y2FzsVj93io-^MuS%Z{2>g2d%k~WM%fhJO1q;f zH}0ZF(Ac8(lwfjf&9v!Z%87jK6>e0d+1LU#={s;aN}#5jOJuepzf%YC{~L4hMu{TX zex2k~+P~Nj3%<;lv6t^0(y_u-kx=ZYk^SW#{}n}L_{3jFPAHd;VaGG+fpvt*#F5*S zS=g^0m{O$@7WrM!QEoJEx_*Cm^K%c zN)_6t&oc|3iHEToZ%X?uhjC3GnDhJ#=dUm^a5^S$l*t4QnvJvcquj*f6!fd%qPT)N ze}a)#Kc!{@?|`Hgmyw}TjuHk7^sk{Arp+v$OmmLkt+d%{tq2{WGjzlrml^o}pe9r@ zEt6*eZ)PuOoxYt7C2}_cu2&JTQl%_a!w^62C};%LcRCLehf?!)cmw}R_v)nx@))`4 z5Hcg^Pt8tDEohK;bRL}f)o2#Xt;i3pK{ZKrbBn-|>|^hwJ`5;t4s3{b6&i%P$9I76?LwaTo_kKrEm17~s}`0XDv=|>Ht^m5 zUQuV5HT=94@5X4YrP82`(?qH%rJ+idH@Z;tQ88@rzw%?&w`3peLaGKw>f3kg?%KTD%qK1w17hElE{SppoR zC~9<|z(1TXBI4BZgTJ#nVn6l7XuLE71~u!gFR%3Z{2k}HXG*cTlr|om%6Dg2>pGAW zKBWF5Kvb~+TM|62umLHN=|LoW!s8T=KnGT-^-F(Uzo9_-U8huiKi@bn)VVS3asg^V zx2%>)&cS8yhd95YtDxN6!4M$>j)B{u?RJAyR+S3c-V)rh+|#(<-En(~H|6_}jzaWf!d75y_n zZ?7-?D1;D@n|s3jyP7qB5>303aPz8`D@b0|7&-+Wok-MY4Am}GlpXP78*XBITrBMUDf z2JWnFC8~>;>s2>;Gg8%Ij&`G;v>fT20%*W*<%#09M-S0)X|)fvJuPE>)8F;0HC_r! zKU@1hu8pVVwLuz=q3P5ljFO)Zpv@aK@b!o^F-8ON}xdz zc-|C2i}z|tTRRs)&4JIpjD_OXg*;F354E*RV}9Z5aK{p!%@s3`pO02Usiw)_&?NLGrQ)yY4=kW)?c?4 z9m0m`4U$CpVerAvX22CCiS*EjWH zr?y0HvE!`DnA-fu8y0rN8!!v=o#=)M)fDNRd^vSzYZylQP2+y8I@k;JYT%|4$+;U7 zyf$b``kTjl4>WUrMPF23r}6S#WG$dAg}~q(Se*IYmj<(jW1)!NR1IdjrlIybGLtmU zW|p+ldHk|Cnf#X+u0rR0o(|lmy>EBv(inSx-GRsVUe&v~PiY&Nfn}SHF2Z4a57IaX zq;Gt4S4GvCgix&T?JbdcmZU`mrT@7{e3EECm0P@~6c+AebuoE+mYC&Opx2C`E#Hi# zS&f&wgme^lh-C6-ne1^p7!jGPtaxSXr(&2mOI>gtJF>c6g+3A*GlW5Su4d#tX>^^UB~g?~hvtOl zpOcmWwltoxmYuz=$dvLCb^rfOGsjajCw*+gmH zJ-m|ubBqF=YZ)0U6ml{oYS^h=RC^g}LM96zL@a|+bhN1xFltwlIvX?8Lsn806MkJ_ zUV6D(X9Gs!=EH-->+bc@KCa3R%7-+L6}=g%gbYPab_Zml!3zOzdGv-VdaG&;#v>=S zItW_usnaWU+nCt6ivIcRcEdfMh%~iioymS9=OSm9z0+FwJh5u}TJR?2*QK$`%>1@G zaa9f(r?aLp7*|g7k4KRu7%q83v6!CJ!*Qk0Tl=8rZ0mShBo>t$6as)%n?(nA0CBTCk7D7S@F4p9+ZRuY2dCoH0pC4 zL@_XMTl@6ezNdehFk$~aSb}8*m^CbpUMT-vse`$|s0w~iQu_7rqxq)iuZsKFAI z6t-!1Jsv{%r`PFHM#6+B)R@wXDMzP}*KF%P*cssXri!5;m4uUjGyc)govV1Zj_*^^ zC%y`BOy=dKRH>^|ejBE)5XtmIi;5#R(udQrMk_*WYHb;~mQya{{)YR8RqgQ0$UyF2 zs$_#3U+$}lr%egtGaaGojca#biZ=2!%^O)bk&@_fYb>5xJ98ZOv$G}3l`>*VXI-ES ze+*<#ILS~ERJ_sE`(LhOxE{W#>sNX-sWOGf<{*pjB0^YX5xD!Pt$9;o9xolej6yF)QA&QCF{Iiexp6Qm;awQeliOm}R z%kp0l4-%YvxtVhyEnw0lhR@FM%T!AVs~dt|ph<*|3>e8C-)*-5A#Rz=*DOkl*IkS3 z1&vxiwCw%8^%g7oRDH=&9jo(RwPGE5-G z+@C*%RvuN9D@9M3%Y~OJ^u`U;8(dxTo>2qC zWCLMY-7vAAhG2`n?){9SwXDeGBB^(q+m5PNe1U~tx=y(J$|Q@KH@MbwT~GpZ=x_T)A-DQ44C1+Y@RHsgh`QS(dofU zbfKPDdqSbYIn!bl|10Oo!y?C_V2ZQg*^yyby@nJ8?D@cF+Li9Lhx6hQxWi3CPOqfe zK|X4HZSYa|A;>nxiOivelHR4~9oQgs95{!Ey&lBOfYfKvy$c1?@+UusjbYW#!ITHl zIHd;TUm^8*RS64NUw$h!qzQOjA|Ggdja-CenoSvS3SB)c zCz%aZ(1L5-c^`U2yVtk>`n%5}xMrjU)yKz#Jt36h4gFEaMI#Tt6kd1qVBI;_rR;#? zRic!(tS0rS5iy?h4j0gaxTFi^BjJi{*vHNL6PD~@piEd-C{`6>5BwEdl=gOZxJfh^ zj&#VLm;9qb=Oc<1GcfO;y}W0NwdAW>!s4`m@0p>7DvdE8WZTR6ibiAI&`~~=8RI7C&T@JIlvOF`K(PIatf2H|X?#lPp zqm%byd%wTN#6lO)7KLS$(3o=CaiUNB-A}3khN3Ck`aBd;S(z}us4qp$+pMypWLxhM z%=lhlu=%3%u&9i7#g^X1XbJp6?-A`+{}Kh|-XBZt|Bi#?Kd~c&H_mCr4#<}05oLvk zm{a0lF3Zs^bVA5p;6LH-9vOXoPqqr+J9!MEZr8iSmdez(yIc;*gAQt+RpD!OkM7(= zU(~S04UA4UE%ne39l*Nt-bo-)H!3?~J}TYs;-flAvne*JK5+lR*r$SrmUcw7B)#G= zqr$Mpn6}`w*!5Q50M~EfZyCYc4qBnEj~1zv^o@~r8(f@oYH3O>>zB@Kp9E^M`>9#rO?M+Z;<;rAj0?blc!x_#pE1 zBP_x8qfpjMcZUnxw3nNm$l916Q+y0sfYrvzp`fhubgJpKzE6xZ1vrK4m}0iRmtcgUy?f37yarw`xsF>A1??5#ey37>MHrv-Ulu zvUF5o^kg=)($RW}(iP0o$AXAyGoA9^Asj0b{bsz5i@E-}Ctx`>IdGslD*ZzF63zJj z$=76eck;OH7L|}Pol;d0^|&l64I|HmpI0b+J&3d9NGsNg$rIsr^+hd=(Y8e-C>HQKp6!$rg_61U2CvAQzQK(LM1|X#SSg zDW*4xkpfkPx}_nkZF&_ZfmelPOpVj0A9z1COs?Xp6x%DPvFC_#fiu%qK3C&qqJsvM zHnJDG0g-uf`#*JnD@i^i9v%s?V%!wgC_3OtnhyBm*XT2{@zor;){GX7zCOqwlN;&R z7ie^2pM>^~og6l_=@{&sLrAx=Vxy9_lFgj~FoTHx7kdq@R$VpAhKc$v`uMp)2`*l$ z9adi%X57g)!_YHKbXHdb`XQTy81B~&rin)M@U7fL@Kr>B%DZi^YJSrV+74X)^%w2m zhX@_pOGvoHhZZg<~!3YUW-smn0;xh%K=q14ln!3n8sGt3{AGuQcM?mMht3048cbA?LIDi5n>kQWfA1Lum~Aq49g|e4G$pn#{5uCBeeR>1Gioo9?02VZyXxpMWUOuJj1YQo_T=~G>zwElP4BNwJuBSUV@6Qk7E~+nU89~|+Z!~R%`%B<^ zKy2J=bTJkov%B_}#YX5%fPn2FoDW0sL_RUf-`v_u=XAupj}sS#hiJwGkrdL``2k^^ z0h{s!kT@Qrp|u`x8^-{>i$EfM2wmdO+oq+q;2_BF_^ zg5b%|Hm}HmH*9TC`PK3gt$o8LKNS&z`~o-(qhVHDT6F2{Nywk)Uy!r(2in&3ur7a8 znXl`<nTYu^46Ft@-r2=u4oB}Ro(9`(J_wkP+TPuXr`?j!(#@s-Rh*#cVw4;V+zOo#h|}q6 zS^N<0G@-gttZEm)#+y%`!F#IT(H#hoWO|Ym^y<<+=#l?tAdvgE8pn-9blM|8zN1h@ zqQj_y*+=27TdnXsfiRpxRvkYBWZJ2CMBo#me}#a&CP^TgX^sYeL~Nt-Z-E|O08iP< z#GDDQ-#^QP?E*7YHKMGqU{ffq#_?$^o_RG2>vN-OcW9wwjJ12ka1A`k(*5!?F@6_~ zHmfn)#$Kg}g^gHP4Y!^~9|yJpg=V={VmHR#?U;-B%sD68@VR_fP>MD}>{DYr9i-6W z{Up^EGaOPCFA%sBF+*EbTU19u%WK#FIONKjY;fW*adNE(B~<1~?dJ8cYMWCerFn-t ze8ZvD+^?z_Yl`|yj9|?j&v6}cR4=3gPsh3rP76fR;jU6-q~sLcL4sZmQ_y$l$RUGt zUoMT4!u8jVkAPh3fYwxlC6eTV+Pk-F20&JljTs)qm@r#BS#Iy_ z-|Sw&8xw4zxDM-bcU>6iGI0}OFUaQVJHo3g8Sqb)6PD1oozt(Ee2t;84Q|Er|B&ty zM0LgwRkF+6wzIcH5GA}|$w=v9x!vvE3@@^V_`;#rzX2?(vXoT*p7yGhb>X<)8vH)| z`=$Ef**+QtQDOgJ5A{7m3rRY{jP*{O51)?;)w$LpByM!qJ6X%gZgB=yg)&``c+cX_ z5l!n8l;Iwqx3bNa1^RLWZ}UR#{;ijR_=vV-z%BrQ3G{s{^9abdsUE`DP^2|GOWu)3 zs`Od39Qtj+4tb;-p9FExiXVu+R#I<};+>pcXMi3uwx%q-BMtJ9GU>CDVm$O-uK zDvAu`(R{;0SZM0#6YiqrTuG%Q+~LQO6um6R)7(kD8=5E_zs&LLcWAnk`ME3TDmM7i&9_J!J{l00i!|$ zAM~JvIz$a+&OyBh5>^C>fC&gV*#zg{h{BVf25T3g%j>@MO_0rs>8@NBwhOj~HXmX3 zvt&L&IsD4e09)W-8)Mr035>9kEhMHfZm?khr#nko*Y8C1(qBGgB_&0@1o{NY!9%Q7 z)tGJsw~g}39MU$+YOdhmcH8TC4!5=Y_`hYl`Qy+i%rg0lOwLVS_KQ)#89hX-Y!&CR zIUCcEy9E&3h$uh><8qsxrP=vP#_+~r5xbu7#(rkt_Du`q?@ch-v35`pwN8JM_pT?s zl}FOI@efm#Gwk{rxDgF;@sJjc-0$n-9I}u}=b!8_k?qcGEv>zv;(M$Zt}Z=_0GpbP z-8anB5y1@Z{a(JG%C)hxFge^aGL^^XECt;W6ouOAcEN036P=VZKB{Gk4z#iot)i%WGi4@-s3!>y|NhBT*j zwsm$EGY9X%H1vaj6Gve1b@9Lm;5ronc)xF(t~!*KutcTdfOfR=vF}b|xFF?4R~F5B z{QJ#|4V{z}*Se-U>m^^|pqtpgPqRW|5SyvcyhN}>Q|`c&Z|Pf5o#%=9yS+P~ka>ajQtEl1Yr!$AKd(q9ZWnN#UOd>S}V+ z{Q~~I#sU(-f_QaN(%~~vUN%=LYM=>gS)f=~*_JqJ$red`tK^8UAW4YVebxPQp5^J? ztK#VbP&Z6|&;XbXTS>=kah+KqW&^E}Op?jV$wgIvrJJHHCow#)a?+NU@$1`qHOrGf z0rnZ1xswDN#a`RYffE7h;r(U0Uo2H~ztBQ4yiey7Adi7kcD$cjhD!;2fqK@(jP!y? zSAn#UIX}k$;eyz3O;vnlMd+$+);%@0EZq2PP`HFzkF!)kx4k0K2YWV?FCf6YC8IiX z&IGd&&1C@j3qHO)tSD5F6}FJ^!u`pdlk9L)DU=tFolU zb^pQ#>ZNh|{y#j+JH79T&QAQ9oBtAyi?vqV)3o3kodws^ThaD!fT)6>$WT78i<_Ju z)rZ8HS2rr?U%r0^rr!l|caB2JXpvM*1TO@G^G{;_g42>svvEWzpJrI{_%zdQdIIEKo*j4iq-k!y^)v}U<0NFB zto-i4@pI~8BcW7uS`YW!nfl`FHH_!9%2!266jCSEX0Ef`szYn>U|{MkqN(aJeF{GE zSWWf-+az)TeKlzSYu^;9$e1b7N6kjFb^mvgN&HNSf8JNJg72|x*i}D5R;Q8KsZfJt z5jnsnNE5;4Kdoggxiyj*ffPe)~Ay~JqZm2@^4DXtcXILBC zh>JYF9*m!Xn%Gv#FJAhSFTmy@|V43=fS;xf@?vqL_KYAk)T!{On(+lQaIEU>A zlk~wor%f{qOW5Vo+n%(ye9K4KyUC4(!Y`}Y7~uRqeH}BuurjbTmH#KeDHkSFODj3g zXaLtX?ZHuP5?krX#L3?io1;$_FLHDo?u_)MG~J8M@M@ru4Y@PwLJ1-S;I-M4r zc$oEidMo`sYHoX2MuPLpzVu^$?9e)(+1*3sLS@(40p>B2F1=UHmj><3iE`a3uuV-y z;l?SS8bLZ#;uKREi;a@EmF!GsyRNxW?7Y)O!{O}4tPbNWCGmpwLqt}=sa;WJu@yoU ztK{S}!{ZA4v8S(h6h||qW$2G-a9nD5G-khJ@MO0d2tb#pTrNJ!`?M8K?q3bvpYnj3 zpH;+M|B$H-49FyEBn;6p?-r-g;Xw55?JN;(Ct?Gtrn=q84R>-^Ah+D=xrWTOq_B*& zniyW*^XDX!x5Yo0Wj)pg8+?3G(-@{yQD19!=DJclpoBK61A7-XF#$u{Ds>lvz{+pG zoKOz6ern@wJ5d<=F?BMOX%o4apC^kj_V?y837M~ zSE}u2NNX!Ef%iA6zSVbvV!ehQpv)Br*zDiIAp13qY_6x|CNN~pn|7Rdo1Z2gs@mXq z&Cdd)>NRVvkOCq0c-?Cgzk?1zs$svQRbifi^_y240M@pE8>f9?$xkBQQWz>^@qEvC zilmke_=K^R#*NeqPn-zc(orj3xy6!<|h-vTV0Mf z<;y!VS(A)XC;~fB{KscyKG&nPGqLXQy2nTbg!r{5=(kWA2J%P{if-zyom^&IV0hF> znZxt|;WPhFjk*t!aS!shd;6f8qG>fd%u7vkam__QL z?~~~sdPF#+>yCw`f}MlxC$nY%<#N`XNYs^1O90(9=hNDFxPNr-Z$-A#lOoXL7WzqG4m*Rp0RI^872!HAVS{yFTJI5Mg-8Z; z5QP$T$p9ccFK);;&U9W7CaQp>JBL^8ag*po69s0Z<}9k0(p#mDhpwU&k5 z9uf#YZHx(v=FBF}197}kNnZ2>S8V(Q2vQ`bit^AObtMg<+v5u_+|*v_kb2~)sS(5Y zx}Q0k#Jvc0iYB@LXNn23)$2@CjPl7R^S|OK`6gUC8Y2kPa@w{wD)8EZb zWeaa99utGSDmu8{PZHe)1fh{hYu7t8O!>^8`IzhXM5E_|KiAJrHIdT~1Y`ohP30K zmlxWcUJ2?XS!?nGaqRML`tFec=$6*!z=uvEoi%DUYiJ$xrdi-KR;V3Wh$>xKs=%-Q zzz3DC2#3`E+-ds$JNoFfke5{CIE8g7y3?`$_73@AYVC)zd;%((I4G6>!Lch7!mp0(hgB`Gk$s6`$#VTqOFn!9D;w18mWKKWsxp)A*yfJ9^= zkKH4Q7%pG$ zh^KLGg3Em5CAM#h29xSFRFnT8DCk(aQ-+*f2MqFyBz&>(Q{a0U2$S8KDuG(>bIsW1 zZGot(zDNwBaXLt}Po0PIUQnnKKcR_ms-4!?szwp9uPXiNQQB)oU0AsX&)@So z^g0HDyFuI59cgH@4J#*E56&rueg*z}_w0>NNXA0Rzh7MUf@K>HU z5e}`7P4SBzTwUhYzj^ABD0%n#b0$ZO4$B{IEhgL~@-KVaKYj-CLccj33QD0Xz@Bfc ztz-W&aX{|}7zXqF7)W|tiUgvOWcl{X!*b z=3LLTq1?RbNEF<18?g5aU0jUoTM|Z; zWIfAd&eAZp4t__S=#PQ*yF|F4o6eU~%AHDVpm>H!jIRlK9&F|3`X%Y}Zipw@@^aQ6 zB7P2pvlw?M4VwZ=Vyv)R`e&sh_`Jks(P6sVQ-iwAy%ricZsZap(`tH18p*F0g zqK)K22_R;4(b~IKhWQkVcQ7M@Rn^upb+Z6_@X6Gz`C0>v*!COD!6i89ndJTTEv0cN zOp8>fids*j=T+VfT|C&H*2P|!-;L!sb#z<$G{d`(@)A824}3ML6XcCONdA7e0#sc7 zo~$Hb`^^CT^7 ziQh{gfaNLEf|@70!cqv0zgMMe$00tTe+Rp3a@eF*OZr~Pd3iuPn|Z;qw+0U9O^(U4!<&rBT=vi%Kj;C!(klr2pNz&N7S<$&4wu3N@5M#RHkh$mVP@V2Xl9*o2 z^}-|U%3o$jb90a5yMp4D70qt!^&~vI)k?lRY}Wg_Nw%gQE<8is3Wz>vTJ6lgX9Ryj z`H14jGEy;;>t{(eNcekmdd!~gAx4}o>b~?8I}eVS&2!@wclyBJqmuw%xdzNjMLswG zIn2~L3}#+*fK8W51Ab)eA(E?|8B;P7gaaYpuzL>B8RBu%;r{T|z!)WT5aoCrJ{q5X zK$m~p1(lnP;ERQw;#?*J;lF!e-L^T-$)_~XcD9g;XtCE&n!%j*jn+jb-16_{0gUU~ z0Z6b-1urehL2-Z4A|n!%ixR4S4eg3?r0jt3=f=wx)52zQrryB&VL;XsS(^F2xYsj&7JCb z_ehVRkv{e318)3aJ<(YL$tj9H^BZ0dlKec2Sv(=csDbdsBdrKW&ozK|=)rI)5HR)X2FBViy>Ctf+R0)B?MPB?%5R?V3O3tcz$rBgYv`^;l zyX=o0C_&l!T;eu&sQALi5V)GOeWKh}pT6tK2+1*+>`sSSI7;dr-{c{f6sogX+VO_F z=ZK-mn8GBy72#8zT98W61pAP`1>OD8*ioivaWJ{@g1IQxgqXIR`X_xjG}_IxeU;5KA*RGd^g|76RVo)EEPm~YxzTC1>o(<%}`>8j^|*L1M(gmmR}3OoB;Gb z_^Q1u1%P+%pwOJd9TDS>{Zr(7dA^b%yM#Vdl+WS%!h@{0`}3r42g7q$Rns{$@r}1X zacdR_ILow>&~-=kzI}6h^%Dqk*tmSp&Te2klRvH- zgN4c)+8KW(yf&8P9+ux1lkcDoz|b`%RoQCa^$k6Ay7)yjNbyk}IQKK`A9LFBf8;k9 z!i=8wW_ZSo;FwP3h^%|oeY|A>=;*)Rys-6W=7Ve;u%Gf{Sw?O=(-A6Hy05xOeCI#n zwkYRTPdz(+ zW-?it^@J{dC+3kd3y*Nb4m`aLiJz(5c8Mq65rV6BUdwNH7egZZ50eo>cFe)TXBtpj7CbHy?)P*fBKK zr$s5Vo$`7y%I-pQ&O&`T;aJs($9E%FAz5QOe0d4>l6+ka8LRw|H}S9pNegy9k1(c< zcO?e3z&{igJX<<40@r`7lZT)XNped@7opCwE@$}q^Se*SAewvWu2Cw}&^Y+UYZv>w zmL>>~A>qs~lU%d#zZGX!{KUaGC8Oh2s>Fll}-)2uNHa%RThhd6}@c$#~jR=!G|{24L1y&VFtctCiJ zRK+t*k&HL4oC$hn1u1I4MDzV!4JePu_KRiGZpy<%A+yK{PsbSN3F~BF<=9z03L}u} zYR?{yFFXOG9UfB;h%UhKpZC9=lv|Bnkq7>4b_SG$VX{xOO2yu1%bEN2ZwQ-i_idCk z$%?=}n6!AD42?u1lfE4~%v1c`qYnocH1tv9xn~1-n9zQ}Qg^3p^3SDKd}=;qo^;HGH%VO^{#;f4Kv#!%1Z1(KW& zMMnAdF_o`snlMl^fAp9xs0WlKT_}yk+dMcVf zp4;R1W+1sXzy=PS8DoF$iU;><@nRq_6G^v2fai2>68nrOuuDINU9!_|Dnj@?Of7X=~ z2Mn$|5c0f6j(fc$07LTXWTieNr|mUuNl+QD8 zlH4`vzI<%x;JBCQ6>N@H)d$QZl`^>o@lsN*;Th715PpQ1@)<^EH-*ICugl8y6*tA8-H9z|6>x2$mvh92+arnJGdmu!l~>;8`RO>gS4_Eqsben|^yN0j zbIN53R*>YaVC4ADK0HCwt?91vmqC9w2#QMDLCJYE=IJ1Kku?iWuTK{Rzv6)uz6jjY zXC2>ipPG-6CvImIGI)p_>O-#-IWmYtYfTiB;XuVDpWjQqIN?y;6mrTCCvloKo01a) zn9Ziw7D~f6AZ-e3Xr%gn99uF-%py7`>`O&}QC+T7ZOam5LUupk%@Pp)=O-yuQ1Fa~ z!4S?PLX5hoeGpASB9Au|^wB3Cc5W`Jg84TJtcZ2^abC;si~CI3Fk9m+yrO7l#3mea zicgSnpPx*O1^pdCA7c)7t8|hlGbcm@mqe@ze(X{9D&SdxS56VO!?SjxMwOuX*QXy5 zhn))Iw?{>n{P{%EvsTIAv&i2s>$g=XY4g`egkM;gP1X^ z$$_5JqI&LeY80L*bh&&4DAqzZPljx4yX9j%b}9J!r(zhGcwkLqBjWY06Rn{$a!}DY zs;0@VITy&ed@&4VVNZ&f&>UstHu3WGOuuC-tqJj=Qv9^sg!6%c+e8RZg(>7y7N4x! zwggqLQ;7#SDY?LW&sUQ1#>Vtw8Y}LBz1fu{tqVaTU;fvLrUIP%7u1C_@(`2~CkSGA z$57VNXBV$0_`yRLN>ME^)(;I@3N>!~&*4+G!uGqIqHofnrHK_d=9v($aAr05@?KKDzDy4ZTj;B`+w4u_#!l+#@e1GXU3;AIoW zO7hH!=cL@ilD$l=E@}aJe}&Iazu{CmCsei58keV)yh)kcN*Ie_81i z=_6B>IYtn-RDr{i1_VFa0#l9(IO#T3u|VBlb-OkbZ6?PXh}*TEt!3NrM%^&UiV{%v z)L~`h^i$zB{LIB}jrp)RNFEIa@~Y^D&=&ysHA>jS6zT9%7!*HrmkmaYyOLzB0qo?J z{(!kmBO$G^%gyAb0${sSGgBaP+={dtlhUJWa?hFKg*C*#3E4mNG zS+0+(B4Kt<(#jigBv;`o)LtZafV^(#04_2LN?`oz350_9&b4ktFqA%i7<$?O-w^`G zTA}K8BSz=2zmcLpm|rJLqbbmI)e|smPo_y0>Nd2T@!wF*_#NSL-1pEP|G+vUlnYl9Q+ax$B44s+_RMC~*@duPU$zcJ05rAC?w8Ul%I zY6oIxj2PYHnq>wSwLTt=t;lL zx2+6mE&~>M`SzAiL5@>ELq(GWPN+Ys&_A~13@|H2e+HWN{s!gX&uiOo?fiNEG zd&FTku-N_XudDE#P`#H*nYdBh7RM}2Zu$2YZ-JmLLFU4bO=gpyO?a{eC#!JA%S*@@ zAN2opH2$a=U0$?N%V$ZbL(gV$IOS{KvSw1`urFIs|5-eoGFaC=mm+1QRw})Pkk$qN zoHvWimG=)fHL<5u4;L%`f(rZYe-J5=Yd6w`B)6VtNmr3tXzNiLVMjMfKfude|Hc&2 z8S64m3mdF=1&mnPvi4L4wlU;&0E!0-kz-n2mP!dJA>k6Wrf(osBnlOaHi9g4dOZmN zZr6P_kOK;)dd6rmc0QdvA*lhFLTd}*X;KuYrnulT|U zxfEVmWqL{+0JyCWa8G@`HA5CnwrHodz6SmoKvNcQ)<(~6)KZIPGC%2Fy&xfYiCA@MA7|>ke z#>1Nd!Cx;5%^wbRdZy~al{K@sGa&tVzr{^7A*enP7;f7TYSZWNP>_YsR%1?J_isY{ z!4YXFJ(*HGbvzt~-59O)F}LU302l(%PSL!MOq3~+O#&?}%)xRcy280W!(H_15PT)i zTmxJ#0R?D6AaxV3rvtyz_5rS%Bu{^Iq{cbQ8oWvLXP$Gg^ctPI!3E=V$%;3)HNkVe zY`M8{YEv$3KCr)9WB$|jMo~9I+Q&=PKiEX#f3<0 zoMSA!&rqz}MDYa^Vm!HG0~j_pk)ZJ6ChOv8FT&x|skPeRjRCyRr}q`lYqY4{@JcKM zl&hW?@Y_CMJDly7)~H-k5iPX79lAE^4}ncNG$fMqvL`B$2|z}m6wf$b*zG`2pL4k2JUlmnGIaNaIR^hW4kC(H_*t2}DWhH7KK=KMM7ujdBv9UmhSkus zFwP$+e?KWD?+Sf^3TKN4IIVu5M+dVl(6^B~_m;(f;XxFEMpk*W%^}8$HwMPCt#)Gy zfJ3aDi@!Kk=rQ{7D(!NUdfQi zs6P}7VYJ!M`tgr#)Q&xqRKfSLPHyt3adkAOjq?ect_t1!DM_H?eSYKAWg@{35TEQg zZa&QZ*Ts8pgB=2AF%_>|{s$!V6^GCI%|Brl&xQ+dPqx#P4Y4EoQAycUe?Cv&VT!Gq z2z4{4tnXmB2k1jL27B*@h)!*qWE&---4yl8>z-cSX*uWS=-S-7FyD!}Z+R*D26IWH zafhsP00Sphy)lDX7qzD+`QSB&a9WPr( zCtbO0ihZG|3yb3LBuS0nuFRaGtO=FylUOM56UJbD^JO#D5vSY~fw5e2UaMsqdIVJkCOk6|!Id z=guYcP8$t&p?uF)%{3n=sy=ip10qB|w#CYPu7GAoF91pN0S+n+^iHWa>O;mL&@u{V z2L2L`KDTv=oW3r_qRqSRhbznk$1q)IYpjo{e4N7?@({k&ur~{w0n^8*go$oe96bds z@klHVJllOZxE|o%q*W?>N!1D{1=(gXIQsd)51}!C}#dB%#CeJ}j zym*T71QUI}F2ZTwDxfqD5Yz{KB7M1#ocKk5WiUBi=7o=XDKO3vh}G2R=o+YO-hS;m zsmJK=zbh!tPjJs#dOZjPy~1;gNLNg$DGFyIF&Lc>wOfqfQ~z{AKjiC^bp!rW%xD->>vd>?mf(N@2uuwKp$CIreOQPl z4C*InWamZIjJllxiqwE|L&(R*_Fk0hP7Cf#GF{jNc=;);(zV~1Hw?dk*qJ^Y&T$@k zR6BQwAW2G*syzMTZ1zFH<%ZKBfK6$v_QK1r3{rH0-@2y~CP$=y!%FM|ONO4|$=f3sO@{9TJ~Z>2hmH^!Tp&27yT4ZK_mW#n5-Li5 zwK@?_S$aGPfe|n41YYX1?KmO{#iN>4f?-`!k@zkac@2GZZmaVJO{K8$M&% z$HYT2C;q|1*J_FTM0g+8z1osK)css;OXh51oHs$_@1a;I(R-*f{l<%v?8`8_iN`Kt zt5FcG;Kt@9LTZb#cPZ(2^HSw=l7R6w)?pCqFJVmAVAeIDZ8~mK5|a1Mcm>3;KYz(1 zm*?2%j1UZ)(ebj9Sjt^a5B8hNLFiEE#k-r2u4sjui=5&D_R*qVI79(SunK(_fCz+e zl~{xA6%jr)w~iO37X9wyT_Wi%n7mF#OvFl)kj)SV14Gbj|+->RT#QGHsa{}YTzKV%4#qU|ETJ941*q^atO#U)Mrv0n4}i>} z18G-CXy{5qoz#JJS`u-5DxTVh_gi4dl($)RP>IrP&t#g253CJ2rAp_}vy}EW2*wC{ z@QqT{0)6vM_#5W;6IjfsF7 zn(X-ny4j{)IBEF)`lC3w))6qCM<`olLh(e|7e7kA`5w>jV_`9y$4Js`nmqI>d}Vy} zYPTAW<`cKWg*gwM@Xs+iRgDz(Pd!SlLT^t991Zu#%I>PBhz-K{PNDGxcTIPfc{cRA ziCH-hueC3Td~*ZqVY-7#Ww(C4$6oR=;FJy_Ljx8(Ny_B@0k_552fASVZt8}(B7YMV z)3Vk?_+SAtcte??WQ40G`Q4Ix(ya`U^SJnj6rOxR9w=>BhW8m04ISk20xQZ?j0 zdwqTB6rU!wlbjJF*BLSnPUqIOZr3DxorSSB*0(noufvChX_8}Jj;T@+U`Zh^(wIoN6F~F>n!23)+p$Wk?~mQ?cv+Djxg8 zHdNqc)<%}?WRj=mFH7%ohk@}fa@TuqiA73GA${%u>vOFzH0J*Bmo|yMWqzfW=&-M= zDk)x1jx%}ZcGM2=NfM@lF|hO4Hur-rAjrQMv|c>R7T);c2Px{KaJ<{A;hN#=zak4z zI6@seQQ4lPgiWtccgGmhQ<3v$*>o;<_w(K2YP@dpr!mnjaTpszZ^sv|DZrL6{Iy2c z!s_&{e`9$6j3kh`@RmfE8o?Kd*m2YmyI|H(#?a+D6??Rb(C8uCkB&Lo*)y{`J4KY=z+dC<|dt((uDVOELtf~ z)x}HRB-#q))Eg4IQ+@XpENDQ9j$*MYQq$tu9gk&JU|kr`e%1a^DZpw^WhJrk2|~?< zV<{A#yy}$b5CbmWcM%^p>##$unn`BxyB0$4ng1#k-)wPSJVlt;qLh~E#;c2;n7@Ko ziG}m-A`?aG7&6=^+I<5T$Bh?qRNBp?@xCFoEIF9I_`(;A#A9V+;#r{Zv)Zso)e?%z zLGafN4GwZByFuh-sh|KsEm|NtmXt=G@Jj_vk%+1ti()q_+w4o4RW$VBha?_mf1o9! z@ek$|{r**EX^-pPZS8_PBAo#lGNCN?6~L|^6e;3FN&hoxbC>(SLqbmn%TzdUk%B3s zgpIDFKh(107V@*qjekM-Oi6vvYSS>*l9^5(g84UeQK=GE4(q{IRdON_If+BfX7*Lwfe`IE{VcRo7 zYP77&$)!cN+2>ms^9azZw$++aBw5PFwx9z!&H-d;tTiTk6Sh`Cpgn}(6G?eOtK|EJ zh?8qfC?T#RA>|&xpNCBhZmhG+TosVX;+8B>meGK+Xo)cawHVIG))}(#9ZnGdylruh z@E?bDx$ZuB13#1_*Ot=Hp>{U{T0yClB1jE=XoV6IX2S@wcqLQB^J#v7z9F8>?8O3- z-V<;Zhjs(wu27-|MWG65w~#7zbNCuS@bv4!8lA*(%Z}&UkG<$JbH$kiAg;K~gNmR? zbfIiH=R^u-St7#>7CV2ECEA267eR!01)c5K>KxItR7E=Fwis zHUn@HFy?{b@V??2tdhyZMEkRk{0-W`BQFujUEe2c4zOzG%PWPBk;@I+eoX8IVnOhr_Mue*vM6XSK+d z&(3y?d|yKSatjMxR}5p`#UX4W!pPv{Yd1L-gIcX5wE1-fjI}+iD$X7_)rfVIZQtbM z{6o}ghU=aax8j5H7xO*mnJGlcyYAe()~DaefAck|&Kdbs&_WNDUr!a#qX%V7td-mq z-=!z0x4-LGU}vCF!E$^yg9HUyJw=20N0aBDjE~mFSA>OGM-zY=u~pyJd$8ExfgjCFcFK9 z*AEQ^MOO|;C9uI;|9x144#8tM&wmR(!SG=@zo|{BWdt&+5Bd3+Z#%PKC}iz#VsD=! z|9BXtac{i(LI@$nk?!m&=v3z5dQ$)Q3mXejO`drPH>k5#OyfTb+xea;tm|)0iA)i| za~jI|25+69`3Cwp1z|F+RniukGc)SRABn>W#4NnG*JcXnl#YPPC{vEG<8aT3eO7Eq zKs#qU31u;FkMuEqSzJDiH3)-Tx~!y?l;dW*J*@a1Ay}669Lf-}xa4F%WN>#B4yA|Zj{MT4rs%Xs6LEBYtFwb2HN#HI<8T@w z^RRh?0WWezaJUnjw|S+P$mvroZkpk5zE=7k1LSrre(J-=ns^-k0dI~5Xye3DHQ3iP zTvfDd^BJ@s8~uoL0+e^#_bh%KqVQs9381)!M%a6Ws=)aP@MNza=a&mUNI-VEZCSUH zxpp@&MtJPbTSm>Vd=z&K%0G*q3{APm<_hUZ#l||`he4YWMZNDkwD!=X=V7@z^7sal zJlSvv-}j@S1}+C{dhM~rMYQJEU(38HvQg1WOK-NJxr;|DTjc8K9v+g0Ce zh{jJ@#xD;HISvN+59pg1`b}r;3wo($=_#XBzyvc=TDnw)1fcemWopH_I(;(b7>YKo zw*W%pxi}u=e)}FSg!6oqBgyRU8cgq%Q%oa7*U=^dpcnyp*iojr2sE0pi%yx&2Q!=G zxpqRa?iWcfwxNMx;Wpfq6!k!xL*!z8&4T@?iac^l9AA<&W6z9OJ?!d#47iZ_09-1k zjiz`x+eT{n0)j0gSZ>yh0wB(x0BJW;!YmjFgGWK0*!OpI)6v}Ye-#CP9NGv#IgMsz zrBxWow5yPy4kPDS7ecL}QYs4z9`H0KX#elj8P(2$*!rR5F{9PXw&dzI<$YpD6fO9M zMLv?;xE7KV$gKE-bz%=a-wh(9f&d@617D-cxpH{`j(Q(NKWD}@K8OJ{yz@aDgx&nb zQ+)h?DuPF_mhXZHLh-b~rP(SB%b^o6Rwk-e&V0|v>0u#B18W6{_mDLI7jLxNbgYJ< zN0Fza_}aKYC}6skEY8Mr9mwmJKri8?jCaW_mdJ+x-n`9YP>UMkh&y^erLM>lObfLo zWj8bn{0vc4wnS~gXTWCut@sr%wBo@&on!GC!Ohnp-iAZkqHyGnmd{$egy1Q(9o?lcOF| zxK#tS^h%$*za4^Na_5w6@soiz%qc;kxCDH1N;t>YgCCCln)O#zO@1pK_rr#hK)4HG9Np2XC$VeOd~gT9iQ+hSf+DRJZ4(Wxx>!bFa+5ns)5V4!m3 zsiP^f_odY2O}4GY7ScuwK_G*|bnilRY|BcpZ}2p94(+j!aX;a?^wVfm4!aDQUseep zQVd9DzEAN9?>w@~W^jaC?c%q?It0K#=qHlvpGVp(v6bI$q*V5N5AwxxOZV5h7=K}$ zl%_#UuzMnt$`ET2YT_)~bYxjSm&*O#U|H4=vc%p!?_j5W9`5weBW{@o>eU!?;oenR z^!Ia#j251Ss+XtTd+tDm`UD*p7tGD7LjMim>l|hvPjY3%3~Kl!h3APT z3$MR2faXi$brNE8ph0P5Zo|*d+E1=o-nWkA)c97+L@IHILVJA;G!GCWlf^uSj@N`Y z&7T<0ODn5b;lX~iXXWk zqTEC{#$3JIp9TAC5E7K)!(KG6VAu~KKX`=#Q!uzHHwn5q{DUwh@TwdvppT!41=h7` z6Jo7cah2yW_-%L6U;h+}B6|q6`>EQYoBlD~5n4$t4Q_d7uhFv)f$w=vMsi) zWeUu!2tQutT&M4-VzGo1DQW5)MZmUb9%RVg2qnJ*+8QNR;LdK3I-_X1*SB^Yeg=L9 zBCIA+;|nqku71?46W=NJo}V+O@7B5U(spnzA(hmfRIXtz;a7uw1fDOFS98Ff&t;48 zJvwGIYz?Jo67~+qP!U&VdXd7zFHXKHs02adB}S)1>tTg`$#bf`p(4_td@`R}2>Hw; z{(%bceyCl&x=5iHqsabg-KyBSfE;1~Y{CV2W_7{58<+|`vOSpBIbrW6m^=^Cg|!@a z-a7xlXBv2yG;BW`RpHibP=Kzns4B#Aic;)-+o#+^m0j;BE7O zc?F&anAxEC9&xn(65MrtRsvDS^d;%6;H|=A<6h@K(iRgp*sU=yejGCw@XZPGQT^i6K4W_f!1F?qk9?QWNd1+KcxUqPa!T}mhgiGHp7 zaumk3v7J-X9v1%=XhlrpUIj}Ee)x}MgWk>tHl(K>bL^49+%L-5_rM^&Y$#U{MP`Vh zqw=_Ja`7KQ(6qoFdCOvt_c^zbS8A%!CyqK-X90)jdV1q|!PDAb_-V_imn;VXse{P& zDt>DXeqvVwM{{biI}AEbzvSUt>i6d<96UERhsKy@v*4#Q*hzk87LK-O7Zb%nm@dF7 z%cMPDkqj?}dLy9Ncm9_w_)@M>-vDP&Nb2;&8$C{CYz=y8TkLIsNuvc!#E>|feVf&6Zz`IbtL+ys$u`V?FzG#Jrm}ki z^M^7cKw15W!xkOxHRjPnl|)}ncxRwFmmN{`_BV@4<%v0BIyPbY*6p#g_UABqY}O(S z9m1>OO<6%}^)S{gF2{Fffze^hAN1WvyiBu0{G zAr=sVfZ1Ss3Ec2-5Z!5oC=xD%d+#jTJ1@xEVL{x}Z50I$SM^ca%R1w9L^aOyi;H!lWBI0QoYq8G4So_Ad34*w(U(r z47t5TweX}#D#gcc^AHARUgRAGE|MeFe-WQ9Vb;-=*DFehoJ`Q6pz^k;ZduC~M)PP1 zIY{usbz}}SCOCPJJ;_D&61;ZJzi}o;yi#8lU52_c3`VNY9xv>arkxI+j#{k|$&81L z1+qp){a)8Qfa;Z})ejoEt$k}kTfLG3k@}zD;t`0Kp2~7qKcj6rx{*9UuwU{#UPRr;M(l-e9 z5t`{tbn0c)zt(h6Z(6k39S!jov}mFGrc9y0`fEDy`Ci>%&Iw04gRT7QuR@zspMoqp z=M!b3Zd_c_2i^+zh0Wg+^s(g=K6wUkee5(zZT)>ij#Vw&Gduu@YZ1}u^(M#!O`$Oo z(g~e3us4Qd!q~7L%UQw_ZK6t{g-#J6e-WL*x3H(oP1-rw=mD76)U+1J(TVG3iwuA* zBCh&P`wgHH^>o_#6A4hDTMN$LceeyCs-Fsx9&W2B4zpkp2X@=Gio}I<2`(HdoF;Yn zc@8f2?B0tvb1CvA&zIi?MD?j?!8W(=b3+Y{`v-W=|(ZW4JYn8%qO&H{1 z;5b{R6S}ZdFH(Vw*b0jb$zF&l9W2AJShQd4iUf5hvD#NQ{Qo32uvSwRZv$9AEt5sm zg!&p@qQ`SqA@EMbt9v5ubc7r-P@~TV$a0CUsM>BH6!ODLfFR*H+!6YcsHpFcR7vkSa zYwWjOLhOnMM>H8lAS9RWmt+Gn6P9#a`>qyjs7fvEjO<5hspbwdA7rHcDfv~CP8%TC z`6XIv=)OK>Pww`>y1JIF|2p(ndOnSaE2f5fF)xD|df+5|D#fGfjXl@F7OwgDJQy8@&y|SXIH3wV4WyhKOpeg%~X(wW2DR z!PhCpy~?QkxnUTb`v&>F-h7Xs*4tCT0{rgq^UO=?%3u3_H9x*>zSKAW$akt2EAiE3pz|o0fw@vN~Rzz zl|}`!ip@N)7`$O+bOykLKhbS!E`u^V@>*8biUCFLUknH!VUMjgHRVhPA`H%ZF67jE zNDJ#i(Me`mBs~5uz*lDzG5TJN2?HG5p(=U5l8?R6h}Cv~;0FGF3pt3iIzsA?-yvP_ zQm2Bc@RCDWb{LLv&aQsPY;9@RB!LjzbQ`tBuSyj~$If2YYvC+FC4zEewFCmezp~mE zZ%&((6%mm*WoSsF&LqO!74sx8cu{@7fKu9Z?t2%WM|K6SUm4X-?ljyu4|LkVX@{)b zI=D+DM({REPTf5Hr6JSk6>)V-)!jKT(KiuCPKHMa8y8k~6(qM^~KlG3w8oaJEl0mF~Dvc7eU z(P$GE7JWwF_A1S$b5>cG(X6;1&_Io{HeP43^xXE3rpdXld*!G7gH-y!=;h;hji%=s zMe?97*4&PF3Dz|7s*DOEBjixT^&O2jq{K@Y#S@M9cAZ{l9jP(ida_5rMg!^c@kL|t z&OrY;rcU3;at;cP)HX$#U{CJ^-{uJAy=&3g`3k(JVn*=sZR{X~q0^B!0rIU0v3KR{}(4|;dSZLMOwXyfR z2TuDjulLz0lE}#2YDA7 z^9lvt^0JWMe8!J9)yakqX*@%AT`gZw(MPXE%dudKMSd`z+X5TNMl2^mw}w%~}4<_+I)#cm+vsVhYJs1>ZveLH4^u^WI0FkAb<*FabwHUhT z3g<`aCV8I;y0B!}i-NR@3yCB>K43J|$3>oq_xd10hvM|aAwoEA^|@~#OD6OIIh5yO zTsG&PS&1Pdmc~VKm9QLGJ0B3jm0VLJ{Rf2!`n3ZN`t6i8Y4RxpVMX_^z-l8#IhG1x zQa=ibQ8d;_<`K_g+VtJYdbqy}bC@B2fEOYBr1XUVhE1cg7_n2#U3B`w=a}&P%swnT zhvYsJscS7KYOfRyjE^xf|J&SsE<6Rk1pm6emPsr8wj-On#4*1h ztBXSQ(xQk{EFoH-m||13xn7Z=xVlUpU(>SjL^a~g#Igb|2D6L4bQRCg2;~k0*YUV0 zVzzS)S!y38*%d2MwXh8VB-Xu`C<{$#v`0DVw*0!5W;J}ToI5J_cMkOwJA`K3H$0yYV*COesVTR0rLf> z@cE8eCNSR2&OX^OWJVg%-=QB1Puv|?DE1oQG)yUrP6w}q8-&>kW&v^|*pN@Ew|c|& z-lWkdlvkq9$|U{rV+-i5%_SF75{6<7;e>cIL1~6l?^DOL$|U+mgJM$7#Z( z%lK#7!2rLzVJ;v;6b80UerKBFM&#>dHzHRQ!|7tB#8$3OU7hpbx??0{V;&_$*B$RP za#H?8MZ<<82^j$vY zWF9}$zFlJ;!Lj#nfJjwF`>5^HV|*1RPK*;lQ!q@x{Lqg$PwT%-1+v`6Ok`K%HjbZZ zgmwbGL<|O1Y{afUL|R=dArE1(UjYh&AM?DFHgv|ikBEpm`*u($ZaqGlUVtuCNoCyO z)0#ypYlhw^m?9uFPdj-?>8A;i-qluzt6Ecls?!ItoU3RPAqb%fTJ^;90(@{$hu-_> zUI=^Ac&oxWxmwJv{IC{Sm8+Y`=k<+kE>&^=4PXCnbQ4W%^v!6=Z zt_;G&mFY70_)r+*BHL@5=OUSgFi6r8>u8fDh|98xo54ZQ`VV(&a}+cjdcwUs)dYI4 zZrhY>+=vMt|8RxM^m+mP+t{5SX>? ziH`lndI6G7dAQOsbq?t8q=UEmNgE!j1#DyDv&Nf3S-6W4QxWw@^rh7-mR%IiA-UZ! zad=?P$0x(GBFJK&_Z{+$$#s4zO-EWkbyaAbSZK39gT7Dv;zSGbTa^eL%fEu~c)|ku zcTuuu>#lZ)b&rjv)8M4IZ@{(JtB?J!b!oS4@9MVGC%(2wdIWN0??(7PB>D(4PYrP0 zvsc8R$@r!WZVj9-%~ido@e`(u0TC|>w$)~1gca7T_1Zqed$onlYbL~u@|(z}*+%l@ z?<(po^JEyg@SPL=WXTv>6Y&vAoz|)(~?o(EON*dEK2G?$}bWjkz zYZ^Y0CkMZ&!zo7wisCgd{K1oA928CTv&0=13+7E@0l^+c*Neam_D7ecAEX8j_yl+J zX3os|t*STKz19He@eL9rxY3cQc1M`~fwbd_N`;CUL{CpIZ=B_OA0+A3Ov{R)c#;Xz z6MALAtIOdqx+Dwuz%N&Z=4`4W!bnU7m`9@CUSr;;Fxg23TiRRK$XZ-NTi99%fzq7T z2D{(H5!q^2?^mg1Bk>YYI z<3p66em~j@(>Yf`tnJ^tMt$jv)#K&bxo^$cE`B>`SCK`(RJ;ymf z;yV_)$Ea#+EPQqA*ZRRkZGE=FIZ z4l^}XLt(l9NbA5)6eG6K!RDrxwoKV^5lag_!5bYfY?fLyYEW{SHSj&+`bHt49>5eh z=JW6)(4><6Hhcb_N8^)~u&*HFYrBBnIZTBXEqaiz=P@l*a>uV!+*ZKsX-w=kds$@A z0#|IBxdBOjj#=yUl>LZ?NRE>C(SguEj$#?u4VvOf8f*;8d=cq)@^{th>`GyND@id_ z5WCot{yja@$(6ftu;s2Oiawux;qz<*9pNKa;{B6_+GWD=}RZ*1Y4U8x1iF&mZ%s7J5wSUvGR}E-=u`NIsii^7Un@*3& zgdH+HJzY=#qek1Ot0%%P$zK+n_%w%r`T zPa$m=y>!)0`S~>!>^!rx7p9{eBIY&Jm4Kt%Jjx*+;=c$yP|l~r8$s8_>fFoXV;I%b zwmOsj*FSa|X=-^zG-*ATT)A~H3IZ&uYeP!J6!Vl+n0DrW@2bUC^~1uek*X(bA>eH^ zcc@^sEBh|xG1~D;vJ;D^_J<0aN*`p5N#oScvAjTQW?-U8c!60$bzPoKej_3fy^#hj z;LR=0N_^pKGrxwbQ!dDX-g*X~0ay~75yz@#N7JGzW*Cc96PA$7HLiii%lk_Pba)$I z^h4Js{!Bh@!ri3>@OF>Q9z-622Q^i})vuH|TF8jo=iny6aBibW9M;yQ1)*k7;Z&9d zGusN6I`b%>D(wZ(aTNf_&m-)1M729Qpl7@?tn<=2YeOZA^WAe-zb=C?k{HQL-FQEHV(RHSVIY=kCcoMJ2hM1S^F{P1Cn+LNXg#sD zi2Whz`1kr6n*xk24vCd-02Ef;8x1ltc|hsXixtIsvgDT33~6yGWH!*y=`D_Vr?J}Y zK74;UQ1dJzjCrFikYtQaFJo>;b472182)Su+#ms%mOk<`NoR`nL$E|^4Rk&qqf<>u zf>=S-m#^^BS`KLs`F_f$6-d$etmj-^9h>6J_gZ7WeO2W%aK$Cs|Dn%!-?3k2^2}f_NHW|5II}j>>?jX4 zaXkOUDMF5*X3rPTQ+v32{tXSbmCx4oH+R$sEh|UN)j(U}LnyO3*Pm4oKxfTIaK__d z;g)1pstulBntq?^m3-HBca%xl89M!9w55EBhnAPC>y$u)jW;F*udK&>s@!xFDMDCp zGj@^g?@D2!bRBeCN^Ja#l8HD%}W@B8OQ#)|fh7 zFa998CrD5vmxXO2S%#+hE{VASPcf@x($#r{bpXx(-)!ERThxxiGG-x)H--UO&6`0( zO)*qdjChk96GGv+byQSkzv2=ANl5tf)Z>btT>*9?RaBLu59bv|WKJ-2A3vQxpBONC zUuS&OiXC-q4QQ7Hbf{z%7|=vrfEDBNOf^9(n5=qyjK8@1&!J}c;fMi9{<;)-J8jO{?@j0Wuw3}DC|R+Qj4 zj%3ROd7{FArG0+k2*5-KeC_7;5$%7WHzJ~g06l(0T4Hks96eupcia&S)On`(J^4-ePd`o4fV8`-cKh6cE+c0nr|r{6bs(C5%rK(#c}_2s?h=&d*)hNYnnXYe^L zLGjRq*+>H$!lo{B3TeKyD*xaO)S4UPQ;KCp$6L~flIw>TKX*Rk8C&tW?=tN1wIIx0 zdqS&>8eF3?dz4XSV#v#OD6DUU$ud^D9{Hc-lXMj;S+Ev*99W=oR`eyWypByOoJO4L zKIm|*;Oz`rs@3-A)ZGZs^+q-r9VL^s_|Pa_AuA0CgrwyihAcrdGt15Sus>YCHtYdO z$ZMbFKI&5Nc3cr)_;Z_zKPSEQlLW^YO)k^9Gx;VsIv4OK8>cjl(cu)8j?pXvk}YvV zx9(w8BmDQj2lnVv)|kCRL$mQvq;5ksCl=C4=hby{KJ$wD_*S5KvBQ?w#1oJI(zn?k z|KcN{RCfN@noHx<5s9~5&t}$`nGMoT;k^%%5{!&ZnAAloJ(kQ$HmntF&c)fB0zJ0s zQD)ttNLnn|;cBI|G(pEu8iw(8`0&cfW43E%;%~BAfEgLfnbQ{b-6!D9Rupj~zJq2y zfb1js)iee>ymCXJjmTcq`x6M6kYE$ZJw}J%sqq+zLY1HMPddn|C{7EXWZLRh=M1Gy zI-uogFih(PpW(5!pQlrU@zTDZisM zMV3!b81?*uRDl1+Usgt??rSl2eF5|?GxQ6fZ0@oRpp#%>d?pKwU^iR4Jc_oFcG%lP z21*Laam!~51ziTJE~u!%Bk=I1_k#V-7rQ^;;+ycVUR+D$>Q?3+&H&c@?c;l6xqaGM zPsCcGdtZ8QBk&qh82C7u*YFQ^GIum$l=yAR`?Bz&R8^n%2S3<{^M~IPTWhkuk?4Qe zYA-`-+;wD=5-v2+a>K8%wC~&}i_I{3DxP8MAn&7)ZG&++w#QTzZrh;&OM&im_u10Q+N{&EwD-<>+RMK*6 zS}b~!?rSv=c0;gHHY~J%-+WE~={I|-NbFHn?_|8c+A7nR=etLkh|pX}Kh|!sT58A7 z@D*=tpiLZW84K}XyRpW`F+Ta=D$SB5BNY`Oq}z=knRrQWjw_1|V+HnQWB_Z0$yKjI zuacF9W_Ur!fW|4ee8WtiOIt3B0Ks9Li!$Cgvj=)U%tF5D3|NJ>Kj~PR?blL1($X2xX@}L zw|ige@MAimoC9EapK^~5srX7x7N)MqNNV5D46P@AAAOo6*y>D{|47d=1A>D3&e+G& z{YO4R8dr1vCM)Swlr%8~aKH=w|LG6d#PR6ssN?q^57N3m4^SK9F5nd3Jbf(Od=o13 z(O(0KPv2IBh_E8rlSLSUmT~I8sTxzTk|_=Vs{xYl-HfkqB;HM6OrGJ;VD(R%r~>2K zGM=$5CK;*?i=<#iprvG@RT-E<7IFDTRY;hh=w*Gm6WQr|oE8>)I9ru^%wGjhJ9YeL z4^)ox1Us^AIgdt~hc7=8;z7X7^*kNgG9ifiRMy2jA!5UZ2fg?duP{NGULB_jmsNN~ zCDGpXrZb1X5^l|Syn|36f^N4Xh5RlHU|_4;Bz#IqWO8m;4SjKIwKkKjHn2YO0f2qM z1=623IfSh*O;XuPf(WmiV&4w`9`2D72xiHaHq0Xy*X2)0kv>n~{j^2(4#S_(gczBr zBN8-#h8u6Q2c$n&H+R%w0Y9=Rgqc)Jl``?XpNhY}CbvQz9P8LH>VAWaw!O%6rTlS}gfw;@Ryt8BeXVanSUA9(E*DEg?^ajCFknTa6 zASND3&&p$ofj+m9Aki@c$RW;}YsEUidN%A?VoBs6DOu%8yC#H#2lb!eJX@tc7PTzG zXoB#&{ixa2y68?b<{aaiM?c^5Ev43RX(j!To&R&ZiTr3}@_*v@#LY((K78bNID~{) z22fKNsFg*zHuVX}T^}q%rfRCLW{&PeOp!G5Ci4TKyanK$oFH;KrrW+Qt2$DkW54^$ z+%DY4Hz}MfGZhN>W08~9T5K#zA&U2JQW`Cu`!*Uu0A7+FSuFa68t#T#t0GtM#}-D?_vB&>!Z3h z9)jfWEB@K(YM$OlJrm|K;prSV<8X0AuoH<@x}RF>~whxRPf-h+=PqXVAsKU|wRwpID&pOX@+J!9l$`WEAH z3N8e1SW$bV?jvTXgF)Mw-US>o2Uz1X8OO#pNqs+VySKO3h{_nKtH%KnhsA6S zmIaCFWPB9dUSlC~IW3H5iEm-M)Z?hz_)XKfjttdUxrY0dg# z*_7KlmNK$A!oi#(@cEXUne?E+$E1+*Ca%IUNKsqNU*UA1|Ffl{Lbnv@FsQU&7HR+k zQTo8%uDzf4n3YW7HT6;6ArK>qD|h8?e3~O*l6CIVB!+Hd0z6`K(uu$|LDP z`|hzOFQ)Y-THFi8=rdB#hic#j#DL%A2%My9yGk_8ol-$*VWqbuDFYTOt)w|nz88Cw zxjP@R@F&t^l}~jt_XHYl$l0QD!8#4ZKo~L`eR5Aj&(}hjO$g9-1bxbS^0iBw%~)Cu zzk8g=v~x@RlT2ZZlsSwR|53+tdLdDqaoRpMNLJW{BA+-zuYE=Omv^a4`To|2HH4yU zl+VW#VaxG}2$aAm9YTee+NCx{?(LBYqDA33LU*i-#edxR3|`V18WqTvI9JE7!vB;3 z7A83Uo2$c){_~Y7l=X0{GIM3ES)ui5%r;$KORtpt>s)Gv@i}O@D~bt(YL5|_3Ta38 zD$xM&2^aC7Y#F5K_G%SH*m7y>!dKb7B*z2!fSKc4Vb;rEOt%lyrDO@r%m<=P_!ah` z^eV);2R8}b?nmF~NtvPRfuP+;#&7lt~jmDJYrPOfgA7Yf1kGo}VTew9Y2py>p`My&5s$ zJH70tjEqt6=h2h1B|0z_$(G;wmrezbjV9%eB?(W3J+MulWSGW##s%dEoaI&zdQdU@ zWLqZc&a+PVPDK~^SD}u;rx9etCR%s3LG;r-U9WEqy1;Z9JOSF`1p`RE-Uf`VraoC` zVHKgWOUNY07TZ1m&}s4#BAvsFrDaHwBcg2>2fp|U+Fz;WlLDaGAwKAzv=(SSwnAO9 zXT!%@%CeYYS#leSf+GoGkBXv9&4lHQL^|r*ql+CO%zrIZocR*s4lcHjCop)~G!LN7 z?!T69R*{duzTct_f2o!+5T|0X$K5%D(OcHR@R(#13*w%C%=wAvYF=<gY{QQ# zc(Qf2VL(d4&vkq}EtBXkes29`8pSX;>bbZ2ZCy2EcIUMVjX@lt4CBqm0AoJS zm?VXGE_Ccoqi;TZy=EcwoobQ^vuo|XE>lFI+F2@%6=V<}15lp)0Whbe?!47xN! zn3%`@{@+~fyeCSTU@(>;J6jF!xM{0^5aA{Ji_cy#+Qg&c^HC<1X+!zqIz|1`6q1B? zjG>ZnkWPbY^m}I~n(Hcw;GNZs_>oeE8T%I!4sZ-MpaCAqH(DS9yuOUJ2kbVtiHuvT z3KAd1phYA^i`>M|c!Z|Yn-^BZgX2a|z;X^f0R-=pSBX8vCq4ffv1J{929~6tT4q0JGyW&3qtrVdb zZAb8*tfTGY{mk)%Z=x^u8Il}M%NpI*L&B|`r%y=kY3cNBvOm0|LqhF%J5!ETS_`$Y z0%2V8=4`=o(N}XD5($~iWatgepaLiyYt7s1U;>hQ<_#kNlh^f!sL4#ba+#2k?B~7I z3-=8h0l}rVPvqYHzZWw7Z^A*nQEE_IZU8?(z`wrk?<;l<-U?@#9>)RDd{lw^!z>-#e)>Bf6cvIO~z*6`#|<#%xP{t$u_~=lvaMbJ%RI8*ILXA(mqJmh#DVF@L zO*0H8)Gy9PheSzr+E}CaeyW>4gS$i|xrN_YmKDQ8@PLX9h_*VYCKlHp#P?qkrNSgL z0R|k3!RrGWsE8n3D#{f_7hPp^JI*AUqfZwYS6ZO>X2@YNCjdM^z>v}sUpaN~{<@c` zBF3=}-+tx0ayEu?Ei;POQ(T5f{KjR|;X`T!X9q?7Zyf6QS$p^DUdLv?96I%)w4bg9 zSR->mq0}IB)bs*OV&mn19{TVx+&Pr*QJ!2#?(Cq`?r3+((CaaF+AEGMs4_k|>*aaR zY^D`xKv54>jLu9^&Wbl1$O6AgZ|ztJF&&9|a;b-f47|bdJPO%|{E+sw@_j41 zOSRM=4;c6w^OJ#yWb;LbR%6V9T88!}UiS3hY&ES+lA8}3Y=0!-=(b37=F!V2w)Efu z%o-1kl3XBNCADfdS*QVePNXT%sq)JMnN7m=pbyk!D(!SDw1Tfa{)0-Uipg*OMjr63}UZ*+dy~&Pm9+aXm+}-S_1DA$tud?>rULhp0w=YY!c5*xcQR-&a{=W)ZwDkYzqWk(E?S+fe3r zjE?Gd$Yd#l9miDZ zchyRs1)tU>)nC26{$UoCO-N~zZsJz_M!+NstzGyjE;gvT?3kj@Gthd7zW}W*e=#8o*{uLqA=BvNYax(=( zMB-lIf6}v&^!lk~V%YVpFxo%A#Ak@*NjW_=hY%A_{Eeh@lilhhuNn*^Ma$ zH`U$1EXvXgj}Jy6*T<0k59bh*ju09oAH6v8Ke z(&C2(+@cP4LkQ^ud&wMWZZ2dw?~=v>8w2$ zKXFQnat*!TK>@kg!SyGSAC2%xVQ{i5=pu(cd%KrH>AgUK_sw`olia)~JVqerwlRVt z2~UMFF$6GX*>k)%W@#A-AolAP4Hfr727g9pASsXc&O(*Cy?XQbbB)}fDYx*c*eE>U|ob|i7{&`V}7um~T22?QOYYfhyZr$G3uPKyY`=e^K@ zzpvmDIjEPbpCE_!v^*>&kqzIy3AK&L_QoIg@F{0f9O26ESSv`)29)5zY?%Fk6r(@p z51o0)NL%}Cf#m2G67L4cOxUy&NDC$o-kvW^D(|3bgjM}!x~G|alMwQGuSRLq9J_rX zAO>Kv$g>TNEdb&}hu%}ZkE)2ew8h=df=SvQtjaqqSz8<+`X4YL?_G&JAit^waXiwc z>H749>>`ZWB_>o9E+^q09ElLJT#j_zCeT@Gsv%hYiY8oT2-<|I+L(!8pEM`yB5k?U zLq-<>ITG=_E^XN3R#X}X-+*Myw__y6K&5Nr?|Y{h~4P>zR0 zfZ^O#j)lp%#{x@2T=IxTXA!XzgoJ(Bv?5Se#M?esxZLhY7;FWDC#Teo75tQ!b6<;g z(0_0^SluGz(#YZZQcQUb-u z&sjzm`}48n4U)G64|&zW?G$=ZKr3i2^WFx7bvlXtxhzZ5=Yt0UjAAqF!g^rSrBV^$ zo+bDGTB^Ro_if#WSYg;_OEs;LICOl@@*pdl=GT&fvk(SleC%i29lB5u7*P5Y|F`fR zQBcD*5gMcDVpO%N?6(^h-?k;QYMPd|vPqup`g^)p5zlPw*f7`@Fk8dE4(ge;`(_Vk zUSmCPEq@4r&gT8y0*3K&NauEuso<~=%V9bZg#;Gz#uBSB=} z+K{{=$MD|mAvs)5jC`L1-yy!q6R2sIg+Td$E~-OTgYwht5;TkH#!u{=j$60qrlIfv z?*?d?C1f4mTvHJHb{#nsE^bv9W$cmvJ{}iFv+X~NR`-`fyW#?);s+Skps0Udg*{mr zwm?O%fE5qlwEtj+@$Au=8_as$j(_Hbm(=gS!ShlKXVMcCNimbw6FaYI`8_Sn*{L*o zO8G2h4lo4f>2B6%Jm4}nTty_Sq`^Hxe5u@d4Gy34KIj9B5E?wi{{acwMbId@^Jp`YfyUun9e1wWye0%sxt8v9u!#V#gE+^dYw*z!xm(#DeeZ7|8)HbWZ<*Ew;>x2%Vy-$+D!uO%)A*q=rZCgkb zCH7nLTv*}Vjs{W&dne^X)(gZD-Yx{&!JkLql1On&2jqNDvN(&)M|Yp+2iS^(>kW+q zkXj`~1QqokdzFVA0nT*mU|B2x@Le~eE<$gIYnR%#nqJY^t|NQ|r$x`(77XvVG~sG? z)ltT)6RAPinJcO8C_U1B9V3yzb374@tcZV=DWJGig9K59g>T}M>k~(7Jddg?-jjw1 zZUq)P(SOfiEgY0&!^{(T%P+Ikrr6PQWwZh)+MeXtRuHa)V-Bxr0hBc5>0xfWa{!X_ z+*NAP2a&r=iag&g=D!K|OkZd4%V($V2FBnB%naBjCi}nEK_s(DHVTtL7k7&3nKo29 zBYy8DSm5s>J|>I4wu5py3w5r@#`=KQ^7*1U;uLumtMUW6zN5MC0bkzP7UeYyzcgKL zj(A3kY?@uuXenvPdi@j6OTt%@@UOyhX1*^O4{AzujW6LA`V4@yAytp-AI12X*>ClC zqF?*O#cV{+ZDtB|BTQ9fu5$N?aw_c~pH0p;uCiFQuw^s%AJYlN6?Gk$InQM1_EgCR z?NUTa+bh%`2BLl%V{I%H10%SJ3l2G=USqt4AP62Ki3z@n7JwluvF4sVgY*wa!S>p0 z1yZ+k?96Vy^eU#g>8~|KMoqAJG;i}D5#;q>C)}p>YJfQ!4xm~)d#e5UY}CysN5+9i ztH6jA#`-pi(T2k;%WLFBtCcp+xsZqz+gxT|j|D&dIg9RGxz$BbfgP|cC(v%v80FxpA zY%Jw2&z71odv&eF5H(R5q;>)m2WVMb>2cwYSl$#Q6H=eqx`D6g*ux~S!WF>sV^Yo9 zFGLyPZuZybjpjn@*|8CE1~>IT6840-G`a;c#3_FK-~c~DYiZx3P87pD8Hv!ZW_q7! z*e4pF)fRVV0*$XIemuP%+J1<(66>IFCoxw^BLE5SvTuwwG4{7t^-s3huv{U6V5GzA z`4D-}=nJug^Ob8dggmqyQ;<~&pcF4jh71L|W$h&I& z5r|?ztyn^AzcpQ{atvG(m5W;V6s)-ToxSLtrzci8VruquZ!uE2?;k3)dwu74SS2w$ zTB^5%faY(aKkS6(eGuFMm%gtJrYU{V#MObfhP2Cf77^-Q`~XuDaFakbzo0F;b01cj z@o`}PyV+rJ1jJa<|A(x(QDxvC)BJD7Rt7bw_v`89E9APM-v*0iV7=7SI*_Fb0+*vG zRVFp=?F>AZGN$$x4=<#r(dM8FB}?cy7pUYN9|=lHUSouZAM>axUcbFmx<&wJ#fXys zjGsR3c?7_MgG#$exHhvFIs$eld<=YK;8!{?6$MJMozGGo_7krQ%i<&v`U3XB<#duZ zw!f@8+g*5oISaDVCpxRiE6$d!?kuVF0!PSzo^L=P)VF`3=};vXP;-w{JC~T@)}m)e zMsO4PtBJQEyi3XO+EICY3(aZ5*%h1@Dz6$H6LqLYIv53d>~iDiWgY~UyGrsE<5T3M6P;V77*1+`M-{T1`7 zhqWTG?V#%T-hm}nKF9NR$+S3U2DggaXHUp}UT*dsV`|!nn;_-<5{;O0lDD=xL7(gK z4;9j;b6K~AZNnDw5!_*=)@TQDH8ju5)eA*qVk*fxvFB-&X< zaOPgL*wR0{#L)IJd?u~YOT>BtU~33iCb|&9wbF-saR2~6?(D*F2$U#cSxoj+tRe`N zP>;5)OGNi}6r{SH!0r1P)wadGQ?-ow-RABZ4S{uzMc%2G>OfbS%(eSw>u}AMNQ^;K z)5){qodB_2+z`kOF-Lz+&R!naO%A6LmiNC4Zpm6&6L=P4;%;;?{0sKf>#- zCD0Qv<*z10MZ@PVUU$9UxQi_BrJSd^FS2uXpDrp z)OVQQxU0Gzg31y}_H4k>ralikWsf@x#Q7{*I2Cp7FL&pN_&(P#BMtMLHnfnbRahPQ zH^V64raW#5}nrrDnvHZ;@aJ{$ibl^)VgMv4g+?QElvDB$>af{-8|b?&+b>GO`F zNQm^Aq;vazf&)Yt%Dh?f@b+~eyVC3||0<5H>Wpp{+xc!_r?Wz5oJ>^$m@nVo81;kP zD6N7EPFF|=)Ym{5Azt*VM)CaVKUXpS#cQ{W z7LgSDIsRw&AjrO$7v;W|1-U8?Z1k}bV`p#chgm03LU>E0={J9$V%5MAA6rGZElV7P zwhGK*p1nQ;03O5hB*{rHL!?__dfd-1>>&{w)t#xVoLIBVSG}HcFxV4ayMWF0`$=j| z^uz6`sG9XHIH?s ze$y$qSy6L>_{9)=$+n1)+gg|amD@wzZQb*MClkc`6?o~WSA@xBr3R=p#n)MPaj+hulICqehGHs~1P4{=0Wsn&=@jcAza%(rI zdjH&328waAt4{4T<@cq0|13W68`(jviL1R)ajA+GG8H|?PoTWgn8G*<%vmxstEGgS z7HA?@OMN>0`QW%$`Ep~uoC(GX-nsD1`HbEjC2#`x@8H|!N`q2&@IZ}|2D;{u;?(9M z@#v2;%n+nb{U+@7J(|C)lh9G&9MeZnm^YCYWa!-D16dCM43hny`{DO?Oc->NBfZ7y zxhqnu!kGu>4A2Nh*Y+dVQ&wxW<;NQpgtBU_%vP+GrOxcxGTii3lR=T_cjn3@d1m^} ztATVoP5t#52|nBFip_wGI?%of@>#((t&T^M)|| zM4l{C5a*gK-S~k(hD&oR%OAy-s7t=(APQLgYfdyG>S)3sFl$?tIn3 z(e(%FB{)RL**9aXd}O(#sHHwAC-*8AV|E-=I{B|AL@{JQ+6*I-ygB7vr9yvOEVUFy zVo{K7cIHyXQ~^%>7i4u`(nHfgAyfUjR$IFbcL(DbIYHrg@<}6(nv8x`>H^wfjfWL) zcSxHJQ~)vIE9Ymo%x9%>RHS#?yrG1Z*6MEo7yP*I7JHAA^^P12^7Obsm_fEwn$_u%lx9zg_;Z|$~E8`dQUh?}P>q*OlH6KA7!X##N z?UjccN6?j@L%Z}7T+|cYcVPSQ07z7Ie!bm&Cgt^Mo;N;Ch&Eb7%h9d3z>1e2&JlY1 zDv)yFapS;u>fNtFkIl}%uo69S5#ugH9EZS~UZL|&DMYaL%<=FU4#gH=kh$weXBgJi zz>J}#B#UL31j5NR6k*yE2S1H z`8;2WThg;0De*Oa!MV<+^7P8$wPNl9nex&9X0`sZ4|oLcf@O^-mVMh`enl}VvIAlN zWK4c%M}EzinFSxn+NENj^-b?G-s0+G*fAs-dAF`_5pFcFkthVt&!DxK760>`s|Xc+ zni}0p9plkJgu96X0bEWfbmN=+0mOl`S;=kh+9M<(u7gGCOzh{Ir=00EN!Jr_c5npS z(tdZeFGcz=?K5B5l{9GsxBMQ+^}+no7M$S^y3{T4wZvy8LT9AFpkVbmg+l7_BYV3B zZO5#iCp0U&z2KH~@f6#b(n684{^knFn&(JEOy z?!F%R$E>lMA!q(1-V13y&@jmR`7MsE)%Kc-c?arPS#(mZc$mCL0cLG&(5H#6iVOvf z1rVpuBKwG}8)MPXGs->^m1yGg02`OgNG|Kwt#i$oD&)$7o~mR0kha*q+^SVc~O75CV}62Nx(60{#EDcg+nMgRyt96s~fm_Ua(k zr)LjKS%}&mO4^Z!*QTP8_7g4%VgB7#}!Sg;`DaenIZv@(?PxlQ4bEC_=FR_7`v%)K6W z+_O41+Nex$dL+I;wUh(PY)8l|ZwrJz<<7s*^BevC{}?`U|5PonqL{fxBYQ=A;N8eMwV>_~%H4TZ zfD&y%(qV4^TmFs_;>{l=bS@gHPdlEWC^fm)m5fPuXwFyd8xHY}SMW=1isit%7aggQ zCtJae6|K9bUUVO&Z=f42&;3SY>J+QIp`-AVdk)=7;^mczudsiZ>n+2D03tQi@vV3=j#%jhKt=wo z-k84>Y^+d1Mo_#U=}blHFN*DlrmHo(d5%ZD{@%U#)QZ|0$bMaiN+#+bkDP%i8nkyeCFF${m^{ zLffW~W>VmmnWHfpwb~%sd--k`oyA*Um#3gOdD-wyjYcB zsp%gjFtS5QaVwACN6c%r2tzbZEX35TVM!k(i^~GDSE(D#oQ=rr8jYPPl zXDL+>oRC|L3&+6}%{5DYFU^+_(~S^4a+w`3@Q?}y?**b5qQ-d`#5@Cng)rwe!KK@l1%LiDN>nOqd)&1tV3~5k_yG?eN(Ucj95F646k(KvWO09t` zC9X95Af8S9)$NaVJXdnu$aOLaTe7cA_4Ei8W^`i%e80KU-}F+|?#a6yKP0#a?1iE; z^#EE$7u*a+EPNJw?na?qsRe#$?E?z)s;6A>GjxoXSF#l9dx)sYX0{#GWMkF#?!Y*I z5XMfD=EV-qi7yx^%f+PZIH-jat&8)@fbL-p257`jPFOjO33^vv_btYMFK{^mw58LPs}T|n(FsDc*%$CQBaO&P5{jLwIv9 zjbX3ymx{zc;@eY@2tI_hND6Jy74S4L_C1?1{gL^2qUR^q>C1&e z!kl4ZUE;Dv>+wA6QQ29DWung#t$;eUqImZS%mjP*2oM+BLuEqStGAm9m&At6B8|t4 z^jk$?S-&m(QpBo*XOzqmw!@zBn%+*c%fl%5n00{>H)AcdMBN)=?a8?k$%;5K~@ zR}mTg8j5?>U6{MLIH-iB3{vR@K&^1hvpyz+jB%?W4G@sBRUO3U5pVwY`?v@q z;EY1?+~w8?7?qEUK;SbIEKWBdlAs})0y~hl!eQ0;40?zZjzDG>24a*^`N^l<0tJQ- zVY#JM{rU7bt0=_*{e{8|p}njxmwmfkR3k!^ih{d?>9$h?@v;joa3At{^B@-8{0-j!gdgH_o72BLAf+szz?f+ z5t!ow7Z5_*QW0ORXhKL5%5gr9VF4`FWD8zT_+Aq;@>x<_pbj0BUSi83jy?^ech=5i zY`2A`w}@Ms&3@#Lr>BUOnAUQgZ(Z?78q*`&wHvspGjKFWZ`^`&r%C05`5Llil?QQm z8!6bEob2Wy6I7-%WwXIpNi&MH-vXi;2?qw3404p4ovbFutOaK$35e!C+7q*;uC!+A zXr>4TSFgX%(|c}ww^ixu?Zvgz6YUv}wiy2rZU4#s2)LPrHHZkqX^m6lHz%=r7RIp5%E?6pd_eD7oe z0oYK>@~0~M93k2|0$HwfjzXpNy@g*}RF9AjdtM9S=5Q?V9{-AonJFjaV5$Hk zwa-tk(knL|wXbRQvz=~hfiIzePwuRh1q&+W{{vHMW`QM`pEKO2GfDJJL3q+YH9n^6 z2(ZINaZ$xD&yA5v)!`IPb&g~D@5mnA~m_j1oyYq!w1Ge%4Lk`Ub>?pEr=zYvVUVVoya96tziC3iAM-X>mp%(kGo4BC|`u zws`WVlh55ArZbnn0wrDaz^imWnnUt^-Q#ffXk*L=$6&Y{MCemu@hp7SP0@1VR&^>ut4H?>L*myC0Z z4E|g;Mf{Qo4~kHkN;6ideok`n~0&!qBl#wA{yxhOMP=~haN}`Y6;<4q=Idp8`vtRrgVwnz{s6& z)t?=jiTfHOHlPK4z25x|G!!(Ql&>-K=uYs)Rks8pRY<8C(ho;TPnuJ0>ZTn^(!}WW z{dJ~w+5wp)!upo_N2I3Jd1?chZo7rV(K8mcu<_WzsZ1h$_~X#J*TGa8!EdKe+QL8` zswFeQlqRnRdgSyKZWpi8ye(h+1BTk(=DYv!XKccg7Pi8Q&hWi05j+EV<^w4zla9K= zx0cz+m__}TT7lrPu7PDPAVjZCXHWhe$1Rg9rjHN{&!$)Ghxn-G0KwTfV5Y^i5Fz=n z7g{Bz149A9v6oRqc}hr(wA=^k@99+25MSl>2;``taTcEo;TZP$F>)ZnvCtnt28au> zFwuIWMcVuP>Eq$v)g!Hpx*efLqX4k^CtlgC-4xxY=YuAw!2yUqE>J^>QJOKcIbn>z zq^QvGLKdm@v)F<5n(MH|8@-su;KM zcU{}7S~MaMHQaD!4H5R#v2+ipoPS{6qdsYG$^VuQpfKUn8ZC)CZIQ{PV5?!~s(v=pBCJ(*PF??{S4M z+yN-I&0TeG6<8avIl#AL;(&y!b&k|-;em*-^yE6%#h(pCggC8f*a%WO= zBU4)dXlqVQZT*(FAp|{rD}Z>~IQfbs5d+h!omvpW`56O;;j`~eP-OM59Ij6|;uGx`kOnLaiH*=TEf!H5`qe1=R4l*l|X!kCUnrV3%+( zaBv$=M_nc68J23>H41O)@$?8^UnIrl(?kbf3(WgeRekAsXo87e#`a^;lGgZ1PDoUz za+zoSx!}o@Y1Jb70fNu6PQK$iw-IJXw;xbovFrxXq~Vv5?s09WLA%H;({*lhPyB-8 zX;s33hXg^@^`slqnU=(Q@8K@8`EOKz%GFV{;8g9UW6zYO^xs32NuXZ`ZZLo6H ze*!@?UuX1n7}WmOf#A+-jNTf`5*9FLTK!*@|6Wmpu_^}7nX(zW-34JJ!x$y~?zIW; z%{sTWRY_++Y3DUQR_7Wq#%Z)0HbVV*;cho-E3tq2ONi;79eu57LL^XGmNYKL<0bm; zcEX?paqe@H=%#2y1-GHxy~e+~d&d6*;6IS~PK3$$m#yKi4FGGmF($96TFO2S!Ekry zul&*(0353{vX!eKij~8=QNoJ^F#oHmPYTLohDIo6oJHtIf5Hvrc zsySmXAk+VKW?Xh|drP8HYgm({TqIJdyX-yAolp2L-%s12;rvNCVlmRQ+W-bJ9?FDZ zh1IR?`a6-6LMfL4_%*qQea!iF0Os?!8sJY$0l!ry?Sr476(~&lOc>bsV1IT* zD!0~F;v<$idOsC4L$ye&I3m8Bzdj{9+|yQ6)t1qQB`zWaSV-~8$K_UP?JXW7m8;KC` zn=ivcjp)#-SXOQ4#XXI;&n9#AQ)v;JCNbr-i4$)2cwL{`PB5jW5@_O zxmxzZsQdm}o_MxUt3#B@`Ea-{y%5xoqqloZ4kEqG$^Zlyz(8WgU3JbdacZ7Jm1J$` z@Yt3%Lf}Gl33&mgw(x+~EJPHOD~s46=|zLtqm{gjP3RClZ)}$1j)=RWxO2;`$L%cS zp+z&?NoAVXQpP%V?36Az(F1xkV!!A4w{<2?f4Ca*dDm3%a)Pvf1%*pTh8fM)g4aRv zhL;~}elTGcL}X@!K_VsO6t6ho+q$APYe1znT#3k9BWwVSHmUI+?TJcCqE<9;nBG8h zN$7egbW&;HeFTS@DmcNR=+j%}ITQ;29F(6mw44Ies&~ADvJ&ap0UJZT7tzo`ANIYf ze{+2Anu9GD=p97yObmx@JM48J8ml()?ZDqh9+=BIuopoO3TyfKhewsZv63&I z(i|kmb8J?NO>q3;zkS;|h0Ve38@BkEiiFD37ODFw_j;j^3$asA z!b|t&y|`T{oltPQJogOhu<2Iobd7aLT+`(6vJS@|syy1-SEy>gdB%2Dhyx(yfkp1i zSTUKFCIUaWa?nhLOF4K%@n!eoR~=oZIOs;jlgoJKe(K0IvxLawdtP5GrUP*#l{@K$ z&_c-{PW-zV{!%QqIJ=V*{`a3jk?^51VS=Lk4zkwtS}tgFEs!2~^|O*wqpd9ZWa8G_ z)Lo+U3Qe6yJB)y5xSMN+MuFT|?CCuLmpY;v;4z5KDN3ksoY4H1;9_c!2p{$9#W_A^ zXDgUt>Rw;354R$Ti5C1NiMn_h)`VuE`ornLFR5F`VQE9V5V34)7qVUwh@~fvr6Q+g zq0g5DVY#%SE`e$DhEGAQljP^vbN3%8D)bW(d&W_ek3nwMJvUitG>R$=X#&$|aiaw?})6BNczAa~OSGXcty_WV;bjQl~^|8X^` zzZv7~oaVebPFyxH(X<2IQ0z8afSBkQsz2_r9(Fv5x5&^{iKSr^`tFAy_XLQXgV`>7 zLTT@7+N>T$$)4KmVRNTd^Hl<-=sL9aKQpIIhA}}&3ViyN@M7$$4Y2?{38a-1Uqo(p7U6j;j+YZig}{ho7Qz zP%AnU5C*lb;s>AkD7Iv-{w=WEi&%@-N}sbze^pJ?#ELjd{+1NC>dXN~X8>6A&_ zTSe)B&&c4ln5=Pe{{!AB!bhhM9@)X@abblOQ$wcrAq!u4$bKI&mRhzEEH~VnB5=Tk zsn~OvK2UTv7RiUZ`b6U!{aBmcwU)t?H7Bi;#vsPdN15RfPY`dgy;yPT{15P|Z#L|a zvC*?*Jvl9!WF8nRQ{WgjfgWa7w>jfoA7HKrBR}6tJcCM&(p%2g7`l`$t_zU2Z;NWT zy9Dj2jpO)UV|R*i>ui)qop9IL{MKg1basNm{)%-|CqfX})DE7pRP$x(4m5?zno)*gPo*&_4kJot6Z7PiA4__}# zPIaKJp7{UKbNz1DTjFrbNY2MwbJcWY&16OjJ8fFQ9LkdKnDsybo%blC`(lZ>D(^Re zbt7#D7r!mpPl}2{ACuz;jyC-+@5WF*_yxe@rMD|7YOs0Z2@4bjw4#tzt#7Q=4eh;C zSx}At$iE4Org#v8Vlu5)N(fmNkpzUf=kVpc@v^)rIkkJ&6clYzJD?PODoO^R<(;Z% z0rJG)7;sK5kz;-Ei%*_lv-dna`oL84C=p~yh}#c6mH4@eEC#y6EA~R1T$rH#%aj-< z+-`ed>KR~j=zpO~g3fIbOxdP2@&Bw<2QWiN0$&sk@)nevaKko_kQhzy|3n> zf`|ji4r75!L+6Mh2FaJ66)@@YYoLfaoixSe? zI5#n4*FQUPIV-%g4DxscVF89^^2zr+B|C`|)*-m@x-rlkI^^%8FY$e^-s7Qf@`7X@ zt}}eO>AlTcuezx7h^2qzp0mD+e%9+VayEj>iKtM-bs=ohX;B8WJN*BBIj>PQ59(!4 z3UPNN!Vim&f4*v2(LC_J?x|49LO#0c73hREl^2w%w48Qg#jQN?HY=juc8lNIBZ~6A z3!AS=460TGIMMowH=%mnWCmTZRiPsVLaK+~uX`92>vJhD8yB{bO+EdFh(!%dcWpO#cYliSZ3*^B4+ zN?J;JuUrvY1p4%hgW#{AeiB(uAfn?$eV)Xk!&H5m;98W+b z8@b!2x@MnvUwuzhRrY~Rce|X2NP|PHz%O65wHd6yI~R@y&hsX{JJlZ*PFOLkzQF)i zjl+_DWH%grbBC_=flq4JXb{DmZuEl}Q>fkK!{z3^*e`DSU-~CSIJyG5r(NG_ zV#uDGDN!Byez=SiL8EW#f}!V>3vs7Kx@1!T4im!(xfUZD@38agH|u8W3V(rS@Z|jn zGr6Huzns)r?p?~xCL!S3%>d)EsouahP%A1rgSVS)1Z%d+roQgg!ey%<-Buu=PVo2G z8iF1>YFxF@fGc8P##-6eGL6|Ec5!DOIedD)hdV2Y#YX)Ej%kQUo=?*psMcG$MNrD$ z7-IKWik?r}?8>it&CK2aMB{xv^||VuDh`|UkLN{>0^+winK7M-`d_nrHGpg>P4R=( z9{!vHAil#~?nzw&xEsmO#S1W%VknMXN(WUEjT(iJbXlk$gRRyFbL5&7-$tF8lbzUX z3|X&r7~HmubOfBO{NZR&>6jDDm^}TbR8x!Z07huxAZZwOP7R*2JV^HW0T58A%RduJ zCprKYn4bi36XZSOpEQs@y-d5dAHpO)G%#wxhBI_~oyt0OoiIiD3dn;a%bcy!fXr>w zr72aekgI!nUc3>rC8M0PQPw@nv9)~i?wmr&ds2qPBz$|Vj4e9o9@hZ4ge^DQ9mmok z_=)M2^L*Ti1xw&ALbGg$>vp}`%D<)${uANXPu8VTuE2+;)SlP{PtV0H*kw`AeG|5*t_3A}V27hX;J%HS;@uI+=`}ZQG!XbJN+7kdW7=d6I*AtS+jCFpt}6Z!!uVTfv2KDZjG>M2e@AOO|vZd;ELOyg(G z$8SeA>YlY>z!=aK_A3t^+9r8#Ib=p?R(w?bV3GUPyxiJsGmjbWr5Y%t?~OzB>Fan9 z2xk2{Ki`AK%xtc1)i+M~QZ?OHp^AU@sb;`MZd4i8uGg_lIlTuvl%Lu-2xq8b?{DVw z)?A<}CZ6O`92>Ta?a>#3A$C~pP<@dW;$K^$N!#Gk3Tb**-dFOrG`j@a6K}V7)b6Ne zF9h)g&p(dJ8Qv`zOO4r;YvJn?4-uxn4d>``2-AD4_QmveKw>g^2OOIQ0Q5kQgvi$O zvA6p<-zV`fqT(Qltg{{1Jr(4kf>6dkHM2I{hY@`v740*_8P5YGq@RU6hujN>77uD1oQZK3IhdPTLr&wmGW zIpdUPT4YcvcVHb&jCwZRQxT717-r^4#to+V8haCOHe=J)ge&?mVEFl2h={43!I^t} zA47ggj>1h^s@BUC@A3n5tkjd)#bKa*PBesmXpnnKf~7sRMD<~gYxiW?0VM$y#T+@L zj!XOI`*OKlO{UZIF_lEAO!}BaY~|x@o332DvRh}THOmb@K1vR*?PQ`OKy&_?!+O__ zBT)5kCm`z7tQuaBN_p7jJD4W2mI|+N8uUzGxpA|`flN^|b;G;1kf{UlFWZO9O&vB5 zuBX+%yg~D_>EyT}qAHvgJ3pdHArH^8XdSB~Gk)}@$D%8@Ve@u|jh8R3h7h}+3SpgM{9&tZBy6BJ-B~~-prJjq^gVop1 zLa3jjT&&36c7oFx>8IPc62ne<1vpq!?k!?=dBd{+JijclZjECa-aV4CCAz10FR}}7 z*OBq`1?tYoBh?UQ;%XbS09tLQD6Y@x4@=H6E_0edc*I;L+xVu?EJhGlEyZKmC+3D<0(@T;CU_)b=W5Rt4R>8f7yoL4;)tXF zgMQH{OF+TBUoC@J!4cc@Gw&2t@NT2zNyPu+B`j9nUg)QCYq?n-LiqKcj=7cdYNM<0 z#hFrVtY98w&(mEsxW!aPSQ*m`5^0k=vGow(X)6|E;Z{N(|JP-S4?8N=W94kGC>$7X zT1%VL-muZ=y?d^2gifz{$m*|DD<#Xe7d|$b41Qw~Z>BNoy5EPlUshcO_{n3y&A4mg z^p0rM#yCJ(`TpH$C-Y8CryKSO{#{t-|a0*Tt3O!s~tWvI&kmE<#85)b_RtIAN=ay)2LDTa|m`4l#Y8qTg)+gXA&CK%kF`MVgB=hwu=aU|;qnQHF zpx5ibIieNFBJsOFCaO&dDd zBp-q?4|8QQzbv_m5B3uF5e=PXNu@Zuw-{JcAxp1bYZc9#2E3gPxM*~gFwy7)H1y{2 z^p8(db4JG)_~MdZGjJiX@ss^RyS> zIYnR+oq)KfC4fME>{~c+G9H=wD0=eNb*@WPREK&Z9_Y>i@(e9_OwxSeLqw|}5`hy) zME;MdYLC5T%xip=Jw~H@KL+creK~7qTVrf{d}$PE-q4$>kY&=b+*v7Gr%wj~<@{B5 zC%LYa#RxL?<47>98eQ9CpW!%=%>?)Qvy%K@DbOpyw32g(r$2n7kmvDYZLNtM+-sQl&LC*Qq^^B!lRo62|5u;HL{CN`+T|8xhw$a;jKxyls z|B^l!$8C|2IHC<1RtnudVUvGPl_p^i$AEIEUXzNpgEsADlx5WhCV7?%4{ufhFa@k@ zN$@~jYo^*@kl|L4gstr#kPGk?7Qp`Zyk>PEj3tl1Qq>AjRXq z)aJDh>!PH;J6w@YZv3$zCNP4B2+(EpFY2auV|YsSWf`iyY`S{FC`lZ=QL#^^J7H#5 zk_$kHue6KKosizB@vTY&VpSSHwK7F~)qL~iDK(KeJAh@3Vqz+nX`@f~c%5^J1n*d- z`wOggdh3bF=hPWGl>t_2_I&sZH3*v#<)LO0OGo-UxB|WQ5%^^dl|!`vv4hr`p(71q zXy|;|vzsuqleIS?y;ZTDK#Bxthw`$`$p7a2Wgf@Ck|&uhVdBhC)V8Y7aR50$#=m(i zLWu#c%2af3Jx_SxM_+6k0_p~_8ZRHRBSiUa+-_Lg$hVh!^b{oS68kr(Zz@mI4d%ku zZxWiiw7$dxQ4Dy9n{p<3r80Z=pfuA>ltuk!?f1s&u`} zgi#SI3Su`2IRZ?qoM>bE2g(u0>ucJWx29bjuYKAxF6v-#N{C#34x@ac%T@_7yXIX; zT6+C}a3SO0wYj=!*sDHxWfU>j8$#wR+*Ai!>Y+Jij6VdAXfXk>a3BMq^vNRJ&5cqN zCUD|oMoIhXAK+YENV01oo9x5rAttfSpnjkHD8-sn6c^m>zc*x`Tr<-g0|k&^hftBM>k zmo}C<758`9-)dwW&O0WpxdyA2r`}*7F*IxAp69#l+O>K+L*QWZzxaB?AkJD~%vk@; z);U+)hA5OHKSX;fTvMh#l+x(%@GL}B&(q|F7Y`>Dze3Gu1YY|}HO|!HnKHoncZ9@l zar3N)ElOyMDwWsGO20ytDQQ&#eS&vXyf1iCH_WH+^(8u2QP+DWPPsACm&YW{MpLzE zO*1EeVTE=!t2jxdo!Xz_4Qx-cbne3%#h`!&<7E)3T`!B&jdL1TLoBobTbnAU&i`T3 z3h6%P9`pGdw>*u2YnZEsXWWbK!T#rfe7~gGJ|6QJfhY8?+x5Y1Xm2Gx^iE%rwpzeUKLW7d3yl^6@|$owlMQH}Z=`Kl7a*v<|%__i*ljFawF zA5V^i2u~Et=r7faRXo#b`dD8YYQ*i`T$SC(3>F0v2 z#Afe?;ZIFkaQ$U2HR}UT)cP~#;0?D=aXU&i+f5VxxP_F7IG z9r{QzfI0P`=eOgY@j7BO18+ru?b^rA!vGHe!2=6*0kCZ$T5y?+=+#oo0xFuKSEL15 zTeQH2^8seN$P|&J&J;H8Vy;7=G=34q!2e(&sh|8hddY;3jfqW|1QR^F)q%NoVe z$A^mDyDFFsXCJMg18yJ^6n2;Xh!c94KOtx;-|oE!(cgscOKr|UgkBVdg}#KdqhYC^ z+TsS2;80@XJ$EM|jOAQ)(44Hd4ATn`T|if$dP^6yL5dd8j!9n=A@S5WB@36Kh*voU z72ze7{=$XZ3cyeVmPJ10COL9Z!DAQUPaFNR@K<7d?z4nT1p`L-})DafHlzekAiRr%}cCCGbXE-x9`~T`#$!_;H&`LaENioPGb zhTxN+cR=8?K^5&73Xw);Rz~|OWG?DdJ0+tE@M-w)SJ9rv`ViRPXBM zkrf)APgOQVWD=I;iV9VI$6Aiyzh7Ao$@pz^i_nor zTRDaJNZ@OioGzTp`#xiZzd=USA79KfjnEZ5a4Zg2$(MxMSqvfo{h@!R9axqD)nVjD zj`$RN1Qhvm3_@aDLEzx=OCrO z!Hm5LP?m^++;6!*r9NTvU`o$cVr6V3u;yPT0Kg4YqD#E=_5Oo)vwWHc&$X6%6Si#G z(^RV4m`Eh)u!UEpNLzH_@#8(nd!T0Q+O4?EN#%;y-uI>^mbuAgH8$K_poE{QyZjSG zZ23Q6DBNP1diIXTC7M{SXJhuP#ixL?{v9+@pUC_&QyATFyaab*-MpZp`f%;_;maj8 z)@o>JsCa0CacdRf-dj1D{r3Yi4Qw<)svv@hJ)7K*V5<_{O$)Yvul|#>!$z{fh6z<1ro8rzHTV68J+NCgYr1>N@u(7hQ+7)HYuF<4lQYT=F`IMC*S-wzLS-&! zwgq|FBoR){TTcA-*3yD9FdJ$b^9GIN{`h{MXDbH1S(KmQS~zPPlSCJZTg3uC1L3XR5tsz@oA$ z$du{!3+SFobw;$QA@OVeM7Yrfa+lBwwcMwM*D zRY_N@72%7+@_%F(?qcbP*VSS%+2ZS}88EaA>}p}C(A2%iEm?Mze6x~Sk)b?PjD8%{ z=G}Ysx>N{m4Z9T=W6dwq1O0&G(;NW@=+xrU}RAU zyHS5bP)Qd(bMp$;>*Jhl!wc#PAkSaU%WD~Oizx=<;U!`D-kX$_5~j;0cFCL%F#_oy z6H&GrJmdSHL5QtIaSY~d-zZcxl4O4GNGFV#bpmhcS5uRZQYe6a)ZDsC| zbC$23cvk}aAa_rOqeXEK6vI0WH*YTqa|Tv ziw2UGFI;t9cfG2v5jd94Ou77z1MUE)nyU8OtE+QWh2JqOrJLggB_bwqMRInyH>zQI zJ{+4<4F)8Bt^h)m+6e+lLmJ8j^u@vt8QIQ1B;UwXBS0UhL&+dLMj=8K;iOzep7d)Xg;h>~0%TN|>Uk#v--pw z@-)4JqAM3u9F;{$C6 z7Ndo&qbWa$uDmX0T<3`7UR&j?JE3k!lcl@~U3zB$^nrX<+4n{i`CmiaFj4O0^$(e*Am_1NxccG`6H63;@QfAZe~=3U1uj6Ic#2rEt^i_%_9o7fiA zwYx8qlNM<=_H@!GeX@!frJ1G1s!SzGO%IbM*W>}(kPRfFr1x~x902zolbcL2MVo2E z--(kh!>3F7Gj}}G6UK-)K4WUQF>~d`r10c|uJOC3mn^y!Me1D+6Uc$z9W2w)&{#wmqjt-F;@e1xf_lT-DE)L zY?SHCdaT?oyB03Z{&(-+vuy_kecW7G<`7EZQhWmBNPcj%sba%Xmrqa`14M z+Uv4XtfS!%gg||!!uL4Zd?+16NlVr2AI^FylAo1M}DNogm4saSiDSo!7 zw9W~|+J)`7W>{>BZbnSwfN{ror+vjB)6^sfQzsHbzsl7UZQrZmdrr)oI9!KXzvKf- zR8&?~?@C+mJYFk&!Hw(~yZ#blWQW5xA#X!|b1KRfm1DO)w7!?=W_=a$C}2SfNBXpX zn&t~dGA1a1Y~5^lhlNJQ`0^&p1k+vrc)}d8hqci4^2#r$mvchnT*e$VQ(0>mWabGJ z`&$9Ff-j>V!y)mKMl7fmJb*zzXR9I3pZ80@D40UxWs>%g7SF z)i~fnHV5C~IAl{WRmns6$$0@@Fbb1R!oKS=d?X<9qg;$3^lGz?u}pN-OCh2Fs%X(7 znCQM{aKr|#MmBmC*7o)YP1m$*Zk;+7$d3j|0Muk9t)ODLu_)~Pq2u!C@iEaSk=z`S zm0mki+UGGRO^JkqCZ%CW8k4Uj(;{8>H8QTk8nvzR`D0Q|$|4ssMti>(VHfD5XSyO4 z(BL|Pt|SGUYq9z89W`_xb4AgF{t~}O8GuSkO^3vuim~@!(B;!zs|2sqbaMUZR~fQ} z(_cm{hCUmaz`S)>$w9DT@~$jOz2PAYb)uou;F**9+*M9T#_LCUxQ`jG11HY>k0^-Y zxdz>;shq&n6eyBq-mN;J@nB{NLb>)T+L*NamGv>1>KKOcU;k-p$Vs12Jn76U?nqnT z5>&pSg(`Xm*k0;hFf?XJPt?U$HZt(k?z(7D|1TzbDx6kWQ`wx2uKFt)#P>PG2i z2T1BEkQ9Iu1RKP&*+j9Dlg8Q{5vOSb0A_9m*<-}_?*v= z*I~PN!#3_HrN)Ej9?<>THuyazsCV;0YATlIL>T}O zn_@aJi#I3c>}WDK7%2108jf<0d~WXgv9U4Ng#y)I{fBC`e)C0``JvqK?@b0I1J0@P zB&i#v7VF~6@qsMJ4BU^TjaK4v{Yb_obM`9+F>cS0RKI0al5fM>u~D5Y@5B~@7tuU0 z>xnS^w#dX?P&bUqcXdgSgDr3o6`LRdC5o#D3*RgTsD=v>O!#30AU<|PuEE1}juj{V z*gQxPVlW1vQj)pMs^DCihY~*ja=fuQj4n|pwa-6e-e9RP*XX~aP4B_gV(S>Mfu8`y zT8>F4XTTHO96|LqD2Zh0juttSrtBuYW=T{{sH++(l~a=^^&mk*o*L+&Ce$6R5zRE5 zQCIGqHBRorj;fd{^_PFf9c4F`eP^IBZFsn6I(u+J0G#Fe2$#SxAj6r(pLj&nr_X$~ zv*>?m;n)vf$+~TE!%(Ah8NiuaIbJ2{wR=Mw)R8oE8_-W(#QWI7Qns^eD-OG0>K#vE zJh0?_gj!+qyAO3tb!ZE56l!*cimEPa=A@VVjM=s|wNlB|v)kvefZvqdC2`OhFNUln zbwNxglE!c9Hw*TRCYbPqcO%R2ZpFFs*M`#y9vUf)ST7mIoFyEu6Z!;2VIlSLgkr&` zfqiP!@(1!yD$>cDQmfr2#+a|$-ol4coKW6}wkR|YcR9xa1J1~uxum09#p(|OIxq`0$OVLpxlzv}pn2es zR6lo3NX&Js?(!WG3~1@J2yAb;3&;m!ce$)nBG_)2iCq&Frzn$p#|+#PjiqaH3V5sszT_>G=DeU0^{EEi%g}-9j;~eRV$mFH<_Q` z_cOgg^k6)fh6VU*qp+Un@EohwA%rL#@kd@uDG0{N1lwu_Xjw=g`0rU`B>2`6JpYYO zBMTiwe%l-661knAo->c9ZiIxK-dxp&JJ)?V!2r)-y0+(#3dT||j3ZQg$XNQ8E#%!o z+X#YR@1d}7#4%FLvQZalZvts>pRdMt*u@PCy2MjDOGe+2JKoJ283f<;2+n>y|NUvDlWtSpW%ZoyQOm+Sr#>cAl z#y&KDV_ER3`O=QR&UZ(hDtVj3vx6=2S%esE|D#RLCi@@H@wB#{=e}!*y!1as!8G@r zTR9~)sYZ|<_j`Z-FT8q7Bw>*PO)!p;HOToDdE5)&Ii1(fHZKri^M5Gu{Zdo>!on8a zLfFeA=3|BG@L(3B1UK*YrHFrCHwhXAN@?1$a9Cx-1wlvb=HWN9zcvqvlrKF0lOA`T zr4Q1_2H^3#M%}AH9r@}Lb`N7u>_2AiS<0%Kb?=Ag(xBwG?RKf|<@{F1j(n^&Add5k zn(_#;Uk9wi6~tHprQ%JgEH!#-iL`fHMVRC?kA0H#x=`6Uz`c@uYt$eWcNoqWRB^OD zFHI2&YJdZnMujnbZsPEe3>G{E4c>t(xEG0qinc7w7WHOdqQ>ga$=0 z7sK%x)^(y2E*s216^?m=CYXSLz*#=qqPh`!(m3@+DczfDP}eRKc?8fGtf9t)HgzX|C{=+wQs*$ZV)()xJQUT`D` zSpl%(Gm?95`GlPKmBkW%xRxmAdz4W29&idu=A@bAV(3!x?Djz7zAc542;-*PGErDq znU}tBV18=W_L)s_Ah%ApAj^-)0eivV~) z{X&5opeeZOzIxnZwW7YN$--2O=-rhzP==<41q+9qz=Dq>q8X#bJa3^BXu?1w^<96w zNl=6+X-ggOIHoNgKr}+v(P9)XLUG6o9WxFn({Tz)gJfklEYulu*UU zL)+q#VB{@AI)WK^VVgZtLG8m!BQ@Fe5s^%c6445+T)<^RK;XXl&iHB9u-3%r#Sk^+ zZuB8>K=R@Fe`H8It(QCkm-Lj-;=hDfp1%kiF&zD2h+E@$_ZWMaSKG$OQGjg{eSwY6 zt7pBzLjNfeA`;#2i9?P+(VAln|j`D?||BTjL zT>+s?{lpxD~m2Yn>z5ar~TkU%D`-F=_ zJeyI6Q0H5n}HvErV2n-Kvy-mM6;67A*x>7nx|K&{^+!XN90`3R4$7kgAHOG5@ zw_x>a>v8aN#XpNF!tPZ*S#E8-ScU#WZ54v4k_NOpHYpiKLf^>&SEhEVlhXV{+khoW zb8(KyWg9n7u9PV3e+JfrZ4iCKNR0HdMi`y(y8FN%hbVzVzZboY3PJ1HA9a9FX6xoh z_^C>CB#z-43}}E(qU{%ZAR4broh4_eA?C?p<}TgIKh^r2jiQo2TY7>NL5z`3h&x=C zd_gkhkJonsz4$3GSaRzw=ECc{8R-(@50`YaMC|9czf{owjxHu7?Ya!?-oe=5Wspyj zQv_9e_q?$z&X6D|ndDO9*Bx!HkUFLXlM9KO{1Air6^&wbSOe%AaoCyZz0@~npi5|JNPUL zi=SQWrEPmuc-bb;YKm%Bed2o&Bc{0(k$fj@_Rcej$(bt88twpX`G1m2-osyyouet; zfkM{68?}l~)@AfY25FOPQ8vVYC^QhLm)h}Gh)L~bJLju)GPGLi_vA)CI*M&p=+1|!U{mkEZhfOk_wDVr zQ9G9TkiTq3?|f7AvMNU+;axXvoJjq7cd-f49;3cOa;CeA?I@ySrtT_ByY3$`@Xr*8 zBUKHiW>m~2%AsB3lrDcN{qJ&r-jsk${ahYEnJywmin6ghZ9?*hs@uvj*fTV z+Jc!=Xb^IcFL={{Y!rhdOJ>$6ei7^rqDJM#xp2f1R(daXv{8l?WB3xNm~K7FoqOnB z0A-p~z5Za~BU0ZZUUFDA@|` zb3-*Lc-~Gf4@ID@t@QZGl_;+sjEg4|Vo8$ED0C92S?;lGdJ8Nq}; zCc#NVo#6Stv0ZFr+Z(dhh@-7hrs5H`{2&$=RHR;jD&F#^^>2rtWGJPlZ4v zw%=v=Y*#M2iR7ceduS39vN6O;Uq~6kxET!C2?0%q(XlQF-nDj0C9$b-WfwiR z!C=%8*>=oss`_2HR*EJCY}IAta`AR_2&8}iudC5oHUKHbnknRTNt$q!sWjcJq+eGhNHX^3b9|$r9jX)k+!FQl&R`!7CaP zkFJbGp&4MQDB}Q9MIF3)GYQ|m!1P;{3Vsq$9!K{=tZx)+3&~d(d{Ve<>xr{_XV(4( z(g%#f?SVLX=bQ&fwdxQ-?xX~scbEeDQ9?jWjfh5Gk zm(6ozj5l_xm)k=rm(UH&HQ698eI*hoX9L#mh_x_D%I~xX!80PiG_V5&nXt& ze=lEgMg;fDoc6DS(~14cwJP4l;|<9rmAK{BY2|ZD5$w35D&M@B1U_Gzp%3WEP$1aF zaOpnbhE2)_%m|hlNDU>1$Y-czykXQuw&5c(fT+z4cac^yzzS38s23=xx72^Re~AU7 zmG=P!eKmpWkUq%VVJ3ubfZWifZs|!YGeKH$SG!l}pX|^Xh;DoN6|I5l#WzLvece`I zh+BoIqEr)V>BRkUoFcK}S5q2GkC+K88&URwk8J!*s2Rg`BJdJbCRidhep{0`m8j`m z!q^>gy=81vNAgR!j*H=#lgGK5__j_m|Ijt0bQmP+Ojfk4BOPC#u!EFobd)REBw37* zKlpgE2UI~`-(|XgKT$2{;7-s!^i!N%|FJk1)=(G^Hkvwk)YV2LwxBE_9it#zksmdw zHy_`}Z#he4MTpF;528iGEl_N;U@-}^P#v*jFIF?TWy!hP86)u^S;eeHRS;C5G_g5 zIyHJtyz(P_f9HV@k%Per(QK6mFtlx%X;{E&hV%zLdHQdCpS!C*OqMFQoh}+!aiAsy zejwtH&U4QB&kSOfBwF^<7XF4u+tM^c87PxJsB2bPEsVVnE$O=U+!P{hznh9oV`U1| zNx4b3aN0RqZ6uU#LkN`KFJ!FH)4C9jyVF=Hp^jU^`G;H*ehI$i^kW9hy{x^h-ZvZf zF=DYCsQc;1Pm4vo_(btXA3L{tU6&PF*D1^Q%8SoKZ4yUC;g^iWwvLhfI3xKqpgb51 zA^4{oK-pko)Xh!8@+H#@H_uiSM>T;A@r_0YdbPdHB#pmiU>I9&aF{F7<^=x&K866D z;i+xa;OH4b!T~u(6(+4&I zE_B!@{>oSm;X7@YQCqtD1(NA>_oh-_FkQB0vjQ00*iokKK(>1i7Z8mb86bs#8y4}<=j%D@LGD2>k+ZCY?vifhm6NgOkj^e?S`(;l>135} zdTj6O%$KAD4!8?!IwcWu*Gg&e<(<81I_)MuR2i&#E35f49g{$3y6pa^kqfNHFrEM6 zs)(#?qmQ~uueOPP8{SG?@+gWD&aZ!bXDXPU6=1j==d_|FV&|W(C((GecG;keKo2;ui5KoTDVY3cz-}-SQRC( z4;4KCezC!Z$UoLGWtX=8ATfdH=))ueMd&EX zS1z7abGulabJmP0!@uC69GwI84SeISNcaa$qQQe@xW9r7nP2Ce?FAsN%34b)6JF6frp|E5OmwTW1$DmYu9V6aP|RY^Jvfh>Z0lW@ zOuY=DGNf>qZ`4qRsX=vNN@(c*GG9Ba3D8zQY{QF4o_?oXpH@c5Bz)Jhl+RnAAeyRb z>bP+`dE2wTlg4j8uByh|J5t0?tm}pzcl?zHXiZ0K+^|}NP^v_8g+etQu?O>e)8}AE z1mGL)=!)1&EDk_Bl_Sll=)1oREb)6pM%5+11y}ymi+#TNwV`sSrQ88up#uLEbVcT6 z#CT=WFOn|;040oMc5Mm-g%|ya+uvU+z0I&##d^8mrE(v9*(_6CDlgOy|67rOF8)g) zY$YtaloRm6VH*3@!j(YI^)Hjmc1oFqT{xE+E2uINCP{+1TiQ3tH_sCpX z5!3@O_Q!yp(2~|C-ql}i_mofCZ--%aF`yn z@0MjB+Gap{zU@6%`7`VI@Jx%f!sVbjJW0#?x6an%3pZeHT06OIytvO%eS6;ekxpvZ z4-56nUs5R&&c6C=LOo<&3i9w5&6n+=BPU9lv;?CDIhd(#s`^MCj!eykhvQ%h*hykc za;ZgK8sHBSkCfHUYvOyAxOTVd;0(XIt|0-|xsLQu4hYdr>y07QFXC@njUBn+?)Qr> znki9xngxoV1O-NJ3wMmHvRjJVYE)8yXfj66R0g72d#`8_-*dLK#vI^oi@ZXUT!=3p zL+NIL+=D-#%oy3$W!7MhAoKUNBiL^P>K>_&6I<7tJlNO)>%X|}_gdGmHFT9{l|nGD z<+^hpEJ-2`scZJ(mX-^`^BU%->cUhtDne<$Nlz-8;y9uhqS(rjAvmIMUzrN3h-vQS^Ki_Sq%?%)Mib64yJ-8bQ z^LN@T&}gD$r8MvV>o5&qsgN`{oLkfuG)i$%AW!Gp;WR4bS;v>aPXYs1qWY#x)MHfE zwlkpdv6XjRPpt@){H4PzR3kxS*V|D?1eF*i+wW_u!z&55f-x{$wLa6!oT1A<&{Wzk zPOUs+azA$(MOz);W$H$H9LXe6a>gV8$g;T-r7qtjUQcs^N-;^u1sPvixJoTn&c>7; z?(#V_#L@mWViG`d$dtaOhzIzzrIECstb((G8?!_+t4!3}S(qne?F)X@Vo=AW(y#dGc+Lg#~%;Wt6BKFu9{2j3lc-)k+b({#a){$Hv@FXg@%BjZG!i+osPt7A0g)N1! z`5EnvoP=S)_2KGu*h7z0Cr33vG{lyo{F{-%m11z^mLQ*`mbf8otk%99l~b6_jqu); zQ58P&!N$X6D-vp&0`_s`nh3&ehTVNImq}oiDsb!BqitiZa%R8H6r2jUN=UW8k(y&* z3;%wbFDaymHRdYBQZ!m8aUm}Lns1`)M<{5LB41Pa6OVSIwhL~f@(k4>p%s==1=Nye z{jAfnmPzdI6h79GQIoafkN^E`oZtw)G`9(Jbf@AGj`Z-5x=8;FdY^qBOL@ohFEH|H zv*3W!I*wDhvNlUxgEr!7%3N~3n*%k<0nbQA<$y()u5ITw-f$lYoH}j3(;g|6RR~>N z0885Wz>Yk|g=7I(#)^AFBB%i%?Pi9 z*m7>lT@0r@%2jqqB5{6?xxZYcTOo_bO&lg6}De4Ou0x2v2?T3}`Enzj!U zum4QQ#jrk9pTaN;68G}Bk%PH$(H1^kqRSe|IyeuOAwQ8r8GdJ>tF)d3I9O85g?^|9 z0=>acT7p`DV3iC!hVbXCj88^;kU$O%{sW9VoqR4JqloRJzG`)R`y!C5J#|sjEdO_v zLWWNx9N`-34T|=sJ|NIKBYbPj^a2U{%I*SbJLwDQ;Da**-K+1}K4sGjD)K8A7ctF$ z)y(v7Hs&Sj5nqlR4FfY~&j7TvLpE?{E(Qt53A}qH-V%Azbi2b>b`tLpe+S5v7e=~ z5WnG2R83l1KKbAYs4Y=;Ra~$NyHHB4{YuMFhGD0$vT|0vY|8>#sk~XG+HmF%U#3{@ z;pQI5)Eei*4jJkm;Ycl}353Tm=2eA^I18t>LVCEK($5uDGvh-MaiMIR&4X|GlSo$p z%bQ@)zZ)TY$}MUj*Qbkum_d!q?1E4eWEuVyfRIof#;=MTFL&R}7dWj+C#TDP2gM&G zkwHQT3{6Fm*_f!WPtw8{IntA{Bgd_gVm_$(`_JW>O0iB9PI7jKZ6BiUOUt=yaAYor z45z}Q0U36m=iHj+Pe~EAbTD91XfJ2i#-Yo^JJ2OHb19(f_vVmuSgS5fL3vy^Z-`4R z29ko_bg|f%7%KoGg8Cg3mL!=!bw(zcksuASg2JJA(JbZ=WCvEB_#X2Z*qWq11G|bG z2FmgE!3b%iR_s^jm#jnbjJ<_xtU znAHlOl2_rE^7lG&ZhL&oF@-(rIw>~4`ev7_J_D%(9MapDcOi78CN|lVK+i^T8&cjrH7frTL_g)}eDF>q8f_ zz=VZrM3=50#YKd<{Yk-_@@1OEi?{!4tNe!t>nH*s%^tFt7aZ9;qT^fhpMG(sm$0r3 zmp8%gN059ZB6NkZo%wme6Y~t}zTGANIG3pvETpK=BWInr0xrAp`}dcxnW_b)aP(PS zZjY&lh4l1Qb;wMhW)dt4U7}N>o89Y2~T%%){(*Lp!54JYX0G@$R zcFeC5w`*rthww-`6AOZ=fsqF650VHft7}%9=85jKzNElzzRtPfgmmJB&ZId~Jd+Cr z*Tan`0$f#AE6REhLeYDo@z};X_ubv}edY{m9^(p zE||XBfQ7*tdQx!Zur4%`iwZ+cHvHPeFb?j5h&4H1DzOx`ChnAZz|81CvnLfMX*R4G z?gL{H_`zi7$={eOyvgDw7>Q&^Fa=OdbNSti&p65yoqW)72LUi)n7<;Whh24x1DvGEDxy$*BImv2hC@J{AZ4JW`E- z0BaeF_aOBEM-i*W%j!rNkbAxIzh$XOqxKC|iK?k{+b;|kBkvMg+_VO_dC!2cAH zoouK;<~${vP)QPyzU~KbV7+A0spN7vVW(N2QCGeL4icD1iap8&77$_Py(K9sc4`i(0V{#*v8c9kk-$H%0!|{mlDq~ix_o-f79n-%NRjwB^Ra`JAza$=gi5# zM?)-${GLj1wj?=YY1clT2OP@zA`|=ZtRJ^xfLDiwBg*(i;2RQAqTyK?FtdhuH(|rO zdgn@@M0lYG`CH(XxxwyTQ-DS0`Ke4<^@R|iXqV`9O!jD7+$*mYZX~9LE=ixRiC?n? zo2a^(X2Oh79olin-jGW}8*rt6t}g}_%Oq_crn%i(9|Q5-d%mfpFj|U%^daB=Ju}1P zSItHVIuK-Bt61leE~M^FWBSYV7MDT#*^fbM(paqp#Ng%+R~DcJW$J`oStS%XN^^y5 zdy9XC`3)#WMUT|yasF*w3?-Ovf@fc&4TSvLIJ^YOaYh(mU#5?7Y(quBe*<4y1QK^Q z47`>7cn}ZRQ7}ajD_(Y19p*Z|Cv}KGju!j{un2n4oMB;rGaMmpy$Q+qbw4CZ7N1Q% z5EAn4fC!o+kJ zvDRdXajGa!=q`Q_IWK~%Wo6mKQPo%WU7t2<_|mKbCC4Q!=(-~b1D#mMlvxe5f&9yw zig^#*y8>iGWksqGV0_`vwai^m{O>>#;2Lkho|3R?tAVGm0X2}yQ8gWx0hw>6iAD1j z+UD#^==qq^;c?zAEQa07#v02y;TSd36oVRFjFMW=jIl+CQs1)K_`AYYCBmX{ z0_$=PQ`im2w_Jq|(u)}?+GGdcslV<^>z43eTK20TrJQM*rFZ)a(^sj!k`oFbeJY6E zhy^E$OoNeSW?)$z6jEi?l?8fw7{UWUWB~pag?GcfTa~Q_8(jFw_XUvZfw3w%LoAaV z8rvyq>KNra6ONrIv-LgzLe?Rrn+uCZ#x@@1^n7mQJKoIJaiSVL}v@HFPo8u_GG?GgL+iQT%#EL z#{ZY7U7(Uzx3>5}L2vlJ67xuf&=pp?1lcKm|6HR<{=@keg-&V9p6*}03wx=U zk_K?V1AD20__K7{pSES(Lj&9=FL#P*PG;Lwo3w0VA_O<~^K%K1Un%b{DYNc+1bK^v z74Xl?!#yN;`;sqH(Lt!tK4Z)ucX7fG8+DPXCTR?mw1*8(DvAEOkBj~=DLfR@a^)@7 z9PK^l{coCz{y`ZLV7N60Ct^WhApfoHxIdUx51kA=R-vc+W%I}LLFUr%OgoKT=)Wbr zg)FZsu^AL8piMJg9I_V@f;g^ac0xF#mY6N4dFPSCFZB;J{D@2D)=nx`Jkf;jJZ<8M z*r^a6GVFkbS0297MD-)-&xRV3rhfWLRmA$-*3nFy(u`g)Dq$QFQlMY)VR{ktunVX* zI$IWb|Ee}RKoO`SMzdqBx(nlKRTniN4$fB;gR9fimYCto3jC5%zZk*(h7vEd(ms3p zxfh)QlDLFm9yOF|0AEh znU?-(L5RnEfqp3$&jT{&#;82khp%VA5|Hg=?~frm0o}6nvW=Zyouk5odCv$AoXBM- zj;o}Zpn*~o*tj^J+D&zkwa$G2^s#ih6qR}Qf<uW zE^7HQ$Bu#+{^Yk&h(6}qLX>mUI*~h4`G9?0{JS_F0d$HX*{~MS+0YiF!aOzJD<309 z+-Ai4IFKOpcjjQXJ^`BgVOjK4@cfffQ5?jO2Z)&G+s5UpQtAmPMLdm+b*T*V77)C6 zUgGCZZZTLZV*Vxto;qLp~3sKGgYrzQ{9p?)`3f-~yI=A0eKZq8K(?>6w|i$8*(K~1yK z3W)Nc%3e9cC{=Ea)3QaS{)%Ai%C~XFQE6@B+*t3Qka`hz*W0wD2gsr(12art>eWw* zOWr@YH$E8|$ii|KP!!*Bn-F`GIz;Hh&#JaNtzu;dc_{d@{%ILwmlyQOM0lI})QZD5 zC{7Zlng&=YAcmkO`e2ZFe}q)ZY#yO17bhdudFK3nk#Zv9048!EkW6&f*nFT*uy{u8 zU4{cAHn4@WsNt$G=9Nne`B6zfOJo!OM~mRmHjxie?h^uSR!z3wRu$P{r&aI%*gFj^ z_!~#ifaxdQ8!+EwPRB64%#2W)H~9Xx&N0AY(W!ql*4M=_TZ3Bb*nUcwo?~w#97JIG zDFa2SAvS8!Sj!zZ55MdgSS(pAVJrtp$&Htb$)V4UDCn~WKijjcN(u@O9!SWyTsOG! zKGWM2m7oag`|y`UCN&|8yn@iKa@nu%SGevgw#HqdONm?2Eeqo;h+}K$1@!ui!m<-S#?%kH$z=SMz^37KsA7J5{ZRfs(mx_Hb6~jh|uN+NB#BT8{h8)|AaX>~eQ6 zm%{tUfCnnDL3ev8J3?2Nt6P?yv&mM_rtB9DF!43GG$t+*mSRU>Mmg~Z9O!tdq_{2t zv&^$uHkwtS=XWi)+h6$BA@~dFD#Q+aH=n0(q{CA>HQVRGeY!x zD|%gKRIq9ipIBMDJ!v7cdrgn?UYJrc)v*QxB*}fO?=`n%O^oQ za^I zre^==Kb;p!gssN_NUokI#3opNd!&FJ-=f7jo^V%m5g-T43{UnxPoQnG9G3tRFZ#c> zl+;tLoWgtRMb02rK-6*FmcV5|cmyYbpJs`rRK~q1Fa66_7tlBtId;P7uCzAo{N z6yvBr4uf@5QsUayO{#jzH6R2l9uu^31<6s9kMYhc-nDYAKoyrd-s8_&Lp89J3-Us( zxS27B3J)Hp&W(qSEfx4_b5(rYiQZzPO3#ykN_69;o(LRT+HoJBSfs?cL0xp%S_R!c zDbZd<_m!+ups~r6H-_}8w39M%j6*~IjNkJ|ZrlW$MYQWg?%MW8gY4V~3p@IW zJs;xCsw#M|Xq<$iiTa2P(DQs3R-OSFb`uCoS*5H(Bt;E0E}GxtV9G65wec)U(@m~W z|4VTDq{Mt2V0t6j7-3m3+}3?TLlU^Mbh9?~_7E7O>D(jh1lyO@*j$Sn9NWG;UVhcj zajsQ5bGGDipH8LXPzSkRq4}=VbX!Qx4zRmxi(2wn8}>K+#*^Q zrmNhOtJI1mUPwxNlR<;(yIhJ=#dRQxXFy&y_7wRO_S0%I8J^~oF0e{s zt1R~0i08n08G*LQd2z#t&a#9sPbdY`25C-b{Ar(u6Q@iY5|DMXd5U#^LH?F82_2wY z2THyJ?U~t%K0l-<)`6-SAxr3_u<((4V%WD=^rd6=``YBIB}bisfh2F&egFt8BiHW? zpGn-$eb><%c_U>IOPg4=(;LuDnOFKiJDl!@fP78&O zh$f0NjhumWv`c_rAq(UA1YZL6=VCPf*iN)Jd{wTU0O(T&=MoL={3Z{II_5zCuXn7Y z>+F`9$x>uiHn()TK=f@zLqx)Z%_Lp9nTyOl-p|dZa4AUJrs9e^v2iOxo=Db> z_Jd58okZFY45n(jH>k!l02gpC=ta%Y;WlBJ$r7Q0rC<`S4}vZp)BL=VlB1uJ_-GpX z&W>OWbk>YraF4E;c3?;lN(z#&CACw8TVQ|eZBRHIAIBGBfFw!# zD<0mA9a$|n{pTE2QO>Uyh2ikOeerHXfOI$NUO6b&pYg)CurNUwKWEkFG5FW|KP9601*#o^jU?HYfl&Aua#7?#epS9AV;xDl0Gi zYKY5JyK$3n2K8wh)aSWelv@_nOqZ|i{EG5BE3bWGbo0>0q;62_yz^#Pr zPH1i$T{AXNvL$hHMRgvM`b#E+)j^01&MflBRT3;!sd>CZD;kwL+X%$%(#|u;05TPR zH4F5hYd2>z3Y zAxmoA1*EvPW*9x5{@>LikW1rmOVJP)k2j_DWGPdS@Rq9xTu%$#dN#}H|F3=&;i9eo z970BCmqT|N&p)#>)m_(s2(S+>NBuyG3 z|HLBov|n4NcgM*D87Z}h)lL5%<&rVOP%@EYJ$7l-K#qtL<#qwY@;LsgTS6dz^%l8Y zQd0qWMK6Ug_=4+%rKX&fXO_v)D6z#eD!%mmu-~#l^<8R$T|1b?W!#Y2p*CQkI~`{n z!L=rs`o@k&&u%6pg&v)iD?t|WE;>VD5*_*McpHS@QM#kK5UKbi^7^%Uzb^Zc=%;8; z%Xb>BC1cR!iF)V(N@>nu0-v5-Ww#%@Z?6LK?rj(ADp=&n6A zIPB7C7MMklV}nopql&<5+QV$AaCN`oR^2Ag_THAr32dPTf$BpN5})u;f9%P4-9I<6 z6-A7vvEkS`TJK=ah+-V0V#kfhANJaM+F&je`95j6H8m|lvYV8Yo`6}3GdaM!q^=Ht z(o92`%hc5$9*B{z?IcAEZ;e>j-ZVLYPn8ev(A1)b{jP)K+%|%7BBQ+NRqUH4~g&be(QTcvg^wog=uO zN5A{0&&o2Uvv_ewbQv^KuJxZI}%te$2!I zd~Jq@5b`hn4HDqf-LY5GD6aFw`(aLM`X)1Ld< z^u$+BJdQbuNJ4=hKRYFL>}Zc6_254|4s9Q>%Ux#t)Yo=24nMuqpV-9$eXpwh9v&G> z{0&tJG3~*kvZoJdLx?wGZxId${~Hr1DQ?m1df@Pw5h&>TpBSc6j|ol>zn618VplKE#yI-7bBfr`eL?tCKZ z0=$Js)H`sFt$KdfMo;oqajeT|F>OSP02EV*0{>V z%lRU!IYiB)JNVS$+{O*BRfrzVm-Qap1ilX}D^?u9arbbWH1v`|j6+tN2U5@^|1=^M zIdbWVk^MfFrMC^FP+?x{Sk{xlaE^3P`{x#fGCL?iw+@!v=GfRk$$9wL{Meb63%+68 zAk6G9k1Xm?L|w6#S>Cn&5}k8TK+pM8R9i5Ln0-6$6}p}l7cIiz=J_o*jY>Wxb9`Vv zUUUjn8J0eoIANz|D%@weEK91f&1$$fx0?l{kj!>JpK|0_Jyz~ko?e&p^!B*uTG^7s zg**if92Vb%UiEE(L-fEo(rV!ys z-uIE5JaQGoX~4Ax3hX4b;XT3lFS9zIV1y5YM4S%0LnLcd8IADycT*8vq4aR&9Ku6I z*ibZr;->RBcXpOg0T2;--S&zdZ0w)^nc7%r!u7H>-e6E$+B2Z1fn31D1Bj|5dca7O z`nIir?Azaq{s?bL=iO4+GN-CpRliO;F-l84d|=bBi^dJ=cy)O{)R}YofFyp5Rvf%7 z9LcKY1EK)V_W|n6o_fqNK>B#%9r(d!OWcar zArQI6n|M^@wnMAb3KS!a(<;gmp|gcaN4+F%2j5wj8%w|pj%txsa5*Orjp0k1xXF9VXs ztadY2j0j&eZxeKDbiu3)m~mEO2?TP;tw#`De@P5j1g^b!@BE@tFY`dB438sbDiGyv zRA*;C=`x`n$uOhhPUW}d#;#73y`f$SLQxrD<9f0~EpXpm@dIh$PNc3HSVhiWq242af3U%V#Ws@Nz{&| z1%eR%kfga+F5|v=Ph>3Ge|CRvasF$8Pt8g9!$;7vphPuH3%KFHF^mD7@5TyS%EDWo zZg5-j058NnAJ+xc&~Vn44HFwd469kd+=Ga~ntPSt|Ic)E|EW`(%B;z^QX2s@ zu2uc2caVE{G<#;u=$l}tv-+}8xsjCN0^ zAT`oVa+a-KIguDLPwi0ZGr8h4(PzqwBF@0<%n$SQo#eKIL4$=2uK(8}in89ak)&P( z8av+^ax3$aZ?sF=Nrm70f?!<^OS{Hsf$0sPAimC0;<@Bn$fBZ`RIieZUDR@sqHYee3<5+^!)#X7{A{yH z`EhJlXve38aUT*aLU-#J%KOxl_rs!S@)hl(MZ?-@JBC(CU883 za&903!gwUH2rVo4^T2BAwroUBEQ_TY&5XtbWNFxWEIpb=4np?YEOhv-!(%g*OkeU2 zd_g)aQgj{l+SSgyj!0G+7=g#$)-0V4*8$rhKE`Cee<^lK#E)Jr@;rOg;)3b5h0c(s z+%A^uE2paYJkoO((>xGk)q)yFLh6H#*LC->j!?EPd$neupYEU(^at) zt?ifgRj$G^KV1YVOARD*wASr$0+NVzVTyHa<{9Eua`DBy5DF|Kxo`>4)1|D;OGrX( z))@;cmAG&!jq{_~iq!{brc8xE`t8v=rXUofmMQudfYu!2#qb)f6#$)fNxzM=q5)|k zRP$y|RgoP3;hD7loyQuKce93PlPr=~eg{`HbvN(BI7N<&L$=;rC_f<(r-akN3~3XW zp*oxQvNF0dituEzDV1+iB)Uf2EKT`r8sV=ZL|$%5A5{T}ij9W2Ah4>qKz4(m{Hbc- znU6A9E10r10Hl3za46>#?CKw#v^;g~LT#i73>NRgWe#EP#;~2d^Mr!HSR8xj@BAZrACe>E4gmRe-Nxp zwx0m3DRB&{WDsMtk})EB2M$)dFDsox5{0^%)v2auggc(7v&{@<{TzO{C$o*q?AzYE z`)SCD=**^Tbn8n(fp(Y zA!-RHs?7S`e>fi?XoEcU&DaJG@cc=2Axhi9lW$X~J-nu~M7S}p2RP3y1+cGOL;`<^ z#$*su$BuVJb$wE|3K}>}@hq?4tW+wOYbB`R$pBk0Uo9ZoW755?nEcMDW5BbJ&&UG~ z3(p8a21ap?H09qBKotxzbJ&sz8MNR__swy@v(gFl|Fm-NrhLiak|aj(FhnANKv}n| ze5m%H+!7BwPF!h+@@ERk0gnMsn+^++421(87fWa&DMSvABvQ)d(l@a{!u588G15o2YU6tjoTJ6Pv`%kGuGez0Wu zrpKTb!2`y$exej+{K^#QooTZdv%wIDhXjt~`qC};uXuB?FR2Km08kt~`}UD=eEoP| z+pSHbY6S=W;fFg(P>{r0`~bU%?!O>sC|ikq@P z`ZfPNf1S3gRnX*mUdZKivHPcPQcWa7#J+w_ztlyenN_)DoCed-GN+ZD?oMW&B=uvz{Cg1&^KGLd_zfO=)EEM zjp0JuJc2^cvdsAWDIQFBW8ynLmOZ_qa?fYb$Apfaw(s3#;lJ?HFI7g&C23w&QLi>M zO&XRgKzAT0F=6+BPB4?Sw2noOb^nS(v%6L6zEeZ*&Z90+zPn%zMiIcWi~(zuId|$PAo@O_cnQ3&f|Hd6aQ>)ANJ#DapZIg0N@ycs(Rgz zsV!&Wh*hefSvury#B9IZ%{OYfom2W!T++>{#gmUwKLohVDiMymtT;YeYh`#V_ZYt} zsKn`J1WU6I&oF$8M1=1bLEX5GwI7Cwu*3m#`+g`~ zR9z$!guE$CW6b*NJ{lu&NRBxS*KFdz4;XGLKL0$I$bca7#qd`V?HQAdU^Mn2n8Jmb z3V7BK=k8$8wHIyae_s{*uj{Lv{=o+CeSr_hBd%#-h@o)Z^6L_Z~{H;bn*;Nvmpw_u) ziGu(x5J_~buisenkxgV+BL|gt7cy<@@DWlJM2Dgil}=j$b~r4)Kd7KAlu?r+pXX$* zJ+c<|ssIQdLz?)WjN*yO){Zzo#Cl@x2~9(8oIntXPk|m})eKtnE)4eUZ6Q>lpO|(+ zsXOCDz6^)P)BIEq(=w209#g}e-ia@SZP_1SkgU_3N#lveWUp?=)LSM8B*q4Hb&4f| z7$TKy4XYy6!1Om26ku#Of2eEnf3{MfgACpgdf2H9_OrC7hbT7o5%5JjoAF*+a4d)# zP?0thU=^s65)8BD#0*-Y{>uJd{y9<~E}WaPmH+_AS7cB{IXB5h5;j&liamTG=uTmN zjL3#6Z^xiu&H(2d(&+}Rot|ksCjwRlw#z)mCL6|e>LP2M#c_pV4Tl!B{);~mkj5T|j`|cu{ztx?3pJMfWqf^s znbC4_uuI}cjPQ=Pg`o*^{jccY|z^Dw0I+uKw zT^y~>@R@}(qf4x-s?P1Oi!P@ZHJR$a2Eqe^YO2_jPY@pi#}_99i_oi6y`C1CNFW0p z3w?ro2r>9P?-+Ig!H>@oHAFwE#>We-ZXpIHQzlZClQ&{dqVOO|uTf0e{muuiP&svt zpbbO4I1S<*co|zmtYq{O77ZpS46^CR|;e^q1Rv z_MfY`^J5g!*}Nc5+uood)LPBfBNL8jTH&ROeQUsSAse1j~E7z*l|n zJpfFA!ZF~jZl&O#*Zo6_0u&q6Oq{Y9Nt`T4Z@Sn6ci`O0Bmq}$SG74-gYt-vOyun0@`x47uYa!W`hCe^8?-vU{xHz z{HNZDyO7iqI(ugZZBX&CI*kUbu6x6}SJrHi)M`7Jb4@0VV@i;p(t)6vdI(Em3I32IT%Ni4+ z71SW2!CbWnKcX2n@M2ouJRO%ATa3jjvy#ORE3s1uMID9Y}meH9gP85&D&;Za*yF275dCiyQDTRicaeygw(ao1<9l%JFf- z{!JSm1i@9yH7@u!_|N1M%DVm9M5#RNtce8Q4jDpy(`z3|f6HSH9s^h{rtoR*@kn%N`nf>!{)c>PsBi%?C0Z!%RzZvr;(W!f#!UbnLw|s3iX)f>`Z&|( z%6@%i$RI)?y;;~A0u1MZj+b4>F`ZQIOcVbRn+BuPjNLzpu zSoF8zEcyd?-3Z~j#~e@`2?S&+>QGhp~Ya!5hdM(b)M`F~_DxyTWg9>XM z&mx=_{Zi~R_-lC=$LNTxNd>G%qmDYXV>ghuY&BQNF`MAE1pkNb5;&R z%D66WryY!)Kz^-Iz`<&&rW2%bjN0wRv+s>cSiG%qQGn$^Z7tGA5nn%mKoS6$?KKU^ z>auU6PMYx!I#Km>5g_!HDm;I*hf+T{HYT2NlmIU@p2e7AWSUhxR0K36z( zPUnRq{qRZr8Dd=*x1z+l=K@k*wu_^f`@V`POB}lsk>N`W0p%AV>aLVN7Ef1C4T?9-jq%?@va3%)lDZ9ZtBoNg+Hv zy9Tn^}0+MNAV!qTRci$WPQUH~zFQF&0Bq_wKwr$e^K4z05fN=v z*Do*eS43DXvBMYJ!e7anLXrKYIPV*JgNfJdcx*L_VNKHf>i$#>C^u1#qGSuAyB6WW zlL#oPvr7^Y~yH8+dFzoQmGtq^K-^`!rS$pRm0$?j?Tk_`RAbamlV@eM-iR4Gh z4;e$apfV|Z;g-c3;TmF$B&2^O_{Ep?eKIcu7U+!;@tK<_gzmEeY?7ZD2Z5ZmN!h(FOSH3+ovm|Iu&;PdMuP1=u)1yVfw;TyI!gyDC!2sK#fG^P{+7F&Om6sIGrDw`YP;g zFG$nDX~_R(_n-zhBMG&MAi2wWv6N*o3tlzr?*RZ+XelP^_f9seH3;NF|BT=T@t?tX zfrDijPs8Zz-%cZscn{_qPTa$3fr$)aoYhkGot+7en5`851(WqAwL^f$KA5Kt+iMFj z2?cQH4WV21_aQ!~2n}X#_44EvCtxUn^>BzxZC$noZTQfz zkAowqVIeH(lcL+HDfhGCdWbT`4u(7RmMm7tWOOF+NzSntA;plwAUtO0J|VNhYpBG= zHK@sH<;*i|g)9}kjTnB>2`b2-N1^?m959V>JjLlhk$%TA5HfH)EMEmmYrzO$btQy9 zW7Peh%w2shm^|VoN2gBmQ+c`I8`BHJxgq;D;C zqggSidfP1h8K6Mb{R-k$wa%#?`gySftw|i%Eoj`QzgcxhW8!;<5+%kJmk01?`r20BI?{sX0i47Zb zx^rDzEdp10{K3~1Hpw{11&w>P$+(dEdI-BjjjzsA30tZdpi~E{9qGD{a!@^OkY+*F znr)I}i0K|tw#jH~@c^D-G-Xn<{LOb!XcaUg)Ax1^WuzjKMt)0r2rf-hq!~cpg)snc zLhqD;)kqMXr9ph&R4QcS1)_#=zwpaEdy9ou2O`5DQy(43swhL`HpDT?co=BAZ~AaC zzoA+1Zw;IOf%qE>pdNVy04AM1rjYqxYrK+E{+4fr@zQ!r3sUhGUKBD~d*!%Kq#@`)h3?m_ajI4ou zNOKR`r$i@vAn&T4+YFWbvgLdu>-nbI)rQjnqy3za-H{ad~181*QqznNyOE?LYredw@;}E4i`y%%D z?;+yl>d1!D{n|rh#PTO%TCi+QzX;!PZd|wuwEuX`2e@OL8U2twAXg1N19A z3P$TZ8LvwkZtJyl={B)-#T#FnK53O z0-va;07P&rFY?11=?D=U1YsXn9}1)G!3> zffsa^D$MOhdoDuAPF(I}%@*NNk>#wE-5HoQ%t>abh&u3WX<#X4CX?Tum5NGCm60>H zzxxEXb%Kh6q?qT2I?RRX4Ym-}*4&I72t9BHqi_aWiknV;3}Jx3c(F*rwNU?;C9I}2 z2egN-EPkzx;MN7TmNQMLcqn>i*30p`i0;Kp5kiW~ zvKl50zxAM*i|VZ5iHOI6Az_$tedcUpmFnW7yOdI1iM>Qh|8YC5rW^5q$m9z@_Q~$<#8hShkO~TN{6O6a0{vmM|HJQZ|-bg^uCUMy$Zi z|0JMQ#j?R{>8Dp^M>uiCpBA}14JJ;R_7@NwX7tcX$JV3oY{2A7exY}Ca|;wHekn00 z8LTjs$&;sTo7*HRjg$TCV9Cl*?K7DESheU#1wwl{FkKMck;W)B0RM{Ev68h=&(_fg zZ0hZhD%ZP$i(&-ZihoAKGXa(y_INYbR`Um|8%(O(Ouw~{BZ!s#a9dfNY4?uUC;y(x z`mcjfmepH1Epcjqb1(%K4Zead0@c&r?&kz9JD4BC)kKTKlxB^$0!6wSioqk3C5aM! z*7_xt#(EeRD`qia2GvqWLNZB6HD!j}UHuFA3nphA{GwR4Bm&X6;3s1X?c$1g7pX^L zmC+@#(nRRE=!--D7t5n<^8^r1qBgg_uROS_5eNzLa-^7aw|(^&zC7rr<|WZGyS&^- z0t*uR$SblyFI+YUYF1=e__n>-)vlg_q_wWb<1Q%8eWIQ3zMrEkL2DoDRq(`p$4OOM z(Li=2Z8aDN=2_bgczFB-ha;&LQ-jSbNAg?QY5_-@of&ADJ_$)YAh7fOHc%NMfD)kBGjMQlA$(E&)mp z_0M9=tuZ;2`mUnSDC%H}7K3`)&+Z65JwWBCr@a~9=c!o=f1GGk+qkG2NMNq4di5D; z;fu=w1{sx2n{R;Z+|9yPHbq3sY+apbVUbgzp&SvaeZ*0Sk0a!!+Wlb;_}V1ypbSIq zf)_EPgW@HAp!{yPT)0t1m|h}*mj6qmy{Oqm-?1y-Rdb?bnGJMKCP@GWMhO&#ZA-kv zvUrLIrzDJ8D{JoWzV`yrh8yH5m_CS++aLM*N?m>N7U&CG>X$2L|f~0kR^BrTCSWHCM?f`l0-~cwzF!qc6`k!)#P9i zXg)yl8~UMe&XngtC*QNuNe{&$x3U`)Z(417P#{Y${{})AgbMb6$QtyAWISiY!mK9! zD^JUkwsXD9*K|T8?*mFHQ{7R?@l1;~@t}BM$vW%x`E5YS(($T!vTZG0=aO66w2H)0 zFwyoLnxH#z`PfB#~#1Qv)aoys__pAuOp?IL#C zVcH3^Hl>>lIL{=eq$G{SajQMq zBLnp%4)f|(pQW#)W265A-wuTKml9~B;7SI}_i|IDzHBq(oaP z&U#fOytGt#Wxowb%tDdvvM^zJlX#nM?4p$tN0#9{$+N8Ufl2*8FSB~rEmuPJe)&c# z>rt%$PR#mwP%&1763j1`x-4=u9Ouc^hgCPGG{Pa^^)i%93Qq|lXgILxTtq&vLp3H0 zw_uW6#cCbFQTB1LiNJk}+9Lcyc&o9Of{3SW?ndMS0gxQ*`dU^4S!dn`NBFuw-0?86 zUVBW9QSk{7R>HteS!7dwX~iw)nM4M-NZ2!#nOED<6ynzXv1j3xJ_BB5N6o(jN)p#j zx0ErC0J|k2rhbpDW*cESlLjhk?n&PEnMZb^1u1kJnmwO_XvFqNJq_tusL2a#a;%Fw zoMt0P`#u(bR5j-9Qc}HJ`;0s$2P%_?OesYqQH#I;;Ohw&piF z9aKs&g3BSb%yXf;N^YdG^4&JLe_HE4k8y*377rIZi!-PUYzD0KG4GM~3#Axm;-M|A ziRv58xM}APvC={^uvB4Ka&)ExH0`P2Zjk9rx>P05m5Q@Voxbix5?6;_lEtM^6Hfa0 z!JrW@PD7_{fhwk1dB}BB7yh@o#s~|G(Hz{Ly&~*tdU-Qg}ynI&dU4WVCzEFU%KvJLPL+OCg~JNdw8Bf8d8 zM46|Iz8vme_@KPuc#=uU0OGk(Od+QIh;rFI*xDbx1lgc*D#!!x<^?F8eDPvQ%RPv@ zp()y?ScMgU)7{Zf`|sq0bR?rpcV*wJwtt6ec#Dt%r`x3_cgCGCTV*MtE3zgxKJbzr z`SyIh3X<5s2M1Dm6GT~I8(SDs`n(5}1gk&o2TK@O7yCGPI3W!6z*VC%ltZBxD1wSa zYjid%19yi$FH(G^_Uy_hNeP*uSXl;8hkGR~$V*&vt{{Hh_u;;a0(OBeXHCu3>H+q_ zV)!hZ$eaBWO7v~lg zSeqYVIS@wyY}vm8k~Jc~7B!I-B={->P5+2%xLzURxH4Cg#QJ|>FB%>xV#d9mY^iZa zuW`JbPn$bpV*Ioq&98E^?MokTyF04{WIP%wEnW`PgHLpd-*@w+4xcRP|?7t{q z$&1qFdVc1pY~=H#fHO zS(HX3ok&W%)4c^)6Rwdhrs-+@#YHOmE!mZ<18_#O7xdDHnn8j&ae&Q*JR7w0dG@_= zt|?Hzl2z-Kb@DJQB&)!lyGJl+IhCQ}qa9U|Gu1Z1{pTc|u9or5Zaki=WO+ z0%B51tNkk~@IQB@JItlNe6%-f%=RdEQbytTU0FmR+M8D*fWh{PN?I46NJTa$e0k`u zlg#F#p8vdJIZ4Sg>+3Z5p8#hkwD{{g>3*Sm+eo36SxXI$+QLnuc^=J8xGk(am+YPJ z+t+bf;9y{$&@qH#PZO%{bZ1pFQwLS1%K7J?(sBVPYNaLmES-BxTFyjx-aaQ?@t?A?uRt#oCgwBfhBDoDkE zZMP5wEtXr2ilfM=8+Rfi3X)F=^(V-P)bC~f>)vBuYv}fnT7wQAZOlZ@F4W@mZ zwT_%nlK}_?J7#adqu7qgRH~s`vKUpb)y)FbEL(D$Y|<@6mcO7lV^3}zl8|-k(TW;&;Wj!yL{$|l+c%_m|qaTFMkt+ zD0`WtR_G`zvv@+xyCDwb?5yW(RZuX-!zr&4!EBSlm3SE^?~eU0_&HTU{NtvE_2RMc`TjAP4pb>v&d*mFZ7wBG7!HiS2N^vRZ z-iJ)ASzNMka*S)xpz(mNDa7~Y`_8*>7 z_!^uVLWm-4#Nv}K*FP@g zraQ}~`2qufuQ*<`kj&O@oEZDS=FJRmo~Tu?vz3n(mxhAYEgZYx8sr} zfkh%9FoZ7{=8tNbR(sA3%nGWZmKc%sPdC{yhGr7oTTs)x&KaN_8swwsauQ;+!l;b+kTa)!NhU!oRuXY+Fm%>!aa6s zEUw_3@Ie(Jm+8TBhA`R7PX1on?ZhOtckf>@oLw(gaSYY;oSujWaZcsF00-w_SRnom zOBaxF>g@RjW_up;YX-l=?ZW}@cnpEg-Ss=anXB~B2&ca#_b0XHHqG@dkPbT1r@-m!bUP|CS!R*ivYv> zXDlMF+*i@mZ}kUN88$|PeMA_Un4uCm|1zY3(OIrJb-1A$?b_j^`R z6ppm>p&#PYa#)yvaE}J8r$<&D3P8 zEUpHUJ_h92Ng+VS>BAp%QaFv{g}ACk8M;~4^@&J&eV=~kE>Hazi$77(y~1FU42OJ* zR3FJqNT)Y9sQE-maMJ}6Goa^G57{B3{7^1PVgn1?Drm5|%L+OyGa4kY3<|H&5UYvx z)`2kE4@~}J(kp;D{qEH4U3nJ!ca2EL<8DvUa0n?1swbfTWYVze$F5ZWL(^Td*|JFX zV~Ow>-X)%h93SfVvVcWSBb^opb?A6FRx-QMBJmB|)FJDbyJa(_)MYd4gBvv8+t0U7 zeuxCv^SbdJRMKe`6h;j5nUajvfqwQrMshM)}8c-sW;`2k(cvKtq3 zvx`LI0mK$kqzYDHUTC^|^u5Mf`AKTFJ)2OFHnWD%sBv_v2gnvS4 z^AKhG2?6O9kD`rESK80gup~VFVi4cqr4I8*BtYURby%DwaPmFwNg&L?-yx zxGOY`Ho4r>DlHrZblL`JjEB##94TXcS;xzsup7gEXo*_MWTF-btWjPEf8uH0jw0HF z@|FSS$b7d}d|)CT#r&z|P^9dRwANM|o(OA}r6?6sMPB+OGB-2_ZfcNsA(3`%{;{EU zU}*VYl3_w|>1uQ`z59U(-x!vyZEYf^*fk|6Bs)6ng!hiX;jl|Y^SMWB5SnK4Z<-CL}G_#Sp^lv z870HBrC1o1FfMe4n<)H)>^JBjq&+YN8G|Kk8j;ve7C#D{6 zJN}eqlqAQp-Uw3Ynt_1^6=(MwIh^H3(2{}g6SK16fBx%bo&|$6e{esj3{U*(CP7%h zxH=&{X?Yk|#YR$TNm9gck$yYiQLt4;N5_ud0p1_d#WptILg~Fgbw*aTu|o!{5|7BETO98X!umlFLFlHZ&-QmCc}56n z;ZTcbK(vg^Jt~+;7ZA_Ost8b9sfQZ31A`#z+($%AwhDT^s;R31q;Mfq<90#5Pu+aI zt=y2(z1b~C3b!-2BP)kX-fK(;+48bgW0Kk*YK}H`u$404j779@Uk&cR1by_K7q*M2S0q#BT=Hskr=s;q` zcUv>Tg}4rmb6Lu(O%d1ycjg|4DUDs7>Z*K?h@WbvO9`4`M3!<+z)`qi()cMB@dHd1 zV^&v(#|Ha9n{P~$7qabrR6{}Yl)9cYCPUaXZMX^v&2-7VD~pKge7PoilLtyYPJDhv zy^Us(xgO}>!&YMTWOxXNn-$05n52)^5aV^H-wZRdiABj5rw~7gXCLg+6yMU7`cO^<7ST zS0#^U>Xa2O4D|-a`_?iHiY!mSI%KSiwuVfTg~7m>jHtM+p9gs;w5cD{1>cNR)Ua>5 zx;-z3k2#NvQseF$rLv3yInhKuAdtH`B%ey3C5^R6F(=hs>TOgHzz+h*eT&CvRjjzG zP4y3Y8-6Epmd8R$Mw-+)TlTn*^7&esH%h_0;g8GtnI0Z{lHxG&wHq8e)&sV7`1&ng9b1F1<&pGdk_KPZ=<+8Kt z`jIRy30lzD7dYD%D3zuyb(+raRU3rp78i8yE;^rd{$ftaH%!5=YGAb*25!zND2$p;O79J~(CG`&t9miA z7^O(1rcZ`-g6bIQYWTov2TC*m306sOLVf4De@Yr(VA;Rt*w?>rG0VI^yQNlvPG>=V zb1xmtqZ3{B0kJJuQ)<;AY#{-@S?uU+8hb(B_7z9zagE+v_5;9Z?%FEw665um(ckAEx1|g^bScu5gVd*+o?V<0HvjeqgNuQ9zlwH;RrJ!SdnAM>lrIy#+%10G9d%*0&e{`ycv8!)KDtmZ{AD4( zHC4zVEUL*aN)Cz8qQix<+PaT_pw=ha8oa;C01}_m2hw%qSntV}lA3#S41aodbmh37 z(}q;>i6Iqmizf-hU2D@hhueVt>%P=Jp#;%-S!5kNywTNN0dzwwKg>^V9m>)RXJ<|~ zQICJ{(#SVoWpPFJgx_mrI9>IAWI!D|1z4b2e)oFzMer2i6 z|GnzISf}}Cy1(za?zx*DL>Z1st8czOjQT+KuM^9?$&18DtYf(37 z>N2HvPE^Zr(3ebFY>tYoxCh$UT>G0`NBxFOxTW2gh)x;uFJeO$US5!5`3lobKB_RK zOP%9-zP0dUPNv?dbK+vkO%i>(ZACip2`_VGCs52Sdu56XW8yZ)l@aMNgtQ+J&uxXn z3fg+F=5w~)&!=cW0&h3&zebN$EL@X$^3R&BJ;QkU+S1-M6B9LpIj=cqdYHM2L$7li%mC$I_bM8-gU0J2s9(Uo4PZ(D-Ad9wUUUE1o0c^ zfwlRX_0APDKq+<~Th~t%6#WVndws9Rq$UaYL|O?Zq7iS0g+ok1lHhOwZ#i=-wGe!r z%O~-yn4y+tsHu^RYPw>wv~atG`LZusm!Z}02Nj5QnUF)j;XPV1cE-#6zfg^fcPj+W z$$Y1Y+;vyWM=YplxxI_zMxtEVOFkEC$ID2zZfTUhK z^@piGPg$CN15UFGN2sjBa~N6B#-8PymRWhY67OfQp<*Z+Wf}JDgvFvm=`*8I*KS+1{nowG* z-$ON6gAWrzMSHPQlWJXIbXP18w8?PYmA6)Kp=9Wyx-1|>#EwM>_| zIw%}JJlBqry_aXFQRbE%8qL(PB{~6Xh1CTzrm1sKo*oRR$-E5lF=;ar z`G&&lC>(MIBio-2B&R(!_6qw1&Iouf+s5t`0=;YliiCU@XwEQFazF63R zHS(=~UKNl8e-4y-t4F3h1ap95l$nH`33Gi`=fZVT&b{8}dfs}Az*mG}>?uZ^=o%*| zeK&46(dS1rxPtjbEhNsuTHOgi&Q_(NNbp>^ z1M4=6pY`o;29`V&-y?Ng1X|ed%sbf}r?i%=fqK35ytxQ`P|B1yKEzR}J--D}JLiXs zG+*}k_`s&zmJ;Pb*TyM7V75DbU~U13DKz<$swR5nqI#TUoR#nE#8Fq?JV2Ft zQC&!T1Byo#w#4CjWzw&rDjU1$ZUe-9Gc#?B_ieqZ(j|0)bgt}ZgjV)@r^Z&m?!xed zFQ!UswH?j#PYzmsuE2B=0J6wk@Q~y=?ZhAvQ1ZEP?Xo*VW?3))Vd0v}7yNTF$>u{w z{O^>cm8oi_fUK0#x@If6+bPa#zt(X?ftXa|{(#O3HUx7)+z^hB>wG`3_|)|9d#kR3 z!)&Q6ySwDr{ZEU)Lh(r0DO_nPqWkWh5|Bzk2ATf_cn4OUT*`9XqJYF4!5qsYaTd4` z9Po1d*M6U#-cwc$rbDu zSq$o&P8yn$I?pMA>zAh#$K4A zrpnB5S~hp0q^IUeAKkvim*n=IT3B8Xt6_O@Q)B48;A(>XSr)?Ts1*hr()HSbV8+@% zzcB3Tm~V_Yo8EcLC-u)y!2^yFUDC02k@7I^BppmR)ug8XTP&7mXmz2f7alvGe%L*t z$~%QQKWX4+g;A~|)ZxH8=rWo+eT&|*-h>Dn{Tw#`O(btzeMHQjek6J^Z(cVkTl-Rc zBW7{BJ{T8-&~Y81Y^%JeUlVjalq62B65aCuR)P1U>;!$Lmcd4`$05XZBr31Nt0u2d z4Pf?61{FP@1u@bmv%Uh)hd*T!kWSJsDTR&;aZ$Nk+GjW{1y;$tjZ0H4-0I>qzrr}5 z17B?^bRW#85t?mIsrHJiL{DGFb)qZj>unhigRodq0*U7jrbqTrPCeN3c}m>&FmbXZ ztTDsbMvh!6=av?f#DGtBSJ?*Fc(r3gk z0SVEQXF_`*v77$*znd0GsI3iWqR2z^LNpehXidPvj!^*Af@ih-B{T`uw%im8Z14$# zaFI-OmA~sdw0A{Dk2_Ej>qB~`rVd*Q7rGERMS-F`(CZ3NNWp8GQQ$s`TTAAZ z9w%I~RD5lM7cXsxd#FT6AFCGDg~P3|hpMTcc-@-%Tmnt*J-~pWVgL>s8t?D zpxKsi2Ho&5qIz`FFg^$Sh$IgRvkGu4Jf2DgMWAQ4o1-gx>t^1IbNd(! zmhS%H|3hA%0XcZ9FV~!rMS14MehHd98ZuYi6D>`$~N5) zsl}>FNAYGTDfbu-aSjDR{0FRl>dwM|U-Xn;y#gZ{={)`es!WCLrn*l91RPpmin6A5 zIK?+SVI5@i|3~04MZy?IY@l8oNNJ1?ci`w;q%N5JxAq=tVG1D8%H%lkY0iLqrCw<&5U4kC`poWX|jnk&rg35ZaJNJP$jgtfKa$>?U?asMAX;BGJ|D{^ymYw|kt0-6mUW(qkd2<_-suC^l@ z@5Ub5a+$ea-w=d_os_h^lUVUl^Rh>cl95&5uDDU;aI^tYdIQNsx}e7)QHIVtcld$UAWzm-iLKlRzlY9{X`V=oJTF#2elenTLCOGYudSA53)kYF@Jj!nucArC>!fg8B0@PWcj^jCXIF}Q$G z02~n%y0I~@o%3_(8G)TkAW8CtAMXnR$A>mezv*iBUHGEXSXsAy; zTiD&EY&Av~S%yn>Lr)vlLW?(w-YKoYRVp0$b{Li?umZmtgiEpg|ze!%P@eJ zUdjJQJek1&1_t`cp(=`tL!iswDoUHAuaMd&3$d-l>_~ua`0u&QYa47PyzVSim!X17#HaXxjK+ zJ`?6!gIc?QG0kOR?u8UduH_g8+e4@sYx?xe>75Q+t&Rxzie*u6l|Jgq=Dm=E@UuTo z%Uyj$C;J8c(iQktU5(e(i!4Dna0jvY7|(aV-i$Hz&KkVfT>Rj-!VIJkt)bM)L)G_4 zS?rOIOu&W2ahh;R^C3ri*O#GnI=SA;2FUSiP{H9T%FDK^nWcJa$WK<#V20X&wBmP= z^mkE|pUmrync%oMNRH(Ox3Zo_SI6*dcY8ZhG~#EnoAktX+S|4RWm3qDM(HSia><_2 zFsH1_m~u&0`UbD-1o*jbs?MA^f8w|&hn>ampEKI$+hcXzULFW6(v`4>pQ*+xSRoc0 zWCSjY&#^g$H&>^sQKx#d_$!ZU#I*&`E85yTm%=J}>(zzuDP~9#Rj@GVF-T!$$4}EBbLX zZHwx9fw31JcVACo;pHnfkirBsV1F$z;VZb)ohU050P}}NRXn0kw=(VhI}taT0%?u9 zY`b$=3a5{Gr-vw1<|l=42?H}gvdX<{GRO=;ee39)47S zU^bBzP%K_J%0vCs#N$kt&(6cPToB3FdnZDr3*iGx#^|_kkL^4Tw>xeK3^VIU_VoB^ zsQg6WTgu5){)`Qg!!9}_h=l!e5lL@MQzsEt&Xt4O+ncq~t((ElU?&0HSpvtF%zx);Q72yhL(E0O=a}MTL zbuZ_wxbZIj7zz@5cku$C2i-h$H(wf1AA$Yp)j* zfRFTUP{N%}QdWJM!EVa?)REf=Pny>2%9Ju01RcTY7eEb>`tvegfcn+CAxSC!4UKym z?St;}_l{;DJZa*6RoU49LpYcyOXJN9<0;AOzm=}TP;P4y5COjdJ}fo3@<{aH=)%t@ zizQAi@8A)T1eF$R`**G({#4X#?z>+@?8MM4cxYV$_gaT_AupjoSN3A&-YCYn1ZfI@ z;qid*07!B>JxzO`&>R11FFHfZo_2;}y}N>HM*AZ(-fzNY!CI1CvY<^Wo>JD2Khb8O zDyiD!skrK#BNs(i=;nQEJ}app(|F|viRZyp;PV6yazcJoN}Ud~)%L^>Wn3^I(#07j zS3ZjV*^f1m0nX+-zkdE)Zm$93T0nFN0~4f_H_!h3a=bQN0u>!T3J7OhiXkQmo6Iai zR{n-UQf(=w&^Owfo~x~}ku=T`Bzr#gBud=ii!P%<8BeA2&C2u?s%x{@X&^M~B5vn<3kyH~Rg$<;kqy zPF@+1wdwzUb1?y=ea-hBy^v=ugCf+*vE6UlqKTy;N?e1&XG1QYzuBL?4?PVsC8;lo z79kZBFd0(8SblKb7U!bnly^!A*J78tkw@ifg7&5xIS(DxCCX`@-rE`(#akicc|LQ; z+zoxP6Ve1<>pWiZR6em^>E6=9?Cc{r*Seis8Y?d1iv5B?*V1yj_#a5!x8ku~@a;&j zGERjNTBs`xx6hJQ&Dok}52I%_R3#W-h8+5M*XiCfHIkGHn`i>x?ny*g&INb;c^-D; z+5>#RBFqd=5$}RxECKTl3!naK_7S@`=G->OLi+Glqs4IkGk~fz&9TO%N8q4^=K&@e z^Q*A};H~SAPE34+P!9D59*qcF!D`8f(-#3$fB zZKReX3cw{)H8x-TK;!$|3(wyj6$W%{sUk6G~?HHQLVoI=4rqWVZ-RC9nD zS6c#qquy|jlAxwjPz}J)5L}%eV6EFcs`q?u9w;dGxUb> z+VCpy$}n;Pb~YT5Z*sh6hjNasDUpLhwKStDD-{DnsJ5Z!tt-VnW84>-ylCaE`;mv^ zk$d5Uee+kxrZSTX>Qv&x3~JBWu~677baokmR6$v|3j0(v@Ekf zS?z&9MPX!wlsm%L4<|%8a!HysG4DrEow|3eg5SY}$Jz~d&(O}VC_C^FrPM%B4|C})|_vczCQc@l*78u+?-)@DBjWA z-`8VlVfjZyj~BD=yM@q(DaPY zT4=K;0L;8l$B?OIFG(4voH=%9lvzf?1Qk|7iz|bPOlN4d5PI*;Ye`n+%j$hdRus)2 zq`t9oL%0PW(J354Hjz0{_Y#f2d^%M1#l^V+x;yLa{%LqTXTI5I@_a9*p8C_i8QjX{UcX5u zEaU|6hDl_3R3lusTDzzh2>|Wh7o+i1{S301`7qY-KuX#jnKnuS8N2@@`p65#pqCfz zq>`Z6?etWCj?{zgOm-Sdge`29H$>psV9LYit;{(xI~De?uTg6jc8u>BYxYWG91h%8 z7nq};1UK*E_1^pD8ai1t#QF9%00hlFq3`{=zxZwMsMwy<~O}XpXqX*F+?eyxF1=HN^70UpcaHHJgy+-70)dGN6<0|Mav{Hgjn0; z74S2_Pqyg+4t}ZEpUa!Eix=XHB4dJnNN9eB+$ug=0#Fe|pv>S7nd#g)V48o7g^%bm zMX#o)fjOTPss3upTmRWLw@>Tbu@$LUI{)mL-sx-v8tqt+`q<2RrAEJ8I22o{W2-%7<(=ja`f6*`? zCy8L4>9v~c^xIdfvAo5u8x}8v8_E)NiF1moX6}d1Tn)*W;w7DaQkN&Ky(xy9pJ}?Q z)lVu|D>4W~ro=l}a#IAOZ@%oTsn1Q7j3DY_RZ!;`@E>IeMF_xPYgGwxpg|HvIf%{? zPCl?GpQZMvM>3Z6DX8r;$)a~#x&^a`-&4f&Pa=9BSlfd<5f~yM%?s0_8~AxWyBiScx6w~Nz9%d`8_X2h<}avx zXF$~lw3m%Hb^Cj`WlrZ#g_~w&U)9l;8jhjvDuGNFE$2X z-uSB%3DD5&t#v>6w}XH6 z85AndQlCV030gAJ%>ZB|=yBtzqk2+(14UBrKT!=3deEz&LI`JU9kbGEKmXNM-IKTP z_oE(U%qoYV^33*ZJ6%cbs{|coRW)7sKuTu!0kIeRTKm{>-8|{^juxz2 zEG!`mZl74;Rd>>sqbEmHM|8Yl^Vw!&27SpI??-7fcZHyqhY3hGS=EPN-o&v6c^GvX ztS3m`Zq#~c6~goDrVK$Qi8VqJ0RtxLI)mFD5^e=W5Du>)WzXLK(;V!`_jq^5a`sqSYH+mY4G8jxo`)Qrx-N=!%U*5PHz=o1^8P1E|t;;LQ8>cgei zSdF48N5T2*?!lud!~sK_eHpC9?XQ(d87~}B$cs$&!hX5;~Zn;cTAZ0N( z0}XKgo#n`7L9c_5?6vu|Rm!DojyGo+NuuKTfN;725%m0ry;tW zTcCIu;A~A_92eO?mZjVG9Lpfl{iuPc3R&{tP5?bx(<|d5FFa6%zMuEudNk@IF%G5S z)FlNdVCCLV4=9PJf*2*fCVJS)wrHprcM|DZ)fd`1c#Ajhp zf!5Ai?3Y1qyH=s-`+rBCv!t5!{(#iL{rDqAOVMwql?b zyhmxUKnr<=6hFJ@0zAjsmSE>0Q2%Cp7hyU(Uo6BR8YBwEE`tq0I!sBoAZfzo+vVH9 zeCv&f4}^I>&XShuwFPI;;aC$^oGNjuc=%5!unAmgb8cX}K_${_hV2~quDBe@xjh9K z4q5?^AV1p%vD04j4e1U{z$4s*rFkvP{e4bQ!j-ra1lX69M`Rjv#{}iGWi5RG3hqtB zeo&{MssybhaEWyNQe5ArH*`3-{rc6Xx@G9Ls^W}t#bG*XuC!7*y%e_gU|A> zeOP#65kqV~aXaB86vPRVn)znPf@AF+7?PtDD^Ex-Tb|0MFjf!d*;Cl{Q9XanC?#qJkceV?>ixMd7Jh zrAk(8CEnCgtL4=cw_Z5Q#eXSp)}}e;oOF?Ed>1tneC=C4>qlhS&mr9+CSs-E?W!Vd=J@6|6V;o6GM7EfzTTjny3J$jrPl3UA@kNsB9f(#O^xC+8 zvN7K&9b+9FagrbY=J-XVS~^HD#LgiZ5Cgq5bV||MsK~h7BTTHsaqBZ^#l4bDVWmII zFv|0|wjDvnga0&`v@ll`NXo~GL*;&F(%aaXBoWBwx2!B{PR)2x)t+ez`Sb>FQtXr# z3cA8gcS~IqEEnx2T{#TM)vf=tF7V3lGpUdc_u4FqCr06Dt%#9XY{WAvtA{epEX1us_>T6uQKrKeK)I%@ z3&cS){SlE@U4}z9{44#pqxVmEbP_Y7jRBq~yPu~I)Y9lO^3@(zM)6nS@`Jwm4c?19 zkc{RW)uB8lu1d?IP156vZs^^u$d%!EJ0D&0_%|GX2}g`VFzAfLu)Lm_ZJYF_!o#I% zZbryI=o;ozfh>~-+;ZTCAen;JZ1)6yfzB-#DQj(Tc&(^ZTaXc0xIaHkswVyG1kCnG zvudiC{uCmps+0t=d5_l5K(+{0raI!_^L4F}_j(`pd~$pnli~Mubp))fZ$63dyMtP- zU@V@l^H|mjuauu#lI#k4Sj4T?LCf)pr2an35moq&FHkkS@ePrfo~nv_gQ-DzllK9r zHZz88p6+RJWr9onB}z}QI{xUo=B_wnY@<7bT~wh+18fNxg98gCnfo*GZj7%I7jxcmVzJJD^ zf}bZ}rh;Fdeq0z7m;)1|ZUeji9NgGIdrDFsTg_8T&mK0&bu==d%6B9%br)O|V zh#pX+k9qqT7RPNZTx*!G^YI{?vA`rE3e^Nu(UmoOlTVb%J=|a3ai!T0x^^w~{jb+n zV2Ynj*oZR@MnV#eb`%T4>JeI}{Jh|D;RHnyIh0G7d_ZDx!E0I@o~Y5R=A!qT?7On9 z*cTQ`mhZ3^du-uMF?ZITI@9z+^DN+DtS&eqf!fa^$H0?-cqy|iN1Y{*8Ac*ryCvR} z6eDpzyMfED%-ug)&)1~3TFKl`AB-hy28+UI zfww0H`D;6F4jeuLhy&kW3IysV(pJ}yvR`j!gbe%&wJ{7nrs{+%?kpnpe;c@`W9=dd zw#IcJJ^n#}0N9X}-)EPII>a>5{{1xKph%KA}h|FsdSG1Fxh^x&K`S zWazIeLkC{=j`rA%+o1?iZB~MU=10;2lQE=eAfLtS4EslV2-w6?ZlcT~8^`PlGLl?u zewze}cdVH2-kRo+wa}VLm>%ZcIri}k;xkXa$}B_?w3!&I%Z+F3GQX{(`R5@r)>Wh` zDE?z!)f^>Xjt={IT?v3r-*y(DTK~n1e?Z~^U&~+%3m6;oHc3`E>5$;0q)6p~rf^|@ z{_LdfSmmY&uR$P z<;wpLrsKSh)sX8h_bU`*YIx_V{)p0JVr3yr#$7A^x=6QovsK*i927WI3OyrgA~>3L zbS~j^dR13~pSU3D1qWQ+j4M*_K=t>vJL@up<>y?&qCud^9|L^_TzHH)RnKn(NVr! zX%t@%nAw9|Gi8Of@`}AI>7&bAMu(uW$>4M?zQ>C37sIhh-fZcmq;VK=3qaUFV^2Ze zEC>>#Ll08b?5W6n%LX~IP0Aomv-zI7x8%B=*AA6Zc{4XlFJ+cK3K8J*wRU>V!+Nnx z-e4cg_~EE{b(%Mx>UhohyXF3%lRUyyZxR9Az?{yr9@vpsNCzSxg*8A5X4QWx7r0f}zwbgm8C_#~cq zqJ=aw2*mS+?<@!%)L0-&9l>}1@1EInIH{U1@Juw|^Bl_r+$?t}$@$SyV%jA{oZ(PF z8$4*WJ+sMo=^h~6BiyUKf$eA$B3rYOqXl~q5B4_|>$t~Xr^?uz3DBXdyygJL$t!Kl zYZ5_JV6NY9N&p8bgZ;{Z6=c)N%`E5sISi(n82D_%fIN*WK5Icvn zj!ut_T~BszpKIK)#u=QZ#NFx&5!{U)<){;r02yB>3Bu&cN|}qTr4DZMnb|sO3ly?` z=MNicrs?)0Nm6`P=uZW0i zGk)+8YRMdy^io!Oqj1o>bjPuU?6A=Emv3mLn^N|R1j~a3`V?GhJMYk7gnCXe zK_e=CqE7rX&hwVDOu(KU)L#WYwmFzobP)}?yFnY&9( z#C=q}OE2SP?%|DewmeS}>G4W^|BKVWg8FLgd*fqu^k-O}5mBG3so?d48Mz#u_hzcGVuEpN`+y6h2eY9?mxWx|h-H?a z%8V!%@{_b+=Vl8zj&2%(BmrfUl>{>{Bbd?FXc5T>I=vVAeQ;69EL6wA?hVZ9s=6N$ zk}?g|{KF4l1}V^fA}v(l0j9xd$JL@(U{^q)wp{nG0^K!dipS(+rY^2*L3vqmy}^}E zo9i?{pPjn=oUhB7f}#aZ;G{m_=WQ(_Jph->ef+-`M)0G3s9>q3Gi?jLsj5G~Cm zd`pi7Z%AGk$}N`b5dge&fi9EnVk|Vc$W@T9uWyjJ{A?-SXy?qh)jlp#DU|bYG#z}t zaM;`D;1MBrI#6EuSNsvxFbr5tom&B$B2@|{;@;A2XVSYI1MY2lG#4g*rUg++99!is zBB6t{yltY?K}~DarbA8|IU~#$6YZ&KJf_`;>@}?^iXOk>+370G@L_tuLYglmt~jcW z{knkdX{VBk&un9KO7jTN6@fb6EmD6+)|<&wcphDee^EgKkyV|S_lnBw&l+#)eLxzU z6RK!NmjhH+d+5r~6>(mjjs4|IPYSApM23PtP7V#{Xh9$o!RwXmkRvT+MNHoD*FgdL zTAvEAOyaCS^3hW2x5)oo@-cLvK5qWnZcIfY{hE!!HCm3$4Oa?H`6UqTi`OfV6loqA zs-kW7I7+P5IJS)8;sk0?s7y=*dc2_4abd=?_*`UkIhWS^@-txVvcZm_MoQmJt_f7T zT^_fN>9#lighAHeHdr{rcKI}K@sn<|Ud#s$*+vb*2%&<;(~8%Ns80|AhTH?2i)oXT z1ms&aK649C@xx!A3P06C)Lt@Pie$Rb)Oj1vmuvNgv8tXXA0itN4+5IV9@7QH<`+h< zF;mg##`;bV(0wmCD}(p;BVc(t0hq}!YDcCRsX!%fLfCnqk^x$QG;yCqQB z64Q-4i676$yktFZ7k(Ssds6{1dHpGm6_=%v^UJ%*btdI+ebom8Le6&Vx{eXGDTxFV zt(}+B`0mu(?`l9PV$rnlC4axPzXmYRfo^I_0KYxzA{D+XsgY=+7mtKEaZ2Efx0KtB zDw`d|v0{hC0Kv^e4TxFm$}S#X=w}xCB@WLmoZ=tOX+B#^4u1xf(VSN&Kx z7;x~{5X%0xjBzfrKC8YzfWu<*n=zSqJ1c=0Y!@5+KIniT<~b?{!y9Wrzcwjoa9S<( zqEax!Uf^HCAacEl$N!yoZR!`+uYf~=-NBvwH}Xj`)e z`hR~@i*qDJ$Suw$#vXFdnTNKJ<(Fz_=y=pq%QR;aZ87g?L!b76Zk@367L}swJo_Ms~&nxuOo2s^CPpt zEkYY&iv5uK6VU|i3Jl%QWXe6aC*~ubczrTXUC*hY@2U` zVM;W@=Cc!Ty0Y~tEYvwM3vWp{@M{81JJ2xchZ|+B+fHwSITL8?!7-0FH3PTWg*0=N zHq&Cxnpt^I*t6F@_4$s2mDU{(E%rh4JBbaP)sbEP&8O3UZjiV{w}$$TY` zEs7|R8^CgLb#SjQ4U=t#k8~}CfQ)<_ETD{PQiBAWGi5Q=<0Trr#o-h0V_$}IlIed>X`4a#hG`_LcEs}Yy`RL+OLORKS0=b(S04=nOvpGyG}Me zO*<@Mi;J>pCfvJP@joi>W+@7`9|H>+C@@glI>cHZXb70g7UjmLkLTI-80Y9yR-D#Pg=;XJ&~?_CbJF zT$tak{M=?_LNh7{FZY}+z7RPX&623y!3~|VwqkUln-86dr$RK;br505st)Km4$GQz z5bcJz!cf`XM7jlSzEmgJ)6U`8f!ZKGA!T-BFMVbBvArQ>tXDOQ-%A;|>h(agg&ZMe z?#Uw?&_K9wzMnt<+2 z-lp5OxZIV~WmRneHQ-cwEyP>UpEXJ`YLY7zvJ*|32RjRxSHqaP0+z=rKsQvVk=K!y zVH~`s>+oyy_T(8$!1v5L@PA>zvH=5+xIbaNZnME-~Y)$*7=})xb z(|@7#y@fSJ7*H!smSB+E5lye1PKdA3O_x2~*Bzy(lXpXid7l~0z}qi4mQ4)1r(+LR_yhEf54Q(kG#dYDQ2Kda*Lj+;>==0 zZGEQex2bD46NuaPwh_tj@nun8w^(>?vNs`5p+U}&1LZZ>qpkWc$ypxta+z-l$!6RR z)V&gC_waZY23-ZHl8U&_@;6)@uIC}pen)i49PRb<{7HwUsKUOaiox>o7>YfLPs18g zVn5Px>CCEME3)1XK4Ef&LsQe|V?|%;8&?6PnU0`xl^{Z0-sCPj!1k8l55vt0_*B1>>jut3qpA&Sz|0A}x(Iy~*|ly2 zyG6yWm}x!jPzaUDhYNLpw&kj>vNP7kY)Gxp3jhtb31B0rH*`Sl2+vuIIvHE3KDDR0 z{o887nA!eXX7ad54oa}Vdc0`RR`fW#vrbMoB_37Jg){)g5V4w25d(O%{M8hWG5(^M zRQ9zJFIL6IY*rNG3O!Zg7}2rRz-ko!WX(WU=amB2CY3#V4Sl{*lFv6u-viX6n*=QM zNzvpxaW;>6aC02uEVdGMW{W#|2=-?t-r)cpNqbY^BFywAK$ zQb5;dJQAcV;U^k;;;r(Q8zWf%1@gz0;zDJwpEpiQ-hsVgA%K)9G;FEG`Bn9q%5 zW4~YLCH=u{n$iEq)SL6wv>6;X?Wx3NJSpX+8Z}ChTli2sY49z3_2cxui@^3ZXuZo(VMlq(WJVM*nCPos}$4~$q$Bd%&`PXbS}WZO<9 z>5oz?n-57AV3DT4ljn|OQ!rIqb)_kymWLiT={#V1p@5w`=jx)4L3q46R76C?_k>alLYE$ksO_z!+HQP^96gL(Df9oIGx zrRH!QiZ6Xx^Y@R(=3IpqjILkWckZ96NT4lDK1ZQ{gJxC>E{%gl%xUzEZrF!`$zKai%we`$`Xvy@KNGG#l5e*K-U^m`mWumz5sxW%cf1`T8kf0XQggZM(p zv0S1JT{!nra?3am9FJ>1Byd<`rCRXpB>nrUMSRK@D(%d{J1Z^T)9~6i5q>>{YWXh@ z^8-Wv>XA}@v+FRjx+Gt!-F&veaf1$X2xkO}Lo3qFq2lT**0Lpuylv`-iLrgn0Ft-w zS_4v~ZzobhU+h*Ez%YtXb$Ag^70R-MQQ=Q_xEj4?sXh5jav{)TNs*k<0mHzpk=FS# zPZ?`;;fix60duf|_4i5MKpQ$M5SkI6-T%qA<+M&R?@>W+G&Y(N$FEL)HIZ1q+)jRH z1zfcCs!aWc?5v%3Nd(&VX#M=%a&JP7vj0nz{KKKUZs^YNONpBP+~CUx7CnBA#=tZX z9mN8i@xu!qQ5j{WeEFR`t`@Mr8ENQW#=r@xf>*l{Qmk8at%+1q49d0pn3Y#aIn^+G ztmpY1S;ZH{r6srS3 z1$?mRDl4>g;ZCI(jTl6|&s6@_Kh15_z*S4Wlr%u9a?tqXY6SGy$D!QcguU}+K*P&} z<~n#}SYvC5#VRzG5IcHm#19IaK~FgBi+XKhO>0~8??{*~@B6u`vWoV{ulTS>?T^fO zK0eIEK%1QEHaXKv*gkD`^UE2y-u%D>5d?8{?hTt>&t|IIcv4a-UZ;5OcX;5r!!W;w z7jk12bn2?*2ICTcB0osq(7BXvVF8{k7)~^WNNn*I5LLxQb7NZTpvbXM$EQx*n5~{+ zNxh%3v{Heo)jIqlf+EXQv(!QDzXq!XkUi+kQ`%0U{VYOX5Y82?LPZd+1uXW3K^Es_IQ-G40z$Jz5L>yC4WFh#veLVX zhyl4TZ7Io*>Ouz;T`FdPAUsxv3Wr|^rRUpjWN@3-f&D@?1Pw~}Qw|$SyIXKu;Xv#m z4qv4aj8D-I@!Oy<4hZN-5$a480o3E}B_<+YjKA-HhhXTCZ2h=EMy3ll5N90f+y(Q( zQts9nsY_`_0lWDZ+ELZaoTCFB!PAl`Sq1jLsu*HrO9_5a!7ojFbr{ds&8kWgJK&_& zgdD1RFs@^&VJ=e3ZEZ|Mi=+qaCVc>LoqV|`?vW}0Ez$JJ*&fEPur!$RVuSI&n4t33 z5kN627PriVivTG}H3-3%}`nqIn}S%p~4>br~s&w>)qB8z?Fv z7h3fW*;$2$Os?Wc%T&M`CyobSX^-lFw?;4!W=b)Tlv z7Sfcz?on=083Dx$T(qRa>(RXLUU}Q8Xn!11h{aPi;W#;8`3s7|sV~$}5uAkUFc5_-IxsTotStyg4elSo$vxFV$}Qb`eu^I zJN`ar-zgU6lwO0N zS4Rm4Oh7!RTDglB16azhnMG5=%OKCUgx;HGz&|Gf_g!{=Ah(%oexT3UDu}M`;pbz% z5HlNzK^omI`u-rXA$_|B@n{xjZXksf>3uJNZeE-=S*)*>m9^Qz>XReYC&NVGsV?(o zHChjK$P;sA_=&tKSLPund)KM7#`vVk%>~*|-^!k4NVRCWvBEJPH#50QzVA$Pf6JaK z8|x{29}k9*k5=?X-$e;d5FzTl7V`9~Rkf0$J($-r`E10mO~da(BXW64TYa_?DGlb9 znCNJT7?1jAU1$&WZa{nI6gBeGpw<)9m7A^ACUc!1_?D1Sty!{F#kr`^ z-pSklSGZ@L3>t`uRdW441N$`H%hVmhy7cET1fWS5sKDkoK2<6UsvDGoViTExmp<2# z`#efEO!;#3wtw@=PbPHDbqh^O4Pj6jC+hGe#^HFTgd<*ubTh4*cCnhRi+$Nz59`0; zR>0m#0fplVyu&WTu7ZgWf}RlU9#);P86sfHrvU|DVE76zP(YQ)-`3KG10pei<7EnulIjX2UooX;YcJ(J1wy8s8 zHQWkTuH?~t3M`^?&st&b!$W%+qXprwF5y_O^0_t9LcYG+fYSGCC~y*8DHH|M%S&+) zTjNz5j3-eoh_QB{%|U(0o$Dc8gx5&p)$zOkc|M6JBA^{%Qa;3Xk3uS9Wo`nO-v9~x z>`(0qf+|Fei2p1RNhdt6h)M%sezhBpSV}xwC(g<@efl}L8%)0y?gspCp7`-ubO|7% zYlp?=aW|})3Ftbldwuvl)VP7slHPvg9}*A?U_dliTRG=7Q;a&J)V;SPW!OO%Aqy<) zmburoo_^!luAWS*C$aILMu+GKbre5>X@fgjNyF zPlV-lW>i|z0Rg7spNH z9&&JP8olRpl4C%>wpl*f@DtpOdvet~F_G{}muJzl0f;gn8raxSiZYFOkjxXZ(Kd5< z@JPf2(x9tp{Fa$!++U8_p2Tp>5U`Hz4nDe~*XHl}hyt1PF>M=@Td0t+t+sw9Awqi; zw&5+=%qoYo7*o9;CU|}2M)86<&SNa%XXt6e(5aM(KRs$7WJdOJkt$ThLLN;HKn}+Y zUA=_7?=C^n7tDSfsq{z?tmMW7E_#RHM)~Q%gj0LMN=eOJrbZnQy*Xwyg~=J^8}{4< zd$U;xZE+|UDxtt5>Zhl+?!l9ULEB+|OkiPAk01G8aY)PlyqD{DD6%WcslBBJViMcc z>|P2fb>%8j%4zL`SILP#teXLKyW{{O~pQ?9zFV2ia+#5KLW%bzIopBQ z0C60#v?DT?H^9_!9K zl}jNC1mS26Zky&Zi01CC(~G?y)8Wfm$J&s2_@p@>^c9>;$D>e{J?xZ?Y%gEDH<~TWuBSElLFmPs_YK zjtcw6^D-zm4i3(y|IQ<5nh{|Jk+05GA7Z77GF~@Ghpo2@o%~uTRI0-|u!(KVQ@%gm zgTt^$*O^vn+L#$*C()Z=isv|aQUh^~BUiyC@;Ok!uGMrEDPj(--v|69Z4yZ zMQM}kEwNp}a^A{@&Y?IcD!X;<)Bihr<)brEM=9?+3WJ(lrq-<1Dac2$vX5|Da=#l zBUs7U%D29k{-A_n-v9NN7;s^j*#<hu>StYo*P}BI?h_=y~zoTzT zUEEkBeKc9Cep$?VvK2@VJjOC$D^`-GGD{kh^`>&1SLDgF@NAp_8Ywt&suVS;Dko$7 zT%oZ7buZ-`H2Dz`FJ{o#duZNaeY(JatId^fKa&pkTf6V_;ZC|qv>-ywm{rSs;sD|q z6zU7Dh9Japg%tj{hEP+mw+>jDztPJ>FnoFj`B9^)AObSHzN#hua38ruaIO~?!tdsw z=zZdW{)vg7BZqU4z*nGRpCc3-n5~S1y1-L2P%(UH5tYN zSl%;wFI4q``|Fr*FtgwrWB*y;@9F8r@(8!|=R1pH zDmY@Dii%9H00z&ueCB9&Y65_YkS{NJ<^40N4ddHKk);CaGTwzn{=<`c88C zahEa!ifuS{&4(LPA9_%h05|P6t+7R|L8Pve?siu)k(0KGwkb7suc$SN0Gu*#zUa08 z=#A{==yLf5)uOmM_o9o#+c_pZ{d!axFn6S+7fS9!5osFx%C#`xjw3OpL89-+N6~v^&>YKyZ6^mUAUyEDB^XkocPFH5Mvm9Y)8y z8*S7_F>xOk41csBA4YPl{XMjq6g%!YKWFz`-&RHeK;xQmYXAznbK0aqlrfmj5L-YeqQ}V@LAx)QGBxH@PkHJusjPxE9R;`!bSk+1j4sCq z)C|3kod?ECTYh2^Qv+dwCwTmgqSY*3@G$}O;F3E(zK@V-U+ePPCnO1~IvbXQw8+^^ zytvR-Td8eJHDbwK9R6vb8spfCz@PsB3l827ViQgm_VP-)+}gwVGANv1%@K%9;BFpJ zi8Q$2#R$`r$~9F2{1-9V%Swr5Fj{)7LwRS^Uh0BZfxC?tV8>nsHfb z=@t#sC~~uKFhsIN^NV%$5krIeM2%5+>(e!%AG}R?jK*E-<8J#TTKPKFha&~PXR^Wu zZkf!?pjCQJR9+n79RSgk;3E%mDs#y+w7Je+w7y-`r z7k6p#{8)n?82vF}31cN_3TQ|_rcARh5ird+beQ{67e#tERH?6)d9*rw*#v&P(&tDu zfvQV{_-CpQ8RjQ>BQydFE1;+scTcmKj6&!(JYtZBL-v^)+X)N|raF2h!?Nc>e5#%;Z7!Bt&w{0# zO_Mx81~YmEKqnu+UqkRZ>*!7w23cx?S!!qK7gK9pyedUl@Qq3o#s$L>P4PpA%9>Q> z0Gx@n`6#4bw#?Ha#7S4;1mKf;wic1k+o_x~GYw*xroWoo_Mis27y24xxl>w2O-k!$>`VTdgscae7- zs8UP|3I%?K$QnjkUPV^2x>uUA@9N!{t3w*CybWV@Vyl1?IPT~Z`S5=z<*3j=$Sm1$ z?>B`rg04IwVD}=0ZO=w{Xd2q?^9hj6gd?SvkmB6+Zk@Tx41V>`9H|QP(gex|cQ&8? zqM#=ed)0@gO?dkojA0_gHy=l5Lodlumyh!$g+%auk)tV~ii%!POvhfi3)$2h;vTb1 za0oEQxA%ZrI6mRij2O>FPGmdU+r#U!0)iRsB{Ab#`gyase0iElxg<<)-){QLWGXZ) zVaM*eegyL}oS_cVi!cS3B1w3Mf=b~;rpB589_`U=*Z;fJgu$=1=9@4IB+1|6yI&hK zKX5L4y3~`+m33_Vq{p;^U>j8+)+Q2ROU>CAATgQTQGar=cyYXGKeqwDh4l>8D5L6R z=0XLpR4AcWH$5r($Gt4+fkOUyC^0dI&#yY7dVC!PEM@M@O+*cA^D4vK?fVuWT3;cEx~r`{HqQHsHo%BrJP)AF9$83HH6b1T;V~OgfRT2 zBuE5$Rv4#lvm)#Oj|i0nfDA^Lw3DA^PIk4(DUeGp9u-y_A^~oVcM9kF8wt;0saW2& znWL2!x=HQN#Ea-+RbqXM0k$wp1%SWJgkzRNLn zhqP4hj!1eV4_@4V;>zlG*<68E@ePg z^9agYTmgB_PNLeZQeQ@1yUzr9uH$~E#m33#4MqSa^-Qv1t1qCEUW^Pk@n^l27v)d2-ASm)^hp}J9&+WtLPLG#> zh}an#n@6)VVJPz$tDYbCdy_k#po8f3>VY(lsz*LMJ(=z68LmSG!A8pErH7#;B{phn z%Uh68j^D|I(1;MDt!9oSQ*;3UK_8sLQdG2DL`KJgF8IkzF}5K>G!W@eeR&*sC?P_{ zm`HF*nyVqq3ppz$G;B9a!t-G{z>rX*2r0J77Xl*HIv&bTZUBKbFi_SrijyQ%h_FHP zPY3YM`qZTFTu16E6N8Z+U1MWem68qX>cno)?9G#l&`EBx6i2u%C@Uxomd{Mm5LHmS zDDmd0v#siT)-h5W;jsgwX7NOkrrrvMFd6KtMOOV{#hXs0m-hLnZu^wT0}IT2XT}$= z!J(D8F$}#XV_x5|?Ph`3_5!7*sUu?;ToxTZeB%N(O7%>8)5~TQL+btHo@!Fw&tmKI zLBjy)HXx$qlbkCb;7m=hgh}23qwkm#wS`g|WktcLk+0XG`V#3qu z?KfDCn%xua8j9A)4$}3?9zf`<99x^;%1Su(17a-KDt*1x->^!X6&%(LPzCQ%ePUKSt{0}Wyu8%Pn=4VMR}FKUg5CKTR0YU&7P!G%XxW=ICxnY?!> zAy|J!N8O?}mSL@)O*Mb16-!&DU)c2T4&k%=8LIH5pd(dd9e-0;z{AFN=ob8U%)!gN ztJ&%HT7RVpCo=jqcu4&np>=nhT!hY`?WgSPwxSVz01SYCJ5v^z+^RKKj=Wjxu3c$I~0QJ zV&y8D%QbIcCsaup>!X-NkLTz2_lHFeH()kVIM)?A!>)@p!3l<*4c%3%KuZZJy$zV7 zf2ue$0rqINX?;FuSa7d&4foNevK=Jfh7n;M-p!YQ?8%?~EhMExlImeTcfXDgdK13V zcQum(r&3p3yrxmQ)7x9obLW3_?d_Xx-)GzQ!SQFb>>*XH&t(vGxIS%z=OP|*y}yNv z_dp+Q2W#F*t3Rfa`>1fYa;)H9I9G;qe17Tdymm+HIf4C8JgO!a=5G;R^mFGd1A1qi zS2tfMWzd!~ajSuV%c~bPiF+(@!bPS(t{tJ>V-KqlXqrSY+3`>{`jyQMCp$!~ky(xO zTZO2Fx0#@5?j2GHa7v~y9p6<++fi7#Xro6)+9VViKF*pd)vH!k9SuF1Z%}V5_nza8 z#W`uM?t6hujf>JP5B|nV%E+kRLDd0{jg~d5Rv0m|8(V!!U^8 zV`@C%B)HC(yy7{!1rO~B_zULdTGugY@LMeMFrX}KW^L|aPnQ_aCK&ys}s zDw8+(-S1azN>ZMrW4Y{-wATY5M@P9ohxo4=2S0|9Z?SV35#WjCV}dPx4_ERmKy zrEIX+pI2P$JyLPUiwqnD;aRwO@-2WfX=$ZU!>NPg6ULa}#RMI#8|Amt$2k>(UcoDvDUCgsh>$FB@Cp}0oNHEDd%|Mc5#xi3BC5{%EF^}= z>`W(Lfg&B}Ha$MJ&g;gqU60-sb4^j3}FKbx;#UN zcXTtj;oK}$gvMDH+amg^peKBfyh-sfZBz&sY~r;9u<|>{8-1I;(_Q--JDDN8rR|N; zGuUodaSO;Kjyy6-O?MMe;wN)$WfWkA2&}R%CGht&n*Tig#CY*h24V2QXHe(XFkatB z0t`v~sPO31(@K?{+F)YVIaEx^s>Vv_&PpxI+cv$u##?7*c>lum*y-$XKq;UtRm;$d zun3I>Rho=c6Kcy>^#$1JuO#y!9%eKJKtNatyjt&H=a^pFx78I8nvy)d<=fLqJRPlF`W>Pnzl#vMlu2o1hsM~dB1Xy!I~6f zp-M@qlsZ?Ln#eWX^YBknE~y}r^S*w$W=ewh+LZhp0Gc1}gU5#Y|7F7L%!Yy)bnSIO zT%z)~#>7yx{zHs%72YB4U|UNPWlx3B4Wmcbn>)yt{sh`H945a&;Gq?1NqMMeLKXf2 zK4bETD4gf8@E-h36;@s5N1~i%n-7515=wWaZ7G^%(DkX8{6b>b=M3cFFwzJIH}{V~ z@DQP8DA-$kYAFOF!Uq3sT@{_=dwVD|vl3YO0(dvl{sr5zMU+d+YhS=H;mp>Osr; za$TV*Bz_U_Y=Ti^YlYFLS(PQ<@g3Nw$aFXuSypEDfvk9GUf)nRKOfT%wDs}dT#3m< zWFLXgNVz*V=4ap8F?EpM-x2jS(x;YXf953i_{%G-DiJem?=p?~B@LBpP;q*els7_D z4L?N>79zQ+Dvx-e5kF zFu2uXIE}|%VPpSgwpzy2#Jc24-f#Nh7I)ilF@JROcxwDrNmQlZslO0@4qb?11i0NT zUbO;o)ar!wMr)i#2KzSw2LWT(R?iV0mW(@N=C^LZ7qbu|1X-X{3PfwxVM%^l=tEN9 zCn`D8-WFx;_BI)j1k+4LJ+I?@%I8_Zzs#pD$Zl4p*elI#0oZg(BD(INr0W^~gSKjL zQ^045@uXh%sj9khx`s(OtDy*=QfKJ))GkT)CxdH9drYStg+A%T_1v}fE6pVF;y16Y zrsMZ#E>yk?VLq*9YjBIzU+mO6C4AwQo^HsJPAkb2*#$|K&dIR7%aLlQdZXb@?|rF*%B)Y@_x-I53XK ze>r#w@!eP@?3&@Rc3a4AV8@J!5s`3oz330)LG#GA=p322>FCo`RWC|{MaH9Jsi++J%!XA*hFj|AtjaxI|K8_6 zQ}h4y5AVQ~SAa{BJ~Pv+Zw?*&s}5g`{-=VI7{IgAD?su@YtPveAu6;!lwxSkNp!0@+>GQ^6mrMIe&RuoQh(1|RJ*^( zHpMvFXERY`pFG&RE$Ds|`35(L00vV5{~zjS)gJxNV>7FJegnKGc#~^E&+dvMIuqJR zF)9v5g*wU0kLrx7D)|dmVUDD-5i|Z*rY2&XN=;uyh$v@P64&Opof2$|M4b>d$y$9a zHp3TX2_CZv9>K^yIOI#w*{1NR;Qg)CrOXbQe{!_VxbvCx_fKEW#REv&v!h^trObge zu8C_;g6uQvR0y{PHA51T3IJ0bV=kqtUUZb9{n$!EUPFxU$5;PlHHa3Cl#}y zB>1h#%jx2fO$8W4o6a)U*#1%AstXs#?pW2Bou3}U-t16msvgFU&!1Vsh5^|bI%y&j z;Bny?wlu)cSW2C$%(#*vBwdvqE=9^|c$Cu%EqH0ejp9hSX28Blx{{gC3B?2kOYNH~ zs@N)Ui5#ZWFmpF~oLG76zFN%AxhB1}v{eCMTh~l%|ebM}cEM8MCCj z57<%xLy8C@^ZSO7T)LRLt<&(c)TA%lR0VPA99(kR@_oGN!I(Y4Z<9+e2hk|?m~4d^ zsbx1de9qGGze7ZWyc`N>TvWe%>oFgJddhz@rcj{3*mGv0ub9BL^EgAe>J=kmWxs|V zlXT)n{j+OX6)IZ+Un?Dsyp#tg#jEUPzzawUC3yE?ZkF(@H4?xs)5H@xE8dg_X+x-R{!5Vn^Q0R}0U*$w8cM6ku@D7Nt$q=3S^7jA zD+S&9(DD}C$mLa&m%s-jd71R01yZon2!R>xA!ZJqSAF&4la;%CaEOdmO}smCaXjRY+!cK}?R0k&FNvV*usNpqav)f7y5{aRE7Yp&WeI%uA}c_-#+O-#Pyt zhk5Z*>y&)4DGYrJui)kq1&l4V3|w*#L5te>vmZv(dUG#GX^{*7JYM36<~ulQ^p;!C z@7G;vcH$zh43Q3nBjf_R(z&ozD&kdXTq430XsaRxsUGK++x1P<6qE^Nyeqj!%>2-v zMh^?nCh8FOyl0bkqx2RNd!5&aFCb&3SVIYS%u%oVw%*V*C-M$q|QBHVBdW7vtk z_|z;pb75cO5snE*49g>F5f1wSwewUmG?d z^n|~A(-j|n61LgMa*U`TqZ0*+zOrH-^JH_1-nA0N@L+-iMLRMPaXd~zaNx~Vwk|9# zq^)(np3O}BW)0JevIk8r*`8y(>FbL&BuVDE)-|2LqkF`4FPwG7dLV%bXa!W$VUGY7^`= zY^py?9gA>7^qM2PIycFjn#I@|u2Y@(GB2fh@cw2dzc7NyPRmG*RZ-kNaNW8gV1o@B z1HoYZTihFLdvxI6+ljmOSm;mX07NjlN+=tP0XMtifYw0_q?F+isPD08FV zD_f-0si3~Fra>F-e_RE=T=rHqY60TBdKpVdSr;hM)J!I`eNljMiIdb4x-{Hp4M?to z3D?S2dRI{$={BTt7fq&M%-+bLscq!HWZmB zl9Z1C;(ueYVh?XU@mQ}i`Pivwl5^|2E#vjp3f}q|-9xLC%j`U<%Tr;I1%x8qIAFRo z(kvU7{k@Jznf*hZqSc~JTKMy*(nbv>^5Mn;SYpSPtV8dfT-}?9-NCWLFQ+r0iN?VW z9CQ*-FzqX%Y2Lv_wFhub&(DZ2#ee@{_DW1E1n`t)YYcRV79Qn=m;-JyneoWAl;hAc zH4^N_(xXi+_oudP7Rc;b1nh<*S+Gb?6^s~OfeFC8#hjrX|3osv|0HPzp?vWK{2+f{ z4lp85`wibuF}ozgMYoT{mHt(NY<)5BKocs{c9kh!(Fc747N8#yEA{j$l1vSawJ?wb zlnuf;kpK~$f`#f~aNI4t^iM<6EHu$W4kJ?s7C&GYZs4oBq3epe} z2`(HyWjnWI!^fX6GoMc2{se<=qLD4g^Aij?j?<=nNdUo+ft>=(&PUtS5tRt}kBO|c z4)o`oZ@Bpg(|{qU6A)RdG0(PZVWUdDavW6L;=ufD z=J3|8)akLNPM;jIpwxW3I*5%*)xdYa$DBYjx>)WklPYU&pFJjw2;syZj0xscbfg}B zhJsh+QTM#A$sy=nZ<-}xch>XVi(G(4dQZ<=H0ct2=4^VTNnE>1IUHT_j4UB3z9y}M zJ8#P1qEDtiOvIWvk5MbvhVi4UKoU255Unwr$1FrAvlBV4#=B+ym3TZ!e1hW7q$m`& z*gSRt&GL+kzHnJ2xg?*#dZz;b65A#5HkR_WwS-F?PcuT`Qp2V7AvnYNAM%DU$G z#Q_TBzLs6`ma2AH`T*WrMpfOpg*=ZVu=%jCVwar2938N%8uU>xqVxBFe;I{d1ZNFb zy4G`j7k4gzsZYyt*#ziJ{x6QNo+Vg|z)~aAzX{WUB^M`pQQGIR93%Hn~bYTkAuGlxEH;TRvp`0;Y98Tvgd7f(#PgT1% zlrLgC6S_?bgy9Z4NM&&>l(-DB^&hBM&Xy3r)Arb^%#NiI@^;>bgd64pl98k6(HMx? zQ&lS;Z<3ja^^n6^p^VYV<9}|w-Kd1(uu&8#@fXy1#HUko-Kz7<&x%!&Cw_ed)coYay2f(}tBEvJ^P0qtlt`ZGzl9&w)t@Z8&ijabrBE}#3W zj^F!Fc`K&@SA@epoQt6nBQT^kam!rkv6OE$B|@UqqgMDszYL11+X@v#e~lnCf1@)A zBs6L;QjO5p>>EWtuZelonOSr#2L)q98d%$zMGe=b)^P!7{n?`=ib|+=1AyKl0gC~!a31WwI!~&gYEzW zk9lkK%n&R4g!xsI8SN@p(#T3JVDWfpi8nWB9bw`+yl7+zI`)O~PN_j4>y1cInxt($ zqr&;9GU9eTtKqxAMy&uB859gZ*I=#r@tO(bmlwP%2o-;ryPof7g!3ku5qUg!Cv_Fi zK9hErG+eFeH9G$rCUIeFJS0FYeI|9K2BH7KQt+0h_=Y3@HNeJA<_An2OmX7#m=YLk z*sC~l1=%tEtSxf>0VB@&I$Z$>Dlvccp6!X$xdNash1RZd*lmnc1m$oj%JY2a;+p79 z#&|;xk_Q4U0Gl;&Wo(JT_~THJj2DH`4-%>mfFT7 zF9j(nbXdw84Z{HgvYI~27mX0Za`0hNyXRsPPcmc~1vPn21X^En-%-sms~+Q-D8E6@Fkeh3c9t{ArNyIrJi~aN`Y^CyH9ALI6 zUcq6$wK`xyDqACC51|Mj^~2_!A9JRETjCjm)%8bLwC|Qb)&&@Z43G)C-YB_D8Nia^ zMq;w$Y$MNRu|$8k%C|J$A5s%tgI4wBk-L|373(k|-gCU&wrAY^kPOdr{szBm6uLQm zgRtg&7m|0yL@LUibngsA0n~if%LH9iOVtRIy>q|?%GaLSAk@!{Jd6c|UIro9=b`Ug zP#Mqu?+%Bt{JaV>t6}V5CB_LM9%ys!5uDnEhGeboRVE4Lln6ZG5A?b9 z_c@J;%#4_ezCvV?6TTARZEw!59!w4&(O-zykD4F;{Re=4QbsO}>gLU=YfEf^Bpdqv z+1P>EwLI=wNq{ZJ(I^lU187CwUYp2G+l7#?kz8B<5c*am0WI=>B9Rq(egwI-=5-W? zEs55=^S>vIu0s9hX{k~U)hp`ieGSx??1oKzda$mwPl+?6{afHu44bmr^v*w(E{7a* zuv~^ri_Fu@G(D`fBP%_A$1aOBI49en`4F@fzH;<`RtAGUVevTh`GAG#nqzJ2RF*Qs zVuST{o~_5(%ZUF)hQ8H@ItRnkC4DQ7{^`s8l%u3}wBGy6Jl?Q?L_)!ieqH5IH>C`Y#yGrb*i!hYm#y6U{0-9z)4yf=Ih zXG$|_83yx|lTbR_?Rt^OMG^iERgK*`#J)f6zRxYp{TZ+#u zQIVweg_x7C9&Ze5HDx|(y_Qmuq#$+Q510zko@&EO)6=X0%(Ebw_Kj(AJuXrj2XO@5 ztGhc+wIFjAL_3XZ)TaBF*b|A@?{7% zZ!T0!xhC~&ng})zBa!vqngg0AXTPnM6x0}9jYgdyq*}TQ0x?JdcoT}waO+BIQjVg| z{z#}MfzWFKH!y;S8Seub*tYjdzw&ms*T^d8irsC9|8F1Wbd?9 zugJ~EIpyOjK9(R+Z;RrfY|T3MYmFzY4^hfj4V#EnLK4L<8Ap*NvCSr4wJmJCVDp!? zNCEA0wvFwHK)>vK$)l;4H4@%i_sQ>PvJo+q)M}w^7Iv^)}36Srnu)j?crHhBQOi*B~YbjL5r3Q%>>K1>_1Lz0Z6%gR>zLol3QmHf$ znbPc{em|}L>_{LO`Yh5^)IG5S2npvwEaa+GE9^7GdE)3T*YhwHGd?213aXuSN4e4O zy)2f(+UsKfcoOiTUzI28;T(wvCZhugO1^nwh;(F0;6fAHHE&{M4xBS1a%{3SUn0HQ zpO6BU(yJiu99g!$XfGqiMQU!CR!|_MRDeHynWNT=uT_A>6O&+B<=%#jS?@|lD5Zse zf}bs#(OEi-E=#MEZdVtxSMXoy(A#+LQnT2zuNk2+W9*6iHiTsLJP3_kN<>agb`&kg z?}c$3g;5nUXOF#i)dQ%qbj+s-ub47;8J^;-9gY}UldI8j>&}n)^yFg4I)~a3JvO}% zaPw%jzGFY1sBjdnSKp;~%9PzHT1PEEO*2UBs@@ibo5lW?7t?S{ZUAZ^8_O9m?^!Pc z>anMLzws?Xt~N%}sq21TQoBX$s}U31GDG2ARfCxxzyr1MAo**IRr0Vq_8@>}m?b`C zVb8q2Z~TSAVzl_DVdFlk`P6m8N)FO z>M^yVUjxKqFRj3WkpEB;(NGTE&pDQ(D7`(t2=6&b@h{;$iRYhU0DYwa_IfDKcH2=J zk)HQcm4L;%jp+aEjY?EM@;&bBBrGIHj&KEj*t9i^gnh*O+FN;}$%&dD?;5~nU58Jg zB3HkQ>ipnd@fVL}8T>YO*Zrb!`;JE;!UvWMm=n7T;1BUcUoaNklPSy{b8QdS&v9@u z)Z@Tq?*S-~0x;Agt|9IdQHY$)Q(5U%YyEMUgQc5`@!*F<=*t15MhF4!RP#>(BR~GG zfSKAR1e}0{ttN#C{fkV4BUY1v3sb2s1C&s<){Sk9Nwiw4=4of|@UWbJ91z=xQq|1} z46*ZaNW8TEs9StoF};$0#UC?}@Zz?1<5u@Ic2{o@h%H3>?A#)ee>ZgT$(LufoC)O&LOH2BWCvBF$S`do0t0uXvAXe!-753`CyU^uRidWOqd-;_S_vyqr6Jr< zFeR>eW1sZ5Sd5Nrv@m!ld%O7V#_14$2f8_E}VM|)MC!8T%v8uErtl5gRoS> zzr{i(bE82P>Ize7GbXtuR$U$g8R_T{`=OVj(kh(;PY3+Qk~pES2*42}dNl>3O*n9H zGG;x%u3D}DNkF#0PMvaEBb<7S`a>Pg>|`-?yPhAoVb2FnpB<`hsxzJdO#%0A z0-Wrd@v=HmYq>%zm++v~HHjCE!pkTx63`WjENBD)w|=I+(?ySi%*3KVug_cN@EAki z%)5(v1nL4QCS|pPRJ1vr*j)Ay=|fn?ie-6Xstmmi5P?WcoJ$0Dq!)KRVSqe@@)J5D z!>(c)M0WN=TQ{meok9-JIm)<>Puwb~Y@AS8P%C)zVnnO44U)yPezl6k^FrwHxo)GT zU@JqU8yaX$An0Ayh0<5x7p*1+k|voHEbXw?2vR63EIH39{GJ*-#{;g)6XeQ!!lkGFgkPL*H1y>5+9?rg78%0)u^~u*GuC);{k+&9N!hC~Ax;_3*Y4ueL z&_o&#6h}%@1fbh$&H>FV@RIgpSF*XCna~GofNkBxJ0N zKc)3T6HXlm;JZ-J(EG6rVkAz=+0}GJp+g9rySO{Th6^(p*kioeUD?cSdk;<3HSz+5+tpRbsI00 zMi4tuo%NPSrr!{Tf#vjO19Bqwk2}C$>NZMDoljqQcT_4*S}LFew!stM+?D{EnZ=!W zmeR3^4&4mvHnzk?9DQOBKZKdw3kijrxhkBfa(Y>At=fxPA1SN^`hxGz-va)bOOw+1 zT227@`?(=TqMpN#i)avJ8Ok>i$`bm<712A30s0^}PIQjt$r*cMal$j;S|svnGcpvOog=*}EXo82{MrUC;RYzleN|NQP5(2EnrECWv4=Fia4MBbZ!dFH(kC?Nos zxp@whdjIfYIz96q^9pN2b1Y=|kWzKe_H1L34cLE%-WRVBU+5D5yw6t0kqzrH55T}!43u$7s9tf7^C`|}id{~GNu6-AqBTH!!D$)^vp zI)_>{925{&#pSAX42oALhkeonwJngEr+~F`>6O;Iy8)uZ)S{jwRvsW9Ju`Sduik*( z7i{MPY z%*p-Ve83dOs#hR@!<*z`5|%}l$Jc~xr@1ogsb2KKpwf40+M>>ye6#Dx4D$)u)O6QR z&_3PkCU{bOGJB^qm4!792gCz269A?J+pm+SdvTF@1k*l5k$Y?ZqM}ht;1G&Nu-z|m z58tUR-TrOz1zfB`I1Vo*`*ydYN?U-8z%(}vguPD3W-YFG(B4+iR%bf(!N2JSXieqr{TPq+(ZS@P1 zQJ)&GVd97_sp@bG*9p@P<&t<)R0ghrL|7=*ssDLsHz9fJ0REigk5<(WMF`wTIj3S; zUiVivAcNA@{i$?T&aFxaKqW1YT704LN6|2%NDdsv(3>5A60jD!n(UdLWOpDE=n9caD}fZL<*6CucdaHKibbs5n{am)O$KbPTVwo4(2)Id5Z+R;kgCTEGc-}BS2ViBxd#yIEVJ7h23cr+Bmr!!eoVLbV zV@}MJsP=k2Lkxa_lbxp9gviC)p2S!X!^ja*)P+$!Lp`PohC>XWJ+4TeM^*BT0Kiz- z;pxmeEA^3ZVF*9iW3!-28q^`_u}cv7$Ni?o8?fE!a>i^g3mJEaOX_V^Y*ZcwFLdT4 z2Rk@kHdeFUN6m+jr4Xz!KzSe-;ddzmR?P=YAtf=wf`D;EUx>cUMplQqlE)CLffu9UrUL` zbMVwJx1=T4-k%OZpSs<*R2;f4h{WY>C9(m|b5cHL2%$Z?{#^e>t|xt*kkHHiCO;s% z@!W&}na8a+vf+3phruuQeJ@z0wLXAGGn02n_~zh5S(3%wYp{Lk8Tq8t6i(nEw< zl_G|9>|d_5u+-XR&~mRNKyZx~A<}{6kj?FGY&wjw2Kr?Z1)I1*H~-uZzsn&j7O$ZX z602qassbRn=ToE6`s05~Pol0gDzheq#cvlU>v|KBdpdq`f8=1L*dhhN(QFyJW?9!^ z$P;Ie6!zyEIKaHI6dBOQY$yiuny?l%^%RT=PE$z60|?e1g9ZGUDcc~v|ECdDUT+4{ zykvK~I-wL-dZ!?LkQZp*?yx!#_F+?i8ncUbwZhN?8o$6-9yQS>o*tBiK?8v6VB$yh zBq~uSP@*&p{x+KwI7KmLAOELz=X6@?=qYP%lh#8kJzOyMO@K(Nw?XGHE zdZ&taBezo}~<3a3OS>> zEd?VmB%F-O($KgZRoM&?$k^ym0w!Qo_ZhHBW1-k)@!9@DRyzA=s2~OX8_I^LvRCk~ z*e)Mj2HgTTof;}p(Nbix6w-PC3Rz9+nViVY8XuIlbX$i_!M~W!_~NPCcmui?)=ouO zPwo6amUH@(Qb>H&b!xCyPqt1=;oy7E$mSG_%0E!Pz~dJ?x0MafgJ;iAvbt;K+LD1X zx?0H)D028Lz+QVjL1Gx)(BdHzpsO%D<;KoLzO~hfrl|*}bF*~&Em0OM5A6}!pV%_J z3MvM3 zx5sgcwBgbG+c9llvpE}m?fPEx6lH$L3_B4#Zi$kmYu*JSlEk$K-^sd;g~;2FyR%%g z(&AHLs5o)WU?0ee@dE9|MaK&)M`7p&cAKhKo1j)VK+G}QyJgac!8h%aRN7_ z0igSSzj|X__OC7Fv5r`c4YCoU;<@L9UnZ5{9d|OshdDdVysl@{zK9UoZ^yQTo}_pE z5@f^t$)rGxFMC^*)1pX^kk%1VK&)^{iK$I;PZJV(8p(0vq(4l?^O!IWdB^(KW`+tl z`C$`lMGu?sSxGUN+xIIaYT-FwwXOq4CvqXhBDZg`z1Y1OhZwl2`ixNl+^`S5JwdQ_ z%C1U4C0(k6>8jfal}!`MJ+Q^j|isRkLPZzYx-bX9ez@uO23OT zC||qA`Cl(3{1fjZR#aO_oyrVUJp|L%`l>)%jdoua2SoNGRPDTo!;mhS@|XaPzk~4R zEp6w!M7#)FTPB(%u$qqfaF+7kwgt5%d&`#Yz#cSx_O`KCGWY@Ki@YJaGntpLy$Ads z1i^{}AU_qh3&|k|Bj#e4j^X$lySeoIxvwPn`axj*`5=VpID~Y{KCDXYjuQb`u&6sp zEMOB4!pkGMCvT`q)aF7#Lht?@52C4`Uh(nj-F22wplElla!JV@=N$ zL4Yt@nYuI5%b;7~;Z|MQ_QS5SRqpkegl6!xkMSN|+C+dTN4xxOSm&X-5ssA3<&-zq znsP=pj{9J}sKL)HYm!TX%ir}h*S!X{yzosa)V;jsO_^z9T}#3&|9f{n5nGr>fk1 zaL;wXAoD|W_Bbw+BV{z}+|L&IJ*aS?1_v@IT%JGNh#HF9oQO%{#B030m;Dc(K10za zcpWfEf)O^6_Wcu$4wFw3$5_62K48XVH@3#}0{>@yK5D;bPi8Sp5Td<}u+tu-JZAQV zymNhE4;>)&xznPx6_V5xg(JcYG?<`96M*3Bb>y3t-&B32qQSn;Ex0v~Gus+kjjO=* ze^j9eO&!x!ybS9?ndWqJr?#W=FsmbN1_|^l_33b^J>7Eo;O4|Qf5Iuvduu-Gpr<$H zKrqOT1>OmthVZLzDdy}VD=Z|vjLW4OR~!}A`RDc)YXDR-8kPE){MClG`A2@gsevw} zTxFU&&HuMM?-;5gCBb$Y*L!9}w%!q>tJ?v!Mr(;fpwFK7C`ohn-q z+&QEUHJ2QOl>bXM=P`j>* z9=@J&rSO#Dw6x)3T4f@l>D=h4$>SEFUU|dWt)~|dTn!|$o4RNKJuGW|6Ft!>TH0*- zJg5svo?*oHB$14oy-+B!bWiCM){vB3WDiX2&GI_Op5Z;Y2y*y^xMS|&DYN|}H+HSN zB6rz>S5&`*m2meb7S(Ajf;s+!uE zm27sX1_-b0!JcX)#A^-WPS#-B;@N6}4mU^mh#GTOHiVB2dt#c}dt4!!W?&vT|{ z{*H(Ea~C3G74D3xpSs5lOsh<_ z+qTlby!tSq<1xP_&$KJG<~M1h?KV+%yX(su2Dj3reocmytB9-?O}N}egn{8s=JF+! z1WASZI@V6Q=UOQ}8*(Iokxn8=(&%5rYq7^N zAcQoR3mx%X+?d#N;Zn1?3Rq=YtfwV#qg}w- zpNt%~<|Wbgk#Y)elRf`pT=NM+>oAeuODk7l_R@d9&{`?A#obt5pm!c78TYe_o6k@j zDdK2F=zLN2)UYK^W%Wo5G74}+pbKg`3ARnO4eCIWndLmyU?!yQ|6LuJaR79#H)!tx zs1ROD^TK0(s2}tNIqnOt=qTHb^%OCwpo-iCNS5k4-I|gu^J;q_bA}yD9au1l&u?ff zK~Il-YJ^*#TST%XoHX8b)3HR(L3f_u)NsKm8QX?aV{!Us+#Y`cpZ_DL63v^$ZS^b= zfekAf`wC4wtR%346_L{?PlRRr5Z<26#M8`WCHJl4N*ys^tM+My?4JS&9x)>ITbW+Z zUBe1C{RYtPf;OfHO67Tq%#*+J#u`li6Y@@L$+2Zx{)qvpjw=qWcwk!nG|n_$OM?9@ z2dFQ|t5kT@^bWQ&!23kq;gPm=o^ERAyz6L$?4~8X5EBbw%PC-K`N%mlae?$JiwT|2 z#50G)ej|>Jkb_%17)0EumF3`h`^uJyo$(a$rqVymb_?`m`1#-ap0rB?fmzK(e+;S? z*jN^biK_l+Bi}ZPVS!$PZx5AX^)yyu0zH#QnG;H;8BDnpfE94XRwqm&dkN8oY8Yd< z7Dg9K0y1~U{kTlX&|l< z#cjIj@Z+X?f2a9BipAm5#&heA%>oV$hvKG;H``X)&Zk0roy9HX{$FymX%Rkahy-d5 zYL+fQA<{zaQxke4(uxq8aj=^zWM>(5+}_{GuZ(NbEdy(N?v(D)*_jpgHmJ#tzuQcjXAt zoklVcg}YX=NLoJFV2%mJVg09YN?$qhW@(@Bs=&h~@Na)zim!?&=~LWzUxP41)L9X+ zy_5VX2SB#1NwlXV1?L;+J_nZeXNcI}>#$tSt=n)lP=rx%R{bjp<9=8e%)2{adwx=W zidw01=_!H%GnJ661dgWsr;-p6s7`WR!lqn(RuDmL^1_r%MF5~h6J>lykgV_>xC=nN2}lNp?x5sQ}DlOEC#yYF{MJo zA|XhtZy-a&@|V*maZGqO!N~hB7a~ljvK_P($aKF?`VWQlwcQ%nHi&u>KknpYUZA)i z3$*{6N#K01a9LhB$JE9`$4S>@!~M785cBZ%j=N??G_;(nr5tABaBdKD%|=SKeOY4P z)&@t*yA5QVL&(B7$I4){Qt#34Ima5y-CAZeu^)WqzmqI4z#HCLc zaQZgpew_l@6wQg9h>st}d0$yG_~}0PT&v@54|w_oRagi^TI3^KE%+@RxBw3r4K;~$ zaZG{%iR2>@|3kPDhmCmc5Q} zVU&hissk!e>MN!ng@ZsTCP=;5KHI)yH+^yjHo-Up~RO7v5p=khmqIoo>19E z{-*S7N>JD)tO%`eMkzr6lGbv8Wj!d{!Z`^Ho>KRpfhggOK=tG%5xDw?oSUyR>dnO4 zdtRT3c`v@!+ul{9+jt1*($K1V9yR0dl!9c+>271hf5?7GKYu6Y4ps%E>^~Z*J*2ZW za*j*1)oTfwNTik`sm9s|h+XP7E7`gNJ~|h?=u8#@vUP4wRe3^cbZM(+`+wn>xO4`s zWf=L$^F7pxfs$zL+Z&Fq8M8oL^R&h>@_`UT@WnKKCjP^?f=tVf7dSb92lJz20gxZ zf1vf*kRP@g=jeK*yon{rCeA>unlI=otO<fXJ{($H!WrCXJO} z{-u56>)WF{n(_XxnQ&bm{1n=uCdOju%tt}QIrgN!1Al{N7K>KjM=FZjZB1$MO(7%F zvE70KarbK+Eq@^FO|JlrZ=Jczhrx_x@_;s1X&=#FkI|f2r(OeH3IpH~S`9r$0qt1W zIq1$w_8isAPCe1OEnKEW0|Jo1w@deA|2Zc40Otb|16GG%6EK7oEB5`Fv7AD}n6%Si z1khLdog$vQgTmC8C-mT7k>-&bdlg^HWQWy8(1do~y51#WWA?+hGP$E$1uZ`>mJEUZ zBe2M88OP>7j$(M+fa5VWWKqaSx~|MxG6Yg`L~=2!_Pga>GUgx@@=3=2$*sg@K5e~L zL503V-)TNU&T8Ig4?Vl>BeTUG&#$Yd-ZIl(;Q!lPPwpIL?MJ-7y2fbPiZ3!Pexs(& zhBShkN{|PT9OK9L5W9Uw;egzd$u)LU)qt;@(Eg+y6(06mi+Kpd(N=8L`FW}yNCX>E zd>hj27Ug=$9R~Uun^!4pkhrH7%&ev*pC;V^;NOpc6uT9VweWimt;EvLgvJ|z^4J5a z)?Di$Q$`nCa8${t%8I!l_x$*_+uJHvhmx7$5mY=*<@r{f{P~%hWfGyK4SWOo8@%(w zQpHYuBOujzvAj$nToD?nyLfm%8b~RYKb7NX_)e-6O^WDu9Kp&gs_efo`xqG=~s1nMO-YtnGI{qFdV5^bB6t#fBE^5FP9{L?yQ=u zbEXSwv{F8hkGfY>K>ccxt}f{YK%3SE5#4jBl0GCPif4H8+H-wR`r^zam&OzJcIH)z z_<97)Dw+ab`y7+z=LRUp6L)Xk(kD;bNICjfs@0KV!^6f}XIN{)3Ch zx8+chrMy3omaS<|AblO}&o!a8-Ufn)^k+d>7he`*Ad*u9EOEwZCI@`!A;-OdEOfslEd~5gapL=paw8vlnsfC#QHu&Z;=A z7$6tt$FW(x<`N88G-9kP$&FqADFrpnwvvvUy4a7zb+yhwIpHAA&VmpX(3h7@XI@KF zk6fsXv`E9GCh_rL5|8+o0q|+zT!kpz&eigT=QL35L=Dh&WAS+pf*@`;c*ObLBD867 zbK0cxO~I#s$}2#hA*H#u02G+XW)waKr1nus$WUV9J2K*9O?So z*h&tuX5&5)KgaQ!uu4OPIVetNe3g2Jp1L1LRogdcSb)hgk&bru|AB818S&)!tFimt zuRVT_M;ig?8YB_T8Do>JGs8g>dYz6h2f$x=!W@NOWBDe+e6>X>3VoF#_(eY1zb~w) za#7~80=@~+4B*g+gx6CrenO{pp6G)ZkR_c#6p}@qS_o2EJzGu>Seh2X)41r*YI~ z`z0^8^hCve9z#rTmV~zw&`%>l?Mi_vuTN`SRu_@>x-=ypXuYmxDVKW8%Gff(&B%uXH3*d1qKr$Fp+p}g^JM6W+1rA(NyaVulD!ItIs^T|IVBU`)yIl@?; zSCDqZysS&^G-M-jPmF-b#LqmVbp_C&|1oTZl!&=)m|jwa-2vm3_EUzi>Uzxso)a6h zq|HKFaoTtj2#MrBrA)?fA#KL${*;#2a=M1V?@^~%Vdq--R)o3E55?z^E*mDx=6Iib zZ2%zCpr-|%g35FUpH5#U78>6S&g=`JY)!~XvKU(+zlI-kV%1I$f54m)K3xrstOSY* zJO_C}Q5o9_eWO^cB&>_{fBH3%Ziei1Owi2OchoFP{ZKreufoK5@H zRr$T{5vK##sA1N;F>xPF))12Br2<;a1Byl*-s^58v`PopS|0yWH!VCW>?Oc73zh)vJ(NUB%2p+6aA27{ zM?W`5X}yi%+VaA#UtCYsJq2S(pYXp^_9NA~K?=fl;dSH!!`%H{ zPv;4(-L~jeH~K#!$is$r?@QCu5DfwyGJ*S=Ku5lF67OO(T0h}_-otOhF11@#jy+F@ z0CTR^pn&!V9BpNX)d!I=rg4twCuN*|6Hg=+bvvkvhrO>2L0U0BOhDm%KN6eFQMd&* z;5{DkwOF;!qV2RBTzjwuC(W;wQRMjX4ebyt&T&KTvGVO^9o~-k&4KQDPR8WrQ2Zxp z6RN+1!v=v=NwDNxMQBmdQ!defzXuZy`iX6)%^7_1jkRj`(uGtM#+NljkK?lWi#7te z7f7?U1hGAH!x7Mx!kArU`^GR=u_i!6#7$5(6r$1SS;F%cwJX(Mvi{C8%j|c(p0Vpj zaCFgW7@q&b2_Rxm+7YH~H%5e(^!dY?`nFZtckAkSf)McPIr25|8G|bT4g~{JfM(rQ zWR~f7ZS56sLvXV~_!oe1ecVf0tIw@~&y-X7%D_k`b&2XWhOZ7RYmY=`WP`v4ltOIF~6wJ4)X1}xr}x%V_fLF1wj6b$QW*2MJzNfi#@=l3KyeRNU?m85UXkQ@AR zN*)D4v>2;qVhL5u+Bk*A3xM@9YKFWWaLbgcKAAklW4y6t=*dLVNwOZS8jGx2p_oSf zEKnr6&2~@y5UA{ecwR6RLZD#r2nW5ve>}9Fif}+^C~jGd+V^^*P5PqvJi|`{+aeg% zLzVi1Lyli_S9=qMcehoA5cxed&dn?%}3=bv>#1+*}hrM=5L_Ld3O6rsT2rrJqrgjpke{|e{iMulxy*9sAH>+jAFk&9d`|G>v=MANl zv8=kpD5GJy{#*3dHFR|sCLB({2>0KG@e3-u`Jg2*skJTh=uj`fp*7qgAW!DA`aM~$ zP^FNWWOSfNrP_mi-PUN9Y+?`h{2`q=bNcI@GHqv3e1EYbsJ3KeAhpLSUGQ5o^%>)d z`0>7^x`EDGKPSR?o3tOUg*EQ+gjcR)XB&<7`M%LGXF?BXuaG>md-{PTmq#jU7sUFJ#%X4#By3Vu+AC(nFH^=9>7Gm zKKO}qENSc=JJZuv!z&Otg@;@6bpDb!EwFt*({(V&nWaF@;1j^9is|(iG!vR&KNN6( zc{Iuh{!U<%0dFc_VzT*D1R)fE!A9I`*>$j&^}(G8iCdFGiwP6&lgO?@)1kE@)}J>I zU9|<<%IX`V`6k}(g#ty$%&ka+0ICMC++Objl}z?lvF4N)l_%NZ>KsZoOLq z!df16cMcIwF{8hclhjf7Fv~qE$~)NziznMLZfrJzt}`W<`6+@QF5DapHb z?7g`VZs6#L0BjwUQsb*wMVr~6o(S~wO7XU?FMZML&!fO#v8%#_2<73m;0vgroeEzk%w~4b7ko%S zn8sBsBR^&2a8H=>hE|4kRJ;yVF~tST z-7da-#iR-qVz}4W1IAT@Makg1Ua$%9X7a0F+;&qN5d#<8zoU!x=L&%*VDiT`JdNHh zKx3d2tW#tpGc5+2LiG`Iz_3C8cYROuSCU5~HnMDd#}B5Qk|uMoVr?t`tcU~&v<>VD z;)#yEe$o`M2RM(+zu>aOhcAI}g*snYm|2MT9v|y2Zcx{LH?pvs+#xRQ7vmlM4yGZL z&iX!^DQrzKJ>$CJbw$9vRf=^fl__=l z@cnxV=fMwv_;HzW4m%N}r0e^3{$5Sioq%zQ37_=9#R1-*q~x{s!$A^1J8C61 zL1R{YA+guCb{kKx==f6W{L5~W5B(aU$G( zFDfOpF&A^7&iSu^8+i}mNoZ(#D(?kk~WywF>KYq_ia z=_?bo5-yY)yt+}a2U&|(v~Hk71V4PPGwOQvHQ8hom;f8*X4E|5+^osNJSo3N`F5iG z{CDRW?pMox6{NFuXzz?5`Q7@igTtE_Y+jw-IbXhA`@*&zb!D#mHD+>v7<7z%F^J+A zO_vw-RP;NWPxOWXCUNspiEr*b-I?F*tJEUghlxsHSzh;3mQt9`QG7BJdm-YYL#BOZ z_q%eC338K$t|t6Vh*IA+yr;=OUcP~kE*(sbUT$!#wX3n!)W_7kqX64%zrH1n>+fjh z6BhYtgxhJ9Y*>n4t2t2ciVI%=iSQa_4&5z=B%&)S@+j?AYbkeA`@X$BGoP;a22*PIz1n#etMuv~`5!~g`(T|M~{cjBJo6$0- z`eT@B)&}(@mcnhFODKRn?qBm@$l-HgF}LeLO`loxZ(32z7>g z1U-Op+Hto9Ah1vJ2}5!7R98>gg#62ZN@(?ys{eaIr~@mOb*&Ac*{Tl8vMe{Q5DII= zf7Y=Uq6<)0doMxl^h~M?)aU%p>xou@m*_#4Um*12Ja>pl?XItS^_)N#2_X8@ z6chBTBMLmJt;xvY$;y>ny^+Oq(gWFivWn6QkCWSs9qpv`)uZ_lwa?5~wJ$m8p#*Vn zuDYQ1rsj*rlW8kTmNs>pcs3t@4V;bCXYltN%v&g?NoRLyaMRG01?3R%0e^>MGuKde zj_NUxj!n!~D#-?^29GG`R{Rd0td=gl**EQ%Qy}U5K)Yqb#@OsqxK`v+nyvsgq%hGF zYR8XP)%oeD>TFJbgil03s8ykun|E-ddBO+=Ba5Q(^Yl@>uRBUro4Ex@%{8@dYB5JE z<6O=G%TitILh6aGz$Zh<=81bT@P@g=bbz56`+F*AyhS?--9AarCYQJCGcW+^bEaz) zpzq=@Qpjbcfgz2$JSrcBfK(jWEq9Wtlm1Kx&`bsce32NFB}&>8M{A913VDDbD` zK7hdc|Iud1Qjb-)JD9EzoO8^2XMMGSCgU)4t0GxvXI*X+li)i;P{APD<3HkDI$p7P zbhWU)YeIF-#i~fn%#y3`dSlTSfFujJbT2;MFE9r1I23Ddk-xUlsAQaY zzunR0a9l3S^3wensEnV$^r!47{LNWMQ6qp&s9*XbT6HNnnr@1YZi-1V*YWEGuk0fB zZ$Jjy@d#_nz zQ*Z2&tE1MewUNRnY?}7em=1Sv5RjnS4@fIiU#(|#QHUR+i{8$Bi6Tm)&Qa-Gay3iL zrPi;@QX=wU`A)4$NVOG{oQ;1St(us+a$ULoHRH3*YS^>G5Xe5i+f%8DO)gc2GMu>@ zu^|}tQ#_T9!(F=W%sbcfbRnF;svpij?6nG$?7%il?k-4vdR1SR7k6VA+Ju@jfrtYJEs475%p^NUUDcO#X z>kPpx5Ps*T5wbWs`Sdd)i_5%U1_Cj5`Gczntv2($Fn`dSetTqcXKlIxGCELtTg zEHI!$>93X?RAn9*0arU3maMUi>Iu)D*WIm43NU<7J>lEq{_{j!2ZS@7%ZEeyCGEf>n^uo4ltHJ1e;Xr{r;6A!{ z!38pm?p?4n@NXXe^-yQ_CBE^$+VzvLX14{+k!i)cNs5;xkdHb^ac7VUEP3Un*I*tY z!f-Rr<6Z|m56M6DO$w&qH{Chu+wmXv-K1dCRl0Hg1rq82v-`4e$U z9{p`r_V+Otw^O|{81lBG+XuV>m&y@b{DqVk!2N@pc?Uo{<6wW+Ce(?1!uVa2A|K1I z*kjJcOOm=L!|C|{KX!5f6pb*uEY4~qrpe2n=EYGzKwboe?W zx;`&*x+xedrFk-Iiqe<{AvNs*&jug^gUGaP;`x}E*%xhfZEG71N))cqo>*^4l@AXo zE~q&O0T&+l4w5zo9Bgsq}$!1-L^VyzFWlD>OQvL6I&nphqai_(Wa3KnyB(8rAH0=y^Qtc^N zx6Bx92rdh)rgx`k!P#j3vM<=S8WKK(^02F!b8>TFndLcz(7)P7;!xHkS%Ff193(UX z@2^;Oz*a#?w^CiWdr8OWO@upeXoEJ0){QT#tSbS|3SE|@y$;aXG)Z{0s%I!A>{~M@ zPC6;}Iv3$<)+jVbUNm?}WD zM;DT*YdJ6ol)(4~%~IJ;FS6qI!BmZHRs*$nFaWbVhPFi}Y8qC|f8R?`I;!v?4364( zNE8*XN(EYSnk40aF|9zI?tm2|&8eqb+)wpfgS{&Js4v4fznzC~4mD(+mZRoq^*((q z_?uSMl_02B=&B6HPiiK`RavjEwU+(Uy|VJqr#*|d#=zP&+TFm7C&E#2W}0>qyo|#( zlScI!66>L(F9;(j6*>0vG#gl|G2IriYB7VxtX9o6S>u8-E$#SW zJKZ2d8Uu%U`onnfd7TVhlC@XzJLK_}WJVv`(F_aUf%ha{HUH z_Is)h<3?m(Jw<4jnBykN^g)7|yy5rtU%pw7r27|3AaK+R^B>j)FD))`A7s*fv5l65 z>yEZwF{gtGQvY`iXh6nsSUEBNI(_C&R5>uT*&Zu4uXL0U-pN?U@y@8~@pn1pMb!O# z`H)WmI@sb)YoLwUHtD%UIhv!EQ91a1(LC?Ur7bf>+D6nVyl=Q&?Mn zDmFU9B1MA{Z2^!E=5m0sVkaPJ1}juwG0NO@9*$a5>dH+h-P9YxOnPW2f8yGQb`(I6 zEfw=FEHoYvjHe0kLgzqto=?L?K>y1!@TG)LPt?NWn?kzaTL~SZh%85bRQebEWFLAC z^hZ^l=thP&@UVCg$%O{3k&wu6dmldahO_p!y@L2|9pgIH*suJwWA7GJ zKRGGRjj1n7V1<&CmF||t!wc@cHYCz?SNU(4M9x~3N2oleO>_(HMDEaFb{h>vu8H=N zkv(vCk{ZQ^vqB`#MhS4lDglF5e_UzVBIL%e{i?x4Frz_D8uFHk_R3(JiT@VK2nS$f z^6A3GqF*P8&&YV}lITo$!9` zeqhRj1Eo)!1MoY`aBYJ|>8|WFJo-BbbOvT|4^wGk;({B}QD03`;P~LI5I3dDz=_9= zTab#5$ypt0z%CpBKrbWFyfs%D74knqU(_!T7o1v#o>vUAq$iiWgz(>XcQ8SD*Kxf) zIzwwv9GErK!7Q2`rk}gqGd;{!_QSfDm1=*lOnMOHtX5ibU93z~V1u99@dYIzF4ZH>2VCQ(BmTfoE#&lTsz}*J>_5 z-i(pRA66ujxR#W91$8^P@B8E`-z@|)*!r@jOuxr z5WwvnZadxDBFpaVH8i9whoGlD^7sOtR_%@HHdNJ^M74W%0Ll%_Z#mGGlIV`N9<3PwO=^1*Tm0Z8R+yPk2S=n2R{Kf7jOmRwv{;B4)kRjfP%V zh;9~pl#sG?RIu;4|Lx%d}&(vg5L}D!{AQ29>sKQ6% z6f_r&4Fs|)ESSjB8NsKip4d;llgm5Nj+7)U*p8Y}y^@_1e)4_O%bDt-#~RIm+_PDb zvi*UAF19>_C~F`R!Wa*y_o{?FWPQ#rkK_Jrn-+014T_)Du*JJHGTCFD*PlRT+l76w z8tP@>R|;-R2bK@}@$(oc+t?xyIa{4S7;?7=lD;nBp%M4Gi7sCOeex*)jM)1WgH>cI zYR)`zlSKKPbIlZD+nu!U+x%ii8nTg}Ry8mX85u@0BFKlMW`w?I@Fa89|CdcZVi47a zL}xm+UoW4)vVo@=Fp)9gyUD(&JKk)n-t<=3t36se%+G^~89^?8 z$#S_yN|X>!=kS)u0D?^hCp?4M#M>$vAt`J-aq2Sz?Fw|_&*V`KqV;5`)OK96C2s^q zp#Iz1O+_mr7a|25iXmn8tb;4`NqfYHI@GzVV+)&%###^pmWb*>O=_HyCgLp%Do&)Q z=qwhEv12pRf{uesZgFDp!sI70Y(zeIiC|sqs zh*)E6dC5?G6ssi+F%ds|8YB|eCRwpCPB&PljEY@S+#3R7uk;1)gU?|{-s;*4v#c!{ zh7P}9K#FH}!LL`uCDrD&$;b+9$cM}}4E_?mt^Sl}pvcB#2_lY|37~@DLceu{S|q`L zdJSGW8CXL%3aamvo=gUI14#{&a|i%8v3lpT+>xj54IuqIO#xoc%jPz$7~sYac%DIe zv3*CWSIUB~Sh*on@}8lByFlU6CCDa>%k6BJx|Z{Z#8b$dmjm#%Q&$mLt7{3%f0+xs zPEBmrewSZDr}%V%xywgd*o*wo1^Z0nB}*@=ZrZAMH<}rbEstgp%$!Q7XqGmVV z3&<<$L;V2Ra$G-~xkf^IOgXtquVuXCq1a9RT3_$5fc9I|OMAAcacm{raVcMHKP_?| zEE}V_yE84tlG?c*flC84&L1}dH z`?xJfY)9BgYFjn~D0Q4eb`d?h52hr;9-)nqm-8m0)(<4}P$%iCARQ&dx} z<9P4-zBf47Wm8I6*Z+?jrF#D&nhO&9%^G}q#boHAR(ac5@-?nXyRj3F7QtVG%`S;@ zYBJp)04xAc+xfl{nwX>HYfb2XpvYh=MVhrnmq)GL1h|pd^*t?%{V&HMmue@O#K3gY zieA`xc58dzehWoNTvBI`WWcyQ8MUN77Wh2>> zw4xhS%#}?P`R-1(Ix(!FW@=PLV0$m077X{zJ0*gfm_EJi{TRzQ z?Z~T%wE(VH5oZ=?pSMZZcOlkmw??ZK3P@acyAbh|AMq`#C7)?!S09Qf!JtyXoH?;C zd{Y^`M}kUr}B&@?u#Ey*y>Xwf>g98USaEONQVg)QLYhi>POA z2f&4AV)0)R0T)>tK?Ha(wqd}<#59{3^Tf88LZ5ZSbj^GPKYY;R&$p%k_l$U*utf!A zhSz6CE6?9nGVV*5V{ohS_RK-!=S^MFjf6~&zt7{%9`w<49l)~E+NsL47q zLhLI1s|kkE*Bh<*+e1R&h@}&FBILlZlchQa=+akS2w!?J zm^#0|7csDL3n4=Mgmuy%cw~2J5cz;cJO|w76^pr4aMu(jD#HI-1_(G2q9!-0g$lO> z1GrC#q_pCggGV*wolfZfrg~k;o~|r+Zj+RPGqJ}^B~VT}|G-tU>;#l62;5CVq3ns` z=-xW_b8*BLc^Jy|e%B#4>p23j^_TmL{Bh`W6`Qmz${o}~Y}-W++m-L^pTbkbB%P-d z+sz`&EmYTSb-ji2AhZT*c=ik~1hTXb-*Ec((?$5}d~E)V7lKcW66pU)hy=i*Cv;RB z9ie95ida-RYf|uWGl)^-Z!wV6o!epB&d~`!ib4s_+5z=ws%8wPp zei=sLOmkGo_B@`1Kbi}9^FgY}sw7wZDj#>@o|bkWC%6s|wl_Rw4uzz*4&Q21@DgvB z2CS$izl>L(YfvLxdNnBSj>+Q_5G0kvg>h4ongC&5m-!rUb|IB=)|DK=Qdbu(U_6=ef+%3<4kIp`w9g>V?(ZgA zJL1r}<7VCSu~$x8gtazo>m3t&wK?a(PG!B5Egp1|6P8^1#oeb0`^mtqY^MB@t83BU zseqoi_+7xmSwcu%!^SgvfOB}XeANZLw3 zyI0w?Px3(<#~8Wn=2G^A_~A5;G54!)d0U@c3HgGOWz#8$c-xatww7m<$@a%Nn`V`d z>Yo}$E)Jo$r|X?z%PMBs&60&4B}s(?=WCG#PdR-5@B!2!_t@c&h5rR*cp&jTAy111 zI2_ExJhXOuD5CQQt8Fm&jd=$9e8)T(R;6Vc1f_Ro@C!E8^r&2;nEP&|@$;6~hQM!7 z1N}3Cl8Q>2xTM^}gX_g0?I74+$%nkLk2<9YPl7(C(-{+m@)Cqo5XRzK=$(;rLAO?} z3iB?*p`!&->yxQMX#LP^x859BIsF(z_TMCW6rwyY0uEi`!$es}E$I@;*Mp&pp!{_U#sod*AH zj_Ac_?Xco^YIhvxL-afe`9YxmJgJLO$du#a8Yhy$wPf7yVIMKIF;t%J(wK*lJcS5O z36fJoZ6=dxjMJ~b4{hR(?AWQTcZJ~=^07TW8h51KS!cXc`gQKMUqlmbfzhge<(SNx z$Z)PD3iVD+(J{%9*Citt<`$#8&8OC)&Fi&y^ySa9{B&p>O#jX z1H7SyYp0KlK0q_qj$HyJ2-Hs5iaGcJVaG@~HO}MKFiaR;`NbP!D1M(d!pS)vpi4lo zEcRorpe6kh#%iVxZ6Z@yxC|{%gS;vBDAe;RDCN2rf4Pi%5baQ=oG30Reuz{fbf_uD zp?JzH7B%W#PH9)RgQng`-p4Z z5-4ktWHofgHVle77==iaAWPHcFipbWTv(1}FrM_vY`7&K7R!~@7B5cgVzoD}OqlSR zv5$*jM-+c~T`=&Xz@fSMM?}D11TCM>P1~q*8h%zBM5+`3k`}TeNo6#@qAP)G)Z6p7 z!teEYYivXy9ARPS`Di8%F$a>D*9^NOcl3w=>)7>*-7Eqe-Z_+|(?7h5eyUm81kFaW zsYWJjp<>D%a#5TH2D2!{@)LiPu%oR{ymP77Nou@eSR1x~*d=g3(M%$ng7b0A-66tg zPtyyX))>{pSUtG+@iOGyP~(c0IW(T=2gXKZvyaQLW^-(a8hNs6HsTpEqL&S$r{led z$F1Hyrh_IjzRILY+;w#Y9YaRfi%f{D*2`$@O=oAp5 zj2waFz8(n^M}Gw5^4JLHV4(cZF1(-nP|^1w*I~f-{}blgq4R!IpraGd%E4LVS}qWv zNx6uXlaTw)gA&A?6!UApZG%{)H$0n@ESFSDPD#vNYgX{4Tq56pfmHGQwjzEA_1x-; znV-JG{bk56@7zT? zFmXb9&}Y_^@`fO_Ct>ehAVfFrUI@XE>gb<#%2UQUBKxLDhn%HRpS;r$0<4bp2hz5d z_1=>FJlHaYTS3F#8}g;^>R(^+J*W-=TlzD-&pp(a(tSI8ckmA()L-4s$m#-+nEPEA z)T^!VCag9apzAI=EwWPAELb1rU@mG3h=wFv5U;{4cyeo^Df-_(GaMs?(BZ3HW)=WT>L z1@*g!4`T!U@WFJ8Xg7m@^4AMf{asKl>K4pv2OGcQprqM@bc4ge{oy|XG{%l2B3KJI z*;L9lwHFpw_?JQ@ctpNWZB4egtWt?cu;^eyPHneK-$Y~VCw>9Y#V-FS78fF8P;v_D zU`g>B41Sxj(+=qEJkKSfphpp&=b5R&5A&2(=P-{aCD3LdZ`uHfh+pDbSsg$|sVeYY za&zH=IOZa$As4EDV9GYR)K5|UurO*h=;RWmJ-j2{6LI+c;bbaYslH%oKGutoO5mKG z0L1td)cmc0GPLJW;Cjk{GSk-J1C&omZCn$7fh>mFXmqXyf(b^gZ%2J6c&}QsRCg=i zY@3Yaj|Y$f766&Whb{-1vz(`rG zOry}y^%Q-tW*!a|a;(qClf$WbH=+8BU?iNK#_bTBC|tvwoHJ(bmjyTWaSaSpfo8G$Ef)T6Y_&V~ zr4x_*snGYWzJR>z>i@3vxgL2#`6+FwN(B4ur9g!l*0Mqi4YxRx zggqK6u?3pMU*!kQnFY6$@$Dpm3g86+I!xxs7JNN#m8ImhM}w520bbS#QC}!5=FD|{ zj0WMW>7r8y#@o*uR>uJZsXEvE_XEz_X$7TCR~S0W`u(Z`5?7Q5HH%4nY2Y%*gYu@6 zaL%54LeX)79h^*~&!3sn7{6+#X|@r+PW?YXM`kyL(+Q|C-MuctX39hEG_did6?1g! zG7j5*gxad6F`qQF4DvT6mt@5t)Kneskov`jCirp2>fju8+-YEi{9Fl|691}|Bwd7# zfQ?j>eVq2Y21lhn?M}HDeWu16zWC3T_1vuGpg&G;6lUSKh?vArTSO2=GYN?QT@!V@ zh>$67Q#pSm)RXUlCn&;;Sf|IzM)sY-|NH{Z2-B+{(0ewnBDHSXAcNPFB*&Q2);muj$ermokH0_}-Lj`jY@b)p?I}p{BVwKJot6@e2 zP&-a+wk)_a3?O5e9N!Ldy+h~8uqtMBf36YjC7A8bK_P$1RF>lT&3+8Ww>vYEtU8WmNlp2FfAh`kDY#B7=cLi zNDR+ZmBEjSsX>uj#ZOjex(j&k=*L%%xGM>O}Y{7(QwD&Yel!p=Ebr1+|27 z?@mx&i~n9DE3hH>5rl{{EM|2JN8Dc+(%Fgd*}x$%AZV(+!=>opO@1}xNy~K~anK#9 zzqz*+skRx~FL&%)=}Jh@uWC%fPH#MV<7GWuNT0pWwVpvpovkP0#cAg#lo|^l8h~MHBel*g z*KbJxllvI!`+(lG63T0dtQ8L-6%T?fS)=@gnmC%MD;E_IEBaIMh3b&Al13J46%*Xn zBw1@Y-me@-T_QHMrns92Ws|s{DrWy3M!mGl^&aoxIytWp*F2h`7NUVCq zaX{lODVgN9V^=k%I{=KpBnB4?N+Yq)G2RHjYCSG)N;V*P31}N;%6~$W`0#gCVau{q zK1sD4ob`P?Lb>_bzm`GsWjyXJ>IBaRD%s$B^Hj>R9o?i3zEGsq_`NR5 zkPtCXsp-xn8BuoO$_Pa+v-whIQ=zt2CS$l*yWt}h@{lL8i(d@FYEzCt863U4XY45v zuLepbo)Apz=-Ke`tn;KN%9J=uY!DVf*@Z_*tZ%y|O~0Muj|o5SULPGYyg=0Yvmo^GT6hz( z969BsBU_aUmdtplxT9oX^(h5=!4=4MykxyWupJ3T zk{G5u^NKcXxQv4(8@>{Bj~BJ3MTvY+Cme``qCwrGoMzA}{6DE7w18MtlRgggMW9g% zjNk>ew3;s8DYf8e1NN}|1m|F$luW)L_7C*oixnTlP-tw*nWq$)k6CB;BNOF83=Bde$9alHl=El*bTZzvI%+f zE9!{xrN5z=l**>~%5D>Trf}Xq9JU+qPD^L1w1yA}iEb&{qcXE(X}VkXQxX z14Y;BaQrER6z`-ZGV&fIGb9<;A^p_8HvX6p96p>QyN3J@4jD?`3<;oA!J#f0J*8@7 zIFbe(Lg~z4cM*Ix50j`^M+aW};9(HLh!CVK5bGfJ_Rv0Brma?7zSMWP^jBlAMu^M+ zz7YwVpl8pO>Wx@?gAo`j-5I^%9IRZNw7JAEtc7^-ExJ0Gm9ct^agGmaY}>td+sNvG zvoH1*C%w+{T(2V&A#Z!032ScV)8S|FB}{TRs!_Ot;jAz`KGx;K&PT{v#8PR)gS|(L zR%7b3V+W|w`WsxS5<}&p>Z(C033NcU0PZTz z?r0}CQ5TbHH44^8#8{DfqZOwmH{vS7=%j~b|Cksh7c9Z_C3?8 zjyCHX29_qhPmTs$si~0JB5hF%t1z>(Fyhqe)BJycPZTP>XHIrK^v225Snw-s=xza^ ziOC=j`v`-5PjrwN?MYhdl;`7sZ<<%~>X`?$ni3e4lenPb=NA~o0Q77xDcjNWs&i&H z({?+hHz>^ogK{f*nEIt#=X0A zy;G|@PE7;&%~ZcCu1}{d3UiaxSG%tSgyp!}s=ZNH53XuF1~FxS_KU8U0l0uvx4Q)Z z>KH^QU0U>-cgHabMH=I$+OG_+nn{`%`#O>dyVw5f0w(zCk2ItfKB}Nv4a&*EP5B5`qLeX4(ckP@&h!%K+^K>O> z`7l{kNOw9`bJE)xB`2ovq+Wt?*bT zgwe$hd++q5b8uU}beI@~ct!DZ)YM#++HL)RCAaGVSDVjdX0oAKk zYV6n}tMD5k*xMa3BG|wZB{YoO=AD$uC}I5I(4XLM(OY#yL4@dEMUDr;m4WQQTL8-v zK-6o4k`{ZoE|m1IVHH+-TA}c3w~yl8b*xU$_y1)YbHZ#(_qLAWge6I*q)vp|kd;h- zN*mY3JQZ1RKM#O0rDvH?Z9D)}65!`_Uc)>Otka}yxSdJ^aH^f zfRIH#+xcx<$A)~gmP^MogU|At@Yc=-3uN9Vw8(`+Imtc;Fl3p+PJoQ7+QVL%AdO81 zcVpbPie-3^Y5dC3L33GYRve~oe9M}>TGOiEZ>e$yuoJ=^5?bFIos0$J9$$(wChWb( zpGDwprQ@m}n6_0(p~IhnW*`AV7sewCB{jjcclDU_4bUE%@x-?>3` ze9vePn+~tn6)2?hWa-5@#VY5}h{m0lH>S?=BZimuuSDD9v>4dgk4vkrfx&I4`F~-4 zxwX_;6GD0~(BDjtt4B|tjmXB|K7a~;ciS3GHFU@wj>ASjqDux6eOlk;VX#O`kCqIJ z?Qh@u=+$|CU&yG z1G27ApnslaBe3~sNb=aJ)XsKqINa9VAp_D#na_&DUd`je?>heWK5?*M4VHoV*EiJB zzIgWXFOBGK!C{HirAR750~G$%Tpk?9c*05}d^St$(I zq~}6Ep2Tib0@q@^f5mfW#u^O=Oc3U24?kC4Rlgp9N+_(RR0&t+U;dRcLod=#m8K`$ zQYN{F6v&_Bt9s7^cM~IdvFe#%ztsZ~J$!6} zerFn-dR+XvtCUR~E}Fu;Xv9L3DX{r?oH1`}sa zbMb)PPPTlRi{+p)c3WGOsbYl=YLNBhdNab?y3hvRNlw@1N-?Sv0#adXVD-VQfJRup z`cswm(?-{9fM5IZGTewyVuC<=@a}~VRqzClrGgMm@!V4gfF#b?k>u#mEaEjk2Dya2 z5Phq|ePwZE7|YW11fAz~>N&k(9LpJANg25GB)MLmo;;TMus9a4g%fh?-J+W+ihJuR z)`Y5FAcZ8TqdH^b$?gh1iQOj+anUGu$5#!`(UcN<4aIC8u5N^$tqsf@`%O3DtHW<| zd@?j&-=CLDwt$FbRrZrZUyN4672KKZAj8>vdDjWSWt-{Cv*wtJcJ60v`s<^da79>Y zU!a;Ff=f%JhKp0qwS-!^o3gWL?rh*4azV_wZQh_xg)Q_|^G}J_G5nj{{LvVLr6lQM zL?#x-v<$oB8i_ik?wc1ZSSb6KFd;N=6zkT%=FBlVG+kCzQ zY<|%9Mr!BT%Ehz!3q9!c%#3i2yTaD%&Y{jh%Hxu;Q*Zn-c@Hd;gWk)Jf=&%>0w>(_ z2|FL|$j}=$(2UNZo`Poc78vQz1qFNoY?H*P8Nnjd%Uz^q=u!555BfXfUx;tAIbl&FGlDKqnJv2R6>EX33GtA#uqgF&lMNzOWi#=tOph>Pp;mNgF)UzgEg z_^SEk01?6qZs1ZT2S8E^RB$&ZK1g#hqf2JbtVF$p-MBJWFY>QU30P5i>07y=S|H2h zuHv6>)wA@^IclcpKBA5Zu?=XCDc|ojp%OF>( zfJ=+0ohDalB!}65Qk&^kWC!K5!?`xQ47o1cPWb8OE?kzV`iMqrWc;Qa6$?KYBUV<9 zp}5$-PiDTJ0o~tt^wbvXfrJZ{THC}63^ftM4SqFV}~~uC~C6IGE9aD zhSyA@gC5W8^EhCd%3P5nN6|{0d zM+Of1=jFE30-+4=Fj5#d`8Q^X1?*uLq_&R5epx{@M#475_OiwRU6Y|d^Or&?4_JCL zVq3s_&?-jXnCqAhY=tt<#56i(`*{><7=&lKL4U<*kwe34mCYv+(*g~XOrE4|+)Pln*TRa}R>f?aj~WVF;TI;{}YB3st$ z!L&43NYEGE9mb0Ci?|$cSvhCZ9%X@w1&wC-hX61p9b^u=nnNqA0r)N>klC48Mz5!= zqa(+J>3#;htm4$I`%2 zmgF`yj{Lnwz<+*V^l1g^hVYaE+(DdPw^$8jh?hRf%Z}EveaErFESk;e@vS#pEDhsC+m;3dzEmMC!oCS$Mpx%! zw{}I}Ko7Vmz$L$p=pRGJ=w>(R(;ik4){n5_gf zS>A$NyU-TxCDSl0@M{E9N#}Q7z?`6Sp*DLABd&rv^JOI+!d`LK7eVC%T&tIduG7rI2F#{8l(a*i1L8p~bJ{kSD${Oh_oaGTwZ{ zcGFp{+H9hlt4A!vi%k9O(v#R2M?O0%@$!^2j><6EMva8X{?}MFp5)xIBW@Y7BMZo^ z*2Dus?1Y_`HwEI36hK9nCbgY zjoG#g8#SJ2eWU@QwrCea-`zQjr9MS6gi#N(Eb1Krg8eRHtt=ZoN zWkb)|0^As=FXtr{W^&r2iX|Ux{wL{?I|D$5Y#vMXMObm}M$~l&V8ywYe151r!$|!~ zVrOk--?k1D|0x21N@-4X1SExVo$&&3+HM@6kcTd%cmuzFuW_mT`=K6o_YYhY-pxWF z6Ri7NC1z1fn5UGampS)nqwEXg#cb@tw*N=<=D;R-$>y z7XXmLrtsw&%e&JKpTt!4?x7+%4;({Yl~b=6WlZXwxli@($%*39EoFd}J6>S~`7w-u znXop*1eAe^T+*0xXYM`{Y2#MvqxqO$=8+USPxC9~z zjOIzt3+qT>Vj9*&Sih`mpH;KPN!J;*TVlz9DKy~9eW6giBr>q<1gLVvk^j=aTapc( zZ^*e+VbCrs4<52H1`4Ogf8#}(nZS5qA|lqoJSL|z&o%})-hNO zEVqk3t2Or9mV`*>eyD>9CR<08iz&tLixN9Xp&JCxyFD6A0Or*Wnt^8@V_sZCuq)(r>Nwv>3^Gi!CnEJRm|)73*H5U2i_-5TG*e)KZO6+xe?2Fa zlfNx`j$N4}57DkRQl_a-u+9%{!Cjt4f}c6<^n&1#x=8f_=iEkOJ08#x27`;k%bTey zBhWSq>D7oW=}lMktnRFi(fl{~N-LW@;na++OTX^%TCdu0CRZi)`e7QBG*z`PFv&$} z<&b@}dp6+-#=B4c+Qjx<(gGg1nYTac*0RU(7o5FSUy(Ecgzx+uI|^Dh$8q({1{52I zDe081E8F=$6V@Aeb8H&$SUfMdQaFh~Y6?f{1r&i7E5Q-cLxo+KJ8x@*9*@jvEo3)z zKx#4|&y^dwp-eaUi=BHz^2uH*Mg?8u@L<;VPgZ}$yxyAHCr5Mp`_q_sgo&z`)%mZk zp*LFrB8>OmfSTex?z7wcL|qemK9@$2sVnPWcS4)%EEMo(Hnth1766NB>&^m0S}Aiv z&mdPP;|X;&lxeF-zKrR@LGv0zgVej=3WvR}lou5kAOfv&YNBz919tfda%J`kanb&= zqI+AQ8T_E2+A{Y%G`Wk}2-Uf$2|X|9e%XaAvW%lGa;`$U_?D!THQ~;V_GP*yPp{?z zg5WpF!+215u$5u&q<&^@+Z!=@_x=U?TP`U8{FdSnH1~5|3^p7Ok!R1uh2uD1oLp>^ zT!6#UMB&H~)ERTqCwo@3CSmC<)&Edi)AKwM-6Mx#do$_Ug-m0wQg;zP3qs;wlLRFi+=fL_Iisf#sY37Djuc&LSpq7rKOlXL9mLC684vmN(dyR-f3x=Rq7*71Q zXjlFUc#nZvTy`io_hA@ug?8@EZ4B}*6an>HZu00ghJEF&gRL6{c|UahkFxa=Hn5mC zc&Cv`?MOH!|Qa#b$OdkiY-)j%w8?lsn(?6c5Qn4X6(9-XHEKA9Kdu@YxxIf?@5q1o|aOw%#FOz7bkOJTlK*lLGTbe;^+{ zXcMv=1<7mT>OG&4Mi2i1eu}bo>#E9^EZd2hD@rhsTnPc^WGrf$BnGbEQ8E-7h-ClD zprb{j)M;_3METw-VyzU6NKT zC!$?!;U5x_?Sjn*$)UbLvfjj}ObRB+T`y{IA->B>v!{5k_(Z?gts=*l%ZfQPQKw5C zK59teRukkty-v#*J9qcqc)GlKow>Yb2FcncS7wT3D~dPnja z6)Is(wg~1Pm(q6Lq-Qc)%9Y2sRRQ;5TUo)x47D~#KP4Vm5&Kn!3LL4+gp#rU$E{!n z@8ROVp$yXJA?d_|Mjk3N@N+}!hhXr#6(?ltn^{pYJHRV0U{NT9*PCH)ev1c>zIk;b ziV_JbtKD{cdwHEaPT|easjpohBtih3)^GqLOxG3UmXW3zI8E$M78d*&CEE&>&=Sx9?+{xHJbbWJqvgP~X z&xuK*4Ey2E8v_2oKgx8dN~303KEAYmN( zD2G;z%&$(VpX0gebmhJxda<9QOGFWt#0IX8Vu4>ga_e8W%5 zWqCs^z4z|D;jbv(O#Yy-1v_FgG8HKm11!*;e7%WIPV|1!wd5t;e&jjSvN}@ql*5IA zbws_;Pfs-AL;})sVeimK-6hmLnWN9!MQb9W>PH{JXFLBp?Yre@-d}Sr>eB-E(7X=V zTX{bVOk^$XFtE5NUR`KiE8sXrrgrbXGi7YEp8x*Xn9M^xPKmyIPc%rC&LuH+uvSI; za|3?UT21lCgr;|^tsxW-1Phn8^BmUxGMFg*j`BdYHY6;6b+JutLCZ{o=Hoe7vv#HF zrb{ldRomb~CZ9=?C`td~?_|iA{`i4>!`<$qm>emN>R8lx1zcg>%!xdy-UzN4HMWr;(KN-ceo%Oif z#rWM2Ime)f8Z8-WT)jIcBA0UA|L}R(l3%l zatKFs34I(G)r7M&YLbS(?=LIgyWMWOcUA4}PO*Sps2~ZR$~rsWGW%6((2td3xqSk4 z&YY02chFk%j0r=53r-qhhdaQo<#ZSkrj0&yO~J9CsV4$ZXk%ileEQHQf9C#oAmmbm ztDkkW^ev2(Z~jiSysxlrCxY^BvjopL(EfwiqxL0<*OFd(6~!z}1VYKz&JB8;UI}H~ z{ser1129}F*mNRtp13w#{)m(xdN4eh0CIiyM*LQ*kpU*EpKRvX-{oerLQ|pZK@~Bp z+u(6+!cM(%S5|Aeo#u2x z0^L9OJ}u>0^j@VCG)mhJYKHYAB?*+gWi%0N^97dACXe)M-t>N?bfSt5&!K0|s>Fu0 zl$ke>+?blHQ>!%5yM}~=_4Qf=fYVK&+_rExnrTzY^?1lQH zVs8BBSNNa)OzzL2p;SDG6z1i=mu}+YfzG0Zz5#b{(GbGQt`ffo0x||E1Yj=J!^5db zPJ@s^5qJSs_d9T+F|vyE%oe5-p!JR;cc@A`QKj@ZOdB$7qONTQ!wm_0yBr7sh;&~4 ze~eO5rsrLx*;t29C=Gwwm8O$V!T|~O@jr!t5rO;g0!9$&!m%Uk1=+C1 zH8#YNOdcY2J%d=9Ho95ZySJ|loM#K<>}0mYJ~=!7MPgq9D$#h0P|ZgMf%ts(mjTL3 zQ<@UztI-6%cxnNJ+_>O(ke#l(T&iqGOt}1{*FK-uqJvbGoAv@-Yt$z@Cnc>Z$f0MV zU`fq@5<(LsrepoIoqBJcWq9jqyd50(2@8K1REb%o-gll%v?Z8@Jl!A$G$z4*TitqN zNLMa610LOtmYMt#zAc$Kk9r^87{@Fzf%ku@7K!{0S0DQ8eB=F z)?CptU#-e%U8ta};MGY@m8Eu*A8&x~1Drq}<=n?cRoVkkp5CTUBOD+fHv{u_5xu(^ z(1QAu;M@#hZj0yNNBv^ho041DQj^8u3{N6~Pt1tW%1AUa4}%Mg>w?Q&HLz)X6`DL6M0IVOx%@(t+`Vyu?MtL%oKPA9z^Bp&0VR)@gd0k)k|3GlJD-QCVk6qu{-P`b_K)Yr<45o{e|b8aX6VEivC#Q|jOCMmwsMGA zaAu4(nhDcioxIHDW_{jEL=!=rA$<;A1l-g33-~78)b{>ERQ&>#@58iY`i_3c1nm&8 zd-+w+jroOqE^#V6T=SM zN2tS_x}fLOV7ei-GzKeP{J!T4eu8^uyRkJyv2(q?vHuA$?~khqE9*+1msPNl*F`ff zi=s;$!RXa^^ni$b8LXoV3jPm6k%HBDiH7USh+?Q9$#}&-XEZmIv~E5bt1CJdkU2nu zpZj`>G^h?LOJuhuJ-TvfdwGZSFwUDp_B7 zE`B0aJI1QKt|K&Q<8wx7?5EHE;)v9s9(40qA`>z`(!-*& z!daAN2gC_Z75>)a(BkFY!zehWu2)wfkCx{+wB>jowolpEB}9jGXfD@iepNM zE|f9{dCL6jD>RTxNLc8UuaJ#15-RNq)n}@R`^%w1+j`Jw2W>87_v`L)nm)M{QP(XQ zlZYMXU_sp%NU!Ms1RO*o3}}s>g4=3T&SjAqxS(MUV{4K*@G*>|3bM}TG;6c-5I)MF zrTvUTB%b9F_a3Mlf0c`~bnKmb=xW%cB3(lfGFN)lsffK@Oo?g!dbp6cfYn{Dmf2!t z%w%Q*C9m~$V%juCF%-P2c8#}Oz z8`Y!(nBr;P-elvrnd+3X&+l760(tS^b){~Xn*g{6#LvSp zOzXReQ9o3 zC-UWWee7tEgTt}NI~nLAGsunx16UVYAo6g|`Q&dLq^AalpIrGZ(ZI(?i;r^@8dHZr zPtCFps_?ue`>tdy#3ECIRf?_dT6a=L^CK5$@or=I;dQ&`87~H}P)cA6Q_+rz0E^QV zU{&-rdlmtX?g#}{x#L(5m%>;}3Lq;OP0wK79zsNCGcKwL0w6_kG`0PwEjkV^z&P9K zp7D=U+oS*xDXDj*omvX8>_^Q4@j)T5zooIEzL>+Z#!Na%F9!ahgi7%k4SZxaW{lCz z$q-Z>bn;(TI&ESE#OfMmI1t=7UV>S^W2HN*ZhyukhA{9o|KAPamm1y6AQ=6)=C^wz zU*IMh^OQMyvIVfxTd6^}xj&v9VxJiyD)C7GQKy%@(w1rFiIdil1nP9bZ`xNn1#I91 zPj>#YfUPA&JHuCG^A@9>b&h1$bg3dp^V`+sSxJ8@K(r{nx3?Rvbh8FH3~fZSLi4+V z61NBb@H3KunT8Xw1S&#_^Y{0K-RJxP7s9!xQ|_~$E@eD^2SzJ{s>6V4$=OzD!5pX zAOCJzbr1K5VtCcqaKOK9-ZlivbhkW?j|Qz8EfaQ{AgLLqU09e79bb^xs-asfn>6~I zrQ?5=XRp+@+AlXC;?mxFcQDLu&G*5wqR38u(3=+wc2X~}MA-Q4o5eAOk3)|y@Co1r zlFDJAq%B?_@aTLCw4eXI4yA-j=sERcn7ABhFpwLFuA7K=<{KEdA^V^p`o&*2%7)$- z+VnL@)V5zyd<+c%1sg0F0O#$DCEiI@w7E&9Nu2gJN3)Wrq+x|!7z|rlsKK^(akiyp ztfSr%$1_H+WdOIQFS+y_VXiU|_hbFnj4qBB20V5H*)c~B(5P)8>~{h954ZDm-(zc- z;Q(d{;0^wGZcAXRI?0PaK+r@45>G89cYfNWuP)Dor8}bPwECfGLNf~8G(%NsaVF)(gOOY zMd4ve2Ew;K4!!!`yl9%v5Aj!aZJl`noAV9mQbL%HHpBD3+NaHcN6|X&xhEvJOFL^+ zGK}uU>nt#5%iizh4uuWJliZ(CK#$|1jL3k4Hc(^!6VyhtZpfJ$^m77KO zM+5CwPZq>pCAy1#851`)`Ic*fkl>VFeoy)lHp1}n zEVFMaqC036%Eg zuo9noeUTs>kKd~fd~;IjHYm;eKsXK)Fjy6-_^S~lk_5K3p`_bvYNyikJ2(#0qUxg8 zjR|E(=-|bF&^7^_Rq<<#cZwE2Q-;uL28ech3%;kIc?-GvQ?|ok6^>6zft*Dh{|G6K z>M={H(YV~iUCyseBVBMgKHb)`mMvBPfA00UehunYTdrkX zFM$YOeOH=4E3CbhQRh$wZQ!-|IN0e@L}oi}Rm1gfrNdz{y*Bg^D}(iL3)rcdD3n>C z;Hm!W3M~6sU@k35;AN|d=K(s>Ss-rN=IS^F;=OT{8_WJLduy>vde5`V3h~KDylsxx zA%eE^u;lxd%8}v<4ZS}7>-x6|Q*p?l!VN+5Ohn73!eQQdJIKG|ZSX?Udcu;b=W;@n zN{|LJASF^_7$W*tJ!Bn+MbNV=Qh?>x7#kp>vQc32`t@q#XP=e;LqNR055_eyH16W+ zk$XyD92A8-xA68oi97}4fy3|ahVg%9ohLP|aB&x0 zaIMFnjKMKC>)SJMz;mIH8VeL@jbKt)SS^udh_6qs%F{6>YIPQ*N0wfI<4EDTxw5NO|C{S4KjmY368 z?yL?y%@dK`9rS z?Ph-01(tp2P7jh#PX3Uq{1!m)=!X?AAjd=SaY3@JopzSA?B0r zWsVgI^7{Jfu1i6b7TJY^p@@Y~W}2PYqxWl^-SKM;PFedOb2UNHpQhsN9$pujCB#0o zjqxmB|4$l{6>dh~8@1)so2<@eAtt?k9Aazy}NO zFP{J+D+R*Q221D$X@DA&R+&}jgSm|V9@*H$>fFGMlgeJE4zanzs)bbjof z2kwa4Jb1vWWD>=D^$zIIWH$O5h7?xc3WB5Uds;hwrm6gWV!h||x5_Le4gaqroI zx!tlfMvLCur)zykEv&)%HLE{Qg4ss+{9Bo5e{tcm)=vzACR+#G8ls&b=@Jsi^^Bvo zm=+BJN!d+8F~q>q)wH?Ko#Yq7)?U%^GHu#`-8G$cHvkCwViysU_Qk8%MENdtw)TJ@ zrdjvy<<-w0U~6L1&n~q z&Zp&=+ZmqgkU<&N@IA)~AY=mQObtB2JUE^kb(2@5i5V^9TAHx8H|4=@XCj6;O>#0m54JHT58jR#QZnz?>hu2ZDRTPKe3yv5`kgYXAA~76Es$B{0Bf zR}hoxt}>a^NxYdfKKZLkoojF?F&Z8++@__59h~Rm9eqNFp*rPlV1226N>{Fei*T4( zKnwGa6}@nOUg}h-&?`GcY zz83HrrxHP3XLF9b&Z7mv7(nxdHz~6nT#6x!>%-c|hbjsp2%_Md&1f58t!@&(SsDZD zi%H#NnwcgNevQbtb568&tt}j&mIau~yo-kGy^R(Sj|tqDBU`FVOyxP$DI)fo0W)=R zWEWfE+{MbV9TQvDG@i(@tVw+XpAeuv9xjd=d=f&J0{Q?%L!HpI)}2~Hk-0^d#I+Er z2K7K{yO&Z-qmU*_NCQ#O`JLVe!St02IsX{lR^!82oyefA?^Jh6Dao{}K1b24fVgkl zX>$+gyzuB>G_tn!`pkS44B<>RZ4#FLiMKiK;2!25iu)7BE(Qo{9sU7A#**l|O$Co5 zfd|NtfqEm1xdE^3pZ5H=-O_0@vqOjw$KngY&0^`(wMEKJmNw_-#Py?Zh8T9Hh`pQw zT9M2qcxm_Q^X*r4!wLl`h72pYmC%l5_Zen_u?Ybhn*pf}^QkcGBK)bxaeXP~2Ws)d z!RzM4_-e|Zla%S66}(LR)>1ux7FyYB>a2yB?O=o^u&Xsu186;BQ44-x)vS0`VDx}* zpD^XR;t*kYg+jq&0D8ldM8Tyz| zyB$GcQrhlxVa>?#CA2s9|ExQzTZ^aCSKBuy>|!(wjBlHtw&R8_Hz$3EK0BpkNA6>| z8MtQ?lv0F{DN$Bj@o9>2{<7xfpVwQ$M=;Vgr8_v}vTd-2vCT5kXB4SzWaRv$#j;3f znJ+dG{qk~#})j_ZK;eaDWK1KL{w4QMGDv9uPwbF;*_-(LG?&`QK`anHj@m(9wB&cQLL+oGRw0xp$^Gqxb1WEG+9@c(aTLoW2X z^+t&Itmz@y;D=QDAG4gVKiJVACDC=jT}->{_tben6EV9K=1{3}>GkajXP=Iz7+{J> zqVPGU2F{$n0V`3d7b>$S_queD{9oc3EG~_3kmzO`?W}Tlt&p}k@x~#z(!p%7rjbx`?kiRv@gz!%JR9t ztF3@ow!FZLuaXOXOXp7F? z6YCZUYa$xJ9nyb#zL`i8nbh_6AAUt>r=k?DjxnP7W*nduqL;{Z|IPYzgTi)MCIf{% zZMeAW=sL?cN@fUfhUL4}DnwB;$E5w|6Q4dXqz&BF#*|@bu+A=ft@|nm(9Xd>`pH&9hqrWDs768mZfoxcpdNT+1cX^v(^p0M{(3uK8@>A3HjBu#cs)NqA|%JHzx<^lZ?|12hWStU z2?I)knD!6Z?E&+E%algS#VC6$WN{Zag=1px9Ok4TiByRxnoVStK= zv#7X?r|B;ab=0%grzQ|un6c$6sxvwdq;M4QmH;Rz3dRg6W1ihM@pM0;1Uq}k;-7nn zJH)?Us|dtjo$rr~w{0%^3L7B*)qBwddBr|!W3u9ZlvQv>iK^W4(OFuL`6T5Mg)Ild z#6}7p?P&M6VKi&mqc{6JogT(Df$D%_6w#LhRs;ob7NWl^pQ~6h{3-5?;cLEmzC8rI znK@q1gJCVt!|ReFI)=mHlKAq4Z>s&#TbaSvv(Zv7MO-@Q?YZ-95pn?Tqm8F|&CEwJ zz`L<|lj?=|_4Rw>4J+Kbt^T*wp4^J&sYgOOJf6{JWXXc(7yUw4?7W?!|u9RWqVqm8AGc$?P3t(AiY**9&UxeTZvJtJ%`mc4w z2M#eur+mOFh?yW@gCQhjqmP_b2Z&S*9@P7+G{J~CTx*)pebjyXEA0#a+>91HD(*ref-{kr_P2%nlKG#a7knNi&f9lKkl09?{|? z3Nw1%R|q5MAdO=f5$!iT-8(7ldD;f&G1rs3h4{BF5ZRfVBKPCC|J0bC*XKg39sxyN z8HbG3mYzgIA2oYS9#`}0b-~hp-Bu@0EOXj$t#KH4VaN9^TpHlhwO$jIv>j5cH!|Ncfo4!}*P#R<)W0&YB zd{O8Fje9%RxesSkr9QC;UKnG%Ln=LZc|iJSoCd{+8=pbFU{x=|FRKZA8lGQ`3}FA8 zIw3hKSeU{fX7{JZAyvJCgCw*2E~_L_$ct%8x;#YSYE894FIz298w`Vjcy?%Z* z#c^i8W8`RG^u#b>TmlhAFNA5)=DOK$K8a&|d^v$2kBWZOk-8BbJt6Ys)Z{N~?+W-; zuL0-^_>Q-Ci|riprZV5;NN#0A_x!cS%^OOi_i#W$lD*h(g~hyy79`8o%vvt=$LGp# z%?%K2X#KBIMF>iyZ&Z#T>7=ewYDzZJ3^9Bo(?`OYm3z`nR)J3>c-!<5zR8y1RB<#s z)oc1=J&=4VNjIgB!Rr*2Ds%XJG{kN`l@)sJSo$=%Fh=QAVxa>t&odxfBYbYBdc&N^ zZ+BdcH3cmQ*>WhHm1Up8<&jzHrre=TboEKw_speWcEz@&g&h&G?W}} zV@%l`vU zYDRy@J2xL>BvJ#D#HsgNJiyT`C_Oqj|Myj z`8uZp4)HstVcQ<;*L7pFr&t=QO^5JDq{OY`Ey@`5EM$9a9(=BD*)928 zdUcNTu94|}3msUd+HUuFB4_o>093^|XZVlX_ust1e!kWBiriX+YHsbJcpE7laI9_* zXmAgjztGM`gHW1al@WamezoI4c8wzlYroIl%6v91`FX1O`~i!3ReWGi!-)m*XN4z> z+8}-81HO=w6Shl@R)STX5FQAeX{}_vliSh${EzU*vZ**}1<~G%AqJpHTT%(f7J~4i zLs-My9y2NL*6qi_LMI!%fU_WJq1F@AqX;+XV+H0JQH*l2b3Uwo4Ox!!r-=JCI#xb6 zvvq#rpuFXRxm*0d^|9?aocnPELQo+jaJz4ZSU-9j@y>UWQy)R_)p4?sDI<^pRM!Qb z=OdrZg}J?0Q}Tu7VK;69<<_h2_=MU<{1cq$h8Brd}QyEU53&U+f>n_mBr z(eps(?eQDwJWQ~GCYw5hmYD_bdk@=^3-AWcb&M;7hMZV4_@)u-aVS%s^%sYx#bal0 z?YFwl56xY*(@I#T7sGPx?FY`FA;qMCPn^?^S)ulzbtpzx$yYH&0_zhsWSFq9!?FC^ z{8*9{(obbB;hFv>x{hg<3<+N+LXiB$|4^ph{J0Vo4@U4|ZhC~p00zpS!W;C~)ge!A>Dc7hXNUxz_ z?JS1@c>U4U6adM7_ zb=QQgi^Q$$I4nXZz67<`u}|cgOX}X!cseQe`P!hf=A5D}EXVyl1S#Q`T*`?S2I>(j zWeN&kWxj)uv#iG>Bekfx)hgI{{Mih4Rq#^MK6hnNZks$4Bta#gZl+b@gzHvEXOj=1 zfv7QD7F|R%(Y^r-ya3+TG;+%ku+X#_A7$n__N3dS0GkOT|LTCk<#Gwo1wi)BdBW0$ zVjqw@CIZVSVc^SD3_9wf5Tr3PXfxn{VL~H!zI2x@rUB}o#txoQcETLw`^8jtA?2uL zH}Iq5x z0|mayJGD_u`9KovnSi0)E~MoNWfg#Z%^%-ta+kHfzF*i!obqxJG`4*z3LJrzo*!H? z`htGN0Xp~qos*1P-Cm7j{Lk)Io@P{QSdz_)_A@K94zkeWMCz}UqSW#x2_H72n@Nb} zogq>C?fp``F>BLBesIW`;Af_x6rc-#cs~527f1w7u7ht)M^={+UHM52%3iUf#o0i6 zjE!qaHhNWtD*6x8fIxR6aaIGPY-!)1B2l&t$s_#7FTs5f@SQC$?;v=}__5MUC}h+~GuQm*(a zFL->|^p^T#b+WNY)7AqYewhLKt-{FRYZM3|+GCuSkz*6Kzi0KyAagx=1MRM!yww&A zS*8dji>%q3=@jG!Vk5?ntX2!Ew>ixc5bp*H%2q{Ilw3Q7E4NaVjFeWL{728&(XCP^ zV=t!|CkK9oMd*G6H7Xz#(8V5aQSOe)qkVKxo80+U+TST#&0C5Ub)L=#4FKw zj4&kvJ@S4pZbFB`Wb0}LhdMRkkPT^gX;|2&%i5TI<&(UnQvh@YBET*u{28?pOQTst z7iWi*aHtDs=6=3|H(U?jm3>7DWMAUsM+wU|64xDwP{_aNUS6WR+@n`&s;tH1lz7m- z#l4a%VN}j!On|M#s5y#wN4Z5M7QDj$zqPp&ixdJh(x6--po539?OHPKKZ}5=5MMCK zp^{?&UWt8pGhsFY>fzJh-Ir9gj8aBR4!_mprw$xXj~{O$Cc`K2RF7W^g9fZmUeb`~ zWP&3nw#sorbV!rx`R}Lo;C@K{8h9bmv+2BuU%9~;Sbo-9yc~AhJ!ruw9RdbOHHL;v zDaW6qO?A`Mzc{K|)eG^UK0)s94H>a)kVg1Ge#ZsKF%FW|5W%8dz=FzK`Krb91tfoL zy0`uxPflpd*X(L;8;xzK@LemwNMQE3UEUG+ok3XLAtWoO$@IZvdth&$4j3>*+dp7E z%;|!plhhDt4F4=H00;~ccJtik^>{E~hO!OSpe+l9Is)O8M1eMhv)`C6@Pr@VJ{-0S z2oknwbwc9z*9k#MEhkW5%hj(fqLnL6F;b?G)ye&USwr{I9_94S%{|bZ^R$sl&14e- z#ALd;xS3$gYLFq@K29tVt*m$G+$qfi3%~A+bn4gLu_Jo&7QPndSA+ncaK+t%Ik4CM z^fW<__?(_~{0%L|mI*dD(y-J*Y|Q}^-Y&KnC=~ACy@9cb;i6f%{Z5P<516APb^v6w z{8s%2etVMtA%mQ_=84L6kUxXWv94i?6?EM-(yOtR9h2(;vJze-T3SrB>6nS9>(6VX ztkc9mj=GO)IJh~4=+b==T%RlMR9TEV4u<*u8Tr$wB9;pA{!nR|Ag&03H#6-W5-dFM zn)A(~%}8bxg|ZYVbEp5&ZNm2bpSDfk7mH<)Yk(~3C!QR?d1$);t1@T(CK-@wx#1qZ zsV=SAFJ{W^CMn~+Zz(1Mk&EhO7H2T_fWd#F>7}q=e{wH$7$Im_K(el)p_Y+xLgG1E z+tst%_;OMco)nhMg^?Rhu2mZh+2fInA6ldD(gBz^IY*ZW^R4)oak~Gxf$RYY!q^OK zfk~dzE1Kkk!Y@E0$F?@*RxOCTgHouTxCFyk8sZmga#BF6;J?KuNL)tz3L# z^`Tk7Sg$LbMpI3AqX1PcdNAiIROkz}t?#U@6Ayvsp8DOaD4#|oy@47gHHprh zSdt>03i_>aXa*zyV+=d~GCKXU>j+z#CQO7bku$1L78$uc3Rieu_7ij(4fSGG!0TWU z`3?+5e>ebOPSop%J<~o4!$Y8?)%Qzh5(l^V7DBN@f82a$#bQ>>q|ijyIR{zx4OIyD z__DUEo}-{I-1q~+XSa0lHkW9YWj*CtHOGns3(K}+Shrv3HV*UjvE{vkP%*Dk9)~Do z;@JdY%r^b;_A11v!zKD1aO@uPa{Zv@34y+Z2b5k_%`izEn)+oBrQ=wIp-M{8PjG{7qC-qxj>Yev-aK38>YgTCtffa zmU$`B-YiF9g_*Krf&2Fcc?VC2I7-uJrBAFAd#?2XX((5h&CuHLzz4YB^MJN?3*x}_XXoQfCT2XEyl#*|HdUAsA=DIILi za#%XQ?Pvf~dO{;m9R~54V}TIEYmnFp8~hU4Ms5EyE%Vp~cMSoWJyzKPaH?sGq^ zaZjUsO6ODtog~l;>C(2R$kZgk{&vw=`5b;R*yoabll5^TYXdUiPpegdM;XQ-qSa1G zqjxr>+4(5xrzt51IW;38mtTNYy{YG^_zfu6E4N2+@A~vBL@{JG&3wsklOxI@n=yid zp)N8KZ~c-uDHpFr2V!M$t@M45E2i>zkxr0V^vQ24kdpVL6PG5TRsscu9x73}*fqtQ zc(_aG=8LvdKL5+OAz5)kTZpdePUD3jTybDFdhrnEDyrZ2K~(1=U*%Ym9<-n+OU{M%(*~r5U}RxUyIGZdR`$=Quf`jbsU%xXj(b@g!u=IgmasI1uZOK&Ae7T zDJqyKxG4K*yc582k-{c7@T$1c`{C2YmZH`HAi}jXCLrwXb zXj&P9vcBWj^>29KaqIN58-D+>Kd!=}Pwd#f6(imhf8u{%%k-vOBqRCo6VG7gK)Zj+ z($7@=S2SFtm2v`m75NRlpo=n=E|2g@){rjCf)@vW7%pMGe{Uh_*y=T_=)Z%{inXC# zcp>dxxPafK+nHWE%cYA?vcBZKuM?FGA63t8a;VkF7h>|_>{cSrV0ZxP(%`NdWP}ng zxmfHXgXC|c-GE*Z9x%2EbP-OtN7c&KlUB;py~gUQ*=YP`m%6f7B1z`eOLr44T;2m2 zXRLy81d6Iy)me^w8<4?!8h0}(Pj!ZM3io^~%8fMD7|OQjff~PMR9pq-UJlYb##s%w zls{EFTJzn zCp&lPqo~$=J&($W!lS7HheZrSm=YOxJCNsCwUE%TD`t-+54V0I z)2hZ&P*(G=m&+X#X}b#&{lc6E0Y?cjR%GZ8_3^rm&Q>p&ha&jrT{m)LR*^Pxft}00 zMPdU6l!mRvm|FC}oO4WH3Z?R3At>bBb*22rw&$1YRna2CAHam-zveNdb1uMibn5zM z&)j?$=j%Rb)Ls7cDG8c^+`*SDfN3w&fJX^4QYN4BD>3m-ko)L0M_$l?zcPIwP5FRh zfO&AD0@c4|mJn4GMJ2`y$D1p>EKEo&uNUOpKR6e)(!_i^UZ_nS^DFhCyF5?+Tb@9I z21J1luuh#0^5ZAuO;BFnKtlGkENEa*LN;e+>CaZr?7m8&plNS(b;0f+K`0iCF|mr zSeYl%;K=%+8G8a;B%3F-%X^kmN|JEo$4zJQiW@Ufg>@8Y|McDoX#P#ccCLVSBT8x z540gzMbAm4HsVsq=%50}7xDhhZrwKzI##e|tOim@b+7%7MY!b^b&@Gxyxgg*KC?C@ z6Sr#HOpeijnO#eb)4@d4Jw~>pQwNJ0riV(bhrb&O)vv8|lPgPk6Uqt`?J%Yge8^I%^j zu>X~C$p4>jzu5bC>%o^~nrvJaL*w8xVCZEWr)NFHj1bYtFH2BTu&T*<~oNWx}2@Gh;@R=|lN&#z342oGK=HPClh&~|doP;{rgV|K2 z8U1gR_I4thqA(m1ibQWrfIK(c^KYhER5hc?8a&5eBX?a5fgdf@VYBsQ5OWvy*elX! z#@|{|zY7NOvUmw;ngU|$2qm;bA%JdBQXPMi7B9G=vOU}Y3_1*>394!4fe7^VV%rW5 zW{h?*ZjIMJT^e^Rs*IEVwUGpPszm+HJtk_l6fPjt8k4d$icQIf-j|2JKek(V)9TU0 z-0PblDFayiFIb9PMKG6-7&F!U{%7n7-g*)E;GL>ew0u57T^d*RESl6+xAu;O!X>jD z6h$ugh)=a}@lnpU;F{+A?@f(;JLwWD+25wT-!JF9Nia6AtQ#>o3rR#iG^vHQ9oI@S z`Bu!aM2rX-)#$XkG#zQ ztVLKzSVM4VE>0r*X;8~7Nk0WU-xbpA>{p?2$qcI#aZlP5Ez9vG(TN=G&_JnWRybDxKNn*$q&x0s;KN zTKJR6FIu%u#IdOj(FDi`G8^cN(9#;&$jN#4FGsJ4qd8s z5x-Rd631_&ZQVCdhxyq}Jjl2=_6)4f;Vm-_Y0`1>SytKy+S2$6*Vt(k6Id=~6rqiH z7d{fvVtBz5+JaY$lx|5fEgAgdO)WJblCt`z zukUWUa?_H4q3p2MWave)NAW{LPnPVT!2A_?Jg+}o)AiPJuaDW+n8xfb=JFyaD|3E4?Hy6EZZYLuZJF-W| zp8m*1@Q_jT7F*59ZEQ#8?@07aH2+fsAc?6}>Fb>KmGB>8CdP=CMJZNvKSr2zL_PNa z7b|cBI(igWn$qiXXGQC(7uVf4B~tht30ja<;~LqCHVDb244vG$T9K>&2GzT8dl+p$Cm2 zx{r>7io!Wz=N9Bdl=#JoMEr#dE`st)*RE4SRUx{T+2sdNoNH7ri}i;Fut2uNJM&Le z_$!alq%L5I^*hjRR6c8_trfwN9DA669e0^2(cY4f<7Tbr9VZ3kibE6-WBm4R!}tdJ zS$mesf}$;gjaPEX5A76K7|_O1lG&ocTykyNonVT)M)96-0R}g+bs}nOQ7myL@GEQq zaR|$TsfFbq2%JS%CZSMK?u1DfwKB6d?Qy={Dph--74t~+eaU3H*iLQri}q`QsdR_M zn-~>wOyDZkE&t-^{9i@z`;uK?y@Y1gGGOIqR3?JKnQlZlNB{bua4I8g9M z`A0bjpqUkbdJ%}w*qG3v+)y&$+32B8c6 zr@!I0KV?x)n|Mo77f*}q3o2-9rC$Y#B%*uI!)Hf4c9T#lahGiS`N(pCq>_=Whp+1% z45CZ)J1o*0y^Z7@2uZfo`o-QE3O7G8FTLw3Y`^ZGIyA@LxEXh}7=_r?$l`^fJRfWO zVWm71i{zZ?1YSiQ{<|G~V7HLS?#juxuG1)!88K9S9VjkJla7LaZ>;>HjDr-lMw zW!Z$F=euqOE`oN&t6C!bT#eE*Y2V|w8;rUk9ckL2%rNI;_cM7Ho^$9L|7nOBrT@H3 zbOP(?Zjih>H1@kY5Oo4!r*OaIBr7Elu;U;Kc=b}lV6w8>P;oNXr=ar7oyGci>YhC3 z^{q1Hq`A&`e_KF`)sxX>-%247*d=h^Dn2S9Y?-i-A1bYzi>>O2_Nw^nlWdx7`fzcwGhZno~KPGnf ziyYmmsFk?k_z58GS-++W3mdBl@nVJ2jGv) zwLKr3K^P4G4J71JM-K*yk@ke)B=g!7d;zOsn43sh*psu|XO_gRuMqd>1ZLUgk-g%l zlTh8nho*gyCuhKcWfs-6d<+a-eU66pH-dbxb<$R`X+o<0;v$$GpCA!N@is?p)+DzF zVNkt70KL>Fpd-bRwc#d|3@**UfX3X!ac`d!1oc9SKT=P>qKy4;s4ASZt zv(^1#zSD_J&_k(1AFs5QUv1J5gE}ybgM3n3-oKvC_wdW?Q<* ztSpMm{$D_STn9Ir{MBO62eXeWjKk69LJ}=a(T)y9QYs%MJy2EhOfmMnJ+zY|^e)&Q zvJVZ5_FdxhID3KO$QNg+ugUzhaD%R_H&HNpC@iLzkxG-R)tHb<-&KNXfd9`Jb2!-@=hjbz1lkD-HmY-r}N9K zy|l?Bh|}AZm>Y-a0-aA61gdo<2C|t19)}Ni;>qj|3TYa_LOcu%^0H>u3m88Wcmoc< zQT0JAC2?fHu`EDK@%zE{6e+PI{fhiY2XI>Ly0Dl68UxD_rJ9}M^C{A6I;nTq-YyrljJ&v_PD-7wVoPD!LLNXG= zl^eHB7%ILTE)z7NZayJH`Yp-9A7^IXIe6Q}SniDjR3&IT6m2LI7W!uB6@4z$JdgMj zP+MG}3nS`I@No<^F?(iZJY10Ovi_W>{w0|pk6ySNq2f0VB9p?% zjyl9h{Av1d0_g42lym~prFCTlO3iW*IP&rnrBJ#>`s?#>F1Tv92{`LEd*rvV#97I1 z>EsZG>sC(Uo*!8)mTzqGC?9OA_|{=W1ux70+`f_$0$Shz2rYI@^E09>oT*0Bz@RkV zzhhTSAlgxyS4qKHCx0n>v#nbau(#;kL`L0P+f(+ISuO$d;=p!-+O~v9Te{!?8=GtT zzEkiHJmGMMOktKnoUUS5Yk%`$kJ&>`voTm|%4FOEP}H&-k))&pi&JiEFtxQxpMIJ? zhk!$WGBr-`S}!3_UGj9fwfxZ&Q@H7O%RVS=fICMZtLduJToJT_%5+Ab+m ziU{bG#ga=LSaVDT^}S6@ieg3O>(dGkCc8QnxqCsA0W zNHnn;>7)Uq;w9fND~R&4D|e(^{JfXLD_b}q_u#4fokXTpU!M8Jv>D9v| zfoxz-o`a>zdr(X586p{9e9K_K`qq*C@5<-(Pc<@&qi>Bk2H)(xYM!lNLYk?1t>?|9 z7S=e?eP)(INHN(y=-}&9$J{%l;Y1zp@8F%=g8}m}D~eMJfXZ4Y;X?_k-P)O;SPgyrn8I;!K$$5jEnv{47bjskZ0A_u+-1lUggA7V_n1OSR)%-)NH$+pf2>CkA!&?jIg|wbOKMGNA zQ#EbHkUhMMe2Q_=+Y9hK76Tjm`?Q-8ShD|@80bj>rKU$OLJ#V|@s#U3rSd z@)`?BO9Skg`qc{c!}Qfh6t)y7xsEv`XVg)OdixgbWZ@1Hjc~LBpjMD;7A0#!=FW^j z7ihHdqa!Ka8KLhBisgAvC4?x4l|4~9TFJA?uI9IZdFzlgTf&Enf~{_KzwpcU=Dk*e zEsa#TR(xEFo@F+WWYO%=zjK7JxCIiU4-p?>kfsmK%mNuNom%;`_4o&sc5nrtp(o5( zprs?f#;L%!I1AT}lb_k*O_62SZIchb{dak728AGEngoa2;K|tnIB37$)~ThKTK4*b z%V}zK)!2oSH|&eO!qb4FmNxOy!X21|3TGR^V8}^Uw!EjCiE4TNb&F?bk%uHTh5c^9NyaD-?whu$sSsuIm; z7>^X#zPN&I*eL4^XwB>k0lA#dVJ%g*C{bmqq3kzmryG7Iki&cNYKcd7UqnnW$OP!=0~jAFD}U9X$A6Zal;p6}FXgnIU1YOHP$zapI=&s$Sek#Q?eh z0)zVC`kiT845joz^T^iAbSbHiUot5vjmPa zY@i8FrF@3Hp;R;;Jt4j60d_TWm9p!gGdcNKFS<=$2y^T3lVF8z$(dKYn}e!nh-qi5 z+dpIGIT;*!=UaPat$c`Kc6zV!R@>iK<220smy+PE*B3^51lBhn=HmCOf~}JqV^fjAeNT=1ygMFM z##?PgyIQekmYBU$qXN@`tJT`hQB^iZ`6FVC;c!AM`ODIfT9 zi$4cOE^I^;5xEi}x;a29L9u96!STDE>?(fP`!Od=?}zII7r7WL18^Q{$o}0C@YxVc zZ|p}uIh^=O?f((%s>$cnZ9PCk8m74(czrzBg-%e+G+@zY5Q23Y#}Io=2&Jl zX4hIhabAMNhsgk5Q%7SGrx(&@g~+^oWJB+&QgXEWVa6Z1I9*4EDCjNQG~(Qhsz_&` z!6f8xlBX*#-$91t5ZBew$t|X35sQB*0(+o2D*D75Qy9XT9FC!RYar%oLT09rRC8Z# z1_-c+wel%}Mt?c})%!%q0(;1`^o^2ua)ukzwAQNVwyr=k#3}Zn6WW3GmqJLTq+c7` z=2ws#m>KRln*~^>mccpCz)E@nm1+nwa+5n3-4B1`)I{gZONt)GSmBXEaqt%qU3zZ2p)*ix@_2; z-7e;oaI1v;6fTBebh~LFD{+?&pqPoHRWKez6{|c!Y)ua%4BBLms?f`H+iMqe z5pI)bJ$#v~F6+msuQ58?xQ8(SlM z-#{{!FQ~c|$`R{h=GF2p;#a=j0=IROt4M?9`lM+W&~Uoddz@2~G~|j`}e!0Aa8^V(VSY~LIB3`niSWX*_Mq3PgM^1<%dzzDp11^;WZl@qla zp}`4X`v0K*jT@_?G20j?SFK^qh3Hb}6hv=>#3&*mruU*RLJ2tQ*oR>#7abmAbWc>^ z5wOzGOiodlKg>Q9rq(y@F7x5oZqL{#SucsgrT{p^DRUDJD9N7bQO9kgR(RTJ=h z1hV_nfXw9%6!wHzYr@=z`ph9Q&<=a<2@DNm!{aS6l}F3yAH^|sRTT--pLr`BDNU=a zdsq^*rRvSJInk^9p0#r8e3(_Gc+_}&&u)I+Xw)@0{0w1~X$7d_{ZK8Rop-&InU~XJ z+tKP{u!yGspE)v)oUIV1PseEWt*QhlJCMIl4GvBW>`a5C63HsV<^{_zdGi`~Xz+Fa~TvABhsu!$Ybfea?gS}*p zQ?V9J5y)KcC8k~JP=C<$gJ6y@9Nr+1%WxisSpl`-?Ygg7e^lRD`Ze;L2pz1%6UgIv zt8fd&JTOxjo4>h)o0p|``eIgj>e=THgKnx2-pd&B#uk4B$%R<5$ttrk;XUoE0d0&t+^{|3p^uC`E(2+H< z6^-Otxm{2Sq$&Gh7$c}0(?8vHyrkDSCqPF^N@VXHxx;uwHT`RZ+7mAz6jSUcuZYO5 zT=-JjoK&`xGyE-^I+``vXW}Tue*8{q+f`50kar=2T)&*anHNnrVprJ)q*qdWYf{>l zVrb8r!MU2mr-p95CTi>7{cvXzA8Ao~e+BC%_A|BRMU;InRfW7rF@h79UV7HJpH~au z3c+2xna>t%P()&uCWI){!5@`UN_08Mhupk&uM76%)Kb)Q6dqs+1}kwmLr8Oe348EY zR9A%D&IuxKz1a`|LO{L01tucs$514aoRa6O8L!R=a}BG06eTNl1qvW)7X>y2Aqdk6 z`Dp{>&@H{ZV5d8vekIbn7gbd53u{Us0xh1*z3os{NOF7+ndMls%1?yPY!^bO0>#<> z&Evzx7DpfZ*$0h>A|h1?@)qBwp{?8W*65@R6B4_1EZb>ZN=V%Ow0h!YI`V?a@eZaE z;)aW59^t(rT{)j zbA95~y9X(SGm5H)!fV~)SMQzU?mYqoNihTdh}NtBxG+6^Y21!({Jm#l-jAAZ(IxDE zt`C*TG+pE*ap6_gxL1(EFwnq~X1?85#d2#82h?-(TcYp|##veN*Y?K$qN%BanO)h2 zG)hM_6lZCSV>rIQhCXk!fa|y$m$Y*@SmmM*3{tcFrA|SkS3W}!&##jl2FH19{4C@P zU>vPkIz$nZyJ%O?(h1UP$AIr{QBc6Bfk`nqTjig|E|Op18(;}<$)^TA`+Q<_M{WBk zL~gEBnUNtij-7RV-JM-ACHW}@r>ojZrOR0wt=AtF`Fu`PKm1W@?8&AFn($83 zzAqYD`O}P(p@wBub)h#!F+~)u_v-&mD_H1&8Uc(l6h??*-yOT-bFJMVIM8&=7888Y zaIoG|%>~eNcAbH_yZ~sfo1VA%jp19@ozU{F#CUCGsgGc(xau~F-MG{v;?N<>cS7KE z)nhirHnzfg0@_@aX+mm{- znV~Ae#)s}*3}*TJGQ6R%VrX=E%qJrMzEBG(WbaeFB=+SsKyNv`W(*V@>EoHhLq7Ky z{kuNGEy73kM!Ms6lbX(o2frfA5Cp96+%5OvYHB2Z0l%{M1d)!)wB>JVvzJ!gX$J8e z7lFF`=f90IhIV!sMr84EKRaPj_fx1E+@M>>$~##BH6i&QXdz5BtUeOcW%BE%2eDef z&VOE2XS~{_cABK}XenyyIVuq#Y|aG++xt-5nWkb;60wLPdFkMc39=F3+0ZF_<7c^= zhgk*FYt;?^HX}u_fVe}K_T8-$T7Sn|=JHbyC>mRRpiqkd{qQAgOa}L&Nz?8**wZM} zUXiWzo|vVTGt{R|6@iCMZM0(riR$4zFy6dl%gN=1dv8aC+)}Q4#BMBra-xI~^m{qQ znw~NuSLM4M6(ywVNN5d6aSn`A_aWPK+4=S7oWs4f(0zr>Hb#bRZOPy~11%~$rbX5v z+Es5_Wg65%HVSL7unIC3IGfE)(k6b?pg1FF>t7u%B%!c){H0CTsaWr!xT?|cLv71_ zRzSo$_wuJ-C8X@-V=A#kcNamnTj&EJKETD|t`4O`U-HzvloO&tfKq_-L)q2T4a!tH z3Pk+3edMPJrzt{ZbX5C3e@(}eS6)at^WH0<;(7U8W5Ibj9S0cI1F zl!Mr)9zkw4tZ*Od>%<3J2|uXWGq-JYl4}#(mu5>~hVRLWW(Q63*^U}*<9g6erVk+G z7{V2Lx0@pLIAI=bjTgMU4*Q9aN^n+;9u8a4p`!8Gfu==VXT8PlXlHw7P}0ZA}v+Yr`5+G4w}Lph6KBpkXu z6}jp%5EwHmMjOQ>@4u1v2WZ!RS6&9#D0Aa3MxWArdQ1-boVVwekd(;-0(bN$C%U_f`#4=jF{vO5J2G7CI^xs6GScDs8C>u#n-Lj%+YT3= zEe8K4j`@>IYPbog#6=^LC&N#ns4>^g^6g($L^5ZEI(>~E(wZ!u$ zfLC)-e14OkBMJ5*EYCj@{NQY+x=ixrkWsM|rX^2A_ zAYxkGzNng?JoP5pzv9rzB(syc*+ZxX9sYeWRl7dP+Gae&Z_0>r$$d_ni_bS`bC7aA7TsWXB=7r;>CG z6=Zgd|1Fj!M^r7^KF19b=N@C*%A)VH^T@~ZD~vLUFY1sb0$ccY*oJn@s=rMp=P->{SEFFXtyWoX-3kAWoS zb;%EqwvUxF~KkKK{Gq-|G0N2QY;D*_n6KS%oIo`3n8 zN0Xc)|8mD|_6wm=qQEFB^=V47z-th1;4dClXEf04&&7FiBE2i8@`}u1 zw7+t@NR;L@Ra3<#rVGUxsAH(yXX(`n9R^FD^WuhEZyr$MJJFS5j2Tqr?_?N97q~R`pc~ycsX`*D`;_DJMo(=V$4D`kIap%CjNlOsL0YShibNn#BxUHOwR6)o%wk!yEA1CBq3+xjvKfWA+BD5duwwQHn6Q zGxhC8oImMT2|4rG)Q}PBtXW8+0mO*^Zt(FW6w1#oVABTf{fc9^`)N=3MJLhH~0_N{#+ZFs4ii8V;}~%fWiZx!`PsIEfT@JJ$f!VOzd>wR|{8q?HJGaYsh!OLoL;*IXkqu%?e^BZN?kPx>>($ zKndu^Y@M~g=2v@{RsyUjRebmYkNb7-%K2K}L?E)MxUCT^#VO|h$Q zG=55W9-8X^pT2F2BiMouc(x^haJ6Fh%Ga1=KPDj&3$n7FgR?0f5`9bwSV3Yjx1BFG;&(lW?kjY9BcKxmBPa4J?_;ZZ=>`)Jc`a4qR2*C=2AK@Q^ zSo8MBCV}6{n087Pg@{f|B9Sc)FB5pRe0Ow-cv%*WkH{|Ax%+Xl*oP++$P(RdhQdf5fxNh?394;_Oz$92l|xeODdIb-N*O-#2`IFJM5v z8Y6vU7%BgTP8g}usdBugv{0T<%9!7Q`8P5_Q{sY8&8~v7H2&8v<{b;}y-~6r#t(Kr z2#mYy7=LMb#bHz9R~k?MQr07)84aCUwqLxL#Gwy5{*iI2UIolc7xFafK%q_o6xWVU z@F9zLQp2FfGBMAJ?0+Dkc<$#BY$t=0n_5NU@Tb`@y4$z^4fsFKWmI6UhelPjqa%%V z3I7Vw31l|=b$VgkPWlK;y5a&8y9u%wcMp!$iZTmqC;M_!kKtsJ7DD0{N5GR_4K=$h z%9BuRv@n#*4qLa@wZ>hfk^J%fH0PK*i*{l&8bC)awY{fdbH;xgu%?)abU*Pjgc>)X z#-cgu&({~{;L*I)ysoC9_TO*Q2c2|TV%2}%XFQ|h4!&T0(F#5&CO~k}CDLVGc(laS zIC(YvVPovk$BwqF1l9jT!;NccRbI6d2dS`E)F_UmMBg6kmN`g%b`vxeHx_!S;l*# zw1b#WboM?w!#}%|%c{jd>;{cjBlG%Q?{lfGjmJ8ZaR&4Z ziscy5@f%2wW(8G*s5tvYM0R3p{*TYw+0XL_^XexNjiobWGC3BCf%-5^X_|B(Mt;B+ zj$sl%MZsGP&%;+pHc7`!;|6XG^vQiKr!V}qqf?L9)+D*aBfMW`_@nOz)7w(9Afzxp z(V;Xn65eE5ZWr87RymL=MdK**rf8n2oCxymXcID?M|WgowAEs zT?$q=u9d#@rETA1(nw+<2d#O52atOAZ7GGB(NTSUu|~Yo-ou7XAAspi1w*QF7YhSv zRa%qE_T)!|#5mRHIehc?CV8Slf7CO>9>YOZ zYDI+N`&Eg7LDwmd`v*_D5NiC@BP|`U)7nC3by$o9OM{bY{O3T1>|9TAZ57jFg4Z&f zq?59NV>b6%r5kTNoClB)2moV#VSiZRF_{!(GR$0~z)O5}Af`8JekqE`70QXiNTRY$`Wg(4~ZUbx!fF z7zWfth(MgzriA5xTmLZt-Xx>UMeg4{GXn)yZ8C-P6Y;q&K|t7+|1DT@FcEr-ROt?@ z6oP9ZcWE&o(NsGO{2pt%oDisQ`PMxOh(*nZw>UL?-Al>-rGIB5XW+>zL=&byQ<;SKvn8}?D=X@!7FIx`aQTpkj(lc*0)?#6C@lUa;1-rIeO7A*7 z>x{8T6bv0>b6TZx|IZBw$2cILovDx%tEE1D8Tg8z6$Xx5Lkn7>0S+lxDROnHf-|a-EDE__}l3mnA zC||R2ew|XMIT5p2Iye>sFcNRQC&!t;I02quIR-+eo306Lo6?wMFytpPnzX&Tqi5}m z7rf^z_)^2V$P;I^I^>H|IQl!ErqnTFgLx>gUS&qh@gE07nog*hmcNQXSBMt0unMY* zI80CB{zGttIi&n?E=TFI4hg^&9i6;CDY=1Wl9O&R=glG#TU8|fXDnY8xiQN*D6`xn zr+f=KI{VlwZuG3QQ)Wnq?f?j@2ujH2vq}Ovq+2WWKw>TuQ32$4jfSu*2-VG2osx)7 zF%+bzwh?5yIBTHtr_)YAKGIZ(hMwW0U|Be|2onBgq#UmFzM($yt#2|jaYl~qG+W1*m4vw@P!%m>aq+9I(z@?`w=+mcHO8z#lIiGMDLCXe)5p+0 zW*%w$5>9?ANG&eMrJo~q32J*3AZJf8;*1$Nu==J4C21Vzlo+&NNcJoM!UZ$69UBSz zRTX3@V89EZfI-_`)8>RYddBBz}5*Svu@^zVEW-)*CADB6wH zBM*omqvXXZY=Mbh_FUrRUx|FblB+9g=JgaE0~jfq(D2*iDVM8kh>*b$q{kI{*Vd!% zKN&FrYQEFRm=Zk|I!n?5T1F>OOK}MxT6es`Rmr5kOP7{*lY;v`u!Dl zcLh6b0k)7N{xE#|WRwjBOjNZ>z>qV9kt{FnzNNxZ*m7XYLlKk!eM<~#k+w1}Ywijs@HCH<8Xh?+4F$(hH$D;tA_hlMly;3^K{S!j0aR=Q0`Zk6RE z10@Uzc+Z4*^0o>|P9Y<2cdMl26-@EjGTw0jEdm~yIlD9Za8L~3y1`y;-ZLWlI|OQ0 z#@V@q8~*|)sN2B-Q?5l?+fgC^X0ET($;1?{(by4d!r=EsuGf?o67p&%<>hct(67m8 zi-KZz*~S^Bq^~uESl#1Nx7UpILIBIDV44+|)uE;0>68$=YvgjRm5;vBWwD~?0K)p~ z#@3SqpnZ<;*QT6sXig`T^5dl$)KXe!Kq$=~`Q@UkQ%0agZvmX11{iX&7473rTJ@k> zo<#--x{k_=*P{GN z$PX``{%cpEp!Dcm?r`_ut)1pVsNNh@0}QxQ7z$3T;}P1+9WVRKY*pt-P=HKVz^8#+ z4oAn0U-oK>chCNMv>!%H8Low#8zqmA$Neu;+eC6jmjp>6n6~qSK<5gNr^(29@sJbF z*u69gd?H z2zr~Rsyb9bORhQ|%w=&I@{Ca&d@w0oSLebReDJuuXfa|FrTh_&+EfYHpDkS`{Z79R z+deeZV>6_~;Ik3PX+41VP){YiQap%^u}0G6)6H1FD*}2x!}g&5VXu6B)9k9lHFJ%% zOxw#Op&<~|jIFRV`jto?X0@kwY1FgI8l~+ZwK1&32ZxjQK{UK!7fZ7w*7>B-zBu8| z@X^OSv?)p)X?b~dM7OIc*|;D0^?o#5A$m;UVwwbpk_c}@V_{KBa1aGjw>189;SI_J*LF|*71$DX8|l+H!b_BqvSE$MeAlq#yHaG6j1%3zciNj zGurab3Y2@u-~Vhej9?$D$u$1pSUemQjfj3vny`H~Fj97ETK3>r7hW2=z4-HAgQbj- zNOKKIN*DdVK^LB4b*Z#rpd<{`Qo?KkM9_a}hHTc#dZm*C9W`jZNdsp~#?u{I)Op)k zWY#*`*-7ep#RzHp?*237JbViG1F6xDs3YfUl7N8IE5~4(hKI)DadrnBgC58|6&TB_ z#r|01W~8JD0!j9YRhfaClj$qpDZ+&#MtZ6g4Mmc?ET|-taUxfhbQa<5U1y%U7n_t^ zW#-tVa&`mu9oT6d;z#G};*ojoDWbB|cg!R(Q49JmN;S!(w$PWF0?*@L zd5I~c$ZNvr^&Ms-|A~xcUypZC;$kF>6|q}drpsHk8PYNMGEjd-Ba;;$j=F1MxxUaB zbX|Kv^g^4qOu!!t*c7JCk+Y$s0oGM91N1REge`=1lo(zs1^NmB$1oBFsyP{89)9-9Z_KkS`6M?9hDxRBb;$OO}JPkc+!r}@fRgPKfM+^ zxS`i73U7aY$~|n{gNS(db(6g#shQ%f8g#>Cqx>PDL3^9}Win=@Y)@!3${l5x;R?Q` zcTNIQjQAj>7H3DIls8Eu>)U2Qqf*N^*3v_HFpMYZ(-x)>9ir7yzUSi1Z8(UkuSa+T zDPkI!o>%t=HUN0g0{!K(tp~GjYH9A0*15M`@s%Zp?=rZvP9R=|44vrC3CTF8jmjqE zCv`nw7yjH;9L1R}pojvH)<@Xm@X%_R6B4Nh#`ZCOKSTZ`u4M%glt``*vRU=8HNaZ% zM^?EJH;SmdlH^xwJWbQGL9}Ndkqc(f-tT<8T0S?lf%eC}uj$LITt=%P%3rfZYSDYB?@AId{ zO#78GL#8ZE9OU-H&CBXFWV6~u4u|Nec=<{)upUa=$m1qG=K{Wy`*3Z}Fb_P4sjK;+ zQ4g|gv*{nx`lzCkzX?O*Hh#8}lkePwni~rpy!lXlazwb$_RrCCKHM_O~L3J@z@= zn_ClMm*g35&U?Qd1(N=99s-bGBtskE%(dk^xC5nl@YaF?C#tT~v{C z&C~T*#GZXrt9RMDluPEy)O%&)dsEi?7!!QR7LHL%g)Ek==A$+zsCNsJa}4<3icw4x zPfa!>RVuT8e*;3@S;}SboJ^h|py(_W&VQ}K4iHTnGT*NkaGq~mL zR_wwqm(%{+K*8KyzQv-g9RJ2C3D*y(a+dE-T`~{FnW2}02V`izA z%w^*C>M2_hN|Uv(IlAkNpd1nvP-w8Uvp8!Fj9ztewJgy#TpUGkGME zFikgB2!AP8pOBEIzw=uz7Bon?H%5Fs<77mQ%)dh-0~zT4v#-TIzq07EuN;dHf(mU!fEJXG;6 zUIy3Gg2PAY18Hk*XihqgRlPH?J)O;CaAM(zCFDIfEU!48qkBvPFD&S9CQpEd#2!jH zT53lOqo|;ZVCWp*czxnsXs#~h-oARySGxV(u^834&%g)Bl~`e-yVUb7Thu2m-e$nC zUOxyLY9nzlo~?ni*6>8$;_L@5kV|gEMc59a*!}(nxh5g7Gn3v)B?butvBrxZkcpts z&qgwGu_N?NRpAqh%Jj1}KV3`T;nie4>6uKA&IH1dlQ$6;q)k)^I^RP0tFF0QJN8qs#Sbe!r|^9JR;a zD7j){H4l*pv2s0mebl3vVzkiSC-SD0_2E9!%JAN9CdMbEQEd z5^*DWa;cR3aP^lLZD})}irPj6svH`PUMS@S#`n5-9dBi#7?2L)>Uf^SgCMqs-y~UP zW$0%Uyal!vYhrhpOTW~~xB_6~Uy}+i`ZH2iE4dP$vxQw4vfp@F0!~GUGgd~x=oDur z;HfMBZHVdpbG@Buf4999DeiH?*YIiAEC@19Uf+374W2V$dIts(-e;!4jv`6+>z-zj zS!eL82W{eike`L)N1h0}{qmQqt5$c(?=_x9)mvU1s1CQciOu;{6~!B`?1~-#JQd}g zyp{B%Td-e%j_vn|1QoCdzwcD(Z?t})p=VaMYdgGNu%;|#(JTPLy4W7#ZKq(->8zisc-PnR`Hlp-(7Jl;Hm@nVxrFDU?Fpre%3ff9lM zSvVb}1LO8RE!lT|Wl;+(1OHZ8=}tpf-au_537uK3i)6v*EHzwAyEDnf=iS^(-Xzlg z45zF7sSQs)`3SFaG?B^I$yHczMo6I!9Ak)wci7`b@Ac=Ip^2C76{&pd#i3%7S}`6| z-5h~-Y(NinU6&^Yq`9lgYnk{h-0v-M9F3bsP z1JP~HY*<+KQWUTy@sb(G&QMSvU+Xe$;r6MLJzk5I53DOi;NYfo=^|Rq1xa%j=TW4O zGk(taNG8?E3Dl{O*#*qT_LL(#4dxvWtA-yR_JQaENO`(!syJ{)^ze$Ng}~oe33AN#(n~!S-u)ptNwrGKHnQ{J z$sJ}E*OoT`mHCssU?tWit)HgI^NP9B3}tG*aXp%t{~9;ZRowB4ihuoo#xzYc-Vbiw zP_d)Nm6O$xJxiKrTSKzB6OXQc{NJ|hcsTo&I5@z<{uctsV*PDX#^glZ+YY3nMS_EWBjM19O}VMbm;A zDHhby+fLN+y!gOiP8hQ@oH>0NGAeS7|H#VLHBgQcplLEOp=@c6x)A}Z1f*y$H$##1 zeYle3rCeHPP;w@mkC!w;qVMw7fKzLJ+fl#@UIJzl@59cg(SA}ounWh5*NkfF#(^J;<4(uP%`wof@-wLIwY zUFo4<;-2!aIxkpM_EO2VY6)s~q>~AojGzSdO3ZU&M^^ThMC%f^rN9*sGI-7)%g9{6 zA%#|&j81i0U_^_xiWoDU6qMaeX$!tH{Qi>bHs5r15ndTB>MIuRnjwQo!w4lA=zBk3 zcjpa^P9G$bjm|UzEdeHtOF7oCWE7i2=ymy|Yjd~tRm*$1cAeDNshakuD1HTOZC7fHpB(TKz z|E2NhG^=O>kKv@5@raKBl}I>2lGmD`*3@6ZDN)O@fThOUj#==NfA=P+$Wq>=vpN(g zY#})*RZsZJBXA-(h&MOoK5ZMUC}6$GkU{^G?ssJGsY`Jr^X^_CyqPu*f%`Qiw2OGS zV}*ZBZD@Co28khQU!~AOqyMS&4O6^vmRKkWo>%se!&w_;HmPmz1D-t@qRa6mp;A1^ zaWFnKWg%cp_d#!I_6Y5pJ3t0$JZ!4{6`>*J4~Wb1Es^Jelji2^p49+{bLA`i%6}ZQ zh0A86dOFuTRb(Wn-1BaJ9vAh{MW)0ae)J}YL+yg&mVOf#g|{jI!G`;YQyFsO27$Zl zaq|;5T@L~AFPNil1Byu9UbtuoFnNdXn;(=tKXdP!r&L(Qe!K@4tO-{CsS+xJj)ChkejUb2 zMCyN!guN<$Yf8gFOh*z;@FX^K`B>Fc47mM6h(ZpPyoNV!!>ld8Viw(q??rVnXwhkQ zF$5juR{LSAW|zjE0TcMmK=_gSULN=<)RZshxKw2gLQNYAW^)D>6)B!Jbdc`jF{Wsx z!pk=!GT< zKuS`J2}J-ST32BnUJXNI@q!RQy;j^NeQTw_UB_3a;x=>bb#l6FFs^4;4-1SK@lY96 zF`fSi^rcm7+`eDu`OT!dPx@Mls0Mf1Lop--xW$O%Br!qQ&GHA6x(m|~T-#*7yASOF zIEwkd`N2L7e(kJo;sv*>BC(Q%F`M>gK1 zdT$5RFgx==7)o$SxBZle!aLnDa%XGP1lD&*+Xynym7}F_Y1*)aD92 zAfT0u;|bl`r1^wpOU0Uo&R8>Q7TJ*YTdlYp0&h6F?Ep&Gp-DJfgRWzm^SeaL1E6nw z6&@(r5zu*-yafxy)b=w3OB?}MWnv~tqfdUpR=wW>3NqP(1yKoa*w#THN zektu3_sx2g*LRj-FIprgP)unlC@Gp6lS5Ox+|D`fRkvaXtzYs?xN!BXLmF6#z~av* zn5>YI(fxx*IvWKYfwjq@qvMOS=^Wsau%*R=Jh2Q`;vN3;;3KX;m|5fZcy|^3t4cSk zTh6*MwZ4sXR=%vf^+v84w1Pxu8*TArXhFM$Tl~xX$3EjsHGbgJq2izMmDUA`8GV7A zk9>`BjcM&HdzN&qJU4CgJag^nYq+ElMA9dP=FSiUQS_gPEGq0jp0`*Y_#WMyeC!bg zRPlR&_Gd zD}>xe5dkvoF*d|YTV~hcMo=)V+4Iav7rx?BkdDaxLEYUW`pOQsA0Lpd8Z%FcsU}IK z#%{$eoICwPTAzS4$m+6GlhEw6Rj@E$&sDmIg;ubAxCOv^=Q$$)jM5D@Jckdx1fY^L zp>ZO-R)gC{S}!6lL<4d>8~SrCzEhdKJNTw-5CDPix;G-iZ6J)wx)R{(P<_OX)aOA!p6IfkVVwcKG53Y*D$R&fe!NPW( zl7kNYw9mI&Xg#Ms2~g~_F#3GTySstRkP{R5p5h8Qr`5#11^h9bu>5cHGz3T27bc+$ zUpSog``EKHk1SB1w0i$ie>eBkNSr?r{0g9sO^w=SZ7AT*O6yk$;GxTfWRfN_mMA|E zi9CFPMR#0$c)O)sl+%elr};+NZScmRxAb>|LVN0eI_CC(20+)*AJYz$WF+_RaC&^U z!GH;$+{k6Wk9iOeUfZVoJe>82m+HUaw*u-aw#5)+a+OdXV9WXfmZ6=MC5Y}^okinW zU_t@%840A|=A^Sxi~4dqC4~+d0|)tuK-#1(5+M08UT7hDKely1Rh=P^LF&^;-ttlB z_-O^m@Iw?wU>IcZ_m(*(8b$Y1TEq9aBGl~9iO2H_cts)(d<;t43@^3r{eHGtJ8}&^ z)f|()o_JuMggq6F(b2${Q^ABWM)x=uvBOQis#+D$P0v)6;vF;r(Tw1Ss)L}>)J^8<7&l80{5?K=^&m_!bzTtVW6p3xZgf(DGfNH>bHom~GhZTBmK zbQ)QWBaa>ct%JD#7p*?TOG5`Wn@2D;FayB119g5eBL4Ib#|J%}zOuXp2{MfL4bP@N z3-a&2AxWqDN7EJr=b5Y!n9np~q!FOwF_Z%EDY8@WQqkTHL`x>deT4X^0V0w=MV*cZ(*cY7`(v$c_! zqai>D383wc`3XfGOjMzBwpv7_OCZ{T`rYK*fA#slCd4t7m+Sdc8!H|`E3trsqNh2{ zVV(Fv9g&|YjSI9lH+>Oqj<#X`h?WT7OCyNXqHR3Wl|{-Rf~8@!ZT4Pk>K^NR05-%- z*+}x}uu-~+emiKJZC>pXNyVw3>F;htzK%WpC@??h!_M7qQ4O1fV)ie7)Fbr{~KC~zP?9Tni~{tg$SX$Bgk z*1K>$>x|V#v@ShPtQq$|_|TuYllc~qvJtnHiEbCID_iYvich z8;RGXxp!J#-Bf`-@TtFoP6Bmi6XTqWbispkv z7CGQ>Pri2Ak~&IV0G-+oI!D#k!h;DUz<;o4q9PCZqVuE<0A+xAnQj39(B#6d# z8Z*s+c)D;iOC#sNGH=^nb5e%wJDVvG*hH)v{sCIukGrX-T4s#eeC~7&*u({db9-@M zh0H`%aPeESA*Xnlu@6dulIY(?-`pH2|KUn+I{pYwKJTj#s5tR#h_quHD3vm`gZcV9 z@gYG=g9h0bxrMSJI(c5_bFD`xA@bdIof)it)8P?N9Kj%+BNXZ&2v zgIq241Y`^!D4`B5X(A>CA;EHTZv-ap2A$m8LSO_FJ2P&rkP~g)A6=-h7$e5q#}oh0 zfhB7c>sK3zYx&a%nj`@p)kpmV{!>)n5Ae;q?wbD;S-(VU_vB$0-Ut`g_ zb6$qbxIF}s>zReW*oJuFkmVT#xQvFwx8b~4JIg5mf0!w4nOqV-AX{*Ew|}N<;2m$w zZs(-21;;1xNLkJ<;?o&zT|gV9_-)>zyvf!bB5WX6$oW?;F>3Qcjr2Y7s3*imA((d-Dz z_GZ{fz1mP_;Je`oVLLAQ_Y)12K}#90+LZQea?x%$WsiE7`v`)rQ&bo*6(i%k?rkp{ zZ~4^gGT~G1!0D5$KmgReo>`WOIA+!{9Q$?224$Ku7Cx%Zv`FfCj&(TM1N@PjxvQbA z0d$B9-2c;1O2S#2UV@{~-V_IPV%-ljB0k6?GyKoXxdfNq=aS687?%}a=2`%SX2aKo z*o|@xN^>%5%lu!>7eV#iEkinh29oQWn`BQeh(^I1AfNGUP!zz;eJHhH)#ShvpD%a# zb#fKT+8JCV_<#n1fK;+fM;GL@ znjV)teKX3Q5=OW=R}wjZ-W*?ib1d^4OJwlb91gv3A7<#`xG}j0} zqSkf$&fZn(4!AuW>C!5-l>2WW7)}Qmn~}G8-<_znohN8ErX1{OSDFN1qm@ty_o{Tf z5zNR3uz&!pJ;jltY!GL(hx~*>wwDmEm=`NneH%QRmD1}0okuh~q}TdFmE|QP25;)# z4SiO&8O44!%+?9-`l>jImzf?krNQ6x%SB7av6jh%{h5AJ$}YaRC$`(x9Em;PDKT$@ zT9(`-XNyV9D-&=@JPw)^q9157=xf??v-`B^p8Oh&^-Ib~2ie_ET*rp@OFkY+^{R7j z=Opd2N9HfsR?YywZJ96S@@1aFVRcPTz@crKin&sLi%3!6R$&vDz=0lA}la{rW+8nvv880s#;rLW3#L2Pgy8Tq(+fHumMlir=9{t z5fVi-xXyhoTiT(zN<`p{{Rr$aas4j4Lzi#k{)d%z*o!G9q!1kb6xY%cQQUgGeeC##M-y5Sl6`)O8HRasHyY}F%6SqJ zT2l}YxRSE<9fEVtOGuNGaB33Sw7AEM398%;-Vyv&nErLSacA*@x)60V^^syc zPq?J<6P?D>JzS|E*Tq(c=`Q-uc_*)>UPn%T8cQdf0rY_-nPBCQgtMksgJ%`~v9!5HI;YcxbGsV3_-fU++45#2dF2zbu8XEHRcJ2WC_J&vs@>A(!(AliYPo>hO z>9tLGExMLA0vF#TfXJ+8hZLp_I4By~&$Vgm|I#5w>WM5pJY)$6&oq#i*-VfIkFl#iWI><`Uv9rZQci#}DI_Wt_B3SE zlakGBk2MR=EL>0#=QNq_m%3=ZcL(drt{&gnMu0CbLL~OUF@o6g(`dyuq(#ozv;SE& zgj|Q9Cl`SG{4_&Ta=qBaA_b}AGFU=HY>qV9scdWmHuF!X+~<-8`~lk8PP3wGoO4vAV*a{UK{8n!hL0 zo^6fzL~d#}=b5w;c(uLyK|9npsxwdT`xFB7$Tkk2g?n*2F$_56k-LyWtu%cu12lhy z`q0@DZiC~iRx}8eqm^&a?D;H6bmvcPJ$F{Hcb{@6D^<$BAu7@oU0&EXjU7e}I()lb@$NJk9PDeuQ@ z0~la{Tq4Vwe|Y=b6p5$pj|Ys?`>u}mFM>cg*YJsv$Af$!oP$VX#d1oY$2I0Jl_`9< zbP0~!n610K0(-u(7rWx}DsY_kb-5sFD_-Rr{tJvhJh53@fT6er>VIW{KP3P|u>Utv z<6Cx2#}n|-sRsE94&~YU=hC)Ak^u1r!%peX^Wh3}@IKOiq#A6P{f^MgBRtJodaJ0L z8BR!6$85*pgh8c1n5HD=hjYIjth1pwP0<9tpu$rdFnXh1y&>;xxOFFZh4S}2aTT3s zOL|6W`uw30Bzs3cc$Ank^{qbbPW=(~U$1XvTCSi&Gl1A7a*nT0;TTv$RVA39b36KZ z{~qjcU@x?vm|=abV!c*K{Bh_%U8ZmQz|EjHYNT8;lu;;yUAQJsq1Gik{a@KL8mZ&# zp@vwm7)NWwHu4Q9+e(#Sp%z*>TNKI*2f*oTt;UB+E){#UdX*e zwbmpg4bGc=n5qsImT)tB3lh^kajTekr%*Kawq;H9eDh|PBCtQXi9N=2hsh{4vrdmdl|Ka^pZ^N0%?KT1bN+2kN&7RLYW6`QJY~KmAI>HBqO8R_-)Rab09p41UH>jYD?CCUS|A1wPMvCD;i(>5n{U`E zKb!?Pu6!fjX?KQPO0IESz1XA=G$q%I-BhNYC%~eE$I-{t{&;5k5!9XvXAX*aNoA8T z+S*Ol9HFjY_Qt4YR^Zrn4{_zO!w&aBoB2MoVbe!4xz3^9zBr@FPn7J})mwV8MQ8zn zEi_WRxPhKl;n`v2TitZl(Qpd;pN?}c=(S2Zv*UX!!m0YMf-hbf!B4Zo1>y)0aXrqj|5E+ z8~Te>=`t!?iEUQ$Q{q4yI!D5I0aBV3GRzbI_r+x?L65;(tV4I`mOU+r3I*$RG$LW^ zwMy~P^QmLluKwKWN}7KyclJ;KOtXPwy?_D$$v*x!(`^gU^(8sd#ddkkeFwyqpm|xz ze{S=kG9XwqkQQk-rt_c?jus7ZQ0y%eQiRazg()&A#@{03>`-Q5n0@oZmE;UK8F2R;PEL$gbN@O6n<5wxmpGc&^HQu1~`sO1$RFr z=>y8GUgai%n_6{R>|DMhT+Q0g_mxFWhZ+Q>a$N|UJfN^b>A)l667q)%y(FJe$SN1A zMRupG%e z!C^WLeS7VZt!5$(^nOUuX?xyLF^pnj!Qa?VTh2W3p3-QDc#Z*R7HScm=QQxOLJi#_ zt1)4%{g}PxybFd;ZoEVZZU^S^c3^Iwlx5%a+%y_B2YHGGQwH7jl8Wm-nkE)WbjSWb z<-=X_C&!1-aGW%XA@$f*;_wNh4V?H|(8bZVDwQbs`b1a}?s5i3>Se#4{ybyZ?Pi&A zoyR+9M2v-XK-ac*ei39tl42>0xezWa8{H15nRSsQ0IyVISiZVwjNCBus3*A`>X;kG zG!t)npV6%N`kp@gs`MAI#In3Fn>_wBwqeZ!(6*X0q;J;CHioZCb4N%i*!9`P^~DrI zm1Yk;L2_0gIxfu}2J=F$WJxlag4U5$*hRUZn9Cs=XVUR}m{qHMDIh4UrAU~clr*Ik z1dgp?WWZURaqc=_1fJG2pL%u*AmNTajb>!l22HUq+s~N-62E~VjDi&vgnU6Ky$N(x z8cu%34Sv5^1c)!xLsZ+r=igp`x)%8HAvSkAB&D>Zeaa5?ssPkqQXGxjh*7lhEGl@h zI@fd=KE4_V?9 zcx-Dl{3Mvjz_a8M0Yh6r5?ACBr6rIU5y}9!t(14W){`xtk14e2yN$$p7$LkE`V`Wz zc#kI-7zcHDUC?9yfy^ZoAaozo*=PfB?JVvw9={^d`dJ2yD2~f7ZNuw>pV1ZtIG|NA zC~2Gw0}y~koLt=QUJrHMu`Hm5Ik&J`q%i}x;*xWrSKjwH3>aIZp$n-$&tv%93=>?h zyE=6wI)ZW{;uDbSnuqZ*r1yXeuF8>4&|?s+JQ48QF0q~50s*@$3M2$MOEJ11q4x2D ztj(Lr>6j7B&kc$19i2#Fy5d-d3VwSDS%hY>-*_o)F990+>s@$MkZd&vw3A#SULFSE z?Pn0E;%oc>OW(Lo0ggfxdx&uLlm2|51wTU?mWm9?rZ3>lAwQWyE5&36O-x#(lkLvt zc^?k(J&yLzIKGpE@stE6heU_RBQD+GG=!9HqVp)0RYIff5?py30x?@Vij(nTu$QYl z9!NZ$ZS`$;?JFtNeIT!6630Sz{>Cs1G6a|sUJUkBX!+Df#UWQ+k#90Lf)(?7{A;U6 z9hqxJSY1&GrbhKTK>*^Xeag=#?8#FjMB%9AcA>}0dUj(pqCXvR~KJ>=GXOg~~>x-FX~{GE&u-Maz%+JF_ErXQJ|qn>hBW3a)72jFlh7PWIA zPx0S%xG{^|*~&=2mTJD`6?WImj-`3b=ML#}Ds4gwwdsED3*7;e_AtrXMl`HI-a*vR z&Ncg6eI118z2i``b{{0re_v0Q0Uwv#OWw|nj{=7Wp)$MS5=0u+eeV%9hl$EV{9dR* zKxTrxv2*r9FgQ4GD^PG&W5G$nD0wwDTE%l0olKi$^mVL~Af;sG|NOeLZ3dEy{d-sUhAtVF;0KG5Gj>&r5*#mXpED#(rW? z^97*BklCE*umA#7H7aOq$k4AO0Vl5%KW}y|MXcQF&VHuaFIVIf&CQ5H;IkhvPWI7c z|1Dn-vtaa;&V-(kJLm4{v>FQPh_h)J$pdb1FXY2N6eM0CS#h3TDI|4(yFO28?Y8!| zi03FGanYYy=?JRq)_0Cr_a8`!ymyq8K^%(0ZRXA_L%I?i?W+J?#uck))Us@;kLAVh z7F+*d>OD){yGtL~TG*HY3q~-GN97#9PG#)%s+`Xk$^2}CjNR@X_ zL*@eSzZY$xf3F$1>KK$U=IpWM%enV6w%?FAq{uR!W;mx9aEsgR$-0iYRt>fvmgd#eqwYVu1R^ziD!B^Je z(JDC%@w+ejT7whKHwNA(1cuY_1(|7`IMT&-_`qwbcw0YYnE64QEg=At3ed47tF~f$ zg337b(Gq>_XwB2B6lK;^TAopNLYJ3H=~L(I>Y|MZfE+TaQiPcTJ*}z1ByO&P4WZ2# z)bX;oQ~|1M^Htz|dC;5iFL9;#e$Q=|^n?NEhH@kC(?pKu($gkrfjt*1`1C>QNW4V! z!s#SdQr)N8w(*6Zv?l*>&fG-E5W#+e+4X|geH1g*beP~xyy#I5lPOA)%DrghEP2!M zCFCX=ACFV1P%d4M_d?`ES-RIlrm(Jp-Lt)s`$M`!*y^Rydco&7=n-|0JzGgrn^kJP zq;}yD@72U5!WQOoP%OXAiScC7B2%K0{93;@U}K~tBXrPF==|395Z?u0Q3y&+AX!a& z4<;I94wRtr`lEOsKJG6{XBw3sn1m@lEaGH$Cvv{J9?U6c zB&bVb@ln*R2#KZu<(T>!x2#2)?NX|9_OMX5Uv!Cs%)T$-LRy&WOjbnmea{}K)}G8F zEMUQMQ&|UULoSG-!50OwMen~pphiYCn34@wssuo$YW%M?vERIi7X;1{u-%8)!*fQ7 zvqzI7jF8uDYx};la!MOz$1dZ}n>nE@(x&j24Z|~oGX5%=t zut>m{Cu+`X78s}u&`ncuawmNf!|ydPxR+pVih1{5wTf0CX;10|8wS*j+#hDEOiYN! zOdu2K>gmKuiDrthcA3iN=`I$(4pxP{qVV; zTa9~rMJ}i;w9u)2`^y$^2rARz?YxAoKSl^DFF)fBNeA5o*eUG&NA*2-QTS^pI*23|CZ}YT{CmPAn{+y;8}s5rB(XWnJi~v8V914Hy60DJSB%q zdEvpFQMh?k@=N5V7MQF~VcIFZ?rDw+rcx#{kZd-JSOP#vbL{1JRvrH#q=5Fu8{q;cvuFr= zwT-dGqO=$+bBC{xySOAr{1jQK*^WRW*2!A$r*7a#kl*KO`1rBN+m41hMo0la{p!_ zYMMs(5KVl)zLSh~_gNfQnsK0a-`nD5b`lQ{bm%`=xfemZ2bRin^@g4enQ;QhNc!-d ziM~~IuN4X72&8@-SP`~Utqz$$QL^w5UTVtE7d`;iMFu4I%$WClH@rtFC>g3F3cvip ze&eMZ#{{>&-n_ruaWmI;*p-aKi;k->le4j_v#M;fzrSl0w9Y?jl^QsJHKK)wz$Z*H z&~Qx~3NIu$6%*;=)Tg>b;J`4nw)g8>!l4PGhWx2Y?Vs98NC;J8FPPBI*yx>?E;48{ zLdJ^!H_4Px!|VGk)|H|(l6uW+RtA_@`6-;8HssV{!MPwJ3a6h5&YDaVc<(eA=gPD; zR~{S~kX}@M3%Np>g^oh~k$ajs0&4z#CD4>s{BD(3lEz~G_s`Ygu9)hsO|K;*dIEKk zE{A=t|7^95Ov=*WL^A9hYkhLRKgpbfW===|w4V40q$0EM5gHvt15&qw097aV?AhYm z=oD7UY4qBhe`$n4VrzYO98S-PIRrV&v(!goNMo*2RqL_b@6+>|14h!s5#%TFtUw_h ztWN>AV&xqXZ-$4aIcSX0SRa+%YV?z35Hb_0xaE56i?1Z3Hy_^IM8a-iTcBQAWp1s3Ma~P z%@O0Qi?4-L%PYGEw8*m!DLdd-BM4c}u0Sz5@v7@F_Xa;N$DX?;A8L+|i%JFDj?4o6nneEaNhsC~haA|4b{ObKKtA+RI!=~e1x8j%u_6DOR=D=#K z&98<$bL+L^+&Hi9+OpDF;;yYmzh;lPBnm3XB~>KV{4fX$c_4)APqwXZYQK`D?s<{~ zvHFNR?jFGVhL-v7oA=#$$v@fDwh38x@~PvU|A=xE3$AX2#DRWSfALf&9pfmx$%_MLp)<$= z^L20im#I~?+e4p@qSPV~k}9N*$Uuhd`LPDc6_Cw1m1cp##Vs6gh2ee`{h4*7*Mdj`$#`Y<>Luuf=0?HxW3n+ zW^t^aT*gY&s}MYJ^Z+`nv854>sL0)B_zCA+Gh$@bz9|b{<>IRe!qNoE(-JYXU7oh> zZIC!#!*A!8cJ|2G49EPjPSC)KFN#yUl(#s&P+4(?*{W)S+6^4|v*o?&U>KvEUb zWKz{XZ_!0$f5u45VqLQs<#}rsSPE(5g+-r2ohb>*gJqkCn*=SFS%b-E*=zN7A}zAn zLFw%hMD;%M`CUs=oN!NFi^SeSCfDzdDYq@vd*_g(h(qbp`;-$F-FdFz?QfRj#qnf9 zP~b#|Hi^D7wznDmbljR^(zW&642StrN4E`SIHFX*akl2xvorT=?vt)HD@RdW3C z%mQT5pwc>}`}~hO=|SQa>UFDYUmtL#72|sZ77v(iV2d=a!d_!dVX&mHp!mM`)CdIz zukE=IybFJURlL$65hMt^LOsQxmkNu6UAOl-8QV3SAePOXruofhFZzjvZYjB0ZI484 z>+RKO=9gH%UVZdAeUZojFicYd4}TABCU`_5Q6K1mR}R_l?Cfj6nyv(})lk<~ghbYv zGs)gy*q;jwH#*1-9?O76iBJL>J{l5+cvQ6dTm}LTN++8Xb1+ySU%UPy)fn65De6j( zfVZ`!RrtT^_VcMq@auX&cRY&8=zs0#tor)Hk%zM`htfwu-+9FZwDqLi=@_1@-rBHd zvNmafpd|MDQwFtAcN%lS9Kr{fzOBVCB;Mo{!LI3yKPF5V3Ql#aN1b=68YFilj@M(?Z*brqF6@AYH`nN=rZ%Yc=x7aHYuH zU}@mE)hp`CELNP}gcB}U`js7@A9Z!RD{0zNz$ckR6d1sTYgaL-6ma;)s|=6fPlBBz zMqLm~3AlMESK}}^XHdzMlm-Qr4|h*PjQ^rQCE_$et3UX#@_$Y9<1vWBXFtAJ;C3B- zSLMj!J`omt!CpjvHU7d7{=av-u7G%j zuI@(HmuF?KN-*OPwGV)nH$L0E&>CqO7+6GbkT`lZ)BmgPd+#vRCQ)o0(CIqr8kvrw z@e0yUIo}?4*u2Gu6_+U^Mi625duTeRW7 z1IxfG)oFV{Oq;qgglpl$W}XrzDfyGK=;Mx?;sH*c`W@U^krIGBkC$JSHnbYu4V;ch zx-qBriRV(v01Kw8!edX)eaPz|V`xnuFiw5nlF$kp@FV81oKf?L|CkemuMc<2ldW)QDmazqn(BbH^7p8R8M=Sd4g9U?cKsXZaba6C$oN>l4=f^cH`9+Vx26~cb{?t8 z^~Vnyb{%=5ILOP+ zblRVE0OESRmSw*po#(O%Bu7J*3BL3R4A|4ov-0>Gu)3843-XY42RU@)Qr!q3@LU&!u!Q^_7_P-d_ra;}$g!o_)T%EOW7br0 z6|i|&&!=YwQ4M6hCC-cc?S*ZacmuRt<4ny}r<(G-Mfy=)LJqYl#g z7yv9J`)ybZ{Wj&Z#%;hqQ#&>wo?4^e_7`6Zn}%pq8{7Ws3#B~djtbN12&@TX<{ngE z^tmc4C~S*a+68Dsrp7zOsM3R3t$$N$l1* z-a@589I9nGKIqmf=ByW+m9(el35gKQ^bB3#})joj4H% z88}5O7qw0 zQ$NT_hGIYA1<|6HH*iqfWT%PDn$+|^zR`Z#52)afr6*<&h@-&3u#iNQ@b9&QGNXmH zkFt0)=)mNeKby|>m(NCc03sXVf6s#5spd%8zuqB=qgu390gxS+<(8Bf_s@g1j_vxC@Hz`4BFN5xPzawI(Y@CBN4H z`Ius@0HKT#&)W5V4sWzah^C4nxiSUi9NY9&TR&iW@2?C$+J%hug=H=tu3yk0f8_@{ zf*|=-Q8K8wB)cf~2E~hap@4;o?i-&J?(uG&Wkb*B3x2yEeLjB3JZN|5EDhj;<5pey z3@7ki#9&?~=%8)|J8I(D8ps@3|8=IcEkd051A~(WIsa*UkA0^^`oia;%dW>r#cEBS zUGc81-#@1)y(36&+UY<)s($iv1%th(mi!>aO+ydwkP8?zribs@ zzClum#eJ(V$FML^JCyqW$p=^rPdt1L=*)=6PRx+?huE>DwG{)REXA}WL6QW;kQhdm z_qhy+#^GJFXp{w3N$q{xb*6slgANONth@Dc_1k^05Ln90MX%h?1S;U1i(9>z9s~(b z;?3FnR%rO9p*-E3>j4R5S;F>3`YTR@h!}Yz=!Oa$Ue--ED>slBrdNV)xdItu>mF?O zv@EbGLnPvhR`pI^dBw=87YWZErnIS|?T@@TMJeDSC#oW_W@CIW(P2&Z`6L%5$ehd` zJxgB|{9{?pcd}1+VjuY;@zBcAMr>=8MG~~u7~7`Cfi-+=-ji!wrF0P04Sp0h7<5|w zS>my|#qlAvk#JH%q%*(&*# z9mDSwf9?7Y(%6}<4S1JTP-UK$t8YQxYEss!VASo3#}G02$h>TAt(DNJDdA-?{qD$r z-E=ZaA20I*-Zt4TSxzM4f5I-F<)how!<6o(=3;^{xP1>~qArX6HDZ(EM{Y$Akx?D< zrXXP$Oxp7}tO{L`L7rUjQ8qwH(yy13eCHdMmYw85N*KtAKM$QqLK~VWnoO5($|}r3 zAb;eEVe*xJm`*C4p3H-!)ekcaV+?Rz+j169~mT|VD{82sFrb!z`E zN9e3>OEcVy#yj`q8=*)DF%<}gV6c{wH4x$uC)>(lxBRzJ{`tFq4x{_HeA7A`iwsJc zq2ZGJg6N|VAi6BAlNL@@cm}2_pz8(*;+ITqM$7dLM3NSeq0r)wqaT1#@{bUzzOiDzFVH@NJeC2T*R)G$b4P0<~;g@%>tD++jFezS?0 z1=2taFcnQEU2Ru-P+87!9Ex8IlkE{uOtl5?2r4Bc{wkIt>7^TIX`D@V7Vb7NXEI{N zhec(Rm$k#-Y(Q_>1?&>&bZ)C=U~d-+%bzDnA9N$+Nbhzh&8O&l)q>4g1$*Ap$ReQK z`wvRzAq@qpDx-C{0vE#2_q?OMpNGx;`Q;o|R_0T3XgJ`Z_Gn1`;8mV6h}i>WBTI8etOttl;*Ub+3Cw(L zXU2qu6ZVs5%oWDu>5dgf>%K;!W}Uh~QWi*)v%y@Aa^(kW6DOPZyBOS~T5#%8psw=L zVzP{LrA?q5?Q=E5rHyqoW12J8tJ+FDx=?WZZLCaBk9#1I3u;%}Od#%0fsu}fq@LAZ z)9^xKB--~U%5XO)pU#a{2Fa=u zD1!Bgcw;wx-;iLwU&j<4C?2L$36x5H67+wR5kS7)wR%N!5x{%5 z!%Ir83U%H8R2#cq8~4X&)f8^1v6U>=6#cUQm5OkLY)|a+4=&K$up4sQg6l3b@ge{pB$MUqim!?+OD>+Ji4iF80~(*&Fj+3|4Ikg=XL_0q|1@!nye0i@}FYjdDU zOZcY$K`>uBD%5Fp+`0j%!F;9XPz*>+ZvDJFC%|I4D4I1%3}i1oUX?d5ejP9fO@Mk( zd$XS+jn&jj!YNx%>Rv64N(#Bv1(ElcA3Vd`Xaw$D>m7=!d2nR=9*F~yu2vyhe%Wx$UQo5Tvbnf*xM)c$D)U z++rc0u{1R5bvTTydp!%VMzQ4E2j1UC^e*mLRbrIO-)gL+VyFR6y=vSi!17(EB@=vD z^^<-mXzQd!J|OwW4TTy0fO>L|JYeQ_v=jwz+ikLEvZ`|x#pF((*d(?Ib*r#)DN?U5 zs8)tc+WnXaBS<AXJ!{r2WRC~@rLM7RJF3Ysnigs>z%mhsl`|Rj+ zPxNZcfogT6}O;Y7$P;YMshy7E658mxB>h)tT~XKwN!2CsZNw~VIx zr2=u5QyICKu!b_4wF-CHM`bceVfq_kCrQ`^z?s$)i9bKHi9N*Kb>wSO4>~`yll@>Z zwbHu41%1cmgv4oLr!^O13$9|*-6i{qNcFMIHT1f-QlvdrxdZHE$qT5Ykq+j=a!nl6 z3k|@VTVxaTPkiWGs=V$=Y%3o=^gT1aanKzX^B-C@QiYV`pwCklpYGctou{_E$ZJ z?>Y@!OSvMK{yW5ZaqfY`{p(6n+a^HJC!@ zT`NypwiXIsV!}uMt9Al5pZ@R}wheDcY8-L{Lz*Nb^q#JvDzN&NG9OWXJV7yo>bWeh zSUFJ*0hl0=n(MM`=!HML!rGgB&*@7+VrJL4#Z!~l^tPKGKWQTM&4luufSE_G&b&04G3%)t*5wkt{?_#U)$sXBT}6Hb*5Uh$L-#_@K>I_^3Wprp(5FdQA>0q3MGx zU;C35_b^i07eEP!jOeD*D_8F-YIa+3z6C9P+5*H*Us>M-z4v$zd}K&oY~fKjef87G zc2!~V5$WsF4|?gf7kZn~1Hk`k!z=>7&SlkkXpdd`ZBc@-l2p_5|JU1K(cgOj4IbAl z;H>I0K6NbOl!>#Tu4432=?2c+y(#CWKMPVDBn};=nK%2~zYa861%d9m6e>}zxz}=z zOsh+bvEvW4LEwHMmck;YRu+A&jU|%t4k#b2Gk!_?Qim(rrPqKCM}xSfLNd85b_Qih}UPjtM_D2@V+w_{Sl*Vxswqiq*wcuBA+Rx2D|>!3lIr%UIr4q^~|?UQ!U zao@QLzGwI}wt6sv3Hb$LL}-AWWpG(oEx17fP(|DJdU;0OrU~GoIL>{g-Ibj9dD^ip zbJpH9DQ6*XTUdzLoxZAEeKd~nkGA1};%dsQM?bE=2=FGFV*_4td!hLhfN8Sl7g>Z} zW`Zi9x!8Jx$fTB@Fsjij+XIE|Nk*Ior7TTL2y$Mdc;w99TSQChHr^;@vA4>cSEV*& zM-N2_*j@txQ^=i6go<2g%v)Gkx-B8<6`b346+Qn8^+0Ioyb#j+E+=mVf(WsoPd7W5 z<|h$)h8>c8&+C2#osHrU`=^}QUhhIIP1kM8@o){yddCTaD*=z)C)`?TJFY-$=OW#v z)W(pP0O#p(|M$ofhJ5+3-hq>EW2sSr9-J~QP}7@`J3@?;_Os$~#vxng$ll55#Z>m1RwH0+&BmJ&dT zf%rw~D8%V7!%wV%GMBcvZc^RVyRpvJ*7rr7j0dKm`MJ2l4 zHZP{NTn_8Ft&EPeKCBzoO7Xm>UiD|6lX}PFG^0i1kR>`29pWUVwh4XI9@jb&((#&@ zw#wdYg)_&MtR$sBco?ADp5Cmw>6BrAU-)BJaW9IHf> zjs!=~&Efi^?LCSvg;5%%IQ-yg)RD?z6A^!fQ_K!o>~dwiD!ybjjG%s+hd|-D@axL5 zAtV%8M;!$=!CH!d;}@VtmpYomgs_IS^7tAc2NUHKDDb27jrrPnV0u08UBenc8=Oai zX0CL7jmmeH#29Ci&ifoASiIbAts35u<{@{i&E}(bh*I931=4={kS5}|v*3&NS1Jdb zM6;WGwFvv_drqcqHzdTyg|6-GU;EsG{3A5F@fWeZOMclD$3N7%0*M+vj?XJgefe{W zCvq(W6f+7Ywg0u%hKuHDV~6Q-V)pIhaPqUo`2%3>k0g+~XiPxk4`1|s+eCoE743O< zTM2ihA{^O}|I%?Autcpeyzl1F9B9;|-5q{*kI_k>3U*VG!Kq#HT!YJ5TNbZ!su zKXT^w>wh6y1%x5q%w{E?^W(|!57U>tM#r`XE6HJv3YM&}gF!#PSUwp|U*$>}uOow8-aQT2&P4%$a)P zNx}ibLjnnal|Bu48J12J^TTeV!z3ZpDU77decD5B)j~Lh1J-jKvOjnsGNpN!YGmd% z$l=_;Ivv(RB&}Z)*S7qV9bEz(mz)rINohBZf1X-JiI1xgX)20<+lr8ZvC9mIfH20G zbJUqx-hI8r&e)*HbdN>j0Gp<~3X7FPwM?IcI{%c#zjhX+-qG35>!ARjov@V-kQtfo zD&+*QH?omUu0BGj#uF-n1j~ajDxF%oUf#Kn-(k)f^I>j&tt)dm(#ryQP%nQq=64(G zooq%Xc!H&=K*h2u)^O}ncn=h*3r2p=IcY1{@Mq{}8e9=EGa&Yh-~lbhz&UQ##K2mJ z>xYIkm4{8Ij0!KRbsCXj+?fbp(fqXWlVmj0yZTBB!|Oj_wYq21s*<@bJK8*4mY(QK z((EF@1_4;Iy2u+R8lKIP0PD!6`<C3*zI$ixNLcCR<3k0vQg1|LENS!8Tz^^S>ebcILFUgDa4jWgFN<$M<{808+Ov|0O zUJBX#j$ji)mhdyY=7A=K|0|U;LHev&xWonnyIB$6?X07D(CpOlxExsKLe9t^XtZa_Ihh(4KJcf7~49Z zCU7Umyj&d|)d>`?w_peha#=o(EQgIg-mQ;k9Tb=)*G9LA6kzwqfc4yGa*b8EMnBP2 zV~?YB^)tibcP6}|~B8ss8HMwwut&so+ zF+G8DYTjGlWHle&?IpU3VwF>m9q z3=qb}i}dsaxDS2J{UjTP4Z<1WWxYUPOaK@zQ0i0vgj*!cpcR3$Q;UC=Av1Eoa3L`{2r;adFaj3s zp;Ih`c3B3KpjhQWn|@b*q&8`-UREcNZvxJ@+e2UDE|uW@Y{1sce{G?}ydVsq z>r4r#WQ*NZ*vS==!;oY5_bF5X`$nh8c#c}~X|AK=VdJQAs58xanYY}wNddu=yS7=a z3c@qnglY+aN~~BjM#TDgmj>u)3x?e2Fi@ax|Mb6=e@T(herB%@4RDqWjr5zThHg-v zhFC*B%FoG@7S0c)@?}hy2Z(JiBXyB`^1NtXs~{6l1d0q^0h0t?ozLjiNPFW{R)Z!q zvr3@-`g(bC7cX*kq<+QzEXyc#`Xh#!`#Vuenu3VC?4QY2)mFl1)3eDRX zBmyTz7@7YlSc3|>4<;6$I-GfFOOUe8W5MKlnx(^ddbF`dXU_PC^@L`m%G5Hb#1uf9 zewTDND7BP%RX2TuU}J&&=!b4{@}t2M4DGu41t>_r-Yl22z{Dz3z-V z@V?bss}QF84pe$t{A!Li|MFnkEVbGNVm#fpcg8~=!zwdFz9s~XPWXoy6G?PL`3SY{#z>1K z0X5c5K~(AEh!*z%kP$(#ki$k7D#hvA$*sV^Ou@d)_@xZr;_Xj-WLQ-f`uO;$t2%x4 zB5=o}uhalRaFaw059~apL+mYh!6R*}xoMCel9FmoM94#^po2<+It9Y`1S9&GKnJnZ zY{E|q<)tN2k<%0{?C-^JHrCf<-x8;CfIeEZck;Ul&Um9932*+<7^+_USe!0vP_0*J zzD~S|CqsGFGT$Gke+ht)u7=G&6n%dRhQIWM;sw_61-gl`USM&yk_NM8`_>icqp`&T z+|vKU4`G{H!GT(Dp0L{OG1&tsOr3TVVQKl>$nB*{{(y~(EScflx)-OY0M#T?9Q$NXK^Ul1V3mL+s zd_8d`p+GmwI)s$aIxjP_XkQf1{U=i0U?ZPU} z9J4EWrtjJ0dMa7mDNDVMh;B(0qUu}`zICwDk*1SBsrT$zaokf zEfmr#V@#+_hxW!p)r$Vf)J~nRn=61VBGp}${9HndvNj5k*{^|?7XYKa=+KGC>B?lD zW!M3I#~j8QPril2=;8LdDFs9NvGAH}eX6rBC-4A7>ywkxB-$^9xY(>c)k7kS@wKqD zwRU~dj0+)*R_SgxyE_3$$ApN}*-ZMgiD!Jdq9mstHpKqD(w*1q)zX_ybd(;_$?7H7 z9I+Jo%o~P43%;7>pFwjEsx9qv$Zx~uS$C&9A38j8j(F`93*wPyUFuPa9n5@uA#3Z2 zX0Ca-&a<%E>2w02fTQ!>v^=&@_3m;or=G&<)0+(gw>UQf^k_Q5~EY1LALGN_5JS1fYrKH)H*fER_v>BOo|UG_T=h5X@8$*WavGs|EpLKR;FqY& zBwlPrS-sHFd$YDfeY7qXdz(tHWh$o)*AdByUd9-qO{4<2?(U40$V!yw^EV(oQfkWi z!UFy5Hqj|tc|}iDTNPk83d!$$+;L(i2s(WHbH+`am?xe@rMthbMfjMw6jpn#%DVwi zUx5F{eBKnU!rD!|Lx}5E*u!+-w22iVg^9NNh$4#$7|6iTHxQ89ARfAtu!+#2OMK#} zw%Q=gM&NO_QwM>7wKG9{%}5!hNYnZe>A@ViTaouelRq^P)SlO`L8VA2$FsxO)SSvx z4hJ^|Gc^ZU43wuqlNk}GSyjNYKbvu-?fpfH&rVho%Ehu4&&s&r&EAX5GmQqGmjcIJ zYVQ;VKVOy9Y=1*WXx639Hszj^?Z!z`omF6U_@>QQ=loJlARDN`!kPZA3biJR6?}g^ zTA4(&&w=k^8*-AA+UCo{O*Z*v?J-oxf)uh`#Ghz~ZP%-V>1D?tIzwxg^?XM)5!yR4 zYWg%}vtTp>WpauMqrZ1GKc)L?Tk|7gF4yzyH0iN3*n2>f!bv6HqN+>P$oas)` z*jQ*-^HaN7ATljn74BQrrJ%MD$BHPl*g@;OT7n3*<2!S_Pec)Ng9L6*Lll<)Dv>>~ zpjP(&_r5A#;^0{5sY0avsgP%-<2-AePH#1V0?@L5Q_{WCw6{ofJ~u3ADHU^l``?JT z1?aW)P8dE=BYJ%Y_%!ka^;GVqEzSQ@oUL5ljR5&IFJV9eda)kq+zqf#?Ptm!=MoTh zdGp9;;pN+pX)Y=Pm(#;i7lRPVs7uDqpUJr=nZ!h>*>x9dy-b7z366it+A1Q6h(8yT z8}AHo#lTd?H6h;V4MM7XbCFtON;gj!Qmfm_N2#Aj@nTRz77|v2g+&-Fw-fz0Gw0$+ zmA(;McFaDmocM%}C$qrD-Da%VE>6x4>96Xd}fnRWA1_+#+9lHG>Ss?VFU} z0Rh~w?_^aV_2!|KBgnxl-Q?e90z-|tTdP^g$xtq$YOOVc&kQ(IQwOu4Bg)+pzRgV= zTH6$`>bRoWz;+BRpG#K(WA0J>{0WcVb{?#uq)3d{&P?SKXTi8B6xAgN)T$LdK^N$eO zQRrQQk{!fAhOK$$vk*hUiV2a2EeN#oHd)L0uF3hwI(xzcxIP#Q+PmHB((v`kh*Cd^ zM!YFglWesss>S8@q<*R14$l{h9D!*^V6lN9b6Riv1b0?1SS#LryE!RWd+Lg@1F9DY zbhax){N|<0(QeMhQH$o9Pd}s%x0(X^oK8B z>hxN`oM<(nhjcypDzkDV<&)>~Rp4$$t7@)}mH-TVB`N0ANlJ-4a(3K|#5@MjT*+jk zN57@OfGdG|QKnfmV`b|}b$TMcwBvy14uP#EfS_4_aKs(D!q5`qw{5ZzLuZxv6AimrjkbfJz$c^W^yr$c&}G% zMj9T@mVJ(|yjD_K%^D90w~0BQp>(WQCiRpniwhOvSjchm2KBV@Ij*ZIgEBkfiu!us zhL91(i2w6mly1g3{7;xUOR}__6<2FdNk`Y#Q@S)c6jK3L+r=<16ERR~(6}Im2PzZJrUvr#1w*LA z1FD;i8GC&3ugTXhW#dg}Fr9>&2B>DcT(uG>>-y>>*g_K#31~NLs_P4BzLBq9bO4y5 zh7g^*>yK%5VL0Zuab{2;stp(C?eTzN`fZPTuLi_#GXD}76B4*3uvVkshPzanC6ez| zYydMr%)j==@%?{oZ#PWrAk$hp>fLgDp>)HXuGnbAM&+ZSi!2cLb%!qo*6Ap>E~{cH zY}08?u?KAR{hcq|V-=+1u&00WFKjE>Pcj!XEttrA}fxZ?gU;2a@FpXgg!ad7f*UWRsFyPWr|+!WCoe z*wgWeENLK~zdAO*^3&V7ZC~K=#2h6#K{ha2?S1@3^Z7G^?Qeb@8yB4Lz%y`ba~t-y z?A<&ADjam)SeZX`W4ciQz~_5Scv>x2uRuAkn+XO-%@?ek2qJp59X5#4yv3>KXt_9BF;~l{R>^*F^ ze*^NThX2@>O|?$T5bOyu4k9<{RuBKSls7zUWiu-802q@6nBj*A(>e)M2ng&H_MJWs z1xknj%FbX5O!rEyyF65vuhTOT)|`o7Vs>c92$ht!k0x%&GtCnmm}P@`)oZnM8yIKq zH*MPRH7ji-!eAu8_%nvOeQ7UM(bjV*(9Q}QBkT%YaYX^8jv>1T*LZ8ysd}eEMb?DF z>B6ZE+~Bx4$!@^rY6DIl(U4sy+or05jQkDdUum4pC}fhHtwNivmtqeBWyK#(jKPS= z6`p@(w%;>amspGZ488x|8FgSLj@^4)|I}$D$>QHj6-VT&{2xn&S}FiMsH^%sd>T-J zm#2M~P5=$Y;J{ARV!H{^kd7cEX1M=YX_3C$Bu`W+fAFxZ_=w71WXPm}vY^=;BH_%b z=4#=K-$x0%^5wLSejMmcET9m-zRmBsqM!qSL7$KlH=J3-Ozv_x>e(X#(%-`JHmwjv zojTN-YV~g4n=BMdruyzxreqK)me<9$8j#<>c)I&4sO4UnoCRT3ly@yQ#z12+w6!T4 zBp4uhdi{I`6s|?eO>%<(K7MP;w#m}Z8QBP#>$CbDzkpbR9GUw6z4MRpB43z*{Mj(9 z2`(9qC7QL=(K5OLLCc7@6$26Sy-=Wn=75aG*Xf)!(DYU(o_!pw#*HGQaqcB5DCF${ zBM^bf=~wf7*MA{Mg`VM?_k(Xw8EMSEIb{w<#dxV5c|Tf9?t3CcDnnESX-nXgjJ{f{ zT7El)di7!L!gd|mlkp~U$WNhahCuJ6Z!Qki+o#DaG3AK63KxxXI{oyiMRyu8DF*MQJmJzY_8Zn!us@n){W2UYR$l>lI*x`una=|e~ zTCdcm%yL{eskQ${qTLmG@3PJW79qwU&o3PqxVPH+ghK=I>bGMt|2@%fnzdtotr~xc z`0=p9kgL;~fH6UF1gD>Cq2v@p=i{eswNT74_w_&GB}7cqXA*D=OhXe-D`i>K)g5xV z0;0)P3bkhVuVdmaX#gvW9sBbZ{kqe)HV@q`+BlR)n2ybsv5k`zzq=zOIb*m6vEBb9 z3Jx31xV$CGWuA#X=yL6Uy%t+9)C9AiLJGi{lQ1Wcv;dEG%{W)D-r3&5kuwlL16_+C zPMItSf~v0QC`p+65+N;t+CAg(R`nY61I(B82--4MN+VuuQs`YQBKIgBJD1r<%}ald z7zZfM>P=(konah^G)1<*hY1+bgMZgRUv4OD1T5e{rsSYFHhf& z%#5pe9`g74%aupy+uK9VLzTl67G)Em7E0q4w}&%APQNu=v0Es^M@TJ?FD1KR4aN+B z%ZA=%73(ZLL3=3c{K+0Px}CzTdMf5TKv@dDN9fcKl%dF+B5Q@Xdh+q0D5h)(Ojr@n zQ}1uyd=qgCa&Ni3# zp3nJh$AP7KCk`BaUj*g+Pu?h?ifTYCt&bO5?0@W&dpB{$vD4SfjZNy}8(-QIzLhe1 z)xsEt%k(U&4|G>>tO3B0>Tp;?^g$n52hFifagenntM5D_0%Y)RR1a-T-SQY zr(R~FBxXtd04Y66!x}k}crDXIqE1C5C~gynTW-54sAukjFf;Ao_83tR&F>?_LcktI zy1Ibze4&PY;Vx;+QdUAN`@Hh7iWb;ymqH6`RM|}C2p;{x)ynz5UYE9zGR|GBHtX__ zlzwHjzvH@ic+5fIu$zjsC!SQ}R(&WDRwO5Ulp<=k6~<9Er-=2c{4`-F8v6LvyQQ|< zZDD=_GcdfHAzSu(Z$5G4Wjl%$r}Ctyln!R6O;z~&Jwzi!Lmb!O#kuQwTOy?FQagYr z*We?C)W+I2q~2%YATsBuyuA(C8NFALzW}S_6{>cU-ByS7Az_=4G!9F_%OrPkhAc~a@`tT){R0fQ#)ti#@86D=pg5m@5ZSpqUN#^)yGH;&eTypo-ds+xv5 zqz$J1>_RN|mw07))McRiNRCE`kAk;p(@XrXUA9a4g1{IcUet!5lyL6gek{?7>Rk*7 zR=aC1Y9d7UW=II)KJG3z7DhN9CY5HUDs^k6>2v5 z2Di>kb2LTVv*e%GTD`vCf&0bzQY1YCLix~WrU`L~$MuwkqAU~cHqtuvq4<-Nj_0{XFLVmhKxpk)* z!-r|ep$NTNOdjUR)p4Z>@}L7xXG<#NnrJLXNRpVLsbqY71H{`m9f6C}I8rRLX&J=o z_~MXQX%BN~CcoX)h+NN2nhc}HNpY5WQK%U}l4?K#M>!JbQ<}dy9X&PH68gtz*nA?@ z^%EWs+MXjMk2bm7DiF4qXM|S5l35Wib_$)6s!-uA2nrUK?J8E%P&Gu4NK-|`fr%-? zIl32}zc8z}n_t%*mWJa8H<_ZH$>#fvjeUi(JaRv#8$d&WU<$ZoN}{gZ0#f5TmuFSM zw`t2R3a}oS&qN@IM^cF~x=2X`ER;vT;AqB$PaF4C1?5H`OtZ!zxf)uYO9g(J=+IBe z!?6O@@`b(QXSS<@q%l189+4_Df1e1)p2)jt7O(%k?+q_y8hqLuWG5(6+NVv%dGe4R zNnyw*KhOpTe|yCQC6dIOOcE+%>4H~)=L|jD9IF;fxZl5pHWIPPepfY9kVr>LWw|+r8T7 zz9J+iqw0Sw^o{Nk?-xMk$521gnc+;)ez%*)q>((g!Hy3}`ytVeE#w6is3w@C!?Tfg z!`T>!Ey&Xv2A0sne9@0^?=vK{n-`{y5C*NUbT_d;WYKyu$#ZhY-!F8a^fA;r&V}-t zZA+uE%mV7wCS{^Z>a(#!eDbvBOozV@0~-x|S_6D>$HR{GfYusD5vNOqgdfwt?5_ z6wu#nQx?B5)&!Irv=1pT(-I#V4AaNpLbK06c5b^a#9l?H3!?fF{E#ZaRGF3f<@G{dn73 zolJnC%xTj=Fz6e*1D;6SU?Q^k0r=zHm6^+k4?_j!Q6g;?Ui%VXY>Z; ziMeE0>vdz`?|c6gPV%wI)I3Q#WkfmZS14$4=J&#h3|V3|f{F@d5n!ByVPUG-0TBtY z&)X?H6^Sci2Wt?&D?qSRDC=L03q0?(fOBzvF8G@7#P|AE4VVz2JCQ7&*C#(9qg~l9 zUso-i7K%M^is8CqXaM?3r2k-?;iFO2Vc>pV-7p;2$xtuEqSm9mB>%bkAOrWB$VPZPVyXxKEK1W#b!e&MAmzA)KTgL zUSCOU)J@D5eGXMg59%({vEWXwW^F2C3)=U0kmQb?egfYMRhk^*aW3bc+1E3Avj!_+ zgqPPW22@7o5B9{fF;mBN!=N)gP#SQzQ}o+Rpt!tFK*y+&pLC*mhQUG#2Q~uu@4e zZjRI72;c*291+j?E7X#C)5jOeBOzs!7-D+>xuRNYS|)`;1*(1RkCgc;geS;lV@=-l zjE5PRdT_Ekvq3&CLXTaT@Wdy;@A4Tew@;uD>x5AFw}WDgZO(sJHVOOrC0lF**ry+! zlX)UROeylt#9siGfnt*3>MG9D%XjJ#EHmix$SrrF$S~3-pTxolD8r?9j{>^U-MYr? zCgIhEaXnOWC6G$%J!20dfP(?no|fIDH;^83Q~XecFQ`PO8`;oI%roCQoNpwmY2G^= zH+Ruuwychjt&RiF@y{k3Da(NlMpYQMg48KIpL8{t8O*(7P7a~MTaV-xTZ7|VOv;ji zj&;o`mvs=$@@#q5hxAbu+oF1EXKk5BjJ>@E$jdRG_|2|_E^)z_-QLl1^|)IsIJH=M zlD9ZPK+mR3Mz!gI<>m(OP|s<0gBhnG=vp|aQ6T86L*MoZ0iHk`xJ0xfTZ)`PoKV&v zsh96gzIMrML<}{EVen^%5rH*0eM<7}sTpv@Wv;bdP6hl0ox+=K+^@Z{k@zzKoAlOwKey&4FLwAB*6BO8n|Eh6V$RJYf47bCUcsqD(2p27&|Ub zqTq87E0+fRQEb4WH4Ie5KDN%jd#nw8@E+MeJVgmSYHhkrj4KoiI-+OSa}Frvm)#)} z@zs{Lg#Nt_XuORX)4OGtNWMVH09A{Nh$>n~Iwx}!I0yDWh6o}RVE0O^tSL10b}XEm zcfoXMlU~I?J6H;qBeXz9NnqkSQbg4O^148@C2^xhO<*5xgJH*8$dei z$l&5e)TTmy{9#A9(H5#O2oKbS(+6{GV`|ndC2mN0g>}SS$HEu%*o}^xBPBF*@Qmud zjg)i83oHi-D#C}TPf$Bw)Hz*VCZ%ba`t0Ibd^g%;+%AR2ATD*~lB?jP8Rt6tIlxr% zRIO{9PTDUL^;zd+SCuX0_cp+9FseN%?hs28d4Aj!<66iS5@7QShO#S1(*-Py)8si+ z^!4r_QVY^j-x8c7)J?JX-#Ya*y~DY4U55GFdHNonO8b)ughs$>jXbXr zF0C6GXNh!9`rDY;2`Mk%=0z~ZXSxGn=Eyur(MB!KAAkxh8V-7ln)eR0dUOD*QD-?* z5hAkUN)C2Ea9+r6TL;ZrTzyT#j}?=`|>%%I~U0CtklLxzi0Rx3jfhJuGJU{@d6Hj0U9&x(^ zTny{_8so#dDyC)pA{tYWgiW}XN*7tAxj7-}wO`+zKZSRF{tLSeRVO9`CdneHPlHXO z>X`G1T}Y`5S6R#00ZYRyIX{3qUUc?L4`B{&QEce)W#Gxg#08Dv*ir^k#d0_H5WzDt z!7Tc?Wq2~Hy1)ZXpNqYi5 zfvQhXkxP#|&*0NfU2XmdHnr>9^fzEl)r2f)7R=~tC0it){kwN=F44&Q1J*yv@oA6~ zq0{hgZhem>)riEjQc4A}cq7WtR}0Kn7ZW-O_%tSXGECX6CJ7Pu*L7U74o_yss7&AM zr_5qG!KAAQ;R|gJ5o-?dtu33ey#1RcyV(Ya*rMv@m|9x8SEF~j`tuRBqR$e5Wr8iv zAX#{ppRz?0+WDL1%O8fPL13>^Y!EtIjD(6>lBt+7 z8Q0`>ygR4Xuk6u~j2!*EUWieZ*pR=My)~V6yug5{9)KLLW(uJWD%8KXnq){FkNtcp zI=7JK1Hz}lGY$h0a6ghqp()1kMlgB)M)8ik*<&62ldMQ*yS0=30CJrF-!Q)XKIbo& zYU(TgsO0&qpi%>gP6u0D^b1H2f(9u|jv_bN0A){;4#L*Y;sHsOE2Cvz@olxL=46eI zIOxig#Nz3leX>3H9=^jP0%Uh(Oz`0b*ds>x(d`ik5dDjgTTKWhGc^@~LciF|mQ$Vl z?#IUyO5a-rY-Jb&24p^^2iBSzCb`K0Iw>%mNhp&03mzDFh0#ri^UWeaB&q`W7Xzy% zIMGY_B>7wTy(&*mFIldW6zmY+>XwTp4tY5YF^d;GSuKOn9gADdAGsk<)%GIKK*B!8_UxF2YW*lkf_IfpcXH{bNj zoc%JpZ4!1MaLW`wI41Af{WKs3hdjPw=|49<;pY-zWlOa8c{*B{5%hOO2cfxxAswq}W?yo*vr88I%fAi*9v{N!a+?WvE`^pOJl=%^qeV&> z##^|4ox%MR?r+R$1A>1nRl$tnQ4GVT z=ChlprsZHjcp0PyNDISuNADj7Cb@WG!Gf)-s30UQ#Hh?Z1}axL$BYn4^CyoNgiH5T zU2o6WQBVD2gO*nUdn)}_gRH-A)w*BF;iHuqB>^^QWWUP>rl75cn%oof- z9>|h56dl|V6|i|Ce4;PxdmSe8^C?rPDzR^MTP3iy@%{>DzKmEsM!?k55{t|PpqCC%*y2--rTuWSTsbi(CqEggK_#_`q^UrWNRn9#`X-o+Cy&<#Z zcw|)H`^nV4S^MHxE#5q;$Bly;LJt#Y{A?lkviURMJ2OPRmD;X-5bf&;)aa=0DbOr%%{g$33wB;nt1(juf9Ir$kzUylp7*P z(}$ctyf{`KcO_z@>Dj$LGJi9Ozk#PHBF=eKA1t6VcaK-+jz;QzEF6s}Ll*GTl4bm@ zfO1c(Q}ej3;$+N5432AW$9W+vs8rcssqPe}jAHIEt-2HkYIJ2igLWqYXnV#gJ*(TD zf5%ws)7A8+3Ggm+7EZ^J`53@7PHBPCqP($qGl+48Vf!OM?GAr4VxziM8k@k1TMi#J zH{dJy_~gL4XgW1?MN!`GJO6&9;Qo=r6^;!Gk?SaTk4m<#8N%SiWRN#l<8!WGmr_zb z7=FqWKvM{PSHb0Fjj;t8;JVAuS)w^c99xOjhIDKmm6&2_hmf*2abVAy6Bl+o(jjUJ0Unctmt5jIC(WfnY}!3!(z{r>kJt-yFw&Dp5cjII!cuAy+@Ph zJ71aPivBRt*3=UnmqB{O0b7C z-%luu(LqhR99lbC@oW2>{=FXTW>wcYHr=nq*!+{uI3yUE zu-eLSmzNO1VEda#>JqAoHr+L=L|^IWeO=AS+EP?(C;$HMufrPcs>~RZviod;JoHb? zhfdP?OhWQ&;P?EYe#Z>_WtXFyj5Fl>C2-}RU>Qy`?TJ;weng&(*_5Sva;|mnUuuRz zW?fOgQvVF|KX-j+YCAp$-j-LH&yG$U6hJarKHUMVtIl>&n@}2Jm)gcFg8ccW=9)q2 za+brMp2Jf-8sff!zNv5&2mcPA`ulo?(Z_usT%&uXsgfemQP~P4jg%9{RAmkQ8kaT0 z@eMP!mPxN>g*{O@Tk{QrMVt_ z!>QXpC?qNgP;y4U#3hO=iaj&mNGl3TAT<`>N48tt^TQC-a?Mz_0ox@-5u=;HlY&Cf z2B2}aA!0J;OjJoz!Gik3i>`lX!>7YE~Yp@wFJ>6{FH_yj` zl@E-gBI<^<-5}E2n_m4y311A)-F~kFm*iC8xQ0+A*(afS^65)RMn<cIfH7U}c?Z_ej6I1xdZNAkLZM z+rXEDfnQ$sm+9c0%x-eVhqi76nojLGq4s19*9;PD_w-!1H0!;Kfg=MCw+o*38tS+M zVc?%9WN#EAcjDVT@9Nne@_?+TF^4#ETVPprueDC+hEGk=3u8zbHySsBdF?wg;P!o&r$fayTL8>d zO3i_g#g%qJOFOJa3x`ZP*wp@ht&Wg z*d}B-t3Ygp*D~ouv7+OY#wLnZz6B(aGZK8@#fZ}qPG$1b!y`l-K zow${9T>SWL{&s>eVK#Uv58a%tGu?J}3vg8+VH1*d*_w7lqY*63H2H54tgR~!8Ohv+ zJr|xFeX^U78`|zN+_@-Y@7ZC|i>p4f-RQ_2mZUK{98}Y^hJzc}KaP$Abl_zh{`ARF z>nSAZw-5k86V z)_efH8qYZn@tX0W`qQNb21{nefcjv}sJCY3gHVJpn#HG!&|9HN!wu{IBT3Pyem%zH z-#p;M@Yz0^22=pQKpcBy!y$nS+D1l@tDPf3tAsh-1;wfd7(4aD)SXXdxRcB^OSsvf zk|O?~nxR|_jEd_BM09A9%(QAJZ3V5m6FuQM02}{$r0}a%u1~zfu|jcT=##vgUk;L( zX~r&CA=j6+4R^uOvqG*#<&C`NJ_cH6Yz`HFS2nV`SnqVv_~$Q6lvj5@0*&Io_vLr8 z=%D~5Rogt{hNPUYUHbi(@5ChkBdB_tir(05Z0W0T)RHkV1eWL6gHVTSI+m|R;Lu_L zq6D={!s!5a@q_eQ?Reos{e#pcvN;13EN3wc6ZBCNm#UP-wG`$@CmJLt4TkWWf!?k4 z@37{mqh3e;T^K~zmJ}oUT}Lx4c|#1(V#84Dg?atB3$WWb!)0!SL&auuR5d}mG2O|? zhpyk$Jp=JXp|8g(Mm=d}&dVqJPBA#!f;i{pHzfCasNGlT_DGYP{6LPtAf6}m-I4nIckhr-oz-13?_woss${fH$%+; zYg{7Ls^v1!D)b_d!quk(;mA3>l#7pbO59U$Cm~tO`gKaGO(GyKYrgjB(1!Si( zyL-l}US*~ivtC#2PjD`!{|TZd#|UEa8asu7!jA%Cnr$Ca+{1b5MY+~;%M4vGDw)fxU^so5T7=h zb4k#z5!S!c9J5Q>*rT9=j|`KNScO7uv3r+HIJZ>Szo=G1Q>;4RK(uv%--RnJ^18Vd z#KE5tB=NFoE;!pKf%e4-nDjHPb4(yTN%?tTJT}$wl9*CKwNZ@F*`$O~COHuS8eAxr zGK>9Fb{&>4#IPj`9!*<-Dg-BBE8D)Mu#*3G?(y3H8YURky*7E+*Yl+6=~22SNJs&r zdzf&K<1g53_GPd3z)cncotDVH<CH+Rpr$7BfD76DtCD4-d?`fDfl4w-4sz5iS0GxH?T+vMe>XUnmB(yzP#pW; zj{j3o<;C8~TUybd?Fg^Zt8BjLAz9~!t^E30Jm<=jhgy?V43uvfo@!`y^T~o`PLQu@ z)GMK(K@rbfQzGjeJf5s2KW*i3j;H(@PzHq9f$%V2e6e=G{`VnAwq_Y`Uw)hdg|NJF zxP#B;kNQ8Jf4p*fnY{UP!OUA|Em&^jwt@Vy6=Ap*uwq(V$y6IeES`4@Dm zwXTI_*#UTRN@z)b8H-!Bb~maXN8hei#O&&yb_Jx0Fj-elsQ|xf|NazkL+TXPd2arL zenH^KXkPDUr`zI7IdmL{U0-R@rQP+l^jH#Nx(@hu@6jKv$Dpc@<9R^~@2!be&Cs?? zb+FG7<=z@Sx6-1Y75=>ktV!^7?2>r(z@rdse-=9rRyn*4ve<|g`37uLa|*x^+tagq zd5|zP4)bZ$F3`nW-m=Y{jdu}P=mR(+k%r&v%%joOiQR1657i#ev96;rv%Kt-0$!Za ztQndO_XJnLw<8ePL)Y?a8JO$i-cWPd4tN~zoN0QfB(-q>bHgBR&Fc&U5 zicmQz>~}b{q++}(S~=uq1r)JSKhi|;%_&~9aC=E$LM)$+^xd4zBrzqa2&}`H9eU*} z@5?4ItS;>iD%SP=-!8ccmt{G8HL-WrYB|qNMuy2os5MtRAee}h} zJ=8HF79$y7@b{FoLFwdfG_K9BtD*MfGj6&UO_PdADfsrqrNQH_dXAdYWl$My@d_O` zEQ8|Pr;bZs^up8LXZSWo%<$W(ef`s^@{ zMXgoJdC42m`P_8OBDR5o4kzf_W=26O5P80-3hjDLGVti~t5@ev(l|CRhv=YjDoc=g(-0kUxXYK$ccABZAR>ejJE( z>I3pv)+ia9t4l^(zh+DqT}wSV!@E6G($Cb?zuqYy4YS63?aD{qUWQ=G_a zo{1}?p6f|dS`mwXK)9?Ix=ByQphbp7n8x9jE0Z_lA!~0qi4U&JnclYBKPfyE5d@G%A>`~%`EkMGKH95~QZ z(o!BZ^GN71Br%@}%M3aIkVsJWM1t3Cqk%S=#Pa)Rq`Z?(*2^g1dY8yQbv(&{=q30` zIgkGsg@9iSf7Tv)a7~6ZS2JFnx3)wXf03g4UYVUiI=)i_?t9`DHA)GA#Ra>p!RVKt06c9}C|DAtl7 zKAiF2zQEvSr#H9Hy9?&v)2}8TO$1F0rKzqMrE{~?cis$(9N^c-2)x5!V8E7?Lm>m@ zG@@peon>J@)aJgL;dNC3X(&rdtToBEP#N3upN6#65r5Q59h#Q;9LMKiaO*lM4MH*n zoK>eR4=S_WUp2WlN(w@Vy@O3m8Se+XEdcvDZ=8$BU7NH%;?ZPhrJgAOb8_cal~J6j zsSfr$BH+!eefl+~+EnZJRtPZnN9e_gD%DpEcEk1PR66PiP`EJ6E*~g^fRi@s%HnqM zDrRC2t_B7}j$nV2=-n$|u?IGh6E8$uwF0NGATdo&zwD|8@|<~L?IaSNJvbiltJ&Ce zD9d%~RI$p=eTf;bjT;nWX@!Cz#q&0OI>wdEpB*|xtT-8T9R;eO^ctg~O^1~Dvjm0x zrUL#+1GGNAm+~K=c_yqjl$#furvwzaRjuvSSP5r{&KrIulHCnzh{mIw7JvFW0F#>$ z2zVnVlfNU@bq=-kP~jd!f%j?0Ag;tLfaw1=S&@fM1yd018jm^of4 zx~pHTeP35S+u-V568Vf=+!ej4%7Qk(ZS{r!7Ie5$kNV<#{x~nl!qv*hk$29GWvjjd zV;Wgg`?@q$m&nWXhNrDR5o6s${Am|*qQ%(0?{)F2Kb@pM^F{8J%n!hZEA}BU=dD@O zKvBxQRxXF&^~E9|ECD7NGw}&cQK-1x4ge$1Xw1*EBh4N#N4~X zt3<2EtA*N}zlz#LovkW(3Ck15O_cb&xJG_AXUsZ^}fV1CGv3&#LM zA*73QP*{Q*8(;HBRi9X;iqHwGNF~7S7nkQDu8#kOMH>Hq)3NCRYR2KQjS?a6x12{h zl9e(+>7XeN18~y7pw{oMY3z}3B(th43SQ}VuIsZu3rXy?cYQy=+VL}JnV0ZrB3_6M zC5wXis~zsVG6t*+RUyE@RmsI0bGbwfSc%>loy6z-%QS};QfoM1t-4N;)G%DqT0STG z&P2481PyI8?%4dgzpRr3#o}M`Kl_uNNE)Oae8@y2qsq_g0}P8x_2j|W@biN|Gf!O( z)o1mwcwi5@&GLQ!A`}t}cKj<%$W?<+xuXMMn-JyH&LJ)6-f`#W6}-uNXih<^f$IMd zuf#V+?`Qa~>Rlf}5aw~O)4t2bV#w=eDz&n#owc~dKDDKHAs}Q+`7`{(z1H@o$B(Vn zT904y*fC-ndb6N%d?HR6=v3Mxv?nc-Q^bREup{9eM^U_&B2MMu>U6h6<+#j2tA{qV zT^S6#(r}R8_Eis+wNPRkrcuLN19A)ly+Oq}iXb7X?HI1Ua5=rV&yH3}t9ylvS*w#V zhvBMT`Wg-?uB?+~Ix?cI7XBBT;wVILqqp%De8`fej=J&5js9|c#G=fVD}V_|cmS;A z)jeFbs+4w56c2+sDg$L;1V-vLA=I_)Y{A*Jfy$7)RXOJ5h2@y@nJO>Du5t`3Doxox zmgt&*BcnY59LL+lT}2jwh4XTtoj^H`bqOH^)MpS;S?JcUuuM)c(^~nS#kkd_u<>M~ z>hK$H72-s|ucN$wO)L)4*ICmUz>XyL<{{E6eV8^Y2vJY8O>hjmv@kc3AJFcB>rqN*-_MO+D8hQLJz zFM6)~w8nvK;G~vDe51gVlbL?q>%u`Hjc&|9>W?-nDcN+6vjd@oDjSw)jTtfzG*Q(8 z;*iEI6HNk3dCjq;(slR7PfQ5Xfz)cqH%M2Xsr<|yP#OP|5~6_G6;d4x+?v;m{xNW&GvC=3BvFS#K9bE5-0+6N!5VBd7bhK! zX(JeA01@J>`spWzA%O=^Cej}8m~mr@1mvhB#BraCoPbdB68mI-5DyR4>7}XW)7to| z_7+pZLEsShCFbVW_%&F6my2o;%a_rd3dosa@ojMPcgem~!4ilb^eHF8xt@e!T%3B_ z=zr^F?M4}W*bqtu0<#D_e^9xiU(Y?3#@WmU+LOZT5CeB33KnOS&Zh?*A4{P>si)`aCYrMiePpR^u|26KL z()75d*Gf{8~VjFv{C{Sltj`w~J1v0Bb2 zc5A4X6h17~++l59T|-e*x7|EN;?Z_^$E*{rg%ozQy3tkyb!%C#`q5eSc}TAq7eP1v za8jqI0KPGWAzXGN^y?tEeXt!mvcRL1jK(}a6_g2PzPyhXJ2+Pukrq35jloGPpJX1y z5qHYPA-oc~R-2mb65q1$TrNapCf!}{PqT8gF;e4BA(fjshb8XEslChTW~AB_>b)8W zs$U9nLH#bg)@BCqkcb>hNYONlss*Nl*#0Y^mQ=(ap2iAHEthW$h3;VI=9rx$*ufJq54YREQ2a+5XQ_fB7d1j^-(i&Ojs#l>mgp)E3FiKjn{7PZ#raYk zM&cE#B?IJk+IQCYRR#(bl*3Nc-0A*!_*&DEyb5dI|V&eT`ST#bI#;r@6@Ff>}PdfQy9ck|c zf8m;`Ruy6?ZvsuY#>g!JZ!#qZjc9q{A=%8=ouW6MXM3Lg^2LI?)n-mr<47PD#P$JH zk%jt9|09Q5>^*-L7atMQ_WHiD_jv4AR6pp_^(jZ)JO=$`34Zawyn2Ae^0QU}q3y-< zy3RR*98JK(wxqaCyTE{aqUs7A!#0=$d%4(D%B`gimjkli)>cky$?wh}I3OWQ?cG-n zpWZEUOoVA;|KQBVS_I zx@-Zy6l0hJ$T2Z0H*=GJ`y>DT&4h7Hq{CD*mzvQSZWaZ6yJvlhi*C%cX}c2F)sOqq zxRj%B4Kdg2v_hCE*E`ug#Mf=tUbC+PN_){&J$c(~$T3D5RgJ#GU zqteGX*xMFCNL`6zAQ#W6Yi6}*;y+o45qVt7H>?@F5kHh^D(p(&W2fslA#PVilcc#s z?!Hdqattuld-kj>WPIa8^g~;wm_|>L-?02P+sRa@kz}D^N_M`ka%!>&1TScl#o!lf z%1R_(|ET4f{-ZfrD!y`21VYxv!gsJCKAF2jGYE?0G}0r>tlley&4*-+=dU0j1#E9W1L&|RnZw+FJ zF2R9=bqj;p-rHo>Nod9zl9ABt2Cb!1JR9yVL>%(5qD-$L>9eA8J&rm-M|$<&Ky2XN0H7#&(eezg>AChB@o1EsRq^vbwfcOA}CCa|-QFJrNGwMk1D z-Zku+)le*Ay{v9QvDRg1{7S>2IttR`9m@}=y7%K_S-Kmvz80LrgilI$A9VlX>B#q7 zn6ByArZ3m$1sP*fpPK`3gy|DnE7bZ$@Kf~B>5o%Krk;S6bEO~ zNU}btA?<4D4;f=+bJYeI0xx6?UDEryZO%oa0Lp7sPIa8SC$PO!q`|6K?O8A`x#j)C zh^;RMtPnZ3LI)k6Py&`t-ScbDC3DN@yQ&h)qKeV9RxfDURn%YpoUZR4Gz<} z;Qx#B2dUsSn<-*?a&i2KNLPFi?OSYZX@ZRC7Kn}(<#cx)z?D&X=Yx&l&|tqAOB9+@ zAreiWc;v0!UX*rsOBE8Iy{K|FMV@sYF-5y|nu$-cHJu*)^nfm6L;Ne-Kq7xqwT``24*YCjV}@xBUP~M3x7nmT+hCh!{gDjm~PDdA!G}68!2=ORC{YYXTl5^Q78= zY8QBQp<|y@rP2QtiR=)aMB;+SFf#07y`7uC1Pov@V<* zI75?x+|&EXpO=^~8~PS<&ZNM$?-6`w<OM~embiod1y*z`0KM+08Qg#SI1zmHeEq%s&0({cCP26OXs8*FlBu^vyH)ga#$UJKaVJw1(T72S!>bZ$+Vr(e4HPbb3NUS zPg)O)9Il&&+l*YL76+(f;#07?wUM}xaGA)=xK|HnfNdF#%}Y_aIB9fUb=44voCCcX zyyuT7Hbzs~eDCSc0K_EFABDP@xRfl(u>p;&af(Jh2Wr!oz4_Q?CuwlbZE4_d;p!g| zr=Qdeq!n88OT-aFkxXtQK6A3)ySq?S@^grL8|61<#WDRuB`yPKS+1u|y`0<=4^Agi zzGr)yduZert0|;#`@f%V01mYjp7C@eJ)dk3*)I~7GQxhnLyyQ^G(Xfa;K2CxD4$^s zRX#4?uZKO{7Ex>6vrpfJ{=7k&g(ox0N|SFLiCi$7FOo5ZDlgNR3}-%3@!5^wo%zt+ z89aaI#p*V=f$vO8*CMj3z8$IujZPIB_`1~br_000%yp2cAT@Rnx`wVYSfi*^)+8IO zf3xVKYF=MH3Mw-Ot%>Zlqhq@+MemkQVNu>J<|32SQWJ}{H0h}^|?JNb3wk3jOEi2)gAOI z(|pMupcm$2@;;3Q2B(cZDv|jqewjb5j@I@0mx$&1&YIF!iEZ8K=rmTY6Vm!>7%dC` znd<$ow1fKx@cLN&jR+ttC7ldZ>m)i}qSd~KV_$mg3h)zxT zYbXooC#y%0mt`}1k9^SzY|E?*$_{oZn+L|S%FV}GP2oy+81z{woK_hy8 zI$b7Dd9rqR{L9j3Rg%{7n!xzVPkf^@Hy-tl%i!;U(%sgcQaTa4u)#Y;3_AJnC+^wgbJ1Rl0;@wrO0gvEYpd@yLIG)6Z zaLe&sovm}SS?xube;~J*S8>cSfLyy3^XEG*YecJEek*u2FWwM_{%SRscf<$6%d+Kk z*@aBM``tVB*eoTXFg3;)@&dVo7kkA~1Ho#JE4!LjD|I$?qd2DMleWrp{w&XT5%aJ) zdQw=zmkVhvc1>R1QeHypWCFnw(kG}e2YFhx5MSXt_ijtED}v7SKvk zR;}wo-9bAE7lVJhUK(^+%l9v<3)8_`iEV^3f(pyK8jl^Ipjw>f9&+VuPDHM=w)rU? z=CMFRpq~drsrC0av0}wV3GYSE36Tu|&Q7@ckd~w=A1L~t>s{TJCp#-F!a?AU%&PPD z=Q_?i36wQ1U3A*B+P*jsh-KN@HycyZdU}gp+-dwU74>!{s+t1d&ulhtdfQxdwho(H zAx+ecI+FMZDA2GkF#HfTjnR>wpP?Po*nB3ixFnP{mC=}epz4Q}gfKfUUvS0!2(zAr8~g@ZmG%g!IesPJL{O_QV}Fs-G1<=GdF+bXun zr|zZPPH`T;P`vQXqqGi`Zk2?j0)0TBEGod=L(d8&h82GnAo^hl@L3; z%Zu+ad(jA!!}x2nO^cuPkkzmF0DfdQSKc~_kVJ9d<^wWM#FB(Oz@w!}qN)J+=M{&+ z^vfF{d&AJ-83m&Ds~95VM>^<0t)>lg;1HkzdYyWl8sV>@IO2(}!k9%U>`hwG zk)`}Mt>!ta4m|x)U8qxQ8bCc`!!K9h z0%eA68Owzr7Zd+vYkq{q;{fG?e*;Hz7pQS$j9@08Cll8gD*GU~ih-)I9ivEP9qm>Q zr9%z54o?Z@cSMVG{1b?T?tnG8L$*yPmm>~Qs6$JJYCP88%LPKs+O{pLKyFP6;2JjB zLQflz1#un7;y5{5aT1NAXJagzfOs9Bau6-M2{iN&f|rFK$x}VwfM{*A5pR!~1N?`k zGTx9VCTt$r8p6KTVCO@xI1G_)oju-=M0Llid()r2B615spdFQ0UL0+4H`oK%)H{k! z3KS*gW&AbBV0IWFQCWL!XesIEI1aKLK2R`eZkWou#f za;M+A!f5HExaT7#Ku_a0t+2q<6`7$a58fjUU-4|i}>A{@IC*ow61clL4iQ3h5ZYwKjcE;7zFOAb|D%IkqHw^9$-&cK~g z>5J=M!1VkQO_SRMcAOt9BNwWVO~6=!aPLHXpY1#d5uq|CiD`4h>cha_7z zl@Z%4*0B&>H()nBautgw6OG{F<7!JrEp^n(<0Lp*q!S(gn}fT{{Amdl$%)+mvo4Zq zo}t~wKt^z7BNyzS_Zmoy!k~V8=is-m!uuaa3*&BJTK@t%!Tr0y6@(v<9Q3t7m4!7z z?NWd%lSiZvNe(ZI4K{w-IHYU5rFKl9@=)>pEcnBcBVE{^`ZD`+$ahB7=E27K&?vT- z>?bvfI$$BsXE`Qv5tMGc7@2txC(n=}K1aCG*Deta7da}6Rx*Y0j_SI|f*hWO5ss9G zK0p{NEis848Cf|;DJcB(L3PuazZ|y?jKnM*Z)S5Kk-+;yXd>4S?1z?z3Kq8-lq}TA z7O8|?gDZ(BaepZM5xiNzgb z(T|9#St2d1?T6Y@yicX3Op6FX9!a6@+;WHXuIz>xL;bgAsDiwb&=UR{E^A0^X#6-I zoR+S`T50p;w`tvtjNd^4!JJt5r;k=hBq$W949OAAbaQ&^PsW*pGU9_iXFjHjb1MP^ z0&eXd{pKD!^FLmzTBC|@@*rcb^AOgpk-fU)B*p5|M#) z`y%Ds87u^)gM6Bf9i=~1U@70k#>tt)mNH9iUWfrd)H0ip5B;Mezo0_iJYJP~?}+Ym z)t6(cD1c|H8uh8c{%hq1vV;TEN-1VO1AN#)`>uITF}C|IWO7m9^z@}`-r%p4u@DjJ zc3j(s|LQR2wFq<{+fUsXXc2@FTL%@F{8GyOSHgvQ>>MbDub?*mkbU|hja^OV%7mv? zC%=ruNN3|gyQz|*JhRSY!<14;a?;%m6RK`xUoE<_$u|Ydd;oA%SxbNx}OJI z1l;`LjSgZbfMRML@y?UKpGc8`~$M^2iVj%h?tM>p~G2KiM0anDl zAYb;-ay3?7w{^ieuJ}4h>W_AvSn1Ldu5Eh`?}I_gjMXb+R+J2oEBNwVe3Lf`?WSHG zKBJLK16Z9g$6T8Fy03efm555xJH6Hd07J3F3eP*!Z;;;K0nf^2f<4W8HNasoK^rXgh#9 z$*^3!bUEF@1}#^(h@*D}s;HKAupNB(OLa84%_4AlNwGEAEnCShebXYjgCoRnoGb46 z7|*yy(W<7u3}T?Ej)CmI#PhSonlj{o>%H9|;q&QETci!}PDGPetSWkVS8VoW=$ONM zXxhK36K`JOiuz9R;c#b&kHUeu3Z6&%)!>=w-3jS#j7=Q-`&Ro9m+{k%|>zUZd`m zIegpIkAlbF;wPf8(=;eTf4<5L)oG2pl7}hmL?%I&sID4ghxY^1+*{$<^e(sid1=GB zBk%_QP$&oj!J=&sLWNt%v6@V{dsm_R&>|*PYFGPLFa8Z`|OU9W(ug97a_3ydXWnK zu%kZCf{|9rRY8)q(fx8H(*pqK#X)E7q1?ZhEAV9qfjLyB+<=HdojW9YkJL%INQG9L zJkP}-4l;-cEP6m+%+FuuBE_6h>}eE|6%n2sX`V6Ma ze2->9UqY+8JA^>RWYj;iE~9FjfKH_Av{iiE&LJeuvekO~VY#JG;eITjBuj|k(`O(f zFEV6l?>1AN+#4#fIy`#-MbPd6`YjumQ#0)yk zD=;X@866rhu_DIi{GtJ1NsmK;OK0>E=@$cd8Zj_qe&LelKQMAIuO}t$sZ|KKe%-10^ zu5EaXKW~f62hqn#7A4pU-BNEP4?*UmCD$C)Cu^&(^ZoyYtsy87lO{l2>kfb~bJa&V zIxG{Zn@odw9#kSl!|}S687q`^TLn6_f_Jf@ouWANU+U6XL@HL1qDf6l5_3`P&Bwgq zBE9#R#r0FD$mbUiF3zij;lUQrNNb)m$szg{Db5#7|R3 zb}=SwzLG!P-2FHoyY#PW1P4-n!mVs?S2To9S)_7F{$5ajxS#|LJ1I3|vw+(Kxv%MD zZbrTna8e~Eos4hf1y0^z15d#|QL_-bG6_lR#js9WiU|~rY>!#kRCCO|dcwMVt=(0t zrb#Gu*>I@8%eSDY0Ivdj?0df{{<&7GvRnW%xC_z5d0xsL7Z>ESN}SDM(Wzj)o1GAPz@uG zXSglf(d7$RLFll%)!j!@l$LnJGGnM;E9jaG?J6y^-5>Qb(qvhcE^-2i$mWd!T_@k_Mvyknq3xo2drB9XZ~^MS)>Ig*04>e_ zL^}a`p%w?%^3c~ngQ8z^4CG5WcGTdOURc1R+T%ieYp>WEvkOAeqwj6oZkwE&kFIxa zp<$TmGE>vvg9Eabv$-+A1662;QPZ0kZb*iF(6TmxBu5+M7Q(Relq@d^RD*fnqzSp4 z@~;SuR>^#A6_Bge68J)J18vFE0gD8-rbJ%u5cgEKQ$DbBgVXS6V!J}2knFi@?dh|a z{{gn4wA?oJ?w8lR;hmLhx*>#2|8BgR<<)MSgeg==S~RdO1vT!(rZq64G9Xuk(ZBK| zz%#n`CsTxs=y;x?y>i{W$a`rRY13YND|y_$Ab~4X8=QpZmT)T(!3DX%ouyZ1_Z^T7 zyUUI*H-t%99FkSiXHEf(c}M^W!zNlxR8Rr!of}z#R&gFD8B4|q@v8UQVHWD@zmGG4Q6EzP_rrvGTdj}FrC?-M>Z4JC}jX0AOK?HOniIhbG>|>B&uv)Ybu2W z=cErH@7N&^QU}uUr{K+A(nH@xiA)FO^kepT!jZPWs|F?YFSw4Bvk>`nB0!R3sdH68 zP+ulednk?R3Vf-!HKplr?SG~4Z$u6?O#&55N}PfCgxxTzXN+^YV*>^bYX@?gTlSw5 z(n+4~pzCYFIkvZ(;oAd{7CX;VM@`EaRQv%I>I~6t~Qd=glm8Dr>-8Odv26O+qO3}4 zlu*l`7~&gwL|^^E<1L;RiST0YS#S&4BeM#nqHGQgm7=w2SRNqvTYGuZIwfIZJ=jaR zKwFiwXW>xGXu7`Nk4m60vTKP3#C9|xG=&dLGXI5uTkbV6hRW47AQR=kXe zXKHztA%uVuW*r4re*|fxA6TQp?xa8tTD-hZ@@H9aC;&i@?ruXMWu}8S(5)d6vr&1J zwtN%&6gwqHu+B_x;Om_^QwwU7{{l$H-xcG#$FeK=kNTR=*dDLdOFYcq$m!u7e8YP? zX1Onk?-QokGS;e*Cz%{E_`+e?507e5oxkicZj&whEa2nv>kX9D#$Jnfs3Qnv0Ac{a z0z8L2ye;vBvD(|b)p0c!w{RIfyKfJ>S^D$WVa8N9J0kBL1Fn~yu!ll{P>Lh&W|dSa zfaDjkl+M3`D}EakU~GIj3NMvtQJ7mA=;Ww$vr>mKuEG#Y45kmeK)7O(Y7l2Tmq#A> z7is9Ma5NpFXq!rnk4wwrIK6xt9A50fg=qMDGi_aHQ|twfSkLy594iC)-V0a3+necX z1?}Y$7=`3uc$FYDp$@SV3zN%Y4*J7!WKECD+cETnqVoMvCHkWsJS=KGT97=f-wiYx0Wb;a!t{mJYK(j zy|Hn&(mw#W484GmXZW5oHvSPKn3P)MFJa0-`Bl8Db*Uh;A9$eXT!`o`1vn&->=9(_ ziFF=?$H(MY9|n>)x-ku5^-D{%XP#W!Zgs0{{NY3X@MVo@1gzj8(CD)+e2iEk4COjP z-bm9|c3)njx)bBkDr@CJ6hphIyucXP&EXvvQG_=rAQWq-v(m&fyJ*}2;6=dSCi>XP zXp}fP@Nu!5Z`@r64f=CDTD(5QQGX{p$<0ALYdGA3QLWY&f@viwaVojOQu?{joCQA~ zq+skT8`^{pl!*BN+bXL1i`;|)pb}0?^S}Sx-uzL>oXUhAs9;LWfBo^tkK2}s=d{_j*pGI0*=Eso}0kb5S{>|!2+Yqg-rp6OIR@7 z%l}1fDw!2Xh9rlJTCrDJs%V~Ngu!ebkKp1J#^%wb06NbsacQiUEse~;oxyzdd#|xt zsVoR-dQJm7$pTPJgQDJvUf(Zx@L@jwNLD(27InCW(_i)f?butC!|x`M6P&T~opfQ_ zMdBb|ck_;`;IBr|cF<6JTnRyHA=#-}09(bY2n^zILc{x8@>Vz-eUSoQ(_drmDHspF!;9o1_zd!!wk-BOQY~-YEbXJXc%@QZE{uxuzzwugI(^zV*5B^^uH z$OC%F{-_bFa>=7x0W@`Ha=9;{;cobcLgh3$CQ~{|khH{-TY@MKv^<1EU(?w+nNy$X zEd)v$k3v$z1g*iiG@jk3p9-p5CgOu`3$laqP%pyS{^Bf>8$*{W0@!GaHua=A3?B44 z)xAwIXoDU zE3OSVB#Jsd)6cJAyxfFBCXk00(d$HGCVAI$%%w;T6U zz}yxbgR!kbd-^nfNbihWQ<8-OxcP=HT&D}|2gIO+brXon?$vKdGCWh3uE;XkTa}$? zWn>eERIf6A|DZDX1{*t!gGSC4gg~^>u>Hxhk<4$I(YJ82U;H`DQTjn3UC(Z{5QIxnpQ!?>&4 zFuB(LVhwkUGBHt{nTEA}=aAq%Mh|OI8LDXFXQUDL%|k*(lT)fv^a&ZmEGhw^rP7)C z+fgjvHHy82G9Jv5qcT~2HsyIy6&7MPg3P%WA0+}hWZibhGSLj zlmaiBh7Y=0>>`e62Kd&c3+aN%J2k&r1HRFhN(SZgwTibydoZ0tqT-XNe6ktn zGTNLPiXjM%b4&_pC=N>V`?*qZ{223r6NG=sAVan@A8j`FHgnIXt^*F0Y#;L{(0-Ut zmZMl{hVh{U@D0jx<$9VtzFA;y!#BbRPQih&xky-)@!$00ggR6Yx#{G4Y1W@&ggxsQ zDS>#Ed!6CIoCl%FgSQA*W5{ zn+v0HTw1xW{#qtCo;hAX9sa${Ls%@c#U0N0AmL>IIISbV>|t`(hT?7F2}w41q~nj~V*}m# zO|VM_lo3Yo!fV5;*Ouh|+Wyz$XT%vFM1axz@pTxU0!zGpu%j_!a0N_fSEWc2%nlSK zUrld?c8X=XqnaAf@*?TNxCxBM!JSU%WHjG_OtItsZvhW;$?Rg8IYKZ%f3+|=XZL#I zaki#zq57h2R|f`AZkhQMTPSYL{2O;S1cZ{K(cNUqU~|H5BC%gB3VY9+W~}IBN|d!E zp|%3ske|%=Kb?85yd;iyYPG>S8ugrU2^69gNWChH8= zfs4ty@ad))(7uGIGhOsHQI=-vU~eNst>c9@y!AMlv#?g=dNUZ;x#VDg$sa@&?7~}Xqxi2N@H9KDTmM2wa?&qH(7Xo zlR;;9bK2wa@c2yynRs+Smf!jnntOMhu^UX)+#U(YSqe&A&%``Q6Do;6qacvdZ$VPQ zsWG+QE~}aUQwS`C^YQ_#%#oOZOMHU;wwR56@>i2C$dGh8aQU)cA8S4bYF#=cj#I&{ zJrHOI(cVMZtY6;V?^lUbJYOUbc=*J z?nn&AMw<7KX5%734?7M8s#wC0w;s4Z(>|(n+;E2y)rPnK=C@}&#fc%ydV49bcu5}( z@5WH$&{a!|SXXwbbYVHk0$R?hYX_G-qF~Xaoty}E?Ikp3`eI4QOnpjjZ@m1df4cw~ z1if?h^Y+e4}Ow!2g#K`Qw&;b-LCpY%N;E`0(${Lw@hhkf#SpU%CA! z%GvCu)x7{H>M;~$Oq%nxPua|Cf-`>3SvH1X}yC5|y3SHqW3)0*2#Ipi?ed`?+k64s)W zy8KaDB&YMSta8jBr;sxu);|E|Mz0Q7b>@+HggAe!LpLOkw(T)&FktiAtiu7-c9Cww zZ)mYBR?%cvCiwawLPcRE?p@@4Kr}3ermWmG5tc$V*=M`m6Ss%EtC@tQa#JO^={R~x z0>Q#Q1n@7G#sY1=sFXAL=<|z3k_n)!@ymU>f=+g8ih3!K`IWfGBBwii+P$k7LI#<4 z5kg%mN??~$xo+B2nb|`-8s1H6H)&@;8eJY#I&Wki#&S_~SJEb~Q7!74qG}uQIKg}F_Oi=s(P*W5OF>t%{+DT!?<8q2Z?2>E zukAfh$fSVlUkXG(^9)~5c436J$Gq(obmz?O0lvUE!&v1Sw=%Q55C%dJVppM3H)v2g%^Hot{;pq^h{=<=%J^A}?>-vQNGscuV# zZv9SeYT1>|xV|bGgnpuFkPkLxF&y6kS_;O!miPCAf&19Z5HE^~T~wB4Aw?FEsEgW|W(o^v2Oi`#4OsA$()*YJ6QQ$YnyWQVM!o9Ty@sBV`zE45 zb9uM+Ec5Gnk?I8lqEt1}&PO8$SD`~f2=yRC9?FnN59rY~WMa}62%-RKTjZ)9ph8vZ zkyl9kW8`EZleI!o3cJDh^dK2m(l_t=isHmqRwE72*l1V?WeP-qZv|?-nwT)S-$TGZ zJAQA>49aDb1&HaZJSzz)MBIoVuJZYa^SlNA6!rIs)c~d=X@pyKf-h`NlR#9d?Owkv zI@1`l_V5%Eze&QY)8Hpd(2n-AaI2S7Klj(SSJ4*nz<&WQ05uDwIUei|P9PvRnNc0y2Ki{19tYlS(sO!8guNKnn-V>U{Qqog z6cbB4SZv-Bgv+F)O=RbTI(yU9*H>gfsvXE8CYI<%jp}J_iwyi|NEOOTk6};R2E$u4 zrg4*yPR5aM1^Huy+wg_(`{>A~w6(cMU4F7ec~HLW{v4xJiH81sP96rj&jFx&WXPOp z^oFq&yki>k|3fT>S#q_oQF_<3J)%+t=fu1XqJ~bi+7%@$c^)^n7*3h{Y@Yjx zNtdLM!N9mW?xju;Yl16P4wPFL%H}GvW_$DYf&N%8QzwmL3vSlwSF>*RxD=X%E#W!FUi|3tyFdN6%O{>e70di=&v$n+gS`XG&Xc2C!I?&R!HCqd|0s6RVs*IuvS`0() zWd~hjf-%PKjWzsOov-^#TDLs(8%jnKEj@j2y_i$~WG z8MJRGTc$|PAW2g&xYEjgHh6m40hW|_-$+plyuO9;j5d@G$?_i}hjHD55dsX=WkJR{ z1YwDk)wdF9N(LYk)C&#RFa+%o?67&I z&9MU~9j_`W{6;OE{l-~vy)QD1G&GFh&_;|ulrs$H0SV}Av zJx$X}I)9DD=NMyjYDZbo0KMxHgH@j+EUH=iV zE_k(1G%d@->*n{lDj38&-QMiSWE$q-PVMAElnP$Lyd#+d((KgLwWOh(YJs#cLB*MP zX#TQePHoe46`3t~bn1+Ob|gtApp;;Y9VzW99j@HmYl|splE0ug?KHBE?W@_YtT#IE z++RBS%>g*l#FFd*4!4C6h4hHFL= zU-5n9fQT*;chxdZ=`(*z%p;IL(!Sb<_rIl2$mG7Psnn2=7NJ*FI8R&H+NnR_GMS^* z5y3b$S9sUXc`q;AnFu-|d>hKGan71~%E4X*{Fj|uFk>DvP>ky(bTA%E)vksDwfB_M z)<$;3eA>UEQvYNfqm^5}pjQg@$iL;LmtXdjRAB)tCNg#)uC2mkGp|4Sva3nz}u z)tX+nx!TKE;qp1o$%R{x9pg^(8jxs`w-vR8l#{&MpX{wG{vnjZGaIlbkPlM=eSmz$ z&s^i>h|wbrPt}J87HwS6*a|0ojr>Kpws38R%D?k`afM$zuvm&G_y`Tq82N2Un7ZEN zd#5`GKT)+9FEV9d1uw$;u)27y2YdO}G^rW*uG8&_7*fvhd^qFzk#yQ{4q?N{10~W{ z*m<;bok!Q~?KX_dsW^v^o_{dHE)7N2fV;V8g@JMRaNl>MmJPdienV08DoTuy2j zJY^UQY|R%Xx^QUPn75HUlF>Ey-`&Tbo~90j4Md|zxCGw%^F-?gA-7ynUJ{VhWF!MG z)yvLxN*+~w4T`JX$f|NGqjC z7#tut1%f-g8CpGa>gU9i03Z{8LmyLI4l#hk(Jxa4C23w^~Nwdg6RKO8%2Wq+^|f5Idv_ZRc*=n(aFv7#NY!a^ zCdCTMEcjHg5JM6uzdFb%y$xls@3vpYea+y8h^>Kps)|2+eUpa6toE)pkhTVZ7?{dZ6l>*?h{lky5Jn$M`C3CeU z&{8;y^`kg!)cZPyYA`gw3H9FE)@M9oEw@!<;iL|x$V)vo89}>6 z8_jlkCfD!0Bjn%taY4F=l$oRY@2mzU(t&Gh9I?o!=y4Q1ymv@eRYlPym)Q)6km}M8 zYDy`_x^fm#bzZvEbcl;(f^yj(Lj+P(c|*;%i{vPj$+22i_(kL;s(!vf=7!TiDmL@F zQjg`S1OT=O|Ln1J%}q$t`E&`NhStef9IynOG~^3MgTyH$6-@IwzY4Re6CPqvzaI5a zKalABPrO0KLGATo?*~|_N%VIpQ9(0+Y=K?VcuW8(Eeb3LM=0wPfuv5*yy=Lf#y@Yk zfEzaWe=Z(dIE>4H=V;^au*U%w|GkC5-jed-mO5i&UfvXojl9J{>0enIG9SIyT{WVN zUrUtZy_oX`c1MgyXmG$1`!Anka;c8Qx}j=y4VRd2`u4MVW+dRcC;JjIn2|;byTdfp z(;Hw!!&5Ock|GaUJdbz69ObokpHI!L@NDxRBA=4I0)GMS7tXFF;A1eW_W!vg8n0(^ zfVpi<_mJz>S*;pQ$CM34k3beqC%@9L^3*I>qy6!FODO-t91rVhsd=ndDUFVh6lc+7 z`Z)!Np|0BQ0gC&;j2863r(=l+;EMPd>2N_DuQk9XdYgta>Sb3)))$YETO=XGlsB(c zb}o&m_*&-B&INs8GJjo zt0qO3bz%2zY>P%Pcuvi$P{D-J-1U5kkLA-@Zvy1&!J)H4@v(Q4rj~A9{YP))F~?S_ zwJYxZDkDPJRQv|AoE1#Km3^cLR@a#kPR7DIciHspJBpGk8yh40r>x!io~}ZJLI_#4 zs#B}LX}4dB7fy@E*y!yi7tUmxAp_g6bUNk$QZDxR(vsywEv{J;>!I-*2}d?0yfNHf ztd0=`Pit_+N{okk47j|Z-Wu0lySh+~XDh;dpHVy#3n||!EysliR=mntJ&|mbCL(ZW z${Dr|e^?NGFWe6%V>)T_NmduUG*6;yJ z0_xujbzyDmI@FtKcS8r@F?X)IAZJK0aPewBZHWpf)yM=(HI8p@OF8eJ3K7z{I()=P zPY+14MaE9XV*-5>rB9W?V}&Lx_aP*GxEC_#fO^7bw>k*q(NVrnJvyr&1sC3}{k$_o zQo*eRDV@G_N?3>|a99>sb8AlQl>}^L^fTM025ck!)$skHJP|*ajfBPTsV!|a*w&~9 z6RYnZhy3Z0hT5u;hMJcOX*u_f>AFWSf>@atg)WfF`_QJ*dU(Bij>4S9KNrK7R(L5x zor3HnO0Z`SGFD(VWT-G;Kn!ovu=3UXJvlt*L4W8(sn-TGIv-HqgQJdJe5RoA5S|1l zCK!(h3&7?B25XSKWKwxkh?aB<`z~hEzyWp1Q~U%mpDQ{$;ex4HX$GJZ4DQCPEUQfa zD#&v<-fE?6D6@a`KvQB?0Z9ltqEDhbFjU)6gdT7dkd96QCY8C_ScztVob>WBkAz+EY1y*(&oOSe@LM&?%)lOf$DZN`4TXfs+bpL04vsi@ z;@d}Q5A4DvVbKLVEkP1+jsVG?%YA-iYLFSk6d4?g*bvRA^ zs~OrM54@r(#Tz9`RRc(Ci|GH5)90`ZO_On1knj+3%0&&e>!6s5P!a9Q2PD%e_+gq7 z-tc%CM8M~Nqn3obQCfQu+MApL53kG|vzNT9((yubtjth-+!`x(rHo zZK&b_iqB`;t{z~+S$v{YD`1d?Rg};QdLW313^K9x;;kCvY3Kg4?vG*73fZboB}`oE z4dp|g4dtg|#lm!^0jS4a)G%cWoCKbpiruHMh2Z_sM~uB~XpdlS>4yV1d{5ViM8&2C z-`W^QE9}B~@j{@t z1;!B4Llm5oL?|C;31V6K}E-5y@jLvnKgg)aIu%=>Bj(>Bw2BK^Xq+gKOJ2d(PlvWR15 zkh|r1Lc|Ni#}M@4-{K2J^{r_k%$@?h6|;9W@|VOMXHX^*AoC8 zs8#Q7&u1=i$hoLiL{u{h+EF<1IK z7h5ZY|4%g$?#&;#yc{h)wQaI{X}tCj@fD$#K+VN81o~j_lEZE<%O!AP~Y|EX963E zwp{RzQ06YkJ|~S(f6UQ6t03k2yOJec^UL3p`D6sj9laHVH@}ZA$GimC;(y}qjWBFZ z2I!q2WSKnHg6}rVQXCgJve24BV)n9PQvBq#0UloN%+Cr^A-Pdobs0o?RR1>BQv<{; z+<-&I8vA)pF95MkIJ<>VHADeE2N(eWc8XSJU2Hv!lJC)cNV&!qN)#z?;|#@zTfMYo z)pQV#fG|9>yN~_pOhH5%;wehHLDn4aEBLq!H61gcBpj(8B|3U>K>;}4uA?W-iLkW6 zUq2Ms?6(Xuz+=~ETdU@4z5)=&=A2#Pm(FmtO1=6i${`@fdW~2PYdpHpI)Jz!68S|L zE50Byv57q+R$_kxMkA_X#cgpQI(<&hE$;>Pc(xp(Fmhz*DhX%#wP3aYy0e%{inRaS zo^x_ZQ@JhslK6}iH2+VMv$yv$+jUuE-LQdPNRn9^F3R7mv;MI4MZyhBKV0d_4#+ck zJwiK*eH~}}`p{zY%iY}X>HB`EYf%o0^^?+1)!6;k#34rwp1;_;;dSVK?>1V5LHI&EvrUg$9B#E?OvIW1y30f@8pbg!SmgZp6*Ch=OT%Tn5K!JD>Mz>HQ zzp$4!>}7DwmtE?<*$g8g_fDYRCwe}iU{Bkw;WhjB$y04L6xy@Wp*-?>(&94Nn5-yC z;AyPCqeQ5)3HE`pD0C(NaLe&e1f#*RR&0n3)3S5U;s)an{2(ea8ix}5{qZkq4>s&c zqRA%$eNk?bIwl_xY9`%r7vhH-%`1nFd*^AOC~`9T3gL1;j+Sd!ul`@7(4CL|(Ye$^ ziG2ueBJ8m6xRUV*{zp&{x^N~Q8ZXA*X?gRMqsS6y>3!G+)rO|N4p(9Pu;#fCE?dtx zNaJ-&nmD1j)@L3C-8uvAyg!_~iAvey4sf&fGsZ=Nl{xKn|Gq*IWvG#Ml{>T{## z0lV?J>19RcLKsu4tcoRP7E_=~qlYo>zA0;=^`?HKl25is2w|&NJT#V0G#I)N@FP8* zC6q5rUwazLo}Lrv0Y5}$-n>x9B#1mTE4b*Ges#hA{-Y^`rc65q@xpL;HtReCJc%RY z_fHs=JKa|52=b6|!aU%{G_OAr4Uepnw~OcdBBed}%7im_dE2Q$YI&}*mWTnP4N7zt z6AL)i5(nX1MnHnck!G}1=r3;>%`|TYOidWZ1awFB@OGCxG0a7cP2+4AEvkl5{ z6sA~v!5$mb)%;D(@`RK~{z5l6qa4^KhHOc-O{oc0g?o|nxVeds`^_XG!qSmgdMF(A zU6yeQm-gN8OAJi9{>%vQ!Hd8$%6){7hBb{Sh)k)i%~2;TxtZ*+6-5jVte9ZNzerKfd;SRh zx;Y2eF4}0R-?G70e~6F1B;ANN&F86D5Q8fkX1@AOvRGFp{(iD^Ay3AVOBg5aR}~XA zW`(6rDgt1I=U*W=LqEmkU>7qzd{{()I12MZ;RXy`jVJjZ2vo0N}pDYsfHssSNmaz47a z7N`Mo*f?3E55k0IU)zT+N-Ld{sumkxFtp@0m*qT0j5?hfAYL`Rp;|763s98ch<{zE zE_ksVF8)(s&!bK1s6yAxey$8hw$v#G1ZPGW@1o~tM@gM8!Om664T;1_m6%N*VCMna zOD?YTA;^z?!2+g$TfrX1lt9Yx%2+wZ>bk`(+e>xCAG?mJZJSUwhOMZfRz5LOJbTZw;Ktc;(g{`khXy+3BUO2f zQZvxXW%j1k_nJ+Er6}g?c97f(*LFj`i$dIPA|Agk-Qn~qJjS{p7qE;OvxNc{mg-qP1*e8`8@|uZPIXzjyR#?1PSx?xh}(^795dwJV_bS`eM3b`MzxH=w8xBzj8E7rFhKz z$=+_eJHFotPvVyZ2(g_COgz9Xrz+simAy{8)NS4-9^~*L!~-) zi=uFMe|PE5i|Dqv_qgX$yaIt+$siHjWL1M2DCS2vzql5C>qvQ?Mb-B&_F`fRU%FfS zRAm?6`sXNJM4tuaGhiVVDc=uGQ$HiW#MpTw@X`V8=Av@CfYeFkEA{fJjDjNy5{?@` z_GdcK6U69!7}A>6p>lw!AL4DsMl43n0NuSub)q}#;lVR&!GbFhgngMk^3{W4lq_2@ z18B=GjoJ(UV`qUnr?JK*BcK?243Wgm?op1sXhU|#4T07fl^^?~T5mNsm!9klZN7U6 zVw&^sQq?)ytcjk=K$9l6#GQeu?PR=Fs;X7LKKueOd@56ibT+}(*|hD&1SjZ!;9Gtl zQIst0kV864C{MfQ`hn!5bms-|A!OR9PQQqxq?Ejec)y)LD0Jzwv%&B940+usy5;W2l?Ze|v!;cy zSSylu8ve&U;%_o>yZ7Em=MK)&-qT!omiisk*cGCothrl;B_EN1{&0K%O&s-Z&`aph zR!xb!{iZl}m0~Py;)^YZ@v6<8mym3hB_*{&3IWmUY%%3~uWT&FzOe2K#pm{{Xz3y; z-v9GN;nMaG2Xy7JO_$}AA5+G0(Xc&f@=h5v3d+t>)Ed%64qcUAYbBpTMx6WcM_U1> z)W%Vz&ciRoC7~LulFVxi{G2uz4YaL8KAK{$c@zn(3Lk1uFM~1x0kS(Azm`oeMsh)W z#@3yy?=w@Xa(~k(3^ohXfzBqVB*G{^`Qhiy_JDtyw$JKJ@(w!39HGllUm33Ag~KqKIAz`dVQHBYCKluTjd!UR8w3Oh=KV}4Wn5%HfGFFE;iWN$=(1O&%FxY*@e1i zm6j2E)TxHnazj+MCueTM)jg<278X~o@|P4;f=%H_9zeU|!yo>5QjW4-^vQnY9{^G2 zk7k6L6%AD)N(xqIW)H3p-IBwzL3~xKLzN_*7avEYc!%@%U930UozC>*Fa+1n>nd3gx?N-_BsC{l zlsuWS@(X>%+B?|znT2utmO8*rK5a#t6!$liI8{?PiT)$+HcX)^?oixYUFYEY;fz=% zvqkX*3XdCS7>ANTA$>col8bbizCabQZ&+flj~Ei1%|+U7&)Ff+%JWS+UAqH<_wX@9 zv_$UorfY)*c#)mLs|;TRXT%643FgM^5@RbIO4~COUsSZcEW6ifs80Vjl@%~g5aEvz$NXBKWM$9*sfEZ3S*(M_2YYEbwacwGd8Y4C=s5xz4-Xl_j;{_l*$vtcS=(V@z?XsOndz=~G<4=im(!-GV)V0%gM3 z;p_CL)-x{L+Cf6EP!Cf%SViML=|>9^Qyy$z*AGr0VHt+nX;Id?cKY#}2(=jkMobj3 z*5Yq`E{M|BCJV5e_q~q^Vx^Y5rekweW?Nr! zMyY4Q5Rm06|Hg0)_UAPlWhl#}yYK4X5ZFKEtpiJka-P8Bkj)TWOBbdNTt5QWcd1L* z3b_no^J}(H|OgWu2fdVP)RLOQs?vYfFsBem;pSovwlL50N8bKtErQ zfbSy`hENSAR`yg9V!X>fw#KG}SOHY6vAh03)yeZ&u=L^>gkv%HQI;=Xr0ZZ%ffGYb zGPX+)UEc*JqEiiFJMl%4(-Nqw*4iu)tk!M7WJMwVlkW;}o%oSZhfdT=IommVVkx=L zBCOlNwd}7E#Kc)@&Zsq8>+5Sb)1S6^3+wsBv$UJ|;c*h8l&tC8oshJz(xdcJ;@a6;b0R~%; z=RB3n40Maz9iTOH??(@YXG5$09FtokmTPniZ1O*$TrB^e83*>NH+6Nt<(l3fecksq zoQh`hJG%Br*U;hATwe1aF9?jRcT8M+l*LH1ly%4hsHL{@+zF;%X&U=u@ij?+O{LEuYXEen z_cGR&d`Z?x8XdQ;v3`^l&`VwY1!%*35h+H@CNMPvCy&j;?+vT`OVR$lR$+-2*kXX<5IQ-<2AYNCwXjs@Kp7y{o&Vq}(bEsbF|J{# zcb{&I&M*iv6Oa=37?E`3=Z5S95R}XHk{wFwylel0zkPfi2Z-`$f%?hqRk|o$?fCyg z%WCiE!m=e9_AJY(kZKujD4a@*y~C2a&m8!SDx@5ZD)j`17>kd|EPh2inmoc+F@-oA zNsR?M`+~vkS3_vboTzd!J;5)q(H@d>r%dOK3PWkUB2&P$o`O_~-Rpfk)`mszvv%ap zy49+azqq>+(SQN}Oy2sDT+p**#P`AIpsn6%D&5`r@yNNR6}?DD9Z?wcuWS_>gLSPQtn}Fh^I} zSe8b9{lN)?+B~+Z)jd^QV$1!?QD$wpZJE-jCQ*prUCc9 zySqq}?{3(@w}`j|si8{1UXG1G1@Ty@s0^=x&pt~XVJT_fhGRPzLtuxw$ypt=VmS9hBuqn2C>+@FS*PMB_xL8&5RPD`TkCr{ z%ZDnN$z@Ln)n#hOpv!?gY|ZeLZ6p?Fel!W55$O8`Sum2lB(GftQyUcXA*DYQJJJP} zPA-yuo6z+_Yqc&bBj0y(-s0iDj!YQEe?lKXgq`I6xbKIeNt(ZFf_WJ#!C|#e?)(Jn zUN*$ye{*Oh z7I0JNSmwkdllK;=uZiRuweuugJD-ZFEL2hS`og*%Q2AC)Y4F- zV117^k(XlADz44TwBFtx3jjT~67;2n^C?EiJj7SBw|m9(-(BaelX+dynFu58yh4p! z0L20QoVO4>2?{0GrSXuCf@K|cxJbO07~!^m^YA& zao2RfJpi>ZF9~jOoLr|+aJ+vWaYQn$((<$?64rw&(xH$58HJMA>nsoVW-v>0(dV!H zCno;%Ad}`N0NzyHxdPzpEcWI9q=xjmK0OM3o)8dALG$X2%io z!i(WU!564}T|p6gDmK1i~e$I9n($ z91y3wFA0in4waD+Y|#)6I6b**S5v)cq!rpAl{Y%2&f+SyaL1kZ_o6;wsP(hP_QItx zZm?UBb=6LQj{ZIx^lw3Gxf~jUqp^#1tQKE4y$1x5`$>yzCY<7*F$MwR@YX!ISv3C| zd8>;dj-$aOnC1!a8gvTqQsZXp2lC>_d%*D313=_Rki5n5;TcEqRJT6zgA(q>)OwQp zHgmX;(Zr?wPDudI0*2rH?w^U#CnN=Liih|G+GzYququCgn9+Ig#B)g3lZFMi6{dFD zc_7#PY#9g^Sg$X^3%juAlF6+CUQFZ`veMVnD^Y6^ig-3!A26`yRR+QM$%V}nLi%vON*x9?bM~B8QnpKW1A&k1mm}|-tr3_NVkk1Et-a2 zx||KQG4k8^|1?AEDgy0GQqPG<^^%!A<(z-+^<+fYvMK21b-Qf2K#o6$V_b=+e19be z)PP;HOS81T`~65Uf3E?&XG_VUIg<_v?CLF+D1&6C-xI3090^Ie684ZxliEbMmtq_Z z-@*h16g3w0MPXw^ig>@U8VsET2U&^hQCsZj(@|(x`-N*v@2#JnGtfO-RbSY3>pZS@ zqq-f=Mx_@3F<)9iJo30JzU_sVdLYDLRMalAW`t08%hNOOrri)eCYxbi`qEllwn)l& zx<9;BP-qQcSBv6WDUQ2fVs=+zE{j#fMQtv&vRWneUZ$OT4+M=I9MU1W+SV zj9G9(Hu3NqiXhK#gSpJj>L&u=ku4L{DhZFkQ<$7C(7?D>U0_R;!3tLVQi_(I*#|!v zr^~d}IBBLWPI;+#Lm^9u4#5E;DYW|8Lf#197xgs1TdhEfUn zTh9TFTorq}-#O{XxP-B+|5CN2FU+1?&)=ld5uMr2-G@|k&Sks!kNDboE^eRqeJ<&k z{FCz7j^N|DVfQ=1DStdSAMWz!I|LZ8VEr|+Be-wQ4E(sz&Rd5p%x`Z2X?yrcO?wMOM$H_t#1d51c zh#gg0-4j~b<5C82mC}}IP4PxmfJN#O1U}1J;y?n~#U+$F;>-%8X)^U{=-de+q|i4T zUUhHi=2lQU=_|iz$EPjPUGJ6>sl8S4I3nGhA!z$;x3m-0&qrpqRtL1w51&^Js-%Fl z=Z$r)T5bqL7W)%bJxz>iuk01}3<_VPef<~1N!TcJ2gzNj??c0%t$w!*b#STp$QjN!E*ZQq!m5QTfNdHoBvzkSt z68;mK^zQPZ&mo#&QF7DII>P%No)dK$-wLlpvVY`d_{3F8`Gt(HT~gb0tdiBLkV5`+brueXT zmdq_Y_L3lNkH@;_<*hmB%}Y(tt=Y5o5jc=<4Si;M z94=eukftcpX3*OKTfGIJ*U1f=mRDzKCiLzI$jh2I4#BZQyD^X&w_@;H$9=Z@8o(Qi zr@(eg!Uz#e#oFhOT)xf=nZM!v1T3elko63KkHTc)RZo*=;>LKQ=25rRZ2U_VWFX@l zV$Ow|zXob{ph&gpgCGCfP5w@8gSxIT1hpL6Eu-H&lZiBq5gMKYla5Z>n<`}$ev)^i z!Wqjxb;Xs@LB)si!L~zEWmuR2bnWSeOFkbng&4M5!bgo4ng2HoEDJDdg9<3FPr(v4 zqGPn!lU^-)uJ23Gj~+4H8X<69zN8$^MEUA?S>w(Fo5w~Iy^wdOGx>U^*ph4a&u<(b zEV{|$P28lVOFm$CA_nMkU_H(Hh|w++1L`e7mb628bvsdw2=e8M=mRy>GYZnLG$M{d zU{^AC27(5@5cIM!b;EOV=R;OwF+*3DAiL|TDMmE?QAZqzohWxW)alRERW66lCb_#wUbP zg2?d;3AoA{fD8A@ZuqZdYUzk+l@I?l!&cNf)5DXWu1#8 zA;ZP)nV-d$`2s&k@g+?LTLAt#!kY3LMfCcDFmr{aBPE z9QrqHs8YJ~;>Ql_R%^f;U=%XmMr&AD{0RZsx$l%@S>0%4>z$`6$$o=r_7M*t#!0kf zEJbGrEB37R+K-Yys3U_oxY*$h5TQ0aDgDIAd37XK#N4!0y^y)G1>G{EZA@_LAFT|b zPPYIIg_c~Tigfz^#X4-cuE_L|`0Jf3Y{`nPSQeh_HQ(F8i~a4e(sShLvHcs~!y7=j zUFHYd$EpPoZvc;cN-I+Vb<{ZBn$M|ggPI>Wl4Fbae5Ghx^C3e9fk~?SE2~wUsq+>1 z^-l6h_GlQC-;DzTR%WmcdHfDOy;V+dpk!3VK~?zObrWlSQaIo+N$ot zRm|F@i}dc2E00~;Jw#(f=#CpTMHwhyQKeASGxz{u(Bl8pxqQ3h&{jrI7OQ0pBC!5k z?l(%Y5Y&90713PMj;Z^30lG$oe_w#rqQZq+6J4%iX(qD~=H{GBosDn=AS&=_fPPwS zy?_34E#EsQ4%iYe*R;}TH+%(92Y65tz2v6*_|;c!0@?4S_-HQKh4}7V2oo!)=gWs& zad%)!?+F-K`rvC-Sb(_Ee?x+*Q)tel=?)o<$H8<0^ac(M9~%XWJs~z2>-6v6=e{A9 zQ4jaZ3UAZ=7s)aC@@j~wW%iNe0yN<~IP#_WJ#+4`dfMvuQ5EB}4>ax;69!rKu%CO$ z!F%)Q$h|syI$h8@(EBZnVyh)Ff@%i$aqW9wz-DZ9vo~k#o?t^)t*AJeTMMzLU})7H ztwP>fFvi#rr#wtmU$P<3RP8fL79chtTv5?Njsa>O?_&VeJq z@V9}h{q$-+9soUC<@iW+U2k|50vC5qeX%b(4A70kemo*#qtGj#yDXWKsJZu!3l`bs z_t?YbaSm}eok~;P`M4cj@m(R-6DR|=1{NmJLW{kpPCUNsxo&b)03i?Nc zt>jP5?njl+Kc|lTgaZci{+VbG2Z4Xpu)-9hl{q4b=%gtj((+go*D>HuL)pvS5R zE>X|S3uH1SYn{vt-0HjJQR{gKuu5iw&Dtj)HEl=pX6uM>(H!V1tj+SAPWK6F>cCyn#&ZmfY$kl@T$d! z2jtAJyJ7{xAD^kmHDpA+bZjNoa&t%vR3W%O*q3=g6`%|5;t>35cU*W>~scVy@Ac`vJ6ICfz zYjUWxL<#wRk1%)GrBusqTwxs^buQL%3fraFSkC8|9xP}>OnspKhU_ft1>XFMabHT0 zZ#)l4690QsX=NeLSg{YF6c?-Y6pq}?4b{eHgi2G(#O;vV05gim!>h5SVqU4El9+vX zPpCInQ%jd*QpW{~KC4zax(&VMT!D%NN5t=xK*rMUkP4wstn z@ZuUAK6@V@(7mm{$V13K^xY>D+sSbJC3NToUEopu7Po8}ST(3pXH);K*b6Ev1$-+* z@hHh$S>?+0z?B*IwEMc$4*H;*w7@kipzF0Z$pNJAX?+JDSHk@#40X2cglPCObAeId z{hFyO*cgBhV6)Ie(mD&f7%sxolg`p4mW1Oy-`xd7Hk645z)@UhI-KuD4nP7LdlG5t zWsY{rng-_~rl)3{KH6XQrf1&D5PhSx$zJhIR>R?Uh?#q{Vrw`9s}F*bQLeD^{Sicr zmTEjMwrC@!Mr{8@pg*8-5UaarMl}8_IjtL_Nvcun{wQyLXb1O2P$LbiY_6X(flKQP zPE}miKI-f!1icFoRGD7m=x=O*0r#OQSF<(BPySQy*j7&}BK4Sxi(7+(Ln>aAYQ~9l zQJS|(uk6`5vw=c+n%lcQORrf2ZZ}uOO#%YH%3D5>tSS3sj?n}IZtcmprgzP8YPujk z-P&+XG89iB#cw^V0Owa^+X{0&o$>KyI7twEp@jCa4P1Z&1M#=p7GyJpa+2YV-^-`0 zyTURx67mkT!X%tizUuQdZV0q63Wz_D=h07ppOB~|{9lsogyU!Wka#B3+dn5SEm&AI z16;@gF01Y4gCd&2{yA*Q5`J-y_O`aI%rBVcJ$bicP$^(_r;e_k_C*gL;u%NwZF0H& zD7{&3eM*a6&CK644qVTaN1`oU?ZDr}0M1qVZ}PiLrjjWCK_D48FpGf`m`p0X4#1se zt?B}{=^K-Yvg~*j6Pk%SGWf*)O-Ei~m+2Nd*WJ%b!p0aP+&}OPeV#`Ki{J@ZWFi1Z z2+X{s_u7Xbn1zVrc2mZ2UI%8sR*RxWTl2-aubp#;MC!D%bu9B0-H!cS{b$G4-s#^a z<5dEa`IaQ?CW7>Ist1)p7gMvh%^2Ku^<}P)O21ZkWLLZNAh5$T^-RW0Wl1xKqks2> zGHP=qL&J~0bq8Nht-Rs*p!l2y@UO2~-C&6I?gFfX!&efI!6jMT;}I$4!kUAsvOAIw z^p;|ZT7!8Ns4+Rnn$OcGx?aD!E{QXekE0^;CNHrKPc3XFRw6dqsGSxcFTH<%F2j2n zCN5$h-POk@QVvbTt&mRp*}&l>-G&VZJHNV+=?-PuVu*g}hN|S`>W(Px@nmjEyNab) zf|$e1)*A zU1i(vaK$E+BpSwwi02eHLbbnA(4_ew*M$^AIguH(1O%pEbDTe5lCP&SBj$K3SpbpI z5ysL%+3{QbObAedY&5?FU?=R966{kMI4bI3I>$7CnW)@DWI|g!$8Gk)r+KHkzcECM zpd*ldsa!|Fx9MW~<|~FP53{Sb{?OlRW7esKY!iKQh&fu{Av5+mR^;ergLv$@3 zA>yc`8k$m|y3m)d{2%#$TpIj%J|5TNjFx&$vcE!SVWUX?DP(KJ z7Up$YPL=YW{s8jvBbGz^(b;L`mW0X+N?0DhqB@OCtWA|g2iga#iUHr5juI`KmpWmlwZ7?}El&mESv?ET4&LX5o z7%k^2ZZ)(uhBEOO_WolEBpn5{c;3WYT5>LP3@KNllU+mNb?%-@Ua3i{}$+%*4uq z!TAf0M7;-M4q64>;575=7C)~;PiikhfUX&&_|{le(`vDG(V2VLk&EK*t7Wdy0Trt( zVYP!H?T(Q(_~t;+L3DnlGD{bQyw1zd4q?ZZ&LFY! zkRd3kp>0^l+*Cxq4G{p@KE?@h#W7Po|7fhxr2JpH%Q-N|MHrRaBu1^_%Li6e3{mIF zTnp|b0o4Ewo!GsnX?@MX_U`&+q--}o8kCG_JP)r{?{-oM|ku8YbI5)>DPHem?A-Rf030%|GK9tamHp+nKd9jcsAHv9x(Xx`I| zy@2)OcXtyI6dq)wOrWQ|Y0gZcelS^WMVp=ogAltJz*8~E*(lPpdMw%qlwbhRfo54< z5L>nZVPT*Q4(n-HS30A1sKM`}Fk|oe)2qicBrQ@mxK@jWp}HMgR`3s4!oIX=X+Ddb z@F19k@{|AT{5Wa%9`av(8&cUB>&^dk|Mx|^%G+$6nqil(b_Rf|PQ(TKlC&5>rOUL< za#V>7_0B5Vtn_xy5Z0Q^13nqXD&5;yClxBK$166pYBW_TOhebF)C@$uO{1&9DV8P% zRnkS^a(Ofa%2Za{dJZ)&4V(E2;~mMiFy)Xcjvkc?i{aASm8rge$r!9&Dvt+2Mv$_04X^;+?Qzk~8IgeTN*Um`x%Z=KXczPZfoY}O}B_Epeu%IR+(Vv-BuYe?At=^F#l?`Z~f zS?c`r@zn}2g;}^%D*~v=aCw{bN)_MI;62@)0&0t~Sm&z;F^tfp*W9#ok?Cs_u~`R` z0tF%7Y_eKj3Th05x;z}D@Hv3R*8d1o&YGf)Y)qY43^~P7AbtC`Tk!>& znh4WArvgrcm4hL}9Da4IhU7UJkaP=Jv9={}z9&6MuuGptIy`@+y`rH!uuU>na`6$y zL6ZRDOo(vTS118`bgBqL6&c(6%f-1*W#rVyO(%xUaZQNmgilb$Bsi)LVDuReODOdF ztQ@eX8mk0fH3bN!K`<7bLRL-?^Ggf5Hdk*)M%e>kH&p;Ma@fK_v#XVk)C?yY2PXpD zRNN})|H8tR30rAp$IuQ7ZZe+h7%eW}D{Z(U*imhfK{bieYDe3KkZx?Rxawywo9Kg* zRoWhBSXLH+(FO9W<4ypBLBtQ3VdcAd$9gS*@E=mFhDv~^vgRLkiQf;SmI!lvL;VUi! z)=r)O$8#-Zd>5Z*G6OSX@g+fV_xF~=IoyT~^2v6>wNjw@Xchop%&faISjt}Kl_qXuIJQj{y zU^p^pA2b{I@T(=o9{i62!#iY>x<-GuNfO(J@(OEyq#d1yOSbJHHlL$Gr#46#LG&ip z(Gep8{9{S?Bal2=7N@1E_#c&yNM{=5yIbj^jYc{p>cPLC`pAS>SPLR0z5!bxif8wg ze}uWNN*P##Y1P+ch68|LBw(UToZ3;XOB^(C&BUOZTaA+Uiy6aPYRg+!;rH>_Srdy7E1p!dAa!~7x^Yffk#)Vp04g+)&@gYv zQ6VBpiB9aQIS+`7?CL5pZ1bmd@B0MWkaCp=M!n^%Na*_q2JP&TV2;e9vn&Wrx1rr? z{9BlThc(fgzT5FZ?Wg@bTL~6dqdKqE!LfkcHmIY6@hY_xVe|KvZK~lX>Y~PhsMbpw z*jKQJZcQct zv)bdDZBh)KcXP}V0HzE{Fq{ofpm^y={Xg@1Jx9!dajppWqe#t@o%c3a_U=S|SY-#} z!RB*~z&WmN^}f7AZyq>du6HsuoE~1N*Ak~#Qid`{nfhU*?p+gjc>33EI(`l3SGLlx zvy*E(@k#yiQIW>;ERIQsEL+FGWVcn_y>`RR&o7ViBWT=|qLDb21)~yQiULU`Bw>=crXtTfCBJd-C!lG;PL1Maa z9c+(Q``*f=xg5l>*{@Zvo{E7J@H06zjO)E_Nu$BfQgo_{tNQ#^mJaG8C zPwf-fG)Kp>i9`G?33-M9rPxfv{A9%G$5_q0it#kF*7|Q~OH8eKFE%xlUZs)%2>b}?nl~!u=VaBWDL2i%H8ot$??aR!NzUOmZAxq zP7W>nFi1X|a8a=W6G2QGF5S(mGvH*uqWSfZ@3FCvQi@rE>G1ZJnQ30Orzn7NF4|Z* zn`&qtH0mJXQ50o0ZoCiA;twn;U0PF4meTW&kqQ_kq!zpBmrhL)a(81}jd|VmG|l;a z|HfK)C075cIv*8V_azjRt*`IarSn96ZWMMGNTeph!W*38g2!2mon1*lC~60TF6Edi zNSd+v6chxLjAwm^vH|ma>Q&=n1y{D~{YSh<@@VZ^paZTs|G?n^HUMt3{5na!5E1a& zWAPoK*{!bZUl$_fY6R!QvXJ=KX-um80N+CWA4pumYIT_Tov=wz86B_&&oj)@?03OO zP95hA)e@>Pzr(#4&f0qWu!|>31;3v3Wu?|y!>dou4@V5fN5XL#cYvGtlgW2hybIx5J(QbH)^$F9U#BP^0|Ij!dJ z_6dwaAuLb3P@-v*d-5+wgJxu{EKQ}&`ugwwD+-ZaFW_;Jp+WFJzv{X`F%{u`W(jq) z(tn;n@w64;lqYc%*Ldi>`~Ti3fXpIK5&MKG-K}kvK}P~aAf~4Dhi)+@lE*{;peg_` zR-wLjl7>-g{+{Lzp76(4ilo3>dGd_x9j>;3^B`qA(uvw1nPGxM`{U8%(lXKUJX);K zHNrFneAPB-s`w(?Tu}qQu{Mt2IPk}UF<9QihGRJKZ~|oH(}#WE^J5|}BR;YAUI+d3 z>+D_@)oK3%l-SJyFJIw{V4BylWbAIU+{jhTyuYsdYDxl5x-IbDtQ}BSG1woS@_>pF zW&P1z>$Ho5F{6V1d{pI-))RNEAt;h{24yWAX_;N19-bS(U!Dn_JQ`&Ofm&!gBfJ8+1&YoYk$mQv^Z47RiN9C{(opov8anLr{WvIJ4!Boaj zF5ODFFm-qUH%@C3Qyq(C><@=4%j`ijA+CNE7FE=%E_dgL8j@ZOK>rq67t&k0b>*h_ z{Z4-yePighrZ41f^==RiTk%4eYu^*No{+{=wisOS1Q&JMUsrlvoL~V3F+>Wc)6&Je zp;C>W;3?d5`Dh!2JY@|_w*H199i|h=*D3as$Qa%?UkHB}gpmZ0dLbfOyVnC-o>Ez! zJ!DDn%o(r-c+*6C-n8;jV-V7YMOoJRt_Ilm@K3Ft$8MYW*Lc8t z*EX1_6BL3J5vixL9XsQANuiu4$eJI@VciQpVJC#e27qXXIsC4>7Lp_50h!zrUq%!m zM-(t>0(zyd+(oZp&o^4?pMh;dc@}k5op*QCpHN~wRVC!h>Zvnf@qi-ix~)N8(-0up znM=~+=$tpQjQXYBw`mqSt%yyTt7~+VLog5(b=rSM%9a?Y5sIB^dGH6VCLZ<4h{uDE zb@BKl!aV9d{N(Hg)*Hj!cAi-G$Mb`LGe>|DkGo(6h%@qaws;*GZS2~XIOI1}`HVnd z2|mYr41anM(P%niChk^b0UNObelF_`YED)T3q!B@SH`8+e^zWLd<5ZUiI!$2M{n zT}}i&4YYyYBz|_04k` zC*Zn_yi`?M4PIFlU`G7!yw~uMNIwZ?fYzq4z&q%J8R|1G+j@KWWf1St5?}0dhgXI) z(c}@Q`Ni(5itJACm`25um0odgA@g~FKc42-$w{b=!lz)$zD~hVSZZFzl)Joj5056W z?QybY%TburjSZbMRnMVftjkh+9ZuE8`xs$SM{COFGmxx)K>-ks$qC+#W8G(M~9i7Z|sivF5{sv0%iWS%9D`fsP- zZe63u%}T(l2_l`{qgT*4tMc)z9#gWx4kIav0?zQzK_|1UBCE1|vwb003m6oGlJ+Te zTXYJm6nJUb{@*1m;~-ihPm<(0%(Difp%PEWDf4U8dlaCjd&}BY1Ih%X=Xh-}-)q)9 zLES#52%C9GE);G{!Ei}k&f^_D`>4vNZknBK&(?hc*7rE&E52cZC&Z`i^B!^FW{)y8)xEqoqVVgF_7~$=d3*+Fy1C{ z%BPYutQn~xx%?*8+Jp!ju#L!=)4B`JcxLZ>8KerRw5>-?T|;~H#%SrFEq~G9KcfXp z`se%f&P9$T9bFk+mhRH4k~JN<8a$w40>pT~0XF=VO31Nw*vZ+_!>)Y6KeyD(@}W%x zz(^r{fsNiQbZEKa;r9^w^_BT(!6v*1E4YUW zN%+PVMDEO>ZFyb#Z3$|oQjNtmz2t+XQeJ20Rx|kqm41%@YN5P7P4;A+&u%J|qbe7%hJ$Nx_|!o`w;a* zfY#$RT$Q`EUSL8bYks6Uyx#geT^3M(yf6Qq^jv+h1>F8Dr&%!R0`_gg&JT-8gOHsvIaa zvT>ukWk}H3D)5Sg;70l|@JUeG2n_FiYquL0WYM*xZH5WyA!DzOa zg+c17vxim`v>1+&{%4>o97QSXCfQZ6*Nc=&xaZ<7((@5%bDqEQ;i1MetvJQAkNqr4 z`i<7LeB{d&Z;OvUOA4UvDSNt-TybR*yBWqWHM?178vyi`4TCgr7pQNPV7!=YJ^PE) zJft)KwktTq@3-N}$+(aCw9+|1x#!5|CVE7kUPeUIu@|# z;qNOjlh2lzW`%j#H!G8%#&aQLT{Iyhr$4GYdNP+EK_(UkjOt#Qm4o&Ib_+8=7DAD(5hOztMW;*gtPQ zV-Pzul;no?hE2fZd|{({U8CAc`H&DYYbtsO{M$phxW7iJfIw6#i2PgGI$|=8W!S`ioO)>?W(3`jB{V; zT9(>bKm9MK=kr&En*ei`Euh7xS(dTh^P{{AOh`pm+jPV`Em|tIg3nL=nbCy+sLK4g zHi1_w_+J?Q)njtXc$RuETR(00~@cC4E0ACQ8Y z;Juj)htWIP&VicbKyFa4uz3i&&6eQ5s8Y*M!zpvc@;N*72FqWJZGYi{G=gRaKBt91 zst+ylGIEwX@T`ITlI~>Hrs9wH(!#^g(mL3#hc30V8@I5}2ykSSoP?wiJ)S9W<8a55 zu8e}s8w=RV_U>6DOaVm@TLuIysWO5ErVF``8?e`qGT_tju+wz!Ujf9z&X;`=niQJi z{^vCWcvzsW_J7rbL>^XOQplB0YSfNWPk|46`rNE_UksgTn2IFN{wamE!m2A&epsPS z0w4LW-JH9p{x)_`7P4{C_(0Rt=WRf#kZ*l;Db1|U-xI(~V{xHX!F_}JEd@yLw=@>6safgY7)uvl=)g=S z!QYcEp9mn!!4f+pYgCyPc?k$v2(LRKphdRZp+BrURR4Y<~GO``xn7@`> zkQap13CFaxTAVJm;U1=G-3*IA|KyOZj#Yf2+cE9!p_OA-0z-jmN6&ef)G7^$HPnZ_~zLK^E#Z;@0 z&+|v`enuU~EZ?cRx_*8$%>NodiVVoDe2b1d;PHi1%V;dUFt~w{BI0VbbH3RfFIZgV zE5GRZu1AZd?_KAN8~$=PP&N8aAM$aJv(<4 zqh;lXK>>4SaS7P%6c=0QY)hYL?{SRHg**>dd_p`G|64K1A0<}9E zI!_|!f_j&sLtw|1o9G^O1S*e++mkNj< zNogWm{5x&>uQRUQFn^V2YCk)=smzLR_!vyU7@2dD(bIH1FRXD-{j@JLioOX_Ny6K- z6uv2ao=SeI4G(D|Jo$<_!n0SMn0a(piR&pTE1`@;(clTaG_IZ|1o??dott_+B! zIDVXKf~}mbN&nc)&g{(Jp8+Qm#>o!FGmxo7!n48Pjc_>P=$$|gd88Ox-SukiZw^DB znX;OU!%G>$_JpCSRNnFA2R)QM+Q+O}-;N#|ALqNes}j9`%Msv5A{Bz1^rk@N(bOu8 z2ovWQT1P0aF;So4<>6kG;GFl5gSDtE(NK00XNm;&2sZev;=>YyP+ivge3H#}nWK^I zm)3z2m(Zvpk(q1G-xneIREc|5-}!?bcBHjOHASCU678NyOBN~PpKgIS`(%EyuM3l= zlupXiT5n*~1oI$**?ONM2X?HFWG+n-v*0wjq|9LgN~-DIV+DX-xDiWWqnc(7I~5Dny9F9Ua_qAchbtnMu-dPEL?0d@Hs0ZSAhb#TT+T9n7(Wmv+}Lwh$i` z_!)&oR`M_XSOi;}jM$v_;93iVD7M@4pD;<#oD!WM{5`k19eDD6NoL{I|FOEerU6|6d~F&DJCA+Q=VXwH&tF#-W68;?4= zCLq}7sP5)R+)f}1v;8ZMfmcyOZ;#7Y?{0)iwIWQeE*vkzw*(3RDicJ`wWV@f3VEQ{ z&=2+7euR6%&B{F^+15K(p6l`Ax>`lw; z(8dc4kHW8@>hd`OYPseYh^}oH-iHWUCYew|Iq?Rxim>kF7 zEcH98%TG`|3mU8b6m+z3=nL_=$eeD9?csHP0>=$6ixgNG)9dN-uyx}J40yUxcpV8h z7eCm+5_w9wS`c+<^Ak@fjrbbhQ&HJ6P4xo{{*jtK78u0KtEgk1zeMpvnplggWh_`N zR?*v~ac^bG|5~z2Cac0mc1msL7>wI63Wu$>xc~Xb{J-zk7ivY3Opj!Pu}{oSM5x9! zH(ZI|$33~b2|y0oUS;~J!5*V!^T<1;<(&xKWv{(L!qw2=8z8JjI&2&}N|l=8xm{I?R9ubu@OHsjcrT#`$xSJm+$Ba-!xK5-^R**CR&q}2j0A+QrL?zq-Odgyz99m z{)w^Jj5vGd`7o4#!$U;VB;e9y@7iUd6xVL|?i*K)Ud018nY40Qjo(xJCsi{#^K3vUfSckN#Ej8sQc4?@AyetjBn z8e}V+*I8eD?0YU#_ z0~ZWUL}V8LA!oB18utO!fTW=ahy_4%_V08UFa~YY$}ctP)`CShv?I!}6fIkEj^jMS zI2Eg<39|$YeH-g_Py``a!@a(@lqQu%M5?`?ID&g8$VJ{9YA+{Zu>P_rSXDjp%eZC3 z=QP4Ku^D1u4-=0~r&?yXc(z-1oli)+?*oZRjnN5+j;(cE+a*kolNc}A%ewFnzZwwd zLF&y|%o=Tqji?2W6_l`Q@&#O7d?`XT&q%q6hvr^Cl^mze;%aNv(A?7&a%opet5`bC zn+ZL46V_dR;$JOS5Vr&CHf~f?q`GH`nmIuyH4A+jib~m*^9w)CR%sG11HP=73w8h) zwMiQ-IaB~3JJb8&Nl^U_3p3mb{a!D%p1Eq zL6%|GzNJV-d8Hu(!wv=JKozF2!&rwpTTrTNDYax@{6J7k0gqfAY7HiqTXxmGy5+&>F7j5pM14!15SSiLTsqm+~DX@&$ScITq zh}1f`DxzeQU`Wa^l7(veqcU?tfUNE*Sfm~lBl2Vg5cF!x0Q(6;TN}DR=&1A0C-0#s z?3VzujkkMi5jnNvm=rxW#>^4ou=x5U_16JDzg}Fy{h*+>9KKM>o zm=V;<2)H}(Jm)e_%kAl!zKE;a^YTB^Bc6Ea@iA(X)NCm=RRgP1)DXj^lAfT>&H~QF zS<`Vx#RIS(u-!D?Bk*ux*CQ4(a`~`NAN2?Ggk~vGW_J%&*NR8%K7?${pkdYEW2f!_ z7JKOW?|sB(O3an>?`J+n(BD%aeY5usvdO8q&Kp5Dtm4M{p3&yg{)%FeWE%U>j zU%W_r7ImsXcd~I1m#(^_FrELyZVLSBSZN3^7L#rsI zxys{lKFH1h_@2#oQWGVes{qr;@zgOsRLimt#WydX%@bD~Fm2H|`0ehcGU$t0rFhd zD^ta0$XoZn;<5Sr1xRt91Lxr7$)^cm_VKow2VV@O1_^97V+Bi?v>mDL@`5nFL7X(Y zUj-;6;DN{9rVX`SgzMB%eny`p+K3!&-TVCWa#*E?q4OlEzL8^hRRfcyK$Hh2R&cgB zTB)TdDVAih3xH*#Z8h-I-2ZQ|(zrkWK5L*Sq@9|VYO>6~4c=QKf$)*K%dL_(9bcfo z2}l(c{1hk~+njKDJ>jZN{)3coCjkn$os+xjCLk30bb46n=X=kB_Y}9ARjns$tU}7f zx^h#RR?qt6$pDnd87>8r+%E?Q{U5$Zr+3J+KwgeQ@das`f1(ExniF+V&pYfpL_xt* zVZ+5c*&Ks|h~=6$A=gfnk`g%i3}$;Gs3HrM^iEYm3foM5cI?q;BK&MoWu0M?BVmdi z9?ev@|evF z8IBK-2Nvi=Lqr>V6d4WviF8^c3}3MES0l9W4jw<yT=X>IMy3T9h>E5U`9tf&W!dI(tVSQaadzdsca6%9gdSf zk2kFig2LI5VxYa{bt?^%qN`~C@hQB*HT8pJM6Tv8Q|(A+R8O2xH#g z!GN>@Xo39cW(o^f;1M1{kIA5BBZa`dhqsw%h;QZ8Ti#V*Z-@bg5!rGp;Sizx&$W$Q z1Y>#*E`JQpNDQmalR{PfGMbez6G~?jR2(tcvV!nPuPL0 zowUkfc+p6OKF>S>x<^X+ifJduLo3zTT7(VpU6~DIB)EVi`};K9A=oQ(4f;C^Ri& zhUB?G#j4%W4;;d}uO6Cohub%E4I979;&SI;*s@;8GcBj3lGmqYQT%0K1`B$lfgb<1 zJ$tJ<_s?$xlNB}lhrIj-?Xw3BLrZ|I$1{w8$-#o>rqvd?Fw;7B?AGancT@dq3t@t# zOv3T^!E`faLG%AFlyz+jA<)Q^W4v!4FF)OsV8QD(iDQ*rA00d-!MEgUMO!I0nM3GN zag-LCY6)POdg5~c%tb$ODOj4@X048L1?>>m?@NXqBWf`Jn;cy4&;q&(#04BQFR>QJ z_}}2L{M3$XNWY`tp98a~08@g9>p|T?HP|xWjbtm63HgpkJD_xDB$H938l6EI%~r)Y zgT=PfZrykQRweLOh+8#uI1Y3^pq$^hV6swX8<hM9MDrryZ;K8wBGO4ig7nXooM_=bz^Cqei}p;B7BkokTJ8DbvfR{tpq& zJ^{-pN|!T8HQ&0{uXx9A zt)}r3GtL-J=dMAD4CH7dWrinRvm$VAh;~H(VbB&2rvu(X6v;7+2sAS)n)&_~YPA_# zMG@m?$>hR{U2`BQ?SYw1{6%y=#el(S_<~?pHS^l`CQsxLhV(y}(M|3ZoJ564(djMl zqEWN8m9MMc1Rxf1!og1&Bl-X;^7~>ohpFXu>p@k z@qLg5SKZSw=|<|-zH;| zvWh%z{OPxH=GZj7L>aGsFIh|)Z$k+l^il4)k;k3r9t5tbc-EQ|NZo`PSbq?5tl3aP zDhDstg&#XlB1HQ!fB~_xqd0|r*wC$98CvAU%vrTqlJU}|yW4}6VuKbvMl;Bf2Unx- zggPF$?}=ZEmB=o8l{Y9wL5T-EpB?PW1_%%9-s5TXf*?{f z1V!<>BU8p>L^{;|CXlT&X^nhQQ~%=ZC^Cgwm|le)+EPxtKW@l6b|;qoS#64?)C)&? z$zv+}YJWKuXS*Y@-F!7?xN1Tkn}G#|o)@eLhWl^`SKq(sc*qInw1Q-yRdQUDIVwbq zq(y0hJV#_TPNDg!XEgWM3D3+U;~uD>ArQ82z67*>lYiu+FiOXw?{Lohd2>5c8syKw zh!J`<+oAs6A(^#xG7k4m=*Y^!;vV(F2~wVw0wTB?V9cL${hC$rS~Q znC5{mI}qMf&M!sFWD`i3=PIBlW0)fh;`N>SKu`>ROMn^o=*Ox#MTP41G~4@XzaByODso*v9A*A3 z5Sc8VX+7XOREo2I4jno^1Vlx8f`Kc^*eH>(ji&Kwj!1s=Tx+rshRDY3C0LUY<<#=0 zw? zvTjmTGGGWWg?H8B3*EwQt6e@bS_he9R39?NW$ACm!tV3v#M7esd-x=a<~KQEywD1n z8^OP8sP$|f-40Jxk$3pR!*BMal?T4Oc=u2CzJ~V>02JkR)0N)N+vR?9uGGDOY@Ka5 z+=iPrO#^Q`F>cD0GSNw20q!vV@tSkpV7Y4vxrq0`fBp9#Uj*dp5vnXZ8^TebW_=qX zT2yMZ5Q8FRSC3~7)f^AAlZYc!6IlD&7R%G9YIk6FiF^pCMr<_^W|LFuQQGUw*0q4`_Lhlv$lCWV%PDKIQL}LC{OmHsX$}YJS4-M8@Km z)_r_04w~v-u`XEMFzQq|c^3)*b(paoyiU`B5TWDN6QT z>pO;ou7vBvNS#9|1S3>1lzPRvdOT*^ya3JWFa%|zWazlOb;eM&vswic0E^$k6fz=b z@%MkL^Px?$OSqWtODa88zjpMRap$Z8f4dDeZPDLYr@xA86N&_Eh*UEIOl_GSlcAK; z1t2(1t?NVhx3Zm6}hC&%1@^I{WgLFCYe2J0vqs)6wJ7aE0DIl{!a}dIA@{~tuS{a+`%C4t10*YW zk2SHo0Aqz5{C_98+Xo|Go(V5b4x`?jyU%%8f~8yVkKS{~V8c{=sA)%W6Fxe@7k!HW zch0}Ekmt{P&bTd?s{AOJr2dC6LrH`|f7Km~U!3st=MIbg+Tm#fiJT2F_5%Oih()$E zbyScQ0|t23JlAyttry#&{bB01Q?^AgHZWV60}%S&MtN@~{YS3I$BHnWLh1R`dN7gD zjh`#`kD|b3)j)O@cyWge(!)=P9^=JD8yT2{-LlUs?Eqp%pqqQm%8A>2=ufOJ`DI3I*i4g`43kUtd)sB zE7@4vI?(SiyJV{Fdd^t%@syX1F7aw&;{_NwP0J%^3+r}~CholUxKPT8X6PF%_VjiD zEns3k<#4v{&sJK@LBYhNb&bw%%Bt_b#4r)U?a!cx8BtKt!^=gIf{-45xf{4!)`}ZL z0N{VbyyiwrG4|=5*jM&O>f_!J-Uo6rU4XMR_}my#v0;QtFpXAmJ8C+qIh+og*%W~N z$QVd%=Cgh^tGMg!*S#Y!B%it7NO|(m4H%5lHkNqIX-mENAOn|`5}*Gpp>&PXK%SNDRR zp}8_bP84{sP~r%aK{+*N!iVi^oqY6QBXus$73VnWH@^8kX&;SYG4c@bl7aw$w`jzH z_Rqu8TraH_m1nQ^UG$KA=d0F67k>xUy0j^jgtPB@Y%1-e$Zt?h0zo9iO`u1>(Lj z9iM3BcrO1mKivW39JH?tZ;UMHw!B+WU#KLnhxs3uBc&1w#vsV!Lohu_Rap|KoUm=3 zl$CZw%m30)&;GH0sB+SKmlI=83tfW{FGm|asZf|JEozgL=xh>O1T3$42hbtswf{i%6ki08aA)@j~0sBK1wp>+N`BaJQTkpNXpo9@8b z2API?weDdpDY=jf-AUfhM0W0}UY9LRDs7ZYy)&_Cry`KeVS6<%4!AwVON+w52+vsm zZzzqBD)QLRWyH|(qNv6M{aq#M<-OLT*RL*9T&#w>5;zyL(gY&2BcIq=3o~z&3+rcLGwk~%FAKwGcYUaLiO=0ynjE+ zqSc6!_a)vuuwI|678{!=R$&E!ZfB7Pm#}1tj7be!I+DcG0w_7CJI@bJi-#1uTNm?| z9_11@u`wWK0zg*^2OMjBj;(yCLOPN6bK+rqO@AT5gQLx$F*b?M26F@(WzEJgf~QL_ z7&@ydi$r~4E#{)2I57&fyS?{%ucHAS?wn$syrxFrIP~8vKa*bM%<^SU6Fd=gr|t2G z22Ort3oWSV#GA=yOZUT~-bt$5i@>cG7dxd?#7FxJn)Ev;JCa}O$!CaK|AJgLorN`( zvVaK0+L%=Y4e^rrnds`GPczA%qX6USC!ZfsC?t312^`@*BN{$YiwDS~ThF`AaSfR2 zkQQE{a&Ef$ayVB&9YYnJX?_hUnraUGF+_ED^C3P)rX!l(o&fQ1ffVT)9^q;GqRi~5 zUL~|o{7@L*hVk)QfmXP7aC%gys5LC@1MLF!fP?4NSn4cyan$^mzS>?6DMcd4wF>N@O2GEgPOz zK@@*<(`j;73Cq5}2pxxcQrd+JCe#`Mk9vKgeJhsitpC zX}5>m5nYqqi)c3XW>t1MrN?4sJKTDZOZ1Vdnuo+@$wn8@ORIVzPp=y)?BzZ? zqy%;FXgj(LaG0hT-?`h*=r)7q&i-gE+~i~0cjjTSq)&YeSe7#n)wwKrBPp)IOJuaL z3*n}2v|^LUSaI5;?XjY;ee7Hy$mcfi6PTB;Wt|sRUs6&r5NF-R+{lnz8f84Idhf#; zEw9Y1nIp12K%Q}F;(C*e(u!RvXd)426S=|fTP{=BNwo1f%{`>1lAkBpdn^G$q!v%+w8L@jY4+z(MtEOH7x!)#4zL;bNaq< z`lKXFV`Jr&0Z>#?ge8kn> zwO~&~_UuBmoZw>X>oHfJ8%OSSXr#oyrvh{=DD&$vKGTZf8;f;0RAhX>X}03t*d@11 zEYevNZg=|k>p`$pZ6tLMEIHZ=btsz{Gf4Cr+9lPYpbCzDh_M*`;#6p@h%Fvitj~#- z{S%e+ZJad9Akh|#vo6_1xdC4IZVLydctp}5jI0KYBYhlbt#*UPeYW`%W&1?Fra?WW zcSvLVO~Efw?30ZuBZ7qy6DbpS=YL#IWX;kz}AL6j!a}@|RJEk@7 zGBK;aSI`1i7S<{m_lw5gOsx5js`+4FvIR%Rq@Jap@fHnKQWY``itrN{CHMQb9}D6PG%QeQih6`Fbhhl-npK$ZWrnCTTF>Bx_1%bClUai3_Aw=_H3H|0~+pUIul zRuBzNk_sHBFl5`BA1v2~5DmPyf7o1u9|SNF3Vuy8k?wEzuU$FSHfT0oAw8aL*Hw$^ zEm-;?-f*#kt{eQWOB_WYIZ!M8rg(Vf>&E}$W3^r(Myny{9wuFo=z|4K(JOedsdYe< zh>7br3g}7yAt9oM^yR0QFUxdzKq51VFA)pTEUnLDr8y{`?4*!H3Ii7G02E3*D0X{1 zoXXs+87$2Uag=5o-lL4774J&d@Bn-px|>86|#0= zu}u|D#VX336ISeV?$&ZPta2*MSh-4SQOOEO7}HC#wu{Y79WuE)+MSpB)#u^1;W;5c z4i6rb*^fl~WZNkiERH$v!bX>0WUlaQIWEb_P_(Re_|U~(06um*HO3Cjac?>X z;LcwG;|DLtmCY(euP)JU{qMj^qEKKznQ;>^R1!u`&{drI{Zk9OSP{=i6Sqq3^LLK= z&g#;2a=sp^{qqCO475Bcs465sg#OipD#Z=x-jv>$>oux`(5seaVZ_=C?AVyBSa&W& zsoKd0_@S1lQf(UGiKFLyma4$EzWD}8Xh?fDTNhxpp@H~rFq^kTV=SJ0 zZlng60He=s&+Utb)YKxml!s#3bZvG=bXavnGO$DA@3j;0kLNChCE5egfH`E`D=g}o z97xt|8kX=j&{Xkpe*RG2y3hzU)NjfOS+D#RM6EIl+j4X#%2A7*-B2LCE))WOnn@EeI1o@R(;TPQrk&V5A zoun{mMy@IKV}^MFV?0=4B-|&rw0+5fU&(+cp?OxKT_>K1?N+%geEXruGgPq7P!a%- z*n(hRsqaqV+ zqq(eI)(+49>y9o-fiW15RZ0_<#U8E<$Jw53(bF(Ut(cF)tQ+s6dry?J?#P?T09 zLL&#Flu^pu&>S|csYM@1#YI+7;os@>)`!J`C1r%$o|8qGgTKePuGfPEKB>@YVb(Xhxo1<;7F8aWeJC@|fEAqj0Ysc=Jq8NdkTVLH2R~UQyDq7G5N8-S(ih>ALnY5lb0imt~I4 z&#Bf+GR#)WE@(cS4-jR>0}ef}aQ&(u>#uX13!<80wo@g4fja*eYkD8(NMSHTH9KmwmrdP!wF!g5;Dka@z#c#TfST{b!3h;fz{CbGr+FpMMEgoGz8#Z(Azm~a# z7?*Q30+#}-u^thgQ@ji;EOs45SaKX8+OHEp{OV=$-_uMkvKF?nd7nASs7vK>>*PtlpJZk~qTw;_=1cc;d zy+05%?)1;Pe4#}=R+wI`!MmtwkcGl&M4cE31qK@Vh}_;8`Jxyan)zdjgIRb{4FU)T zZlyP=C}u>e7|b(O6y=8F-K3vWcCNH+4ZwDUo(AVN9wAC>vqO&V z<_5bldt)9?v$GYce{k~wacqxY+P%^ml;>GVU*euTy%SxmB3xNm&g>^KuBeAOKDQNE z&%=6hK>}iwLNl?!7h1Ij04PmM>TkQ*aU5hbrp-ps7HmQ#5N^dU>5y`C4VV)x5oe&; zs@%3+)FXnNqBJ1g$`}o*xv5$ch9LQ_$p>NOL@YvhK0Kohk`LG_s6If)IHDiB$vOB< z8EL};A~FOC+72AeNB`}Fe`c@flypz@8Juq?PK)%`aiEJMQ+xa7)UTc!?jAdj_Vneh z7~6Cxn~a&&zrNLyPVtzb-CG4?9F%tNEV~USDeVn|bXmjv30)vC51_yb564NBnjUqh zbWx7^1$r{85p3k;qr~*hqm7Lz*S%iUFc@G*-)}iM@bI=b9d%t{sqN_b2J-Ww;TZ7A zNFrMfK+RbETfX;SbXWS3SthFRYD>!y^hDq2=V`qSd$=qeZ%+pwl2hHQ2dm0ANDYw> zPO+2P_p3dMuQ^ozJ+@zjh2RvqjPW1xRBY~rM`roz&YS=J4=NTtq1wvnmO_p-jzs!H zJG`ZcV~syfk5jE0Ptz_ClNVL+tU|CMA_ezoYUohL$Q_$S_ABf6Cmgv?$f^?_4|49ECh|xdp4! z;1A+QWDVq&r4XH=hV>CnQBsbXUhR-dk3c1C$TlhaXzs4X^Nw~p2w|1oNs9WBJZ>a( zLvNBLU@k_DDRSm$@|ib*J^CQqgTipnu@5K13bCO<5d|Mtw#cpoM8wqXNSQ)4!IO{-Xqevn#Z|* zHgQ62|0It;frCSQ0T}ti_tN;AgLM2poi>x*&W^X&pabzcMUiQoiJ<%cY%>pcr$a-} zrqc2xf3~|+yVHlt=s3iuN*pv`^zYASOf8=~-zgnvh7;Vxh=9}1-bJUpXgtwR)#O@v zr4{%6DD31?f#Jd)-u3(?&SlY2KV5SgXQ3FLE6kxev9&;AWe;EY&LyjN_NqScgL8_^_z}rDVamV=g z)Du$KSU8Jh4kqiSbsf_U1y|QCQ5e(zd-ullQgJrEW$h^vUvg7@c7XXEn&1D7>=5-1 z)6eesQo7)(HH6VH9E5Kfe0O9Ld|4`f}y-@W!2@}xhbw+H$1D>LUaT|z;~&dtR4 z?YdIA!Oni0+BO6>ju4u00k^ODZ$*02HndxeVCT(#qkVNE>!u%35X$lavD2MV->R}a zxN`6I@FvY|aaFFQm7~&@kmNBM7gWoiDN<;rybOD^D*zU5>d{Vz=7XWUti`-c^=6v5 z8nPu#kRC{T6A`9FXSYYA3^04Vd=xf+RFlm7&dPn1yckFL=%!5v>l<`zQ>%*3&x%bq z9v3p7Y03+=P-V;GDlzc7J40Nbbw_&r$B84N1IHdl{?XTX%cb>yQ0%F4dHsT?M&cAB zH`7N}!8}*sqSi2oTI=pg!Og!85qt2`x8P=FTW3btq?$zR*W&sU;f0%pW0?cVT0>Iat>y->5CR2qilvWNy{ zyFsUOq4!BXF1GT=fF=>mM#_Z6Z294L_S(l}N0#?ube@%RCOd1MCb(V2aJz*g5s84z zh7~H=^a*WXB(jA~1iy&Jy%w*&y*jGDCt%z;P1oifc;=Ala^PIGW~jmW1pUA(R9vkN z_y0K|{FZ?)d*B7Qo7*QwYX&@Rr1C6k_*wr9BiXh1uq8^Q_1btvN|)@Vkb2GD-RPOw z@7QxF_lchK8x2k=TG?Jb)$MWLCtI7B}WAJ5gm32!_y>h9Rz6t;1xjFPj zWl;9$1B4Vl#z?@@WTUcYQR`jp3<#?*uby`4tZG_@ZKl^I6`1?R#YqMDe@3wAND>-U zYw)tV)t0qcLSp^sXsJ6$rCqh`>b7d5v3llnB6Mj`es4}qgU4alo}|aE>X&-|8cfU(9BpRS;8t2#RLy%3sfzji<=FkEM}`Pl4Ys)@usqFZZ6nTL-qyUoi6=%;4dpLqik*ojiz+1Fw+)9t4Xc3IiYTCf z*mD^9$EW5eH2#1%vs4;;PDqA290O&a@IY#6FlZCtLOyXdX#i=%>LboZbMf%#+x6$O z+QThF0Pq!hh5?B(ZU>~*E5pRlSz1kr$AZUZers5^IXEzMnQ>ckXY7~a(Xoaje`Ojv&?U{-HgR|0QxH`an#t*Aj*R) z?sQpknmRZaYt4StxG>PJK^hc?taZod!6KugpowP$=_1;MRoh)j2}=7@V@miqJ~2;f zn3Nz(qjC$iJs+QRL-@hUKNwsUrNb!oJr8w4gVelIbwfgDYcNEe)@)25$}m_arm1J& z3mOLYbmyuEK5hQmSrW{&o~ciMk)Ft8j9fzj?6H-Xjl;KO<=x@uUso@t?*;&I7r&Uw zTkTXS_YIgDxYYnrZt z+v$8Yk%>lP`17)+;sI;zxG%{qqUP1UH_j}s!3fw55Mrjn zXLDH7^9Oq`+VQZR=`AOHOS+}JjblM`a~(pu_d0Zl=bH+9e)c|BO<1U>JX^bCsR+?! z>5~_G`hEqLXXibBY~@mIfdBk%nRlDZdrClpg$vaU&{ z?R5BnNn)CMX`I1SHu0zU+J~KNgiGl{$J%xV@iCk`*wGCJsT-m=b3Uq;m5@#)A+N{) zac|c3!|_9}-jRyn`V!?LIl>aUQAS@w!w4Ilz{90>1dGf)>c83UCVH*FpSt%?$FdSi zgMw`pL=Omy^(Aj~Cj~{2J*;ht21tx;j$cDcfe40*Uypn8bNVzF6UhjWsX5jKFzI!! ze1G}HU0(x$(g0ZCF0h2&AMfI7ND>guxr_V7Ow0Tmk5nR0Wu2lK zf#!{43PSB55PZyKr(zo4>*dH#9n{zyZ??2rd>&U*8rFus!-pZ-Ad{*%?Gs%u#JfyRE$bT@`FkSl0a!HI<@u6@>91})jz z;cZ%X`k`-n`C!tq!(zR^QHjefn;@s2+Ug0$G?(8=A9g1TFl=e~L5QHj zVfQcdmc8O{Ms0~3t5-^KY82s>L_iwJc&g|`_#hJ3=&_~umeHA!icWHKeatV9@Upem z!xF{=0c)+KmJGzSAc-{DbZ@1Qau=nA_)EYmZuQzj^3BDwSh8S@JGI@yilBX2_li#h z(NW$82pi;|BgcD({u8I!u4=Ek>P?;Z9h1ind5#+O-<0Lzgz~_4plQdu zI{@XwPGFe2dOd3E4IkCp!Xs0ZJPWpnIF`6iLuc0ZK3yQ-y-dAwsoL4CCKYznH`C+= z3*q+t$-4>`5(R)8jfIu3?Nojx1ggv&jqw!k%!Gqpup@MkAcwiH=xhFbOW$t}GHDlgX4KMG|nM){@!QakzGjTnRwASLdN1~_uuC~CHf32s5>Jz_K zWd!3F2ZjrNvl(wS?-zuABPB{=SbV^@fD&jD`duN(bKHUmY|s=eW(40 zVPDD(T@){j8|DWGZWif@@sbG{VyNG9)!5bc`Qn*LLF?Eu#AxOzd`8`JmV086ut%?Q z)AN_-CZ*dSy-u>JROJ_UW2;qve2SKhTK=|+p7%Qks+P--(B@4M{giKD*|k&MS}pH7 zTDK6>a_f|llwK-8yfgv5)wLyZS=}U2+|EOY+9(gHpHZ`f}MUE-?I1@7dg( z$jAPDCy76z5*N~md8IJzRvA$t>>s0h+;GsYXz$erna;;|kRzRnf2M1Yn~GLok2j_M zo+$t;SIWRab?TUuaG!m;Zz*gfu~%(AVFIcq%w1jCnvK}Rp}%wLdF_H9z|(hvlVJ0w zC5wqJFQcyIL1PK836pCt1qrZ{41ck@W@GOIl4f$1ynp28z?i}}FtiQbMM~MZOUadb zPjd0-osNI-L++`)vtV6~r423Mqm<6zq3QPlS4|g>xr3hG($dj4q-Y;=L20$#vOg9! zX8|3}+;ISNtt>AremQ?*Tl}#Co&Z zPMsfV*XWY=-qj)nMU z)&g~*w$E^J=Klaaw{#jTlOZ{o_?ohaoXQN6Qg*T8W92d7Ar)8FWl7?u@kzBNS4(9# z_t)s#8nbukmy6owmnadZRtQ3P+TPW}Qg~+b8n<05WGgvo{Fv75GLPOF~8r|^O zW8IGsHR-k$AamTZgKvyvv)%?b*{I|AF&!q{YAl#^Ui`1m;g9gbg;=CQl&pyeZuPUf z3_s<-Q|&8*4M>U$C4^>Da%@U5!GMHQHomSuf;DtzFvZTEV^ZK6 zakbOFyO1P*nJ0fcH1Co-&rIcww`Aj8G5n*TOV^z}L|PL9Qd|E7u-8PgbUiqAX2kwk zun!U}UIv_^mgC3Eeoq}3R(pll2kVE2cV>cj? z2FO;JeRVz!Ezx@+4|AyvyQh3;A+(gECO#dJq3zoil6=LC&P~EpCuu{BczBBnXzay#Z39akpCrg&loE6_QWX$bHiAPsna}f~n<>=ot*6LDU8=vn9ojyExnm8|`KC z8p$C4`5v!Q08!=1R?~ifC#IrB;_jO7Is`zIPgjn!8^uI6CC@$6dxItdhV6FmIUx35 z4iiaq-*^ctWQ`+rJUpCgw@)>6CG8km)Op39sYDgV6axK*(7DpkON<~<5j(=`@Lj_9S)D^Mz$4mH7xW4xMMUVoI));_57Yf@v{7NET{_j zBaJPbVp*&R;_1v|k9+uh<)63RPUgBabSmj!?|`!}&sskEN;x|*j@q-STcT%jvCgb# zI}0CuAJCN9Gbn=lc3luU|P0@ypAO3FT-SU4A=ZT9@xD zfxL$l5{k-0t|vqyi_&Z62ln&F98VU3TTt}$)kD0EivV&vF#y^8EP^yVni$P%6Qr-f zgG1D$)S{1;)M~J$r}%lSUs4uMN;}Z2kX(VY_DIrs5KPGwg}xG!?EJtz6E^6pEEv?Y z`Z!O$cO(pHW{m;Bo_&XbJ~KAS%GX`sv2nEUBhn%cBib{MJqNRw5IWq*DXe_f_*2G^G)fzfsDh6cD~!@uNh;EvS1LIcXs zKhocxW|?zTSrr@Y#z2eZ#@_rtZ7V37JM1Q>fW17Q_zl#GZt?2{L=$Exa;v6Evn)@z z8|3w9R2cupj1q^%oON5WvHjav@BGIJY(}WL`lL&$UxsK((*15dYS7_2BqsAN>d6#u zThHQOZ}mueWo@m-Hl4XP^Z;hK&#NW!tIRpa!y|Q%rnG>}0OWz?ke`#LL}2bWNw4>z zheLUb+aJZ5Klcw9qd&Ap)`zhF)@sh0d{Sj8K2Tf% zcGc|GLK1LvQP923tOZ+G@5o}>2yj-u>v4{W15{IT<3pIf=zWDxv&)c;2pgQ37RW&d!3OLF#M*>4UX87kSq(`~vV}&VUMn~mTA*H){ zEeLB0k3pC3e_Y!XDNR6W)bTf`;~^4}!BGvoM!B0rHq_RE&x`lY@tZlL?%9-NeA6dF zuUK8Pp1zP6B2iDS8+tXKVJp0Vwkudfu0_DXO2o_Wlen5m-#(}CmoDOaPSPylmb->2 z+zo<&(I+8V^ceisiA)Q&4h4kxyReoS*V#JTX>QF?N0e$4LPvfrE+%e_f;v#k$Bw znO&QQniUl|{3)nlGKSz0g`U|YocC)oZhW4>tx}$VTb4F&{=C4ZYP1L`uC7u0Z1k~c#I@LFaZ0`jL(Xv<*v(9a8Mus%3|7DaF zF+D&$m5Q~&+8vX-y~oavFv16#ou~x0X243klH2HbAeU6Sp!H8Wx2HPh-yWzjv7<_E zt@c`sbuT(|(>|BSoErLjRH00~d{{vvxh)JWp8TS*3Xxsw8@$%9oEL4*99TxSn`P)0 z>9FxgKFmp~C@~Ax@IODMRCVB$>69)weWJMGlD1DUugiXBnvsurF&*oI^YLBai`+Th z)<@e;a<<&x5Zm}mO&hpA>(zib>*hv@dJ+u4YinwI{)t z!@$n?85&QBzc$rnvySa@`^eS3c0(PheZvb;bo2JN&u!Y2)KXy>NS`u?A|$H`;G;jTKYy z!2rP)#TXe0igE_bN8pXakgd{;J9Wmj21sXZBW;+7pV)9$)*L|R8is!ca*?&hP6hR+ zpY1e6gWfSqoZqj*$*>9?vQf4*MbRGr?Lm-G!-1tuyPNHeT-abJnjS$dBCgb*LDm!IosqNu<$KPsWz^&^@2rfx!!q#Oo7dWu>Xc$&i83HR&?gLKDw_%D|f% z$PoiUw!ST)(gQh))HztmU0Ko=I4)4B>O;HJAQD-CG_Z3jlk5lcBA@vWIT@7 z-$&IKuOZ|=jy@cv_JPKX{8~NT!Abw5OpMyj6U9}AQg6F|TmbsvcGp+M7r@*%oMbJ?sZgnF zE z3L*ZDp~A~tJUuWfn8W`=bJ9%E*hVTmyhGIO!IaDpq{3I;kBFQG%*V|c4@}6-(jGc=SwbcLFbLeQJR(n$z}R_=8n7Q{ zQztw-YtTcKUc;VEO|z~zdzo#Cq<6!Bl7KmWZcl5BEz7-a)~3Yotx>Q{|G}&EAD``voFThOQvfv~R}6Fy?PG>* z<5MH3W8(ZwsXCog;nZdWWK>XX>Lz=WBn+o7$#ruuQhIGJA}j0^@TLeaDr65yFmEmjMfCZ*b-qic zVI+EBwa4?it27~}OByISaRM$;?Z*WMc60p+Yco-f%J?w~{1vDriaNh@#px=;QXJnS^9i+ue1Mk_n?De^C{792O)(Ii!kNTc;JM$TzYQ5?@M%sbBf{ zfRNd2nuE;pioXyFUH~YyrW0cwP&2k4+Zf;?xoxsbfgFiRnt+LcS;Di#S~ARR62a-)ELL2cL`7Gx9pUVUns8eSdWqV>PW5Y5(ik z%_m+lqcL*}a+0jQ3eze)1fgJ2gQRf_NiMZ9bST*@!Q=%i$z>b9_)mny+v;GVcSZ6^ zDBL`8TSWk=2%!;%p~X2DHI)HRXc9Bdn|K3)wwxN+Jp@wpYw!~>0jPnp$)NL?k@>fV zgP($5A5*>)a1%tvki&^|mX1`535-^K%yJNP%N%Yn9fv)W#iAA5H~~^?xR|wk!tT>j zKGdZX0`<{MzxAl0gibCg`pD|Exk-Xau?3~SG^B+_Xi%l`s;*>FSECA~v=Bi*`;~ z@2FI&mnatTq!YRyFMh45_MmswZ>~*t(_gT7?N@Wl8pR)dsQGvecNc`rrQ`##_ z^Phn6_@m>Tc(RKPckRRG*(6*56EVMH&$f%SfKsZG;n@CjyQ?kgfj2R3EUC9Fssm&j z%7kylfUUlJ!vJVlSRiW-E*>IN1yj2$c4RGZ%@Bb2iiPdr41|Y=aM7gK#glB_LiBf{02#KQcX05TCu<`5uy2|!o#D##Id_Hm!#Qi zNrAkpBrc+gSU|EY28TUJ!$$grbOA0W{ob2X>6fraT=9amZYKmjQY^Wv+-z_QV&sK& zWBW;xTYmGq&=PPgiO{D~z_p$Up+i#@a!*70yvd%P&H`E}*kvBz@z-zgLrt0}GSgL_ zWim?-irc^G9hh=Q$alfluE=yE*)Z5=a9i%Y%kHt9Nch+SPlGrBn&cY{UsJa+Ul7^H zI-8qXDp-2`j-J~;YiZPh6MWmXl%(h{RjoFEzE#Y&T5j04!7XUk(xYt&9VM zeSM^D7{!|E>Gk+)l0JogFpnkcOl5llhJHEi2T^VH}xu?bTXj~7XEJ$lRX(6+fxtgw=toE%RY3S zgUG>rw1xo!3&$y|RNpIyp&+Is9pfq2*wrFasSKepHLAd*^HPYoz+myh4dU)_fSX;7 zz(G+ks{WxnvCy}FblG`SMRTG#DkVa#0`eF6h4d{K)4av7(TS?qLmNfi%f`;J{bd=D z6%OB!S*$`$3AW*n;gl@b{z`M|7JigYGGo3zXboUvUA^F%nWL%d4P{I#0k9G^?xvSe zOs5FBOPf!WCI}@}13+wkL`r;xW(xysdUKirJh=pjbM&%^9;ZhFPvyj)lc3?Jbh!cc z!<~d3k`(%>_r<1an+uUoYQZz6rxo-lBZ4n$=CUKyS zDr&P7mHP-qGO;n$tdi8Jd3a^krp=_}@LLDo)m_bvF%9MkV}9%Q_8kZC>_2o45h9O) z?$g>?a^vQ}dh>E=56g^4TLB&21n0KucAPEsA0lx!M9d3TRsE4Ls)%$}hhB;_i9vPCx<8w-S zwH&!-EH3>=Dn!S@OQJ9faG%i-FxgqfuLeyQXD+=QdJaU#r34Dz8lZ}o)trOx zHZ!d6_cv5 zPREHww$f7>$T=ezZb9)6c_zv%>3UZC3m{^dDVXAGCa_(HrhYobzJAe+`AL;IMOo;G zK17%MB`9v3kAW zZ(QW`MEfdy4x-LCwD%(<13$@gf6kMkUPNqv)jT}oTRQW7m1efrE|x6(nUV>B$71n+ zpgr!UcW-384K_ex)ps%})gboeasuBH1gQr*x6}g_57w+bMv6?+g!2qtfnL~g9mV&V`uS~@b z==RCaD8lzrwOPEq==b)=Nlfxu9)t72XU-6YV)}Kiu6SxGIMQt z9WaVX_Aww3t@V`;q;P}|bkdb)3#p`%i{6PWNm%z?PZwn28y}rwyh<5Ct7qOKn)u5X zoB}$AEfelX(YjQm3$bkj(1*Tl&>P&KgLs47pJp z+V4u@lF?@D)aLn8<&UH{Q}ud&$umn>P^G{zENyi$Zxpug1jK;?D!n3h@Ig{I`_0Dg+H~x;` zy3>Y0{|6ToKpao*9!8X<^S#|0I<)0nHblCgjXC|2F&wBOjtt`45Fsw*Wf^j8Rf*2Z zxj7@L+VvB@e&HOc|92PKC*Q8iAlT))>yHts#2yHi`WYNq%4fQ)|K9eQMtEiJvX^-h zI1{B~G^6KS2rv2SIAtHq^bb1E0!PM|=ZVKC0_Ih6aB=NV^@^&jYu|FOG(t^=aOD z9)3E$LsRtmh+$ZLPZ(_remSww#+55lWM20U&KJ$w`$kO{*ib6^^&sUYJTTsqvNwac zwOo7|SVkRIyrG$@zmmd)-_kYdGuYTFCIEM)@)F0^ah~rBmMjkVBas%nuVSh;eFr zYEeQR4q5`2Iu_i0tXu_qm;dy!H?Sp7A2b(^?>|LsUTHp26HGd+#-R@eSqkKS1mt&|hjy>t4SgP`b&~uM{{_f76BY0Oifq+tEV}R8PbT%t%(s6%) z+Z}{gFd?Di2|xAKjqe77L@S4T+qa2DY>g~F+=Qxgf)h*p<=+cd(r7uc+O2o+Y5>Hg zYS)6wy>-h-)?}g?lWjup(I3ve#79!GnBX7w>~5cR5$&91^L_FkqpoD*z^mGV&_z6)#`3LG>%f!L@i1Adi7meJ4)aN)e!_oiu6ZG8L^xToGR zYBVr49(ZABwnJGTcgFP8#3AlR1!}r^N>TXVjpGDc7onM7C%v7>MF`7V83n4j@J`k! zX(LrL7Rb^Xx8Pk*azCmK^ze8Ob-chQ0U)bB^vZi*3*NpznBkYSD`Kz4Tvtm#?kQK^ zLl|O}Ot$%XvGG-j{oHL;k*+o2U{@MWvUu;~Ft&j?&RJfDA{2+XhKzy`a zvLy^lu-J4S^k`EuUu&kKA>1NL`Rp>L<1J2Prq0trdWk4T!LdePzCjeg#5JX3e7a24 z7m{J6IV$ois2MG+57!79=1JT#R3Z%{QbuNnO?>)wm1^a4Th%{x{Q~QXuoY3I=WIq* zqkXNXz#bry^uVvBk0gAV0B+yw*=nXdpC8!L#>rIrEqV#@*CH&7$yw8UtBQcJoIb_X zKX?FVCoK}G5J+mnLE0f~rn+cN5PF`0j-ly7uNd`A>Un5k9ritMIU)IeJ4mgpWU77? z2!fY*VM8^lfxlt>zE+1yr)G}%2xEMm$C;FIfHmW^M*KhmDSjByld399eOR>vb(flT z3U~H>NWD|!NOQKe#2PDkQ*M@}iWp_O& z!Ge;R+4E}cFvSIbINn81NF-~7q2j_jhtn{wJba=PWvWdqJECVA{7+LqP_<4OXp3cF1G-M}xbde++~juxvoN0q>kWkWl4&X` zf>7y%W~K7fd|BW>U+$!N9C}oumSvqWd=?o8-&fPX&21|AXtIv6k);qNN0ip+BFYC3 z!86Y0pMxN9qU;Bu$SBg`zMp+}oI3Uc4g{CMZ&Y;E7hj{I^AF*Yw%EM<2ue1N<&>8~wj<3NR-jxLFxfzYwE(zHuKWIna7;P@+>D56n$N zK|Ufael_PLrQJ-r;jhOVOhB@b<@a1?X1@lgj7_p|Ag3F zK2Y)g4l!91o^k->dLm(O0z|!Z>y)qJN~Mh{SjS= zLs_=#9eS>$lWwC}2LvFoN}Hi<5Q=);mx3qUr4T@71zi*Qn(7BRDvLMRmjV4n_Px{lWS^F8w%Ye_G{%7c4?%Y3%OL<^7g{ulKFDY#{GI}4Jc?H`( zU#CXzCJ|DJgPmg=LYu%j3-Y+a?i4ebd`^=q32A^8-TR-8*t>Yo;apRds~S zmu@KV0RdN!Ud8NQ;Uw)idF|Z;%#IkWAq@rd(KvMFJv?eBb1DbV9^IFdKD-xBfqBx6k3;i81A?b5)`D6PrHr@wP{J^qVYc?UM!q|xu%FVn><%;wG7cJxG zQ|B$?G^WqKr#}tU&v4JIk1IHw#;rCOE~K+2BTgg@lN1in=@Tb%wlTt1w7dKMATW$^ z{8vIQyNS2i8-WF0qEY<5egmC7Yzl+Xveup>lp@DoQ0rwl**P)g z#ev3g=bwb8g-w0o-M?)6L4hzgFny5mX!f~^n022#r}L(hS9#3L#XQS$;oH@FodwRO z_b>CJm>=OV0T!p5u_SXme zywR@euL+6>Z7~Y?7(Eyjk*8@arLK6`R^pbFDF0L~Ps5%?Mz6-Z(8lpxki~{7))C-q zei8QmI)M+|KMOuprmV-?njG7XeUK^*3KME2m7p(z@GR(tm_|;8?imDY{UNTDq3X0E z^kJ7OT@4+b%t<`QOh%$Zc^Ct8OgC>^iO6RQT2$ym*9CuxkT0^$R?a)qTa~uw7u33m zhezVSbKb);gc6*_PpJ*E?v=;2{_Y4pg;H|}!o6&Da{?zCRAN02elj0n4df{di=&P` z&(lDNqL2;lA!*4x-$~k1zqs5kk4#F`Ogrc5u-7UD3Ha<=aVTC-D;h9})dv?Zw-hDb zA9W(>$`g#8FE{|M`z&AQsgOrS?0M-x)R?XsR)gS%?*deh*0W+vV}W212RrCy&q(-| zr(Z8`5!oGe(>`L1X5wOw9AU`7HQFzF-_2OaSN74{KoiLDjn6+XY4nsWdF68@DGE>o zjpLZipf$o2BIjj?Di+3B&-JN*f2-6byFqwEo<&r9TDq}q*OQZ^C|U&9hP-#Z1uvr5 z_E&&yp|^H4H2}bDKV4u(SX48i;$@#9IK+_kiRM*l{O|OvIpGh3c?h=8YUY@H#k=BY ze!v3aSA3(UaWSn;le}Bm7o6`(+=myH#*_!O5qZM;DJzu+@jt*W6%Ig~XyeQtmFUCV zC!$4$iY_M+vZcl4DDl1=LVzPRvC=wU%xYkPI3b?&v2DEVVnIYSlI9y8n%*+0yiTlG z3BSd~0a0FdK(50sjghkF)?-gAn=>q;$Y|8QjKEh9QZQ$!#G?Ep>WmZCQF5rT-oKYA zY_*FDfRexZy&m&kMM=#3Z{WdGiK5q7ke3_i);a3W^JDZGdBdaA6+hYZrT zL2YaseBRA~tGC_YSv{WSLx5!i1yIfPt@?|&sMOa8c1H>B|9`+#(%DQ72kt!{;q}^^ z)$!s?EX&OWQL&0PAwmSTsBZGN#!(nO~X)@ z!fHFq@lVE)+8=yu3h&Gq&i@1cb{*4i`gph&CiY1_|HMQ7_`3qRC^H%iRVSeR~hFfBl(ixB$SlgN#`Z z25f47iV%W^ht$Y%bT6sO?B$>En747EQ=PR)_E)0vdMvJRO+&h|sn8gNt=H!S87`^G zgftv+r~b;?0%$eX*@f_f4G34dV|NcuQ-KC5(dNZa_%A1Sh@L0}@+G+V--UMRWv5>F zV!>bADNJoY7(TdC6xce{mE~AO;TuL7EQk(7?3fw>hp%s90~19ijM2d>?T@mo-(ga7 zU5~JBR@1DGbF56Zd@c4Ky0d1iM2f0!L5hzTwTJsH!Lr3_zr6H@fmlhB|6KG3#tG@U zs_$bbQ?Rs|%ARrKkJ2WCSVB!kRbjkiaBH27*nJ4H`XlZMVO9yFkE_qVgiyql0S!2; zTxvN&=))GajZRqgLYF?v<${8JH9LNjU#_2<-fPQ;$)g)z+86S^;9!!hbHeXfw0)+O zFy~-mf8CTZm297{h`93nJ(XQxnS=qNnx$^f6D(k0lWlahWZXcFFK@S3i}gvLJYsKw z)AwE83U$Y4Vgko=S1419bckwIWWD^iZ+x`r}TLhNyolx6G*5EshM!Cbt zIn?{kR5VDXc&BePdF+DO?3B@{YC35_+?Z??H7_cSNQN20#?qxVIB=$Eu2T zLBXp`w@06UiUjB!3h%MTj6tvdCLvKHG|KZJB93aUPMDvRYxqc&nBFXstRg*5^*x)UiYDrO1AR z{~2qy$I;A(*f#;{0{uTmm-K`c%z}i8@3DXI!8iLc0BPtrzF&D=tk*(_@789THsy1A z1k9$gul?*mWU_nVcJs%=XNKEfQuw1t&!PM*LMek54J;l(5SBx#RxWJdT+iK(Vi_SA zXe)9&-zHr2=F@~#H=;IP-1<*wHTquyQdZaO9y41@sRp3?dfj#nEN%XcPBg2>4rw@R zHcWk`DP?gHJsqnyiGuUB=IlaJCJOcvQWt|71k+@yrjTVT|K{$kLY~NiO(_Wq*k?Rr z%qbiD`*Vc-NIwYb{{!p-392|;MJ>0pdaMUaP`U+rlazl_#@6c2mTGkj+1RgV6 z0~n4XK%hW=gqa0(e=}zQbhdx_D9sjA<}$-A^B7G5E0q%=MixfEt@hmJ#MH(#xhG<6|(s8+8!6`U=aE^Ss1KW}vW0T()G z1Ig&uL};TXg{tTjiK-}WIvi>L*;px8(#u8*AHGS&X}^FT(W^ zu5OJM*2Zlbc9T|5g_Se-QR5rrWWzreMCMDqzy>WJ9!2{9GD=MMq_-AfM*xni?A@f~ z>k>gdj#fO=B@P0ZM}Yms=f7m1RLW)RxX)TwTNu`h7dQMgt~FM-;Sb*1q$k1xEcmsl zmdk1L#`2U`Az2j2Qi=}MiBh*xl->4TepsS)wH~fRfI5!p-uZhH?O;j{*}&bhI0+On zKpT7Qfn36Gj8<%N^r*?ZJ;Y(#kwH__!-T^^Ci$9Ltqn5HW`m1B9>E!+)E5(7u@tpb zlo0)R#QZrj&k-qTz74c<)@i1p2p;WY&e+H~Qw~{s1}*9upzn1H59HD>37@_Wj?$>> z6Fn~0gooS9yqLf-#(V+pd$!?X5Oa(<@YN%;EZh(bMZ8u$-9Q!JiQ#ob?2@~Sw?hFo z3^;1J3HNyu)y?RcW=(!e z*8aS=H4*{I-jT%g6^i3GJLL8OHhEaE z+O6QeG}wk{`ij2EKttV9B7SXy4g|d;e`d#RIuG2E;{@$o=iZ6{CJrM0P}aFRnLQKGMaBN#oK<}R)`zQ?*dJZ@ckoDuY zoz$~K%IyA_=@{S0F>bg}!DPT5*t1K`3sq1&CzuCr;;f}E~&<-MHg1O{l6{K%pjFH1ss#GrBJRmc2SY)n&^Q%Bx(2K~sh%U=;^_4sN5nhv%?g zXx%E`KPWz+_Uw`dQXRhF|H+LbofLO3 zHdb_;y$1M*p)lcPXpOKh`mH5wYy(l!dqMRZ%BV*wNya%L5sR0lS(*Dt!{c;#jgEV3 zyfx|*G?p4SOe9|hOKT+}-GaXCZQQE%Ky;jI%4tq;VTi7hfTuIxbt&1;`=`y$LC0xS ztIG)ldUBIieruzfuk|OWJ6h}h9T@eNroOAttOVW3?zQ@a2Tw`@MQ}iKI3uav;(Wz= z1VmF_JxHjoIr)TUoCTcZG}wQ%lC7GXtn63~{_KU|rY$`AEh$^7_g+sAetlx(0-Q$M z0bTyZ&Nv~4+YxoI(h?a75RyOEw58W{GmRV!i@A(qFSx}0{Jdw+ZjB1Y&;ERZ(<`cS z&5W)BWO^hgM+HdcCKkYE=m6S*avu*=yzTrA^*ZyD%4Hdup(gJ8w&ceI@njl1F@ot!^W4j8X4tkX;wHySa(mr)PDz9Y?a$hD4rGY3NltTmru>#!& zsJt|Ytf2wN5G7&VB@-3ekz80iF>rF#Q5II8W9;pUo)i0HHRj<-km#y8s;1gCWtJY203`W0aTV-OH|%+}CsYNevEmMy8&sfnXH7-hMk*bPr#FUxJnCTm)xn8ZWULVeU5VvaKw#9l=Jhm!a z9bplF(5ic)_p0v~zJL*pcw~Yp4sC+}If7=1%afH&_p}cdZ&s35`XWelHC9yZ-T+f= zePA14Cg7hXCpRid08SE>0m@P*7FE#(`9K7T!L7cTYG6ZB3NRrAX~a%{=uiGGMAs=Q zsL4Ebuid9@dV?t;)6Tm~aQc~jSTS(~0k4d0IZg8lPPQryvShg6Y?{Ho{lG6B?x zwOEJ;ns@pZg}zJnn!1}4-q~Xr1Z6m3(rI5^Wrv_Q*GS-~9F>LT|JVQD^?ohhRKcEv zwcttIgUwQS_MCgmbaO8g{e)4mDg<7^h6y8s*=TpT#4-=P*g%l-crFS75#%z1ifdv0U|XrST)wmyblW%$9ef^@$ZMe}subtzwA`jc6ibEcSRGd+c7JH@veQ{u9nK zutZ}zsYu%ZWN6<*yK75WF$3c$9?txT&Y0XTHS#OV?FMMB4Sk%&>o^lwp(Z7X^M}ZE zvhNXZFPEBU%1w+?F^+zMUlkB`DJpZ$yEz6IIgzE+jXIN{>V}q) zoAF0D(#b+Q75Caei34=B6*rOu&mT9#pe?;#=aF;}v?aiUa zW5#TMQ8Rw3y~D@(42(}*V6+z?<-wjN0@OWMD%1sj!e`6$$R)1=h)_@rgkp)k*QP_l zQC9Wd`h$gmdRRTlbV%mFy#(7Z4>q=ly?W9B0uoKvFLBWhTGOhgKbTayr@n#%d_H{+ zk+(`F1mO9ks)+iQ@x(=MvH$N2xl1D9F9mZd8eTNMny@9rmop`)CQoU1L-U;^c|%Ib z920!6^W(!R7J1f8w1XgM9c<%5GYE%n6W1oapi`T=erqVQqI4THb_aD5kVS|wO>E}f zqPPT5oQY!>Ea%Mi$-EOYbW>lweecXiAp23yqQ2>G4peZiCzvC76JGtJ4b(B>#dI}w z4I(yXP%MrZR%GK8?n!3^#a8S;#~9qWVf=19!5mqLJ;NR~lHjrpEA~b@H{xt^#rl2>t|h@~ z0&pkEA&;0aZ!;7kzhUb?3pLPIBgI``C%}xDtOdjZM!*s^*zb!fxwQl>|Iflrb`4?O zC;)Fos|KL8{013{_x+4WUde2*A6Owxg1J%BQdLvEKyi5?_#_8e8t8%z{G+UaR)uVSiIMVJU{Y?iIjhq1`hDb z(oU%LeJ|J$(ht3qy06Py8@G5{cXfp1tH4E^r1%Eli9c=wW!)UrhBLm;k&8hOCM&9l zcB%nk9%|!t=&q%U)YsCL81iL7v`Rn*vtTmyC1=Pfp2`6f6dOr=2L;Y)>zg_7bg0nD^)*+7rm}G21Cbwe3g{D5?&MX(4r?Y%7|DS<-vX+24=pRvT$v zqjbxGrY<7s7`L|=DW#!LE1u$+$x^<~kQxy|K##f#Tk6#Xd2rso=mL$7@NN)~&>V98O7u0Owy zXwH&rcw5v|a56SjsJD38#fkDE1}0qIimMNS3daak=fz^x-I^fhZ)c7Esm@W1p1Gi| z4|bJR>#HYx(gfC;m@Q@1wUu?bR6!@R3_(6Zmuvdz7#yIYi`(9~!fHzGoVIIW-QB4g zD*Jpp=;A!ufhT26-)PvMHg6MfC^tDiON;&hJ3z$0Azbjo>Kpxa5wKHOxpsl}Ep=t0 zUph;`bQCM7$4ZMT4vvjA@^E5zzSL49HG_`OTdyV%Z2+9Z-Vig>pDQ8f)<+xj<{wQY zZv$2T=E-+6JGU(58^gm0_-yQlrtI>dtBL6|HL0bPxx5|uC>$@A24e}$6VB>aBJBG| zW@&y|x$vqzJytWbl^&L$8$p=q6ldp3iQdiB64+UG9c(aQ`3|6%$iIII?! zV4|PRlsaqukVJWXFLN-Rm*GUH9cE&x^=JG_@Q*EvB5%@wdWUoNQcVTfSOn@yVAy<3 z>5sl?xIg92-d5mB;^E2C1riI2AaIr*MOopN`1Sp!kg`g4q}?LxR+HiI=Is>-m^`b7 zGk-e`9!lKO*H$7YrXopviS_jqw8GVDFyms>7h@1-Y^0H$`x;4rB>D^vM+TkNYa==wjcULy5gW#8<)KTtwo0;wD!W4&RRr`H53W3@2D?Z=C}qqh~hF zgQ57(5|`coEB?@T<*@`J1`QtP$2d4|&0Z^Vsl>1ErTOTUuf zfvn~)K1G?@)Mvaa{0Q|hjzsLs?PVb}mH(5N%yO?^fJP_KB(0`}(e(!#?7+?YKV^kvoh%I6 ztW@j&ej@@=K_X2`+E#L)OvbKKWKy35+&e?$7%o)02+_IV&7cEQRUTxlc=A#*G$mQ) zs07|Tpu`f?-iEiS8Vs6|hF9{ZG{_3N_kz=h+JK;e^2kic>wm)vs5l~vS2aDG9CpIB zAL>|68|k8Qhiq2~_7mdlg!yn5ma-rm{QhoOCMAblM##w*3yRfH6=lj|4`S}N;GDTY0q)Z89Kn&MV zuVZ&CqrufVbZxaxZ3ok$Ty}*$q^|QD+pWWhuaK)Sg;=3LM}@Id9pp~?YcY0_9G@y- zuS#Msqx_Q1RXk(>#B7CT%0A$z;P5}l1?vVa50tRVwQxHVbPY#=!&RpWbn3PMsw|TU z&vuMFe{iG?N#@lwqt&GjO=?tw8>n6yE}~Xk5doED*EsGE z3hg+57&3-WES_3K`)6g1fHVuGA*~Pw$nA6W0qQg+_RpC2~m>NeXHERcVN7`7#h*pQtMG1bpDjqBA9In0WxhEsF0b2`JD)&^Mg{)M8hZ2Jii&U~Jje&kkLFa4F9 zoaAt^CkZYIJ9I>8$@+Fxdw6fev}@%2a_^aZ^3HBx8l}lveb3D`P?* zx5h(29?YXNTYCcvr8GzD|n2?Y!R9LG-?@rV8PCLf4j zhyx0ky-Fl@1C|Xq8DCDlfjLh(Xit1_)iVl-8kU>xK&44B4`S`cihpk*=u+2M%7>m% zPD$+Atl-Z~O)@JtK!9RR0|V1I`b7qIrex)WzMG+G)JdR>xj9H;7@*Ds^6H=Xno<8Y z=AK63R+8U^g;UIl5rOy8)8WyfHNCL8YUEt##`tP{O_9(aAXU=J!iXYp{@S@+>qUN$ zCny^vYD`BV@*j_jXIW$>VypNo#%`pGv27`tK=-L4+HXGlo~%)LX$*ufJF>$Z&IDT( z#iZJFuR(@zG$w>ab6q;h0oNO-amtL3NuU8zJ!b+OcVf+}TvvW-^izPYFg|B4B`$aL z(cL&&(l-3xRwv}*e-p!DJ2#f6Fp4*D{L^UXouQmfLMGH~um;0l2taEYZK(#~DvNh( zZgQl$CuQk8c+eBizSnid6?BI3u75P0og7=l4|s$vOI}h1{Fa_bL;((2RLUf4n&7v< zPY^d9084W}e#XIP%drya_nkc=<{<5>#YXVsX6c@xJ_V(zzxc z3a=>!E`w{|f47W9om~5m|5fKy_!1$QEYi(fS(lDA@zhB0*#;@@NkSX>A;rxZdC_4= zE@kF@3*Otjt@D^cy&RPlYK-+7jl4GW?;2xb%PhK3F#|&Q6O$5~#}W%1u)w&+6elg@b^)b=#>uoVwtm5D2Hixh5 z+vVrJ4pRsVx9zIj8|QqoWVY`a*P|@sfiovvf%X=owL<5Zge$~rt9!te^2pK7rG!Kx5!xWzZHg6QxgG@H%rvv?gr z_$T#^S0AU}u@lNQD}I=v*_mhYT``Swk^ek^6R5^~PB#B-++o1OVgq_$7B?SdW2X~zt#^;H1#>CNMRuH`0IwU1*4@~Y=(PAoyt{KQGz#OMc)mKYB7%VVQ%**t zXf434NyLPpiyzbvVO$z}@So(v@p0uOT}MjeAS4yz<_qI;7}p{|FFi2x|ZzE@-M*t=HnQ63+APs&u|At&oT=Tk_0j|LLkr9Fld z+kcDU?i=o@4F8Hunk8&HQ-&!h0|MS%>!x^d;X)}^t5Hot`Va>pPF)*`vvYWkBz-|? z;n&3hf0GJo77YAZ)Q|I+Al0@oGAOPc!7Y{ck$%nPAF8j(E8|SWAZ6$mFK3c z*(XlUtMKd-0RtAi0C;ttwR}srDr2iV6B2o(U|~qS`yDv@I_XQH3 zj2z*4i4CE5xbIYz_3^1G@J9QaVi7)HK0=%2T}iO!_(*Rk!XEEz>Wh}ZJJbrhs6}eZ z31*cF@30IUz@Gh{Bc(VT#A_M>$FAKV?#d^k_tVLTLR)3dh27O|=L;CWDWucJ9@EX$4CdSb)6*axU3)k$UtH)C+MkT6F^ zdOl2|j$2M1!t@84ItRL!)(|Y%gsdanavq}ef{P?}Z6QbjX)JCW1#kgjXHL_4W%Ah2 z1Yxq+W;Bdd(`3hUCjK`UZnQ&YLUR?kAG+C&>j7L`{D8|;OrmR6%SI9YnF9Vb`evk9 zipk{5d{%e33?MWmXNq8%9eRaOLubuK{&>p1*)R2yj@lsrNw26QPxm%r=w%g`wHwz0 zs?IL{A_2;X$7!)w(c7Jjf;ERN4#Gn#57c@;VF& z%ls<$iz;I;SY`8eaHquDx5^gDRF0!!mk+{T&Nnmml9KhP0DUvMx$G$qtqPKWK&Q{j zP&iobYS1rs^Hfz8nY!%H&JLy?IO(V{fpm+_>DkZ{G)*|@3Q zr2L9#8mZ9BDd27$wDs#^g}WCo`Sk)(&iH*tY)qag#-ZB-@Jnz3cig}B^2P}bh9!EZ zOfbq0FawM-0)eh=#T`Y{#Ct2AdSb@*D`#uwXl!9^cmBnYCn=)o5fjt&Hw(!ONzJoE zSvYc@dnw>Vqybk0hX)iE;RBEm{G|%=gIbZLD{y52c1UQ_rxxAhdwYgeM!1ChR^$Je zjpp*v6B7C2PNqN~UNUxCy*POvA$+h7fq;$n0p#@Hc@?V|jCy*!kZ%Kd{6zy1Q28Fj zfNyj_tteT1M&>X>e1-B~#_tt(#JELenSp2ATQSODuPnB7RyRZ7N-$yTK_2!pfjz1{ zMCu?Pa#8I}&I#^PI7}A{duA~>I~^|2?GX%qdU=0w?mPbv64!S!7@1kkW$-x5e;a+{ z%jItRjd)fx%4?JKO1G&{S7BYA%cID@!P)4HcirUnyUw#)l_a39YQuQ)=7ReWEEgkd z6;DWxhOq9ttz_BPM7CyT*!f{`uJ>D2+5x+XS-5+yXO!D(L;!>zNx|9GPPaQ$J=}1t zc(fA4!<`v`t*kYDp(+hRxdZ zq*vN**J^f~a*##2=8888yyDV*jp%d`LR1^dttmV2yY!S`A7tN-2vd*SF#}Z*5f3K1?3_zwxuC@^V~r zj()nJSPT|ZD=%tM*Z+P-{U1XFRz})XM$|giXfg&SC+xk;8X=SMt{8{ktfID2pNc!B z>WdwGE=Q>l(e4$W0<`hASf25xUsxumOgxr=qgdD8v6UmYvN4{USkkA6j1xcYVVYBe z7S8@JAdv`O4_|F5da||o#S*864gSlnWp|HpPl^d%Gk65NjMy`iT6fikJ<^~{Pepu2!~oYD{68!6`l3(VVKG2Cy$UIs55L2o>evhtvivipJ9tGCFMOt@S)9uZy-Z zzTg32C^=5j)N#P{K3*svh&8BY28W!V;JHQH!q8I3dLj-Tr#T1yH~ zJ$~9&;U;qhY7f!HMPK@~mgGwT_fo12j^iz0^m_NR*<6?beb}h#4T_N}y4VJOS*C^j zIhx-e*OPhY{0G8iI@{+Tl!FYD>C};b0DiOb8-S-U9+l^Hf_PSnmOJc=F+^_0&G%Ac@>f{VaBZL+b8kOiu;3#e5?pl$l{e-AEfGKYU)rn zH;0c0MXB=40kNe<&uv=Dyf9~A)-+uuT5(cmka@T2U15(!frL>_o69JUDL&9Cm(RfU z&-gV2b!C(TB@|=e+cBWzGjBL!xeJPTrhO!qEs?OZOI~pM5;VZ2mJVsbi{%hbf#+ui z`?mORf7IChH7dO9Ni1$hk4wETxINaXO3khX*%J9GIr&D_y+2Iku z@t=e`#Pyms{)l&sct*|B3>2`x8*ZSG=r{(l`7K@LmNu}wp+ikojIkZlJG!66fk)C zP;P<|bq=*`uGr4BIh!|pIiJE@REAOV*c%y&$E^WXkGErT-%Vl>51uQEAmb-yRrq@4 zbJPxV@L*e z5A%bT9Kl0Vc*8KV_(SKCVC}!7j$t) zc&4}8`MTPq;eB!auJ@j%eS^+c@;BKx`}dy@O~~3^CNorFu*p)>z_oaR$Sm!IY^jx3 zhMgtGq~rD*!jiAa(FHnb)2?6uAppQ%E>Z<2S(vnyW0=m2?vTGDs7l$VY)FPHI@hH~ zI6XQ>U8eFoslAVenc@jiml(GRhOb{X60xYcSKGMO&nfV^YJ_Z|`HpwF?JHxSRZZN| z#3XevODzT74Dse-Ts4MC8lVTcDl=2Zn5h$ge=V)w3MMXd^<6AbJx2gjr-q=0jFVHY z%?$+J_*!mcFRYvN)*TYF?f#_6%Li2DHykE%Fhnp}+O1C>#LS$AXNPkz+Sb)eIfYGi zs43dxPU}z?S~Z&y^y0&4^=x4Q%)o4R@EbTpO&x4$Ns|b%E8}QHdi4|*= z3~U6NQ_UmaygM2~|IKtv>Qqb+yd8Qt%KqElYPyBX614FBS6T$a9b)zqStKX~_Ak(! zadO2Om4m5-^tWx5vUJOoRdR)(yBW>X{5(&tbUPbo4TT6;1 zV^K9IwtkxL>lGWPr+1PuIKM$$#$E|-Ls@P@hT{#m7p^BBp(1e*&>u5*S(BXYOA9w5 zy=%8)!kgQWT3N&h_wkX;vo(|bXVh{aR;uxI6OuwAd(;kbqJB1DLnMq{Gs>2qXO2JRfMk>mWgyjn0* z^F6LxSrwF7A`)r(%kVqe^CruSpi@1^ycaLo4Xk3v})y6yudF_M5e078osc_z*~<+ zZ=gJyLs<4)P)qK^RS>~&(QzOJ7S~c39iu{ZkP&ww+3I|Ennn-n7p%C(g#?!GM(bzP z>Rn1VH{_;Ln3-r_XP;bRJANg7kVWZdkOEl|9Q%aARFbpAgC=7albWbL6BGJ%f8_so zTL#s|>R5=VafolD#)hp)i*)a7yQ~&a=QEA%)>pmIdU}MsQ(^)@7;~_=9cI|HArD8> zL=jSp=Ud4&=MD_~vP&K#+`&cYJtqo*z60c`*8)5zB-)>{t?3N8yXHUN!&s5ynao~K zv&vwkqS_6+j`gcA@>0C>8aSU#GaEx$Im|iVY}gI9yizGdYy4C@zLQEMi?CFR*hGv! z;h=czcMhs$w*!ve$qEvz`RYt3vP4RFB}aKXE_Ey0(SflPA0c=wSiH<&9i_o$589Vs zvsBm0N<#gj=?ngmP@?f6&H6d&9E}}3!(9=p)%G%B1a9n?V|LPh2RmJTw>7sB)m-oz z&vIq@gu3i(^mT+Zky8b$DPpWJ7anL;q(^Yq3rsq=$p|J6yZaP+U9*i~w%)LdYN@ER zb1_OWb6g6SIt0=n{>rA}Vw|USYkHAvIml?Z6Z+Hlz0kdKe1M3j%@WlbAI!ynHNa$- za@usO#a{~)D0ddp5*i=FDaxZ|!%^wa-Mi(h>mX#pZI@hT7hAw!6lE;+= zVpM6%C8@MP^Ug96cU8n+6}&uxi>_z71F-t1QRdhtIBVA!|Eh<3`}!&v;+ z9P=}ONv~eAx|kC#-yT3ok)bd++Z-z0O7DVfSMj1dH0)nzkK~96MKQ`4h_gDBxCp=` z5e1}UOA%7M8`O>ko+FAHOVqgoA!fCJpQ%ZAcLNh;UgY+qlI)2@GWy|5!bQ_b+-U19 zac`cTt8dQlI?6`t#Z67~VFv!=42;e%e3K4^cvq> z%dS)D`GiE0#YuCMR}Ii#uXBSIRJIsZ64+NO)TC_(vrT?o64Qk7OAIUh#Dg(VJpQ#v zVlryDbHDvr8u_Ix8t|_Z;lj?}F~ICAT~EH^j5HY{lTS#Omad4xu0!)o@J(os1` zrBS1yKAiXpDtfrg`^+B%_xjvu=Av$Ae6R@*=HC3sPUDkjk1wbiLST}RU=W1vL&>gH z$Jr*}nii8lznLL?k?ApPYl-Tw=P7P&k_&v5Dm|&?st)O&mD20Gx%R?#<}0w+oeVFj zemOgTg?3iNYc#fCLs_Om&%{JUHV8i&DNH8Y+>&u{f@!4Uf~b-zpg%$jmR7K|Ln`h* zuP^EM?xDS^G~J8ua5MrVAHVh>SNRqA0-_PitDdFFAAuso&sYU71H z!)(0=*&wb%P!^=kj*}N=cH_5@0@7$uAc~d2%`SGO%svzNY|v6)SE-N%Q60KpoXRf4JFkS;||zRn4w|$ESW1P*mQdXo$w`_0Y-8lkm;aR)2`$oD$!xc zK{X)s#(d<-ircySaZi(1XX8xme$g6OFmqW{rllv+%jNBaAHGBCWOY6vF)sA4vN%vS z{#(eb1fzPP#vnE!Lvd{!Y!{6-fub09t@p}I#>h4h3rz#(8Zu$7LURqfI~XShA`vR% zt?c2oEz1gzAo(D$UEwE3u|O;cl}%(KU+>*{VYqfH?cEuSo9;pN0w$S;Vd>C5{f~5P zrce~64hnlRA5v(eg0o+at@4PkeRZBNw(wQb?$*j9Gq3N3**`3xclvvZN8g>tL#q-_ zi3Mi#>+XLXjjo0ounCkqthwW6jL;^)kZO3N^u9Oyg${5&08V8}!trP>DKPpyh2Urm zDDt4eB>i*rbqjBny4prxk>(vW=0^Rv2hkV_jKn{0C0LiDRhUGt!GFyfMUX?KC>_(l7b{sLfzYi(NnSc89G&P?bp zn!GHn`A@Pku0jB0bY$3bkOx5Qm`d=-kP{L*Rs5W|hMiHc5}06@U0sdS;&lNTw5H9u zMIZoE9{UE(ut@@<6xqkN6I_ox?tnQOshA9fH;X;OnH%(AFT+1NpQFtoNi$UX@0H4Nz_cA?f0r=kfrQ&sDd7=? zeQqcRyJgAW<4QhB%VuX2SqbMRo$^)g%sMa3nauauDNCKu)7<5FKr9C#08Z@tlHs!4 z!ym=g`!qQc}QM?}C{iy|$ggkHg0_8S= zjyCf~c2a3!$(J7ZPv$aG!}mR4$&r4We3Ss@4Q~g70+f{+i~!i|bH-PTpRXyS0x>3{ zfM1hpgbOw8QJ0fQeE0wv<4`hbt>B|q>2M(jm6VAx?(Y16gmDTa%$FrTu>g`)v^kqY z_5%V8I0=oR!=+Er#`xpWu!@fM*DfrMF@`TyV|sbeV?V8}5U4_URpb~6ec@_m)K=L_ zTO-$cS?HU_wU_v4@d9B{F2vGK0Yon36?Z|d!#r#TZ zh^kV_o~*}xvHR`cg(I`jFpI~MGkB4b>1>y(AE-Ey9i`EQ-{#KJA{=9^dTSOxg7DVO zkgd@n;Dq&>4qmh@%S6ttq1i^<6P)J4MBo#{B*WzkAM=|{t%FpIaMR6dfG1;2UW2^9 znjI+1080FVs0IlnVcLvyy~AM})Ih&UR)}uX5Shp(R~K5!5GAD+cUTbQn7p1SWFKCjUw$iSZuZBz=R|H*v@2{@ePNz2>>9IHK!*tdp`hA%%r+X&uQpLQ_mIg)1$@`C;1 z3}RKY&0LGV_;&x2qYlMFRGpbe4U+8wN_%;1D9jv;KhfA7h8xf6FN&)$)!q*l=?xT^ zwsJS}P%7+Sor@K^V9nJsoN(we>X@(y_nU?Q9A+Vx;xdi?P>ZK zFnaUdOZO@!*Vy+(2@+4_6u+THcQh2|ovXN)K51R0FlWe6!Q;|)&2@nq=f;l6*}(c8 zFOhHB?%dhuu21m*74;ODq-hhSi1c=QLa-%y+g7lq)B=u#7I@eRJw(1Y@V*H-u_3T2 zP4Bt)a&acTuvcz2;mCK=Ap($BM6d14AWYf>JE8B^vZuHtpcoKttq+YmN5HG~p^av)Owr>x0s~~BiXx|m{6^H&xDL0SkD6LBIGF4u4 z+x4^_K6F}=k#H1Fuj);A<^7ksC<{DZTi<(xI#F0A^d!u=9&tou+1AY-Mco+E`xwo} zuXP72Zo#d!m#F$9woc62%{!3IgD4{99h0RvLa7~e;b0W!vtygC2)c2=6$f~@W|Cq& zP500;&+$R2tuAN@0?b~p{Z)I));+ejN{FQLp&p|1lBpu?2{NCxzRtPCA%ptQ)y>Db8zl}i412@SgLydtoVTDFKUUkoP3Dkm3$ZveY4OQIllv0IL$_S zfaO#l^0AP9=TDTtVz*dl+;+N)=z0g}DR#pOu@!vFo+X5aG}7HQSn^C*qHeM~`}Of~ z{EqaBO|(rG8>xk_BF6ZQC$I=Vfx7aloU=lX2W8fCv7^pE5GtFdUi2*bu_r@b#i3EO z#iaEs+Hi)Jy(k6Q-l5+o)cl_`!4f)YPVhIOz*(6tx#ckBR>*-GlKe`5oYtrT*b|R4 zB5ADWomo7yOQ|lSSjpgW*a*P!2xxbhYR7@2*VM11O7Zb^`;AwFs|bN4r+9+nZW;qS zPSv=BIx|m$pa+WU76d7`wyerxLm74O?@azsRNazCSi!W{h3JK_DvzXW_;uBEpR|Y< zH`RCxeRIFdf}0Xvt&!BPlvI$cDRs1!(QeB;vWe{PV4vv}RN%^&Sx?ZWvJukzhrHVq zv=E`wd@};fF^d~V6#{&n$Q`vAet#jy`ZkIINdS$_f0*l!Q#FrrAHW_n+I&dM-~iw$ z3oo1lS2=(f?zdxhc?&E)3*|k(JY~vOs1De_ytHDWU-E>y<$)H=wmS_sLn%#QkO4Dti+SH@+62plN z8hn2en;%UN7R=y6J0IlZ;?ZvlSDCGUe`(;=7ljH8Ri0#=Sd-1UFOd>%aDewTEbkgn z9U7sEnn7M=i3@8-sa$EgC)NvV-Qwc(+naJ4iJ)?GmiAnjV*w^itGCDf8=-re@9IyW za!7EwWdvyBi14?STIQRWR8D*at~SMNOC8dMKINAr+))7KK7gH8Kr>O;Id;G)%{&&= zJ|{Fl?IU&p7F$7a>C+wu6W9ZvS+H$-rYzRkzUG9YV{9;SKx<@8+Z=i>fC-i)Xd?@G3-GRWB3yAko)2}AK+ z7^Fx{$V8tk>pqz1b~qb_mY6eGP_`xnU_Rd7f`>17@i-Nv%GolfS{o0kJp8h|N&b?> z`r<;_nYuO=+%RB|r|D{`trYM2v5BX%{cx@@*|I^3XF$52|Kb>f#!kFb-#fB294Yn# zTTCkb?uyA*JIRpP-yKyw#zVud$21J_GvVd)nM>{fC6iNM(lx$HYm6ut5Z>*UAJ)V>X3oF!{&A@lZln&Z8QK z!B{4nAzIs?xlkDb4rciB{pt|U#^T_c(3RjYy?0}C>~&=FG0_LTm1qcR9A7u>?)*TM zUpF+sYAjkyh@o`&H>ICW99^P|H)J9Fod)-o2L9;w)S2_bXeia77~rp0j&!n$jCKUY zQLB_N=P??diQakr5Kjc@gD`JdW;B*rBl3ro%g&^B*M=_jt=N%?OuGByW*JFZ*DCCQ z=EKt1SvKlg3{}&dW9|S`L8d{$HkAbV?Ec<$w0UE`RK)xQiHgxfbN`PSUj>jvZN4_3 zM__!91bbdys)@(>cD#{H^B6O>d!T~_{m>x{TwnBm-3w6qpJ%&_E56C+maM{`+8{nR#5z|t^8te2V@b4cpl29pl*~RB;BBfP?y0h#-&iST{3P#MWaFt;C{IzOv%vljaC#FImE>9X z-~s2UKdCM^rwUS^u}4)tH||zeUj}TQG&vYeAcW5z0izic^&Bk(-bu`90kIay|Hn1F z{DH(3hU$VnN2(>dSs^s^uM;{`(aPXFA`G9m~{6kR~=X%-TN zV;%)j3OveirBTw1u|6tnSv$m<>uk=IJ)n+U$oqo3Nr^9W7I`*g~R9j zUJ!I$t5h9kmYg0l31wLh5N?TOu5_!~{aKj~)4+5M#R*V zTxybL;p-k|YOR*td$N{_3Kb-e4KMP{J<%!?Qh$4t z--m20x|EE96~ZI%L;UODh1;UHUjCsg60XiU2ak{F=5u(jEdg6190D77DjNjxy`$8| zf0aIOOgV{CA?F;bW{U2Faj0_axo=zPgIpf%90D|%D3h@-?8hW_&NE25bFd=GHTeW+ zIda$ygKptOfa0SOnMnBsfL81|O+;S4qK`POOns;OmDq_YDxely&vwmN1 zndmQ{2vtHSqRtOq%}0~?8aO?#Uerrb{nK9^uZ-oQBuus%YT|O{DOITN%tQiI9_vH6 z{Ep>Fh>DlvVoTUjZY(~l+a_?5aQ60)Z?e%1_3X${=xEmpt~dRqnW&{Klu3dsz~01x z$^^a-DDTUTN;oW>`t^S>F0s6sj7n2kQ35^IqYD%khdl+th5-f*xe;>&E%@QuB46GO z;Sh}FtAY0c?0Q=2C>Z^vR`J1xb+wYoVC5=LZvD!|&Wv}n`6>5_@{$J&e|n7T?Wud} zj4no_oz^TfLlWq7eXq3I)q_TNMj53T2{ISBE{nhT&?dNiQNDe`9dzpZ`gJwiGP6Js zV+!ChsB9Hy{rN)o6<>XkuhTy{DfNyX3IrdGOEDo6lO(8ko6^aJ^uTqF=nG}L?=U1} z{{f)T)Ms_b{#n>KFXFJ+EiC%_V9B*_+_h{q*gR0G@t2}CZNR3)1zQGmCd7mIb+Rw0 z-Y~YcSyxs(WeVvCez!4In?2m?E!>gJ^^0bk3O9$DGzHCiDAbea$Tzb#o&t0eLd74z zj!~BiDTAi97G%(@%y|;=Xdg^XItc|QQmr6a0KULsWa!MZrEgI2vOEKdX-6HhKx{J9 za326H+`k94;@qAGXTZi$1U(4s)#+PUZYhh%M6)kqgF`+Ro<)QOyG-Q_z}9ZVJrdFc z=Zw3Nth7ZE-6?v;ugtsnRaROyH*J#^u`i-_3d+*S@leF@v_wJ9w!C12uYOPex9oo4 z6cXz3#{vx5`L+>KcYoBmAKYSEXSSLk_X>F*W(O3!eSQ}H*WRCUp28Uad2e;~I~`+H<4ykt zGglF8iJODnnqMhtmh;E!5X6`do?)&7eAy}ngkOo+PH@p^KVEN4Y>gYS9N3w%vfIV- zFRiA8cyY{K4CaF5{GUf{{KCmBJjHiXhRe{WttmO$pszh08J3CDf7G zbqz1phJ*ab2^^#zqR9+PNiQ)7gsaap5a9l^i>O09mg=Z##Oe&&g*-ySGoR#|;0PU< z(vrH}UuJe|XY~Zzn%926Hwd+!f|D-4KYr9YqDl5;8*0EE$Ws7?csYWOoJQY)^>x*_ z!klyZY*tgfY`?9`yB)Kdj4QGHHz#=18)sDo$eC=z*p0Gv|r+vN_EUp!EZY6Y{|Uu-+B7uzKkrw#XnDn%I?jJ-S}@oXoe4CbTL!Bb__q$Q%T& zr4U^T%>*wKB&+$^DF6Tdm1_YvVCNi@%+5UFa!P3zlt-TMsg*>iUpE1_E6tfmEE4SF zgJ)M*l5k=&&u0hU9EnHdnh>&N^r$z!#{pnzlWL#W>_$W2P|dsk^`c&&L%LVK%e1nJ ziHp%Z8==GY!JdAq6r^h{GvpS-`gaoPq&|2sX!j+sz8;qbmCo)No%QaFDeKW zeu#^Cz)_atS0cIL|Blu2fB5A$BX;xNYeVmXXCwAQU^z>{s;|`M>mowB1X6~~1#|I7`i__5attofdt{92e^zD=KN==tvs8)jV-m%sK%Xy=_Uuv-_ z9<)+x+OPe^m7$`&1R4fvQgbiex?&+*qMBHlhD+@<(g?!fA2`< zRqZeqPe<(gx6TU;MDk$mXcQ?44nU|s=m3#$P2_L||}dd}c0*b%oQGDF%I%sA;TffPW3doZA^ck{gddXN#d?+*Q|$hC@Bpa#N% zuKDyw-G(o#$nXPKws1IsT#Tae67Xb{KBoYPN<;^&pqESo%XuN4~L}n`>Z@yUF zbIgm0%Vk^3n)%KybIreDiY%{|pNpryUW45)Qg&gU_i=viQY99$m^#w;_H(^qGNKs<_Ys`0Nj_Rzekj`*kuUJ#RDyMF?+m05Rh6UJpQd+0Wd65B%7k+Y;Mdv zNDX5IMP$eb(gEEN1!x(!>nY#JV6!3h7}%GddpH{&PLW22q?XezrLl=hT;ira%q z5Ox4~qh_#w>U?MRlh8m2$QHB`Hub4+mb<=i)@7D@Nc_eKm6G@Itd=kmDD{>aa#Bj# zGfNH))5mra^Jz%q4a66SPwUs_O{Iq#Pr;kT*&}yO$8rP&m4%{6UKSsdb;U@VIx4zC zzXu#k3JSl=5(gE*UQnQQGUWDB!iG^HxiR}3D#YI|kSJHJ)^93ujOVj6O{4%y>C_Gc zF27^rDY%!jC14m2(}elI|BxmpO?L?VqxPv*STuO&1g~7`?YMYP%{n=d8kWws66Vx2 zd8dOr^XKjM2VFjrQ81_Kjm?S6+Vxx2B-N8I8QC)wNW#5h2Gm(nXe|g{sR{9MbT++M zh#(2$$K=g3Wj+nfWfm&eVuNNNFs9u@X1GZ-Cj{2K+a_VpyVu7Y#8bSX1LvbKZH(TE zr$`-0XEk{>Lk{BT?0Fiv^YanFgMHwF2taHHt(Yp|`Q;L_|3J&I7v!2GHPOp)_MKgq z%BzqOv|@fO9p?~;_TIpB6-+Ej5H$Gzfzm(9lf3q;%JcFpT8+)BFff736x^+sL=l5trGCs;e1^FgW9gkRWl&G9zq$Wbjh`PHQtYhLQif<7WFzSv|n61d*{7p zVPZEh?>sZljmvvlC>?iF+h*K+i~l&patoWBbTZ&{%nSPEVNY=I1i+HxWc$Z|8ladr z>uz>x3bC0E{tT<$mi=lD(T|C18pt7rjiocq7@foHZrWC1k%z@wQ=yVvW z4xDM9t3XZtSu2*)lBaTyS3JXfG=OoB;y8^?%XfFsHhYLwPkE?roB>t_uA8xVKF}R+ zK7L}wty|tc#O;F`sQtbkSEmPwv&F%z@i`Q;4LVDG5GSu7Df6<&gU;5<{A&63m-%lX zGpUZa9ykOaj*0m}ihdynW-!4HQ1+ycFBWb+3WD@*{w;Q09suFj21}UbKB-OW*s(-2 z7q&(`oWRFkZRY8s`!azkccp!53|ru+EmB-#VJ=d0r-8!_^fyHTm(YnC0bX(Os1(|w zg98An>EU`!pZAHl9vK8pj}Y6AD$Gn-!GTRlVT7^H{i5}LM{o+pooxX%NIMx*O)5;1 z^FGo^i7mi<;KyUlsgSy^ zBZtl74X2#-v7|IeTbN9e?K+i5>h^wYK zSV@BM{Dn(SGGH-_8cK00ytHiy?PL@Vg?wbKLQ*;HUywpneVEF&8e!kF`8pMyv&}mzW^hgW@Q6 zW&CvwCv>yUoH_-sT0+%&n3=5?DSycS9LPa7cTo6lB+Eu&!O^$nwW(^BU0w=K$a8M$ z^WW|rtmCAyWUv@j^~u(-ig)7O?#a4}A-LYV&v(w}eC$`aguFabd0?TN#9* zQ>6!j?UhQ$8zPI&@%qMA@E+piX}j#vCSM>AnQmJlz#A38JUspj=5vqp`3u8@}%oCdD8Ny5KmhdF5YCk3wUr352Y<1J-7m=6xW9jdfiYj z#)QRESLn9k6YM(2M9~Va8&@?NZqUkbv7g4X-3tr*lcTtS?>ajz17@RFmeZLA6jO=7 z9{MjB`C*-FWT50jkXcd88}VUd-{SoAbz`1WBy_P+KPNuhJaSn&_UHj?ppt7>W<@aR zvWbbQ3A@w^(W}Cc^T1FWww&*h?Go5Wswa#s<HrNYYnKTFnH(mo&1;f>*pUDLKmSj`2MpBWG-!zMv zRD1C+&-*CpeuBXhcx=%nD_hOUe$VcrX-q1gA24}|Up>pf74<#RYAPD)`z4BLP}vLH ziw<3Q-1bwWDXYj>WBoI0(p}Rq$-`r~*UQ}G(8NZ&R*Y^B|6@av=ii<@9^5N&2BopP4=?TIR$~6C6h&8x}N8S1i~mCk@`KZo-4e$ z^|3TTmPg9-Qc#!r9}D&-lSEhEJv=supt;QbSEiusAK>`z#EVPq|R#j96*f`gMt0fN`M?-wwmdPi_$q7Gwm9?fn_H7--@B z&&`~4fk%NzFN(u6#R)5k9U0N{z(u6#FsZ`uvdM&ska39;P{+_w)K0WbJR$(#e3vC6 ziU71`4cHT(qyqC95o%k9j=zH7Z9EO8{IDVXq#f?SU&+rd+$62rWel>Km*G00C$c^- z)3Xk9H9yd;t4(D;-ME^HVqkta^_tcae`vQX+_(yt-i(qWxpPSTKS>o_dPeqNMM3Nv zAyz$ETadwZYn5D#rf`4sJ8BZ0B-08vIAie|b@p@^y+4?VNu#O}juaDO21bVHu3@4^ zP=`3Q-A?)g8vLJ%$s0IZZ7uVK?OK^y(4)2DXrma?93pO*r}5hufIo4?>$aIVRrw(- zy&;d;U+&wc0k?21C6OE&FwCoTFYz^VD;|Ek@N|sjp}^?KZA`FK$$G$U^SCRc2n4f~ z&8K!Hr{)CigLtPX9s$|^>a1$XqaQSy&qDL; z(uWse)Uks^SlCvIp#ZU5@aL(C4Vnq{kX_ud*is~Y)JtoVPBTzEpRcCfv+Z?yKF46;*oDC zhXp!qUNmlcgq)K#y6fP@^teiB`*5968X+tTqxM_tNnP6Tymn$ti@x)#YN4_bCsC>a zF3x|sNV3l0WDT0$wGd52`bvrW<4=_`!oqm>LQ88DFTzKrf^~rV8y9zk(0g~elNx;@ zi_^UB1Y+H!SyUN_+O|p9_$69ML>R~fckMLQaz{>@L*u4B0+eHfEzH@nwDjLDPjW1~ zkxJU!_2itBWVJ_LG}FGx^g7D~xzcHMV?zUl^wom3LBIXw5sYg=CPIR&4jvI>e2pPm zLyZ&Us1O>-!%m5odzXk08a2Bu&NADTN}bS&C@(}mx)&OKLfxFRt7S)6U8h0@WHbI0 zFv@TS5xM?FHh-vcb)~}WcmO{HR!8XgUd{Pq#OVUnlZ6Z@(BD;?hGEF z^O-(a(r6)?0p~h`DvVI(cmqdHvQ(L6DFrJ_ek&L7u%dki4a5A|eTF16T4P_rop&e; zaVN~hqtLlW%K=@-X7H3-%%|F4cPTjzhtDHnTYZ9>xp{XZqkts+=ZxFK_by;$1OHp@ zk!exw-8%eZ5!kpZ*pD%`_sI7U>=f_i_+IG$fFXQ9%zSjw2LzqxD1o$)gCO~EAp~b6 zDIstPQ;<6*$*X#u_)5jH%oCIBFl1hf*taIF_)eVsyJBYIMuL~vjJNJF`gZrYuyq2B zj7|lucHgd2N3m`|_f*9xcfjAF>#=m%ksy(#WF|>c%cQ&KjgJU&7fF2KV*~8k&$q&4 z4v*~oSAy~IxtI2Wq`oyiSt`RZT8UZD4oZjZHSynG>S+Y>Tl4F#MTQu>zuq54LN3pO zLm~T=U0J@Yp3Y+u-y<}q_M>I-$>Vp_C0*&LuF1g;4miORL%wwFPivP3OA6n4WDScw z)?*XcC!*@J5Q3hBSuMH_1FA|ZFH~XFPpsN^ELN3zwX`TehU2CxkpMS)(^ij3X@_&;a>gyhf znEm)hiFJphd(xC1RBbb`6uM-}o&v{g?JR6X@3NF-8*hGh?vsZSl)vKLi}@XBk8{ zwLt^`r)3pDc-HphubxIeGAb1+sRpkPKB{N_o6aY*d5(h9os!>G5mCdNN;uD#v4)+* za6BZ**`!g(9K0Fgm@mk&w6nYRM1+)Tn*~x}%9nT+$+Q+5HDO zSK@;C>QavNw|%8lEIHAx!TuJ;>E5SQd*>&VW zbncM(!S2<9cxMl#m)X{uL5EF)o&@XZM5&VHN$EtKR&WtTYs09o7;+^S-6$THDv?bJ z9u&?RCInj(Vn5V*28*6wO=eFu5jPyTFDPkAv?EvnHbe(7hS9}NYIt=#J^Z3uF`|#~ zBz2sS+!sT)kW+=3-1qCjfLY`IJmmGcd?sB?2OfSzfcd~9e_8{P-ZyjCe=}zx!R5XP z+YjY@rnh)2F^~;2ug&qNzaLr}Bv_Ho+XlR6qW*n<+>9=Jwv%wY>S25eg`Bpq{Gr&p zL9kseGFy5N0S%SKCua4frt^ajeZx%j4v{=mSHBp=v%0bYJ6dWWq=GO@&Fu4 z(XD800hRD-yrDd4Y#rS-@T}WJ*-WJ@NLTojOZ z2%Qiz-rNZf#a@eg#-mq7>4d=4#HNa>3St`5)1E;Mt&|y)QWsiE#7xbniD%}a7rn?S zEaKQDt^3-50T)jcGsdlIw?(hwsd=onPJ-E->zosQ>gmtG)$jUl>x+w{^zLC9gG6ZW zgPUvr6JhkAz(gxWgkzKzm+{oiQO&j~Ej!HH1v5Vk&+e~0%CP+iFGPBJTj$`S7fsUi zP8Xuo$oyGucZLHHxBuMG2Zbfg~AB(|l> zLHGf|nc6QD)L@DnB(|`U~opI?< zZi)W+9VMl8$Uf6{cnsR;9OY#d&g{SQ0-ZDFZ-Sy3^-0BHJy*@xuB3g--}Pu@@tt#s z&VCJwH)Z}4JkgoQ00$hr`4L^2*J~Z*T@X_GW3y_YpC+|f!m9pB=rajb?GCG}KVZS9 zDlkU1UvN0hJ3<}|ZhxGlrqMRcQ&WHzGWR!WK;qWNkP^rTjVoy2W_vR}U1w%cO1T%x zveB8_@ESRZY(W`Z z-&@Km{DOx+Fi|(p%}usj6Jf+)V^zO<9AAsTo;0i)GIbn8{!}gGkPySsn3|L7v+G#3 zQ8TDYI*<$JBTr8c6iYmyy;DtFJgIe zmHkrd97jZ?aMPnnr$D~f>)HV08N=jN-crR&c8_p>C~!NYXZyT@2=JTy(Oqy@l{T=)rd$tCbSmBhiwQL29o56vG9 z4{v+lBrBdU6-6fKOM`wBr5K25MbiTzS|r8FR5TcF*rG{5KQCS(PJ;XmZm-IDu4yn7 zGXi5_c^Qxjo|b6dhDhKB@d4y(!JQVlMH;Q^wzF-IpIZCIMZw5TAA+SCDE#4l>T|+k zh&TM7R0%fIf}?apS&4&V^p_L3eiLukroW7c8=KE2tRN$$u(mv`Ns+^nTmy1sN!B#| zbu8_inh4L|vMZ-s-%uU!&6go_76Ih}x5@susLY?XkJHc=m{J{ds=&Q?dK10fhGBZ@ zRuUW@<_de!{%S&q31!d@q|fDkXn~DlrZCE4^F@p&6Za7=862nPP;6@X%@bHR4e5z_ z{YhGFDfDcK8&>>*tAB()f#R&vX*4qboeGhF3l*hxdS4_K?z{ht;RjR;fr$-frcARE zlXPX~6h4Im;Ii(r`kc-S>FX>_W4xQ*JvuB&{= z(tx`MntF%}9G~7zy9S<%{_Au%9qi!!a$#aNda4iDeG%~|gEH3Qc+epe^?pxYPO%(B zthVHXl9%>;G(~8u^xwA1jPLT|TN9Ha#90-1K1LBNXKxnVl;tnt?R7O>OHR?Zim;Pk z;43tJDSSFt4dY(v#%l%y2stf`@e{D<>sMbJM{MOZD(#^e{`zwJw$GNMLO;zUB%`u{ z-<}m&pigYM?mWOw+MKd(loE@KTK>d7@+#XEe9y)E8Sy-uJ%p`Xnb>EaFf?-rc!^mtbk$ZYa^f`VPfNi2C&aID8Bbjv|YW##= zJKL-f+6vMB8nj+02`5Atr`x*jY1L0_CFfXAGXUIu!b6UHxuzHc$L@Jz=x?f(KBv#n z2wqb`tzz?73qX+J?yIOL17ULo2C2|ropyp>aIhzm>#tbCnBX1b^wm%=Mw00(Fk-C*|g2Z#N8Bk~~+IQ^58pdGX zHZfQAzP|nQB-C@Vbi^V^7-{oT>-lIA>Xn06`1aph@gD$ywx(uMrxMOSnaYNu&Rck8 zgkcl>>r>OyMj)P52Im{uhxR;y_;^0g>Rp z1a^tkD4d9&Eb55{4}qiQWR{N|QL0m51VUzZwTN+cmYjvFh_(Ib1-oT6ytZ#2f&#au zMM_lvfch;})vv}RoJSI41X<&StfO8Rd6h8DJp`Lgz|AEO+I^f#>_(dHV52J8e|<5( zXJle}d2k8eReu)O-5<6rx(IzR)8EE^`fae@0WdxZxLy!o4U&b>jh#pM+TVic_>)+< zIs;`s22c2FB5|&As=8Eg+h^$)(3HChk_zPL#lr}CfvUBcE$*_J$VW+y*TtyF zL0KPH;!GDm3=g#e`nt{BdRHcM}>Lh%j zP*aG$em)A4;$F`)2((w_$1^C*nAO!&vvuS+Fxs(%CxjbNj3q{|fCVY@IV+8oXX4u8p9g zf|?>gW}!#~zGtoT_lo+9CP$qxNJG7mI;mBcGX@`_^~bAw!Gk#)T<1o*fyWocf@s~= zs+&pY6363I8kSWzR?o0Q1}Tz{;*NR_nTpq7r1iW@oIX#V?d4;om96XVOpSFfS9)MK z`zE03kSt7c&B2o;9)hF*tzgpBc`hZ zTT^h^5@G8XZQ@+f#JQdb2t@a>7T#rk=1v?I2uPzbl+>9a*Oho=fm6hJmmt{bU2i(# zKkv<$)0Z3EGZV29zPfzCnoOQ_Ak;uQOy^p^X#CvnKA%vCQ^4=CXA89(LnXx@%GI8* z?WXrchWJb&Y$jWU(CIQC>6%;*Y8Z3 zyg?3+MWDc*ovm__G3Z4#NwN`mmYUK7sytfSW~!MCSSxI+3!mo?QrQnO@;6^nx-Xw) z-T1*`J8D)z{jJVGaBXBf8NQB#$(0;M1WZ43xK9icI68ay&us#yG++OZC$fr-ki+w# z6Oi+ap#3vtVyhCW14LHvRs3feN;T3jk=o+WcZ=ol|#yDi$?58k5q^$*4|AXm{}*!lk3BDswmryU#MJyT_)_ zy|LVqK!eSV`bM0eehl~PJ|BTP>DDOVCp@KTLv8??_6`pU*T3Boe?l)hYLK-~KQ@Oi z9@#WP8H)U(OpyJ#&uT**OPS{814|Mr?&WL}F}nW@rhD$$8jUxW5^4Rh@5Sz3H3~D& zm2N&eliV`1Q$&b*ZPceNPkptU8W|cdpWJKKPYkYqcFkFA?^99OYeguLCeh4ZBYt$At zuwINpGmi?&>bWa-2S#-XMarh&crpQm8IN}h+*c-sJPBO8R&BEeoI=wz0mBI(!(aG6 z(0s;nR6Bz8@&m~uvtWn($2S#vZ@q?r0-C6fYKX~R@5$B&5{9og&5cr#ery@4k**2A zPrTFDaM^3;HdA@X)mN{-ZY!s+YvTOvJzI(!-! zQ+M|?Wm!784Lp&BdO;5CqBYEvJIQx~#gns?*uW7QjgTgC$V|{v0;IG}vi2T0uTBF? zgy2@@wnzu&t$}`r7lAzb`@SKCl47E-R06MqVh#;%bs~XWjk(p(7Z(_OxbItD|IPB&M2Pk zk(CM#KLqx!b*5ytX;(jS>DgHV5(H)jl5LOdn`2SDjiO8L=*2JS%=D*L!pTybz5e3`E|HyT~=+fI)A6f;oB@-SyUxc|U0q3!{ug)wJ%gWKe`UkEM;2{g7e zl?Dg2{?`-{+k~o><4LsQ3wucQdsyD!WHe!ippvm}Y`9t_*RxKMX19&(<(pY7M;| z!UM%ht3GoQ0n*L1w^wAFmHu_l3{K4mlb4MwUc2B6WGvd)vGe-Z1ErB^$m)N1m^)<@ z6%q>2tkl1g>nx3i3AW`Lf8%eaJ}6M=Z+oTi=;H+`70FFC#VszGFA8*~z!7ZtSl!wL zTrbcN+5ZAKw42s~N&GK}yw-ZqlnchZR6a*3JG|l^~ZL z^S#$^y}F&oqFv#GRrJc%&OZ)+#;{<#NY4*eO?slU;^ zUB1lf*_pof5%|UgxQ!B+sGu&WgiUAwV@!p7Ll+DMdv#9OlM!XCiLLp-_ItF#L<1B% zhzS75*rgs&qSAKkm@v4BhJt-5tARX0%)hsJwF0x6NIzS;v!NOURfKMWzmHv`oXqrw%l0;Sx{e2k8kN8Q7os zW$ijM6yQg_=_%kkKuiR&D!Y}Y+N`uv=oK;E@bZPD2i#wVN)*{m&(LI>Uz4|)|QJCH!vV81C z9=+)#>6HMh1sKOEk65E~!C6gBbt;F*Z2cz{b zsPiStOhT#h(3YzB`!&^&zTfm3WDm5v2YU3ak^b&C~*+z%WQwR;G_uBN?hT zxASHASfQR;;P_QB(1zQ`*HwIdwy_zq6cWU;gZiJOHu}A|^8m(t*nA?|9RAXC1IGdm z0B7+^hVSAPeIUm_8p+RHpA0U<$0BdIGPlF;Gq=AnnZBspXgFB>9{d0shEh z(7f<7M=_}y=9Hw7HVE5(Xv;VSBGfFRr-fr6&NZ&-L6>rW@w)AZP#R?5=kJ#IAygTe zFTWw3z^u%IAxziV@+g{*WX4ugx>gRs-;P;pki=t14=6i~yK9DqpCV<(4F7f?QArP- zz@FQk#%{B1*T*ztk9eL{AH?L%6M1tmR4LJuOA z#DERb2SMqye*dz*4G}bvz4KDWdTxU~SH7YuqxZAi;q)eRH>y+&1Gh}ga=c{j3am)! zO`#xR9^R}jaQyI_K4qdg1N(x(*k`u(m;;>Tt?~Xxgv^#lLG?>_6bujapbgCm;O)YqBX@c1E2~e$)@O z^Y@C#vKhKD0{^|r{sj(1RIt;p^ZqsH!3z9Kf_2La`S3r=RGWV&IXvp z<#40b4I@1NUEe1~rxQeYQnT21W0s2f!`3!42erb1XuqrmIxV_k|j zN$xk%Edtc#1+2VPeaZ&nxVrA?Fk(hZCLbB@!-IKYqF{qx-ya^|a*LfS;9Nd}B=||R zu|sgLV!F&y0c0k|;6cQ7R_nPC6mW;i9A&EHhl8TEc#zejBYs8{(cIzEt6xHaLca+& zoWyBU1qRly5(G=Kh$EbK7Vjdz{5W%xkm*lP06<`MPT{qFJy=za`8u(HjUpsc&gW!C zBfO4_b32UarhxZ`dGBrpuMp=5pV(=hO{N_>l$ZdwamGX!@03Hq&CDYZMeE&E>3 zxz&U7)M7SY`U)5Qf3n3gJFX12eY`Q`%^nA5onS5~n;;=J^A{i;BU|-hB)C%%q7}53 zj+@u6N^9IFj$B=UP~sN#IU960(1^nv+AL4DXw%YXi zATGM-bv+wPlS<34=a~99wRY~~i5F1?-DtFIJ>f49FIG#DzjawtQOkt)EaJv$Os4uI zW!V8T;MrRB89V4wt&^ImmW%vRI_{>9u>$1YCKI+8bL*OG9ng2cjbh9&r_C{j%C}X7 zGE0w#l+oT(_^9}^+2=UY)(-{AF81oTOW5ziAN6N+(LIR5>u!k4`WM+dcnrhl=LI^n z<((;j^>-o-B=p*BtT3}`*$|n70UEWNI><@Xc`-mW9#|*Q$boPomlrt`=&!?gbbFf5 ziR9lFJm{$U>$MdL2AW~Oz$4U`{a^A63m}`(bK=!sdyb&08Y987UCzf_*b4y!~{E;L{uZpR5Vb;YLFG!P*eq_jp4fVZ5pTz#^SM}bLxv^X=%QL z&({8c(o#VHnb*tT@Zi#I!AsGzB{)7LO>cGyRsb-+ujhp2$6^nRDkdfg%ROvUw91k( z+uE*Jmjlde7c;fB<1mxEAJkNXZVY25K@w);+t5gD9?643fy2a`f|$m*m3U~+w7p_5 zk=nad?^a}gs-+?vniHJ#gsd4@1%t(l^fqE_^gbDry_2UFnl!AuyRIAluw$={XA-Bw zxMUDZ4|73QJ}i}?#Vd!oyOHN&vH=aZekipMLT{n}T}7mua6haj1JM4lXUuax8zD*O zdX6$0`B#k8At3w|2BTt~)C;(L)E_^*w4!b$6Jw_#2r$NJNSB!x)oo)IEa|~wNlzpj zdK%51;9+wGknU6~{-~HWByZTIJ@sGMxACtlP|(;iSs}lPjEKc@jWEB=B;cWleu4ba zzgy*5u--Z`+}uK@X*Gp9z%Q>3+<6MVv^tTz4(ZTz!I0uI%a`(+df09u6jtD@?v#B6 zH#lRv8N{yi-wukvc_K^OD?+-Br9mIqsj15>X_yuWb`QwjDB86iFVt#Q2wPrs;wRX@ z?F_gLSx#$On??Twy6Bj)d_TU2?EL?c|9EtThlr3eoTi{qC(vJ(5p*D^deCdr1+!|i z8Uc_jpYD`j3E$mm}U+Q zPo-7TLmr5)TaFs0<-({@&9(Nmm#^OivyqY0@}{=(qmkXKsaOa_Uk`>xf2?DmtMaSTMUu;{*B#P~^xATZ8(0`!dxNiN zJYsGeug!jW+`5bO7ppiqC{P2O(hob~k}B4(T$8SF@l+_3oEmAQs@n?pVpk%7P&y+L z@4h_Ass=-F_STRf2^X-Y;9PKX{3dkbpDA_6Z*VPtX1FUk6jXd=_*?@Z9AwS^0Evvk zeCyFWdZ5$88p<#1Bls+H=3y5jPWa%)oODi4y_oJ^0)GMu*+XmLY6rxW!9`C_c739* z^(!T((pP&`$8c~KSeOIRXwDkVyBB<4sA6stJ<-L~dVrrCK%-?zmh|^6IS{Li%&vF5 zgS=sZLLRa(N|8oxZ+MsuC9miQ6)}!%t0zLb9_Yfx3d{4V>WD?f4kC9@11TE; z;0InlNDY3j0GvR%Rf5$Y(elwQJnaMuQQ`SSBuq%l$gE|+C4{c$tD()VOtH~-i5Ng_ zH8aPmjdEt{@GK&A83?f>27elS)Nn#fosX=}*G% zbQ|FX0Dr|Tro4gh1Duzld-y29{y>Oi_wK*3J9YG2{KT*1_1YC&QT^fhoRvDN3jOT> zWG>lKqwcs#jrh!oNFBn^XycEA6)-m3@d^+_;S;AuY-7*NRWv9L=s!IyR!{p8`|pmD z$5~dE#^yFqcAmcq@HS5ubbRX0piND~SP=3N23jD<)Gk1nB!0D0O+QYVYOw3;!}FoT za5sH)#nd>H@ar-xgof~#rHXjE;-F~P_VJHOYbuezj{DO(i_y8)Pue*RrQ2fuy;BJ( zW~J@I59;RgUeu1Fj#s2B_E0-tV`}FmF#^&cEAB!@zovhJhd_>D1DG{7_b#;P7Cb9a zt!q7QK??(%>8+q7YdZgZ{u4L8KezpFLafS~XI>XwY_-l7#X+tVxJDsPg05VqrE{kl zg3*WkoobGk4Oo7mDR1uU+WdvF63IURp_1h`(J8e91M0-CPpM?`zYwe)rf^+Yx7@<7oxB{wcXdx-?7?uUX)+B?K$rG zT@-<~;k5YTGD~I5IVsGgiPK$%gJl0^ZekM)TT(5Jil52ln`-uGarfS$iUg$XBsm>P zN5_&c_;IV^_mtpbe!^84_?Bje-#_j5vu#$(07foL4At3U!9{61F};~vP`f_OCmqem zJOR&rGElU-m}lc=ZuwbUz$BMxidSoOl9e)L`gf2^can0<;Tb+=)<!r)u6Kza7X#{0#Ur$<(l6c(~{tlWO>}LDeh*hhf1bLk{+U zHkjk4BmL1^NI%f~%dn7jbvG4t{2G6841Nw%CZ>AmTMrZ91C!;ZIuZ5HI(6(euSuGU zsXWpEAtQl+)&km4t++?g@^0<3SrtBt-lonn*j3$Hac`k+y|Yj#+iuNEMrIORXk^Dv zN$+3G+$p{V`~4Cn%ma$f05PUf7dzw5Y_k%!ZY$I;>H2PrP|yd1L(oyts_7Dve|P(d zIWuFM_&0Z%y010ub!lc^-(Zn3o(&3&0?a81BWzv@xsqRY?|gf}>kSi3fzuy)4v8Os zq8d_k`@KxlzR{5K$35M??1u=kEonWtOAydD9SAW0kjPsD`NP$S0`x?R)Sh<0mSj87 z$gQViN8H%s{Yzarg*+<__!@8;Qn+Edai~~!krNC5LYc>~C?6oNZxFBzTz_0|%CpHT z;W_*E3(se5p;~2CK~cXNGqj72DPnZPz7~|eLu6?{K3e!) zx%e@1_87pup54U-PK1_BgKkc7!-LszSeZ%gr_BsDWfh`z;5Hx}Xo$2Ag0h)2kaz_T zS{am!3Ny{2-39y!Ct9AMip3gt-t*je-<#XC65^K*>vaOKC612 zz8bk??+0^A0ay=t&EITb`-fQ%uUDNwSIo4<6~Q=nVGiQEk@~$eb7CPQLsjC+DBTnA zh~k<#wCPGg@j{*a7G{Tq;mGHNh^~Z^3pzU)pXE9H5>6(pSWKJ|+`!Jp zV@eDtZSNVyd3j?#@~lq8HOE=^Te?J`zi7_LjKU|vb{eo#j!o7L1@eU;b?O)RfUgwC z75PM6uVZ) z$5=BFso5x*D9pf&W+(P1Kk4{E3fK~!qe0yNO zbW9OzuRy!Q*pH3be+TfiKr`Xu4kcf~f5@)=o=15vNm7PiR@wVu1iX>N$g+{>@UXrC zp9SnGc9fSpInX%$uNz zHd4%meIov&T$*6uqYY*sh=$wA_EXfau~<~Q26F2@QL*h01vRflCW4)d40Z=#^f?S3MVQL8)eG}NB58Q4yY^7eQI{OQ9BPmh9R^8wJf+3<9iro>@mWs$y~ZR3rLZ@a!h z&mH45{CW{1m$S@4axl`i_LA==QJlW!fVB`aj{}!?xeuZ)Mb9UGAORuays7r*BvmDk z=uBca6J?f}#1JBjD1PK@fqd|lJPCZf@Kr?H9dVur;C46|%AIRsRWk~r)_^2W#`u`s z*%QBXxcukPl_VM{s-R#Sr~KQGfb&^emI3WAL9eF~pjDO3&FEibZBKpvoIM>rEiSd5 zH9;gtMu8dmUt}P*N<~o?()Zs6+C2i|JM%{PQ;F#kR=u2iC9^)@6uL}j`UK2PP6Tyi+6|rI32ww z#bJTv$AN0U=!G;W+L=G-%uD=iED4x<`1(qh((F^V%A1j_Lc9~GZ2hrVj!4i3vGT3k>a@-H{1gyAjr>%AC-g`vO(rM8*c;SL z-M2JSmiJc$Ca(*wQjz!e+6ghadKT^`a8!+mMlyHlkVG`E(EBH%!c!` ztgesfmK8TUoJ@Du=Vp7+=aekWzCEP2N#B}+PsKLa7a34~<|d(4Qb!AQx>X)Ba$_@B z!M_=AG1RrAH)$l;2lhC6qj=pf0molwzrWGYG%M}`vMS+B`n@FMXAdezBx1o1UPbaV zrPz03pO3P)RX(~b`D0JSE-kiqEHhI1iN^1He_#?0wOsMf{|gk|sc{6VOHNHdQJa$a zsvhTlKb}g>MN)=p-noJYl^^_+i9kH5Ixm>RY?mo7Vs4uok1R7o#+L5Mb*5nOAM`T8 z$R7}RFWa(U^mofsl%(dL`Lx0#uxbsYn<&KTe&cH;T>RHE>gMazkhA1+n*(A!b-^x( zh4p6C(wPF(z@oL0%L~)tps4No?C~^&xf8AQJZUXVcouNQEZYrFycsMtX@f~skj)^E zBN}1sSpjJz*mmW1mFWg$^5IEzv^(r?fvY;%vJrYX3?WV)1eSYKIo5bFQMv;{v?^GS zllO`d>a`7OJMYe=aOsv(_DCokzA7ZF!%E%Ve8+7#?ef$YOtX)m+%9K0z2>Hup6|DOWK1%F6@f2+wzJLbxnGHH-B85qg$h%$M!KuopQNk{KWn*uNO0yN56LPDN z(z>-`39R$e#F=T+<@cKkm!5Bul&F3mgzw7QYS=$r|9A)6aC{jKn=ib)4laUF zGL^HLQw6KzNjCEe;JRd&<$Vim+`=+Kaubz!Yw$i(!Jbxh8a8TxTheU*cY!(WZOtwo zxOoCz6*qnjVN~2))h_r$ms3to_)e?FX%SRfxYup(Vy~vpsb3bEzl*&Fpsb_$#l09u zXV8J^A0WMQqk9T$_PNo*__jN9nU7*?Zq009_4;l9qV%%6(;iF;00P6Hpy$_D%=82C z9PNBR;GYP!P_VSr+ENn(Edh_R5-u148*u~cHJ&2hnE3icZHqcAX{SitzYRDZHtr+W znML8atlf1-0jyp2WOX*%aBWpYq+dpHrLL6t7~G(=e8;#wrj3;glr$ZNF^c#BW=m<8*zo zyVrOtxX@t1m}oCV9jFs~n136Q59rB3Vzkt)Ce{9lH|~G{rEDQ+p)miJuj=iWW}kSe#40ZyZukc>f1C11Th%9iFF&>AUzDi>Y=#6vF~G45DI0PT4%1_=;|wV)Gy5tF*X?P%$#0CyU+6as z{v~6qL-BpxiLkxXbrAHl@@812f?E@gR8pO@`AGlbJ#eWcFS}gWAN#(LS}%zkMa3Ug z*^dsoG@X4YH5}->ut=Po-K!P73RQM`eNcJI=lC^!BJfqH1$SrpDTyA0$n~UiVEG^_ z8ORWNpQWf@-20@TQ>6lMXA$28zrz7i8lJB(CVZY+AU{FJt_~183e7LOEl18SYm#C} zN4zueZ&^*GAr-v|#x!>xmd*h`3{@#+HP{TizJS^!6&nVG?kPXkdn$Ja$j=XJ0@>3zg>0ZJL3S7-zb2X zESkQQ*8-d1oMVUBy#DhIQ9+tL4ZH6JBv`^sb2{)ERDO)FwMS{(Y=)&s9(pO?K;;4t zA5>ZX1J4*mW;(MjQ~mqpBQ%sA`+JmO)(Y#C7%^}4INCx3hE)}tPI-^irq4%fAivu%FHH!6ie}}!*h9jIf(o)GQ2MB92DgURZb~pLlPjwcUi?F$`nflbi zYX||%zQJAE+r{&19E!0Sk~A*Jk{f z+T&l-rXN-&o=<$Zi&7DZE0K?Xu3>N15o*J@@VwJ5%>0s`WDYW}pO<9Bx3yLa%a7B@ zLvf%I<-0}l!sIk5_mt#&!A4pL@Xq4A-|%!h0QzqUw((k-)b=Z(t>K7u5m0!>Fq%i* zL_pe|EHI_%SwY$I%m}B&3AG82Vi!GDPK%50Cbfwo*%q@Ev9n#=Z_d(iKa~OnCw7Up zkA&I%7j+)QdR=@4YHFeN;T`3V%_OIIf8c|a3A%Eclw+El259y&#r`oo^8c!J24Uwi zJ7tpb-8rS13)=1=LG{M}sr*f@!3?{A$Ip4&+LzCsYG1}j4FZWyWf;lI7-iQgI~A_zr2pRqzkhEQCFApH~)^IU( zLCd9Q4g_8Y#YRgBB0BAz;Vo5e-Y#OZQs|*KfUH2iWr(L-!WU6Bpb@i~XA7i) zWtc>t-~a0>$iT5eDvR#k%YBQV{dOL zFzpApc&VFCKMeq?6WT#Bj~#vMF+s=X;q2sK_ot6D0{-cL$`-%cv}RUXL(G*zsE}Xv zSsB^96nJa+!i<$t1@h&WLc-HRy5RD(xm}IaD5n)s-wi)sWd(Nl_Jrt9w9jtko8o+Xs30qukc-%nYfMvL%yIM!&t;w6fj$#@z;a1LYV3Jjp`H z18kwUZpiR=m-8e#!d~s}U4pY8aG3Y|A8zgDtNaUd#E>C42sGkfQumyfd9WM^OPNgl z@rfJn`2Dfn@p>r7yP9@)me!`X`9>b2+Tl|0HKAM+O;ERuAg#NLeRC>eT#_PQ3or_O z*(5u-t^cVHp#Aky;_)}|i|Ra><0>x5mR{P3Hn5VXCtxG#AXR)ccwM@UdPOwUL@pFn z2IyCPjB-L@EK6rN1W%3y7^mjx`Q(40Eez6}F;e!lZ@0jpg9^gO*~V-u2oFqhZT^SY zC8oSUXhG&0Q59k?9#_ee&yJ;3+w*hCQ@sD5Gkw487iknuoYc8oHR6r8cnC8LV2+CK!`#w>)d5ZezT=a|Gvufb8qrMJZo08B8074F%$B0Kd*P z6y4!_Uqf-rDMwIJ_(A&bCqGdD4EFlT(^0!Uu%kWnekv1gI^xX(vsztluP~Uf*!P#tJS1K( zD5!8nY4Mq$=?x?o5}TL72BV7ILyHyA(*9hGYf=SjlTiGMn0);pkyBS9*29DcQPf`b z!+5zQ)y9RfHXAt>SSdUUK=xiC->)j)fGZHdVP)$SRAJWk5eCSKA|Q)k&}Rx;eC4ys2w zhe@GfkLi=@R$dR)cIb@qE>*L^%B0F;5|_{;#86GsLim*m+z-e|}ka zHCA8+Eox{U*xdi9B)mOCM;|On%>4<7s}qA|W}C}Q`6=>62Y;F~jmk4n?eDCkh@hGQ zz6AMn0Ai3G#@^gB`i2}hL(zhR_7teR5oS=l_*-Z0h#V(1o!ggSn4&rDDc8d)s%q6E zJa&)YwVhTbH>0=`wDJ#*_rIU?rY2a?F3w>9SKE=?eFXF^Y#IeV%(BX;lGdP#F4)9U zbHEa{v7$FWsu1f0a3RvNYu!-)2RX85`~v9zPVR{|`J6J`KGgYQleo1|p!u#cmiOW= z0nd7fLU9T;Xwj^3wObzloEfmFs@ikc3Fuby)JZ_)%t2mpocgM z=pvaZLsU=nQPyk=GDAMX-ruVR_4c{#yb=OHRq%17vjYRfcj2r^S?d|;^?O;>qF84e zU3{Z^j4DGKlb;TbQxyk_)UKsuZR6y8pXu_ODb-gvm1Ut$9&XNyoPc zr_S~D^)>6=K(+9MrO$Rf&tz>ljisAcy(Nw88Y5A3OIUkPyiRjg%`#nT$HI z=ZE&r>yZ3X2P=1HPJ?OaNNBC7Ov@G2uCP{6K0L4qg4#<<7d%9|aJIO3+cTD1{wbO& z1N^{r8KOQ$@26y~;MXN;*rD9>?z8;M^qORB$-x?xE0wbP|GuaekGNVeg+_Nzjz1XO z#c!w&Z#vT`IbQJoPGL=uwg(F()m7}dp}4%SA`_ROFHiWpiQldVuT&8_hSxI4I#4hL z6kv>$nf9Iudphk^#vq3+QK)r2LL6An_qr3Pl;3WFUNl2iY-mT|IqfggA_Ao0u)e6c zRr9LO=w_cA)xsa)mQkKaFL;XF>Tm?XC^~$5y?jpbrQmU&Sd-+Rf(7zQL@D?uji$Re zR8E;2my@Ih4nxFm`!t-q30cBt^S?oM$CC&M?E)ye7i9PGvJbY5N_46h0Wzo!Cu8c0Qf2kCTg9B5^+@eB zQy;l#0#c^M{w@v1SO+GIXFmmXC`R{@@i0jJ>$1jTu`rUX@chPr!B3zfYM&6JmI=U3 z<`%*q9@$AVZJ_4J`2`f^rPFl$N6wYd8e;SjrLi-QGwZ7q@WjOBC?C+C=LkEqXe?(` z_95QZ1Rt=I+1psSOKo79UHl*bw10^t61?d$+_=7R52TQ&-Y5y^CxKh`06-=NTCGe0@sK*cw9^q|mQ=2U8EBRFmgfhs$QH_2e+7Gx!OS*WA^VlZdNZZCn$v=b8unC!%(-cYi^>)fuOD?N;PdR^Y1m#& z_@kWL4L=y1@YG532dcjkYJhV3UC-;so?)dqD!YFxr{%P5h_;wixnr2`Vg59Clkp8r zY_K+V)Z=V~w`G0jKL7;zydeYb7UO=Fd@Dlxsy0wYtJk38YuFp4`r?*`gX{df;#MD3 z%Zyw~yT|^Kopeo-jxoX&@f_mx=_miSjg(q(&Lgc*OyVG)MVabCx-(7%mvWV`w!F!E zj|}h&{L$hFq?BhHpzjVw88_c}d}xqW2>NM#G{N7|jvNhHSWYsc+0;?bR5b4Qi1;rm zZc@4QY$kNPe8`kv;g`?%{I3=?Hu->Th%`hEy#QQ}fSpc)eWq}Geyzu!q0x)td+q-qlh924*wFJD%UN2vosot#B$Mo^{dKy2~tSmmBPk-gQl+{ zdTgWxTj&ln4wwBedls*JLn`}Q;kJW(6zC=o+}A$fMITpc1(fr1P`1}YjS5G}-Y!De zIPvysQN8nKwwj5(E`APXI36DKR4%I+R|U+Z&ZbYsem3zI8t(k4U{43QC%P@CM$!aD zb_=^-ioe~fBw?lrBbpRxEuTCPv79BBMttT2a0YIR(-O!&WxV6W6m>sQ2d~jb@|)Tc z`T-b2|H4EeQ+DJ~^Cxa#q(*jBkZKM!%1E}gPT2^x|HQ(7FJXn zni$@k`V1b-r*2YwUqOubU`RA$eGndKGMJx*n<=?wXh2#JQF@i>8HX+fgA|jzv%vG; zdtbp(kN2zDQz-RlP2|4sP|m{%U${Y=sbwKClMn-kHpu?BcVi zcQS_yUHMgE8fA`X0Rtfo)u-0i{B^Trqe~k%2F$(LkeKw%x^n83JrYSQn=Nz?<I$Wv9H;(eLM`Pb%P)~_sAz}G?%}>hX3zQyUY8{-oDH#H7BVD-?(%uzxPktG(Flv7 z?b5sDaa!G1(4+R-(Ca0*U;XKtc$T`-)SiecmPRhYld;f8*S(*m)_%sS6KeYdI zRPKkAMGh6|xGQ9>Nr8UB&A^9SFFx-&M2t%;2GcFk#7McP<|w?}fAE+chq;(y_Ut5R z{gQ+e8C;7m{VwjC;k3pZWl=k}DU%HWDh~!Px%)40NV=U@<&TiT#WGa?&^YvnZ04tm zB|cQ!tKzt^oMnTzc6!{M@1_g{W`*O7dhugiJLJNKjNryP%I8c~+m9FM{8**BH#)7O zl7hm2w;!Q`kmLDr63YXM8aNoXZus$Lm&K3y$1zy5J0c$HQ}%_s2eec@SOM$rBM_%1 z!=@#hGWIT8$0!sLi!Pq=TV0GTK+YJSg05I*Oi#R+U&tzNL3`J%{g@PLh}mE(tBvHr zg8u52ALMVF{#G^fW|JCCQXPl1J}yqKSr9@V<05qyPH`JsPGD#(IONSd&H`EQ>=57U z<|S#Hczdnro>8cn@sjQvHI{D@?fLiBd`iaY*uj7;Wa!#e#(EK+&EO8)(#p5=JYy@( z^~Pc)Qj!&ZbCS$Q?A1{kQp<7UV2r%@>%V6uPjJ$(eB*kYrdBdRdOZqRItA?=e}|FAxaooqM~J zIHh!&Ot~tERo0T^iB(D;SJp#S@B|>peT3cPz!=-_E!irL-Znc@S2ZT4h+&-L+EBo0 z3#m9bvxn~pbSEHhawr)K|0TNE_Ou$Jn-fWcHOZonppWoA7w^edV$UjasdYm$O{x^I z$bn$~8g65VL$%%)9ZrS)oQo4#w+ele;Bv5;LE|{RH#sV8aq47l6~)Iit;ID^pPjv@ z*GU*Zqx0G{*Z`>vxr=+qusNfL6nuY%I5u_i3ZzQ}UVxkz;YE%ZB~&=IyQ*8Fdl4Wp zr$uNXqV|@kdB_dmMH$_%fuJ;a)7il+USsDJG1B^4xc67uot{=PS?_Ls1L?_9q&4jN z`+=~<#KI>mpab?QkVkKOe3u%eeTnkqCh^4EUOpMWJ>}IWgyeYXkCgT!UE2E%Y-&sQ za@f5}btnJ?C7@f4&sD+XM@8b`iim<9k=(vf1G$H?sHFm#2BdWNLxOPQTN8|~PxPh%cEeV~Q~IA8G5bl6dK z%-?Pcl*t+<2_JOb12n-H)`b?Kw+y23nXCvycp9l6-*ckpL#Y3;&*Hu_@-XnA>Xj|TZ^7XfO2%?`B<;@)2T#p> zZIZmQc~DN+7hw9ZiwbBa*#-ByTKb08vRVRE2^XUwxLn@BfpEseuE~fR*BWGFgBW!SNadE!l#lku?25+axBz%m%L5 zl7;cPRd6z#RHSRsZ?et%8PB5I*w7vn6%=-D+hm3DI-K25Qx04?VKSTO4Hs)0iQGfU zf+JliZXUP>>g;xoyyBS2&^{TZ#V&{eRHMQD@-Zkfz-m{jP#_wcU<5Pbqk`hCi z4mk2``^=M5k1Zv%l%DK?_zAxeb>o3NNaX$gYj+X7v@N;p|A@Xv(;&f|Z!DO=?9pSk zeLfN0i#6~8=fApzhd4Y{F&~aX21n)TU}>pe+d#2+Z4V~=UhZ%_J_)9Zw=3BO^W@+C zOu%B;zs82X_{vGOob!&gA%)hLzUhTn+%WCb1(!!;%Xh^b6TonMCHs`Vm`OsB{9iSz z*b3f4%*=mSYu_7A7KCw4ayXvGGkdY)^n+E=%$~Hz1d(G5GMixPscH*wGLq4O*w3@% zL2u9mi<7k`>2>rOVC1gIjR>`%TnUA5APM>yLOq}EtMH3?i!l>Y_BKUrF z6-srrME#^q8L(vJ7pp#6GSjpt^b8(?ru?@dNQ2?{O3vG6#jhc{-Gm%~W4%FH@L9-V zbf_9~ZbaW&E&t>NiW94AHds~s>|2Q%vkyCTzchJr6$5T%SkzP4xhdGV*qTnHVWb+a z!HA=y)*J-I=!0km)XVu8F(UcMx0RZ0X0l?0u&Q)HY2T#Y-$kWDOEtzG=c7UMorB>Q z#c-Ga-vtc*tBZkm-2+oEk-A~&FqrW%Fj8!9h%e1H`F9&Yvp}c&&KTbv_!n~d{l7;xzR6xLey5|?-koTKK59PJwC_h*l{VpM+q5FXPs4%t zx{a*Vo&a-SExTEe8{S=aw`a^~tUNkeuK5JFmcI?`Jo6;RzCnsPBAF5{FA|#*&yo3S zzetmVt+^fd5KOE04cvh2j6XdpYtu8j)p?1J78y$!Hb>@{FPj@YRj{C66Q#_Dp10Cl z*Q=J~fZntlL=OQb|5xUPSmx<&APby^2ZFJ1%8h`Ue17Dw45ea?pw9Gyd$R!HJiF;? z^O>2HmpKSN`g1%_QP)S-q={{&aav^uRSl>BHZokzE~FYWh2-XEjvIlX$5<)xyzaVR z#{QvQ7fjI7q%cf>$x~ln6bzvqr-IwrYhsMVXp>gNxDDb+Q~814%QF=()HJv<&nUaB znk&)q5|wv;uCh(6;+HaumS~Hski}Z(;Q9&1L{RUCr4wF`#>aS4ai^^71sTuP?q?YO z#Q*YX_*w^&(SRVrJyoS19O~JRhbaRY#FV8CxG50M5brSk5g2ix?0q|&^JLdDHiFjn zJpMa}!fsG9$5elAaK!D;UX^UM)}I;%()KT}CFaEdQ!t}+k0u||*s&SHe3yD%ua@0x zhU|OV-ghPONBRTgq=9^b*l|3|geKx8ogD zhE!0IyS68wiz(?H`KiVKt7tSgKyvEFJL;B|^_{4vrFV~YhyQi)zYPhj7L9&ae zr--6WGa%DHiZLXJr_Hz~Qpk;@U6^xYY4j$;7T!!HEn#C;8P-E~ar^r7*-_}f_z0kX zYzZP35hyNs5^6WkN3 z;(WSrD=Er$cblVs^`vByY+b&R;_MI~gi{Q{%BXe4FM!D%tcas7jJ$U5wy5Xeue^$l z@4t>z5F>f>QCZeu)1K(ymECJoXfp+VQl?Ygd~&-DaXuqPF^VvkvD*g=jYX|dCxazj zLCjd{W!05d-QTkOv`9J?@9FLo29FHRv!%B)X+Xuc{V2%b+eA&KMJE!y!^0}3;uXi< z7PzHeC%ON5_cqLu)c$m7%BA=b)7mp+miG)PU<>O{be-7SuX?-UkPcyFf9^_Z>z@6> z?vql`V#}M9p6U1n{!1zds(W%~WtL|X-{DfyS3>3^7vM{VY8p?`H|I{V(ylCr_ztnuV}$$r#qH%nCq+7#3P*iA9+`z8<;3g_!Sz_T|@mU1}xE{ zYVlMFOU%w8(0We6?75l>1e@a>NM_wQ=rNeVc1(wgcXI&xmkz`|-@w_=b$8ST2UeK# zwChsU?WXZj#t2xfu-o16LLcTl?#dUh;ixPTz_vxbv#|qY8_J|Jb%iCohdr_^&R9gK zck(;jOO_|F^6vf9F$WfTqw8H%uHyqgh~Kfv)I!Cn!USO9Yy43_7stDupWCTMzN7XN zKH889Texp5?H6L>vK>}dgxQ+n=G8WYBPXO71gX@%`BG{9dgN-6L7-qM4vyQcsU(P8 zon72R#Ya$Ip#~@_ruu&LZCD)4)=Ybz8nsig1(trPVPHX3JDC*40y`<8gxGA`-zlk6 zV6aq346g0AlxvUOfQnVLU=-#&tf3W33iZ@_%{bO0_q`W5XyM*7Op2)8Gvk|*7-}?^ z$h8*`XVIig8^mst+VYKxF_btJ&4l58p$Nw7si5djT{bYgrC`*pezJ9u^%A0PEHuSl zAf;tpZcqdhVR(Jh9|KDUgtFq_K?lrq1a)Tq^_T?4S(}pHs2iJ(HR$ zFp+Yc1yp(ctW5qM7#r6C;i07H~ttd!njYYV5CwR)99Z=wdD)wG7{hF0X^51m87*!{_Sj^P%LJwyfajO+h;c@- z&H`-4h^ijMQep7Qf<`kAmdMg)47J*OO+8!WRll32pwRz`!c9gHa>2uwO`qmbiheg+ zw-5xivooF=sT3vl(vFSt8Z%F8z=acR?;HXdq7)uQ`;wX3*87wr*zr2OLz(9GJA79a zJ%GAdHU%30bU7Z#ylf#9A6;X_-)OP9@zE5j^=wME=yMWSznOWV# z?*ZFX#-P2r-VReJBy&IUr33xG&(Dk*MgH}~u31THCDcLxJrsMgod-yL9JD2RDxkoV z$eAbjgD3Gaa2d}Cx&O2B76d|ng-K;(remjcv$m@y&(wO<>z;fe;NQ4+6dlC{fO_6D z0~2cj1}}+VV|4oi50LyfAy*v{AWo!X1V7y6Br_0pmTiY-ZsSC~ZX+_2I+7^6Ks?aJ zu?gA`zI?MMYYK*VGb=n@j!fG2?k$o)E0#u*o6&A0)Dcz!Nikm;gdq72sTK*T&@m0#bkxxQ`dAt42a*R@~|+lpLdM;Nrs?a`xO`nCoAD>OI`d%Vs% z%Xox~Tap1ta<0CDPQPqfT+GkEoMYI`y<{M!J`5~mtF)R{C-=Gs=~{1a4eQ-Ztm~7X z)48$~xdmp2@y(J8Wp-o9F3bwzI`1O9N^sf=IV(qqmL)ISv%I9V>B*wAqqyn*2nNqJ zL&c&|p3TAAD2ZGe{vAujX>wqoiL)3H8X&32e=~hu04Jg5&%qqMLs>g9)(?|*ZSiCK z8--3KibVVhkowhxk)bfI!$p-KxG|07aAH~!`xo@`uQ@bf^hK2R-8Rz>PWwc*oPX?V zM=$cM!_MhNMb`?S7qRVBq5GsC>TO?zzI@(yZ?;slI>N-vj5@f+Z~7jb;Eiqurp8RU zVBH+mvP6S^WSF(H3oo8Z`YEjt?uYEfXkdwgDqgG77ty|_D$olW)RvLG&us`<{bSZ19gB!GRS{PlvSyrdg= z>9;&K(Y+fBrLJeKOcupj3rZup9K5^ekWwj-ToS2S&x%A`VW+0~w$o-8kpulLbjzI`?EhI7=R@uq%jq>KvEA0-Tag@?lW%=`#w=hdNSEN zW!x0dMJTlGwn0Q%2{Sy_Rx)d2Q*q>!48nGerv>IhRu{EWam+?5kuJUfaUTNpHYi?lwv~Ab3cE+@_TlupO~} zV4*q;xo$@qysIi0<02v;B$Hxjk4TYsCgtZ$rqyKXFZA?}sG-ER&$B=l1n=!I=Khy` z9LKlS_>wS}ZI~Ife z`pO|UaD}SBZ1@8Bhx(B0y0Wu*PIMK#yB(3u{nG7sgPlBDL5hxYGC{%_IvUeFUM2JE z;8ruTL#Sw$uBOwq6g259sS5KYQXM0H26g?qe*Hp6ly|uF<#f3bQfk|Lz+Y38pA}-K z%z{f*L66F(g`C(U&h4ZVhk2l(KE|a6An)vq2HNa84-fkijF6yanGWeY0+Uhs{g>M; z@gvM|EE?q1>q8O9Qfe9c4lqaFh;;IKbx%3p6$>?Sl`#P`y5fT+iFr%N(|>T3LElxc zgGwtLb-z!Fsvj(|7|w89jV?x@qG)~n%mA3BObW#NYr3Dt;0LSO0C&K3QODGfJ&srp zDd^Qy1+fIPm<%)GB571U!g%Y@Hn3pQvF6|aR1&o|S(m?0y#|8#|0Hhe_u)cjPhd|} zK|Q7bI$bVSi-YrR3NhY2TB#MtQnG*&HH$ z<>v5Zmw{IX^Xq9D|B=lqJ=)1mS|Trl`p>`1v%YpZ)V%;KQ|n(jvjr2A(Rm{FX}*SsJo{Bzyza1 z&{`JkRpd&f!L8Rh?j6{-=`*inpHOD145JSi*K>4r=rdE6G|eq}r+rR#73NCs=vQqk zcNj^Tw{ljFP|K3zArLh=^aH>DZ7lJ1?NfRJ{W`DB3kAtMULteu=VEPYQ7++?JsjU) zzVkuZhikIX>LcXrctwzoCHDo4&iG=d3TW&d5nWMM#1LJD!tJ>A$wuXKbc%FgaKsUL3 zYX4ACh!=?!%MD(^m4_sKxU#TpE5%C=ThJG6RCxmg1Y|whP&b<40-U*sbJ?mT!Jj^s zorWZEq~L!UzmV*_Jak0ne?}P>*i>E|HBK z?~D|V&PkDT1DQVVzbz?ezu)w?3GC7Oys`=h*2a++jG>VVU!`Yrg0&kgVeD-N;;5T-{l8oB0%Uy5$=@r8D8ZmD`cz|3WY<77lO2P6<9?(#kbtZ~vOd;n zbM0f>6#?3Yb}~iR6eZy5ZEkc}gL{I5apCPEO@P0)i(?m2wDAjvWO#Vn|9<-aSDx$= zd=*=Gu!mf$cX8X3O;1+PSy0Ce^o<4u{*9bh`TRUDH5v!E*Bo-X07hDW(LX*B*OaD8MsJQmBA>sIwL9G85shiz_PD4jAaKa zQB^B^4GhD@R83i)R6k9vzK>ej0LYKNFnb~~g^sxIrBi*-n1A}taWszNt9=h!wdEbL zGz30QwKpm&WO>>`DE7^+G#RDG2@b}R59fj=+GQ-m6(itrAj{?(fp6Am0Yc)M954u{ zsY@$FajZpHJe3BLbO^HEt#PAE*P?_FuV$+6u>7ot?R4Z3Sz(86pL%K)B(N(-ZHJQf zQii1pd=^TJbhURAn3T~gmfls=RDaI7>U&qEpKQ8$0LosZ&U|58jkvpFMhTodnB^i5-bTF?uba96E($VSOCC%&kl%MW>7H}f6>0fdF$Hk{{R6^O zk3>DlPc#U#Rc*9-LJHR^8M*z8TVx%{H);Y@W@*ZQhJO9_+6UMg)x*CtQ;e%|H@>rx z<#Ak;vbz7krY5%>c?N1Sr*2%>1BNbaSilWn5;1PTXeF|Ma_MoPG*))-rn;$)Rz1-` zR#yPH2abV;LhqNPq$1bg;-2ja^ul_=U$nmu+o`}9`P(V1>E(Ryi|gfp_@Pz&&seGN z+9=6#$cz%FeJ>a1n&NYeQ7nix<864pXPfH)tStT1%B2@bL!Ae~c{JO(49r=rckG$b znBgdirYfKgMb^G35ySMzBPtde&-J8PTfJKnOm7-1|700(ZG09%)!J=)*{gek@XpIN zd89hiY$)-;FQiO|VZw0jw4W4oC*ahV5<7B=W{KER+vy~2r*kBsxulo4 z)^saYPe1vpNC8o;be4UyI$YqZHyE!)KL+AKM$`Lf7)_u5{riVKqEe$Jgr&Ygt*4;B zaKz~k4)Z;_2PC96UO`h>9W(11EA~x~YN<$4CHti(hEu99$v-Ka<$~& zyVqc4XdklI0E&xav!|J@-l#N7YE_-F5Ev~r?*NGC@8@{IEdys-4em!1l2TR{%}%#9*8|6}J7Pt7%)kadN6bvuE4oHvAc zgor3+Q1%;uwn6yhwf)+U+)h4@Z+z>LCCL>L-KU$}%`t%{)w^sivF(ab)x7HYRj>Q@ zqdg__xopZD1Ur$uG_G}ZOD01Z+=W@6(y!qHqaI)Yu2e{-RZ|WP@+)KqOvC88(oqL- z>v{C*eE!0(s2%^X(C9l!-Vey4w(@w={0AX(OdL%xyxNrLA>Fh8C3FyU1r6ISS9rV5 zN$7(l7*<%1?p8 z$XcH|O3dXMq;iQ^-dG0wHn7<9cn-Ga5!!t%p6cKU^ucI>s8ziTdGu5~M$IcX6xdjr z%VtEwGennmp)#GPM&!GIJ&xuK=fb*JZI|De!$+G+UPF2o%_KFfPUL_2=B zUW1xvqEb|NbL_)EpcGH>T0m^<(fCYZaGwC&RUDE7-rElAPN(d^_K3k5oFe5>wB4aa z^L;2(r2OuOO+AT}@;&m=xE$eab$>ae9ctayk?LV4l4CwKx-fmX()qxj#Djb-IVFA( z+*$}v2~A-P`e=7s(eiZYlC4*;Oh>u#S{<`o08rBR?aPx#B2aZ)qYy_lCx!WNUKF!{ zl5uJ!5}r-D5T!ZhcJR|c!A-{{jz-E{f#RNX#eD)c32wTIr|rdeJV;zxF@MfK0MLM< zZGoR*7FwwM@yi@Ukv|J_$|^m`GF!W_dZqvoFJdI!)&O=D>!k$7C5$LOW%$ckE* z)A}%k$p)aCvRk16V_=Vm;~Qf+tq=Hvu=$nUyTNr}0;k{$3Lwq+smYsVf<(14~B|!l-b90u^EjL?vG9Hdu`T!TmqUy3$@4C-smsc3)xF& zlC{`r%J7Ghcp~D_0`fVOHf~}vAMu$-l%^=@otb~O8yWJ6@JDDLG$@krk3WH)5k_zi zn%Kik84n-<|Hl%xIYE@hBYXE|wDJm5(~mmlPTcnM#y~YxHz<)&2D>JW7!g^FdvE~B zF?Xr?u${#v-Ax$7^2e=F-Y++#ZAxXgUW{|7eFeH^dI?Rr-dPjT0b(((08+~K$@g|;mk!K%B1iF~^ z@bL>kv0oW13#d8T*^?_pL@6{5_BnF$BakLQR6PT{{5T^gq!bMux>0X^4yumm?_`@w8Ge_p9$gB1-m zc5S#l9!G;{q&TCc#2?SZmWcf0mC-Z)n|W|mXcdizHwHd1T0%uZc0>#hFc<;$BH@9P z0ZRB7$`fG^qb1y^_js#YD5>eaRO@3mr$KA zKPH23uTzxYi^Y=Q%LuAQNFppvnp*%DPPHV|m5~bBh8aOiwW>-3NfHnMteZ1kkZofF zUWti-1a7xF0tmf2vz7}f?kwO{{<)M0poOA1h?YCcT25=duOl_#^s8;l38+W=Ytny( zLgCP8|HVJPO~YDChBB5Z!^#trJnB;tPVI7fu?LryC6f4`6VBsl-}U&y())G2OP7$b91du{(4(riXXGjdAV?u}~^Oa>PBz zK`|&t*uKavWDa-Z8eTEt^y0H}m+ppVRW~u2QP6Qq9S-spR`(2So~7YD5Y6gUbNC=2 zz+Ze0WQ03CT8*W)7^XpLU=Rg)10%j?pFt6uCXiGmU}cq<(V|q2=;seQWXbo%M^nR@ z7s}99-?2b$A@lt7VT|*pI^;~P_av$T-`2;IC$HIHz25wg#6N~cHEiXh0rDFW$dQm2 zlGN<3CToXl>MXjns9h>hA(*vT0dB)i3p`~C|B;{}6Cg`n`13&!QsbYdHnFj$*>t1! z;_fruU7aiS`h`>iE%3pe)n_MD5X5U1LTWJKV zjA^+GB37{|_YzX6NT6gK5Gew($&>C@b0(vogo)pCl=~2UdBozgjm7HFU^4i{^9~|D z!W_i#R<0W@U3foD5fp`nR-etV8Z|#`U3RvIr*(Tc6DevQcJzBVNHC{JFBE7eg9@mN z7OW!247KMXvJ7pGvI(mT(sAYv5`2S!wH-1=)oYg#+w(3*<^vLV^s~+mHhHN2ZTSOYgzHN-ijXUSkf&I zHmQj)*?MXjN$D8`Xw|2};DjFJbrSQF-WI@+P}8!%z`fa2|FvU7JthG`Uy3m#c+Y(i z4$wat%KQc#kY0>pHZ4TJsA1aeWj4Ty_^MOzlQM7ZLe4Sr=OG-|F~9X4A;Z@`kc3GT zlw#5c<}moJ{zE0cYlZqeXa?o^q} z9E|Q72oLvtk1KqPi)y%7$T$zM&fO}l-3Ox=$M5H5C1x|r`LeXbWK=2q>N>u%F<4=y zMCK$t-$@e?GBAg9%ps7g+;wHrNTg^R5Yyg?2?4eYWf|m4Sb$+(f@fVwXRi)~>&7v_aD>G^(YShkic+V*p;8QDPG8$oL!*izO z_(khP=WWp3enlh%GIa~kEd^e(nx*2bWlIa5c$Ovi)1ngS!XJsjwywjB8+a`mK+dUn zA6o=)3j&$}O6;dq1~bN{U%X9r0P~T%wf&=N?n1c+`3iRz>&uP3d?k)Cf9DeLPLwMH zIlXZIat$ZWiQSH?)TUaG`FYr)Wa#!Mf4X`Qehq89==!b25PE*=+c<30#u_cq+81U5 zP8oTdEqlqU)clKNAU;(53 zcv`HO+*0g*QF>3ADFgaAmiDrRUb$~nv`xwZ`uiKNHXs$z?vT0O;Udb1zb0Q&L{Y%mAPzlCU$k54<(+(bXFT(hUEx1CT!DJ&;MctcBx}smhpKtM z>dZv_%NY4BcMrk&CwN&5lWSH$dArE{x}KtN4`PtU_iXodbD>C#KMg;qr%4Lm?6?kV zx#b6oLvOxnmVerI3jJpBfK`j}4Q|&toosH`1Aa1 z2>a8vxI|6G<*#q(O{;8!^kuN)7(=Y09cAO?djhM8ttPn~FI=A{mu4G9xZo8aPoh{2 ze_j2URsW?si(V?YLQqMLuhn@YzL&A}*mthIL|-Mz1rkDkd^WOZQgxe2v#~5(f>$3> z$(IgQE1>=AE^P3+$SR{Y?^yEgHQOX%8uBef&r&{;V|us*{D$7*R19m5*X~4@b^_yP z7zX53WQsS1$srus;7B(y13ueQHyd&0aI4m1lD~=6(Ug&vpaU{pL^kqr&L8xQ}o%K6pOQJB2q$!R+Mpr56)@fSiZYJ|!1 zdNO$JRiAXyIU5>tSRQ33co~ZN&C;Lg!IPKf@){tqVs72nM#?YQNrL2soFCy{9OU5T zLE0V)yp<@kqp+>D^Y|UjR99ahq|y=y`1W~A!>PoFk_&sZYW~Nhs%DkpJkq1D@diE2 z3OIFZ>pNfCE=8J=4D#133Z_%nah76JA`fyTvV|g^HcdyYI(;6TkC->N@Cb$_Gq@&R6DSDQ~*-#mPTvEKl2{&XIk{52sXmQSk;k6 znLf%aQ^Ak1i$54*8F}-E5G{0xNp1s}gKC15z64_ba!1iU(ZJo_3I>+adf#(}PI^P| z=6CR`*dnjT>*OxVf0fh#jH??$j3>V)@oF-s-0XV9fSMqZH){GXUFoJxyg;mJSKr%S zr1L#i&Y8eRSXal-&r(U}VbHWN(NW4q^L57DWc*IxEQ(V`!#hRq2LD_t`pNx{a)9C; zHXsjb5DA(fG!U46t6DqjPt@OLBV3d>@N5)PD(i4%r;A->ybOtB?Tr?$m0uLOnP>0$ z^i!lcx38H+*YQ~P=3Hx(qVDqsYX5?XG2w0Lj`I zP7^Ko?RVz7|0}gn8#9`>Z{+2vG(4e|mxZ)|QBN8lM}XSyE|LNgosG>5P+KHU8gq3= z+@7ItP>naI#N|G{ynN2(fMG~8ogk#Pc^cgt=nf!8fP=rUpbmTgT@yx^EJqO{eX2)p z5PGv)L1F|scSCbZOAr?ACc85jWWiv{z7oR3X$jsQ(SvcCr>9ac`cTU7hQtB#?5E1o!{WxZRY4?Wag zv`6{_7cS*~M9=+RYHQ#<3&b4htB#*PEOZ$>&1o9+^Ex-0$-6viPrB4uM00k`I0ncs zOqD%jOuCl9phrymeREX;u8uxWWuctw*0CNsX^xxtPj|g<12UecJ^U>}w^MZ6dV*!< z)k_~;93b4`7Q)A!f_Sa_$>L=XqLo=To^~yVPp=^GqO+Q$J5kyc;9>IpiIMs02O-$F zaxFJ;d&B`sC2QMwS4^dheKBMARNp(R$fyxe(2Pc?C#c4VC|;#9kZMdCr#q8urgRgZ zP>8I~vv?=OKZ8K}t!Yydc?J503{?Hpf-!tD|^ z#O;-2!Oh!E0ZtuYu<(<)=0e3;BZC}?fL4NY)anVtjNZ(gLskv+oX{CKClAMAQ4ZQg z5yLkQB^66otzY8n!BzW<2hLAMm+=kjRE`BE*2d?uWKQ4^i|KS4N^b@vUNbKDz!=@b z=L*-~XRlSllxSaS45h=Hx|2XUfgCloZIJ_aMS|L2xH%^|m*MaII+7G=*a?Tq1ta5` zm0Q)v0L=T;4yZxwgza9bdk6j)_mK^d<1ma3;j;C8^X1z|WGH>eO$#|h}+!yt4olbn_aWfkgT`g>06J~|bm z^yO#^RcvGWRBbslNx*ZnqjVvMc}gHvUcBalU4qd0e(734xpsU9je*Sw=G>G`eAijE_t+}2DD zVMRl}k~X71LW@|HCzX?{n#Zs_sb?BLM154(lH@I%L+=f%(^%4<95j|uRZ~kj!}KMM zu0ampLkUMff(@SqePx!;i$qVq-RQ zWqH!GvpqVkqQ{^U;B*i_ep@jWc#L-M=Aaa!z}RLy7Puxq=IzDoF-TyWkmiA`Mv#{V z!A4p@b%hYq#3&34rFcdR9mAQx-tDwa`B`-^9?|23qdZ!FHDjH12G9Gi#ys(gc=!d4 z*d$cuBuL?YVbR0v&hP7e%7EDyRdfea0RX36KPFTOolJ|7HLcSFX~^kRY_Wqme|lPUAPZ@np(1C@@d+FQ z;gxgZlT_ zx^e<_O9hngfr5;2sjkHW;}woX`IFIObLJIG$Gk^m#=WC4FE1GK&Tav-0cM;_1iaUP zs{XtFCeBsnjmCg4pN&|UQ+0C+BFHYHYlFE{^$joeih@07=CGciR$H=$(iT+|VX-cV zgVe2sm$VXmii;Tu&);Qy8`Im4N*Zq7qC?-=QlgGDq@JzNva>U8jJ>nUKI8R_%``&? zJfp<}u+}J~XwoRDMqg`MbHgzBedz3t#$EG-x2HXi%rpZa%jtCN6~0dJY)_&F5!pM3 z3Ez&)t1|Xccc65xKL!o~wSbkI(ePsdLm+RVMw#@5P zXp2G4nVj_Y7xo6)lOS;~ejH`US_YXG=d-}?Eqj+mYq3VaNPII^ph*+f9Iir} zGrrRsGH6Vme2_# zR&7^fDy|trIGXb6yjH8y7rsnLlQxJlDiMYF_oWK!*m5B-gOpdOT6JVboPkGGEmVey zc2Z*zbGZ}BAhm z^^rb^LNcFNn$g4PHzVYJV$l1P7^zw#9FRA~=*+rvY1$gynO6#KtjK$PYf ztm2d+UwEvPO)IVO3IcKY>67jKdzmrsRmDt@A#w=)!Lp4w!S9_m=MdMT#|lG%^hj;= zd{tPPu!}?c)Ez^43Vmu;i{F7}XI2&oZkc*~e>U0ltd6gyD50Mw zs=S(`5+(zr=HJEZ1m?1zZs*M?n(p`)h<=C+Ugw#sn#cZHWcond z0`Kaq0b4*;JMXG{*|R4Id8K7=s%|Mk8m;Y47IFY{R$3jHP!6s3V7;+DEIGMy=;XUC zN-1bNo_Xny6$N{DEqj6G4W`>~-XX+pW;zT_K_&1y7m{5jVk(hF*aVuh2aK`@r#%FP zu7(m6zxl1D(|EE$D}fR-(}FJD!Aoa9=Cfe|Gzu7TMiqcvF1c%4tGz=fG8lLpBjCMA zhfI?7G7-jW?ZzJp>vu7h3z()vbyc!C+TpAJ>_c^UPbJT)`>Pm2tFJoG@6nQbCfz0x zm>>iCxtBFg&(-y9L|bt$b>j+&yx1Ip8Rb{Ph>{K)bGdaSPbf=1;4GefD&S>kT^QS? z4Z2XxwjSqGa36*0y%e137wTmp!B_DXs zq!ezlT$4ZnL?ttZp&r2Mh1e#tk{{LT1%hNu*Y%{fdDc^@{7^G)t7M3od+rXWnmm3N z6y#G@Z`*W(R`IFS@|C)u(R&Hb8&i*6d0+RnK~*0{jHIIus)4FLJ0lpPVXjCOLeT4t ztsdGrof1>h2>46t!Uze$9Nx>B-P5(?fEMmjXbIXUdi>}^;aqLEQD8H?4NlC^XS^-} zxMwnx`_B~{UzzB__t;`X+W1h_;7QeJ;{JW2@hSA=LPb2KI9PX!Bb=409k=;dvjBzT zrpN4ivhRWR!KIO#06O8_4irQY1ZSg6nmL>{OlmQRRp$mEbZ!8A!;LW;%Rfv!^mK8@ z5JeDefqePb$tYpa0LoL}u6PjzV`86MN~dlT|A;-RQn)ez+5YScb*3%8G3sgN4GhIc zCTZ$#BK}k*9iA4HFfJ_Gg${B4YOZ|X&I-$YJ+4002=ra0pU!f-4vLUqx^HUIey~FX zrNVP!8|Bp;&xo|hqeW* zzXRqF+QhyH?v^-h1Oa-xPt2bkos;j|jeo0J3$Hmeo+K#tckUio^Fu`sg`wI??5jSA z<;)(~yhF4p;jnqw2g`_OzgAF>$B<4)I!o+uKKb(-nN7W2p{90y0Xmn+hOJ4ml*tly zW~FL*C>6xDjkNO%OG-H_hN|G!33nPue>Up>RKSRBDHKX@%c~NAH>q9gIikG~>!Dv2 z?lALwh#d0fe^_Q;HIJD_Q05Gl@&aL-D_D#j4FdnA2-(pNJi-BI^@-|GLnE`(9f{Db zvi4YXUKW`;y&G)rpr>#J_DQvMalCP9N*4!|(Xv0focI%d2Jc_TW5VW+ zoEwit^5eZB>uRmoE|ZcB_UHWQ=?}SZzABe_WAY%BMh3xD7FgtDs#&la$?d593Qv%y zsrTS>cQV=O;Ud1B(0CNxN&$0WZ9$a32(aFs>%p<6w@L^A%RUwI3|UbI77*eTN3?Uq z>*yI%hf#~0#=RcXyV;o9JDK%xNye)<(vyQmD3jjId|YwVm*Vh~3~>EBQG5ulfaZG{ zT>B1@vCnGD{5Xg*se*{5|2INWOL%P$4j3K8+g#>CR%z+w&tV7jd(wI&ukam(QCrkz zDwC=JdOH(&_(M|Wmyg82_x|6y>G3?FFBJ>H$e9H%7nU3qe5?`gPduO#4%@Nj!_%Blvr&J#9D@1^V zCjD44mkB?J$XGL7z$yl5qPQ@M3>aCBa{`--hW^mVR82A-w4xT+@`IPd$wRubYp7KAH6Jg+)av5c#`#c`(NQT=_rQ#{BPjb<4a z-yxx!c@5^>NWS!_#?^Zdn31jUiyn2e9s|`no#1xSCU@w}P#npmjZ(NAGIOp)bpC7K zA4}%pl7`BEc^8gmdalA)(bj%qwV&;Rh%7S=;1ePJ{$ZTG)%hk_?C@K`B$hgD0nZ|o2JQp|z{cO$3*-wsl?QnhX6fV|R74^Eg0WQ`JeNP(A^cqtC!JRI z4$_yXZ^4R5uu65H+q+RFcN|gRSeIt~=83MLISaGM?HJ`Bh6)`H=8*Z$E!h)BOIq%P zcM9HCSznE5kgj$n5MiNXYl>==(rHND;?j2Xx4Jc7FxGN24DGx=7zcSWsI)sS5QB`rS zCp(5f=@0_tI7Wjp(ZMm+>?%(`I9f~85o6m>7hC54 z9I|UHH3o^sREtsSgQ;I>zLQ3rc{hl9mbMH3p39LHxtb1<4bEX1x~wpTfxGjx&mw2S zkTMp~gabrFcv-WEI6h{PRU$-Pt>6`TUI4UJ5-QG*NZ{wsaS6Jbj8XxaelWXJbw38y z&he;y#3if7c07EurNN5=lQkB#0qlLyLaVU(d$$B~~&$`MbjRJ{F{rYA@INwar z=sfHhz*Y*O*l#Sx)9-y!Xx4Fqj+%T|pby_9l~)I6u0~rfXhFI!9A5VxU>(PEVD}9^ zS*~^*C!SVFTGGggT|qPP+` zIk%-epp!4tb0AzP^tBDLc&$w_5eKo`90lSWr!We;aW+j5*^h}|yyO`&P!r%Q^e5#A zPszva!Dxeb6^12jKb&AX;+L2t{YcpG<7~d>w`ch;1S7GI-l$4$36h3Vab~V>g%8Ss z;0Q+#&YUsy9so;8}>;s^88sQufR6 z6W{OZAGvwPTgLqLLXgP-7b$%k_c~;5qO+ewDv@Q{N@pvmY;sRUzK*s)Dm%A0;2 z0Fq@d%d;cQc`>OW0)h3*!etXl+bOjt;4Ww2#@t^n&eSGM{rh2xD+vejlyAob6mU z4){Mp$uU8ZhMwOP4X60_gs(K5_vH7osbXyw&)sGtZv66qeWIq-J!BWi)h4lHew`B98l zQKPTNR!lTo6Mi>AZS6(1vPI$r`h3f|w)zn^n(gM}0PFgzjfj<~QpeA=frijvi`z%~ zQl}kHiFu)^DtK7y&79Ci#}?XYdNG=5R~iz&$=~6Xv7e-K>XS(s?Wn<@3VRc$BQLA7 zPVuRKo%0tV*c)#kKWCsY|DbxGxsCCenlvrx_y5)9hv7iV=)(2TN*Mvjx0{N41xh3> zlnwVp+cu)Q~swCE7m{-YSK<}e#6=NRgg38 zodXS1bLCybvIf-t3-m*|r#nTlhz2{`!q3nz+UMSDZmo0YY3HRc90k$HoyO7N*K99C zG|(0!i=3J4Fsw6EIu}nrevB%gd#XRbs?qbip94sh@I#Ca1S31`?4=+k7O9{{PAD9m z%gPWpU1c7{Ta(U=X_P}!$@ z$mr7I6(byh6ql$gPhovei36Cupc@E^NtBp+|L(00mcI32U{=ffmMlOjHP}LZmTv}C z@>pyV&V((e9Ty7-1z%i#h~l$M_Pfn@O&A%+gZO;HkCl9v5*`{&rS?#;ql0WMt=JcG1<`NRh4Lv7TGTo z)cs;?Q4yDrsBTomr_SvO1@TY#H{Q-z`4ZC)t3+>mL0Gol; zx*(VWzdK_~Mxh4UJ-Pzedq!UB^0TS^VM<%hx?_YGp_f&9=^&%VX5nWoyWf(+jrUn+y_jq@*x6kd|D~kZB zI_!pn`a(0Fc>FdK_a?$a&aU?e{&ikJbH;i{&HI4Vw91ueyF%Nae#AMvxn;x74=E0o zJ8HPfTj`0~nCYtgpRmTi{a&o1_)bv%0SR_;ebNR@f^4*s*8z(3zC|h$v)Ip1JGXmrlbv0|(4#z*PXy;j&xgZcb7M#oo6c*w-=QJ)72|jNms^c+G;4V=| z?m8Wttkz7X=WSBK=Buwn37h6n(lQ|pG(rE5FLN(g;7akZjdY#aYTCS*Q0)tA9CYKy zf{sU@X3FoUihLj?~GX>fns}o}8=mThZS`)2gxM$(^z4riHA~#DhU`uXl zi$0j6bYYG%jnHk$aC<(|)Upjh%;(vVr?`cw=*YvA?afyM*H2x|nd9Xr=EhESt{(48e8ar8)p>ws5%Me32@58{t+9mS8d1!L&x4M zi@sc!qNB)IQO?p$@{A2mNW%;MgK!t z$q^Dd)i3+F9Q6BqWPGVVKZsY3+UjMs3j*Sar>>gTrfYkaZWEB zI0*DP#}nn~HfaHZYP0R8Apx~CQE5Fs%B%$oHTsGR=P30n0r*@Q2Pwzdi((3`@b zBi~V66Ulh{s{Pb7pu2fS;S6&TLHlwdp?<-m>mRkvZ**Ahv@Ry8Z2p@)Q6dGUNF{ey zLMPTd@fCn(S9}j3@ts=8Lj(`DR%{KW&Lw>?*BfA zjei20bi?>C2nHDv<(zHOFYbkaup!0~mB7neNqa#J+_03WQapluub>(u&E3j13{Djs zECo0c=}Oh)9{A^C!jJ^**#HJ2*Xb7Z=3MWR1;zch6{OB%h-!aY^P>)&`?%s->r*Yl zSM4*_eO)5L>x0Abjxn0;plXY!S$dvcckmM@+By|Al$A{mq*r~($6W^>{z2+lWrRp| z*ZS$UFLQq1L#h8p7&oiyv5$sAQL+;C`$|Ug+N9KpG4)xtvxpOk&=!Drs+!B9_SMLu zT^wtSi7)Ls64(b+xH=K`y=bJANa@|D#!fZ|!3Rd~>KH0FX^|(ukaxs)3miS(A>oqr zjWdg%e94W}MT9M|`1715T3dYd&_cSaQ4w%W$NE`Py%gc5+ucy!U*UkEeMUz0NxUh3 zJY`&$p*uKP_WvbE2kPeoF))*k8q-W_P15SoS^wex9v<%;y%F*#KC3L9wSxl?gNRV) z!`n4=$WoXwXU_eFIX2KI4H{=UIFeel;V$;(>3KU!ben*BNdE!yIA!r+Th*j=wfV9w zv{I4`I4n25PR7fO8NA6ymy@W2$t|)Ly#7K#kN?AevE$tRSVP2*k~cavJBl8$k;-E) z%fCOh6Q9ZXq6lO6$Nz>bedw>p5)V~B)U2dmMyJ+ayBFFqh1`TQ9CYpbU!J2y;8A<#eTeMVH!iakpC`XsYIdm?J10|^#J zUroO-{&?E>q+OApC&i#$x}-k3Ft3ALdu33BWnx8zt9XMAXWhtbYW#G>iCV^T(dpKm zp$LX8Aw**!Br!0SLY<>xi;W-5S}8-#^axaH7?_yaxzd*h-#_7xMowKI z#ZCYxwI!C*f|%z*KVwUJSyWRsQGPxprl|1U&7s{i)wGtC4ILzhQkb@xLl-|y^?x`- z&k1nQPsatH?h|rt&ll+mk$;radAM=qTsKzQW5)V*|KJRLgnx(ekI+q{@dv^yR`)q$#e~Ojv+K(&2&D@PJBX zW(5G33XQe)ojWC97c3@u7ZnN)`K>%A48W`*|GzO+Z?hPIenXHG(u#qh+Y2wJ1` zIW`btfvSWnkTL+5{)gc!<=8LHwCq#GJNCRFap7hZEmc*{j|?rO5d_I+6bL4%&Kj(d zJCJO;5}t29z6d?3A+2+f;?EItBk%c_5+FJwyd4t=T6ur~Q;Z2&*SVPN;Z7ZRr){^J zjJFG1{NOJ73gc0_sVw5EeYy>#EAipbR!5XyFV$1LTdC>$NdLYejDi2YUUk!cSGWu? z2toa2V0idHx4OZS7um2{zMu?et(Y4DFHvIBJ2EVxn@1ijD@DMD4U!@eHb0B9n@_EtaAL$%+Bg6dsRt6g=sVrkqQKxpLrTn{=e@y1Cp1zSAC zI7tF;lC9zM;Gzwvy`gcV2x}4?M%J_=#<&j|edKJ><%_5Jc|pW1fT0gRk@d8 zB~ArlaqI}ZDITP#lTYiPP@w7gNnHD z2MmYys*h(1QTmHl^2U>b&yCFot2_fj%MTlhHQ-fu5sexeb>^%T?y;3%Bb)MUI9~qG z7t1qzYkjxz9e#2ivF9#IGOxM{wP#yWCUb4aSBSmxk`#TsB=Rl+>KcKB*jhStV zRbErhzq^2MtJ8x(-NTkzZsBuINCJOsWCl^;`Y6qxN7*k$9XSWIA`{fr!j|sw1~|8( z_cE*`A(h|224|c2DSfNcKM7UW`gIUoJiJSUwz?*^3K`k*->IrIH+i`AL2K=p7GM~_ z-!iCj?iX%ZGsKt3Ncx7qh=Dh3o7k7qQ@mOCdmASsBL^#z8DX z`@Yyu7|D_)8a`-}ij(e7(=@gYXeG|F^s}-f-vWjRL!ivnQ9dcv2bO~Lsiq}ov;Wh# z!|m>`w|tIk*?^l7h1eTHSS(F>{CuHoI#8!@7^;IK?Yzw9){OBm@K{1yf2Q_5WYTR8 zoLbgwXqRI6c8q9)m7f!Gh(gf!8a;`^;)aFslg=5n@RPw88yOqR>r@4;4bYy!<0Y2B#dMx^c&t8f?X3tF9sJ z6g8XGzcM|$XcvWDOe#Dx%azWRKp(5m5m(fIC*S_;V9aF?;o0qA>f)BWpZ_q4qPVWq zEn}8>bWygAg0%wl@oe4+dqY^4c~ky=K^uUvGpb15@1O zT+&-+-JX(l64aDqlj@Cd)*d`%6C4ov0wlDL6#YBum2I#UI3oW>7mNXx8q0G7QmDR(4piuBZs!(8tH6k|5IZV-l z#eBz#Ozz6jOc=DKhOhXd!QV>9FHL zXfyC`r{NDgr<5G5^dkZeP9KXMD!<+8|3m~&NbP3$YvQ@2V==w=r#m%8OJV;@nXyfD zgvs*H1-dd86n|wlJi3(2XHdEXnMN*wCN@iWxR^RSX5<2pVI^LfdxShsZl6ee=SNA4 zlb6ANHIU^vr+gGOw|4fsCOe?^$6>i7&Akslf495hlVFf%(zUs0<3Y3#!w14Mh%|QpM{2S6?H4fCY(D56}`gFRKwk`{i@__!V zTtPaaHaWSK;D&(NXU(Yghhe2x-;a(_6e!{d#onA_*8aa~s5^BVV1T|i7`5_a@2Y9% zE8MQ9it(t(7{(gu2SSs?`d3S-T(IqtF`Km~8NddOY_hnCYA_@sGV+3bQ9KCw@>Xyl zPVh~#D?UdjZ9r`EwK=yA%Pj6ao0JI49`VT|D$@T?yD?exm%`Ptc{WPvE->8))|On4 zv!PTEm1a($kL#zns@7rUc0;QWUu4Rc4J8~vhl`0v^`z5tb5?YW2=ylVWcW$m4WBF+ z(}R;b$=$rkG1~0b0KH@E9`RwM#(6{eX zrzpb*8}Ed*i8~BOY)?IO7>c_;1b1lMADYeVqnwxbyIHFp-4VLSSh6h0$w6;t2r{7p zvlrJAGt$>Cj8VfSk>yNth6-}jNAs9!5lb)<+n8ouxJr5N0BM=IRujRF$fXYl1`bVT zhS-T_%EXR1j&+w%-cS!TFY2AIwekvv?>j`|ixn8yS|w5)unn+IoQDh&S&NICd!`n0 zd!xsg$o%VxI+as){=OVREpEMYHxpm+C-~$-K?y)bu9BG|7y6dBpYt_%CvJ+Q7p_Hz z2`<7GZ42;*11j*7L@gW>W3i-KpKln!*G-WRe#q7(=8ATdPIq8>`hGK3_d=LOD?(F^ zwJApd5P->p;VXKE4H3Bk#}#oHZzDFyILh_FWYp4iE(F2Tue0M$FfzMCk-A+72+LAT z(tUbuzea*a`d7A@I?!}T_bV%C+N|FXs<-aqJ}fhjhE&@qRp%vq5=Uczvfi_8b(2<* zVzeE@kqXc%B&T9Fh<-iEOZ}x<+cgs)YqJeY!WNnP(0WN908CH3mQVtLb-1d!0tMeI z$p%;=`bcLY74pHgVOL%0hYRWET5wO5cxXj{Q5I{TZL3#WD<1{9k|8<%Fs@>QJ2Z0c zq?so2R);epeP7^@QNLvg5Rp_OXVK>Rash(wt_tKC)4XUfMx|jc=4jpdOgvd>10qtU z$v6it(V~MOHMKUl9w_)@`J56K?pVMtU%Sv)4p67sfygu!kbrNY9n&CY+iu3uq-kfy zOhvNPfFQa69U^F}5=C*lQgr{49&15sed}M<3Kw45nMp1)?-K;L;)X>&wLcI`NL(VV zvq`Pb%m-&Z_U;*}_soC=`Isilo4pj)wCd{l9ZI{BsX5_XyR7tIFJhzvft+j- zCHxNom=73`=+J4T5q`}OiutRS$=#&uBEe1f=BJPMvQkUZ`*W!VWpdV@%%2n_i zK8~FF3457RFiBc|!K4yI_h-`T)&uitUV`pY*>~xfFHdRMXF=8p5DL&=tB55)k0^sNo>+CB1as|l4yGbF@LovD;cQWM?ZvOU*>OsuOyo46ON+5w+iK}sXjJJd z3lUX7rp-->DnUuB%>-bwr-973dW*$fiYfWrIy}qC)G^&a8Dy-)L;%vru!y0@We{J_ zE0-~a2w|l_;A=Lq?EFX*eXUy{#Ojk-lU>GS_cz6N;TLj4O)t?$wsZW?rg5Uy4-_{( zegFOasPtzX?@XV7-BQ@F7Qs!5F(3QzJi#qZ*_TpgG+2S|(s=_-|9Y!x4artjmAW@k z45${{6eW8O!j%CZ`yUrok}g8he63?NI98y1i$C-AAfYvqNfK?GXXwm8fw49<|k~-xpb)C zTPQJ97>`8*SHU=#R&y_7u>QnmR%yWH*ofs0uJV6+1Jf}1V(U279>kM)6T8^7Y;$ff zL|$v+_CgFMU(OL{F9>ei-h-P-A{oliuoz|N00WRmA;(xE4+Vxy!$wJ#gTCiE-A|BJ zIt)t&M|4PprqExt^BntzrXhsoM~he)aVxuaW+u;f3iUEok{fr|oLlBj!D6ud*aH(s z0-Ld2hzpsF==$ajh7sCOL`YFwArew;6mZU;NVYeQL?xMUPvy4|A4n5DzN*wB5J(dP zS;h@m%aY^{@EwP64MTO#X*q!G5dyR& z5CeHhV?4W4+q$=_yjuS;$mWPbNf4}$4YZz{9uGb%Wh{1x&JOWM+&4(0lF@B0PfZK5 zEbNWaMxI)oV<+#S=9K60j+6dLWJyUz!cDqME8Saf>$)Hbe7iJj;L!o;w4+HjADNJ!E=1hy}u0zel@!=4{v)#34#>s~u8(%z$~#`mADQNxzH8NtCTg_p z(34%6rB9XhmIWx)sz4NMJvWkxQX)zyZyOCIAc&m8_<}Z;fae{h-DswQ?kMTjL}6iL`~rW><$k6pM+4k9WISV*%R?Oih} zTof~1a>j8F3aS#R^$GH@>11JqFkLOLl6ACSEXFgb9$^GHI4^itv2NMv3RJKW(4~@P zlb5A5Zyy`u2Z6%Y&?!zq9Es|T=e_77&gXE%_9BBpzRUHJH|XRp6-p_K9ql5;j5%{P0F-T8s<57AT4joZSdy6$ZPyVI7JW!A$fDmZ1Ir#N>q8UiH>nRofY z&b&y={8TwXTH1mP^)+YFeA)HWWTwh+(;g^Pv#p3YSG}1ut4h`;l3bBh51WH#RXx%+0%(=4LP4xLr&S9 zE&2ZcATgQg&hLp$gFi`3>!d>Y=PeOL1TTK2(GLN~hXF9!Pdz-8xkzH;koo_S~)`G_qkhG-(%`@u9m~MjsSvOh^wWOCw#u?$anN1l`3^M$!Ge@Jgt5VRcC2k zI}qq=Pr=0Ao2G$g(L?EQd2A`SvOsAfv^=$6qz_veX6&s#zuDack)|qtS1|}CdjLDl-@H^AT7C5cz^4)(fVCXM%s7JP8)t`? zj(FsIlMeKn@BrXtrCY~YVApI+V4SMp`tf*@r%i_;5rOuoEJZv)nji`dBh)W!++g=T z_?m8aurvODK^1&8J9*Dj0g|#~sH=MBY&^ns&Gj+6e^IvO{L9KHC851!N5Tp|Zx&LI zMM0Mlr@o+`)R-K<~u%*%1b0V4nj4SybcA+ICOFUEbS8QSVV+8!>+fdFz6U&v6W{`Tv$eel1Wo)qdrniM$B_~e)y}|>FBH+_uyo?c z_(*9*dnEoYNmAskH1z-I9m)O7mwC4^vV47k$vUC+)`is2XHnrug<*jVzT$mPhypmX z3#h)4wOJ2&MLtBBnsU617spmj?sS{ZhJ5`MrfLxI%>O5^L?!JW)x?CX;0thZgVJv! zR5ah%Kj=NLNCTUc%B+?q#8;ndNx?bzjo#q4H7NGMI+FbP0}gKFp+`_dT{~9LWV(0? zpE%hy1#M&MW$Yv7Pt2-Z$$9lFb1t}hJ$L?^T;jsdBk-;U4QKgxGJ%B}?w@dK;WCA) z6qDqPFRy42R@Kx>;IvGb(7V7uL^bd?11gH%DJc9s zr>ZVI#u#6l-V~Xv6ST{NklC{Yd^!*W04-SHTt_CCBAT>qxKL>fMF9MX6&!`)3{NlG zEUd!f4e;AXi96a9o$o7fC~2&2i5n^3ff6ezgGmmoZ> zRNHDx+%q*q4q3jmL!a3{5`y#JFp(^9!2|b=S-M5le{4WE;sn*(7Nxo zTizDrwLj`>X;>wqd}iRd5%^K*Z8_4rg!=%AOjOOyZIKP=?Nin)i8-a7ylyie>-KJ{ z3|f{P=05IUC?CZ10S)?IHq|b7 z!Qn1;-gz1r?)Ars&JFO<0kuSJ_&(pKrmV1jk;t-Jt{s&;VfTj|d!%m4TqbTS^na6A zZj@lVG;sOjdTq(9jVK3EMPs1f_TtF1#6a-~oZS>uY;J_aalY^0w-mxnLSfCCG}WUa zK9Nb0Nx}es@%|KhekG5;$x{6QXumh=yC_8FLu%+!iK2iNl>8W4Whz9z<*+Psa=UA$>|#A%5ntIv0DZSR^snuQk=1JlN1DBa<-zn61L5Ae~# zD8`a6+mRAjX{Dt``tQ7l^(YzweXg=Iz@zBrk9rL?YIPlpTO#&M)>{-DBVw+-_K?HQ zU+mqFco8M+%@CxeIBiOI8y{Am>Vgvol!S@|!wNM<^9>1{h`7g}PLIW;)+)KO=08th zj4CHk#&MQ?36He=XDa_qc^fP(KFsod-%0MRl9*YzYjB9qoF-8qJd+b+@66;Av{G-o zDkvq{`}o$=+lmqL`&~1a1BD~jSp^UVGO`o>A!5cQI2?&+Ng38t=-&cA;B-;5hVl6Y zWbNXIhrRz!IC3&>T@uNirYD_~z@?kP2 zNuflmY|r;YMeAW)xTR=Ab|aXVU}q9O%W5by@6oYl&CDs`w3Z8##=`cf!%Is7S zjG@KwRxtBw3RN~0GIabOLaHZ)&(CpG;U`h`OI%aihoVrA1+KW* z*Oi}*WD3@1t|@;%FVeJx{2g7{dK#C9N`1`hw@$@q?N z>l8Y{JwN7LKw$Ex0Ok!Bnw^N;&rdt_NRU-r2vbL}BxwH_aw!X`H8L04OI|JPdubYq ziF`K`uGM3v>>pymlSO`h_dK#WWwf<=aDe+N<5CiSBl*K=r|f@AGz`P<8yapDHZKF* zbvIn;KMh+hPzImu?cI)-4gNs!@Th2lZa1!2CmHNeys65el`j}59CV*I28~wD>^q;> zw9j7_&&4Xk=kc%kp@r6uHm@T?v_bd1Ks5(m*~sOGx}F>vJ`epgHE-dOSKv)KbKLTlmCtYN*6JU|!ZSF#dFg_Ajlgw=YLEKE&#heiEn z1aa)VD8-yFC2wYD?o)yyMTyE_&3>H+S_bZQEJ?o5)$G7B>SpFGkcmj+aRq zRACL`&VcYC)^G{O;#P!kp*FIY@7LC8DQLkg1p<$oOCjye^iMc+*2&bbE@M~iDHR+P9+EP^jQXgviv@ii? zrnjk2xN;-g3NKM8&Eufg+Nli%X$tq$2CU8P()QYO5zez^can|d6Ikb) z03l=bnmph+Xt1G097rWin>A_csN69uEa>+rn!Uo`Yw$M zyqhYceM9Z@*@NpQDljRg2=$s6Yu|wnHtoFexL^+s#`3 zZu9YTU+g}XEq+DU+nQjLSrw?y;wIcfMUYN8-_{`?V!Aj*kZVGqvSKiqHXe9jWJ?Lf z^=iw6cDgW~)7^D9x=6FC!y9J}S&Nz&?{7}wv9{)OyGrlz44odGShS56n>|gHtQ%dN z+-eF}a7d%E4}Cv%V}LhKB@-Vi?`v*IOmusROv7BH_BtEYa9&_29*>*3UK=xtqS_EX zu6IU;5TF$^r6{>*fF~||s-+CU>M{@sYh#V^!ZAizi&BgjgG*pWCP7)qBYmsWL0N`q zLk>tF_DhMRu1-?>KNSUOfgE^<@>;#L7Y%5;6tuKbFCv{02szm!>Alg)k&nn%yqfoB z73#3iq$pxoDL?X96`JO>K6g(zcR`VUF37WB;5JD{DM~YE!x3Lo8#p1VDWf*3Sam@+ zji5Q#8-zyH%tDcpin?6hL-h$2&QxhBSD^m!|0AXTDg~gHGwA_PgHW})?OEFArTh>} zg5n{)fXws&7}bptSf94`95=KSUszF8^*6p9=a(1y@V#OlBNorOBSnVrS|@mmjZSX@ z7W`e{2|moODXNjIf!_YyYKBYazadonHsgxw?}CGQ_nk$^&IfU=OHYF8UzDjM1+?Ed zWCrisNq)@|e~h*BLu)#~eG#E$8kdSVvDf|N;sDrGF1Vn9pBOtUyv4%GB?_SD8sT|! zun!_|P~tlY;BVeQmDI+MnqZP|O{1`?8z3boQTe*jZa0$U#ZngBNlM_sw`PXj%PCP6 zD{C)Xbg+Ejs(&ZE%l&PWPOi~<>OXpam1}lIUcG37ED8vpV}$9A0dkiWHqeqT%YqOS zfXAI$*}10Zen<-3cu85!?1MHv^S<&PnY+w&tiA+BUGgO&)hPb#-s4lOc_lE&P9Oo) zvuiE^TJ+zT!=tc3N2U6rqB{jMiciz>Y-nXMW(wsvriHpT>JsSrl_{n*yS80fH|tKd zHg_A!&lV!rCpQNg=B(6dXv#(+;zwM|Tyh^um%IM!7|=H#<%>;m#~&xX}veFpJ11&;DAs*Lw_yPM7(=Dybw7NL|0Ps%vJr^M!6YGb%z zMw)(T`PtrFi7$dLHs58tifAdP=d1q;EekUGX8$iju0pC$5E_U`93M#T=sKV&C}u3< zrY|zr5|6?vHO$9eZcv>vXq^hM;T{HSb^2vbLL}H&AZTye>hZ|+W&=Y~6~yI`nLff0 zUM3*KW*cs_rt^yGD(%ELfYqt6PSvdasslZ-lo~ z>A61$Nq}Fl1f^Y=+GQe7A@di|iU&(vG4FO3okFcq`(WZ~006K*EnJfuLJd=C4ng^!X(UjG^A~-Cr>Ea3 z#6ZePf;FF9Py`naUfhg!WEFS|GEP`JVNOLW=(9|iBq*|>yjLuV{aj`h)FnsQcbj&f z={=cq<6@F({es-LM*nt?Ni#w!Ri4qx3#FeEwz0tuX#+!&Q3VZMdo^Kifp%ax5KlfB zKR+ibo`FPvp5p}_Lr^X=26&sQK*6C_(Ie3e@~^?&4w=eBS=y{a7G!Gh66O(@`pVnf z4|E(J!q?Tf7rkJLsJ6L!YIX3#L>k|sktz2Hg8i~U8I2s3j*^q5xd(abC$L=LdJM-fwOR@>SiZbSxszv| zaM^Cwk+se}$tA!PaRLX07RFNN&|TQ;Du@u!(fn;}m4OyXE-!&IgD2(pS31cZgR)JT z*GB5jbpTgGNuly@%~z4o!rxN6HYjZDA|!Vql&3KoA#W7xn7;f^6D5X#33#bd?(liY z{=C{^U^0b`c{t!RCQ*J&2kRZgJTEJ!2_lal8BQ$>3H4=+T4;5;SAB`+^5hh)Sp zsIGW{?hR$c^!Ckb-HQ`zyi)9uXJ@L=%6n)k%MWK@8$GomqU*k2ar?(8C%tfQ&Xbe2 zOQbH_Hd1&+-{6jp$u#*!pA}|e@x`<`4cChyBchW1t{RS)bz9A^op?9t!-9OsAgId$ zi%ExwTNRwjJNWIE2wX9)R$LO;+G0byWds4<;V_Lf$i9^WM^WIOv3pBr+E@kVqBG5{ zdY?LoDJ%F(3ykM00V7C>HYn z1(0@fl_4j0crI}P?)L!Niu2pd&qt+Y2m$kn%g=fzOY|oOHjMu|w~MR3TUMD#ibt>8 z9zhQKGmgij4H)yJsebw2r|xdzktwyFcB5vz z3-;G|CP`QJZ#5RSpqn0)jq?Do22d4M@_*rndDv+VvYg4@Wr(1AOJklKml)tDmT){= zU0PN)vw;Lb!=l?P@`9~k2gnGU5#J8*>eQS>60_u40n0+fm(IkbN8;2gX2u@UNm%&z zx2|N_&>#kNaR;tDr+ui)HqhPj-W+rLg|!tUcI^fgJ>{SbJ5W^d$c|KDpo80H;=lUc zmXVxe)M020EAD`~HA!e62n|8H*LDtdgfiFR@cQIsC0|d7rn_JD{&r5kQZGv`6r{{( z5-okgsnu)$iqMxS!KRJWN0aq)-DhXclR7)jWmwSZB5tD zdbJUXrY5iPwd{&9yZgSZcwEdGfTb@f471M@Kn=0fP*ldmt&uXe2vXpQ#i$jju98d3 zpJC`Ry_0*ymTS+%DH(^aKdT|ku#DDtjCKXC>E@SRk|zsl73o~L8?6J@4T|klFyyWc z^+js~6ra~nZw-T0Vf9d^e^>S{Pt@H0gpcR;?oqMSy=BOv&=LOVzuT?;fi^X+@J>kM zW4j;s(f6QruXTbv+>yAW-GQsD*2EMo8<+48id zkBruXWr%!XU61>Mrydk^QL*n9j63DA$l^*P3FEZS+y>w=0wJtqyH@T{6xmsZhn`p zPb%9WJ)@cGmkMD2H(!v(mDR4D&+2a(ci<})8Xl`k)@1Oofk5ftPTXWZxokb2XKAc+ zh8V`R-q;v9vJMkaIk9H!#ztS@65XyD0nCt3h2AyT*tj{8Ytz?GgYP_^Lz=i;#+bU5Dz!TI5@d5 z-tX+YJ64i0ZYL3k{XR$Zs`4|ia71(r&Mm{WZ?=zBSx0S>D;#{62%f_S!k5kPvn2qC zh;F^_QhtKGS6Y*;J=@a&tIagB68)9i=U8|oJwoux*X$EB{dGLfW?Qo~-|gO$v=3f_ zFqs1X<-yqlMxF_iz{nP~hUPuS$dh)b*8XojZgTtHCVi7QCgu5->(Ux*3swq1;NM!e z40qpd*O&E=$v&Bd8etZ!6!uxF^($;RQu5s+1UO}znW)pisE%(N`mcn65S+at#HqX9 zxpF;t(4_OBp}D;@dzEJ#@BF(|Y^IoEL^BtT$UT^fYm#akNHAkC3sH0G%<^*|&q-dB zTLql^!M<<8r*=M_nDLx9p%tGBsAYcp;9q(a;{3mbDt8=wJq0|uDmLMHsIoZ$SMda+ zBzTeMlfV5ZqmYFkVlvE706|?`Ljb;3`MSNl;zoW+O_&?Qhd%jL0D)xG9IKj-IYt-) zGQSFhgy`{wV}Pr4y{^~p@8iT(fGK;)ASF9Jz>%oq{NYc{(gkax599>b6^haZ1t8^B?(zrI z^_XU=qML!4DGE=-#(i9}y+!%(mgEW3(N1Q*fI_ClC1pR6-HpHd4gfS7g}6BkSyw`s zGzRp?yFgQ(EL*7jbm3UsT@aSTnlYoTQZ9>L+s&~mAYADJX*>P~^`8X&vm0I9EknSk zyslDaLqMkiS?m~D$Fu#0E7)}Wfh=Gwpxm(0|hCAmXWPBWvCKF8rZ4>6<;@q@2>lO3JU<> zm}t=~6!4!9pK0w^fG^oI%#i3L>Ioo!uQ?k!3jo_+eEhU}uAu#Jr9 zFI=XbU8H?0lTWj!A-~rvD)GNwD^XUS7doXiLyUKekWNftWNw(V0w33<7FypWGH%yw zmjeZTKp^>1N{@TbtYQ*LsZFnl@K704wKA@Ph&hkY45GT=R#8~$zek7<_nT>Vyi0`x zR{ZgvuW#Anu$H#c8~2ZbCADc<6i6_`d-%QkEz^;nY*h?ZOQL**8ACZ*GL1tPnXO0Y z@|kW;#)!B$C}os~L^Uas<2uj`+EXwoj2V7;c#6J{dDw9ng%?eJ!^+16=h?{V4_%wb>leb~56 z+yhAkTTmbSAOphYWj>h-T9H$wFE(8SAQ1Yf!tLN7aAY=?hKXVyWB77Y>WGd}KuNin2SSaW?o(wsK!9=3Q;tXVNV5_@Wz64|+L!(!5x(HV##1zc*2 zz&sgJ6cdzY%u{f(gcdOt;+*xD8buJRNKRli{lH4@FeaObKR9$wu@%@mKObLc)JR@V zL+gcYi2rhMY&#^WC@QKCZ{k8wa;$!q45jStBp-awNGHhtRfgOY>1B|lwslBj($p$o zn%|=aAt~Aw^&dRYw-Cds)sfs4m&N;SU&&?D`^u0wR+}W!EXol@WNBHF$(;18fv#4i`1U-n*Y->`R<7WbsDYd8Bayjg|DR6Gq+(H4E@axyNV9Dn~r zto2f_fuhZHF0s_S`hZrabAmHyP*eU^7@DEJ=rd!cjbsgb1{0au1GO@Wrg_|feZYk4 z$?qbJ^@%=MZOqqALQr70tw#kIWFJ5C1l(8);CU0w-^2hcy;A0)CKt_LgFHyZ_WI4+ ze*!sNnD&{_Kgs4N$Y2(9*?~tLMAZ&S)(RiVCF5MWzz)i}AOQ5Q%o3il8Asi-y+-Rg z@1asU5ty=TC5)yT&5#S_0UWi({+!w9&U`B_=$X9A6sAY~CHP1nz&!#48WJ~Lvi#r^ zm^bN^M0`uhgB^Hh+7!1lQFaoaWn>&En1YH^t3p_m-$e*~Ke%m>K7bH=GX5}Bf5e}I z2W3?u*HsW)jvMWvgOpIamn4q#moHw!@%=(Mm0NF^NwQ{u+sB&DAB4+!^(gqJGsuIt z#nFZo*XZNHoa^3Gi+}79yabq!jV5~F5%^D_fA2=N+%`PUfa@7=PIt(fT4>zQNOKr1 zEd6@#rR22<>qk0h(HZ`x(PKAnV6$PW^DSkKQ555*H zq|p2bVnEdQd$9cEOfIHQR;4{Es+lMGS$p2eW{AELQ=Qv5j;7mleWb8^bOUVAPuY)C zKCG(WBB565$Qwke-|*Gp?3EMMmds5vVD|K$!kQ(5*Z5Jf-ut>=)SY}S7+ z1TWoMq~oAe3&roIbs}q30nJ_3W`pV?(Wb!0v*B9SM_v>OJjMA zU-y70B?MM^oW8;zS`I~S%lC=BAOg_L!9u`dv6pC3ZZy~E?JWHzCbsM+VQ0G{+0aHn zV&qMmq?8rXG*RS&*{$vvD7J(w9!bgR;BD5L47aFaPYdVUk$Cq>p+?3szGS?&I6w>#)?cv~F?Dr1a_p00H~|U(;B1Z1MP0!N?(&7yKxR1@OnymDF{P8+eioeDTnP01QiQ? zGtBc^tsKjNR00|}gMi6*IwhhTE7{X9_~g*JMS7tnKm`TtrupN&Eo1f>#He}K5JlSs zNtS6m{A4gznb00g(ydEwrJ1Z+i0WbRW7C1BIeEhG*}UarI!MKkra8lI>t?gpw`o#+ zq3tQ#TGM3Zt36NZc8R~r~`+n5TGk8O7nt<1~rcW@;faja@VTP%jF<|8z`c@z=PkIjZ+Q}_u@Z`B?ggRJWpsU$H z2oS#3q{xQKYosquVV6D<$a%U9eP`sF$!Z@(}Z+rYJBPjJFo|SW=k5TqVF!EdM zMX%c);9nzVil>Y1ZfMKm*dr6LfjSAL{kLa2JXK&AJw>;8JwI;Y5!iLSW)~o_F>b+> zh>`8VCBoiNz?+%+e+VK{40M3N;eZUl9s!**A6P~^HRg)n3s?nIgsKuTq!E2OB680X z3qYQh(4p(ExXitXOd#VGEZC`-$U(|^u9#oeERnx*Q5SWbZuY!QhEd5hgqC?73mdcP zGjGGm$u_1mYi*eIn%2hzuO@(Pm*OZ4D?krh>`!Es5tNiFfs`Jto_$OJJ_k5{umOVoXUD&Tkul1f=XJ?;fRA#Uk z;#yew;|7OYcYvc9%3v4m*3oK?;t;g289ZBVUA=1gJ10xHDjI#5XJ2jrSXrR__wMqR zlQ)w0er6f8AUnf1$0%g>RJ2|DCU@Uzv9RfOYmO9?kkAz!mDsszkY0vWs~pOa%cpx| z@67xA*Rh>HZO_sw5oCli?WXXVCTY=;5hA00s>egd1uqyL z3BGAAAFPX}-xzIeNMyCZ%z^&N2+{x?+D5{Uj&w@;(yvq_32RsXCca{)VsCnbn_(ti zx%q3hGo9-9aHwcmrr>x-U+k;2*n@m1_{c&a*1T3}%|I}6s>phP{oe6IDf4=zEKWPf zykS_+DbncqlG&KEeW|KlUQ*;zX$&N>zxmYlD@`sKmrWE~mdY}#)SUa;NAZpVsZxD1 zq|l<9`30Oy)oxBO4lqtCRNaMU-7kOaiOwoW8@p8C`Z1%}R{b-5j7g|U|L)P1#wT9Q zu6Ez$K#r7#3j>4?Ijz5#bhrR^r`7RYy+no{`}>q3q@**g|Wu7hem&32KLq`ond_X{7d;yoMv*9m+uf$BW{P@^WOMWSg(&ZNo= z!5r&ZYNe#<5xZRu&g>jU807ejL$_Gb0~#ZtGEvc9S3Ygzd_rBV0pQ+ zB^zUu$_g>E^KzjWPET~ZtD`*>s1q|FTpYV zPv4mYy7~+ceX`PXG`OX)sdcpp-H@lRIW0apQ+HnMHJ2Jcy)L%(bWd2+-Ld6j3N-LX zq&e*fFb9=p^$%hxV&IZ^zg#q@+iF{>KeSB{|2*b_s9Q94vb9Lz^bGpfC7&U`aEKbe zpN5!;u-Hqp;Ccx2&6(APcs}YPe98oKCW+C*ez7*s4ib%~9&ZkmK_qWh+qjS+ zNZvQk?BYY(=R*jzEr5^^o#lTsza-^0p6F*i2y^7#U3rReXk_WSl^TUF7_B#81L-RI zhA9zb7OZua3xf?uC#1}rnCQ}0hn=x5B$DCXH*w{!$^q zTb$qyz6C3;;L~9Dpsgq4@??yRh`ZbKpjSBs&#_qNI<+r;wgTh$Ni4INOI6Cg!zcED z*O?K(AgV{-a^$-POtGbxs-y?MTnLPQR5Su{%dvVsPv!fg*$my%78pP_)yZX{Ic>xp z{)+dbA@dD&V2Vcx@XAJbA8}V=i&r`_M9amlO&L6E+o_JfA=0~akcU(N`hJ4XWC=&l ztN9kd84z4HZB!XCkQ)CQDeh@;X@JQfFwWu^IBz@u3q)Vcj(lf&Q=lR;JCo(|eI5cO z_%Buqt}>6NI3{jA^@87#nHQI#k;aHmcnaURNuH?rm1#o!H&hpzgUp*CtxxfZgzW&< zpNF4-J|~DPrnphHl!Goquv9hy4Ltqs0XSRWF5*vhkMb<<1kkulI+yY$3Yt&-!n~wn zl4ZZQ&?JJcvvW`*8eG%ZC1|ojgyxo5RRahYFJRVk&(qEKF*!+#zw6clt-A(h!0E?d z&Vc7+mRSeXAbimcfV^KpX!W&smTSfd`gAnC)Fd+mwYD2NAynm4!pUbv(~AvAL2F2x zu=E%JswQB>K>hC;)A2sYGKsRo$Gm`vTe3<};0KM6&-a=^V(UrX@mJy3_wN zZv3f8f+oead4Fi$QY0N_UNj>hdum=BVU)Njc~f;+I_499X;@fU_N<+jUDyu-t|d&V zH&vo#q%DmoQRpww>({umLtm@{c^o{pe=&>UHs^salQe37OmFXw-U6*49d@r>4-tVO z@ioSn4pf6Ux&g|L>q2}_H6anvKk*w=IFglYZE_#mzyO}oLZR4BdK>tb*6hn-~^Q`nim<&#!;CZL3|9pG98pG=q z1+q3Z4>CDGuzvjLbj^?&U^m~pYx;%L&4tQ76M#kMRTe2q{u%21@25Vj@L5c3FZ^tBcYX?zYqDTmCVF5_YtEDQQa`NgYYCDdm z{Kn`O@eSm3=dBxrC_loG0n7hTBaLB;!aYw9A6eBx{C)Z%UlEtFubMpN5^>q)afUVS z^MkGF(L|@{JOnO0s9NtD?Kk^>f9vm3TyI46^f?&f$_&ehSn~$e-hsF-4W4Ll{=O92 z+?kR!EXkNuYPao_z>MOY9fadzWdLg(fzSG-n~Mo(|4piChiOzx&`bDiAnHNsCAo}f zGh>OXh|dZEn8qT6tFidljY?GE)2lfw)xgtz9_^A{#GLF^6%^737dld3r+hDD_|$Cs@m{KvH~oI%t4JOKLxTH{m~ZX} zP;n$y2Vl3ZVDu0;-E?66SRe!BjF7_{g|@s~d(|sLxj}rk$;U0fc=GI~RJZFc)5*^? zT(z@~DMhY3aE0h^S7QDo3jniT+Nb+#@^Vzg4v993hXjtQgY zuNtD60eTXY=q!eu2!^M8x|XwqoQHh>vxSMrYX8@XE)$I9^8Te%rz`IAL}jLyM5h9I zG7>~Q5m(@=nPfNQKOtZB_HQpe6)_N5PsSRiHX^G3b2`lK1su#LxI;%Xl;+7)?~uSVQ4$b;6h9o;YU)I8vl zsDUxQsAlyYkLhrvmlx9YDz#E&tUnQ=Upl4nr7zJ1@d0-N#XTyvcAHR#!=3D9FRu`zZZOs=dn!=MnoCvVG&m~Q;j1Ji0>c)FN% z&<8OvPQy2h8WQ{aX!QJtM_sl|%TGx?o1xLe!8DX+B!EmJQ0&PXg-3+q!q&PTm_}Go zc&(0(HLZ8hmz&ao5p22G;gs&vb5^bkHD8s+QG(!4qzY7cvVvC*8)~CvWIbgh6yKsL z4mm&bCZyp0aJa_7`$JvXj1z+&ES?h~@4FchrII&~7DZ~JGQ+P~%5#Hcw}RWp#X^-o4Y7Px?*mZIT2x<2R;`{b!ND^A&iM>Rf^^A{WnJv!O?DMX zr^#_XhbCAwS|p@!QX^~pnpP`;r=%tkwQKqZgaL@btv;2p|J~d4ZUv<*UIe}8nY2p# zU{I4J51og5=LKKPCQ5s#n$Bw`f=QE>&Zynd=$!qiV}_x*Xw!$TDal2p%CMBgTCcEb z_~v64v)ZaqH;TgV4=Bu9)=V5eMG`R-R2kpvj|%&U9`aMgR2 z$T-{i#G$a^0qW#+Am6u&Ob*%SfC%C{AAak@PN(y$G%XtFR@tcs$ao`F>+vqQ>N1`q zSC_sDEqx*pcdxLYI?((xqwk1!;&|BO@R_b9pUCu~GVgx?*zS^P*&$hp=BJT* z3`7UywB!9eUM?gd_`oQNR0B_az&zufwOa|t%KkNKUSCEW_ue$WEHpIbzIGLUid-J- ztm-CKs_Id86loU|>GmC%(Oj%Jw9X z5MS0jnv0_j1v<=%pK-nlUBgh>b^s3%`a40iiZFD_(9tmejvi1K}s7Jt6UrpcrwU2Ad9-oBVw!91pMf(GqdU4b$f zRS`lwj2j+esCuiLE54DSYJX?+tNQ>aTx|7K8QBsvK%v47-sLW@5cs6tUK6u1c0iI7 zKB-FN{Ywvp3_?M&8u~m}?IeSZYX$TLeph&|e^~XU2~05H7wzqGDwJ{VCBNBv7AT*Y_txlcg3O5(>0m14wuw_L z+<5^{icBdL-8b*JVJ2ce=ns0k2)dE9&#B;i87D|CA;!No6YKJzW;XiR>1C(D$Pp-b zU2YOW@^067epz|UfoOVs{_iPL(r)BxL2jER5)Ni7TM|54WC%eF2b&Ywg9I@$~gbB=qoRJ!|3^D@( z1`8eYd?QBg<$mwpR*Z)maV}Pe$p>NTQTZWWn}r3u@|9I&n0WUH@(Y0~DWmGjm@S&G z`8uxlzIhHXr95CFFT*1f(H%vxK{A7Z`#j?tvM%&6ZxxUy{D{?+Vi~J7B)-(dCewc697?r>%=$3~NjMZw2f%iJH z3h&$i!CX32rQq+?YQrM`2Q*@y7h`M{85M)jk{+(KGxzj{m${3c!k&3{bIq0$1DNh+ zngUI=sO&tx)ZIp{!uox3$%zsl)7yhIG%E6#9vxjv4k}k!Owb(s24l%(?*rmSbY;(q zM5_j!DxM{`)q`{T5GbX0XZ!PG^ukHz4tqtiLB{7R%^GB|((A)wb;L99O~kZTa4-jf zulwEkwt93H{lBQ--%&EHuKmQi-!^~PBIUo>kZUmhW99iLKUQo$z17)uYIz>t4)%Pl zt>W{r?U4kUPqczjP0*J2F-xRqU-c&o_u;bE5cw&6f?<2Jw%tRcaY0B0o5Yn_5D^Vg z(JLwUIVl#nK>b81+Y0OWfT&bt)jz+8SWoJC+c_;VXGi~YB<=$m_T@#b2C*OnAVZW) zh|<@16rKRXxB$12&4i(=R}K-Xme7}jFhf8RQSR?bmcBvm;Mv_X?V~=PffeDZ2|tOv zTPp3RvboBYgJ?2vWY5*b4QY^wCImwA$Tl^s6$iU}CfGz&YhmbE0H+HcS zLSf6#wa4!V^>=H*&He6|UrnLS(2lF3muKzH4QeXxHhwiPpzt)^%iPy|wxBT-?7s+d zPQW3JQ*?bnP%zJ9BZ_^-p-$?hM^uc`pZV4a{kw4eMnL3?v$n2>S+9|{XnP}?xau3t zpFNJU%+)S(Ovcro0Xw4R$>^U1Y*WFchVEOJReEKChQ}1bz9k*vgwx@z3@TzrF_u-@ z?UzRIWbjX_4URwGwx|`{X3GUsYV8}ezS22-r&d0K{LT#btV;>6Mh!GJ(T{L{WKbYr zO=UI}o->oBkg9gb$WfH(!m{uV1DR)5WlnGCg;@f9RjxKjlblBBHh|xP;Ojc(9>e!f zYsB=~hHIFO`UVcBm0|v3Ji-Zle2VHl;W9^~MJDOaQbV=&XvS*V%*wyB7|@|NEK`49 z_gxdaIS1IoGfFx;J|sm;EYQ=)#J-S4e3MN(waCQh==&!gW}e-(`}OBdRf zUZEnMBeF)x=UB)g%)tONc`SKHkcTFQ#8L!fdYODIMl`~m8~ zm_=NVOPge?rH~5A|8)#c2}5A3Mp?mDU6Y(1&(m?^4O;rC?9D4e1Y^V;z9h!PU>%D3NvzbuiBB z{ezHdMS@%&;pY08ysx8)jUDkJC?|jr*Wvw|_Fgrn<`0J@$I-k|=kO+|d>tX7`bU{r z)@;Ai~pgnc{g=uydJ?0MRpV)V)w?S<*g;_J>7m>Gk@|d@m(xq4!oZ}F3~gu;qA00+#0`XA7T%e_ z>dto8dePYQjb@CcOPXW$01#Jg19vbQwO$DH#lm_C<|Z%kKQ3^X1L0}$?%pO>M4GRS zF}gij!1!wv{LN*U$F*DfR*r0S_NJFIc^^wnV0laLt*ae?pn0`7UWwXZYA|jZ%J}xSPeV_88 z$$D@|&JXn+k*nqt0{cX7n$Bcla41{sM}Py~p;JMRdlJr4CX9)P)|X3l{la)q&FB`L z+b0k%FYuhiyP8WkS68x1w>&(Jf?!aXT9GWOpqBP-(sxPTVp8MxY=R`d-EIma0n@5! z_SS@3C?;MZO0ScA$uXqV2cZFT<_(cq?fVp?LV|j=0Tp}|hniukc-Go9(QUgXB3LU9 zUNX2Sdz7P+cq8(?BLSZjr#VKT<=QLjFEB6cUHoj|Vu0zIxh zCayaz;mx8f;~&>5{4~3;92sXq;Awdbti-Ms!<-(DA^(p)=_76d1+CR>tGT&+WqaG7 z)s!V1J(yBaRHSecVoqW!?uACi$)Boim)~lXDjZo?P&!ZBot+VO&mINp{-llPL+;bM45^O zCo-x#BH*Mk70V1RdS+2vz$0r1wfLs5Lo7{s-$*1K(%Hcc)|%`}z{#0k`0W`{Z)csR zn<8nvndUeGY!IFwtQ0>q_q!0r%N*u1XB;A9CE)2n7)Hhf!<89K!KJ zPG4TR1dJC#^-i{_Q;(r^cQ7?|n>1|W`DX+3{YT3!fEQtV&?p;eLH?gfAP%2_dXs$APm)O2FHaQ`#7w8?)cc>dyNWW;;w1(i7D+_o z|BR2l`&oiP23M6%FYp{D?B|Od!afCl5?Qd)RtL@UQ`O!Rf78{Yn#p8Vu3AMQ%iE#S94JQ$cDiJE)|F<* zM4|fO8rfC^LB|m>IP83fw1zzu5^tbQq&sX{1==B_hH1-yz=0b?B$d`~k$u|4lQA+M zC7Lzr=}>L5ZLbK4Wa{JsW!cme-kH2?Sv-bZkyki-*WgI9IKTuL3GOB?UHW)sT?Sp; zWXjwtu@BZ2Asdbvvwq(sE|wEYlc_CPL1D6>YM`BGlWx_Dp*yYE1h!GS$73*O@l@%6I5`2hCEKQt%2^#0aR5C)!oNlxh^voX=P00gmLv;D zg`9O(-(G{b1D;e|W^is2GqWZooMV4j-04QBH)UD=xg8%p7GB?~XI{sw)SrTJ*J(V7 zHCEP}xWILegq|tfXt3c486gjmOKkstv(Sd3PjFC2CJ$22jlfdl`PivmH*gIWC;RT% zhBdi6;cXCTsYCt=2X==HM(}JJ{uo2)hBD&ddRO&HPQ-)y3LimCA;?{yXl3OIFC_Yu zwGXLr*8+~>(yCRu$7ijv7CV&WoMl+M8e2O9S461$TRDQ$aO@ox{E5y^^m|ox>W@Xi zV++r5_ovPe%-{&TZ2)9mBcV;jafjiuc6JKlvYNe{97JZC$<7r@I>o(~|YrRi-o3%+7M@`%=mH)anqvZM$xu8qxBCOAYIVrC0IMl5X zipyK!$%8dVf1%A{8$M{z+)aXgW5Oqp%odoI@(p*sw@D~|8^o>5s@u%R@*;6oZa_YN z7mHGFs5F!_EDaH^k&DC!-WUo=W~WiEej&~zfRjkg@pLf2;WewyWW9_gnYl`Npt~1( zex6^s%<0peil4m=T)Z59gtc3EoERv}XN-ROvsK}+vBdHJ3WfJMjH`XYIw0C;&5l~k zutm7ubhER__g&|xB(Qj7dJzay+ZZMrAU=%kTK-1y4KT~z=0W}xye-$}_3HN4foJEf zdN8Q)=eNbu=Y0$wq;@vwDffeTX)iqF^d3QemXO-O!GIa4v1$Y^%r?b8)2BZp+d2Nst`t;%9>>A6Vh;G8xouJQ>bZ~PD%H1+w}V@fW#H-` zvObu$H<4z`8dJ&`iCz>K-mnheh%a^;`OCP=wvNMm9sdu(v@S#ghmBTPIn5cwCvO4(*-;lRZ2{1DN@RXcQW3G= zS|VSedZdd`D#zE)*6wwn;~C(*Vd-S01e3Xksk-ur;Shhm4|ve6(=yjWa5po%Z=%~L zsSA{wca?d?BG5`Esh@#^t;0Kmq9%{85`uhZhyt2;N6#(|_ zq$l9m{nyuvVA@KNRy+xr<8tCOy{f0Z;EY=nrGtM0E%JIN`Mwy^H74s|^)OG2$-Atr zzz0TxYDOITqQ%TE!f33%xCx8pIp5d@CJbV2O&&lDQ7W6X{U?PaQx1D5M{=Pxwn4P? zQVOx1ju)>#KgI|Fx6bF7E6Opm+fEv+d&Z`3W77dY-F6OK*6lL`Ab96UyU~ zXnU)0F)bg+(W8ahfy`D*x7O5hf|$8#!y79)Dw%SzMm*@J1~v3h;pj82P`lwQHOyGl z*J;k8y2!$I{fk%`==((0x@*f+_*In3jBVIcikOEH@!i9?_wzF3y8H)WuRfKwFQp%I ze}ey_;rZx&K|+%K`4kl)geDL`FbYB}hIzXqziRE2&Bl{MfeM(?mlB(2YFhPAk3|py zm*_e+!T=bTaYn_O*mew~k<^`l_@gyp2#CA!YlnbVH}=H@p!ANzJwbxS7VA@zO@t2` zckvD=81=wEWGQ20HN+U~kxUKuR+^{KKsc|M0J;vy3{z#1=F>0;ITN?Mzp@9zyacOze$5b+%f$0xKoyA z*hBi7pZvYCf(G6q2gFgt0Q#im&3ZWhTJ%l)70z{6`eP&@J0=Uini(0?!;a28)pWGj zu%zTO4Pr}CSz_KZ9Hd8L)gvqLCKm*}UmVjJ|Px2}btxLQm?J&~vC4ciYZu*}%anRp`ynZ3lxaEh# z`9#ECiVOK;em>9?+BMc0l{D6)1>B&C1-%fi|3qCXJspT}xFs{{4C1)e>LJ9}2yZtc zkjN@dm+VfNh3YNd)Fy#WSCi%ba`t+QK`NA47g1ApK?>L-U>K?j-k;dk`>Eq7LfC@1 zW2;lbtCBEa^`lT2`k%5}!(crSM`qu7>{wu9g`=xCla&mCJO3!@arWb}E&#fkpM(J; zkJ$p@)};PZHiNyk{npfTr>A3~EGLb^zS~rbSl`(9Y17&bF`;ai&8$=XunJW2H!Jk$ zF$udHfgyCPfAk>!E-cE0HZ)Ar$cvW6+I2(kaXR2TIGfP;4sW2bY-cZjmDiICrK6ju z(Mr3QKbvZ&T?o=1Cyc*g2T!}|%IVtWB0vmD6#=C$U4sm2&Zlk^qMHkXxGF(`pEL5E zS6Vb}M?mP>Ee-Jl%=57?fgJp{j`|4xqSro#yI<&`a9wPDa;J)Imj-P+GFscS=IxmD zO7cNGUhS8RX^vJuQ9xvtRpS9c%vESiLq3uZG#rO}$QEyHYTcKHfaMejJz}aO;;(}+ zU7WG#i^M$x@7BcVz0@5IWAAXK?5~h#6PuQEcG6D?Q!_D|nlx z5_1}OUbmjK3pXA$lkfItcmUtb zv2-zeMCpr_2BN%tQ=h>GhXS%@hwM=tn|GGveT`rUDtZQIUIHlC2PuHX^Qx8N9YMQP z)1v$KLUTGpjlit+WU?@nP0oHpEnoAm`l#*?#-fQ_A>VywrQ5%h!s>U3f=rxA;48t# z>~PH%q^7|&aohAEV8!amiEbG&lU;4$-%cF?^Y4#Y%p533;G2Huvmx;}pl<$SZ}Fs- zR$y<>Qw;sT1W>WspH9w+8wN7e}>;Gu|@lOV$V zxNUhLk2#GerSD>L=khK_RI4C_193I=wr-fmveHXbI?9_jecR&^5w?A{1mtpR!@CE! zz;PE){91d};o9l5MdhZkbC%&&R6dUzzTx#?Tk}XusT9mb+~RHA()EL2rnRS=)PCGG zs#c6^3{`r7vI)^e;c~FHnLG~!?x;9jS&jtTu1q;!$XJNYB20%;8n;T?T{#8md$=Mp zVXcY-cRhM5wjAzim?bl%(Z8s#I4o5bR4Y*>G8i`)+^iud*1^~-$jicxg^C=eW)D#3 zi?x-2CHG3?z&~4Pn)(YXOv!A0nOcAH=C8BAZL*<2=z(YknLRjk`C!sz)lE{~G;;+o zirrE-oObkt8GI|(Dk*u-yh=bf1xYYKANh#|&WcWqJ&&d&&4LjU1*;n+v^U-CcL( zhg;~R04Amz$f+Y+_I3Je>~62^ze++&x48c%PN5Sd(825Wtm`apZ}qDiPB|u`9luna^IT zEoaiS*+{1l6stNPoMRhW!7hN0(Sm@70%QWO=gQCUlwmTbnGQ zcHqmE;b&0l4|piM@w=YVTI?FN;FenQ*92O7xWlV4T8=9a{SHB)b1mca@^Puc2U*A~ zp@ZYhW4;4wYU5-D`c2Z67bTOXNvWgbBYg?DX6q3C7YCz;C91h6HRe|LmJHxS(wX-2 z+;U*xX<#7nz$(~(F-%ki*k!V#b{ofX8^;+1IW9Z)H)JTth*<`i5??-r@U%`B!-ao61(F3oEB~Q+e z5o>tfym$fm4OquPE14bmxyBr6u*y#a;)D+P9bW9X3FGly2cOwyxY4OqinWePmUr?p znyBeP)L^sP5G8$D)u*40%!xG2_4WE+HrXD39^QOqzlZKkR;PEbQ=E;U-f+8xQPasS zw&b{O;D4v@aC^Etyg=YjC1+lk?E9?%%9~0Dqx?XTdfbVn4WYfTS|anBua&d+mGr{Y zg&r7V!j9b`mRcYAuCcFc>jeD+hba-#qEYu1-m5T^O+`@=l2bI-)n`9Ykx{-Ki?F=H zA*SvM1QrN+y_@sIeHEmWI;EGWqYRYl+rqMqKr8M#qrvbLxpFrF4L#Vbn1ts6_b5@Z z2<*P14h)$E3i26sq%>wZL`?fOIJ+F3%2}D~B6aiKbj%G1^@zg4X|_#2HafPD|yQdow zJ8r0ifp0Nq8jEE#4|YI#X)8oXQ)t1dX6ih>qbzcts6=BL@QcnWvl`k7Z1YPn8k1P) zUg9z8h9RUm6FPIgHcw$X0rh68m#M`-WB0GM=M1G-5$awZTcj!jE;vVd3OfPBG3K7+ zrPG-?Zp@twmf!@j0wUgHQE!=QopTs7T3_1^&LmB>ONp$JS-uKsa zL3b8YTeGExj#TuR;L(GjRBcadd8!1O6at{-1{C~WKWj6?<<$W`F1U{?M71FNu?n_X z_LQWdmR9&>+6el+Dx^|;8N-dS2}CxOf5YZNAwh0tIO}-K#97NSegrHK{v-Cd6Kcha zAGuL~dR(SX-Dk?!EPU#CD3Up9WKRc8M3=MXXBy*83ovWWix%#tjg|fqNo2EUJ-Tul zc)eJ(kNl?rQGj!3!X$;ees!Ktx6PP-C6dc$-gkmswEQ}J0Bo?C8uNxI*3g1i_#)PJ zw4mc=V0tZddkC}scF6C`Dz)=iiXa9&=RA@`M#Z>X<=F~xuwTvHOG1_nXL4r4A;)gy zrEyl4<{ws97-x!Z)}EcA#lo6S0wC`OTZLcty* ze`lpaOO2A$!QHzx0Z&t`E$Sp;(()`e*9pH=Y6eM89?F_BG8c_N(KRoZiQ#BNf=m<( zA~JN;fEZG#Qu)`iNV6!<1#hGo@@ZZ$SEY#;^LR*|Tsn`N?VaWi%IHP;UpM>U7uq)Owr_4`ui`bEqRdNLVSz z03annNVM5MY=J6?=K~npnsdNQMP7Gsfj+av=*yoTd?D%4o6iRJvs*8wL;D=uwmiIB ztP@leIHr;}l_`MA|HU7;>h|^&xN5Mcelx7uQ{Reki;2Z4a(hDrmwty-Vk`m!@(1vg zRo2_ZX_Ox!nQRE^t8)wFSp2(JB_PyZZB)7^`1?HN3$6esW45EvA{)atH)(o>#)$IM z<9W#*vI2f!gak0bhx^~UA@2`fI}2ZXI5bT7CZc?smIX0NtI)uKIHfvSGts*y4BwWp z7l<{Z6y<#tV18v%jEH+z^Vr04Ji)*ITbT_aZk*B4{DSgU&puXT4yht!0)a(O&Qo%| z7>rO|0&j4GkyU`nWvNrNcHj~ z26_DURc8kIoY{U}6HJ7>7U;#!S^Hu)J_-;~wt9-9=MTOmAy?$s2LtAx31Ku}sKipR@EQId-*z)shPLTs zCViEx>@>WlnIBufB|XL-4*$dT6G46&{$~Yge>~}TniA@_u*{LgRILv)mQF1t**!r= zq?7X?L$-;Zemqx%5EpM-Y_~F}HE!M;Gu#AP0)M>me^AN9AB(6m;O+%!S6*MVYAJVK|t$M^RmFe9r0Gu!0(2)XP{QNtm|Z zArUJMKecN$ZuRT8!rf>?IO4CL8&{Xhr!i9bMxaqmbuq((? z1XdV=MHJ4jWf7*Cc!BNFs2@;;POIi>v!xEhFdw zG<$u)M%A1Rd*y=Q1IU8EUZJPpBbziJ?(vol`!grN&`?O!QzliaF1^XSnH}YC5g4?1 zKQtOf|A5-8d9i-fi4xH0!S7vU>CQVN2kDDkBrf`82(35#op_48f@`(Fyb51yLJ#>$ zUSfv4_LEDkDxnsKpjCNBnuXlJNuRe}QiBL^g@xv-#KvhKH@HukIkTQnb(X))^-Bfk zRT+^JB)sNoVYi}S-}!kKoP<9>!n&ew0@7%fjMp$qBfVh_`iWhzZ2vpAH7MOx{u{^y zj^6m41eg|(4u_9Nb!Wb)N`f*){x0UkA7bAPsyrFa>fFVp?*lJ%HySwQU!qDE;v+J2 z2fqduph=~8P$vKYSvkCDYq^lL=5dc#Y(xj)b)}FKn;r_@4^AP4fErQ@_1!SW58O@U zs5J27qeJoAL6yX1iN-^Lgw8G3!q|4aycvhJ8D#fRp}sZ#`d#olb_`ykf)490=N|&& zx^f7?%`azd#1G&7v-J*BqQzpnL;2-LX%-U|y<(kbMz2zWte^D0D6un6CU3?2cM?3f zxy@k_Gj{hSPdce`dKWQFl|bAGl??=?$NfAh15tJ|I4Z?2oMr-dlDOE>V8h;Ea8 zL^M^7w0z5|R1E(NP@ika(6K5@Nmu6t?)K!SiABBB2bdm|prXfcTHh8$0MahMJo-1f zOPbygJm$Kh#n7#P=Nf32%4Q@PBMdjkE?roBnzZ`VZ^l6Jwc^spdlWUhKTAbTJIV13 zi*Rhy@2{QRzhw$(HW|vsUqxNSOryc6SW7~6Hz`oIZtP8aIt^en(Vs-_Wm|>j(`c;E zi$TO^2G&yV1*Tiq|7bmOHbC~qYRE~{=DR-x|MT`Sp4qqtlh8oOln;3D6R3>a>uLh3 z1S`l(9xC6tdJ&nDqMSW%4MRrdQ@1%|ALhwoE9M*s5D*WQpWL!vZ?5A5F8Nlx{lF;K z1Uuqt-vv_~1R~6P86A|_+I0wY>}yuMg^H)D@;H&y>>ZVnz6-(iiojP|1Vw?U7P{p)$N|rDFauS#f!4q##fmD( zeCCA>UkYuc;}~i^&q?cgHR$5{znlBao3r@O{voE#R0adyGxLNE2w#$k2_Sd9W_f7Vc^Q zje+YS;7sW(;frzXU?%r#g%{Ba+3aOZZj5IB{V7OM|AV|ul`L;_dqL!~-HI-XF#2TS ztj`6`csj1lF{ls*tZ6|K_FKtC;{{Vbd%PLA1y8>o}H|i_yb*YTq`LvGiNo&Pf*jlF-%F zn@Qq=2nJK?h9$;4!}}^qhJwqz{VI+pdbo(Hk%Lx5e)>eVeIoWb8|MMjyCgP{d0|zl zmXX=3$d&vZcjGM**2QC&3oztGHQ`2Yktm!y^*)?C2Fm{kA`$%}WMP}gD~@&^p^Fz5 zDAE^wfB6|e#;fBXcyu@ugUrm*r4oEf9QTbcVm-s+p{VAV$@ z9r_JzIS%ts-@aiE3`s+QXi4*@r)Qs0LsbtmRzdKd<}v?<8>9Xk=-9a1DW9BC+uf}2 zGf=%~WRl(&@C3l*^G>{j*Gir^iqb9e4J1P{DIjl5I}97=_N@fiJ%S z14JKWSTy%XA2c(M8$_C$pD=pn5vox=UFzlzRiS%n2Ba#>?r|ssP51JYZ5@T3bhMX(D1sb>hl`N}njA7!gLwz&e4&4YqI*^* z_Ky%RIAN^BswBL+%+mh4=zapDnoHU=ucUoZ#n}TK$~t=B{r%iP`p=Uz^wbmV?h(wX z!@RtOs75hz-Lj9As874*z6DyxJ!su0HW1LG_TX=zHp1HoOx(;JUFBdT1gxSWLckM> zyMDJfQDllTD%)+6qxudEF(E+#h-%OYGE6lho8$V=%SL7g34f7Nsw_f^jp81SX;Z2$ z_?Wk=86Nan8ND5br?SWr&gTvrE^HLcDVykZDa|9@a~fa7Iy;+kl(3e%^-r4C^ znwMQ$PNow|X~cZ!+mG5X$h+!)c>*$&tF9E^Q`PWzdVeEZPqGsM<6cRz-|@}=Mq3ot zqm-dtu^m8RAU;yJ(s>sir~1xxh!2Q2?Qu(-+=Lk?b2>|Pr?mjyY4RGk(zA7Lr>Y1m zd>Cak264}GlJT*0eUB({bRxhNotpuQazBy@eRzo6S;iy9&IH(+tQSdQV3wig~Gg`W>3{4M=$vV~x_?&{Ck*ItWyeh7aZR$phUD*f#SCcsw+qTA7!zk)R z$~Q^4!f9`2E(xyCjj7`+93u!}9+BmW{tSdz_98?!!ucnKXybqjChh|wHDsO_vfKs zr;21+1B$@l)ZS;2sc~ZhR?^XNZh4kv=$Jn!H#KO%XU4KB&tLZql)H4y^TfPj5!Sgn zwHYmc5AXzuVkyoL*e%v*YwSKX)qJ@g!LAVz&IsCvO7nCK-YxUEdP|36hVyb%LX#xB zv280tO%aRK3hs`kyw3{<`x*jdS{>>x<2V#rl+xo;Y z%m>>5J!gdLB0tzCNl*)nPuljY50Q5Ag*p7Zy-NfS@qA2`HWN>F0D*R&^{kVy#DKlh z?y-zmXj7m9G8Bp~VqfBfGXfS3zWVSsj4b;aIGy8I>p4iNdrD&1%EZ|h=XO?M9MO;i zw`$tIUnDF(7x$JAY>7D$8LNp;Kmo6@y4|R^)rvi_$J8L;WwABNF4`H6Fa+kKV|!iB zbINp&{f?q*F~_5V7?Tg88Ln2C=I`+sxCU}>Tj*UW!6(Tjr7t6K z`ApHmC{vmFNNL`p!ud-dX)mK0LuPW4q~QMdUH<{--_e-bh0J}mu^Or^Dbujrs_3i1 z5kl$r`^Lw70~{m-;u%&}MMFvd#elCv2(JALu;UnxDK3Fgz{#uViq3~)s^G=E6#>@( zH}DCv4&zu}`zns)4t2nRqvs-Ie3HrSS!YZVe7$!}K!6c=qsj*O=W(++>hgLV-WPfc zlIipkxOm@A$i}=f3+`yeh;XHTB{nb1u>^Yhx+_Z>*xU~V?7rdHp;m$g{m{lL{9_{x zPVW@cDHXE@x4gE{bXU_<8|Y&MS!SP9y##YYdS2Uz&ezQW<6l@!WWDgs^;kf+uEFFV zXc)GqYqzWcezBH}Ed-uh>d{`NJ;Q5L`}QoJvST3Mgoy^SQ28g!P9Kfi%!7H>c)`s% zw0oE~?6I<9qdv2FL}4b|6`U~gc>-@g=_V)gVv-a-Rvm@3YybgHl2~>vw**n?jaMG^ zc+^5=rh(qoOOh4MWJjHeOO?tpcIhZW3hy;O!68&?^yG^p7$@f6Mhi#;qL4*$lAQx) z>De}f#7R~*L&jKUJ*wNKKEV=*yeBAxSm)F5jL$^@+>8+mtJ3>ku~00^#iY~r%^o5T zW0@L&%u9FexG7EFehMLeHsG|_roitbZ#11mjKAeI$wue$3qyH}SjB5vTtO=JBR?5n z7QlL?6w&uI#py$xX52^^Vc1I}(@w z&n@J{*@BCADgK{iCoA>-5mSCfC`G8(-d3>A^3b0@O8mptXSdkjvr@`-@Ms|mVF0In zS8J2nx1}Aet@Wn~3QtNom|04<4EET~ien%+tnfOPmdNc%!>n?C&i>>|zxZK6Bo)Zn z@Zp*3VU01R9CAvhwOj!RhX*}RqF$0tyAJf^CLMaB6snOdkeY@p2B415h}oQb8cDE3 zbqU!r{>={0hpo~^bX}k2tSOdM5X(uNrxVn~7zi^{$Lc82Jnt>W~txkM28=vezW&ZC!JWB(l7u zfKLqoZPJ7YQM15tTV6hsC97l#IwXFdAB_QM{wZ5gVI64yf3Jr!%WcE`PAG}(9>%EB zA}E3fK=$uUTopRw%1>FQm7B7&g6TKO5eLJsjI_%QS?9>gn&>wL_x%(|GD=qxYjkq7 zS#XaC$_lWDs_-;(;W?KwU);y%U=%atWzpCUX+V82bNL|$l$$IvN!{T+qA}FDWx_K6 z9VWdNpfA~z>gX&r>_9k3UdgQMQYOGYM_-Nau|PmqYZD-R#$xM0`|^emhE2SgGJEJZJs9B%;$yQE(F6E}{Dk^*t>s&1RNcXqbb&`E^-e z%fd4@(uAq{$mW%x-REW$3{oED;DPg$0ivMjPm{aOlOglLC1yD?9uh4s&q!$GQ7IwO zT{A`Za(eVwg)MgG^{0z_cGKTm-0}D{D*BY=z0rPUVWN5#Nh0m6e;==l8YWF*>5UCxndKuAiwaiq(l32?E% zbtoTywwJD#h)~mXCtN_owh|}M!HC}*mSp1Bq>q^@8ev`=sgpPKQ@?@3mO~K)7R3A? z5N*1-<+dCB!G>jX_5wWf4@L#OEE@97Vn9Xr7FcipAvriE;~!2+!cWp#)uM|_yL_1p z)W$}NxTp7(-{Xp3#Vp_1fy@h9YOROmx`oom9Rw<>`D0WJ>>?ypT4AT``+a?D1Gr2A zF6oPds=Rmecl2|H=f+a*>_B7el4eC2<~1TpeIQV+LapT`X4~!lqAdZmK8t@!XEuJM zBLT}v&m_AMGP4=3AEn# zd%9jH7`EFE@b@a)b7?Y1~Eq>h~A$vdHC*QU@XTwIOzJrQtli z2$=%%y)$#Rg#x_%L$Nh_(e1F`NXN-d7ROOp4g**- zVkBP*aGqI6Gdh}T{m&rp;YVK*9}gQoRaREj&L#-US<_$VUHu{IKPv`<)FSK z`qXolAQq9=Gj!o%E2xIOTZ@|&)K^iY=Mk+fy|CY!R@B;~ts|C$^u7CleRZY?{W0dO zGnkXf#;MwCL@Y5RgBjjl=XUjE41>U^7>?wDg2>*9oMxvJ*49KwDQ)Qc-Ej2Vq#?T4 zeS|)j<@FfcosJ6~Z>UYvOPA}Fk7$#7okIxfC9nq7u{+5P4)6DYV;`1vl0@8=5blU|`1%;(fD9$C`L3HIxO`jzR_zZ0WvD;JNAA(pe$K8)V@P~xx^b!hYyH4{nK zr_#{1(yeN+(`CZuxx05nqkiNGhY`BBRZPIpVOj=g#V~B?JY#dQhfV!(%6EqJjq#LD zoPFMW#a}iXDbo~hNx>VZFp8ga4yPlw<}Uqf5W z$;{75Z3QVcJ-@pj`HL?2Lb8xTw(Q-Nf$Q6f&-TE(aY5P8(Ey=52eob{p3{@HtX;SJ zT`fJA2sK-AdF3UMn2a`%cjg}5-;|~V_r(=};$q#w0cJyA%Bv8)^x)7G%$=Zl6Fqs^ z9L1FrJX6+85VG(EHjRCs1k%zkqc-zx-2j&NSAV3gOfO>AB;CAU%;p-5u2_uTj<)z` z;+b=7+CXnK@_FD!<^k`q7hJSrF$JEcZtw3S#%4o-MYl!^gM|mbJT61eq1+uDT?AGv z`X=Ie=|40I%&SVbux|?1^!v|>-?oS%cS>!`kCM9Qr z8S(tNoI3ovv=ck8RAopKCofQV7Q$7fw?6=Py&3!?3yLMaAcyk_J$?bibp zw*TpozB3X2;iep_aYZH@o5-oOJtzN}(Q6;3*8ue@57ibHIY`?7~q+0&I{0DrqN&%p68hwK#p?lFC?U(}5-`<3-cYX3CWUAcFB ztcLuw65VXaJoj$XHy6sIIQ$2qn5tB>xFRTJ?UMrIx(Ehl&QN*^#(&O*HS@&Y__CS> zU-4k%0kjau%MO&VD3Vjx4wS2_%OY7?xZ0M>wQrJ38BvoV2fGtR`wANoBlZ7Lv_MqD z_v1%-I`{uD>WwT_7F(@H-~AxB9yOk7-l1@zrObm`WV|Nx12!?ks#+) zVV#@a7p#x_-N5taRiO4^WMkU2Wjc)pXySeWVGe95$A#EXQxoPsPNrGNyIa4`E|SxM zp=PxCx46}KfQ;BH01KQ{pi)5|AJdcq`gwt&vIlOyCLKs_JtKJr->65u_cD#%3W|>R z>Tdj-JxG3$t_fTi(ze+aG2n(*I>Adci-P+Vn3x`BdA8O%1!5g2blrtP+4PDNEv(7t zzq3#J2^t2$VUhRkf?dB%%47g3Zuum0g}zlEqIo3-qY23YiYq42G=$stolJXx3wZxMYqj zFhM>VL_#{FGDVwcBh2x=2&FZ&lG-K7O|HBh8iG#1qEgeWZ7!t54TQL@{wwLhELc-M zkNe6W^H{Q1%}x{xxo_T1(s@IO4ii-zw+yM}H(}V0ZQnbz0(+nQTt8JSuI@5ziy1Qm zjUm(L03ItHPM3|v5IQNUx8Bf}usX(iydHZE@%E>{$)X(R#=0(R@jsv?%`df7p zVeMzubXZ{K3?>JF@cI zny9D*4byGqIB@wgpCObMb*Yf^94p#&R|nlbc~gAdOnq8CXsz3EKi2YQ)W;=So9ijC z&PT=(Vg|?rIj3zxXHO!9AD<*>6tU43uO;+lUjLQg844_4sr8ec=KY?k3~%m$6jD#6%%waJC1dLLkDbE0ucQ=3Sl{SD3v<&5 zbQj=mbehtZ^Y<1?&My59zbm%E(>PZH5wxF?b{OZUN#|h?9iRRKjdDVOKPnM@Vbv*( ziQ7%H!9_J7iz<3_DutK03tN`68KgMmjYfcGhca*28Q$!9J(IF@A!6Wbd;#S7mrPw<)aEPs zPBBr5nN14%Gn=*uo_|~(Iv~jFfK1|v_kdtbc<6>|?_8FLtQ@EJt_%I6)E`TllF<=6 z7`)YgRrNY*>zfTt;(-v&O9R_eU&QF@29oOXjjrpvPx-G+_^OamnViwHM?p%DtV;tP zewsJGMJ=mtK~}m0-x{io(v22>Cg!!OOD)fx&%%QFGRX>@fU4Wc2`l8*ZY>#<`fWBw zlX@EC#cwlMDL$5W-#?|gZFb8>I*puvIoe?&19-P^T9fJXMu|m!|2nS$E8=452K;2h zV30*-ixg&-0*2P*_AR?c(!27+Hid9|R2_**KEyR$mTEP?wt^d* zU;v6Yy({t{!u^A`#UiR(by!1o&5Z}y>Mg_#Q}oIVW9Gtw;_= z>!`wqnxhMcW};RFHQ;Ir@1#&{1dsn71MPuC#N!N400-EbpL`Wm6oUEL-=@Zc zv6dclIBdJ0$U9X|FuLR^^u3jGqp{!06-+q)WjKc(xJ}r53meHrOiBA3Jw85^gW~Dc zcC*0n+4^~LD)uL&OaU<*$$JG?K|dDzeRo%6Adk@vJ>H)*79gbvSNhVvIA6mGH~h3a zzRG>$wv=;g4s`NC&?EVTwaJr0LS0a4>2qml3pji@1#Qh|IQuR3Bh8yLad~_v4$kr$ z4&?$E8CGneg5pOV{H3{YTb6Cusx6L37DnpFEN_F#M6w#L)7g|=!9tt%BeMg6QEu;` zc9cFdqL~a;D*#25c|)f1q?4iOhx}aYhMv$9ntx;MuuYzEQ|Os0pOC+92prRM`BeAL{fTw2Bv;*-_F%bot8l(@c4kAVrL$h5tEZN_9N77i^iDh|Rhw zgYnJzpc77s{}j`MRO?&BctV|}7JrIYMzz#J|5Z|k!J~nFH8F-f;zYn4ARpIkcGqX` zTn%Wp*2*lFHjwHnw*Qlk=V2P6U4P~X&bHbJcqRD%YGka~+9O2L(a||;mpMoH1Eu?O z{2kh+nsapqZ)sq4P)>VlUm=^?qpQJGqP&oNb$_UQD&n98XfHb-(iwemZmF@7La<3~ zh8qIf!g;lylQ2esr|#Vu<#Z#S7asN{K-Gf~IWq?bH(Zkj-apN@JsE!Z&4=0mA)dJq z)~Fox2Kz5%lEa7a<+4(vU(@&~v^tdYr&#H)Q6O$D`jyv>3sY!p93MOaC|Qf05@1BZ z_M4IDz82DQa+sN(jLKepvDrWNZs3xrwax?j)MRIq9650;3=KC1riP7O z#SFLC23Y7@E|zf|`TGoL!0+ufLl&-bVR5K4Td(N<}Lu8Em@8si6oGepmXavt-=1~SGlcWup zsG2Js3K}^o@K3SxUfz4hF4n(_5vEzu^`J_K+?j znAxq&8u6&!lmO~44q+IL9ajIt%|Z*XNPm@6+)#qZ?~kH4xjC^fBHlK3mY-B(O>E_Q zSVBm5<0?_^-lIq z-ogn`DW3gBa4rUCVenlQMF^qDHEfWJ2xnED?2)Ym6|l0vUvQ${4lawGpS>y9hVmA9 z!l;BQTo{$%#=nA~0KPrw7)=_oER1LDl|D4dn$_~gLv{Xc!bW$6^+$pPw`#LZ6rK#K zE7k=MfLOv-aV!rz#krVoGbMc!oaG+1;OGua&DF@>PuUb?h#&7{NFy9n9GxG?;aJF` zmKFFz-Furyu3MqI+^aNd3*B?WqCPj!(x9t=o~Y>uqEse?wJ`!|UfO?fgd0aj(~>O8(Lk9l_s~ zFm7i6PfE&8l0ub`fFh75D9TP16dG#Pidb^&v~332wUjHlwBe<|l8);oGmZ`t4eq)Q zlfE={NLAI(x5QKT-BE6&Cq+@p)rxX#J$k|?Y);ZTS!m-z7t~Tr(~TP)dC1)IK*(zR zZ;QKjPH_Tz?oBZenaY#5pCc>~*C07USb8bL_2|2Rq6tq&Ot!Puk=4V5$ zwi>Zw?#MX=H%T$1S-*6vyxt~}?{d4}NW8>mR=95?=OiNa-8^TM!Rs25WNS+oC4*y0 zk<-;|oIV(O@2+Au^Y$9`6NcKUEb|_j6Uw1mpFoabjC2?;W__78*`Kr87EVRi-jr{O z(FI~0kZ*FpaJtxM6Z~Z} zS%L7t1yT}&@#czZzcf?)vsaW3PAt>psK1fyKu$=HRUV$2Jnt0m$m+Glo$>%mHir1k zW0f^iE~bihpsz$aY_8n0rViW-?^uBh-?&+x3Zyo1pv00p&QYKRk@z2}ivl*TW(9QW zdxoi50Gn#Q5)8*Pw~%`)B@}@#C-&xCo)Q@0VDfq@3dgkYQS%Zi_tP};Yv?P;YsOuN z_DkwM2^^y9RChf%G>?s*>xx6Cm?3*Y<@pVwLe4Lw#8A7KGSq#Ic(T zdFkEwcuQ#Ho}bVO1M)HxH^Ue!^TGTHZ0rZFKg&k@}H{lP{lX< zg}e4Yd2cFPf*D8hz}a?#vVSUiB+(P;9{m-95NiO)V>Sb%x*_#f?^;N|9hS^VU3h09 zUV5<~e2sC|zwq{kU;mi%2xZ);YOjQjSITf>SD6Vt2qK)4Q2|=E63!+0uKG;3yDi2J zpL)a1DQdccuTW#HX;4{(l@?o4#c2v4!3MUBHYbGz7VLItU)6O_d{cVUK_FOCS<_Y5 zYFf;hV9{Jaa23Y_0)*i@?#W0QE;sj4p|tfh)z}pZ`KticvMSqFLVsz8`&Cn;@CbQ# ziiZK6bGVpFM)12;;nLuEAUpJ2)67KIKQ(5F~T{_$cZ;IvJw^0T`k5|=?8qYZ4Q1*8?R6o+XD z$8bRl_{{OInp9dS+ruM0r4bN&z^Ls{4n%9AGWa6Q?ZH$B{g0)I`5AdG*Q_b;&!`SQB2h z6x7@5Fsjf-nd69@yH1m{@yBv@vunTe7uZnXR-l>dJAutmV?1E z9#57Mh3ZzNrSQiod%y#a{m=MV&7Oyc^2-I<{k-D)2eo^F0>L!k2~Bh!2B;3DhO23r zb=!H?&o`GjDarV! zOf=OAvaq0eDa{TcrCW1MN1cJtUOYsFo?=5$0zq*S7I`v#u}RnUeW_dIGVj>Y%7usy z?uNPB(NUZtZOw|#eYu6(&pC$FZ4dS*CKY;~EIX0<{YZZ#3XG9y+PXGa*_uGga{lVI zM58#YtnC557gOUE4C3quva1>wjKu}iC!=0e?g#G7g_F&6`Y3+6@;R~SuuwP8PCUNP z&42#Guj9+8^d>03G5s&~m309N38%1B?1ntSJKUcN!e#m>`iI8Wp<5&x`NRAcF+n&& z34R*juJPu{D3j}P0#>`SDNRC9WlLKyMnsn(F^i-$Q79#ymy80X00Ph6(+r!uF(-Wh z454P+SP9Gj6}Hb%tnavX5V=9LL1CqXV_A_JQ=@5qG`a+aiQ z&j&q4RzJWyr_hBka?cfhGL-qGB05)fJs zcdw=4nvd$6l{{eZYtC!-HhxFlDmxQ05rg5|e_uBq(f6~k;S!z)P%vAK0|s-q&f47! zzDClq)@>q0d;O`*_3Dr58nPI#>n+{CU#^4L)%xN7PjG0s#oTmmtp7AAdR#g1O$e!5 z_Lyfzsunf(v_H|P4#92#z&91uOfW+{=G8zn>!Ba{D|sL4&);S)Xl@2d`IFX~>^1HL*u- zcPo54r-gvrf`2G^Ac+oLNE!;#C@#yZc;wUq1AMmGB`X@F7R4(sZV&Uzg4!ukiEG25 zgQC}Sm&B6uyE03suPG&tA9rBS2hk+9nNSH2vVNj#cYyk~V-1i-)8J#6@?YS}5f+nzxCQ)WzbQ#{m8E5ynDYK?sS|A(LeYwZ$Wz<2M=?Ir;yB~yKGevb4!IS3H zT+JbH0%(ZFF1pHaf07u;Yo@u=Tu$k1;Y;^Q#Am8}Hu>8cE#ApWfWathQa^Z9ed=v! z9ivmOy4sp$Y#=07IOnLo+_qN zVKRviu@#v#{)^?9b|5(#8|_U(#8@lBDY$G&O*aFCZc-9yz-B{B{;6|-@Nr$K77tsy z_{qGHqoAvH09Nc*gUt9vdm9xu=SJA<;#AH1b!?TJ;rp#_CPf|hfUL_sWK`U$fy(k9 zb`I}>JV*=z+RM{ns)-%Mk{)-PAG{@)bZ0C}j95OB z;&Nfh(ZH;H7hIT<%ui*)R5&#tIaKQe)qAqWA#av5lw`fc|Ng|`J33B|e#y$+P&qLp z?&05&2OWc}L6$)m>z;^s4V4*r=TGxSg)2012jN@2gUZ)COu1S%`i6T34wTx!Pq$St7UD>;SRG(q1fLo& z%bCsNSIU2A5Q{3_^Hb*t9zZuZl{b?>{l@!t7$>R-w)SB{q1xNr^PFszH?#VTqu*0U z$XT1cL`5@Z?{BZOXY8(SD6$?mNYSL$sHtSc%H5jx*J=(h!q{kZds;{E`Wv8O61SPl*R^B z@wdp;PDW#MwVAu*b2nV;K&sthcpew>(6s2SVkc?u125twHK&a<*)XfuR1H%Q8Z|PX zUMPscwI=~9Hyi}HCip^j=eYgi_SyY-*^7n+NHNRY*(!H6)^!_F2AO-RuLuzOJ$_t1 zpPL~RMH24!uk93({Y6Gkf=x#W9Z{h9+ne;;gxOQo_*`=+TnQBVl>pP{biD{9F-+SC z#Rp(I%7LFqDEj4KI|~6@0kJaIe*$@oB~e$bpHg*|_Op<>Wdi%AA);8%=Uv6#$p4o9 zddE;SzJizR-g;G_pMc|Go!XXl>sn5(wkMYU@=>=KE(UUU`&*orS(AMm4~HLde0b6c zgBqE2(o{^2|3y)pH!#tbjB1@(_eG3%?xMpCC%;ofR7T15~ z421+d%e0nv6q@LTbT$2IEtLJgF3dIJcbG(tUylkSMbHu$N2Z(r47oA1Ld)mUqz1gj z@jDf>dxs?S>~mJ@?t*{uQ2ujn0Tw%;^k*Nxf-TM){8ih0d4l4sCGF`lr-%%mJ7;2k zQ#K|3-F8Fz`J6)ZfOQoW(I0s4JEMK*YPvFk#jbeMKXvgzD)Ohk*>iaC?XkH8Dj)rl z_bpO|#7km*ENpsYhU2M%#7g?45|}(EcA|5$n@qSK7r%3gv}L(X0B?L;EyG0>K{soh zNw>&dVrX3RxuZtu84*t6zrBKQgewN65&CWx*6p4x+?4l3r|5ud@lmw2f?bpDBzsIj zjl<=yNl;Z`h5&IL&6xdQgFtS<_L@l>b6BT5r6_VqCj@@i64M`;q%lObqK-yO8wfCU z=tD{+zHAWgqkO%CHoxOGAhp&Z)Tt}gPn?v9?CKKIgr&3{+%5vn_V7gliV(051d04T zW(TNWpXQ_qbMx1tbJ){-WZJxS!Z+SN1Cw)XsB9yok^xSqSyr}zz6F6H0#WKqzdy$+Y+G1J_TumDGD*@mO{l^n> z*q?(8Ls)q_Y_1&E4!3P0I*((g*YShPN8C!marim%_xDQj>G}mDVaA6+jJd;IdkJuP zL{2YqDarL;Qr|v)@JY8EQ|DGB<}TtQ_2Y056n+R$tbhq4TCmA>$vpQYq|SpH1aA z`Z_s=KJtDS%FsF4*`4qNVKQ@gWuoE$}f9+^6QXv?&XN9e1U zIq0NbkCK#JHdwYQpN~A>2K}GRYK{&v+Y^V>t(I70_TFuAJa-^ybp=GVOnSjns}vWY z;|&k9e4WnwF=^S@FOFV+2E+HIA1bH2T8S!+B<{tUZ(GHixat+pAg;c}S5Oggt_4u= zbbmD*bMn1%AC_n@`okP;(ZH#G6$Y}mio8Elgu^^hY##R%rBQEnUFfk8ME&m9hIr3^ z_SKz+|LUH`nCEdvFUw*Y2py@!lc8T{7M^%Qkj>=}yF?G4^)K#Bu4x9|YV=0`Uv0 z`ULmbr)ZDi*e+S_VD0*a6G5aRmsSa}db`veTaGS)gOR->S1BIYS>f3Ii3B_B@`-tC z+Ia)J13%>#R3pjw^_H(+Fl>3UWUwOc^HD%KnB4i0rql$-E;(0H8t| zB4nU>ZVgjs8d@**YJ$|ksZ#L2fx!!?P|2VVZy&<>k?up*A9(T9 zcbSxWMm3EyuzAa!hu3cDm|Dp949B&b}rGyXp7TzvH zoNv~e5^g20SPs_S2f(j$TKg?Ig)z~ul!AuiBV4a7(LKR}r>-QlgaY}!`!aH5>*28? zyXuxU2JB=bhz{+6@GW|}>2}p4qSZq3*?N4HdClKS@f%jbpF7EkjoCG008Hukcs(%A zku;YhPj*w*UCnCkMAL|wpOV)IT0*wwdfo0f;|#C3C%W&kptS6gfkko>7VNX#5Jo-` zhP01qJ9P@$K(jWw7MGqy>p>|ics3Sn4UC+^ho(jrwo2Oxhk^T1T-zYPS8utAz?P0nArP8yVbE<2dEQbP*rt{}mbjxn}7F90HblBqO5sC9hq8#`)sP zu(0`jixuP-A3M&p0!;b^T>Jug6MHD{BPkW4YLCn7t|xsUz(xMCSi6Z@1s+m4w^>cCu6@Ouq7mYMudEQT9S>ag0 zSa6)k$ha20TB?R=Hc?MkqMnX28Y9Y?`jM`0mhnX!`x_fj+NdKWLWZ2=B}kMvT9MYE zLjHR_yGzrK*LB@`!@9Z&65?VXY&=rh_c&n$JU+VLY0K|-e?}omygni*kduGfQNCrR z*aqbY%gW*(u_;DKR~k>VI-T~`*}Kd(TNR#|1ieB z-TE~7CvBFJvuch6k^HLxSOTm2`Dp^w1$`cuJq8JOn`MeUS`C(w8DrXTiwp6VofvO% zL4`vj0?^sv?b67skT4LCDSc+qaRS?AzezKdy#uS73L3 zdkdqTtCrqhy%b`+w~$qQUnmDV?Cdz+Hc?tvK`bY1aMGT5A`r*DU#*BTQ7`$&^6KUY z#%krpwRQk-R`BAw6&uKURvd05)WCq7+l1b{(0=c%acBd0vD9^lSVe=03jQa7p38~o+fQeOuztOK4 z%=4*|145p_NOFlE7{V8OQs_p3@)L-NVzq%c+e-Q^!d-FAQwm7{#*jEB+xli?C<++K zOB1TQNnO)82n7rmuE*JlNj@_JRlQqflb~HIU(_WkwB=U|iUu&`&IY5o#yTsK}uv08<$@ zus~KPc&4k|(_?i1OufCFSRj)7u~^9d`~PvklT-PLZ3O%4_K#J*b-!#=+(0(n0;j41 zqB#;M82$uO3NGDoWmEJ`kwXY^XH&DSOt$MZE(smGf1bkB*%oYWkPvMaM`w_|R>IzS zj+>rYI}Fd-POebdKs1LkN~DG)T>I{N4IEC^gW}vkQ-K;4(Dza`WiA(8hFta7(-_FI zKH^T(>=x47PR>92+QjWGE*MqZXVh^}j0xUCNKR13+S^2d*R`kg)sv9PQ`P1RI{_|8 z4Z6I0F0S3{&wfeTU^;wEEzZO9Q8WQg7R&-{Wj_a(MT~`w-k$p`R66jsR0sM!@wzOM zNwa`Xvu;G#)g=}RggvW-JB`Y zp|#FcJngrmm$_E@RBzSkHTpVy8b>^`pJek{A$R zKE@K3&tYH<-V3nN$^3C`dlTq>iJ+n9JlExCj~;uMU&FY2P=;hZchrmb@^AP>>P>x zxyxtC=KpbTW!^J1bwmIim_w_#4%!7OG401=TLJdA#j>US4lGx5^1tBxjY7%T`h?qc zece^YT=YkQ@+CC~t#k^g(VL2(AZRoTGJ=bhDk3)(UZ-eiqb`HpWbNpt=wFDBa{FK0 zxC$PCJ#4xsiwf}Pze>PFJ>;M2$cct^SduJkJP60&2NkP*5SX&;^bbuFi7;bBpLn1X zMl*FGxp^4X*4-TH|1*uomub|SH?RE%=%IYI?4o$*hz0+|HQMshP0O!4Dnl4|n0{c) zAq@b;)I1xJvD^B-1=-dntG2^|5Yk*MJpfy{s?bxwAd_-wf@tNYgHH#7V?uEOwvSTB zm(d3 zw>~P|(pMIq>EK?xnH0P~3RhpYDn-ZraNgk^1DJv!^M+zCekB#$st#y-zeX=u#7|Dv z)l?gPQX^PFQ3k^6`qSSsH{t%Ma+KtDWx3?=jdJu6FE=Fi`FYwc@#_;dI^&-z7YaYx zr|5e5#Il-vf0`~5>RtN?SUd!A4FDZSrHc!?vN3c8=J`LJfnr}cTSqovFsp{7ml}z{ z%G14VW3-u&!I6^l{hb>W12J%lVS)sBaKV@(Ys5=!j+;RHt04A90JTCS@edPLnzomM z^}#Vom2Y+<8>x~eRb@>!`prxrSVF59o+$6bzZmOVs76 zTQme0#U{SGk#~8MRhNQTbYj?FICN?5iYNLW6kajhrees50aM^B&t_0GTY7|1=k`mv zY#`v`TUB-=?1-r)G99B8bh57)db-2I_XY*A|7L42!m%MOcXdsWQ~J9DX?SmmxoHkm zf)^k-a{*n8`<9+*oD)MZ^-^p;4$CkC#rKaJe-{K116o*$JB>mmuu@x51a`w@N7;pt z_^HUKeJoPe0VeL4F@gWo|LK5XyW@UO{|d$C*a~JV^;AY&t5EKZ_*?0X%7Zum_J^n) z!TvEB3G)`l2<|^UrUJuIU#Es^&`-n4rcFo+r5uG{KmWMdI3_@^YObvgC?c|avxY@?WC?$0#=Ak0>%6f5;-{l@ns{M@_ zXR``%6Vv-tD?uUel|=2+5lxTo;r~NwG&T-lHv!K*r|UEP+1hhvr#ueVyGhWReRR}R z{kT=Ijqk@}RQi|wr=EJrpS(@QSab+>lo58r-u8ZSeJrxxYn5mC$IZ0!>gA1BlY^nj zicP#r8483Xaki2bQZdJLX^IHmR89UZqDk|h=Kjf{Qb|0y=&l2lJi$z>_(o!+g)iMJ zpL;8JGM{-{;>h{&uF9C*Hk06B5js`1L?`We9oVaVpZ$(5PGl@bNrflCqnPl`+S6LV zClzNSXo5#Ydma4w8Lma34-mr(;g)u$)Hk}N(6VAWP%tzJd$Swy z^Q&LCCPNTnY4Oi6*HTFsO3JBV2+JFu6e{1}_L0$t9ugcZ}BXo?ywvaE>UbhtHcQ-VY1ma8Npl~nMg%~U=4qCd8TdTA{qIJ8#}pGzX9dnW1dBdzDHs{j>LH&)<=7Ue7Q$yPld2=gx*cKV2GBJ zMZ4;mlW9OpcFyx1fnIbQW)sJA$1%t@#nt2@xEc4afG$_2Mczot97o9Coac2`dTTyE z`mLhTtLDl-W=8DGlBuqOYvH{L$h<--Fv)`8}8|DzE*IXd?a^X zwCNKzi@5)v8&+6sN?w6<9uJ?|R4K-yEdJz@Fv9%Hl-GZ4X_)9YMCET7EY3vb5dpL5 zO$1CDhV&bFh+_50eMpWEQT?ZM267@NY$uOaJQ+BYcnR<62rXi35G?T@NUNd)=D^th zSmJ{8U&4ja18fl^j$=T>HJIo^t2G(&x)i)HYk;5X!qH)EJBk;Mn$TgQExBy&Nl+)@ z!Dfw?W&r>+Qy{v?3ic2RTW(niuI4BuE;jJ4KKVn@Sz?Z)OZGY9ocRl z8HXQ5%Sk9^*6e6MBV(%84y>g|I+y6+VPQb6SDGaiuJE(pxW*k}44ZQIU|LI`nJ-F4 zU~z@+7cXEe9eWcVZeL3bbgym0t+ETDFj|GrDI*^4-`r!ogk;0NNQ7`1j9{%A7sJgF zRM^qBI({sY!!`bRtM6)!086_Wl#@D8U=E2A>8r1CA@7!)j`^$@e*|d^2>RMV3|$FM z>XUFmSBvGxiG!A;vzR}yRvT<^)#_r`7aA9i_a0#v_Q}dX8~zB62mz|9KK&xtP;uta zJlsN*P-$mD6inB3U_mzoKK_NLs7JLUmF!k?Rn|G`%$l9|PbTuifSkTgri4Yy(`iLN z^~s`X4y1D;M1~Ww^>lAIl@TSB!f==1<$)W~au!2bc=ZDza|B2z*0|x08(vvwNnER>ICR$2yqE%`sXm;R)WQJOVcxA{T<%~rPaLcLwEes8zR!{n?^+>PeJ!j`y9iA>*= zfUJtYFHe;X;X+qGPn>M>?K)BRjS!Mi>!uYfA`|kg+m7Mv_Q&XuUrv08QsfzV?U?Lq z(8CCvvC=a%bs$KB8;4L_6YPvBR%J63d7{5z=~Gr_cI<6;HB&wxn_5C*^5!ED1c$8$ z_WaOMzXm!*$fdEs`|o+i1!@h zMCt}f$b2@!NuO{J{)P1}hJQ^V%_6o_@&D7FaJfV?fGh>;uv4i}`Y+iaV@_t~hTG;c z5FN?v5dKV-IrBM9ZOYPDUevT&o&I5CS$8q5qHRg@E!ESK6gDXE9{L69{^_Z>i8HU$ z0wZATCB-K^e?0Wb83GENX-t|Z^XLKy48|f?hBlTbXD7$6seqgI$6MkECYwM2=A6_R z^Cd?zv2L?o;fkMAat!f+RCUQ9^>YKzFewOE8M}JJU4!uZF%0;)Jy&K zD*=M)Q!3~6M7pB70dsfL&bSYAs>ekUL!0h3nWch@)ufYPLgcB9Cb{Gph^6Q?mGo|A zOV}Ft_4VY|1x?C~D{GEvxVsvFlDgsam)l)Zy%}7=H(QD!2DCUU*}x2|IBROY5rLbN z5EVuwBRCRe)Pt2lv?p~I;TQInWAUp2&bwl?{HUNSp#`KI!c1GYS2rxUcd05a3f1lW zhSb0x3(iFi#>bAbgxl># z>#caM9k$E0m0)G29q@i^}!BtgTPCv-!&d7Qi6To#98>K*?TUS};nQW~( ztdUVAg4*bp+=?E7h4BZ?rwoOE9X|N;U)px6&+>F9`P|jYSWiZ=f8~BZPOI~bBv?K(eCdc0Bm+FHd%WQ2q*p*;%_{SMY~5ECNtRvH+tR;udxv{uQxR)c|2? zaUMg;{$)qcI`j}mR4(g8;*COKk7+T!JjI9dB844%9v~KZu-tDaw`5}XN(`Wc>KWe( z-04-G6c_6JD7Y^h!hp(Wo6J#Ru+zTLGaH3mjKynwg7L2RA>h6}X47BqzklsaY{wr= z=EiGqXxnHlx{#IPh88njxzHDt&Yu{go+C->tu_&3*xeMF*j8%6HLi;bTD4b^O(A?a z#=jQoA8Z9~3%3$GUX=;ZmvYs)4XiqxlNO95)O%RV8G_)$PK)lowzMpX9{%cDT$-XS zFtVwViB73uokK1lqKGR0GFuUeAozSnG)d3T(E9zozj2B0)K5iZlkNiNf^3OXJ-=lM zp8S7gmeTS)b3OGy>EZgeg{rGBSrbRF&$IVbj*%v62X$x}rdl<#BT+|%H5nfQ3x+dx zR_`w}UvH&GL;l zyouh+Xuy7X{@w#qjv^G?BT9D(2rV# zOk52DUN%7*tcGg)2^fEBp}x~=recpr66T#J7>TuWtAwi3J8U@GLJHuXIZ}GEaf|tKv5&J%d2JUko(Xp!oYH6qWuK^Ga&AQ| z88?OyzOsN&p8j?f1)%%HXJ|LNG8HsSx}}zDC6u23c=T|weRSk0gPF}5VM&SIoKV`U zzyPW$Tl4E24*gP3WCkAASEt z#ihX{zGAnQ3zhw1AkGtU7gW{N4}BZsb;wvuoU;gvy(VejN8S`h2MC7_PoMK6!{NyvF3m zgiRs_fpiqL-xB3N&Qb7dU3KaTS!%nyl?Fv?L3I8tkg5>#x)qrKj=Y?o5Ucx@nozB5 zUcqBvy30;k_|hgkJ|&$usf>3tiN6| z8yMP|z`nQ!fyg*b_SB6cU={#Vbr?Ok?}obE;7=PZc*lFUi8lFrQhf_C@ctQ?b*fXn z(k2V~+Z6zssCe@VaGjtA9@aJSdokhVo(;CX2GN1~WqQ9xM0?NzNc~|9Iaq|P3IWnP z6D?-`f9fbvkI#A`=lY1{+z5`5wop&{EX!K71SEia4Xge>TBEGT8y~2H{n&1NDhsRz zOT2qr)aHP<6v4s27`U< zHE9@QfFM}}S#S={UD!}ks_WdPD{FnvljsT@& z6h75s9yKWa2??J(4j=O2<+1n{OumJ9>~og`mbFROT=N{4b+6B9+kquxzp6<<4j^Hd z2y=E3DO;Uat#5eZEhMurc5U41axx{=G~psr zwJEHw0Ts6j_U2Em(;sMZ-bVnrMX?s zb4VUzw{@)^FN8Lf@Y{t1OoJZeWU*UzmcFPgtIECpSLnAtmGj82@ii;0v;Kj}+|Lv8 z0%gj}M8<%88S|hB#>D_x|NPG5qSjHk+u{oX$ z1vuaC)aA$oCaTrT6ciE9R+Q$pqQ^X>=K}A2vE{vwQ(2uw(M8l%pB4wMlP|Jt+bPhOlfX0niLE&?ikn8M(BSX0n-_K^;P@hRRWbeCR40IDxM z+JI&;CR(R|x5|exaeKh?v$pU3sw3lat351OeEIVG_gkWX@kQ?lmpxlKtXM-rLzXj) z@sCJy6K5C&9ipvN-%h{===~g_=%2OlPS=CPI>w1U3QG9qW%k$#)}X+{TR*s$z;LJI z?F=2NM84{fAS2(|0^+d?o14M*HhA2BC=wn-8IWPmsw(?Onuc}v5<`RxnNPSYQDl723s}x3WD$v(fiD)fQv3;1JGW zvg5dBL=BUuvT58{dbkFUW(AOD7|1VR$w^gm3_9#LJBPM%|L}R0P7UP_u;A;WvI^76 zp0mhLuLr{LpX6Ku=X|jC&(alfX}e!Y4R1ErWs<^xd5hhT0VX@R+GYZLYIDgjejtZY zeY$hr>K@4nb-mlienRvGvJwBqu_R&V!o_`{h3(90(uRJe`1D*t>~nQq06XW*v}IGtKbd#- zQh82koyt8c4HXU8$zn{cg(Eg0$5&^yqyx-LcTiEbH{r*CY z>)6+;2fYIEu%%O06VR+n(MNOcLy9pMFc$Q1B_ahBL-$HGFG59n&TF~oQ(>P7PE-+L zeiR6D^exaXiV#j-d)SESC1PgGuN%6~&zzG9vBkWEFd^RjA}PjHBjF)8P*y8Rc0Ie0 zz8ReS58pWNH!~3>z3n`d4u?1{U6c%lYP5v63+W=K{OHUp^fQxcYmi@%4q*GGh)yNH z+VXXkW~gd%@XB*06HA@>Iu*lcL6gNs%pE#yGNDYD3^Bk&k4D=GVuv7ZbGJXS;9j3TDWzv5_SA6Eul&oYZwsXhe|^85j_0O$&V#Ouo{0W$jY5!VmamrFK&B zRPM+|Ij27t*Wq2W+Y*>tgOv1M$QdPJZ>E5_` zb$M5gIAm>ZPDkR1cnrw3BjL%9R!^d2K50fneEJ8oFCY~ zZ$zg>edBQKN!KycRk+e_!AY}o1uSotKE_rq<1!ZF?9Qlr&Dq+rosr%a85USU|86nO z7{AS@<`3QglAu$OGRK4ee3;A8Ym`nSw{P2cy0|d?Bk@6x{9sDFc8DmN;4U83rTrYX zcWLqP0PXsYgLTXVz#Kmv`qF$)S?Tkt^b?mRQ`j&XDXgRhPShXsNQ02-ovsrdh`OM{ zqQRuWR&gV7KcY#IgUL;)SPS2kla5Ty9A!1E#LS^$7S3FHLA?Dctm8f zI9TLHe;3MO-uPMvLa@cfn|Gwiecm{a5>s%4{@(#Nj&KdmcN@Em+`81=J!1rj+BJ$U zo}7-BY-3q+tz<`mq3be5G~80u0-5C9qdBI|vNn-mhFrj}PU z_F)H?k;VJy0UChWIY1$E|8A-02BkQKPlLA+Gm~?5wrKm*L8VfBL(QxDq&8_^n=m)R z2;CcXvEQAIBL<%kC%r(!k1rb`Y2KUOP+jeT`!DOS*yKkt>KCQ^1l}5zUsM1`_jDPH z?!o@?6c`K)o$1%OTzUWxQ+1EM#mp-5ixizH0*IYI`qf1nm6}5Z)@;tBK@+} zvscY6Q$Pc2{LL2X)jL2x`uAuf3F6(3U7#N3O$R0}ud93zX&31?zN)G24Q89++X|#Q zS1Nl(IEUvzPScOXy4;v3V^j?3i%G7Cm|GM)Z{By&hk7Z@umqj{QHiU41r?UpjnMhea zS;ci{()@qRlHFS>#_h(N$zTGaY&|pPhaC){ZCUbv3!OU7)_~I9CmBZ9CHX zA(}!X4F`5y$g%@I>D&u98pYDD@CCz``~r3NQ1vi_e0l0J(jRgek4o=Z z%rfUt`hGOlXZ05$z`wazTD^*4jNWs&u%dehiwbCtW3q`+JUAqY{g^Q+^|59j`!H}K z_}P-{|IKlh3abClD2wVDb+Mgb*oynWgZs}A?`jdDaE#CdV11CxL=I5u2xmR{`5xqU zeKKieoavyj3auzb`W}7vQB{M<5Tr`>r zy}5p<|3sUImPQ+&f997l898a1f3Hq-g*xv>?Q0oSukpJ0oV{shdNR}7aXxV({DWkh z9a7l8=wQtM=MtBT3So1&qyetPt6_biQSgE6N9s5(k)HCpQGZIVJOh}?&iG5x3h^{i z(@!Z6XnA{09a(`TuZNS-6kr^skQ058uqtpVDMWV@n$&SlS_{pK%qwW_pkMamo_b}z zIHfZpAP60aV&o*UZWf1!vG!$45yK4PL=5|-ORKe%p=-%})vuf?bnM@B$U=}(!-(Tb zIJfq{9FN%Ao~QP#&XiSERCle?YeXAgjwaY1RL~}>jV8{dwh^(G&zZH8=9s348>maC z7>xqaXP+yA5izxn8kKKzS6*jh-7KBqke)OAKkXN@bW5OVT%?U3A-7_8n79pQElI*J zeCy<;0)`q$1aJr@OhOgK>n!6HCxCyCQ;^a9{NoVi&sSqo8N`?J-I?@&;t>)9pzf7r=H&H#B%x z0pTxLd)Ai{0=s$-u16j?9Fq!pRxBOio3uqCvD^4vwwNV|mMbpZV47KmrZJI0bR zqUHWa2ak9Efnm`RmbY*BECmbOKVI33@(>E^%fPxdPU1D$k}@XAm%)GQQ4Go<;9J zPY=|Xvrkf5bqSQBf^UNn>jijNXiOJI}o`StkAd&A3)%^WlHh&fs4 zO=gN)j(fK#n$pF(`S-E)l562rOlD#gB2LW}fGG=`QnoDl4$0%7$ z>t$z>JQA@-Qnrt#PSJ3;$vK<`=6F=RwS+Fz14pTSBceDF(4C8&wEXxzFN%IgW4rF! z<|&e0h<5jlZhRnR=&x%?#8Cad$W!0zKPRmCSenaBjO(aYHtY@4u)A@RtyfJdR#Tx8 zU&HRM3=B7==Y4C$-CX=-A41v5QMgDqD~HLR-k4eo4-{AIXY**PqmDr@h!uOm@^hF zNLUf0h}c+t#bpE101jQC-9x4Sp)H7yKQpb(%^!QZQ8w6p=UI@@Zd>mY>>i3H@E)^r zx22vo^o4{2N591yU!|)m-v?Lmd~fhXvW}f(*-857KtT=MgD<;ihYr* z+9bcCvD|#AM3TznZ;%Li^!RRL#>eVn11a?ak;l%^#H7X7?Ngzf!Av^$e|Vw28>P+* zq70ydg%XZV+*KX_tX|CDC61&wBDz+WTA%mV4iNOigU88RsONogDK5HTI>E+9bg53M z_b&I@kx#~;|ET!UwN1cOg?q^Mv93H!Vwpc2H`@fN9HnV%V_Zy5&+p-@95}wo)$Ra) z)9vrv_Ls~x?WkIDG%dPNF1a&MQz8$sIM6}v_I&F47)qc3SF(-eynss-IAM#gVO|*k zU=v?tj_>DgA7}ir%}-`8(iY!S90L&g0qgjW5Q$S{9U|I97%J=Tw=1ogg8h|%p;A$W0$0i1EHfe>;1ro96u#*{wF&Yh4o%S+mY)UeH3{>5ECtnt?7y{uSyOoMn6WekZ4yLBQHJ?f>Uh zr(>57Q;g~Flj0VZofcLOipLiP8}n7hEvf8$fI|(7B*Ao$Z|-L4`mVyCT+N0-yen{& zepB<8bAeot5K~SEk!r`~tfC<>M$P~6_}m1WJ-m!aw-7{i8#A@@ed0kf+%D01v>`vcBg* z)pWsr9PYmqI*5UC6o%2_Z30Np&>&pzLj}4&k3Q?G(W!FVM;)8 ziV$zMv#dYanH5eY*j(XO^;`FxJ&bhW!M>$uBklf{_?h&0C3HL$E>VNqbxcMT3G}Qf z2ZbKibK#nR^ec};G0K@2*~;b5UWWZ4G%Wn@4ERChB6P6?6CV{h{!Uqf(wq_2u8UUo zf%p0p>XJJ;M!YleGM(CE-)wbQr@YI2gQ3U21Zct!X7&ONffdd(WN>re@G3@7w0cuP zl-HAgu0i*iy(@pC-}95iFH<<%V208V40xRjx=DS2&A%2a@ZdPk=Qk<}_3bx5@p;(t zX_&5J;f?aMo#xT&rg+;$`mYO~ld>_;81LP$!?X|*#3c`Ll!*qiHqcMkJ7ji^Tiu5% zuZ}a|1PplZ$P*q0HGLbw-fsn@SjZ&Ab!EUDibm92T+?r7YpqtuWeT#}(+G4O4F+!^%XY7z(k@0?0dk1FI+fia@s*InfcCK&Yw7 z2#+!!iUIXMZF*R!v1r@fs?bS-tl4Rwci1*+#D@m&1!%}sio+QFImSShidy%-aMi68Ki?fl0=>WgY+<>p;11Msuo4IR;cRnI=QdztzX8$T74Jtp&Ro*sudlO3KtmbhC<+yR{}?70|S( zJIk5^Cyu!_{Xy`!@4gIG8rO657BM%uqdXb%roQz+?)wCtTrnq$BV(4BQo`2xMNOo) z25ecam_~_=AxZ#X=q<;u98I*`08KZKI_J)~E$Ytrz!BvsZT{k_%4wgUYxnOb$Ic5x z_&0wL*>~p(>=op!Jp5)KwlWdA8*@OxSbesr7a2u#mI-(~Izgz_WLU@f5>{RNxYf!Q z6M8$f@S-NNL_&A3Pxr&Rf88&F9(-&j6=qKCcKv@N4|NJ50azgP-O)fHQc`!OuzB&B zS?t$|K4Vjfs85r@37B$hG*Gl}5sz3mvMe4wKih41!c85}X9bOx;5eXp=gXu)H|==- zrW>m&ssxt1CzsemoE9;@LA*rFT;8>S_%E)*+mFCm8r&T$E^Wv zAoQY?5Jz1yU0(6b{ytk1#!`MJXsnftyY-}rP|w}F3;QNbvP*G3eiurma`>Uo#`Yh( zs~XPVe=wj#kG)k`WQ-qzp z7918*%X@I@hMAd&KK|{@6;JfA4dyHBuOJ>7UjoId_XI(idf!r8tp}U3`K3}f} z`Mz+~5i$0pUVw~6Z(!CTE2T{mO7f5l>XBDmE|!K`+B*1PSHH3uScw z1Xg|q7cD6237H*Q=2Q`8nKhdo>< zuSCB=`3vMjhfDVQPifwt8bMWZQr~gtO*QJ?MukRwSMjSwK3^gA2y6VYjJy?1gAOrq zU>)49j&$iHvu%$)16@$+fP_Pq^h5v60lGT{bQ&s;g%)>q-;8JHJ^IW6@}bCA2MA6t z0*tl(R6x#|IBu={5Fd^5#XmCTLl( z3{lYakdvP9Y?70E&7iRqF=>Hhd=wtmjn-q~( zxR=+7U6fQ)-~UlMkvapkhs&!6gEXm;MduDPP8{O>U5VAys4kTScXO(V%fd#$I5eLEgJPKu_ zL$UdtTgS^UD37rB?BsdZoccpvZ6z)`P!{u#%_V-na?CGZpW=GRMw{mBv5H{yZXK;} zyk$}2MafqWaVm~{&lA^zq0@RJKhXw3*t&j79?qPOg+=EMW4Fg;s6{2|FNIk~kvYKF zkRKv;0-*gaMh(v$HG!FV*Lz+-FjvR$K=UI1Ue-DT-ajrtJH4r|csIuI`!-VH9KXdh zfgUpLH?$a2g5=|!&iTEjc8eEzB2Mxpr)LpDQdy*N>;NzzT>#T_NbmLmLQf8T?6rX(>I zV}7FvAtL{l!sS*W_R2f+gB0>X|ArA^nM_rVu8jB|x}eH5iXubwpQM&DqCFs{cP6k6i2H-LMN za*JC|UDgs$b?`k*>aM2M^W$1wA%D`!&(VVMDB0;?T}Bvj5d_^9+Lc+O#w9`~Ih}5H z6zp2lfS5u?rFdX0C2@lXKeF<2d?K2Cnl=C~aKRp<^{P=YOLKN{5edqO$Uu>`zOwh< zSYavP3X3fx>Q&83&=+4MKM{j|O0_&&|8NIspAE z9Om0)%W=i^yvfzJu%UxTCeGX)czaU}aNB6ja>CU*`|vVT_z~<#s-msX@GU1fyqv!!svk|3mD3;-Os zUs82mZ1B7@{I0FCd_f69LUwNd+ONo!pekvR-VdVTKZ}b!=9H|&!TuLFfb_}Rm6ln; zL*@ooawdHTJ@SW6QXdAba$y1lW;wAw=~ssyGZZ_4#20AhLV`vygI?^qOqy&Q?mNZkby{xjZw%V zO3>{%fYvMC)b_N|Yt#JTZdzKlE`tJO$=^>ZBv~ZVaI8;FHzTIkPPImW?llkjyY*t1 z3&Z0r#QS8BPv+pfgihg?A|SkR&XIW7QlPP{_T|v-wxg8)m7>SJ(VAkhN3D}|EYv@S z3F|S2xYC7@j%m>%zWklOmX;545hyM?AH!~ALH-+7Z;5A~;J80t)uLk)vE>wDHEz+h zI6N$rh%G?r|3^^%Lmagws8PO(mZO5kJ!V`Gl(L*OL5A4o^XETW)GL_eyD=nHa zBe!%enj!=0*0|FkF4`B*_8%EZ8A2)LYvF~JYMvn=R4L|cs!|fXUOXe#A(Nk;x<-jD z*plQ7XiSt_mY6{s%{)xAffv|N3wUgwOs4F#gb2_+`|YC^l9TQ zbaA~B2wQtgq<%>NJCdSSuXqiqp4wC-%jl78DXG|x zT1tOcljiE4b11eRw6NLNYp6SOpsg~ZRn>i=kJ<;NuCcL&MVb-(DLP|^9x_Cr?|)|H zp)Q(?m9&ggJ@dn1H6Aj>QX9HSZQM5MU$o}{-_yyy3qOgHrOB*@;7)7a;x$B~Oj`*8 z+8F=ZxS?o9m4ekFW`sdM^W2@7#d6cM0ldDNaJ1H}N+S0W^P3fzu0QNWxf!Fc1Ft#4 zzb3~;`N{}CaBjo6bDMoAf2P2evM6@$eqtmSJ-{=b{a`Mc7UC6myzj&UdH7-SVfw)@ zFVB6T$hR6i139fu?fQ9%LP(^y0OVb|@QDD@$@XTeF5wH4PqzXnBO7{0#AAw|r%P*k2^2*)BnYgkFSCP+gVQ0;@E{o%|h zUEShLb?s@btejw1S?;SYz9u1m0+VG-Ul(goQ>tyKf@Q_vznLGm?IS4Ou0|!b_L!nU zxq!SEn8Gc?J7GmN9+~@N*hO_DsE_Fd6M6;;&NGO|>P`5-BiO5(3S{hCW#8stYTKNA z4(~x`wu37l8$OF4qAyx#g{C(Lc)??^|Di!Mw^fP&!Pr$jb|;rxgpKX)i zF^wr_^=4VujB(9~SpcNeX0`dd!gZZ{{v<`+e3p~dasl_NRM#7(Yu_0JCTuPGP9>)c zs7)7EggH%RX05`k1B!cb3yDg0FHV;Zj8y0eZxoS7at|uL+u3jdSKvekfGi>u99IYh=z{pBVD?H;1?Zj3^DRTdVSc$$VM4!;U`dgtALYgBOZ`eq=3xz z4>&wO=5^w*oaz6XJLhsV35>!O?m7rBq7tg&jNN|7R(2l+JLk9`<3B5_Ed`K%o!(AZ z<6*>wOq&f+JDs7GRafp+u%p%Lu#R2`J@4Lby33)oh!Xin;~UgT?HeAS!BCuGbo8ZdXZbE>2u9b z1Pn6{Mhz%z0y1z7c$7=WGEveb;>SvozMx+ z#Sm}i#V)@ct%Q54bmo7cg+-AChP6Pf_~Oh|ex%az?dEXRHTnHH+lK4ojpUgrZBWu@ ze0WQ_j3q*(_RjD zOwbeY8*YGj?1NjUjVxx&-0vfXLs;Eb&} z9O?4ou1hhAlTt-Si=LQ_lFI+O`fei%-Fp}{)R`rA`jb@KH7uH6?Sso=S(Q5*aH8Rv z^=+p4Pb7;wjsD>MEq@iksbJ;og;(YUs6d=4v7FASYV_zDVKz)^irGvPou39#9utpnbFBtocrpr>j;<8c`Bw zEqc-S*{n1QB0^STlF2~aeT~5P0Eag{>a`z-SwZ1vc^Za)_RL*S??EMz9+HF_TFf3* zY?U~qMB4AFgj4R>f37cHxZM&SgglTwnd8X8{b z(;532BSCC=-$2i^>A|gf91P}7+EQnf5U9sr!7DMVn4!BxJ6e?&zql=dQ3LS^L`|8T z@2YG2%;@?({)%eeQ=KbRm}pugmp`lZqwo7hwOKj-U%RaL$5HW#Nvl#c=gfQ3pS%ih z4tLeC>QzhielpqCo!ju|V73`eO4rH~LXTx3tg$@%KT3UqS+<9UAXDzstj4juAME|0 z5LsVW#&TUpn7G28&1y^#da?s82VmQ=J2&LM`4JIp+-%7sTe)_oRl60C&&Qk^)N(tGnA(=3{?);Ewa z!zi?^34@X(>WRQS%o@QaCw$;UDEbaf(DLCp1|=f=#mRD_E7m{RDVLo4tk`qqSx3|9 zzs(qm+2;GS==qNva7&)jlD>Br_$34r-q@NYnoaNb=gr_BpX%#OUiFS8k=(&$S{ zE5^kGY@%gUDz**vN+a~^=i%j`F?xHL{XA~KJf|`jwWxQ!D;UF__P~A93 z5HW{jlazxU6CX`iNlxhKX)vQDy^s`|Sh-#o;OF(w9FA!3)qD;U&oEy$ zm+uh4y{29!ldcA%brX8FqrFq=Z|g<(&tHK+9kd{?S@$)_3`4ncJnooq7ofFkTlY*u7vL%50Wn6~C9@~^xmj{x zE7bA44QJ9LAIJFASyhkDA*C5Rr{Ras1d`qf_plEAK`^5<(TwD_%%`QeHm(GoDvcgP zpzxRQ6$i#9XB{}#N5nh*2_HGO8pz(AGEoRayQ4tjm)qvG{1aN1e~JLP=|02L00zpI z6FmPJ4;&oIzY&V&1jsdj8HU-HB8kVSW>ZDcn1j3mw0?$J@RlhNN#XP;s5PsXAf2Tt z^eW!p*;5qDC~nh%ZUjO0b|Q%f(=z_1BOtBn+p{{|T%cN(`y!Gm2RIq0Qm+)%aA)Gw zT=p0Qewd1-xHY%0n#MAPyRnLHu2UWL?`!br$-xnRp|%Jz3+Co0o)4{D#mXcoX2C8G zPM$gVdP8Bn`j@2ceVprqz1Cks?u=PU8xvY~_oWU%p5pBddeprpF?T>gIBDZeqI)dkAgVFNyIyi0Cru`Eq%cA zQJK_zwd$D8B5zABn$BszK)wI9O=MdaR3->N8|YnaGdzApT3|O>S)k2~&3ZRPBJk0t z3=jKEfCFG-&p$$R@SER-L{93uGxAU?#g+n#Bdip=ltl#Xyo8>YT@c5IXE&+^fS+(u zM~l6>-JX4hg(9K8NWHT3PpDOb=v|Y7aF-JK8oR!|DUU{5TrU)zCLBCJl0gf^n3?G5 zP{nj|mft&0TnoHZp!r{{bS!5g?J2@=b(({HUT8*oDlXe1MLjku%n+`1yco5_&}%23 zLryOfW{v05yJy6|SM&zOR~tXBt<#;QDOs9KYz{iH&4wWg2_`2t|C53Pw9WTy%!1#d zz*M_zZHqM+ex{Dtz*DzNmX<>id+HtYcR?=q9$?2{vCAoD3-o@|8Z%D&;v5L%Du1BW=ztZ#oTK-}5U+SE z^%bkF?LD(h8eM)MuxYCQP6f%*1|JyM-HIp7kYo5davASXwR(8{Yv z4}~kqB*7{Jej11CujlG-?w5Gw;zQi?$VbbaV^#^p{&8Usa>ziLsjk=&M*CY{!X_7^ zPMl`7Vd^tzOQ>Ui5WvGU@Z9BTQG2&VuV+b+UtruVV{T29aw9AZu(H?xnMI z+HHC_N}rh9*z%{`y25h_B~e`p31t36Mo^;V5u|7Si6D>;L*$|TkV&J5?H@}d=2%&& zfq&Cilu=iNs7F9D_nF76Ql4IOihtFZP9QKqe9QzECuTRiE9^0rSz_MhmH^1)bH1-8 z$coFq-@mzD;qLud+yXRV-m?^pW>o3|DsC;IXyD((p*P}Tgd~R4{UAxAX|eFRbJb3d zyB$mtjEpnRZ>c=?HKbKg^sD{&uc(XEYTGj)o=nEonCb7ieq=k~UQ{^Q10z|hNAF9| z6!V=Qd0HO)7WhxZoh!lxZCp{N`-dTRJlRA&z#bl&W6&P@Unm5Ef!2SJ$|@1l?rD_Y z*Z-p{9H7LqBEr`i@4!IC%Tp<|cJ8Z^?=C(01XRdH+35VBlwF-)nCJq6-@>!(48+FCq`a>PAyLxFSb}K9xD|^S(J{Oatlk5f0bdqU1HWzch-*L5;(_7=`{n0mbwC@UpZy_;ru$i;nF#`*Spy#(* z(X3}g*(V#^mo}KyX2emG>cUs^4I31z2f7TP(OB^eW8;`>(~jg+)y}6zuFS3jBhYX% ze#FTY#mlOIm%+?{T<|^MLS%vJpyX>7$yoIgaS0C?8{1p=MuRC|lL0r^-Z7su3a~j- z=25xj5_C##?qGU+q{znO5tWv$^ori=`|dY46b-!I>I!t`HOFfG#{G^TNcrOnNyUku zcIdD|43R`-C|XXkP)cP*a9P~Z7dE)oL=akmx?WD^pO5RIgnGoX_9Si~u`(GXq8<7S zl@W3aBz2jTm(cM|s{6l3%soVJEL}}hZiZru*cN;E(PCyXKXnUu}Nk!s{WcG$HohATY_n(UPWGA z5FEGieUwI`EMXI2h}<+mxE{A}`$85}r??YwR(N=(N^!k*#CGg<<#5nhvJTQ*hhGiV zJ(TO-Q21Yd>n2&sL9v=IW9~b!xhwg&)+H+YIXzX_8h(ag3YlMvF17;tlGsaKU87!& z(OY>XxMoQm0%@=2{P-*xi1+2mTOv4WdEJ>Ep#(bGPs+?-4j*~I7$}J6!8*%0_Wpgm z)*`}C{Fz8YeKW-Jh(-%j*H6xjt8N@*z7sHW3-5fHatYkyIx~`H%|T3jsT^XCoN{Cw z*0PX38_^9_o`B9YOfu#^kZ*<{dDLd$Zo{f=FD*D8*n=!_ zbAG!EznX*7K`ntIEM-|_0;?zkolz)5fXjlSFE9i~D~HCJ@QRh!5269jX{vH^mQHG*6k$iW4U-oHQp zU(J-&2b>S|C-x!&!OaY72U}9r>iWibKH4Slb-yr6rcsUv<|JoIp z2n{TUzDIGssb_gi5li)XHwg`#e;v($Jdcxk_*RMes_fP_fNRIADTk42yE(BEnpo%kH#rL1hOZp3nNPueDCFvEG9V zUq$U9b4GHWYYZLz1K@f-dZ`K!49c9w>zR)4oCJrwtg6g~S<$pjoxJ48)EcjDc@=j4 zbQR2;6wj2HHRS1riP|BmO_QLOcZ*RO^w<-g<4R%4lA=))w=9ocO-n7%A@w`HqWj&W zOiZD^>jhvBhhL&Ltbi%_agU`F(`%x(5$YnIgV#h6h%nRBIJ$LxO8JoBTdm$;J~`}# zH#+QTw>&vkvQF0jI0cqqT*#16prB%1fbU>I#|{eZ3&RGMgJ}pWr=;GW91^qm_sOm_ zz-MYv8y(v<3x3my$hdcJ6U={ZX8u9+TIr-1(!AXeg+xAlI9D=^oO%{TG(2+jkZIcq z2(|&|$U-T_e~xNHx?21pmNX?lhp_jR#r6MsV9A(HX`xb`n4^BFBxJPq# z0F-#%N-xN1rvRx?b!IC8ZL3p0xO8C7f@rr|KUq8V5V|;K_NIZd*g6_c{1Q66PMVw_ z7IY1~TYdc#>?1&HETcY(Bsb2$db!~ZPaq)K(^W`udG7MU7GPdVJhIsDL4Fw3CNK{* z454P*;JdKxa;Xfy@Eh5nx~W&5D}U$^KvHvJ))yPWx_%8+55IgOGSGE_UGo6|Oh$)W z(eo47!fk~b#6_n9(5xBShTp!7i;mgf&o83Vz7+A}>-}17GKj*1wSW(ahA_ zQ3q+vEEc!#U^gedaTZN5%s;_$3@9P3D#_n1;HcCZ=j)1GAtL=t`v#J`+b3J*@*pw}R-ZD9qUfMi0Zrgyxu;9iklDea#=G;{K*o53cRMx^66t4)``_HOD zc|O2$W5oAjpV50M_)UIW`$NHbN8!ZK)rYK41zL4fw9W=>!Hxwz>da^=I5U#`6Lz8< zl!b$f)YU*sg;g9?0lB~Wokk5eT+DJL$))ZcB4MYEx%jSg+0lJ5^>cL|#E^G}zG?!gdO z$6ZRNzHP^%2^?D-DQ=8Xfe2+}A-IjZ0!QbFB{NxmLMZ%=Kd680=^Q~yGD3r`Qt=p+ zGWzDX6b!wgxzu^izD}9-a^AsDezDzX>aR{M{{yl@U(ypy_Ue6rN!WoUybw1b(qkLX?5J*jWQ&aH0Lk@jg z?2bNHYl8>-i7gR|4;pCyXPK>zSnNULK2K1V6L}t$f?={q9AT8tID* zRN#1D{2S5Z36+k`Y3~ETO91rD0LD4XTW$EF@2Z{&q|QFu&PnfopBA zvx!C5-HGujVWpylWSVhn^&m)AUOzjRx;6;pcSQ0+a7jXUTa&ILl&_g&1w=0R zPi%4pGu!)ZTY*6657V+5=P-qEy`}iJOKa#YnxfQw zHvOZw6&1Rb_-YQ#On35fQd#fhqKbL^x8-pnecC$1vK>OMmT(%mgxl*Ak>IU#s04#I z^XvZn!K7zIT&GEhVkz;GrEFH*%7DPBWPM39*XqYv>N&-Sfb0}ZY9)kSf#b)44HfCi zRzr&1vxT2j0eJjNPT7ol4v#W^F?jTr^Jme*TaX-nO}Z9v<6S7mvq%zn%$+<@V8}Oa zTy+IGWvnR&0XpsyK}EsE!zyStZj?7=Ae?|Xc6#o^hsRZrq)COu*8!9jLryV{zhq@6 zs64#Bi)xV94OwhWm-U4LwI@PzaOCSx))yROio_FwqN;H9(;`$7{R7M|B`Tu!t+6cE zK*rD2Nml`tNw8uT`b!F%ZOFqP6LvaEGj7ldOK44-tp1}aKhrDzugNb&qdc&4YNG!_5&%x)x)h>Bp#h7q;8Rr)G+}409h7X5#$hy8E>nq5hs9lulngaZl8!Qx!X~{^!RIGG88x zWm4IBX$h=shfM(jhe1bJcg~BOHIVDE>99%wFmYy z6yNhZy;76#cr{0J7aZ`Qj=c?K<0{u#!KzZzY%;ST2=k*>yi)I4%P@B`a_@RjT`>4aw)qc_pFjA0Bvh z<@ad1g>{0gG3)A8%GbEWWLGjWSI#=cLbkf&yS&OQW_eYkn4$#VqDYWb?dhzVBgtJ} z^PPkyIsg)NuNgp=5fXH5@1EbR&Wh84ZVt#mNg*1jrBHQSkYBEX>iTZC+g$V+D zSeVvx&GY_^aCl^Zq(|)xO?#dZavq7dpD$q0n1@y585b;lFSPN37@%D~$0JXnu>13M z|1j*JcEMJ=lC{j7V&yfsMGl#O#(a)S7#fFXM5O|4VS-ty=vvbZw5U?jnGE%E!vJ{Y zn)*vxm<3$v7LWq?(}ZEG=Z<8bs#H!-a`aIKa8R4&jMitgh9hY)m#^orZAe080xvZ0bSw&rTp@A~3@ z7ff_loTf=T!0x!65R5=ooNBmSY-06X7NnHfahiYuF3DM@Z5bn_(Vd>Cr$IPl`1KmW z1RzsJllKB_B)chVub@KPY_JNvhH2-pt6RuTB`?657^2^A`g1CoeuiN=|^ zWo6-K73x3Q4Kq&DwyU^96aYAsmwLo5imhdTJx_Ar{ECPgcpbbCt3H@+Y9R~AlK>~6 zh`F;+re%H$9Fkbri_PP8m9X2r53bAQi}ac#c!L>hW&|O#S>FVi%uAFHB>yYm{vKr4I%o>RPZxveL)~7yjN)K!z1_uS$ zFZ^#vQVc4RD^xMDw8!`dZQ0Xhr}HL*LPx7bp8dW}IG%EF7IMb9)Je_?j>lz+^gi`6 zOk)ScxZz05Z}YAlnnL#$$%yZyjkNyJ2Hq@mNsZI>wI<_GVu2CxLl|cYmb2*f>L(Z( z%$b}NhInYLH8<)tUO(^LaRHtW1kcpIvy?-J1|8C!{@%Mb?E{&9yoN>O}{v+Az z@r#aCcR$pb&T6=Vt0J5a%5APaClZX{UV^7iZhgo|SynE1rl-S(rvzRZ}{3Pi7_j`3-Cs7iMe|mY=s`CCp@d9>DfA2x0t1xs6=3ybCEK z6kqy(MBOTAYNBDT5}BfJ(3m$cB+rIMAAdL{8E&QHZ(SY{Xc;cAFIFCj16CO&8aH6W zI1+At$G1M;oYZvoZqBGSP6AaNR19hA8TyjmP318B&887}<;9a`%>*=rMWxHev|$cQ zF}3!rjMhkk#(`Wk!x(A$%SWXR9Rz0Bec&*TQV>YEbL^6B=5J>-aYS(TEf&Sh`#at_ zQh#O{NFlvc#P45ORyVvL9#B@*$a6JUV=!_w|11m~#S{6fJ@CXwh!S87M{oQ{`~FV7 zxx5u|ff3bABQJO~cVB#sXmXd=`;-;BGX4w>9SQYYY>awZkjwIhI&^0+e{!JA|PqRr9CH{Fj*}^W)fTDQI45BH4@FiURE+c09z7UKB<+1V$Y=U zRtRiLAK?4>lWNUpcCTNVCZvX3%r@6u?y5>K7ve_(qW6i1Qnf?Pf(Mpj2ZfF26<%v~ z6W|9_uNS1h072(~-nYxD23_$yg|nYkRMU3|NM1KXntJWzxQ5Kgn@$h69Qv6e8I-d6 z<&t1HFz|RjwmzjPH~199uq!aD<-SHJskGumm%>|7VP+G+RP(*bpIid>tUlT|Q(w8};@cK>(AcyQ$V(lIS_`KVk3$1oypd54%=+%kU_ht4sn!-`n9Ye zH()OC>{MRawt8O#4HJX67&Id}C|nLi*el#ZLeOJL^$XzkAtVi*(wzzQWeR2 z4?}f?8+3{1c3D27DZ^z{H6Lx_k_PwQx!6Y(cQ#`fE71iHo4k*;hG$Jog}O}ik8^r(b`*z`@(os zY^Tp*F>lLf2K-S->)7guZv85DJTUTTxDA&6kWsSgiAOe#>#Q3;ztao1Qu6@YsDO=s zbrK=gB-T4=0fiR4de&8I=Hnm)Cwz10jiw`YfL1*RrZ6yo_J)x?hOhAB4?&Zoga*x7 z9aqbq7}fvEOCAY&Yf;szcv#9e;uuSAl}wlC3byR7<)`DX1h<@FMnRHt(7}Y`!F*kb z&6ucwPfrF_T7Ht~mo&HOb~HOc)0>AYTOI?Am_`BO+YHT!iEB$r%odQc~}Y z`&L!jiibk`L21FTn#0RthEVLGPUw!vZh^d)Ezy@u4BOWuY8Gog>oLICE zb|Tm!U=7+!>VW?w%UlcT4Q;D&q5C__8cB1T2`NE1z+@a}pLWJ0!Hx{q&5#YHajA#xGb4kj1QYFL$6ruU`6?%iuPByW=oKaixOZM>P^3 z%K*Zbb*nY-`Qwf?+tXA()~AL6mulcVqg66%@`Vaqm6~9-OQ5e2kv3|H=hZP9(!F)*~RJ}22_<&=O)afNv(9U+TjQ0J%S z_cP6D1W*=bcPqC_$8Q(P6r$jhd{Ij+z4pPLc?w9N7#3_&$`0or?f>37Dq*ofA2K9e zza__5zc-f!B*e0VS^>EQH6jZrUys@ z!D6sPUW!F4G4r!!b$7^HJUt<_=B(x~WpXVA2yJNKRle%ysTqtQSyh1!qOxr!M>@LX zEQ3+ciK9`>bZmb~G1|tiO$J8!H~CFLN1&-|eYt0y>wkHhx~BveGA;NofqW+uSCz;j zA_-3_$)Dsz{2`?Af*4pplOx@(f4`}JHp00*L1zDFTY_KR_pXYyx-CZ{yrfo~vB$a| zX|Nt6>122!XXLLFtW*X?n_~P@_%xgIl-@wiJp+>m`ICLb<0^n2>8P6S^EPcC zzqvXK?!M5*R+Q~ymEhn^(q;u{^A_+fbE?Npg=xM-30dMQ7R=W5z^C~8?hZ55v*gBY zB1C2n`vul=N9;E#-LyL=Fi9+^o|;#%WA&5T^FUK^PHv9~`7Z*`Uyc~$IUM_cON*IS z0B7&lIfz?kQF`^LE;Fg!HlmxAIK$ialL;z;BKkj1QZ)H^F<<*QSmrr+)V3L%%OXl?hW4-W%bWQ5uOf z;EvR30m3G=M2|wFjE);W8sT0mLVr213qvC-+<+d4fOzvhP&0@|7Q<^K!qOrMz^K0f zHdzn3Z&5iyjdu-t4G0Bkp~`X?f_Cg;57%0<^sf-=ILggmC~VXdkv7>caEBzc}8UjwYG z6-$#=wNvv-!o5z;r3sb3<+uOEnDJ+t)?6W#+xgJb!5nB6ToVnA^cY1B1Cj%206S70 z23`Cnmm%^t`U?b zu>4~u95+*wrun@eSkV!f)?Mx z1;mVj%jZP0e-1=;h1E%6ij(`)p~zAScJn`0M_ov;pT6N|#<_dc(A9Qe9F~9cPHjgH zC@%X3%BA(Yk$VmproT;8doFNxO9W*m`?_@yMVB}h7+~5rWE3`250~R&Q=8;76)13 z1hBpcj(+7|YB|a&0mKvU`x@mNN570^pe@n#Re|2Aiq>D25Q=Q0S5`RP@^QKowWM$w zs)iApYEfJaR8acjaVs>Z-kobLE-6DTQr=QIUQ{w_lH4Ff$APZRxf)x!~M{-Fl*2{XpIlGGZO)J;Zdopyw9v9XD#$R`jq+1jd$=7YEFHGs^2i zI#%28pVEPdR5wBwRwbk5un2O$JSYmI#Uwj?=4un`IYpa<(HhZv<)E8o6{V%C+}|wGHtpkr-;GK$C=amfhb;l8z+X^wGi6DY$rF5(@FTu1V%!e2UUVn{&~HD zK|q6w-u3K203M{6y(I3q+zbj`x^xq=lw`^2m?aP4m}fK-<&|c);s$?$v5tHO4d=BZ zep27TD5!-w3AVbkpIoqy-J{5CDIes^XY!_snH(;Z!Xz}xk3cMp1qNgG!CTpKO`9W4 z-a1AwN~L5RL?DY(i9eBWbEobWcGliVmC#_Y;o8w$8h1mA%967?-uX4P3KML~bf|23 zxfO;+bH(<}5sy`(F$jIsz*x-*IyVvw@Xw=PeEjK{t62$7e>rMT3lN8*AK+u#xdG}C zz&lYtVNd)N)+}EL)3uBI7f7N_)P?iF@XrQM5iB53EI+zFB@(Q7X!x>3w-H-)xd!n? zPGL6}V5a|v7J9VLNF5jpZWa)l<739+Y*o$^{PHe$MWww~{k#YqnE zdkiK@?@)^WDTJouEd_Yx1;d|pSAc<0$OQCPje&2nL=ABrE$4eyi9ccI@N|63MwTzz zvM%&P?4_h*RH*f*kxXDOFRMg=5q2v1u~@wLV>V_gs1yQHXhmD9i6Db^=KA9J>FbVaNgUhsY^1m)bZ~ zf&ra7u+oz8NQ2XY;-F?^)_Vi*7R>Bnh8OW*`In{LSbIrnJtBF{2sd8SC^M^ZDzLW# zyk!kIn?UvW5i3kHW<`VQ2Ty)ayO_J?FQ~6i%=C&j%i4(XQ|->o=o4@26?49TVz*F= zR3LMU4MmpajWz7?klGo!QuHS#LH8kwK3PK*Nj59xoKA@T2~ittTP6*e7)X}eSCsu5 zPby1=S6k{P)IxGOYnRLrTpRNjAmFu_=vX1tSMA!;lhq;&aYdl}Xgq*k#|Yhr>^~i= zOMurQswwj|gm8%dk4Zy%E@5ASQL)RouG+33YVIy!rs`qc^--y}wVXT7I>9H<=G5z} zo6Lgn4$9n|T_G!lUtX08646z$MF2%7;dJ4~m^jt^dO3!(`1pT`Z*H`}XwmQ*_Maz@ z1c1OyQ_Eh-K7Mb!LFf%QBK@*bGOtCa$`_Nc<@ww=Vg#g^_G2SgfqtuFoGd$3J2>Sb zc*HT9w;S|VlKzFX5CX*In(3j$J>$Pya^mw*&O*G0Nz*oi$kuk2xO&&w{~#8|KP8EIiG)i0~=c zQFC4~QAMoc6h@W`I_LPt{+TQ$PtM>KeOb@9rFB?lzUyPBxY`+gc(Zt($Mt|fu4G<| z+l%;fM{gVE!rW`%=Et}{!e4=51nnNruf&sIbR@z%Fr&_td|+Gz69YwiT&aG7Pb9HJ z(6iy|3B{6Hz1pVeHINOuOzGg6Ny4s9wcjH}q=eOssyy}!Q=WP@;R@A0rn@%#*K`_iWX<$<*6Z#Z00W3JxM42*LNtv?~QE z_rj(&Tumu?5}4iXsa_#kJ}R_Jp1DP9yIOIA_y0j#{j-oLsi}8vTZ?1r5cecL8$5hv zjL`5F<^&45a&D+VAC!ONylcEx-Q&^Wtp%(x$X9ajLZeD4;O@X@qp+goEBjrdF0*em zd+yh!$DPNg#tO1NR@NzLruCA-9SKyscN~t88oeNWyM@TEx$wK_IWqN21B9QB#MCSfdO?dQ zQ|P69y2)Nsn*jjX8O)xvSK{89u7L0mmRZf`_CF|D+%kqijHSu)Y-t7I$~bh5kS|6ot++1WJ`^^q^rUoE_(C!;F3Z6Y!Cq2(~o+ z+^5F4PB-qy5~Zqt@;0gN+~b1!CVfoSzUW&hkt77i>T+h2c2hs-gWf}!YC{}H%4GCB z{=}1DAbqmjNabcmLJy;{&>KC#bVNi90!9c!hkU}0wE;cG#b!i3kRcsDQ0HFx-hs8Jqwu)^W%JL0i%Aj0C-`E~fmyqj{xmslE#|Vi{jmS?{`)c9gSd8+oEQ z%@#QAWuRpmrvrL!f^l9Z=)-}ZR8sd*=-$iJ4bTEPW`-XM-L-OP4r zK(N@A%m?;!PTucY7%2*R2?lS0Nz(zn%h>+`S100mO&W!Q*mfKOqnS1x{@8(0RkS81 zaOUX#$Mz=kXSvEom+vF!;z$!E$dl4f+j$Kff0T*mX09WuMiv*utsfQDj48Z~#G7G$ z?Pte&L?#aV*E)$+2#)nWbODyP0z^g@EM9yu>NT))dZPw6_^m*H^r{-hDybn8*80P>Y_R;D!6_ZUK+@2v4}P`#>zS~DbZ zmy3L|U5ht1GLj!mH0(l!c^m%hAhT$Lc8+W1>MVyKzT{Fw25MlbUef^y9^Q5CS&S|| zWcPrlu1DTVC?Sk_(sc?6@uu8rB|25W#D2N>P>AF1;7>)8jqN)tq-D}aWG^*P*;;Zp zI37j6<(@K-J_epd?SV}4PTL+Wm_#=s3>`IT?eeb_WEJ}6TE@e|bMQ)Ac8Nc(srE@A z6u9b^O=2G*?--sKLTff5eU8^zzw*G+8VKGI@<48}u3n zM0YeKcPa0jRrLR%HO821P2s=nyrs*R{^Dtx9U%b0EiLj1l*kB2LFu4Nt8(1ChcRhs zIEDd-4YI!N!L%~jb$f zoC6QkBoS^np>SzMqs%Qj<(m2XemDGhQ z=FnE_&1~N;9QaPHL)tSps(luU;~eX~+w>wruE$uIcX@nK@}~DrQlR?EjV2U=fS#Uu z<6$Fb+h{@FkJ)-kbcxpWk_qm@k0t9!rKW<|up3Wuv;mc&ELLw5Ak`MNQ$#S-5O_Ao zg68z|!nVj}&}h-^xJ29q6R(8}BxanWGek!?|GS4+v|XBnnp(vHces^_C9sisELud~ z;)rZ&H=~(Sxy#7QF2n{(eV1fYnK~`cC%VXBKj*BI3pR-V^1C-V(>yKZ!d36e$u{1# zHYx1Y^-k-=mzrgL$0M>F%~0~M;yhRPuMRy%hiI{jY5Mk(tb=xRVOiL1H7?+9LZ8s2 z^vmtO$3D!t`-s%x(VWY>p{6YyrR@+&D*CRRH~#ozc8hhx;3ift1cRY!2H|~pFn4$o zzaw*9cF4Ai2ozt~D0J}9ERj&hb|GfDhnPRv^gWti;n`gN>>1wrQiLluHIjT4UU&%$i?lM#(lILNf{q+t*d^t|NBYkcLLY}r# z_kG_=%v#0MrHNmJtG3b_AfSQEZ2q&MSBFwET<@juXlaLiazuf~t&No*bH{oXY|hZ; z0uBKsUmUM=x<$+e!O73MvQ3U-7tSGR=On;DB){1dNZ{PKQdLUELaHY4R{a2+7(eC zpStJK>qeG!n9u!uuH_bmurV6h=@$OU`x>-h6JY^O{A9_EsAdC zFhd4#*>P~y{6(3HNr7gJ!tqMUV&3M!vNE&gPjAgKHWNH$x$I zML85Ki%{cu*T!%0zCWof=;h+j5xpYy1G#CjG2VJ|TU{ZE=Khb^t{tngXXJi9@W%89=bZb8txfE_y8VE$kp zCz1H+DO$J$xL6e?(!bC$e1!fw=IbLXTD8@oYz3gBa>(54>9R94q=+Y>5$~UFucY^! z!rFABX)qu~4BH*FP%}lKTc?WQAjnjVuXzn12T^{Bj$Ks%sUu&$+QGpfIZjb@SKf9k z(Ci}qK`?$C%0MG@+ycW)sv8gL9*X|D2})~Bxm!8yNbZU^w^!b|h-&gV?V0WDQaQMB z=xA5-7o?}b!?$dx?)c6)Wnm(l*=7oG`S<_yr=6bun0%NyEAqJXY42kE);h*?cczEv%7e|Q#;49_9Gn~Xk zU%m|9p93HGyy+7rZASJ-SHh(j|F}|LAeN`yq+X}#^g#*fr+|*Ij~u}_1WQns0}qro zVftz&2K-H<(jm#O8=hg)<(P?vi;Zu~bV=){f~qYu#*lwzxLM(K+Udh_gb=ZxR`GS7 z3PyEWJ+bsX_i?_O$&d*;)TW7G>kv(iE^)n#QokSuU*hFNgH&qmVFOmyTu}BnuUNVl zT6ZRu*MIXjQCfdOD=NiYLLm*GOG;ms8!4~!PJMnu`VAL|O*9oTRsQ@k78 zn*+j4HWn~sr{g_zhgP$Zk4R1*F0kO=ojpcUrS56HmL`IxPl&;pojBzYm*=H-8CYFj z?}V+^B_x+k7GTfOb$Ya1r0Q_4?t=Dj2!v_M*kTXqkLBI{#k#a-?`m{S9#{b;$Z07V z*mwFlJtzCJRGRt~f(&Kd${*O*GV2_4bzw2bsY0qZ(zj{OO`j7>g?rHXKDe5f-bGOC zoXaRo|N6Qz1huW7-;ylxLq^%{`*TDHe$Je#0>DiasuM;sP^Lb2S%Z4km+HY;Sz?z4 zsTz$+t=i~JUl>EM`Ou4_`P3z0>_pZ&$zg;BS!DaCRQd%Cwa1(!&{g5+j|&U}jnBpA z@@5&C+~$I$&Iilpj$Zg2o3qJ(Krs~(HyW5z{9EKZ?2LPyup9wj$Fq0%YrpH}R97aN z>_~Lda^W^Wxr&(0b2nNEg&|oJ-Z2`1(VzNHju*7RfeWd$KBmN@e+xMP)733mHzuu% zKc!_syluJHth+99Z0^)xc&v;@55@A8qY$r==1psvgV$<4mBw)@hLV3kscKmvcbTNH zkI(3B4pX@rc>%Vqc@>Wv7v{J~~gtbGYJg0vULVK$y1D z+edYDoKAf9%GR6eV-mK`;0Q9Q^g$cde2+b*h(13u_Vz##Dk#5sR-RW!L(<;!fkm+C zyVmb48Y8rQvaHm_*H@bkTVwXoh3H*HODNYEZh*4F&z^sK3O`Ig?rSj^kk~_&Q1%Ap zsGfQAGPmudN8}N?H=LCG45x!oxG%HK5_(gZOuCC*`4^CCe7MHH!*6!;wnOXe+R4Y> zNnh*TdIcExyA^S+MbH3z2sjJ7YL;Q}s3oX!aofFaUg1>wt4_W&zCaV_S_bYU8)YQ0 zEPNTp&V6Z-Qh2O8msl5+Y!BcWeut850pP;^#YCsL~a~> zXTf`fJEd$pj@ULsOH5TPmvi9KL1cI*fwxrzZQ%HKa0*h?EXKX)cTWK7gid^k;D-T_ z7+k%@i5j6ye%Ox*{}Tqx^WfQfH87mrD)d_;9xW%3jW&LGxQa0t*sk*(dUmC`6zs#M zwqlKTyvo(K!ILmEmKP3}56z3O$^DCeB9v*rPlBC4KkP5|VW<)VDq5$f!UVy6K(pcG zRQH^*5A>2u%Vb9NZW?YET{f{;gtRbk1*EU! zs|gDWd6V}}j023c8{ODF!2`%pne@=`H(K~*2%5=QyGC=fSzO}DBACZifas~x@3_fj zzbK*z-^)%=&Q-d8a}AJCOc0u06#JKq7)NQfSEbP#R5A;8Fo#cFwHm3Iw1Kv-1-`CT zv>eW_wj@$Ewrk!1s&W|lSw;4l@p|;${YtHQZaNs056uyJ0Zgoj7k~+)eLo1$WQ$;@0wWv9}?GYSA89H=`I0fB4gO&fNw>UT! z?2}Bs$wyRbfc^#I^%hrv@*>yb{@T8h#xBdgmmecG_^-o%+Qiaq9zA?T2ApL3)e2&c za?53?$JDC={Q8CLiS(#c0P)OhfEJm}&Xey#gt?HB^lCb2fZrR}t3@iVFJ0Tvf({3xnb^=Y_CmO;@UapaeBD*O%gCqJvcvu`d$EW%A{f5GMB%*=QI6^Ot{S z)=o^`kl=XlV&~)&?u1#G9{4siqOgsk|IKGvlSPR%JV#S|PXp^_cx{Bq8Pe$+R(sY^ z7Te)H=kLLppS?1yJUKr-^K(u%9NXQ)^AYh4oAMM>Z~zIYVQDtrcEaiuz*grn{J&I>9eJp(G*@_L9S(_CKD(kcUI{3tb9$T_ zqu8Vr76LcHZAOMEP4<9suV@?vjv+~#0mJ541J!#!9AI<3Aen2|S zf}p79#A57kcpNWRjq*6GZ1al%fi9JG`4erc8$EXCkMtO;KG4&-ai8t6tKfyJO{C8utNM%kHQgfSB z5Z03&D_%Uty~IGI_2G4)qT5B$-|^g~DVToHbwIHD2xt}vq_J620qwkS)BZ>tH~-IX zeq3vHjl|ay{3l`&TjAe`#ble;$Ui`2kv}Z}m2~?WUnBtyu!?L=HTbY#^v{taS6;zN z)NWRTm#oMgb3$wo$3$+J?o12rm9Vw$47XIj?_85|ggh4dToaz|%;6~n>mMbO$YuB0 zUE#W&$m?<`5Zxgcp^@vN42lvat4LtqrStVfXg3bo1x6eOWVo&O@}LdEckp% zt~Dr8PlYj~bL{uVGZ%9($s(xN{TT-jdvDsY%9$X>W*)1q;}9HX5lNnbd(?q4$KMS3 zOC{oLjKKe}|8A`Krf^ngd+S?K=vYz{|-5RUwsX;!IIS}p>Ve5xIg^Ei2XR)0gx!Kjc$<^_*i&Ko06SSAmPL^ckM~_4K7g+!W zjVP$(f|!k84Fc{rfNruQ5Nw~F`6mjtfA`IzOVgfZVj^znwBc^|#K4t5uiwg{GEVG8EJ4=K zG+sZp|EEie(MySBqB=4aF=OO0S{!~XA(54O(592dVZ0o$@)KNg(@p4=9od7`NeJEz zQ_0l4R~m^kBFdkW-iBp08^d8xC`D7=OCr8w*5AFzAx_Ye-a=Mvfuq^Jkycep`wQIVq*J8?oF^1>f>_*DEjC`vILPxQNz!Cwb`y=6sT6P+gkmG4=DG9Nl$?0PH6F6!!`$Re6`MJQA9{c#|YWSCgvaVF9 z?IzAc)}9Iemctk7k>h%pSgpNC`If;8VOb=`d8-Y1&2Nb?N}in*ee?yW&(VyQ81-pp_kOMdQSr%qy-*8;= z^te7$NxUjsDBGN%3ni(xRQEN6FUT-c(p^tA$gycRnDtq(?FsiQH_71;B2G&Qn<@66qG znaY*bFY@8Z3xC}pFAjWo7$E&gC0T(aF3d+i*mvB*m8K6@{W~P;z#eqi$mdtl0V82tH>*l5lO?e zW=k>RlykfjEZk$8M%>lTJ}O{}1zCiHBYwbA!&TN~j1%u|+d|=yrOOhtXDg&FxuY<} zCuh;GhE)|24LYD55COX9{K zP`yakh9_cX*>!QKVFzfh#R-WeHBkM~tp_M*lQS;EAV-20xfqGtbMPl(2ESp3T@C~e z`3nvIbcw`xUVk_g@WpO72juT|i~j{wCnzeE!B}xwu_VFc;XdJ*gu!7>?4s5B^n2R# zR0c#|Q!$k8PK5IkzLB^D1-BQh+m>CX8$iaK-=K7rZ_~)-*j|veHDjaNzc{+f)MI(s zmo9D}-lWK;$@wLQOpFhWNM*%#_snFP&_s6~H-~id?nUC+z9AO&@a(18Gwol3`uean z{2pO^*aBU%kuJ*LBy%6iLB{ ztn;8Mf0E}O`R+_IhQj**%C&RoO)N#hLmF4;tK88t{ChE4*R-y+TK^CJLidM?J>l{( z&BaY7!bIzd1lW0Xx%ufd6%K%DjEHv5$aKLFULjFry#G)d#^Gd!OT19=#_ljzKg53u>cW6%^7@QRQsbuHD~mfA-=6M%nVT7y^b#67JDtbl+O;F1 z;>8S>LYYniCUgB)*<#E|;=zIrv_H)_@$<;?YES~A#mJVyGC)!1LV3vq*Ot5%iGF14 zfc@MYrdZ_`d9Z^mh+wi;9B|e9(f|l4<0=~IL0(!jUTUPc9gnJ zOlZk>5b8~lx(z22VY0PnT)awFv$JYboQPaEWn;blT=Gobcr#5GC09YZLjrr8v)duN`F@5L$0%Ti}jXk!!o{4J&k3Q zckanoDF0gr8Zb{jz;mNII`jGNhMk_nR4`X3Qr3lQFO&cfW!-IL-mf+jlrZC@rGmfr z2a~6|GS|$C7=&}9L7l|xsvrz)qgIOM$x>RGOC( zYN+xOS^2WXYmHws&67o$w$+%Mpr3*z0BxAu)dT`Ojg| ziY0usUm9jG@~I1kr4w@A1QuL8D)R$02m_joYVdvs)($Z0BAAve%hxd#@hXu~x$Dx2 zC9ZH@$tZMxWhTsFl=``gfJ1udYgj&$!HT|c%6}xh4T<9Saw0KshsnCVGDy#F6(=kW z7yQtfzGHh|SbamQwiGj`C^ID)qXn<> zvdBCbyuR(v0sZ1;hh81_n2+`LoBL(TaXc!dsJ^0F?Zs7J{%4FzLE>H(!-&hjVCio? zRjuKn;K4KW%=C3Akmt9A%+T|3!n+bCF)e z)rjsSupr~5CCUi3y)A;sl|dW4Lct}quamII+n7h&jtcG%HT{VCnZz|upki+K(YE}| za#=D-xobzDm%HRWz(nN9Y0e;&stp8_`m0rDx`{zCFWpKez!_S-c($&uup|T_&mDLk zg$4IN#A(W_#xVOVO!JwR$z*L4cbkydH3%VhtrSVmZmIJOt-K%$2W|g#`S*4V#prmG zx~+F&Wb!X6Tk2fb@Xdw&0z5n$`(c0;-%`{F`vcdPO_!G|PUaYzw#-pdfKRX={5-K? zZGC2y51xVI=(-a@d$TOKrMlV~K|kUjHuCwDoq=KRvxH_=0jivwS}cg6zn!G(r)Gk1 zOeZqe#V-yfb%V&P_dS^+`T6}d?g@q0{*jYY_p3L@Cbn<++_-Co0q+IZV^jK+o6?uq z<8_3Fve-ux8|EX=zvzkx8et9s%FJJQHk4x5<{lGn2-|-}UXM^_6W)ETXcafjPq|c_ zMS_17LOvy=+05|>AvZ?f3vR%t#YCm?b{HP~eG{k^y0R4wH*oMn@~OFDu;*#OE~?; zJU*G@si3$U7#*X*bgvyuUC^EmSaj9u=FoV_zj{tkM1=RkZI{DGu0rp#uYD%D5rPtv zu0~$MH)6%??~DR+HJ7!FlD{*8_oiPKC!5atOPFy$m(tU}b2%XVXLp^=uWk!hEU|_B zy1&;Bx{BGd`BtFyI9W^cMq3wsQ&{MbcDeJZ!OJ$qvfT)&%lvcqt$aO|4|CGyshg^J z>du$MzKWZ8G8E=TL#hK`QKm$$2Fz=YN3G5DU25QI zZxX?!r%S|Z!hG%&4s34b~yVMsCy)Su{6YiqU z*y(uw^YouzE<6wNttHrdh#LQO!H=)4Ke?kIt z->h}&HD@{alY@KNuHyi6PkWS(|e*!x}$j4+X^C1 zdl0-Ovo-d_sT~~WFrMGQ1iu1p!NBQuAo1J^kd?>*5CQ7{dP&jlQg#ozr8c1=$>Qy? zuj_#`=RmDTpHAN#&uG+Rh0D{ciAzdkjeGd4h`S}qWuXIZMDlo7L1Iq93SH1fS6Zo1 zY1|_Hu<+Pe)DHz&Sed`rRYDu5`h4XA0WIy0H76MMiL$gkRH1|0)x-3Bhq9|Ug-fL) zvLw6^mAUC@Mr-YOX2rQP#)^3)qAvOQQ%FO`bQxPeek-wz0dnCVXrv#aoXh7e#^GKW zwht)6rmL3J%T60xdZDAVZO+m2#@8A@x!!SbjH>F>{ZtEhDo+4bHjTaQy}{_yd^I2A&+ALgZMn3``Fy{l1!% z75cA$-*?#Bh$gwDDFSi5Lh4W0F)A^+C2c&*iT&lqGn8YTsWMAoM4ns(VbPz8kA8JN zx$FXBN5QPGZe0;fA8yXdv$@jl-g79jfD>#n5pZx~g+Nfm%GWx1Rbgyj5|xp#+fdKu z*u13W`?G+T1eok3mcb%$8IzO@~13bufgbQ4ii%-AP>p%ZL zJfFNTwPF8yakdirX}bu{sg+dwnxFmJD?=UyhDQ z731{$@YS}h=D6JTqL2_c5{Le)aULTYUKJD9JsX1;JLcla-a>LO4jBm|9t019-%eDs zcTyd7twcuNmIC@!avX;N>gIihUFVN(8zSJ^vdeq84#`$>@^iOsrv6^HTRE_Tzm|Ab z%}=|}O`*kwG`~{MM@A9zJ+h|~6l?XpU&{(VSrdH}Sd+Gz`6!R)qmkH7^#>a3dj|S} zAdWLsh((Hp{o|NB16A-v70iE7_mT%0uiFwPDxT_xkS){rcjIzM=b#N)O|%a;7BPni;tzA5|Si)tsrZP%ZFR@xsV*ug$Ln54Vcap#Tb@Um-6VO&zkWaY3lr74cBv+Fl{d1NXCMG&h;@= z5%G<&{l__bG<%Z0}QYQPn^o5!(pbW`?gPksqF#_g)-q*q-X~xCC3Ce`lSMk8#`ry;KwbXp><|7a zGOiNoWMcF(Rqw97q)6ffET&%(obkBYcTskQnk_1B&=)=5$DTzoVpe$b9l)yRk&H<4oc18pl1#MmB?0;zOe6~Sf!$-s=c~EERrD|c<-J6H`5+_WZ6Xc+AI5dT;c>OFz*aw+ID@0W^^P@kjLSv_Ld1s$ zSk0SoeXIKq18a;ejMxu-SyWd8sUj-snQLRI{qN}iJD@SssG+L|QCvm+*{I|>mYM<( z&Aw|*kdk;~RB(X%8jFD#kPa!Ip;xD_VTX!nEVxL^JD&Y-?oX+??TwHDm1}R@v%wH$ zuR4C)b`|6CND|}O8pv})7`=t`q{OZhV$!HGk~D1e=AYKQdFduNfI_ zTBf!vH=qb7!Teu%9c|9C{b$vtW@lX+YL>t=+;FV5}haZQ-tu#f@kyspr!~ zQT6~Wb3no0JmcGQ+?_&)JYOGd2f&fk;hA7;EiB&;ke+%g zU4HH9Wg;sBt^^Tm8M6rBw5a874qWUIatoEc-Hvf%xDa_HQd#pzGKc&7+sk$)_1WI= zVrB$CAOkTKq$q#j>JfL&0!_l7@dDPcDHG;(6@woVsqnYoK}V&qD@Mx4Ff&Y1&51@7 zSZU^h_V#uZQ4oPwsavwqcYBFuK>X)Vzk40}Q`A7&1F2bMXyi}Ui7kV$K-@KHgf$W- zS;I1F#;7=i>p@~P<^oq!Jfb0tMEn7Rsq1u-;Fe#uhc4}w{Q;q9ceNHl(VQQ|mbU*~ zl5W2UIo49WB#D}g+UX@OB$-!GH0PY}pkBm|i>k#EX&Qpad4b2PqTS-iQ=cC(A+|RH z=iFGD<{PIt|9_yONXj`ulfM6GfxzlIPfkf|Vn=hgI~Av3*94^bHOe1=-jsqHJg z5?l(O9$352IH>fYPMQXmO|;mOUpMj0vbq@hkH98KG}H?{P%MvG2rU*Lm=Wf?_wJTng;Fs#erg3JO@bR$L2?Hx$!W{+xy=L;PaZZ6L4 zar=|~zQo+08nXie7G|;F;-|FVIQ2}|gN~q>1qY8~g0;n8WEahZ_)sYX8t))GMY>ix z>N7HUv;j05_{aWP`>B2`Yf035!jb6Gj9|Ma4L}!7T}?dIT(slm-YF8n$rNSZliG25 z_X<-2)EesEem38e-a3EqZsRZl9z*TgcX-7>TrR5htJM7;9@Rm z9v78+7SFo@gaOEv8^8(W2kgi_y-RF^!i+Ba1N_XHJ^79 ze5IH}Fe1XiKjTOw>GAOQ_(d?lt{Pa&yaArnrXz7-cq`Je0|u;Ikdo{S4#uuIPR~J^ zv2fIU@_Smu)j~{`ztRDG_OF3U!<0ej^aQixS_I}iswP6jpd?QItH z>B66^*l{ov^1g~>JJUtYXKl==)ue26p9g-&M|ejDS53hb8e;`Fv0%-GeW5)nL~~6+ zbSaVBRnV&NoXAls^-Zk%2$rfNTyiSP*ce;P6LJsg)pmD<>4^Hg)2fF6$^3rbbx+ze z3gFC}1r5+p4QS8bBoJdi5EuvbcTe=9H-D{3cx{Ge0V99IPB|zk(dap#UBeSAELf)S##_)^SkQCZv|eGBnTo8i8_1Wp z+f9|jfPctdb)_;cnR=qRt#?KI^kLEYHCsZyrMMk~n(`gPYK5#2RX+1Rg@Pab4&tZ? zfj7ko77RGIZ~3`rj_v3rzDBE>n+_CVtGrR;otxw40bc6Sfe3xX5@d(EQ;`p%*i?*a zbeN>2NfVIcF{Uy29KT>~GT}dh9Z9f3AQiMzabU@PG;<(>Cu3*+wktmasEL_bNJjD~ZxV!dFe zxG)qfJO-i5H=?%GhMjr9JyLAGGWx4E+g8-cUA09%jy$62nps^gC&z~uY+G5}1up*5 z!02oD+3BinI%y(WCm3hU>olg!`b6vy0M8L>{`jrXTPY64V{fJ0;JXEB6Y#=V#M&(K z<_ki)jFJ9Q15goI%=8=462;L^IYd9L$l0JTOmOUl{q_K%!t?9ZNv?tIMim1Pl%A?h zYc*P>v8bF#LBeSJ9h)aFCWD_lUxe1Q#D|sc%pl06W(*@)T*gt5w=#Q}tp$+LGg+wO zN5=*xuF3qbMw7(ty({E;lPcgx?bPt6pp2JfV3|+vf<{34hFZNC$)^NPjmGgDiiog~ zG+2ht>B?FY!0(~pLIZ57*6_|Bj4|ND(rBMR@*X=!_pxCB>!uPuaQGcsjZG=2V9;IC zGVUJFh2&(<)K;WXGPFAu+@(WXCC-UTvYpECD(^C?a5(XNssj>LeU?R@o?tn5@*$fW zH{GLg+`)J#1H`&mHOM>tRJSq?$EKBV5p^^*w^ix6 z+JLDZ|IOt!YM`-SD|pZ~j_0=J^O1Lqwhj?V*jzIgWPEmISmt8%Suh{vD80-SMLAChyy6x{bG0v0-P1yCtz z_%Msz0HW?fjeHAB_A)`+foSRTl4qRQjZvIX+v|HUUQQ{?TwOnnM_){GG!nqa;EOus z<&_J3JfwU0NmeSV+S3G-=3MD%E+`scyy^^ya0R8Jm$2*h7+0R=-%MA%17UXXuNQ7y z?FZZe<4GdErY0!lvu?ZXN%xaYzw+s9J{S*#&4Tt6@X1n->7EL%oN5WNs9{S3a2XXbUjO?!B0T13z4Dhh#(vz0D{;k0GT)F~ zt_VE_7?DKUL=qT9V)~bRoNY}9Wf7Fy$ZoGDO%EHsWAF}x!!?dn)wuS9W~aq%PYS;c zCly}M+**7yl!Q(pE85}i@ru7;$M!8oqgeZEEL-vG9co6pc^UKPG`uKQ_^a>cjnjMI zM8m*J{@iko#<-x{QLN!dpfvUdClXtb-&wz{27FZt_QkbuM|rvEr=o(}u~DNg#Da2+pG+`j zKV1gCYy<*b4$2z~#is?^dh@LGF@>mY;A=h&u|ETT z8mOg^rIMM^A7J1F>cSBsQEMEFX)yI(Mf?X<6>0GX!(UZkNxG)&aNuSYb9YQh|b zlP=4k#iZR5B5%2)yszg$<)}Yeo?3OU=MfgyTFP$TKRAG@Vlf+Z!Pmfhf#z|EuLLjfFpmH1gZv`~#{+XKaf0|XUI=TJ!Bf@oRI zYw^D8CNv+v`E^r|;G(tAKXCE4S+jIz=4TIqBqnJq&n5x=zpMtFgbx>uq8G(;jwgX6GnJdWH*F2g83Sy$Z0V%zV?hSvNnC zW~zTRClK%isrLb&Fqu;yax=WSYlGm+4mbZ=giq4>x|&2aY$QOOC$wf_KXxKo={c-u0O#(MkIVK@KEFd=kmdFA$&RRWu|0EMO|31$Qt&| z0!T9>+EIv!Nc>#x{ac8B%G|LSsU^!jch-VJuqGnaP*e(ph~K4iiGlwL70W(zz!ktRmkSb5;QS#{a?cq@ z;^4|20a)2LwAvZF`AIG=L0PByZaQ!l8}@(H?FX(Ju|F!H%rH@QuFk$hk`Gmqv`Ukm zdP4mI6lp~SuqGedq8f77pi8it@DB_@qL1FSbg;w#6N9Gn;8g{j!-1u2UTF!&q8T3Y zuxL_e6l$Ubosd4F>^hpKIoTNJ1Uiby7R@|u1F5wi@5IJrMdvA}ZJ@qsJV8}i13%W! zQ-RQOQpoZ6H#siTw>K6)8=OC1llAd8D5M1tQKsCrm1d zDKU`}1o>uC7PH6*(Za_M8f8Qlu!T~~Ade#jidsd|#QvCWUPp@|%S7s}47O>z;3(j@ zy7R}=fLnlpt!yICroef>JLvII-G&hI+g9Xf2b*=grk!ArJD8H1@ajAgYdM=3dJ7f} z9I;Wq#T?s2M0M^7p)Yb*4v6Myda)-g_yOa%Yz|7 z2Y-N&=R}BY07`u3T^UEKK_SV;PHsVY?Hu(YfS04r{4s|e1QIGKv~Mi-4UKH>g>oGl zSKbxSaO8>3<_6l*a&u#(>?ZTJo5vHlabB}gSju-(QUt$RrQKVJ&t?9;MlPQ^XG4m{ z;=i4caF9GMq%E%`*2r6Y%hT(gj5UapNwSUYi5iO~ zn<(G3c-V#33KRxN4L!#QU?r))b>Ckn%(+#`m&>R1z;&xzX!@5Fjv2?$XUm>_7|0+n^I_JBy94_VgCDq zUr3&T?5&;bC$1ivJG>L8bH~<@Y#bdHDv}vKEhUl+`ouVQ(+5Dv>z?GWkh2s&8LC@;U;lD`W)aAAWyF6 z<;14P$ggDV7XChhXi2ZUyymQ)q?#H$FOYY0DMiZS8I?8jgG)3hD2QB%C7;n@h8t1d zpNP@g7YX+4h4ex;J{dcIx&&&ihx(94im0t)P{9ywdn14I)0@u-v@URi(?L$qjQd7s zLR6DBr{PDjUTsS5A!>1mL>`0>f5FJ>sSL6RZ?MznkeYlUmF|rxD~&L%1G1Oe5_{vJVbyv-j}JT~qR#c&D^CM;C=GpJ8gn)?e6Q$JbUd~C#nRYcRcr5T`0 ziKYGM*$t7sYuqHT)^%*#&SBp5y zhWMT{&e#e->NmGc7Yma8UH_9lA4R=gP(+03)@nje;J6N_N#cvV>qeINoYnNtb?5@6TFt3Y4ryba8JRN z?E-@T#v|qu_Xy&eZ*ZZD@Yy+H9EclFhmIq#$iw`Tthj<_Hvc?^jglB+Okb|c)-C0ci4MYD`(Zy2T{89t)*0I>q4E4B! zMM}f(Hf=Qb{)P=8XCAUF6d#01Srp`PZJ49yF@sAA^4l%;^wefdA>|2-zUQeLpIljd z@@*{|go8)}0Bi!kEGyf>7mK2OAW4$0VQ@$b_1A1lwgipm#5*Q+;*iQ&4SN&4FQw;c zyGA+i!2+Q~BZN$mf$x1^Id+DPinBBF;tBgEJBVefw^)nX3yvYNKl!tw3RRr@2dGcOuze6n08941WcM1+oqm+xt>MyfPLq-qPzSZFMs+~BHhUR`zBy%Q3%fdtolX>R2zAev;s5O z>00#H+jn{mHb`a@LPyeDpJ}aX@d;e)f1s%TIh9R*kTz2Hl-oXtazu&Ozb@b!c~iy( zt)84;nR?=4)@65ZZ)FJ_Bevd$WIl>NJ6s%pQqh1Cylsi|K>tLHwgB>Buy4V&>Z0k$ zqFCk$d*;Q|F+U#KPZZ}HPm!yUZKLdO1bl$Ib{*4dy}Mir<}g>6XLOqn$;Ea+20`Q} zJ5~!QQ1HQ3I%jVpNajsn!w^Z6iP3o6U9EsRYTgBR3uQaQ`tO=q7~b8}fs^b7DMfa+ zT$d27;RVjw0{UB-(Bu_I(KI{-aE!oNg; z4?{j!&t%g1iG@#yTfZPjrQr>^xW^+Q$@SHYg$V!qvhw?At(Ly1CV%%dGMP&ahpF?6 zKP?!ww-u_jCeZO1VNMOjnx8XWzethK17Ih!$RpKc7hlqFZ+O(c;Ptbq+;;KVvhG6B zGlL|T{DR?X1J#Xod=Lc({8F*@1~ibo)1w82AVQ`qUD{r7g&w=THc6l zncBkPemh*hcFO|3=eh%=#ewi3St%vqFumr<`bJ@U(*s?-K>L`E#wtrOKF4+C^9-ZD zwA_WY|0>^O$e5V@a7L^WwJ?r?V`IM7Zgune2Aog%`qOd)duM7^b(`BgPACzbZr?`o z@pcI>I_8qai9U*rpH&x0;zi3m*3<=U=G9V5`}}4L5X98^zHA-ArX`iG6b4km)d&a= zoSqMeQO|~B5aX@&?M}Os1OT>dVT@LMxE>DfTVG_ycBe4Rq5HGAhMo2<{Pv|0&dMqf zu#_(YkocOu-Z-rk78r!!$C-`93HXz~In$E9S?Z|^(**(A8a9G2|hQkDF8>ZM#rs0KYh}h$A`xKjCx@FY5Z}Se|f?f804o$$YWV$lMqJQtw8GrBfaOH-})qd@jIDcvtZ)KL=s)u1RtgL zR@o`eP%<8;KT{8vY&Mz!%oHRP%e$+s)A0fD*m-xaWhR7?4Q!>4+oQ#h+lGoE;ZUMT(N1KXK`Bbev_p@tFj>aqQFfyGS;tJB z=wS=Ob7Tm9SCNnInnGmdpLWSI&aPHyyTLZu7_kgKI1oTsuT9iE;OcpwO{)tZg2G%0 zNR{7uFN`d1oSijg~=W#v#HSi*+x3*x4jy z+JS&L8-;!XGAi3-vF{Tz|8kHY78gJ*vwXx?T z#;r4+H!071E1*$WHMfa_W$6@<-XHX3Sv2lCyaou&bJz`P4+$xt)o! z3juh}AI&+KPg~fEA@VABht7&4JyhA9Ugaq1?QN$Wvny zP-0_A4{!+TlkF&IO7)^8eQWkB8(G(I!P(S&QduX&UB>KrQUQncH97p~ zlVi}8JAEX1esaEJ2=la|+HA-2BNBtH7U1DrPiH`dgJV7X+ytJW#@N$_ixB(g>D1PpaE_u17Am_|_J1_vG>I3tvOInJfXMZ*@S#+#D~@ zfLw)v1p3%pxD*?6u?dqa;0Af~5=m@%1OU|F@&A#t{Umbq>YIR;9^#$ZO@J@!>ZOrc z$B5VW3nnf=b#&Rnb1IVZdKne!iCkXdYw~yz2=wCw*y8KzvLB0rjjygI8eWShNsfS@ z>gum{%J-LIk4FD)$G`|qA;{!33qFb@QJXu8z2!9lL6c>h55miG)Bq6aCX3p{+bzS}fzj1Y3d#wEDRKSp1WaJ5@uikJsW3yOrRyF>%^Z z)P-_)=%5zGtJ`#l_mWU)b}CyTOAbq1Y!%RRAzld&T#w(1Errrhyw%dfOyMZ=7m7+) zpVTjbyl;zgczg$LSj6e}!CXqTBF2Z->7&qE%~b3QTalqqXGn{D3vi+Rnv?{#f#{rV zllI3uD&b5x&Pbv7C*@Yczv13)k2<7GON^y|#@`J%uL!FZmha&mq~)L7E}!rKL9*4M z;$N$z^N;=qY!(iKM~uWA`w}}#SeUMT&vH)+x)Z-!d(RN#^eO-_HH*b@Z`9r2e3xgn z67``U>MDbP2xyL^6P(=?h}O&3>%v~%fL8UGAyD=^8!6}EnF5pY;hFGasVns0O_mV5 z{X#*nqFcN{@g0zhoxtVh)o)U61_5`5iu?3reZNb*mfTDi4#+pbw>enSg zrpHfO$stt7)Z0m(1d=By38GW6b$9^rc16Wb%pXlfmvX0hChv{b-GGns&UtZt-Wg0E zuvQ2?MKyxv>7Mpc$KI(5ixPP)GsdIC16AwtKbMhBgQ7%zRzdlLdro*D`0g@nU1v!Q^e>$v=;cn zlviIeZEmgCfU26#YCh2MF|g7xpo+x3+cDwOe7zcy9wQ@EHV08;ByDr-5ZvT|&@;Mj zM)R>*%@Voi4-p?DUc%f`{uZg2zh?g`(p44ENc6oP&-<8mZpzH&qC0|F$9ygkJ=pRC zS|%z=TERE0dZ`1?AH+a);2cI|I1qqT3oDk8P5MFd@}Aq$&x_ots?p5Ye^oWK`$L+& z;+V@|)F7k+v@>Z!z%`_&xo2%3jVGYXWEIo5gaAAmc$au*nH`s$yIr(T+70GmsoRZO?BEZAmi>;VIV(In>d%W)$n^CDBgr>zDYQQxr zGbe&GHkXO2BijW%oJyiFL|#!oSZ;F)*P)LVCRvh1|JxTK&~M7F%7Ph^72#%|8)pFWxHKix5MFkm$hK_vlRr0ba>F%j8Ckc2Ag)8 z0pjH<-ZqYFc)}-hwO59IZS8o+7wbU_w^>7HD6N2ac>invllCv-I;^Ujy+p1vgTXK& z(G<5%RU7<7aV#|KxVYz%Zwd56(PiOwgEU@sk9-LL=P&8MWULA~Z>qUv#Y8@#0!SMX7~@Xc+%+ zHp4SY8?hf#1Q!%HW&Of-M%AtO`rcUDVchp+TWsiS&|M$D@Q{lbX)S7dAyK>SXyKXB zp}2}oVO`SH_EjMWxPP@|1 z$l5bs?~{vW;u))2E%{LA#=dBD;R3Z8RKh(ay`*uE=8@9iC5;@X1jRKR($`VJ(JiRt zsUpv9^lHZ!%x*TM*T~_snj(3zAMvv!>U=9p001q%)GYLQbCqfz!HxpdQLUPeAit_K1Zt=7YZ z&bH2|*NyPm-jebmx-^z|AY65PBv=3T`@dk)UcEETtc~tJbdAjaj=UTdhmf0ZPw5r%d}0l2+TCiJn*%w4H)s3ZXhJe zaAp@K<~w^mNosS<_e_Z)U#q6OUZS_<7(WpX<*r|8yG>w5_vw|nWIs49037k1q#2;= z`sM>x0%h(DBiZ{-aaQm17@v0(9(l0%v`f1eUgi#IC8?VC+vsWOS_jz6jH`0^xFBkF zQU-Am+sm>cD5?IFMkT>2c?`WW2THs9!T4*k720ncBPwJ3QU(ukN;;8pM9A9^Y9zwB zG%lVb{?Q2qy<`+UVc24d3E)A%(Vj;HUFh-tsy zs}3*ueB7uIek~^tQhv)w62FSR@2Sz<*eu0QuCp?fsRJ|&U?6wY4#3;! zrwT(-o75_=8}V$}5rwg5nBEg=jbhN2(fD;|trnX2wZDrg#VfDXf7Ln{61d%h5BQmW zk>wDghP+du`61tQCH3Ejjv#F@_4^8%4M~k6W2#Ek*BnDY4J?2VXY#V|@Qw<3&9<(N z_YscO#NyBN<>^SGu$`sp4pwfsL`2tf9cz}#>82XVcpNZ@4c!xZ;rcn3X&6ZN%UMl? zGhd*D&BpVEJgfqm?sfq(iE+A$y;OwM5je66M%w+0uHU1WZn%ivhwnyyqpJf+(dn!+zNaQg=Ok}po%j9HrsEA13 zh)Dh+u?`>-((=N-@$w)i#iw}>KDCEC9Y@U{#s%vv{hbupTx!#}R*XPXT-?zXtQO{5 znY|Q-VzS&}NWZCwSU6HF+$P{Eo;u=>6w^E6Rb#3qp_SHzh~vRUu3hoM0LM(D|yU$Bfta`39?zVYcWZQcUJ zNbxrbW4 zcGx+^Ce=Y}aeqxuxVndK)pre}x^FFC>J$s4xkYgYv$%6`?_b^!L*ls#Z-RrrQ#dRW zq;XX5?z7sD+o^XvT*79urFBGtrt)^iIOU{2>V5lPk&7M;!a~9`zQfb#*pA7tPk5)R zF5{KR1}r5%k5EsyE=`f&r~rnV;;~F^3A;%6oCnZ{%fMDdWL!H$RYAN&S=jS89l{7wf_9`+I-;u| zsGzOysquFDi{e6wDNbAqr?7*n%d2!V%l${!e%P@nlxRei|6HMM(mVa$4&DZ$Umrf| zPLPdYS`_XWR@#Uc3PG6VWm)SvRY~M1bFGotJ6}J!`mEOkm5{J~fH7Q;-A8^EO7h8o zb+?#wPcS3>?M7cz1(aHC$Awe4o>%Fs^}Depx1%05G7o8^I!e2Bh+^dpaqQ0Pt_J37 zO2ioi6!V%v!j6Ku=lXUs{-zVeHmCec5RuC7y3N?+DDc;UlHwp}3>3fz(cuxJ?{6v$ zE`zttSNv>0&5bz-C8gMSJx+p6x@;Fu8+7^!H^a&?gF&-^cFTVp`Sor$E!|0;z!w&= zOAhi$0nG~*ntR%Vk{OZg0Uf0QOiH;t$fNjt65oyaG8UaF@nomORwQA*gA`{q^w-CO zOqIaK_;+{4a_eFDV~o*{jQp%te!?n@d`x~(J-CF-bV9ALD?`dZY%X8-?lX9iF`j$L zBnA+ruAgVi1iPK)YTA%MyyQvesQ^Oi{9B56_!Zk((3|BhjrtQ%IT5hl5ZIg&FHo2n zMNkYa@>Rs!F_N~ohgB*7PAxGXrvN|a6}^c{W0IHMJA`a|-x8~lGCY7Ua!;164q*Je zsv5s)YD&Bv2q2jQ@n`%&N?{*E-_0}h)qC1sbm84n%l9?ObzZCEi;fseD*rLSqcb3V zvRgprt>o^lTZ7SjAAIXnu~K;nf>6M_leo6qEQtfF-Di5sVp)~xL~tPrApr!}vf;$0 z28=*DOl@>LPjkyaQ|n;mALj?)7O+6A1l0Tj;x0 zKJ>>VV)M#Y{D*vTv`<&)Af42?PNMC3y0!r9@e6qn-)^UTt$oT~e6AfKUQ`r@-7`Lw zCMgjf-^Q~hSooY@s0Z0IWKaQ<8YL13RcUNNG4~7qY?7T{S|!PMDV6Sy!nGRvCWke+ z1PE@gvhO|)$t55u{nn3^>$$Dm;M^!V$9jn`mrv5sI=sZ7)o6~lZIga+r&?dAd_E*I z1!gY;+vq5wUyEV@N``rYt6Rm&ffq51B!C6U6IMEG2WwziRpKmarG%#GH;Scsr8n`r;g@KOS&O;w*(t zUg0xRZ96!x#PLvzd<_~g>ynst-y;^7W;LWp0Py|4MbtoB3h8PPUSd@EPJFdYFG%|B z%OAwk{`7Pt-!a$ab;*%A*kWhA(=-jjz*dtQ9*;t*O1j+-cGxd1KBk5iui6w#wwxv3 ztkk`riU1Delw$f%tXw9A)8*p`!h|GWp1WDNoh&^xd;bbQP_Hb3 zd?1~#lm-Z_H`u*Q5|Q=texo0;!>wFc;>gLWk!{nLWDGV$I|huF#}+t$L))yb3Q}%D zMC1%7kI(qY@M=vEswg+WNVq9$!k#-3H{~kxiu}lS+rdI9l z|3q0s^Ez%dYH2ZaPL4o^<~uuwL|Ozn8ao1GLWW`O!gT*==W7o${Fz;(sU1m)NMh*@ z6w9PJlF+@D%}}3GY>7o=)NV$|(>C5MzO~R|4R47tS6S2BVoGQaNPE8RL6+WUI(v;Q zmwafHYAjc|3_LguYC$xb=0>d*KyW&BQnp3JSnH3S44COu`Vg5!E=LWRb}JOM0@{=x zzJCMQiLS)SD(T!f7h{fF=jiE3{I2Lp2+yi8%*tZu1r1>i_(HtAwnO8jmN*ZI*HURVR#8^Q`JU3&+<5l*%bG3WK=95N<&~j zKOoZ3R*aO3FUF7q9iWhlf1 zct1Q7<8y0-tQ@3s20U>woeC{-Xiv{z7E&=NjM~Dr2qgUAYC=_Sv5Ni9KWeMja7?!e8(~f)y#dv3aaU zJHD;A%vI9;Sq8ip@HUAHLPY1o+?m>xc? zmxD5tOEFv<90dtzFepQx{z254C}ncmfSAPu1vOZp1h&^RY%MG6bv4w*=^LuJ^%84B zhqHSNbyGYiueJOKUGBA4koqKw+t^u&)@249EJ~x7uzSv9>6^hq)r&JXpS;C5)VN%` z)k<%8&jR=f2jpNOA9occ;}|r;9bL0tto{ayaG4`w9j`$bua2gtEB(oyDWg2+6Z}HT zUQW_aKPy9}H=K|BbYR4P>?d?GTAc8C)Vl`zCTz1Q?W4<}Q~x+L?&i4Sd7SnTOg4wx zNki(G2V!+o7Vv!6K}sD}l%jszIn!;m84s-+>=m>^)cKwrIsG)0fV9=mX)GH!|DUT6 zZ(9jGkgb850B@ko4O;*eX--$#*bFHdX_e$<@s>2#bMd|Bx3WaAs>6yLER)aB8$Rm> zw6aEHPox0buYN0RN}N<1!b0JheuGU#^Xl!0rmBPFuzw=S!*yY<2AG1B?nC{77uDg` zgxy{cZpf%zh`OulDn9e58z9RzgVsEU2y7Bo0Hdl+paKQ6W;*$<3%atqMJx<7(`&zU z8cg6nhyvX7*?9r3e@O*7bwmhWg|9MDPm0^=v7Nv{*{!s-wuvi3 z<4TqzkrKQ==j;OVcgWBrms8O{1t?&hav1FAE_0nlIr=)O4=}FJB=;1qjs9YoWS6-h z-0nyd*b=s2o2H-zI+&`f61`U?319wQQEx=_i@04^Fr>Q7QGPQ7lx!tv*o*6oX_$>}a%L^TJ!;iL16Gz0qAIya%(6_Z*B!_0f*r8l zUWagjd{k}#aHI^>NKo;$N2fW21j+E=?*-abMAW7~0{@+XU*4I)TWDVUqw(H`)NPCn zea^3*70y}&F=6lREHUd1gc59Dl%I$#9J)jVa@7V&uke@*WOoeIHKO8vI5mYo5joJ2 z{VNLE?$)Eb60p@<^3y-qQ_!)2;3tnqQw{?xEX*v5Z(3BFzS=0`gr8fZ+#8y3HM@H} zo?PI{%LD{SBrB#DFet!&SJiyw*|0zaDlha*8mynK0T8d(;u;c*{>`|E#lrtsTqOc< z5Z|%zUJkxdnhLUJe^pOEORA`;UOEa|uhL^NIeP7VjIVWPcS_e*_V^VyowO3#4lT- z1Q)Uueo)c$|HhbYaC&*EQO0f2?^R$32F@Q1aeTF>(d0FCHNqVq zx|#Xl`;vYWUC0uRyhE#Pt-xmwiU2XPw-TNslwE#Z%EzDaR%B7(qbg5C<{-|G=$*Go z2HlktETQ`#gg9kw8%&bYJGBPho?j9<956}<%x1_{!HlHvi-T4#WLu!00-sYH|kxui;)m?p$S ziTOJbTTmM?BU29m!4jUM%?*SAfU$&+Kl z8bFwTUJ41OZKmy@iz^dxk_TE~T^y19YnJIPt$n6Vk0uc1)Ci;=#$XU(oO104hu;56 zokvJ_{@%mfr*&VO3Gto0J?+Z&V@Tzn?z;GS?GiSGM5fWuZwBXw9W&TRD#C$QK$)Qs zma5kh*LqFoNV(GZ2TZ7)(EuxP=A4e4-e@0fH zgqtVpH+-#L2{3o%;UQP9cK23YTX5dH;UNpq>S zswRLk>QL{{%M5W1xSkNL8B_*)7ub+z{bPjK)&cHUtrfv(b33a7tQ8go2AGrm#0F4l zJd<8tk8c3j4-!$>q8=e{d-m)VB0rzr`9@EeHCwZ3DJ@Qqc*u{C#1!sGs3n${edzeUBw!;E^PH|rk`WXMDXM)3h*ub9h znGAvVP1JZ@VC8S=BqM1obP*ld8J#7-FQvLHDkaf%9Gi0t%QJvPPO7c`@qQ3kDrAIz zk`Jp6n|5HR4`rXMINaA$|Ac4zr_!739B7UNL^1mK3_67dS5EjBq*sy47hmKMT+g@5 zsn*|$Y;bcplBr2q*xyKznL-wh1;FJ)Wzz$b8LRz#`1$)X%{M{!YvyL?!Y zt#vlklk+gyVR`{%gjz{(C!URZj(P4v=hkIA-ya9)D{#v7p?*J{dBt;VaTxc z7qa5zxQBawSdAZdg5|%u+z1ckO3!ulTUDyZ?E*SjbAr|7fo*}ffC+!SMC@XvY(a}r z)?7;}Bhx~bms9CbW8Y5RGoe!hZFotr;aF0?%3g=hBedTrFvAN?6+mtyzH>!t4Of+bTn66yZ=Djs_O^4(jNZ*ETSC1z04l;Ws z(jgsXBp*kwy2ubziznZ#{5%rXFHMLdMHeV7Yf6qxdGU(a3G+rv*ka$Q-n{vFr@|1J z`|<&s>;-AE+kR13vzHAQ>jLGY#wFfu->?S=-F<{w;6~smHFEp)Yk|dD6HTU$--e=9 z46?0><6j8UWF}}(Lr29#?)DO|Jdtw-M2&s34xjkit7%AWo&7Y`t8h^fHQ3R1j&0hP z>2)ihE~Rq%X%Y2Jdg8$&o}QNm+HyA`EcqKm_WXICE+_5w3a{>sr1J3#yAu3jBEs*i zcrzc##KDhoTd{mTOK~CnOK(TV^j6euA|pFP0!yQV?=wRw4)HO|81kf@3ONzAt&@^o z`y7YAvh8zR!6Ip2vTAE{_#u4o z@`EqmdDv9VkAc@g-7fl^(;_Sa!J8-Hwc$(6nx)( zIb0Uf^&(R&XDK@%2!ldyvFzVq%baL~5!@N^)RB2NzbxqwX+Qt7Z6 z!x~Ivg);A*#dU3*HNSBm4DA9Ul{{OUt&pk2v&$%8CFi&E!QWko58Tel6`P4gn*CW1 zZ@-jbl}1Itr)LhGIW>vmG8{P~@!DRuZq^a$8jDu}3n3r15Lf$rCM$hL``3ardm*xW z6Hr1iHFTiez&%f*tSH4mHl$$!u$f!7dJx~y9_QGcbA*$TnZ5LQt+m1h zK&o!|!>)8?UI5Zo=IUt4Ia^9fsGw--5;HCjs0Xe|Vv%V^;D(`EM{UYQr9M8fv*}oGCof8f18{X(d(cffgW&<@KA;ayqh#OoV zR0>5Bl;D)giChzwnJjrE1q0ZAQ(+RoXvU`uehcq;udofAn}&RDTeN-7EoT8$oKe1c zS}!v8OU3F>KGs3^LwUt?rB#qo@@6otC5%VT*WYm(Yute_!$^X1)63OJKBFrVHJk8+ zHG<-75tgB~D*JQ}RpeO)m&d8-r9XcK;=ltXRYOCz7qwiytTNLQBc z0nvpxWE&nvd35?R0$4Ln?ibdu{&Vc87|T(ccracN25A|#xqsCvcMJEKX`FUc34Cry z8re$ggs|LIV2v3#694zD&-vS@&PA2rQw-}dci9`Lsux8ikHI)1vWCp&5}i7TD55%@ zR_}il48rYVY^6ge_bAlK(f0`frPrKlwqK&Q3Il08B5Jh)Hor!axIU2HMQ%9Tn9(aZ zH++|@_eDKpZaT=lj*tsbiR(IaT?C}sYdj%VtGuI4-jZ6IwcJxR_}1*4F3*WH*5Wi7QZfnRX! z5ND7Gsj*Ju(=2H>9Dm;=lKo02=Lchn>pNtTGnN(q+a+Ks-B%EHSh!q+*R^+@)SjBA zppntp1x_D;h!$Tb!L0p7;>mBLtK7Y7>mjT(?z=ZnyvAS+_*&_ zBfVd*e1~8;U(Dn^i6(*CBy{gBQpom<(8pf z`nxfqe7*x#>INheo`!#)o(xgMYN|7@@RP)BKv|*@!zqp|+FEF_38--jMMz}z#x;{M zIoS*spTva4E1_?crR>OUL7fJD1AD{++8=$5W2GT1C^v^!Yvfa4^-asJLq@ud(#Uz+e&nk-BJ#1{zOk(p zNk={wcoWxeZk7FIFo3|N9!-DsGH;<^z`l>6#7>Rop}7F96&z;o;Adw-2o*=F64KUd z1HHKHG}rg!OTsg0uJ65ah zQn~&A*DPHIJ^4SJ*j-wrJ76fKN&8Xn^jtpWvsa6X{QHYE<@|SHx7yzsc)j3UBx^I= zV@Q_K22yya6~-D2G@czAxds57feDuAN|vdAw?4MEV{J6>9sfRljG+7oU`)()Ytk21 zZ~TKC=$p1=SR2lbK@d*#7-DrLSc8nZ)vjpCyu!#PJKB!C+oo$1!1<}^%BPOtSkbcq zHu#k+l-dn51+VD#@ke#lIiDnjJ8es;>g3D!P1MUfTd#1O?}o5Mh#qlJHF7zlqivjO zXLNRGaKq~A#Qp9OmSniUxrgN_q*wAM3dr8#jz?g4<#Of8U$`~-F5T0lV9{~=A^avc zr#xJ|5Dj)W#XbNVWbQTq0Cei!(>y#Lz8f9&q`2@4@Y49=u;jqS;%Al_i%I3*%X|!s zsR=jc(ubI->h_Rc{%^f@xga{?R=v1_`C~na6UYYV;D;XM@?2Z^obMk`ilA_4Hou!7 zXeSsB)VDnBzihZ6!yuN`A=nxpck!MYIzf&_Wr}#&mSd~K^=^Y8iJvrP>`8*yM}B;D zjKt8nk5i{;>Q@TtSgwcB+MV{4jsox+?VMzIEPg;-`RZirQ%-E&M*xh8bxodvAhx3y z5q2ML8UKYM#+}sjQpgVg2AQwag51!TD*C$o^!~r5N@2NIO)nDWr3^gVZn_cTbBTk> z1i|s=@@6N@EkO5n;pUMnWKOV}cCk1bSP(XdyKeFH z3UH2FYoGQsIknx-rw}}&Pd2}7SBs%RH&*sGCTZV_J6fvO;s`|tV-y;-`voNpWZtX; zVV;;X7?ATjhUSie*hKD^+S+ax4ZZwM`Kv_L6hWU~x2!b@YLUy}*5~%w8*(CAi5$lE zqAW}aqNO#pbUsalBI2D9_8u&JA)-F5`x{hGu(!*z66A997td1hUQ>%?;^B-XdvDU;(Mt9ouP0MC~)F_)iJ4is#oruJJftK z8vNUiC*PCB{#}#fW-o>q0FvvBxysS`V-q}EsO-p?YnwB$4`Oe+4xU~yDqGB@S%7lv zXEubq@t7aoX5C~U**dHX!dCBB5Wqa!7hiu()XQ9D`-}bTwy@euqJ8;=^#UGSxJKll zC8SWvBh9)dj*wWRt9Nutynl}uKYM+Z#`O1kqOR9Q09daw5!QpLZ;s-@7`R>NgI8(P z)(wm>0qbB6COm)|E((G63w-5cWF-2dHDzix4Qe#f1qjh;u0CN1dk2C>fsSs42%lLs zv^bSa#uu~zEuPuch(|}R!4f|WWx!3(v7|{S6Y2_P;#bcUCXZf;Q2sU!GLe69LUM90 zJcKJ6E+lFc+X-zTh&iZ!l<;yajT=N4^aY%<$Vxm=Au#DR78dbUcniQ>20~xk)=RnU zo8z+PDhthkV$cC@Tl(JUG$HC`ooL;P!60p7X)L1*v;2fD5gCwM=INNq(j@Zth!NO? z(tz^??t4FmPoY8`*wj_A6QCEQyAdM~;w|XI;ccwHBA)Z3+8-$MtKtoFPx#ZLfXb(t z%H>~PW8WUnPOnC{CvMY`zZ}1ouhF4xvsD!k)`5ZW8-hu{MonD;D5!(cqU^TT zdtYY=(4XZ~aCTh^u&OB)?w9aM#H6C#hacd5q}&YuBNpJ)?vs)6y5?X0hLxi*h~wO5 z;991MJs1=>Jh*?Nnw7@bZ0}Gx(0h61Q7?BjU8To@StjonT(`7kG-B+@=G2I$w)TJ5 ze*#w_p9mJfZ_9SzjRz_>3d*{vdoNv3y+)8&cJ2U>_#FD8C_v<_v2^iIlj0ZOXnw3& zK|AeJyGjNv>WdncmAn|#;jfK*%mqYXQ-)Ty1fk{O34DEjkjSN0Ifgv}sQ|<8<7Q8l z#BR&{MD`)Sq<$6>Z`NH!wKcLx*;60#WFX;&|8YAtL4S7aaFjrBNp@%$(wo%50hxV zZ*kYHwT-bri@d{Ys(1@)DQ-<;2j4=3(ys>mQ&VH)JzKtSG6~UJ5M+B#G$wVLYPV3o zu*4@r@s$0Z?bugEKUN)ZdoUS6b`(XOK3XqlODe(Evzjo(XgK%L9zZc=f_@w;-Y%>z zHTQX6NyvYudUB713h{2ed~{P*#e^nJotm!85?s7@8%aENNK?@Mq$ToF!^h1MfVZyI z9|?59|HDTLDIl0%(qhyb?tg9{*^TOYbmG8g!VnC-!A{d|4Z{AmB$qg3^7K1Xp;AB# zxis4@;pr`nX(slOU*WNK6W5aYoDHVh&L+l z=V6*W8NL@Alx3gK@wePDO8s`XyD!$(ss0OmSFKCgfZLB=eiFcpKk!|lNFa4 zZ>mcmV^(%f^q~`0iatE&?yp{;C~Lr;tHju~lQ$RZVnHm}TTz#2CF@@jmADN;UnZAWmsiV9h2B+=&^e zIVRHyiURhhJdDCw;0neYYZvfE>6W#=Wc=<-r|2dbdrb2#tHkMOex`42$kUOk)&cq9 z6viphH&iqu4&7WaJu%rmA5sNJhIyOmGCIw?x&$(|XjZ1ZyVe=~Tj-1N`1f_&JTEIv z7z;pT>OYFV#W9&Mvy`X&anNwoG|#{o>Y=i68ad@^mXV&UKglW%qG82BkJ(O$dA{I_ zKaTd+#HH=uo|l~@m{d4hRZ1f#G3%k#&j{+_77FQ21pwo9_x%pUDeabFDUe+4xbP`S>x+g+a zStR#fz{BxyfT%Ur_3<4BL8Rnu^ChB2Sk+a!=0(uF;Zl{vM5=sqmt9Q-;cJ{&_zpi0 zo#xB{^7eR@??=$QovIZi2~-CrP}6<|pCF5e#}<-sEiRjrNy}qPsHZ5T-eK@bv`FQR zn)UTqjvequ+z`&bJlIq$kH<5Qvd4n;!*ILOyv;k#<3hA%ngDTqy;+r0NUUXDw|Pxg zk-MJ}P1n6Ri?D`+<*iA@n1x9dsAt)H63paqPDSAP1@4|XTC1Qm5@V5jaGT06< zRFi4&m9j*I8x_f+?ED%1K9T~`y)U@d5x%{Q=eZvCJ%uCaluqf4*yCIj!Ci3;Bq)o$ zdX)3}6@AKz@Y7XnG3OkeGzTOC0`N&g7qIa{j?{UlnIe2Y8IM#g-&jn*i6m~+Fms8* zw_qKS&=xFxaxhCX^ginJ>?*O64lZ-l|N%t*tjWjp|XiyH;a4302Q#evQ^8wa%5MH_jCN zr4c02_eOwK>3u}(0}G)XPM65Grf)qOkKwe1u>D8!2=U6jTpi26pPiWBS3CS%5Zqukoh!>vxD8`dIXy~!+nkQjdTH#_8arD{zhn#G9cyeoS* z(APg;jcypEsqWy%T%@>HPjqv}>)rbCWRB_&5mE>{=NTTDN(vZ0V6}bx;V`-`r*B3( zU~C}&<(+hkGi z_*)Zax|Uz}2A437E+(Q<#n*Xw0I{N$^qvT5JjxZi{-KCMDZ@DsCe!s$2(>(V&fmf_ zl(7??s-&M$GxW%Cod1ge?q|QR!lO8)o}SqZ)ZvXvJ*uwnDCPfskaE9`pYgZBs=60< z7}^**$HMO?ixNZ0<^oZ4G%Cn-p~=vLx?eBs2+=Jzlu1+$75d2ZqPU8z$^>NcSAfXX09VkLTB z`3X`{^1QtQ*>x2eY8@)$kUU1qoGm}Xi_2=PA+>iX(Y2kHX!=Z1-k4IkId9QWqHqDa zqoRe0rbM7PAlt)}l+DV9X8ejKhJF$ZUl$#!X^R6h5Eu{NgN^BVp>pL|;$mrn-eU3V zmeB;o@m$5ge73;82jT*0REj> zi^rfE+^dVI?=ue5+E5m$U5K8BT}5yu?HeFjXNp{3PG5b$9g=T&sp$A|JH&S*m<}}@ z4X_DvWAo}iG z-M^145H(fD=t9A9P)Y!@p6ZUlqh7E|wNgq(#d&v)fjN%KSJLn%Mk9gN=i3O=8%%7U z!cm>`*!V=y@eQzMJlaAh1<30s>FogdIzAk5EyeL@mcp~HCkgCWb`-@4VN_|qwnE5z zk|*4e=`4s{S}OZ#ciDe+GRiFWhJfC@y_$MFLewklsY-(l7hZO6^xmEArF^7k#a<#c z7nC~6a-!I>0Te?O&y;cpu*-Mr!m$Viwz`LZ{1{!|EhUaaw$alTch z#4jG{%|V?Y3*9Eta~VUFkcfI9bdaUoZ&F=j3DHz?>G4e)2%8|2%vLJadGJ83=7jL= zCIz_IaoHc<4Xexb;{-Ia>ovY{a}|^&mNkPQxsU9Cpjx^AF9{%h%9;GGg&DDn@AOcTEuR_uS;Q#{wY;vdccA9HxOi8}w52pmQo)A#G!+`e6Mu=TVw0+R+HVNH2Hkg}vszHBE6A$IW z%AX;VR1C(EU@tpjze^BJz2 z&r?{G8Jj8mnq0P*HtPAh9A-=u1N20TF{yu6V#NLaS)b!?lX4=5jpe{MmTU>8_Z_V% zdD*%(U}*;UUg_o^n~t$g!Jq+yjt0KJNxQkP_c}+j|0w#7=XoNfyFH0B2G;4YNKL!;WcFOgld@q^5kpH-# zC%hh)=xB)Hf_{y>4Vr)!wZz~AflO4CJ5R_Ho@)4x5%a`Hr#?s^vfNE?5p|;vomQVM zxTEDBwNvH(u_U`AvPQ3leV3z4L8pTw`Wx2XrL@Aw2ZK0 zvci*G|B|jz9JPe&yyXJzPWw|4#b(FhIfYO7o7TaAXVEii{; zkpE8ymo=S-Y2GIN*=wf#va~!A-A!B!jaMEGlx*WYmQY%JeZoyF%SNZP!sw7y>>kJ)q}qy{wq_>;mgsQ`GWu`Y%zpOy=mcpSzXoKb zN%{>#dx^|67wUJ(qKu{>bb+>SI12y#0WQV%C!Pe}e_ck8;9W1l@)4@90>}5BN{~y3 zMmY|v0gbgAk0})n_j!#Yr#GOSsmUhGn5i+4>~nmWt>G-~sEu_6j{ovPFPgvK96@6$e%NLif?k5M=fVDlIQZyru)$ih=)Ao?i&H*D-$UZ-lDHz59!loOQz;`ShuohTsnr!p*Di`blN54o2glN= zd~sf+S&u9vlr8oLv-sUe@g|6dpja%rQUYBrUXMQ!nZ!;6(N(-jSjL=E-x~6|9T)i7 zSXd7cvx$e6;cT~u2>9q82OEcpiiK{^dkr;x{8X{Fy1(_Yi0W9r9pTE0`mFQwY-Cv? zsEq>&T1qouI73Q=gqH6V^kF1<;pTWCUMlh=gEQlETHBIa`$z4K4+jZ|i#jni@F5?R zEJWKL@Pr3|2@D-O_>M_5YFyyyEhX9YG<&%xo2yjA#apUAeJG&Ts;l}4g$`KEZc*x~ zPSC{C`VbFMvoE=y)7JVcDt2M%kE)f~<%LFFXK`67X%wf-x}HAc^^~npy0QFai>G)| z8z;j6Pd73?Ntmhk*Chw@Qgv3%;hN)a#kpfo$q6LuyyyHV?hwsmak3El-?q7U56$*^ zzG#ou1CM$dk&|*l)GJV#J21ksHtO&7kGm1jfoh~xrx?Z!b#Q3TPt`N4n<_;{r8-U6 zbF2X*2nUcMFcZ!JiBAI+Xll?|2F|DMGOIe>f_&M`tF{r8LjZ?JQ0(;1B z&DRcEXf5GOY619ydEHZ9?GJRC#T9BM{25sq?f5uL8{sZ)SJ2e4ME1QptBF8B*BbF^n^h)`~Ix*;^WSLHa9C2 zDhO79+!81WKaCrp_wUY;n5N8fmTW2cv$@Y=&?tMpNUC|9rK9W7Qwuh%me~%~G{XI2 zb+o4!qRQzmBF&ISZuNl(ImGEv#h18Tm#b<|_q5X?#C-}i?Q)$LhC?G?p2Nc{hM?qw z4G!GXX+Fe6TG(fTpumt)?o#h#E2e*iKjc7Yh=3s^;a&lKv3e-Ke)0NG?g1jY4Z_hIB*b^69H2d>47Cxi{V1t= zko7nxmqqK5br;qiN!m|nCtE~-BmH>0g<=5tM*M=LKLd`WD%g%5)HDaarAQ3jA0X`8 ziA^MnW+oPB|HE)a>+|BBjEdbaQz53W0*j7<_0t<3ZkXlxx>%AD13b2OixB5`rvwH# zhPS|h`2ZkNH<7FE-Pu9~+rSW(`|?>a;u;|ke^|dwme%#DZGri@>gi2`GtN3wgMZEl3pO0PwTi+f8lC!LMqlXHQq~q#z%5>4Qo? zn|ZSlX->_EX+kRuhVg*!%477hml6N4gu)|i#s5`F8Y1=WBxjU|M*4LiN9CD=L!K=- zTj-cGY(wIXcG;bRL`XjMXDx26eC_Q->(vyE4`o%Brg| zL3OF%2r>xr4ha3GrYqwSn-H>2V*|8R<>UFkj4X>8)Yec z8}1(V_g$>nn`mBK2iV-9snSvcXC1E~xQ@-hpey5rZ}u4+SfBeLfZ){?@K)0H)A zgClYy>2*5szo=t_-5Ha1i}o5a$;oPV_N`_}LMI?r45(Y8WTbl2}5`%oJZCkv%GCuKSn}f<|2*D$3Uj(qwqXd zVeRlLnwfZ&8${f&;<9eFUwq%n$8z-AXVHg9AKMVl0eT*}3!R#B0bd5pNI!EKC2q9l zHEzj6ZHtrk7oS6D0LHhORS zqAan0oMjcx8rzY_oV}}@$9(-Qx4_34ro=B13i=W8Db*gKK{Xa5m&8s()p%8E2a7F# z|FFBdZxqte8f*N%y$f}uyq#(t@)YCkV!5Zop{*xyF-xs*q>0DONbD!ChVkx@qR8Ad zt~epX)!48e26bVFL-8fiSjPB&Q&Yhd9MHHw3mI&p`b}wq3rKd*;mmt9xFNU{y1>=^ zcEof~NXH&?Lg6tB`uEUiPH36qdd?0+@1k@feAaA7W zTR)xf-}ny*Q3}A4x;518#?!>FgV9gRabK0$Cv>hIzI~x4osX*e(DOjgfdfh^_vT#YZKuvP_X10FaAIULb-JLt5ivugI{#Y#|4n3KU zz-w_RdXx&a(T|%isa>Nj(V3fbglg1zFjDhnT=QTIg!31n)de%@ZB>tf>CIaz7L9L0 z3$+NFQ2KNsZ()8FwSq?g?+{&bDWy%%>`L431R5iV*gmXB<3{Z$RSt=5C#Wigdm4Ch zAb4eT9<8!!e?8%i7JMi;A!}9L7}qaNu{$g9Df>B5iB2rxcIaLp9Nwu8_f-SY)0tZ( z)8vzeRWg2cxg$UttkHWOURKrOjgaQOpq8n`57ePVjka;MIXMl&nD32%ENRWG9w(iB zPS`ji`zvE$QnPz5=oom;^)2MRIy+&IpMcA6$BX_AQcmEWvz_hJuvQ^`3m5qoH zTz7?8u8KZ12MX@1HA=`OyG(A-C^V9QV?v^PMnujJ|K_hEm_Zi)sT;mRPq~4}hp|E; zYR1!*bl0YW@_uFgvm7Oz#`lH9b4KYpx6XeWGrv&CA?XcXP6^4P>=Iahy{m?%N)}aN zw&WEz3u=-{lLvLgI0F6~&c)w_uwIT)Aa#p^_O<>~zb=@t;bs01(buwgh#0Q;ABjQ~ zilESMA_ND9Zti{b`|gv=>D4r%B%&;o9d$oZbobDGNRA;Z;l&-QP^`*?9;#HJL&1`u zI*a!gjW%M>;FZt@b2q{`Yc7)M!yMURRCfHSE)00`jw-HuDGoys)p)c&N z_;ytu56k`T3{8BD`jm^Ut8b^t>!vmIDVZKWF4b7#?F>xcvdd7^^^Vw!myZ7@{eC}U zwv{d|=X$3u%&73;dAGzQV1>>iC)l1osg-j1ay6aYq^;eZ4++pxp)5p1)yU)t60CV9 z@^Bi_xTtxXd4}z7%t|JOw-kHwQ;!~ccs~TtT&!4^HHeikq+Xe2KC!|xCLIey(-mq5 za!WcFKEvL!*v1VIlZM^!(e#8<$aOwn}x-H;yN1L__vmFn9D5@u|3_1H-h) z0BQ!DWyi!Gj3E?<)u{;j>9`f@MZt>Z8Em_gF_}%vN@uc>5L9Dwp^&AtSno&Dy)Y2( z0Um3;DMTF}5;(QfhAnfM_?@WMF$1iCo)=Wi_LMDNRTFf9hh^g>L1x0Y1URrt4cI8p zu!JwSQ!&V%a~jL`xV$3zRWTGpZOICf{p4ZMjrX=ofB8Pm^0XZCtCZZ-OXp2gSeD73 zP65hZi}!k^fC0z9qc?}G7K$w}NeNLeAYjTa*-VF95IC|Emr(k`-;st~w{IM^Pr!xZ zE_e)vihs%JLKBeKlQ?^}R|+S&B+BvS_D1RA++nIYS+@j`?CJ+KghNbM)vy08W|vAh ze^hu#Vo}Vt{<(%SEPVh~xH}q5v+DVb^^$79kEsQ2elfVd^mnx)Cxpk%ppA-IJq0ul4DYj|`PW~Yu zg=gk2eB^k#kJmY-RmClei#Ob6eO6NDdi>b2?pjG?V*RjD&vIu|uY%ueMItAvfZ!=M zSIy+-4h9X5`PM_Tmn+G5{3PIqt~GUb7VZ^^rX6Og{%ifm^6WQ0QQh~`F45zqjDW(g zJ5S75hRwo$fm`z&3J+qR_JqE~dWbWtgc-dnG%xizJK;HSoY)S;r~}k! z@Ss4qzw_k)8U`GjVitQQMuIQ245!tbOJ@~$Cqf>r8|~C zb@K+#4oY6Qe1>yKRWE!?!(POEIrdty-Q%>!&{JVNQepn>Ddid4m(9apzQ+B^Qwza8 zn=DOKX*X%>H&4?J?jJ0uMw~sm*_Ula9uGye0iz?*T8EgEnd|H}c5QP3mHMxgsY=Ff zNt%C()2O|hpRLx=i{hb0iMi4q6sEDmxZH+iJ-+6P>hpSsgEA&WoAPmpv*26%DHcQO z2a9JwAe{qShUb>g-kBRDD%=S--~;=*)5}ed3!;q8wee~6pPYH+kEe$@QBOpyS0o?K zO$u+SD$X68`HH;W3*b#&vT&T;SLi*5UT9FUK3DQ9ozxT6WqDk$!9}g<*uOd}^DxN8 z7M)doP5IUZqKZFw7pZqgb!g>zNUq`gKf%#(2gZ}3Ln&`stDJYV)0u-cCkH-_?`2QD zE;<@|v#r^6j2ngspKGR!%;XrcV0rRYhrmf3<&bq-BlrDn|V8?%#O=B9nXU<@o@e%-SPk3d5f0YC^xo&Wxl%ogoY`~v@lE?VEgiuV0$)R{l?;%J(+Q3}yda$n;=M|PC6GlTUoj|)>)VW7Tf=Z7WD6mh3V%VAf zlIY3up=+IFT9R~uHU%kaf}z!yqQigK|6~ zLAArj@+I+#74)BK5i>u(&r-d%0=GO8pvLC>YyVS6lhe=6RH$!taVQpD4+>&@7ns$i zpK!dDazl}%_ML=~SBdB~0?V-dYK`8%G#WZ67GruFWvr*)+`I=%bjl3tie8)mB&&x;#o??@H6(S$i?*tdc5A^5wM=E_rAnI(h0J6C)-4&BMzll{JX z4J#E3XELP{&v6uc+x?`tzUN>9cI<3uMw3>O?wt7s+y*J>q6_F4zQ&QZ#5hxvwTJ24 zh9-c00>d@LVa{S`?h|ihCh+x{_j+~(t?Qu+f|c1QFzIRmUVGvxGUWSWmCvJgh#jZ# zn)ks#%L$`384A2mppDshg91s0>k*n-!u^W$pgx*p!W9mz33F(1ea@FW3FLmhPau zq=-ED9r_}{BAK;xOd-Opbm!>)weX!qmo;wT%sc1Xt)ZGK4b|a!2Pp<$v93=9Uo%rp z%rshAolUeEQSAa2V(j=Tn+M~y5I&n)0bmK*U> zAOA^$;K#wV(;#Y%PVwrzjrcU)v;fZN>kE`TPK}=a4Z=l$ZtZ+IAH+79I#JNGxTkuV zM*~l4<@M_437wbhPRrZmOah(-_rTiE%02G{wDGX%G@e6n&Q> zZR_Bk9}~Hg$Id39N$!x~xdRPERah=wRSpe}V6xf4u20FC&<$zcu%F2sEJKPgLN(_R z;NiaOZ_gb9NT9hewkw5{iK@e&c%mR>{XI)(3cWdsP1OGQKum?4u*!AEVxv$c)qW#7 z5IIkiH0l`J5}um026HkYcZC=LTreyf%r&j%L>_;5||`e$__ zsde+Ua(PWj#E+EnuWbxZmr4wni zAj3rd%@g9~LEJYoV2IXYOmg>wN43t>3h&-4IBZ<=39aEa5o8Jwi>PNpSVW%)ux*#fXAq7wS zHO{DuWiXLVk|!<|?G{Y8e#d?w14JM%C)2q_jL>gIQ-TCn0tvr%5tPx+<$QiMnBOCA zCHMyT+(;o}X}C#kH077yY_8Dt`6@}lIm^6rIk31n?!sBuIt~Sm>=z~{|L>Jf(!|h% zOqW7~KIY`Iet}Jm0a6NiQg*O4h_p|y;GBs?D^u5RhtZ^s(uy<&g=Edwtosx&4I3na zmr(h&*U~7NELf?@_kt)8{ivUYkK$SG+qC#sLzzgFbP#~1bzEW?x4=GZB`^Ew(#7Kv zz0XLTq>UD+>>BhUesjJ})3`rD&Nq)tn(#3RMN`4e$so1L!V5j`!xLX?W@+Wjz5zA?|Vt%>-D70>ti-e7WXh9lyb zZv&!t$z(=!+Bkt1UfeO61s&S-M|ZBam(0FI`k_f=&9?{li>t=K|(FyPAR zM+t;V;i-!Zr*KHc#O1yCFy}KV9wrr_oWihv7D15Nz&OJg23~Z2^$44(&LoK#D9<+%{NXrq!rX^ipv$sy~oZln(;TJT1>P2DY zS`2{nr!VhB0If0Qk|qJUYQ_qPh)Q^dW`uU+74 zudCR`m?%$iIMloO{`@IkU2p&OoZXc4KidXlvSApK=Kil*@;DfO8I&-%>7Y z47E4{1$#pjcJNX&)pO!_wbn4>QXNY#^t_ zZcVlCRv;nB7&q7=R#wo8YxBoAPAQn1Kjy7P!!BINvUN4VfrIZHW;QXLzfxjmY?HJd zA`fb;V+j!EQ!QF_?*Ruiy$aJt33u`2f~=&g>ZYO$9Hx2$5__KgHI~)TY}ofzDF8Jh zb^*(1H&N~#QyVV|NAvOm`_1nAln zUtMGWNFipS4UYWGYRaS}{r1*B?`Go~x7Y52GhL7}XYc+C;CLic5^2D{#SG^dqOS!= zCFG7+GqghE(YzOSmF?I-BTW7=EI;dc^KOBg-49IVF znmiO*yj60bdXKzEz4HzXR=KPhWi{Af6>UYm<(iB0TX>wcVDz96s?qXveKoPwHApWI z?6T-OA}NN13w!i8P&|aCeol`V}OA>GZsVx0>6+h;9+vT7aZR1?s+$Aw^u5|pLLTie8^BCCaq0?# z*_;+D#~C9?3c>N@T*2YTU0|qo$aW<`1(;Q#+&GOoa|Jy-X_JN0+gs zY^Y!hWuEmUl>EE!_m44>3@R0R6xUvgu`f`B>!hT+R2{Jh7zkVlT zVYa6=A{RJ9$n+kR#bXR_iHKCjT8wx+RLJpQ4uJeT6zX zi77)ToLuN>OM#@;WA>#2~ebO!Dd!P)rHd zt^Hago&2ur*5p%HL%@r1SoSWDowzMuEJhY>Mn_M45eMSxqBthg;(M7ows=b<&liV~ z!puniX=fhs5fkd=`j7`iBLo8tC~OQID04zOR#xZyj93?9EmP^O2|inXq=9}qLh*a~ z|BRhLOHlEzGX*(Y>K2P#5N}CxgOacJrEJ&{`^9KFQ>nS&jja`#%-zYHj55mit3bGn zofDH;ES}g|gdQFO&En8ui;47z7oN=dX-cq48PNkE@O;%tq$45L*G~{L<(@*_uNUYZ z##;kHUW#*Bx^Flb5taanqqKWeEVDDcw8r>8br-74BjWCnccjX^-DWN8S9QmY)MS$5 z%M{-(RIBJPKh68|WMKmw zt8-FFZ(jKq&aVp^1aISB%E1e+K*O@BMr+L&#UO(Mb|;#M$i`)+G5H*Mi;g!UMiQrS zIuu`5yI&)YuP9r%uP5qew>P+jl6sn_E1i}05u6`kvClj%s)ST&vQf9C*-9NEoq1Xt z6^pfWF5=iDs(iKDtEStlQDNy_NX<*!57wOF5<$*>WR-TeHg5;JonAA8aZ|~)aK2U= z7>cK}<8VKz@IXxnQX6n{N7r8+J(SLO&5foHf2eyUp(ydOJJG|*tL+&nXT3qgD*#i$ z3z0ERPG(FuI|SMO4Z8Mg^=6Q&vjjdu8HFwYLD(<-Eb{S$i9OC*p-MioWf*d`4Ws`t zm^M}S{whDNGI=d$7*tqe=6>apz^!>B!U_}L1CNqF+e7YZI@+Yo8GWG9)TCLj8mb<0 zye}BAhqYq{_8K5Ein^gXyg$^OLb{Ktr(c zWX=$9=>7>%v%Y`#fDM^R6JvkQ2S|w?j+$CpOF_l2fwu1P8T|wueC%!=8{7eY*XgN~ zLFUVBGzz#r3Fv@Qy!^vE2pNR4*iR}7%-2eyQUqLI7}aX3!Uh;SEZC}X+a@P&%Aj5(%HbPUOb@ zN9IeMRTgoqXjE(Ebc}UWDV9Tyul#)E?9QF$M&_-%9+Vo#3NE536;gK7XQ{L zqM1je1ze~;W7mf|iickLe>VRG?dvdqCh2D6!bm+oOt zlx+Ycs8Ym};A`4`IKRN1pQE@6YwVUHNAN0P(`-KVkw*NScj}PKSqM57w!Hv`f}83A zVGIH>Ya%0IdM*EKuO^oVr4i_@p-n+_rh)ZKL_|!!f5>2a_Sz=rd0euHO$GfQ!!7g{ zeaFAxborN0Ryqh`ZEA~kZT!?m2c9jrfnyF2t9ai?E0>KC+mOmqGh;->*2t%aE!g-X z^m%vl%zL41FK$Z(Z4i03Z8x{l3H0>*DlPDgP!aI$E5fo8f66}GVq3nZiywJ<@fUWG zGy+7c`^q+f?~K9uxVBY&^>{@QXc;;S(dhlN*HKJ$&KfT(p@096y5lu1B)bc%Z<;1F2=Kq`oEjglIa9k^MUT=uhN8S&V^ ze2TX9=DXRG6j7$Te)h;Qf9a_$;>5+r?9oiqfkB@z07wXxIZXW0Y)%&LZhD4kM^cL$ zi{E<3$;+}X>2YS_p)gDX%v-H?cyE6j)-JDl>VU!?q{Nh31X2+nDV1S4T8a?uZl7++ zF58wV+(TH=Jt)v#5VLqS=7@kxMWGRP{A{SzeBK70*sTe^F6XvocMelnE3KQQ)<0*V z;wzjO!RZ`+JC>u)E4LT7=yt7%Fv05^3pj28fRy#gbvAfXgi(TlW_0bAIUhWvgQKTY z{TQsv`JID*+DE>wEA+vxiS{wY6FznLhy8GpqT<{o@lI0vyier@fqnWBk{)9#x9*c4`s1f zDj}0WL~usoLxCJpTkJpZI+eh9m3h_rw$`Ex*}@Qisekn@;VvyHIS}XQMp&ut+gSQD zfd!SPg~Y(^{o)4UWrI+%;&R-FFn-O-)HysaIqeMeUFK~gA4hQD{QMs)H6A4LmH&_a zw^Jg0`u`S; znJ(H<`j!PRzBkD4X+iR2Pr5Mmg2tO}z(mIY|D19AcfQf7KP)dB6v~jvIoYYqG6za* zV0OXnkg1r$DSmaihf*J|b$YN45-&>qR_c>(0yo0dck0Oo4Z zJIuv>fCm=42{nny-6`1`;gxip2sygTOf3bUrk`iBn}MR%Hxj`-%MS1M&bBsJo|q`M6|Wj}g1lutCR3jGN`rZt8BZX^zB5irWpy_woaA zJgDAK$XL;=U*IZ^+GN~Cd^+MJ1!&2+l5~7!oDZ2Un@Z^0s8;zHwC*&gNhkCJ5ip(m zH#jJ`i^SS=_B&il3ioeW`hU_52~xr5=ps>Z%KCS81%Z;1uYJZ-e)0dsZW1zh>v}Vp zmzc93&y{||{Sn;rQ*j)BjA*-nm+`_hq=N>0>LoqrB3e_SzU(P62J`SSWxPxiT(zIPCG(6%_Oc z1mi33XXXTZGQ$KyeB*)J>9j9t*~JV+QBuP7U&09r<_GI7bkn1#@P6faa^Gq;hRo4s z$6;>Q*6^Tj*6oBDDoHEz#~MTJP5Y! zm}F<oy1TKZq^?WPn%F_#4M{wP0+Mm0{oy z^};TK$&EFsK6)m#`A$3ag?BEVq8-b$pV|_6ID2> zduK@8) z-as!2ggtJSQWltumw8=k@C_btU{!Dp62TevSH}h_*O58CtnR1k}g( zIF^&OFvLt`KgTm0&C6FMfgP(@ide%0WftV`0)W1)Ut`N5p z=b4Z(s?h?Cxn>{-F3k901I$fT7eSgWvbbioZi9t=G-z+zZ0r@k(Q`d z)#W;a7LuUJHpB{smBRirp|{g;6*wV2N^rS{4I%Hu$M}0QDjTmdRt~F!+*(P)YYgtK z*Ez5Q;i3J42Ty!2WF*w(?~zkF8>9ALN-6BhZu!j?F6cs>>6&I#;G+0ov^t?ZYn zTE&H~W}rF4V6jwh_-0}iQ||Tu;t<=1_ywG0K#l=;Aw25Wjm@>P42Q68H2J^yqHL!I zt6^9LvpY!NYa$gu5O}`1y*A)=R=Gyf_=t_aq&S9u=8J9>rrFYoL?qJ+$9e(OM8V5@ z6{fSX%X!z&>8|F@`X0w+V$nwOYOCzbzRqLo$T}gqi`8cWYmC1=z|dZY7t=HCnbvlQ z^%j3rs_*#314eh<)~uLL9v%%EXMS@g>DW;&k4Y#Ip{=@bAy6@a<_pl3o58U@#W7t>X3AVhNLc=5Hhx zeEz0du7yfR`U_Ex8s?4^LChu!96=RAc{DS)*5a?~I}+Av6KaL3^RRC4sJX)(6NhR8 zh9Z(RqeZ{Tp4@Bh=HCr(CbHl!6oHcPYRC9VPx;nb7WmMn#;m(9@VK?E_3QGq)2HwB ze`sMJ6~C%JPyxW;--aR2haf}~vfz?`-vJ|PA$F{!-VX)*cqO72c!1Q%a>=qkDtLVN>y{Fx{C4l(<_1DHnq>Kr2 zBy;;{b03^0y}ylR;f7lBjXKqu$Q5fvdw>`!8lj)DQLQrymjBu`^me8BMLBX^K-Jc$ zEecQdhmoH$dHZJpZlHiXOEil_6+QGVVSQDbt<2@MBRP8pDINe-H_P7TWLbAVQ5A+G zbH}E7ZvQ!gL#vbzI*?9ur?^D=$gCn2dTaSX^Q1F)v3dl&6<^9- zmyojV!O=+y!QL!c_G)Jcbv%pU0`GKj%|XjWD!=H_6b?%9$#E*(7UR>pa?pIQtR_#X z#40BA4)%Rt&|7HmO>S%Iou?0uu_iE>sqEDeOEr=RlPqL~N!Z!-m7e}S$L2+baO^S2 zX4ob-q_)9dyE#g?Lv`O+E%ZkHkJ^B=t!k!}6|-0AW(a^` zCyFR30^S3Esk!U&*OFe9s_c9nnE_5-uNA1+9Uv7gNLdKBnw!)d`J^|7$;~)!^39}- zio(9|W1H8n751zB@bl9V8lPGb^?53iKu99kjwwx0sOo7?y=sign4CZ<%9Ja@X?fmh>6y_?ul z_-ZgL9bCO*izcvzG{5p;ri9NuMEECh4)8DzALu~BF5%dY4ZM`yQ&L>|1sPkj^0mOz z6)zdvq{FaM9aYxgkVkk?np$5qMvBDDpE$tjKPg%wS9G4vEh7);oMNyljf~oP+72Q^ z_$d-;1F_FA@BrOk6iV6!$x31PLZ~XJaORC!+#5;D>7A^QMbUP~VO1NnCAqr)B}eR& zIrXv}ttZ*fcOsjQ!-@66+;c(7h?`uL&@Vy9qvoKls3mCT2OGD-_rpsO#ubQ#9M@eG|PD|Yj_7y1U&kQ zqLbe9L#4+fW%r%ddl)JNr`R#l%N$?nlrP`^PJAHyN7x}4ePoS|I z7l(AH^$s4$7PJUw+nAsOC99RuS?qIYHN(Q|iggG6l7zqChNW zf3*)6XzGQnkcH*#HCZ2cbr(~i(Z9h}MXS=&3D`7Hz&D4a%f5EnO_BrV+IQJMhZkfg zlKO4JjpD}lt?3lO-oEC41YG3qk#FaY>!^A?^6FkHgoKUJ5&v)?4|u3!z_7(1dsG<# zE<2250m#S^O%6=e9nLy;Eg?B8t(D&d^qCI)L=7zIv=Ev&!4EC9JAdbs6dMe+nfn)y z8LUzjgg}VmRHiJ(TnT=JVqW3LcpD0shFuZ;OL&PzB)xq*DhlyC_Ov#JH+6sKdNSwT zToGo6{Dfuayw_zeON4&5pIx4S50J!5_pBV+7`ww%Xjh*eO(B`$pR<>jC~W8EtIZ;5 zbz!;G`wL67%=CAw5xFRe*l7Hh;6e)B(JYVPbomc=A<$YlT%zr$d|z!-4Um!#oomK8 zbljK}n2N&l%NIw4*%m_u2x)GFhtJ42IYEC*vbDB=GZ2YS@`AD*M(TqRUuZd8-6aD+ z+2Lo`m0KrItPxbzv;rh@0h^geTSmO4?(YREhg^MLI$d6yAV|euW=;1)&F*b`4{pyD zJjMqm-DwVLOo2Lf!f1FhB=Tma;2)BGLxrw1rM-`u<|0&D+k`o2W!+GPq_>`M$Xz>t z!dB$3ivezu>rVjp+y;yA%(-=dAquqS72;XlgM(ZNLGrTP4-7s9ZUG>-;x`~gL5e5U z)Q%n^PrbR-T7e3vbapICV2Q#J1WWz#NCrO~T$dPXHXlI4SS4|2e75%dLr`~Z{N%Qs z0fhn>)TlFrynr1Y7mT6Jta;KFO|m)CTQVCy7~-aju<5!<`A?xS+#ikY0M}o>nJ0QS zY0mt99_A&VsiX$b!1;wzs{W)?Im5HPRy;6!gozy?s=6zo)g&kY^rV$zJ?WoU~hxJ8E81ezCn zq+87o!G{N?k2VIR-tu2pIh(C*$W6&i*kYImQ}bKi8#PXTaEWdauHRA_TdvsUF5P{3 zXTrM4cQ}`Cj`&vj5QY~;5}qR+fPLyL`!y~Ieb#>UJQ~HS%(I&JR}PM*50JpC`f-f= z0Gp@&u2RP~`URhba%!Bci(yqB@fL*5-f?Lg;vf@R^|m1WN!f*^n9)<|f#&75aO|uY zMrFLK9&iqs6e6*eqtzv9RXBayLYpla+)yP>dNyyT;RaC@7+fdD%FM?o-N}8S>EO9Kf-|nYgiZA)n8z$AyE8wrtg^s8)KmMNfnr zGgIp-p9jU=`fgH>#_wa^ypGZz`b?UmB_rrQozO){E+yiT=nRDtM1fs|k)9>d;I8#6 z_Z~1w5G}T_LsvK$_rXDv_W(aYz`vqu^IpRS6xs|T0mRk*PO1=bBy(^usJCFKy|WC? zAjvst8c*^w9S1hka?|rRtN4BnOD!)u&P3T`x0_bbvHenN7Zdi^6kJ-B%pgJx;#-d^ zj!pvKi~)`{lT?b6@l!0r$Bvaivw=cGEW}iviL-`-LYqMFk;Q?{6e6IFCN%WGk8X)m z1I9Iu#txo7yv9?RQmtI>+G8v;7>!<$MBl|=Em85q*7qTDavE4bTM%bE4;)C41!S6K zAS|Fk%Qp+(Vkpx^{SXJsl0ZE+C;AEF3UbrY2uP6VI8uFcr1Buwi;7GEF_V<|R@&1E zb)^-R(64T6aso;^D5#8*#J8iMXmVrZ(YSUTT{HJ+6WrA!n&aoA)a5d=fZLj^d?vb=Hd9HDW%aH^vz#C~x$Mp=avdB-#{jM=QODiiyqP0;52+1Lt%s zhCd@r$+@9Smk<(`fB$Vzz%3DUV(v;$|37_%*-nqHw~-}{d&U7t^Nd5*Y6iPkKG@WL zOIE}aYxG9VRGN}PDBao)l@tK#&HF05s>1f6L{<Bq8GyFD(OD#>%B8*dt8|R?Myr?WKq|{31dEen-1)Ke5a{51Fu8nfGyz>pJ z6T(ArRTuQzCn>s-oZX`iG%1NUvF*fBD|d=BLm_zz#bpJ(e8N~!6a21^0OdVtvd;Jz zA7pUp%-N_B@BG^8>O5Hd5N=b$47 z1_{-1P_9TAt^P9^o_!)O znWt8&gf!O~;@Djb9~1arI!{4p!DpQQgPF_6Ow2BNelLpgn&0ge{Jz`6 z-}v2BY<#0PP=xP^i(k$yrof<0uMr`wCP3b&xW2{0KQ8ztty91g>5 zh9DcSd;G!uqDNK;;Fyeg zeH1}+0$yGtJeSL?vp%bN{Sk0VmMJs+SPiV6sK~{C-K|TZ|DE5La*T$w0Xu}@Pgn^1 zdl?aIb^2qUPt`fW>J9I_OF0A|BZ8dLxG%6flqhrCG$&ya3IEjkTM=%%!GY-)moR|P z2om}LqvUFo0X01(bH*_NDb4-fF!APk<-w}Z=bU8GB^x~ls*X5q{)SXvMo%NWU`rO( zkX`NI%1-zTe*A&p3N6YI8KobB;P+7F6=;3TbehIc7+Sr9aN+?;;`cy^JU8{uQz(^* zDUbh05Lfg)jxmv9JT2S|MR52P%78sipPb`kK)(`J8w`&uCWoMy)C~}?)q!fg>(Qkp ziAX`lgv;((o}eI>cVO(yqLFX+W(^X z#T-X7$LkCvr!TSxXKs^iP?Ejdzz-KYdk;IK5*a(6j42T!0yBed$#q1z0}u3Nr)1y=nd? zxg1XNAWbr`(JQv4RyauD=nDqsFN=)A9Jr~uEd{CK(2|3@==mb#_5CFWX5vKD;ca&9v6o?oqrZJ0>>fw=v zVGjsp+J9H{0>?oaWMSzz9>IfIxf1wQ;l2_F*DC$Uqb(y!`c01HSFhldBwvy1U{W5J zi?ghGK$^8zCMf=TwqyklY3!n_3vWBf4MEH+!m|1H?dtdB3KXgsx`To63F^VRMc5%n zDG1n!MW06F5<_S-lTIP01wKDyQD=eb9vXspyxM|j8z4$^a(X0XRzNWmE^;`7x06V7 zH+EOxF;}U(o#B=Lz;E}3+turT923fsWwV`|j3c|Ww*Gj^SX)o*ec6T`;bKSWFTca` zLcswAdv1~9zEFtg>8JDesp;>|Zj zXrPDeCm;yOuzs!CN7^Hl`eyv|aOQ7j7Gy)8I=LNT8$x#Bah4wR?)nUnk<4sfV>CyE zV}-<1Igbw`m(xL9_WRvcwK@uuPNY;0{N4V;5Z0gkFpj~2D$#15Ne@t-MqO0ei-`0p zOpfVp()y%_=m^_q0J5<3%Ts^MLK6y$f18U(%#5Q9eUFDJh4 zVhD+|H<&?8BM1FsT1vnxzl{E%QIyv<*A|AWlCSPC zg(3q7kbz1NbC2-xRZbVq(Y-LN5ZN{8UsU?9Am@PBsQyo|Zj`P+*TReP@AsL~e%**Z zkV`;@QuUK1&3Tb#ciAxKGqqVfGGfiPJa{3xx{mgJ2Oca3dN=ZNBH-fB70(#) zh_?|RUtvjf}tQnrQWcjGvMJJ-0%!I&7Ufwf51cZDWxFjiiw2%X5 z#!k!S8>o`A5%djxndEepC66Siu_1Ol;^>6~Z!L@o>F)wbN}-y;jWEVj zzPl?qYgUml!B04=6Hl5hMqGSTxNb#_)ss?!6Xx(3cunU%w#GU65F=b%<503cZXiXH)%rHUJ$rymkPT8; zP(>-yYpbEs;bmmF0CG+POZ_Ikpv!63&AY#<&I*<>RB=&0Pec^%90_PuQ9Jszmg^+( zLuM4;d1%YRAFjV^lyNe@G4j&m5i|UjoT&HE@Fo(CgJeXgo6C^1$D!JG$l;1QxRClu=5glz`W;v7m7=>e)WGqoqjN7-0PC`V zK&`0Np&6rPKIt8wIix?1V@nV7Lit~_6?Qp%2FCIJqv5v$L1%1^#*m~59 zHEC-HJmW5ULSTb^zt1ya6cgk9QM)W_`99;SK!UMizU><1{3B!b7mItqfYIs)?JjoN z;V2UT$tAQpSLAcEF{AH=`d0M|Czn0Nci8mXZ9pFEQ2=~bZl9~y^d#V5Ew)R(j}j#T z$rosE6P9hkx2&k2HN$&-2hqQk+}8Uxl_dgH^G}g{GgVkuKeT$01_s=?!njj8o5mo) zE|OL3UPLMn8~W~A*swTaF3lQnDqCF<1bIT-17%D@X)W8?)ATLg@Zw}Uobz@h^xqf_ z1oOBfWl)4sMnOQ$R}ZrQR}dm$fV}>~6YeH*YQuZ7W=AXd4``^mo6P^ENR--HTqI1G zub(%^7y+L60sH>7aPpk_10>}mFI@f}QGRwVBPXKIb2?MT`3I#D%t_y|v2&o`MjzmC z>t0&L4>y@I@%X@ym)FNe%#mAg-&gVdBNw-TK~2%ytcnqx!_UvPB1C?rSF3X_4en}w zj*1?j0W>8ai8W(P9ASP_d>V3H^SCj)DHE7M^MyjoiM<-D4?mO^g zUP{Zt|M`>cVfCu#-VMfK{=Cb2^`J9en2lXUi_6tr_v3VxixW6})E{hs$>&e`Ce|@0GPzWR$>xHOUsuiDIV+ zpeI@ALQ05+Nf$PY0HsCgNOH6oW)^)VcxPwqArOYj2LyOlefxT?_;)S>7#;Ezc{Gi( z?%KTn%n|&GrTo455;jLF^U~gwX<$*eY1usA*Rs;GMk@uhLQxMvMU}#iK3%Q8-jiqI zon0DAVr0otK#Jp4Bpox(m7rmGBFoW0Z@| zNrUW}E396r$Cy@OFQ}f;h`jZHbQYm7?ERzYz{uUXKk6qrSun@)-mQ&wgZrRo3DK!@ zq>R9i6Ac9VzI3DV|NAm@(9ZU23G*7Sg)syTQS~v||mY5Y|3QZ@8Htz6$mE%Ct_malijWNzW{Lf`SEIkubRd+R~8=O3BIr z;YVRKX7KiRq~k-+M)|3&afk5K^NglwTgO{c_2Q`h>JH2M!!9Wiq+;@Hx)PNjR{UO- zO92j=G1zv-5>q&_Bxaq(sA|Y`v zBJk;zli6q9a+=jT_9AG+df8ZWkIpEAWjr{}pd2j&eQS=BK!kxn=D2OqTI4)>6N%=wV`|1 zII>Fp*g%h3C)B23z%?oQJ@J|Ku)b-I<4PW~RAkXQ(Ovl3bk9YNWLfi-Tusm;89Gst z+gZSFB`gALRy#M{6@d$L=Ali}bfJJoIM{;AWx$ zvmtAUU2SgEWeK+PNSk+vnNNW(^`mFogO$$qF2Jw3$iom$kBf!wB^q=JNIeNhvP$Ql zXA6;@3FyCdB(({p#`FXJOm-~9&pWA&ZP`Vv4a6ys6N$8)}{z4;gKhrQ=*70>jK>B=Q{200$P1HWa zm2gTp42i8=9E269HonKHSR-xS#_s;Nfg5*^;uHPEA_DVp>G+Wh=bz1X6$R3V1Doee zIZ2WqL~UM9WivZ#)ksF}r>V=)0Re_}S5f$s6~>^Oi zED6ttHp2K%{pk`XQ(Cp85ewC*i9?xV|7aaYeh{WhC76(a6Q|RkUJ^?Q)Ay#!o`1?;|or+4Dac>S^I*tFK5RsbLMe*h>mMD?7Eg}+~4 z?$toXgO@dgrhPPxa=M-|@GVdLQ3(&Y$h0Xrb($^01B3pS_(<<0b;F1rwnoTTQSgB) zBpmctbOr!n84Cf;RBc*X1p2oBj__!HOnGLvLvd%*d(<5cuOAS$u|AliBXmLOiv8}xC`j*Iuhf7)%Kw7M z`Z9g(R6<_uz~85q?t;DLORG(C6NMiZn2$hC>b~ij)`ynT6^%@_lcux~9=frT4J|KP z6F~ZIQ!C`Kh7JO{zv{7n{HVg$w!G85LL9l|VSiiQ2kV$2i~Cin2B}a?)nILnIqZq* z3DS-|t7S1X6ckG`Hnrtbas{>8{u6~v6S+VfglD_Y-y?LTIqu#F!qP(+RL37JKwJ z@a2x|+Pt}PMmb3(zh*LsulT(r05`+AW}N9iZg*iLys2G`xJJ*o6DWacZi4Quk`rF? zJzUba6iZL=b7B>aBjFz#AH(d`YCW<}5N zQ+qy$VIfxKJ;F^7F~H)fwXzxOed!PTvh$ds|He4`n|r#ZIV$G~GA@dQbx~Gg2rSPn zWs6Pn^kisnWg@<@&E{oPvJ9+FC|H$QH#RTGttX{Z_*$4g35TX{XIwO?fk@|^PB2|$ z3;{!8tXRG5%}M~wgbn=yONa}@)HnpoBWkBF@j3{J2vITSr5-;qR}e%CXl3j}gflxw zEVW%h+mhbqt2{-gCarViot{)>KC>A>k*NBXc;K^WtZly#BG_jBta2t)ssLxK#TO;! z2-}=)#|$6Zl2~IIJpf}<`lnR8Da*>D_IWT@z$g2cWPyOT0{N2BqJtr&T5;ic7`h#| z#t7G#3xESPaz$Pd2H4c~Ke(%;_Xo$Azzsv7jTXX*kM>-w#W#NxQC8j!(6!^eB=30y z>o3%lVHCXb$+`-zw6CH$8fS+(xLKk5&0^rou}^*V4Em$mj>l4|4h(?wO?Q1o*@&EC z%GJ;>eI-Uagg0~^JT%yQ|XLLCGHNgi)qwq*UVIp88-B2cvq&rf>_qt9twtdADO7zL&N>3e9)Ao)!!i z>Zfz15)7%AOlUb2hgmq9DwVrszg~a8_lY=B-DmsV>VG^$TPej3W)G>-#%JpoZ{|Bk z>{)joIvo92CZk6x3$#)%R_F48?#4zGOSkxi@8Qp2@K3-ZEThR|W~yvPr*-t1m1_`{ z1IFyFn-9e|LB&m^EPTADu+0`PA8T|^v1j`|VZEL`2#&CdZSUIf8RU33i_(M5koRp+ zh>&jO*6RcJ8&PRQ>WT)6_@I=428Z{(U2)ps==8~jrpG~?E$2HJ zz&GeV!o6GV17;Y{_|5Ba-BJCoSKzy!vyc)QZZspeUz_PjTSJ}=DcM&1f;JlyFWYyg ziO}I-H-K_LYQM^F^qUa>tgFQi{mMiu$XGm&o>Yq(L%Pqv_U?GL)caP@(G9=ufX+*I zyEH5v%_+P?>om56cV6Bfwt*vqTxy?mc<0|V2!W}GW&`*6h`Jm|G6PTu&Xe^Rm~5#i zVv;u*gkv<8*U(z(B;>98HYKU)r8ziX|7G(q`naW4QYX^p-8*~D>@2wsi0u$uvO1fz zB0roV2yXsRL1OmzwQ#p6b=Aas!^C1YzP}x~rRgSLmHdgx5>_k%Fc_2Wz7l)F<89;( z`#$^xh37efYP|DtG^+~3n!NkQhl{Io{q&t>%wt`6kP)rg@Hl~IT$YBXShsGg_LOPF zd5HN&f=fMBSZ)`c+u8ue8Z%c~b*~>y9lM8w@tq78S>G%~{t|6jb>9Zp&yTb{dCWSv zOzKM_NTJ{?LG1s8vEGk?Tl9Zv>L27ZF1Vq{h*n)xzFxkyufo3T)!kA}7Lm5{?9Im) zFv)1#7m8>%R!Dc0mnX$Ki*UCQ&(9J96-LAORGX(pH?k;=%^<6cF;ntYzRPGmiLHS( zzU$xmGRW+39{sLVdkei*;3%E)CF9R2Bo4-(30Sw3r9R>D`*B;eK#D$6NoHZ*r2*Dd zun3iysE}rK+6RaRl*rVMbd@E4P8Pt{n}3DkirgX9#-sGb0wBX^%`3}G49&FTI=%F` zFm20jcJjoaPEH@=;?6U3Au%eIhfs~T4Za2c!l>(=c*#kLp5I(A`BcamVqOx#03-RS z&QZR|IBS-9lUrD`^h_+PCkl~^sipu|;rROKoXh6Q+)MUBcM^&YWH@G1;Hz=!%_C^D zbt^#4<#@tO^^(pt-ewCAXgZs(Vzq8eX0H8~pL(^N(59ph$?4!mz3#QT4G~jD&lPa4 zEV(lDqit0|k77A-MXvLm2j!<|i=~WBlxRPfX+l|s>=h~-8)4Bk^j{>>P%H6OW~Svr z@r%Om$Xxs{(YcGp;B`pPV-GN6EKZ68A5~ipF`mxFZ9mG?2T(j7`q-WE*7MHShW6vi6 zFExn0m4RSPOzp#7aU9h%jBpA$$i%>&0CE`27&((uut96+ibC8nnJ=^utZ=rIj}wZ!n%k&24#G!pt- ztfvw!IPFNe{svFQ(e;)Re1uWC-V&&84BWOE-`6w+a1?uN~Y+iz_%#RS8=6^Huk53zmZ1YBzJ|Y)=;XH zCOt^3$=$csHqUp`AWL47{9hMH+{w2hFv`tmAfQM*QZuv>n4(Y1$8d~cAu0}{*Oi$1 zUA8Ws;_}v3Hawq}D)KjJO?d;)juNcoY_jbq_?~!^9fm{pIHcUm&!HC#t>bI*9vd}V zU`vVE^YQ~^3nO@gyn<&hOq{`pMb-dRTR`hhUlj=QC<|-#<6S8;eMF|hDETE4A2=wz z6~qN+`PLR^{=`+&C9jf@)+-9hE-Xz>Epgk_^_bHwaN7DAg|FA9rO|=Hlu$P<@2(zT!5~KeaN2sr^T?c$a9!(2_^o5%K0zg{Zh& zp=IScbw^}<5`Of=KJvw@s5c&i2r=Iz-TfT(x^2J)GHdmW z4CAfT(LhBUN3Us}kf@D`Id`$K=_{k+hHMQhYSVah9nLz5}FQrc8qbOY=6ph=4CUqFft)nc@lgj+gBNS;YZjB3e#;|=gBJVJX6l>Q@mbTfuE4#l zuNiUfaRKl~p#ChUtFvy*LRdFpm2wAz=inN%u>MhgZ!FL30`1GVK61*ZRDg`h^nf>E zY$9k>B>?!!1u@W~mQJ`!X0~;lsnBa@GBYK~4Y$1M$D_2$2f(O<2fz>xra+8gtxi>_ zxuRaZvzuisCmvT4csLU-s~gbkL%nsB>sd_9VK2H6n+tHovt~avp=sHYi6h+DtM?NA zvYk!3v>I7yCVIZO_$|TU)QJ{(K`Nm(3dkQ(xKgd&zB>W|ykQ2#j>pVvY_MaSX?kGo1AI+&LMG52Lc9$I7j$UW{bnhP6= z`M{ynx#R>@zA~1(Fmf2}ENci&f3KC12XG5uDG%YRK4MS-Cyp7b4DsXy%|zRy^?G@` zc^glywB0I~D8JYO?aeTG=6s0IX&e!ra>iGjfzd62;vEL{VK^KqItymN=C!glOGM3; z3m53S5I2j#tTWzJr=0Co_X(Y{nkSU)t}J8s1?NRc``kr}=J#zeV zY+AEAGBGFnj*HkmyY2d0KvTbEkwFueu@|!KC4Q5qG;scYAz~DgA7JiE6J3O8jhZlJ zMd$2@1{D2T;T4-vbRv4ssdL?8+UtvWSjn!?q?!#KaljY1ojFXk&?`}=M;^!bNSquG~iH zHz=gu^CoFSiC<7Ru$w`}TT*U46C_`y0Nh>pn%`rrO;0iR z6Z&TjPt*sceHjDNK3d%9RWj{ddF6hT6yUlp@doo=PaLJq#ac2^J+KK*UDQmE=erNQ z@?=x^2T(ksUE$Q12x$duWd3IzgB#xf&O6j#9z!Xb^S`TDVu+PR_bv?Lv%a!vMf@lT zPWmSYmX_~B0xC@N>Wg!-aXRnEcWJmmS|5zQ<&YAFQt@J!?pc<(^57Uy-juNeTbnRtWGN(U2+y|Md;B55Q?AHQEwsK@K6eY^8xT6xOiZ^B0XWOhT zIMQfg>90Aj7$=!&WF6p|hH68in1b}nLUj(8KRkX}Z@A13bM{4UyeJ_%)$hPO3JS10 z{Kz=^NHzE$#BP6wr9D2__W20gw=-CL0aXsdb#;FqIvHU&JF!%#RT()iHrYS~ts*Mf zSzq|SsK#Z|GW9Fgv(86Y`Hs%LhJ;16*)b+VfNZTN~EppKi|JE;QXuFCQZs6JDWn& z;l+|Nyfe_ArxSew7zybguLHA6TiuB=Rg%hlh3wA&32)Gpvs7T#(604Q6l0RM$c>Tu z;fNxRZ+FeYDHFa98&sg#{c`-*swtQ!s(OC6DW`*JK81fdTy2V%9x9n$4o*X{&DJ08 zh{H7UGHzL*a-OdU&vy(F@@nKaCT||MJ`ks{PXr zg(6(Vr#b*%$88mEBkDn3?^RBzXfZ?xK|z8^*pB7#Hp=q3il+zdjfG@lPs@G)Aiov@ zE?8jK635<+;mQZ&Ke6B1>>1)eC@V}+;003pVnFw(O?m24% zj+gKh8fGEM=wrJ1RV~wbduut6e-i{(HVUO2#?9Q@vimgf$V81P=S<#&(iYaaT~0kc z=aCc*aA!@9g5M@q%K^7!VRGrz0VQ2GP^YY0$iFtUSpdw_!WVN$WA-ST$!ZET1e8jY z(C;?&XiEWs^*s2F>Fc;5PodU)Ix^sCWf&-dwZw@0OHHlw(r0u3a?O?Y)T#MV=1L3& z>@9c^V))?2+?B8S{dhU6{ox8+c;-kybkv7_wfTE|S@@>;UbNjMKoS(*xer=$h}T3$ zx9cB|kCpQf@RPk8oY@&oPZ#euD-jw;@*JB-Mr<0YYh>jYeKhsyYSyAd=_-ed1nE z7`T?$K$i(yz9ie;(e185G144oz-@Wn8f|O07_|bvHFg`)u$ryVJ3VA zudNhS&ePJ@wl3w!H|Bt^4@^ru@Ywb!i;OpR>HG+=A`o5|A$*x?KIe(s&AV*=EoQl8 zK}r!bLTO%bu|;eM%Q_*_SqOBjOOOP2%SnQdpNrV@)f?H=z>Q3S1mQ4Vj^>?CZau@% z@>4=?=t9AY7bdb=8Q^eVcPf@roxxeMDBrav`ClSTLA!MdB1?ei#|V?J4?lcdfktN~ zxo2=z`AQhj2?m5Ep6wyFhsC^UB<$PNltVpzGDky=^?>bmpCgsoAQ6D6oHW#*=kYF# z>Cynd5FUuzsi_ptrO}+ezd$9^=64^CCYBD_R0x`tk8DA~i#`Z7EvAr^;Zcp!w1xn# z7eM$>I6MWEk^`w^c38L(c3JRc0r%oX6Q&{9hl&a$*MQC(Us?nrXOJPVq7_*5eI7>x z@OQAvY;WyOSq_bVBcrBDv`Sd%OaHJByLB$A=?FCwpI}k7f2im{INSE`>Sr{zh862G zhIZ0T$W)T7(EJHs>v<_wMd-`l$*`!JayB8ZP5%Zxn>b2x90dPcn|b(2Z41*trxO6H z<|)v72YMLlVtULM$t7hw*OHerQ9M-J`t&M^=9UYZMv1^dB}!+uy2{1?`IOGP+TuYe z0qAHnKUHG!XnCEoOy^slU)%K|L&45Fh#;w^Sc3KQxG@Zpho)ZR`|2>M=f#d@X5+o+ ze>qneyq&+vkqx>2Mc~c@2043cY%UA1NnMy1{&h;X7>ao*r%uy>8v>NQQj2lwj5mv3!lQ3Rn)2f zsbQ8u^A=d=La0DuZ18YSo~78a+;?-2Z&)$n6L;$bGQU`+!tz; z^0W3?1H|<kf*~*_%=PP03$dk+7D{VCQ+t%MV>nJ}0X{ zwkE&b8D!qVwzJxM)RC@EYFwrx-FuCs_uK9rH7Ec9vnee&q?B8 z34Al*dQ&X%YcggF%G-{Tu?Mj_EEFaWTQRFSWeh|-Xy9#p)Pj$`K)vm|3hw_6-(kC< zx1%jnXv^`_3v#zkMv$5emhB#*6?qBB>qCDk)Ejp|7vm@yveHmEUGsEnv!Da|}o)7>N@tLvS9f z0IJP&E;fe+2S&9V$@bObs2h+@Y&%PhLLl*{;a-Z|d|BFQXF}|lH4Ni4APH(Ybh7#2 z$Zdgmu6L5x#&wSA2v{sI=drv~@aen*%u)?w_(eYYa*97aAaEje6kHuA&i4|rl zt08~;OMWj}OIclVWWjaPoorHSWyHq*eK+=$8*K#4t>{LpiRjBMyvLeRL>?{+XY!eg zJvGXGYJRtB@}|npuLiQ`rI>)x!)AMdvLta8=M^dwWSDVAgPj_IJ63-UF$9d-=;Bv8 zMIQXru3peyVK252>$InNGq3(PT#C^zfF%>_Uf$=LQEO)nGtX!#?N6BGR8WX1q2@U& zx%3Q|n-ClCT2W$)M)rJG+&9q_ED>3Zr6Tk|zIag)!l8hjjW?%VJ1wx6ObFZwqho^` z`^Jtf5?ZRYO2B2iNd%cy#1bV)$uB`9_Z2qqmBY%MVQsBw1Tu)Y7WEU009=G_Km?`z z&4i)&Fp0}uq}UyS0J;lY=&;o2NS!}gQgXpD5@SiA+I8`&GXH5&4$}bO+``J?tQHK} zv&Z7Wi!F@{qn+6K+KaEF^BY6$Uj!W|4D|!JL~sB!rR(}ItkmJJpaid7?(d(??n1C& zL$q>vI<0rrdQ&{0?I>kB{SwOCS8$~&no-=kyvr;^b-pw%ab-RgssHb4_>h%()I@^* zC4NydR`Fi;9@@v5oi#dVlZvBu$Fd$Y8tXl1WvInBVGg! z)xE&HXn9DdY(wGzmh9KCrwJ0Gx?VjT{uu7*DcosVN91RUHj7=|Q@|#`5j11%N&4h# z$~}4D=jWCUfG1*rb~1j%^_Y#TiX^t!Ee?p_z0AFT6CMAJX4lxn51d%7`sdPKC)hcK zU1SaLS(?CE=6mwSnSs7iqGf%yZ?8E$K-tBSAb(@Ha6$v7b0$1854x=U*jN(!5UPnI ztn#4+$6WrUjF2G|_g7Qm@L8mT64J7DQzonHSA=P|kKsOuQYl9tBoOo+@E1<=Dut#| zIE>ss2_Of3l1f+y*uvMM5Vp=Wor0x{mhIO@F~5Jrh)E@yKi(DgrN{#(>A9YeJCLV< z6r(%MO=tB&p@|+~ay-OFrP5?aD&${{Z7*$jo!%Z`wW9o*Pwh&wM}=b#03=T$!z5(r z^-xzW(${z`%N6K20&Wlch_y3!H7U7%<5u?EpgjS^tLO5rbmr^*EES`|6r{{@Y){XT zCBjcLr6fl*5AcG1o|425kR<^#H$N?8NQi2#$D<-A(COG%B1LYD5_owP{j_|hUB%D z+QjUtKf^gKg5BAGHS`@n;K@|}>A_u1*9+5Vy_n#MkaMBxjlD((Z|~2}VNI%+pt|n4 zvGo6tlgbg#MXAu3%i~xBSu}+?(H>QfF!&#mbkbS@o2RPHu>eB3((tmH0Zs#L?yO zceVwlm+z#H6jFq>KM+cReRihnO(BFe2DA>V#*Wz{Kzp;RBkX0#(G1xbU7_hroY}E1 znG0F81*vVZs&o^zreTnfSK6T=dv(FYJs@3o$%-SBh|0NKVG1wOGvJj&Xq;PqCKk{q zk3#91CY09~rTTOJIhe%c?mdILt!Qy1cPDpC^A$nZ7lZO$s)XQ*S3 zG(aP;Rg$Jj=9C9TGb}+XJ;Cmlj<;+NoJ^fKVAS2hVO!`3VeoBnbsWI>)74hiW2L7E z(=v#T9HB%w>Fj0(T-M@` zKb*Kk#?Z^Nzrh?Av}RBIn(3N`zj+tF*qs`!;CvwJBrAqMw;hE&`7kwe9VrMWR2T_y^ zrYEE+oJpsypau-;P!TB{ z_Co)-c!J?0lLR;dajdK={wl79#UQ zTMUF2L4eyu%*Jr=<0Bo%=qN<=fWQ0;mh_@JB6m%lI;VB}s8VFyfn!|ESESM|CP@FS zXY~$#`i{SIGpD5#-&$IcnEQqS&sA~{B|J!JbWwOZxRIZC*XUw}YBk*Cd#v8CeHy91 zzxm;wI#0EcAcSBWHyG$Qt6OJiPj~#+mIxPwWR5aYgba=%+TPsOXhKC5MrPP# zAd|qc%qp7LlEl(rwe$4gRdFp!Cfp+!Szdktu&FHfuo0YB6613UA9UIK#0t#S)f&O* zzOVt()!sDzIusS1cXcu5@O2?EzFr;N2{< z>h{N`_QIre@&?o>45QeA=zp+L9bM(Sl&1|=dXcsWO~}WwTTF4%mgYNl|CqcgkWdEC zdVl5@j%(zL^b^#q=${YKRLDx6qM9zRLut`GYfuopop0XzS1qD?%3;iF&)NGa{iwv< zY%EL-9o{=|S;mrInlp<3n7qZ|Sc|#XeTMrFrECPH12%!bWJEq6=Xudn&*d2jjtQ`w z;qy_p57r7mI_9xip4L+&H@NG#TJG~LTn$SLQ(rKk4>R^$wC}i0>8;|iS%D)J zdddb_t{#5$wSP-)SwrrL{sHVzrID_Fg?}OKNegNh;?$NN&_(^ck-llwOODAOJd5uG1qSZ}7Zb8UaZ#h9Y7dKul%-P&H43 zAyrFO6OJ-HS0`R5yxeQJu?-h8uHUTnL095$GxpINOZcfMh$`F~Oj?K||`-Ls8Sk zMK0yt^F^VVs9N^aIXd6rWd?eQ{jC2X`Dq;A|L=C(HO`+meZHqhdcAP>Mj%a8Ctw(F zt=?lM@!-MY5AkeICnQ{t#u(sNj%iV_&k(#KBdJ1K?$8Y1jC|HvB+Y(iOxh&oo8#?Yt38Biwwe+L=0-_ai`GMg#2*oCpRh`l2Ki)E83X47n^0L z_FH~XVwaeKLH(bAl93+fX*`53SQonrVz@Aqy_0z8Grx4WKo1leaA+X zT4`j?voPiw6^E?kD9W`vt;_#_e`@lEqP#`bjxWj205Ht%+e2*y8;!6TDpXZT*I1Qc z5(=$2E2Ypwv>+vkwzYYyxqP>)6WP1X8O^2=B)&%iW1wZ)vUUV%=37wU4Ga61CxG8= zQ#Ai*xg9E;zCyQGM28mu?KV-a0Zch76D;s^Tu9Vj5@nt=YF0q8PtvCPi9zqQar=Hr zC*v~G4UkeO0*T@W8M!Rg)nd?cJ3sc7(Na3Pz+6IaGVJD_-Bj`4$NT9Uvbk(rjgBa< z#-OKGl9@~>Bwd)(u%|*OmAAnGZ3k+%ax_)uq>o0B@J30Mc_d>2iCDtJqjQ5<$=C~X-aZ+DcXDHs=4~rPTbwPwS zV7QG+lcCt0{-t&=uDDea!vjg~t8F3kvXo^oC3S&L^AhB`{HBHd=tGGU!5v4d8z>Iw zi&8tZMWZ-`?rOf$iKq^lPL?ly1t{mb0#PTTQn~R6vhn8tPKgQM&woH6{mUieDso)U z($X$1T`QLM8&WC&)-jFAqf8h%$vBJBc4-+OhSrxhVc9@7*7I(%v-X_%3-!CEo$h^r zET31h5vM5B;AxnwaM}-vk^rt@8*v#IG=2tczV$|U*9EgQq@x8Vj6I7dQTG-x@B9|y za%vzz8YhJeSJqOV+Sciyo>F#7L&dgFQ=gI;&7S(hQNGynK^W+hNe2IuN{3HB9WuuF z)b8$Uo}=8_B`p{EaazWp(M7G(P-*&t`ZL+0Md(ITmxdlJf(FR25bz zn+;vQ>k|tYGN52_Ai&S~EU|)?aP=@W4ydx-Pzbn2@)VV&7n_DLpr(2;gAFXZL_5MV zh>Aimdi0c7sJbQ> z#@)}RoHOBEoS&uK@gRN*qw?tS?ks%y(4RKLtlyR;j8B zU%F!*VI;PvL9OX+#nCufVez6SNAUKY3M};HCx`0fuJ-f2@&G|VzQ4SD+=IRWdf(i? zgwjukaxbhy70S5`EXIy>BeXSb^mtreE_&^yVuusu%`)s7R+1))`Cp~CsK55_b>K^2 zHa#>5n2N+cMy2&tcA9>Ar^m2NXbu&pm*dZG+tuM&xL?<|zlVuXMl&>H`-Td%kDDh1 zz8t+E(N>HYZs~f6cq7)h?B<3`)n6p8b*&-e^h6mx#7Q}ObpMNV^`=1(_vw`qj$k#s z&*a=6V{dCEOB`F#N8{g}yVa)e8JcB-fggTi5&UP`=Nz<;zRm-q&lC0Vn-q$2`(Jv_ z+To4B2d>R?CZ=-BZ&FWx|jD2lbPq9qVH>L{?>h{q%{N$8dx~uU~T)9~G zhu5hwZ!49ZHfxe_{?msMtm-B6Er;*LICRXD}F;33b@V5Yh;3Uhy{04=ot0 z!X;i1eLe1Xh=fQhV?|^yeuJvKa{lWj_Y5l0(&TahT{HMz%;SSm9Q{oGtw1%$x#(mWy%8?V`E~JS0;2nGgUc~ z`eQeD28iw3aFUs8UO$X`y+NZ2G38@FNkIlqc0LZQfVFU|flL5){keuSU8vi6UW_{L zg1%HfE5}6Rxiu)v$a}zp2>e;F%_RE$!3BaTuE=z!qd_BT2-#T{(&lafU#>v1*x8po zW<9QHu&yy9Za}NTrWM=r6LYiiomDv`JfUsze-9U!Q09#;05#;`Ywq#ZF$Q;0=Pul>j2bbC% z`8nvgX7-cRd$YSmc)K4==3GnQSo+KLEYWghF?rmJl=P`Q>pV|Q1`eJyz@k;+G}L7w zhTnF+?q{-}q5ew=sHUZY6sZQXa0zL>+GLN3MjF1*4AhUEn;MI?Ak1dx`AAW#YytK7 z-}do-^wer;f5g`C<&=IZg>EBBAjECj6Udtp3UwNzyb!7IIMuqZmw3O^-tTBY7=Q>kGo-M&uQj_$mE+P&X|!$E#3H@&lY-Bqr`iu z+hi`n8$GKIt*BG`v^nKQ*g0v`O=?MmOfi(B?=cL_A&>UgQ zLdTV-JjDcB`3ec1K`=xGLI`(i;m!hvkUQ(azljme6igB^%PY{P-N0bWV797r+-z{t z4jj%?4Rx}QosN0yQ(bI4<=4$q z#I(kEeN_SgBxqoMo0D}(VAp$iE?^bj7vGaf#EKqB_wD zmK(@cozSeDlpyg}*Yj`}5_cGgD*Yw)iTtPTko zLKWY@Rjuu0?R}+ea$5}+=5`Y13Ym5aPu3>r_vnqf>^VUpg7~#OOi5SzDuG=+y~`TN(}>qSb>Z9P?{1vx3Lvi*HBadpC3x=kG~r#2x9}< z{-J1*ix<^%x`F^&Q{iqf(i0CaPCJ9AOB}iQ^u6*eQC_2%B6Y>|jumAsPO{_FcN#HE z!0uYe-A5`KC?qWiVJx9XqD#!#5B57nuy=72r0_(8=Zt=PZRK-uBrP$lNL%6F+epDE ztR#}nOj6YlfQA6%a7#82H~rC(87A>``+>BUX*ky&jU@_-R1^Gq`M(>&rDczp|7qL}R@ZoL2PqU9e1!d=t~}yC2tNuJgg+eVvcrJu z+U)V%%vnWZ;N9>P>k041NcT^?Cx5AQsn$|M+K~SnH+Nek?NJ6&oUM6Z9N5b#`0d~J zqH#uIO3=d~o1{@0 z8g#KbLBRyzUEtJMaw_}}{EVm^e}$K6DhR}mlIq-M5UeCfHi)qb@|q`!+ZKN>AzIfy zUAH_rL9tXNF(Ry9@HjX6S8mw(S9U6ETUa{y(8x*N8N^KoV+Oj!1PxXdwoyts|eW*pt6iM_&l!pzW*c+D7AjYz`HTU}kj7HdKAg2Oo3f}I`& zb@VcgajcN_WaEUW&7$(qjmB{OkD~Bp44k=tp^P7nUYWT=9o>8!M7g zbPyMjIpb|~fCl=Z%}a3(>y~{ktSd*S#LMdXJKD~Ng^k4a{tA8Nbe(R4;uD`~##A__ z?m`^0zr>1@F1CAS+4B4+f!|z(CFU-2et=pIvPeU)#HHPHv?^Z^Qt~sZ`TRgMjMX4T zRcN%GyW_bJA{?kl(As$v{&S#>7cqQ53tq=Xz;fKj0y_cKl_H&ciSo2o#9{P{GDH)+TUvaKpVN|V|s7wSgLAhjrxwat>*##HA!t3R0g#o9t;5h4AR*5F^X&P zk(SaN@%biD<7o~rkha$aX4($SSk)+f3DjOs#P~Ezede9yzYksB^ zn|jXzF49zJe3ZWKiqYjwv~TufTLs77*Zq@RSDTk+0m zlsqL>GN-sT^b2yEN1fpqA+C5S3(9kM$_q*|X-^mn0`mn&)J>ZYo-yz!+X*`Ks{05C zkw`az&)lD=cVMU3KxOKu#BL=j9$;56sx@{G1?w*sm1fI2Ax z&RryjRnj^Pmp2A-)Rv>gskq9>!F4sqCx`}2U0n=`YRVke7@3L=D4qg&IhhqM{~JG+2Ll*aIi6Bf!W3xqycq&BrL$afArrN4HH zj(Evo3@XYKxt&o=$Xc_S%Kl|DmRGbk5P}%obB6>VbX_#Tc*th)vTFbSFb1c#RA#Uj zm|?{>(GJVil=u34yIkg}9ugXxrHnaF7=iKhLyOgc`6m3HKh31V?bsL_K;z}w0uYP} zh!fIjJa^vrkZxqo!_vSGv5JGXv`lOuPID^U)bJw1?mmk!C6yOGD$AF!;ChQ(T{rbR3_Hd#yq4M86FgH9ln0kDb=FLr4W5zP-FMo6FX?h*ir@Aq+O^nvY z^@876>sZjWA@1|{Mn3u`vstia^7%@nbQSCveA5Y7xK(O9j|CV=OhV3cu9h#rD0KrS+ z(1?zW!7*f=Dv7Ly_eqQLH0S2ySB<>MkpNbM`keg4VNI*A)dsq>Xz9yP!p0M918cDL$7 z4y|7NHiExtj^?2~liz`1mPbaPvu_X8M1w!97d+0=BtFR!!p0i!SV`qOLk-<-nkKFU zBKdq&-M=_|zRtx=hDSswfnkGn?iXLSgrSLFTUOQ?nmy3fbH=VVl8duC_3p{&_U+FO z*T@PzS2al0Cnjh2Y z>QQ*!*r=Usbh$qsdQC=W>8YceBRN~u!C$r>uwW04nhP@DG)A6{LVPY@T`t-o@5ZC- zWk`i?imetUVIgTL9mM42reR3`41_Hrc_NcJ}9`L z6?2Uj@Z$41;3T;oHcalcJkzr%9p79n3yX?kNot#~0mLw6|E?wCB4bL`BjEHh3EI1I+~g&M9~R0> zU7d&3jNNUpe6)f8=nWX>D4Rceg*G-jqhX|)E;SZFfCc4s5B#kNO}6V6VW{>iQ!77% z7Gl>_@(Ylr*FRY0^{U5S(#277lAcUv-${c~Wat&mfQ!^?kSGHq45@Yds9l;@ms0kY_lMQ zr0R}>qj#!G>R4KhlqcOA^E6tcX5mwy000hxcJg7EnpR8|Z2HF=&f7}N`JF($-3SS@ zNh2_ShcvAZv+J(JC2IIknyq(#&-X&}vQjNGCe;{};^#R%FA@`xc^~-G+Vb{67e>@H zv_%rH?H#7o`0&RZ&ksR3J`kD>Mp=!(Whj@>Q+Rs!K{q&HuoF<{+cD86K5h# z=XVLvcsv81?7xKd03DKgDprLXcd+`p0oeU_N?LKl?76>(tUgR7joB5@mQLgifI;ns z*{dSm91|hS;IHX&9N!3+&pX4NyD0iVXT%SkolY@`P+SLb$8 zM;*HGp22U6SyO#<2?Uvw)5VYQ5jpCR`bKN18Evo}ZRu*ZE_kuX|A46`L}H zZzxiHjyfDM)KeKQV2YqG%twPShOLvPbzU}C9kxCN7!<-YW0bO|9&tIM^fCm|znK@N zl5Dpu`p7o}XpyxDp&#+N523dxBex=o9?}NoSkhXMv(K|xcisB|WSKJj@N5TjHtB_j zG_)18JDh7kxi-YA2FoJW_D>M^#t;{&`cTQqemML`<)96nld0=B+flX-_|s4ThJxFK zhOK@d@njsJv6650EZ{g<@nRM2wqAHIK1}*aVkKBIgQD*5nvUG!nMg}l**098O%*(uwy6sYU*h(k=(+@cFu)4T;agdMyfTiksLPJGjd1s+~{JzB&BxyC<&- z4YWRTH1AY92$%jDV)h1yVDzB>_DH9rv{6j$?%KnOy(PJ3e|nU0{DaH!XUTph*EZ}f zR9sT=>r&@(Qwa|xw}5KJRVB{thkKOw9R1m^qo`ZZvZ7Af)8^_YU)0R1$fCT;5uR}D zUfXrK@Qq2wqgVsv@|LS;KIuUd8(~q)a^R>gbkKXDbLeNsDx@J)7G;esd?&*vj^eb> z$2{~$<3;MXmGdn(aBi@hD5uG4fbo_GqF}uz2CKBHk=h{DQg1iqNCo>wqYluI70i5m zqwL!rQ-;NBna>*TRu7?jjw`};<1(vjgde%&H!zza5Oty1$+5hT zDRaN|xk`8Q_PIlD^Hb6IMGsJjcn5LV=_S;ga9B1Sx|#Xt(}3G9uP^xF7eC)|@@_Mn zYe!H}+T(aCR$(H!&YU)Wjt@FR#4AXb!oDW4IVdfox>o;{|IhQk|8xIWY~5N0@O%)f zYI-85#98%V(a|t>;o0Z5S&~U_x>~rfL6u9P^ve&HHUt*$#p9JWMUL(F_vtZl*WSR? zX8#UK9m>CjTNRp-$v0E0%-2k}8|S?|5iLxLc4FKY`}yAsxC>hCl97Eo1IaJC=ojD_ z9op|l2$J$Q&1)LqzB}3}_P*}`g-N~eJTFtz94P`4C(jr`0Sv?L3BJcI2@gZ!^SEl* zrlf}ZWqQP5Km4yQ*z?m~H@Y78zhi(G=e=YyeY!$SH)Xb<(JMK>oNhwXwKk`C8}~)a z2SkT}B5o|znxxI`%EnUApEb=D89vm6wCbM&voQjB>Xvq~1k}!9LYPmQ3cx^c|Enpz z)gzh;P^y_c4Gwh1XF-4yq z^x|f4hp{eIuWw4lTQqEpVnDkyWMyin=%^uQ&9e)|j(*d&XSf;XFA5&LEt5T34a5MW zq){fsY4wH*5%V-gw0$^*wm@nR-i^u6T*op$KKS_TEx{cP7Enm;SiYj2<7B6m(Am$oygo} zVuP3Ti)E8ne6W-2twGxHi0(RXk7Rf3V=hPxg0B3FG{mZ&Elc`4GsH3rl>91Ah$n@? zs-2}ywu!a@V$~hRlhdLgQQd6(^1P7GCxSQTH7UGeQG_Wz=#?}CaV?;yaP6m&G*k15 za&0eAeTbB(i7mB3v+CcJ z6;i6uLQzQ;NPeyw|ZVeVRNSOkiq;Pe91cs%+>zoU&k30)08X*R5a zPoG@zyX0s!yM?oLTshA8>_OsOhrBID?A)L1*hv!&GRaZYV7yf%FA3SKCKS}(JsoDf zM8TnjDW<)9o^e~gF#%X=5u?=pjcPHi^r~wBd(^3l`PNQYm9QbjB^y*>g8Y7)ONS~j(kzD_yDV8uS2{Q2| z#!og!g&pAtEd^(KAi!(9JNK$a2IkYG2$SQBEdB{u!T2{r@v46J$rASnEU02UOWI+x zdza1q$En3lqc~5aXFzfXdoFRzrom3CjQh0hm~N@s=}4t122&0pi4}M6tf4vZ=`Vqz zlHO3B>h~Z~XU)c>_NdzvJeWj%uQ*Mx*lJ85C=hbi_$KJO0nf#lJ>MM4mOmc-&3N+){TZ=PT=)Y8Nl?m`G6Zf z&X>qU7|VCr>N{Uvh5!(FYqbJxc2t!^RRT_|CGw@9bM(;KxzX0xGGxP}vgM7{ z)TGq~sFtGGvvN~F-~do*OB}c9h!slO!nk>RR2C*#dYVq&av+ z>$cEqovCIZ5LyYqAz_kWL@vy8de^0P>6Br~$)bCMzYjlhM{wA~2%`o7&c|x_GY6xq zC*u;XCle!3um+%{0Tp?!fCsETkcu^eCKrL_U4CK+JgGe0maEMSY_^l=)0=fot|Jfhgu1}sn zHRM*mIOq-S>0*iGcJsdxcr-OM1RW`jA95^_gyjdBPbo;rAm?`wG?PY-o56vqCawxG z<;KeRKHoz=Xye>fUpjlt6+t7ZY%1%2lR}f7GY4D5slM4X04|5T`ZCcj0c(4;Y<_bC za%C6k7uLzv88=<+f>M0bG-l;woF5;Fy=||`7c+Fv z|6F#d&KT}nL>s@>ojv+2h{j|A*F1Rj%8z*rS`J@g};;A5d`e2)FPb9=!Ev82!iGYyg zir20$=*ZOK73od1ync7yZ88kqzN7QF68AE6(_ai>E-)`eqpal=K~uE1ukROVp#3G( z)Gi5$w4^m`0XD~0g@}igxq1emAXbqUF=EZr5(tD4*$M+JFr@@#jdmeZz}XO6Iir#! zS%e?3%yQXY6`m@Admh9Q6L$h`*>4h+xhrFV9>onkckP=vWIy9ul8CmfR5W0{SBz2X zOm5dtPTsC%4d(w4d!iJb?8;{mudk@VCu9Qzf7D+G=twAJ{FKAtwqUAJ3&d_G-x+P@ z8TTjA?wwx)GvF3rBMC5{O%u~3lcD^hr zI*pHeFEu)ZLphKyOK#)kXw@Y+T70!gl{_L|YoU-A#YEW_{RHrOV9-gY7|Kye&)iqc zA;{30+0=5wcd@N3hu3E|*QQ|tIB@xh@n(I`B^xgRU{(hO+rL_G$~pS zBz)QcEP4*HsP3>M(fa=JOB&fK;aaNMa=r^3vaTVD&v$>uP3qK?Nv&fVW6@ZmnOtD} zahfiSuwGRcAO&G5yLa23MF zCm0P9hHPa%B$eniTyoB<`U2GZlaDcRP^zb}6m&?&{inC>cRu6rh%)o4e_vwR|x6W1ZEoTmj=xZCx_chKOaVBcqfs0@qz`vn2e3aLmI3EPk6H1stzDUqU zzGH_lTb7Zt4{fSi-VNM1k#4bG=sKLFD#B>yuintLWNX{?yyau$!Mza(IcztZ3QFuA z2Ao_bKLtt}#Wym`-R+b2BI!Yz912?^ik18doS|}ym*)DT#1#Dd%Ync#%3~%^QQ!)q@fZ2fQSbf#raT&lbn}syO<78f0z^8@Hie- zBoy}*7X>0~W!#6fNUWEprGZb%7jA??r;x$t&9-=@m*$c#v8A}Xo5`Lvhu?ABnpm5H zMF47pZX`rqsJtGaTXpC)fSI}0i-WMTtHc;Ui#ql~wJ*ylIDy9=4_PqWiT?=7A4XS)b$bNZz&{ zqp^SSjBmUugh4~etm@7awO=e?jX|;1mN9!iOE|Ax*9pi$?a4HlS|#H+<3fWqYUboF3I?#)JB4?N{?O$%gwiww>BZKoeQ6x;E_JSJ>ahbN@1bRl)%!I|Ip$m9o9c&) zFaueZVvV$1i9)AvrQ&zsr}M|uo3IFa4F)XjnZByk{{&0KB9bDo(nw}j@5Z@{dYli zM_AVAF2c?XVQib8<{N3of2YmqSEQei-x9CmNc1v z0dryUgO%ZBK5hZ*Zt0TRFEp|NzZ z`}_#U5fyqei|R;Q#l&03b5pf!PdG*ij5X5!x>4V}V~3L7DO)65ODHkcHgYwWgF4jW z6oA*WbLj6{^i=ZMBLo&&)|2S&#RwCLXUu}&_^KRY9Mnx#X(4mv1nk}dZ*hlpqM{38 zi*5V1e6Fuci;~FYdDG`-RPKA26Se=>2RV74f4`ZH9>L1q>|sgz`%&rQ`_;XPvK{rr zRRI;?>qBtZ4togWr-Flyu`3VYD0cDH|C($$+UQfM+~O|Mb2`!p+1GUynd51P>DmJN z)P|td!s->Aq5&6Ch(7R=pAxTlU9?yNC zM3&0RiU2moj0s<1e2aUdnYMjD(gDJ2y?8sm9t_-zJcMX1z~god8}W3Ql_q#)8Xi3X zW}&Dn@#u>ohO6VepER1Q65XVE^rD zM6H6s3b)|xWJFBMvp#uKUw(4Y`DKbX4AmnX?Xvy!`BT3DN)Q~bZdL-fZUYglKku>4 zOjEbI50GkF2tMcscjVxSNth83rJOm-TR=~<`Ihmo;mH@UX^!`P#_%pY`FGuaJ@m(p zV8Nn;RqPh=YWU|~M_{y5r~vP_#M-qD8#$-OPxv|3QlX_=gj;giJKumWTrc=x9k1a`mCJ zF=XpTW#G?+Z285B7{*vY3+pKeDEa>dvyD>^puP>S(5w;s!|s6@Jhz;TGq~lb*6^?K zD06g?;I2$ogi*dW>}gXKEiyWiVqV&eXI*n)=z3rfb%6f=Idx-&6Hih_F0{{RcU|YD z&j3+xTF;Kg>lz|TM@aE~$agtuz|h0tP6tUR;eq?x)H*1&P5dYl2!s*oD-Q@ajGzHJmgv;7|Q3 z4c4J==t<%&qX1(X);Xtmg?P!NX)M)U zdMRM%Si677)QQ zduv^S^9bJY-A3*0#qUl#O=maGl~AvnOFwnp9ud~)-1)|V@~)|AuOW6&=iVViNE9Zm zQL9Os89|>-GY7&~$QK@BjeVr86A z+ajcNqZz7tmR60QW^iBoznR@bCgu9uCVS!>4wpjGX3Gb`?U9X3ng9ZgrQ!N{iEZM$F1%-QLlhGat97s{eG?lNeKEYU*wh$oxAfj_;x@7f(TlB81 zzD1mX+B zp+J%l{fUrB?hGSR=p-+;?pRr-qW359vL+o4Bb)$UJp`9mJ0p>DMGpbnO55t&k0%9P zuDF52agp#rFrEOCbTuXd;9*fQPrPZQQ2_)2q93F9$!Ngq?ZI|3YM1KdkK zI7#-4PMP!S+&c2t9rOb$81L-q*WhV(cUh zaGxcF4SS=#pDe45zR~wWd9?nujcQ)F1wq6$4-SihCw5-e`l51|m{uy#yo5L3p&}lM z-NTioXZVld3I2>hI9m9>!`N*D#eUDR?yj{YRuvUDM9ROFa-99ww3CBdqYPF`k^6`f zeWWPoRI6q7NCa}7(820B70itTv;?{P((&T%v$e-p3?6j?<^lScHvd; zOG}sKzod<68>LydueL>rpB859{@c}#>3N#8P>qwwtQUp6CFy8YX4jD(BQ{sBVre#f zofWZ%l*FyiAc3?4q|hKkT?<~|N`QTwQWCuQ@+GtnEwU{F9}U|fpZ~Z|85GOEz$~-` zHnfs+t>XgViXX2!P_bK{Sul6E_>2NUOB418jO`s&zv0SbnN+nKRqlxG+gl2Jn1YsauChP=cSLl3EOblJqohbgcLQl1{xl}!_?T2rfAKB1v z+o=(jPI3u4P+oKa?5u?g)MxqU0qy2-zpoL7g~t`ck0evyZ!5Sc_I%e;FV=>(`0|6w zEx+zgGA4Iug1-tD|4q-HyqS$`w<)8k@L22|jw>25vrEh(3-*dQDqu*I`b`?5uB!G5 znD^O`()rXW52RD^|6ch23_D$4+VsOkr@t9>q4J1=mvq$DePHt7J zL_en9qR&B58y;LW>R3r9s1wyf%ov;RbPer0N`iG^4-pH+q$ z8HWPkG!~s&4QC0xVBl=b?#dU2g4UZWk$dI!t3&)veAPf*PY)Mh{?}dm5Z+Bc}begoz0`lCB7T%Ztq-h z4SCcSDq)}3Ds)ZWAi_b->n^jD?+s97To%hjhpv-|cNnqZuCoWia@f)mZ(CEPEO(be<$P`I-Rn8iT=cK~5C8-MI~3C;N)O%z<{F1vel{ zdg%E&t^Vb*{mtBH7UpKYT(@lsCirZ^ST=U@W3>=S?(%RtuxbW*`O~pIU8Z97CY_*) zkYwyz^o9pA0QszZl>$+-7q$90EoInW&37Xy4^ve zAo>P89eR3oQ_|$T&+O;}PZbk~x@~>7El6f44ijdb+b&ZtMWIr~vD!O=qA!mIlXIYj zGH##(TE6+0CPr|$Bd-PPF`=Fy)6B%f3kSlpNg|VF;qqhZXbb!7sLcn+k05n-!ztf2QI$|;90_%BhbEu`MJ zG1KBA_+7}zZQOlqS;lU4(-#XipQ@So2b-AxlToL+j-+sK<2}aJe{J}h-ujSIG+eXZa}-nbYgl|^r~X6$A)k&s{T$G}W036l zcTq!kZ98s>kHT~{6xR(iq(r8xIa+yVxW$Q5AZ;r{5JxsUZ&L#Rj+{I{=ycft@_D8< zdsi{t%*Frju$Hge<-zgNsjH;C#jZViOR*0I!woMG)7vh|xoy0#=3oFHwuUF%xiz47 zP(&N>p=8n@$q_2zBvAg!gJYW?^AT>&C2qk~EzhmcsH=iCn$8#f(@ z{@l>CjYa8!+V{E+t(7OlxDib&l8CTzL#*#VygRGr#}|W&W*H2 z9@FNd_mE8||9-32(!_g{rl9}{iQFj#+{ibQ&pUe) z>FUwfvLCOnKHAE?R^O~;nah{U^LhKvbYLEm9JK$|PH35I8@Enj)cb#y-zL_Ca3ihD zZc~;)(YZ!H*PtCf1pR~jc)ZL3nRmzN6#a2X<8SV7qQ@V#>s?Dy5lUS*qvbI@|2g7E zwpxQ-1)zMghg=^M^zY>RmX}(+BSphPSKl5bjHyuP&!52#A-y9uIiLc~ICUnDT=2ao zlJ(%WJ|p@yfMxHd$BYUNj6$dB$bSVwlkn~oj?Diqd=Pv>%6H9#`d(Y_Xz@}1ac{6~ zYe^dZPcj7(DX~X$h3>4_EikO5jeARd2JmAbr;5lzYyLZ=E9krSVWix7()Xyak2&94 z=Lz>ihJEYVn*@MvaK~snV&{<5^G{&WhR~CuxF7m$8Tp5Z!$x5R|2+G10Y2yNf6F({ zs(V+WJTFh3p)^MitbrK>JyR{Dd@l$h{@=j@FZx*U@?2E&fR4=T63+5 zna#3hXUp4`WgX}<%SKZ^akh-zyqlQ+EwT~HG5~UV1O&pn!`geeIo#d?vAsGA9f%f2 z2hoV!Cvl*ybf2%UReIW?b$vn!&o=ebK$eJQ5v!x)7cDdAQCm0}kSfNE2DVG95=%zh z14xG0t?Ia-kIY_MaU+rJ3r$&NZt0r?S*szv@(TW>F7)1s`GTi05Y1lMCBw%w$Qhtj}5QukpAJdE%6 zygqt;sn95Sp_&|z%tyW$U!t}<3&9-Zs*`C6E3RJCW=1p8mb!9rjw}X_CRKd>J!Dm} zfaj&qG29_)yL$2tGfQBbgpxTE-9LirOc6R2!%fR4I=G#RwLUir>V>QE2;@>QbAnkv zPNsPY;FVqfO;6JesjKL7X@c|+@nPj;v}wVp`ap&V-k4ilFi35|q3C>_g8v(~qHUG; z5u)NODPH--kSL0gWb$G=DUhfj6onf?QK(3C2gFq4wV(6)!U(FnsT4;s@b}ZjdI6NwXe3Ot4W10`0coO zH&NAu1!Cg4$Fv^{9z#G_rhr(T96q>e`Y*=%6CokSn6npF2?kM} z`~w??6VtcI_~)uS6CN@=M&=6z%n`Fq&C-hZqA%8w?LMo<6!HQ7%s`F6UI5YLk}Q4v zE0-WG?b(0ra>#QJx5t>#&rFZ~_Z0JQZuhr8_!P1TZ@Ld>ba#HWr+GuNr`KVaks`cq z@*!rf4>@(Yu~VZ|T%vvCn|64yTXUZUu@jHYiX@SL@I=Qz+Usj}v+#Tp4h`=rH&6!z z>3He!KS!mu%}Wq_8<5t=oKLKN1(Mfm?_^ze1iaEi4KpuHS<>LmQR3)E3ouwKVtTqG z3EdBsnIq*w6wVe4sS5RUSfOM3osyywV(|VHqt&)(UwD3Zz%+$V0$hDLiuAPWvo_Gg zl@`(j^GNZGY7!NY&n4o->6js^V}Hw%>mEVcuw~4Kc@^La+JI9laPqjuqEfSJO#|RV z#(i-v57<-z9vn8xZl!%TLYSCllElQ`bknzFK_~3f!_y=?w3u&tgln;XuCjOkW&saZ zdhDZjDRLZO4yHIzQsB$=&Nok-xW!Y_&uG&JgTOPx1*flRz6fN|ey4>By(G^qC0ERH z0xET5D)trNm2)_WDQtxA6jxk!zck)?D%=H&B!pjL;od@@RpocQsh95Vg#l!+k;ib= zZjBb+ppd~N=8}^oQm&}Fw)bzvYx3w{RbDsoch?r?0~d>?C0GGm`}cn1no?RlvAF3q ziY^IAsw?oO7SB_g5t`@Ck@CQB=CAQ|-nfF7L44vd)qy;x zrti18iKdsybSHGqj-o6300J^z*+VRZgtNnyO;xLHndu}6q++uECp1n5a`%OQ!J0Z4 zew6>~=1N$4HB*2@J12LbRiB(QHXLAGQd(cy_26ciVCbU~g}DbDr{M`T{Z2)kS^QUp z@pKjgGV$icpjAxFc17RzuieuGHy=+`;^$R-Sw&-%_t8zoUvtVNzudyzJ;KzqOR_I^ z%6MWmLE$&WN`;St0sJ!;W@qLmDU0T|99L0An@WOdXK4?;s5a$ zc03jw8YoHsRr+no2zw|@u0JqMj9Z^0q%bthl$L{dBzP~!!UfuLYLT3d8;iM|;q(W5 z*9}SJQ~$$&>)^GhY;-$$vH@QBKV$+qud7bH#%}zBx88zA;wQ9#_ZtL$W)%AY3q-P8 z*_?!Tqi(067)o4Eaq za+28prbF#e1;uv#lVCGa_^@++13C8q>syr3#d?XDMGBS@-kghl95i}?$LdNycQBeu9l1y1d^63iVK1)R zO@qNY>6shHGRJ{Vu)nju?oY;UfGkH7z6r@xcM|51^hW06Ps?-97fvkz8f;Oi*|m`- z)VdpJ1sXK@&K;;xGdo5IC;Ria@htT-8T{8BG1&KbKy)H(?e4P3mwq1|4bUop)}=?r zyTSS8xhpU#f zA)TTy?jV4J?{5@z1=le*0%_F_&*)IHzTIoTAWSBVG^75~#DfZ`1~L_@3%%&>cMk~p zr`h!22`H_Ub#!vrYkQ^41E%b9C)1X_>CW-@&4T`pA)W}5{L&XpD13m(x9r)Rq}K<@ z75x}_Cn?%B*Wdcj<>P0?l7u(ugrPPd>&3kD>nT!OnMCr6N{9H@i>Ll*E#SK0Bk9Ls zC2E7z-8Z?nlY)z5?@wJ`Ror5Aj@2_b^GLIxVVl~^FSXH|X__=APjajdMNf*B{oF^o zou!~R(4EGB(a5FPo}GMWT&Y+DeBA9O2YhrFdc2(-RYe8scFH7knBD7LoUC1)nO27- z@|Q!`Ak9+106y0-)8qe;M&{nmI!cvfry5T68bQ=Ps7Ix*&oZ?4ZW*l)KKuv%CHz@> zs=Z;@D^9EdM4 zScLPz?)n$oncRza+tht2XtpO0y~=|%tFxi$+si{M&Sn2g1eOz31x*?u@Fbf1nl=`) zd?7%8Inb#iRIoUkE?wq96nEI9PrecLNc2mwI33z~Uk-DCEA0!mD=WZ0-8zQGk7(nH zdb}g@L&e839wAL3=}6Ka`d2;ALw&+(^=l|zZvJ`|L%H#ryr1-6pGJRWb}i0JT4ZBE zK0O$1*fkrl?F+m&PZh3!u5h!Gj`xvIQ^|6}B+33XAr8k7w+Kmbh*eF2l4lo zd88aaE!Wixd9+HM8GrW>aJYX3a*)Y7{tL4e%5-|$r;afU6U z{KCpd{|_cBOXdYiwRJo;+XBebY4#A@v}lVm!z;RiB`E2CKSdD(VB{4~%;Kqjq5DOm zke3Ay7s+r;o`m7y#zG4=?vM}zhrE8wQEx+U-RN|xkFGQ5xFdgAgE7S%&fC|-(>FR+ zgqVsMxPNU06auI!GPD?N#MKm{TM5y>RXc$xf)b@3!Q!YKx52QX0ZE>*{2(KeN{@ArGcq$%Lz6F#!gYW^O2Aj(X)Ri}P1 z#LRGoDQWIf-?v1OduEL6MV*S2;++N7Fd1ZR>giy$p0mz5C6x;zc6EZ0o(tXw&j~_D} za!?5l*F<4>6RpP|yQ;ZO&wrTvQxqRO#Ucin(e7pc^2(=X=&X?RLAPx2dG8I5UU98C^PEp+uWIQZQ9uT>ZnC2Xe@ zk?R(TIUHD#7#G1dZ)Na1VP4O?;>Uda7monGi5&}^kv|8?)G48^QwHHDb9|5tuYB>yH%NVO%xsUv7#vN`v&oBJrtpla~9ZPUtARW9#mB>gU$G5B<}M%Ws=h8(Lw-OM}m8 zNLzmeNisk&d*HbwcGk9UniqJBY`i|)>k;i=BSZw0_}5Y}j~(GAeN;*2r?y6L7xyH# zWa&`l1nRR_GA_r?$gx$AZ0aC;$70@7$At9mi@Bfl)O-*vUR!Xij|oZVC_$u} zqAZCWe?gO*+y%62t~BIx`YEODWJP zJ@;?;!$vE%jVC4$exZQ%<4}Z_aodiS$Ot)3f1ZBO9Puo7NTlH{Q<{w{WFmi+o|zM@ z#gsnLx-HiKJQcGOnK~qAn&L^w7q72ZsQ=sA{6nlIat(b2aQdC(2o4^0be98cZSc!2 z%7gubUH%eJ#HP|ogiH*F2mKO|JML;lbF2AtmziFA-RqafTqO@%J0Wv9W4W2WTkYZ_ zAXZ@oMIf?w{~h=2{PZoD^09J6W^N4}m(zsAS&eK&>WMn)xW8*v53%3n zj0KUZ+n-@0|fCuEoqV^Fa7P6pn**o?TIN`oySOv^MW^rB;r_-gKB%NrE2D79g zMb4Sn_b$v*^@_o%bbG7yPal|*BLI$I=D%6<#}rJ{GBB<48&dmqz-;xV1S$o~(95a2 z+{PMj*#I5JtBof{shVgaEO|PY;<`Cn&87Q@2z!)kNq`*@is~ZZUBL~_6)>4M>MoU~ zo9Twcqxa9}uQfDi+q1eqPS86jIb}3gjh?*mEc&f(YCSdLr{uJezjm?V^d0teR}Wi` z&V%b@LA5|R(!^D(4alZ>CX$x~A4y}lC2;lguE5f0`^P^(K2hJs-NE5=iV|BfVGY^})t?%O9Bf2Lis6bGa7& zHK5R2Cg+9&i0|^iQ=QUx@6y{?U$RE&3j^sw@=MNm*f-J<$fAz}tssrwn<~9tuEO4w zYJNHGyxL{|J?Lv*x!&2Qd}xyT*A2pTnOkNK;VR6c@Qe5MavQnZ@Bz8c^obFp>2xD` z#pieKD2H#)6}_iNVXWVUk4ocn!P)RAXvBJ5k0VYlQ8eixoHtKT$BLtWgv%;NM9F&tNDGn zZ=WQ_DjLS&fRqQ6j5wA0OvZILsfr5NL&SUyP4}Q^xF144hxB`yNIU{}v=Q)Rs03Xa zT7ImuYA!JHz5=O?h;x4flN&l1B!xbq;j~S$HXu%t`4IXd{RqocSs4oE$*$k!kCK_N zy%T*h|0vvWPl3%Ocz}CpZ4oI%S;?Bp<$8zh&QH{NNJlP~v&aqGHD#znNN8DoLLz=8 zcwai`7bGZn_x|m-?3^qcDj3gL4`4l|@ZH|)@8DTwp@|FlicEe=I ziS9=kHs%N5yrD*MmPgWM18wKKI|4QpKY`h)?*3k-*Cne*z>fuY+=TW)1&j1104_S_ z0+hj6iVQnyQi?lpD(%H&w6Zkv+vCG%>CVhPrm;yrvv&-YKmt%2_0QgDtCUD&`Ne_+3aqy(3 zMXq`kT14Z;##`b3iEYd!jUU(}2Q+4h#Pq;~ z*}7d6Q|I7_LSKlW@7(j!apZ4k^*jDIZ4VTODE0o6KgM2c}*~h8TeMdsn!ZbiG3>nrHpC3zdJ3q?!#5v?r z<>$+)kchv;`NqzUi@8@tiyNJEZxlHV4ANA%R%?SGE5aK(89 z>#Bl23_WSCd`mS&!59IQH>se_Z{ED3)cY6pu?@Le``HiJoVn)WM#oi8E8peaNVWfp zI=4LXoc2`FHFs@+gA)qK)d%D!o6F^FEWG*<1yf}P=}Y_;|A*d57a*c)2} z*0E)PM~DMYSoX4~JhF;KSMA3{rG>`}wlrNNJ<{tI&QFDt6DcX0#{{CTU+L5(MyJ=9Xh@M|{o@v)>7J@zAchNL3LVuYUICqm69vApGL&x{L zT(jh)p<@xt~B3tM(V3sV;Br z%%P0wuwimH$02c-i^Lu({$326S8Ye`5>p=GS!e|*WiVlOZYSq_^9nyUmb`yQU~@oc z2A@M@TV;Ama%3*@lI0a-t}rJ|I+leU^-uFIyM8g?t)pr*Fd_IH-vNcU-{M4Bmf*rl zJ#08AtGyj+#hBrYezp|<#DCtQ7=Tx(hm=S2X!n_I?P|ZpbXWa|S}!Ra)wG*cvpPeI zdoMkt%kMyxUCc(G*HYambGYBfqm?+#0>MJ7k;#$umObByj?$F5$6O}zqm$mz5VPX` z&YpLJV?=VZHXSC+GWEkKD>0m0Y3!TIPK#8Or_XjuMt2!X}qZt(>1U zw$)9NW#e5GrYA`x{yX12?ac}zi9@SVwW`9tMfUNVLG*Iz49g9^#Q?JrfbeD)PdTR3 z^^r1EeLy0YG0?Iu+?1@uHlIkPH`77fdAjB%(8HEl`wfAl<=?V3Lc}Be^jYjEO;znp zBEXnWP(LSCL%{XLF?VR!@(wF^X*Lu&U(F0C@?`KW56Qj{k+zWuk^zFU)%#pxYn6fW zInaPa1!<;I0V%D+(K1qFeD^0c5?_yoa}1X9^HOfI7J*8>fvch1ITk|pHq&`;S{$as zt~M7#H<2ruGIo}^U|_d(;|lf!=7xORzEl5C=blXW#&HmVclW-b%83WS=fx)rsle#n z9xa{^?b*I4XK%3xltW;lPLlySXoU|l@rxxG(Xk>VkF;Ubi|b$)vks;I2Zy{6IXz2I zqD6BkW3c$&-y#2|CBZ!Rx0!;CYyi@;s^Pk3O<}ms;J_%7UDC2d$X3>2Lyy~vE=m$l zyfs%O1m#ddc!$T5%1740mwyok-Bu>CwLF42ibeY0EoRy=K)FKDQM-V=h;9YO<PFl!``yrwEhjwgET`=UC8g(K zk7=(B*bG$X(HYW8xNw+;Q;e=Os3{o$96;__&6gl3OAr1is!GoU`^Q(d{T~42!@!3s&wb{jIP3LSThAhEnB7`jihQ&{!+ z?+41`bLvv_Z%-gbX*LqzijEl|+7bn08J04liOV!$zw@C9cM6pd>W!KdK3>n=P#PT} z!K%58U`Oq%k^&8wTcDp1Ov$kTb^tfT>Ln0NU4osLt2sVW)Qn} z80JxxI}Ty%>qcVA%zu>Zh?d|QM=m)g*7QJrtLYT;DxJjNh$ZZ@^XqwckY?(~t@O)8 zvQzeO7xZ&*o8+1gpKo3)FMn|yQs-0z0pysUgIX9cBJE)L$|OT7GiOTY9i8$d%j7C} z_S%zfcIW4z0bi#tA_?E`N-+3oX>Z)252{+Wj~B!s%s%G8KbR!-TS*bRnug*kgj#4% zN}HGcsP4<%RG%wG3}59eSn(~rI&b8=o5To!*CJ9;JDA@n_sR5dd0%#9T8PknB8(Lvpsu(*L?m?zILh0l9vV?)G(OG8=31Q+|7|*ywY`J<-qd9@sO}J3 z2a))fIpr)druHPK=VRehp5$8I{F5w%jkj<{v*$Oe9h%I}=ahrTN93!Fc;KEfUU<{e zg^12_sK|P}C~GvSf1b#W%e;3U76lYk3RmqyckIIm1^9z!%)+t$2?5=DaZ8dY&lv3% zQ{M{KXR{Gya84>th1G|-34=7(qcuU4CgjJ3+_<(IRmj^lDl=f&ah<|0 z9TofLw!yfXlG$;xzBEa)amaSQ7>+I-O1`4$newg{KfCax5cP^+S*9Q6mJ~s|B$|W; zul_ei+cA3q$34GgqLVy1XvC(1mC$4o6d3KF7{lgiWT~2RtHG(@?-&eEkFusfkzZkw z9X)g`i=gY1nI;Lf)zwKh4bmy$V&*(sRu4m_ED3#86-VZnU~Sen{^eBuJMUB(+W)yj zPzty#;a52O=WH$Z|AxKz;QG-*G%}@oZ^;noZ9G@>lYIMVirUI#C45iMi1K|hIMeT| zrM$iez@-J6fr1eQL{CH)<@!UuS+sldq5vV6jSfTn=j_v;`jf&C-DR=yx6LH}j81cf zocKTIzH0^x=|c5(vEr~7)iW|+p$9t8(v5-`7m=9%d&TW{11!W>7x2HLSW}!6{J?+3 zXs;s`ZhnyvtqJFU8d;s>d{H7%!~Ps`O{-nDZNjLi3F6AAu()hUhi)HeD{H;7PvDn; z^D=2;1uXUHlA=U9yOw>g4VXHH2Ozgl3lV(V;ia)n6M^P#XV+ z6cf-*z!*c6-I1-GC*^@>nT)%KN#0RK?9-j0mHx?XtHy%{#g;s)fwO6{;`PDZk%VdS zB#UDn5$r8ShHzzn#vl;=PV|6(XR;8R+ar}tB!lR@>7%XB1}0Z` zrBavvxh4M?S-UNK!xoj@)>A*N)uN83YUE4885Y6!^6wy!Q>wW6<1ByjN}`~TJz!=f z;NWdHZ`0wbzevrBUxVPA-S?q)^DwNbc;Sp94L15xx?uWCwauyG{ccCJH5j^cMF!Sk zT8?wp4?tUdSXQvrkXK#f*}44&$Y^3*#x6fq%M0HE(*0#v#QZu6aVlv^9Z3b5wb!um z(Ad#0T{L|Ad38avf6uC#vz?qc2yIWEMS4w&zz!}Hvdk}R&;+_>$um!e{nPJ-CB)k` z=F$Lw1mdkgs!Sv>+|lj{_yZdFpVHb=oQB4z7Z34QEZa4N^-l^1699xS@n#~s*DS`=p=qIf*OgaPxTv$fd$wFCHGc1w2MvJfYy zlf=TpM*+zY6~=4TR9NOwZ8KtNAoFUgLDdH{M6no*VKa%`KTAM4xkJ6{AOkLY%G(?p zZ+LJ2;Jk+rzlRR=tHVqop#(-X3Il$y$s>yABs!ADx=XaJts@5g!Ve`(N=t;18Nn0(RQxk$lacFrUTiO+|Ti&JQ7US)X2*W|YvP=Q@ zUM#XNXU5YQB&P9;Gu@KBej&yP8j$FcGZi-S^`qp+7eV09M(Jo*1g0|>oe&dWXLvPe zEi-j;+x$4ZzKJ4ohNG@e!|YvW1#UfsI3V!xdU4n>1C;tOYcgM1589MyBeXJi5R3BM zRzr@jx>*rxPjP)Gr5bQP^e(G1+I_ZgzV|n z@@02~w73tm#5N2P41sar`W}sZQt5IzlLIH)F9KUz<-z*%YWx#AJ|sX^wMl7$mdxd~ zdil`l#c!Q`?OCdm)sKPc*e(g9f3}?);vWUY!#gHZZzpPAMJ1?#@&IYdGsMN?%Frdp zl8C?@vH&!q7kn`#NnTrjRQ&{DD`!1CSpboBHXaSNUGF~|+4XRH;Ln;~JW?-wOL1XY9=s@m7l(_#~5NP^8lSnPhUtjf_>3zTLCi97{x0+rfd_m9Ccy z`!t%~-$DN?!VoNhyHou%1(HONO%!&<0}&>l=eN??Pmm+Lrb_>?N=^2!$bhMB@`&QS zQ}HjzXe$I>;b09v5MSF)ZwpO_W3P-bHi6{aF=>Juvi$cE_}`ur7C~JAOHi*ZhsV^x zy67fy%OHe`AKZi1HQPJQkxEm1QirvVxZLm%Ew^QJ#%uU5V@ZOyYHR3lr7(h?^rle# z0v2wOw27I$@43^$G*6#KoK^4jlC!wFv60$KEDcUW^^xw?(u+Z`BT zF2|Wl{P*@RALGn42gS6~$d@$Tp`Q~4eLdnoMS3jANgzm{G_!*$V>ZHoRA?fY5N6mp z)&T7m)k{)@J&i2~XGc$CZ#v+wi>BfQE4~_5@tI7q9L>#knjciofnJ{W8gQHOQiNKE6+2$>B$Lb4 z{&A|CcBE1(9o1@Lkd3}XQ&@R{a~IViqy&+gQhZI)xnExZm$QjD)V(n@n*z6HtfiV^ z;LKQ4ktUf0IXUOyuTa|D4;vG6{Z4(j%xMfSM%73mz{Y#v@qegGdpmucCW@az;1N@~ z)Z>%_nt(kadw~d>s#+qm+css-NLkGxu~3`VddTD*cY4m^;g_$;4*Oz9xh{y|;i@yv)aulR>8IY4 zDO0Nc(*L^8vDhwll2nb?)7-!OOIRb>W`_w^fe-%2hXa63_d`n&(#IJ*QzoaRm-Y@( zRIeWGbWH9)5n)BAVxF-c2gl_A9*0LNg^4MQS)rO7DB)@fV^1c=Xq6p>>PmuNrj8bO zVj6Fjf$DL~>}EzMMYQTk`R`dUs*7CBOI^@!@DL}%z4O|->npQ*3z zOPjHOdR(S_G}XI0T#<~7TW#M4dn-alpRgaRjzB7Wl9ws{;!PVv$S?bMhJw%N`z}?x zPIHQK94{<)Cd7+2rWphzfBE8LFdJU$G{8PR#!(mPP(ImiUw)HXq zvoNZcJ2pUOYoEL#cXn^XY8w*P78|?RH(|?OaD>kcl7V$69(f-3MCz7aN7ab>7RU~g z!VJtO52EmpD0QM)VxAGFtao5&Fx$7yi5bQFu3?hB8w&Kf^nX zb-+OyrMY^{T!I14+jYv*VFjsFl2q&?y9J`jKJ7IUi z_MB4NDZc!!mn@A%@Bn>F^XfE57cMiiG!Tl|`CNJ+yWUUw;f9epfFvJ^hrbmHB*XT-p_ZA!77xG*89ZWM^CEM-Ev!D_;mhK$Nv zSsjR7eHw*m!CA6{PojjASe>jP%JeKhSl-w7apvBR|MCK5{flgVsdqKV?$Jq4fXdj* z&%!;T2nhstfUCX(0ik!r>~3TO^?j#j3_ZNNFM}fb*1-joXF{Mu0G08m5AuOi4Ihl6 zN=7&`6+k^jt5_m`m7pHJ3VmH#D(4m$^k*6-nCbW4P|;;@MAV6}fW_#9A_8%OLToLU0q=e@j*x}as_L2D(eWwHwMt4E@u5qu+_C37j(hac=pm7U&yuBr zH|72f#UWHX5Zxj@2=(?pNN`xgCXd#4QD6^9o*gYOhp8{HKJ!HD0N#{t^7&qO0-fb9`&sMjlZUgxRDhIg_1F;b@X9*AG z%<_A5fTx^jVex0iFsl~)!G>BC5w*f-WrRDV9^nFxpKSR~MaQBaAGK}q6!qTT|A-UA zNwF`QsKqr;d~9mz6t3!?V1-N0EyyHmq78Yu^1!Le^mNH29Bu=`clB|9ax`eSR%siR z{wx|W=UimD;}Ck&Bi=t#b?N1W#32 zCTff^ntSfBxE&a6A!yY-H-`1N{uy#{c1gZ*mr)zu#34HF#ElumW(dhW?O3_cup!9( zw4*@xFAGgi(+(NgU-XaT&@H)V@00sJXK^qKx_{Veb~BJ{e8V*aM%dIfIRhiJT{L)^ z8BRYvs)A4!FGs;fquY28jacgF%n(d4B>yN5ap-<-g<(vYYu*kOG#AUT}I6=?jwC9>B#0AS-Wn&l!(2+iUPc{p8){Zo_ zE@_?9Ox@jBS3) zb?FdCD^W|r>htw9^aG|1`SHN2%g=xVnB5l6+NJ=>t&kudG95qnE^$ewy`5qbE_7vn zoM2#I?JRm0{oE$2M!cvPU(W!<1Wv>fDQIbrK=nd^9$M5IAKDGLs!L!EyrP?;5GREH z)dO&g|M_7au#&zbs2H_lOS#RZ1sg%p=*E?#b`)wCVp6Lu{T1wxj!3u1^g!6b!EF}1 zs}M5FvE_)G5B<5r9&;{3w(8*qxMWZXg|?hV9^UzUN})zkecEZGS&WO z>!`BN!oGM}J`gBHgJqN7#(ZqJGM3$>+&NwdrH@4_gOc61$|Il=UL34RYZHgH9A4E7 zR2dRzg73_`Oozrz<#|7ASt$SV1|SHRAUs%+lME%_eCUbR+WhV2tl67}9^RAp zh&XZAVGR{(OIcZ1=|{Saw{ZQ5XW<^$L?dFk^;~q zI7s8fRhpfz@+8q-w0;0=Txyg#9uzQJ{wVS2-t6w>oF@-oc^wk51k#>YqAm8$RL`=| zUu}W^5;uh#@pO##kcI4qmf^}Xe>7*-wY9deFFkp;vSA3Foh*K%Iq%O<3)Mh$wfIpx+@H;oJ&uB9?yNK~5w+C|=-D%m~ zf4C?r=lgY0+QI@NCz*2eOk|9}q_yE*liiB%c@5_vfWqap2_YtV9s*aK_Vusj%OSI|nz1KHnR&P8J9# zOFYhM_+=g4q^BG5eS0VL50R!|o=!}!IbPCz>l-AI5Rh)~IZC-~no2Vn)d3-xd|b&^ zu}R_&oqxFAzW)su0Ue7e3))I{NiS>sXW^~j{?(LB8JY5x({f=!8Yw!eXGe8CD0_Dy#4 zy55k22-kE}_M-mu3Zb)dMdUg^GN9sA7<@A^l+@9+>14H!6~5LG=P(pchXH->7xL1O z$N4PRw*LaqtUQ5I1Fe1Ny@hlWbfRVuDbNY+(Se?oLCYhV0?GD8!x} z-ONm#pBF#QHIP5f@3P%-Oa?O^iBxh(Voj($5purqCF#0gV-9&h=bJ4^bt>P1U655d zQjl@%bms*t&g7Q}4N^nTF2mPtKP&K?{!&AZZj^iZGtaBf8o_VTO|t^rT=}64BwJM<4-&?BQJ8GWNzO) zcmhibRddp51wIZzsh^mkycZzuXDflgeF*+rD>8IC)l!90uQrkLI-&>BV$`To-(w%N zVA0^Z5*5FzWLOo8Lo*{wiJEt2wVJndxNGc1cM{RZZNF)~KoOa3a|sZL&}gx6Vr3kA zB~H)leRu+_pFP>59a0A1d2s82@yX#p+lUg>CoBw15FiL|f_7LJR&{G$&$wVPs4=Cl zGoT8~Ek_7{wmpQL#9t!VL%3zO>8Dzb*1EaJMWDmG#NtE^j}GE@fs8%#pI2p=mtB9A z<5j-MYFXF7Xv<3L#rPTw7hnkTnRSx{90okq`co0ercKc3zkaR+5yUPO%$SuevpgTx`rTA z^Qv(wh3RnnBD^si*s59em2pdoG5-Q@-JIu~Dvxt@WD4w^wrd)JE(F29g^j8IGfa?> z)X%BHTXnU?3w@<@xV_JkalP{8tLSNUjhw)FElgIeRfd2oK{o{Byu=d!EfiuAj%ZoS z_yUFvPaH6UI0G(peC};$+3I64P<$`yvb#}iD=ldjIh{*zC{5SyWq@@x8a6MN(m-Q) zHvVgR8m`S~Nr@SxH}tZ#2{ArplLfM_4|wKMdan#N)alk<(${a{}1k;B0OjB7lr1|;xYqltJN1S2_uy^=6prl)t zv7H z8JgYYhS+z;p<4)O{vFl*FK;$p#2ofAz9{F-CffLrPRi-zZ)f0~;fs8;oHgq8ele9b z+!oUaYsB}EU^+*P_q~4Qfx4_+67Ebt4Ep%UapSPma)T-XK zt_;loI+QN};AGbk(}5y$a>s|M+0MWFKQMo4Vgh#Hl#;g>-oY=^rnRZaNQorcUIR?mv>E!0Evx|eJ@%N<(!`ES z8g^D4z|C%=1~8NFiMr1d@`FqpT70#v=ZN&BwwLJr znD_Hix(GJSXe!^1bUr)dY_>*SZUjP#&EZUO%8xv9MDev6$)^~g)p3CzDZ>%Mdq%}J zw>Pk(t4w&1$89oym3gMP$N4kZLy2_yRI?WlzOVL`aPlTH==(nYf_f`xN}K*&K>u&& zr2ZDT>IzlpvnA8%x`vxH?jmbC@mBiHUr*HC5^g9f7S(v0?3;n&37$4QO2@^h{mTWf(7&=^; zE6Z735!pf*{&MXLvp!&!q`yc>>G&`A*?)HIWm;o$UznuS^@P$Q1U#u9$0T;I>95_v zE<7mU9|dB2{Lnb5uOm2FD^e}IMpi^K(@-;1ekP6nuUXeh&4XDW#%6_j3o0y2B0}i- zeO8=n9`_~MQ9k6~-(NpoaC%_Vwxq2ZH}taNwq+nHrGfs>-A$1>J305A zQ0J6iyAyZ+`}VzkPN8d0mRz=Aj1#HGzmHjN4svCZzy4!&C3_MvqD_@vAt3h7U!Hn6 z=t32q3p~ki^c_v8RgV%i*T?1qeGkcF1&R6u`?WoIm@l+;X4Hzqy_1hP2se7h1t8Q4 zrW}&uUXc0Gv;1#<1;{uhMy2byhORMcdGv1_pvWep@RnO^Gn#kr<_7`upUDIQ8(OT=;Eo?n)2V zurKJ3ja_1U=}XXWI)wTOG!5+OEUm%r<&!{#ABFShP)+c!&5#llK20x*E`wF3mca{F z*WN6c=l7MEsGw zuerFn=balcoJMcA;;=t^Jli@dIZg(62;VUVG$R>uggx_zKfXo}&*W1fv!Aj;jACs` zeJb``Zc=+wAkT`Xqd(}b~NUNLC{;*pW0XVB^9Nvj6a5M~JC#pn(VJKz^ zhG7X;O?|UPb)eNS+7&!i`*$YMHIrY0oYjsVuZjYRmK7>3B;+V@_)2gE8pS~G&a>Uj z6cbNth>1W7><;>s(1`HO`ymK`HKcpKA#|B+OWT*R)qN5ciJD&LyFBjxrX*w$X$KAQ<4U~` z8}si((VP_Hoo)bNLNsh?kv|2S$WZ^PLr=rCvtBqWfHQvzY71%GQDnc z4Eq@bl$2!HSn<4AZQ+;qb6?vbms(NB!)^wJAJ9QXe#@TD`IOA^x?}>E(PJ@FR#x#G zvi4BQDhH!${ZBR)UZ!tUDIY4BP{JdNa`UJ%qIQik_i;zwZ98 zvL?pmOisRjp<2m2bw`Ygl^ib}<~Ch;LFfM2z%a#R-u*T%rEab6hpubbmH{1Ie|SfL zs(al=MX0E0-0NpZKC{SI%uF^sw(5a$#E4eUgl3DjhE;h8l-F#wu$mkAMRd&l3iqky zK+7lp^fzHeV_6gXf_!BuG+XnrspdB}`U6gtGqcd#h2{Q?m8!=^rrCrpz7D#g{^5^C zCI8wPZRTR1YKRC6v)epMzf%;CF9B3~g)-(H!!PkL?{O@J`iic^y7Vg48v3jizF@xl zE9s-^aIA^RNceIk(y|D-fy76WJt@^#MbHb$XGL*plVP}g_mi#sZ6xSfnS3$^hI7@G zNQ+Z|Bt*c?I>WzEehY*dib6B~g+WPv{?EIzMAyo4A8&qz9D@FU%{K52vL=QfSGR+R zoEBq=xjO+qmHTVJw}KYD1D&r(d^wf*6@DUaL!J0AUE!M0P3A9Jhu=(JjlTkwlDl9M z@A#c-f7=V5oH@d3P{nlfLFS}(yBI6{Kn0a6bE(886w7$qRz~+w2;dcwbDJ!KfGgHn zq*&$2bh7C@X|&Mz@eD9tsFWT*g%t5!us}_cskI+#x}?=LT1m1pb-(ZVSMD%m9`)L? zx-19KOPvc77oG$?#xOY5 zWB$KFvC;+zKqMeFWiEXQ3pw8*hFw%Mw!Rq+ec?CIt8xl;(LLMa4)Z*xIKR*Y8ZSw` zZcI&XRPYYT8mo$goWT97Gc&~3Xv=k%`WQQ3z(ryR$yg~h=t;GsYg58y)eUyu=gz8Y zk*rgXfHP1(QFvMa9$8_Q`^EXPCE80Uy)frmM36I);}=$ z!r8DwPaLS7#ecUL6avug0aKm@0AZodGjIw3orl@Pn{dphx zIf){!m;2ojCmQNcSLvpZ<#+ngd`r{F4e;2p%F;-VCiOlZ@w6z-=P&DGDiGJS;5u=T z7{onAe`ep9QvS>0^Z5TfDMW@{$pwE)W53=O3tS2qpG^iqZl?Ea{;=F^j(ZAV>FUM} zLS{afK~p;EVSX=ot{;v<#$am2YGqz8td9tkAfHZ-Y_-=c{qrS`6aq?}5KBdY zoE~t#@AXuDB8a902xMfty}hY8f~pY)SrR}4`@U*lS|$>M;@-(#gRJ}G zM_#tMN|9;)g1|`!EuR%I-7pKzy(v(#l~LpFr&re%uM# z8>{FI@0&b-$7wO)c9YVH(7cLhzCVMO$GhDP;(Z}}M?>Oi=q3W`^msb^SBW0}38n%Y zy{luuB(2DXFM{#tHdzra&^}zA{BD>i!gqE+u)hv!TBZuaz>dWeE$u4D`f~c*5+H8$ zKV!R6?OxcJ+^z7ToP#e*Azk+FMb_a|nmrgD2QsqAG_I5Kt z(|hrSE_e{Ezm6}_c_@qUqbHYdm$~25)!mGYlqS4_8>%qd@171$K57gmF#aqec1UC2 zZiFg{vrjv_TT=v(mx=&|R3S3s4}K}E5Kk*&Oo*Lq*3I<5DKV*_z{y`R=oy`>)A77w z$chU_r_%M9kg!Yy_YyOm-C5q18SjBRTolIwW7I~T5}SpG;Z0UCJwQ(1<`zF29&`F7 z;-%1Cs~7VOGymD2$I^}&y*262OMfN;+3(@d7M3Z6+(8zmV1jId1;NA&Ikw`w457cZ zD97(p2C92lrfl_g-HAGTdzY|qkX~N-qie`wGTU+^XaGcko~{w#4ebi7tl=Q^XmP?@ zz{J1?HqHuT1xxp6ERQCPo2$sn;c=WhAv(Sf#!i*Q$bHVVpsNoiyd9_UO29K77c-^L zHeQMS6Z6JoY)OF}#mv$;u+6%X$N15-6H#5(79CF`h2-u{Uenr(W#9A3Y-dg#<1!O3 zghFp@h*}S68gpn6UdMv)A`y|@_Oo6TW0)?F3&or8t)kCr)@|u2yy}HWg;rwzVTZT; zfPMKK#i+D06xhP-mB)r^(`e$Gr!!K<+5e;OuMl;}G~hsm&Po@UMsGm}*}%igY>N&l z-0U(Y3B}rIB;=NyKU5RM<8v&0LH>X zBZh@Uh>*88y>Cq`<&(JL>UaUPE+=t1?BexDI<&iG3>Iq0`>16moN1N-KS030k2z!s z*x@At5QL5bO#8o)L@~VRh01AH*$z)#U1QT-V&RW^$lRXhgRkWo-9Sa1h$l@EV+k>u za7fHq+w^cq4!}ZCw4SI;gdV0yww-4%u$&0q6I<4~}v4z<=My!rwI+;(IJS-+68p9b6tu(p8DF*PB-GU_0q^(pWOBc0v&O zw&uNT>OTk~)w=5NX$m3t`wHol6v6wFmxNfD+kyf1pEsVUf9@dX)H>_oqxu{A)ZSc% z*Qac7N$(>3<|`BN-;+l399tB$?n|{ZYg{dYE5F~mUk+uC1v6`f900d~S0>Z$zea0g{y5GJ&Y~y(QFq#c z$b{l(cfhS@OK@Bm%{D2LeQc)xb9PHGjl2{nN}A{~GnM5WrB2{8V~+e3OASZ;7NP;& z&Th7&EmA*9)8-)!QHBlpB4b=e`0QU4t6DFW)(w4dup3ERiFSx$T>+wu7|oQYz-S1i zw>5u9`nwlMF_!^>6yd`1Jw+epa4NW)0L`iQo~N98bx!srbmC;Z&Nfkce9wFehTmZ? z128ToWU@R(&Q7jJl#YV>#>tXuYrxa2RB_^WzP(cPXI0ChzW0co2L&3D{z_$@)nf8; zw^3B6CvoLdn?QC}f4VdzMGF*|<(fUCQab}d|9QIYLi3a;CIlx6?R{napW#lXBofzr zRAN^mE~^B>RUUVcRV<^NZy4VL8PI+Z7U;+8Ustd4SbvI$0ghztc!BfvOTWChtJ zB)sIt<(?q1xShxhhQ?nT))vY}Wr0N|&TfDn6A zdcq|fddH$lTkI3^S8JOn$G1r#PE%3(Rns;Z9sVHY9+MN&S)BMD627+OosJWJOvqYk zK|B`%6wjOytph)ayp$wXgCuDrs_1tG^Wk#}vP}IOn1i{K_4u&Uod2v8WfZ;;oGAAC zPY)PmC10TVd$fhF*D%t5wj;lzB$o>B={^ERx?~R0fhyGH%2Zi!L zOkA?|a;ETP;UThU98%o*>xOcra!$K;0+X$+Q*Vh%9)jIjggOlH)8Tt6`?9YzzJRa) zSM58f-2XE*H%V*Bni)=F9=Fj5cT+|a`i!Se>`VR$xF9)~h&3PDJ04|f7$l=#*9DM6Jhf@9=oB=f;xz&Py!}rS4zHOhun$588UwU5;yQRGOv0pi9|*KSr3? zI+ZU7@1H_aiCL;urPevgGSd(Rq1i5{b8($x%bs|b3<3@3`9R{GFTKm{5`7+$*V?!g zK1P+_WEp;SVZH#6F}M39>0bv;?4H1NA!s^ih8A)n%?aS%nlWLQx;ZsrVNY(4Jzk?h zq?{a}9HZt#T!}x3Fcn}CyYp$ zild-9S&-m}SJ-14ysb(_nJTz=ramD;)Ug~1piq81TmP?XV#Jhf0Ec_dNPs>5V zj{#=6>}bQ97s_BxSMo7Oe0%p_L$fk2qa1L{rX3Ch>^C0uGUSZNl`j*qsH*k}wf0un za`KS01KO59w5;S0%Ti=);s?QfpH^Lg5saMfttKG}Z$FxD8mhLCg+=Z|DfGTu3R|^gk6gj4A2`D<2FQs_}AM%Z7;o z69wH^L<)AmYJJ!Fah)y54IAH}qY7>vmq&oI*7g4p!?NYerH-Ylbpg-c|0ps)jdjlZ z!z^;0TAGDUwMEg97#ZT}AlnDEW@iiO^X&p28>;XPavlICP1CH_{KuzJNWLzf0Utui&V3ZifQuFbkv+8l(ni-Da;hcLNUo= z42S$zWq_>7J^O`Yj2ovgXN+CX{n+Grv(BF7UlQ<6$Eu+4q<3!{UbMFYY!7v}A?uC` zYPMV$`yr}JtVDzD0ekDx`%Bey{7CDqFkMYco@lsW{4l%t>PH4+uJQCAA7uiX#K0+; zI3?T<**xShci0;b^ui*s((d3T-J_2P1&xRzqkY${wz31O2&tJbxE{E4<-<~JK6+My z%!1)vO!YAF`m`+W+bEk~9a8i!%-t$y`ys4mi&Z@SD@by(Wzdz+EEQ>#!vZEYN(iw% z#`*#x#Wp5~?z>_+656as`Xa5)f9rdaTJz|%mgCWHtgygjpFuYAp1^G0Rg_*i0 zb&Ho&oLWNQ8P$Ygi5mK?9I!Ngh+{(qWo0V7IDKS}1Y`RdTBRBc-Z)ehF zBjLQja^qd4p~=^-;aNj>>Hnns6cBiSI_IId%| zaF;1whn__(8U*S&s%0lWQ#I6uu^Dse1YrBlg@D|j)q$wkC{_#c58wBZ+OzZLi1gWIp9rQo8 zh{1l_YEQob>E~D9knJPG>~TvBO^4KOz5jua56AW1C2U zokf-;=(dbc4}qC>BxiMy7FBP^nK9gf+8*U)t&jj@!Bp44>!F};Xsfa*1V(q=czuR{ zF>Sn9hjPa7MWwgsLGqyN^59w~chXfXFNClSAk)Il5u%D~8g(5SH#PMN$kwH+^+wbk?H+fegOu=HL2r%v9{%# z9_M_$Eo1yF<=dFkDamj!v*OUR8R#MbXl5Iy-;gbJMw~o*H8IXRe<56!YJJpZR=EkR zHN}6%2z@LBMpU0_u9&9WiQxO3ar%@}wg(<&4D$qz7kFQ-r)kuO=ib4!lav)o|s$x|6(mJ}tsZIO&5RU}m zm?O^rxS)%m0-Se>8SpvGGudIxizXGnHq4#p-%S`jX1Kj$6-+5^_zjB~oo)7WZBbAQ zU@fi4e7;f)q)zWmSaU1bQ-x!1eiH{s$8a6yH$3XLwr|26E>ZKlLXAX1l2MK5CGTEq z9Ww#a)%JgkdTQ8RZ&|7sKj1-=imDoE5DsB}J8||ig(zD2=6~%Ic&c5l16CfA*`?>t zLke)ry)CkCOX2{0clw@PMX0ch9rksNZdBo{Xf$wcY`@Rm@QtYw=?JHYokyBuw0}} zCp3ir*aXf=XJL9zm8j~O9DGfrSd+$I9c9Hp?cAP zq9}qyKapr_7@R20o)Pq!k(UQ67gMnp<;K&#eknHZiEpPne;#U|G$3ERwml74NRY^e9rYDUNPjO@aj z!wQH{b|@O^e@9i;t^u^L89M`UJJ@QdqiH9 zYJbqO@r-W-FcclcSzGcV({8XiKl=}HOfFtemRu?(M|GOw{hX?qbQY9+2cZ?shMEfD zj_*N9YN_`Yfc{Z8X!=njI3oE!$>)wh8$?&Jaz)*f(MS zALcOB9OxEPhBG4UY(7UUd9KF8n)9ukuoS3buerC!F9hC?`T+i+;!}s=8SyIm9$1#9r}vwF7viY zYMqx!LU>8=_evUS+Q!l;C-Cbe!YgHQ#>HH&H|rv*`TLno5AX=0j$yw>_{umQySemyK5mP`hil0QTo5RlylP0PI{c>LPlrJJu;@F}L*jPF)Kdb-+dfF9RI69UM*Ceu zcSgTd#ZE=<)N~Samu8OPm0O6C(p-SIx(~d}&nSQjtnr3Yll~9Y>BCtapH4A!kLn-f zl59x}>risAucKw$p=Ywc6H0E|=h_0`PBHd7tXk{glfSJ*OmE>vn+daZ)R8heQHGv7 zFkd~>2Q~uDVq-X?qea#uSeCrNWPw+i~z3!Vd!?jFOcyGT&N2a zU6t1MuL9mXvANiy86RHThgTCZOb+!ZyS`kI^W3i~pus772*XyV2axQzXxg}He%HVF z=pfwr3doKF0^LUt=h0pSM`(1_W$mpGirq%o^`gNgm!HMOq;D6;UL?5UdYZU02+#vw z#uQ5CA1##8IN|W}a`|nZka!pwGiuyB?f*9)@kcyk{<33uk~YoO{e~3O8!(Fi_rGoQ zbFe68+*uI43VWF^@czYwgyi2Pne?~4O9 zZ}*F48F?aOi00ogeTVu`q)VjjFY zxRh9yb~ufL+n&Q+o{0=6q(VN5!s=}4!!~l)+MTuimN}7M=jseHX`pd?E)e+oV?i`* z;6Bzh&Fme=6_05yP;r>9cH<8h&L>Vp^uV?ZF$*~h(`k>g?F)YlTzIyXv~T-0A-b}b zQ8R|P{j2nSR={w)Ui5eetL1Y&re;RJK7R^^5snTy`YM|2)L)xJD~VIuEym@U>I>|T zuls{DD5Mg@*Gt77swX#g7okwdG(hH#vE=v7GoR4`dbZQee`NF)$Sa#gfZDG+VwcG0 zYVud@l{Ps?b<0k*oy(Cv+%Sq4S^qdbVDCWg4sn~rehWHHOLo4_1HaY}ai+IrbxGc` z9|o0u=XR}|d)16^qXzl)piS1dpv{B#(@zT^1kRJqrk3nF6e^CK{64DMP{=eQ$+%le z`4a1}9(MNFP4o)wCA8^~t`cc?{}BIBsh*PwE$dTlkB%Z*t*Y=PEP>~N^DmSavh`Mo zD~-urT>99fWZ7tD0@)7f%R@rNwL0`~JXV>7?Wp}pCE%OzvSn>B+^Jbo$JBk&I+o(%}l9%kDRM z0%y_h5FB)`DC?EkUo>70CexMMHGd3{04+GU^F(yB+5x}d3QCi*P4U(a5hFIqav+ll zN5ap+BjE55I5>N|wZO}tF%%~;|o`jd7BA8yzH3p4b zv*pdw@uqFYc@m5%XGOS#+%Rb@2JPvcgY2j}d0i42`BmBNvK4YD_GaIeHE#q-(|DT0PNq8b?+IPr`HA=&upz=A zYJx*99~Uf+eo(kMk-vVy$nuk)q16ea!JDn)vQ*HXVv(e;wP)8za!0;i zH0LSgsdS=xT;Y+yb#}nq;*Y%?C1Gj2F<;ZvfV@92^B8n=Wma+`mdH&SmMAQsQEuo>sXfX zouk40jg`tw6HQXT)uzgLrjxTcMw$xk^!hu^xq@-!mqmQ56yB+n}dYy-Hh{C*AWCqee^+prcg zPf!a*-0D=^a9nGpfouG@u7!ulB7q%yj$1_Us`!MTGfR+)u*974n4pMEMV1}rwrp=I zYRJS*sIgRlOJ@K7OS}&C8}G)%;K@w4+3k!ckXtNHC>HMgc6ZP#$7ye5z<#RDX6_9H z_-?r{v^HHAi=SI;&{OyUh_YZl{{zl#U&iWlADWE9yb4VM$-0}XoDSj|HabyG&{g2B zd_NK3O$YT$TbjNPmVaC*o-z}*_DPDfLFH$-VvbAmoVobM-7&LC?+E~ltL2%SUS=_} z#g=)<}WqNDyeI&$Gfw{4NanVtn zJ0#`~VrN_tjhP&CNrKVA0;;{Pqv%G9!@56_D5r!ckgjW#S@JUK{~uj zGNbBp45?b8nV@Z&0OEPpS9nSv_%Zrzq}Qmvof~s{{s7h!L#PeSnI4RKYk5(vztfKf zXTizoj5deDa9>dq2vZ_e|Ga<~LpwEjrcHNP!Y0U)^#wYNyO-s$$xWCiaKdJutdq+u z4_vyI>~Vy4?2+zZXI`+lR*=f}f*?(VQxRvc;JEIU5Tl~Qs``I&9Q2cCHWXiOV{#m> zhN`}V+~L)PN>QL|#6@B5kJ&*k^;BQ2?x=LZk-VoT3j%+b`ft|#w28n%^mNq}ZcyBW zS=a~@M3ez|=l80Kk2bemE$b zvtL`F_-@r^M#{`Z0JR?pK*S?NpY9uoPOigU-&~~}YBg?pVFCEf<3)0A4uzFHdiDW$(I01NPT-;qfLXf4MS|ru$HrH=fGso9hNXS4NeFK zN)-yr#rV=oOw2HdofxW$@nc(K2T_e^U6E`M;Bt z-(ysx74COJsD^Y9OkR2TeddN!{ zRL+5dxsG%J`kZ0sW>|=q{bH{yJKr1-(;ckdnwmT20vgoNfH_g;THyBA>N3_{WguJ>OQnF+gV zC;WcPn$n8M3)PB^$+Vh%IdaY*r~Q=wjTqVY2!SifB8ovvQ{YqOlo1E~|gUrDee@GC$TVB_`}F4yr( zmAn(LGo7$|`*n}wD-z>Kk{>DLUm+Xe@eA|S?n^e&7izBbK!s5Y z$!jB9l&pS;@Djumajlt}f0|=9sRmszys0jB>1|cYqE*hN%7_c~8qGYNYoh_rUK9X$ zq0P+Kt6U~!cPE6ML(s~n2LZ*7PK@T4Qo>TI8%*c=U`|C1GC2d68q+2p14OU;4UAz+ zOf}u_Ek@$X?#Rgy(+E!pjYA`Q{1kv)`;!;T8sSvY5G!muNKX1+kRyf5_c7s=jkFAJ z31YJ?4RCBDuT-$ty_;{>yB)7H`lHF;|9N!AYt2JmNVyX?HLe!vI7Rta6?XbyCjN0H zlm(yPbN$paG-~~(u{ITL8!0!LjCP7=vqqSMh@j#*cVG`rfsa>Yw z6`m{a${gAH$7|N2Xiu-(?XwhO*i##t!T(2?jZt!_$E!-6NZpGFxb-7<#m7@kubr%S z41CehZ`{4n)=4%tKC8h|M!58uCC=tnJsva8fp>a*umk=ZhB?q$mSgS%9pNdjY&83( zHnhx`;(CJQm)5}XV)WO5G#FZ-#H;f!iC?`%!42SR>!C4)EGQfAc_}~Z9uBAT!xM&K z;y_mrAnkp-mvBgCbV*?3E8lOGC(~xWqBpqY6qL45jpM4ruDpf=9t^PQ4o}B1x<3W^ zeK#T#RS8#Qj?ZlKL&6l`Oo@+Wxhth9fbnqmLLvHf=^x9@w5`|!W?tvb=-U6YNJrE0 zDDi3kkataY13iLyQuBv#i50w%<`UUr{5#)iQO|SL-QaG$eGcT%rXuUMuFZ=rT%SC0 zdGS5?uxT4>f!kJd3wP+*twyo{vR0GOKgSLw9?d&z;dfD)V7;qIk6VTK{UUIh8dM#wbJQ{AQd!`42I@5^D-<`!B2x^G&YBmmTd z*~|NBd=fHn%iF6#fQBbIMLql}=i6UBLXqfu1|P1y7p;BM@{Ig5UU}K?PEq*N`I`0^ zUgs^_PD$?P9V|-T8Jb3%6%IX-JF+BD0j0(6u*c6HcN?aBaks}8{8twREpu@)44Bi& zQGq!-QHAY>cdau@Z6=IXW_YEiIm~06*Z47RLVfWq$ndtMhJE~Qy zRE5|md0vPEhIMs7I@w2SJ90giueJ*}$;Jj)c-^SXRL(8V zA2lY)IOFnKg!m4m9Llqhd_hUP78-gUe5Mq!<~G{jN>~o)st7|qNMoF`k|>r>w@rER zJXE6#_&hyybYbLpM>C)$2TY^dxc`=k(3P93UT|VVfz2sTbLNp8^N=sR=j!zIpUJxO z=MG8~JZG&bAUJ&vU|)6oD-~_z=-zp*v0%RN%N0L5yk$^j;g6h{e`s2JSkO&)(8`cQ zAPN7JY|UGH6^l*$Rf~g&CtVo@n4!Sn{0Q|}pVNTw*wn`VMr|fy?Ue0I;%%~Bl#xj* zSu+sT6QHuRATohe{aNA36%rkn=k-4^%*e?RU*M6~9EgU+8f>d(o-rA?K#GYo@VKtwMpV z-%A}i1Ia@9nYyTYUOT}V6A8;o#X9HB-dzL*v+Fm~6>CfPk$019;{&BPjvDFSFdI@hI?00wgKE^;b@qN;X?;SF3&o=sc#KwK7av! z@$8ypbK7;}{X7+>Sq@qupAIwSqfnbbYl@rIQd#*q*e2DlT(W;E zVu*C&o(+oJjQlEhdc{~#UmyO34d7D}IMlUSN+E0Yb<1B;-p^!#AI%8>y9x?~ynXG? z|FWJ=la!QK}FQk-p#=o38opj|a1< z$wQkdK7u*J*B;-5*jBpI7VVjnh!bH)qQtca%e#Yxbz-sjBT%+w)$Tz(>fx(aB!f)C z6N&F?+d>g`z;Baa)4`vJuZ+la!z%pLG>&il5W%vFzb*=%iAoG2R>i7T5xhUum|Bfo zN5;&But{+@2tOh`ukT+?L+|pX9|Jt!KkM9hdg~u5cHg0B5c#cSC0!{EJx%@Cl!bRY zJ<|4|Wt1#V9+W!v+7HcB7Nf6K;y4Sch{4hFfb!s-?%9PRtsk1kCy8~8IqB7zQ8i45 zs7#*k24?cByjdCQRuzBgPn~pMXIClolMhf6$80IRbzrJl4@3#RSReJs>}h#(;W4V` zcDSzH+Rg%1%2r(yri+roropdft0vq8@=$93TpRb~b7WIsOzkAYV%{`DM)Q7>K2GH1 zh9-DbWV*m{3}$w-v(Am+V!U9*OSHEQa#RD>zukjQ)RRH0$l@Ph{!K|2+QC}r2L}>l z5NT4%p!@4~zHiZYlCqA>-Tk=m_)*IZ)~?i~SlB)GKZj&JJIU1r^AFxvPd`wLra;4Y zp?2v}u+^a!5zW=2@)1nW556MI6u>tR8MqlIqTLi9zC=DFn*G?^yhoj>%xo6WDZLH8 z-Chqqb2H?v`>jh0xA|55QIr@%mZUyic^4K6H7S{#hi+#!2g1^63nI6&zn5r=UqYcp z3n2!WQJ$j#1#Kpz%Peq=(p2`>TV`B~)K|p%I%k)bVOZf6*!?N^&t6eVn;ItV2bMvD zh}L{Nx*SF(cTjjLCn_l35fpZrOmnEU2>oMCZ}(vol2T;J@Ye^X+L;@^NtL~ar;m7; zX!&<#`#@FmY1o$zSYGyAD9fCdFX`ve6P{-X&XA!ZQR6N0s5B!7bbU1kBB3gM`-_>x zY}Q`ux_go0+WFG{IEzS-x|7ZU5&J(@-b&J4Kph{vJ$FH+wjyNFLboSP)U>y@JF=|7 zV;N^IKaS^N630Z>6qubw?QAf{`JB21ql__n14TIWdi%^AJpTOlPBDkLG|784||cR&LO86wSoDnY`;eV1Ss^fM;sC#fei#3kkqpOe^H7lUb@ zvR~=p))MQtPcFxNa!5Mz&avQwXYyu1k^Qr>BjBsl*vJ|M*RnFY;=lr2zV7qU2u`GOgGUu( z{3795UrpHst^pM-ohL^>#_QhfF!C#<&(UOfK#F_+ZZV({qF-E>Nc`DS#=Hc0c4oaS z4J&l$J)Rgay>dNS=^RcIolS#T26}=!ZC6eocuAs75hGDL@YOM7nRU;(l*bslA=#3V z+T56O*zx_yTq!ON5Sgmkm?RL3L$nT-v z6eZ2B=-x7tD>J6tVUJW4?Q+P6Ca`vyB+g)#g}s-XTISfwC{NUT_I#PXwKcHtsthO;j#{vj$l%KEiUx+- z*_q@V0bYnob9eVVE#@!SijkdD=s>gjtR`JZC}Wa2qDsSe65K|fA||Q`#jWhKJKuyu zK%S2eLK!qK|MiOi*u*KI9=1q?--cVWk8J~9<`o7e1?COpKHlSh$9gMWCLzCd1%rYZ z^tKX)3Y0l27r4Bd>4Hm!_6+=Gfc($~)B~!@%I^inf|*|{Y+@q3yDynRkT(d^P;~$; zfwu{b@Zvev07TmsR{y~lx_S45B`=2yCnW5|Hz2lmZ$g*Zn(%jKHk1u%f?$R!p3b*s zM%hN~7+a<^f8Q16Y9~yeNa2xE#zEY?J?wz4lpYj|J+#K$+= z&Wy(7yx>y<5n*u!)cf;gOStu}X#%kz8FMux!6PIwn8DzE9ufoGlVRRm5Sei+ zy^!szI6Dxdgqs?-Qr}Tw2z|xQWCvn3-yt*|fX!2LRA`FMS1I63oYFw1EKOYEWy9r{ zGgz!+45Grn;DHp=(NB~03huK^NSRAMWp44a2j6u6Ep5+U(S-Hc(4CZc%WvW;LG-*V4HA3q^B{fJX547n%O}rBN@q_anp)H3MQ%kOknR6Xzu~H&MG~HhUITx~ue;hd`~dAO zmaeGVWN88=9(@oWSa1p4Cu2!=D*9#}g?h}D0vuj84T4&S66&*hHnqwWj3Yez?s9xZ zZwJa1ZTgIgAzW?eA{`X0`z3yUxGSlreHtOCIZh+eZ{Fm(1Z=KH&+5xUt;^gHLu&P) z0|O70qit5A0~3&@)_tZnf)#8OCC%EgYoLV*mIXRH?Gc{-Pk1ssT6$CHO^sa!R>49B z`$`k)sJo=Rh^IZZec0z)RrxIA2rY{WCj^e!v}DUM^d=&tbRaxoLf2#w#rGNjW8Nq; z<%I7MuI#$ae-P>YS+LHHwoTxm>gp-wxW(<;|Mk|4+$%@$ZFV{7lfX8EcrMZ;ou7wY zPZZ~|U%K;L#@eyj1+~!Jm@x(P9^g4ZxabTt3#qE?)E5>+T2}Y5yQK95&z5vWxgWKB z=4mYxsR|0i0TQ|YG*~Pu_^$FZvF6Ec`?IkAYlA-kWFie>Bmk;)5ovkVU{+DzZrl_0 zT_VJ$JI8y`#tb1%w(69;iAM}yZIOXw8cZz0nO$PKZtA}0r|Smd6k#{q723ct2xFYx zn}HZK&OX?jXwZ=^gW9Jo1NgT=J&Fd|`p6Z;o4!$E%cHY>BhdzBmWO*3KAL)1wjSe?;H0Cp@|hDj6oveaearQs|Y7^AB!3hnIp>Sm=KGBS_739CG^yyqhRd zjEOju9#hHP#3n{j#sm+5Creow%{9LkLnSg@rscjK+5~}?o{`h=Z>xxdV2a4uy?LwU zHWA^)l^j#anAB1f zZw;dHC{FwZM+r?-@0U`XNtXCkPDyf*^CuCdYIh-3_D&5 zfAVs3D<}q=RnY`3Q7!{+m4n5yX*X2vTM@!r3GPVkG}+Nj~b(vwr;mVlg_!U9F-E8x$yNS99BXDYYNF~dOpz2tA3i6=?^|u>M10bD44k6CLn~}&KuYy zTFEZ;2iYZP`&FxjEKB_Spag@LEQ!Fgb;vW^RAGhXC#H)72Y3KuBiksVv1%S60fWE! zOu(dFXo~Y|eEw=xm?KFi@m_(WZn+BgAvv5vPR&cKiggc%l87AE@%}+WBP8ISWiI zIo$qel~Z^cvbGSRJCP+oBbu>GAagkj0D|0ElYFGz z``5(N*<&_a{55q)rK2g{wser$_$B!&?4?}8ces&Kd2+J(3Yd86?MIfkhtoUb!)|$|NlRWjGCFXTcj{j z@L;z1fL!BL)Zz@^h#VMAS513Ox@20oK_cFM8l8cL?j+M2<2hUtUbVx3zla-K&!=bj zg4``cAYS|zO65*E9)O7`HGAe`O76_Vwi|*_XoASDV*?@)uIk`l1507A)~Spw{FwEb zd3a3Aq=^F!qb;Fp)(?Qcp#;-=3x59R$tBntwFjPI1cSKuseXp6nBV<+-IEN z=0~UgjtUi3EwKW^Rha9ZlS26D%h4AZUpe{46Kd0ZW0K5@Y|qzUTF7YtoP?wr8Mq1} zFhyo^IA5pVE34y^+vN?>v7Wo;Vl9$wJ#4!58m5P4BnNyb50LhQ#|MXPMEvT0MxLNh zj!q|r8yqoVGozH4|4CoYJx9j%8j{)psji=*%4sgLv#xim-pe;s zZ{nE*taj_$5HWA6iBenOpcVWecW)j&yUi_h^SSRWQqj?1qfdClhq_h_}a2_tRI#A#w2O zc2#a$QZ9%<0J}*Kxvct^64P|NZJr4|Yd*iQuZV*id8LKsY%CTp@3M3;g<=bJ(y{g< zN8Od+%4tm|1szfssx(|0NOQQ&Jv$lG!gRs^daYaJ2 z#RwF3{3b;_vs?GV}hjyGOqrY3kN4zEC{E)1`~gg(MTFCrLTp^r)s-Uhm$vg z8&*%;L#Vw(DI7bStvI(V4z&vvH-=xAp#&%eY`znr6&*A}YH6n82%O8N8<13)V{?*| zht1Pjt~0nc-ZCJ$qcE@us}X$lxR%yh$~S_@P+weMyzZ25NECzRJf`)RR;M{!Ml
2SK1{AZMou?60xp`F2Cxe{z)@MHk?Y^=aOD=0n;@QkE{JZrx7lDlC z@(lcaSP*EPAR0{b4sg01(GMxT71)0Ab#>zh?w}CVq!$`!n$YD-YchdhEwvfofTSwT z*A|cq-QS+;VvFy;#euuDuV~rAx=6YmAUF}SOPLkNfJ!a_n8?oT(R^8pJE|Q`n%J3%h-OHLI>MdI1`8HJ#IM}HsxL5qHr(i`c7WPg zvb6fu#pY$~gv+<*a2p!_l2@yp)5}?vktT*>V*O}HB`IV8A~Vt$@ueho=|ir2!xW|F zScLPP9}&`VJSB=?jVi(Vp;XLhf_yXE>;xgQhPxdkfkmt}CB>3i#QKaG%ig4lSj|Ux3&A@Kr>@-Z+Eb z^|XVq#zb*z!6UEQ5rd1mR=le4tg!{3(@u&(`CojY=Y0JiZ@SWm8M^f?oPhLWD0((n zc3_E0Vtap>{Cpj|tw8aq?avPnrPRMk@9B?cYn1~pjZB{$(m6u?jtJ-+Hcyj?vv|f_ zQEL2j>Yv)fnA02%G&K3h#IN#Y0$YL(XCF}rx9%@)(iQ^ap}xfz6^fnz99{s*u9a;` zNyP4rBwjM?)#yko?s8tM=BUzBQq9ZR>bvS{_=C=H20A`dgKT)Rw1$TaZN-m_|9?Oa z+)Dy#J8W)YB!J2gbWdSw_Jv-aS zIll|#dq9TG4JbsmHfmZ>Ycv31!jrGN9^ME;|I18za7+8O+9?V2aE3x*+@F;{Sk$s+ zFzPq&B-QdB=8a^}bSLH4^9bp|(J{tA_Kyo5zvB)`wDKT2;z#a6OOH5UD$KX+5Kd1# zN`r~SFaGc*OG8jE9Z>S<5vH*b`V%zfhWja0rxt5SQsXj9C9WK>t8cFa5e5*{u5go9 zv*TYSNL(A5T9pu)o|RvI?#j@O#K@3r9P$KTA;_OBxvDqPJo;3agx&S*2*$9DPn-txmoWSXnA=e; zCpRWpO@w-?I;0}8{25%6Ihc#}YwFUV{eLy)^nMqomjRSwd=qcz`&PjVb?*k5x6iY> znco(>IFPwUnatM@6vIV^(Ls-P#%u+h@X1<6hI14^+FX!{g06*CkSc^fL`%CI5(TZ- zoh%z)jbn_oClMuK>}-=zX~k+^hsZ;73HRz{M<%c>vZ z&8L$x0$Bf2=?|at90aE*ZhO#NQnS_$phdbG3)QJKetfW-$>fagHo{easmi?lyAri+lK-s9GVK>%`;WQYE@=-;HzqqBK!& z#dm>Q+1<+yD&PU(CYn2n1_aa69DK75r&n5MZBxh(`m%T|vLg35P+9m+pKnRo%V@^0 zlE-cg14oitQ`@D=ueCM4ZrZ3jGb$Gd;3P zFD!(=Pvi`U?i`|(E{Q)$`8C;@Bgw%^9`UC(mW&&{N9i@0PG*5Wo)lHTb+S;@d>Nxb zb|!b-WOMOTiMOoVS{;(cc+(u=%uqL0l!ldr5nG4{8KK51h2f&wkuRjuo@a+>SxAFi zXX|CV!SUPLzj_ZokqpnjZ*K6a>~T4C(!XSiU=3B_+(ZS{{=;h@LawQ~H zzca6Gf5@Z4KRN43!i2RuJdD^z?`(o0>d#t3q&?;Dj&+TQyf5$0<vZ-RpImC75tRivB%K&5 zRk{enAh~p;srb2H#zf<69u<>&r+?xs>;^0mqzW}7X4HU$LJ$vWI~sZ^P1Tke*0_$gLf3~>57~r;2 zgG~Q~M%-!_*|_t=S0Pbr%e1#9K4M7mil}R!Jv!bnS^wh)Z3w8fH;UhQ%B!kWkD>x9U$@;YraS3<2& z$E0lz{XViz}yTUYRlc#!2+?^qNpcvl*WYeg3x;MYpKb2BMwv@tc)Lb$* z20H!8fDyt=GbzH~zV_B8t?H6;?+{iJr@Ur0&VFpG2}tQ_X_zA{3aFTm@IdzgX8^RU z!QsG?kdFYL#=ykf7U6)P*kNBV-J2Y&n{nM#802YsHN(Z7@9yF_)UfP-+13;#B1o6h z#M(0-YFw@q%E!Oe))pN@R|{5MF&P$Am|gUS#v=yxsPkru?ujl5B+F2%rth@!{bboK z(`E!h|5+Jybl>~cM_tnAx(>HypXcmtQ$mVj96BYRvg*NCQLO!KSJ7yg(l)M- zSHo2*bgcYdPU4a93;5i@{l$&d`Xnj9LeG>7bSs0 zUzchZgLW$X+eV40({UZ)59{=ag!V_qxB4PF5Ju>>z#F6B8_W^Wrf(K#g93r!ZYd1a zQ~4Fv#MZMLuSHjk%9$)G!f&i(anih)w*{3vJlDA542I1mG`iK1gDN>b{w{U>_?bnD zK2}z+xg@GZ++}?Cb_(=)1PvWJlGvgu7U~YJAk!aH_Y+f9dZQ>qbl8pHku5gvSk<3( z6U|4C*z0btN%Yar}BBqH3`9Utf-}(%`hHwhNGew?)i40=P|BK03H!V;&UCgi9cg4si zDj*L@C3yAXJ;-K0IF<*=tI)WDV@-w&n0rPcdC*_Sv|RGkZes}&0985!p>}RznISstaYAa+{C&5u=M$(*D#BY$*&0)>AFJr;NT9KF ztq-M1M<0S{?;~N$kI_Gx7J$IX0_7>mH?2mE^_K~e?p|aBlnzKsW}(FoCUgU`mLI>C zgMIeH&dn(I;o&L2`=I1v&Y(;c_;zPP>~*&?ee)(F3=6dQuYMhS=nRw+1?r6@>3;I| zB%}yMC-Y>J+YRDx{8uDfeeQ9N-&JWm)DJqA#<)OQ1Bf1gI#hpTj-Yg5EgP|N?nemZB zFm#+v$zFLoB8{Mb#(@`QY%UJ_KTl9-Bra~g^sC7U)$hkCJ{AgGD;l1eaB;dgqDlH! z7~EuR(0UkLmfeUy$X)+B@Q_EPld`Me=AoES6MChMS?f1vo_k7uMEDJdEKEeA6&vIs zv;dq&f5qfnf3pnivHix&b+|+IZGqs$dt0xMT;J~cB{l>0uPHY5sSKx!$M6pqx3qI_9}Z(baMH3a}K z1ADDMO%6=S^Mk>zb?>nmO_E@;C)-mYe+%}bZ{7YD&-@xxc`IVefDF(G><4%D^0d&r zrxH0EONjT$Jy(k@{qx&(Ub-d#!hEek_unQ5R-E7II*9yX2%Tqy8nmV4@4R*k$R&_K zLN?(HPxR(_Plobx)Oc%1ZU)AaA8gMp=#4MfK*p+p@sk#dV>rcaMe%L6Y=++#mVsd0 zn!jI>G4AziM$-4$@c$W3MU8jkaA#(FOkOu7>29W&#`~`j1FR359Eq=HdC?7qJ-IS^ z4y6U}cE>dO!)9-s@|mI0{23hxaj4)NOvl#(kQu07W`ph>%uuTX{p49Op}Wt_s#{X= zj|e9HVqTmI;wuZwPz1YikIUdO^JFc}QTiCbU!J#BrXXTvg`TMWoN-|ZOemo{3jJh+OJ`Wmk=I82x=k6w z>VOAE4a|0--DIvwQz{CHvp>AXYE#?IXrYjy3<{%~epij-DJ`K?QPS1^=HwcSQT6z9QV;K%`uJNRzFi6& zD_H&;+=$;y`@32TvdN)XyX{9TlwsbsbJ;0)b-Ke=3BiHkzuCX#xWYSRX!Su<(XAnP zT$A>1uLDSI5<3*I;iRf#`Wg=+@?GBKow<80LS<@t!3$J+F63mN{xbCIy5neV?U1Um z@B3srFTPmSyFEkF_nQ$zAEFDKIErt(GbF`hX?r^BRsMmexA12uHdfc&45ovz3(xi( zd9CfXVI$kvg3h66=!>eHZ`5T9WLJWw6uIEfBsfZoLkjFT6WYDf=(>fUbJb&L%N!X- zLgI_{bn^K6F1*w${1|DgW4anK*@%~Seeo`4uAd@px^fU$4Te;ME}Al=$^AjWV_U8J z4w6rKqFqxTR%*rfQDU;xs zGa#j2Lym$wM?BS&$zsH6nA}^Yy=hEmXb1%){3EkB@=b?N_J+AmnglE49PkL1y@=18 za&_Dqgcr=Aeti5`qT)bo`b?|*B)PR*+>QY@oIZ5l zFi%Hz2lFxo9#G3|4?r7_Hkjv;G6LWCS#d%N7f^RTB7q_3x(}QLQVyI|L^hVTNN}ifh)G!KB zrC@Lae<}h!i1w}dC%NqSmnz$`!5n}K_=g7sXaMdLuc{XXA=3#6aF8d0>T#NQhdqK$@&2~xgUd+E<1wf03hvcu-Z3g+zT=LXA(`QTp9fXZ2lXg!y< zJxG^Yufp4D&6l`__#(z-Imw2fO}m#;*xU@>YV@FVXC42$jQPR--L_d!`X+Gzv++uW zhXa$nz87bh2<^ek2Ao6Y<205_Yq^XkFdz|lYd8g=$D?r*n8LnAJYo91_@M~X#QX>w z^goh_qfl_huZNM#!b;U@qN}a(jPWbC@7uJEPm&yz$s%pvNYBz8n^v|w-X3+i_g?_@ zm1o5eCK|g}=1oXp`6u2t9WW0B$lxU^Bu>Tfqvej>p`+pJ&$wBCWaH48mqd~6qE)EJaf zJ*CFyWQNh7Wf@H{oAg{X;iX8M5e`{wp$kwL33(E<${L9sYVtR=JbyGl zqM)s>b@>aSGBO2qUhfeXUq6BC-eo+s#=e(1S%l=RpspfAY?XW~Ohtx_g7`SSYUG*xn$s}Rvbxy0I-C9Um=Yp9`D{F9TPT~k?rKct?@ z)lG# zsN9QoF1015(Y@H((zeY02je9@=86a@Ok~{<6FIuDdr&gRd0KNBQ!3=O&T;WPkx&z9&o`o|+gGTmkYS z)^&6y3Wq`9tMk)})--tZ!Rp0d%)^ay)U9RQMD4hs&}2 z&~{3k09{QhKowEx%F=bE=jQi|kY#S=R^a-)UVkfIKO#nV0olk6@KYsuKg4duxvJ~9|$vM1l z&`7t8iV;6-E?kSw(DGPquGGb=W?rI8ltPO<8K-*U40dwfwD2%+k!Hc?l<2*SF*vv> z1U>NA>$M~NFg?<;SWGJ}q}B9qcMaL2Czk-e-iB0=Kuv51l$m!NH^N=E!Bi@Dv~pl7 z7Ocvh84bzaK#-fLd=_cR^>yE9IS>~C+>tIj@Mws`4AoyXK_vp6Q}FbeM1O0>Ksk+w z8#M8&8Gg7qLGOF3yktgDBVD@dy_Kx)sdXp_d%oOG66||*}9P8NgBY1SjMoh=gSJnHfquPC>r8?U2 zCxD~w4W%3aFqSH^l7w+XYUCguENxkv72xC_b{D{W=fiqk1aWugGdry)ryMOu*#84G z#0Z1?oy~%PF@N%;4qB=<;#4`kP3@e-vH{j2#hh}{%>PtdQ6JOPCZ~fwhm{uj%@d&E zsrY?%unQX-ZBhc90aqeJdi3wajV)}fD^`FGLh~r-C%ocxp`Y6XV?KrtTB<-Tk&Yzs zOvsIL6}(O;pZm(bP{Pfzf)>6Un7O*QVp@K8-?OgcVY&}Vi9LpjP-pkS<;Od(Wh2pY zK&8|0?$Dfxe0eXAon%`e0{^!nJbkI4cp_*TmOTzIAkZo!7JU(jc zP(Fkg%s3iu|JcVB0jA>^ef&SKC(bUc=8=s2%hk^l=ZeN^H%Mu&5G*~~OfQffno(V- z28A$n9G25yQtY%Bk00bth8ur5WU$>OKW}}IySe!Fwis|8Pp)GKT6kC&Okw9pq5l~Y zPE)@S}kNlVAD%uEDfnz&&v&?N6 zpXPA0sq{U}Z=Z#8cHbq_0Bdgqdo1Q!(m(sjgV^GwRa zlP|K>bkL3*0X0z`ydqP)W{L^hX+|SiNS%&Cw|~(se1&m*hT!1ATe5HVuE+aCU$TMX zXUr3vOpU}M0rm8w{@g#2x7e6KXNg4*@bFa~t5);kuf0tRFpQ9D zq89iBVdYJc1=+P9Kj-7zXv<}7hvd+=o7w9Txx}Ffx%B5;bQ14}d%;h|6Y?4ES=`w~*<~3L< z;l-y}!?}*U(P?(b^+RGHlIq^+E#XQ2?N7Rq(jUX#Kk1Z6otUBI-ytPIT@T-6K+=FK z2sey96la;eq|`ZDiK$N^2^M4CHphxTk|XM34GLA%eRe#J?rw7o-^UP$_*|TN?leE)gPs06M#d?9@OxgIbmOshhrq&RbJ`1g4 z|2NIPz!AX!GGiB)+s-lz>8ywB5Z#tqKd_?-+aW-2=ZhmKqK1P+Ne*GUkdM%D9iD6P#Ti{=!g4u-mkk{n@1cD8sng=_ zpYzgEK4c-J|8~A>=6djgEae_rqo^fJU9LbqHzq!}_H&O0OQGf}JO`dZPM>eGzsO8U zH5@jaWBn@`YHkc58q;u#RdRvK=z6Wk0_PtQJiGZRGyG$~6|T>Fs4CDw94~@_VWFF&Xic(Z z?LyEl(7i$%FPLodcE%O3BU`a{G-*KLYWzS1z__QbNv0P*SWxt_>?oEuft6x{{4dW? zjj3vN9tg4(i4K$`CZx(L>;Jnwj}F*T3Z#c zPEZ8Cix40Ht_e(Ca)Ib@T8u&E0sbVQb{f^sJ4jU|(C>k>9P5?B?9PVh!uIfV32B!aUJzOw zkJ?U#)oO88h}zw-w4a3sU^jPZ?3NoJ#K^gnRfq&gL}pwko`kLPfItEzu*oLwYr2k7 ztPT?ZnIja|q}!}PsX;tZFZi2(F-2Qz@E;6nWehVEP^ex7Y|mz%P&bT?DG63QBdEg` z3!nyvQ6OXt_q=2WH--?6Iq1H)YTFFf>RWBp)n^-GzwFXr(>3~|qvyUQy&Ln7bBC|H zR}Rm1XoEKpOg&x;%P?~&pg{JGQb70G(E9fnk}5b;CYH`|fJ&0=`%+X(++y!N&BuEk9Jsdv$E z>Vw0YD<@zGt2~FKr%m(PrTPvvkt@`XW`n>yn$(?Qys^&z5+8ZA(Mt$y!W8R1=6j?9 zZN{0sN$U@D3iG4Hpeg?Sy0OV8SDdqsQl}!Kl_=1DJzF27ZYjeKi*&(;8S_k^;*?E? zaUp_#K|+6R(!>M1jyE;U!fpdoYjRNKr6>JA3z9YTZBhNeb7u4ATuNsjz_zZAv;E^< z5io>4EX{4Nc|*^N1uxUK^Dsk2-KQoghN~UQ2E-hYOwb{U)bKX}19>FNhZAhfDvG)< z5SLv?s@&J7xTDhNYk2mwMr2AHIKATulq2bOz7Rf}NQ$&eQ3Aozm zV!V99+f+_4mVbj7#OT89wQGNk ziG}OdD{?($Dxhl!iD9E@Yo0n)oCd$t?D;xkSupyO=_Iw-9%fi~IW;RGS3_#Z^BbP< zx8SZ;ggkASt1yHbwgDD4;=^^CbHm}^yH{tD z-Vrtu0s_=9mtD@eu8-OX?Sa(kv`_60oUU#E_c0Rw-S^sw@4jt!`&mQ2{+#d zW2DRGKPTesqLY!sj6PFg9zNW!b;z$Hzq=8D;90!nY(@Y=94OnLUACwSQa+wfMf{I6e?RhcN3cSNBI(4tQ0H?T5g~K~$4$d|=B{yMG zT6c-rOf!sQD)hTTtZ(_^E$sG2B?oM^U`RcRBg@p$j zWE7i8UPd-1pV(*wKf(|NP`TP+*<5t{Pc*>)?Jz&OP+QFNJwQ5L$^BZ^Dlc?pE7hQ} zdYW+cTzc|=7ZwuV#XV`5xcO#LfkN#npV=9C;4=Di*WpHCN@EY|7GcOCZRZX)RzTXJ zI%jgy)^9ckk2P&14$8NBMAZX4jiRnVz@97naCII59I|y!k6$Z_bC4=Hl^SV=;EUg= zB93Zm$9-_;&uB=17o`C~7v?L)d8Qujcj5b+P_QW61LnVy^saLPDmjxF+@GzAw|ILp zKo$7OfEhyTz}3r=?)=pNmRM$aNSEx*PzpU6*Z^|_#_v0__hd!$Ld@bS_IEw#F6a?Y zexigvoz3z(a3+%&3=Buig3|&c7Q8A3=FOgkInD0`TUBU7cu$eugt|kL);h08sWiKz z@?|xCXy+Poud16&weC`-C{CKC@n8EPa-=VYuPY;mfANl4$4wrjY{6rp4324O#pTg` zQODQk$Qzie&AHC5((U>1J0*9wzh;`eI9e%_thX#Y!3w#7mT``&2^c8T)di+af z*{r|5!=DMc9EwC~10tKA9jA13{~Mfw96EJtkk>g#c~8dbaVgwp>4pJF$pJr=vV}XH zR-iDS^JE_JzMJ%@<;H$?fuunOn+*XFr;S-izz@)~;hrNjLxN(fsii6t?0 z6iTUgY|3Pq(8zgs_s>f<@Qz4Als#?Ivj}_8xIloo2(|uv#9TDLRc;u7{b@lP<@ue0 zJR>yquQ;Vwk1_u11xhoIxUC{J)cGpou1*-Z>MlX`P5JXcpaxx*7S!|;?**Kqw429w+Ya7yIK>b!TmPpj700g04b$3`FLFUiseHAb$_CNwKoh|H1& zu~%hPt%EnwNO$QGLjWyv*VOBGkgf=Bzfd!FXW5JJI)kz z;J{{5{OI1f>>dTnf`w7Uo5=-f`j{r3LGHOT%Pc@@s^m(WC37ZpH22#2i7*RQvjgg=M1*P+0{TIQ7KEBLc#1}^=)3-A` zkcHHW3fy->j}qw=uzYf7ZxzsIMCehiuEqkbRssftc3JpxA3 z^&vqK5+)HcF!@bhLF{LKw@^0n4g^>d zs{{;WWvWf1S+yfg**fSvvvc+kmn>aBZ2HR8)LT{jUq>83M`a5mHopBBW9V;Cw5Krsl!_%DV;ehDEb)){Z1YKU+oWzx^6 z{hWSAWzl5fbr{fpC+qFG46h3y9w=P*GX1x2oBZd{%KNp;KB9oS8O{HsX}*Clk7M7! z5B&4-aWn5Jt$*>^*oMve#s^k>N8k<#o$GU%doY5{4Y3^kH3+K!9OiBIm7xJAU+un_ zET59!%S`WwEsY;s0lm0Mt;D3UgXH3s%V;V~mWv5*-g0uh0n>&NX7jDgmF`f=TvJFp|VQt$ZyOT)zbH4>cdj0j2x3Z1dXFuw=B_D88{=mwG~WA zhJFih{+`lB#O>Flfu{~V17=S*Iu`ffyw9)!KvYpYq6Wc*->dzmp(0E+{dcwp>p|H? zJIur!W9O=@Rg&9c-ULaRTWIY~xbE^VC3}f0ChUh625%Ks2WMlCyDt_jkMw?^;7X|t zA-eCYU=hZ^SzA$TR(SGkvr{6D*1@D5e5bV0AY`>x-M|KP<9ki23WxplE}6a zFM^seE7$k_neq1_=~zT;zCxM7CPQYB+tx!86NJ#z;Q8*si99{p zsJsEi#)G`c>vT;%|LVrs&J0l%LLr1crg3@BPa?X;AW?yV3n-G%*{tPi?Z}upxPZ1N zTE56>W}@mBf^(?*Mn}7vWL-^+=h&f$CIUiRv9>CuyOs+J3N))8rr?cIFHVP=7Kxcv zu%*}^+u}L-n({;FW0Dl+K3kjK-zB)F2zCOvOt|3h!MfroCy=ViIm2FNavW7eHNm~C zXvggXB#;qrG2$IXFi@4?ua1a8%c3*p?!5U9ur-YvwqRUsdE*3W%t4GFu{7x|q0}WJOMU_n|(PH_)do0gAg}tq$qrT z7(_ey)iJj2&~CmtES*&IMe4i${hGUipLpz|+}38%MM;|_Amvr!G_c5AuQa?KWyy{< zO{YtE2pJAc)Nq}N8S%|3^v^#zZ{`~-ug^4~`)JMHuHG5mX7x7S0tby5kpqZBRn1Gr zDhw#gd|k)|VRYgI20vV&G~S3jQod(MEsH^z919`VCfNvc|IIXr*gXPt+ z64oA|h4g{?8a|+7FzpTNS5g87k&F&Ts>*j1@tz3a?p%xPZRltAif?3MJ@heA13(+R z4<$43hoStLp3&J2WMjPzJU$8Oa%z|@7HAky1;4BTcsPI~va>5RB6)rZ%WO z;Y~T449gx~DCuGqIR}X*rYXb;)FgS`!3fDPCR)kKMkrYJ=n2Nxf&0s1tOIbSC74SM zKLIhh@Osj5lqfw#zRG!DCDpO|QiiSpXwU?~b%G~2dWtv)@0&U0{Ts&qyBZ(f$YQi4 zid_=%l!63t?WouNMebG?@7lT%lq~bS+^0Bhx8{J)8T7y+|;SQtB3QMR; zw^)1&|Jz(U121MwR>N)!7waH(38PIt4Bp}OK@E5>{m=*>W%x|BV?&~2wRkqB;@((V z8r`Y8=9Bspcm_eI;ZYss5G4({0+W1KHE@4zs2MsMBbR|BeyGD)po&PWl64g@o@lK- zJ7^-JH`;ACdo|14`G313+fG47+%>R8V-xWi;C*0L(i5`Dk+V=PNys<&-F?+EnhLoD zTWN&!wHZ(j@8ujK-?sH40IUnKk5oTzjHTT%JCSH}*Ef{r@Eta!7zFeM4TfWXm!do! zV&O8F%2#Ch{p*QR6{w()e-Rk(l0kNicbs?2v1}I{q1>^2ULLu;*HtM9dC2_rrCr}- z&Dl%&c({a;pzvc+n#T}u&mRd#!l&kB$p~J7*h&CD` z>lV#&Tz_*hSG~OjIxVu=wD%JVk?I^^N@dX^z9C@oPdm1Em)uDxQl4i)B}#AUBVS08 zXRec{RcY9K(&Pe3kv5i<%nY9pH!W`GBd}mMqIN{eDjbT}1`mBB}A9 z=l1I|zK8v+VLPP@w}0enA@EZm?@35^?QOQo_26*F;wPq7tY>xad20U+3*@%U0&_;4 zQOji&s2WYsmcGV#8a5yHf7hmu!K{K1++=9lPw8 z-{WUVxgV1y@Ms$^?KrF1hprBg)8@rVUUCw*G;43oa3hfbLiXzKImlq}W7qXrJ*W+I z@HR%or;6TqxpSBU26kLq|5aer!s0hnHRFQb#Pi=MJHUVI4u5_>PijHXscpcRY$1}b(Nt@Abo8Arjd%*@w5SF#5vB5!OUHtE!VZPb>~{if);m5 z98VSDDP;3TgB`n5g5gkCsY<9pxchM2Pe`!A-Mn>PV{`{ylKqpu4kgkb)&~8^04tPp z!;#ca7GB(z>I?54Ki)I{5HS=0!LO}R$1`Wc2$meU=~9u zL7c;Pu07d)o$ta{-b3#K3d88pudK-~>y|mEcN(1}I24vs|F3v29tv47k ziuJ|7DCCXr0TIOpI&{2&oeKhwrN;^xEXh%Bfip$-&>gC$+f@Zek~R{Fa=FpbSRCwQ zGJ>C9wa3j#Bfq1wgEJ4c{@!I|!(&z{KQ?1*B#P`6b7Fxg=6V7CiftH%ZJ-N-j+lf; z+T|-fTr8Jt@DZKDSK!=Cb)f1r&HvNi^_R*pd$Mln8e6wj?E$x=a?unJtPWoq3LiPI zeB!#&3Roen!#70KkmH9t97uA5t<%R>B#DJb*4uO8TKx;iaP6;E{Wemoj++n3V-t5` ztZJ;S0Y-g2tGRfqt7*!NmbGfp+IN zR(^3Y74+DyKgqebC{lLJpRU|xHJn&4Au2xb>Y?RVHJSs76RzS_p7%%|wbs7_AWn)? zzg9m%g1-?92!E5^-wX&f9-SKhH zv!q_>d8LrYp0GTS4mO(N*QRMcikT^>1owWW&;!5f?KUTH`rN{W35jizW__r#q{ie2@7nOvW+MNuX;Cjp1GJn@=4_4nvM@GX+esYc zIx!2klR!lz-u+J%0LK2{3f))2I7JK;Me2=rSG8?W4OT_%XcWo;bv7zmfK}G^8-L>A z%u*mOt8sT?Sp}dOTZnPn3c?~jkoZ?W8`=w;7w7zcnqtW>-sjB5+en%!hCi8$6_+lI z@n*a}@J*bnSQX-2R5DLr7mlAd^M7M$=0cOSRULxw!g1xRXqS!^u#7Jq z1${Q-j@=3x@!ZjYK`IHw;t_SP43fH|xFbkiq#AZ>uI*} z@X&sz`$gQDP>gVDRDAvtLb#OJ<58y}=Z0TCDTR-C0F2D|z2q}_V9moW-S;`U+1<{T zYX0uM9BeQk`u5n}MQ^PLiV6m*c5HDWq$aZqY5!VT6wbcMDPE>alzy=eIzGkoKT9MB zO{BPTNViu|glmx}a(=9C$5c`ixz!=b@G%t)h6C`k78vo@Q$erwR)l z?;03p+86EHIm#{l#_G`AOf_oz)0X@OZ4YZnj)-;Pd4mhK-OH6j91w|4^1{}W_U%4+ z?Z%(rEP~zr{>(GV!WVXtGhw!IlWh_%?#_D|crL$B)<1qO>hX2&9RZE6>fKtT)B-k0 zOtlId%w7J4n58#_?=b}567|SQ7F|w3SGb&7JjpefC*j3lg?-7HLlY;u4gV`|c?{7& z9(4y#$`8oa_W-IANJ877SL!Q5({Fbp^s-!jMnLQuT_;d%_PW$yuNoG22tX45FN!`Mh;@LW) zi-Qd5j?LJ#&^N3WYlcNxamRuxOB`~T$aSK1TZ>Q^JZYTc;w%48iV|rqd;DhFe=LHh)<)Z;M@tt*lL^-_Sr(&F zP7$q{4GHi#OaKAM1k;h|ndvi}vxvBx$Ni;aBvR8RLieD%o_N2NuQCI7PL$!82oRU$ zW0eDT-`%ASTkk((000e#X0{EXfXy!O@Js$lEe-o9k78>{63w20K}XzVo9@w=%I{mr zt`(+SEKvlyL#c21XXjHR1Tlnfu5sW}4f^jkpEG<#B0pKFuEm}r3kgh%t^0&B5yT2k zS2RttU*31+mHM}uYNtyFi9U{?XpW5MaduWiC;=yIjK(Xzi#}Ur=~V&VlZS<1k)>@T zdK=n3>C$D-UZOno7_rZH$Q47<%HtUOGfl^~`S9DceI{%w>A}5eh)RuP3A6;K%xS(O zCfjbDO4(mRW1~u;2hH`MkzRQxu<3F;yqJ=tOzYh?+fdnn?Y{)i&c1tBblLP7080mV zg)1gX323a11Ws!GQyH6mpJ@~!M-tG!ScxZ(3!1!qo>Ybc2;^rvz$k2zd^!y9`M}Dp7qyQ+~ zfacAI_W-)OHZKgf5g+`_=ku65*iNzxKtw}?qsgW#gGysXTV=0b5ifOFhd!=GMa2F! zaaRjQk)W*WYcL_!_78m|^F07b>X$o8RbQG!2#>JbY^&qW9?`*!k62p-7u=E6X4_ev z?X^O)oR4V+E35RY9LOpX!FcV?RtoFVPeu|~O%~4A zr^Q)rFYElbdbcDLxd*A7`yBV_BRkViNL!#qQi`$2F`bXjs;zO~Z(L=y9p)y)_8mN_ zl2^#4BIAXZ0akz7^AWx_Z;WvU&SB=Os?OcXOGSK+H^7(Av(Kh9 z0|_}6CO?HS2Lh2rl~lF#uL_%J9fTF9gGU7$4l)JI)C*d#WTK@K0Ew5&e}x~|(S0BC z7g8FJy>8c&mw;=j-<|kB6%$AEGD)1p?8Q`jEXKRcvk#Uh0G^D+q(jPjKrzSj$C_bE z9^vI1?D@$EljqP&S!tU3?00#U^i-*k`^r0?I!22-w2=1837QvpM zq9RWBP&}dpVQ9_D+8lLpvMVUDEEiC7xzfUd>qX=Y6RmwRz>&IClzeE_wmsh?zY#C%0;RI6scU6yNDDZ^b2652-?bv}1 zf3|l7pEYcauzyC`K2as(Q#w_Id{?V}KfYRgy5-6c~jwDbwlz4aIxYD(k!nGAa^I{WlQp%(%J#PSzOmzT9y-v~1&x~7;E*d3MQZw690boDAktIj1B9mEZrWGN zgo%(T3y<1^73Zq`cbSmfpWxNlE_SBK=OdAOAB2E?EcPhPp+6ROz|eau{HK>SxvCU4 z8!UY;=;U>T2r>2-rpr>fQZkd?8|dPX2PgwxKAztfJWoaxU>0tjj2y;jKIieJF>2#0 z!Erl0_J__i3#ONBPpr~dQ(sAhvC*t$f3!3>fR^T#Xz1{0sYd@EozwH)j~`lq?ddX3 zGqJXS_#kew*REGNl3j{@*NK|EuH2cS_91HnXw$!+mc=h%_VsR4OEvPNm*`^`mC=pL9Tbm+O`uPL#CBD*?EiTIfFC*lCpIP6WjGmF6l}-a~;8sKwPVH zSyHCZhq+9S-s2-oKx@~oGMp!d=#5-9O7cu1)oG=Sdk7J9Dli&LV9JKnIrlC=P0Ygg zHVHAUj{a47JGTvT7hj^$4ojHR7m80D%@yrFO!^_a)y!mo!+Q)vAQ^w1=+Rpj{1JD$05P}Tcs$lLouDpOpI3ha;^k=Xw6)JTX$j6>6TM+>%B~sf`EDwwvqa@4c z8F#U0VpH-CrKsj2YTKv);v|k+;-}M-WNj?u+5SF0NO3m?WNXj3*;B5b6BNbvyx%9>1-w zv7if#uR`~mV=&M%zclOsJ3z$06}Q-h8h}}S$XTM8Tku?RN9&!v8B7YeB z#)@{kb?wTKW|QGn=0=E|??HtA-q!W}UriOoeIwKKTJ)m=mK(3cBvOjvo@2Ziayy9p zM0w-y$}&R?8h^@k=*`hh(z{XFrI}p+msF|U{u!7UIB0?3GkLp%C&W%eig8XgpAc@g zuT!lgVDabR@bwuZmSMpiGkpWv{>{)|B@f%`7??3#&g9mdc2=0z_&p)CMhXA7{R?6s zwC;K-b{dCp;Nh-VreE|22;m%=7Ia``lp~6ObIb?XG(KLrheBn!cnv>8wZn~#_{*M} zI9T?a9`k|h0^!@`neCK&6UI_kXzf5x_Z7;`zZ^b;8aGm;gLdo+x~$SAkUXg+Op-J+ZXS$ z&RC*1_6AIQJwGFSVLq)hWvw_J))kiV$<1hSGzDja6UR$eB=U1x1r1DsW0$JxcZJne~PwAwazl^26ZB?A_BbMg9F(H7g5Ea2qRn#82n*NJtfpdsjoV z&(>`Q?v=luoomk`4kcb-rl91?;;)L3yN(CqJHMAy-^EF@%VfM$z;P9A+J_0yQ4utL zZ+`fN?R6Bo$f(7?n142|Q-b*s+F{M9XWVYyx*HXq-nd>3LT2V8EA71FcJL5XWX<0s z*2=M-*x?SOG~N5=r?!6Mo}~=mEWGe~_NOHcPEbt8`Qc+2_W~MuW+`pbiW-!w0Hae3 z;OC~PjAO7tFw}XuM*wm1v1x1XwaO3nOP5NbL4lAiAuVai92${P&u;{l%cE_x&^;7~ zW&rK<^y^1hMa_)s3_Fafhm^GeP$PHIKf!2%Lg?m~Td|FwUOj#7+7AY47B4@M=u~cRS3*;AQt}6vF^n(&V3($QWh3=5t%THd4 zHpcafV?00?0!)8aqa)^N;2HZDyz-96TrL3nq$^u(b=**S2k^=uK<`^L+=7c}nIPvt z?3;YW1R^t*Xqo!HG{GbHPuXQR^Bk0M(U$nTSRZfIDBEzYk4w5nZUm!uEkX;0+%r+~ zhJN)bAm0(8IK{XLE4S@5k@jFc?A_PsrI!_pK4ng*&c;|GVm#$n;4=IH*W`ToLJOI8 z(koe;J)5EYNCeKpp{g-aePQ=@4A9hVT0l?2d3zny;2;^~4H-dJK;lQ4Z?NA{4|b5g zbo_;D2sB)k=dCJn6#hjG1}ru}uoB%Qw-fQNkvlNK=b?cTR87%=vdIvX=jwvE@XqH;xdF?1Eb8?)CsqG-&0Cmrd?) zm!caJb7W6W5j^{OwL4Qc&&27C*G=36zZO1T+l|c|e_xhPPThopiaLjz8Lf&d5OI|^ zRCVTnqATU=5}zD8R_5mk^`;}GxDrAn0*`3|3I_x#$bzl*k~K`t_PF9-nc{6K{v3_9 z!9DW-VzdeXg`rq8^o%UYQvrkHgGwUp{7F1BN+bUK^4&yd|_l zti6WHY$gb7ig4>VFG}PM3Nwc+8e`f+S+0-x*ttGg>wRu?|M=6$*Yz(?8c8xtE5=HA zAfPKlZfXQFSa6CR17m0DucVA^#@Uo*J8u!tF^pwaB)i)tqXg^41xwtVmDTtZ6}|&i zH{0vG|M*=8@ZRwmITXw?zG7{Dr`nThL5POJAzri)G(t9_)3&@cgD#}D%P1p$7(LYi zfMWOJduv4l1vm{9BU~JOr!8<9jTH|NWdK!Ddln*`Z+cm$dZH;XG*$xDXzuocUDI<3 z^|E4X_|HfQ9y*8xOh8Dp zAbx5GAu z?c}+?)VgRKd~un3cb*7(Ag*Y2z^u(fBCmJL6&B{uO|5aUW1OAUYsJ5<{H^k1KXo+t z9(CL}GM>$y{3B+(irbhTc6Bw*08EdNe*y#bajh%p0@y?_QJyx3;!ylMvYIUkz0-IK zoDfv%TLzNda!MeliW`AaU0wG~Z_x`X3T`RvT-tZ)MaxFIvQtlLu~n{pCRf1>FxIuF zv{*e~-+n^QF#!nq&0(__;pLUSJpMQF^dzW3A@VQc&N2^TwY+z^)B~z=^jC$rtRWiQ z(PWO}x11phpU@*JNNaIDt93%^>jI13+oMwfavG|%X%9MViZs2u4+Y2sGBC^WD(|Ph z2-a?G^mvZXr)K1gIbv(C$c49am;{4IrDCgMYU`=pcFc)1!(}UjQvn1It|RNX;+NrR zbK4;Y&;r{;L+rN(;BM@1^mG&*0E+KZZL#^pgL1JEZu^>Zr~b3)c6htNCeaFFsvL}P z`>kq}a40g_Rp;~|CMeZ>=EE_rmT(<^9gSSu7qkW_A}zi_Z>#?5Iq4`A+48W1j200g+65?NGu z>+fiLMG_6e)dwq)Zc_x~8tz@j`F?BQvX~=tgLrcLNND$RGO15;u0c>44sW5>`Ks-D z%>;ixY&^@L zWQi-kxMC?WP-`1>I?_ovS)gQdisYW?yXZIR1tg>Hx_1CVF1!#WJZLjdoQd?av zP}pYB(bq1S;)Dkx@7*tYL$zM!47<4jml&_ld%n+}++TUzIgHJ^ALI$?hyhSZ#KhC; zqZ=j%2ooPM%0Mo)>|&%Y2fO4rGnIRt^W=l&Cq4}?g9_EAe9DdKNAntnea|=gFSxlU z*vZRzU;6j&j8J()r-8yy6h@@uvz$y}wL*VQNg@lfIUdVD(bR3^xUS0At zB|CF;j2Bl?Wkdd?oY0c8U&v-KgIQ@xR|KXvD+?$ndEE(&QgN}F+HuN*Ix&K8O1+;` zs)3K-iZVj$Dvl$Oc1fP`X+5u}6_O%T=)zH3&Kn}JsfvqqU&qid>sp0mtFA`siN&cU z563|xriB6g15Wo0nsR@0L2cbZd8vJjil^U4r}F!m^?DO%9`LdI;$XJh_jP){G9vbe z!C_VT>mccYk`>*6N`K^3Xq||`Q8+lYC3Xi4>7MZ8LCm}c@l2LH1?yf;ZouIPb%O@x zS3f2_O5mADXvryH^4`wsK<4?IWG zS~^Oc>OdP2%0+x~FvDo_kz@eN&5!4x>Q98qAWf&h)ghuftf30#h+FPYFb(#xNq9yErRg>_e znxkYJNhE|r&g_DTFQuC^2!v_CQbHGs1bj%IJe9?-x9S&HBE_VOk0J-<%4{_e8!ir?IidadbZS2krzL`wisY zQ{iO%b;i_tucAeglj4jp`lc6|y-s*F<04x5G0C;6a;^QUzh?X%{O+NBWP#VZOZA>) zHuf#$7VQ79Q8+eg+2&CcMpFT3gPow1f+YE^#YSFNUX01GOlWxj-Z7QG9wYK9&t{F6 z*;E`&r+>;8svD441HM4lf0Y7zv-2i@d|^M>IQsE1UU#uHCh|NbH~82Kkb^uk9uUW{LN zq%x}LJoWJBM@_3=>Q3*4&y)aK%(5nFIhsG;xbNsa^hf&GIRH>00b3ZOP9z+;3Md;h z6~Vo!Jp15v87%wBNN;+I_q&lZ72gzIToS!qMbkmK!2-*~`bJ=d>|Q7$_+a#50X1yu zmQQflMao5vCRXx4`^9vC7J>H>C;FfOFTc@nkH{|S*>a%PEsK-lbA!_@qa#tIRrwKr z^dJbeZNP;39bda+b`S27{+;mU)MrC@xv~a(?Y4vT6;-DY%-*YFKz_$VJt9aIh6}pq z+&3yghAQ$1NEj!?HP@2Ec*wh)W=9TRoIbmDzuUG`%O~7!^q`vi(3IdFP>u4nXd842 z+)k@rGg?B|Fb>00zzh+A%RYrSk!Yg-9daxP_X!#0eyB1TeSq9MwoOYs_oK*WeO*LbM4i-#_2&(sxbVqhcs}TMjNX=3jGCP4kDw` zZby2Y!wzr!OQF%~9VDt<+WZ83WwyOg7_ zjKR%Z0i+KvO^^=UR(O?-^Gr{eueK%oPLS!>A}ev>^n*zkzR)0bp{)36kQQo86b@2s12c_OUXT}o&6h!5E(CBYS@2gBV zB!X$N#YLM9aADqtb%z0fDIc3>M@jo9G}<8Ox7Hh(sjp!&S)1I9DV)iH7{lkx$op1i zq&j)%C4pe|nt9ZTPq!ZKmMu}sD4bcbp^c$b5Ey0AN7!jQQ516PVbIjYWoP*O*6CtN zQNy4aYH$4D##sZ}T)~VYGUAz93YvzM2Kf21^|lqE0_L3)Y~#9NkhOY5pACujS-dK| zgOq=18<_R2>BEhqEi!DP_}%tx=6+jYiW1-I%2S;7rT40^Jx+!e7mHGDm$Yji@T^MO zRaJQ+MrnXnOW=e*f!;Mjb3~{-R*tUHOhZ4eQ_+0Xls71bZdi;$;@;X0r%r^O0U5$?GuG*KQ2X)MTY^Qh(jj>LY$$4SfO1bl} z(F)U418Y6LXWI1&TbhJRv7NXt3}C?$Y+bYrZL1p9ACuY2ay3CD8N|mO`28@7o)LhzI|@MN+L*NKvh%$l$^P9i}GQXQ$~VWZ(fs#ae~ChXSFC zX}R4-b>++nq{ro{%U909K}jqXnG)J3TUYmSZtMjC7KK1gTAto@rU!dC(IaWlK>Q&h|L$2DBdi=@sdaW!< zpDLxt@$bNtWE&g5M{x%sQ(4194O{E8CF6yo~KJ!7r*Rd=^&wZ{1G?}V5^7GF!XVpO+I%W1oE=$)7W!_2N;nJsy zhSROVQE|eWPGu#&E0*O*XQsfuIFItR#0OTSS!GrfpC8i$V-L1^7*u?jA=Jg zwXcr`?L?2=sy@ctRU`zpEh8QHEWuuXGHN`i&MPC_UW(}5*cngfN4)PY0nR2zmYLBk zDIvZQBJaXpKdXmSB_1tzt+_{b4XFt5yE^bUAGBvF3lKe6&21h2r-D)Ucl*P=-%J3E z3z$-fg`yAjb6@J?2;OZ0wj~*H#1%d{FJ^`d2mSBgv1r@L`A_sdz7u|M;s=CuB<@W> z(m>XCDA*sexxKyZbgrheoK>ryW-h1>7)bz`$LM8O*-aej^rD9e2%8j^@8$pRSzjG1 zbeJ-OhIgO0C(xt8y@vTH1a+CO+3Rydd9`ET`{_}lFd}xSzaFg#pF6ffAp;&E1;Oa`W~uEklu(8gnnE5>X!?n=yWONMgZ^aF=a{67^f9eUNs1 z`a*oM2j&$<@$Zx~n?oZ+EH6y2!I{${t-pdKLDK&3YP-V9kX{+C(jV|^Pssm>;uwtV z4_*Tf#%Zx81%Tg14j@Wjzv>l_1u7!ct~Y&wNU3)T3(~%4hA)YW=pGTv?gN((+=HEz#BKxlPiwPJj(u%oLhbc^%CO&zh=eNPUUB z5YqM`Hs)&43QRxdUqg^Xyf&06yKZgRFJL}S#*y3l32eYLbiZQPJRTQRmNF3I2~P+J z+4=ow9S`Y-_18_aX~jr>J$PpO3o$Cudy8uU-w%Qz_zT^ImhcY9k(Y%ic~4XLMyIy1 zjaWj}q|MaQM*Afki+>6Fo<`{mg%tUJi$E|UtD_LIyn$ulr2Mzpq2>_dsw*&)(ZNM*no;=Kr8)QfFdD9 z`1x7+j2|(u^qBa^>6_K8<&n;?v^jn{!1aatGMnR}lJvLRTVwF0d|Rdj7fNgxt#;Fe zt}>vo^$Np((SHs|VTma~9Y=MWNHrzc(H53vO|f?Zf;Ju^T`VAI@L*?+S+Wf%Wj4-7 z5Wy@m^IeL--+V`D3s;ZfaMnhRt$R@rxc^yxB~lR5$f9fX+5#*tBnmb6ScevbXVtF{|U_fO4hmCfD&%hV3 zy;nqF?pP4{ge%b0p)0|RO)cx#OzcPLWqfpBQZmPOKFcF5`ix@J_PTRs6_Sop55jZ9 zWC+x{Pr?;QsU7fP*7zQHTXSrvnQd>=p`3R4f%ui{syH`M9ZQyt0g3#+Tc4?fVQTkI zzfdxO$xK!!V!_;B>E|z-^|{G4Q~HWYt58En!aw##9dPwSu@+4gcchkFzui1yY9@tx zF>5L5#pjfuC7Pom4EI|R7iZ}Z1+ve;?SQyFab3-0CGp7hR!@{0UMB8#U4p^3n1;Fm zlQO4)2b={di{}Cn5ZV8QTYGZDl7ydzs!xeM8<2O<7QLl@T-4#vQqY7Rw>QB3#eoQ(W025C@(Ep2CD&K@+hp_Ifea1_mH;i0KOA7bBU z2iyJ2#th0}=E=o*zn6A02vme9XzKA94mcNxui$xmhbeVVXHYyqAz~QL0h*G}Fu0#W z)D%YtY?1l}jT~51alCg<)VhMHtMPW8Dz8D%DE|Lsg_%($IGl2oQ;5Bb8_Gbfgf<1S zgNP%>^nd`sqWR6E_+gc!XVJi>=2pvA$#(KxhOYa*_^IXS-P=-y-WvgmWqfDUXN^#FXw6Z`Ti@BirRngm*Ur4-jXh0>3U{k@+7d5})!10!@ytB9$ah zb1BKA9J~N>!sHZ3$CIk5Lg;fe56?)0Yg>I|M~EF{eu>o3vdM-sDu@s_bq!LhkNemV z?eDVImdroI$&~|Jof;iKzv)S~E%vg3G1GGJLlE^UQf9UVJ`&EN4JD*|K8JlpR{M5U z`W_&fG7lmh#@$vZaQEhaNN%TvsVM_I3x=E@o}B;*#_aT-mkRv4yl?FV=(lbon1Y(#)T8=r<}Z%#HXu25!)n}A!S!T-D;zt zWk5t7P0H4ozDiua7tQnWgCY#Rolqh<;yI|7=&o38g^YG__wN+nBP9kpL>aPfJ*OTY zoNpZmY(YV~j%WrDrk9>)A5R|^8SNf)&Xv`hA3)_zfbFlW&NGkdz=RV(nVL}D? zI*cZekipNeT*K->;G)_WlTui?uQx}&cu+$}x1#loByl23{=Y0azdrH$=Uvi$8liHi zF*BZFKDVHQI#fkvDWLSmSe_11C2gsVEkA^1rq=zRTY)zlVFJ0>+?#pYgTp{sk*y&H z^u=CrS)dunYw!=x-a0ZJ+>TDKHwHso&DoIls^kuD6c|}&~UU2=W zWh!&$x>YfLb}DLNF+?GirWJc+ptpO)A!#4q>0NZTlnppvF_lmEX)S;7wUbESclBkM z9h87!OCq3dJ;GnFcEGZt)l>WTYw3Lml=DNd+AS&fwE9vm0S0})YNb&aVt`Vd0oC8biYzYepAC~4DICm#pUde{;k0-3 zzM*)8A{{d2Uc4tb>U0EMvMcdh7v5TnQZ5?+LCO$gkJt@)%kJ|7d~Zj8I2Yt1u?!@5 zNXFOA8$;_So#~9!rB#T(%{(o4$XihYp(EPAUj@u<24Vc80h#$#v z^4HyaQ>4!nT}WlM1Mnz@=p#+Hoo8_F+W{{jqzIY{2@osk-ZES}%o3U<8^Jx@-yV;$ z1-%N-1PfKc+RG))LM&Y{vtVv!t2XQGZNaY2U#$Hv?pWn8=Ia$?;&d=Ua^#Btwojt? zYq!978IY{dukL`&p2lgNSd7<)z9eTJ6Nlm#eX#Ho?>Ek@Y=`(@kAI+42a@~emA-5aA)k@?{mBOjnh%O^l|q>^5tzh|qie>>YDrn%7NHocUHJ44+q9UuT1 z8t8kR=!W4=nQo6(j=w3b;i!%OX&kffLji#s))C4zi#rqRdziQ$=HsHj7#0d;O3j8< zJnLpGM}!rkvuN=^zGHDVbO-eFP6QrON!7NCf?8_|6~Rx)P!ahoj=5vR^?R89L&_q& zYFr_lP;hMMeW%1lEaxCiA!8#nY#0U9s?yj)9djuB7YGnMh09kIgq(%v(xC#ZT4gy1qW#P-f-}Ny36G> z%ezn9a;}v=ZGzn~Z62+o@VUocX&6(N35hqF_Ytax?rr}Z>GX+nt_?Fwyv=oE`GthY z>x4`lT4V@8aT0x;9tiqOfCsrfT-3BWndJkijIR`c%I5xy&2s1&u~cT}=L0tlH^j+S zSuyi>*SnDZ`ML&m{->YTPT@g?tsJk-ezV9XdtTl{GM<{#{n56 zH$(5u1kD`#+l+$YX+f?+;gX1~gW*`LLX~Q=WyMyznWBn*qk~W?DQ%>3IML_$zG{VaIvsGGj_p+8(z^ z?ArZ>YzeBZuisCitdP>t^Cx&YgmVq++S8?Whzw;3?~$f;QLN)N@dgn7g7ID+g%h$^ z$Fe2wRp+>%ZE1(y`a7o#7Lp<}+#|$@VrDM}!4BDgLC&Kg6R<*dqG5tc*_fW9f;b%8isc5?dxnCQ@%&e6EM5 z^-jQjX={Q&z^CwgH<&zdsaXi-twN7%(2Ewx*=pcbKuukEi_AeCgn9 zU9PhFQJ4>vY+}31nJ)1o(4;s^w4*dc{;g@Px$GBu!ZOV)q*=ZGsouw@5GPB0I00{# z?q(^916rh{3AW@h&}3&9wk7hiO7cvk3yBZ;6)4Z*u!3qiTuoWvRd_wVhf3Ib($szl z*3_}{GM4lLqW|iu+0QSONhAOsOvtiMrU!?|EPS<7e9W%~xBDBq+&-XbhF}nI;UxU< z_+Dloh#f7PzlrnUTJl_JN0#(MfsIlJP+NMtSH9ZeJJtxTx9i}pfZq?gR23ol-}W6e zs?FaH#HKu)a4n{YpNQf0{EeXZS+g-s_%E~O=`=TPdLVMvskM^i_54##bpf-e29JCdu;~s6Q zIw%&QEyh&vRgGiO+z|`!T5PEBuor|$PqC#Mo>daEed=&d!jN88+4H?Bx^zS0hR{8B@`?w z>raE6j6_9M#$4EpVg|r~4)S>qREaO1ORy`g&Uicxk4Br$31#j$%Z`Fty@nNtU^}L+ zkcEPCPI!8ZADxxCnObzA;2K7k)eRl`6-u zdHRjxP=@w1)_uIEz(GQ&>`X#B?Q0$rEYnhKGTEnhIlQL`3aM7IGS1wET2`i&?4)2v zCwiz;JV0tL*IAizneTaVM4)YXQDT(T8N!ptPyVbXLj(+2TW2NCEmhC%~gJhL<+%DLHdb;2gFQ`V2Qh(FgjP&HpL3( zswP;-Xh}->Lot)@1N^J@L#U(UspQBJoa3Znpj+yK2LVkM5oM;>v{dCk<|vNPt^T;V z2r*>f`&pF4TM83Lx987=i=tAl&F#sAo_2pZ)^@9}B%0^-wXClx73du`Pv!od$qr7C|m6G+6xC~dG zNdSZUcP^`D#a?-H9#t(`kR%>Lcvyes5-wgmLeIcoxTN%Q=b%B+(jz*LT3t!t86im0+2VuQ#& zP4{{@`p6dg{ETJ`{Qyg%)yC}qFmo&(Z)T7lf?03J&7P#NA(fiQ4xYSLQHRFUf@D`H^Yi5>haFCah zW}95rFe$kwKtK8FORAL&R+E~wbqsw+D(VAZ^NXc%%6*@$GajD6fpXL-YT!RbOkNoy zLlUwjF>GrG;EGnVH~cnfz+WmYlXY8u#jlEz<1Mz3Q~T2imd!8=ob30>qA@#Gz@&=N zTovka-+QZaf9p23Ng&+#8T&;_A}6?_-)riEH$6o+w5k-MqI!@>H1QX*f?;naS;0JL z`_pAop@6_*LXP}bu0oF!5`+71-1UfvO5-f+->tPlQM2YLf6G;``Y{)ak|?)-h`d7? zkz1zvGXCUAT;1iSS4$Jjh+@+L?={rKRqLM^)z}Tb*J4xMidGF7JWJ8;{Lz4LT|;I? zF|Ush@_*<@>`eFjie(9QOS$i%K2o28MlgHFgGIDpi! zp*hAxktohQG;54PVfj>hLpf)RSA_0`<|*5UgGQR?08C^eF)3r0OueVt|SPv_faUj!jF z@8ygvsNxhigUcD3kDsMKmWv%sho4E(rpO z17DENgehI-jNwyqBOj%$4&|)dzom%SLF0q-gfcYgT)@tyn7QwZH%6&q0Z_!wiSC}+ zWW^&@8XkiBsOPvpg#09n@|<^V4HBEI(?z&CIaMXCd``e@#5|lGcz=CNl^-gY%`8Pc z0)F}n!pD+vo?InS_)rp2ZC?u0tFpOminFJFynWMCdJBi&c+HuWYVz6oCIv^;%FFF% zp)hnnW1H5@#LUqJa_@!EPcu7p67rv~?pA_>IZ`{a>cfkJJp*hsIj}|DOo~>3z%6>s z>Hxne9c``Rt=Qjkf6I0FQ%mRKbr1af$^~EO0ichX z0Hja<%enZuRNT!O1xMo#4uvA5C9pA1kh*lFMB&|g(-XGID?csWTCTY)ii_zS=iHt1 z$=tx#%7EghF!iJ}NPtmo7R-ZHT6t^O{{ro=n3wejWkNv^T)rjvQ*)P^g$k1E!u}gJ;QqjrOb8@z*&}btT0;ic5mLRdusz zQ9uaMxn+0;&eXF!@3gZl6Rd-`RU|7(6p$CV8>t z{%P|Wg*HRdE&k;7u6oEUc~QIz&xZwFZ&u&c)BZAie-lZDD+sn%%VKQZL722bFi%@jtj6c;pSBi)a-y1_VIlb+bf zltdmd{c3Mg6E_~BIvbrK%~pUnV$`(`IGQ*QQb5q=kF;yw0pkXN7e9P5a3=&-{a*fhIlk2W~MaALqoys^@q%r|O@VPGA$@6}dhV+DwOLbj)V>oV0= zPZn$dHIYghSBH$?A$tJl#U=)1I+(c z#C8{pqrsF~3q%Omasmn!#`}YO;_`FXjbYxTcIh!gL9 z<>ZdFpHyU{@i?w;0KKN^m)B2fILwJ_TF-%glaDocEAxfacWC6ZO0A z>|i;Szm=1or&T^h#uTUwXo~f*d??oRC%jP1qw6uT9WRE9@tX;8ML(r*cBk#{@hai& z()=r->^F;2J7WW$>cCB2$`Wut(b@J1+MD-_lYUo;^TWX&RWM@4$bM1TiJH>G4Xy8G z>Mo5{+8)>WuY5^QlzT6oqGpRm41kAYfGWT2{rgAW@~HI90R8-KXLKj2LM2iY)P9fQ zEVW{4c(p?~tS+AlnD|=ix!lke;^ucrh8{0M^<6I9EXXeQ94O8ssm5V=b`Og@t#E4W zPWMRmjVk;Q(LGES0KTfD4j&YH>~fs1taOI^3n3XUhew%Yi+qU_j$xKg73W@!;o zp$IIyqI3sP-wRshW(;@;e|t8L7^q09hcLqKE8?)LwF-y4O4ZF8LW5OVGD-nMgw_b> z@sH`+R;^jzjM^cdU-qK1w=sV8vE21>7}zXTZDK-n9Btq?<6)?bSrLR7l;nNU>5r5M zzhN(7DpI--kj+C^wplUId3iP)=eTvW6Bm!`tl0Ry{LJZrPsLK~(Wzj-lDd@tv!Q-k z35E&%@sD?K!LSFVXu@i+F(;8Qjb!a-07bSVr2u8AlSXi*bn_0Le5wpRd*dEErYJji z!vNepc4$bTN#*fYi(yK_5He?JQ>KXopU|t*I|?$c`$3EaIhVyX_qLkbslCN_8v8Yq z3ahdwd%)=L)xDA2`3!H+`RZD;Sw)K%K!!pfyOx0!NEpdX6ViX+2$cQbFJcG4+it^? zn_0We#XBV#M)s)vl^M;8x26s17S@2OW1uXt{9ZmtT2bAGhoJ(9{A>Y~X0?RM@hWGI zUH+~>rsnglu#_K=%2#`j+@v10r5-YL+fInHhhmuIa<)^J9$B*G@^AC}{dMBGa4PQh=_^_Xm

xow3his0c$l5YB zEFgh>A+IsRU2OG=F3taKUMV8lA#zNEw7XX1dJ>{<#>$O- zttLIjJIz$G0K%hNVP){+-#hhn>%Gv^W>1SJE%Z8903j5>3CYTVa*;h%Pc~@FaPH@k zJf*>C-t)lj?dx7cYx?f^w6S{@x_CULavBG@J9RY5-fS)< zogC_zjbzAG(6@ovJaHx>mvMGqIlT*u8i&mEVt>~)$ zQoikTT4pGM1PAwDzG|q^@4T;YekTFU;`dayt~0NMSW(soWckJl8a3@-v6O2JR{1f> zcnLe@#iDZZBmBdEi9S&Jz&R1S3Xf{H=To^-7UD;pu1fvCF;h=$WO$7LqZ9GR+= z;fB>~oq$lXI`O8Q#+B*zYxvV`h?NSf>yRwzrCak@cv>x$3s^Cq8mm&V%z=4OF_QUv z-S}C^D2-(_o{1vDCG~um2T1vnK|^PQ-qCaFHl&TL`@spIN_fJ@<%2?xhc)2eMk1@! zFfW!RyddjBY5&*Vc<%E2-6DApPdF>~=`)Gw&OFk6MD}VhOF#!v>{oh zCUOLpn|@SPh&9Cq0VMR8G}hj`;(sP4O*n1&J3juvg3l}QeB^Y!LnK_VQ}=V54vuB2 zZ?OUNgVjrQ`-G~rI;IR6)k>(P)6EpCDl*-rVV$x=d_i&rq&3Y-kO?n5%?gOSw{>ZI zTZw5ohkwvB^yy}Xb}8xYj5Oe$EZ!W6ierL}g)T#mgt;AxM<$rI6Z|L>+ctYK z_4?WE(nh6i>))wu7t_%v(U6>bO*C%s8M7U#v+yi$ZQTa(EE&N+fhw59Drut*PXl&Y zboi6A+9|7F`{Stbu-f(uzACXNk_J=_LWkCCkyIFHnjJkQw@{JRB97;A$p(Zv*-nV^ zj9kMg*Ytj18r5;wcs9iE7|!}sr!ZKOV#4HX!LllC@3)pLUSXswp0K{X5Txsf0Fk+5 zO~NTy_YE!;A3gd&MrX2KrB7Q~(<`3;Vq$w@EX?2xcJu-ly%2VS3v1xsk76#L;oJns zGgp*Dur;|GP@ym1XW98_5{Ru3`WkJ5E*2{$L7_ttd@p}z?cJmt|IReJ0YmxZC3*Ce z@~(%6Obk%L5tgm6pI~xQ(~p@KF!nx11_*y#OwTSbN*fYa>(NsNe|-tLi|WkneLFNo ztlleE6#R&89~%f;3xR#@!95V`Res<=$s7wfvvIqe=4DP?(<~ zDs3`QY|M^}PqKAWO~I)qULbGpgk=h<^ZT6cVO#7ExnaiVx$OPXM4j$}@Q)ga?~!A{ zOhm6+B5PD{x7hB`V#&HYkpNfdL#`n4{)anKdylHJE>)5t7UYPAP@H5-#QHTpFZhmJ z6fN-N{D2RWY5|YMKD6%9hbERpFS7+d2qSv0-f^swMZO#tBLMN2Sp{VnEp`4V660YQ zQX*jM&>TG@G8b?@kY7pTHHPS+G*GZ{qhe(1#=JIQMZ|pjy6gyx;m|n)^wW|^T;#rj z?x`a1R;-=b{^d%z+bEi}K4W#`t{f{X<7JGpEMD@FkN}ZMkxeVyqw3G} z!*e#;&C>AM{{e+-g^g*Hy!GSDa z!VfDYUc?*!qwf(v#*d3r{R}7z$KIK{l`m@``T8rkIsd)+-i9Zqf^i`0edKWX1TP-o z8q{QXH9iETBdR$0q$e7Za_+(Bd;eLNcJqh`#)grjN#d(XRR3GW#S8>625dsXbJCdr6XmPI{o5fkX2t`S0DmUJw+QcAnS@DV24Wp)1_4LfY+3-w7Y9@)$E{mw%u&4G*Dn$wq>%u(Bq;(}X_;13~{Jz7G#k|54p^zYMwH*ab6$2a;Aw7K?{ko8;J2?f0Xnh)hc zAnVhf7Mr&%qi92TrRL?AFMW3OKf zHL(>Xp;*kH1G}^=(pkV^&0JDV`i~zvF5OdY$L2Rw@$^k$BMS54t&0u^R+|eYLBXt| z3tHvW2#&Zi_Orwf9V>t`kRE1!OFIrFEGI1zUr&}B2Jyu30({~>C7v77@1|W(EtZ5w zvCIINoF@Mwf}t|3=jmOf>Ov>oyO)-acX`iX@=syaaW`0+Ia?GN+xyl`FK2M!*t|8M zW+wC#qegNru*x{-5bU2&r%Gv}gq#Z}c8EhZsnEI(@lDKmxh*!1_xjkhpUBxc`x$*% zRXy*vMTV>MPsPd;&b7xm(wFrmE?%21&wctU{7=~>U4cg;Rwg+?U9VlTP(mve35Gw5 zXdQ8W@V!3&5K@*Cok=?ye9#2XSDr!P5V#u6p0n0+Rg_c)7qaB?LT1V|<_pr*C^#95 z2;R)xs`qGE47pX+t{05-?iWg_ja{cRlNGP`A4`=+(btNQh<_C^$nv;Sr!@gN2i0e%o~bESfsCaFF3X~5zm z%wHHKSn)6^2w^C_vZu_a5%rJm6weGe5z~TpRU5*xV(NAIFm)CY7;F`*N2K86XoMek z?CMKhzYeQ-n-TEIlb*=C5o>AZOR7>3iAi$!w^E)v5lJ-I(s~hRF|wCYC*Yp-*>o@z zu@?w_+i~u?_Oyk!cC$RjQ8(h4Jx$UN)H%?OK}rL6K*#y+anWcty(A0p z100kHrlWjjPP}fgOY|4glOSH^<7->5Y3K-hLB@YV{Z+HbS<=|{G*CwbUIze}czR&Q z1SG3)P3{m9bKMI6bgf>-ym~adMa;CV#vXScmWwC5AB+b#OsDK1WU zHd)}G2EH{x7+n|ycNh0x51#-}zf%RUSA{*FCTgrpxJ>izS(#caMlF&0Sa$LAwVD4h z*m~M>_bhiUMiSG@wK*G*ra3=Eui4h$l^2<0f?`CuTW4)3ik8W?{~{E1JyIKhs_`Mx z!p(+e1jOjztsE2RCIT~WE(|Eq&+G%&@8X&x25KV{p+IrlFptRN3)#G?S7}L!d6OT9 z%R&%nmcwbF*^~_E)JH^!={J*{IAWYfR8@@Fjo+PBLOU=X=CyZctjl>BrJUB|N)gYP z8_V>eFlrNwHs*jACpWhenp}?HB$e1-CqvWgqsLU+p6*C8dL*XHIsA^;OMU9YrsLR2CLGoZKD6Xp>JOZFqZ#lYj2%#V7wLp?J zibxb|#VpT+!?l_XaCAQE_o5d}pg&_p&;&gnQ%&_4&|`?)ku$vn3YW;aCD?^9-qk=Vet?<9e(`)48Uwr5^Q zIbL6SJ0@za60{2HhbW968UyUfHEtE?dQLP0R=f_FGm@R1ORl)Ym^H1=@mlxx*#QDv zke49Qe!sM@=X&QAzsmuNreD(tww}(ZQJVT_YDmw_w@h%vhX+{>$A>cuU8>Waxb3T< z2F}s=M(49}Qqsy^7J&KE9NR}wScM5C^on2eNP4~`Yz;;csS<KeP_2mwZoe7=c+q zv4RR1v44C03HWPf7bMs?aJ_;=9k^m%!2~xm)P?B2WWbz< zktkm74d-DhtL$0FO*!Y_LHW2U1#*&?5i_!cz~0kpc`INK&LI-38>2sYb2;Y}C>cSo zUitt&c1e^LrhKPxtV}h`aZUI^CoDEFE=vMq&t^h6lV2yko+GuOgzx&9=JkXf^^$Wl ztQVNDq4wCH>}T=Y4nRK4<$$socriG^5Me@K5z3I5fZ^&cZoZ44e_pWcE6T>6zH^$! z0?!YzZCBBtJ@zvM0rI(edA$SqExnqN7<3WEYdU!g>{QJyLpP6^y3(fs&dTTD$bA76 ztP6f)kZ3%JMXy_7R znSV{si8n=4=F+l=fO~H-j2B-n3>T7n+8J4Lx8q@jHKfMCkH2V19gR$%2zBq-!Ci`K z3Jbi0BcW1uCpd84+x7`q=cpjRE>T}}K?~3E1l20^#$??6Jsidks`ENaHk+Z-T|MEX z0Sl51Ge4H0BEye$)A|6bxSR8jzLU2AN4@sw37j(}o%H4mXRQ6}BA0@?S^Qzis5>5r z#Nrw+?jCvTN@~5MM$m}lOk`T+pKKOXdHj8V8n4y9;qY8YfU1S(J7#ef|Ox_K=8d^2Vju-m+7!=6t z;2_%$N>gVJXaSJLs;3GrS_dzfl@()!n~vVja#uPVlx2IXsezO@F;86=`BxkiC`^(?csX zX$Pfca4@wJxW=8jGYAE!x$qVw4p}dB03om$wQ+|FZ*|Y9+cI@K? z>J`3A*FL68ycy+FcioB?>v3UnPjL^U#60h^@|+d{96n4OU)Ems38G_rd(aK_hQWPJ z*8V)^hE1R#^#Ur7!WG+8axix(gE&7i$bI(a`@?1)QnIzTqK7XItM0NbHhV;?i}IZs zfpH$^q@RQWX0vFI;7I-I`ayvZdkYk6kHy&9BX^^7MD- zDA<)8g$E=gLVT0qLxD1Zo24z-k(dfc0#=+AkOBYV30)QoC1lAmJfqr)Z0_m>JH%WA zrw7d4Di`J>0_|VzcNOS7b|g0t5@&K(^PZjvxIFC)$ROcKLord4If?NKv+?3HUHMX8 z&o>)aI%bfvFrT`>xcErdLSm)fG*M@b=y>bpH+V2HzZLlHGoWz+lJ2yyrvba8fX|Y; z$253bdips?>68iUNo)ZNE47bR1K$1j&?e#|2oXTJK#?Yv8*Xu#SvAOj_;=F)O}3G;`+P?<1Fu?ShA&pQ zV@8wSWaNj-eBLe^Ody-kd8)b<036k&SllI`H-QVt`8+xey;|L0$=F){ zN{Hgm0XH!w^j)~^Do8OR0LwIL+`(L?4!Xbwi+-^h#jYT5Tak!C5`BE)#i^+8V@1S? zYIaBHPeBSi#zHIxa!EoJEGSRK#Rz z=pwOi5+0R;W}3^yaEYy*)@S)k*e=?BE>8;m4mWR4%!#iU=I`;Dbqb;kVhQa_N7v~+ zECvG~Vh+~f5DbcsExVSPF_g9v{Jcfo@c$5h##lfO2i?T~HSeJ`0NOBX2b;`uN}(Xq z%x)Ns`%E&+^nmD_2?(A`6!`Hto$??=CMqu-Q9amy5xFSD$DrD^9Lc7W5l+l27wyeR zR&tF$$P{NnyFo!+36po5(f~Px5%HmW42XAqA)=a4iF)tHs(&C4U!yEDn2q(?aKc&U zy7$+0%0HF|8N1({K9H9=ZrHU2r}KyE)lg!Z2(K)s$F1xgbhcI4DzbGq89%Jt=u@3= z;v;dmXhKI0@ZF3(XiJ~oE~HdE;}JP}4QC^>*Shi<{1%&A1sg_ zIQ!%dl+hP^*?HoARAH=)jC8YW?qrE?N!a2hYDf|9$g;?y@7wND6RtXpB25kdM zN!sIO*R>#RF2@t#xJ>X?z`w0u%GdGU|8kbyLyZJz;H*7Tzz5nd;R4oQ_Q&suesT-rtlOtN_IJ!+-Mc-5d7wQ zU7l(>D-=#BLS`C2tb7R5+29R^$CBryKOQ*0Qft01Z_ky_-3(Vl!YN9cCrj!9fJXsk+Z=nn~5p#G6H zkCT5o@TFnqtoyLTZKGSvwMWd9$5I$_V5w10Cbi-ASChNM8T zBl(}F9%4c){64O0J^|crG%-PvMR2MZvNjkTFG?!SR7f0(Hgi93QuR(FXRtDxj z-bk_q;=+cduKDud&DmgB4PgjpLO~##oW~dOgQrxX5*<>%Y>p;j^|X%Nec#~1bQ_k= zqjJVYg<>~ix70vOOo5Lv{f+wwUtW$Stf!vCIj zSh^ENC)f}rvygBBgYi(nL-}h%E;077WhB*PF3u0_RfbstvE@g zWToG!MLeyh8doW3z)ZVx^tjEO|M_%{sJ&!gfD6Z#Ue{2tLjH=susSMgMZ6Gcl++mU?G;Hx@S!sG#g;!=e%Vs={Su5m>bk4AXcg>=0}rKg;msff(3uP7!qC2%$+ULw0@O*~;CWwZjt{MWzaUaTMGoQS@Ojh%+RW)SG#NeT_VjGCG--Cn`(9<};Zd|#hQBjO^-~X) z`mx2Le$Jo$iUQf}lOu!%t>e6ZMvq{<^OFn6k*@+b6E-ReywI+)F{_5{26cko1UuId zr|C@b;$68ya(-{=`i$iWao#bWS~+hlYVa-o}ZLp zFGf0yIB#+m6CAX%|IjLj_0@tgQimd3ER@tMPC{V|b&Ckw6!#1Z1D>IujvDvgSv{?% z?%B5ok|7iYsXbxw9BdrRipA%c1XEAOs+NZm7mApYOvDT~oF8a}=4EcSds0^&^!x^^ zrZX+{-Xp(Cq-GgE>SW<=E%#L8S#rIdN((afID&w@ojj9;o^O`38}eRfuO=IK@ZpKy zj()KLdj2_YFw5D@ifNVQssuI9t*>>X`TRg;8Lxy1ORQut^5sAG$`^8RvnGXU-qt!D6S4|k~gON5D>>xXe=Q+GlpW^&RfEqEnB&(aZ| z5Lm((TroWOe=bO3GBSH^5>bt5T^>j6fTOA#u2c#s{j5*?g$Us%L0+)I=X>^D_O_a& z+LWw=zH_jwmX|Wm%WnVqM#26+d;{W5bnuNA1>mQdEks~Uz58k>QqvN?z3&>yJ*5d^ za9&A_ux7=(j-nFp3%kw1ITf+UoDM8S@3j_o>mCEH@6joWzG&VZm);tFY0BH(j_ceb zz8;2~k)ztI#~7SyizJx}-`8cewiylies;;e;dewt}2G(BKEv%sj~>=(y12 zH$T!JA8DpRr}@*~`qN}mypjF>q$8IriqCwiSYxhXnj)Z&{*255G>j_c5WW@R<)wo4 zfWN>vIYxVuM>1Ibk%z&bK9HYPG-Mzsw4UmJUt8<#lQ*DBF*TkS_2JjHSxEf(ETcB8 z=ZMBT{NQhy|q^s^(GapJZHqS^E9Q}9Tc+Wl$^HieNn*A_lA?E zVog8*(eV{7*?vx?r{AjugT43rzXM3AKcx8GwwTvDfn$*#$cg9m3Z)al z#t|&2$B?M;)#@C)U((V4Jm~ zNb4E><+A0i3Gs8eXwIY9iGIbT)oT>ErP7{15=>1^cenH$)4l|G4M^i}lQ+cOTv2QPg|dazo^$+m%pbR@dnPVI0GTm*0Z(Ej z0n4dL54Pb37q4~{84cI8hx&9|3^`hsdG6!_4*y9nQv>c}81^WImp4J-Yqr5>lA(=2 zW>3p##}n3$;M>-nJ5YpE#omY6C4}S?BXcxe=U9_#3CoDW9|w*wK)s3OMaUUjep2}l zViUgy3J4af$k)jdfX*fL3HUDXH{VgB6Ls88fP+Hn7}sCP3BveSut^*$ z)($Nbs;pn}dr(nJhKmauD37BnyScrP(`aUHJYRhq4HAT={QW7*OG35yl*18&($oAe zPQT$kSRxx-0cl5_ZEC3bdhHpst1m8ZHlEBZ1{VP7ds5l5$X0u>Px&VM7PKRvjztKA zGkt(vJlgrFcom90Q!RDSZtMS$HxPq0&!1DAHRGUP2f5fcxV2#T$V@RaSI_xAtxjDCj^L zHopvks2CdK@26J%>PFOWriMnS@zznkZKG?}lZm+G24cO0=|Wcf1f_Q0!`r0U9q7%( zl;T2S1-3DBf?1c5M2SCGRwzn-2orzF+xaQUT)>%*K*Cd$C>bJ}3oDdJe?upJ5Y0FF zrd)QTX+8e)w~(dg*Ly4BBiE&;V6M{VEW$nMlKUB8(%x8kf(Xg}h*%6|5qpG~v?X4n zxn2Ie7jpeDUg5F`F&e_=xmwO@Q0*wH*Y_CHKH+oKaV=Od)H)shj?M}hLmSenkKbf&5Y7~yP7opMsqnNc7Z09QRVLoaW|vCqQ*pi3Y{bhj~br_&ugu6c2~@K zE2|l`!fosx+QK@ja0(U>^0>sJM}7&mBlr2EnE{k`97s_uBT@zm{z9p`P;ycNG%6$d zsMZRUgb22A)D95U7tShyzF^R^1Emi~6Rh$IhsJ^fJ1utQ<(rpfxr5Iqhb_^W_XQ{z zL?xi(3V^CyR3%Nl_zY!l5zL=XQgM?qrCTCPiT60a0ZIg6Umwi@ITsF$yjYd467UcX zdjRz)MH5~XAn5cyigAa}T7J^yy2R-ss&zw-LO1z}7cX2i6xHO<56z*j(x@h>LPvJd zcF&{%Ww8Bm(&JFCsXosr78|Hzpg z41d8GVem zNSqT{OH#8l1H^-SqzhXdQR0&eL(MA-;hARw5fBlr=jLUwh>DEm>-dpX-0b~8SRb>0 zLsV??y&yQYH+XCJeHuUb+PumA!&nus`HgSxAF$!urL6TOo#v*<2lxNO9%l3c+q~cO za&9=R-L2Twg2JGCS14JYB-klZK;de7n+mL{f|)SMa)>)Ljwtntwh711kT1prUm1*w z56<}7x}HpYiM1DZ40KzZ2D$18AX``AYLgFEMw_wO`o+47^9Y&DjF#+_(cbYeHAQ%) zM1SC_f9+N~R>%y=084;lPHAV7u)RjJ@Zdt`c|)ff40&Q(4M+%2{)v3ibr*Ly?26=d zw!u~1Kjol2qf@BGajnaAuJz%QdnL&A=QrnOU-xdBp#$by-w}SgZPPT9pkvPa8uYClj4 zVQhJ?E+%yr6kg!~REeMfJ&6ZcGxk&+4oIo@R0n=Wae(>mMC^$V4-*)7<9OF)qHO8AG5w%Vjn4-**RTK2TngNT-_^9G5t|law|E|7YDOyYqx#c% zr8-;eG(?XgPb4Ud!Uh3@;kVSCb+i!qkk_hR<7j#;@@oe1Y^WYyZ});F*}*EH1vot; zKgYYHqT`o8B46Z#rjBm4*e`l$M^oG*=1B8&L`Ya^mm;)$%>S8N6WLi3&u*`|J}rGU zJL`WLqqK0bCoa;zd~TdL%|${O>X4o3it;mp_p6n1f(T}utYVw;>VRdi*aDfRw7DJG znMNcpH|uFjt;{Ax!EEzEk9jelo>LhV)%U+M(kIBYCRPMvN{NJyqb0vTq;5!0fe8qC zf_>^FYwFa#CkaGu=)U^Lz0X{-(Vmsk`wVNXC&wzzdzcZE1mWMjX4Nyy$9JVvD18@y zQ~{*-&oGcrP~WDF9ML8$Y`M!pROt(|9h@{)+e1_js83Wx&1Q0G?tIo%^zSFx4}bcS zlYBvVEvV`08WY60VSy$uWZE1fom#ENP#mR|HvO4}yy_U}6}W&fqZmOE&M+9XFU5xH zOJ>TVO%K>d{)laTMBQ21_qC=XT0%wTb2r}E>h1}Iez#JRx1{(_nDASk7&u9IcvoQE zPhRi53f_K={(7=sPYe8dH+Qo-B^)2MsmfA6@*XFt9leF4Rw){yLDwM7Jp+6O))82` zQlpa>-fMDcpY#gvA0{WP79DmirSGNt%Cf%I9vi-^I-DQnhF=F$*kb<H=bTHi*qN`ULP($BF zT$%Ig*$_j(Uhf!E`%98A>@A@%8VV@zbr!*UX1uKTYw-fd0jRgsUAVwXUivk^@kmwA zukN5QS-VPfPn8F63XJZ}HWDXMq(+$Qm z#`zx7_9o1nSpgU(e5xh?nQY>L?{1Jl!`!hUU1 zv?*9ts@;~1q*qJ2cl!dlz2C1DScVGEp!PrPZQ4s{sBliM_adb4PDHP1SYuA_5MR&(cqW3)Ui636G7=b`5!?Pd3IuOsn}@7GabE zh(mYNf2fW_EvKsHM@JU@w_t&!NDNX`NH2`m=fwyrF#8G*-?iCM#+MdZs&+^m<= z(kCcYU|;6TwS2;Vd8Qt16ce1v`kXn^XXP*Wvt&s~28lI>;4$(akJ`WcXw26|p2^gF zu@O1&wp3O7Y->j;CiT~8YngP|mTluM84}IDt;n$GWXRkVle{B>^Dt!$F;PR@e!w8_ z>-fedU!Ke7;0J>vxSZAmyI8aI!zY*uJWDCv35GQdq{HmKWsJ}~2Q>`iIb^nm{})NF zWzkM8R^|Uc3p(GZg-#^W!Lq zGOlvv;()*7`L!8L!BCMZ74}oTLlW1+jKyZDoe469A4-lS{i?Xd>KFSlPR;z2LER5X zR`UK1U}G$yVu8_ATrPsqOO_+^qs~aD@m#fkQ1i*)z1()eyi zdM-VUq821GasUTbmP!g-*k43u61-AnnczM#5%&te-IBBD`cI#t@}J6Q#!PnaZ~YI;MmRZE2c@*Hs$1`N<(kh(qirw7y;%sc4= zXH3yRtWLYZU`zKnN;=2YVcmJ+Zgi01M}j&4WeSRC?M9hVe%~sc0KMYNW53$vMHid4 zwmJO(Kzu80dB+SI?A^&&P#C4+U{R?tCh4Dq;1x`r+=NOb%NH=<$hn+@7o@o)2jUrv z6@7L7SRl9BkgfgWDDZfG=z9J8;}k@tPATYdI44Hd@AUdh5+hMOgz?<;AA(>?AMoAB zhR~2z1cdA>%Q;oG+;rn?RCJ-61Td)j%;;8Ev+qsJ%E7kyd5}nvm{&h>!mgSoGq#WARzPPnJ%VaXEPOtom-X-` zbl3DEjP?pNyQ-6mhwg8+6uZHX$rIAaa&=X*y&Ge_wu6NT@55A$+`2+kr<=C;e4KP& zS@`RkCRg_ig^_+y|nhN7p-S-hs<>v?)( z{IzO?%OfV6;(~s5H&G6g{~S5PZ6E zx;b@TD{dlaLjwUX2Q6QL=I$nJc4#cjQc6L}zF5Yg-$A`-aSl4eQkS=+=cW{CPlV4j zX`RY8)8&OF1p(C(L%A6sb7A_kI$u`&Yl9CZLJ69a<2Zk}krVrzRsn|Hcxs#i0QfCo z;eYLeG*B1g7G5kQlhoZmP3H1!^Yq6>(*9fy^KdI(!=qKf<;$!}bm>QcRjW8$?jP|Q zSfzFZj!r&RFO6}B<NL@DA}Bj< z!t6QhZf)&rD~DLqr!zo*gWorN7OPb~WzG=)ec2dHvoSkHo`i9gXiWVPSKkvkynA!U#VPt|^N;ew;)3cLoAE>@PY7B?g&rgP)R_HR4>FM{ zrC1;2{QIqqJs1j%!yk)qL=(6hCwd>T;$y*h%Q}b#)1shM^U;Wl76ZBIjQI7eFO~q= zj5iy@89_f%CnfdzgdE&#=H9ZtHJiRiijcO@&-?p~2zW;A`7<)-LI9%ZO5G=spEZpc zu&PwvPoMy>&cR$qo+d1Wg??yUj+ZUv%np5oDvO|Y$Iv~&NJKg{1kw1Ue1wdpd!3DZ zb&G-L5ZJ-R+xd^JWE;lAj3D9SI44yt?64KEEe6!= zPYvwdU-cw=2KDs$!3?4i}-ARvV75E(%z8 z94>Y`AceXqjW!xs11cDd_6gSgY4!bmCU>6PuAt&n!(R{ybjrl7>yDuWfx-Z_&lK$H zI(LhgP*P{=BiNQaMa-r9aqOu`had7axijrigSf6kbJgZ_i8Gq;)-y%cQdIFBveFau zUMTG%;Y6kvTkI6EF6PyJLw>0mCGNF+f@#IF0w2$XusFmYc%mZCg2u zMS@o%`p#I0U+KVPH_X4@XLTD7^{Ss#I0;pu|2A?}5-km|!&Ml+UxbBwSGGK03Iu?uOmaCX&~}UN4V?*v!t{Q7@Iy=12aAF=5wr z-5+7rg*cGa1{TN4yJQ*=x12!QjbC2KKgNylYnzoY z*X-iSa&{XI+XKK3(3668Cn%&7py4x#fkw6P{4JO>eK#YeLMqH}>?bcP7(0g7(ySBN z6<9P+bH>Y{zRTc(HUmmlvXKUNiICEGn&TGeMcpFD5ZLGgXeE}cbmaBR5mzxSZ)3GW@M1o^t_1{OvvjecPM-ZkGq zp*o>F9)6HXMt5!{FG%|-Q$lb-IvP361!?iUQ%F$apQY6V+b&QN6>Mz25~$Le@u6agKkOCT zBkz^de*lSJi;(-fNsPG_x!K}68woFtj-x|gX%670ScUwGq3f3#@BJ%qS7t#=5gXOU z$%{PVHNJ(T2BQ8Q?^4S=8v9BqCZiygZy_I3|D|K5n(h(zE&>a|lvyQ$A7bva0OZ98 zPQ+doH~boaPd}~)ibhs{Wn244ab>66R_7EsZ0At!n0pvb=tje*@V{tl!7Cbc=srTt z=Cr-V7w*lRUX^vZ{UVs0T&|y%9hUZpsy|w4(;JIDT%It{zPnoP*q}%{ zcJc2~FP=1`Cv?r_XDBp=v|(OWM<&EWZj6Lyz?|wuM>HP;aP3O7<_umA%Ox9;D7c%B&-Tc#jPgYF)zZ|7Hyym1rSxHa7Ut+OaK;@HK=!<2r2$^ZxoKs%!k=7H2~LSsw*T7l6LAmz@+4x?Zg?p~3+ z;cMDGVc2&O58c^gHw*v-n-{wMTkOOmH0GHiHN2j&Zgy3gx_7rn%vhWY*k((NRU%!ezqBS@*deU^d9m_iQU3px&sxh=hh&TgMMcCbAa z$jhc6bOw;)OH|Kr{hJ&~R#Dl%JZ+`s`$H5#6VLRU=bqLo;J#o`u%QYL;LYK_Jv0nb z!gQQCxA?z=^d-wWk z&0$STXT#8y&WR0+=j@uby4+T2MoI8*XGO;Sm$*boEJQZkDnA#F6~?uFd%0Eoj}jtr zCECrN!ygqyy)oO`oub&&p?VQYE!VI@@w}L2gd7{S4%$VY#BY27{1%LJL}6 zDR(bdmgchO4mH>H5j@MVAlhW!AZ0JL&c|WqJ2?46kF^0kbb*Q_y6!19s-P684#u*ZEcUI`zk$<#Eg9jl8TJ&@<0m; zHg{u(YRSZ_D^AnpQR>I{+WMRC%Rw*k~#2J{g5H-b*RmQ8<`w5jkLivH|1+^FUS5%6;XHdAC#$o84zw{B5xnfO< z5E;8Bs1VBo=%zl+qHxa&7ghkD-Cw@zuWA?j^bn0unga|0f|%So76My~csK&6?16JH z`k<5TEjKiU*9Ikd92|_Wf7HQPduDll9)tW-dZ~VjO&oXLLJ0f_fy(LQfAhu4a~Ahx z#7SKj&TsGVBL4>uHjyGJ>&uL26E|fX5@y$e;x3rWvOY@W0W_+>!@DUu3ap;WqM6>_ zpHwKmo0xDoQ{t9WP&S_mKozvQlZixWDMzwA{g9RQOD>++|6ul^vBBnY^$S~K^dG>p zQ}#oNSDB9)Y5D5qkQ6IX_|U-s+M$`IQdmwb-X6W`j8ueZ0k{8E{oOp1*Rfn>GfL$k_eoV;F&!i3oFw-VxQ%G^{+{#2Tqt*f39zE)wRzw1(frk4q1HI~bGkgi)H6#KX#Pn2m9C!gK==Nv`qnXER@O#j zNNhkK5jD?wSIz5@S#PNzgR@JDM|z05gE)(M&TMmNz?gW(I2&K+=H~<6pu!2VJoUXP zAb4mmN#L7v9$(@6?K~qQ!z)xczh>Ibio@I8YZvpe{FZ|Lwb*hVAvh;rJB z?Fw?oYKlg06N=j{e)(x%sZ3Tu2D{oS(kt+~ecUH)po|{=3GZ{iqds9$y+a-w;A0%2 ztR;71{?CL^oc`*SF)*$oH1?G5&T3`ebMA$#?TagX#T~e@*3(cSbgfEIKGcfdxl1e&P1dW{W+}_JsEZ}TY{fX9kwXmmFY^=2u$Ga0={XGs{1U93 zU1q{aY7*?pXlS5LU< z-#;oN^lC~m8G>v`6iLlH&WJP=R7UI?jZIt&dyzVv$t%XRafNGp46QQDGy!TBQQ*nYJWD$nUDpAd8jq>}*bn|fcyJ7L^>3AH~onuycksy1}6U5nJT2Jg%tDh%pXml{N z^F7Wxv1+elrP99yb&nzc>S!Xw!4(80ir1r}i1)U&MBZ{VGz!IimLq}I`d7FFi{DZ} zl&*IvOv`8L#X;c69 z9#d}AE!m}zJf3wTaO3m~Sd-4fAU}|_N&2)c#sc<9Y#}mU zQuG*IE0N`r;$*Nawx?^h^@X7-b$6pUA6za>9Oa9tu+%%<&zF|Eu~N3FuvB38=^Uw9IA%z$MmwN)AY+J@w2k$vMs;F0FHD{2`l~8x za^H%a&E^7PVadUyI2iM!;P&{*ubvh=Vx<@AkJ%0!vA~80>HDv&*)+0F28Ys`-GmEp zMa|(1pr69?8m#N2aoQQT+53qQGtZt4k~+0Y?g6=n7|8jR(7D#bCU;;}n>9Udi6T-2 z(eVO$WRq9VS9+(;VygMbNh#Ria{CncGetVt%|*d7o3?0TELp{$`QAoq?6LTxfkfIU zE4bIO9vv5G5tKeYI&kkM7MlZ(c^R3W*pIqNzyG6Wzy8lXD7%Fl#R&5CKTpiT57}#r z`CG#y_0)97hdHZDYu$LJLN8{fzB~fV9l}sP$*_k5xFnE$t%CyEKQy@gMm7#7F8kVL zZ^=a&9m}{l)6PMdpC9rpCNxS3g6}1bGm{&E3h)sRiAx9bMfd5yeXIwMV@LVd3fB20 z2zaXh3I8>}U#!uH%M0FeS3UYGI0%yx1({Jnr%kq`!3;NX(Jm+S_hrxaY*R3?jVBNqm&Ht z;O_6um+Nw(RkoY8>|;O-eBB`XDgM3NTUc9}3k-S*bL8LQKH_b##1D7!+MbevQxJTR zOshTjgmKutd34=6Br-NR!EXLEqj~k7phWEm>{pAK5D#Q= zRCQcOoWA{V1g1TQ)D+C`zCh7Q-Y(wM=<%b`vFpm`LY2gSZ_tup;B>d@{3M9*2lZVj zz7R{AdK-d@IugQbd6)1AluH4ZP7!yQn~^R|=jZ0k-=oJ%eeR9Xl*k)DkNO(oP}8@H z3X1&9q#?oPjjGZO?bD7Y!LuY50!!%laL(xZ@z#8Co!veU8e=mUjW2;}w<{21*)?4Z zv-Ql>Fz-x5ME~{Ryi+MY-|PklN^AJMzG{{}vmurUEY5(=^^5uhCn=F_qRc}YX}Qr< z!Uw1_neP3d*g@nV{sLet(c8@@q21lK639thRf{<5pI7t6bGiR z`Qq1y0sWxsvVD%AJOspAOLfL+2CGH&krE6}9Y{3aFBJ!-}?I;$WhYBN1io%fJH`ifAw?RVQ)%@kbak=r$zv2;((YG;V>vSOs$Gl zyL~;KY|IOC-=n#QKejU4qeDqq?CF%t{+CK@0_JEs5K;rBq=oNOwZjT?S<5 zyDIpFV{vnPIuKQmW2p9KWT5XA6^^uX_&2CTVcLr@t*8l`?-Rtn>O6_cn3 zGi)IV6~Jcp2vbWVSJX+T>Yr&2hHJ4NNg zQ0>c9{lTO~rp5k?cxlccEdS3z>6mJz(nX>vri??K)h;OI)!J1GQ}(N?n&K$As4=)u zYmC~$wk~em_-ph83Acg?t10@|k69+J1fYss?H=pf>RW98Nfhb9dG4NReL8E?oc!Q!%J-OcwU(yZJuVl8`v|G-i;q;D}G4*st!!B(v|*b;^EcD=*drTBUJGR@1XFe{0<|G!qjYw6Nmf- za(unYoM2prMEp&33SpmxCD~#*T?!rQGgjk*NaOF(m@4NugoeOsX@0AH6Yx-coT7xC z7J|-6cf=by2TVdlk(eBLZ3;=5j+$1P9Yy%BID>aBMiOH>s2TksriTt;X`9p0YSNBb zN~J=j?0n*>I`c`@d@w??qykRW7I~UIH0Hn(6kF0&&*3n0w&nNlLOH$NUP8ylv28X< zYTN>r{ghgYH!~8RBZLXsP$1Ozy7(VMuRa_C&o`0xA4qLeCkv8K!lj0pEJY*x6)tns zSkeqiK`h}a*uNk0F9Y9b=ItR@ET}GObiyoyo7tw;r&e^ ztSV5Uuyi7RHijkW|9_>)33s{$Djq~iLWeV!GjI>!;y(`m>Dx2=Mm}Jnw;J==x%HO7 z8NY#t)%IZH$1i^W>Ko}d8zk1b;V

#QYw{a4JO(9h8Lf^ zLd%Vj7hs7ree)#xKXjaeLH8IS7Xw>O2-5;fp(4jYl46!-UlPs~oJEa9CpmOtc1xJG13G5wZ)rd95$BK(Yo+e8fibhWAaPYZ%R*9o+*vO$saH6t%J_@-Ka z-4 z1T=Jy)5u30jP=;pDpoP@ei1~!wLB1~9{t@h?!XP!feK*azIO^#L5-z}PNr=Mk|L*x zCT_Fexe#j9!rGz&3%KCSHS%o&7K7_prYLyJGLMpjk73098eZ5~%SEpx1b>cXhwBZg z5JHVQa{I6Ia!<3lK8s9?ja7hQIo9o|9^aZ4eEV2$ie~u(`~qm>@H2UgP>p5YGQA7| zg1(nVWbrP8jqDi+i3L=_;7qB}ZNa$SXoc>88+IBUwDfd2yKHx`?<%FjpbR`&wHR09 z==XWYd;E{tYywB69CKGPWZ{PiwV&XJLScMFXjOSfcV#1UUsWuLxt2;}yQ)-T=K}bf z48+?+&j(lqAP0yHXclj7_R%vY5(<7nr}Wh2@wId5Grz6S#g=8|df$bH&;A_4-oF5{ z`Y>wxe#8(bD4rN@op=LE-RnG;0P4!vjBEbI4XpeZd<&7;7R>pN**mV7?P~&JZTlSu z)QNe~`dfCDqDhmK3*X;#-4eYA=~{UzX*Q^^%8`wF82qX3kK~M(&nccBVU|?KuA+Fu z)XDiInKYQk{LVN&4SJGKqLtB)Fw(@l6;mcZ5fr-DySR(4fEB+@_E+oRb_iyUoFL15 zMLJ;w@KuIOcCyGWeOX5ClB(dd%?VfSxz_*nDgXn*xuc8y+-0(^(+cvc+MuzGq7pfy z)-ERbt0wL)^tGz!N_mUCjMqt)Czzeg(3u3)Xn{7Q!3iP3v84KFtE+sm$4JEUjRW!R zD+0Dq7HIeMV-GBdi=EEe>F_%8TfUc&n67qwF1odbmX896JWfzucdPetax)NJL%+#b zH>3|?k`2zU(c}zVG4{ht<6y^Pi6AYc>3~`24cc-5Gkl0Tb1;wnAWi{*#j=QUIz;9UfCa zi2+IKF)aUd-17iiPxF5?@+!jBL^~eP_9%>zybu-ejJ*_V)F81cHJOE-s{kRj9XEMb zoJUFlZ%EP{xfQR7eNp^F?$^&7tx`=Af-g03RA}tw-Go?hMfmO|wDJRD;j0 zs9>}*V^}H=d9;`{FzfPv@uNWHkx3^2f^;EObzhf1^_3~RlU1HdB*OvTQ9;N-hML#$|zG zDo)&zbEDpl*<_hn0`6yEA5iWj3Op284HcQMM{2uJ7R;wb!ro1CqI0n{eAPUgTxoRR zm2|z~AzfR>n3XIkApvL446LCN4F7E%fgJ1&Lz?SB%e{QcM`C%?MMc2u)I0yw7}&z3 z{q}WsD68&=e22oEb|^|ow+!(Ja0Jyg11<2Dd}6D9#$ukMsr-Z2TpMfY!3c&drx?yqyhrBq42Pf#8i?E~GTs5d|=lWjL!?R8pvE{&D z!EB$Nv26vvFaL3_EFGm(gCvOw}hD`mKK!fjgJI(aFon;{~ z`T>IG!}Vabkb7ck;tB7ka#QJEl3@@QTwg${nNmY@HwrryXL|CP6KDsyDu4>`f}bM< zU6TUj8IbSGf9Gi)qZ84Dj2eBGwj1^rHC0mSmTj(Vg_(6lQ<6D_v?*UJE&kRU7qDGF zw$mmYBP|rl&U+*K9JXX5vV270mDhggdcA>(HQ)cY;iq8yqBg(zi&xIprDrM44Fm)@ zySxA8pX|EDi6b4cgjxagmma6l3F(!IEt4t<>a~Q2C=vJorN3WwvBT-1x<(1zVA1)J zrmXz!aBY1xEXQa1d4Oo%L9JlZt~*nQUmzC}#qp;R9xI)NS3|rLbsL}I zCIvE8<0$W!t4fEGGT*8I*1$7_*f`v8-cH|T=G3PIHRA&8EMxFes}5)z!Su*bV(~N~ z+~kM55_HXJ<`&VO5amEHz#`%p+I&&mE4hXe1^D1-NC;Do1H4}-TrAhEL8j#ohtTL< zy1p$(*4Nl;zRWN*Igo~G%kkbi2KaAWstKuaa>t^(Q7n~{n-nwax3iTb0cRrXtUc^3 zG{$yPqFl5lWWwIYSiHcH@LQ1r+^YUlA)ua55v%(KsEu=0&3+R65Y2N*$qpZcJaGk4 zmO`J8FSj2xMbQU`+y~&>WhSJv;vE%Uq{|T4CwBe}@i_fNW-d?+pRNxT^(C`d1lwEsg>}W|ib$pEwM<+T@ zsyl_6QF(Z$JCdL={dq~?0^Y`Jt0{@F-RjN81|VA1KwNa#W78^l8ikV3J0man(}@xm z{DIT*FzIeq4eFDA5_&93Q5|V-_SZ#orD?T8%V^#0wKY=RKJO0y#T3`#RV@+RRdcR| zvd@r*RGLXmR-@9XGC5g*d8@07;bqj3+5Na^K>Tib;dB90QG?W;#v21cTT-FDU%N7? zg$R?B%NQ?hV#7t6Brn-T&G(L=l%(Kr>e^B@xBvNWm;?V&y=_B^{YE@h23fbnP_N7-5%!{L zB2Clnnhu$E8A4Z;$*%;WBFceQg)I9Jm&aG_EKKeyS0t-=%Mu<1gRy8-@+{SPe3glt z8-cRd`#dUDqW_~g-O`v=f@Wa|csOHE+v9N9k8kPb`SS++D_OTY*_^`Km`Y2cXi+To zkULEYDT^Oc^Lg6yo#&vMnvX&WxR8Qfjrd&&BVg{X2L&QuHdi4cHJ3iMW1+yP-W&W{ zJ{n^@8^onGQ>Mg_G1V;`VrWC=eGeDQR@M_$L_u?}`e6Q=0H7qK8$CM{;^k z-jlzQ;f1cE-bkZBd!2FLktM1v_jE!+Pr~D~`HIiDeGP|}Vc^Qmk3T0@9-d3^(7}-{ zDdkqk{cZ-EOHD1!-jb=<4!rNTm0Lh95p{KUI{Y|4*L6pZLP25j)d_WR}p< z{1KJAMmFrsz_`A*g?!*Tjo1*^TKuDtu-(KxecBY4U?lTGQ-I60hgjR{;%;_BQ{|eO z1?kCj4Xi#ECBh9IF*` z|H8aP%m#JX^VxBjo>Vs#@kS0JYh%GoUz8IHV=F=L)??&&ay`jIe|RkfS6@L4erE@M zCn;0;6eA4baTsqG$x749Shh$2BJmJQ)tduX7yj?R?|A6(R`B$Pd36 z<4gVEisXBqraRr*AVO-Es~fFD_Zf2beRa2BRa&jLYLj6qD;sA$Czx`^kroHB373W7 z0!cssK&jp|T24_ZS1K)b8hUu<`5Dje-E2%XW7fl#a8kWeOkKfq_E5H~F5vWEQ2ba(0r){F3wM7CH|F z9hFB#qX&}p$f}zhM;p&P?)7#*zkc_i#g$>$s_QJZ;4?o20vxT!tI~DI{vkD-;TKrO z@@a&;AnX^$#0APNk$|~Cr{O~jgODMa6oQp{_U^JI9?0+u) zYT7E-9eGMzTJH(^H=6))F&II=1-rI1_AmHlppsxVEA1MOo@)_jPR%zXc~3=Gz)3yp zK`Zz~%+mgKt${U}n1fFItab#(z&uv-veyBv(Ey(?ddDia3ZfQ_B0lO|Pdq8=&#t$L z7*1n(A69~JwNY=mk^LJ}{<=j?%X!-qOucBBp~1nn@|4x|xvs`RTVF!G**8Tp5app9 z2$1T*ka*UjqC@^}pwE_n`i&_#n07-yIamk&{g=7i<6u^-w6G2sac@eIT|8CBl+ztM zr%N7V;MqfdoZ6K6KdR(`L0Npb!!nvbW zub`E`*701*1NgUdyI)wk=)S9c&@PRkKIO>=OoDaL1!8M`x!a_38PqL1Epn$fX7isJ zt5mf@Q;XyGmTY9ne?UWX0L9c>x5a0z`?oVxAK=#}))qmWO#ESsQG2ClVesN0(JteO z7gYIc>CFC~YTS0y8RI(~=!e%QZYvF(gNl|a>BXWu)#6j&$HU9~?~*gPEyYi**`-`p z*1!Z|=<|E595$x#DTx>~acd6{H@zYr3B?fy1xv1zGa>N1F4c{?>wnaa57KLbVW6Rz z{2Rm<7-xBCCQkYj3;y$(#s`(d(MUp}xZ1KFw8V?aL!p%GIh$aW0=}tNKR`>W+v!Ab zznC6RRNn=daZ|fS#(;;Kg7UzegIePyl^#?7dmE|8W}6@%o|bOh%Eb0KcThc9f;P?r zgi0JWj*85Kcavy8Bg~7Lfv;8a>&Z9~d_WikW+e&;PVO}Qoz0!(i(<>>pyVx@+I7a} zfl(vLhluo~P_P9_xB3$H8rhUsi^SJQ2x7F3KUg^w9ML~H_N_SYQ-U(bDJ`7{iFiit z+LR%HPs7+Q%|G0`SPJR?my9`O+)mZmi$BFZ@yQhS!6G7QR|G!vveL5p(J&$`$#C&f z-rJ_j@K;I6cYHSZT5iXmt3}RVhYXclaohbu$XxO&7E7gD-C#`fTDk0C2gb7ZHD>Um z;-Vj;$sd{w$Ib=od-;VFeJCQ1Ddy;f!==ryp-`o)tmC@b4w-i|x*%cFrr`6J2JibZ zr#Dsnd+ei*eNh;MQmQOb|8EEs`x???fzMqc^K?lRO5tf?SzMIRk9QORMI!ZiO4@?j ztgS~{&AzLfH0*_(*fxUZY#bhFV9E2RTa3e;vl(%mEi+=Xu_k+m+m#cm;HtzlQR_vq zLLU|^^5PBjl||EB9`gGKrb**hbe)7BFEKLw{+)4%8MoaYgXaEGwxI~`5{S|XxLwdZ ze|@?fvOc+TzcXBtA<0^OlmsBl--H*GMbr;``E__Iv$uD#vwFRO26X8uoS+}qW@cTn zAv1xh!6ZG55cZ7cV)vbWsP1#RaVY)LbrpOJ<=Jy!3v2kQfW2`{UK=7Lbuc2ROPFg} z0_zTHp(a+ZbW}+k)xl)`SSekK5ZK5Hz0}p0Hq^Rq?MxL#!0^PXs3+i?wJmy{kTDsP zg4qhvkQNCdTzB$-xXkzMrgRRUHJySLat3p)SwQ$9K%5WMwz~n3{Fyh~2}MuY(Gi(- z!6sw2lw|DE)G%9)%kFfphdJ7u>^+`W6PjNAHmvd46w6XJZ=B4fq>n$hcX(llxPC0H z>l7fhenhm}qksSjFS%&c9S)N%2{NNbwNd?+gxEPC1Qo>Bsg@B`eHt=|guuqvF>p8t z-_C4r3MPETDKIsXr5gS9r+XQZo>duB!I`SjQs;ZIP#nopN}o-gPqm=!Ku&-*@& z#e>E0;4Rg>_}EhD%YaW3lYIQ<{5XoU8m+IGd~Wt>15X&O$v&1ih~5YkE4*V1^|wZa zHiwxWFuZ7r&h0JtHY;}Si#~=u)ryW%h-L$;KPyrPY9a{a>Q5p8Z^Vf6OGO_x=X1i` zScn56#jlM>((0^91ttM|RWOn!dr5EWqh=p1Rqa(Xsr8vd2xmmK($&_T2B$KG#BQajn6hiiO;wY-W!oRj(3dUBCR>le?vygvH3tXG$f3 zZKZ>{t=~l?%um@w`F$e}Z357i19(VY(=!es>fIJjIv1B>*2T1JbR|vq_Ku`Q>(!k^ zMAt^Qige?(40`5?npD0sKh4;p&01VZjaMk40~GuNc`Zw*+eZg8HkUAeX-2=b!`T1m zb*lO~L**PxO|?HdwxBmtmQ@+$hFB^FSHfCM=*Ug~;;WF^nY3LC1FUda5KFIhb`^9N zg}~0yi?-8~r=S?_Wq=J3s_^MgngPlY2fmwN`*Sj;9HYDFS3DykX|8&Xtk2WYbTbPc z2mPOR&KO1B6#(FueZCn4>1U}iYDN33o`D2lWUB!*x}E4nJ}+?~Ag~&A<}r|tZK-J~ zgQQ)jXPjWS9^IFDRSvr;7vl{G1aYO$zU87GjlUR;l0R|e*iO=So5~1@hiXIzO_{ zG!->nya``Lv58otTg;I#AFlAk9kXdpm6#{C=exoPFq0&_v>;@h8ZJ|YL7F;e!^TSTQNI%N$r?;t^XvmOU^GLiN{nOhU=KXlL$tPkym?j6 z=YKbx@I-`~crs2d(NzV2A5{RQFC>cStFPxsCyd!C7O0)mUE-jq6vDQOjBq5x61M?* zVfuzlhJs~zxn=)>F}0X*iNF&5z0E~Qf)#he0%%<*Je6?2lgF3M0VYYItA`O*moDD@ zRCBRUMzuH%@S`ERKM3@pGAU^TS=8-92WR=9)w>AmOm~Ik05q$<$e8h7chKe^#V3muSO$D5b zqP^rZCY-AV&0r;KPxy*qkmBg(jCyrG)a$8}yFlO-9Wx7q{@4$n0DS!^DSx8rg1J zRnCeo#kj(@^2t-l#r${IiP~3J$t*x7C&y?ca&ino4)7tcH4NVG4u$KD1w$g@ji>Jm>i9@2nVB>Rz>p{K}61sb?PzKF=bjnoe_PChS z$7&r02vqkLXSZ&XV!|Wu$4PvEyva%6ZBVTn-=0Q!VOr~!VICr_#lecgf`Jr}Q zo*dmD9FB~5S$naUgtx^3z1ACJXM13|1-c=40kA>>GM2g&3BIP;%FHIdmcYb$A`TCZ zg^cdjhcheWpM^s$eu&oxC9%~Gv&Zo@`lH7ogUK226fIeMuy+GMA%#ilDDdOc6C8fR zT{Kx9M>e`R{1KOuTplU=ajPSgxv6FhX|_J8&9^0=QUq8UTwF>o#PcL(=i1&6B8y#fh8&*GgjMHWD2hlYUV`qU!@x8B-O0Z~mdLeN8YIFZF;@J*)(t?! zm0~t#oV}5{WbFvB!tWD=+=eF@LUge{-tqjow4GUgtdXy=CQE=f9LJSn9?JGW>ZS@p zuvQdSTFt+)?#$vl*$Yf-*Z)*phSY50j z+&0}xnX)MsyfC)b>Fq=ri`HgbF#UGxuwGeS3)`1Y&W#wQYXpQ}xA7{JMB2ti{{nbBCWk49<0i$K-*V9BJ~v(#J)IDzYvzI% z+JTw0`CWlq>oTt+ZHV%J@R-hgx%VP87(oEswJmh@le02P4gKV*a-k zB=8)lDSNd3T=a9%sqP6AR~0N;#dB^Uw`GZV{NYIMpKcw9-Tle4AvS zzljBNi`+pBg`~ciyxbfhVgCSaH7Ol`645vsHnPp_6J{BGz`_@8;9j}t9IGvjyc6tc z*cm5q(PEY5gz`I&ELkESucg*MOj<3X0bZk@u*mS$9F71N}^b9DR4UT7UnZv76M`)21Qlchj@9d`i>aZw-+ zIuqz99+cS=2sTfduC>o~ZmU=oy-`b{C2x7J%8?=mFMhEh6?7XqIpGv8a7fl0o8C0T z2wU7NA)X)}8+wJx>=I<#NNXKbG?+zx>t^nmAOgp+d&u=x3YwXuV|Pu0Rtm1qZysxQ zBeO>7K0=8iK;-*w8%rEm%7XUIJQnU&-Jp#6230O)m1yi+;pND{aXqy6npRM3+E>Ko z)*J}e_r53wemoo+!nPKw-YJS5WdKl4o!+tz0^l*-rCK-VlPL;3|9F6hP8b8H2BoXN zCIe-lFeFwNQni|ZY9ggk=s8!UJmU+u8mP%*@MEYS$nAMo;+Y0Unb9ddyJP7j(A-p! zDYiskG04@1Oi68(&05n6Wh=^r1gv9-kFOJ+8Ito5bO1IPp`l^D-V+LBYQoF%8k-P# zE4rQ8HEevDO6?zbB-JYc;y)CD7ZmW19{beSsFP+3(Fm`gaPKzottfqF&xqhN;dpx< zn%(Rc{U=@l6v}tt+qwBw`N2}zmbnZ2753n`yBqpZ7$Ux3Oi0peRH`CSIQ+AN7I^|q z;!C#rUxtIRUy(?Y%cjMlbIMb2txca0mI+y_IxgOF={Z>@3A1&uYDg%})!>Tjw@z79 zUe%iJH2R$pRH8gX>e<(~a;py&a%8hEukEQ0R06ve*m*ZK&2~9gHHKT9KBzR=g$y?_ zq;l4t0pTwncu3viNr()>M7ovJ%!l0snjZgR1xG}pkj^65Q?|fof)$J1;WU@EX(5L? zb`Z%UMf-RP8N#gngxg`90hsj0BJ#Gdx%6uri!-Dix9nrP*)tN^($>soP{asPkP;DY z>qV=}HMqntY7cvOP*mE)wPMV1FrG<8_)IDbbo1K*qnNj|8~I(4wnAUPv6zFd2_ow2`(oC*fEeJmB3 z3 z%wWoeA6eGr{o;j)Y~q*H&+sOr2pGyPb9^N4AT7OvQ&E--%Z3;{dYKEh?FLN=#U_9$ zIFgc1anO=x@-pcH82eX>YNg;l=aM~ulB*{we11tS$W$jTC_HwlF|Vi~=JhNS4@{MD z4`0y-Mq$E*jSX1Dz8stj2@>YJov$7ews7u<93=&bX$8A#VZs77cWcAqkc8o@d1Ga4 zYNxGoRg!%aK%Z`6{}SQ3+dKV1JlN;kiMY%)v!1O+pOyz?=AA$T!e>0>P~ZuB?-Pj; zYNWe>iFV$_`iZ_e3muxN@pb((w3Lz;e$)!C_1-U!TS0%bAG0(yqQU`jJ`L0o3|PCn z^BOpGPnw(C33tm>1MgXNmi3|Uy`0;l4-TSxg+INNz+nlUl!6t`Lbkw4+#_oM6@Agk zh(|rJ#nWAG#mAD)5h7Vyy`$Jva#kzoG&rckyU>Eizl*l&rK0pCm)XQf9^HmXKy1$V z+dM?oZG4Wy#8L|=MVC^TZ?wAg;^24Y{r3wh9`ipEgRDZbDLVs^J)ECOLsxg}2 zAiQ*p$17gs{Ed*e;b>lUq7R$2jsdu3SdGZ{<@t1C%=yL%SDX)*JGcOE%j05M0Mp)A z;vzf~FO}EC?R6?B**hur_&9AEo0*^rm>vx8H_5?S#jal^QkmqUj`F~j(0ydI=FeKB z+u1y9hNoNwe3fajs~3$t`f7NGiEFhtutr(Cwfe5zeLkUE5MNd_txysWxL1|{1)Oi*c7|X#d5SZK&2=h9$R#=n9FP8g+A>6GFSdOE%JmDi#?Mku zQyRaMx{$rrqNCC(YuD~56j)5e1qKAh-O{`yh z!*pXY9B4W#6IEy*Z0;8V7L{g`ox5ja-R8&Rlz?c~I4v(^0W6sEVgsL!eu$ON@0l@C zv8@%EYb5#s=_q+7x;;zNr`~A(8aJ*7&8r6@%n0*P$s>gDU0@FPoA98^909k1LWxrgo#5>iB|9{P?&) zZQLx1MHtf|`t{cv$4_@dgzV{$)U&XToBvqn_D3q}e$3}Pc7pCOt>DZ(-0|<_1;>jz zBlC6)L<~%>E(Yko^#v|7oXz}m$eEZTu1(iH;>M_7i(Rv8-mS*wZqb{Q6c0pH;&}9D zGB>NS@<05?LFw{3YU5Wc(aa1?EEdOS}IJ>to_=(e?K7sok0_-ya)H}f(7){MGy*eZX;q^5p<{HqFb zok^$-JLuw!40#JN^^yQmaUR9|%Ca&-z$!L&|j0&3CkPQhqMl=5PWz&b;1OR|P+v7?10IuqMV5T2b_ zng}6C{3JP5ZSr6zzP}Ik#22x7vxd3Si}3H#HcCPkz0(Xi<&(T`VFPgcV@UTjWB3JV z-uU%{)|6Nr0lc`bQ}v3!I&E*%I9ymZKZ zV!v3ToS?xWr*=Wdaq`oes@DaGWXUo{Via@K@f}E2<|YYi<1hHmdE*rZ z>!-k>G579K(@+hQFYBE^{`W&jR`pjqbm_f`v-yB}f!%x001x$Xp$50Gm(qaOEJyAojjb~g~%eI;elzM^n)Hb>JxMak(iX*-&vsf!U<6FdX8l9}bT&BU#I3`oz5Bve{=7 z#>BX&0#`{xamY$+2AgDnJYVXW9;7P#X#SqmvpY8!71!gT&_>RYhR)S|=5pRp5{Ak( zB)#x@og?{Qi3X(FPWStd!U; zx5z2{D9^;y11CDr?tOKX|?&_qd(voK)B(LG%$P_k! zt}LcqRny(D88EWT?*&TqS?v#nEf2JN`-L3Jp?kMaFZgRA-W(Dn=67pWk(^b2*MCn! z(g^O$S7ujNF2h78B3l(ZP}i~=%-O)v+PPdbWrnZpumXJppBbKFUs2S5p6~hBPw6}- z7f!SV4`Au~U3lo`D+0VtY}sJoQxi|tQ`E=|hGBe3k|9aX)y6;IoWMoONPNGo3cfW~ zsU}n`Skf+SCU5m`IE{XnZ|EOvviY$`EFg1mU%;fm#W3YP&{Mffn#B$qZN-u|QYY{( z9SMe|+rZ^&)4)GV?XIs4(nB7^H>2UWOvMR^=GAMpBp{BU`4m*doFd>5ziDHy_&tMp za@4h_ho^P5x`GNW@*#q?&Igld^f_(xN7?^MrPmxPewtibS-?@J0aei6S>3kCd{uF; zl$+@lN0(%NL&>x55(1V(~a<_^3w2^XHotD?hM0#K-z8mD+$XZsFV{pypEpX6` zoahDHe~9*g%K^aOEkPcFN^CwL9ZCNT6>*^u9H^qZ#FNhbVo~eJ zf3zOTo8c~LA0YXR4#YoUYJv+q&DUT5qWo(sc5E1yP5@(Wc}OR@@v^Ot$qR?W!@wHM0`J-XbIP*^RfyKM$hG()hPR{2?mj#FB-=Me;e^DcldqR#XA> zog*w~NT7Q&1S7Ki4$((KnhoUgJIO08Kjs0p(J1^%VT2?Ur(0rf3YM?*Q<&usjZvd) z$E7YiR4A1I;>17_s?+|jc)BKL0MlQStEPX3$Uyp473?|nT_|~85oyx%q`E67b6)QX zuPjIh+}xH3^6k5RAo{2VlKM-x&*yvr04CyOl4Bzh6>JktAuU(%Q+-UK7zT5OPv;3y)-vwMs%7V*|WV0i;wNi=3DWbRs?EHhYc% z{Q)yhS;Gs?n;{xZNpci(TC$#Y#T)lFBz!rkT?yA%TR1neQLDgu>6o@iwTID-vT~Pq zYa2+U7}Y3iJ3k$fnsi+JJkvJb6ua^X9#H&bT-|#6b*+AgVlI7ewSiRdj3+&iF#K9x zX%{$|&ZL0yJB z_m;HKI@SI8b_f^TF|LX4r?*pzm{|%)VGP@S9c{fkZKNaua~7HquGf~PZ*5y2|50t! zCc*DSBu_UW&L*xFoapIv*=OasqI`7&pV@b!_u)&Et5N1vqhgmok?Wx z?PXc|2xgBfrBg(wT;=esublSdOysnb*Ry=c?aY$IPyHv~p&Gopd`OuNB%vd^KmFZg zVna-mna~jhK8e6;F+eUWxaq>6{Kd}lI6VPHyFTunNu;7@l=__Js;`E7(*1oUj-k8d zBKSyyGkj-X?5uAc4@y5dWE6l{?O+p{SFQZKgKu|mk6VH+_o8&)&mx*VS2LJX|M31i zhMtXbsS!j}%tu7nrv;d>3Ztipu5CLKn|_L3le7bGqf!{T9}Ie*3S9bVnOoXHN7EC= z!Q-5D4yoxQYpcWwj^<9h7DtY&E6BqH8R@5l*I!QR7{AQO(LNhwqVeL1nc$2y*Tc9#EGV}-iW_6~iC#KJ(SgtLzk}OCWrV-{O(Kn4tVHs9qizb&x zgO!#ib&R(})b${iaAeR1lV3(>%y@j~iNa`iC)>!tf4t9k`!ms=4HzfqqO|6uI`ELJ zT3c~0LqZ1rp=}9=hK41QW-GiI26F0&GSlJLI007jOFhgblOC&3uMVkZ0ei>D582c- z>3}jQzE*%DL)vaVx9^$|}4=cJ6 zk+juZw47%0#wf+YYszH`Wk+TaXPB2es<(wfY@YLtTjY8u=(VqF&CDvX-)Dkb#a=V< zJpIx}C2I>h?k#z9=Y7+ufyl)`=N;H1ff~U+L;niakW7hQAeSVwi%=T_Nh$OA=ZrRB zK>%h>)}HI~zIt_sCfCa|q2w{c*OE5jjFVhHMp0Z|sNV>58aeI{)bb=8mSPo^mn>$q zB961eU8*zF-0Q?>RO774)v4k~Wf7z%2>Rkfp1g-{(oX2Lvq8Ik&OrzCI_gg0SA1<% zR5iF2OQf9=VUJGM-bFI-pv?lj=^n6Bsawm>NE&%H%2GFiU{6ZS0BUAV7P zdo?;N;M9fMlIxXoZntj2u|!PBcXoqHU_EoU>b>F^g6=z%0-mMgCrGD-h4ekN%o z@O>#wkanB1^1f?Og#~#8FmrN9rG#L3Fo*tfxH9?le%Dr>q>d&#kh;P0ut%QU z)ALMWBCLEL8@8uf6mk8G58pz}EPsby@P1)lNPaZ)YqhUn!m!IKFj4pHP||uJTvfCb zj=adYsS2xlMZ4lpWxokZganl3tTMGdI7w&#hCA|`2OZf_zDC~rEG=?ZKq;wZj;`%Y;~t5=<_h= zaTe+*9gpkUF{z zDu3Bj!=KB;EJGRe2meA$Rhz9`Oo`jjE4TV1yIB%0c>Ti~x2bmhY)K9ZS)oGjNiL)+ zA8!n?Rmb6n$QY`&`Nc9y8#jgf_!pg-$`w-VoVOpySsJgs#DOzmL_G{(32X7ZLa|&$ znF|D}c#}^G=&0~UBF>Y>3XP>vO>0*iPFXa=AO12hnGcz4%V?$-viUGDs9bhsdLgcY z$t?q7=o(lgV$fxMTmgc1z5Qjubmo%K}9ErB4YRkkx% zxtcPg=&nFzD_OJcfO;=bjs&xvjJF$#huLq(vOlVnrMwnLtU7bbG%A2#!(gkpYsx{a z2&&^2kQy+aIb=wac9iUgQDKZmIMt}(bWdZl1{*Nc(k^|IPCnx(A934T1`?gO#Y(OM z)UBanUZ`Vo40>vLOWPrBQ|}0w9~1}|x|Bu9qtFLLlet#Bm?+7JXtx)K14SdqfeNn- zE;y*H4C3(td>`SjZg=u=v|2v%KdgnKg2ZSrL8Lg8kl*^Hiup39GPKl(G?YzOwVrb* zI=buF^V=ojoR9VIkm${kft%CiKMsxw{esQ37T`XstOAM0 zioPI;v0$JipEKSd9%gpCE8+oISX1C%U-Y84VD&}ivQc^Z6J+U2z%45CKjuQu%v_Xdd zi7BE0vDLWeLM38Msxx+A)>9@kOY%|YC2GKc%|Rc#;GNRMd)wpVY~`aUw%^qU&DFe2 zeedCpRVFxVS0G2ToEgFx#S=as;P7C(Mz}1mUS$lnVF!`2&moM?6`;R3bBfzabQoP@ z@R9&{OQD>ZyFapJvUb*tZtol4NnMA$@Gv%!*0z)wiktQY19(=7{@cWO+Z3{7QL-e z>zc`15m?t110<$l=JqnPWXq;Qd5|?Gk`O2a?}-5u1$>8=Qg`ZyqM@4 z`Ze>7?w!SbgB%3E)Pcj7BL0{<;FeqzNhYl|5q8zyt^0@le9CL9-;gRJv*M|2IG1$% zf*M$vDRhtG+~VNxN*NPBxJn*$A- zRPp||l1p3Mp4W4Oo#N<1Sp!-_lLl9$0b|_I`8HS$lO1UaY0M?qwgtAy(Jay@@!$bz zOVML9A?*>QaS%LTdtoo=2^ORYbWMHDkk9nVPmlG69Ix4^7TVL&PC#D9EK$Ux&v*(o5dIe4E@U=jPZ!mD z@1rbhRs+k1tl1hr21Fq}?tFGHvdR%ZmD+eozvjD-pOrAU|z@i8!>2yf|4{$!6>TY;Cg zN3V;R0qt%!RYVcqON2A0=Dhj%Il4_K75dSkvCyBAhjdURVglv|DL_Hr1*`_C?0b_e zEoz3jL(o8uGP@Ji8`{|cP5OmCFwJQt&;uxMe)qd-P;I^V2iY-RHG%|7z!wP!{4gc) zN6^7cB|tSFjQl~85`Rhirry0M1AJp-aDv9`*Kb1CZ9BSQd9|w;W;p|r9h^`tpD^2= zrdc#4<8VHxDyQg7QU7n{dWE+)b48G4Cq;jIHy&_X%MTgN3=8lMA~*p@x2cLFhwsX8{ZSQ|PPk!1|Wp;ae-zDNLW$5dZ|I#rrH7TBxCj|0&m6{!?gVB96Y)4lQV#EBKV+hE9a#V?2J|Tfhih}slnv#%Zn`9(atomt zQH&+T0M0#d9V-hMFJP73D$d%viFIUrY8hHm+gg7Uj3A@%&XTDxVPDb$G%I`?AmC8M zFg(r82e*X5jR}5Q^(%e8>;?aA1v9ee+~T=g+9pR-PcZ3BdT0INNFq>uC^C46chxa4 zmvF#$N8C!=(eq=7o z&*RntPrzC^G9P)&j158$1`vy?Wz1^U53SbDO48)kV#7fKa$tbm5_n2E5Dorxy(}=! zq-<}JvQ-rp!Sdx?atdfsYE>q${ypClouq&;bY8qf++}5|odlKVufN-5dJa1*SFJpW zKmg7(w-jOy@TwDC*Vj0VdIq91T^c8+d`JL()y?yN$Tz7%VeiJ1oh*j5;DgC#?+CSH`k{+Lg0BWk?g1 zPbc6aC&sCD77pm@sL*dey6DUkhEWTcB!tTI2X5jeY5b>`Uh`!9|3?)`<*J-NqbtO_ zx#ze)LIAtS3B3G>hgV)}^>z;ja?A~eNh^+f${ny(0zQU`$*MJZE?dRFHDVHsEf69^ zRK3BAJ8v4iWq$2B>dhGEWUEf#pBy0RLCszR19#gVA^Ippdj6vhhZJKPc)N@(hCeX7#^a2$_h@57f(Es#yx zn!=cw-qs=z6gGf|<0%#H8N3%61Xd;!zoXpT$h39G-)=BF+NCmdZZ?s1czU21j1dAx zPOIfDuYBB+rJihqOu`Yua`s@(hUn4djea+@LbRI;A3OPxe=sfEq{yhq9V4E?=7H}r z*O6(W_mi0>224A9WAI`{QDUXhwt>q8&o-OX#2Bl=z{Rf0Ue`7xLw{-v7lHsvzcyhW zYGqziV|~Tcd?(%+U*ueag<_ODt0tappA)8`jaLt3Rk(~{14t)hYq{ia56sevGPY%f z>@|QK{!{!YSM74d`@^0^Ldf=;!KYRV@*C9z0Twh^o@tt3?suA7$}wwLzU>nlWARlI z8SHL=9IWJY5Otl!&lp?Kq)++^H|`9vH2^t4#=qxVjT&okGh|nn;W{1gD>gdyb^E>+ z;f`JD@;(P*N3Bfzd?|=|jrf?3b6}+^OtU^8{Al=+FTq{mBWK&Zdqje0?fady+3PAd zTHmtoHUYt&E3|D_o7}Wr$nSGio(=4lxu>)py7)euk|>>g*Hogu9d?q=XL|1z>%y`W zjhx3*UUJ>qDTY`ZdD9y!7H9+rMSbbO~33hFjO6oyv zW>aWs1%B0?H3>f@p(CmwE=uw{=@r)15bzh^zb(u>^-Ht5_Rm&m7XLRhO1fF)h8wc0 zJawbgxX?xR={!cig?l$7JWp>G=ayLe;+zS*GZFm==|QMg;ny0X-Wm}R@4XlF1t63a z%pJzo*7Mt=ya^(K3mqKo`2+jianH!H;QAi%I4r+%_zSE$HQNqvHJ|wrLc;*bq>IuP zFre4px;NL=+*qV^fw$QL9%?g>HOH=7sTfM%&aZb2%4qnTd^!P;nq8@L=od8yH`uHD zNn|}G+F;yY!Ukgbe{k9~leV!`_1TY55&3?*18my_ghgpVo!XW~KbHb$!B(`Ds~?aq zJTT^2h-jcEKVH6Wlg0~!M2rqU)p!2|q<5$y(tpEiG(bFSt@wRXkmfUVxE(1E3JdIV zT0hGY3{a6A=MGSIip#=3AY;nf+iVc77&FFVrVNw*O)~6Kj9W55f)n=Wma~qKYzW6U z6++PqR17^)ByLOqW+&eKbY{L{WA5(^dMisxN_eb&rG(pW(tb;JO7ORY2SGN69wy7FhKp|pc=0Iypt+Z-W9gfRm13HyPLbiBu^ z0W+nS3yllwnjO*imT_)eY41P*2`b3aHE~CqkRebw{ zpJu;5&cjfz9P5gc8_p2eE($UyI>R2VsBc1!^SR{~`H`n0S4@90q%Qf7?d3|C5aoRR zA{IQ4Hr&5q9&t#n|N1mvu!Lj$PkF)m@<_T$k6C?;i7UsZw7?3G2VN0ypI zvE(`&fzr}iu>}j=%`8q2w?O5tK-jS^wu&okD(5$mG=hh=kBGD}Bl*ogr<#tp0z=x) z04eub@(3ryX=Bd^8dFT}phmv;ll-?EP0KMtUxENdph-4-DLTvW!x(b zotYef!UU5S(-3*Q_HD|EEmtI*vd$(SQifJcby}T|T!>JSVC;(hN2PY_-F#K^!`uIq z!q~o}9QUZjD-fX>1%L6+69n?QM`_`Z;!lnxeW+b28%QV=wW=CVdnZ6v2p=CSVyKUt zbpkk=N0AONHKhvD`J7*>Lvo9<+Fy9TbGh}5qrZrrZKo52Bc0CJwFzm+p{@qj7BjD? zMu8|GnBYP8^q>EpxGI_7$Js%IHFcW+BG$`}0Rl{(EM9J|UD2Q(Usm_~c@-VXkdvP& zX<$3nlc{EO1>ugnEqgW+)~_hq;X#fC_k3MLvDH@U#-Lx~CH70?Xbzw@68#`a-U_;E zHsB5z>ipMN|Pg*bG0lrjg+4!uyuwfFyYB=Fz*PU6|{Eg~GSA z0>lDxS$LwwN9|@{b}H!L|DYsn2q=Fjt(nP!*)rKjCBCc*{PM=LZ|Yb3N`J#JW_sER zWMPblBnTPvfJk4I`)Gkz7yfxs!5GOyKAb;My7C_Rg*ujH_tVbICXsDAsPiZAA2oflL-wmgEFMa5({|xf+(08M2m%H^r`8XEq67yACh&eVzRmEAMj`~6P8JPg9@;mvy zP;D6#o8A)AxFg%+SjDyli&Ky-S#x<^4BMK`4MKsp=qcUBHSzPoi)vu8OW50UKq7jN zL&}fIBz~xSp0!D+9Ohx>bcw$2bdJ8>BCTocc3heGIZ?ZVL16e@aF3F#ht!o?LF7hG z>kg}977q~99Pv}WGf>`JL=cBfJatQI*QA^1fgUrLJh!CiL2sI}#NzDBvJ29e#QF6{ zhSCG2SuJqToffZjGTUFzs=hf5sUNKdoyM%9tpIxQrZPb^QI(HN`*b?E>|oVRc}RWjx3 zY`@(ADGcMwv#Sn{qGHy+`oyk~5qTX#!x)zM_rq{3Gyu1d35UhM;tE+5xcA|z;fwrT zqkV%yZPC6uK7zB7n!P@!Te5FJy#!OB!j=Nm* zdAKMMOrD3o6;jCUP_(ew{$gnPZ+l?Hu-r*Oy7Q1vA!MQW<#!gwU&ZJYrqb4vQim>b zc`_H|5n7$6ejjPRr{3pnRNYsFl|WjMjh5fGV&TAu75z9y`X3~f*u6e{QM*E5!Eqa5 z#am`LxG*^mwfWIM+gf6tX9%zzDhA#~NwHG!IV*0H<&6JmfK7fZTkE=68rZdEp!|+S zIu$v}=lG>ps>qg$B=coKf??;zPu-p$cKS@n%MCK&2 zX1L@%e`INvdrdiUMJ1_|MR>c(coBVQ_i_K-*N-ss-=c9fBiGybnsx9>pXx&nrZDbi zgqYhjnz7kSM6wpYUCs5?*hl)9+k-+o^&$l>{bdEzgVHcg?b=$7YIMQyp`)0*Hmk#dk`vz~>& z&xy^Nh*}n8Ku4%aoDf@bMxb|#-Zzv4dm+zY8}IGdpCGgreYrOu`y?CV6kbTak&TP2W)JXH?;X^R%8)jv_ujS{Z( z>$p`Me@LCLyYgZkkY)oQL%K|kNcrGfm7DUm1$?Q&%lEhc2DS$v29wEwKn>4?1*3W{8Dov+5IhQNi5gLy&s9{F*hXyHy|8?z%qPd7K}`Z6uYS2x)V!S<;M$})F#)L z>TL0#T8cweuI_oz+m%t1(_6H6T;%ATY%mzZ06IG3lU4{&=OB3K6}1llIRIafm|CTi z7DykoZBR%d!v4*nAud58pzeo$zJDyitN4e+<+*XsTql+67+zg1c&&%cx#JjWxCgRz z`U?h}eHbY#HES3FA1Q~HI#RJxkHnvq)QQjEyeXQoFt($QllUTNQId#=VI0MlsZiOV zKd6u>K43L4nRYAJ_QPz*c3mO|yX!m{?=3vd=A~b`ZhC#EXP1=ik}QoX=Tm>TydXzV zDOlX8SBWxo1r#G5?GZ>4DO#<$g69#)3&#lINUlusEP=(D4uAd`KPNoiSwiw$bTD3| zY3n45FRsh7e0g&nV73Kt@?ui0NTYy8yoMp-VPgP07V^ti_1m=J1=oict@OXkn zRb~6NhEJ;dMYwHzHa`&e11zn;>=gN+pfE!iq<2L+f_C_2sOv)iUQ?kso&K-Hw7aI^ zO5iB)1htoyI5y8FoZPq}yREwDqXE|t;@TuW-3-z^^Og)te8;(7T6MT#0selVO?nE{!f9sxe`?GXg0HF&X=bTI7ah5O{JH2%a_80v#*1;kE7Jbz` zpDG9QajCcVJZJDEN|1JPCe zsz?&_^~-sLB6I&PVa;XGLfA)Hvxa4eF}?ua$gn)_I}P+Y>tNihh`4WXmv=wC{aQ!u zQ%U!jUkl6W)NQ-)nhA-hE{}ng=-NCT85i+PJL)8-jARmjAkdQe*3k$3vy-mQFqFyM z{tQMF`UUjI7?IDuMFTL48G~vh_xhgvWx8LV7;+%{wdW(;;|RLQDd(2emx6xF2&g|; zVK>2S2n{F1zy%rnq^x*Qa#0tM8@g?uHU^2Nw^R;Y2S96sINE7$Ycp?C+=}(puL`h# zI;F*DrnLu+U&yAWxc4oHTHSu#(*>2#9|68$%*Y=aU2ed#AifVNEmbl@HxXJ`F`sGr z&@mJ_Uqf)I&|mKl%I`4o|FF}fPUS!EZ9fn1(*=b2=C$wRj`5?*CpIZ0jtH>Zlh~2Y zgz@ZbkB?OpBx9c?(gIws-l2lObSLF1>3j1qrxN{GE5iKHb)eK?v&U_VQMlf>Jr5GfT^%2igf&40WS-IC01q3p zC%+3w|Iu8g?k(=Os^1ntcBR-3I`LMCnlN0ER6N!fl~`qg9g)wd&2Dz%b%FmBYFgu2 zOl~@F^OT=>o>O8fRKBTINs(8Ys1H zkO7C@9ygg}Q{um53jTJ4q^aFxA74lXXjooIzm7I*CMQCip=QKOHwO|__TH_2SS+OZ z+#RZOcmH!;jpG$BmvJ$liw`NemDNmB`=P~uwPujw(@=!uq5milo`mrmNI_A7DzrLrZLX@WL4I?KUm&mi zi0-Z(m@@$Hzbr2d;wRn)LAOHgz>8BDO#f8}DNyV}&hWK87xNW8%yED`!{#u`btFow zF3|35a|H#V2tXhpP?~n~B-siA;j89D$hlqf`=ogrTM#v$+!()EejRwNV6t*}jLe_w zN**`|-E>ZnI7g{-wo-g?CMj)7K-i0m;|p#0<*r***^abaohBnVMyU-$J2f%9idJFv z7-q4=qxCH{OE&%dG7^oLBZx$I!QE7k9SC*Q*q?hqi{Z$*=cC+9(2%RIz+gv-Rh~yM z!st(|vWSG80=T$H_)kWUfs>#@lx;Kf-yU2VDatFA!2Z~H3oPT!R5%tI6tOs2CMY+= z^@7dIXc^XY;tIjXr@eC2s4o3H3#QjpmRPggXA033<+XEOT=BV7NtqSC%c<1j1R=;T z4MpeTivkXl0bqN8f)>Af+!W6)Ci#;xObYiDt>~9M%u6FVYB`IQDP=fI#mYsO@OTj8BAM~E`yT9osFtu=#k`%fU{UDIHTTg z{_@uIfAEq;h+*uiA2u#=%tV3eoRD%q$doo=;Bk1t4TmM|2>ByYt+0mh$nMHc92p%C z8n?jL-qeO>2;qGhN~p*+yKa%(GY3Lnl+ulloswqTILD!1!vME7TD9w`R7WmCxv3rJ zul%KT_Eu22so&ke2nrW$olh}mZ?aLy6#v*_7^EC&l^pV&9NW2rO6iE#F6|Wp#whbL zW|rWD!`k|&dBo<%O}(9`WtK`XFd5zrKiYyz+|9b-i|~RMaO?dJ_KF$jxhO69eY+44 zO7O)8H#Oh~Q&LUqFW-uE(Y{af(kuO##_q9jF9&1P;Lc?Ja3PuO)skW#y-iui?21rk zXt4#A71YT#oz5tY3}|MJPxGW_s9x1S#7Ft5d7!ytWBQ4n_{!HeN+Do076AlCUin&X z{v+hf1a_ z1k?(81)jgFZ$OPtFoIhKHi}}?P*@wn3%hA zf3<`6%xY*ql@_uo7PBTBvM?rs7ol5=cKB!#9heL(Vx%xDIQ8H%*nfTvmbfdTt8lxM z5O;st_-|-vcOhR9bxijbGzNUjldiUDzF4z_NvzWM+7&ozHNHw^L*fF3C^4#obYst1j_>~Prg^J3s#CQv?>x%010&MzAah&{CcDdESie zHm=%UEhmJ<4r3{Uj4!7hX~8Ijm^AdTR1)d4&=x0Jy5f`1l@8k6|L` zop2z*W-^KGF^kJDQo-E>Llg6P><|@G{{vP6U9?bCO9G4fqiD1J$XmAv0fvVtflRK! zI|`PZx$*&Ud*RM$Liz~6Oyb@)?gU>meH-iXq)dQi?m9SmCsDPP?ALYRkc_@!x1<$(w6AMj8A8Zr*nYin)k z0J?;IcsA&c#btZu-J5l$ByiDgeoz$&X2@~FVztB=xY2ZQGz7x-%`*$enB-*}U7hp+ zG;eaSKW`KDwX=u-u7auC9ClyWI|m+zM$`#|cIgOdcwsWQd_lHTBDL_tO8awl!b|A) z0QX1q-i0mLGoKjp&KYlaLLiP-qu7Zu(wxqh1B`vRlX+v?q;RB+rSZ*+!KUMW?Ju|C z8tz$I7`*tf=p3>9(O$re0G*t6N!Bb%I!Q6&p-W_jp?ChViBV(*3t(R{RXSv%hAHI- zby1rRipl5QJC@y6wilS23cw=X_P)umS}z;RQbDTa-#`rur>&YXZhDlObt3o_=H)j- z*?Y4c@WXCMh=-Bg50@w=cx@%G09LgP@MrwVRGkn;6;^)<%?mf%i_K~O3J7N}uZ@Ud zIqsH6NGJAZJ12Oy79IL<(2BE2Iq=0^VYpiB>%E6UA>Y%&XZ-4TkfI}RuB78was;7W zj5e2XtU@I*3=_umR<$C(-p?7BLh2b&xVioU9vt0MlsY5=Z9|_Q-B@0QaY$M}*FIj4 z)ou4xKpHtEjqQqMsbBOIf#yhnW3LHjOk8?%7dn zAM9hTGKzYjgbfd?5r^%@U266{O4k1ik)}QWO{h>3og{2{u}Ja<>eS@W)APgd%>=!| zjy*!nRf+Zjk)1pGH3S?$U5t}9qTv&cdOHejoR(pkcs1rj>ys&s=F;{X`qvwrnCeof z8N|4ePD8LPiD=b{pLBsqU)nZ;7YVQB8dmj6b({+uQ!?>rw#oxoTafPRe~elLP8XKf zjY#Ju7(a~|eh39P@OVJvL;JrE6!YiTZuS|>j66)6zAn{s*FT6@5`K(xdmkqp(D*p8 zrsrT0mwalyYRJnO56dsx{ny%R{V}^yl*IDUtqEuI(QX!c-0uU0WUrv;Y@m!>h$(u z{vLOQt)`QV3FL#}dSe)R7Ii7h(c#E+{S>g}^Pp^t%h1y;!;GWa`HnaWI&TIp9Cy_Q zHhEoM;a)iZ9VsG+8vc6KcU#OVe+#sMm638g}4s& zBajkJA0-Y=+x-C1$Ff5my?mQxzq)aEQv=s&-rG<=j3zp(uD4c2=9YI{`DeZ|Ctiq5 zP-LK6c~pw)L@-9TNYyaI*>=&D@bmhtrm#NYJc_{DErtE=#fgY9lo{{~Xfy6OPCBnrTSI_0 zb)+fW!zvN?8cT+~Thb{Bw-R)^C0>KP^~F#xL|sPr5&Hs`hd79f7Y?u9mY_%mX5jO< zl$n%!KYXF41@_L(=Ko<;KE$qa@7|6^(FP3GLfE>8Um?)GJ6fMQ79fR=cqx7FP;l$7 zt_pABvW!*z4TbMGT$qd74w4>7T-2|Nkf2KB1ZJx>RD)QRqI5vvK`ljc4O;4k0}HKm zb+b%U#X@1Wh}{q+#p?*gI!@4TH9c4adlsD6hoVf?xLtx$phj0zX0nStLO8bHe@?CWo; zlXURKvXP9~{mt|dBoM)TnrRhNOWE3f-2Y7Bl{4>SkzKQtc@EP3NlB468fOacl$lV# zZGTGUA0CD@om7u~&P7OxUE@I5qvVSl^Ym8lKZE75HPMOye2^FtT4H@wM=x@9N-SX+1WCu&knj-LW@0I6Lp);a}sq0+4!E9%$FQ z*npr&Vp6j{GT+9mcPvEdzx*toGVKIBgHdMHfiFNRVViuvl+{Nu?G1i-(?CmxgFd%V z7xz633NKi5*9$O@FOU7%@ckH9Va@NmDqwGv;TA;M{SV}aTu)ym_}rUjkC);-vR>GP zA}1<4{M3`ToQ-GhF`y^^Lw>YfHIn!e$pAz{dy;@2&d=;Xhn>w;eWkeNV@Kws-CjJa zOK%W|CfUm$e4?c5Hs~-q=8vzz=9Mzl+a~zCPpg@5Hn0!M${jwbP-ggAPCa1U0`00| z;RMFz*Pz~UdoQ6R0C(rw_kVh{ZN2l!!+|taJAE-33RU}~3c*`jPnyIQ1d%juM&ccb zAyduQ-^G4=wRVC!IAen0^-bk;Hin4_dj{jW+rdlI#ykz^P_FaR+F`EDFfCh6w1en1IGeIx3lfSmuDbb3~(suN7 z5B9>C`1@Czm!9x;=9L7aHpOk=^wMrCuqw0Qcl*&}ZDzgB2t| zq!e!_4!zBl{R5<3*IaWr@bUqHG!4{5M84pQSYN1J@LWV!c?7Rws{9s1gZ-_SvJ1w7 ziE~iWw<#(VnH&tW!)^K$9V<~~f80Qe-UY|z&VXc0H>>izOBCwb_7IF(UjmIMeT1Yi zuE6vTeG7tyNBZzXGVC~RJG510fM4*eOrOfGSF+=Z?~1Y+NGKDhV7sb@jzHOW+E3uO zb`Idq))IkwC#9hfG3K5S3dL|1>fLI$%n1|wm6d3NoXzq<7$Sslc}EPHZG%)LAtP0n zayRrv47^p2#U{LtZIU1kKgY>LYd~I1UsNIbA$+KALLMs_e@YEX%Cl`onVySZ7P%aSb zOS_K|SCvzs{8uHw8Jw2(YUs{tdb@lRNf6Vh%C|3|;qd2}u6%USP2|b~!%heDdMigK zyshIy;w|bM6Y}hMS;dXhUd|ZG&=GcIg)?!+s@H=dC;#IL+%!dP%=C* zpLMRFF7S0PF~PX-Prd7xm&RxVkE?s}YJmrK0uVcGOZ!&j0zkS^DF^2VNK8`4oFg2E zi4_|TrO|aJn2H(z+StMkPQAq*PYNYS#cPa48tV~-D#u&02icc_>crWqbjpWv1pGIj zP1eOyYq`t}#chrrc21n?=bp?1k=L@!T{wxvi2Y=sJI;DZ!0}a(>qs}0#EyuU9gyn@ zEmnbsu$@4^>vIgPDnf>Syy!wCrmk;m+q5M#{s(B6I#m5Dm6^`8{NJcfN71A zq1yI8iG2S~>nW{bQNEjrv*vsaw*#{;9y)NjB(+Cj5Xj5W#&(7_N7AbWDikcXx~D)1 z*Xm9`Uz&tDzFJPdvBhZX=jg+$#v z3ReNG8{><3C#k)thA66&(zE4aI6jJMZ)G@nf1YqfDUT3R(r#C9{=A)z63HHGP|!pq z%a?mkaL?j~vaHmIZ9c7Bbn6uc3;a#0g!Vf!vAY;D87*v}>0e?Yf}k!p%gb?n zL%6ms0+275DU?Pz{)U$ZZn5#y=8}(&jowO1N&6Kof6QG4Tpb(C58N&wEd_YSd$B&-y;Pmk9Il;zhFwmno_Pp6Whq!=kuXnscR>hgiR6S;Nw077W&= z5=pJWA{G)jc@NxMxVavKuv`y7xFc+}vMUk1BxpL3uY|S+edcxB(KFxNB|zXw;1xOl zv; zno|Jkpd;n|P})|FXFGj_gDH%}P7^7XCp~%&2*gO_6r5*lB0T#oru}F{bc?LVKJpwV z5|3N0~vIFwI|#zkzq+=)p&G7qKTFl%6wT_r=0OJlIMG1vU(`EDm@sB&;5$`$uIm( zU;c6ig&Ag78|>l`nOxFbrSdy`S;V&%(M32NiQqhV$BTyvW(|J?66gcM*1iYUk_*z5 zk|<7xgv;h|`j~V#;Pq6A`j-I?S8Egcz}EaaZc5}i)MT0|ZDf9LeK5l|%sGKB z!F8|f#5a13;_@;^b!G}=4wi$_7S7aLN%#{bf9#9R6cmxMR}r8n<2uh%*NQE zZ3MipfNTr=45-Wp-TQ|-(n0vHNRzMoC=2f?A`IvqJ_X6W&68V2{kZN(Q8(5yAAQ#Q;ZAHott7WxJ^4AqN&kmshF5~!1 z1N#>VU*r}*^_x;#AR~En2F^QCl)N5VM{S5KcnJac(dhfd~!ld@AFCT`FZf3AV*s@zJ>UQG5fDZ zX#M%Tzf{$4bZ6B@OceK`JB!TFPwv9ubJlK~aE{KPz?6P!XJqR9q$agVVviAG?LRlO zu8g&d#>}pZs)C${JCO?DA_|U8tR2A;-iD;S;hLS&WN10oc}aL6k$CEh)b#Ig8Y0+u z9|nUllp7!rKlrpLpzpm!`9x9;h_dxzn7bt`=a;o(g{0fN57RiviXH?O)b>r*$!w}@ z)TVsE{>O8zQm3pa_Nf3HL9n55;$TgI_kOZJRfxykeL21gS+0lO7~YmkJsbehgXEMi zU=51$z|gb`Cfg{_M|RX^Av|wv2RU8;o$O!kUtgwB9` z!tJGg3|3Y-MYpw)y+nxz@~x;ZnDmW`d7@TEhrwA`fQIih;Y3?P6q^mshu{b?KJl8u z2xJ3?*6=j7M1QV45%o((t~>j(vJq4{cxYm%KU5$sl$tv7Xw?@+yE**F*dje(yHw*qOM$O1GY+ErNz@K|4t!_5GvHnM&aQXf}62DaSFGM{)wA z$J3#djaz!r#gj|FgpRxdZzrs@ZB#@V3((8uvF*oe8EJ4r_Hg||RjUTa{}4i=x8#zc zs;639lMgFXBpfQ5G++i<)wCGds`h<8#eNANks}|2e%btdf(i)GoJCH%GPkU!B+M;v zE~wRP58S=p$M1P2=_$`(ezBYR3Ah269rOq!Q>**jzX1>o7BdCe(4e++UG>uK@}Xf5 zENTH@ii%oNbgntI&TQ8uOU1gtVv~t}!4<6hrV0FZL^aZkP+n74emLur$@H8R zwvn(qbd1R^UChwWpNDwOO)DW{7_DI^@)s=nzDy8j$@dVNbl~Bm{vRTu)uVBv+me0v zo5|x9{wTHw20j1pR-6LWlg0sdeu37#TE}oB0hjwGTsnq9NKcK;)}VPs!~x7MKW&Q_2AF2RXHVsPjm| ztgHK1Y#Y+C&l85%*)OrBWegwYh|<4Um^^%AW71jBfD^-z@kpSMA)k%e!|289y6!wg zWG|n3%ViHi$-zCU4}Duh)+oA6^qyco(OSZy*l=xz zq#OfJG0h@}X(>Y}YbG+Ot2aP_cwHzcEH1&f3dx#j`s59aV`+iRM~vQ{{N1e5dtND| zMXI|aP31pQRKiEoi%PRfteYinexe5kE79Om=F%tjl`zM80J~cWHq?WLp2$Ujv|Km< zpAS!+&#yU-A6FenLMrla`1?&Ji7%z)upvfDv%W*G9T67?%dAKYQ$HWU5$W9T4#Zpo zSoAhw9XjrxN4@6HY682*GMObyV=zC?{fG$c&ACzC`yJGZTG8tsUuZ~<=e3h zw08Y}ONxI~>JT z9}9IVpuR!4!#zOOKME(uZ-)SQ6bz3zcb;5D*h;)Jwd802S!(RdLMaf1Snlxe!E%8& zy=BYJ?Nddz;2nLq2GNUvJE zQla(Y7!Q|HE4g0X!GlbY;fXN|8!o_9(r`=8%Eaxn`|}Tr-Lv;vE)D>g)fEiJhFVIo zEGLqu)0+6)thVqdoqbe+HH2wxbi%;$|0@}NZH<8wayLIa`N!#4{yda2(_AFbt5?m; z*ZVXSXs)OC z^ifDFcZf^Zgx|iiNu&>5-VXl-kVQ!_L{Oy;4v7#yvsIwf#;TBgwTWKqYdu~fzYMh| zua$&X#_|RZLKU3MHH9Wx0xl`$cAYHg?=0>;Abguj%}*-+lW;9OZL*cR;=~z82mtsY z@&P?KC0X288coidm-%|M8Pxo9skndZkLeKkzCqANW&?;*NHwAOZ%-6@gqOM@s65O* zx|WiUQMX1V<#(rj?B(qCq**C}j{$}e3oCu1VE9|(>!^~7O22G5oK5FCf)j~^MZHI*RR}7 zcvR}|=g(lI7#=aem;^;1W|W*mI;iv(+sL6Aw7jZG#o!ntpyR|2O|xFoN?=F=3O zgZ_TzPG6?(MkAl? zT2WI2$=-B$P&m0oM8$p)PfJIzid!&TOI%R|t?QV&0B-MEKyef}4t!K8bt z(>26{GEJ?uQL&FC;l?Gg@2IGUJ9>S^X0PaJBW@68c5|dG%4D$kuN*V#Pw!`w1=jCbldoB$Y~Z%ak+p zH&(z=J1hCiF?VQ;ap=5mG!|%Lk@U03DrR4IvHc9{Alo+8oz{wK29zAygzN`b?IP1t z(;_L#8SOQ{5@-GMvw6yUODlXPZul^-75?Wi;MoPh z-`~?{UE{M8s5*cQ$>CpQHI*F(39yPCx}0ds{T^VUlVur?;N!{Us^rlebC7INw)@I7 z1qI>g2pw|d;)M+5$f(iQ6WKqq>laZ&sFh_r7OWTvTbqs!d>V)-`nMX z8-7qr1yeX{)Sw%BwG@JM_xTILYR5GaL1*n57^k?piLgovDkpd~Y2uRUByX+_@EYG+TC$q3*Gx$0_I!D{I(G6i2i*;ed;%}Hjt_4jLrFhFzNixm5Gnd zCXd6KAqv1rBqzg;0jvxpj+Xe!w#3zLe(LJ|{+y@9;dJ}|aH;14W3&=HznPlJ4k{(= zTJ8tM)Zd1@4BJXxYbs_5i`4LZsSfvbs|&hM`FSmr``uKtKIs)!4d*CN)tgwpqaGyK zzVFzYzZ*`&R?X9gdld~5lLn$6EG!H#zP+f2H$;Q{|CC|_AwF36sH3?Wwsgjk=H|W8 zTYU~iv%oM3G9rwqijCPQwF$# zJ>i3zIVb7J0R=8BIuhBYn1DYe-?f! zz~&!!g?JChPft%tDKr*^&xYL5=Goj8_jpQ|7Z0WK>hoN^=fPddu^j3xb$@>9{#z8n z((;Xj1)z^ZI4IhW(F}T?=*Z)I+XNeOA)+txa{-Ax9}rh?sL=}A zBAr+hm+IsDjQJ%mYJ5~7TxVsT-3OW}4yU-7_uo=WSU0HcZFtfnSdu|#< z0gxviu+sn|cXn#&0`}*D*5_|}?blz+RlZf-pnUrpmx30c6Ky3%YJ0I{X{cQ}Y#L!t zLYptgfMw7PUbom9Hu?H#;Wf|oa4)e55oW}*6!+W*_}HxRigZr%(=KXANgeWl$G?TFTCFJKoHO{z|Fx$+Y z^2aS2GpwW?UL1yV7-z>Jvl)cZd#1NW9lJT)8l<#>@;*fJ+nG{JAE>Hx|a!g4( za*x>1SX~W24l1)vFk1`q-GXu25kp%lIK+W?h(?KQvgU}`_Vw}h2rDfLx}aIU*4Z8( z9DWT(X$u`O2Bu74?$qX~; zwHVm7Fbgz)fK=$?z|<|N__*bm?G6G)_R`aFHjxp-F7%GtVHvoRG((u__%<7-JMZQ! z#n3!%!k4L}9C*3>if$o%iV^_!_>!QSi1etz(rdlY@~FL|>U3~xu3Gz^*`HKCq&7o* z{0WQ|Ol}?Re94o!E+NA&WyN;=ie&MCQ=EQiwAGP{=NaJ~y!oKFn*WJt7Ej~gwtv_2 zrewidD0dSrQK_{8e02Z7)FHHd!WD_HX`6QM3Sp5?_K|cAqCkl2_E#R?C6OG_&@`k9 z{lq2K@%)@m@nL$-C^*YTl9Fs*==2eH3;uGEPtlfAMzHI#ajGq_rF-ZTde=u$LQ$DT z`9jB&kKl|Ts@F~afoZD>L}#5~qGzb^JVesmox71_lJr)E{GTuIDbBzs`8{U~&uNZ6 zo&Glb5QiS5_6+jb8S&MG>tIJU!9#^fXf!rXj1wktV$~S%Q|`qNeRImI0zV9Fjp_^Z zq-{R~a$sFClWP?A^u*XVVW-675!ieH8gXd3&|>cf+tUlFG#d@t(gt6EZMNv6X*BiR zsyiRZI|1HMNUWD*tjGC?voZDwTS8}5r7)Cq?{Fw*-!ltP*L5)W+#eK6XTzE4qT@L^ z=?mN`4TJa~s{0j#@TWGsN|u*&ww*qHuc!KJT%(%W2XM-{o<-(Fk~rS;2K;^w5i&Qc z=iB2ywy&D764S>1s-jS>UP38AxwhJB`SlR=7Lv4uyvkkRs#3Q>D9`cPl7dp^6Rg2>;1Oy(8uw>ub{ z=KAq{^?xWmb{#5URbZl$Bs^2py}XZ>{7dGkHXNgxtH!I`$n&{BM z$dE*;4&6WMO*yNoxI5M?heRU5_!wh9^fFBPic(ByU=CIwe?Xl-b>%N=@ZfVKBx&e5;?dd+#rV9?dAO$~t*Bn>#17$o8 zp&!p*0cHQ_2hY((G$K2i;GC|fL=W+cHL+wxN*>CSCFO%RP_J-)So=!e`ACA!mh1g} z7%!flLA_~#G*nnyT|@02M|CqSwb-?`Xl*dkjz|~5hHkh_Q2gq2y0O1luJcD@FYuIYMFC{d(}iOzHJ zmS4>^TZk&T)naGx&eJ(Ax<9~Y-pCKtslH)u7JB;hrzndvCmlfNp_kmK=i%=u%m)+< zl=K5hMyo4MvjVx0GKIDF4FD?R6Cv)N-(Cg|o6-Z*(Hf|9ep3W%UKt*v-c*;8;rL{T zD^3badLO7%5i~nLPnxvhRizljbtcSF-k?q+-;7lhez`-uI3Y;~FIGDRZ46Ute0n66 zcS&*lSkF|Gr>#5|ZP=(es-BO%?1>?;7!lepZ7xn~k`joZaoUeb&kuL&KR(}&eyNDVHdU~=T%o?wq!of_Rte}@#F%|yfbeVBoj&kj2Y8aMZ z972D0M_VN+tw8{!tjV=J#J+|2ac!Z zksrOD-^jXhmV{YY`E5H`z0wOaYlBbROa|SL1YKLyCioML$ksS5;DB-)6s~I~H+>09 z;V=hw=k4u`Qb`HZ1E~t1+b6;*CqwzoD`N9^T!nP zqR9vmKbe)(flN0jK>edrmXXP_mC`D!Uzd+XN}R%gu|L~SWP*Zv>M@ThwqWd zyWt1X?+RAa?w(UC{MyYm<{bdFOyvU7n|}MT9Yq48Hop3%ft`|25B1jc^*&(VUTK8U z{!KUvX>QVaN>%+;M`$Y|!Fdd)RBfR(pVi=qKE!TX-xD~OAKU+S>%K@ zLCt$%dbAt9%Ra3b{&;ES5l0`6>?J>!!mlDTd9J^rZoxzA87 zCslhq$e&Nbjs#0sq^+`WDJ9_^PT~`gUve2_r&i6j!)3QAE78^?!3QgmcZ>wV> zyT{T|)~m;1wU7eusKg~bs=c6>w78dwCJfC=b>@-HRp*=nw0>MGbzw8Vdw@d&Z#749E~Z($cyx^H9W7dveb+0!`b1sSR+X z)6Zz*@LpZ2_>~O=UP#Sm6Ung%M{;Ubu7n!$s&Z{$rKm4NAd2gmUgX+Uf!loprbJwS zi$`NrMKv67qpY$CfIuP4YPAK!%NFj3gYf<>mI-I7o8D+c5RTea3TwA@nzHzEtTn5z zOTWZ!le-}T{HZ#8s00L7mJ=o^ic|bNQbguh<%g0=P*v~YYR7TYYHxiKjK_2D*OMZ# zirV54M`g8}k&W6arX-FqSLJSPkug*#V=L|@47Lgxq==G#&uDNEDdUZ_pSL3Zj~!pg z!;C<3lHUu0Hju*2j9Pm2*5Mz}V&u{t^M@fCQOm4Vz(&W5GYF3zQ3HkiR-`^X{!*1s z0ppr?e!IN2%fs?ilGRIRpE?}%<7F~i#q#3#GuD-6NQ9`QmOOAge_GjoNy4$LzJCe( z)}d+008Y^6H=!qjcUnf_gc)HArgRfppG6RKc)}bIGS*7f)MjsZVKaCO!Au(ETS@HP zS&Tl*ZuBXUyct`9tiC^Mc*DB%{D7o89I1Qzr}A>N_&JzNDV?A}bwuaFy^wz*7koj`Q?S>uP&CTlE-L+RX4K_M+u;z09Agc#DD$|to z5bic&rX&r5c?>84`Tt7GxY9ee6AX38C=rOuthCntxH&sWZtMK~3q!F30NiLc*O=1> z#C7N{C>A&{{NP6+Sk>Fh08Z+hd59mH4#7{vJDxL)5gj4vmrK-FHSR%**ijEBqk2dB zK%LnDM8`Bm77}rbEq#{rlJq)q+Bw-lWOd1SZ9yJkmsQ?fsRK*R*fuSs1J5-%q>_ys zZjZ31yZWIhvI>}E>auk<=K3NEs;0B{p{}`^ED`)4*zFCi5G-e8Tg=<;b|rARf?EHW z7x#WQ8@gb~BqnKhbe;;IwlR&f%e7(GmZeCUe+U0q-EM_=o1h}VY!dwdCM2SwaF_L< zoT(Hf({GSS7dIIQt{E`my3gAI#O7$(3FC|6jOdQC9B99zRvLkL*Bd*B)-xuVyA+M>-(PB!-2&+8IZZLo%Hz=Rr5F8)kj?`|k2M4^Z%f zxASIBf`NVB4$c4}gduhVe5qy}9?PB8RCiNk&KohHG(&ZPWtf(R1e$2@+RCC@A}WV3 zI+^VrqO~J;KNaki9)ZM*$y7rJmmOVPOFLtsNsCy|@+||Ft0ea-ejDXvP*);gHN-)~ z&k69WkM#^x{EbA#Y!i+XS%<{@!;vULVkTrq9<#bQ@Kcyo$;UjZb=e zd<2eOiz#ZQZvwHhv>&HF$IsGFC?u=TChOdTtmGwuxt3#&RocaI6)yc{0 z#DlIz^u4KSAtE=5uisAGTis1AQBWPYQt`!n1|qHT0L8t=nTq!(ni!mdD|+ZwWYf8! zRu2HhS6Sj1m_052$v`vV%ioL%U z?98c^AE1@{W=uEYk>_i~VoI%U!^2X(X6?=MiYV~B5vr~=RG;XyAgyE=9Cg05fe469 zYDxYTKAC`dAV(2H%F?#b1~k4zlH@Rk$NGA^!hrRs@p5oB<}!~bJp{~PuaGeg6Br_P z`~T7RNMpA^Prc%BFmgh>*PEXMWxt4~UCPp*@Ji`OV0p^TvuI-IJYb|On!?*hdaZhl z!IWQT+XlAs;SP*_oo(PI&aZg)q3eG$0%a zc1qf;n9lz8#56Bx%hS4HLDgn=$#*7Ex2E2Jo(iL+{C@~{(}l-EF>5%cRSBv~JtlAVDgGrN9SvIz^O+U^N% zDR2!AE6~wn1<({i|K(_0IMhmI!`8VFl6vku|Mmh$XtjZCuEJ$<>q!nJBX&?mV_{G* z4t&5E13*wy&dNP-qZqu41c&BjL`&i1-xKOw9>~Stsd*P&fZ0>oaFs>D_h4oXU^(|# z=d7~{dmpfscO@bH{_&NiDeE0JgT`9CVpxUe_qW!BvgWlvu(#$Z@B_M_QXkXCm~es6 zk>`nh;%&&T`$Ro<)!GZm!MmZrCaXK56_RMIzDzygr|a4fn}|mVWFdx7I9|NLwdZV8 z`suL-OF!wh&Aw0p)Fi#LIcmAUVTW(@NV7Nj3_&Rn%>k1RP8HF<3)&kxn$fRA^ ztU2ulE?6@A-{{vsV&JNTpx%K5DVKSIa+kNWqBnz?E$-a#5=21-#ggY?DFgSgT3_hm z!E~y2|MJlvDv&8bdX_#QA|Wnf8hFY3o@9q1iaIm_we632Gj}lnK{eqBQf#Bzs~P~w zo)(=9i0XxvlYSbBdy{&#P8nGmo|>j<$kLz0IPLv#ek+b2EH36LBCD7cq*@*6Tq2t2% zroL8Jz5aCUcGJYjL`85#WEj_o8{;kt5WiJ|mn5eFn~>}QrXecS`^thvhCEw~c#2E( z9ab`h(cXSSmCz~j?&2Ckq>VZP04ht7yUdZDJh-|^*bp#W+Bkt>p(7N9o=S75$$^T0 z1mzw|zpRjfBI_H$7n{jJgZMZ)7@~Ec3JT&r$`lGOEF>ihb*gbnB-P-!am&X`hISfp z!o3Op>j6Gxzmm*CE+oj~cvx>vPE40D&uNABeBkR398^mKsC==`$im*sv3T=r>L%w5 zq2P2bEux}x{j0f#A_h6pG;AHXbr2t2rapEo%0Nb-G_yyJet%T+^FC}(q+gL6m&Z+#U=)hC=%h(O-|?*cg6XkrxH%>QE~ znJz*peVrn)L6S#xjL}C>FWeXB`a(-Njoqv`1B`GYca%}V_j=bdoUhs-3#5IQ!GJTc zsl3gOo-VglWEla4dn+XKj22}v|Ff0Q)MBzSgAa@IOSQhe;5W@H-igTJV*HSNBy!nF zYD@XobSKxmtt{JaVG?ZJ^q8~Xi#HoFuw`D;Z_$lKwCH}|@##5fqWa+;SDBZK!2O`X zgi|9+%g3wNU-OV=(lUds&_y~29Ae$ww?TGi(Hsw;Ida;$1g|(zey@w}7djR(CIt-kh$Z+a;P}g=ycpe*ZPng0JDPL|O$1<A(Ha)73hD{+d@cG0ZDlN{3eGbzCDAkuT(>Y|E2DMX`Qv zqj%1Z5?dF6Jl+oNjPZx`T>gVg7Bg-~lE9`ClhcN)Tp(!Xiyh%oLDMb0qMG%Z97M&H zrM&ECAPh7%)$LWK9>eculf%KDcs`AQclGc3{9_k?D|u`xpvBYCEu122?A+GtE>BaS zMa{TBff2%kkw40ziFOO_@B(9F17IO*oSCQFo3P*_;; zE2zW5S<&HGiazl5_*%a?GlpM88>kSGhjerKMCo|W^@Ael&~*z`y?63ItP^gO6Z^C9 ziFtSDP?;v=6k1S^3(U`!90V2}AdEl5iu(#N-v)o5J z7R+d6z^P#|8wb_e#e8mDEux~NadvU~Ie3Q*nc%vKi9n>##cv9Hl%MK-Vcm9-tp|6) zDtKW4jGlsbIrQt)kWrFwNvvOGF<^!;T*N>8$q?9Yn8gY?yjmT67g6<Z|%c7rXo4 zvzvbNQ>f!WLp{u6d0r%^TZXHFK5J9sx1?A(&-uMxbnXvC`Tj_dap>YO;Goo2YSzR7 z_J2yq|Cxof!bwEg1&p15aD>-e_2fk=?zPFnr$}>!{W{fc-fqq6vd}qR+m*7_QnzGW zL9$r8W}8G>L+SH>t6o-#B7j8eB?XD`Oa5NELD=k5y}u~5NfnSDBXGBA@lL3x`L^A7 zmnT(vL!6K|5m*LRJDGo?Zj>h}olwt(QdN?gX+x0_UqY+7wHw_>u?V(YmsKGehsK0W z2LcJ)z1%sBNN40(VpmJdOEIDII#ZnrcixIs@<|u7n}@f)2iYxje>p7!!3=a1%#)^s zIW7gkVEbyIkP(jM&!<#Q5gscMsLL}DV;Ymr5G6XJK&-5{FD}&5dltsbP@8gQ9)UKp zT_qWaDI_>FVwu+Swtw2)CPRG`rrQqz{44#CHbOL66!JSijSt~7QD++Lh;D8 zZ_xyQ{&iHVdoS0@`YC5jY@J`KL)lS$qyMQ|m4AlU+>y0Rk+WPtU?bv{GY0SYA`fq- zse@dWWDz?kOC$^H6^_vNWQ>>hE>>4Zkd`6kVt7tJK&Z|0+iD;z-r!do>TDGrG-cvQ z^+2SRq7F4+bf86ivvTG-N5c;jI)9Y4xS})6%c9hQBc+yb@jU6VMfJxn5hvC%Uw2Tk z@(*pFHhr`hW7>mcGviJaH4D>IXRy59y^*?N`==#Td$9ZBM z(1=ZG)J5V$`Z*KHw4@t<5_6grIy727cYze+Gt3t&wu;YJ%lymP+BEhY!sR+c@aJDe_bU;l%GWjEV6j;0kt;SrV#X2lm+ zPZ#O0S;$}~2rW|y6NXmWTOk&c_^^hZy#Kx(5KW<}3hm@_ox`TL*!@W^`Ys!`g>?xh zUMm8to`HNitKA@4`9}IJhb^P!`zQFTdn2-kCw*;{R>X87!VL-4ZSA-dizkhZs7s1= z#Js0Wx9O82vwvpKG-Q4zUGY$nZK5u{;>3(j)vw#Ed2CBW;#6Oq^F!;^)6JjXpOQb> zsSkyC1CM=Umd8l#OWrWb7q=-v+v@{bsL&P^ln{^Z~>f7QU;MxDpIBBOG=YY&A zsoV5$G6UU>7fOmU-a%c$*Pcs}J!3QY^;d=y2`S{1<(?O0!vtZgUX4zt6E!>G)u;^g z!{%T|0PrE+ygZ0*u29hIGaE^c68Ei{EM3a|(RQ@_1_n8}mXyIB$jFRTjYzg+9avY{ zRhqrnP>zDKemSvlKj<(Gz<^fuT{68a75`7PO+Jcv7${koFBx2yjK<{d4N%ANCO=Dl z;AF`aS{P+_Y5q_Dg?qK5lF6(1iwXpHz8>-P>$`4RSz=1w142yiwZM7q%cgT~wm*N_ zwll86cX&+KwkHx<;fb{kBodQH)M%_2^_M^%(m7z>9MD_La6uH)tjO$saH>N>pbww~ zH=Sgpwz{d5NWrv6F1A)LsNr3mHsr~8-Jw@MMFtq*_15D-WwqLWdfR2RPfyK%LhVHw zesGWd#_6>%U*sGT#E;(n;TPWZbqau*NZF-OFH0bo>Zf9fM1zcSHFaa90`Q37kT}|! z$l1KcZY!4oum}55H)8CGh@Zeu$zu>k@W&yD1SW*OVPf7;ooN(RRWq2sHBA>tc(L42 zEFGfUC3oU0aVJ@O&JWJaB6~_iTU$% zs04D29|pKF+fjno{9vW3kAjXg{{nW-ZqS$BO7SelGVK1c>^8vx^rZC^9eptidqfEw z%)uc|VQ{>Hr+aNh{u-cAH2ES`Zc_bC*mfRuQiFVU-x>r1paaZ287?*7D|||z;lY{V zE=D7&)D}iw$Nv3P=O>rYmE7@A6hYt(AV>O-ons#PDTqG=LJ>^&RFg65pWe2J(Wr9MsLMSh}VH@osE>ib{2P0 zA7I50151j?m${x5bUP099J<8he0n9l;PJb%U#~U* zS&#_8Ff8Vb8lSRR{1AZsSZk)vWXa+VoHBaNKHne8MNd#HUOHq?u2uCdiGm*-+ye+U@F@caij%YBbPu|lSNf2(Z~l%cWC?8sxb@W=1!69B1%OFD zjs)UixlDGc&v5#mWVy-B0?s<+1Sp$l>aqXv5>U_1FwYhAo!5^EUMcR*r47C)_H7Ne zTKveV+e@1dYcI$;;a5DLy%w>=MkabzDQjdv*=F<5w94F^3AliyN|291fmOHFjJPIC zSC+HSC=(X^_D{5~YNBe+t$QTu*9S+!2YX0!d+5#Ew&0`?x*?soK*#8*jcW)B_)H5y zB|%&Mslp9CC?2t#|6SQGxTsFN3B$kw-iuZE(!%#&c0~@(ZL$xJDaSiXLIyi;XD1nZ z-u#t5m<0z3fse}8Pu8WiK*2Z6@XZwIM|D|J^v=-9u~5hkHTd$u<dbMAhEcPZUK(LtV57ic@xjWP*6xM$Dq?6<&4`zY=zq#B_ziPd+BTYSY*I~B% z#Yz?+%9x`f&1cuzH{pEVZ7x@n6jT9aaL^36>oEvY+ms0Nvi#r0Ru^(`j?jb6= zrr<_C7kgNsPT|(8W_4flTq{y2#dRb3Gq@{-{OU<;tv*!;DHFy{%(CuE*?~tvkfzH_ z#xZ~4vf{=XdRagsh+?_Kt%3YFieUPoD;G+3ZfC$LvaS-U#LB+hItviJpz6*lRRl)=K^%6A}|CNwX~rdPNw~U?dO{k~vjQ>nyyA~*J9N`IU#P$tpin3VAbxFH4)N5 z$PUeN_FmFOE?&3&hxqxjkjSl@<2O|?o~O8(H`R}Cr2gQWOy0&Ok@7ag_g#}g>uu() z3#`1C96*5gki)QX1>0QYas)K4)3$LGlocV$8kvynhq(-YaXHr&RD|x?BwbVeZ#UV; zE6`?&j%q1jB+==Jg2IeyA{_@()#D%6Mh;}Z2Tb4}+$y>&uzRN;_9Ffy2mep^muvRI zV9cz0j%$&irr_4yB2tVhTw;eD9n})mf(E>Ele<}i$Xkj^W_u$tP)s+QU#E16_rVfQ zozi+Rj_ht9eyIh=z=`d1&vyA;6n7+1~U~50&FVR zdYB?REH`3d0uV+_hCk8U;Qaj|(HT7#S`4?R*YtMQq-ke^$|Bo+15zi6&CA)-2Jm<4 zf^!Q7H4+jQRt40cnetXVkq-?%n?RBTPrT_fNtTL+r|i{5&O27Z7rs=tJ9vVTgq{uD zo~XP4v3B%C*xSNL2lyU{71=HM=68rS0w;@Dg@jIv_U(ck5)5`A_J|l;xn|upH3{!` z(Fd=Z`HIT8hLhB?y2B_2d>=Qh_;Dl&2sf~1Sqa;Jb?G3^VjNt4pc1l%or14YW-LoE zA){+!%&L#d?t+Hb45#yk@W~wTS*_w%as_LvnjLLt-&)gtFqsW@K7g5GyvJ)jgH}~# zJOjwl2|eGCMXC42AnrVUD0h{2Wat=MmQ3U?sbyIBR#RF8mrsK6VYW~sMMqReO#{7?XGr{zZ!H(9qtUg82c={dMH(VbC zBhBD&PNet8Xw#zz5!cjBfOAikJW<-Aj+Q~6jyyJE$pA8+aOZM)O_jOPgRZ=I;1F8n zNZ0^f)Ngt`#r8isTvWj`;~6PnS~VhveA$!wh=|c}HoU0asYJ<~V}*68_yTAhFd+(_ z=o&V3uuNC1Y)4echoK;&!8-t)%5e3SSwMz=Pg7o4eAmPe zBlkW{;ho<9BqQFfts?+|;+Yv!%v4OhToy?dsh-Wy8J3;qY+_AfFL#*EJ4a;1nV8PI z0?>mM=JKlKwV8@mmltwmq`has;~+lI;+r@1>O982J&0tGNna!Chx0J6MH1gfAH51_ z5WJmis^E?Ya~ebC_U_6JJi1jWjvlP$o;)$;-YlQLS3srt+`nQ6xBe>0sAI!%O z4OEy+0wZ^kTRe&aU;lHj$Ev=Lu#zcpc8p72vc0+ID(szLjAv1&=cTc( zge@cWq&h;kSZy|@?j7)WM?~Dn-XGYWBngYM^K^>BI++=%;sv%x0rxxEnQ2ui&_%P+<(poqwt1H9JHr;2!oG&BCg1dvxeK; zldyyZb852cG$IluR|J(8Xs*JJOuC>sZxC07N4)<08BKvT?e|(`$NVAAm!%vrkK->3 zav(x3YE?AsCrsJz)2G{l-^x&>3?)YwrqfnOoBB}!lVm7WZ^GjTXa?at&;a~et`Agh zvpvxzJ%zdNNp8iC<>;!m{Wte+tQ9qP$rmMI`{-BT$I!iij8gb_2)|Bd*oS>Cx6#8i z5dgmI68&)F4(wz?4`tWB&W7n1j-iXczDlR-SYwwNKDS>7%i8$t!U2;V1w`{@mCfAr z3l!GMGmXgMvxqJ>gN;eq)!+2Su&ul}q={G5E+r9oiiotXrjA*b8 zS|ci3H5_|)-pj_77KpfsFUq8|!gaXS#E1aO6P>+4IAO;**mRzw!{Z?bd4kt#^xcO! zKL6?dw3xw>u-S2XokTu|MCP0%s%-_t+V_ql>4fY1tA~E-Os8Q}fi5dVKBvGyD(_K$ zNfc5jo8{odoZU>vQu8NBN)>PFIrF85q)T$HQ9o1vR2_#@B$k(nN!1GTebqZ983KL& ze^)ck#Fr8RBDq1~*s1`sHhF$?0P@JceM#t8$SffB8WkI&$i|^Uf5phhs38w8LfOyK z3xO`soRJNPn-@&s2L6iaeDgg4MHlI-Cah0*&_^O)x`c{2S>=pm@Nx+QQXOnNyuS9k z-G+iw)ed6htXSfg=NFzp(#=AM&+uSW_L37fj%M5y+N;`6rdAs3Pn9`HeME~?Jj|V1 z&Lb!CgB$GNpoXW3x_r&VO$C?6sjPPH_R7&+isQdqx5kfX> zbjk%7;0jAl_ed{i(7<;s*FJg`|Hgo5@eMD;A^J|XZeg?W41>{15bC zT6DdgFe$Bt4g;Bwxep3n$O|wUST}yG*>6THJ*+HWDH7wRGUag+%=H?-}+R^D%)< z4+wCmgteT~wFW9Q528aMl7Bu+!)AJoQ#xyKF_b8~;Wqb+sA5jql89Qj2Z7@_5ju;& zgGNeK@uwEZY(Rts_g&Ok9~lc-v(cZWDPVua00cn5PpC7L_9WKuGtv!QW^cN>Wjaxr zw3MN_$_cG~^hFTNr-f4vJguGRomCP>gb=z-K1=m>*^H=VRBV?>e8IK|G6XGd+jRN- zV{J#GHX2>8Y>~wilc>A1)az}7phiq#g`4;H-*M(m9=ok1Z8jj9{YUucKpNc9f`2Zg zhI3YdpRsXoU6Rm%5k^1Y<~6(ewd2XPQwS5z^i(V57j-$|DV-=qHM^%F|@@3ZzEfAYq9Jr;D3gY_^g}n zLcWZ;zLd*^4g@0Jrf%k^fpL$UDQ%#=3~d{9_>yVW5Py~#8`h2o{2d`j2|;^ZYPU*C z#@;MhZk?|_>V-;0FL7T8+`rx=qKPHsxpcc4%taIpM76fCA&i;8)U4p4YvtUMo4^eZ zF9`LD$naI$DTj&3V_$qUiosp7e1@@?*YIQN|K~DZ0O5w!bg{S+JeQdi%?ZP8Q@qB3Nr^GIJH5!ZRA>%=%&2UyfYSbJGQmRtUVN^=9-tnO$nVOlS{xcaAj9wm14 zWs5gT`l%7ppeHa z4Sz1*7LgTr63gCuV1Dv{_oUA=B*oi$MQ60;5_xIIlDgwoS&H%D zQxhFD-wwdO9oG&|sQZm?J8b5v(DVXMenx63wD+5D^-;9@Hr#%N0Ko2(DG3Vu^M*Gn zWV&0nn03)E{P}U8txi$=$P<76`%FXTzI2nH%T3xbtT3N{Lm~5R*x7)ls!xiR;%efT zi(2G8eou6$+gd2L5(D=va@CgBHVBZKATD9rTTZi(@G8k!gxzF_3YCyehpzi8vlLz} z%GK|zr?noD<7dD&u(GWv%$<_5acQW?!tl-&e4RtZH-Dv|oZ9~JId9)tdM=y}3kwnh zcD9)HmzuBKfaM01I8Y0HGqe@t!?%|0cvkv-n*oI6ocB4frKmz&-T{aohZFccQe@ z88g}V!~rMiVq4e^qvQ2qfPSI!*R{z{f@0V5cSZcWL9@JD#u?ff_x0DUz~*H)DQ5Ui z1Ue8DOMJkJXv7jE4gVg&iW{=KnT@R_FrwF>N7O#{CoS@hqlbV^TLd@jWIJdIdQuz% zR=Zw%T(#cj!fQ_#qz`n6zS>4F*So1*C%WRYY}op@H3c0M^> zyUm&i4oUNFjsG=N@pM>>Meb0Oq^4q(6sE@6Lk)fM_rtu8uRRokWYWvzOtmYc#-FNXHawnZ(SymY z5Wq7~TPrb~_!17BIU77eZz(sVU-m76wWcH;yfTCHzJWU9B6E>{nf%QGAUErCDp!9h zs*_VRtGBjrmJ3|tgK-lcdfCK+DL}Rm=+^4bl$PL?Jzi7ELKQ@n?`YZkru{tKdSdLZ zS$y1CWW#(W?UNYneN}%%bPy-YVhdi?g6@T>?ck>WTm%Qj)0N4pv`UOlncNl=MhDV2 zAEHF2v)j00{CQ~~1&uU!7&ttp>1O zsXNfu5ZVrd%+M>!_0Y|sE9QKuRpz&$nKQJFxT>Z!OH>GrT!Ge61pn{Q8V$ri;H8m< zX#ts&qel5_uTmSN1h8}X{Xg$k<75zj6QGWKKul(qK?jp5Hk5m}XcgH?nLs$}=dV$W zh#5&FiKY{o3ky{!Hd2J|#^%gi5I;#a^_wih(_6vw*>#gXBBY$WozF+;^UsPE6h+PC zRrCxUn9Zo1t{hh-wxDcv4lxU!thp`%E+eGB7FapSzSy@F(gU$4$A<@uyZ3oFAuZf8%JUDlUa&T%eB7|p%-$$S&L`^utK*r2x-eyFBx3(Z=)Z; zG9IoB9SoPLZVwM`PxCNZ&5gP8tvu1`s)4;RZ`B>q&%C3Ilh7(#@{rP-OUJd}INWx* zy|HP+&6DB}(Vj%N(l0-l_Rj|n50ep9L)WR=<&dvS<(3W!KX#&a3QJeddK>-7{BzlK)TU35N|G75M3=u6@Nv|Q|Chu_kq8`*z~#+| zCKlalYJUt%&OiNnDmQ*VT>oRftg(opJ^>;phJ)fykdXN9Q`~K5^F5MHY1_(#1j>UC zTClLRGMosNMPEctsaj^pZx;a->=+OV-52L5TXWvy;@CK)jvLceQJyUmfubXmgz7Xnrs^IyG2iC&pT zYb4^KZEZ-aKeEJ64X#-kufTxo#cqEOP5}T~x-6rN6qR^sgpf|}9stpU0CBC!pu%Zc zofZv!uLh5nqGEF~g^Qb;-oP;0=H28GaI8LMwI;=Y##u*-=R6GlmJHDW#8QDjBLE5E zlLlyWQ#jG#B*naG86Q=1C#5a$vgwykrp7e9Jr{l5rQw!(STIMEPUGrG1Ce5Hx}=*9 zrxyFbz@eiJ+Stj`Xq0<=%JSV+jl?dvT0JjdSYLPQm@Ha};ig&QYRPx%YD#uk%G`TI zW6|w^CWbAL`ZRV(cEfAygD>wZ6-_DRj_*AosZqZJZD!(Bi)k@EW2A{mgp0=N@-M4g-&ZQ z+}qay9F5)DRGnYB@lVgxiwjpqBsuEltgvmLsP?{H+Kz3HqI0{0vd(KshXlOxWMNHx z7;Sh;(^KXC_5xhg1nu}ETxW>;8~QkEp18GZRQzFSG8OmvJ+Bo;dB1|n-t}Ap_bb%# zW{i`+RJLzO%sKmi=)vDtcusYYSUAORd~pCJQPFiCS~+fWG=Tcz&M&^#RmwRf(#fqh z8m2DAUrEcVUwmI$k$?)m$_mwDa9-yFECts@m(rShN%e&HQ`@0S)-3A19;07a?6l+% zlpWqC)h;zi9>KDRYmXV%0fs*zB^e%-SpPgN_(7dQHohT$8y-x?_%+Xqn3M41b<1|p zsPVnc12WhfG>JN%FzbYDF!VYIWDzrGSOf7Y-^E_yXmxd^M)EJw zBEj`vz=oUqH5~>vq=2fRb6(l+5^$H|c_5O2bY9MTk0|fvFi@p@Q5NDRF95vD{?+l;sx>zNr<_|G}yaH%|ef;E2vGV8ZD?5O*cg#|9xD@ZFxS-E{pY?krc9}=faKPAtvZ@U|@M| zrV9|5ai2=i{%_k70WnY^=HedGlgmaeJ&(}cR^y&JRBj#{eGNNTi}IO?!k&*032ka$ z)hfdOXYgdMdJN-kF8n$1OC;AR60huu3dN7AS!7Cva%1`)6bc@-3f*tj|G^J z2s5$>5Ut|tkH>V4G3?SBz8J6bzQYv0DoyxS(hIUQYY`M0qrU7cZCP+YMnIeRt-Ys} zefDhUn!pL@3PJl^(?ZPtt4e!P0xm5F9{GY~*-nhz+Pyz-U-1t&V=!8}^(}Udz3!?x<{Y{T zE^58?f02Xkzn$5DTEE#Dpaq}ojC{CalzJIt6{qI5Hg+1`MLCc1td*wW+D>-#6r@|ru&@U~8uGVRT<``KvB=bi#9yS*RFQP_K@F_m>Faz;MDmX&9R{#){-$!C6F^<$ItH|?FC!t5mE7P6 z#L!JbZ!TFE4LJa94PzeG%whWVuiX)RINAhLGnbn!XbZgZtcu&L9`q!QCA_t*oHohF z0b{%PRsc0X%DgB-b?jR(FSq!y$GE z4Q@C3ePDC23H+Aj+085z+;+9;o?5yKpXU@N_as1bsWnzueTxyF4N=XAc|mQ(DH|>*2hQK(N?sgJLw}!t1_5PFZf$mz2+R=H^`YmvYnqv%xkj z*Km!RIfP#TPxSk_a;mSs(dH zU$X<`kd3$=K~CNN>6;|4-1MG|S5)(7(ax>&r!t4;0{H)RzOYJAzZV->dv@K;1CA6o zZ}YC&J8(A1D_E0`y(l)fYAb3;Y3snlguz_cLYiZZDB>xQ4$8Itaok-c5ZDePtkQB6 z(x+fhJta?9XZxD{ZyGmG##Q|g55rfPvF5|*I(w>i9Asv}X{I0*h+m>)^r9H9#!)p` zL1_kvu&w$LqPS+>d)E)0nK^BAMkfY=?~txRm+y zI*0_C6dZ>OKk`C|5@>N{q+Wk=7ID3*4b;{N?vOEkn5=mc>m(W8?j^N9qvwShFb46R zRz!n$#3!?IH|L6IHOCg|6=D7NVYL9|Egzg%LGGkH!_Xd6qC6=QDz3WA6#qbP)$Pxy z)zB^cGI+VSuD(_0sxJiI+71e(UsDdNm%Xd)olmJ#3!=>I#FJqCHE>^^EtVIerv08@0aC#w!l*$&QVv5(+@a;_7!EvDLLZ*>My7%iIx{5xVKkoUJz=cX!GZ<{TF zmr1fbWs-OT^n{aI97(?Q4FueHb+CL`p_783nj=BC~CNy_(+4$9Jq}a2V?4Yd96Y?11fvxX3#45r?xP6@~ zwi}tyl_2eJ@A;W9*$JUbmW!D82n%a`P_ovD@-;18Z8D&`q|OBy7Q~RLo|UV(P84Ri_A%EA z;Z9aY#0LD7*DhuUfFJdVPD_se1u@mZ?gUIUTeOkg5i3TVXJbp@*iQ)_6Zv{-5}g+B za+8j!66f%tqv->1P|7FIOk>PmNzr18XBH7V{aLzHm#Y>m+F08U1IE+onN>if5rC~D z_-Y03GyJE4O&sibnywvT;ZO|t7LK`Z)1>{X%g3XrcUG?)CU!!v1RocmuKaO*{Q__S zzZPlSV4jjrds@oEeDlhOKW6Vf_{pc88xpgP;o*>TeX{O{iH;iFWi#1hsU(C&R&(cW z4NHsqFXe7P2`c0*PC3q^Rrm(#{xHDQ@AV+C;1Drmuu!EoeANO|O0HFH)d3#C>V<7D(?FY_5DI3!CGC~w+w-H1ArRNl! zlF7yOz_>l?VWml#rBFpJ?XNtVpvxw@+{L3DSM9fv{H@J+PnJq+G1{;~M+!*%)tQ1_ z;i91RaW@&?+hP=z2>(6=Azi&%GDSiEyAkW2DUNQt-3d#13gE#2fRTRi$c*52j9UHJ z!y;_O31?@quv;fAF#J-jaH;J-83XiXAoIU=boEHgGPbDOmVKUh7MuO3UZlM|GL?dP zd@Pi8T;d!YOt7jg+6aCauXaRMaoq!he@^EoC&lPC8HRuyAIm`$54N0DsxNM^!Z%q< zG><1%A?l&;EC4;4I3|Yq`@Y0u7m{)Cb2x>^W=c$P8qv>NLT`eE^s>o(8XwhQQ*vsl zbJjX%dWlPV_lO;OHaLQ*XQvW!wVnU+RzD20KS|wxB&ehMMtYQRd)-)Gd4ZUMRC;JK30!S^^?-h z7_?7hQ}HR~UzvK<`72#dbEA!O^gF{-@F30ETGTCjyVn(Cc5U#CL;I1d$^VrtA18%^V{&%D zwUK>lultzsYo*H|NzbHtT7lSRoF!6tf-}tiFYh2u``qxf>*Nj&T#`dmrXXaFlW6?? zkXx075}oAF??d_-jxMH17nJ~aU0~f$0x9cL2hDOPz|_WWOwd~eE15KpOpumSoGSn- zNUxu7)I``6Q(g;al3pJcXOG`?pyAQzcy_wAq>WtQ>|mQBep6kJ?1$@Kf>L^(Yg zm4lDV00&tlrs7UcHrwnhm}~D}yndCx`!+(EKS7jL$Lf$mEBntV251Q^+oMtBRVxy* zK=W^!WiPV>>%597w{!+i*8!x=&8%3&sVb>?AG<$f5YjdzC8|TT^n@}3s)R;q6g~x> z@((4Bv;@-l;EA%*Z5$q`?e*KDUysI>$okf6eeTdrEGVn$ZH=<#y!1qYHu9Tl2C<}& z&b|~gj+}&Rbj91;bG^+L^;O{_+nxodp*D`mN0ko4Qi-0B2a)YKGz5kOxVA<9?skUAytmm5^_Eov3?FTn zQ!(sONhQg~x_3i}opjy3Gw=6=E^7}0R%@o3jnZshWCYA(2_N#W{MD?vw6qUBp;jX> z_MEUq#^>>)YH)}D0k1(()Wd|LUL@_Wo7+mL?pO=#KxG99dpnxaBxiuaKQ3XOxfDtL z&ZF~FJv@8`$Cos-a25m>gtL6)cuH*Gz3t$hLRJ*{PYB3a9=v~!NfIz!4(4O0A{7FG z*f=CO?;2K%n^b)OE@sv^2Kd?hvIW}7I>S)VOgty2DIra@9&cpJ=DbE>r^#gpefcUw zI0TExP@iaA@07j8 zdBmJvous5-F;?K|5{Yskj0Hb;*xhE6hKc!q+)z<)WM42sYVG6uI68T84*k2=F;PaH zf{~PoTk>skhZ?ooy6kJ5qtz9q%_NF+seH{`fz@?Rh?($~iYoSd(2izyj#aFOBv+jDIKTL*iGEV%!D$ISrN&J4($E(4XZvRW?QTy|9&?p z57c?QS0SSuhiVkB6rn#cVC5tKiiZtTC&funZ}hJOgT#5cVH?a6$ZE6`YmKKj?8W~u`Y|3H&`Qq^fu4Jp zzgzH5oO9~+ya@P5LAc=xjn_Z`sa@(>2wGr*f=kT+Dn|P0RN#g1E?u7)c@O5x2aQhf zI)5R#@;{GpVdo?-TntXil3!wN*qMaCbMdL$v8k~c@MM`gs8CDukonA^$@ z*>U|CK;zd#>6A~uy&>WQ?7cIAR_8~8rfs#51Gv>A9~c$u2uzRa7gdG2> zp$7bI)|m1(9PqYpS2FZ*AwgO9R1uDNqtH?!r-kGEZs!$NTbV#A4b<$~Q=2FaleHnp zi?si`%2~Z$SD#04e@Q9Lyo)<_t{XVu0b*%2?dBs=GNJD(O9HE~-y{WTO9u6QuAE^DV?R2bF(jZBZo@Km`EAc#PH)4ZaF5B{ z_r4t1sw~Mx?ve5l%mg7Yx$b6L4Qk{8@YOu!9im}WuV;;yba}>;?KnVr!bhJw+X_8Y z_;(SeNCB7={$uM^Ce%NO4>W|TSPGdmgb`ZS#1lX<1C|f?!N*od0e1S%*hboTLVhTS zQ+E^Z5H-pM*KU!92xQ4O(Avlc&J>&&sZG7L%XN;k4H}4VgN=4Py1q&9G(BimsCFP2 zf!PXcIF^o0O7$n603d-mS`pNiVl()f#?I78xX#Uts6tu&PvBP)+75_zTcWCS&nZ5s zyp&ipy5`}3bUYDB^Osh6-C zd1bg`(43OegocAECFbW(>M|s?Z%UCOVN1#Q$l`_p>&|a_-QY<&!c^H_kP-2n%m7LN z<|N>qE3^(ZZo^zL*!ww|6K`^q^Vc<}+Ie!e`QSrrsdl>4*gxP-vEu}LItkZSl?6p{ zyktPcY=Z@9ykPEg$=!jX`WC`+)y?c>v;yIs!@Hh^PPa_xcSmmD-RK^njh3Feo;GmO ziCizCS^9oeW2!~;KcOYB@a59}F?Tlw57m%`s2!NUwzpt{r_%+9?s!xB=+HWp0<()< z>&_B=h5bh!`AHVQ6Vr}m6tg{!XPH-;wsmM5FgL;9bfFlu*uZKAGZ`4*imvMGe7@eF zXwk5>P>j)3r~(XA0>3k`MSi_vtnb^=(8LHosWhmUtb5|S+aT6IE9U}TfY)i!WC{y= zT%S>8LllylumjNvx)+m9d`;vAD zp5i8#Hsx9N)td-bR&UOdL4&{V2?;R^0$k&uKcMlTPaLA2C|+DBuuIQ00?WJD(7TXH@y|$; zH@h(ftjFf+bZ{fPvK6T;Ar2=INVn1HiO!0ZA%ArV;F&ng>e7bjZ7ZiQLB24-eyJ^h zEvK#;LLG7ZMNOJ)FP$#K&iinDpdv6&Dg)Gz$g_$o0Es6W1Pg+uNc6rLvlS{(h<2(5 zcwJbb_W7B>Oqy;A^SE#tu+70eCEkt_J4xp9wT(Yv|LAAvbghN_-xF1Wv^FXfdbl)4 z^0_c;tGSzY8>F+uF7f_X92|{}yfAuaRyM56=187Fjmz`v0!Z~sY`_M>8wGrh8F~dN zYrjeFHBgAJqqY+K+*7bHvmK@|<6uvp_fW-IE))8l4-(X^in=Ms^Y21`DF%CvB%7pV z-h(}Hy#>$D4yV$5)UWVA_pLv)Vj&>U)4Wr+pXc3^>6KvoNbW#xZPPJkb}7e=vF^K{ zN(V~)AMZ0*pL9H8AiznsGk!AX8Tk?P^|iS^(9*`cNWn7YQkoU4sw&lfyp&s?8-}j{ zv;j20HQd`;4)yRf>InU*JThp~rB6#AJn}wIUfpM~PU)pEOOb>7uS}u*G~u%$1jjUO z3iZz{9VICe!H}?m47fEvB+_4tCTq3d`N%s&g&KeRoWZ~RQ-62Gr33|t+^I(9>_Wce z5`q;+$2eo8UbBM0FpL?X&Ypw;;rqG^yG=R>eBsdmE{pg!KBTs0mJV%>b48&UmA9P? z+ufb@*B{`kyV+bX3Okr#K=Z+eENF-{Zs8Jd6?p5F1+GO1G%&m_>Yn0=L@PAa@uvRo zkngz9@g(e>U%TJ&N{LUk>j>h!_-;88Dkw-ZayKjy0?k*Nbz5EFIo~6bI0ddqQjwQY z%x$w{vEzxqT#Wh$ZjFCeGe%##iX1?ugd&e-*|z#+-vQx@z6xLEnJFZn=ANZra>zQv z$OWCWJ3>Z7){*oAep_?nz znwExUYq2YX4U_9z|7pV78gb#NGqD!CPeq_8|v^*y1k0xnlFM5rR8U#g?=4PkF_#Uc)N-#qTEV9yx_ON0aGMbJVp z^YKnYSLfQ&!ReY55g&JQ1O_qOW6z=Yw~Z6tudUTglY7<2md}-8V)(H=kJ;r5K3VuF zE^_Uy&LR$|wHu{InxRB3`S9R=&n3nQw{&4Nng@ENd3{K}Nbn=zWOWxv-J(x|!e8wc zR7IL9ey#%$ejvo4rm|$78XO@M90>4c{!28FhR-2Z_w|?=7s*_JD!lms9w0PiPtT6* z_&PN(uF#5)O*h8##{1z0`Zu!lrSyuPab=}hpX{t36SHn@~} zCqSkV0TJ>Q7a@l2T8!bWy#JglZd2a{foKTFL%aEIy>HIY`5-i=wg$M?!UDv&Nsp}i z*_s(5$Jsp7MrFW1!nSPt*44;NVk>q%oK8b$hs-@Lo(hp z$;D3igzd2^1-i=Yi{OM-EoY-jQ9}cRN2bkXX0R;4D0PT6+|m zDbIY256dI$DG5{Lr~zXW;=)xvMpvkExR^L7BjeSF#}8uSp+C?x?D=cNpa%Ju+9 zVXvG;1e~FyxXfo|J#j$IhacWe7Q}2IS%|WNBNfh-cPjpGgl&>VgZ+So$ABW(GJ zOmG!i!g%?-uNTS2!y7M-Mkh1~ReI$ke)eVL;7qR^4DGum8J-Je+za#p_yUAu$!`FP z-kDp^ZGAhaJ{Ct~i{l>{p!lKRRS7__s^Z+d>$65vl6OqFB^#Z^Oq6j>pFB_;?f;*o z55mO-h3;1Cl4=JY#r2GuFcD(IV(@KY_E7ka`p7qSkd{wSi-swD*`L(spfNKM7ftS1 zF2W0K6?$tIgQ8>q2AEpM3?lM>WPeY`#ZmDDaF?%u_SQxd$YWf991RTMc7rDxz_n9> zzcY~(^$dn00(u)80D|2)bTa6M>^C(btEZ5>m5y#INh)ze2sK}(q+LRgLLS#oy6E&z zFV`g*9}x0|Xk;>RBVn%T(rx z#*VbEP>ORs-vkZ^b-@2A=w7pw=Y#~4;q-Jk=IJK7-Y~?nC|+5BI-J3Nq|OEwQZC;| z;R!HH1G6u;i^K_X9^_Fxd5ZwUovVRz&JIX?l3ju2Lym&-4ziwKz1haf==MQN zLViBF&1iMC2og{3R1mlJN$z955uK#Ei2jcKHg(wg%-cI0Yx^!98*@7&BBhP5!RPpe_=p$CLgoihQbt1U%D^5fo4x=@O6WGx$F<)E|1clsUAf?U<&Bbco9t?Ea%bo5H{{Eoa7>@PwIDNk-)=`eOIAj^Vh zaVeN&D;yXBNv8q+1zMIUFU-G{dyOIlBwcR!h77kSF^x>lI^7o{;naLJ$&!}#KH#{l znFq%ai*&;eBk1S)uD+^z$701yoDgn^Wmh!WLPmG%ywJ!4--~A@VFnH)2qND@;`KRe zhzQ&lV7UVOfs5%Vgjn8BN7}8&b<;sCQ-flD-+Wl_nt`nD0V3p+q@7>5NLQ!4HJi!V z8EWn>%LxGozq#AOX;0N`h-KGhNowRXp&2I4xu1A@$1%t%5*C90f#ySQSkRCY7YfiG zb_rBIP~YN!b^o$f({5TeJ4LZFcPs7iz45qV?J?*plfH7OF4Bpv*L>I2hF#Zv)RCFZ zm=I)!IRgj#Lz}zmKi;1vSR2V!XoExQ7q6QjEj`>IFM;MbRa8&=cD|Zit_y&T8&ivw zo#nD5(%~`c;V@)lGKrLC5shTidBfb)dwNHBl01M#vp3}i&us&gS3atN;iART$BaE~ z}#+R*Gs*V%jLIz5*nZR5Q%EYBo7-Zu|jNRvhHpMwA58-Up2q z9ZJy3AjfAfv~_&!MWTdqt0}a7C(e;f*>G5h*n6`LG7_3k@+mWti~~;UM0iHd#G5 z1l^E`K(S--8w3+{q+0o)hur5|Tc#oZM)G~R+VmaCBn2o!oCQ5$krSV!kq&e3Wy0l4 zAhpN;v`p`_Xu-Pb#NwsA^(w%TV|tK^7AoM0c77e*M`bi1KSi*iUY zxM}|BP5Da%^;LS_6JhwOq45J~6*7*-&^g^wo=#=0*ai8cLlt*EF6tmZUokD_zGM9! z2`Z?xLJuYGWW-tloM9p83Tq*`bY4jG6snRbBGyE$49Us!8?NR!YhpK$4CGZe@a^gV z0(}DpKcQ}OBC!R@Ey4U*Rx5l&j=z_Mv@$idcKux54!v`o6P74mBStR$jPlU41%*@@ z#1ZzqFxm1Bwn(U?2q0y`@;GJvw&tWUwA$Cs^JEoQTHm*m%^x7lPMm{~2a(Ws8>}x{ z)ru2;j3)In_7Ck|Fy!8Y{RBsMc?2Q=95+Jvm$+I0(IMoXyg`8xG7i8{KGM6MDb%pE zMTvDLSA_h7uVy^|Gf^-4%>~>h7NijvfGb&S^@f4E>lq=FJ;NY^&f(@MqphkBMC{S% z)s!>=^JNyX9Ad&ts`5&?W(>>uD!hez4CTjKU2JhV-ACx%7Yq*Oi966nx2UpxEAc1g zw<4g~nkpFJQpsYkj+~eD;x$n+!qbBI-Leb}nd2yKM?tx+;Le-5c~jy=Vy@q!l2m8P zSBpOv2VB}siP0L8V3*wu*SSG*D6oy~Uxc0j=J|5!s9h2D&|A(}xv+~7kl;;~e|d4= z9jDRZ3{R|PFH1pvY%U!yMrLR0e2AK?5A4u6a4BP1(?9_gp+GT3Bw+Hk-ki`O2&Mzc z+x83i%0stz=bzWk5!D-oHunT4T-XwXD?TIt)ja#ZoTDcK8Wwhzt+9t27LZ~IP}|q|yI8l>{@~WG zWpCo`r5vzP+zaN%2@N^K|J=E?Gjq2mqRvcb%7SOMwbTNmueS|DeQhPH!6ETlcG!0R7JlBFDDG2C=Qojxq0td8x_1|FE?;(UI{ z9PJsGB>=fc6E4D)+}yLV4Ps|7tAWZ65LvTxbjoX`e%M|V^M*W=0*v=jp?25?SEk9k zI9S>q)y}QR>cXRvK>zASY$jsl5KA-KCx8{I%q=6?Zk$s%p)1y&7PKg@c5u5<=iGMr zaZ=3LCr5$fej@51!Dfz-Y0G-v)DjNcooa+r_o1S@B(-k7ilG~HvysBld!f*f9%~xJ z?h$lx&@6@%^ZqOj>9ub>7wAce<}*|cD@4!WUri?9sme+5 z6dHJmd%GO#E=97Ca>^C-J%HU37QW?yStEn@uo`Y`3A_z`kPMj0hx4anMU_D<`?OBg zn|OPbamFb^Bow63RPk&U90SmDJknT#TLaDdpULLI0}Z(jT@2ZQx}HyJF!kuA=86V*7lfo1!cyAr_tedW{P)A5!j z^NsVg5kVkdtiCqC-hN6(shdnq2%oSuuCvPhSDK-1gzwas|;;x z1WV}(kslJj&=1CG-3)!#K;G|Qdz~deQuu)2*OeP(aL?$B`c*nd5Ns%dG*B(&^vvGx z|E=t@f7;_{#n5CkRu9|xXZ35mZfF5eW2*DuO3xQPQhm+&L)T8Uyw!e4fNp$$Xtn{Ln`K1Y4@ zAxpo>aKb#68H@&>*7k8X84q75yOFut%mjiY2SsJJ$aA%jm+1`=9U7eWlw1E0P7j0t zlRj32SCCGOIJBBMIN`_cbN`cVm%MO+&cD%% zk_c-nzz-u#NLhcxW3%{_(*SuuoPDc9kwyPblI~)zYQi?j{q2`3y%7S;zV1w-g0Kf+ zyPgs0tAJztu033}zs&T6M@6MtGyFOBflnlZW1 z^~@-a5r7B8fwXiG*BtOWE*lujEY0|&caIe~fx(~mLQ3<*=a6WWv-YEY{`5~bc0i+d zYZbU9mQwi!eY(2^J=IZNidrHH$>H8C@?ee!t^f^QqRsbbQbAo?PwOmjkxCSAj8y zK^oxc(^#z%SkX&X?0)L|i-mSu29S%~02e+z@4Ht+FV9gfCNpE3J>snRYXNLwrq1-=%S( z0ojVD$Q}KZ1dBTfG^|q$LKVKxVjIf|^AGxbmU@B?@v^I5h+mBtRhCa3zpy}orJDfz z)EnEVg`#O$G@J;?EF4JPt-@b*6ipqNRa6{8W}*k-GbDy;^chib@X4|S$Iy*L$DAIMM%?1AZ`FB&tTv#HOU}Y7L?ic83)F4Hd69-O=*oO=ntrCL@tN!8AJ(x3^__iS z=(jyb1TH><(m}&FAs>@sGoVi)1;A zly3+7O6jzr-eyeAt$orJ46!EP;=;ibD8y}16Gr(D-&ifK?AAfLJ7+(U!mpfUQSlm6 z8v9tj8H#qk?!BA2=t_6!a!!m{<2aKS7p!@bw7y;b_dPfssngBS%0DdN~)N??mnHYEtq&3wKg4`nef4rOd z@SGi4@VG^b+72bt1ZEvkDE|#%%}np95%A_hPAmjxw}+3<5J^d0U>gfgOOX-fA&Lg~ zO}Tu=5>b-|krrRIxq*pd%ZXrUFPE6=CR@e{wDVR+vrxO(d`uyJUg#Y*VlB0xF;cvQ zs6L~wIz^=$Fi+_3syS{f>vfPydHHJy&DKoLBZB9hOj^=f{8LaKxkSX1KT%vwnsO0H`S=FZXV)j1o!iL=ia9b!G ziJ)N=cEvkV>C74e8jKA1-LaY_v+(NlN8fF+1290U%6Ld5?PYE20wl;v3uT!_zqnqQ zuZC~zw$nyP-m`tc?!Kb##1mQl8^bZrqkWsVN|Q~3&(yOUuS34|*g}Wmq?Oa+gnpwPVeW`o@^ir%K<7O+MT^;(=4dPQvHIrVoEOFND4_%;2Ac7q7?7KF; zoO)QyO^JFR#wNJ9Tu;M!xwD#@$4g!2M8cB5H@IA=YVpi zcIeGze%zd)^I@8sB&@-MCwds3wzS=ocemPND4-)KX0~pr$!^b$eX{?;&6Op848#f1 z(6mVszuoVN3_!MDz|$3dtuY@u=*TeX>^%jg(?yxrDIO{0`QuostoswLFfy{tr!~$S zS!tNGUU7noOz1lu)T_HuUT3+@N+#femh!RU%4n_U5Gl!@G*1s>UZogX2!rZ@@hgP~`vSe$iwbD6R__I%{bJ#kH z2^B#nrpifa|GDjHFIRjI+^E^!rIhy07BuUgjpF%4uIC}JU}Cxm#`dG1xS+4Ct^VL+ zc}K%YKv126H$*hp88az29r)%n9?;=cb~JV(jvScA#qXFZllOgz({a>3W-PlU@LU3z zq#LJIJ&O(F+-zDZSG00c$R7lGf)rmU>Y%!8Mnt>OZU7Yv#u}76_n@DaIDgGn6*Kx= zH&jS2`u7?ez`)usFbIGM$@IY|Y*>g4XQQCi}EWnDxk3(0&O)$^|yM8FV{o;{7}x=@6-|f78gXQ zr1c`>g_c`Txaro)Is%toCTAw$GM9n_X{fS4F_c zZn)VU<0+d&5)s&f37gRM4qAk^+*bqX1}^Wq+D*k@HAfn~tuyv4f9`s7APW;`h_Wpm z#{&M25E{DvWVW&4bnur_`QOnfZAIjcapnK4#t72@hbW=5i_DDKRXi^%{bQ#_63i$# z@QO;#$rWRM_~@+9qo123gJ(=pMu{<&hpkouKqRb-PqdF?D4Z%^abp{N30m5a8bRH7 z&5D!i5bN7erIPJXI*{Xi1`+W>2!7L?%fHy3k`?Y&Y3#7)VU`? z!v;`IaC`$Ge~R3|qi&cLctsDQ!M_nw(R_B?i}hklu00~eBhYUBLhpv6)O-=e zToP}7Q%LU3IdU;yHc3#<(#6|;RS!iWS1-0u9p_{;4 zjalN){HMMt>qE}f$inZmbbyIcTd!X@m)jcwSXuf!hQ-pMD$zqoUPMmVAtXAd(W^i4 zhKXfgHo~1sYtlXd*qT{0N|SQ)f8$T2MfH}qCdT`_5m z#5>&G0SKzZYC_36Xmn;6xC0H+U0mheM?~5jw0&cy7dM`vti1i@9;%;#D6MAkBK3 zv)>E`$r7$8iAa>cI)TU{uo&dhr-!W4QG7-w4tKq;GRM$F@FFG6U}&okL{KySw^B6` zm*u@GFyPXmV;5;K+np-Zf!F>tMG&d`|M_WdBBbeY1~7t`vYmpaf7s>B^(`u;-omHk z)uY@jf9!sYq_e>J?K(Cn)95?EEx2+)Vx3rlMs1}JiOPUzmYFho$uDoivjAeQFQ$$Z z_~F%kp;jmV-(id;na_?aTHqqnt7*)p20h=x_QpTD{1}z*v3VbeLUpXR1vZfu%jqq z5z!(v+Da820%ouMHpHX2ykamZ)UqX1-p$SoG~}sr>&cT(m@B32eJ)uw&C)qmFa@lO z)1>IB;Qy#<(VdDgQ8U%jd(E_Y(Nk@Z?up@faPj}O#5s3;_7uS&;*4_Uz%K#r< z{0u12u?VP+yimw|*RrbYs7jN|dIhB@hc6LqtFxwc)jMB})f(xN6)ExF`A zOR$Yi2XhqT2O!eI#%ryRg#-Y&OCtj}SH5aq)??qf6*NN=i~7ZMP|st6-SH5_V{``U zAB&Dyj!S*kYf|CMEVXb=QKO}}5g-xot)9JT-CbCux>g4vQBb|;#zFO_s^VzITcI1P zr{&nz{uE$?3hdCk-m^;_?v&woN=+$=>*Pddx8oUilA~fCM z$<1ktiDGv2mAJ7}X;d<^Fd;KD|H9>)*G!bW4AAJ&#<2I|4YG-W(GV>uWAM)KqyQi@ z1R$B(>ozgEHyn%kJ0-Y@Ob?XUgapGec@a7#?Kkq^M@o?^+b3(lvsRDg$4rlMCH;{h-r>&Rl4PcP1)qE8C-yKM%Y4fV1Z{qM6c2tRZ+w{!tU zkR$?*xAiSVd4;vU(eM#*4IzF*EO@J`^);@k+58$*!TLtc*84|##ESERx2 zSX85?rmIAr&lJhih>kNO^%#bDn|~RLrz>IKqqF)}FB9B!1&nu=e&vWT^bP%Gf)>lK zry$v3(^F3t4YOd_`Ux?j?+1<_c#X^9LU4M7;jfn|ptS(F)vxH4pkKQ*e=JkD^71F9 zn@AO#F#9uOj(biSmB@Mmt`y5#e)1?Bu9ZQgERBgAPezPk^S1s0Gs{H@?*cWrl`N#u zE1xYxl$4p(*3*!M$j6;w9b3eI`{4EoVF%EqLb53dPkYXCy37RHHSJQ&#L#en! z>*3&{{jf2nJV%41G;gPRlaGpX_SgU1)BJ#NF(Hh2N;mjlJ< zE{y`U@AkPQD6%{+z-m^TH0a@ugg|Gp@^YFv+@)lwT!21#46G3L#?8|New8d|T31}d zz;XSf%MmfUPWlGw_OIk&5NdyACJyR!^lL~@$};`q(L0F5z?wljY^zkH4cfDZlS%g1 zFTxH_H!ak34s%4n%tAlC_PnZdVsFA)W)#H?C_RfS5KS-TC&V z_J4Bid}hZjNr?Ke3ZG1-v@TkgyC7(|UjO$iuQM`Z41%)WF>)AXt(-H3d#4W6(pp1Tmv>ypr(yv7@O4 z_cgXYj=+<>3j`Trt&AD`%~a+~rt+#ByJ0Jl6kj#|3?xa(h=6j)VY6>Ss^s4NCnW{Q zm(oNyw>>F-dVvXg+i8e!{HJ&iNN%SOghqB?0foajA~o+fG;~av55SnEIX=-{Z$>dIgfQud-%ZGWeLT zb;pqmp<~I>p}*`KKRG?pIU1vG6~}B-%V^9w%&SnyuTFI$bHQRZxZ|DC3lsadu zzZO!JIm-1rd}8Y(nc(_{t-r8sP3yN7l`oc&#c|VzacC`Dr~zpqA}B7O zZjt}LX5%75&@Sj@60d57LI^Co_-hgB+{2dzi%cTXCWC+ISgmB8xbZB|&`}^CIV#d3 zTiNl!EU9jsv)xj|gsD98hkUUFwBlx5Sy9TvEqmh7-P;Ta57h*O`u^A-NlHtVa3Ckn zKI+-_AZ(LplK9?q?>8!D+V{oA3~9V?hWL$(^6t+-ItO%YpxVkC2j;)`n4(w^vc5b2 z$<~6+-maeNQMc)UBdRcHcXi$y5IwvKz7`v&3Q>F_gH>aQ` zom-(j?*Xf>9?L?@k6rc13Xr^0bwNy*^O&++_u|Q%n!EFEmZS8^RQtzY*HSEKL8pc3 zV&l&eK2{W+QXp}(`3d{D+AXj9#LHzIzJUkH^HyR{vgaZ?Q?rF896E+(P-s;4;Og@|8mGf}(kz@3@k`B4?oak^B7gHxzAJszZf|Gz}q?5xdOoY#QEED=Y>*Ol4 zGK~Gj^=r!C6k4#Dw^_+NmiZc6N;o%M$BGz*_2-0uYs4LR&@7$)(qOcdK-hdG?uWm6 z!xOWIOmSVs@Oi!MGf#l<@M_-oQsHq z^ODG@5tc`Fd!!0M)<8wQrQVLt?|&w)29FceH6D|dp7hAi0{QlT6d}prx(f}07VNyb z#?Kj6TWwTVmKqy6ZkPLjDhtw0BQEzm*N`)NTywQpcwi09vz1~nlPqPa%-0VsX-cAvvto(4pcvx0eHG61S3zjEW_?+ zL!}iQJ7CXaWxruKcYjby8hwPnH5r1ayfXn8P)~zBUT%^xVGJ2FFg=?EA@?Sfa;70! zzGZegT&OwEv`z@bH4*FauL1RK5eL|jCNHNXC`v9w(M*kaYGVqNxHsaOBjCMNlzAN=-PH^&RM45GC$=Bl4Fe&^ufKflCoJh zcSY;SBWLF)GI%o!qFXgcYxK2rfZxcsN-`#Ipk- zl_z^`E>d!ey+aik2BV*sOx0W9U&nS?-YR28{v8p;L=pjzXC(l^2~+cMYhZs_(*d@g z`m48m8{O_;+QEjzaX0U@pyHV7P|gHh<7Ac5quA@JfN|6!|jFUhn7C460|#F=6Pn*OwE1lSPY#zF#x z1N}JKM2pwVC!*@9QDGY8YKnYvN%<=w+^UI^Zl+VvFas{=pQ-P|p6+b2rDU38FPJ-G zMGw75?^_be_(yC z#;}8YOaB$9cZv{+1l?hfa+c=krYg4mBZZlqTV+_O?(&#ru@a=oAaXxwW!<2~Eetp3XMOU5)H*!1Kv*6p zqv)?7x~iZq74f(*OO~fX&Agkxp@aYKy56mb*<4Q26&Z>Lt|*smjZjMP0gDZR90>unMkyae`F(NiN=V%ZqicP!d~acGN_wM5NjiUwnFV{; zg&Pw|14r#88~29;X3QvtgezZ{TR>hi48k?>r9j!3hg#xOrpA1TDW>RruHgLB?)ppJ z_t^lCtaLs2ARGxcl!z9A`uuw(tKNTC?B+Uk5Q_lR?h{3oz+I$^UMryjSZPC}EU|M< zu6@2EW+(3-Cw?cD0>_fGmddv>)pdre%n8wZCTWaBym9mJlb>(VpiK&$Rf}%bLAnP~ z%CV5A@-SeB#7Cn;k}@oFXt5rs1(aBfMBLkM|xY@|;^Rbt4u~cSm3i%Kn7dh%> zJIqAGW6b?@#Svng%tJ>s&LSyfhn=ZJxuI;xpN!heo+k_RO@BQ{P$*LR<81}b^zETz z^)oH#NNshH3kFJa!@T@R+y8Abue69A_K;Ss*Gs*TYxNQpE83af*W(sd^rz+!1+CvQu9_TduA0@oCOxWB-SUZW#rWM?OZ$kHC74Ct@TI4 ze=w;HgbgfXqocC^)WU@WHf1A2m`@&&74^vDQh~U0+gn6iSAZR%%`AvIb9#zSN?`!s z^H{BAiWNxl{JY7MXX1(*{ICBM41}Y<8}!V`H=^;IJhH3)qtOuAWHAC4KkGo(%^zMZ z?#05i1J{2M z)co0AK>)IYulUsgLzuy$o7*s&#K8>%Bhva!Bu3l26K4`C=gt;+ANZtK}z9Boe&S)pwL$1$B(zGVzMMDmyrLP%WoR#v0Wv8Ky9$Dk{#u{lni<{EW@ofm~q9~|m zDtmKv8IJLu%ug`PDsr~AEZUUSl7x^|9t9oZiY z7qsg17!=mk)jBY2iMjcIm+tK8(imIYlK~?A)6Ys~_;Kk@^EsT(a+3AGPe~iE2expn znCT#rJXb?W+q=T?b?+%sN4!`M7UQ0_a#q!^leBp{qFcY_Rb@BH)Q`L!??8(`M7^+) zA1$6sCJ4(aB=N8sQ3@?URxBfo10#Bf`!xw~&4rtk?@_XPsxS!SA_kqG*(6VIAp5=} zgq~nZvS#(sgelIzln^+o>e4*M6h+a7r z3m^m|rEauK!k|f^gDe&=DD_R0jh5)(K~5(<(E@3xB?h<^QktjOFusiVgDnK|1;Z&L zJ#(IN#Yoaf?a#+5#>D7^7T4}B@d|*(O;D8?gs~(+S_%2AQyuYdBl>T^oGkT4R^uBq zFi=rj*o6PV;IVH!%zdQmj8`NOFACQMYF1{D$kBFRUPp~26;Gj__7Un_zgpaf`!}Oc z10A|kU;$3!LMrU=YXKt>__2GUU6|k4sU;R&x%sTjImz?(JL51SD9@uf%7SWJLv#@j#Cx2sJ z=hz>5YHr&8>>cXj;zTfbg~Akbm?M;FjQP{G-6Y>>-a)`F9Rn$_-o+QddJ(KG@(3$C zN)VBAA`>c-Vk`CS-yuwaRs2biiWF><(ZjslNCkxS+@wdb4Nu-)O*@lFh<$_XGB+!y3gn3KH zAX!xdvp~L=LkRiTW^N!9OYALGpeHy}`D&aourijINAfNyN3^;3ug;`CC##$}N+;9E5r{xOZQ;k|L?- zeci(R*>KeA_*c3;4(&|hu0(+=M?hP>nz{lQkVZv{mzpjU&!_4kjk)E|yQcKv^nVGG z_^Z?kcRIZ7+Fi16<3ZI-l_P6kcI{7grT4;GLm!;&PwxV6$=?Ry_|nyBtXYCX%lbu; zeWFYDdb-;dOLHlXosakk;%ARyr2f=emX%cl-G1A@*9@|5RP_guS3zv-D~6+0wpaMX zbc`l^VXU50lV6xHN#)mj7(~!X&N^t!u0s_^&bTW!Em=~9{FILNy#gMyN9IKX4Z=~? zUB_L}djr3{d;Y~5)(=4cIf~w8s~(#ubOuUmjI8=EwG?l-|0KGJcS*zlCFE6(e|=Q7 zD)klIz-5pdvg8^Spha6}JF93F>4f|*hLFC*t5vf#!5pVB!E`{`+n)8{WqhX$fWH}EFM52A7Lc< zv5KD9N&v9PeEb=g?jXynO&&Y`#}c` z$d^3T@rJlKR!jbO;!qr30@N+|-p5&kjM%42K$$7=E}#|GAE$rD=6e2;E$`f$ioj!k zba<2F02js^H66LRX?ONz+By5RO=xK7$FgnZ(SQJ81eNG%Y?fo&)K%Z{kr00m^-wM1 zfQ+-cl^uGIo>i@@MK0iY8~smX0BBlhk$rklkF)v9GNyMBY0xuAUDaR-?VxB0kMjAH zFnHn!D(m7oqad~mk!-RAm%dI?Yjb^tdB$*=4gSS$v{A**Qih&4`a*I!$YVw|VIp4t z215RV(F~kU4Y#%$*plM_{vFxcnUz%EO1qKT2CMtP6!tHCvM%OjT<4hD-+(7@>R+wwhrl*{sm8E%v5J{m z4eO`Jw0w&7drY-|t`fX$f3O(@Gg+$sCWLk?iUywEE+h1M7;U@PA00dpieBD#vIdnP zodH!|XiFVuA9k!}z||b9P2xS{k86GfilO`lvM8NztC2U2gEgs?rtd#u9OmWubGm8G zSoA)N>3-rKNPCdwMq9b!>PT7-5>AuhL#g}Yf!-Q--fPjVxwQI((1eBUg6-NnN$VgG zlx#5=wEvT@1vaQh=_jEw4)_Bp%ByLEjU}$^I2U`HOGG=*4c)r@^tbE^@aJwS5XZRw zzpOx_vl|{mJgju_n|ABd){bYG#g4#>*2+~vxflYT-!p9XbKPuoNWpA;f3*{6;f7q< z@Qkw=pjZU?G>9(Gub#D>=0pJ1vN)c&dm|}}B--~~@Wj6rbJr9(lyZtG_RajR{q)0SOWs*U4i0+5PP=ImPI9Um?_W zo8?kgKB%DUA@{(s*_y17aQL2RUr4WU%zT!I7W)sBF&df2%;Je{qQcLh)4I*kZd9*( zv%Y&itsM{Yo1yt0l6ky|yRn?D;Jj&0GKT*+*l4_o z#HZ_quVEa69M1ZyuK1(b=WWzApw%d7Hm`W8NUfK?;cj+8)70UZ>Qu3GNWA+K~PCA@b+evK^n5S=xU(NaEUlY)@z z(peD=OrGZcC$7B~7xzww+ZCb6U**q+k7Acn0S^>k4qoEahJ`ydypk-hGl(K?Ku&Wo z#^3@}si5$Z0DrHm@`~eqVe@zbx&eP_#B}zQ^hzcM+0?a)*MTdQe()Zfv)cksp^mXIp|K z9?5K@rm8TtkL#2IXC=C78y)umeP_qEL`FnGb7HZIZU>g`C21?;91Td$!DMPzACCq2 z0B5f5{yDI1rf$H-(cQ;BFBKjw?yW?WO@F%~&Fl4`Yz1d490j~r{#A7Cw4b#ZUI3Oz zSwe<5$?Bm`8yT~_&>6nZr*gy~^_H(o2xL_8?wW} zmB5%#UM8jQC_9CrfF+JI5yEUoxMuhbn?j64#kWBfs@m_GmCeX)f&WeE|Rag2o;<4E>|ZHhsI zoLg+5jikboPI8^O1cH$)QO`Xw&hC)z7Spv&mMHTK%7^8fo0fESGK%g8W=X$mOn50} zf_J`$fw^ny4k+RDu^EiMS2!fYl3eY%lE!gQ{9GIy@m=i+;YfcBp`dUmVPCj~&t`2+ zdrNCKUmeGn4vEJ6@t5upKo&pbVKudCw8;CzkLrEs;^3T3mcGQlsex^CLJ22?Paf=% zSvx@EYm|LLk!Yb$r<2Z{{wc%_APKr?E`aC)y-1g4I`$Z2d7tIiM`DspFdLx@(awTan=8XFeEH@g>}w$< zNvx4jGLdC}uc{S#RJTvPY!4u;Ocmpc8?hh2IXrsV}SQ$iplPbCg4r2*j2X{~ZW6u=bIi)VPFk-JCFmrbRi{kpaNv&K?64em$y2 z=wIKJ)oDA&?mS*M@{~L=sx|zVv>Pr*=Qyj*L}-t~g$K%I#{IQeCzy8^T8=sr7fkPK zz=!@$@&Ew0_u`Hoag$r;#fw ziy|^WM>gc2b76c@@!JZPMnYxCX6)LZauget`uG~EV<$EmBbO^41+YUtpRm;^K$Nt$Tk8*5n8h{yYq55z z68dUXUrsZ@|Ch;kY0|IfV8*p@Fs5MxRX}aAqHB5-2b~)}u)rtbdWk0+zxW?iY++UQ zQg|pH2Cr(Ok0YEGO)z%B_t|apW5bTS!vEXbS$CsncLWrL5wEqgz%;fBcISOC{RPO9 zS^QR*StQd#;kN9WJLpiBK_oZPS^Yp|hf_$}X~O%-!d=`PiSpW6+@RID{sPWL7Jw`d z1*=dFU(8&7W46Ci4firf=bNZD{@xrwv72%X6wodP($w^0g%V9G{D!$xYvbU|!?+hf z0Xq!5LO4VlFiUe}^}I%CpL6oZM5qCIoldTuv6rW$jfy#HSWr=yNqkyc6PY^28SzChq;FJFx=L!IDts~m)lwTSjMRA0HI<&TVtdD)e(!4E9%L7?G$k^C zTYB^T`NTxH;S=U=CIHDmrl&ckV4?W)j@7;3j_P}-ymflLr~NW?6lGJkq+LclejnfE znp-{p05)K>bT2!OSAQeOAP|ayIhoI0m_~(J^CWXUF>?RTf4ohBx8K38DV1tZeRqZ} zT!V6%WsHY}X=s~Diq^y>_|~EQ=)Dw-CqF#|8!8w=4ltW=z z`{LD1t@LmMP^DO(tF=CF?LgIQ#%Uct&0QzkIXrVN*o12QBhhkeWyZ0rk zc2;qY^kO{b7+WVlJ;Yo(rm*^Nq`906l4r!H{j>bmqBy#dV;ll!Y#bwhRCeFCMD~JjTEh#Q^26H&Co3q7bVmWq0 zQQky``kP^2DmkHsOx(Ka?|K$-`MJ9$^p(LN=f^Ko$;d)|VE0SxfXD+*(Oz-&3NPlt z#prTHyA3-9kXB#qD_af)je=Vdl~u#&B>z}T!jV@Ci4~{GwZMLf)y&d}5q=?FHLa#@ zCRO)ySD8#~z%1}`EAB|ed#r@pl`c|;&k5f&iXA6wKq#$>a1(4?c0oHWY95)f285WC z2B}C07zZoaNo*>dqpDS>oF8znc}b6ZI8@;dvPreUSsc6f63TueLb*K8aC3vtO=ah= zgzutEY;U_Ms_cF#TtZxEJm>h0cIQOqEWE29Gr$>y!fr2$&Me;XRz0~HHC0$fF04=Y(>)ErH6)#s^f*kKo zy2#-uaLdra^X~Rn*z4Yt8!oi(WZ4^?P8gjG3{^f8ZBG{(cTvzjX#eUBDv1>vh~~s@ z3=~iUtAqxZ4u#9rTlzKV(u@pD0Hb)Quop>if@j1=s0P)(*|@O4H^j^A22sLeaFTn# zFzEC-tnP{B&>d6nDfX~CdYtLh+|3VWG>f@RA67Rdtj;}UD+A;2G~WfuXIsge%co_j zlBcOxkO`+yOD8G`@tZ$vh9JlG=I3XAXvA3{X4RXq87)U_WTAhpDR2znFO&Dd>DtrW zZQzk+Ll^GYxnGWi%Xvo! zq+fgj#BCW9PAGTBa#YUnx!LqZm$1lN2OVLCyVH9(@Lw9ZTfj{fVHBo8p(AGdWJy>c zO>k%sxdr)C z)RPz?aGn-n7beVe2n8<3a$4%y-bgl8d&b(Up$fk9DOL?ebt{_V6JV?;s|HeVp_TWa z?IxJkxYR$Sc?-G%Q5W?>E?<=NNze6I5Y6rhc;L6>N4_A1ry?Mu=tOUJ1jss$?ZYL@ zn~y8vhY@QV6e*OOMSh&6D96TZF~zt>?2Zu;$`QAsAxAe4A@=>xMi$O(31X_)br2^V zn=fC|>8O=ANRGD)gLV({bG*M#Kyg>vJLV+Y@TajSn3&^<+kyP05?q)WHzYaAuSRlt z&naSVsVeXNp`^6=4kxpL!55jL(KDY8aE49|SV{R`@ksa(SnNRAo~raLD|_Il7ME$B zwe2WysI4Pn5T_8`g)J+0rzs((c*@2?gte;VQe=rE4}Ej3>0kl({AspVb|3N&pKvLBlwti7Y3 z)n(n)Mf5~k*6-TZ>~uVHVvv^$o@^Co*B>D0o=bbapfQn-aGiEfOQkRZmWC1KJ?emi>661I#7%6^{YW6cp?sV27GQ z5~&hsuSrO#rIgG7gr`$#rJ~fK9J=P$GW7=1az9MQpoDBqkyTt8=_Fr^qqwkR`FQZK zpFUnwWDMTeHSPv7;Izf%MsRyEj4)2)DZk7yF_Xg+7T~lSg4xX?huF8#ES;`Dfzco* zhy7rEw%b%3=e$w^ID&;S_Bq_e37)E%nur5N~t1O(ts^#*2<1sl4Ux)3@Y6%h_PfiNZ48$Cw{&+GZ0m@ZiMHnjn3NX z(H~!C&-Z(0t48Pg6PEsILf$-3heBD?u}Tb9kwj6A_qXWQ|G52=}j@^*b4G36Iy>a*SY! z`1?KWlTBZv_D+WI7v&&5Y8a>}S7x)^=ajD+x~l4@f3e5xUwS07lXm3Z;&@=7`bE5w zTLB1Xn=d8AL+3I$qoeOVK7lKNryN6&r|CqF?)fkcQI#|$m%fu}+>FKd>rd+a z^$}ORJj~RWix^%RhB~{O{IWSzWn3z}I0u8U)R^ycL)xoPtDRZ)M5aQ?|- zWTSPP1dRAbq>w>M^zU2nmpfm9j5-WGjp9QAr3^-H-r$l+Ujr9l*55}AM)kwt&fDaj zYvL4kp(O^Jo5svVXA6|9wNhy^(ad}&DkALHnMy7YJZEjvI(8!uzITlTyZf}phIcnv zC$Vdhw(nwq+)ynOfgTGZfD8{Q>#d9{&gyx|pv=C5NUU zvpH0R;&m6lo~|!rim+UDv|#=BK0sj*_kSOvPKKz~cLKV!M$PK3V?;=oTHk9TXgF$W zDYlfz+cFUg0j^h0hN%V@f26WSXG&Kqo^gaGMHVLqI0G(rXJhy?*Md%5CmarmoH=sg zWvP`%m4I(c`V)XBDB}uBD^NN)VN(kLx3SLx#dL~>Q2@zU_{tL%r}6|PL%TnrBlO%P zRwbYPYP2&WjyVLfTcj_sonzcB#+JOydKdSX{ab@r5r*8+8qtoMU<$OF?QB=kqP(kn zH)K9rXDBJ%h-8o)=N%h@Sc#lp?$(!$6M~^F9}Zi$>oQj0*g-e{2>8v_WBc0dyw(4- zzc8H&t&|fcN1g3yji`paw@8xCmbgIgdj>B%RQj*<=#NTr9wb&?qjy&02Is8osPSwe3hW9@+9SlHMZ4L8kBfa$4DSG>T`9KXDJjEb%eywcuC6{( zBT!~~(<$7&*2hHd5AjcP{f#1Wh&(%h;iz0S6~EIDh*%&@%)kjLp~OTxQ*L?HR~ur$ zYY7lz&jIEt44e(^`5{&zLn*n7?-@gXD1pHug-)%0!b!@%_m^3>k>-fG}oH=z5?KCR}Kry+eF81a!DJ_0UL^pv6D8&d%E7^AJ| z-r#GZ?^~2(VF=SthZD=UfvY7$s#IAyG?gx6d2pFEBnxZOlJCr0p%g1rFRbvKG>S1+ z+#X>>rRBD3wS5L_0PO2DD>qs=X~?(SKGa?VZkKz!jQI5E>ul3-@}9p`*7KZU(V5Yq zxa_n2B~~cYeO}2P05&-bi+XkD$Yku6E@LXaW$ofrI%wF$*af@Cz!>67NQC?Or&~b+ zqR~VkQ5NK=V0gymwG>tiDBR+Hw75|cSQ}mdE_gnPY_cIl)MGb|``hg%hdkbTNgO~z zt}OG`y$@BEUvh-=%I+!j07$*i|Q>u@(Q*L2;7&<&#=fAkiv z1BOb+-Goaf+dw3ynrqyr1O%`V2uQ$eL*lo>m3hLjP!597NE`|E2Ts8wYVjnbH>DaSV`LC=bY7b1a}9jWPM-=Iil@(sYQi~BO7``xkswhUIvZxu z2P1$z)g3St#5*Jgn|~m|Z4$h12mprzr}~Fs*H&`+kE$n+pcc6~coe4r#bw*jyl1T7 z^GvNM$1d$wyi0tI&A#&_h$D7)?%QLXFt6X=~>z5a&5`&PNlZNbU5mh>;H*6byy(KtZA^ zQf0aflMK6?R$zgX3eBH7s{5smfRljl6s{2%~4W;Y0BXK_c(Cm_<%Auy^X?j&%zS2ZQgYfRCyrd}(bYTEKd zanyY*pSA6NiPr*@(<*8woVIOi`#;o7W|T4x&&l@-C1uFk}+GcGqw?MM^jjP z2+?~P`xmZ4mVq^)oz*&RQ-~@R^ji6ZLtV#G5KM<9WP_q;mh&b*`MiWWAJ3()R+@p~ zJgd(|BjH_KduO$I8gkxsIpL>E>J=jZ#d%03;g*y`h=);aujTwAkC+c4h<9N<);*b@ zT^;)YN@zFY!r=BPRtvg%OzYWFk@94Rq%aMwmmJlPl_2Lm(0JXmg{oJ6tfO7k_wfj= zy$ax){^>BAHkO8iyVVPu!0LDPf`=Te=Exv4srkx^YT&jboA+NNMtsd#F0LZr0p$BP zB9{c#9e#3xvQMt2fX(Dkzs}g9q+GN_`=Eg_Jq=wpzed}CO6)lKTv2Q-A;MXYfasDt zWDjMDBgGDn`=RLZC$A?=9D+&*^*q{0*f9(e>r%j>t^_< zO`cDgX_>Zt(G~;rznO4=O79!4&5@FSUY~t4gQqA?YAI}lJcK6v3>xU7Y|KIDE2pqS z1zB%ee#^E@Q>?wT`$R~4##^_`y}P#d8VI8FOEF?`7qzjrFNQVQJi1344EA`*$-m!| z0c)YCJ#|^QqHeYU!rAg7pDkXwEq;KqZBRd5R+;r5RPzHxM}Ca z{OyF`FxU;mL1eG;W_rYH95v)vGsw_{M@h8u2ENwY$ZWP63h{)a$_J8RWylP^6K}S4 zz7)5acH1r{q)e%xa)w)W?Y%vRyGY5tvVB2Vk*DhAX+dy!75Uf)mY1AS7|ASDs&=-K z7>lyGAiX@lX)W{Yvb0tRL%5JmHMc=|98^L)qvI256SREQxkEx9j}|Ibf45`~!+M7Rw>ce~*rRHCWY zyli@}+X#(K8cv;JM{05dXnWLb881~Kx!m(tGU2GA$TJ$^d7I%WGGin&-~_5G-B&_M z+m+W=W$Dp`AEs^P<0CzAKpriOjP`>O#<=)w&!HN3EUTXIXMFYy9G?R(`19BU7m{P? zFCrmk$;`5mf~_B%i})ftXeS4#z~6-Q?nPb^yfazmJAgd!6PsnI4#B6qQfbvRtxpbb zTYJz}by8oC-RiJbwr>Df@lliz@J1=B?pU?%Xs9=mIpM<=bgVWrTFD|(LI#@hGCNx} zA0tduY|0v&a0{CO;L+FXU!}#JC=4G!MQ|h6J`#88SO^(gttW0TO#)@ZX(n_wu3DLU z!c@ymo^Rbdi7@cBih4cKtpT3xEZZyw`MRFg&U@k_IgrV%_u?b?m<2MoGaUA+5^IdX zh6uj0p#Bdnj|cx^P>X@Luf6tKx?&VOL&loP%IZK*FYNf!ZgFgYE`Z{OmxdQ`SOr{y zV1N?R*qaewUu_3D4P*A+w+vLl__p<*PwnAZPrDzGSxlh%uG~EE+Z6v%`#oG}=_8nq zFro7NVWkR%@)Sv*mzSK-3L*hYh`XVvCMQQ~-?K#Vvfh1jaG#rIu5&8KVW$+KS%h@L)ZUM;m%=M?x?7sA`cWBr2Il}>c{#%NwWpm zunI$w#WzDUh8R2rFqj5`e}i6h8PEev`GB||j@BZa0`_R&+!x%zhh}d)*7gka_(Y3q z>Fu39^K1+unMVXp-@E!o%?*A1YX~TlrO#-Rsuoz@gwB&3|0CssszBo>>pPl%<8r@i z+I7HsujSTS2~&P5alS(%)eXs3P>Nd?*L)y7Nr{2+A!!nhM4X&_nbQfJZ*{;7{m3`Y zFW7b`Z*ZaJvEV@YnK3D9ab90Z!|01MpmmPQsrezq=bpvDMQFB&2;m*{h`Fg&Cr4x( zOc`x-(LA>^a;%*DG0p~URn+_2#d{D7>Oo=7vD-QLmoZsvyC&)%cfYyiC=JvKx`=&l zVi!>_-O{~wLI+~xOBjc~0nA*@IsTbAY#Auce~0ui^MQg=N(|L=a?CCJsd?5&a9qiatil-?YCogFxIV^Ig|cd$Yp@E3O1J=EwfR1~j>`mqpG3E$Y+ zOCuFw5Iucgp~^o~lMCOJ}ePG{fqnLWb!BU{HdAo8Om1 zqB>kYh-|j*avm$rcdUobmS~GI;yUPU~Y5&9_wB1QlGj}u%D;dsWTDzub&HK*Ge zJhz|fCfd+ENJNR|5l!LYPtS^@DltoeUEco1D~uXfjjL@qu|EDg*F&z^UI-OeMjptZ ze>~jX4~+WJVoLM}(1)4G8D!+@%lP$+{Kz{^x~n9~ab?SsQ%`kpWKC>bwIt`n+Td+# z6G)~r(C)HM)=j8JI_jTnBErp+uYsAIH<1zEd@6S#FHYZm9!_Qi0rE>Y)ee1^xwx&PH-y+2I*GTK*SaUfUnF;ww;*vjPyi&t3-@aWsW{fyf~EX z6uj#p<(pF)i_cKC-7_aRXsvD~rxs3W*{Ksq4lV~19{qAr1S}Go&j=P);4y3zH7`HY zbaFd%QD6^L1)SZ#}z!vVg53GZe`c8mF{*H2miX1lHx$W7n1ys=QB_bt>P%a}Q79BC{WU*2qC9v7-S! zNT(C?X>{VZM!X&et7N6GI6%UirB@YAj5rD7izJ*}IqMUiPFY8vPhUYp^zM1Z>amPp zX_gCLR3y!A+I3{ZFSJ@X=a@pH>x85EXSh!{#?zA_vQ1~giu`9_1a6zDIG#hC{ zK1t|+mzf$P+W1U}7U39I(FT{~iUymR5oM;+>#8W2nHc{lJHc{yqutXvKNM-=`1Olj zNW0m~BAg@VVTDQekm&BEVw|$L4O82TA6g8dn-RxM#Jlii-l}?NK0I;|GuQ#Nsr)|C zillcXl$-NG({IPg!u`%sZ(`2JmKoSl;5cx3gUFtES`9-xFd9yxumM%S87v$uLt7Ky zxe=Ruyw>YBSj`o0F{ZGgG_?dH*qn?u|A_DC=6}H+v)EP2uMu??b%#pmt0iwo5X7LR2+(lo0ckVxOgryjJJ+;$~VhMb>v ztN~%^C@Mclb5vd-;BLB1Y>=6;4TctH(N*|$T-Gx`M9LtB`6sJlH1iL=I^sAmhsS1D zh%CQrx0;3b^6~+>Sijkj-jumLg{@{=|A+fN$)}=YwfG`;Ul4-(qIXhpdj zoi4k>imJDT$PjaEjn>LwJzr?a=;h#DCrv4Wa)d2M4Y29?LD9v{&K&n<4cx6xhP?`E z*k;9@gNbXy`;=5xnB{w&e$tEo1rOPUIBh-W%buP&U!FY6v}4F%6^FY}I4FK^<)OI| zxEj}~Uv99~+%xQGtJM*xdRmPlPoKII!&Gdt*}plbMO+Lr)ru zmtF`9Df(e~)8Ua&+}g!;ANyiCqO1hxU8^N$(K{kkOIPGzssmPO^Na5WUHUT0aw(G7 zs&2=fOHu+H4>FMdr&hIsIfd!CsvdK;ik7ONuG(&B3qfP@_Ie7jVGvKp@=Qv0WW}Gt z5N;KM3QJFeW?d5dmeT!Nx#V5edd{8gNDixfc_Tb%2R1v{09sRS>nbo8m%6lT1iMy! zdVJ}KxkJ$ksbXt6U88V^$)>gYi;FsDrA z(T{Y)twY>Csc9K5MQC;yKbRWPF7a@m{}B!1GKcpK7H+5}&e|O({IpT~42TGYDgb{< zJZM!Ro6s#hk%4Kv)1_a>jU-<=KP1r{h8(V#dQaPS=S(ss2J*^TEfI8AYE|A6M+K}p zY7fM&4Tt>4krJ*L3Z-5ohTy6HcM6!GK(gBw;$13fH4r(XmLuyYJNq65vs#>FM$(K2nrsGTA{^^> zGF-AtslHiIWU5WPMadwb4rq_-*sSILS|E=kw3pfyYAKtF`l_5K+pVlaOoM%oJ^%^)q z))8#*Zxq($h&W2hav~5tu~hZcIg_ zrMZh>%yrpP|2CXtWSD#()}-*uN}k+7j;q-+9U8JniYj*QbcuPU=O)UN3$LMKAy+5m z(46Js(rmBuuT-HgsGuxh!Y2fKmXs1;Piov^HQ$|SdLGYXV&gaf$0}$FD9WP_Yn~zp|4GB6 zs923PeeA}ZmuEhUybif+AphHy2&AivnP|H$dgW%i@?N{vQQ6pQjYE2J8|}{`igp32 zDhpXlMKbUOT|2Ri)U0{%6p))a&7XqBXB7#;28?6b(l63TLxvOMAEf2kCh_KV~pX$7qki18v9yIoI>JHOt*^ep>ob>NmDo3{SC}_6$66^wVH+;4VPX=Q z%u5ExNM7wyVlXk{I(m1O(&7yb=&XTO(TloLLYp8W>uJvJHi^1@K=$-uthAv-zc1}9 zRzvrk6Ds^Ox4K3+RK_w7?`$9dPvJ{>o1#6VAFaRt(EEyOyluM8qxfC|dRNe@mL+_Uw@0)6`CzER-CH1C87YvwEvE{a6b!EnC z#;6)Ke;z9Ch-69v}c+cI8jl;0jfXdhYfL5s1d&9W)l zHr4^%o&*U;sc!0<`o=y_q?(BaET2!=!!yJP`-^)5;i}3v1}xd%O+b@g<&0rYIgOd% zqN*=)ti9mY{fL}*vKz%Gl@ITBU85`c;zU}-U!U&Mf|^Iy-=J|&!g1y$LAB!M ze0tSoNoKE=P$)lgg@{Ev%D^fWqV^;P6%Mr(^#+#Wm@YiS5V~JKi3%*pqC>&XiYV(X z7O9Ek!I=M%5>W1aIgjuqWejFPtoPEJoJtFQT8Isxo#oj9-TPbg>cir?0h6*?1I4oS zVtf^YoD?jM-MgA4YjlVs+Wfc=m#kZ{k|RXiXfUt%7x#``p^NdJ$)cOKfY}p{oOeZ+=(=@aCGprN$MBJjZ4VO$5=KTwPSp)jyzO*Uj43vUO}GzCvrlj$)Fr_nI~?&vXc^a*o{^U!%UYA zt6%v|V@K(99)8#WNueUy>+IoNhBg!P?b1D&NJxp|A9s3uC93=>jSAa;NunMl&ADl1 zY8GU-=q8po7(0CUPmG=;>Pdbz9F%bnEYz5Oio-w!xTHxyp~M6#M*ImdKMPs-^ur63 zR)79b(0eng#72VxRESC*7MB6J!bLhHs@65GQ$ue4sChBWKM+}2-svuwEW-MhKf*4J z_ieLLyvH!YXET3yJ~^ogcR%Pp0$dGAkdU?v9nr`7%4${=1HZbu%0{r1#Z4`o`vR_c zB)GI(VSlAF)L8`pM?kp0bp3&6ale8I(gE2`Nf&aOFzB6X;Gqq?v95LW;c_P`Fq$SK zmS%6W8i2u3yKkK|sEL-uJwFVcjwn&}X~`T#DSO_H8rr+Mt={Kw&yJA67nzAsNpEXZ z7?W1J%Fu7H&7bF6(c|&|hHt@Q$5*fbqomKPmjMucOybpp&Cb$GT6EJ#0MRffp*9?H zZOnWpOMptXInxOw5 zgM)811oz%_#^QLu~6rJUW=-9!`K4RKz)oOxHF3TSq zCU)seLl%dufIl3H&K()o%Ab#VcCmvr?gh)dSTiq#wu53V- zVYq2P#t~;~42%R(nNLD7=GPS9MD9&LJ^*&*f?h(x zn2Q_v?EgIuwC0ppdEN;PftCqCbJFSllWt&8I5q^98n6*Lt~k^>qgt%*eHO9QwUSWt zOf|KQSQM5a~?gsMo% zKmgAyA0l~~s>u(8WBWjdAFHPRN=EO1>=}dHrgB68U5_VpJV1J&uTi=xY%UvbsZVoFO_;-m@gjnX8`ZQp39E=+{~C7#JEq1*1n`M2Oz- zB?0d-q$@vhA6rWJPCwtdk7Bo2-u#dad@v&rJ=*wx`2X8nm9)N<{h%7Z@WN#sPgPnLWxwSu$tv=NG%AJ`V`&QCYhfyWF`Oh=Ys54GJ}%&j}WX2&sR|RP##H-L!94)FY!LiNIaHSqd1*s>m(Fk#{ zXP_L4y@;(x*|`2#@;LYew?28~)u>&K@VsmH8$yJOSY)&pCY0xWgrb^=zTCBWG1GCg zrFI`#2Mqx<&*Py#J*G!gULH$~xMIMBW~rWSYFc*9iK_iK`iuu2@Fn1&r=&f$szdi% z78@Iv@X7Maz7m8?@#)KB%+H^mF|*4ysELyV{`h;d@6rvovwzF@5)o#|I$YM64|>?3 z*nFuKv$XINUp;Bq8Zt2D!soQV_>|}Gc7bZL{TmsOJa1YG6Vt-lcLfwnqRdaD4t$-AfplFQ)<3;Kal&`JAcks8VSt_T5na)YLf)?y39oYeo4 zQL)iFt!TJp=f2*E(@BDckH>v!*`u^f&jEx>C5v>Jzsh*H6z`X~efrp!6`mNoHb-Bc z%Y+)G}B!a62SieDP|{&Z;Xvhsu6^y4rpW z4h=65WfP9ql2@deOa4C`(bX=OuoT^VaKmeK&ry(IIi3D7%cLqKLK%K1B>ymsCpL3b z{}cZW;9?br&B>Bba5}kESe-=NIMwgsS|CdXrc<}{9~7A_sUxYxQGXY$l_6L1651&= zCCN{iUnKZUJmkgEB}s?vlbBvOg6f^3$x{9dW5KmY_bE4&ap8FdUJs}SMfR@?p9?+n zZ>R}PjTMnNZbB=W%>&-#=+PwNgP;XgH&31<%E3Ui#LL165WWC0@`Fb~6=K*ylkl=D zcc1$fbiz2gB=Aa3>Kd~jyIK|flSDq8@zDv}YM!g!wi_rF!l)+~VyH>me=RDYjo*J( z;IC@vmLf<@txUhu9Z=o3!)7S%FnJZ403+m>6P+H(zHlEDAVuwKm}ZDB=!D^5xzYQD zPS;7?3@hfuMc7|4LgQSmPXsI)F|$&%Da=2qpMa8Go~JMY>L8+GDvl(ntBvHC^LQ~J zh3T>=5n9-9lfsEOHl^XZpEExT6oiq_yB(@PU?VH|ac5p(QUriRhIER|L>?rHoqBt5 zaIf9~gJlvTueZ&w4vdNxi_h*N;&yMNgh3Ju^mu!3B$PWKTH4;Bt982}6NjpK zeCoD8ERf(0g|{?s=LEIhxe%0FuVx5?+w75$r}f9RsI!wSwpogOS>I%`zO_hw!;oU@ z5E5G^_)C?;KSB%C+L=|I0GKotx}!jaI?)FE3tO~(nMV`didVjBWs@u0UDEqp<4Z2z zN4!reh(vO!Q7s`?8b2|aK;rWnm^DPEx$US43&(MG)e|0%hoT|`g`Q|=Le{Q)hQf0} zm;yHdqT*e;oQTypgl#dclmplh2$xn76@^rVHTC2nKJ$}c-mza;*5BZxRmhaSvMQb?R`tGO%;RmGsEg@-JE`l(d+*iYIH#tB-Hkq{6Qnfa0^D9) ziriqUOY{oJXTXY&3|wW8aF^}r#r|rJE1bj&6fx{00&kuT=h|mfc%o6*wnmpxiYsc1LzDO9BlmI5sM0u8iXy@>3gEI1 zNVsbX0o!`!BF@lnh4O$!@a{eXfP1p{;oJZ>{X&d5D9|>HQTeIm|7G#PSl#_nH42I% zSek~G?Xz-WK(}{ltfU-bZmMk`j1121k49&I2K3*qWdd@))k#mKRR9xSW|k|F8&l7R zeq<$I1rdYC3tSvoXY`V(dQ02gqKppz_Tm*3%B$X>&l=sI;DrUtfl744%nzwmf#sIS z3CbXuH2*A2e*m82zRFn0ERaSf{p#>mT*&DaDiTt3?A(=^o?2&KNB5sbeiXlu2=W$7 z6;g+UsBs5VJDWoI$e_$gEL+h5Od_d$W_Zan>MnutQk0i^CXL$cAbfbF8 zE2+5Bc+M5I#m2=Y&A?a2ETsKxnI>~FD}gj+k9<%NfAGp>0VmQF-V~BC9$|vyuWe5tYshM zIe`C6*tCL$g57vU8rVn%1nHJpfiPhxPf6ny`MiDkJ+jfRYl+9eLMN*t>EhTVAjY}W zw1o-5yLh#DwxSrH*(mACcE06DMH<@^PR)Q6B0Jh)qzHjM0cTmW4sXrr2b86kuY15d zB*j~2j3|25b3q6%yMhJ4C%N6x=3X2)wG0*d`wEIZvk9EWx$e%XBI!~eN$3E1Sm|P+ zS#+Vhon4!zFAml6vgpqnkj-uRkoyF6f*2E7KY7Y9Q{NE>4+NLZZl^CbdPU34J#1K$ z+fdDe<&KRW`V5@#g2e2&6Z*$SN7B~ zxGy_8pi!(7>6oURm3AI#bS5~+g?PHvo80(5YT?r3WIk+dv-_au@1;Zs-_E>%V`UR+ zV#qFj%RktqN^tG+AxKF*^?Ix$zf zjK5aZQ=`kHNtrCVFDh85Q&^JozHNFD?Lm=MjU-5S5E_X&0bTQiAplqB(_)p>cMa*PtIuCD5q8 zy<9kO@KOZU_54a^5wk_IY4t?Mm`B7Vo>GJDByJ&n8jyOc`-E`PXJSuAsTpLq$#BV4S(_Sv!g*xDAT+j=$Jh++RpoAxq|pw`C9TrE zz)E@=In$P9W@jqw5$HXxMiyOO`k-%h|M{ zaArz1bu~X4;5A+j(!KOIx4Hw%%`J?t=w{?v%2=vY-r!5Y`CcF2x^t&Bp@|@K$W}sp zY>{lQO`4uzQ79BSnfCLOY8cO3ZH=~k=6^Mtr&r|}xQLS!^k!~4i@-nc`M7+}BPFH; z(_!e61Jap3tt^0hW}0z5B_jt|w4&Z-eadB;JsX(_O zC_8WD&u3R$9ixaPpE+Z8zUINIztT3>@p8z3bRUkobx)?*X!sIJ#F|Gj^xCKP=&tM~8QjsM5q%T5{f7K&Q45`;ICqdcHE3%ASU{=oum%Qj$$7@hK4Z4ie} zAj{X^a`MJb8K?D2-@6-f$ZZi1Uf;p6l+yL-7zJR8X7_|yGAxp!=i~R#{Nr>S0yxfhtuv_-Wx8 zjGsU~&pAmh>P{$@fI6smTCrKkmX-gy0GO!R3a%G>GL1r36WMF|4G$jk9`x_F?YdI4 z^R_~_$IMM4eI2A?_l>7Y_O>KGqtO`m953^pv3YtH!+#kKZbtdZ+O8$itJ@EUITktx zAbH=YO4p8}8mKpbJZsUOy<|P)C#~ZNF;wK8E*0sx!?b&%EXyhj+ukJseHq1)&z>Lr z@`-oApB@5H#Hc*bB-KFHoo&5VSJ2fi^)~W75c&CKR~V3WK?pxM$9fnafnNk5_c&J4aZGCLX`SO=CS%{iP><(G>99MKSP|j*50VIb-f+Ba#xby_9 zr1ViK%jLpe0xLgy4liCQAUmU~+Sp-7#{EdvRKMdXd}qJj9!1KC7Ka$1BX`Ke^uFux zM8STj27lNkR4*-dWlr)}|HkA~#}d4fdR8dj$XOm?EZ(I-*X=IZSCX}>KkYxDEZou} zUV`N{o{}EZr}~{dDmU?aQ7*syi0sSPr!AQCPv}(g?t#a(jz2R4Qf-mU8fj_LYKxX+u3!#1*X0-f}-JDw$9&VlKUxGb2E){Q7IKUp4Ch3O=1c=!ks;grrG1++fNzVGq#AQIbuzt4Z*Zhwbio^sm*a@F z^xjvs-JCVGRRSr>rFIGCI-5sxCN$1^>Mk;OjYjj{rP*(uQMpq-KF}+wa{P=o1U6O3 z8g3qFgiQzEj8=kulS%@kE6F!g5c40hpQl0EU-1qLe4Y>V6UH9gt@okRA=c823^$1M zA%rWsV1jKC<>E*fU#fB@S9@0GHZL=R5m5$P%5S+{-&-KKcmXV}=OV_Z(;plh^j+(_(?76np2a(2n18k}?v}ktr`$9v ziL2qE537Ei;badoJEPf95T6c?-j3rBI_Ri)Njl<(4hVuK?6=S)SWiw4b8lJjfr(Ou zyC>ka695?sSLga8uFV1@!V4 z!@{kXPp8#RFS2@R?}Bu75UcNjSWbyzP|*U2|KY<6+4QR{+fz(@@kE(lyAY`Ym0G*= z@)(-TdzJVYwX4Hf|NT%T#wL}Vw$YB8cEq*r8}SxC=$>0 zfKE}20sDghs{_rUd59UCL27{1@w>rZ31c4n72=!y$^ZgMg_t_H2B1tZ-u22 zsj%pMoO=>HN+Pj(7Bi}rNk^dkRhzb$`#HV9^Jhd3vu)UBYyW4xvi@&4hv+$^;Z@hD zR)nD*G3}A~cO3e8P5k)miZ7{f_f5g!cWk+!!tPKfhG6xbCHTW*FVM87da@rK6s`$2 zkLjW%tEu|Ie+>XS1VXpjVRZek9zH|;{iI-mFV`6m8g+#Klw(dtl8iSKt_jL(fGNe| zqW$OsiY$%n`YqbY4D1n&+(F(CqUoFIb*2(6EodtgR8OC1-0xUYqnsSo#74b_#)pNo ze()(wL(7CwlQS-UsxpKFpWwQUKE8@+JbCiU(rE`!ALxs4Y5IP>j-X$0mvG6SWrCzw zQ2KcAGZk*u_cFX9AD*pGI&Q(0p`jkJR?2Ybgy&igG9S1Dsz?qQiB50S%Af*Us~&JB z1lIn8=FE!_T>sNH$BKiVb;$qTk&Ri9ZK2zA9rs`}k9)UL)+^5C+?0z0;*3xbU6~3gBRFTUVnHFJat0ehdP900q_C__4Pl^9up)tEniF1C4XDduKypMWXOi@Vr<fI*M;X$>I#_av{ddMiN4S|t;6%f9H8{n#e-I7$S!-=oVPo|~@Y zPZ`z(CkXlFP1nDU>VurF8SLmn|p?-tH(<4-mNckh6&!c&v`L0YR- z$}jT46V?9FAHVge2q}}%)|9QV@#-N#<0Zg+7EmYKL&o)d!A_#Yrp0`i8I|U>Vk_Mk z6@#BgYJ`Q4o94BF{T&6C_>|*_r-u|rvjj8&SHvv?@uKM|*DAY<8dzO7N~&=hf}wv* zKc?gg!d$B`Ix5ROYFNrI7fB~hctm9Zn~ef>i#o8{*#crv*wgV}%pA{U8C_hg_RB>d z2q%w|7k}5h0e8$R(6(>DLFF1DkQ|^`t(a!!9TgEUZU2*Ex3@5j9chiL_8#uT9h;h& zIJ?^on44>O3+XjRcT)bklpTW~AKu-7zolY<<~&J6hs3E$`FOEp$X@yrDf;PO8QyTL zU>8_pE`TQhei?97adQF&e5(*$SI8LA;kywp1AO-3l&AB3I&$(W-_~67Hv6PMlfPN= zq<%;VF%xa%35dsP+es}Rmyqo-W|M^KRsg+w@g}-Zk@dz~21R|L!rm95@t^{^q!E)S z9~NCG)R4SU)9n$xnT;WL8oR#d%E9BWzKe$cgXSiK_ReFJ%tDLHZ`&P_k!%aoFxlXv zV@Wg?^aZTZ&B91wdFjXgC&hry9w{F-?RQGVIG>ZpZ_+3XOQC${;u+&vJ8xi1wPUNt z5pp#T1X{QB<9o_p(n8}|z#{TRS*qpZzypsCr$=Xiwy4KoNrMJxR^8=?QAC!r@lw8B zMZ|ajLiiSqDWZfk%Y+F8%Dxn@hOhFfZlDPpkBcLSF|6EHCNPm%(c~N!^kMEKQ3+s@ zz=h*K(olHiAycEv)!5-|?lv*6^_9Y&G!KA1;F{Gm<^?{jrEqGJF^70Y{eq7!(6x#o zX5AUXG9>`w7mUbwRG?}wc}T;MQIIITST6fpgLTPv z7-aIQBPt$HmMn4=*#j5msL(@GT56*M?C4^=muOV0X8E->KZc4#Bkzs1Czy0 z{F~^GY9+|^cniEGT}*vmyXC-YCfaogD-uH--kJpHscB#_yTEWZX*qL7ny@!YKq^%K zT97WTm1nBqj9+&G#6v~K!&#Zt5!VxHj8ihU?V?osrC-DQU^0l5w)hA-Ks^Yl%#5as zx-2EU@qruF6^ldaG^2ex7{C;<6q9EY1V8dq^kY5sX88iNZ$?8a4eaoHsKl0E7(Y|lM_Tg>p{DCaK zmrm&-v(J2OkE1h?aXBuOwFCUs_+#Vd7&LN21mF<@bP|>gRqKAE;c33uqFM4Q)8&5V zWVgPj9%&`-UYb)aAZEM|LLJ`x;eP1!1aMazTj#k4J{H!f8L4N$aI_&u-q99=RTCW$ zFllGH{ssUep+mXM+K90ei2y~CQdvyuaxK{e#I7N&0p$&3rtVnR7| zuFhp4F5d#uehR0|-0XocvJ=bD%^H#3qsgKj=hs+oMtkJia6FsUtr5QvKDC(m*^@ti znYPoZ$(Af)yrtNODDe)(N7OTVSXtHdNXui@)8OYIPbdO$RSf$UZ4oN$M$jJ}tG6%2 ztMnY{|6LC?1y!Htx$l*gp=+P9bAA=~Kb9}ceyfgJB(DD>#D<2blg&<>c6E49+pss} zencH1TtoEu-DRwVno&?vD{(l@0*L?X6D@!L&rF^>HLJg5CIf0Yn{O?B|H(!>J+i&Pvt;<27JgEBb5Fkwm`6cCfMb zo7LC;0da7UP-kP(Vv2iZZVyYWSrpymM2C!^bqW&kQ|16NkyWjV+FRN59!-q>RbB69 z(5WJ-4c`v*mHLFQY_J#YoB;+7epUF~JHAUn`JTcrVDjL>{$8brS}nlrvSf3uy7>kt zQEr(EyDJ^+*Ll7nZGvUA%@tBY%YPsg#L#GmmJQ zi+429eDdjm5z}dUw8J(avonZ;|*th4nMv_9q z4otF*i$9&ZIRC;nU@mDl7JE_h-eB!g&Zom&kxN1|et^q3eEsU>%-`U(-{nORck=0v z#>q&WGq5tu4m=E9ThzkXS2A4~Y@U79Fs9KZ2TKe_81oD(IFH_54_4%?_2us2Yw*bK ztCxpQ5lT3>PJZI@t;qXB%st!4Avfyf^b@Bq@GZ0NM04YNLXe&!@ht_P!zNmdUT$b} z@4m}D3qnx|>Sa5`XJvwlS4s19F&zxxp#c9ZeCVY2lvA$`iF%ozEom- zjrRc~(q-ik8ufQi=m>(q%;#)*sSALo9&QG2p_v8A3~9J=_rg6cAq|TcwvmqPD(ji8 z4BsMb`rWzu+f;c(o>c@R-i;Wkco^zN8CnPSoyFM>=FW(VU3*~@WN4DcMc!wlJmMcV zZ4xGD&k9W^{8iLX7^M`s#AV{t9p=eEDtT;Ki2v5E8!^XPJ!nPVrBaZxu0@({Jf<*I019T?DUq5@RvItwDzS zm}|Llf`?G*<7fiNe=yq~JW`Q=xL?6Qj+X}nAlF=q$s7PCgvkO4fE3ho`ke~s_8on4 zUqs5}MKuiE!fE1pNqqe~cjF zaaB0{-1510S{8~(4Qsm*A@1z$L|A|{S6A?Cl~P)O-MImEVMQRp7R>62K=t4+Gdl6i z#JZ~S&6E%+TS_dl;j6JKoUjyB9LVFf(7j8&%@y2qduV)-!3fZaoK>cVa~Z@KCO`%fi#kD}-1IG=gB5 zu#Aa`741<+r^Kr6LzI}cJdKZ@)@7(9ong(uiK^_dPM<78E$(l~E7Y7~@KCKB!oT&BxX@S$Aak@x}G(y?tYU*1a5HWdrWUUTTD z0rZmsLz7_~ycanv{M=G1t4>*u-4XwY!p@mVfUoaRH7Vmc>4qq62)7y2u) zngcj@fikn}_i&o_D<1sU15UnX^j_dseicx;d$|sAbzEqkQkH=u^NrkXIryg(U|U#q zxbQPky%jRF)e9_@pYrcTG^-6R!@60VWf!^*)%dWg+)~8p7|H7wZoNg zXcXAq{0?K?(g+~XR?ZBeI*<2VjxEVTl+$5?Bu;T$h*c*>;P#SHGAyZihJD_}3zv1v z(+KJ7`<4s!taaAMxv&_7m{_Nq<=@FaY{L4`BsSqcRB5reTO=mewfjbK=?0#T(dIN0 zDpFIx_zWr3N8Yrm^|sQO9aO%o9c#-e3h2j)Jj1t0YB_C%`&>ug5bkZdW~5_b9_Ef9 zSd8gyg>IXd_W{kTUiR;VE-FL@0XT5;TMC5O0lVJ^MjDs=3C`nWuMG`-biwmYK-c0D z8(xUqUac3YC~qKmYvt6+gQr`0$A4)sn5)f~i~l&Q8mLOu?quOO9i?+Qa2t_?B@JBDpEOM=NF%^NdprT17#7yjjOjpwyEfqIt-q?AEgM9EgU{J zDAQgXhu<$azL!JEuS$JnDZQuu>^H}{NjLvFq$29UHUG|PF`3d>kTUMzJ!u1Lrdzvo znv}o%al1^vvpk+$ck|Z!QF7!c>SHwVa&a21;DCTG{^yQ~l=ingA(&?&QI&S}AjB9z z%4F#SMSk+>EX8Q&C6J>Hqly5cZI@M}*7hmXN4y=aPZ-F6xF4D13nJE^vTFt11(Nwe zuDEZS#!(jjk?~#dk_QdImj51uPkGF2%u?wmR$dT6U!RzP{b%e&(PrI{Cw!0b!p_&B z@RCmw9wGsGh3C|ljV+FDb}YegMl9aX&3n_}$fYKhO1n2)Fk%|6l9?&=8&EZ`y9qQ@ zQnN)7}glzyw1tB=#g9Et>g=WN1W< z>^&Vr`eE_iZj%>W*1S5645Jir{%e_y8Zr}N&n;g{DS}7;N-*r(yUE^F%ba*{y@22y zuq*Bch^M2s+>tdjs!p!$#8m$awIk*5W>z2dexhgIFWln}Hn_wO!>$#1d$EX-ol9&5 zbSOYIZHDYw0mF9%`KO_voe5>DQ-mQ+GOl&tY4fJvcvxgqjpa2C|0`5)1Zm#zh7G&$ z=%~`OH6y{Cm_m&)Z|jW#QDINd*bQ)r6jvfh?yLUt5o#Ka1oCRl+2sK`v-c5D7QY-8ogy=n-xE_Je=O0j9YYFkK8G)fwM^xz1;X=SPeZAmt z4#k8QS#|8w-AI9WKw~41EHS0B9e?vJ_tE1>i`SaGa&$_H3pd4z`X291w=$qw6n}W~ zoqnr%bb<+CSAaH7HXW`Bn4&B%iVNza5L$zI-?u1NPuzf_JiVq%^;%-eCXZ;m2^yLk zgPn7~nQi8)$$Gap?n3_t|E%R=TrpU~vc51B57J8i%}^}FA};PDf3G5Fe<*<@3qKDK z<1?pg%LxdHptAOd+)Uia0z_<;W2tRCtWEmozEs3Jzs2f0lMk4cZ>=7$nS~;mTh%cH zN!~j#p<#=bO*Njv87r?#<`E&9WK(-f;*6W`IxW&FJ5fH?+x6N5958#;_;OCGLXAB4 zsDICcp;6&dM5besik-U4A-kb?QB?EC2PfW(qbP2FG^Ssx@9^OP2NtQooOaY?lZ@KfN|3%C_KlCzHoN@JMfe6?d?c zI3*4#f0i6NEl-KO^RSHmmqZ#eb5>j77Lk~!8v8TdI=eY1^{vD1ne5W&gg3p&rK~ao zo<~5dJ#;WH=XLoe+yJDaGLjo)buLrWqTB3(;yCjf)u50QOh?{w<&8dTX11TOT4RwHel zpc)68GKckFPw_5%(9FcNJn;#VV8w$`%PGSyw;=IPOAbje9lvL~3nfuLaMpP`UjAKW zyo2m{R}VGHv68vk7B@D>Y>eNmPM z&fTO%519+2(q(nGI9lxg(jx^};=+|YV4L2;KqmTyg?m7hv;e}~M14K&0wVNHfV>kD z3JY*Mh_P#!c%7C+h<10*fZ)GdU?v%OeQn9<7(PJycom>Jpo3`VT0R!P zo!Zyo5uW;X1oW*RG=5j|b|VwjtYss1)_%z6KQ-V*0G8ZtYy~SLn0_nErn8r|UQX84bBf%XDc^>?RS2a?LPy(rzip)I;3-DG>wqYCP4S-i zk3#A^oT=+6b#Ss)O{D3Zi08rz|3;B6)wUrqCPT-)V18BMnY>!Mi|f6qMJm81w_TnN zBgogV!8QX#5n1?|G_edXP@sa=<55^dn$s&uGNeavImA0s{U>spmfgD%UrC>-mk2jA z^@hhW!YmCN<7_lx^7AijMHL?m!nB;Bv6D3`bo6&!H^?j@IP1gdY{JsJha&WPlNZDt zJyU_r+S^dk+(-MApULDZ72L(QJtNeVUx_~yu7?SNt8QB{*$|by-c2<-3P&#sUkVVf z7yuwCCfcfk;9{}kOalMZA|Htcfv8}$7(~Ecj%i>!-pG?DA33s?c$wrSLoV~=-f;(Y z3Dzjz8qP30u>%Y8n(B3E=gwSCe{Kgbp+$!SE8xpryTb^6dFE=*TSHa(wGQSqw@E?k2E3%NF{1ETEZ>MfT3C~ zAyjk>3}^a|M>XNYt1Fj_zFL=l?2=h<;(*QXIP)))T$v5=g{HBO(I>!{X+gui z?b38&S+Sf_*>(`9n^p4yW*f(s|J#oUXheoK5npWklIl^~#M`dww z=~ejDxtqx_-x8f_`xj1|!{e-31rz|r3UJn#`kaP@!SYG03Wd$gB$M6Fkrf91EHil+ zxiE|#m{jN`&wtzx&3B^#wTn5Z?SjynXP^)zUl6M6xEjH+$;TMy+^^er76A+ajZbwg zIht0@3%IAY{y5EAPburCHk2*>1{&bpAMNO)1n#V6(gQ)NekW2DMl&frH~o#h=WLNc!qu z^?|gw=8KdPv)--%m^_`~)npD1GFR}y4s)FfQm?R0m0NPxwq$FqFW53ZSDKys7(-3= zVvA%l;tN>if}SKl$P({eXWFIjHjFGUUko=l9A^?OVt|O5oK~?wqff5s(o+R?Zg42X3Lx z-F=LtEjvS^jaS@zS%FL^-5%L1jJV1K_d?W7w=9$WGzd5NFfSqNh(IwI0mTu1f-@{h ztE}x|FChHK2G6A2leh>?dntbNG`1`6v{w9Q!vGDAXbTB}D0Gtkq;0?8O|tcLV`yBW zZJ=NW>ObT{OTpKkDX3w26uIu_d0$9vxxXTNMMBQ0|K_Wu9`1s`WVqo-ExPh0zB5ND z(?pQ(&plL7mvFGbihhg9qhV}kzLLl@VeH>@XJ?9sv$=L~bw$t8Q{92OrRCATy!=8; zXsh5{gnR#u{aFLw#1xi$r#&|`9%l(M`zglQYRvHX`Vd2RH2mTKBub^ee} zK2zQEHp-s!+PdI;92zDeB*aAuaDS0r8fA~s>?>0)(_*&}(~BUR%%b*y?K`Kt>tbF0cck&Rh!EOLb54j#?henJMZ-20!khw5JvSb zgRU~*v6E*Da4d?&HL%d00WRl4DdFnryUsbrFC}Y2NJ(#?2wbo41`&KwVdE>$wg^>A z915=f#93Os&b2=WM-K+usmXmjnTp$|XDe9E>9yu%?!EilG4~Zj<=|{&bpclc5N8jA z3nJ!DqU@QU_F6`V{L+z>Yms1D5IF%V`l1)E>c5kk4YL(HbktL3-9d+q?YWK`K%36GMroRGB#Ngr4|zrM>Z8hy_nLgC@or;yJO={uS0!>G=^@wdnO-*5cx9A z;GZC-s>v_wN>h3DJ~+XKjb1^U%FAo^lnTY|!deu>MW*{-{!~(vl1w&JRb4~_AzQ6_T zAqtWEfc;P3`eU3dBcA#1I%ugm$OnpHP^AA{Afy}J#rX5b``0J}RnC2g_%J7C$iG2^ zF2FKlV$d2nxedm@Ka^&V3~-S3rM~|?_CI9ELr28Qi#R9%N|@`IkH^Ye<=Y=9qCSdU zBv$L8%3tFP==Ri&t7~?we4Uw=VVhuAAWmrmzy1T)NFtb9Vv7{BLfGW|m^!K=Uz~OJ zjjP5yS}X7d0W#ZFpThU9*Q`tYoCXQh!1t0haYgekt*M0<@em` z8Sf&fE+?%tSv#F;<@}hb?K(&A!)}_pYB0_^mx+43wTnq(Mt<-IG>V%vxNA7=k)P~! z1NAJBHa61uJN6B7($Tcde$(tfMo=WQ!LH3xI1eAvaObA6p91)h zNJqDXzMM3wBr*V$R_t;Yf|&hc)|mVsGX;N49>$p@-tRgnTmARrzLDVDaBV%}|P&K)g)uj*L zMsQen3mn_eyaQL$&@>iL|L=_nq@X)-EMyPF?v-@-;&R@xGKQ?3!qMT#}3 z$y+Pjdx8*x5aY~1p)TqF%G)#axTCA+fp%K4HBUO*dOtpv=Rl_-( zVGDK;2M>pz?rHVHlt_h(G#YqS4h5V`Lab8Y=L08<(W1*ht3}Ly(^d?c1uz8g`L*r< zOv}`|Gq}X!lVTOwhcNesC$9>tECx>!_m^7K%cW|xPP~MyGi0(^Fyq#-J9jfLov-vn zNzG2!$XUQhASJ(@KqR<|4#8w|HP~R-gCOd?o6$gi=sUMK+Gy32xd>^aSYS8{J%nTKG zPA(@>RsQd$RkhQD|qDqlWO<%%a@D<7%2FC!t+kF zxm(Y7v|>&EgQG}{fVbJ2e?~VpXuG2p_>b@%*A1%!7U5>r5$zdxJ+(B;%J56{Fu&tyep7z}7@kJWs%mcu|1npA=vh29U!U(~R z4jQRrJYq|&-!uvDRCIZ=PYK2*wXV`m zrlT5bCuUxfcCop;IwVkuEq)$-`T%#hlejZ9^$3!ykdT1L^)Xw(s)3`r4bD6qxd+Dq zCsv_|iyIzFqZLt}nHkBIJn6!neDj@A1CWz%Skh!;r4&lUX*E9{{zI?yi{xuBD>MaX z(FoLUl#+jCXTs6lN&g+%leReFc zAw~F!q*_-;L(P4C=!j^{;Arw5oD)PPw1{fmkiJ;x6^*_23h0GvB)7b0Cxpi4!&&;& z6-g6l(hhKV^p;cad}%D(7c&J*bZ&XhiR1hFbI1L?TP4dcGFPdK-t3xXC4R0Dw=VR$ zgImt>Jka(kgulB-I?X^Hb3K1D3}|<78nZV%Z9i1$q#cbE!rMj1d&a8{wS-yIi6rFC zuY$W<$3&tZ$z5oVvl!yNET z5rx$hBr@#apo9I}n`HR9d50G)`V36Ql2-G1{n-t8BO{<>)aZn5I!j3;@A%abP;Z?) zf}VsxJ9cJd* z2n;I$0@JCM?@F-``LLSMW0J2>vi|b_iuTH=p;=Ow??xM~hYlz%x&|gWvGbRyQhRAx z;}h*0fgP&qONvLAB$-~6QJ}W#xwx`zsXsztPi4!P73R53MOe@NU!A-rBJ~0Hm*}Q6 zbffqEd2^p2^d~bgu0jr5WuH^@ac`%--{j6+!9#jqJd910%sF|o=n3_-jk;X^Y99S6 zsN#1VxCzA~JFW*?%{(?rAseQ?y_YRdqjCmrQ4pMf7NSz(g+NK9UQHw~( zO&2pK4&M^+NOAY&_?4+79Jz|;weAXe@-`RrGcdp(l6CBN<9Hp%E3Kpv+fTgJQ<4z@ zvED)QjTyGdKkyA^dTQ-c8z~wX*s{367CV-FHttllh?8L}TiX3CVO1L6V ze_=kmC~zllgsZYY*lLt4Czba&K|U>CG4nCwt3zli9^phZvZAd@6eP^k25WPy&p$c; zTGD~r$;_}Ki-~o>o$}zo^La&v69e$A*jPEurMpuXdK7t2!0coUv)VEd&SIn{QvbF2 z)VoQhC&(Gy@R7Bg>w{OU0K13XOFSZKoXcx-dIFN5z%wn7lK{r5uXS8;0ff zSeXFS5)ksLc0KvLE#wK+(g^>TJHD?8UIsfmU3ACkIwAt%lKK$YumjtXtQVF>6~>iv zDT@M;a}!@OW_Q5uv9j*kON#BmUm|xGl4A2MNlvWW%%t35k>00HNubS4jRrY|eddgm z*On~TV52-m6#6W&hvIH1TreJWM9Qp+jT;tM2WDA3-gX@`B;v-=MM5CQj+E4%{P zt&IR)?qtwq?T4=wh%4r{mxUo~)1(DJE~nyoaH=@zMp*S(mfV^-pTTn3VeH`kk^mj> z*y=vRr9sUW&G|K;cAC6qWN$nc^Rx#jf!BPqAgmgNzGq7fjy7#3Q@o#n3xgF3cHd#o zYF6_OaJmK9k91XvT(LrG+zIca4E08D!Z`Qx8g5G=ej~JDqiY`zHV9_It}IO{K&Y*K z`*abig{h8zcA*z@iS+rMLt^w<`*l(ZoNY_kep-I(`c}xE#`&Fs?iY#=k7Jx5_40k` zWkL$O?-_8T(@5k8aLsOXz!?uegGAf~lnjdLvN(7tpTcNjELM0w9b+na5#SIo#N!!y zfh0N*++I}iJB>qHl+&UVW%?2LA*c*{iI~aE73g}k$sNTZEL83@x!={z$QxPwn8MunCi^Gq=)L3;ecG&=gI&=^n;X8gpov@S=NeHZHij^)O~|S9OC9@yzi1UzRk3WrFIe|*-Gee;Xy6;;%6r}AGVe@QA z{kX=ISfBWvl;tqxK87u|Gp^|gnM;HI?@Fkc>>yz^sf}hJ zdWfNJhSihq*34Pax8g)GSD}=JyLDQ>(_xxI($$O-WCK;JULg#jX~+j;A$Rz`_q zQ39^nTc`kvD-1U0BF&5k(kxOCi_msK`;wVVA$*f)@|~1To&8wJV}JLf_0V1`E<=^{j~#@q+HC#7H^Ln)qq`}# zfH&35p`xMKBvhZTSCa51dU(MX1HZq`YN$I)q=uCHycGue=R?6AS!B4O#zdmDD?%S7 z=(Ez&s^0Nzy0SX7n@iC) zex3JfgM{|<+5!#q=Q=(BGG+L`MMCLwT4NL-pHVIXG=NBOGcSiX7p9s^akDxVAgx$r z+12U@G&|I)#6&E#t`6}VKV{kTT>@nE{r`!P^S>5@v)D1G5K`9gvX`R<|46CJb@t5} z>x@5?FY5v71ntAuXCW9|t0)>iiq(Ai1>8hmotseRx}JG1tYs>xz8nVdX10Fkd@^&=2h6NMv4I!{gd2AoM68A8ovU%%cMxUdEyfjpf*ojZ|4%2GWP7pdH2_BYr zm6zfMnj9tv5SvV;CQ3FH5l-He(<*EFQvvnr+WCN(Iof5$4rURcSL}6z;6C!fB8^XO zflT(kUS$lir7tY#Q#1#5g>TAafVMPmx7an11`;({vnl%C>Y`kh24F4E?xMf=-rUph za8W~#p)`B+VN?SL${t3MX3oAL+o3S4TzO%(veN;*_+D9&Qk{Z^P7)_32b~!xvZB!< zndcf%cIPYFR2vej3J**2XJv>hON&1sYkg97fymoFYN$!G=et3X6CNO|!n|T)3ZPh9 z1PXr)JGht}I?F=w#I$gN2p~GTE=G#F;TrZmQU`%_`fPeo!8h$GQ`8G}c{pHD9Nko$ zCR)U#I3`wuJNBCq&$ieT;c1>);Lw2P^;S+}eX?s4{ta*fkas+NQBaA0j9n@@W^})- zqL_d6{0rh#V8OKm5Z*Em;yU2oyHYD6rUtIGLpafpc&<3OJJs9Pm(^N0LJP<7xtQN@ zz{x))>=Q_{94ahAO~P|t&JFO+Of~9Hp;~J3vn0AQO0#>+>wWonz%e}17V2K8kt?`6 zfrBg~e#^2l&eq=`8SB3s98ecr)Srp0cmM)~yAJ}0tE6eZg@@r>mz-%WGg})9Zs`Gp zC+_4Ob2GnSl*t!fuTj*^rxh|@tpMpCVimPuuB%azQ&86v)rnl5^IT>%59HXSz`1o% zpnxI`XxKxAYUc?MxVcp`>$aRRXSue)Hd}}phX*Da37rI7efdyIAVp5k8CCGi4~5h~ zk!wk|di%#_?lN80x?&*?G<)p9!V~Xk36Cg8V?7^Ta;NOgObJ2TkhqT9BxQ|p;104Z zGQZ8sUzlyQ9V5l55i_`V;wW zH*>Yzg^IlJdf9nO{G*noxq+;=GFV;{b)5@`f`=9QI*N-tU`oZ2Pbz=is!z%XpX=Yb zVF82KY6?bqfl!f2B|+k|-_y_sz{CnO*@bWu^*Uz=xz`_dE4gPbf9rX&j>8)C%`Klu zu2$LA|CvLW7vZD#ME#cuM@obea*6xp5wQNEfr+Qs>*@HQB}$tlRHr=wWd@JMBm`Ul zx77b1JjwYBq`fwQ!H29C4z;T|sVE8wtuS77&1sNsof=mm)8rh}+yFrRc6^KL!(ll7 zdJNi2(O}J|*k`yhO(u6uMr8M%ly%dx z!Z=yUgJm6Ngs>vQuo99{V&MF-0<}bWl)V2#D}gHbo~|%?WC5A zG7!xu@|6gTL87*GS+c9WaE`nF5*lkYPyVhfG(O>*7N1rHHksw=V#efM_KN*v$p%#%bB3=@Mo!#17|E6^^ny91%X(4KcYke4`Pmwlj#qguS7>3OBZk=V72pO zFf@mGJQtS`OK7bqy-~rvd+6Hcn0Y|jG9>$9Aq`%FhIgB_;?*LoM4rSO{eBR);|+0l z3u3X11!MGGX~Yeyor`PE5+21qMggfZDsQA9i9;>T%Zh-{JYJaC710MY(Op>S59m~T z&j^x#GBkS-Rzx_k#IzB6*1|GYzbNYP5aON37$WyV#Pvphgxw0q5O{EQGd_>-yLQzH5 z5`#FG#qXVnkt_jl9R6Nx=Z2+9g0=w5Kz~?Q`(X3}Mn2q5p#8anel7FxdI^2? z^>_SgNgDL4nD!x*Pf9pJJQ_uc^(D9vMfJmsACDuD#Wj6@vzLM*V-`WiITnN z>lHUbO5m_Y#*r~%v5Wx~=0fubPWq`;+DIuzF!k9Y*q(seIAFZYWAw+tkSl}#;^2b> zOXly5F6l+p4w{UMnc}6UrSnL-GUfhbZhkCmkBPz^g_QK*m$eM;dEDiqc`{*_$&r>1 z4jMZI0{qBIOyvw)^go!rkR|7R4pZCSrN%sEx7s z&aw8SeKzlD%OJT<)!6R6>^~Ln)-q|ctsblKH4`v6_B=NTdM~!1cg~o2AH(gO0~-0D zc5L$?q^KhY z`4O>DelVWVb?%3D&OEF8{{%+$_Oy0)QF&wx)l8Ga??0~1erdhNEfS4jBx_^tn)7d; zmb#`68q@LRe7Qk>G0nO+ojnWH=r%p43}MlZhm6V`M_R4SMwGpc0CN6EDhUh0lkXOu zlQW5k3~xrS$Yf9`%kipzbB4F(*!F3gttc_!&XBqqyrnOo(!ng+-Y0O$N+jW$m;`xY zIoLWPFB>}C`FUX))(}jlYl+D1XtD{FYp;?-U(`{RSMRIrdmXd=bY~=i1di%ofu&-(6W_jpy#|?rr3owh0)3tjw*ezZxExP`E6j za;idXkQDNmU*{&9-t+{?4gGrt!wab4)08uim*F#X?yS$9Nt zHSZ5yr@c%(jlHSnp(0hGt=&(x;Dhh#LciDW&4wqp(55&Oqd3f`H)OZ+sq%N&A{Zyqpz@epqFW?T@?@K5%@n zW&l6?9W{^XBC|cY1ov62Z}Q|HI9Xs@PA)oa_zGKbG$k9tVin@ zog}QnwPU&t@-ARP6Y81NOhM310FgB`(FWl7dXr=Ro+65K>F8+l);y`KVn^8Ske*q+ zs9)j?bFnIiLK=KXNXYs)h4k7F5W6fvg_(0zJ}+DR8>Ts)Zi^3HCeYTC3UBedy;osd zDa0FF?}QbNDn0Y8Q~vn89pnb@tZez6mVlnuz%mRg&=1oD1Er#PK zvKF(`;S2WFejAcGzEfy01+;%cMh6b{j}R1#wU+Z9ehRw%Rhmzd*`*FIkaM#N;`6y19}!6oalT0?iGr~%+HFrgn?ybYm$c@BYT_oHqy9A|P9q6Cr$1S-@2B!XVsp`OL zmihwzR-e)8q5dNzn*PaxiV0oJNMZ>i#jKjAPJ;Qc4Xt9y1V1@yce;0y7W$xKlj8+1 z@ooj|ShWAP!ra_+o-JEfP3e&Fbfyd6UfLs-C>cYO+@BGbVjPG2HVi;nQ{fK`T*r{b z)WrBbP^$58!?`p(?$W`WKHqI|ao*a3!m5}oQ4Z&Q4|1O%?|{o!-+laW9sn1Q7T;{W z!XN+GAKy4JR2SiDLQ(5GgyE1{=2oNmeCBvZG!6Asu30j_iJ*-k`?8}g3|*NNpy-fs z(upf0gfQQ>CMhkz((=_}2Zt6v+0ib6qpoiX;k=t+*$}-5fM{HpE@gA$js@RDq%I)T;gQ1X<0}Ra;{XRu?&>5J7 ze6G)oQDB2lybkEq_Ebz)dnDO!mBWZj&>H)d!ou&l0B>^9!E?ZiGc!c~*JzH*0-n1Q zb4o~#_ReEGk&KvC(a)DgObG`IyU}b7n>fMbeNywF7J6T7_Wy%ca9m=4l2qCGEJ-Dh zbms`v^Dozr@GmjUE!wwLGWkIIV67xL$GeZ?XtD>hd#)WGje51YwlC}C5oOR2EdwML zoHdQ7*~YwCdy47rQ|ueK!&b<}eH6MHF~9i~wWNjCI766+1~F@Y5>I0)aWoC@hfnTA zU4!}@46)T)>Q;21LOQJPA7P(K)LSZ zJu8>;lxo{=TMZwNa*(sXg4I&6QO>LwCyLMbLiAA7f{tCUKxg7|PMDaH1I=Ld+k7oK zdctg-PeCnt)JbwHasdBj)E~nj(nw#qu=@K7ZJRXH+}as@iCvB?C$FkOnKa?xZ}sHp zpptJdzsTSde8Yl0f=h^2uR9Aw(J42LgR%h!=fbX!IB00z?Q9 zZmyZDJ-6~Dm08>>Q>ZX<8O6HzJ8%9p~l8zZpz{Ee9vMASGBuwP? z`$$m5Q~=NHun@C~Ws6;@kQX?3=w~@D~-pgcNaumWpdrf1DNEHBS}HF%r)Li3OB; zjEqcR;2ji#wOPzNEl`tHu_g<=73kjK8-g zq=^H^C43tfBIS~gMM2w>;P z-%_YlXo3Oj?y7`ktaQt~1sI>V@>5y_XBF6v(E63G*b!ca&Rr&TEq=^dqrFZ2M7u$| zwG4mB@1XQ1wWQa+`aEu}03{2AX^8R_Tb05F9(sN+FuX12km%eS5J<*2sa9?^0GCf2 z5CTa?j=U?vYA%#fkMcgwpR3vJ>h$u$qgxcD#z;&FIpSigepq~2*uRf&k`u%yFhozE z0HK)W|L_6Uq5^ye+UOx{a~V(Hi|Bs)N}{Z`rlH?V=`wN(-&WZ~m2b(C0-HiFTbhSz z*;vR$N$djmx*ZHAJQ0dGONVKL<5!3J!k4n;9kzk@EllwMzA+CUS8^HgsB%G5PrO4n zc|A;cg#hwSJ0VP5Ch_RfNiOqceHIz1;yJR~ql0(9;7Y%vBsmJuod3tQ1{pr6JQ(1# z9_YDaTSzq)vcIEDZaf09jv|nYuRxWE1<0%HN5o+j(I_zf3u(76E_z&Dl9|mO`}Imi zNc70|E1(e6?a1Vho@Om)v&#mhd82}`Gs;0@{m2{ev_n~HYV70z+~0m*&`tX%xi z^_>CmsSf5tD!UD~L6dvMK03owRYB+DmcuZKe8n1UEx}OOi?Fe#cwaC*mR;1eo28eC zyxcCA+~=N3Q>fs+f&Jbvx;9VMiCEaf7JM=cN{*q{sqxOQEPy6;7xk^=WIY{73XliN zy5y4|I5WccfFgWt0i>wNe=qF=Vc3F*dwVmQ?yaKa6m)NpfDqqC$=mUrF3T3~S{RK9 z%p;}-dGGZJ&dcJ#97`Aj7!lZUkI=DG_Cp~ye|}l^Mx^rfjVz2ut?Z-9EN6L6?O0ez zWbE0XkvvTq!~kmM>aA%)S1Ual*Dd;NF4ynZ4NPe?ogBF;?K|X7BS}?mwZksMiW^Xs z?va3Cg@@e&+(U*8=Iz>y=cfIFqRZ3HEFRz2jb9+1tu3Lhkw@RA;_yiJTLiY9?CbY}C5KxD<3l<=I3@=oG%71vkL4C^cD~If7dRjUvp@}rW^+kN> zZZW&7RtH4!!-=BU_gH4|L&y%24A3TPZt>nR^A6lypn> z6T~PFmG-%sdwLxoEPtRN3DAR;tJ&nhADc2K)+(i^RE74T6i4pA#VC(&JBv0+vDScV zrcPjASarY$NbOc<+uRY-Pog6G6TvX($SoyB9-T3Qqsk*9v}TVYsev`)_-6Vskwt)< ziAt^2S{~(7tGF;~D!g+nf+ve05U`_>7)a z#ze{jEP=b~j{Jw@>wW`B0eNi5PJ^fck}c>@At8xQ82TN{;J@|G!dI+4#>M+% zK!5O{hlePR$dG}dj7}}c^W(VFhvrl-YVP3Q5H2=mbFbjCVQY(UNrY9iL@eyFu5lmy z;ya7h{>n5ig@iKu%_%a92;Y~wiDsg&w>(x&54~k91y=%HK5ui)!!rj~nIGt^q^>pr zDZK}8+|9c!XO^8A%$+%F!T-hg>Sv4swMG6+_JwKZ4NPh&iLZCi4negdW<*K+JnNd4 z)dHh%7B>ihf^+vFk3C;%8VaEjGy}<#oZ&vV@^p=-p+`vk(56F=3zU|jQlzZ>V3jRi z#B8=9VrX7Hk;^U`i{I0PqqjCuy+pBc&{cg(r@y2Qu*+$tM<#$aIFNZd3a7=7ID~L- zaT`f&E&!%e7LflcchNVE3Hw%>ji17J7}a`}_zR3t-)A%BcePb6C)yfRJL7E{2o7Ej zsLV44)(h|^c-(yGXL_g_1R!2I{@5@d)m#*#=yB@0#R|D zZ(7+iQ2*m(?XesjN{S}E%3%$)8&LQ(TpzZ>y}tIV*HLZjq*;&@9hat1R>Q4)?6RbJ zwSa^OYyWuWvnoxgX5Fv2YhvR`N?^A# z;);xrQ)W*c5&4tE=L{+cqR+-z<~r-Qluxv%LWEBN^O|!R!w==#xGhZOWllMjx}?7T z&B3KLLaPAgUVpupx628QJm6ae#t)jx|9NE&CyMD}U^}^mTh^3aSQ-oy)S-*47Ydfj zR$49hu=wM-(++zk?PbJh^Y-pMmyf~3zlEC^JZEd8@NMIB>Mamq4oTQc;jle+Yoa(n z@am4O&6B_Y1?RG&KbXbS@cYYP zadO}_LFDE$3Wfa}o``M3d87WjE8Ig!Li~idN@!ml7j6MY1H@mo8d3H6umaT8f9?v* z5RnrRG;|i|$*xSD2kp^@-r6!Z#y58EMpRr(&^|UEN z9F2Z6I_)(oIOEC#i?^dwv$Rt*lo9c(poYw1FgoUqJ;lN4_z2;?FZ{AfL z(s_mQmaZL_`rsPj!S>$6a`qk|7GOgo}vXs2qS2;%?9vJZ;hz=e_KXw*IBEe?D*s#$1a>ua{e|@tZVI^qu z+fi0`6Sa^Fu$uyOxu_I#HfUGwy%XMXUkYY<2di(#Eg3v1Y~A!AcuJ1JYO|kXCZX*p z(m$&+u(qXsWa%pp9#Nk;x~ z9o$fAw{$Kl|0La_mG0hxZ{c9%`n`*h#LVLpF_B7tYTZvB$2klRFsar#!clCF{PQG( z>?v8hHEUsAX`mf@SN*%u%X#2Zfj|tE$9?}fTBWloVFxSvYhZcjl=KrN)Uf*|kL-(q zoNcwpSNBfc4R#hawRDg}>wDHu1W*|i?Q9)S)bF5y9dkoE(smF8%o08m)}CO!x^>Ad zicJu!_tpx!=bxC8jR(tkDZkgdprDK8iVx9jYyKDI$Owo`XY00a0oM@B1%25NXbx$! zw^U^Z$o+msBxoa8QVRGf- zdNYzmP(l!LY7NpNgDhf$jdJJDW+;$x^v=9TBm*oMx`NOl&R%V!W;Zh~JCPkc#FzP1FWg8 zjn%2I;}dkFY(|TNpRg#M92ZZDsgX~bA;D=k%!>KCW)!Wt*oned@j>U$zB4O>T1rEM z_pj^rS-xlp^|*MhX7_obh&ZO`std~Yp69D%%S>!G7}%`~iks=@84N&k3+*a_tRn3V z`wsS1XRFZrzB-s%%rHAyB8n+Cwe8vtU0!+?tjjoty|^zMS2a+zME{DgjH#EHg-{ya zZOhyz`lGj;dwZplff}^>guuj>mGkM+c4N8wDxL3Uu?N)ujtuA}q)qzmmUjp-jPf=5 zFsoi@hGXvA;iBhXlYt5@{hc2G9?zx>joA7Kz%h(Y2Nln1X5i5|D#wNB;=(W45R`S< zgFm{I+B|W>X|l+WPTg#Gg(Kq$BPrrsx6vTUc(glpbWi1e!M(b5(B91$gawBPE|{0& zv>AE?0%6SplBUA|!A9(0z^YHM9g&K| zt#q%)IM2q@L#lA7Kof$8+BeX`@?#`C$SUxFDu|M03}C-bBrKzTDqA$Vr2>dmNkgQj zC+XIV0Sfmc>{h3FNduVQ5VuAEb!7O&QXs(Xn}^3_F%_Xe18r%27s#pvZz7Wtm*@4= zwpk$eiz%c2fbjJD6lYZys2m0}R&CvW}xeF6SNTw$-lye-e` zq<9X&NL3Fsq3_JvNobXX&h~Qvr+0v)PgOevS@77`{hCVVr{Id?se?5)SR7e6=P-jA zenk+}LE6w#dX3pwp#si;?DwleQPwln@OwijD?s74WxOx5L~y8JxKZuq{La~SwT%Po z*-4{%EdEbohXj8wD6w^Bj)1(j7Z~CwT0S*28U1zDe$pR@lxXf`tH<~BOQ|D63}t1eXf4J4R6%;Yi|SG-1@*}yt}oUh!Pi|H1ha=cUb^>{5Gr6-ardM z@*?+tIa*i|n4f+LEb!NjxsFqsXpwkuJ$fzkl!b6&$_-aUX5Vm6C zsOvISa+IFRUR~!<01&&m4Glg3!7yRDoG52fN!QwM_{q3*EiN@p$TGnz?YkvER5b}% zfY|@BmJth{>IySl>qIj*c!-17;(>m^h<{yLB z@wxopfxD~r;=F_@NXK-!ytPp`xy$x&v_#C<%BbO?cq8bRb78?$&n&TkQ^r_D%zsMP z@x3JgVmE$c89( zm(}Psu;Ep)&BMOSr56s3iWcf=X0@XMNP)R|Fh1GwD5r^ZH4C^%;L zDv-Nw%1Y)yl?MX?zu9nJ#iIVAux2sZ`I);jXc1eC#`PYXi((yjkJ~g#GqI_5o2aQU zZZud-bTCpl@`_L@Zde`VnK2=va`4@69+(s%t6Z-Z4>*S1wD|!I2cRufeRV9iBJeg+rdO&A#U zfrU$v>IGEr;gQ`$hfI*uFV`3ip&WErZgLG)I)g9^9K=89Fr|W{e~C>Bhk#uQaFov* zTv1L*t}i*G-U$VToWAu)CEbS9Aqx+*F4p+?lDTL^cx5JWiei}%G`CNhk{LMo*ER&H z$zyyCtN6tS4p+if2hQv+OLl&39QIY#neil_j;5(SiOJ+}$NoFYGlO?)65nM#0f|4I zY>nF?Q~OlrP-j!FVz!d6uFg;k9MVsqMH2V4JijqLQfSh(>Lt1yB=4Bo`@u z0+q*VjxlY?wl2Z1m!>!SI4hY$2i<97Hq~g)e&zvMy~;OL@q4KW#|2QBP0?q_xJyQy zxGxzum2%Lf=cMzwP+G>@)Umza<}9{o53XeDT%qQOTrx%wbQJbS!MSQWjWJ~Me|QbU zs}|WQA$dLLr*?pvjHCOzpWoZs)i){pmLJ6fRE?r~mWmwxm2L+>4zWx;hCff?sF6OO zsR9kU%znN-Iz1@3@Ya3jy`F6d3^B0qC_A4C!lx-qsrx{ZW&o@zqQV{US(^ce2Bl*^ zi_o+w@s`GYN}gwf6K`Kg%O8%SgjkzuQwEX{W`Vm_$RT@EIlMk-#Bzls6Z?S}R49=x30lKbw za6nr_+$~g$YVa0vf-+HO8s@n<$zW<6_TwiCQ9@4#`ux3zv~^FQk~Q_owhAV4KBGw4 zB$U&j`ab)nV7@%S-aAj9OI1RtIMG=n7pUuA@v&{|2Eg? zLOyuhRT4Zec2oV(E;y8ZryGs)JPMo@^Kom7>G9P_HCd}?&Mv#A%(Qw)hi6D)!vTLS z_R?b}916HGI_!*I%y}~Soeh))ubZ(XC`t?Q-W$M>chv$Xp^U-PpP$h$fP;mi6-}(H zpY@qtywzIrgfp{3URFEDAZ7V+ohpYTcL_sLTx{Ls-5^T$`Pzz^pG@vvj9vsc56jZO=9-%gT?07 z5^J!DLNlT~a9xhjz8KrSl(G%KN(&1bZPDk>&2()NXAmxHXTwVTgnon{bkS%9}3j7IB~*v zVJvwlJm04jhTV56<;M?@lrLYyoSqqM6n7kbAI+1QW*!q;{V317e2rb1;6}N{=o)$% z;ZjSd1`m*$y$_jVr&t^W`9}vhia+YL9=Z;0;){5cmVn)k1GuYDa5Co zFRyF}v9c+wC#^OBI5@BR06MfrW9Jy+*-@q3jzgLCSH4ARbr$*4H)Eevph=u%1vg)> zIS=YY$^!;>ke;vzwDE?^GBaa8dDyWz9_I9|+Hnym*ExR7y@oJAslnEyup-~pMY}uG zb&6y840#0w)O9;f5b(;E&fw6a@?sN<7|MvAd*qZoHlr~9`mDi)jlTC_A^(pHkun;1;VDM0#0M`AK0;9ACUxU6 zbTTW^Pb^AA<^RU&K0U1^KEMtr)-0P2ZAfPu|6d?lW_qeqBWy8Vg;bC|wYuQpSBA8z z_zstW@zsWEOsQ>pAmeIN1GwR4I#2;?{KZT(f8Tw_3z~-kmcX$RLH%{NOt&pQhaDsu z2N)E6qc38QTwNe-u!xbVR8tC2B=?0mT|2w#8KGDyaIk=XbOSJ-%S!?~{8& z{HCG+c^PECZ*jjyx77!;a?zl|w2KEDpm+?-zp@YK<^}|DZIG_LIlK5)qrzpSB>)LV(`k&PB(;wzJ)Dhl+cJHb8_3V>wjF9=?eXN97CFFzi{nr;p>KaWr^sLuYsQiBb?zxziL1KbfqO#d zGlZPRI{l4bM{t!9@ zZEin&zo{e(v2;3_I2*n&x&OG7c94MAPC+w!RaD~A` zg84Ju?b~h;PigDTFS~7JsxL4{DpB`_Ring#lz0JGMaCVsG>pdZdU3){zQ-ef!c_)Nl$c112D#J**;_X&#P55+po~d#(Ta z#5Xdw{FLj2ThDp^IH2{Jhum+`qg&jluN0~ldxJQm57}@TckueIW?vY2hW(woQiWD6 zP2rDQVpo8*EljWn0&RN?P_K$gXmj0yL!W6LUMLTmIR;*@%+r9G!Aa7?L*=7y)s5A> z3xsgk&MW@6={Wh=9c-9bQdHxrI`41MXZ8tl zINEYn^OnmSfQi?)T-1jCb|(O8Laatl{BZgJwJGY9KE7!BGu??bD^Dp!EwMBiJC~2W z*foN`H4?m&qoF4T-Suul@9l~I%A`=7{D+Ezq7*LBQVb^;q7L|Liv4AK0O9?1SS+v5 z7$!#Qw-zOvaftO)iqhMuk5HH26to6D{o8Vi9KxoTUnWooibe|&v#?dja$;YfI@Ptw z-&&P4j?5LYG0Sxo;_MMlMqp+zCJi|btu&<%^YDyJ>kuMt$GuK8PnX}-QR&Justn63 z+g46CSU<+!SLn`NhNwQZ;U(q@uUZVrBp#Jo$Xw>KIZ9r1jTljH*bKi@C=@{DVID3bVLnGDKic%WJA(C6)scaYA zZz?bjZ{G`llf`Igo{LDUC4e)~^;gXes?52w+mN0FR4tFXNpF2fuEsEQ@)77S*T{c; z;*)RLA67=+slQkt-1UP~GU>ssYJ~ytYqqv15t~wcPZW!zgT) zA_j0XwgCya|Mq@^X-iXKXJn(isG?@d3d2=SxciCLf)2$fN7X$Ae1@ASz!#V@uHsl1 z7q4TWiOK3pXTTppL0r0c8t5nQ@oVSD8X=z(N(Q#SIAGAkFr>|@)1Jj+fNrTe*YiK6 zc>a0=(7Gbzy-b6(Nj@4E*t0fX9JLk^X9a}**?q%ngfVG zaCypqPDbX|TMHSN#iLx!6FjkwrT2S?o>1N$ZXj#Ju;kIYy}D%a=V&x-96 zs+zM8>Ldi`(_Wa%L8o9T#9?RLTD=YZbw`E$X$g{MLjl%XPc2HIih!G3SnS|BUFZ?s zzBv`TMLO1!aF{Q?fdaiq)%8WhMCK@YYI33dL5n%mO7&=G+g*CLdNpRkzaNwTVy`40 zQWwpm=9z_FV3C#NTwL+BQ!@t}8jtYc+nN@89;d;(Y&yRU05I>9V1<@oTsdN2NNGJr z-Ojb12z)7j(>h=|g}6h>iqaseMf#?CZps@1e19kXw7x#`Sh!2rz2tmk_QWkg`=-ZWSiw3*Odl%8yBWqETAE2zS+^G*PeCcdy2P*Ie`HbKP-`30 zbe#lUZ%RUpj-CQJA=2_bkpnvlAiu5L@Wbgw6XB9DdycBU^p`b=4M`kKkwR zZ=E&+gssPo(X5L6SLO4CZkQ=CJ3VcK(`AgfoqtT%D3%XgTC3A_Gsc^ZX%I|_-B%zW zMf%^Zp8EGQb~V|T7{Oq>`ni(qo+sR3o0tq}`btjemX-=|M1s=Et2Zm_N`qt*>3%NyNxO*J^YAuap%q!BSSq6TtKZlRkd^RhpjfmIESlZ*J?SpQ99qn?!iL(vMXV5oP<=-O0DIR*VS*s7t$pT$AwgGP zBvLAMP$CdIPe;Kr1eJ8ur9VV-Nfclmsz1Y>c*Q*7*lxEZK3QBm6E3eor`fAVhUMmK-4_+(e^sSUKl%wOL7KTmfw^9&I36~1 zGVoz9TTtu`FH_z{mym%8D22rt;}9a?tn}S6F1CK(Wf5KqUEo6+bQQ&+Yz!ZR4JCv8 zSz@p@?ZK4(QxYn+rZx%oC)N8X5Hs9m0Zq_G6r_GOVu8;r46G5)&}zo%J>pT6f~;|k z-toZ_WJvDCQ$y72$v3Pp;pN@yHg1YREoRbb`oR1>UCU_FkltIxq?q-yjZfkGrhUu! z(}GLEA5iw0O;svC98wS&0=H}nCac@}D(|r%<=7=q5?a^inpj{8f|yo7eFmi;jk#-y zRKny0D@Fh*N3oEdJFP-JO+2N%w~a@AIa^c0Gel=6KDbWR%Z`C=9{gri=ITh}h)`}uySSw@r{<8K1yj3h2;j<^ zXSb2}YKSU*ebZBqjlY18#*VaPagasm4u8)Rhy`+V0EGnXggaEXxiue3zie2~3Rk97p^`x%%;=*nqQ;$D^A>aK2F4yyc;wuyetMv_ zDZC8??ILk763_nV|H%kRFT7`@qH3dhKb}0TJwnk8UYXynul3i5=uHGmKBI#(g}REG z(NbvT>#(s$ZR|bg>pxS)+MeTw_^i@<_UuUw0PbxnN>upQiK{IsdLTIaR~izxxZ5U) z=0Kvt>ROpAdMyfIc0BWiU=5I?i%8X2uNq3)xtL>)nEDdbb1J(RLerBYK(ZE-0No*B z&I3+bb&i?ex-3%4nyZPwh@`XAAFJf(IEy*GR`ay-gZCkj8(y3{7>kj}9AQj8sW~zY zr1}kv8SR{Wc2~5R2r7T<;JmR|JGXn&`1sY~2SiGu4M$S<#;&O+Q>i`p!F{IXY*b(H zAV4Q{fh7_OY%#*z@%rh%$>k8Jpd5K7P0@zp28pgx!B_6)2DI@xtQ1U5bMN+Mqatbw ztgTy_Q+&FIHwsh$!faDVTvC+7y8y}c7G3P;dX=apr02S47u31{k$kH>U=dYWmUZjY z8jjfZWyvrv1~6-ms_CF6r@?}bTNMTRC95DOzOa64id>8i%Nj4R<2QN?mK!`HWX*h7 zx?~BI$zZtgc(G{#|4$PaR$K>aFgNTl%C8Kiy}^09m5mmv|BTKXCl`OXsX~VPef2x) zh#~bsr|ebSPumrSMqRG+$%a0k_#mE5Vj(XO#@=#Y7>-bbqI_7$wvD>X20BH4Yh(yA z;(fiN#^*E9v)1_(WC$KL_{fXZhQt-fdoPgQtnW1D7w9cAFq3xtSG|=-w0?q09OS!8 zDUvyN1jY(c$Vjz#_CxXz5Z%UML-{jQX$RIejSWSutsI!sa}Xb3b%^u`7Ud7Fud^;_RU4$2r{mr~DVCcbl#~RVL9x(Yo7Vm^IeZAnx(+M5 zu=2=lPBYYNRPyi#<|GP5F4AFsQ^7d!oM#9ZbEJASBgb- z;z5YH(sblA|2@Tv3E*TxR0rjUEs(Dpb9YLw1Q!87O7-Jyv>qUcvGSH_!RThKGqB;$ z!(X3+^LriL&BLQaYG{l=uTjG>w6A7Jc;x+wbCW%i9ji1C08oL^9Y==+nMm5ObWHn5 z_=l@D#>5uP_m|1Cp;@%>UITf+>i9a&LIdJr8i&my0dwZEbG%1(f+_eM^)O5!4Y zM5$S$eo-qLE)(cfitEvqA^q%?V9-}hxCSeg$r4}Q@%`>6&6F>VM{D#qloz5*ULIO5if)0v7oR78iY z6sNZu7Cj_Ns($$s!!b=PdUDi2?>+w%znfRB(e>duTy5D=E3{nq;U@cQEU3NZ&{5TX z12&yg!pIp!pzIk&VU-rx$l-rpZTAz}BT?HqkPK<{ZcZ)?-TFwSd9N*DS{eEaUY?=+ zy%s@vg2Sx!&+>s48Vv7oFXlh6b7+i;bf>pxs8l z2J!ZjInWGB`biq^_Bz&!F(nY6UHBP(6Xci{FG3(OgV6F5T`3y+eAb``VQm2wu7~UE zJGE{?>L4gxXUHZ0SB?qUL!*^Ry)F0*1m9WTB=|8f6cta!!$T^oNDIsYnUag;xJ`-U z4TZ=kZZB7=(z*wj5J)Vq{h+y-_pExe788QX@iVJ_wt58D1p#J+Hw@s8jZ}Y;syE^{ zr?Kly`eqh6kfYASwk>0a_>YVg)nM#QbaX`cDwt|Lzwka|0!Avny?aZuLc1fry3kId zP#5gnW#lT#fS6}$`;lmWlot^=$X#V>@Z;28tkqF;0|4gF+?fVja*l(k7%buAzGrFz z1KYNwIz@j>hTQ^0Sq%U)Xp( zYO<}vIB7Dq&|uxf4Z{;4_)rl8;jp5&5U&%BDBmfBCEO}e^Z4Ft!1~`)hMr4hy5*>Tid%jL`#_3eZQl;R0jnC zp?xkFc4R*A;*<8GZC8xka*Av0;|+4a1L2CSFJ%!YfRP_2%vTl)l9%U`OT!>04{N=d?KMZv;fe;KSSl9)GUQscfB8PIKDBB_fm;Pd2u!W@OeS{niV#KZERG0GQkgq3kKR~bfwA=SsR^XvR+e^o5-j6P* z*_-|ArGO}sz1pmdHIp8cCe*BCz%j@a6QXwH(p9sMfE7XDAVso%LsfbAdyGpQeIOj? zT+2Y2Oh0@j+SnI-m+@AC52D`~{=hf37lk5TRy%lRi}*W0yQaR@I*>qs z_XaCiJzkPUiMGFg_mCvfiMM}gsnC9@%F__QEURh35=7Vs|_ckprHP}UFsoSgUgv`rzYXLm$dNU=jf z9?XbI`z8VCCGlvN^m4tFi{YfMTZ;t<-!SzeMR(tpds(;>AW(25-n(KFeJj+_K5cXs zVQ22|+o>8v1jVxbEeFIv@2oo@*-PEO|~>^#;79g5604#GmMObzhZv> zd)P(CgtGd9M@1F*o~oSCJT!S`*$wFW_b^p7g!xG@kk}q6V3q6auB11#5j28=ahMtk z$>bZCvZT0(t&15+(m&5E+!Ru@bpt}es4h>BT%hWY*EsKR@c!RNOyAucFP*BC->)mI19 z160kTsh(ih4=#gp4uc!QxK%f66cbIphlr43pSx3m*E#2S(86vBjl<7A5om`$2KC#1%Hesx-|}f$iU#3BT^E{d_m8OI^fUs7A1y7dVHejPS{Yebo5uMrY|_BZ2zt zX6j}q+x5d-f0xmvo9%ufwFW|GmMz~!r8TQKOk+9me#_K4Wc=q<_ z91ePYb|Q>hQ~UoQ6d`FZ`LaJS{`(t6A+z z&>#Q??>R+=ykHbTius@ENoD9eq4TSCvg<1k`#o)S`*qn1s9<9lMyoB`I~YUUU$Gx6 zs~Y53IzU(8Qi-Z!I_7tV8}MrhUVb0ipPnZg)9Q^tBq-a%f(UAPH)Ti%>QU6J9wQ~ zxPG#|CPx+z9GCB{$0dlrvOF>u^)G$*B&qQ3lfw;!gBcimEaMxJTHVuMYDuzd^2JFC zb8+c88Q|+8Q41v$2Xqd=CY$raeT$lQm$0iL92|3c>Mu9LUaN48avmKLodLJw3jbpA zdGm|h@D7yt^`IZ<9}Gu0j=E{}MO6xCQI>H9Pb3qF)n@7PY}qs3xs$~}IWKJIO2{!Y zrxB9<$ABFk)NMl@Pg{o_6~t;wS{_jjZ0ae!RqF*C4OAy3>D^41I!Fobta|6Z zD36?ihkd932#l&_OeX~B!T9MOj$+XB@|nv%yE0c13Zwt<--_o8=z!y{qEZJXnWX96 z$7G;w$`%rwW_8MTcx;5S*%+m4Lpeq7>S@BFj@D7ViBUCfK2Yn8cpKRNo z_HLh5Y!be;5djBiRxwL2Sl!T6iwswIGr$R>qAGed%sca7(E9|l79rii1O5^Q!v?`# z|DuK=EU_)789#f;+4C&mR4rZu2k|St6j4K{4ty+9Bfr8VL~NyP5}`qdE=$yl2lQX+ zrM)O{H@kn@c@H!MvC26lEdOL1z+W{Z8zkoU{%TK5Q8H-??l$%zE*UNv?A<+G0vLJPCp=omHrab1+eQ{h6gLN)aeYF?a5`@K{y?4guk zX-ZMY5Dgd=Rq&Dc0PP71Msb*G@x=MH$G+F`!99!*A2L=I8jV0B4>lABIw)Spb&UO? z0`jJ-`@c!t^@CysBDbVi!&u_tEij%yi(H+ty? zf4lCGj2u{v5f$o=Tv-v_W}M^{_IUj4sDQnG>tX2Z0c3L|6N%ebf7$Vh!m|7&r>Jzs zk11Q>@{gZ)WoGQoWEmc9o~8V>Rd*H1XyLsW zSWrxbw}ls+%>ddR*p8%!;f?YB2jg!?WL6j!)fGY|(y#@S2O(_4e*Yzqd87Z5DA{10 zivfU++PzlU##yIEWi~*|r~lI0tRMwjBZjM|xh*QM0olom!~#(br(%`Gil0}Y5vdF) zikHW&3UfRyDl2+fPNDMF#gttKM?o`t+cVC1&rZ@aY1$^leLT?clC2NqHj_G!CKw^`9!+AE^!cp2*B+3Oe|#H#;GGi?1C1p&XpI0y z7}}u00*icWKS%UH!^c1qTAe!Je<_;Rr|rz$OF^C3^66ti21t9wEuq(zCOXtZNMT_~ zQO1b%zNex@tw!r7Aazrx(1}k=RoZBdqdYJytlI&W3a71_njGlBD~5lkuUT9Z4g$f@ z2giBP&~W~t1&j}}u8(qgp_h8#NCb0ebb0VC)yihYkI4H;8s?nW4@tz~Q0LjCS{ztZ z|Ne3N1=Wx3V6zL)_rM-c24I>boD?7qd8}&(%6Cjz#Pv z57I>C=UF>;1)*}y$|z{lcbY-%!;hPm4A%DgTkkd`)hBuU6OPCw9D`>27|_>7>LE2T z$%J_FV_8x#7Fn>x1u!fiiM7%27HT6!MnHFvahT%wbb$*Bo!L{(LDuMjPML;IpV>kKRwvd z8?o{KQaGrFK01ISp!ZX`W?&cSd9Dt`ryNOQp3(l}Z(HTX9!2yQEdJcK>!TyPdZTQd zRUWGbZ@K;3xjN1k;+900Ut%{>Dlb&(?|~`8v|mfGXKM1T-PSS#$I*BAPB^qXRrv2bmuSnjjFqX25yP0> zyvW>?cf*xa8qNz%BNO0}F6k(8l=w#h3v+(pzM{WQG2D0&5M2NXa+zR~Cj-onqkzTU z^@Niq41Ovse|sXjTku2D*q?YqHS$Oj!hyc4{~3-1Hl5z0%W82-X$rb zki{d9jY^O50!33!Wi()b*eoq)D+8**^@$gybqIb|!RiF&QxNd+a@TbI*~%SB`|X~;jo?CoUmX98rehf}DnavGFuE`u-?94NW^LtL}o zoW8dR=?sRErd(q@FKH2h`>1EnHjD<{RG|3SFw~m5UB?8G(u)h;70%^BA1rwdAAH%E z_ihZ{Lh2YGVJdU6XZyU;vT_P@XUVGk^mZNESV~j0V&rlkf)|k8P+b z_`7}W+$ymahsSc!j0gWmix9tmhc;KT4ZQjN$U3NX2(fwV`w4LKK^Iyg)N^_ykH9B) zVAw$svX0UtPf@(R9-!XRsa$#tnT(4bjVrh`sn50w*O9sWLsepQ3G1qcyT4OGr0j+! z)Y#7}v&)jL3&cab-*o|+NB@-FPaTrAzw~618uYxJB(+w|tI1&wHh8pDOs~ioa`pb8 z`gsFrDFdG3r)puR^zolMNMNw1RnzAzK3JQw4g^BqR2Le=!@WU6c7eA`NqMU=`fa9G zfobhjKh6s6bh<9^#1PuBi^5O8^NF~w1L#ISp;U{MQ*JR9*Zn$0I(*z>V z1AQMHFaw>2obh@ptzY9U@gbraCNgZ2msD4O_3L1c7zO+gayl7Z8FR8siq^!rVuv^# zsd4evJ6l6@{OS=wn{6n#H_wiI8~Xc>H=4bk8NHy~S|yUp-_elQ1D^2%Tu^?$P|yaO zYakz@_U}Gv!X#M7);GPkruI68fgtIQ+&y8kL1^vK;yIm!BV3x%MB`)I%WeA2X~`f~ zywq%1wuTdLZKlMr35f3!1g}?dTiY3jn%Z`baQ{A`p6mfnPh4&e$}(y1?bAS{f2L$B zarmdEL2_ss-{4{Nm5}ewVjb#!+AaKyQNZP!kysw zCLxC27}qTniJi>)f$(0Xyru<(-h)Z(~g zz2ObNbV&om^p@QjVrKM-$j`1N##7wB=zdJha7jX3AV@s$BOrTCNF7Mb2qd5R)l^oHU8XQP`t-}(Xk7ww(_az~M$eY~~27!hd!oes)0o6CB z3Owde19G~yPu@8I7lf9mZ!7(p<(~1szvhw8*($;zbfI{E)j$32wnGku@tJ(U z^WB(siPRjKW)tNM>-+-4KSg~*MW1XX(gM|CQ6I>97;CZUAHEVu4iWmG_|@be9J$}{ zsRKgNJrZ2a$^gu!CL3q(hZ&Ny8irOc4L=)s72oSrT|o%8lOcNOxYA3*Ye)DXIgI!+ zs!ztH_DQtxsek7aSqyj1nCljxPJ#t!4)l>%5P%dL;UF_rI0y)K$b09 z1&X@&qL3Lbx*Yr(av5A6;Qnk1<2v-Vj3s8~tHS%)`3x$hGL z6Y-A`wXH*dFOIXx7?cPKRTZwkUG|>`i`FrNLttQ%&VIfGGB4w9=9$CkPMVM`0*hJ}<0L1_$Mm8&lgELa| z0ab~i#`I?2`}DBTeq~T)5;_>9rY;y!1?>JdB~zK6+*@Y;NRoGzcY(njOOJ4l{ z3PCDf{id%HQgE&|0DTW%Fa(T7ybeyy$vC;TF}5^LdG8LtboJp>@4!)@BfnO0SNcifj;BS zq6_kxxEUt{Qk>NGe{yDsGyz_Ue6p*0<_4MiZOmV!84Yq{S z595Cup1Zzxi_^u0Jk6wT9A@mOI~>b)78_wecsWZ^FELzbj?RyYPS7_64*aNupK5Wv zItrd$4qk8GV`{bHYwzp|s*hDu_AGJ3PaqPs)syB_P10eg7A)_83}Y;@&^Yn#+?O{hkh-0x5Rv6U-L_HoKQV6Q#T1z+fkG%6M8WRBbpm?Qo$pvxj2Z;|`zRhH9s7%J9$F{Z4nytLN zSq5^fi7T|eH&OLBd!+?Jv`sVXpv*DmonhVWIp=N66OEkQ(o8Z_LugLg43F7ta;WbqA%^&>ze0*A4GZ0ziTt?}1FXnXiGXr4U%$beXi?7M+E^aabes#s%m{asZ7=X^a;t3#)i(lYz7!F6H47Dc4 z{4`sCfF{~Nbk%+E@t_ZS>~fFz4UBRdmy(UQ0eDN*{}c$)HSR!q+b!RByvnY1i21?6 z5rwTPc~0YZw-D1HojagrKBA0c-{2bd9LO_sB>V0xKk>GmWEytn#kiQ9J5XPA5`R%I z#E2O{M!EpH*pFb_y9W3vR!$QI!dzXT9pwl%$?ol!CxLc4}7*XkI^OJDxd{|H6KLWiUyLGqkP}6q7K*YwYYHg4J@4E?3_Bfo`*NB2Z=5O>Y8E{QF9z+0eKbOl3-Pn*CSc99_`?2_gyqRhd@(RLe@i)( zv$R;*(s0Bf%+!z`%W#wGS{vF~rGcnf5j~xu|2$Cu115Z2Ggiu>qFUU8?Zcz$%g9kZ z{ikE=H&d)3X}7`Vd}*nX93Q+Cnaw7@k#&1pECoIL>G5x%AXvu+VED=$GER)ww;c_G z^<-M%G1-1MoDBXhTAH`junPk243>CgM4|14+(*sRgWQM8E5V8;s#ExJ~03?oC zkF$(fn=z^K7@dW_aEYn5~;hdH|ddxq|7o{0TROTmaUip8^~l{ukvYsqRC+ z)EyvU{QxZK|MUek>m+$amdm7ak{3AOTQ!Fos>Kf_I@%eA)IW`%ITWz-JFM?-o|5A@ z{O7-!l^GOt?tH{zKcG*s;NOp*5NF}%G&=e_(_$0JVC=qTj7n)(yd830KJ9b^n)~^- zA@vrUDmr8BRJa$YauG~~H-vvI3lkw=AI=-}@G+heg|4g5?ny3o$i3iiP5flB%Mul> zFo=9>5WaqlhA|XUgt3uMtGC6OeJ@(1(4n{I?ge+>8j9n_@Vr9DJTxJ#P3d+2?qIgq z>E48`%;WW-DNvRd+fXZAr*2nVbN|LlQD=C8kk=++Y#mchaF_T! zS^o+!_}Fuzim$ZM@)w)>8luYp zt~L*;XcQKEMP@E60AQV7h>~`I5caw*V`GO8y3LBiM{KW`Ti@0gQf~PFR(uDIQ|sjd z#ReREdag*4MI72y^h_K*AeAotQ4Jv6y^9lMxA3)4xiq4EbXAgClZ(hTQPaXn8>X#|@DsnSGWSbX9)6REpOu!O<(?ZHijzh;iJb}q>SpmxA1!0a;()&ezpJGOxf zpa|a&83RRPv`!U&awuU5B>udF#Al&e+2i!{k|u*5R4*65i6=8Wa`AdW^>vpy%-kbz zu@vg`!1n}Z^OQFU$OI6=!bpce*{_4%^x4C2-+#m|B32s`IYngcY0U!mZ z@h+2#{JH}TeaZ`S(tmsFrHMNc)&kwaSat=*P;5OSBuZ7~N81r32jWcu7MU(BH8AQF&5r#>w#OF|sS5a0s zk52pB_N(UH2l|PKCFV<6dsbwkhK+{m+Ak5-1MxZj8lj}EJt5EsF^ z&ydFXV5EDOmPIf&g-q!TdUc37@nE;k3y4QMD&NV^Xi!@}C#XrLoVBgwX0s6pS;Xml zM)pf$t(3nhU>_F_p6pxRM5s%+svUcylLc1-&r1R=3f9rL7f6zeC8YX|`51LzoqC#4t+GV zfo&9(1nF(<5yn`GHBiHpw2V-NrZTO!t(EE0Z)$|t$v8*Eje_ zlkC35SK0>0{u7y_6^UD=yiNP42R;pLtAoKUFigar)|aG&iP^%62b zD+@PA^{q%=Unq>HGGwClO5Uw1NJnBARmK!T$2QBCKm6z8mEhxvpX!5MC0CI8gG-_(b zn7(PTY^vQC1kFO>#m;wbMY1}s3MkrGI*rik<8(W;qELXAQNAp;zlHj7DCl*3-Tj;- zD={~S^k&U6O0w6~6p^F26GD>$GOV+Q1E~m&zh284d)}XBruxjq*;Z-T_?}%8|{_E z3)CeH(`wr5UIX8|{7)!>jV9#l_Y+$B2cz$$R50_R#~?3N15v>c51E}TGmH(omeHhw z=yzfc`bKH)bfxM&3CIJXslv+Aurdym)T<#NBODF7W@_|M5pXy+$FxPN{0=RjV@#fs zsLo;vn^;!Q3_NJJ3AJSf{zsjUEhPWi`3qz1@ZS8bZ&lD^v54@ND29DUy0%Dv*5Li{ zpQf(A9rM*l!u(s5jRJ~{wTeO400R(6p=PSyW-vG zaLCh!ZCS(N*zu`A>qK<;9F{6PQgidm?}c~T>!hu3s}bd4lnXJQTDm09Xhjwa(J~pH z`|!4Pl}Z$&MZHF#AD4V7O~RY&P8l{~N`Fj|*;yF@Ha>5xK?ko}?J$!VlZf+i&HJTM zf!YWa*%(nt6I1KSSqD$+XU!?&KfPN9&w2pQe%vmD~C|mzPeUDt~TXaeEq?i7`S8Tt?-mpTFCC_ z7%a2~IS&=>cH0MZp8}vAa&-s)=3QRKc$B|@gH3lNu6n)^2LH!zX1ozCth&LE^V~S@ zOn&_n>Dm?<|2+|OASYxNbhSei>W!di1@drCh{|eA`5`}t0WSvYKcx@9;X@c;mn=E& zZVJlB1m`wp9$IhHXJDl+pTS=Er$1*nfA>ZwB)``o-8;+N@NI+tK{1`7(t%RElHUc> zmtHDCSD&Zu@{UWf7?!O!LMC{W3Dx;SrnuYF6v&oP9({r0KZd?q+3m)O>INPCHVnPltuk6Vci%-}zWd?<2HB{QE^}8c=e) z(u7C!lIvCmqZy2MBM!>!(X~cWZ6a$bPMda-uh1`Qs7A1t!%A75M+J^Af?DJ2MYrz< z+mK#yUgk8^yY|(e-^97VO-TPW+pR61M*B+HUwOK*C5`o^{1PHq90(~OW1%Eb4HE6m zX=ig$=*A(wBt#F*Mq0GM;#7FXe`1Ug&9RXS@h8>n=pb%4-bB$WE)q1z!;fEX;8t_1 ziY6zuO1{-~^(j6u1cl#5rJicHf2E=+bRuBhKsUjJpJAov#LU;as0z;KDLSt7v zH~V`iD^D~-mN1>~Fg+{ueP!MF4w3Qgk9Mri?B3;lI=%q9VLFdw3%d%zNC1*NP0|jG z7B|J}$hG{@hwD<^JH%-OzAb7LMz&?>I`$ASG~yV8 zLGY*|+LND7mMx}h0E4hfl*rE3^1J&ehd7I31??WKfVd#cMN!f_jCa#cVxPcKD?2z}?XA3S@k( z0-h%qmzZ|!OdNz}T0Z*4-FljizyI$FN*LE%;CO~z@z_(|S{*!q?!E4P_(R}QHnrNF&Yx`c+!_=h{VOifeF9M{-Cm(n1 z4yaY^f1gkyj}C?ijFF{ml@}b!%CSW%#=Xn`U=+KepxwuW_cGWpp~c<6#Y@1AeNc=r zSLWNA(jrKg0JBD@yOr`u1N`5R7{tg3cFtR=>ofvF1iKLm$BV*nbkMQuNMM5)6iMvp zPKv*@*tKfB!PKUByQI5R@62jlfAW{IYN!T=IA@*Mt&v8XNV{yEvzN;V0%A?r5%C0M^*ibp2>zgseGj>efai|F~ zw2q;TB8nXCKGi7M;?_94DbXah;41P_3A*QLYNtjjNq<7|DZW@AHhmq;QMm&M90qbz zuUtv?mdm$f3wm(6?_;EsKNBE*jNRP;q$_#dWlttx$xDi^TH{IaP{Choj-2GgT?ewc z9=|8mmMEv;c?!voO(S6H7sk@#WQdXpWG|+MVen0zOeqxm#LZ6@p+>Ziqw-h!bRS&_ zD!X?O6b#g`8^~asw~ipQvgxly=z}|gh8_p8b)yoBcDN#2oXkh5KiRetboh<(!m-jRAb z@GoC>N~mcs7KPky_}RF>gXqVRU5gSXd%akx5s4RRQ6eaFyv2$2lbymR-$qAe3{_)Q zN36BzE#xrK-GyFSA@qLn{_%@VzYQvp8{W#<*Tz{1s2q%L_u^qc(2FDbqYiw8_GZk} zK#zl-#ikK#HHFyYT^=-V3{IBuD98XWD$1m+^p@R?JKd)9gQCFO88&HClls}N6AMpm z(kEU^hkbVCaQ5SCcwIu`!zNX<0~}~d0-2{Mt~b)#WRdT@YZik1lm!``m$;KAFL>qo zs=}Q|`C32}lH2443M#w8)Pwhb;Pg&guHrm-MLIk2JW%FQsi+EB5f%wk6z-Iq_Whp? z$Y8kTM^@bV>1|n7WGoxSs3k$+?Izv7M>O?69hunvLa_=6G2cB@d_JZ* zm!HW>fq~gODoI3t_wXS9>Z8eBN%wYd*DJjYCK;|0)7025mFZx`+iYB{!DlFU#OYw@ z7g{~`i>U>a(6WMIG<8oa&kDQ>?PjN^8lL575OX!j83i=xeL2>9TUgn1;WxY{Ol!#b z6V(rUJ}hp;T&!icvX;CcHn_c?1oH5Odg;bBk!19)B6oyy{L`lFWF_<8HH_t>@+Gf! zY!`vx@i?4eK6xih!;c$Qb|&e7KXUpAiv&nJ&+(Zx;nB?d?^Bs7?fERO7+WvZQzcqh zQ@iH`BslX(jGxi#U8$**f-Sw3f)A)u*xQKDEWK4I>-az|;pWJP#061PWsE_pZ;5r= z#YLj401enaX2+9E4#C#f9sDA3a1*4#I=})YsY(~Sjmxkiw2p(3u}-x+nh=vRps*aj zBEWGpn2ASds* zeSwtp8#UDBwUG99%`O-DZ~edjUR_{W-(PsP1T|=ye|gw{dXNp9RV%>=Jr2tKyLl2e zh*)JQm@BDLj>qhE*9Cb2s}D%4YBpLC1%oo5;yA?-&8Lt5@165?o`GM{XEffrtmsrU z$=mt)oqEX_R9>>gbbmn|g1{NT^9T#DXhnds1FDb1!{)jFzkcvTWxiI=- zKSR*b7Stg9D)4Z4iV&2$&8*Qs^vT!RBg8zaJigV}E6RBTkB zzxX^G8mjw@>onS&h^xq-+6YbeZt-x$IiU+9xK zMKxT7A}=m|@&z4RZ}z8#45yWTGJiwUYN2>rX%Zw=_9I00-gH(zQ$1?D(qF(hTwCp* z$W#Wf2oCi?A8R7A(US!{juC65*|#-kKe2yzG_^|S1X?FOaxiJ8t zI4n5o>x9>yHGMhRg7F{kpc~^Ds7WtTzKg2eoN1wps59v25*y9hS>7zJ%xMbO-pD6R z0!WoC{r}mDb6~->G=CSeA~yW+rhnvhiKUzUaC%pJhyJ1!QkU>$-MRTPKISmmQ^+8# z12F(qN?POt;)HtU9M-~@Z_V-~mi7{J^q~V}ehL0H;#pUI61#F(pdqNZEtl69fD7W-zXs%@s|m0(J^B;n=Wo1nJ}T~XU~&MUf5yy{+@H^` z?^VK;T8)Cl=l z9K{6h_sL&z(h_kC-tlDelxU+KV>LZzKYu~M>Pc`K#3J@oAji86*-6xhH_&JBN<+snkqxJb5?xr}TcHgYwR%eXIzP`R77)}iT$vWwwn8un z<3cNPPKvKQo^IV~RX#7RoLCh}k$6O#{@%{umv(RTikZ$n-jjVCk9eyas&p%E(7JEC z3XwguDxU?I6Z;$EVwE#ejk>0)*XG77_`p89l{jqK&~_e5Ns$lEaUJ;8BlH2n?XiHvn6l*=W6P?lcW|4n)(o;#l>CJOGk|s#2*~5dBK+CPH z4C;(6;)lHc5#8Qu)2-uUwudw&$O!dy?sr5#(F*3liR(UuM_A=yQ8@UflQM$C@Wj=I zNYpLhDh^35I!gc$7x=zK1f|>(LEDd(8pKpu4|BQiVnU{;0|Dnuqh-mIsLwIVdUpc3j5wA9Ro<5yxNB^-+~Y18ltthKP?kIcbu$#`B$U zMSjR8hV;QqB_K@EYTYk4y;U+U^kp$IKyOhYkv|=k;`^xrw|*|5NJp~Bp|o7a6!?hN z5dt$=t3uqe**wif?`;O+w_cS>O%4WJ8`L}rAUqmKdz+vy+t27N%*^mUJ;aZCh)r5C ziN&Vne|3hQ=WGCPdWY3!cxyltlYds1>owO~SH;mk5Dc8(-_efIyw*=%{n6O8yoTaehjueS`FvBMW1$j*31r}Be)`f@pV-qABEgb3Ys-JGhMp^Wm zaHL`Yq?0Cfh$V^X{-_b-nh%SLigSD^{p_4*#BDP7pT17GX>Ug1J0L+*;x<2aKr6p1 z#FC8i`H+5`d5q*4<{;wyLjRif0?!eKv0^L3&RL(Q5uS05qnQTB2)!P7P5fE1;{S~x zlG4c@iF9A%OclQ1FuWqvP#2*aBH=?@RJCu`tb?>g;kSVWt&hF7tjuy_UeQ2uhe1-+ z5GONaSbhK72VIaPS3>+4iid6Sx0kx3r}i(dBG6N`U>7~g&o5W`BYGMC4N?=e7IN5uC(MO%;VG6nH%ijXn2SdbkPKLBMHUyfFJk zFwK!^9WV? zaXv428j$J$;l-@9G7BCL$L2s~{AqX%#P&ga&^pU7d}|EjgKuu#oCNokl8Wk@BG3eSgVg&=W5jgdRU+ z2Wja2)@grdOmUa(=Lqh3mNhl55MgW$^fTMQ7nGXLmxQW;jpM zr4@DUgmWp)n2hyu2l5AW0NXJS)(-flH|v`BzAL4*ItDv8jDI|7>t5DU7S_-v3rIlF z5vwF++}A(seDE@($uWQ-b#LwI`2oeyAJ0c2uaqnri?>B`JDS#8-vFaaSfy;<8Q6lR ze@WfJ2&v4h({uRP3l0ug@V1kY9MaQbWj4fXQs2$G2o9in#%JXn4TKt&q(4P_JCtNJ z+tq88CyVo?s}?-ydv8&6lL$4?koO!vf`Mc2Bn9=}@cjKq_XOgc!02T!7PWm3s$aWt z5{lP2Tc5eD(N7x3WmtVa+7WY0GZC;laK>g(g8s^4N&22P{vn;~xH3ulg{ zro*2pUul}DtZilJ`VT-JDQLBpcx`T4Za;nQVK%l#suc=FOO?Z!oA%7`)dR$uq4uMd zAvn`I9M>f2(Vg#AKgDKp;bHEOd0bw}@CV)c7%lUPiv=6Z6+6&tx2ixrjIs3mJw|Ey zw2Xr#!J$bS_*dsBLv#M1yPEh74Yj;-B&1Ise*b3o#Ox*RpLHuT|mgUo3sfI&K^5U$Hhr2Q`k zwTAM&;M)uJ1d@wKKaH9C0?^)hi4~VMQ|~WbO8fUV^vL@6fxx(wG29M#nu&;PlYHS> zx&AZ95w0N&v8L)U_iu+vXTc%T#x$m?lPm94>h4373W~nmu9(Gocx(c>r}% zXSF)ka^?mT==&C4zN)LR7U9FdxP4G`1l!Z#0VEwL>>oVIW$Cnpedj)RMLDwtUUm(lZ_mP%YY*2CY>aX7hfu3Y?Os|5q|P#!$`tx`g7mN-7J2W( zeKuLoLVAqI>~7Q6Z0P^3X~hbu4m{e4?WoX$a?vd21jlX+0n%?V$vcXfQ6)egNZd3S z6L7N-cR<)h4>pvpJtA)_8`W0@y_|cGW)KK!2K}2vhZ=m!DE*5zGct%pImN9U-^>0N5r|u{4T^ai z&Y9f|+=F}BgN&?|OTERgTN%0=<+FYCG>Gt&40Mj#Nhr|t!0#QVAguQe$HX-1E($z* z5yVxLcE&WbL?2rkFo@D&oekJuDrHAuWbMejf(7!bY{d~+lX!V>!*^RoxWXEHlbg2> z19E93$iM0NbPLUOY7u}KqNKy!^!@(z#Rn7C)i7zF)z8t-c%%s$wtNDxf-F9kG9Hj2 zBlqA@7Uu1m4rt>{f_67COEpDFY)B)Uir<*V{OA!g_wbf4fnYkadf!N_uCtS2KI*-T z%jX;u#(3w0kBB~(whpxpn_7sbL-#V)A{?$o=m`hJ<))RZe!-x^l@7IkNS`|v%ElnP zu{RB|h!V($Ef-vwuU0DSLR}zV-~mL=uo>!YjT5nBLZ;|(oSfQ)B=rJdQVY+^isBg_ z;L1mDlLr=vU5`+~KHU7b&ZD9_efI?LhrP+Mn@o*Axmy()gs&N+UIhhuk5um7o1R<< z!IXY>(o2U8x{h+#j!u%JSkFoB)>e8FR-}Ort9;K|N4;cAB z%ZZA_jm+~gf`LdKxHr8Kxub=ivORC8vj)HKS?-KLErG_O)GWl!pO^7RN=1#=bSMwz ze{Ztc^YqLA!K1fF+Jz^`zni28K2A|uInR3fxvk9I}ywU>=m9QJOi#dQT z*oGv9JI!15#}Yi?!3sah!7(zR*0|XXnFZxecL#6ha|SMw0Ba{&dlYVvWGE28#XUNE zKPM_%mxz~%#y0Y?MIJBXGUq|$L(QnxP7X8}B=?bg;I!v-`%h9Yhbx|nQw|ogP*U-H zU|Qe97wizA=jfgX=|jF{h8PeRL#Zkea3!+O)K{3Dm~I4}=vwSa86}yOAD8OWp6o2Y zK|tF^^l<+~88vP{CCba^|L18UKe4S@V zquvp!mXs0ehes90w)0$LPUl?)j2IQJzEu6+9kxG`J3=U-Aek$zn072w(Mk#lRR1~d znkiFF);R{M7rzits@UXyAZn&m5`+q;_eF0GQ;6kkE_CoF2ltzC3+?LGdygcPo#YqE$-d(n5|)Nu%guJ4=+kb!gaotS8^~k@@yL zsX`K|ExFPn&S2`N3XUNj-8hqkxtNp?I8V*em-DX1i*!m)m@_C#iI3;taYPq@WPqX* zPNBbhsg06WZ(!Qn#7O% z&Qh?LlcMIz8d;r0WaE&!d|+Pv*o?>~?U1?@5g3aB#V~+W>Bf)aX)4a{G?bOT*jprL z0B@|&U>Im{LM@9ogPV{EgG+-RUlD}>;9{j{z)E;o?cC)bt?{Z>%9^!^w45B>eWkn1 zRDGq>j*&nNoc5{OPDZp-b<5;fs{t&RRfMg%5lLO}qWy<5hA{w4Jw&_MGyL4OzUpd% zIC@`R{lIH{^zem-98v8X`2j9?F|Ou)zb*s;!p;o@El;bP0~yu={-*2&s52LYp&A1= z-f#}qdZGCekri`pkbGf<=Nv(MpMPQnCl@tQ-X2bFiY%x)qRXwZxRI~cGl_evi=32W zv3i>9a}->35xrp-xqm};@n+KZYl3Ri89M%o*K)6UB{UcZK#>8S&nCF>g{$@U)W?TI zdT8oD)PCP$Cd@#F&eI;g17zA3Hd9MhGwwvIKjBO&%&A>gSVkRC_!WAKSC4iw_Dcv< zdW_Icmj4~@#~>ot%;jm)%2;HudLZ4J+04eUI^wvNXrmC3Ry@8P*}lWREHU^nyHjL(EdyoF6c zdk`3q2{_u+1h?2ye!Xw?rQ^COI^__4-n%e7${~{=YOO;}XEs#aZ;aEGWmeh=(W~8-#$K*XDsCi+6OjE~_vHk(89LnFRi8o_{ZZI7$~bp<(jZta z1=qs0!({}M0X>dh8!bx81@KWf2qP8+cDVv4Jq+6TQ)etE3W9h6(>os6Y|?E!aqv=B zDnQvqJ0p+&U#Ij{dR9IY#ew!t+)e(=N6EXCB^O=G9wkZ7$G7Y3j@&<0o+ADwsh`*F z6}|Oy(e6d34MD`8Sj$-sFz1;14ip?0rReQtM@KI2Z_dfBpw5njVTpuEC+#^}~d3+PRMw*E@I)8C623&;O-t2u&OId|?y;U;(fQjNrHzh9%u@jH@{ zX^cAXI8fYuPXtes{}LbM;=H7f2`<6SDeyRkl<)RdrHWK&O{{9*0T=v0*AtP}3zE+8 zc$}pAlr9l)V5nx8>J%Z#JsjP)ONg5tR$*(U&ii1+^qXxe?Jff>8s~if}<(pU`(Hx?7nl<6n*k5f<7x`GQ_eC;TdE7uNHZE03+oarsmH zhGSPw!)B}b3~=k0fC)b~<#QOwPnCS~-O7Dwa~ScZ1!Tsf1O$9>bPe%>iDZq*9Q+QK zdk?v0bM(wcG;h>ePKt);T1y1qwuJN~I^APHwKr^5N9;nApIxH0#Af8goGz%C(ytcuH;hmz(b*DaXfNEgIc$P|HxFDV5B6E~;EuNPx4PiJY z3(0fQeHA4XZQyQKS~OKJ+(sEuBLF?N9K{Z~lVwEcp2m6sX0e`kQO0$|Rbp@}S1^UC zw0Pm{GKuXcbX9AfkJ%92n7@rv?$D`a?d3>AR4g0%+?;uvte~8Chf+M-dG>yIPiOvkz@ZUbBbEhwiEr?TaUVVuL0+8_ zcIq$uJeYkhS5l7KqB<`#=5j)frPh!$f=pG+AgrsM_A8rmzfOv`mDTAtNg*3#xA5+S5IOE7zs0L;v8YXw(>VJC4El z_vhQZ&+whL?G*kow!73X3<>+=T_w*qjTZx4_W3pt?YRt!>90VM&<knqYn$-t{D;td*YV$zIY7qU4 zV#d<~vYW6=&*Tna=X%?bWE|H(rOw}0DVnso{J~DD>E!mC`zX4Xk)sY38_;gPj%WPj zm`JDw{Jz_R9*y30w9?QFMuMnZ1fSNq&^Vik{y?!1Zml5ws9A%|m6J66|6>A>xyc+^ zwRj=Lvu7YJ&NHscFF^<(YcA!I>>n=0#FoX!9v7t&P=n%+X0yL~C%qB&y|`9K^dE$h zIh<7e)y`Xn-*w;6KZ-oVg!FA2xUEH9>k8s=4i$X6&by~Zy$-ABHgwmAz~U%=HmYe6 zdeu~p&%mVPy4m!Wudv7~H&U;DU#MrgMu3f3v0mT0Nxq9yg@k8x(8LD`C6d-ErNd)O zW6BF;cfTkW151xxWF}38`d6)nBJHixnC8mAU_XYkELxF#ZV_b2jeXG^21DbZs&4r? z-Cz_B&S(7mMrjZDn8dQ)3+^qcsM2o$>}O3?zUN{;^wg79zJkeN;i_$oL$?SvrqE7A zeurFJgw@Y{K%H+%(<19-arc>8#PyF%rHtI^JK}cXJDDTX?$y?>Vw7Rf5JqZ1O^?~K4sAulRucaO7 z@iR#{e_4Jfr4P~(GaY0UH_Q)H{a_}?w&*;YU*{5W+U$jwDsR7QYLz`}8yl7O|5sAF zqSTW2!XKZ#8CuwztA}6sE|fOZOvdHvEkLcUP|`pL{%h}%ru&o77@AC2G4wqbC4W!Q zJMBd%NA@^fc%0D;+ZS_+KUW5tC)3I)Yz53RF}yOplRByfP*CM~vW^n4h_TT*pSkSQ&Su=3Li zh(&a&)+7Q*0Pdc%Yy=!QcAv>UlS^~{dK+wMcEE4{CozhZwl8{0gCz3P?6}@{g~omv zeRhbu&-shz^f%e#;=YN>gdDR~K>^E1VYv~K8>Ztz=b7irVDe!hDzX*n*5n<;$Yd2u z>;=ND5SDuJ^C-Q6w#F(;Mh1O3dfFn;(t*XY{QHux@M!fG$s9OLM$F$CYZI|chioe_ zAMbEjQNEhSmz*^!xYgo@yI{+uDJ^hy1LVTyMqV1jybVnSfqdOR#_PE~J=r7BqkV+5 zc^1gFAUU-Bzk~jY76RvVamC)8eq?p@|Jr(%8{2XHK&|#9%0-he>otHiRMhiWqR}wy zi|;uiub3kjIgnx`a3YN^+}o zZd-i(X*zN#Ln3rq#}Lzlh4|YU8;Ky`gfUT%$RMAJWGn5Ds)Nk-Ye)t`wh2BNyCtx3 zlbyBw?-heP5*XFVck~vfS!;eq+E1VMtob2_7xwoiLCx?`bG)d4_(9>C%3o~R$c|iufEfV>KdY~cg_OZdEw>B#>fvH7Um=y>C3uKJ!{~|f_b|`m7SV& zhd`j;7BC+08}c%fhiaN(C-^I2{H!Sq0affe@c~b=VgIZBILPVW2$g)wJXNl<7pUhh zFe1&Wh`-Hq|90jM=&n1LdjP$)$BZ1GLgEY~jeiUBjVYD>W7i3Tx!kaNlGWvejK}xB zR@)>HES|Iyq+A|~3)a2e?4G>=?Fjt77}~mTNzxB14iX` zjIdWk-^vS_E}k&&3BZBnwy8J>s?rxIpUD(Oe_>8bxMm6Zv%g{;%1TFL62>;|0Go;+ zW;|wTVGZ{gp(=tZ4ZT`qpS!l6IX8rL>e;=pm+dBIx%!q%`I))t?vqLJ17yBV`%w{? zYm~@2K?VTWgTZ?_#m4~7p9BX7-J|J%)PC_;%gP}zXd)wC=wlfVs&|FZ4+YIhPw#v< zX(xqI8qea;wi1gW!g=%aVPu7*1CslkLxDF&{k#Dd3kzNNO z001SoU$C3HQ)f<$h~CusuV<@LC>TCpwpzA@S}cbDkc1C4|7!jz6Y!0n$7IOjJeCt) z13rE|af;h>*kXoxhu9<ke89qjAY0%hawvkv-bTef zb$UKuw=tU-9{l$OxVA7DIFf_ZpH|)X4WI;(&v-t2wo}v5#r?VgSEoCPE}>(o46qVZ zB^ax4-YH+k`Mw+}Q{OC1e<8Zhi4kP`_r1M#CdM8yc7|k6G}Byk1cFsjSud7?3%Ed- zX)m$9`C=qjN%h2PK!aL2Y@V}QFij+Hc4iI3rO5v*R}Oz{jSHB}qNl4{d#i@lFCLMo zf&{%~)-YwGxVM{j;}Dtd@fW1Z?AEcsn0=TbnIL@GV8tiACL(k(n4gp?l}!thpdykK zs^$~V=Ndq?(_AJthcfguM+0#6MA#xXJEV}1292CKh&yfzIbH=1Wr_bxN`kcOW99A< zHr1q?{++cegIS3JUSSHfz(prb7wPaYcJKM}9UH$T_ZJGsM-#mKre6ovtNr+ca6y9c zunszHmpg1Q!@9Q7s`S<}I%=H&Cf66hm7bm_x$461I^O$pG4g1Uvjl)9(}EKbucgO?zhJMNaQ0x(67n?>iQcz!1U)pHVB zk*)eE!5bt}&d{g<^vr5NNh@V)r&rKGEG8gVm03}l^}N3g#YA2@ zgEzLQ@lD1z3q~fiYCwnv7c;{R5A!yQ9;W8U!{NIP$mZoF=L^jrPcF7dwr$hVL*ciY zEvf|;0R6_!f6{QjaM~p(e2Z0WO|I+}^*=%pfNMk`S^WDP5Eu6tCq3|!mj?X#T-jNT zBx(~Dk_H<}LXy6-z}h-2uiP($E?_>JHg<_>{cU*H2ng*JVAQj#LFJ+gH!Fqn3Yn587Y{?{|ymXa7oTxx;MBXe-w?ko}Z%lQb< zD5d5ixGwpfHTG3L@%2jAoQ=Q*Tl85DqRXNAfMombbnHu>4H2*c<1hGHIT9ciQ&VWP zHYsfYcb!@P^Bgo%2^Uy}s5&Mb?%9?jPa)3DFjl7IrDmkhF5N|U2q&%JK{s`Pi&3Y~ z)L#;MsoFtVxAcFwGiO=>YhScv#tM<~T9(2+6cN1U#`P(Qi)fqaUsK$^Eu$glbzFo% zalpBd*}K|p&c>f_&Za&OgCdC;Q}QQdMDKLtYFgZ^OuTQzZeJN7Rh{u4e(}nmvRSOA z=);?u!eKuW4|19t%=F64M|h-nwCt- z!Yc7LOG(}6j2|q_P9JMiv5u$=5sFY2Oy!6*z*XaHbEJguOZgSfOMx10An;9pN`48# zz;)v>9*o7i$lZU*Axuc)VG9D_rB*n<=_uBc+&Vk!`X)4%-7E{LJ+qww3!(}RguV&{ z7w0_`m)?)ply(4nj+?H~k_p#s<&S3H_K`mldR)qdt%1P( zmrhVT0BkQpyZBo3A=Eo$mW}#Y(VpinR@7wxYvcG`7WADw;*4oKh>X;+)ung*_QaVi z-;lIw1PamGi)V}_S+0f)WZjj=W7RT)jau+Nqm>UY<-2A%^ckM7XZ`s`!LqQq&sC{h zK6)11-!Q2Wet=<~6JE6@?wuH;8I1o3XD1{Jut#`hlJ7s}#iGc$keax7`+VuG+Yguf z8)kd2hV;+ob0}<3n4tCBQ~L;?^wQ}z3#0dhR6SOg*JeJg z`)NX;%~rZfBT?S`4dJ=Gjbd;@e1BBpy_*}N-VJ;fhp%liNn8fG>D#l}@i_%oBn&6h z2bHW7=5XZs|VrIq;q zr`bf1u2^f0t7u+>ji2z^VAOZwTReDd@VnE}`Ln+71B`DMor`g4i^_r0DzwBG?uG6g z413NcsQ2M@b@4_9Zg8~-sdOsERzw?pfw94|YOdmxK!fXqIaa=fULFx~cL?rpXTyC~ zY@m`vKxtADnhE3X@08`kE#4k$vbaOQBzWT6Sfv$gGi>4c!ShCF5*rvbxm=UQlqpkK z;zSD0p+y$98qX!uKRuVt*x0~Tp)C#ZZ|^T-INZbFu~JoTm@g{hZFZJ4{R~Z~ezb)A zm9h`|3@063q&mnMzQoeKc`tEvs(;Fa$D(K%Oqy_QkNRFju35X|(y`vu8x}A)X&43I<<2^Cr{~ zyZCD6!=x2?TKFdd;%>zpmtuTJ>`W0)GOvo63sphvEKCoAw}(FZrNawX)9;jvYKn3ODGpCE-YDqA z%;l=-|Gm{w?+ZV`2v30-vLrVM(Y# zC?Q>ziB3dlFt!x@D@f*~tmo~RUJPE%gxeabtBW0sKbci{G81&A)6&I?m6(}xK1vqJ z7gQ%asQIImFVD{(C(jB$%;ZtnXonJNo~!d-ciCftCsUHC;Zn$U0V7`N&NnGCi7FzG zld>$~GlcW#IUr}MrFKdUjV-EqPdc@p!A26#2Ph%3fgCZc*J4HYx5e?5$Wgm1mKx+n zf6NX*s5*xoxee)Y^f!{s6o8KdqQN6J%FZYAn3!9{;YwO7nk+ZpQ~$K2n`5j#uXUO< z)#zwf5s~L=XI%R9)7*1jsdyaGjD9LB7&D-gXg)w?^5E4)St)^-E#GKW#%#5|OR#;_K~g zi4jpEY|tWJ#RmL0b#am``kK%ke3%}Y(NN#9kQk80#4-EuFm(yY<)PA>o-qyjHX3Nr z49)^R$q|Qh<(tku;_MW%c^O$lXCa*JRr-N?vvDA2x!Ea-%`wI*Z&@z%CY=Pw#USK# z!!+hij}#{!_vucy;AY7>4D_)n z@BG&%#v-on6Jn9fr9sb*7pqn>g57iy_J7iZE#VM6gG!qrBL|Hw|(vTdy-DP zO?dX-H-hdO(~}MQ@ImCT;=(3zv5D(++_*LWjx+bf&L@j>9#pFs+ z`xTEUQtu!>I3?%I%!u33P-)^s;Jm1)Y$)Z`ZLa`Ma`v3IiGny>|L~@&;R9Rh&8`#Z zC%5yBY>cm$r>#*jl4UNsYLC^;mB+NNV69f?JQ;YxKnOg?11bNtRAEubsV<9h3Mpvs zDo7T{FPoB>xHT>-<6>Yu+J-z7m$s2xm1BTL#nrLC!-M=qn=Sy|(oBi`sA56qZazuC z>w8$60z4+&R8fu1SNQ^48w-ltG31|)qh(pVc$8QX;}iV92pY@lZt}4hGRh)1keMLrXzcB-9q!!(A+f`r-uY_R>PG^Rs9`)w zZl!6mt%+C(S5mwBaavmE801U1Ys>h}&ejdZ8kmsjzvJ_qu$~@G$gMc4M3lP4gU&&eLuI;0%(}i`qq~bZ9vuGmadh~WCmV6?ru&yD zCLXEcVn`ZG-Mk|qb0cB878#KJ`<$59#4nm_0j}f*8};^Ab?GjWl5olJh|y$wJzo_F zmqNG61Nha)BR`i}ySwr2zF`|Vb&sYxMV*{mE`A53v(t3qmI~_jRp&>U`_b=e)!S3V zN7OzFQ;)^vl1UdV4yr{dRuHL9CIOt#{CriZ2mpvtj)|vt{~=>bxe^pO+K=o23n-Ps zJ2H8IJ)Z-gNxvIN(&~J~;KRg_#BFs2c~7ljDD52R<3H38K{F*PcwR=%J9*Yk;wey?Vix zK80=j%5NEPIk2n_V;y<+*Es4DZNJ0R8@5c(d2+&u6*udssh!dL1_efwkG@!$^SQ+Mt1wu$p1j1}<32?hR&HnIb6#aaU)r7#wg6ara zo=LEwl9qpqnDF)iM9fv~5T$>%ia$^!F6*DJ_V<7)H$Aj>xkGo2^;3W=81byXp0uEIV8Cfj@n;7O5zr%#(>^)XHwuQ4PM$4d>Me zz!<6t8~LVh-zs141ud{Yk2lrVnXtg*a6hx`(1DiYx3KNiPtE|(@q$F5SSS=Og>@cT z{XsVr@^h%dTm!L2Wvo7WlMHpb5!S?&O`$Lna}eakB`yhaff6`v6qtw=w#z@&W%D5t zS$%2jD7YFOkwHP8>2C5Qn>$D~WRPPavD-z6LN8mjr))4)a8O{A0I1|^t~ob^u&Y&A z1~v}szMl_lmUqna5223?nP;Rkn%IRMVS*lhHQN-};i-DL51>g(wS~_-=B+4VN_nC3 z-DyuW+uy9M4jF+&%1vRFAQAXc1E3QCC+q^7)J!<0{DxA<$SLeqF!3Fj^pBs zFwqvAu$6kjMhJAic+z~Rq|Qx{v; zEviSewFR|~3-+O)TD25w^mB@&S%EixN6=Yxg88v&!r56vIA07-FJ?&r;R%q7SLiIa z{!YvdK#11*C2HCSb3Z$UDAJCO+2`b$%Ou7WU`f5CIwEz{y(_SxMcCn-LQ6m!~;?%qff?{PaHa$>UXRs9uvlhYtdxiBh|217*f02rhhp@#U91OvNR^%ir_ctuQuu(@d?AOhDc{;B zg4e|k{^CeL9eCXyRi&m%qYS`>#^jZ6+Hsw^ed*7#g0l)iF=@L-=!h>Tc9vTG#dxAW zxDu0ivJ8d}J85UuWIj)Q)I(Fj5#;H3RSutwv1AJSR<4`^12Z-9HYtVQG*-)!NC`!S zR<-&?!mLI0d>dN4LR)h&JR04mak36| zM%Jsc=I88#)ucrqaFP^_Un&!SiwA1Z5RKV(Q$!vB^s}gc84K~6D$A+FYbSfdl$4#Q z1)!R!$3vOU?z*1r#9Q2a-S{AHY0-47zbfSCXYvRQ7-w>xw%bdHS# zoya*|7_issYwwm> zRhg(3?6F)l(0{Og|L!?aI&tb9Eqm2lRg6LQw8QoFmm^gUyL@hm#d=5NV~|oTv(n>D z&=VYcC(bUa)9DOebC`!3ZUkryrawh72BVt^`IuenVDK2U-#!|9>ZkXc!J<{GHnp5D zuf`M-Y&VNZKaJIWW@?TrsW&S&HxzL+`^64>4;c~aGYI~g0I&n++hJSo%txDP76Q3 z6jvR^W!$A%KOfEo#~>yQq)cDHIzHDIFR1_IN`MNrFDCM;MwPYdkSEBwZ&%cI=lxDe z%NH~$gz!$*#-7^IevaqdBYdV>HT$SItvuG=>|Vmf?XnI2S>8IooiKsUaJDU#udjA3 z6psn&-U(Ce*iLUFXO^5p-o0V?VO@?0PK~4E2tKUvkB_Vv80$OrCh{0Gd2Hk7vKwul z3Zzzk?%GXIHV?mnc`6Q)BYvxXjvJ7KfjQ_b^89R4j5FD?A)zev2kN`d1nG0M-g(FxU3V zl@1&Wnec-7rNUSPC7MQ?i3|~`&X?~hM)#!)4nEP6Y(Trr^W-YvE42fgY;#dse@M~W z(`FXWLK1mEa#C(q(^(6*TqxhUC@^!?spR}>lqrG~W>uWC9Ct8O#SF<~x6mIK;KF{K^ zGOn9j&rv^mF3Lf?xY2+nTT5l;K;KUR`ZbOCY8NgSR4nIC!}NNz~!_w$*o zE03E9b4`+)Zp>pn(;w{*#*;_RTQBO!hR0SK9EY^qYc|hFx+++DPi{0gr?H+jQ4=iU z+x$3jgCMeralBi7MNR_v!zQDQN{M^+(l`utVqz4g z7=b1Gk4NJ@7%vmT8x4f!-vX`O)X}rbKefxAd0&N{S)$Wx)z7s_R9gBV_AvK|-RS?) z)VkF?U8?#j*L|po+B~sp^1#Hh3>7Hmiq5DN;(cK(@3!hMqYiUlCWtv{hyv8(IeIW; zT`#Pw@jwu@qnxlmy6ZoorMs{%JC92Kd=bxbvg@9k;D+cTP6fIxC$ZQEqLHqWC6TmlCDrP} zB9MNC| zHJ|%SzP*T!xAwS`-uT)h1-9^kPL0AdI=YZCjU~^w+U|NLvxBZ%I>OlKBk|`77$3eM zj*1uX0v?n*ku{X_nU|25Z72-=A3Ai3pWio3Ag4=AgPto^vVj6HDPeS34u(h+wdm zL|oXq%s*Ma6^aCy|vO$BU)ti!}@2D#i0`iDEx% z9Hr*BP3z?tOyuE|IsX?~XkL2^2T2dXq_jk?;mjrZ0lEr)LFhPy`w& zHjfIFj8Gai&hz*`xxYt$E5Qs+S1CFVQ~sP7Vwbk3A6D)L&A3^|ON)vLonP2*qY4*kh(9(bKQOMQwds-XzOK-EwNOW2YtK|u zGn7?Q7jg*KGGl8;=3^Jb!UrLV8n#Ag0fMu?V&Gj=?|qFy}?^j2@~#%vx} z*;AMt7tqGYK5bpJ4B=JMqgjE5o9rF0bPeSl%p~t$Y+)xD35-B!@#bATF{INqVlY{0 zQ~}Ds;(>3KYmT}&YX%(pSw%vTXg=(;$mJf__d}&-_{!g@ic+YayN5!sHdc?vwVWX&=Y708Q>*)U>t}YPJ9gzBnq`q=?pO;}%uoT*7{hB2>tR9D2osf6q|KT}vXy z;}WvhCMSJ_!Q{O8zEME2QoFuEZblLu2g8)d9xM?zA_E+fQ?Sz=DX;kqNa=#i~=T;CLZNO6b;=9#fxe@ZA4$C8FdhKQo zZ9aM>>;EZefqEyR+6s#K0t(^Q2fy!TT2wIc6hgMI1mAwIz@?5-s?9?O%2La>L{vQJ za6n_sRfJSBua%KYluEEY2C0m)m_+ifCE)#j{61U5bc|;Xf)ZQLtSdit@FJ|a^U<_+ zZ8cf;L()o!KDn8?I9sjovD9omwgL~V^~*H0@~$gxM*|{G*Z4>b)?l|b3bmKP7ydL>lG&M;bAJ%sWMR3k|7|Xl45kwo89bI#Gp_AiZDG=j16p!KOpN#u& z%aTb@G~j`G;Op08RnifK@7z0&r&_qW6v#DC>NJ%rV=RY|ZpXxg0)Ebw2)udEDP2Z@ z?D)8ahD#0yw@bX*Mb1Dr{VC*^WCqW)lf=5Y=$eyoRh?Kib8beszQPRE<9#4uN4s(~ zO?drxs?}-zZnj40ULLbp?j{bf>yYn(^kvMQE(17Tc;4tGKB$BO!ta|zJhB^h%c=3! zwwY#z-6F~I=cPpWb3TCQ&&v1542xfnHlPq~_13;@8;Dnl6nJj1lQnD9y9=O`9E77C zK%SsYB6t!yHsj8{YsQK}7KTzA5v`_M!q-({cUFRHXza*1?;_8(GqbamFq2Qw5Fl1IHf5p!0=*tO8&-PS721j+G>fgei?h6T338p> zat9zI_oXqXJJ?a~NtQVtf$_E$XeRjrHF_^O3UWhD^*)@3DvBo)B2>&pEQ&Q2UoW>< z%|uq;2gitkzyh%MiTRzJh)z#r5C-NbFsUpGs9KbHX?#^_x_s-Ydk$ilT-C($?<-R} z3!0#hF;8I&qD@zDml(dAFk(SjSeZvPA}~a6R@lHp4m0$Ah#r!z7>7XdEmZ4H*de&6aYjim)0FV)T%0LQ_Wya7cOc$L)888yJ(%PF50u-PaIYMPi6jz## zQD7%WqtHJI5}sHvu@fc7W&c&K=HyOxU!>sSUHP^~jmI9R86Y^eigXzH zjIwD}X3)}j3gqiN43pQp1j*vue|e|4I%zCTWAqqK1Q2}m*P9Z`?0(zM=ZtUnae~_k zN>$Y6eQ&dk2!%qcF9&XO)ndTwS)~KG(yzrZO;JP(rLrfAN&B9=>y#Jcf-{e-^ z80$p4amSw84U2dID(JV-k*5aj>L91y7UD`t_KBO6_3lsjw?~~?HXO0aHu{aA=Vm-` z*dC-XV-wh-T{m@(>LRwdVu6i9BnF?mbQfv|ZW*H>LV@`bPy!JEaV>uF5BUEMym=nA z2)WbVzU)FRyfD;vX*H`fSO$5Hoi3ssSK0{by-SRnQt50c)bsUuy#fOw`PAT%50oR% z+k8?r<9Dptm15j=GVxe$5LfQZT!<;}ILbC_0uU|%?x?=Ht%H`^gM2#pFVK?2f&SrJ zMt8{CDd%Eg)!nc88>5T$lwJY5!h;Podu2)_??U#+1jFr=(TNHKT%;ea?)D(uB(1T#8wD7lp>2jW~t&vv!aiOg_ z5y)9K3q-6>B3`7%p_32SJhK$Q57~Mo@JD^fp!cD0i#f=m+N++?`zBxoB+qroHXl7b zn+$W^TE1_&qhBQ|WUI7Up&hX=BG@;1?1k3Lm;*hFgq}(gA2kmu?Mth5Exsm8t!)#K zm9#t8&ymLbgj+CC;Pjm^U&sYPY!l0t8|+c2f6 zdH=yGy?k<|?I{?TUWIJ{M?kp0TRTNrZ3J0Pm)CsH=+|wSyAbi+_VxLkx0rWjO5gkE zyXz+o;wUkKF~|Yge|7|+6G;%l4pn@YbUrz-z^;EIz@GFDO6Sw8C;23{>sCy0R8_y> z5{4!Th2kAm9hC3{60@X}fvcm#X1aL4bZfrss7w28|LP$r_S)J5^4Eo3y@{=V z>BoPieS{&8?t3%8is#zI6xnr9{UcTCQUT9lfrS^oFjxjiBO#bj4i9+q8MQ_!;QwyV z)=EPK^?WHH4W&loawi|0=q(Y>dbJW@ST90v&_v(B@%jbCGpzuL%8l%CBtn%z6P6H1 zD&x}?{<#|v;@Z(fbNp6V$-8{Zi-4xsE(%{Hh$p~A6X}h^H!2+)R-EN8JXR3v z?s|VPdS)uRgguQ|D`FV@mY;Gws*@c!V6)OAHVkVNqW)J7ZerkTUf__XCi5h^REk=+ zIp0ONxk}#Iig3T`pzD2kAHI>(4Bs26lN$+G!T=PCbnfRAdMqEkBW8$yvE=*48l+qE z{Q1phaDRHTrrB2X6`QuzLcz&5-oHh@)7Nu=BP_9syvYz2XI-5H5?mN+WzSAG;*7k> z9SCZk$%yK^?R;HKlpY*lsl-2Yvl!M#T&#WZ|^1*U61 z;MM~?;66GSxKPMSba{xA*2@&7KH)3ZAX2H<>C&xhzn>~6;Xi-haDUAahF>O|E1alVG%>0J~-rGoPOCXhC4ERg$RG=;$R z(gA;gc#1p0!x?JSdvx5}CfcH?Ui`JXk0dQC+~0XpXqf@|G~?Ctu{+;<=& zn}|d!fZ`%{wH1b(m2CxSgb@8X1g_JkmKtul*0u-_iADWLT&B0S9tuYV@z5s;c5>kJ zeHr}R7@C1cX6@NUubvxI1wc=Dq>w>$7ag1jP6!4i?_F z4#~9PPmX(0|pNK4HG9ZcrFta5^5r_*O)hSuQ+wO?wJps}~CE~nK8 zB9|fwN+7@SiHs}9q)QFm_yMF5Ca)o9O&@tzCWApv8BG~7pnp*ILHox_!jc3uy_|$B zqVt)&2!RV1!*gcT@492zFBw+CSGQOvIvQclg9x#+)R=(01Fp#fnbPhO&5Bou)Rt@`gPIl^?=~ zw+;gP`!By!rEQK=S`Hh+*!3qdrXT8Gv`VVE1s8lEPjD;TU~<;^P=?zoI;WS}1VF`?G*uy%GP zA74ua9<(e^M`BF?2bV0U(X2APEDP-W|GT3T#&B_d{lpGaXfZ+{2=%-!UpW-@miDM2$f@W!&_+Z>y)63WhCF0%(bEqA@JZe| zvLVdm43IgHBfI_;YXpC$nn?Y+=s}qNpn@Kr9eTM}M9}?w6-Ge&=qU36v5kq4J^h76 z5Dnh`D??pUw)z$Q7HmuYBLLRj9omFOvK;Zu>&Dw`zOf2}kgeHr!#-NeeIA`HyuJAR z1|B8xf{t6C9z@ta_RxR1N+=!@L=HYw;W;0#F`XJrbbX{8Ytz604GU##{DF-_+(Z8a z5sOHqHQR=q!2)voW@U0hm!T?u0U}rQp!j!JrxC%X7ZI*zdBy9B&bnE@^Bx;@=}A-i zKbrgQi-g9aJUKy;=B=-C`-EYDWCkj#?By&7=~$Rb7p@72_d5}aiBkSljZilN4S2lB zZ31civ4#}WakArlY9lb7JnDy3ZV~THCT+o~9hk zA}_byDU*Q*GCr8#|KPvGpV+cs13T5(4EO@}wv*e{Sl`>0uyr~FxJ$EzlJa>qkK zW3n5)^?{~F=aO)SZbgu-y*XX`vjg}0;+p6i_#uWdN4e_hgGuR_s`>4Fvmol>0`jAv z^AK_LVv-bt$qfEw7a24x9&L*!N*naFML~izY!1gCM#lxKpmTKNON?VOUust=ew4Qq z|2uxZUmL6D`i{8`+!IZeHchPczU9-&zGABNZe+$47A)I4T&{#7B*|0QYx2D3)XON- z#V4_hHtH=6E0|%&uz@CLGP_I=$!*Km@U7&PJ7{(js*72qF*27I57`njtLm$`H|6;0 z%82A}QzWo(~eL(_}uZ$41!X-AKDZN4nAtu+l~>zDncZd`Sr5gWCX`P zz$kSp4ui{z#svUWnZ)_QnU8Dk)RkUdnl9Qcc=_n;`GjbcRmvftW_w5y2KnNQv^-P= zqC<^Q!{r@UgCEPzaoG!V+BXUYw^*g-Af?g;#Up^ZDl*}HiT3+OfL;3w|2vg^FuedW zxBcQJgkO6C?x!Dtppqu2r21E*ePF(vF)R!DG&jbu=3<~~piKq+%D`A5xJj&)YbFUu%}9mD`v)cQt}Y;ya9j@`8k(3W&YQypwhHQQMeQ zmqbIBl(577ouz!6#-rCCPD)-?sc4}b1i!l@`jrUhE4&+DMZ+q&A-x{c{=4&3T>-P< zK&0~8zd1-d?`AuslS<+QMAs@k2Suq-VTe!eRO$j1f3)&KQVx{z_8NxZD8tXq#9mZA zr1i!BfYBvWZUImhIsXjw2OyhHw`e#!XJ)cYy!|aq2uVm@8^2M` zIekf@6=`}}z9gBnCmyvt_wT!PwVr`yL#B)^R(LR}u39r8gnEd==1ExU=mu4w$XH9Em>U@JE zmSXE{XdZ@t9_lz0<~?=};tQjSd$>Ms4#U>a{=tAUvX+I6OXx zvSa;U9NLMYk(n+#+GTEb=cOCp{l`*iF{6i6o{+wdSbv2u3AT0xYkTeZgF8UM`cAoK zps6Fk5V6+WaGE~T?W3#i0b4q68#h~;(d*mBDoyefu)>;&VLNU$*f5>@icNsdze10C zXdx5uQS`DgC93qkD=a*(TkX37OZ7?4coL%+N|IW5V=}*S0X5 z^LUhZw$qgc>m7Y;!0?5w5L98wQE zi}1dv!@J#+@j*9Ie`&#Ie8}FcvTzz}5o62RRIqfbh|E0tK7#FoKJ}qnc`5{A*3u$L zi;Y#9teOK5!A{n@b`E}quj{uFh74oucS;3rk_W7s^E7gG6y5QRTB==gX&+OXwt<_Y0AbXK3ZCv(s`%6zl1s4+ z3}LLF#c3HBuoX0Rc0!mS*5gJ7(oQi_&&-Hefp9az;CNS%>A4@az7v~_Jn=leg#AYs z@q}t=q9X@1<`wP>{rePZhe^Zq4XK1KdjXz{LEvUqXh#n?X*^I=RYaVq=v}f#E=RJ8 zmq)dSpu?ge23^l0YvH8rP?@a5a_B8I%O)|2VRG@`E^V`a?uR=Xwk1+M+O zf|5$hPAVX?raeNR3m=cWEcuXm&_GW3(9x|xfr5#wd?xwuU7)diECa$iy)9Z3x{YT$ zvu~k&D@@X7+{Ry{VSctI#B4nuX%+8@dF0x@e0}pBRRKI9Oft}oM8BYS69k)ZQYM4B zDzRSK<8yt>zlexEO92t7Hx}C2vW?j@YsNn;R9I|ONzf|7SN7mB54QIwln{OF7{UG~ z>14C}A^sTuvS>~N5zeq=x$idC&dp)|PBmK|+hl(STvivq_JsqX z<-@(@>bF#xzg!ykwY%Yxzs8jqMISEfaAXy*aW_&PIa@&ZN06^6tNq?Rs(VVIA_k|y z8D7%gCcpeSV`jtXJixfCGe()q`$Q%tF9k}LB_5qCy}}O9*a%&~PYd0Kj=^f6z}ijH zqj)rkyDAd_qDt&t%2B3ieq*OD)%eB-xHu1?t-^u%FoMnMaKZsx@y~5he>0C$3ZmDq zZb)TA{1Sdktts6rmxv8R3XjCNoWLPTvZKBQz3VzbAO!gB5*-XjVV3&P$!Z{zQhIf<*fduWUmJ3ie1H#Mlc%M#X!^&M=1+uw6CFB70l>F7j$et4}6M4|y}hs55hr zK(PYPLmf&<*i?Qcf}Y*f;MQK4V{w3d%R46{*A{t@X{GlcJjg-`yG0)>y{k?tY|FqT5?0paO2kk|@*;rA} z!vTN$PJMwoc54#V`~``guSaG^^gzwWiMJVxY=?k84J9{ib9cV%=sSiHEeaCD@oW_6 zhR+STl_!F%fJc3*_QwUJ#GeFm zw0w6tmD!%pHSCQZO5QMw!9Q^TZxyq)z_yt8+D26PFe-fYxq&@K%Bl{>lz$r!o<;xY z21i8szT?7wk8+IZY3p*m-#08C{`-u#IC+Ju`poKjYl7c}pU<)n0;W&7zDq)?8&0JS zJ;pxdpro8>)}v=gUMsGw?hb51t8152Zn5UF(>Lluq-px+Kw*2-+1c3EbXoE8FXf)7h9D#+QjVQD1n(nZ=8r8(RIlbf)xa=>dXmt_4e%MET@U< z!(hnYJo8QQ9l zx_J@etgKjg^5fo-E22+u&3fAQcq6^Ga-djU0m@r7OjEvIdok2nTIvZ@5aYkD z2zg*n8#Pw+3=aMIjS`u+2vx%=d}g}CFq=U8_8j<&WaZ-dGbw!r-$*BGGy!d8_`-s* zpu^2!XsbP1$$pU|8$|=(OVgc1OkuEM&LrhibIS=6Zp5TiuoS}N04a>HnUo-wlBYvS zk2RT8I79><^zK+FT~22LKP;n2&E@_yaNj=Dac`&U>LhK~^C=;IFq!nz1n=M>c4LZ` zO52E`MGO>0DLCk!x&yfOmq1p6vXGZDNDMPx0yxwrGxj8!f|<}6*|~R3SkCzR3FK6` z&17Nke8oI0B`+1?q1+eXe+PV%#$nDg6%G={n!V89Ke6gY#xs6#biIk$%bZzyqiL;3 zR^VPoiDkI}M^C>I@OnGK(bBybd3J;QQ8B)bXWmjh`X4adeHTYdiPT9mZeE;@p*cl~ zjkAyQQ^~sfX(mnro&UNp$ofO% zgC)+9OicR|v^>8YeUIpLgX|hEy3!~RzpT=FFvs`zTq)|845eatWKJi6%`2Ir8W(VS z_UTNEU<+7jgys474gV%4bmN^-))vWbEhJjhchAt@&SE)cZNOjpo#OjDL!JYIEwlM9 zS7(ysiP#-R_z}f|U;$tkO4E1#0}DNz4s13wPcFV^=ZSns$h>N=`0fKqFvDjNRRtv_ zV8`53^GVPdZ^A)01RdoqH42AKAay_~9Z-#-^tAG#BeG!HZLNr!<|9euAWT&WwbZq& zp7Ld%zM5RZ6xUk~Es8WK4tq@cUvtBc;J=QAvHe!F01P2riT9AhFqcDD_7HY{&L%x3 z#{(l}ebsVSA00WW!gsU(nSG>}k-pX$RhD?+!57a6qla67t*>~KliLxfTRslj#s+%j zCP1d|qFdBbk8c9)Rx|}nIpg7aRI76PZolC_BCg`9mN5m6Z|&bFas`CYE9`T77-pI> zO%a+s$Jh~*Vt)15sZhS?d-UUy^`~OO*$R?NI@Lc84jMFu~25a$?(@wwN29rZPy5yI4>mwoNivuJ*gN%ehGCFQWl+ z-{s@ggqy+%o|h!FkKd8*!3MJjjk1@|mCfPq5Z@snEk*$;1&)7P3}_$S1BQ*w2!@$s zK{8L-yzWFHZchCanXS45dDj%9h)|`$LX=@U%go`sk^FLFx{F3O@@kmOKj5|;(3gTL z20%oMnh6*f(-_QQsCZpa#lgh|Qrwc^7yB33NrB6wa|2SmP9QXg95s}>p`2IXsczDJ zN^rH(HtDFE|B&zX3)C0iS$2lqve17s)41CN1BoPUbXfk_LKn$o&HDG6)D_?n42-~X zZ6VKrz@~&9*Mm60&SC6?XeT5U!sW^TW@z+cvXU&e|tS?8I-GMLPYK>YbirE$-Zo2v? zw47+UVzm=vTK!eDy~?*nAm;-G#n4jUoA67f6UuKOy}~!8juk%ws=}9~gjq%aq}O3Wu&82z10&~r_EY#`l{BgMCIm7HO&016Jr zHw7%eWRAo(pC}+s!k^EAy_j?~(dv7mz5tpmET}u#U(C7Z%ShHQkQgU0 z+j&_Zq~0`=IYp^GS2OcaCLC02)_yhEnSK3i7Hb=B)~Y@tztB`vm6z*2m_6G<1(IM( zX%ZMRm*H`_;(~;s^7ymc#*H&UWBwljNo;rBR4Kq1Q0kRjZAC#MN{@E%}-P3-t zMk$<&nS)M;B}nR$YW_eJ#~0QrDn%d|r{2lN^zS{;hwio<4M;6^v^1hpXxQ#;D-Tg< z4)_~UOwRt#V*}%ZA0-iKftu|0Frxl^Q3PF4Az2>Ln(|IJuCG+Xxa??pxe6p+eTPIF z!ysGRCc(2ip^f{HJrxKF1X<0+?1E|VIGr>Jp7ibJh3X6Y=4#rl=^BO+JGMvXm zyW&4Q)Jj3w;RP;UQ5I%AFY9lHw768Xr8QN%W+2U0+NRJVeVe&_2k z)Pkj387%+|FTD=J!5WOGsf0f=u-Qk#z9jXPKT~LcYtS5JWi}x^F3H}o?TgL5qgJuw zeW0z@%@^~;BPa{O?r6LIZLIbwV*`WzReLuY>dd`g&I7BByeON~50Iw%q07uQ5_>FB zcoGjTGeuaIuzvVvgK-e}dh$fOQ%Xrjh)ugDk!MSEDCrejzlT8LnY2$?UlFLz z$yVr+ye#4i87vh-@{V7Y3}XyTNB+u8(y$yRk*QZv!vO9Do(@~W>j0P z&scQ^z!CEEF*kt5>r=Rvt2wh4C$FtlXJEE}h!itw+}ix)OE}vqS>qtdh>0Wjrm_SP z;hCeR?M#gICCed;7MO?x;hMthmusd|O_n7Qt$^3@Eo6g0zBL!Wc}TQM zMZ?xB#k4hMV=onBS!)>DJuzPhul+boAk%H$0=atf?3|ix#ska0Npe<8)4+z6Rp}KL zT6gXoE{{I z^}7Sw+HU$;K#R3$d8Yu{`5XZHfy*C$3(zXfk|rrhHqVmE#`Yp;*Z^V0pLnS~j5@Z~Tvt?QP_$0Ayxkr*mu;mw`IC z?DZyziuoIG+(iR!UfhHd6_7UVn??2hr9>A0`WtNa6O`~$UpUg^-hOQ-QB=|b6I)mu z;Ovboa#2 zP3>YGqOub*E{jCtcLVpCG-qA(K~$1-K{Yi9wXn{+v)nkWRf?Exv_vW37X!>k#|8o*4um?R?lY%4*p40FiJu$(JVN`3 zNYlguU+T@k-o4C2fzNiZx>B3emf3^BUVAPgV)s*Lm{9u3Y$0}9WlQOSDtQa6PRQX?< zwf+p1a-_fw&!q#|VGtJyXeI0xgoyD=H+!_P323sz)jU>^teNQEpdToFv4+JcW*-&Z zaqM5}ZQKp({3#&GF`lUUyu06k*J2#Hh6Tw%8E29xot7LDn|e~7&uu% zN3cyPFQDh=r02kcv&2#K;MT{mDBJrIc1^JF&QpI3IL@G^qDN_I}lDga+&{G$-U$}N8~={R_Tw$dmh;+z1-T6%<8_! zzSv;#S#vqTtzAz+_}2aTf0Ud1eM6nCWO~!gH)$zT)N1M}`|`_SQ89rBJ7Kq{trF zzxyLIybw+D+fhDs%FKB90tr$y*);wpGg6eB+eeqe9j~{HL z+k{!IOZJo?>Ru841PA?3%I3CL)0&M;$pdE`9Whlm(Z&UQtXyY`-md=LAnx5r@`Uex zZFgDHnDnSEgtEHCI<5zmibh^63B`Eu@s|$OtPcrM4S6~h6N*()tk*X##1jW< zgs!D8`fcvTvpE5H5h5dBuDSKXbm0%wJZxX){rli*Zh*1x4T2utNWf2|JN0wORo!?> z6jH)kgSYz9C7IV2nzLttN00zk^PKi7)}=WlEN;nq`0m2bEp*Su;soN$ea(GDjyYKeeA>^puR_8u!S8KB@NsI(1SZ3MNd*`PutC4oehX|L<>(NRYjBQn z&;IQX_uYgM&X>A0XM)JIX@oZ8yueRrymoU3cfn9?MHEP10(6YYEtS{Y}fjnYB78LBZ_tH)XLQxx{okY9?u zX?Y@tH<&g*PTZpZyd-xJjKkDP%>AB{S-e-{&d^M`s;nLt*o{ijo-4X>lr`N^uv9Cg zr_wx1VNdnyTWnAQZ*@63hn){sIogj6lg7G!Srr0=5=HShY1a}BXz@lU+2n*(;| z$qvBpG3qi+Xm?3TGqaP!YH|~%PkOFN2T564R;mRs1RZ?KdgcF95Yl#x70q(mTg!l) zfq1aO`$w)c*ombfgK_~KS!-dSSQZBW5JRLkxE1*X0g4?U_scg{IHHz-9t?5uBbF-S z!59kp(x+9-qT%2jP;*c!triW<@1;Bn^I0$8l`GWz6|7XD_{(>M|JiB@_1tbi361gW z`LksCuI1PLogg0q7_&s*iz99hKXz4ZD>T|BNjmPKVXTiun91@lK(tivJbrlLAc zV8~H)X-d(*c{Z70H@Xvzqi*X|WKt)!L%d@@!KT_|0Rf@S6G=_WNio4iEJz67K6>Y7 ztA9%_LUeU^^3r;OPH%5k)@l=k>%1*Ef7mO%?MWob>EpDX><;Snv~s8|s}Me!T@e4I z`Qz0@;j<)f)2{gc~ z;Et@tU=rF3aRXAG44#S2t`$JCoa%n>Ky#NR z2JFyr_>?hp$e^U_4AEO6`525W`+C)nnnEG^@@N`Nq^>d@>s&cyqVbQCD4L!L6XqB3W7ZW5O2oX`T|lpOfMPh&!m&u+Z*O^w83? zvT`SYZDaazOWEt9Sf6!5h(g_IHWKb}e6ZG7TYF4bGV00CX&fayr2gwFj;}|4qX)fz zof_F*=mK(wDC%F~q2_!jtN!*n6fdf>hPi?4z&sHy77a1MCLH52|JC9uqrrpFT)(@AELj8qz^vy6EmGV7)H6NtJB1AhLY#h zB;q2=?Pe18z3*5}8r4W%6r|B}#WVDsLl37B^&^VZ=!xoy^P11QpA4EFL7CGJ-wtAY zXD;7~I|CP?H;d~k%!8&gEs7CvE-#}A2b9H+=OAX<)MSG1C$&#XLHz6^2Bd9&? z3h9N}+?)rZuAl;Jl?BSeHX8MpzY{e9G76~ec9VccDYi^({lSPY5hWbjZSW}B+Ge@M zIk)AQ5o41rDyUNPxD(a(0aL>>h^cX%LL@~SVZtU@u=s<}dh6O5BLq5vX~7oeh*?VLIwU0Ic?0FGAr#40le&?+`;c4QI1dohC~_eD?)HSRw~oAi@_&)rW1 z&85^*I%I`jci!4GsfQDT<*W=MeTnk7Mp%h=?AibK(yPO@P)qDiAZc}y47XYWe!wt4 zi5uWhsQop*92oT`i|V9|Vp@F;=^V1K0rogs^eF{yt);ttf5wG)vleu@%ObZ^58C&3 zIu1kK_)9Y$*CG&>T_wXBV$mh-jiA7AHtb_n;5NewrImy-Vu(#jaAh5yd5lLF%%^of zmNt5qUmS3nenKg$46ooGy^Oe6ZEpQsRG@ziVM!2fvhzj!` zqe^#OKgL}>6m!}yp-oHUf1m#KfV6OKMNO`ggGmP7aGOGKZHn+|0XRzj>m3HE4(%7Z zqwR^9T9Jru*0X6DbM^Vc%Oi-YUNadvSeC4l>8suUTrKlM`vsgwa?UYwY0_R`I(2sd zCCnAgmA$F}aIAW(>zIBa9JCJ&p=P#DxKWM_Ivh;J$P_SEZiq3nzr7rEKXJx6oO|qG zE7b?3Au8r^3UovREbPj*k3EFIv6Jsdh&osY9hJtPCbQKQiApMPWfYjqo3Mx+RiKTZ zIaLo|vafU|RuuL0LS|k<>RH}buHk<6yOv`Q>X}<|-IL@Lxl#XKbxPd0tKND7%%s#OJRK^Zt1NxT7Y(|hZtf!U9V{#xxTFpG zKKUiKJgr~*6(P4)yaYi?-pOyOPNMBZU3*SHXoNIdv6T+q{jkmCSn{>Q1+k!Hub(-@ z?1Rm`(AZSVyM#UvsZwsuU-ozN^xtcC?Ne0c^#;1?k_b_Q5AZ;7{OvFdj(%JjWaGSN z%oop)S5OKt?zkFCiLgiYfq06$_*=%x5T`vlL_BMWEiM9)@>N-Ne7rQ>)R{6QV}viu zt2|E`(kOC}cTV>O5h*%X9oA#3OpLfU$ieAW&O756vUesNPPox5M(S@s>3I+uQXe`H zN)L~zl?_K8T%^PidrY6(^cdVUkeVOqM0QesLmLRdNq!Rq$+k}){z3MlJJ3C_U0K61 zVIQg&Y}{H?bHmdT$aNk2*{|e=c8cJN67|;5fG0{OHd!(#>Xqc1ntX-HhRt-zHYq3M|vS3^OCkeU6u zJr(4jWO{;9!lb`Pr6q3Az;MoK8k!Id#nxE$-1kjw8jonK4klXP3OyeF)m3A#jaTF9 zA!kh;p_6|fd_L~gLa;GMD?~jcw1+z` z?ZE%UMvkSB(>tMW?dbX+2jeoJkKnCl(%M8YI_2*VIZ#urNlq*|?#RR<4}ndQSiUjq z~ss}BFhoI5cyt}FT3WK%fO|LHR)}OUD9?G*w#dLjX{Vp49 zvb!~{FzoBTl+$wRV8_qqteX`Vps?4*>m%VaRtucIsLpB_if&Dab=y9_V-3sH@vacH z2acjvMB!JP=czI+F+q}I=L+h|HSPKgRynUbIyk07N#y4%PlU?kqyZiTa6QF%a@CC>zozb!2A-)?pHU7Ofi z-nacqvcI)LquB`vg}BbT6V@Qq9(YUKRGhVM2Ct6jdkxc*Ly4?Qac8cPG{i=#$UGdX zdA^*MgiirVeAdNojG}-_N5vCCUniW4@#y7`!8JZv8bZb*IdZ#BCc#3*#<67KDDF`H zXev`?fC=1r+gdX){^;CL1QB+7{trO;LSE0*=4+9Pf#=MeYw@+u+sph#Y-G?_=Q_lK zc&cv-b#~UBe+a`(gf9R%s}cXhlmo|vanQ#I2;h8KMaz!DiN%hHKYllsuj;1*L(J`$q7ryb1jgFh#S zkGOKVZ!z(>UF2hJVw<-8wDK^#&`WDJ6;EYN9Zz@o_IUxN0Qf`uLaP-fcfAv7y_+(z z7YLb$#x;i+>E-R@cQA}X7PW!=0g+6W4bS*8dBS@GWbi?ob5b0q&yUJH{Uru zlu1vBIT3UN_zYu2@<5Z}q7L))9mA#Ve#c5=`n@4&pNhnlIyP+g#zCo|6t(F61DwCS zxf!nNz{HMHR4dA8B<*u*egyR2t)PK`B^CYTvM{!;!x+bCS(Tb9R$H}e0+)fuaGJta^ahw#O=^J2Z8ErP#YZr;Dz|~Dts$<1Sg}1!cfW66Dy*Dfv zlm?0!wkd;MRVE!b=dPJlD?;Y^ktX*C1`_y?;E=zimXw3WUBp{$ufzZdS0QFYf zH|u;PyiL-_2#)(@7f;M&e+mjZ&Z5_Vtn{G>Jwo7n2m@MFvX#Tz4TeOMHVG0&i1Ka& zV)br54k0Z_>fURagym14mAiS$%tz46nH$5qk~HX?I3>E7MR=fq{+;l$qy(7>13lyE zC<|>3ScY~ug&4rtyb4%H*73yVA%eRjQY`FQha)8Omja&gXb6~T9n}70Z$#aC@c5FaetKPU})c+-ao7D+m)tKcHG@xU74C$y@nPXftD+YFEWSMZ>@v zK;*8P6yexACPyJ5SXcq_%SZI|mnf&PTpiu$9#8!{D-xsRattaG>~(*7>M&UT7y|;? z8Z~#;9V9?$pKvO%(sA-xUByC3c>_4OA{jxc%X^P))tpSlTl*|rK9GDcnBh_|0hFhf zzZ{xx=(YFBMx_4w)U>F~hB8x`>p%T1tN{Js&YzpcP?KE|vP z`8eXt$UQ&-UYiX{F0{Ls)I6dK;rsM3$kI8DC3I9ZYojY7A&~%J;e&DDRL&oHd)aA zYDBueb8vHZb#o7$er1k{5*^GnXPZ$m;AJBaN7;Kkm?>h1I+c6tg+ZEis$KS;n7fwv zjI%L3o0U$!U$+$gChZ(1>OJe>ABDpNw`e=9n;?kJcym_UQh;he0$}iNR*iZbQJrCi zX4RVDJxgsJhQV+t7h6ui}-e|PF*QYrkdc2ztVvH?+sqA~+ z56Ds(=nx*Fy9a^z`_fao2$R&f(^Va1ZhTbVe)W>vD$RL9fOIv}R)xwZUV#X1G91{-_nqnR@Tq4aSYUYy(RLu?6B;?tS~S;*nxm! zM*!y7_Ey(=hkTW%RE-MI*<*~aZdX_w(xsJMTN;S&K&dd2`t0kFdQTBfqUDZmT0>_| zVWWzHP1M`mktVdBXd|#zdwoWgr%+rWYm`6hAsFW1^17fUb;5xhjbR zz7{UR@*z^n`CVp8+05Ec1qY#G-(6?^no$Ka;BV*?ku1$%l0MREzkpXCVZ00&m&|IU zRQWHK)IZ=tECMgFUqi+nFZ^e0o5*ei?73wodO*kWz8N-SW#-+vSQHgL&a`Tg`uO2{ zF(&G{G3s7YNJjUE z_GeAax<;ywLj?(T%}CLO7?Q72mC3B6{?rSc#V%%29ODZiL&@MrHzNTw`Xqb&tfxS` z)ZUI%2o`ruqHy|!+W-7PqI|p-aab$%%+}ccqqlg3PE-u3k7 z&8;UY;QhX9&z2CFI+eCnp{wFvd}t2Ko3W?UV{D^51kG zq=h2n7sWE2bT59iA-bRG2%%((`>PBwGx{IB^ubT*T5bi=;j}+(&P+!fWsn)|;aM7)Up4BN11EeRM@(18O9)6@<8G_}DmNmu3Ka z8}7NE*kE<>O$QG#(UMy`0`@^iJWbO;M@+m_oCGZsKRAp~eMb6A`r7$1-!moc-=8X< zJwwZ!WKGFsh^nlWZE(BfEe|E!gkbM-&CzD?%n*B$n5ijq~#TG-D!|d{~=B7Nl15gQN41{wL>I_0q|y8k2|3AUkcX!KBcb<+vhJBt>wjlN#?20HP<=X*e7ey6Sx9LQ zTs{?0_ruE(+rjV*U^T)A&tUAX-~2@;E2}kSZ?Fwog8{{@7g?S0{J}*w#f`y{%x9-#Wv~H3s%kvwq;7&n-gOR z6v_IjJxsq|$dT)fB@sl)bd9LCL_udQEdaU(hExR|nKDA}A^k0c3XZTmIFqP5`Sqxc z@6_A2QK@DKAO_RcVEH(CMa;Xi|3tozg?QAy+W=95k5U2}#jx(OjX5ca5xnW<`D|I* ztDSJIDC9(=2>fWUl~ZLFCNte65MBgihT|a8YrW2<=m5Pcmp3zpvU(`?3haVGc6Yar za&OjQUl_Yt9*(|Y2M!o^g9ix`@ILBgDq^4_W@U_G_ka-t+=8zxrRXZlO;=#=sMItCu~nfekYY9{AO+QVmMuZ|_SUj=Y7C|!ak zl0o4m#EmW-jqN?cJNK*q0Hb3>qy`rG?dM!{A#h{Og5B=J2ua!i)@Ne&j$Y{mh01dV zvLIBu?wq<4hM7h3t#bHS)};~LlmjhJ5frFv;~XN}Z}G(tF0ib8)niWFK8!v=hZ^yd zQ}pmC3V$w@gfjkL^hkxFbgijIp4jzSbdr1l2BE}kf$@e^maK?c+tyHPzsCNV7p)S? z?s*AIk=MF2~(KKo5*+Hl2(T<@r|dKdtbbTr}nO_7k7b zZqUBJkA(I-H#g%NR|W_%%R_@>Pg+>NQ8e2Fb!$xn>16=}F!t zk%b)r=m~S?dDIM%tOwm~N59s8F@9KV_VN znVM8HyKN?f)u7UQGnlN)S5`lnv@ewa3P!?pwaplZd7g=F&Su8nZ{WkX8r7m)QzJD> zWVf^zSFa*Rrml(H)a7|vx>1}OdE3QhbokV{nF(rD?H}(KD@ryt_1R~OO}lNO0IHqt zQgZXmGmLVFHS5u~C_%tZg{ z1gl)F+RLooP{7xgXDYt9TVl51>`}hoaU5et{$GpN=#yAxUbmg33*mX)FyWk;{=wxS z7`q(v%g7`R?)n06%>ZVco|Y_fxv=2Mn@X>lu(L`Y7Dc%kb!VbzvGU@BH?Fq+1{%@7 zY8X#m0iST|AgV(AiV`F@ZCIO#HU`Kv)Mo4rSN)}Wt^48x z{Sq)l^|0+vd;nV@XKDe#tw(!0&jhY-C|e5x4-d~$Cq|IkJsFwJ#k~!|Y~TkHlvM!@ zZ)g&+r#ImH<68?Sz<*5aelPJGrkUAB6;x7)sc{zzUc~%0J3myls;PoxESQp~9`#qQ z;Dr8Mcii5y2Twt>F3uF_B+( zw*;Yo2}4uxKN7!P;vRz)H+vVR9Js+!&;2b*^4hV_8ku6wIRRW=Rnlwq}PDd5lO- znS#ffZZD(whg}1VwXhlTUNvqUN97j)4H1-E#tTne{GW zN-!>$7cyR0e@aMHCNT~w9YyfRt)RG~{lGBw!t{h(a#Y^zLM?ufMwiLW@tp~6fhZ)@ z6!#;En}0#&Pw0{_Wwz&El55smjNbOk=h>$ywVCACDtCmyaJX()M@R`i`?SuJ6!_WC z0y+=u-1RCVb_Cdpbyt7MEnUOWaz_hkWt|*uS|)4}aake6!PNPFYS(5h6i=BLMpC)cnKDkJ4@rrW%56^a#LEuckv`UA?7IxIpEYmJ zhQhhvS?}_A@SdNybfiw$n$o-_qn_g>gPHiN5KDLIoh+DFPgTBeKUW*1x(3mAHXn*d z#F~(O;{A(#T)yhjQetN3P zlI3~Tbm{Ajtl)$@Zx^U`TuC73EH+(S)0H4(RT`P;9d)*R`=k1FlXiM(eIB=#+4Bbw zXE!Q|c*A?;E@ueJ=$bX6jl#4?<(A420M&NO+1FnGLOrXM6iE-xUU)2~;v79CG>YBV2@yRrmFKxZlW9jT5bA(ERp{JBZmTthLz^z zWk6|Q`=9pWe^RV=xp;7O`&}{PSlphc#kH^E1tVSb2~+2{Xp27jNo%n9?CIATC_PMX zv|j5xu@-v8B})U@XrcV?(OXSOy=k44%duC2qlHb#Ti`j#a>uYT>hbky(&Oc{T(_Cw z%`_S?G{+mYpPlN}c`uj*pJHO-#SsQ%^Qf3}^$u1ap_6Pzofrup#8h~pbSaTUxa}b| z7Fh%Kk<4hxmqFd?qo^ZLg3y~<_Q;!zx^}@>2(=m4=v+ari5ad#I=#eWbc(MVYmp2S zTB&X>t}NgK7AWM`gd?8Cpp?%tonYxaK;VMJSUGo+y889HP@~pN(1d4G-`Ht{={#{Y z-=uq44cq6B*elW4CPFYYb~E$$Ii#^XjA%7@;JK5lnw_wr>Wl^o1LI-&3%6EM6!4gC zL7MbqAQwzoWw@9dK?sbXToY452tNg)XrVvvB6FG*&SD2qHsuK?E12?p`tR?k`L{ON_-A7 z_NW+Se1OZ;5Tvy@CwI@kd*aMZ*^HTY=K_T)`HC~$-O9fOw_sLGt8HF zva+IWuV4d@Ezf5chu@Wi{s%5C-w(G=pe7uZ9LxIjn(r2|k#rAtGb?G823vcWIV*$v zBC{naofYf`cbcy*eun}2TW7zmvr{dCyLH7g`R=8XzrR-W`qFQ#Md*Y7W*(N;#rmlA zvu_L<{_@pQMP!7!?9qP1dp7E=Y!)hl%d;GnjC8>Ukp5O9fwdzH>f44R22@Vv)>z)f zf^;GODZf_0v7EjEx@Sggl~~{H#8`Q-k*znAAPv~be$z8kd)|F``w<5rq*fKGlmBae_IxKuwMmW3ox%&Y_-kJvM|v%arMRZE5%MYtzmo?#fg1_>ju-LuR|?B zWdtA!XE3^mX3;y%=FW~CavzUdghpIlMKoh#C3F_f*vTTV$Ds=(9b}Y1nbNZX6czIBu zP0vWKXf&GDYGFZA)#%2jrE2=O5)3hr%qW`gh!lSh?L_>4%Ny`Q=`Sjd)7J z)O24+`B~=MNhXTPTov}96M8k)}$1pmK>j6{7cdfa?Vx9J{>b*mMC%u@Ht z-*Yq_wahZXE!p9T+28dDJV%wbKc=Q_>q-9Tz8nvGZPNf#md!1&+CK};C!AE~l5NmLjgpVewv=WFT%qOLvyDm=#~t1W2CqMd183)&?^X z5>UK8`x(R`gFqPWlH&h+?q7#~+59v;T8yp$LApeRw(qrIT^}@zqG1{((^geceQMM- zdZjg8V5@LP$WVvfyoYkd0c!J5(Zj_Z4lD}*9kh@$MISzAx|$%C_bC%IL}F~Owr>&u z2UhO05`zb+4kpd^{LO)UBl*FG!XTpOob@6AXFFDVcW*ZooHMcx8U^U)He$V&7-wnT z*!8FpG_D0OH5rrj^L@pD3O#&Q){#b!kRG*>42jCYcnl()a0PVtWfS*oU2O!)Hrdly z93hL42C~gm^~xR#*-bj%8=G2g-oF##(8vVrS~RHh4n9jF%{{@Gnov|kruWc6(DJ}z zjEh>$A}`Jt7Bsyj?V{th&FlwlG!GW~y-_@1=>kmr211Dsq&_Y46Yhsp9I*N(f`F>}c~aDy8j#u~KaU)C6s?&QphptwH#KM$$x`@NlTgA<&I;aXt>E5Yj= z_}aN6BqoDeh%>*&BV6bzjXt#vDE%u_Sn{u-gMY zGssX>GEH~}CS~rhvXM{{7LN|d)KJ66&7LUOWE|MPbW_C^aPbPwl_S(tIvPK-lQ|h8 z!=BhdfaiKI)iZxq?8i%6ZUuyy5f4bozbLRz2ukqe6pzztu3yZt15hd6eG4qe_De=Y zz0?C7J;Njt&1C8DU8!zNz%t@^DM!t}YxPs~7p1qY3NHm1^FVxgGJ%2x)AbC&`SEY9 zWa1)t+z?u3I1_50>=9|M?%NLw8*%X&)vkS1DH&h-&=WN#hEWcJHWASyu| zW(h-TO8njcA~h1D0%A|;q!|*8P9QO;&0iU;lJKhB9ZJ%SLRXoWQQU<_%gSg?HK(58 zD4vz{mnaw|(Ds;BI}HS-7dM#Ydmt^Wu;frc%Cvt&dII{92UeipurT_Z*7VeG>X!pBvM3~^_?$@yG#}v~u`V2nm_bsbAU8nvi za3_~NbC>Y%yw{~iN5;j7=Ow*~4RKSIZj*RAnUn8sILtBtjD80GB7MU&tF9gArgM-W z2#l-&40+bXl2gD^c6FL?31z$uS*U&GmEv_i^@YFm7nhMc z|D$^|m1F~UYyk2#-FF=XADY$$gU^AWy;K-KksV3p#SqW&P7j{*k#{hMKpk_Iy;SU> zfg(BSZ9AKqX76<0MUnVugG6%WX&tSKj^BV?+B4Pl6@e; zm`Hz1->y|6<769+z!Q4lVz%li%!Q-FHp;}vI1HDy60M;LHj6u087``d*D`Q6lsxgQZlM6Lwh$NUNKog>MC znyRv`*O_ZHIo_(w;%6f4v7L}k=t3+=WXWJM_&ua_E~G@MR|;o~`2bd>o^I<19+e}h zhE8x9=aB;diJieWEPAz`JW(s09xnQ7aZ^YAtk=?(q8N*?@Ez}SJk=>gVu0J58Gv3T%jEnS$e*zkOAdt-Vt>C>SFjhnM2MyTK(2m@1ThIiq&U9D=#4ZtWFCTDo14Ov`=af>wv|3?=&G zgbo;OWfC2zh<8UDVhfaBfEmQe+pLrk1xEWYpamXWk+k6EF|#X(SA>Bt-su_0m1BUW zqE%~&CbaZ?l;z7^voP{gIKgY0&?@T7j9KbRTFwZ-*u>$>EpDdVSfWhjc7hv1b{lu% zY2Ma~-#aG1?JNQj;`CaAw>jhmxnLj9LK>j7Cu=(uBpf<@&tQbyInGtdJH@FC14FUQ z6gFS2GvoGvThPn~+`@`->Ay zb*-?kTKj6Kr*zB}{+DHDBO0W~#y)@CqDbZdH9NGG%vy7kc?&`^!=k7vj4M_sS7$cp zaSb#?YU+yU{KREZV7og=4LGd+*2ML#$bZ5uXVveoP{X}<259Q~2{PPCwnewm(j-ju zCghxjp??M$MT&MVHsplg4X{2cd8Dl^i|&IE&MTchCg~gKFv<3?Nr{Ic%MMLlj~$Rx zet+zzWnPnRWY!EbDg54cUl++sx7I_(Y2y9R4k!JgyM8|eAeY71q3$B98)4jR;XrJE z_KIP~d+?FIZyCfmsW4Gj!QL~xkb;jn_B!O=5AIC6mqScuM%tmLQEh|Wfg@{xp&2b3 zIabOqwp_8LMVKO(g~GGePQN4WSPC|?E~+2*V>!tvYqlSNIwjAmlXX9YTeXaD6*yW- z=TGd8j}P>P*CB;TmbZkVE$-qh71$W2GDXNiv|rmF%uj>GRREOmD)~>RkcAFI3x|bM zHHMb;bQi$;-*6{vAhas6{Nc$Y`bsh89d zKKt!b(pc^aI;vHBev@woADwb1^?@N(Vnk4T{xL#X6M_3_xy|Rxm*tDMTKZ zyT$U~lWBrHX@Ee44XtmGssUNE>{u8D2dhMnR8WXy0eEoqomX0VM_|K+t8t{~zX;9` zMLq2_zP}bOJpb;>;BoO++(*$V#{Q^+zwg^Jos;7Q2fg8z3zVXUl0Qp0!R%=+ta=Dl z&itZ~-sqp$zpr;Fo3nQS&fXEs^A$D+LeTp`$ol#DS5f$_{UbvlEM0c`jHDVpl6o@)&;M4iB? zgLU=~5RQd=@tmp5Y27Q^`xpFQ ztQd~(mm}l-$!q)k58T+XF65W6J$g=ozn^6dQALG_t|$h#g=XlXt9^(Th(77)7V(oI zfL|YSs57K2CFv8P$|qr7C-?vhJ;`otS?IGZzUI_>H;VsvPwd+O`=4ff58ufT1nvX= z3nZ<}PUKT!!0PCgd`e1j)=tnEOYDzpr|r4^)NCO()!R3F!dTTad<<5_K(SyAyt5dG z&V4*6)tLrTi8H@2)x9y+_Qx}o+6(f-TV`8|ok2sD)(zY!uNt>tYd;TM13}^1vVXn| zXiEI3Z7O4VgI{UZ)Z8YysLAaqTa=7|GkHVrPzuYWR1zl~N2Qc{3>yiHj`-RdCM#$H?!LwS zZNO*PD790q2|TsMKFcUxaxIaw223=F8gTE)Ag_FJ*6~l1btT9Dp>rVkV*{q;4sI25 z&=-Vb5H(_p^__Yf0?j_Y*orFhn7aj@N|Zp>6d2XcdWPS9x(2XH2W^+MeRT2sG3PpU zDqbQ)*~46p$-QfHVA?Y6j5r)Txpi6_qL^mjYhebYJ&uB!K;|sPexcI2n1SVomoE$x2k5Rj{-m`ejMvmWucb2;ZOs3o(+j$= z86(ymFYNdD7mWYaD=!_Cb7dt@c>=d1%__iJ!h6N6yX<3FQHC`${@gVjcpEsHbBQMTC2Wjp+_kIgSJkRZgNydo?HzPo6?2Ijgf+o*9F~6?F#_GLOYfF9 z#0_H8rn7iX8@W1bO_{yrr8U-g3CXSSi>Hc!Ib~a{gf+K;i+`v>AozQ+qfW00X5jXc zE{>f1gDbIgn1u5IuH=E#kJ^QVxt`dD-2+hI7PVjE+gW)rSDLyvTE|m0K06h$?OygK z*~qfr#oghJbEEY@wX_~_J?!L z4f9y|Z8LV~1g%QRkA-_};-&-MJ+wCoRfT%Wjn<5-n3XHCYc!VX0k(Novr9f%6qvA& zUz6@^Y)qO>C<0Ie^chVux6HmEDk_tsrA#kTXo?C0lKl7PTzA2tD8oKPNxnGa^e|L3 zHVs$57>`_-aC|(FUYGKxRs!wW8}XuNA$@f1hxYm*KMQDU{zU@H;Z0KF>!B|v^>6z5 z+6HDtGSWw%;I1#e)!40hVdC3`6g9w9@m@jKf0`hI?>!b1mv1FE302C=tmaxhMj-JP z-6?LV&K)2EbI(%2S%a2SuB}ghOty}-8yK(mwn}0*b~Ak%y9c*{SN7^`Cq_bs(LpB9 zaBW7N{@JY%g~hJq62IwFlOe;o{c?!WSvx&1n#wyaB&>k5EK)oSZN`C3~-H z6mJ!H>st+%gqe}bG2Ihw1%BSTXW4GuRq||SEj)DjTa9BPZKzr-0T<6};;#sbzlV{^rmCsM*?x!A zQ%;R*nUSuk)r7(R3N1cLn9)D}HbZ7RsC*v=svSAlx2G#1KnYf($srKXTA8 z;>KK~IGKSQT?>NVg2{_j4qfV7$zLBO5>=L!Hf)h*w=qX=4q^ip(cj?gjq&AM9eeln z$x87m{Z$S`3bcT*n)58qYzhm>j8mOWE2{-yBT16*! zum-5dFP>1xEQ)l6XNh?52*q9Csi};oE40i&A&Y>4&h!lha(`Yk)m0*g0w66xxL%bL z9)lIpVne8)m(|2~nc)1wJ9)OI1Nudas_7}XYp$y-WJuZEhP)c2FSv_TGB#t$E+f*7 zt94GRQDxlhh2ucK7WXM$9Pmw>-dP*|POZTJ=a#8j6FV2QI|@pkF=|Tpyt7{k#$nee zWH!vpr;cVuEu7>2RbpP(U58?g+;SaKpmjZ0p0^`)cH7|odPagvtJTUf%ssoQ6aD`v zbZSF3sw6_)y6i}JgOzM!RDQv+c5#18+e@_hxlIrPa;)03^gZ7yF)ElJ^NP$IW`q92 z|7f56W=7q$a{O}Td~xM2wb`85CG7=&Q_mfJko0h+L5<`qaIbAFs>Z{g2;w+89#n9u#}& z+3X+2x`ZCnHH;z6MdL!a^dbGbXMP4pMQv-D?IwRklwM|Ey6uT9!#O<3>Baaa8e1+Q z>o|z9Yu;)NOvRQSWfi-^0w_hGd*+gAfMAW;eX~t#VEl9v>G;JLkOSIMQQtaz*vdo@ zxf~oD@@GFi@lC*kz;o*SYQu=t2t&X`*=1^{|sgB6WYO6i2eKEbbBR7nqdn@|Pp{0K_7Mh9#M{UtJxL3|YJ53(t1v!Dmw{ zu-UXM9w=RWhk`-!9SX@#OR&oXOe*W&;A)azf1myd8`^8$jrB)no2o@;9e&qf6@lC( zdc!Haz>Vq^&SDw0qJ6rwutiC{e+4#P#NUKLWksjhJn#4R0U7-coVM_TK(VUWmtQ(! zd|OR_fhw*qYwh>*2BfqZhDA9)G>GeOsh^56X*dUEVhd(6Emk?;nRrHzP`}G(z#L!i z&#V4ejx-stE?3qn7{Dn7tfEx~Rd#rQgSH`2F2-Jaj=5Pd>>h#MkyBHk}Ntn805t;sbv@zkJ=R`>?EbbVA zkwtO|OVKL6IfO=IjUGQyONy~xae=G?t!_%e?rkG+*j5kJp|2pdYclYsARE5HhWKI= zMK0)cx0{rukZFVK{!~W7ta0mOo8_vOULPfGX({{@HV3nDxc~YU9YlA+b4x0Oo z0Lw$HvWXtL)F1ZHH6}=T=s?0q!aIH90EPVh?V1|-arNFHE(8Gj3Y4U4b|qEOV>g0s zU%JW+>zFIlOivK}_w>f6%aIeQS#vlvsvz+V1Hc~IbvU=Pb!hSWh4>x@Jlk&~0WTSE zd89vz=Wba&^+X*3*347xJ5a2VcXR<{*j4)=3Oh{ks&xC=xTkQrf1bqjDeb! z^?JA@L~Ufsrs;+{mqRmqJDNn1r+xpqlU2lS-&$9$XSa2>nB&>_$4|$k1R8mEuD`Qz zPtVCdR3~ATReHex-?mlMYT$$(0VhQGj3vOhomaQZf!3Qm0wY3N!JKJqYHm+ zUpCrV1$(#ck+l1zvjvr$y31vvBPMCM6D&||6qWN4PBGJnTiW_|sJLqTt@c!weXu}p zj_|H!&9=|Lt;SDc_M9$>aBwct=-&U@c;egcA~mjx=T|j=)cpYc`DYh!`P{31r&sM1 zZI0llh56ia@tiV|S-`#RO4NjX6{V<@G-;_=rk2@VDk(|eJU9pKa?9DWVp}&%RwcuK*2pOX%LKyzwY|Ht$6vIpf=zmTM|seCgWKB)Q^I!ZruI(>(3yCs4SPz5AK zNLZ&#@w+;g94#G@%ZC6cNSI3%IiM{LyAqC9l|| zoaq%s)O8fh;uPdQ0gsd@98Qm?FT#$iGc;0W8^5OGcW_fwG`A{MMzoPtbfEx7zZLy@^i@OjU1rXju+9pXq? zFgw;RAPmllSi6J2OMvUZ;HO>t28?AHlIsH%eX8oO!6n6X^*0QR(zh7bjg5jg-Nla2 zLc|DwX9sRvWDOFH*GY0UGm@O%@X=&C{Clp|^?XE0P4A1Q?EYLcInfi!(0QHB<|&{B z^h1UpS)3rnFYoB}1h6VSbR+rq4vD(M=IRgOJ3qTK1uUi^EA6T0b3?1VN^ccr9bcTb zg-EZi^h2~8EgD;kzE(Vx10^i*JM+nle5IQ<41xqoF{q0EACY31#3NL;M+(y|ZEP5< z!73yYi1$~p23qN5qkMC(tT%}qd4kzITo0#vT!EtrAhH7aPlH@? zVzwIK9)(Gi73p(i=)-4SD)*#yj40!=UObafo$aq}?Cc}S0b(ksbvHhBhg=!=_+VOh zO!1DqBNlv-(;)T=Nr}sGT;FZsS%DH_nRh8@cT_E3a?&&7{p`&`%;unWHN*kW-=6@qP%# zbUnMDr`nJRR$2`GM0$|M*cuKjBtI~83<1zHXKrRRIhbTQG{Oi8AbGxYQ0CFkU28BJ zE8O`-SDX5j6RL0g@s?Yq`qJj^Cc~eA z0T>xx)=-8pb`BsvoRp_Q^?Dd|VYc4(X5@%r=Qg|8b`XMB*)_}d^48w}Y0ot~bRRm1 z-$fGNq7`XC(mDha)s#@f5zlTnWRm26lM?!8wTc0U;#XkZV13TZz2Z)MwACo6kx5Aw zt1D{|;-}y<&s0-X>e^@~28Z@es(m12MG^88id!*0{`hB|PMM17VO9z$!doxfAc_9p zQ1gu@lfi+Cg4op7NQ$gKeKy=i1|-PEv9$)iLdHXUT@Kl?6F?Ln#J zDxC)V3)69kd_UTb($tKY5~?upTZ@x#Ah1<>FZtZG$M-^Z@uEs2@-!KdlBlz(n5Nk2 zlp#S1<&z>%03-tj^_FpE&_l0kSegdJ`Ef7gnZ7&SpLvHJ9YRn~_+Qr&LKDuCbRm7FfpC%! zjZE2ycj0wD9uNFBy(|8+Vb1K}4@tBz+=0#8r|DK?(o_!jl1CV+EVke|PjT7go#N5! zl&=wnxQk%$1{Pw#cq@tUqk{Gb4%HIca4GHP#b!&FEy@{aY;4eBblrv(5=fT+-x?zQ zN1MLNW#WW!;0?zc9=1n=u4In_m)+yDi0<@iJ=|SYtnaqfec{`h(;ia~)0va34|-Ae zPi}M}9frl@2_#||;Zn(A`vcd?Fqv=`=NtBPE6v!3jqXa3oA!^8`}hvl$| zML6G`!*f%vRCD?Pf*_Ke2{otxPLu0aOKc&Lfd1#K$j95(RH*n%%b~6L&ZI!(W_yY~ zyWw6L4qyKZNOmvtP7M73jcAf8`eMi1yTdQXINtUFjIF*ZE6@u zZxv6~Lwo>66^liqRWPXNE)!3hxVc*{+&+6u=?i^fjdY!s7j8J--Z7@8i7WPWvc9bB zvr(e65Hx<_wsvEjV7@fV^T8CucTVJFe$Swea6l)wjG^dl;3rUv*TdAI2W&mxU}x%N zWbhG9J$DECv&pa|Eh?(aOLT(zctnVpONWoVL$v80mx#=6I7 z49pmm2#$lAGqzDGmVwS5nUL@wZeGxX`z{2P>d{GRdh2%fRg`p9S-sR`domaA%ftNR zNw6OwDn9|A&cR!GS+QoBR6_yGl-=BEP8n<`Giu0|4*2g?&)($IuerjYV=vvL&YHDV zb0XgUs(EX6BcCPi7sbkL>?6s!!%gkq!#A4}k#ql`o;s8~V6c~%#)PUlMkL5Wd}&a? z)UKktcpgWrOIDZ5^ z%;7FN@T-7suX4rR0St5&$-|toJx}1AMeP^(6`ywz%slJhz87Nj8CA7e1nq042kt6xZ+Ff$K5g;E#TZqyT4-xj?{|N#A^!2 zSJpTpRWfRmOZjDz+dsNtQk4h_haD8H=|xvOQ*N{<92RIY_x2M<+}`mT@xi!FmcrEv z+6pqg$YhsrL=>pG*zed<*;x<5UAJ{z(tw$28xA$|C}ty6;?UH4P-JbTQahMZjCNCJ zd`Up`_*Jek$3DN6H?_vGL6RkY3t+#_nU=EwHw|<>4-oy6xK+`oVV7+F>b;K~03Jd) z@h^;boDK0Z2=@A6Z`zGSKRpv8d-L3E+4N(8`ir)}FqB|D4?lfTw4)7j{!&2qc`87t zZ4%QCOM)3y56}hY{2r_}_FsdKX{rEU~T|?siSezH%$$Qy7$) zpGe}HgK1*6Lmt(JETZ@h%6y*=k|3fUKSM{r_3wH(Tziy87|H|wX>#c{Rl2NE^FE`| zaJxw7f87W)Ul+uRx~$wUjO|40$v;qjBx_!*uEUnPU^Z&kuj>(ZUHHSqv4MK7v$@+z zYZ=rQp-HNBDnz#v1Gdw6N050c9%hit6UxMb1H5g_7`eXUZ9ThUdAP8kM+0B>Wpo^{ z61zJ-Fqpk_7FSV@FmKg2wF53HzX!L^Jf5ir0Nv!^-hPfVC4r_Ze#GwDDUlexm_h6z ztLfxy)N^hjT-x%kv7x?XVW%2=4Qt~R9UZ@&E35pDo5w8I*FObQxfhk8DHpKxY6Ym1YQ ze_jLBBJ{-IY}&2TKv zlpLkLFwQj>ZTQp>X^njYuBt>TR~RGq)!8iC??NpDGM*RKKRbtlu-e&*5rpG)M`DLQabjW)b=UKSN`&#WbQu~3X>Ih4H<8Ll>$jqpC zca)oO%tq!T6*-(5V*g65hdQ)2AHZ!+5ilgqzA`U}XvZIUge%KqDwY0DIU~TyqO?<^ z>akc&+wn`C#MTtBuR2?`NW*4k^tKQq5nT-#2-zag(d{S=mkF#P5*|9KF000!*3Xrj z9-gtcURHlWNClJ|OaqGko&9eZbXYJTYLrkQPx14KIPRx2c%OJt^ba9=2hX1Wl*I=908I|ADE zn^F5d?nPrDrFb(Ng`VY>bu3gm2`I`e|1cq(|46(N&4N#X`3q#LsQqx;%twrO{l*e- zlK^iK%4-S#@+#VWu`0wlZIyG9em1?(m#B=43iWquJ2~l1eCb-?ybA9AQAGNLWEsCj zuYIK}n(bF{7`<06_nPQ-E6J%?Hi2z>s}ZNhI!Zs*tHP-^tT8aIMZpb3r**9W>TV_Y zbrv``hqSG!1DINj5B(KsrrIXT)_puMeqgTVVK^X!^c5(agLu`6W_sa=1Dx$(4*k~lN-k3^(nJ-hXjsm< z7+g$2(@8@C_s_13yq9UHlEP|2z0;aX4iOen6*vQCztZ9n%9NbjjBT?`(d?A%y9~NQ zrRh=fvLL5Fw+E$h*j4ZP2V8*I<>t;5BwU)z3%fFmV&%CHE6|u zUk%h4)U&TMU2fg4ycc0mHKXt^-k|}BZ#K46bn@zpL@@A;)0AL4fIr1Z)#Rv&xAwE= zG=#(XBlh^Av6!4^`=K`z3e_}=*GeMCWJbH}!Tx8I9QXQFhn8EDPT!b*+C(;h#4u

nCQ@Re)<>Bea{Z}-E)`f8Uh8NyR%@X^Xd5Zlc_cCHxHHP4%Ro>zVdU#ub+UA&au?b~zt6L%+f;GQwZv6t zqj3%x6S{?{P&5}i2H|;3iWtOY=rRpdwPft?o_gv%8|;w{tJ>HGH^2pU!|N%bTo6su zzcY0#Uz%qu-4fbatS1+w&(kkP`Q1qJoI6t)b$b!A`&9=4UaL3JVITJ%65A}bBwypRW+n23@ckL3?PW-#@wW@IF{cQWh}cKS~2}j5kDb zl-HhjR-#mITpDzsoa=h_O^Ihn%pV@w0rov0PA822O&cE(oODQ^9nMRzZ=&7K=vzp( zh(80w{juC*nNLnz*Sd_&?(XgKJhX#IV7c7A=ds$lB(BVj2+)_>+Hv^HJN>&plS5m6 z%azPDUSoSN*6gYRz1l$LN^hJ^E3Xyy;WpZ==f@|PhLf;i|V@-DLqM!QNxE( zu&VA=7Xq2DtP(Q-FN`ug3HOn@z}Td86w!%EQ~dNS2U@?eR~D8Z5k>ahv9aPSSb zkKnXNO%I=Rk_H`m_e?dk5(7bd(=NRCx^>YQd@+tcKtN$L>vbKlpN@65?UJe%G&(PC zNws(0G4#+=CbZN=zK;xB0&`XakSa!8@7e@Y2ju~YS?@qDB59_eB-ctj3Y@DqsNmGp z5~v1<9lEfiY^ipNo_#H-I!KhzvUb_Q;u7N-)X{Wm3#f?>IIqXr*ta**`E7Q++`hs( z%+>-wZ<+@rq4;uJA%|#l8bNZe80yY;Yv3cYwyH6g5!XU z+3%2Q3Ln**fG3mg_A20d0Y9QoFWGE*evk6#KFCv}8t?EAakp_!k_ZkS*QCCGVhsKK zWF99Qtj|OiuStyLR$Dk-GM2>%$H8-Nt(pOGMoVx5uZU_CU_t7ySg0g{k_TtaU^^W! zudMR&s*5>m=+{t|Ks4n1E!mixB){T1lRaEemq@Go$qtOp4-!RbrCEVD0k)?oQ~t-denab2Ms>uzqY6uEZ&HmU(z2N^L}KASCxIylR~AI%S5ZWA8)oa9 z@nZQ}zP;MLex1R3tExtAKY{47cTgY!3^B?SkECZ;5V9`e&%tmoL_3I8jHNQinu7m;wX^Q{eJybmx;hxDZ}$GTM8Y8dyZ=ciR!sKTQ@{08cPp~I zO~b{paHrC)ksWU}e28V^Uw#)k35X@<6Ow1@dRd9sZkYItHD5~D9sau1wPXxY#iOGS zY!~x%D~w3`Is%Tl#W-u5^1o90c1u{ZOgvh9_4@8Xu*dRQ*-36Y25|ls!U3&nu(mKM zZ+nrpAReON^c$?T?kt{*etL%&YZ(Mnx=t6wSWj@(@?xtY-$Vo;1>p_cs;*swzfi#G zi6i!_K+%R#I>(CtGw*KXQm%CQ7ehk^eq7#ATG2)3th?CHrQIw5KS030-Lt04Xz0r} z_X}|5ezLjYHx~$-B!r|XZ#mdSlYx-TFY!KZ2`2TNW)E*+C`yT{sGl)kx8%fyOm?;H z#)s3&dI7NwdYEiLuA=x*@T-KBkS5dw7TZP1TRwU(AW{KH>PdUex_i8hFv62?OD36d z$7IM?0C+ayU9vr6s+jOKhmy~RIaw)#Bb8c|y`KwZsBcgrH6HH)ex+3LJT~fDINHPgT_%=8+tEz`lMZP}j*I3+E z2AWgpt*O_eGFITF3g9cx5;n><>tpQ-~(q1VlI1u z21wa|e3$K}a1vqLBkVYS9N)w#x7bQ&_ez?Za$L|Fg}%(^MbyP;EK0A$?-d&s-a2Kg zkygo}=9ck|!X*%wP`w!SmB$zsh|<6a0j6NAA(#Q_Nv4CtZ)SN=snsl~|E|O31SXNY z7bby+h*ysSy7ktQ;hL^8b^H5%of#sOnP6@+Ht31nf(ppW0e zMwWDRxJvQW`gp#8U5@xR6Dv7!OIoA+iX_pP1iW#1S?qOz9Qw9w%JW5WUxqh*5#?zr%k-gRmp~fCix(q0B0VH2&R&tV}B1`mDBlq_6 z7&uz{)NLuz%>$I+BArNFix>1X+32w5lVx)rS$v0L*`RO6KwzceMT}uLaixkQ_3CUS_KtDn{fC`!z4jFXQJ4>* zsMnmv_gh{P8^$LhD_zdnWZ%s0Om7rEAIgd2)7 zjQ!SL57fyX#Qsw}gaXLVEMAiQPOG*q7r~gR6rrEWL_D#dzLQk(h6W!+wJGx^gi6O= zjjynJOBf7e3cZ19R^sSXdH5U;@)CjJHYKxd_Gcvl&g7g4zNjc6=1o{$=hS;U6b1J7 z)m5YUP+D=dfkRZ^%;o#b!MNM^@6j7oDUyO6SS56SY(eQl8ZY4WmEuE;`A;qMlL$Ic z{6_HnF$A37ea*?w*zv(Y);UgHKiMpEj>SY#IdnL+<^AKLS$r-hCq`XTXwsEq=Yp_L zUqgJ*a_}%P7?B1)6XS;=P?Iovpb777%50rt9D@y?S)2W89hz-9zBtpwQWwdKi#bGu zm{i{bL6Ep4qUH4e)IoREGIb)0eNnG7K+{8xgL_!T+lgO|f)*d%6P}A60tAq=zwy!xD`O%oiGF&zSG`-2QF4U@o_hSg`i$ zce2Z;Rg%WhjIP3Mxu;2p1?jLEH1d~Nbcj|F&y{}MIkK*Yq|SqVI?}G&oEro!9CdY& z4+X0aM%jxv7DbhXh|LfF5AtUX*{-n~MlEZ{BWqb3qtveHfPko?n@IX%T}E56b(@sr zjXqxPe9N3@?#yh25*|r$n}7j(`;lqq+BNFoiVZ)c=>C`LJKX$jX(<>uHx{*90$c*G z`>u$EfGJ7Tauk8262HbEj@dxEB2Sw*Z;YCstE^Tc~xj{r2<;T&(rJAfiJ0t zzvMNgB`|AI(7flA$xQpC9tknx^7uDcGQIh@cuWv2BMt#>8I}Haag)mLNQh`((VE`N z+r5%{GQul5;tToJo9uJi_%&yqXVs1xfdM%FwjI9V@#%Hm*wEd82iphot{!P@$}-NC-Lw~x;G0neP6{};386JIe%@$m=| zn-JcfU`4JCiFxLlZOoHJH9aTjc)o0l(+^l`yhAJET0cFDK_riV6cm&Bw_Q-X-f2WX zE9*{>B^Z=SofFnl_7s@bq<%TrhVef*}>St zM>j|=sORh6z0f)%^NWiZ<>k9NHh5#ILJTZugd_y8r)Cpkc4|bG@@$iLtMa|>_rt0| zn@xxVQl*U8FP$eL!due|YS_m!3c~_L1N=TyNF6y{SE96|wqOpm>kmnfUJMKQz7p1B03B_UU#Wr@MyGy}1BiR~7ON$SWIs10_OD zeWwZ3OpgJ{&p#~rlV->_o3(&20`$~&c5+H8%BdU$)Ss&1+MeObwIi$9pEui6pRnAG z64XqwC-~lr>mtc{^no5+Q{OhC^5}y>`>6v+@|gv$22cU0n^0NM8!E))@q1Aj;UoXB z;RYdqhnn)W?e1PgYZ1y? zbcA6;-v@xBS9<0zI=Y{;85$BnRQyGwjI^^Vvq(_QDJ%~m=oV^wUmXcq_R=mA0JJpX z>3ZDiMZ4<@tzai?IcKue1CtsfKJM&PO=+JBu|~Oo{E@62M+@s#5Nif(S>hDY!_Zs> zhIbY(cym~Je0=J?0|_-HX9K&VeXdj=F)I72)!s6a6cty5K6|$eQ2y|dQ7RYXFz}EB zblPbm6E>4tbC1oBQ=`5e1DO;h`7caZAZD)yOR&XAAXM@5Uu@Hj?v=(YnR&}q&FofI}*Ew=YHo1+bM2oBXu~93D5N8?`7gU;s4y-FuM9-NF}s zP%EHn=Tho^D-+>z^#*EfV3}yGA6seu4&YPege-Ugl?>{QPaJ%I@oUZ+OC+kR*jcVH z(sL_@PFmLC{tfXwzt{&@8!~01$lY-I_S$>GB(mKCwm#y}LcpJTk6EG27W_O$Q25x1 zFscJD1#XWj!SA-PBTN2t-(Z5arfJ}4;jdLQU8bemkD;rd_)_KA|J20F{Dy+!CTAzA7-(RV1U zn1gg+l61k_S&*%VCBMz*ZkuY$8)zH5U`O0dIi4~P)Zl8Y_?9|3pF)hjwr*4HR8++7 z-Pp{Y58n0v&XMVRca_X=6aLPYa)J@p79BMytnoPAl;_}bHEz`2!Egv5MMXd7rdO$F zu=5u*5#{$4O}jW1-P0Z5>_-c>3KB)jMcghw;AJ!#HRt_6-McaTW6?E`$(Us{Hw%%A z-cdM;;@v5vxX{4fz_5E3zKaR9L;V2Jiwo*BUxJd)ncP4#PYs_r$ZK}E-+;%=1lZov z{|P_mtF^>z(`)za?i8Y0k0U23_ceBUp-_(ZMCdR`%05P(DLQc0&0N3>RJj#??p1lA z@cX18J-8q3)w4lLr7c`? z2~!`d%wrnT2*=i#Tz~TO-?=V&D}6 z`gq(ai>^o6^p87Hm}pf4KF%3lieP1Wz^u@(X>>1B@xfWTi~l)p%e6td`sGTF zGsTPfUp#iTrE+?A5g?fjqhN4OdA0N-MF{>}#@NOarB7spxw1@u5m~KiWln#t8cyf0%wZE+h zTLFN(1=vfN0wp?V5zKIbQ!Kd|+p z1dg!3=AUD1Z`H2VUwtkO+5kyz)ZnNY^YzERD~^iIR+P74`vk-Fch#Y4}}W}G+-D$*p&I=>D{S{e<_;-lY{b6>Y%v=<88-NMhegdT#{dJMUWqD}=ORHj!BPI;0zWGhJ;n@jhA1CWuMfYeIE)533UGx-E6IO|wx^b2*V!lsX` zhaRmUXZS+t4wPkt{=*W&^;v8K9d=721<4>7y}wFb88e?hf<0%QKHOe!=RKaj;7yY> zb>;(x&?2KRCNm{521cNX?QEoDAn4Hz;VH)&(5F_!lnNI2ud|&R&ktfW_bA=t&H*F% z{ccNP@m8vso|6n&tlLv8Xt)iqmcVIuv}5xO7B%x;y>)Wu`JA;@YULYv$8i@l9Yj*2 zOvw7#)#Ljs?oOIyo{gP8z?WLQMX(mydb;d3T z8mpFZ#9}3y3!SbC1!{?+`s%SQkqFhx8Q@B`x)y=VRkUlDF-Y*O6Pf_K?7u$1*Nb%o z3^DiDAexcEAmEOd3Oa|JuX4(uKwv-@tfsJcVVBIJaYyZ~AlOFb;UBnJnqJU(?QZ@@Ln+OZlNol|%6gW(x7-VkY9wqUD*hq7M`X|OYo4hD zWkrq#c4EOTscP$2B>i*d34qJ6gi#Gg?Sj(RI5!oWWN|m!4jD?n#eb@0?Fmrz{UZt) z^mHKHajAs_(c4PByI8G+5%-A)=frr>0)xCY68bO{r0sl|Mnp5}<7AN>njM|~d!aoW zd|45wE^w@7cf9MF{ZO#rFv6pQNiC>@vhU}B-Kw0{)6yr=Fy89w3`IZP?0^TIU1?zH zzIv@scexn_6sXh2PT^)`_kg)LBO84|?K)tKAV*1?D#b{Ca8i6_Q&>*jetZsaMKLw# zs1f~UAU2?0t0*^CC1s{-4>B}@tM$Kvz}m09L;;glkq~+QJ_?ei>CZ3qA4z3sxf6v# zkH=en2iP!jq~!!UX6B(QKDzEQT2R5om<`_|HRQ@?P0qpx+m~om`i}{`#PYbhe-%sJs4z`W1Zt8PMAM^y%Wn^u){N zK$6tuWjE$9MUbdb)n=06f9Q_8;hFq-(Q^2!%+V-03x*H+c&)rb#SSLf-TGjKC!mrlTVau z-hn)5-_<6c04rEdIav|rPBdpWrOj5$e3-y{phiO3I>0V&&HHhYSq2C{{5NPS&<66? zeEug8Nt8G-N%<8kc6t@(2o+sa25Y5}e>YxZ*cW$}&~j*}!=97?^ypabHQ<#rU22is zA!)X~&(om_Ji+skvBu9s6Ih?Dd3aqedNHylhc3NEc?D!7YW*P+^o=5b_H%jGrlFNl zm!6^}!bD2E&htE2uGJw)N?;_O>G@W}y&qg9WT@@kOw#_4C5rdATP3BoBHa7I2NB$g zDreNb^u%hRiVRB|CO5qqSaOh#_+(~Z0n1=F5JC@xsCQp@V7gCAnBMX47T8VVfy@AH zDsR?8dBVf$G$O0L&UVy?ON+zq4X4c`Rw$ViZ9Q@yr6y|V9l~~CrJMWhF^{|^ZVe!L zp%lSMn0Fn7iuoU~2u~yJR=Ie7j(QL%b(^VfRbYEct(98cM|#}%U8d1ixmVSRqA?B# z0S$wl+5PWU@Nd?1x8pS(=A7r(UEbk@mO;&UQKr5WO|A>_>un&>%y}NZ29F2{8O`&Q z);x>_T}06VjSPzOmLXfg2HVFFA7MQkKcXEdsaF@sf=?8H0a4$3^ijiQp2R0Dz2hsC z6epJn*psDuOYl$lo|uNAP)YfKqg#t(7rJQE&lxD_mLsseTA_rCaO(8}WE6pe$ZHz` zw6f91ZbuDsT{?rduH8m*yG>`T$PUBrKUZn*-@89{vmfz?z%k#C`)I@tW0t8sPF%(= zR{TRKyvoxTF4P47xLVDkDvAXB_CS0_&)3U6$hVXxiF8&=1U9yC_d|B+>Jz|IGfS7lGOW;xa~3vvjhczIT7WD zz_+CNQYInP(Wj@@EnCn3Vkw*Vf^vze*8DAOV$<-x*lamXE4R#zfK-h02zYzh0uS=j z`6bT!p3*yegz75TkQwssI3Iy;^M&9mCI=+-o-R+GJp(pCqp~8rP*wun8c%)xeKVBB z27AtDyB92+G6^NmnG>#rGOC&r^-*>+d+VTyNj;DYsjD$Fko8!R4iH`5XwE@B1drZj zsMmPJpz6s<7^X6jD5j@Pc>G#zn3ZLz(F#nq7o#Qe_~pU z5>>J*aWD%|-Qnhdn_y|o3js{tdzUTK`@qX0lr08y8Ajew?`gWl@CtvrT4)JbMl+aa z#B8^0{i%T+7Jyy$2?!B9D_;}w4U$8^KK4lsVS`Fqmd1Xf(fs((seKufZTV``VGvFY z*U2zMw-C9Gr~XX3m#hEZM{Lt6S(x-X_9*ygSw-fh1m!YUojHhkZ2^M0%54iz5sT!FY*g?>Mv@b~(7*JFZ7?D##HO0kp1*G-(-h(% zdsXf3R01GItQIX2=7vYB>jgF~eFMzXCsLR7a?hD?jYze7O~!QdR|r6wS{kF9BSw$y zm6Q)#XMUO8U-y@GMRR1VHd5J#(l=R8&No%n!ST*4EZ_{-)>1c!jfbg}(y3KM5w^B5 znBaAX-cZ&mSe{&{W(v{5%Ji&z_Bw@EsadRs(xZDW)&`2otrn($R7cHE8M=B zFvF`@?%I7oa7KH^XuFBOg@+9Vit2+O)sVB8BwXM1mQqDGsVoZADq%S!Ee^Vkg&O)q zZrqVWQ)blE=A2`AcnmwsJ1!TATOt;VOvkrv8yPKh`oOZ8xZA5U$xk7Rd-RWQbV@eq zQojt_-de=Wq}p_*SZUgu(3A%+8u#wW?Oh^vN5t_csH3_N6Mo~848=Gvga~*z`? zi)uIi1n_a;nM!-I7J3w*%!Y`5Uaqjc1XAtpg?$7} z=k?&95$EG5(>cdz6!iUnDCwL;$NMj+f=&{ZG0m7~K1Bz^T^WLe&}6FLx1xZ`uRUrPS`Q+twYusUjWMDr1?;7bo(^X zn(`a*9mpf^zbeD^OmUEmzm&!?gh+OTXen!3s20v}5!YJGnRgks&HBQifSFSXqpPmY z;+_vS3h#{LhIym60De^QHA$ZaaT4ZPr*4;cp!)2#vf8@90<7TMbU3j=OVD<)5%X!q z%>U9CKt9KSQx+x<`O@Izj6T>iRi`sVMwF6(A&&MtqcTzIBH68meO&THqj`BKW&j80 ze<#mGfv!*%1`$eiHw`z5bY-hrt>T?imqCICi8E?#qMkmJj}3@0;w}DqIc#SiVBubw zn~2Bf*e}Dr%Jg!Be%c1Lnz*|g9)&DWjTfjz&P**AF8W&g0+j!F%_?=b($jH^6JHmKOr7@l8FcJGk)V6EU2D=VewEd5rK zi5-t!?6GTU(x&;lr|UgN#4YFyZ-L=){$gUKq5coN^n?7q@hKM&MFttY+zJxz2fh&X z){4b!$tO3&)7Su+p@mUP;p5-O**5R`Dy7ZYJ>s09-s0m&`y5(=xR13Rn3 zqmn~gG!Td0FEKQ?z?fIuLu@zp?QA{DM*6*i=1BrY)%HqS3f*FtivrE=E4IgO<4zP7 zL@FZ*q40~q;L`&dVk?m$qKzHtX%Y@?xc1Ei#c|DfSdJe-@Haf?BmX;dDDF*@*Z1cW z3xsaU!dN!);nGFPU0RT}NIN>q5Ym*d6NWdkqN!Pp$RJ)4_woAxzd(Mq=HxFxSGq}S zQ@4vXRVIfdlqv1)_KvZP$APYgc_u#_=^a-fFJPFbZpadYkDG1%9bl6z=AO{dl zPFo3N|Mu5%*jHQTOMrkOkf=a1p%c`tncOY3T@sZ$Aj86uAr;v(-ak|hkUUAfz|)<% z5B;raZMb)sh6UO8sRA=<#gYt%;dUFmlX%Ag+xuhn4uZtPbP~|Ryk=!>(r|x54=7U}w<8qO*WDiFBK$3I zkZ{Xh5aqy6GB7F9VlW;ss9CVXVm!-5Lz?R+gYc@|nQ7WB{0qU1iT?TbgBG^dK}zeT zwy;#KqqPe6XqZhMH0u=uY_CrAc+v4#fjbc~K$Me^XRu6EHeTw;7ALH>xFZ7>Tk6yJQH#S4l53kxu6YEYd+ZY=xH@2VBvqr1A-FANe#J3_SL5-ZV6+#NdXpq z?aOKcjJ$SHacgfLNlb$&*;@$88DvIXfs+=o25yVi{CH0*wOHijj%-DmPb>5z!AZFH zrf-vg-YAkT@=0A!m%16YdS3JB$ zvk9-~wcv>Y$d z^rpZDM4~hfe~3B~bt}kropPD00}avvl;Jqfo-US-UyP zUh>|n7Kq7@GC84i37mSC-iW{SvR9@qFp8|YQ$95svPE+}e6f=8g%<-hKfSyU*SIiQ zC`Djh+9^F;;C*w+fqM>L!+S?dh{vxyf@rlm*GGs02iro6_z78^eUL*Gy$x}fgyr=9 z$&RGRMTnf{O5(O{dA0cnpfM_y=IQ!+K)}&hcUx%bTl#I^W&{2z-1Is+y{Ujl@oa#2 zEt_mVyoh20A`6us7%00W;tUqMs87(~0~ckj)!txGIBKBRYe;`^{4T6$jE28mi7$fh z+O%Cfip}eZ!h(c;jinIks8r&WOA82X9(rI;Bs)DHI^Z5>$>DaSW=7nfhVUxXnOekU zoGI2NGcfUCQYuf6|()?l@!NkeO z;43;=Y~U`3U$=)++e;CLHCm!M(e6h@3XPB%PX7HXsFXuJfx5R-jk@@)pf@@xINKRy zYna^ckNYwV=5v9@f*pJ5S@CkUVp4CDA-B71bS^A)hW;4aOYp$rYj4TyxiQVwg(6%j z^?f2)VJrHeeCKQ_M2hje-lCY!=mtU!<}e~;Sk4vDxrwmS=;Jm=*suF~RH@AWm+gPT z)yC<%Y3APWEk?8qNRC4UtXqLEfN}-ZyQmQZAZEjV8CvF7)k0N-%y1r&hz$>b`(I)N zQqi!S&H&Y<&`9M#0=WfOs)gUaEOd(r1HAe0Q~Js}WMiquNz z+0u-k_FL>f>ejn=iJEy{vTq_eE}>TRVwYD6#RiD@jVDkjST~<~I;afRAx5SD3K}?Q4h-G`j@FULg44fF-@|(rv&=>x?g()h% z#apMQ6cBr7;}B%WcrYfp1J#6+%$a8M+;z`t)yYvPf<~#8ZY0DV&U#W(3|eN(55ZC} zyE9yI6x=#A%x?ZRxXKM^ntR6R&f3WjA*|85sKGDv7sCLWw#eA0j_XZeOoPc>J3I8N z%XT4jua|HTW?qE0H%6C1CkFxH&w}5~U&VD{S%8v#rJ= zH3zbdLf)Z0+Bjd4gWC(Ioa*}%AR2TaJ?3efBgjFrGQ8P4gisNs3!ss5D4E5vGEJ)5 z?2f#%!#m|AWJw12T%N9l{&^x3bX!q{XrIDb&)12WRRvTN#JR?)QQc#a$m>qzW#S&$ zh_;aw8W^bKR7T7+Uf{AEk#dXKazS&`lY$Qmf@#q>@!xl~=>tc5MK3=qlZ;44C~~wJ ziA#Gf2pl{B>s8^7rFg>%&p4e7%R`Kl2_R>UK8xahY~Z=?ql&w1!P!@ptz%QD6bmSe;QoH=@a1D zu2`3mm@wdQ<2(`r-OOes~_&4rd(jut))7xhSG!L2vNkx|!uUvPsg7wQ0 z)?ALJXZ-8)`25{>{=}Q4S+AB= z=_K2>vnX2KzO7km{gdV?R|tC)A14Gk?9XN>t_JT=fv;L3^lmibWuO433gZbcdsD`_ zF|(4PK|9;I(eoP%7x&(HC@yBHjCi|Sf~@`Z^dkw`GFiZJIqBOimv8PT4jxPc*Os5F z&QY?2xb#t{ZWXrt(|`HKPWw&8@bWB?a2~LJ0N_j292dE0lP5Afzk1!zY8o$iQ3Szm zzq0~b^9M!F6IA97Qd5ru!%5{L!YIIe?GsI(8FTOi5UXCt79>4&L+OrRhF{2i(%ZvA zZa*sZ&~r`9oEsb{wPSq0^#{bdh8Es&2<|WumKmi;?zW-lPAGn5kq#t3kmR8AAl7r| zp@8q|^N?A+eg7R?siexrTz4FtGc;oVk z38hP=3}(c(RL?E~Ozr^6nV#a(uEx$#9E5#fbw6F)fQoWma&jh&$G5R7x47s#&n%IM zrL>>7{tA0TZ-J`!J07)TMaYUVVA&-W_}e;`~a&dES~mB^p639Sx3L9kmb>8tcRJZD3q)~#F# ziKg(?ZaFZP=UEL84xPvsfQZV)bIb`=_>|f$A~V2jjhUhy;Te(Gq$w2Tv(6h)O-w_d`p2jI@lWCxKkVYW0)wC^! z#tMZ?j~^?Fynw4ZyFZ0s>j!vSBMK+q4XpA=104|oee{`WW-K~xYeUkvyP117Vur?C z=2)aw{{QK`uYy*aL-GskZdgr$yx|pwit_A9ywK(f+?JlMzbpriIZ-qGe`Kve9mhy+ z+*GCg(sFd~{(aHr*;3h(vLOrN{ zJ1J#RVLld=3aM-{( zuFk5b{q}oa+LO*C*@oG_bHR4Qey@3ZtQ+EE8BT~vHxsJiTYqIbI87inLrabEp#==K zZQXpAbYlTYE}*nTtwZb*#r)vSm3K<8vhB42Xx>#d zvA2jS0`6rujpEHcU$&#YHa~yoPb2eGF(Tz}(?CHA8RBB)BLM+=nA_iq*{vadfX<-O zl9N|LlH_*y7qWP%mbK*lpW!BD9C&PR)1iSV&>`)isf5#S>Yd`bo4;7XLzY_Q#riFc z5%wdsy~OZ-AyoylH5~vgW3+Baig2+iWL2Ou(zFS`P3nVi$4a+>Dd(e1i z-F61L<)DIo6wAr>4n$Dnu`#2?x}|RIrd0xrOhRyZ7TC3`nbPxGB5uO4Rnm`?BZn+{ z&~*-Us(PQF>G~jHm+{t1fO_{viRateUZfSW43x2k{Um?BK~z8F&sAtKrISR`<)#hKZM74c z-!Pd+T^kJKfp$}z%u~i%#1N{Y9pV8bb8cZzR$sHLCgJ{E`A0t?n{bWrx{v?EAAf^P z?3ClVMV}Gr!lS$ZQ1wkDHoO3X8Lz?~+~JzuZ&*=H7cuw>bLTI)aXPQi71thN;^;b1 z*v`pVrJaxw_0dLip>6P^Q7uOTV%yp8TE?B=SX%pZLWlLTN?>43l_)h}12_O&@15Hg z5EuuV|LHU*=!x*D3llQw(_2h|z%Z0eisghb6X(kM99Hy4SPf-JoM~81Xh7l}?tFvf7 zImI3X}k@X z1yj0=?O?fes&vbi33mH#1!fiIoP7>qOnzxh*bvsf$gldNwK?L&J*Za*Tt;v4pQQGl zJ_4JB?sJBeFxGG3#EljmC^O@z;|cL`X9@sUAZqx04x^%D?A))88YP$Cg&v11Xj>rR z3M}?d5RnOxgChEWogd5Xi|J>761dRfSQ!7N9DU^hiy7$ z+fhOjwApO-Twip^E-@+e*^p5%f)gFUH?KUoOi@AceVX}=>sbAtB%6xluvnr~wRynI z&wmvk|5^`ZWKuuO>H<)c?p4%NXP0PnyyhgaCI<3;p^y<>y`$jIHtyUL%O0rkYPLtlc!u2DM9q8avi~f^1U|bE}FT4=GzT6HLwC1F*0~c10ZGER$*L z@54ETNaYfi5blQ7|8c?<1Qy>bK<1c#5F{i5VPR1XaVI8eXXnVYf54qTh{-lK0z}e> z?g|SaKW_xH&YV#`teA$r-FM(vh!(S431vHHz9KrsZ^Xsg+uV2d5%0`vT~~5>|8RD; zS8>xTDf%e+bu{^T#Qo8`SHcPoih%fJF)94nbdt-8Go+aw|a>NScRq z3HtCjR9kT8j9HsAzTR?UYm2Qhm$#-folA=N9RLfZ)>>e=UILhp4hh3X4sju zTqsy^yFuePNk}(tyg+Wr!I{~wIJlkIyJDIJ^bc&+;9@TuJRzR@4dapQT8>$#j9e1; zA#-Th(P)CZSDwu9tSDy|OOJ(ym0{Xrnky?t`FTiKl`dyABQ1Q_*=E_WFTEoatkY1_ zRlLg5NJH9n2C`RD`rLB0hNvUw=>m=T zn{0F&f9m(KV8w_x8WI9D*e*t-cLU1U^KzUHr)%&+XE!U zB8mhmWibj6Y+7RY@JZAs=-qAaf{&lLgYs$z!(kE@02C3XY{fC4;7%hGqaEIYMu9Ht z<}m(Trw)hJ$of5e?|Z5#n-!RnWHy_OOp(S{!+ihZ^^37Fnh_hGoo^74TT9v5(q^LQ z)1+0iOfDnI=8u{ncg#9T1kycFx>{(7-=qcLdTY7#RH)B_-o`ZK(`M#`%G3$UIxm5W zRaVLKgpFn?g{DsHqMT~CYr)$1*NaW3|LMD``GkTK9L9d^AjjTNY<@k8Lu%wesC0dn zeIj4K`cE&l3sKMo;3h=RKAS_gm}N`lLYXMNyFIDn#4DmO%GI}OrG9W2{ZaWbv8BG# zSido6om6dM5SrVd+QlW)Oq+qX?&yLF7<}M=pAASM zb@L@@oYb*2BvREn4(vpH$_`bu5r+s}Q7kv;AdOr@tXMnMozYmO>576KyS~`Rzbzn6RV*~V#DeDP=K=WIr+#rEd}KMe zEdHt7p$mLnIMjzN?48G6o{6BDe$_PL!9q{>>phk`t-eN)ng~r>@dP4-M?Fl4G7GB~ zO#TUTVuikmpm#Dw221UpVrVnpgy$ntzUL_H+}E(1Jn1j3%A*E53MeLtD zmndPw6REUO;XfUZ?Pg@(C_Z#Nm&s!1$b!c-B?47f@ z!*gSBGHxu3U6u@yTmlv3n)cdmK>C8VGUTLI-*?ICrc;4v82_n|4(Kv!2`8@bMKbwW zACll4#ah4L{Q!ga1gL@lznG4%3mZz&16$B+uAuy59|@YiJ3d39yF|AD-DUt{s_&l_ znRJ-S^)1I=Nm>4SO% z)o+WpnI-ZvjuoaDt{U}+*=#`Xp}%dY5=LUl<>Of=st7U`DW`A8AY+zBzp}6II?1` z1f6aJxonW`%j+)MwiLezt`%H7VySX};xlPi*3eEs9gDloyi3h~kSvFSQ43(eqMY=F zV7&drrpS(fPr5?M;^A$VV!Dqai#!2r+nrIY&-hi*CZU0U#I!4h& z<&k{iGDuDDV2-q5@30Be?%3V&BCz~Vp!vb-B0;2B+_!rJQGrh z-P*i_ETB(`FLDEM9xLlcTZl2tC~$5 zA%5<{nS6={6L`wCL0NO)SH+)lzNk^<1Ou}K?PAz2+L!gUPH57!sXc*D z@a3q`^=?j*L8r(!Fb-#{AO(0<-@4xS^`}MSx@=~@aARMQtRAhM1Y&Ks``6Wpx0%o) zV^^I4%eVBfCxMsO2-9NNRbi%10xx5ZSah`eq@J&G8(p^5SuEnjCq$BKuJt5?|B{-u zJz<({Qij%&tb|MFRUb`R8efkrqu1|CX)HriT$j( zi0h=JsV!3zomDsf#eCwMamom%olHwb+m}-ENb15BKe3gW+-FWptCE!W#cZPo(CnWa z6Ezu0(Hd(A#%3%4d%qUO@=e>^t%H`Q|0?cAY?OKDlilelOX^R|eEGy6%Qi(%`Eh%5 z(9kS0>mt+9zsjgoX`(3i<@1r_K1LVB-4DxezQaI6Z;+nFSjVFco`?%GFVCpi8R!7_0ZUBxUaSjt ztUzNF;xVB~fv8ZU5DLK`KuNX)FjQ7(LBslk2m>RUZ)4V&UpgDln(ltZ;VDPj;Dan$ zy|(b2m3<^dWyj&1F3)#kO5b0A?HK2T-GPa1jsX~V=s`c6=HKKrN0-ZWZPPgd$J1dFVhO1td=j0^_M^WpxE?H`P%NwHF zd&RMHsA@mOoi0x_F*CrtysWgdJOTFl>n@8K`i|GU-m;YFHURHzvGnM2P3a?bpJtrG zgD|}Ut)>S0glWGxaE26(6*qQB?CWYbTE|j`sm?C(yk|~Mc8L9qu7oC*dXjnrfLUYR z>r$jN^7+A0p{x&l-`!4tmg}>Ej(C;#`G?$?5y#j^choMBeq?<%xCR!Y&clW{EpL^}PP!Q12W(2%ee~PgDym{0XahuOK zt>uLlKr&a+=8If02?JIaMKUieIa@}}=*zs;sNVw+iGI8-tp5wi5bwS|4;7PJr=Qg9 z8gp~?<7=zFFPm5@kv?pN1n>9-EQ>T{LZ_(9j>-mgw_;_Y{Y8T^)Z8(&l~gFjK<|{7 z5P~e_N){*MDX-Wi{?~U@!nv@Mt*K=)P*6QO`eufuGafJ(WrB zLr}eJ5^sVSeqsK83ABq;1PDE5t2JUXh+;+OeA6qHCG8=7( z(}pa?ZiTlT6I($kdIUJUlFlQ`cl{@3atf{+`yqa_73a1~C@lUF{Zfc3bRrhQ;KevQ z1cCEd*R1zj^_3lf2~C$*vZp)E;{=WT{&HQUzmx5%7bKbAw?j8RGbb2G7`~~{N9V` zbUW3WkaWF1p>3mXmb7>8LxvYs!w_B3vA=rEnU)JF7_l_VITdl1>mrt(Z}Jr^*7{VM zxfPWt|H!0^LgqTsDtJG!hL@OYm-v)4IrzBCSu{5eL($19IV;OoI9&%1&pxT2G!XuX zuVVT%&|So-v*ULrhY<$A@a{N9$U~%mK2N#z-2Lx-N?CLM;T=1LI87m#792`kFozq_Z9S;0Rm{W-1oW_-_sF_5hX>9U?xXmoYG7R)s?+R7+VKW`4!BW`@%A2gl))|`XDX%7EUvsCT7tz&FneYHM?N)Y}t zqe(-;t~3UmTem94+7yR>OeK)Upxa9!pjNPu-AFvt#M-l)NlBuAkpU0U{EI&2I{#w9 z;|tw?@_lOnFF?@0V76>n+H;~)5*+pQ@ZIoE&OU7mfAuK@9`4$EASGs9l4Jn@?`5tN zDThQA(KY=H4|U3sQ5zgDIAWHl9U`H*wws+fQjuQajCy_lVx=86@(O>>V=j z$nRm(?UBif;F+-#sRt6XNoTPM3^$dN<7=7dY&+T5!}t1UR&zB9XeDL#wHZLA>1_zv zL7sDAvyoFqg-9r?`Gx3QNuvyD>Q&GpK%eS4_m_MrBW~AR>&}K0icE*ExPaDT?RB5f z{=%^kFK$d86#}?B%UY78N|a}R-9qwv?7NKNF?F=xv|YBa_yJ_uX_HnDd2z)w{|qw@ zsI@W9L=&9kyyn;?ZX~X~8yuOs<_x7B713J>LAk~uX~~TLrF*x~)=`X%m3s<1jL`m7 zO?lJfDqYi}xyoQ6+8@7E6O;3hDkf!&mLh!=@^D z{O-~DS3pv5N=AjH%)k{5I_KTCFySHyu6ll)nWFhJL=~gP?;;Q6aZa>&dR!$w6IF&E zrvzmxZH|71u#U(3XD#{5{mrW0PxBXq=w#G-q)KqaI3&l9Ub=Ojp4<{ATRnYb-lKz6 z;k)_d+PtHjGb_xQR(f(Z)`w7*8iTdhba*fJ@)858%neHIJ~seHjQP8kr3P2pIMVA9wd0`n%T#K&{|Xk(*@=!GD{{9ZKgwH#M!UCZtr?l(h* z5SKl&+-hM$X!&#hq)1I3g;do<2`c=Ir(+M7Zhh?B%Cxd2XHoKM|8iN8eah~@y@hR7H-e-bglEG&KH ze&Vem=DX?!`WUyJN=Pz;iAwrYISC-^opD zKHfm%j*Sknn$Z7dUpzoVXOd)|lPnPlk3b}Eh=SiT2Wm3#$gdS_G5%&|WIY2kMj6 z7FFUE*yzWUHLm2Agn#cMyG#<v!946YOYIq#$sKi3T2SqG+9 z*J)6epQRb0iEE*RvdY1!c3Px64I60!>MIBsy*;Z`-LOO!_vw!Fb1lj&_I3V%98sP8zQGf*PHV zR(n+0m>jF2E5!zACxETjCwW40K|>K1#N&=<3&>oJ#aHg@oqQ?(^I33ArT2A!;mW6j z_(2B`vAfJ|naZr~`?O+m9>9Nb7{NXmd-s$4_DH@BTO&6guS9uSJ~V(z62mLAO8zfM zdr)YWx$ZEPwrta-7uIru1HVslCI|OsZQ#S`KQx)*4d+$cCrO0JuaSp}yBXn@$DXZA z<{dA*IfH=!`!?#L8R?W%2U^(>Fn?LejzT_ao6e-o?F_ne=E3-Hf#pJG_@?dSO>H}C(mJ$ey@Fj0Iw-RC`z(UnYKS10t^|R zZgIjSDq?L%=PP{@Dm}|1wfMLyI)jxEG3~7>oi*KPysF&`PmrsxM_COHC`3~B{-5hV z1uQ7fzWvLU1u;6M>V#coPA!iIic9u*6o+K9B4I9y0t?U`Y==5Yui|nG#ZLBt+9Kq& zf;+7;ZsSlPV&a9Zixe4>i#0qO>DZ86I9o` z=4fr9EJCJO7x}!+#KS{_4VD7UNAJTH2QE*3y7{ZE!ghKa(3ZoZAuaJg_jh({ksn=A- z8Lgep(W~vtB4ajn@m4JiN=r7y{UV84F^Y1~Q=59?%bA;;V8alwzPN8&c zyay~bNHR6duEoO!!enbI5m-7Z z`pO^+!5;O*9Y8_w)XT+i>Iej|IR$A@U zLHap94N-Bxwd>1z{Ph3;Ly7l4ip>s$f1|UaL5loG(yF~ETp!rENa1s*TMgC$?D~YG ze8NwoS3f_|+cCEqvToHjDy9Fg$I4|M2cvHEDh|gCEgY*;0?{~Y*}a)2a%i-wm$n9Q z`?3v_KvR2#M}qTE{v6*!crmK3Q;-u--JmAJDBV--d;|zs=0e1u+;KnUS`P9@I1uaj zcLIcMS6)>_909m$pM&YYQeurhRx{RF_|I>GK6BmD@*qZ~19X=|`$5SEecOCvYS*eO zOL!?*O2s*MZ~KJ#$D~6ZDe|?)S{>Qu-}Ji5J#S1i*1W}W*aZ(wVLpPweU4|C_gz_z z?(h#zUv1jfwvMVu%x5O9_!etxQ)XjYhngp%Zo;#vQ~ENgU4NJw27SNuuD z45K`ny4`v zSH#-32gHar8VGwo9l;lL6f?PX6R^k7$ggpuw(IO@2~FR!e^5`<(%S3;_Y~VRb-}X} z^76DW$?C0HAC}yWDWAVA;7SbXG|t-liC1pJ+f* z4s*0zIOY_2IYFK0gA&ACm3O#7?q`I9fXl?o&1Q4Y2HquN&4 zNN<3yLpRU&V}xy={2`Z?PRFcIhmGcja2Riar7>SzkeA-RU|u%`A# zRB2O#!e5;0wujdYxbkDXX)K41)&MNvxFkH^3!7yAk^m(bAMTmrJz$|qFp+Lx0 z(pamQxQ9OGvT9S~1Q~?(mE~@HWV@p`SLlBtetI}HJWvrMX7rEAe5gVlui9n@tg*XQ z7)mRFZW1xgIh!jJtsBW*x8EnGA__&TF;08Nn65yy#9jFufLnM~TpX^TVQ(cID77pc zgUf`)6we%q|7)F+L`B3#t-JFCS0UB|0tD7-I2SXtoC$0d(Q^-L)chQ9VR|kygy`oN zmas#Kb;N~6n^DBbRK(!(b;vMMKfYSs8?fBl6Z>yvl||14$nPD3*Vz%0xZUAT0XtI^ zL|1DuXPv$tsRAae#zde1XtOag3rK4+q2=Oq$!$QCM_np9qb=c%u)sh$ap5otNB=@= z97unMcV8~FCM+^XOJCK2%MP4zife9j724Wo#TXgzk%|Y;V8WxG$p^Q;P4DY)&49!rKj@xuM| z()hW9!wVj+t8Uy0?_Zw+ZsR(WC?SNPOe?~poWpHfDVIDQavQ*Qr$QlGQl}PRP&2XZ z;(dWB1Q;T=TijV%LclJW)7&;Esg-8x;+SBg%suEI2-#nx4V!cN2kiv=U9O-KDjHso zsjX2>e>Z+lH zK*;1&DdeVRAX)N+KkGmUNdEP`{Wam@rC|mrFft`8Afd2J9ZYN)i9Y;QDlD)sNCm!F z#Q|(Q=<7FkE}EN~07;YhP@>(l)Huf|ixz=}{M2DMmwu-&UIB^<)*!uoy3H5DH=4)- zH6`j(OG_%HI<88BrE;CAje)!!C)+SHGrmvX1YOs^VugiC2MDH&i60NGha?zyK(43k z-*$z|K?1KK^e{HWLJ>lWWmD$h9ZZ7g_kJy>JToddj~ptmi|Qm2uNtjFtR zSp)+#R^gjBCL(4TYgNbL{kr(&#_S z_}~*oNjBc>ME=+n1{`^#8|&DPlB!g#`g1{A~NL(DdW z)UDgtP3AFIIOQ@Nbl(f~H(!X?$I%*59lokn^G496UmpxWWK=RXMMd|`=JY(7)JH-r zyTMO7uO3|}nnq5J5AljhmWO4UsiCPNO#Lz}&*=r7$8hfv;SV6^HP9C1#-@g>#~+1C2|9(Rag?3T}2y4b}%B^}oKP+F{eD)8HH)ZD4*-j2N>=X2izf4ZfY zi&*k1ego(UXXX`FX=K8HpUmvPRx_bSW}CQg{?)xJsApejir2@mA(xtnhx1}rsy(lST6(NG}5u^`)mw7DJ`mUeS zIJeS3f~P`sQU2+m1pZF40A6%#U36fCNG(>4D_o9MhVjbh*}aZP_F{Z;DDI+3A=Lel z1y908-fIwiWS_$v9o)i4c{cR`tM~jU~cL$kwq%(VO5HOq@PK(0qohh`{K90YCAl%&pILnJMIsLVbPjdBIG*$-kwo)xBy z#70lop$F0bhp;ZC1>3c9oV`v5B4Az1N?T_MHM3Dm#3Y^Xy>IE?(*wx(up6bwajCbo zX;I;vu_7IdKZ9RZ$uWEd$gwnbMAxs^%Dl| z@P>#P;3Yaj^-aX^&|%qrya1{=Lzh%oydql4V|+ayPSqb%r8V1oHRB9t(>l5;^lvHX zCmS#fb$OCIJJ2Jhn#6j;8X7dt3!WSLKmK2WX%)n*&uP-3I(IS5gv(1FHIVQv?+k2+X8N{P!l`V@3i2oNf>eF7AAf`NO z4k7_PGHPbk(aYH=LauIS*cfRdfkVGQ3_K-r3oiw$Xj6E)2K$~6RJg%`kk$@t&mXL1 z#QwBo{^e$SJ8|^g48o$~^KJ#pYKpzp5c;?eEFfSk0t@&VP~cHb$-%@lJBkDcGr6(r za!Zn8%`zqv{?Umsx}UQ>NktsGvlK>JDbVWCO>eQfAes=#I=#mD?^c>CTV-KWkvt*glh}u;ARV{LIlN@={m_CvD{r14k0VVxV7f zC0NCq3Ut~TYy^kLn)<0rUmHEoW8LqT2? z2!;Rarq6}4%=b+^O9#y~E;QGP!+E#ldBRG}Q+%0)51 zaOBW7$c~l;`c#Yk&a130W-v`O-cQpDt`}6;@4OMmK%-Lbw_}2W>w!92%J$meoqir|KYg-Ke}%^ zqw(5a^eu&4oz)JoSZu~X+VKDN$s~<-hE)q<9i`$fDNucW2rRXsE+^u1CA0ta_+Ix! zt2tXdD1vRK(Q>L?G^1Oy6a1o)Eex4(*To0olo6=ceiv+JMvx=EsLTg=QJUf5L8{`U8cTe_g^X%hEXIQ7NB`%F`IOS^O>!ijE6YE52T3D<_jT_YLP(`da~Xw*1!02E z4ul%%@|TeCo#q%7rN2EqNz8$4xb1ISUOZPR%cXV;2QDQ$S2Sqa#}>khmF`7SQ4G*a zc=_}kVk-^!?d&-cda+|2*FhkP9YlBcTR-3s!&5wwI@ z)Z#FF)V>@z09HmU0DS|pzg7e?x#$PQi;M*+IFEBe{s-f}g_d}*o8k0ZU0T}#Nh1Hslx8;T^_m-^j?~9R$ zWU*9gL>d~G5`9xQofpt8jB0k#HG9dY1DMD69OKR<1`93)4G?wTx=Q(&nJPlHnmTB$ zglN|iID03j){Gx73qrIwVS@Tq0hw7tB$#>M4CH@?=gvYBq^;S;7ioQCKT)Ngk| zQ|fAj?eQvU5hiFz1Wt%)5t94Pvk$zZHgrB19;P&-*l2-c0SllIS>yusx!phxxRGaW z9Mc+}3JrFSG*K&l1=)%G@_RcKbViM4E<6N+itesY#p4|;F2HNU6bw{jn@d$=tHl*F z6}4o~MZ$i*!BYRCvB(~DF|B%fB7Pr#h$wySCQwdh_-xJLONuqI=8dfg)i2`5IhwWt z^&vLimVhkhlaPMLh;mhAs^lp^zlh6h}`9;PvXt~hZ z2B;$qrPb85J)g(nZLTrii99US>5+{($$tdtLek+G0dxT;&La16)^F_mVI%iN>9*=# zZ`IE|+~>OdThc(oQjv%gP?kjzEbI0TOCZnhjVNAzjYp+>&`UF>!N9W3j% zmiza95$#|^{hn-~ChPN7sSLFFDok%=i23AQm z5TX3{;R^ha#$t(`sEsg8VVUvTW}XE?hZLqB9~Cjji0Ah^<#zFI=W36SY_1LbsFI34!N4XAOb)IQJ>C*MVJ=`O{Er^D<}}Mm}j#;Wt|A_L1jy8 z!oEt&%I7RytMH@(h`t)mgz)5$u9B7}D^{9FN?Qtqy_2>Rf|=-JntFEzF8zA&Vod)S z50!`UfdqUtsvbR>0`xo#pD9G>5?~wmM2Q|)>4G9R~& z)0|O8C~Y_jc>E2S{-@+o>!YFTUY^p;K4nnZ(DjySfspkvhp~e{6T1_2xGNrcU?X=@ zqLe~_5KBSjC;lK9Klq8V+v&oFkY5U4ZT!9M7Ei%+Hz+vjmYNv>DbHc~CUv?^*Pycn z9@@@1=gh%ghzer9)*Q?rMfcE|8JDxtqj@a%rdJDJa+0CSN?h zGr7j6D-zI*5zSr>`gqOOA6BcVj*G}CPC9l6XvBT% zQ!nhGIlN>>VT+zDMtdX8ogz{2pn`N-%&@2r95^;n!F+w=r27As8UFq_hmcX2$XkJ_ zJxv$`l<)&qcA2=*4^NLtBtzFPdA*>inrisNB%x5`qYI7D5M3qAI`JcrQQ=A-paRNZ zVyA2nV!0wT%I(lo=BxrqYsb`#MWwtTSpV}MDFq1MrS{ptVezMu_##Lli?_=0ETbTV z)Z?G*!Z_5#>AFi+$uX@nU5xBY4Ob*jaBn&#`xbFt z>;s&dGlHnO&Ei8o09b&tuM`k$Fnl|>J{hHjLd?GUCcGTLF#yMQwtEb<%XlU%-t+-u zwf*6)CA|Ghi^RZm3l zA{+2X_qzHMvfC*J!%M2e>cfvTw(re7#vz{L8Gbk&m4cUsKvx|*z+<}&wjNvk67-T$ z4euL&8 z9B3Sp+J>lWBoxL_hn1D$ou4+hk;DL$#&8zOKbN%hx9DpG&D;^oVr{2b5dw(szSB3tPBlAbJWRY(s`;;541as|}L9#3n6m&>Zy;E5X* zY;JQ86Me>zAj{`sGD=?_h*Vp!)9y)(32-)!6+G~f<`0=TB5rMQ0kX7Js3DunAH+tr@}r7 zUT3)u2uipW;@Cu%B`{Tg>kz}t7fuQ5bMKjkH{18M-HoVXkBA~tc@4(c9A8b1a__nsLSMq)1rOttMd|!x+5LzGHC?DY_zS2SV$y&&2Nowg9gKK`Xx|6fYSZLW3Nco?5IwK@ zrs(;^%=A%7a}DavwMa0SKke_`!LgV0XqJC6g|CIKwtW0vLX8<9P-F~zt&!h|te4^` zpTyG;`Y6B{M0dp6r)dZL2@XbCBZ1RHK?59@)?HqhwtFbbV1iwvqBn~>V7oCkdfO3| zRDq_bX&1N2qRKtW0IqQ)7_|%4NTFTRYRGwqAxD#7*=KSI0~l~}4x}cPHTgU7kFYq|Rw1kQJ1_k4;nW5};on6``tihDvD2*|wMTj_K2*AJ4cI_wFi7*mZTV+~cr*Ua z@2J{Nf5kAJ#o^IeoYa&kq|_3;X?jN5Yvk3xy6v_i0kK0_P`G5!N}-f}K#CC#M!tpf z$yclE!IV15jXjm;H_s(z9&N_K=u?HSY-}ER zK1PiH{liJ_sjAszcj0n!@N20)Cqvf2pQf7=BKmkHy(ll-ME1Wb8l~EX64$9gj522D z?b!EgF@mKI8AGI*XA*f%ScN*p)BdVGSLiLCig-EZZ=m=p(_(A2A?N&!?|HX6c&`Cp zAh7TjNTWIOG;gioLL1cS#s5_8Azk@q-o&Iz^0qu>I(Ir{M~o4%C4&j&6Zp(htWwqq z)teKxXGh*4;08{urjhJp?G%0DKVet76a)g9%p){JbL_#BuO*~AXf z?DK*gkiml(!RdgKSDSf%vp~^3v0SnC0<_dK_FSOD~Z5Iq{UqJ}!h zx-~@%g{-p@TDrf8A~LpX?V~(V1cLggSPTWS|2^v)Ee8S(&%bWw>B5eslpn$ z6x@EX7fcA-9r??fyZ3#`H zuw4B=s&VrxCrU7cSS)zEsr$>KLXL~)dF$N?fE;pB(C*4?7ha}ZNTwV4+OhF@Vk42F zEvMN%wpF}fYn7|5$x*_Z&2F)vd{+QKfT!1Lcyn;DbLo+&Bw9o{XOIqvmHPpC(m~6Q zC$h`D*>nQ1rz6K~`wtf4&yFzi7 zvLs}92mYplw>MfVabrg#Ds(*ZLF!3bVq|Sw$Di#F*IGCPQ7hT&E?@mzR?ojf!7Eiq zGQx4~P&KdH8H(S3Z3(Lnk{-B?MG~ITf^a~er%UvTWB_fr zh>Pi!_7Ih)a#;~Odcid4q=1*sDh%Vev#;QMEngLx-T|dY8iQ+D$@Dfev<9&OrRQO@ zf8r(_d2$NKf0`O}4ez=)^>(B@l=+75Hjxvsd`q+zlpf7=95wcz0A0={L?$jwylYbG zy9-_dAu5VrwE&TTPB4-?B`D++Ii?T|~-f=2LT7+fH8a@ceyz6ODF}elXb{czO&&Yp7#%Vy=z- zc#<6E6>W28U@=DDVq}gh9Z@d;PB}2rzrY=%5uf;K@TMOS{9oU?+f(GF^ely9v2a>f z8sRukOL1a6L3Id65><7u55Lt9@hcKKZrui!J zd|56HB(oMCIFXsE6dCRfZh@;qP+#Zy2{AkIV0XZZR^}DiwZ(`i)!lvJ-}4OkeBXJKr7^iT6s!@3sgg#|Lz2lFPA%2?|9XmCSY%~Gj5V39~-FhhO~!P zOLjliltg&C_N`kO;zYY%i zUNbi>nG$U^=sU9NBzs;t#DB?w@a3`G>Y5xH+4$+^f$(5Uq~asktK)=8v8jRm_ztih zhSFV4Lf%ht5OHGT)GBKcpRwyIe~)Oy9EG~F%kguri-F_(R&^j!qd0GBauJQ~x&15* zP@`HAA^CIVsYZBRhbBYBAHXO~DJxqpzFgJ4L2j8MzEW)NKM3huJj}xlo|j|uV-x)X zsFw|!{8e8Suuq-ugDBfidwZs7+-AFNLKkXl)%cp@_NUgaA3;cZQg52FN$UHPSF?V9 zJoP=#4Ith6s=}2V3|QNd2r)RL%3N9IznB>E+ZYL-w~eJq(hc7lLb3T#^H2jguJ#Lm z1SVvt8+FkC`rrs3=d4ZY^TAG6C+mj(&Kb(R+e333G62_kINP@G?ef%S0dVm}Ul<|N zlzP#@jdOb*m_44MGSJXUJ~PTSjYINLK6ocotkq>aI0@q*E4W!PALP1ll6kR)lh~nH z5Cl^O%O~aMoG1@{!!S_@VP}+kCgPMoT*5e*^ZMiShSD+COVY2KmNN>ML93X$1eI{! zkdZHvb`q#AX>Ulgs!a-+XqndW{b)_MPun9BvKdnKNEu$2+kIeo6YcbnkL$^wgdhaO zRPy3ktGQ3cF|?yTh>I zGA0ccR;~TGv9kjaV|CXZbYv`}G69;;~uc8Lt6NJy_V#+8iVu2aGP z>&B5#8!6!z26-=Nvwu)M^Yt`%g@4wkWV)~;p4!$NAQxoHoZD7k0`%}9CB^9SP!*Jl zddfQ%p72)i!RVPOYYMVCNnIv9xx$K61KsnPaw+!4#Dqxs#E+QCoR zZk>Tj;lNH%Y-RpzsLA&bB?_YklrSCL=?B37MeoSjIp3Yb1Ys#@x!P#*C(*!Y=o5uO z1;!le11B9$|D(_uue<+AxJ`2XjzQd#aOqmy<_R+x_Z)9eCKxdLAPWRC%mynH8 zO??pTA|9^ih(}~q81YPWR;IvqC%Rn)j{10Gu)dhS`>b-23k-}od#p1B4TKnlY9#saFSD*vuPq~9Di5T~>_rn2IUv)1!-i}5v!VuU=@p^SAJ%x_1sQ>!%G9ue+ z5vwKr#HiM$6a8oQgzzvw1Z04AS$s$vrsN>zilxQ-QaB$(63Fc6Aghx+p~ z*rN_NwzT+USKMWcx)@uSR05tUn~0-i;(EYFMMU%hDWye6f0Grd0*IU6gOp~#C|e2A zGkh+07+YVpfnSW?RPk+_w3EPGDKxC@1#lpa%8S=jM&B zz}~IOU#%vqy{i#mI0$RI3BZIV_^mOg%5!CF31c>-8(Fte>DxwF%CtB}GY^p;ZO@Im z?!$7+SoatUqvJ^{1u(KN87W%6~vZEHZ^ej*#0K) zocdT`P^Az0_)10>afE1JK7QWfhISnT{ur|_rRHNr{WM39{YH_XlO|x%QdAtwXY@Y& zSwKtd*X6Z0Ax!-X z;saggHi%0V2zo9w4q#nB>xCay*1ysy7g|T+=}&)&+e*os^9lvS3}|=~}9;tP@vkI{SfuoSPV0 z<5N&~JrI(RXQz}2kBd7b6D507sHmv2aXQLOz0cucc7Ivu->`75RW+ErDI&2ov?Sst zfj9ei#Nb~94;j?~PQN!C`=7q?!?XP6EMB&4Jhv%m{P7>zNyX11*BV@ zG=EbntY%@gbMPsHEPb6N@5DNrH)yE{ysxW?Xt&W1z}KeysWyNWo=KTyAxLC3`@`)d zpFpXriN3X2mn=g^C+1`AQ!;3u&%|Pcr;$&giJ{b#yGPr$Etk(A1xR<|RB{hYqBUg2 z;$!Z@kI3jMG@YKb^OiQ`R6R5;vYI*MU?WquJCLK)YI#t)o}pNdDc>%$M$1hG1$=_t z6jl4fSdfV6eSq}&KTnO}=bbQ+ZK??FB?!pL1<(_rUMfqa8c%^uyCCYNKTNYOFV_iq zIuv&VU(S6or6d897GP{n)O$v~654Y|rsbD`Y_nDt(Hl=DKjoP?2y|yZX)9mbaRjKT zp*XWfY`(o9>(+q_M~nfL5Orad+Q@fCGJ?#0;Ewqz|M5+kXRZgPva#}c{(WS;n+Ndk z80*Bv48!c&kmgAIA}S~lYe|_*TG%b|)##H_4KJ(n+%gRr`LoOh3zx|_@xBhhJ4N$F z6N&nt^47(iEWWf9bMT7?ELMq+j?xJ>-=-jT;8PgWdXP1$(e3NeeHf^8{_2zAqgc_C zVND3ZSm`}FLaGh3q{<~d3<^SqX1rK~CQ3@vM{Gu?Y3^#l^mxca-{qxu9%?=f z!UX0|)Cw)jCrk^VR_`3jr=q7j7f>^rsWlkXm_`y;s&MQg1gk=?y<&&>Zp84lh#HUc2u7%f^@y=UU1hEi0dYp};U3@3tZlmP1xRrmP~}`h zDdkvp*eAqK_f<-jLsL5{gs#gta%~p|6P*TVM-I+SXzVcI*aW>}D$P_i)&0umNY_-n z>Sb~qXKO*DD{T)^d{pZj6WSwTt!o4&tZ4EDdU?uq%!|Llu=iYJ_K@O}VR{^@M)&#G zUzF8s&EISeo+}R39g}qNyZUqzg9$$V%13$(!=?1|!Gu^^ygQ)~?A^8-)c^EvobXjZ z(7ZSau@&3xP~%>+HWuO@s8if+u$=kJa_kLp_BJJ(@$ZMe93VI`R1P5aZh0S3qI#wq zYnw73tMADKCP12M8%h$R9cEkKD)4hdFG~ey_4d5pfpOxd3S|N}cR#3^oI(-pC%!)u zTbs|JZFOGr9G1=h4pY@yOcu2Q)^4*40c`@kZm%VquT|^DZN^!7TRK z@!Dd=x<1WGrpU_{o@BjRmuOJg1)OPyC_?2QFPj)P{7>d-@g!)-1aJ6M|7u47s;VJ2 zR$cvFfXD9efc21)CfmTF;FQJ~xep)zCtG@=s5>jiLn6uCrzcF43dsT?A%?P0&T|Wk zsjN!r=lp2p&@NJXG}=<)V8?qnb|bQ#zeuj(1U}}_GFh_U#8avv^eg+Nf4BoOr@0MC zyG%kRzm!Kv_En3{`M?xdj2_lF4Wc5Gsl@#jZ|_7 zfEY~)J~SC+_QWR&*?dS1>>nc{zM5IZJA}8|-6t0C1ML*T1zni{^HgLBywIA>T{4eeQaxk}H!ozB45(49#vAwVwar~m~qA<3i|Q=f`lEuIcr5mr}J6MQgddwxLV4jA#=7F;7 znyX=SsKp>xV`$@3+a`tLB!bfDgI|vuLk;AxhyY<$IO))D@f3I+P1Bozxd(_ja(qT@ zyPu|~C?@^9`;c##Zu*jp?;^CI1TZmRT6!-grnSa}GXeqJ=67!X8!NL5LDz+awX9J2 zt3{xQvusCZmX)^S=$I)qOk&7|$X@Ul9D}lK89m5&7~dJahUUGQDeQ2!m@Y4;-j52? zchmhY-&yA^zLl;eUBF+rN31HyQ6^G>A4ZtzJkWyh`C_6Q@K!o}ct)5PsK4mEV%q&;OjbPkleWgm0ncl9t+by<4OP$^+6@a!7K%lt<3 zU2gSx7h`<5UaPr(%kCTOUl~+NJ8c@2-}>6x>WCbRJ&rJRPrFQ;WkC5TW*MF_8=xOd zRkut#h~Y9a$gM6 zcg=ii;w2A*$_8Z`dEO=OLAdaMySN)CTw{2e4`*zZ(@9LPO5AL z3Hu-d_qPz9q%cN@gUAs`+&*971~Oq3Hh(SCv+K9QoL?rl#$*1;)Vyr*<@wA{wq4-y zFeP~HBB$}%3kGAsuWX6^Wb3~JF+Kep(l@5?*}@!TfV-AxtOuMj{*MN}LB@OA#@n{5 zWlw<+cqIO=C?cPM$6)gGGz0aP2A$+RwbS9IwR!XECACEXu36#~T^$m|F_eh$iLRo2 zQ*gV>lscV}!e#!$^M83#K?hfV(UnUW2?F&LE>K=YrJ1#rs%7T?jH&q4J=7wE>6u7i zNVu+(h|vGd#8!5& zM=H1MRV3RhVSD(Vgq(9@&V%ZZs0DrM9&=#h+3DEQ>@{O4O#d$MO2Cu#1z)_m*I2$) z=!0S!97oD__ynB*LqNR0P6h#n>{1@=9MwzwI&$MJB?;?%t9hbY+5{y8K5{*_83Ax& z2%0nu{4_1^s#0ui4K+av{6fycWIb;}oL@rxz$f9NRf~Eru{3W9+>DicfFV5N7})v! zO{DWvgw+J9zeULw1~GY@8&JvYA?I3!&RN9(7_~R9#K8-@BjL%?hnBy z!*N*VlFs0;(3*hzaA^)D-DK85d$0AZj?QGlqQ9k1NjwC+e}A-ZKtIyq7VC9R!21;R zeLJ%i1Q8LcslFG-A1QHmzNRY&Lr{d?u0*=aYEMO(Ga{eIw6yw+Xs!I$KA zirpJQfVmi+Mag@erY6h#dN*Wgw+S#rQ^w~*) zEMwSNs%`@47mm7r&Xi{RXOCa?i#dB~z$0q=^^OTQF7{ab0xu_zW19+q%m6^}{(mr*D zh0r-7XDy6(ee|_P&2i;)ejgK9F+ti?!5@p+B(OGaRJ#bX>zTt2{-~@h@~NUzNJ^Aq zK?&+>-*L(uGld=vgAx$ibqK(cABsm;l{6385Y~@XcR0kJWgle_?m&Wu6qZ~-H1#zr z91Q!aN3}Wp)`%^_gjJf%b9O0~?xg?2N*%$5Uu8z&z1%mqGb)8ML?e1UBF6F?Wst?x zm3zGz=%B7``KeQx^X{kWtGP4tqBVXv`f<7}MtWJ$Eh1x9)-F%h924HknzvDF_y zAytcA*Uv07eqLn(A}`Kj$%ZL#YXfS2QOKrP`#JupWMSA*Ph|=NNEP;fL8|Jjj=VCA zd%)9~-4UiCquA_7uqHiO=aij%WG`qp1|{AG z!U}3$k-!BX+D*|$0gx_TrKFFK)w=Q~V03hbZM*E>y1&bhqSRh0Llg5}o8(@IV@T16 zybLj}RgZTcyeIs1B&?hxeUe<|VmpJa=0YQEsiYphG=val5U?JA1hXbVl839l80X$| z$?k?si^ppmI`+vEOFzla4S#oWT75dG&g*aSb&BYhMg`F2Nph98wQ^GYz2X9?ll676 z51C>mz!jh#np~rH3SPy`ke0=_PVkc3{eaq>3Ik*lk}|$vb#Jn7xlV_C#U?_+eurOX zYT7`92;Twu1P`~8NL^!lSS~SC3S1Ba5 zQ$6Y(%dPTT3=OTXRp#apP9GNsbPe&cG|1ks;e;H6JN_pw35bDc-16M)!zUf6#mEk> z%NG~W)R)i*8T5)b{W7P(zS0pf=PQL9SAV78`w34O8s}Qf>G8RDg*wKUBi)B=v+k~P z4Yx_Z>4Yzs5v$35ByvLr3_o0vojc3Vn0zgyVRCHFcM-BaVl^eJp9#_sSX_)@gMi=4s-5h{gNmCIH%hoiwj()xPR#M)AFaSQsFH6 zzH4JAA*BswzdS)Kq4K2Q_fUgUfOSK2;G-URXGgJ7-hrVVdNE;2iq$g2EQbBiHQi>- z{LA0*uk!by;WB=RDU!aGjZa_NR_i{L*=}EsjGvhG?k-;EWz%c~&tMptB!D43G30ra zH*++Ud};EjO8x194jAE3$gqL=5q!zqvhT{{T$rokm}`P&cGx@@WhfGzU!Xa4hB&04 zU&A3tZ_l4p>Vhy=M!M3AZEYzwJ@v5*BSk4VQEPX)*-x0{c)D0Gm?=#qmE;==dv z{yRBJ$vUQ_3ly}k>7Nj{u$Ji9P?J|@owJm26&SN>t>_N$?Xe{U`T?~GC_*{j?1Ta! zNDCvYE1#PG!#|KK%S<1U)u)p|3}QRrsfZsgiYmBbiZYH`c3FW)W3K2!6a=dHA(rj# zJ!$Lb7E#@q>`_Vuwl>`Ks)boaFU!wR98la`Vc(&6ZN24d>#%xL8aCuvOf9qZrmTo1 zG@z6u$6fiH+c36UlCaFOF9Prh89qS{Z3ngv!i>j9J&z?J?@gr#Mwx|b|7gTkuu7jk zhb8|h+x&8VY@A|xm+IZyM6H;wWjr1e)yb8(n%p^!uN;4LbC#0+ab_)R@<=u|O8&E} z7uG20zWU;ns4Ee{L(d*>jsyvodq3j-(y=j2gm%h->)a%!FLQs=*vm) z3U!vrr#x!tdPsgS5`POSa)UVkGcn6r%k7J50HY(rW4>evQpmHU_CtHU?eYbA(V!Ow zFEDb;Rg*#AVlGu{>6Vw}&7zXrP3gyyeKthPC=V7$qdFEbh1yM3C@jC{92S&)&mA6e zy>mdu7Y(mAC4g9Edi7^1z1fpvP@kkiH6)ptcp!FVP&>+Yi=Th%MTnV~oLqYl%fC~z z3Q(}h+V5Mb?}X=6Nmm}*yjfYk{JGRP;Os;ub9eYRQ1^e|jSvVMKO+y158p{+! z+O&0#QY}5HE_rum<@D@XM6(K8=k1FF$@}Wbvh63OUumNTA9njBoO@DKwW+`UoX8Rh}27^m#j4hE%uP@1=SV zuy=t;Niwg`Ar(v_`7t`$88uAOu((LK8^}_JY=k@3=o!uxTQu9lZgnU6h1-Y85_8(J zB~$YoAiN#=AJl$DiQMpgx%hOam{}QwEcy;N%Q8PpD>p`h|0>9NUjO>=hu_A z>=&a>tf&O|E6hBpIS3~z1F0FXa!lZ1OQc*!qet(q4p4vG+-DlefJ|C?UEmb+u@-ND zuwBaMj5{;0{XuBhJAKh%EHxWhgIOT)D|?1~Jo?BGr93{P{y0=+-vNB5uVA^7fIEFgG=R^b?A(yb)pBF!ukGhKryhkJ8OWqc|RnP zb8cs&>rgu&Ka)|;lJS7(6$`iZ=`$BxR+BwBqD1DiJ!IN3G8;T#SqE?I$ z56{J+2K)OeFYIPuC-(%ZS-63-O(4gg1xP=bT>`8|cKajOFj$oAmty;LcwOyoO$`4VM+|Z%=0=q!6e4a*gBUMQ7fCn2fF=szn|P@3VZ%{-u~hHOffM82)Eh@LN`k)_QCVb{p{dL1SMbG_pmo9ypbMh@C9HLJ+$J1{&XH#@ z(0tZM_ZIx4y}bobszQ@}y3koO@6=9`QO00GG0UY-%A%DMq8tUUMJq>y0o{SWMh0T5 z9CIX?;3$c@NFj=s$>F_R*H(x!St~-3^6&Je&Zz9chM6D8Xzu!n4&~^7WHcdTuf#Z= zp`Oma+1GlEiboK$!Ej8FUWE@f2{t4|o<)N-CEWAqKZ`{f1=D;Q?}j(-b;y$sv_wQ^& z6$v$bptlP9zmU}_UazaQa#=XnDMGye+V!oH7S3=0fvzOYIXQ7L%%c9~_P`jXZ$bxt z%sHeQi!UoB#i7Kz^Ad`J^J~uA6d^7!Y1{&VxPxdVCPI|uEzL5q>o4nd5KnNg?7biO z46ztJrHlB{%!7}lK^Krl z4@D7K&X_7P0Txh)9V`wn1@S92=l{ zw_rb;Ah7Q}a0$2=3)LG6FJ#Y{;kuQ0Lb{l-|pIYMzfPp zra-Sgd=9<6ASLl<=X*D;5#^?HqW6+fi>%~(-U6CnrEQe~eW;lN*+|Tok~13_!SaL6 zUgPbO5i>svt>zZ!YlZ$>AG1^RLsK(!kx<^w!;Z0 zKk_@{a>y9_%8l(zmEFi{!fnBkLfXuq6q_!J#41eip9d>BFkj^G`UPyPf!n+wf`cK;7 zAHLv>ZBvMScw7GG=573FnzjOMbJ!)ATp2Cd$^B=TCk`3%Os!vE6(#hGJS7aD1eNLy zoTByiJ7;MPD6VI1OadV+oy03)-JGD>w4?B`w+aZ9>HU=vfk*Am-`IlTUMTI6-IJA` z90h@W6t_D6&%s}IE5Q4!&^+$;4Rbo@^N^NNkT=LHgO}+f#(FE;VN1&kUF&x1NAe)R3sr(v+{LyT2?DWc1x-Z(Mjy zICS)PP9?LiqvVFF&>&WP2-gu>Ca;MGB82yDbuJI2e^I=JWkOSB0$h@;Dw&f9X+B|x zydlm&y3#d^!@(eqw<|Eqf=&C(2x>w=VDYT-BHNGQkv7rU%fuOI<^_~d)#^B!hR=`E zML6Hipm+I4)@YPS_+UJ#`JcEum5Khy)!O6^_(RPSdn+?1`fc0P);J2PVq)e>Oy| zQRRknt;8h$^w>Sg!zf@;%Oqj$*w+AR5eIwnmGL?T`E2FGaZZTVi;*;Ox+h;@v*(c+ z3}>lyR!^%%HNuFb-#WTr>?@;{XnK=2OSYDywbyqO+o7e_SSWq|Tl9$?$_b=S?jdp# zB5%v{!9aP#MZ>l=a5mN^cnneWwl-+BFANkLvD8E&U}z#2#_H$|T5h+8T$Tf{phTi6 z^5vhP%JQ5WlNnhLI)hxC(VP*mu=0mWVhmeA`WSW4PM#+qo=70_`{Ef?Kp{WyZ=Wwu$W$VI~zsRR9i zhpu92`P46iJWj5>k64IMSJrfEf##ABJ6^XG{2X5r&h+qGfkZi(y-ij?vd7YvS^Qv0 zm;+Z$REcHCt01n6kC}yGOV?ucC0ZSEbUAiBLX8v_`}qAjSmddAxGkqjzE8WXwgV4^ zXMti?GRpaF=Pm7Zu^#OQrh03~m-u{qpHEep8Q$BynDA4Dm#U`&-!$=4ieGPt_btk# zk#Zmy!`&VDOb4PMcM>;(2WgL#^jzG1{0BCbL!V1~HTr>C7Hq+@0n~QpN7aIsH|fE7 zQi`BYz~}^bxMA_sF<+co8DtR?kc?=lfoRc z!!b6VXTrL~!R!S}pM~b~I=;3oS2x+@bEtxBZ3Nb`-xoTI$zuOR;;PtpD(QHoBKl}O zwTkDL7ZNM++r9!9F}zA~ppR1TjDDb;nl3B&J3HZ9cZPR<%n6)adVV&YY_^-}aN}U3 z)S!iR;i3eCkoFO7JaLq80v065%m1p9VBQhc{*voK5BwO^;On`?qF)cqi&X=3y@b&_ zk76fnYeG$GbXud9QM>O_=KCuwZQ&B{!}Ir^oAKZs0SHuf{Y_ zNx<492LH*dSrsJT^~E~|X`i)b<`ExZ_r?|;!E8Qv-uZ>-`bl{+^r1wN7aQwL4Tlqy zPtDL#fLL$*itkuFIxd4rQD4pg&C14aezDU;Hj;qpkv)nE>1g#cAhP4GH!>0t_2upv zlRc$8E_oRA`o+TbiINMwQsRd-RKh+Vf7W|oh@RtE@Nu1QAQ59NV3D>8lv*aMOqPNh z(1#!Qs%E9O@(R}dz0=SDYLZxjg8T;&WNE~w9A)4_kT5=K>c@bOt|%d6vK8;k`X;Vb z`MsQ7rVDFsH<-}8c_idpJ z^z1prk()Z120nT@9mDNg#wu91n%?os_|(|hgc+wiBLyeji!!O~|MFy%#kzC@Hoy@| zUmAW(nG*&{EM=`KVk-B{3%W?0*_tLkpG<;er&(`84F5SOGpNn(vFX1b%`tDAG==7hdS!7&s zOv5@1+=a+nmP`PuqP5N#8b2KrSq>D!0?H*Xowm0-d+w{FXO}_RDip0s;3+}q9XG;U zvAg1gYPpN8BxnMo!>Qy+^9O7hp;FXBZ6+?oIY2^w6N!M#!(LlE|6pe7KBmnF9;mAW z=LrR};uiB`J4ii-j<|cE?*Y{wCAMpa3ngOqJbal(Z%Pxy z!xY2x0^HPNee8!+4>D3^+?Di7#-jN8CwN4FAek%HF1!Ex74b5y))K84P@BiKG)+P@ zwn$AW$e09GOc~dY&TIdbZ@#-(%zJX~4I2Ew;c;RIHj3HIt1SqXB--{WS8yz67)|~I zYy-3jgFPyyq?2&H>Cs8LAD4V>GeD;_tLnGZHVqC})iwSpEM8{0bmpA~JNy!CT z?co_lo;17J`}vn{A@z~*Xf%*ukf+h;GrJL!#yoXLpUq9t%^S>Pg;;0R?}rPu1ia$m zWundQ(=EWuGtIL|XZNf`t=Hx`!^EbzbeBt=sv7Pa$;^AR6Rb0F+y=C6C&?Fz?mHSw;G2`bQmCgF8{Q?IXqQ2{?(+mm< zav6~{wO)+^kyh|cj$;=KA}~_lxzOFiU$^K>L)z}D;RZoyF_*=JVF-&EiDOtm&FE#! z0`1|iCqovQ%4Lt&YBQa%{3=XSAWpzXB85l{@0S_}0X#npHXMA^05YE6)_b$mHevxq zN_s9lOxW;`n6@rIZ868U>4WY_US?dih^%niO)HwplNBbcYqr|`Bmw?UxN%F)g!#Yd zq#=;A`_U?~EM_Npxs20^Q*PF_A?5?t$TBK<6eoN_F;vh!Hto(GBN~IxKF;c8eW7L2 z@IgAg_0P#37OWz&zdsU=!(Ij`F!l+UyrTyG6B1C!y!zKYRn){V)(QSQ={Ea&dubY4 zB9A8&^w1E&#BNouP$t;o+~`)fuPjyjFuXt&G|(IDV{`pUIX0{84R;ifss6o|Xt^QR z@$!9jZJt5{TabRBp?(ahV1|Yh!&W$cj{cOuciq#x8}0bgQqHgo{BoJ-Ui4j5QaFF<_w66#@JQSu!~R$QCz4aXDxY&z`)(PU||7r zN}!BzaFBaH94EEP*9MSA)Wv=<3DujlIF;10zpp@%oee5=bv7^W_(MYbL~;a`DcT%A zBl|Vus`5^h^ShzjKRX_cY%NvY-^!DHqcMy#3}FlZz?jloT%%|JVpPCN>Xz{JA+G^v zcO>qC0vT;360+*bqYY$ww4X7d99OTt?Gb41kEi(b8U$YyKMmyKv9ULVDgrr|Nb9dJ zAw9?{YJLUkFxD=tr7saEYUL2f`06E#fSYjL^!uDx$NiWn+=hM*t#2PQOx+6Vb5t;z zE?^6#nIHy6IJ)}5-j~mU^2B{;Nm9UVO2smgsYw zG{H+!KdZjFTlyVo9^lJ6r~r_INcIBCZljaqUqMyk+!KbN2xD%KuJFSJzn+cJ5xi&v56Wt`@x5%hKTXl%uy0o|(+pE?-qA;GJSG z{i9cH5EU+LsMN-4oMyYAd+JGf`E-y()z)7~E zw!?Rr)?@U}SOO6q7cwwkgvjhnavs?_;{maU-K8-$BbP;@Z+u5LMFCdRi|A{=4t|tK z@L8v8%e~K&oCOq9g5hWj2o(LjZ^S&s%1T$@MpTek`K>`Ujrve_4F|T`|A#nW^yyNb z9(so{F(=drPwul!VT|AMMtfLIs=~B9)d!Xqx7;xdMDa?I(Za6%5GasX$7u+)nN0D5 zy|+ifJZNFYdbzo?L5%neP99sV(2p~ z_axSB%rY?HQZhNEm5mAL+QG&_FCn|O`GrA|^z*_R<|$;OP&iItM*|58neMibP9Xax z^T|Q(VB(d5z=JtVit8jZF;BnJXVel3#Hm$MgER&Lx-J{=_85f*^c;|wOtHzmueN*# zhepRNa>MXEx*s{Hs4k&|m8>#}cpMM0$D*!VqdSztOg)*#kv@oU*c`{92utOssD4eF zSJwi#W4|wla`TY{2a|+4EnD;!opLXP&v;Cu*SaEZ=%YeKZ1JI@GgtD{Dpa*sO#~Sw z1QrO{sHeYv9r6Q(l#Op)V5}E9&AFBRts1Gdc%O0i0A20d8hbp29sLm`U-Fjod$$T` zqyUsC|KNZGX2X7l8vzV=b8d^x;Zz^hZC+zcX*TJD!gips*}_$(+-AljAD-aABSa9c z*xW;pwkgcXH)^_1>Cn;6Bne|55un$-VuLOT&7&2NrdI%Nzyxi3uiqry^P#Qz*Oi{a zhx3<8!xEf?3`1!fw?{Xzss*POc|Wp%Y5)@*iZu$<-VrS6!IW@iw#Nvxm>R7tSkE~*6~#p09?6y_nt1YvSN$2Ey~o>?mB_m}cU{G~ze+Y@ZI>5AHm1yP-^9Y`>#G^}nh{mam3 z6Wn*H;=`tK2>`1^`yP}q+!Ab+XWU}o!Qd#jhe@tUTAi%*(?@Y>{KfUQ8|sSBs*YR} zakwNDOQfv+yu2wHu{4i@=Nkth|$c_ZY%ICze zAUVs~M@%|(5gWr>Tv#w)26Prbw318Rz0BZ4Z%gS%02-x#T_2>=FjjNdLK(6x5* z0(>)qcfU0o&XUTi?I!E;mgV*;7Jl(I=<%349a-a6BkJ3IT}i9`C+J4fUM^UV`7PTe z!-2glg!H;u$>{X@H*8c-8#zo=S7#lyF;wqkOGNp#;L6G@BTx=5OMyvm6Rd1><5f79 zTwF=SmVS(`cH5IXJFW2a@rmq*QNLIg^qK|bbkeH>rkFe@Zt-1*M3Rttqs$B~Nxjpx z8z$gHp)A###tM1Tfi<-wgvx$iw98@9>kUB_j4^oG7~o(H2NjMU+d5{a_`NCIl=FwJn-?6>oYttiv}2AP01TQHV`{`EuRpI#Iro zjO<+}dL`uV=N5}i`sNj!A{`%`*B6SO=daT$+&;{uspqgDqUO%MeHinbX1Z5R8ZfEO zfv?F!zO9e$A9Aod*rr8Sf}m()=h7#?Kp~SH-#hJ)$R#Q@G3L=l(gz2OTMz-(;hQ{* za!J7Mbb;ZK+qoY}J_PmF<3Z!qv&~-*&RP=U+W)$CsifO%d>#IsZPaRlM)B9IU;T6$ z|BV+1t=vRZ9=r;d+oWX+*u|d<*Mor!5gDpdD{BlJFQ@2OZP3x{n7ra+;yIsLt)iys zkb=0erF{L;oMlotG>buXQv)6&2ULZH^2FQKPX3uJ4@asm{bD%oIV5|1Ey|3ujhc6sbVD!TC*J)~Xl=k+i-P zgI9<##%D0yDW{)W(mJE=Smzv?#hkJ6PRw>3V13)bwhN$4p`$2g_a1lzWazy%&)1B` zemj6uL$*|=p^&LSE}AxM&OHk?$~%M&7*t4I@sby7V4|;S>2u=aL&cVn{+>y)D-Vf- zHR!~Os8CYNPZg>v%Fe2iC~D-C$(_|`_>L2~6@pRHqA+T?*jyo;)7bGViDcrQiCT*< z$6SliJ$(X9xJ7N${hpZyc)KaAT62o9zPk_klGm8(cA%ZYO8#%Dm$WWN19Nx3vYq;) z_rbX9ty57r%;YME66u;K(*ZGrs^5)T_7RhDI_-436nIba_b31-J_L8Y?Cdxg`F7_HdiH+Qb>i&T;w;{63--7;x3q zW*izQjly|0|Ae&uY?EZjmRK!V$HI+uIH3om$)+{0x^KeuWc@CkjW}nV(mm{BnGw|0 z=D-2@xu-}sdsbJMl1;-ydY!TrAtbS5H}h!iv%X|h-XX?H(d%5@fHp~vTO0z=c$UKe zcC|I6;TAf`63X)>j<%#Br@n(Zd7AHn1!YS*k2YKl>zUFGtHqE0={%5yfUf;|>Y*!U-qNjhH?f;AaYsQqq{n{)?uyRkk zZ;d`SJc@C%dd>^cD>As>B$ped6uV_S4z91C>?5I>N2zSbzaVLWP|*+hIrvYJT(b+z z0GNr?Y}YVT*=F#1jI}=WudJY~2rfC;7TAvqKELITPW3%0$pMgx9WhM?zqMC*zXvnb zVgr!~GY2JX)IInI1LJ}$>b`@pBO^JJqLoT}M`P?~2!nH=uz))2ywHGBfMD|-{x?Y? zIBXGc)%8Eugh5{<@wG0dinCPU166ahM|fc#`m(nP?|~5#ra8~P0SAAXJbt}n5SJ{y zhALg)p=spj#)|1F))<9AWa~mPY-Go=K|UW0ogK zPJk{<-&LB#THriZnlpgIE1A-Q*#)9^yynPbF(aI{(78!1Q)Jz~pM+OG{AW9zhQK=g zlWhOOF}6Nj60*pFuKW}?-j&ME4O{KW2j0DbCH4HABZp>kY4YS%h+A$OA0OC`8tn7B znuvwSDR0cc@A11_JN;+!c4^}$GBOiaA#{^%q4nG)>F+4I49FP1aH zuc+J{j8F?bX1rRx)Kl(f)e9>q+1bISQxXe@cnQjOB$$T)^)(*EynFM64ou9@m3=SQ zWKODjtsIF3`qSM!3kH$N*|Oy6fY2nYQ6ml$r+W*jS49f-3u(!Qm8vJMrZcw;+2vO* zZWroVqzeG`XlZ(M_4&9PD7)l7O>-BPZa3{CDnU=TX6@KK0dSh!Mj(!zN^=UnV*C9| zIphE9E7uH!G7|`4>A+Nap))x0IzeOTcBJu zy5x=Z*r|MIR5#%ufo$+7+Fi&E$yCt?)uLnvhV5s>3Nj2s&9Kh>zkw>G`fb485ptAP z#h>%Bu9``LHp(at)c*K6q?8E%+BFg9UF*QP0QjNd@o&cHZIPcYhc(au+3_~fYb_Qq zK~B7P6P<~GxLrRb!w{3hDA0F}HkW*GN2(|}Cr7W1Br{6>^(p2a#-|9lcR&E@+GBg8 z*AA8CMV&@4!@W~P1;eT>TK(jvo2S!WZ<`X)NzaMmoiPJ}nnuDW8>#`l4VLGB;_Fhd z^L^H^zS}4*Ze^^0Lvcal#E;3KdJ&QWM7|CK8 zI9Pfev%jkp8u~~4#sM?0(DY?~LF1$5tN(YiiGY@>?vbXA$NZ`j+aTRhwN&B$Uy`b8 zDS*3YaLbFx4c0z2nZDTxwa99FxV=H6gnW{W*O(Op&lC-rnNw1up*R@(7usl%mF}k39P&$Zi|b%8&7&nBj`KT<519b_~RIv7894sXlshGL>cO% z-|hk$eXN-OCDqbkrw&BF6zRXbmLNo*(-f&u{q$QgtX-1#>z6|3mPTl>+=usCc@Ihf z)jLy=1z5#Rx|qDx{C$tnow+!hHM*tNoED)enQ#r<&KpqvC$y8Vd?daZbQ#WpBK2nACYb`+pSpfSXu1_0;NYuho5_U6NH6DKclKCeLq_ z(`lRDppTtMFfrvsGI+@15f5w^_ow`{w`u1eY9Fu*=ZEfFOyvsF&dTd3p^i-c9L39k zOCUGp&@RHx#*rVkN7fGrb4{>TAjoOu3TfFq)*dytmvqox%=eN<7VgS#MpR~hFbdHb}#8URSEcSV;`_g{4- zMf@Jx*)3Kj3tJQOfAo=3{V-1 zI`~_0~m;A@fZpXe%y3$5F&;e&wQ9l6_GkkT2MUIyj>Nkly?@X)sqjF3bKod2X5Hn#H zDnHahB!7k*Pn_CA8c8t7wMEeou&0X=Pwua3SlGP?vO3O@Zj#y&@t?GJb3N#ENvDev zXmTc@r}|gfV8H$Cd)01gJ=C)-C!?7gnMw{ax$;O5jC{NT|9{{LTNrH2Jju{bXS2i= z!;6e?S+UGdH+C41%oI=u-^;4UmGuXqzbd0q%|ei7n4{?^mNyn7`mpvz%j)T!X@s(+ z;#__!XIU;Ca;{!IhF!Z3clDCzUeM^p2*1Bwbf^-Xci6N4pruF^z@LxFzVG0e0cq;H zagyZWL5r4;UD6OVor3T?HRODgjj8{+T7G*RT{PyvlW(_KW6|_4hm{W@1_TF(CBYlF zBm#=j>vvXeG8Y;|al)b$utO(154_~WdKQ%ON3gvJfg6150H7i9%hfD8eTkqg#4wK` z;}%z8bHUGM{j)Fr#Q0PidBV(~*z&g%qCk>beC%b>V zFf0;kv!}sS1_oZgG2s3CAA3wnZkym6*>)^ea7I=YPKe9p#yh(|`69fjr?Q2fM3)CO z-Buj8tO$OcrbS_(KELs{t(?{Q@=AeqmrsHDd|aL$kuRVbH`}j46F?>?dzH+nLENo> z{nT{8H0_DBzp`n+Xf$1AI$sK)Jx5chf-#Wa$z}{$$#5z2o~`rYPzDeoX*1quVz#|9 z7K#2Be@zz>&QcN8TE10Sm6;_pM44}JR{vWPuEEV7lqU+yM>ybm)khW`5$rC|XJHy| zQE0=a4?pzupYr5pMG0m=VfDNLX{6%cBM2H<)DRsyAggN$C5!(P|8iviEld317lk&- zfkZ#$ap0GsI2FIbLKp!@WH2M9pT%@U+xT~M0rocA05nFv+iv_eABA<3G@ba_-gP%H+0#Ow9%DiP&JcW-ySO z%l+^GgmJxK4W@E4=!TGio}J9C7i)Z{ezNGOhrVj`n6d&)a;l=PIQQ%98=zuv8SQ!- z@a^#+c zQ~%A2`iCMlOjlo2N@+ndWPDHE6Hg>eCk13x2KW#9=-uj5gq(VPxbq(bs1{NYHDcoW zrzjt)&p`-R{Ay0!khG&g(8@If*)hR&*orGM-Gc|azU9d^`^+W(v1$i=3R}*&O8^-- zXdZrCbZVco@ji`?nR{}eEC??~+zsY|){?K=YF9d^9&$F)RDHK7T4nA-BPg`1En48Xnm4nds!k3wRjQS%CY4Tyax`Zygi_5%B8F5=q-x8^k9-1 z2D#E?kU2*|ffI6IK!GJCiLCfykQBb6J}MW(tLM{o>Vt#FC*#1-X3W_@$he)w8QmC( ziwJlR*4bgHy+*flkwrn_dhoJQ76sFBddOZ)U-ItsGrnUuZsX>4brs!59X7|&k5E14 z^z|h=)d-3h=l`rbPL2)$N)F<$DLN(Hg*Wr3qIlg0UkBqH&WZT1w+a3)PPSB|P-C6f zpXOi8c3P09F;d2SJjynIp?_)>Vll+PUd(M8To5@7h3WjQN`k$eI!;eOwvO+{8eiQ@ z3rydCC=&)3{O*jM-j2y5feP3?yc!yJ)M9K6o( z;3;IB%s$T4wz*TEPihEnygWl<-T8+;0EYbNBR*97htIMuD+cND20ya>`kMR|&D)J7 zmxqS5vCl31=N59y?_R?=WzkmCt+%AnNNWYPYfy<(CV7U;V*#vQ2cPdpSbs`YEH;Vm z6eHa$f3DrzyS^Zw4ms|+BjtV5Hl4BKECMz+S+{s|XW{C3O6p$n(3E|GeF;ARXkQXF z%#luE&Bu8&TW>7>hvS&&0)VnIowGMzR_0;z{MbUIA>){k6@e~|RAhd+}9b$y`JJskJ zqb=-FYn(pS#J1`3+?^_D|1*gVOY^E0_(Ay>qk2_~9SQA(XBsMC$Wqk-LNQ~ZH|Zns z5+oY40W5EWnkEh@o_fkKNg{rl7y(`R?T-P#qh+RWJboDwzHy8_zQiPvlexy`yX=0nj{EHvE$aaAQMi7uD zee35Gyvth0y*@5iy0Nwsj%33tJPTpI9xj1jo3~0HT3oo ze&a$ne+B-xB1W1zfbKIBBO}{QPg;Ik*!Fw(Wy0ft_TE@Xo`nEc?U#^oW#72l&1fU; z!1w!m7A97Bb*x+_wPt%zmo73YpWMBt99WHVu6yMz*gbuhK0W1Zww8vGMzGxTMYN6E z_(b7=A{(cYmPKIaam}Hcl}s{Ii+I+1vLRys3NascT%<5=TUDc*KfAenIuh&4QIyls z!c7lrgZu`|qXoUAwTlbCAn3dOL)W$KaI@yWC*uutq4Qj9Wu?PbTrW769&B!#8jNbT0W`B0axC#w^|+c z*8(ZP;%cS`j-EHZZA;4)B5J%f2vP462x&(##l9G7NAhG3PWokmSTdB^V2)!HQUw+vL$VvQKhN`|I%FCkt`3vWQ!4he!z? zP+VGAF%V)X3}i%UiNc=Uw4~Xe!e3f=73by1e?A~LKYJ5xY6dOD{-8Z4*~k!&?v-&Y zX^$-n(E%CP4>ewU*u=@A@u=(7^Ze~I_U`TWGeVQ?MdO}8<3MxPeGe!_XidX_@*jTI z#O2J*VjcM!MegK(WBdtxYX`;=k8oVg`c5bt;_E!P(4*@ zY}pUkyFVXeU`5khCEfeNVSyAhOy{DpV?*k?M%YG0{if8K7v4Q>=-{oKMZ=bi7~6vFSXh0t1ty-MaB*XU#$@z` zDZ0kt1WYpk7lUA2Tl+?ZMWsGI^PZk{qaDKA+48yq7|nh{+73p^z_Vc~SC|pkp?1r$ zkPEjw8|n{X#{_BZNH*U@<0d;#A0L(wl7~VP#}+a0BP%gOR>aF~lYQwur$|so9Ge!X z0mY_&k=b~ZV6#Rzgg{JIP7W*4qeM!+14E`FXrh|~(&q0FNKA+!Z=l)d6}V$s-?!#p zf%=k;-ES>*qz$4Vz-mCJXEDG_1*sx^&YZW1B+Ulw z`Brs_)WQ+OzI-(i6hw67`NJA!Ag-;sJc~5?^!!jI{7-hMiNttC_u)wxBm zQ8AJjir>|#KpLp6hEzGGrLwL?t3qBEGEit-Bk`fZa_4Gy!(tD})OMwB&X(be zSh|Owqd?vPqQccZfj5$F%)>b@I6)K28Dwq0c$#34=VLc_YDc`?+ul1xP)@#?rKL zq`T|l3iQfG)(BOEqO^Uhx~@!atlK7DFWLFVjA4lzj7^>iHGU z&k1vWEw7U(yO$*GL;07TPS1k;3E)S%jk$70^3dPP)03eU}ra@2n5!Ix-<5$G4+J~gcxSsvi|;qX+eufP|+CPY#V z7|yo{1ZMerskh7@)dn(8EU^P5SD;?W+go0@D?c zB%uy_!sF&`eyI`e zf7B!0#E3Z(1FQ$c#e?(dJTmkmQ%mE?A?RF1g!xznR7jbe#=KJ{#9_$Yi9dZm7sz?a}&BWp@E zl=K-UHih8?9D>DO)_i-OT&HWyVar8|vaT;UTWvN67>1iN-;jZ^X^j_=~Eo9X!@~Z8%hj{%?*kxkXCFMncm9(GAwP)>)cpG_)6HKPG zODLBTv>C^;Og(K)`U%;o8NrkH*)sU2lHNTcg}AWA z>u`Ns+HG&w5x}CH|J>}m4R_Drw4COAK6q*6_5H_P}i3yP+oY|e#6N(QK>`~WYUZl?U|Mgih4@!GHgQ><<4S0dAXI_Q!182 z#lhQrVw=wNgyQJo;oV&KA-NpMhIm1g$8SR?1gyFX!7NrQbfjIi=D?`(SX1^hj=Q8Z z5fijxy`lR{PHmW__8!54Sq^#iSteN;s`j4T%M;h8dlGs<&hx>tkLn=HKzd1)e*M(g9Gh}#{*=r3yW&O}QLy-61 z5{`BCSPStH?WMek*y`U_kasBazyHh&O5M_uV&s$|PU*)x{d9a(c zpIm^YlWmsv20chH6oPLr6y z6K3$QEavR1tG;hz-;=JoiCjfYgFqGN!%f6EMQL>kXmcY+8$N~U)t2$b`bBJONJ{DQ zVvrY8vimpNk9Mca#kxVju~OUZquPfum!)fQi+cpZt-U+8&fuv(=T?r09Xfh7tyESD zl#MPuDYakl&*;xH`$PohFv_%$of`Bw9NYmIsH8k7=jb1S*8hw{zw~BrN2n6th$-(H zez>I#lbl?^TR0*h_L}Hwh;XrT?)u&~h#2rmR5ycY%m_c(taLFeGW4CDQl=I%UF{zH z?6X1P=v-3!0Pt(T*by}x9pzL|;!%ZYc_GJ0AsG7Z-SKNXsy&{B{ejfQt)_fBTWDxH${;$$_v zFR*s3he2jgQFANCC_%@*i;1F1YtO8F@Phs64tZ3PqydW&uNq*>I3VwX>l&)J5sEjm zqg7V-_;p*f$HmPPM;+xtoc8A)Vxg^s%V2OJUl7{nxIT`M0 z?GomnVH*F#EUvkqTsw!N4kT*AF7g^v-=9i0LsvNA-w$(Ul2)!uAhitj6#ql%Dm-%X zI#GMlKfzk8b%SFXf%@r(iCPkAAsjl^Q6&`#0c#cd1d>K{*duG~-^C;7(iDO(n7=~M zNahBE*w`*e3kTHlw_}?j0gw)(ZUYhhH{#2{(NH^}qzBjDeEXL3QZZ}x^p>X<`0lXw zT9uclWfMTT#>ok8R&>;EjgYI@FjEA z2s4funOTR?|L2%PmN}s;^ZLo2a`EC8%Kr&!6GcBgULQb|1*v{(EAy^~@6)rK;f+LY ze}oX=6H>beTP&0w$|4Rb$++oepAmTL zH&E1$p5=YjKL$9~r%~Aw&rK+Tr3J zV!2;6&Mk_?mo5Uv8d-^zzJzxv;Y{!RK9Vvu_UDtgJEV=%a__)%WbChUcU;3^HuGu4 zFLS)AqSQDDRNLyf# zuK-J0hSLEe-BXcsdBf4q@>Nh}KdVHZOPUWlCeJ>ziHoo>z9Hn|AkRT+_bWU!pqjFm zUNEm4Ui;A%D8Y=2yq4z|F@lTD2!Rob8W0pXv^jXIju9{PzUo8Mm<^t9)l=`V_wOlG zFy<|$j!(D%XdSuxcV^Kkx4aLH2<=^kq{O*?}qeJp5J=XN2p>DxnZkb))EuBK2B|23BY` zXJaZtl~9}0@FMOcHT4O6{4isTgb$3B0Yn7)6a>_J(m|N{G7mT6r&S*+zp;w!24%`p zzJwwH&-Fd8t-7~UMiH^79?}Qn50mkT)yW!=g2*AuwNHH%Tg%OY8#0SQOzDly!Fb|7 z{yTvMTTSEZ2j$E8LkcI=Z(j*bzLg%jNsj8DdVA0sN;6}Ee%$oz6fZf;m!I-fC~01Y zQ~Kj}Z}5UAuKlbv%eJ40RbX&S1OJjGNvxJDw5*8T?5&tHjo zS-w(Q21q0Lu@0ZzST|;#_@l=KnbcMPiGHqZGzzosZOxNSbiEWvos6Spv;~=ZxPO=i z{;HwOhuln+-GgJLo{+kjexZ4>^jY5Xj45A=)*X07x9PsH&?h{~V8g#=gz3neGQSND z2n4BkNf^DRJ_wv3<4b#8-P$~kn;8hXJoGkGDYxHpLX*f%3bYY&<7IDq%8*gEY5WBl zltF^Fw1)7M4V<$M&BXBLB913>5?YYpB{eWr1kJ)e6Pfv!U7QeN(mD=N+5i^U`%D0+FstUBwu@1#E*xc%i)rjPm{f zJY}VjycDz?K1W!AEzs>{XjY`zu|r{_9Q1gOEdoL8sho?D;7B5P2I3`iRT`H zwSeMSBp=Q`woRvd1Z1$Ip()8c32i*rj{b$X=C{L)sff+VGlRQT>Zlk{61~Tiy9&>0 z4}>!vf70p^wl`(0nC2ECyS?WS^}R~|AgeZ31!2u=+@bu9`lB}VMVd84lq6rbq8u6R zjLIE?^87JGPjkuyR35Gl{`j=o@Mg3nVh03e);&7xy3Vx}Ttbt~Wo)&+n3=}{BasPN z=K{|LkXw%VFWy{%=r$eaOgv~pZhV|=Ns-=LEjtOed11))RlK()OR(~{#psnk|Fwa6 z#CFUm;;N;ZQ#5)k!jl{~9+sA-{Ff&_`h^npvAou=Y}<6~^}c7at)|wNIars$I!aFk zW(KH3j~py7dtKGjiPppc! zjMQpJ#_te4!?G_*$e2ns0!91yBxxs0?w}7pTxH<7 z^;oJ|6fhz5wvZ~AkW8+?0!`q^bnWzsgU(0t(z?MZ<<>l-|1YbgTZT{a*E3i4uI~ml zEA1AVsh@P(LWGNIm`r}BstO$t=tRBn9o<*A>~39`k`i>4!5e)CPwnL$=#fl8BK2m+ z*&m+ni4;BRPCmjc6*|DlJV;vE*V|$;=5`p6DWo{!Yjm7jQs4MfF0{mV2XAnwnhVY zojqO<(eeVTjzxpXTy3%`j=M^w9kpJGTyR1#*R-8w9W&Py?(9=Jeq3~{8%FHF)m<>6 z3vXlC04 zf-#Phbr-3lCgJ%E&d#|ihjQPm!qIJmMER&0H_t!gl}KF1JZn2Frl#t`%yL_KO!fq> zihPu-@zLuTc{uZ9J@eBh<8Y8MIC4>Av~xZ>l*y6k5Xh(SHB*70Bki0uY$|mYZS`R& zmUcgEMingD&$v9i75`m9__TqPM9%AnI(_Vu2gX5&3cpjiulk<&lQ&A;Pi#rnFC#=j}PouG7y!8=6SM&$_XNoE>_vO|m_!eQ6=IEjs_Ph)5O!Z;m_)Z%K6yBXye(oJ2GnlYR=ZHfKkUAw z;=j@uB_T)b*>|r*V!L|b@ON)haN_O@vT($Uk8_B$QO|SF%mHmKJfnr67Q%t{|@Pcv6E0s9p z%b^YHIMIZ{LGI(TZqQ;Ekd1i+wuk1^V;baXO@H`{+Xk<13Cb+KHaW1Ev) z*(-*SwRr$cbg(A)*7A*oBNBPAtazv}{H$jOV{O0)ESAoevODv3U0&wyKEZ*XZ2IHP`BSQ$Ai!L+c!Bw13&flj ztz<>^2D)KbdWifD5`7j05>}@vrC`@zMkw>Y0KRZ&1`$eQ7Wt(9azX%4;BcwE!G?3# zmWv%ug;%Bn2N#442$Vq6h2*g`X|s624j9wOtp((_;*gf#PKTvB9|nkUDK6b3P!a@a zD+oe@^iCi~Ie7%h*^Iit4^gx6i3>oyFUNd~*PJRLaF4GZyp{=g&MD7O8@^_w;X_Pp zM}ZjRC=&Q$vppR-#AxAtg&z`E))cDN5_!7qKq?NvVl&HWynQ>N%+fANVB15S2AmQ?P+sv$?VB~fBMd3`{kfF^>OGXYH(q}_1M zju77s*J0FI*+p1(j=o79za{n}blqrTKj)cNg?z={+{`vx@S0)g?mR5-UAGHhIpi+a zEBjbi0bVLl3E}(jXj{Qp{p-yQ5(BW_Y#S&B;{}&+aPYn!8q!VukS1Vg{tr=2R?jB1 zKelVk;>NN0dkn5FXbq~ZqUav6uJHClCs;;&^a^7AMO4I)y0WkVA0Sl$=$L(;p9;h> zcF_1i2v^>ErgKuvKELU|+0|O_rKBm5f{7ZN>2KY#VA`aXHrKBiovO`vi$s9$(V+|B zN-Qm?$|nuk=H+qHW)p|3kTR0=!`1~rmm#hEj$Yoticu;R9%VCUD^H8f;+1)rXNS^% z7M0I94V4&pKj{da)r$^ z+iJSa1U_q7apx2Kk!0Vtg98+$M*!PeI_$QY(hi`X0!RUq+F}NuHS1gITBuMoQXu5{ zlGc|MPpFZ#FNLfk!3KZ9;hXKSAO^v3Ns8u;)rR}JwJysTId)`dUkmG$p^ZpSZ0OdP}9{5><>&BMpTu) zvs&a1|0z{Xo+1sE^P>CcRFfiLYg*Lf~I=& zBQzVtq|A4}lgYZ;yli?)hTQaQg238t%Q0`wQoMyQ488<4~8hza2*HMg0O6G4kyW^4q0WA;s%5C$O&(G zDQx@Nmw77H8g#rL=wAd2Rqn~o3}3U!|8wj$^JYWE+N$`|Od^y(V4?eqdOej4O7jJ- zkxCj_Y1=b4=0V5E0v6?5{X!lJ&5DZ3cub)@>&)RVEB+95ZmjS2@ByLu_ni>G|>UzsWvLlay+K}M0@+l_1x@nn1z5h?F}x2BKd zv5(aet2wnY=j%Wl5Vs7p5f5RdO|yc+0Q1v}(cO_>s63k6y5mFKvWDsg+||!tk6Cx4 z&KdW-p+PVNj5em8@{kFw?oSI&tGZpe8oa`$2#VxaB=_YOc;yg#&jx{nr;!$Do1)}T zP(Izu7F{~6zl%XUKtIZN{`#@tPRL^a{2*vPey_UUH_%FsGC6r6Izw_2&FqUKF$Md} zU+`g0qM$D}nT!{x z3U=K;4H26PNNs)aRC3e$ znhtkHfM1@sV~1<+BXfdcV#T5DtJH|SEJ08)?ChbZVESX@TETFRlEhp*TWR;Wx@gEu zfzpH^s`Mf45yUp)^$^(rAzmkk<+*& z6aRvmCRK@Z`Q-+(N+0WVhUI8eerdr-Ox6md$2z&z?XapBZZBoU{NO8*crb|S@9EID zy(D3?&le0mj*EdX1OJMp(*i$*Va5)I_&{Dq-DjSo0@BCL^Dm&qtBJ0h`d<`De_VUr(ndOHsgt*coqvg^&kGFXvJOv<}t46@vl#EgX_W^seAH zBq!Gx(MJmNC6}$a-+m{h;l+T!V|UI4l`*Vo4r_JuOKb}XVS)m>BPXsW{JnrpRWg*x zN+KCywXNAt&qFhBO1l)U!F!yIJZB4gJ9<)MbnB^qSs^>!X_5@)Y(&UOd&JI<5e*A0 zAH6zkG$@rdcmTFoT)5UC2zCG?wPg$C3B&+zqwz?Lf79A;hf<+B3aW46FJsk>)iXRp zCe46Pmc@*`p`|a(i-h#`Mj)pE66qh}%-Zr!oBpn#0r*F59~383|L87s%RF;Y;ld>5 z7>MCc@_b7$Nz*T~k` zgD4rfXXQu1bJoJbvf$D5UqcnLup(N_z5+Z#U!q1$+d^LIDBS%HzYP|CZ9Hd+>I`CH z15l(G?uM#RPbShV{2t*IHS#tKmkrkqPo-;i5c&1?nRu2Tyw});h|W^{n~`%*J)|43 z3A~wq&Qk1ne{go^45|{65}r9^AN}S-HE^+o$r38De6@EHkbzoAi5!}(*nI+^qURFt zp%TG)D9>@|bg3-iMma@SewkqrMdN~brewU8JIEe0jZ1??3b+IsZA=6_IVyCJ#hab0 zylqN7s80n3oDi9P2UHpPn9X9T*6*A?txX?kS{5j$KF^m2G?U$hb~oBg-Fn5!Db>;3 z_5<-MS1rwPi`O`7!QV~Ql8*x{UNPaU5py#YM{YSpEj4CDp6h~H|Jmj3___(#JQiB_ zg{pM8{zHZW>}?dj`cBGGeDB@Lv|Aw|N<0F1=kUJ8HOY8@XuhuF2EH;eAt@?sPyY}Fuc>{k2;F6;ll=ORbUrB5f})30nU~Vd z?l$GjjrNfuZOxy%u=jtal^ z6}Vbg$%8BsRp(W&4)BC1raq-V=P^PZG_S2}vC}g2NOIXEV-u0kA2LW&A37 z9Y=VKRhs3!*$7PLFkniE@P7i#Xv1l-9y=qtF>|s)0okB2U5lFuUc~)`55h1qj$+in zk;(&JMtk65yhTNcRo@y`Vr@kl&U-nCUL@eE#6-~@QhZidiP#7vGkgPAPVei(daHW z1*Qq8Rt;LKz2b^846OXS4g;M*`4G!bI}scZzMcI?WQJt%_E+41WaA#XCRe z&T4c_8=!7>S;cNd{m>7FtaIHNM!NN);lmWDc$JJz8>l^qVG6?95?+vP`g*~`3OQ#5LWE2*iP~|Zm}Xcx5lyG1?^y}(h*0^jt${Tp7*{8kS=Zjd zEMl7Zlf%847saBs7=ZJ8wtAjMyBLZNsW)FJM#MqA{uj*;D^*ER|L#~b!5srr(+eJ% z!rb%P%$5*g!c&bNLuFsOP==bunan{0_>nPexWeK4AUolNb6EJPXK8>WAH)v1Y5uJ; zuO2G^?b@?r@it;AJwpr{L*MF|jD(Rnot@CR6AKqXh-|X>80YDzBpn2zNV&te#)S0W zybxJa;h%DMM+T}e(4i!M>ve@}RgDk<4XbcAF19nWp{&8#os*D z6Z84H1=6!T`yWL%XE{fWS`yU&s@6;OC<@ujH1zrK!%T=|z8<*>3WcR0{rQ|V(g}vA z$KP_03B)|wD>A`vDAt}mIXPiIXVi;OvyTH`-poi_>F6^LZDH=n#IgqHncP0C)K;k=Ook>K=+Xfa(A-iw)f%j!>tGYv{S4>B`2HO z$P-w(9O;mkd6gJ=%F>r0Z{S?}fdfO#CSv3v+Jn~7U=N3xV#$>FxVaN<9h(a5y=?>m zj;*eiIn0-H*m62fQ417}_*)3|0PTht2}U?S(p|$Ls^uQ}kR0$u!{UNQpOb4F*lxrQyu>Bo^d<4U3iw?*$o zj)F6^IR7V?31S7pU2v9o;h~&K_3`6jBRmm;>!S0t#cK75qQBr1Y*P8w#PnNy)4;{a zhm=&OO}ru#dA9c{(56JkKvFtropLoyqDk0n5c(4OL%exFw%NswY&1kq2S?W0HUV zud`*j6-WL%u|G6Q$W@O{Of79VgtQw_9h78thP3K}{?PqbVA56qsw;HhB!$f?7Muf% zAsT`um}ix)bJ(<^oEI9FFmYHKKV zxY?*|``+lj7e&GN{91=%-IjzRc*9%F^%S^y%{8#(<8LJqZ;#62uBC44=LyViOzY1W=MmCJpgqX3(ZxJmF1 z)Hau^@CA9hpFJ(%=o{F4#+4ndcRj1mk1^~y!nI*S*2dVvYQ!~P^1BEU$2o+>Wh1C6 z5CszKggtH=KlA$Q2F;Zs;}yb2x@8|Ivai>|zZde7Ij}M60A(rfYVEf}{3W&|p9Rpt z8XMOchumiODJJ>B_hROEKhL}A*f@5wvN7m7R;Z@W%#MmZ)GC;yWMk-v*<4c%JQCyY zZS2PMW}|`D*>1hW*#KB6L?O%hMfJaiwlVf=B*hu12~B8}L`AoJYdHA9O=rYG@@PMt z!YrmM`L`|WFBG_8PtNcH_~G$b@?q5ClgDr6Icn{g8bC+UGSQ!U(qqQg+RN2Ax6{8w zEd+qW-KB;9s~ys=0hfbQ@11?wS)y#xqd!*?@Y!A{rB_Rnx=f|Gd|GbmlZ5XBchtagL$qEDS&WDt zUF@glro7=EPi-zZxZsi$TDXRTBMvhsoAj4I7c2$P?+b?nP#T@hCqHwv$~o;JxX1<8 zBYlMUE#Zl7*oG*PLlh6QJ!@L*Tf3i59__@w6$P}?#ti&8Y9bmPXAUVZsvYRE>pOd0n6=3(kWfwxlLVWf3@TqsIa859BSbe?R^ zcB-_*n>C(o;+Sh|7_jiw!z&}Ruuh{4tDgAAUWGxwT6>w_mLk9z?zJR#htCc`0cHRo z$%KLsV@0j_kldje)|vT9@L^@eOH;H0bG{4^3Ii}TD3_3*Xk6twhGclb1RD;;x$R+i zJ|ZZ3<0G!^7ukScv_WJ~tlrk_V3Ls_FGG(q zh|0)#LshWa+sUmZ=WOszW9P8P0kmU~z_oBik6=*bPF!bN7zP8Pnk9oZEs3 zQ;(KdTBct#!-fHVtVQovzCwZ|&7hi{(VnCGw@fR%CcuZ=;k9{yCunBZF;1Rcg?Td;nU z?_3wJ=6S_k3`VT(TXX00e?W|6s^BU5q~}|-B|OB#NOww&sTF!aSmRVcLjLjAG*TMC zn0F2wBPFQU$*LcdzB7RaQJEs(cFffZGMnshzfy2-Lx{pr${eFq#;wCJpmsF232feF zbi|i`;jx@lVso!Czf&?q+c_zHF`M2Z)%oXEcaxnh1we96=7RC3Ym_K6L!crdE&bFker<15{{NX@QI^r_4CeC%3yx39KKN~prjhRF4}>gx{D7%|40g_6Rq`* zG>3hq^tQ;9>hFhQWw!PR!VhNgFcQmjSYI~_%7(zwPD-E-3kjA>5*ISKlrW~5SyuQ6 zcJO}<3&R93GCK#3RH_G=$7m6WC&EG*Uq&+iP$%I(4~8c6O=aH(cc9ShY1Uxbh1PgR z&rfgd6_(NL7&se{7-&Kg;7si1$q`C0PwX9^b4^Jgv>G4crJ{f7z|@o9@fb0Sa}ycv zITzs&90UKG(OvX^+dUoK*Gn~DQZv1pHWTs;Tuz~;l=icsnc?$Dgv1=<4Z24xPp5qj za4UoB-wWkduI@SAN0)EXjD+SMaMJlXKyeE5*vThZR1`)xSPTHE@DDI$_2{Ts$0s^{ zxV*1TK+LK?Bn)U$6ARh5MO24q!+G~Iu)`GGL5weHiSs~wr4FVe=y}KRuv8H)@HeZG z@FYiL6=DXS2nZOE;{b!UNg}FX#v-O^jXva1gKe$GIGbrs1lYXQCy>v+$2jg#*}?_o zn`6#=%S1d(K8*$+Qb88o&IaWgpw@7Op2^8>OXyB<)%vC{7rNnxDF{v@_wV7S5G|em zWyY^*Dn{bl;6reR5NL~Q#`ALM9RxN(s34lRY$KSi$`kihsZP$*Au!+PR1VhB*=>+) zhLFaK9b{<&cw5|uSQCgC-xVF2sZ3T!2tThlQOJ1M8%?QyYA#%}lcPt<i6FQFqQQeNsc1Q3>DlBd*ZkZCknV~7Xp z!`p9IRXZ7O4#@a-1*OJaOM37R{Jf+#2Er|9G&dJ!?2V;P|IWkeF*T%cZiYy;mE}$J z>M^kMlG7iNXRwnm$_Fyn8W5!ON5}5I4Ms|{x(dHJ#kg6m9Y@xs7;Vnt=9uO#^hKzexJR!#i>}D z)7wV9N%OG=p^*fd|Kt$sX|}73Zt<$(k&0|L9;>=voi6N=(rO}fVY@|IkC)%PVmmeZ zO~&0SFsY5 zRW_Sf*v*7rf=wG!CTr^)#U5i>OV7YNgE3m#Gjy!Obj8m%mI0F zZ+DV;sqgw0W)%IBp3FB7p6Z`nKbA{jA^!ORYxItcz9wQvhjz+L(63?I-~FJv7uG~Q z(xQ=yf;{<6eOb1-#+%lD9Ke6eXU*1gkiF>I+UE;i1o9czT;&VH&7>849wRj*K%=r$ zJY;53rxpavycMVk8dFB_KdT?2?9jBJ&?PlVoQT-%KDJ&x`rqTQ+bBkb)gZuc%=Lfj zAv#i^A`bb94wNUN`^~m1WJ7EXogT;Z5P)3fLtu8sj&>2Q+dw>Yvt}LjkhoI~##F8q zw`q|eI3NaBdFIl;n6UuK9OzWAqet;e<&{ywF05q$5iM!;Ab!};{Wdn>p$+UZtrcac9trWy3Vi^~)iK=VGLd;IO{o_w!bY`C zk>42@WuVq(`&c4`Js^1Nn2nSzT)-pc4mz(oK27F~9!NKkw*d`*9He=!?zNl7T}(g| z!T3>?M!mTU9ZHm?P6s9*Wq~L3#eh{kvDWrqW6FmxIjQ5$iWW+MDqV1{ax*MucWrPx z23J2-RqtP$OsLXMgpiDf6LBfgoc`Ce|06n zN0+YRU?5;E9yiL(UFeY;ZE8I}`cV+$24T8d16WEaLtghKnFg-CaipPVW!u4j1fIE; z1`2GMJ*;ov>j_C{>`T6=!RwHygKVaV4Z%VZ>plAZ(L5=`J!cAyD?{RSfq!g7pTG(# zz4+nQDm5PmkTIp*0I?ueQs{#CT*nGmmM zY!1gww-zAt7d%$FexspNo5LEv;w`5io9uJ1XLb?Gngd0IBZ2pT1{$1nCu(E;BnwSQ z@CQON^jauxwO|z?2q6O)ztXu$GDv`%2t7UuA-^yutoXJtmqcrYtzO2KPp`KT;j!c+ z;4;=dDDiy>HV_oqLxqKl*Kx)tR0O~Ww zxQ@;EIpp^1jB8AKsa}G%#4|<^M4xXrDmT|SB5(sz^ z7Qe^ui3rA<4|CQ*8e2^;aq2%K;ZePypn5lnj6>xRs#7)tt)fCImIUFpxY}ds3N+6i zZxj?vy8oWr=Ogs!71MTnc}nl<3PSc(_8j-a_#T z6WztetjTQVcpoEs%yPC&5yI~PBDcziWPV>DdG5B43y1^|RS-qu5RpiZl7I68g9GP9 z1l-$x;+pjobc22ZLNjlW|E>2@cK$4k#^C(ew~ynalF2DD&8DKk%wc0q z+-*(COph&cd5@NS;m*FSz!puJ%4A{V%~630e~1D?cV|A4YJMinkRg{0(%;abTMd(GpYQ%dIqwcNKgSbgBPN`7nE`J{8Mq24$XQm)G6#y<)e61hRB`q- zJY6oPAEMIkSi&>XwZKK~zB3}YFq>oV>ajKcSBEg)x6+-f@_!`biah7f*t(&a+s|Hx zYb<)*9)Z@kOtTQ}ihNOq{3+uCRuz6r*34aQ{#X1`5id~F%;2V=4AIw3nmDf+pQ=J?RuLGYMyt^a;sHgPAmzuR$tdlH zoBfG_ZlWnym`8^=*I>q!>di8s3>@#C)Xkbgr@xtDE_a4VzvWZ;YCAUsQ7zfEx6t3l z(kYS(Ixl(aLAcX4hW0VVP^2_%Rg6Dy(@btflx9>ZAWsw|U^rZ{7_nM7!suyRromac zkDESYL$r>!h8O;~ka{E>b28qi*!={r&?1{fSm2F+NZy<>>7*s(Ta|}4Lf_#Ov*dC^ zcSvQgG#VW;qd$B*cMUBa)_nkJTLw6a?kO%Z9GkH*BfmHn*-$}dDCEIyzi>;t5w4T? z2klwAE^#qewOW`1*MrhgaJy0ywOO5Xe@`%xf1#u+d2o--<|JsS&zj-%GFqQl85lf2 zF1vbj%&@5KhG^cabuW#=qt-biu#BiqhaluIQhyr(5kUz@ukE~y_Co@&vBIkJCD881 z3FV)Z&qIc9N_WzTEI_%{a{1X2NIN)rAh^G~<{2k0Oisc!J+C?C)fqpv!f>MX3m@y2 zj#2F}PP;sq5XGz4W-Mh^)zJjX8K$izw^v@4?Vpj@2OFbs@N%SQBp;asiC(-doKL^e zvsx>tp7i#tz};I9B~8s@8Op(x+u+X}=TCr2zc!4N7)_>uS&vp(~aS^?=f0+rVKODw(p6W4?GMRZz4N7#2e-6 z$dT{>EM0y#-`(5P5JY$yl9)ph^o92`RGy<88;urp{6B(7mFy^eCOmL z&{l51;J0kTI-6GXRz8DR!wQ-d;dTg8poUVkyMN5PjC&j9O;0;FXO~^#ITe*X7XILS z9IHOD!*MM2>#ZQ;lLsc*f+*8>ZXPMh@GwGRd&D{5+3CUdq2A%103)Q~ z29>Fj(E>E_Yc_p28oVD=T2Pfr*h9_;^me9#{f?p&@u)a`Y za;eqtGv5NVY$|owFT#6?7YTdb+tkwNMx_L3lok_adUbU5%D%2Z^uPd4^Je*FR)PX^ z{fJ0Y{5yNPA*#uw#|`So!_d2i**Y-(j_f1DOf^Q5C`FcHEG}x20kF;CIc=2GbIdzN z=K4qA+10=_V;;G&;X5F0+muJDG&oL&yh_fbHgB3sM#i4wo&W^C2+x5fIrKzx6w(zO zt7UHhH9*S0qTTXLH#O!=Y?>gyjiu_dAFo)@>tK)R5gbrQ6&W9->6zKK*$s{+$R=;O zR(PvhfmGq*_bA7d=t>LKLJKkO*!b0SV;6sqilgDIdiNB}d%~9m@9bf;C7UWz%-`b` zy@5C8(}kTw?3j6B@Jkl}258XvE$UY6zMJdV&9xfq1p2(^C>lrh1lmDg5Xf7 z8buDg{ku!nya#lT+-7$6QT4H$mTzP@3to)%O}|(W)iK1<5%brW!nPR~&mBK!H;i%H zW)y5By|SFmlg7Q#97WR-Q{^*13T8&BSsL&sk{O<0JVrnRzF+i*!tO0#=--I@dqG*V znbULtw}^N7ZljK``%-$h9LJw1Q%>*7AJ%ACY(*D7o-?OvH4YA-Ke2FNd1D~I>&jBR z1xqeVn^NsO;snQ-N)31Va#qRZIX+qGJQdD8{?!2Ff~9=1W1gyQ2eI;b-|y1O59c0S z6|V9PRjj(Bcsu87m>C%KM#q3dgl_p#$O#S_QkKJzaoeWh;&gbL$v|*m{?H^}O0^2# z!nLNunw_ycvbz&Zn}jdM^9Z)C1$u?9fq(6C=46d+e!o%GvzLC^eDm5c-JW0MGxHgPsF* zYKzP=O{WYfc43Pvx+Ir>U>I65g07}FtWM<*rZfD`DFL5BFKR*W1PlC9+Q&02`r z-s;Gnn!O`Iqbl4>3N*>3l=6MAcCw&W}Y$XH)h z9Ep4AM)H2=ylIDWv#9xT=-%)sh3`J1^f{3}_@grd4ox^7nZflQ>8hBjUPY6LkEy}M zXtu-*LeZm_Az(kgzERhINvG~mV7_2LUV>NMD&QveYle;zM(BDey?~@H=bWt9DkeBy zP}6K*H)m{~_K4^sva<8vhUy;wg{GAdMMu(sB(z29-%Uv8xWryo@ye?10m5)1+~y@+ zS!e@}pZEz|pj`}$ve}^Hkpwl`jTLC>Y3BssVxl2_)2bQaC+k%k(UisR1nRT<{RJHg zuMTsesGmKVjYi;2==8-;JO1X4ukn^RDGOug%EJEppPN=Quid;wD#dsz2vQ}fgMyeR zc73NKw}j*A!Z@ndFtQss?!x|8bE&No1FBN>mldolj3RBK_*Ab7`hoJP(clo;bW3_f z{bBBP(hM|5;4v}DTs~pJ1wV|Q=B?S{$r9u4z<^9YE$VFMwPoKZ3@R8F<hDe9zXE{!SRI+&1mdLF^kLrb zmtL@VdzN-h0HoMM;r3!^SZwc&|}gt@-GTtRhBmCq5e!Z#WsBz6)Q0(e*v*kJWkh+QU%gQZw=K`0r%X~dcd6o|h?Tb9TF zRFaF7uCk@Gb~>Xfj^C3%G|s~ryr3mEmi->+z=USH#+rZSj7m%-stI0}{c2h`gXl_# zxXcj?aZ-gn&1l%W7n(r0ge05;bl_x`M*4XhL9tX1KK{9Kd2uL^^DfQz?IvMN5w9QL z$N&t0guu&|T{bNiG>1_zsbmq3uO-Xi>bCg;E#zTuI!pS^;CaOog9#=#U+V0Lwe6-Yx$l!a02FDdLAxNjJdJW%Ac6U}I5 zjN3Mwwf{W)QKz?cSx0~rgCw+`4N`ii05FVa-xu!63`3kS3psm2D>y(9Z{lDtHPc_u z2p%kmgBr`Y);<)L!Da_{1h;rCtLM)}ZvFw;ce$=|vcgO|r%gDroE*zzbN+s)qR9r> zcYP=hd1(sAi&^7ApmmIJp`9`r9E;SH+6y)OM#Ax1w`3^qC$}>`B5m;AspTsMi9t`f zWZgm>neV2*%dy(@H%&bacD`U5@(@PGaEFvJa0jRZdPxZ|3_DUuDYW!Bf2 zI4NQu0_#qqzh;KvR^XB4j3zoNSe{0@mtSpX^pa1U!aEOJ`R7{raP5LN+3>Wwc0#R z$=vjieJOWJF3M=OQ+S|Q@>fOXaN>PYKj5-1=|`L^SBA|m{?nN8E! z0Yo5Tl#?U-b(fZHDKk0E6-%@{ZifVjA1q*m46$;&@DM=et9T!BXuU*J(c@)ykeN&B zqDmlF75r}JLnFsRm{XaCY>h zz(mIf^uiNoVap1B%6>zt?wb2YVU+~Y9o`G3H32kToJEwIpFMxS3SGJF!21!LcOtL3g`%7e|zds}xQ*@;S;=mR!A4nkmT zl&^(~A}n&!m?7)goUTbQgYO&s4XHx0;6jEl?$CY&zTF_4*(c&NAApS;65^Sh#SPnh z6fz%~VX#*^d1yEuEQ4W+Bc!16YW)P2Bdzo(pjuBFbUKQC#4q;TA_0ywu0#sT*=Dqp zefy3Nk=LJPO+fo});#Hm?!wwBu#L~UND+SG8k|`iCNtoNlfbZlU-QDYRDIesT6u-o zF=e(HTBM>*4+!M4GGYzD5t3YCmF~yrrpBHGpm;zEShd0swJ}kjdkNfp4i~CG+z+BX zSmI2r^s8&o`jIpO(LW}>0=ehln3b^+&w<^`><9fyj&gVpP|^H^@K^A+?o}Z0kga^r zu`N}0SYU?ek}hjLx?1k?Za1sPrbl31)Hi)*iFc&k^>orYP81;MePhdCfL6=c%BK`W zUJ4%ER0{fnN5Wyy5gqz-o#EgLZ7FuYv###7jCkML#aFc)LzAW7y-4to*U)1AbX3P{ zWKEMNZgN0ml-w68qXP;Kh}3tnLNk~`5pNA7#65^Q6oxilvTEKoa#=(rK@QXe${>f_ zh2izPD{p=0Br`6(JBGU1)fwX$n6B}ZwmUZDmk_r!sECt*W@+sE5>B0+mF0o~3T%2Rs$d#t&NSh2h7gtI@SVe$U_Mp)<;b?*K54SHd zSw29tFZVX@*NWT`3|ltEtz$-UuDz$Woi^Ot3CRi?>sD4(1|-m|);|)eTtt%NlIt9E zo8tIf{BBDaw*|5U?;X1~AcotXC@;k6kv{cx^Nh8y;e7B*-}VwGkS4Xi>$RD_DR`*% z@SVBfZJF}DKr+qn@X5kA!MC3kX%s3xWJtF=%?p*WHi{Ly72ONvx2>HUu&r-2AltSU zKk@M`MQcyS2GJQQtH;G4()ON2zek-cW!a)ooGKj{xi+Dav5~u)c3mNX&Ofpz{BNMo zc1X?(CUiAHLZq`}Gh^oMQEw-J-Y;l55D20*gA|GFxXcGE=&T~Q_#onX@w*p({XmD# zFAWy8vm`=n*;T-WFN%HZf3Ipjj#yCZ0oVoOJjS3=KorS7CYoxXQ)bQyx`s%?4A$I_ zEH3Io%Mt*ZZY37l2gJ8F@1XOKpI{e-wjIya! zOou2Ao76Q2|1*w&8&!6}QgkPbp}0`g#<^ULZqIEeP=JTXVN+pp!JGc1h=`H^fvPo` z9_{|n_u2+UUX%S8cFGTIxxoLVnv3OKiY=U^(2%4lI40OE7nSOzPxinDPF|j?%)C7* zwzJlg?Xd{DnZA&V#LY7$3PXLb-4u&!w@+y*VE!iddAoDRoy`^wpn!~wR2wN`?_7VT zZT;oG3AZyYtiPxbadriK?`LF`xcu@geuAn`E31(g4f z+tdI=Ak(8Rk;vXl#Y)er4MNao8NyN@$Q(uPslNU6uBS2?gI8}{HXN-SimBHLJ*S{S z$o2B>Bu4<&SpT{fT6nX^ICmtPF?L6A3Cmzg3$1l2AXu-QWSQlHq$XMPA$cCr8 z$zbQiCN>as`98U8R0R1nJVDUi#N;HTA!61qCuHmZs#dX;-i3*zLf7mPn+Cq_`M1O6 z-bsJZT0k|wGW?%_WrEShrqp4cRU=5L5F!;*RxM54y}|lMEuGdK-_ogV;xQNzI=&tQ z6fa$K5PAoxFq0gL725~Y=u)?MDo41tQYwSGVK^#K^KWWne9wbwD)WM;yYy8$m{l#g zf$99~tn&pQE8~pyN^Ll!m^-y5_Hf`ug9Qv8I_1AV>I|GeKb4CXn4u)>-{CxkVk0#SiCET?nqdUK9}pvf(Oe4*+^)x9-qCh z^eV){6wfqw@kE(jjcT~M`l@zu zX2C+JR@xW}EihfQ|8(~v7N*)0g~v4CTCUhbTD7DEykmy<5Bb6sq>cvR?V>|FkoseE zd+7aV7D|mo8v2CX-!@kG<0@?_WL6P%N>v0HhcmqgQ?NGWEEQ_m-#%iT5;`q9m@#f5 z4=U%obe6p!&8_DBeYr1DK&{3?F(wa{9SSZsP|UY^dx`Yi2xA%SkvU_Aqwh4`0}8!D zX*2?(l03m12U1e;Lg!jlp~1&Ua!IgxMso2)!9~72TadV*Unwh(D}|14&B-Nx78?I> z@UY1?OQ?)$N`&*_u9}XT4!qkG%FmOV0RD;(v0^(51z@2f+vPN3sJn2jDDXO3FlTC$L1Zgfr`$IMJK zcl-oip=egQoSNzMrK+`vXlvkHM7(uWZWQ|)WQw6D_L)XK&?fBBh|3+?$GyMOVOM5z zVz3KuI^d4dK6;veYB)gEg9R{FgL;~{@OhzOw)meGa5TZebxK$SoefUlYn>Llxp4bU zh{9YqX-EL74{RCH`2;SF%KjHVnF zxtsH%%i4!C6@!GAWF6O?bg_xXF@irf7r*j-0*wV~gIZT4ta^H{J6$W9i88>NApvS(%sTF&H^N*7p1Ml1ng$5*^)Zv(PK39D=tsg}tj zxkaIMR7lif@S+SBzJ2H%ln~It($099U*{v~NZJ3b&P?H~NUsD=X9I)+BXBaDZdy6| z$v-rj4b7$=sdfkxjaK40-lESFuIXWMF#LuvFZ+Atc>oc$mw&Q%|3WJ#-n`Qjm7jl< zpQO~Yv|%KeK}*-zR9R)yxATNDVV36-q#Hv&BK0_Vd)lLYIEX5`F_}$UwtG_s@C$lH z6H%%rVho^I@Ci4A>7nfB!1{G{ss8sRRl6${?kn&ele8SKVtcFb{a{f2)7H;j4nw!G zzX@;O8xRN~=Lg&`GWlify{GbK;mrJkxp`uGOL-`gO;@|Cu6!8)g}ZgWf<1?yYvnB} z5k3YifjogLjxry)u_R~=yKOgQu3A{)gBwUZkBucdup+gQUYc4yf2$8Thf0F|hAxq~lqW+H8~ZN7xHZ{dP5(XYqs^a~=Nbp4;OtA?M_FM~U&iG^ z;SLB1*KJ8;WP=QHiD5!HqSD;Y+uy-=ABdwEFVX>yxvL2}4Oy=Tc7&IxmJ{5xjm3)% zj`*EpPC0{`Ul-|M>74$#3OLfU`)d{DW$XM2MrFnC?ct&&6n%l*Gh9?Rp(PGqi@`~` zxQ07w>jj4MWP_HBN7Gj&nJ}rPHZ?V1Xr1#h8M{@e&Xc4mJhB?Tr!m{oXbz7xjBLUl z7t`c@^7x>DXG|dt$2?_vbgwZGM{RYD4Z{FAD2+G|eW!8R2)o686wn0M%aYz{Lry*l z04HkgO1{f8^S1*+H$_4Ls4+$oFKEkK@cB0?EF=il=7IpV$Oj@bWgcW*cV9#LYJ|Y6 z5K7clZVFrHK$#I^h4%I$LeINY#{)aKxKpqMEW4uUd3~MtXZ`Gxg%jw|MR}AFj0UTEqriI3Zx9YrA)_+a!{OR& zj?GQXEp>KuZhF=z!cOlkklXW{LxcopSBRc(iuAklR9WfvIOBrFhD<3I15SLIvVW5v zh$3_`A+Vbi>+jef8!>N6K~>Iz4%(!Ft|COHew^rd#RKLGTm*G_e@yEoB_3>itBo0D zt9Hs=Xks7iVfl(JD-{IY$dve8g2h=D#ZWLVL%N>_9?D&6lIaA8@^#NvoT+ zG2LNkc}SFUl*V!Y(6jqjA!<6GWwqGI4!~4vx;GjdZ*HlW?4=eG)%+0@E50g{;riCl z6(d75`&jev+%bVN!0L!<=@YX<$h^W=v4Eq9Y=*Pn+?Z108c?<%HKCrQ z<9nzcTZ22Mri(+e}bF8g=oH7+d=rZOO@gcRsuNUkkx&VFm`WwN2&H?4)*4CIg$)T4Z7(Lk*owq^ba@hye-|j5!~Rh zvN-E^8nu-4^l05K3la7$adoW9uuW!!LnvEJjq`^`-h%(vE1yqjpQx=&e;|CmQiI@a z;7EMq*2G0rYo@55Br9YzZ?THcag!NGa7yH*e6%>jW4*!4#g?f?2_PG8o(Z!=>^}4? zwN>u~u#VV@&s(RnznGJ3+SizAs;T0#%Im+Uc|D{MhVp0wyA0ZJ9uBKbR~4z7@*!<< z7-{1q@J*)1wRVjL8C#}8#qh0F4u!sr7s6YV;|I5zk|c?Q4U)kEI@^$M?wEXsF~u)= z_yjuB$zQiD?M|bk-8S%$lL{L(ILHRQAgq7*6(HfI!y8~Ce*$j^>p3s5V7MLYSplBz z;5%f@Y#cIAnZV~FE?DdLO{-Iv?zDXZ)3+1DWY~jS9b-pmqITZe*!H@Au2{#TTlz;y zz$ah5o zZ?zbUy|yp7L#$ua+|c_5im=0oBS*)!dKF&T>m?M9Z7yYZ-YgG@W|9|)eC6BIfTt&W zgYlVbLSFb%6m>O&s(iC1DfE_-iQfT2$DK|pH(kdA3jnCP3^>$!0!m`0taZR_F}KK_ z`?|2lWCF0W?wHZk=8meH`ZPJK&*#BeL6h`2Fi}TU#GXMb0pB!>)2Gz~khHetPCj(h zxcag-R=6559Lswn4g^^>9sPis|IEAM#&TfWL7vF`qq!H>+KfD0(Q19B;5KwJqS{uk z8+mj98q71OZ*ngt@E?D_Z~fYW;AsthqNw+7x2Gq*2_Y9<Si+?$9NfHL`gL|G>Euj@_labFGC?=xwjp?5RIm0ze9jIMWqr^0K6+{kug*Z@nF> z9KwkMJ|2>Muqog>?I*#$g3_keh9TDplUsG0^ax9v=K%FmkeV_2rWXvDWed`6Acn8= zKjCd4+%z?B>rZHZZjZo13QSkei$2bm$znIw6|q?;aB!HDD=Pv*>Er|9*RsdZy zft<3!S2wml^=hv%Qqemv4_u|%uDpcrK=+|hZWI!J$WJfyoroWOK|x-1sO1u!dj*X} z;u_A^n&jCmJ^?006*x~UW6rq=O6@5$aU{H`bo%KzNf0&N>A)}?DQ|XN2tK1 zT{<%IL^Y%x!OX!Sj5d#I?nK(7f|p5Bg7X58w*U3?UjaF!S&X1o1d8Oa_oaYb^4MQ1 zdB??Q$HMa1E^ZjU=g(jV&R_Xz*U`!1U*nax*WynzDVN`2zI-$5uAGGP&j&$RSd}}x z12MjwVoH7rf)~f^exj*CC|naOEp1j(NRl>UfcjnXsn3%^h$R)#ImmDR`H9LLpy+X} z&Br_54lr9?VRL4RMkN+7n2h=tl|N;Y4X0BzXuLLbICqX%(QQ0E;|}i#Wtrsx-G)uV zSU*4f9_T?_8Ij~$=m#JFPFgNcaIs0>vn=Z;@I}aZK&k!jUt=nJd7<>7)IpbU|!d8F+gCWCf&Sv%|vIxR4e zjiQ)c=WABwuwUP4YyeH3kC1)D@9!D20I}hBnx3#%h)3$2XP`flUV}m;dDkNKJ(Z~2p$ukXZdWYM4aADpY+xNPe;rf} z)~k9bd|=enb_&2WL{zd|`n^U`eA2jQ@*;d)F$zPa5019`aS_8)-wS_B!^Bf0=qmdL zlLStX1@!*WOAv)4K#{FYOt-{O#9(31M@E?M!IFb0*;T_P&(Dyj@JAYj3cUhLS@e8B z(%SIH`;UURx60zj`L<~~0j-YfgEb>-Rsv_!9&Qb)&M^{rI3}v?qlc+!{RNR(0m)$Z zSB~C#a)u9tkV)%A5K&nMw7h9(MkP2noBq`A2+F*#uw~BZx3Z-9iSFz{x zol4ji44T6V0UxM;<{AK2OB#%XtfY`6$fgqUx6W5Z5g3TAte)t6g1X+bxZSAt**JkB zr~@n8b0rXNT`xCdbOd#oK)0SY7*WLtQAZ1oju-b=uS?;u4Zw+oJ909Q{1vV~#O^)kHJHueo_AA^mDjxQ#fRt4(EY=H`( zNSY`#pGn1#iDY^awsvWKb?Adr36)`caBc>Y}69hk}2k7Uq! zg307m26-9_w;Z}$?6u}82Iju>EYcku+$5A63yK8?Y_0lR*S{D-90j*jK)yvLxvsZ!D7S}g%hryTvqk&Xu^`J1ReiRQV|UI28A!ux zSVHefT^W5ch*tDKn$!19NHyU^6)8LCE#}iE`__7myoJAv7T~5d=}t7!IbbklOz!zo z$YDPYl{3(KOd=jKx4|K8xE1Uf1d^phia_r<)DSHCzTv_L+!t8)?rTuigv3W>B#1<; z5QpeI;_zMUweA4T4)}JN;QhO$-@UhKEecnU_P3%Xr&{VZs5)*If{Z%p$hF#A!H^&JL)=AhjR&pYVYuhmAZj~Czq49LHuHcVIKXqw^FHsnPt>uxa zi|ntq%SSYMS0N&&MycdKkU=+@$V_j?Lu8^k+=MT5r(ZW_tMUUAe-MvuB~2&-Nv=&`^7Tgh0L zFqebNhiHnDzB^~$WlEX(Ip9x;V!Bo#%@5Dur=6L1@}30N6{;P--c|J&yAZ>q+Ta8R zg#5zx%;y9$6X}!FV;VN}5&#ZFA03=ZZK`d}L7>5pu-6A{LHts_?h`Y&-QRi{Z!`>1 z7{TO$9~u*_&WRlQ+en0xWWpKJV== z;PJiYtRZ7kj5?_DB@}RNF#Z8|ozW|E#?NZ~MW%f6hUhY!#-WbE*vlGwP~! z9$5L!M9WBG5R+as;TD@Ur@_WfPU|Q8pbaqG0ldXww6Du<6hh(Df`kdN2gZJhCR5qO zqzjHmg&*iVG&8lW(hgwnJBj_Y6LL2%$MKb?aB0^5#B13;oS$)`)7c6SNFzxu_V_ESx#=l)J}1V4%cwQYs6j%x7$5{I>j(u}a`F%XYbaUF#skO ztNx3wBp&;?LMSFMgg5APi3dl?pEm^?3x7jv_^RQ zXjJ$+a0@-hDjR#=7oys>Ur(Dmi)BG`tkiAHZ=RbLOZ(crn_zccevrT~shbGBa%mf_0}TNH zHc@`*gX^s>Hu$Ao}ivCyH&<+oWgLh-kZEIP0+SP zs;`v_&??7kJi=&SrH*B_9H~D5*TLEeXEbcxQgmyk57|l_Xbafz@4>m7pX)LuFpI2y ze|B58Ys~sW zQJu&Lo#{6l_B01ExB}M_n*HEZw!?`BM$+7EJEJq>;Nzrd(#|E5vCxDDM{t5#|eqAO-DUSfg@qvz&q;7S=Q z1X;VdE;ufUN^#D~v3t5abX7_o{*i_{-Y3?Oxuvma&&h+{R7EeQj)#z+d{57s8gg;} z%*Jl%bEgaF1A18{eg7}rkuhK za_i}l-+h%T*cNt%EN}%Zsa^|syI6E^%Y2Avn$JPoX z0H}!NpuxU@mk+KflO#-u7v-*%6(+X0ecUGRD9MTW`BGHa;15KR4-vT6h)N7$IEbdh z-EtSPO0;CQHV@Un9D9NnMt{MFT?;`Y7WhK{(yq(W(>+zb0e4z^?Or?&pZD6LW@IUbMYG5W&J=d50H5E@LtWZi!}lMEfbih&dp;l(WTMPD%CTD^?3-rS7rliq}Or! zbsQgw62@o`3=;$TmZy7}h2Jzho4@ASX!9CjX!e}I*S2+xXMT)mS~xdq{>f@IwEI$o9fW+kW5Sz_MVphnaP zQyDwkj}GTlh+tFEyx~y3hP2H#5*~NndG&fpj*^H_aW_`QPF$sg*kxAX4X?qQX~3O2 zA}LVX4Tt8WD4Zb-Ire|UQ&9Aw@GqCH27j>nBg;t>lRFAquk@+al#L3!OzqOGeONfsuH!+8nS$FsXc< z=J6tmbvS9wakjs*pgnNLAiz|BC02-*+T9gT(6Yaxf|6CLbA2n7RvL6{sJ#_k?Pu?Q ztqBiBjv=g+=HrQ7oTGgSsNmeURjv%UnFebPLa^96fnNSb%$N)7Pl(&48yEt{qWqDM z?uHe#_js|o#)gQNT=nR%sY%z0$`58=`$C(*-()f}*qtOzu_A)iwrq1H5>dQB>Hdsi zKqE10>LYZt7gsc({P1&vehd`%F4LBhz2Nvys2q@zG8;hb8rLu7qGhpwnsla|myLEyz@ z!`Qlp+G#3u)L9G(fW4?j)fMp6{=#%?UX5}T9M_Ree%1E}v{@ID;{Gpq7-=FZ!H zw{wcCJPvj%n>)UZZO`(}$T`7oFlU>I1c@2B>Z@&=P~cFZnCs*r+k*W)d~s%GU7!P> zx-{dm6%oli*FTg>!Tmn6fx)nO0HHsKRNWHjLTsX3Lb>@4ydB0R0=EQ8-BpPg`^Bb@ z+dKD!&4ET;_T9`(1PsGM#D)sCO7bg0)!r@e42yvj!r!=LYtAt3eZdQb!)0#25~Xm4 zbj>_gcqFr-yv&l-;9~O4Zt{HBy6X-#|@oL85qw zA#z4}_ezVb1`#;t@1wRG*P5&A@#IeRO$LfsI31!?;@WvqSytx(M!c*;v=Y;swmJiz zJv^LC6_zjLd(lgWaP$J7FR0!N_6gobaPZ9qib2LX?<^T?agtTiJXPCq^^E>oG*EDH z(^(i)Z5OFv?AKHiM3X>I3737rEFho-sz!8zRT$}}Z^P3@naELyBvjcTeP8bm?aBQ~ zlsW$YXsj+db8+_RTzWh5;Pd4%IV)Q!8Ac5ik4xT)Qh?Md7}Fke-8Q37&lz>_jeAtG znGA^4K~j}*6{y;{$>Bk7$y^Ws@_Zm}3n`sVonx~%|6Q(tdgk>yV;|Ns_+F`wGMM4E zOMO+8+U(_%#8NSj#j-~u4sn{ScT5t7yl9T=L_41%o8}PP$xqyVoZv0`GL7Kzv$YUb z(l?pvfiOR{B9ncGRP2wH!^P$N!tX0r z#lr-o#Mai?b5Z~eeS~EQ7x`x`c#F2!&YraZx)YKDczNtfMQw_y#C!A%hlQ4G-5qgI z+6N@SEB@3Pd||V%Z))vrFbg1Ii&Z4rA?jCDWpx^?I0L>*kMZIJvzbla73o-_{3~c7 z4Naeo_R3EmhXbE?U(NCIcTjCGanzB9H9VZ-PNXY-#K1)YlAr9% zV=DY+zq3JkIWyro`~ZkR`6Q$OH{B&netftnsII^T?OHq27u$4Nfs!GcmX<8n~?Xa#H*%*jNz`Y-K9@y&nTTa?p_luXa_FD@mjgj=j)*5N~L!K@R<#j*hX5J69*{-a631i(G7moPO6@N(7#A>XXT%d1(woCCFe1tE6Ct6M~+{RNQs|T%f zM^4v`<&PYh4!`E1Xv~mty5dwfwufWM<0b2jzh863pJ{Qg$bdCynm%eQ{3)|8>O+xa zalF5Sca=#d|5NuCdib?Mwg;Nwuy3{nypcROx+WQJ*Z=FX4rbOzjYFfjQBU@{Ps=|n z8ReUIBd{W+_+S1vvnb_6l)XtN_Qzh*YPNVvFw=BmupB3{iJ~gBn&4+YLAYC0rT|9} z@0yCaDx)*y-a5*R{c^w|dEiZ|zo<;XhTGnWyFksfuhdBF7GM5MC4K}>>9 zme%9Ehv&kWLARHtXasorxq39XPt(`P=Ob^)l-jz~`RE7rAwwgGvSPBzc+i1a+;+Hh zT)jXH2Da!sVEvJ*-W-YXdB?k{a+71Hc>r=IRffX8EC^? z+@R_>+-C}$h_gL=p_0s;Y5!99GYaMu6(eUB7lP9XpaaNl3yd#FCau7=@2z8AcPxyP ziHKa`2#&0**!5mz=bbin?9>VjvPcSkm+cqY@)s2TP=Y_dnN#&O3-=e$K<5{GpyDgi ziqe*P;`?+Z|GI({`67zaI8borESw5$c5GHPbF?OC*HaUhQ?B%C?@2E`Ilh{OPUn=c zA`f=XHXg_iGTOAl0Jt=p9UR7vrfNT}=8q!rHX;weNU3}5Wb?l_#&;{ca zg_za3<_!?u@WtDmyahgKSr1{}^cRoHWg&6lB{cTQEuA$b2+K43X=J^S&;VrR)<{mG zJ_h(sI++S)?^GTLt>A7)p@g&c#e9B3KgHkiv}OuGX(Ne5h~P^AjWN&FA@H5+xkeu; z*#+~_RPn*TeJJ{b5}3{F1!Q^eU#A2`x4Q6obP9b=k#Ug=9aG&V12;iu)=1Iq3&{~Z zsMSyewM%hRs;4~hMM}HGE8bI4g1GOZ2GVKXLGk$@!^Mel%(}QW!F!|P=;vOLc1)>R zy7X3K@{vhvsN)D?lBi1mV4LXoOfPi_fEQ-Zx@ccanKGY$=G-cw-o}Fm4@#%|)dS~V zCNHIm$&8Mq=+x&Er{=H=s;A z-n$kHhP}15H?PvT>G2mWE|9kucAc6@ zc&2y0r2OXUNn0K--8YG6G|K`;ROx0N>R(e2G<1lg3A|>udxrt0-0$MR&1M1v+#9OS zrQFJ96l!F}xCx7J(Yns{x>(p(<~BU=IlN++aodRs#GQ%I9C2`w9M@*6SjU z-Y?4X2a`oU2G(08oz~1>~2*P&f1P#?T2Mex?2x$=<^&egsp2i?tCiF z5xo*-(IXms1U-m{UV6s<<8nVH$5!?*yY($X6u_U9&xVc+yG+X)^YgNYYT=oE{};dfqT4kMe`S1s9&$?xUIjZ(XIbG8J? ziz2j~zIFRLFbwADiiIKZBG=;rh)M=O{8(vaR|aYF@nd(Yo!J(rrvo+gqX11$EX)~pn5j+MiTZ-$e8AmmqULNbs`BE9rDJE*uV!M}yM#hz(OLi#7IWFT{I>ZiW`^Z1B zry7d+ZXr922?Kyo_d<&=XMt~==Q;&!((>zA~Ao%Rd#DoxJiecg<;lxN^t+JnU_<_tHZ)h7WVBade z$8B)7?ky06Z+BW&4<;Gn6y&l$^V6OdVogNRvkDuWh}8nzmICOW!VOeg>sT|OR@BoS zekl(Sd7h)YR@Fyv*i^Y*kCG(`@J?zw)&j85c1UPykxlW*m0q-DM5o&?*FFN$XP8R1 ztv1(J^5ED3E0{uVgB8=PK;Pcv#2o_uYF!~Bc6AeHKtubOGAo2~sS{D=dzx+Lu5g&- zWA$(qp*v^B1d^L@t@nd=5XQs@oh4ZtaRPdOWCtcfMdf@k^p!WsxW#lJ>3D`0=)0qh zn#h@jL<7TK`Ww1TcpLWk_vczS+i*TlRDaCVJ)C>B8J-AvqF?R2;5Ea(_K`6g%w7m= z37{rHGyLT>k^eAv-uhg}<|az(ZBpmoTxUm0uev~Iq_hQ8SHt#vtmxRv|I%FDx0cF{ ztr|e1I(zvQ^4;RQzwN%4`1fp7yyVnyg>Etip@}yH=%iaS;5t$20Kg4JNk6%0-QxOh zUia^&0j^sFV<2^?KXu8U6D1M8q5J$_%I8)8McALd?R3&*K1J8<62`y%fOyUswgO9y zs}bovgh@w>&T8lwFrp%Ijh)aUg*2+wN8hfpM}O7&(n^^~*rm8RibK^3&uVS5r~{Zl z&`{*+VmRRO&yI*&=>StetiOOJE?ZPs!%s!oL$H1PTM02U9;4FU7rN0*w^HxY2g!97 z9_j3hi0Qz?K{)-@7%9_XV__m`(ubddivKnfF_c-`;k>z%Q}eJL!oJ$fk+2<8F^idL zz1Z6$6nJr_5?jczMJCC#P{kssM^Y?uSv=I^ww@VJvNE7JW0Moif)2S9=|u9!H3(y6 z#X;@8a9G2k#`q8=8(ReBNnt0K2Gj2o0ne&izz3RQ@8>Il1H!l%JT=n6hA25^a96dw zdwyl-QTIa|tM)e|wx)}{N>BjLum#mpG5~4|WcC%s;UA-I_N5cj<&W$$s-AfW!13SH zEWh<9kC|$sLXd_z(JxRNcag?)3-qs@ZM2#@?&2 zChxJ=pi)*T9grGVKg+8b@0U+NpTcyDFOF~42pX~%Xl+0C0jy7Im|}ZA81q6Xx5EbZ zmoo}w`c!(Az6*7pqa;12!QKh0XJ`$`cITo~4v+#@=ptmiWb-JLjDFFQR(6iVtMWC-c4WT(&>YZ&-6#F! zFov0KS&ElTrWvQ)jCfHOW8=6~1FBidDtJa67x3L!4PM`a^@g9_$I>

c6hslL_8<9?sVaArp*7j-$*eMir6jd_JCZ^-W27-du|lj+D`u)BI2f*N(dtp6sXn{%|sXj+t;~>@TazQdDg9puZOHfcA7H!?-~VY=kd^ z+fa-nh+f+o9$;f`dRIny-H<@*G&-I?=>;2vwAeprXa?xUzXFvBt+|53Fb<2Az)C}u zE?3>qIgAcNIc!mMbY6r`$i*3&T(*|SBb_VSQ}#`B06*>=65hrn$H}xj)ly>v{+Y&G zNA0K`e=+lNGD@dPLm&ZagHL>@?0rs^>Fhxjo>pR={QHe<-O+V#9G}`FLW9361s}Yz zRgg!Bi31Cu3TYxY>y-ct%6tqT;(T=~r;hyr+1e-WY_@9<8e3u+s!;~I%QtLgwtP(o zV{@jEJ}z3!z%cwAz093jxrQAXz97AmjG=^n?@ZUu>gs9%=G?9-4;>l2vsH8&5@841 z+2g*P1E|rRyAKXYf;Ma7YPGx3S1SoZbT^!GSqrG(iSCtV$pmX=GlBt6m-bZ&T68#$ zSXR8q&tH86ohR1$B5Y}AB-u5LpWW+ksr5*vs%taZpDTavAXxO$s8{|D)S%$}H_DXj zhKi_T8dQJZ;`-jpB(u!3w)ne(HLotObu4l#M>o5)H}BZAN<9|gK64v?OoGPfXl zv9z@ABe_YDL9FyGBA+Eppc3sFhUfoH3T_;$ftS)fZ4NaS7(v;W((tv-sTy;YT(mzm zcg28f9##S5p^>h~1}RHv7i`>~Kj2*0|8~D}|F5CN2qRa&x*!(OYS zH{Pf(ea38=eWNC>wHCh}en#|1f6eN1$VW}z7%&3T<$Gf%-C@^`l8o>zG7 zaL+c<>3XU0r9^XXI|4SHT0fMAjbvdo3k!^(li{%HE5|k``Z^xWqWD&*6Rhi;B%WIIyxS8SK0DWP%v@U&aK9AzidSVeM*Ug&(Rj;rbpuibIe>d`Mq~shdiDO-SJImCelc-HiiPrvLcdp1k|JM%LdLeXZEdJ-&wtWYpW}stc3b+c6mG z+}!mX_c~OGgIkF~hYW$=#zysIdjr6RoDg3|$uGjXO4-MA{=I^%hcvcpM&Czklcp8) z8?zxX3vO6V1Mg8zHdN&C6JDAJEEAOTSp$g(ysM@3ZnN znJuP(oEO~C5TjGd}C*W#=Q23`n`N-ikRz_9g% zT<(u+XGKM$GP>l|Q=Aab>iEIz&bf3XC{J|KTAjyZX;B`Sk8$OEMKz_pta}GUJG+uIUUP;dBsMM(oL9U60+(i=^1q_4SlqU2p69 z5@x5sKiLr;jQ}MyJg4#4HbJC^?}>Hm=qFd$_;H05Sz^aMbXhgLsyei;TdhY>INY`G zr~oO(L~K=PiHOkJRdU8Xb10yvy~mLPGVdI~1kX&=4rXBbAg9~~b1|ng_Nef4>Jol1 zZ}{No7sJJrUr;2*5Y&Y1@584`C6ycdB6i*KSLj52QyX1btH>OVkxyH1S*s=+^o`aI z99^neKDN|z^@6#5(?h-WC77ftG0?#M&^g%6_=0NR6kH2D)*{W27BuswswVa!yXr8C zYuw<$v!;9wf8NtGvw=Y35yMd>YJCkc_eY!SDSGfr;C6XPe*rLUsbTcA%rXf-VF3v#HjpMhsL@AS0YulG6gy2y6MalCDglyFw*J>}t{sP0b4Q^Gm# zkic%1Ff2kZAJiuNpi={QU9C8Fj!jJ*gqvfHl7j9zz*?*@Hh(T1EyyEkJD3r5TlX@B zr$$8Bz>@Hf!e7ZG1S*dOtbXD)G^hZG9JB=sq3rfjZ>9$83=!aZ0IC<8So^RmxGjj) zr-295hjgrv*tZ6lI-L9avf72Ap5Eu$OE~Jkbj;U2rTB>6cH-o<*#;G(cPP4~_y7^I zWn|^-p6n8 z@Wpi}>1M;7DEwg9ZlH$bMtR&XjFuh@y*N?N_(p%4YTv_L9V2haJnj^uaX4X?mTNZh zbfGW$Al!k?tbeRa@W3!xC;N>&K-FAd`=y1$bKFmocu5_kt=&+20HsXGD;hfDoc6qy zd4E556iW3gx#5|Gu@auAKj}%MTSknOx+SKe?-Xqz;~@@8I1rY?M^o?x^HcU1BV*mbf4L%#2OA@j?3k4 z@(@c_bS^1HkYPHJ5O&mlGeF-ZU~dv4x(n7#1PegoDL? zgjxLr569If+iH^W-KbG*j;Ml4aSA2veuJg%j}?wTJt;w5*NSZTCV`+V?dkJH^#iAj0ZLV-NcOYXA^p` zh2V;fy*ozJl`EZ7fcPkZ)gALbDMhJd!uxe)Doi4RiB#K>_8k0*Eh9VlAz50e?Bm)v zz=~b^;T-aT=I|OyoP<@GwM_Kvf2$Z>ubqe$y-&>ig@#KB%6AN$Ps66YDRTCP z!Wd80p6&vpAJBllEKhrt7XLtUFDV3#5dsX#OJlLRV=5$PeAXI%2b-i#9G@C zgz>9@oD&&yRiKlp$33$^(%q-yXw#@#yM_qn7~Bis5ZT}w)6*XKl)zs_eTwR z)49e;Vsml8dvwIehYOXmsK1-Sj3^gcWV2b*MwtvLgxT3YwK7LOiz3j7Z5*R<%fye_=rR#Rzr?>XI~U&> zqAjQMgu|hJ&^nG`HbdEsv?rc?8Sk31__>2V=SB#sFA!=vHwtl|{KPECS=Q8pZXJzA zzEUZ(b}`{fc-B^J{S zfjOmxGKLzIpZh5rJPqZjjsVZE_}Q;Ci|%}WaFU|Y6%2JWv_mFdv(?KV6DEz`T* znsi9LZ}Jfyd8)RLU+l>pW0R%`eA!{bDDa|)$1u+yoC>&=ct&R#Seb_9K}=qWrEln% zL_J-fN3oZuTgdvVy5tg;E`YS=bLB$dt#^ z6o+b7_#w~3I8A6WQFRN3DN=CCKAz>fYvy-!)Ev3rNO(A9X2}(X?L%59ii%Ui70c6% zo;4*?E6@&6XGW`k?lQ!m22y1XJOdtF4!~Lxv|^-XP`&9xT9!lO^l3i)HnkW>5YsCY zj62mi(4*P}j(;rQ*`Z{olWk^KI65wD{Wx~Is zKERcu81?L8BY!&uK5Ha?aw>!g1?f%eN0)u1@Pl*P*+7&E9VM6=Zlil|1Vz8Fv^+3p z76D{1l*QX)F<6vf@j{4tC5Ed1q#ipFu{H=@v&H zNee<-w8GinNLCyjv}w^|3T2>&bhDjH%-_t?*r2N&`Nw(Y6>~Q*i456OWHUQ&*z%27cpbt1y;i^_220?P;?t3r_#B63=&KVBYNohOlW zbNhWH(++LR7pz;JTpmxc?rI*0>LODd(F}zL#Ssnnrq1H!zT)3`xRnF0;(KNzci_k4 zB5Sm_-pvZ2qZv*-1U>C1KhXTyuDPKpl4*!?F`CmR>!TFt34j`%-*>X1wU9TcIwzzw?PRYYw!^mdo6&aJM{$f6iQ7=y zJ1W}0Sm|rV3T>d)yZ|p9)qK2Fd+^Z#29LRN;0jf53)N8`v^VhufQh^wKh4yGszZBL zn)bk#B86|M^;beZ>H7#;rnC9_vNYshI%y6J=Jh_}d&j7RvLRmPYPKAW>Uoh;E1ACN zi&UWfD%Xx9C2_uz`55hFb~u>(9_U(Nd8mvPHQU7Fdg5U*_{qjlj&#^!!`jcGh1^5mEvXs;u!a9f(DV$qxCylWF~;)yNTlj z*BRil3J;M&3#*K{-wP*nrDR%of=6BggPu?-KO}kQ0(t^K{*{ednAJXQLw_1|_sZ#a zD#U#?;GDlibYh}HULfZlzVlbt(g+Lb-taPZECfNNdV^()bnwS}CO)aYrqoB15?RF1 zCf2T-XuG|bzlh-e8`2)ea4_sj3!Oki(VC8A5noVMXQfK@hjp@d_ICO$>@N24eBwpY zS*`T*3tD#wTUWKoRNl4j^3*Rm+LWp5I1a|($zw1xo8rj+J0G7*K0oBz@*E_sxdaU$ zNqZ0>vBpZ-M#c`z^b*pH5!nCfnLv~SHc>HT{hTU8FT>7*lK^q+q^6frM0d(4gWm&4 z7!jO|cKTJz58O96Q#&ek_kP7<1w1;Y(R!iN8{t}3Okopt6TwaBh#gHB7~$g!G2dt z)#`h?6@;Y3Pln^rmhcR{X~5(@1;hSv13L*oA3aFJQ}5gHFJJt~y##h%&M`EG!bu?DSZVfsIQDx^0V) z8jmGcMdJlkOXm}>4BKY)G!l{+4WHGw)kTt1Bi9pAeE9!W)o^9Q=$ZiGQ*rp=nwmnT z4N6CE{ZA+p3*V;vp`mV)DJjA^bSO1nj!gTCys44DJx5crJSblAX0g0n#}=Sx{QFJ% zS(bmp@@833djjJjgoF7v0ON{m%KU?r;Wf=ZeSc>f^R}K&Jmo4q5=VHSDP3IW%VPq2 z5ZhuSHV!vR9L4PVL>hg?=5+T2aHFWjlTfiuyG@PM_qt@dkVP|yl47@t>sfG09HHJK zm4+@nVSV=VsCX^6sj;(G1&jvf?0t;#SA#>7?>7K155J%&^kCnHHq`5!Agl{D(iZyl5 z``iRH#U9f3*|18vA{SIXpfPk0qZE{9qsF?p(aNw>ey>IEM6~HR2}p-Q}A8bY(a1EOtg+~U{zZ{g?;AJ9)?3E znfJ>dh3~P+{UQugAJh_6NxOwJ@bm)G-hISh*mpo$hfr9Bv_9j%;vXjLh1ZQPpLp`6 zdJ$cCvSP+TES;$vtM5;o?#x4A`bsl%%oA9WX{SIVPH^ZLv3;Hqu=$@G;IE6W4zFw^ zi@*+nBg2ZSbVumz+j?a0n`0Pv=1sljXehL4Qj^ajAsT{-V&^S1PUVQ;>aJ-; zBtI#id@I!A5p%#PrLI#*>ryTg^X-O&y`mXGOt}%{@a?!itBvyvl7DKMwnfZ(chuvG zE)*aRfJViHBCO7eSr_-MQFY79q}3Zy?c$y!*>!hQJNer8dxJhWuh>cdo%~Y|Fe%`w z#Fj9klf*tYZ$8YFST(lFEJwW``cEbQmezdWP-0@K%nLWQnN{&(xFvQ9vROiTRE7S~ zE>yH0EsnLTW&CDdi&QJ=l)%c+?gpHZgp0fbnj=&)3^!> z#%BQFLY_CH?WfYJnMl+I366)x`T}@0!+bB)y}(Pi@D-4<8Md?Pvbo&K#;;&h3QVGw zx<*gnQQqnEHB$5ni!P|Raf27n$TFM{OITkcW^RJG_-P1z)gr45n^{;w?agvsBuAJx z;zjpI~`AA`eSK0i%$?$L_HpFPlHwvn7YpZFD zgAGiWXtL{l3Ns~VgwO;lcjx&)&3TU#Ni%HFFRLU&y?0u9O=Fq3kgbCZ%I6P}kN;bn zQpOraju(!Gg_&(M=Hq;a7jK*E?LcjN#$klZdB~pF_z+bf4g){?b8agryf|Xd;M77G zo@P(9)RxD?1V`&$f8>?tREDe2p|QMS6iweHEk+crj<)I_6!q{dUpT{-p&SDpU)Yug zjy@GSMn>R;Sx-!87L7+YT#SU7WRybW`pSQN_1HXP(~#X5adQ%yl*; z%h!Vye>z_enECs=ryAZop|vzwjWT>jYZv^V5`zy1Zkb!02=;UeI8Oj4lquub$4clA zhX%uLPh`EQMhHm+xWpk{0sXFzjXq&gVZd6=KINgq_-dCFz=c#VZ#E1P!a@XIxh1@U z4M9u0srO|{P8%>ucBd4 zcGlXdKY5|)={g@_bS1uH@emAo5pGmtdR}R7(@Z75=_dsitH$dF){Hps1Y~csDC!91 zIip29PBrJ|8AVD=+f9L#cxpU#Z>56zAE=~MlvloA-U-W`0hg0-Xdl0vbUks^y?*-$ zMZl^3GRH*wpN4UJL5{#D-jgvY--#PaHAUm$Y`EG@P=yi%_JdjmD*LgW%ECswEE5^1 zxo70h1e{(xpd|#%(|DXG1cn@KG<3G0M#j>-4#FN&`yx888r;kBx=8AFV+_`c)m~dy z^`>y|P8EbKvD)$Xu`^qn(jvdK2K+_pwSGN^(E~^$<35|k{^}*1U*OyCIs6AHY&eOm z_Z5s!*N=w53Wbr5cuizH2+aLb6*a#$_W6WEJQ3CWMla=IwWx(~d#gxx2Pg&)y6;d= zM5WYQ|8?!#RoIi>V@eGlhPOAn-y@D+fXqR`nyZ`Jer{zZvAFhmbNfh&-upf(>&KM) zWKIm}$aTr%fU%a+eCQQB{p=;Y$y&phNOA3B69BV6pTeRG^QeC3 zwe~x!g_IRjuTRrXizA(Y*{H+a>l>| zH+c~ku)gx^`;NvCA)Ou24K9|i~{?V1A88$BMn&(k2|Sod<`*0Vf#}r zwS#FLaIMH=X8N~A+rnNMj{Jg6vscjUENjo`AnI0$_FD3LvPQeob9EbrP(J0=2wQRq zn?A*}_!D!8(t->}ZI46%@*A#JCh}3mW+TcN@BIG z505cQ>)kfg;;RY!ok}iSOx9MX(PE6q0f?Rj)Ky=#3XQrl)-Qigv{>vQq_JNMSDhL= zK7QdMTZ*6?5lfABMGL4j#V5E2*rU34B+3Xl$D!gP=k zYZxbhs$h4~?d$OBlEN~-J<3rFV2%+b8XLv+(nZcqi!s^V?zjJL?}gZ z6<(7{OUENhGr1;u&>6wnTM`W&F+SG;W;Ufh?w4z+ch={A%F+p;397B0@Eq^A|GK9Kos+4GymKs7PB}PKK?=Lk#yt4ABmfDf{7k-I5_#c-+&BG08htOf6>F^`N^{ zTn}m=1C6CMkY=Uv!X_@{u@R^=Ek0Q$S_sflY@Fgu+TczHjyg~3RrI*FF6u9SkaIg( z^!t}=#5DnlSyVO%&Ih$0n3@20M zSs>-4WhVqB#97i(Gg?7I>qQM9;6t>|2@f4n<&OwOmgLv5$lAgefhSj7J(`n$R0%hL zg9r`C*BQKmqwR!NsA>;^3jME3}nfL!-9zJ)y*AQ4-V-WMFf*<2=IX zbL9ATqiv>$Dp`>wVR&}GaD;Q%@>q3R=kk%VNALv{$6lOO}kuSRYfA;hZo zR#{_!u)p+fy~O83(=z=M6drR|TjNH38|`*5*O6Xr*O@~nt+yW9&|m0fJ8ewLfn>20 z9H%oZN&Jw+(Z<+asY%=Qm@=R-fcEZSXUi{kTuMz+YkXoUR%qDLHrLWr&|28q#C>-e z`sz63!@Qr{5F2F|5s;*R$gggiWe~RviRZ*lJdq)wg0`U7C5U=)vH<*m7bbwbCE56J z;?05AT^a(bFeg%tyCUw-QrHUAK&v#<=z%#C;(_jm9L-w)#3bEXJuV*FDY-TX@py_t ziS@7^(6aH%`e?T%5QU+-8pgH$9+7KVKGcS)Y6v2rF1{39xL%2`wwn#4Ggw33{o7X= zi9sk3D>pM;j0zpZKh8j;kNJ(G%eHJU|enG%{=|2z*vs(G@3Dn>SM5=)G2fT( z%}pYPhq4h;8w@&iF4wvo82RHX#X}7^spmsEP_Rp)eCjh=lYF3*X|Umaol5)h`GQ8- zB9gO!_$-g%VGc~j(HQk%NXH^1ew#|3eTcPQBInZ*OaFVdX5aDpHfT;{dJFq?W zGrvprk%ST4#oarJ$X=Y%XZ&@xDE1xOZOCm6t*+?NlP zQLVWk`a>r`NLP$BZpYa>v^qnX{5%3a@O|f?g)z8!gC6x0zI*Y_EwQ<+F!>1A4$NK+ z8`!v9SH`+aX&{@aAsm*7w+*#z`gsj zf(-(jpibS>6itKJ^1tz39nT0uA5VU+K6_^Fu!#0-&QS%BjsEi0FK(L# z?%XU+;DRmIR?GQ=Sjky?x~WdWqhYV@6Fg%R*EDV^YY$+4GPG%f z>+t^CwS8JV0!0^1A8hN1@-@|Chnh%flTOPqMjS-oi()Zs-E86hSsB5ca9>GJ$8&-r zvlBLXxA(2!Wv_ppsiuwaj(C^&a53wtAZ^(?BH z(P7`SOBLzq8aes;M&!{gpr}EZ@t{!;twRejwRuSO&Qvl_{0-){n3!5Oh)`)+rU`l6 zy39lrhT)G@j}`M?9}+;%#TUHr+>UR@LFL&o3xQ=_C0dinU-mb(g%sU-n2*RM7~eS$ zRvkPLsxupgngH<-Ic{BNnp3GckI!-ytYX>1-|b^a$#*{Ps8rxdbX^%{)XhPy&8w$D z*8CpPKP#z8T#afsC7c=U7ZdgCpLAriZq(*{L5m(Yd2px{#fmZLO6MBxW#vgXr&cuG z#rqgDd!4hn=~a|5Fh?r*FTYJD-*wnf$yB3etWu77O79m2Sc*%7sBTtm#<6$->bve0 z9>V}N6IGTL1T%aaMVkcP`4Tx8rIza3D~<{GM|y2`cSlbb^5!9LA2wPE6GRKfIe z7T#QSD0^U7g|RNBJWaPDJY-1KP`X{hC<7ZvWop+F+RN{|Kr zfEfz-{j1FB>3jw3`XtJVuNBPV*bi|5j!K)zKQw(AFP=?HKpTm05Uw&z#FE+aG;YLl zzj4$J;q11FLta`BC{GE&PiLXash=Q8Qr@NSYj4n>507quLmvnvN{jHPOC&QaIzK1` zT{%mNK$3va52C#5;oflF{M>7G$kOG+2l5~rtlOQSrwtFalZ3Gj_-y)|KVqc5R(OHx zh`W!aH^psIglDy*^LpsZ-ll~YDMZ|a2qazM45?MFW{B*sKIvspEJl$8 zh81_Hn#*Lir&ZCGWVY{4OCH2y^eGKi!seTH1Rq!uH@XWlVTd7F1v)tAxnQnd*QMh@ ztyC2c}g@@)+wj3#UCw~bAnWfoL%MW(^JLLYJ7U^eN@gf z7b`+qGoD5^#+7Q=n4)oH@XFn6E5II7u?b;Q>1JUzRGr8G^AzA6NC^JFWgrTn#17(Hmb=D50)$oU}7_`fWS{0J^lTF zY^a)2pbPS{*7g9h(C=B_!E^B|8YV*zb6*-c%WCu>e}9c6u90l!bFe0Lj@b{G0=f^1i>w~=r34VfFU8%qdgAwR_Ole z4#*6P37;HK_&)n*f3_*}7cpu`2(yud*g$^O*T}_IzgB)y$kOx|p)IlIsz}%c2u76E z3=0%_Y9l<1h5|$|dZAbRiMBHRF_8~dV!ptb$HxLS!sQ;hL#WLm6op4$iv%24V7$b{ z5?@~maJj5|6GeEgLYU%@0X+V^*>|2SDxsuD#MeYM2DI*88Rq$bc(S(JiJl$b)lT%o z@sV+Dhf)APyG3|wF+MbMuC^t}U^|&mE-XmlSG! zom~ttEE!e=TCV!Q3LSZp=15$001W$rdfq4o{CB^=a!lX6b4iJdq&MvK788;MIrj72 z`d_iQuqnYF8sRw%b(uh?185^7EMU)Aa2Ae{IvxfCU#74QF*J+t6lkso+s9en`M(>^ zRpF2z;gTSuqh|k669-j?=MJTv7O&WdIPABARSwCI+hiAS%W-or~ z6saOSlZ)$X{e_I%-xz~%dqx=qSEg3Rk`CO8Zi}m6{Xa%rTt$0#nWH1Lhu!rxtf>qk zFVdoP$dNyM}|;ct)^g`gDcxzzsU{h10i%>zAc$nT~ffA@7sh? z4ppcC@@x`X89CI2u*F1Z!rA-fQEufxo>lZ0XJ*7-HVc zw5As5ikq;D`YiR84%@eo$tO4SKkIS_>zDre1&4C-vcvPcfM@*HCa`bWnv{0a0*DNk zvUhg;ob@CzGF#P|8dg%9udf2bq0G)pJCY(j<19q*z6Op16G$=(C00qT!fcJ5KW-}H zrnZ}ic$*Jxsw%U+UJ;|UqmjW=XU-V$CbYjF#|z8_bIsFv5FOFk$xws%0fQoXN+OtY z#eH*VME#ak3kJwTf-h%tVSD0y7#IH(3x&BZm`*Av37n6B!i^&w@$kfe9GGkMBP9yZ z2a2ff`YyZgSX~(`!js$q0Irf?%BTS)oMM6EEzSrC|9eA+Yy<@0yXZHFR2laGj8Z#$ zzN(@D0%}RoF4+ToQ@Uh_3^@2BS3yBjv>!1UydFCXOyOyLsx-23;tt*nq!@|M4mR!V zrnR6Q-hp^(Y4HzT@i#fIt@ev@uD~a@{gF>b4(b5Z>ja~arS;BpR@@QY**16MZoXcg zNId1i2b3(Gm=P&MUf14xoEuS&ep{{HgV3Gty`*40qk_VIkzO>8FP+^Hs;7!{@ATDE zPQR$wz@M;l?}O-s2uj=`B6<+PU%fhZt>9X{cCCq-ITFzYT?J48SH0~w&wJt&e}RQO zKSC^XTCv}A_%%T>T9@*%IqzvfYRSh=y`~v_J05B38vnK@*5GB@d#8!@Rgy-_eXvTB z5~|l?4nFHrO(NotI=?+cqDUAlO+hs3wWp}}Wn3J^%gtKf6+Zw!0IBD1F2B8=Bia7h zrX+M?L1wa*XE^uu_r7OR$QKhmD{a}d6DI_|m7yMHIVke&5ec;(iv%rWs~j0g(tbep zGFipQ4eRhj0i4!}oD9%Jv%{~(S}1UeB%2dE1Y!}*7~Lf6PU8nlOMMidd~dW z%9HsGao&tI|0sGySllk%4mj{?Klydnr7;cVDbk?w8PoMxUVL}XGv&mtN=OT!7s*&J z(_9YkW~)h)Q|tAaTD8xj8Ssz_?TS{v!0i9ITPoJeT#U5CMHsnGr@WVJeFd$VCblpl;+wt42)$2gRi^7@e$85l6h72w!LzRP*HL)l)h4(L&X|R2 zz4k+kCO;pH0WN1QD;3Nia%aQ7nrosQucJSC6p3B!+UN;qPB4|cAmM*%USKqypX$*c zJK6KDkro&MaIt9d5@7^Cnlj~4Qq9gqt=Q; zsy)w2v^4o)4GB7_;cghah^P?wgUNCxZ8?14?*RT~q9>q=kr$oEcto#bRhiNukUNaP z7yS@9;pmp-Li6E4tj;lKP5K-z%iBT_?TIIX_{TokaOgI^3(^i_=v4h)@sLy9(0Jj=59pe& zjeVDBZuXDxMB2`J`>$~qw4WCaLxga+g?Im-pL6SI*36t!Gn`k^JZd%^B`=Pg|2K+& z0_8?^P`nyx?8^_Ig7SQc8HL8+(hn~3P;3sL~8^=Z3*?R#3o?|bH(I0&-e{y#$EYnM@sCie_!tWp!)IyE$YprNJqP>?b18LSzyQZk*R%IyOC zE&2tl>!P=`wvw=PlWumgY_K|w$;<3_bL{mibj*k1oL$pjsNJA57@N=S`~~3SOexP1 zvPJ3hsFYO?l1tO9w|(pV0SiY{!k42E$k;l6NO5=fz$u_6U5j++|3UVI+(f-9 zr)2Xw^ViB4E5t+pb{G`0Ha!ludIvf<#j?QC|0T7CbOa-n>@68B(1RaGf>dI>&hn~5 zQ)C~6W2g{sV?>h!JwdVhHst20-3FKjysQ_edXm#j7>4LoZ9TVI$3O>q9d#27$mq{6 z!TQbq8?4*r;@m_@k1 z@(Kig5uwibRE(%7lqwyGW4SY682T$jW(HNbWuLB(5w|%%!@KjKm#}QR1}XBy5YQ|J zmTL%=F@nNDQELafYKRv|i3{qB?cSoFXnhA&MLDi1EN{sCDulj;PJq zHZiWHv(`uvzD_*ejB33cNOs!#}#<<9pQBe36|Nqixr2xostj-rr;~C5{2wKBw)O zI-l8jb2rD?tKi;$_?`G1_g=^OJ1 zafd%(xjGHAhN{$A*`n>+@`IE5ak8iT3GPNmMrd*xzjy;4T;M$s^CFz@fTUgRAs<<* z!{h9wkEy4TUb!4Hq$S#=)=V0d;DSWlDO=K_rV!5%>D$9YypHwM%jXt0O0F6Vwupu# zrW6`wTx|nRZc_r==MlHp>pSAze@A?15dw6?GRJi`%lcXT@z@15PPx`|aKefD3ad7o2}5;KX61V_Je4uB~sss4UcC_rbA4^}DX{P;;NA+8%z z;bkG+tbT5QQwW1Dlp$KT)n=MIZ1rM;bP9*RU6}6CCMP6$a%*O`C*+Fap{n=0(p$fJ z`{9aDiVyRvS7lqTslUMhZVgLHuz|sR!ON9BW4jf6{fq5e$`BM(`pnk`^{LpH?YvHt zp3V$sSZic=9jq81Of1Np>+qGF!e2!zja|t+8TxB*sjF!{7;~)6b127)BT~VDp99-T zXi9vUOv(b7RP9C-dp|1H=wL!Q=cWVMrX$IVk5%_O7-$8@KWFj z#~Tjxw(7Uih&J}+&xyb@<17YUv_xzev(@9*LG4e|HyhP#gdN|jt=M)| z!sv5wB)Y`j;JTK}{|4$?f;hohye-hP+Z)F4*>d~Gk!d*5J-L0VPCgT$Q!Ib>UuCB( zk;7u*(n1NO+%zDv00N;z|5AS?2)zeg7KrIbv(+DOnzxk6YwZ9wKZm9T#?Kvu%SYcA zp4}V2UA(S-OJXG#_^J-4La6~6fKj3g?AgR)ealfFkUgcPRjf13fXKp@YpWr5B}W9c z);6{_`MNia(B}rL^+fxAWUojkD?e-A`oD9xHryp177*NZZ#}ov$+UM!^=prZNG|#n z81HfnAA-5Denj%QYv)eJn5PzC`hSb}o*@ZEA;jF7w79b60O-xM^%kXVf@VX)^wT-I z^=<`NVF9H8(mtsqq*SZyB~hLpBnVf$atfb$jg{0thWN{fqBZNFMHD=4BYW5PBiKiBxL?UX_C5?Q+@a)10TFp;4VDY`5gwX$X$TS z+Po8Vm9BAt_V;u_MO>HpM2dgL7DaH6>TGRpAN7>^dYSml~-`^fYIjZ>1u@5SV-)y`$R}!H87DNfcR=a|-yh~oRxrj^45B_JC$!8g5yYF^4haC-dgSbl zk@d1dyog(Cpf8YSKSkEjlr{Qj&mw>b$X`5RO%g)Qk2pmdlD5os<)US5Y;%oRJT|Qk zT{T4@d z=J7FRqwzFytpm{df2tmFIT&i#uI()1`zzz*bMX^xdByEQ?3`o0l}^Byi$XpuStb!p zB1t7o_8u?G)$=H^8u%;a)navBla5W@N=#(G`~8Fyxr1a4NGQ-xEg6o>X8_Lsi8QtW z5CBv_tG{Z3@a(4wf@BH@mPm`Nwg+-4anThLPn{bGH)uYu@zd6e*nUc(%=b6FpGkBp z+Xp_M+7ke!<{d>cd|2W%WiJAiTR~V_?|h(XFz;d=T!%2nHAT1?@5-`5(~vwgD=a?I zVfK#fhEf?Z#uP3kx=Tdo3xTL-afgK6m;lmrwIC%|h@Z2@+rcl_p~R2p$!&vw)ZczJ zbIZ{1zc}H#LBdLFl5STjG^9#OkT6Xt)N?UfDT9V?5Xq?%tq0Diz=cr1O;(tDp=hLw za2zf9Gs?FAM`1c95ZvPTEld0Ck=m=j(qEl};$twc2v_7vz;5eF_9J6;ocaqkwWXU0 zB5pXK7oeS;CArk+2q4JEPe#q>r*@FCmCh8v0LwyYN@wIsjpjm-lexo{fg@8(TpG2P z^7|nAk=Ra&Cxf=V^i;;=#PdA+z$H;T1?m0kGBqu#RfZqbg#IV^o4E|ye}Qp`34b56 z(sah~{s;K0esk1MF9G4p52h_8p11q$cvqitPZfqBF%)B=20Ir!!_ra+hh2KZ&M;v) zJ2C`vFPWCyz{}T6WKZsXzvU?{^+|7oh{MM2wt#g*T^PDJNRRtElvG(*_R&?}Y)#S_ zZsIC>_}A=fy`fr{2Lm&BKAxUF-dM!~iQ%Q42sx+s;ve_h+oZ|G^1Qeawk< zrG=md!*TQea@44Xyuv+k(~2{P74qA`cm){mPN>agfvdw#*A3Wa%#G^|J{3tGj*i8W zDdoZ9v5x6yF9h(Zy@UD7p;p>C>Qbb=g)MRP!H+O*AMbhtk6-#gr284SY{dHei`y1 zVwXf{>2PDu0CSCh5KO~`Q#6Q@MoS$*+BP{Ab1Lx8La-Jjpt$;r>xYMigc^L4rj2KB z);2Oyhf}@acEZR~j|AFlGp6^o9Hna08e%^9{L(TiwWeGlW=$EC9AV`>v4Ai#Iy^%< zqQc_@Ei~^1=lKG+FK>c@J&26hG?;6Ig-yMUUzbBgS7z@a6d%1R3O2_FKX3s3RKQ;6 z0&-+W$=z18CSdgId4lPIE}%Mw&>4iYk!~u7DSu3Bv|HOrr54|+b>85!ee#(0 zP}~1DXuMAHn}2f!)gvW;S7)>iAv|QF`m;Myocu2Fmt%TE4TH_|Lpmy54N5~oc!UuM z#oi76_|fVqqWf*Md>CL~qsCB?a^v|&(K=kNs`?FSi)3sp+R@$EN^8#SdiHt$j4;fw zP#9%5N6dahmGeixiWOk22VQivKzmC+M_FI{FaW^0C~@_|pDt1@R0|-Yc<~jkrp^AE zOFT7E6nhBSK%yE89*#Wmhpk5zT@S*6>UhBMMTwHjC|7eGsSbf)-@Z`^(_W%cXi;Sp zq5Gb5dr0}$D$+AkO+z7eDa_Pk?;2J(i7E1_;`--_XaHnc-f3iG*V%J(FF}-5-_$?L zT?03=Kv4xd&U@s|d=WW1959B5(LMt7$>627-lT`55_lGADhq$>y@h~3dgYa)JGShr zotwi*e9`(+5<$yN)oDtrIFfuOg6go(#9aKc32+ElL+_Q zK_XDogZRl?x*N!v?RWHK(`(z=TG$vkN=Z5vlpPs_?ntM1Sv!3>=Y^eA^F$^7PnvB+ zLtgXp4)S8`p?-&i>nHsp2f7Eb$H@w^es88$t^dH*)kf5z8=GJ-(sSEIP2DV*Y?aKE zmQ`tHnmi}j@aZXjKU-QSYI?ox?@~zT6eUy{VS`A3(%$$z}?Y zWFWCQ8n?Z01Rw^gDDBj)u!1My{~z<4(nNWqs44*ch}Qr#6elp>5J?bqmfn$m%hI@0 zB}bQL6_ZRLk_>a`%f!Rmez8M9lb+*zT-5Q)B_F!%kgDndZ=yS{4V7-Bi2hz!=;qF1 z!Fc~wKarrzud=Nanz&t@G%g9Z{zsd+wjDhydL)FjZZIZ0G`P}#I07`2KZka zNkHs{J^>1o_ped%m*5CH`kTL zr(EfAbMkCfX89VZtip{*fNOi`j0hrc(=*Gy?ZFGG%5E#MQGV(@|4)eswm%I*l~ zk$OE2ANICM@Y%6RJ$}n75$7F8rj7#>n6{)R>wKp*e>FZxoW=neID^0R+;&1>5TTgl zJThy^U*T+50oIi~35pp|6%o|aox}IEXhaN6HG*MuLMn&hJa-uH+tj#EkyfgF%qLh4 zn2ysutOxy_v0x9eq-ppkpqTS>f$nfHvHdLQ-OEx(86d^>bb3I$V0us*RN(dWlZ;`* zq~IHHPyG3oO$V=aK`h(b00+fVuUf}F={Wy)KM`WJAyEzFVH1`0W5TxJ{K+X(Ub|iU z@&0AzwHF`|p0sU0zjQA@&@GFOt|y(ahhqzD>H3j0wq2ZvNjLcbFEK-%Z41DmxL;9u zR?%d)IrSCr52?Yqmo6_&z`VTd{t`$5t7m3W3iWgHY%s4@l#%V`T%*O|)XapZCkmqv zQN#0OM-k#9w-bwPf2ZI*v4$qIEwPa>ZoKTc=v`x+IeHuV7~D~K_`b|n{W|FvUjC7w za@5B!a1OG>@GDfU_Oza*JJs8QSlhles&pD%hb??M{S0jwVVA5hh*K{G?N*=rP^!{? z-J=Z!Ytz^!njSQEH>8_gi3D8TMKE|uTW%&>L!A}p%bUJre#TfhmsXKDB1*Q6XrlQs zzLOVv!MPdS==2PTJtnsM)-|}w z9gMb&TZ$H<_c^!_Wyla6?TMD@G_}!?%CWM;I`y8P(Pr;hhFi|rN)cP zTZ&AAG6dtre2e&;iA-?ug(ikx#t%a_ato_Ee)Pv%q;6!a@?~;oebR`R=*lCR@+@)A z3UHy0C@0{yevc z%l;sEA*n!RtwH4|Q-J2CtzvtYTZ7z%Dahz7-vf^%0d0@T+Hc;CmgNMcF2z|zDm|MM z$N1ny@+`rg5>dd!!XkhRWX$o>tt!X0QhJk(k~pnY(Y}HaWppD`ap+%po?9K=@8P6d zhu>*`sNdkD6YT4w&*mx-Xm4Z6a1ns@*SfU@D}}SPxl+S2A0dqSsZAio$XpNq&Q(1; zFx4=DJ_+J@ZCfRgYB*LyL+i0ls>qZ<={>$Qb`LpKYOQC`p!^}_DDoBUD`1@JsGs16 zs_S{BB>=9%Iq58R(eJ{;X{(^O_L5^o8~;w(jp*_`IZ-qPnp0I`KsdVtPJJ*>M(46? zlWzh*p|FBlW;x?>_k&9R^Ac_->`RJGmH$r~7l{wRCTP_0>K0ne8i>^wsi{m3%*7B7 zBSgA<;v%8vMPdz+@j!IBrDP zyCZ`}fntOSfr2szeP)Of?@u)(d7rcUk?R9&b|BXu&`kLP7|LaH=R_rp`-p677W+<& z(eb^FiS^$3wc5GzNRXQwCkum&)LKcJGoHl47nQF5eRB+DW(d5|?G&Ob8H(!V824zS z+F3ijxzFD#x`y(aC+yi$(f{?kwdf$c1ECh)V}f@AR8gg`R#FVK6}N*c)kj}vqL zJ9)&jNzh-}rH;++9O*Jf@u(vQ(Gmgz5Wfel!Z0iWs$y56-GdC8`~o&OSs>9&$aS8g zAj3x)YruFF0!431*!YUtqD@2}yhNDWyda#@#tl3Gh#+ar#RMFxMqifr>Ei$1vNGx~ ziGm_iXmVgz=9;qs_1S4mf~(0pL%pDYC?X@YAD0DXdvd#|MSS-JQ!_nZ_{0yVdCjyM%6DI>x{NQZNZ81v{K3yXT*D=TLSHX;13oSyXbRZ{}2THW+m*_7d| zP0^=T0RN^~m3XJ%x6j;D*-}~p!#F>266m)oTU?~~jzCVJWbvo~Yg&g9W=q7TnX51I z#bnb%N~XquQ<$frvG3*eT_J_3jd+7Y+O&LanA`@gf)FuU4SD6i@HrGC$bV*FJrfO? zOfick$>7GOTq~@q1Bepn4QZ zpzoWF1S~W%ITi1!t#AG5;Bj`_i#5MWRa7r`p>j3SPOJ6Itdb1Y`@97n7Cj9hE^kun zt)YcGeBphY-a(%O5YiG8o4aYPP>weHm;EErs^)8q)ebL$=pws{sG2cP*2dGYeRwv3CfJ0x7Qj}7Uf+{F;qsS3 z*SWx6))u+eEzo7pia`Wb_yZ(y;FI=Z? z#QO8Bscn7^?=BVIVdZR-^I?`+E$FYOKh*b$yhfRdp=69TC?H0ih5#~PPMcj$X z0Xzn=3oO{-onu!rqc1a~Cj6D!e!ZMVY$_ZZY+nvS-Yb1Nk@bO0;~~U%*{w&sApJ&Q zx?b?;@W>V|N2bayM8r*Mg$78F+KO=msD66&)*#j|i?t z#is~`X>awKT0coGsgs- ziheaQj7|Bk_#Qs)_qhe(wFHn7QFdS)RKQ#)RX$Gzx&rtSM{@_cgzOD#@< zId}9+N0R8hN=`fn?r;{rU zo#aQO8a0ff=8@S^$zn|3Psys$$vZ$FMCu8?NdcU)D`InJP{*3KLcCfErV1yaUp42m zZ)E-v(t}Y)n?>curt6a}Hs-0*?GcX?tIrgz!8hw|=(QvGY~j`e97x2}yoe!4WIHIj z){+k;S>jj&-KoQ`G~itK5xzB=TOeD`;|8Im%2b#vxuLk*%EM z)p^S&MwblV(4YqdW71>g_^$G z+o6&NZgpn-$15hmSNB_fWB}_$V!9I7?V<-|X_l?al|r%uKv}ayqfT8HE}PjP0aS6G zH!Y$dhR{1i7chfonZzk2GLorh+s74gO*ZLcCU_Og_gq4x2rzMWH=MNr>zhOlkjzW6 z-uP-!a;**4^d9>JN9m_o77`~#ZLZSAz2Nq>K!yt^sb1&hO?RdM6U$i$YUHtWT=X_k zpmxpo&WSEwXyOG1W@iGA*rYWK=Dph6LkqH3;7L7}p$Bq`Em$VW4vXWc2ifL^8JQ~Z z7J(n{oJfHF#LYN9mJ_j=ILezOZ-y>(MTQ?1{fA|xnL;JKD_=)DPj;{r*fu71tfwr> z$Q^_OzKgC#tHZSSiNKfN`w+n~l$pqMa}n&Ey4*_RbElSAWcGz@UIiwss^SDxU?9^Q z)wlCOAd>WEVN&>1Q?|L&NiSN_3J=vnUl~zFry9Xca3e{EEQBn6qy!)T(h!_=moS>; zF;;})0|81Ixb+s!Q1CkCWT3*D`lQ{(R_R5Ke>Uk0%Ps934xb4M;6<9!YAw}is|T!9nax|FOB#M?EbvF z?F$MZo&EUP<{=p+aZN97a>xp>fflg$3^6}3KihdRnH+G>wbd$qT}hbJ0Pb%Q8ICtU zMkhjJ#plaIpBAySvP79o=v4gqGG!R5)%-_^0Zl=Cf=tGIwIE}5b4eoQ_$}}<#%kt1$-E{{ti9N zTT+gwP}B%C9Yhk_u1onTNPUcKdZE_K9Qp&`P{_)7y+}$vJufE!bY%I>ju^HHx<@Fu zlR&6(bC92u#p1{12r7g!LUsgC>;j%dAKVMkI&kq6XN1g5-Yw9QUWunONMkKaBYZ6I zdobnuG;k?K3P9eXv80f;k7#rMy~)d`6gXRDf|FB;--@S-CQ>Xj9A|Ib!a22lxFO-Q z<_t>*%A`fP8VLuQ)S)zR2#I!r@7rZ0o_X1OJW!lw)aodEN1vu^J$<)rqEbw=v_$d( z%?uKsq@eGJ)O;%mk7~4n6)dYHL16X%GTd9cU^7PXOc;o!o%;eBkl*^j6%912xqA6{D?+p`n?J{F(oUQ?2tF?xNM*4 zqn6PEko1o?KKj*{$stMrv4dAW4C$h7{GIyZmTXi@&pg=VVu26BER`z&J+qStvtM2r z^6N2B_%B!qf4T+s--pQSwb6L+`e*zmNs)uRL5s1w;5~hQ>^LF=xW)OO+ZxEPZIiXz zJHgefutqSMrWpA)ReZ>?uC{qsxrc@f-{S#1&&4ZSD%tE*6CH1VgrjiZ?7W*2e!c~v zs67V|53wN2_LA`HFWvU7!%vcz6ANfO3^$hzPegk6&G`LtdVKKvd1*!;Q}8f9Hb3;# zx=>vDq1G`hADAT6@-31_=o7A+{pjC)y->M}{~HmZ>@TKIUfW9ZxLfF)sP=4t`vg;`Nw zTjAU%y(DCXhSq-MSJ|bzKd(S_H#HZU#^LhSu-@`3rvG;Y59HmUh}B4hi*Uc(z;aCa z2ifHAp2sJCqUa5E8g#xD0W(nz!qaeVf0$%R;AgqKBZ>YmsQX=gmWy@93IiYvzC7$d z8LfsfXPJ^eC_QfRDJ^w0R=k6cPOf}mkz<&{a#fgiQCqC6T6Ne7jdadQ4QpB+nIjWx z+`v;~wK7x|c4BEI!B5{LcY)8Py)iI(^EAg)zfYtabGu5JtCakbA6NT_SkB*zW5)OW zpjoJ#W^_QV2ib6c8-@iYD3?V`2os8|j%MaR)v0#d=Zt9lh>KIcTFKwDrhJd?c?2ft z|Jf9XPBu`PqUJZb%rW5G+l!&LE#MP5yg?48X^yBLCEa^ON(~2 z?pDBmX*OIU#xbvy06Jtib8NMP2}bg(n^-}%s>E(KN*aNGgkVU<<$ zkXE6ld@ZA-4X-tfVALO<9fbf0y4L9S2q`V5SHXuZP8vH2PnU}w@!h)^ahO6H-9H1g zrbhE#VNaDu-@CZH>;eH3+cAQ2&o?v2h3!A(!aNk~slVm0XH4mHh0nY|@tN;b_ zBJm?MzMi= z;~hMP4B6r-qUKPPTAFI{0;$ZFgr7ZdVzw+7GF7M=)DH1#h?sA3Qom(optuZdrOQq^ zG8~8g=lhQ6aXUkCd2ia$(N>jeui;+Isk}~CF&#e%4Ea{ZB_1=GoC*qg;od_Q$ zEYj&1wOVe?-%;eW-jOD8N?soDI|?{N_lEku>9)LJj}@1M77!6HP*IIfwkhQ-aYmc1 z#m;ycTp3`VAM5<1M0ekTOfN}AUK;*O*N(rwDVSGS9$&J}3~DdueW>?V+D_o(Qx3uy zKEYuUhVP6*!-P5vW-zXQ(W!+bJCf$&4ISGH15E4)& ze_GNTZaHeIPjaIv*IG1o%IalLr?c%ag||2qVQI$rXxstH(^@q>(5l+hjjJV$2=L?O zyCBL~Jyv7&{AaQebIDP3fuskGw`MyHkAd+p7A@q#qDdcb6m`F#fhdvT7qzd}P)~uj z#+bB}_Mj40_GGrql47mke_hZ&_*tiU(alljX3LVjw7eR{Mq_Dy_NFK>B!Hxn4p!e# zZ%me%-9Uprn6ZAr3iEwfOR!RrTv8@=nmSXAB47Lo`kS>K zq2NJ4wQ@uQwO9TA8jW14pgo_D?X9Q0sZez{Tfq(Sztbcm2$T_Tk6ej=8B_i4H=;}$ z%06UrwbFi5-sjI{%R^IrpiK7q+eZqd(gG!N@5vI@ydO7|i2hBGS@`i`**0dVbvHgx zo9g^Hj>p78nN%GWgLq@(S6s(?*X8{YT1R3*ZvF>{%TosSZ-_c!Ju7oY-@TC>4jgFs zG<64|ZYBk~`DzH5oafH+i?2$D0P2GFxA0r+ji)d+?+zqrS zGMr95PyPr@&Pq$(x%ofd)uyrg^yM5aL2q0+j}@am94APu{+Ze;O{$3{!ptA5j8a~V zHPrE47`68<1e1_F1P`~gW{_RY;}gRyIGnf>RM$-V>|zMFaMUq~KRVwJu1M2>Fx@)= zsQA$Y*QmkKtz@ln;vc;oRy$@v3L)53Oz*wh_$SX3CV;IW`=I9V2;4|jk11OR+l1s} zRW;WXJ`U1PI*|6j@T@W0&yY5H)XOWWBw}f}v7iyxZJx9H!$QC!zw`D$2RI}qhwFYS ztezRPhk|>Su8+o<8E5o1+Sdjf$6N(jZ-l~9a0j!{y$*M(ZB2ln46s5YG@ec`l*Ph2 zsr$n2#_g3@h`)?bL+5!#_n#&U%KE*Gt;s|6^6P7}ZyPbE)N+a#AF1 z!g>^-q@yJ(yw>Ln)QHTOhH@F55H$xU7;)M_jy&A;fyww0CAa`NReYDobh`xSI2Y%H z-@)kMM$bXrqR$%QtRgalxjQ{ltADwIj;W)yrTEO54;$0_{IzEX_dcsgJ(@HSSx0&L z*yAop$erG8d%Nh=owcR$sX{Hns2lfXNAf4EcC*v+JX7D1xz2fHL@TDL?9L8qkf+jk zDcv#sTcq@%rw?E(;G#N+G=~3=l4YfA@k!9wHUQY|T zRr)ol#huzW@=VYe#s-*rni(+H>5oKw|1eMI=%W7PczUcl7j&B*&toV~sNo)DIev0&c zzE&Cc0PHj^(+X$p$fYq4heV2=HSHc-yt?}pifKbHJL~D+l_v%wyoN+B8+{A-K?G!C z?73e|FBIt{awP2wxU|jUDL15dx`@da%-6X*HWG&o(1_Sh% zjmdXzLGba0B^$=#cW6HIWw3uC;iG~!c}(qmkt__$TarF(>V2+aIc_U`5^@_#3; zzpZ6`-d|(O;e6{0THU}1)S`;NM3A+=m!rY3N3A6XdrskU{R(8%+m-sB3zPCrY_34v zQ*rnaC>%xv^#XAP_#);iE7Y+|BNK8V+sJM%kw90~UyEJK@fwm1ai9jWfQ1&fvDWV` z&}BYn0Vn`u?v$ZsQA+Tvc z0WAipm*KsFwkqNPxK5Mc9QQK$D$;~j!mo`4jI48l4JI(ZkzvAh;2FA3E?9)IiA1pg zAAZ~slii!`ewm%JolHY#$Cns<%&CmNO{kFG+W-X!YOz>#RSDNw?acuu5B7XnG)D6jb5_wbSwz ziK8j9qNnW(vK|)AL*qn%7xcjwDUlM-@8Ee7x)3mGM}*$vQ1|Q_ogk}o7Hn#nBA>hp7h22hlaqEqb|1u26+w6fH>3<8ZIA1w7?b(>qtyu1k0yBaxnXqO zavBKFy*PqL5evpa1T4}ySu9W?nI`k`^zpa;u=WhQbu|CEUGtw*@fbyh(4oLSI}OL9 z7)3`FAXB|;v56vpGQN|BUyx=0dzo;<(x>ehJpRAm5r7fyRGhA1i_v8R7&Pj!og-PG z(Down#^+eY%{{5)tlJLOxD1b+>MLVxN?AN0=o8meE$P|vN^Nuz1oA2-M)D!RmBbaD zJ(euWzX|BDe727!q)X6dMZI@0?tT-LiFbDMd^gw0oV39@+;cXI6wJ~NgqB}~2kKW` zI;skJ6>Enz$iWTa3=TBZ3 z{hYlg&AZ+zfdz=fu#`~>e%-RY`soQ2D+pq<%sIZbC&QRuj55?;>0IVda#gDLTd8*t zYrvJE_JGYG$29>r;_a(Yj9_LVV@!>9ZQ5#jsZx>w2bFX5*w7y;q~<|Xp<&O zOW`8a8=w3>TK40tzG#op=JK&r4Y7eO3qi_5?QO6L8@a;uS^tG<6lsSF4mHADBP8ZSFV{%*C@ zQqUPE|Lw|xK&*)k)O6WhO4ePYqF_~R&2e*j$2_w@%q>utpg(%fq(Nxm3Ik(Un{M%A|RVPz+&BZEC~F#>iDbH<6cbk>Tw{%}`Y!NlIKa^ohj zLX=VXduImKe*LzKoK|vMSD6mx)&?elv2^3$Ae%)>Su^u0ueG^v>tt$)S9r9Qo`dg# zaJIr;WRG=JRQ4A2ZbL@gt9hJKCUe0;mYhB6jWt_G1>b^9X`U| z-L}b*R|iwP@kPtIR|J-XBAi%UtJUi*uLRlo_|d}rL8h)M z!z1R}=-E^=&)Gsk=V32u77kK2=y{ks6B9@~f?_95U6{z)pz?GpI2GQ~+mM$bOJZjK zvNi4A087lUk9Is^WD9H`DgzrltEu*}L!(S8ZDf&tzJ4#0*6!SZPlscf@TH3$pNvUK z4*so+Hf~oG0+AGkO-Fd9BLi7bK6+aB77AaYBgE~GX8wLRl5%A+4aw+8`S6v!1S2+$ zZLaHvPVK7jx6!4Vf2jy2Zqu3E1!Rz;FtU456r~U8H-{!nhMd zXYy(Y^F2M$p}u`rP!-ZZYWQQ;kEY{x3`GaObG)Y`sG{RYRXq6${>C zXdz3&W!xR;e2C!22iVAb2g&U;i19_L=zpm$%4_v+UD|@ z7h!6e@ar*e?Zy(`fo9;Q$DHh!(^p0qd-%f4zcvdAW$SkC$3)AF2^?R)`qtMWhW{0l%5&o0yRnRm%* zfs^Z$QKd^9J_B^yHEStk+V=D&YS3w2r9&Q6>;mreIVjWOCn3jG;-|L4dJW7bVbOfu`!%6U)ws?{M>oPSDWO)4@LUR$P94S z3=W*-siLhu0|E~0xC+rIp3d9}^u7hE+$jguGf_XvN;gJHj(hKD7Y0YDB0Ux%$&B0l z;80mZdI18i>e+Ub`rb1@ocEV~#TtI|c$sW-zwFkgsMWtMh(m8Y0nCVV zN@abkA1ry%-4P2~<4kr+XO)=rWAo*9Zk-i4x4*%eL(Sy=28CZd8V+hYD4r^y@d4ud z3r~L&6t$^=55nO!*R|KYBGAbO7B=LyQ&OeCDd}oPTv`V%U8kFX2A5$sBsk zeTCI%WAZ@aIlQ7@13eRA;A)NYdx4d1!TN+j6ix+_7F`=bs$B1`D$u;=fD1 zikpIPzAz+4hN5?VoY6+fE7xXQgfq(iCqo$tNn}F-mXeWyMQjU^P*m!lbH|Szv7MLC zP!`Z@d~;icF8*R&rKLNx;$`DKJucfJ50%}nMxH!{Gh5OoCuFTDq)36Zf5VlDsXW!O zZATWkDC9{YCyC^N!KMc~ampkXOct@%=fkg~S^Iz``~iQ#@On(%#)OMR(guYd)|L=a zQTihJ>`0!&!4Ya*c6hAX2~E8Vde2jw4P}x`b>64&O)!VeVTfxg)u!(R{lKwKYT5rB z#C}w80B5FG%Lv)PxO~~2Najl)W~oA}~j0FtrPK=G-4Xci(I7AO(mrG<40y zZ)y%5pX65L3(r6DJa^}M&CB9qYI|XFZF|dBLX^bfxSwSx-MV*s$?CM z(MmAm0sY?oM{l)eZl8T-5lr_ALVa_zV(=<5 zyq%$VNhj69G95ZA9DwVsAz)>Fm1v`}4&$p&@k@W$o>J`8J^dVVha0(BOvWR}n>+YcuD;Tn$F?Rc&q+;%8 zRaAUcBE!@;#>VWSmiafc-?@ut_ilkI!M%e{RU#8`VB)dE#{rDY0l%nJk68*({;?Un zEG;wJYKdNy!T#ef7YIL^qj6M=Ob5P}@Ic5B*NHJW)(Ua_T5TneI*`r?J44Zsa=rNc zI_kS7=LG?2&y35{;YeBdn`-=bphy&-uY|bgPQe?;f-&%He7ak6Jd>XFaS2q(@u)CZ z009KGP?S;#Alk?JuNA0+P>}Oh=wOKA&!s5%@hMek*S?PD27|ElT)R+{gih1YI{YP~e>PEO}wnLy!WTNm-;Aq25uW$K}-3)**H3wbIe!}xu$ zxr7~J#rFpnXkQ=(VP+&!_hZMZ*H6We|G_}Fk&l`SfXxW^sVgjM($Z~j>rUlcGP^4YHP*=f;E2l6$m6EY@p<;bymB+t! zvQCPH6cF#h9|OjbK5kAp*Gk$0JiuRaDy&*xzDL>OH+6S}mR9nJ)wn|ZJ9zeui)XY#e# zqSKM6y+#tBhKnoyn(ipE3Z^+HX$R~bomX}mFFA2oAA~Xck*UvIGQyEV%~v-yN2gui z#k?cDfijP`P@KVtRbe@VaOAp|dPO2liIH>$ZQKTZG^;#C4^Ip7Mey^Kyw^OA;9 z39#c?Z=@rBLgRwdaHMj$s16t?`SSP-W_Nndfq+a^i(iyl?Nl&h#LA0(?6@c2SW(~0 zqCm8}{p2lY8@T1b9pp*Ac$Cou2!H#5<@ymk%N3qFO?&Q9x=JpX19V~E}f zx`OS`@m8Zb2Ql-lpOQ!S-Sz5~Z+b}TC*t8%R@@_!7U=bwpUa}Srk#45AAc9yPVVdN zj5&os;Fi#pL?D9jgzaeqX&tu7gU1|4z!(jlk0C)T^koM6>R|t8f0Zyi`tJ!ii&Y6X zQLT}HlVtGY;QZ5{$JMN7Q(z);!A#8j-ahFvcyV27T!&V zShBNIGjKanYn04N<5dcsQ^c0=hde|D8DjrV&9B8zK)0_bk;c0ta&+E!!f-Idwr7o) zM25_sb^9K<%a08O4ydj$T|z-zG~k6+q2a*M^mf>>jx;-Pd*m>cA&s#b_xI(n8^j2l zY;v6^iN)8*a(Q@ndUdzWKG}}W){nmr8=9e^t+J2np5s^z);SH=Ckaa>gK)I5Ykh7s%nDc+is;g8g(?{M|F89c)a(OUEeW-Vn>yzMhC)TAu-IER=Gk-auFu@Q#Q}mx z3Dw$xN#@T%;zUj!3<|-T(bVBJQtso**TrM=$H+Yf53M${U2OMWvjt=~eh`-2~Fp{*%n z>{0+0n`v}Qbz{pN1|H%Ev3#BR8KNu5e$07{7AbiN#Cr-6JuYOsjj;}a$5h!z=%ahPej#k$CXe1r76tFW2#RDe;`r+73At2@}S03@GM zXtGoZyQH?xm8}wC%~upo+*6obse8=d>W58C7!bP02+gqYk2mv77$(;1u?ofB=O=|J zNFuyty+$@N>oI9Lp1-&s?Mt6p_%;_0?Oy}CtHxV|c=zXzET(bkaL;NxO5rsL)vFej zr)}pYmxE79VO)N|H0@w74Cb|$RgPq(pw}0^>dv(7JDxQskq?Y}`&uWL%`t&WN;^_7 z;q(?6IBQ&iH7tH8CtgAasT-nZt{=klZCvLH_d23JHKLVPU3#7&4L7aML2=tTdN|~T zJNE(tvr6nVnzp|7YN~Y)HG;=G95FD_4gWhI;y3<_RrCf&~|MoeELAn$rZC zK`pefP-q*y4wQyc9$#;~Q=~q^aS5NLz2$Vtd4ihERw@kZ0B_zd0Y;|||F)}$6N`jOhjE%R+ z*YwpLyUoc;4&L5IW{}93}XFuUds5e zkURIEX=cVY0&Md^{4Dib9!}h^&zBpO_Ru=I?ba1)LL5%f-x$rUqjxU;3lqjPypGcx z@T(*eq^7d_Zrcv;MaF)8ZwPm1ZqAxW#0jx1UkG7b^wO&Ujs`fW1Pr8ZN}tM|>zEs9 zZb6cpgU#>J7ETqawM6 zHE%{@45KELDZ-y6n@GCuzj^5K<~a;tg56@QS^ro-ZtN`|_9s&b_jMB)YWdu*!Y7mb zRl?-~<^rhiCte=^fAHHZPl%hW=UKk=^S)~VFHe?Mwq_d9_xfLxaxV`!$f|E`g_|;J zBBqcUD1iCS;O}Z)rm)Ep0w{1{m4pJYz2|M z;kqF7o}ZYvHZ9&`^GDF<Fu!MTCgq6)BcU;vRzQ(G8Z@J zR_xUnJciy|c@*PRADDm-b$gu{n?8W3n&+(KxqCXhm00`lS$O+Y7XTO5L*G?gq22zE z`KY{b`sc|^gmwO04yZ0KgCDc`r0#-*K`*{y&N^G|5EVOySgfcO$+-vWfhZ4IRUSul zmXe_(aWn@MOhxgNZrJG)gX$QY(}hq`q*02?@3wQEM@ckpcr z_ay`leddnf&a^3*>rc&{{~Axms1N`GAw%;R1h#av zD9pa>p<@QPxIR06HNJT|Z3JVFMbYo&zO;yX?7R!t?N+{hyAF?&;mgV(xGi` zt((`QkY1l9B>VekW4_i>s<4pB1lD0Z_Y6fDZyZM8^P{h*jjVP;X13R1bb-@~?fBfw z7tbMgh0lsrUxdUYK$~#+gc|(+XsRm#h+>&;pxDhpOWs!nCu#;-rOOyh&y)4lw$$2( zn(c5?{Zol%$$Tb&t-PSomP%;9vAZib6BhBmrKJ-O0oNzXL1+5HJb{~yBp4Z4+H%!G z!K&HFND||bJn_gOOcDhMdK8)_kFL=fDeUGpST^(p8p-B`c^P>iE)qDUsK*qo9$u|tS zbfegAhI7@(37jqrNkxxx-1B~hP4-&Vl(^C>y<+dcn1}c!9(LMxzqPn?T}UOvsbHC& zJ}l5ywkY|!H^wl2DhYMK6f+Zv`-s>$_GGOH$>J`%Kix*sSP?cz$E1y8XU>)9dryn! z!N_D^tI#+<5vy}V+qRXxB8rvDa!dFgyORM_^ZGqW9A3-kV_Iu9{q!(V-x)ck*)wXGA+=Ov?0&Kgmd@voxeIPLG^uf!`-LT1Sa9C zYsP)OrUOQXE?^!%h9$Jt*^#w>C#w3d;mEwT^v<2@-LVCw#k$Iu3#3}=Zq+hz%02cR zvo`KK1z;WNr*d$~FRKEKq&V4VH7}!oj#*;)=X{BdY&DL|^|>*=I2T~+OM=_r z3l`7kJ$T7-y>7e7KwbISOP%$|ONBCm$Z%M*Eh$hO4Zo4y0?|@gAS3BdCXr-PXWXN2 zJ{JvJq~7K)sH1f+(-c$<8yk}|M|x&Xl@1ylvnU;q!8e#xYXaN2{|WN0L)J?xg@`j! zvnQy|xzid@WbJ|55jV|upH$s(4#pa56h>SqO7s*SkzOE(X^J@^hM^B@fE+c?i6%S) zqbZyTeT|Gb#*DNM)jKt@M*#5usqrB1_2?!IE^JXmKcEwVZh;iZSP=IO{tO=Ndn>34XkusB_I-j@QFoaj#X`p&0Q@}G_bk<=1^RywzI#e~et6Zc` zO=(~EH#bl=@O2J}%rzOK!DnHkr%<_kP=+!1=rGq&df3~wc%dE67hlx=4IIDL{pcg5 zxCztkc1X%6n5f$$7uSwC3qUgYL(UI42>w_xLpAuhGX&p_HEwC~AbOtDOgtJ+Iv*4Z6HYsTT(Y1UQ%(pqPbNO2iqU>1ZFoowQ_ewsA8=Hydrc! z$}dkP2v)uFo9gO*-ZUy0op_TdIcXjavP?0gr*4$WeYH`viW)~PzK9F-P%Saa_sw0o zAG5!8{I*Ri1N01tm*u?)6OenIoMxV-M92VLt z!vt+#bYFejb+Q$_Mczxb=ZIw>=CYif_2bqLP%5-MDyDxFJEp?xbje(|K?_nniX#2} z^UuTr)HTl`A(^h6ca|M%iVrK~bsnWHhK-ks%D6CVh9B#CEGF%H=y2PBI!-cLp_-2y z?K7+=vkvX^3%m|Ll9yv>QWH<>9+@*WSjYAA$^*Zc3fhjHL6b94IDAt7LaYu$+9HPB zGxke(kT2ZX>DqmE7+fMOqpamp7Qm2U!OIrm+e{Beh>p()qM7FE!VE=o$tli-cGywq zIonY${>Aqma-E_dttEik^oK6^jz~C?{1@cD6HEW}2Mz>b!0a@YiK=vR+1QZ)eQ$Hk6mS0g=vaYY?L*Mnyi zisC8`e|%*c#1?xkwZbZ>msHBi0w>>Rd-`e26Z=*Y2-0T+42IBV6gFRLQ{NJ6?Q&^$ zOO+oCZuiL-{_wpqPiwnw`3KO*8d<^TfNiLfm&jH;ZQBs93Rh702Wkl72VPpmjqLef ztzJE%W}4OAb2B}A$obuxq)6GJ)9$(~1HNF`cjE0~Cx6JrL7%KO=~%+`%a~dfPluP} z*J&-VD-}iOND~l{`1}CUIe+HkUaDmemkwA&!OS1LrZ^D`GR6Vq@ffaK6-6h`>0CgN zq2K+d-8r4q1Ly3h#68tD3nLwBc(8LY_SgQl?b$}@5w-!d>8y)^)l&#kKnk%D=570g-sL zt079q?V7BUA}F3njYTGe$ zku&t(Laat?0V4G9ae!LZ&LxYQF=eELZz!QSB423FlT#TSbc-X5G%|gL&@?C`&LKcXaWq7l*EEuG{7!#h)-iLL zoKxi$Hxx6qT7w%gNNPh7|&Qx6B7mN@@ z@%_J5pcB!vfSn~axd2Bc8JKy&wJCtjbd^sFLNsma?B>8mEdr}}>?nNd>&2`QJGq9S zddAs3D;$0AIx$!R-9Is?csK5LJEjSEi6%H)0(Ht6{sAVeyU?tG2(tw+E5Zi!yZRMo z3oRq9aLK8nlr-SaCEAK1pvv@jxjD7z(ttTS@yj%peTtDUxV>WH&(z4JJ-BabPRX@FxXK*KO4GVIuXI3l%TM-W*|d9#%ZK3$6nhilTjCW=nLp*o zykp{e)_M7JmrJs76C$e%ALL0%;)ZY$E#AiEr@Y|}jl>Nr z72+&G(lqaU_VE8gT8c@KF#N3sCZOSZj``APwy4bgZb{F*<9svX($gHtA>zB=vTqFv zaIgo^$#@t>rf@@CAhM}~PY5h+&#j{H+t5JCGC0UcHDg5Ni+qx-;`_Zg1^=6dbW{jd zp8qn+BEi-nb{Q46|O}35uCBmcjOvoQ1`oxR0!E8fU(5CPS|V!@s({u;aPXu zivd;6#KHRrX|9Z(D$0xUd3P29jxJd1H5NND6hFAGpNehW^ z*(VP2B|W?K8i*FvMP>zmbF>Hrn~2<4&djkH{D956g=k6{gT6qPJ4nb5x!uk9VkGc* zd_7%-YR4OHpxLqogk2N4@0rpEDc5B50noRDhOJg3Pv9xgox<_PcGt%R=#sUmUeVv$ zS&yOU+3-H&J6A-@Wb_t8|;j+!&qFW0Z82lL;}UDxmD6KpCoVHH1E+i zj+O?l7@tXO79O&_nb?Y1ZlXDFk1?V6c(d@m}rDRHDV~ zrb#T=g4%{`Po5AU-*<3(1)<15flE$)#1iBV@9AM7A9PCR&=sP!hyY6vNp^@`NB7dLu+<=mPqL{?$F97*~0uIx!Iw3<8}a4U9B-(~-)L6L%8*OrJ}@tSl+)J}SyMVm|P z??4V!5k^m(baEhRSM449@3JvJYQ)k<&Hq$HhOVGJX2-`&M}I7ytSc#YInXu$AVoYq z8u2tyANBa$8=GzhY5e0ZxU;SYLKM|8adYxzUU6xDw&{`dF~6Qq(xDWJdx8Oc&wD68 z`x|Br3Qe7nI%`Jb39#^Pw!51Sh#TTJ5j)5pM67(QJzMd=hQu{!Ru_G(!<;^cye^9+ z9LnWYg-kFO2yl~d-44mNd>6BS*&qohBv*+e)FEl+jPN^v%U|`9+Nu2tI462*ItGM0 zh(pxZsiy7RL8l#fdSF)P$fGZb#y&O*|Ez3M3vhT3Z`b@)+eq zsAFV+ad_NcG^=AgHp0vBGpi2GIKxld2pn@8ykVG5(vRSl)6I3?%uv^B)pGP%-RMrS zqVghox1oCi<>5cs^*>$bbIIEpIqL66b*6F`QqK4X&Gbxo6A_6qk>+Nz`(HJ~ixb|}oLi%P0~v??(2 zF+$YLy4$@%pDKP2(%9cMG*upMbZm7$uOG?| zLs6`J$0~;_26kaCD1)88K5e%Iog!tb23|!pueuiqZEl5^pqj0EIzaml-{(t|Kr&O# zLy_8w=8Q0UOnxN0RK9L*#jK#EERs1hNUZF7Kq-k{c(bo%Re1JL!lPsin*R4_Dc3Ez zxcP8#Q#LUmzT(j_sMP#g5JRh$CZ0fyO&x6gBN^sH1Xr(u)G%_d*mlr6tSF^LcWE*; zZwO?nuOq=NS8RD^W`O~%jI4kmQl0-gFPppw`NQ?)1lcm8t>C7Uq4PIc%4!(Ny9gA^ zUKZwVB#pxJK3R_l`)X@Tx#5mfmOC^{LBcH;?!QGh3u7^4yYFRo_s&_M3=-`c=%F^aT{4gHmo3oVwYG*OlR&`ok zvxjQ@et8TPmtPN9{(rT}*mRXgTHwa+hJjQwo(PV4f6`trxZCnXYffP<{xHKoqdgQs zedhHn(dWYX>fFq@afFC)$`AR3e`^($Z@^-l99IJQ6I6L(nBM#{HG20{wzf zj&Nd&`{<(_Bx-(;S*HkxAhQH^Eda*GL1#}oX8*~Os?z4g6;2|<;ref^@dqLr!b&eW z(W7B#d5b`(TDyq6?7OgxS-r1TDx=61mY?Z8>)k&1UbC z+m$!Dl_qiD;2@%66Rag>cyh+gKm2(|rq=z!WCn*((G#IoqfD{hUr0ccOIO>hMWcim zJTPx&j(+_f;ajSgu&Ltuy^;@GW?{CY#U<=dgvCQSKe`?ydQ1Wr@l>9F<+1ZK+r+xs zWBjoVsa>!_LWjP9O+D);Df5s!p&gZ5vQ+E_K~@%2B~g$)7JbYx<90X?z~X z@1-a$8kD)v9=XsSkH&of54SyTT@<>RlwN4zkOblxk?*zOh+zfEgkt)% z;c&uNZ@_qGAmU`D;d@RXq|5uRWh__NNV&C8 zimajE<26ru)XBVCOGmkSM3Bs3OXA8Z^9?qbMHfS}#vMcj$z1)<42}%bD&4NdKjzvULBVK3oBuzcW4&z`}@Bv_r%muw!@M2zc12wmHpo*Tp z=BhV`HJ_d~WE*;kt!8VAJfS&cxr;0qcp_PBPN+b80x9BdmCf?DpZi0F0YJ- z>(JP;sXymGNvpqG0u_Urrn9|4h2X{QQ@TD-XW3RQ`vLAa6B}z#b`Wq3KDX)W(FUon zI^Q-{sv30$SOk)t+Bn={k3u`{+hqpLBUWVgKsLs>J9dB@6(D~svAg+AM&@(MU0ftA z9CK>mP%YQye7{@xrieW(>PhnHpnsG75`eU=6?w~GfTVN?5Z#}kimbin>>T1KP(;w@ zAF$sLv2C1B6I=uXLP&Veji%dvVgnv8Hc@yRN!uOY106eEO z_QED|=|8T?G67-wEi`P+#re)m46{MzYW6aHbK^S?-=%U0cP+V@&!l?S&qR3~O&WxH zUML+nMOrBn7M;>q=`8V+DRw{8{T-1{H(s|=9lHimJ;*lcDwxc9{7{v$!&~o&PRkL( zBDSBG??$z>ayFT?JIQbKKW;2O@grCSqq~F`Q=OwV4R@bjxWx1^z&cLl*t3cPK5=YS z*?zcH_EoVKxPJ#3Ylk-1a~@|>n8xnsHqT>?M<>y zsbk-JBOGMc9m1%=C8oDS>4iaG*#Vq{5kEEe1_@DQ^TNk>SLF_D8xPnH?5|BpD@{73Wj{^u@mHGTiLWxD$eMxf=3g#C6* zM*Os->0XshH4Rf?SGG706{K@SlUh}NQA@Fwi#!$jNm+S*V;N|`a0xt3XM*%*YjHxg z%n@Dipr@-+KWn274c}0%brcks@HdG(yM$)h7F^?s^m>?N@&fGQ8ts@Q)yrBB`7M-W zu)E&315mRrh=}03N0L<<&|EzXA&8YW5^M1G;0LemX@v}O6Sv5h>titz0!3zm?{jsk zwFyfT!~yYnW3Igb<&Bq=^^(k$93Uzcr5~)~g|})A!O-+!^SMJ@swdW5jjL2ZE|SIt+@jPKZd68;$KCiSPXY}9up$h5yMW@|F~dGE7f0EZQbG5@oHH>n~m= zEi&`TS0AxO636Kx8DGNcWTe|F zNKo3yKDCe%qJ)b_KFr(I`2Z=bUL#9D(F`!a?K1Q&>yvl>V2WnMYzW ziw78PX*f|M$*liCC}BiUi-VO4?>C7$^2glVAS`>EJSU_E2ws^9ubkOek=Y}sO` zUoV{ArLyAOr2y6#+Wo1MFgPESri%UoRwhM|2}lv4XhVbZ{aWjq$j{>IySfx(B}m4@ zdSBM4JpEkh>!|FO#SEys-YA#AfGC&LgIb$&LXH~SkDDKt5PWArPQPRB*C7y_ez&(4 z14qrS5bE>wDx2I9NPALm*6*mbsFzf`nsQzJzxl141>ra9KB_B6@#_7kcz?Wqg)3$r z(gGaG#Vn_|Rl!>h#7?t2o#dT=(>uO3kz;+WUq8qb`_?N3HXeW+X0H%6harl` zFr&B~>7PqL80a*g@E3d^^d&F$Dfv_{ahMkIiYl}Zcs&&YTgg+fmL5@m2#VR1^vKg) zpl7E6_?qucVEvkta7Zlk*>0NBNeCK62h(VEGb(8%nThJH7hBMUANoznA)1m9rzL?b;I(-r?fmfKmTib&{hOx)!{WK--H*(j2j| z;tW6Y&T1b2n1*kVQk#Gc%mAt5mAdR*7}JA|4+ila&hqKs>g7F81V-0?v4QbQ2sulh z5ZINixRM3Y3LWtZ#UXMaDRu<_ zL0HP8GBJBpBh#10b)=jUa{R>O$M>C|JjU$cJin&F#IMbn37FoC4A8=6B8@FdQ3{!d z6#h!pZ zzpDE@I`eJp#WB{H4Le7=k!jyWePHF7-=<_U>9;W9Z9$!=6bs;2P5|U;2jYA-MKkNo zylTkO@Hm@vuvYQ94~H)%2PBp~s2s_9V*zqtZh^25_RbZjv(JkSzM%mp-|c0DhL6U9 z^Y^4|F<9M09a8SlnFu2TW**rRrW0;0nlK5IG$0nY7w9CLxrvJ}?SruM;uR#Ka2n0f zO$@t0*}Xetf)5YkzdhuR7RB;HAIcyRIQ=XE7*o{h$g(6yST6-~@5QN~-{ju^|B6L) zYbkG@TEr^y{pu)wSK&ri>0&}L68x;(GgXn~x@h_W>wu*k-8!fbV1I)R`CD>;95G1A zkxBplo>s;JqwHQQQbAF`BAS>lDOnPxI#)gaONg4_8VKoYH{!=27N4NxR5AURV69jD zJ#@>yCV^s83#3FF$R;$;544(BrZx-u%HDPV5nldNs|F0LdI?0ZrAl3VvVD$-EqtBqFwJ`{sI-HxRQa33~Y9xpy?{I@W?hwGA!En&ZXUjxFe^=99#qHoJ zoqQcKhyhAgtAW z51X=DMO4z}uQRD=+o7M5#=Q>MAvAo%=2oUvmEJ5EOChfZqy#5U-wh+|j74Q%kTurl z%KVrS;(9IoiOEFu2M`4J5NUm`h${`O((w`odTNaajc^2>PZkcO|7HJwqTzf?2Z$3_vH=qB^jR>(P_3s=J= zLrv8)e6!cthi71(z4(W2BEsNtKzTU!McXynmDgCW5>YxZUn4fj;;3JH#``RzWzy6} zZM^f;5DoZj1Ox;wt_~-5lP0xBJUQk6`oaIwi6QJ-cI$Bu>}2~31?@ODgxbF~k(Hzn zigs98&OPyJ$xRH6r)PpPijBcPgsvge{P-?N*9j8hsE{*YG;4`dOIk0OWV}|(6qrNv z;B%)TreT;!2OVt4Y7c|U2>Ro8+zJ6&xsm6a=(lC;KP8nD_lKxG6lCJ3Jn4~PlYN*+ z1IH{uq{)Ve*i4kBU#>mUcS2A+a3(LE(r;j|55Z?wAGgdiJM-HS(*vemfKW=frEVii z$_o#KvbUq*QtM@%-V)GbMH$yz+&{YR8BBSBF|>Uc1+RC9l2j3D%WpiXvW0zvo8b$# z$Pl<{WVLpft4?|hEPW4{{ak}JKKTAO<-O}wRq58IN6ckhtvbSNw*DnaHn_fpyHgiN(Z__C9@L0AEUGNtjATVImBp?(kjZ- z$k+$TU;i9>1l719 z*5ryF^6afQa_Mv7Iu zfKozJ+mk_&L6oa-)w03#qd3q)|W0E73R;WzmP^e%>O*3T}%cjG4x0NUzzmECE+ZL)TCysY- zO;`eWhHr<|I_(Tn0FveC%|T4?bK~KQP`yL~E4kV!nVy3OKS!ZJm`f7tgPKXCaGcKn6rY*BL_6F6zB$yz?H*1Lg+CscU$IxX$mj;uJT zPzyW9(z;BJW5rPEZzfU8M_d9kgFo~N=0k4Trq5l2^dN4;B+DMdX&0NU{|bos+ri81 z!`@MToiv4~Z&p8m|I4Is5Lv?3H*VN#5N1cnXLL*$luRw`rb+f2ms;-2X-X(=3K2%V zIjWt_WperE-jIZ|VjfSB(YpGowGh~azDuHeSaU`;eh{FKv!_rw+&N_cpNg0CxYI&` zxPn@Td}lt=RnNu~5bo)#^psE}KYf6ZS*Q6Td_HQAFiE6yMA7^2O9##g7@h2T!ye1# zilH(}W5R$gZ$DRi)T>C}oGXUD-4XXG1?omKvFt$++9kqQ+=8z`R6L);L|Zj47!aZ+ z9Q)P3B$*wh-$g!tU*o1TzmVPnp`l%eNeJKPU(r|BVEmMZbX!tER$_IJR(tiwj^ZT& zmy!}=dsi#emO^SbQZfg)2k|D|r{)#)wSpwB=$Xtv<#1!8M%&LS$N6Zzd_M|8%>WgaGI{g7$6EWCK$^O_QvpnMv&%;yL-xlPa zutCYWn8EX>POpI@87I=oEAACYusuI*2Zoy3VFs36qf5oeE34yT*HSL#J zzP(9Z;HC3dAmn-;ozm#!x7JZJ!%~P0l#it&W>Z{c8G6X$0NV?2dU5cywzRC z{a8@^SCE7)^0#Ts5ERmFF8eN1Y_8!5(urlEp$R<2i?)TZO{q~9($pvS!xa2hLH#!c z&eb?_$Oy=H82a*?-107fJvTyQyp!7n5vga(#!NAAiiwv_L6ur}0H~t1U})*BL~3TQ zVVYSwbpm|bRzmMjZSk;3l2EOuS>&Frcs@WZh_#>)HEQiPWpau@uCbgLSd?0sUWj;c zVJ+Z{#uh2c7&*EB8;X6ZRINEt?~`=H!x0-G&j zl{NE_q3u%`wURc>TQh=`&g~V9e~0CPKCwRG7Rli8{($|RHQ1)oXQb&YT1`0HclR`4 z0S<-goW>glBmZ2dna+rI4*zEgOtL7nf#`aR5XFi;R-PBPsgMC-eu$e4@!$tqTo_$0 z&1nXZe_dw8O_YDx-Ib#dq@}!x?|2jvirw%(r)f1ko(FoGpkT}os1dSDdk{_(8OC;6 zPUUmv#?Op&j&)7@_oH`D*|O7ZlK=dYZ~!DJvY}+HhUfB*4|;S<-?4V|y&+_nl-vf8 zUS_M!=0GM7F~|pRDUtz-+gBgp?t#O1Fb2n*VF19UdMj}6`SOY#5wtRQf`{EH%QA$KJDjfeT? z=S5?J@(>dHngDw$&js-kHM)0qUsV!rJk+U#O~$JTGl)D}0!3ET)-m|*FNh6Uc|kxf%;)>!+U@f>qwvk#AASga(4?cql#?l68? z!NrH$Zxc|3MpqgE{GFs>Nfj|1)7lCVj}!zH{V6$t7yYvJ+xX3(gMTcwB=|C{C=+{| zJEjF0dba8Uc6kwLc5UNR3XX$L%v613V83!q;a;IBQi!W_@~G3JR4Lw!Y0eUwf(1ZS z&V#y#3f>d2T4D4#zwY`r0_uHI-rcFoEO(C)NfLY+f8ZQsPvd?Q>k)kdOadfN{m42S zDHMIoyHvCKG_0>G2$PLvLFyxprRe%fLvBr;Pl3o`N#E?WpzJ}eS0Ie<#9mY$+|Gje z`tIG)+R_!pe+B}sS^o8QM?>(lvogGtJR#i>p6{?_Y9;23V3^jf(&ap7p)cibvxX|k zokYu8%R2);Y>_}7mRadg!*R}Ty5T$rnE?Lk(&XbdqCJAWqT#BV=z`oz#xOsCh*B}O z_m*HEm@(1kxgPkR$X^+FuI-vfQ}$+@;{Y#;KlcoClD2;^SbQC~Xo(5~MT&)|+zrk> zz&qk2=^9t}s_CysnYvtji z>0e_fj7l%oEz3zhEJUq%hFPVOGcoJU-&f;@Lp2%@2j3s=qqIWJD;5sXAr5I9M1eWh1*T+Gr9VGjRol{8 z@r3NMJ=D`L7kLpe8R~zRn@KRWE>gbNX3s*k)LG)P)l2}a8EpZ<4XG!%l4FGyDx-BT zBhYc6Mst`cREYON?^#{?c(@Ch3dT=ZwqHUXNpE|bI2G8b3NRQwY>T=4DyNdeEW%O4lc zwZ1NeSn81C>sJb+T)=>R(_sQaZu{eQW5$d?yf<<{ur#t$i4q?N{t-Z*>#f9i6LuGp zxle6PFipr+NHc)%65*0MD7}WFP4;8?# zwhWGiX855m;h`CtS6hLzp~gB=A6c8$&#wK}oE#Bp2z!L4SeXbDaCkDGh%Q6o#>W=_ zb>~V2W`ctfOfju2`PLLfz3`xE(SUNdrxqJ1gb-p%mrah=bzYC~ z*(H}eacxxnmK<*tgr({L5)=WCSxV|cuV6~xCQa5_cdvwvcCe1wUQt*L8N4Jf!kcV& zX$aUdDH##eW(Fqkj~<82&FLW_7PH*FLR-# zA=ed2iKMbgjKCJQ@Kuz(XFjuW+${K{mEBZdD``!zdv-%lU+n>u2w+M1V3+kFg%s*` z^?8ye+{ePPeGheDc)eGhveiw$N5d~DqH<1(yaoAPhN;P)kUa|ecFF*FtwiROP$;s!{RP_r5Y}BUTA8uZf;ckFC+N*^zwiW9-iEOD`?1gF^H@8LYaa+*-YJn_WD zIdB^}1}wTK1v$jffjRaR{Ofj(*n=u2?4PYx;6t6yLc*$t2ztxp?Ld z^!sX~(~&4s&N)xRd2tkQh4$P>Y8R{V?_12PQPbjDdmD79W=Em>Oa7O4^p$fLnTiF&*F-f@EJ!l?E46)sbjud94 zL>T5USIU7OUm5$_5`qtRM-O{U@B5qV~!CyB@f>148uC5is$Wg8MpDINLCj;EIh=ZPPD|-ks`JUH`3bc8o947q| zwYRuhmx@9w#iqzNqo{ZPqL{tkcT!u!+P7OG$s?Rdhkt1cEIgJ)d;8hUG6b(5TsS+e zxx(KU@4JBkqTK*cY)|=|;#m^G)|@jw9G?PIX=!h%we+u|iIgH$R^hAjIT|jYY|X>g zZOa_!)I#B82%3Xc{%Vmrt4odP2>iQ(hY>a8)A}CnC4hXM5p)XqHY7A1&`f!j-5_0Ng zG7WW)>1Poz{G9V_ZHt;FVf;_3_Mjl!)f6ns^@yJ7XE$-#E&^tuh!Az#5L}=XQ(R0G z-Ldej{mZD}9YwT?unuzSm-DD37Yv_EOEGieWp>^S?D$0IQOAr2ACf#{V4XsG3%zS<6M=ISxR|aY= zZ8%ohjGcqF(1@%uV_}}E z{jPo83b`f+cyOfK3u2oE3xf(L0?-oq+Q;Z0w*$;B$eA%R#xy(rg4@J>&1Iii1ETG{ zOl9|?Oisum7urAz#((m1nx?yFc4EUTZ|Hn@ur^8&5#9+tdvs*0;x)E6=@g*kp!+UO z>(mNS@ju@q<^;@g&m~KwV0QGT-x1DrpX-t--pdC?_;Q3`2aS{85<<+QUVH!y`M_UOykDk z9G}5W01vOfhW%c8lAR#k>vl`aL?)SWym)x zKX;^mHzw~nqD(;C?COZ)0OE7GA6dpXz-Q&DM(aXSTJa?xYc9L(pgS)Gg>0jPa>QaT z?WT?tHYgr)u3l;1I|qJB{?thi>agS;qBpdRVCuHA4IDg)*4&>x=)vULMio%?!PV=Eq8mdVG<#^t=F-0E$piaENf{?iow(lzGzYDRXO+^njeV$l*)36( z?~i~zz)@cu21IF0PaCXIA`)%1S#`qD+b%4l+_Kh1_|x~l?C#xCQKcQ&d78E#8L~(Qx>w> zlSC8*^_gnk3;CBJ3Br4@ZSEbT_E>Xosb@937_FCmd8-E_fto?%T_Ja#3)I2XkQ|$Q zCa~&uxEC)N-UYn{KMD}jPUfV49Z`xtQZPkZ0V-TOFlJSxQHy3PN%q^hesn&|b6BLS z%>`q26(^N7dM=Vc(C4AuQQ3g(bn+ZPF_I7_>{A&CYswra96|5A_^oQ@-GSHNehU)Y z>+REi+%N2Y#b+JW{#A35aF+20{BpoPxMp_Z7klZvx@5j@GF|qdOS<8 zs@sTArzV@uksk`oL8pJGNUZ6POM5DvoqVAKT`eGL@#)wYL@@SnhN zyWU-yy**Vo<({&=+3j+R=_7S)H$kmsHVhNeAa_wLF#69?2RzALJ=nZQ{$GFK&m(3r zEas#(Hh7H4>HlZ-fPL}Dau&VGr-LHZr&4&d=5#cnG|Vy(cE*c4_b2iGT4`VyjoL=# z=jtVHQKoObXT_3ah8-+~Jt8E!y4+{Vi&_XNBy3^+rRpp;>?%K61eQ9gEIHrmq85k8 z#{^n_DU6OAiDY6fGhZ!465vBX#PjdZpm*>iy{=|&_OOi&eAfi(p`Wx}t+@EjVQP>P?o){#RYqo&rC`g$urBTA> zo<@=~%jX)0VUND^8mo07#QrsfFvy78B~!`hlA^w-;DSazvYRY4YU{aw{@vSz7y#r z2cmG_owk|0mYPSzf$;0G1|smpR%>9|E2k5GklXovRFM%zhZwXj4_M;c2_jVwE~a2P zo5?5t$*}v%IG93l!R@x(X)AXd)Iv*kiY@Od|7|t*e9o* ziq@DNEp=(zchKDdklmBIsL$aB#Lq$=DI!S_!)oE7dYdXBFPBcuWR19TPrnHJNZQXu z9LEIN@rtpYUE1THrGqLUPVOY{5)FYVz`!}u(bw=Fk5al1ntN#GtF%5oYC4TzXp`lA zHHd?mUEAzZ-QdSR4`uensE-YZHlCh*9}`vGGq9lnK`Wl>qin~#$an(T3?Nf|i|Q|= zE@ntIX&%5QXkqSD2zCY|Y8dPf3q}Q9wc$O*#`@U{yD; zJW|Ist2fAtNGeJZ%sf5Nf7%IuoW*;0xoT<2`F!qdmB`8f0X(2klm z&4C+g;4_7-R-_^WbQ;9$Bxe*pD#~xFg2KLY+rM>>*pF_-m|U!5*bO;6Gba~*JojAkwbBgboTIGfaqf-D?r;{rw+e20;)0+f3B zj8M5uL&(}n0;0G8rl4^$Hg={T5H>wbsFn1|jv6?fJaTk)e4!q=?Ls6ald=&*S2Tjz z_vmvJq4YXjjP?oPH*&5wff~bDOj6I(-&+rN9BlcM0q1WoXJ#Oc;uK&LWXetCG|#2w zaB%o;|M?hLug=>6mP~C@x2FNkflY<&i$TinV)XFhca8LYhKnR&HZM^_R+mfiwYv0g z9(e%oN3W3_na|$0k1ahud|3T12XWhs$uky^-=Xi`!8*8<`@-zjMX`*NkU7gcld z@xg^Jc+S@0ma7N89jLlr5d2k!OP!{GbvE+x<$8_WNdPrHM~OJT_OjwT^oHvS_DY&{!bmw|XM!=nQ;9`-b6o7mzYeN#4Mhy1G; z=_1W%LL~3NI=QBKVXYfu*5CS&g;`;oIO@Dil`Vpb4UFxEOHrZSg1nowJRMe}r>otS z=0Q2nS3zAg+Foi|cyEH7nVd9qP!%j*sdrFBI3j!&t;RKI3a4 zk7XUF1V|E&7#MwBM@#r_Ign0&e{e{r2O`ja%&-sd%INhX*}l{}Hsc8n#n&-_-gkk+ zCr6uV`V4Tir>2emnd*I=LQblp<*>Kgq3o@Jzrs#MT&^!FEta8@=&=g@i#?btr3l@w z17_9s08>D$zwS1~u2|E0A}TF#9()Kfaw51(E{HaO9d;$2g)(h)Iv9{>MRtKq~dF zQHU5s&yHH;l^TWgp`=zpdG1?)(0_~?oDyfmAW-iv$J7=g9wIj?-NJoN)il+_7YHw^ z=KRjW*}LE;yu+3q#dG1IePec#ZNLGiG+QMhV%vruvLzFNvc>@$<`=Tm70y{m|B+~5 z826~e0YZ8JNDhXFXsjx>HuaG)iH^wtSp%XD{OAq#mmeKx;=;X~a4FmlQ@dCbvssNU z*#6O+cHt#2LaOti%jUhF5UBeRf-}ALsp33e8S(5ezi#nZ`G=&!Dbu4+xh_tHR@l&1 zcy+-98G;kF(H@a*ZCSUijA15^LTNl5YJhVc!?&`LS%-d_U!PxK(ydJQ4nFq~0{2T1 zHmxFBur9A3K^$`0N472&)a)981VC9CB{AiAH1K02fiRpY2LUxzGaIi`e2sv2cBP5- z*@dJRA8gU5ozbq0DY8i^!(C=R! zSsESR5^sB-xbpUHIK%5SJ9l|LrRBJV1eRk#A2&}-!pV$7)I&K?r9$b!Ew^?PXa#S5@U7p}3P+0F#Fla(7s7o*T1MdK zcZTmfRo&PC(1Cn_bPZ_Rg)~D_gb$md2gA{3n(Z9xUfL_*-!;t} znd+}1I7|kKRHpUvIdnwMrkV{B)XnNH`n=bwXaKy6J&qE>e#bAURONkbeqLV26 zx;1*p60g?^a#>4G1VVqKl+i@S1`80IJIdImY?%SdVNz_JmMw4>6}R-h|E^1`@nf9v z5)V~>{rOT**54M|WHB=5CQ?Db=ambtH&V>#7lY48m91ydgVPF_>RA*#-5H35sWPPy zA`lp?_m$5@D5wadS=fdEzmVEkpx}|mg=L#Ivd)DiKyU-S`}9Q&5!J{sG#QJ+pM32Y zAEWIoR{FX*j*S9|w8&n8{bU?8puxuqy0-g&Iugc^_+u?$>%?nxxGmx%A*2N`fObZB zD=+=O6zM&%VtWp=d5VtE?plep=hQ6Be<-{5vtzGOc@<7jL0rdIsBQ^Ao}nX)CuO&6 zy4bcl^TlSP(_amgLGP|fY$P=L{e0iLkN!Yr?hNzg-p%yyTTclMUjRX=1~#y)6^wa7 z=KiMN`^9CKKfB6gyh$vV))+h3V94cLjmOozI5b_4M{7^;1P|&kjBbW|v@zOqWGRN< zxZKp6AXgNDV2=(3IgM&R0i!in&&Kmv3KYJSE)|WOYGiAmIJCTaL6p_>_AYq76X;4%5pxNs zFl{v)4k?R>>Bat0dKB3XFaw09g^~GvZ1LL=5m`N!roIDil;9(A#O95v9+jv-H8nhZx zOxOhhMoO2A9d|9xPAt_;l%8!{{0p8z@k7RgLb@*`b8`;6p;)|kjWoPX{YYO~gwjh) zJkjGy(cOzUV~ko#XrFKn&xqig)nhybTB>m~fjQ3Q^Wbw?{MVJ2N;(Z&vZ*qqNf-Dz zF!!}A0H*VFqD#z$Es0d%ZIei03=+=;(7Xx#npTd?e6xtEwq)&7LceTXT*qtZTfcjTZ5CyQH}yxkDRL7doz? z4mT58bE!DNg5Uoql8cidLoa#}<31g1?pahIdhxg~(w+Iutdpa2YI(8BRWqHAen8$= z&!&WBFZEmnMA$k$P&FT4Z|@oQlfA6P!=<%wV7G*uzo>l#IXt1a&6uIQmGYzib;X( z(xHQYo#JM=SyQPQwbJaf*0DLOFGrzkIXX7|FW|3|86x(@p&fp|psL$>uqU%x_LV6{k^FUWsMKYqc#!Iu-01_Evi zz9P~m9Lc}Y!b$S|Q98&)z3l~Sv)IyOFg5)cR;5Bh`eIcD<^b||4aS;VG~yKhfH8&@ z;d-%)h+hm+dlzidZN4kNc_pg}F91lO5@I&@7*=QcmRA{)X>=mKdjSZ1-dj+_Xsl*- zC4KcSv|Wcu3OxCnR6gGj7fP_NM2mWz!m=JCcdx7A-v~Dw;%arvLJ0ZOn})JS#Jxuy!YLpfpr`^TU_7m-ZLrD~_nB-K* zOcfTGE^Vbo7mgN{RDyW+cHe!>#`xFg*QM1qs~-5k{Oog>*`kNszS_ zx!#&qsV}r;2Pq-wiyMjokumDj2S4plM`pSJ?^1DbE9jl2`0s8VTiHKqzPebdL4i#t zyJ0K^th5ONGF3u&mQ0knQ%ml*pgkqF*S|e;ERcfO4A}K@=xyX%>PPDEz~=%)^6*3h z3`p&v#-t#x-J7eP;wv0woLVRO>eAIQ<~oPq#T$L$(22$DCv_E(al)?3WqS+qRTu@k zzk4%E@^jR4azp}y6vqwSOLPO3j}d5(5ot2N*tv_1H|h%x&<52Qv!_~}IF0#g8DrvD=Wm}dZGJKQ(< z0-S^zi`hzl8El9x?m)Z?avom1IYttXokxsj-2UGPU z#2M@aGCEIE1W9K*>1R@!b_%j2x(R!!K^-Z0Op1Z?&vi9GhZ12KECA2G79(yCLGhiw zxWP+~z*#aaU)Hp+Tx;)X(ofjAV@klSTT>8`gCQ9w_CW!w9zx&YAV2X7l1i)ml0X{M z4_<6>gCA14+8%NQ+mFwvXxPyimXGRCI~8H1s6U#OQHw5!8eOk zvYRbs>)kk<&+uixaZCQQ@Ez9g&qiL>TfmB~GC}oGQ*-B`Q#KIyc<%I1>see~s)>|w zzDrQfF3>Y+z6*Z@$Z`s08c;F$d6DX%Pae41u6_N^h*9X?=ZFCLkfd@!4p8=z-msDv zLh-__1L*WHl|SQT&Ylm(Woz|-w~S1m2f*nt_!6j165=J!qJBIKUPxgemB2jcxgLVl zDt4#ZTt7dRGwN8LO#0tH_H1u-sz?MR&1H5Yn+#X%pWjihlUFt}@Q4}_sHNu3jw}Q% z6Gp=2+P(3vrYZ-VYX=zQN4rpTx1?CExwsZ?O-$Gh{aT2@NazN zmDIS1)>>;lN&=d9t2E|>C#XW#zb%g)FSdm;qPivVhI7bU z^s90fGK-5+Y_voOgS~=aI6*EF@Q?3W)zfmtNw-3WS;kPVDz62brq21oG)tIfuOhLv zy2e@**22Z3R@}8 zu(NNvhr9HpimhDgwY*~tk0c}%bGUWx;U3>Swmse#jfqr}nzs61W=NWhdhKL2<_A+iPptp%L|Istge?F3% z&dO#+!-y}ZwOx>`|A`VXJC{1HFs(_w?u5K-iYB3Hw@G^zDL*F(6cA0HY=-)vIWm(5 z5weOANSPIMermGhNZiuE`UndC*P*25>e27Wh1-DlH&@(JZ0R!}=S~sPt1~G+q?!jm zVV=s9}i1R@Aa2839$UBo6 z-CWFms`0QHu9jlyYLXn$nA`c1u7mGA*BH!KeE^T(gV1FvjUdaTD!bH~A_rZhgT2Ps z*^=s@Nog*;2tcaL$0PXTlKRqjmHn4!_l8L&a$N86FxJ{=34D}joG;YQT@*F=MPzUr zR4_*Sj*hK>S<73$FdsGTG3E}@Mky-DYs>kxY>gp=sLt3si6sELKe4d#iy1iqKlahG z=F(RBA3hTJ1&7?IPZs16^8ZD3HIoZWfHFarIW%`k)%#|LOU_bqq1s?QyvpXu*fo5I zL1IossRuRY+9RnhR^k=YkWEwEz@qIq=VcX+@naoU%!1@NVB{vIeuQAC9$j~)cr*Mq z%QW>b9II)LQw8 z$OJqjW>gPyIz}^jx_AxE?De>Fw@_OAj8CCPn4{S3cNW*rPZ1PW@VRaPtc`_4CS&dh z-85@+Eoq7$E9sqD_otPCi(T0SiRUsr{Cx&5mSN0T5pP&NiK9lY5ZG+&no$9-&<8o2 z8h@nm?1`(m5-`G8`c>|Wq}%?X+8a2{;Oz@|*i|yIXo2J-g*c$pbUVZ48FAH-VN7hy zU3HyVbaX>5Yq`?2*U$YMwQxAUL-1X2B@%t<+R6;&`(l^vvo!DJ2*ZXb$wa- z#B;I5EQjH0MzIbm1Tzov#a`Zr0rY6K0+aq_l~YaLc9Xp1MAIB2-kI8T}eB!VZRU5-%cJX(hM2M85OcHS>hFmvI6^wpB zz%-us&edui*{EEQ_+O6Zz-+8KM!-`fj@>2Z(-I*fZ2xMyf>|uxSHD6yG-AB`mjBdb%;bbh(ww*|W3@sU0|BREu1(4ri7nFU`xmVL|8KghLK zT9SOU5d%H+h6%KJp1)d6IMbCAUR5`1R`NeR^dVbe2lA2>OttDERg%VXQ672Nx+4sp zLUOu6bhbn*DJl9g-ce$I&9XwxWMxvQj<$;p7!h>gt5Y%yhEri!Et~4J>eFpZ>Pns{ z@Brn58VgeX_z=Z+lK@sXD-D7V<$>Yx%RHq>{X0yHdD+kRmVFGA`Fxu-H0Jof1R;Oz z#h(~ur_IR!-U)GOZ$k1@=O|JJhN1JrTF|f-&g^-g%wz;YpDpJc--VMENN4&p5dJ=7 zTsFxWU(ZGYw+{sE0OWFwaw}`MpojT`V?B>3JE+4trdK2oRdDUA2S{Ns3G=+*Z5ZRf5i-m z8ZZHR^p`KuJB+P*u53{!lDSUG-5q>bB+-3LcHn%V?BwE|*dUu%g(#{IeDj5>?(G9D zIL$bD1n=`C%jXdaRm-vyf&L$6?-t>qNdY=%vy|&Ghk0Biw)RPS)MNLgt=>2D~+Sn-r3|KM_hwW4pVTZdy(QTHHZb;PR7^L`God);j z+C_ZaaXnKgchu-JMGV0g_E4*FH~dW8Uztwz0mU=skeoZ32*v&mPlbc=P}M_}lbvlf z&4@7o_)pZmz`8&Hm?T$GL|>9RK@L6NiJ{3P>Jp<3h|R+= zh#fhLU<+k<>C|Att_v(XRK8Em0FWfdI$5Om+ofQ-Ma-(O>^xbe z$$z%wyFcXI#sEojlnL+(_H#C2hR=UcHbXYE&?P^|N6hYe-&EKHf$7~8bqCAtyqH&?W2_%Hq3P<#Nz=Y1BI{$AwN=nI`uRV`G_^^ItEaKF$tQ)V*~P}h0V zhcjay>S~TBRlZ}ed5px>(1uVIA{b-$epK;?b>65iB}dL>OjOg@rr@b_nQdokRHp{g z^OE*mT5IfEfgQlR;gfC*H(#xlnpFlS3)eOZIUSVBo5ozZ!dEpM7tf;<-=Ru(qiWWs zTx<*#%(q2K+O3Li{9L|@4ILEcfa=2g@x3g(rYvMz`&}W8qS&!ab&3GId&!R@#l@estFaE2`_ye#?YMfk(9^$aOagmCoJZ^-24227 z&zQ0V%oe(9)!T~eWLWxDz$t4$*sw)rqq^W%ilcE;-877rA`nVjmoe{m8N*hZ3rFcd zXb-#ckdejf9>5|COWOXOy*T4K6C8YkJd1RQI%KXECpviVam6Z<77DmjLv|}{e#^FF zSTr=|fNB77abizo^QLWtBNhd_axF^!(!-S13+wm@Ke}9+CS0ET_7-tQ?I;szG)yFU zWQ=j+;FQfyE#f(_XF>h_dC~n_*_xy8xgbk+=X7)2pN&d=`f4S;ew#k}p1n*VVG&$vn`r9|D`+Y)9@ zTq@6~^Be@b+oeb$A_9SJiU(R{sW>uMqeAnu=JNccBw186JvTPg=7o5e)O3miBB=T7r#+C5wl2NFRLBiY)R3N zas}|+U4$lxfH~B0a{D>(U(XkS`7K9;3@;JL`+IP+Q2@R`At76tnjG3^PbxkM*F*GP zadJMYkt?d_;nNTmZ;;W}#SQw6YG>QYWRn)dzKJ|9Hc%1_CjsHWp{gB2>?bo_=!E!u zjKHcg&r#omSxR#;2)Q}Sis7vBabo&Vs5ORgb?fJ^?-rpmc%NIiP6x)Gkmv;E4A6G^ zyvR&WsJ8`*=YJSv6Y*XDc>Cye(x@6Pl#^Ov{#oGEuZ4#kOBK>0R>_cPb*B!U@WcH# zw=vT#bC)LOo!UDDFVP|hjD>cQ2gUD7l~B8Q==Mrs7*-1R=mW3gF+dS;(`1}c<-8z* zuOJ=r$9+tSui@Z!=)=>cI>of(b(Xg!yOEImen;L$3W1BPdi^V6x>PJ}sI4&H*GHdE z7T_L=uzE@KA7N1a+1U0<04Bm0SXRi!%+a#O^;u|L}ArLwk|NjWYRXX;2v}A%wJg zM!c3OoBwbeq7aKxcya6w`bnA@z(lalGjYJyTpi`-h$-EuD%fH?CgZfVo}2&k0gqZw z6|`Xj;E95KRz8zlQX^0RoU%$9p3NrbQ^iK+o1bf{1B6YB#2|9@OP!bInSk?7O74g( zV{j$usLh$Ag_@i^hH8lq?rm}>Hq9e`9dh1zN{0v*b?i3+q}+hYhLF|a72fk~4ZP@&= z{!0neYK{+9O6`%ebmb19@n3=M(NBh6rGbSJI;1IH(t09g^6wjc-QD`sLN>sMgIiy5 zL~GuPF=^lgFq6*mX0^Z#oSY#fA8T2Xn9v0jc?Bb6wJB0u7dS4^;mDFgebqXFB=;UY zK20sh9@e-)_e?#>4We%ou}n51UAtKyNWzIM&RD`U*9$6&#CMjZ>V2BsXJ0K(@+403 zLL~16V*~OaN|b2rQhm}D+=lj*3{yrqDrn%%=68bfVr>_5815%BB7(x{Hj|Fpinpzs zF$=)zvT_H6bEZskfl{jO1T8v%1cRrujewYA&`XyNL@Nsn9F=Z0l3iS!KSdgpSE`;6hmXv(%B~vZQt+cNT0EqeIMIG4H(ZAg!l?32=6O}sG|V^E z-6}7HdVOqTv3;O<@32l?le!c~G$3H`BU4}4*`LrSOi5rCR-b498k)+Cy4M?ehN3>C zzyjB}s8_kP@@yHp<(tQ-1pH)Pcqv2O?#8tTgypFrg*ls-b7AWM(GSuW>5nPwDWwMV zt0Km}J_S#vl(`;wI5q*lDDioFm{(_n7B!TrjicIo{wFtiiIk{;Q#3Moo&!B;t);xl z=C}0f*b81h;fTP^V*b*;16f^Z*n@B85WgE_S(nwyHMqog)w12=rCgv1F^Q~K|i<=l**~WB#qk%9n|4Um^YC<|2R)ev3hjok7~i@3L-_>ef#(C_@E=O_w#&3Ph*a@-J$& z!^|#nUyx?-$Z`#YKUGISpLVYfSgkKneZ6ZxRhTqv0eUD!#eg4Q?Z(nGK&bfg*`*YU4}fb`oZq;9>Zrk;|Q0!1-A-_}Of7 zm{84&xAM`W4~_7;z!ka%A6N<%xf*h_`5M5g=2{m^&!++k{PL zMEBbVY{D*{%Ruf1Vrb$NLBmLXnRSHh2_Fxl;SdvjM_C(o%yp`9rbbPBVf~l~fyu&r zfoJ_ZwdCqvuy=O0C=DQZ|8gSfvn+f5%Xrx1Sbd{{&YZ|{?taH>TkA}6 zm4dpZnADH2(0h~#=#AtsQIm7d`E7B4jgqAL_ygvxBMLS}R%qwYX^V;f-P5mSY_ew9Zs`fA&GK%p6MfUBtpR7+5&u+_$_1&-~5U{&|!kG&xIFC?_ona?vHl-UV? zL^n*}3~6#cB%wfD^%33R8K%s~v(`^2q=a9l3QvQ^Y1I5`>W@uEk$XmtXrP~s_D?mb z@K%2V=Xuv_YWn;etlG?Y5McLyE8uAed%hk!6&{a9ZW@sA#+Vjdka@~Na?TZrA+;p; z`pcKVt5IJfb9YC8a;;oRLG#XxI#wQAQbnCzNM38pIyumpQW$=yN&+qU<$Qgfpx?u;_QQ0_+HYKHmp5|)#uHB5DS4AP&aBqv z`K3C1aXXN<12|wAF=P?BWgw=Nr9B}vocCxfj1*zSX)v4MW`(K3*%yPBGl+^Y3&=Mw z_mBi>&3Tfeg}2Ejm8$R73J}70o1xn0Pq1Y zXH@x`%(`;KqYRsZk8PpJr}i=LMSi<;IQ;d^-`!F~R?T1}CL-GX{qhC6B% zb_YZu!p`c%K4H%t;>elQC5!hRMpv{G&%KBz-*#GfySBiy|2rV{f{RU9i!Lc3dF3Fq zAQ4G^^dr9k{U#JZBm|z5#tVZG?FzgnA=^X~EkiYgahFA5X$b|{2in5?`b3LB#qMw@ zK8f^&;!d^d14?jRNV?N?-KB<^CXY(gYo!-s4=$O_1jyMr;lOC|2+jr*X%PsRF-DOR zigTpMU0;$z{|PYlCVd)UG_R4TU<6HuLY#*I!sG@o)Of(87HG(({{XoNLs6pB z$L>cdAnVeT(;{%ISC?yiS1HK&$(|`6zg$2v8)DRX|^pit!YO@?JBP9i73mBeQ6f?Cv0JO`PLKx}oJ9$tFLL(#(Y zU5~pOigvbF`59zV7hFA&FMXa&&q89 zJs^y!%@y%ESSM$E6sd_21VhL42SA?8=3PWhS8TVtV>nH+n6F;{v@>Sz?CXeD_M2G& z<8uBH4b1MmWpnnG?P;aRN}$G^L=RZ7(rm}v&!EgX(%IS0CUP6_H7m)C3n=I za2PO|dAwT>=^r1^4sc~|z=Y?MItzvEEE%&&G4%qvHuzza%1rBfgujBk$YM#E4m0r- zW@Dr(Z)tp7cwC#e=bsz})gm{}k=10b7GD+!;Jb5xD&bX`jxwmxnEi16oDfNO*5FVi zT12sp9y(lzt6BQ+46wp&JNZUp*DHj_h~WJt5S1wv*x|4ZvhGSMZOI+oYY3@pcwtSP z7w7bEJ^@>$OoLjt546w=haf$f;f^~@w*Ndl}g!CL1vmz-jG~J-|sN+i<56y_? zwQhF^5Z2P!Jh;fOgYf5wO3+Srs?0S}u&lbGR@aro zZ(x3I0CA=z0(9Z~K8&p%Sf$vmV>ht1U7JaSiUR*6#PJy@~dU6$UfGn7LyU)OU7N zIm|v3cfDO2=e4~1P5 zzD=OhWMwKFyd3K7JgGmC+eH=?PLe-F5OCw7i&3b&<46gl>(Tjh7OKrcXHE{ftc zM>y%=FTt5WI>-THX;*h+5AKas`Ek-BOBcpH{lDyYezy}z0%)d!Ci}H8Kg0en^z+_? zJxVWi4p2>Mrj?~;jxpAsB|xj6-!{(50l9`j`$Jal-22E6>AIB@*dD4RvlM8KK;@be zcUxd|Rs)<>0QAXn2+HMq#3-k_RuvjbA0x1V){Bg465eQmYsur(q!o;AJaMzWGN+Uo zlOfyDCo)PC;DDW;@Lv3Rb=4)wi0j6{%)xvvnjrnM{{-9`&1yswhpm_)!&B4+Fp&t& z<wB6$R+n`1Fsw*ho4e+xO=e48&DX0HY0wD3c=>Ob@2}>y z`~a7WDnatcgBMMW*V03hd>k3~9{m&?TKU-{c+@L4n2mWD%nVW$MK*RWx0jHbtG_nI zSCq{YU^R@y?g^O^{;Nlh`5w^rcdNH5R&l>qe*4ss7xaFEwIuEQIHhIHmM$CX_3vUz z>PQ>s*1%0TlMh*%xBfGz`;y}2;zTLvA20Jm$i7`W?i0@!4Gt379jYOZU+*V#VmY*g z=Tph3nLj-@4AYC$qDX0E5ok3gd%>$YE|BRz4jb&`{$HYar&W)aE7L*I4cXR@sdkYR z4Hs;eshCt?PUMYbFFFG|iG-WGnw5=svfQQ{PiwgfC z3#N1T6wU`AjE97GgU*v=pG9Rr+UEp=MYl;1@PUd@(AmWp!W4A&J((e{rJvUC1-^LY z#tl=S^`cq)(eS~2 zzrh&w%*KpoZ+pD9d`UT*qvI}~p$UNDZ?j>l@Q$jV5#u_}olHw^Q2l-rR`-%TW-(*KS3BQ%&;fFMPi&;zd`m;zAX?s-DT|IXD!LjJe|UK?hqnmA^s*e7O64SFU;>C z-|6ho<}Yj%WbLADQVTI$5(w$spWQ{7xZt{s)=|ZlAfy?=iYr7q{F#>EhZGHSpCjyU z;O3`k+6mkVre!=V&?PsiT$*ze&d0Oznh?3HgXc8t^WWPp@&aUL`k2P#rVG@weW>%; zx81y*?rH$*FdqZRr-U}0z0The)frB9hcWwHuXmr2kU5w-h>G&hu)|$098@$F)u!8g zL%5l{P_ol|2~OEhB2z2u(Q!@eKXyxCBZR%&gi%5oHaN)|i=P-%s`>gyIPCMeK33=9 zarJ2?1gi7--jxArib3rhaUJ6et-?_@BdxCwv z8|HFmtR40^Imp15zQD0VVO|C0WH5$)zIc9mRFBF6cM?DAVKa!8?nrCDNyLYbaGBt4 z!8iazZK-8_v9DTY6nWXEpzX5w^_&$9o-&_M{%*dnl)B9}9o!*h5Yh(oJqgAkRb?<{s7YtW(QY@7+X6Yw+|O zaItC~*SLyoF16_9zjch-+J%&KgPvN&V7=t4Vl4c^s)HbQZE=dKXwsq{>SUv7Ku;u!~EE zft0xk+er$M^w*mI~J;;4NYF$tj|RgZu#vxNLfy?cTzhem#QY)q zz^>!uKcnj(SFOEf)3##pYaYnv`2nWZ-LJDRm_Y_;zntADXaq*cHu{@pQ>leu#L$4t zNT%2#+0T4A8Z4}0X2&@%PQ+d+{B2QMKAbGBU-Tqq2D>w2i~V5jZ+1IxU$o!l*g}{Bo0?Se9G@_!VzJvm zF9V-$=v~13@$iFS8*vv1!6rdYWH_eB~kS-NYtxjPJ&`3OXuSmtx8ra~8Iv$#=dp z_)#?y{S*=>C%G%%H&MFYzg2nyXdFWOC6sflJBjav9XbaO7_|WG-c1Lz<%h_}AYa@$ zc?W2*mnr>k7i*jdm>f9s zRR(M|Cpej&iWsSBx0kD`u_Z~1I_PX|D(g7;&*OpuJFqdor)^r{eB$dZPUi#1NWc&$ zhls8@EcK;mvu^2Eo9-rUFJ3%l~dPX;MiM6yvHARQnu5qxYYMf#BFG81`! zIg5V3PLo{@yc2f+gmy9#sKQ^fujg15`TCH%e-qV6c2uJJgOwIjp{|R!8E= zKF09@WFJM#qIp`9BZaj&S1ASI{D*Uh{bsT0Nk2tYcMD%qOoD@%T?zeGaUxHq#uTxL znF1h?t}YP3&{8rE4U~1w;Jzv~JM1mwl1I;fO3Q+9if4Tq0#;hU`oHiBJ2C0ViIMj9 zk{(krZ2GKiSmgXYuC0uObE=c81M7merQp52mB~!?!xV5lUl>{@Vv?cuu8|DUUlC4d zd|YOG|F{YY2Rpi@K!JR=_S8~Mc`AefQtzu zHGHvUm*hP}r{FSQ5x^E}NK8B=ES8gdkoCcsh=zH<;S`)u=P&|;wtow^BquL9`K<_Y zCLp`U9+fQjbiZDa0}!wvcP?*UXGNtU?k9E|j#Q|0O504ACJScC7Q86WQC%i>S;IA% zlpk|aU1{~SSJd@GUbFVWrk#e78EOstllN7*nZ7OWMalHEf-#7+lY*NuGhgyrPl*-Y zarZ=yl%OmF3OD)H-w>YfPx|FIh{BDHSol3 z7`e(>u;49IIlgduaTmTG)*FzNByPu>@-8!Q0A^eO9I65oBRMK$&_(GW_qHvWENEU6;We zIW0CKo4b6@|5n}HcZX|j$&niXv5V33#aK^f2Em-BIpvbE^vXTz9`%8m{ohNH$E~2= zhpjZ9VUxp)C6N|x9l?CtJ2&pc61QtcUovwo@&Im`DAvI7b;HT9=%|k%_h)*V9pa#j zQk>HOT0TMxFqZ}M&p|H;Tptky>BPqtfKdeDNq~;Oh@meuMusTJ(ii9Hc=8O&ACT&T zozB(+x;U)6F)8(%X*zB&?NSHdJ0-F?1|~syB#&)^@%w*?7EUqWiJ&{A@O?6zD$Afp zJ*r~Qv1fXq!@U7McIO}8wdII{;s6-oLVN335S@axb$rNqH_sOu#K{wMQJZ@0r>K*5~v@Rm082(*W>@Lq0_O`i$x)x1#fPC)YUDw z?smQ;I4Hx~xy`qA#?(FbCaUecy)bR)`$!p`sFKnOJKi*jeT;~$w;uSOKR+YJR_Bjr z9R5a&?JKhuOq)39E6g+$S{8)nL}l-8G7X3dcUQoHBT5$EdrN4(3g#=IZd@2ET;aSQVZ6dR zAp@AW8qMdAD*EVcd3JYVEgU{xawdooqw29J#@MPn5lJgNqM5)o_)tFN!J0nt2<$Ub znl*r8`jYNFU95vDJs)cNZstUZVBpGvA!mA|-eY6gYr*&Nz;x9@BF_}Tc zyon?diOPC{=0ghV9*zo9od?NCB=ldcy7W9~5LElTgg4N%O+jInOlWD0ne*)Rpc}>(0w->u-r=#vAu4_$yx#=eVi&f5!MSYQ* zZ#;sm38;H0ll?KgvzIN4i=YRAoB4+fnXnRhOWdF#M&=q-eC4n9gD}!>ddtuI;F;U@ ze!1=MlF|}x@sFs&IB0B(0G(o z=+07$9tLj+VF0?=t;@@g)p-XVyS>Jyn)jzG=0c2q+U?+)#?sYjY$)j+RWfGGZ2y8gX4cKD^YJ2=)n9ySY zWSp1c?z#+$3`yoHfeR+~TGyI+q6oONxt8D%Xm$@(B>)Nj$a+6pY06XL4&GI2Q+m}X zetri(#l5d@q}hiD@6UWe01fI!k`@)Kd1tV^Mq}~@_B<@rlJ4Q|k;a~`o$3|7yd>Hi4KuO`@2GJKwFnc^0M9`2G=8=VG*1C4`(lGeW^_3?Y)< z<#$o{NX0^~4GqRV;STT?M;OqS>P9U;@mG#A{l=)ey2K9s8WjE&o0uQXd}x37IF#lge1M&2Ql>CcX9GpmvxLchHRL&5KBDT>1O+AzQ)7j7GM-cDd!z0?2U3+n>~W9)lxqOIm7q#2&tz zeCj8R1iLNx!A%4Twj+A(V%yv$$5(;bi3avKK?W`tJm+E0uO6*`tuZ%qCr^lEhIdG1 zQt*^fq~vN^g9N*%)eEWfkJS#98_V)6zT|vbqhu|Eji3GmHlH<8Qsf|b(HMLhiAKph z@h!Jpj$IYyc%%5{t(JBuIqD0AU~%>=?|){^J-{&=ticTbW8r(p+)+oiI3>Yucuw|4 z5LuWSa=QGO80YMubL=dg(w?^w z(t8Xb9fl5iRqxABIsP7ONJvP|*0p<^Ggwcp7f8eaiVteBme-Vb`y);W5r-nXz8o&k zOSBYTz}-I&Km2p?OSpCIH!_v*CX>Kuj(Rueu!dzxA{+> zQoCbvk;0MbZ9^18yB7hj(npegxfvWAz}xe32`cUPe=;%tDa5zKOzvBYFfP(sI;^*j zOmf05o4=~UI})CyJ-5;8{n|xh6I&x(H?SX8+`|XDDwMEEi{JOSzi2?DJ%}8u2+a)> z!2#PyaKc=xXa0VMsSO>)SK*rAPk`+l+OQD0NA%kZY96?Lt)KtGJlGbV1ikikdLm+{rb5h8~;*W2Ai^KUlfS-E{CC+CAF!=|TciOJ4tXaKW8blgh^=C`>Nzy8A$R^v65D_Jxq$LTWMREx2=TWcs{Kd)lf>NRhfZ6 zCs!1DTVFfnl4YgB`hrFcs%3#uXd){@YNYV}jW8;mM;1#PZ|oN~~Zu zf-|5VpEy}aX2w@&{F#2)^YBM40-5$13k$+BuGh&fW^F9csueiDcmvhf7W9V{m(qqF zD!fS5my<}?R~r~BI&c1kNLL+e3=jYTW|h>7&ou%6m8)-nqWDGi*up&j+gb_7q zz?YCO_HPqu{L0=*Ios4rE<7jEOB3cIO8?%SSuoMWN5eYghu&Yal3WO!f3Sj?9mG49 zi2d5^7F<=_MbZt89@H#4gf>bYH*p8ih|0(4mo&rl!56(z)p;ZRsjhNaG)u{lz07;! zT|BcDa17Mc|1^oMnH} zaPrs`pc1fRR(=9)dw}SOc+6;?i!GB^A1C=yQKe8)X)Ce(mjqrUG|YbBjw5r)HJ)#B z3=Z}?qA=Ml6CQbFi6N29DJei+b^E7BkY?EHlXj{2`A(laQ-kaLDmtS>lRrAT*^hpU^^4vxJ>>?QZ0;?lhy)K3q_ z&FG9!FOz3w+NWg*9LwjOCVN=kUO;3rn6P+eFkEXr%Hwfw(}m z9|^XrH*f6FB-8TJiDd91o;HuRG-B&_z01XbRHD2LnB>PzF8llH906Rd$zjvEl zpz-*`W>qJdk`lEeoI(SVl25Pc(oaX|@eNEtjAvUyH4q(}iN^|%e+=j=eAlSv(c96? z?pRlE&EN*6gD>_&79kEuJSJ0V7TZz@ZNyX4=2IHws2l;Z7-PU!K4a~uD7@_u3>)Q_d$7McrejalM zoHd~kKn4WWV4z~3r&D0001+>e;3xZqt&$Dkl%owL`Y7PU0XdUFTuk3;ifP%QEHc*2 zoa%TpR1ul6bv7$ie6WZ+lE^{UBcUSLc-CME&MAdK6z$$G(&n0Awc&Z)ClI(_$+6P! z{E9G@l6`*$$T}UG^&k9?Ms&N3Q2<9Eg=F6t1$*d#&LI-|WJ+4>9jUWE!?!N4&WSF( zU-5S>Bd=tt-VSFttc31a0^3$x-$MOBBF^>Ig}@U1ejSH9e%FBF+M!=2zyzH)>|TwHG$J@`K1zkojc>n8(58S|(8DI^S~tB!LI-E!;0~ z9?i~MxLYSzSzvX@lv3zfEKYZn_-N)na5$H&qTsg>Y=uEfq@`%hCExjZGnwGdu&^$5 zUu~p3_KWiY!LYNeLQha-JP0F<*pZfo-e7C)x-H0TLgHt|(F{h(fBu;QkFvw1k`9t%g?)YAu1;cAJtNRaGv-R zY611doSfECjC)%Fe#pb0nC6dT9@jH2bRWPjW~NfLaVTmkD<#~>NTjH6(X-8^mPL!v zP72xK7~gRUY5=kT(ybbXoJ@V$^Vq#%ei(#5%#C@ zXGpUtSmCtOZ?WH3UFLI|HM^DtH zeTW*?fB{0cKg<3FZ_QEhk<}{3A%O@e8|KTJp++Im@bE@MIFLIW0g=Jb4L)_PDzQ`) zPo+tJd1rqiSp;d_t!tC6fYhpg`0#jH#K7Q`y~KCV>Cm)tfSM`}LasuhCpVu6JNi(% zOegNkIn3GNFDy|#V3?APlW2T5VtMM5u7pQQR|F#J`%Y}~94n`#2pZbk#@H5GAW(;9j4m*6NLS3J%O=y*j3esBBMIq)amh~IMSSWkl=(Q7ezsal>05WFy-mz z|Nf|CaET@4I&D7R*bS9D7I9AFnMU9uFjS!Gx9l24Sqo)WAOxE0ze?ilK-E=~ zxcPhpf~Y0nI^-L?gmRme2F;LHGuPmmI?!T&coJ7ll^*WS-)`CgrBH*yti2IkvnaD_ z`Q0JpZqmj4nThTK&|L2DV=PY6X>_Qy$&1hz3GRz=_DLD4H2L8ua08wMb|8b%dAAoA z%>g6cizF&gIdn1vN>T9bn8be%aeI+$wF(x^uC67sESo!tE2|4yMdmm-^}ok{BwmCi z^_06CvVWWal)ZIDB4Hm?zlGZO2IiC1OsQ(`Yws!eF&nqzQ;~hU-rexiTkF%{KO=ou z2;aZHqIMAzo4Nyc7bT zU`)jE&!OQ%YXMGZ46({>e39oC1yt57p5#s-q zwvis-vxHRrEF=LvEf%18+*^2Cgy2gm0P*k}9qBW9Z-}#D$*CJ9n8i+bv`#p`A#EBh~ zO_!>H-Vf@67HJ&$CDTss>(RO-)+gj9MWVou?HrL{vW_FxtT4QVV7#ZtI&i;3$O zgqG=9S?IDPiU@lxYY zVVeegqbmuO&9YS*P@+M6O=}jSFCq)@OoaQrzWm}z?Qk~r{xzG!oVHBY{>-n1x(%-& zSENnH8J59vecHA1|6IA3&NmEuDY>#xTolZaY)4PaZ3u_rJ58!y2V$Ef(7Jb>Dqpm~ zsPC${I1OG;Kh!4`mAQ}+c6v`{6p7%rVBPTzpE)d2H-v9U8n!I*!Or4%Hd|*NQe>_Y z9n3A+KNK z>`wyGh(>+fcTmy2d>R-yXaOE;*qz9=0bK{ETueZUY-ay2`SoV1piC%qrRQBa+b|5X zxnf$JG}I7xw9S5RMU^?kw+T#aJXB|TQHPlr;y?P0FxNL;=KOnRwJAe{Ty@1_%qZG7 z3`A0F*$9^HLplzI`9eLC=Egx7e2@_|^#}D?{7IH1my5f5K`{lbssdmMoVSqHk(;J* zG{40O5F&6I1K4DSI>EO^(Ps`eYw(q;@O6&Cfah%YEw}ddW9&EFXS|3jDy7b;O9?#BaEx`1Rjt(0$HLbMEn37tZ%sKBB|$LW zr2nDg}6n+Z~Et z#eTPobBsxO%=P_=p9oN12P$(opBltr>0J)yPW8F)w}jFB%f4OaaLCJ(Yu!9QR;ae; zXQTAHD7XMp;hF)CCa|VawuEu^xUco{B$8xPe0P9KYYhoNwOiH`DBhoAk5fwcy)XX=?#s)lUSXai z_-YJ2sC#9 zRk7HVZzL#AME!Uj=&c|CyCw!pU|DG>dmV|kj+p09a7N0soOD#`#KA!+gch+{G+vnk zMY+>*4TP4lZ&>-om&XU<<4)>kuhQQSyt|80pA%pIu6kkwIOr?KZod0z3Kp*J zP%@5p1ETAV%W?4m3!(WN&|%<=_b2mIv?Hvp}v@oMl$F_Nd=XFaF9!qz>Jqa!uVO9>W%VgQ`#VGOzSOzZdWC#PIi+Taxthzl1tIz}rxMj&jE&|TM} zMyZ(lGyy7kC3Ao0z%!4Sc#Ax_N9$eHAwSUf1;->WWn90A!O}5$`&{yCr|0fbMiM$b zAeAA;^HTt{>Cw0AQ9KIjCeaPop2D*yguisQl-aqXnIFhrOVj&>{a-J5A}Ma#VVl4x zQL2qF7@rKz1&;=~>W1rHzp$jsx}VuugQZobnA`=^YXT%B5wb-SC>q{)qNJ& zEs0YIyy)ZeGTuWO^hWCjJL&C_BU_V08E~0aL43k&w#*kn_QbBtRQ`UhLPhgTSSlzm zZq>$!4Mi||z>%Exv9Eg5)ILc>skLtnIxd$a@k#$nbdsn#e$)X~h=pZ+oNdQ8=$i%QU@bYkvIR(vIF4BX9mj|cGjHrq79+*(AM$V4|acGK=z z%D`JS)A5fzm-XR628HN?dSf0^)wQBM0LQ1ZE{8lG^p9?V)3qeb3=~i~qP*4qNWZ`} zYI5fBt9v$afD-oJ(b1>v6zDaApg_^Bt;*m~?qD^IIRQTu(4>+7gxU$pE8rv};~KA7_)<~a+H##9|Apyofwl52X5DNU(U?NGR5_C@3{kw;VS~@wh(9!$ED>a7bmIm5%iHAqC3Z%_X z(Y8hY0$9hUl324;Fq^lvR{7$)co%p0?T74x5$4IVI+o5trZ87iy5{2)Vt}^&>b<=n zN3)`kgf`?lL$q@gP5WVpX!LL-XtqWH=|h6g3|73bJ?CtE{*S1Rff%N@ z(_xUMs8xpzl!}d+af<{8bg>HCLuH zz_-p&M=&aSo!XESeyU1!MAkee%fNnXz#smY^#f7ekHKf7^6izyLaA&qZ;9~UPf zVpbEP%aR?-0d|j0PB>4_`>BCKqC$}}c%Hq@fObajIBDmE$!%6MsZNQjErlp|AdfjP zo#yFQMPA34s0iz;Q#BlE_YAgUPyiOYTRu5enA+OwqXw&*DXFZq zbnZ|~xw_6#RZkP$?QiU4m7>JVRTUC&=QVfqO9j1lt#5fnU*}F_cR=>|&8idtu8WOb z^b5Jc(1W|iL)vl5-OiB|`|aRk;FAD%jD3n2U)-@Z@canE`OT?=5$QBWz61`a!|)j> z%E?p7Xv`?v{(;4errN_ns2D`{GqOS*8Su(A5)FN-Q?lsv_PKXg&5Uj{s|eAC>`MV* z4%94b{A5!!SGOnGJ5Hq4c|p2JB04^7?PO8?+Jg_+$BbNy5diKRW$a&1sbP66yvnmw z4LVA*23?WmiF@-{uvSd=q>?(W*jQ1(o)hgOIG2|y11SE-8O7`gxPr%|9wL7#&FY)u z<@wOb|1b=#?CEy0Ll^XAfs(P#2b(j@R}SH>pBr8riL7jv`r1Nb4}El#P@Lt-x66up zD=ByAl^B|<9^0N6fGe>Jh*^gr?nu~kL0&XTfICuqQ{uUly6NO_WQ{n+-`?F~CaMUt z*SCXoH$B3$qMq;RLhEC>pw&87pq~zdVrR5+wUTmYE3N*pf6$~F-lNB=}f!$_END=AlUW<+I zg?OK>+FjnusWBz?!9NKhZzz&{rGo4r%n>V3f2NT}y5n)YAN2etP>?n$Ya!HV)8cV;bkGPU+3XLh9gJ&XV&NLK= zC=iJd5y)(Tu(+>X$v9RE;D3O*2ZN}a-7|V=Q!PFVIZu00l3`m+p9xrOvG_)z*%@4x zeORnJE=mk^wcHy-lKf|5OIvgXesY#ECj?baYViEZ#c(c-X4f+ls`qZrQ<^$dJsK0T z`hBwJySV7FjNR9SqL$S>yRZNgVRS3UKM6Q`a9#RXG+`r8w4l%&YHW2Q0NZBC5eU8r9;SZ^fCX_yJ~5(7GAt<4Y+V|)N^`#zurhIR zOxE0-yPU1kTPGF+fp**3w7V<80vv51+@ZsVNIfx;@3lrj@Q+J#$oevPESy!;Gie#N zf9!RTmyB&LSL75I`S%ElLCg4MbpV!Rf_}>8iCc=?9#tDdK2$PP!iDygAp{qL7I|?e zP)jN7k+ReH&GC}6c0h`wF2px~#PKY17d=<-JHJ>RZ1mDT2!s3oAHLiDMMPUDcR6x0 zQY5(-tT|ywLLSIUQsrfy~EoXZ=zM1H%rgoHrt=9d9-+)0~B(j^!PIwE${cUUVa``!8+sIdh= zO)=*XrWIUX5TkYTgY;~O#mK+5N>ooa2j_pMOnHl(xa)GHi~(2=0yPD;ebNY-Pu$ha zc3t__8-Vfz1eFP^XR77n^Q9}XXp^sW3P`wk0Pdi56Xj0<$3~MqsBL=e9YCJ@|436V zT3{;hi0ZAHrgZlifxMhoFFtpgyau}2ktqCOq_3x2w5RbfXK5C5yB*qK-^JXi_RILx z8xL`Om1=I>>)a@{+BAcb@dt1xTL9lzSaH3aiQ?jfKoWHiy1Iy?8lF<>K#bYJ2v2tA zx9?!4Pcs6=QD}*{etAw+lN=MoXl494)mEVQx2*t=IB!hEuf=Z+ zR*Yc&2uHVn%_^4Ea9=rnbwTP@?C?t~6@h9!te<&k>ZA^JA)~|5&%0q+#Pg&M3C#xu zU1zk0MQxV`5+r7nUu@=4u)Cw#*mL{qdx1e62nzJjnYG9RnnDeb4cm)GmqBs}QAPCX ztstBh1Hv>TzUn1EcRQN9oA)*i9pTJq%-~|BR+iM?%0-a5`~#N?y4uSxEEG5MyLbKV z!TRv{B2s>gwNN13JE!I-xZcn!&M9!hz><~gcOAaD7&irs8M2Skl3bZNh+t5HYFFTb z+ykLak^li{6tCu20RoMs65RNV@z~`LD>I!^u6~w<;G)?*6z$)SP!ZQzP1Z2WyV$m3 zP}HoS6icL=Q3Ri5u0ccaba+3@N=iU<3Jnb&6w2TfzkXPXjwABqL;-5e* znQs?2?ml@1N@O%tI?i|;;$Bk|*4qWNYslpjoNLTW=SjqP1&GLE?0RL-v*h6m!KkH0ndc!Sv=jaOxfc>S=A#}#ShZ}n}2 zKI@ASQ&VVxCc(8eHS|>EH=c^k9_bRss40q0}2$fCZx& zo-L{tukuR&a*=Uy2M2aAl8v0uEP9)bEswn}gxn<7=4_0M{)?||;AwM9i695}Y#63Z zF(1KcM@}gr@dy~4jRAhBNfNlm%~|;%_%0-g_~t=zYR*2L{7}YQSFxXQgb!EqUmD0wi8{;1J0X|2!|HPI{$iV)v*&wNQrPg8@o!aL{ku zsNUG-S_FU=Yhti-)_dq5J;rT|(=A@2a)OsVu;bz=EF3E%<9J9Houi1QWo0TruzZ6H zmV2SEu$)2l1$Mi6xNYY{X8O*9i+bkDiyot{X%aa z>B%n^mxI+hD3g@^1|C%C9RoX!B(x4W!}Aexg5FgsGl}8Ez}WVYlP_iG=6wY~`M}#D zY+n%S8D-^>PIdwZj1puFa=PbU9i{9;r7%5u`?DclxD@75A-ZL=jCsgyolOmcsS!^6 z{L%&8FpiTF7VsTEc5b$mr0ytuJ<_H@AXxyCL*)H+zb*Zcnj_@PyY3BfP}ofpUpnV{ zUS3`N*1}Qe=uDn@43Ff+@SjYsN$_^P}o{ib2pu6sB%r@dN83}|zMP+^FO zre~T)MLhi_{_G}LCqSVRXbsbh`Pk@Gi)P*jD<$VJ9lc%#Wu(*V8N_Xq9px%XuD-?u zDpyG=GyaqE#DS8hoXkR_6#6x%Eyblq;}dLZI6ei9G|qex8A4c_%-fx|9|m{)n$Ocb z-i31+Va8u0Y;Ytg<|y`_SyV)~Fzul0wH+Fv)C=;#vyLrY^IU#+*nWomU;P&l3w6M9 zuTJN$upAVBw9_omm?=>W|AlKtPrT(IesAHsmu>k*tVf6=vx4NQCInuTZyT>IO?L_4A~e=Wb9zN%4<> znkku6GNVOa6K@=cF*3wgP$v{Kbw6Y?=0Ltm9RUXweaji(0ZX`uace~tDw0-zmG z>7M#p5)*Rpo$bvfA9MF_CsK=gnegx}=cJVqyCoUQg+?LSV<|6c!onv2b*U0qv$+Ex z+us!ItKq&~c76@9yXOPw-vK?H%9Mt%RMG%-jO9HzO>3Dr7*R3@$wG4>Q<2jhDOa3& z{uqgnj~C}+yj=uA?>9N`jP@R2_+G8vkkPT^6S3LlOo|W4{$b zIA%)U^q|Wx(m(&Nz3`IJ&ZEEW%rNyy@A`0$Nmo#=<)-wDinF^Y;l1IvlGfPl7}9|? zvA<4Lw0E+OtxEJr^6Z(;#xeKYFd7GoW@Wz_-?EU@<8aD^lgy4CE9xoesRa|m$sFoO z3SDWr-mfOxIsI3trm}35mePSo)z9ubW5>B>m61(x_30ADe_;VqIVrF|e21fUZ{7C# z6jcz1`-)8=vMu=s%zH{uG(*`$_l!OxL0(iKX|(UMQw~#LvfZsDU9*tC%FOMrHHFvu z=i+N^;J^YTAfH#x=l0QUC2?ycAjF9qI1Si(ehi#p|HM&@8LJA0aJJ}IW_HA?etR;r zTW3twqzCRBh>+7ouM1x(t(Aye9yhX& zJ@))_6rB<>tlzQu1ML((RDd{YPlvKt;+i&AsZj9j z!lblyX=E9NoeW*%0^ssknufLJ+$dsJGEIE}-QRm35NH32>u=91z`K0dy2Pbg=3v*k zZExVs81qRZ{VbTjZonIS%IE<$4sy7)F8e>tNZsd8=lZpB#g^3eYWMK3>3|S(z|%@Z z*bb}O$Umz1F&Q{p#{4cy9k4-H(Sgt374uGOyaFa~bm1N{fp)5*UG0RQX1=Vb`mx?~!FsweD-J0E6T@fPA!R8_fz@H?A^vRj&og%A z2b}2LAGH7Sn=QvO*$&c|aw=?4dl=UKAbOmbReOF^6?1T6kc1_h1ZjtfX)>sPviR3kSlCdNq;f*=-IPozo-jgN>hIEPQ6q^yE9cv9DFCi zuaKRDl(2lXx5~(1kTVE|g9lCTKi|5l*3YPFUlOSG*D>+pwPgU>%fdVVwNpRD`YL=2 zM4J=B)8hPX1wk}S3ykPTBL~;jRdTs*-uYezv614|3W?;9GRu+k798xDMMG)7kIQ_| z#sEPt2mZu!2QnvhpTCqgH9ZW$v7aqJw5VC))LR#kZk$6If{4$VI;b{8uIO~=yYbd} z#JSTwVPH~a!&R+Kv=@0F~HaA+^0Mj*r%l3z}OX&TJ7L_ z>F5zV$_APb`Q}dff_`U0PDk69YvxCfe#fRsKPA5Zbg(il>-LN5|mt*Iqb!%m5^jjWLO9!4oYHZGyrx| zDbS$~j`&2+*JTGqvn+qnPQ|h7!_LFXoAa<{&dZ#ChGxKF#S_B z4F%1iev}`(+7+x65p50g!|1U+{}DH1!@WF%)B6ChxkJBHMeH2Y{rWTbi9xz9;B1*S znGpiyuSi2Bp$)5jP-^W1sUn{c*T%e~wZpJ#ATV!Vj?acobTDkK|H+QpqB*^ia%Lq_%GfC>qS;|Qsn|jrbShpHl9f6#aFJ~Mf%oQ<~dE~;SgTi z1y$Uj&}MD&5WRL-rhi(Bfa-XuWrGKE9iKizkY`=^)>7A!Zw=R6VfIt-VSd4=;{c9o^}GT$ z^c}`*TD%KD@?~|8YEOfTahR6M-(e^q3p}}MvmVr6K#_+|sig`CK#h|KFtHsleI-*E zuG9KKI}SK%?ey^Ns#~$NNM*|8hiI1RaZBprA35>a`%2J3t%)4~Anvds&%vqIib=Q) zZ!%c=64t-)FtOrxssrSE&3c$mE&4{z#~Ein$(y@Fl^(f-RnUiwm`U?^K?;b=em> zd7H?a6J8~}(4qcqCy>_l>78-RZINqw2 z;|zcu;_JgX-6cfU!Ul%f*wxjoyfnmm5aCzRa>zf3i;&&$=psRT!dZP_H&k5(#^KOM z^u%_Q83{Z$E8vhWE*6KT4^8iNqTWLYlBUVP|E;&ba*Q$$rVW)+FJ37pfyvPBDdZ@C zfaxHM%CGv9(NX7lsWH29JOtJ#Nd670e(zB}+Wl8Q)LW>?jz#3>$uJEV$rjOd6q zeCR-#^@wRwTa|4X@Xp46Vf?KG@-{Bsnd8gURK6g`1HhDos9kIdzlQ;1$uE~!LvKEC zRN=t%^02o(&`y;j5w096AIahs4C{V_u7<{VT$e6AF)1!VN?3vX37O-Ln0n9q7~LaG zsd2?pXBN{nZ5rxo>1g!2-0>=E+Mqec#T(6)cExQeq3BHGf!hzsT!rR2N|njj)1Y!| zy3M9$^GPo(Sp5_JwG@8@DYWc1$sB|l+QQ<6hq(Gy<6daAl*!N`#b`Qf%Tsn5Z!2p3|w{_Rsm`P zOzk^}IrVRaCT1lQYgabi=3yx&or)>yrTsif@QVZ?8CUBzI7p+Aof)*) zYA*?6bDqkV7jsisl}>PKcXY;r^r}UB;KVrkY|AN_mPF;3@A)zeB})i*krH3r|5Okz z@nyIBg{@gaMBc!9ksUSx`8Jn0Xwtjv@XY(27-HNjWSBL9`YX=kU zso)csdT~LmM6v7Q-jn9*^S)yj!$4#226nZHo1Ex5G(HPp+re_&+LKMye^n-+Xr(FY zknF;la+Ps{>a~_Yu(-z;FP1!p;1#Lj{CX`&p-G&j1&lIeu;_9S8+JeKO$Fw<7D-^L zD$e#lnZ9h=&BJKOdXCjV(wh%E z-h82-%cGHNAZlnxNQv z0b-ZMTIKcY7FFT&zfy}yTMMuq>GA*ys!|ij;iQ|6d3uX^H)y(S4gAMZ!t=Z~fhp(^ z$o|q-Kctqqm1dCPV!A$f1)#hZOXC*SfQLE@i=!jnRz!qCav$YVaM^AChMG^q1>8@r zevB*r$9(Qgz^;5@@{thQ$nqqlRbkt(l_LvdddK(sg_xEiRkMOAB$fmZ@HIDpr6g)D zR9fK~#%MrX?K6S=wr9;FoU=G*PZFT5J7l_|vH2>DwPgT+h6OPi3hwstzxU-R)Cloc zutdO+v(JtWjs1#bbL)3=Qg6nZAM&91_blnIyX5#Ey2TZj$w>stxEll?4f=@DLabX# ziU~@|nYTh144-;4^k`{!0lkMs07X=vA`+n1{M6bmp1!*kR zvgRl*sB}^9VNk^z@sdWg|gNr!HWE-Vf1S8W z{CtTor74Ii1D|N4JZGs16WutD0$KcC=y=y~^NN&llN`Vg@Uc&_m&31u=M#oy$q zYz^uoQA8PEiZTX;YwdZJH&MP>X}EneIZC0&X0%XFp?^^$+HBH5^}ed^J=%KfWM2v>ICV9KARH3z!CIa_CuafA@(h?1du4N0X%v`m6==v z<~jb23flo$WyF0ld-;)l02;n%&gK>#l2dN4Q>WJRK0_dI5%7aqH{DC)IJ)JcQE1j% zMuC*lk{Un5Sf`&x^L3>*za~ih?;hpYz)B0h#mK#2TUdvKsdkO{KVpi&@kGhF%p8OU z4ou+;94myon0&!h_{d+y0ScQT({)mHmA-%ciIbI|5^}6zoNG3emM~Ra=bN%B$^{!x z#lV;wP|C(XClZ=Xxu}s ze1w*`jgAR^OdYH=IDgHkSgMDe0lJ+>iKTvBGItXjvug{woMR$g(q0vRv`)L0kenAx zy)aZ4uiPA_d%~@FdM{CbQ&R{E{rChfidXY9`4N$*T@`257l*t_9-~TE=@kLx8!4?QH=3z+I z*g=(du=O9Zdr{ap*kvWwEFWHuiiISP|83nYlJ7^3+K_1Y^^^jCXi49mT4saIS~=Mq zi?^nxcs_uN2ThU1x#;&Fr~)GDb^@VireA{s19gT-+;=)ei@}CD=w}X8K``Mo zg{K^LiQk%-ci;xah;EQ>2NW*fb)YM8xtZ(1@uvx>n)F&)V^pH{WP z=aEz$Vhl&MLh`xdxO=LMuD=eX7*6pLBZb;y1=;0qjL(L%FO^~z?kQF4V%Z;FT&l&Q ze>`m3NDsmeCJ11&$QU2r$wTBeR}($MrOfUi)uN!|XOV6EUMwF90*1qF7rF388I;9| zTE&(ugowsn5a=H!)%kuIBsUy)2(Ey{P)GhR!y_xcMf#(v{deXV(eCN8q=u4*)x$bm&*>1qPwOD;qbh2+%| z5Xb>9Tml!6YKik5ivE&<7ZDYpXUjj%hO1=A^Ke{cZi$W$5T`3&mci^*$Z9>hE0A1S z(&Sv4HHX^Yi!2;lA3P=JR-9`INWlDGtTkBmqEOZ-9E-1`V<@tw2CEE-e2XhX_DDd99U}&()=eK zuFcYtdBb51(U7`OxAu%f)k+lR0%SCvl7k#RCC30=PB!8hZU0`GrK|oaNs8b#GgY>) zAvxSPrV$=e-5fdy9#ux4^PBMUukV$U;k?9NlPb_bah*Q@k8=H>HY;-=!|Rrw$2a5C zh>c*d358c(gaJ;bd-_C0emM{X+Xan(;_9;v(<_6SD+>|xgYI(=GL-u(HPBFFr5qtN zUyNuW+e0CRPC7iP*T6rVPl zXKhf}o(8|s7<-uCwb}_d!tr?wlBS)yDd@&TSp0Y#d%N3LxDXUy)>{J< zx;$MIB6<@&_3wtvMT@DKGYZ0@lfk3BwdX;p!N!EH<+pPPX~XMmn>@vT=z9l`UfT!f z!%pXws(mzpAmD3G&bi2X_vcWMGjDz=reYnKdpoqoEOBW^zCYa1yKulTS$C?wiN0|W zE~joXMLPxrv;w9GzkP^E@7g_U-f$8eZ5X6$_+Uo?6FW4$P=U!-=14QYO~CahyyzjdFnS(pL+pi(=(J0E zsri%e)b9oT)-1l^6tE9dVg7`*>obn5ACac`wB1h4-#2Xg&ldhi#)k(+8kz~qJqSUa z)7gCjq$wMY+SngfIH(mt)REXSgBJSn$Nqne{3}c*PceY5u#5J%MuwM8MVCHp{(f6A z(k8rTm&jtW(kec;nwAT#dHi2!QK9_pbOa3vY%dvHiqAG^QVd@1ds36RW$1J4&xr)c z@Ooz+5er*yEkY~Alnf*(ruJ@QHHaz;vU2DSirOvQ?^&FR~CJ!YbI9;mr5z zk{BI9-(P(_>Q`koTq-_4*Ie5jixm`ppJCJCxsSODX;&-HBr^JvJl}*vSO)B5L~?<7 z;D1DW?wg!3Sc58U0(lW+7~$(RvzdhBz=dgxL1|vNqXnCe%UIO$po6njJ2rJ7lZx3I z?jQR^z9nQH>0i|=OO+9*lqisuKoUI*9YMFVSBqD=xg*wOcAb_s$e4(06hDXb-`Zaw z%&W7m>zE8jTrfTvKbjtoTiOl-+#1k}I(8?acEbEdTX@*^kf8q{M4$oJgVRtSrYo3B z96SWxvc@-s4BQ;U_aaVz=PMK!eyhi^c#)mIUCj2j6US+0D%I1pUuvf3kN6~^ABXLoNEo}z7rCRjd>H>$i1dN}GYSSJmf z`R-2M-zB|ehKV>SSb5o4gRC#=F*!}u`qxesuG|o9t33dsXCeb#m*p$d8TZLd?P;xm zQ$F6S4r=LRds9FBah()`4tvD4LwOB{sFq?zA z?+t+6ytF*5jIP6!GFV}}=-qTGPsUN_>az7Pq_JMLgHpag81qF<~ju6-%6 z)d85UJo!=3{5aMq8`VB`i=)wPePS~kY+Uk9GEG8nB0`LhN#1aHyV7Ihp9RASSfD6P zG)%$=*>$+C673+0hRNa0gFKM!5>Id|x%j8`B|Lk$GU))N_BPOr>JBiWhP>-B#g&JF zj@VNc#ci~qdJzU-Hi80XJz$|nC?X*)*-?IK#_h12N^7YAd5FWobx|m3=$W^0)oRC` zwcTDLR-z^PXQqWYB@$s>NEHuq!@9F=c`ANu{S2caQe*oRHzDmSbTn zPT?`C?1Mgy*y{Gi4fng#&^;uYjwkB?TB?!SYY($Sug*jexk%P$Dl7!A`1fx7EsoJ# zlo$v+*!8SEIV{(pH_Z#r7z&km_0raLOGv=P)eTNpqkpBQt0W1>m>y16T8&LHNpaUn zC5Lr57S4V+_e?0L#F=gK2CMU2e2f!1hTR+rG`x&rWHusa>JKyZzo$B>h?XH01!$te+WyYY41BecW&lNj zMebkZuySVq)AFrukFHhK0^1ROph^vV=O{^c_@C3Zbj60SoZqqYYflBDbMbRWeo@I+ zhpVF7uGCezXl_^$f-dr&CqyHv5YKqT5riOy{B}nSw|fU14wmU!=kEZ{FBajQq3}J? zBc!fLSQK)V?sBYI;VEC|u_`C@nach14M;EoMQnJXHE+kAg`;``iTakwbmKfkuhl-{ zpTl^WZTfT9lbEbvq9$zkTcpoNX{o0oqjAU?lI;v}uYCXMgFXm~huyzaBb)$mnbR@Bx5B zJN%GwC2~V$334nXZE)}IqBQv_E~Ygg)hGsy?oFNNqPJp`!wF}XhU-kOguIVQEfIk< zo%mn|a3YK8IL}P=&2H4#j~C)m7#6-9m2JMjmXl=4;<5HNU>Z3*@_@^1j#FG6_f|NN z)rG{Mf8WCj?7wmDPrn&OE^pZy8vVcI&*2!OJ?L0&btTO6U>~CE zwF;b6fH8;dEhNrT-GVCjk(s+}3wcHfO=AM}Q3UZG_@U0LNLz*@10jfs@+r%@1N9$B4w4WPhP{l9;U@9)xw!d6NHQm7IptjUe#_yHd8 zS2z%CPuet@N1BZ&<1IJ44VNNW)o>c?mcyTVS(IT_LMNKz#|556b-uxqepR+{8QYIg zqB6!kB$b}Hx|6~w7R`z41QLFyJlymkSI7W6GTB<7l*s1+4fAdLh0)r!fVFu!#%bLi z$+ew5gY_!|Qa=hJZtZqbPd^H-pXT0=9@=Ys9tg3;$v$tm$)d;dgahcE0rsYpyc8b| z%Z~@3Y%9u^T${*b5AbDBxbFS|-Go;AV2oy{k#u(LA)D?a89WjjVJL3KiwC)JW)|wW zTnbH9ZJ2vRtYE;#lG zn&tY_Lpm)c1p9&Vrl;kOR8}9`{7(6hAN=R~5Jk;_-Hk}o(xXbDA>ulFTmJmo_f~4n zKz$;jk{-d+96gZkV1HJ<@Kx{rgrf*!?;E4q_=08}P%-}TC%4!t*b{^!cYn;J&h}`c zyAG(*;M$CiQ44`h4isD2z+Dc{#ORu;$_>gyV_VA9p)LeRgBaoY*>w;bj9YQoa; z^~cXCzt4Fx;ib6CyEaEwDFdAGc&SVOU1hwi{|rV(;3bYs03B__{!7OUZ(5<5jUF6A z@RlARvb3A~lMWuA+82#QP6_NnL346TMG?h$IS-2RdJU+5i8Bo-RZhVo&GW*QAxfb2 zD>Npz6!^m{H#oU6QRib?Fqy=8!6K9N0Q8m7Pi|cm>NcRm%a4w4w}09|K(f&73FA80 zld1v+2uXt6jel^ylna;IgPHYp{Q23r;l;?Li#KNShV{H%d<%Z=#^nEg<~X>DXNvt* z7WfE&oUhJ(O->9!|7DLp`BqmC6oAH6MSP?SwZY`*3bEibi>7J-gLb;x zFN}QUhVp&V$&Ujr9N44GRqen(kOB>8#cQk{P2j1LA$vX4k391#r^a7<4GCThZ zMlb>*GO5P3Adrwd8uc*9kL0GA^Z?Pz{ot{>M~S9{RUYrSK{crh26fAv_`Tn7_-W^~ zK_V9=yrI(HyHK1He`%WyVO?Of)_4O4&*)BLc)0bS+v*mdYMACs4jpD=FesPgdkzhBOtL;lRci}Sn@z3Eu-D!+dsz->y7GAkr&3hBk3kL~E`1NP9C+jn zvk6wfnB*{zZ`aJU$cYwkMWr>sj8@aMy-X5rx0p(T+p(zu+#tc(&Le4n1>r~k$|kZ$ zOaFj=m$-*)knX+zKC3>dA#77?Nm4+o%$cV{_MAEy*AMe%ctUic^J5MH5Gc}tKWvv< zR^)j}T^dk54MFh&A@C+wP9RDF z7*%U(2**BVFXzCVGS!!B<9^X9LQeaqrO4hAJ^8mgw6f2&XNQan8w{f=Y0Trm^t|$-l}`g0 zfP{%?3rz*<%x$WKEUI(v^-~~K5pMS?`Z#lXG_5pT=wGk^`o(ZlKImXpjnbuQ^qrht z85SFqi_Tg!3IR_itqG%w^OyuQlJsbRcIb&4*M#7#J+He-_^r(`{lu5s;M5RIxnK&{ zzhSbVD;<%C2dKBJ7mLSW_=#2#Kh1GwLZ;Mh{5a_SEaOFXmCSV>^Md)pCs=&aR9tw9wDFhHOjtn*zg)IP)tk{9cUi7ETpkhzz7_+fT)M1| z0#&CIN{39Gma^_=KQ6iM&*#z}`4+r0eJPB-?~E_umk$}m_Au`yhHpLLFh6)%ZcL8I zl+PleGRR~A+TS=`%QotRq$9E@$^UD}jb2F%m(5;Quw1Bg^;~?Cxn`75hs9_1$F`j+ z03<$(=)k7}xI25;U^1t|IFH40@CN0BUl_Q2Upe3_Yr7>R2GY7U4Gl<_TKS(?!h@bW zcH#dtVeI}^a~dWtti6@{J~W23c#wd?6lDf|U$&)6M>HU$02scS$^Xxa<?#*=$mN$edES(Z&fL;FN$E8aEP*@H1u!li3xEop)rdhkjBno7(oT zp`2IbUwrhz(_K%@BtApiS8IR`BUQN5;`x4oc(oRZm&t5nD5)ULmkQoz?tIe5!-?a2 z^HPkK)x$GLwQ%y35j-qxWn-9DGc*kZB};`^IdIfXz`1?9%iyXxe|=!TO1K!0&5l zdR}TykYjSh2Nbv6_viRKo#T;Jw?zyt8eV+nRce)S2f$q_RRwrI%>u&*JpFu=k#Y7^ zMqSj=X)GR_&0A)nG;tNzQ>^nZb%XvnpB)J6mgB)U|AZ6E^{_!~Q`GlPaErY5eD6y;AQz0_hmnJqrNT0;lq^ zO2MkjBXT&YA7ryXTd5$XfOoeJBj@t9{A>E%{GgtxCwJen$k_mRb6M*QlE0uX)~|QfSW)_y$nezxzVZzg6qf zC?yrQa-x-sB&)x}17s@~zUjlkP8yzp_vh4}_8@L$$A57Ee!1%$cPt`jo=n=pZ(-E{617Bs933I}jbSOd^bB#Tv(KDK)()0 zJ#3GoBTuF%np`}LRXN=zU%NOfh&#XWf(MGOV)fRr7zN?9Eb8j-L}ILb(@DDLx9BT9 z7sWDVy0uFny2EHRm}KITvS>oG^Oz}R*Ob^xZ*N#P3989o>@l4C*DmYvI3nRd))x@r zxpmb&tnmQ=j}2AFij$TXInYPTaMX0>o(2FYMN=3rMtBWVpA|LL8d3>X8F(rhK2};% z9;(rLkR(W=khGu0#w#5oNj*-OTjwxk5vfmc6gB zq@i_tisB^kp8+=ZfYI(7hS@HVIc)(>1k%h*PUFxtkq}Et0nHiCV-|R3)j2#t_4?qspnNHj zR2o5OcXm9+N(mVQ$F9j6|7XH7Drn_%-udHsx+z*rKF`j9T^u*5Mc-)u)jFDS&9S?#n{My)zD^Ykx>wQ0 z7OD-brK_;#nW&U}AM1Q{?x|fw@XJjS=W7dd?}js&Jfpa&O#=SM-*u9#L5BN|WPeW9 zHwX6;)mY7!`o+CQrb(fhQ(3oI3$d9w&L+fqQGSfImTEi~Yz%`8#So-kmv-4_rnby3wRhZ9}8 zlkT&OZ**_Lb9X`0O1ZijVhvY5f%bJZmIukAea#Z8Qu{?=n~syFAzoCqRV;ZzXX#dB zccl-?|8RA>e5(6ZeMH3dX&~aexjT6IFP~Ju&R}>-3*?gLF#-hiy@(v@_d1wo%rx}^ zN7)0lnfVpZO^gYQqzM8802}mZ0T2+y@-C;rJ ze~i1Klse4cPQs?WrpSa*p|EHcVGBeg%jVEUa+<)j3mTRPWz=>$zwb)tRl2Z3;MGl? zpMWHL6}&D=T_C2AjK8|!+aqj=!6d6xNc2RUxs5`Fw@wWFu?MW@Tm82OVTfZt5QjsX zuess{6*rOpyVBy|Yjr6*Va{2cR=OJJNkL3WEUhB(|IkSypj+^>`kC4~ssjsuXBvAy z`b&9I*&gv!4nk!C4xnFmi0 zpm~2$uOYF)BPPKBIG)sbmR0Fx*e*6Ld}=*8?(jMNMTB{4E<9Y(>p~~E%%vG-#spNE z*3m~{U6P;U`pwaKaL;3ed#|`U`4g1B*?=ikWms0%_G{j&mpQ@O>Z&c_L`T{KHYp=+ zdh5V=Lz&9Q$QTNv%TqQ0bAw7#yMLj+JEJz~Ge}CTHZebdlmJ<6p-P$p2A|PNqjRY! zm1bp#{&W-Cjv%n{K7*1UWr0xmAro|a#i52`dN7>W&-be)zpP~M<s%uUq`Q3FW-h*Up)ezpSc(ZE4H1T}xF% zZ`}@lc82j6YjP1A@K3PHr(op#=HZ*Ii?o_mCgVxO;?8gJfn41l=47y-0&OKUIfmf$ zbh4c_R%D=G`3j96(~ug0tNs@4HzJj!;ahBs=U1`{#N^OpW}kpbNoJ_8d_!f1@21-N z?X@!0OYEeb8s+`r`G!iVm4*RU%a7kku)lDFJ zMx&Hot>!UFad6ScMM$pL)|vte-ZTlB2y*;mejQ>XO7xQ#h>}~Lys+88)0Wz*1Nnqd z3TQ};ekQ*f`vqw+JF<{)70_wp``P+38m%ecv%(+YMyR;prGbR0So6_Ew;a1jId-z* zu(H7(jF^ctV6PS+0@&PGRT>~`Gpz4Kf(d{kn_WeAb%@32i{4(h81VJ9S1S*$=#G}g zQ!?J5#wramjwz&u(48Nb059yCc!Zit%AzWBUoG+A5u6lyWIa0t{agkHMUu=97bT-$ zN4ZA=#LMCZCg5{7yp}E)O;5V`^A@wOf8R=9-5RSgdJjpPi(R+_pc9O)7``TdGxR#nYV3RLzm41dko zH9If5II}QMetNuYXEecB4(@rM0g$7T&8WGej$5y5P8Yib0ru7mxtGyam0;s2H_RJD zb96w0k9M2aV8Q$}0l}_40P~QEY){vzKLwUQiUw|fJ4Y4){P8M73%Q3$bP%{%>F`34 ziKere0rg^=og2qN4JSlj?o>P~>o>bIumK zJwhuERUfiktip?izi7kvb?O7MZO%^3h&^rC>KwwU@&In(puP+&j*Cw|wzK102=?Jj zmvAg)vCAubI2xiw!*uRh1Msn$wP2zCGtH-J^Cl6bkqde7R%Z(xJ0 zc%MZuUr*`|vbR`VKU{qQ@-BVk3n*R9tA$&6>%pF(iwZfb7gFVdXnZCx=iZE&*}-?l z39b~{3%*=|k(p#vgam?)J9bD`L0hQ$e@*qQq{QS_@K)w0?6dTtCDT1Y>SSFszKzz8 zFV*p#X4X?4B)Vr)=b83AT()l;$J_Q81FXq9Q#AxueR5HOi?$yc7yiawn}Wc!MR(a9 zQrkZ%5(H+jS((pxap`2dDERDb#=j>_fj%-Bb;&`^YwS+rkVsBhsNxOU28g?tr8WO7 z)b<7y9JC4KX_LGxJxHXwmokeSY07m!WxEjMzrZv@2ovV&j6eW6>t$3{G}w5;X>5J? z3gDr`R=q=QSxyJ59zMBML|Z5e`^IS|!JgO5qiDO!ih%2%cBRMgU#jyiyYn3)dHdz_BRsgPuTyf{Lv~?_k_m9M>9MDr6u#><7+jEyi|^)yi33U!+9rR-O}#HA z`d%LmQvf?WAI_GL zx!i`(H@nUw=VTZm577~{(Ek&05TAXK0{+KH%l`plX3U>|;Yie6!+3K;xtiQgm+9HMTXv&iV^K?(lC{wD= z{*!LiG>Z3)fM`UfT0@G3hbJM#utchGFmQ^2yU5U?N$(>rd&yT%G@8rDl+O{()s~Y5Yhm)dY zuCZ+FRjqJ1D}b+b*n|v7E63cOxE%>~PhCkLxnO%LcY#nv9^IDxWAEtD{gA!SV5~r- z$X(8*%q%X#(vXN(%*11{j4`mDuD6TC+7@;6S5L3*?@a#Gy~EBG+L*;q0Kck4#$~D( zGuz!fcQx)75L_J|8Z33)g^8uJMp6NJ`bt9fPE#j7=3J1rNUlw@3)PPVoTWZrBU_$C z!o+17EiEoA>k`^Nb|WC^y|>Av#bn|YXK=Dp9R-gYdd=V|jGhIqj$8Rmz;jRx! zg(DO)AY6r_0Unk?M>c+(4k#}caxEhp^ifU5q6)PtoVcY}AKe;mNuTX0 z3n)JY$fK&g*#mbRm@Qr7lKlo>lfHb(*)d0S*$x{}aNK%!c^fcRS_J61FFcwBxKxJE z2QZi2cf}|W;`9iT{C21q@DNSlHO=$C`*V%iVpd$*)Hexe|Ml+C}&-J zWZtrJ?yRlhtj_!8+9lY`?-M1&VWVb~J|KGap**3FBqRXTLx-vQr2ONb%qFNBT^+;% zfvi-y@Za|0NmXJiHRcqL@ylryDMCoWzv}Pdky;;I=yH<`Jr z0=U6zj@bb^hkU5r#&=|f;PnA&048KG3R*L;Q!?Gl-vPCK$?Q?Qe-oKWhRFp4ykJv! zTy>38GQR+P8^g1mVO9JI4b?+5{9mS%> z@Cy~K?|3K9g9|zzwV-Zn^OEbbEDHp?hczU@kCbX*FXdMK z-x`7R`Odvy=hQ4+FdqnF23bwU5lwn(Nxo@{)qv#5B6+koqUPc1lcGbD9!Ak%nqX}# z`g0{VFPl8^MxP*n{+$$MS%=xAAAjC;*WEz&C)*K{Ve!bhcD#JdefbT9!=^qKk^mxm z#15Qy{nGj#%P;HuoCAga@rbVt^swG%Vy{-nnhfuv=`%j~r2qTud6Gmi_$u~m&kCuhK>+_)v~ei0&h&qjl0dv>+(7gnk0;KqKmYPIYGx@;Yhjd~f@tva6q!x8i>1 znZJO?VY!xLK7RhJbbV_(%E9*z`pLc)1SHCe9#%Ur{O7jo@YWWXj6JwL13Oi?Y3B4zVmS$) z5!5BrO=Q<_+fr_6hdn3+tjIc5F_=CN{|wzwCQE#^rD2v(S9rY(LWfMK#w2pI)TpV# z>7ew{sOW(DG*@`>no7=sMCxV0>`XG+TNhnlsEGXVsGwa? zNA<IKRmtGuxO&{V4?bhTYU&(w?+`6@-Pb-dw zM%7;Wa}2Y?fHdJ(e4+pNHLcW8S7Ign=SbwEybf8<5EpoNR0zMMRxf8sWVFd`&PUk{ zH91K&0L4KLWx4==vof-GG_T>t5qpShU}g#d#SGR|tOtkid6c9u@G9i3OZ&0w?c!)`#2HMkG0@Q*C0l^Y~a-o<}3=p6)+0j6PNsgK^V+;)TmKC!+ z-$aW?qI}JGi=?qVwo=$A`+D3rRwK3v+#TLWee4i={ptVC_Xb8GOBzJy6VN&0z~%38OR>1EZZ)XqStXH9|bsP80OY|)1Kkq(EZ#8R-QCaW_&*2TZRpq*XcwdA|PUk zHo|{LoQLb0(Bm**`kmDg82hDCxkRKz8E6~> z7s7KY#B{^;gx<6ppERs*{U|kDQ-socNdM>&CopZE3}qMJ*p5>GZUj@_EJv|kcLbPU zT^Y+yskf&TR^vok9+8fF34W)ILxt8nPS!i zDX8LiyzdMJ5~xLISGa@Wx=T4YYj)#2r*!1g??9u3c$EvQYaVvFb7NXOSY(B9N;Nce zP{rGkJqxzdvW+PLGu|`Dp_p?0(d2QjX{qpn!531r31phezcgv^@CD@Y2mZ#Z<4pr8 zbWAdHiSPcY=|#+5*H=w851lpSG4H zqu>w_`4SUW1b;Wt2m)5YS3B)`eSICd*gfJmW z@oS|4V3dEFX_aCx*1f|{t_K{pp9Mv9el%qQ%3^Vg3OE@ zIVq?ZxiEv(D{@Rc)SK&KNs6Q>d7jfyp75v2Mt-!gL+tI64Qt=+3u*IH=IHlLhAF+? zHYUi4?f?SayW%4cQm~}zZi~=u@wC73a@kO9C@H^~l*j8hMvgjIqBFnSF8=dNXb0UF zZW;mu@reP*7%XOEiX&jnTcDP)M9T8kJK<^!{|>o!$mpg!RMg)WW57sF0)P&)ZBr9=`I}}Me`V^I?V*ZP;}*#O_h9R< z0Gm!rXxh5xunp;hbZB-%o-AVRG?{IL_#-25Q2~4DN%u^Xlvbs$CzxUBFB=D!%R=xm z!d}+v#+(O6%;ozViK$CIsHQ#`q>DI=;KP#r4fMx~NpP;09@Bd9-K;~tBGnC#gg>SKr@lUeIt?q_^^<0+^+}1{gi3|#`u3IJ=8otc@oa-c; zDKS}*D|;f+%OJ_<$)Si@d%Ej|Y*s34Bok4u<&&=*Ea|6W?SQybV8Utl16hI^KvK|yJogQ`6&DemogNk9USvgC#x6=C;%oSEf!ej6 zVIlwbmZR6kdEe!V#IPBwaMg=ObQzED*!ZzNCr1q2epXZE;BeK#LXXj+;?1f)()j}} z5KV}LN1IC`yB`2;{z&yG=#_01YZ{GKqgVSJJ3C!1vA7evV{@PNQ{Qn1U*L z#aKKrONDL5xRyJUFsWRyCyi8i-qcTl3}bKyAYhc#ixYt$nM`qd$#{SFxQm?xkb33WL@-~-K+)2A-s4VT@k!ma&qgel?s*P{c!ckYil8p(Dfe0-7jjAyA7PT4QD z); zbin+o9B1xPjrpL;No2E9>Gp5u(@CbKy}3$D!KRR8x>)K!hXb)KO&sLIT={e1Uw&vL zm%)swf+H<4P}a)q{DYCN`f6CxafpL@#>99a#{#fU=VMM?CAFq}IKJaQ!Z_i|nmD@1 zo<<)(dE8CQZ#ovd52~EvJ3jW6jGmY&jA@?NT6g_~r#1&vK*~Hn{~^v83Qzq#fC@Ul z!jPSHko>TBMTA|4{^zxQm@^Jri;>i4>9Ql zky{9{5r~|#l>8d${>Anp@0GPOTiD1r;&Npfy!e$NA) zlLC+l$&dx^fG(0}?4epUzjIn={D^OMEIdgAlOUD}SkV z%pM!XXgh0HHLuDIo!F2q!&^AP%-(}?N6ONQQH?>om|FsHF{%GrhV`7(5P~10U-b1wl4}{lh{SW0a6cD?79nO`O!@_32Qlt&gFo;9&)0ERltTYvV&>Np z845KLkEyto*CW-?Af2#F8&RXrTN8Z~alOoFA{l3#jO8>H^IUc-GgR!sVp==ZRVihL zkX!g3J9~R0hd3SQ?e_U-@Hthcl2O6z!lVcJ+TL3BtO3XHii%} zDCaxN%sugv9E1ToF=0=f6!QfEC#o`8xI++O9@`R{MS-t@8Rb5)`1Ij&Rs0L$H8?izqsCKE_**s+0nqrzL;yAFsXdyI+(drHD zK|KaI@IT3RR^cukY*|p4Hi8pe#cCgGj2Do!27K}iD0~W|Q91{a#4bCUK9U?a6Ujl|T$sG*dUC6i8Z5SCcubrP;K=Bf zhkSTEf3V^ed#ep#4Vfj7ruNeuA9%ndSQAOm2uQmOd8DuIGF8I=h>dQwf)I;k!LbK% zVnf^v!&CeC;O8VUmInk++ObcI+lmr|=u028>inCrVzZ18R9d=}O%vK8|xwby(++-U^%OQfa zfqiTQw9FIx$-QD3pa?C2?YM^NadT0%3GoFSQ?eg=9+!FTCHKc*6Nx!CKxtr>He$d& zF%*E`K?#08#a#XGX0fRkk7X zjDBqwS7mFLMf-qV6jiaH;#b3*_F-BzeXYWKjD9gM$z9FFie@P5z9G zdK81Yj&h@+bf_8$QR_mQzz0K}0k#49nK+~hla-XlMT3Y;#ENN4=&)6z)7Q*i>F5Cl zm;R(hGfH081UY@gwT8Pv8csq9rDFN&bqSD~s+Z~xOkbbx0B;lT@hE%E@5So$837(H zbgi1%Byy%D-murGN@PDO0ARvah^=KJSYRA99uX#&d?om+t%zQ7O{h;G)=NPc zh~>h`dm5Tj2VlA@JX1-;a(=qbrMvAGMM9Pv;0%D8kR`1D z%NMDxo5}I{yvB@LY5MseK?eKdOx50YBU7X+_vm>}pNEWZWx@M$ z5xP0zXG2WvJ0`C^mEt@yq`=Nw?#0t-hTob;cs4dZn&YMwZS5RsG3>^(3pMf}2)T1z z_O$`_7bMmbM=Vh(_KL65etQHx{dh0PF;Ded7%rJ||HxL%pAySFwiTj{Mf1)TOYYZW=Om%%deE}5Dl5A_NW4TD zxSouF(HsqFKbhRC{2X*mAY+QSG-5MIS__yN7#?$tS#D|oWHYNIDd)lyn3TX$EQqe# z==CB+aEun;rwOl6>wxjW?X4nj3ZX*NTjc!3`d)H2jVi{zVwY$ZP(~JaAlSO-+U(X$ zugEF!>+=|ojo6WPx9{lap}Nf0eC^T2#Qn9GgQL!K-Nu ztG;~nW`Y?%Z{2_H0VANm*pvTj=oK=QoYpYl@i~{Jqo^3vRGGR=t{=M(3loPoZq4RQ zJZ`k01`?Dyh6Q5xPj~h6_tA-Z5XEQAhrykh-FC7^8o{2Cw;Mc9DpEO9n9F;+}X zfZda{SN~E+xatTcAg5ksBqxnLIT(~AffYTaUdxVcHpx9agnUT@9xxP9X)b&uW`jkl zs(iR6S6H-cCIZp0R120)&Y*?btOFKp+J`uB8QZ_kvFQzYP$iQYI_M|<{hD$Ac7z&< zDEdo{)liwl>O~KUn{|G0`pyx&OeLCA=BVre?;Aw`E39C3V6_Zy(nDFY9*7WqVe=m* zg)}LK)h~2Rmds0{luS$PZ+NXb1x=Jmo48!0$MSnq6`9+&;gl$`AQ|;7CQ1SoiJ3NL zo1q!Nyai-2hS&5OW7|ScvY%dIjN1=QgH;438YDzvnwXK&4`mB*2tva|>WP^*Ub4-B zNxcFnWy8==@z8{3gjIfbQ>eZf$o%lV?swd6S|O^{kmhX$Bf~&=dn;s0J9k5OQOR7Y zJ>5sway%U-6OiHl5A|&nUfGAW2mn2q=FmHO(7@bGPw3p?W`cDHhd}TLq zG&R;Es&2(U4RI(%5%8W(CcGSrs^moxlo<{Qfxo$gVolB7^Tt6c_)xa1Zy#LNOK}?) zxfIvxktqm6KA6D!R!ol!QF$N7?>L>ga5MeH!-Be6kzo&bnYlvbWYvF9rr}M$sYBKS zLhvF4jHnp{cp_e_Isc98_p!WW=&Vot8&+#)%-?0I9n8h3Sw!Kt1?E;*OFCtiSnR{d zVXH-LMOEn2A>bt&9$c`hleB7E+*>yK;J!M%l0_8>So=xfvkJIY49qcD{lQM&B~1zO zbxUJZ`@cuKeb_e+;e?nb64!iw!g^S50MB&fk1q?j-_Pzfz)-j)!h#TLUh8Mp4j3bK z@ytd)ZTm(lx_>?z$h1L^M+A^T(rOQi*Zvd0oXX;MJg+U!`D@@4Q$nx}@fR4p9V!xn z1l5FE;>0y$$IYFnE8+r1&nMD;4)wmg1j?NOOT%82@QUFmWTzT*y|djZ%%e$bJl}g` z>0S zfC6L%2dPN1mc&PQwl?C7u)_qG|UDWLdv?un;aRPhJcZ}?piLFKa&G_Nplz^LoFh7H_ zk$drFQ@j)j)p13yNygeDBPYJogc%b~J}8{vnWxspG3@5s+Z#c~Q()B3_Yr-NMCjyf z6FGWn?eO?Dg|M@EvwbDUTMI#R{lxQnF+JZ{R^tvTjLrTWJxJlg zrROV?A73;~88{E-ryw>z?j8lhjL0HF^X3om7WeEc8 z%YC9sFH;{}@+(jG#CdacujXqh)cn#dh13Nq3Lqf{NgUa2@2H0nAjW|~%s9hK=!C;C zoS&SzvXsxkHD$!Ph_JS2J(;9Ub3k-1fOaWA07nj!6!qs_ICZBjlFo1Q)Benwa<3{+ zaL_$BHJqh6|1D5F{Z3}B&bx<6CEcja+gZNyNjHT!u4*{d>`cOvAtG^_de+rxsu-cSITs+#C`6?Na+e zyQM8dPX!W~^XjtSn+n&vT4mMw;Dm-Ixl#9E)8BLaJ-#3Bh)j{PJxJff+w9?D@oM^) z7pjfn(v8~wBm8yg#FP-?s1V&LSNQlNvXAC?W>BDy)?xEbBuZwO=_}<@AbjG@%p$Gn ziv$vc0w|Un?`r4_#rqoOJ)xHP0bQEqHi=S@f6|w8VIxH3WdG2H`Um+^>u?9h(9qSi za}}Yje8#=U{BTluJa*Y9%tYBXvNp|(ACKSV%QI2tIyR4khyovOa3a8xh-wU79=AB8 zwiwThfDmD%sY>>}@0Tg7eTc@+=#4H!(H&@(&Qj7y`;L*jtAp)OyACF_3F}yEp17O} z8T^Zf*Ycbxj?#Cqo%Y%^_(@+^zC%=LB$JFDv*d!3=)Zj5sC$){zNQi643$K^$Tg{V z$oE}*PMwo_YN?cHZ0`T;%jt;sb41igE3}ksMI10ad=6lthf_0`146$u`(DM7YaHP| z{K@qKu5m(oaB9IhRQE(esI-nPo&YRtA})%3kWU85QJ*#H6M&|ER?mj~yEly?y^-ibzj#Z?z0MNc8`!S%8CS^d{Ab}DP(9$_jE&m{@^yr&>Lkk}|4XT_%2xCs z3)F;g<(^PCgIR|VQjw{jBGUZ8)*TAVX20p%6r{wZ;})P>cN@XpU}%g5GX+n#udBT-*<$^PIr_AJfoPF2VThQ{*VU;14{488A4pw83ab8^M*lr~>qE?fFLPf9?- zGfdd*t}LM!do<-ux6eh7kXJh5`crm~y4EI)j2)i*YA#d8Q~hL&*THdj3Qy&n2qE&nTgJ|B6eGgRW-fCcIEzqG|Jmw z>Mp;JWy6{}IupWdhdr%5h%E(G)%vDor8yIJIIw+(0Zbn9A4s2dp;FdN5FqGHboVN~ z(doRF`36VAAl4+lP}48wqF;q8r?LSdOU)4)jPm@fi$?wzQqouUf=~yVFFzB@_o*pD z`ABn=1xlo%h+oBPSycdoXM@~WdYDISSJX#_X5@mdCEt&I^m|VJx6!3b_Xi-tpxZoV z7|p+hWmpy>*gf4`)>xJeokbCv{|%R1{&Um|xs<(b{*FBUB>f?lk}2`eX8cMo1HM9s zqDNc)f%{!O)LA4}YOuYI7?)VR4*7P}WqBksYFFu>&^v+oJ5yVx) z3qzdi`L!+|q>Q$SK3{wX56;h|z+~k>22%}c`}Q&SyS;>B`maZiTu}Oz4F5H537CByFlOS^H{K+{+FlJf~ zN51wdm`jNG_Cq8-D@=^=$rnxqVwJ>w0I(=3$K?b)hbK*IB;5bZ=dRP%gnb0TD>#4I z9!;!rFCzh8cR=A(e=>hK)Whx6Y_naKvxOn^Zs{qSLFO^@2#m=M@><<->?u$Y$~vad zniCAmkD(%@!!P!QhnG3!3fx3SL&)TUSefG#dlLXRK*+zdp>TUaGVryKRQ$7`$bIudS}9PT@m1@2Xg6mjF+TIV9RMp+0_dS{xWfx46fS4y_5H z|KB}5Ibfqaanq&GJE!w+`q|)cao&krmN4>wUAWZ(pp?)1+GRfZoT_)M*mU_?vjt@z z87f!EmW&K*cM^Ii@f&DuLWA@zWL?l4!`yK5K>`(`0$0uIbWC_)D>vj zrrt!V@fqT4lP?iEw}gCOnVZbr;eEAs9%EdWwl?l|j#Mn=$fof0l4$#)5c$@0r(In% z#@y^aPf`(P>u9!b4VgmG*JTJB!Z*cNBGx67Sv*f26LS598ZPz>tHg?n(#!@z5(kqV zxtm^m%*f=D3>v>{D2jt%?D-Aagz<=pU#Wlql_WPS={tS;sUym|;Gw3uq7M70#~`p* z7098WCr!-+c)8;7IM!q@5T1QuO7mH-C9pv^>=1FFpI#7`r~ZJBLt5iPi#$6oV*R5K z-Mg3hdtC5Vw+f<}MZl9Tos z#t2ek!Q2XwaeRoe%m2SvNWz!1bIJyg?aJbhT>|S z(`zILaYgqGm<{)8217_1eQsB>gcal*)@eThq=I=RyZXG#GKCyR7`VVIGFEtl{X2N= z&7rp>pis))#oQ5u(?Dv{?>S6^#201p z5#8+{U85X9?n98+Y|)BCRkbXmR|;zT-|BZ5;?)}Qj#y=)XSa85o$DWm1ySM7A6$GZ|#=?d7y9_ z@}P$mkKz!VKuzstkLn{4=MHWgY@(BL&&zMF0|Gc=NA?kMye?V8V6$jv4H2GPkn96} zsB?EdIM323UH`o5medGW&T-=_R8JPz(H%H z;h9(yxTMam{vg@sT1414>CEx=Nla`eYK<)s<1U#co@*9f%9K*e?yydY9jzu6Oaf$V}* zf3Jf^rEo-%yMH+DJPEUU|Muwn);aN@x4H8g=x6{}pKN16`58)b?qM2Az}VFSJ^QXf zoteEpLG88+<;CpP#C_6gKh3paxmld4voS*yi43;+z$(_6hybF=*}i(4uv`1=FUTUA z5ISH8T&VMmxHDx_lQvU@kIk|YgBR?CRu7)QwOtNkCYp2<7qufm{u1pBiC09S%1Bmy zjLz=y27fjYq&L6TrAeu2GOI&>flS;K!uG6O0wBHe)*eBWYlXO`zVR{ve&%F%4qTfBNa(8?`z%}Rv?ctFx&PDoiynPq5=9khFYd2P^M zEq5YMH6RemDnL?W%hgsdZ}4{HWKV-67yV9!nf{mKwF(P(agW;@_^J@d5n_u2>N)Cn zcqh;P1T1zXE#%kEnrJ-m|N(?zCb z-Kxjx#6K60{vmtz`2D3NrS98RkuH0|U!5nQ1h}|K=V;Q}^T87aVBM`RS)vse4CkCY zyGvTV5l95d4W* zLoe0}1vj^sg7o%IDwo#6OLFoOOm@VgFZLxb|rVJ^A$ z+*wRGw;rd}8j@uXm9OnVM4|9eTpWN{xiG12a)Anv!V4QeMBJP(DVGvtU@{s&m@5Bv zUL~&=R@A?v*cP;eb*T0%YL_n8y+@w)G-e9~l`8SZZS-ul?y8P0@J;ulE*5m-2PjF3 zJnzO89RmF^LcV{=TqRu!EY4=;{Op@;`_*8?6a`k|R_)Bq-y~$#V@sb;A1l{Fc$MCs zRZ{6;%z%4|$+-V_fP3{u+TdghKom>Na$!lOKit4N!^y=i%8^WtK~K&^{y)BbsHK|(7t67yD7;SV2o+Ru*Ty+gJOZ-7T>lkNHlQKwBj%>&ii$lc|0r4Q1`kpC zJcJSMES-|}PY)rK(R78_evpGJ7FL>rhgcw&<_G6q`<)4;WAL6l9B#yxoahb)HSZXQ z`S0(b2%GdKX1hnsyJRze!HFX%zBE1Z#gH^!-Rr4#<~qRAGLhwC^wNc>m0gBy)&JcL zIW-mkwoz-kgaz0lx4|&i8d7pWrZs`^ztMmEXWlVZVw&;fgW8nm!Kj=OZ`|E7KK1;Q z!m(ARl1vv=M`k?phHH~7PjU0Uyk59SBqwh53NasxfygJ`%7rgcm_48N;#t!r?G{SV z%Dxx@xj#D&E2q{#ZAK^ZvWuMIB(yWWN?E`y&3@!iVJwVu@I_D$?JMHzr6yZySBk`5 zO&s0=!07m%%1UK8sii|v#pYpU6lA3_6IL_$dS~OTk}*NOkbEev%nGg9;8Y%je^;)) z@vF1H}RJ@f(w~CZEwprO4u$VPb}y@Vl)-S04q7l z3mcgJ*gZHFmf!CVnb9*tx;_f+E8d&$@J=(2*3&0Wn|cm#P}0sG4*pO_^$$%7D`jH4 zw!XfQ5KSLS5ZXTu(lnPAP~~W^h>(gG-+DIeZML@ydQ@R|SkUq#joBRYqF!{n>q`-{ zf6U)YwShBvbOr3{`Le0##~1OF2^=l$m#1fKM+^e4bJ0TDQ7h|>NHaV4!!X(fr+$}C z>07qREV0tTz8>>$6{)$^zlw|8ay(vd?q}uwa;dnrcT`9HO!=nPhEpTnD{e_C?(fhp zH;ryp3BkfyH=hjYB4kM;14mah zfaLz}T>R=9#ZVa!E5y|`B_u8{F)vAr(#m|_(}@VrE)NFMeJ4;*UENDPyJBH<48;G( z%$IcanZQ$9_?qEE!PzgJ_s5%*Teq!(bWl=LwxmVkpLpyYh`LRbbg$9?XkX96e#<=@ zQXj7Zr4%?evVke@8K^4AVnzL&y3alREd#|r4pVzqCNG1v(aSM*rH)1F0J1@_D-uKE zuhqZe!p^6yRcW@lD|JU}#82|kIFry*5;V$sI<&`YO_N}`cb=0r;qSlkI1kw_3&TVn z`Juk$)N;ltpHXl1K2IT#lQsVY>S`G{6zv91aD)#=H$^y)m4uh~Nff;tJ>&6=x@ane zGbzI)6C`VMs2+E8W9-IjOSFPp=3@F3*i^Wr0Z#VS#E$l!?saAp`acX}a+1EAAz`@^ z57EjXE|xKMTbxWcj7(94FINAreZE^IDHUJ6^--7wjckBv(Q_yFY!jxqB+L&6 zi%2x9eugai0?0(^?OkB=-3|2nt^>yV2u;`MqJuQOEQ9CL?664#4W}GJBG0QzWjA}{ ze->2AlYFnqfqzb&YIpf$u&Y$vk;NR3KO#bXl(Etm1)ztrr9c!w574b;94~kwlx7O; zEecfIhyf^r>M`M>m!8gcPz8N5gn2S?q1_41*FF4KgoC1Mm%>7B=M1FiLW>17w-iug z#0Rhx)oy6<9h_LDiCUA{Cc1)2`UGy!Gd*`~N0=ZObVatbbQ$j-Q`-jJ1E__}n--?( zfyUrvYfsM1G(!mnxi3l{Y2{?O(Fzs7p)ko zk&Pd<=3M;l8$q8cjqId;y@^s3A@9ys)%YkOCRcjVcuhUheyIlMAR8r*AGhNZdXnEt zZZrejLbQq%*;$A)JI&R`bdymF0p&8`DHsezLh4d4Mj|9@ME8}$;4-7#=bJj?W7hm~ z&Sj`B3*`XdBoG;@I*W5Pygt-h43#m=#SI&X%#8W79(!Y5&oRfulllI=N&;O3bZsj&Sb-RnA)~dJck%;l_ha%Hp0lW6X0GBf7jnJVg zoCWD!3jS%8QOMki9>FU`g zS5^JX>VJ%VR57DWw|)qxRIv%nbt8wOq-`MY9NWrsf#Bl-Yl)Ygfm!?*X^u<<;?muKk(7QGRA?GhganjY*8GKUnx!XNZ=7Ev z?yM-4Tas+;l}4oyR|&+5^x*&)xC{vop%0H4a8~B8bP(1p3YNcjQm7FkfH#gl!Znig z#_){#s)BS3YQj4l@b}-^OJQ<&X2r1i3919pusHtXFGZl`>3?2?`!r!4;)=`$d zsKIMi;#Ptn<)GbGMf2a74D+Bbiz^=o8;4UNvOY~ogZPA?J)%_1i8&O&VD%5hx4VYi z!&4w6(EV$jnE*X1!$MRxjPwK&i4XNK7fKx}m5cjX@PG7m(6eJY7-64bB%s-4B-o$U zh2oyvsWx04scr#pYwZZeWfI!27(DFSF4}acitLAu^&oh5Sx3N$Qsk`V30(KXpGCqh zsc@Ufmzl0|25jdYFtQmU0T5Y>L7&L=6+}#)C1IaVx;qgs^nB@5%;)I z1+BXv)!AlH+;ErvQTDEDK9``jz_kL+2ao{=^r!)^5Mr;O1u;S1adSoMJW)sbo1%e8 zwM5Ky1TQ%JI2b7HeShE0QrkxuHCY19$@SYBf&Bg+_2H%ynQh~)e|@drpT-h%pLPv= zrph75v}fpSO3&!ZZ3)5C;{FHdFA;zECg)0jYcz^x6q3fXBC%WW9ibAsyo(R?4-2U+?Gx4_Z;Os4 zY?nz?%)s4vAP|SwI+ntB3IG%@WYMQT#H8~HvxI9I_@Hr?xztX?lwz5p=Ql>03)TFm|Q|d6K8utQiL`cp=}#WvPKV*+Unu$oz#jAO z8Aa(#YeSnG7&2xF+^wEqa7=iKmjMoqChiDnS$a4d*EaN`c08Ba4%1sPr5<`QD%y2usU&U)IR%OZuyFk+h@;QQi}4h({}p~n`z0@* za?Cuvv!PJ&&H+%htoqT&fa+SOkly6SdmZt&3JOppxf3eQM*T5jXw64R-)fRvKU@y+ z+qKMr{gqO^l#;}(eq#k*JPNmzW@QDa!&GMHvQpVS^#s2`1_7UADSh23P=)ZX4p$5_ zTf4Y)x|CrA1VWeo3Ogv97obw2Fr(1IJI{bDK-ZB><9b`LI|X%sN-yyk26E=Mc6`@; zM@(0_vRhU%u6=`FwLtgWc*D|@KDYP~;m2k_K-nMLE+g!!u_t`62t8?`+JneWr{!Ua z?uGwYdTDg$3GA_GD*zs~WAECkU!jBzzW5Ab~I{6@S)mg{&kzTa2F9wbza9^q&#gR6eJ0_A6?%CNm- zQB7NYbLM2&Y5UUshqbw)jNetKcYnFf$|xh<#8_=(A&$J8UpPJ*Q$!sIxqg_X!xNTp zrm^w@s))9U!N^I+$vzfPT_Zghrra99&nZQe?kZ1aErGX0!cdZhXJAfUsZ^=FYUa`t z2E9E=UT(3{TxP+U1V?Cpcplf+I5)I46{c&=(E@0GQAR0(C%oHbMVr z6H;cZWn2E6D_Bmg0wP&){|_B$9Fhci{p?xNkHAhKgO7TRGgK9wR!#E33Wk`;Kks_X zv$PBG(%PP@a#;lDw#(8Eivq&{o^tRqQA;GzLHJCYCGyZpBalZQykhjF^iplXm4NCe z!8N+#dJ^m^oZf--9!eFtIcHGNzN ze*i{UMC~9`LdI3nH74tf22_?Qx#6K&9J6DRp2>+NY};iR$%$n)htq@Pm$BPyC48Ia zKZF0a;;M}S%+7?Z-pfUp!Q`e?wr|u~%5~fJH0oT{{uIZT!Xmb3_o&ef;DY>#T)gi+ z!~fh{`5why39wYrR4y!1hWwZ_>TZ%aQ2ZfcClO(hyPxEgF5{iJN zmb#jC;HB}x;loMA5;?3uXM&FLKrxdx1A6!qX@uPSiZZ92941f+Cdz96nBg32K96Ok z?qjMc-DH5LZR>1giQ4HWcOft^5)_NUdD_ZcjT|EX2Ga&q#{WUFFD`)V0CBP1o@-G( zhXyOJB}aaeUB8c>Ki{l(l$(~~9A~G)8~^M!ZMjGec~6VGM}<|?dBXJ~@Qm&Afwn+}(2}ArIx0%WJBtDAV2kfNvLTMD8~q@3kq@;X5hIch z1%I@@(>=X?Vz7iQTJY zV+b&L7Mp$l62yFw`lR0H1FK_lMdIxVXDysNbcsyQUL_RI9*|*SzEDy*xKHhL3R{19_Q4D0R+-jdvI( z=S7yq@4gyj1@>K4TAj_o60GM(oD%G(e|!VD)lQBRH;stpx~x%Fv@vuhLby&cALWUGM*dF z(P_`2=>sa*Xu~>4Pf2aVw|dMTuXs@=6r~X2YtQz|{L72-H^xAHMwINk+hN`K3BhjY8kmXj5I)DDY0DUgLOFMj77 zTN$v3^kB6wL_QZZc2cxrz(|v|B?^e^-CXU6D(hg|cb12zkj5S5hs1D}wUv&wt7VQE z((YRK@Kjrzurn>t+qHGY!lQ3(ppxBjc@aU^sPoZH(%j4XOT3loc8L|-U5TvSZqjxd zO&Wop>4YXh5pm3Fj3yxrPv}-Zv@aj3H_Cm$ZL{0%^B9c5$l|s$+c3tDJ)9};0>rfU zQHgU{UwQcnBLfUpT5(=Qa%}K_)pU%0$srU?lyx2k6v6<1(4QokUr4mGARP+R1Q>vH zBj$V|upSAqvWI2=^QcG(upIug3hV^%$)DI9#jOu$W&H#eLHk}%Khs&h=%6)0+@2Rf zjxFp=GVnu@RY11DF5Q9qGs%z^2|o#deha)t9>{4w4}&Z3%(*fH<+FaA1~5>&{917D zXizPfy32O3XI!atH5#QyH-CdUN0q-FS@bxzYB-r)`MNZISTutcx%nH+)O(oNOc;Vdg_< z3uc&}dbw&Q#SZJEWu2EsJfEmPmAV16O(QUZR5-9~n+UGC@OC)+j&OE(I!QyQH2ZYi z7vjy6ZRr5Em86c;#5Cy9t^y^mCSGG9o3(TV;4>PF+8!o%3y}?om!xpwB=t5O;}e_w z$1O~?@Kcr;_ii?Ddv?_Vr4R>VxZz-YO#2d^-PrgnWw_dVRvN8=+seJ7q49Xsh{b_$ z3FX-oPbFDBp%uxzY9(@3gW{+>745c~uhvn)QA0gk5Be^dd*{=I6|rS@7p2JVHo21A zP4dGnd@#UKE(l#TmiVX!CCAEmXb4HQIQ^5OPqTPy{tW|^W3FSkv!+>|tgr}ym6hN+ z@ABj~>Cs@9*io+k{?Mqxo5pAupppKEdS~_2O$IB8o?|W7y0&e#rdbLUrxXGe2<#S$ z?{)ADo{D`)Yd&|BOi^Uve3zOb5yb7`hFB8|NP8yv-&rF5PnM5E`8+qb#J&{`a^EK| zSXIi)necPpT~;CvA3N|4qk(Pzop}dyTNz5dqwfAGeSWoXdN41UlmJ(KCeenRAjwa* z>x2qHjYiV`7D6Q%(B&w@64ZWsd`~7WsMGy_2Qvj0VNu-O39%Ij5Qt@Td1#85l#$%1 z6k*sbj04xXOT9B~MUZ^K8m2{ceCJ-rWMPALeJxB?D#PFQXj$YXpf^+cs##Fq@qen0 z;D)LY!B5ufp)QTu(2~eUKwCY|*5(#!6Dp`_J~lwv5^8mtx=G)FM_(0afiN!sZ%kkk zhm)<-u{)K}y;w^=fOY`A1zLfThQDuNWew1zriN;jR(SY|qT8pBhgj^^Bx}M-PN*=X zdz^U>FN!b`25oP<+i1oLbBl(XnXZ29Km;#k0FwZG|rc6ka~H zJnU|9`IhY!H}Ylgwh+c6%R%zr_KYOrY=^5g7cxoQz1)NPaoaP#uoTP1&v-m`S-7DAA2m*I(#&;MPL3>L+8J40UfUZfth{T& zXd9zt?jEOpNb;9xFCEEaY{tS4CM!O6C6wZ|@N+bgY3vbHg=SVXg?1a2GcXS#C9=w- zf(XbZjM&9tChzabCJ;erpSa}G|Ieiqd&0g=yM^X3hA{5n2LktJmWzb5$XO$RYXb3X zmRs-;853+r%so|x4*s;MDpP{(Xw|Zo*XpP0Pq9g>D=sX%-P7wvEa4o3dz3$K7`AeuCLs~H47rNT z438>+`E&8FW!tNPbXrF%o^|yaV>_WobQ2EDAO#$?=Wp=>(h#EW3E%XA*3o!r7kpkKKh`M0vG0-q7D<%rVN7OQ=fW6JrG+Z=EnXSgjFi}}2Z zEf*nUq-i-w6KM8Olu)tiK_A;sevhgP$mf7@BCQC0ZeJ5?_`+EoVoQ<29fNrB8oY;G zE#OiIOJ;JO45yUQkz(__%_$^d*v~W0sE_T6eOg7U(@DsbBG4b~uW^^iGV&on3F;}u zf+{f*2P$4LfW=laq8vAcQ8IZlR1%~@zb3w0yFXLXB!y&$XVK?;H?r- ztr*vmaHu)AwMS#6lEj6t8}|JcxanV5*oe#jZYqa%l9emQ6)3#}Wu66ZLM7_X{1cLXVtG@R+%&Dm?(S#<&AoThppAlP8QvGsHu& zd&fUE&Pd6+uZJ0R1;J^67A=1%uKUA@bvV2qHBntplTjBw)^g^IHb$zsmloq+Q-kCJ zI(yxfaXz!B=TL?rq6nx?C?@7zhc;<(LNTJL{7PvDHDHW%D((&R>4e)lT!&1k2)K8H zaY~)taRkET$NCO5#uc$cO3sZ6)C`s^yn#%4y}lAE{3*=#*z0l)jqe><5Nvch7KKU;iJ&xZUz-c@k5IAmvI7`NuI?O9h0J|PUGG)=%-=a zDK%!bJ}ygu*NSnsP0QbVKPxwY0f47s3gi5G2;-lU+O*8!j7XTLYK(la$jsS`x8hiz z#Iyx&NlgXa3)uS%YtRe%we3L_--~=IwM=BY`Yro$c$DSpaOBg4kb{r~t9$fcM z33hP9-kct{2J#Ld=yvU1X!!wU&H;cIw7v<+lzhG+hYtICqSm8;?x)=vBj^|ZAm70@ zW>|J+ciqkf&F6i2)yRJrMl*&WB_WOG1tb&>Q=pCc&Yyr+@q*UZDj}tN zep%mHAY?T)M$P5f_U*>|tC7LtQVIN49F!7(>IpfZGx~8F{B{gw8SuENYZCc@Es>5J zr&9_F%o$pik~NV{wZJ?f8OOSRyB<^XAF!92eI}oi@*H7EF%e#Kbs`&C% zB7B-@PhwRm9lmJ&|1+-g$V#?uN~zXx2!~uCw+R#RYuX!*9U6F zUg$1g{ZkyNxEXzuq}Iw6-0~*LtC;=6yFUg-+9W*0L2Bra)m0ki*ot(1h_Xd zd#{ndAMr7s8gU5b22>&{*LJeae*`{of|a({G}B%G5VU+@V6&I>J#)0f!@lTC2Uf#0 z(7QeY`R^x^(-~(om>(Icb@II3cYC@e_lGeeM}g%ohyOt2a7{`%AGymefN<|v@ppBw zVT$OXJihEa#_f`*M^3IIO@-Qe&Ocd4YV zUAj>E&W!4a1S0H6(E#Ft^drI!7kiCQNGEB zV_$>4%gsT8Sw=VfAKjm+2;6UC;$W1SXqn9-&ybR3PNsHF#oliE)u~|TdgdVE@o!1G ziO$tVW;#(eX!|;HLJy%H$pBf5tsNrlH$$(B9#WHGP>x8CI0BKWpm>+3d*3GZGURKg zl&$*Vp9&y=Zfl%az8B+Hy?mtb&zy>)X9?7&hRBKtBOdxi8FY0I`g<3T#$2U!9Uwmg zFyrmVCWl$=#@tY(j`q=h4eJ}Ye`t?^U`bo3*$+90-rwQ) zuF6E^TDg7>25hwpJ%Gn0(68U6(U`FvhMdSAN$Jr(b~fAz*dQ>3leQNUnZXo>3X7H? zRv4+fXFELPe}gG&mG&P4*=T})SN6I#awHwh767&&QpFp~ zB#W!0nnfEwnkZG!-5HX7tLCr=V`hiFnNn9S{j!5x=W{fwK}(W9b1jsSc%-}y965|S zTxk=4sGN`64EiwjBdYJjW+@X!z8KWZOb=ce2{g{2Sm~+}2Og>6uV8K|gmz^7z0RsA z<)RTX7bM-*#j0rpyoH5~jQ%SIvs%8Vj&|nbvpCw&&j~9b@oeTGE=5cGJs1nkfc6FB zMeVK2XVmPc`~}f&>7DkhN!7R&P5X7(fbDi{oPUJu6w3zho_YT!G_mE1xO0&=GltoR z4@g%bWDZa!Z#Nt>!R?;T`3M}P*JXm_AYLls@Zie-c)1@go4ftf>(3y~KpC#8-8l;(ijbWWc{8>R;U?ijV}Z-?!F%i}$$ zNa_xcRm)b%%Ik##cm3(tE&`zC{Uu8_5L?%w@5YSwS@ zPEsMFgPcto5&9yNm}7^<1&4V&a&yd zhrl<6e2fMk%(K)r?Ckce3Cp(H%37;ZiAKD9fh%POK)}C21`ZK$s--3PTv7g2YSBP8 ztg_t5y9wlBIYZud4ml@ty>m0@>q+;Ct9+D@W&A(%3rT_ z|01`@C9if$djyOS&^xq=VwQ1X5&lC2e{~fL=I|sFP@L1TY2S(?$jcAdAr<+KP(S@$ z#vB5}$9c*MDH&HWK7u9@%OLapGdonBu`jin?#8jUf!Q-VS(>GV&;5Efv%=9d@)a_xrcJAP*e-f}C;_Rt9m=vk z%yy3#*UScrRUOlQ3gI;pGoO)#dG9zj+|PZhflzxkTyk6K@i-55?v~ZLz93)DATgD0 zgUok-yF~$%G|(bF=^c`Dt~vXiQ|};lvTEIw!NkH?gvU}hHK9*{?kS4N7`iVhC6I4r zsXy8-O<4IM328NU*hDFz0#WV}I@HVcr7Yybe;bvmg28?Phzn?P7LCj$P$FaYo z=_AjA(^_QGyeoU%_2zuE6z~hvdL&{JIm9r>0Zb|pv5l)!d zUrULjyF!Hbpq*MCT~dX}{Pw@_hiqJG|7CI7j6zHAgjLcGmW2}eg7$87%1k79ILY#M z3n1}4XxO_}bcd!T(o4)ft~ZID@ZxsGtWp+i`nS#VdC^Lb=}EK7=Q*E=a$*zK=!9;S zAoENV)_g4oZd3J2lOHKEvOJej+f+|8a(FPfEc4W$&2uIQyi|F2dYb}Lkp;cZ;zoyu zlS)>3h^-A;loNve*Jn3Ea9yyyKZh86gv$`QoQTEhe^r12!`U0&Ol&Udv+Yrf_Kspg z6hYkiM}`_!OuAOQfeMT3+E2lbQ$R_&na9?Lo2?Nze;ea#8Gs2DWno_)CX=rwnd%aG z5Jk+7=8VZYRJzb%3Gj>2%@{7WV(TetPC;HhxGOoT+l zS%(oTiy;{JH65Mj&C3ldWVyH+Bhm)xY=**gHh(sij=Rtu+%CTp*Bifq{Q4-nOO4G# zA)>|Tby7o&l2_K|61}&oAq|)I>Tw&(p}l?jRgX!2i9{ll3!U%y9eK=!ZEO@_QA~9+KB*p%{;in2ME>y>mK;k}@0=K=TQ0XgS>d z+crZdiuotbQm*q*YnncCOW9qCyG!!zJZCiagNUm&gGqyleVmS`!-^3X8RpELZ-(Mj z&`CwQDu;WDvm`CiE(AkB4O@kLBy@C>$r-E55K%X`Txg+brftX#NJ$sg2M-3PA8~J^ z=7j`Z;8CmYCUcGgwbZu%mbWZ`g~E0Cq=Yf7bTNg{Cf_%$3ZYfwCjTznZ4p36s3IVNDm)j)cZX1WuU_z*+VI!j$OY} z$bPcu1$eun8~q4HpDp|*J~paQ(3;E!|6_Pn@D%^!Su`jJ+Wm9B%BsHD7{h}=3a%e8 zccEgrI3y!B=h=JGn(Mtr22IZ|DLdk9b3*WQZ+yo!hVHR4xdE))?LLuad*+R3$WzR3 znse%G9?RegMrH8&=mcxvl;;rh01l)K3)Mi%w%2U{$*(Vu;ZN^J?EjRK;+KC9csEy ztz0wBo11|9U{?z+Rjsv_*hA)v#fCRx+%zGbr${SC3m8qfoEHL;(a0z4#FDuI+FR;? z4Id+jeA*O3hp;m0ZqS_m+BgR;+_4M*@QxdBvqKT?wS%KuYjbi(NYG?P7!v~ET-evL zHhOej$$U*(ruT_r#;R58G7Xge^k@sGCV(rnFP@o8oX6%R9q$VXJ3ki?{?l|}A;fQl z);;jqG3K?jknw|_y4AYbyJBiS_eF-fEx`w8ivwt=J%ypnWAtiA)r)ys*}g~f6SwnV zJ24V7`31{&vIGIZxY%0WONl@8;=2Jn^I(nk(H|E8gn?r<51q`qs-~Y-A9K3C{2&8MR2isLu)W zHe9WRaT)wTSt8KR7;w%QoM(a34AH*^hM4)(RyMQxs0T>d$}971PwB9UMBfR}wbFN@ za_J+dIdwBm3E?bew9A9UCR^`FQ^lr0;(fkE;mXeOWxa&I!oG+#*)RmbF&b77c}tlS zZti2#+5)=!m|3>UxwdKByow@pb)c{6fG#%5bU}VhOx>cZcDCfrF2}^KmM3#nNFn*? zk9--Q6pDB(%aR$0Ac5&A*|PAF;H=QIidyR8cv25P9768@eP-orYhx@^R>Ifuzzd*t zel~?<)PJWGw?68wqwU0)t_`++YV#2!_8hZT)7?HOjE+b6>=~?_0JghY8G}XjnGwEF zo*@k-iDC0FV*b6Tm)b85x2tX+=oTvk6rXDZWBkLq)@B{KoLOYL15)?mPYmW}oTwVs zZjlIGz$Dy0r6Wlf&zo!|?ImPl3LI>=vFk3pLX$4$#qEbOT)H}1s$x}VJ%DuUXj%4Z z#baSaqe3ko_J>^G?au+7JvPp&H8|0cNpULD8i+3<>E)P@2k{Q5TWXKXsEdCLLB2gM z;F+Yplrj}h&X^0&^Ivyrv9ch;JZRjy$-Fk;BV3M~zTHgt3HqKM4w6#?q>!TB{rdH- zcJ_H|Q9DD*3I*gCKhIkFs}nz^$-)>U67KZ_;5WA!)@!@M2d)F*n`&1ir%(zfugcXk z%vrnRr#+#sToch6^qu_~Hr;UGs`A}bhnscr-c52%d7h51M6t}T=i4{v`lbB0Qf4Dg zV$vrT$oM(Z;g5+|84&vLAzAR-AH-o&OTDzF+qj`IyNfDRvQ4d@GpK7aoMIR`WOI|g ziz37LYZjv?+nQcwJH(_^o8p1|y%$m?Q<4*AO09=j5xT2xop2JP;qk-+=@#wRjM0~mKI)Sr@9C3UBYVryqYp{Du`F>0gN$HAWW5U-O zpJ>0V!$I48T6)+YqHtFcvMP(eKqjY-+GkD)?A%-@^-8nk{?gBJXsQjO8Q@$PT)}(> zDSiFS$Pd`e=u0?I;$yN9vE8#dFkKeTzvEj5I`E_wKi9WBegRvMZ6)rx@r z`HO14lde(!mwZYrMt?0Xk#1+ZlE*I`k30%?P+OZl`x zL(%meS4Ar}cU3eBlEY3X6?waW8pjCqeoVzXlFo7?036>3GKFhU?5vO9uUX)9UGUM@ z5kbTfRK8caIx;&p13VompAs_tb+2?xO=r(Y=Zh+V?Jk6QF8E z!Y7zS&@`w*@^>DJ?EEjb_W9m&#VHt%2B)@zGbSBeH}!FVR7eq-z=Lm0Ju|iIq)6_X zf>N>Ccw{dtQKxLkW5k&U(g|<)ct}mhk6W$()?}j?L&Mi!gkGx_r7Vcn#_`*jvIz_5v?5xk}Sh z2fFba^S((A4m<<3HN*OU^F|j)70+@<;`&vrIa-H(ZWGQSyyk<2z)qx9iUPnHk1KV$ zpCs$Hp2Qa!-(*cIkiER?$1(i4PtR@yCC3ZnGxYZtjed5xY0N8-DO)Ha1bBq~DIIrU zqngLW3&DuL{N#E+BcnKmVp1=L*QSONXhIdlCZFRtmo<$G|2newm{bFbA8seRW17{Q zEL%1J3ZF0%vSE{Y@R38&j<4f6C)Rf|I5@lLKDrpyZ8$IMSI&mQnZWfH?OZ=G7MN z@C&D2Otl4g>!Jo6648VT)eq)1g!8==@TkdBABY?Wzv|??MJ|!JEpSEqihQLr9@{_2 zvOk%d|M~|&Xwv1DAU3O0zP}{%PD!c`7eGCb+6&bTDGrjTH}%T5TCo5-K*Ya|0Qsni z*=~JJW37;u`V-jmi4(BeD-1GS;DCwiQR1ik1k{!0W@)QYQ)1LSQ_Oi6rrcZW(L@-{ z_A5esmKSzuI7_@29L&N8guE*t0E4l)p1}ERi}Q9+RUhz(@zmRX79Uiz@Si;hXurwZ zio!#7yx`R`2(pC%7ubpp?&==luYim_JW?K$Tzn|`?)>gDP5R222QYnl7iicgc(OAO zk0sKHde2nXBn2&7lWuX0!Qu@*A|^YZ;tpOq4%XE!YT0k`S>L_kPMu~Q<#t`ZjFWW8 z_Q+}dQ;pXMqWnPqs$ps-!#Z!C2#F4;^Fh9RAeW<0(TXR=H*H{bgUj?O0luXb5?Z9B zdrU1XOG`bEF#QgG1HnkXa@INiNF*q`Dv+ugsOj{F(S7%F);L z=Z(d@z6iR$FCmy$(OT=oLqwllQ9|_r+Knt104YN_Vwb+n!nw7Zy$}|#4;!#TbX}ue zofKqi8`H!NWr1J)pX+G>^*qgN%)-P}Tm#@pw4A79`0_Lhj-bpbkXO^@XlA--ed4N>;KZ3#p5fbP=sp>^G?0Xw{}?gs}Qyegs;+jU?!``6 zCZ2Tde~7(DdRi;!|$jGgLc#uRH?-Pr7?H-igMDgH?s_~ z?V~}@FT*CGqd<7nu4?Dtp=J#ma{*I7seqzg|K5j(LqK~dIN5DU(k|AR6J>T5O~PR# z^C}C?3C}>=8VBtz9ooQ%{t}3$iw*Q@@OGO9vLwO~qTljO-G%a39qOUyyw=rAMcJR7 zo12aNSF1`ki|CkDeDWdN$K@2b!R>qG2VTvH)BL6p%Df_`|Mk6`&a3Gh#RVTO;&Hm* z-k#r5S?keoWTtOu(8HM&(8zwBGq=pn(K;Dk%F~b*PQq5dO|OwON`_Q1|KpMbdb=;F z!{0HaYjk3oWD?+G=xDdI#WqYrl+{$rG>NctCD^e`vRu-%-gB=iriP+j{_@I0d_nqn zE@>l$EX6$&V{S4g0d-21Z<8;Ge_5W@32Ha&YSMthlxk2Lwnz1g~`Y$T}PBMz-IuHkf=ac_LyvE z)x+KyB!45Gq{wFvT*VvSmzy-t2#q|{E`259a}%L$RSp;!#8KR4FG)ulOqWr2$j~%` z(@aIQq0MH+*f&nWNOhTZiP(~M-GkjZ%R9=Nx##FP_v05PW`1nhwjg)wv=c+8=R9un zZtgLEwmT1M28E?9BUA0f0q!|9mRjRtiV4Gq*a^l8Y?e)yHSi;ppVMNPy|?Sx{9e`G zE=3Dd5P-Q={uWQcB~Yf8zKJKE){OMHf$T>02jt68ttXxR>@jI|z-p!bv8W9pLL8eOKj-&S_0Y}D>_I!3{-XzmQ{?;#nS~i7l(%u;MW*Z_HH_}sa z_;X>w?1@|g?^txUNcJIQXF8gFA|e5O(&jI%YCPX9Jouemy)|!2J!85f;F!}|v%_;g zFC`2$-KCrKS%Ukw3ZPGq&70d#K&I4O+79xfIH63B-fLmo{k<&UKF83Xd{R8f?<-Z( zfK6Qxy}~S-pJgnCuJyV$?Xb@QX$$oVcgch0HH@Ji%^1n=qr8PXjo3EC%x@2n^;D%X zNiUOEFu+1Cj_+AvtMJd)*-pZ5V>M#;p1bcK3q$`^>lA`_8{q{dR}`34EX-N2$1fkc z&`3nbPOD__w|-G?zI@IRmYDOHf4tq<$R6EcH(2B5Da-uf>okhDom&*>pG~o4 zuGJ(bRjaw`j8E&}#~OSe&L9L6OjNJs=RBUnv$9xDu4klq%0gf~u>#4|0f(S4H%?#N z9kF6#_K>T)SyjyRSy1vUx)L?M9vrL&?@HW`V5L3{`w6X(5T3r0A5T*HbS+)RoG@Jj zn)T@r-@cO9X5;OZFO-0nc5^B+6D$x=l4{zDIQ8x>NQ4N+6aA?QH^2q6zYnIa5(@j%R**-zRpuHrcjN!Yzb{ zyP22eH~XNlg2Gt(Ro=^A<1Waq0oVj?fzpb=l)W{)I=V`_)4 zQ-FKpX$-?3eiFK~NATT$EtfqeWRtCQsfLRZ)V{3i%h;-2THVL z-v~zAY8mT{VfXZb!~yR5)Il&NLNXvVgeVqs8Yxo~NDp)D4qggg|B7ikTTjpE5X-CI zmG<#SE8DVRvy4krHQhXK4=tY$8r_8p`iWWA{Wxh6m{skKw|P#GCZ$Z&GWDb-yNO1T zgA%kxDwfY4tYyn|SR!W~yOW0c-QF+1_#rm&Os@Jq9oLq$Q!q=&YE<{$&Yk>!`;{2S zZ9JTsh@$+j{%+0a$z&uPIi6>fc3DnXhLinNB8r=_R~;5{Yxps3cR$+==-!<o4+^{0EATdDZj$vq}X8k2-#@+zeM>)2l5qwb2Wd}yCYj5CBM3>Gh z-3;#yrHB3V^+TK=_OjQs0A>p|H8Cm&3IM(8P9{VCj?^>12VYEV? zVjrx&ZW9P8=%iV@?oLd*Wl^|smFXDuwzou1axjV0us$Ub1%`weVQ>Ah3_%R_tUYIF zQpGy#Yh%{%*XYOyh0@AWHQkb!gBM`F1?9F)InOvPv25uG_ijbiHL>Tqa812Pwn1Ts zYAb!vz$?O~^5Lf+wFZJ-^R(H-dxi>%*G}xL0O*gBLDtw|$lVy4jPybtXXa1VPh+O$ zgcMpzO<6Yml};K1W999!n{(Ajh+Ye3hu)fl5&W9{?+3$I2Af*qw^&j+j<>^m+AlGk zP2GlWMq(q6eDjL~P#5%yvR>icXQj-OCZQep8#UHE6WU0CDv&nC|5BYeTGYSR>kD5& z;7Wyt{{y|+$q7mE3aqaKqSv$ikw#ZoW}QGfm8O+?G<0UgBBWwn{=^DCNwHrd;}>kG zxRLabAeWQF`3LoUj%0ovG^61Fr3y#~Kbw^NO# zjBbvX2Bhje*CcOKY!@P>Nf}5$5v--KUi7hJ%0Km69mx6{ShmnxlTkMAwE_7if=#aSvXpk;1v_ z>2!Wd;u6r)?M(o~>nnmT-SJ)QGtg%q;0g&ygpadN9rWV0=PC$jKmmhVO9+%_aunV-qW|o`=v;=A!QuQ+1D#_eYd@`J)WtNm1sN}H zCz69lz(>YZk{=}f4KAHNO5$dxH+nMZB4rfyUYCEn{h>E$9MNHc|AkXVf0@Cir1|fEo9>tyC1L%v`EagX6%5;mqG1=OQ>hbx{I?Yb>;+h7HZC5Ox+ECS}Fx@BTT?GN^h& zk8M~+s5Xs5zzAd-n<>to=vpbd6RRLn*qr=86B%X~$)X{T z%&m%+m5MZtsREjIn=!M`vYQjI4aHzP3$H#JqD6!!&-b(+Qu_n&fR- zv#Z7vG+%2>r`{@05`?2l&jsT0={Z0oOBGEy6SEAM%%1Q(>Z_d#rH|W(D15o2P{Gf1 zUS*{9Q)0D7gSHrL61Ay3e|=m3UMgM>C4)vvl%pTgg-p%WaSqvICYpd9`)}l4DU-*a z@Kg7fomVW$c_QKJWj>q$H5gPo>V@F&wBy^NJ~1mC zl``AD8eUgP+i4yepu0+)=as$%y+y-p740-dXK`RTmS%OX%LEOYgPjn=`IuB>n9|V) z+w{C@T4cs@KKbRE@UEcaWs|>CWCDU#U4oQe?gVXS`xoylc6tv`-ZQI(nkEbJCYNFQ zEdIFDEf5iM0zXL4o`Rc}8LX}~$lvQUP0W^hO2qB5V9yrwm(o$Xc}N;X(KW^3S1Ua(IA+xjxFocB`D!JlHfx* z?s6bCe5assrfPWi7T%TT^n=l~Ys*m#1CBZ2YZmD0S&rjjJom3^_j8eyEinxS+~`{L z`)zNCs<;9rcDJb^I&X^`%yP}l+zs-xgse`iX<%lT=zBQv&=q{)lxlh)JB=k}DiV=T zNJJXx&^bnAkm*#ueUD_DcyG&KeH@3yp$UFW^ACCtMw9)Dnd zfRIvew#6O8l>l%2v6{~}7tehhT>5#7x}ft^6~O3Jk*-#$kfOb^xs`KtRdiXyOh$j{ z(%+@5xM%$4l2|%XWgF#u=6~_pXJS@Ftj?^t#X^6rm>vemT{}-J%vwLB?l?ddYJU|L z$_*nt(dIaeHC5*9o~Dp5dQ=;VTLsIHe8Jgx_?dH@f81LvstL+@3@%2d)78O6;Cpc~ zYZN+Gxs@;Wc34;`Iq1J^yr#d+dc^z}z)(xylXZmA7*`|lJ?s5ugJ?uuA3YT>Yq(Su zC{H9s0IA%4@38tYyIx4Jou_+nMpEiYzg3TsiinB~$<7dVgO=)HJ?+y8=}Sq_i1f@* z3Z5Xm0yt`KSp-;0&U%Lz!nFIT@Lc{GI{McNhOXbD)|0Lq^q_s+SiA%Z`B_Ndom*io z+U^zdyQRIIJ@EPzlQi*hax#y&@wiR)x-0|F=`5`+g|i-%6-*1fmG8-R*DGo_z=>~a zTwH60B1UBIJf0P^!gXq2y%Ty;4Nk?0P{iJ2e83|I_EZ?UKpJ{jJqFa_Tu72Jvg(cX zlY8^dPYx%o7UE{C$enfEC(HM2U@8m?OjVLMDEAK?(xq#4DzaIn>o(lMvIx-Sf&aE) z$&b3bjf|=`<+aG&7ifuE9@3FOa7k9U-rq|rO?FizCG1O9u|$<(6=%mpRdx7EQ%o<1 z++HxHU*eONlkJpQUyND_q(}S+`F+0xS_R!9R!RH0Kj%bNh6mGlXar zBghB!A5C71xdrKi#9Ii7_U8mI2VQ;PgfOQB>eI*RkWXZWev5L&R=W>YGUJijQP-zBmI5KzN;}VcX0QLCt*9v>|C&_r!revi~+=1_4*<#aqy-OW>-wCnj%h$OoGC8gJ|3kO z^f1qpT_R9M*|nvf152lfGb3K)iXqalgKaf-vLLv1-h1Mn3M`IMxB<(VVEoL#$)89Q z^F^+T%ZaLu`OiJ3p-^8h*a)9}OZeF$q&UmxSb?yPV$A*v?w~OLWH_q5UvO4a-`#Wm z5INWzvKmr0B~wyp3Rne1m4# zNr)GFk2P5YIF)B$B(i>gH4%sBkO>tyv_o)74tTrQqy`GIvN`BH@@a9;CzA6EeItp@ zG;gSh4E&xfzNK%QAsS33|IRkX_b)B0JGA9&)pYo(;?G;N#~A?f|7SVY2zPk(rU#L< zjdTsBa2AomB>DErIMgUiS}M+)c8>}DLme^_y^?BU@yjFW4~zrRXLV3vbq+p}g9><8HSah*qsD?#fM2 z?bzBB#ti_Nc$kkaT6a>K^Fe~)PLfodprCw6{9(U+TA)W;H4``vH+Mse;qvGkdja z5nigLe_x4=cg61O-6_d+JIs$2wfDROPMTfjPCess=4P=i0r@6A3sWJ%d!MIZqV@dem4J0L!AeZ?md zXUhV+XD5J-8VQIsA3UQsUF^8L)-eeH{O_R6`exHfbQ#_yK!3s(gl8qQ{+7rC;bEX$ z$c5Ml+W7Yy8M+Ko>t~VZtO0OVGlOQ251z5WwbV>*lZM3|p(#r?3n+HTcVm+{DJk3& zLm!hdwemEAJym|gMbrYAgybcW@DAlrc=jqFK9dAr0wq$Rn{4+PC~+q3BAKd6sNGWB zW~aRV3D>~+o<4HtBxf$(m%W7RtuZQT+Oz21)$Q1FmhJza>x5*ZLzwf zT82)>-MKb%B;M^o1JhB3m=7USe^i*kA0ccb%uknlUqjm@R2SD2i*z=cVg3+g!Psw< zs#OurS!+oce(~){K#s9hL< z4_3=`{#N&UKo!hafJd?Uae|?iu`k%C4F{K6{3$o>!)evdRxJ@b8>9mUV{r6}wDP@^ zl;YgArg9jp(Ivo~eCrL7K);F<=4ZYcwk7Q2qYf1Tbzk%&fj?ZD|iN+OTJV6>{^(qC_b(S3;RtX;or3)vO5N}?BQ zl#ni_ClrA6FeG#=4FRa~O@KT$Pyl1aF24VV=LwA%#ac1<=6t1=aIs4$ey66CC`ny00~-8k$;KS1Mt;1sVpdImW4h8#eM&pu6neHXwa%Ns z6On&w3f<Dk9FxpZ62UA-U@{!yT!w;DfH{EbUVz^wmHO1`NHh8X)?h( zwRYGSu>8J^qwkEiEIbG0+RVh7a}ZT5duf$wf_p`Z=Sk1?TBRubdylQ~Kwz^~!{~2rk@$5ZUn!{arz?9( z?#JP7`r%w%9Vj+y5a0d(FxpaTI75LiJ&e@viZSEcSicwaI^)%YJ55QN|9K%Wt)F1h z*fYa>kxGd&b-@4I$2aDNZsTb)u6?V+Z35I5ht__N5ZAbusfL!U1psm66Mq@Wc_wRk z%&MYyu>Y@Z{`t|oiVfefakmT8fi8E1QiH*1+3V1pth?iZJ%g(^cKjb8c$hj45{Y!- zc{afkR4e$iHP9%2A}r{KZgvpXG%~(|s3L=_pvWukZaXd36|qLE8J=M~LkPC)Ie!Uz zzWF#)Erax5VHFueN~1aRs`b2vPu)hZ4#VIW7L+-fxVIhpve=9`_~AUDj?Jl^a-zXt z_+U6c5YLv9u2`GIx(;YX_zTTro^hszaqb(4OsVJ~_culVQd<*fhaStIzEjhkQ$x5t za55jC-uqZ3MR9aoA{9)Mt-W@eR^>*XEhK}W&C}v-nZ$B*lJJb+DyT^c+e0oo!I#!e zIN7(l@i`p-mBFZVt2#oW%I-fuf}t~{T9PWx13;w&HOu%~B=b$P+JRQEe`FhU+3p48 zj{~5-A~{+|?SO_iMcGq7Wslt?5}Th~Hgu;olHA(c6sDEd(yJ$9$P*oTOCT9sRW3Co zD9V9&B638w?bu+asmj)<{S;hBzc}u+wGl-px{RL^EfTRxbMgp?`sBYBn?y<8Wld#> z#&?Mpnd@O-poo4@J(3yO)t-&pV;>*)La>a$|BBgahk~V;wO=CeNEA)hq0%ij}isk8JJ_5*(qP7%C()?_?u~{ zn8&O3G=RyekoHDH=~9Z-wHkxtjIEA@vZW`iUOv`!LXgzFX7f4XC5JSi`dcYu}#1ScRIg_zOlVq^2|P7fp5T5 z#d;0SaE2FL?Hu%9)uMzrVV4vrZD7(jV+eSMlnA#IvhFxF@$@H|Q6&c-Pav$7SG^wp zIpD#1ZJK^%Slqj+`9gVwtd?FNMgfH7AH@R_?ia8M)Ti|)0b_E}^-$!8jds+CeB{+H z#or<6C_@Rb<|uTH_6>OXwLsOwio{ZeGi;Sb0Is7%Hg0T54q;P)^W9|Y)a_c_mpDQl zg*5d3js8Hym&l=tfn!x=;b?Lvwm*RIVu$S4WtiJ@O?ijFxDY_007%vt4rDEo!XiMz zD&~k$YCNjnhqDnanq^}*=;hLRjrAv7hskchRNNkZ$A6Q=bEip^Y@D%CO)IyMoQ|T> z%;E6YcEU_qpr3b@>yK9L@b=?by$wbEVF8r8GnqO21g%0~@#sFVK|+trA}Tv5&%#A0 zvcXLbp#IFgY7ZHDi%`OjXM`RQnrmz2&R+qJVCmKJj21qI?Girp8nPmqEe2T${^oXw zjI@4<@brrdMn-O5;f_pHi$O@ljP(S?fo=9PD_8(Ad1nr$oXyJKw?0%)RfBY{eVCJfPC^XiA6ED51fhvaHcMt z$dhscoc)Q!>ms5xG8Ks({j@RbHdp`1%zoS&T;Uh+wmG(B-7B$OZHxZE!hdIj%-7>! z>uuD=w}xy@cA4pp_r$?XA#ylhGldk{$a_KQ)Z1N;l*EJqSx4Km`c$q#&~_F>_Y@pE z+vA+uY0$T<+8CRA-#UNvi;B_MuCe8^7BM1R!aZ4CUxmZRk`wOAT0U%~{{=zJ5QenczR_{9zQe!Am z0ozI+Razm7zjoBqXE!tVOl$=OViOG?!|+kkBA93+jHbg4Ps6$Y>lL^C2~L&shbpSe zm-JTIOdT+n&Z(kmBka}DTS^&z`SS+J`)*gz!j|22_mG4ohws-0ZX!n9=5(xo?-Pgn zJ;zuW^&w#K`7%5!Yij+|dvWcg+Ou_KR)^MfGQT{rcjgFp2eTmZ&S@dXy`Lr}+v1n( z*|v_bL{VI256s4~s&}(HwgOn=3QcA;5CAF9%?4{0J(tWXP_?k%)$aMr#AZ>^68MnY zOy{>Je5Pxd-e~AYC4`_X!;<(k(PNf)j~<^w|!#_RaXUWv;Hy=xZfX}TN3SV+|e zqX({iV?0p-QPE}`EyHQ`wE6@cu0Z5SD*0?~M|w0Jv$7I^;2~{3DV{+cBYb#gKdgi? zlaCnN$YcMBAfsaFJVnvxXA&p-bYdToDk~kG-KsjnV^9KcMJL|S>5!A zC*v~kHFL=>+^BE{WdgpG8)5??CEO^BFXCyJE0tCEi9ZO$;3)>h`4_Z(1K(m?G>;3* zHpB-$nU_6M(baBJ;exo%9c8IG<6ZOYNClQ$Cx$j;_G=3-jK6gS-u z#MhZGqFNtCj*X#AdPbW_5*+|0Hw293#*zO4m$ZolIOodUaSe15-4V~?%kmdyt}2*h ziM*h{@LIjdz*jrN&Et$79yEHObVP&0e{2}NS@hBX8vdC`*MJgr8c1b61?_g;Ep7hk zCh{oRqCS=p-Ijzf)Za$WlgTq?+Ssg*ab6gd#b??80u1UesOVT^+$HgHW4UYTvov^? zGX<7Oxq}Z`Y$*Qs*+~ey7Z_xiyeN*=FGIR;(LBhI%8zf(iPjNi@F*2NB;>#NAc)D{ z>H>hd7g55$oQ*?u-@g*Z;#H$qZQy$R>hg*v+s<&CI*`(CrnXt37RuE*4!L2&9TbNX z=}CE)RkJ`OBS1IOrSB5&dTS>oMUqBjPl~x>oq8(T@;oLfwg|J`X~QxuVN7)0!36>6 z&X3(jS_FmWk8ZFM(4tBgoiLD(J)Gnln{O)s99Z&ao<4pgong&vHg9RHe?|A!7N%8x zFsRD?P}w>7zz*IPrA&Nu?1}?Zk){#oM=t_~Xd*%(v>kP)F;)FV3w*0b6KNwSk#4d!h^1F2>Y7zY(FmGL0T8kJ{fD9Ek#!TEK=7 zz24hJL<^95THP!0Lo+}T)KZ>tH1@nruU|e)S@*P+Gmrm5620F({wPgVg+sF$DX_XR zPUw&Q6`k7Fx(_TpLt1R+fjoy9bY5|Um-w=c7^_0MUi7i`2f0D6uM^8fFd`k6qh5}DEX~nRr&)`>$iKx;VFYqn5L7D8B;A{^A*1@_OUXY@ z;$za&W8e06*;}uK0((pu)o-#u?M9EC!I9`PRJ{XSF|r#v)lgyNK_<)j*1>5{@akY= zh7ZR}Yx&(Bl#})}j=ITE*(p5>I|Rqk5nPCd&Ioh?5+BGE@Zc`!fI1g<+iTZR<-8BC z0DgNzrc0KV`FdNWsd-OpUVg1O1&$ryXU}cActxNw897#AYkvcZY{cQ@6e5Wgs9sw7 zv;A={v$}ExC+8|62G?m zG~rB8G6be(NV|;ql;B3$EKfQ80VzAaGY=wcwsoV5 zpc;5>yYQ!yeqQ6B80d$BHrC!oys6JjzG%F4TbDnX*Fy8~t!FH{Y+#L5=_={{Hln#9114*G~g2&3Ak}QUnI?QW;Wno&xxk0o2qE%IIcA(q;&m$#JnyKiV zA5+2KBls6Kh4g_xBf`mi=)HAapyWkvC3Mx9KZ+d~R>6rz;YMZ7-Avb6%Uk@G#sg)k z37xnBQstgiQeB6Q`_i`rgp=cNk=bvTZ-%NbS?!SB8&LC4t;s!oUx&s>`#lkFa0O$3 zLn=HG>rMV9xoSL7$G0R<1P+4cQ5Je49XWr=Yk_J0wlj_Y6iq@(CZV{LOU=wS6TtMr zNrNlG8aV;=5&MX`Lr5L@sy;O=-hF-Cq^UrMvxE@De)hejk3b%K7_&l%BogUSqNGds ztV`&Yv^pT=++PJ;5N@#c1l%}+v(i*NTXq~>aQM$BcA*ldiz5w)8<7O2k zP-kX-`54g>2a0RvOftVJu409u*R-c|wct)Z>B&(r772F&n(~{lUAUzd>uCHcjz`hf z;|4+q;A5(GCQ}`N1kz9Na!HI%9O^nSADyMAXD0l~jc2~#vi{NfW}`EWsOw}zHY zxhk-|W?TQ8_WT&FXPd84Hi7}D3qF*aSKz81LKy0tgXm%F!S zU&up*BjDD&^In`~`2{6a+MAp+XTMWdURT-6!YW}jyz87lpXQY={v@fv7og9jrKV$@(d`oU{Odw|lR_XVRH~I|#^nuCfMba`D*)ACKW`L8`Y^1$zT z-RbBj{#v@eB=3>3Zk3W28j|h2C3>dNBk6d&&4eh?_l90|d%3=Z9)ecq)xN4mD2#g5 zrV!PG6)W;t#=JJrU3lJ($|dJn&!aoNvcX1ok}OzzKNvIhVQMDZZ7x_Io26ovID$9t zm%ha7HDGGU1BBKzgN2!237?^!pZVD&o-$hiZ zn|ppn)nc0RMw7|shbGm>oh#(dMW0{gE(wWGN}B!;Fdxt z(eecBJw|j@1eunUvU5-WtPhVZtK$;HD;-7eH+)v+n7qqrbY1&;yle^ODReTmy%gu- zv31IaJx~eL)X|#5AT>Hv8vW@%e5xetlMz&JYNsDrvlAnTuU(pp&Rf~ET3EI-a=mMZ z9@>Q;@NT1}P5>iSVTMW2%dbIAjZSDwgS6K`s9Q8!w%(M>cb%lnMkBsp)mQNB`c68C z?9G4^Ye5_5_q7))cPOs>n8vbAeARp^j9SA2C@AGst~Eo!mP;NwK^5V{d&^NGEGsDO z!)6s1+{DyGCVq&~0U3CKFLXOH>ELZll@KXnYWz)nXrHcqj30F5Fe}>P&$|{athc9nn%#X(?ZBh1i;x6JP=APDaSEZ#YoF(U14_7ZVc!ctnDihibhl!Nk&ibJA#O0pwgjs74d2 zJaiMuyJzZuFqVpju{c~W5{PFtAHb_S)GeuEgQ@7i+s%T|vg6?!emGoQ?(IW+J?|m& zmgqRS$_k0fBwLsMdRwp`U^y(QYE?E`DjqyZnHuQP3f>2!*ZrC#lC3S@;x_SXLZ^*! z-|KK93|7L|S*nWkYxl1fFqR^UYy2t+>U0;A@_)hzcLT_f8ONt2R@FJcj%gFb6Xf5A z^KsR`Q>qe@=`klP3t0>{e?9%bc0t`%Kk|#JQc2%}*L=8u-?SZYIp3blhK*vXFIX3210HtjSnF zrM2#D!RK9+h5W@|U||d(WC9{o{kRrFVQ@9}veN8tsvlhTt{SSQi$fe89AlqQR=}cl z3(uC65uIg)Mtq)cD<+!|aGM3~@e#M&!ixaP>7c(2WW!N+`Lmvz9&B{3>3Tpm0Lvtn zr4E{9zu9=Rql3X; zN(!x{RQ-*OHL%!Z^r|CDLj-}WJ5O?Say`L%l;NAZcP4rkGj&74OW~l)W}?v+q0QST zhUY4b8Qy91(BZ-b;MF09+mLpI9P5l3Fv7w%JKF0ipSwF|MiUtxSJb0v!2NCoj{-UN zk<(Q)0drjLb9{8JehS(>vPqwQ4+voqqey)&GkVgI?y zeHREcd~V&+0g=dFzj(?uPu~%%j4t}Ycuht9`{uU{MW^v(nsfD9WZ=ncp_aR-s&hd& ztIkE9Hszfa(#!XZWYj)P91st8++=2+&>%U2Fz-(E;`%AQ7N?iuHRr_xok6N%*z+`G z+7wiJY&Os5Zdh|v_xyw>a_)zx!;&ows{>{;jVVD*k&Ky8$-5_#m%mfnfTxpP9EdZIlFQgaB90Q#z3kVxXhF7O{q z^}t7Fy_0tPfea1z^7jFzM*}2-<+5BD_T`TDfG2&6rg!`Io39ks(ED!$7l0#9f{B}}f8(m`SJ-;@mJp{KtZU#}3TA*1AbLHQNH&wm6W6o%$$`JpL%ui2G+bMn{A+WRfnLe3`= zN2*Jrntt}t*lUNW#AM~=o_r469=m(}zAT+aMc1LlhLCb3PX`Du4^x1Lc7y*~g2Gd# z3C+f0?Sx6wsfYr15oGV&iR@b;36clzcyLZ{!&hP3DWeXmIrfD{PQcgUu$`te!nL;> zd(utxdB!kp8!Q3Kk~NX7V|LC6=^5m&ygBX<ckrgF`2uMQZyU8K^n6}BW9j!bW#br=K>v8Lke#|Qu~n+ExX z+sfV74cc@>9V$hSH``(Sr4;+hJmSx_Xqk!6?~`i*P{1$N-%P%tgTmjYN#Tih9*=Y?z{KHg&L%E zLUD8$KxJKsz`%&;VKDSa^sd~t{cA!slyFP}gGz=660u|LyvfI70^S#(VtYy^^FK>5 z^>0alPoP|Y?9ZX6KF+rgzen{-;z~d!e^_fqL7)-hGJVWZ0KDb>YO7UR0A3i^ILIZ4@?iPwvo#o(mw?t(!0IxH-0KGGXd zez@~%eM8P6L_4cc!I(yECl)9Wd3kE+j197n_cv;ln%;1;A@ZVumT=iIew zRd0ae4v4ISiWyV}Ofr1QmtK|a^4|P8Myj%4o`*B$iQ_eF%Njo^ARY%99(fR>xtd-t zH+yu5EC2>&Tdb-BrA&&)J+O9jl^DXJm1X=FmOy@#K%*B^q04Xb(;u5mQRC$JBojOP zF-c09b`*{fvb(Yl&`o`Q7JZ{^HKRMA=P>3x2Cq6T-@CpTx=B17SnoRIQkmH7kXV44 zF#kP+W@P|1K+3qzx1&u*zMYJ znv#7;d2GI%yC6}7b)y>#UUC#wLV?~$oS)R`MaED`tff*l)n1*fI1R*!l7g|FhTRD# z@T{Kxp)x*fm8pQxf)hfhqbT94&?jHIiTKV}NkVfxEFdoD@881Eaz1X;-8Bp;f6dn| z4K{eygn*}ES1^8<-<-K0B5;&^i}jxRXd}2-n^~l9cC2P;E3$sE!(w|o(bCP|XjSjx zm|E$ev9u{_SK+}9f-FNq4EJK6SDONQ6ww(1iWXblh8h>w8MvH+zZ9_y`Oee1sch(4 zFGkFr=rP<6`!s%HiSW+}E=p$(`+Ltl`m0%eMtK|{3g;#`%|vdpQ>ZPOdeZ_h0(o#@ zl~|A0V)&14|EYzj*=has-EVNuzrN7Uv0lWR5mCeOXyuM=bge%KmR zFoA;1xEW>y>@!0EUAvAFWHlgKxG3cjS5v$FX$*-E3>AuJ5VrErEn4FIbnJ&?>P5LzmG=wGqF)NW^gi<0lKf9K22zxcB=8N#DkQ&H z?5dHCH@bdfYr7yMBvhHR_`%`urV+;@9b)x%}d zI6`QnG4L4f>-}2N9|3^C?qAFW3nVvGmdN<%5xHY-i*Sl-?zNV~-m?fgs4BA-l!pR} z=C+&Dq50NUgcYMn67U2qWtps0Zyt)c0Q)Xd>BeVwrY;Kmy(Z&`3C!}usw;&i+=-GWHaY#um=aAj8uV0!$5PXtI>Tz{7lmgyynlG zi@ImYsSW&YjAB^zrkJ08^%r!;sXbCMXr-qebr$Y74 zDg4j~vPPc<4q<@Dk+0L}C%y#;;r?gEeF>z@VaaL+TivP^xebn_S>ADS+0eJIVh*epw zGd?;p7)o3|^a2kpQnq{d{{0TapFDILq59cDWR*loTq3RiPJ%dDdTyp>r7Gbz*(v8% z*G_NFBv!{yBN%dU_=zlmPf~qO9QHzMdMasS(iz4Z9|tW`PbN$aQeBGu{A|y1;>y@y zL49wh+Z3)Mar0kjL+{>K|1Sm|YU#;} zjiOteya`9bY|~^g#Oz2#JoJA&)I6DxQLS|n)R7AJFJYmPl*02}=zCOq%!5#=+}oaU z3we(oeRh{H7jeRC-a#`v6>ga6Ycg zvkQz*Vyep0wbBagij5f)=R4Fz584!q5wu0Y179FsRl`*5((I!$TKzOeOaz(YNl^_07tkcrbD71{#IadZ>2E}n3NzuVWc@5a&(#-`?!VG7$nAfhK^8mDy z)<-v^rW8V3pu|IlHAr`qIMO%q$c3cppcznd4l>M6Me#75UZuFvJvx|#v;n-7hbRqE z5k{1{a69vJXs3BpgM zs8-`IeKLXk9pR^kR$n)260tMyH>l8+7RpL0mQfZD`^XW@S{?0|^Q?zDrol~uXiqOF z-lF)dGOZ*{_mdsJ)(Ip7iG<_DX_&&k(I!fu0^a5Nl5J{vn&17;M57VQbEhJMPdH{~ zDccUh;r=2{{PTbsb>I6-am3I^a8lp!SzIjd#+z$p7)WSCSkkT!KZLJZ6+IY`=2QJS zrY#A(*=7oO-%g|hcklXHme^&PrP7ew-yhgo<1X_>`5QPuYyN2aYk@UMe)pL3aL4dW zf`u+t!2xk5KTw={#av2dT)ETItEa@2!J*LDnt@`ZVl?6A?(AYF73z?<`7FBD$w3Cs zyU~)oP7Kl(!PK7=G#roFpqVA~i({8Saj|)5>Br(QKpJ6eE)vy+E()EsSn$;Tp}|JP zT-=oG2!7U_IM3rGy_Nx8b{8zb@y4nCqvH1m<>4ML1l7mXzvvqd-BZA(M=B1BAgg`Z z<6!V2k2b>9tNUn-Q2wCufv%qE6oxA;~U^D?RolYQLvdlXNB8~dWfnCw#;$|{(w=5fRN~T8I<3#p`+7s& z4t{2b$&fDaCR~~+jjdC>$?fq444Pu&Gk=m@FRRu`zNUlInlUSg`rGcQ?{C83eJcaz zlTeug>-lGCtTbw$a{$vLq%xG54V{d6fgQ!OnJ*Zr3^`iD?=$xj6jE?9LblT4?#v~B z_Qippzu*_rb~rC?5R|MxpzN@}5bJMD`(~dJloNTw7er;xaSGN5n)guK(1xK3mPm$9 zYZ;o-2&zEjDJC21h13|~sBl2y?qP>c##GjH#r?Z+E9=xxuW=*QSP$7O9=^3tgAQOb z&40##z#*ewH5PP*ZNp~>Xp)@oeaOkyDvUsOxBB0-|D@G@&SL zHn_@ANYV)}#`d9Ny0l0ARstQ-Db!+fBdPY3K-j3A^hjXs<=`V~LDZrMgDI)Y+1Lu7Yu(W_G>k3!Am~KU#HH2EvuF5h5GL@v z>JH^XY0GIDmlIASM;RG%|5|f4Qz~u}3x%rrQ>G?2$ymir_rlBLA?|yM{+<9s1w7}h z35uMs6ec73*X#S$Az$meABJ}MK+(yyJa#Z#HD{ZIS1FJ8TPVJ~{a2~+^WYn)g}5V` z7-&=9w%L1L4W9iQ?odxODUK{u4f6c56Z2ASuHNt%jsfJEml_Aa*J@x6UWA-`>%3`= z5BL1QVXBzP8b;4kQtZ0P!|GsRJN>?Em;Qx|1SCf4#+L!fjA~I9ss|B)PDxP_8Gy_6Wlg_qC zgFWvb!^a;^brSplz7G`!R?zK>zAZ-cQPxpdOK;z@6|fnwqt_dgQLPs$K1CMu@gY)iZg*PkNlq1os}yBZX0e$ql#-R z!>J2I7EvrqXc(Yc@2=x3`@QY4TNb81@$$%DOcD1i9m z9j>2Wu3&5dzdQUjIB_JpB?1hU1~lRe9XV-)b{nSmq^!N4xieO5Pd}6Hs>o zgc2p{tg8!=3vGe<{8*Z8hT2f!#qt}{(!QT%>O(ju+CdvI$C!|jlzayhW+Fk6 z7PgbGdXWd4)+6?dt!3U6TLU&H1`;}LJu%6?bYUZ8U9ODK8lU*t@bOP=;;gIJCOQ!a zTemYy^n`atUrYnBMk_g_TM&ozBcVId{D)CF&Mq;0&v)SaVrOVoUcsNMh#u{D)f}cY zP13HNa+>J){_oYzEE^hOb)=S3Q*oL9u}Mn#nUHJ6ty97ze-Q5gqml3b%-sGN$~0q6 zWELwzo?sjfd2c>ZtjPSSDAI|kqOB&l#0O!#(>Jv9Nj+66jiYHJy727+%?KgJKKUIy zrfb>f-=c4|*K8MzkMN5gzWl~h&`V{1w3fJM4o8W@m{_`Q14MCH+RW}?vnFM4nHeL8!QKP$r3o{On*cK zsU1*1+yy86iIxvpL{io`+A?b=73yHNDhONI&yOGHwFf%~Z=BC^%_DhRe1wHfNeEHT zJ4CqN3wtqb{uMM~Ha1ivtAO+gWe7JxB#1r>B97 zsmUZ+V1^WoB#DcyO`SG)Ix9R^x?1H%cMo4Z=e(a#Bt;v|M(nb7mZMB$SFJRGb=nV4 z{uWkIPVHNJzHCYcMw`eoLbS06Vp3W+ zaX?9HDrcD}HePV`ij#c#db<=mFL$%#fM?Yr+;yfnAyac`oc&C&-g(#3`8-%(Ws($q z{h0mox;U9U5{wU@0)3m??ivw%Fi8v2<&ledQ8gf&_eNM>Eb7DT(&l7;#h=JP1vWZK zBRWSjCf@Rs_%4lP>>*cc>Gn!H`Zw>Hz{GkYO>ac(xF5f@GuT;a;9nJwImSTtcJ(ZnPdZre^goT97J3mR-!SNNXiQ>RuR&qs9RzjQm#!qfF-l|O zT@b$5S7j+$rezPyy{#&6kNVGDT)v>H0qIhKBuU@=zX->7n!@p*GWXViMI1mXg4*H_67J9(g)ot>QQ7U922DHdAJp)A08PV*NIL z_j04khGen!tW*w{J6j=r^-B10 z>05n~|2N%Q)kck$;P+zl^UN{2uItFqra&a~z-sva6)KT2M4JOU3JjEsuwv%5OcHs% zbC<@P^7T73EQzQiPX}M9_+|?Nybtl(A-?d`v$}-*1axZ_fhNMjbJgWeQ(CFL(oOux z*F#bCEPO@`#R|L<$2jXf+L|p5E2$TNr9trR-nZ77I^`l8vr~xgsaxmjKgDcfRtr&` z36`lb_{@Tekv#7a^U`&`s}4UiTo|{O zD_6=8rLZQ_UO5r|q#DAqUzs0&IM~l8=+kU@> zLQlUwwNFB4mptHO{t7UA5hfl>oWO)C0rk8{n3a#4Xz8M7c3INUnN$jITzf1C9%8ik zd53>Qt!8}xn5+LAUhz6z{{FyC10wvNn)M!}IXC9$kZS2N7X62cBhMM*#J)ooG}6Zl-h3>YU5k7&u|v7v_~* z4OcJ$6}j@Qzy7)qR}Lc_PH$y(WTmz!Zys30f2R&(57Yb_T63_C0UHY#*ha4=AtPv%z(61Rl$fCdYR zAq$yZ7AI@^Rfb8!W4QJs#JsNy8ES_m#@ITqd^s_wnhm_J9MsG8O`fdhLr79+WTL*~ zCSbeLDLLMWA_NFKjG1CfeCGuU7qrt$dC zqpGwWgI*-n3e6xkc1`QgN@P_uWcjJINo24t_@;Pw2j{2FyeTsh$o6{!RTmXdgzIc( zXv|5t)m>h;3@p+IE@A>PM9HQ2@uF9v= z!|Z@E403{84EKT)ZiG%Z;d-r3wX=`#fDZ_Y`GSRrP}0Tf3;++#0Rp#Y)g#pSv2O;n z+g>MD+W^dS0*Qya{k?4m0SYF40Es&%-EtdoSAzJT8r*7t ziV6h=TYa@%J5KFRTw-q!x(j9~+*FT#ru#|n)tEH!M*p;63hZ4{`*4HEG*E5z_ax9A zgA%{A#5K2~w^QI>PLAG;2TXBn^z8eWDJY8vwvJ@L_by`7wczbO&vamgp0C9dUAO^1 zbv~nqJ{V_{(!vDRmqJZrDEN8W1eLiTZ|T|AP*h#loL0Fcl7zCD-mF(7ezX$%0Ix1j z^Po;9xJ#V`r1AFIi}-P3jxmBw#Y?s;`KF4jA_z$aEo_$xkpXm;|B zUBS)5Pcm{Id9|yck{U6R)Qrs@+nEH>KYDDzUD0E+QmC-iRG3u)d(+A>^TuitA^-lB zk`=aLmUq0c;&*VYfW5SDi?CxQJgoLDcm?S+DY_COFP5T5JwWo$FknO*Q=~G}duTHa zp!E0vmQlzwr2aDmoHhI_)w0qA4I)h|eiIPmO*>opVG=^l1g+Kh2?dP5Eq&i|=EC8~ z6!d-UCz_64#I+HefX0zDbIj~2kgT8_Db#S?N-rVs!LaPmIo0qWG_PkJ4aE)6uJf8y z<+jf0BRaRt;ef7oDW1>K0u=wKwyP-JP0p6iQ(dXTFbFsIRtrBd$a#Fxs{(EBrQWuY0Hsa z@k+e6?F^tCm9EwciFG|!n=xC|TEr|_`!>fKdHj*={vS;`jQVfRvE)Q^{saLMybENO zQ3s}RjAa;egvbzi8H7vtnj=|E+AbIpx9m_SR10aMq?7yV4r^jx1}{4l&dqHB{d;9m zYt?}6!1$1=B;RfhJ3!m*hcM6|YkP8_JL42ZYq%Wc^0Ml`L9vT@eoO)xA56pw04eP( zWZaFYeeCJEI~COb4TO^v8c>;hFozfMq8V9kZ`g`i$Yf)0k#JurjL-lIs6BlL|FGHQ zmmxSYc^!aRc@ywPZ;VMX@yyDh>W^UIkSTt(%k{HL=1 zv{tbg9pfDGhFzy)P&IZywa#9WJB3SWy~!FQ+K%}IrO?8dwmW6X@gN@hnmf94qgO|L(DrG?Qxe)R1U#w_p<&qp=Q(NFt z?Ff+z+i=kqiH}tC8JQwC?k4uEzjPbG zUhw*iq2!2m$M+6Mx#%2p0^i_T;(kQOd}e!lcy1Rq@-`FD^=;`~*rg%8+%E&zI-T#~ z%>*%STQpm&Bjp#~RX)uBt@dZnLgiFe;^n^7e78?&el~A0UKh2lED)?m z4E}SJPCM@59}+iYQm7UT57oSQUtIr&%@#T(lD-hzbyM~IdOeigS|fgiqa52Mg#DUS z?nfXK;4BB8guWEVHRwmT@@TB6!SUQ#A70J=E)3Fpo10*^fOizf1uS!JD7?^LFxjUAZ511U~FF*Sc@-%f#Ib~L=`<6pB2 zS+tu~*zYDv@uq%6=4AQPb>ILc2S*4z#O_}<`tm`0OY~y5>BK`Lb5wl+?MR@@H4uMw z52KgrWCIB?j|aRKf}^C@Jg;_}+Q#H&;j<6DJkgV_-=8}Uo$ViU43~6gbN$`32zcua zoYQ$l@L@cTnsDFG^_`70?8j?RbFAEQq?(H(iBlXnS6Q#e;$Erw$y4qW%=E;XR^7WY z;m4p3Fw(<%8Kor5@l8XcWo=jYIwy5oT{2P`S$%P8G;8mL%5JM`go$PevMAOK_@`ey z^by$LqY$T@^jTsrBJ^+c*I6%g)nC=*#f{WW8sQ`Nz@&J(W=@*Z%3PC?SAdCmgjJ6w z#p!fxfnL2{R><>aZKZ6=->?u`hHHI+fsepWUO0wlE`Bx`EW98MtcJB zMudthuu`>7j2+wRYYi9>rO_e!Kpu5JKBLi1P1v)#?K^R{>Z0l* zJ?^jyQ1!)lnmahkYb1cN0|Wyy>4w>Rx3Xp7*HTlBOYZUH2#sEMH?~LAaqjs*uxFdR zQ=xqP*^H!dS7#C&stuqWA1>Vr=BwlKrMn7|gjMoMac<+$!jO`sWSh;o;QDn1?P+Q- zNckCA3Nc|mzCkcEi6RaIRsyaZC8JWU5LL7L#;UU7*fE-Q-%w>&zd!hcgRdOr#)>@r z50rAwxEku?i3bY-+y`_&eIbdSrVQlM-GayTG$D4aU5NXnwVYaY*(s)#dU zypv3Cg2O}rH5n8=YM0k6M%>jT|KoFSxL<`K{QDm!1}DCFvVK8KhWSr0`*mg02r6ZT z=kET6rG6(4j%V4Z1wwXN2m5s06`fVVjq zF{}}P7_l`iIiI&q1aO$*uo_)+Y!A z=e)aFgE2}>cWAGrxhY)4mJ89XDJPFG|K>doC8|7{Qh=C3Y^$<Cd#oY3LLS9fIxXQS$uDvlICLMDW0OXAi5s@A`@Zx2HKTGyn$)qEGXA_xT%+; zfEeXn%#V#9CDA7;(Pz$=HJhorE6Dj;tjtTOt)$q(yxQ2v)DN(45>r}fdTs>kLLFr? zqvk=xb>DJ+{64{4w0Y%YNp&czwl-O6S(dlZI;;A5x;F+(PCbp~<5!J~TZqDW4}|N| zu;#e)lYc(qQsdx({XW0Y__ILWMeP&r1sCE;7`H!xitxe~M%jlV3v80FUN}qRM(%YU zcXA1+>6SCiG6UT^Vtu;*%FT-S2^J=?G?j~nCsNhrjjjX(aQ6rBO1K)s$%h(u|N7b* zxFvFhh+6kfVxUIvPeoavx@s>b+hJ$==|Uj~!CMxb49XughePC8F8UF(x0ttHVh?qZ zsn5eO%q9$c@mEw-QhlcaU9~MtSg-g}Zrk?ac(IR~ySw4O{fxk1<#2zNLB`1q`N<@9 z(L4QgPx&vm;l3;P?T|b!MEP1-j(wc%jf~H^Q_FGCu&~+?I|wAY^rz>EFR!Y__MFG6 zz%A{Ta%Fl3rWr&3JK=^E3@+3p62tzjZUH!AQt;VS;`+jjpo@{uyJe!t4AnaPRq|YhCgnyB z$0KoTFr*s9Nx-pnC6;^fk2c1yYJ}HGtdB}6jyduE6X^u%mG87J_zC`J#p8KqFi^^^ z8b2B-53C>!IzR1>$Q_xy?FSOYE~) z5-P^Xp_rp#pNaR~qj7zC(8D|)I)KNn~=8&Yv#vor9RV~I;h_bf(Df(qEp|k*Bc6xX1GO)I9 z=}n~h)Xj0D_IF))tQnG~52jM-2WVHQ9Z30`k9PEuR%Ttd3ypA0;P;W@%GFmXIKMO( z6t$d@AAf+Mw>_ATKk3LER5L#JuZydz21S37L8ca~V}iazf6Ms@#Cibq2%}z0sRpVl*deIGyKj!0o!abZ0t*3ZE`ENcLyUQCzbiY{_S053HchDkVS(L44Lj? z8j?!I(jopojX)5)hU(dIzIWyUyvX}{5+k)dQ<)p7V~Dgs$PsZc#=n`A>>1a+DL8#9 z$WQnD`;S<4?qS{I@F(;zD++&SU<#yP6Jc}#f-o|%ED$yY-Imn&94f3T`_vpE1Run4 znL#`oBCfywHg`dR>IM>vkWi0P0H7kOr{FqXW@SfbThY%3oA@zLTw_5#(-kOWx`OQE z@k|iLxosukV{8Ga0puekk#kLrPbs%dDUAL`tZ?qU6saBwv7!^C<(J}O?n!tc$LHT&`B=Yxmm*wI4D8D$Rz~J33W7n)j=-6(Yj`UZiB#t#w(-0qRvG#tP|J%h+7 zi!u3J$-;_6xq;=bzH_LJFU1X+80vPND}`5?I0Zk#+*YxE+xEs!d^wtpye|Me*j4E@ z$JPJN9I}RW@-11SpBCSP%JI>xMSg%RU;8{MxGW&y-h2(^Aj*qNa!|50wo=&*beES**v>Xgz7WIT8U5|jgmCYj?-$#s+E55c295lT5;$` zVR+6G+A4iU;`YN?SA;3*DJXgG0yMD^85?sjrDzJ3ue4vF&afMK&zXvp@&JEfu%)}x z1Gqf0??-LmkQ?JR^lsSn=-bV*)c0ANH9V$z;i7HOZSwG)K)!rP8igu>fjoc0UbTFn zl)V3O3bl-73?R2}B!z)*ej4p;3Kr`q6_ZF6!%P#WzD&m(!nU#e6qO4(cJmR=m@sK- z!Lo8&e1{qE3s7l&$*)+les z#?lkfcXf0hx8F-f-rX!ogZb}WKlc(6&JLndgC{oz8HxQl7~FD2lp0z~y(jA!&`8Z5 zM0}xnK*~)JR$O`gxx)229kFv!U;lWg1gip34-K^G8F-x`Sk@QpKMiX}eTLGUM*O%3 zN!QqDtW=krWN{Vh3vnteeoM$!Y!%{jy@n*5V54z7 zG8EqWYsd4waqzPQ`wNBoCTC95mkV};11%ux8S$NYE&!tVe`$&zqMjYO%{5-75qLt!#LzX=GiTa4JPsDw@#m zkc8B~neQ!}%0}Wc7o^F|?MYE`r{k_(^4T;MUfV*_=w2C=RO%FF+{@_$-pB&6q6n6a z;BA8kBT0kw2pNJ7CIQ$-&7X5>s-G^agJQ}E%RhCV^L8-0;O#RDrAY%Tp|#|cLN@p? z`>5`D@E#o#dMaIzkVtHnb_G^a&_$On+(fmJxl{Z{na(g)U^ZmW5d8K9U&kmvD!Jo~ z-3*0vbQeaFx71Snk+-#$#l)FBkBY96&u}jNhT|oxI!}dE#^2k&yFC!AGEL&Aqk#5A zE2&;{m{FPm)bpi12mR7{YP}TDrLeMlhFixwT!Mq0& z8=c0p5+HDex5`Tp6@zXdtUTFAQJf>GM0=jf^dAPT;o7y7KiALm)GZ_bj=wME6%hz! zf}owMyGia6b9o@9kTiksyqvQG*p@^C{UEf`D+qBmRD= z^6}wM#@p}JD>FP9e*=IFlLCsnp4A`Qn)@cS~_Y&_Nz6#pCp z;P(KJB7nTcD9fy&$7Qk2-6r*c!w(heu%7azUVPswqRSw#ywrsx^*{=<+!dc79+elF z9uyYYfyb;UEi&E8{>WbxDEzkOnZ$B0MTefmOk!+m1_#nH8ClKeEP&wNEjKU7S#0P? z{(!M}!JQHwmsVGW#@NvY!>x-YmY3Im3*kTNMIiaFJSadlKiYStYZOFJT;l1vo-__E zyX!BI2cCRar8W1a`4XE;`70#^N7Gh$8Iv_95rRW;eSQ`g%aCbK`+lkI(&My~H-##P z!T~NH(9eljln|*R=OfM({NzRfc?dZ&L9Y#!X|HDrQaxJiqF}`7Xzh&hYE*0$4G-}z z;VO7-X$m*jS^sqFpPC#`7v1TuBYwM0va`mX8ow~TRqD>}GE~}xA2gcAv&&m((e)@$hIDD&QVCju4K09RRtnDjs#~xw=(KaWK@j~6 z>&u8YE_Z#4yA&R2KH;M|XiSuK0fBoY=?`irYa<1T-}`cX9>Balp*tl7Lj`eQZ%)d@ivB(H~~rccX!quP^Axio$Bo+6apn90A_YE4FD;%cKBCN+D&y#<;n+FAzV} zo#YR$jkVvSE9(8rh>;9$ct)(GsI2lrR`loR+j6_dXoxs@0}g!cx*Iu1BkKq#0mq}h zH^A>|$QFz2&Tc;EnL%76`#*mQ467idw!PPnj)w*Ebi$|>Zxe-gHC#r63C4+obPyXc zZlk!6J+5Aku1?WH8-;SnWDqX<(N48YUI&o3)t)Bc%G!Z%h-wx-LKSL@d{=nd!R-Z2 zQ$Kkm%}Th}hI>D`i&y zS1AokGL~ya)#=`%eUf+%Eou!Y;)xLPIj1RwOU4HT4y5s;58sZf_tg^m%|XavO4#XE z6A+p)>9MNzrLMMbF6EdCsYgM*B}&hXmlYl#6-tQkfw@RJAjC_r)ROB7Fu=Vd%D|=E zM{s}o3PlkGHm0ms2t*@AyRvc;Jhc@2uPD{hW9(}w;Z2KWvlqmWrH3+#MNUem!u+X8 zQNjmKQC0K+rsy8b%BG7$9)q-CP z?BI$_m6BH{Z8vj0iIy33_HYuWb?tB2jr@N|_%a$3YCo^<#~2se_uoF7M=c!3)Zg%t z`Xd(3l$p3(>lJ7kJGDgP=G63~#O+|Z`2o*!A^Y~Km24evmqZp_i>Oi9t*|{+hRnbh zsJY$9HszGeauYB!F94r$fpF!l#g5;m6CG^?D$6fto_KL!M6nO1a!?{M{)~Y0)Q+oio8DlsYs- zm<1-r^3Baaw#!U}HC_dvP{~-Ow>vy?MkPO!Bcnr$ciHYwkdFH}%xKyKZaxB=(T>sh znOgxaop62hbUA^$j z{r=U`Ixs;B?WTJZm0fI~FTI~cYydq2GflfZs={ZTvk#OwLtwtl&$p}{GDeII{;Y+k z1Dup0;i&19hnw!+YD$||?0kKu+5Rz*c){f``wW~6Me6c`3FP5eK-&Y`6LUWMj8UX6 zFR{dTx99!!?TOsyZY^&%1%(k^Q4S;Jz`S>CW7|{`Bi(`haRnHowD1=cAY$!)%A3-| zt4Uj~QMsGHyW%o8`34-P%LMxL7Hp_25QF0KL(Xd7f!3K zK7h>iAH^;3vHbVr)-)yCcOqMEC~YmOb{otTH?<~L_y?Bcww2;MUt;xAUc3-OhGFIX zDU1miV7?V6Us<%}>dCLpaCQLchIdcwntD7xQ%h(sz@v3x>Hh6TAy_VirujANOY6t_B?a; z)jm~7;}Wn2At?nx@u{Mq8mkaawv-A3)aFcA~^K6_Z2*Fh4j`=Muj9*I5DQpIdVX4T^duUI zi&f+D3cK8grBR?Z5r21zcRXogsy!6)Vro9^&6KdVJoFrqYzq-h-AD&=M{z%al$Xbg z7Sk(rApL&Tzr4%TtC|~_!co>V(x^^}5Jhm-mZS${{Tkg-7~xE~;;vGyg0w7^3Ip21 zhiL?uo*PqYg`oL7*W7q0P=1evR4PHO4PHgPxY{dsZ`KJzDVHu|&P9wIO4FAu1;p? zC-fa?_m#?ookquh_L*8ZI#N1Z?&9mcjE#OX>VJGK@ieoN3fIG|)-PL6xL{ycX#BIB ztp)F|?||A<7&5pYXS_0voCl-pdj>iBA?~9v!xjIc?W#kJcuyFT6Wi4fD8dg@L! z>acW>mBod2QNckJ793(#oUo{;)B0} zSzKYR^Qu}U9(z62gJ$66|zfNnOE7=}FL z#7S1V`DM|dmlEPKv5+WAKH{AV)a~=_rmsc|d>U-Ox^`I5=)PlS4<=DS94^Zp@hR{F zCFJYy>_?Y6$ZaAW?MgAFx_Js`h_k#&`r>f2wU>8;*lMk(z=YoD%ip1z0l$T&*xYSc zRqW%dX8ZIQA?N=wGqgDPVKpKywxvc64^lMu&6|?H`7csBeD5oa>u$?3+l9gs}>>MO+xKLJCc}!9`|6CRI^}fc@2{JaPu_AV#~> z5Nr1HO`1hM$Hh@Y&?B*t36u?Y>>KvF5*Y9iY5WZV5Foz$v$mEykj1#oF7>b~fo_PW zpWDeJVhb!Y$g<<7+OyCb7%@ejtOUfQGaep+Yb>D3y+oY#J;RB-$Y18|elsR4_>*?1 zfTQi!EC3Hm?gNIWJ|ypBh?ZM4A!QNClHvIFyq+k+Ir-$x{WVK_3>RYT-8Bc2-%0AC zq;oX71Qgeek#16RK0t`i3{>CB)1(b$z9ipgfGQdS@gb0BN-lt0qMd^Pd37K@E7}ND~Os4gF;t*LWw) zE13*Y_IP+3pD+VIy3w{@SsJ85C2nfI{4GyN`jZ-E+0|rO_hnvKF6j%m-mzv+d5ki5 zMqY(aq95M}z{B_Z7}$?|UCDrU$5Sdm$e$g}uT&*9UE)9W&FGE%=rVI8s_Z&}A7%1Z zc6l9a71x0bztmpKe2jP)?N zCCv6efcqqdegELy;Xv1ku;TYHjl8fz-=AdyhXq}YLPWjM2%v37Tk4xF2mmqR4_cLa z;Od2)|Fuy?;zw2M;|^r%xo4Xqn+vaFq{AU17_HToB0Q)J3sPVTNblXwv67P8SALuh zDrOAl(=yUK)N&s>dnKv71&(%SRRA_4LC0oGFB%5da}2Grd2#6`RXjqNDu&+4kx;uZ249IDbgG&q5kO(OJI0U%%q$E|hrv&AE4 zChzW}giGHDtDVU(08=fL=5>{8_HE@Z)!Q+@jk)!4;$>m5Z4I4XoF>7j^vh0aD9XRo z4aUU~*#)-yq^)Ki^#G(bZ5P+!tUX0*vcC6zWuJ1;Kqcru9ZjA04cnv1H>#f_0#OOB zTobZ2S(kSQu*1ggo5ZNn#RsN?N}2lWwP1l%8!n+0mnKXz!ynmZv;Asa7qC4%eG1($ zD$z-Ix5kT#td&kj(D<46V%OP^P;!{@QP!B!`3G&9-(=(zyUs&^efZ)}?u?qB*#V*v zX6>vHnp64KCd%a!AQ8kPBOn`OXT>^XbAv9Kg zYJt747^?abuPw*MJU;FK7`Bd-*sh_#s9>ZbiMSL0vv(dv_&_PLJWGHih+AlYOkN~p z|MXSNZ84>ii=L4{{wIZgM`$*Wed|nm62=$9@}0nD#xhYco8@m-@H0O&bz`;!V>OOa z=85V+((j7lOl@5`Z4(;}7MYZV!nPCSs|-l{5-f(&_s zx)z%7)jn_*CQ{(nKNP@%^MGoul|-Bq+l13$Zw`dLMyPs0jF^gLSATg zTy15!osnoQ^Ejw&h>fQpzG3f!`U6{Ek-7t0?gnHj7idmRqcy}OF?0}r$E)p>f?-06 zW0#gX0j3GlGazsQQWmTwEH6p2xp~V@Y>ldJYGzq4 zygj}PH!+?&_yPs&#F<~<=n-lferF(FuUu2?y%$TO^F>3BLRL-9Of#~jw8`X;BFM6+ zijWZXLb7BlLn6sHr-W!WQQo$==x`f}2d9>)aqW!=d|X;b`u4rXVG&Ht8udkWV%vQ_Mc=u?4OM-Fm%qRPWz=>cZ+7gpI+TXwpd)Sjf)KsJ@T=|uiuJ8PlUNc4 z51L&`g(!f{xZeaLsvK{-0~EWps<802p?E;fSTV)}q-RO?0zGHn)>9<(kv0sx4*DHm zp{nE1*G215OJ_*XiazO=aVS<(;U@f6U6#}qU`Qb+ca}sR)O1LC+_b}=S%=$m|7Yvz z%)vz9_Z>{I>XT*6$@|cQzCikQn-1}%JaSNr2qE5v;w1N!jyZ~`aDEe_e-r1o!Qp{d z2%TpDiwSMTJgMS3en+wQSp--eka)224F*-L{uO4bGyd`+v|Deu(3{xznD4)ZS0ILz z=SO8&4Ihm!QZJhSo(^+O1RBGi7 zdf0gtGSwI`CVKDM#zpb146TuTi)d7?Y zGj{gsA#9UFLJI7+Ov?~agKih_^9UjHr{RM!+~N%w5FtiUu* zVfO4#p~g2x_~zlVvcf<#e|+{O!Nh z#4ZsCb8g`71qAv6TniD^PUxWvDE@0GruE$Q06p3=M!u+5=TgEMKi!6&8)rhlwQ}Yt zh<+kkx!$OvJBzz&dFC@D*J-KDTv(PaX@xCjr@eqym%Rky=1BS zm+V&d0?-V%7@jy;Ey#)b$meSP5DkKm6${sc75eM0wb%LhJ$ZixCw`x=@O$#q5OVL0 zZr$8#j^}`+jvMzwCv#zZd&v!`YV=bW+|gqSTKX7NXrW~KOyuRTkozxO^8W%L^fG$; zLg6CbmVK(LHs*(%K}lBJa|7_~Q0D+(_uR>{G`S<&`0PDE=IeWxrO-C9;LM+USv zBO)Sy1+Eq^`g_AB9yftryT0w%jbgWam&~v=WwpkuUtscW%G{#u`O@ZK%0uGnboI<` zK1FJTiHsnlnxbv5v&Vw*Ufec=1N{B&4LzzuVG{6=-TZ?y90)*t&{nbldZs# zZ%}+X8Gw5X-rf+t?%ONruzzO{5#w;UG945II?vhYH4Y^nRLxxj${=G4ys^dOmU1bM zwzQRX^zU)!vpR4gm@FN|3xB818wzxSQzq-kqr2zj!4>`t!leiPpcs$HBqqJ=;7-1T|13do%_tRcn|5_e)2NvkBUdnGjx zXP6qr36-0Ge3aQ(%P@nQC36__BS+6w)bZNIG2iIQquffBb66*Gl`mAOwXPR9h4mO} z`Mb%N39zOXQWdR>RiaXJ(IpIs6bJDA5wwFUwq2481TVIA)#v46827ez~T;44v8K3%Haq4WCgNahAT)uU_ zxxvUD)m;H2R4r_J;=aqL5iemH#y*3MA7dpVX)HBnoi*vaEb_bMq@!uj0e3Kb7Knx& z&-Y^C!vhU&cW}}G9x&?q)4FjEGAwNO-qnie^Eia#!&?cG`tG$18|SFDwFEFwLnlgS zpsz)hvP(|>Sfz_0eP$G@M0bnT4K2oJpRQK*eeLjo#ZwEuraPGhi2a|uzaFlO4P>(_ zzC&0xGEw?hN&`Bx0(|?S)X3f%O+GBvgC(wSg0!s7t|MS69BKgni|Pq8MS1?P7S8Az zD^x1hzo<{%VIBq$@z$5axY!$kxAeH$^+;vu@K9b?>NVp9^7+JqU2Hznd}G8fo9{-| zo1kGBR&KiBAN_7&Ov8~gjqfV>!+&RdkbHhX{QprVEQxZvHXa;*EA=NdZIFlw6cAj} z?JZd>X^>ZTi%0f!3B8RFSKRT^hBrjs)WX@a$Y83U!5pwzpDtX95hF3 zFauj=k`UIYDSqF+XoY9u_n{9)Cf(t_k|`BJb5~1ZYkUGlq8v?^rl_?+8$;@Vx?DA1 z4)2V%p|KJaanDveskr(Y$oZ*p_V}M=v}28hD_Ts$D7~JuHQj%5SBpRkS3Q>3+{EV6 zN0S&C$8yX?U5~6&wXqVj6Kx>{y~z^$&5zI zUJ4qDnDzNQjB1Kak<6Z-H5RQP9k>A3Vispv=yrvlb&cd8`}@XdL1=8ghV7JQ?UPBI zpyqBiphAwav9ga!`5w;HU)&xfm|s?Y>TehYIYTC$sHbDvGRxHeRQ77U-Y#Dg#4IUR@6X1pV3^(0wGkLok86nD8hHsDHqCPM&15k1$D^EMG3 z%`d(p(o#GI8x$5by>-9HZopgT6Wb?92=)O$YvwUHRXh2e2GdNfxE;3Lc+6QBBb+Y|U$ zdvx%)HvF8d>vz=T3T(#%nswq8N`1T1#a7IR(D;I`VP*7*ofsqh1B5o< z7pL%0y3~JqD-m40%sG^V#PdK%03Huyp+Olsgn_uxyY6+fNNNeL76NrBFkNj%NwHa^ zkmfQgsG*QOE{>;VB2X>aML0L3p|m&O63{K=bbK2T4#Il+MPk)CU@_2HwPD|0$6s-vL}>*=d;c;642B`X+`ZrznFncB*TFnI9yb=0;WQ~dLl*(Rq z16N}MrRownx!I3ZeKk50C+*$a9(=Gk2F<8t8dxe1oP;(%-7u<>V`H(r%*XUW*-hB%5kEV8$KN5O331;fB)!ih{$>f+$D<^VTlTr(We-7|wFk>^tvY0rRx zHbAOM;JE&9_#-VEExCq00B2TM9O3VLapFoY-Kt&eGeq|w1tFyJS8}-op%9dSP_k^` z4l;=UOFZgUoVNSw6kV5<>1tBlMLn`;lUX)0P45BRoO2CbK;VYp6r= zp%1SXS#toa`xY(1D^dql#qs{9drm>S4|^*y7esN)e|a%`QHH>YD$*fLv@3@1=SDNU z*7!ckMc^mgIP;){Xs&J~wD6{5X|>}3*J+53*TW5mNVEgi9kUanag>3Y4}BAK_qxN^ z$+&2!9m&JTqp)DLra#rZq)QLmrAUU09R9y%31=|C3zY zne9lyMw6qH{IUA0Lk~oD7?j%ykT_0@=ays7d1Aj5ofDltgBq+@Xas=kX8a-3(fAnS&q|`^O!sMw#c|D! z%P@g_$CoLexqXQ?{y!11kucbU&qh%u=?d8sm z>vXuaosj=UX)MB91-*dn3K+T-4C56L4v;=Zdfr5YEBi8s&tYzmYIacQWtk!o4+!a}W0FA^kL-ygTa>$egWZ5QiyL1?3b>?QrFY zxOzD_arfFtnyw~$ax8;k0TAg2>!wYluQndTK@<+Dn>4CuHI5IZ1w(JU24l_VXQarg ztIkfzERWD|0G=_64)>mOW<%p#ntpkI)ck>6D2B9jV+6 z+7d#MF#=IqS9;!@CAjQcyq?SOYwafoi%$@~4!`5E_be}h=WU*yvV- ze2Be(4ZJliZlDu^p}ZW6b=f1mzjS+BCXD&mL3kt#+t`n=JemQnH&tg^59vXiK&lZ; zQp=yqwDRruQZI|#u$vO>3EBmu1_=cGZOs1{r_*!!D-4m~zn*S)0ZOn}u{I5o6Qhy5 z%?i;R1feIKtn@w>RSp+)Ht#{w3*_9SbCc_iWR+ib0@em>|GC&oWr-I+VPd31wzdxH zhG=kM_s4eCD2N7ZPjDcOswCi>eZZhN<~W^5ij z0%1di)nNJ!^leBstBseWP6x@UWSHz3Y+a4A(;dtZ^g{iu&%~xeoN|NrdxO_cNO#~{ z$v7x+J|ce>VIkIyu2pGKcKq_C=p)J+Cx!e}hdKmHWJ9eIoI}-Dd&U%}$p#AXl>Lvy-3f2InQw%D&b+uhJtUTyr{`eg;2%`}w9j$zN@P zo8_kh-8K!E1;p8YJnR)SdO8>tUYBeKq>?T|DKtJ;u>wzB@+4Kg=*S9VKVwpM!3ivwiZ-)#mq3&gG;A!w+bRH5*;=LF+2T+ zP)-Q%U;$C~izP5_ncjn8A3)jf$~GexpB-i}2@Nv?1&M24X2fY;U=#^q?xrmC6b}#u zP4s)lBomlvT2SsX5m`X3waG0J4;X6eFD(N6PYr8m-E(Nuo=;{SFg30m19Y7w z0stg!Zz#-3IhO0Q3P{@)fU{SCHVW55CJseIyv+RKk8BxqxT&nawIVJ&m_-~?Nf)3U)eZjr*;dn{<12hUroI{h07|$m zWjzLo)82k@towYrWaJx>&31pN^+ArqPhgM7xvHsmbFmk$hsjf@vXmjVwp*MO`6iJQ zxgf@i8_Msli1gyEIFnb;@d-;`Xj1p`3d3?I0fH;uvivu?M~7}}9J^o)NlU}cyQ79S z_yu4OzP1p_2o}{e0mg0JmwZ_cQn3nDJy3Lb?=l^_w)*2@(76Han=iqP}04yy?-r`&sKfxWb>kM?~ty*(A% zt+FkUI=VQw*&(d0q_~G9#qovdkt(mNdf=T&SnyYnFM7N%9dnYA{X`<~Qi!mBIavy7 zCRpaJg-O8@)cquM$>Eh~X}>KPBW6!=kRFZPHi<&Q+bq*Tfca+>(yttc4o!9-CLdu` zFEp~LPWJINF=&w@6@$BwPN6M{O5Z-k3=5&5(SROAj?jf!vkLXwTP|lXlJ@E)!TnMtmg&uLuUbUZ2&@HyQ(T_&sUeE`I5+a2 z<0tu}jKp_aUvux&?XTScw$zCem#N-l>&?Y9RYk+93DM5)2qB;&*0a}ISimLmC z^#bnHeWOpEVA2&PqoFB(1HPR?4l5mM?TF*Tm1x*^nv0dGgN;^(vx7jC{X#oi<3+k9 zpLbhG_X{D-rs=;8dVI&`=oSWoVu>5frfz_LrVX*IFJfZGx87MLMKhA3i5nGe4kCt> zL=~qY+o0W34Xbnd5yu;I97N&Vr(Lx<+}mG5`a?KS`+yX#_b7#>BXs2%)*rORlrzSa;Oy2FWkvEkVm6|npK(5SN$zzz=vm^}RS__lI2PB`obbo-Mq;#tV8s;kuqSD2o}6Sxo(Fi=z@KiiBcF9O zCl>!&*X}alEcvPA$dt|?z{j_SUeY@Ij$23~kkYZ@ax5#3ZLT`Vc&K4tOwsV(wI;4m zO^^$tOwDQgn)7&hVw?tc0VFU<=m|f`gGuM6EEN(- zU#^{F4EW3h+Z-R-v<$tY-G+3h{n8WS?q98YN5HwJ{V8`BOJ~YSk_<`IrY!9f|B90X z#H5(42oKwXdwO1Qc(GTek{vxBQ(Qp7MQ|yjWJ=s>|9gaKMx;s2wh&F=Uh&9gWW*R( zv(OmTg}bxcqY7i?4;k?5)F@)`QNZ)OIgrd2U%gjFrN(;zr6=_Y4x6X4G4kX#znX&! zY#R3`i;;|Ai)nIOHQ58u}FxsR23Y#iZEvli)9K5w9dZ&I zf)`^b1G0J0WZ8kH;wOc1N>2#4VTL~RuT?WMktAl^%Rlxa!71A^ridpz0t`?ZYU^NG z(k_+k5xmCy9)dtZVN$47+FqG^qW2eGM{~oCa#O-QdWHn79eryEhu8-x-0U-6t8uzF zH4~RbRgyinB`@5b@6NMdGvht?z_Fhbr#MuwQ~1q4K?}i@fFW)xM%9K58;n3=s9hBB zD@Df?peCyNK{y}+qW}Y5d|>{CLCCI-b=7y3R4@wOcqPI4>ohzHOujwYE8)Q|u1bqW zNM}h1{oCyQ1~p$I^!TD{#WjFx;Dt0$2-Yj7kFj7nbgY?S{eCrZy$LiP@xO&fBVjDFl zO@!0edJOHVx!V2=%zqREG$VJf1X~KeE2kIAs)V34>RSPpVe6??)YgaFXCjVV&SQ7) z7~`SxK$;ullfT(nJ~k1n-#Xh&;Y!EJ2_gZm`ye!;QW(`WPYq=TLs}Q`cLr+QFMekO zpjt$b1q83^`7P~a{*xkju?Y;K)uh_l{kJ%Ef#y{!ni|f6pI3?dMaZ^bP>u)W^mNvl zEMbflonm4_M8daaNHN(c$mvk5jf1{qjv$GXp zELx=%8D8}%jklDAC)5-VQuVYiEFAqDmgw&=9s3?nwKzOFV#%7<5&NQmEqJiey< zNZTWzztxLw{1bFy<0Ku%)_4ilMFkZv4{vXJr7(ad4R%Z5uCSz&m#v?|2s=F14=9Gj zYUtN4ng&sBg2?B2<{_q6Sg-vv7+z%6c+-8kg0>|iSWU7UCcq%*F(0_*&9@^EpzFl8 zb~y&V9kKzn8H}8Y!g9p0Di0vl$7b&I>+#4ai8lpyktInJR1|VSZe_J%aRX~7fcyF7 z4gu!kj+yW5BLCEmyqf}Q6G}rcSTG8#qFTsj!4m%LBU;ob0tTidA)+;v6OH(igid>X zxho!1$?V7Us1IrMHybAyZIs|6GaNJQ2vG{1Wf5PbaH|gC(XCBl| zWHjNGH~KS8T#-a$e^&!6EyKOdJOMDW}hu@zP070 zaW2BlbQW(QOJ7cmWs`?aQtcA2`zvMGDdZ5IgJ&7=u2789XEn7l0DDlV5lcigf_&Q6 znq~79C%Y=mec)6v>{agvILYW^-&`BD9_2e4d13p|FB?m(vNo5yDaWreYWdO0297Xy zmJkq9v%ph(il-wjT_w~_U0KF#8Y$()DIOT;39kv3%!1jkAwHJ}|*}0`%4Zf*pqM&*)Tu^8Vz?YmPTGq`o zV4u1-E55J)A#+W>XNm0GW~PDicG*Fv{bU@V=^s|^&CT^vy5Jjy)_f?brx!vzanyg%bd^B>`2iEHa52;05wfn`x z6ypG;!F$AciT}IO_$uQN_ofrNuj98LQr|5Gy?lvYnObN|B!Z_SqaWBlaB@el8|2;< zwDV^-Llq*c;uV<`MZjs0mJ79Kseb%=x34a_eL3<&o7_prMX8P0EKHo1eVP#z1$AP zcv`)&C(bJj^StOi1Yb;GR!uo5>clo+2vtNVLdlqz>cZ`^s+0itEpN`>d*ksGoNmyO zw&5e^_iev6krO;qKUN(Fb7WKRTW{qF1@$_9zeL*f z=jHzXNsYEtY}stz^s*$SF70c4$m+kPl=L_xKb(G%*UCCK$oY8b7V9UI=!9}sow;wz z-M~J7ygTmw;QE-@caPfB?|L@;A|MHKR0`S)gNHW7tT--~tIk%u?N?qPw*{#_pc9hz z9Ns762aH09v8&`I9OX9~wowFydNKrA!n-C>)-`|NNxXTcfa`a^^FW{v|1u%I`g&5CIh;KzYak~ZpL5dx72Fp2}W((ejHxUj^! z#{I34p|jn7IO%e`Y`u5!OP8q9j2%0@Z8`Smmna;%C%4Eyv0U7IYiF)>_0y0_zit#W z$Aqm!A4H?L#Dsy--q7)KKVZk+V1yukTk=tgbV5xYGG(% zAyFt)pFx`VB4@#j;u(v1?wgHIWs&Mu=b><6mP>5NtA{Bw_~K!!}YA?!@+O>k`1y zq?-O3FOu+5Cw;tZ?@D)xQC(jfi#{YE&#qh9Z+S$1>0$d$DsP1N9Sd1_W9^bB?{H@@ z(4d5#Ma!Oo9QF+junn|0py{Av!i$kCc3OR3zw=U74*Y(Fcrc#=!@>Z?> z$0hG)rCZ}z2z6?@7@=NlYLK9CLlvq=v*;xQQtWoO6jmDhJzOMEtBU)+m&@NX^-Hn) zf15qsYi17$^C%8;O}ild#FRf0_BGm(b|0jw$y7BO8JaYAr+N9lDx3l;oGw6W7k6nM zbpc7gx1`bhr*#Ci*h;P4`9oyYh9`55o6d@-qnpH7Kpce0ZhoL0_o{p8G@=^>cm-?O zRI2V;PhBX(Mb+Qcy|DG)-lwneK#g-zp2>J`L=1LZ!{s-r@V54_MUD%duB_KtEs_Fa zz><)i%@v%v+168-;~2`r^q#>PRHE2Cb8di#-^%+;*gL`|+4gkBJ7TUK&4repPSEP!^9B?Z8!|Wf{v{M-nf=#z~B}h$%i!z>gPW|dgO65#Nww`rl zRFnk8r?BPk!kGQyN%K2_`adQ7l+lT)3&8Ej7Hci72){c)Zc9jzGN(Y9T< z_&fpWvW4gu1THa;Gl>oERwF%T(Z+5BI?6RJkvtz7X=h%}1IzSP(u;Qh9>$8$1{N8x zI4nPqfoSoFt5pE`wpP_v1l*0MG$_#G&ML?D%&7b-hip+OhCrDOLmP3CfhAMB1r4>S z@aA7$Qcc&gP0yoE#1LHMfV8{-LIE+tE!oDXR)7vlKX7OsFhSiaTw)RMzlAEL_*tNf z<%wObD2mHW$#65g0yahZl;?syPSl5xRzWpXvEfQuq{c5h<0x(YyqRmGpUt*mXNTB7 zUqS*j2jMxJ(Fl;xtvhGZ=blRI@1weP$yqrSG-B|*=`b}Nu0L0aB*SPlHsMb|hXMV- zm38WO+IX*8VhgGsOeTSjMxJF;|K5%u`R^Pa7r{>6OVzwj6WP>^I8+e{Isi^b>#7hf zN)tgO+rX^u+C;@SP^(4}1a`#tEMC11miq?pQ#VSEf%9cW6; zaUeB``K+VL{oU@Uy}b_Rc2bYn;;|s(lm2)nYdy;}!rk+F2CgC>&puZxvFJupio^Y* ze*&C)xKLoXW_qzEL#FIo78>^@L6>A=mLrTB3}R%{IP}rKAJ~w@mf2QrDZbLI)x`?|}bErxEZKfp=D> zKzLXJt#1TG?W%l8pzS>3E>8^)1*y2JlawDVsy1c`+$w_^-kGJe0xw|uFX)pGkz=1y zv>L~G3^O5%rq9f%x=bSydr z>5OCO7v2SlHB^-_AqCcO5_cYDkz;~}bk^R?0Q^RLRy6nPxMc7jO-n^T)mSw)FuVOb zT(s3#{QgrEqFMQ~GMyBOIB}(6`ruRimCPfR51smC#dqmj@itLAv-Qw3#2GmrudsnA zec!U+r=d6LRT`>dM`+%t1kLO8XPXjFcZI2J8Rkk{V$$4_5;z69NJxq8bus?!<>7aq z+Q%%7lq@X}GxO%Z9dY_`@iVyZK6=fJp9by1{pxt@2anc6RwWD=NrC@exOg9;=%N3m zDt(oim=}mgZuIjCzNm_LE>#`sFPMmbadY}=zSVw!v>yt4wja|MXaLe3Dd5aia}#fC zp?x6ta)trsg4|a~SmqdJqfN=TJm-Dho>m)#RFl{I_7@X;+ir$=O`)U*nC)1Nv*?nU z{2J0Whn$Y-g|n>Baj9*9`}ZvHc}o`c!%}9LKBcHJO|k;a>5u;Vr4|Jk66CWt_^(uzOVy@VP?U9FCpZUpQv9j;A|>8c6gY?_%c;I*z^a6>YZ+Nok=*@mcza0_mQYl%au) zkG{Va0oXmivDy?~RVzD@^u zJ9fL!N0*TReL)4Ja~v`fCx5;nU<7ze9-M3ZpwE`=&6LgeKk988&FZ)1GC6dhkM=r} z;?wc1LcQ7#lbdotXx**BSG3jx)DnqZ6*xy2H9*_Ht*}U3lRH8xa(>)v7SA$Ef$B21 z+L3hS>-4Ft3It^pLL+$VFf(?=QDUMm6ljWlYPp`}00SAt@n92!sVz9%B%a$$Z_hWq zROpWeN4|vt1fIOUq=0J7tesTa*9%@bFM#h>GP*fXDAq8EI9uZw=O3@Qcpn2$0Ej=1 zKK7dqJq-77bLRmt99J0W&Npu8WrRT<@B){W?ep~E3!>6tIGi&NT%bWGmSfNQ_@n^e}XotVJ83f|?Zf_~Rum|&d&sTFJYX1Ap| z^ln_9-l0vkr8L)b;6q2nqpy8nSi)$M*=7xB`Z3z%lDkHXo;SGR&btX^jaKKi48~Hk6DH*lE2C|Y~Kzd9tm&ex0gy#Byn|yfQ%5y zm8!pN=>JiYH21wQqqse~)>9UmXeMwBD&z%`vU*(hpxA1?ap3Q1WnymOfWEIJ(qL6e zLuH$*=O@yXEoebzSx#UNX3qS2Ob9K(UzmmCRGmNNCU!5f~k$EkmI6l($2mA{8 zxb)swf;t2eOiXNqIn5yxW#hO#R-CEu2O1SUO*cLVc85r|#!c7Ec~i=}b=$zkfG@@Y%!6hI|Rk2YEt zlM%@(3XVHyviClAuw`HG>AC1h-$CFby}WU8SQ;@(Bz#BHVXdx)*nD4PSOK$;myh&J zyMt~bBb;(;@|+zR+eSndstFTaE?<+6Ji|Yh?>=a&RUM||CRa|Y;`cgkzMP~*^y%Lq zU8ATE=w>iA)Hcd*jB4aDsW(s%vP6gGp=g43fMi9_GY_?%6|v}I1~JFL4w(%D(pNRo z%61!`A1x1+CvAVBGeaMU^Lhw-iubotx3o&%uVQ0Q5fyUYB8oCGDnIFmU^U4xIW|K| ztuN%6>7hmV2hvlCh~e-bY51|)!>ve30u7CjJe?PYMSF_%Va}!SCRVowLSsUipFSSK z1Pd`%J*fI#OubdyE2dcHn$aWy2r%Rhv%@CPX}0NI0pT_~g`{b11R*BL_d3P9yaqb? z4^(FUR<5&WjVuc1#b+gr#7dgzL+g%tY7E?=Vt-G&o8(+&ZTkpO4&b(VSiG5I@h!S` z^;4?v71aflHp!CGoc3}{>hYz)61E`KiVjF76Ksyv&`3Z(+%kj-1@+HrJ79uf_SB@m zE5T;arm~ezaFnNH1EeS7MO<$}fN=?~hPOV;ZXkW7d+0#AHyCR(cKA?SOJxB2BjKAu;)@SB>@m$K#V>hr1KH ztQnBCDRIxL^cr8fwfl^qyk~|2Y*X!cbIOEQOApR#wKie4B4XE179lH1xI;)I-4mCu z7|I=gcur27&^9xK_3;;2yZ2%*BpNI@<3;U;jLQUEc*l!@3#}QT805T0&feyR^?vPcelo;rn{eGQ1{~O5Yut-`0mG3$Bt}k{tEE1Kz0z>~NYi<)@;lnO9*^3BQsA{C zl<$YhCOa2uJ;QxqAYc1c4U| z;EYQz1GXO9(9PJ#%TEW4CyQ;=zOkLlvnLZI7X~~f(m|yO7SSjZ#Y87i$(%AN9K^1Q#^fL7T_8ruPArwQ!E{g(PNO2Jp|#P zz;bG@f|+!4)S6oQ?fXZoM)WK|TkISC+8X5h8V+Y}K~l`6U5 z_80mzt?NY^JkZ{hL#)zgig&?{V(&iQI>znHp&DVnY(0kE23zCzvHr!7OBoh@h(Qq_ z{}TSG5j;17;zjmbfIHvTanktmrwaVNVB8}+Hl4vB$13R@;t~LVl)H_;`|Bhye~JSx zOVV_sICxav>fGX8*6hhJzjG5 zzzyN}F^2~BzOSVAr{znQ(ly15A;knz!KCg^lyF%~uN;;e*}StI1|2%$k&FnEGsQ$v zQhUJiWY0}Z*_600---VQucuU>^e=YS{j{x=ERuw-%Cpl@=JQDGgXJ1Cq}AS~ z7r$DEE1*{M5HF$R$M1R)u=mxW^1PQk(v0YNcn`(hb(4`26aeVbzo%Rb%ar)}@z#2lsyhV%>>jA9sc7|%jOF~{+ z-Dn=>`1(;l+*zDDIt=v6-S5C+Vu%X21W_`Lq4BPo+pKsQldC9tN30S$IeV1pq5Hmj z{vUu5H;mc<3wc`YsrlOt~WUqnZ2TJP+TH%^<^Lt|t z;))XG&>AdTMm_W-F+jNeYco71HH_*ooDKY`CbZbc;t*>2-*LnRs^ku#Y~WeYi`$-@ z0=F{F8JEA(IKI-IJGh<#I#AFv{~e_HI%_pPfUkV)985d!)2-;}U`KigVdWrgCbqf~FB{F}cLOr4JX zQC&0y07y(9nv)BdN_u%vs(w)}%VQG1nT&eHF9J-?4et%T!mBh-|(Z)z_ZSrKoP_iaip^cJnTa_^$-SEr1okg*S5 zkm_SdVBEVVFFLPLGs0-Ix|;sCe2@cXCQPsb%j5y(HZ0Q=I_qW9Z&Hod^y=5yK2CE7 zq~QMquM-T`Te=CFLb?JTf2v6D-P}yX$LJIL9o+Ll@FnbSux2fTlU6Xw&wHCjaOj|) z5s{Op(Wyu`QumDShdECclcEFaIf)4kT1RRi1v-4GvWG0(X?fc|*&+t1px9cM4==j$ zfz*M`&6J+xB^q{S9|fJS*Jvb?!<5W2GmkYGIg=TYjRo5mX4tHCfxb&9)7i{YiBB;6bcfL%LPSRd{Oo zx6c`wSuT&6OfHj2V29%W)5UGR5l1T1!oyaP?p;2MI5n9)?7hXFI?Q{^5YWarF}Tb+BfU#JV~O{hk>%ms?3}jHqe{OT0MeW~r1J4jZ<8MZ zID)p2ziG!`lYT~wQW4dsvh%{kPgP+rFX`>tFz9f_|amJ?W|ehh9N z^;=MS5nDbQqi8c^*#Ck@!pP%P12ZvSxCnymU`JpFk`rxKH|wJ@?*`Y`&K?N9*)+e9 zQReJ{7_EvT6;W#-d2^y*km&KgJ#UGP{M+odoO4+vKD;yS)`Vg9TzOL;Hssk{o!;F> zKe*FWr>C+h`R%R8dK#RV%x{1}*zw!h%ka`voVaOnpu?x&PAHES9)Z3KyBgN0#)0k* zCm{s1twYmJ`MStlX@HD*7=xwygZ^V87<9(1|2{Pp*Hc_2g?9opZXCrpne~mI1e{&@ zK;^nfUzvA4(=0By=c+f6s#hd#L#lk2_eLqLM6A1I-Kb!B5^F1K(*G>CXPV9kmu*Ul zCRtyUlpG&XL8R3VujUS%K@K%9wEFJ{8cI;(R44(F^ zT%v(_PD+{hm`M@tT!)I)%s{MYzFd+(2)nec2l8K8?sP--S+}+T>APr*80do(vmg5! zO*N%+3>GWGeiRb-FyJ1zK9F3t6?RupL%^~KqMta|#d^u=Eg zS@ku}lsHQT%I%P)d+MfX5hJFuo;|GSc)dwIL{+JDC|GVRQUx1E!g?9#fo6O7t5e)Q zi>q;N=}+1_wUKHe5k>!#z9#tKVis3f9F$8$l z)!Wl0JNr3PEiYc36d0WQx)#>*T>AU}d36UPHQwW$UVK=G8G6hhlB1aW_IDEz09-~- zSGJ&1w&28)Y?5V1v6chC)%F31ddK=k$Z&!n^gP5zl6&Zhf-ISH1F_FYd#Ka(J*(Xb zQ!EY>^T7?}5V-N|Y9KAarl1k?dbtq*u2cR=U`mVs?^Z4&qXBitEiWUUQ>;&7G1NGU zRb-AbvFj|kmQT0fmaiY#;H4QTBs-|;`x+d!qQ}@wVh0j~9uJ9Cq=|=Elu{c-U^Y{y zynN@6c3j;(EJwmHE{m^hioZz}>s5N7Roo#e8LOf(kTM)UIs?a^G>^dEr+W^Oz89=` zBcR3Facv--y*N=HWMWe8+)2iQ=P}+bw4SS$3!VkLn6tO5=E-$V`2a^ixW7KO@>0S& zU&7KV8uPZHED{P~DkSzt6E3N()F)pzRNj&}&E*?SKtmER@oheW`sE}F9U+)v$saNY zbrc$sO3(hmOMXC?9tN1IHSGn3-TiDKjGMndKX{;gT?j`+J^ZjvIsR0=DH`Z0%~^~g z+h+X-#2Bwf4ox2ruKb_`a?b6$G`|D^)@xL;++pU^78XH3&r}ckX`#W&`G1&`YUwZD zt?R&_#97Wa!jmVrI(hNb5jSw*Ug?B>nD7Q`z&8UDUI0m35gG{A6?}RF4V@)RauyjZ zk?9u(y!>YvozO_Fkiz0bO?G`MOp_Rq%SN~1AjRvNlgv67kpzw7Zsm@P@;+YG*BnD4GL##zO~E zl_4tOa<^d}*Mc`D)0Z&G-2F;!IrKYB-1aCi1WJvV+KC)o^al8&QC7ea2>OiTX15kc8N+Q8jO$}loCc7ksjgu+XL1hU2FS3LS^I_)l+_kFROcQivZe+52d-@X z$ScwOnkKmjB1yt2(H7GJL{jd_ynM>oo}ih55)HNE!`2p<-OOFtlD0sJU2%Bl>^#GC zjVzvrdQ`dAB|zFw#ei0^mO`{m5b-^A9|U9Vgd^odq3l6YtCe(kZ*|M(z_T0ckazf_ zCOoz!qC?9&Xq88&)7QdqA8yspOTARB=14}B-C-yOF2pEpYs0u3b;IMp*tM7m3uAtS?r&FL&+{HN1p=?PtEUhaTzr@F+n1Vy93hYQ7C| z!4RXg^_n?J1-xn8wol!Z_$v@gn*)RCQkDi@OuD@vh)^%c2+x}Zdr}aPaPLfL9xO2-{hYd_g$=)yLRW_xDhrOeHCa5{ z?aa8R1{Y|N*6upwL$YO}lZ%E^gCMZvT=OhYvKhAkka1U9wjktLsCYoK<^e`@XC%H# z2$y$C5LK22)*{fB5XR6QIA6ot^C54F(MJijDB^#TAyx;~tJ`K6hO3W7&43}x&UTTj zfxivFj6(SRJjN=)s3tliG?z>LoZaG7zrscRLF)ZKXh%KniNQB*j{2Vry_Gm<&zCfB zb&elGyIlPWP}P}q@fnG7c2Py1`|Bhkb5c1;;R{lF`tnVdUjpv!baMz$SC}vFIF6EP z#mBUsfW5}(khhj+>0E8x)kua$Zuf@nF;vGh6(x?Djz}x6+4@#n*d^I`!%>@!;dQz5 z=)kvRe1yUu9N?N6qjB36-oD8so<~`{I#bGA{lL=$p^=B-l<5+Yi5l z#H>%Dww9@GYFi=fjTglOkQRZF&#!$tSZm-B!-kHo88ZnV7rl(CcB7@vjQ=5i|3b@h zbI2}UhkBzhJ1|>~Z1XzgWoyEPAp&UUy2a3{S%X$%xF=$qUG`i`1$vUN=ap1wcR+Lv zH|}GbbO#Zctnwb_^ZRjPS$Aty|^;d8*j#{m;m`~p?eLF$vl`BCLW?Y_(L zUC?ufS)1P07DpIG1LHDiQW{kApT6>*z5LW9Eb1RtrC%*GQQqJYijJ=c5ieI6>Gw;k zgW#J%P3P}6855eQ^C_+K%*rfcYpligZWRcmIQ-Nu8CoV{L#mi)vV46~%4KAZ)j>PP zAw@*DK$jBMvH$#9E3-&sBJooEps z#SHljQCsE5LcNUASQ1=({dZ*ruPI5Q3m;w1ir*etuw>1(Wwe9U9%oPq3&WNCNB`a9 z`|1s{GyGKv>bRxUuI|D=UeQ;5wcP_jYgAEI1s#s2voL@dA8sG_GL1h!sl11xvL{-& z)gsrgxHC5qGnLvJugg-^m>+8cM6f_40;62OWVpX{67Guq=U_{nT|dLJ$^|+1(fxnE zFxd>>x1<_4s~-eqBU{P^&t1h08We6qNcw^|B=Kw%Zabm0*zB~z;TL(V=&5~)L*ugd zHprAV=M9l6Qt$Ej}!D|2TDLs>nh)HMR)m2*YCiO z?z$l49 zrs6nXe~a28P$M+)prM+$v}CQPX4KCTlRFUTzVZsOF_hoJn86B#Z`0Yv0W6=5mkwXN z)Ry|Ywn3TA6wtbyd3%m8c;y?70@Qm<1|5jrs~7L~DK=M-Do;*prSR+Ro(^**9F=Y$ z?+l`A*qQmnAUNCGh!zQndN11Q$*$_sqQG4kg>)+3+erS%J;#$V7JyIwtvRE~s`0;x zq#jT}ZcF&h0prt}JEd7@X0_8eF~YE~Ur9-q<#vCW)=Vt8`}7bM##Mb}nnJo*Ewo#$ zwa`;_wO1WODQ=6CL^dVhg<=CYS*ryc7C6p#IBcpveYWHt?3)Oar;Lqd@)VPda5Ri3AgB1%&x>|4ff;9!1@=YgN@s^8iaGvB!fbX%9m7_!K*@ z^5*!0b&hfVM16!$04-*gCRXeR7 z{oRblyIdtGcs5nm!qh+twnsaIq0!#i=bn4i@`SKIo6W|C}*;C8^;rEqXjQCO1_OFb07cD>=Yi{fwGPVr*#^kM`q$hPu zpu<*D{*weYBTFm6ex)t8W=l@;`emQ4itHOYf>)V*a~g}BI%BTX z_b;!;03R~(6JrSiF49((U&b7(e3ovVZ9apty9-9Xn}#Yu0c+|K_>X>z1m@B%ukG^H zgyshjJR2Mt%yjhZ?YRQ56ak&OL$yy~+h#0e=7B zs6ECt16y`HK{#0_$VDEq9zV_V<3I(8Tr$~AN2JuLJ&rW?Z_p0?RNG#{S?d=~;9dXD zb-G(K)H|${uTsJ-bknYo<6HYN*GUh3$Vw-nrxY}TjT{@4@ z(VR?X{ZAm0;vRPX;BnD+u_ijeQ{*hT;*7NVLy!A5%r1ard3*jBPX!eWUM~B`J~Er| z3LRns+oLeN`b8pjC_#=Y`>{^=C_VF%$Z*&+tuuoP#vw#&tk3j zvds{a_NiX?!SLW@>m z!zoX1)1SRSTYL3eG=!pQ5_mZKxUOtOG4peV#eTAX#^N5fjvwQEtelNEO$#Pm+p2k} z_{UjG$z)Y%-1i)LL9S@82HE^6LKd2URzr3(-AA7emA;5Oo@b^7ffk+u%$ek!KuBW+ zcxAjcqrCv>O_3zZb$@T&HYm67 ziUvkG``NoO9g(a}?x=tn6vkslwNqu6i(4Y#r~weM@qk`U(rj4sVlL{(1rnxO2P2Sd z)aTiF2i-Qc?d8H((?-mW?L$k0>{d5{-x#)FYjUcwSL~^wU~tG6yY!jhgVi+os>B%% zvGH?F$&8Vh6T;E{7ns!q|IEvK?rC}t=|{Ko#=8ji6gr=o;WvE31kavthC-_q=f*%m`;hEQtHbR!6% z3%m)Xzj1fexWME%Qae@*vOy0eV$5vB#`s7d(>L~RJLLI5ANI|8>2&mi7f`pONA;A2 zbKfkAu=f>E1M&H%cd`>db!OG*RtbnKTy|aa| ztLj`C<2Fz!C~EUN%*$ziGs$~SHrbnmxOI4jDQVKRZ~Sg~0AR94Bd*$;VLD}_cQl3I zD@rx$No8hjQj_1`yH1}_i&Kw%<+D*UPI19Voty83w)iBO)(R&P?6hSF{nic$q+iWk zhbOpCdGR#7j?8L*kb6hX&Tli?WUVRdf_IrSO}jWh9(zfp^(f^Yj$XkzG&}NTHF7pd zr!EH~a`I2R0lQRfGAddt`MS0=Zzo{OKBl$-2Ji^uZYn6w#+wlA9(rgW&uFFwelJuW z__A_x?BGnm-w3F9U3=D4w=IKdbS&BLqEnf2JUQQ^B zRRo(uboQkOynl)#5eLYbMD75lPcpjEE2v!{QQGP3UDWSg>4|4@k4TXqvKEE<+Jj zR;%^>s;5Px6pXicDr$18Z&3*Wa05gS1!Upk zo&AqxspR)Y;L5Xzlc;*9Fmg#$;yRX7YHZ4czhCG81-$D_Qa|Ady^KV&I&(QfK+_Gj zW=t@ug0c_*bUvX>fz&R7y34Pp?l@;y@4=lldu{gni9W^^xCSj=U`VG{b;xXHOMn%% z(Lss59~;If#LCXvZO{;&%x60X+`GuI-~i?&m6QejdONb7GD24*;hzu@g-thTpVLS7 zoWtb>4W$d_RBf}m&iG+2Mzb%va0?L7S$DO?eD)s}7$)> zF01*0)~T%J1c|=_yiN`Jf1S2jnw=5_08FT)qlCXNT~Zmevg6?1p8gEm)vQ-`ovutF z$9a<*2c;pG(uZ0#o(jWP;Ljthwf#n28nU6`KOW$~)-O|rLPPIWWnQ@u9UX73MoN@JtG4JuA@c{GKsrsWkj)@m8ISzg+bH04Cz4B*I~#f_Uc z4~yu(`bX;kOyy&HJ)&OFKzS*=Z-YF;bnw`~LAb&U{R9pyStaL;t=}Fnf0nm3PjjIz zof~v_XQm21W&MwnCvAiVF%7HA1&AqMkHh1Ea!?+l=4;V{y%_R2a{8q%N$*lYA$3=3 z;dwdGTT5S~h>}M&Gdya*^50@kO8E2=v1dK*#Jge*i}ZK(52?8G(SbQJyoLI$ZMH;@ zW%x|$aJ4fP{Pt_mrbsg7{--TN->NaM-X+8KdP6?5fCw&vm7xcq372?EnIs=`1!&;m zM{PNn`v+RW&#dG&0L0zhds>zK0P@yTGbG%@LcPOTEhD+5|KRJ`zA@i9MRTL>A$Cvh-vC4hja8bWOrI(7X6=$P|waJhCX)^t}#PXlQQ*?ddZ_)+pWaKR-E&Sr+By!~Y(7ssNRG*Cjr z{<`r^cEKF`PX^;QA2eS)@=#fVbx?lh{^fTsmqt!qoiPX#jcL2H^Wtr~X zTL2#@5wYcdW(Dn4WrOs>rDC{a%2!t8&M6{&c*xDl0re;f&Oqw3mwm{f(+`b6L*`MI z<6wS4NCEPDFTyTj=t)ELFdWn!F?gw^;9H1MRzA*~nfiy*Ur3D{iVSaCo=ow;T>RpZ z(}5JY*=;L&0+TogaJ(w#HZ|X{p*|lMUw!$yhtdSaQAVG@)31{tF+o`HlIGVk9y+T2 ze+BB#CU%DzzU3*Re5Q3jyji zt7bP-`s7PinZ~2c+QRv%M>C{x}bc*dUjcc!MT8K7rG2$)Z;q)78F!Qk1Z{K)-HC)DY?S3cy%iSe{Km9Yv{RxIP z4gf*$l$NGw6d0ugHxM6djlbxrP4Oz)oSq_e2TfhmHD;P-1C$z_{6i6Y-uKxlK>|#o0{!ao4}=c=g=-Y`v3`T6m7lqk4b?0Z zh3kEQb`v_Hq23tt!9s?5t$x-vz`d%k0YbgEM^vq0-^v9j9c49dWn*#V(5w}dz}@wq(gz!)qX>oUPdi^%bEF6vkgp%Z9` z{XML|pDg{;Wvqu%COQl*63G+$s1HGv23Q=ZV5}{bC%T6h53<2A_;WoS_ii0wx+|<* z0^&0%oz3B42{C80Ya-uxz6t|X=+qyiy`K)WP~ioO`eJX+^(GQP#lkrrp4%8Kb8#+F z*nD*)GQg-^aV@@YhPWrs%xtM06=(}bD9zs7ax>~~P(krkKFkgu@IcMcDznq*oYbR+S}AV+=UOZ1|-8*soqdU_)1@E!K`i>`-^#4FE@A^LI+ zwfo82BPFpdTxg(2PaMFpnre?HGtXc6^I4-&_MqE^I8=T#I4~ib z;eX`!zyv#pR5QHI2-sUjJR+R{Tb-AAtUPzI6F!mkJ+LsesjUMmGTe49J5xzLOKP4L zL^yC%FIO(5vRdKtgE|1U&|%{`YhAZ=8Cf3SHixRV?B0gdyFW#d^^+}0hlJC79AFrAE_!?t=a(B3B! zA*-`V(a77i3(blXwcJVPivAFu-PixKw3T$ z=)$@+Abl3C=1}azpwpN(`QSP^3u^4g!8macVIY+Zvg--h=o7`><+@jT0zJ5&#|j&S zh0E+vACIj>xvajHg~TqvP|w6+Qk7@Tf>|Mun3Wl zWboh%U;qjBCMr(vd>~q927bZm`FEG2>wt@j_Vn-0q&WqEMkYidhpT;XNgMhRDJIM> z&OG8TQX2i9xLV5u+rG9T*o+Xi5+^!(%f^D;9?9fW=3kyGQ?;%Ob0>gl9}o5hqA;pJ z!w;|ij|s_AeQS7GCQoPHcA2*xZC3!uhgP#yUs{1NwbJZqKUI2@NvCwoCMYxc+(13F zR@vViTFmWqcRoX5j(v@y z1{EDiq85-pkqZ>xYwQ&KO-ii(%?O*JSlUVegY&$Fyh9B!N+Ry>^rK+-7%S}a zV@gyC)h3B@9N0#TwKhh5i2gp`rR9iK@)-0ihq?UR)au$p^ZNAP(}aw8zdG!*em19z zpt#njl@kIZ!Eepa{T@9k%cyyS3h@{$M|N{X3k)Ym;9_cUBi(5V1D4NRHqRS)lRx|= z7WMNqYFpo!Q@54e{VrN|DF`pftEOkJ}?OSFwO1Ws#_+WK__Hh|I zjFP{y-iUUjxmkVhiNrukxb@%0mxCCgB_HON3AtCG57mMp z>dG7m94IhJNVMHZi*V0j)e0MKf39Zss60tCEOSUphk66dS{+uko|h#o0V1qdiNmbL z%j)WnLUYrp?Uu3S9nJ$BJj7A;?e-{@nz3|CQX>Kp#UcCv<7GiV~_;iUL$;8384#B zRF1PDXp(|o{fM9zli_%j%k&=@E3TPnrFh@Y2-h5;V?GB<6szt7eSZkv0? zLgqhFWxaP79Ey;{jD=rP2DD=c+c>U|>Rs+n>}MS3KyQZ)$hQu$dZb7P8dDuDLj6=- z&z?C%6_NsQ35RTwH5kzlY7=w5YK94)W|{KnI0rvX)|hQ44*^Apmu zT@R$~oc~}vkWl;*zO}l<`Z4vpJiSE|Qww%pzmr?hgUs-7V79sdPc@&3CkScX-i=ts zYfAS-o(TGc4x1Kv(2dxF+<{Aeev8_h;3BfPXmHo(t`0`qTAiD(&x7P6z`oTKt%go?3vBmq{iCIYIDg0}Wk0lc-Yw0Snt_POX*E>-!Q< zVoQ*odB~8&b|t&-mP{DVs1!mRD4zcFZTQV+`2UDsp-@+@wMdAxZ?8IuN~sF;O zkmFb^*&Ce^1A=H^HOUbRC^ykvcV##Oay#(HA8@@rGB~york+!i0G*IJ%pHjHGB$16 zvQC^D3VQC4-Qrc;+v6vIPV$0q=)|Z~H=}mYgk@pSfb(>&MT%|om-+0A@IlJ1ErcS= zgZO=u7N*o0UBALjm%8a2?b=TH<_giJwBqzj#Oib)Z^pkhqMX~Hj&!pq7Y+K45!vo4 zO4&~SB7T+a=1srZB?=&_l(eyjOw*BUa?3P(Ff=!6t#&H&_{^*GkE8YOW|@XiNWwb< zzotPEr!B6B5P*HpMjdMLLk%51r1Pr|fjXO$C5E||&4>=32vRdgmyp}uFT)%>rt-k7 zs8TjV7#EAnf!gMsyUgh8i7wd+csV79T7Rb=sm0jJ7XPPQtdFbnCNA4ZKB|%WRC6Q8 z-g^3MMQtt{i+7pbPKEv>eJcf!Tpk&Ir^&h{mjMvWM7>eD~3SG?&oE$qT)>y z#H>nccr)KdeMKR1yc*Ntd`Z!0!Po2RxE%S-qbL-NqNeRg)+Wb2K2@hQjxJX{u;csu zy#(3YtZY@Ar>>qt0O%_q4zgi}6y6iDa09v;k-$@&tk{{wkT$tp&3n|l>r zOV6>M^_)30D@&YZfv3y$4?>t6{?^LZ(5%**{Dm2F9OfdeCW2Z18LnI^d1eOw9MCQf z9*YfqSlQ-872S4C(|W8Xt8cOl{{=$at6FwO19*_F|P5s70K-lMrOi#2dvhc8B!e0 zMXtSdFgc+qYPaf|;n)f%3&7Y>E7JKQ zm+=_w^kL|!3)fA#i=kIEp4&!Ki>M}V$&Xhbd=a{cCfDg6cEZz)pusn%T>Fh6ua1`fvrVm#$ zS++U7`;gDWW|YAwlDJpcXHCVL{GhEn5uu&2*~H^fQ3(Bww#46w3jMIJ6Z^qLL?O84 z2)0E9FSn%=uceDfb63HHLy_iDj*EFK9LG;<<9ji>0$BH~288WYLM)`-)R6KIH>BD7 z9EvxGI0G$B%W`jb=mPiQKp$01LTtmnfY~AV8VKN0ZM#UsVf3}>1QC>9NQiBlu$TB# zb?jx3@p!lseSZChg#+M^t_R1DFf=IysN^+Ku_;Z@w@7A%r zE8+0}^o|s6mS%VER+VuxSGEL7$mOHjVS^!I8tLfj9|&vkA~rc0Y-*A%;3*hGpQ_u5 zW&|;Vn_mH>x40KUNGZmgKOHw!>k|lpnd@R#$(N8-`<_d$XVK}KpSZk>g?kc5cw6eTii%k%W_FV4 z455bg-_&&b3rb`t?_Z$}~%s(^qb zJN<2f<~vgweC6}im7kROL;+I@)Mfy2ks&B54dZL{4E9G`gTO;QT@DIZ8YpI}%NxNO zJNU?8VndxApNeHk)+vIIg)?ZJYCWMsKer2GgW<@Ak-0qWr=-nE%G05o+<|Wa^=9SF z1M%k;DfO&~Y8VtkJjD*$@eA+(x2V7TA{otZV=v2uj3Ym=K-Vy>j6#x25wk`f;Y-Cf58T#n$RX#h67HhqOP@J z(D47yKerRoWAhrY-;VE4s#_T>afg=u2Inc_*@O*~lvsgm^Thc_koG7l%*>iLIj%rZ zrLH97m@U|Kh(r__I7GknODC0?7ql)%tmA(k+OEGPgQGPj1V+ddVQ$r9hmx5B3Rf47 zr%DCOmIV{9KVi4J(PcsI?%)}Tj!*O$lA-{sb`OJSIIKGt3eZ$~fv86-B?ryFU6Lxl z<5hFifCc62zS-c@YeOXBwGm-3{b@=phiw+ce>S}<oa2Kdz=&3VKZDjRJ&sD;HHoLepf_*0S=??uJTINOZ@whXUo z_g~nI%2dYxDKQ;7bg3Ep=UMWA%%xRjWI~@+j0Bz`hCJ7!xFjR)mYFSwFeWKRNluKK ziIA?>P~vz5?C?;K-y<qp%}Ug3f%N!5r@AD+w&UyR9>z&pe& zr4wbFJs`L4>+qVqxadJ>oLO8`WRxBlQoJKAY8)Nl6R?brwkKf^!8Ez^TfV z`}VRI_Oqlv)=zUhwdZY&=d@ z&a^9t)~3mI#tGsh?k1sgir@PyQ^>$KJxJ_=>G*W|ol`(RWz+_~INHQ&E+K(~<+Wxv zu}L05Mv`^V-%ku|Uz)6zOfy<*o3X`|Ru|qp*RN3j*x5$wC@On9aO)IUyKH-s(+(aL zq0>;z$^67I@Z2ut5$iljmZvXNZckHRkE{8LQpALFd3Q#tRCswM^Oyb4{K*!v)9Ujk zvLa*{p7eV=#Ou_9szw~C^x*eby>mG3PFZLt{l(Zy7gJZX-Xitrs283Q>NnZhQ2kf6iKi5}J1#nv z6Oez`M+m^jHyAL1!E9?r9j4+s=e$*Pseg?VDe2rU6maN6!Phm}XAPueu6nlF)5R^J zLv;0pE@ea5Z@$oT1<@{<^Wt72QNQ87C?ChiksrcDX=)PAy%BsK9TyFs4K${Wc8dJ~ z$7W>2(hxGSe*_|FY75OBDVVQNW+5HeK~vUH0G?5^Jh|jG5TT4}@fBguQZ9z&?jBz0 zeUhe2$inY0A@mCj5J_^G?2fn!AE!o3Ziu+w1ia@H$-2r1<{K^)KAdpC7 zsDwjh((iI|Th({%r|E3YK)JNp3v^t1R4^f8xaK+sBZhSPOiBFfG_W2@ovZXeb-6>f zv*415XE5OK^ri_0r5~_6Nlnh^oZl*^cR~TpIB?XS8AZ6LL;)w*B&m zrC17N;e<({`Q8e3tX^!Z5AgQ?uJi2YsigXmTz|*VT@l zX*;Im5rxU?BUxkI#4iGI?IGo!Yv>h5y5rPWx6sy)V5D*v@gVlRWVXuyM3)nIk|`}{ z*8xxhRxhb9Gnd1{r~YPrKp2H?J48VbllDE{x7kj4SB(8wTSe`v?}hy-^nR6ZyQy;!s9(A8iWKI#R4s{oEOvIGkLM`N=O;g*&bSQ~VxRk95ijy; zU_<+{HkjCL0W}6@hxY-wa{2h}JG(tb8xU#B0RjoG_9ncnS7ABNh!2F?@~D`N*_ zgPfk{#gi;5t4g_tY8Kl3g%Stl69IS!ZlG#G*+R5i;30f_VGb-_F{t=Q!WT;=b9j|y z>sxzK8N;t}`&8)u_F{-^9_3dyR-y-xN%W8TQ0jiG-wrWQcLEI`Sbx;L4Rm~a>v#OQ+?ARBuh#cgv&7i=j}T&S_h zu{Xb4?x6Y%?BO4CBD=~F{E)G)`x&KNnt5mJH${x_v((*%T?s@px4 z<6V(@Y<~f@V*x(`n4X;30OL^@Wtnfy-}=ql{$rI0c(uhKThr2^Jcv5gAT7QjjqsxM zuoRbBac;ts7kRS$m=cx@@@oYKx4Nq{iXdq7`u`z6|4{HNC9{EEKgH;X?* znqwXL)W*I!@>cDUfK-w7X1RNF1!c-Gomqr!{*g@CjrS#7E|nU2_r~OC8iG6`X2N29 zkW7Xo9B%*LtICt_efL!?ue*_HLnsI$5P5ju5j5T<@$5fCp1KPan1s42c?GtRl>kkj2?kp*4$fn7SBT^W@UYqwaL-i5~`LJZ8^My(LX!jYSO+P*k zH+8yX*jIaLd|99Hj2MycBoOKfzK6;1L*9rQ)+R z1om#}y-I?+8nFiso^7095!&{n%`JCaf(P9qe;9Qs_Aq}!2`w8-$m$woUyAUVaav0Z z+tAwafZC)d#=_D3EoB(>yc0%Ea&n2)p{Z1Ugp@GJ1MAA#g0@mYX;P1wd}=i0w@8Wy zlQ{EGt4Ua^a~ER(9+OHbPg(V1K93W`C4m&^9u@l%VVX&q-GL@s!&xxN^u$aoLX8@G z|Bf_l)3xX>-COB#6MWt`3d|A7=x{DJ_-h4K)qF6%Jvu3-$}^}RYV7dij&u}Ab4ViH z!mx7-Bo)SN{!miiDaFdQN=g-t=H-SskC?6rTzUx6Paijg8@38lF%ft`Z1d+JmjxT% z`$?m+GZC{hW@>}aJ4&CDA6e!Ta|8o#EBWdYs@P8(6sm)I07J+#dHVfG&(7MdU-166 zyv55Lu!gxsMl#Gv-V|1dMG_4FSaero!%*qBHv&`NZ`hquy*;;rGOY6t^<8f zPbJ91`j;L)O{);I0G&r$QoxWXrbP#Da1o1bzDSh2HnNknQ(8t&L|GAS{W2xKfQ2dB z!qG1*dvRLM5j8LqoWYZV7f|F7rc^pUmGs?$s>S|P&YRbKT+Vb(Q{N)&!LrPJ@n-L9v zT|0+PEJgST2UR%H85Z5%Oo>2jcO<@({vDNm1QofDVnO*hVXP$~yi$2h-2 z!J(_EKjF<2p`jP|^s@0F7w)88waI+Lm3I+9m3XQ7<9k$~#5K_Rf0>>cM>O+6VuV4eae=%*QXWh403Z*H(EuwpZD zrmY%LCnV!LIV0Ps;fgq&&7>}NuTKx1DlpAbE1H(kUM98y}i)Gb24@XCNGRigz*Fz+<8CKgIhO5ErqjSPG2--8bP^>W_HCK zqFu99BV`>w6Hn$lG^GrG91a2ctOc5@ynh^*&dx&G@r8 zBz%;`2aGev;s_)3sBTFfVg3H&r#YC`&(F*5isCWFab`5VLI-u8n|^kI3qWS^eKKN` z<)3eV1C-lFk)6VYu}6F;8atBHF+@SfdgW#T>_g*FSeTFQWfeS9?EFIKk&_Y;?kf1o3>(yP?$B)km^+Rh?YE3`ykTh5va+nJT zAh<;NJhM|>H)siWxX1@Yq-{E!7uL>X_Vw^=jT+eL>}o4LLbFKk&= zI5-m>Y%k>08$!~1+}`uFcIRl}w1_(7GFA^MhdJ(aLUI~Uf6Nt~-&Ow|H;Y+kC(%>^ z(9b3R+x=_OV)cSMOK@|$h8atpw$;-2O1L+qn7+O2OmC#^1glzCY<{AI8*Biu@>>A+ zZ`KW=4*FaC)o6WK>{Olfxhet{wwGPin$ODdsrxIklx403L8W-DEos3iM?jepZBuk5 zZc-Ymm0lEHM8Wq&0#_BuC!<^++ERA}IVjotNfT!fU`n^nKq~wfA`ydKb}R5&;Gr+! zk6=g~q(c7}3sPWvPAM^MDOK{BUyeXxN(-7G9;EXcX@v6?(PJO96+Us4$4IiJX|W?% z@a1vS#EB5k-BmrGJ=@Gs!LI^kk>P5@_sc(*z$2UYW>P7&yD4G=!qF69_nfZxKE}ir z))MiS4SQ5c>_+te>_YtvA;hrX6Hroest=}=f18AIHwErPvES@&%&2`ohkr~DMIPA%Y;a@Sb&ZyY2YQ$^e;cMy-T^$%P z07&MTgrxGwZx7{@rY*3I`c&*6%~`xXQ89F34r)P*fo+nXs{8JuKQp#1VBepQ3;Phy z+T>}fN49%+49&O^*KyjY`@@?ycp3B_-jxEVU^ za|i3a5mid~xPp=4EUH*8zaL%1lC7d`uIs760VBb=bZyvO9PhFdfy-q=YK35n>-zR| z!p#t8a8~K500+37*-NlNcu_SB?KjU4rpOG5j*$E{C<>R`mbF77ct7HaCdSXDrU_Da zmWvZj=2ArTBXa;UoO$6|GRRF=FFI(%UqE0ShA=xMw;vb6WR(cjsYYGg`Z?|=eikNf zr2tqF_J5F9`~@uc5+++{H}3Vvf7v+hVaz<`m@OH0%=O}kwF(E#%$bB7B?5s2n*anV z{=QQ*C3)(~smYTiUib@mIip=ih@im~1Vyfw$g7_X4x0fohRdF>ka+Z1E+r=bx@U|9 z|8ka?aN7%$)!W?gf5cok*sS0Wd4+xA7FMgBgdN8ann;&5PzTs;Oi z^&%E&4^TtY1j_1HaQv6YP0D9)fBKGG2uA_o)$KI;kdZfuh8TGO^x0Tcx!S_r-X@q% ze+e3ecF&Q*CW(`;RKuS^HX5lG?VHYm>_gZ|{yrOH|?oi-q?2;*BPo!kUQDutfnlbFn zNO8vz$r+|VWyimg9alO=AG7h_-D<&U8R$~Y*Fg{&ygOhdaB8W}p%Ga&RuHc?Ll3(W z&fV{XJ{m$t;gD;2auEplLR7T%3g@M%%b>)TC64FpXLAyC;p0Jz}B5{g_l2K z-+^~t+_mkgz`>^g0{V?b=^j(boh8S1=W|{cikphh5E0VWw=7T=owYm+iVUD=iP3ZG zh{$&*R#HM~uce4T6v1W(wB9?ph_eErLnCNN^pvucW_nOreh*!cIY26rnu7%cub@}> zVeM%L%pmypWnzYJ*Db0?Is9E7?!50V=1 zpmB*yY`h=c-zD)>`-bP1ON&azgP@jM?J;kvmyO{ax(x}Tqm``N%3JE#kt%Z!d!vXF zE~Yi5N;PrDy%^$2zo2|w*C!{)xNR2ii_FEA^QxbJ2w2^|WzIR9Sa*Bv5Emom7m1rQ zeP>lKHh|FTFpca=Rym>1wY;7Dl5CGY6 z#KG6YgnQ1q-eu$~GE<-l!8AeTbI!LqNg}TYrRHmhSb%(vNJ&{(lPk888-polD;>>@ z2pZz75^@?NZ1#HmcAqj*c&bJW?nu|L_SL}a- z{mM0ZCsKV>NUMhVAM>*r0{ZfPoni?5Wxrd^K47X%pf9_>sr_D$6K!gJefFg#ovDb| z3+fjx8iNNu!gSAa=bPTi$d|(eYFs9nL>_L5dTlt$CT};0@7$VUE0Fh~eZQ`12jFS_ zF>eY?3q_sv@*^1W-lpbFiV0)$*i0bJ)&Xms zTPf!(SR~a_X71)$2)& zXcp5>ps2yQ0N_jc${{3D1eAr_){k=klq(#5#hd=OGC8a4@U!mNs9y^-32g~ag&fGJ zE@<8cS;|UJ5h`VB|{?9$LI84F|HHjMb#%Ftq%8cN%jo7Ze z{$axU#*FN2ka$$R4i(OZks{I$=}5V%86YmRK#-+ZoNJd#Gv;X6Z>5S$WWGu1pnwO4S5_U3qt5M!3bZ6GMeqPPp z{caCq_BdTVSt=q}(_7jB^rer-Szl|O|C6>B;RJRrFTkx4CPmrJecr4m&vUh&2?jC- z^cYH8yXiq)M^>}$Q*@rN=-}!c*<-HyYy(V0_oHUWg3a;aQ0>467#41en4@soaV|kv z0vA0{ckT1IXMtuHgSC7|#FmtJIHm&U<9Q3-Xv8=+%?C!bv<>4MeOC#42}x6=Ykiv1$OxHbvUYtE#pjX0xi2@_3YQp2wdS zY|3I)6PRFs)doqGOXs?TM82NL;nxJ76xm?d_?F$Dp5@sOhx&!`CBFniO!_&E(8)Nk9&ngI z8Gi7xo7P@c^T&~K_4 zRDG7~vOEO5^7x0gB^+L**LY!nBzBeMHcSaz0d@>)P!hqIjU`%3_W0=Mm%h5fu7Pgh zYyd*n^YCUvMv`FYb!<$@LnnpM;fiz(+lw-dprOA~@}>DL5Ag5`{J2(+9@>jo7oYXD zRIJ9F`Fa~nU@=>lBYu-;A4Er}Y#7^}0f_cee$hd{S_2DUKGJful7-K0IOxFv^Xn9h z-!;LL^>2&~TxbEMRBnGErmVcZ3-BkT^TJ!RE*uKkk;k3xf$5BJ9l#mAkmXAJ^Vg_; z;vG(ERQYQ{+i+19juiPiv*YdfX`4Pa=q^4F?7ErY2rmdTx5A(NDKUtvPGq#ckX zgC?fGnM7dfHpw}trWO#NymO?sZ%Xto&oCYeaKY|uWLf-Ld~WVmXTL1(D_$7 zH4MSSV}!MHDmm6-$>irQ%JnQKnL6VR?bWOHF+BTxJlqcnN#*PT8vvNA?B~HQdhAKE z*|}SiIf=%%i`7AODt*Q$==@B$ixM$FpkPCNw|n{<--b_BSJ8UbiTEQ7l=(_rUr13C zWDu!Xi=aDb5*eb#aatq=2@=G8nt=-# zx}&&p`!Rl(w9^YpLjq1AQ=)5;Kd)kMaQ-RQe#|@1C>^}_28@@X{o?L+JGV>D{9lz0 zFgY*Z(=3%^nHhx)5Gb}DLAGD&{oNQEYsNdPvo_uW&HGynixWS+g@o5ptB^gZ<-G?w3yTxzApcd^3&^Jpc3C`kTxvG@~sk09R4GSL}*3%6m{ zH0IjQ;XCHT;3@i=^W~w~XkcBeI`EbcsMlgteo|l~52}9x_h^SU6Q}8#3?3%imvYId zX4e3>qdgYe4U1l8%`7Kbuw?}yz!J#!;H6bzny=e4d7Ub}bK;y66Qu0Rab`>Vd8n>=TaPr4w z5C5)3jDp`&B^-4L_g&h!=13^Ano0v%wv2|yyJ?zPUssl8D zK+mA^nQ>v845J7Uou7N6mFuc@+B9o#2NZb!?#&@Ie_l}~&1~?kxqQC%l8+QcO|hHY zu^9qU?4OfD+nJ*QNC5^3T)0X7^gj{hc*Qr7`mTbp%3WNrJOM`&JR$kV@Om+k4m4G3 zw$Z+i(K5xbAcLIyN;sv(xxR3ZzML2A1QE2a?X5p@apF_icbU*GyUdbaqr+T)?R{W* z8i{bUB1q&KMXaF9v$NB?Zxe!(Ypw$9OjmEmu#+mJo04v!Qgb$B zHj37ZFmfdM=$zzxn2}>5QFi!st{}yiw+$M)oRe;UKB8X22#S2?qB~m-8c8^00MK|3 z<{n>!gJY=(MrFtmZKd`@E|GDpv>EHau>sA+i-w^Jmt7oH;b_uGXXh>7zGA7EM#^3Wct zSV;7at6=MyleR`-GUOlZNJ`5@FJK}&9aCZNN3epL)%&U!1nJR<(D2SL$C(J|jK|{R zm}Ge1u)$r?BIg?Nl&eP@*$he{n2ZR6Jg_Y)b`Z1JPh7MpMEYspK_0D6sHNjTj8F=x z|J+$zLBqG=n8-wCy$?%kogy$*B^CoZ9Fym>J6x{rtiC(OxkJ?%cAqfTHs8QjptQmXs`XUG14tA!!E+H6yD7EMEJuiRO|6i(6#2K zv)a+ZcAviL7P~v%`dB-&+$%j*YK8BDQo%VUeH1?H@iPb*7{+xz%*ea)XVH1RUE%Vi zrpSWEBXORE7;ANDt@G;XW@@oUt4B%`b(6?#zd216!P-EUZ?SS$BByvjQc*D}&Q?ZS z9!$u{1VOJ#$!^j|L>V+tS=F^xa;3o>7l1Y=^w%RI zs6VAsUcC_SVt^q_k*5w3LylE--N~~lgeUlJ9e@%a7>0h?$FxygT{m5(A z9jVm{8eesaV;1O$wd*yyv?V1?C}cfT-V^fI+#|njYcf0RW{3UWDaS<0Rk&?fA&Rqh zkZii|rO)GXfx)Ofs8Gy2tL9o1TY+DlC?uMn;NWPcr_4sqC>w?33H&F$4wD9=Tj?+? zCMZx(S5z3-dKj3}a#pOVtP_)E5NEmzScTA6w?;Wj1J`%ze7`#Ln1iDpc*9MwJ`g!@ zwz|AWbc9r*XXG96yhi^$eR$|*OBoovn4QJ@;t8GKr*ZA>2pYU1X!zr6x7LVe;%aBw zSr6;8EJs}Mdi&?5MkG{gGcZpRlcLxg!Q^{IC%Bl1qkMy_v|Z3|kSrN36inU9{?#uF zhtLZyurOq%QHh%FS?xOb+*3c&-c(Dm=zy53u=2x$;Ua~tT;T5p1B_j21y%(D(3`a1k1FQUi$4WTTrf%zk#Yztj|9q zIc=1f%uW6^jzKy-NmozB5!wb4TDGQUj8-BRypbfL^X&!!y&j6c{;`v8?M0X)BFcRs zTd@$zAhT=thv1{8r7SlW1ru82EdM-RV7mlj={yV!L2 z8dn)4)fuTX6g)wM!5DL=wh4E-#lP|MtAcXCMUw~zGrOfHFWZww zaV2?2vZn{BHORcSsd35uY4?L70CT1#FdM8KjL82Q9TdpImM*{f*qVMi7>7oQlMq*H zkk*<5mC8xk15FT|-BE}@Rq5QRbFYp=UAU76Y@8{aMRlKvE{zoxal1lJ6|?%GWntu2OD9{=J#l zX(%?#m5n3=1-mAt$U8^S9cbq%0<ojb z2eBoc`dkpoff^xQ^$=R1vn&I4#TNL0?Xl~j3fJ)WOj@`Sv;m7G=x4s&_$2|?JbIP) zdsg4>^2u8sXKZdQ0%@ov&pO3r_OJ?p=xMY(wtuW@b9y$R)ETW&WyZwrF-oX0f8(*? z&2JVsU2Uzf1J-nS54XD;frK{jC;?I2o#+Ze)J-D;{gJU|Y64E>AtuJ}Z7T|~h4)`x z#UzK@3%`W`5_B$pU?=QqGybeTeBGOqM=H!h!Xd0~fb*_4jC~O1w&WojlTJj8SdM`uMqfqX*|FVF7)5SKYvi9#s3&;k{9{f-jH ziynvXe~*0o`LG<)=#{07;{5fuTYi8*Pl!-i^2nW@MY_GDa5h*7NiK4&VuH`nPT_F` zbkhfisn!r&Ti^}DTlbDM)JZ_v0^`gY@&v;P^u}YbJ+?~TKMNvOQ_WO`q-^yt!{de; z?3t=et&r^wC-6IX~v}R z#l1N9QX+hP=)cJLOJK~?bPXMswjV}>_=?iLQn2uLiI zM~f+1RyF!n)Ulz%BH)d?X9^Y-;yB!^^lZ})pnqLUYKx1D&1j!>%sT2+y~9Jp)D2j) ztFkLKeXR_J&R9QL#c&qfPV(EYsDp`ZG?iukob4DBgL4)wn&x0^$6op^c)ZUEMFEtX zU0zXU?q<}X;-2qHeYS@t8UG_o%c-wRxxSi}-9;^b2Ve{fXn(-(cV>gE0;yPfJxidm zIRSIy+6Sr^iJ?+C3IimzzzFATefsnvGB4zPAc3sF!N?*{M9%Ozu|9ssXr+vH;2t&6r!?xVamC+By;oX zSN{^{`8d(P3b_qW1h$T|4P7-PInIxz^NQfj+rZV%%Yt{XirH!h7%Po{s;AuT*yd%x z_xnYKrrOe9!x`DSYSBWIiz7F%c?r2bHKt}18SIv!%n6Oe^tyaJvujHH96TEPt>Xu@NX#=iTv22f`ugE!ZJL&v zI7Xu-M+N5xts!PyBfpQ67=SS7ul{5Ou`3i%42XLTmGuB}z1A+0T9Ii&Hc5U;&0m8d zg3E~@cSk4T^vDgsk>U?dZ10tc2y}q#{xRb-nwAyF*apPL_k7iYy0{4&qoX;F5GKk) zb770{B-QNE!zwnH7_RGwFiohY$RxNB+#ql&T;34CY9u#ca^`6sgRd&d^Xjo$OG}zJ zl4)wJKwXL2kv_>s6H14bw8&6g>%p`{>zNs`tsBiC?w&vV+M%=j`W)9d3Eauq7xb*) zVb>%6{N3wVWkb_Bsbpbd28keNo)HvTQ|_?*rqT2grp`kn2}y_zu$CTic(8bmMt zp2`Cjvz^vR5Pl%T3^>@YP8f9(6QV1sC(64|~X*b^D`)k&276X;wd6Q|H zfswBxBulP_H*iPDICQhVgud2usO7mmm*p3eR?YV(m3b>Iy$q}I>5ivnrrPWuM+Qnb zNf}0uHDZK*6yAyVFk%Vn&=^b?|8wse+JmgWl5itKJr$ zG3S*9i&{Nedv<-#QS@Fm)Id_KuXySLWm&>iq~eML|7})T#p=rR zZ^N?f$ieU`lhA2+MEgis*l9*WuLgYb{eJ?zT%n%*dj{#LN3`eUz#i*9B@`4r^1WZT8tZV*`1a7TVWhA&@Y~hFJUZBk`rC`2RSbns zm-*8+Y&En*AdsgE6Qr2)e#+jTj6>!{Zf(|0afQSqD5DHRV*tJ+Ve;a(6fe~3H%+{Z z$?OfI^yPG-j8$EiLu+`2RFi<;FO9e<|!z*he#DQJ^l*MDB{VS>G zbiuy@a9X5chvIa$PGUsfkQk5ck^pT+*A*RH{?l8=gNX^)?J&VAt6B@E2cPn-M6#D4 zmf3i8;)Xgwf$$AFfk~hcFsKS}3V7rZZX+tm9-!qj(vNohpI%6)#UK$kUrPtZXU)04 zQmG`D?ItP#28}`#n5)bVylZs$Di@b|HXc1{6>&^*sQMWs2nnA7F0r zKDQ3&nD#f?3@es}Q8bxg$Vej|p*6gS%fULeX1s5vDx3n9mjXLlU3W3fEh~cfG1Anq z7}*ej!61Y^djMe-PTXZ{teLKlwCg&`|9j-n%*PN4HiJnUjJjYdG!y$35p2UwmXvm} zG$I4L8-kOf4c8yv!lhA7{4N?74X2b7$_m!o(xF1y%#~a5Itk7L`Y1E4N&Kn%tIQ-7 zrP*-@wH9e}{wJrxU^lGEEt7p6phG^`Yjm7>xjJh=ERf>Iy-#@$Kh@k z<&>t)H2Ch8JZ|Lg287)wejmm6wUz(kym`({(#Tc;^a{t|KhDkUCr3?l@ zIh^M5?Os9K4%!*Cunc|vkf%3t@aX=ou0?EI zO_H}X2d|xxf&U(iFgU3?w0#gx5@j$`!Cs^j-Df4|Q@2wmzL4O+7wgWUr<7My#w z%4)Rru;0v_zfav=!Crfb+Tfo`I1lZh^k}!hXBTtvO(})Sy1-DAnO#hFn!)o_mwh>6 z6qcah-=z843Hj zw0luH=!q0{7ySyC>t625h1qxoC{d~ zQyH45clEQF(JJX=fS%6WpZ9jd9@BjE79|4n?LjO}9i zRDbSJC_C5vpkE2GH_eK~v%jHkUrzIc?k~Qwyt_a>6N#Kiqb?bNs-Thxt5*j2{spze zRTd~reRV2R8=8ahx^)6J?|}WXYt&O+DJ09TgbiyW`K(LBUg0dm-fkS3_IBQAqGkk{p+TVh7rrIj{i z#>1>a5x*6Drr5*j)fXvAy9!m9iuTFR7fj^H(?TWtXnV-YY*}1BhWL_sCehJ#ZLJBW z!YQZXh6CUVp7ko4y#>1zal|N-jLZ3SCQB*b!?H^LDtg9a#l}nV%LuL6qfK1@^J^oN z`LdR`Q8t}}bCT(TEb9juU#i8?r@psajSqK)o$bsdHOrkt4T`EL(=O)A`3oCTB+H;b zLl9kd5K16|Wx3*rS!E4ke`eV!iZK2+UBBa^MPA7sV{`-lQ*Y*-F_!(6JumK;%?5{~ z@oHT11zrJaoL=!<$;2|HqMbE|6s_ z>k_b3ks;YBt5_=dn!$536~Fh-R9Yig?1@8&caeBY;i5p(gwLh290xzQGLd}W(A!d&&U-`e8&90?FHI#~rC_rr@`1)j(y9I6ujq%C; zN8Izf_mmwf^d<#01I{G9e5YEW>?rTj9&i->0&5MVqz!ZcI%q-Yf7#|q2$9N)8l?5-*SnKdjG;Gi`t#LhB z(O(RV*2wfLb>{@Zj5&e5IfbXV7W8l91-oZtGL|sd4tRC9{JOhx`LHrx%h5kWheX^v zK}Vend?+Pj9hTc}*wf{#=)GylH0;}#NM78snH(%-=I;J+2dwtS^n;91n(0re%AgLF zN%Rsc9&bt_zKG*Mt9# zJM^p*_1ODfvegexc@5rhO_i~?2lK;rP93z}oh-nd(@-CQK~Px8SZNArJQ`p??|g;n zGmF7!`*}=}=*o;Bcib=oB7_!Hl{BM0!>(ron!)rW=Io$Jjl@Q(KXQ~P6&~p_N?6>+ z$G!$_7^}mozFQUWTkZXN0V^ipK{4B5VrxGX+{((6z9k4ejic9m(4Ok7`^>Z@aa~%) zqc5NHe!!lk27OrcQ7ARbvRR)z+FdJ{=_We`X-7ItJJOW&b^31uXx; zJ&f%C7{vNg)W=diXkB!IR<+Bs>JwrW#8iMiXz+qY2F4%4vxAvw)*SX>@+DeJ6mjhp z?%1sk&f>c_$jDsMcDD`9Gd)Yg2p%*QMaV1&Dm`l*7zCFu$ldf_5uN$gKw;|H!`E)~(*XWx2kEZ8CMV6BArMi_)r_>$emjt|SPf7aZ`qExcsm)}}7K27pdl_@;T zLZk)R-Hs9d!Q@2C=)yRjOzH00TM8!4x56QEgjF0@8WC`$HdHO#W%k`lQ)8zrf`rYV7@o2Dm z43Fz-H5yr5TzK<=<5@kQ&BqfZ;8}93BCYe)>*brq5b2!rF4ek|o8}O|+jD(PrzOa! zElKA6QK3IK+a|IRKeF;3qT|~Cf+h(Fp72=DzdbZ4^1=67dJ@B1{Wy~x;L>1QAp!>n zb)))+y%URqlNVWQHFHJSKiJsO&hLrrGok3}NL|Ll-0OoB#OGtuuSGkEIDIcD@;sDC zN13G>ZM5ir6^4(RAu;hyw}Y32qJb0l z^NWQLG^$`90;CKUANnztbiCG}V};1JBt7HythN5&UZqWFHCoiMqS6E`Mb3NgiFWxj@pou8gzMsKB2@t`n#ojqHf?U z1%9Iy9UBe~IffcLkm9udx=~0OSzjDCB$D^bTFmy_NJpBFa=f-(?ZocfT5}0EOK7__ z?KeKa-vy#H%oVXsUu}Xd41ZD!;}AsMHuJ4bI;D0`qVsvM+*+-w!vB;rhsL6DoBKN# z2Og5T#esZLphW1ZbLDX)pw~FH6Y=s<9J#^si$uiu0oGWsbBRF^jz;=SBp{&=-rTi!zKHJ<6uZI@0nzg(|2s=4(lDYEE?^C|KXmpG9WvC2uE&Ivbc+SqIH(_9g* zUni>il2Wg%W`@U6qUftRJ(r{iLYB<*?!odLE(s8Eb9Ar@%&^q$ZxU9qe8=yycOjA4 zU6YV2xJqv?3m)(W9%MoG(}rQAIkZH$5xcw|)Pyc=3&x}E<`$K1Js7dXz<^up?7YnZ zk(>uJ&FMO)_(xh)L?Nq+yvxK~6>C8}U4kycxUw5<;)8r_aH`?~nIa=p=&mSg(X7)3 z{9@Q5O+kf=7zJjDz!5lTsZA%#A=3Jc8}kkKw{f7qH!>a1UIIqSFk9PU=N zobY>B*oVQnw)5b?4Mt57z8!td0P?ZCFyRSs&MpW2Z}ouMrMZ$-dVK({f=4J*lEwb1 z*KU!1Skzfo@-VaR-~tv(mr!P}W{}I6!~`ti+2zlVZI}E&o`b>Sy$J-U;v@pmOL|W? zgJr4&rAfuME&prnL>d&W>&-0NBt9t48Ay;jwF)7nhq>eU+g1L_mc0$@Ufbhly zO!1}fgFzegC=3+9F&HfJ^hj*@Vzp?E-N7B*0wl*VeF=uc`Ur4~G;K#qLJYa(gzre% z=)$;$e8Cw(i@ERf#^|szyg9!j?*$XySKjrjxzoyWH^Fa!b<)F6i#Y)fsw8Ccx$VDYSil)GmXK2JN$1s;Z2K)$bqnm3Ic6t zQg!DVzLQd-tyg2J?Je`@P0wu0)Tn*2NmU`jVz$JHtS;+Mh=)LZubbf`kpPcQ?zWKD z!#Yb8I6_NU*Y(6omS0t*If&Par{L%P!ZGSG z5(FJtmB3U0=--O_R#T{y55Bt{lvi8wn<}4$yf2&bU@leMvkm@GA^h>l8j)TOs=28y z{*#m>%<4C#5#s*f>Z`|?^eR1&od77|s61AcjIoP?HO1j23Ll|6re0wd}0dJugqt~T4c28r>$*SEo?$T+tG{YVps+Uk5 z6nDHQ0%SQvN3&+mx&b>5%?H!`UV#&dC&1vQ0dr@D)Uiyp6u$2ZwKZ!P3YU^{z8Bnm ztCf>|ZgzX7bLtkhhjgQuKdB1bft-c$YJ1slJWk4=@>G*b(_I+<#FquM`LSZ?;6lhA z-6AotN+ODIMCIk~cxzN?(5hV}c{}jlaC=3q?w%bo&8&ojJa1`;Mis=v1V3B8?Dnde z_BTO1bK=rs)a^JJsmqX>PppWrTKl% ztVixvs;l^t6_W zExeOw*}3R7P407n#QADwgRt}1!nX&9seT$y-o|8XcEUBts|pK>S0f3*8snVF`dUAo zG$hLW(F}cz=Y?mET9~zCMu(-rI;A3V58m|ZXruJOcA{5l^qlROt-ksHqZp4$+X@`I z#XbPpZYL@R)Qy#GJdHp!NuQ4a`{2A7X*z>Jd({-<)eJ=c+eSMu@Uh+MrHH0WKInLF8e5vO9Fvb!7$5erX(Z{|(sxNcm z(y1`;DFF%XFN?rk<=2jd?vk}2S!!{U0k$v?xRjj8o7M+lN(J|9Y^nLMl>Eg8PIYI- z#v?h7e$c*27>}k34`&`Gk6rw;xWz+t!pc?s=lOa%bR>tcqL_?$@!a`V4<`k~L$&B*O;c#2X-QEV%4wPxTQu4(kjRQlv&U2srJc%QTsLT|5e3F%hLkJrCz~AaV2eEOJvB~ZSd;qI z(=?3?RWlxh>x<^YAiQfCC3f|!lkcJ&z2)=Jv(e@|I=DAP8Kv|?=)!KlSZY|G!{u2H zmFdBfgBv2D)ZcN-I#D0XD7pu7h(R9vDafCWGu4M_*|(6x+(ffC_AOjX1G^hJeYi9T zg<{d)fvfj`!4wL&`>j$M82HIZT+GJ{o;_F7$q|e0S;P-5gN_UV2^c_ayuT)|>b641 zDO*MMPGc6~cSAX8%n#cy4g+5{L<(bDMVC}UY#N(AyC<6Ro#|iWrYF`p{~|5eE}5yS zZ*pNBrg~uv&1pu7-u!;!96xKK_pHYQ%~N1f#B{&6PZE(5_|lbh#i|S$Vd$tEIs13r zfyJs}ZB@cxt|!rJymbe$ETo-}&{FCNt}}TUNc;V2OI?MH|2jK^MFM5N2EpUZL{O<aQvMUPIUM_Byj(H(DUQp@(N`}+K-k*KA0#hQ>peTsjpGg#5= z6fA{|SkvgU#Qa;C(kwX)A0lh@VbxpSs?)VU-@=M7Irbwn{@IDTq4QIq#t2?tVQ|_` z=4dHpiKN9T->%P7wQlB<<6A46Bsx6Ysrpte^e^j*l9X(<3<-guV8ZjRZ;Z3>TWNb+ zOjxQ3O(50qP%HV349?PBA2XU_MgpJ8FKHkwILj~L*pZG+Y^iTqGEG_rnZ{Rc9)y(v z#=~|5TJMQ1gkK%-=0D2?3#N@S>4xNU2ePKp&VVJ73q3|26Fs0^d$6jyN~k}!ILqrz<0%) z748sZL}A@h&vgp~?6&*HK#1ZYde0J2;5jt6?BCOCNYCa(XB-)Qr~N$pZ)q2tguZn) zR?NDL+s|-eVqMfj-TcD;(lHH~-zfdwDd!VI#r<=l2hEm}H9G-x$o@w>2k7AFeSt3#{AMhXxV(2h!*S?#Xz zb%Y#-0&wrp@EcD|LxS7ANb83dQWieI63bj_0;2l8rCW%eH}-hib{fm#^OMlfp%i5s zh2j!YunzisI3kfqSgA_Gkey$yC6Eg?4IL_Y4CqlqKmF9G{h-)XB^ump(6)ateg5XN zEcIVU>#n~&O{*raJoddQDZCLYwW6>4;u;FKX>oN3j2t)H!v-iyZM~SRm^^0uvkZ#g zl?UJ(0YO44qiH<&y!&8UYn{Km%)j)or*QbpeOmr*5Vr11sci5uFDxjxNF zhz;N18i4LCQ&}Pc(BA%+G}i;rL3zeUDN=zNr*V*EgQABvgjbOQhPF)jn^j#%em1ww zt%@_XW6^q7V%evDihb_Kt~JzaS`J6Wu0hX;%96GDw;-5-05w6erkTZL+i(mr^XMJx zIIjX-336?JU91!=9HkW9#CY;kX?;Jw9RS5pboP+7)vHPwt*WQ5SFk$+MR!U-n(dBz zKd2zJyg6I@cl;}ICm`)HrQpGyUdMoo*AMlxxw3U*7SntbwMd; z#6}0607RGcXm29oTuU-hhK~d*^J7!Lv3nuXsY5vrGSMo9gi`~gQ_``~=gE&|?bnen z)La&JCFt0^`dn4{hOgn)oo+_2i~c6ZA{ei15-3E)z%bA6eRiBgaV^l+@;J~`e-HN~MO;%={KC?K0_-pBrIGMP?XOo&6lf<&03%oQGBvl$w&3{>OY-@$-IEh-mrze{%@++`5 zJ;}U9Qfk5YFw0KD34%zrN4qDIXQztDV48!1At#T}Tjq5}4Ak`kjj(b1%^OUe8j%|V zwQ;b)ZF`A}3pd_s3#J*F3o?OB<8(ba!!g)3lphQ|PBsz;-bjLtYmqY(&HnJxO4(|T z*PB{MFG+MF`iQBPGPKFx46Sn-&3Ls%(1D&j!rsRJVgZ8bebL(cxTxVC7-#YPN{yb4 z!wggI2^&g)9!Q&x#n_jiKGZn|P5|PKZBWympuDMV*K$)pPR6^Jh6(yhn`%&l8*SFD zc4wP8lZejPjNEi6F*2SyvTI1CZP7I1wi^#2-6qbM%o(LwOqn7oA2iBY!Ggim#}Pc*mb2U|yVXpfiWx*xl;NAg zDkpX>6epcbX_+l}$!`!b>5Fptc3k4r+y_}0VV~pi_6nhij}raXG^!Y;snBK9FtLXX zt#B{Vgj`{76=xa!uoi4z4rik(<$r;``hChs8+MYQ#^0*4mn%iBG(GlBs9{kYWyoJrK-up>*KT5)}k1Ayj6MXBAI;zC;!viGdZXtQ( zfeZV+Q1=E3DDnqfeaR>M>&GsrsK>JPhK!itk{}E^&aq%GbphK$n)K9hYlYC-#-EnR ztE!_*<*0mQi-HQs%KeUjOQ^X$D6LVnXu^MSgUQ%LGyk>*8zDF`yj0u(KS030;weGQ~eQY~$)BrAlb@FrG z!Fg{h{a6ZWm)$eeL=lkm1*@INEQd5fCMJKdsn2|;@5TMyNY-Dpm8K*sS znrvRn1UEENs^(?azPkH2-*XCT*M7abXf^trlo0XfORO7N^xj9dF@W|I- z{Fup1E6!uQ@n$MDv&wuoI=sq13oSfs5e_;EJfm-;5`CQwNbSO#drZo`3yMpv}}XVG;7P^sPsB^vri z!8OfwqALHlGFD62)T?L|vnwf|LBhr(kEn=}<9{)};P`$r-Y>~Tie1MH&psHUw(>Mu zo{OCAQ}^*E!vMPaa7vQo^%yv_A;h$SWwbGkWq8%W?RjLen4H~EO{y*o$aTtCl*Ml* z$@j>z4bfKfXH+-0kbd2Cu4(p;CTVkmnvUvHTaoZiw-oe676`C70<%Y|z}~_~acZyrYo?b=ez6GF% zLP}38m$HzTBjTc$_QhAM9vQ8HtZ{e$NvxNt=5Ojn?H`!?@{Cc1&@WyOHPA8vX$>u1 z3!qVOf^DVcm6^~b;AQQj_W@)cS~DLlGCX=+IOps8@OUJ*x!jFeV?fD?r(`aYFDEvo zhHaSs3;XBq^Y^XsD-CE0MJCqMi`f0k+AWkNjzv=XU(N^c1^Cs`Mv#R}0l4B}$-JP<@+FW zq{o}=T8>D9>W7yY;SVqHQlF}&XT_CXDRo*+`b)iij_aEOOJdm}VKK5>dQ> z+1o&e(OkalOql^FpDOgs7>4)?UJ+~Bnm%YO*Vye_pc8&(q{^jPIV%qcAq%*Db0--d`0EYbgo5t=0q4Yd#LD`+JCGjTNcHp#Ar^x2gv%?waAo+%isp zELp6-Q7*#xC2z?}4-ytMl4PhHnhG?L1IkNun*~Q!TDUc9&XIwW4aBWOolWF)Lq|yA=cff2c2iTeXhrpOrMKdf?RY=j zkbV&=OQB{A(-NgL?m#BvcpxoU9YAGV!=z#>ljwxoYLm@VIj|0l*X#Pf!6aTvIyJ=I z>m_nZ^IEU;=ZwOpvFUSnoU*t9riJP& zVD|556x~~0nDtTZSr7Pq;|%#O6%5ZgAm+kGR*Y8iW%bVQcB=JTJ%k613}n7`?+g`X z%kp~tE1Y!I#%!01zSRh9dlG~bJP?R#8KSGBiNvfOY$y zzSJ4!iv^TXiJOA-8pjFxP&tNOv&%mAtr8gU{ri1uq)!`XIFV5-&-lPdxg$UUf*C1h z^N`pe&bbs~BWF(>nTNhEWW@NX3gsxoKSn;mm&Z!*W#0$vu*2`U7aimRmnpEAZ)82JqRy=#!dr|<`a#TeAz%Gq zBy=-qxUVR(i5`P|6t}Mu|MxKQ|C4kwh|;!7V=8~b54H2P6^dd~Qy^}o3bSQ-%E<>* z0-N&j=%RobUHJ<4{Uu-03>p&ZneW(dwZu6_SBVzsq3L1Nj8;59C5Ab@j-ox1ju1#A zZ9uMfXd|zmtVvk_k>cDQEu}RktG3v)X|bn8Qh=LvFtSJX%9P1-dHFzn@q&d14Clxd_5}pS(i#gKpE1FUv2)itm|rRwdCwl=>(0met>2I1 z#f6+-E^uz^&w|%ylkLtF(JwO3g8qIsbB|mRISz(UDJKDZlUE_PEgA@6PU0IvvwmHg zUN(pi&&xdJlw)@7FwCYBuDQ8MdiCiWrcoZp{i)a*b;1khsEmQ7*)*2nHCag`@K52b z^^yUWQ`<|Kn4K6pkxl^RM__xA?ulWng*t0`X_PoL5G_VuLx-kbn3spD5>Yg9>Dp4) zK~(}LfQX`(v)HAikvmdi(XQ&jKk{9D$|WfgjuY+gToEE*`<~ID$gJwwdIJmM3|`FH z93e3QT4Q&eI(c|hcZ&Rk3_`Hm+M6o?m{&VSddyUwL52Y#p#hZTxfpya62qI0gdsXb z9M60NE9a7%{9=QeLU7XESDPovf&7*$A$2AtJwJwhF;cw&Ona%z{yORZHO8<~yK??5 zNK;_=LGkLItXGd>GpT3xS~PcheHe3c#cV7&{Ft9}eja%gmENOR8B~Z?v0tPjf*LsSJTzocJrKCSoz-uZsDbc((k$T`gy|lS(c894ZY8fx2BD! zGNY@)P_WOioK5(;$57p6hmD}%Dza<$HGC3TDQW*H=LEX7vA8Vwp6htyd9>DE-40!> zcZfF|f281b%rV0a#R{VG&9UQa2FtSOxqD#c&r!9Ssw)MUOT+7_eiOmNMP<%u^Q@17 z@v(GqCbv!z2*5L(@-fkbd@p%joMUT!j6~CtKpSI1geazB-^k@Jzw>af`-1QSvOTa#L%k>04mXCw)37BgXv3t}7`Q9=HgC+%kSJfp-PSQM*A%lL z(Rg1611S?9JNIo-w$aUkVc!O#O)8kETP`G_60QP3)XHN{VY%PFm)V_J_B(f1|!m%4ImE6B1YI%sIQh^ChAsRUN}yhi3j|K z0U?jT5Mz!qFZ_U!%HSPJ*JwB&gT~5V-C*65gf2*h6xy#E#hbNX=xeDH3=r=k(PBK5 zSfe`b!6jPXInl}D2qwR`>284Cqj8(~!dJF0^1bK|8OQ&x8mt6$O=yBU;R>e`dJ+9wpmScAe>f)`fRyP`uW0#8ci zcJBp-%&VvuP^hl{A=Qdxz4wZ)9pEUv&p>m^*5Y4Ht?&36Vpe-^(u(!!7_Hy#l`{{r z_8*r^soE_4aaUQ+?V&6D;OlR-uR8xU;DMju?w!bL@vy7A>1q+qs;<7oj}KJY$=Ck4 zRDhh`!v>f#_xNQ{=Mgdp`vg}f5h**{5nRs!t zNbh7@40jHDWD_*DuR01vdru}i9uvuDIbS-fc>|7hY9&$Kr}=HxcKAGiC_a2}wFNi# zB$Lj8S+tEfPz-Qs>SuaOG||6#oLK##8h~#B5;zzfbmaxY}=D>h?5HEkVVqakHG13Hy?)ILoo6qF%E3y&h;k7Kr%;?NA=Gq=IhQ;&O4P zJ56v({%L0jis8W~yL1z9b9zkfVGaGj$YTe8#Cgqwev-p*d&`do#{dB%DD*~57?06AobQ3>wkktBSLX!>XIPO5?{NR@T5g$%_TFRYc3xAL zuP^JMy#Yl${ZAIoRQ>X;FX0X8O zI5E~Bg&&X)b`zruUas>VcXgw$B&zJ@F@Y8DA@SQ2wE6r}!x2|9K)u%<^GbF31)58i#K^El|+ z2H^=D?um_$W{7R?%H~EVcIf=3qXP?0W!Q`&1;2IX z@AQ<8T73WwkYz%1_FPsbQ~uAC`g&C;?9G@dLhN+)a_CH8wWdevmSChs>%`7?GGhOt ziLZc!&*0|LptTFJvB`hKOMRk}#09)_JX;+1Raa^9;5lh~JXZuHM*tTz`wEtY#$k2B ze!*P`jCvEWs!#C&X*8HwJstBQa=r7P-fw0xK}NadB`v(LU2vFVqWdDo1jaC%Rs{ui z65|$$pwn4m4-NH*Cj~N!v1Jr)8Wb3Sk!psF`RSk)aMU^r!2BLZyf5fpe z*_od*2hT=nWa{KEe^r*D3LITrw>(K`>g5&!2CR(-tq-0aE^K3O`9re0Q!Y-LZ$B^pQ2Tm%JB^{)RzxI7(qC#>5 z^3$NfnK*Uzjnp(;Fw!5GRA;sMzye^1elBTcn`qoahn;rkGesbRG@+v&w!GI(YgVU` zn|t|RE|7R%X=0E)4ZZje>W;;vg&5toUmMG#SMfLE@Z-2ryDy5mNsT*P~6wWg+>^U()x~*hk);Cf{ znn*_ke(b*XCHmFb2#IlZp=(^=l$Xgn?Ms)yG*6;~G1<#gb@vhW5q^x3Y-*2dJFrTG zdW{rC>@b%?b^h0jf5=~SXp4@wJqnm)CoSEDN?8B^o@)@dO|`n@vaSIV=8AcOV0u4( z>cL1k6TG4J3FkklW(3nK9FssCTu%iT?9(lNsqqGgvaPFXr+!TXG%>`ixe4i9J#Ot% z;wrr9{H$Mk4_t-KfySZnnK_FhekC*v6oUy2mqe9g44VHC&7Bxi)_U&sn&_&+OGlxJ z>CBn`7{d3?w}1SB?#aohU=_Se`)%M7`*wej{B1_LSWw;)pYXynN8Y$70IB`3=?U$n zf{kCV1s@Duc8|f_HZJ10G19f=Nwnhc$fk<^Mi075vl-gZ^c3H)B0ljLglR>DW$rob z(-el8RgnPIt~Y2>m4rbt*nn$QCn&w+J8avp91#5)>Yao6W-q6V@4+(^9THq{` zJro$eb?8}tawv`Uj@q|**vyz>MV5eC9b`jib=B=$c8*6_^A-pba8Ib5_shY$CP`O7 z-5Udtk_yZTI7*NuVzRqDKCh1xJEIDf^m~jCi7JE}%FX=MZ=8l$Vew4C@)NByx8%&W zVhLQPNtI8X;4H`&V1j7*x0)6)m|X@(*Q*2M_)h)5r)Nz9{G%qmFfcTvrktO;59p1r z`UakXz2rI0vf3AvQnHu)-Jzo?5=srgVy8!Ofqa=RWG1^}%?^&CJsbp)>ufs;$qR{4 zm}5C`HhjGC*|-GG5#Y1f3R{ia{?A5|-%Yt*fDd5LXCS}ZLQ+lxy^D7bqjm4swryb@| z5GcE7qF31z?XA(p(a!zrHw^Q*~b z%%q~DytB|_g}&Xw2v`<1`x9*@?o~XkYHEBV)zv?Btup8)^J%~r@@f9)0FZ#@D8Y1) zq7dJiZi*@~FCXh4pt&$%2l=8njQO52fl$<9i-bu;-A`$DN}b)Lcc;x}!26T2^EO$dkzxnkS)gq}u z+ixqWOp_ZXoK#0cJVFx2l`Vc7Z-+lc4*^t2HJnKL`vz`wzf{r#vQzg-Ivjf>jA zemPyOY8)ku`o}pSY=HE9*t0wlbK}Hv^4V9Cl7+n#XHK0#?Hxm{+^`jNA*5Jwf}+-1 z!sWJ(XuQLDYYrDbi3H|T7lE|@`YGo6V66S@z1=9w#no+MG9A6agj!s$PQlvEqa6`1IO#x!c(jsfw%+d!)a|_ zvbOpEJaEFfQ4|8qPo|xFJ9R+L56;;kwcrwUOe2zsX4yxUn3Wh(8;;LOpWNb#^xkm~ z{mm|UY;}|UZ*=2K7QPVUs?eG~U=jKC6%H|-U8w@7o(roURIml`wQ>G!Md;f0Jy*bf zemOU#orU2f0JQqlyba`ov2I4KlF*+Xq4~r+R;p34^f2|aB{dQxf5XUlq$hS?mfH?Q z_;`p}8vbn`hzP&k#BEM)iEPp?CX#D82Zc+t+C``CC^_Sb$5IEfq)8#}M?8JM9?Qvp z{r%{R5gpS^L%M&jxwJ~cx3PT|^10=t<{BRrdn}#{+w^X~azn2%bGD}r~2a~X^dOn4QK|-SY zf+~42TX=4VG4rQ`){e?YYSPwz&X01Yj?!gB70UA?h({zYjEgI)g9lGf7;WQL3^sIG z9`G?EW})obwi`@M?0!1t!Js2y#}fbaZOjsXC^L6=LuZU|ZyO4ZB}saypyCdur%@3j zx`@{z&0}d>2wL>x_8DyGkwrhlM9l|%C8y;cb+A!D<#I?*{ice_TnikYC7KW(LW|IT`W|>&Pwy{pEU#w^O`kaHy}xmiC`oy|11AA+L@}U4 zdwrp37UoCN|FVgYSOb6=%;;xxFT-Jr6;izzayxr|XnFHSR8AeZ6hao87~f@!>0w_! zEI*Hxix9%pYDCdH@Js#&EuwMP-(RS}H1x}tEUJ2BU!p&ne-SJLhwZ)O1G>BM(IA;Wk z9L|@88xXDy_@B+#L;wn)8XCykp1V~7)w`%&nnf+ZZ3d^$z}>{_VBw%KmRUJ_dD{-c zlhdOU-Tb(=6z$K_osnSK|A{rEM|7DmH3Y-zv(*6pnAz#}3@2&!hWghp?=B$4M7ID- zNpBSd+069T4&KCAy2a3b2bN1QYEWk{^V$Q@9f=R($g@tkH<^OTk3xG(W6X$bJU(LL z2R9@TPw~8K4x&AX(UAvlxV|^5qHACjYX9+Lm6NJH-oz@{219-*c$RP^7B%)6qyPUaR!QERE0Aa{H66l<Jyf~@Zlg$dq=bj^%!Y(j7NcIwd zsV_!*E~R9G-Nt4N)|^X?4}OBRlPY>%QvO@0F5k$3k(5)qPyGg12`g^{;WaB%NAtk3 zYX~~^5sKR)iuJxqWDuEosG{81HwWU7DsAINrikumI@OYFlzwRHk!vrzBEA#l=%#SP zef>w1*DnG7Tp%A#Qz>>STL2;*2C1x|(pax+0Jn>%k9qXPk1;F?LEsQ@JPV%O#N zbL2bk5@=j`IlzEZd<#*J{67UV-O*C2RmrIwxC1A$?(enAy6%VsgBv8^yzJ>yplEg* zBOS<`N9eWp*=15s;#IMjI7@y;x@GzOcOh)r3W9go3bgZh4=?rbE+`s1C#?n(Z-+!9 zJ&VuO%S)tU6aFMYz`Q;}jG_nrEe64b;{+T1lq%R#Ejy$K8v(NnSB^%H237DS|I~je zk10baLMQ8WX!gB44=y)yZ?2`VpBmm19D5%}VSNqLqBmk*#T(?eLdZS3*J}bPj8`Jo zyboYWey*w^42ObG?=3Fb?LQo#bRs$aTYhG2mB+H-r{4#nAmcZv(6X1Vxy;uKpD`sum@${P6+CZ^nraYBN|0Uanr01J|L{ zJ@$VK8W6OAP@%P>P@=RhIFIhY5#&D~4lZ0s19a23aP+(QcE`)tq)6L+SU(fDq#BPC zG3WG^y-d1v9mDc4WO8A~wcp&U%$~eEo z{D$h@27XlnN>Z*rb=9J~#TSLEdNW~rq)k?g&QDmP9)o!45Z6Uf%K#)MU{aL`SIPHtb;~6+p~o{hc#8pqFyn& z*w%A+6xjP6&f%2c2Nm2;F7Ff6o+A34Glh`Z z?NJ*Mrf)l5rev;7WQ(PIP(a?i5)G`I;9qQuqtxU{bcXib#fHPpXppkmgkgL*t|p77 ziV(%hxf{(0nE-a8vPT?5go}`99HLbzWqWdlGe`jlY*;9~<1?vHw?zKGHNRPsfu?zO zt<*{@({aQLK+}Mfv_+F^qBq2xHg3(~b~Ris3S5h_t`tl?>H4GICM++|1bsXFp~zk6 zEvz0*3xwY*f0>3F|M|gu1&WG^xa?-iEg?)Nb9;c(9qmd~Rm4fmn=YfhXHz);2O-gs zcq2|a;5XT8-4>!ENq!~-()^%4uj5qyvP(G zw)J~(%P{7718aJSq4E_$+lwle2bh>9E&|71St1;rI}-dGYcAy&q(y0Si(#w@L9}|R{d7-BDhm4X2sfQ8!!0xV91u;qo;`mSSA z>K{XaB(j&VTuC+>{F?Ad3l;c{8QnO|v*n$x@upI`SG$`Jo)4EG)n}ZY5vskNaYRG6 zh-%KOrNEOG3qq;kkiAu%;2A=nTph>@$FJ{JyEdf~8+XqfYp3+QweN}4Aki>V8 z2G_g)P?574MeHA=)NvFvHT48RO8KMoYB6*Al(@VYU%vanFv15+%$`& zm-F%kFo&``812B032)ZqFuo$k011mZDptfat~_^l0q^1dUqQu+kxD;g4_Lyc@Xhu0 zG^L7(vEu7r3tUw74-F4YTpT@5O}0U~DbsF+h$<&T11aeRYB%3`*LQ0yEX$#}CP(tz z1(8`-;4}(Q0^OZ)<;hGs5r#dqQS|FtbRqcu*l4 z9=iF0?@lZ2R_z4tjm5xzRXx>Id9s6sdQTQ|D$c}P!z%;QHf*Y$MDdc`Q;r)5wNE^4 znK~-1sK$mk7s)`g2atuxQC_4P{mv?PK(H4JyAk@B4u6KB3K1M%&{`@848tGjuwCN# zTGyG9&6UU-rDpyR36u@hj=FYW`GQj@pqpJ011!cQpB|+Wd<%e^v$3blC{!rg8Qrc4 zs{X%D`4`QP4Wef4mN5Onz>D`u%x)#NzDUtD5uv=#GSn(U44N-oA>{@U7>1w0UU{HL)uu{?`+CSyG)?JFWM$xiiB zzDnNHrl?Z%_R6Fo+%sA{rk{_dYVrGsL)Fafs)uqO-z!kan-h)PGJ(1F2JodM++7hu zxTD@&S3bG+`z^59%4xWnWnhetQhn^C5j{VY>a_DqfNG6zR=;iN~l+^3xq5RnO z-(N(Uovu;D>n-5?Xj#DjGhL-vi5X$89!q}*lUqaxRw2TqLd0-4=q$M&uFlP;pbvkdhDOv@* z>AXqvSi^m|(5W)rH=9uv1NTdZ;f22+*&2gt0n zR|MniUzwfEPBTo+OGd+N&U!II=$@!ejU$$6=k>wA{NAir z&%+is@$50cTLG!z?sp`6Q$91&hw>)DCQF4*RNKC)e)geHlzmj#Kd|{pTxlc3#81^> z4Ql0a^t4f=Vz(KH1R?bWFyZ*=Ku^!b@$C=h7$!W6CZ-tI-&Y1_ENpM&c&QM_^sT+Z zxjnFNZe*%00GIsRXq9RblaJdIpb^V5hKSwczb?}~O%l<1|I9`lzt#D1ISJ;e`3UCGLORr@ z4V;uilI5OvJoQi%ag<}(M)G9*8SFCopsya^{T6N|H0_e{F_iOJ!%0z>dn6!H6bjb< zYu;hw$@$^K`Px(i(hO6YhamK*&=~#{ixOBH8#d!xt5;&O0e6z@q5G7|BJn7`FTA8G z66T}7KO=g!rbZvu{i2<#FU`+@Q68!)g2}DtCnIJECKA^xP=zUd7>L`Pt~M5X`Y64? zDq(~LiqP+!)*m(j%!eAW7hf|szJ)XVzyF&!%wm_cS8jahbxySM>lk7M1=y)AzEcVn z63B4YR&8=%Z6V~R!~Y|h02xxHs?iidnkd&#b~a*-35X|rb_RrhKsZ?GKg&kdr1A{k z@o8kHO%Mx^`%GK--E)(AK9fmLO>fKRql50MnB3_XOVmjeQ@od4r?UV@LvNOYeUbAD;ynm@@}$&> z<~O!Be{ud%y_}!twh<9fQACkxR$k z3=fB!Vp*@%N7DOx9}DFcn0XQ5(3&Z0HjZsMKt<-G(hK~h- zlN9mp9Q#W+S@&<@k+&c>(u+!{n;&V-9I9^3vVm4|sWO#WD8aQFf>gf{5C0Q)ZG9e|7hZOv z<4LyJycs(<)-5&pi@672-Rs&R=_H}XQHZTtlrfqx1!#V$&qDarLG5`LCP|#OP<~K^ zs_nWkZPlYg{K*<%39$MZqI2vG^SQJD@NJhvawXU<;UDHN$tPIMb3If%iy`m60yYDB zg(4B%qy&M-nN0IBA3)ZTy+6u*C!z2t=7V0B0CAGs$&V@Lj#GWSmU~i z^xaE!hE2XpDOw%aXkgt-tbh?N9-I=2X3GzQUH>!YITRq!WH)@V926qpte>}ZmK49! zv?rqAven*_X8SaVo(oXC}?I@(qvljV4@Q=zsk8KDwN7naDF zh>X}N?W>W<@W-U(lbx4((2_FKPtNnYMQoKoQ)wq>Mol!~e*RK$2YxB5XyHq>zA6}h zQN{(=(tLPd40dYy=jhjTlfn9Yfd=~!5?AC<6z)B%`^83+oxk&wZnIpl1Y zt8ZUjwUR|lCvMk-?LxXgLa9O9qWcOmJn9OK$f%zL5sscsacP8N(_JaUqF>=WvvwQp zDGjHK2qGhpwOyU%X)p5?7jY+=22Q#JCV1d44-yU`ulh}es66Ct|MrHm-k$+wZ8F?w zA_}R`N}AXph#c<@WkXaGus+A9-E{QF9)*2O%5rna-J5p6Y^bY@cbnJK>Pe7P6*;v) zJ3px=J3G=oC?Q=TCUFXXWkp5h>d*JIMoQ_5*L@H?1%ri-YK^0kHj}|g8R$trwr;An ziKCb(RxBI8YHmCd7fxg@%y=!rDIRO!6*Tq|vlLpiDL-E6Qk=>LwZoQ7uBKQE>ROHG z6GMLHN4kk?3|5&vp9t{;eeX4VQHr0chEZ%R8g`=m6+TbhFp2UdX3#}690B*&gJ@)a zI6+;H>UeXu-ytpu5eYv)`WUsY2A_hnOveb>S%7F%7w?`|l}g^etW)F(rT|c|wS|vG z>F8>Vnf$Z<_l(@l>*HGBY%os~ z-jPwZTqD*Su-SP2EKTXYL=pPNA-gK6Uo#N+^3SAGkW&4=vH#U0sr@v^{@e)%2^3Mv zj=+YC*=I=#Ie}RT@JQ~(vb3Io;vY8jTg*-`BNueD)3lIN3WBpUmooJ@=P!hAcEX_L zOv#K@Ls+ga`rhY?JFGqR|Lx(w1Uo=T4^+maL|hQH%R3e__*APB3P(uoDV;a%^_2sB zr=?a`$P~t=bu!%KqAN{lPDF_mz*Gd-=A=6C*yCQ;@?M ztxBA5Ffy$(E=0v?B5;dboKIOBrxkcslgFbX=c@k@mZ`U^Qnbr@{3Ur5# zsKDrFm!^lOT1jAWOCs?xo*X zJQu>ToLw`&!@O7}HzZyj)d~J%Ng)_S#%_oLUkwn~)ZY&UR1U^G`!@1G$O*)wn>X?? z6|T#|HjnUO<$8h~_3uP5a6J^2S`Kr+*S4b7UCH})ylD)P*Q_v zpcQ&`q6%c8tqZEO*(BlKV~5=Z%%3|!U2!I??%3#QwMKgNt*oDskEU1 z@!Cfg!m4~HT6;jjhB!4!oDM`lG&=LIO4o%8Pd^-)rwvAsV)MK$Fa7F*8X~EJ-tdS4 z^{YKQX=ESzR3I1@_Xns?+G=(`g1n7ghrv`h;uj$Kr1_d}V3lhxgBJ2bE6{iy4Hjf% z)UAp<3=oYrL`?0G1+$mK+rj?S#xrcs!qnS7N|+*wMm#%oJGOoNh8fr^4L@F^JZV{W znMXLk%%f*STZp6({)#g+_eg_sUAp8@IoS@pJhvQM2j7pvU{jhSX%>1zV7B}(6-?!3 z#8~BfoM#GPe&lKFMTaf>(}c>SjTO; zrpF!gV7fVt5mmrPQ{TbD7$+Kvr?gr#^0=fgo4!p*_-#m@AIWchBuba0xW*2JorT+f zvJsz!*W05OeIKtV`VTvsbh`)!c?`{t#MgpXG2|cgdz`b#%J-#ung+(JXD)-IL!m@W0(fLXvTUXk2919zF7ior|QXIrH2_?T1h%llC_y7U&Ui;3nYMTytW(oa*SM^vaG863p4K< z2Q-#ou2lr!5O|59ANKG6{cU5ZVcC^OD;Dm4b*-EiFHt8T$m|`a1;x0Oa$;iehZdd3 z)RDm;4Xg^g;0<&l_QC^hF2XSFTnp`K|7t5uUOoyWGeD!OsWYd`zbZuuG}Ta|DDDmc zonQB&wL&BJnH$nj0;kIs>Ub=>uy`!@ro1`#AkJ|&{A{vZP8E&m0j4$o-d+}Ft|M&aI|=ax21@=ATPx+BI2OF;3|^<)&2vfFGX1?EQ8Hq-;E&sZ zR%r34cvvp%Im?ur7?+}k#nFIkYJ8X!jly$)<3DJaXWR{p6DEn6A&EF1Vf{P24}!Hp z?_?4};e;xcHrg}otfy5nC?D1M{*%{ZDGvUJMRcdOih?&hbw}IyyW0D7sK=#fSuNh? zre7p>31bFv(Zns=-YIrr$JOxP@CkZPG?2%XU;1;e|EgT^?!3%v=ps z5vy0%3-=rX6qV@fF#TT9sWzbo2MdNxxmvp4?+l z*CGvpfLgnM|&T30TaVMLoa_^(^* z`my*pA6c!goraJ=5xrgMxub((Idt-+>Iz;Uod|W5y+~L9C#q(5X^Ob(nT1CS{s5GP zdQ7kd`gW8lG&exzpvv>u4{G*v;KyGdl|jTO8{oRo+H7Z~{%=>|IPj;#GAc@6?VML> z8->GRdU&2gXiFMj4#6(zMs#v_Il}!o%kAsrVO3~b(mbv9xwI`^60a$tBos?@%AQah z5oDb6EKlKyoL%Af|GT(fuLGazh`t2*H79XE0#qb7vnaY3p@*>GQq!*YAy z+%$R4Do-&E+fhvHQFjsJ3W@El(K*VD8^-z1@Uv-lKOptam3@NS;a3ZhIX<%oH_bll zSM`!!!%q}${bNRaJVZ1(=UcKYQ_#CS|J*stE9cTt^wVQ`3V9M!!{;n8k9zPoSNfD! zw9OMT-G~2cuEByldIdZF8ar{#suaB8hPVx*-N-=eAlec2< zjSQ&~+FrC#u-vO;VrCCKo)$Xcayf0iSYTi}k47G(CFVeoG6FLKfcjR<55^U~x7pZuu9m0#=`7Xyiv{5^(a=5ED3uc)_^VPVhTX~5PZ|Nkl%s`Bc>WJZ?{BhX5BA@Tt(JIPUDwmV^ewC>Eh z_O!6f<{%+HBrtBLdCN8~g^RZ_Z{18yeyq)DI#P$%7P#rWiMlT8T;y+lHM1=}Vyd|2 zUbPcxsm~Spci0=n#$qq@(-ge(VQccK0h0kfw{3n4chwqY2PBb6K3}-IWX`zPK6X|d zu%}*iOr~a2HV(Il>iu|lQf3yF-^EOIvb?I+I&;Sk;P*D81?y)ffRnrZa}Sec%KB$o zHm?aJq~ueLavr*GVMS?HItxVUm2_qR)iT99ebHyK1~|?8ARS1jCIuc0rp7GubbsyP9w>ZeP6FfWm z-MiqOb8n^W#x_AKn98Ga2a@>XhvAQLnUVO%DZ>!|e${}>Rz%v9;! zo&E0X17#8qLbiV4Ek<#2$ij^Rr>^Ba;N9S^*74DgD>9>19+A;cv*M{Y$XrkB|eXUXuhdo~?6W5j|`Wcw9Qs zHu0W<jNpX$XpL0&IFk!E@p73V7d5!dQdq3rgGM21GM?NB zUEM8b5XhOBu`S{4JWvQHm@VVdsOz*$kZGyqRBqCV$I@Bw>+yE9FMsT|!5pb?f>fnB z6LErPRGbfTTyv!a{{`_K)p=wF76u??I+ozW*O6x|?CZ0fttA6XdDxmqmspj{!0wGk z{Q6+MeW(XP2!xp)h>Mj)gBs4NAZ@$P(CUPglln4qFl1eI|1X2~?bwt+pdYyE&zISK zM6;q!`1ROakLCRLeSCvcqzGj{{J0LYln8PnF)ZI?T_;BE+r)p%qT~GNoa1bPGCe9O zSnyV#seQT_wd+;Mru-m3~X(vlFoA&S-s_&@@=`N<4}c!C;50Cjd;C|XY8`SPhs4c z19SwiKVp)5B~Gg7hfc0k2eYibei;kF7YmDWfFEr*1 zJvS)>`?R*JikPDphcm6ccJ~7H2L=a)~I#>0-wQ#Co>E$hHB%$&R37BFLL5$oz;; zbAtY{6&-iG8xZN(02Ls8NiPE6BALr;EPE|fqYPFiT~Z;Z%jK%Yorndb)OUEVyt0k4 zu2|Q9Bq#(JCXZI;9-%|`$RVbfAj-)x1kyO`ThcN@xsHl%VSngJ9#~2&*5`uqESdA9+Gj1k}hu>{TKxi!jn96Bc zClG>;1Y^%3On|5ZhZT~()Ha3}7P-;O_~{8?S($d;6-dLbsd*!h=Aw<5h4h;)DJMD%i z{F}J&a^?j#VoO-EJ3a?rB*h21>%o_k!iyie`;%xLC>QpCYl&(fTnM{k4jT>KFo@z8 z-h|0HdbK=9r7;X*{hO$;cN*dq!4Xk!`684`oRHsxNO!n-1wcq1fU(Kj!N2L+639Y_Wlw|ffUW6NKl9R#Ja2zi zzkT0QZ^8TS5Ly~=&RY3YfYZw_p=n&f_xsp60Fn_)Ej}bC!-Vtw>=@l%DlfD%$0IMq z>g5+X;Y(rx_$rWNS1Wt-5MM9S6fd^LZI;R*cQi+KMe73Zdz{(CDIMcqrfP~gwmvrs z*Z2Og*he$J@EcN39mfx%_=)~WLil+szJz_supMV4y0Edg9)ObF;-*de4dJ>Sb$Akz zQx3Fv04OcyFI!asi_qCT9~&fy=gGo7$SxOVXc|gg2KV#h)M(fSj3g&Yjoph^R)<*L zJQFl{yg6Tug1vIoj+w&eRguoTp+C>wS*_-2Q+%5S<-18*yO&0K!2Rt}Oh zDK~y19X6r_*w=E~71q__U>FB1VHTK*K9If~ePvgIREh!$0%5;p`A_mP_^h|V$*{?j z>_Xc9-j8Wcl|Ec(h3??T0Z}zVbxNdwRaC+u?vWY~Wnv1{D+WVFZu=M9#(=_FeN7t! zvMwc5{x*hS@7RfXv8dxpC1bn14Ezb&>_~4;m0)h2xw35U*o!|Up1Q>=e)J>Y*-BFZ z`Pz|dpZQ^G4>#^3t%rkCerBH^#Q_H~PzAyKPSF$D#Ze_vP?}&s!w4WDbft-orx^M{ z1O{gjUPWbxQ^K0bETiPKZ6WU7oAaG%|E^xz3EsQhStKBc#iy@3}nIA&<|Cl zEk~;lq!jCRF&mOXALWf%vm-^Jb-wimPT8kr^CM(2Ar&0ZN#MN~+{{Pf0ybq=YlOY) z=n6;D;(?f26 zqcU!5z_0&b!4@yR9Ix)U?uh8XRcV9CCVG6& z{NrE@b8^&0(UMuBP}PL^*T~u0|K{h>t1p!Vum70Gr)PRB`TuaRbx=qr>83QH=OXZ2Ig5N@-n~t| z@&$&{!3fhQ58sJ}}KdPk$STon;&O#P4( z#qkT8cXS3+STPsrDx%meQI;~F1{7Vl?Nm&s_(TkCXII`#7# z1Kut0jH9R-<7j{ZxNWXccqK|&DJ*0uf=Dz<dfWc@y;2b}uckT6+~EQhS!^YqI^! z%=0q+xX2Np_HBRM#d#FnTQ~kfn{Ma^f%J|1R=N%ALC~d1 zW)3|lt5KuDHUL!b+L2{C=Xr{UB7!2{+-&#G>Q&N1rEUmoWUC(rlr(V@N{o9ruJM0C zCO;}07q1i7P@&WCUG|}y46<`Xl7QVA3>z*u5nZP0fQ87HOf_CN)uH(Oq^q9`_Ll2T z9(?nf*bZ~VF1KqG?I8Su~#M-oI)7y3PeS)f~f1SIM<|-+I-9p=Fwny+sXYQvwR^0cfEBM;xRQ8Po z)`>G;n_p~m$tqWetB6(dTUXQE12gWPuFj=~qe#lZ3nAb&U4A53i|Mk?LJ4IGT%nBj zgoZ61XbO0|<76X@G~y(Z7USu8f`PIh^q(B}YF>>YSxG`(Y2>|x1+xp(l=m6C+M#~q ztnrJOZyBOw30?V?5162_xvQbSe-3#$EP~UM`LV!x6pUTmwSm>XblSryV;BYxgwTgY zZpGCai^fM#K4AIl^ese2&MFe^@-7qCyi34wzD*{1>G>I2QNL21v)WoV2zk_Y^5x$L z*#Ey>SrEliHDSgI!tysovm+c@)WU3*&hvAD8~k_(en~Ey1<`mu?uNfiV&uLVTj)(s zgPIz!J7u(Cn^p_yTUWImGMHC+J3yY%L+LS384z|#W%wa>t!qU8)mE>8v6!13!VFvi zPF7`wIDJEjs3~87s=p@pNwp7l=lU6zx^pB&9{xXezRqaWHbkq#gWT=PW&`Va_6@!> znK^mswleakE3IYPRVH910WG+237dElbJx;AeV@h$>tg4dA)<+=B^OEON+JC^#buQq z@V}epbe40K|9p^5)mVfdm8>|V(`FU)Dy?!)RF z)f?=MJxp0poRInJvHaaHR%uG7s4uv$ZQR+W^(<2!8Lo!f@z$(VFB8^D%Pi_`OSLE# zk{E(>m1W^G?^j)(WXz9+zAI<-Z#Hc4tk<}$vO0y4a;VX#kSwe?u$rZ~l-THGu@&-1 zEAfhX6BP}zd{$T=zv)T5y_fJMhGw*SD~m7+`NgM{+UjBP!ZKz(uwk?L_~7i{q`UJa z2od|)^6!f;f+o6*yAv_j&u+<96{q_<9clRiK)C8q;u@C3()~1fUC6jrBb=q;W$=S1 zsdqlIN(|SvjEV}R+f31k9w|SQ-wnVvqEjjNQ7vOripXXBi)ka5(@z$SXRqK{ zix~Zc$6K9)$tH}|?$LhCysY0UC+nI!5pl|k8nx2K+$g28qL>uqGjx2Wtbk5VBLhET zcT6MMrEVQ{Ro@XGax<=v`!q5r{nvW)c9H)4vs9-6khQQO%a6b%ymBg+*Lu2(w|EJb zHN~a1#TgQ`NN5+L@fBsxbB0FU8ty?farR!%Uw^OB$RKIY2sy5pr7o`T1Wls{@vxIF z#dnl@B|>%xfAN`?7BoqSm@`d;d!wavf&=m!rs=-}7yuXdDj#SfzXMpUe&Mh{g@|26 zxo4{=Pw8KYkR~w-cF#NJ2!cmDYDT0YW`{It%lH|)0QYIf3T1eA^dHMTw<;uatA`j_ zm<-{jz)O4)CBVk9SdT$-2s;ZqNs!2c*+*aRf18%wh{zz9>w5=aA+~Eg&@GQjk%l79 z-+Nn6!u49LFXf7uZ-S|7!RQT}!6({6-Vfn^^R1BoJ zbhQ{NW3GaEh_cQgSZI53KV560;=|VD;8|{oP^S~UiLSPCxpb>|NilMClybUXyG5q+ z-fzlt31r;UOwi>GObe0n^n%2-rU(z(2C~UTM3o2Q6{`f{4^z@MPN)4N6_9f8erKm& zTnZSosNA1)ZpZITezNWyWr3wH-^&!wCsvJTnoi#&ieH2}_l?U`>_>Zw{C4`Jo}P{k ze@CN*I%B08vrd!P@*i+|CvWoC@*kL-psTgLrr)XWuWwU3817`Pu|!+8NKA8o-|#D? zFBow(zEzj;>#RTjHf^LE{QeVIBUjG_{P*Hrr?<`ZYl*}N`TQ|(3}Hb5)648K^mm_0 zJi*xAf=CyJTkUK|K?TH)TaL4#0UP;(qyP}INJiO0TKC~p@$f&#JPaX2PMHO5qr7}3 z@@`X6a!hRo({poMp#f&fAE9An2wpeg#Ux^Mvc)lo@p+aL?oB(0pl*h>tQjKVf@jNB zXL2qNP+bhmz=wU;bt@NlRqebNRM{)Zd0EV)$d;oi;Ql0k$VjVbR(3B8f1w}@Ti%G& zbR>9D#Ier-7%hI&**A>0+d>_AF*>eFTbu8Z>jIx<#asse#DcH&@ZeJ@-1VA%~K1aVDYGc(0@VkLBC$VA!OsCP{OeYe6|gU>i<#_>MZi zOCf}6DS~<^B%?kF(GHB3yd_Lqvnm2~YmWD>GR*Zp%kK2HAW%sU-MqQ(@>9sj>_pvn zcR?#{qZGLiPgm2a9JBf^+`)4t?rMPkqQUJ*o~w8i?iT5^AW|-C6>`zSm)^(iD0oFw znE^rXqO|=F8p`+L;Huw~R^l@l!x=!FL$F;s{8omMXKoaA2lP7$T)mwhtHLLjLkKH! z{tMR>!uOrFOhq;8l2F1Wu7{Ygqoel(XenLzyc*{B2A2xh2>de(2J@QfsNtDjh2};7 z479&+_hYJ;Hs(-JhIDQl>5=~SbCWU_YP@qq7L8>^S`7Loa)_RsURlPIT&<}l=(6c@k?RIvtLclT!QpH)cEp$7_BO8UJ za?$b@`ak1SQ>|7}E=OOn2^DbJkI)Z>Rl>qAeWINL;QrP57Y2kPuoB8iV@MOj`WcAy zh5Cn(M#-=d;vypBL^(p(HV1s4wdtg%i$(N-QNQ6vtuTYHUmijtHPua-^O19iVENF{ z79Ju(6uc7RTa2byREL>;i=Y;1TTtDrP=Lq2WM7B6ip-!J}t<5Vd)72$O-jM7N*qHE9lgQkPHa^Xwhszov zZCbC+^hkr&#-4q~gl%%>TKK}rXmOvikdP7eX>|2YPQ zEbasO-&)j;(q|cE3`Xhl2qM_z%K6=qpWzn+W2AVuONAXx@4YMXE?G+^+ed52;9d*dd=T(KBKH-X<(JZBdXVN#CwW2fv;?;Xa`!p*mr za_lI-Q~_-%=;&97-0d$j+;_E;rogTkGx(Bo4LDdOlkhy=Cu=~I5NQ`kZ zrEo6@-)`Ht{jKr8RWY&)g0z03=fIpliE!w6ij%#gLQRrQ+=DZq8}tbvQQH?ewIu@+ zex1hwyGwXPU@{&9kq0sluCBP8nL;W7V390xJ7<=iHUb`rs0ApgJ;WUDk%oK8AF2$o zUvAgqWnw6e$>cSwD1}!7x1<2GF;K4|7i{rW+bMFBzPmYO7KI@BxoneNv!Fb@m^{z^ zTcQpmN?EhRZ3S|q7g7`~MU=?i??}|&lRcw18mO^C)Z07R*^anCP~3pyf5uS5Lp*x; z<|kG2)RVinn*xdz_O&uN%}u~L1B~_0b%OLFQbLVhEXhS3HIabsxdhCqB&Ji_=(dwt zG11i-rO>g-MfwkUic&3iQ-x^fclS)05M}`4{~}3aYJWMsva5H}IP{0pn^y)%3C&zf zbFk0U6-0KpWM1V}En3IUb__K&;gS&Qf1i)7p$Q{L$SI5?7zsF?{`@w_j5j{eY?2B8 zhtVZ+3I{(Y&7aC_dV%$|Frr-PF=u`EpT86}9irWj=qQdF9c!Vr~k*(E$Je4i=d~PB< z(u;BL-qVlIMC7+;rVJM5?k>-n(*>C3XuP{6xa2QcmjYwtQNKsFc_OcO?*yurVe))( z4_@eOx+w1&*4OEt7@Y@ljwl9|3e5DyTW?N``KZ{MHa*1losCje!3@^ZJug%*72iAV zHH0k}XFUC4;T9}nzi65(4YiGIpzt)`TdZir=k}{)Yca9k2u=WvkgfZs>PtrOxm3!5 zk$yAS<7`BzAJIxTeN}}u8(&fnxa!vg+#kJKRVZOd3Bu#E z?{2c;Tc7RyqFl$08s7#7k=gYvZ+D(3G|fCTtfU_p6nWh`&OKr%6Z-`PA^Eu;=}k~w zT~Cx9zlnU&CqN|{!Y|Or3I3Wpq+Q3SC|H9pG%F}0QOW#)F73IS`Yp|F5 z^9x#SVlSX?8H>QyswK{aZZ8OZUlt#2_ku13_W?f_73!p?ZEX zhUYF;dkGLnD`u*qDuv@_7h1WEep=;`tDR7f_aVIzi7j;o=%G4jEfc-Y739!n2t%1q zB}MHtsQ1uoNA`H=Ye(^7h1)ebnE_OE}K? zH)xPeM^97#XFmZy#DB)eu;E-kJxV_&s!Y}{DILVIHc(#Y$6ioXs?%QSf--@o4ufHj zig>X{*d~{WSVQBU5sYs(skIv;^IXp=1?sb@a{bHJ$-3u3Qu(9^12K=#Vfe3(#h8Fr znfWgVbhdO(*sCzd*>&nn6K&-p>AderDz51mlN3Cwzc355n+G?&C!Y!Y+Z9S7Ll6^h zo#BMg&ov^%Wh5S3^DS=%K;FO@1Cu!fnbM*~#OWecObSb2iGsH$SsAasT>1tAA6(p8_NgTxn-ew}k$xw^F0+%@?eBJGfJ z=3+tpvpetu`U6GDRUztZq`sMG_V_@Wf+0Z?ahHf-H0qNSRMp$%^2y`pqRY8c8Bz=W z#GDu-On-VW=~fB+odF3pu<`cYL4)t214Oa8tQ$+&gUz;N_qf7ij?pg1Jnr*TS zyBEyWpW`SkoW5_nW<{#RpUEp7I2g#F4ijt~v9mkA=GRfXZ>MQTIp(Y)kQq-Zv8&mmkr5_n%|EeHd{{1?kFQJF6U8K?H!jqc)(g z>fd9tdCGi%;#i}J)r??;b`}0)jLa+R4tDsrd#323yIun@Ed{p8d~6Dp!vZVJBBjlu z_}2!p}U7Z=)FFueK z4RKnwL0|-un}h*gSqxiW=rkf@1KzmJ;TW}D1oRo3#O`bQxVGrC`+h&yzfy|*6T-rj z?c!UR2#nA}Wj95$%Ezd5RD5y}MBUFvf0fcNk|;NzGSR{6gs3vpg}jfhDG5gexdW!4 zW3Mi6%~tA73`YSnV1)4k2`a9m_XZ{N+t0AT2nQG;q8tW$qhpdDY_klmOTQ;zYx&r* zc+mck{DsMepl|qp1b%Yy@%Y}^b5I&=w+bem-;!7CViK1%InXZ@X&|!`DlQy*1^?-| z*o$G4VZ7T2p~_x>PzyF|u;mngYF2)F1H*kB^ik58n;UBA$N?p9Rr^`n?&;0}+y~cb zl7YN9Pl5c@!dCk>Z#aE|t!Ev=my{nxQmrEzWBmB3Eieqgs019yu(1)0$xFPePD=^Q zAdi?$L$Mk^a`%co%QIr!9EqmpXWrE3Z5)1yc+hsDE}}D}fF=eCsPcT{47I1XzT7y| z5OtM*l%m_c%>DQ<7Br_h8rUXS1qlp!gAp{hO&D1o^Ln^}G40pX&1nam*P^3$nvo(L z@2rWYHJ5EsAb6myV3c2xc5OR;g7|OaHOGmV0nZWOXe0(AdclT%R2%8I3P+)vBH=Q| zPp7Y$UGKb3L>9iqI`li3MPu^Dx?9_xRp8NS{r6iHmMOuoL7rmPFl=xugVu1Vm_&sF zwr*U?mgG-7PpcMnM>Whq-s@Zdi&=XEZXz2&7PRjS0B;7MO#B}ii7ia0=oBu`Sr@P& zn&<@pG!!chMGHzh5HYX(#1EYod&e*p@_M{OvLb-A*c$8SL|0B5x05*ZxcGOw3l1pR z^PVXy?O1e$x z4a^iKKiy8y_K^Bp7YM`B>D;5k<_J&av5Sh|?9R#G{}Bo%YCA<{jqbbSSU&PS+u}YP z+#tEgti*#frHdm>jp-?g*R)4QCgpqe&a-{DtKCIiUzf_r&dO;4@V7^a-jH~cCeLS{ zG9H`&x8_@JHQS;`(g)22Tj!)?7WZK+|F4j+m;?)CH*hFY(J#Xx1LjiQiVf2`Hj~#; zyXcpm?nspv6;tk@DA}`@_x}7S2tDfKDUU)&0Pw?Y8>Q*04;sts8epy(34x`&aL#(? zv4qK3L_E!ITSnYjHBoh|zg6Yzv*~l3gl3^E5~*|RH%&W!vGRhcnscciaSnzBWrWWd ziGjneO)mcsUpn`O0^K19Q=Fl63TiNvMcTv!jWQ$LR|g&}MalG5Q21~&CwAS43jOom zZKPiNBI{3u@exVqoSO6MH)w(JyX0Ofv|-E6ROPzLcxK^nw;jHW1E8pNvS}mzrZX`{saFSPV;SdgiYH;IV02XdQ8_U+&m+t#|dxC;RZ!= zwjmshmx4dOvmxp}nqeaj%uygcmxQNgMM#{v)!VcY#I!?a#3pJH z0I=r&{)}$4h1@9%MF|^8WY--31?*0*%4p=jB0;5gieNrZ)F6I!k;LfIhRHHqOIfEA z%|Q2R#DLWdiE3o9YpbrikhtwP|1-YoVgOOA1&yMk*3?4Gb;t(2l_O)6-WRDfoSCNs zT(WEJ5u-`Nu+KAtOUji`71;%o&$!Z8c!(B&k`i)yDxfYi-QSfgGS;_cWaIe+HqH!_ zH4OLEsf^831Km2h*hsiyg%i#MY6|>7;T)ttNnY){@`26^pMy!fKv_rhX5Us!&(3dS z5KrYfj@dPMt*S|wgdOAs>>{YQXq`F%I*dNouj8neK}k{M;S?CnV;GIf`Ltkmog{X? zvJgVA0gQN}3HQ~24Eh1gTx*O+Hom46gq=x}>xJ>W&T6H8*}N- zlk=ZAbX7Y_y@4CBGN>hxFU=*<(2Uxo?t->GBNJH&7Z*|4Iq!Mr!E>>e);D~7k3TJG z5UX8&^82IN%mPqb;ZhJyL4!>3m|Ezzr4tCrluTPpk?aTtE8)%9f!6|3 z5^!H#<8%3;*_mAfNVfj;==$zdjXLJ_sa|}+Ns(UjNO~zO%80l;YC1BpEv83_F;Op2Dj z_WsSF=YV%zZ#hPe5y1PKm`rSu$iG5ILWvL(&i^9xR;)IWjk#49-sosaD8cM4u=I1! zLem}&D>fAQP6$g#I-V8x*eZ^VbXR~i{%IfAdyv>N@boC4JWcFCw@51n!Fy_s8Vg8S zCfvSQL*Z_Z8fT4^gJcd^>aEJq^e>jjkApiIW+Yb{5g&$CGqRr-hOhcSt+i(+cSQ3A zNoWAGdh9}hIyYr6tpfYG@9zxLzD&ED8ILc^2h;rg+Eul&9C@UrxydQv`)rlZzNnpX z@hA-0a9B?wSQl#ja7|WBC6e^{F8y7(04qxePxd#b8|Nj%(2P$$sjU0L&ebVeZoUI* zAR_>eWsA?suIu^cYO!V^A?A#g zcwz-i+}GMwS)kE_BgZ`Ax1Y{S7i-BF#1aIYc8ed<^?$g4g5eJIxS5|p(I(K(cS2OZ zRAF0MwG5{fQ-g>BODd>Lt;E-;=UC4wF2!5} zMXv37h6JW%>~3v{;X<(DL^`{&6w$GGPT6C=zTGsRA}rIde~B)@MDs#wt>h)2ug4$LK}jmByF?)mG4bq8{L z>&A+-)r#tqJdiK)VS{%-;d&)fYG-p(@lL3F6f?8P8>lwLRbNH(;$L5sM#2}(SF~h? zU0W7KV|t(9Up?|ZQ!F!wh{83{j>v1gCbR?4C0w`$$uK9&Fpd&3C{GeWvai%=ZVY3duyF#FL^0 zH3*%FT@6&h2Bd%3FXh$8dbLaJDXabuurID3%-6rT9b1*a|1PgsAvP$;pz5cORxH3E zC!`f(3$Cb^!FLKL?Oe1YqJN?iA)?ves&k4LFq|ri*cl@{_aIX2H;!NAf0R`+6h+#7 z^fz`dVE@12&15hjFSSWJGTyq$>oA50Ng9kdis&ZCV^HXK!=KF2!qGrwm{Ad&wd@N9 z!?-y>--;MZG2ZuuGgZ&3F6zT(jpyy#rX)IjdI zS_VJAyc5b|&QyMtd`J~HwZ(?9(eO1~g}?>L^?u%PKi+{{;l@@!tG^XDQ;2AWXJAE% zc42MZL9@jNDZTcj8O=o29vYk;_2Zs1zqRSst?K*j#eXi%+nkK(*sP1aXGN$_2%{N^Ig7 zSSInwYJNNquBMNIyFHejyq4-JpInYw(SV3gN4%*BZ)JNiqG!ags}#(kQ}9P-jMTgU zJnL;mD=8xI*q&O+QjTb>ZzIvRqBgo#TJXeS`<@HqHOF^`YKRyF*9^r18!}(7hJeP1 zF%+_STd@gXPvamoQG*5SF^F>MUOjHnA2I=g*VszMA%1}4{IxM9_v?y|%2_Tf05dv` zWaf%7z+b&~Tp^pH^#t}o+<)1IGbjM(P#ziy4x6S_~m}B?UCzF)L%lFMrL5F}p zrimZ~PF&yi8pNFh29kq$>ja??5}D&KNA zlbZXwiZRV`CQs4!?r%T%i(^*WDmD*gR{2jMt1Ha)PYRqtux_i1=j~OFR<3!g9`9`m z*P!QSJ?>9Yea%_}(r7Br#Tconhu618{5>`x5MG!E^^!ptGfTVLnDGNVF&LKr5MkY% zM`*~LeI1mXHU=c$kqeKApWFQY=~7^zWi{?suekZVdu$lZG8g?7q7XYMwXPjkm`&!#6Mco_YBv53AiN{ZyDTB5WUmyX%yNqw%rccAaVzo( z%Zc&Izml6k?hf+7{98wtue+K1LIyVaFv9ex&_nV1uY0bfMhcNiV5ipVf4a7ZPlTXz zrtOWP>2%olT5G5bE(Oj^YL{_GMF=;Ctzp|yj4I61Ulko>&qNcEqxIl;gr+I?P;G=m57%n z+kRy}Rbz->>OhdS{E~%&)o{_>mD-hqS~6=^_Hk2@AJbmS5y(^vd{!cF*x*F&J{XN8 zNdu@{zLrak;}JIBaC&o=qy6Nz$N#t^!bB-|AAYj3nqtF>wI-hZ#}!6|qs|RbEQe*W zyeU&s6nl5$9MH1F?A2P40L1sjL)j>@4VLnZNM zLPT0j(FGgyTg--!>>zd4|qqW8CM*qh|1mshYeo!ZWR;j1CHask~cL zj9nK^jLe3%SnU{;7Hw3}I~D4{bTWuE_<^2ZLMom0`N!Q%{i?K$S@0jkL6+i-o+14D znJ8b&uB65m>w(_Qumk8qgi^_Hg=&8!KZ&g_FZ00lydNR?b8jB<-&<)P+dG;&E=&z{ zY`T!4E8f@#*^z{vbgiTx5 z2bJkuw&2AZjg+Ea1Sq0K;etf`2bOf`#-GtBssZqo17~C z%G`v%67^2*!dZ4a&{nLN(CQmrVx<|9@Y?Dq0xyru`Jo`CBMW6m#e)gF$s*byp=4@v z@gTxXCax@{5NfgnsG~WMu_4y%hMlP2H=TI@8zOx>I~!jkz6=+rpmK22$t7xlsCFb= zCQ&K~uqDrf7?>+@pBuZ#fwLIxaA{>LWav3gfxt=&qnq7Wc&ZJVlK4KmJl@RxIJozK zsdqL*3NCxWO|Qd-=L6@V(g~-StQ`yJ``R(vD+#Qv;`o~dH2MKX3kcGhZ2y z?mk^|az$Tl13SgF%Kfsrf~ZG>-I<4k%fq>~1I4Qq*b8i0OF7i~P2KM}j(Lb^|D-U? zpckwXBN87B4r}qw`5O2^g6&4QtV1Z`+rYk3QOq%-?>~5QONicb$L8V@A9V3zqb7e$ zNRyYa9*&uADoUMbz3g0jHM-4fzJ7qj4pB5oXBI)}E~YcTL~Jr2&7oauk&JbN1P~nS zf#ad-ukp4P@i;E-!D8$a93?TVOPmwv9+S^gY&Ww4$BgzhnQ$r>(5+w$hx3U-b~n|L zvK1JMvkTH6Q3fFg&)>=|D6koR!F0CVkF{r)DV935x6vnXP=~tt{pA#%^T=T0P)_?h z#_~k17a)7P(f{4)?`VKj#4PkRlZdfE6?F!QE8FvqjGyS1%opwFbX6EndrZ@`W?KA} zI*{YyHOVAgTp|8GKPm6tB=0^6anxf8WD<)yyN`z&z!3i}jp{DizuVb4{smW->T+oV zVY3VfEU8|+WaavjW>?upZ5G$%>P9B2T{+WXUA9~rUH_DT<_8FyH0lQcF5Oa_M3_YA@*4qQdKkJE+6eF6E}sM=jC7VF78 zqHl`%&8GT|1^ro(sf+aMN2N6zD7LB1bDSjdu>O3&AdDfb9iK3S6$>0PoAvxiq-+k0 z|MA10iQ^jdn*C}L%+@RS>?WXot6{_^BZPEOLngW2qahQlu~JNxv*Q~PWk5$aY$4M) zR=)6-=qbk`rpU`67AFPP-jd%uxG>T+sLMe_`3$*dw@>PG0b+YPjJ503Mq>+P86qi4 zdP3_xm}Oh)r8Qw2U=q&ddlxG49gETUsTBMxSf8+7xlw53h`yLcOY4$Ft7X{D>;NmR z&zR_;#2-)&Zp^q|c$VnHURWmgbYYJ)3k*ED;}iGEoYy%m8=pNM9LtB9bI{|JVMKINi4MfNUW)4b&qCR1Ks)!`Mx-9J3J1f!R$W+pC z`13zxOF${UvgMKDp_ew?p*iACFks&$$mO*U@QaYONbM~=Epkxg)8o?0%-#&{8)>O>ZY2H|sL`>_9WADv-y(Q83NTLTZQ8b-~?t9M5 zo?E&bqXkoX6AK1rB)VgG+U!On*Q7H}MDZ}$?LS~Ga#g^`JdNR=e(0jPuEhq_DGG!( zVG=9rlFEnReCFzdsz^2Zzm-Au8NXj8D?OA1vw5%nNmi%kqtH6n*;mMkOWp0 zhuW^f>c(h3nIqGnB0tKF-?~#q#ij(`jil9qXtcNhLwolnWPSqYfF4(t|eZA3{ipCW5#(^@t>KQh?ZI5JDiAX~=C1QakaSf>`a+5e({`$)Jka79E6g z)(x`j3t8){NoPllF^iSCj)Iaf1G5^ij}rLa42|Q@GUgK7z^lhI%KH*6-3G~$sqw%) z%r&k}8n|%!$9%So#(P0rBk3oZD>S$q-=g!Z0Qs8%7&4ni!vY12pDBmy3f7(0jNoR5 z=%KuJI{@krBY1BO3P{hEZc7%H-=0#b_Hu5_D-$%fujZ3^&# zJk`}-MA`HJ-ibzA9>_IQ2$xo^gFrO;DF0lHJ3HW#Mbeo`!drpvdTfEq>>cc4WB?RX zYy#y^i1bFobyg^f)`{~%eDT-@J%J}g{2Lcc`W7?gKy+2Rxz704Ja8++h2MvLu5h4XfAn!q%ZW;-o9VIc32vq3Aa^XVB2BFh=lUW@>MRR##}UTRwC!j!l;^iJ z8?!Gcs9g9$Z2!pjT*LIZ0;l9u23Ixb;|N_usyU~2^0qF*4`8BU!ZPRzFEy+}0Fr?L zZXa7mlV>ZrnR_gpJ%wpO4;mtrIxvJ>X~IL0@QGM+@1LSwvi@CgdIhB@v z13v@3mw>e0?tG`fzZCyiyD?^&y@8y{Bv~m1~;lk&(2GdtuOlI;1k49us{A86B04^ZZRP5kM@wrnAG!i=t^wXRxh5<(EC!?s{Le(_diVn%)%;s86T zB7Q|$l7T}@7d?=P<;@s*z(mkJQT)IaPgFM*@5JDfnqeheF4VLl8f_wcUyd|LolPtH z`Z>{YNgQxP?68cEw_292cnSNv9&iw(aOZ1J<6esja@2`R^mKExqxQ69R7Z?umwPgq zDAY)t$%SbLHhYzGWf)jvWO8X8)f0-VIMQ0js5Mq?T5KbDV5Dyzd=tHE>oda5KFBKB)zLVyt)ptzJMvP50RT>)(~(LgRWwTUllth06KHSviQleAE6 zQcX}7>V0#;hMbd#!t-g1=@IhVv8oKZG!8({gCEwB1=C>YAuiA^PCtgS%i3fvXl2|WqC8^Ha7R43Vnzp&=~-xdYWB{$!NUL;)r72I9iCSTH;4@} zsWEBjuaLiEqL(S_S5{Y}@uUin+^{6-PCRtQ@cDr5#_g+R#)8aEK3KKf$)Rtdp|$iN zvAJU`zyOd(3L|}b{cG$B4s?n=Le6k0jTADjX2P?p=R3f=ZbS4qR>Z3lKCgRrV@67~ z8ZHy3+SLs1`jUz*PjP%9m4t z_b+>j@Qm1x8?)Q7Ic#H()rzJYO8+{-G%7m#%{@^b5qt+k2dM&0+J$l2;~O*>l~|2( z#SkuQREqRA@b8+635c~8*E;M{S)<+ixM^gPKye#Wn0?hNd!1Fjq|KMwQBXc_|PCc^60+%v03rEfFE)Vu`(9sXxI2^I2{A!KzZd;-Y1q~Vm zFYCT&QD5>7P_o_9+j5qYyebVa!?8T$KzjS8TTZ+^ZJ>A1p{%Al?T8$P*SxlYlNY_S zDz4+9i<8#r!jB z2ZZ-52`C#@8({j7Gw%eMlaOGsmMTf&g-i(dvHV9I!M1Ma0J9#+6vnb&kn<=$KdPLL zHBHBTw119<I(4D z+wjf0^H9-3h!0#q_p0_H@lf{Ck|1!XTSiJ#cuA|pp&CR(Zk8Ej{K%*+xQD_B)yGP$YFusmaBk z1>aMsG#bb9bsXH7O$_@7a_bbLZM&&K1`9lHUUH<Sys=p)7?*VW?c)d0_j$rbBRzxt9 z>T(kv7^NY@IboVJK^*gZA(N)(#hG9Y;)oR+Kw4l{nn{kA)t+R+VwW>nLov(b;7p>C zj00AQ89;CG!BPx2pUDp-XBjI*qe-VDtxyk|V2cSRJKmW4L0DRB#+5?U%KiU9^UTg8 z{&s`$j>%fI1DEpoSQZqT4UYGdYx$E9;oBAOiy!mMvY!dL0}{nSY2`+Zt^ITs=mOhj zs?dcfHHk_5io$R0Zurp1IBeT9f%x5T@Zt52pBD{q2HLx}WEKQJ0y+`*xNh(-Q3OwM z)`blMq5wY4pfuy#>*+;Mw^&@Yvs4#oO7YB4>w|-hUe7*5v}0NrzN{Ob$q%-KXw;RC z%8E5QFkwoRn840Sp%knlaVspcs3_HOt9rUPPId0#*PTxBO?fBJ1=7zipR#f;<%bDN z8bu}pP)Ge{?R zgBQ%LS*)itb%_BJ_29g@n7F(^(kL(MR`JC{j8hqhhp1GRAdLL6!%aIiN6`14eB*(JW>4%>x-v6FH`1BS^N?(m!`pzNvkkPR8c33 zd^weD#`lF4D5*xujyaV@9}gB)#!xDh|3po%`exZAd7RdKG}3#P*H7rHzX=i#luMmW zvc%_d0FY$NU@NH{>=_}M&^#?^)r=h z?h-*|h42_k^>-PA?_Ymrui>y6$cf}vWbHMYo-9DA!}B+@b7>|BSh$(`*&>bUmXpM? znoc-be?F^YM~VMW7w9kpCAY#8yaJxA0z!a@q^N)q7eZu8ie!fG?NEp$4wWh5$f$=; z_s`%z=miepS8YO=c|n|NTUTm%CgfzT9EoD}i^l1XjM(;~EK|UlIr4W%= zM}nej&EEBS$p(#-BQn#-Wj+3kTN)!>5F#qY3W(TDm_lEzCi@kx4)wFJiLe;XQy6jB# zOB$sF>#2QCnntum=Yo$@V#vWzOwrppCzxpX>jntn5(ee7l;bw9N|EAJAesC`Unu$U z*`u@`NR&)IOF5pB_m`n9HArXDN{;=@UI3Oo?=N4QkSd|->Fs1qiEh!qeVH_FeR{&6 z-WDXsR0~M3@;(iYq#&V8%0k;iq+;_F7Bftel#x6Y$NQ1@;dH0Tw2fQw)jd?_z>W!{&6HFCBupfPj_S$?YX z*$KCP-#JeE*cO#dLLkBAyf?B!g*M)wAgMf%aDr54SoOjtd@T%=%ispICe&f3sTn3w#6)3g~5Qo*L*&?*& z=hKRg`uuzdD*mZEQjQ=lbChCG(qwGnK$19*5i-#!rKj&VMWO@p8;Zh^J%*TJelR|l z6V0T3p3a%f2(D*K2mRtlcMx?126kxeLWs+q#I*%IBWA%R1|7FkRZfsdxe?no9|CB(&Lj-n~-M6B^#Yry33@R?H3;ai79p-Z_LN5AH}P%%RW)+myP zRK>-3?Kc<)w%UPqM@Tn>`{ob+lG$mLC-P$Ldta zY}XcPTe7BJSAL^ojU@4s=fTO%2LOT=e&R|Q5(;hqH+8 znhe&}_@TJwa|jm}#x%se-2gYYdSj~|rT0Q9e8xzV+eyU<6cMohS}66S)byJK#Q|9r zP?H&Lf@ALS>PU$0is!GI0!a?t`!SB=**wY=c+V{fW_%>wf?tl*Qyn|(?b|b`cd^LL z0^!ogOueVzMDO_~GbGUCUB4#RdrRM6Ay13S0k#)OD2-bUcX!Ss1CI5J)f>2Dx(j}b ztz7PAMJb%fr?1Y09Uh}cedllV*aAekNzZV-vq8|3_la{ zCi9jLrM2o@ReL2sGB<4F+i5tjsrm6y#OfKFau^_Uc`%M`@uTz~KMlU)TN+{~p`Y%H zt;|n{1|EL-0flv~VjIv{+7H{F08nOSX&D3l-I2;Bndmk}!G{S%pnLM58IMX+V*;U_ ztmibXahqdz7%K}Ll(aOL071A4F8hH6Czqrd;%YWqLR|>n2}rXK)}DDXm-;mELEV(m>Ydw5#Mr3;m3eqGPEW3@k&$#1 ziZtXMftVcrX0pEQP792nCD!=o;*OL6w2!c| z&(pVt`>&5kuANv*;qUO2r zt0RH>aVX<`^Z$*}{#g)yPM3Oy=s5FRuM{}c%kG~Ak>{$EL_ZLw?b3Nqg?>b>#)~z9 znxti|igr0$XMZ1{(L&c89m9H?ZU}ROwU`z){}r3fbpqq``Gu5Fa>B3kJf>|wI+YKH zaqc0r2N$p)V}4KZiApdA$cuKo*ah#$!qns6?XzgnZr_;N)oHQNwCGZ?z&*sxVy^%P z=`fG|p*GH``Oc9>#<))hEcLlZ7yXEBlw?;C$w%0b>K`K(blR<(-$K@^%Eeii%-o)M23Y_uUxb!pUOny@%wz~G;|w%@=XaVgKoP+Zx={9M zXlflx1&Gr=hfkybA1g*AbI4;efr-!g6q|oEO+0_`FFAPle%R>X^K(%$o>k@~+XY5p zg+^e%W5{-ZY64W`WSZtZp-KB(h{SbaAL^B0XyPQi4U@fJ*G0jB!wEm1JD`qU1!Bc? zofp^D*Cm(L%Gc#7lK7Lmc&I$zWtiZZ(P9k0IoaYMHQ>P{e_C{9wiOJ*#F^4sq{-?L z#m;Rg9@Zw98^TPH;Q!u$F$9zlpu|%P2helHw^EXH835)DXnM$)k9-bV`USutqt1+> z`^z4jIDN|n2(=~Z*k48Y@7&@gBi1>^9XEGo$LcVM@e4kL4yZ`^mgFf@3^?)~V6_^= z^mSWZ7pe2e<$(W*Qq3x}7KM^6P;_{f=#I4rHX=B=Hpgyf%RpKLUgj6D8GMn77P#oz z0d4!kNHjOSwGF(J^*}voD9HB|nBgFM4vMtmJhy_>$!0-X-g&@h&HAxHj)?2Pc$upW zlUK5nf71J?yBk{BGR&9_CVA^#nE0DLW&&Z!o6Ob}wUMqoN{aj|cRJVTy*S7T8- zE9Pt@I=z8gYRTHN?(vMOLw`?I7MR}d5)`szV^t!I1QwcX?RvDGhDNBzFN&#M(2zqY@79u}mt z$0w`jtJpY0#xr-)OR8csPdo9)1+v-^0B*`$_j`YA$gn04QVP*fso{dwIK~g%4KfkC zSsLi6mi~*B(@+k^K6Rst%(<=-Rt57CY}jZi1CM6pVs<{A-hX#E^C$rJ17v1=nq+`K zXX!0LMZ^Iphw1mm z^wr-V6F6vnzCk&R%Y{`_SsSP+w@Dvz0T~f2G(k08aTO$4NuGuO~~A$7y&-NJn;e^c`SD z`xB=dX5=yIsJUOlpOdC^YfjGe6$xC`C*ifVLgMHkUvhQpq@hbi>g-%s1%iyuwVH@( zL$QxF))Pub1Y82^!H#83VLfu&)-jhv2bL@dnoGtT{lD8AkaWG0qyJZE*p@8olOouF z*mx;i=Xu;GgDn`dxdz;B9^g_9JXrU+?zxh!V{n$uF!>GWKOmf>z!Me=J7$9Y>i+0P zd;Xm9OSr-5s7ce`bsuK|Ns)D-@`;)vHXT3!qU9TSqu`L!+d&yzGfq~Sq%KD458bpIh zG#Wn7{X!!|J7ZOjlidR|3TMVXf0ydPc;w98O|AOuyDv(f`775JUKVOSB%fxm8e4wj zlE3y^d6LDdTjM@FCQ3cA8;5uG*+#Qng&+ca^ZIV>?{QF+YgZiTF-fB_*XkooS|{fN zk-7)PpaaSSnmXTdI1xh&BcWVmJzE&qP{vivd_$(ekysN6dy*`urmHv@R`o>)-Ge~N zdE<5yy5cQoprYqQ33L>nDf$pgu9r#2T|5*OZzoi)7WavFgS>T`Kg&LfS^2g=0cxz2 zAUKcc4(vF)G{<|#*t3+-A5YCgS)t6() zLI(zzu)42gfLsW%JOgAiqDOQRq_udJ8SKFFph`KGZ<8?oEMNLz9c_Uh5!nEkAbh_D zuChW~D3miGu7{B(3p$aBGQ$61eAtfhs=yESJ%97TfWolhiN_#4Cts1Tj1|JxJl&{* zm}E!*fxegOdt2`bH;;enw6bVWaB}+}SA=fp96o&9^FU>iC_vb-8N6=NaDGfx!t)uW zQ80>hT=mY5jNPj4fHKqv-Kn#k)Mk(YsEHIwI}_NaKG`ICR`>Yi@t8R6m+8uV2(^Xr z7*Q0B_9>a!$`WWCQ7DBiUW)3CJXNu^YyEQ!q*ScmS?@=gu!F-FeZMzW03Q#a7S>x@ zf&{L9SH(-T;H^*81z2y5cNXieOz&Z>GvTDq;`Z!4R61J%Ia2bEc$v|iVBF(L8J(IZ$inelloZXAy#H9}Eu14Dp_7xT%$j@OtW)4-chRK1a& z%sAyj7Wm{)oND+9-dDUYEwyCPZ*I7bQo~+5y?6DLl!nwN!=l1fq_m2ZT-BHkfeiJz z;&;BQ8#|Yo{rz*AQ?!&VvR6OsqylNRgeK;IoCLeNonw%Fu~;#zUva zdl9}E*)?-$3Y=$&C90WHic1CG&7Efyd*wL}i83%g4+GBC&pI|hU%`uv@76~_j0%Yw zIQQ#K+JMII1J1nbh6JHa|SS z11Ui ze4L_N1#B>d zsLXYyZk(~YcZ8ZJuepsK)DXQwfFlr3-&}#>5t2wc<_25vDWBYHF^le$!cT0pV0CLL z$#fn7&DFy~O9>?j zuLT83jxdjKpXL|YbPc<>*#_`Q)FTvTK1o1#zMW;Rp1okc(5*6V4YE9^`?N<_2nLuR zb7V$@Dkwy?6Ycmh$Vb5B>^T*cZn#gXs=z(fqDKeWI;U-#7+{Nym6gB+GfKEfSdI^T$0epN{KtDB?Nwy~mfI2d6L0Nn+u(G&@z=JLI_1!B#u>G;YQo z;nT@Hl3Z*uk?BhNJAjrQeybX;>y`8bE*KeyuYp$k7Wa{;{|mKoPl&x@%LsO(#W{j* zCMlGxpun5a3T29m5f~i``uNYIYja z!UkVEBvP}}V5II4Qgow;Sx(-)O&ddLPFnS8WiUi&=IH?;n5otVdrmQGLo!k=^jHsr z>s}EFWS#0{7`6`{`w|$0_tdG5QFme{U&|FUF0QE;)Uzo$-enadK;0A1=unzdv(8#*u=(K)G;^nQRtBKL>fd6zSMqhHi6A!dvJ!o&pgI$nt8U%M!wZ7Bxb!==Ih z8BEt5m7=6D0ed0Nh8!`V)m7uaJCL4W$jFU~#e~3@G zl;_m?=OewfK5=R=pp8xAai*otX38uLnokiY*GUDfNsQkU+eti-@bUxcyU>ECoI3B} z9fbN>oIDjouQXvHtIzJXGN9(y-E6DM3f{uG23Iq8oSIkb(!`A;SN6_SCYSs?k))f9 zumhwJ|9_5Qj!KION4>yZYNuKg7yb?WP3BT&#SViAxt+L$6grp2T{NPry3_ETzE4V$ zN=m|q|EN_1>_bPtT^LF>N1I3d4m>a^37g{J z54D`%1B{_j2m94ZVLGqwy3lft@MAo_cR8}Y{u4;MX#WsIeDUS}Agnf{CS+f+>t+WF z$lgtr0xGFUr>Ul#3eT^KmPfPTeda4zAREB*@&kv;+|+T+8`rrQz}Fiz2*4Z(UHB6} z20eyatt~?bffq^LxQs@%=Rr!O;VXNa8Io?^o zPp0Fs7g)}Z(jwKwybA=!o}8qnCsnWJYB0*K9moc0 zYZ*Hyj|7ip2j9xl_7zs(oqBfKjqwdkVwO#%pm1l86KG!D=I~QwvQlJvq4Qq%l51o& zi=hw6MJ87W=p@}iO*Z5U4Uxf+WUnLN8;PP5;F)!tQ|LBok%pPY;&f$!&%IjUYPOD* zeNXVvg1JvY!*0s~@uV-j7JLmWh4dk{fo)B@ec%YQ{Be&S5x^J4_|ZN8PbSAB)npg3 zBcGH*2iLiHS_#WO>r(HC#(H*Yn}uE4l%}KRlXQG4U-yaRRvW@QZ9N*-LSTD{SNtfz zN1GmO&W7jzj%Q0cOQ^@XIqOt1J?0uX-?&Hd+S<2=-`y_%IvOJu2drB5$Ti60pURFl z48zoW2B5zwMWZuQHI>xx@hX z)Mi*J6r*1P2cy+zokj|0I^+GaTvhg9E2rR;@s%{|d~kf_;KLlhsUKgA*mZ7!5FKbr1r64bc2scj_R*}N3fjPoj5cc)vjqXbkvlA3YhXXiX^slw=F_uxlOI^75ZZV@J5vbTrQU~2 zV%+lVH>`xHH24N?=@I%N7lp|y4gLeW(yRQJ>r(6%IKr9fR{HFQEF zg#_9b5uArKB$Jb47or||EG68ha^C?JF@E$4Q&ew}kQ4M}17tCR7I#%QQKSdA%~Jq| z&UiHq;8s2XWrQIR3E53DIv{=?{;6&GQFfv*yINoJC3BShZeyaM zc1pY;fZx=Bu_)T@s45}sk_oh+W~fgy3N2s)W}WJRf(gDngW2ij@7ql&rg>ZX_E14M zeV~0y&+b5DhO)vbK;NC(vd<~_YfCN9JhVF)Rz*Db;7%EfLff-7>`86kTg<#MQx(E}#%eXTO#kG@|23xfc9Y*zLbB%jTf4VwX-vuwkkk3DrQvOc zXMCcm0UsqmFXHcqr;6}|0L*()Tl7@uUb~IJRF~kzDP#{YK4jFd8kbXL4FzO+PZSRU z!TUpUuZzM2{x&Gu{+Ld6=}6~54*{wWJPoKmZ>=s;a?f+i;ot8T#X6FER`YtvUDd+L zf|Yc|!^)Cqh-<<-h+owRO96yb+%nXKjEY$%Dbs{AHgHjMf%No2nq^L7G45>jp^AwT z7mv=GGD+)PS7hte?|pK(u0n3cCNVeYg;Ccr99y`*$dFVJSPqf)URJ%DSvLCXLP~w+ z8o}6|E0K0$6QV6AZ$n(WSyt+WfUB|!5hN%&$#3%T7<>--Zmzjy;a&6)eb!Upxcpd6 zz_!@~%{=iPvG$2HcF|S?*<=~x6gX-q%Tca&XQI*m)%EI>ervI|KxmS=otGWb$bZ9K z<6N>&`%)if$_OHoevt}>2;ziC14Ova!;#3B=3ep~HA=)&HTTErA`O?uM0^w+B3F+L zc^h4UP)BB{1Y-{Qjg2e&YlN&y7973AFPdaZ#~~}<3v)XgV#^oJ3`xuVcBa5x$=%Z% z7nap)E&DT{D<%@^V6H$P^0rl5qgaBi4Ho4l*PX#PtD+#9B_2B3)>(*_>V4Fc9zw%X zJ}W^1hQY6&^u@m><%e_Syy!MC;_3MBPo`~1w%{qPCj+CndKHD|#Ab&wt>kVb#aWN< zqAnu>D5%T=G`2(e{Uv54!T0pr;E<@GspA7qlo==5w89bUAg2{3ctTO3+2!-C0Jo*$ zbZNLQ6_8-uM^CcOSHp)sNvtKRnbO+vyQ3jJ_|3nIoBTi90M)%@f>(K6(1x}zJxx%R z21%pI$&8uMkL6r}&Jsovi{4ZGagJR&7vxl!>Tt-fHk!tWrOTQ*_LT8Cqk=8~c-wH+ zH;R5p&CnUSTd)Um?o7(T3Sk334fcIIHkimhXN2!ByS#S3;t;Z>x=Oi7N2}F94l|0) zR;dM%ctOM+;jYP4j3)ybVD@M_U8lElv#>y5_NlKzL=dfwVr1;!Vn?e4Ru`D5&0oog z>c-BmaPx!~i7y$}4m@!^j8GIbE16rQGTfq z8@d4&n(K7`{Pu&#wx|vOF$R*~C?G$@s>}T8L;JR!fw!;Ky2br&ZE;)~OpBTLUwfS6 zSiJBMXj#;O*)X)$6Nca6pd|6TXqkUVMe6yl6*~~`1Re>Tn1{bID_@mWAN}DR%!b#s z+j|$2I9MlWg6rJ*OliI7!=fAL8N^F1YE1rWvJwFdp?r>WHMKwdRfGU|*Cj}-m4G<8 z$u1CG&!}B*m8mCRSt_n5{KH^ZQ0wU?wpH6~)ll>{C}ry3zj^h`oxNG-W+Zm+J%_tP zaHH*hx;YTfOKpUE#py@M2mS-;DcXPIKOGUmMf9rRd5QQOQRw=#XgXQ5i@jOI8P!0< zCUZ2XynK;Opey>4kLEc8#C}!P|6sp2BP@Wl7^Zq_FYEokbp@ZAm{Nn{U10NNYkb*@;V~h}>Kpjh-_&5<{d@Jnwq#nY3~A6InBJ_IJwGP^-#bYd`Tu zwPTSZPn8}LS-C`;C-NEAEB{&Ee`w{lb^FjQ>gYYFZPuntN7|G>8I7{+;{-Di9|f1m z;>P#s&bBq~Vbo*OO!X-?0b%PxjDN|ya3P0$m&rGVR&-a0KV&eM+vxP6CPK--{Opj| zoADn;hQ2X!>Ry&!Bmz4S7?tcaDgQo)eZJ$+;#bD#-NSa84)N$R2Tk|Wq3zkYT=5jhlM`A{`_bs{k6>r zac$l^mO2)gDur$+-=J#>T{;PWf-wQgnL2S7-GG0*+5XIwj%s$gaeFHnKqsRyjKHFv z1Ayc%?zCnw)^~Ja4jC-1Zekg}a+EVOlm7OM9b13==dflRf$aWkqb(-}G4L-QJ;#9^ z(@MbCXlyz#!Vx2e)rU+FtP>&|?>GHw7a6`G2Y^9A`jkHZ7R9yA6T3S8&zTs8JI%r*Zitwl4B_ z)pJuglM|I9jOC=7cZwHOMTnP*3mJ$DW%<$o#KJP=kf7Vu8}=$Ka?E6?4u*`_19QiS zw{!+gV`31Ob^BbpPi>k~AY7idTLQkY10=1l2-LXN*(~1A*lW8wDt1X=aZQ-D-iR9K zr5I1~BD5;NjZ&H|8cA~ZWF?7QUeAwr(HGs??3xHuF8Y>3m}iz4$5p{PmNNh&HISc} z=WF2;Ip0U0Z;R7Z%8120-+E!Aw*>4Z&8SO2+ySaM{0UgCyt!(}%3h9W8yY1)5lqAfe4} z63T}#sjQ@o(Ehj)Kk5?ca5$k?CE-%JevLmK_TQjU@Y6AIUvwr#bMe;y@G9zJF?N9? z`doVOz5x?4zyNL5mKucWye zeQeTh-P(`PH*j+$7NAi*wy90&?Uy36UQ#54=hZxs!Zf zJBW=De^+C&^FT=j{WSrA&wpKD0b>U;Lw}5lg43?(vgCSWsVIxTD~03km(2`muYxl! zYnZgxsUKAkbGd_g(-?bs8aGH4^5WoS+eA%q#awqZ9GMiU36;r5a_OIL2pf^J7bmk} z<{+@>jmPLdeubSp^oqWIx%{>k=L%7XE^w_*xk#|}b}uC_RyLv?27j1%iY|pBW)qxv zaMT>~e?m`RD6|*1(vE?zY0suct;+xtjrykQivP2=oPGg7t z8HwLgOL>!F;u#+`9fqC|($6hp_pD2(EyC|ps(_D6&``tF*ioPP3-zNl+HTc(`<|0D zVaQj%=C(5^VoG(Bhdd*U;DG_)z=VHqftv1YFyWBz{R?^zd-t$IwEr4GOpD{S>SAA- zc!HB-Ml62U)Od?4gMMiO=)}|JzG8>BiP|8O@yDQK|5EVlfwRoC$reQKjK`!)L{eL| zST78{!4J~9;`Ihz(SQ5q58qMus$Rx1fqe*`;1T;Pi-C~;Y+zm9@(q6a*)dXx9`G%7f8yGF( zg19{NcU?|;5^r#9Z;+r4T}5f$F84xK3poB2yH1zQmx8&C$vEvDf|+fFa?XJqQ^HU- zz~}3M)BXsbv@P(Ywp{Qf@5;0uvhBJJa3l(CDUcT=0Lv2yOFX13#Q^ZNiyHtZyBJ%dNNp_+=Wb6*~oM`^N+gz&Mxfoam zt#Cg5wWpLAZ*a975r%!sDSICEGQ?~~ALA|R9Sw-Fq-JH=+>0rO!GO9g8BlW{!iUnz zx!rCHvKe*BoDu09?7C_8Zh&8U5rMu}Pm?gzqP4?u*kYZ|%a%BVe;eFUa#PUb&Ru#T zy6@XK`=u1zi6WM@zU&vLSKnb_2y+s?)X@gUFQNrsMt-UvjbmgW`hPmnZu79CbI=~u z?Ga#t_u5E0^o9|Cx{8a$Zhj|3%4Qe#xhO5zy>lzx-6`chbmb;6g@4xo1bzWWD~#KONl+TW-nWMSC%yQ1$; zn7$ajOVs>H0T7PZ;JdAvLYN#wWy};H|8{_1?%W#qce+ZUt1oQ1+d2x9kuq#;lJ>17 z&WCrLKX^AWxPcLm&j86?1aj?vuc#8D_^XJ-+Tw10I9%Mct{Zy> zk3-Arf%6b{wThBRz$iErObG1Gt|#;$*pc^UhDrJeFKMPk`~{ZY8mZLiinYHoShE3I z_^~#;+FgN_3s3na9s83%^ZCR>>es&^VHcHv_<%HXzLV&KQFQ?Pi(nRMjVs^3r>{SL zS9}PqxlH7!tQxvZQzwcvFkG{w{+^u4)t%z;$)D766#&SjG0Ptprf(B0nm#k7%VEP*wQ241&`Ac;*5<|9#v_PH!v)z2Y_yGDBnCh^ zV^S^sbWkbgeS%~4frj8Iu`0!Y1JPMJ@(wgginQT<{`FejADslxUPLGr7B5bpA?~zb zVoZceJIs5$qyq&wOfaOx)wbPO<^SibyI}FD0(LP5N`eKK5XI%yEYQw60sGZ+Qophe zV#ipHVZ}Q*ab9K-4f25!d=O<0M*l5WuAqt$16c1q$fll3GEzqB3Cj~EoTEUZjF*3kRklYd+JlaDaCf_H$bJh zEA17Zn7!X`Uw4mw>v(8f{FA1`Cg}L1u~A(0orjXXNjQ{D-<(>L8&Bpi>65GpJAz#E z+nN?9W*_fbc4nbU&(SrHVtQxhvSuZ zyrgOQDyQ~#NgzgMFbnxmB44@v4O(-JXi#wGT~-I>mGX0xsKb``B6XrI7%AcX1_EE( zk|-ko6t56IpN-_~{)C?bGJHx1J#(6edXYTl8DVwFZt(a1!@Ne5Ig`i!d|WI?)$nn` zW)L!ZZzO(QzB{yalMI{Lji60~S>aQ8Gy}e)hR<*$U3My8bj=>L96U+}{G^+-0^j8d zFn~tm0L1o}K|Ix-()nti!FI>)FIqhugchpj1)q2Bqhc5r)?0s5KYIX}~hkq-Um@NEID+4ATvdLl5s5$rb7(0CSo1Yd;{atx^@(uhJCuQzVDq503{anFMNEm5Zj3G%eOibv+Ft-IF|- zivdx1ZhInBI$_*Y8oThamrJG`#dyD4kte*Ww}s5EJ@Zc1(1Rliik)_Vl{O-{Kzn>C z3&}_RCp({}C{E+#eK11-dFqMczzP6y#vy0P!Ssm}axY@7{uGNVh)Q}k<>$=$B-L2K z$omxZ`fo^_52;wvB+CJNgp)ZAq%Q`ZJprd$Y#aO|GKvmy#e*ruTd9TVKi;AQ`T1B0 zi7+B0=0(co%z%vmAV2KeV1)F2;pa`t)gco7yd=AaHnNlDg)WK#%cA&CW4x8B%ktUh zY27TTK56Br@{xDJHYp}{;^>ry@jE{qA)j>J10+M$$W@edL5LSrL-T2H8*0OJxnEE- zEI`9b+K4^Q<@LF9cHSP#rqU z>F?k=lwjSsUwl~I4c-`_CFC>G2-UA!U$!BL?6ZFFk<%kwM44*_b7(gyGdU>(ekaX~EYc0#1WnW=b*Wdt z4CeqpK)}C6&6U|*c>^k*Ap3_KG%;g{3KrpTgZ;oZ;<^xKX!UW8MS@w=?`|gi+f8SF zF8n_T=iXN1$$OGfJ?PiSx{Rkk6z9AZ1%VpHi<@V2i3Yb#F7RhAiH6UL*f$J-`>~ZH zpr`G+1y9s{>qK#0UBZp3!p5y zAp~?O%j3XOhy%+q;p5-bM&kXZSFN{jK47;OPxPZ{*_Cn?Nzwd&|_UunYG)-vh*1snmVdXUHoe`@& z74w-p(%tE|M&#cu^6SmLF?pEiWQm@1%~S8G|D%2cN=MvhU-s3>0TdqI7SVroQauRe z>S5k=TlZCa|C%{T+BH7?3Qv}c7vVDs{G^SDDJO~^v=)Nke4vl@Vh+h+< z+o@_Y&$pnIk>MU!+DvX zuzB(^;`cucWK!TD21N@B5?%3I;qCri$RKU!Rp#0q&o3FBLeMmcZ|Epy767Lu2?cn# zobwrcWkO({T(!|DKvptwHMmjhV8=s96-P%zxY zN$T0eS#Xg81pdj)`hWrdFXt4U4kuvhg!ESRZl7YDvf14I={=d40Qw8|Gmr65`*`p? zjO|i7QxbZNl%=}V+!uk9wZ(f+{r2TIikDPqx{d&(dH?9@rWYpo=6FR+R94%|{BXQT z(27p+$x@|oyDB=xz0RV=3^*)Y zCmh#K<1zRXKkRdKJEg|b8HUHV6xulM|m=m1MrAS0Xy~a=_?R$?|At$ zoyXY=Zu6VYeKy!_N!6+dSUyJNwfdO#ril%iHx0nX*z66YsliU&Agvqo3aL+cC)Ny1 z@NQ4imR9;Ly)8drC=SBGd4DEDgBf%KQ-@UQH9TD}Dt7wh>;@R=8+eh-&<=)21bfXy zdKV6eIpbkyIp29thuIK0b@B1iO3aO|aW+B@`It8`?{D5~*l`CJ_1ZJfduj3E1nqSt zP(fxg8BvSaHT=y2tY(H%Y38;ftwc+&lU}0Kex7n0`s1~E!2SJqL@5O&WncJlWF>UViy3@2ZMRg zM%H2+Go0y~qZ?1p#ao&wB>u<_HMz}?Dg{}J)wh#1kZmaQ0YD$t%d$(*`U<1c1)9E* z6Zd%2`jo?Qv?qkEO|XzC3nWAm4X-wPsdzld@QNA>Xn=5(xv8ovx=8>NXo;mJYiCnH z3WmS~KiYoOyU6CK?;%ULOZ%Oq^EMRuH24{WR#^%(txGeC+DH|faHVU>a%~1{)+c8k z)8Q6dK4+hhRhdZXU=R&a-AYfGI7Dt#$F^%fJa)1AzZLPGTp^vYBm56I{-bqFVBvez zB0=shhg<`AU`2E9z^hQk_OEP(rm`I=P^^jbS;EWp^cIkPb_b9;^Jc+g%+M z(xl=t$J;?SaiZ2~Q|khA@u~5s{s3@e_UEm-iT+c^?x4$88Mj+&eL;?m#)qa^-r#bP zTPF7ijKK?H6;>92sVPyhHuUvx_R58~P?aa+vE>Yk0qY zTXSqUuh_V_2p3hmeLIbqQ3vp#iwkL)#7n97{JE!5ZjVGEwvxalul{FaaA;uEcETale+)o zlZY&d3gbKK>1HwSBHc>7SaRM*^C#l{^sUl7E=`k9&!ZtjI|7NTKd3?Wqx7K@y4q2(2<(I)v~Ez=f#R)CYZQ(@( zAH!eo?!GM)gb`RTB1$N6`W|?^Rg554eu1KxVPVu}ttHC-6n!)z1V64On zZuM-Pc6i^GnGCNNQ-3I=7H32l;15Jh%|K^A4=SXw% zl<*7TpR=bM@YBm^3~1YJ7CfTzC5+mv8I>3R3YS9?sysTs-c=#9{~1c?52SMA>Uj9) za&%;WR^x$zO~{EUmI1@wO?pgdd}=I*r6FXQ7kMMX_T1m?`^bOsQ0mH_q7_K6<@MJ>LQCQx zFUx$9j97$d@d(m#NR4%>2;`vEX*XLhnWk8wjWI;>p~nP$1p63Q1yiA>b>8MiA72d% zgxgd+O*J#+5op;ZAIGpvi9;V}VOc2G(p<4NT}YBm_|YsbCXo_CRmuQomU6u51M>?x zm|~cC1dK|mY7#`oFwQ%qTKiI?+ZdSJSuXK4-M`wZcdhrlg_9d56M6)IPh_Li1h4`v8smEl-|egR^MPs@U9=`cxdKSBGPB!^2& zyp(plv!ZoU*|^FY12#XeN~HZAy?MrFSfT*t>Nv{2C`o#5@G0I`f9_p;_eA{PDXtA$@ zm_4&@znGHMx#o#oc{T2#cMn(U`j5z(a!=d-Nercv-r_q94ZtF~4>!Bqc@Z%~RblV~ z3KjAbgs-qF9qHvw7a?~kaM92cWb#u6-psd955UcBYdf1r)x5@lQ$RuY6-uXpokNJ- z1H%%$U4g+f47-twzQ#WGq<^yVQG`kP0WPXxP=(&{3(osWWg)TPEDI?SSOf0}qjp)M zGOZC*exkl6hih22`2Ae1WBmTW{m8~VvF+|i>Vyaemf?*ruHVFyGpXkVKd><@A3%c& z%@Xq-nk`dJghTyOV!BTuxU4*|CiXfzjBB>{p<}oyR~qyzNj&~zNSKh`=@4`>ZDm)U z^2`wGTJBqvy>~RX9-`P`t+>0O!vlP|=IBjIF0uhIs!|-FJwqB7klH&XW~LGMxyZ;u z*ulEwnzHF$KSC}CTwCF$xKv~ejRTgz$(12DTzQ3`P^-6j>VbHRE#i5HC2Zgw3(si) ztnTG;a#6~j``hZ+X=fc=SX%rM^W}@yv~ir<3G=6^z`n?&(wnE!9%vG9*6y47^XU@ z=;5EbLi`bf$zne>omX(tvC=+u`*OcA3%hn?{H{! z_Kw5y=a{qifNb!}?R0#-t6^s8^lrT-Mop$?3uoAGUt7<|B=Ie{MxDhs zX1gdA&x-!{WWdTp+Tn2YGTvgNv{GU1_y?MEZp&LW5)U&gfGCE-oorN;&TRVt)Aqf{ zc6PM5MDH0VEE5O+p%6`kl0AmDH&M4_O#X$Gy_N#R*Whi*zc$Vr%63T9G7Q?h-)Xj@ z1a7s)dL-af_go-hPr{H%Cbe_mAbwapO++%(epB5N*ScDIZEK`g6M<1J3ErZy^31T~ zrv-_hT;TZ*`89d#qb29p^z;dA#3<*ho8L#3>Tc3N)JXA}_wM+QaBUa!9XNDShYPit zj6<6T8w2J5Ly@z|vP|GY`}1PYMx#<()4I~%4os6%L}ki+CxZ_Y#Y!QKFo@IT=Af9^(Z;GhIo^OEY0lI+(| z5ryXy0L&L}1Fv=~&I!hE?W6{eTN&V7DEe1ra^HCNFh$)%0$W@U3jh~|(HSP)X0+_+ zx3KH}s*XF0$jB1}bp|}=ph(uZ+_rrGw&i_TuXRnfcuF`Jw;FJ+_2OjgLH#*ZcpvRD(VSsh((C^aHfeIUY2k*3UT2CH20ku*aX< z?LX^qY$4^;b}}CDF~mbRCg_6H3PRbMRro0j;X(QqFHGX8cQ*kzZdhQ`lr97I`Z-}c z6Ax;Jk^_FY7T2r)wM-m=C7~Em@hME!K-GbOnjl>UrwxDU1tGoAE}@9MMY6Kl0!KqI zqya-l?t|n2&#QRjg{98^uLb5iIIa4Z>HEb~vFzi7;E!djQHi)DWn;wBm4xv~MH<}+qL0WAyV?4AGF&m6SufL&c zCFiup7x2_bY^Pb6<^Izy(CTXnDT_o42%Iw|+hS1F_BbBApEQ-(#UBpWKXRG8vm`-n z@mZ$uG|u?|TiP{{54_+#HnC)zw8?e%LROiQJzM=xB&&va^|%=fIB)pW0>|HVISRQh zfNF7aR-Y+8a{6xaX}UzU0F1DkOp?vq>iVj{TeYvV^2gspCz3p#;wXvKpiO8tNA+2F z4G#OHdLZ>K3K;_&U@&4gT}i)Li9?$bQjqhiBpXMKFOFt&yU|m>Q1kFK*3{*q=M`^z z8wzHf()6p$s02PK*0qUX6zv^S-F)ZW9sD4{Gyj^UYdV58~BQ#ddYkM9|rQ3|K==_0&0@Lu25qhwgY6 zlL;dRxfjb*Jt=s_9^|Au_wx)^7Jx=LMtIkvw)(ve{jc>B7-ub%eDVapt_hB#*DhSo zpLjxvAXze;fbv%3a%^mw1K2}a&Ol;~N{+;Etl&_C&;lsui-W~-G2@$>6qyp^R_v?f zSLMxddqN3qaRNyEH?me!nnenhI9A~+Mu^h9+Bm@j!kZ2p>wNGL;amG0JI7vh+tJ_j z<$iv+es>{zpzj=t96QeUo_=0Sz!Hb(7aD&|A`c5+5TU-mh#pe7L)RAd2YXcw<8tm7Bd zv+aG2F+H!1`>>mhzr`1+;ltT01S>A)m9Yhg-?O?bY$yCTH2D2|eNEO9%kHw}ee1 z!2I*7KI{Ta(Cn^;)n>oF5HebX=XdUzF6|2%&X&p&f=FfA_P=?#=4bF!IKieWMyXxV zCR&l45X~dTmEWJ`aZ-oMEQSTsz$eV9duXPA-bhOBVwskUv6Xb8+7L>>uhkmBaIhx7 z$hv_0=MUOoOm(dob;$x?qaqPtmjPv;X{>cGiC4e(&1L25;j5 zyMVUwyo*7=Li((vv*1yPLh(!hFS`aPLzXOv-he3`>3wSE^j}p@kY!3mhpxoG)f2Tu ze;>VT>(LzKxyQO9kMPT`McbWndb)*IS--m3)}IZ^RB=V7hx2_P1s2={O8&~;m!2&B zJJYGixDb^}wm3#`lgH(^dm}~f?W-5Td8o~*xuz7s7TDVBISrW;MWey3DAO1<;Kbr_ z6GdoVWnh$+VH9Qrkygw`jtfS7t%OUtmfi(e%me&Lez2ohbHbtn&dQ@x8xtt?Sa&9i z_0*E%hR|UMWjpm5T0-YG7E4gbk74WF?I?94#-OIcK2e<)=b zWB@i!gQH+AYi z-P;u*qTmf)pyBK?gKJk>|fi0!e-11NLz{#ra*9_!khU(&U? z>LdxfZ)Ul=9o;+vA6Ky_s!hM{v#riQXyH0(q{YD zaxoUqp8Qc_d3zv=M307rqGn#&Wq(|d!5NF)t@>@`q`ALBvIXGESeokz_xP`wd9b3U z#(TjHTZ~%hw1TjcY(-H7+Sy|`&JgHdP|*1^79Sfc+iT?u#{1$(NH#NyIkC`pTlIZejDg6_iUQhys?2~>Dl&~wM0BM7geA>x$ z)FWv*(^+w%QBE+b$~|UXy-~NTW{7z~Fusa+T~*;_gtx?dQ&3gV$kz&#j+=->$Z@tv z!|7c?j!sR8r`?%AZ0m95Ol)4p?zvn^()NTm@K1+BNbSNTxH<9h&UDezi>#qlv^EamR6>g$oW!S(6p-H~ z8cWOu_B|DkV#s55>x&c)67nO~pk(@dd|s_>qgup>U$LBk97e@4PA7w{acOqgKh=RL zz}HvexKTo0t-I?ARxN?yA`9Ep0A;(AK+f(|>x!TP#LJ`o?iSu<06KYrq!*DlupR1b zY25T@3N@y_Y)){0wSM(}(hM1^^{G)oz{k>&1R2C=Q(sC4U;tSkJO+h}P1s25%4tHd zv#rGk^=1y?PNiUI&BFh`;yrw|-J#c4(^$j`B?~JsB%VVUybFz61rlxTk7>(F2kbtFj(yG-N^K=Wb&~#B- z`Rjj42MUE(lNFaEq|sL+A$Uzq5kt+YmGI)zO|ZuTtTD3_bNzjnbbzyWWMla6NIMYw zmOpH1{MHwWB(0R8`lJs;^lvHn3F(z=V%j|y$1XFSx@1NJwCP}``pIX$RJD|y3%rY} za&@fh`hTIr<`^@}iTMh(lQKF00}%L?Qnn!DuHfAIUAlxx%TsV4)QHXaI{S8<(ttz1lf%?9%p+M#N-sCQF(6+wSr(QJ0-z+YG&;)kuZdZ3{df}CEekm`OFGB2# zBH9&1xD1l{u=j6n9ll1d-A(;9s}-(*;die7O#G3#H0|I|X3T^|4#v>=k;|zyb z@hrodpJs@ZW^^zy&rY%g*;nmpo0g%E3^FIOy)omZ-WoN>pVTU(QzYRE2d^3rFh!Th z5feuTC0dXntbnMsPz@FV&I;$SS|-z^zI8G0SH43RXyR?8P5d3{8Q#y}JI6rL(bf2f zZLMfO7M!RnJvMtpR@JG}0;f08wuKcr#QW9}1>UMZP{~&mWbzdX{E<}*Cwa6JkASP; zt=lVxhen|d9#1gzz8beyM-m^?IF3CXc3pS=0`JQ|#$#0hm5MYn1Yff-l-r#1_9p42+3lud)W>Iw zyOvPe6EI39O#Zjgq*|Maw^Bv#cnarPhIL+SM+nzfBYAQ*a*zG{1k1=1!6O$c0@x2sTZpydv~e zy%5C}+g+Sdqolc8?x>0yG{*`;oGYAL`6|MfT|Ik=dr)#l;q@W9$s3EtkEpKx#3}T0 zMLj#FFV>$Z)K^dZIwqG6_~l3KIpXhHmWEr=&i$XC)~`96bxDESU5Bb+nG$db+{^Tim02SvcYL+$h@^mQ(v( zGY0RAO$oiMliwHCqHq|QXo_e1@Spav31fR1=Q>|8!7dzmuJeQ!O(M4UI35>jpcnmh zMi$m2JE=4&fggrq3C5zB(jGa-*vg6Z#Z4`Y$1|9mQ+8@YV2eNv@~YcY)mAUqtERU1 z;sXd1)4O|dFpAK6X8IJqr?%*om!Kh5B2(+r22K~#V|ivdLiAVI9i@8f~GraQKS;`r6uZv{;^E5 zo8<`{-rb&e-k)GZrNzwKc|lmPUV9?X=z%Qr4Sz@_8Zg=XH)7ZuKO&b&TFvi{CyglM z6DW_TNn7wHMXQCVZ2EN_DG~`FrHjI}B9ZCtnME9yHKrMKdVR;lia4wBR~$$SzvMz; z>wLz@UBGOs(gM`gh84WCwZ#c7!F%w*BDmC%2~%7Aj!*z(#SOXZ$bz=JYMwRBHz&;0 zfI#SxX#@vSsO0Cl1Bi>(-n4Flkt#9n+|9rs zlBO&8Qb{clvUa61My>(%898N@CGFRGzNqN1yQ}B!b5J3Sj-qWU=d!FhL8N7{_0>{nYG?<+_e*wZ6 z?EyV~dxY-{3sMp5;Wt$O&UXthqC^bdHw`BvD5vQ6MKx+6t$EluP1s)6rdHWhp*lf} z=AdU2>7`%fd%GLE(mP7%G5|Q|jx5+FR_SQs&1Z`@G3kctqK7GTQ&xG4YgehH4mC4T=d33C^CSkJxmHS%01g4@3Nsb17EZS)##_g)=*(x z|H&4J37lb@AMhQ1E}hn9?dDo9F<9aXxUZXU&Q)DAXDzRWw(sD9O$nCJ!X zB^>V5n19}H^)OHf+IaEx1AXEFd2&==zL$wjpm#Ve><-rB_aizKG2Zys^+o^28osnz z6zn{th}_DeM$RiMhX^O29*1VXtH8K|#DwKFar-3Lrz?_qWx&IxhCuj!rpQ-7BHIf? zYywa5@cFpHe$_vR5a5vgR;)3oy4uov@$@JK(H#3!Op6E|O(X=udMV>i`A{PNWFpox zutw8yG7yn@OXv`&3a@UeQ-tn_pD74di*qzid(~%oscZ@AJ8zQU;WLGRB7W#Vat7Rq zZh&RGmo@=~R9}qq5+|q884);(2iQ-!4l%fc6zt>|g(47_;~_;KMprswkUB9_;5K|H zyecR6Cy@pq)$_5-Lb4ekw*;lDLnEgxDRy9zisWxtq89%o7yTO8kYB?ptGj32hi0$Y zG->yK!^>`N3?djR!7ETc`CIiSe+6&W62*ng&fvgz-FIsT*etG58^l-ppG#jFCaQw- zzdA&hJ0rZDCY4qum%ZWpKC{7znfNmdUBHDyepIDbhqL|vO1+OKQK34={Zsq=Oi$5cKMQ4#-}2QA&TpL8 znl$u&U-1vKY%J4*t~5_HJk)I56jTR_inDbJCgam75M%*1zv9cUQBKD~d*_FO3%rn^s3 zh2+Rfu!*im#=@}ulKe#fzq%Yeg&@unwA{3xHVvg=nsByw41ER*GBcvPY$?+AAKuL1 z65~RrbH_I7Ki7eAy#i9pqY0Zf3Q3zfvJ79Ld+hvgps8mqwxb}>vyU<#!Q_04zKFBz zV1!G{N=0ez{IXBL7oblD-LT5~*YE3QiNOgf`H);8QE~m}N9x$ZC&O~FcLKvcakLxe z1n?q3VtO4Q%_TTq3cHUqUE!OB3K?n?dvV zwI()_Q|aP9ep^RtOR}X4Cl2vJ0bY}aHoAbGFSZ7Xf94CZVk2|!TIH8uoKt=P=_$fO zHSvhy5O4oF;F0GBK*l0)5*Co@cyNczB54Mm7;q|b;k^mphs5%%L(+MNTN+rhg}Hxm5=M-SDm`-xy}uNA!uX_ z=RH(QXOm^FQznV!{Wa%q51H@F58%t4F5@_OoUpto3Eq?W9$Z6unUs*8 zK{O){`2lbOoYpuN`k!hSQ%>YTzJKoP72T|j*c{77QPAIaaA*gr9}1sZB=JC@&EME9NeIF+)(81dDoFXJ&ogy zSyi?d^ukVcDqcp`09eud4C*MDa|$X*vb~|rIC3l(Dwm}_wZt+ON&r)-3_-+-F}m`2 z78ooRq9bQ7@kg>4-xLyeAdr~8y1i0ORE7L)ad1%8Ng#*m3My74#45^&qC+d z1_Un$5RZ^+6YnOd&=a8|s%=2v9>yg(N~EKvqWh#!`_Ma(R=Khr`7|`0&}|Rg&rV9# zZA_hX6`tQ-M^e}JWp*F$y*e51ytj39ulUF7P0lR(w zCnX?MmbxbyBgv*Jg_C(3jvLsBG~%$*SxP;8_eOah3b<5>YUCX(Z|^*m zQ0+|oT5FAtbQ`^wiJtRnZEzt+ z$E?M_1AL@Ea#{C&37~wN=DlC1r`BsrHO~!=kzrXv!w*LdWHk9;(Ty)T%B_ON=7nlR zh(!rj1G5Yx>FE`OcH+m;s5{K$kAL&<(4D=tZ`I}pxg4q8r*&aLb9EAG z+O7xhVDn|qAOVU)e@_%jFF#B+PK|90*k7yGHfKA)gWU?jK-DoiIy20tAVC@d3uM<* z&XwBjPG@>-V%5n-mWI!>ls#^3HrkIQ@u_pFl}3Tnu-w2>dWUF97l`NtG626Nf`hK`=^S1 zoUfWg^182GcN|REmRt#_+YU$lGov1Ui4oa{AZAo7yp|>nusbMgxGJs*x(*?5y|y&A z5nYc|Hye7(vw59>M3+hr!=7Wfz#P4#48kY4mKY<_J(}kT2FRF%kVts*H}>x3BIQTF zR5bm=qGj3#2m`ko)sten(q6>;$nRt-ASeDDPM$PS_;k~z0+~CD>qR(!^9@=N%zWr8 z(}}!?^^LFY|GwbEhOazk%AsK^SQZCxt21vAId_p05#rkQ zko;LP2Q_~d4-^!Nc+_);YiW~Hr{HY2&Ab^`Cv@yN#_(}H!LI1M1)h>3lQ@qKO zZ{l&}Gh9otZNElJW=_A9LFpaF#ah2Xy1tQ%d`*-_bLgD0!x1uNAW7A!r8wZ4VD)Rb zuoO-we%*4mV(#|6fhj)aX0awaSRM>>(z`K3M78|#xhEHh?{t{Q90tk4&zxnKKY!q25Zt4WKNPLAS>2|K z72TWL`?=72^5rI+k}lQORH3uLBl1W34nUs*-#Y~ARH9r~|5)n`fhf;0Hd$sEDGg_v zK(*iP_2mmkapQGhlg;9*G*&YB@=(>}SSUpJ@Xt>jaq+{r0Ad5C<)<)yjXHl%h3#Z% z_M7<2iX5LE@0)8J_JO?zGLuXVF*e(0RIpx!Vu+3s|l0{O}l{58A)p?T& zOIgyssUv8AYN)d++GSlLD`JcH^`{*{wsklg+Sk*=oFbla%@14l<7)=)2+i#0ayk7$ z8@f>D6|QH3?!v-aQ$tm4jdece8G1EM!ucI?MRXE&fbBGMUg@#*y5mB8JfuvrOK3=6 z*f09f|86e~%CPKT6m$1^Z9JLiPz0mMc>l)teJ~0*Ymx(IpL)bSsU%Teey>%y*Ls;x zV0Lw9S-x7}Y8DHrl%6lL)77fY z%NY0Ng8MXYc5h%Qvi#86QkTVgskRGci(fEYlAM1ZHJAUvxzS z+r;+O0rZB3s76b46a$JB(s;m*Ew!vS(Qq!`?3(f5Xnx4;QGBBRPxz*)aAdN1UnJ-U z)@c^IVUGkxbEjDCg8LrSFXx@#2<+fEO;8wn;=}CiLFv}OhHz*TTZZTTqa&I^7Ce7r zPtDIWXZzN>J>l;8jLEv7<+vHuKmj6U7#(J*sRjj+O>q!^i4h)-nG)DdB&S%7b5tnL z0bbVDIb|7H&Xn{|qiuLw&Gc{H8>uEL)lbkXL=Y8KZBaLQ^VINI3Q;?}26E13t4=0p zy?cT`-Av~XhPE_4N117!+y@o|1pO-Klo#o+Lj=Hw_M{GHs}b2Ny4<@J$D8V!_r@)? zX3O$enCCjbEa2}Ow)U$+U6;|?)xstKt46&O*8jQl(;|LZkd?C~>h_H-R4s#HB|8`%m45}3>T<`Gm|s@&*H5+Myq z(K~Hel-nKcjo*%{Birl;V*6irscthi!Az~oje-_UE`ehEFc5}LhDBq<2edv+CJrT^ z5gfOM#<&>Gy@b(Cx210Hp?us^%Len?EBM{8I|AkM`7A#zPO$x248f*%`L~(ML`Q>F z&F10*dv*c=$QigSF~o9bG#l%ui4~|7)*g4BDN5rV3X4X)08JC60L1@~)1hA`s@h&` zdaaZ868PXhlFV*CTg@!N@)xzKwifGb3akIHuI_X70Ts$m5h(M|pr{uLZ@#}DI zj9bjq|1a?OUbstDloV$StYhxXm?3_6aJ`-+gLBS-C{kmBlTH%BC5=l-1%$1Qsu6{P zY#Qr0lH1!eXW~NX2Aml8}11dhaB)rmGm$2!36Q}iMMb&Ng*%k-qVVu|FOmZ9YkO~3RlVPkoYaga|S zn>IBxMXIVSD9Y3*LHi7)DHv}W{w;}U*KVJILh0>B#0%)dl;I=VE1-oBVcU3tl;SRH z<1PY=b+uDL+M5-TO+{H!TfnaG2`mqMkB{4^zc#hI{1j$cj0e%mkXo;~1BD21F#Q1g z2(6irn41~g?WDn?%pk6$90(tB=#UAR6^^& zc^_}P#H+fuj{V8EPOgdBhmO{5@tMqze$EPrgSJHXin!mBOvch z^ZWnErL}jShR`~+5WV|O39^ga#?kES zT~E97cC_SHkh9ecN$PnK!zq6~yP=I)Ga8+jq>Q~XN)7xy1eGy`*b+j4Pe6g&7AhDW z+8anR-<0}#Q%U2fx=;qT9~^McExYS+5>6xM`BK6A>;P=#)^?Hj?a`~%7BTeZiuGQp zEW|nHxCS-g_uPbiIWw8uk5L!WSF1Om)Pkb7UH2ha>h&PdPUxwk3{I)mle^;Lyv_en z7%GmT-&Aez%3hCIHPvS3pGWKYQ{4xiDQZsgXq;MBoCzem zKHEuY*-3yR(OVTnpR?jcM0(CH)v1gQ(VfkyPzLVXR&@q|uyIrdPUBobhCjUW4BE zUNf7D#EdOi+2!%eAuYRFM$yd=_y9B0+l*)4<5D7 zP?A+ZAlQ(q#6LLZUX2FDuS>$Xjv}r_N_}FK==Ln zdx=_0Qr&GS9m)G&Cqi2n$$WDc#|>O8x`iKJiP_+in_QS1MV?r6QbX#V5TZR$sPauh z%h_0Z{8g_J5`l~)#>7GG6cjVS1btWpssH#N?-?;DG%T}Xtq(@(8vbj;q>zK)P>zjU z>2&Tjj|m@)N!)w-ScoIfety{h+TLgX%k>jo22$mjivp$|-o~>ix@#8xt0|4TfgDB`+fs)ozgF zqKsu>GJA}$JutuEyMR1IQ(2Mkop`oHATLHAQpg>rl#z#w#sTtO;33*a5f^M>aNvIQ#W)GMnFDQ$IHl@vB+#C5@7wFp&j=a` z{Rx?U!aMRe8ux1@M@vE7PjxxRGu#vYfMDYE8ku*0h)-{kj;I*{Sii;}{)b-K;J(iN z<{MMG$_iFn_0ANCi0<*&(`99KBupt-2+)fCo%vmY=nFI|9*)H~RZHe{mQ%E?O>G%e z8^)dfD{*UWdb&fb#<0a3wFQtA#Cp}Bxpg0 z7pH&kZ%L)~XMepwK=AL#?hFeap)sw=h`h`s{(e-nGSQX$gR^w9LH*qIGG-(IQ_Qq+ zlWWl1v`7$0ZEXj@Z5C)sHY{0e=$d`>@$fk$w7CP=Q@)pkOy4(43z{zJ{qI+pdtaQE z3~*VaWFGiEF4D33_Tr8Ju%Dp0!8|n{ZarR6`)CoMv!IaiC}4Kyg&VX8 zlSf&Gc9v$YL0*~}V_3+E0LTcLyh+EbcoAHt(QX(1Ps(fQU;9pw&tV$Wl2J zoLB;e=DZbyro_BH%mZa14j<6 z;-e(UX!km6Q-%)awa*rzEX%yfS3MiHds(+$MJX?;TvAd>r8I=P^Im)*@1P0bA4l6k zU%IcMYg`ao+@iH)Ef4~xO>OI`%t}>aVp~F`jrr85=B(Tr(A_3CbU8Z?_;X9>cICyz z*ZV_q#)-KJa89afA_CUn%uawcbnrlOPOuro@EUMS-R}c@6gX5yZ!>yj`{m8()4y%_ zkr7r9%M<_!A**6FTIRzLTuh3ScKtf7;5k7e{CiT`GI_8P{FUWCDuI=YR#^>&43~@3mu>$kIflz6bE&K(tLI9*n{lB_Y{`t z4|-wRO*?7)iiww1?2+$Urq*L8XxJD0)Ch`B(%V1)rp5QWx%|9p4KLDO!dCnThYR7? zq64}}0)CgP&IDHy!ZW-UY{Y%0gb`ZFTpSs-{Guly9wb-ZN}|gG1o!6ikh1>lLbt~j zH%Nkc{t@l(5~F;W3Wd-+~N1@@E_Vwe3YuqcxHy)4*+1o+)$BKD(;Xh9Y!)d)-SBb zn$cq3a$Vp?JYZ2iob(-*q1;-Eqx5$68O~^yqU&-phciyCqopiTd3qKKm7sh*M5KH( zX*zuQQH7Tij)-v7rZcT-UP6;UR?|j#%X6f0(iOAc-*@a(p%)4Z7V+uvstKyH$E6H3 z^Ie`(WVAogCN!w`QJrL6NEa@D+4Ff4I^@Jg>*aEFNez=xvV*XVim?0>$E~AT)u-5k z(Ejd_v2c&wWZ}vaF*Z;rc1mS|Wdig`VVa;sITS$|XBc3bAVr|1*I;ua6Qo^45sLE1 zF)nskpkuJy5qKMG(Cvsqh3QisSgU+Sb*ZYC%Q{U0cN?NQf3z#f2o<*R@K_xkHCik5 ze?|c*q^Cs(i=>*_g;R5&W4&)9RoJ(aJNmS68Z5SH?;G6<3O_EsU0oC0_0Tk(-(B(X z_u9?pHV~kf3^h*(-8&}u7=f=W!=@My@ceo zCm%=AuSUyRZAoz?Xa(E8@6tJdT*v@KK)b&q*?SoP>rKJXzifYB0wXZUgr5Db?p?Lp z0|jF(nk=4OZ(9XFcl^JIqTIb`%MI7oM_xOHqoWV^exE{dyqYK=R}hcdX1 zT3a?Brx_%QXt;FCRG^N?HsJ29Iq<*Ru)mHdd29mWJXTygeeL?Wbe_fHeglmSQX!*(E8ndXl^}D-I6AX}^XJ_gSEJwf zgKQoyo`(o4RU5luLTY*X?qIMWDZ>o7Gg5<~4WZZg zjuTV9mDmr?EH`xNXvZHURw&B{i%?$>A)WRu#ObuNOA$jOGIofI!W0F3dnXP}}B-0Z+wPoQtq3yt_BY6?^4=e9v30 z8`ryWL|ZLH#S$60H-!2hp_r3d^tQ{GjE7B<`|+qxLH1BegZIc4ERam8m0^P(w#Lpo zo#8=6dkEH2%6E9y%HO@Sp%w~q^6Y}nRw`N8Mk*6Zff{||WdDQ+Uvf~w5BVo|%cLeb zZdq}$47$Iecu8W@K(Mgo6b)r-WM=CRuQ+7mpTAiS1d1Z>Aq{?`x$0O;gm zhN=bR@&caj*{UHN7n4&PLU9H{@KS{3Sy|rX4S#SvcO$y99J~Q_HD!oHxW>Md&}7)t zggjWRM40}bumOc1%~;!qpwW64|0mR4Lx;xa}wqp3yw zBaJ55Je4m2lm5Z)1bz+>782Pq5u{;v z9}8i;W^CScNf4*i*60iSkb8R^QQu2yKkd$>!_0MnK$--Y1s;o7yzj;{g{S!egg;@I z2t`*AX&>-qDVmN?+&5mMhpvb@6qU~*{zKM+B{l+#tSd#HsN!}TmEef|`=V4?Z5D=M z3KW<&*IO%T!#LCdT03o^IvX!=p^i;3N_U!Z9A3}l@+c-2y#tfr@*nVGpW&+^1x{YD z!(M!L!UTVJ#uVib`#anu5mL2IUkbmS{pO)xjyuLoNPEzp7o|V1>6BPACAaANFxqMs zf~`B{mF00#C<{y7hGePfosiMvR;nXGt0B4TYd3C>xu#c1T9R3&*7U5m&ZiXF&};#)rG~2sDeP0BmxXx=;7^Q zfz)c_e@(!os;}GHk6!`GBul$+n$~$g<2s*w*1)U2$YdAM8|PtmUULd{!fl!$HG6s;C942eZWGcI!wy#Bq$ z2WF56lY=a%sZ^T^YBpY@uBJqcG1n0Aa|PW~+B!u6#n^*o`~uTYcez7a4o+fUNR|~I zlaZQG*oAV3-zmrdbG9_kvRjd-P)nz3Ho!xq^pU^?n;I{E5J-uCLw|-xtf(gS43QR0 z^l(L^ZCFn!^ICe_Tivd3N9?_mVMD)c^S^gAv(&FAib+Xq=I$dQuc3)lf}IOd_{A!x z$rm=dCfg4`c=eJ9LASA4b{;j^A?D;F7s#m1X$@8?A=VO^7 zq}q;W$e}CKt%D1+Weg?UPT4*i``5&hMYb)-B{fw}n8=F58>nZbMK%8T@K-Y5w3!D% z@uT9W1o@_scp54N*um?hv>cH?aWn}J_+X%oGk00Qd0WD0ATs|?s8v@P2wB{Eu|G|v zOkkPWQ`)*B$XR4SqTVV9W#gDF>q!g)?`@GYFvT;re@&>8`a+##sh8Cvx6>kz!qL?U z?aAZ9>eAx55m#0++>4&-zO|zoXF-Eb7bUTlO##0o>YU~fy5J0WA)QO&%87Bc3{0O*vT@k_GUkPMQu0A-dxWyqx z6tGtfAh{5x?ZE^XXrq$XjN=NWcDookom2mHsovjnJBU3Ob4+|o1B~`f3M$Fzj5sq| zu(tAdi)vwiend&OfS8?7X@}@vRe^R6sf=Fxg6N8ni6Q+StC!i2ZAOyc(g3}32lwjoQ(UL+&=(S?YaK2J`7__ZIv zd%{DH;%|8&Bwm+Umo(U8Tu*L2#k&sMx>d%Nym1Aa<<%A_#hMTa{Ls8W47f@HGrX_T zLY30I$zVk;MAg)kc<@j=3wNl`&KF6R!nToK z8U1{EFMRWoGwVj6jSFfgV?pVexZ;T-gXog25?{VU5djX-;BtdxAy+m0jg53a)3OXe@=I%5L0fHPe!^D3EGQ|(k0&&#G-BtQ&>~sri7prtPjwUcZYR853}b^R<+viJ8_HoYXDzp z*O&sc?aBWDL$e3R+>4MU+NRoqFGXd9vI&Gc=H3)|Gya*;W&YYOAoRCC2;zCuEV*9q z#(Igv{m2qCEnCD`40NpM@5;|j8@n#$P{LIh09D@#xk$D~a0j#D%vZJF+V4bya6Vx( zjBmCelH4+jEu6xaR|Fe$1zgT;IW0|ixjSP|OwX$)of+-`H2iRg%7N(^BD}fWCf=H2 z&};$#B>|=7X>;at(OD~)xf_V|WdzKugH$S$GNQJ58_a@3XQgAvo*@YU113RcZXZRnkG$yUNY6V(YDw`0 z1jm>Cqro8|s3*~1*;R3A8jtl&x8S~n#<$kphv@Co-r}=}6bV%j(k$)QJ2B^5wSIyb zR~^g);4$1u$^Xn@Op>f-T4C?gD3?07QVZxt+-(VKOu@kNOlfaQuTH+hj3UKLMkvJ0 zX&t^_E7uQmR1GKIc;h>e=RYQ!{Z86(-^>#-{|V+8zGm92khtzJ=Xh*@GAGzr_H7`4 zvg^y`urQp}PP%&N&O02hOgTD);zUvv6Z~9W7UU)M1h81SNCDX(IcL<&g-DHKyz=tF zB5`I5Kw!H4cQ+)zT9;p1ggouM+-o0MeT&orkAmQp#c&ki$ zpE*{$HgTwa>N&X{iLG^bRSr^&%8>OAIg)l`w+B;r$$hIJPdj2C+DHzrnLoBS1N~w*mCD^3#n4`R8H6uZh()`j&_<&x_tk-Urzht%G^8+!o_)r?m2gM1Vq zC{haybk}YVq!@yts?s=6!4|P#Jh^Pi29#~Cy_utVK9my|aM75*Ep&A01M@lq-}k5e zH6~r&|N9h_7pqfj-!Rxbfh$ze3wDGVAyi6d z*_W*vbVv6ZYKHT8#tzi_)UXRbv+%fN!N7VWe}5go5c+!-unXe2Kq&~(m^O|?7cdhT zlprf83T7$NNy8!)vo2nzbdX2*HJnO61r9*%@C-<#p( z#>-89DEGTY7Z;27t&WXZnY#h$FPgL52NP74qc-fgL$lP6;>(fwax|j6b&JIYLoJ73 zRjdh_8D*vqNA8kp-_9*-VkAu)16PFS{L!_;MmPO~C?Y;{ss$eBb`nsxJP4_ICg`mn zuxw1pnLKDp#l(ulU5(nK^ud5;AH5 zs7*GS9d&p#@?g*ie<;^jVA52hj*&H5YvEZrl_wX81UHsm!+x3o`Lm9C`JWf@V(cB| z+5B`(IsaE8#rHeexaaH z`_}GH`;_3n!H8dGR4Q!|9Mv5?gZ=@w|G~uNavDw4;@nXfzWz*cIWvb(hpi3mzze^< z75D!USN=8SdaT!sq3fnI0Cmb`eYF3?$Jz6!&z*gZ6e*$t{j<6>k<&_X1Wqe_K6GXt zQ*OJ?Z3B6YJlQx|9B9IOV&M=@Z`TwcFhbDnehY2yHtj2C$k&yYj9cCuH+}c2UL}`M zidwt4r_dznKUM`W0cjY5Yk!S9J`1=@$t?oEO4(?1aQ6xFMzLAF0i!KWdo{*=cg8SN zmOHZ>pCjkIU=ooPe9MG_tJgCv^t=NM{Rt}Jy2UQ#(B7>N(I;yw>=wJV+?W>hAK#r3_0#e zbL$51bzG5QUSkF!$~g>Bd~fqBR$f8b8gSX@`xFpR8rX^t_ucCxJ&2og+-&Ds%&!C1 zGz=~IX@7Kkr@VJWdw4NSG+NT|K%>_|x}`zuXUxs3F4LJDYv0FWyDlcZ zqXiX`%}Z=ae$y9WhT9jfW>Ff?&0IcFSQEg~Dzr z>q@0D7H7PvgKc!fo4K{s;xkYQS7a4$4i>*xkTNER01uXpCRLQAgbLf|o(?BrgDVBm zWb{yLj8XCDzGK6!W5fVx0_xbwqU%ttRE!&Cz(Kt6O2ixZ6Nj9jX0bk9o0@@T;7QFX z%TxF)>x~dIwR{|r`o~sMa87b_`gz^Y8VwIb*DD%`U!lDX;!q7-1iqFKU56p(e7h$J z934MBCSiA7$ZXe3D?91J=XjM-&`9y))0xMmB$+={5+guNhtMIan~44P0HOAg&vx1% z5?c~lO!>TFiwG);HxqB2mTty1Bm;V)%h*D<1amMW4m~Bf!9nG^<=`rU=*-3d=yrQ^CYU zRguWgIs+8vpb1H~6Jx4t0VQ>YNp~L!vA&{o-FD@8#|6f?fM-wnov4}?8;LdgjJwRD zVok!gDC|jRp2;Q%MNjL2Ad(X#@qYnrS>_hDO)t?e)l*;B@K4;2?AQGZ{GDA!&Tc@5)8$#+IB{eS5SG2w83sEfs0Jy{%n_qJSeJWg7%ijV zt0=0zqi=RK60=GM3xUsA=$YAgQV}l=j3X&c_&vF|zwJiCv|@0os%^aHq&IXTo=-y5 z$y@aTb}4GF4an-X>J@5&b(;Y>mf(Oj2AT?#KR-?qOlqSsnm^Y(#}iXzz*uW#-z3>1gd zGcaZJ?D@`^Fpt(to~mwoUdX$mi&$c@j+hjjIN^W53tQ|w?|@R09wo6dwD^?0D6F-n zH1f-_>Nw&53z<;Ny;(1#hZizQZG+oX4fX<5VenLlc z;mf}MQPS$HR*fc)o?PD3!g$w-Fx5bo+$GKNIzOO^sW4&k(~AnD-YhzV22M(yaVTjH zVIyVXqU$_pfD0-7BLn8jm8I52=*wyp)j7m^K>8*Z6Wq z`9xFvhFvM7U{!uoA1rdy8|3|8kUw)$6f%Wq4V``EHa>YSt_#CIlk<(1^u49W5}paw zfz+z617}&iPyg-63=nj^YQzQ6qn>dWQR!Xsokhj8S4?3+SoURY#;LZ{xGjh5^D4F7LY*rV1kz zg8#^ueN*f_ZcIiaDKk*d5V&hX56JLGq&$dK$FnjgnC$@T!xMV-VZVjitG~YP^*g)= zy4+RHtZx-aMqpP7c%h8#eZms-XW@2HO3*8g7WK;VkFF=oqaICbnU&Sc9PiW&Z};o( zTUHsSUKt%C6}?V7E|`0xw6T;W%t2?a-q4{-rAj*|je5YN__K;m)cqA|dl#cN&T|)Z@3<*!SzJ>w!yTDF($`Z@MCTZrn|44@-gpTs-SQqHZGG+T-w@(OssRc^-oVCAyWdRxj~kCb|ofuCATLAbUx%fp|cC4pzWiuh+{^O2xpG|8q9IA&2w9a~ zeC*M5fXul*_HOAY&zHx-DU_p7VSgPip?@Y#4e?)RjktV|?AB4k0PM66 z8V6kpUlTDxej;W>gzy~9X*0dY_%%i0Xp1;5)IqItK*dUO9r640a5)xxm>^9wP}M$V z^4IbAZv37=SUpGuv*CFyHPoZGpQSf@xd%8W2xQNimNoDc@zD@K7eq-xGK@Tfdo?~% zzmYcBRB@^C4n>LGQt5u%atY3Jap1MZolMPqklo2dloN#b79rZ~*OH=|Xp_Kd2Azu= z>2C{GSBB>nFtXO8;fvzOT@j3ZMGLL`pIPi`-0+rN6-S~IDKPu+)k10&r2{?VHCDnB zlF?a-=2oGEB3}DI(vht31JhtMSl1v_k__xmIYVz&T@mGZ2d(SI7`xT(K6UYVpS?v$ z0O%5&Vg73Luw~ z+hNG?P{9jc8)F*gl7p9j@ejnveVZ}uHZ_sDG0x31O86}D->4$%fFai{j%L!<%>qWtfA7|D*)F_atcL6RG+H6u@$jK9{7| z|1HrNW|U{ungz7jUf+?Bz-HlB*Lf7FR=0m#Ev@7=Of$+ow{5DwbR6b5^jiZC=%r@Q zSY(=ss&^CjFd9_j^**d74{XN7=3^mKXHF3w&9=DaJ^3ihf!kw7=gB+mlQz0$f3m8l2_#j}oFKfJGnn^74 z!?0@WRV3*E-6iVNCYHCMVt`4#u6@b}rE^MrjfcKq`$DF&RuFAOC_osM!(t^d^Ew7i zrAF6j#aQ3dt%WtV#+U#9TK0r;C&2;!bjxEGyPiokI+NO4pp6g>P(!>&N&pkC(N7^1 zr!V_TZdf3YJ$9&tn)71KI9T@*R>pKyW@LQ&mL8#VoYgn`gS(8iLm} z(MY}Ov#s7M)IF&%x-aMgc^>KLQ!+#hYlX!K+zHzOL^R>QH8zcI*(M`;+vrTz%6a60khHIwBT|!D;*NUIRfRLltCHe zQ(_AW)-6q0U)x6KwrhSIG&}k!86t$MQ?JiNP5^Zr4AbY(3u7$dI?XBBi*#dt1{y+e z#DUTo+6|2l>pRXM*K63Q{Jv| ze|*5!M*hsb&q|?|-0}mo(Vz?Lv77fLMBG_EnrIN`gNk{oyt2GY1T?=_AiVgPWN6=Q zS>2!>FzLF&BQ%gDIx59vtR;1nYVr}@GQXxQy>K8XV~a?z_nrWgAMN*Yj}-yxRHk^g zpLCE6R$KKMX%PaEzkljI2hWRTz8aKu)T|uZf!wvS?(i{V_esJRovQ?K@_BQ{RGY6RIpI@s`Q&&Z(G|ogpZ-coL)P|Hn8rSA!UA#f>V1E;3X*pVhMVW z+9Cv?T|h&wIi=qG$#G3HF+;||*~He8qM&dr&WR}LbG`+HA771aKBIseUGY!=K#K3s0aSsWtL5 zywPDnrvu&^8(jv7aa7Qw7#Mzd+2Su8l+~Rld1-wbs=8OeSoTMT-gMq0xk-WM%?mEY zFoYn5#X(TUkM}hvao~^9lc3K(9<=j8ofzCxbmwI1aGaGv)Tqo+GoY!8?eukg?5h=V z8|0vHCEQd)&TcUn!Am8WCg9NF`}+T0m(m5f-YM!Tz_?`;O+RtFespY9 z8O%cXwW1h4B~=j~S(IflMMpcWN3g}X>uL+`m^E0j;j|M@`DovgfP8HuG;OjW}q53s%&i? zxesVbmmZ`=Vq1nis1P3~vb83yugL|ElKf#15|#HWVtWJc`<_A>2@7SxRt1I=Be^&h zcHzB(K5Us_E+-TCC!R&;@OgABM74Y0__=bRyx@;LGJzK7T2**orx%(OX6@)6fcqeq`tyxY( zc0e*pKaa>}1b2Tup|#+#9p!T{IwGQ-Aa;ShVv64+`t=|G$xZ<(7Q%_U=xo4FV+?s=Le}={+K5T;S-*okJu9 zga_v3dl3y>^RT^Z7VRWnKUi0NX(sd|SG$4u*ZawA+-XHM39y7A4DOvZZC7@0E3ym! z*bvAS448Gru^p|HwfHpqpP&}@7bJAJVxJt`G+82p{EVO0Y*Q=W&jEQZ!fK5dy}>g> z4Q(xVUIxJy3qqlH6vBcHZqBVD#Vb;~>JbYd`1SZr7(P#5j5zUtYg1DOwM^6k6E7Cj z-b)ETRR0#6g7uxCFO3f351ia)HK$YekMXI4xpx= zFg5N|(pFGlV}3D+`2wHjjq`__uIUKria=1BvE=F%wTDbe>Ia;9F$1jVD`%W?dDtY| z_i;?)AfKooAM2_-$;AKeuu4F%FF~)tk6%q->F{WEkTpB~EMa^a7FyPliKklsGewJ@ z_O2wU7+7eUPQa^L^Oxbq*rYp^Lh748-{^>_+g*Z z;JveH@{dgxTZ7e}p|P44{!0u1);A4O{fw{C54W;48pZ<*B-hNiSpPxo#O@y(M+UWg zPgB(nM(wD|2Xjd?Plmh&g!=iRN(oM><;7AJYHf!X(K#9WzK?ARPw6Ga^EREjD3O2U z*A}05W&(897b5u_t;Hv`QJ(5>H#Nh!e2tULodKtGaa9kB} z4xXW-(v>aeh=uuyqjuX!*s<_|i~KSEmYvXN`^K zNwXCc8`)bodUcu}wNrPa0nH^Jm22&+))`=F!_rFf$l^~VD@F%%vX_Gc9~&V{mi=< z3|UxO!I@8D@Brk1qshk4@os2P+5IskO{bJ9$!HI#NF~t{9iA*?nApdxS}rFaWQ%#C z%@m7GncC7C1&9%py_SsUSCY3faU$cR7Fak1}g)_v_M^e#!aC zRG)7H^;COTZcv$iHTy?me{PO}%7@DrM66y6VIF&Mv#|^*s&bDaxdC5w`g{X1Q+Rwx z|0l!XSeM^Fgca*io^@-@L*qlry11j!PDNTue_FLc;x7976z(!j0GjgSDi`QDs2rX% zrk3i1l>ei=GlQv~_WCPlzJ@`?Xdb{%t}IuE9b4kU`8)q_@Hs*qK+Q%sW!a>cUL%LXu4SI=f6J{Sr5LxVyprm1eB=hq5MO<6@aEFmiA z=wyYnR(KTFJsy^`vPp#9!~&q) z13#1V7KTW$fT{OyM_Y<@YhPP;L;Kt}=pYq<>gI;+!S-Cqf!MW?+!bg;P%!)bMILA#NiG&_NUF zWn4xGh{s5TEqMaBj79?XdhDE0KO-A6egbLw*t81zo{1_G(^tDB|0u2BPOwz?q7LfU z9IrhX){E|fG1f$|X?QIcxkzK`&uAL%edJMSCW~5P7i8qa6X#*W=>{^BA&mc_bm({T zH0E;cqOht%AT<5vlLAFWKSUC zVPfv5Ie)WR9^r|;d&}PL1JU8~4OkdJZxEj{?-o=3|2H)YCYLll548HsGci~#(hHae zy!yGNi;d(YEBGF!sVvcoxfi=G#Lh1!I5^_3GvsSI zV~r&!N)?3-C%3OO{B#_{4SAW8^jYzQJf4~8#EFE`eS;rnLLCLbqRjD}E3iz87xC&L zu7g{QD>{)?+83$8{rNXVjN+7y{jVLq_WkvwEaY&DO!tA<1+HHLa_5JQ&%CTx%4o*3 zG{T@s?#SSoTYIl6-5MaO?T7phiJ~W%_nRFY8AlG@IOqA#`hkWvPz{=PqiOX3C5t-0 z^n@3Wz={m{-XK<{uK(&Nr2tYXw(&~zY zej1QzBc@4Lhn|a3`k~;#4Y)_!uUx@JfVUu!ls(G}mt1uodjI($+P88XRxxpNll0ZY%5h4qo2E$(Q>2xfQ z_U8n^239!(bsPo_PqP-saWsO;H!R;`ZT||?$qCjBcPc) z(tV~x>r;AOr-1=w8C+=Mp3F1-K3;-hXQbnlXCEOMFB2#nu^TT1)*mDECu{ zHeLKhCck4XG@`Ez4`yDjLg0xK_EQh<6Frf1&$Y_nW+Xsv1sftm!`ePTcwpVNIuNz0 z8@aH*mmTgtogepo=z- z_W%<5!N^yZp;LMeN2fbM*@=tBMC`KC>=jnvXZu9kU|CGj$xT zb5KFCnRRyNT<*`AqU@GXh&V;ji(O?ip^b>3-L@)+gXW>ZcvKM^|0ZA zYouL7jNPRN;Lz!9HIP@ux#gIQ6m5HSYJrSx7?^lXn<=Me$Ws)6b*k0?q@QK2E@+id z=RjhFi3!@D4cL6OjTa0rf?e~^j4-#(E?PHM_qGZu;u-6^?nV$pDUA2D7e+JktEM!b zw6m*@#6O4J3M3QrWWGc+K*e%Uk2oaP1m^BpHjbpjZ~bo5u|08-LYVu)pN5rnLgBKY zhqKi@6JT>J-5`ILz)C0IH2wOc2Rtjf(IlQhdRE^Z1cxwbk1m5o1%qq@6#f>3Mpf4O zjTw^k37>=|^5s5(WW{{yT77mrBdf!$h9@GN!v?@3$&`A9`@U^YGgtMC!CE-`bVzhG zgu-3vqs`Q9cg$bD}Q$ySiHYy0SvkLgF4qhoTozrZbxsv$sm7#{@Bpw zv3ka;CbZ9eqS`Or#+{Jo#@xQ%@Fr~dDE%ZK^A0IhGL^5@&UM4veaG3 zyW`jN@w+c~-A2DqG@=H#*JspKO|b@fL6hVAMM&BP0eF{$ncMh$wsjJJfR$G$s!}lIvqW72jo-;Dxy9`pFbzPE*jGoCI?!B#lmV zAML?T*_UFNMKq$ir}2S-FT||bhU{t+Wd9LTgIu$Vd1VF{pP%=(Z?<8zNy#`%U}G5bV-|6vK~P_y&Aao{ ztzoiq(J@lckXG+g4oHo+Bm41aE$j1_6d;y|?vdYIGvt>BA%F^i*Bj)@Mg9-&XpY$GUrJ-S&9g$n+jBDT zLH>peO5$sDeNEAvlHF%E6YBy^c%jObHr22&Yo0de^NA9=K8S!wS7RS^nzUG-?7@vs&AeQ2H6VGp@hh%6+g3AEFj_cmXRRXz& zUlEnIJqJ=(6G5D9yq>l}xA4cFZ^6I`kX`-rN|1vc64ACsSWF-#(`iyDXhM!Y`;X*b z1Vj&~k1T1~ZFmhCRYMz$|A7iSV2*D*E$PO<^&e0F>^EEX%+Nf1swdY-GG`ufiP3TT zdj$0W&1HeBn^n=F!8;-Z4E$?iotaUI9pj7#UUP8gVd4_L$Hb7r;Q$es*sm5+@D{uZ zt4uovznrzX_i0sk{i0U@*9}}5tCZWm<67<1L?k;|PI(KgU3xh9kmcL0%ji~CT$Mx+ z2mM9lNOoHqBkir3koK>Tu9f-;BX(LI+ zsCGHbYjpdrao{Xo_FphSI>F4h!~1!D(57eq?v;D>U8is2+- z)qHuKN^<%E3UD`MRj_PnQagmdp$3;1!q(|AAFfQ;c*sf|Tj7iKX?k6fk+tNCH6zRl zsd-{w?^Sk4VXUdZaUmvs})2?yT6L(5k(Ucvy?#{A_`dtc1#p4f|2+BYc z_{!=uqqfOKtZSMuZIl@j7~mR5IF&xNRhhI(d{>=t8KQMa>SHSq)sT!5klT7(AVzZ- z@J2^F^K)W(jMg-{k#&B7ZEV_<^WJEt6D_8H7pW}xDN0(35lT}f!7K-iY3fZqi0tOq zpTO7#DawapmB=REq2g9wn)YjvV0{U(e37C3dD-bOzG`))0hQ(XDoG`I>kJ6FD9>XF zZGmikQ5*~luP@Wwn9sW3GT4)6d+n19seQ;}+n|>F?QfTVvA65wTGY53^LQD}aZ*q?R>|a2l6S9i>Xp_Jspb9BIZd)i)pX@M)6t zsY^1$YG}t$1npnL&<@fPD?I9=MX;%K%?%GC*%o5xz>d`s(Z54VI;qA|OIFbUzpFd? zWbsqaB&MT41U^UA?KF#wu^O$vg#J~k8r@VL3h)UOG7t`a^K9~U*A?v>`V5Oa8xK2y&|CE_i_|xiHjpazX|RAS za=OmKi%?7M!ykSvhGw)A{eqNArS+l`SgM>#(kqp0OEszbg9}FonHjTTMszulP05Sk zO{I|zK7JzV-R1>jbpQOJ>#lxazJD1wV~g$2YnqcGNcp9QZX$9R{>~P+_GT0))zhT@ z*C`!Fh6@WWU~dmzEVJJ{ZIZBYzDO9{O(K|V!-PrWb*^LZ zS2E(FChgFv`A~fBiqZN~^C$T(d38Bjy3fAR+RUR(s*zFbkrb{wD_a6t2mG6vO?0|L zs)wG&o`C&DAP_W;;9_h7`Qgz{&C7~J!rm{V+*49+q8NF#wqN3B-0Fgc7GxR_mF!0D zk$#K7@O^1!CH1n8N0>{$OX^44E36Phr7XBf(GK#rcU;(Peq#8ko`t>A^SFi*NE-2RDq}mjOP5x*BQheZ_WU)+ z93wJL)j)-uRSxE|R5vIEJ+=0#^H=0t^-vG)bka3i zY(kLs0UOAOh_@}!XRSp~!u(paqW;{#>&p#;hVeum50dP>3>u z8zvi#9TuQ9Ow2@d9CS<#lOb3j{-zv^VjFJEv7LEYJFx}{YrTMFnAza3Jr0xIhl><( z&Vr2`O5S25HM&P^Qnb~UzF9C%w3L;ta|s?$LNZo#Rz&DtI^r1o0!L>t$b=|e??>xD zO|x61mD({@rcgZEx^L5x~9oXM3th}V@0a>;%4ePrM>=o2Y7K$RKR+D z@-;ixcDfO`6g%r;@_p$Tt-AbmtEG5jF;&DTSHw#WBt3+b+&r^4BkdT18}#6M!qoO1 zxC9V$poYtG59c9D#F278Au2&HZYl|?Qn+a}`~9uZb*zb?784I{50UH;y5gP@>>%|D zQv0u_Rzz7=!|PGnx$A2^KT|SW)hr`tlnd>&^YA{GssRJ}BY~|+KGRifIvCvR(6N*x z7n9@sGqYv4JnRG+72W7htNjFAEB5xuLpk9VA3?}BRHBz6#=hJ$9|6P z+nZeOmjU{ax0*S&bfgZycPTE5RnZh>_$k%x#1*r)-5*|@dZIyPG$(q=#RY}G$HxjY zhD#h3h1Ng~(SEd8q5qM7iSdM@T@X=}#ND5}z0B>7Uww`uyht;Q5Xl!Jyr&P3;cUt) zq#Dy-KRViKAqP?4IOpWWJuHM*i1Cd_x&Uquvsdu6v(}x2`xCYN7w;(k{mh7xF5s%R z=6j3giokd*7d`_HWO#U6T#XJ7n&vI1O>?-lw&k163w3Q90r49SspU;ML*rnuC$%X- z$5~h``HzGWvWi-L0Kd=Z2Nuo-q%J+Y)9&b{P2`n|$I2$$+bc;~w5PPwQE4 zLh=M!Vmo6^N#q!B^Zbm+YL-gp4Fh>Sc3~_9r#RZjqPDS*f^V>moUU(9PVfh?k)(7| z`b;*#g{k}ScO*Sw)Rqn95cOOi#2t@1~l^xbQKS)Vm(YYUOM1@oY|BAL&yKxKS?qu*7#fy zwd9BStu2~BJngOe7+2GDvdSza&J5E92LKsGQsvY>FI_2siVel?Ybf@SnpTuIfUDzO z$ymriSW_%DHRsda+&T-Pj1P2Av6A8Thj;RgXLp?&_~EqoSI>RZ;P~jnB{+4Iobs@} zmkv8WH6RCUYYwZHPtHqk<3|SqQY^p96oO zM1HWubTa=ui5r^8!Dhh;q6fVFZnn`6y7*`D51$C(5jfWZNC158ZZez3HS70*+ zX<0CxS62@SnZnG|S^q&bEs_!*X_2^H+jcY!WJ3a_pr}q-t`vNM67HXj<~Da2e9?_( z(_r=+2DLP{F2(bO8eg!SX2TFRsO-HfltRUk8Cd)-!3?6po;@y&?cz8O3BiWVM(L>^ z$>Cx|Lw~^?MS!<(moGgVsYhSBNJnmxC*jaTTS9=g6%Fsq=Fvo>Oy0G-|u=V>Y=^Puf#tu2<4o{h7h^4{G_g=XE)$}RrXJ4F_Wpv5^OJn=<96phR zcoG;_;XNlbSn{Rbne@$G%4)TU4w_(LosAAONcS_XHBCqiDrxq;CSqBt{GC9SFKgxE zCHt^(3C%Qw?^Wlf?q08{WmIs3w6U@t-qBV&SaNQUOSXj)&sbl;M`+GKsmNsP-D7hY zeYghj*tTukO=GKJV<(N#IE`)FwrwYk?WD17C+C?n=L4J%u={#vcjh-c`{FO>2>+u|GUP(7cIxxj%yN0LU7iCKH?ah zo6;=NvZumLbV)QzBVv$Z9CJnbmueQhNs{@tOHBTFhsV6S?*~muWKF8+0rslSPqWY! zqt#Azy3(+Z5QLAiVDw4rKbcj@7ls(lCL?;AiIa3k@v`uU2Fsxqb03M{!X<`hr98)L-%*N6JWwp+-h zy-?DJ&m@5BX*L^*!z+PhAkDUkLm*3U&Z%Z2i6-mN)-!o=`>*5U7%RN-ks z+vlKp#E{_EJXT3FE3vp@)tdD+=4DJl7DZE)(q9c9db^RR>#fO&l{aQ-l?Kl&r+X?maJk67deD7LtpwYoGAS;1;%1pXpXezk1 zQzQ(_bC8|g=PZO*a|}hp$J6UGr0kLg3hHD?Nv}1+UbI!t#6@R3G@A>Wr=%n+g(}`7 zr*qi?4~8jkEMhXS9|LJQhM}!YS0X9IRShmjpHB0_{OP%k{f;6D_NPiI-yQN~d2Zdm_HDB#q(pfj0nKL>lYc18v6@uys_z8oWt~`U0&0=DF*5$wS z=;4*F%PA!qm?_PNdizUt&*X0yry!UFY_SOaqKh)D@m~JC+A7tlpDBPxak{f2ts2Q6XM4%6((m2vX0F8cb>PphM1gAiqokg>4#Nngo#g3 zb&CalA{21W^)e$WelFUH1Ev|fjMaG?o^qF_R^Xp}_g2M?Bu8!+6vAP3F#AkA3pe8T z9nUy|D77 z)?t)V^)V|m#Y;ILCO+KaDN8t2Qjj+gxw#aI*Tdis8$l>$TP4`EnvZ6E6#;~muge31 zJ0M7l7f40b`QJ6|?DBIYZpjKD|H{>Wd-(GgM;W@XsdzemPfX{9k|Uu5%iaK8QVrqf zL>XNS=S%IqVcSFP3X1os7K=t_Fl9^^i>JD3WN)=-%)zyM5$h{Ews_0fks?aL3zG1(Q zBpfL*zX~_jZcZzp26&E~xa%&?Zx1PXDw*KJPUwP+ zc!Q^ZIo7@jO~$v9VaUxaKHWO+ZjBV0SoBrumDfOi<1epEKVDpFdfa0;a*)^0DEndZ zFMsg4+X&|GP}((u1QhC|AP1gKlCn&3pgTW-)hAMi5dVK0UK1}v_@(d&*2Z}qeU!K) zvirs1yMu`|vYiV%z7G>5gA|s%p>CDmGvhz&yIg-_(U=wQRpFU~_dN(IGu{f=2rDHJ z(_%uTZcY<)zt4wsVpjaT^642bxkQNJfClvzc3Swge(G{%=KcIL9+rb1F8L`ukwWTk;;f38`_vx9O90k>JvkWN* zGzFcdk?tSMAMyewM};h~Sw<%ZEH$?8P8+e=StdF4{1+ju#JUH1G=Jwjn^dNHCv(KX zR#tx2S0XpQDD~XzeU7*%(dBUxE-~}pk?X6B8JzpAXp@je**>VbQ_p|t(Nuwyj5jb* zh#G+vA3#viM-pa$kf||IMe_9xK!+eu5o1Ec5awXfenwu~uTP(k73t+=7DcCg%p3VX z1bD5=RoiES)kt5JIimVM9hh;XwYT9}L`#p}FdDa8n&WQGd_!J{cS$9*OWLdkV}Xw% zORO~^rN#dfVJIyAB~M%tIeqWh2T26EKN^?Tog45^@UlZj9UG!F*lJAggGOxVoKhST<_&2cyX7sd?4U|Xh;=JDbuTFR)xg!CK zOLT&CAK@&XeJS<-OpqIq)WFbsN~gC&dO)V6_Ju~~eZ-X`Wkv7^zKwVrWG6lGORSO` zCE@fugwpCHHx(pn+u*o)Oy`4%s?Aw6Ru$z8 zlvG-_5344HM>eua<|ik26D}Qqc^Lk;n)?2uP87*Pul%8L5F-L1Ee!)x)?ymN5XRN9 zSAlVz2E;=p`|S%G49bpKSsDe^s%67HW!cBIf!;dm+_fXeIJ8lg_IJcd;I4q`q4!Os{TVjcqL6S?gRQOm1iI#c8@$Db!$7r(S z<|oMLEiev_Z^!1p^d64C`eEp;tIeA$;)kRnAbouE=6Rsh3d)MoUc?oD3YNUR*muyb zLEl8US9&s*^-J7?3aneKs)V#1eGNL19<^H)elLZR{vrTP1bcL)w{1*j9OTVmliu@u zL2*Er)DV9N3BqXD8G~jRqshJXl+jSfVIzazhNH~(9i3>Ns)oA;MkM52P(ZSjRu~heKKg(swwq+9U>NmXMV% zK8d)&d(f)_dx`W9BdFroYZN~Ybl1k0$`y6Iak_oQ;;b$pQFZb73OU4^nD1&A9BD`y zUBm^WVgK9G(Wm%D+43@j&PGnd!*TX3i*P?psT#h$VbS0-1bWsS$!1|>`=!Mf_oYpiZGdA+-HDTs;O`t14 zULcYrwu#;uYI#mK&YcOK^E67Q#dn+lo^lcSZz1njsBLW${ycx+VYLg(Zv89CsC>sb z>u37U!S?eR4ru1{vSb`_;@oHqs>0dbu9$?c@yh#nw2v_SqT}?BF7}*njSfcX`fiMy zLgiriRS7hhVfxS8&Mi9rB3te%WQ_!Vo0b_=q ziDg8mo~JQ8QrO#DuU*fh7+EzRiM&>SOm9eURZIuJZCL*%bZlR%emh?0y$?6H-?gvO zTo*ypi7oH6ord;nYn>*`Q{*H%7GKIXgKx`)%D*C)d)v4Yk|pAEaP1<2J+&QQ) z<=E-hHP*{M?EbHbCYa-*!c1MW_|Mj;bG?tmkv*$m&Ch6Y!O?3zZpTq%7*29R-Z5|N5@P!_O7Kb z|8Duv<*IBTwi?)h)1>-TeQ5`;i8(T-7W0jA_TxVH%0&KY@+(-m221f-8;O_Y%Y9)# zM<4Brx+wuz`e)t!@(yUa*FCb~(rF}=l;VaW`U=A}nh=wkC{KgZ*%t%y(#MR*5>2lZ$Azmi z0}zgD_SLG~jE@8^+lL8*5(!kk5_2=}4L+glsE{14fncvAJbhUf;8#>09KRKCK>2aB z;CeYB?Bhhz4(kH&IxXQ}nP}9a32A1vnJS%}gG{VO*>x4FvBbsweJ#rS@00Mp_|-?Bq~bE9U%A-3lJxDrJOl8@D1IK?D_ zAhQ4Rp~Hh;V^L!40uOYw<*gK)rCsOs{`LGOXxg4$Z_fLTq0=Vd1EMWF_$TM-jdtnT zD-^DgU$emOH=bVvDmUbeBcItXtmSjB>}RgDqO-+Ey;!$DAJ!s)Lq6n-q@q;c+jriE z`@b_#4rJV`Rx^zIMt4+L;&**nv#dbxmBdu$h8En?OqZNP#7b@;j53%ZcU%r_s-eoj z8qjko7Z}_kVn0UAwAo(!`FHcWUbFN?*OIc<4P4umwJGK}5M~sW=D;%O-FRmPNQIzb zN4%*?4&n(Xb51^)p3$rcHPt$AmGG6VrHK*VpQTE|;*SuDOp_F0WbuF?!MWU-Le4Gh1j$I*T(D;x_lyWwb~v2KdW#8zv60aY7p!2|C%`IJk_%` zeG2NX6F2lb{21yj)k?dbtA4z;^UdAlbS{mpQ>^p)w}=xJ`r9!DzqxUG64_KU)=sd< zi@~I;i#5rxNCm4!6^k#drB7PjU#xfA1&^Gi|L|P`k%f^r?%3*=W_d^q#QLY{z*AC0 z)?jbBfA)qsIipbM-iN_(Z^I7Cxp$8E?7d7FkU+-XphdJ;v~ zs^${}Bbb>&!3Jieo^;?FC_Dw}($>J`oN3p=os&HR4bZj_+*nQBX{Ho{YaoA_I5GJna<&aB ziJqN9f==v{W-*#O1VA ztEuJph=eZcDaBP9JeMKl+U(_eej|siB&++BGLDV^!{0Yd$$pJCJ07dq#*3h1vX9s1$bCGO z{Tsfj*V)#i9;`8?dFK+)a-TYF1GM^w5 z8$;v}`iTK3z9^mHt8R?(k7e!|1@tqucfO+5DrH8=fC=HIMX=1qO6)v#!BbcvlL}N-b1Kl)wkEPunW7 zK*UoL#Bap(z3yH`m2j*e+G7{4KCmQ_t+iiGY0Fi@U>q=b-y`nw?9OL`U@)>GY9*?3=Tm>j9Eb^tsmNkiAUdJXG(sG_$M%h9OjBcucG zxl2P&QOW)vE-j(g9uU4-wKOj^t%iQmIn3EYc}ZM~;J@t8hY-@rn<0Nb^-w-J%yGRe zMes*Eh-wb?*+lteW0%{PJ@~*F+2VG%&fd=pzB$37RLB=jUCJ9|qIay)*zxAqe^MqOvw;T=MP9p>NbvI34$3Iwvh&{%r7Q{M?L%R|=aCw>0=D5yl z%>xO*5NI{emiXTN4Qc}GT!+)%(zhl>C{;lIO+VM$5zJ$cc>D(j+?3Krac|^wNYPLC z4R%^3opXvAbR<8RFs#G}BH?9)jWXU3pL&f&fp=c5g=lTo8>5?*b~d7B1I}4_Zjl1Njy0*KMbN zf`l53;3f`;C~MxoAJF(Pou~v+jcMFcd1tSU(oCobXMrPf6h<)X@X25pISGM@DhLNv-igi}x@m(L|it57`EaBM51Jv&Zb*Y7AVbtvOw3Wi%W?BeK@5`~D< z&V~~r`OQ75{|B9iX^dg7eXpfU4JeW`*D9nrTDSkkeZ07u@pM<_f5(t8=xp|*R?zuD z|KtWe%4YiHg?{PGXbHj!Eaqx@yiJR4OLko=c8j0z+VZhKUz`O8c~C zfc0V%rmP%QtqKz<%u?6<>hSVKb0OM)kmCycdGodlGNw+|$)o@co*V zza44p=$@#4=Ke78nwm17Q1_)sZn=Mxts?6Iz=!cPHXryO4(XdWx-6$ z5z5Z7hpzL4tsUFgrn8m1*5GVuITYsLFjt;2LNn5DH$r`5XL{rVxnkMlc7dDVN!fe< zYZMc$>L~xGQ>2O*;W1vF2;O2CnRuR*?3J|h?g88Q$UysI(4W!VPeq0?4iC{-^+5aQ z@Bf;ut2FL+Fy}Q00-TLf{g|W+iy0TC1U}U`KiAa5jVe*Rs~6E}{wtaC`37Fj3{QZ9 zt78N0yX3!fyh7>rr5=vy!T_b}wOs*1a5LU{KlPqF(xzRrFph0C(c6+FO>9MVp@d_R z41IE=H(V>&T_#uMPlRO$d2hmG6HK)EBU=Y~oRSzf&cSm`#XA%i;iqGhQ9x1Rdd9n{ z%?aYZd`pK!A!>4dq@4#2cW(ifpWK4d_}k<6OIA6Vf6C*>aF z`qvdG6RVRTRPK|nAD?Ht`$UMe6GA`ER1Z2AdPmLI?M@~?k_pwc0@;T6f2gAKNz_$! z??*_*RYi#}tG%tj$7IFzisRu}3g1tanuM0Lh3NS4NM^k8T4=a?Pc3c4mh#jPIk8+K z$k`ZYD z7V`{&(82?Mc}LZeu0ayMuYb0z{0CC|cCoJtPN9@eHaQU;{7;kp&AnUvHts|-FCVq0 zJtxBvL3uT53fjyognio*ni{la8?}_4wMO$d%wTtZU2BL07milhFizaZL5IWq9=hSD zv2RNRqOkZAa6)@20-e4TC?rPzwF9LXt>Q%M7868QCFPUweYE((9rx`tVJ=&0gJ5M zm_UXN`+fX<(~52wmEKzE&>F`n_l)P!fe(A-paoG)u+Hc|>&{@lI0Ga5*HB^x&hIj; z+wR+I%Svu0Q4G#0$=L<;)xDpdvZJK(*#5NM2gz#=PdW|!DZ+_o>#z8^=MC49O`pGd z1k{lJaR)VYdt?~J_bDZDn~a&y+Lnk{8qlAVx9{seKC=+OD#3AkN8%tLy2ARw&d(bpt*E-i*l8Op!I;04EDBf#yOc|mYJJFwcKkAq?#}4G9IC3BRoj_ z-Na3~hj8D8ggl`=^GIwhDQ;k`v7{D$?>^jGqDDLb)t$>s08OSh2IA=%033 zNtLuuXv7iU7?`jq(kz#waGB%$6_C2dQh7w|uJJJH$~u!Dk0G)Y%eD+q4DT%x=sX@rXh6 ze3iJlZyRD=g}F>{)c}U#g`oSO5ivlQZ9bY6w70ttA?jj^VZT0cn**5i zNle0g?=5p=V*GsLYV;Su6qH%g1f}qaNM7SoX@ZJo&AM3+n#?`>C=yfcz7htdE3p5&>$nYCXD7uKvYC*h{PI`8^ z8GDg8BA?{NOYU2w;z6IoP~dcbn79`eK*}4;zUD(s0x~!zo=>nBt8*+);4yhUk63LVN~5z8F1Mk>0E7 zIDgLL^1FCSC-r=%H}*oc#rn(p9rDV%4Oz+?`>FY6!N=W~Otu7zHx^_LE($CgnE zu8Qw)>%pGpACUgpXsLo=*L4(>DV4HE{S$j^^M$3Jev{q~YaiQOqM;6T2dBm5)`WuO8CgqY;ug;%iB85s(%RNfRl43b(x0Pc5@=B=5 z>bt787;1$<+|QI2d+o`#q-4JeM0&EjZsDxdGo1-k-T=nQ8!r z2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mA zfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@ z00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve z0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00Mvj zAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe z00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r z03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x> z2mk_r03ZMe00MvjAOHve0)PM@00;mAfB+x>2mk_r03ZMe00MvjAOHve0)PM@00;mA zfB+!ypMawT69}~e6A1ETEa?A&q#%M?Juwt=;Aw<*eGAL|ov@mRH`8KkuK$ljbWCH} zY3l#(zrU4jm$GjNN$8eSbquhnW@P^w0*LoJxE5hH++zh6TcD^G+x8wNGJL z!o{QLEzF45#f@&0z3*>U=Ss$P8oKbUS1!?-5KlN`Eo-Icb((INTGvo>tfBrI!~5Np zi2Tt0otm%K3&$_(3!xT zF>f85`Vdh)-}{l4zYh?rns#}R<$=N~o}llN291(>+IdFQeB|1FRyjCTWD#Z$*1@~2 zW;@Yvx?3tU+S2Q8=s5a2d#xmon5CY+CE$`@_dRLhdK-x?Ia4-KOw~H06qg^5e^bZ$ z(^o#>GG|xyioZ3a8^}9+DKGEmR9~xfZFwXT^064rJwKTNjTdAF)`=jAUnwrBck(^L z?lG(aLoDJ>_q(^=LtoF)e5I{-ngNLe&thY9$+e-gHRyy)0Fq{?$Tto}a#e+y(~{Wg zB|fq(ZjE1$_7fQy3#}EUH+p4+y zh0i;2SB9PYZ6)RVUyXThk(I4`&fiocm&Dz61gFDXJFuOwztUW)^rw$e@m}AI+d{Yl zQi3}c)CTLxwYLm54`!Al9mg#Wx8qc5F%>@A+r05diE-wq1|JPd!BIag@g{}S#loAl zac=Umy_%pP9$OjuBSsxK!BjQ>p7ufK4f@Ar-M~le?%yg-wecqlz=x0CgY7<^-Gwxt zeC8A^{AC~LuJ&<{VY&7e*s`;ZZryD`sQS_1ajTj&dVBQZgRAf}W#Qj?tc-XNE!`~s z8HpGKWz`3{v21~2qfL(X&p!xB4>?Tsc`hmdQ&GLXjqRYHsW@Y1`4wq^(hWAuxMAX?06elZ(VU|P4oxxHY2nAfcmh#rI~3a`bpb<=v!A_zKAvuC_5uatZE{rR(HwXXkz`Kgem$ATftadHX$D} zn*0t2_W<#C@_>I2S^gS{KbI`CCx~VzHFpa&gf|RLD`RVVG(YG)96|7b@ZDy7PCq0< zAwpgAXk&4P?c_m)-hW{&P4)3ygOQ1#iHy?!!VID<$WjVCV@Z?)S@xy}`7h+LIA3;) zF{1S;hVonxm%WW$!8w+p3w9bo>&Gp=#_ZzdWWtj*H#s7AhAHD@ELGl5OuP-AkxP-^ z6ZC2Oo?+*Z4_-AJMpRt*1*PX5 zjU$tLOGin2a^1rb>N?mByiiUflY~spYY~XS8YMXOp16(k$nN>G3mFzo;Z=u5XQxXE zWkd+Ea|?fzrxBPT$xB+U(iJe>4%NF@R0M+Ap6QgpJ!W)FMt8!+oMQ)akh9osxHXEJ z(JtyxChYfxCf}WP+)Xx(S#j9nxpW_f`NaFc5K6iyT)qv-cD-)?btpsBOYRiYBY59c zDBmD)QoWZVt<^Pf4qCiPi}bM~Gpn+;jcM?Jq>x6Rt=2NtHqLb)P3vNrFs9UYs(51R zr9o6rA=1p?KZ?`WCzC^%+#M7m_cm`+4Z9x2l$nBParstHBgu{V=&N$=P#<--E&ESl z;5Rk~==zMRom}&4bh?Z$Zuy4kHwDP;rnX`+YzN&HADfq>1`K^O&60j>g;RR7`VxY_ zu=>@!gX9G&Ba2{2{WEIl*u_R*@7Mmrs2L@{oYly`?o;AA6w0*EgG>GjdqmykV)~`A zdFIB;^LwqzE%#johSh=DSDUn|c+Y3fTck@R(!cu-=!Su2Cn=eP8HvCKo_v67dIZTF zQ>c5T7fFRAJ8zbAVUAZ70X@^Te)~nvqEt*}HwK-Nq$@o!9>n&#yf3fkqCO;nzJNLR zNn=khKiBPaGSD7Fi$EP5gY1pQiC2A89P4k(lfF{RYvw;Mo9E=)+f}4>vPw^ z*70y6cFu0Et=Mp*y-T!v9EGc-H^G2fU7z^aQ!v!UulBD z&Pex^yD|#~*##$vL$9K9?n`xSy1EK-(NDdr1U4a$?&&&5*KOzgtqO*gDE%R38I5cEQI zM+%OjG8}VGlOO4nd2)qa*KsWVTQA);8Y8q3 zjOigi6i$!a>DZqnZ`*HrMr@MtrAtYQ)XK4~EjUd&QZcHv)tTe{CFViOaLa^&I~uqw z#x_Jq3-93Ldwe12Qb$gP^^)?lxLR@Mdxrw4lDochzHkL!(lA-0p}rb_1qU4tc&ilw z9`h*wD$@>ia1Y}yqqs(J>e7Op0pDk5r#b;TlCX`|&v0*RV(jPar9DWVmgn{Rh7s*> zc2*G`xqKq<&j^jX5W#Ekvlca&f&;`WOKu|v!+WHyU!3FdZWv%tqyAEtMf_7%c&DGW91IZ=Nc@5?YFtCWqSd?iwr0)?C~8*tyKnIVq7$%u6R_ zN;eEoDvjTrBk}l$#=nsD;I*KO%6-v|>u49Yxj;=vHc&LqxocNoPCl%#vl)oYI)-79 z3P|KKfBkM(UVqL=(Q{aeFoo-gblo~uN1Y~`j>4x_Z1`$?f)Ga-u*F=4su_&VOY+|U znS#gGf%@@WSjHGg#>db${#^VJ`NCXb>xPjfKo%=wEs1(X{JC>^JhX{+(*yh zWWyysF+fvXoyd;da^xQ=B9o!QWq8mo;hV%RhQP0XWD}Rc29Z1!bV)xeg@>Rk4c07(u=1`ORJ}gQ`rbx9in^RbqP$<&_-Qut=WK|R?OlJR zSIkz%23sO*u5;LV^jS?eJ*KT^G2CXK)^otGj*N`@9aok?rdbrER{Ousz*j5f>c*9?QXZX`fi{p z5vOHKB$3ejV(A6Bvi(=ayex&7vKWo}Pyt=;xd_+JX8Zg^m4AGFGq1=6yqD;-di+D~ zuegGr(2-G^(F6uGff$4jPKOi9S!qr3KNktTN@loGTn&_0`4mhO|V8!=)8{^7_z z=qlQdrU&K>KO0rDCSkB}PBv~%>L>Imf$Oq)Y+kB?pOS>s<-s%muBA}foGp`&_6il` z($7H>;2AA!f-dZ&AEco5d`^zI3wqtF91fnoZ%N=+)V96DNK4}Vroy^jDQlD+zOjuL zS2$7Yyv~-A^#VEd56Sh-^bUQgyD%hLE* z?-2Nwm;tLurC;Teq?^q4@q3Cd(zU2tXO<61$ctu`Y{%uWcGPF?S+zk~YODutdqHxw zmVeJ-IoY&B&zJ(f{L@@YSAu!R8HI6Ifk&xwRm>s|_`ZLeCo?{yjguldnI8@1DZvYd z%GORt2bG(vt8Y+MKPdm6ta^`kCE> zz!{o`X}u+=j|#cxmM?bB<%!{6JarU{{NH-lFVQ(47YLjw z^%fPAQtL+efojQCWL=jEmgp$Y)wPCI+GpOzLf(u-qI3lDURjz%c;j1Njos5+BO%Vt zt2gDnx_VB6JQG3Pd@Wy7P?FnK+a6km^)1(}ttDWoKe105U+@yLrubDBsR|2go^dU6 zP%f0k(;jArfh748wYXU&Pc@ABmY+sQ=#adlOsF{T3JtooHtgLZvrf4deqxtILL6*5 zZ>uT)k;#tNVDe77k?Z#66eW)Ey)Wu{Z7ZK1oP&UR z0k3yapzlfEe;~uOe54hOAdWWo8^qV_22JK~p@6|B5naT!K;lB)Ucp>=VhqNt(r-t5 zyy5py8EHr%En_o5Y#3IJaB5r!g$KKM_;Q4NcU6Bu-U_N<{8%rfT)w){AhpFMHycOR z*8OJWC{yu9f09FGDGfW+kmxt2kmYT~LH{SFZ($rK1)miac}%k+YXwMgT{bk0Y_tBA zMrxp+gnyY+1kA5L{pT|?2n!7PTYGk&Jd=&oEd(=X2+f0Z(*qQFOOK3VREW^6exSEZ zwh>`BslIpL8sgHnNTL{+2Gwn8Hnlimou*s)WgAzE*lR30VTX1ZgVr+QfCP+`n~{M$ zoLyiP247Vh5B&4fVBTJ(%Pg_{w|Ofrk4_M`xVu+qa-}OEbZJS~re}Y}B)uJvNbyn| z??Q>RT%Y=*=52i>RI9MO3n%vMPL*6;x93jM1NO3TPhX4bLM*$2XFH#`H9Ko-FCRo; zb5LX5Bpm-|TtQJ3b6vk7Bh8RvP08)f;Q&{^7-z-0%1(FIRQlO@kJGOLsa8kTB+g2l za**!l!p{ZF{wb(8j#JXGV!}+s0=8mZO|RV!wWD4Du2ZC!vVP zr<7=|X8g>g{oB3tB&D1h7M<>`UFg98<`d&A0vhm8vGFN5&;b?sOKN7fbvP~YwF!yX z-yF8HP`6k^=CXXdzIn%S06Mi}CD;)OXX6!qf6z*F9D_6io8I!%zSk(_ri2?_QENJ& z(d+?tjf;TG0`tLuM|b(^Wsw`C%CBB0)u_{9UX|vU+_9)yO)obUQ6PHHw21e6J6>#$ z0)A%D&*>)OiEhdOPpExG{l7?~@EI6X2B{;Pm-7p|aL#^hAVo^(Ga}x)#r0UIOVxrV zF{)3AaY!a??W?)L2vns=w(nI)74A+|WepX_fN4#&gGrVFYr;smE6NQD8PIdfs-8hdz% zCI6-URu2ElUPCtWiNJT{&~&ql55Y?x(D9n#{WwY8;zUAUVh z4bjTsonL$!5<@`;yo4tY4SVQES+QCIqZ8r5UGnXY!EYu6%nA0E>--56qI*nV4Bbmf z-Dgy*te`{R^re^A6EF2rj+=att2}RBomZ+c3%}{}E{_bRI7J^aQqf&pqU-0uiMWDSVkSdFDQZ zoI=(Ioz=3tGnk@I6As2gFWUMMzi5sbR7q4KjY{rBM=e%F)yI$yFDK)BYb;Vw?C0D_ zva)ckT?#t->uOb>$y zgLZ@}vR=f|K=ZWhjiptZ!Hs|!aRl=@R}mEOl>)? zi4M0!kl$+V!(@+X{_m|P!j?(Bl5t=y%JmICY1mJs;+?IgwR~U6djv z>#e%X;sbq-j1IDt@hiiCxysFHMsEOC?jkF~~Ow{9-v zc$zHd)er94A8y%QWg9p~4X}C`c!G0xux_`wXYXa^NHC~!<&h*S$zSKzWP_C$A^F_k z4wxcpu7Fxx%v6b!7}f6W)AsUAmMf~|1t#rla(PrYmocP*u*St*{8@@k$$va-sBJ|= zl$E`H(X5_ZblfiJ4*qp1*_@h8Q9c8vbi{K zaY4jBGiUOmmKhOiinK{VF#zNZ;1w|aC2Os&5*k~dKbM+y4k8nGajIazJ zgcT7IL zAsT13yOBaM8Q;)4~MkfTu^_0@u?lK~%^`a?UI((H#9S|u+<)Gu6 z$nZSwJ%ef1DGjY!E>%`9{o!g(S*X5+?@uoH;*rxTfmHV>on1j90>oAtaa z+W4fQAFFhz4h+Sa+5$0w;^c<3e5sZga~V|Vi(mCP++4IKPB3XJMg877v|m}<EL7idrNl?CyJf6hyU1`mWP=F0w^u1W z%=Fp~xg%m}$+a7o$4sT$l%aspS|4gr88qrn%`_Rcsrn1GRrK~eWtv{0{%QRQA7`|= z7$R#kZDSfSS4_p7QQflTyKEY0muIoYghFrND~JcANnh2bD;8TCJR) zHl40myiBf0ibOhwSN9uCEmq01zEJ9if$AQPS(75}kG9eIq;zp6x3*SfwbrvJ4LfQ;AYZ^;ZR(Hy^d?JAdNXZ*xx#IVkAW8N=&*1uGy;n>!Z zL;N2A7eMI0_>o_adsB&EOQviYxQBWGqDv3_vb{gfii@Ks*zPWv*i|vhVgAA&)SS_2 zWRcBL0!o}XAkPM;e5~+GiCKC(vcqOc4yyeY+0-RE+PTO`Z_KDT2@PZh(UD92&l~tC zu!i;K_}8u%SmFt5jkvbpXOkX@BlyADU)nFC>*mfEpie>%5N@upj+k_gIAyuz{Go)D z!Zn>WVtfF&x$ZlAmD>R#?b!=t9pk`%zhk8L5AI)b1suL5$t{RPLln?RnqJMZfL~7( zpGGd`lQJb6OIBB#AQ~^(=Xd13fT|%o$%gG+5r@j!n<83%(T^Wn_KYYwzcUU1verK$ zr7RVM3yIk%m(k%svbaWyh=^=n5R!%-S&KSDJ2VaLTQ#%RGO34{ApKVI45Oxtg%6W1 z^IzC$I2PGZ<{+EEOyXx^&u2%_uHZLtfjo{_AETz9rfwk?C2d!!4w-q_9%P8bH+)@J|)`RzSL^Fx9VOEJpAxi0tB!( z9ckYhxbgkO<%Wpt(zt{-QSRTbI7N8VJ*#urQDmV3?7N2Bosnc2t_~HTk~mO{cAe-uFjy?YB(ogY zRM1b`dw>Yl*x5GQ-9Jij|Mg&~zGF-j7jjk`m}Mc04zhveN9L0SR94Z@#hAa%0XW^; zUfo|`_H4q{BxUpG3=c9AMgwhr*v1CYvGhAhjJg+>`FTCZl%zLM3_L`rq_v-sC8X0> zucHL~1-OdC9@GnNwvPjrwhXt;ra|hVNyBE|B8n(8kb2e*>Owu!?eu#-uZRVCmKW86(}N z@U^jXAMtNh0)0WhxoID@d*`mX)H#*70w7WGnU{@f)-~Z`Ivc@tOC=AusY!*+!R90B zhi7RDL4J~;iR1q@9OUrSJiB9sy2A@MLmM&2z;n9J+u)`O^W8Tp%4aNWOHBpR#J8Y8 z=np>ir8yGG#3~w-x=cEhZFh&kAI`x69TV3bD--fI-tzU7Q{F*1Yx7wUujy*- zmfQv&^#u1J!Ei(Si1f2K)5O{R6I_s=)kJ)=z3dr`8Fk1T|t9so(F~2~M zuNy|=nV5n?-}JyS5G*;N77xP%<@Vkk#$R^3J^KY}vpxkai}^YrgLC(F5%vTs>Q5#2 zoVWQ4pxP5cXPA6?aUGNLu;$PEAkbl>4-7PZWh6lRv z0idqzK`-4kbzm%L)Bd#AL%9Q%a9%g_pi~8b%lM{XbIki;P3x=Sa+3Dt_}U^0+#6w5 zKBz?n38#Gg2^tHlt{46I=ri2cl6L3?8|{x>zs9pyWvaz@-IGz-)~p+`M3%jn2@nOj zq;q>AJ~VSSK{rG8f%ODCi^gs@0+wW%iK1~A!GFAPU0TAuqkLVh4oQ&IPs~8m;fE4er2qer#J52Mf5eubJyZOb^wmdvZ)LUu-xzVV^Cj($nw{fFpr3OQoJV#YV`j{!Y&Tgc>$>+?Vh25Bd zlGiR;=Zo*V6sS>o`p3N1=$0s`_YYWXAMMy1<4uKkp!RRqr~UiRvc7yiEcdI2srkJooC+Jx^Z|!OyZ*3m0;fA^A zKZoQld6)8J*>WWoTt9Z{DWk<=?33;*tLanispWGgPg)ZlY<5As1$Lrh8)Rmszbx#s z5Lgxpg-aWr3*mO!D{GrR)nfcM#qg0CsLm`qu}jT*F$&33tQ^>CzXVD`ae9tgo2#&V zy(XabhXG~I;~j~n_XV^7yS1zyi{yg}IU20xVcyODrmA5EmeP``=Cx!<#-)$~efjow zCTM3DbtfyVM(Q(Dk**beqG#aO%rO|k8omkRpk8>e zXG0B7&&m&r8qjf0iP`%e-qo;$UuL_r9~mt6I{yJbgaFdl+K~QsOMaulOR$||EgM;4 z$$*6=jS_dawsA(X0u2+qxo z82n_~q_A@@%z4-^K2aB@b#c^~cbfieAh^YBkjHK@W5Nd}wS?d*0z=*~D+*kd^^?nH zt8OuX+T)qj5<~JeMdjwv7=%xoj@zXIqfkH57B1K(`TSuBiJ{ho({#4N9)<>ev12cC zZ7S*~TjbF);LV^2%J4jqWC>Zb#wBRjd?c;Dwum}1f{Xf@tL&&LOvUNWp<_n}HNkIy z3++KG@EHw!h085HSdaYTMeL4^NOH$kp$RsADLk)FTnwSDG5Ee+tG-PI<9HqszQUh3 zhi(9Y6nfy2^ac@;L`%PPPcnR+z*{f&WQUY1WY)95nKMR2kibr}^JkpaFhfKb%Q_-j zb0tWJX(TC@3)EW{6Zl&!6mmS+$MNWOSdQ2$e^qw3ttfu26<|n~e&O+E@FU***H&mB zf6FA)>ts4EFBhQ#IWNWb53~Y!1*;Y@2u$3 zswv~a!!DHEpx2S{iPKhDKER!WjM$R~&V#^U?s3qki7uA z31}5G?FFoYjmkG|^n`r4{4P|Z7?j8$h72&Z;Ul+ZaHDiJ=}`4E67Y$r>Ai73X!W1b zzX>2OlkhZ^)jW6`=(lb+=8I&iCIuq^PXA<8-N>j_D)X3BAYU@O>23S>k%*jGeu92Yj>gJARY7z41%5srDUKe@&T>_iHU;P;&@BwJWKnB3lZ>qoKV zQ_62))YauTlhk7X?Woc7b5IJke&=RjJupZPtB4jy6y=!g+_-GUtCF&zci*L5ASz`w zGVtI{6FJH-8tdku=s}zGTjS+(wz;lNJ%TLACzEHR(!-kus|wU1_WcEBhqU@$ncw+) z(1<{{#NY%q>z$|$4Sfe1M0z6l<-x`2I-GKzTZdX6xU-Wk&I|2dp9!|oKkK?d%ftJw z6u*I?`;id79AH?Czh0Gaw9rpym@@{=w?hTSw$?~0*SWM3|GxXZ%qZ(U2^$iT^-p)b z)jUebUvOMSNkH^w+$SyGdjrC64A$(kxPVntm}ZT~&}5;Ds4Z7XnW;KxLqazLs*Y4Y z!IofhIo^6gSaA!5RzE0->dnymxx+`n!%+Kv_U@dfcnt7hPcY-BPMrcYyr#3~`t2qZ zk1KO+pTG97Pg|6K+C`3xg!=T^4%(*7gMMBF+-G(Wgsvpy5Hw#Qk~1gC%T$#Ar5jL8 ziN4`z!4gpIz02X0ks)8h_artrb3fvf+P4Cp3_^8P0RpV`@neT`&ySAs#XtI6-@ z!fB$ls}@Uoj3(6VpU85HKLbFdSH-|v6wE_K=D@kRKreIXf`KWS;~+4@ng^9$WX^%;HMnVU4bLnHqeP z@NH1+YC}NAbsKZ*SS7m9DwR$|;o{UJuabxv>$_PDVJXfvv+?N&;uSA5iOPF=?7JdO z1cRM6CFrJ%u!PY_y>WXq=Je7H503daDq7kVyQBx z=*8kxF@j5bOu-M#x^pI64qoN670mAwkZqS1M3FcKf)5r-7QikOX%X7n#v7k#S*OK4 z4xxLGWVeI&^7QpdcU?ag;ubXAZB(xK)nym5j;f*@iB<7iy!}^JLK*~Kdq^c$V|mPC zDgKvH_os7&XmtaX}>j zcpbv^_ev!9l<~;rLo)kQ5JW87t?y3=#15=Daep%3d2NxbWEx}eIvE?BZ%u{`uz0_u z$Xv6X{QQ-${)hAH(+*3Pns&XVFvu|`FUgBGzLP3V0#gw7 zmDREk>e!y=4!7kyx5VXMD@eLkryp`SbajYsTSpZT4wKC);FW^?H|1n&RK1h?qY<`T zge%ah;X+Hth&8r49$~CVzqL$w@zJR_8iFWT9Qa`6js zsgU$qC6?j`7Y>=bTTm0`pGmBQ;Vu^8o!a&F-qPoeT<(veW;bB&RZEqLXnmIJhaPb7 zL}y9m)Qt=gIw#`dp+1P`19naO+$+-_k{)VQoK&x?Qbi(k;q5giG$e z&v z*w(o*-eNpYian+4YV$@JKC@+WiV909S7EAcEgP7Ru*O?MILtnzgb>VUHgU=Vo2JDd z)ZqcOL~`osHWB*nQ`GA(uc6sVmbZSL=P@n_dKl%mC3Ly|It&;5U%{&$YN;gHNlM@D zGmoO=veLZ#n;&GuwxV50J#dQyTZKO#dS)ot;IakMXM&UWW7q0Up&coOIa50#v_8`1 z_XuQ#R`Ur?fDdcsd9xm=P^AmzUw!EIc(OZmW>=g6tS0OE!Ihc&D@1Li3e^0P#t@&) zXOl2LpguTClc&yovDq%T+(75p^&oT7Jj{_aJ{Ad|-@NICBDgNqQv zi=y{CXFw6g#7hm*^Z132xwqrsUsTbHh}Ua8V+fSh^=`|o_O zOcQ+8Ir8LsjHV3}yrY>8tWm5goJiVZ8i{hXUL<8z6-ul#Zz2u&b4-}z3OoXfl?)Qu1?7{j~W(}Owqv+ZRQDM zPH6Q~l1i5$0qb%V@HeZD1%lVHH9=E-RaH$fgqf(r)_ost%<;yObU8i5n9ulP>W*v? z|F{r(;gHf;-NDk7@~H4oNR99zAY<&}qO=gUZ}3p7Ld#b819f+1C;{9>+UA2!dle#Vd3)^yOfsHu}#3Lz^(tzfgzP>H8?6&-|ISn#0ILUc6 zbWoeY`ZNU^!IF;$rBF>}jmRCYHVV3pd?X#XL1DfSBV zgk`;p>AjpRVHVV`MC@i5!3oQnuHw=`=cetDZ8?tdT5rLN$g$HofrKO!1(i#>xhbEO z4Y_Phnl$`pmypIgtwui zF%|D()>2P4=Yj=!hKFOO?H`NIMvoN?zrPO9OX5g+sx%M{f{P8dhfy=NLd}!6%3LFA z6yC+1E-$Uk_h&x|{JSE8>`=HA5Z)w0DR315(xW&6_ffQ1v{m;}BQ4;hgh0@lgY@)q zi(zSyd3nk5f~@x!dbP3hIQ}0h&5aB0OG>R_&@>1+l)Gri7zCC_B4R~f)~hpymw^Z+ z`c8uUXFoc^+RxIS%J+BAl6zQcSmb8;<9=n*r~s zP)D9%WP@%@_G@5`x$tk%qD=+09DEXsw3&I!*#Vwr7*t)ACt5_c!_m+_albCV{q#To zP{RmD>?hKB1U&CfjAg1RsqT*mrNLP$v2k&el^NL% zBt1ccoIG6TtbS^jj!J%3vdHG5v9*WC>dvHpE-|HDh*e!BEP)Qat9%84nJG*H;qCdi zkN{7Y9Js_9=kL;0l5kmY6dc`C80hO5d0FwSi}YMs@#@goq~hOn$mb<~J@MrBsjWdl z$SI#g@GHzyzwW9QnELGa8cNc>e_h+rzGZxe5e}nFncDzkGmF)Wg~`hQyV*`b9npP3 zt1k81Bg_i@KnJc%91;pTyZzBf`AWFl)Lhfsl`QsnD+<%-RwX$c#q@@uYqhcX>LA|y zwuO7w&}iJ!a2v<%TswCdUP5fE6r8 z0J5FSb-HD_gQ>PC=!fbgf=vy;0^wM#?*{xh*P8)VJLRL0HD&^w@V?!$B#RN+K<01j z7LJZSDr4#cI(74ct%Z1-wku%ic8k+6qZ$_X5w-z@MXzc{WN$H#65owYC2G(O9@oRK zr0I|EbH>IHrY5<^j!*C#NM$);rd_s(dJ!^n{=oIQYppcQEOtjgFN9W$xocI`+8Tt< zx$8)gmg6pnIia>dV=`0&?fl)}yfQ%!H4)!uIJRQ190zF5t<@)Md95l_!eahGm-DOY zlpDJ>W$*!(8Ls_R8b=!3@`?zX@^Zhj$WBKwEeR$+I%L{0ev}P`ddDG=a||g-v_mjGjX7~ahBLaIewfgEv8x(2 zl6@r?A~wFf;ZRP0o}MM-mtp56iRCf4)uUnUw=>qAeO$#PkD}MID){EOCVA`Mp+5b~ zG$@)?MpNo+8y4@m`B(S;WZ!sxdjr_b$fq*79Fc3$su`zWA)!ju@o?idpuGp+$%~&| zarqv2O&!9DUtYF{3Qn_Iv>x2~=I`l(u3Rizt7}JMeD`gYQpY2KjkW9UcQjNaHnk7_ z6|<>sj(TfU`Jk3v=Y$2}ZZMIP@kbDiqkOkj?%E=xj|6zS4H(T%d*r3r(hlFU0}Z}Y zXQQ6k%I}(imYX!tnCw4*A`};IhteT_uw7+(x_bnS^TuJcW9N=h6Ixr7esPyy^$;#u zWHfRQ0yLa+L0#;)gc!>Wv7_d??Ht2e2iR9V-VQe?vE zyN-eyK6U34kha`>s?@}e9pWlO`E%*4eIQTE!(E~`g;X7aDSz z1tjpDtdL#6gzaT(QjyEDgg(rJam(>Uc~vD~S-$kAaWnCweswAPWX}4c>X$rd11a_q z37N7lj%$d4mjMpC-63tGTbCBvsApZ1v%@-;p`Y2xLSj#ALklnQ70nM@adSanUD_nS zmCr5%jCl;_qLvEXdbCIcH(vzoXes#2V|hLPpTvxGaR;A)xiWHP2{}*G)M`@ck7#W@ zK7QRs0ozh>4WV)HkOdc)kc(GQ=BYnijd&Lz5Xh-+YAXGQki)g%?_-^3F$EZ5>>(cm-)i%6K7yu%jM$)>V92QF1h^ z_pe*km_l^?2u~&3*r0s^XBDzLcW>l>iZ+JEns>{LxuNb%;rE`JavHdutFwfv?khZs zb^6C#25jQ(`;W9tG1D6@M030|?QQT?&`lL1U@X=~d9k}yu7QSS)BFh1ALT1B zk{|A~x1})*rk@IC7dA!f+D{ANk~PL4!Jz_7X88_waZqT0OAUsiJ;sY*yrrY&h0Nkm z9d_QAjdb+El2#n!toVQW+)^@>8F(@B$^UjoG`gl7y3u*~#h&;aLw~C9NDnI?3!&7= zpagyc$eNWTg+pPEYkZ=|s@JUAJfDSk9>vK&sF=o4=(6fNYk8fF)siU+m~7pBvC5C` zRv9J{2}?A$w7x0zF%L-+bQ(4uwOE*FV=^xQ6$mM{3&$ z7{)IC5hSgUp?Ak(ic`)jUAT5(-=YDHJX#oHsEoP2Ab-Wmu#sF^uZA14AB4l_%C%E) zgPj~)7P8Ki6g-kYeHR6{2Jz{0T?Gg~Xt2d+o+WL`=DDOilOBmX`wB3{< zVS_K2Ipv;HbbNao#6mEZdX^BfVe_lKWR5-9tmT&4J&cEpf(fgZS|4g%)gi4$jRkbX z?R2G~Tbyg6U$!FJt2CXiz@fy=$1(K+j{jis0c~W8W_hax$|q+{VX_9q_PxN6rzF6B z9j{RB+#g>;m7Ct(OrYo^ZFo=|p4PyaaH5rKN^{^NSTh zZaThI()zutn(g87SKT+^gouwW{fT-i$^_#@1$R$xO=6%bTIoM=Kwm98GGk`61Bg^b zkJeQ^654G@k$8?-mwA|U5|?y#rnJV+qw?U3SzyqiE5dLyvj5^YlDcmS;}(9V#+D#= znGDg##KIuQj@Nk)hxV6V4?a*C0kFQocZ`U?IarB_0Zd)mcET1nGUw%RJe;z@rW8;8 ztX<2il4ro_!FKNYwsT_L{L~|(m}^r3$)~}{z}mS#+ZE+v(?h4Jh)N1Gc!7%=q2vh~ zj_{KWutvmOrN*6BT~uftD{Um6CkZDuuH}NVo#U#*{g&YdYFEnLg&R&&G$s|4kt@&Q zk5&nde|7l}q!}Y8hmc+xCKnGUO)UPbC1YwK2pb0mT7OYdh$A(1&4tTKr3$y4^Y(Xo zMe>asT-wsd>T!%<@9wn7DAq80Dep0qMdqpbim4AZ9C);rS5Z*Gl*g&5v@CMcf_@qg zr&#!UT06{BSv=Yc)2PwpsG%Z}{8ZqD$< z$^{r-WyYtEcw{GWnT;;l^uz zbOWUO5ZUivvWI(S+H(C>Z`S{?i?tg#3W`$J8kFa=g8yvh0VWTrxW(2Mc1k_>8MA`y zL$1jtWJIB9QQ-pEvHLGLffxJFVcAB$;m$q(o>q&4acKvv{pqt(!%`gn)InH>O8DJd zIR><*w4I{+Aujj=sf84VhrfhQ5|dZ#HBPi`rA}V?Q=Xf9M$Fc#Y9JWj@7slmmAFSv84tuu9NO26sSfrjjlLbg?v?*oQykE< zqn4Q_sxDITq>9Bbbhl(=i%fC7LqiEfXO<{NJl2Dl_W;;*!9@eLH&(ty9E+lap$CYA z8Vs_-(M^lO6xl28ZYrLV#3Ry|M_|}WXmY7WT@tn^`Mrv6cY1xc^$D|}uKZ{(hlH_> zHXtenl4-tux{9`X<5V~}=G1fh#c@3lI=sl*7b&8MP&;^Qs=SwC1}Yeh8u9miDrGT43+|bo`C5 zw$1Cw-M)zQH1x>ey?>{E0bIig+YbpMy#=%NnclI$th^3)J@l!LXus&3&?E^1{RL#i z&F?4h!UPxOP;8zn7dlF8o*?Eo`8a!Cl)J{VbS)w8^!n#~asv|qUDUhGTHS$0zZ^@6 z<1cSr^lYba;q!(4(w)V}xn(n9v_x!@?YD7alyD4g4$<0gMKP%HcR>LC9TLy)ev}2~ zbaV)@3g9l7;<$an%vfqet7B%T#@dXi>O-SPo>1)hq4Tm1z#ERP9V#KZA|s^EVqsV| zH+*B2SPBQ6C`m`twbu4z?2_d)HZ9Y z?VY03hIP^q=6>C?&i?Hn3!WfWdDCr;%GVDG=6KlAv+EF9(IrCjtfK()giu6SsDa&J zri0XmUEIK#_qLc7FbBCWg*$-sn>*)GW9p32`2Sc-L#B>s-a6(S+KSY)A2nQug;aD$ zjpp$2acC(@XKz}P+l_yRv*+e-T<+#=t?OKr*Ff;#nSN6w3Br>>b+!{6i~kV$8;lCO zY?VS-jiG;_5s&?($R;MIRET~vJ$-3r8#?6V0NNGAm1X$R3U|=gkkc+|7&=?B)Noe9 zS|3Huyvt(ma3U@MX30&tg&qIQG@2y=sW4LRJepqOlJ^Ueg;T%Lp<~|-i?KpOgHQKH~8_%0UX%T1a)Pfhz*D2y<*~uW*wD{Tt0X%SYFT5|5+{>l#Z@D(tu9 zv6&p>dgptjqhiEJ=2{<}q%?}t3=+G2&^^!;%%z#bNuA#`j(3%?IVu?Wm?)WfM}u_Z zbf_tNTWmsfLE^QqfzRp)UEqp2?6`=76M@9$4KB_T%BGqfqOIvzK`|c=Zk32*{)117 z#||}*a|)f!hzptLdT#qBz^0XhtGMCdno|d?19@WI_fkN7tgnwowWfcsktV&oxwl%s zg-;xbjPPqT=K>y-0qbyG-a#JEetvO<_`tBP?Uaz0-!XwIpWRKj(T|gZsHLdV)sLZe zxd-fowyswx({3uwSXwm-%FXWaNW8_|N|Eigbp=vnV!cCgS4d@49gDEnhN7D1_e-vi1mLmvIk81?ps90CqA-E5DvCG=k^f0}w`{n}L~gUoPiQJ!*o5}UFovkV zVr*MnReAR;X64lS{wD8a zM$P91vTIF9JIZs@^Qm^bSy~Q2`J^C};QqUJ+5)%lexWl6h(p ziG%&?zPfHa!|oiP>m>TF?r|elmtHlS4cw#m$;U*2GS+4FN=7LFB2v@*^L6*IrL)=y zs@X;F{kBENm!PP>s3^(SSl=guq7+$r&b_1mz<%V74B-@gcT@{ieVW>lsJBAPe@S}Z zxtrW;%J=lWt=`h6)s=>TKx;byR9+Yo*Ny|?3*;+D8y%~tMTgaNf_t-$rl z56tj#o}GVq;s2+_>BRPC5dR9dcF2IR40jWJ_p9Me`FH-jxS#+&l$`mLvAZSWaLZve zf&j@o9B*M71RVHNZY~YwlR`y2T8$IN)XbIbjNn-Fpwty6bhx9ER=s2nC=Ni!$qM1% z*Vy1tF(Z5-$dF`TS>fBs?n5Ug@lF%#iDKG_ncC4Wc;Tf~@)kP$P^u>GDlljKF!{nb zDRtM{K*u;SKC0)fyd@#?OdN2JI&^inmC24fYhw6L-+w85u9NOxf>|_phkug$Tl7EF zLM%LZ<9$fM?tG+l_y?;#gpEX&wUVRU+g-a;nUECqg+~xRu%8)Vf}^kovX32xvvM1H zFDIGcO@rwlnPew?u+yM6hAQ{lvx?U#I!;-PwJM6pO|0%coA3v<%W4>*tm@FJGxpo3 zmd;}iV=R}hw-60zsQqKw7Tsz}p;IMj1&x0agBF+*KuN(?qS69n-(@*5k7ev08go7m z1F3{icDs%Ep}x8Hb3mTPcmfWj+`eTOdZCUfGS0crvp>waOPY+!W>0ZseOR-|vc0?i zyaLtttX6=jq(}LOA-Y_simJ~ye(B$)-?%Y8s>Gd~ zw|tg;2m&FBAZv+~&O`^dxF;-uEo99iCjs6%HFZjZ?VlFDyqjs4Uj*#NroZe5nYT{c ztY$C&X}UozG^Dcv@T?i6+cv zW3Fz-g{9d28vbD>nODAR`#%>2sN}}x*jv$7Hc}s2EbBS|uVL^$Jnr?r^J@Ajx-Q&$ zI|0fj&caxp+sV-+-A3dT5a8ply6IWSI&XuUy!Zr~pvk#Jqc}2OUi)WUoDyN5v^=f2L*GnpzWKrC3fWUFE`LBEjFe|p*!*X7$&wH&hN~W99l?a&i(pqk>w&Y z2>NOYrsuIb1evBj-(8>oNd4;QJ~-UJh^O2$eTgzp0$*rvH_{S7$J&}4xB?}fsMx4J zByG$p-0Y{yH8i|?`17tDzOS{wttkF*s9kAsGpy)plpJL5;SBv1jU3?uRT5g zzEy-R`$QKhT5i#(EheRT8I+W>1w>L61XqQ1o8-$^+=mQ(+W))|8ih)dt8<`3%-`lT zH={Y`?w0QoK_*TF-A$2yZEMMsmH=(#P97C)I9Y3>(Oj{rqbd0HqT2}10N24+HpJ?K zuylT|Hh7s3#f2HI5I0SNr2^_GnuJG@qHW)+FwnK}Y-9S{jV4dO?(4S1-#7mPB2IPU zMdb+fKeI$(lFfK-&k)e}1jPI zgQa68EOIDkV~}}|m_laFqcSXNUj7pHi1p`{%QmYbz0dF*tf1-8O|)af*o^j8!=T{x ztcFW)lE*l8i%gF@W#bu@#;WpXj`_4!#;d#=kuFPIlpyG@8dzZKX9$$jtR)WReoOWZRM+ z2=h|E=B*-@5jZ#5Bm>b3sLVD0sO(p3R5j_sP)|LvZWFcUS>}E)~n&h&|AydVDJoNGN zauTXsv5Y~$_$T(*Won^MVNh6mph(gOS>1;BDD?hvuCzB2vq%tjAWFR|q&pBul2!PC+`X4_nev+AX(n_rCc|1B=d%RPN7x>*jX?Y|^!-fQ&rE+a>GzM~7;w*B`3WhpWn_Z93$$%ZrFj8o7{ zpk>T$Sz#<}jyZ6wL9oM;FfpY(8b*ob%AE*Gpm-*dUqBjrLL%5{yN8suaZd95X8WSC z7Z1wGi|tFOU6*Y6?k0=qqe-rr;d;PzqOs~j^%P*U%Y$WmPAO?bWr;=8t!n49lI9OU zf}5e*YJn|@@Hhl?SB$+1u$Td?lV4$L#vt9z;D0Ewnr6wCd54m@QzlImarTDjPdslD zUMf90dQ)6Mb(cJT(&WC*p;qEgx_*{n1u%Yzu>ufh5aI$JX-o+X?DHTJ=y^ces5iuITH24R6K6=a!=t$tUAw|D>^N%`GLBC7)|wU6 z&ox0cG>T5-l#R_X5l8&EvVcV9ZBfvI=^@)egU>(2D&%YIxuGt6#ltKo(JyU4*Vj69 z_Pb^kfhNcdJt)>20O`J$4Sm)HODUOw>9cH6=vi#M_|6|+YPIgp7r&N4hQ#kakyiN$ zkoWqUFxm2fDj?gJv(PzWrL~tCI9wQk#t;eQz)66f{x^#`&vdp;s+bd4?bearuGh(h zXQQdTemsbi`xG+c0-}pQCdL@$!rf=x+jkd)gNvfu2DcncPUARP;!B zB_rJ4?17#el8YPGZ(#ISCLaY<_){+J*A*v{-*B!|7OO9u0;PQ1tDbc$R2484)dRkP zfeYlA2$mAIvh-cSm(B}DXcU$J6E^DWN)p((c;ET!d&G~crnEGyARAE~&hFMba}g2J zxrLKRgz$Z3$=75cb+v(DPKsu)#}-e#4z*S&E{%iIh8uAWUdYaeK9UwyqRNMKDdSB; zCPVgJQ0TH|nJK9`H9HF0AK?|`Q)}I@6=+Tzl-Og~Ar&6zhA~x&q*m$qo}M#Jc+-#-RJ)Sg_qfa?5t{ zgSb3rgZwfVh6Z2vjFtIPxvtV=jM0hYQ@fi!jw;kUK<~Q7=RUp68E?K%PI0p^Z5_tU z!=Lvb5&Fqj|2vhGtZ`g>J$XoArX8Gn(j=m>N?;@Qman4&MXJ)y3T~#`!9w#&@&D)d zgH$L{qK=NvrdC=84atrx`m$?Tukz%ScXm_(Tr!enKF!Yi?(5RdkddVG(b^F3qy`^> z*CF=ojcz^ilo`DZq29Vu!T#&xcSI0|g|wWf1L3!CwAK>im7P0axFS$)TnemEvi0ub zlC?gkSm<2X8;5?%CBPLK;5;+mRlWOcg$TIuu^TT}GdTo~w?XY>qtPvRziT-uqtA{p ziCDd{p8r2cK-5$5I}Y2ZwWxJX-+(=WsQG+6Y+!RTh}Y}o#kP|}dB^^_se6FGcn`W! zrG`FY0~diL7$8kOS`Yzo3ZTrRgUdjLU7eua{nQQ}E|WH-R6L=rwqA=V3*N&0pj^?w zpM?naVyZ^h(Un%vq~jz@PQn0_sy7IM1?o&I9$O?-5F`{upu9FIMx%39Y!AH)i``J1Na(Cmkf+^;zii^K4;@Od7wLka7Tvj54FCMc2CqvZ2KCi0e zM=PgW)J&roo4e1B?f&HuNWv>F8E{>(sbk5;kp!%I(K|#OYa%qG8R5lFe-|v8KK!`F z`mn4WIEw*^TACn_S&<9C54o7It*aZukp#7`g4@cGLvZTbRT#2s?ta(p?59g~6@|Ks zB$5Q;$(X%Ipe*l0HR3k-@2~Hav+W56*?)5I{a@f5y#}{^VaA^YpB{&yL#1N?bE|3Z zh<3axUM3wzdVc`$1p|oHmHLK_w^=M-wo%pDmmkFARNwh&*04~8_0S)*+8Vn;4$9T+ zu;_;1&e6%Uppnw zEZ6$lrme;6vZMeE;N8>kR6f7tkY#X%I)yb2bwP?B@?e0Oz-jO`5Z_mBpv$xdx2}#) zAy;S-rWS`$8)AFjdpURMqfEE`+$yS2ntPeHw#T_~GlX1n9v*4=msn|yg3O|2*l;!w zq4-!lE&$4CU_eD1Pnqw)Y^_4k&zDp!l^(ZM*-#MfOP_8KT7tWZ!LD3=SlRD2h*eC3 zWR9tQtb^DF&4Jk^F_;5JvIx?F`=p856`%-D)Y+f~k#x9$O~+vfug^boAyK&1(mNw7v+l`#1!DfSq*DJoW zOD+RBr1j4R=cjRG2NyycPM|r)9p04{f})Hs@lyYAm3fyw;#HlXn=*W2vCIK?@`adk zh+WEXo+RA+xxM)!N^K^Fny=1Dk3_)cy^5J^lleik{%i$e9(rXPhi0Dd)(dWmN{(X+ zQTjjbCqa9j>&`j&3R|t|%6E}7t%Hd6g%}jRrtr$%R|Ot+WJ5#DWcGST5T+>vngL0@ z!1Dpdo&FYl+fGS9$C4HlVWkAUxaA^h(@|C@u4q6bUtfEE%~a^{5P8ES(I)JLFJ@)y zw{d8*^0T!SfZ$4R_5#(jt}Q=x&dnrfS(MfAN+ydU>Q;=wL%0zKC?h4cC3^xiDAdkH zcuY{Xpa5@PaJ%wXme3lGJ8>PGT8(G>TiwXM?F*dvExKvK*d&X^{=jJTfSkb!TTn+V zD(DvNbuj(pjBm)4D929>0$!L5S{_$z>feTi^>H@k1^^ddqS2Fy$WzrayG5hoD@uo- zs~^h^jAR2`7~sP}@HD}k zl^Z8TZYuZ$Heiaa>{RQ}JK8t;SVbl=+GD(5^X|)E`*YJ)v7c<5LM8mL+K<{Gq{&2> zs%VPQ5^7F;y*|+^q)aD^MO~{N0tsBWl1#8_#Sm(1X;~x;1zy}2#0;_TwHu=O6SQ(* z$olp&u;|^Hma=c?AgDYkMBSurxe*id!Jk<{S%!f7#g9Rdzk)(slc5PNgm<0Nmk$Zs z>Q}|_<;KDVRJnv=9-wK-oouESjm*N(LEiuwM66#+S}%9iwFTLqYLt>>9BMsc6iRUY zU4zPWvI}9+bLpyssEQ1|4D^bq`WrSO;a~JNMinU%jQroBlCg6kzD`7P1mUEf%B{+9 zqqW_Zu*V9vO&XGYAB+*F<(4*nU!zVV2d{?wm*4VorsMgp9WNsuQ8MQ2c88q-@X~nG z0bqlOQZZ)@AtJW8il?S|2BVz6AK{a9jKouwPqYdFlAThX+@a3R(PHt(zYDsV|ApeS z3C~8LPt1XSxx|BcC;3}c(yD=Mvfn90D@L4-o`s-1xaws@S&sfbH4vK=$PgM0Ev18c z1Si#1pH4`wFfHtJMo;Vngp&NswvTlkcQctIabpw#BGUtl_mJgI;vt)i9yx#W8ksb# z1366NLmi}iJqet;rNSk*y_9Y1K5g?EeCQ2yNO)S4o>*iPAc7~=xU_K{{bd;Nkrgd1 zr90HQ1&MD+gTGK!)-xapz+nAQxZG)tLbqhFdC3YNt%`#XAC1w>C#{}^HO&O_ZFyZKSg?sghU8WF=&+Z42NdPV(^+DIq%@`Pr6iBV zhv1*v^=C_xYLvQ7nGRmP3bGi}QPSzWcv^kpEA1tigJp58Vxko+#G!GE&sS`_vxV}I zu?;`|vIF#J_CdVB{oIwlKllG(M=lxrIK}GhgdX#;?lyI6J=p(ot{Itvko*?~DZIeA3`V6t z|JX7=(#%}?n|10M8dgA6>+B#1X$?e=~Y2!AC161UVsq|b8n z-5^F*<#*B84~(|?0kDX^vKiF{Iw%pKl0lM`WH!Hm)$NZFl9 zU9;Kk3I3FArLq(8*xk*ZLRSxA^?VLl&0~3V4p1YKS2Z|iKqI_^;{hSnAFDyC_x?t^;t7A0<(k@L2qN-D@HP~1#1XHx*VpT3Ca zUfG8@Rmu`0(zrbHbLz3^f}8S>Q7h36BCQkGp<<&%AT<#8<_s2sA3q>X1qp;;EhI}B;^{icc(yee;}oGt z0J|rc|1K?j_ykspP~$ShCh*CZe}sUX3($qH&|E(LiB67}2#94QralUPRmTV~^MaCb zy!?8sOkS2MWFL51*7 z{%6x7-~!A?6H*5!1#97j++KcEDp9HQNottqZXDhd^!cvQ>A?3Q-W~3@1J~3zx1Yo= zQnxbV?D7u7G*r9o44o*^6Ifu#1S z#aB^J7;+SfVo@YiJYy@j>~Yy9a@`f}2sR#N?q}^PBP|*z|ME(A`_yqgr5fl8evrgi zHZNL1Y3F>E4>C}_r(1AeH#xeo+K-99I|fZRba@lh{6$scL|jwWgF*4CFsdtqkC1{S ztK8d_=vq-1Fjm9VV1m6|Huw}WI{G=4a!FD0oYvy)utsVz>*&@IHy0BXQgG>dIeN#| zI$~WESRV_;EH^mdxg&wL-uds#=fsq*(gYtI#XERj`@pDfkbU`jNn4iT$#asW$-+OD zSAv!ZKelW;OuXL~-Z+959?#!mClR7d!*)j`fmUPkMMMbPE4QJ4IsP_`pO;GW(s zz7~t*N*>pVEY|e=MrzorMjK9)kQ)0PK0{}<9hKy{Um?#}%AHURLw`lY!hrPIc7LH@d>(B&c{dKah1!c`xd#5W7D7(fek5RwvjKW~i{9Ej!~h9Ms=JLZN?h;+z!$AwZUp*)vK&6%q~Y z&)>MsAH!KxQc#_5pl_gOV5<8^r5}6X)!eA78ET_@$InhthpIpKV2|+-gSBDE%p*=y zFto;-;%NW28nIDqAk~w^+Af4ZUU&Vl`iE`TS#e44)F+D=KA_zOSp@T1CKof5t>D^< z;-);{ti5t!`0!3DeQB08+w+q@LJ{_UoW(w*Y+)0n|@bI7FIbyWt#02iwL%!5-VT z8x5iZv}#`P?`C5m0s=upNozs~m>gYLx{d$0o3E8ujgx3YR=&ENfPcIToS%?*6T?=X z>~&;a?NQJcxK9K7F$(HZ{rY3oC$=&HddvASpnKiozC&__R`dDQKL-haPM{!yR4NX- zUjkCKG!_VdnHI+`+h8pCsYKpGSx&UYmD4P>Er%d|U1K8*=RfvH%Q?dWRl6;mja#Z& znWLV!pOpQ=x3)0VJs7#E(gC@W;)dp|gU09yR#2@^j8?P@l^{>AnF&EWS$--aI#%h( znl%z?5_j@}$L4fV=t`A^cGaAyqdrPvK>XEKHBQwAe?(lw`jauIUF|9$7Wt8UgVmf(hMvxJ1>!dczh>Ioi69Z(Fd8+$roSRp-?yFhDFW(8- z81>(|+q%glMBdqNfp3`QO5t0I7q{c|rQm+oU9#p@% zyr7oLx`PYd+=ci?dX8ctSl4*q#_k2ibuZ)C-&g7hP|KnmE?K3Mg6H^e>bJi6#x7yG`y%Gvx9Qt)4u z!Z18Y`Cq>?7HVlnOk9$hkmZ5RKA#4u%ie-9W>0`;kMSaIhRo@Lx!dH%*M}H3f_6d! zXul(}w4R2tz|BU!N$dblcdBNi6nIsddZvCqEvD3(PG~G# z6t7`@M`8JnFcR8i?7U|zd8IznJ8og*FuTXORGa>bbc5#uBYV+8NRS+a1eCH70fZ_- zl~n~&7HW^E`ORFl^Y;4>-U!9;_ZFFPiKUnZ#=rJ3(>Io;A_tTs&a;Pb_#1QEKB>-} zoK+7>36r*z@){J+zP%|06^XX!jmbVzv9mx`yh?KdZ;}}=p9bY*K^GW9c(U?fD+#z* z#OgKJUWg}-YGkHtN~=#qQcCxzaPVt>U!@nUQff4_71din?<1{7@8S&I&C?I=OFcRY zpx%k#d3q@aIreZw?c{1Q{KQ;P>W|NV+VCtUX$lhIgC zWpg|da1IIyHdBS7`pDZEe7#nSGA|OKaw>lJ@{0nL7pp{%`o&8;^g>O65lU+ zP675-rUoc2j*Ds1M90kz#rOL2Z{83-%f)+xzla9xhQF#uM(mdBr z`V~5Ms06F`F#W}|2lxpt@7k*(m6ti0{Q)O}VMOG^dNji9vYqtkh zJR@jjjNi5kIC)+FoW!SBIvh)wWus82&fT`J({5oxuwATa^VfeD zlI;I}EuC3BA<~cOTGgb({toxKiZZdM&HT0co3k^xgoJhwrpaermbIp>lvwPayF&=> zxVu^xBPJSSlyNPYvQ$ircsdPe(r0_#uw^$}DnBs!e(XVVb;gW31@^Kva*;odeQ3Ck z{xxM&5INA;pjF)6vXkyw!N(u*1)b9=ar4+5AnPUm=eRz8_8*=<-M(2I?$3>HDw7<} zf{izLid!)k*Wh+kcWP278lDbi)>{9AX5#Me*|-@$nytFp_N(}jLtys?{K3IGHmkns zDC~gV$3y*9o15bpx5xy#rX>x);8fGbGgb;hShYhx!y+}uIMA3##uwZ#yy7{msrA8g zk|KZ;ZlFO|imzx@(Mr+d2uPG0iLV_vpq)139DHx1Ym5EBaDJB^4@K}o?bQj^R>u4s ze2|U5Sa!Rac{*_^9zQT4Y>nZL16h?3Ec4$<_%4Q$Lz> z)r?L!&$&dw!Ny!4V)(bvaCYOpY&T<{8_+*%F2(R${@+?WvII#{JZ*fhG~;_%*g`-y zH`5-8{QPArq~X%_<*e{x9Id2pqz6gDj8&_nO-pw+16}Zds~4cY*?iQt@E)D1;0#}R zK@7BFbd1J|O?~lG())fH_*;qUUzcME6&I0!Y`qH3uU~+N0P5dp6&3b`gSR(%Gcl#HAH=%v2dC5= zxi}!K7cdzovkJ^v{Zo#`TXMX9%qbUOEr@Rd=-#*zl{tS?lKFj*d2g9*n@}b{G;mdo z@3(a}@tBf|j(ey}KojRJk;t>TPUy38Mk#Hy{2AD)LhVM$1@;d zLYn(v$kt^Dq8~TS2$G7BkL7h`M5y_wGEjuOON)Ds|4Q$f6Y6YfW}LkmX#eYzsj0Hj zWnx9oQGzQ9!O%`v^JqDsen>$1h^TFI5V6HT{BMTeA~m78vPzSr#<-kZ?H4i{aH{>k z{&9c1V!^ILi$*_9ub<0l)+f)s3D*ttHlBSh8IhstQ+38Cw|QVvvcc@{q{)k-6zg%A z8EA4eoBy*wJo`||JPE?&Jbzd-GTZdZuhvy@UMGu3RrOIvFEq|$v2cLXg_=~KAlM4W zCVmXX=dC!}=5IK?Zx_)Vt5=pIWmubGlY$)!6L52IC1l1YZCM*BEI-q3$G8w3LH&8} zj82uSM{Y!{4f`f!POcyg2JH$^vvn!(jT{?7(UP{c(e*U*TTB+m8y68n-3?^Ie1}}m z)C2V12dKX^r54Dp(Mqkm-(G$p~Q9bpG;C}h%Al-#sjo=n)IqKlhtb; zpuU1O&JBJoF)217`Ow4Xlzkw^7mV2n5u6Lo7g#nS_mKtR{GMdzYq_u(ZTyc>060{TK+$# zBXOql;nVl7P#7E-IJjfED*W!l^@PR}-^!5;^IM%J5@$=qaMxvjYnK>npO@fI^t6%B zclWB!Dvp+-q6rV}jOkOIpyTkM+GwqH=jeOv+R@~)9YZvETVnYKC=Xt&Wz}~0MI->m zdJ(xKzkMyQ%uT}Vm@A{`-|T)9r1%R4DdK?ScSY3mx{ivc{1iW+yfdKp&3eDw+(L+D zZmS!03#V-(#}B$HxH&lOpAwaq4f=hnbQllk|P0 zml~!?%LTWeqCJA<-fZekvd}5!;i=Ze7u zgsP}#*;_&zrWQQRm)}^j_rReV=L5>sm7P&-{VUj^47gssAVvu7@?>eh)L%QFpp@KB zKJ@LkvBESa5(P-9`yfzsJ&z}+sCbJ<@dqtt8+9>%o0*U;(hVMEHZHZa4r9r)C zMwFG6ejla?W%DFFJf7ZBA5B$-h=Wacz=EL;ReJi7_?n;Di?V}HCuM-U! zliJxyAeN7Jt%$L7towBUj{=)|(t=QynQ5iuwL{o)V8nI;PoA@sl&G@BXqw$uDyFDo zOX%{{1CGxbp5O%vuW5c87X|gEhW=7EcffU}oBS#Lf%)RZT}Mi$Qh(fR&7ZOP;i%AH zXO$wu6^ll-Enj)KKDMg?#M6XLJ&_a*ODL%JKw>f^LcKv36D5yy_mM4n|1?t9Y}=a%um4XM5zTX|Ak$w6nezOZ2o^Jq(|^ahHbq(emN_5Q!z8#mxevaH9n25Ov>?Gou1=>e)JdDJhcxx-7)|8mZFm1DCr^83T}uFa?U_P9}0MG}+RI3Qw&_i~sL~E#*5SR~K-5I5 zCHi;nNER0=Xi1K53Y_k{$M9`Zy5nsqCHID(?r~ZspdstjV$O0ipIp*sL$%92)*ss7 zI{7qBrvX8~=uZw@t@3aL;%JRxEKqPyhh9&u&|e}K>?rBi(G&!z&+z}=2L08M-9kL6l|L$_8&OS zYJoioNPCkj+<^9>0PWKO>Wcuh2L$MTugd*N0>5+iLhNq>$%+4)RNAbB*yONQExDsf zARZEkcsDG^IC2$qGnTzp{tX1kLpahSeoHbn$xg4OrB;Dr!CLw-I@^LKd`PQVWV6hq zE%Jr4rp`ZB1Js>{=VmjI){v+2?(1&$?>DY{7$=1r>0o@L+ZYf{4WulyCR=F(hzzSJ zy)%U7TGk}aDVAe8g|bq2)`|EXF4_|g*|OjFy=Qn9tJr+PCTM^A?OHA;QY%?(OV`9M znp#ayQ|uD%gc4kEeHd;>)f?-dnmDngNGf_p%#g4}FHDe8$&D6j+vj2fd4$TCq7ght zqeH@vh?*TNt`oB(uHof-(N*=*k7tK=9K#^FM3|rapB$=H!nsxcp4XS|)3kkGM8sig zc_$Hr$`|vxqW8P8Q(;QW#YeMDpE|!^6_XD<5IRC>>oYd_&Hxd^4;ULF3G{>So))xe zI^s#tXP9QWY$!0vm3gaNt21GEEc|{*lGp{Iq|FBsAWu3v)v#N@v*fpYzi68Emj4(x zlGT&E2$OJvh$(58H9b^xfP8uz!XcIrV)iy)80CDCi9V}j)tI%iwg9xJ6VeJXyf9o< zO5MP-(;`AO3cpZa9u>?{I!NaN>DB~1d4}+6g)%D|mas9oR$x{b*)WWUf;02dN90W# ze0pG!qruxDvk&@fID*!KObTCE`^|r@%;O>H2s_!S%Fd+cg>P= zCC+^t38#<~jlE+e_rq$qTmyRps55T@Q;|r1t4W}?xsI=XMzd$osJIwSHwx-~$B-}qOlk8}Z#$7{Gm1~30+gLCo ztsE)te~m9?A@IW1`r9kvdTamCpXDufD@#E4Jh7e~6+`MB>(;?^$0lQ5#s*9s^;Yl- ztb>~ggvss8Vr!h)C#HC@|?kbAa|iqE%_E5a0tzKxqkj1NHxmQO4^3f7VeQ zR=U<9s6qs%_S%=1MqG@_Es>D4{4pB;EXAtApKlz>g>*D-fkJn|ty;d(I56&BTJCxM zJhMaLEg&%c8*%_As9NYo*Udt#Sg)+_pbc+1SW*gPJ;Tk*Vz5@V>@-XxkiK4~5wo9j z1I~H$`;H9fV#Hi1F)CNer!@R*u(~xAwxej~=HRj>P7V zU_^w$K+$6ccI_rK&L82Blin(f91BlbplBK}G!dvmwy(sN$A#c)KKKMr0&TpN4D{VE zeYZoM#q?}E;XQ#M<~U;k&HV_pOfKZg;*Ltw1ScW4IhiNrLPNc(0MMAKazY64KNK=c zsI|adP{(+Qq2KY>6uljUkF~1#6TWr`>7&Ck3`e~g)Qk}SPSlUslM|3dJ834nqM~59 zg>{6y^0jsk@&aEH#uE1;v$!iv1z_Qjl04udHRaa5ds!sJsX*84LGUG6`25V)t<_^) zn3!bB1NkSFFrEn}8u51~DC=f}XUVbKc2R$|PTvGWl2We5gBtqTQCH#Idw7}FkMsrH zeml~OzSgUhE?ZSZP4O3V4i{@mfG(vqzk&;$D-I}v*HLIZKBZ;PgM~y5%!2+aM-7^= zvjm|G^oY?#GVu^|*VHf;q3V`gRDG)l=Ts>IzcV?qyK_f zq|(C{?uO~`gB`&zzK0DojH^pVv$8yt{{<-T-+nxPuSy%&O%L@qLl7OEy%n(*Bx<;` zFL$|;?_z{>C!S!+#7UBJCGoPBFFyYTxC~|>KNX1F{YIu`zkaWMfaCDF@3!)8Dl^mb zVciEZ;&(VV@Oec8Yw4*$M89ZL37~yLK>Z1Y*Re|s>gx+FYtD8|mG=*GD-kk9Af!SG za71j#KT2*@l1b;AwO|-uQ^h14_;AL6@)7CdEZnG

gm4t3aRqJ69m7!JaI$B$ zI3?*B(HgMNg#}KXDodq&xOT~Nh;051#^0}bSyhbg-SRz|=re;nR7Hp8e9jD175R6T zQFD9m5q(9w{U=f;7)rkcyMRLKr{`_T3v0j@aA27$csFyRL4(-P|Deq!vm-m6 z#=@QXA%!?d;w5+y9*!l{)$h^c5;%dmWya%}QZlYt?H->&&mN+<9@5$}wZzuy>j zB~AjpCcWtj+vNp4au)5E&mow^F-Z6~Ur_3bTcIZwy;2R9QJFqZ4WuYm29$)Ci%3mc z5oEsPBT$7`{?aBfxl?|l&SX)>fMT3;G2p|Y3#GDIrd=Z`6G_9v?YU`S$g(TdL{b`armu4(|zJ;$yN!d zzpG+R%^7&*p?IT;F_)U)1lbp%&jAfal9f(g`uw$WEo0*-WuVd53=! zjSG$Ue4~LTtu)GDATqxG??EZR-(R1>K?ay89lm^v&c`}5#PI^kclZfNZu-DvwHwqw zU<3^E!~h?(%}^E$lp|MW5-2YX^(O2E{hgS}^kZT`sRUMFod?us7&TmN0c<(nd9tB@ zn0m@W!Hk7IM30|KufNFqF`KkGay$VnhCseNmZP><{W`Er2B<%|Qj3*$P30FO7_E?m zricxPbeFYKy$)MhaGE>@DOC4^HIImKTkJ+H>kkKR6Etj8(=GFTGv8ZUP6Q%Kzqqve zmAjx2rC`QW#9xi?TB4WvUcw*G3?CTsg59hPM+pDbSlKwLQ9}+Hljmlk<5=T>|G^W)*V`Slt(;+Bz$<<3nA zb(MpOMTsn!4p72seP1I)Pk&*FAcGRjW!o{8^VSGwFL0uSRa-AyP*nsTaJ1YRPX36x z{mHHtX-n~?K{cSg<6!a`n^l@zhun!!giUeUwUSDjT4~2W@JCb0r5k61RCiU_nr@M`xe6sKv-3ne z&b2ndRjm-YyMoayu#xsKc66%luB5N&CfP<#)R$ zB3PmCRzs)Zph(?3CB=RyY`F1?xMVf`q4KCG)W39KFc#qAsLp}eQ~osqYHwRCdIrCn z$Uh1~(K6Rin-fQx6r{uR8{md)T4f|ulUczKe>Bdmv9i4Cb zkq69M%N77NJF;i!&j(ETh86`&uha~X4iUr3@-Etm?#_7pNmZW$|9bJ5VqK=l^NWdY9 zHo(~H?iC+WheN-}vHg}~Y6b11Cq-ExQ6YmRTk+4|Kf^q#(VOY1fIplm9pf5iQYja~ zFwr`&vEg8QFj{5ULof=iVz`&aGi9+!F4fgEG65Hm9Fw2S>v;CcTQ<2aPR?0@`^NPPi-zQ+ zm1(oKMUg$S4OLQt;DRR0U87JJer1NZh3xllK1LmnUV3=0I7cHJ0R z$i0``!ZXZ2@p4zuB?HnSZjrmnYUm?2!RohcOtk-H;ZeUfRuss03_%XU_w3>NJWmTUnwNdW)OOl|JatK*6P?s|{OSi+-xl`recbT` zBL~a#Z14(Ru{hTtC^lyi?6cdBAKq<8vpwSHo1)K*Lby6gEGh$dPB%?>!&o-2|?|$`DnIyl%A9s*mgpIkVC8(sb)dJhzLUUiNtmBE28N za3P^-shX}d>kw+Ko`uLoa%psA^ykcW2RqCp=B4A_AFGi^{346@_gpf;qC_sXH62X( zO^{|&_%nX*<_b>NK<;2Hb5b6NQ2PLE*6h~*-{3^_GOrRG?IzSaDuQc`*HF5p^8B*d zQaIu-rt>Wo<_SRK)Li}`8op85_#L%S$durred@qF7mWsVEjugLn^}{IwmyX8mZ{3I zH-A0K-*c?KhTR?#Ttz}E_lQqw2Q3eZf*f_jrr@oQm$M#~BT>jw3=0^thv1cK!#UkN z3~(Oq9PYdShjZ}-MIZZIrNNn6S9~(?s8cRdfgLodXUHVe#vXN<{o*ks?ei@C|CT3g zn*Vk^+0{3?FQMGHCL|vV*bE>E$J1c9G2cGozS+M7l&1rfY8*o8%}uZeLff~Z=VN~M{sFfNnx8PI-ET5g``tdziKa-K|O zYh|SIspNZ^HcU|to|)T9gFk-~KaF9H;7%{+D6Og8H8g2iAm;z8s_r?b(HsAQ60z7Y zU*Y~!Gq~T5&`w7~{6SVSLZueGaZFMi^0D&vM*Bapfcne<<;4K?$%J|Io#%r<_;2wm zfm7t9OM-OScaEfp%l>9B{gs#73s36I#I^oNUYsvCH}4#r(NvSN=@-RdVe0N0h+F+j zG3U)>eM86MoTL&c_M{VC=;(i%Lvf}@(ES|(1QMD?RyDhI{O`LUYRCwd-=AP z;As%=OD?p|Koo!I(CS#7(P06U%yg5~4o7B@%%dEs(x~Q1COS_tFg^K(J)DR7HApFE zj3BkGXloAwhwORbTL8-%*W=ZppGNq>D7D#TD2vk5i&>=ets|xi>3=UeoBpzY_92(| zFG818hpx(874J7&@-JfkjIl8p@S!^4VDHduh_fD@6|l4h55k%g^_zffw%K!(cFHoT zY;J=jLM1a`nIy_x1+VAXec-s>9=0lu1R+|pacy`Z!E*cGq;pR|;Y3-va#nDJRLV@U zQ2H{&TB(~cv8E8u>D1w77(qo(1xFT=(`{8Iam1$0BuN;R^gQ!BDcxI%6J|5az;D^har%k!1)Q;Ujhpx$-jB`A`&lQtP= zfU=G|we%u5Lbrh#T19a?k7PBT|9waD$tzs(u^d)I9QzM>ULPAs$r5x>RRrz4j`RC% zZRORz6~}RrFmykw55%5p#dLfP-3}YJdpNKP6KQ<3kN^KIv5dV4FHyq4Z%7PBrq&y# zbn`-2G}?4k>LVP3(iL-}r(O4;<$&jNiY0wZpZ|*&#I5MWlF=CB%UCl-WDU4Dny!Ap zfQEcnuD0}k?|6`PK$xX+Lus!k`(MVzWv`Q2p?I5vaxzO5Rs|4W;CU#Z{mPIMRY;>V zt-Pke3XGe1{`ydMRCY6aGki$JzY0i34Ns7+?nU1cKZCjijIah=QAvREfc`9bM)U!P zqVjReiLkDq{HH{JyR_MQY@WA}^n$CNnGE*4Pn$n0r3231nn2Q(TZ3Dx$g*GU{;$ZL z(<53r;|9&AmxhL+aCSg-kY0_vjtLXOt)sqH4>T6#mjl%no|w`_g8Q z@d4k5<)yq)y_ybe+l@<%2G|SMMC*FlWf5x6*X5fqLCNtJL&Rge<6TZYDHPYCqlni6{?BW`?+S((Wjst|uyM(50i-w5oX@a-X;)&D#k8xgMuPFr zEJ|qY=tPi2>p&1W7dPvv6@dEr0qqeq8Lt=}-8e|LUZa)(q3>vCxIvf3hy7Ui!0Rdl zeRm61JJR!8XxK>#=f(aBU)C6FO6C_49%s_g!;)SOWlS$;aEj9_ltzQ5GhJ&_*0q0c zNEYd0@?nSnnN;F)j60hyG*Cd(hn4ly6v>mqs8AZ1(23yqw)x;;$qr&w=WZ9n?r}!g z|Bz}(BWk+G5>y`ml+O*2jzCSX#7;_km6fWH_@R!|ev`52ciHzD-XBd<;NPgo8lmTj zvw*DBiNUVE*NJFX3=b5@Xm&A4G2^T0WJyS)bZH4rd_}^tl+{am-qsI<u;{vE7ji}$V z{$MmXB&U|lpcg^6YZ_3Z0^1U36b4IG({ly(eCbCBf}Zd6(Fvoqd$7lM4>+^)bqUvQ|f@ z8cPJ+^6ALB_x80J_%Y}&(pz>OGJR22%0{|j?^+L`DTMkAnbjav4^-ua{8=l_dZNth zE#u|vA1usZmb&rwr44*Mos9n%+9*&i9vQnv7YO_J-If&z zVRa;`QHyfMjx6AU%b~)0gtw7Dk((0{?dvjFBSVDLxjGd5cOj*47ERu|q#u0#P$hw( zH0|aP{C4cG3Uxy{^h`*^x#{wk5J0G9$M9EQyV*JkQdduoKTaVBB}&wGzZ}zRZo@M4Z$kH zNxRY~LOirmzC8NtbE*W?IARM-JCmZ3%^){tCkTZ_7`*G6*9v&zzcM`Jn}T&xbK>q- zK$4UtW`pT+?+Hn7YG}kQ5Zp!_JbMj?49x^lD&Zk&ST_FV(i0{I2ri1`9X?Q{mFu3x zs&pOYii?}yMEpc==I`dHkYzhX)_V<`KaLCT_^S28G+arECh-J2&s&GmP^T(@`X1YM zwX$l5UsJUPSu==r9^VKaFyWevf#O8lLZn20IZXZju-~mC^ar|3o|$RojI}FSzELPN z*rAQZPv`JE+)3Q%WF(FVfjZc4C5Gl;y+ysMY&c*O7i^t6GeS@sJ=|)Qvr%d`Q+N);1ZL%7>F`)2z%3#uc{eyN+cf zY!{FJjR03!87f^Eg#>*pBLrfd!nTk-?dm!D3f=k1`x^;RUv40^v|E&qKBEmqx7cD3 zB*n2ye_E|zWgY)xd**Tq^xv?+I=R}4yE{I#k}BrCYPtgAAZQR6I9*1qNS&P4k!}H zOLN+w9?31g0@@p)eHZOO#qy}Lf<8JW4H(GFHN3{L$}dTi(3vz;*B!g%YGNKqn*zEq!^bgk z6#wKG*@Z#}(sJ2651jD}yRb2-HA3g{ptT2A6|NNspFOlVLKZ^n)Xk!mnXH46hO#XF zt|*5TGu2U^Q9OImV@MP%g($Q~?R-1p8oe`CAfXP}8%cFSMZtrFXrT7vcH;i;%RvFO z?^b2>=^TZ_H9Yx)s0*tJSzO_VYE)0LxXTJ`GP;SRcF9(^3U&5niJ3$F>u=`>G(ww? zo;Yq|#8{DktMin44<&@Yh{VAd(&zs{rdIv*qY=zoVs2?PxYjLe){@OXA-w?m_b8JM zC@=pB{hsglsGR>Gg~e;ae|oXi3TU!=#ab!4i_xVJp5B}%he_v#d3se3hAJOU6Z25m$(ysV z+{Ozv@$>1@DipE3#p$TtNcpetgj1BIg5fVKWz(Meaj*-C4xqh>TCAC0JkU}yK}742 zbZLzsJQTJT1e7dGK(|!eid1d*Bf6;q!(C1EK>+;6fmgrA&qpX z`s9s-CI|$~LPC-+KZ;vU!=gX?`8~aZ6nD+kE0hz=AyKHEmY3eDwTnks_qSBR9_sVN zAIE7u2tZw!QCRB7y?Tgl#P7g7+R@9;hiL9jA?KrqoePB^@4A&N=H8@tKCs5N&^}8i za!s16Y6dzGrxc@Do&yM|`oXoSi=j?(^{Q+0WPdtsxSSi?f?Grd-xXj>kHKBkrVToV z_}T}8X0_^aXr$Zr4LeTzFx~2+Ils-|TWrK>U331# zqA9K}1dWwa$0I=^vW!%$@pqQgeAu04_X?}-x|)MS*G^CLrYd9n(B+%De!anRcJt{> zhiD7kT^zrbm|u-PbX%;J7sr3iMO=o83h7=~!zg!#?W#QK#{X<(ju`!e9Z2+TNCB1Y zOwP90e5+0BoPW$rV2jwyR!z4$z1+xIR)G1L>iSBtrzA4^wX^)Qfo2}$Q6#ouN%f3h zEnw3%+&WhpQMk4~*Z-%zW<{5KT#7Th5(BYlVvV+=B|^Oq9Y-he_PGf*F0|!=9E}YcQKz+F02dNNSd@ZNK-$blV4DUn4>F`KktoYJtqIrk zy5dqbrMD^Jrc6+LFl3zce+bs@9hv=Bn(MpG`YzoW!%$uxz%oaXyp3|mL$DgoQD6FR@@*6 zL(0k-)-t*KC#Ra$Y=K^4;@_9AKm0oeP<7^)(Sk;&1yJWOrfIt~$yRyzCNMTc`8^ZJ zR{^&&&1uS}sGIgSV^{v?Wj{sX#Le4fNn~p2&Zo%a;C890R9EY{ApGMFOh!0F!*F|f zkbSdD|L@u1t7c@;v3A-kJN$d?D`xz%`O!z)pzXQhuo8<|cs1%nw(g>0Id5rxt8VZN zB|)6@KUU>QijF6WUn%9r0_uYT)X!GsBXJL&lm25OuO^rp8*Pxs=lBRLP|z*zg6xoUB1&&;owp|YGk%#=bflPQCu z1Pj4VGx;5f(BOY0cAN;VtU5P4oYp%H%)YguyQQc1Y&Eb%Z1QjdhscN`3To}MIs!2l zQ6t(Hm`ApJhCeOkp_{c#P)$3ebi4|s`+4Liv{C)__Jt93IC-HlhfYX5P`=(&W#f~s zPiW7+)YMXXYv61JJS7>3pb;j>!z@RnEIWH%8dtN-`Dces&FtCk|IylF-Kk)t@A)v< zI-|?nh3T8yZ3S6ozZG;hdTTm(rmEeprmXt|Swv(;%A;+HY)s&iT%O`f^`qem zJyVzpA+nOv%^ z$VaO>L$iqOVYuv$F*<7;z$hCAv}aL8q0+w?sJ!>4hs(Mf+$xDn?1UiWl zvagYu2V)tapS>7cmJeDs4hQ=eW3Fkt)1=9bW@nq5ss56BQ=4}qtiiY;@lH&FC<-vWJyJR(? zs*yc2PBqct;3E$Fv!|Mj>7Dr&zS|3ELH&@pP!dA=AB&I~&PM73|4d<|{5m6(0di4> zHXHXndJaLt*_CLq(t!~wk<9qhXP-2IMoDt&3*`NwI_0#$7P2u#>l}n`N2U%tBiO!6 zVmD+di_=7XM3cTaf9Y%OZoNNmG43NdMhf7-c|8_R^~i_A!~&>%{rzd9y+nF(;5Aiu zivo2;&gjn6=!YBUZ`Wk+jm>=<0Z${rr!N>^-l4`A62i=2^xr)7#ilv7-^KaXYuM>* zq`UP4|FQR0QFU(1*676Df@>hS2X}XOcXta8!6CT2ySuvuf;++8g1h@&|GoF+-gDaC z>~_*tTWcNW!+fkhs;XBX^^I@NQKasPO`P7CG$;+O&Yc7ehohVAxxjiQ7>UF}J86&o_twnK~P ze|q2Me>%@D8}w((Y$iJXXU|DOgUO@Bc#84$^bBTM5J`s13s@(5yTkRFdKg@eNloEQ zA^WQIQnwWzx=!B6N^Ie+het`4Oz)Tjymx<4pTnv5I?q_KZ+KV-@l-Dn~PuE|C@MI(~OUj^)+6B^X z>q|OM?!u}t(^a~pya>9}vD(CX=A`?Q;2%31(izm!8|L+-Q{5f4N?Vn0)fBv zTQDP}&+G3-!KYj>{Vd=53T4|ALRfE2`q@3SChs+`JK9MVm+hf&-WloDq5|enh~icx znz8V)2TMn7N_4NlL(k&uUqG8-<6A`;xwvHc%d856@w3&X>k^E@>4`#3nNp@Z;&Y@n~aAx0}y$`_^FdQZDj#b`fy%Yr70kld~&U3+ZAa<#x-^ zh++1Xa$tw}8Mc4Bgx?Eg_JPZ0x|82czjG4t>G-KkjTV>|2^5 z*xw*f$xsIsw$`1kn^t!37pZ>2%luF0QU0g%9Fxx>)57h|2;mV!5!IRcX@0gn&jJ?R^q}A4Vi;FTv`eNolBGoB z>{hen#8>{c_$?H!b+$LbZo4LDUonX!+R0oo{o0VZY~saf(FK_X*b()@&Y>F)$^Gd& z{2WiuM@6G{w@=wXP%`_-n*;&36z&7)(s$yuo^P^#fbsmpG(!55t-Y6qzyo=)ze;eJSu5-^Ctwv+|Y*H~U$H7kpJ zWPZuj*%#yhyD^}IgoFIBi^RW_&sa-#JLid}UX;oLiyFEM`7%`+9?Gekd&gygBQqDU zN1W_Um)b9@>m>_X;&(fDZ~=daCbPAK{7ssRZsVFek9u~Y7IqgAG82{5b011JK?GGY{Ej9;%RjoJ9{1h@bD%#jElJKr*(wr=|1tt?zet^F z2ML}64*NY@W z=0m7Civi8ZnV`aBT6dRpj*HJ}-8tV6@7o`y|LOeGyxui<@+HhaUU02g7OB86c%as& zdHAcixe1C#I?krNkci6m|%?hjw?aiW=o=xMPqYMJ(kYSDj6d zYXyEW89`MW>d+f|#QO}yU+nTd!3jjqHD4N0fQ`(GbB`2*?6D00X58(W=xkW+R55_&qA4QQS7;=kVmPlFDH*Ild z7M((w>;#PytT7z=*cxh?x>LN)LR5rBQE(A?ut1g<_jSUjfDjIA3Rs)-vGFK3_V`aC znR-CAD>VV=oA`J9wbUr>6io=-0FC}%*+7l0kh?UNSm9uBPgkxK%=lGlAEh2X0vHn3 z8gB5hB&gDP(!TIRDznvYDq9H82J=r?B=M76Tqz`!pOUHb2cQW%2i?H2%~jxAn3|CM3X`tfWb~Jt>gj$OR6UCaT8R`5B|{*RgNYH#G7Lhk z+Q!+{?GYBh+)IU4hN_P@VGtCiMT^$q63uH3CNh}gp<^z>(`{2+LVjp=Q@=!q9O8EW zz6a9di1SKVsVSRY8dH<)yq2$pPhrGFf3_}#%r^8H>+o0B9$)H}#@3E~Lvw``moL=- zX{<@^R8J~+w6!zzMQqB}0>hHe{L9)U;~$$|t?Q|{HC!NvNlVQ2$Tf<$I%~6D(?+gv zm7=V5^FVH}fRPI%e-4yYUWVxHt`}G$4aMle-rmdn$`1-W+Bro<+rYM%m~q%|K1z?H z!CoL}Vm7eO8aG^udLV0dSQ1dEJ)Obap9=iG#s_rmTwFPTA+NXm^hhPGGnS?!ra&b&UO-0e+uw`)8B z&cpzFf9wY;$1cYWkI5?zS`ag$OfGieS2-}eu-!%ZP=w-eG#{O0aCBEhvas{{C7n<) z8)F)+f+Z=tH2ugAzRGKf*0O?kXh{~chSnqTb5V*x+T|J8LauELTIe>^IE{eX{c(q~ z9xUzR$L8W52uuS*Z}bwHSh~foUK&H+dlWR4{BUr5%~=zWF%zfS(4-zp(ko4O9-{+l zu+2u`?@~%Ua($_1)t=#vtVE7m)3#H4v&|$qAC)x8jX{<(h&G&v=#ujpqGd#rCGbm! z(9Y97k59B*Vv_i+OEtIitfy6xpHF8LTg=V0Srvr-+2h2+GbsI3+UW z;eLo@jDiFDz(>Q?`;eC4W$c4bpy__Jx#o=e#kuGV^dN*5Qyw z+u?&--Y~33^_V|O0yWsl+7ss7Lv2N|$u+C>ENuw_OlrvS-s4O$KV8L*&~)h`qdKwO zAi4St)Q5Pg_K0-tbVB5eNbbax;Cg;=j0kggFMZ-jk<6aw4{?+e>eD{6 zPqaV=+!3W5d2_@;8!|#w@TR3f?kmzi_LPE+mIyFn5!Vt~SrGNnoZTUwAi<)+Ey@)5 z#>%;0cDKMN_o;*wn6gZi;K(Um7~vB&p_5SE^VM#Ue`8u@>Fm#DeD6e zYj(GZN(R8WG>JMtRRLdGD2lA`Ox|PcxBz))TWSUAwh+%Kz&5F>InD#I<4|iLAS8h6 z3O@I8PcjBo2yVId5xttlW`{Mbvv{Yw2JA+s$^}+>R1hGb;`WKBwX<1at&0z>b}CZX z5dx&2zOKVrqjcNOJ3aPEb=ObwVjY!cFG)NK&+x~wa)1Y~5I#}p-n4S-rRJ!bxBoZ&`dMbYQ&kQHtzy_yONc1R z@%jYz5<=)6=vhX-8+dOAMlr82-0eRmGQN8H`aay@z&xr67#YfS$fE-z4ZE$$Twss1 zy2JtOm0bHi-6Z=yHSPD+UHff77gxI09nOlZzrNsn0s8R8Q|Fap{&3r2&9oh)LEe`IQ6U96M8Xv!@xP_=JNu%$dCxDCl+K0Fl=9wP`VDAr^2hyk1C za1EI2HAV$9Li-5g!cBciMpZ}3o`O}xs&G}Ju@R8$A_-wL@{`EOmTtZRJKC?-!A)_P z)?CF$_Rlq;v&MG%hy}&nEdD9A+FXDdmCmc({ArFVzdd2rr_&D?j3lpaU+Mhy&)ojg`4qLj4`e3L+9=EM64Xs)o3i~}w^&v2 zpC#r`$gY%1Nk$a!NF9sl_#=?uu-GYXp<4ayZyk|tKq(Gnh;P#x?_shQk@-!MzPj1r z#$HtY8h^z9DXXngRtJQ?dj^-Q{j;d*Cm{yPHoQWq^syhqPmF@i?RGXqlu$jmBc133 z-1BmSD`Q**I+lEpd8h-d8K;MY&yMJQCtt6mF(z5i9aNmO%$x7iN2Un9f9hzBS&G88H{)61;DIP%mwnOoC#3+zHOfDh>iM-Wl#dP0D&e zMkPLsvM0~?d8v;qNM>;ns78?y6P-Ta}?iT)p=_lu#AY4?DqrnKFV?6Z@^85u; zYvsh*KYqUB*GrFPWffbFH}U+bje&&$O}{wzUJr;AQ^Y=-;g{GLsp`b4&QU|y4EIAC zp>(1ajs<(A6zdUr`7r}?Ww$COR~##UsNOcn2Ud%!%+g$@l`9-JLR_+(FO{hi-B$sG zfDREVxC^BIx>w2g2C{1-KfK@#D0W(~Y8VQgxp6sEC#UgL*A#VgjZeH&SDIYgnwojd z(jQu`Pn3#K=Nbg^kvoD*Gi9l(^B@{w2icg%Q;u^y2Y=iFQPxrJqoqB*eB6bW-1Ja} zejaGy(zObY{vj5&un}fFhFTGjP}7Dv%@jhG%)p>Kkpgbgkh0t#_!MZbOkU0xG)6`p zD-^mVojApqTRnmtW-@6C9Y}l;86+XWX;8m5(pNChXzFy+hV!neXW>(ipe=_ZeOb~M0fkBKV`fN*UnUcRUT7$CLcx#C)f&OZ7&Sy&F~F_cjQ+_XE--sJ(gaTKM^<+IUh8qw!pdT zYp%c^o{VF=irS!i)2eM6J3olcGqJOpSpbiB5 zacZK;I?eM$JceY~IPp{Z$5*SlAV%znkvcj<8OtH3r@%Q@Jnk1#Hq4yZ7AGiz@=^;@ z%Pku8h7cnF6L`Y2-$MH;G%L6tS{41y*q8h?)9P2bwqB9aef4kY$uhN^s}pHpM0(<=4c1uT z8K1~6MPcJM1|PZn>TksRgq;z)O+jO^snmU1PTHAiZv_LMbMfop*);F$`%c)rL^?1Vw@!y>+SIK4wozl3hiMmn~P?=f~cRd2rE zACe$%dQM``y)p_Bt2`W#lE@-87unSRUL>M3fUU zKqn7?SNH;7Jfawz)PoO%H0fLst|Sr{;>I@lkzzMo=}}dB3$Kf_$f(fRmIcH8mGkn1 zTh<@)GPVcybp)Oqd8WVnM^!J$_hhNvB5ajSO?*1dN{#DD-65_^KL6A1JGA#h5}WW)`dDQeB=tqmAg#OLh2@XoExq`B(E8 zrL8+l;B%&Jyh%#3roeT*TluOBvDI-q=~HQKAWGb3YETPhDXY4Ix=h$qdxkE_nONlT ztFdVxOsixGI>fidcxODSFupUWW_hWf&QNcpU@{P*Q@oPvYmL!D@LxE}W1WyNrVD9A zEGlm{SVlTLu!9U!+vnNuD^JCE4%|=WoVI?oRtKvb$%G>scUd^wOSd!u>U2{xA8jmx z!258&TkA|`f1?!3nEdM8w>6eU#p2-m&CfJb@cfSD%b13iJU31$tDgtU%Sc8T2lhQb zsQTDmeLiohRLPw)spcN10h}78wW`Y}37Pq(nXY)I?XTcJH?p0#pE7eG$#m0?#FJA$ zcLH?^_sz+O`mcun0E?`#1{0J4pU=-eEdJy-7;LMY$obLaVzdUN#wK|Z?b~;`na(Jn z(g{bRWH&3!{sE>%E#ZSG)}FgT2ilWVtRS}Zv|77xO3~@+XQ=8BWwrqAF^>IFZ39W< zM&fVi!CGG-%a?n`n3`Uy5IFlaEEgGD6Q} z!^McUPx=1p=lwtgkIvt^w;;-D-t`nje+1b1G`L` zkx{{sm=!u)LxYUQ(XgeMoBRncT>Q7R%e!UFyY;XAJWpTMBakuE^Kf9l(60AW?87!9 zV&KaFEq1Z#bkf^|5koCzxyv6@1m}Lfg1lXR0K25)Ft47lo|j)?29@9jF?e7{wG#C4 z?1k)7K8|nNYw`|LCSZv_MRo%R=bi}tk)>TW)*WdE@3ncww_|=l@O>W0t*dd<@s#g# zadQw^dc!5Ysk64cY6V?W$4!^3Mzagr>#}i4S(Uu_-~k%^0r-}xEWc+- z+z>y5Rbq7)d)v_2+2zF|3(k#H-9hqb(}+X7UbfD{&x8BftC*}|Yl}%adL|K@WbweM z{h%|tlk6Axa~zb<9*iCER=$}{ps2?LmXJ$RJGSkq=v>+?Dwp=$)P@qW@U)HtIV&`? zvVjR9F@~A)9qt`pR;Gc+tQ;H(Y>fe7m2^67NOjq5V`xh=5tG1eljR#hQnoi8W)T9= zHH_yG2<#txeUOIRdm9^|lvOlHtKD!A3|t_O_lk$hNaiw zMPiPB(sdlmXTDvRp&P8cB9WO@Beag}ariV%PfU3l=!T}80=f2qf2aJ?!@>JAafTpT zM%2e@vN{1Iq1VH_zJc-zMt>eRq2rDif=ReDZlFD*dy+EE4DHiR(3|k@19#XbO-f>d zO_2r0o~hnPFdJaEZv77-1*ZF5C8+DUtEt1IcS%)UdODq*n1Ne|;jE@P8*tOQIZuB6yhifJ?b3~mbB{NffF+cgl?v2ls~GSUYu*ub*0 zO(U^58PqpK*#vHlLeGDB)DKf0 z$nTt7)jp30IdHCsV!;{4>u|m6SSQ6;ZE04Z?6XDAWYgGV=~B_@>rYMk)4mBJEeReD zz)b1_+1^ij3pN;1_=6p}A96zN9Pn&$2Dz<1oLMS1o1R&l;n&A60y=cx4u*IM%uoFzU~XvzpHF7>fjKxf~oL~^(<%pM`Z0v3@Rb;K~d)~&V)M_x=K>S-6_8(o2qVf^YZ`nnw` zLqE=TM2%Va6B(b%FcieQE6k$fFZ zTZ+Wp0-n>^*+WJhkXX)abzTBU@O)@~-?*w&^6SRVD?-3FOOUS6MAd z;MgEy^mJzEtXa*ip0aOfk<>j(yXGm!Q=1Rr@(m7X2)S8tk2T=itf*AEqI%dVy;lq- z;L4MwNm?qR!|W92`$5WOq3dS9XZkPyU)GM6z&7DGN#lsu1}$f_iv7nEWwxcHS=8R5 zue=fM+|fkm6uKz^d)#AGET>ExuYuhT;f6rjTz9)G#9FLj3a*og`|!(%?UzE+p^Wyv z!f^s<`=RF5D8dHvcye~#lDWF9s6F4YC=I(0Z3n`qBMVS;J3gI;VRO(0)I`o1F%(1! zLa}mqcGvWnM+$@=s7_T?*TU&&Xki6hS*f4Orsjldq0pdNQe-^v?B&VVCGVRT@SkZG zQlPA?MY7S?k?QlK;l?C%R(A#-Gv=;9Wj4QfkIGBI6-l zi2j=3i>ME|G27x^#e`yemkUEKQYCeZozj_41{+9?{^GD0+Hfr7e*dO|a z8X6-;-Ysa0)_%WQ64D0|MtX?RpjI-^(W3UF$MspXuN}q2#)IwprS7rNSI6A@E?IB-Ap(cHQL^i-c-- zD59A|+xs^Q)G26a#f)M= z5EmG=Gq0#)i6R)t<;b((imLi%!KDgKp2nXeiF+!d`%4-n`$Q~mbnnYV7fv7HqK^o# zOITa})|sl0%i!(R%Khp6_zt51&3ZN6?GvqlQV+BoM;^tAS(5|;MUr>n8L4oBL z++8*wC;4GJm3>{mKUqU${<_Y}dzUj#da z^_J*8uCRt=9UQTy%J-+QxMIE}VT0hcHY+7Me5aJRn5`3_(1m`K{4#;Z&U)9u6xLGi zMme(mol4&lBUiU%L_ccQAbrcQe(?T)ABl9K`CI1n6Q_{xP8^^S`4s3t*aHeEXpEeT z6&ASBmsOTE?PgwX-UQf~StGv4%cca&M4*+x5&e{AsY$Y^QVR&bV(*t_TdWD9sNO_u z6}^5cA4RqtnNyfiXQ0TFjCr#o^~^#!_QK9)bdy;?>g{-NTSTJaC;j15Txg3PZH_3} z+1tS^z7;zhe{Dh00${`Cd}-%e2sg%X(*EPGY0*NQgJ_~>V|N~ugUJN75CruMQRIAc z>qZ%>)C=8mU)r)(!Y6KB3Rm^q{MdP9-NK9JxIT6W5umbe!zX?Ow3^uY&VTDLhs;uh zo-&{**_p-Oi|2!K1X(WmLfcZ+v7(v*{z!>V9f|b3jf#|($(->Go!lt(BmE*rxBu;2 z^h<1zbNXF^W%%Y?&}_2X)tMwCRGv~3G|jtDBoj#5&?9LEfvC-jE!vl_MqbPa!UrlOUun4Qm(2ZjC9B) zPojr{i&BypOR>%CX{2|pT-LCrR(N@&+O(?^t|WR?s4SV+%Z!7U0fB=xm$z&+lfEf* zhu;mHok3@rT_fxJ6A5M;bcE!f$i1^bj%k+;xk4c^Uv3gQ;v5Q^Ei_Zb+2_m#ZgYp7 zHrOeeM2U`7HQ);RI?18;8JDh?@B<_p-TrMW z@ceGZp<+2SfpBBUhM~R5cpyynL7pZ%!IP^-378ef^&;l<83$6hPXmR})h{i=TyV;x z9?87WBay-_Ry2W>4<&kK0%gw|NK@=B*7f`ZvGuZkkIdTy>$G~1YL9y{ba z`RB0vn959vilAHOoZDnmk@?SneLIzq1}F(=OqlOZ@O(?H-8v)s8}Q6dAka`8&dk!} zKB6%3(RbQJ#f-9))1o`#OnYV(DK%Luw-cpBOYr)}lk)wRndwTf-0;2o$su(rMpk^&6nNbFx=!A&x|U+WoJ1LJeq?5)MSTG6-p z8CGpLkGXc@bb9x|FB4#$OeOfG#-*YoJ-cM1ky<99KQVi5K1iZ!!3~3_@Vc$7tN+3@ zZ;<#FXE%=$UoR?dKx4Mj(vykN0b;mw!C&Td1?$hNO;lo5uY*B773*#~k;>#)uW&t* zlo0*$WwhfLA;qD3HLmmMx^xuFYo2iV_>mfgm&FDQ306T1FI!_QN1+h+iPh^sU?VNq zAeA|Y7^<>rubh5!>fVP+ukcgI&%F@pgc&K}56wk>E2nt8uFtllRVNi06P(8)AyL7{ z?VLDg5{p(Bb;Dw_=g`>`8wsUrpDbq~PwI%e8GzKQ$2Hm9Q~2yhD2yvUK5D~E?BqH7 zQ~I$4%?OAUz(dr|YaPWStx$`iQ3POva2^6`|JO zV0B~<*H#U)tK4yy=aF~=@qu8Z&D`NSORl(=g>HROPv?YXy23pIt@P8+xOQOqJE*W+ zlC>*7f?-b!ep*7@Qq~hEE34j%u;aWURAh?0!z4Lxp{X2#O&Zyq$Yr9swYGXpN{tU3 zLBPKCF-5k;(qUBj-`dPGViE_88Ds1KnzTa@?X51U3dn$Yd-lGwLcYrJ`g`Pe$Mcn(lDFIAhzm z&^u0Jqz_lr$&k-lIwMjUGJW(Vdxcm`Q~F{!_3422hBpWQ`hr*#x&zT?k`*@x!`+KT zRikWi7>KYq_#&%@G)luUw-A&SpvyQX@yC$j)6He^vT~Cq8h4kJLC#I6lDXoU7j~+c z`&L$GFFhMT4@-l{3UHk-P0M}~n1O>+e0wsA9POTVP3ud5C<=`t6IBtFbHgKX;{M16 z9gwAT#QNmn&&co?ObbZ8)z0m8ICD*ipIbavnB()%D?q z5u!Q(E?U(a$noJt<)4%QMKt&Qq94t302|r0AbznZ+jB^<^HGj6Oi&Xufe_-Fp3h*d z&y%i>S8rsoz#wM;!W0Y%4x`-5kIpOGUdli|RVIfZuA%YdRfKH*tIgr7hMSnN6OM~N z`E0pFY!hN<)-;1XKHE^8f*h&pXtnF)CZFQ`yhnG6|%v3frgPXfuH;AJGS zx|JRFp4w~kTJSel8O;|s1h>2LE3?JyxE4j9&04Ru{1w5`{E{On!Ddy;KDo$Tq2d#M zLs>&cBlDb?Le@BGL+=_&OV9vH@T}^SE!_0xOH5l&?{>w$c;z?d+1CNw(-h1Ven&>% zd35ZS!XOq<`q7s^24iV^ojkCXm~zLdh%{ujBH#5E#H=3#dD}hNjP;~ssvd`%Rmmse zDVV=-@N&DAsP6UPw6f`Gw0qsjjfB1gn%q=Qbv12fc$|Q%oe&wS+WfqBC$7%33NZ4F zpI~;H1u(9-w@eC}sf{@&8zV{%fnc2y09U@K`lJW}X`@i=&H@VZZm~%S z(x+Pg8bh5PrV@>zE%CnlhZqUNmq1pGbKW%ega)M$inQ$~0``z*xA?RYCH?#?lCks{ zEks2`IT=_<7}FP`$A@}bXbxu?&f!{QV?`?Bu`h-SCQYBm7MYSvtsf}Nu1_wqHqK3Xg1ByA(LBx1X!Xe3QBV;2 z3Urr=)GX7|D{?7AiV9`Esu^l0`aS|=iIKs6*eWp@Bn+zdoxs)6rRwo*q31A~fz&7y z0h*3s)a4XOei&?Po@K|*F40}unaHsjVAF+aZ+g9Qy_Af0LA8CSvIAPv>I>%7o?|+Z zB|moD2Y3DBc4S14-OySc0@gpmuQ9&0$$Bm@D0oA~UFg)rt&t5xX9kntb@l$s##6xYb|k8L@WGQ zdnRf;Usq9MO3pB?x5M!37C48p{~A|@fYF+DSt_i|<*YBV5(xFqjhGPiqBt-&wti>=Aa2h=*TopLBHo+n;@+;4NxUJAmFPtwCbi_ibt`>{VO&VRN(zxRiK zjvl`A=g*1rJD=a<{Jy{c*Wc;=uDbYLI`;4E{BQ3!epkNU?fkR!@VzenTIV*utG@o7 z9=`Rt;CI>iU4H#8JO5O_eph_n?fkQJ{;l=?p7-~>|C63~-ue9J@cDP`r@zb2@5=kX zThE`}KmWV+{MkDHS6k2T%KN*WKSwuySDfE@`1i`!@5=kToj)h-pE`qVN29kI&!f9*@6Tz5m_z)Bo*y_@1vnr_cPW)#+btJ->^G z|IW_){{FA`_jf(~Yu(fJyXy4c)y4nzy#KB^|5NS!F8=&3JO9);zx(yxkNr>HQ@_{O zJAeKs{P|t_^SgNXyX^cfzuxV<*VlhnU+>SA|IFvgf2#icQ~mm@>GOM>-}j6EZol}m z&s+X#Jp8Mz=g-oOKf6!(U2*&){r#QKe+@pr>)2oGob8`lr~g#H-gWHnrDN|r{B!d4cZ>7iwXb{EpT8HM z|88~hPwfwXSH1r(JO9);|5N??tL6Q#ww`}#-rwriyUzbP`||JVf8O);_sZAr%KN*W z_q@Nq_x!K-Hvd!g@Sp0}yNSP_prtSLyjN&CCOX$U;_(f``&H+> z8ga?O^W)?5kAtMt#>&-{j}J|8J<;|~G!QfL%(1*vH0z`=HeV<460@N=fOE&Kdn1t4F@U9VlrLUvp@UxP0k!fjJQR7Roq$lmc02dcZ zOqzk_8Qf|NGW{4a6#&A5;GZ^Eq=5AS^UoHthe1@7>ofmDbQ@# zFqBjw1fXV&k|D?)sxlM8v&yWe`1JnHok6gR`!;=1d@t2v{LR3PS;y0Ad9hJLlK?{W zB4})3j7j+onva7PG}R-)iaz=~FF*mKQzy|}c?8TKl5>;*SC2R_wYu0n-$eAd?7m}` z(GLkf5Ifg1Bb0vklF0>oGjIYsdE`K#g)I?LL1Ijr8z$>i5`;Eu1KNPyM;tq}TTxRa zb|>`pIv1WUgrGi@U24E1j_9w!xa%fjVLi*~iu%BKIjRli37o0fmwxuEGLFCQA4eVnXtg%P#Ujsf9)~fYL zNt9%j5k`fISpND7F_o#U9jqPIGkqQD&rqfXz7{M62RMdB41q^xptY3bZXRjIxc)#A)6PRJ~|dqd95FEB5y@QB;K zUh5Wh7)YX^e^JH;G?fy+&Q&oFRFKxzHOFR*CmhDKfFf?UAXQaybUqxt892^NbPE~D zmd9{fs_&s>KV~cS>v7D{GSFJ0-j+{_RW*slF2?f} z%mhkUjawOoP8E=_q*gSpdCwX7+hm*1mQ2ut@d5;?%kZFhzuOMEn9~+AeS5CbcISzP zw#DZTmBtr-c{{61hT!|kd5R(JO{AYFM>R%OIJR?@Zy-(;o@sse)F@~^$ZM20r2|FY zCo0t^?@to|;~TFtj~K9N4%dLW zUSm`+Beah&F5J|YWK?ye>?v49tO{2p8XE!0E|L&7BR`3ZY-zyc(5)8dJsqtw1|1%kk<-G-c_ zfO}aSbc|3*S=}D}J4;3j2_BOQ~cTKl`k-IhgF)t}K9ns>52Zj-kq8 zInT_w)xH@xIu&k+SN8HVpWte{5yzO2lb_PmLqSq=`nqL7X@GrBfRh;L&{K>)6II{> znHQK4K&ilJdh&$;GB^u1SM!|aw5HjwH5RgJ!^tVJ!+9p=&A_oAunG{O#6^D*ts^KR zj)w&kPgU7vMtz3|4Cnjn+xT(q4rGUS7G!x`NJQ%?cXk1Y1{;kQx&ne0aY!sj!T_g) z(?5#uV9$y3O~1pC;+wu1ICwPEe0QPvl~Sr1t%d#m#TH?_9ZkjkmOVlJo^@~B;4{9k z1#r@I4>Eumx*!1S0)Q06Gy^k&6?qb@A(o=+#$7ygud3kcDKet%21&t}_GaK_2N6Qf z(8MAm5wRlPbLvtPL;N&$5IV(mp?+)Fhy{*dmyj~e$xZ2>*uBT9TXrt6`yW4O!t6kTU^g9*K;^RVVoTD*>?L|=?+rz z6#tungFW0Z8{x*zD*;xQ%xXS!pG^loVgPy3KPDTi#rcR?KkHbQo!kr5;>bI~3NNU^ z0a#TTzEl`aYy8rHT34YoW$W9)-HdqXDLD&c60eX{e=~57CA|%YsH2a{typX#7WP>* z`({kup}4TZi9${>nhTNf@W`=ZKU#os$a>)^JOKe1J@~p&`RVp?&A4%5f)|*1EXT`MX`l_h?B(UrBJfcuH)`KEIet_ zFjfNB=kNo%AqA+7c{XuT$w|1(Eb-e-0vv=xT8@O!rAN` z3A-D9+7jPR1SYq1gykPBl=u+$W?*lqwJWfaMTn$=VK2T&dms-t>y8%I}NhiC&C5o;Q$8v6f+T5)4R^IhfN=Gj9g2bA>|O96t5;7rl@%*k2LH{y=r3 zb25%ft+Pr-G5geaz?1f!&ZXr}`2#RS{B|`vAVwgc0^OqdS$3Pdj#i5$)p4h&ncwzg zW9;-%%sJ2N&A?ImLYr$1i#_Lst9J<0gQpkDXN8GH&72O@tM%| zXRh;yGr@$~LEF+QyTUByEwDR(6UM*Bgv08;IGKk8N-Kzl);kgu1iNayv&Jv0dEG*AGeX2bvtSjI%x~H2OSJE^R{x9k`(rn zy}hG7yKXrdQTB5N+lr$vni4Lduys5JBv!JaeH|&nL{NN~StHroV*MN?O(x(eEknGZ z@m1R4&A>itpURnR#GnxOMmP{W*cj_K!=UW2<>V^-$ODaSFITPH{&;|1a94#MxQYF& z{zw2Y@F$uIhz46K>lNqzqT=;R&Xf;E_X3vD{*>D`a4`F3;6{=soc;xA?aDd1MuNrj)CWeU~1Xn&}k`E;z3-R@&9%xG~J0w-<&A{G2V;-0G zXPzb^_w{SXDAR~E!6QvAMOm*s>g)EZJNwB8BVt#iHTy%2F@)xXlAr+hU|LH_{KdNy zoqON1!9t#5)Z;C`J_ee^`iy|8#l8KwDcDy*hKiAE5r1S{JuUR!m$x7GCXwRg{ zDz5ChWEF0>)&+k7t zzs!&ou42#9Td}xOe|riMA@E1V>%@?#Q@rkDiW0cvuTeY$-%DD6RVh$|6sqjWvJLfl zDBlz?s+0GH(xKQE5G9wsHJa#~fkVcrl+7E9J}o`rDJTkzVjD;SM19lF3mph@%n~cW zsivj2FkbToyuF-a z1Z^2u12ed@zzvpHBaxuAwzk6WNj<_SMo4z?3BG@-;B6cHK<1LU24hy%gCgPwND)Q- zH4mC3JVDmpL+U#HvA6ocznXBko@#jDn>`NAQw;(l7Rwb#;uILmrhp|0r*-jv zx;9vd2!n?-)io?8#M)!_z98PV0>+YdRci&D{Jl{s^hWVp=d|@89rh ze)N;^55;;ja3Mw+?o@4WCWO6V10<>wcG>Ky+LmGa%xuTq)4uHo?wpS%#^1JJ`IU2B zXxo{H5gCp=NKb(c!pi zMmD38obkvdt-^`eWTpasJRLV4ZH(!5^I2}+8f;$5Mc&Q^1UbS;!60a}Q`7X4;L16= zjOemH?NX_+Vv?U}d{O!OX5e^!Cun^*(&7M1G1y3i@&%Yq@N2emB!+Yf%O?a93fHh; zuoGS{gA7C?(Qz>?gl}+yBnlKr1N|~Va_kOuV>A?^Uhv- z?IG;_D_B*Hy#ncLdqWcT$$eFrq0CqP2uGcGUgr|)#U?v{`gs3opW;y`Xav`L1-WTbEr5xh(MEU}9%V7d8e z{365<$j+DtrZ+NRbN`$_;%TaD$^JygqPm?#+eRye+B^FL8ZJfb%TEPpJTK*&ck6cA z`gr&6dao+}j%Q|i|6BEiiy#XZfH*0y=PEfeiufhbSPXbEVo2*X-QFGCBPNu@QCvFO zBYD40Ed^?de?cRBb_5Nle;iv%F*IOEi431a*pJr!W#%V3(Ml+1Mw7Gh z*FBS1hlXa?9Y%CRph2z~u^q11T>cEbDEzW#ZLq`qH=;dD#iCF`)h~QE&~Tl9Zf+s$ zqJZtCruDZ?6PIV^O5_=2-S=X(tiSoz=}HVZeb5h3SlNoq?aD@vh;~4}V%+!8-62DE zNh0+(OHY-$ojp34h_4yPZDLqAp8lZW{677*7H;x1`okao?uf+#2Hxa-2Qo}chuR^? z;+V58fWP@)Oqt;#0mC;Ey2vX5Ky)sT%!iIvgOJ)n_;C5#QU1L6Lck!|K63+W7&coh zXgFdb6BBDMwZ2PQ61%!@sm)X^8U?3zz9*66%>(+GIOQg&F)}y@#RM3H8Y7ey$NtYvwKRB;!ooZcio4 zrQP5I{#c1|icL}Oj_KDQ8l>FS@V{A%O$npSo^+^ghEXFEiv&xSh5Yn;zt1b^>SN~-@SS0 z=`VD@uXsZ3Yc;Fo_w*~u0Efbi6JuX&+7B7`q`DDv}H|cokIl-s4|Sn7QNS{f8^|@E+H+#-b#~~)Da!EjqH&mJk;R+#k~K;EPuXKc z85$>%M`MbHveGZ$y*aaE5EJv6`yF>$3t~v{I&90=vv(xC!_ep%u@DI~9DyiHt6@}b z$4HnKTRW&D$}=uh6ofu*!R0gxnOQtQI==(aB<6f_%!ToEp)!BU3|x%~eUo6EI-Jw0 z`y%FE8`$#|i*hqH2A&kbq_+!34>a5u6gN=VnPWaN6rOZHB!osy@itrt-H7d;et=D$ zvh_j#{`W_-b2|p8#2KDvc{(H@F_cO@X5hCP22qHN8)2cUW3Zhs3H8gPTD5jRj(=tRjwUT$ol`mIY zw!;A|e7UNi;Tn6}DvJY!w}eznHUeye>!f=WTRXlX;-*3V3x_DHxk z2j%u>YrrN)WLkKH6JB9J^@qb3xPjrnCQ&45$J~o0%XK~}A3?*3(2Vm;>J}Jk9iNx= zvej=GYN)$XbgjKSr5fVG*Gi?n%NxwWd|E4R=cP5>dtZnHN(`R3R5or2Z#F7by-RqM z28nOcPlpj-a2t!pr|Qt|8}>~=RPhrf?4P6K)dt|B*HyT8cAW%#^@nFjKnoXHejsx| zh4`?m3u}EIT8ZE@`U^lAbLNMa@VgBBpF|zMZmZpJ>su(M0fF*c+8S5arlKJ<#OFv? zm<+K)B*LD{#NB}|kvU5%bz6`nYZ&Fz6*&(%W{ z#7&Sn`eSw;21`*^%38W{&r0`43s}u5YTJJJZg@ZplZi*VP?a2$mUsAPw)`N&>e!22 zLhS)DGBR{Mv@__Nt4!xCq-0pcEBasFhac%|-gyb~{NGpPmVR9Zh1WqkR-3k}_|9d` zS!GBi(ZBfj>j6~{M>jzeQ|j;k5hEDY}x6p>lyAtE!ywX~%^67OB>i?VW^()8PY|7L^Ei`M3HatwCqT z-=0ls_zEc$M<8~mM>tQgpa42@TB7h2&RLs&+`ENeA5RFUyzczTQH4cNfAlE0@qtbp zBCnUGIT1#3R=aVqw>>!U-)zsyrBP03EAyt-0LChU&YPipyA-*!=0rIp*iy=mVuEsL{4E^xaC$P zoN1_d4`k@Q`)$K{c9m3rad);51@_Opl8Qk3@mbjK{RAp*^il$5pu~@8s)e5d0#CG; z3$AIhLlHC_LG6ytomuqM-tmQnYGq9@dO}K;=?GIar;Sin*?pRWy`@OXUi7kuk>P0k zt>Pa!kP(z!$~>k9S&eIHTPivj&K0`1Q;68+?^es`iFUvP8ZOr(B1QDG$rRw`c+fO0 zH|$znz{FM}i*{RP+I*#gwA2njFdMM*y*vzGz|d_ZfdFvw>e>}pFo;kJ6>)y?$U*n0 zTB-<}wc8i148g#2rGtix7$i#m;4VdC!U(ztUd_0^#zU>aP7kKh^Mvz#Y++um3Whit z6O`z{`vWOvdoBouOquyyuF&!ZxTQkC##D2}&wZ=4fuTKXulF zh6CgGs_gqLZPqQ#ofbULD;f2lqOKA+-M47o;5hde&{(? zSvd_2{^%{DV>3R!j?^W_^dc?{z}Vw7Nz-T1{{$K?(V2jLX_Pw{tMI)vm;RvN+kImU zxqlim94U8hwu5nRdg0gLn`^n}Zvl;Ve*fVDP)D+R`aa{lKQ_^@T}U@M0cFq#!*9jS z>KlXF#*PsN8cuu^X?(MVF(&acBMddqxm-lDkC2HmK~#PczMvNI&N-dreL&QyIv#b8 zXRitjy927qG1`CWZB6{;(q27qi_STp(IBHtXazb zxIG3O=SE{SqU3A^;WoACGH#Ba@L1(rDR26TPDmJhjL$=Xiz_zASalmVSMS$Ns^ z{?p*iCmQ^{Gu?~eG1HM3Yx^`No`z8s0!TmI_8c`a3aKnF(;cy8K7uqB;Pu57g}5@O z>7M!CIOzU-_DL<&GWt?Eb-Q&PGq~giG#qw&m^{W+@u_R-il{R0cv`;Eq<=Z;PQ5>G z`?fMf)-hp-$2C$emfvg-KY6hH+5-5Ccp)F3=Q;rYj!it*m&lnB8}5o{TY%^J0am(Q z6?_jQvT-^PkH3G; zk5jy#ULb>CKMNLd?f=d)8@P&g?>Qp>YHQJ<`P2;D`=O{LF)gay-={i`zi=9to&A{4 z$d-tt@jTVxF#^9#EnHn~x1UUKoJuAmq{>&Yug%m`>?~Z||Nc7-TU+8BhxlG$na|+| zh5ZRJG<@>+X+VQyJjSm-GhyUprJb(qZiH~l-N9n6d+KxPKt%u^G3dlCL>K`vqf0Ir zTw|m<{=9TD8_~uOA=VzG8;7X{5T|$Zf%O~_mE8rf1j_J<{I1`Ds!RC>WW2L@l)O-u za^;)C4eF4-TIWgu%gMy;B_tuxaI#Y*EQEL2yk=5}-=dS0sUGFZ+9%rb@KjPU36b{f z#(}{r4+DP6DTbw|)#9pwQ$VFIG`nD_fTg{!IrM>Q#}Rk@<^<6-gWmru{xSRn_`&Y_ z7cq}OG`f9qaVrix|E9Eb3LnEv*DkWS(iG`n-kpCaqxx%AR#%^-@uqW8d>hz+_@0kb z{xaSw$M3NO(E5S-N@F5ZhEIPkVm$BHJ_gx>P8{wBg(K~N?5=YssA>eY6z@O5jP-EM~pT`vvwNZ|JKV_9J8&8N&`T zPq)h5%q3_ziCyM25B5X33Es*3z@1=_seEIL|GCx03JuzZiJHyUWe7v1vzc|V0<<2G zuw3`w=p1TK>J#%sUxZ>LYbIY3@^!1-dpLq&isUUBb|RAqXt)Z0FSe64|1l?~3Y#0k zguOlU!`74No6&a>v?FTQD~E%M*@bJ2FvxgmsM$UiTq&S0LVt3(xa(fv`mvJ#^+vO& zMPF2-9kCSm(A%g70{jCcOwKL$-)bioIm>RDR*wdtmHm zaY7325Ob0`6GX#lKtOR*AA8+F(fY&wmu!q>B{+hp!=Rs3mznb$zH_bMJM@*#^h;m3 z6%&+$Prl0=FDWB2M%ef0x+3092JS8wL?svQriG#oQ_9rOOqbKa3K#-)rw{YL zv+vrt4zm)8q6P5qeA>4y09c%F+6qO4V2LoL;t<`WPd# z!TZc&<5nuSlZ8d$ZWuQG7p(DI0zlmHS+wYSqB(~HY8=kG8zm7j1ht6jWTTp_o0%w` z0W@4i<6HH?P%6cD=dbw{`R2=#x+SUK7{&alDIXIvZayS0^S~WiBcumR1r95`+03oManA2LB#)JxZ#0~q)?XRz>GjriodaCI zFQ*Kdr=2_l?nc9?t*rjazuSWc4(h7$=qEnEZg1qXG!DM&PYij3hNG2^p_i3^E^iZi zLM|73rv^JY>Xz$kuCZ`)BEUY{wRB)(sqW^i6#3pBq+_pl{RVnze;cA2fRw~cat$d-^F%FsxH3^jyTSA=6wnvToH`6T-UvH@8iQy8qHllc&82~Mk%1zy= zE-L1yWNBv@+SOsG%9}b)?fGmh{K)*GI%qf%&8aqnD>6h>lfPa0$2OcS!MxdHr`$i^ zPxML9n2p;xq-4&Y90rPC78j5^Qz(ys-P2@=hK=tx@#`zv_Mhy`a1Ni?AY@jr5|c~NTheA4Wwv}F(Vw>{T=LsLN9v|6S&1G16dE~L-~QG{(l(2|lwGoU7WKxN zpG2}Y!*UgRj%0x!fvvA0^_?VL{M-kVmx7JSXtgkVMBs+kz4>a_5kGXpW|6r+IrC>@ zLvWA0ODr9qbpWt6ER6WR#v~B(hmD$$dOdW}w+wm9HmwTPRl`AMA_{b=t2)i1Rc{=I zVceWGZjZi0uwq^fva7=!ADT=^isw@kq9O&xF=|&AKQx*K&mMjJ0(3!GTdrPlE2ePz zeO!VrM~m_n+2nN98!WvcgJrh92Mvds8FduonAtde`a7na$M{Y#H1A0EJwh_Qm&E9Y zt%Tu48J_6RB1*`OhcC0Mr!XM^c>~E~1oyJd`a!N~nKSDY$y^q!2ouK|@)R^@Nq`Gz zIPfJs1_rqfP@KjYS~m{Ufh#i@smFhH*o-O&kTdmTC$+&lU7HcNYJ;61%7--y2gFN< zr{yoc-Wm5di}>uTVtQd%YioF}I@g7ABJOZwfrj(`L{r=cz0|i5j5BIF(WsLT(@r1r zV%uQrL&rtNiCGr=z!m&e|5N9E%UU(y?jsA#Iv-?fE+{8ejUSb6HE7&3$=1N5L^RAe zZ&{}kbb!CB8QTs!ta0WcTGkc^^{| zc8NQl0K#6E@zW$4xDYptl~@?dxL9Ac9We6qhUBFi=0Bg7fKD7ODZy3DbJ&okZq3{9 z$Xkg0cPi|U{Esy>HQQnYL0XguszM^?{m+;cS^;?ORrb;@o-ai z#&v1=Dh!JsN-Oej_5dZN5_Oe`UFPX&K2zqWvMfW2Iv6dnhd()Wzc*ieDnY|FP@N=6 zu4aO)f+xT?%H!sktnv7C>gOHR`?N{LCp*WCFC9NI0p=s} zZNbFv;~W{35M?Z1F9b65cN6ZB5`fz3Z)CWV7(-_PM&q5Ls0B)FB}`GuHS(W-K1@DE z9)M2VM$xq?UD+9(fW<NIvPhxJs!i)>scdfJ75!YgxIkNsHBcHdVdWJ^mntJ>cfZS`J#|rv zepXdJl+bCt4H^!FtU~+5p`xSK<~p$9$`GNZM;#g5wyh9Yx5i&z4SN;vmt)~8PSfbv z1GL!AbWIRIlav0}dCf9cAvh=AcUg=w?qD6>XjcinT(8G*l`;}E9Ge?lZQ?GXI2Dk3 zE?&Y#hCJslton}?r}jFoRb}1iI43Vw;0x1Ar_DO^mkLGocEC}Ki3RbOTu=YQ$qmBb zXdnX3X_q1+l`E^v>e<+16==9^!s&DY2~vSgEuwCtL#gkR5=X+p$j)ql3%*ouQY?Qm$#H3M5*ln7}Q z#*0YJt(?Mv?~-DRU#%X|V>CLSJM#M-6G11ABHpJ`fPVK42zYuRLVDH`H8WN2{)!8U zG3K?UcuhFo;gJNmsCf>4x=RmuX+0hUe&DqBvNDH^#)QmM50iS$Rw_r)2gj9I+Q`MF zoS43VhV%F~e5^vxNha(x4jStCMrzJ}S;FQTz}b1~S!)zn7HTm{NQIASUlhyj)-*Wf z&;d*iY%VGDFN1D0M`MTQt+E&XE@I|ZBma7$o4Lm+dO^cc5cVN0<*rN{Rz8qqI8K7r zHbyE@z7jV}w&{I|SVsE4qGm~@Rb`bxy#$BPXJh zp{u(5C^*gL4gl~}>vdU>@mpF47rFulLKTeR%ND2mnO4`o9rYb(NP~u}JzBmA#wX)- zS||#h44eoe)*4*>lorFieTuJ3!fIbww0bSL{ll_nIM2i&t>vBqz#yGZU_GIu!Xj{5 zGqnU=xbs(ey4UOChD9+RI(qAYhX;;7Tnn=KoN^m6oLdWbjj^g!!xqC{gVYZd_mBxoXrS%rG05&W86`Wd=N9!c6T2zF`!$B=JBkiHQajF*&u?+k(py7sd z1lScn=c`wPZK5vNmhVP`xiGmTq4}aeO#qh)tIIIAPC9)mVhJxl;0gvRYynv2)X`!BknEOLH8Fhu5`<`6B^P*P0V{?2aj%yj%~&qwLFPZCd5o`2 z2=`{uCu`J`Cg!CuKqrpt>E^EFO%P?W9MMG){Zi&cMm2K_gp+6GD%v7{q*rBEfH#z< z&`Dj7iM4>e`>)55?OFS$a@TA^`Zofrz^jG*(e(f+E4>bVyL~cYb;KBGIQsjqZ{=LX z(6)aAH$F0SV!kc;FTn^qO70LmR-Ln(;Ps@_l(z`=3=@?)U;>Wr&A_mTPr~w&J+3Cx zr7;4Pe6bG^h4271HZ6?FHyom7@MF%^_aAivF$H0z9qL)b`py@qodbY}E9{WA-S2{M zdQJk43F}W3;^Mi(I-WmhUh#pB4J z6aQ2|7v-g~6F8#Aqj|3UcsJ$s%I~~Vm((&=V|HgmfrH__pU@*y8e3z%sy-!aY7BHn z(bQ7MxAV?aw z<*;nLkgIIX>XuvfxtnbCge)|@UMGI@4f4^c`1!p_rl9d0pe{X(XkH=HJ7?TljVWjs zay9Pft|JP8WYzXT;Px~4ag2Can@Sat$tppHI?LC?RpW;BNA`DJV(tw2d5U_x-@B*d z+dShOOs=8HXY*^VEpY&063$CWSt+txGhYoAH{G+H(6TcXkC)oE2|>Ao&tK4qW0Gx) zVPJ#mu!?)LHMCO7MzVT)j0T@|bIK3A#d&xFhz6mjBGw!+h<69ztdHl_0oo9!Zk&u6 zb#o|--2CKaU#nio%^lM;1K{B)x$6o1fyu&lxq($WALhoa1c8BnY#x!(EH&($Z!S+ScJAJdkf#_pE}Npi5m$)ixBPctt2>#%olp*Bs`B z!RGSTd)sDH#WBv{Ci$5;NIkO6Mr~o0AZV)XR4N{rCk^<5bjD|KPC>F6);dWqeA#&} zToS~O5rDBSBm{m_vqFbUXhn^L4Vp<*T3g(nSFY1erB08#G&oHOhYG&ypPit%X>06S z4c9v_VIu-k6u_?wP1aT+Sd{ zI3}?MOXb={zcMAoVBm-1Dnnb)r4F4X^R3l0^J@2oj`}xf)M#=Tql~4klj!S|YH*9r zq-DzCj0VY(nE5q0Fv_fcZsHQbqpB&jOr)yO`bgg4+(1V7P zBEpY9D zllkGNFFw)YmNHwY_Az@w&T_bV)-)3;Cu1R?;X1r~zx2wa?~lH20awprMy_}|LFE25 z3WvPntox5FkVEt$KfQbi6ZjM<>JTV~6#)UOgqRLq`kIDePwqwIy)npdK4E`$h3{q0 za}oB)13|-)VWv`J9jBkWg`CDOC~?^E?8cjLQtxt_h9m$aQR>&=Za&TD`CQ_=FNJ<4 zVWrmqMHgPW*R2&6{s%=lkq-%Qfsdc+5-EiQ9e0JaR-Ai4!*RbM3$td(eTd@Up;e=; zA7IS|IyK(eW9ASbyl^24US8z>Z)_D1qC)4HZcWWgn zlP0Jp45`&E=qQ#zTXT8!s%i8AB;(|$uLu;n0HV&?;)Pg4`dO0uLiI9exM7}n%HqFo zimbkg$PzCc#%z6vd|FuVHr*3`wmDNWsngIyYQ1!e(Sp9m8*N!FJp=k0vL@>s>oizf z;QoF4hJrEXWLSI2?L^`7Q9=Ax;2&r>m3CI!;R**9B{Ei@)_jEkUSL7Oga0<0ViKE) zUmhK!NwwLhBdn`#xt9KArDy02*q6WLP+ch3t%aSI_L}XE5?v9-`YVi-+#^o!JI9F& z8m?YvlzgHx?zV1<-rx%8(pR~K$Dy@+IbySQePnLa2>xK0J98l>)Tp;3*+<6hEZhvr3zoYnVoLb zzxR`Ly>EU1f5NLoIFIGxggyZ)j=~z((X422J;=lL8?5p?BGEe>>gw!95rPDY90 z%W*u8Kj<3>?if8zxE2xVb0Oi#iEV8Vp^WmQV|HUxd?)aMCxBCg5Vg{qruP>4_FZp1 zS$aMBG;|?(W%sYNq|r9Y|KrtXV7m?5;o!6II7?;}>iIz;KVsdcQw8MHppm4?Xr&%{ zDp%&_IUhQyamVPc<}o#J3n`n1bN^T832OIQ)IE`Cke`6+Sf}!@dMW+Ok9Y8J6O^4C z1x|41qLcc51#0`3Hb0Ye$pu;58iugvaf1ODt)VU1p@*$x?XQY;N(2t80AuHn8$d2DbbCpi5oCQ8*&mE$3?iZIUepRQHYF{;ffPXe6NB zApWobc}XnNbO5-UP5mw2D8e?8mZ|BA5Ce&oFfH>n+!4^jdBP_*Apnbl3Qx^DK0s z2y{1J?faCYiDzykUc~YhQZ+o*GJ8iBmRC90+E4!ge{+=uV~2$H1Sw!9YMgN@G}`@C z(0^3P$@G>OUo5x&h_`jQ795_2FumU@)?Lclu-Fc)w*G>@Rib{|#keJ!8tUggbYrY` z9nTP{_BTg4xBd(|akKgAK2xdYNXrV;iNH_lT%#obL=K zffoFPK4fe9s6d!rP78FV3oqupeo?`l;TLgk@5#-fWn?GV<$Lvyrl8>l*zRA2#a~!e z5YJlw(7SF7^7TL@O53*fAO}@O5J5yM9uwpbYC0Wm>rgfSJTs~Sw*E>n?S2z6ej%D6 z+nrh`UL!QcjLha_B#s_|nr$fs4d=s!1ri|F_s_^j_F=EkU)a;-B>X0yO_elUma%j$ zlhDI#rg`j&uy^%K9biZ)A^FlU#ZkJqtn<8O(P)hJFf%MH{(};s*@} zkWs^8kk(D}%vfHgj$wn^Qom|z?| zd^_;t2k>K6f!D-ukj_6#Eg1wnum`sH*R12x{yzD?mQddNmXdDGK5^9!uR(A^m1a(J zKA6Bh0X8(+R{Acg|9$N+;<>90E^}gnv174~-oCl^?x0%${I{DLb=AMF$(FaN07pcq zG)T{xhZ-UaX5#Pc&GLTu`X9W@&K?l}ZRU5a(hK>g7Q!8%V8=;SrRSsk3r)lk72;#xKG1Q7ij1}<-k-I-fqzA| z;)ce#>QDMn%GPENH3!hQO0wM3R2C#3u*)LmtP4HLovrTU4}4vOv0vjg82}B}2wBN2 z;RM~2DTZ_}D@(6Ir918P8)IaqW?+3)EB|Cf`Ag;-^upxpO+y_%RwNez+h2cP7| z@eRqB-3@5=i7j7~3PCp1^`Zznj%NVEFfppl7-ks9t+i5~IIS?xjy1W?+oU2RvUgXh zavwC@V)7)#+SN4i&vT($PdOCYT*58yrP{dM~)B5xE>eX9gqaWxIlWG7_-pyBiug|$j^=69=h5ypMzxfj2}y`r+@SJLvVtj_n}q%&%baF;yB=oNA|UbJWa&gcpO`k7SB3vmqtNWZ zJ-lhK`ac8(fOE)i*TXERut;B?hKF^`?n=2fwF*nJ!|0#j-uPcq&~SzCyTXH&T?0qw zfoUf--<1e`!bO8O`*c@m$>dJ=W5RxPb;?z-ZQ-oy7*Vifdp|`gBJSi@9i}eRx z?uLBJOl)Fc>Ce*Hh1h&Iz!NAj_o`6BLjT9zU~F+KC>xml5h)6<){j4zU;fK8XxP8| zZqMxWQ&}7O&~D77Drp^|K*C6Ygek1h-mQ4dUmFBm-y+o`GQ=&YT9Bu?J>Cp;eSfRy?|m_XIjfE(ZN}ADmD%l4^LbWoDYkN|@+u6(nvlyi zIPIrl4>1GnhP&YRkHhub>(ZI6f1Cwe*2gccwqrb#lWbYM5CnZ_dVlTZM?bQD6qNCM zC2ez2hHR+TO1tEpI0sC238kg#?zw@i6REV&;<+hkctw1MksNdV{k5(J- z`VxiQen|drM5jbwd5ZeDqrR9odgK#q#@`X5UO(fF8w+?wG-utl1|;wzhif5;#Ot< z$80dI+j&0FJ1L$3Ne)k-?lVxs-%nNQ+Yy12p!9t( zeNV-h_<`ed>%K|IM~wn4TU%>guKJ>|*wq7I#Q&+!hb`HwQ){jY1CUWmVn1k7_(e(` z>G68~{3#hUT&ccRO+t$}r}s4#XWj!e?OtbjS=hV zvq@AvCCOaeSyJy5^HbvkmNk|0d{VC$xf|@zp(tWXnfMXFy4uP$f*DbL!a_Eb9-fcC zmpk4b>KfjrD46y7_z3>y`r-fn-c)fI#dBRm$L~k*Il|6y?k;Uwa^dgAKL~$IN+a}_ zwr9ww$n~*421Gf&kHF}SMps>_QGr)?CM~DG_N)8Xa{=V%fW~2Ce}9EM@GFTFCI&~l zKilCF=4E;0+=gEWyP{fQ?G<<^lU2{ycJ(NIWMCUY|6!7ciWcuzeles6V&_e2$s)~r z(j-P8KBkjVBCb$sw_$1(J)*#V(zXOYIv37yT=-T|kqWwj7BzRQlLk!>cR(pU}R zjd++jRlwrvEnqGyleo}`zqM!g-Wy9UefjzmebwRG#B+SY~eJ7I=D^Q`zy`xxoxEyAjE z4EVSw(u%ph%9rvne9F?A|qtpn2+(!QDR-<5M)jYt80veIrLM9ZMReu;4>2sXb3cmh!J z{b3P0^0w1RFTqc+wdm3$k?cJZa&k7Fv&mZ(NC;*UgG-VZgON$2Rd=0dwFfZa5a0q z8UA8v|82<7(93wr8Ex@hTJv}36)Nj#7mxP1nV6`Mf;0ECp}*WfMuBv18>PP5O?0Ns zF_*~pN3zz0yET{Q)*aVuM{e*9wi>)C5lN)^DBKT z@t}UH$Ux_}`voKZrKmrhP(Yu%wv+98Vun@I`>@PY>jUoxedr6;Cu^dV30x%J0?>&I zD1s0m9XR_}BY!XSl7E1;dw3~Qye-rm|I#!Zxn*g-j>UyLnA&p%U3dBMOjbh*X!5$! zV{BjVPknA5RrLIdPdS{iH{50U<7g0Oz?z>4G+d2zDo%GV8P8Gj+)rSjH7j*g{9Vq^ zC2tQ=c`a*>kGSxvI?1o(AdT+?OZ0H{${IL_%VuSJ7P3U@uu);6FU$_d-48U_gNf@x zAhFdy0e^E98XSx9!`zwB!=u1s9%6i1`^nKjbHC(^qg|TGjr<|<5dLkpB05sQu<$|9 zhDdP<(9%~hVc5?&ul)G}*%(`Sn4M~G_c5Ajex7UplMxE|23t}qvGx+vv-~2w#Ua7V z@{unoMNe|{mlwD-^E*6k5+j7rimZz}R)j)_163L12P!~xcc=e^S>AJ^D%NkOYax&@ zxL7oRVvUrOBK_Zo!zIwAE{sZ*)mTl5MV7$0UDor*ewEUai&`?dWOgQcWpIfJh!%N= z%;Ah*67yxHG$n4m1iUyfLk}%RDfUz(en;1bJJ2hf!?Ifr3rcy2Tv7nn1_PpxLi4RQ(gs)&HBzU(K`TM1pE+X+OT=l zrbALo1Sp7-Tqr(a*;vSM)?wE;K?%@s(ok7hBZKp7fG+`BiROdX{zRbpO>)-1qg$*t znaPs5G#mZU=>rR*Wqz0(RFC{vKJ%We*o_GvB1{wdO2 z1P#~e6Uq$A)^sXvovc*9W7_1vDI`ooioPc#?dmVq9ylJIiY+=0(PE&4i6V60{`7Hb6{^N_G_JL>+5nlac38rfVzk!RKnVRQg65nc~FCMyGjBLSEsD|N3mL4c)AA? zR*`(oc{E#H)3ZLItN>yUJ3fdWr0lVLo$CJL`2-6IfuGI50l=cNe~7v0onc3_mbVs% zEpJJg?f9tREI7?iqR;3A9u7uJWcp{YY{i4KqV(ruX0P0?h4GYyMcfHp8=$iAQ78)hseB4UGrzH4@OY>D~A<)B7^Jy&UOpa?o~=;&|q z=^)=dRX_1cor+ujjXKpI3bdqLQ60t`^VfraquulSb2l0Ty59&;-4|M3fm%b@5*{X7 zG{5J#gr>f>Z%xBNsg&2PXhlr07T5^mpy42G8H6NKDGOg)D63S*$DcMORLSr;qI3@A zpOQABi{})0MR3YW{rC|ehXUDZl6V1L0I$S=dEZaI_9VbKw?(#kb|c z0I^2E*fN>{ zIk!Tn`S{Pf0Nl#u%Iw{5BxraCpG0PW$`8{~oEObShPg@{t;`?%Ck;au+XTEe3)l&0 z{(8Ixq*Lp0O}V$?ka_LC$$GA)VOsN;y1N9FvxMvJZiZqKt%m{e)rL7LBoZyQw)HGn4U@6Q3KZ)Ax zV@#ZBf>n0+P5x!Weg1e%b{^|lpEZ4A!q38>KbNp5Ap}mkXX7#UbC|1rkW3l?5cf1R zxrB-Z;;27AGC zw#U60t6EK+qsrkAYdhCEc8}OsQ!Y+@3Si3YM8S|atv@kNAcashvTHc@LIU`d-*<4v zG_1ai47$`wPfe(#0Tu|IMS8^=G8g6B_02oZ{cvd=%OTFFc;C9 z%w7CDm*DQoPvWibE}xB>9|TRrr`XpnKLK*Hf{VXf3;|!rsp|JyCqm+H5N!rg)TU3) zE_3n5yhS8@zuOPi!4K~TT6Sb+*6+Bp{AQX#M{RW+jtF8k#KJ6(sypPFXd9)5-kN8d z!iDNxgJ#qEk;1wTY$BDtTtleZHhO=R$ItQ~k+f02Al#*iPI*(okV$ zy*|}R1_ARDft_GI`?)JVy@~z+DA7)pkvz17Iw+UEh|q71wydV%kt@au&+)!`-lTd0 z4cD_dmpVuP&T>&L6t1#2Y`W%I!#xeMIG|g`Mtn`|(dDZ&8%GP`I`H_Uj==&^aSNEu zy@?yx0>qm1mN$^^b{M0hIHnmKib}XkkmDto=Ahv`GcNutSrZxJPgJ5z=TZ->!JnHd$OZVj426 zL!9DwK6_n)h8u6r31`2Re#J}0FZGXzC6fybIT9Pq%x5)f(Ssh6V6R&)(VRpgAMZSZ zp-37g5(X|ef)h|XG}gXwC5v+A8>{aPljy3P5O+{B$;Z{TFoK2?7O&1Gzn^{1jWNcZ zpwhJZUA^i!&yR3T^2=Ggv7T#90v zz$Tr_wkVVYwIMrJTR{u{cbx7=Pv6_@*Y2DK%UXZWi*KXEOFmC7S*>A~*{J4EXkl{x zne9z0&`Y~RQeW=H^9^tw5pGNFtSXylkD`QW0?uwdXJ|s0Jf=d>qpOYAAVDXN(Im^= z)K8{7psce|VY{S$Hn!T1i9(v|L+l9W^)Rg;=uo?D-WG~QL`8x=xTnVkRxheh>o?=E zk)<6s`X_J1${iXDsY9gxz!6fPFY&;FhExBRa3d*dPX#ub-{P-w5ph|4xHaU_Te^H) z;0CIG)a#}hcRJ0f(j1XH|EyNi&jUWu?7mPkJSCkXY%lv~spq5jDOdYC z1N=N!WJw((U4e(aQt_YXl!uS{bMzGYT*6^O1L%@_$ok{eYb6lNatu>-yJ;~ccFdx~ z0F90_J7E!I6F9sdTW)uL^mjGE&X(1}~g1x-ENPTr^`ejyWztYlsk zL{d?oFpXIho}%D5RCQkL$-gDh6`lRdK~Z~LoGk{lMgPT^jlCKo_>22o8>{of-OZV< zsp)u(Bi@Np&1ry!i*Z7g35~rsy?Nb_3*}l~*XhcYGQ889n}^z**n@PPNl2{zTR&Ju z2aFe(Ejx0d11977$Kpcdk?NxH>qR(QsF`suMi;wIk4Ilmm zy)m%Fp0Z;KEEuFuo2KR4m3x4O;}y{e*NyxC_!#wjRZ0xsLBz6+AtkhM0s^!l#s1Ye6~iL_V}dX-(sAK3SyfQHK% zgdTOGznER&m}90$0J2s}b4Qck8b>k9`Qx4&#o;p4<2|eH#>-XZWo~8L`LUo>90_vagKFM<4gg*u&0LhsOVbq z__uaRhGTj-t{p=7lNw)@nfT8rtx>{y0Cbct>8{T4p|O9&sGq)SL_@B!7%_IAy=jPk zBC}b+*$jT%nArBCsmm}QN%0I#Xj7q*$9B34IZ_mGz|^M`&`!@SWZ7 zo&=r{TB>$~N7Ll^yhK^(@hmBsA(`we+C@iwdTN~ifp0fOL9{{az=RKtzRMioVf`fnpgImI5Qnv?R=1o&5<#@oOh#IhRC z#?wW~?e{k#X9!GZUxTOLtit3L+|s0z7duHR?jZw46B_P~DhIU!K>ACGhPXhI1Q$Gp z0owA#-L0Yr&`3A$hKZA*bq|0r6oTxt4G!>xr6qvkhH zy`n>-B*-!UXiw)ZGV3H-djpOcwEx1At>K|n*W0g8Gf<}Oa)Pw(HuQUOs$*34L8B8zeyc|^ znsGTU4=jy9?n1taD19R2BHJ;z;ga}3iwV%^A=VoXdIkuuf6`ay{qs$)r1ty!{I7>~ z%2Zb4qW`gWmrZ#zVVi&l2rj`PxVu|$cMlNUB{&3kcXxMpcL=V*-9iZN?#@2n-mR_u zaBnU12aY;>re<2M?g4!+vt?%Hba0;zrAaflJZP?bobyk-HX>84|L}kpmsm#3)&8S- ziOL9iB@Mr)aA~MoJkUv>z?-3u^7_(zGt^6;JR_vkX+Cc^@oey~aUa8!6y(I^v>Z$L z*dxV43Asn&pOs_t9jA|do5zS@_~!UCx@^kfJTVQIXv`Q&LPrI>55WHd<(T^8P$h1h z4dy+ittZpeB%2Xa8> zAIOPo;)4px+RVz}wgcIu%O3sA_*9~jJPjb9Fm*~|uqGb#(=J1ti++>il^Z5;3cW4> zQ5R|2W;wWVihixRM#I{z`${`QVs31%Lpxb8Dy5*WJNYtxqn$5v43WY^g02WpTu?`_ zCnjRqmKAP+$Owk>e7M}&lCcYFMdaUr%bfpB4FTkd+r|4QX>F;nzW9B0M@t&f`fO)e zwEZj@x&J%84fG*QEp#~~UI%Y-7Yow}+?yL`(W3R2L53YW+H0r~Uk_IN$a+(D`J3Er zu3f~-mn79N;?V4Z4Dw;$>sRi6vY0Td98I|{;xUdESUeczlQQ-tQ6ChXo!A>}BaT5INiMd8|J>3i#n{}(3rNewgB{smZ<$nd#P87*E6gVX7MxIycn`r-|L+b zaOE4AL9bv-%RI4QUa7zG1@ro=f#!?upHm=Pp}yCzsfd2UArojvCbXY_k2S@Jc(5Qw zKn_a=IFJMo_fey@8o*Iv_E1W5(6t`z;1!L@EQ!~1g%>r0e2>#O^mZ$vOFNyz_pxy- z3p3ni1#eL&nKHmHvc&a{C=FBJzc;mwX$cvYfi=YH>yrU}c(%6+{qYDn`_|RG1r@YP zO<>fko!XUrjIA%5?4Lk}6Y%#|Gg0F{wJVh@c{FNXWWy|JXcHF~t*$QiZ^2zAsfkn$ zZJKebi4O+ta^WA|0@z}LriB}VBe>=}9Mg^CzwScmD^DB29W&+1dDUJ|M0tEz)(5fn{-{6ZF{c&>F z+#tgh@%4Ew|B7^oXiV5yE;i)QxJH?9j`wm8gfeclws#$x+p6XG{OLw06HE(c`!k>b z2je#i4h~Dl5)~ooe;c`XH1_$Q8cgqR*WZWG5e&6KhMOQ02~R17!q_YZ{OO?1s>B8@ zGf@vlCy(#5nUW`MU33M46BmmOe)iD)uGzq;(9SQcr7|}uPRZkjA z`Y-u+I)4QBut0`GKe2|Ht)z8D^omAj3&R@ZSw~d0!|N ziMnDRgwoy@|0aj@c5$oxl-wW7gM&Zpu+9bcmGC+xqhP`2qYnYjyI5IR&3&u%s9zLe6nSo-zlsX1Xy2Ik(hUAu3=Ey+%>PU zU`F{p`VJuao$%gCYqS-!0IDILy#{!b@^<`HnECzh`HZw~ccCozz_Lf$|23Bw&^I7Kbcu`AWyAbt#~lDF-Prphq0Zl*z& zw&!=3%4A&Y zWd*Vv=)KIu7~e?CXny4Mv}CpOWE%qT-xluGHYYW4q@tU{-QGobad;V3 z{}NRIqvg+EOFOMLBVR&a;jV^w|NWV|Wf;N8Z3fqG?%5p%IdLSIc`S-GHiEFmH~48V z!qWD^n2;*c8d`!ME%K9MCc{Gd>NpgA^E@2JN&lUzh|~{MZf~K<%?bxN4y#Nl4t^VO& z=ord&BUUV;K{|=jJ-s}`(CWwJt!*cQSVqldZlBYwQ2zeyK>gl~f0`ah{oZ0EE&esl z0dX*bl?U0Da=K+v%PO ztVbg&1z{aWP&#(N5V`+AY30B4*ikRFA5NYoSSSU(mst_|fIsX5o8L_2y5D}&Jgmq? zUXtt5!L-CEQ~mBw4w0$MO2)vV>#txJKR?6LlnlH80k-&poeoI|p}E@oZl!1Mz`m6%NtiAkDU!%K?Y zpb9d(2{#iQ0Y+w7Sc&8Kf^@<3;hP(pE1&#H6_y{b*5-tRoS%EmKz_LVUhE~sn_LOM za=2-;)MJT7)Ti0kaEyxv{7tQhGehLd=nWPALt!B4#T_Jq_<~Pb48F-c z3>T*_${(YV#39mcOdG=CjNZ7$%1>Az{8sNq$C4T7tH3;0q+wJISL`WJZ^NReaoDguz< z2EOfeWXnBtzwwp}cXy*HIZQ_|ByrNv=kTT@m>bbkcS<)%B5!!^{0sQD^U+iVfNoY8 zy48i3o2PuE2WV=PaN#TNzrQ$kV+&k3b9F}s8E(6QJUOh>!%ugd(_SY+3oI~Yw!w8K z#DV2+lP1Zivk;-jVD{-E$-iI&F!OJfU;so#sB95tPIj;Ot){fRxvLf;=Z*VLrLJa3 z7A?z>d63}-ByierRgUk_@-UmEO^@cP9T#sTctg~KZ+|I`i!CKIFelqWO&{4C3++*N zxeu>_f%A*BLd|^3U5`d+!jd@qg<8;SZzDp{I_aPR963kr#T6;s zzJW3b2ss*gESeXwr%unVVbp^5X%xwIfFIX&Nl+|S)WRrD|b)R zx}hHbi#G=*@rSzaC5u+&k>i3z+=E4$QVvzLrw;-RwCRcfGyNdM|P7#n3moaxxHxt369hCN|VHyMHkD)<{t9jc_U|ewc z#2H}OGc8Oj#HDwOZ-)QwTWz*OfC+Yd7CeE;?tzJV&hy+lco|g2Prr4W!Ny5F$Q{C0 zL5C?P5Xt%Cmgd$y;C>d&L2FpqfMuOU>#RfcZ~BYFtGe7>divjPpI=8dPXmU+6#&PS z^3rY=$s+q$zc7|l!U3a3T9zC9hwk6+d$ah09g|_@R-Y@P|iFu(EoK5Mq|VLS+*5? zJT4{f@PMkGc{JUiB5xbQpc0MP@lYezH(?i-p9;4Q)+>H|pzo7tGz-vX`gxfPF1h8! za=^zrrIBKnMsK1>i^!yt^v{l<>3Wzq`v9zXjsLD;4c^c zLns*~W=`Kp-)~alI^==SBEn3uRTQf~^pR~H%21;-dI>mdHY=;ll3QX0|D7`+sNnz& z{9ms3|KqAGP8Up4bzm+w*$PBOHc{m$pycy#irpZN*V~0wGjL7a3}t6|oSHYL>f2sc zdAtWyzf(Z{*gH@tDf#i9LjVh-NQ?wUhuQ>z4;`*-%p?Oc9Mp%ojehL0+z!4G{~HO7 zcA)*4cqsRIL%sH|u>F|xWk4&hX}}8$Rxp&_ePq(365u6u{xkIxeyJF$vD6;?O-rt~Js>LOr562LXw!y*cHNt!A*2!P`#cyU6x;1DtPSY%E4c}JHcUPL zDqD5F3k{5c|M9ae4|jwi>PAn|%^Kvy#T2%q&>2ZOQsZMmEKf^2a=Ol{gW_oO7_)Cw zKWXL0`gZuK;NlX93SaKSp0Bs=08VFw+`>XXU-31WfwGAOsXQ9X65*4ev^G7B<##F2 z&wNQRQBh0wA~ft*la*Ok4gF2ud8K-7n2P<-x1_g8Gdix;{N`#zTTd@N{0rM)H)jg) zNb5O_(*8n1>%Xi}IAPgLA9sy_EyiFbAKkT>T?+ci2~`0NgNM0(21)Svj}-W<^s5x$ z<7OMTXHMNE8$4Z)r_WMiql9Q#m%mzT-oiJ?SApyWKCF&kyIsTx8sHmF6Gq& zqGy->#b^6ff!-1DrTk^sl#_#Dz|XnrI6h3+e{@E1kvtPJga+l8G-=Z;DAm8H}KEC&^?}7Bs zqFB_LHZ!I46h&@d5)&IBMU^l4kWzi_ET28+^I%vF z7{OBEPq{XRQ%N*9DR_Cgy8$L)U7m7~h7>v-eyrb-?r2zEvirzWY^scx+Q+=2_d$m9 zzale5MU&@t;5YFGrS4LYYU{@B=<5nHT9Efrn0aMwinnNU72ugy{P!zbbQUB?0KQ|} zbjY;3@?15RMF3}YVGXGSiO6PFQPrj=&4|YibeNW%5G^+O@l>n)jk4x-lN~e2Ssij- zos)oz0siIN*m8{qY(w5EG zt!o%?MtD}X4WVd>_Sh~$RLJ*TZy!dVF+&iErEAJm8uA@vIITYfs}Qs321ob+6K`Ne z3XnZ=&=*}c-)LmE;|V&Zj}z@6YR)px_WMLUv3`qI1>ldV$&Z--D972teYi@7(1kLG zI-E?VmQD0!q3xDe2N`Z%3`TxE`+_u>che=S-~}fUFD1aYwlLM* z9y+ho0Y8=Dh2;hU{Gl(ag#BHdmdbilLsMQ1w2gz8;hT5%ykZqi@jF3=Ltecpavc*C zkJpw4=a6KQ)15num`0c>7=K4_bS2Qpfh!~5B`wq=A1!C^Bem@E0FKe}*AmF5VnR(0 zG;X<@BCCA1-^SSWJP8JE0hQ1`kl_TKgnztIU)8X;x)Mr?+p`~qgD*QJ?w8xtZ?*rC zF%S$TST;|KZW5@5<%Ba{ms$c0T76j}inHj_VRgM*_FIz2&;kQ1@E&k;o8L67(5pd) zOO~ucR}0$1_++L@H@G%$LsWH`ongnb*7gPHdF8BgD$j^s3h;th7?EEul}w*c0DaEH zj)qYGdCa`YI>EoyTLqG#b3e2(2k>Hl@$*=Leh^8>M$VsGQ<->+#CEwfB;8K9dhEGx zvxmQ2HNCcIPsvjQOzf%*^D*cK^6Vm})T}yy+RS0J)KIY@4G8LQN1d0*9woSJzUPJB{Qwup2 z3D?lZbq>!S7R1V1%m67Db`!WQUPTjpo(ya{hRc{$uA~Pg+9Slk4t6wf&_9d8brZ8T zWd+rr=5XNI%K6u_qaXsmVvwNEByplR>}ShP`NSX``XUG0OXJ0R677rtw?!9lVza*2 zW+n_VLS)c<&P8V@M$(W_{F$(49XO!(xe_xkFeVkZJa7BnaibZaez?VI{zft07UmOZ z+0Zr?&UV>h`SV#NeJt&fu#T(*|cmi5D)hF&0IlUFzs8{LDwmRv|r zP6oND^WODFvkZp(kk5G_R8Ic2TwR#osUle&hpR)v&;ROaixCgd&f*w@twk{&kl?1z z2fX^Raig41ivWapIPcweeJbdBHEzdY9_G}Zala;9kl~hHDeqMkUht9zGToEIDB{1e z>K>YqSGd})YO1-dPIhYk_fXH>N4clvw&j)(%g2D2{jiR3s34m^=}PC{W2aB7!r;jR z>Xm9C0=`FeOuZn(Nj77oJnYoR|Tj@(uj7N1F5eH zJx%r~+CgzaSA**TXW`l5+YkJWXULLO3CX)rr!YTwjY8-q1FO)%`evN zghK9Z=7(&qNDn44qB;!zr|=-dX{$4guA4)J{vQg2SB5 z{N?*qzsQNNW$}K-a63A+07U+&K{Vf(C>HrGK2Oc@!4P7@>Y(ZwI^@g*MPvN;zX?zW zZM6lAx|>^6%8TDUHNM%iRovHTEu;!NzQ8Du|5?uU0yo8|=W(&!@d@V$9!hr^iv&32 zTB7!Ox$57$Nd8XUGs59 zPJiunSy2==u3LXST-#4Wf%BzdlMfP#BUN4k5NgA?c}fJY&k2zBQM)E4bydQ6v1(NW z0`zrK8kQJ9hO3u;2bmU>b$auLCOo6Fj-KPnVQc>L+xf%f;+|9B0DE~AiFjZO?(MOP zMeLU?gaeoo?9HSYmiHrGHO69VTWK@-V4Y_7e&xf)Op8jBDFzvCsSH^~ZwZK#u0KS7 z_E0uUXem~l7;MkGZmcX@b!p>fkk%ZmUaU`4izxk#39g5OM(e?PV1Nb)D zH6G>E+r9k^iEFt_ahE{+bzMd5psm zQLJnQ#~#Ys3wx3s5QukT6NQK1_IWQn9ML;mPLQ}=<19{#bvyb9J@#C+0E30>$vz^= zYTKdLkD&5JgrJBCTdAkIZR5k4zGwy-2rDW-*e^q{8(i_eBT=$Vz;*^9K8(33B4rh6IL5_*1BO(NSK(0Ha43$bE`xta}2p1JA zOzYO;psCUBKq2T$10j8(&3yIaVFkEq8hmp`j6EqxOy8WUrLeB5a@;UqT`&b;2IAf- z5Vuw*_7^cwZ~(C8qWV&`Qn#1xv`X%5Pbkk^Zs{@G{+fW>FBQyMpieio0Y!>v)56|5 z#r2pdi`D$bF)H_oW3U(KtY*p3rdg- zyznyly<|+})a0ixAO53e7*pXFQj;nbLsY;l0Q0~J$A=Y<&qYY3pq^n`y1dT@g?jpj zGJCdz6>l5#nY|E9RSbSY_UybVmpEzXb+#7IW(HG)v}<*F&-y{2N5SOUa!i@{#t8AY ze?4BTqzCv);(X&JiDw6=AV9&gWA&twHKjasn7R<28hN}~Yy)yrM_Y#arGO!||0T9A z&`QBvEj86iXz1ro&dXUD6*g3`6oF^F#F+T3W#=HIud_7*pq|Z`C>}3;NJ|3!geoST?j(6&unLE0 zTf~4KjFNBtn5VZnoI}Mz*gXD*JY@(hJ?ihtCTnj+OOH4QGSL zOnqNCrgAyZV>+I^OXCPva9NAJse)}{_RG9oN7a>208b#1^`d8>cSE;8A>RJn7i*}Q zGU3^{p@X;-gO(BWcXcs>T>TZyM1Ej>{`wt2cD)?x@C7IIt_AN1+rn+6uSP!5oY5cy zYh{g5k8c*in;p>Q-%w!qdsQCV2M-SS67AF4JQS-+sX7Ua7X28#Is-XzgK-Qth99H! z>#M`g8v@e+#7f?DVkV-PzR;ebpbn`B;aIgZ6PuPJ(>%L#g-_@hfVx?LY-=uIHLu{7 z6EnFu#^SFLik?_5ao@UX6F>&~__+G*PxLyIZwa?K@rjn7=gNU;5pvJ{uWE@AeK()- zR#@TB&iJnNn0d#c0a_*@Psjj*H=zDN$sbl>!j!_mww=_PIrM(BRFX?va@$>}4SI*Z zBsKRdLFB-i@c2?1TkRiBZjH-uxQ!f!I(rRcs+Wcf2-N+6#aH67UIPfM8+n*9VA!oE zXQ2)WWka$l!+9SrxJ0XJeBwzbG}Y^dJ(VmGADY8$der~ zXA1$uwf@`A0OImbl3NP@*7vO33>Htrx^Xa>VpJ&v{L;LCg zDV!mycrmZfQjFQ4sxguBuYV;8Ub~?|OH@QD94!k~?S zQl|rJ`%feIo)a=x6d8+y|IV+@yvO`;y&+PsuY&C&>bVzRK1Sssm6A?v@gDd&GX zB3G=*W_s3X9^{LZW%xB+B$OV0w*sGF)#h|5GM9ToQq^SblydNc}k z(5K(4pwDFnyK$zS+d0D3pOD}KK|cxIV99auZqq5Pq6`z`AI~vf;3aU+)7BML{+I|QU-L;V9n1s3MKBezT+uUYmukCl5 zW!^HW?Kd)!%Sf84z?ab1B9i6qRg!X|#bOO(dnO;aEFh4|610<&NBuTPp~of+d*gu#w=te(wCnG^w| zF5y{IT8s6zDUtW|zM|5+`3UvCVE){*QqMwe8qh0I+t%;P)fKwulLP8ZXzL{sQR9A+ z$>pK_@{rNEE%cg>7Mc`=s9hfLV6VIi;QCyZ2CO2pJn}6udvd36wz|tMLLZeyFO_{? z(vEwMMx!+Xy{sx`#SV{7!TrkryGB^M$f4P)v?Yp2Td^5Vc>gX<$0KHIWh}>kKMWS3 zHlGFXl1b|U=fFxM)MeP}tH|U<@`2H@moD?566H@u<73?M&}!k1V0`c zE-gmL-&B9-9DiS&OU*~_@&JAPI1R@$;lf(+#6m=H$O+fsSe?9mnkGqJbaQK-tR_D6 z%W;PWf&uj;d&A`+%oYYCEAY#*j7;e#!N4QJJ$d?&uG^2s%eqImRlY>J?(Q>>u zzg8=MsH}|$X5{ZA&t953==iF${T2h)e7_r!>jWs<W&@a}PY!egD= zrh4;a8!8K5tQ7zT%sU&0r&Afc@dp#)zKt4_Nis(kXU`a^frtWPG8oF0oH##8N@=wlBAHt$e zbMkDF%EU6iIH*~(>p+I}f`O@gZ3&R!dP_M;o>7On>oVsK4NWA$$3mjSjkk^}ZfwT{ znazZBTn>hvBlN=Cv8N2QcsC1FfGpfcABE;_jwC;ST=u4%27*{agXJyCN^Yj_Ui)>?u4$mp^F7kYke*(^YW&`_W`JWVgV< zVKYEDC$!)+Ge*FshftgB~{|2o|g1iML*lY zFwszu;U=kB`;u#H7>Y92B?(1uxe-KvSLqHD?U%XY%wYyE_2JLQM|d0HrKw7#k8DRj zp8=g*)r@CZqOLf91u(v5q&kzjELi&qFyLNk(*QsKecz(*Zm{oZGri4)1Z9DZ&~CfY zo2z@C0~UJl=ou9Lm=Wni{W|o^XF`%pxPa(sBz|UK)UhJ!2Cb|H7ULfUH~#+ksft(! zdY;pS0efa9vl%GW_BO3)R`S1YXJUgRh7+6c3>$c~%dIK?PT4Wd4f?*tghVHpJ;b}* z&Io~gY5Q|m-kfzjzQlDfuwh*!hh=~-d=W6WSYn>56kP`>_lThB3S@T%iYCnn`KKo@x*9e!D!~eyggj5l( z8@;nvqBIP^rLW|2zjnvdT>=NzFmz2nzdi-^1|-tRnWE!H^pCO1nEPnmrnTve#esng zH>8}}vE4|lbmM))ePpDkTxy;tZ*4^3(CfNOo_f?Kb`raP0b~!G znu&LOObE#KPq%zyEFj|McF84b51iy}do)AAl!zvwZyn6Jq=DiK0sICCcH{~Op5zuLEjp)qx!`#=zs1Y#OE1C7J zI`MgXjvzr!9Lc7Mx3#12mB1_T_orV8(<+0So!`ji&P+Q|<2h0wj&9rQpI{? z^^Ig5`GKvV@J&ztE|nr2D2-nWe4ndx641H&7h>!uN-XMsfWE|6{yV7<4}H!pi2pL? zB}jUaX6dKFXvRN9>d}V9J|o0U^nI6-7giE64Xy3pbgXrA2HkvMCR$H7;^L`aH{BV||3Z8d7L8!ng7`?HO z|M#h-j3Wc-hDw4B{aOcxKUj=2KJ6ICbO|8CB`}V;&!e7=yzK*unB{$y=P=BNRTk~gr?7lRXfinfeX)o*XMT8$VcsMk)_6p+^+~}_{GaQNNE4U z)>}mEAC?wb)tHJK6=OQp0K4s~Xi)TjM z`v}0VZvUFYBdgn5ggO)Fos6{pUU@C#AE7P%(U+;&YoJ#t`rF9>r6m3E%swypGI>U6 z2)*yS&N*?h7Cv@WgoX{NCPmDmtc4Y{C5Cm2v|s=~(3EF;f%G@O%Tdz|Ricr`AV=gV zJl_au6WkT6D-<^q>#MBYXW~-pI5&GA4-1gt3cLZSfE^2) zd=a=}1B?1#^cxPcAG-V&+c*hoJ%b_&Y`a$Wuuz+UEY1nz@?C`aVE|||1A1fr@;k*l{={71UrVWu z-(-KGBgYTNZ&+DA3{D~Gh0bc(+8jtxr3wdUq7`XJW`SESSgQge8Y)_UlkE}MN12ta^lDf=hSNoKD|J;hW8W9!`n2+ zKqNOKwEWk{`Je0m>mJwayOoW~uR$=L!ki&an|D!qIU60Mt{t`OgK=fRyL3#N@Mit~ zOo`?p?7F1V`yJ=Q;I_Oo+0FaxbbFlEtcr%f@-tfAaHpqXZ78d))908*S>`!h>L6Xz zn>g3J19ivRf)9feOr_o>cDtCI#8ss=#W6agZW+j9A!O+5QpFR}uQfE?#w#xF-jznh z+w#`=UnPn@3=U6UaY>DCU5Uz3$yS(UQkE=`H*++VnXnP}bmM8ac4y=zdJ-+~xW~XN z;vd6Az56gY4B~#{x3lblXq`^r+tDXM>mkc8ntJ~4f|OSd2Ag=-X3BnFXSg_GG;M`L zEI(bSei+_e@4SjSX1a>#PvJarCdn6D74RN~~~a?VIAYbkC2?a8^UZ z&U_f0@b!DtdYCbyVX92+3+jnX`Q}&yYN;5L7ls*3uHE$bz-AAO#UPw&%{+GoxtEWUlNynDR`L+uZpF8Zs z;K&la;$~Z>o$RA239}$v;&>c$Skpi1W$FSbSO{_|faJ%zSqIVTlWL zvaEF$gd-=NF#|~;nx4KAkI4|-B7mV?a_UQ|ydhknkMcojsl~)2tF)aTkpBBHxaiS~ z^3Os1RYS8e2aV6dMXIV*;q*H@QfFZPe)@B7WH&rx(=Jc;wviSi$Bxw-)rY|a5>3OO z3#OL5gVH6f$2dol$1DB`JB!D4UFNk#drNJOrDlu-y}Z{G43(l4$wAnYT<}EPm7DA`8jdvgDnPN0)q@0%osCH$^G^VQ}8(FDC98gGIeI?QM^* zYXbOwlu{EqzGJL}-_}jA9p1yTp?+T0y49zD5wlYN;BmR>TmC4=rA#iC z=w>wd&D^wtk9y84-UhyjX9NZ-u8to6$YYOY-rL6r47OA`# z-M(?CejzN&do@bHS9Jcd~j4M3g+*(ucvNVx7QM40{Oa!L$$N$wrdCa|Xy44pPg{^C zkf6!P;rfmDyOi+OP-u%eFOBr)KMYP1dz6)rRo&MAo0b;zPz6N{srqCKJ#}x#kuMGf zSyTH?ST~bju~WGH<<*M%{o(V6!J#g&f5Sy3x=#gpL)F6`x8dJoHtVW7TGUVtP{{Wo z>hlG(TwKO`UkOiR&XFwr%03K^J`R^`gI_@yt^7OvRwTq#hrWBNFyoU&qU|7JNXEtg ziLB)gJX|pVSJr-zY)9Mp!{B5L-_QST)7QFE{9X;6kt`2q`~>Dap1Mj&VF;$6wm(5B z7N1oU5Oo17lcUmw-H7pFaGDp7|BjOYVgCzx($tm~N#z&S`=E^jm?nGb{8Yy=)Ut0l_OpggIWBM6d9-nfK}DGyu(SU=NXD5^c0N9Y4S7P+f?b5XmMf)aWfh zA$%B#J;nhp>*MA?8e#IsqBo*Nb03;;b2Qw#O?I!Sbtwc$Wig%~GvMv9ORXnyXq>uL zR!KNpjr>cdJ}hw%B*vyGVQ~7)7WBNN=~V{d_6hA0$Da-5rWShT_mrhfD&lbWNwQ&j zH~Uix1&5Ctn1`)A6Ra=P2I>9iXdwJTcgOt>CJ+eBF0IDCIm>t#^vcv`8PVfv82shSvcdoJid z46Yhe2d>zl_LTs7sfE+mDM@jg|MnzuVJ0Vxr+?zVojprNS~AU}d%2v{lbzMsSAoif#ba1)`%}#cV*@h$872Ml4>^k1hpLjll32eYpx*1=NFP58j_a0X zc?u1k^UvaC-6U6>J!ye9TsS+K7M+h}koJjiCy$@9YH_e>?#yCl4C-_7{4hAS45rZw zfjWPBe@~N`-Ww}aOwjPgSbgxz@YVQI;ydwtpG;ik4UJt9Y|WjDf~m!a!A1UG_ITV; z!mz{ogpu)`1-h_8u{6QT zNFosVy&IXx0`pDe>r1UZ!vakSt8gMV7tEEUNVJfLW)1wY1;Udb23K!e?}LS8md!t^ zY@hrQruuI|$v)xpMViY`ov1P@lE6CsW=Z8QGdunoZGnUT9nbY)aN8;A^_A`KYXSnM zgX&O8Ql+QnbGQ8CFs?OM6iDBnF_N?e6-+jZ8?j6#JSm?_kvcFu33l_KU5kw-gC5ZVDji z_ z%Hx7IQ`;^uf3qoh7n$Y@%DD8D;x0xPnNz-+8DLg(vK_zM3ZxtUL^b zolQN+0l{E&*iXRx$Sc-L8Fyc4D_HHG`;ned{=?wzT$V=0ec!Ym^9y$5e`+?lV~tQP)zJ#XYGx=O23P-+_Df6GX~z*6mRK||F-VJ)f|#+8 zpEvgZiI3@7rPqcwWqKd|hkD?NhT84R$@z!DH3H6hvk865(6p>2zNcmh0m>%*ElVW&4V`TDrydZKC6lFbIkxoa=XC*B7JU&1Zn?0Hb8 z^Xc!1T^XWo@-IW6Km`k*TH>Q;^sCTNwS$Wl90OY+*#DWCR!ftI!4xhct6F~=Xu#MboV$a z7sslJ1X3_oYHeZr1wRbVvxvoaA2=HbaW1kH#i9J;hl}-UN#0x8L(a6h`bD zeGP|ok&}k_uj==IuK%xcjDqAeigE^}%fj$MCdU?I;|N*1P7x7UQPX59ao)v%)O%pr zu~!VD>8om&7+yqv;D^D%=p`DNQ7Pq_#XKRl|NVY>3b8yn=c+7E`6{Kb&<5s7Cr*kw zX+3d`WeUjL>(KhRrTPkoT#@mAdu(3|xc1JH&ryXaPBeP&0hnxe~|fw)$1|9e=}k7d#1R$81I zAW@ooxpum*{jjD^`<6JW!6mY9|6g&mYdX_I86nZGuST*@v9j?Fy9Zl9?W457wmcfo zRI;naU?;fshrx|4e>TyrZW~&<1*&=3RSf~;`u!cU@)0OLZL)5XTJUR26^XwBGmqH2 zu3)}-Rv-6uN+x*i!wTJycs^Kb`1FLD_^Mf>;iih)pYSVmn^cUS-f&XjpQV;fWVF&Q z$w{`|$E}#xF)rLo43hAEQ(Vipk7y_`8tkmvEt?Ti6|N`3`&Mq*PE-~;h}$g2c;*dR zs%|O#VNG4z+N)z)C=%;{(axV(ni%)5ds^X6U(I(=TE7o!B@T}BGDm9@;F5cnH>udcm zIL;{U9*JIs2g!WqU@)(zMP>F2dPZA)>kd9{W`v1c0gD7LCAJ+>KMG{ZRIzVc&=M;5oPFYKqtyvNC%3(We@o1s>Fu0`W zWq@R8H6)B;+|;PrW+<|)-+Tuorij2aa<6(%wvx~ZqQboNqe(m ze>Bl%#O)TJuyp%pq`A^xgqt(bexhEPdUh(m1=c01dmVS#lLhR71IFjWnz|bLc$&iI z)xbve`5RcdUHkKCB<hSRQ;Iy!~gXh~ooBPC4GY$W-=e%&>;ROw83E6iRB@Z&@Grktpnjm7B2JEL|Hf zu^tX}bjFZ3W&d`ig;0iQT^Yf{O(OJ5ALs2D!?<%pguX6?I_<*}r?{m$qNX@H7dH+~ z7F=yaXy{Mp(f0jht$*M88sBaUw~gstJd{l2l7=udJkUq1v z@#Y?;ZO-iV7UCleIQC0bBK`RFo6RCv&*J97@wEZ&X z3hlFOe%sd?oMaT$7}ak@vhJwVfn4}stleXK9#0zv@J(Yiwyj2u-LP>Q+eV|tc4OO( z?Z&ok+iuV#P4fId!oGMu!S6U{a%XpDcCIVU+zW+H@{hQ^?%V$jjxdU4t_xNMG(IK< zBFGF=t)yJ+@%>SIKVEB^ZQ2nbsn{}2s=uLeq&Yb;c4j>U-URmJC%!tw5Irr=HrVX$kJCgGk z2|jiCdQ$dGO++bsGw$UDVs1K{!qFj#g?QW)=p^uo{E?Kt=E5X@rW=%oF4i%)z#&!5Bh!6M z2*nNl`e51`V9XY=5D`2w`rfu8FHAJ!EnLoYzeX{R@cIR|N`?>}fw%2-M)FCzd3|1I zZVm7`7#_~bqkEg#k$3hj>ike0ls?auBSYFR=*S6i+YdT%;SzoS#6*y{`Iwf)ASU5v zS}6wPXb`q`$Kb242|M}oxtqWtEYD7zGfOBfQfyHKP`fw8N$WPICG@d#M5NLl#fkMd z?T$q!(elWBSJ?v{XgDl?6|#HT>u>%qv-KbiN-~{6Xx}U*4O+9o`Bske1!C5cVNzZ@ za)v>Bf-}lkr8@v}MOvGKt6W#K-peD<1{5uiGXKVxeUTu#Skw(5NawiDJeDrdQ&5Xmlh z{Mno|)h#!$27lF3o7~yiJsE(%K3Mc!oA6eeyD+st7u!DyYNv;dB$z{!*fUE2V=uO= z!7LXSNNq4RWZnMR#BhVS;|S>X!}f9`MXN~q&3)!IGi5!R^7WpT|D9)~7BFoha}PRk zZf)t%&=0f+xnMzYVSFBiCE6PiEJ+5)uik8b zlEv500GewJx)`;zgl)5H#rA;wpze50&V-=#-%jl!&N_&M;D`Dap1x0x!q`xu?%sE( ziLvhM8A+iKkB0xGwRFYeOFZ)Tfh1UaB1y+kR3=%4{4hZ2>KLJXIoczUHH#?Ickrr^ zLydx`J^v?eR4uindjM#-7(x3`#a6*d>pV9W1}9!a3TrUexos4)?~Hx=AHAo8WgSFX zCu*I@E3!L9nf(z7Fq@S@5F!H+D4Y422Q@v_sF1zhJY|ab#S`oSRTQ`~k z`QglJ%Y#z`11kJb+P7O>UWUZV~4oiu8HUk~dzp=TNgJFq* zK{p5*PQgnl>}{JQj>aNg^%|DbTukBmaUkp*6cTKq2FLJ{yVdviQa#eLK$yX)@Y%~R z5@Dz)E_8E6@gJ>e!GECUKT3CUWx7HTlR+Y9lLOsAT|E<_UMzoF@IL^H4^rRF29JpC3Q})$Ed0*HAfb8`%}sZ3%<5- z!$29CX$J3}@1_w2AL1Qa!0Un+`HTM7JWi-+N3D+`oGpb(wF21_H<4ocSXN7yz~y+~ zzoKV`ZOLGCQEQ1yRCL*t^;7<%K1~T}Mg9Wt1$X_O8%USuua&BNjhtdxGp(K2}soctBU zaT0&p$2~X+H`i#|B%^bIhJWdGrZ;XH70kS|H2u@4c)>hXS$bCFZ?6%rX0cx*@5&@j z_06+EQsJ=9=6)8YrUsDrwG?^9;J9!{sD$n4A%8p#Cj>Fe>iPyiFJe7kI)R4$)nqQU z_@)zG9yF$0@jlydum|tny%k2G0S*Hj8~o*cQYACzr{W7?7h>*7^bC0b20JZXJv6Gf zSstI;7(<|Q!MC$1;!uv|qlP&2QCRSG1cD^AsAam>nZoUoYv+>vnXWh{C|$OzR)f8! zu<-&E`>tpZZjrEwE+IEbV*hZdTM6CRfS}hxNcH%^%cC(rxIp7=$d__*J^FJEY6% zgFaGujY2XBKO)d@(YFv8pGKGTY8a|sl`zb&9K`laUuHYmw`TSEl+C%2_f%M;!Z=!S z*WBr7pj4}@fG(&YMqQ=keRB6>bR<#!a$eFOC|pTo<93htmq{y?6Cixt zaa)_n@=F25-pX%NhvT+`Q;>XW8h^i{;V|@wu%o6lW7Z^$vCv7zUy6r>WuG}fF7D@KY zp-!hgDX9Prhp@F~`J_&J)|TUQ#CucWkaKpn?|hT@&CaIUPcb~A3OitJUdT7RXkuH; z^41xk1a92#d*hM9Cnwr9{Iw8+?tuw8$SPFK)h^+GpY2Ws$v5y0r;$ViB~TkD)#NN5QQ1K zTgzzuVtxjQNm7P;buZ9x!JujW{;rnCJ+UZ%O7M>$g6B`p-OfASGk1KmqDbFS{;d1^&|bzjyt+SZ0_b&~U813Z?X+ zDOAU8#zF^V*euLXYB{|5dLzdxSEFtu;>UcZPkPhRp9XHf2#$`rD3Agu&w8OAW2e{-$%9{}Myz?q$LXTt{h)`}O=dtUwBEpKB{xK~zYrVt zJB6^HV0cG<=ME>ikno6qb+#(J1O|d)yrQLlTFNN;h)pq8zE;{r_I<9C8dj8V{X;?u z{vlBlPe1WJuT-0J^E<36t7&5K?jBRIlRIM{=5gPI%gW7S)}H{@9kX4T`A=pF3avvx zlCMfm=rZ_{`SU?Y4F_@>Qc+%T``8OwzfC%qwKx}HsKC;(qMfreMKu@zNjyhj<=fs=|^0j z`7gmZH@_2E3@9XhRjV7XA!GLW27T~fo!r-{nZWmHfNq;XEC}hs8Fb=?W@O)v+O-=s z?-!QkW6VQ=L;Jw=7`r?6HyliC&77-1g6Nbelhj~>aR2T0sFz>>Wx*vu^!TfHK!|5v zEK6fPM%N~_#NGHvU`BMHcoIEmI0QvaYJe^t%`u$Qksg!brp&ADWtOVZVV-8tS%ORV z#Num}D_WGA>HT&#N!zJ7K2 zBU3jmvRVqUW(MC;oW4G}EYieo{}&1$^A?q`>k%yJNvI|lfjZi+Tv!i&%GVBn^TDRa zx1v3j`%9Yq5=p(s2gdFm?GItvS|-`pfBu4>V}HKtEi04K{*RANhr^=_40u2cI_y8; z4%AA`Vf)t-xcIaUXy3tAcK>J(j^FvlCxEk%ufjDOeQ}b@pymw1(?qA0rw>Hz*|2OI zP7DSy_zkv-gXC3#$e)n`@a4%`Bv!f$WR((8&`$jqPKCd;Gp+OV8_8G8*|Vy;fAvoc zvEF|Gk_JQ#s~;{?7ba^%3Z&vHEG-_!JLceD+x=7qjOdX;&v9A5Xm^e3>6_&}8AE?BpPt%GYbDTd08(#-;Dz?2_YmW4*=Nin?AR7e@#Qvb_HM~= zb7D@*5793>rw7aqpF4IluyaY90E{76fnn1$tK8VHsK>{3@*Y@%TC8uf%2whdp<1a8 zpy3K1saxpmw0F~Q>LMvIQHHrfKkgue^ExD65AxXUI470OwuzUnn~q@%Ct+DmPD}qQ zj=nn@7H&W;2bm+yLt@If#G<>8SjiGRNnvw(;}5>=VdxLHB+v9jQQCWLQs4hBNwO9t zTXnHNGtL#cu20G(ri94jOJVL|6?VNEhaYHVX40bF$K}2u6!j24c92ye26AYPt;>a zhKBRK-mlp=ElseTdu?u^JIea-%>D=42_G93_B$IHL-CyYd@VryiAJ-#UtFD(DIzSg zne+3lGCJ0sB5F+#?wxb|Q4(l4=)%-mDQ>JTNN_yRVeCfCU6sl}v-7Ulf$b*W$C>WM zWb!%hG=<*+lI{TwKCO-!=;Ps4&s-V|;TIDN7^?J-kb+n^@eHm|79cp!;!Xo!Cab(t z4tmdx7_GB6hwG;;;E(CC9e)Rd7AGdt<)rZ0E2~?Z`N8C8B7@0deRmq0gctzFIK|YP zK++fuTT^qrhoi=+Sx{Q*2qRNp`A0$^0t$5E!a9tb<&BAK5p@*9d#{h06UOdNAHPw= ztMlkHA3cu*jD%nZZ@*mHIJaMD6*Wpq0q!$T@RSe-SG?!nVpIryIoXcB4^dy4A#ySE zRzU0Lfrg|0)@vAUe+&q)=H-FO&JjWx`xTYP^^tigzTxF^IL`rXXu}6#^8T(P!$YTc z@%#j!z#-dAt@zHbdLlmA)R)SU(vkCW)1KYFW+3&*Bk&P4ocM>PUHyXaICB4+j3nxK z_{1wyJ&=u6ewSlu-!qhv?5ZXRly$YY z;K+~=4EZrx?+3ungNEZW{X0km(r|ak_T4#SpEg!(;C6={I9idQVFmx zGoYJl-=+AQ&D{Nw0Wx3v0IgZgYLIR3k))`Ke;jn;q=0o`5)nrSM)7Y!DPs^h@28fr zzeV?vPt4`EZkSp8omv9)>sXoT3K6aQX)a? zt>g3~)m{OE=#t{Ag>kF$|+)?;lxY5 zl;hvND3zW!&(6!0%3A6K_Le5KT{MRCB$WAHnOP*gL#f}Zgco;oX>1L@Gy%qH6ltOZ zJ2zxd^3YnNT+6RoP6E(VKJc=%jFKaK9H8L{p_t*>bC0OT^UCJV*n1s<{htJzsAsr6 zt^)nKlTeHatwq|-{T9&;=-SrqroD4OhiJ7f>+8a+|A{c^#CwCL6x4>B&BHGx?_M`Lyyh0(ZBs_I6%DxTYClyLh)lc_-zIr_r1MNx4y&$Zv-kTtexl`M zr~w469hR8P4P>Ez16b#_NG`{eiWP@huPmpTGKt`K!JjRbvx(uZX#JfQN~tM%V>)1G zzknubE(}89dAHX@n^CRJ4hoWVQnqY)d%+Hwy!l}ZK13^4-{pz!(jZi+c?Emd2Q6d%^TE60+YAYo%a0| zW$zLTx(AY_i2@j+xOXM}_)PXII~7Khqai$8?p}H^Yl}FB{6Kos3OpR~j`~CpiO^<~ zB%%@Z%QqJ-=Cxp$nz~pe)Q3&L+tQ4HcYhyP#p+Ko{X2u;I=uu07V9z4n7x-!KjgE$;2?B?i7%1%VxxH6bu zdZN>UeI_x8@&4Qvm7-9K1}uN$(>QAPeD*EvCN?%$^`(W{mP5f}mm=ai5yZf0;0-i9j)eC`PGncGO ze&jQ%axwf;B$9K;7Ll3eA4NRqJ1YN*K0Z6`=^XjYm7W? zTB9pfLBjoL>f-8}m9L?1+Oi+{X!9X_Q<98iQvab_e;6S|oIVB(7ky&#vZRDOcKT%tw{HdG zgSVlEmoN(Z?mjuDJf!TxCnz=NXdIc`T{1$}mFpgk1gus3=zA6`*4cM)gk!mZrau+^ zg{ac|6a9-!Z!x|s_$|f4bkah5myBt&A}O394-6R(Cwx*SAvkn4m6_hH5_NB&E^ExW z)wCtBw2}7s=P4yX)mzM1*nu5h+{~^gq3QU0=l;j|GMlEJShq+XLRlv0#CdYizX`q2 zBO21&$5tS+&2Uw8lW4TWe)r8x3p#W$b-msRy?^V2lQ^fDb%)}=k_WOjzA5ZXSeJCZ ztZ$~lT%t0_UXG!X{(W?>+?S@Ow+9XX4mtGL39usEFvTAV-mi}d{|Lp5%A4Wc25=aC z*F6`wfGXG>hd<<#fvD`_xSoXetc`g*@QD z=Zc+>fh4;T@Ae4GM9R8@Fi+0-!@XRWMG{dRq<3Sgrz=b>ufGxd*9P+nDY7rc>?fe- z^!N~ZKGhPT&yI&l(v_r17zgcPgx+R(G z(YAr{Z4v$2B`NK2zxwc|JCj}P*dc<=-249!1!`;BT4DcgU0Pb$*y)( z#$@=-812^;Xt?0XWYO_i)%|OBLKdTLrIl`l-Kfmi;xm)!faTh8;jTum?w@}v#wM7M zNQ~KP1V7I>g(t5?J@vA|_gk#a!a(J=7*+`&D8!BRgz~ zM_iKy+$ZKsNT=@&oJfDT;bsaOs$hOnQ7q>3nM90B^5e0*{) zeWUGXe7Kf#UjF}j6!H1X-c|EdGo6pygMal&`;0QN zJT@zkXicRm^{7fZ;0GEmQqzJ#9*JgnuCvyxzTHoBby0!P`5bR5I5GKhc{V#48&~jW zW)=0i0EWbWiR|GV*cj5pzV9k=Q-gw58$e)l8-OqUC+WR-L{2-Z&bDO?8cro(^iq50 zzM1}{>){*m=CE3wI3LM3BIp;Go5zp8^A7z4iN0Br!7;DMPx7oT5CSMToo!QF4FxyD zL7>ZR+2M;7R*Hzjb-B(en7oP?5QBzW9DdFHs0p1dJp1ZE@%0Cd!{Fo40512xvy6F} zhfi2TPh)1hGF!p6G{ysoy)5NgK-HofsXhLu;zI#n2a-1W;jQ1}4FNPcg2c@zsgbYX zw<3Z1)I*<*`pLHoQp9XhHTSvi zQKL&J@P}^8GxcYvnln@)e=72UKSAHbG)nw83;<**%Fv?|kJ=fXngfobai4@`TN)PU zf|+~~WSvNKInYBLp1-m>(?i};wWP;CBEy?ij*U_j3DMXW~bp9!-@bX9lGpC+}M;f#DbCI&DOEV*c&g>f;=85v`LhpQ8#plVio&B7kpSTJy!QBRUlh`6CAROJN_=`W+N@sAh$t~lYM_cm%Iqavku34rYen8!R5U{kb1tJfJKqEL z*?zYG{8tgpueSv1GYgj!36C~h6v$i|ri>G@)W0;a@YlJAE=7KfGo$SztBUi7`5RV<47i-;D(6ncbCr;JRc`(jf(IN7$}%+d?T5p??38j`WAi zS{=hZZzLm_JF#aN{H*{Q4m5C1$*$(Mdl(bXe3g8gaj5cVKXlm_jn%0jG(bGU zna|yPMhI5;GF2VP1{m{Vmy>2xZhT&tFzC=l;=HLD-x>LM7!Zoyj`6t*{6iv5xp=Hc z=?0?cqaZg4{f$qj6U2_~g9IZ6LkxgwA<}bP|Z0M)kuog8m^t(17y*~G3!LUwD z&|#TNh8Vtd|LY@3>`IW*2wAto#``Vk#JQdv=TR0?CpsNrCQ5&rIQebLr`woW zZbislk=WEr)l$)%EL353XKN+4N5K5wp1W>-sK_3{3EzfJADi=wTX~kM>IGVFt7m5{ z@Nb#H($)ENyLD=8swTv(Nw?*N^#WqNwRU>!q>@kGDgC?t%(q^4!hX$Y9~}Q+5gf(> zy|smx9b20JjE2qI0iLDX5`zj?lWR3Zmwn1rhAa!viSwJDTg&Hr4^-Fptu}1bf(a~G zA__YuPG4RZX~dEr-Bj1C7g}*a)^V z>8UR~+hvvp;D1i>1XL2uRg7<$biu&8|k>n`O+SL$L;u*IP9g=S(>_5qtO&1UJi~=`XRvoRX4kj5WAKPn4{=t zqBnfUr8U3VbQTYC;*MI~Upk#AUWBq~?*v{m{jIaMq}tSY{!-i?@1BpOe=1W+79ZIx zbmFeNUeWmE&tv_dd!Q>hoY`Gt;vs2aEdK`rlZ7+tPLq9~SBX;Y9)y z^SV0H9Kr08YlndrL5NNvvJxHA?F{2AA{6r%CL>$|IiNPCGaHSQU4}%I{*)6JN)+L-*x+^PZ^_TNrp@*-5}C9L?oXB}Io zN388wHj=RYJA&Y^(7yAR|vRAC)E>}R8U4iFf=uNIKm85%Ivg6u*C)C-{DMCiOwa`(Zw z0;VRy_~>y$d}t|}uf%#orzAhj@mNpufex!7A@s{-{lG)| zOpN;eZ?S@Q?dQ7dyuKS2n3P9lpyB_HU53AoBz^AUP2l1F7!;U5J(u-GA(JjKfVi4k zF}SDV=iE9}@n6L)DZ_&=Y>*Vd^k7q{rc(WxcE(q>Z%(d1nruY{Y`M#Txj!X@{XRe5g_`#)-2_yQ z81f6mWe zL#y%5=Z^p*!I{>~iEPH|Xg_WkrGmbxeZ|vWn6zlRP8V{RBlw?F@Gb-w?Js^|10sb~ z1t`*AlxttGq*L3DU)R%)9YPy^(J+#7Lcx@-Rb@+c?cMYc0z*WqDd>~=GhrM+mA~!- ziSvz-H(3Iz=DKh0$Y(t8hnh`W9VNom8L{D_umofX8c#K5%};^|y}Wp?!(>a&jQBiA znw;}}lpL!Jq%}J9eyc!*b@O+_NSW?v)xnZaSh20-MsAq3QLTDM4gNgQ3*c806-Tdm zI?PQyKT!?%v2)*1lG&7IH0VY0kaE-@2kj(v|8ldN_UW)5b7jcZontlh1G@rYxdDGk z%f}EcceXgfkw#qjWwYyQ1n34T?=X_V@9ZUVO$K8ceVFstef%T*E5JO&bgN0`znUu} zixoYFsMCnj9~?aG>0MOK#9dL}wH*C`J;Dc)rMSk6jS#{x9MR-Em1&U+HN(qD~_zkxF*Q|(+k-)@I7IM0r6?Z`- z1unVhFN>35bs<@-KgO(7T)2n~l2)fJ-pO3)9uV#TPMPazRQ=p_SWb;xqL5iEe15ZE zRc{T14`C{8q;B9pbN;Ew_FH5kp=nfy!U}V9Ad88)a^lfk2>xFidBFL%W=zygN)bAH zEQr~B?hlWO4H|%hu0+ZtfjQckl{KlqE_RKT3|iq<&ILS%S9ZUg#SQ4+aV%fPgAJzl z)<(so@$e0^(Y_itH{TP%x81kfSd2-P{MSgq@sZ|aqPS5y(pGIGVjyv6-WjGgUHO4G zNiV*S)^N_ZrQ39h^vCk`Devev@XfU=qZ0RRy6FiKW*wl99~{rIn&}J_{Yda|r#rsF zP+8bUha+?xKLj%b*&eT8Fi^Jxh(u|{)n|TYe@xc3M&SLOS?b>$RS!k2+CsxDe3aBd zCr+MHHyFzN7l=%xy|`ubYOZO0MY+p#p)|QIONTIzTe&3fnygpo6yb|fFTa2H`7`i` zT}4JkGe4t_45)XcHYX%T&4x6N!njJqVv6cn2mg@p-#-q%`~WH9r`9lqQLeyC*04j^ zIjWUs)InxQ_E-K`Gf?YZQ?;KxsFZ!4bxkG^_%~5(^8+=)|EmCV8_hxTbiAObiXuRR zryRrH_(dlIbm9U@MFW*RT(jQ_c#18#LI^4^7%SYh(0dO*k}rhXAoS@FxSo|Gs%l(c z6w-%n0-=F$OQ~hgDgitKYzcL;YrlR937FK>x;=qu$0GPOtYFY^&8LGzRutmqiV=op z#<*sQ`PsC~nCi(!ZnKDM)RK*%3VO$OiFxT<&5_arP^ z(S1|@Kezb0?*AUUJZW&i4|R;)CR5vz#V5-T29{GNyoJJm!?o_o_!2Bq^7GEik&@O4z%S<RyY4$p1&}mr3pqi{PN3ly-{!ObD!Wx_VooI=NKmu5E>7zHU_Z^rCDI^V6iew}A+i5I}keBZrO`DuB;7?&<5q_3Vl~(Nq z1{Ac5m$zryseP|+w?8b-!x43fP;5z7D>C2Wrwd9;IC&4-(5=@6XwaS~tyR9LZNk3W zWooK#7Qd5~UmNEnhIKySAz~AOPF#-O`Yrv;|7T8%n}W(RTyuaAabXV{VT3#U6zz}C-3AxQk-O;H$T>EB!_|rK14`_;~4|U_VS}dU9 zz%yozgBe$?sQAoYj8T$+^0dEAK`7DTkbZo@q-NRIY+s5@btm%8wGYj#sv@sBKOHDhiOFx7f zO7LHsR@4x46BR!%+(a!?2Nf07gHoCadtFHmR!r3#|bvYvR++BF% zc?W+!9)hnGQQsZpg>D^vw7}TI*Jedfd$w2*gp%tK+f$2B4aar=nYz!dQ?z@AukLwe zbQeDg7kFAzN%udAC%lLlq?w*K5vmo33lQBzb&Hv)4}nc+20hey&|G+{49*a%4WwvQ zm@@oPjvY8sto~iRN9pE%7VCn$H(7K=h+3aHr zot&AZghMIt3`wRHr)=Ptsfi4i*~fkrddv~|s<@4Cv3Y1Iax{GO`&e_b$0B|LN3-d2 z)DM^L-Pv)_njNEqbAa3Pbo`dTlVi%)%F>fc0(PGr_h}|a`EbMs8kBp?XwZoxdJOMH z&$Z-lr?baK7W1qZDRb>cO=(+^-{6P*g~cb2i1TuHNT-L1S%zJSJb2pxIv0a@TwEjg zZH)7NqU+-PT?ZG{?JI7l(eoLzX~PlFa4B-qhf+5^)t)qCD7AmJM~Q7`DEg5fn9Odu zbKTNXYpJKw&|VR}CHP!n*6p%;Xo0&!3aTIY-_`JKKYUVsuasvD9;zog(pbh+ahXTS z1%L55{v7{|K2KJ0Lf=u!akvp)&$W(gSt#LxeH3v7pQsCeMQeRrbNjly>x%6U>mRyE zAjHdx5@9>{IN|V(`-^@F%J-0AnC=`SM&}5v-s?ws(22vgB;XjLMpF9rgh~|}&tCDW z=@#)W->7jy)E{TcRUKLTP39xBG5_eo^r{n3vS*C?4Eh;c6c_F_yS#kSFA*yM*FatI5afL zh`frhPy%xk)M>^g&0l(Iq*U;qz~;Gi7UJJ*Ms!f%{mJ*Jm2T(jrp=ziuM+zcno?XR zVqCDXGY08{DNN>hj=X;7Xa;D%i;|RmVNjbm#BdzCa4qheT5I^EG2t1t#**jKK?gc< z)8O}lz}gr%c7?uP&n+p;)wao3pCfbTa#JE`bnoCu{? zrWlD^uEUa&%@?rA!y< z*VZBdkKQ5%=P>@=4C~ixoKU&H2HTR=S~HLVlQ6NUf)u5o6Q^d)LWM;3PD4(XVg!xa zTYsPr^oZ6&HTC%FuBB-r&d?z}ul7_6&8wKFzAN0Rcn1u*S#T`FHC@BRd>lYH9{+RT z3z?WkmhoxLPi&8TOA$02XV^*(!E*U4Hi2oPG6zkbTZ{EvafonuQ=H^Y&$)ae-;rjp z*w;RGe!1<2U4&p17{#^4?08PFr?z<|al%`Jvl5!r-7Dnpg)-EE}?E6KQwCt9@}WtXaqMQqvikbY((T65-Y5K=`(ajy0Ns$ec&qq z4Hw2s?QbyVu%?EeA^<#B`DHZp1^fe99DfzQC_%Yi$7)nOgadaWzpQ`P{yin#{MQ)lxioFDK5I`fbfLrN${P~r zw*tlN$^gJDO_|)k*vQk|bZ?-HCOOY;S;k5T;ue{Zm;1vTbAyI!JU^0JClNRMVhquS zG6`_0>WG>`sxU1vaQImFsw2va-4FXqeWF&$b#maxdOOg77~aJ!kGe zPSVn92oUAC-Aj9a+NE~`4L1&uywMLmU3mGs+r5S8+Br_E2-)w3npMQxN~SPVwt9*# zQ?8?g9THC-aRTgh7J%>L^41|Eq~t@!2duY9S{S-wG(C7gY6eHu%PJ0`4m8{x@|geC zY7Gu|km(JLvNHCU>yS~n@+5<9vy0(Y9z+zs7OqiAWJ?FB@4#qHoQ@Wtti8YmpEr}` z--WCjEW`O@ukBIRm_DA}>+W}Tlppw=y`LFlo#hnTYs7qn3mN~l87gq4H?(A*_fN_t zn>%o4Bm?X|>fCD9=Yrb>M?*kgdPxY|vNcSmzENr=Ya<9Mv$p&v@> zJGr)LO~V3mAoz<``FaPvOMXycj{I&wgp?kR$h8V%o1}x|m1vBCh^&8^a4(O2QUJOn zjNunEGPZ|1fU2|nnC3%X5*uWTU4^>Pi>-=dpdplw@PKf!;y66`WopIg_NuUpOZ&D5 zmQ=)?&$s)vfI+QTv%|ejic@|J)x9+&stMP$MGsnO;XvLurwo9TIDUM&%dAFe#6P^w zK$?eLCnql3LkfwJN4a|AFZjL8!e5W`h(a6!M`D&QbHzI6WBftWB|f5JlB%6Z zifC4!3vFssKO{QJadxa?0~2A8)~V(}cIQ&g(L`%c_AQtLH?59(i!j1BFA(o+pyxPV zpRXx1tXOmG=DDLxj*an+fDzLs!;N{r^soM<5-t0-jx6%uIQ^8o7;^(nKpBtP2cBvWmbIyPUo7u#Fw z*=#0WlUkM*Xfie-)|t=UU)}fXc&%+#6ak)eG~r06j|Wn`~gTGor(F>`AKwaGVH_es^O}*a<@RYDb}^`-NF?f@u}g$$H)qZG2MS zi(N7Rhy`+)5D^Vwr*$2u+URQdVo4#fb`>kn;LW5%pPqs*;ux^{cOF-JnD(a3{tBgw zLig{Txbcii-LlqGp{DDFVa`}_#B`VJxxAXHWx>a<&G&$PA>pPtb>eT>Lv za=A@PJAJramUYnCC=%#7ZZxI*(gDG0O7V6z*j)P9<^7YHo>cx3R;^CX7xw6ftkFtX?8gutALw3ZjEl5dzunMVwThl2-J$aSa z=6<&ZVf`bX5DA_|UXA<_CvDXXbkZT{#3j}TF;{3R;w|u7&x7|w`ET)<)hm4@3npzb zJhkim%}KT7%%6l^>4U0%C%SD(4ulJFrebn$*oDl3UGSMJw-{kp8wGU z=}Jq~FOrOY{O(=cHi53i1vD2C6tb%UYQG2kGqg59CoVt;#IfRz9X9WigxtPWN2BVU z!b)~=vM3gYZOvdb<99k5uo5^VSh_%ps!w7cY5?%zHsjp$fe9S;mIX`VK&52Z54N>7 zLE}lny1(-l!2hpqpbH`(u8WKf+^B};)?xUq&tQFCU!H=^hm7#w1x2_04`>jsO1_b{ zn)FI1?e*@90RNA2WYa=(Xl*Q38Pr?EE{$puEt!0}Fx^^siy15<(1{zY{9^>Am?(&1 zN;X3!d+d-+!kLf>{jIhVU`jOYw#4I^G{+vrMWO9~Wvkrj(LMt4FU%o!-QCY2dP{YE zqCM=osPDK=F|cP{OSsdv6GNckphmn7WK`ZXAtIKpB|5`BLq~U9S4FaJ0#A5c$&GC3 zP`~8~3Q4X6YHmbwqv+G#pZY zj#={FjFx-e=SpIL90Avzs_c!5(rUJOlkKxV)0dKumg4!x$7XikBb@2DmjW2bxL8gD z9*o|Hj4{Q&UV0h)cJ8}5opYRw+Npf#2mfzT+$ zvd9!Y6X#^zLVVDt=ih*K6sU1on)Q+kv^5I0O?`B79+^l9Jn8g!;ceaTfShh?FVtGu3pcEuX$6B$f>gy@@eo>1e6 zg#V6lDdsCzE?*1&D}2@?Kp3PQC*igcC&WC5go0K&0|Wl{PrhQI*~8QI3~ zF8^r_$s?m6Q(=X*+XOww!K^{I64R*|@hr(qidey%5n}UJXgc~Z<5gEq=0B1MP8X71 zj3frroTaQQ3>)Yb0RDn&Z8k-|>g#3I2~YJ;`0zgvSydr&_X4fn!X}fnLBqKj^svi@ z+t}h2Q#GNFPnAl-AswPA=&mZ7MJVAUZS#WLLHmolLjShEm*Hm49I60U5uf90e_nnM zhJ*RIw&a7Ae#Kfdq1B~VwOYrV6R`yvu0R10TBZ+QpWTk&YL@BVi581VkkW5I(rx*? z$15n=GNwb(pF|7_zb5qtFoC!Ej@V~83?Tp)0$%#0kkKfAyz2)U{n}CK(Dbhcpf16V^)TVm2p~=R)M?mPu!Lj%hphK!O4fB~MK-wxQ59U_gS*?qq|GG}h zwvcO5$ORqz%bs6HGlRDV-_1U@aAzBJU9x)V->>l+a=;(s`V+hrQQ<#|&olj* z`j-cxC_OUmsD5}{J*z<463sl-NhB_z3{!Lu@rSXfuk$x^C%}0TqBfs_jbt%E#7y&F zD}eBS1E0m(($oaZ^UmY$?m-WA07w3HtlI|rBy*3~Al0@Z-A{~KjE!H695Mn7B_GlH zMQb-SN6xh96nSHl#j8^00f-(1A>+Lv*!`vbcOQk<+oN(LDh$Vko?eUMn8Boc&~Q^m zeArsI_|9Uv(+>knTLdPVf^vI|QQs6#+lQ0MOz8p=1|{3R1JbNNv!fF#QANO@KMm2J znM~8Kq@lU<^g4LNZdfek=R2(23fWi-wRfQ5Fo^7=Zzf?zBJe>cuaKG^!P3W+YToHZ z6S_6{64(tpUmaO)XE^B@S$rs|@-LfHfj(%pHV>+@+6U|G+Ym!1y#JasujDJwAT{=Q z1br#O1Pw=~!R*|R;5IsnsJ0`&Pw>sZe+tKkDZY?mP6@9dm^t&BuGZ?nzzmAn}LR#ee@*>62gZI z{F|J|H9F~G48*1OhEe~0Wp8aVNIMwBxu)co#YAe__|93hP9E|<*6y;aj;3i8@L<7% zI|N8@*Wm8%PH=a3cXto&?he5rxVyVM1ebGvJ74#^*25pTR`niwx~prdy8)*)>-}$3 zTG6n@S_k4>WFyyUU=&{L3uS9J2TuW$*qw`$s^+CE zqq=L5BW?(Ip)iHhL0?anqHV3*mH*50h+CV?Ahmo+aj#NAHm>|c?p(?!7=wa{%SrVJ z+W{b%wJ+cObcGgipj~sR@wvj6BNh!;dEoYi{u$ep26`Px-67-~FE;tm;$X~%)BrUG zW&Nt?u2671ql0=^yclbO+l}%ziE$hIU-Awv1cax1;Dn7;iy|%*51JGD%J$8z{QGYc zZbG~jjP7iHX*NjEv$us)C%!iN`zo#%R)=Ta1R0~*OkC~_&_5fY0VtJjUb?Z*MMja} z+Bo1k`KkPOHnZVi>JNGwqSlBG&cKtH&Sdwj`YSh@A5 zB3esrnC37jYD&dn*T(iALWbS%k?_m@V2k9Ka%z?-PeW6`Sd8BU6yG>eC1sU->n891 zYgCp-Tm%GY2Qm#z`_B*ls`?80%#|4M#R-minf|?C8zYU_ki-#Uk3Ct9vK!Vh+pk-wO%PenZf=p{;t(Ui-uUZAshcoUo~+-2p7jYDv>&$khv5uZcn| z%i8%YsRa5?B0jnIZO`&Tf|qENed7 zDp{vtIe?0`H~WtLMCTdK4aU9Lh5~lr+II{{nD+JtNtnVPfIQSS?c}Lu*UuEKMn;;2 z`|&3u65Tu%YFGKPr+H;1^9x1XK>!XbzuBR*asI!s-?7}lq(oOt@*+;k?xiL>#A2nS znOw0t9K&$P547QQ6-)|{;o`vgkYDRP>5t867!1&D^ub(y_y4u}Q!qS@ntA$Eml7(D zG27%k#9xh=ZzN>Z4h7bCXfkbj5D#aEcNC+Ml&Ov{A0w&0b%;l74ko7iA%hGz|NRLl zPm#h6Lpph$t-~u=i@wuE0?d@HX-7;3Ia+q#OTKewj+_S|@?a<()sy)E zp4~kh9EW%x=Dva&Ea$F&7T{%fr>VA{$j3D$6z@P!DW=ieqr1|3$U2qf;fMu|1fH}u z4)tjXHex}+$0uPU5ekDxgth5P{>C+A(!-i~Kma@l^h+f#G@%Nt%S@rQu{+y7duE;9 zUh}Yps#fW$1VA3@D%ZElRHdtSkF4ycPuY>MjKa2kuDsxbEz1WrN$uyhDn2CM+s>|H zy}y@F=94bNz{0_Y-V$pqBf82k8>i%fd&m9MZTdp2-1}>!6NWJ8Q)ZhvVUy=kb=y2g zaw|BI!cBT=w8bLpjsYiLud@^>Qfrw+@I>$7kCRYSb2tH?gk0dCITaGR=68Mhi%klM zul`kJ_b&e;9$7WL)NRqnojO5|xZtyYb%kjDTmOB3s?e1h-e`v~gXph}Qk3cIlGQxw zOW9dfMQ_aF6Si)<><-nhe}J3P=jUQ5hQ-Gmowgms@!+8(6rD^OF?=YCC3B*P9nj$u zbc!KG*qMNF%jD+83Y(S1%XrOna=qOQg!JCuG}TvIt!@z056**wKWPd~3oC$-M$|&M zT1g|ul&N&Xv1#3@OMlWCnB8{-7N>Q^WMz=yP>Z)|k>R{>(*!o=f=^^JBArP$%n@kgy+Xr2x! zBZt=nlK%Ybn$#V+;C%K98{cEStur zJ^$6DDi0jdp0Y)!R3V&VU~=EufU(b4q4K+9SNiyt)3L@}0dc07Gw_UHXfPe#_VcEz z+XzMr8tf=!YbD!-bq9YKg>A{$o`ni4x4@Kp z4PHDXZhew1H%Vbk29uxMa6>m>&Ex}UT zsm2|tQeQD^=(j*=t<{z9zZu_?q|4IaE7$=nMg+64Zda_j1(VrvrB=g3&ZGoe_ew*)SH^nDi}Fv=Mv>YNzrc!7 zuKXFA2c#2L^6({yH+af#&ZX{jkuTHP(CK~Ann5O;zwhyV0U0ikZO;(6WpInH!6vU!FfT<__f@IM*7gJkZUAna7773p}B6m3C~QPK{RflG?}FY zwu%K{WitQ!9B<>I!=?rqjw5uC-3iApbvaPMTfVQ7Dg3Txr5|Mcz+-HOK)aO8lCsR% zg&t)g?p$c0`Lhpu3ecII_E0)04UMsm9!N(+EYG#G)%!AiBuzBff^=sMdgp|uJ0h0p z2g|YXtKB@;VkAa1+O(eVjJ(fJoo+v8(N9K5WCqtdA>Cqi&ktVHN^lc^M9lhZYF}_v zJcIt*C`R)j`|S??K!eSP4<_x*N;~MC1)Iq35f!pMVrl%FbL<;-ub|^70BK0^_AfA$ zR^*|nB=P6gP!|@le{^nFU6?cz#{d~7=b+QZ*Pb6v$XP4W%XzEZL_-eL>>MMf@+&vU zpjSntLBR~n9IA{P08bfVQk96$XX3-S7l1}4YlFS~cw=iH`N@iw%_Ifpl znur<kHuK|m$FB&o%x-h3=f%EE8z-7#gER3 zL~!#)|2s3Y8l$=c9}7&!9H3|Y&%Y~)mI`BuKsA!(`nGw0Yp$#U61&^~a`>1U^cKS@ zkjAO}5A%+HXv7dq6>jq=nPQx_@qYY_HK$r>9^d}JfbD;x%K-!X?eNge86ye+Xy+-; z$O?1J8>)HX_Qxr{2Wt}oZKqZHRe4Ahmx`d5Ifwms^YJ(RO7ZR{X}6o1GB&&JnkX7j9T}4SYWCI7SHz8}LV3EE zU42zXYjwk!N;9`77vxP~X>$G(JE-e|k+g;7Kj@AtF5<)J^=j=!Ng1~XwIa`4VQ z3YB;9I%vpqf>iN4=z*jn4P5tFN1S&=YfItiI5U8rP8O-0`RFE_(K?%L8)P_U9~nhZ zrfB#4Gzq`^OLhSXky8#Sj*tvbY$|D`TdESjXlSvM_UHbeUvIJJ_9ZyLL1hn`vY}T{ z)ZeOoKV`@>O${<>^6V{as{@l8Qen{d$N4Ob>N%XG&~Vt%msJ^SU*~@;*23MI-rbN+ z%yZylkjMSjehEWE9B6jO_y-VEyZ|qpv!?d+AuHaH)vBgfx%B+R^g3$csRRPE7ZtjT zoFGTsd`RvYGNBkmnRyZ7%~p{H3pXH{w0UKgR$VpYdMFAdjDXRmm-$~u`UC0YW^Bh= z;Mk}u!5V9jJ9?UmRHaZ_qst2cKUC2aEcHoUq(l4^WH_3=Z7`I#@TjZS!X!C#aWxj;f5pH;50vKmT_Qu0%jDV%$WVcoD#2}CuEa}R;KF_l!C#H>W5&|uDMw!qm z9z>{_J$oN3zXCEG#>Za6MMEI}a5RWfv`u2RWES^uX#Q9^yA}RZ-QdMI)Gm3m7OZhM zByzARiDRt}SifAEM`a1Zjl*;Apg_qKjjsO@$5!lkEN>*GjK&1|X=*T4YgS)mpRFO_ zhnT@2+BwzmfgXPw$8f`*!#^rQZy7;vjUmu`@Z+W_CzK(8B@B?(B4aHujVpNf=IY`K zQdocKB;2(FO3SwXQh{F`k%1g>qZWm_;Ufd*4*|zoo0w+q7;3w#?X9*@I^OpU#s#YJ z>l;d%cT|q1BBz8qeGi;t!0N~ExGc==-UZ^ZuX*G@`JuDrJ)mxcvNdY09dWY|L55p@ z_fL4oxgR>OEtQNoMN1Xl>E735;vlSu1)hi;P=vN3tT>cu2v@eOsUu1C7ta6JVz_6G zyBj4l)31FdE>KG#9G`2u?j$Vdi!*lwUoJezaDI2n1WI<4v!55!79SVRDA+5uI`~2? ztqf}ozeo4x(7l_q@*IYLbcqMwJ+nWi8L(!)R`qHHFucaT8?#9kB~B)q|b`DXSwY@wV$7>%odZUGZ?M z-+)h>R+o)&gHLn=ChMZ&PV=ryxwYi?q^t3XL}LLtfWA+E2bq=0%#Hi3x?JG~3h#s% zL8f){>=&(I6+wVI$Pq_fo?8WP886WBs9sGaKSgSk!)WPufZNtnw5nW(tu(uQE?i&I zu2lmj)byE0c69*tgJ%rXV+bkCR8t-U?_q+hw5?#9O*@f>mFE@Ylsd?8^P)J_Qd=YH zXV>eWaf&k@SUlADe{%oj&A26pb?vl8B>3-5*2!r%Jt6vR5f;xI059L0-9y~($)1{8 z8*My7uM+ux-KvCs9@KBqj@v+hUdkTz{pPlaAv7cLNSMR7xN=mjmav)H06X@@DO6M( zV+d+T5$V1I`X=wbawV3``7}Cds z9C3^?nVbFc+$0suS8+GXy%itb5q<$xA?v;Z&udNfAiEZ0!~g2*7eYm6OuSA9g@l3a z=?AGp?%u|SyO$fI568lB&rE0 zaY_SzRzX0Nswe>wiSWr8*A1UYg6lM?LD}l(OB?0d+8!zSu`|eUURT?LBY*ag8~E44 z^)6#9kGvR4rpdOc2EOq&sf?&G6FGY$Z}o=Z`ad0?o!|?PfSTl%u>3%c(7$i8#xmE7kMC^0R z9A)zv{A;Nq*kR&7CES1wixrfeMLV(bT%D%+6OZuQtd^YtH=8RCLX1fUEzrv`f`}pI z+$HhGB)kuo?R3>%DoP%|Fg>RS>o`)c`uGW z9}tG8+c6jUcG-!#`^o|hXa2Busk`8ye`uBe{oK;o5{h~K=merq(!60lx_0J-TUwwr zKol>WqisCSNKIrpCpVOh;|X3kKjD0_w&q0$hQJ6eYbf#<2;4;#-7vW%i6slBxZumA zBUTH=Xy79fZw+wz^BRHtFJw5`A^{xcA8eB23B9jmC*mu#24)t8I9@99Zh12qyYuaP~1E2@;mdIyde(y`A zW~Eu(68YC}#3c638!DE^OI&EjFd#=wNri4jtX;j+h?c8x>4W1U{pEhy2?iu85I zSmq>h&O^UX=*$AUOmIyx`)3UzfRdjOk?U9}ok`?y%0{jjF>ux+k;Zep#Aq9tE$A-; zGTbD0#cLX;F~wd&+>HN+fFz;T#9{SoOfMRJkS^6|gL5}cyH2*;Vj!QsO2~O1z88RN zxW-hS--<0YHr9km8{&WE;la7QMj)LT^(sd@4|)k~BoC2>d!h46-Xx=Dbv2xE<0>Va z>-wx#?+`nT^|#3tKKL87nt^;1b`)HwhWr2eVXhK$AyS|{A=3KY9&r>p#tvFHZj<%s zx|`{>J}hL-gB)?&HT97136E2r#dsnqswwgmn$Pnvs?J29%C`LvEBwNV!?kB!N2#x~ zr-tm3on)fGywR}a+gGG@`YJi{J#1Wds>F76M_WchmdR!C%_-2^!6)MUxbA(_#PKl@ zUUVjHBAKjpMlLQt9^+BP^y)1icbT=VdcoTo{1wD8bSWd_?*vQ`Fkv}wYOuuqxGnsi-w(=&QVXE|Cm$#{Jy(Eo1`jMfV(03tEg zynC07j+AkAm(38TiN;BXg-VhzWVKXwf&HXvkm0(5!}bgOe$NckyAbjFkDtGOyrvP6 zR|talbI>YlETtN_{wrR zB@Hg4{P$&uhV;|q&NQv-R`m>Nhz|q3!pMn^VzcpnvVsRj6UcBlsRnqERfD#jtxcGD z87e7x%~V8WtggR=rn_VKV43m!%j06Wcpd-6O#XugU&}h0^zh zHys_*IJ$CcLqgthutWur;o#c~zE_9?gxK#YTrq|cT?WF-iREl1Lu<3dCp*My*_x1| zHhPPVbE=+y#p>R^Gp>TR?_`&{Jrk zF1OxrmR=hEyPW$UyUikfITHNuh>PRbg)%|L>IadziZd2XQu`4~%?DUiAfZRnKP&~C zCHdvH6J-mNiaRKnYiO3{Kmn&3BY9X3WH_`hEr-o>&zYd0696 zoCF!J8;!kG#UVq1l{_~7_xScP_ml|1ZWFu0TX{%I?5U6s&ZFhA<+TO80mszE8GRvdn$$_MMa5_)CsJR~abYkC@~dGd0cN$i9z^B1M7p82k#vk;{z1v3xT32PN`CBL`(l+ z0lXGY#Yj1>zRmWYZK7DWC>S`-6lDUn5pr~HOkE9myP6#-C@kRX$zd6{=ez{};a@O4 zMY|pc`MAuKFO~;!zE2G4OrS@cWFsF#z>)L4+Psh$TuqvXg1qWQ%-u>FFUi-URUGw3 zOm5M1M1l})UIBlUH}>-{ApK3~2|jkTn0IW!;fVQg@729L{YiXJ09Kt@g-8kXw^N|w zqch3_B-N=L>0@TgGkoqUnxJW#mxnz;;%)8W)GN`vypCFBBN)-qHDZCzd?{eFNSDdH zWnd*-TlhFw!zNQA6L>P)pu;yVoVAo%N(b`86;+3DV5Y}P1~$EGF&3I5*49bbA12^9 z&?)WvuV1Tx%!lC>wAOB3qES1w8P8h3O$09pKmJLJERh=pIDsp~$!P~n1Sa&A9gYAdwe zh^Y;H@ljvHCRLO$Q+Joy-9Ffzax?Z!q(^C|FeDNDOTNaQdPhL59oEL~VsIL#2tKb2r&nUtWwS?9e;xqkY>8NB6yZqjE!<6bLHh>0_2FRDnG_ilgS*AnrQ?6y#&Jh4vSde z723~#aYBRq;;5AV>0C$`N=^-PCa||uvS6tLSWDKiyvm*$F{f$erP5>w2MXhkmXQW! z`An=h2(p2`g=sAwN&gas_G(|2<$T({<+DM{v>O85ehrpeeJ()1!Ro9>V>b8ExFpmD zkz%LAb_cvieE0RM`%3E&(fbgyM;Qv|sTcv~%s>$=!<@S@4tkW{Uu+-ckj)NF`Z(R=%!A2KOjlI`Kx&)$;X!f_c&_qR3W00f#Zh|6$!D>y6paAQ&r zlKLDcjjV2B4fo##4m^Xufjrc?6oCt*y9#!ZlT%hNkJG+`J6#E{`O>9NP$!n&AMBd< z693G+ch*gzi)qGSdKcmVS)4Px*q7y{&6V&K1cN`zwxP3Gn@u-l%?r+gc!=^K!_~AM zvD@kINpLI)*s4H9B*_iBPh6i1v*a@pBs98d3agFxlnCog;5 zu0RP@TQR}55m`^iCc!ydE3qHKv>p_#H^^{NuIDX|5M8EUe{jkOt6pQK_ipIjH-?s6 z+c6o8G^!0r5*W?3!4{9B}>-2WCUuAA<-xxzIh+3*pgch?P^a z7}#5F7481r_Q2l-^yW;OcgAT$we=p`)Kt#4qCJn?piA+F7kznu&=-4wyGC_$^9B@T z6=~D96divcz@!H?1OSGUbd@F#lO$mh9xRb>`MOHtE?hjzsDsE*Qecu=pk z)VOo>+;?tia@h_e89y(uP6Be3S$4xC5hI0DN<=%}Upo)Ksgf|1ZL~R#x@pd^^nma`v?b@IMo6IgF*603VRZ;z0Hkji z;z-|;Mt)(*pR-%s9^X6k$`fy(_Hq8OrR9370vRqBiKr|-Z{)HOIdzyO3pglQkM1K6 zFv<8rv11tHn4XApjpD~AJ3IwVV%kk3F+>UEaepXV^uN&d>ul?`mRll+lLey-$#VtE zltd=17bAcS#|jT{`4tS_hoOXNywoZ?X@6+JkObfex6)6ABCT2{if5ON3KI3n)ZbUZ z4#6O_0HhD{av6P0Zt`0=zNuM4{G>ooQ+`G&HT}#V2-jxN(@lXAOr)`VsfS=6@u~{K znUDrft{JU*$_2UneYIbPqp94=CRAwP95qE4WH3o2JPZIIIl%GjW_wsqSgLKheCzp8 z-AZ0P-0G1i#@=3WDCo^*!bS1xSGN=vZ-^pcjfYRWhLe}-etXBw4ee)jIhSZNypyf* zykcg}TL=kKfRjQ{0gEy;t5Jn}Eo7`;VpH*i?p|TxYl6QD;Qo2x9_W$){q2;P_sJTq zs;WN6PR};9t+qF)`BaYDXnQ;MOlc}GQ0 zEdeqdeZjWqsbr>~0Sj(&(xk52{Q!Ye1}7+7(9c39@UOcF4K{5fb*YdPY9ic;#9#j|LkSG@|Klj*a>}yHIFnZVTj}TRu2J5Y zaI(Fv?+c%(KPi1MqJ}%&?ehQIoxzUFzQm%}35fytcc(v54;(D)a9UcUeJM;98CYIU zyQ}#3wx)b(n4v(9I4OF95k>5+wcbzo&{|7l~}18|bsG&+*e9;MA`;*!{${u}jm%RmL&yxr4-8P~>+24pyI3QI-cXQ)}T zjw0_MR3>rrEH3sm9u2hhPh?lq;ezlk_%4M(C2i};CYP!|r}ogmqmb~qkuJR63`_Z# zut(&=91*idP9las?_7(pizN!kaDf?aFTOIFiw8aadbo*ZWEN| zwUHbHnjRDESUDv6+`7B$5l~R&cFi+dBvC{mbblmsFB|m}rQ&9qTr=^x?$<@f63B2R z!ff$L;}$;-)Ehx>TLW(kCGlLs~UG4nal4~}|D zY`G@GWwOXSqricG#PXp-5K#%C=CJv_`v~-zs~PcD)1$Wvz54OkFH`Cb2i{&c=|&2Q zWt@&53U(O5x%*DCUBL}TzsjL#?u^K7dT)xfh;zWX~c_53!hEC zvNJgV`cZwO{a@E#R^Fi492(C?A-w&=a|?t8dz zSm?cb#W$s$U#mGS#O}8>jmI{9f`ODfJ0YI;Tm6jZfU_HA9ppaI z7d}X@&c})fwGpEg&}-=Z_GMUIZ)hs2m!Rb?o9qof{hA3w#*gm_2vFraMda;jb8O0{ z`wUwe1H{0@k)+W9Xtl6|7)?EPB$VAeJJ#Yp;W*@o4X!UbRaCt583>?%@8qxiM4&a= zWEiexw%t%~d5MhEooAXb=;270^kEbtsAKXifNlt#%_y?taQX6Uh9WTZA-l3@)!D7J zek;!XFQvJCe}GV&_(>hdGC7y!Obz6rF5Ym%EVH;XR|e1uRUJrJipsD}S&bAjNI4Ho zvI}Z1|H1C&untXdm%LLxyN6Eg0XLSR&8DMct3BDyVJX*XM_jb-4!Ei) zL53SDKVnJG6qH*1a(SU$kbDc^&kLP{Sp6GABYFgAW+D8sZZ*Yw6%QA`_S#5&%Mbzh zW9KA4vVC8+u(9gbF|yG!s)Ss8Y{Rok2B#&fx9mWM+k~}hnherlXoSZ9R8&gA|LeOh zhU3dNj<>i+j&|iS_#93v(1MS7bvO;OA(kr#2Ux_YN~gxjV)!2v-?;n3fd@6T({?( zWn(FEOML+h|7*^hI&!i3UA^PDGJ&#cG>;2W*+?Cg6waMSIY_-snTOqVt5$DQj z2W@B5XoAie)7xjbYJ8PZ2Xe#-O}r)Q$J)zyp+2LeJs3FK+{{}le_pMEVOnqM@aWZ; zIUr+N1TKsUW@z2IEjcIw!^&LjC&Rbu9cF0tLpG1YE{>*0{YQ?WC_mO#8z-Fu{6*cd|$)opQ zB7{HpmR1`HTqqRI>9C6%8%A~r{}svuit+sILxVerf^H$j0t&G*IwN2I6k^=#zBuoK zHISQv4CgDZCz-P;fZtA>#d9z1emPdk6#JoZe&XlUWzmT+?jNI8tP@05EB=daK{4sf zfF9svu7|KdG<3InMmM z!OZ#Y+m_)$(~Jn{iSoLD#nc26g|4?yMYc6bE@SI{i;8yp`NMAFg%lWNG{suiGTL0p z`12nkR{{$%ePBT451w)D!^BX{aKnAZ#~s|(GqotnY-ekqg=i)E=x6Kak7d=>d~5AxHS@$v@S?>eW*SJN3$U2(w}roW71~v$@{@qe z@GnogkjjWOhH;1HNFuPV#~f7mdei{XJc?V)PZE&f0K@{*Vm*xHjP|im45^xxh|=G0 zE0IFyZ$lp6$g&q8U0qtH>@Ws4-;tVt1$q~Kg(02#)zck}-VVVUi!4)vj`WL=u%nsFM#jhogbZB$#n1P;(2=}>&GPbAt{cV|; zvm>~el&&AH(PvfmXLV}{iP)sOLkQl8yILm`7CKXuQ4P7W6wqi@gL&jO*=6-DD@D*< z0{zF_m9>DST0;s!R|YG?KFC8INZ`;pi`?4I{meiq#@Uy8-9B=0ff&jwl^&PM!t#tp z8dPkv`kYnQ?9 z{DJQR8E){qRD_6tH=tQMpORXjG*RQL+LSwfL=t+*6e=qF&0C|+tcfGur2ntMtU?wV z`2nb{Teq303P4Hb9f1uL@s$wp*_fjEa3>(=T=JTF%LN$@-AhZpl$r{>hW>jzsK+3q zVk*6Lg}L{t$q=W%k$UHex=J;rMGw_8?Yodf?k({N_*cL$!yQYOio7o}33JfcUW!%B zMVwBokz>lEil2eL^r>;MhvbW7lfZIQkBEZh&p;!qxF{TV=+v;6Q=zdDtJK9br$We7 zE~M4#K6T=>&IbB=C+)J7nId~U=x{fv;}utiXQiUjqO`Nm$Z7J5KwnpvBXctSHqR0O ze-=l^KX}=7AQQ-OUN)I!T@6>gK{GufXzIyx-!KGx7WjP5nK{b=h40h?#)h?5)5?${ zwo0c~9LFov)COh&913#kNbo-ls?FC zz-%29p9%68xxh%y%faB#*bpY}N>(q)3n-aT4Q*EzhYUwg$|iUIFxg{{lb}UZ0H%`5 zBP7Y1+FFQ2tt)|27VIQMPSB*2RqO8g*1He%>}@m30qs?Eekn)zzg7;yD}7g~G=yWi z-4D2lTUpsx|9kk%j1D*=(Zjd0QnJUkZbyUv0+!A5C$HA#BEEdpP|_L|0;9kXmTu)I zcJsCJ0;I9{Dq@>I^$Hc6QS!biV4*cHkIkF?MJ02OM0r|C1Q~8DPbfw_#GMWw1NXVf zAjWt2+H-&XK2bFJFr~$qjl_Zs*VlYNMqzt1;$o{nEGI`*c0st?Y`J$b9V>AN05b7zf9Tk3 z41Dm4zsTQsp$~aX5YC95n!2K8ed>^Rp|_uycPF3&=xd*h()w zYy-QHya>*X`hi#7pe=YT+eOjo#QfZP4GO`61Yzh?tUfYT7csz052Ug64Hvi^7SPsROaW4Up;-S@Q zx`_&qBMzI#67^09QFBMDZ+GVr>dz(m5%!pf?UT(ud2-BKO=$7=87+2Yqz-E5uPWSZ z+7eKUTt)AmD#PJx#r+i@J)_x3cjkhVXcBT`TiTRI1N0)J7;zgtxqlE^1)@PlBah3G z57Hr5EgVbcj57y$fEGnqj#t8qAv!*-GB- z4uhrm1?EkRf2DpIPq85Y$v*Td(yIAR@hFh;u%DZNprl(Om&zd&~KN|aEODl z6U59C2? z;V4p7mB)CzmJ$Qp%`hEvO*P7yBrvc8e7SiP$?sV!fik5_y=k=jtx|38!zM;+!@!RS zH|7VcGXF2xJeUtGxO|Fqd5^BUh-$C*J~J_F?jXa(X8q}MF9}J{YUm`*U$_l9cy{Xd z8Jh^BRKi2lux_d9~!T1BiOR#i#YR$62*-C z1|$gNYTdwq(oY?7pO)C~oFOV%G-?J;p4&(qJ~YXL+N$U~ivg8CJ&p$?3Fi?Ar>7095B47Gm>YNc-2#0a29RYa9E zyGuh#L8WrlZL@{i=wATR64k78Fk7#VlCBoP;~WZUxITaIe4N7_Ehab-T?lYL&44jGLk&O0(m~_R(G#Ftu*4%k zatUYXlr~yR_y%*Q*nL>_Jq4B5vILOBG0mBVA!Qg59i4`xuTdiST;GGl%QsCUDy%@C zd;%G+oS)et^uG^eR;tYsc07;7X#HedyUR{BmQ!NSx8f&auvP$zC6vmPeQ%>o;E%BR zZ|TE9TMpj6yf&o-eZ|KV1`ADL_!GU%SscL}fNhNV;7@+ zUq3y!nwqtlsH;Mw@8gz+bQe_BN?!(a9e_4TtO+PwdZ%3BNd{KK$VZ9y_^9Yx(ZY6{ zP(JL`H-=15fL;Qdn}agjsRztZ2{wsr^kw2WCP{L*dFhgmSj$=Dt_;6qisjJFk-yGC zxNPwiwak_R!tL^vl6>;CN*8x65U3)rrPY@z8k#i=DDm?Y_+{!KN8CI)q@!r&9~ID3 zm`hnpAN^x9tvQsTPy{9C(i9B)j0N25$4KbQi2QRc1|}m@ge-6e)7;X)^Lg;WZ0-No zpJpk*8s@i(MD2HTDU>j&Si%u$F~3JB+iby6FTqZw((ql+Lxd z|DERz|H7t6q<9Y(IJT2qT0OwTx**%<;b&>)ohfMmLd2@g zIb2&)4V#{#lw&>?H-!y`wuYzd64tW&KHyHbFVSd)0V67CxhS+(&bctKykbG`0OeW5 z%N`K~dM-22EceDMh`g(Xpc^GOgZ@}TlleM|@~>n@x}JI7$XbeuYo(&H?+Qm$b_R*^drs^Av0;7>N{Dx?=_&G!Zc=ztgK3w8>M(r+`PNC zJi`7fU~CHeafXQ&Y`gqS#)_ul9|%X`6aA+kcl%8oUkgAt)2cFB-uRgtJD=T@^_R!# zScescF!MARR)}cSH4^0CI1qt*iX@Cp`{Ka|9mbdB6SZYtuyD%ZeuGF<^}uyz87Zpy z8LT#}s~%?oijx8*7iii!c6BQziFnH}8NPuzlg^&h`0W7I(N<~#o|EWl~iv>8PjM8bz4yr~^7DH7Oe8aZEaQ08-wQ_bM8~uT- za**MIIr96M28pzSx(p|+QNF6f5;Q$tqcRJBGdOp+t*LP zfSUH#ezAWByS@w!>JoA#Z}0YitJH&TrBNUj|M7Q_;p&YhZtL>DYVmp;|J_65FAjM>E=fzhXho;k_kyMYAQTe zY`Lm{D|nh8?tu*ZX@5B|zBC=J9UE_>Hc@@A=Wk?iv8mb{s?Duy;|}^tEe9R~CPFZZ zrtQYWA$DMWjo1l!(q*O zIO*~+7+Lmq=ZfpFWdAmz^K>Jzk{hDFYq{TTKkB7VyiOXzcClok=t7XtB7 z=rE~KT1WE%q1Iv*sYj3`ZEdq2G|AUk%VHhA7_{}Ch6%~&#=I0=M$+5~Wd%TE1-4pa ziPXYpzC4)k+7S>kPsRR0fmckr1IU(UrW^>ypI}X-m}UVWl0CflBNg; z2+~eKe=SB@4mRNx;T2DWle$&DDcvX z#;{J0qev6Clh(orN__q55-(neuPuLjUq}Q(bd^EL!)wX0s z?5wfH^f<*X;YJ8>jH8OUIpJPrp*2{v(R?v5yl(UqQ~Nu>S`xz9D}n$rT-XF%*hxJ= zLh1RG5_uQ=vR642GIigQ$R(#`bBCUu%)z6?xK=4;kR7qUjT>J$4ln~{lb`UvzLK=+ z3FBqExQ2Aq`(>otET7(kUILr?IrbE3615ppADHQjK9kwiH%RPMz zg-2$0KwRx~G3c-y05)|?x)%XJ$5WH7Ck*$^&O)6WjL7>qF)l9SDVS>+1f%hp+JfHY zCTc(_S*{TdEFnuVdp&P*V#eU+Z#R5<`e*QN1MHM&uH3l4PuoDCJNdJg@@%=k6|kxh z!rQ8@dUf7HUrO?_R+4BTo7ts#hPP}0kD}JKjj%L7$sm7CI*l) zTDlnD_3P6x@VitOcR9aBfDFe5|nf5sm*88qfZvKL9D^Qhv zY=dnd5zM5B9N%>Ge?kIY#UE?s@cp#RsH8j~KWBtE9cUs<>3{6_yOZ&Bs|$e)Cv}Zg zjphWvvMIZkswM4*FDhtErwFdX_&5+n5tI1SCYje65QO@)|5@b5)TxLq12)0^!{S~Z zf6983K8v_{5f#T}UxK|OQ8nOS-Q5acf(%z@O#F8|%XfVSE2tL|7fMRR@M#e;#o0i! z=l@$6Ij`2xxQ{}VvDLT)*!sZad(u$3MrHds4g~D7~v{6dWml*EFVDb0H7QC%UD>>i-#B`fj+2 zxnUuhr$lN7743@}h?$1QFVU--KMQWOWz4}CYkd9<*O3r6c<3e+K&t7Yzm$ z6Z+*?-Dz@H34(=yKd(H3{H6r1mEQH#O>+iUSG`5@N@hEG)yjiJ`*@fX7#x&CKx%aLS#gZpIL zp&pFSE+%5l&Yn5hRs{hQE`Xbvx#Z)kRx>-uza_fyl(fKH|>mB>%hjg#`+?Hz5}Ke+Gx<$>FO_Q21=qqP0nC z(1hRfs`5kG7v%`oo8iN6-_D^6&NfSzU@doMNa_!%#2x<6;KbjK z)1qd#=YxW^cZl;XqcQ{uZEP9xp-$Q8|FL#gQFSy?n}8daAi*uTy9IZ5cXxujLvXj? z?jGD7g1fuB1qi_%@_$z|v*zl|8n`-l&w8urbE>PV_kO8ezDnDv()zH(L1C;Uh!|QU zz%&;6dZb8+7Xl(acW&?AP z^@J_%07O&T*GAi72i;rtn&9;3AVy>cm+RQIQPRngt;=laHAGX)%)|&GOh>`@`U1eD?;;0d?n;1VzE^cdUk1I(wXi zkV<1bn&fgp{B_!)OW!VoVxR`>UXG_xZg2a;;6%Y+{R+>meNosBMX0)J=^mA|lt0{V zjhjZa@(_3mg{`q{`-URmtQK7xC*?ZaKJF_sYRHZQJjFCUqQDWW*RRt-PrI+H(C5E? zCsJ_>3KN3!yJ6H~k98=?Dv?i~Moj}LAC|a8=rmud-+YTCl8QCXYYFL8m~Z~it*;v- zutfR~Oz?^PRJRLU@tZKTC~YlO{*!4=;K+9ae9MBbndXgr)n>v115D_WqqcmrKx z%Mo55KV3-0P-+v@;G6ms)+g|}oqiacuNuL4%|j(9ctqOqQ?MleFDguHZN#f(R-JO~ zr-?lxaWU}e{OzWKdj@+h!^xYE`{rsut_go9`kGu$5dzT}sA2C`;1@MAfT|;FZ>R5V z;lGe9`DIj00&ORV73&#hEz{t`5(iHyRBszwou8z-I)4qM{4lu1C*?aVIB_JAbwtvXC`?N$C0zi$=_Cmy*cLaNt8~zx zT+HsyOv_XQ$n&9+U*{h;*{iEnq>~}936LNGr`*Xk@LG!%t)#G_rR2;hbvKe<+hUOI z+OH$pJ$W5F+B}!g|G313Qc>O2Y!BL8g>BYyrVMq|+guS86C%7Fxv!k)l>{21FkGiB ztJ`us;Sk3sKbDX`Y^aOAM$RLkc6^`Vn?au_PVbk>-u@cvo?OdCgZ-37mF_7K@^9*qdhlYa@o9+LNl1&PjEyweIebi#HQ`~h zsH7z3KMYRl7^-)nC;of;eC*={fd;0x&@rLC86f`ai%i5mqrKj(O{v4~O~~6^_TX@v z8LQEU!T!7JH`LbKKO--COVyzRG4;?ojs18FfOaAI)rs5BupcO2B^JE zepupk%L-#4)2a;Xt45-@nlv{x@o~e29FS_&k&zhLm+N23=ZNA%5-4zFXd$)B-VkVO%5#QIbov>2*_4kM|^W0@8;ij$C(% zF(~e%I~caYKf6h)MbxZXz1;~Ro6b@cNKV6JZ=D&ZfBuW8HREn^sOJ1%eYgL;h6?5-mHvEZhe=cSUhKRi+CCj=?%9cb&cx%Z*RyhH59C0DPBF_a^}}J&kuuR z>T+%8J+iMnD-6wG$9(xpQ@j?wBAa|#3))ugOwfrp_feGpA!{Ab^ zY}Ox#c?af+riG@velftfjaC^vbjF*30=g37^~G-lm_Rd?gNJwVxgSpTar_?!=Mf2t zNeFr$El{a@z~g1zTI&o1ki=2>$7OEZ>JZ7o3h+RP`q;&-`ppTYs+s@(^} za``T5N5U8}FaBK}6qu5fjl;UG3Jx)CRT&Q|qLR+?O1%U-9D;^Co)g4}!6^%EjVR1H zDtHxEce-eoRdt)z!l51tk1*Fk$LWau7QMDA_Jiwu>GWqZ;2!b+m4^MO+o>uxmM8G8 zwYMjX*B1xf_vVnrJ&~(t9|qSCenG{Ze&`|n&Jc34 zZfz*ScfTk5*$^Myoh&UJg**Dg;CM>KxvP3Cb#od)aQ27P z)^@jHe(fhMp|YXBNt8j+k`#`*{z-I?KTJaDcuwfP^@p3{OCuVSNWDyVCu+ImhruPwM>;P{*%x=4CxC+29H zq7emBF19v0;=h?;U&dq5(--qBv_VDKf7~?=)E?vGd&d71FR%5=f7)C#p*OsbJh2d# zrA1$Knjs(Q^;zRpN1(ipDD*H4)vD;@u5nR$7k1p)jVh_S-me=8FSv`MeFJTZKcYDm zoI3@CtvT7-`vm~+=77e!X(XOzeBp-;bsBGT$9quc35%U&PS9%}K|yjfoPV?fZ)IxU zsk^VXfq+hXyk(I)%a)5);c$(_+=s!fNFkV7(OR1uR|4x^!Yg;hbiq4#OND9vx0TiJ zu`)m4Ch%~{NGFwuZ<9&Dt^tn^gX{C~2fnZVfX$`4IPxxdh`?aOY?*I#q`YOi6AsN8 zpkH~D8{vI9A|D)pr>BQz{kTQc^yr*DMAj!O((t-%Q<@U+&Iq8LRX_Z5dj%FW0zu_L zr!vGhI&$xfV?`j!!5cpR!xD!DmpvQrOp#KthGHqgba>##j^aVTC0)}HO@^jZZ*h>P zN&J*XCV`2plWCEFdmj2QxR{Sd=C1*t5aS=VN)7`Ph87xg#lI&gduX_}8%<1){-XCf z{w>Q~=>ZsRPevX4@gD{kt{5SZlgu-1gDYWuKBUFZ+{mTHuszSG#d}btu&J(85Y1UN zTMcE?+!mS2IMNpVFgR&`RM2*4(@Ch5f=yjy8T!DQ?dsowV#WY}>X0mq78NmubsocL zX@tkoH@I|d_>m8TW0Zvi((r~*guP}||iWDrX2J)JxY6OI5IB0oo!Bvj%~{1rT8degLn)H-#GIuBdAYw3DO_23)^4ea^A%?2 zTthM%KMbyR5wFk6*HjP+h<8Kq7m;ja-prG~h^nnQ4BmwDt>-*KMO&;}yRCf1Q6K!Wh_egvg zT-s`x+gW zu-XzO^JmoTz&N2ag*{pUrHkzvPBD*pz6$3RCDVMc^N!HGjt>c0Jip!TPq3q~s-Q8JN%QZOug!;IcxfM&xP&o}YG_|x-uHBSvGJgV zV68N^+eu-TFV$K%skX67>Tw@?_C{DKtM~%GODvfD{UKGhrl?QHrmIHl2}?(iU6zVIz|AlPc>Az)+l z>7UUBINeV=zL=M?EG1s?lMc=ne(P_Mo^5r+?jHunXt<$Ao9*j4e$S7icX9IOxgefu zk751p?i|4qYJe9)5b!DftG$D!|C&vu2{s4ThrwYB^`E-wCl$mGPsiQ7Ap=OEn)U+6DM3&!tq;6JF&~}ge;||1D*cP z2W%m^IbeNcQ?K#(_a;(Itf)}CPq0oXzO4qaUx>CGSV<(Q7s!YAlNL5ZS*d>c^c<;U zPzA4z`4Eq=c8(J0w)>ibfi2NQ1jS0XrrwMd>WC1H>Q3>O0^_Z(^2OKIS1aaYzFIuY zc71)MIOkL4g5z5Tx~voMAj3gY43s;*Y&}6%7uFZaGlH%2C-luv(p*?G?y3IBPQcyz z(5RM;4X?xFtwXbRrX3)i0Ir|xd7ZHUPu-FzA2A;$xZ62$IK)izG@;w*bns*DI3h%W6`H8>1ms|Icq6nBs0(fU1=Om?tmP zsR;}2M6~xOVrmDjJvWwLD}j6cV!zfw?~+oON_Bb@jzB>2>ny$gl==iYkCvrB8DVip zmdHFCORTViT-pG|BjO41nuXRB>bVc_c%dMOd< zzyX9Ql|uVyYS5fbAd6^P>7yi`tg3quq$atjAu_2a;XsCy2pD*Z&&zX<%MtGEyU z$Ie$miZndJJ?3B2KyxDN1SQ}M94u8Q&DQQV2$=V*i6fK3xtEH* z)h^x*ETq0ORc+!CT_lEEGMzS?y&v^WcdrmD?O|i};>>~TGnr{eAgrL_EC{+}c&z8ZJ zeE2rkTyB{FjMDK0fNS|h>*BZ9z@pGVh4pBHZJ#w5F*a{6+iqly15jySve5&-60-l$ zgKJO~Ij||eWG&!2P->ZQHg?+ry~J>vLC-mtmhHvf0K0%jheYUIN6gDtT>>5Sy#()r zKqD>3nH9o}@CMG@N(aw|aYk_fl6E?ht|-59CwVU2=xH5>$`fW+025&~bjqAo-TW)a z*EoHqre#;h!9`y9c`{yZ%l?oh$J2QyY*9L9Gn+#cQ-G1nGVwM>$LNQ#RxCYR^ zNa3DXtMk~7OVv<#tN%mO-H`G(era3MzrBL$T+rJd=8d+A7ILx}=)Zi^%|bQGZRCw5 zKSAVNLPug=gn@Fd%lnhrMDBKQ&B!rBP0wB;3G{D=+rbN<)(42sm6@M7p0HWn#69v+ z5nCqC#CfpagPgcjszT+J!Z^>~l5dPNQcVk+WWEUp2_a9%`wL`Mm1xQ|T> zwI-4V(!}pEN0?CkE~c%=Z#CrwitPh1{fOPWc)s_O!Yr0$Zvb{vKoiV-aPyjjcOML! z@*M6Pg=ZhY;9-=6RWMbPG*~fkH7;6E9BcT%@@%aqs$phY;v>_5#@Q zOqc=>#1-R~5AshJnsS!L~wFMBsw1{A0 z#E*d`_(x5bX`1 z3DT*=U}sJkmmC$bP=U*JY(gsE)zsve0W>Y@3h4dj%jceP(e`50Gd9<|zE%hb! zO5yQeK-H8y%OF)@V$RdAWev!NGkH6}?$QyZyrYyfs{nL2?9=WK`+j&v%S>W-NzqBj z&LWG!{82|w&F<(mFCfFky=WX~@l!~dwniOmTX}gV-4}QRjuYS;_yL2PM9Iv$f(V^9 ztaH5XzoXi%w^g}-v~wJWx+XfDM26<%my1`ENgHJrNgF%xbnU6@)8SH(;Z*P-X!b(N zlmWiZIBGZ!nya-!kbqxl}HU9V;n-?e8pR6nAt#mL;(4i`I!g3Pm@NY z7!ReZG`4|)>MS#k-RpX^eDgzE-KR(!T2TBS!^w zO<}{QQ$>CZ%*A@)YI@{!0Z3iI^V5q7_$ye!7hUtFUKXrvE3dPi=9P|s@?nF|GD#62 zCvGg{ptVWcmQhuigt;%HYodaVby!v%em7;lJ+{A|a0;I`e1;9{>{okqxo&)Yx&&TD zoBqBZ2q#3nrC>K@FpRs9N84U@2}AsIUIiI0&d^#Xvri+)idC&Brb-(|U-j_& z8(~?p^3CsPYlK?yA4xvDNMe)c&0)&qUFUKgFk7dHG~)UYQMfJDD88f*{L;24-fJWg z7na(j2#W%}5J}@v2azvq{!Yq$y_dG(-&dE{nA+yav(e4&@Y}DqBRgGwrM_Ug{c!8Z za3oz&4R^rHKDLtq4u7t9j&q8QeU2RBm%+$M%nLH$#=I>h74%Z!afNtPd5+f6ys?qb z^DIPH)raJ4&1etSK-6bbDJwQAMwz*@ToLUa?)k#sy58qy00S>7K9kXw*Yz}y&!2Ta zHs0ZA?O6B)=5-s&;=V}Gi?If<`gX@HCDBJ2B`}ov56s1Oy6A0u&aWKNanZ&Y8gZ4r zD&@iZ8q{12F5|)Wxj`3LR6W!pSJ~?*jAoP_0k>@>PbK=16yVJzz&Jc=Z~*$8t2N9E zD3C#Zt?v?;ii|3xT)ALKTTx>kH+t_QT*#WWG>xBB0+-I>B$|dU^{Kp+0fMpzX^z*J zoX#;uOOY$;<1i)hd67_=B3gBt#SYUz|8)u@xuNh%GH@jA-Hx&$CK0m@cwe+Lv21s; z2ImFqy?6f6%b;jSftY?E`I>;dcvu4vbYL#eW!_6zCs7TD=BWN6mRI~SKY)hdML1nA zR15m_HV=*Oytw)Y3a}m1oK93f(~nz#Hy@nce%ohydU_tgQSl><(qW1q-xrBI;&ZVr zI6$gjaXW8Yp&mK}7ksm+bE=Ykf?4ImB8XY_#A2xo`V8dfR9wY*%rE>o++7s^s;?xp zwOs#Ddc_T3M`G#^-r9l>uuB^-H+G+5kpJ)-_x1h;corraw&FT(Qo1w9PQSk1Lv5|m zs4Ssd?mH4*E`+Fnd>=Q2T*uWR3cS}t+*;g=xx-VA;GG_#<|Yy6YM3_La)hWEL*J7c zvHa_8%Fv;@!RG^tO^mf#zxk+iaVfJ8l#p3tQzdlnJhk{hFd?nuT9Jbcm#$W)5N{Il z6;9HN=tq3%*T|AZG+ZiD*R2fg$CxU>%~%Oi%RO#Qt+s=@Do@K;1=3$*HxO43I#{Z4 z#0qzz$SO;_hpAm)z?HY9v60 z3*Ssmynx22A}doX3T&^Vjk<51PB_k0`P{0SDtm```f``zOiK>o(hCJlvO@^p0C+?r zEA0cNz$x)1erY$MH0|AbB8`}lnlFxG6!0uRL55R|9qp%}=x!lW@1SL+$lM7upvzEN zNNTaraf`4na%}aZg6kF0;oG)}UCMx0Bks=BGs@4B{iXM^Z`j#n2XJklK!yukV!PX9|H>Jf%#w2! zhL?JcsQ=l(=P&TIG|y|f0IOU-hCsUgT)8b+43{ERE3N}TJD+?*Ln`}?qr~=;j-eH* zRnDKd6Z_?O2CHzqQ+fhqIQ;Hx<__`tiIO^ZJA38nC4hEj?=X0Vs$p7x3Hq%<_Oaz3 zE8FtKkOgNQ*&>fX51^XlBX6>be(3^D*6y}y7o0$I$+uR(+2G{9WXaoH05aS{iOdRy zU)Mex3uA>zZ>O?~$_ZU<`?UsP#1B1`T96X(4+qhr_fo1%4PXeAiXG*0YPI{u!` z>R3J;wW#HHgK&7@I&&%u*Pa*KC-Gn7DJ^H1|KsfD|N8jv|N1MNqT{KPne<|YA62RR zvSRfMQd-#2D^@$RqSmL2BJVB?%xr2OKceITsuAdDsw4oK;u@@-gV+LKseZ3C%H_T; z@-px;4l__}bY;cH%C~_GhhCEN)y4;L9PCn^K-toHvKbFGO`NogSZafx9&e)>s=zrh z&hEGN& z#HNzfFD?Yy(+bJ$!=!RmO9wA{26%EC|1zH32f%*&gZPME7P|}diPZpjuP_cp+sga+ zwe?*ibuEM;TypNc>2d{Z0`}OG(_$dQC6cfOv${;;&`NzkUZ&z}(C-zwu!>&w8Ji2| z7W*!jqa{(Yah+B^0nB>5b+6xZz*L~7xs-1F(4@T3>vp2vtM+w z$Z+}>b0j$lt5upphU>w4H_M7(aJw_zQuzDKj>*_g_#fw3!Cy(4>^3|aMa-!eb;*I^ zfRz3%r1UnHIRhVuISQ|x@AFuebYL=~H9T*d#h^bQha0w&FRCE4YHGQzfN_7J*Fi>3 zfi@I<8{nV)8eT2B?>R*F&oVJTx_O7gKif0p7}$dzlOahvWphB+rik*%Ad(; zi!7slzpJBwNvC?CH7!(%_++^|4vX{9Igw?zsUS;=-%L;qj~NAIIHa@S(UdeV4!z0v zVZ(?;ynFj?oV$qd0-O>7?Wh(Z<{RY3ul851)NQM{;aAwcT!2mRVqIVA8-wU#`hr%} z3ZvxXwzf(Vo_n$06JLO`HOO#8+9Bn?Peg;1+xpOC%C0xV8_d^79B1Z@So5~``N#XC z!}uxBW?i1_XV)-rv<3i>dC9koIFM@3l`vecYoO?JOeO7h$yYk#;uAl)DFgbvI?XW) zG4&=mLDadE^^fhP+Ke0qsUh8xxMy95T6I9E+59W)9N{4?Qv%^dLrXC;0a#P0X}>1HI5*ez zHw_H#ZTc3;%x;bmkXca0A#8nDhM;GG@fp(Zk`M=nt0!*Q1j1c*oFcR;pXph0zV3TPkVe%_%P0P>d3oov z^1J=<=eheah_8)1Aj8QiuHSMS@t4SxS19Z}Exz^=eP4!A+=r~25}SV|);&{3Uos;c z^@7H;(m-lwYefMFp8=D1O^9gmT5=c<{SaF>Q^rgiRHR0Oz)-Bf?a)In0vP=rTEyWM-+^O8l@6<)(cKdI@r%?O-P`7qZE=*OzCmM9W_LZ6Q^U1)y zyECPL@0>Uw!(kgu9Q)CK3mJ?vjx5)NPvDwr#=0*4lF2wtLHYHD1m~ahUpg<&bGVXH z!dy;hjRCIYo9@~TzSy2E#faeIW|ehrDTU8>n%g3 z)q4?DAOH6@VK&FiDQX){nM^jXQ4*1g1(;kC&5n}K{mdR1pzQeOm6`gt22COAphQ^3 znHGIqTR%WK43^5T%FJ0CWVjq0Ts32T+r+qNGm$6 zUi)2YV8MzIGT*Y#g9yM7kY13-toU8i7qfQCw48u!_Xkt5tTBnW8h+f;0qC_93%i4` zoUj9jf1idhPIFnH!TL{RJ`)Pi`zEBj%}H0Dd-8H?dv~ftVLfgNSbCBP15Q)e-1LFS zIBO#^gOaG>9L!8RtVXkU(yz1T;!w??cRNa%!Hwl{#Lv`@`Szl-Inw>-Q`RGWyJg=B zS=8WrkHxKjRxiAcq68hy3FaSHrndt?`Zt({vh>2Zz5DvF6D-nP9vzN2AwqvA$Mw|= zEL6}JUxKl?Pj6ODEH-@dtMt`e*C^xB)O|HE3QhCateg<^VaGMc2sa~e$Zo^%`O6Qt z1c9_r*aNS5g>-0G0Y!dI^Ups=hJLuiGQ<~;ySK~uV1ay%<6}FVFP?&Drl??9p^a@J z0~|P^tSY1f|7DC|*}uKqVDWx}`pv#}r$QFRB5kT%mEs{3*!$T=Cb}TQxKXIk`6coI7ViUsPqo!UP)UdTWCjyX|^a?_EdRVjD zQJ!)t1zGm6(BBx@oWnTc4Xu#;KlEu!IfvX|c9r?=LQS*CzVc6zU967SRly+|Z3Hof zzcuQ+29p(T`@h|M&Z*$E+9P^CfNOFBA1ZA&TN}M|+NC1x&J(9WZ1pGh9C)R%l$7`u z$cd|O)obF|6dwJ#<~Da|k+r|YmAlcB?)+Sfw)=0JF^ZMQ!n+>R+%QU-#7I-5X7(?T zn?ct+KK3@(^o57}G*+l76NBtp&O_1m(6GKzpbPYgKwX0VA#VcJwEx~+B^VYE8UH&b z?1$wqh?)P|Y26x#D2-c&yVFN3Ol&s7c+3(YE&=O#)e}Fd#F7ji+s%oND*jtKl{U&? z*qLtO&=Cj!UITLC`Z!{vCbLbQ*l1O3Z;DGSp~9T9P81@oP@^t(pT}3{J%TkxWc$nl zN(BGn+`BY=KvN>tRn#u*6ucfm^66HjhT7)Jt1zVoX`^RPabJ)dWcY_JPilK>i?$f+ zeupuKya?XYGxKo&C>6w7{5kWR443s};@@J<_$Y_|Y+`~ycW;0i``w?zd2ruY4PuBS z(PN5-l^fRlOWL#qgP2;>4c{>f5$GPtM894O;0+lxHW?o6SJ zq<`3eG4U5I&NdZOG@cV0uy9|R#Q8TBL_W0?#pLkQCt)^5Ui=Y|^$>!6TqBbWpWc zOamsy?89Eb@~jXI)lUix3BlSldMOE+gZ|JK#O@*&dsEoKpEJMI$`3pC@71kEByww$ z+gY=LW~%3yTb!+&*_@rGaaZ#w#Eo1Ju+)?C8+=KM@2g!7o(y4*#>wA7w_{CL>~f=A zxuk0ZIdO~vnTV_&eUt4&P(XJ${7i(@`8RMP!HP8$2085>2Z!=_?rRR3jVh%)lB}bL zS{y(Re+7WCeUF+5R$A0|QgtA%ab`Z=I`tBczQPI$1-u5p8t08yTa9}3Tb_f9$Il`({mFgbBl zIG4x<#zIu6#~Rz9FGYl3Ug0Cq-l40&_)H-($0rgv*Fj$BD$5o7%2&dNrx<89RveJ_ z!U(v&^YNNn5oG|Hy!q58T_Ui`ny5a6oU*h}pGYVqdLer#F{@aOeL*i3o`9c6b!}yo z_w`O#&m8-r8F#Jh-)D5ZCGAm%s_Himj-rm`?~z_{6VqdCwYQ5QTYy!3T5V0OIh7CY z)GZPdvSwkiToH+8n*W_H-z&H^=rvK}UUVx-3K&~UnsKg9CzHc?e!DCz&OX2*Df6^7 z)|<+&ISVfPcM+6Lu?za-2_c^XgWvGK5HB>(tV&47CX?Pah$eT=JY$szi}LShQ6hle zo~7KZ_p@U+>1fwlF_8eX`QbDq|GPo!ZM}VDR>d)X3s{ljaZWAR0N9#_va4R!RShtY zy~RgT75fdDx`fQ9&G@J)!*~(cC18rM$Q(M$10Aj&^%G)tXQ6@y2b}CRTi9+d2gDr5 z=*jQuVKuEuZ)7ChYhrPHc30m5uR^9IXfgt_moSrpiz}w( zAn=23;Q%St!USC9cns^CojGHMMna&(Jmwsln9%Ee>ebyQ-U8g(Iy-cJ57#x5YkiTQ90!S2~}smO5ary7G-heLf(s%^o>1bLRD*)}DZF%x|= zLfZh2Xr+OSHlzE0op7N2`T0u3`jUUv6YJFY$kujg_Ol4kdM();ii(IJfeZ(YIde({ zA+)|S+*%$Vn7$=#-5E_u{ev%5E;*k$r1SbaX<4ClGy8{LCxm^bG(ry`e_$ozd9C+- zdaEbQfA`^HNbb+?_|68AY*m8iP!IZgb(yEWpRBANxPBGj-e1lkSN;_8<1=~BJh+_G z-BJ&$TD8@%P}HTX-$51${Pbh4AMl+ebgR@%)_4-UxV3%hMZ=HB#9hxvPWQrIjN$zX z59Gx0uICc`FVA_@<=Ys+PoW$HCm3@0nXFq#%cw^~1w$Vt)u{z;&1 zll>R6xgf43KRYE2hhwpzU++js4?Cc2F9~4>Aybfc3&Pl6Z4=0FC<(h)tL8Huv5$(E+tYxo1 z>&0ZuJE__VrD|uW^+Z51p^f!9%1EPl?lOxMmQZS5cf>%i!3F@wh8{_}`HY*fUz%3- zu+32dy)z$Y<6PBBKKYsvIR|p$U>z~$trOU$AX5YN=d|&yiT%^hh|N%B%?cKKY35iQ z@s}tZjtX+aFQKRp4@oR0z)z*i0=lg!U8M9^=?lAIvKw;(qn^$M$+RqSa@>3fkl}pD zh4!UfEFvb~SyGeP^VDRT>7DExc0~wT)|+btHx|dUoyDe4_&l?^;<;kZwb{TJckE1U zn@6yV7H7Nd3M_y0ms0CxeklOc=xz3kT_NZ&u1m@=s%?4pH7$d0= z`Fgl#Q;6=U+J!@m?ul?bKlaZq35Gqu?CkEmYHigV7s=+DcI)y6Iujfh)05P7%_!X+ zQN13>aFVcAu^o?si&hF%I;snJK-YmUiGu+;9gU>Gn*)IdvQi!%)_1a`jhMEhc#T^< zQGof-pyvzWrakGd0OhvdP5E$(mUc_D4Eq!lTO6HQD9CVJ%!q%rHuYo7)gZVLN0mP5@d>Q`T`h{4bGqS0<^lvb(%_?l;82Vg9Qn3NrjN(|MqqW&W+^ zILPSA+pN?qy9U2L9P+>FFUG^RvOck`5SHVkPsd~4S1v=o$}HP}mC(Z7+&R+T&wRQo zZ7b?LU8ryZm%dNGX^!BSxn4p*hSRgZi0%pne~mL0(%y?i&*VX=C~mL#mf#}dF)Mec zT4-!g83++u`I87*l7w1r5e+!K(CgCWc{+fA49Y^L32ee1g5>c}S--U5A3(0M#{d~l zaQm-$!=E2|zlIt#%*qGdHxrdsmn!k>Rc$mgYfD94H%!mR^CAl=dhuQ!e$7E>8DJ&Z^gK&v$TdI88}#y*z7(i7(Cyra~_k zr|McS5@3|jh@?O}h{l)dK^2qsUVL^IRmu}KD|4Qx3!mHreT(m>8~k(eXYg(~$;yZ7 zuDEk~!=3dqF*{N1(?r2YNQ-9L<~6C{HpU-@M(SU()o%v?tSuS~<$+>ul{M{O&fQx% zJ?;5(lH!5}JB4a5T!eBUCvL+NHrxxBsZRBHr!MF{P}UbWIR}Kaw(b_3iME(zQ|1b} zmrERWw5Q|7+xg!XR)JGJ=uw1|vl0R68`)>18g@GR5X3yGKo+O34_~XC%0PzGHY4u(ZgWYXji!8OpLDJO7c-YRUiHU>gsM~m zeO_H9NbH5JzU+5MG-aKd7g1lBUTw`R#5HL)n~ucJe>>H>+)W>#Y-%_E^Rm{Be&Gt( zVKvZW{jKZ~n3Ql2qpB1UCe$@f=93Hra5$b*#TA2`xMl+mmqax5_*W%nj+M7O5JL}% zE(Tl3@s`+pJ0Ef(fSBM-sQYC(17qjS(BnXF0nnYL_EHmjC*@(!D4k}y`JE>3B-MDX zkeC=IPY%q3zS9;PE16CYk@VV@H)!3(ktzsAwfAE`xhi8?lNx8q7NsZv*D)-@*YJX- zF_;P%>9+we=pGp6^>)NZqnZAudB}~v+QzUc@eacX2kFXZ(jS1HIQ~1V9Rthvm>iCO zAr9p1%XJ2#BA*w^gJ_Ia6o>mSvzZ(2-e_R>{g%YRD0S?|fG--nulotZ7Y=J8>M+6- z4K@%zHAEwv)T*~xV7Wv8f(*wymevdKb+A;hIZ~sZ-LiBJ&lC0Tc`PXtebSSvLMzG{ zIkZ9u`3W1|ExLvBiqZtcGKJ#%#;adP^{b8PByWVv#+}Vy;E$ zf&lsoeQE1)q~#UGZnCm)1Y6*{VPanSw*jZ>3uDwOgZ1UPu>_wTTC?`|Sq-Mb?cxVt zJiycWp#v%DOm47y(@#vY6b?&fr8wD-Pfp{3U=CgF4dkJ&bd?sq_LQJB>|)>{3Nj68&@K$(=U=teitGQqs4Jo#fjX83pk?4@kbp zM(lQg+u)IF!aZn$496#RitXY%x&8T)b5o_wx>Vrobf+F-G8Vgsws#DkeIY2_RM~!B zeV>M!nl^8+k_^ zLR;rAS0h#}(e^3k`GyZZL|r9mlK_=|@bC6l%F^BX@Zo5(ld3d0Af6@DK7$~OvX!&I zxZFZY(ZwT2O#J&4N*W_^X?x5e$Z+)RFpuAFjAP7fHp1|#oyX5h`ReaP2TgQdmOgxm zVmY=pjGs5Y*bSh_obKdmqgx#B1o&&LrQcUsM{~y4t&dP+}5kNfy2=7 z^SRbwt`yOSdF&;_KAwf8B}CC8?w`|Uwm_j#V5dHf9IhIYS$?Ew5yzH%H6}OT0c_ph zX_|K;(BI;Vt$Jm?Zh+d(+6gb>{dOmJMFU-qv!L>_+P2cISj4%qEEnOVC}(OD{a;Ih zjp+-10EZOyPR89BET!}%G|J3Nw6fyb$i9#vq?KZlN^=t+A!IvjyY$i(@Uy}b}}LCKX85a)32B~sIua}IwhbUoeR_W zT~e?%EL>p@_C@8{?N8HLf8Wb$DTNw!;h|xaE?J`_;~zK;^53oRi)GANSVcfxjv{rL zjvd9+1-!%c7mbl}=A!qd2Hl~zE({`;sTGjn`u5VZqLfPcd-#>Vls~`uCBp(I* z7AU=dT+KYMAcZ>L+fF5Je{b)y63mO}KDJGYdzJa5xo6N9*vjDq4-Pf$JPTKyQ%7oU zW>JS8wC4U+QnOo4=;&Jcygx2NVg6#uE^7(fqR<=JS_3u-Q`ALirsHBrC*~b^K#CvKKmFdS zn>rgl90Akw>BM693I!)$khLlN^?(j!IJ#v^usFnhAuN}}^nHfuhL3f~&igXUMSrb6 zk@oH#|MkvCj6gvKr@Rv0tV<;80nj#LdB>nf)8r#t9l?8}HyNO#)-ND)bPlQ;Rfx0) z{d{$}BYhtAIA2t@PC#~0T*E#=@>XYriEXT$czc-pg~pX#k6>y^d0kbO%N@nnx6*sS zAHDfVtr?BTL2y8#Bqn~t~Vau0ok{Xj*MZ=H&o~x zaL9Ts1$}rhn4;p;G(xf#zCv5{U-Do=YZFPcOo8!h=}qkj% zem;MevX|E3UIH1eEpo+hrNcN_KYhBOd~Rs!Sr5D$3ORYeeES||iYX=f6_V+ludeu8 zj{SRazU?XwVBw-w3UElR$bLyEB$9soWsbB6W(+~P^@)MPqo$Tc7*Zb_*9!Sh*iB%BYSP#)isPY4@lBOL+7lXQXhYVx@D z7>7S0iST=tGQ!Z)Y3;)=+y4#=CXdH2{>E-yz(t5wgB@jhvWbw1^nFs{`Z9+e3HrRc zgsW@99@CpoGWvQhwp$`_;Kobu;DYamq}atBLO_M@0r7fz51lFGbGFz|$>w=K!1dcr zMUt^k|IVM+ZBfs5Nx!@_kpBiCz~{8e_>@1+;hD;|*7@A6rrDXO(wHJp z@#=Nb9(@NHE zv?=kK7mGsZrfCAte8jwX%0_$-yW6cS<=rc+ztTe>C(cua@*jUJF?61IF_Js0*mX*{KYUyxf#1M0Qs*xdgMusd zd4z^&jCg$0U_B$+go*QVWGH3QyQzB=;AMMDMTJ-`G z+R|}onsuRIYivTkvn0IaPse~?*>(!Zi9;maWtGo_TccH0XI#?GB6()Qih?j7{xD@q z?7*#6^4D5tHC_BF`FSTOd|Uj+MG7$1uS$?}A(VH~g0+Hhl~+5_R_NO5tBJ*Ff~B$r z5J+t4ZmD8Gs;xOKHLCB4Kr`x`xzpzRmsgMsdc#}`BY; zCtiD01eBP+(;w;DR+hE5;Hazodqb;=4T3T}?tB1~`zA8J;4{^E>5(`l8PQR&q2G9u zE@=O%f3I@47BhnkCrVBucZs4WNwGEKXQltFlEuR&FNMmnjHHCCz4Tfuux43T^JC$R z5*0@cNzNvp2O=5s)c|<9VecQk+tujl=_BdHv*VsXZ6TA6DOw4kdUv3UYar@NBZbQZ3xi~tB5r{IDU6kriG**yG1;6|{!EP94_+Ux5-=vMO&8dp|hX(@dLL&Z|9Slf4v-K4LQ!DG@ zQ_O{YJEC*hYz`gS%JQVG3Zp?^!92x-%m1Z{ndgO63KbJlZpSK>>jxDXxcb{Z`9aLO67m7NdExuSK4I>60n+Y(Tpq9c#z*yE zJZ_?m7X&J60J$h#d1UW(%E3F0!l-FHeAI%Ldd|>!g?vkk))iJH=)|?Ky5@V==mQ^f zC4Qh!)A)1|=9^~xV#DI(m!Zv8uGP&$pzb|gR9^^Fb+Lk|Hva$w5@gV+9wurS9T==J zw;&aKUNc#j>1zwMM%^pM_4^GPF0)==yOxm0BuJXy-YGG?(B~IEx2A13aJ*oY*-Sb-r$AZ!k*QqwygC}G17wT@JKSKPA}o-0{W%?0=H~5I6MJf_IzIQ4bHywK4+ni! zbtASD^m8AIy7?JLCqp8`Jw7(jguOlO)4(n{5ccH$%39%{D`EOQL9y~f_6$I%!>5|< z!F#Gu@GXc;7d^G&dj3Z?!)FC}Zmk+Td+^2W;rLF-24j;Eg2|uMi^n5eX?EnrD8=se zl@5QHXVLTsS4^UhaPT3l5N~1as;2*F1@tr8q{c+|W85%9*ZXWD@dxYB zt)r(EK@W9ueZv+rKCvsbXHF8H1ug5c?dBeX>E&_&?U!T$IP#6Lil+;cu9RQEztl$q zamPXc!*2ieFjg+)bFk(&m6s)&+Wi9phh-6?vEuSWy4v_w%X(u{*~-A2R`-l-VOQJ?GbA5x5cO`B0UPT zE44@Z91gWlaIDkrMnZT@5p?zojLQ_?gzB3Rom#~OD~pt}s>rSQ<1hgTnR2|G$@f8G zTw@eVfgcT~hhFm#s(iPDTa_`Zt>A|`*zE+*MdKD~Zr@wSaV{SPZ(4{mx`Be~U%7%) zs-n{xva_lRmR~Qt3yI-r)}z7R@DqHJRk z^iT);Rjq`MJ~Y(y-HoG8Tsr6H1$b_~mkl2c-J7GmBec4Y1=b^ZVER5(ZOK1+ymbLN zNDk&+3MFKW$gb2DtX#(%=tuT!tS>C}A0Mk|=AS^r;abT$YEokmf`dX8*j>#}BGHd% zeZG&HkTpc*Em=v+A>R%A z<~9VqY$B)u&~QVnNZ&uI`z13wp?3bn7LyakYA6}945moYU(83gtf6#5UFcLPDEK9; z47%nbm-2uQ)V|cb4Dju;H>v1Hcz$<2um6vLj=gMXoIB4FJCGbB)6NO{d-zA&cWX0^Y5mXpr@|6513mzv?j|96VB7r0Kv?M5zI?@;M~JK6CNM+*;Y$}NN1YISH@z}QL4 z<1=g{RkGJZs8;%McfJkWo%PWBt*Xnmb)&6yQo>w76%B~ux)DYe#`CB>PlDg|37tN7 zM&=@)jII3YUKLEwVRo*7IoO+>>e-lm+_Kh|;zukr{POTrIag%-aYh{p573#U#W6>ClhtS+VHz;T|G-Z2Ef4+(Xw}b)ED%7UF}*O8*vO5`UOe`8qHEi$X_Jn#dE!!&pk@%CTJ|^`yc`}s?U~MDQsnB#$Z($I!)*pPTxT=u% z`#ym=khc0TgTPJwfqJ<w+30_Dz{VNQJ)r7QUxoJZ1$Ya;Hex(w$P{n zZJxX}OgSNm0rQi%Ye3#4tI`fMT$nmhG5vX&9wm9w6>-$HJl$gCA-##aemU;4we~Va zKQ>8U7r91GbtmL+0lXf~6W~Y@q?;-TYgQw1NT2%1OA@g6mg}9Ow1Zr3_CAsY{&-}O ze4G&EIwxy_kb1QQ8-C@R?l&X+rAA{(c`H{sk}s`LH$Go^&hW{8|3SPtNh~JOF7!U|u(NMrYv?asa_hz0{>jksx3tq0G>U^vtn>==* zN{kS-p(eC|$O_nEc{3~9@H3WEd?d{BJ_JsYWjFa4XG%yGeI0~6s%xL%$d40IjEYMS zqKPIU`9TkL#eGY?0%sU9L+4;(g^@7k3R#NV6-@n&OAxmhF#>O_rJBV3FwSQE0aGKn z{9ojJAp8FPIai!6FU9pToc3VqtH}iwtAtO3ghYrZbqi@VXgJANah`&E_6z02T9Cck z$uYdL2S%mqT=w*4d*solACm=oQ8++Bi${>C>3^TC$)xB9@Knod zr)oCSDCm1dTHFn)cuYaVg>9P`uo@HwYk?`T3hFunSv0D@#kg>>7R#uS`@2KgQrLo% z@{}qPDwlCy5<|LRfdT}FTb-gamf$9(!Z->cKTNA$0aG=`P1!xN8&@3x&~TVI+WvEx zU3q)P$#wL$h~ECz<9&%{K@C>(hLK}#vTU+yMx)TaZ`6B@k=VC9H*4Te{XSudbNMqf z{VB1yrCHO!r;RtSs=EL+E}KWj&=t^d#+18}@8x&d#_3DuKZ~@?d^QyH2tMgp0S_;gevM!=wIw$;yygC$R>=#< zyG3pvFjviyddd9M)hvE%V-2_F(XyYyDA-QAvPcCDH$nHD+yj*3mSWdw{4eXfsdH&# z+tZO|ADtjCXv#0orQnTb$Q|}dltxHrkV*+vf$5gy3o*)tg_BcnNzb$qHlXX z+O5s^N}Fup=eU|av#?4i51P0iYq>|()}xygw^J^Rpl5TL!drgN3q#pOS2v*sepvt0 z333J;$~!=rRo^UY9mbk7Mi+(age7(F|46fl0-=$mvX9u`WdS;IZPYGd?DMsuW(jOU zw6bJIyjdhfedI@6q^?cu#hl|4C-q>KGP-qVhtlL{IO;wEATwtvZ!Bsj*}VwvSnEZ) z-F+wXa_@N4s4*>P_5+_FXt<=_g=xZTiAhiy`@5UdT&73%o9*YeVcWz}dlr)cSjy(m zO=>bDb01NiwWq{&3JF4m*wa#0N=C5mK*aiHGFG@8G**R6({e z#kafPn4qP`2M3eaRGLZ3z6&Xwrf)#_VaLSOdDKtMQiC&DA;f( zv%nYARb@d%(>f$m&oAx=NTGRmTv}hJXxZ{wH`LTYR_?g$h{^73+q7Ua)5Y`p?xFci z0eqDshCzgR5n)2}Fnl~LCLQWA3np&(QTDh)di9#)pyxOvrA)EZv-&_6j>D768}HEF zPNZ}guKo)1YrEe&Asi(@mQqG#gY#>sao7UWa1s&t&a<81io$$0PU*%-Z>MoZ!(ahT zG*&Eo12?~V`AH5moIscerI;0nGkDva>Lc91^Kv}1i%^cbK2pNwYj`yOj!U*ycG=wE zLVV?*4(TV-3$%As4A3(morc#uiH~Hb8k;D`?m`1_+!{UZUV^XSH_EHL*MwMlg%j%V zC3mtigGD!P`&iKEd5S)v4npnSuM>`Zb?+2-hOurGgkgwz=`ZT13 z*6A5OUG-KY(A1Nn#Or!sXix__@i&dVR>UFC5sDpJ?wJAvqk{DoGbO>ZLFnmTb`1tO z%a0p_2cL3RUz@2#l2=T@w%d=C34czMrD2pSHw ze>R%_DSgq8+?#X3jO#~0nQsvA=X1H3#Sde$S)rO;%)-vw9U)|5JRsdU3c>(zto`86 zB*b=rl>F=a9cppbbS7rGxk;$(t#qbq{}1qIeX20oi~h>8KMk^PEpV-WmM@A3S<)0D zvCAVLQ&rdZif|8Z;=Lr3xVO@exL3Stgkq_*C{A zafuUIV7;h!p6UT7tLD@C-1268?G#L3&VI}v#L(^eP6T-H1(TJw&%6}3Q?~qDhp!Pb z)~==P%2m$luFge4#oM04N5M0RYl_vkh%>kUdW4Zqu!B4cUPv|yt za25sUV!}f?jI02CaoZ39`~dZeajEof?h~3j^C#=!e#z`!yXY$Ql=$gs(fPG5 zMKrPVWf}WK$nl?962J%RP52+pXqIGNr{*<_TNU^?rX~_~1Sny&6!~~%7@*i&XQlDQo$71L{b5HnT0I?TxJ77AiR_08-SL-*>BA3XV_lh#>V@L>LWu>rT`Pq9gpl<+C0^+$7?^Ma=tN6#?Oi49>88h?JywTuy1RAKbf4nj~cF5FEcI9ro69tQi z$X=2jYqgeUm%Y}TzkWcZ$w==ULtpRjImCipj0EI60D(~(X`x(J|W_5|lq6Ky5r)hly=9_sM33+*by$;{d~ zZ^-?W45Xq7hY~JY?VbtWiQ)=_gwG|oQMs|d+6ND%uSGojmC1n6wS?;C_F9Wti^S7( zUmpZj1f-kUySJw@RYC7Dmt^p8Z-ZWt`e}Mz_sE6<3o7ej4noq0RKnw0mEx>F*^1v6 z$rMRYNXGFRTp-mGm3)2x;)W4z=(qoZ=5>SdV)$bheB)PRA^sgazH%?5c5Z<$^=^Xy z7x00#@~8_AQ=-9Jsm!87B=fO4kAqb5neSvKf1W?j;bSZlODtmpwPbze&@X^g_75W2 zff7SVZ7R!ys5zkXxm7@VkN`+z!Aep(!_%; zjCl$`4|RQ>uY&8YPT5mIz$@#HD2lxT7c2I0u;Qh&V4tQug1TGF>bOtlaFtIcM%E4% zd_Iucuy_sQcl(2pbtYk%!6Cf#2b$m1*fP3G?V5{?JNP-SS|pF&w3_`^qKk67rthcL zLX*1ZdHlJ1wl%^m-GWE8{fjPIw!K^$pR${HI~HdGFdHRraRjNdKpV?9++No6F78w* zH26DF{OH1OEwuFiXec!OC|*A-*m(3ZZ$gD>NY|N^*5-{(%Z0GLk*Oq!QTmm~(nyD= z*=o`n_2^kW=KzQyTgSK`R(2<34$P4CSPMky4Uy$w%nL-oCXB7@b^txpWdZ56mTx?b zwXBBgfnRQHfD;kVnz z&h==_qpx&A@O3o!mhB&r2$Q$~#@v%5H44E^=T-Mcieili4|U4U0XFKOh{&9UOwJt8 za9f1U3Xx-WgFU8H5t^q;SyVKeY-n9Z+)mbKFGTs^6Ih;KFYGG>PHJoR1@5kH|J?-C z=!Al^SdQd*se2WPh4(#R%z}J}9h2#Gq4jnugZ&q~-$-}88A9AZW zWHSu-?Qb^fa-L_}Qw(*UpRhd3b@iKiejGUwc-B+ka0|xf3?~0hH;$JCKeqO2U*p@} z`=_vRV8|8xvs2T24O3a}F5Geh2bsI<{OHK&`;o&2ZlqcKL&tRxPNRVINvMBqDK{J)(4SdUnDqonOESfKnTW620 ziGX4TLE8}C!NrVvvZJ=+M}jp~oWm0wFYT-9m|H#VtK+Fr{z(hg%nuUrCyH86ED=LC#cs%fcD{=^17#( z*TlPNONEzz9Wf z!T&nPJoqb4I54FjoQR9=stSK3CC&koocO6v=a;(P9(IB|`z%csvQ;i=oejflfC+o` zge~Zy4*h;stuqqsTh29Pr?Zk!g=rz(GWf0ilYZv_%PF@F7Hho1!$LOJ+#e1R4)$n; zT|nq1gfLX2w&Z~4!z+7Vlt|=-p#xeu?DKUw{>_zW6KFUp?u7Yl&v7=1(l!W_){`tT zq%xnX;zK;;x2})xrj~=(qU@m;KmNfrW!Zk}J%?unFgKfyx1V)VwTdsx$*`C%EVInF zN`EmZy(J}2-8&P3h8s+nob70jsdRUzSvP+d!i`_@Cz--)H;zzPF8Pwz^t43svIfUI zWmTP)(|j2|ngsaY(j}Yzm<5l%)YwZ*^lRe1W;mGS+pf+Er2Y_}jRp-DLn8)GcA(a1 z5hp6T3L2w&V$)tyR@4|wFc}9x1XZDpOm1`6`{5VvYX9_U`x+n(q+9Sa5}6!&4B>qL z(6Yk^A$}&$_m{ohf|dUVoVB`9Uj3360O%C89XV zJ8oDt5flWTs7e0(qfFf_F?+!AUKXLRn=5sfGRyv7!jWJV7bpL)Lx{lk=;?_B2k>uG z6SB|FT3}WcWb*jA`QSqvSU16#e(j^qxtZCc==ajcRQfwLp9uW8mk3 z$X7BTUlNlV%_dwugMv(G_eas~V`7W4mJlO-Ea=3EaqeX4%DFp3@ap({+E`Hh8+#glx1&_HdreY*Q%`ccm5 zN)&hY+&M|ma7?|#fi#_Wj|H;x36uAmC~Wh$xkygMhfY!Rf1U~@I4SD9at~8Po2LV3GMpday;d#iA%jdO19R#qK{buyb*WtX<2h|!PpEI5X*5& zovWM|5x1>gQHzL&fiMrC6IXkM%%coRwHO$mal^>R2a68k3qzrr0GX2r3Mr~~71+5# zyqk@(h>(?YR2BaF$N)b6Ad`Xgl?Hdan3IO5kc+4y9(OQHkt{^aQC}D@JZSg_neK++ z+TPS+tn)9c{mmrRdMt(4j&^_ipTsz`lSB80 zJH10ur9(=AFt4BS`#d>5Bw8`v4?U-#;j%*y185QjzRb+`c4PgquIZML9k%MfXREQ_ zSIG%4qkRI8=G@EB+gcZ_FUEt8egmWQ_lXPRDUBXVJzm*T-(D)kOv0e|L?=o+@@jUv z!7pz^eYA`nnC-6@!*<^A&9ENh3Y?+*k3T>!Ge+S-;(la0l~yI|89L%s*kY|Sg0u+) zZsDQ){VYc=lyLK1JyK1+_QdhLQVH#qZnN>4JIAhqPTcH1luPU5%P!IR*b!fiwjVaZ zWw;QOx69{8^w~YbxvQ!`-S5$X`juQbdu&V|W(cUf`h7YxEfVlL!evU9aV3_8dBTi@ zvw6}ck&q>K0e(xd(8#ZibY9zCmTZWVC^U_It_gknPd zCybTExF<<4z$!2IQ_H5`i9uL07nnwe_wmQW3}oRS#4zR7?(q!(oj9^72c7wGgHkx) z=Dr$DHQU;vWo^Rc_&Q*_D4`|0xb9L5PZ#APy?t%=mplGyuQD(!yJYjh2_J%~Xd{0+ zleHw9zS_5AY0Dw|{x}$A8A0$(8G8*gl?9#vFc=sm{}Zq+CteV~l3CVNW9Fv7-ih)0g8c$12lqySYA=K97T}d6{ zHu=hHvyCFb!m^}lays;?OMw!Q=UcSL4mT_#28}CG40wiJp+!ukzFiQ>41IPHlW};{ zmbB`$-uT%-V%?&{20C%E-SUqx)4^p8uj)cUcGhaj?TCLU5wIVJQ*B^WWB8l+I()+V zZ6=$=P=ZXwC8L|8_F95@>-;UlKJ0rg8z?3BynDzxGb?7 zK9s`xc&vVba|2O(4k3utb30I7^|-b5jSD$%^U;6Tqsb-KRD#;9uK**@X}wX8fmb2X zk0+SsfmbypDVR}Bjzl~^Nqp4yDL^NVRK0j$Dj97$EAtnR$LNYb_^MZbqw7rIe~9zt zlDUXT5Yn^cz=qZI)2pdYy2LUBP(nIH20$bm?PMZn=%gYqa7)V*=!{l2JdpJFO&?5v zhKs8-4B0-=nFgKs%XOKaL6XDXS(mT<#j826E|q1TWYvJ7KT5`Fu{Sn*faAjSMgug6 zg%EE$HF1n#{5_}68?eXn{)j)9Npq&G$v0FugI|FpoKbTdO^P;R5gJDNAqz0wXIk|s z*Um!Mp%OOU`BmL8(OIP~UtWFmJb&&atjmrDV25|zXevS$no5dIF&-F7?yPF&t9`YS-jd!s$)ug&qOtZS%gz0%i4W4%bg?)*>P6OuqtP;C z_Qoz(_#k@fgVEOQCb;!oqEDN}K&*j(kfbGo$jtZgS;v>?wbj zcn%sa+1_v+JD~6vxZ1t1s1XqvqbU%(q?=IfJ+J(f`E>dZPj;p!K!0_*$ILeZ9p&2> zpzo;wR*UTmgu!;<7g;muFS*nVCghf!{QTp3r$~X|>lVweHEHPwPCKyh1ilIjmq9px z@LO4n#puX0d`vk(sWQ*}#gRfI^Rt9eqR~2-_7(+brHSoQK$RA{F^!W~OQP4>QLiI4 zjQTkY!RgcikN*X9;w&!8&4vLgpNuyCKwQR;EnXhIBrPYux4XYV8dc(CP!P;)d;Ixj zl%gC!)Sxl*77nCnD^9rup4}LnHWJUIa6ED@eHM=8YYcgeAWd|{js|zkxJ@hXOc58EC?%SJ(0A> z_8go1H(Gm{o&i?D!K!UY+>PKb=)_evQpUayc4;c3WI=JwC+8mQYUG^FsBc(}754Go zHfoQB>G}tuFkAM_Nhw!SXmP-<+{4!#b(P7j0w!c^+8NbNByR8f+6z{^^UdF%V?Tg~ z!y8MEbBNc0iGw_y-9Qcj!(VoPcT9#kI=ci#O4@b`{?K@yhyh8p_-LZYVz@j`{}nzH zkv%~xBeVba1CI?(^4kwdYRFNdRr4#x#x{gx2+6@8)3^s&USc{1eC1>>VN&4!Z~ z?0ur<PHd|y*F%SqGx`~7U8|!lja4P&{VSS8U0_@VbV3;^cDSIx zUUdYu9RQuL(7Gq1ThUBeYgp1 zw&_~jQhLo~In(Di4B|83Vc%cJQa8`GSmFGkKeH243sLE`I6tGDxUBwD96JazvHI&> zUy!Fx=94+RKw~6e*h)Oan~J8xMjg*YAo1#Dycz#ED|SO$go?yO%l=zX zTgyQkxM34?P|Ua82}?4QEdFI34{R(aPF8<*o6T9OLpassI+_owWzO2qlFaF9Pzd-L z270KQL(;nrX6e3{Io$f5^#gnZ;VM0OZiT#AlB!4*>0xga$K z;4*i^EnboNZwhK*&_Dh}W0u?ZgeR>R!!x|qZEyu&+@7+#=n5w_eqQ}O9x)+1s9j2p z11-`>$zFi}w}6v9%;ZdJHM6T=`>k4f^@3Q;f1Q5Or5JhQ{2|C}Z|G50ZsZ}E1+v2x zs&@ewRckuk#~+{*M;G|VNn8=gJ;RfX015nF@5$^cT~8iXJ&mMH#9V*djCwNi?Q3xY zKK!AqgE>6c1#EAe6M2Pa8E^BOqP8`eQ3`FlOnmW~F`p)$F3(j$K*Qb!&@z5n&p2v zpr5$u=udJQVQ&1mZ?=SN1u}@v%iof%Fs*2#s%x8F4pSymH;ul%1WyANmaf znxY3h)jW#G%F=yaj$^7Xw0S-SmY`cv2f|0gc@RH(+RV0X)U%IoBI~%D8502SEBXbL zIC=!8LQL%lpI{^-22GL1nGEVi6RNYfjhjIab?x~oze~mO`juFEiR*aCcs_U7>sNX- z95XUQX+p%^H1c)Q7owt=)~a#y4gJwsct9v|lGVfrmHI4s14=|Z!>9#9f<#-yabZ_y zp0C}G3^ZK6$xC?{uQ0`>JaK=1W{lPI>vmv1X4}Q+o{(UuI>(A>-R-g-1_{2*|HA#~|*bq85$O)w7{4hOcO2$C>sXx;iVotrN% z!rXOL6kXRdJ8my_%k*saOpdnFNx2hxvfs2S4YAvq0Vw{hmZWqcbAokup+sJEaXeXh zUYK{i!=Itw{)S6{f18@g5c(|+yWLKcM#9$c!Tu$?5_RIn+DH+Qjugb){U&#Hv z%?;J2a04Lwr)k}X1oy_MLV*InR_KNKF2tk738v3AB0=V%qLpuFQPE@N8tt&7-}5tQ zxYa>BVSXUam9D=W@1G*a6}7xESyt2)q(Od1&gu4|WGNH5LrzQA>tSU3LrcKWJs=Ws zSEF>Nrzv~h>`l|e=D#<2u)-V0wr4S-DVG5YerK<4r-fB;%LXkp75e&D{Ar*4ai0H{q`_{P3onE82?@3%0#Q@F* zXqBYKCIx?0$Df?TIMQ8d%3)~xIG5Y$)?9p$_Ik?0&wkfwHPCZfB8(Y=zBUpL3)8n> z3edvf27WJwBHn+kY6~)NT9cRQRohe4-CCHqree}DDDMvk{|NJ)pt(W%SHO*w+j>p> zlb_n+NAzG0oBNNj$WLWxCzsyx&zABvScEM|sKG{q2#Uf0j`C*BMI8GldvpUm2Z@_1 zzSJ-FXrB5k01|r{mO1!?WUa+xJWfNqm`pW+nCeM-ytO}!&juE~=$~i3u*p0XID|A>6J^%i5F@s7LU zepD=pgoZrSi*!AWa*R+sC3k;59F#ek!eWc!D-`mK5U!_T1sBIMU8%e~0_N4;x{H`T zGnhPywTB$xMKMkNFk!`-2!w%n&_WPApy9x<5kwn|>S*1=vTYd;a~6t0X{u1#Z$Dh% z)T(gvre=;Sm_vVR7r^uM#I?A^;Kl$qs9hdk*ryc#a#5_x3j8x^d?kB2yOSoSB6(BI zqz1qADfQFe(+Fb^ZCHwgn^8$sB8wTa;Ical{j=Cq)IpJ8C)S)6{Q1#%*awQY>w-{O z3z*HyS;yCj?)@)mt&L zz89BVT=un`^v6eAahIeNbJ`N0LrpcIB8W=Is?YiWg9VjUrypsTq53iztOvAh8d^D^UHX!|_M*Ol{)YMG0fnC(p=k8?0!}m(bL>sI@aCRfDFLEw#_8}oWvH_qVlQ}_1U5FtZoui(}cbMyZCEw(;hS&I=fwH|7mi@ zFtt&m$XcfbaOFf0>R2O8Ez7 ziwxh^@-tnE=W9f9X@GHeIO2jX&~TmaK!$3fpySJU2-|Z&&F$iS+W_pR&Nh}H-QKF8 z9O?d}h9v1f#yqskdKROdkTgKF?#=v*aPXkom}t#{5)rPxbnUBwV<+Wb->*f=%HE#$ zF!N$N#$ur1pw*av*%hH~MLLnb{3PayqT%pUxuhg~`bodoM?>)4F4DGfhh=<&#-}Iq zisFX|fcl#GeMNby2sCx7_h_O~EMVUvXiY;D4SKv3;!pGwmhumh_)t`3B>0lZfHSO*DbcQj;{e*Jk#JTJfb6vhr z{6=BByl)Eg6PEZ)4*Y&hGmFuyx_P_%WD?0zy>1iH5%`gR7@`%2kYoZb0(9bfJmxu` z^~Zb*TX_GkaM9j7`ZoXTeRqhmfLs{j5R zFV5bmBbu?L=Aq|uu+gDRT)9e-ISjxsTGjRn#AsJSq`BiITGM&{UKux?rFgPgZ&`J@ zNCOSGpY!>otwNBVEhCx|?(_xpnv^`Co_}?QA?Ts_$q*?n_Hjx&+u(OY;8(?u1(J;W zzXjlk^}{Kh<=5L_kyRBoP*lPMA z!4XNsAsZKozdz6*Pv#jQzeR!XjuGG6RsDO7JZh*on@g6iYQQRDkcATVc$HobLAA*5 z$O(2>p^AO|GD*A72vvX)WFlFB9j-xr$8o}y#1QTll8cwub$7xjbaHN_Vk^A)XOI|`M1+>hp z>XD4|9DVAVe3DL4%P6lFVR5EC{0(Pax(mRlbF@qrx-EfmV2b z)xC2orvH~#a~C9_)6l|exYt`BM`aL&GLn{&4XLsFXB6Od#oSbJn~OuKaDmBBS$+

0qi1n7{2Ew6!|_O6hxfk?XKkXq&Mg1!4LWh!Q+Qmf zHvQKY<@x0d;-MY2jYq46dZn7VNf0(x)2%Tk1BFG{JV z=Ae^Tf_|PGxw?@=jEaBmeQ+eCe>V85`oFROnAJ^MH<%SCJzYw%$iS)a9Zcj&KU?jJ ziK0}Y!&q^TPq@s2qu87ta{R*$_ka$!vSuM;GZ9OXF`Biu9Zeo)iRz>nw*DgD>W>3S zOwfs|&c1}d4`Qa=@%Kd{pCM73ZA5u%R7C64OK}?WX!c4MG`KFW#lF;H4^$15`B{Ag zdb{^4d1k{XiUKIFx3jH z`}B#$qvvHMRZhPxd^c8W7EF%De=YYFyl$wXW3tn49nuxzLx=$X(tt^EJw;FauCybS zu;hgpGqfYW>Q{XO$9Bc$|Jv_>Z9iL4UubGI>S~QZHl$tr=C&rKK;Li_X#Ez!baJV- zf5lIa!(}wlmN?S+-$%yxGS-QJTP;229}BzdN4gyz8=)y@=GFCnpIKzh)IJROIO-UI zhTHdlUTZKWb~D47XNzKCakrw@LB{;|uL6J6 zV)wSxNlLKs7)<&vFQ0x!or0Y_@HbcDtG>vs25MI=}Hyuw&|+6wJUw;vtG&e^yw zxK%5j#RaIp=@w4)Dt?W0NyOEZ^{uY|$@K$DNeYK*@B5NBodW2@4aY>$&8vmBzBe~8 z7&EK**@K3EvQ4rVyVjFQAm|j$YT8)o25M>WZE%O<>qc2wfuL|4gl$ zgtb6HNR0b>=nz83-??6OeS{BhlWK=5oT@GH#{aFUQuR^pzSQ#UClk&SSpx)!hbP(a z{wX;Px#!<}ot=Crd;!F93^d%8?Zw+Oeb8_mwY|x`tRVTo?m#42$2d4zUabaWtX;ISwedJzfjPL~~~Hwfy+`qY=$q zb38(5*d_J`G`(2Ra1#u)R&@N%<_f;yH|RFANe^7R`42k`s*I$^KdWCEpk~o*4ivKrgEgL})HiA@sZAk8@>55;75)2P8;UXhX6rU>bVMWJ` zW(ihnz)6XOIcZWCdY?iNO${G39G%sI%Qr)D)ZXxK%{-pg>J3RH)ZNaQD)eoj+jU>J zUfa=bTmG48fK(&KTyRq_5#T3#rAT4xa*0Fpt$Q<|_qlX;UEQpL32u)c5c7!x-@u^q z?c*AsB`UljnrATOk_i8I>bJ8Rui`GxU(j>D*2`!Qx3=Xz3Bf_Gk`zm~3t$2&mGw8&1$}3KOv=UY6PxH$x{^b^@U#vy&?w`7y_bkbPtimr))~M(r zT0y#aZY!p)f1_vtxXtyter)2l|dDPw>c552-$yYx;!76zBlC+Ka(*2g9NVPgjHtLDjP|k zk&?N7bv*H!$3r7{TD3&c&~`)yzkr5Y=~IGzV!OI`Gz-5RAG)cn=1~jYalE#6m8cmW zYxr;Y;s-C=`rUi&D?sc)Y&IzYmK*;v@ZsPE-Gpe6l_D0i>k1NC$dw;}9~=1UM(nJh z;ct(Bhk_F$1;|){mQ?8adc7O@yZin75MJyFAF^U2y0F2#OMW7I{@K85ZDD$&&wz}3 zWMWM}qW!3|t;M=iJ=S<~uD|vC_`TrC74Iqm_(Q+xbucblc7G7IV4I z-su`GNxQ`uN08=bC8&I9^}>%oXv=}Ps8Ev1H#7~g|8j3* z7}tL3Fb(`Eg+T!>aP-Eju#GlKe_@ z0(cHdh#O6COV&9`-_2QYSg7e0=AdTkcMAkJb zk*?peM$kwanLo4tJC4e!7x5Aqqcg_yk&WW#tk;Qe5|16dAxwTMa12Sj(0_TclkfLx zA2fQ{d=HsZ8a|AX^wd4eQ4vD{8cw$8JL-2oe`;|tUVE7%`<7{=3h}e7f2?n%U1$|+ z&v;g>tRhktfz2~02Crxr9uMeB(82L(bfZog_v-wu6(ofm#2@mjXzwbvgCY1Y^c!fn zmO;pE@;AAqcIy14EM*Mou|{maSQ|PlH5o-Sg%2b<_1vU{=NF}xLcrm_cP`hOz;^QP zV&732$q?CbXUGQz2j3ncz-3%rX&^KnN%{Uzv>@D8y=Yw(Ffxsfm-Us7I_d<9S!n2O zOHXl`))uPEE#0&QP20m7bmE{I-P-l)T8yjQkr_*mTra}a)!MK;lE@E#B7Kq$`Oev$ zT@hh9BYcB~`_uDJ|C|D$8F!H8;v35m)iwh9`v^$HzRt#?LCq?W zla~#;vTgtGVrB{|_q6srVjUFs_GnPADi72S7kl+$SPs7-TlITVk=%vK56edH7rzjyrmgDj ziP!NNW*oPC3QvRKC`YSIi_AU4c#sDw!gOTqiiezrU#HO0ZqX^Xrl!4TnZK+p*o#MT zrICY9obZuuU8!n!Wo%O$5NP^@CT6Gi9hu>c((ttMYdUppTl1XQR^=V%TaTNk*(V=B(w~Rd zB{R6FFp`P#+}o1Z0;g|1GV~Y5zwVEZ3Zl44j`$u>QlGL^bOCOi%-)#ZVa0SDYS43t5Uk@KAHF z4d&{m=H}a1bb!!1I|&B^H6()cRr0EbmoA*OCJqVtU>DCtKxYph{KrZXX;t}FQ@rG{ zP{f!+hsHj`s4qJlCVbSRf4Z{yo;%EbXggeBl*z}c|*WH z4hP;f>sPZGg>N9-ggy*=(md&bPMrF_!t(QAqA+YNGcb9PQRg7$qVr?9ve(mS*TP{s zb@>CTmM!tw68?^Sm`CCLe}&EGA@0hl#Hezq*{= zV1CubO2Yh4&6CoD+0UYszT|@O#wV$ z(*8NyANnyguW~NdFQj@9{QN$Kw|D9+$>ammGx4n3Db@w&>?|5$sgpgP(pOt*0h5*&iNOR!+U-Cct_ z!3iGR-QC^Y-95OwySp=g)!fWXovO2^YWfCtaq-l3yDHq^*!XSg==W=%Q zW}_!e--0D2p!hWnO@3m*GOLAB;@HXF+r%Q2e#v!J_Wj8T{Bm+rJ6MN; z#Ety#oSI0~coudy#%M?qkxQ(Xf33&dxw#*|F8+4{gRkNOB#IYML&!m;L$M*GgF zSa`e~N^+Kjnk@+$t&3Bk3}i*!dO1+vQQh7Ww%p`t5|=uQtjy~%WH-B^VnpF2nHCV> z0eX!<-k=euy^ORw)tq9HR94`%|Dk z03+%#CMkO`kOcHPkShJFpF9`$owpV*)U6C_Zros_6cfGbnX4nyWb2}P=qOveRjtPw z!(29gY3)ytsQ{X(yM15|HfxFT=^2is>6&X48N3q-I?Nxv+Xu@xROU#O_KUl~K!tDOZ zZT%lYBSs5qo`2iqQuf>-jZC2Tv_*Hz*4>(>FE9xSV~=r>XgZLK2bq&mCnC&gVWK^0 z(V^S(EDc>B{ZWrxqV-a7Y64>ZsKEN~=a4P@L+Y!6AUg5v?J7ey{&P@e;%=W2?J>QPh%X>;y%-U1ttZ&Hh(b1W?d; zVNN1DeXH%S3Is>ZF4SAa!?99&GI}{FR)|#w-2vLFdP*X8>DG{ML>qogd>-baAE?m(3q7`Xw)pz+^vzBr#kBt$&vX@FaPNi ze9gc`$pQT&QLpl-KuW*$U*KUX#qaLUE==D%+SPUB#<%%1Dnvx@PJyw9681>$mMI93dp98>#2dcm_aI(X5v%w zNj=|v<9*VZM1jK+N-pk17ua<)c1nt~xNdnkP;qs1QSmqdd|Pb25VF3TMKMEApp;1u zcbXj_E$h2%Va}CSNV=|r3~rLMR%$R)eToW%sp&r$*_S-S7-$P2a4!RPa(GJXY8DjJ zt`_N~kCV`w$HJ2MZ~ZTk_^=~=^!*GkR-uv9!SEz*WsFbJRbwY#?Rz# zz2U%_P8ituU@rBdpxL?FaNU`z{uMugthfm5`^T3A@3RR89z;ncyt2KpF6+N|_*I!R zw-`rQP+gdq^^+@j(cCbyq^W~t(qaH5KbLDxC8If}_W5Zgi7k!j?oCT!cU0krrDMKk zCn?C_e5BhMYWyHyWjOr_DtTqoFy8O}W6W1d3lZuk;z-TMG8q))cYzw=u)7;EBb%fVkik`+^*yXwk|mS1V(m^4DIqk7 zk1*)2ZwE8>Z>@~kRDuyZKY!LQwPJng@h0}sZ4?INzn+rH1|*Xz=a!lBy{$u9QwpmO z<;+elYc%3h*yw=_&aF8Sx<}Wm8}l=Em!&orHVzS)t*|((i#SK4`FA!dRcI-cOkn_GOnPoDo-qq@b4+6YfG_Qq((Y#B@3%#@qR|mX0&%9oH=u zUm?RizB|LsGuR(IoFh0XeNW|(%@e4Ij{DkB2eEIEVKw=6Z52l+{7>w}WjQghe)a9k zm8!mB;q&G*-|4ti2YjHxkP64_c(OVi-xA-DPM~%i59fu`}DJxV+h$YL` zk``%-pbujWdLQM~_g3hyyW;V&MBAj7o*No4+Fdf|9aBfwa_8o43YG#RuQ`%QYi5Y) zTx!b$%n5V%n1zg0Vov3z+StNl#%8apkBkC7<2{qY8OP^}0j?13yI& zYsRnv7YmBM%U4B<@ItEdj2e|$NsAS*5w_{h4k zs>R(fkFx4&1^*RYndNgu^SlN70xy`B!dEQ=UEcDOzvKze<&lL|MH36?2=sf|m-iCg zGKVi|q}}wY+o@K^ojyv^OlJ>$+ zF6>g2JJ?}SE_vjs_>TSaP1K&vUf?F{8JjOnH(dy35^g`&p;5A46XP%w0y4Tdr#ti< zbZ0N}KT8glwSS9YkkXDPI;z4|*E=Q#0E9tpU z)LAgyW{Gd(CAPq67;*pss`&jQ4cl2fOMc6jQ(#89`@&mEOhxwNaeH%|`Zun~UCYw! z52HD7HMnw|D3HNX_cI40VT32PW9%o9b4l;0EG+^d;^pdteXi$huP9ICKd*yF;N}lK zeHxl~@++`_9>o^H`^%+8t`>mj$@5KPGAvO% zzv;t<CSB&VR7@m%h-=}B6r+|yZvq~ECuKiZl&^wkMXde<8C=^F zGb^0|cUezt)XDY_^2W;b7rA+1K)hsg3AK3r~zOV7N>eO zNM=DA!X>h$qQ)mg2_r8o>61=GV3AsQ+682AOm+G1nUS@b&s}g@F%Q=0PFC5hifJ`W z4110iRq`ee)BR{-GY{qLvmgVlt!YC7AfK{y1ds9R>z11!AEp;rF;6RMNNrk%Y}D_G z;{zkmz09)fG`eP~@t|oPRDT($?;JUtixzC7=;U86$S^L9tdhHu`e|p3bYY@T>w?!+ z@ihQXx(A9U@zp}!c_sIVG)bD;96CD10Ms#L^jz{gjeU?6N16~z?9lC!`ibJ5il@ae z@)#0P^IC7}OT-v;mNw-Yf3|G=gnt;(E+$(7>>@Fsf$`Fyk-7Y*A7rK>wz;%y3ly1C zf2^1&FRdPZI#6^CKn4dWJBmddTwU9lQA?WIXvVHacm>rR9@uDK99UJHYR50~Uu~s$ zDv`nU#tHmsM8g9X0)j-<0=5=@Ia3-XZQkZb7t=V7q?}XZTfJe_V1k|+Xpoq={`NTB ze%JPO|KELX$eYx)h_7{GzUZs8eJY(_s!YTWgY$J^f% z?Py312{so#SJBP=-SWj&EomR{D+H|D2b!jffb9bQ3*#Ca6~sg9r}8fxQkDZBVjQNA zTn&?Dq=!YII|2oZM`9DsaX+lFJ`{C*OWRx#m9hE;cORG;BX#c?Ucy+l2_L>lr#%|l z=w7?K0s4S#RCEjihT3|nJ!NSx;p{_I356Gr@>fdX)}-&=ePs>^+(F7W0Par zeJJ2e`|#i)_i|cRw;8QFbQ?)0)iqpmm1{HK1_L^#s@Cv|0BfE*dTFL{sbTBS(uZ{# zg+5CtmpH-a<{5zk8`6qdkikXxbbgM`HqP7?G6&~xx_s9s0$0|}FfM=jTD1s~9dRoS z<$2o+SPthF=Pa7{l0yOBqd3S1DXYj-s{1VB2Ky>=EKc7kpp7Qf=|1Upa8U>kG>`Ja{1n5UX|Iwf=RQspmL6ejNk8dno z_4_xF!BI`(F~vrVp`{BZbY`0~9J1+CZ4P^t|!91%QF z1Fh#<+qZiUBvb%J0dJ5HTux(?|86>WK~^95+1d>A%!gm?gNA^=bptXu#>k`WCs+05`|wpvYtr|407_%ZCi7F+r}xJ3atZ{1zRsUb*lfSSH*K9KU9emngg z84bF^$2NIrA<|Z&l@596@;w)H52P85s#`O`{Huk+5=qHnm(W9uAbOA}2?jC~<1lKB z!=KBZuX|~h(SQ8u|0)Umx7Gqsp8GN{8C7Xr0!d#Yh=dTZCrAX_v3tHRXPYSHd=GjJ zeRI-Fv|_w^$L++1_Br1V(#@8}W$wggbm}gsqw8X1kAS}--XfD1>eQAzWBp%K+kkE9 zcN*cZv~$c)XPB~3dyIw-o<&Lv9lN=v)Y!a(pf|4zXIaU%Oy1L-m)k89uEQStcbMC41$*Z*9hIY2SO|HnfG>=z736 zStV8qjCer)y$N>d4>{Aq4)W+|ek4VzBBfa42`$p0#$a%AAs5IGS9Uu)wP>D$>Tl!@ zgs^pka;Ihc5xwr}CG|MSX%~a`}Se0KGuUO0h=dPUa;P z*FNzzCGP2R8Z=T?G?2t=Hd2iBMbY4l0&6~{=C8cgWG3hp<^CV& z$}!U-uUkXUDAMVpF#V6tqN^=DAMenXp#%rtjy`^A&|%jo-60Enu6q+*;{hBEI_Oth zVH*&fP`5-Z+6(uO{I!(RN3|pQ{gKoZ;vg#yy>Rcw4aMLO2#3o@$N0YXCv{JopYcr- z<}5dP-LStqX)2wZ)x6Co0_{qV#=j~EFs%16ki#T5un1TqX0ik`Od8wm!JM>;(4+y( zILatN1{X>Y`PtveeLuxpO4twy&uQ*-p%i7afh~`Gpcc%4@y>S5ntW1Y-%dT5YD)XO z(FgKi{wd|1Bs2%RaW&xRBGTjR^&PZ4Z5Mtrcr}OrUrfgcpqjK^qR+C=O1<#wyL93W zFv<`GOP4O%Y>03n>jn6N*K6A~`TG|m0uRDWb!An7F0|owxK`l|w_jY)jv8vY1gVac zAi!}9AveGXD)Il8XM0*GSHr0ocRH1>gDn@14Xx`g@VkfN)hWPRUpC;f~@(qczAfuHxK5jnsq5Ez zw|T3MuIA{P9-mzufW_XWha><{A~$W$}*o5bps5#EuKFCp@^QB8L@?hhm~X@sJWdK0avXaNc}ub&>i|b2mY{A z9a+Sm9ol*Re7k84md*vUGpP8IZb8o#vu6%YKO!@vBC=b}F~#M_q+tF6^>#DV0`1|X z$7R;04-ZdHW1pxADit^K&d*2f60M+zjg#xYnO>BhsU~*S$6gi-iuVPMP`HuD+TNgd z*#*gA!eF-yuH$0auISD4I15K_m;o9+60Wk9-vuAu@*ZE}?EI+pzLWDG4UdY3@S8Y2 zOMrZj>rqDyFmdHpiv92DUX90dwys~rxp%B{A0~Xu7>MW^sTi|Zlgt&YMDz&j0#W=F z0Yw698xM;h*+XcEymmdl?yogCQhzJCIw|+dFg82q(;N5ShRK6(59cIgxz4p>5v4+;4o7g1 z7rJJ0?6Y={)Cr)QIxySvU`n z8E+2Xpj{=_En4hIt3_pFF0SlAHg)zRC6qxJ;Z=vtZ||I-@GO&t=S&8=XHV_#LxTpQ zmOSK26TJfFc9uk2MljW}tGa;3`NEGdic4l3EO0iFo*G0q0gUn$ap*DS*I@GGxFwLm ze%EjqqD}b?3VLuula*+;8c{(H6P-n~VMYDkySMopX&=uYP9^Y_GaE?v$0u(c7 zQsBJRF9eHhrBAEMC5`8-UDApOV`m0#{N}d7AcLc1Ta^(iQ#3M%XPCi5gbccx$XS*q z1T?_Z3`JRgVNS@kYqpy`Pa7!AqoOlA%a8-p2`}F6*NKh>);a$QE|OgG@*0{TuU=4Y z^G)5rR|Y`_2R1dI^)WiZxYUD<9V0#cMx7E3j$IvF z&Na&m115)z`ze-{KIY-u`N+dc=Hu?vAG|9`E~$HBX*roePyYn{yn;AwQi09eN4&J) zFtF3VL)tWB8;f;82Ztste5OK~KQg}xmPDkfbK@dd^Y;OG_gVh_*>zIx$T-58u zk5S#HP52EOLtkNk0Ek2T!&R*<-z`+BlUiYYB$5AUHz;o(Ow+%KqY&r!Unobz0S5U0 zxIX`ntB9K?1M^{!T>~r4v8GfLSy*h)ul2|C+gFB{@eOgd{T4b#TY(qff6=x5ag>lP zs{ujOxKlOD%otbh+q~vUK9s=xKL-_8!@NQBiJ#t#!QI;IFRG z{2{JgOer{{864l7g=9t@?--nP**BqiUHBcMEt%N{d z!Am(&J=-)ubsXSL()(`{HGwrypw0}dD;E^FhQ%(@ET3$?10K@xW9l35Qh^xX;P?qL zxMBOeed%UEt$k{a{GFSZHupCevWNv`*$nJ|O*bVzyDbRf6ftjgue8M}?#4oE@c=0+ zeNZ*a&eHO4T{_AF9(76D3Ov$7_rCKNS;E2>&Q-P&mqjk$8%2havWvTlsYVvm zH!1yc(KXyAI`TfdJ@+EMY@`2mRz^_yo4OJM&@kfhLg|hcmLx*hgMkTz84_iEjW0Xo zOEKFHu-atOIS z@Z2gddH+g(&fFbNLQEi#N3}5m2f-FUUK@mNY%F_N#mYsr>$Q z>Z3H1hR$3}WsLoie>=Sq9j5xB@VlBB=xN-<%x1Vx+V(UBs9$=mhT2$4{(VzWJz#~s z(~)l$9WknQ3%g#7r!#`fqB|%B^1nBMf2m&ZQb6JAnGDQ`g!iEd!={YiR7EK)8=r(j zkar2liVLs)+Zg@Ip&l9reR>h@Uv#e(&jSgg*>)}ul>f$D=9l45ve8ev_{Pi@{Ri=x zgBXxfro7z4_fQ7APxU-NxGERcP)~K%WL48=e7VT+Z3P(|Nk@QnxIFZ^Z^(+Hs9L8K zAVo>mI{3CwMx&u!C!>tJzg29Q7$I1l?P~W%@%_635NB`cj4%-ex9bbf%O3B$L4N-fY*Vc5~603VJV(jW0rRurr&dSTlmjfJFXyuqyBbksy$Zc zYk6b@v4llEcpN8rG7OsE%QHAncQOU1x;pu!iwp(Ty4J5J3UYH`0P+5bfpmTG56+IV z1)F*3gD8FjU*VLy`=h-#Tl#Db#@yt_%DXD8bS>x)JZdl&kGmwfocjh6i0N>6i zJ1x#%8eUc!fb zN8A)cXP`TKF_){O6)DWj^d15;GRMx(GG2V{!Eo?|_RHBxIlEtmp$1Mcv5`fYNS13Y zgAJe60VtVmmnNgw4z3vFYRH4P7ft~+bjdX)apiCr_|>{TkWF2JpRk0NXPxSe6&z#y zwvyxC-$A*H4@|T3W%kfg7i6E4FX4Q^4PW}SrP_7W)dxu#oXJ9s z{Y)lq!n6IuowVVv9jOkG!R3Z;f5LIO2gW{;br3XR3QE1v3~Q+8w%Eapht^Qk&N!-< zV2|G|u`=lhOxgzFkbnT$NHzqLRfv#GJGm=T6zlEQ%D0$5imH$Ja2KR6mLP+(`7w{T zxt2tncs_)yWT`(UV-Y0t8P%~c-dJDLbDf<&E<}cj;)W>2IWMmL!ch8wdaFViW?Zgs zd8Yq1IU7U%WN8mVh{VL@k=SuU9;)ku3@&w)R-x7HC%_#XRl=5ea{K0~yvPRp!8M04 zq9b*!|o&{5d9LIcbX6nCMYVB z`_Bsn(XVbGA@@Bufout|5Qj)x5Mo7^y6!?AhB^}A%4{-3{C$G1I1|8bYh{ynhNrkIM@qQl4e-ZVNMmAd<_s3PWWmB7|NPDaQya?qp@H{~iXo#u&aHl?3`}zl*8g_Y zj+~$%DG_5dFO1RNg8l-D18);}6xb-$rM2cBMW-yBOl~@(eN1%sfJ(T`RTp$1%_g}- zyG6p5rGk9El<>g*4+0_hAssiHaxC^@jK9urF5K7ZYVZ0hVe3<}5Q zyjax^BP1#${-F{0?XAV7EqP{A58~lyBVCQ{)sYJ!N{VY)w9^oSm0&>iWVfJk2Eo!| z!|Sn{%#`eqf^c6w^I*H1fMzW^2lTLUfq?upuIjKxPWWZ`4mU};>@Es91OA_Adt zB40C?>S0WamPCP%%DU2TBbL4gKo^A@hm2~_B>;cVd5+G;v+vt9%7Zu0#?#u*E3=ju zkQMtCCEvNp8LTxoFwYrQze@&Li4~8gz@Sh=Ns!C4jKFQ!#@p2&krpC6%Y;>hX-)#s z(}k_m?>}Bv{SLb^&E7!k-C$Z_VL{i+fGv?_m&VEkz zl)g_SMpNTxAcKpm+cF8mpkRj<4u4QMnebA+Qtn=NAIIb-?8hhH6|9a+Kczd&&Ii46 zN2&k7_z?hDn%};9>G;xa;^sSB9cY`s{QM@tF57of1sP;g(4hh{xE`Lnk`}gyw;DNx zw?30duruY~?!w&_Z%WJ_Nm3lIo&=|~aVGOE=3BK-Bc%RH7tl5e6?X@`TQzFu=%j6HsQ@6A5&N#`VYsgTXa!s24Dgz`8aU_ z%OC}=KvJX09O)bM!JGXZIR=d3-wlG;8^ey@`--BOB=sP<-FbOKLk z{YB94aWOZ9CD=Ay#Ucd)P$Un>5^Q4eX_aP}Nq4w8WG65CR11fg8`-bV8GLi5!i(>i z2@H9%PrR~%hYR{;&^tX^_d_m_u6n@#iQ4ua`o&W53bNuH>XAv7O~Hne(B-h>Wqu;J zZRH`1*^Wc7CQQT+5hhXBS4f}y=k*=IUYcZyH~MtoM^Fk1bp))0(j}?$6@s2r6dbdM zsJ^|$2_~OH$DSw1;BZvh6PJyPubJbIV;3@GYCDY1V( z>h=BcT-mvC*Fo1bChQKSfvP~fxKG=?mfXGRqU7wZ>e}0Tf7k=}_^Ae6{-V2TEC$Hn zB37&JdYtr+VJFfPRdPI&>8geq)>?<%?4h$Y6i{ffg&AMs9U`N?o}(jBUpZ`u0>O z`G51-kHcq1)sX3C1g&RZ1@^LJI(>7ZZ0msOJl&qLt5e&ML6%R421q_Z8MUFos0!fb~_u?g~?a zW5AGH46s;aPdJsLR>i9(M5=l&eeF+w)1LlF)3w4ilDL8J1{vI-Fg+1GcK6va28LF+ zi=)83;4}pjF?UdS!!^s^GxaK#zem||-ibVXt;oh{_k<7lR%p0RlFx4k^?!V4$8)Jw zJ*Xh~r6IDRDtb>8&r=RE*oTd9#(!bTHa19?-Ev@```uNznc(b5r_3%JQfPXnyzfn5@NvE2-xke{w34;JMW5;p#m9x7NfR2r@XqvnSa! zbNvh3)6d#Un+-51Fv#u;UOeo5qURhd$ZMPwS){glQ|ITw4OwB>(xZHURdX6xKR7a} zXue*{l$}=RLfbSX&jf`6D%`q0*tr_48F{MD|n1j_^fh0aAwN{861eHj(ht{kyfYSeLc1$)Ka?N z?>!rqXnI0~Y0D)xj?$y{Mn9;hfVeOJ2=e zQ7)6?<4R2S<)2@I6=e9lKyN#0I<=7Kii)RS>hlojsrz;JQ-poXqvWnk%HCPEmo2Ydy}u$O&`!Dih+R-6s# z2{D|SKo%gRA8F~4J5;(@zQU6g;7l+u!dIL;sBlz!!folA5k4PF4WImb{VyQz7){OR zDIg#uV$Ty`r1!dQWT5<&2ut~A;l4V?8|ck+O$r$n_;Hidgf*E3tTiyz>-yAz3-cC; zK1U5N*Qhb6Dtl;}+VYB*K7vY`BxPZnfc9kr31@FbqnbLdoUvxHG9mA_Mh+Xvbw4Vp zDkmZ=$cn4|`X^phRGiv4nh2Scs7S`72yl{jwX2a|y+_e^0+{1^EKF4eT$JXDWDL}V z*PVa{eS#+)biTg)Gw504Sf&T1bi{ELqbCH6ia9<3FLRK=z9hpf*sS-@>rP*PA&#@j z0cCnzri}UZD=eWw7Tg!Mn_1jTyLFk!$2@$^^g?n7KX}=FynK*y8tT_E@1uQP2WnLJK3v^o`c^rfoiR^pfDA75&rV&3^guokUmnm80H%HP#4sbFbV7$m6#JAV zMd`W|>KMylmO10y)ZgmQ+=~F+=7_`n0#&SkAyN^~3qrUj-!-^Hn5xLt=Pt7T;)DKA zBJ>F9?w4~BvUtfZd~PP&rz)NT{Pu&an6)G_3qscFI-t6N zxg1SYg$m~rfXrT*h`fnY5cO}v$n5XSb`=p0=w;5qD$;&NktKi2{g$Br`7Dz&CqszV z!p``-=7+3cWW&nMEoVc;OpltD&JMV;2h8gNp?t?eVjS?LB@tX7tcxQFV+yQZFt(gi zBVx3VjDr6chqm`#qO>mYBzS(A-6e=Yt*@PlWtx}@ep5ONV(wgD40(8MzBFIF3L&pI zG<1eP1p$cgd>ZH_dMCP?%iJ~ElD_TLS$#96t)jGyrPizQpr`o!jXT1QJJRX&G3P3U z&rGm;;KoubcV+|*3(upiI3uq$ZF<6nYi2op{K?Rv5~NxIGhO$bMRo)W&>S~gX8*xvaUz6}&DkM+wM)l}^M9|pXZ(I7w7JM-<{;bEbvD{UkeIW=J?ZN;lCjMqSYpc?#rHevUhj?J3*UM41mvfR=XhZ zY;7pBDpwxDJtzhuSCgbV>LYm9s$U&z+(;Q#nvJ8HPk$H!$qUtF>NrdVR9v(p>{3KR=n#F!+vAjgx@fBTh&&KB7z7hAgk z17Kqj(sLIK{KA#r;+H>>i6Y&;@K)&=IBbuAM_DlhImn8Wm}0sQNtL%Yg@Z?6BEDV> zC=ZYOJL9NmXy&ZDxn+#(BqYU(x|9-~UG8^s%FR>)GTb4PLW}8F(EaC=$osj1wVwH4 zT6rJ0@^IL0whwY3gUe3kkDKUM;$)t#zMoBzU{j1Ghpm{RjY3j4^&`*x*NpVu8j-^R zjJ9R##4C9>DFIXg%`f9W3mVcOF?0QK8K@eXmEvGs6qQbnq#;Q^8$kxgQwpYBy^MZU z950Ub?Lh<@W=+%QnyMMVqKv<*HMvkQ)(!S&AT{&s1_!27@$f(aVuHeoTJ)5Il0ES9 zt>@>6-Ac6o9o0bxXFHvs_&4R`F=JdBEGWvcANoSM1_l`xo)d;mh(=+2 z>FPq7lG+h>D`iDN^bJF71ZsVC#B9U~DqZ~JbZau4aIAl#+6=XATStWI|Gmqa23c{8 z0HY1Ps=ZXqgENNCd+OnNV;XM*{4xUCsTIFf#XnC7&-H4h?rH)Vd^~QbkAM0B0E?i*N&y3E=8!fN5+}Rj+a(SRE%kw6 zX4dmQrw8as%@)NFKY`Q+C*wpjzREVX*kl@~#(=md6l_ab-S~$MJwF)EiimMcX+3;3 zE&mQm03e=*Orb=u1fPo7O#24@}U>GnT%zzV@0MYXv=k4Hh%85%|p!T~k^k5{AaB*DKwUxK_HR`|_6IJ=;1+krZ}e7(_~NlVuM_Quwezt)ZzzFYlYqS zH|>l?tvspO6E{k`pqU-^Z%D%r4FN;$mTmE%KN%l)^vSr$kXqY+c%Vdqd!7VyaVY9k zLy*CZl}#lrtOc?@IK&cil=#2wT*(IX|GANt{k&cO`CrV97*DAm`^xe6Di><51m-mh_5pf5JwE>LHrQ zrYXSI;Qb7ma-B0&s`UoVXjHL3KXUgruFc;%XkUS6#NgiwGo{}>f6C^H`5Jc-J3-Yy zTsD-2MqN)wi$H-4&dL1S01f%jOxGJWV#fxqtTBAj1C!J58|{t7m7oH@Sr2Kyks?8cW7GXw zTzF{~k0Naw{ho&h7k<-|AP@Rh@7O6MqjNhPh012d=+IM}S=SQC39{mr zl+{>$Q&T*+tmy^(4+Gi{hbG=cXDWy(t#=%FgKUPva^2p7d+9)tYCbPO-U$mZ=9y@Q zzm?eDC1Fye`oLIQE%kY}A(l3gU{rx~cTDPv5xE_)jMMajVEP z4syQ~-pXQl3DN^~L??dtMZ%}L65doDK%K3jSg`XCm77&2{N_-laEgrLs29ItEBD82 zd_y=I+i> zRaSu`)N1(*UKUvT6Ik8hrQ8cs{RqV}mOvb7;>S7CQqXICT0;2T#HvKxGT)=uySp!c zaMj7Cqxv6U^-v^gFJEnFD_?}UE5d%_K$v_8>!hRo=Tn&^bmgIjPoaR-rz zUvIQ)7xE^oH#62Gm>l-E(}iYn#>FFxUTCF%XN~TQ{q=*^S@nu-x(2XY?w5#}Uex;L z=K>|q`LaHF@_JCP{R)4_)Q-YL2!aeQ25Xf|t z=HDUZ_d%O;;T+|V>jIV(c2crH6b`c|oSK&{)q82k$plEA zOch%f&<$j$lwZ;`p#?5};BLT6Rq724;NMyEA%d(p+QZjPuHhlM3&{p$6vh!xEAr#RgBTN6!y{heCSpBww ztFq90lP?0)zR!NT&p zO%6rvN_MnAuS<#VfFURV?rvcT6-Tt=9y3nnl9eYztG{a|QE?0*JrA~?uBB>$tT>78 z<#HwQ{`>-jx+CtZ-2Tz6O=R>z0 z7E6Gf+k_h)sa6U(N$?Yf42dSBorG@X7Nw}_^ax!yH0UL;vAz{^1o^JyDOAjh1|iiM z%$%aVxO=6WTblsG0=3fYa;b#FKFr)wd|<(!OyNcWpv}`L6oXIcK5JRoCXo!Gs7O2H z)s#fYB6Nv@J%Hjn$cifhT+$k8^^TpwW|{JEF(1D+g87S7S^PK1jX4T+GeU;kVhWL9 zv9BusIO@`2a1aH6?&ZTPEYB`1Z3xtgWw)AUzmRuQ%l)^IIQJLLP2Ut`Z~>jBVS}bO zSYxBduljeLgjgoUD|T%5IMfj95#?Fc&G3y+>08IEK?sygGk5LKsgXiZNxMtW(SMB3o3&%i$!B>}P*~ ztT^*^a)wQ;?st=opP}$FFtq+DbTATB7L~9!~ig*V(AS+G)Hd6!sMIM2DPgH2bSZwl;)F9S_`qXzyUwz)dUSV8C#Qm`P6-%o0 zLDDf?{Adp_S7e+yu6rUbMu8E+5J2X~sFQ~6&P2(w-dM~o@IHeKPI~8a-I$~K;|A~$ zKyg7pleZZnD#=@8l)75H6o++~v zFKu0Dbv<9s%8(cHybv%joj<&8`Yw8s{AFWEK*En7PN5X#{ZyWO1Lh9Pas_0?x#WWR zxu+Z0;}*FYzsis5AM9Zu?s4=HC&3Qv!2DvXuGOe^oy3^@!R<#Ts~sCrfq&DwI0Mbw z1d7K@tWh>;B*S@l%JUoDezL=^*6cZ>AcG@DIjrvdJ(}Mbl=HCThlv8eFg0wGHksJw zIkFwg-?N}zg%lrm*zuX&XH9p(5itTDhJdawvbG&W$p%vFoHqHQ*7Ey=hklQ;EigC3 zy$dqf+wgCLV$f4eYxa@xj39GNOTixlgno&iMfxUl?kVpf6@lcvgu<3!yOmhfbS{sV zz~O~s&c@{!KDk7C?I$rmF_E4?crx$%HdXsCTKHEhkipGw*^lj%HV^|8bM((o;W*7} zhVawWi6J}lbaQs@oyz25X=oh}2P_`qehkvHQVl?glYKIk^8mLHS>66WG$J{bcOEj+ zyOXQc86+3K@7y4RbDq?B7=TeTJ${jIaw(VHzbgc%CzF)v69}4AmgP|{q_V70G=1Ab zdn&d6sxM!%0S@3R04(-m)3T<;L11>vZf=*co|1TIj~cY%HYRZb$l#KKnD^<>vmj9+ zor?;1<+k80m3y6-&-JuH!wH1mIIr472-&uT42!krs`$256)W{9Cl(f&5Tqn3Pt)M1xpMnq1-~k9&C`o z$!Fs_ClfaU!TcFN5S;1ehZs42i=up=q*8nh->ItmW7@5;Uk%Br)AlRrof+I827m{r z|1OqVw`^)FYar+yZGyUmLD&^6x!FAkjW{RW12Q;)=3qkW)D;+)pe5H9ekt-nv|W~f ze~iDUM~1jvotJAVYT>`~(y@{m#Ba3?_Zk7VZPj8Ti7B>iaE2S&MyUSLpA#N9I)fREb9 z#q-cv5B9$_=skO4e}O{MthOh{o#{n8)x40oX8m9O{J;O|wfR3kdu{#CpJg2Rz{*QZ z1l6SwwG{SBd;NMmiM}6WGUtA#lB0+Fw|+sUM7KngTK(Iy4x>okrT8O4slU3)K0iGuu8$HR7&5x5OEHwO=rwnP4?%M*qFL>00^3--gf zOMGvJJzfJseoRa(^rQ1mQjslQ8O= zuu3k6uX=Xta`SqS+;Vuqr=NaRGK5qpeqnrTaDWld;uoqO0UH0Nj{TM0HrEC2h4xg2 zkCzhn3X)9@B#;%?stG0Tv42S-=&&pGl%F=^UP^f-L6u& z{hcqg?w05W&@Hv(k@FRq3XH3Va9283G@5*iN4byJOw;qBRJ`FLa*rAGP(X9vplAgaM^b690?;An!_i$ppA`cJ*~iy*YLxp2)`@hel4F`;`p zrdiN5>rNa*h$kQ33|C=`c4wh@<%*J@YxyM}a6Ob18#^n?w^jyDVokk6?kQ{pV! z$nimfSszXr=NqXDL~5do8kPDTZ*KW@8|T7o(^zBND?*(rubr{%J;Z?3aqpX z(XI9A2WlEbX{CPmPrHTtJ`{j(YL8J+y6PvUu1@!-GczjnN0^an`c6!G>d;&zYq~eX z0Zth#`c6O?LQztXmO|KgR8?^?%Rc@?YVm0x6J%&2dquRnYj_2lMLoMFtTm@1pm;aR z!5mEpdH*rfU7eU6L9=!;34Wfo zWY1^&m(TtCH^qyWb=ME8^-tLPk`ei{URFS1QxrARO}z?4Rq(Fl=7Kc)v!UU>xzN@% zU0ia?sNb96!1XPaW7WeD<|9Db9BhF?2L#!&6$k6C>6$zGGhPjbRTrfjPMMJ?+H^{5dA1!FVL&p`>@HA?<*1z#-D-3eI|f+v>D4Sb&H(%eFmYD2ku!F z{Myabtch)OgsoD~kGC%o4Q2~i0imxG!fD!;Qn?;|3gMBFJ>p^7Duvwf>UKHa(Giy- zXrwCgUA-OP^;}-g0D3NBc0lrlD${{5&2jOXjWwE9(}5u^N85&}oOcIrzqeQ*)68(y z$92Xy@#%<)53V~FSI~WNG8~$18_{BNDqtd-Z+{Jbq0Y?nL5z#ZQ;Gy|W3pZwP=w8u zW#3nxGJOCQ(p&2DJ+4<`;3K?|Z&ZKts0)dvgDKsz6%c0C7T80yexBK3fNwBpZ1|OU zNf>v-$=m*->S%1?7N_}~#6yZ}Rr7ye2(X6deLJBh;%=`Hp2oRozxakmIrG1;(f|CX z#sB>M|7@J_T(Xe&k+beO;~qW9C(uXa>E={ctVJ@&(YMK>tj5)72l)%Q4f=4!1#QV% z3arfm$Nz6|K+{I42GCejhRPChI14T}-`=k?h!g2)9mGH}*%>HbVbe91r>y-4C-k4?@UaibplzWC~D zG>J@*B&&H2gRQH#>gTGu@1l$x|Ma9)|3?%+R;gMeG1E{r z&D9bwY04&W(VMb=0>cpqj}P&Pkovod&-i~p%U9rRqMFIP&7s8lqMUZ4wFIo-=M#TV5vj$k@HQyG7JsFg`48k4d<$ar-+Zlk@h8D#zC8@E z(XC`%Z9IQ(YW^48K=->dOUH)sw^5CpXj@pD z=rLK4FktK-A~k)rb(b1k`JfGv|K7O%FSuNk&H!atCmGEY{GUZ!l*tD_u_Xp{alyAV zSst_1I}I(b&eNf)qm{(wW|+xPDWCy4cqZ-D&4;i!x@4Bm_IvbA8#`-SW8d54Epo8Y zm&sowwtA)GqBD7>vwKP`50Z;TCxeFtxlX?*)T0O?5JUM0^%VjB1R2Kk1hk_C*hNE# zX^=@*KrA@+;@6y#@Na?}9T1fKyXja*>NdnL@Pntd_YP-&*E{{2_%*m3q#1e#HzwdI z>X@Rfk?^uyF>}zv3Nfj#N0NTKEt&c=Vmcv{hn~$ZYK4ee z8hp~oTa>g;{TA`gTX8kPLgt@sF%wN^^(=%4{CNJkN?P7!5O0RVb8my4E)RdW!kJRsp3vZScW90uIR*cGk2)EGS)4=`hB2bj zb?=SoU}k>5S+*JoY+tvr_m|cx)0`G@KtSExE4UE1baFI55i-poG3Q6V84kHeHdzow z<4ZZ4kAzq8T2_nf0;P|i+sB$EcY0t~QX9|Giit6}c_iXp)q$=s{tb*GeZlL4ac{Yn zjCXJb`#mN^{cXXe zjM>=hJyIT+)XCfr^*#3$C3vhMAVI3hgb^xHaP3G9i4~>AI9-6f1=j)EZ?A*!d$+LF zYzjZEoAbroz-`2nDjKzWImI`_K2}{`;BszivPfk)YSBN(9qw|NlrbYZ-hpq8i&z#) z9>e27QSlF4CRpt-+jj9R0olKu;lTx&N}vdwX^QmyOo}z6_mRc+B8PMLEBcBB-VDdG z)#`2`OX>-5>`te_9h80KAsj1#Q@sSujeQ599ou4kDhSs@Ng>^*G8oLW{Im}=Gq8BE znf$XhAz43DIW|JrRnL&v_ps^7EB_d+;6(BTZ2L;b{yjYHj=pAGDc$zoGM3(cje@em zDjyzML*gkg`4Zq6>sR=Z2|w{pu80j;kVivN0q>R@*dz!+m@JOt5I>NSyUwjHhQG(r z4hgUyvab~SyC2BE2iI$G_E00O4$WiwOd8a+wrW(-Kh9dsT`s+K>Uv30Ik_P&i5y*Y95kMC3p z=yd2aV69$Wa9fGc@$YIYFEu(6M&X2v(Bc79=7U4Ack}g*t9OSk-4VsW6@;t>Xhzeu z%F1<|KvS^x*L^U@9NwRzvbjof^(lWp!u(g_-1aSU**fFNd7{l|qFrc6->*fREjQi? zYAREN_=dR=vlbXro?k=Gp-l(tBMWI}00bxL%M@2=NN5A2T=(2&j*aS{4xb@J#m?o1 zbfUuk-c9`%wtJ=Hpv`9{+^y4T&L&;I#x6J(0UY|icH73$#kD-xi)9wdK|^XYaY=~D z?z#-#JtXccprT(MSiP|N=cxPZZ`vlXYsT_JYfyDU~ z>t8+l4nR^@8w4pSR4QLC!+s6@yZYz95@)R0loT*3=sn9S#t?W)vh^y3sta$s$d8XL zRNP01UTBF;*!XIjGE%$NNFM&y+yIv89f^p0?XI__9?L?zi6k+6veH`3bfRyzGgRxF zUS4IsmN?ArvLjj%ceCWy<9TU-H;qEithDgwC7 z>3%@1j*$762`$5eqsd+C?HI=;ZtYJ#9%unUyPT2;s-734{{BkG{s(?a+~M>rVcchSrK?rvm2@;9_bB?XTsjd^wf)KyrUUGx0SMi9%Hel`83A_n{aApr zEo+q4^~85IwxOedJJiyPH^U)&Q;JO&>LV(izW(28W|{F%lsV)z3gJ)8pduy4YU0_8 zh+(^6XBqjf5k2h~MLmG$^s~0ZnEGGI?=#=U8Ck}YEs#nDEvlR12OzeME+f4eZh+NV zlLyLR96mcQ1o-__WHL_`j$_^+A6!O*6T*5@A2R0B zH`_0qgPxYk{35aaD;|j{8Ti=qICHxw+W29T1#!SL(A%TPAhszh9qQk>-9g923%*(TJvE zW%w)s>-vCB(aonldyRWPK_nz+?)%3Xr%-RIsX{+nWXw5{$zolO5y;dE_8={eKUTem9udcrP(I;?TM=t#wS{0X`KMdPvtC!Nei_yn21)q9h}}GU`MVP zR!dRvgX<3yH38{X@$H${+9N=$yg{;%C5 z|Lyp-Q5U*+wmBj-%I5lWe*?qxBEce** zSqiA#bDYgKGVqgAyYUW}=WzbuQWsXj!R8Qx$pzY*6JCtk;gybaGUN)?7p+@`G8C1D zdJ^A>U4BB@Z`M4Q)NGqK;8tWFYI=V-sMdUV@0>FP@Ah*PVABS{`aW0;ukT%{LoDI6 zv!v?;$Bq32$BhsO_GE4PX1LN)b3ENmt(Nz9?DE7aoV}2xaiKu9ak~7pT>Q*zJqTPa znuB~wm%~J!?R=!&BrR|ok2S!pIG8`?#y(6~AS>2qW(D=hwci0RFm4TU#P!W^K$#oG z_Qq)`Qk8ILf(xm+l|O-u=E7F#Gt1g{xf!iJ_f!%D?*x+Ri_P{euR+r-FDQ%S4+-bP<{Ln_;in2U-wa?(kxcoH^3Kb!ov0M5E$Bmu0D* zy{|#~iyyFJkXI8}S&+YBIJiJPKtljb+Hsb#UUtS)@s}mV>?iD87DVWl{ROyg;5HN( z`7$qH$5%QI;9J?%8gBe}e6qGKbOphoehHgX1G|4;OS-!#D>%QYBGXr zoG!zR{}-mMEfe7%nuPctqt%gl*>j-7k=-!1ttaKtYRj#vL2^fy;j3ufBugZ-$H8YCxb+ zMD{~Wa&@7xZ51DrIAb?<6VWxiTWH(qmQrhC5#TpFULCA4%*q@MiNz1YH8m^Dp<>=s}beW%~7 zHDl}hX4rc?PB9@OBZUhEQQM#sp$ac+J!~H-fsO7)E&&iaUyZNKAc-`o z{Sm0X3n4|e)*y8)xm;Zz0%Ei>ILllO2^rS zbjwy{2hT{KSR$j{6i63&h1}O6KVqP-Xbr`<{QQQqfjT^2l_?qD6B%;Ux%B~<25+Ah z5gH=AQ-c{xUG>GI%+{dXQub4%cNCPaO?Hdy=)7m0^e?XrSD&1>Y_Es2gpp6(>NpsI8{za^W3lT4A|MX>}6TgD6cMF zm{OqrU8(u++v019D+f;=oigJMYoIy4|MZ!(-TkcVY?j_7<32<7fwPJR?o(*5gpnO*jXkMH1arC1dDt7uY z#~ume%TM)nR~R_FZ)iv|Pb_wL0lU1?akP0K#X8g3Y1^g2r_EV!c0Co3^`JW4(rjrG z3kNH$>9ue3Um>$u_wN(CCrPs_oq@JEfr2k##Gtpd6fXo2QR`0^t$g4)X?Z;)gB2?Hgr<)df={+Ooq&Ug^bDAMN_QJ#it`AtPtGNvuj_>6kAa z_1B4qk(2l?u@C3%2;77wDb!}Be6$AJ)AvswPxORFb|C;|8s9D0V`~X*O=<~S^;Qn@ z;rm%Vwk38OX4`i-@sw{Kb%L0z=eA}s@$`W0pJS5=5HKbT{E>RmCw;;y34(ZeSn2Xx zxH;A*a%AkfwD?eAYM{q(LwaR<`~W$0=Z~Le0qz&-d#ifocYaO3zcz0{B)))MU+K7% z>V4G*olW;``AtU;h=2AZx1Bq2gI!}<$d+&RSqQ)FGfOI^AQ$3vwTiF<2L-nWW)H(l z8*Y`*kLGQ>+(Y|U(mOR3^KFoX(0hznIZ6KRa`SJ;ufd5+D^7>PKeyxuEp?`6wpn7P zb%CRTi3?j9*c$g;18puk5yav^3}LkG#NSKxX1xGq>a+C9GcFu2$eK<)jmgm5s5V9h zMv8@L2J`fD8rz!_XImpaefyq#QO#3usMQm=X)dL!oiFBdXZ$t2T1TkHz z`7|BVbOs+Q324oO4Ev(9yKt>7W#&!y_1-{_l*)}D)zKs9V+d=?%A4VO@^6p&EFp<@ z-|s>o1AMWrM!4LB2G=4$^5}mb21YJo$B|Li8yoWneB?Nw^mdvDI=@Jr)YKkc=p_vq zeq5OhJ6O$DlQ?@MPbydmd6I>B0lU4@aY#FuwO)D`X_y~ybb>m$y;gn>c2=m!-jNtJ zXW$fXB_GM}%z!;3P>B#%8K`5&0|Z4whqGsm!N+FCV3t)2#L_tu`*+-S@M@`1Q$QNS64QqV#NHByn5Zvfd-jfT^s9DZKCv$c-&NNwZ4; z;-|lNek_%r9lL%$4{vy@AE6z2LtAG{_B9k!_^i^K;X?SHhVFT3=6D)}uQSc>xLP%P zE}vXXPsd?ELpaZ*m^*NKnB}8}#I{9d4#A&TZ~z>TkXC*WXf~$Ql>lcIdgou4iQ83e z6&Hp6C}kF(N!|>{;gAVhP~L(wYX_J9RyZ8zSYWwV7W_!RpxdloT_L21|Y&jL(mo|!UhaKU>;7Wp*YHmxYnsOt)s7qI&)9hb)!@FW~T z#y?VQrxlT``?+JV5Ew$ILBC5+B{q~lFdATrT-utV{*j24g^adfi2%4igxYg;<1D1} zrX~0g3CTw%W-)z{B*o3m(JyTink;4jZly{7C6Y@dNn*3~DcFPsqTS<1dn~NqA{HGV_ zDtB1t*n8*|A^ZsL4X4o`+4=pb=T$3gd-;f5Bk!w-MZ3llzY;f~v`XWD^O zLs%SdZ@SdARn6+J1`GS2A@0#eVZzd4TV7+fuL9eezP{fqmm;3dvHw`5mF^xr{QlDPYJR&`L-dEt=Nrn zAMq-1@lng;6u(yhf)Bqe?Vi7d&U?=9c=Xi2|B*mgWb}s?pBp#8DiHziMdH`ss1I6Q zHzdrgwmcg#3w5AB;Q7CQ1pzI&I@1lX9g7G*@8P*uTkWU??KIA+DaH_Y1}x^6AX8{! zy~LVv3GlG`f0dh%Ln$ezy9WnRJf!;mUDNjOo5X8y0H}YTDKk>q{I}gm#N>0P>C#PC z7_0hV;u;GwI+u{joada5D0^i*w)^~f2b5=1Kt;@v5GEoR8O3hc<+hIYgQonXk(JxZ zQeN7O{s4aEn-fP~3V$Q1m7tVozz!Awe(zP~CU2q(r4T89Drv{yg6m5Ee7khNKUT6{}~$rMhh@46a1##$H~5c)rqcED4xQF1G`E zha)Q$ri64<7}Ln!_xqz<^3DrFTWEFd&($7d00}~;-Zx~v4v4iqpk7uNlHFTNpN^qo zKv&SOo1oowm0ANnmyiD(SMuWTGxYzC`ZYL@)hLL11L&KlabDwFWWkLZ1tX_ibutTi zk0EFKsn2;CM$pCu1&pl#BEHLT!0ix-*_Mf9ZcM^1A=yH=RT7(M?`VVE@ypcRUw3~J z>7;ux>et|URF4_g-Knwiki{Z$D`CbN!|~m$d5?Nw3>#`W@doxG>UX{*kz^PBF2kLA z?F3Q)ZeyM}6wW(znsO~$uYqzYcaS2=>sn;;H6^Vy=?u9y!*M!-U#^v*PviS3+*~i! z$fO4_cjN8>@*jZ4~@NpfqP1 zS?UkZ!gnN*6Ma<*CRa^2V6Igo)USK`+Z{4ygk@K-=e6(l_`=8*&lA1M7uqDL7l~hk z!^@kjK(Cr54v2SuHsW_cD6f2Rb>SvVakyM{0VfB~aH(|ln=?63A;>jm;%~QF0e*fS zx0}I3y#gnqXXO?Rlz2=D_~&=lJSF|mi&CmSR{t+t{y#};UQ4X}9efYF*#k_}N)@6* z(+~X7l$x~b@gr~iNL^7Dji=*+!#DJ3jWh>UkC?Bur|kgJXRpTckfhkqE_U>MrOoy_ zsmImE)&~p<5KLPP*}q?u{}&ud#!(+ZBT0NWw@h2gWa$d|vHDp~F`Y~zk2a!F|If@l^=0W?JS3eVEKG8e^M;~In zsP`qwOg*nTd0>8v2UCr&eL-PD7tw=K8dVs3^Qa5YbtaM+A3qBEe)x(Xb?G~oDM#t< zy!eOwngs6wfQq2A`{B0A#3foa$G2*(b5?*Q>Ri& z`Oa@odiynG~tZKdufr;{KpE&tmS$Iul_r^pQ(vM-TK$R*tAbZhn{xgJrnxsZLOfbl|> z2$QLND$E8m>HOJ6@l-D10qmH}V1Xg9Tr3v_wN+hz5Uav8!BpI9cyr=f zYZsiJX^FZLC#=b z9=`_uffLRA@lSdk*E6Qs_kVuhNj;Z{Y<}K4nH8X8EmTYvPPe!pVdTB@)EP=awD6!3 zUG;@pTN|2y|9g4+@5|{m*cVp*C$(Co`9oW?rA7BoIS64^Dl73^!Cuv+HqWEgj1ta! z(!(!S_Rs=ap-tn?Ie@%g-TV}D^fcoE#}fT_71~?AYsl+y?DhOeye1K*zaLZo3r?J! zw$x^SYHn7jUz;o0jNy@QXEjy<5Z~=NKI~cc)aqmaEcI-K-HgRhZBJ+1XJSqEr9e$2P@% zRWLx{_UiA$3I8Upf2HHnb(B`mYA1Yiupae2cmh8U$O5;(6&ksj9w%pw22JN*}2cUY*O zJguv6gWT}Ne(#}FYRs<3x1*MnLVI`jdulKwA6axtYaaoXe;AAxZ`BGfpf3vP{%?L~@vZKI4b#DEak{e`aL^1YSdi=+Cr#D08c7suCJU+ExeEWzF%Elhy)ot0%b z4|$u}-ezfN#B-KCIwqSYer}PPRyj8+(*y9FijXcn^QKsI#Hpx#<7qF*@jf`zP=`c% z#g{g<{N2guzY@o2Bk8wCdPy9sw`dXFg*)~B(3OP%$!ImP`-!sEL&As3)6tRG*G8-r z2~k#ZHq8gzDO^GHeBoWJvKc9kTBV-TE`5qbXLJkxrDMP~BKh|l`hVeuS2|AM8v9bL zeWj&=T=1Pc)4bvSXr4{T1Qm)xK7t*J7Z3$f#74Hy( zEr{?SKJ5+i6j#YnCJ|S({;d5-T#)u+)UUx&)oJUTvY6k=^esAyVdo_F4D@Ag*2SyV zqmpWx-S=>9&K~Df*il3##_gb>)s5z5TDmMXIwq&tY*L8P zVx&q*|821j&95s-f#+|apxPGL1tuxvlD#4bUsb^nwN8#hWq@_(&0+i&p;p0$4Bw;K zS>iR3ReW4#*w`zoQO;=hmoKNrS336O6I*hJO>NNmd4b{G#T5>+SwBXZ)meyAoI;>5 z)7=)m?rShOmg31k|E?HBmU$9b9oX9a7;E=QRm_nQ-dTJ<6{*qlqJ^GIR&ES&y1wN_ z$FIQ^sRWYu1OP+)YV9@QdvWSCo>UutXhpWF4MkI-*&zOL(?tG{=a=&Fr6=U7{C?;F zAd8p;*F%E3O)@5c4vS9do=P8VIW~n*5F+!3v?Ke?a6%38-KFWOLk4IiFIPB!?QE$$ z#Q`)7ukRNMd-kc5nP`2op#G`p`}RmqD=m4>8zB06TJ^XbQPGO5f7e6ntU1|{x$W~X zC*yH{Bt?QU&}22)?~g9kKlJ891w{gcHIa@&ci3lzS+ z)vaF)LM8wF#x*w&qq?@>SEyT&=hY)NZ2A!5F!zs@r_htCP0OhiFW{zEI`%!9tmNxy zKK}k#>O!f!dOd4Xtr<;vdczUws{1uWB!@X_Set#d$I*iBXo2uU4LIN+V0bDIYi$D` zBV9%h-D=tiOUYUJtvhhErhkqx>jYrjpacIuPtX5*RKEsC^txAZaq>IR#;nFU79HuP znHfDJe_-z9vQJ(Yj40#rDF4Dx5fa^;xbB6l@ znT-(@13LXtmqDZ->JSo5`VoUC0}Dyp0)UX3+}(N~5pb_GovJCTz!1fk+5-PBtS1sg z1z6Pi@uK6`;6&_*=R5UxS=wFik|@rF=Lq|xp|OtCmmfP^qKWuu@BA|arWfy6y@V@F zEh^rdxd6^2_uvRXrh~Llh)Yk>UOQ)gYFX5!x|Rs268$??xi`awGf_9VB*P%VGUPKQ z1@s^T&_rTqsT%J4mp040Q=?;Z!z^HE5CRTp6R=>{V4Ce(nNByAU9sXEw6MO z&5b}Ru?%oK!#S(>S}{#O6{ikOh?fO2}uCV*%uXS=HL*f{j#JB@6!7m`#?|xtPG4M z1&hU#lHtA?PWle#UT{U-R$VrlJTBrxipPSirX7O+o`KP)3l<{*qi@73V{K8Kb_JU1 z%=ph7E%11+cp0Zm9lgEI+BJFD)YrZ%53+OxLL#^+@8K~c@n$$$nsr2X0sh(i?ia*I z*osJ}>t9O8W{`opjYgsHOXy5CGatcl+AhUh}x^pp(fZT6{i(0U+Q8SgB zm4stlijs?{)0QyzUoMGWz^$)zT$16;JFfD;hJ5_TeaIK%GsM2YgMKvmiQJe@bTFkx z2%`o#1r%3L_;7h7ie8HvHL!*a6^34DPp@e)n7oRDZ7f#aHXdA z34;`OwPAG3;w}w$=Sh%0n#(fRI~PQdQbGKEBZ{iKNlD_3lEDLNmGaa(EKq8|$UJF- zJ$9kOXwRi*Gdxu9Xq+qA%TdI*@9Lp<>3iOrVXv54G4!|!RU-rlYcg)FT7B5~U*9haU+Lw6&V zuv&Y3UUf2$D$#qdd&-WDlWHmHk5J**mea3ZmGDuSy^KfeLnAw2Fn*XpFb9yse22zjcmsByw&e7rq>S$n6xPr?hsVPG;oX>h& zK^mMiXzbfcx>Q6=#i1l&L!Z?Sbbc_3$=^5?kM!ZbK6aqJ1io3iYQ{P~VR>v6DNDV3 zG3wV6M`6}4Pp7-+&1F`0Z&>ZDTAuvSwh8N^ch+_RV`-vat8@CXnVK#{t-zc~7%wAv z3c%i5E0AyB<&qB6I4nAwmw5Rl5K7PFv2cxQ3s`a%y*Y8vr8Sys&wwXs@a<72x=IlZ zHvXIx_^?Hkv}sS}MzPD79S!OIk4tpdM(O-o&jdPP?blHyjmKiQU*@T}B+x)c152K#E>urgL%gI=)dyEx4LyBF9 zZJV$2Z%!PV^lOrzMmXoPZ`QzsY9yvPF^!rr6g{dk02crD8>}9P(j!vQ=dC-r>!Mhd zreY_6d`FBRU-RHS>dK929v_cm(;iJ^z|V3%A4fD(9<<5-Oi6IQ$N*-Gy6$DouoJRWUN&w)Txr^0a;4WSu7yNkdV9XuN2W-i)L=oKQclw<* zOUCe|kM5clGjCkbY@>^Jy7eM)=PMl-KbrI6lYTdksB^+{)4`w%cbj8j!WL4JD4{6v-|eFpjv}7x zI^A?kYSwCyr_6s3uGiqg$V*ky_zfsb#H1!Q8PuJ0(GuVF zPZ;ZI3s+Ywle^*S#}QcuEZWCk#p8mE+~N-bNWDB5&_ZU?flzu1HxG2Cz)mlUiTsIs zccj72wCcGxk2-(uK-5#bFMpH^=78qQA!U;D#ygs-^@18}q+V`@II7@SX$o3!co}w; zO2U};(8K^5RS8k(=Ddb~bOl4(Oc{!b>y?hP%A8t1^^>9+ zS{)wdg)<%Q7V7m(Ry=dE5`=c=jjDDz5kZupOQQ$$vE0uEaWj4ZmeV{XCy~9w~%q)>dl}o+}#D=hPZQomP=T~91hukKg%mJd5%XRDG(>^)vFG(acI^L1m)dc zkL@9$xh#-ndM|Awt8brSCnb;fS5|9#TWU z4ua3e5UFyi#*IAAxIHWKutUS<2<8haOc8Ia%#;YQ)2xDoKZooaB-&J4 z%;Ma_yu*L-a_WAi<7~)atr2cP;fghxnHF$ry6jhZ8V*CU zl$E`DaaA$2IKWTxX=^w>T6kg(*3YT-`wLOds>Z@TF)l{NNgr=+z}^h|4s3t8U6E!m zI7JOF+9Pir?W()r7#LlR2*H|ujQ#~eDY?L)mPsN~Bw$sb^ZSVvSdHP3Vo2Y~pkw8j zH2v^lp1})NUtNc|QFG5*^+#sgi&4LpxDJ-%3s3Dot9;!sp^jyXcK#$As?<&^VN=wP z{Ifv>v3>mD(#n#rl`khrJsz!AI2&+8SPRLXYSD3%KW%j{UffGJn^t(y#;>1m)cP z;kF4GEB<+W-i{d{EBSt_Fyx1?SG?wUDY!%Yhha==n9o2uH%F|;E_Akqp&xchI$?Eq zrzQWA^(PK^zt*E;iGVl530m8~X~(NT=bZ|8P=q!VV8F}qiROM}2`BW^H(Yf^sk5)) zZ%A8P3kr{%!aJT*0{liRg<2VMSH04h0Z4Iooaj)b-TnrE&k&L|ah2WQi@kr()vqNk zOoWA%|7@+5zhMeF7Ye%i6h%i_5~_T95Ag*8vB2pT;Tc!($AQPX6T9062HMARAj}Yg z8GkVjlrUXEEdqpl&rpO;ad}zWg{sjrBquld&585I+)yiQQaP}2r}>I{NPOd5y--%7 z;-xfP1ax@$Vhq`)3sskjb^Ca5z8jM8WUK-t$@@)>;WCrd%#J-8`vaB)DIo`+KpYuHD1l%npI=Z4aVd*U*BFHR? zQ!f6=nq6N}f%7M^6^5IVX*8m3iV*XtWYVNR#By*vZ-%3j^A+d2f3*j8 zq{bJxWr%7#BL35*47 zD1J!7u8DZAP}Y4};7EA@6v|b#2D(baW@7zF>fv9&eXn#Jqk)rBRH2zPP%ZCWIw`?l zfCn$RBJ<}!JVK&b#p<7r$}%{NVH){Ftf5)to2e)9$D`@BzoY}FWHZ`s*t40Nt}+`u5)9tZkz7(ibv6{Wrzt|VicI_xQR zhxr-dfOM&m(gJO%jfO*sDm>%vR10OP$k1+3&C`&j-g z@bfE@-T^{>#ux$xMKKPJ`bWgc=wYmaE{J#iEJ+(i@=av$vrDomKb_ZtwX0fY}8<+#<*Aa90$7ElzKo3O(| z)C?0Ff2o(4L$`fToT+o~TsL1*t3JFv@8f;}54_T`9~N3`-s#|q5(K`zo`Arx-nFwZ zavlYEGKgqP`vpjE+7pKBqLe6aUo-}qPA+&0z?L-FEHkPh&0*w?@(fsiwt{owQcG0> zgDJbbBM5_iGaUY`eFkE#7i{2E3^7P%D5+Bk*?ry89+^+l?v7V3bF@UD#UGclvMiCY zM{MpWgA1^#BP)+?J)Tw8jXkQF8@n0g1TZv`S}?YLod2koU9Lj7sq zW@!4gArzlzN~zF6;}{@pu*+|=3E}HmntISjR>(8!CQ(Wvhz}3G5)*s%6r?ZU!B;x2 zyK!BnxDC$|NZ;Zu#cnhjRS!%>PNr3EJM|5k`LSAF{wuN;UFO_4u@WXkkGusMa6@}& z)!5(+L4Ke2n5U2Cc7TO1(UmGh5re~O#=&m!;so*<+z1SZ|CFfBBaIohoTu*{Q30o@ zj=l}d|3aj4C_HGMe~or0_hW+k;5X@Dr4HdDH*k2K>zag3)#q>EIhgypCNG0~QE6PUjVdkQ=!s&#l5%I(X z4O9hS4v|CnBu(m?6HAuS@DQ3u>2Uv3IU+K7vT_dXN zo3Vr)#*!#J!ps!|e>q!5md*8_5=L}b%cc+AIbx%ZHsUq5u`UEt4N84L2mS~-L@54` zS&974u7N|87{l|NcU}7FnqMoX9RmI89QQ=({|!H&XCAcaQq*?mCe_G1=AQtu3-Bgeg1R`vn8)3!1# zZS?BbH^W|Zv$Ga(`#f;Y{eZb5HtDz?2Qvo!t()SZ_kQL$ehcOK$Q1eYd?;I45SzBT z;sj8F_B$#9?@FMhqHn6AJd=l9E@P>Sc&Xd*%ES=0V)o5&a6{d(qw&s$fA?pqs>++^ z(k-ihmf+gh6Jd+%fLTBXm&HJNoHXkg`5^vSeur*-0HoHJ#_AR8WgV~hfIHV@;i^D7 zDJ0X39t=t|BGjLFzvy`6m5%G*L)lCqGW`DeBq(pfBirw@V5Z zx=ER<#@Pg#RjEME`c9V}vakH`*6?)0Rud421&f14yF!|}zI0HH3VGdq zZ$e5st5AN35qsWuO%>>_v7)v+DR}Bsy%_atiKAQphy+XB5Z`$&hB&yhF4kL7c0u=T zZN)}x^zgP{r)`x{PJH9~ly<%gQtBEk^#nxg^E>lSHcdb)B3GS6U=Oou*C~#S;+fvI zqO38E-@G|-ID1ZBR%xb=wvLvLp(fGS4(!fbW8LN&=*5;*Pb)bMs*d!{_0L-v%$40n z&XKD8K*(%?G2UM1yy!ZM0($1?+GK9*FhjgQ8rs%1M*KeXi^QX^bX4oehm&T6KeO#Ae-IC8xeQbOr0et{nRbLGY_r#u+rX!ib07^G$tWN4_8R{V4zJA^hB@ z;3}!TED9lX2Rx<=SQvUx40fgx>uP)XwOWWBRETB#ps3bK{9V=fb~vJFlg+=%u%y+_ zkaSgT#O#cnR3CGY3Z47+X7Vz0tf}=_87FPE5pD0~uBRFy_by-*$uXfla1LH>Kk(a; zqULM$AGd8)UIF}5Ge{yxt?L&@^=paqc3@z#)t{?zm7QH7Rl@akZj}qNiZ4?9HQF4u z^LZj`vJ6iy_{BRBfB14f(CHfhP6ewzN(WOQP?)1#=A>Uqk=B?JtG**HPKA+f@$kO9 zHSj9ztUn>%uuZr%Gz4u`e&@;g5!vr9V(_-Ppx4I7tz+8(CS2I_Ap?AHD^Pk9s|p5C zsV!@!@Mr3qNZle!uJtX8YB#bY>+cY;EH*-=TQ_;p@%SqpSNSeDm(_#a4SgN8HARy- zWScEgt82$Ek8tqi7QnKF1}cA>@bg36;I`Lk@7q-v0a?*mHChnIc2o@(4HQg&a$Pzf zn0Me#M(%py4%yC0-V7I`hvIWn_vz!@Y@n%qP0z38*OEVb%GN<6tK3)Ud1q_9Nu>sI zT#)nU&%JD4@wX8GOO>Fkh5y%71U^WY@n9XSBPHrr=u;+}OX9T(_qB^R!#R_`_t=Eu z>n(7eDKi|r5OvU>xlbw=Eu}@WzC*IY>}JRZnZ%YyR{gj<;-cIL?FL4QW%^s$nWs*E zr_;uLuKi~-V(;!py?8G8!>fd2<>)uVrS7R3H}NpjnWZGwXF(p64_e=~`Rj&gWj`R@ zI3j~8VTy!iLoywDVICaml%X0K0#m5sFh#RqyYu$Mq&%dl*H!QVymO84x2;J|;-0H^ zFW`w+IxhGBe^|TApggvyZP1M*KyY`L;O_1kAh^2|+=3@aaCdiig1fs1cMmSXojEh} zo;Ot=MIEMUemy_0TI+6kdiUSM0j?T#ZS$UZIXY1EHM4ws#E<9^?K z#@vaTmEpP8!KdqY(V1EdkA2J_B_Om=ZBnau!A}(n$FUEzPw9kyXuEMfY;hT zHU0J@aeEx^*I2GFN~f94h>d}3lXHJty$ha)H^Y%f?lTebSy#WSD(YcjrKC=8)yjTN z+pT4{`k5Y!)y696ju@Bv2NYYE?Q>{APp<*?f_Vo#m!oXUl|}Dp(m}zr7aQ%_*+-IR zaRPo*Vl};hCtt}p&zHw-GbLULM}IV2umxLh7`=6$IeVh=X_n0*Yoe}aT$8rYgs|En z)bbO6hp5~LU}IZ3(z~nB5bq=?T9S7lK=UICJXGH=klKm)Y#A%R8TJm2#=R7S%C{Id zp{`-1;=OA050xruvxD4|dC8P16e;Ff?#+raUU#)e(CrJ%LFT{?JP}?Gwxj~PL{oKn~-7C-2k#KNH#kfcbxZ|Ic;kLwZWhLB9NI+F8`yir;0SV8%f0 zrpHaE*PY_MACFn;{XGaG21h>ApQbWZdeb@c5h(1|&5KFLfj3CiSLNt)M2zZ6Oj4w) z+z9nxM4Cvec{5yR1 zakI7i{=6RucMwHf7+b;SUB;%gOdO)=A^9Y%(rJF?Cg~;6W=HyF_&eGpQ3SoAEN z4KEIxeN4Vk5b8T8JDb4>mFckM9_2j?6h*0vcJ{?19g?EZjQ`(Sof$4{IHq|}x_e9x zp8*GjKJ>?d^8mJ_PrTUlD_2As{gUnl{K`2vwhkn%5!8?Cy#LRwW_cy!Fb~|m)}JfJ z&>op-ZJ(ab4{Eb#&dyCXmLd_96^N{UM6&ru+Aa;NS|H4K50Cyct?K`4t6zhQ7!DTk z_<0t>V$2>gcBWPi;7v|X92l0?Wzw!ap^Nap+g)KsqEg&bYVmdBa^7}>Lp!~ZP9 zCayxEwcM%f%`Fk6wNp%)`Pn8wM;zbke>2X5_`kmo0f3VK`TakS>VgSXo1%u%n{~8& z_l=~x>W(A-?JN9m8EBTLt>RtS8pE^)PI(LX@644ju8f4~6@f~Is-LxEMtgm?EGMAn zTAh)87VdyhU- z#lIQOG-JP1uJ6D_gpI9N{d9N|9DBl?mM5jQ`rV?JTK-rZLK>P6V@`x=3)QFW(L7ZM z&^J-12wm2Fx5$%zse8Q63T`($*#rIL23z7~JRT+aW;l@1E|2wdMVLl-G9UVlqML|b zRHbK}X5bv&m^OzH zK!v?N#xIPhZTP!n!+*6p6WjqrEf~*=40%?xNi=Yc-)eZV^c*u!H;GYi1Zw4wP%Gjf zZ+y82cGB5H7eVG5@M)A?{-9%r4tLq$338?j%nujJIy7dMBtTA6Q2F=YWh?)MuU^SG zKtJHC!R92w@4<$)qklHuNFa9`Fh{hkG_VI~tAu?!jOU*G*Yiz$4oufK93lOofnE+L zxZG)j;54j4cl;T1b1S^0WlZi&p2iI4uG{v%-#{ydCoAWy0Y|}`7)`X%*}aKJ9kH9DB)E0mg#L* z6|x#J-xfr|LVzkcb2_P!xbviIQky=Z$!M=90#XdT>}!|e9T)a*e>bxDFStGf;EhSS zjj3!R-LM(bWAO$CxNxlXu)uL{6s%}rx1$9`xYa|Ed#8qDk3!Z|&jBroh0SmirtSlH zK~?Z4I8~zXOKe|7t-^i-7;tjk;1@^r^(z@iv5vEMLzZ>JPpuBa&2j>lZS4H zdOk4NP@4}*6!D{%_X|nV^5CMyJ0&Co_ZHKju{d-jJ~NhAbxlO#Y;y1c@?d5~pEJn| zd*S%s4A(^%r(+EvMB>SVB)DjhCSi!-RF#082WZIVyeFGN+0Z3*0gZcv2)pbu#cLG} z90Lduiw@%uWp5wLc*jskR=+Cn(z7K&1 zAcAaTvvxNeW&;6E#G1rq*L2}m$Zqf0bHa2nWMLEp-gVaE2`G_5_DJIypd>2xXv9I^ z8oJw|>F~LZdC`d!2QWI8zPaM8pWi6?ka=YN%$6@6hPVdPG32@%ldEN0GJmOc|C0EQ zv(rM>2)9vcf+y^*XoSxJ_$SAUe*4r-GTSGM+x*M__R8h=3Hx39q?ZJ2)uqbc^|}77 z_~w<26Utho{-~kJkwWG^1y&s9d{Oaha2?GWhBH*reuSv}9PVHX zJB7AOz-B|Jyh}&zczlI6%OE?h3?n2D_1UL?xURExC}`v?n$3u$+7l1^~} zYGJ9+$!AY7yfG3uh<+S-)|Il-)U~w`XtsP;hOJRZxh00GZymCS{rT;1c3Rvfz0-Yl z3QKOV6}u(ToxL-YTYbfpQzDtH^LANihtQv^>6? z%{ECoG~%=$F}w^WbHG(izQb|*i&o#hl5w?zrfs*zFg+UY)ZJ{U%@>UDj`fsV{Y$aw z&+vcZNum`}Kl-S9MuuryB=1^BsZ)I2I7R^Jt5^{@5hQ_dOil9Tk0O;1J`VatUn6 zXS~KRm52zFT?lzITuA?cDaxMZ!h0D`czpUR_`$))aC^#KdIb9+4{ecepczA8WT88_ zXx07K`s57<11K)R6kK&2RC>$0I3|2n-_NF^jCjS<>Fz>S)=5`R0`IXOgI% z0Z)U%;FT**tAN0PMjNP^UNI5@#}8HR+Y=>R?Xx@(l4rzQqCh08tz_kU_VL2O-!*$-r?^FEc=V-3 zP@graqRk$2RMcqvhB~9_?_qa>CSU^u6MlbmdeHkSB^iiKsy3Mzv@(e*g#aVDly|6< zqtg7M;@4mwb`!5YCh^AoHLUh4YVKv+%e}?JU0kUS6l|d@3KJoCc2p4iUWox-(uJkg zDf1=(?76B1`(jP1Os!GkbcpGfl*|5xaB4*T#01CGPT$|XasR90c)os>Nl(GK)e9DT zvc6;dR%@L7UeA{r&670&#Ub2*hdR%mJ8>uk=yFuK4!Fgq}<9tmrgr8k>9J2(9Ib(Z?s`Ye~xQdx6F~I7- z;9$`WaLv=MfAnjk*`N_o@dMO#Mhxe=t(r4trqZy>Z=&xghaHNxy%>K`qix$Ae0$OA zhu1Q`u{pO}#}eZnUnkQfbF@Q2o{EIGT2*AqovXX58}D$2)+sQ;&yV|})TTBBr}qfR zI2%}9G7w#uqEN9U^`$?4*{T${P*8WF8FtN;XAXNi48jYm@U7xUPV%23E<3w_)`;ks z{RA)n4*t|QfrfbcSPy&$T7h1y_Q!6ed=fm$5V^|PKBE#^IY&;Fq=-g)IQtK%1* zxo6ul%tUWsR69R_xa9&}f4pT{W2bb$HA$pf$Sc%xr23J+XRheYa7~oT&W9R0ol24E zCOKb*%XYVMEXp9${@N;Mx($!0@o1M|M{BI@*Kg?nfFmA^ zuf;_GUVk;2Zk-Ul@qKyBBMR7*hhA8sDktIJ#b*9JonEUrZ{|cUTW^&%95<2U`_^jo zViO}tkRRmcMjZ(h2kR;FQSr}BHgUna;XMO5mA`zhR(s)o0%qOA}H^)NJ0sQ zPuXHO%>LO;Y6VD~-;v|MHYXq56}yd^3IFw3{K-A)r0bZO3(l9O9s5PApI*tho@13j3#9gmd`#qg*b0SV+1QL#uBhrl35CEHtLwPw=vaP9JlE)~bF};B(Ul%%mB+ zIN0mgv9J6>LRqA~SOi%WZ-#SlE@zxGAi(+G&Cn^B)~Ko0F>OAs&{O3l z`cmP@3 z*2~lBwTc_cei?>L1a2ubCG&<+PI2*{H1_WBwhUuhx5~=cR?%DH_6~QYU*jX*4X8YG z#l`^OVQLP&9(@iWss$g%9=Nhq)WjkL^`;_m`e1LaxRiQfYgB+bs(1YNEI%5@ z@lYDWN=&l01yl^y{(Yb$C$NuKm!1!;XqGf|$8eNa2N-y(rqr;()#o0I;z5isbZ>3n zMjJbvjw#5cDr!v2ynvry$+%9vYr1M-;^^W-`WLN0;sOjiAKI$yFgYcT(SF-(g$noT zuUFHWe>AeZ)NMq9N*DnjJd;{fHQC2$wO+Q;Q$}P?3Dwg&ej?@#DU9C2yydsU$p&2F zHfQZH%fjwdRVN6k287?6^XA}sqy5yL8RgvZ_GIC)*OMNV1mUfclHSt;ChHA839&nD zSPvgMLOTi#90vr@7Gjug@$P!RZC<>*JH1wMDft3;KLqhAiqJF%eqzv`4eTCHde7dzW!w$ zRPAJD_2!Bz80NXc5u*^xoyN+K-BCT*)PACQu1jdSlP8v{87>2fE%d_% zq#6#um%g4;zt*$SO=A%gf{@Srb6wJ0iTj*ff41~lYpnI(Tye!rGP~ZONu&X7e}OGZ zwZYng3U<3wCuKNnT0my*{t1aGAMaf_a|A31k^n7F_Z^TmDDsOYcR5G2nVw|fJ`oHU zYjcMMf84g{%1`<*_IK}}fA3BpuVfqvKTiKtqY$nTrjaj|JdQpWcw|ZG;3~S2vA|eW-tlC#g(q_D< z_%%3#?%UyeJr1G70xDVtIUrKE>XL&1y-_8Z9&d{J2LcR*`q0zV7Yo(GS@gIgDEi-k zAsQK!C3Eajz{mBtHX%!8tQAv};J?4R4&%Nc2*f<>- zM><)(^N3;rnqnqL;T>XmP;JR_{Y8WoOc=7~8YOf|B>yNt7Jq#Cme6Ovo{B`kH$~29UL*5stiV-VH zRiqu9NTn1$Qb+%`9+m0}y8@zkPF=vks31*r@^G#DNq?b6&k$FkON#`@w+)$UitaH^ z-s459UxPDv%2{wX>JWGMM(;AHvN$6OdV_v%qS+0eo_~1~(lBNhRj_jWnACG`ppU63R4T z!4WJJ`_?9dUR*T|RU^{bijTk{UgK$;Ho^TO?NGsc3ouqJ$dakculKHVU$B}E8h^d0 z_%%3JnXa)=eroB7n4kF8?9L1sqF^=0a{cGhv;CwCu5x7$4OdLGQ6&EA)$-OS$XzAi zn-Xrg$z56-jC>czuby^(DCoFHM!8~~iDnz0XX^Pk!`XUrD7w%x-_=Djq|k~KItR6a zIG(KTd00|?Syj0k#4uYO;WqB2ekKrCpJ529b^>c0qP@>ky|q@zM^6+QIGMkw#R=jS zA`P;PnWrZ+M&1k;O?8LiZcqx{+V7Qk5XcU7X=SnfP{hsWfbZ7?qx_by<1AsgUs{>^ zj^s48BtoklkV|V_N~|o$@me==atW%qPF+1pOwD1}g)r?~X}42*0fWDiahPJ?M_6hb z0T*im+Nh*G!bkX#{u4Z_GEb8!Jw(|l?cr~A-eT=`M6}`)6qHCMw*aia_HGaHFLO`( zQTq41U|bS8VrZSl#dh*VojuR7X2ZF`PHIIXjnj|N}fbhUNO=B znkT^qX(d&MicV>DNoXu&VE+q>Ya2=e`VD*T|5Pfk>X=DqbnxF80QzhCy++?R zAQb7lQPj7?StBI;`Lii#iyRh;j?9QAqsO2z>@nUoQN!POdL zQXs+OC{3$sLu&sF zFnf#2$Hb)iGlS5WAE2%Mr;SCNG#B6xD+0rid6VzMb&316+>UZg z9lHcBi3}S<#kOKAlOW*>FYUEGWGkuYL^< z7!?3j&r~RsjXa}ui@Rl}(uTuz`Y786BYiy{ZajZo;QKwd9%{yC{8QC7K@MH5Qp6Sbu z2BDOM7N1Yv+-e`u4@P8>%zgSs@8`Nj=c3YP!9^1svrC8tDc}tZ(hptrXYL)_lzxA} zisiM|$D;v+1K2h?BOo<7N}?JsY7q8Mkm%K?p4>g!cBM&T z<~bMp^QXYpb<+-{&qpmo>oEY$5`?vz;4ye!l23s`on^L+ZF^4^d?_+i)kAt#^~?X& zuT>m_GXY8zRDgFI`<{VQI4aZqvz4vc_mD3r%S<4Kd%Jbmj_$2i*cF7nY?L8n*QNNt ztpTE|NkSg_E?6DuT%(hC^m}!GS6B*5_aeH*Y*CXpR~(ICN6Y#_S>E1W|EgigDuu%= zW1z{UI-sg=A~h{U@L*10m04eP<=19(pk`t<@)!VxfdeYcHlTJwDUuf~(Lp-HLcs+(WqGW`OEdL`o=a9jJD2#aLFsG?)M$a%;QJ5sp34H3d=6SrT^sCjqcB~V%M zG_IG1Hze2fLd(7aQ{>`ItrRWM-iXPMX&aD9PMhQ%W3y~HwYHB)I*fm}OZ)ed`5Ii5 z8G2C~do9eNR5BLU`ToLEI%xh+X@wgKmmsMc6#9|t+UEzxR7D0@9%#&vqjG4VO*$@G zvpViZC5vjSmCM|lqKsr6W4mJr^Ib2k@jn9|{A%|9&sg4n!Bv~cJE;-s+ylcwel60C zc7FGUICRlA=8Ig>Bto0C&(y6mv8@MW^9&$8JUSAyi$HbV_jZ{%IwN)zLJ}uBJ!LU$ zBpay&jDd=Uce}r+UcT^pt>RdR3$ELRFU1yw0=VRUcUmgwL!%pHM+KsygP$;1POlT@ z^W=Hq0DGuyngh2hks5%F1Z1rndRdIJix`7A37Qu2QaF8FQ@%%)vOXy-H|0geA705g z0hT*#(SezjSr4qzyNWL zc{nyh`<9=Ea-*XYaclH?3(e#1l4r_2tqH=#o8gRuGTp+22v^L;?6@*@@3!AXL}RvX zgEH9C*T3RhqD`6(NDNxCT?^z(!~fZ`W6K-Ztw@sI>fSxmP~J18EI>Zkjde#MGL{|Y z*CknEHfnk^T*B|TAc`{bZbXK7330B-;6oB^L~uTxQo{g^IZB?gi;M#~xuJKWqG&j1 zO?{?e7$6ncaAH}l^kBkXt@U1oU~7Qc zuLutqGlTp@klRI36<1+Jj5<+ud?{u#rYWXv4h8chno}GgpN=fmrj{}+>bGHXULd&W zRTD_ox6YG;>2IQsC%<3541sbmb-dM>o&CQ>-D_O%O$kzS zJ8yc3cO1LtINU%K^ZJGg#{m$}VVw9oek=qg4!TqNEkWhT__e<&0tWKupBe5=UY^IV z!38zZE7TSd9K@tQXY+>m6c2^5nT}NXorY6$4t0?>i%zKz4Ttf65v?+|;fPSTlK_fT zpCBqvd!z@(dIBRHNtR_0g`>s%QDN!4jM+c9V!defYjE)At&JZXAKy7;>=y889gW~A zm~D+fZ%c;xzE5-KTk2QzG4Z8%Ggg+R1KM20P)hJ-I4C}Bt2KgDb{61W-?5Tc5v6WI$&+r*sG{D72!xzn5K|4}e?AZ_ zM=ao^7lmxU2GsqZa@{3AqLJ#AgLlVCr6?U8mupgCFeihhx>oMA;;mPh6aX6THNs`x7Dh>~4MJ&||g5BH$JhiP?j$6^3{sdsWH8r#!> zP@O82XtvN<{~>V_++vTlU+ruI^7zeg)M*=|%8p}Cx7kRN5J?Q-z#|byT-gGY5x+?N zk6fhPFLTU4V_Z)NzeuM}-<<6g0erLMMp;hzCWgyM=JUvz54RmB+q`o(WiXr2-l2&v zr`)_&adm9;zApc$_gGC4xmQj_HmmL37fHAqNk~zb3d1{@J7t9^WHx)1e6U_W%J&Vd#g*u#}kms+=L`oqqWg zu+ZeastrUo{o*cc_7|;&eI?_V3p*H08P6PI0`ZD+jQT=?$DMj|vyI|mPn5z4Bl=dn zD@4WssYhO-e5LiL>ooEa&}pD;-Syqr1bqB`giRx#AiadTVDCF17?K)00ftR{RRF=^y%g zH9bPf%(!!Z0xev({mM%|Fd{p~`xd_I7%T#KZ%5YpxZi8hpeam8vh0ZpnuidN!;mcs zziS%D7=AhB=Cz6&3@-u1QwEm3X!|r;gM3V;MiC!yXwF*;PnuDGK{B~;H`6Pk?#$WX z6y9FjNzPe-I821ni>fs40EJ}N&*Vo2-ANDGpE@ZWWBx-j3~tT;t=IzU|9#(N_dmb? z=XfVuTr=Zc4joRREhGT?&HwpvyOg26CBc4pB+9-~< zW4Pvv5gNyw&*3QYbCbUP`P7jJ5b!L$Mf3bkdB8?b#_0QawW=k=XSU&fwLc34T!d92 zsj6^lz#$w5~{ax;nPa?QLav5 zoQ*SKkB!4|im(sY{G+%5R;@2!`&TlKG)j}b&`75c7!nv^QsSfNuGQFEGMyC@{YItD z(a_pKQ<|aOgF>nylbVgyk2yCBa3FtjR7;I@^QGbkmmbK#g7qs#kE@{9F)FlhhIyoZ zGwcnICW+Qgi)@Ctu-J>8ZmO2w!vmM;7H(MQbA5JkDe+Z{4{ZaDdC5|->}J{s{U?Bp zbRe34$-Z5`D2_eEhSM|2Pt4`1ei^b~GultpYkMBxRYvw}%f>r3;G6R153# z@#ff}3gI~t@=$l4tZ%M3QyZqiT$HmO&lo4?lU}lIrkW{qGq{asZm!?A^I%i~E6!G> zUw19VNk{8{RF>J+0Vd~C^hn|@A+4w%hU~6BT6V!9RdNM$QQIAq-|q2@U%(EpWLyAy zfY6lF>}eM%vNd=Lm7T6>#vVlJx8KOK;aDv&P3WPgq?m^wYR)va*0h#(t^~LVBU)L+ zLhAHhO$Sj(ZAA8&w~RF19uIR$(TE`xO}rV7S=HHf(nG)std5Axo>~cH!daaA!EjI! z6nmzh;CHN0wbb1CrMB6$T8N$}l*3j4cv!Jn-q!Hl!&rhkrKA0zQZqK^?W#LeId14} zS3|t;X83z8zM@XNa#pnvJ{DO-Xg4#Bo+PMsp zgb$#MZ~X_X!4VWLhP>p<#r!2VoZJIMVZ6jMA!XU_w)UIhB4*K|P8|#4eYD-{i4@fd ze+R4c&JvIC)#N3{7^n=#z{9YE@>VKTE4RE4%N^=BfM0mJa@7|%+(VNnEjMI-g(C_Y z1=Mr+pwhFdZ-ar6FJQ-4GA{2?Qc4!mRMpUfGH1@z2%58_qG5Vp64HhmEZV{HGrA&3 zhpiH-lAQ&%d17rLJq%DD$3@OU!)r^1n@Gz$2}2C*vUh#=&n4!9o`JHT`{M{#x?_Cao8j0oTCflon4PS+56iCA;^1sL;D@FZH^T-l zJWuJ}Ar7_>>0S+tc1BPfvXfKh@_PWh{h6oEQUB=r@^e3wG(o5ILQy?sxWQc?RH@F? zH_SJ~!St~E5Ia1-PTk&3eci_QB~eZPLYH@;M*@dTl$~F!arUuJM7T-II4j2pvz{s*Y}A_y=w(%UCs?V=d%IL3(tt{aPVMod5EGP z>@diV!q!C^#32dexYk;ceBN({tLn<5RLkE9=}+n9%Z?pbj&ZWpZgN?k)A^uJ!v^oJ z$3tS|ZQ*z`)~Dfw$9=NE1sLa#PO9vp_ag;02-RS}P$mCnqpoNBs)?j_P?2Aw{AM_F zTsa^UL4WhMtU7m?`?}6;8j0ZKj%w8>*MN-Lj@-l`!X-RG(0C-9k=k7Q3F!(r!k!ma z)Lh`}aQM8kvK%PGN66(I!8Vsf%sUdu(){gsAq%{z-#Kc?Rt8`q3Fk0T9v4^)_(mhxZgvE zX?(hq8n;>fi;BO#l5v?>6^@2}RoJfIF?fu!#5*A~kkA=L?#NSQU&C_oB*u=XY>t0+ z%iN{q4Nj*$j|>3{)rqqw739OYav5AKnB%uRdad`_+NhRJ&V?8X_lVvM7a|lJlwC@P zW=Q%Z#-6YT@=)LSDx~$}$Jgg9ufNCocs2PXfMJR4dSll?BYbWU59oDmyu&e)^->Je zTp6$R#+vxyY_K1+rXZlZHBMp!^Jdr&2Ci%y+hfBj5sZ(8G9v|wL#QT-?GFR*FiXWO z;^*Yn^yn0+8PS!x6)&*k!hK|5oX$D8&m9B-?U)NWL=MhE)r{v3)&i>$e7K4&mig_i zPVACR9)G9|=848rrU)2|3@{h?=I4AyCfCOOhkcc*wd=}pCE|)^!6^-H0c@7a6X+Ir zIy`FK{|vI_JO<-wErWMvg%6*4*jc8wtahx%@uFhqS2B*PRDC}WB4`RP z{;;_BG^gC`3ibEf)PIla*We1MlfjN$T4_g0afEVb>9h8yPfY1|!RBlRw8N*u3il}; z?J`-;UMJOm1bV(-_m~19`@Y}XP_g`?v zgxtq=ZD9l>6{05ur174VcvVT32@p(hdM84CE*qt}L$De52K;xvZ6?r8B`DQEOKaDU z20p)eIJ|Sd(NL?xYWg*~?Pn22RsfXT@cqm4__c~ld|5YHF*hQd)Esb)At{Fz81-mK zbcTaA@sw`k!R|UTl~tJO@=W9=TZJE3W^q`7@U>Bj2x{$|DpF_Xe->Y&%r=7b?uwmy z$WK)#FdlV&k+I7w83&aL3LrW zcHYs3src-CVm3%R2b4@G3Wk^s@maySL^5W7sT>^baX6Qh0~f{+pu>;pv>zK3K)(YS zIz-J&;V$x6ttv^OIPFHtiVf*}GwdfaEIjeOBgisbrBS7EP1QvNGhTuFNhzdMnn%^5 ztpDq#c%(LCM%oUu4>`B=wJ^|TwzLFeK7VvEt5QnF9s1$gUSP4RRoI2o0$f>IDf!KC zyu31^i!&dS8JnY{Rt@tKO1SeIOl) ztLc5Hx!+BTZbeWOoxi1U%zWj65n;RzS^OPq;7Kt^LqXdKJ7*GPinUtKe>QJ>8Ce9_h!R4;~i zNgH<1wIehEczha|o}HxdC0J-CsCXESPAoB}BFgY7^4H*2Zgu`U-1P5x{946XCPyfr zmgy7wx-rV4b}!6Kz&i()R&*YQ88AArTA?;Gw4EzVgkWXI2H}IT#%*N)yKqR55KWj2 zg^LUNx}OaSgFe6TKC#Si@FG>6tZ3A}x#DUXg?kx=2)k&nI>`oWaV7l7cb%k`ite+m za7P-`J9VS}VBAXM%lA)^2X)?mg4Y0Q>nHGC?>1en2$QP&ypob;3&M}?S}OBr4@O}9 zOhrT=041E2#RTHLTaer!rd?qA34I)BDmunx`se!wED@f+kE#E*`ZYL@L)A%fkCi22 zdBLX8mA6mSh_+IcgY@!{YZBiF&u7tkxVPH4Q7RqbLtbla*mx1ZtX_*Lfm0ctnU*KS z7qJfkF|0zUj@Hh#bR*T-`SI@;*Z&1)l&68_>%)EfgV|*St2PH>b~IipLZDxmF$*~zp+O{>E#FeUx|?T?&bu#OuYUrzKl&J6!f zGWsvL+Hlrj`@~MN?ie`_KwZ^La)!!}40ty8gw<9Ao>~M;?dkc=)odh%Gs1}iXVm(E z&mB>D-4kitgB41Cr`J${pX_*@+nd#_V?wtP)bUAPWbFP*#zAf@Xxr;B_tskM-lCs! zrZTBsA~H&X<}a0SuoHZtE9$+GX-tqt7U+iY)mQDJ&W zG~IwZ04;8l&q>4p{-C0Ib7l9{$~if0y2cN?bEDlx6)OoBjC< z*yELqOFagi_=RPWOi#H?6va`eSS`#Y>0n8ZozGcu44@Rz2(2fvGMYyn#7AZu?emyr zfKKrsk^7;35zYgm6eJJ11Bi&qC5dKmk|Ak5R#lT9Z-&d8q9g1(eWP-$zmsPmPT2TFj%2FhlOv2&Ykp)1gp~5$ks<;ZY8yaWX{j15QXFW5^s&m~TGGu2 zII^@)*$Z{5OvT>}d-Z?5z#J3QCw_?6Weni)UpTT1`mAF_%gTw+$L<~|T70ZDmTp^! zf&JbZXN83$8sJ!M0*!Vb;YY-3;T8h>7vHOJ# z#snL>gNl=udBbh$@Gs(Tfk6Yl1gr4gC+F8f0gh|bKX}!@gf80wPI{!$I3~N4ai{9f zm(+Cdt}DA_0@_El5AL~8+$(=4g#LR0@q8uY_^=b=PpL}0({p^w5(%{QEofu}Ka;dl zsBC7Rg_+fdlI_NaDjz&Tp9pfT;6rr4fv$S@NIoH@!DV_m*feV*E1skwv2PXDpl zWX))SSQ`jV*Rs9EbC$;K4ARlA_5UDKrBRKybo={c&$~>MS_7bM-MWJDVJx*P!)3Nu zkMHtu-D_jaMO+gUX4<6rXW5Q_Cnx+D93yK-lO*m^ljzZvU7??dK@)B|YeE!7kTtMr z*8YwoKf`H2Coy>6Pfa^);7@}}6L5<^)j2yF7e`(kfajlY3^SL-5q~=-@kjWxk5t82{q; zWl(dvfXJ!vWEgID**C+vZIWgBRI1sYcGNt`MAe`X-w=+w>~g5t+dnqwgdAkl)!tSF zDmQdJJ}ngRsAQo7X}X~d>Nnlc8yiHJ_HJ2|Glm;IB3)_?33WaS6Y64bhKq2&^WzOt z%&!xb3E%!RdyQ5?1*@9bSqMxD4t@KNwKsMl=@By8*7UlcVgRL~+ZEvIH@~<&7Q|e z?rN?>)opWTAR_ad2hyOHZjfy|gMz{zxVgCRF_L#$j%~vXlKm;!TSeB^gL(?zgk8Xn z-!onCW;mEpdF~^~oPU@12(fGTr3nkh!}#y8X>?D0ibY!mZRKzd18b1m}eC z*x2t{H0SAddf(hH!pP0^Ed;ZLk6J#dP0E@BKZ_EdfB-MKwa_n*S5IOhL6k6&xGFK!ArkaU@1Xk|3y(u&Y_#{bl(I8fv$x5MSUJ7#SC=2G4U(SNi*{y{A%!J`IAhLuQ*9IFJP}% zG7h)QRtxu6@7=FrMJs{$PHv9iy{@@A=Xs}(z1OsT(7qt{bas@s^e80fH7A9pzX@C< zS_aHfa}>tkEDDIZDA5JdlcwuQEoZ`O#xe0j-y4UVtow8Rq2>_+|QBfOX~au-Wx zkdMDqt~!a_p||Bytc9Hb8({NJv;Xv$Piz0J11W$|`X08rVs=j}DWfytTUKc|rps2) zH7~AlDMpTNK<1k(4x>%N3NA~3&W&M|q&DQr&`qa66wL%5ZFs;Zo61rKZ}3d7ifTs- z><=l4=t5xP1}sGk*iqi+JJ3)zm8(+Aq9*g1UEif-vg{+>$$kP?eKVYR($UcUp?px6 z_D&`PHZ=8aY1TE4+J~3fH7YbzenIXYfH&cu@F?wvi$rY%zr_RGpjD*0u(Fw@KC^5` zdV2n8ka2gbm^k9#E3wJ8K=`}Z%)d7Y?^iPRQ^t3({+qJdE0AW{aAhsilZa(U}{ocQEldBa{%UpHfuZdQxKIln zfevYYfpRhk#V)asmEr`<{x`#U?*)%G7BKg=vYyl#Sm7I~{c%V~>kCZ!G17afF|ib5 zhPIO=6|RIPLDhd6?v3sOLy4@M?*(l35`8kLi><@^8f-Fr@8B63O=t$N&qBywz&@{J zTunz*kF|EwGW57LoD@J?ZSlP#HX(MO8-FuC_H)x1A9`ALl+K|B*7#>`h@DK75TH)U zfsL^36HW9@BjReyn*Wb}2=Fq3X15{zHa`iutT)4%pq-`b+F556Lw$>L9q71g{ZMq> zhbO)@k5pw2BxMDyXcRYcecIBvaB&DSifzq6sbVF|5AbPL8o4Cy`MAS#;jufJ@{AE;t0*xNQ#Scn4gas;_)DujGrJhlxhAh)cIdfMmccsbSI46=5v0T?%Z#JPWHe& z^jt>`FPj4dZsB72%QGXbCGvo7Y=5e1<4NyjC=|NWR?K;7W^8yf95(9$?|&7q4bS@- z6QrWG<7-Gj8;5FOAjl`J1*c9lHpZQ88}5{!9sfM4K9*<=6$6>6yG;5=(p8tpF_o}! zh1P+a49^|UR?~(vEqkX=h;N2N$zc&`W$~QQoaF03)u8Abb>7>=%%w{a6SRwTr_RyT$Y!o(~nm& zu3ZJ`_+@dbec3B^nkpfaco)1{#}YkdgEVv+xlSc`kevW}#)X<5tQe*KMBlzX2!Ms> z*BllHka;`EjkahS9yx0fd2#j=@U4AE&KWgmdr|RgaM9TJRDRUHdMI122#n}l7GAYV zzvVw6;hd*5gvyIN-7)WXIxb2wBt-|J#g7!y!-2%IhBbRXd)Go4?0=SQCB_X$Jt%Jr z(m^VZ)AcK|c=<2$H8>KyrrdjRFjB~7e^CkJ=a*y8*`vdJDF@Uajlm>Q;2Q%8En*qe zCqgV6tT!j+Co#Zxe3NU(I3`qFv`F;OO#I&w5Gh{e+Vvo7{y6I+A4n} zQ6xj)FJ)aR_P%PzD@*k~>TeRCEHYlS+V7Q&^UcY+V1t@kq;9>Nf`7d?r|l=sJ+N+N z>oxrCdB1T@6S6T5O56aLMM~TVV?V1e0C58WM`0vMu@tceL^G7ur8HahTU{%??0=TbV4lf4%-d~fx>=REIuuJ=9XI_o+YPx-jl=l%{jz`RiJdzXifBLJnPD-m{&aAW`sJm4ehO|N6yF}p^kf{^%~y_H5 z;G15V?~Dotg|4{9YZ;j*NDscbT=&nP_4)Hj;_=^HqEXp=lI>w&H0Gq>->rn2FGqw#G^ZUu-t^+wl82sFy z#xdh=@$m1I$fmuxL38!y=(#HFuk$+h0!}$&_~lg|5YRg%tydC}+&-J!;5ycH^qxM~ z)oS)r1J8TT|4U<^zq!UayWgq$8LY2LvC~qP_H4L$t=u@1`qDx^ z?U+;9&KG=&3f^k9VU*xduVWEuJ{}^RFkI*+uqEmUnt5UCc7$j_w~%P{UtbaUyT*ZA z)CZ22R}~-H{Y8O0eS$I_A1`l4I!$Ycd}66!qJ4NWlY8^=dibG@=Gfk_n2#wm7^Znb z$J8hV4!w!Haa}H0z|_pD$mi0>xV6j1Ot&2;3;yGYL%7IG`CT95XP3A?Yf4>dG5^Zs z%`@YjugD+iG5^E!yL~Ll3D!C`S*N;}ShgcI78uwNA^u|0Yb{3Q{?{10qGK@0J zdcEnNaQKoX@z0;<`txx5+le1YRgb0nX~*SrKAiT_YWmi|@`~r1_{vWK>%gfci*Hxi zkEC#@-B76hR$}<6>0l>@!8S%8vt?X$vZc%BhSflKTHVzqRnEi7hRkA*UT*~d%f!Ba zbB)hcF(32t$HvgX%VI&uEclBP;r389*p68449E@&Ck302Q4}z2n}ZhlZE)R=B9tVR zLKq2Fu1N>=3W?o{GH=obBj3gNX;2goZ3$b)(r^-qk*|Kq(SGeS9!Jiz#$ znczPf83l9qPI`cTVJaqw2ihipj(Ryy=<|`Q7xbD>9;HJ(qETuPPd>i_`gvj>fR22Z zM(BT-IuGKwSq0Q6|3C%~*cDC-u(w8XW0<2VRS|StaJUcp7g9a}pWgU)*hfD_63l;y zXcBa4#*Tu%AUr$pJ90e(eLQrnFz*vNPVn=kt3sczA*07p{{*^Y&?g|W5Oj_<-hn*E zltJJd&%=WLL9SL%r-e@e{zWk{*vp-YE#Q$L`vQJiH+$$yZ*>gxTE5K%ea&y=U|u`1 zLEy2}odVu7?;9ch%cK{0bh^L5eD?8$a6a-{EBEFtq=I^uS53r7H_p*u*pt6e2SE$pK6y_

tuoKS^#^q%^LHO%YDfovTY`Y@ce1sl!9yc|4i0lgwGePI;rg3j%H^sI;KsYZP zdk10GBTnekZ50iA>>_<2U-wMGeH2&!Vef;G*Cz`2^fRI#BU|~3H`Lv8a)5kXI%B{y zT7;laoqrVaH3JHPm*bY2II1gk3YA2NfBT0pLg5WE@ISM^0ru4sRkFzc*~eA@Ve|4M zA%scUabgH#-VE^|bhaP_EUMQ#itK8}c8H(iJPNkz=P}@=&ST<2@d5|OlL)1E|FLw0 zGc)so2wUuKpFl{2brbf_c)kYoCdRG8Jf{pE!F3Fr%Z9m)*lJ)e`N^ZOe>zWj$hR!Q ze~NhcmaoJ7DnHr5?kpUH{UxyO*(1FwV5^^90PLL40v-Xj_i#>%a=D?tZtX7A<5M$% zeO^@=`ftg{fKDM_dZ_zg`3dU!vK>LMf(9MLn@`3={q3a=I1gM-%5bhUH$9SMPN-ftV~3L^3$&a{08>eNr>jv}7u zh}982q< zzao2-Lk04F(4B?4&j$+okv~x~V;o_il?-5ku=X^vuh+K&kJtf$w^&1;piX z+riFQXaXKv1y#sr+Adi_`J1ww(8upM)eqofhz0&MHm@N<%UqE>m}GW zMAcv)6dndU%B02$#Z#S0z-GC9)&`zA$BNiEu1d>I%Y#GP;)#Zrh1m zL+G2iV~UX5SqtLre38IE)W)id{1>KvTu0cWX<>{o5c|$mgzq($p)P#;paHTSC&J*Uy>n9k zvabc%>57VQ{v==cb|BkqoEL0|nLCrn#^H2qL-@n-Blw+WyStFhNhH&aP=_#i03o~i z>NkX|7(H+f?^^eKLN?A65u8`g$z15KQKa3D{KJlw#$ z$UoE-511s(3jA2F%HewPC9r{>0E#u>*VvkY`hWlrbyR2JGj|?g{U#Ie=h&5jF1C>` zn#ivij0O5WHv~bPp`!%)RE~C>LGe+=PmrJVT}TDl1{*QZXRf;w>WElK^^iYBNDp+V zTjPU1-xC&)|0*pN=Dqy(2l9)r2%j5;9Ct^Fz3B$Nz*I&42dR}*bL@E*n&fj&5k zi${0i8O(-oYOI+^`i<+*Iiy#F=mf zfLAJj9rUGLF@XNJh1H?Xc77H3npJ4v{PxhT0*?T3!`^%n+fZMorvv%LR1YDZG~5Te z&8swEj+tjyA%ByN0_GQD*?~IqSH$2?7n%b9JIfZBPqOkp@DYZ@fPc_m5&B2nkA>@4 zR7ef{F-gbaIvqJ~4Z6iAy`kS#M?<4#<@>w5KmLE0|JV2*`w#x%`8)hyohPOC-=FWV{y+8~{5ySr z=l@UZ{$1X`i~qa+|D*MP&HrQn!N2SGpZfpG^H=+?JbxE=SN`u`$E-mtxDRvJYN9~* zG5(BGa3AwY|2^E-@%AdfebKkhUvR(kki!k`i|ATy;eLjfk^=5uQvz=R&-6GJ+;2rc zOoRI+^J|uHKQ-k{3-+Tn3b-$O+4UB9UWvYg`=bq9LbzWlQhxybECXKyPmh8<Bra<6+dN>b@n^VXP&B{!^_B z&>tsN8}@fEIScZtzb?Xkt1f8-@EOFmL0yf{Y2eFV3jqF&%X-V`d9S&IdkJBE{Fz0B zN!e%S5Z>%xhqzbq$TqSCDfQ+NvZueFMQFZK2=Re!MySU;r~VW9y~N8QuSU`h;vqX- zfYiGA;Ad*216+;ohp%^Id8!~TbKMxeZfzYI2K#7M?hnK_esvx61jnd>UByedhWyX) zJAlWpZ3_AlQTRZ;S?B=7@9^S$M|nLOL>mYfGH!!^<(3xsy?mccAwLIsA&z>J!(Q=K2wB!?;p@KviQHObuU@j~MYwe*89rZoa2CPmtvFn`g156yaN|8y^wMVzWcvej(v*WVe1xj7NAX zSFR3WVvcVM!lI?-aD=7mDcT4F3n-vZ4pV#tvf~smV2;F>_V9JbGq($g$Ui-24}G{~ zH=B?xm$mT}A7x~2mgqmO8y+io3unqcrZS)I5wysLe2ZXfU6Xy{6bt^;NJ-62}$gcYED+%FM zS_b%fn)6LF^sTHOg*i*CVqow3FTyKO9$i8N%$p|Ca}n8PHwK;~)OSsT{=dX;!CW`A zzkWvkl|oUt{-3`P!g=U$lYp;N6fPTwqWIO!7SM6BPy*&|+ro#vC0S{uqIlbrtFV_< zpC-7D&sirUkzcP-9j;qqbQ8omTy4QFIL8-=;t6k8N)XOIrFeqyx)l}7O>ZO)*DcD- zNges;(!ap|k3Hk8M)pIli_Hi%vEG3mMdIV|b+n(~4D5kx;{%)n*5fCE=K)m#>>tOC z@Di$H#Onk;@eV)GQ~m4&@CnX`zu4SJ4CXB> zn1j7N@-TvP!&&$e_7jju4g3>@Q-I~i$l-bCB>yeo?KiaoK5Q3rn5V=R8}eqHtDxUK z?L2ti5pQ+^d&VMt80jmpYzFD3h56nEtHC)SO@9Y_dX}XCkB7Xtlfb8Z3=_^>)zmlm{6%u} z0Pv@*UztODIsM@IBEk=4$qNYWc?*^ihP#=qBNR<{f$L+N7CDJ*i_`WP=<5zX5|tHX z%c!($BJ5!mfO8Wm(KU-~x*&1D(F;2B$XT*P)*)L(UJB$Krku@QM872C^kyGVCBMdHxILPK&v)r@u-G>JD;lga6Z2 zKJXt4;DEi_f7*h5Y`J;C`RC=b0lrI&r(h3+{Ys$kXK?l!;@3Gl1E_lDKE!8Vm;is} zqZBwVB9pAJ*ArZ+z#B=ClY|akX(d)nz>|K>F5BgOy+=O%Sp@9MV-Yp@9{bo?ogU%TI>##?x z>jhZo91N4}fPebv3gBr~9_Sw?a2BpZwRke<%*?e1Ts|}h@wCno=+B~f6ZY@$J`v)S zgF2v(CuIiui?M%$cUrGW`?ZsQelq-T@DJZ#>;HGz zf9?10>_0mGUEb!Ct2pR!ewYmd6CqE*eX!qAYXAzSx4`3gWhfh-pVPQL!{bt!E&<}b zmsk#>Kbr!@hJCK5uNB zU_jg;t`MFN9$#6&MtLzzAMp`#d9s21@j?gmBWB+H$DVfm7j7iN^Lk}h3_R|`=+dEH z)BHa4?Mov(g!0Dk2ST5+_+yZ#*RtJop9I>-FPhz-%9P(D!*;8u+xxR>6-^UJHFT`Z}O~Vk-~yDQ9OxpXVjoz<0Y% z6>M|GczE8;UYQ1-z@l&9Z?TJqJ$L&ALH?VCbcoX~NW(tcJ0zh$&8z|VudsjJtCQjd z|Ln&@a6VFsOJFXeb210fKE8h90DQx&3w|f6W1xFBh6ncHVM_<~-a%M!UU`nr!{?(P zWA@Nj6}ubyxJ&p0kGAs`eE#9LjD&mvEJ28C5I+En{+_w$x!af4RdWlWq;vjvgay1c zO9)r5gsdUF@+fQt;dSBdWrV37M}HtBucQ8jFj${t6CrQp$!UaG_J<%JlVAk$2hHAr zUFA&){YF#8c2J&YQabpbFOH2PTk={q^t<_{8}c?EF+lx|>vVuq$KI@>JZi}!+X#ol z8RrmUhcZL{_ZQO($iAzM3AzYLr$J{wZ#dYzZ8xD_HQW#5!EW9yyViA-pIqV#X#JC9 z9@)%4++cpwfgi9JwThoGUw{t|=x|m(0R44sN1>l7Qz7V{R^0iC>cy_!g+9a+>(Jlj zBr(h@rbh{Vx+TgX-l)F{`?lU{hCN7^T0{R+yT79Y@rb(6LLZZbSl|h9c7*MaRBl$u10L2yupzBz^|O62L9{h-oW#dx&ZXz>)Ary7gJu? z<7?Sg;LEfqfVx0wQOJ8bqziUQvIFdckGdWDCpB?E-vxX=m@mv=19;d~6oIEw>J;qL ztfv6_%(z&?^~UxtpWVaY<8eqydD=Y@}M~ItIAdZPuZ*v zypG98au{A$9m<)7*Gs!n6e!W-_2b1gcs_|@+xxj83UWMhpAc|?b>(@c%tH8Gb8`w-eq|G`10d97G&Rg8UQ>B1V7;Uj`c|@{G5)JbSvcD zaCis0_~ecPep|N#f6KXicztvpzk~?!jL?}we{f=8at%NtpY;~x58b{C`3~<|;68QpNzw=8FAFwoM|e)3qyu3Q z#g%@9Iv6@||6=D${R!ERU#5LUc$Vq|&JvN>HIg1^Z@^)0g9 zD#qaT3SZU$&~eaAu@m{L`NY5SuIp|4fkEvS33eGYU|9Fu_iXX6L!ttijAWCHHnbFXW|9+fr2 zLHG4gpKcVl(JBQTHVuY+`}!2%D>To9y;+t;Ks=Uw@B8c>6IgJ46^2&f92+*5!Rzon z2i(AqS0x75z2;OdoRiXDHvpp#P{Fxl7mNf9ulMU`hQqnO^K1q9 zvTyeSU#C1DoHL)bt0rvd{17A*gASsY8}K-J=Y0zJ9tF#Tt_9p#cs#f@KZf(( zFkl1y*JwxKTtAJBggigLOMp5j*`RNx<{;>ZHwuHtrLUkB)F&A)bE3Yq_6yKwSvMYZ ze`R6?-id}F&?7kX6Xxcz%7$}Y^Hc-)Xj~6Mo>;;td|ycBy)ew>B9aI5)QSIudAmqO zV9wxdJyz6@>83r*u}HM{I6f}X1$rhG5c1n7{n>-p^M?Cgwui5JL-exw5_mdvqWG`pA-x!+uguio)am&?{A# zA4i25bm?tsfPL;l9L(KEFAdlGzT8Xbf1z^k`$K&L9H5W3nHTn+s__Npv}7CwJ1aLG z`e2rH3~V9=wJP}eg`2{(K-_S6@%<{hX*G|4Fz`ZItzJt`ct%!#Rmh z#)Z7+9Ng?^?=ugM!t-Wv(_PR@D&Y?K76v__i%Db_`lm(5K%8n*8tQB796`s(fDQO- zwUc7#~B@mdF)fgq3+eAi%?h4 znFzM9;9)p7%EDss`Lpvz30zNiN?w@zp>#X&szyyhoo{_RyvPP7w=(0pJ;q@&}BCi4|}cNya0a8h%exOa_<@JA+W6pcn{2{gWjmO z1Yq|T`@?4lC1^TDIA%ea6Sq_4&^<*5ddi*r>Tl~fb zkE8V#2JnAU*_-dn6(X<)*=6^xzg`Z^;XwNf^y$AR0nDMU2mTX31z|sdDNo`1z-jCl z!0$1`3VRY;j|RPcA4TBtpYJXN`!*WYfUh?qg|eZK@>n4t?g>MfBQvT6cv8K-KplZ7 zC-9TMi04CJ$A^<~iz5^z8HD?>S843C=<`}EruE)AzGww~FU2@OKa2>|L0>K*`}|a;7D9KCavg-0U)%K&9+|m(7-330I}Ji_mEemA z>#Cw5PXu321lfa+j!7ZZk9t{y^g1@)szaE1ld1}#UBlZpgskR#?+{v7`hP@Nq2~*E zgmsKf$bRU1s2XAERBgVh9&)t#@bdJ8N5|jcX=10DgS$gKz4u}iVVCZ?VT36ad=m&ax#<9X7qpgKTLiF7PIwJEOitPYG9S=^ecYl@1fH|3A~3J{#Tno~el8iXI*T3j z))7)cyh$Ml`UElk1U+x8*+8cuNe9HAvPOZPBiQ)BtHyI3^n5nP2K(XNNSKq+AOm<~ zZhnKh9+4NYS4^J*@DG(82mOObPZ;9t&etSWzWWQ0Ffi)b-vB=J`~kQ%c^=|o%(Q@y z6LpPI-az;`V7pZU}^ zvLJuih#3&K@dU)p^f@5E=r#q|eO$s<5s&HWS@0ia;fA?pK375i?BsPoi$ndO!{QbZ z=)-eg176azZ@_*)?gVwX<%_^;*=Yb6(?WU;@#m)O?eDpVx*4*IZ}&jmb=7>Rb5iGm z{(d+_zwXp`sH5g8J|w7U)YYzXHX!eX*5*k2^XE z>eR~Q!7egpfO;GAccAa%=~=)iNh9}++WNQCV6BVAsonHwL$21xDv3G zz{?ETeu|Cy2xo?HE+M=>vSxvhc!B5!LMOxH;BU_2Hb%BWI2F__UZVy6RHv_(k>7~mI3l#YsiE+8Ijc!<(;3Xw2fcUre5U{ySHDLbJ={s5| zZ=%Ku_W6ux$`IM@T{953wK@rCLH-8jv}hCodqJNSc-+-DLC51&&x@!oYAPS%%vFVO zJsj^XL%e-H$r8nzzWBp_>;&aO=Xk3s@a&wkg+29`oC2L>fhk}sRvW^+xI9HrXN;{2 zb8TC1LOu5mGxX^=@B?@@eU3pr`}zi4ueY>&_QER<&~-!I4tNqZn_<77;>BU!oHj$a zo?!+I;15b=vPOFKN1UM#LyqsB-INXeSIzCAj)wRn@P(!6LVqdUAkgFY@;zWm$3^hd z-!=hV9{$5H*V(jUsN=k`0sfz+?_p05NSh&^J!c5^HO||hhoN`_@_$;Df{vM-cUDMW z&uT7Qw*!*gz@twT3jL~7p1?UTZj=^Bc?Vxuo<`_bmZ*ua&|na*SA3iV_}e6Rq>*1z zvq=V_;e-&Ji_NK8ZDfb1gq;VxcR(58ua99$2utofS3`KJsY@No+=e_d zwG`kEJ;MZ{^Y>m{TEz7Up)II;@KN7V<|xp4of(qsWf^beIbv!EuY@ z2)A-VcoD|n3h^Usw&&wUnCL4Gab3kpPGpfkoW6uF9)(`Hl%8IxSUm;7R|c2z{^Q2Z4Y6X$1H&>T{qj^tKZ4*?hhS{KoXf5ZBT61YNhH zB?V9);ff<-2uV*=G9&b6;*>zhOV2BWu!jd9`n+LZV@I|WFU?7WHz>yW5JnGmKwK^G z1oZnje+qE=WM3y`Cub_s8g?-*3N5QOfRz zKnL%4t=%T56tSaj=r1x*1@fVF?7o3xj}RLzWlt9h?7czCUM)CLJt{(PyYJBlU?TsY z5G3rrLwu0 zF`y26P6+?GfO`Tku#xz^L%UavWKIR3rA^ z0$_4rMZVuEQ5<%H97qJx3jiPNhX0xQd!Hx`jy3S^szlPD$*#OV+JEas?NAg2_NWo# zu7&(40RG=LWbCEEM)&BTaJS}n88U$lJbyO-+qKKQHzlHlyuCJ13yt^sqIIICDC_rH zz(AVd&+m7rZja&j2fN9C?7d6!UuEnLiT3)37pNhOx}f^s)9x9&_J7q4L?8!h{Eq}w zwRZ@S>rWI^?>c~U*SR+UD%-1t5Xwi6Jwa$nbPfJN|GUdSYS1-A1?b&BVRuP?+=y%U zKR6$V7BT;+Mp?)Q<$K1TLSO?9l(I+u51Ks>FhftI5O@%x5C2cR!Nf4;Ue~=#2uk+k z?k4O`hNj(<^II4i7tM|QNG$C4cM1&pdm5DUd%GwTk?rL}06f63_wM%=Q3~n?9J^Ox zZ`a^N9TCm%p3n+%QU3nh{s#6pu)l%*4eW1Ve*^m)*x$hZ2KG0wzk&S?>~COy1N$4; z-@yI`_BXJ~COy1N$4;-@yI`_BXJ|YULlhBdukzg0+={B_++veoD5X*86R*-We@4$V-U!)tJzf%o_XM@ z#mtQTP{9Lh_qQp>3vnL8^k7cFVZ$Y#0fr#vX*r=F3{Na}4}3yQ43(;k2MQQuRZld$#&>&5e$HXGr{mpaYO@vjl@yuH6)mT`V9;6`{4WuR>4}!2fGzjqpUSZ&1 z7|X_Ed0~*z9Ax%UCS~=+!IxFShz*;>BeOPOO0KtX*bco}6inABu%U5>+bC_Nr0A9M z&y??SaQ!@L8ZglZw~VU6E-oN2Lm!A?VPK4^g6nVJW!U7JfdTZSOX$5GcL9V*WBXYI<+}`OYO>O!+>Q43OBVo zBznAL()rm}HM^h9*?4^||4LK-c2cPBSb~YFjg8X{tD7c{X3PpVZe6uEakO&T{m{YD z-pbU;(d=E;56W^v`-ZHOUU-+Ydz!9kVjG)Zb+MP@xs-8dSn)4%F4Fy`)?j8BcDz8yW;<-i@S^fB0@E8@9Cy!^M@tcrCT7@q)+iUlp!OOv9?VnqF>{geL#eSc*&3;4OcLwS5kuw`s`f-~r9OfUPoAm-JU1hBQMbq4ofn7+n zzb$o301d5kxc@h`o99YhlJ00$IpBtDoyJL!H79)7!7}P|T~I{Kqr~$m{_;|phkJsj zuc&EiLkot?>j?hsY`Z%eYw7N!`JM%DW4y6(;vg0T-rH6I) zmqfSjfsej5f%hxK99P&*kxqs;yAIlC*NeE{&hR|>h=8=D^*j;HEdG6a)3D*Z4OUr$ zACoih3kSc>&ic5t_kJd;C)HKycRz;D*4BTTVW8ZV)#t6xXT?z~V*0V~9H-*8zmBH; zsGY5I@62nD`{sRtt~uvBSsY(*W}drinD=24?1mb)szz^x=Qj(3jYX-eYKgm+Ed3;m zIQoo~!!UJhA6VTtRZ=E0TzvFq;_O4ZD>RZ8n33usyT3uwKg8BG((c*1F{}OZsHw*l zN`LaK7mp%Wo?DT&k?HzhIH)(g(rIgKIbEh|^}?(FeE`QX8gd>xMej>y-=|V>#@dy; zS-)V&s@-pseso@Wyi8}pc912lP5SC%;EboeJQ>0_E@Abu?}H= z(W(1gXDY9~wpy`F7^L-5$rV5DIrk8=o`e3PxB)Ad6Ws$*r_IX1YfUE=d>vVd$hzIM zZlw0<@Gcq~jx7jsC^@a=oVxoeE%JzgN%@lJthf*ESdX02i^Uc4OFDUC-R|kfM%8=G z8+zMZu0^h&w3j=SC)4cP-#S(F!k^k$^ulq&W9Oz6!YuFFXDkP7@ajJ55!J$=Sg#AB z$=k}l&o zFt782T7nTPwSb>oWzyKmt+_=IKJP1;&?&%5h3k;`GmKbe-!$tSeN z549v*+_Kr&z9h%{If@v)i5v`*R~Df=bI#q?Ot>*gG5`6PAFrRlDn9Q^vuU!)!iJ|i zXU>UeICd*D*UaY^csx+<%}iU{Fn*+cvY(yjc?MUMTM~J$KykSlk6fwJt)Gz}pW)87 z)={=qYaUMM(q#=IAWWsLW1zK`Ao#)fFdwUL#!rvm;X?J|#0AYh-8#GZ4gx1nqxqLR zO{Ok{-nsl=Cu~MF+D=;>{c4+DPx!w0X-JMuNd)z*QRFYX-euLro#s+G4(gcZr zEWz%q?8pyiIFh=}@7_*Zik(Usw%ZESDi`F$#W*;t{?Mn>wYQ3jb|^sZPEguP<$(|D zSL<6yF-}RZ(d=NodsD3cqoCb%z(iQ1?88)398bcXo;V*ficOJYf?xV1ug}QhWr<(^ za_O*HK>*pDRz>Wu*vEs~oMuu|GEc}&#%>bWYSeGAsf4_>p?vZ~wC+tw<-zsjux{_1 z7}e0#{A8c$p2lXcwd`lZc3IJ){x0oR4MqM2mW%?r9(RO5-=ZA$QX9B7cf+@Grf( zwYTgJZ4DQk`?+J6)%m-YaTP+XRcEdT%VOQv&LDB5JrlQdQS98pwT$bMd`IJ~Np~#q zafYcTm5bz_DdXI=s~7C$$m}Unf4szy_qb-`W0`zGC7aZtiGuaXUBy74Eu>$84_<3{Wq~>sf4>r>C3Y? zhn`N}{QA`3>oeDrx3DQbl#L8fE7dpMxM!-Dr%5AZO)stVMtn+F_oWQ}eEFT*J@>ZA z&WEpLt*=qow^)ibG*$shOh3DTjQOz=@13N(2J*Hhhx7UU=wim+HPalQ_CL0!c&bfvg-We zkAFC~TCa8PYC+Snb|35x1#8LWd+fhl-;yYM#5vNw4-$QN_i*u%%MM2N58En)>dBif zNa%zWe>reT+&iee@4ftti1jFl#mGL@W&v7o^= z+yuq9Rmm6E_^U(3Vr4szW8L^UMucScUPWDP&K{C zfH*l(=Q@GpPtz>3o3)`Xp>~dvM$JB{m-y7O@jZ(-ZT(g2Qiy~n-aJhoj|%IMK8E>L z?(rv`$aOa=xy+zltzR62cdif0((O~Pn4C1sLZu%zbu z2ICTYaLxy#Lu~e*_>;fzO0cxHy8yR&Zu+S zY@XDu4RN@8T%{6ogGkV)GF4tlqT8HkSdQS>k=Wn`54mh}8jhIm77@Pi2(#->oy=n6 zP4x1()ty?33Y}JuryKOUGk0o+?wrh0l$S5E?Z?TVb_>2GdSa4Q+rMvgDWHvRnKHmS zI*H}}hq~eP9}a6fgP+UI$V;&6?N!J~bb@IoGPUKnP2P))U{2;dZXnOP&qH3!5T|E- zVXM);xyE4iQ6-~Hq;$SHZx#8oQh$vTu~PFL9gUZ91m6(oItj*`D4aY>BIM;|Pt)m# z>E6escsBjReE;Ypb*59;!IGO(!Y4C^A2!g?<}*v3Qi}R9Sut}xp0Yl9(R5XMr<@q$ zbIjxm1)3`ZUUQ#L$#k-tHEunvvCo;I?YU^ueLixSj6AJUjZEVHO5%(TmYjG31>xaa zcqf+nifn?7x{u}_BzC_gmUhMMmLrp<)s;YutpXm|VTz$B`nz42&o`w$BpDFsonhfG z3=8?Z$d7?VWlU41_pH5?N9?kMiN7Ad)V4L1`qlf4E-#-=P6vECnCFd~K^Ar+`QXow z_fs54+T$xs@J8%5UyUn2NvpkWZl~>V-SIegn|t(XD7UF%igomQ-)H_BzajmWq^nik zHAR~2?=sWt(-$YtNxKOe5qQl#JGzp?_XV$&CF@>Pe>53Y?oPl*sIN_3tWlPI{RuDY z3SS2%J*i?h%M5$X?Fu2TADA&;TCvLca<4E22Y+G3v0yh#eS0tZn+d0;Lq?L&ecv?P z^_?}p2GkFN{D#RSRg4OMlr&Egqvu`dZpIng=z>|#Jy2K!5A?lvJ z9o#Ks5cSo{Dd%uU7W>4!|jxRZr;H~TaVmd+2c}MK! zOOzJ)jUrmB6U;Me?HXfLLd@F3YSBL`91f+%zZq2u?R0da=hwnoke*CRe}Dfn$pO zufj=!ts!y;UE*^xyj7W&ax{$@8VZNc=_F{&eVdUZ!*}vOsQUDp`MD&{TFP7Pir;4& z*`(-g$kL>0+UZ3`GVjjULVtv%3C`5s_Luw{v^~`4}{w7 zuX>6_C{rKhvFaAoB>$w&nJeJzS3Vz2Y7m)cqi4xT>7u}vp&0#+@>G#d^V@{&cBzVR zIfX|eo;U7S*guca{_aRlcjkc*C$?{0iqlOQ=O`wv_cUF{!kBmr?ua~|w0lf?C`)~* z#Z-IVN8~lz$n%Q%uy_eh=Fs&nF1ivk*r|2yI;%Sn1 zxL`eCZ|}z!b!m%$|02VBnOY=cka$^$dcdz&B)Bfe#ozrrn8dlPCbFTkl&K@)q+}NxJXKj zE+MH5F}5t-!J@&clsvhNiXlJe4YSiNsZA5V3Yi#0+_M%qm-A&sUmRf~ilP|wb z`>w%o$MmzbmqOMl-&u*nKXtjzx_6Tg^kh%hUlT9QYN%=!{Sbpu%lY_1V7S29>lmH4 z8yGXKu`q2P&zL&%3vR1b@N4GM9rY>X5 zFWy^W!%eHAzz%aV0lDiRIGb;@Mr(Suym_f}fi;N=$Ldu_u0WKI4XY|eiOJOP=_!xd z!*)r}Sujd@$QP{cx(Pd_%<6f+&pNRcaoR}ZV4!EWp72G1*$~2&I=g(aEKI@m47v`@ zfL8`$M_PF2*z!;CztXvuRyAkClG|J+Nq(mxFxVI0`Msj#db&ZaHH#{Lpw##C3wm;! zpKR}Wt2xh0ElK2WdZ|y%YSuklNb@*#r~KWgq1ab0FZn!LNwn={lxGAwjTqByxj145 zXC4|6+qjCmb_n^0UkrWZq1K*paC@bccKBe#@h?WlVudFAyA#@t-bT z12i7{HJ3Q%6;&5MHCj2-Ga{Ft{HW{ERo=R|gys={=iq>u;N!k6H~Bvv z7O^T0A=W?EkfKV?{{BS=?{|zl6c|DV4>7$T`3Aju$E|kpm%pjfkh8e&6GTjbkv|Rn&hr` zda>OsksUE|D4s&^K!Hm@-b(kcwMvZ6Dz0lSTyLI*&%{%YB%k~E2;!f*bbp>cUmLCGJx`RicX#;wHwQhl8-c{=@dcU|$;T3G^%612y8nm^ZDyf9B$ z_en{jh$~IZHG7^SQ0635^_f&RQ9!JzD<_ukjB=yzki2lOlI8r-vsqKM&n64q(xod6 z70E-{#mc$w(I#u&yE0-YM7v6{a3gy{BD{LeD1viN(f6sk_m~((KU-Gf$V8x0Dux?h zjQ&UIo40oanq6xnHAmiV<+(hyPE(z&iYd)Lr*Af}jn_?jwX^$NpR{wB$n?bYtZ>*D znwZ!86H3mLs^d+ar&nqx+U2I=Yh@H}Jai4saLM~N<&n7|Fje%8UJCmWcE0$JZgHD~ zkz*mrcel;ypTF}@I;_Jg$*FGf(o%FLcH2!#XL(qj!LP`Y@rO2#RmA&DE-UOO(M7C` zk1w+)(*B@Iefrv_ZjfA-gf1{QMDSPv*H@8=aYCu0Zz7C~@{#84Saj33tkrz9jfoG& z1QL3@>pVx9NcHa8s!Wh@hsr6HxZXSC#>1H1&iV%WMu+0f8`uXv#jTBUPOh1FS`Lzn zXHdvgE`&>;H*IS3d2v4QqKk?57#qI-)ce@ukMH_FRAqW|g?^q@#f^>fm(hEou+fQA zMu#uUykLvEHu!w#QezWK{6K=xL>c>=r*~bIXHp!(@^}?L#X;P7=RgzU^QE?Uf zfzL}n(6cQ0h}+HFBt*Hd_NHOW*9#RI)Iu+m^#aD_7hU@KE;IDqVYx7(a-Zu^kX|-z zr-HQ#S(35!%Chi%&I za%{mj0~~pC|B2Z=~MsMb`JTr zgfqRg-rldgNXZvtZ7K6DIpF7#*AcTKX2@1YLU7)O@PYT<|8FQeleb zT><5doQ6@soZFqL?nh~K({oD;pIR)u8u7q($`5tcJ5kY?_3$d)?f4-3LA9wwAKeWa zI?F_3Px{JoGkzcU+qIr^0%^ToOf7>RZjTpyE2b8W)Nj2E)odN7dNXj~#gnLfy^l#J zyuZBj3Ri8e_6Y`zSp8YIyf?J6H`|C2}=Os zG+C{I$CQd9Zi79$O^eBP>C)i^_k;vW1}^)l6Cztq>$qmbo1)IgT@9jr-*qQZt6~k=}FXQmlifO_CT7Slcu_2cJC&usUm9|)9ek{B z=1Y%6W@9~eAAcg?Kc>Pi&}K(tcWC<8c8lG+%~?NwgU2R9F+$Wb;ik2viaWK1%*)b= z+bmd@w!WS*q)ewAoapKkP9SmgxF`Is#D=hQFg}8*gyRXO;G+HN#;F{FORu<;M`?RF zenvYwN5AU(&|Hvgn7As+T=y8WDwBrsC_TLezf;_*sPd~+?xAfv&UwYqXM|_h7Uk2J zjWqcV-(6BXpF>0=crAT(nAIpiU%tuMG^NW*)!4O0LdwB(lc~l;llwE*+_L@8tMn~} z^Yfu9_H#4MItE=;XImw;)qgch-4oc73NMyqx=W-*5^z9w=uTm9&a6h0;CkNS%LK&#;KPa0bV&BX06AGwZ2FJTBEO<*? z%jL%f<0AiFaRlPU>4L}kZ+~=LjofY+W=~ELkbt2;Lf*VYUz?J(ZrZA^x-fO-JMXJL4I3==V0v*Thjfw+Y(gc27o7C`joXw=5u-&bQoRF zQVJKcwbPeVcC@15pcL#V%!TIqEH0wIrey1*C4h|yA5&%3L}WE1#H09o>OW$TPaEfCIeF>6ebhy#6|-sml~K=+%PMcpb4ir=d@nCfgKc$LFcj;C{(#-KS?w-KuH{N=mJ0u>*kwhlZ$(rol3WK&K13sj z_L}ni!MKk1Ouen_HIgQGQ`vU{bGhB4Anc^kl0-V`HAZ&Tp^OTY0b&$D?rN(eTV}8= zg0$`Cwi4Le*Om1>b`@u$rayK0PdM18mR!7QE}`Ccg3O~k$JH1nvRx>l$M(!lhu-3(xgHB-QEqrofBhwqzjRk5l*xy^RTcisS*qBnfqil39UcBwGku=><|@ zR4an{Agm&{J1JG>#y6)w@?SH}{EGu~tNO@NGnx8n2kV`~uia$Y^F!X~M*6@NgWOz} z>eVsBh|wuLIHMYmGY?J1^X}ql<9Wds+f7YxygkTD079@&l6 zw1UBIVw`KR+#$>FJB{yA`tlsD7SwOfGj;%3*b%h0`dp)C0Tk+kP&eo<(^+_o%t(?N zL^CbFZW7-d*_0z)rm`j!aOCd{U%up#nIDidDh{u3hHW$VdkOq(hfI6<854N zb%W}(hxx?{wQ6pEkrn?EL-)||Hpdb*-uvkbtM%;(v0OPY&aeNV8`-jyO!b&d>K$sk zrJq)NZRx0nyaikamsD_7Q>3bWR~sI(C_@-0Si3t!soBJJ_;e>*XIp)oSH~Q zrFYf}uwZ3}G!UTRmT`|6cKy2iCdpHDAfe77t}wR$fV<_B#DCeXQ;7a}VHAF39HU!)v;WFopRGKVf zY-QR@PjO{<`h;!c3C42Q6qiZD3)F?~yY?+}eprND7IY{cUHaUhT==)s|5P_S&p z{YD43^P^8}Zrwxxs!#9eLD^(9vfuqvTGrZqH3E=|W9%mt)0n(7*BIuHh-{t>neF)? zrWZvmE3kXRhV2O|X=W+h;ESU03de;+qVbAy??0EJWgLtJ7B~ma;N=Neov)@)Xadzs zOb|C(N(_fn1aYq2kV*y{(~ZlbT!D`uf^~`D6yH)wfXxaxT>yB^=M|kt7EJjfH=4^= zk)I~_&pQ1svHte2obMu#P{aLi!A}phzqdaAToJ)QEPdw?cDdrFc7pXfRIn6edGsBF zVy{7>KmYMJAj|T)vV^w$tJWa{k3I$WMdNNSJw!Cyx(+4YiWSr;Ao3I%ap7MAT+|Hn zB^;#@cdfJ3cDNPvH&EY=m7ej;Xgf1Sn*X5ZrYsmXTM{vUFnr0$vboFuxDzRta8(` z8tqvQ|3r0nB@Iy{P-8MWPmwzc87jl_UPBWMAuKV=2C75=2s5gOF1Yb#`wZKpT~>%Hp(J>Ao%rB1*eyQ=xox9N^4co3qYohb0g+0jok; zI;myrKUr-@h%K6Jdg{JhLCSuL1YGCItqzx0-*$9&hBk6fDc{?Yl;djc{Vw3S9gyeN zYT@G)`Wq-WKOY4g>qWjuM9>M}xH*Y#PTLqcn>q0=QFbnQXxzOEyATL=ri5_MDWhbJ$1w_f$lAs7+CKG3Kf66x^lHywpCPMbDx!{MsX zx-z+WBor~ZnMlTZLE>23)I?hCydpC`Y944__XpcDPheqMDD-z@tI*ybz2eyfa@LFP z*4M(H!a|PlLQ#-PbvU;|iRZ=^+HoUv`M2bdT@lsBW2h^V7I8mJN*$2-!)|n5pAZ;2d;wetaOFl_H;y4FFs6+{FaHYa$ ze%dS*Rr&R>OW{pFfRlzjM+AgL?!lMgPw_-7+K$uWrY)db1gFvE9rI0vSVP+pHSM1q zmGX}76%`XKJ!(0KT+Vv2(9KXX9+!w4nsrAJiPq3bj~d732$r(8A17OrZug5|70NM;EV8sr7O^ za7SDFJ=uiYRE~z?CP-$}GbRgmrxEFPbnWMb34-$JF4e1$O1CmB)EhW|VFP{#67Ys3 zhB7sLi!K_t4wh?oTmqRSpl?q8%dbQDD0mwuk(*{i+(i=;53@Y)*#-W{S^q*gX9|F* zlF@!sN~Al87+9dm|7yx1Px~gu=1$3dNKtFvN=E?HJuzeX=niv4~{0VtF;M7T>WG{=Y$Wds27Lri|2pt?w7yMq&`Z~ zJs8{BsYgEGf$FSG4Ea;YX z81fmQvQU~q}Y2ecr zX>26C*+P~jRQyL6(w)zyXtrCLka=E@{kPLfR+iR!9<%?1DlT| z$BWhFmEb$4hHqv2m0t(?(>Uq1IR+pgajj7|>hyb4x0uIJDcg2a2l3KM$wD<0ewFr&Lp$I$2Rw7 z&7|L;8>w)32KLimm4;drtr! z^uOz>?}{o~kzXg$&adxO*xDf0=t#8mBlFjGX^P*v7Fw24x^UjC`5{g->U9FLSu0)GHs_#O%tt%=L4wcHb4C>hm z2a50N12ovrYq8g*<+cC-oeofZ?j~|$KS>UmG&)?RgDvKto{wV@8Hqbfxbvr-90b$$ zj-Uj0tO(4F_3Bk5bi3*^Gw#k^QieVy6k$CPJflAS>1%p;k{9epJGO;d+SD;qxQOF-OvmL$%prh521115{n+YrfXIqy^;I+Pe zx8;q!+b|xH$d;n;yAR#e!N(0+6!D;!;wpcroDHycA<_XfXT-p3f|zNj7wdfLuRTy& zyXu5Y2k?u8Y7^OCmT-=|M4Coao|0#7^WrwinIK?x@;8F>RU^Z*%8+R3!SCSltj*Aife7X)lygvdy=l>q3gsHx6kTJlvU9hs zmW87DkmvqRobYd`^Fl$DirQ~$Q;>W3PZuC(Z#!j8lr8`T!a-SKi_{QtXZOlIbD^>+ zQ{P1lbg0@u0SX(11v`nTrp|s2bC02rmT{{m#9%M>^eo~5Gi_45i_$wHF}X2KswS4V zHA&hJZaj?LB}DB3bi|tSv^Cw}PLoUs7@+mR(dED^M5Qy1>~Aj#ATsS#?lo~6gjj>k zztYnsV63NgRNGkEnT5@^1Yzh$?5keI^}EGsph)%RYi(}K#K)sDaWO)Hyer>&P(5B% zNu7e%>Eg(zy)r@UD*CFZkA59Nx<-EktUyesZ9>S83L5YRN7u2rH%k;>|7R{A)3uY8 zisqs8Sls{=utn~tnN&VCh7Iq=&Wxbgl4xhN%fY+b!FA7oR!Tt{KhCm>Q)tpu%=Rxc zlj4X#BtQEHvIiPtBb+i{P$-jrb+qMB0mKZ--3DjP9e+>O6;%CW+9KY<>cn}703r?s z+03OpO&F~p*}cLv z2<&jn1wDWTbexLv*LGp&2=wxqB*=+mB66%V5Zaha7rln!mWR9=rMxNt4yI>=Ooqgg zns8A%T=VR14qcVq_@Qf^o^;KM--%F+Kb4=04|hP+BOW?Ij5__8dbJnYI0yuy%3>OT dZQq;8!&3nW4jB2i<3PtZL)wf*nnhi--AhG7%liNT literal 0 HcmV?d00001 diff --git a/test_data/sync_step.json b/test_data/sync_step.json index d1c2a4d0..e2b2f7ef 100644 --- a/test_data/sync_step.json +++ b/test_data/sync_step.json @@ -1 +1 @@ -{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_header":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xcd5d49d29ad0abd5e1c0fcf005cfeea276c6e5e7fa1c0c8d95586d9f627224e0","body_root":"0xe86677af53ed227df66c436b53db489ecd6902a64dab5c4c8f11a6d8216a043c"},"finalized_header":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0xa8e00321e4ee412c32c1a89630bcda4986235eea915d5942a7f8367c66b148b3"},"signature_compressed":[131,152,18,90,228,51,123,244,175,45,120,91,223,59,177,46,232,193,76,50,81,190,195,200,58,7,78,159,35,24,90,90,136,107,232,1,78,164,248,199,19,212,34,216,27,62,178,6,176,4,130,67,240,196,10,165,30,252,60,247,192,129,211,71,132,168,166,184,169,151,29,58,255,128,226,153,14,60,91,215,146,242,130,80,231,18,52,15,98,149,242,207,209,244,101,179],"execution_merkle_branch":[[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[245,165,253,66,209,106,32,48,39,152,239,110,211,9,151,155,67,0,61,35,32,217,240,232,234,152,49,169,39,89,251,75],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[178,165,49,157,145,202,135,120,27,215,64,35,221,36,115,209,250,225,110,215,43,114,138,189,248,17,121,71,21,86,15,161]],"execution_state_root":[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],"finality_merkle_branch":[[205,144,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[210,239,123,158,105,42,164,24,236,9,141,132,203,58,120,172,115,94,93,234,38,57,181,39,5,29,136,111,154,186,115,97],[250,87,193,55,236,202,20,180,197,217,3,227,124,0,129,210,30,148,147,61,148,235,160,40,242,105,191,40,228,217,135,58],[52,75,219,157,104,241,251,211,46,166,228,143,30,15,44,220,21,206,126,196,0,38,188,9,200,168,209,203,93,29,106,101],[81,24,186,14,116,191,200,211,42,214,198,149,240,60,236,64,38,77,49,191,227,223,76,132,1,124,6,234,205,228,165,74]],"beacon_state_root":[205,93,73,210,154,208,171,213,225,192,252,240,5,207,238,162,118,198,229,231,250,28,12,141,149,88,109,159,98,114,36,224]} \ No newline at end of file +{"target_epoch":25,"pubkeys_uncompressed":[[245,241,81,229,47,30,138,91,9,228,198,240,178,95,177,52,99,212,66,112,159,33,168,79,152,220,183,106,121,83,170,82,37,193,46,77,213,36,169,95,155,232,223,223,160,98,28,2,82,173,234,23,122,220,206,114,95,139,71,208,178,115,112,87,42,214,197,99,129,34,202,184,32,16,60,155,203,179,35,153,57,222,96,180,129,76,17,118,49,216,41,99,167,215,144,10],[8,222,219,53,149,240,234,115,131,225,1,231,113,165,54,70,71,139,127,73,101,162,160,171,150,20,87,5,41,131,40,49,74,20,157,1,136,30,205,172,78,194,146,210,69,167,202,6,79,153,211,216,172,195,240,185,231,49,78,201,116,43,254,181,158,58,117,206,79,220,87,10,143,162,75,131,112,42,164,76,127,195,28,80,53,70,45,130,113,147,189,119,189,77,147,12],[192,86,238,207,62,64,21,118,136,174,125,174,174,219,186,172,27,42,223,103,247,201,201,197,85,224,165,11,123,19,26,41,139,15,5,90,106,23,123,249,127,205,54,172,66,136,254,24,33,177,69,155,102,69,53,61,62,42,61,211,46,182,115,61,46,221,225,4,126,145,154,51,7,108,94,56,113,228,249,107,73,36,240,5,10,179,181,2,204,142,181,12,59,32,182,11],[18,72,135,107,133,99,179,171,126,20,141,239,51,111,236,157,28,141,123,206,165,148,198,21,226,239,214,6,173,159,68,98,71,16,10,19,56,8,52,50,45,22,111,17,159,70,250,8,246,139,31,218,2,172,42,169,21,29,11,127,55,47,210,71,243,201,243,223,81,40,101,208,209,239,169,187,205,87,166,101,120,143,58,75,147,130,202,76,14,167,206,33,225,251,160,22],[162,154,132,214,70,167,209,231,90,35,156,21,205,83,27,185,213,37,124,107,78,21,99,207,42,65,155,152,236,8,34,123,182,230,5,204,243,127,7,200,137,60,1,41,227,110,102,17,227,135,101,86,203,39,35,62,23,30,38,99,120,68,106,85,227,42,106,130,254,132,62,102,66,114,159,31,62,7,34,58,163,254,78,119,234,57,131,22,38,176,143,37,54,87,122,5],[87,207,218,247,29,124,175,174,113,107,105,179,150,124,28,113,14,76,86,84,147,4,225,88,187,179,129,46,141,68,22,132,166,124,198,4,238,234,51,38,32,157,204,238,191,99,71,0,186,114,174,227,179,28,15,223,112,197,35,120,127,152,0,243,81,23,175,188,8,68,150,113,99,242,49,22,158,47,6,79,112,166,55,1,148,150,189,211,195,241,149,105,62,180,157,1],[82,86,63,36,217,202,50,146,218,52,177,158,176,34,4,37,116,158,219,100,128,70,41,198,145,54,28,30,150,50,69,86,231,39,221,199,241,129,252,246,85,65,111,245,26,155,113,7,76,132,183,20,176,70,96,237,198,202,16,223,15,208,70,94,81,218,79,182,155,48,134,253,62,172,127,91,11,11,16,144,183,116,84,109,32,3,106,31,42,171,215,240,9,110,44,21],[238,112,71,182,174,164,77,101,234,245,172,34,228,172,230,225,15,29,197,197,6,211,152,127,213,57,150,218,95,69,185,94,72,123,29,241,10,33,191,71,244,59,113,57,160,105,64,21,89,216,46,223,47,197,119,171,104,227,173,11,141,76,47,8,3,211,189,123,203,191,29,183,64,238,86,236,255,156,30,121,185,58,118,130,221,87,3,29,45,197,188,8,138,145,191,21],[178,243,83,234,179,46,225,215,96,190,234,118,246,12,68,56,101,197,28,119,30,209,83,87,175,108,39,8,47,109,250,110,203,25,88,111,157,45,60,9,37,193,70,197,32,94,6,21,99,188,179,107,238,154,225,110,124,182,138,95,161,195,168,207,255,37,176,90,38,153,113,197,123,66,201,43,4,6,172,219,218,80,118,180,43,125,55,141,212,93,57,46,116,166,221,10],[225,155,253,88,194,98,129,13,30,246,100,101,220,131,198,25,61,237,227,11,224,152,167,98,78,165,124,144,188,43,252,193,147,65,1,51,49,239,124,110,37,114,87,2,80,24,190,10,202,131,186,111,105,230,184,134,14,235,190,109,176,70,64,112,61,105,122,109,14,2,89,237,246,16,103,187,41,132,65,23,118,215,197,141,191,86,248,99,205,167,181,75,130,31,97,17],[168,135,178,1,104,184,1,99,25,134,238,3,219,89,154,255,90,61,38,206,7,67,120,211,23,214,46,11,81,40,126,131,254,126,114,156,246,125,143,176,242,100,106,103,235,243,227,11,231,195,253,97,130,70,147,227,174,37,62,102,157,173,148,211,89,216,216,138,56,188,6,219,108,187,222,222,218,1,179,211,184,151,244,167,120,85,115,49,142,131,99,189,75,172,28,22],[12,216,153,162,127,196,36,165,71,96,109,153,17,157,14,235,21,147,35,247,120,114,237,137,249,141,245,17,30,193,189,119,251,207,67,236,121,56,192,10,128,190,95,225,213,206,116,10,32,64,76,41,191,140,182,80,34,39,113,110,15,141,171,13,68,116,41,109,42,106,231,113,7,65,167,100,3,180,158,44,135,139,114,83,91,119,128,43,107,16,128,188,103,143,229,5],[246,30,57,239,188,200,223,241,34,33,28,226,5,174,210,6,221,34,157,205,143,41,19,197,61,122,84,109,76,4,40,94,170,165,230,27,73,150,183,231,18,4,222,17,37,71,45,15,190,105,15,232,206,201,235,42,200,39,232,19,173,128,128,249,47,233,118,195,45,216,16,61,53,40,22,101,0,146,61,225,45,109,133,78,4,50,246,56,18,117,233,214,157,43,246,3],[58,66,169,60,18,247,11,189,107,192,36,165,175,223,84,206,165,70,151,74,143,39,164,145,43,152,6,232,38,149,115,22,164,83,248,199,75,98,79,250,99,174,35,33,187,125,136,8,54,188,124,178,109,106,52,139,239,119,87,254,14,99,188,120,143,111,163,254,62,177,14,11,74,99,46,204,243,56,140,28,190,247,242,53,149,177,129,194,147,79,50,164,236,107,246,20],[142,35,59,46,82,209,193,200,96,127,156,40,215,137,143,154,67,204,72,238,140,109,65,62,25,146,52,57,67,114,144,5,108,238,163,83,118,86,145,40,18,208,201,15,48,78,172,25,127,224,88,46,183,80,4,207,109,189,166,50,159,40,44,225,63,227,26,108,161,69,181,75,101,248,121,206,146,51,52,37,220,33,218,85,236,52,236,142,105,21,82,188,100,24,172,12],[182,76,71,221,10,120,106,141,204,197,240,189,156,187,68,236,213,226,11,87,210,149,102,142,50,31,122,126,115,50,86,3,26,183,183,48,138,161,90,114,217,179,183,221,184,49,255,12,34,40,16,224,103,177,41,9,42,138,39,204,91,77,76,217,251,186,29,48,118,137,222,79,177,127,209,168,52,26,1,73,42,227,178,250,88,34,144,152,120,250,67,248,125,138,11,3],[137,138,120,52,80,223,24,209,19,160,50,135,131,68,221,118,177,175,49,127,70,191,68,100,14,243,30,141,220,81,7,245,166,115,140,76,127,53,30,176,147,218,2,124,22,231,35,11,237,29,59,166,113,177,156,96,101,128,229,191,169,96,212,53,251,140,183,129,52,132,255,151,155,43,146,200,224,139,111,232,141,215,33,68,41,157,218,148,174,229,111,101,67,93,240,18],[91,202,141,223,171,75,240,247,167,105,245,1,162,244,135,221,119,155,133,201,79,142,3,63,245,60,152,151,215,17,177,46,77,2,205,231,139,204,223,95,62,97,72,115,154,19,121,15,132,6,41,123,92,54,38,176,185,245,212,154,89,145,159,119,133,5,120,120,30,167,185,171,179,117,28,252,188,198,218,158,253,243,178,232,117,152,79,208,114,89,90,12,167,203,2,25],[201,58,199,110,106,180,50,111,177,144,163,81,231,183,237,216,123,84,72,53,130,137,147,25,50,227,209,223,226,112,108,229,237,194,142,76,255,204,0,163,189,72,243,34,77,60,215,3,80,198,15,19,180,64,98,242,145,186,93,154,82,165,140,223,80,28,159,203,109,173,98,245,149,111,71,157,5,127,77,255,101,226,125,185,38,1,60,71,145,61,47,139,183,61,59,5],[24,29,157,223,12,89,110,140,99,27,36,222,247,88,7,240,241,167,76,185,203,135,105,159,132,119,8,3,210,189,197,95,240,175,237,241,242,28,110,89,16,49,95,255,117,2,72,11,93,184,23,189,44,205,10,246,143,169,18,88,105,47,235,245,155,94,223,239,169,29,88,25,17,177,145,181,148,198,64,141,4,112,120,60,11,194,47,104,254,59,202,207,119,105,235,25],[244,124,226,76,221,142,61,53,43,60,26,112,250,16,105,89,168,10,240,19,89,130,159,182,200,174,215,231,153,233,173,18,12,65,57,202,1,213,23,103,122,57,116,130,214,68,99,3,230,229,33,12,0,75,46,111,156,249,228,180,44,51,82,109,73,172,198,233,14,142,193,145,58,68,20,13,53,163,234,77,151,65,190,112,61,255,47,117,252,104,136,204,91,221,7,17],[58,243,203,92,56,208,139,22,48,228,97,207,17,246,239,137,50,221,19,106,181,102,226,84,85,2,170,61,60,1,201,229,147,86,137,87,121,113,43,69,139,33,49,167,14,42,205,17,6,102,236,211,0,145,150,253,31,96,225,38,180,97,100,65,84,232,10,87,30,178,156,107,8,156,40,141,1,163,60,135,89,86,133,219,29,190,61,112,154,101,66,254,142,159,168,0],[133,173,102,155,39,237,32,70,71,83,221,124,229,8,230,17,187,70,44,202,139,20,226,147,17,60,183,203,247,186,19,93,252,132,137,38,233,33,60,84,168,156,15,137,199,90,204,24,29,180,136,245,207,51,38,244,147,150,21,36,61,36,11,192,109,1,56,102,237,98,4,173,228,11,78,120,190,255,118,103,240,35,240,213,73,54,248,222,83,208,43,133,130,127,34,11],[198,47,83,19,224,43,18,220,129,12,114,50,47,178,118,193,237,181,249,140,113,33,159,238,117,74,212,117,135,228,210,253,103,218,86,77,22,37,140,178,33,10,135,172,17,89,222,18,144,61,152,33,72,249,203,237,174,42,3,53,149,239,51,4,200,45,58,62,168,8,36,62,43,106,111,221,95,78,118,78,168,9,161,215,149,245,12,248,1,65,206,68,88,80,205,9],[77,221,202,37,130,188,128,160,214,16,26,226,166,116,170,190,169,132,73,129,173,102,24,141,102,95,246,76,106,35,243,56,82,208,57,140,139,201,162,173,146,240,219,55,133,154,191,8,206,243,109,165,8,156,57,111,247,26,69,59,165,15,234,24,200,217,34,146,151,236,6,33,173,215,52,89,35,108,14,50,234,99,150,225,105,249,67,128,253,124,59,116,206,224,107,8],[183,61,63,70,118,65,163,220,169,216,10,232,180,9,10,118,156,31,43,225,137,67,125,177,79,103,119,223,172,183,47,7,149,97,120,73,81,119,22,195,175,162,72,117,117,92,219,0,93,5,154,13,122,164,134,128,11,47,177,124,151,93,72,5,19,67,67,87,155,95,207,156,164,132,126,89,222,148,120,174,166,87,68,56,118,242,59,183,133,229,40,89,247,213,211,24],[141,101,19,41,119,39,5,223,238,60,19,94,6,27,137,171,236,228,14,146,208,154,63,92,72,94,90,26,5,31,150,201,68,205,107,5,255,18,198,170,106,227,235,239,179,57,133,21,204,208,147,54,167,9,151,184,93,123,230,167,153,106,189,241,222,233,54,212,3,80,184,81,217,161,57,117,181,86,86,176,240,243,74,39,25,95,166,150,168,154,55,214,211,110,218,14],[170,212,32,140,29,67,176,155,199,37,127,93,1,73,164,119,254,164,109,181,166,219,233,148,42,212,87,184,0,146,81,195,110,166,136,230,2,1,163,32,39,231,231,183,230,189,63,10,107,206,245,81,147,47,200,68,152,86,102,117,187,57,183,140,97,116,0,184,52,224,154,197,117,169,206,182,182,0,171,143,122,52,202,183,57,191,86,159,96,31,119,28,53,72,206,0],[169,128,3,54,175,183,160,197,120,1,168,181,223,166,5,48,0,50,106,38,239,92,255,84,22,206,158,82,102,70,36,113,40,223,179,206,197,103,162,66,145,230,101,85,74,133,85,9,185,106,182,196,1,4,4,36,130,163,216,204,198,117,117,11,200,133,222,16,181,160,150,88,94,49,93,25,25,173,132,77,146,201,99,143,31,145,34,217,173,86,94,83,132,137,34,3],[46,169,218,149,131,147,89,213,196,98,214,84,145,81,255,32,95,175,37,19,12,204,99,126,235,115,174,199,239,41,101,168,142,12,42,170,223,202,225,135,218,152,135,198,141,214,34,21,236,66,174,78,211,1,46,7,142,204,123,35,159,50,122,5,69,85,195,80,108,178,95,254,62,102,110,6,241,126,66,132,212,146,20,73,204,76,132,81,95,106,218,21,160,148,37,6],[103,3,222,238,88,158,181,138,56,34,34,205,77,130,92,243,172,162,236,111,200,38,32,229,232,49,185,241,45,167,254,138,102,128,194,237,185,52,219,17,124,107,81,187,242,189,8,16,106,171,138,52,124,241,22,118,236,225,9,245,192,221,5,190,140,10,41,164,143,56,43,216,186,193,254,107,248,205,81,91,203,9,154,93,188,84,210,70,115,30,45,30,79,53,243,19],[58,130,151,168,254,195,61,86,71,107,61,227,225,33,86,99,61,152,186,73,229,252,34,221,33,128,95,253,119,90,197,27,176,103,187,23,110,222,135,27,191,51,244,250,162,134,143,16,188,118,9,125,210,148,73,0,130,181,80,205,164,1,56,104,236,160,54,154,73,181,151,165,44,119,11,213,12,73,158,192,90,155,55,26,0,132,115,241,238,32,234,55,249,31,17,24],[1,9,112,120,119,93,15,143,144,94,129,212,18,46,170,91,57,236,161,55,44,248,234,223,114,69,219,118,7,158,47,97,65,198,141,110,126,194,16,54,148,104,234,3,187,156,190,18,86,53,47,85,79,171,93,204,185,240,223,34,162,30,134,207,170,114,18,196,140,128,52,199,222,63,97,73,102,212,247,163,244,95,29,44,82,9,104,194,153,176,121,76,150,176,94,21],[30,20,60,203,234,250,64,185,239,253,106,150,66,13,151,169,158,93,151,9,165,106,158,101,85,111,154,158,152,4,17,177,43,175,221,174,19,17,132,105,83,107,173,152,152,140,73,4,7,65,95,46,143,145,175,131,204,63,252,252,104,45,227,28,59,249,221,208,170,195,221,219,251,46,185,197,251,22,90,174,38,41,180,47,72,77,221,64,115,89,55,249,97,172,236,11],[142,188,211,138,96,251,209,54,171,171,110,181,147,104,57,180,151,0,253,156,55,163,106,184,242,59,83,124,54,231,133,50,77,49,210,184,47,100,135,45,215,48,216,34,148,8,63,4,134,106,255,92,76,25,208,102,108,74,200,38,229,170,142,118,114,44,97,148,105,217,23,127,252,154,40,198,44,46,167,181,110,247,4,195,101,83,79,84,183,147,217,46,10,185,21,5],[229,96,237,160,95,194,59,34,142,111,196,141,176,58,254,28,149,136,8,152,106,78,113,103,157,110,20,186,26,240,41,21,220,149,117,185,233,220,37,56,129,194,201,95,188,206,250,24,165,110,177,196,115,184,131,168,233,95,107,228,30,126,97,209,21,17,251,122,232,47,89,165,231,150,87,222,217,246,8,141,129,217,100,220,44,75,33,190,58,74,225,46,233,241,4,9],[188,171,89,151,203,193,26,33,16,6,19,106,34,71,177,84,119,95,127,106,48,73,218,192,125,229,169,32,124,173,62,107,150,59,178,16,247,158,188,101,166,215,121,126,216,126,32,24,35,235,30,171,97,29,154,221,223,88,241,19,175,72,56,136,216,11,40,250,86,32,5,195,29,182,220,64,181,116,144,115,54,115,23,15,227,226,32,231,177,105,158,53,192,67,153,17],[229,30,244,90,216,24,179,86,183,223,30,154,43,102,241,106,183,101,253,93,143,78,136,51,198,11,212,60,203,139,200,4,158,101,23,227,149,167,205,36,159,82,213,202,130,177,143,3,65,78,35,2,193,157,154,193,27,144,137,196,195,48,241,90,178,41,62,9,34,105,166,150,243,28,58,108,86,157,56,97,80,193,89,5,75,49,78,175,131,145,139,75,26,67,246,12],[251,13,229,251,182,137,108,26,144,40,136,216,107,113,255,40,66,59,5,70,120,175,234,193,177,93,136,0,49,229,38,71,20,105,205,132,204,107,175,92,164,74,166,84,87,118,224,14,185,93,178,63,79,31,70,135,175,123,250,121,7,71,4,15,153,19,214,133,255,30,112,146,108,74,139,152,2,122,249,247,108,45,194,24,254,135,76,89,185,247,28,222,95,11,206,20],[20,32,209,181,25,139,231,159,26,78,79,232,231,170,132,11,219,214,1,100,237,26,46,42,165,121,7,195,3,76,168,94,217,14,93,203,156,63,199,114,63,174,120,11,215,18,122,14,68,24,151,165,166,183,66,23,138,113,44,90,39,117,121,217,107,115,58,145,60,227,33,174,145,108,139,239,38,32,139,57,158,250,117,212,111,49,111,254,211,127,175,120,29,54,91,18],[43,21,154,132,45,163,153,180,7,119,181,227,80,17,81,151,174,31,95,157,104,186,255,232,188,46,108,187,79,0,163,85,238,180,146,17,141,81,124,241,33,168,112,111,174,89,137,19,122,119,76,184,214,161,127,195,38,31,218,135,70,26,5,166,153,28,71,195,159,28,42,142,61,107,12,172,175,90,161,229,62,242,81,182,195,34,27,190,246,119,189,239,17,13,103,13],[178,116,219,167,249,31,253,107,125,87,172,79,243,207,93,175,53,183,76,177,170,63,75,24,29,53,193,24,225,220,159,4,153,159,186,100,250,18,114,129,107,129,220,255,252,140,75,14,206,71,117,32,65,177,81,146,160,10,98,224,139,249,156,249,228,42,36,78,108,246,129,129,54,252,163,45,195,42,229,84,234,222,89,113,1,126,45,196,196,208,195,58,0,138,174,21],[133,104,172,220,246,17,202,91,28,27,20,47,142,100,156,191,42,170,18,177,176,147,181,91,251,97,181,125,251,223,1,73,9,202,24,91,125,174,213,209,197,252,227,208,199,197,157,23,94,156,226,150,149,3,40,100,54,130,215,227,183,175,213,16,45,134,51,220,227,57,159,177,28,233,21,223,20,55,95,207,79,196,224,47,240,28,98,25,223,163,33,251,104,166,66,1],[118,47,163,72,217,163,186,67,72,4,127,8,52,86,130,134,169,110,62,25,152,178,199,249,253,23,95,102,98,100,239,156,132,123,28,39,183,13,100,29,82,68,19,59,249,22,227,4,163,72,201,110,196,190,176,126,195,72,85,80,238,246,22,250,94,50,42,7,178,32,249,187,230,90,199,48,250,193,119,105,87,13,146,74,140,158,31,48,209,131,123,221,148,132,231,4],[237,251,142,235,116,194,193,166,203,51,171,35,5,137,128,99,17,171,135,48,46,197,23,21,216,236,221,201,50,121,36,157,75,143,59,6,142,28,148,101,186,196,143,77,18,90,249,14,24,152,193,203,87,166,122,170,157,218,70,190,86,244,103,58,183,172,29,235,225,101,198,157,121,187,134,63,61,139,171,15,202,187,164,2,7,134,146,51,23,195,221,145,134,31,153,4],[13,225,119,45,52,45,40,247,191,109,158,128,86,147,9,250,232,236,34,54,43,198,165,17,51,225,149,67,108,181,214,6,196,14,211,170,81,59,85,208,29,14,246,92,134,249,48,25,27,158,83,191,146,3,125,12,90,1,130,137,232,128,119,82,35,244,20,229,208,234,140,41,2,86,153,243,65,115,125,17,162,84,191,77,165,246,33,237,96,199,193,71,9,11,212,5],[175,58,162,143,12,142,168,19,205,231,183,86,211,3,56,229,122,207,90,60,156,178,154,137,10,195,69,252,229,31,205,92,119,78,123,50,22,9,253,184,244,120,78,202,13,210,170,13,82,71,64,136,225,100,170,178,82,50,219,190,40,233,180,65,151,204,200,151,176,246,91,78,1,76,76,87,194,188,253,184,243,89,67,46,84,56,203,27,10,143,143,103,178,0,186,17],[174,56,128,0,13,246,82,243,45,18,89,246,47,243,103,13,183,146,110,169,55,127,82,96,35,66,129,69,233,191,184,70,13,41,217,99,238,73,228,131,50,26,211,218,19,19,209,12,149,2,113,23,19,171,162,137,161,222,58,91,108,210,225,196,51,194,191,150,94,219,250,83,192,234,160,188,249,237,81,173,114,45,133,212,207,97,13,210,43,68,43,43,30,134,82,7],[194,35,77,99,188,157,130,83,243,206,151,194,107,96,115,202,242,53,231,222,85,60,245,111,137,109,178,78,51,224,23,150,194,177,82,7,57,251,138,85,15,165,53,115,85,78,20,2,140,27,37,110,86,206,135,45,253,32,231,252,206,251,0,84,103,174,41,144,5,151,137,96,140,120,21,191,206,180,219,145,53,73,11,73,220,244,122,217,6,125,78,144,5,15,172,17],[209,121,169,46,112,31,107,199,75,96,95,214,163,0,183,10,168,194,165,46,195,49,25,91,33,143,154,102,35,60,64,242,196,199,250,215,248,222,177,21,69,42,210,73,136,129,107,5,8,234,70,15,231,24,174,237,202,144,5,183,16,6,196,24,141,173,60,73,24,219,12,71,180,128,74,105,19,95,206,240,116,23,136,200,96,83,98,50,137,52,19,188,0,68,86,22],[133,48,198,224,79,198,187,16,57,197,216,237,186,65,199,104,220,32,231,201,12,7,161,21,240,194,148,67,201,69,158,237,105,17,16,229,5,24,187,70,239,20,66,238,180,208,230,25,150,99,142,173,107,3,21,42,151,66,249,191,240,164,184,41,62,18,185,196,51,182,84,149,222,176,193,1,42,166,21,210,25,123,141,107,84,213,31,163,38,122,229,188,102,110,151,0],[48,10,5,172,15,124,185,182,86,228,152,89,0,27,189,188,166,195,193,108,92,22,45,116,203,153,10,208,212,63,96,174,20,72,118,47,230,128,32,121,102,8,13,212,42,68,228,20,98,51,170,151,224,172,135,98,139,70,150,23,123,41,54,242,196,212,47,94,151,96,178,142,49,106,210,199,134,120,82,23,5,207,148,220,219,53,101,144,224,51,148,207,3,145,131,1],[116,148,183,64,167,230,245,2,201,75,192,123,222,84,190,122,91,80,211,210,110,134,205,13,59,123,63,179,105,44,151,90,133,8,108,71,175,129,117,229,166,22,162,188,72,111,140,9,130,188,104,83,252,203,154,30,21,85,16,169,183,49,88,105,212,30,242,63,148,115,86,60,47,36,206,210,63,25,237,35,37,79,165,216,177,80,156,174,123,187,162,46,121,82,177,12],[9,21,211,194,80,171,223,241,143,117,111,141,245,172,111,116,252,188,94,143,151,20,222,171,120,64,42,100,179,65,87,138,207,70,189,111,41,51,18,238,4,177,105,185,8,206,209,13,43,24,11,21,78,7,165,64,2,80,192,203,140,233,75,102,44,201,114,132,244,209,100,55,30,51,54,54,240,84,137,51,242,179,72,113,159,229,93,228,238,197,106,225,75,235,61,3],[162,176,183,37,205,74,126,252,41,232,192,36,83,250,142,207,211,11,58,90,71,252,168,70,29,229,104,45,169,84,26,55,49,6,8,100,21,192,160,241,39,19,140,191,194,78,94,18,162,186,136,148,137,7,25,22,69,101,190,255,38,30,2,71,131,173,202,33,247,241,74,124,156,229,230,245,32,68,103,121,113,168,253,136,43,68,97,135,194,165,176,165,152,195,244,2],[191,215,10,212,223,13,93,109,106,226,44,97,37,130,196,253,24,34,134,88,36,26,75,61,127,198,136,79,108,104,52,117,87,164,13,220,185,76,238,171,187,57,235,24,82,145,81,6,7,163,49,177,165,140,25,242,85,155,202,170,134,39,140,197,122,0,187,122,176,116,191,195,21,18,23,189,50,98,44,161,169,144,185,147,189,202,141,9,248,146,114,113,105,102,36,13],[18,213,40,117,22,184,21,6,198,96,223,32,161,87,151,234,21,69,194,255,146,30,69,93,225,91,42,107,31,16,16,246,235,183,145,231,177,207,90,232,217,216,55,56,197,77,93,7,64,3,49,70,14,48,46,131,110,17,191,179,133,252,187,199,73,151,203,153,68,178,221,65,194,162,147,247,41,13,227,231,167,89,168,177,12,136,221,73,128,75,56,92,129,172,108,19],[22,86,146,80,27,252,86,203,234,129,59,208,130,161,231,56,124,110,183,97,195,185,210,156,217,213,227,197,79,68,49,53,231,158,107,75,245,248,21,225,152,163,54,119,39,160,95,4,101,124,244,245,87,1,160,166,65,167,204,98,102,205,209,13,105,19,151,57,132,125,81,179,185,4,129,232,154,4,34,98,29,229,125,239,126,118,139,34,120,87,10,34,27,150,101,2],[182,35,43,163,42,1,34,239,109,7,56,229,237,17,127,115,97,171,229,121,86,235,22,3,74,54,70,56,117,52,12,187,20,147,116,179,81,237,167,123,72,167,254,5,138,107,79,13,152,105,220,128,20,43,19,154,19,253,154,84,22,221,161,77,222,81,216,22,236,216,177,21,234,74,158,246,155,60,8,10,19,218,189,143,19,143,193,71,16,123,203,133,86,40,150,23],[83,227,83,33,199,93,51,179,31,121,3,113,181,163,188,127,185,119,58,58,91,66,66,253,4,76,212,249,216,174,44,165,82,124,178,160,211,29,227,131,99,135,161,93,243,59,164,22,158,255,25,116,27,71,174,88,159,165,181,29,206,255,75,102,71,148,64,89,251,146,109,45,164,111,187,163,24,135,177,149,159,224,112,232,117,115,219,141,90,208,101,180,111,157,211,6],[84,180,33,234,135,146,139,107,172,93,186,192,156,248,204,15,127,102,244,180,131,5,1,235,134,112,157,139,203,218,216,84,205,129,244,89,70,133,116,99,214,199,182,75,96,230,153,12,93,49,87,11,37,52,115,180,212,55,138,38,148,76,71,80,67,46,191,206,243,119,41,116,76,177,243,8,149,161,15,110,235,190,39,83,173,14,140,207,119,140,23,180,71,28,76,18],[190,135,74,28,44,50,43,183,171,222,152,174,158,224,235,101,34,155,196,87,16,7,194,104,133,38,204,242,21,99,87,238,3,105,241,80,28,123,153,130,101,82,210,209,243,135,55,11,9,241,71,33,227,113,41,121,159,20,45,208,210,150,99,6,120,109,106,203,237,25,18,5,202,30,58,216,195,241,57,3,230,47,29,250,178,183,195,198,161,96,194,51,47,9,47,14],[158,252,216,6,217,53,85,60,208,251,45,128,114,37,246,146,248,3,27,43,58,53,225,219,225,250,9,217,194,29,71,209,40,201,255,88,75,42,233,243,228,205,149,123,245,172,242,4,7,173,50,107,144,187,7,233,105,106,223,167,127,125,34,35,13,128,133,161,191,74,180,10,31,189,192,179,103,12,23,120,254,231,217,40,243,126,245,21,76,14,255,102,84,230,142,9],[41,121,181,146,126,39,71,72,183,19,143,159,3,107,236,8,22,81,67,65,251,54,241,143,158,148,188,53,243,203,205,80,179,161,75,209,166,97,67,196,85,187,211,52,208,7,17,3,121,88,163,156,100,145,118,144,208,163,131,158,55,40,158,210,250,240,238,105,166,4,16,145,40,181,169,142,80,31,172,211,20,106,10,84,19,207,198,54,5,183,249,248,152,26,155,22],[74,239,132,54,106,157,70,121,50,58,251,200,90,239,91,112,162,14,93,153,205,226,59,95,159,173,221,22,18,39,164,17,5,190,81,245,199,87,2,88,52,169,106,177,231,157,149,9,6,76,141,66,123,194,210,35,196,67,245,34,145,162,134,195,177,5,19,230,0,234,236,102,163,195,206,78,180,44,28,19,10,254,231,143,236,230,80,53,166,219,208,89,110,86,79,18],[201,104,40,16,110,133,95,184,8,196,182,80,176,130,229,1,250,110,76,236,116,95,93,27,77,242,120,83,44,6,17,149,88,254,193,157,44,108,86,64,133,175,204,182,201,254,209,18,156,237,76,9,116,201,244,208,223,131,174,241,9,255,42,176,174,172,9,11,69,154,176,126,197,197,123,10,200,107,197,9,190,165,102,246,112,105,107,14,104,217,185,35,122,70,237,13],[7,9,60,140,78,213,116,55,215,167,186,103,204,12,40,220,243,77,116,111,133,12,90,193,149,57,128,180,139,191,237,190,183,221,218,118,183,124,63,91,201,220,107,71,185,178,18,12,161,170,120,89,161,40,23,198,42,145,116,22,216,74,111,206,255,204,202,4,252,18,253,113,117,77,130,49,128,240,9,230,192,238,176,100,47,136,20,24,255,136,76,56,149,124,202,11],[182,196,203,136,69,251,12,124,147,87,249,59,157,31,236,204,76,99,24,108,179,213,142,203,151,253,138,29,254,127,22,159,41,153,176,115,218,69,215,74,27,55,55,153,148,43,54,23,82,28,76,33,3,63,142,28,136,112,142,124,99,72,221,59,55,47,33,236,151,75,58,71,5,48,197,145,69,12,34,230,57,253,199,26,245,81,0,247,145,222,247,249,66,149,73,17],[114,191,44,56,174,230,134,2,103,110,238,142,135,168,76,239,98,209,247,54,121,88,24,212,65,30,64,51,126,24,112,162,139,244,89,152,37,161,109,198,53,149,133,63,78,41,163,12,140,96,25,55,24,235,98,103,86,247,189,49,192,65,244,3,20,227,131,170,226,161,4,216,160,159,85,111,166,180,55,8,214,210,139,134,100,113,97,44,81,20,244,14,212,179,223,9],[181,197,6,94,165,45,248,61,129,214,218,171,150,233,50,174,222,73,250,50,163,74,88,28,12,162,159,191,183,119,202,139,246,157,106,232,153,150,86,213,90,198,172,84,146,240,237,1,193,32,35,215,85,221,222,42,6,252,169,34,88,96,174,193,84,43,36,19,91,166,33,195,153,110,139,7,136,74,181,77,230,219,190,116,61,59,174,6,63,157,176,51,55,97,197,21],[34,219,228,211,109,16,81,244,156,50,108,219,45,248,115,169,2,177,65,215,28,156,200,108,231,206,235,85,19,231,54,255,85,68,66,23,143,69,95,216,218,84,186,50,239,1,176,1,176,126,230,253,37,192,195,19,54,168,239,161,97,99,213,90,167,134,63,71,13,15,116,185,9,95,44,74,79,215,54,189,178,203,116,190,173,186,153,124,81,249,56,180,149,33,237,19],[50,253,224,80,245,61,66,39,220,35,135,225,105,182,144,144,87,130,223,185,181,167,185,192,32,93,225,96,35,0,137,160,39,188,204,197,21,209,159,180,38,119,49,215,4,183,80,1,239,52,73,77,53,83,228,205,187,50,176,99,177,131,25,129,173,237,21,15,39,195,163,19,72,162,180,20,225,86,15,36,223,176,84,185,69,96,12,94,113,127,64,160,172,55,52,18],[114,10,207,242,13,131,195,155,150,62,103,141,127,67,130,251,167,51,246,88,225,92,157,207,126,106,60,211,126,226,62,230,79,48,16,176,208,63,113,76,235,247,52,195,37,21,82,13,101,209,129,40,228,232,82,28,16,98,169,36,159,57,1,37,18,202,254,140,210,119,99,151,228,174,34,158,225,122,208,142,65,180,65,172,145,26,37,204,176,44,115,228,246,10,18,24],[185,162,220,29,220,237,206,170,83,176,123,96,118,138,6,245,9,178,200,154,49,88,2,20,45,40,189,205,24,47,185,26,183,42,55,105,47,85,54,133,65,71,67,62,219,64,86,23,107,55,54,86,168,220,220,7,193,248,117,92,187,89,25,3,102,9,215,183,237,158,41,212,69,76,35,91,224,158,253,201,1,235,49,208,33,118,135,126,4,215,63,173,234,112,172,2],[174,132,177,147,100,4,24,24,160,112,118,28,163,62,239,166,106,214,106,193,172,139,44,128,58,33,6,112,119,249,42,135,38,28,113,46,244,152,114,177,103,66,101,166,233,101,135,17,235,168,202,87,8,120,232,207,235,33,18,178,45,72,64,10,131,69,58,58,214,236,251,142,9,209,227,152,93,211,152,66,96,189,65,33,113,198,117,69,74,52,26,255,71,210,198,17],[6,170,26,244,24,183,251,227,153,234,78,61,184,170,227,157,195,169,181,208,164,189,215,88,160,168,82,11,131,132,200,27,26,51,175,37,38,9,144,81,191,50,180,87,45,149,88,14,56,149,122,244,58,238,44,170,9,158,208,112,138,41,39,168,46,229,238,85,163,228,111,239,43,226,126,9,170,84,73,150,79,250,81,120,228,176,123,101,204,61,99,217,141,74,225,15],[115,53,247,160,118,156,62,83,230,55,79,4,112,0,134,175,51,206,197,24,118,26,184,91,98,129,204,55,195,228,117,98,173,251,246,107,247,16,172,185,247,185,248,254,49,72,75,23,88,118,71,34,42,126,194,156,7,30,143,72,187,52,91,26,215,117,168,60,100,121,69,24,159,215,119,27,215,72,101,248,132,184,76,66,136,61,36,19,8,29,240,154,160,234,204,21],[91,54,103,235,4,32,68,180,128,198,8,197,147,255,236,231,109,73,190,45,241,236,196,169,144,142,197,28,210,110,38,245,37,163,232,74,85,72,166,72,255,12,147,134,222,72,92,13,75,133,148,163,249,41,38,4,89,97,106,127,134,175,97,164,59,250,95,139,203,246,189,37,7,110,113,119,98,81,63,83,214,107,154,213,226,31,25,24,146,87,37,219,233,17,86,19],[56,135,173,253,154,196,115,31,92,107,68,174,186,192,127,40,182,185,176,131,9,36,223,223,236,220,89,171,50,157,225,196,120,72,215,92,107,47,176,212,181,121,144,129,149,53,135,17,45,36,22,173,203,238,159,61,107,150,183,103,103,189,189,76,205,151,179,153,28,9,237,253,130,251,148,30,104,159,19,220,226,182,232,67,205,198,214,7,26,172,69,148,73,111,214,10],[113,94,202,217,207,207,205,27,11,214,24,110,66,99,139,10,54,89,252,9,214,130,84,164,226,146,187,193,237,169,150,177,217,206,192,22,232,122,101,47,98,191,15,36,87,154,74,18,119,39,54,226,122,125,66,236,120,5,172,0,132,89,36,202,95,19,20,221,201,204,55,2,101,128,237,14,54,190,145,209,149,5,4,8,243,149,174,0,199,189,135,152,230,79,228,20],[65,243,170,224,192,178,80,41,57,17,188,132,210,207,139,233,1,149,118,177,40,197,229,230,159,148,29,19,92,222,47,108,104,181,33,92,132,5,88,245,10,234,76,165,54,190,74,2,146,107,148,107,157,200,65,137,251,89,25,15,99,78,247,210,159,157,192,144,35,0,20,95,25,34,128,172,126,144,207,47,23,189,245,230,230,84,155,231,133,150,186,62,31,85,30,23],[44,165,9,9,104,177,141,120,191,113,137,242,170,95,103,93,154,104,213,242,147,174,105,117,182,7,66,164,173,222,138,171,144,203,241,179,226,210,100,254,199,146,1,165,167,231,203,13,241,40,248,182,162,102,185,184,67,153,71,20,105,134,19,88,224,163,104,4,162,86,8,22,174,48,217,49,141,77,239,249,239,103,149,171,228,224,145,18,8,50,167,53,22,255,162,19],[42,60,8,137,247,13,172,77,179,52,214,140,79,126,255,59,176,3,108,113,197,90,143,183,128,163,70,231,100,162,47,28,47,114,47,254,24,192,15,104,21,183,44,167,129,85,114,2,127,175,252,212,14,208,43,206,49,236,221,41,212,69,180,14,251,160,206,156,215,170,193,45,204,226,111,220,7,149,160,146,169,255,218,87,219,231,19,219,62,109,92,146,65,135,122,18],[213,69,139,87,238,134,139,152,174,98,209,132,155,73,122,253,127,163,18,218,124,68,64,217,51,166,173,35,144,118,144,40,121,243,21,171,151,212,88,9,124,72,185,38,135,55,225,5,244,80,101,152,135,236,184,125,255,60,225,89,142,95,241,131,116,124,244,21,124,160,23,85,13,116,32,209,76,49,84,242,78,141,94,52,48,125,136,98,107,1,214,236,232,205,101,25],[170,188,49,150,11,137,32,107,138,78,21,9,174,117,6,62,208,183,202,169,30,12,138,128,80,10,225,166,141,88,0,79,198,70,143,38,155,75,7,228,93,86,71,46,202,162,238,0,199,29,98,49,215,242,15,136,118,164,72,251,179,53,177,136,41,97,159,221,67,96,13,248,245,164,137,157,43,42,10,5,123,232,183,74,6,223,146,45,28,210,198,180,75,213,24,21],[155,251,164,250,81,186,192,52,193,65,13,43,170,196,203,68,111,82,9,214,192,183,253,50,119,139,55,213,36,12,210,214,137,48,249,80,240,56,203,191,68,169,175,162,214,11,135,24,212,51,13,223,15,75,113,249,180,245,142,152,116,182,30,26,206,4,240,24,164,188,122,128,162,124,82,136,29,215,193,79,17,181,95,93,219,77,65,137,218,232,40,41,13,17,77,8],[199,9,16,239,242,54,98,171,47,115,253,234,105,22,107,181,177,167,14,165,27,31,27,42,147,199,185,233,239,150,24,37,218,187,30,163,215,150,70,54,80,48,187,83,124,133,87,22,116,240,61,213,97,38,130,122,33,41,92,88,180,141,186,175,170,19,116,164,216,32,48,130,110,241,1,206,57,211,207,79,162,190,111,194,170,205,64,243,138,161,40,34,7,32,75,22],[163,88,39,50,35,157,214,115,26,236,126,28,154,45,15,218,125,98,246,243,253,80,190,170,114,136,224,44,142,38,6,217,232,21,80,213,16,70,40,201,60,107,163,157,210,35,98,16,104,139,41,146,28,224,219,142,128,189,127,59,244,150,172,181,183,75,227,197,233,107,252,177,44,238,93,186,230,187,26,172,7,206,10,168,153,226,22,247,21,66,179,220,40,157,165,1],[200,176,238,20,36,201,6,95,36,45,123,201,0,16,153,124,103,7,163,239,141,206,154,98,1,190,247,248,174,85,224,42,191,119,129,239,250,206,160,56,180,193,45,81,71,172,222,21,224,68,169,183,141,26,98,117,234,132,73,32,194,55,61,42,40,143,41,135,187,149,137,30,134,125,122,38,221,197,72,154,93,251,10,187,165,164,122,245,20,112,94,119,162,1,125,10],[189,96,122,115,60,96,92,71,231,95,67,17,244,172,25,196,227,83,76,144,82,133,108,178,45,103,227,57,47,93,37,98,36,23,30,235,148,174,212,34,146,71,181,98,184,194,153,20,193,186,23,216,232,24,58,251,118,61,219,91,197,178,54,22,76,37,171,158,48,13,3,55,15,79,238,6,80,169,206,119,144,211,145,33,97,116,251,204,65,156,249,201,118,60,91,15],[147,7,175,241,53,203,178,32,74,186,114,138,188,55,209,247,67,164,26,128,89,2,181,106,136,19,185,127,12,99,245,100,59,122,152,90,65,97,212,207,114,82,109,163,102,175,42,21,17,106,248,193,33,176,57,179,74,235,94,33,104,151,225,189,55,82,131,3,177,188,179,152,122,8,215,80,179,217,20,2,4,31,84,23,246,61,60,6,157,122,169,134,164,35,187,6],[200,168,70,65,167,39,234,91,5,195,239,39,57,143,211,77,254,175,231,175,174,176,18,179,143,32,161,77,50,156,80,162,255,97,238,132,254,170,177,203,105,83,215,67,56,61,216,11,41,251,178,93,170,235,229,54,243,14,117,194,158,150,15,249,40,238,248,169,210,67,24,170,134,118,69,230,174,255,198,191,153,249,95,242,207,105,241,18,38,29,209,7,152,226,34,16],[197,224,134,51,116,77,237,42,20,66,147,118,47,162,147,38,196,130,200,129,165,250,246,34,64,36,231,240,136,81,164,46,73,239,152,30,31,219,163,150,143,52,34,180,219,237,191,18,169,89,72,99,183,108,41,196,234,2,197,129,157,116,253,243,23,120,127,85,61,27,57,72,6,159,136,218,134,129,238,44,112,81,22,199,68,38,235,143,173,157,176,222,30,91,156,6],[130,80,181,152,82,201,190,165,187,41,184,146,39,17,104,223,93,89,152,179,141,111,206,132,72,236,167,56,214,220,236,39,243,1,107,228,166,67,248,237,139,127,45,220,221,44,235,2,125,82,160,122,108,69,111,76,8,76,151,182,53,9,108,197,216,131,154,78,196,33,110,25,55,159,111,93,135,19,174,81,6,113,36,194,87,186,114,173,20,56,238,150,221,158,91,4],[146,60,102,84,107,100,129,216,187,160,46,76,241,161,11,15,149,48,4,4,89,68,245,182,142,105,112,91,108,161,145,4,18,155,243,170,4,46,47,155,146,153,112,183,57,116,182,23,51,3,232,64,36,123,41,5,202,144,209,235,96,49,28,222,46,61,14,238,83,8,168,4,213,187,137,1,0,156,190,107,168,130,84,192,171,132,113,139,223,72,56,49,6,38,250,23],[235,70,58,182,108,50,21,7,140,77,148,222,19,9,240,161,68,215,45,22,55,144,9,106,178,105,138,193,55,114,128,88,58,119,42,119,26,233,246,49,89,226,40,161,254,99,167,25,231,3,70,225,4,11,32,228,125,132,238,254,185,243,219,28,14,89,13,175,56,33,173,199,201,124,121,10,58,119,17,252,184,164,137,190,83,69,15,185,237,137,67,55,228,53,1,20],[160,240,195,138,130,56,11,220,53,85,210,119,80,89,88,58,193,12,111,107,250,173,14,143,211,149,112,188,234,219,238,199,28,152,35,210,85,81,86,65,117,44,84,101,4,111,196,20,239,89,77,114,169,215,21,220,72,232,159,255,127,48,226,245,47,164,71,94,65,63,231,84,122,222,138,156,212,81,94,199,26,80,115,1,7,68,62,63,233,33,225,71,101,96,203,23],[162,145,55,79,7,241,147,230,8,229,248,114,169,243,255,130,180,4,108,37,39,209,131,165,84,43,188,24,188,22,159,94,95,249,98,47,218,88,67,166,210,146,137,211,118,156,188,25,85,251,2,178,91,59,176,50,153,157,8,48,119,95,200,83,217,144,198,139,45,60,62,109,249,4,161,103,206,97,207,126,102,40,131,235,135,11,117,11,43,250,203,21,206,61,33,8],[13,149,110,35,97,164,20,240,130,168,221,189,64,84,34,196,146,80,1,49,104,14,66,158,231,218,15,101,207,77,37,5,243,4,3,10,203,206,68,132,50,18,32,238,145,149,42,2,110,74,31,48,175,112,164,88,76,1,87,255,93,131,232,150,176,206,20,64,180,75,208,98,63,140,188,180,237,128,190,117,183,171,188,242,210,94,62,206,243,185,182,107,118,114,247,11],[98,47,102,56,230,248,236,248,193,214,245,196,209,83,163,106,209,187,161,80,65,214,88,35,177,163,187,62,245,78,107,22,216,74,224,52,98,59,60,250,79,200,18,34,84,50,227,8,37,204,54,252,215,202,223,115,109,94,60,37,121,25,228,73,232,46,242,150,181,195,159,118,179,180,19,245,103,122,182,10,173,110,234,101,188,202,187,49,131,42,248,142,178,164,176,5],[55,145,106,171,130,241,44,196,205,90,186,21,182,145,216,240,83,53,213,33,133,74,195,120,39,232,47,15,55,54,16,233,255,31,135,7,120,86,74,93,76,251,231,175,182,174,101,14,173,225,234,154,221,251,95,130,226,59,142,110,143,170,91,60,17,96,163,95,54,155,225,179,76,94,62,181,163,10,212,216,180,187,106,19,69,70,86,59,39,126,157,118,123,113,118,8],[74,215,190,195,202,243,222,119,5,170,92,232,52,72,38,216,192,132,57,219,160,124,244,12,132,197,141,19,123,201,123,110,57,133,180,238,142,91,196,98,243,250,221,47,111,22,100,14,16,16,121,71,170,97,15,11,73,18,180,253,136,196,145,68,142,185,129,142,77,238,109,200,102,213,127,55,226,237,180,134,86,79,37,24,150,243,227,0,244,226,224,67,109,49,4,9],[157,13,172,214,25,127,0,242,60,38,131,132,84,24,56,132,213,65,103,38,207,187,82,170,200,67,96,30,230,84,233,120,243,223,188,221,217,231,127,210,219,205,124,13,121,157,137,15,24,97,106,238,227,214,160,218,66,112,121,9,128,166,158,122,123,42,145,160,205,82,141,157,190,136,23,69,127,64,172,65,28,175,129,145,178,149,61,2,139,191,62,107,91,17,101,18],[133,76,180,109,25,229,212,15,148,3,169,202,212,245,28,166,57,10,177,88,182,1,196,140,144,87,175,60,44,203,46,118,96,14,214,121,170,210,232,111,87,8,137,43,60,88,203,4,254,16,172,202,16,154,167,233,56,143,29,252,22,24,135,45,112,10,215,235,112,66,99,222,172,145,193,189,26,190,16,217,42,136,249,44,191,254,53,0,153,70,24,126,193,184,132,21],[73,254,179,96,112,100,96,235,222,137,151,39,160,100,253,192,212,34,88,45,15,142,131,58,49,226,183,109,180,11,87,97,143,82,160,246,62,97,32,128,57,221,65,199,191,132,191,2,208,18,98,72,125,161,190,182,180,21,95,252,11,149,169,97,166,167,252,5,38,241,33,109,63,193,134,56,188,242,88,58,69,128,9,86,34,72,4,75,198,143,99,117,220,254,8,22],[52,15,159,102,81,183,221,180,209,186,170,215,148,171,255,81,50,234,30,125,229,67,90,181,123,111,111,211,110,159,169,11,132,121,132,70,51,64,155,50,245,101,5,58,152,37,39,3,202,138,236,181,131,130,232,228,43,142,103,29,5,136,158,101,51,85,176,26,109,15,162,120,44,244,124,97,189,222,37,255,210,156,152,55,5,76,17,165,14,180,123,204,36,168,48,3],[236,242,103,238,177,121,248,25,170,75,53,248,231,242,95,242,118,15,183,134,74,172,40,241,91,129,7,133,123,151,18,155,53,85,70,174,150,73,139,101,244,122,38,36,48,207,136,14,97,219,44,227,208,35,89,75,77,23,200,83,192,209,111,45,175,233,233,207,74,13,27,109,110,133,121,241,16,208,43,251,58,54,196,211,230,182,99,193,214,81,233,69,248,98,78,23],[147,229,189,173,207,253,73,54,199,15,90,11,239,149,23,180,198,235,107,147,114,206,180,136,176,164,46,46,254,185,144,45,235,51,187,125,108,44,111,21,186,62,179,239,26,161,215,7,111,72,206,223,176,76,87,112,81,220,21,118,48,235,7,254,134,179,157,58,141,142,214,143,118,214,25,4,146,155,107,76,54,33,11,108,163,103,83,145,100,11,79,110,89,160,71,10],[133,83,145,155,76,215,5,48,221,10,77,182,168,201,140,1,155,60,209,174,118,183,84,2,75,16,255,207,255,219,242,207,61,85,25,214,144,100,124,171,39,200,114,48,107,3,158,10,141,114,28,74,32,88,104,226,77,165,232,62,228,66,137,165,68,189,31,146,128,30,227,42,221,24,49,117,176,183,229,112,197,34,38,117,136,143,83,229,26,255,116,216,118,245,98,14],[31,10,235,193,179,183,29,127,28,12,106,195,145,73,120,101,219,131,55,116,80,181,90,194,242,157,151,240,100,212,109,255,173,250,220,193,47,92,15,7,74,248,145,52,202,176,254,4,192,79,153,249,141,246,56,3,203,146,238,25,156,34,215,92,74,32,242,74,33,28,27,149,70,75,167,250,245,14,201,32,69,209,125,66,153,113,90,76,60,111,134,72,238,2,208,21],[225,75,93,12,246,57,33,98,236,160,29,211,217,242,129,85,111,37,247,238,176,188,48,133,125,158,166,237,225,202,29,161,51,247,45,79,87,166,62,82,117,102,191,70,141,47,42,7,28,163,223,180,253,42,136,203,186,150,52,86,96,25,250,38,185,122,169,19,89,125,64,43,123,0,31,106,101,83,236,74,163,212,82,100,81,253,65,104,130,187,29,178,146,97,185,9],[174,188,10,104,23,0,66,168,59,149,169,164,30,102,220,145,218,228,136,248,53,103,100,206,3,231,103,224,125,18,225,17,25,197,141,0,132,236,31,216,43,209,7,73,231,175,14,23,73,246,137,6,200,25,126,192,199,158,227,17,108,150,27,17,127,203,251,179,228,122,5,106,113,50,236,15,96,45,39,21,1,83,142,154,21,148,29,154,228,168,75,90,8,150,183,9],[38,223,46,175,213,96,108,185,143,13,198,139,229,143,224,108,109,110,131,25,172,28,196,103,164,113,163,134,233,191,152,162,161,184,163,83,128,25,29,7,84,106,213,89,82,112,161,6,16,210,46,31,95,23,186,159,234,245,136,250,233,55,11,72,76,207,159,21,54,198,91,140,232,52,87,35,38,135,147,157,118,90,83,150,86,173,123,184,153,152,179,66,104,228,48,13],[65,8,148,218,62,95,181,146,205,25,73,224,19,73,120,69,232,112,211,222,39,62,71,57,96,104,87,20,5,159,236,48,9,38,8,102,225,122,126,49,88,226,203,126,228,0,11,1,243,161,110,181,11,60,134,224,140,192,67,243,244,133,16,103,167,69,220,152,150,157,24,17,173,15,214,82,144,7,196,123,234,15,244,138,148,137,214,97,232,242,150,54,38,136,75,10],[56,217,114,105,210,94,83,75,166,67,141,233,79,164,252,16,139,13,42,35,174,208,255,68,114,204,170,192,6,42,80,22,2,31,72,174,131,235,255,235,7,170,61,243,203,126,63,12,132,163,146,7,255,202,119,135,163,41,162,78,124,210,174,6,149,172,61,134,127,219,102,4,217,155,213,78,199,253,210,115,200,235,102,68,202,213,113,36,95,30,29,249,250,93,169,4],[142,47,41,127,242,122,97,198,233,254,38,187,83,121,32,107,151,180,185,239,52,114,181,223,90,112,64,38,126,191,229,21,171,183,200,90,114,90,17,84,58,74,248,17,20,144,249,14,70,169,116,159,78,168,42,54,61,156,140,225,94,240,188,229,26,229,134,216,1,37,220,22,152,5,173,191,234,89,44,138,148,32,110,73,115,64,234,113,197,146,173,194,205,161,95,20],[17,2,57,181,109,103,137,33,139,139,69,21,94,61,92,225,33,254,112,229,237,14,169,205,117,26,34,167,166,45,127,56,76,106,237,223,244,15,223,32,121,220,187,73,192,236,50,18,112,54,204,56,148,148,110,247,33,216,104,48,214,15,224,37,3,116,24,101,255,241,166,135,207,186,132,79,22,47,227,161,12,204,54,182,54,191,167,236,201,197,12,97,42,80,243,4],[31,100,168,144,179,186,156,159,92,165,210,235,189,64,182,67,140,235,149,121,244,46,142,249,112,22,222,85,17,175,158,19,50,135,188,238,235,101,118,193,196,219,131,69,246,69,106,8,93,100,125,205,195,26,104,16,155,131,165,64,250,49,207,238,10,188,201,74,245,118,6,162,124,206,15,96,192,162,7,175,225,52,229,30,110,182,124,179,139,11,178,124,119,179,131,16],[140,242,134,230,67,69,122,146,177,115,218,217,139,213,160,68,163,73,208,255,41,159,160,249,37,119,135,107,96,20,133,168,215,40,228,67,194,10,237,242,145,92,198,88,83,61,47,20,56,5,218,112,164,158,123,24,67,138,51,99,223,84,52,120,100,248,98,83,133,105,14,73,13,203,216,174,176,71,169,99,225,125,84,146,169,30,90,87,97,24,69,122,114,98,93,8],[67,18,64,153,168,255,59,185,1,237,244,96,31,1,203,202,86,4,145,98,64,147,168,248,204,119,42,46,54,50,99,149,121,172,242,75,187,101,96,28,5,105,234,56,219,194,179,4,18,186,53,151,34,77,144,178,171,209,62,226,76,4,83,87,193,220,92,125,158,137,110,45,212,224,70,231,76,231,123,179,113,106,223,169,81,219,82,215,153,199,15,38,85,219,31,1],[134,104,246,183,41,8,196,150,135,237,80,251,149,69,62,226,196,58,149,110,193,231,20,227,251,52,195,142,41,164,34,97,36,166,250,218,221,65,160,55,79,48,167,207,47,51,240,8,204,240,128,59,52,79,185,105,185,248,42,123,19,155,151,32,139,62,95,66,70,255,44,246,34,60,77,254,151,185,234,22,156,142,183,174,188,195,11,206,99,229,166,151,31,125,27,4],[203,244,207,232,16,231,94,239,89,45,240,173,80,203,212,42,167,120,70,51,5,242,52,184,240,153,58,233,209,49,224,229,151,156,63,244,241,206,201,50,93,63,46,3,150,188,94,0,31,170,241,19,72,255,170,170,252,239,104,140,91,43,57,195,174,126,18,124,131,97,46,175,116,20,66,205,148,137,248,199,78,38,147,231,75,236,98,170,252,89,50,31,158,127,39,15],[187,76,100,121,31,45,195,168,165,253,88,21,86,178,223,185,175,95,7,163,193,196,55,241,107,194,70,71,56,33,68,25,55,238,245,73,224,103,117,109,13,209,23,222,60,249,53,5,154,215,24,210,112,52,28,4,165,14,21,182,208,150,61,215,238,10,178,249,255,110,218,200,28,196,137,51,209,99,239,56,169,173,250,118,74,53,67,65,153,125,193,110,251,64,208,4],[237,140,246,74,31,203,239,97,246,33,178,242,143,73,122,169,40,20,34,246,159,79,77,156,153,97,154,113,190,4,112,146,148,185,95,88,109,164,221,17,220,205,221,9,92,80,116,25,4,96,148,14,1,170,77,149,187,92,30,102,103,168,66,169,228,53,151,222,13,197,203,61,211,79,189,138,129,233,55,238,167,244,140,223,109,75,65,214,88,2,44,198,177,237,220,1],[147,19,62,145,255,42,83,194,18,138,105,211,30,161,114,106,65,149,11,54,254,117,231,49,91,146,66,157,251,202,107,52,33,98,123,145,7,220,224,133,160,217,79,94,138,20,125,22,202,107,202,9,252,183,93,187,187,110,126,117,193,131,224,192,83,171,158,219,42,28,85,229,101,105,74,198,149,189,23,101,244,18,13,44,126,10,100,176,44,4,155,238,30,229,133,11],[248,233,196,25,87,59,223,21,234,35,204,47,17,122,22,224,79,246,24,166,103,140,32,63,243,7,151,147,68,221,195,250,152,207,253,101,130,250,35,59,97,218,40,116,201,85,78,20,21,115,135,56,237,40,124,145,166,110,176,64,232,66,86,220,82,195,249,245,91,141,121,198,87,159,129,186,102,217,134,21,184,183,107,198,214,5,63,105,92,26,192,253,0,196,15,4],[187,236,221,233,215,145,112,140,87,27,134,240,142,6,138,27,139,9,46,224,104,71,202,142,234,199,16,227,151,210,90,117,1,191,207,168,122,205,2,253,1,208,196,134,39,144,182,14,82,169,39,182,153,110,212,242,160,37,108,19,149,4,148,215,84,96,16,73,242,0,125,31,75,121,156,213,180,108,84,153,45,246,175,128,102,111,22,187,130,96,143,245,56,185,67,9],[251,106,229,184,142,159,27,130,56,11,96,11,105,131,58,226,255,241,166,70,249,10,92,186,14,165,96,28,16,100,217,111,88,170,142,175,78,206,88,137,247,205,23,71,48,252,160,18,179,209,84,18,51,143,228,200,213,166,110,51,138,99,118,93,81,26,35,152,100,127,172,170,239,93,0,49,56,3,40,209,131,106,200,172,244,33,31,65,244,141,19,50,164,52,100,11],[237,62,199,3,42,104,98,132,30,206,251,30,53,128,30,12,114,234,22,172,99,136,193,233,6,97,7,226,192,0,146,81,64,109,118,204,6,182,155,9,179,105,192,180,190,47,218,10,52,199,244,188,130,106,139,81,46,83,39,152,178,152,29,176,187,69,198,59,196,11,7,157,17,12,145,27,139,111,61,138,34,27,48,149,152,67,244,97,167,42,9,177,157,153,43,13],[150,183,197,244,103,67,166,173,87,39,188,186,165,231,217,5,4,193,242,144,43,21,104,206,148,237,66,147,36,141,55,227,161,39,199,138,188,117,239,135,194,180,26,189,91,255,110,16,164,102,147,108,106,16,61,247,193,210,214,132,107,57,220,36,238,190,131,84,66,159,58,216,99,55,90,198,146,110,36,235,81,152,112,205,204,145,76,202,237,35,189,174,236,138,7,0],[72,196,126,93,99,88,188,122,249,225,187,200,48,19,221,183,130,18,31,196,66,220,111,224,65,69,146,3,202,117,47,148,229,135,29,38,82,136,106,6,40,136,81,220,14,41,158,11,181,152,167,195,130,119,246,126,62,195,156,182,91,191,226,26,184,250,249,33,18,186,79,236,215,137,40,157,129,190,194,33,175,121,91,72,106,182,169,128,14,153,169,169,109,66,143,7],[249,20,65,253,208,126,58,31,97,84,248,32,87,146,133,19,4,247,27,10,137,196,203,165,32,244,67,66,157,246,32,23,65,255,221,46,3,8,191,168,224,161,16,31,209,206,50,21,194,130,8,216,138,248,196,213,165,118,64,8,134,67,127,157,251,169,219,161,101,132,241,178,51,241,239,99,227,121,139,143,145,215,116,238,191,214,64,84,179,83,191,126,212,7,233,1],[19,37,180,149,143,243,56,65,207,157,11,129,135,95,40,162,129,139,222,111,92,198,202,21,169,46,105,171,65,197,27,128,66,38,232,157,50,63,167,114,252,88,36,75,226,67,58,20,159,213,197,199,183,190,78,16,229,228,129,240,10,156,113,98,143,101,172,205,171,23,39,138,5,46,198,63,171,175,110,211,90,26,22,36,238,224,41,57,233,206,169,231,79,34,237,1],[200,164,17,210,70,253,138,172,120,242,255,19,55,22,17,5,27,232,159,228,168,123,121,196,196,59,250,17,213,65,92,101,171,160,149,207,251,83,225,15,121,135,124,149,149,201,8,15,87,167,155,226,47,109,79,206,250,102,243,20,79,108,178,27,192,149,64,162,214,120,190,210,140,35,74,22,42,128,109,109,54,222,234,99,57,168,228,10,35,211,94,111,205,30,13,14],[209,95,253,141,23,46,62,191,138,118,149,23,6,224,16,159,5,220,53,147,93,36,80,77,229,54,242,245,144,139,75,122,78,106,77,70,214,219,57,62,129,115,9,238,99,238,228,21,177,42,72,51,13,149,183,46,46,241,141,75,198,155,240,171,226,200,229,224,130,150,90,178,166,63,245,66,243,17,251,155,246,211,48,202,68,40,108,208,53,26,99,72,139,175,130,7],[250,228,184,4,98,252,213,239,27,22,91,238,103,94,188,237,58,204,161,82,136,86,131,214,147,1,240,185,95,70,235,102,99,19,241,138,53,176,56,65,17,213,101,196,115,123,241,19,7,38,210,206,121,234,26,215,247,218,87,241,100,158,179,207,194,185,165,60,52,188,132,236,235,250,52,150,35,202,12,238,187,70,90,125,81,6,247,118,134,177,205,126,3,242,60,5],[197,107,21,137,118,192,228,202,134,253,213,63,82,113,156,40,57,198,115,76,103,120,8,178,93,169,114,189,114,246,241,244,122,208,239,232,153,235,245,160,9,255,71,247,111,70,166,16,200,37,124,26,122,92,27,88,27,197,120,164,154,223,137,158,206,229,3,145,60,80,37,46,118,84,126,172,72,194,3,68,18,172,89,42,139,149,199,53,148,56,211,58,62,121,19,13],[216,106,228,241,12,236,138,239,73,44,146,138,38,220,128,201,220,194,221,69,188,97,254,136,88,38,171,78,193,116,146,19,250,62,223,60,198,213,15,137,208,240,98,184,38,84,187,2,124,185,254,91,43,46,235,16,158,185,79,179,249,62,173,72,35,29,214,173,244,113,247,242,84,113,39,62,139,192,227,144,54,5,13,145,56,12,99,106,172,107,77,111,126,187,3,16],[163,253,11,41,102,76,171,90,168,159,193,191,250,110,41,112,138,183,32,66,111,69,105,29,242,175,72,65,50,124,241,69,158,186,93,178,66,116,68,117,125,44,20,150,4,201,148,14,195,139,72,74,215,4,99,26,14,18,124,73,98,88,135,143,233,234,43,81,44,162,132,214,19,120,8,193,163,83,109,12,210,77,129,255,53,107,36,45,155,159,217,38,201,192,100,10],[40,35,107,62,215,145,112,63,41,107,41,176,14,69,99,43,214,39,146,181,224,104,59,124,63,113,125,171,28,135,29,225,67,207,29,0,27,22,190,36,229,127,159,44,107,178,75,21,218,241,196,251,91,249,167,111,245,58,59,34,127,153,176,158,31,99,129,97,174,10,121,25,52,194,38,212,249,156,154,110,15,175,124,59,50,141,94,211,43,223,145,94,8,120,105,23],[133,158,107,220,238,61,190,117,25,122,141,254,194,133,41,81,159,139,98,120,127,151,220,30,140,3,95,201,182,162,28,66,188,79,95,6,223,71,33,177,188,177,202,224,57,190,195,2,215,94,120,85,181,36,219,78,32,9,195,147,120,163,29,207,101,216,177,28,94,2,133,123,136,171,239,76,54,32,92,236,39,202,12,90,208,172,77,25,136,117,127,126,208,155,201,4],[162,123,71,92,9,153,146,73,218,175,243,255,123,20,80,168,114,121,140,226,170,175,186,235,38,45,180,231,61,24,108,13,229,44,119,60,108,161,2,81,68,48,208,62,2,41,14,3,180,108,61,29,121,173,158,91,27,228,69,209,222,167,9,122,213,245,119,103,140,240,0,252,48,105,142,76,144,162,28,144,126,113,22,245,228,190,195,10,74,208,233,213,125,78,208,5],[219,12,247,120,0,89,113,186,85,83,91,115,224,180,18,1,20,103,5,123,65,191,57,240,170,207,105,201,187,25,88,249,244,83,254,3,234,101,158,118,145,4,157,13,28,219,112,6,35,41,89,227,106,173,124,150,127,183,170,116,86,186,162,112,227,149,40,238,154,34,169,218,163,202,222,236,93,120,84,206,3,61,250,178,30,239,20,69,159,74,218,74,216,114,210,4],[39,137,238,180,6,140,45,113,156,40,157,8,115,42,64,218,32,185,238,65,134,66,116,12,41,101,145,201,69,125,178,211,71,49,231,82,141,47,2,139,152,254,212,55,251,158,122,17,66,242,117,87,137,19,156,9,35,158,182,195,80,187,112,9,79,172,188,159,80,194,71,230,9,115,187,238,4,186,246,226,37,190,54,182,71,59,249,37,45,53,24,86,147,143,171,3],[194,89,166,159,92,8,152,76,139,138,79,63,70,109,43,110,139,216,106,177,170,77,215,105,229,125,89,191,232,186,110,162,127,250,132,251,243,210,70,74,17,16,253,26,1,120,75,23,181,164,45,117,139,157,44,174,175,9,249,172,51,222,253,242,23,160,174,254,52,225,134,123,12,30,137,99,49,89,214,111,31,187,124,149,80,121,91,49,193,47,148,20,33,63,177,0],[220,191,198,142,44,223,192,127,229,125,134,185,44,100,29,167,61,254,84,84,124,171,244,100,3,155,171,152,146,232,62,251,205,164,82,68,178,134,222,40,176,231,114,72,42,103,199,21,141,202,18,54,221,36,72,69,124,228,136,164,94,9,64,76,165,194,131,199,254,20,218,233,43,75,57,200,55,23,105,87,223,108,225,38,128,99,53,94,215,251,163,23,56,253,118,14],[65,226,195,7,92,12,217,63,141,216,39,63,42,253,10,104,89,182,158,54,131,132,75,111,168,116,173,204,240,37,172,28,197,255,212,120,95,101,148,185,54,202,104,151,31,116,156,13,24,154,20,208,156,75,115,121,137,49,140,173,145,8,3,128,8,18,91,117,112,176,111,36,141,246,123,251,113,88,161,176,250,206,175,250,4,185,69,245,33,219,202,2,227,166,176,3],[65,16,62,167,24,107,206,143,49,111,80,52,166,196,13,106,234,95,127,90,169,204,81,100,56,3,235,42,187,233,244,77,221,61,235,42,200,178,58,245,108,187,192,131,115,198,29,5,241,135,198,67,126,79,103,106,143,245,34,28,152,54,245,142,17,155,168,225,207,255,174,246,171,38,94,114,76,254,220,197,186,41,252,246,63,251,47,25,146,107,95,109,140,70,33,4],[219,241,157,86,206,123,107,32,135,68,47,105,165,210,88,56,136,118,13,7,2,83,72,236,96,90,114,199,241,229,136,33,41,162,173,228,25,58,73,200,154,55,47,20,167,141,220,25,144,98,116,35,56,231,82,189,154,93,118,61,132,7,6,193,111,162,203,210,185,202,210,149,58,158,219,173,121,145,49,212,207,121,125,75,255,145,43,129,71,195,105,128,122,15,169,25],[165,167,141,175,1,5,255,31,78,198,239,119,120,217,210,23,19,180,17,87,125,0,159,59,40,248,176,122,218,203,49,16,186,46,210,66,217,179,204,104,95,29,12,21,125,62,41,3,136,116,122,248,185,153,222,98,151,133,29,176,254,3,193,141,164,163,201,90,78,232,99,209,120,73,163,126,151,71,173,121,210,77,232,21,59,134,176,255,1,188,2,164,163,182,25,12],[49,122,34,130,164,139,131,181,92,115,150,4,198,201,186,168,249,243,91,140,14,105,216,74,134,176,28,191,71,80,18,64,4,125,224,255,40,213,65,249,74,185,219,149,23,209,18,11,206,116,146,29,148,107,208,241,235,194,239,74,188,0,52,32,126,148,39,51,245,112,91,180,206,155,133,157,144,10,246,209,162,157,254,199,186,89,212,122,255,160,226,187,106,56,186,10],[206,56,234,42,13,64,92,50,249,113,175,129,111,163,30,171,54,246,51,103,138,200,151,70,8,56,164,251,180,40,74,28,115,171,34,140,168,233,43,96,156,61,142,245,225,154,221,13,224,151,231,138,109,224,159,187,234,196,176,181,173,27,82,181,46,7,185,137,158,9,101,25,239,29,167,19,50,170,123,149,85,55,163,174,154,49,86,101,153,213,39,0,55,218,23,23],[215,187,138,186,119,223,82,131,72,39,162,45,214,53,43,68,105,51,171,10,173,136,99,78,217,26,51,32,78,175,26,106,193,150,68,132,69,53,185,177,209,81,141,88,138,199,24,17,217,16,24,29,221,162,213,77,55,44,131,74,198,161,63,47,120,173,85,185,153,141,142,188,75,31,163,18,164,70,11,73,246,113,103,232,61,119,106,231,0,251,171,219,55,190,97,6],[165,20,167,84,216,50,134,117,122,235,89,60,102,155,179,139,4,35,177,231,78,252,180,82,7,214,151,158,2,23,100,72,92,215,119,85,137,14,252,24,69,21,6,47,255,57,118,16,162,174,105,151,119,228,33,173,164,162,65,137,255,140,41,98,224,241,219,214,191,237,242,36,224,184,243,211,239,206,71,76,28,123,109,142,43,252,194,246,72,140,49,211,201,86,98,4],[239,153,174,21,43,22,177,224,187,50,24,74,18,141,219,159,46,16,189,77,82,86,106,197,190,208,21,124,59,204,49,224,76,178,110,47,97,242,178,139,213,202,243,92,123,56,95,25,253,84,164,186,114,118,166,18,63,202,119,195,105,241,163,41,224,165,190,139,25,11,2,158,30,60,241,66,71,134,130,65,146,129,108,130,172,16,35,219,24,43,189,211,58,53,242,25],[152,69,34,134,15,139,118,233,103,65,194,130,99,189,80,74,217,85,228,132,35,51,94,207,82,143,140,76,147,126,52,148,24,129,186,181,118,55,98,202,30,45,7,57,105,29,236,9,239,225,150,101,75,90,177,95,163,15,121,163,40,101,102,200,4,190,6,66,18,176,192,142,144,180,35,76,49,255,88,119,223,44,147,224,13,91,202,167,168,131,6,196,160,42,224,25],[80,13,246,171,169,217,28,120,44,6,27,90,127,207,73,234,140,254,92,227,156,173,11,143,38,223,159,255,178,7,121,221,152,189,176,202,18,131,169,123,163,244,115,11,185,51,140,8,163,19,128,156,148,67,37,49,227,74,107,77,122,137,15,16,187,55,240,146,36,159,154,36,243,242,115,246,89,25,68,200,188,138,114,73,113,24,215,128,36,201,226,22,58,45,141,2],[213,105,50,165,253,187,155,107,184,135,151,73,78,50,60,77,172,226,218,231,145,62,71,15,42,25,191,200,213,26,155,35,213,34,149,33,89,126,42,91,68,107,146,215,129,200,42,5,98,127,108,209,138,140,29,221,53,153,49,178,102,48,226,11,76,192,176,171,114,160,204,61,198,241,201,113,131,125,190,235,252,142,130,54,13,57,58,118,151,31,156,190,100,252,28,0],[231,73,139,17,17,175,152,62,58,62,219,180,236,6,231,178,133,46,128,41,144,160,81,177,64,16,74,136,203,251,197,65,249,249,55,80,28,183,51,11,24,61,18,165,174,119,85,20,234,67,132,229,127,124,133,29,121,198,102,67,96,50,136,161,39,186,67,9,31,86,34,140,119,92,180,232,147,238,58,67,99,164,85,77,98,221,68,37,125,178,94,87,215,141,198,13],[189,4,121,54,17,95,205,230,93,214,152,200,186,125,46,202,242,126,106,165,102,106,184,165,241,94,106,115,80,57,171,155,217,170,105,171,214,28,159,13,32,196,213,11,114,66,165,12,134,230,212,174,41,217,57,254,111,139,157,59,160,184,114,90,138,222,75,188,241,11,249,135,90,119,31,89,226,68,71,49,80,211,16,161,187,21,123,77,164,162,241,34,7,147,57,20],[156,91,234,50,211,145,20,181,134,68,144,175,37,175,72,2,172,9,221,86,99,227,221,150,203,89,165,242,91,167,248,184,164,179,117,16,228,32,103,229,193,159,148,214,251,53,185,22,161,147,104,199,188,230,66,227,41,86,71,90,110,89,29,233,210,201,17,32,47,152,214,240,233,57,160,140,62,114,11,34,58,61,233,26,92,173,159,35,57,62,160,238,72,153,122,10],[109,123,107,161,193,27,194,153,127,189,232,104,135,191,9,13,110,198,231,244,107,0,89,239,6,215,117,120,104,166,31,225,212,20,185,18,238,242,171,166,143,77,190,177,234,222,15,14,80,84,54,56,151,174,92,80,73,61,243,9,233,161,209,176,114,44,89,244,137,95,63,46,245,42,73,239,135,185,47,139,102,82,212,142,143,245,11,69,82,179,94,195,148,162,18,13],[102,113,162,95,45,179,234,61,230,211,188,7,205,8,118,63,63,91,43,85,168,143,177,226,69,251,147,126,96,201,173,188,64,139,118,219,102,255,42,8,240,71,153,122,82,249,249,22,192,144,166,37,61,130,133,7,217,234,180,32,121,140,251,74,164,17,46,96,79,92,46,41,149,172,56,113,197,211,2,185,104,26,10,217,248,34,158,82,139,122,100,107,159,4,198,16],[26,84,1,8,249,41,221,244,59,218,238,190,47,56,149,163,209,48,130,159,217,141,173,87,162,249,135,147,141,220,187,91,252,31,141,243,215,170,8,119,80,31,193,78,195,239,192,3,157,55,0,28,34,114,145,61,233,57,107,140,26,57,237,17,145,176,219,108,34,197,159,101,111,238,223,72,190,177,132,52,219,167,23,39,152,62,83,112,119,168,183,131,173,31,51,25],[218,193,158,202,209,78,115,216,9,142,123,55,45,10,199,212,15,155,117,190,67,49,168,121,82,253,149,200,237,45,50,41,8,142,196,57,59,161,77,77,255,62,218,234,255,216,246,10,179,9,183,130,39,143,223,20,123,203,192,67,52,149,52,197,164,9,193,135,203,147,37,9,219,128,114,167,56,162,78,35,161,15,63,249,29,225,108,168,137,244,240,124,244,67,189,21],[184,191,188,102,155,29,91,187,27,106,27,79,235,252,71,130,238,110,114,58,39,4,68,167,120,115,248,83,17,211,47,154,104,169,202,7,31,252,6,216,65,92,203,180,143,142,72,15,244,149,25,16,87,139,1,167,31,174,76,72,181,11,66,121,174,62,197,24,129,6,227,244,78,232,129,113,152,171,56,142,142,122,171,145,210,253,230,11,136,3,113,144,90,249,166,1],[105,160,166,1,185,184,255,87,23,127,104,108,217,202,46,156,112,27,199,206,182,120,239,132,45,44,218,222,77,209,112,70,15,166,100,112,89,7,36,59,89,209,60,158,153,134,85,6,136,103,124,135,92,26,98,187,12,151,146,159,102,178,49,19,135,220,232,89,249,43,138,253,221,104,235,230,123,224,90,28,202,189,18,213,167,156,2,125,120,237,41,197,12,247,37,18],[225,128,19,97,243,231,6,144,246,153,197,21,247,57,157,14,78,13,131,63,19,136,129,140,205,137,215,166,4,89,192,49,198,19,176,48,125,25,238,221,124,51,222,25,92,145,14,23,13,197,84,56,24,161,25,187,50,8,53,136,183,239,126,187,249,132,67,252,144,17,142,113,162,46,83,4,98,221,226,39,157,199,15,152,181,61,235,144,21,21,10,169,55,45,80,0],[20,142,184,245,100,101,132,56,175,244,135,8,187,10,67,10,244,23,68,240,191,93,44,18,168,93,74,215,164,67,49,25,205,203,238,218,132,202,225,82,131,190,209,8,31,213,39,25,52,202,99,20,170,46,167,178,243,74,37,72,133,174,93,40,108,150,232,191,89,150,137,27,228,152,245,127,245,65,9,128,61,66,228,29,93,139,23,248,174,138,226,17,187,253,212,11],[16,245,248,115,132,212,52,243,118,165,70,210,202,115,65,251,148,180,180,93,2,33,225,183,63,48,212,225,25,20,123,148,105,133,161,232,64,103,48,4,167,83,160,44,160,167,104,20,112,172,84,161,207,160,91,247,62,119,183,52,249,34,188,142,76,29,247,229,190,106,153,176,186,149,104,222,43,0,79,212,253,222,177,191,90,231,198,89,178,239,102,191,68,102,193,19],[90,251,63,237,124,10,68,120,220,131,98,192,51,161,42,193,224,171,100,63,83,80,172,34,185,175,29,144,80,22,185,43,59,45,159,53,147,196,12,60,94,54,46,176,82,189,157,16,81,134,226,48,206,91,131,59,139,85,246,249,242,142,19,65,155,64,171,187,221,149,139,159,39,217,120,85,77,95,117,215,239,134,161,26,93,134,210,145,119,167,163,84,137,23,167,11],[38,72,158,73,177,91,248,14,254,184,45,185,198,36,41,217,107,191,202,48,161,214,96,51,84,86,178,140,84,214,38,237,206,236,248,108,231,130,233,62,132,48,196,234,0,210,37,4,211,159,121,20,67,188,175,141,102,11,192,169,172,186,176,187,131,39,153,241,61,247,6,1,252,138,79,182,250,172,232,81,10,250,95,230,207,3,200,186,20,210,252,136,157,95,144,11],[181,199,208,51,59,60,63,109,217,168,106,211,124,168,247,227,86,203,193,30,123,46,199,187,172,99,60,133,23,213,50,79,253,148,188,134,136,187,3,212,13,104,74,94,84,238,107,2,41,108,176,245,203,182,137,170,174,205,87,100,107,33,178,172,151,163,227,114,246,103,187,48,194,74,112,172,112,185,129,166,231,32,154,35,141,221,199,2,102,15,97,26,41,197,48,2],[80,39,87,163,221,161,208,222,66,214,26,23,161,195,72,56,39,87,14,79,93,126,6,184,202,90,41,122,205,204,94,194,1,11,33,62,159,213,207,254,171,169,108,128,2,180,74,3,252,123,188,150,195,91,85,24,42,119,146,85,129,153,136,138,222,24,56,169,15,145,106,38,191,152,199,7,2,73,106,51,128,211,167,19,130,177,186,184,96,133,6,136,112,114,31,1],[249,191,31,148,98,17,141,209,241,80,212,68,186,216,8,109,241,177,196,104,29,194,141,30,210,90,181,191,239,69,48,199,207,78,235,26,17,8,12,64,136,84,183,102,118,6,19,2,89,93,164,173,56,97,11,238,100,196,162,93,6,81,140,97,69,86,140,37,203,21,50,58,176,27,192,230,118,212,35,159,184,130,20,115,224,98,94,151,13,3,18,112,6,190,64,22],[228,236,112,78,54,113,159,36,62,149,94,197,205,36,150,25,89,223,254,195,144,98,140,1,158,14,93,226,190,226,209,54,120,4,146,194,36,203,206,150,5,57,168,106,112,217,42,25,168,88,194,71,206,83,195,43,82,38,183,19,202,2,223,40,239,17,98,175,113,61,74,45,43,144,94,23,66,199,202,47,227,119,16,168,117,28,72,241,19,248,8,86,9,220,231,4],[252,16,210,119,202,217,167,184,16,52,150,137,168,175,251,28,152,157,91,29,211,140,20,237,39,103,119,143,113,150,115,227,245,214,237,160,156,102,205,142,129,234,65,69,185,162,234,0,150,23,68,11,107,122,194,176,182,203,118,119,178,173,226,112,162,252,134,231,88,218,111,233,203,127,139,239,243,81,54,29,61,8,201,213,34,167,25,45,212,227,245,31,86,177,114,9],[119,152,140,52,82,87,164,172,32,124,154,221,255,221,86,146,13,172,221,151,102,233,186,93,148,206,97,25,232,88,173,67,208,110,219,166,9,163,154,218,26,187,209,112,22,217,99,2,186,82,252,213,117,200,110,102,163,98,202,234,24,184,241,57,138,86,40,235,207,98,192,30,95,99,205,136,212,180,129,211,176,33,134,229,209,51,193,237,64,95,29,99,160,52,206,19],[195,236,22,227,178,119,32,243,65,252,79,190,69,173,11,178,221,51,98,63,179,207,192,78,109,3,95,62,221,114,111,138,83,252,34,126,67,112,198,255,70,61,51,140,232,96,251,17,26,217,138,24,182,211,104,82,212,1,121,226,211,163,9,114,9,103,193,212,28,241,62,173,165,58,97,181,162,142,212,38,144,229,160,49,202,63,179,108,214,57,157,103,139,228,175,17],[179,69,188,207,199,177,76,0,209,9,127,78,1,209,97,0,27,127,254,65,44,139,12,244,43,125,91,124,166,108,201,166,30,128,164,65,107,79,240,85,55,10,19,34,4,87,5,15,158,245,245,48,161,225,248,221,132,132,173,80,160,18,29,16,143,107,136,36,90,87,20,219,109,81,131,197,146,22,203,9,174,88,202,83,160,119,102,140,10,125,19,230,140,47,114,20],[105,118,192,103,40,209,113,51,80,127,209,60,223,9,120,49,46,6,145,84,40,166,102,212,53,10,98,196,109,173,157,104,55,2,29,82,218,67,77,201,235,31,80,156,44,185,100,21,198,238,10,233,145,212,147,89,36,122,29,107,30,205,236,115,251,103,131,229,189,129,55,84,1,190,0,66,74,214,183,245,138,249,136,243,94,4,47,166,37,10,7,238,29,41,226,12],[76,178,47,194,39,249,117,28,62,119,182,174,0,240,146,217,244,118,76,127,29,155,60,203,115,114,187,9,17,151,238,91,188,8,68,100,28,188,230,80,221,146,139,238,155,50,207,24,136,2,173,45,194,217,202,32,161,141,21,202,185,65,208,93,219,37,60,116,184,162,188,116,180,161,206,48,98,252,190,217,141,138,199,111,5,12,13,68,160,153,65,163,206,109,197,5],[154,173,227,154,48,233,247,168,165,61,128,185,52,182,178,172,197,105,76,75,16,105,123,102,86,27,30,178,187,100,91,106,249,217,112,186,136,156,86,37,141,241,170,161,197,253,9,23,61,50,14,187,55,224,207,250,185,122,138,74,184,42,4,95,29,189,173,167,27,30,73,32,138,66,91,64,185,134,125,214,48,48,243,70,228,242,166,57,248,44,156,65,252,212,209,5],[241,163,216,70,34,58,19,213,47,2,38,38,255,165,120,139,163,102,149,39,130,115,131,8,101,38,53,71,196,98,65,228,99,161,174,170,152,35,134,228,160,212,193,144,153,12,255,6,70,4,148,51,201,174,98,173,27,82,36,223,36,59,47,236,197,36,44,171,197,48,180,57,49,164,193,250,183,73,135,92,14,111,193,77,236,245,240,45,11,222,220,186,28,64,8,0],[83,239,30,230,116,68,218,55,88,97,7,21,158,194,158,253,234,144,121,163,225,240,154,1,161,236,149,217,28,152,238,170,25,68,165,245,203,150,200,117,109,116,110,206,165,159,249,14,216,204,166,62,58,91,97,236,92,140,229,196,57,98,232,213,154,53,220,86,53,241,206,138,241,66,188,35,154,139,206,208,59,36,117,16,242,24,193,132,198,201,107,1,144,121,99,7],[98,144,39,171,4,111,135,50,132,3,131,252,173,161,92,137,104,23,201,144,54,151,216,41,42,51,204,201,92,227,246,131,175,77,253,154,41,45,177,111,252,3,187,78,58,38,20,17,115,66,199,234,32,196,47,135,134,39,6,238,44,229,61,70,209,127,133,186,155,95,15,48,90,207,155,112,208,107,149,33,94,72,156,170,222,107,42,64,62,213,136,26,255,114,40,20],[154,34,48,141,166,124,44,19,196,13,110,83,131,75,119,11,136,85,168,162,152,80,83,87,21,7,1,51,244,96,4,102,77,125,250,82,132,39,173,28,134,148,130,250,200,227,46,18,128,189,97,178,119,202,165,36,155,173,23,167,153,49,79,56,159,220,183,152,220,86,98,239,81,95,228,169,92,224,30,246,58,223,87,13,84,35,177,228,186,23,39,119,251,90,103,21],[94,100,201,189,142,167,114,189,198,105,207,105,134,12,130,23,217,133,208,69,47,105,203,126,17,157,159,185,141,100,87,57,236,115,186,255,248,28,33,188,50,13,32,109,149,253,28,17,228,98,134,136,119,130,251,3,55,168,25,2,182,42,182,154,134,140,23,92,225,105,250,223,43,2,120,242,53,25,82,225,161,224,120,180,41,132,203,97,110,127,3,206,43,40,214,12],[115,239,30,198,183,97,121,35,224,130,149,15,172,204,166,71,15,175,199,113,221,51,45,255,106,137,52,203,20,160,160,243,72,209,171,79,5,71,85,83,226,85,234,165,252,152,219,22,138,173,234,247,238,138,69,202,121,137,60,39,153,110,206,176,109,241,140,59,59,108,249,138,74,221,248,212,226,172,158,22,38,152,125,74,179,106,43,53,208,56,67,59,53,220,227,22],[147,210,171,136,42,77,43,77,87,154,120,21,109,149,165,8,178,221,135,124,63,248,118,197,52,102,208,33,17,56,230,182,230,106,47,173,78,192,155,217,140,240,68,216,164,127,13,2,82,75,175,230,178,96,14,233,235,139,52,114,11,57,1,15,146,98,40,193,190,88,5,219,185,106,48,85,140,140,155,148,76,179,63,199,28,175,225,122,114,230,180,115,174,15,86,19],[249,232,32,160,58,57,169,22,226,203,100,130,203,183,80,56,104,205,150,101,12,159,183,73,142,70,150,127,115,63,109,169,160,67,192,254,176,103,63,67,241,224,160,203,49,207,52,10,26,131,249,135,147,170,172,188,125,113,32,239,89,218,80,214,38,58,223,86,96,53,37,11,193,84,137,40,235,152,212,101,56,80,172,240,163,55,93,58,154,225,45,125,139,2,165,25],[242,144,30,77,121,12,192,164,123,250,205,159,141,42,208,113,109,195,96,167,198,22,254,199,21,38,90,32,182,134,3,201,117,64,139,19,196,103,179,170,241,246,92,214,219,105,168,4,232,65,253,143,70,74,50,182,5,177,148,178,255,73,158,206,220,60,60,128,209,130,180,12,243,230,160,53,133,81,188,14,18,18,60,39,133,111,73,68,3,90,145,106,60,33,173,21],[52,72,242,198,231,166,122,118,179,125,213,207,16,226,7,104,180,117,163,113,96,152,167,115,128,236,125,102,82,151,196,43,130,70,243,142,74,169,30,90,152,33,119,173,89,238,113,3,70,31,86,229,216,207,121,34,119,39,164,81,233,175,5,225,236,225,45,103,94,146,158,201,159,198,224,25,42,14,52,157,2,246,180,55,211,156,246,71,39,218,52,171,178,163,56,21],[18,19,46,99,120,152,86,84,50,155,55,138,125,190,25,217,90,62,205,190,27,223,9,209,144,229,148,112,207,53,0,33,171,213,53,109,32,122,122,201,45,86,12,84,188,100,78,6,152,12,224,29,132,87,22,165,42,240,61,247,91,213,127,21,13,25,146,60,29,243,5,161,48,234,23,113,134,174,188,66,82,180,22,68,88,95,125,140,53,76,12,241,186,117,7,17],[35,93,184,105,150,14,66,41,228,183,164,244,225,97,130,51,1,119,168,231,130,211,32,102,4,24,189,230,220,171,34,177,251,52,154,113,24,77,70,54,2,120,201,181,84,221,125,15,196,96,142,108,74,103,99,44,67,130,14,11,176,180,191,10,8,182,113,208,220,51,78,182,37,137,98,127,127,156,133,84,221,111,130,35,178,213,142,248,127,244,81,103,1,42,17,18],[136,251,210,187,19,159,48,192,210,132,120,40,253,229,108,78,192,230,64,89,7,244,161,254,170,131,117,194,138,59,51,126,75,48,6,229,54,232,142,51,84,171,56,222,195,8,215,14,130,129,118,10,5,24,131,78,145,81,166,79,4,123,139,125,75,138,216,125,128,103,77,176,109,153,198,252,18,189,127,119,254,120,182,45,188,92,99,53,90,187,90,126,202,138,157,21],[108,86,14,81,114,12,9,41,55,128,133,61,49,115,127,23,205,60,143,162,14,10,208,14,247,42,104,123,109,141,155,13,129,61,45,86,142,171,221,7,54,115,199,22,63,91,149,0,209,241,247,6,198,229,78,94,80,181,149,42,249,36,142,79,118,162,93,178,133,161,29,123,189,71,246,80,88,95,199,159,9,160,202,134,155,142,247,214,222,240,180,236,131,161,143,22],[178,149,22,140,56,219,147,25,223,44,3,173,23,169,74,231,249,13,99,49,149,165,54,124,90,216,118,43,156,55,242,204,212,52,171,203,208,166,252,94,102,27,66,216,46,91,64,0,146,10,0,30,240,155,131,252,70,186,123,163,87,113,99,98,132,67,62,81,126,158,16,135,108,209,60,234,168,214,232,106,30,169,139,244,42,149,248,32,178,27,149,253,254,249,194,15],[57,113,247,34,217,205,111,154,159,54,69,136,5,16,119,117,222,27,114,117,6,42,145,46,160,116,38,213,4,139,138,242,244,109,244,45,162,131,179,48,134,209,165,2,43,234,95,16,129,149,42,98,122,15,129,25,131,143,155,134,88,244,206,117,165,25,116,219,223,103,3,185,60,169,81,72,60,190,178,223,39,203,21,153,250,53,234,17,209,38,87,166,190,209,100,13],[254,32,229,0,159,178,138,188,4,58,88,83,88,244,124,54,25,96,97,191,32,101,177,83,28,189,101,185,132,107,116,254,144,116,88,40,165,242,119,90,20,181,141,43,45,147,194,7,89,186,105,93,102,143,235,60,15,175,234,236,247,169,155,228,79,13,94,93,225,199,56,202,233,116,239,181,67,99,37,57,154,164,36,161,148,233,114,182,159,112,52,91,103,21,145,4],[177,235,172,186,20,20,149,218,135,189,159,251,188,58,218,9,2,244,5,31,96,180,51,65,146,43,56,73,171,127,110,158,203,252,241,60,189,250,22,223,125,31,43,32,166,112,17,0,29,33,79,103,54,59,184,62,147,75,153,101,137,26,104,117,137,168,216,64,141,163,128,61,65,231,115,76,41,63,207,252,152,172,237,145,74,99,175,48,105,131,211,146,66,9,57,8],[34,143,161,53,251,232,235,246,167,244,168,71,114,239,131,126,12,87,202,108,137,252,122,144,80,126,96,196,3,251,72,112,226,110,169,92,114,152,61,46,101,57,198,116,70,121,13,12,53,6,197,10,164,75,158,208,133,191,63,76,229,126,113,166,171,145,255,219,52,74,30,4,214,211,169,80,113,156,190,249,24,106,248,15,229,126,21,123,194,140,203,18,221,165,182,20],[119,201,228,121,130,26,85,89,55,248,142,67,31,132,1,37,144,40,187,185,215,129,8,248,238,15,3,84,191,137,16,220,204,51,127,70,62,66,60,25,250,127,77,153,128,244,227,21,49,171,199,236,33,185,215,84,147,26,11,223,232,95,4,66,207,22,58,173,60,254,197,182,79,135,99,46,143,116,94,84,169,107,44,11,31,108,151,136,27,115,209,96,200,243,97,6],[180,105,90,111,50,108,166,202,204,251,55,156,254,242,156,91,162,90,214,153,112,165,252,180,7,5,221,78,153,5,235,64,79,138,38,167,109,89,58,130,51,144,48,119,127,231,93,12,51,132,254,176,45,189,90,211,70,160,128,192,216,118,167,183,26,139,110,216,142,94,241,91,243,164,12,159,33,49,172,35,240,40,15,102,143,32,208,155,156,216,192,137,163,211,107,11],[39,243,109,205,31,43,209,218,101,22,115,236,35,218,134,41,41,153,141,240,2,81,68,198,197,234,144,135,122,183,96,43,40,76,253,83,5,162,226,144,166,246,36,104,58,226,138,19,178,113,201,127,168,62,103,73,19,226,216,62,220,74,179,167,7,197,252,33,2,162,203,6,196,118,98,29,2,227,102,245,253,213,165,127,206,138,169,235,99,191,103,57,139,230,199,7],[253,175,81,41,228,120,148,187,86,224,104,98,65,119,223,40,101,34,166,66,95,161,67,26,87,37,230,56,68,40,173,249,248,10,153,137,142,206,219,166,99,108,150,141,207,155,60,3,241,190,81,56,170,181,67,248,108,21,92,211,42,137,104,81,155,112,232,207,24,68,210,184,8,46,249,240,163,240,142,203,195,214,167,234,139,131,33,159,96,28,231,110,175,4,239,13],[60,103,164,140,99,191,171,67,196,21,135,143,217,35,193,229,164,19,114,224,234,17,196,96,214,80,71,114,186,47,73,120,155,28,136,59,131,50,122,150,198,77,228,26,131,112,175,1,131,1,197,178,79,234,20,240,54,186,8,252,95,107,98,245,169,200,32,198,224,20,42,247,129,38,70,90,62,92,168,125,196,3,99,239,117,236,37,255,126,37,175,166,208,178,208,16],[241,132,166,25,164,179,118,233,170,70,217,50,191,13,210,190,197,174,114,82,0,146,122,229,16,112,247,201,81,175,37,185,108,240,129,132,26,158,24,103,152,167,172,99,140,128,238,25,60,254,168,169,176,103,196,110,113,246,76,152,93,89,81,146,103,150,128,143,144,216,251,52,11,235,4,6,73,81,216,52,115,4,129,41,116,162,112,50,142,249,254,168,149,48,189,0],[189,82,148,22,24,188,212,237,215,71,11,101,216,11,92,8,38,149,69,232,151,94,57,91,243,223,11,214,8,53,246,80,118,207,141,200,248,127,60,96,199,252,34,135,168,205,221,5,128,182,17,238,253,85,183,8,63,241,42,31,111,140,179,161,132,95,96,55,71,0,135,238,194,237,242,148,162,81,66,87,60,231,226,146,51,240,187,146,253,0,16,169,120,207,231,21],[185,196,179,222,25,216,21,100,109,232,167,17,61,212,75,216,251,210,233,177,133,69,47,138,1,110,139,221,44,36,127,209,145,161,171,203,139,120,161,0,68,167,145,26,200,88,8,11,149,155,119,106,134,4,107,156,18,193,9,198,28,130,16,21,14,36,206,247,115,126,50,250,123,53,145,4,86,50,0,166,228,108,97,221,160,113,172,23,34,215,163,180,118,34,249,7],[175,222,152,110,82,171,46,220,42,49,36,77,164,187,125,28,138,223,6,28,71,36,13,24,37,233,236,224,86,139,178,40,12,138,159,30,48,140,39,169,151,120,109,164,78,165,50,12,224,128,225,17,104,171,12,127,33,77,42,30,25,14,29,41,85,47,182,103,10,133,104,227,170,135,237,155,14,116,124,103,187,137,159,90,63,70,106,21,39,145,243,105,229,202,180,15],[62,27,218,238,208,12,152,224,47,159,221,81,160,215,228,157,52,103,117,23,37,240,18,59,105,83,105,0,34,206,79,5,65,68,48,207,254,46,251,98,41,23,65,151,25,249,172,11,118,68,10,201,215,63,141,162,73,10,23,32,97,216,18,145,146,241,231,228,0,125,189,47,66,128,127,224,55,137,238,168,248,62,96,33,253,153,206,255,6,200,213,8,154,50,130,5],[154,55,208,47,183,160,31,41,15,139,28,249,23,99,95,132,89,216,184,171,137,163,119,88,132,175,188,23,194,16,163,205,105,231,77,143,86,246,152,233,218,208,7,149,175,20,148,9,96,65,143,26,180,110,188,30,38,233,94,136,111,114,213,219,100,84,119,59,217,226,238,18,119,31,238,33,174,180,222,154,62,207,1,114,111,187,100,139,49,38,237,193,219,1,148,14],[1,51,189,126,208,151,5,49,215,225,185,99,24,134,162,207,224,149,219,177,141,42,64,35,194,244,107,1,245,234,173,128,14,27,216,111,149,60,107,30,254,126,17,29,229,78,165,18,143,197,216,204,96,164,25,39,116,227,170,188,157,126,252,87,238,212,16,14,109,83,120,246,236,99,28,197,248,48,123,50,212,252,135,95,20,96,16,49,158,2,59,180,152,99,46,9],[157,180,170,159,88,232,134,49,61,252,118,215,143,105,146,22,8,197,97,60,51,93,252,219,116,145,204,66,253,35,166,211,89,37,229,72,149,69,84,64,225,82,96,56,144,76,188,12,86,153,147,234,83,187,102,8,12,79,62,216,155,201,226,205,182,240,83,218,232,98,75,141,44,136,96,202,163,215,152,228,190,219,103,234,101,119,191,167,14,89,170,44,193,225,24,18],[118,187,44,42,95,70,245,16,31,243,185,118,47,2,57,83,46,211,87,71,92,242,137,127,114,227,66,238,17,25,63,62,11,142,110,103,74,161,127,235,18,154,39,152,94,238,219,14,29,55,153,71,65,3,152,191,18,175,203,127,62,228,88,205,109,192,150,102,64,17,200,82,39,124,244,220,25,219,87,206,125,116,166,173,63,100,155,79,2,246,131,117,202,253,107,1],[98,221,114,74,210,21,227,14,221,50,237,190,224,108,172,255,218,154,5,226,113,224,189,3,245,67,163,135,182,14,49,121,8,23,105,197,148,171,143,168,156,89,68,97,12,27,239,17,228,187,241,107,246,94,151,62,59,45,2,93,136,154,202,203,128,113,153,186,61,164,3,204,222,156,69,247,177,94,197,207,229,116,151,125,36,228,187,159,36,70,143,153,216,228,197,15],[174,163,82,57,171,225,97,197,120,181,198,111,30,88,160,182,203,96,89,107,56,167,245,170,178,213,168,192,210,132,190,19,117,252,10,46,145,251,137,186,34,82,250,46,109,114,36,8,237,41,76,69,128,131,162,22,85,53,61,99,63,51,46,98,245,167,5,138,28,166,109,73,195,144,235,13,124,5,137,137,169,146,172,23,66,17,104,33,106,39,104,100,129,204,159,1],[9,37,51,213,201,46,44,70,57,32,226,230,114,22,220,253,160,36,33,229,101,18,60,140,146,110,67,172,205,124,225,142,85,150,80,2,173,9,95,154,188,242,124,80,169,123,12,14,184,158,211,198,26,31,95,198,75,43,204,221,244,60,140,234,81,56,194,189,188,43,7,62,106,79,90,36,246,221,169,103,31,33,86,109,152,81,115,87,9,160,100,138,119,84,204,3],[96,83,172,223,15,72,246,249,237,111,130,181,78,194,233,89,151,186,96,243,232,16,189,162,240,253,142,130,206,44,239,201,233,240,83,19,177,115,189,169,150,62,29,170,4,154,103,22,96,78,161,229,239,35,113,20,193,206,144,125,171,110,234,179,77,250,59,139,204,173,221,165,225,231,162,72,125,184,6,117,151,213,83,95,126,74,110,7,97,64,151,159,21,230,199,1],[227,65,68,145,43,216,30,116,28,12,230,128,118,158,66,188,56,157,152,167,128,87,2,210,6,224,141,234,96,66,247,31,111,75,197,212,12,211,90,42,123,210,124,44,179,85,43,13,142,243,178,97,39,24,210,150,178,161,25,180,167,112,30,213,45,73,17,117,218,225,242,162,18,20,133,176,48,41,167,129,188,53,136,3,166,57,250,138,30,21,26,22,64,36,57,6],[104,22,76,181,83,54,200,121,30,192,237,69,20,0,75,142,3,12,127,57,83,108,63,205,46,35,78,242,241,76,3,80,173,81,220,203,93,117,250,175,163,104,197,167,192,8,165,25,100,83,202,46,21,253,143,76,139,14,81,208,34,195,34,48,106,11,247,128,57,220,243,102,58,12,232,60,215,132,243,212,211,129,204,51,107,0,202,216,53,223,68,157,4,43,28,15],[121,252,72,117,212,113,84,80,129,222,10,213,63,125,46,180,137,23,76,89,150,53,232,112,206,168,79,94,224,176,114,236,213,83,63,110,71,77,166,116,15,0,123,106,165,225,140,0,37,169,232,205,48,213,210,32,64,158,155,127,231,23,99,88,57,139,116,181,141,229,52,116,194,41,191,19,157,140,179,184,20,137,108,48,204,88,22,235,44,69,5,19,179,82,86,3],[200,199,2,133,97,176,121,104,194,174,107,88,156,80,135,113,220,133,93,144,248,89,2,237,227,47,170,214,74,128,148,134,150,126,165,16,4,81,127,238,181,221,97,110,227,119,137,17,34,27,12,152,168,224,101,100,103,71,113,132,239,119,134,243,118,113,119,131,230,129,63,165,210,45,99,211,219,236,95,214,208,68,185,89,75,2,81,230,57,156,84,135,46,221,221,3],[217,136,153,21,194,60,33,179,130,83,254,248,230,14,251,33,93,159,84,141,210,196,102,108,112,86,162,204,41,192,183,89,85,94,69,154,182,230,46,67,147,244,70,36,150,47,11,10,189,215,242,135,45,5,104,245,120,76,45,59,98,75,235,113,57,2,61,31,203,41,75,94,24,160,33,212,69,181,46,111,222,11,143,19,231,176,208,179,101,45,190,56,67,66,168,4],[134,236,39,231,126,118,21,85,111,203,39,170,12,99,64,38,86,149,81,91,145,119,220,111,201,49,182,28,229,138,101,55,116,15,213,199,83,237,106,1,180,125,133,89,11,223,24,7,123,103,68,122,166,121,98,45,58,162,130,142,112,30,106,33,14,142,172,243,47,75,242,48,11,131,89,220,16,28,39,81,152,184,161,196,248,95,183,65,232,199,89,254,61,112,17,21],[186,153,109,146,166,207,2,114,155,113,54,12,112,123,134,174,208,210,53,104,60,149,208,202,40,102,167,173,212,79,158,163,111,123,174,18,251,84,138,163,74,239,58,116,127,118,252,10,190,65,16,180,95,135,96,110,34,89,22,201,150,201,159,218,153,82,108,159,80,109,254,157,96,169,187,39,90,99,122,211,26,170,93,168,38,255,167,219,245,123,29,199,242,46,248,6],[239,104,48,49,219,184,24,209,59,230,156,78,80,195,173,236,119,26,119,122,182,48,97,195,185,154,19,140,11,161,97,230,137,102,66,58,187,181,15,67,10,160,202,15,219,247,112,20,41,200,18,54,23,47,63,84,19,178,182,151,62,198,231,24,53,174,142,127,58,182,22,150,80,159,24,21,204,230,97,67,222,21,97,70,66,172,255,214,119,222,34,96,184,188,252,21],[255,62,89,196,38,194,225,112,0,175,27,59,148,38,55,59,146,200,22,161,99,104,222,57,252,222,169,64,98,136,154,103,132,108,11,135,241,102,194,134,253,97,218,74,48,97,243,14,140,231,152,156,4,36,66,196,90,100,55,81,101,242,101,181,249,85,162,186,219,54,18,72,218,204,223,168,170,153,145,96,158,186,239,173,83,150,249,36,211,144,124,48,62,108,171,8],[196,55,67,4,133,31,209,152,240,135,68,129,32,224,253,62,92,91,51,105,75,207,38,18,239,103,1,19,2,190,188,128,197,178,117,207,39,170,93,177,138,13,132,48,131,172,248,3,125,235,73,70,152,132,160,69,5,229,82,73,187,145,204,39,233,179,59,150,88,182,23,19,20,116,125,235,103,43,125,150,23,50,205,164,178,64,40,243,25,24,4,254,162,187,104,2],[146,61,201,151,255,222,39,102,194,142,0,213,208,62,34,138,197,71,229,197,234,55,26,187,117,191,125,155,193,85,105,78,250,250,240,56,148,82,93,25,240,98,176,159,190,39,254,18,60,176,194,80,16,106,140,103,196,22,102,254,35,78,107,94,236,1,202,230,217,197,189,231,234,55,48,196,69,241,166,241,171,104,10,159,176,58,63,223,3,61,67,33,85,156,209,22],[195,151,105,96,59,158,152,60,21,16,173,138,138,170,87,108,69,161,14,250,44,228,143,55,134,26,52,17,67,156,15,218,35,0,13,64,203,37,249,78,46,79,222,5,63,212,4,4,113,2,114,95,3,227,98,78,15,195,101,57,235,62,216,101,196,171,114,113,140,5,172,217,165,13,149,44,61,229,128,177,233,62,223,19,186,190,177,56,59,125,245,208,3,45,128,21],[73,104,171,60,223,236,124,58,195,42,148,49,13,81,194,147,208,31,113,96,39,182,148,73,76,149,136,31,79,167,70,54,61,110,56,202,228,248,164,241,72,216,222,237,249,221,183,23,43,168,9,148,2,246,232,141,1,124,157,246,45,126,138,149,129,156,48,17,164,64,95,41,221,202,60,50,217,42,93,142,130,210,144,142,144,176,254,125,119,42,139,179,177,88,66,11],[91,230,131,97,82,94,108,247,136,194,55,144,72,147,32,46,18,129,182,13,180,187,253,205,32,133,232,33,49,103,181,225,93,228,150,106,157,29,241,227,251,44,248,122,70,194,219,5,205,173,95,96,81,100,249,153,45,59,188,162,153,7,86,94,20,26,109,202,162,58,12,146,120,71,61,35,196,185,222,184,34,115,254,3,234,237,174,121,204,6,113,18,120,123,97,9],[61,218,227,176,110,242,202,44,192,94,210,16,98,93,88,170,233,208,87,17,235,77,194,133,47,214,214,163,78,44,131,167,8,100,187,13,255,89,40,239,98,74,155,88,137,18,120,4,45,104,177,110,220,13,196,197,199,5,196,129,253,192,166,26,58,197,90,215,188,240,162,240,151,77,119,88,181,252,182,170,43,201,144,118,29,254,245,144,215,117,111,10,18,186,89,15],[152,2,60,33,202,228,197,26,37,5,101,83,77,140,137,72,20,96,81,115,44,85,39,63,193,70,122,147,21,30,53,120,140,123,244,103,235,226,56,49,140,45,223,3,79,125,206,23,207,157,59,151,83,57,5,72,254,122,132,128,5,181,2,82,122,183,217,113,90,119,18,153,54,79,53,77,212,66,254,147,220,243,202,255,153,235,45,171,12,81,30,38,226,33,216,0],[243,13,198,101,224,9,64,133,252,188,212,72,138,106,102,26,52,157,89,86,34,213,40,55,16,149,244,73,224,35,251,250,148,163,95,170,7,42,193,154,226,6,242,11,246,117,151,22,8,71,121,231,129,118,42,168,122,122,38,102,177,177,134,57,171,227,129,238,182,216,7,1,235,56,171,138,183,131,93,248,37,87,121,108,76,72,105,24,146,161,183,223,186,215,82,22],[237,99,176,39,224,47,255,246,184,56,244,249,173,125,139,210,159,90,125,193,227,169,139,231,177,62,80,83,59,200,205,94,197,173,248,254,203,107,163,194,200,44,228,229,222,90,207,5,180,8,122,89,133,249,162,149,235,198,123,229,156,165,229,192,188,68,26,232,104,58,111,156,15,5,223,198,166,18,241,16,97,243,125,24,59,185,103,68,144,197,162,43,59,141,62,4],[166,235,14,224,34,248,22,66,162,85,223,105,109,165,29,221,56,117,41,52,82,255,206,164,63,226,227,190,34,79,153,134,20,31,72,104,54,237,60,104,72,22,206,70,47,147,27,18,35,188,33,178,78,61,61,210,227,48,108,223,141,142,213,207,221,174,110,225,177,206,82,5,160,22,35,99,104,20,157,165,27,173,78,69,166,112,175,156,69,70,49,252,26,28,249,1],[212,154,1,45,90,94,219,21,101,190,241,11,7,56,147,65,59,119,130,131,187,254,56,207,160,75,104,88,89,125,108,32,184,75,105,222,35,123,208,8,226,38,23,166,168,66,235,15,47,129,103,108,141,66,7,196,157,83,190,20,20,49,167,185,159,122,214,186,199,119,137,233,34,167,91,240,8,56,185,76,104,65,157,10,118,172,142,225,103,95,111,183,253,47,45,15],[22,51,179,245,4,80,119,148,110,241,45,230,113,78,180,60,253,5,24,198,6,213,60,66,86,120,12,45,77,236,213,222,80,250,233,9,63,65,25,22,241,115,131,170,100,210,233,8,202,209,36,250,184,69,141,181,21,245,178,220,40,187,46,215,129,254,54,50,168,138,73,3,108,157,73,120,36,183,35,94,232,254,46,22,130,0,39,231,49,163,143,26,226,61,80,1],[100,124,171,2,129,251,92,124,237,57,140,63,183,190,230,143,161,121,241,173,187,190,145,127,190,2,114,233,69,46,97,9,29,233,153,162,225,134,180,232,47,207,120,21,7,184,48,19,63,79,133,202,139,106,106,114,12,43,177,49,209,137,108,208,244,69,49,168,66,154,206,21,201,230,117,242,167,40,13,40,83,115,133,156,72,72,169,119,102,224,183,98,43,7,50,4],[56,255,38,176,143,9,123,131,5,88,192,59,217,173,13,125,205,45,105,94,115,37,184,126,15,235,81,153,113,58,42,140,138,158,86,65,234,191,154,46,209,159,224,215,121,167,174,12,217,101,197,22,79,223,103,243,60,135,3,51,97,58,253,59,59,64,104,151,38,5,191,28,57,115,93,77,124,134,85,246,14,18,226,122,184,78,141,229,242,174,179,56,38,206,227,13],[74,175,188,10,169,93,51,122,48,157,177,174,203,45,198,11,8,172,54,30,231,184,220,121,130,113,30,183,236,188,186,37,32,89,209,171,173,239,10,27,7,255,63,216,144,155,204,16,245,214,53,96,55,55,66,211,202,138,201,208,211,1,86,182,113,69,196,107,37,120,13,153,196,189,217,113,183,150,110,180,233,82,149,20,140,116,12,180,194,217,109,75,250,255,81,17],[52,87,215,32,183,251,244,249,33,73,81,110,254,140,47,162,21,100,209,44,133,114,137,206,145,180,147,203,234,230,80,39,252,139,137,8,3,227,88,135,142,167,131,197,25,46,3,20,83,134,177,70,111,192,98,97,179,9,135,175,44,32,30,191,128,84,222,210,184,118,108,115,22,238,144,51,243,114,145,159,121,90,208,235,70,40,182,250,106,19,56,23,113,93,156,9],[66,194,17,12,87,64,194,205,198,44,66,252,155,197,106,224,178,196,137,248,20,101,77,24,70,7,78,253,45,109,110,110,49,70,74,149,51,199,204,149,118,59,95,190,162,137,163,14,93,6,236,61,242,128,85,70,54,237,32,188,98,73,52,248,50,3,28,223,95,33,178,130,97,48,84,246,237,96,185,113,42,96,44,148,226,18,142,243,19,41,36,181,86,2,171,24],[37,243,49,12,254,111,249,8,76,105,92,0,53,120,29,16,6,197,108,72,194,0,188,148,182,231,111,89,185,197,137,193,17,123,1,156,193,77,98,30,149,181,40,140,40,216,221,0,12,223,7,227,111,224,138,86,207,222,243,234,112,129,118,195,247,201,37,243,120,99,144,182,200,67,246,86,76,141,131,17,38,173,186,243,99,167,16,224,116,43,51,130,255,171,164,10],[231,18,108,60,32,213,254,65,90,72,153,50,78,65,184,10,95,34,221,205,220,68,150,211,135,130,213,122,46,105,197,132,53,73,67,179,51,174,16,36,188,222,179,45,22,239,68,7,117,50,213,210,62,107,221,33,143,23,160,138,8,227,11,192,233,45,161,212,38,118,143,199,217,156,145,112,209,251,231,30,77,255,227,42,215,246,145,97,145,238,237,51,177,130,110,20],[214,223,37,109,140,64,243,244,18,103,252,3,172,247,70,194,26,102,121,64,84,180,165,131,30,147,196,242,6,254,16,214,120,213,114,144,199,108,102,141,234,197,83,44,201,232,137,23,218,3,120,63,133,108,189,210,0,96,220,111,6,100,153,32,62,156,149,23,0,201,220,102,214,178,249,28,33,93,246,204,51,17,101,110,171,34,76,116,17,219,17,44,130,23,216,10],[34,72,112,119,153,187,237,62,181,59,137,30,222,132,120,83,180,21,37,60,11,76,109,112,70,215,3,28,134,167,10,220,130,121,42,61,94,26,162,66,152,26,73,97,63,45,231,23,243,252,87,219,128,201,209,143,47,15,179,143,116,100,168,111,212,223,14,247,226,110,63,130,69,254,184,206,15,2,190,47,102,57,116,170,244,131,142,108,195,240,75,141,128,220,189,3],[217,47,188,162,105,3,110,170,241,84,58,18,54,74,207,230,153,5,2,77,87,67,73,52,165,141,83,18,82,148,153,85,225,30,134,8,165,22,166,142,138,180,152,62,175,215,158,0,17,39,219,182,148,153,234,114,50,239,138,97,3,48,145,138,31,125,181,220,72,47,79,104,96,212,159,171,8,161,119,3,212,12,86,79,229,27,72,162,219,107,90,201,216,237,34,1],[33,125,88,78,240,248,202,11,3,205,197,91,2,107,166,53,147,118,23,231,253,62,41,128,192,191,167,2,172,60,16,209,118,113,206,26,146,214,1,159,100,190,100,252,248,17,137,19,10,219,91,49,219,132,4,201,38,59,133,179,41,193,1,182,42,238,183,143,175,245,16,155,141,194,240,65,54,9,197,241,232,24,54,108,7,161,126,255,193,232,8,130,140,86,78,24],[115,25,48,63,143,185,179,28,234,36,235,60,246,162,53,166,165,25,103,56,167,45,176,38,148,109,251,64,127,123,95,20,187,103,32,102,157,104,240,68,103,151,244,84,180,20,130,23,66,8,160,144,71,112,133,251,165,57,74,108,98,52,153,85,158,253,70,205,230,79,104,95,191,27,13,197,190,81,191,18,142,197,221,198,83,243,228,22,32,75,85,231,137,48,125,18],[246,13,241,240,82,202,180,244,2,70,33,148,78,22,95,106,11,99,77,64,83,132,187,116,160,181,180,97,93,135,31,61,59,244,112,218,204,105,200,247,112,64,58,127,95,234,114,11,164,230,183,80,59,197,34,127,59,255,108,81,229,67,47,42,158,69,248,137,157,128,22,12,254,234,192,198,125,231,63,213,207,62,109,66,65,61,195,125,40,199,205,69,198,145,53,25],[57,209,183,228,41,171,74,4,165,211,31,14,103,104,33,48,35,193,133,72,87,136,158,124,88,92,220,239,33,130,243,168,237,230,79,151,189,101,106,12,85,25,81,130,206,165,31,23,27,86,14,52,127,203,107,148,81,126,135,253,208,176,98,91,51,54,8,247,208,103,153,169,230,188,93,196,11,128,124,226,139,108,14,12,106,81,4,190,191,112,99,12,178,185,95,11],[81,213,204,126,181,91,119,60,55,56,61,186,209,23,4,40,239,243,248,185,184,17,186,217,218,209,201,66,127,238,219,255,223,115,136,20,31,89,27,20,129,148,50,44,205,154,249,6,96,48,45,165,193,127,40,37,227,153,6,195,71,171,90,219,65,140,245,52,116,0,201,174,89,0,69,156,241,83,78,4,119,14,103,252,226,119,40,1,162,55,211,226,113,185,208,2],[147,134,221,153,138,157,179,110,120,59,184,133,53,10,242,252,36,1,184,230,119,53,235,254,209,49,37,17,105,17,223,41,23,180,133,55,102,110,137,180,184,118,22,161,44,122,236,6,181,19,61,182,251,105,158,25,159,182,190,55,120,2,54,36,198,78,146,236,174,92,54,43,80,20,149,182,172,29,15,162,247,216,61,196,10,220,209,223,248,43,136,63,99,166,164,1],[151,224,162,10,179,75,53,131,168,203,114,195,252,97,44,255,226,169,121,243,33,107,67,121,166,248,87,162,163,111,109,126,102,155,36,61,189,63,236,141,25,65,105,133,202,68,11,23,13,129,232,22,145,49,123,224,200,67,44,20,72,220,250,229,115,153,172,31,188,119,24,16,197,105,127,27,11,171,189,37,3,14,244,18,165,137,18,75,205,187,229,180,82,157,188,15],[161,226,179,196,181,33,163,57,102,137,21,220,1,210,12,104,2,111,209,111,40,203,65,152,172,103,143,27,148,148,216,118,14,84,110,222,117,188,167,30,42,109,240,43,229,177,253,16,178,106,224,250,169,53,225,218,96,207,110,186,253,213,230,98,141,207,177,1,115,255,32,234,216,152,2,242,3,121,231,217,240,68,147,43,33,248,230,162,183,202,52,10,168,93,34,11],[139,135,153,123,233,156,242,176,185,22,19,130,152,93,223,9,63,86,247,3,22,67,98,97,80,18,164,56,5,218,17,49,94,88,167,177,71,142,25,124,61,118,15,216,50,8,61,14,101,172,140,131,90,177,117,252,94,68,184,81,182,69,165,92,88,57,230,197,106,90,153,230,217,73,121,46,105,223,126,174,159,188,250,82,137,58,140,90,185,96,23,126,123,185,87,24],[233,157,46,10,38,40,228,222,169,219,142,84,109,178,8,62,93,203,83,173,164,132,40,208,71,180,246,81,105,145,81,183,241,44,7,119,195,67,90,112,214,234,201,106,31,234,232,25,210,121,178,203,174,187,231,181,243,184,64,220,216,213,53,209,135,150,156,129,174,89,65,84,69,83,190,100,179,204,206,177,28,11,5,176,17,222,121,253,68,234,143,211,189,160,246,9],[34,52,222,100,230,132,227,17,240,21,50,222,108,254,245,51,9,12,4,124,83,13,167,76,165,147,132,203,133,39,55,77,163,162,48,250,253,34,123,231,96,226,180,77,116,244,133,3,177,109,195,192,6,205,152,12,37,144,61,177,45,134,219,134,178,19,194,114,3,100,200,146,56,182,149,29,171,211,18,34,85,63,108,15,100,10,109,203,81,232,26,166,156,138,219,10],[90,49,125,65,42,86,106,169,254,140,111,179,235,190,215,138,246,178,109,184,192,32,18,91,13,56,153,158,232,90,125,250,114,100,134,193,115,184,198,170,209,240,127,46,211,117,134,7,161,101,147,207,149,248,122,88,136,62,162,191,86,123,161,244,203,97,131,132,241,247,212,198,212,15,39,139,127,251,77,17,83,97,105,139,237,53,148,155,86,117,29,248,247,203,131,15],[191,195,44,201,12,20,31,26,178,135,141,43,102,46,35,196,108,195,64,184,208,208,241,230,166,188,201,67,232,173,26,66,31,175,40,222,210,154,1,59,55,110,95,233,183,178,232,24,247,130,164,246,93,53,255,244,240,249,162,31,7,250,243,201,245,137,36,16,59,99,150,210,34,113,55,76,43,232,167,119,125,147,56,8,118,20,189,47,204,75,23,160,198,78,88,4],[134,234,53,0,115,89,196,182,91,184,58,190,194,120,79,164,220,107,51,138,161,128,93,129,48,139,116,232,52,237,242,96,18,125,5,35,131,240,86,108,55,32,230,184,67,26,135,2,204,117,137,194,72,227,74,82,120,60,41,195,67,189,95,28,73,212,144,41,129,117,20,248,221,31,173,13,148,11,38,139,150,24,222,253,160,130,28,26,145,193,8,183,237,211,32,4],[142,125,164,39,14,40,16,156,190,100,251,71,11,90,22,90,130,176,1,23,44,160,156,218,122,98,236,75,247,218,126,114,219,74,213,162,34,234,144,16,154,98,180,62,49,84,145,20,30,218,47,108,43,7,94,32,233,189,91,16,21,63,88,112,159,249,163,224,27,139,70,88,186,236,154,20,64,48,202,58,40,28,30,255,248,29,18,120,75,207,158,179,19,101,32,6],[128,143,22,208,173,204,195,227,105,51,85,24,72,147,114,226,35,91,234,31,8,35,17,160,12,210,87,231,225,70,223,0,254,150,114,86,103,134,16,50,3,161,122,146,2,145,183,1,152,128,120,224,241,198,226,4,179,86,86,254,143,117,159,9,51,27,0,218,227,105,225,13,209,151,190,34,209,249,186,158,88,231,19,37,29,250,215,231,40,122,49,10,172,111,84,16],[249,118,168,165,51,198,24,32,49,108,150,50,192,189,62,99,24,170,144,83,54,10,118,254,173,176,92,88,217,33,174,193,147,186,217,8,112,182,252,75,194,181,59,47,161,228,226,14,27,66,124,175,164,71,80,85,185,154,73,78,165,137,75,119,118,228,1,219,152,166,216,218,146,21,19,11,137,115,112,156,150,16,182,55,222,165,179,253,167,114,92,150,44,69,96,3],[193,185,97,166,158,39,13,32,174,249,130,125,56,107,66,45,129,114,174,151,99,212,218,205,34,28,92,183,165,14,34,245,17,49,139,13,238,160,103,115,234,118,180,98,34,149,100,18,247,58,79,6,217,89,41,118,247,18,167,133,74,37,223,75,145,198,60,72,11,240,237,170,37,237,154,126,177,80,25,123,9,21,204,37,120,183,168,119,48,13,124,213,2,16,196,25],[177,190,100,128,229,120,243,187,47,89,58,32,145,203,108,220,14,77,39,232,60,30,15,148,66,239,169,98,96,41,17,35,247,106,26,149,126,28,203,131,54,234,239,22,50,142,42,2,89,147,115,187,188,215,35,63,72,227,243,144,187,171,38,199,197,59,182,86,126,215,172,64,29,99,209,14,205,11,231,200,203,167,122,204,79,76,170,34,124,100,241,176,110,101,40,19],[234,154,240,101,60,94,144,134,247,34,242,49,130,124,241,254,127,135,38,80,203,251,229,71,56,137,11,237,229,114,107,192,12,101,100,177,72,230,128,48,85,93,178,135,176,51,68,16,119,246,121,251,175,180,251,0,172,11,29,198,116,152,11,169,14,241,82,24,251,71,103,134,83,204,207,114,184,33,108,43,57,43,76,166,83,8,119,5,237,138,228,164,198,87,21,23],[17,154,29,238,230,143,152,155,151,242,27,69,118,35,181,106,71,73,3,90,46,106,2,172,107,62,86,244,10,56,32,82,184,200,143,86,97,202,41,100,5,190,147,166,148,41,145,2,158,106,132,133,42,129,184,27,115,131,90,198,11,196,254,18,240,93,205,92,227,76,123,110,0,148,4,228,199,81,214,27,204,134,22,1,67,147,137,142,176,161,225,213,9,153,21,14],[19,3,83,108,180,38,97,147,200,156,102,232,243,225,92,25,10,213,200,166,153,206,232,32,120,81,124,172,40,216,115,227,15,166,26,4,123,204,159,123,135,212,49,120,36,124,235,19,86,51,98,209,62,136,88,104,233,33,131,22,46,50,12,27,244,183,60,128,149,110,175,181,110,203,220,211,248,156,212,101,234,51,185,109,61,73,175,177,245,14,224,192,240,242,150,20],[250,170,195,230,155,146,61,48,199,155,36,234,218,164,18,74,189,26,49,238,156,239,31,63,37,23,71,175,144,155,244,231,203,147,212,235,159,126,246,21,19,79,102,243,246,178,158,8,129,146,13,206,26,222,143,230,62,159,76,182,157,8,172,252,27,37,25,141,224,243,109,237,181,157,37,231,152,153,10,49,208,98,236,187,125,240,229,124,72,38,162,222,70,48,234,14],[76,221,169,49,6,88,220,238,138,104,215,204,31,223,69,139,159,158,231,234,58,87,225,137,96,243,170,19,38,86,91,125,110,49,3,157,179,164,195,237,192,186,10,81,238,127,43,8,201,45,156,186,171,70,183,37,165,214,19,155,77,229,124,237,144,89,64,90,254,182,18,114,63,161,107,165,59,241,40,14,74,36,168,78,8,214,199,221,193,66,143,119,235,52,125,15],[58,208,203,152,126,44,47,242,188,29,206,129,44,121,182,90,193,106,165,40,239,20,74,251,7,121,212,40,138,68,236,241,133,129,13,67,210,231,34,4,1,97,103,103,100,142,93,2,160,205,107,3,129,184,54,221,123,143,1,249,154,196,103,232,49,7,168,227,90,23,41,93,5,233,86,6,161,18,25,138,219,137,216,132,22,90,20,215,224,218,86,188,191,64,214,17],[26,36,251,221,32,230,249,125,213,233,210,88,231,252,28,74,183,215,130,8,195,88,19,91,32,233,129,79,35,101,45,164,178,49,68,150,46,56,41,33,99,211,78,179,140,231,64,23,116,7,194,154,27,199,249,175,79,166,187,28,253,175,73,57,175,30,53,140,70,159,116,102,242,246,73,155,96,129,142,15,8,202,138,103,96,194,218,71,143,76,235,174,201,182,15,17],[56,124,133,129,251,7,230,195,198,219,203,188,68,107,36,89,237,118,124,85,60,187,154,199,177,172,21,210,143,134,197,148,210,2,199,201,248,140,203,204,14,34,202,239,59,22,133,13,49,12,5,65,3,19,49,123,234,65,3,136,218,96,30,245,185,171,65,196,197,8,13,95,7,161,239,223,195,187,175,223,238,121,117,225,125,204,156,31,187,129,135,15,180,89,34,12],[96,253,74,104,35,76,190,217,24,217,72,71,169,116,106,157,73,59,189,226,200,31,1,170,151,216,190,176,96,151,110,94,116,25,108,94,33,84,1,104,209,43,75,114,81,18,51,8,195,211,214,199,74,225,184,77,13,12,122,240,151,6,143,156,41,42,13,207,224,86,19,91,73,242,255,14,218,230,83,12,155,183,138,114,19,17,38,41,84,131,213,228,180,38,115,18],[3,130,106,151,197,254,55,178,61,132,128,119,241,65,72,199,17,212,116,156,93,96,57,176,234,157,15,201,79,74,194,107,157,180,129,252,242,25,134,208,174,211,66,121,60,50,216,24,78,143,42,254,110,0,154,209,213,102,45,232,171,23,253,37,124,201,39,165,122,156,207,18,161,21,60,112,102,99,246,189,16,105,81,195,117,252,108,56,194,185,197,243,248,61,67,7],[10,74,5,23,146,237,161,120,150,162,42,105,106,181,163,153,99,154,229,204,61,252,224,153,46,171,205,38,156,24,184,163,9,192,118,237,54,200,150,124,231,144,201,198,185,237,127,1,162,123,91,26,90,217,28,138,119,13,192,102,171,254,144,165,243,101,3,34,194,213,118,83,111,46,0,208,149,2,130,9,54,173,84,119,127,185,230,249,112,197,157,63,89,53,189,21],[141,243,220,73,151,98,119,157,129,47,217,119,112,109,113,235,165,191,178,165,208,185,145,91,17,179,7,20,158,60,25,128,84,240,174,63,234,250,8,158,110,106,185,140,186,114,74,3,244,215,62,103,140,24,103,145,63,198,28,195,107,33,212,62,83,181,96,147,223,204,95,231,134,11,193,105,133,126,179,2,155,134,58,119,98,68,140,111,237,51,140,160,99,3,63,11],[206,212,92,21,10,126,243,161,166,127,142,150,197,187,151,164,143,94,150,88,190,32,181,17,162,98,184,242,228,75,164,21,104,177,199,128,68,54,110,177,235,113,16,198,188,110,56,25,3,93,42,49,249,22,250,181,14,182,29,127,189,140,163,117,118,68,132,66,125,173,135,25,231,138,82,12,181,122,169,60,80,144,190,153,50,146,47,242,163,129,47,174,102,59,206,0],[117,75,247,178,107,92,25,242,154,143,8,107,29,96,48,27,145,29,101,93,67,216,27,26,77,210,173,247,13,251,193,64,140,51,45,226,39,126,186,119,2,220,212,81,75,5,7,1,111,5,47,197,152,190,204,132,254,174,97,232,27,48,253,129,109,29,100,82,6,4,56,219,145,84,180,42,242,120,37,0,181,71,74,64,28,111,141,151,219,16,151,214,159,131,133,3],[91,134,102,175,92,218,59,43,127,147,125,102,99,97,93,191,208,232,29,26,58,69,145,82,40,202,147,105,206,210,30,94,99,126,186,139,250,128,122,220,64,54,73,170,231,18,200,13,29,106,107,133,203,209,248,238,187,144,184,41,113,62,184,70,97,54,229,104,74,28,122,190,169,62,224,61,206,11,128,222,182,182,8,169,21,24,34,30,195,36,142,80,51,99,143,9],[12,35,28,147,202,6,244,105,240,55,154,203,30,197,132,90,82,145,20,161,22,136,168,99,133,183,119,58,197,218,106,244,103,142,221,145,37,55,150,62,246,102,59,194,229,210,152,23,117,65,53,104,116,90,92,139,33,127,86,228,173,236,10,61,223,249,19,245,38,129,244,191,186,215,187,204,94,176,158,48,53,101,218,82,231,26,54,33,201,35,72,227,71,22,251,13],[229,15,9,134,212,222,204,127,140,27,167,249,43,197,176,50,65,48,194,43,92,251,156,237,45,246,237,101,125,224,228,64,27,196,105,75,93,76,232,122,138,10,229,46,33,231,153,14,242,193,84,149,248,12,227,189,95,73,104,63,148,189,127,125,253,119,35,86,98,120,43,20,80,114,6,130,182,100,31,141,85,158,78,7,126,74,103,212,1,31,183,158,120,25,199,15],[158,165,30,159,39,74,110,215,11,248,189,56,194,218,73,230,131,231,156,39,116,203,24,74,71,71,130,202,164,153,149,68,60,22,15,140,126,6,174,247,104,114,207,199,194,145,211,1,68,10,111,99,195,54,124,161,217,213,178,180,92,249,53,101,15,155,174,165,62,235,87,109,107,155,132,98,88,137,82,48,55,167,156,75,58,73,179,8,56,159,240,159,48,50,11,10],[108,94,119,152,10,92,217,222,178,214,64,227,17,27,157,76,121,14,233,7,147,91,7,14,0,146,173,35,175,117,162,173,50,51,250,202,24,132,251,248,173,206,138,179,72,148,248,2,80,95,139,51,44,72,36,233,170,186,173,11,125,186,66,157,209,245,6,240,180,165,233,132,89,222,159,191,56,233,189,135,163,41,14,58,17,91,237,121,68,204,99,234,182,221,106,3],[114,183,238,41,201,94,87,128,155,84,1,79,205,93,242,129,92,92,84,117,197,209,54,154,142,104,23,109,101,139,251,44,245,113,52,105,28,135,196,164,210,102,43,254,237,142,244,6,157,197,214,104,49,186,245,253,2,154,131,69,248,53,179,97,110,145,28,130,64,128,78,205,110,239,101,141,57,53,13,177,247,174,96,197,25,22,41,96,237,145,219,239,137,15,189,0],[189,76,139,30,216,117,7,6,190,12,10,220,137,61,146,107,126,78,185,65,79,141,19,46,95,113,41,101,95,150,133,32,189,142,24,142,102,156,124,221,151,105,102,247,138,38,18,23,175,196,94,242,182,131,100,45,247,159,126,100,184,232,231,179,135,40,181,47,130,97,192,189,192,107,38,172,242,61,130,28,81,114,124,24,166,130,151,229,54,50,133,175,233,252,138,24],[61,42,214,98,187,213,109,7,13,235,127,113,99,220,149,5,139,148,45,37,15,166,68,168,186,180,46,179,146,245,139,44,102,38,74,116,226,184,53,82,138,82,148,89,124,11,8,16,144,20,249,39,94,107,174,157,118,252,169,24,183,249,200,49,14,39,155,214,53,126,253,149,62,16,177,179,55,101,22,87,223,210,50,154,240,30,5,186,233,85,64,66,248,8,75,6],[88,34,195,153,93,96,78,3,179,41,113,89,24,98,112,159,210,157,22,69,180,12,228,66,224,104,50,21,66,155,191,128,250,109,231,44,160,89,255,22,117,81,57,136,14,216,51,17,142,122,6,17,233,85,104,170,126,202,196,200,16,6,170,250,153,243,207,45,59,255,4,85,56,171,96,36,176,204,36,113,7,180,233,62,251,232,75,186,182,203,199,214,10,102,18,1],[181,90,105,132,248,182,160,35,1,16,115,173,104,80,248,146,97,20,194,233,151,30,173,224,16,165,226,245,73,58,206,187,252,251,124,154,192,75,140,77,128,45,158,49,209,132,198,4,187,57,192,89,233,52,227,189,181,130,244,148,213,240,159,197,3,185,165,127,17,142,159,139,239,210,108,219,114,240,133,244,254,16,81,129,117,160,187,177,168,60,186,163,253,91,192,25],[189,198,197,249,46,193,177,202,240,247,8,25,101,106,3,140,244,29,27,167,11,181,205,210,223,41,186,87,167,125,115,13,125,192,142,210,130,48,23,253,6,64,162,244,231,88,220,8,76,219,31,9,165,210,215,138,110,75,129,240,192,211,190,235,209,114,201,104,141,185,100,147,105,133,122,212,97,28,17,163,74,58,10,19,134,123,85,163,110,124,115,249,47,80,134,17],[86,111,38,139,152,146,207,222,218,119,146,70,1,196,225,198,85,140,226,44,210,0,201,230,147,94,235,65,203,108,16,155,209,86,196,252,81,119,32,252,181,140,57,49,237,52,104,4,158,208,62,190,7,244,128,243,199,133,177,232,26,223,86,76,108,186,69,94,226,181,42,235,151,123,229,145,0,198,80,110,5,23,254,192,155,172,91,81,82,171,28,109,186,127,215,4],[140,165,186,116,16,98,53,157,245,217,199,142,161,115,114,221,194,67,98,163,116,163,181,125,131,111,82,85,196,135,232,238,196,41,91,70,108,248,56,177,95,188,175,247,25,75,140,12,104,82,167,213,149,127,11,130,211,38,180,244,133,242,157,216,147,200,162,106,33,76,122,255,48,54,144,90,176,149,170,57,99,47,69,149,102,27,178,119,121,243,32,234,174,223,30,7],[248,206,177,33,228,220,89,185,96,93,96,148,23,202,174,55,90,75,195,211,144,242,7,128,35,218,211,232,4,79,124,221,80,232,14,90,55,249,22,221,223,190,252,251,204,129,185,9,217,74,236,251,209,227,189,120,187,47,43,10,235,126,51,100,238,139,24,128,60,39,196,100,17,178,110,86,152,234,22,228,145,40,168,241,124,133,93,91,21,171,250,197,188,237,252,4],[228,50,29,106,77,15,80,222,29,173,115,20,152,26,88,166,148,248,59,156,245,254,87,124,186,36,41,129,21,52,123,141,189,140,56,74,6,33,75,172,128,149,224,100,58,63,86,16,131,42,9,198,160,56,155,193,113,147,178,179,218,68,103,58,55,49,84,76,174,102,111,198,6,7,228,28,65,254,250,120,212,195,143,147,216,230,92,160,41,6,201,116,198,195,173,25],[59,23,124,22,119,241,178,116,123,33,88,30,0,163,249,200,205,205,95,185,47,87,46,132,148,253,158,48,2,86,41,100,184,105,159,99,81,242,154,127,42,199,73,121,248,237,107,2,47,25,235,136,236,60,238,190,97,233,7,5,36,208,42,79,162,227,12,189,83,195,54,87,155,235,190,188,186,117,210,176,120,165,183,227,210,173,179,101,174,3,16,56,118,63,126,12],[126,159,110,176,120,250,226,236,248,136,101,178,34,99,103,76,70,167,69,239,145,96,102,187,146,45,86,115,196,104,134,245,115,79,210,198,157,202,4,227,208,113,174,141,149,87,240,7,83,54,87,94,113,227,131,241,24,103,4,51,153,85,48,2,98,204,178,155,62,21,226,203,77,70,120,229,215,67,81,111,155,78,187,184,77,55,75,117,190,150,253,179,30,219,166,19],[118,140,141,197,52,93,221,211,148,60,132,33,144,12,237,148,142,172,213,233,234,164,51,224,217,38,152,160,95,16,50,181,184,53,225,135,179,94,126,241,180,171,125,98,48,188,150,11,50,24,143,237,237,202,252,32,230,82,206,200,240,69,234,15,218,177,13,14,159,153,232,13,231,211,215,14,13,165,57,140,108,40,110,56,60,166,116,230,175,189,234,33,109,96,107,4],[77,29,116,228,28,109,82,203,184,211,76,153,196,238,115,156,66,69,103,171,129,4,87,228,192,61,150,115,55,228,164,43,197,151,236,143,19,197,7,135,130,123,168,242,144,236,79,17,249,198,89,94,68,171,20,69,10,168,53,202,11,21,57,0,205,138,18,228,164,153,188,163,44,19,29,123,151,240,134,128,174,28,223,165,50,176,253,47,143,250,167,234,198,76,155,6],[13,8,88,179,229,249,85,48,79,241,22,86,247,29,49,135,1,57,214,74,200,247,79,215,48,35,132,153,179,87,74,19,147,174,55,155,66,247,218,244,17,112,4,235,13,72,252,1,64,184,125,126,160,101,177,244,96,98,69,135,181,65,76,35,109,39,255,90,6,234,179,223,250,178,233,248,218,97,171,216,136,102,202,88,181,81,107,33,216,8,38,104,58,95,83,16],[99,200,240,186,253,114,223,66,193,90,95,89,150,254,187,181,126,178,50,134,24,162,105,220,247,176,228,41,251,197,236,191,21,137,84,48,162,70,204,77,50,31,174,238,47,241,226,23,40,85,166,6,92,223,162,17,242,221,224,23,220,155,92,28,117,187,27,53,103,19,120,218,34,209,129,243,152,0,171,166,114,254,137,39,88,235,96,175,32,193,41,246,161,213,216,6],[233,55,84,159,144,201,98,244,144,34,254,40,218,162,7,116,104,114,102,190,89,220,104,244,121,56,229,156,162,7,118,52,249,45,242,238,94,21,36,230,204,7,120,162,195,240,222,8,34,242,231,204,100,229,115,163,97,220,27,148,238,229,217,128,249,219,170,78,166,30,249,18,126,20,175,179,234,223,226,192,89,57,10,109,119,100,83,44,172,198,135,254,131,107,10,17],[145,235,54,121,238,131,112,247,160,123,231,184,155,186,137,33,233,184,244,241,169,31,39,194,232,114,96,20,135,180,89,204,182,79,249,202,35,48,1,79,64,251,41,64,128,29,238,11,112,111,140,231,204,66,130,166,211,169,51,118,83,85,215,135,29,37,191,252,9,1,58,209,70,110,80,198,15,110,57,20,172,177,239,188,218,99,57,137,114,58,178,153,218,101,186,3],[110,191,196,50,95,28,74,90,132,99,211,167,102,102,160,15,106,61,184,117,218,245,1,101,20,141,20,132,212,162,38,135,38,145,196,86,179,236,4,40,127,228,141,147,111,65,144,15,54,172,196,66,213,159,29,143,97,208,43,130,185,32,14,13,249,247,202,103,199,143,107,146,203,49,197,223,118,132,224,175,98,62,54,202,227,63,127,22,71,6,223,205,176,75,36,1],[118,86,172,95,252,220,234,216,42,214,96,36,159,236,10,241,9,144,83,150,8,246,172,231,246,126,174,209,254,209,114,66,83,104,54,173,243,68,46,35,0,217,239,207,247,1,174,19,166,128,6,26,157,132,143,110,209,243,128,200,255,81,190,145,173,182,155,21,54,248,188,42,30,139,228,140,123,35,60,87,32,199,84,12,224,164,114,74,190,46,111,171,100,94,232,24],[42,213,114,221,194,21,94,57,117,62,199,232,25,194,190,59,174,172,189,29,221,80,113,41,100,95,173,28,166,174,70,23,69,232,21,8,108,56,44,6,195,58,250,247,35,147,165,21,61,180,107,29,210,71,125,173,221,234,142,138,98,158,63,241,207,143,235,4,47,129,246,105,77,154,118,158,80,117,228,86,177,126,55,214,53,173,165,140,28,233,143,29,247,73,73,5],[140,13,142,72,214,138,147,141,77,28,110,104,10,158,53,64,158,111,1,10,198,118,134,192,201,124,102,163,95,191,60,196,8,133,3,226,65,62,150,82,164,73,164,128,154,174,167,10,253,128,41,58,13,95,18,248,191,237,132,104,168,110,71,118,169,254,95,58,195,149,214,37,103,13,163,83,139,184,103,25,36,184,60,182,140,108,89,157,24,60,37,14,180,134,40,5],[201,30,188,189,147,140,176,142,67,130,1,206,144,182,9,86,171,122,59,80,159,159,101,18,74,114,129,243,197,211,162,90,105,110,141,238,72,34,252,129,155,232,206,251,109,40,83,5,66,211,86,239,173,235,238,190,102,127,70,63,224,125,169,51,74,107,74,42,186,53,173,54,55,221,182,33,81,8,90,147,51,177,177,134,31,91,207,195,5,150,166,41,72,72,48,8],[175,159,125,78,69,206,248,243,225,160,67,26,248,67,163,222,29,113,106,36,222,47,104,106,231,77,59,239,138,60,17,129,223,89,81,103,10,60,172,155,64,226,219,178,194,25,91,11,140,147,27,103,0,110,163,215,164,180,116,43,129,234,89,99,118,222,167,28,62,17,188,71,91,2,99,182,49,17,95,23,162,181,144,74,89,188,189,228,234,210,166,108,156,56,118,15],[229,134,163,252,147,227,111,174,20,134,169,112,68,2,112,133,121,115,58,207,215,219,60,255,126,177,157,240,153,157,226,35,221,31,95,231,90,154,142,73,216,166,222,189,134,216,136,12,107,160,41,134,241,0,57,94,111,159,144,110,1,217,60,106,63,133,175,111,15,229,80,46,35,160,215,30,159,123,155,59,29,4,51,231,163,146,227,227,115,55,170,227,186,12,81,22],[179,10,247,115,98,160,25,236,177,82,246,19,160,227,177,140,239,150,11,60,129,50,49,19,5,234,190,235,239,173,160,5,150,120,235,144,147,240,251,229,164,59,39,117,62,165,110,1,36,158,244,68,95,235,103,192,182,103,36,126,151,55,59,88,103,15,23,193,91,148,130,145,216,1,171,219,131,6,203,36,174,253,90,240,42,140,102,110,162,141,97,138,239,234,54,9],[130,214,113,15,116,115,28,164,81,74,87,13,147,253,104,167,44,171,120,79,223,251,236,94,196,152,40,234,154,18,110,11,174,235,110,238,42,66,58,252,202,24,23,87,116,63,72,25,140,210,185,210,106,196,238,148,113,17,7,246,164,51,153,75,197,227,211,218,75,75,122,95,209,104,113,69,108,218,255,163,229,213,161,208,40,221,156,124,200,35,25,222,77,143,255,6],[223,164,130,110,245,55,241,225,38,98,24,174,54,16,112,82,151,42,197,154,173,214,147,187,138,195,202,11,5,17,149,255,220,127,11,120,215,153,37,103,86,154,21,153,75,155,145,20,56,186,76,186,188,178,155,102,43,133,117,16,224,92,144,3,198,142,92,252,238,99,52,160,5,241,187,73,103,126,100,119,79,11,175,93,98,246,103,243,205,112,220,246,199,4,86,20],[148,0,203,138,127,37,105,226,76,171,30,93,137,230,226,1,255,187,220,201,143,224,46,11,133,197,141,227,192,30,74,228,105,74,185,67,190,171,85,33,187,216,217,190,206,100,215,9,64,227,253,192,188,146,53,205,183,227,55,3,220,46,213,184,184,210,21,155,159,41,160,112,222,139,90,148,62,165,70,36,240,168,179,107,78,58,120,44,125,170,243,216,117,91,149,7],[201,204,129,30,110,12,11,124,102,203,139,153,157,11,254,199,35,111,4,13,160,161,250,82,11,174,155,193,46,157,138,29,2,4,240,97,194,51,144,90,47,20,102,157,180,162,89,0,225,74,75,102,46,210,202,232,5,180,55,2,171,206,81,165,167,116,20,176,161,69,225,104,77,154,235,222,59,192,210,22,123,120,227,60,221,185,94,91,104,254,73,187,57,233,19,3],[208,96,33,15,193,211,174,20,73,165,162,98,168,65,19,110,127,241,136,55,39,95,38,35,122,64,210,182,119,191,223,176,101,31,100,32,98,208,2,48,62,159,63,27,48,207,250,4,43,229,192,151,151,179,205,240,0,9,166,24,154,76,194,85,50,65,233,219,230,184,149,133,23,107,210,130,178,175,5,10,78,239,252,82,102,180,219,19,54,226,4,196,181,55,103,14],[233,136,36,29,71,166,86,249,119,230,2,233,242,161,68,153,122,116,115,97,220,250,171,36,240,145,96,210,203,182,151,118,233,45,95,93,23,199,189,84,24,240,28,228,103,157,185,0,37,27,126,58,19,96,42,244,31,202,222,191,149,107,182,163,226,205,215,35,188,26,155,66,167,113,252,229,237,11,242,186,255,215,199,1,64,86,215,63,52,74,249,187,139,195,77,5],[43,152,17,182,242,204,128,124,67,1,212,14,131,37,28,204,155,201,168,115,141,161,22,190,109,228,18,66,115,58,133,114,211,10,78,7,102,149,255,6,169,159,80,189,165,97,237,5,50,167,105,68,162,42,132,122,173,13,182,46,2,140,239,143,121,7,139,103,24,217,181,217,120,126,81,172,212,16,200,111,46,205,189,152,131,36,245,101,225,143,134,218,138,169,228,5],[127,76,225,4,47,188,11,83,249,106,7,36,184,163,205,163,56,97,156,236,45,80,161,125,51,11,82,173,1,5,97,228,199,165,159,20,180,87,98,214,68,131,108,212,157,63,102,1,55,197,46,134,26,78,143,170,69,68,62,212,180,203,250,217,61,79,166,13,242,177,251,42,173,72,159,115,39,247,34,66,185,54,218,252,77,83,175,25,95,148,246,49,175,158,101,21],[189,188,235,114,12,55,186,100,139,24,8,249,236,175,206,26,57,143,234,124,84,160,194,56,68,195,177,133,145,79,243,94,15,126,150,180,46,128,203,226,219,188,233,111,230,225,188,16,248,82,198,193,36,42,144,49,72,46,148,90,12,179,5,202,215,189,190,222,93,122,143,74,46,204,92,134,243,75,226,168,22,113,133,82,225,99,125,107,222,47,122,242,106,142,166,17],[157,185,133,185,1,211,140,57,35,238,215,75,98,176,27,30,212,99,15,179,2,222,169,173,4,156,178,206,65,141,202,45,63,127,141,116,222,161,190,39,219,166,73,195,151,45,90,7,148,176,174,84,23,238,90,213,187,39,17,197,5,63,147,129,131,182,53,65,45,239,141,50,191,61,9,183,102,16,26,197,147,230,126,118,142,205,62,158,38,247,234,226,162,20,66,4],[107,54,93,134,34,50,22,125,114,26,137,227,123,8,254,103,47,235,185,19,28,237,206,42,200,174,61,130,178,218,156,9,214,83,18,71,226,65,63,199,124,246,7,39,113,188,124,7,31,54,165,36,177,169,35,238,67,247,154,23,189,172,185,83,127,107,175,60,117,147,102,13,134,129,79,25,141,244,239,117,96,24,99,176,13,80,98,60,222,56,105,60,100,156,197,17],[115,23,14,129,169,30,200,157,138,223,122,50,162,255,102,224,192,150,155,207,198,191,79,233,13,182,196,215,107,119,176,14,36,129,229,196,126,164,173,93,5,34,38,109,20,121,158,9,94,195,233,114,33,188,207,168,68,127,124,138,30,101,64,70,30,208,0,171,149,36,6,206,192,247,151,174,45,5,115,230,191,225,233,36,127,50,191,82,51,176,115,51,82,9,137,0],[126,243,254,17,30,20,199,178,219,78,154,26,197,185,172,153,192,85,136,63,137,252,107,32,104,13,15,69,141,37,46,245,245,138,63,235,1,193,118,13,222,110,220,198,232,114,207,3,63,229,118,25,207,122,70,110,82,51,125,132,10,114,176,172,234,248,213,230,162,165,122,196,50,147,80,68,224,139,208,172,99,165,208,50,199,210,8,31,223,154,26,209,66,238,45,25],[36,165,51,124,98,25,167,81,79,43,247,151,1,192,32,23,173,229,243,244,180,140,5,139,234,110,94,83,131,187,180,0,212,182,135,99,103,33,188,133,61,133,142,238,16,140,249,10,23,165,39,247,156,43,227,245,23,160,248,215,173,180,55,40,202,212,159,253,205,15,124,98,164,162,119,246,42,223,59,41,2,80,210,139,122,185,101,54,110,75,41,245,240,41,250,9],[110,118,248,106,40,234,38,232,117,244,214,63,216,24,93,211,18,168,141,215,113,242,221,237,185,83,94,129,119,15,62,98,206,183,96,230,205,168,90,39,21,124,92,165,195,3,186,9,31,3,158,155,10,242,63,113,18,36,60,165,52,253,83,39,245,46,26,83,70,235,206,146,209,11,168,226,134,243,160,124,49,79,221,175,87,110,71,167,138,110,109,62,229,164,85,16],[204,250,10,105,29,63,65,204,49,75,207,196,222,105,67,161,28,46,49,34,1,135,13,152,125,16,179,89,119,4,52,23,249,217,38,30,209,7,143,242,76,158,126,20,20,177,148,14,108,76,119,65,243,64,1,171,88,103,32,45,58,233,103,195,134,87,35,18,111,42,84,7,26,198,61,109,40,11,132,71,162,97,91,253,183,209,157,134,113,60,222,81,39,203,93,19],[175,158,135,230,18,89,48,73,107,216,141,95,159,59,204,166,32,67,41,242,249,240,139,31,128,166,66,162,38,251,181,25,171,156,105,54,14,10,196,61,207,202,13,79,44,234,80,14,169,50,168,18,254,181,97,167,160,72,46,198,10,228,51,73,209,202,122,242,166,203,202,8,157,49,222,185,114,57,57,240,142,60,84,244,94,8,35,52,93,31,49,251,254,181,215,16],[63,110,244,76,161,156,78,38,96,134,31,235,42,53,188,34,201,211,167,198,93,238,37,85,142,60,95,151,134,55,204,188,170,76,117,211,5,243,187,72,251,108,11,26,109,70,78,11,73,75,164,46,210,64,203,149,250,48,100,81,138,96,188,69,117,34,62,61,162,75,13,245,82,115,185,63,176,172,195,216,5,135,71,179,103,135,220,109,104,214,133,25,150,108,161,17],[50,150,14,29,183,120,118,220,27,93,216,195,73,31,181,221,130,26,193,138,195,69,41,243,166,235,200,31,233,254,67,93,217,116,79,64,212,82,248,116,166,16,178,115,35,126,102,5,34,94,206,118,172,197,189,122,249,83,96,66,141,226,22,209,221,153,136,220,189,24,168,26,91,102,229,116,170,10,178,167,224,80,5,76,116,64,40,92,7,69,221,171,45,71,54,1],[60,154,7,36,82,44,171,251,157,225,198,99,54,20,204,8,207,200,22,120,243,116,24,216,167,31,246,86,247,27,146,245,160,109,10,221,143,182,164,36,253,77,98,75,104,175,168,10,187,150,13,84,171,210,171,176,15,228,217,19,6,221,29,118,57,95,208,75,148,8,136,111,12,122,207,66,43,1,183,100,250,142,252,46,154,92,39,2,77,113,202,150,198,23,216,19],[161,167,198,170,123,64,102,251,15,227,116,100,231,38,128,62,39,137,107,150,117,144,110,22,63,34,221,219,85,38,160,87,176,10,129,187,243,135,96,107,2,21,182,245,225,139,231,1,158,75,227,22,100,31,214,38,0,33,224,247,108,241,69,175,205,162,109,248,113,195,222,96,58,168,88,204,247,239,15,186,228,36,241,142,10,134,80,23,233,37,20,67,125,78,216,19],[49,176,231,83,197,245,209,226,148,126,198,246,253,78,144,91,95,203,149,18,136,189,149,5,82,138,222,250,127,244,127,243,254,104,170,176,46,146,142,111,239,160,231,94,130,100,252,8,112,95,115,63,12,217,142,166,192,129,50,8,190,9,83,102,109,72,26,189,103,102,65,72,93,87,19,148,153,134,197,31,246,164,69,198,208,65,147,64,170,202,115,168,181,84,51,0],[81,86,76,60,221,65,249,243,108,43,88,252,181,152,79,98,81,184,60,149,135,160,148,217,192,53,194,220,118,165,149,89,31,216,6,230,245,3,228,210,108,32,224,199,81,127,149,13,135,230,244,9,216,89,196,134,145,47,25,52,88,114,201,210,186,221,176,189,109,49,24,142,12,143,179,120,114,104,116,195,244,9,109,153,42,156,61,158,240,216,224,125,213,23,175,7],[102,180,84,116,10,207,31,159,64,70,212,148,25,48,81,87,93,59,255,67,202,129,81,6,86,17,251,115,161,225,45,46,91,187,191,252,211,37,174,26,129,8,115,137,99,76,190,2,138,56,32,97,223,87,22,184,0,6,209,95,95,107,130,16,110,223,55,50,94,36,88,158,30,72,1,176,15,166,135,75,236,121,85,77,44,161,206,171,71,236,23,114,238,119,158,6],[196,206,158,239,26,197,100,119,1,80,123,13,210,178,129,169,248,1,78,54,185,117,105,226,10,165,38,231,206,24,232,195,128,142,99,49,45,86,85,100,237,138,56,61,56,202,164,16,2,208,121,83,58,251,209,42,211,49,90,225,154,146,168,154,135,59,130,153,84,8,178,221,221,152,6,235,150,178,169,142,131,148,173,29,131,230,230,164,39,0,63,26,228,34,150,2],[236,41,202,151,217,116,253,88,58,89,233,6,251,95,223,109,203,185,212,213,210,177,94,201,80,202,124,49,63,140,128,123,8,118,221,158,154,141,109,100,248,192,184,8,103,100,106,25,124,71,222,163,6,209,157,104,9,38,168,253,14,55,71,199,90,98,225,81,41,157,78,179,163,202,178,71,108,56,66,36,253,249,39,81,11,246,124,83,76,4,3,91,234,136,235,17],[62,105,39,91,25,66,147,18,81,102,6,32,95,69,55,33,83,36,62,81,5,81,98,75,255,144,41,157,42,118,157,180,107,230,110,22,225,150,55,214,124,118,227,185,196,251,190,23,189,16,149,143,112,58,63,103,20,212,137,233,230,83,112,27,3,175,178,148,223,202,174,203,104,162,171,247,56,38,220,254,2,190,70,183,207,167,183,60,179,217,204,200,244,191,127,7],[209,178,185,192,163,135,142,39,204,42,236,59,218,48,151,46,165,80,105,254,66,218,3,156,9,246,53,196,216,114,135,117,8,199,37,151,149,253,109,236,166,141,206,203,33,85,229,13,254,106,65,192,246,111,250,75,15,249,215,197,68,19,4,20,97,24,160,159,132,183,86,93,0,76,165,239,100,254,142,124,116,113,59,41,149,73,194,121,132,146,36,104,124,76,174,15],[197,249,211,65,136,183,89,110,196,249,130,104,35,141,74,111,234,144,251,241,109,119,63,244,133,32,93,92,255,124,144,205,153,66,157,89,227,46,58,191,149,200,42,29,169,3,217,4,199,194,24,213,169,7,227,41,186,39,91,197,230,18,22,17,52,118,255,69,180,143,161,189,18,148,105,43,149,170,14,30,128,229,137,55,61,114,106,4,212,22,76,250,54,166,2,15],[215,141,207,75,93,116,111,194,68,112,53,125,186,76,88,96,81,36,127,60,20,233,95,115,77,75,246,12,107,117,51,126,145,188,238,202,35,59,47,245,79,47,114,249,74,132,71,3,5,38,40,251,102,128,63,132,77,255,13,96,20,56,38,74,16,130,228,7,214,24,46,106,120,234,235,62,133,246,68,78,116,229,157,138,81,202,20,217,110,55,104,5,132,19,4,12],[48,217,201,127,73,41,155,201,84,235,62,77,10,45,212,240,83,154,93,143,242,221,171,123,238,169,23,30,238,0,172,134,193,61,76,129,17,82,52,28,46,112,159,229,215,139,59,7,178,82,37,19,71,178,103,248,190,19,197,45,249,115,83,170,235,134,4,225,178,76,115,5,82,251,130,67,2,151,164,46,224,180,165,207,35,151,189,186,251,70,198,111,253,60,30,22],[84,197,159,225,154,176,39,120,21,183,119,65,175,123,158,38,20,193,81,73,126,30,11,195,172,17,109,120,129,96,164,56,165,179,161,97,45,100,208,133,138,16,1,202,199,176,126,1,142,203,30,59,14,208,189,33,163,99,254,32,114,127,142,94,89,108,186,18,243,224,38,27,86,59,142,145,171,108,43,191,92,70,221,207,5,114,133,94,103,83,250,40,80,219,23,7],[75,253,143,49,199,114,102,142,158,200,90,97,140,123,222,157,137,93,35,221,9,6,225,154,28,0,99,155,249,131,158,141,78,132,232,60,91,78,32,46,102,194,199,75,216,148,26,5,226,133,116,111,157,57,182,214,198,39,132,233,90,245,188,66,235,13,133,191,254,212,85,104,205,69,255,55,87,133,160,138,104,159,147,32,210,168,62,28,94,55,177,167,192,88,58,17],[249,14,211,89,223,58,27,105,76,75,13,106,28,134,47,117,6,13,52,173,28,76,94,180,57,92,179,194,189,24,60,200,166,64,30,198,197,240,217,81,193,247,248,180,171,44,0,21,175,248,164,227,66,145,48,86,181,63,78,70,20,180,133,60,136,12,215,112,69,90,121,232,8,34,134,2,173,59,167,12,229,237,197,51,192,130,131,234,31,47,100,181,83,163,212,25],[156,173,198,181,155,173,160,26,156,209,88,92,149,175,223,48,192,199,226,131,201,97,16,2,50,192,193,1,144,198,252,91,69,184,29,86,87,123,89,168,254,138,216,165,32,180,113,10,246,46,34,150,169,27,207,215,28,25,61,178,124,54,84,202,44,46,2,237,80,104,76,61,166,162,170,30,178,224,115,112,6,5,202,82,49,76,25,215,204,150,2,254,184,8,5,2],[132,246,159,240,247,224,175,9,160,75,111,212,26,132,24,208,96,117,12,180,107,20,25,156,4,233,171,169,72,77,12,37,93,143,7,131,119,214,12,61,142,34,166,104,75,49,125,23,64,45,2,19,254,176,62,192,158,107,199,46,116,50,234,69,167,140,226,255,197,8,211,11,81,228,66,217,55,185,69,175,217,194,216,169,84,3,197,130,86,230,123,234,198,205,174,6],[50,200,38,178,181,112,127,24,31,238,85,87,58,137,11,51,207,33,2,107,104,222,141,107,137,118,225,193,248,72,92,145,98,237,241,201,27,245,25,182,174,104,160,185,180,229,178,14,86,113,220,200,164,236,244,200,172,31,77,10,207,88,86,202,151,232,189,207,37,123,46,200,93,47,173,13,60,67,208,43,88,80,108,137,100,255,251,47,186,165,196,223,215,117,197,10],[33,43,126,221,40,23,172,21,198,7,1,235,87,135,26,224,241,20,165,109,223,54,139,154,5,58,60,171,165,47,123,150,204,220,69,3,109,7,247,250,160,178,116,253,190,21,223,10,238,121,53,115,146,62,189,81,4,194,177,91,45,51,228,89,58,148,129,129,171,145,86,63,153,232,85,2,247,97,74,171,212,135,123,233,225,118,120,115,61,130,84,219,246,72,70,9],[45,120,81,139,102,138,58,175,216,75,200,192,38,157,57,138,61,226,3,111,172,65,83,172,30,190,103,207,227,95,117,174,109,144,191,149,18,218,61,117,68,178,144,188,124,109,165,8,124,47,135,204,151,185,219,191,203,197,95,182,119,148,22,166,152,181,138,189,176,212,216,11,200,155,89,90,179,166,255,113,167,91,45,86,111,110,123,24,6,14,107,157,189,156,49,7],[145,5,55,229,198,191,217,13,229,237,166,12,248,65,78,26,231,7,179,118,48,118,17,106,236,196,29,104,170,170,174,182,118,95,114,134,139,26,204,224,153,249,198,10,204,61,209,8,31,85,231,65,201,202,132,97,135,165,61,1,88,98,152,42,52,224,41,40,238,236,221,154,176,12,143,143,23,0,20,169,216,86,191,205,231,159,244,90,153,234,223,155,197,144,146,9],[13,5,177,161,221,148,153,82,221,210,249,174,228,36,241,26,25,230,206,152,163,34,131,132,212,171,68,25,174,253,183,122,254,118,50,252,31,213,134,254,214,194,74,155,114,208,209,16,49,210,61,77,190,231,213,43,62,46,53,176,112,94,227,193,57,34,24,172,90,72,184,123,33,101,200,137,76,74,150,160,239,80,86,182,187,98,185,81,214,168,241,235,237,157,18,22],[154,35,243,124,129,233,238,214,193,250,246,189,167,220,190,70,31,196,212,90,240,87,113,213,150,64,153,150,247,115,59,100,112,5,231,75,59,6,211,177,135,167,49,219,96,162,38,19,105,180,221,81,166,69,158,0,1,49,129,146,148,215,221,74,129,36,205,75,101,75,179,70,244,246,151,222,94,93,74,12,11,139,156,235,130,183,113,237,131,249,164,135,240,92,117,21],[79,83,201,127,174,191,83,220,142,81,243,32,251,253,130,12,192,2,187,243,34,153,202,155,104,97,28,233,78,235,118,228,161,61,13,153,48,51,140,78,151,36,254,222,101,123,132,17,140,72,98,26,30,230,82,77,139,11,176,173,147,68,222,121,143,50,237,111,38,11,20,74,250,7,25,201,216,33,36,164,250,112,176,49,160,66,180,134,131,41,147,226,150,85,25,14],[52,232,212,100,69,98,143,35,61,73,21,27,59,153,237,120,138,195,182,187,253,163,128,180,158,248,196,36,52,135,238,53,37,22,93,253,4,143,168,255,85,252,123,84,173,68,78,17,11,175,2,205,171,244,76,64,98,82,96,18,221,119,225,21,98,143,77,65,44,99,1,5,55,34,172,6,177,38,214,186,82,84,98,80,116,141,195,111,101,210,133,64,47,239,200,17],[5,104,155,20,124,27,21,44,94,109,255,158,15,106,167,57,181,238,234,158,210,109,159,186,172,118,94,223,160,43,231,206,244,152,185,213,45,141,15,121,17,26,171,172,194,179,72,11,166,220,212,89,39,111,211,252,194,2,204,125,80,5,59,133,232,44,176,16,197,199,244,163,200,174,71,205,240,130,208,227,31,84,108,169,175,145,221,115,19,137,110,53,104,144,56,21],[18,82,138,28,69,247,57,9,109,70,157,75,21,72,107,71,27,15,124,137,63,79,153,107,56,37,86,11,187,127,100,98,101,121,56,5,75,242,32,45,7,86,22,164,57,190,195,11,192,160,59,177,63,244,51,228,47,188,34,236,64,119,79,252,105,22,218,254,62,65,138,218,66,43,191,203,25,14,207,131,145,153,134,33,224,42,254,160,38,176,92,174,132,123,106,13],[61,98,87,182,194,59,41,254,249,212,18,186,200,249,214,91,149,131,44,64,253,70,117,50,64,180,249,14,247,19,146,69,234,53,216,223,25,54,83,207,190,107,115,64,57,6,183,23,195,4,40,114,12,22,246,235,221,33,104,255,188,60,10,47,19,119,105,226,1,183,80,48,182,88,69,48,111,207,162,234,236,199,104,39,16,12,168,240,189,57,195,97,155,252,226,21],[135,16,100,185,147,137,34,37,218,135,167,14,180,189,104,107,102,3,184,209,213,84,203,169,113,235,200,129,202,62,18,118,132,197,206,184,143,45,221,246,109,134,107,21,197,69,81,15,132,245,153,91,56,149,126,103,179,120,172,213,62,202,230,183,31,143,102,164,194,249,32,94,110,240,251,188,73,225,73,84,123,146,109,210,26,144,110,132,156,88,240,149,88,149,253,20],[244,198,141,101,83,153,4,162,222,242,101,160,109,195,94,178,62,225,78,37,195,0,195,14,94,201,65,2,215,211,56,155,38,32,190,77,127,165,7,225,242,48,204,171,240,70,62,23,36,144,176,180,13,15,108,130,177,103,179,254,117,180,250,208,180,211,127,175,143,101,254,241,105,21,142,22,172,130,140,230,167,54,101,169,171,115,41,235,95,190,84,147,216,70,56,0],[226,12,231,225,223,215,217,18,196,163,124,158,148,143,68,159,231,221,102,100,127,81,97,125,247,135,83,225,188,165,252,100,131,205,174,218,78,46,73,26,245,171,60,49,141,250,201,4,159,169,25,22,171,34,45,212,37,78,123,213,28,60,192,6,237,223,2,56,100,166,147,203,128,193,207,143,2,33,58,26,70,173,175,175,205,45,217,242,158,19,186,228,12,52,100,17],[27,1,102,133,120,38,90,103,22,35,70,76,152,27,183,6,152,140,105,40,168,98,237,220,39,55,174,154,223,99,101,196,223,33,199,154,202,2,116,219,238,27,156,121,194,193,108,12,30,30,20,226,213,122,81,201,143,131,186,175,56,186,213,212,127,17,183,58,23,53,231,187,181,50,239,232,177,92,175,46,224,24,213,253,186,144,33,237,89,249,158,232,236,33,192,18],[223,233,235,135,235,56,1,107,163,53,138,108,199,174,100,93,29,16,62,144,56,59,153,22,102,2,103,5,149,58,227,156,154,82,125,202,70,122,154,237,224,62,32,42,140,107,80,12,11,35,223,204,179,30,235,30,94,48,12,186,38,216,39,204,68,48,160,253,74,75,81,151,241,182,155,84,111,92,187,130,110,136,184,89,1,213,97,125,212,207,23,249,249,206,0,0],[126,49,20,179,148,183,40,73,220,153,25,177,164,65,201,250,167,21,100,180,226,146,130,63,56,217,251,9,84,133,197,126,31,168,239,99,202,43,214,225,184,66,97,133,189,218,163,9,67,182,150,104,77,105,68,84,90,63,139,123,164,127,194,50,8,222,248,165,184,245,229,75,174,227,59,58,155,237,136,10,132,187,33,24,220,79,232,59,200,91,240,244,131,176,108,16],[202,14,14,157,251,224,199,227,125,19,43,29,94,196,73,26,106,122,51,175,231,63,211,146,111,10,35,206,20,81,32,179,100,39,145,23,247,114,209,114,107,148,23,254,95,117,46,14,218,99,203,199,177,53,143,174,246,97,124,25,144,201,216,106,145,88,163,61,103,56,79,4,214,207,56,30,117,225,138,161,104,167,63,201,109,0,198,101,11,21,249,93,186,176,75,8],[68,177,27,186,201,247,20,19,233,37,104,219,94,148,201,249,167,240,31,23,105,81,177,191,77,206,246,200,133,102,116,106,196,234,89,162,127,61,111,25,212,184,78,45,205,178,216,15,227,133,69,7,67,237,21,6,33,50,126,230,187,233,208,177,215,235,108,17,174,31,80,0,244,113,90,51,99,146,218,200,245,43,251,218,49,159,43,35,54,99,102,83,253,238,62,10],[35,57,162,141,228,207,176,14,60,185,203,115,231,80,246,198,2,92,32,29,54,17,139,237,102,35,223,210,148,90,210,175,25,101,190,52,167,200,153,220,176,121,193,113,132,217,98,8,96,216,159,18,149,3,104,160,51,161,111,247,191,134,229,107,176,177,166,11,251,230,102,50,139,44,35,231,233,207,113,80,251,106,141,18,44,11,192,190,234,184,236,142,27,45,56,2],[200,7,164,18,164,222,246,158,173,139,192,152,92,165,82,161,28,50,56,93,131,164,253,39,49,251,215,149,75,13,166,148,22,70,225,15,184,115,183,218,86,146,21,165,159,228,71,12,152,73,252,212,211,159,240,243,232,152,166,75,136,38,218,157,136,212,189,229,177,134,32,239,12,36,232,43,118,7,19,168,54,201,25,165,66,160,67,23,44,220,23,52,55,110,182,15],[158,32,97,33,176,215,23,3,240,27,220,28,173,13,239,44,105,124,95,150,225,77,2,203,22,210,147,185,142,141,184,49,155,229,165,101,246,168,103,95,33,229,233,191,235,54,141,22,4,2,217,27,45,131,2,42,188,55,61,105,217,207,149,114,215,221,102,195,45,79,210,255,161,123,10,71,48,212,26,203,215,128,97,156,207,130,149,29,163,187,215,162,143,62,237,11],[186,160,230,67,222,205,229,77,226,80,152,54,159,150,6,197,211,76,250,186,113,237,138,247,159,217,203,69,49,8,234,78,6,53,241,143,73,145,216,129,214,184,131,4,78,161,212,5,110,98,23,125,37,158,253,207,20,107,54,158,49,231,7,84,96,77,28,88,55,134,123,229,184,254,242,166,72,131,197,219,36,149,60,225,243,89,177,91,13,243,146,102,12,127,220,7],[242,108,160,115,253,20,164,83,46,8,242,159,16,138,214,107,188,31,154,226,146,136,250,94,87,144,85,8,105,112,224,39,151,119,146,165,136,223,207,252,63,193,12,143,67,28,85,11,88,1,238,33,169,103,193,135,142,156,203,115,147,92,150,228,175,77,192,142,170,126,118,202,140,25,62,58,92,68,109,239,173,80,103,96,166,172,48,19,225,201,25,157,184,236,183,15],[157,240,91,111,46,136,185,178,88,79,133,20,192,109,74,103,226,19,74,231,231,196,227,91,99,229,78,18,211,139,239,133,204,248,229,137,174,122,228,182,227,223,165,0,121,196,41,8,228,241,199,76,144,135,21,133,60,241,18,59,36,146,197,67,41,139,175,167,105,73,247,58,111,127,243,220,46,162,56,160,199,36,160,108,236,67,207,10,119,59,227,178,99,23,181,15],[21,128,124,27,110,84,130,52,66,155,49,129,173,42,229,87,153,104,246,161,139,95,196,205,17,97,164,162,32,150,120,179,244,236,102,142,56,244,254,39,198,195,86,186,201,36,178,12,31,232,69,124,237,147,215,219,54,35,97,67,31,64,61,228,13,238,121,119,101,3,172,30,84,167,197,184,224,205,60,181,209,84,44,47,210,208,165,179,123,67,67,60,104,232,37,22],[109,139,58,49,181,55,156,226,10,164,248,38,253,219,66,43,40,137,79,116,63,246,71,159,204,168,134,224,80,240,65,226,184,50,37,140,35,183,160,69,115,85,22,195,245,184,250,17,243,176,95,174,85,207,209,17,8,140,96,236,225,31,244,232,136,88,117,204,113,216,56,243,141,153,135,122,252,182,54,32,226,165,135,83,129,58,12,195,208,131,87,102,172,171,109,7],[157,43,90,156,122,213,168,1,34,107,162,154,149,46,235,41,176,158,218,252,28,215,58,130,66,28,34,196,240,118,29,251,84,66,112,2,120,169,90,106,213,162,54,240,74,246,162,3,87,156,221,130,187,226,228,93,72,146,55,145,185,27,236,27,19,92,194,136,107,58,120,78,55,56,92,255,29,83,131,177,168,53,240,178,59,204,158,53,119,249,211,189,58,36,3,7],[206,107,192,175,247,120,119,63,64,171,104,76,99,64,181,126,154,41,180,59,71,60,180,104,14,51,169,76,48,2,21,219,181,216,225,68,243,143,146,222,165,40,9,131,255,70,201,23,158,126,180,125,3,13,61,115,84,157,211,64,125,220,191,189,94,241,3,98,125,153,6,144,142,191,169,232,75,82,87,103,192,43,250,18,129,30,227,137,143,175,59,195,255,67,8,6],[221,3,255,33,47,107,230,121,97,209,229,33,117,128,155,76,28,162,14,229,78,67,241,195,201,121,155,218,195,149,126,97,7,75,64,188,165,44,108,235,121,238,115,61,126,103,140,20,74,199,247,188,44,193,19,27,234,232,28,79,204,172,254,174,220,136,48,28,202,189,212,57,3,154,2,176,72,52,197,200,91,26,218,25,236,147,137,44,173,24,126,86,189,191,146,22],[48,71,149,230,162,104,253,99,207,170,104,58,167,40,196,212,146,95,63,109,236,87,39,70,39,49,101,155,233,43,21,27,39,179,154,215,28,195,213,87,193,171,237,244,186,133,107,15,87,62,57,177,66,131,83,142,84,52,59,195,170,224,78,14,214,241,23,52,252,96,71,189,243,32,148,146,255,109,198,249,57,2,29,76,55,54,175,152,39,195,1,65,219,141,7,7],[65,19,145,99,18,90,215,140,114,98,84,22,191,77,113,206,2,187,163,7,202,254,40,27,195,155,128,125,123,173,149,159,193,194,217,188,210,212,174,173,211,43,84,58,35,64,166,22,169,101,217,162,204,222,136,135,239,194,255,51,81,187,123,5,234,180,85,51,177,36,129,78,65,149,93,116,38,171,198,72,79,165,228,172,84,209,174,236,210,19,179,211,250,175,96,13],[100,180,39,249,217,8,140,147,140,37,26,20,160,185,145,177,143,99,234,178,162,128,87,234,232,22,224,122,143,189,141,21,116,111,138,139,219,91,92,11,75,21,206,221,4,184,128,8,202,33,1,254,155,10,146,214,101,97,55,29,84,81,103,12,236,47,162,214,131,165,181,110,244,87,214,107,64,200,250,110,192,229,168,206,229,139,49,92,201,12,101,157,223,215,39,18],[31,51,169,6,210,73,197,224,126,73,59,186,104,119,230,121,8,43,247,171,36,236,43,238,179,92,166,5,189,128,111,226,43,82,237,18,182,20,83,118,84,110,236,100,116,59,147,22,194,222,196,251,13,131,51,62,251,132,224,103,197,58,193,245,198,120,133,113,216,5,63,142,218,15,99,151,172,247,198,163,28,205,32,235,130,216,27,104,215,197,197,168,192,149,10,12],[183,98,83,226,166,163,20,80,124,238,118,142,108,99,8,0,235,170,54,5,59,186,155,219,117,208,130,220,0,44,219,37,170,194,9,219,124,117,244,191,239,166,176,99,232,232,177,5,231,179,47,103,168,76,156,123,58,205,67,119,101,42,62,42,125,22,135,127,173,14,44,181,223,185,57,17,154,198,83,60,201,73,217,199,13,24,20,71,240,11,142,225,253,54,241,16],[181,150,145,0,229,163,63,150,67,149,111,124,226,157,188,106,251,58,86,27,151,110,124,124,92,186,126,190,22,8,34,98,130,4,149,205,129,234,235,42,34,130,99,254,225,154,50,8,89,82,87,86,19,95,97,28,62,138,22,234,50,46,214,198,51,78,34,138,72,78,48,56,249,192,252,139,32,104,226,252,245,152,61,39,83,176,69,173,124,196,28,91,212,239,186,22],[129,130,212,237,4,19,143,162,34,109,126,32,13,109,132,135,24,131,42,94,226,6,227,91,125,63,12,86,220,113,193,96,32,82,233,36,77,49,226,162,236,212,195,237,14,17,45,3,209,109,84,54,74,245,183,212,41,127,135,113,219,30,239,34,200,251,191,29,64,87,48,113,130,60,101,216,130,149,218,27,94,77,242,126,58,144,16,171,4,135,174,198,140,52,113,18],[109,38,171,114,220,174,221,97,230,198,1,170,7,184,107,136,113,230,183,139,104,204,6,18,47,203,220,159,175,40,149,34,231,139,173,200,134,21,13,43,100,134,167,228,253,75,137,23,155,214,81,73,245,72,164,180,116,187,111,8,132,24,202,136,76,152,202,103,116,248,111,104,231,240,190,202,64,86,169,36,144,77,114,237,69,124,139,21,87,18,177,74,215,5,68,12],[6,197,222,3,136,175,84,208,10,212,68,203,118,79,71,188,112,99,103,21,82,116,114,122,223,168,99,208,74,27,145,66,130,96,171,183,143,247,173,42,250,126,243,50,24,144,206,22,94,22,147,37,107,83,41,71,10,162,218,141,247,249,26,27,22,211,106,151,118,44,186,1,217,219,253,53,89,1,160,228,254,162,33,194,22,176,152,187,24,150,63,242,222,57,222,12],[202,195,170,238,2,185,169,249,181,243,138,32,165,111,66,21,94,119,75,40,7,108,92,82,179,148,181,115,237,112,116,242,12,140,191,136,31,29,143,148,18,161,127,250,60,159,34,8,31,220,81,28,21,148,234,251,159,180,123,215,87,79,122,92,134,61,48,1,46,181,178,115,180,78,210,136,175,214,169,57,250,137,211,142,149,11,32,164,14,18,211,72,152,120,177,20],[173,140,72,142,200,228,34,34,16,2,56,43,56,194,240,179,32,47,105,255,113,8,128,212,216,54,42,139,34,50,48,171,243,35,193,238,107,48,19,189,66,22,113,216,27,72,48,21,192,247,222,89,243,167,66,168,122,155,43,72,152,145,166,111,214,167,228,211,194,127,171,44,83,165,111,107,196,8,60,110,228,75,29,249,1,12,167,54,80,144,92,7,164,47,1,19],[194,156,76,221,134,77,151,80,137,72,60,247,114,96,143,136,113,109,176,86,145,124,166,210,11,23,109,184,220,174,191,171,25,118,113,4,175,171,100,154,175,138,212,214,167,181,144,6,90,140,65,180,8,118,66,200,223,192,90,136,180,167,4,152,152,42,99,18,75,80,245,48,1,101,102,165,31,253,102,228,132,216,158,179,6,118,118,22,99,110,93,85,115,74,95,21],[141,67,177,53,57,149,42,31,84,201,82,139,56,171,70,14,18,232,1,37,34,205,131,94,108,219,25,78,37,107,28,77,220,77,20,223,48,156,201,201,179,255,199,44,185,69,241,8,212,247,23,247,139,83,131,234,120,96,32,235,142,244,203,121,96,121,137,17,96,45,66,191,204,247,0,206,145,2,209,140,44,129,38,66,107,12,81,230,94,86,125,159,244,132,11,23],[32,147,77,206,60,56,143,75,222,172,5,51,93,128,14,204,243,92,220,250,100,4,145,174,131,128,231,82,73,204,67,146,252,103,118,3,116,211,134,153,149,253,188,144,203,180,42,24,181,132,61,22,65,5,83,132,86,74,130,101,111,127,6,209,38,150,77,125,244,185,190,129,147,234,231,200,224,121,86,145,199,133,54,64,163,123,87,139,244,34,51,48,104,82,81,18],[126,204,49,218,114,71,53,97,254,180,125,131,38,43,215,161,51,41,156,37,168,130,6,244,132,86,115,50,187,229,93,94,111,182,27,249,10,153,29,53,67,56,31,9,200,52,26,13,207,116,236,162,104,201,106,134,49,188,197,177,52,174,92,24,182,185,105,63,211,207,84,209,191,156,254,207,28,223,190,86,113,232,11,247,102,35,189,193,188,40,122,169,168,142,158,18],[5,234,218,121,8,56,249,101,87,45,203,250,32,86,145,201,136,240,171,40,75,26,82,124,241,167,1,89,159,220,39,90,65,77,107,182,219,120,1,137,80,141,32,239,158,3,140,7,67,225,165,155,100,239,55,33,31,44,10,219,13,161,236,246,174,1,83,24,192,101,120,36,216,251,187,35,163,92,233,3,104,178,105,106,208,252,25,134,127,83,162,209,153,91,113,8],[136,9,233,146,66,51,144,192,39,211,180,188,174,21,174,83,30,219,83,5,157,60,140,12,103,128,34,85,13,30,87,27,195,128,252,217,121,30,163,18,26,141,179,108,163,161,208,10,118,123,225,72,9,181,181,234,142,199,158,77,208,158,134,45,210,235,234,159,101,65,230,144,157,187,221,78,255,195,53,28,179,233,136,128,54,74,135,8,67,114,234,244,216,186,12,3],[119,241,20,163,172,243,169,145,217,219,171,208,93,133,238,69,23,232,101,173,227,81,208,16,141,173,162,77,178,79,249,196,222,110,57,245,224,247,103,107,108,249,202,130,98,143,229,10,145,21,135,187,27,180,238,173,85,203,8,253,184,213,64,1,97,23,97,25,246,149,139,116,8,161,128,15,116,61,99,20,1,94,133,24,75,71,145,19,28,136,101,38,197,170,234,5],[151,40,100,28,255,100,36,192,32,100,129,106,73,103,158,53,183,250,51,176,209,176,55,28,77,125,219,66,140,32,57,92,228,165,149,158,125,69,90,55,17,237,174,95,190,208,249,22,72,59,109,72,33,229,160,193,62,230,193,205,252,226,103,165,13,167,220,221,178,41,178,36,200,34,248,11,95,109,161,143,23,220,215,3,207,151,143,146,175,94,93,28,182,206,121,17],[220,49,102,13,206,45,28,213,126,186,139,181,124,186,104,230,138,161,84,191,129,14,218,7,86,190,24,119,248,46,64,120,224,64,138,15,103,225,111,154,208,19,254,9,97,94,226,23,229,108,2,122,129,97,41,99,21,125,142,41,225,182,112,238,81,38,172,224,162,243,0,50,238,136,7,95,146,85,22,54,192,225,189,208,156,57,194,94,21,1,97,235,218,184,173,13],[132,10,106,197,109,149,90,112,197,9,106,246,93,140,93,7,104,173,36,245,20,125,84,108,96,187,201,52,20,230,10,188,165,30,83,4,49,112,101,161,203,6,129,47,180,149,114,6,149,244,25,240,19,80,151,82,169,17,57,49,209,101,98,209,20,192,74,79,82,33,49,71,88,82,76,228,224,54,104,124,184,117,95,202,129,107,233,182,158,7,85,42,255,142,232,2],[2,247,18,108,215,132,220,159,199,226,208,114,89,97,139,157,217,41,108,157,139,16,5,206,210,73,13,110,239,174,105,132,123,178,18,121,229,131,9,167,176,128,115,149,113,246,115,8,167,57,92,125,211,3,243,211,228,188,63,30,69,127,238,117,187,37,200,166,101,201,211,191,220,53,19,247,67,124,69,47,184,239,68,199,34,46,5,81,215,62,207,179,46,25,183,15],[204,29,110,9,18,156,175,160,23,160,135,130,232,127,147,142,88,124,211,193,20,126,140,250,83,52,50,239,37,27,80,135,111,111,179,42,134,82,115,166,193,29,18,46,209,60,47,21,188,117,67,178,87,202,180,52,43,17,191,212,22,216,34,38,220,55,1,162,221,115,184,109,125,134,72,9,145,34,228,247,250,235,50,6,129,100,52,186,31,107,64,147,107,99,182,12],[7,108,150,13,96,9,27,238,204,255,108,123,181,51,45,0,63,21,246,92,170,237,216,61,80,27,171,73,128,226,25,176,26,157,11,65,133,49,63,95,97,5,170,23,225,63,32,14,156,131,239,253,40,234,154,219,41,155,88,101,173,143,83,30,204,188,172,233,16,171,140,49,94,156,106,60,252,96,147,99,100,133,144,99,99,190,212,150,14,154,135,228,53,99,69,18],[58,177,218,103,29,245,14,18,14,12,130,245,110,185,195,214,210,108,58,240,117,204,95,122,5,65,174,2,30,173,200,43,30,164,174,165,77,151,14,227,113,195,45,84,121,206,123,8,183,64,25,99,219,146,255,208,224,144,24,103,221,182,225,61,229,42,132,112,107,62,184,229,72,170,126,76,177,197,184,194,117,40,40,184,168,187,113,84,97,111,135,98,252,120,164,21],[113,124,78,119,72,23,129,148,185,139,167,26,210,162,138,240,176,222,72,147,8,58,233,85,64,148,37,218,33,60,94,171,224,132,185,238,149,46,59,8,71,15,233,194,16,66,160,11,124,175,128,138,217,83,135,11,120,233,252,58,118,201,83,245,87,73,108,164,7,114,66,193,218,131,93,146,138,239,214,154,180,28,100,68,73,240,109,47,229,201,176,191,101,63,211,7],[134,158,20,33,207,36,173,146,106,46,224,109,44,222,177,61,92,4,244,66,85,147,219,198,117,235,116,110,184,202,97,101,113,22,71,200,111,100,94,74,219,200,99,243,57,246,130,6,210,78,213,204,180,60,27,204,109,243,231,75,125,133,78,24,215,212,63,225,134,54,101,252,118,155,32,212,13,120,191,171,92,90,110,228,242,192,177,163,77,0,159,84,235,212,150,13],[44,67,226,14,122,92,101,229,56,115,211,134,78,162,41,129,112,65,197,210,255,140,80,192,53,130,241,147,44,88,232,35,151,20,64,20,152,38,232,56,154,186,230,142,26,6,59,24,30,124,132,47,103,177,45,57,241,124,248,106,36,62,240,80,136,72,86,67,185,236,108,87,112,174,30,141,138,223,81,37,119,254,143,191,197,88,154,241,241,241,106,152,166,214,158,24],[150,63,63,90,139,200,148,9,88,99,198,199,113,251,160,237,208,151,215,213,115,224,34,19,216,136,149,212,52,140,68,65,178,146,247,96,222,26,195,217,28,156,44,85,199,109,172,18,57,81,53,64,191,13,31,253,241,189,213,226,172,215,229,230,98,202,255,17,44,131,73,79,154,14,168,158,229,201,184,243,138,168,249,107,92,87,163,140,193,36,147,229,198,118,159,4],[100,188,9,144,184,220,9,117,205,156,43,36,43,74,201,6,51,76,96,213,69,79,19,251,95,224,109,27,157,239,226,241,29,65,191,86,170,220,210,236,76,188,255,148,236,103,177,15,130,208,129,169,191,35,208,95,227,0,52,183,86,119,61,187,133,70,6,99,206,249,18,162,228,38,161,15,156,234,152,157,104,28,13,126,50,31,203,253,90,5,123,192,9,228,43,22],[63,78,94,114,233,154,36,25,128,139,84,85,176,130,19,62,4,198,97,98,219,220,82,38,28,1,249,164,17,22,201,205,78,153,214,184,18,43,96,94,71,11,241,195,168,84,247,12,236,150,198,150,118,190,98,183,83,148,92,222,63,92,115,254,54,57,55,217,142,47,151,20,45,194,99,233,166,236,129,118,205,93,189,87,53,207,129,50,248,176,31,223,254,2,138,16],[33,110,14,205,117,188,244,8,105,50,154,40,172,215,242,209,164,100,220,210,187,61,48,7,201,41,166,65,205,112,39,233,88,4,204,65,89,17,79,224,50,200,205,221,95,161,84,14,154,207,92,222,14,235,132,142,190,86,213,95,121,55,3,52,34,201,46,30,70,253,244,77,14,163,45,133,99,75,56,247,41,133,51,199,71,233,175,235,50,0,21,18,171,86,85,25],[205,102,232,233,230,122,180,215,187,213,95,253,186,230,70,98,181,66,203,108,137,10,33,185,34,157,111,244,35,46,88,155,254,143,141,200,251,120,178,48,214,252,160,153,211,237,69,10,248,231,238,221,185,219,126,150,199,224,68,19,142,137,240,192,0,91,47,250,237,103,29,102,167,243,213,119,106,80,31,105,9,202,152,7,136,161,18,23,114,107,193,120,199,182,130,18],[9,102,200,194,238,196,178,77,50,240,54,144,25,130,98,224,182,228,207,22,65,159,172,64,105,123,88,1,250,104,94,182,110,81,208,83,51,8,192,65,24,26,43,151,148,112,95,13,4,28,183,54,250,43,30,113,102,213,109,75,192,119,85,235,108,209,183,224,18,243,14,33,49,137,139,201,211,213,213,123,126,45,90,141,84,185,4,55,131,166,62,241,101,171,161,0],[7,220,43,215,16,69,92,251,99,193,211,128,185,120,24,63,251,153,125,216,6,178,216,118,54,233,122,30,95,231,43,122,169,164,119,136,180,18,160,31,56,227,46,120,156,8,122,23,225,81,164,230,0,155,238,203,55,17,108,32,23,56,40,68,79,72,102,92,78,4,231,16,55,112,143,56,111,110,175,21,208,145,160,43,254,130,93,15,82,13,231,143,240,163,12,23],[164,197,139,66,144,73,88,8,198,31,241,75,217,225,95,233,212,7,118,190,138,18,39,132,157,165,24,189,152,56,207,116,227,232,22,29,251,172,174,99,179,96,116,229,78,20,12,20,16,110,203,52,115,45,243,73,164,170,153,9,196,89,195,54,66,192,134,219,237,178,192,101,239,140,142,179,237,13,30,201,94,33,161,59,221,62,38,102,87,101,228,135,125,234,49,1],[102,108,195,173,121,10,81,211,91,130,232,213,136,100,219,156,62,211,148,35,118,63,179,160,123,255,120,249,4,38,213,231,189,137,202,166,250,137,13,69,44,80,145,5,200,139,17,6,7,218,222,227,48,204,154,211,39,144,16,226,160,48,66,107,125,126,65,156,226,226,167,56,180,191,167,73,121,157,36,253,95,44,36,60,157,66,83,179,130,115,64,225,16,111,106,22],[160,83,64,117,143,138,214,218,71,115,200,214,146,4,238,212,56,125,173,24,96,166,228,97,65,65,141,90,210,19,30,20,247,21,111,125,85,226,97,37,109,20,22,57,161,148,123,3,237,65,44,102,167,230,155,105,55,203,220,181,169,20,51,200,252,172,36,0,2,215,196,189,2,55,214,163,172,86,254,63,171,73,96,63,183,46,131,95,70,93,173,179,200,126,40,4],[64,99,48,78,229,143,38,16,248,194,19,201,114,82,220,233,71,182,56,192,240,54,39,127,134,180,169,175,126,106,192,89,126,215,219,85,10,200,122,37,92,207,96,198,165,11,69,1,31,90,126,61,26,6,62,155,203,23,39,2,168,111,156,49,251,65,182,110,7,131,220,158,14,134,23,96,168,244,240,130,219,237,220,205,116,236,78,235,157,62,47,53,190,240,204,10],[197,69,123,32,182,42,24,231,85,114,237,87,96,53,163,164,231,181,1,126,232,218,232,2,144,209,40,129,236,154,222,69,227,18,72,207,199,16,161,226,254,12,110,232,146,183,19,11,197,154,14,35,83,195,3,189,177,171,222,77,16,177,239,226,177,47,50,189,230,161,38,154,150,145,44,35,9,74,108,223,154,19,40,89,229,171,115,2,234,62,110,104,228,229,24,20],[247,190,215,203,172,250,131,16,195,201,29,162,93,205,249,149,202,244,71,142,0,202,102,68,91,180,166,113,245,32,99,216,150,19,226,78,47,124,166,230,79,21,122,143,4,138,68,8,115,186,73,19,125,177,49,190,81,214,65,185,233,55,215,23,177,161,220,39,178,31,167,196,153,73,118,237,165,82,186,101,250,146,230,169,60,136,140,65,110,127,185,217,169,240,147,18],[230,178,8,187,226,29,114,63,79,230,214,179,241,209,254,184,42,202,255,90,87,104,148,77,146,65,104,169,0,99,199,181,230,67,174,22,61,151,170,163,155,164,27,205,243,53,83,21,75,236,21,110,148,44,25,63,216,48,2,109,54,0,164,236,104,189,223,93,2,59,99,147,101,172,171,48,195,102,162,110,140,19,117,42,136,238,88,95,169,73,220,223,213,66,136,3],[19,246,91,100,67,237,42,25,36,253,194,72,200,138,111,53,16,117,147,107,96,98,78,109,46,183,97,61,120,79,35,161,204,128,116,212,12,199,100,166,120,139,60,182,45,177,21,23,101,149,116,54,252,232,205,72,182,54,236,205,90,188,29,27,226,130,121,217,239,132,120,216,25,239,48,160,168,52,88,175,3,245,42,103,156,66,248,84,117,189,28,172,23,99,127,18],[126,102,188,26,144,231,60,0,82,181,250,204,237,20,2,206,162,79,196,213,200,182,179,171,156,201,80,8,137,229,19,123,41,61,29,26,240,144,133,135,85,85,190,188,95,252,216,22,143,9,50,15,13,53,129,2,41,252,208,44,202,125,223,98,151,128,128,189,75,76,143,230,250,185,214,113,194,207,58,142,75,74,243,122,67,254,74,207,245,246,6,135,151,170,105,13],[34,201,244,20,93,139,26,97,208,10,231,57,101,188,90,193,248,56,72,120,141,248,227,4,69,74,231,16,221,124,130,191,136,3,53,27,180,175,156,166,184,197,197,129,205,115,38,25,219,68,26,156,187,249,50,176,4,169,210,246,222,15,143,15,79,210,70,201,174,143,122,28,119,68,249,210,174,140,202,153,199,202,253,213,206,28,218,53,70,3,192,153,71,0,119,8],[71,56,159,102,174,128,7,42,13,39,198,154,16,242,140,111,103,24,167,196,35,102,40,182,213,255,172,95,167,77,55,205,174,0,208,167,211,106,60,158,60,149,39,239,238,236,25,15,185,227,30,126,174,190,3,36,232,176,107,248,143,12,206,67,44,66,71,119,45,233,61,15,217,65,212,222,166,102,167,255,213,149,41,151,182,110,162,20,57,164,165,48,191,12,129,10],[75,95,50,137,33,243,244,141,9,0,103,125,22,187,137,100,149,114,145,224,212,184,8,187,230,235,120,233,81,106,79,49,116,40,70,28,111,88,70,168,216,210,225,123,49,211,179,16,20,16,86,5,7,205,166,50,67,141,216,231,12,160,234,164,2,102,209,212,105,201,164,6,167,105,172,174,70,159,33,18,24,87,43,56,215,134,171,252,102,15,216,188,40,75,108,21],[206,7,110,181,61,132,176,234,136,50,158,242,11,98,111,14,95,39,203,136,5,205,39,99,232,5,177,221,103,16,121,23,102,3,95,203,53,244,138,10,68,189,251,255,87,206,209,20,249,100,189,239,202,73,118,41,163,98,220,234,33,83,243,253,227,96,78,142,165,73,19,56,62,195,181,82,149,229,240,169,222,255,39,134,79,185,255,186,250,94,168,83,17,99,79,21],[163,230,19,221,253,160,6,46,213,156,203,204,150,74,239,33,46,122,81,17,206,209,116,223,68,60,11,121,250,175,221,193,30,110,83,121,148,60,145,210,21,46,233,117,146,120,178,24,228,213,47,176,82,239,196,26,217,168,198,181,99,172,20,181,157,154,50,197,44,23,65,241,54,95,32,75,141,227,203,24,200,69,166,71,73,152,200,211,160,23,19,193,71,231,199,22],[219,91,24,44,207,249,92,48,200,168,114,76,72,56,11,76,125,25,122,121,123,119,237,241,247,188,199,210,167,96,85,123,182,14,211,191,85,88,55,106,73,8,127,205,123,202,63,22,110,51,33,198,59,58,34,199,82,52,14,178,107,1,160,137,35,254,55,179,166,200,77,203,212,154,197,123,192,97,71,196,229,208,248,250,53,167,148,21,102,221,196,44,105,135,176,17],[185,154,12,254,187,69,136,126,36,143,172,45,80,108,221,174,63,136,154,108,208,87,116,94,228,122,99,253,253,103,179,201,180,14,115,22,151,92,233,25,4,60,9,33,137,146,147,7,167,168,107,217,118,45,161,52,226,125,68,129,169,111,192,136,77,216,123,74,241,181,111,76,198,203,98,117,184,179,155,64,155,68,170,227,55,204,124,202,77,72,24,177,57,78,57,0],[176,10,82,62,179,190,192,120,230,239,200,107,174,5,131,222,168,203,75,91,106,21,112,61,113,73,49,120,53,37,143,46,207,217,135,94,5,60,172,238,165,114,248,21,183,87,24,23,190,51,16,236,41,23,166,142,186,168,97,214,134,134,56,104,140,192,35,72,203,70,195,243,92,57,40,57,177,243,148,2,67,33,1,119,200,74,175,136,189,30,33,31,208,156,75,0],[161,15,211,253,54,165,90,165,202,183,170,49,215,101,217,252,223,139,90,98,121,85,229,136,6,188,14,163,187,1,151,47,40,215,76,152,198,0,68,13,149,12,229,35,236,254,168,25,139,0,229,61,60,7,17,243,115,37,34,19,215,123,187,175,25,90,232,213,223,174,185,135,62,104,223,34,161,185,72,24,85,50,37,217,36,180,65,221,228,117,161,139,188,90,243,2],[3,76,215,241,188,252,182,237,64,172,98,200,162,62,54,55,194,115,128,210,251,109,141,121,64,200,122,88,165,136,223,208,181,197,4,237,73,23,53,106,180,238,23,176,90,255,213,20,220,189,212,237,140,150,51,187,109,198,166,125,57,231,137,216,172,53,243,84,1,235,124,23,134,112,138,175,84,233,180,9,48,196,210,14,236,147,192,242,239,103,101,213,94,215,197,3],[160,210,94,142,18,229,132,0,121,199,228,42,36,209,229,41,6,242,159,224,21,83,250,136,28,170,30,24,10,124,36,89,116,125,69,61,195,107,249,179,238,173,203,145,244,191,28,22,229,200,50,160,185,194,158,244,160,28,166,233,217,127,138,127,216,215,94,210,115,92,175,92,161,14,70,47,42,24,247,229,102,155,230,76,211,58,227,80,164,127,204,123,240,0,92,14],[193,102,187,156,160,146,124,149,134,88,205,211,24,245,3,197,200,236,96,52,202,204,1,9,198,176,143,52,90,102,122,254,146,111,167,110,49,62,85,246,53,198,39,250,37,197,125,10,114,196,15,3,216,182,43,78,145,92,195,58,159,230,224,129,198,224,116,209,237,70,221,54,157,232,42,242,105,194,10,178,136,102,73,194,162,185,169,39,123,143,39,65,239,5,75,3],[64,46,28,185,206,137,209,111,43,215,223,71,148,113,76,128,2,47,172,129,245,184,231,193,108,76,13,183,8,182,200,86,224,170,133,215,73,91,168,67,128,79,167,253,9,44,110,9,19,197,238,101,60,176,49,238,198,163,77,43,202,247,234,181,245,87,143,224,158,20,184,20,138,131,201,219,10,180,99,236,14,147,253,41,187,199,194,95,43,60,206,176,240,7,80,14],[220,115,113,110,39,56,128,138,4,136,190,84,9,118,42,27,100,20,0,144,219,132,85,19,177,4,72,181,60,173,185,16,226,37,210,175,185,223,0,180,170,211,181,28,175,167,28,18,15,9,78,198,63,107,153,177,17,163,152,100,18,36,82,8,80,245,130,218,83,233,150,157,79,214,196,28,239,66,243,254,91,211,238,26,61,69,191,85,89,110,134,44,112,219,60,11],[56,48,170,204,127,133,11,213,66,68,131,50,95,84,13,125,221,79,229,17,217,191,155,24,170,254,249,130,68,50,151,28,233,233,166,70,195,115,87,15,199,183,248,66,64,158,158,12,34,47,157,162,113,135,37,205,61,74,40,77,145,225,6,136,46,62,180,30,164,129,158,173,219,79,32,179,83,242,121,134,151,97,48,170,107,167,0,139,52,248,124,6,60,171,128,19],[196,68,129,82,114,0,10,151,238,189,156,205,123,127,183,2,135,57,132,217,170,230,176,252,233,141,237,180,237,179,223,105,146,168,16,245,234,120,85,211,73,218,131,12,13,8,191,4,236,34,15,97,177,206,61,82,16,14,208,125,41,164,212,40,94,143,245,17,111,9,179,47,50,223,117,121,249,135,33,68,117,93,135,231,245,129,144,217,82,241,237,89,235,107,78,20],[45,239,11,75,30,7,137,250,158,100,17,158,42,224,183,20,128,200,28,115,122,60,67,83,73,101,178,188,27,232,97,35,42,50,228,188,206,187,102,165,46,49,201,191,77,235,143,19,139,141,235,129,45,32,160,83,156,160,234,136,8,53,100,153,150,1,182,140,70,152,188,84,187,78,69,245,179,191,137,22,44,207,224,181,216,198,191,178,233,189,81,203,206,110,216,13],[186,29,58,61,11,67,218,58,78,236,113,238,145,227,142,25,101,208,94,131,124,227,236,151,13,146,253,12,150,34,83,66,168,253,5,120,202,84,26,133,157,54,171,45,109,74,152,12,180,133,37,235,27,89,233,50,120,180,89,4,98,239,123,125,154,75,21,208,74,202,196,65,198,23,29,165,72,150,55,52,25,116,91,169,240,234,135,5,154,214,40,63,239,60,38,24],[48,111,73,0,76,70,106,199,28,19,225,158,115,168,115,42,184,191,151,78,51,134,10,239,148,240,150,213,203,229,174,163,55,94,209,186,40,141,223,31,69,190,147,170,114,20,114,4,211,39,130,26,219,98,77,108,190,123,203,79,149,88,177,14,140,143,248,201,159,152,97,111,211,196,122,132,21,109,134,85,230,59,124,171,108,247,60,63,204,244,88,149,87,193,177,1],[176,130,246,95,191,138,116,197,40,37,202,27,91,171,135,3,136,208,204,152,31,153,225,226,12,8,105,9,238,84,191,227,51,150,82,42,120,84,102,189,75,13,192,201,181,195,121,25,46,73,160,143,207,130,48,174,49,15,220,127,42,219,118,49,218,216,119,112,198,133,150,28,252,120,254,73,141,80,104,106,222,242,182,158,234,222,201,105,117,198,157,136,3,37,105,19],[212,186,46,71,35,72,173,228,106,230,20,158,122,163,62,3,74,79,35,68,68,231,62,141,34,92,165,240,126,42,203,110,28,187,162,63,112,115,230,88,201,181,48,151,249,150,250,13,94,238,119,19,33,200,72,240,243,168,114,54,119,126,180,8,33,50,155,219,59,35,159,47,218,248,202,227,35,66,112,166,245,34,80,38,76,83,10,82,112,15,157,84,242,212,138,17],[159,200,105,15,144,14,5,178,179,202,147,4,173,173,211,55,174,24,115,170,71,132,218,36,148,91,141,203,46,213,161,53,67,23,198,5,95,108,172,40,109,34,230,126,45,206,211,13,173,115,220,68,42,48,205,102,125,168,35,18,132,91,72,175,235,10,156,8,74,100,81,246,101,166,231,181,197,121,87,222,26,52,144,216,246,114,236,15,89,58,56,132,164,143,2,13],[103,141,213,86,173,52,154,68,219,193,209,229,5,234,4,79,205,128,108,91,226,115,49,113,220,85,122,203,44,91,179,232,192,158,190,129,161,204,249,170,236,3,111,87,23,69,75,15,241,148,3,251,139,42,44,45,118,45,117,147,157,133,120,221,198,249,223,167,239,140,148,0,85,37,47,62,9,228,81,239,62,116,141,14,138,7,209,186,131,9,135,13,64,29,113,19],[243,192,60,172,90,51,11,48,216,107,163,185,114,62,63,230,65,76,39,169,183,79,59,93,170,144,169,1,63,221,124,251,103,236,70,211,169,4,103,140,7,210,68,28,218,71,5,15,172,21,120,217,2,107,94,161,135,143,231,79,199,78,30,12,71,221,33,197,117,226,251,49,212,139,236,45,130,176,57,33,130,146,21,139,113,234,71,91,199,7,53,58,43,192,25,7],[108,72,87,239,81,124,82,163,62,28,141,236,26,95,202,76,16,78,164,102,38,39,219,123,160,101,158,100,5,19,120,115,13,58,162,50,38,173,139,126,192,36,126,86,244,16,11,19,167,235,228,115,240,241,85,229,110,10,30,88,88,31,216,43,210,141,81,220,20,220,50,178,52,44,202,63,219,184,182,19,79,68,72,132,61,63,229,14,20,136,77,197,191,220,211,14],[170,189,172,93,251,234,1,180,169,118,234,225,122,195,231,123,212,190,56,168,107,6,204,134,149,55,18,136,81,127,160,31,33,82,202,202,41,81,48,99,116,224,109,3,142,162,160,7,183,229,196,248,66,62,206,249,87,16,60,247,51,149,23,192,209,79,42,158,227,118,104,19,255,157,63,155,145,140,211,246,73,2,185,121,9,107,17,47,222,73,47,14,255,150,181,18],[189,43,74,238,164,215,71,86,90,86,238,25,177,196,166,90,250,20,239,61,165,79,46,127,177,3,200,250,100,52,248,177,99,38,33,171,43,51,201,14,114,116,197,177,145,48,80,23,59,144,239,3,155,53,106,214,50,72,51,114,116,247,210,17,229,80,89,168,109,93,251,255,114,118,19,192,25,98,199,35,195,59,191,187,241,35,64,62,134,198,185,239,203,239,139,1],[6,19,181,242,186,21,24,182,217,60,19,64,74,203,132,249,137,166,250,143,3,210,25,27,3,181,127,129,64,70,226,63,223,88,206,246,26,242,82,177,78,130,171,219,114,214,255,21,106,120,138,143,127,117,114,57,227,138,238,114,125,241,55,227,75,16,249,26,102,60,250,26,123,184,143,125,77,65,119,52,157,59,52,12,23,118,56,59,124,127,183,180,174,194,94,10],[227,121,225,249,198,9,69,199,208,143,227,61,187,155,110,4,63,27,57,185,255,78,23,91,62,31,240,182,211,236,54,243,51,164,71,92,216,81,226,239,100,133,88,254,93,170,47,11,163,55,1,228,141,214,56,103,195,213,9,117,32,86,90,30,91,152,157,189,48,247,97,128,65,145,44,26,49,155,138,27,47,108,50,137,189,247,120,26,116,30,137,224,130,9,71,4],[250,129,12,248,135,157,57,146,245,233,124,153,217,197,173,96,232,153,184,148,151,147,14,229,160,20,251,31,218,32,176,37,18,120,113,144,35,71,77,224,220,215,247,195,181,217,203,0,146,252,58,248,184,224,195,82,73,111,199,15,204,108,43,165,37,137,112,69,119,137,205,204,199,54,46,24,212,149,231,213,39,163,190,56,154,200,38,146,89,147,112,18,89,45,79,19],[239,100,108,241,125,52,31,178,109,126,104,76,112,9,151,102,86,24,149,130,201,146,70,11,218,193,138,84,120,164,226,44,190,12,26,134,214,215,243,75,200,160,140,158,179,236,74,9,205,20,230,254,138,241,68,233,107,23,189,195,54,100,183,212,67,196,131,38,61,88,78,91,231,185,146,108,72,41,133,78,156,14,45,124,38,43,147,231,93,145,175,104,2,9,251,6],[253,211,38,182,159,85,154,12,178,178,235,209,161,12,186,140,159,223,116,15,164,205,149,34,182,140,88,66,84,90,1,254,220,158,168,38,112,231,88,103,93,161,190,197,114,6,16,8,105,112,109,200,195,69,60,181,249,242,241,221,13,228,206,109,224,63,113,147,255,105,86,33,121,0,52,186,196,3,237,16,83,162,196,248,190,133,0,164,29,253,182,62,243,142,197,9],[206,241,5,65,244,126,51,255,119,194,184,165,223,233,108,87,33,102,109,5,159,3,25,124,80,132,211,87,95,129,71,142,136,88,63,106,232,221,243,102,243,237,90,2,16,126,187,16,234,136,123,198,119,191,7,253,166,109,251,189,131,207,72,68,66,207,162,171,126,129,215,33,75,249,236,169,112,213,135,246,159,179,127,97,115,176,28,153,72,206,56,129,161,239,242,19],[170,246,166,105,139,183,178,13,179,223,20,137,209,172,157,135,132,134,137,74,215,97,135,118,110,167,60,253,251,89,242,42,224,248,20,143,151,56,109,162,132,182,92,206,175,150,85,9,199,240,254,89,152,150,221,106,123,107,80,6,248,206,103,54,46,95,127,121,86,217,43,117,82,85,173,130,128,64,255,163,36,158,122,127,46,87,255,50,79,71,33,246,190,212,205,3],[250,44,6,163,194,91,72,32,13,53,164,161,50,158,163,72,0,5,198,104,229,122,101,141,180,94,52,190,246,166,11,66,58,84,17,107,8,19,35,155,82,243,118,60,136,235,63,12,117,58,130,127,113,204,164,214,247,17,75,31,56,60,143,9,8,12,182,144,98,120,186,28,42,15,252,117,163,234,26,54,165,64,193,0,213,171,169,237,67,111,9,235,196,212,248,8],[83,66,62,107,126,19,65,105,109,103,177,44,110,39,97,106,221,128,128,67,62,247,239,67,29,188,63,17,53,91,97,63,144,9,248,202,56,153,221,4,16,146,182,33,37,214,240,6,52,153,13,0,216,84,12,112,246,151,18,86,175,222,78,201,129,215,247,104,10,253,38,238,6,63,24,125,128,193,158,105,174,160,116,122,211,222,39,188,234,204,17,242,35,224,156,17],[127,21,52,216,108,157,86,104,140,33,204,112,132,37,22,243,34,154,167,144,109,35,101,118,138,215,20,0,58,29,21,207,84,211,148,119,53,77,34,159,135,228,112,27,127,99,141,11,178,87,190,77,139,93,6,45,170,247,91,90,219,168,76,230,82,20,133,203,137,136,44,95,17,133,3,119,248,42,92,150,135,140,81,67,129,92,221,18,138,163,82,118,225,95,193,5],[61,0,209,222,216,50,141,105,211,247,144,46,19,11,187,77,96,226,104,245,48,173,198,50,199,115,237,128,178,131,108,181,71,213,0,109,145,93,119,232,243,57,55,29,14,214,8,5,130,107,220,49,207,180,184,116,28,255,78,120,214,240,27,18,169,244,223,89,71,40,173,207,195,228,195,48,238,45,249,234,196,51,29,106,77,244,174,240,201,33,236,233,253,14,206,25],[39,56,206,152,237,232,108,67,98,200,76,150,156,237,8,1,124,210,27,253,15,210,136,166,168,76,53,184,198,235,177,183,105,128,239,240,81,67,2,184,183,52,246,200,158,154,164,1,92,61,120,93,31,115,205,179,141,221,149,135,42,250,98,17,213,228,164,18,172,223,8,203,158,10,158,54,196,231,32,29,176,220,106,222,124,66,101,250,212,78,217,245,197,21,90,16],[213,214,189,41,216,102,86,211,218,10,250,155,174,140,69,245,113,251,130,21,173,130,3,169,92,202,123,120,141,96,74,104,105,53,106,76,171,67,11,255,197,153,188,153,195,220,118,9,95,90,152,127,252,107,25,234,11,34,111,218,223,193,53,179,121,57,149,156,211,162,37,237,179,142,95,161,57,135,166,47,45,235,135,136,192,77,235,187,81,150,81,85,178,22,46,18],[64,0,140,86,29,149,63,221,118,11,88,117,187,165,93,17,208,243,235,185,123,158,96,68,14,70,74,132,245,235,112,49,216,5,80,72,222,64,191,139,58,41,23,251,225,202,12,2,77,242,201,231,117,169,11,128,165,163,158,149,90,220,47,66,241,96,47,137,52,43,136,136,222,170,144,247,116,73,220,243,218,71,153,9,223,85,63,169,32,59,211,220,139,191,58,17],[221,167,165,25,6,116,113,167,202,84,26,92,253,86,248,226,227,147,151,132,110,99,26,172,201,115,189,124,24,203,99,185,185,104,193,47,224,60,248,140,124,229,150,158,245,74,141,11,53,61,141,201,109,123,208,184,91,65,165,134,119,180,89,131,119,133,254,90,137,78,179,15,182,65,185,8,172,4,131,232,223,136,158,154,91,244,62,152,95,250,84,31,29,252,242,22],[116,17,36,180,107,224,143,28,94,195,254,250,117,221,253,55,129,105,206,174,138,22,22,76,46,76,86,181,125,157,214,196,74,130,221,159,13,130,230,140,150,127,118,184,195,168,241,0,214,193,43,10,22,1,92,159,251,84,113,252,26,122,94,108,207,152,185,102,208,116,177,95,246,21,175,182,39,28,63,61,59,80,179,85,104,77,243,217,151,249,71,24,10,186,207,20],[9,85,151,230,122,119,90,122,95,25,59,29,215,208,221,161,225,208,3,57,201,179,28,168,187,133,62,151,201,226,228,127,216,50,65,45,149,88,178,77,246,98,112,98,46,190,20,0,234,130,246,112,135,197,112,129,147,111,34,210,212,5,43,15,50,138,109,17,225,153,121,154,180,127,193,49,94,139,188,177,166,20,49,198,118,68,46,208,228,170,70,129,226,186,188,21],[45,91,115,41,170,86,160,234,217,173,62,130,195,123,93,186,218,158,211,77,246,188,108,195,195,83,71,207,46,89,1,36,218,109,18,38,207,38,193,177,179,116,26,95,174,65,246,2,172,176,151,50,94,13,213,53,230,176,19,226,191,45,171,86,89,242,171,249,165,82,151,28,200,222,216,44,22,3,127,247,86,182,171,24,97,237,178,120,85,57,107,132,192,125,237,13],[44,18,233,253,69,219,247,160,97,36,253,119,168,241,133,61,29,177,145,250,224,18,94,190,76,117,8,169,153,137,218,152,248,164,221,187,237,210,205,178,225,233,123,191,240,3,166,8,196,242,189,166,184,89,230,173,206,182,88,248,19,225,98,81,250,29,43,97,107,159,236,234,32,238,136,11,0,147,120,16,55,17,196,2,53,40,27,136,163,141,96,0,161,250,66,15],[242,88,156,188,3,79,153,45,68,32,56,184,133,118,209,93,122,127,141,134,200,221,121,188,108,141,152,42,222,250,233,68,12,209,4,23,66,218,145,113,240,160,226,84,28,175,11,21,125,26,51,37,12,255,61,1,195,199,210,103,14,245,42,136,148,36,160,36,81,74,153,70,178,88,148,78,65,191,22,72,157,195,103,45,9,38,71,84,38,159,196,120,204,153,57,16],[21,232,198,183,122,173,61,155,170,83,237,157,21,70,225,57,130,191,242,157,108,140,244,125,224,137,240,121,108,254,168,80,0,237,55,9,36,241,102,42,214,18,26,95,101,132,101,16,81,59,115,118,66,31,91,151,244,209,33,246,249,53,96,9,238,231,123,224,216,207,203,241,212,155,117,214,87,170,65,128,65,212,176,179,41,125,154,24,15,7,240,14,236,5,6,20],[111,7,227,16,126,10,212,35,161,140,96,42,149,226,39,196,210,60,89,51,144,119,146,113,222,64,182,195,120,90,141,26,28,6,17,155,223,240,127,211,34,14,126,22,137,13,109,13,154,58,146,245,39,160,162,54,248,245,40,147,221,103,73,10,172,61,66,80,239,133,169,220,19,183,67,83,193,87,62,143,86,142,70,255,207,195,216,229,151,204,228,168,216,164,230,22],[146,166,240,209,81,56,16,34,84,14,67,119,75,249,23,20,92,26,108,166,246,203,139,135,180,192,122,209,197,83,147,222,228,49,170,129,153,29,113,132,39,14,49,82,235,110,214,15,134,161,109,9,236,226,163,137,107,194,74,57,48,78,147,136,52,135,250,87,167,229,66,155,193,29,53,34,249,212,229,215,133,246,56,109,119,110,132,168,247,11,178,230,219,26,103,21],[4,193,214,61,161,76,143,243,42,124,139,72,121,102,118,132,194,158,45,52,46,225,245,213,123,168,92,233,17,87,185,156,132,48,133,71,242,2,110,16,207,237,125,151,179,214,85,18,190,89,99,245,124,71,212,70,174,47,67,36,218,3,227,75,121,226,56,173,218,122,46,196,3,98,80,47,138,251,118,153,81,62,206,119,112,106,123,147,28,108,55,69,47,137,84,5],[72,17,168,203,75,179,26,79,77,12,37,105,63,253,18,172,227,156,174,136,163,97,225,249,21,173,119,70,140,189,111,66,185,115,182,7,59,120,84,97,88,145,186,130,160,225,22,20,224,254,232,90,111,118,127,101,86,246,146,78,220,159,33,253,122,198,109,84,79,152,62,255,6,119,131,20,2,67,31,130,221,139,205,88,5,170,218,141,117,109,47,162,207,131,96,11],[152,128,178,225,90,212,101,8,143,22,35,237,182,45,141,126,56,251,208,74,18,249,207,220,180,139,230,72,155,130,75,139,189,0,51,78,57,150,7,130,52,20,210,253,118,227,246,22,85,145,126,128,53,91,67,69,195,56,223,206,146,239,185,145,249,230,236,241,162,68,34,201,127,56,190,179,35,175,7,208,184,2,40,221,37,108,248,197,135,190,98,252,51,221,20,8],[118,125,122,110,209,128,168,53,184,184,209,209,181,236,191,177,161,173,75,113,152,50,51,215,199,0,124,4,189,223,42,79,183,229,161,234,252,200,150,188,129,5,224,231,17,71,215,3,126,11,55,110,14,242,10,251,186,40,204,58,19,47,241,50,103,220,74,213,124,183,0,58,31,97,96,84,34,192,100,14,103,114,25,237,204,132,148,172,219,255,204,142,137,120,83,0],[72,248,58,174,153,68,43,62,127,141,186,50,233,109,198,7,135,100,98,82,67,41,50,136,32,212,38,197,107,39,148,74,79,174,0,219,244,218,117,177,121,123,214,110,4,81,86,22,85,89,241,152,146,237,79,13,26,89,59,28,255,193,176,239,221,103,218,30,248,233,160,224,248,48,73,147,156,197,177,138,124,55,119,207,2,230,22,208,100,132,18,165,7,88,187,1],[102,5,163,216,194,161,232,212,109,162,23,11,245,208,223,113,175,31,174,169,83,100,19,150,122,230,212,164,203,159,186,192,114,209,185,46,235,237,43,134,228,219,110,138,124,75,125,8,30,53,208,166,56,51,133,152,178,184,44,254,223,240,19,252,60,232,61,19,100,179,43,69,108,21,24,10,93,176,3,129,97,91,205,108,145,55,60,10,125,174,115,126,103,180,72,20],[169,193,112,196,184,47,97,125,58,19,221,161,15,206,166,77,182,156,17,214,245,156,28,199,65,16,100,137,15,37,95,219,248,61,47,211,94,4,39,92,234,131,172,170,184,69,223,1,97,188,126,97,238,38,130,160,247,65,132,188,137,61,118,62,24,86,167,98,228,26,252,194,235,123,236,104,238,68,174,244,11,98,234,203,65,90,89,159,35,64,17,222,236,13,152,3],[184,208,155,245,182,73,67,65,112,156,239,107,167,107,254,205,226,212,45,10,7,35,207,124,85,210,190,238,143,159,175,98,181,183,8,223,135,20,5,141,252,142,77,69,116,71,14,20,214,31,19,197,210,46,6,36,92,194,41,44,236,182,170,195,62,255,91,38,37,182,236,131,114,101,150,182,47,191,236,4,49,179,143,2,223,188,36,234,75,133,43,26,210,127,137,7],[203,126,121,64,251,213,177,81,35,114,38,219,86,190,207,74,151,187,233,1,67,73,232,93,129,122,158,33,140,152,212,213,219,192,28,43,86,65,208,173,55,74,152,244,211,145,191,24,78,47,87,177,151,137,148,57,156,43,133,218,189,148,76,238,64,120,244,91,158,120,211,90,179,186,5,209,153,7,202,40,12,201,108,197,97,89,29,170,117,70,130,163,206,234,137,2],[172,82,72,202,29,45,88,186,243,219,96,205,234,233,170,161,111,139,148,71,141,31,141,71,84,229,124,70,159,46,139,117,195,43,169,88,163,233,74,45,78,202,161,9,205,43,47,11,169,1,221,74,122,110,69,156,56,234,250,78,151,32,188,97,206,68,207,242,86,149,133,60,11,187,76,154,140,179,105,74,129,8,11,126,255,76,232,140,19,59,85,250,177,169,230,11],[156,163,94,205,1,34,241,7,117,250,92,170,103,2,48,234,76,115,253,112,77,216,99,185,190,36,169,84,122,137,189,156,40,67,232,255,83,78,96,58,161,243,57,60,42,74,177,14,77,221,31,197,240,110,17,55,177,22,139,186,59,84,126,32,48,174,51,181,14,174,83,23,205,2,209,181,80,234,201,108,180,20,19,24,123,165,135,84,81,169,167,1,69,217,21,4],[250,231,203,241,112,213,97,246,70,79,57,85,220,87,247,176,24,53,115,23,233,35,13,139,168,81,37,226,2,126,223,125,125,148,231,193,82,244,170,61,144,155,217,105,213,37,200,21,220,130,5,19,183,226,244,219,36,115,158,7,14,199,156,53,125,80,66,18,172,158,121,121,39,216,71,177,188,27,48,146,20,107,36,176,33,186,41,4,186,94,46,253,4,117,17,7],[249,86,66,207,29,170,248,212,121,173,102,157,229,53,32,72,36,108,151,75,168,68,211,111,163,148,40,217,168,44,55,97,74,160,205,64,140,230,241,212,162,116,90,242,206,209,175,12,168,57,250,250,169,218,102,191,64,186,194,123,94,150,79,19,100,182,128,45,29,68,49,71,90,201,197,243,248,34,54,141,186,93,88,52,15,184,21,128,201,47,109,250,50,113,8,12],[226,182,44,161,101,190,194,120,181,68,173,61,197,249,243,140,196,191,117,17,39,49,156,216,178,187,86,143,247,27,121,56,173,173,194,22,14,18,135,51,22,128,109,179,123,87,63,0,182,32,43,93,141,114,7,55,195,94,92,31,142,156,215,41,99,155,80,207,201,182,191,190,108,127,92,100,137,198,103,136,172,25,148,242,164,16,53,247,18,116,192,67,199,153,240,23],[198,243,201,112,35,64,115,118,91,113,169,255,126,179,206,228,35,172,15,73,120,134,36,239,232,89,168,254,154,178,215,69,74,157,175,120,166,61,1,67,216,114,117,23,169,113,133,5,158,199,232,10,152,169,167,127,143,39,54,141,65,13,79,33,70,57,66,34,188,241,214,68,117,60,152,199,141,127,179,250,214,166,50,97,123,27,142,101,66,117,111,217,174,71,29,14],[30,10,83,107,224,17,229,17,149,46,117,54,1,155,86,247,188,189,191,222,135,116,148,246,75,149,58,176,60,104,168,0,223,77,249,187,216,252,7,146,43,208,218,123,249,218,212,16,173,122,241,136,113,17,129,12,69,7,157,185,226,59,141,220,96,233,182,180,122,26,77,121,179,41,49,30,191,33,117,70,221,75,209,99,45,106,143,111,100,148,208,109,101,23,166,13],[129,135,218,87,224,234,125,179,111,10,38,38,21,135,78,40,85,144,240,146,54,239,16,13,51,214,45,240,253,84,224,228,15,65,106,168,181,117,132,51,255,65,191,255,211,187,22,2,90,138,242,46,41,12,51,243,66,240,95,49,30,255,22,157,252,44,9,48,46,37,12,253,142,184,110,175,126,26,181,126,116,225,187,140,171,236,51,171,105,155,85,175,90,176,138,11],[54,11,18,212,193,139,61,95,176,123,172,71,126,244,138,30,109,18,16,10,159,1,222,81,62,170,96,81,157,180,184,209,96,76,241,121,198,222,174,20,124,218,243,164,162,170,9,16,126,153,226,180,15,135,209,160,162,147,153,168,3,124,251,58,140,255,100,15,3,155,200,104,58,8,130,113,245,222,223,6,8,18,222,20,204,127,57,35,46,223,249,91,119,52,57,21],[65,100,93,218,116,111,36,105,245,247,197,190,240,206,49,224,24,32,222,98,35,70,24,145,221,45,19,170,170,201,191,76,42,138,233,10,149,11,57,183,165,107,34,3,221,33,178,24,72,60,83,241,100,11,63,29,8,47,140,177,253,42,242,37,92,236,245,56,189,47,16,6,187,249,198,108,119,86,148,222,61,207,164,243,18,51,225,250,125,145,174,85,234,182,156,25],[181,15,97,201,135,20,36,162,92,51,94,88,54,27,62,47,226,70,128,46,33,81,114,36,254,31,143,218,172,122,144,7,239,67,145,0,102,28,180,45,94,89,229,163,81,173,33,19,35,89,216,195,214,223,190,172,47,229,164,43,230,35,102,203,137,112,246,208,145,21,90,66,203,130,248,117,143,184,115,207,117,225,238,247,218,34,179,191,67,196,74,74,169,101,132,6],[252,153,196,138,70,122,0,135,232,232,123,203,66,137,84,24,46,138,42,252,94,220,170,92,149,59,171,44,237,46,136,177,68,74,96,222,116,241,56,9,39,227,56,73,160,55,155,5,113,221,101,65,53,226,108,232,105,235,149,109,160,72,145,27,44,142,48,212,251,14,200,40,87,181,55,137,99,200,144,163,6,118,251,210,118,133,102,252,190,133,43,138,119,151,187,9],[15,108,31,94,39,48,183,62,125,86,26,172,144,115,195,108,228,229,21,93,50,27,110,6,85,62,187,198,27,24,13,97,62,230,239,139,213,68,254,154,68,167,159,242,205,158,33,22,69,133,244,252,81,104,161,145,202,245,174,179,73,241,152,144,197,90,230,122,177,140,58,28,202,101,230,80,71,235,94,98,204,242,127,64,211,36,19,229,157,130,48,198,0,246,157,16],[160,69,160,172,130,147,209,99,73,88,20,170,99,140,48,83,134,29,98,168,111,221,174,210,146,44,150,3,109,156,111,20,214,83,19,52,236,61,173,222,247,255,45,168,34,218,68,9,146,221,164,53,16,60,230,205,121,190,161,62,104,109,130,240,154,194,197,126,230,47,40,72,222,125,207,202,209,153,243,103,2,187,178,186,33,160,166,106,186,186,88,24,253,117,53,20],[202,171,41,132,246,35,249,189,134,157,90,198,105,122,200,7,36,87,108,18,54,254,123,159,54,141,30,73,9,98,12,91,228,145,125,134,87,98,202,101,189,143,12,38,204,79,139,0,147,242,110,83,46,121,43,156,29,62,116,143,97,223,37,131,246,207,97,195,64,190,37,167,236,244,180,250,51,178,87,100,103,108,110,137,51,88,23,211,71,62,210,35,184,255,64,20],[240,178,181,227,75,190,232,243,172,106,247,133,245,122,214,221,118,146,64,162,110,191,197,14,70,1,165,175,201,187,158,174,67,34,159,59,250,26,231,216,53,65,164,244,228,3,123,18,191,79,88,97,56,238,208,210,73,233,146,49,33,87,19,199,233,22,97,85,146,108,151,169,49,167,132,143,204,68,30,1,43,179,235,225,93,152,232,228,22,6,80,180,144,192,202,23],[227,165,247,107,103,91,57,206,161,190,130,116,87,214,109,66,117,43,14,38,65,127,27,87,1,192,15,203,60,27,47,129,172,26,33,10,138,75,69,149,161,107,191,140,91,135,234,15,115,12,59,158,166,101,100,165,246,41,55,94,150,124,138,27,167,171,169,68,253,85,138,20,1,166,132,0,16,92,20,4,92,85,109,41,182,248,221,142,39,232,242,196,148,163,35,7],[53,229,135,71,166,180,85,44,53,222,97,173,247,2,149,145,64,185,61,67,242,115,139,184,78,34,178,23,125,194,133,48,29,22,134,63,15,7,96,108,35,68,117,41,70,244,220,23,255,192,207,86,10,234,109,14,72,218,121,61,254,153,154,43,212,175,6,194,188,137,238,125,29,34,245,187,239,118,184,3,35,46,180,235,62,73,183,107,139,245,126,238,197,63,91,21],[24,238,210,119,63,87,186,39,72,4,126,115,190,96,20,4,159,177,94,176,228,166,223,118,92,116,8,2,70,152,49,228,173,60,32,254,93,36,128,123,159,48,61,229,192,27,130,1,147,193,28,195,4,208,210,151,115,253,112,11,138,71,132,67,215,96,83,235,47,105,145,0,209,248,74,140,196,29,50,113,98,235,203,69,30,157,212,116,216,155,150,118,122,249,56,25],[143,103,171,52,37,225,80,192,57,24,146,203,163,54,41,216,106,28,245,159,143,32,77,208,217,83,123,185,34,47,179,63,190,80,234,196,171,152,122,207,190,51,186,239,228,50,149,10,5,123,218,126,32,15,186,113,116,40,75,120,138,12,133,47,116,193,191,112,221,124,226,154,21,215,198,195,16,120,164,255,189,236,131,8,205,79,233,220,220,166,51,202,87,127,109,12],[12,238,142,164,238,123,210,241,7,20,42,5,126,1,144,71,192,99,160,143,1,21,215,207,177,89,167,49,145,85,75,227,56,246,20,50,173,13,121,183,151,246,87,200,185,221,135,10,191,34,170,160,181,88,190,146,213,173,176,57,200,189,66,216,214,212,137,46,190,189,163,236,133,199,115,239,32,13,93,87,115,198,191,69,33,24,72,111,172,159,95,94,1,95,29,25],[133,86,138,43,140,194,204,232,234,249,206,238,248,149,125,43,19,203,132,202,152,218,221,159,34,142,78,13,22,164,202,179,140,69,210,217,247,235,158,159,43,100,64,249,212,91,68,8,193,128,18,103,187,51,129,53,211,35,92,183,122,49,205,93,119,151,149,75,125,250,188,105,42,129,144,41,224,32,99,42,206,45,84,28,117,216,95,46,201,132,34,29,149,5,76,6],[124,83,78,229,158,55,61,106,232,172,109,26,206,22,235,93,2,34,121,144,16,84,153,95,35,206,97,213,250,117,25,64,215,27,182,129,250,150,134,221,0,151,160,155,46,157,177,16,168,230,26,248,22,106,165,82,217,154,247,206,88,37,147,245,107,238,77,138,32,90,192,235,209,147,3,207,48,152,187,140,137,126,211,25,82,38,41,118,5,47,161,72,69,112,137,9],[52,157,207,232,35,62,176,206,184,164,176,86,234,209,139,201,32,1,156,208,253,143,103,62,149,92,24,69,71,188,149,158,105,4,1,36,149,187,98,84,72,192,120,14,200,143,174,1,80,201,192,163,6,198,95,112,195,100,2,51,173,182,87,101,79,81,246,86,3,39,148,151,5,142,135,91,125,241,243,85,139,38,96,20,154,141,206,102,58,18,36,175,105,218,192,22],[150,66,217,93,51,68,140,168,19,216,10,140,254,198,143,24,16,21,67,112,11,185,114,236,6,72,82,5,37,25,216,88,234,219,13,222,9,137,73,210,10,250,39,198,101,181,166,11,98,10,21,23,142,87,117,70,179,195,148,89,204,152,180,194,118,63,214,2,4,230,73,170,28,55,115,48,242,204,27,187,189,41,212,15,128,101,139,180,240,214,35,108,168,163,242,8],[78,0,3,186,162,2,151,86,20,36,221,18,94,199,85,161,118,77,79,189,120,52,110,112,71,90,44,190,243,33,239,108,113,56,36,93,186,58,107,80,97,8,152,145,164,80,97,9,233,249,122,218,22,115,12,42,158,96,233,39,37,222,85,35,91,121,99,65,93,6,90,63,158,135,229,148,150,120,164,103,205,254,19,120,246,55,108,54,12,246,105,167,31,157,108,21],[120,211,227,243,130,150,14,200,127,243,152,144,195,36,11,87,59,145,56,83,108,102,151,253,150,101,152,194,52,179,176,34,46,62,3,186,0,49,8,54,186,2,54,176,66,152,70,25,65,55,233,44,87,172,228,159,159,22,213,35,239,146,121,133,156,212,186,142,23,182,228,221,104,145,31,209,235,187,85,99,111,203,12,90,209,240,203,210,120,84,201,98,252,40,84,13],[153,136,230,85,8,82,90,194,129,63,14,139,42,84,20,218,130,109,143,255,110,1,186,47,38,194,100,155,63,25,210,88,179,209,219,83,13,242,132,26,230,242,156,181,155,233,101,5,99,73,147,155,204,205,220,150,164,64,151,255,250,179,212,255,248,98,50,133,164,132,113,95,211,189,40,216,60,154,62,10,100,12,88,157,67,11,41,130,254,240,45,191,32,169,108,8]],"pariticipation_bits":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"domain":[7,0,0,0,48,83,175,74,95,250,246,166,104,40,151,228,42,212,194,8,48,56,232,147,61,9,41,204,88,234,56,134],"attested_header":{"slot":"32","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0xc66d5c8e5b9c3a64fb6ae0d895f77d0fb75636112880b2b84d3da4990d6f8f29","body_root":"0xcfc05f337393c3a62425aa3a1fb3b7113c5da404d6a7f89edd41bfb5e14a5e92"},"finalized_header":{"slot":"0","proposer_index":"0","parent_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","body_root":"0x1e10d615015401a475217be60cd4f0f53e510b12173f48039d852e5022981639"},"signature_compressed":[68,178,52,4,121,50,132,126,242,249,87,37,83,65,194,65,66,161,225,85,125,240,161,5,60,233,244,237,208,234,146,231,229,16,136,48,113,107,97,132,157,228,233,200,253,140,98,8,164,170,14,129,154,215,163,124,89,195,74,216,99,137,240,254,11,84,228,147,230,227,16,163,215,242,124,46,110,96,206,170,196,184,221,233,13,232,11,184,67,86,204,39,137,252,87,171],"execution_payload_branch":[[66,176,82,84,29,206,69,85,125,131,211,70,52,164,90,86,210,22,212,55,94,90,149,132,246,68,92,228,230,51,36,175],[51,100,136,3,63,229,243,239,76,204,18,175,7,185,55,11,146,229,83,227,94,203,74,51,122,27,28,14,74,254,30,14],[219,86,17,78,0,253,212,193,248,92,137,43,243,90,201,168,146,137,170,236,177,235,208,169,108,222,96,106,116,139,93,113],[156,200,108,117,214,234,134,249,66,137,170,240,18,207,96,236,49,180,252,246,212,177,241,162,156,106,55,243,83,138,77,132]],"execution_state_root":[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],"finality_branch":[[235,99,1,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],[61,75,229,208,25,186,21,234,62,243,4,168,59,138,6,127,46,121,244,106,63,172,128,105,48,106,108,129,74,10,53,235],[247,65,225,146,14,28,201,33,253,3,44,42,245,61,86,181,239,179,213,112,101,167,245,195,210,233,174,223,109,253,246,51],[110,211,142,94,6,128,7,99,93,122,179,185,34,100,118,177,122,81,82,200,22,17,180,0,237,192,18,14,240,147,108,131],[155,36,233,182,3,218,183,52,31,229,11,170,186,135,40,250,236,16,108,30,173,17,32,146,190,16,108,215,239,76,73,95],[253,111,231,138,179,250,203,151,251,234,163,160,110,138,90,87,8,77,145,188,106,199,46,50,165,228,189,28,154,12,26,169]],"beacon_state_root":[198,109,92,142,91,156,58,100,251,106,224,216,149,247,125,15,183,86,54,17,40,128,178,184,77,61,164,153,13,111,143,41]} \ No newline at end of file From a8a06e7a83e4ad2ba2cf743de5157a36f549e5c3 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 21 Sep 2023 15:27:04 +0200 Subject: [PATCH 30/33] cargo fix+fmt --- eth-types/src/lib.rs | 2 +- lightclient-circuits/src/aggregation.rs | 5 ++++- .../src/committee_update_circuit.rs | 2 +- .../src/gadget/crypto/builder.rs | 16 +++++++++++----- .../src/gadget/crypto/sha256_flex/builder.rs | 3 ++- .../src/gadget/crypto/sha256_wide/builder.rs | 3 ++- lightclient-circuits/src/lib.rs | 2 +- lightclient-circuits/src/sync_step_circuit.rs | 5 +---- lightclient-circuits/src/util.rs | 1 - lightclient-circuits/src/util/common.rs | 5 ++++- prover/src/args.rs | 10 +++++++--- 11 files changed, 34 insertions(+), 20 deletions(-) diff --git a/eth-types/src/lib.rs b/eth-types/src/lib.rs index b2ce08e7..297afd5c 100644 --- a/eth-types/src/lib.rs +++ b/eth-types/src/lib.rs @@ -3,7 +3,7 @@ #![feature(associated_type_defaults)] #![feature(generic_const_exprs)] mod spec; -pub use spec::{Spec, Minimal, Testnet, Mainnet}; +pub use spec::{Mainnet, Minimal, Spec, Testnet}; mod curve; pub use curve::{AppCurveExt, HashCurveExt}; diff --git a/lightclient-circuits/src/aggregation.rs b/lightclient-circuits/src/aggregation.rs index 5ffcfc3c..0e2ffc11 100644 --- a/lightclient-circuits/src/aggregation.rs +++ b/lightclient-circuits/src/aggregation.rs @@ -1,4 +1,7 @@ -use std::{env::{var, set_var}, iter}; +use std::{ + env::{set_var, var}, + iter, +}; use eth_types::Testnet; use halo2_base::{ diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 44d6cd1e..d7cdfa8e 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -396,7 +396,7 @@ mod tests { // let instances = // CommitteeUpdateCircuit::::instance(witness.pubkeys_compressed); // let num_instances = instances[0].len(); - + let instances = agg_circuit.instances(); let num_instances = agg_circuit.num_instance(); diff --git a/lightclient-circuits/src/gadget/crypto/builder.rs b/lightclient-circuits/src/gadget/crypto/builder.rs index 977b5b74..d0177c35 100644 --- a/lightclient-circuits/src/gadget/crypto/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/builder.rs @@ -4,8 +4,8 @@ use eth_types::Field; use halo2_base::{ gates::{ builder::{ - assign_threads_in, FlexGateConfigParams, KeygenAssignments, - MultiPhaseThreadBreakPoints, ThreadBreakPoints, CircuitBuilderStage, + assign_threads_in, CircuitBuilderStage, FlexGateConfigParams, KeygenAssignments, + MultiPhaseThreadBreakPoints, ThreadBreakPoints, }, range::{RangeConfig, RangeStrategy}, }, @@ -65,8 +65,15 @@ impl> ShaCircuitBuilder, stage: CircuitBuilderStage) -> Self { - Self::new(builder.unknown(stage == CircuitBuilderStage::Keygen), break_points) + pub fn from_stage( + builder: ThreadBuilder, + break_points: Option, + stage: CircuitBuilderStage, + ) -> Self { + Self::new( + builder.unknown(stage == CircuitBuilderStage::Keygen), + break_points, + ) } /// Creates a new [ShaCircuitBuilder] with `use_unknown` of [ShaThreadBuilder] set to true. @@ -77,7 +84,6 @@ impl> ShaCircuitBuilder Self { Self::new(builder.unknown(false), None) - } /// Creates a new [ShaCircuitBuilder]. diff --git a/lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs index 3f79ad58..63f42b80 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_flex/builder.rs @@ -49,7 +49,8 @@ impl ThreadBuilderBase for ShaThreadBuilder { } fn from_stage(stage: CircuitBuilderStage) -> Self { - Self::new(stage == CircuitBuilderStage::Prover).unknown(stage == CircuitBuilderStage::Keygen) + Self::new(stage == CircuitBuilderStage::Prover) + .unknown(stage == CircuitBuilderStage::Keygen) } fn unknown(mut self, use_unknown: bool) -> Self { diff --git a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs index d00072a1..0c2ab342 100644 --- a/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs +++ b/lightclient-circuits/src/gadget/crypto/sha256_wide/builder.rs @@ -77,7 +77,8 @@ impl ThreadBuilderBase for ShaBitThreadBuilder { } fn from_stage(stage: CircuitBuilderStage) -> Self { - Self::new(stage == CircuitBuilderStage::Prover).unknown(stage == CircuitBuilderStage::Keygen) + Self::new(stage == CircuitBuilderStage::Prover) + .unknown(stage == CircuitBuilderStage::Keygen) } fn unknown(mut self, use_unknown: bool) -> Self { diff --git a/lightclient-circuits/src/lib.rs b/lightclient-circuits/src/lib.rs index a8256ef5..7f28bda7 100644 --- a/lightclient-circuits/src/lib.rs +++ b/lightclient-circuits/src/lib.rs @@ -13,9 +13,9 @@ pub mod gadget; pub mod util; pub mod witness; +pub mod aggregation; pub mod committee_update_circuit; pub mod sync_step_circuit; -pub mod aggregation; mod builder; mod poseidon; diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index e9da2b7b..722e61f0 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -266,10 +266,7 @@ impl SyncStepCircuit { let h = sha256_chip.digest::<64>( thread_pool, - HashInput::TwoToOne( - h.output_bytes.into(), - participation_sum_bytes.into(), - ), + HashInput::TwoToOne(h.output_bytes.into(), participation_sum_bytes.into()), false, )?; diff --git a/lightclient-circuits/src/util.rs b/lightclient-circuits/src/util.rs index 0c610639..8aad7296 100644 --- a/lightclient-circuits/src/util.rs +++ b/lightclient-circuits/src/util.rs @@ -5,7 +5,6 @@ pub use common::*; use std::{cell::RefCell, path::Path, rc::Rc}; - mod constraint_builder; pub(crate) use constraint_builder::*; diff --git a/lightclient-circuits/src/util/common.rs b/lightclient-circuits/src/util/common.rs index cdaa6399..ecb26592 100644 --- a/lightclient-circuits/src/util/common.rs +++ b/lightclient-circuits/src/util/common.rs @@ -2,7 +2,10 @@ use crate::gadget::Expr; use eth_types::*; use halo2_base::{ gates::{ - builder::{FlexGateConfigParams, KeygenAssignments, MultiPhaseThreadBreakPoints, CircuitBuilderStage}, + builder::{ + CircuitBuilderStage, FlexGateConfigParams, KeygenAssignments, + MultiPhaseThreadBreakPoints, + }, flex_gate::FlexGateConfig, }, Context, diff --git a/prover/src/args.rs b/prover/src/args.rs index 6d628e63..bdbf2bc2 100644 --- a/prover/src/args.rs +++ b/prover/src/args.rs @@ -24,7 +24,7 @@ pub struct Args { pub out: Out, #[clap(long, short)] - pub k: Option, + pub k: Option, #[clap( long, @@ -39,14 +39,18 @@ pub struct Args { #[clap(long, short)] pub input_path: Option, - #[clap(long, short, help = "Beacon node URL", default_value = "http://localhost::5052")] + #[clap( + long, + short, + help = "Beacon node URL", + default_value = "http://localhost::5052" + )] pub node_url: String, #[clap(index = 1, help = "path to output", default_value = ".")] pub path_out: PathBuf, } - #[derive(Clone, clap::Args)] pub struct AggregationArgs { #[clap(flatten)] From 47d6753e1023029cf8f211decbb82b16463c7031 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Thu, 21 Sep 2023 17:40:23 +0200 Subject: [PATCH 31/33] update aggregation circuit artifacts --- lightclient-circuits/config/aggregation.json | 139 +++++++------------ preprocessor/src/sync.rs | 8 +- 2 files changed, 52 insertions(+), 95 deletions(-) diff --git a/lightclient-circuits/config/aggregation.json b/lightclient-circuits/config/aggregation.json index 1eba6c6e..02da1a3e 100644 --- a/lightclient-circuits/config/aggregation.json +++ b/lightclient-circuits/config/aggregation.json @@ -3,40 +3,32 @@ "strategy": "Vertical", "k": 17, "num_advice_per_phase": [ - 245, + 208, 0, 0 ], "num_lookup_advice_per_phase": [ - 29, + 25, 0, 0 ], - "num_fixed": 5 + "num_fixed": 4 }, "break_points": [ [ 131060, 131062, 131062, - 131061, 131062, - 131061, + 131060, 131062, 131062, 131062, - 131061, - 131061, - 131062, - 131062, - 131061, - 131061, - 131061, - 131062, - 131062, + 131060, 131062, 131062, 131062, + 131060, 131061, 131062, 131062, @@ -46,40 +38,20 @@ 131060, 131062, 131060, - 131061, - 131060, - 131062, - 131060, - 131061, - 131060, - 131061, 131062, 131062, - 131060, - 131061, - 131060, - 131060, 131062, 131062, 131062, 131061, - 131061, - 131061, - 131060, 131062, - 131060, - 131061, 131062, - 131060, - 131060, 131062, - 131060, 131062, - 131061, - 131061, 131062, 131062, 131061, + 131060, 131062, 131062, 131062, @@ -88,45 +60,39 @@ 131062, 131062, 131062, - 131060, 131062, 131061, - 131061, 131060, 131061, - 131061, 131062, - 131061, - 131060, 131062, 131062, - 131061, - 131061, 131060, - 131062, - 131061, - 131060, - 131062, - 131061, 131061, 131061, 131062, 131060, - 131061, - 131061, - 131061, 131060, 131060, 131060, 131062, 131062, 131062, - 131060, 131062, + 131062, + 131062, + 131061, 131060, + 131060, + 131061, 131062, + 131061, + 131061, + 131061, 131062, 131062, + 131060, + 131061, 131062, 131061, 131060, @@ -143,23 +109,12 @@ 131062, 131061, 131061, - 131062, - 131061, - 131061, - 131062, 131061, 131062, - 131061, 131060, 131062, 131062, 131062, - 131061, - 131062, - 131060, - 131060, - 131062, - 131062, 131062, 131062, 131062, @@ -168,97 +123,105 @@ 131062, 131062, 131062, - 131062, - 131060, - 131062, 131061, + 131062, 131060, - 131061, 131062, 131062, 131060, - 131062, + 131060, 131062, 131060, 131060, 131060, 131060, - 131061, 131062, - 131061, 131062, + 131060, + 131060, 131062, 131061, 131061, 131062, - 131061, - 131060, - 131060, 131060, 131062, 131062, - 131060, 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131062, + 131060, + 131061, 131060, 131060, 131061, - 131062, - 131062, 131061, 131061, - 131060, - 131062, 131061, 131062, 131061, 131060, + 131062, 131060, 131061, + 131060, 131061, - 131062, + 131061, + 131060, + 131060, 131062, 131060, 131062, 131061, - 131061, 131062, + 131060, + 131061, 131062, 131062, 131060, - 131062, + 131061, 131060, 131060, 131061, - 131060, + 131061, + 131061, 131061, 131062, - 131060, 131061, 131060, 131062, 131060, - 131060, - 131060, - 131060, + 131061, 131060, 131061, 131061, - 131062, + 131060, + 131060, 131062, 131060, 131062, 131061, - 131061, 131062, + 131060, + 131061, 131062, 131062, 131060, - 131062, + 131061, 131060, 131060, + 131061, + 131061, + 131061, + 131061, 131062, 131062, 131062, + 131060, + 131061, 131061 ], [], diff --git a/preprocessor/src/sync.rs b/preprocessor/src/sync.rs index 1f890c5e..aea3f3d6 100644 --- a/preprocessor/src/sync.rs +++ b/preprocessor/src/sync.rs @@ -4,7 +4,7 @@ use eth_types::Spec; use halo2curves::{bls12_381::G1Affine, group::GroupEncoding, group::UncompressedEncoding}; use itertools::Itertools; use lightclient_circuits::witness::SyncStepArgs; -use ssz_rs::{Merkleized, Serialize}; +use ssz_rs::Merkleized; use sync_committee_primitives::{ consensus_types::BeaconBlockHeader, domains::DomainType, types::LightClientState, util::compute_domain, @@ -20,12 +20,6 @@ pub async fn fetch_step_args(node_url: String) -> eyre::Result Date: Thu, 21 Sep 2023 18:12:47 +0200 Subject: [PATCH 32/33] merge --- lightclient-circuits/config/aggregation.json | 230 ------------------ lightclient-circuits/src/aggregation.rs | 6 +- .../src/committee_update_circuit.rs | 7 +- 3 files changed, 9 insertions(+), 234 deletions(-) delete mode 100644 lightclient-circuits/config/aggregation.json diff --git a/lightclient-circuits/config/aggregation.json b/lightclient-circuits/config/aggregation.json deleted file mode 100644 index 02da1a3e..00000000 --- a/lightclient-circuits/config/aggregation.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "params": { - "strategy": "Vertical", - "k": 17, - "num_advice_per_phase": [ - 208, - 0, - 0 - ], - "num_lookup_advice_per_phase": [ - 25, - 0, - 0 - ], - "num_fixed": 4 - }, - "break_points": [ - [ - 131060, - 131062, - 131062, - 131062, - 131060, - 131062, - 131062, - 131062, - 131060, - 131062, - 131062, - 131062, - 131060, - 131061, - 131062, - 131062, - 131060, - 131061, - 131061, - 131060, - 131062, - 131060, - 131062, - 131062, - 131062, - 131062, - 131062, - 131061, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131061, - 131060, - 131062, - 131062, - 131062, - 131060, - 131061, - 131062, - 131062, - 131062, - 131062, - 131061, - 131060, - 131061, - 131062, - 131062, - 131062, - 131060, - 131061, - 131061, - 131062, - 131060, - 131060, - 131060, - 131060, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131061, - 131060, - 131060, - 131061, - 131062, - 131061, - 131061, - 131061, - 131062, - 131062, - 131060, - 131061, - 131062, - 131061, - 131060, - 131062, - 131060, - 131062, - 131061, - 131062, - 131060, - 131060, - 131062, - 131061, - 131060, - 131062, - 131061, - 131061, - 131061, - 131062, - 131060, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131060, - 131062, - 131062, - 131062, - 131062, - 131061, - 131062, - 131060, - 131062, - 131062, - 131060, - 131060, - 131062, - 131060, - 131060, - 131060, - 131060, - 131062, - 131062, - 131060, - 131060, - 131062, - 131061, - 131061, - 131062, - 131060, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131062, - 131060, - 131061, - 131060, - 131060, - 131061, - 131061, - 131061, - 131061, - 131062, - 131061, - 131060, - 131062, - 131060, - 131061, - 131060, - 131061, - 131061, - 131060, - 131060, - 131062, - 131060, - 131062, - 131061, - 131062, - 131060, - 131061, - 131062, - 131062, - 131060, - 131061, - 131060, - 131060, - 131061, - 131061, - 131061, - 131061, - 131062, - 131061, - 131060, - 131062, - 131060, - 131061, - 131060, - 131061, - 131061, - 131060, - 131060, - 131062, - 131060, - 131062, - 131061, - 131062, - 131060, - 131061, - 131062, - 131062, - 131060, - 131061, - 131060, - 131060, - 131061, - 131061, - 131061, - 131061, - 131062, - 131062, - 131062, - 131060, - 131061, - 131061 - ], - [], - [] - ] -} \ No newline at end of file diff --git a/lightclient-circuits/src/aggregation.rs b/lightclient-circuits/src/aggregation.rs index 0e2ffc11..c6e39ff3 100644 --- a/lightclient-circuits/src/aggregation.rs +++ b/lightclient-circuits/src/aggregation.rs @@ -40,7 +40,7 @@ impl AppCircuit for AggregationCircuit { snark: &Self::Witness, ) -> Result, halo2_proofs::plonk::Error> { let lookup_bits = params.k() as usize - 1; - let circuit = AggregationCircuit::new::( + let mut circuit = AggregationCircuit::new::( stage, pinning.map(|p| p.break_points), lookup_bits, @@ -49,7 +49,9 @@ impl AppCircuit for AggregationCircuit { ); match stage { - CircuitBuilderStage::Prover => {} + CircuitBuilderStage::Prover => { + circuit.expose_previous_instances(false); + } _ => { circuit.config(params.k(), Some(10)); set_var("LOOKUP_BITS", lookup_bits.to_string()); diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 8f7745f3..1a84bbea 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -394,9 +394,12 @@ mod tests { .unwrap(); // TODO: Figure out what the first 12 elements of the instances are. - let instances = agg_circuit.instance(); + let instances = agg_circuit.instances(); let num_instances = agg_circuit.num_instance(); + println!("num_instances: {:?}", num_instances); + println!("instances: {:?}", instances); + let proof = gen_evm_proof_shplonk(¶ms, &pk, agg_circuit, instances.clone()); println!("proof size: {}", proof.len()); let deployment_code = AggregationCircuit::gen_evm_verifier_shplonk( @@ -407,6 +410,6 @@ mod tests { ) .unwrap(); println!("deployment_code size: {}", deployment_code.len()); - evm_verify(deployment_code, vec![instances], proof); + evm_verify(deployment_code, instances, proof); } } From a5a19c92432d150af7c2f17c5c3d1a88764e6fc7 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Fri, 22 Sep 2023 12:42:11 +0200 Subject: [PATCH 33/33] remove local deps --- contracts/snark-verifiers/sync_step.yul | 4721 +++++++++++----------- justfile | 1 - lightclient-circuits/src/util/circuit.rs | 7 +- 3 files changed, 2365 insertions(+), 2364 deletions(-) diff --git a/contracts/snark-verifiers/sync_step.yul b/contracts/snark-verifiers/sync_step.yul index a4a58dc7..28f87707 100644 --- a/contracts/snark-verifiers/sync_step.yul +++ b/contracts/snark-verifiers/sync_step.yul @@ -31,383 +31,383 @@ valid := and(valid, is_affine) } } - mstore(0x0, 11497799072841017384538028289762584481850921987101337710720099970697021375897) + mstore(0x20, mod(calldataload(0x0), f_q)) +mstore(0x0, 21811765965409238129088320361152266555871997525413211162105483175862598112410) { - let x := calldataload(0x0) - mstore(0x20, x) - let y := calldataload(0x20) - mstore(0x40, y) + let x := calldataload(0x20) + mstore(0x40, x) + let y := calldataload(0x40) + mstore(0x60, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x40) - mstore(0x60, x) - let y := calldataload(0x60) - mstore(0x80, y) + let x := calldataload(0x60) + mstore(0x80, x) + let y := calldataload(0x80) + mstore(0xa0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x80) - mstore(0xa0, x) - let y := calldataload(0xa0) - mstore(0xc0, y) + let x := calldataload(0xa0) + mstore(0xc0, x) + let y := calldataload(0xc0) + mstore(0xe0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0xc0) - mstore(0xe0, x) - let y := calldataload(0xe0) - mstore(0x100, y) + let x := calldataload(0xe0) + mstore(0x100, x) + let y := calldataload(0x100) + mstore(0x120, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x100) - mstore(0x120, x) - let y := calldataload(0x120) - mstore(0x140, y) + let x := calldataload(0x120) + mstore(0x140, x) + let y := calldataload(0x140) + mstore(0x160, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x140) - mstore(0x160, x) - let y := calldataload(0x160) - mstore(0x180, y) + let x := calldataload(0x160) + mstore(0x180, x) + let y := calldataload(0x180) + mstore(0x1a0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x180) - mstore(0x1a0, x) - let y := calldataload(0x1a0) - mstore(0x1c0, y) + let x := calldataload(0x1a0) + mstore(0x1c0, x) + let y := calldataload(0x1c0) + mstore(0x1e0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x1c0) - mstore(0x1e0, x) - let y := calldataload(0x1e0) - mstore(0x200, y) + let x := calldataload(0x1e0) + mstore(0x200, x) + let y := calldataload(0x200) + mstore(0x220, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x200) - mstore(0x220, x) - let y := calldataload(0x220) - mstore(0x240, y) + let x := calldataload(0x220) + mstore(0x240, x) + let y := calldataload(0x240) + mstore(0x260, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x240) - mstore(0x260, x) - let y := calldataload(0x260) - mstore(0x280, y) + let x := calldataload(0x260) + mstore(0x280, x) + let y := calldataload(0x280) + mstore(0x2a0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x280) - mstore(0x2a0, x) - let y := calldataload(0x2a0) - mstore(0x2c0, y) + let x := calldataload(0x2a0) + mstore(0x2c0, x) + let y := calldataload(0x2c0) + mstore(0x2e0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x2c0) - mstore(0x2e0, x) - let y := calldataload(0x2e0) - mstore(0x300, y) + let x := calldataload(0x2e0) + mstore(0x300, x) + let y := calldataload(0x300) + mstore(0x320, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x300) - mstore(0x320, x) - let y := calldataload(0x320) - mstore(0x340, y) + let x := calldataload(0x320) + mstore(0x340, x) + let y := calldataload(0x340) + mstore(0x360, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x340) - mstore(0x360, x) - let y := calldataload(0x360) - mstore(0x380, y) + let x := calldataload(0x360) + mstore(0x380, x) + let y := calldataload(0x380) + mstore(0x3a0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x380) - mstore(0x3a0, x) - let y := calldataload(0x3a0) - mstore(0x3c0, y) + let x := calldataload(0x3a0) + mstore(0x3c0, x) + let y := calldataload(0x3c0) + mstore(0x3e0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x3c0) - mstore(0x3e0, x) - let y := calldataload(0x3e0) - mstore(0x400, y) + let x := calldataload(0x3e0) + mstore(0x400, x) + let y := calldataload(0x400) + mstore(0x420, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x400) - mstore(0x420, x) - let y := calldataload(0x420) - mstore(0x440, y) + let x := calldataload(0x420) + mstore(0x440, x) + let y := calldataload(0x440) + mstore(0x460, y) success := and(validate_ec_point(x, y), success) } -mstore(0x460, keccak256(0x0, 1120)) +mstore(0x480, keccak256(0x0, 1152)) { - let hash := mload(0x460) - mstore(0x480, mod(hash, f_q)) - mstore(0x4a0, hash) + let hash := mload(0x480) + mstore(0x4a0, mod(hash, f_q)) + mstore(0x4c0, hash) } { - let x := calldataload(0x440) - mstore(0x4c0, x) - let y := calldataload(0x460) - mstore(0x4e0, y) + let x := calldataload(0x460) + mstore(0x4e0, x) + let y := calldataload(0x480) + mstore(0x500, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x480) - mstore(0x500, x) - let y := calldataload(0x4a0) - mstore(0x520, y) + let x := calldataload(0x4a0) + mstore(0x520, x) + let y := calldataload(0x4c0) + mstore(0x540, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x4c0) - mstore(0x540, x) - let y := calldataload(0x4e0) - mstore(0x560, y) + let x := calldataload(0x4e0) + mstore(0x560, x) + let y := calldataload(0x500) + mstore(0x580, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x500) - mstore(0x580, x) - let y := calldataload(0x520) - mstore(0x5a0, y) + let x := calldataload(0x520) + mstore(0x5a0, x) + let y := calldataload(0x540) + mstore(0x5c0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x540) - mstore(0x5c0, x) - let y := calldataload(0x560) - mstore(0x5e0, y) + let x := calldataload(0x560) + mstore(0x5e0, x) + let y := calldataload(0x580) + mstore(0x600, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x580) - mstore(0x600, x) - let y := calldataload(0x5a0) - mstore(0x620, y) + let x := calldataload(0x5a0) + mstore(0x620, x) + let y := calldataload(0x5c0) + mstore(0x640, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x5c0) - mstore(0x640, x) - let y := calldataload(0x5e0) - mstore(0x660, y) + let x := calldataload(0x5e0) + mstore(0x660, x) + let y := calldataload(0x600) + mstore(0x680, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x600) - mstore(0x680, x) - let y := calldataload(0x620) - mstore(0x6a0, y) + let x := calldataload(0x620) + mstore(0x6a0, x) + let y := calldataload(0x640) + mstore(0x6c0, y) success := and(validate_ec_point(x, y), success) } -mstore(0x6c0, keccak256(0x4a0, 544)) +mstore(0x6e0, keccak256(0x4c0, 544)) { - let hash := mload(0x6c0) - mstore(0x6e0, mod(hash, f_q)) - mstore(0x700, hash) + let hash := mload(0x6e0) + mstore(0x700, mod(hash, f_q)) + mstore(0x720, hash) } -mstore8(1824, 1) -mstore(0x720, keccak256(0x700, 33)) +mstore8(1856, 1) +mstore(0x740, keccak256(0x720, 33)) { - let hash := mload(0x720) - mstore(0x740, mod(hash, f_q)) - mstore(0x760, hash) + let hash := mload(0x740) + mstore(0x760, mod(hash, f_q)) + mstore(0x780, hash) } { - let x := calldataload(0x640) - mstore(0x780, x) - let y := calldataload(0x660) - mstore(0x7a0, y) + let x := calldataload(0x660) + mstore(0x7a0, x) + let y := calldataload(0x680) + mstore(0x7c0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x680) - mstore(0x7c0, x) - let y := calldataload(0x6a0) - mstore(0x7e0, y) + let x := calldataload(0x6a0) + mstore(0x7e0, x) + let y := calldataload(0x6c0) + mstore(0x800, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x6c0) - mstore(0x800, x) - let y := calldataload(0x6e0) - mstore(0x820, y) + let x := calldataload(0x6e0) + mstore(0x820, x) + let y := calldataload(0x700) + mstore(0x840, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x700) - mstore(0x840, x) - let y := calldataload(0x720) - mstore(0x860, y) + let x := calldataload(0x720) + mstore(0x860, x) + let y := calldataload(0x740) + mstore(0x880, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x740) - mstore(0x880, x) - let y := calldataload(0x760) - mstore(0x8a0, y) + let x := calldataload(0x760) + mstore(0x8a0, x) + let y := calldataload(0x780) + mstore(0x8c0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x780) - mstore(0x8c0, x) - let y := calldataload(0x7a0) - mstore(0x8e0, y) + let x := calldataload(0x7a0) + mstore(0x8e0, x) + let y := calldataload(0x7c0) + mstore(0x900, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x7c0) - mstore(0x900, x) - let y := calldataload(0x7e0) - mstore(0x920, y) + let x := calldataload(0x7e0) + mstore(0x920, x) + let y := calldataload(0x800) + mstore(0x940, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x800) - mstore(0x940, x) - let y := calldataload(0x820) - mstore(0x960, y) + let x := calldataload(0x820) + mstore(0x960, x) + let y := calldataload(0x840) + mstore(0x980, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x840) - mstore(0x980, x) - let y := calldataload(0x860) - mstore(0x9a0, y) + let x := calldataload(0x860) + mstore(0x9a0, x) + let y := calldataload(0x880) + mstore(0x9c0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x880) - mstore(0x9c0, x) - let y := calldataload(0x8a0) - mstore(0x9e0, y) + let x := calldataload(0x8a0) + mstore(0x9e0, x) + let y := calldataload(0x8c0) + mstore(0xa00, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x8c0) - mstore(0xa00, x) - let y := calldataload(0x8e0) - mstore(0xa20, y) + let x := calldataload(0x8e0) + mstore(0xa20, x) + let y := calldataload(0x900) + mstore(0xa40, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x900) - mstore(0xa40, x) - let y := calldataload(0x920) - mstore(0xa60, y) + let x := calldataload(0x920) + mstore(0xa60, x) + let y := calldataload(0x940) + mstore(0xa80, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x940) - mstore(0xa80, x) - let y := calldataload(0x960) - mstore(0xaa0, y) + let x := calldataload(0x960) + mstore(0xaa0, x) + let y := calldataload(0x980) + mstore(0xac0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x980) - mstore(0xac0, x) - let y := calldataload(0x9a0) - mstore(0xae0, y) + let x := calldataload(0x9a0) + mstore(0xae0, x) + let y := calldataload(0x9c0) + mstore(0xb00, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0x9c0) - mstore(0xb00, x) - let y := calldataload(0x9e0) - mstore(0xb20, y) + let x := calldataload(0x9e0) + mstore(0xb20, x) + let y := calldataload(0xa00) + mstore(0xb40, y) success := and(validate_ec_point(x, y), success) } -mstore(0xb40, keccak256(0x760, 992)) +mstore(0xb60, keccak256(0x780, 992)) { - let hash := mload(0xb40) - mstore(0xb60, mod(hash, f_q)) - mstore(0xb80, hash) + let hash := mload(0xb60) + mstore(0xb80, mod(hash, f_q)) + mstore(0xba0, hash) } { - let x := calldataload(0xa00) - mstore(0xba0, x) - let y := calldataload(0xa20) - mstore(0xbc0, y) + let x := calldataload(0xa20) + mstore(0xbc0, x) + let y := calldataload(0xa40) + mstore(0xbe0, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0xa40) - mstore(0xbe0, x) - let y := calldataload(0xa60) - mstore(0xc00, y) + let x := calldataload(0xa60) + mstore(0xc00, x) + let y := calldataload(0xa80) + mstore(0xc20, y) success := and(validate_ec_point(x, y), success) } { - let x := calldataload(0xa80) - mstore(0xc20, x) - let y := calldataload(0xaa0) - mstore(0xc40, y) + let x := calldataload(0xaa0) + mstore(0xc40, x) + let y := calldataload(0xac0) + mstore(0xc60, y) success := and(validate_ec_point(x, y), success) } -mstore(0xc60, keccak256(0xb80, 224)) +mstore(0xc80, keccak256(0xba0, 224)) { - let hash := mload(0xc60) - mstore(0xc80, mod(hash, f_q)) - mstore(0xca0, hash) + let hash := mload(0xc80) + mstore(0xca0, mod(hash, f_q)) + mstore(0xcc0, hash) } -mstore(0xcc0, mod(calldataload(0xac0), f_q)) mstore(0xce0, mod(calldataload(0xae0), f_q)) mstore(0xd00, mod(calldataload(0xb00), f_q)) mstore(0xd20, mod(calldataload(0xb20), f_q)) @@ -541,43 +541,43 @@ mstore(0x1d00, mod(calldataload(0x1b00), f_q)) mstore(0x1d20, mod(calldataload(0x1b20), f_q)) mstore(0x1d40, mod(calldataload(0x1b40), f_q)) mstore(0x1d60, mod(calldataload(0x1b60), f_q)) -mstore(0x1d80, keccak256(0xca0, 4320)) +mstore(0x1d80, mod(calldataload(0x1b80), f_q)) +mstore(0x1da0, keccak256(0xcc0, 4320)) { - let hash := mload(0x1d80) - mstore(0x1da0, mod(hash, f_q)) - mstore(0x1dc0, hash) + let hash := mload(0x1da0) + mstore(0x1dc0, mod(hash, f_q)) + mstore(0x1de0, hash) } -mstore8(7648, 1) -mstore(0x1de0, keccak256(0x1dc0, 33)) +mstore8(7680, 1) +mstore(0x1e00, keccak256(0x1de0, 33)) { - let hash := mload(0x1de0) - mstore(0x1e00, mod(hash, f_q)) - mstore(0x1e20, hash) + let hash := mload(0x1e00) + mstore(0x1e20, mod(hash, f_q)) + mstore(0x1e40, hash) } { - let x := calldataload(0x1b80) - mstore(0x1e40, x) - let y := calldataload(0x1ba0) - mstore(0x1e60, y) + let x := calldataload(0x1ba0) + mstore(0x1e60, x) + let y := calldataload(0x1bc0) + mstore(0x1e80, y) success := and(validate_ec_point(x, y), success) } -mstore(0x1e80, keccak256(0x1e20, 96)) +mstore(0x1ea0, keccak256(0x1e40, 96)) { - let hash := mload(0x1e80) - mstore(0x1ea0, mod(hash, f_q)) - mstore(0x1ec0, hash) + let hash := mload(0x1ea0) + mstore(0x1ec0, mod(hash, f_q)) + mstore(0x1ee0, hash) } { - let x := calldataload(0x1bc0) - mstore(0x1ee0, x) - let y := calldataload(0x1be0) - mstore(0x1f00, y) + let x := calldataload(0x1be0) + mstore(0x1f00, x) + let y := calldataload(0x1c00) + mstore(0x1f20, y) success := and(validate_ec_point(x, y), success) } -mstore(0x1f20, mulmod(mload(0xc80), mload(0xc80), f_q)) -mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1f20), f_q)) +mstore(0x1f40, mulmod(mload(0xca0), mload(0xca0), f_q)) mstore(0x1f60, mulmod(mload(0x1f40), mload(0x1f40), f_q)) mstore(0x1f80, mulmod(mload(0x1f60), mload(0x1f60), f_q)) mstore(0x1fa0, mulmod(mload(0x1f80), mload(0x1f80), f_q)) @@ -597,664 +597,663 @@ mstore(0x2140, mulmod(mload(0x2120), mload(0x2120), f_q)) mstore(0x2160, mulmod(mload(0x2140), mload(0x2140), f_q)) mstore(0x2180, mulmod(mload(0x2160), mload(0x2160), f_q)) mstore(0x21a0, mulmod(mload(0x2180), mload(0x2180), f_q)) -mstore(0x21c0, addmod(mload(0x21a0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0x21e0, mulmod(mload(0x21c0), 21888232434711746154598842647110004286396165347431605739555851272621938401409, f_q)) -mstore(0x2200, mulmod(mload(0x21e0), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) -mstore(0x2220, addmod(mload(0xc80), 912313628429477159406456086641000229562273017905841394476902509870102141130, f_q)) -mstore(0x2240, mulmod(mload(0x21e0), 495188420091111145957709789221178673495499187437761988132837836548330853701, f_q)) -mstore(0x2260, addmod(mload(0xc80), 21393054451748164076288695956036096415052865212978272355565366350027477641916, f_q)) -mstore(0x2280, mulmod(mload(0x21e0), 16064522944768515290584536219762686197737451920702130080538975732575755569557, f_q)) -mstore(0x22a0, addmod(mload(0xc80), 5823719927070759931661869525494588890810912479713904263159228454000052926060, f_q)) -mstore(0x22c0, mulmod(mload(0x21e0), 14686510910986211321976396297238126901237973400949744736326777596334651355305, f_q)) -mstore(0x22e0, addmod(mload(0xc80), 7201731960853063900270009448019148187310390999466289607371426590241157140312, f_q)) -mstore(0x2300, mulmod(mload(0x21e0), 10939663269433627367777756708678102241564365262857670666700619874077960926249, f_q)) -mstore(0x2320, addmod(mload(0xc80), 10948579602405647854468649036579172846983999137558363676997584312497847569368, f_q)) -mstore(0x2340, mulmod(mload(0x21e0), 15402826414547299628414612080036060696555554914079673875872749760617770134879, f_q)) -mstore(0x2360, addmod(mload(0xc80), 6485416457291975593831793665221214391992809486336360467825454425958038360738, f_q)) -mstore(0x2380, mulmod(mload(0x21e0), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) -mstore(0x23a0, addmod(mload(0xc80), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q)) -mstore(0x23c0, mulmod(mload(0x21e0), 1, f_q)) -mstore(0x23e0, addmod(mload(0xc80), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -{ - let prod := mload(0x2220) +mstore(0x21c0, mulmod(mload(0x21a0), mload(0x21a0), f_q)) +mstore(0x21e0, addmod(mload(0x21c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0x2200, mulmod(mload(0x21e0), 21888232434711746154598842647110004286396165347431605739555851272621938401409, f_q)) +mstore(0x2220, mulmod(mload(0x2200), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) +mstore(0x2240, addmod(mload(0xca0), 912313628429477159406456086641000229562273017905841394476902509870102141130, f_q)) +mstore(0x2260, mulmod(mload(0x2200), 495188420091111145957709789221178673495499187437761988132837836548330853701, f_q)) +mstore(0x2280, addmod(mload(0xca0), 21393054451748164076288695956036096415052865212978272355565366350027477641916, f_q)) +mstore(0x22a0, mulmod(mload(0x2200), 16064522944768515290584536219762686197737451920702130080538975732575755569557, f_q)) +mstore(0x22c0, addmod(mload(0xca0), 5823719927070759931661869525494588890810912479713904263159228454000052926060, f_q)) +mstore(0x22e0, mulmod(mload(0x2200), 14686510910986211321976396297238126901237973400949744736326777596334651355305, f_q)) +mstore(0x2300, addmod(mload(0xca0), 7201731960853063900270009448019148187310390999466289607371426590241157140312, f_q)) +mstore(0x2320, mulmod(mload(0x2200), 10939663269433627367777756708678102241564365262857670666700619874077960926249, f_q)) +mstore(0x2340, addmod(mload(0xca0), 10948579602405647854468649036579172846983999137558363676997584312497847569368, f_q)) +mstore(0x2360, mulmod(mload(0x2200), 15402826414547299628414612080036060696555554914079673875872749760617770134879, f_q)) +mstore(0x2380, addmod(mload(0xca0), 6485416457291975593831793665221214391992809486336360467825454425958038360738, f_q)) +mstore(0x23a0, mulmod(mload(0x2200), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) +mstore(0x23c0, addmod(mload(0xca0), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q)) +mstore(0x23e0, mulmod(mload(0x2200), 1, f_q)) +mstore(0x2400, addmod(mload(0xca0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +{ + let prod := mload(0x2240) - prod := mulmod(mload(0x2260), prod, f_q) - mstore(0x2400, prod) - - prod := mulmod(mload(0x22a0), prod, f_q) + prod := mulmod(mload(0x2280), prod, f_q) mstore(0x2420, prod) - prod := mulmod(mload(0x22e0), prod, f_q) + prod := mulmod(mload(0x22c0), prod, f_q) mstore(0x2440, prod) - prod := mulmod(mload(0x2320), prod, f_q) + prod := mulmod(mload(0x2300), prod, f_q) mstore(0x2460, prod) - prod := mulmod(mload(0x2360), prod, f_q) + prod := mulmod(mload(0x2340), prod, f_q) mstore(0x2480, prod) - prod := mulmod(mload(0x23a0), prod, f_q) + prod := mulmod(mload(0x2380), prod, f_q) mstore(0x24a0, prod) - prod := mulmod(mload(0x23e0), prod, f_q) + prod := mulmod(mload(0x23c0), prod, f_q) mstore(0x24c0, prod) - prod := mulmod(mload(0x21c0), prod, f_q) + prod := mulmod(mload(0x2400), prod, f_q) mstore(0x24e0, prod) + prod := mulmod(mload(0x21e0), prod, f_q) + mstore(0x2500, prod) + } -mstore(0x2520, 32) mstore(0x2540, 32) mstore(0x2560, 32) -mstore(0x2580, mload(0x24e0)) -mstore(0x25a0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x25c0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x2520, 0xc0, 0x2500, 0x20), 1), success) +mstore(0x2580, 32) +mstore(0x25a0, mload(0x2500)) +mstore(0x25c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x25e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x2540, 0xc0, 0x2520, 0x20), 1), success) { - let inv := mload(0x2500) + let inv := mload(0x2520) let v - v := mload(0x21c0) - mstore(8640, mulmod(mload(0x24c0), inv, f_q)) + v := mload(0x21e0) + mstore(8672, mulmod(mload(0x24e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x23e0) - mstore(9184, mulmod(mload(0x24a0), inv, f_q)) + v := mload(0x2400) + mstore(9216, mulmod(mload(0x24c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x23a0) - mstore(9120, mulmod(mload(0x2480), inv, f_q)) + v := mload(0x23c0) + mstore(9152, mulmod(mload(0x24a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x2360) - mstore(9056, mulmod(mload(0x2460), inv, f_q)) + v := mload(0x2380) + mstore(9088, mulmod(mload(0x2480), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x2320) - mstore(8992, mulmod(mload(0x2440), inv, f_q)) + v := mload(0x2340) + mstore(9024, mulmod(mload(0x2460), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x22e0) - mstore(8928, mulmod(mload(0x2420), inv, f_q)) + v := mload(0x2300) + mstore(8960, mulmod(mload(0x2440), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x22a0) - mstore(8864, mulmod(mload(0x2400), inv, f_q)) + v := mload(0x22c0) + mstore(8896, mulmod(mload(0x2420), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x2260) - mstore(8800, mulmod(mload(0x2220), inv, f_q)) + v := mload(0x2280) + mstore(8832, mulmod(mload(0x2240), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x2220, inv) + mstore(0x2240, inv) } -mstore(0x25e0, mulmod(mload(0x2200), mload(0x2220), f_q)) -mstore(0x2600, mulmod(mload(0x2240), mload(0x2260), f_q)) -mstore(0x2620, mulmod(mload(0x2280), mload(0x22a0), f_q)) -mstore(0x2640, mulmod(mload(0x22c0), mload(0x22e0), f_q)) -mstore(0x2660, mulmod(mload(0x2300), mload(0x2320), f_q)) -mstore(0x2680, mulmod(mload(0x2340), mload(0x2360), f_q)) -mstore(0x26a0, mulmod(mload(0x2380), mload(0x23a0), f_q)) -mstore(0x26c0, mulmod(mload(0x23c0), mload(0x23e0), f_q)) -mstore(0x26e0, mulmod(mload(0xd00), mload(0xce0), f_q)) -mstore(0x2700, addmod(mload(0xcc0), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x2700), sub(f_q, mload(0xd20)), f_q)) -mstore(0x2740, mulmod(mload(0x2720), mload(0x1380), f_q)) -mstore(0x2760, mulmod(mload(0xb60), mload(0x2740), f_q)) -mstore(0x2780, mulmod(mload(0xd80), mload(0xd60), f_q)) -mstore(0x27a0, addmod(mload(0xd40), mload(0x2780), f_q)) -mstore(0x27c0, addmod(mload(0x27a0), sub(f_q, mload(0xda0)), f_q)) -mstore(0x27e0, mulmod(mload(0x27c0), mload(0x13a0), f_q)) -mstore(0x2800, addmod(mload(0x2760), mload(0x27e0), f_q)) -mstore(0x2820, mulmod(mload(0xb60), mload(0x2800), f_q)) -mstore(0x2840, mulmod(mload(0xe00), mload(0xde0), f_q)) -mstore(0x2860, addmod(mload(0xdc0), mload(0x2840), f_q)) -mstore(0x2880, addmod(mload(0x2860), sub(f_q, mload(0xe20)), f_q)) -mstore(0x28a0, mulmod(mload(0x2880), mload(0x13c0), f_q)) -mstore(0x28c0, addmod(mload(0x2820), mload(0x28a0), f_q)) -mstore(0x28e0, mulmod(mload(0xb60), mload(0x28c0), f_q)) -mstore(0x2900, mulmod(mload(0xe80), mload(0xe60), f_q)) -mstore(0x2920, addmod(mload(0xe40), mload(0x2900), f_q)) -mstore(0x2940, addmod(mload(0x2920), sub(f_q, mload(0xea0)), f_q)) -mstore(0x2960, mulmod(mload(0x2940), mload(0x13e0), f_q)) -mstore(0x2980, addmod(mload(0x28e0), mload(0x2960), f_q)) -mstore(0x29a0, mulmod(mload(0xb60), mload(0x2980), f_q)) -mstore(0x29c0, mulmod(mload(0xf00), mload(0xee0), f_q)) -mstore(0x29e0, addmod(mload(0xec0), mload(0x29c0), f_q)) -mstore(0x2a00, addmod(mload(0x29e0), sub(f_q, mload(0xf20)), f_q)) -mstore(0x2a20, mulmod(mload(0x2a00), mload(0x1400), f_q)) -mstore(0x2a40, addmod(mload(0x29a0), mload(0x2a20), f_q)) -mstore(0x2a60, mulmod(mload(0xb60), mload(0x2a40), f_q)) -mstore(0x2a80, mulmod(mload(0xf80), mload(0xf60), f_q)) -mstore(0x2aa0, addmod(mload(0xf40), mload(0x2a80), f_q)) -mstore(0x2ac0, addmod(mload(0x2aa0), sub(f_q, mload(0xfa0)), f_q)) -mstore(0x2ae0, mulmod(mload(0x2ac0), mload(0x1420), f_q)) -mstore(0x2b00, addmod(mload(0x2a60), mload(0x2ae0), f_q)) -mstore(0x2b20, mulmod(mload(0xb60), mload(0x2b00), f_q)) -mstore(0x2b40, mulmod(mload(0x1000), mload(0xfe0), f_q)) -mstore(0x2b60, addmod(mload(0xfc0), mload(0x2b40), f_q)) -mstore(0x2b80, addmod(mload(0x2b60), sub(f_q, mload(0x1020)), f_q)) -mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x1440), f_q)) -mstore(0x2bc0, addmod(mload(0x2b20), mload(0x2ba0), f_q)) -mstore(0x2be0, mulmod(mload(0xb60), mload(0x2bc0), f_q)) -mstore(0x2c00, mulmod(mload(0x1080), mload(0x1060), f_q)) -mstore(0x2c20, addmod(mload(0x1040), mload(0x2c00), f_q)) -mstore(0x2c40, addmod(mload(0x2c20), sub(f_q, mload(0x10a0)), f_q)) -mstore(0x2c60, mulmod(mload(0x2c40), mload(0x1460), f_q)) -mstore(0x2c80, addmod(mload(0x2be0), mload(0x2c60), f_q)) -mstore(0x2ca0, mulmod(mload(0xb60), mload(0x2c80), f_q)) -mstore(0x2cc0, mulmod(mload(0x1100), mload(0x10e0), f_q)) -mstore(0x2ce0, addmod(mload(0x10c0), mload(0x2cc0), f_q)) -mstore(0x2d00, addmod(mload(0x2ce0), sub(f_q, mload(0x1120)), f_q)) -mstore(0x2d20, mulmod(mload(0x2d00), mload(0x1480), f_q)) -mstore(0x2d40, addmod(mload(0x2ca0), mload(0x2d20), f_q)) -mstore(0x2d60, mulmod(mload(0xb60), mload(0x2d40), f_q)) -mstore(0x2d80, mulmod(mload(0x1180), mload(0x1160), f_q)) -mstore(0x2da0, addmod(mload(0x1140), mload(0x2d80), f_q)) -mstore(0x2dc0, addmod(mload(0x2da0), sub(f_q, mload(0x11a0)), f_q)) -mstore(0x2de0, mulmod(mload(0x2dc0), mload(0x14a0), f_q)) -mstore(0x2e00, addmod(mload(0x2d60), mload(0x2de0), f_q)) -mstore(0x2e20, mulmod(mload(0xb60), mload(0x2e00), f_q)) -mstore(0x2e40, mulmod(mload(0x1200), mload(0x11e0), f_q)) -mstore(0x2e60, addmod(mload(0x11c0), mload(0x2e40), f_q)) -mstore(0x2e80, addmod(mload(0x2e60), sub(f_q, mload(0x1220)), f_q)) -mstore(0x2ea0, mulmod(mload(0x2e80), mload(0x14c0), f_q)) -mstore(0x2ec0, addmod(mload(0x2e20), mload(0x2ea0), f_q)) -mstore(0x2ee0, mulmod(mload(0xb60), mload(0x2ec0), f_q)) -mstore(0x2f00, addmod(1, sub(f_q, mload(0x1760)), f_q)) -mstore(0x2f20, mulmod(mload(0x2f00), mload(0x26c0), f_q)) -mstore(0x2f40, addmod(mload(0x2ee0), mload(0x2f20), f_q)) -mstore(0x2f60, mulmod(mload(0xb60), mload(0x2f40), f_q)) -mstore(0x2f80, mulmod(mload(0x1ac0), mload(0x1ac0), f_q)) -mstore(0x2fa0, addmod(mload(0x2f80), sub(f_q, mload(0x1ac0)), f_q)) -mstore(0x2fc0, mulmod(mload(0x2fa0), mload(0x25e0), f_q)) -mstore(0x2fe0, addmod(mload(0x2f60), mload(0x2fc0), f_q)) -mstore(0x3000, mulmod(mload(0xb60), mload(0x2fe0), f_q)) -mstore(0x3020, addmod(mload(0x17c0), sub(f_q, mload(0x17a0)), f_q)) -mstore(0x3040, mulmod(mload(0x3020), mload(0x26c0), f_q)) -mstore(0x3060, addmod(mload(0x3000), mload(0x3040), f_q)) -mstore(0x3080, mulmod(mload(0xb60), mload(0x3060), f_q)) -mstore(0x30a0, addmod(mload(0x1820), sub(f_q, mload(0x1800)), f_q)) -mstore(0x30c0, mulmod(mload(0x30a0), mload(0x26c0), f_q)) -mstore(0x30e0, addmod(mload(0x3080), mload(0x30c0), f_q)) -mstore(0x3100, mulmod(mload(0xb60), mload(0x30e0), f_q)) -mstore(0x3120, addmod(mload(0x1880), sub(f_q, mload(0x1860)), f_q)) -mstore(0x3140, mulmod(mload(0x3120), mload(0x26c0), f_q)) -mstore(0x3160, addmod(mload(0x3100), mload(0x3140), f_q)) -mstore(0x3180, mulmod(mload(0xb60), mload(0x3160), f_q)) -mstore(0x31a0, addmod(mload(0x18e0), sub(f_q, mload(0x18c0)), f_q)) -mstore(0x31c0, mulmod(mload(0x31a0), mload(0x26c0), f_q)) -mstore(0x31e0, addmod(mload(0x3180), mload(0x31c0), f_q)) -mstore(0x3200, mulmod(mload(0xb60), mload(0x31e0), f_q)) -mstore(0x3220, addmod(mload(0x1940), sub(f_q, mload(0x1920)), f_q)) -mstore(0x3240, mulmod(mload(0x3220), mload(0x26c0), f_q)) -mstore(0x3260, addmod(mload(0x3200), mload(0x3240), f_q)) -mstore(0x3280, mulmod(mload(0xb60), mload(0x3260), f_q)) -mstore(0x32a0, addmod(mload(0x19a0), sub(f_q, mload(0x1980)), f_q)) -mstore(0x32c0, mulmod(mload(0x32a0), mload(0x26c0), f_q)) -mstore(0x32e0, addmod(mload(0x3280), mload(0x32c0), f_q)) -mstore(0x3300, mulmod(mload(0xb60), mload(0x32e0), f_q)) -mstore(0x3320, addmod(mload(0x1a00), sub(f_q, mload(0x19e0)), f_q)) -mstore(0x3340, mulmod(mload(0x3320), mload(0x26c0), f_q)) -mstore(0x3360, addmod(mload(0x3300), mload(0x3340), f_q)) -mstore(0x3380, mulmod(mload(0xb60), mload(0x3360), f_q)) -mstore(0x33a0, addmod(mload(0x1a60), sub(f_q, mload(0x1a40)), f_q)) -mstore(0x33c0, mulmod(mload(0x33a0), mload(0x26c0), f_q)) -mstore(0x33e0, addmod(mload(0x3380), mload(0x33c0), f_q)) -mstore(0x3400, mulmod(mload(0xb60), mload(0x33e0), f_q)) -mstore(0x3420, addmod(mload(0x1ac0), sub(f_q, mload(0x1aa0)), f_q)) -mstore(0x3440, mulmod(mload(0x3420), mload(0x26c0), f_q)) -mstore(0x3460, addmod(mload(0x3400), mload(0x3440), f_q)) -mstore(0x3480, mulmod(mload(0xb60), mload(0x3460), f_q)) -mstore(0x34a0, addmod(1, sub(f_q, mload(0x25e0)), f_q)) -mstore(0x34c0, addmod(mload(0x2600), mload(0x2620), f_q)) -mstore(0x34e0, addmod(mload(0x34c0), mload(0x2640), f_q)) -mstore(0x3500, addmod(mload(0x34e0), mload(0x2660), f_q)) -mstore(0x3520, addmod(mload(0x3500), mload(0x2680), f_q)) -mstore(0x3540, addmod(mload(0x3520), mload(0x26a0), f_q)) -mstore(0x3560, addmod(mload(0x34a0), sub(f_q, mload(0x3540)), f_q)) -mstore(0x3580, mulmod(mload(0x1500), mload(0x6e0), f_q)) -mstore(0x35a0, addmod(mload(0x1300), mload(0x3580), f_q)) -mstore(0x35c0, addmod(mload(0x35a0), mload(0x740), f_q)) -mstore(0x35e0, mulmod(mload(0x1520), mload(0x6e0), f_q)) -mstore(0x3600, addmod(mload(0xcc0), mload(0x35e0), f_q)) -mstore(0x3620, addmod(mload(0x3600), mload(0x740), f_q)) -mstore(0x3640, mulmod(mload(0x3620), mload(0x35c0), f_q)) -mstore(0x3660, mulmod(mload(0x3640), mload(0x1780), f_q)) -mstore(0x3680, mulmod(1, mload(0x6e0), f_q)) -mstore(0x36a0, mulmod(mload(0xc80), mload(0x3680), f_q)) -mstore(0x36c0, addmod(mload(0x1300), mload(0x36a0), f_q)) -mstore(0x36e0, addmod(mload(0x36c0), mload(0x740), f_q)) -mstore(0x3700, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x6e0), f_q)) -mstore(0x3720, mulmod(mload(0xc80), mload(0x3700), f_q)) -mstore(0x3740, addmod(mload(0xcc0), mload(0x3720), f_q)) -mstore(0x3760, addmod(mload(0x3740), mload(0x740), f_q)) -mstore(0x3780, mulmod(mload(0x3760), mload(0x36e0), f_q)) -mstore(0x37a0, mulmod(mload(0x3780), mload(0x1760), f_q)) -mstore(0x37c0, addmod(mload(0x3660), sub(f_q, mload(0x37a0)), f_q)) -mstore(0x37e0, mulmod(mload(0x37c0), mload(0x3560), f_q)) -mstore(0x3800, addmod(mload(0x3480), mload(0x37e0), f_q)) -mstore(0x3820, mulmod(mload(0xb60), mload(0x3800), f_q)) -mstore(0x3840, mulmod(mload(0x1540), mload(0x6e0), f_q)) -mstore(0x3860, addmod(mload(0xd40), mload(0x3840), f_q)) -mstore(0x3880, addmod(mload(0x3860), mload(0x740), f_q)) -mstore(0x38a0, mulmod(mload(0x1560), mload(0x6e0), f_q)) -mstore(0x38c0, addmod(mload(0xdc0), mload(0x38a0), f_q)) -mstore(0x38e0, addmod(mload(0x38c0), mload(0x740), f_q)) -mstore(0x3900, mulmod(mload(0x38e0), mload(0x3880), f_q)) -mstore(0x3920, mulmod(mload(0x3900), mload(0x17e0), f_q)) -mstore(0x3940, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x6e0), f_q)) -mstore(0x3960, mulmod(mload(0xc80), mload(0x3940), f_q)) -mstore(0x3980, addmod(mload(0xd40), mload(0x3960), f_q)) -mstore(0x39a0, addmod(mload(0x3980), mload(0x740), f_q)) -mstore(0x39c0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x6e0), f_q)) -mstore(0x39e0, mulmod(mload(0xc80), mload(0x39c0), f_q)) -mstore(0x3a00, addmod(mload(0xdc0), mload(0x39e0), f_q)) -mstore(0x3a20, addmod(mload(0x3a00), mload(0x740), f_q)) -mstore(0x3a40, mulmod(mload(0x3a20), mload(0x39a0), f_q)) -mstore(0x3a60, mulmod(mload(0x3a40), mload(0x17c0), f_q)) -mstore(0x3a80, addmod(mload(0x3920), sub(f_q, mload(0x3a60)), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), mload(0x3560), f_q)) -mstore(0x3ac0, addmod(mload(0x3820), mload(0x3aa0), f_q)) -mstore(0x3ae0, mulmod(mload(0xb60), mload(0x3ac0), f_q)) -mstore(0x3b00, mulmod(mload(0x1580), mload(0x6e0), f_q)) -mstore(0x3b20, addmod(mload(0xe40), mload(0x3b00), f_q)) -mstore(0x3b40, addmod(mload(0x3b20), mload(0x740), f_q)) -mstore(0x3b60, mulmod(mload(0x15a0), mload(0x6e0), f_q)) -mstore(0x3b80, addmod(mload(0xec0), mload(0x3b60), f_q)) -mstore(0x3ba0, addmod(mload(0x3b80), mload(0x740), f_q)) -mstore(0x3bc0, mulmod(mload(0x3ba0), mload(0x3b40), f_q)) -mstore(0x3be0, mulmod(mload(0x3bc0), mload(0x1840), f_q)) -mstore(0x3c00, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x6e0), f_q)) -mstore(0x3c20, mulmod(mload(0xc80), mload(0x3c00), f_q)) -mstore(0x3c40, addmod(mload(0xe40), mload(0x3c20), f_q)) -mstore(0x3c60, addmod(mload(0x3c40), mload(0x740), f_q)) -mstore(0x3c80, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x6e0), f_q)) -mstore(0x3ca0, mulmod(mload(0xc80), mload(0x3c80), f_q)) -mstore(0x3cc0, addmod(mload(0xec0), mload(0x3ca0), f_q)) -mstore(0x3ce0, addmod(mload(0x3cc0), mload(0x740), f_q)) -mstore(0x3d00, mulmod(mload(0x3ce0), mload(0x3c60), f_q)) -mstore(0x3d20, mulmod(mload(0x3d00), mload(0x1820), f_q)) -mstore(0x3d40, addmod(mload(0x3be0), sub(f_q, mload(0x3d20)), f_q)) -mstore(0x3d60, mulmod(mload(0x3d40), mload(0x3560), f_q)) -mstore(0x3d80, addmod(mload(0x3ae0), mload(0x3d60), f_q)) -mstore(0x3da0, mulmod(mload(0xb60), mload(0x3d80), f_q)) -mstore(0x3dc0, mulmod(mload(0x15c0), mload(0x6e0), f_q)) -mstore(0x3de0, addmod(mload(0xf40), mload(0x3dc0), f_q)) -mstore(0x3e00, addmod(mload(0x3de0), mload(0x740), f_q)) -mstore(0x3e20, mulmod(mload(0x15e0), mload(0x6e0), f_q)) -mstore(0x3e40, addmod(mload(0xfc0), mload(0x3e20), f_q)) -mstore(0x3e60, addmod(mload(0x3e40), mload(0x740), f_q)) -mstore(0x3e80, mulmod(mload(0x3e60), mload(0x3e00), f_q)) -mstore(0x3ea0, mulmod(mload(0x3e80), mload(0x18a0), f_q)) -mstore(0x3ec0, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x6e0), f_q)) -mstore(0x3ee0, mulmod(mload(0xc80), mload(0x3ec0), f_q)) -mstore(0x3f00, addmod(mload(0xf40), mload(0x3ee0), f_q)) -mstore(0x3f20, addmod(mload(0x3f00), mload(0x740), f_q)) -mstore(0x3f40, mulmod(14704729814417906439424896605881467874595262020190401576785074330126828718155, mload(0x6e0), f_q)) -mstore(0x3f60, mulmod(mload(0xc80), mload(0x3f40), f_q)) -mstore(0x3f80, addmod(mload(0xfc0), mload(0x3f60), f_q)) -mstore(0x3fa0, addmod(mload(0x3f80), mload(0x740), f_q)) -mstore(0x3fc0, mulmod(mload(0x3fa0), mload(0x3f20), f_q)) -mstore(0x3fe0, mulmod(mload(0x3fc0), mload(0x1880), f_q)) -mstore(0x4000, addmod(mload(0x3ea0), sub(f_q, mload(0x3fe0)), f_q)) -mstore(0x4020, mulmod(mload(0x4000), mload(0x3560), f_q)) -mstore(0x4040, addmod(mload(0x3da0), mload(0x4020), f_q)) -mstore(0x4060, mulmod(mload(0xb60), mload(0x4040), f_q)) -mstore(0x4080, mulmod(mload(0x1600), mload(0x6e0), f_q)) -mstore(0x40a0, addmod(mload(0x1040), mload(0x4080), f_q)) -mstore(0x40c0, addmod(mload(0x40a0), mload(0x740), f_q)) -mstore(0x40e0, mulmod(mload(0x1620), mload(0x6e0), f_q)) -mstore(0x4100, addmod(mload(0x10c0), mload(0x40e0), f_q)) -mstore(0x4120, addmod(mload(0x4100), mload(0x740), f_q)) -mstore(0x4140, mulmod(mload(0x4120), mload(0x40c0), f_q)) -mstore(0x4160, mulmod(mload(0x4140), mload(0x1900), f_q)) -mstore(0x4180, mulmod(8343274462013750416000956870576256937330525306073862550863787263304548803879, mload(0x6e0), f_q)) -mstore(0x41a0, mulmod(mload(0xc80), mload(0x4180), f_q)) -mstore(0x41c0, addmod(mload(0x1040), mload(0x41a0), f_q)) -mstore(0x41e0, addmod(mload(0x41c0), mload(0x740), f_q)) -mstore(0x4200, mulmod(20928372310071051017340352686640453451620397549739756658327314209761852842004, mload(0x6e0), f_q)) -mstore(0x4220, mulmod(mload(0xc80), mload(0x4200), f_q)) -mstore(0x4240, addmod(mload(0x10c0), mload(0x4220), f_q)) -mstore(0x4260, addmod(mload(0x4240), mload(0x740), f_q)) -mstore(0x4280, mulmod(mload(0x4260), mload(0x41e0), f_q)) -mstore(0x42a0, mulmod(mload(0x4280), mload(0x18e0), f_q)) -mstore(0x42c0, addmod(mload(0x4160), sub(f_q, mload(0x42a0)), f_q)) -mstore(0x42e0, mulmod(mload(0x42c0), mload(0x3560), f_q)) -mstore(0x4300, addmod(mload(0x4060), mload(0x42e0), f_q)) -mstore(0x4320, mulmod(mload(0xb60), mload(0x4300), f_q)) -mstore(0x4340, mulmod(mload(0x1640), mload(0x6e0), f_q)) -mstore(0x4360, addmod(mload(0x1140), mload(0x4340), f_q)) -mstore(0x4380, addmod(mload(0x4360), mload(0x740), f_q)) -mstore(0x43a0, mulmod(mload(0x1660), mload(0x6e0), f_q)) -mstore(0x43c0, addmod(mload(0x11c0), mload(0x43a0), f_q)) -mstore(0x43e0, addmod(mload(0x43c0), mload(0x740), f_q)) -mstore(0x4400, mulmod(mload(0x43e0), mload(0x4380), f_q)) -mstore(0x4420, mulmod(mload(0x4400), mload(0x1960), f_q)) -mstore(0x4440, mulmod(15845651941796975697993789271154426079663327509658641548785793587449119139335, mload(0x6e0), f_q)) -mstore(0x4460, mulmod(mload(0xc80), mload(0x4440), f_q)) -mstore(0x4480, addmod(mload(0x1140), mload(0x4460), f_q)) -mstore(0x44a0, addmod(mload(0x4480), mload(0x740), f_q)) -mstore(0x44c0, mulmod(8045145839887181143520022567602912517500076612542816225981084745629998235872, mload(0x6e0), f_q)) -mstore(0x44e0, mulmod(mload(0xc80), mload(0x44c0), f_q)) -mstore(0x4500, addmod(mload(0x11c0), mload(0x44e0), f_q)) -mstore(0x4520, addmod(mload(0x4500), mload(0x740), f_q)) -mstore(0x4540, mulmod(mload(0x4520), mload(0x44a0), f_q)) -mstore(0x4560, mulmod(mload(0x4540), mload(0x1940), f_q)) -mstore(0x4580, addmod(mload(0x4420), sub(f_q, mload(0x4560)), f_q)) -mstore(0x45a0, mulmod(mload(0x4580), mload(0x3560), f_q)) -mstore(0x45c0, addmod(mload(0x4320), mload(0x45a0), f_q)) -mstore(0x45e0, mulmod(mload(0xb60), mload(0x45c0), f_q)) -mstore(0x4600, mulmod(mload(0x1680), mload(0x6e0), f_q)) -mstore(0x4620, addmod(mload(0x1240), mload(0x4600), f_q)) -mstore(0x4640, addmod(mload(0x4620), mload(0x740), f_q)) -mstore(0x4660, mulmod(mload(0x16a0), mload(0x6e0), f_q)) -mstore(0x4680, addmod(mload(0x1260), mload(0x4660), f_q)) -mstore(0x46a0, addmod(mload(0x4680), mload(0x740), f_q)) -mstore(0x46c0, mulmod(mload(0x46a0), mload(0x4640), f_q)) -mstore(0x46e0, mulmod(mload(0x46c0), mload(0x19c0), f_q)) -mstore(0x4700, mulmod(2381670505483685611182091218417223919364072893694444758025506701602682587318, mload(0x6e0), f_q)) -mstore(0x4720, mulmod(mload(0xc80), mload(0x4700), f_q)) -mstore(0x4740, addmod(mload(0x1240), mload(0x4720), f_q)) -mstore(0x4760, addmod(mload(0x4740), mload(0x740), f_q)) -mstore(0x4780, mulmod(7687930163830757070113631199804839025806810462573557873219800755854393200610, mload(0x6e0), f_q)) -mstore(0x47a0, mulmod(mload(0xc80), mload(0x4780), f_q)) -mstore(0x47c0, addmod(mload(0x1260), mload(0x47a0), f_q)) -mstore(0x47e0, addmod(mload(0x47c0), mload(0x740), f_q)) -mstore(0x4800, mulmod(mload(0x47e0), mload(0x4760), f_q)) -mstore(0x4820, mulmod(mload(0x4800), mload(0x19a0), f_q)) -mstore(0x4840, addmod(mload(0x46e0), sub(f_q, mload(0x4820)), f_q)) -mstore(0x4860, mulmod(mload(0x4840), mload(0x3560), f_q)) -mstore(0x4880, addmod(mload(0x45e0), mload(0x4860), f_q)) -mstore(0x48a0, mulmod(mload(0xb60), mload(0x4880), f_q)) -mstore(0x48c0, mulmod(mload(0x16c0), mload(0x6e0), f_q)) -mstore(0x48e0, addmod(mload(0x1280), mload(0x48c0), f_q)) -mstore(0x4900, addmod(mload(0x48e0), mload(0x740), f_q)) -mstore(0x4920, mulmod(mload(0x16e0), mload(0x6e0), f_q)) -mstore(0x4940, addmod(mload(0x12a0), mload(0x4920), f_q)) -mstore(0x4960, addmod(mload(0x4940), mload(0x740), f_q)) -mstore(0x4980, mulmod(mload(0x4960), mload(0x4900), f_q)) -mstore(0x49a0, mulmod(mload(0x4980), mload(0x1a20), f_q)) -mstore(0x49c0, mulmod(18841374007583180662637314443453732245933177918185782718371124070078050062475, mload(0x6e0), f_q)) -mstore(0x49e0, mulmod(mload(0xc80), mload(0x49c0), f_q)) -mstore(0x4a00, addmod(mload(0x1280), mload(0x49e0), f_q)) -mstore(0x4a20, addmod(mload(0x4a00), mload(0x740), f_q)) -mstore(0x4a40, mulmod(19197752132381552471349846071531569266256022960372343424487157777415058628365, mload(0x6e0), f_q)) -mstore(0x4a60, mulmod(mload(0xc80), mload(0x4a40), f_q)) -mstore(0x4a80, addmod(mload(0x12a0), mload(0x4a60), f_q)) -mstore(0x4aa0, addmod(mload(0x4a80), mload(0x740), f_q)) -mstore(0x4ac0, mulmod(mload(0x4aa0), mload(0x4a20), f_q)) -mstore(0x4ae0, mulmod(mload(0x4ac0), mload(0x1a00), f_q)) -mstore(0x4b00, addmod(mload(0x49a0), sub(f_q, mload(0x4ae0)), f_q)) -mstore(0x4b20, mulmod(mload(0x4b00), mload(0x3560), f_q)) -mstore(0x4b40, addmod(mload(0x48a0), mload(0x4b20), f_q)) -mstore(0x4b60, mulmod(mload(0xb60), mload(0x4b40), f_q)) -mstore(0x4b80, mulmod(mload(0x1700), mload(0x6e0), f_q)) -mstore(0x4ba0, addmod(mload(0x12c0), mload(0x4b80), f_q)) -mstore(0x4bc0, addmod(mload(0x4ba0), mload(0x740), f_q)) -mstore(0x4be0, mulmod(mload(0x1720), mload(0x6e0), f_q)) -mstore(0x4c00, addmod(mload(0x12e0), mload(0x4be0), f_q)) -mstore(0x4c20, addmod(mload(0x4c00), mload(0x740), f_q)) -mstore(0x4c40, mulmod(mload(0x4c20), mload(0x4bc0), f_q)) -mstore(0x4c60, mulmod(mload(0x4c40), mload(0x1a80), f_q)) -mstore(0x4c80, mulmod(4107547195958811607586128047858595978395981384383810616480821684720783343476, mload(0x6e0), f_q)) -mstore(0x4ca0, mulmod(mload(0xc80), mload(0x4c80), f_q)) -mstore(0x4cc0, addmod(mload(0x12c0), mload(0x4ca0), f_q)) -mstore(0x4ce0, addmod(mload(0x4cc0), mload(0x740), f_q)) -mstore(0x4d00, mulmod(13564642984573314542683510780499048133657656300857957395232929436066953511694, mload(0x6e0), f_q)) -mstore(0x4d20, mulmod(mload(0xc80), mload(0x4d00), f_q)) -mstore(0x4d40, addmod(mload(0x12e0), mload(0x4d20), f_q)) -mstore(0x4d60, addmod(mload(0x4d40), mload(0x740), f_q)) -mstore(0x4d80, mulmod(mload(0x4d60), mload(0x4ce0), f_q)) -mstore(0x4da0, mulmod(mload(0x4d80), mload(0x1a60), f_q)) -mstore(0x4dc0, addmod(mload(0x4c60), sub(f_q, mload(0x4da0)), f_q)) -mstore(0x4de0, mulmod(mload(0x4dc0), mload(0x3560), f_q)) -mstore(0x4e00, addmod(mload(0x4b60), mload(0x4de0), f_q)) -mstore(0x4e20, mulmod(mload(0xb60), mload(0x4e00), f_q)) -mstore(0x4e40, mulmod(mload(0x1740), mload(0x6e0), f_q)) -mstore(0x4e60, addmod(0, mload(0x4e40), f_q)) -mstore(0x4e80, addmod(mload(0x4e60), mload(0x740), f_q)) -mstore(0x4ea0, mulmod(mload(0x4e80), mload(0x1ae0), f_q)) -mstore(0x4ec0, mulmod(13613576618463984615987010477140414706703336142901358713038085451220811690793, mload(0x6e0), f_q)) -mstore(0x4ee0, mulmod(mload(0xc80), mload(0x4ec0), f_q)) -mstore(0x4f00, addmod(0, mload(0x4ee0), f_q)) -mstore(0x4f20, addmod(mload(0x4f00), mload(0x740), f_q)) -mstore(0x4f40, mulmod(mload(0x4f20), mload(0x1ac0), f_q)) -mstore(0x4f60, addmod(mload(0x4ea0), sub(f_q, mload(0x4f40)), f_q)) -mstore(0x4f80, mulmod(mload(0x4f60), mload(0x3560), f_q)) -mstore(0x4fa0, addmod(mload(0x4e20), mload(0x4f80), f_q)) -mstore(0x4fc0, mulmod(mload(0xb60), mload(0x4fa0), f_q)) -mstore(0x4fe0, addmod(1, sub(f_q, mload(0x1b00)), f_q)) -mstore(0x5000, mulmod(mload(0x4fe0), mload(0x26c0), f_q)) -mstore(0x5020, addmod(mload(0x4fc0), mload(0x5000), f_q)) -mstore(0x5040, mulmod(mload(0xb60), mload(0x5020), f_q)) -mstore(0x5060, mulmod(mload(0x1b00), mload(0x1b00), f_q)) -mstore(0x5080, addmod(mload(0x5060), sub(f_q, mload(0x1b00)), f_q)) -mstore(0x50a0, mulmod(mload(0x5080), mload(0x25e0), f_q)) -mstore(0x50c0, addmod(mload(0x5040), mload(0x50a0), f_q)) -mstore(0x50e0, mulmod(mload(0xb60), mload(0x50c0), f_q)) -mstore(0x5100, addmod(mload(0x1b40), mload(0x6e0), f_q)) -mstore(0x5120, mulmod(mload(0x5100), mload(0x1b20), f_q)) -mstore(0x5140, addmod(mload(0x1b80), mload(0x740), f_q)) -mstore(0x5160, mulmod(mload(0x5140), mload(0x5120), f_q)) -mstore(0x5180, addmod(mload(0x1240), mload(0x6e0), f_q)) -mstore(0x51a0, mulmod(mload(0x5180), mload(0x1b00), f_q)) -mstore(0x51c0, addmod(mload(0x1320), mload(0x740), f_q)) -mstore(0x51e0, mulmod(mload(0x51c0), mload(0x51a0), f_q)) -mstore(0x5200, addmod(mload(0x5160), sub(f_q, mload(0x51e0)), f_q)) -mstore(0x5220, mulmod(mload(0x5200), mload(0x3560), f_q)) -mstore(0x5240, addmod(mload(0x50e0), mload(0x5220), f_q)) -mstore(0x5260, mulmod(mload(0xb60), mload(0x5240), f_q)) -mstore(0x5280, addmod(mload(0x1b40), sub(f_q, mload(0x1b80)), f_q)) -mstore(0x52a0, mulmod(mload(0x5280), mload(0x26c0), f_q)) -mstore(0x52c0, addmod(mload(0x5260), mload(0x52a0), f_q)) -mstore(0x52e0, mulmod(mload(0xb60), mload(0x52c0), f_q)) -mstore(0x5300, mulmod(mload(0x5280), mload(0x3560), f_q)) -mstore(0x5320, addmod(mload(0x1b40), sub(f_q, mload(0x1b60)), f_q)) -mstore(0x5340, mulmod(mload(0x5320), mload(0x5300), f_q)) -mstore(0x5360, addmod(mload(0x52e0), mload(0x5340), f_q)) -mstore(0x5380, mulmod(mload(0xb60), mload(0x5360), f_q)) -mstore(0x53a0, addmod(1, sub(f_q, mload(0x1ba0)), f_q)) -mstore(0x53c0, mulmod(mload(0x53a0), mload(0x26c0), f_q)) -mstore(0x53e0, addmod(mload(0x5380), mload(0x53c0), f_q)) -mstore(0x5400, mulmod(mload(0xb60), mload(0x53e0), f_q)) -mstore(0x5420, mulmod(mload(0x1ba0), mload(0x1ba0), f_q)) -mstore(0x5440, addmod(mload(0x5420), sub(f_q, mload(0x1ba0)), f_q)) -mstore(0x5460, mulmod(mload(0x5440), mload(0x25e0), f_q)) -mstore(0x5480, addmod(mload(0x5400), mload(0x5460), f_q)) -mstore(0x54a0, mulmod(mload(0xb60), mload(0x5480), f_q)) -mstore(0x54c0, addmod(mload(0x1be0), mload(0x6e0), f_q)) -mstore(0x54e0, mulmod(mload(0x54c0), mload(0x1bc0), f_q)) -mstore(0x5500, addmod(mload(0x1c20), mload(0x740), f_q)) -mstore(0x5520, mulmod(mload(0x5500), mload(0x54e0), f_q)) -mstore(0x5540, addmod(mload(0x1260), mload(0x6e0), f_q)) -mstore(0x5560, mulmod(mload(0x5540), mload(0x1ba0), f_q)) -mstore(0x5580, mulmod(mload(0x51c0), mload(0x5560), f_q)) -mstore(0x55a0, addmod(mload(0x5520), sub(f_q, mload(0x5580)), f_q)) -mstore(0x55c0, mulmod(mload(0x55a0), mload(0x3560), f_q)) -mstore(0x55e0, addmod(mload(0x54a0), mload(0x55c0), f_q)) -mstore(0x5600, mulmod(mload(0xb60), mload(0x55e0), f_q)) -mstore(0x5620, addmod(mload(0x1be0), sub(f_q, mload(0x1c20)), f_q)) -mstore(0x5640, mulmod(mload(0x5620), mload(0x26c0), f_q)) -mstore(0x5660, addmod(mload(0x5600), mload(0x5640), f_q)) -mstore(0x5680, mulmod(mload(0xb60), mload(0x5660), f_q)) -mstore(0x56a0, mulmod(mload(0x5620), mload(0x3560), f_q)) -mstore(0x56c0, addmod(mload(0x1be0), sub(f_q, mload(0x1c00)), f_q)) -mstore(0x56e0, mulmod(mload(0x56c0), mload(0x56a0), f_q)) -mstore(0x5700, addmod(mload(0x5680), mload(0x56e0), f_q)) -mstore(0x5720, mulmod(mload(0xb60), mload(0x5700), f_q)) -mstore(0x5740, addmod(1, sub(f_q, mload(0x1c40)), f_q)) -mstore(0x5760, mulmod(mload(0x5740), mload(0x26c0), f_q)) -mstore(0x5780, addmod(mload(0x5720), mload(0x5760), f_q)) -mstore(0x57a0, mulmod(mload(0xb60), mload(0x5780), f_q)) -mstore(0x57c0, mulmod(mload(0x1c40), mload(0x1c40), f_q)) -mstore(0x57e0, addmod(mload(0x57c0), sub(f_q, mload(0x1c40)), f_q)) -mstore(0x5800, mulmod(mload(0x57e0), mload(0x25e0), f_q)) -mstore(0x5820, addmod(mload(0x57a0), mload(0x5800), f_q)) -mstore(0x5840, mulmod(mload(0xb60), mload(0x5820), f_q)) -mstore(0x5860, addmod(mload(0x1c80), mload(0x6e0), f_q)) -mstore(0x5880, mulmod(mload(0x5860), mload(0x1c60), f_q)) -mstore(0x58a0, addmod(mload(0x1cc0), mload(0x740), f_q)) -mstore(0x58c0, mulmod(mload(0x58a0), mload(0x5880), f_q)) -mstore(0x58e0, mulmod(mload(0x480), mload(0x1280), f_q)) -mstore(0x5900, addmod(mload(0x58e0), mload(0x12c0), f_q)) -mstore(0x5920, addmod(mload(0x5900), mload(0x6e0), f_q)) -mstore(0x5940, mulmod(mload(0x5920), mload(0x1c40), f_q)) -mstore(0x5960, mulmod(mload(0x480), mload(0x1340), f_q)) -mstore(0x5980, addmod(mload(0x5960), mload(0x1360), f_q)) -mstore(0x59a0, addmod(mload(0x5980), mload(0x740), f_q)) -mstore(0x59c0, mulmod(mload(0x59a0), mload(0x5940), f_q)) -mstore(0x59e0, addmod(mload(0x58c0), sub(f_q, mload(0x59c0)), f_q)) -mstore(0x5a00, mulmod(mload(0x59e0), mload(0x3560), f_q)) -mstore(0x5a20, addmod(mload(0x5840), mload(0x5a00), f_q)) -mstore(0x5a40, mulmod(mload(0xb60), mload(0x5a20), f_q)) -mstore(0x5a60, addmod(mload(0x1c80), sub(f_q, mload(0x1cc0)), f_q)) -mstore(0x5a80, mulmod(mload(0x5a60), mload(0x26c0), f_q)) -mstore(0x5aa0, addmod(mload(0x5a40), mload(0x5a80), f_q)) -mstore(0x5ac0, mulmod(mload(0xb60), mload(0x5aa0), f_q)) -mstore(0x5ae0, mulmod(mload(0x5a60), mload(0x3560), f_q)) -mstore(0x5b00, addmod(mload(0x1c80), sub(f_q, mload(0x1ca0)), f_q)) -mstore(0x5b20, mulmod(mload(0x5b00), mload(0x5ae0), f_q)) -mstore(0x5b40, addmod(mload(0x5ac0), mload(0x5b20), f_q)) -mstore(0x5b60, mulmod(mload(0xb60), mload(0x5b40), f_q)) -mstore(0x5b80, addmod(1, sub(f_q, mload(0x1ce0)), f_q)) -mstore(0x5ba0, mulmod(mload(0x5b80), mload(0x26c0), f_q)) -mstore(0x5bc0, addmod(mload(0x5b60), mload(0x5ba0), f_q)) -mstore(0x5be0, mulmod(mload(0xb60), mload(0x5bc0), f_q)) -mstore(0x5c00, mulmod(mload(0x1ce0), mload(0x1ce0), f_q)) -mstore(0x5c20, addmod(mload(0x5c00), sub(f_q, mload(0x1ce0)), f_q)) -mstore(0x5c40, mulmod(mload(0x5c20), mload(0x25e0), f_q)) -mstore(0x5c60, addmod(mload(0x5be0), mload(0x5c40), f_q)) -mstore(0x5c80, mulmod(mload(0xb60), mload(0x5c60), f_q)) -mstore(0x5ca0, addmod(mload(0x1d20), mload(0x6e0), f_q)) -mstore(0x5cc0, mulmod(mload(0x5ca0), mload(0x1d00), f_q)) -mstore(0x5ce0, addmod(mload(0x1d60), mload(0x740), f_q)) -mstore(0x5d00, mulmod(mload(0x5ce0), mload(0x5cc0), f_q)) -mstore(0x5d20, mulmod(mload(0x480), mload(0x12a0), f_q)) -mstore(0x5d40, addmod(mload(0x5d20), mload(0x12e0), f_q)) -mstore(0x5d60, addmod(mload(0x5d40), mload(0x6e0), f_q)) -mstore(0x5d80, mulmod(mload(0x5d60), mload(0x1ce0), f_q)) -mstore(0x5da0, mulmod(mload(0x59a0), mload(0x5d80), f_q)) -mstore(0x5dc0, addmod(mload(0x5d00), sub(f_q, mload(0x5da0)), f_q)) -mstore(0x5de0, mulmod(mload(0x5dc0), mload(0x3560), f_q)) -mstore(0x5e00, addmod(mload(0x5c80), mload(0x5de0), f_q)) -mstore(0x5e20, mulmod(mload(0xb60), mload(0x5e00), f_q)) -mstore(0x5e40, addmod(mload(0x1d20), sub(f_q, mload(0x1d60)), f_q)) -mstore(0x5e60, mulmod(mload(0x5e40), mload(0x26c0), f_q)) -mstore(0x5e80, addmod(mload(0x5e20), mload(0x5e60), f_q)) -mstore(0x5ea0, mulmod(mload(0xb60), mload(0x5e80), f_q)) -mstore(0x5ec0, mulmod(mload(0x5e40), mload(0x3560), f_q)) -mstore(0x5ee0, addmod(mload(0x1d20), sub(f_q, mload(0x1d40)), f_q)) -mstore(0x5f00, mulmod(mload(0x5ee0), mload(0x5ec0), f_q)) -mstore(0x5f20, addmod(mload(0x5ea0), mload(0x5f00), f_q)) -mstore(0x5f40, mulmod(mload(0x21a0), mload(0x21a0), f_q)) -mstore(0x5f60, mulmod(mload(0x5f40), mload(0x21a0), f_q)) -mstore(0x5f80, mulmod(1, mload(0x21a0), f_q)) -mstore(0x5fa0, mulmod(1, mload(0x5f40), f_q)) -mstore(0x5fc0, mulmod(mload(0x5f20), mload(0x21c0), f_q)) -mstore(0x5fe0, mulmod(mload(0x1f20), mload(0xc80), f_q)) -mstore(0x6000, mulmod(mload(0x5fe0), mload(0xc80), f_q)) -mstore(0x6020, mulmod(mload(0xc80), 1, f_q)) -mstore(0x6040, addmod(mload(0x1ea0), sub(f_q, mload(0x6020)), f_q)) -mstore(0x6060, mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) -mstore(0x6080, addmod(mload(0x1ea0), sub(f_q, mload(0x6060)), f_q)) -mstore(0x60a0, mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) -mstore(0x60c0, addmod(mload(0x1ea0), sub(f_q, mload(0x60a0)), f_q)) -mstore(0x60e0, mulmod(mload(0xc80), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) -mstore(0x6100, addmod(mload(0x1ea0), sub(f_q, mload(0x60e0)), f_q)) -mstore(0x6120, mulmod(mload(0xc80), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) -mstore(0x6140, addmod(mload(0x1ea0), sub(f_q, mload(0x6120)), f_q)) -mstore(0x6160, mulmod(mload(0xc80), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) -mstore(0x6180, addmod(mload(0x1ea0), sub(f_q, mload(0x6160)), f_q)) -{ - let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 12142985201493934370659158242092015678465417407805993602870272259656026591649, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 9745257670345340851587247503165259410082946992610040740827931926919781903968, f_q), f_q), result, f_q) -mstore(24992, result) - } -{ - let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 12858672892267984631233883117647866851148059157064290846881981435700301865966, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q), result, f_q) -mstore(25024, result) - } -{ - let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 11271371393372049418391749801370907147092722420906347516206630933275258056927, f_q), f_q), result, f_q) +mstore(0x2600, mulmod(mload(0x2220), mload(0x2240), f_q)) +mstore(0x2620, mulmod(mload(0x2260), mload(0x2280), f_q)) +mstore(0x2640, mulmod(mload(0x22a0), mload(0x22c0), f_q)) +mstore(0x2660, mulmod(mload(0x22e0), mload(0x2300), f_q)) +mstore(0x2680, mulmod(mload(0x2320), mload(0x2340), f_q)) +mstore(0x26a0, mulmod(mload(0x2360), mload(0x2380), f_q)) +mstore(0x26c0, mulmod(mload(0x23a0), mload(0x23c0), f_q)) +mstore(0x26e0, mulmod(mload(0x23e0), mload(0x2400), f_q)) +{ + let result := mulmod(mload(0x26e0), mload(0x20), f_q) +mstore(9984, result) + } +mstore(0x2720, mulmod(mload(0xd20), mload(0xd00), f_q)) +mstore(0x2740, addmod(mload(0xce0), mload(0x2720), f_q)) +mstore(0x2760, addmod(mload(0x2740), sub(f_q, mload(0xd40)), f_q)) +mstore(0x2780, mulmod(mload(0x2760), mload(0x13a0), f_q)) +mstore(0x27a0, mulmod(mload(0xb80), mload(0x2780), f_q)) +mstore(0x27c0, mulmod(mload(0xda0), mload(0xd80), f_q)) +mstore(0x27e0, addmod(mload(0xd60), mload(0x27c0), f_q)) +mstore(0x2800, addmod(mload(0x27e0), sub(f_q, mload(0xdc0)), f_q)) +mstore(0x2820, mulmod(mload(0x2800), mload(0x13c0), f_q)) +mstore(0x2840, addmod(mload(0x27a0), mload(0x2820), f_q)) +mstore(0x2860, mulmod(mload(0xb80), mload(0x2840), f_q)) +mstore(0x2880, mulmod(mload(0xe20), mload(0xe00), f_q)) +mstore(0x28a0, addmod(mload(0xde0), mload(0x2880), f_q)) +mstore(0x28c0, addmod(mload(0x28a0), sub(f_q, mload(0xe40)), f_q)) +mstore(0x28e0, mulmod(mload(0x28c0), mload(0x13e0), f_q)) +mstore(0x2900, addmod(mload(0x2860), mload(0x28e0), f_q)) +mstore(0x2920, mulmod(mload(0xb80), mload(0x2900), f_q)) +mstore(0x2940, mulmod(mload(0xea0), mload(0xe80), f_q)) +mstore(0x2960, addmod(mload(0xe60), mload(0x2940), f_q)) +mstore(0x2980, addmod(mload(0x2960), sub(f_q, mload(0xec0)), f_q)) +mstore(0x29a0, mulmod(mload(0x2980), mload(0x1400), f_q)) +mstore(0x29c0, addmod(mload(0x2920), mload(0x29a0), f_q)) +mstore(0x29e0, mulmod(mload(0xb80), mload(0x29c0), f_q)) +mstore(0x2a00, mulmod(mload(0xf20), mload(0xf00), f_q)) +mstore(0x2a20, addmod(mload(0xee0), mload(0x2a00), f_q)) +mstore(0x2a40, addmod(mload(0x2a20), sub(f_q, mload(0xf40)), f_q)) +mstore(0x2a60, mulmod(mload(0x2a40), mload(0x1420), f_q)) +mstore(0x2a80, addmod(mload(0x29e0), mload(0x2a60), f_q)) +mstore(0x2aa0, mulmod(mload(0xb80), mload(0x2a80), f_q)) +mstore(0x2ac0, mulmod(mload(0xfa0), mload(0xf80), f_q)) +mstore(0x2ae0, addmod(mload(0xf60), mload(0x2ac0), f_q)) +mstore(0x2b00, addmod(mload(0x2ae0), sub(f_q, mload(0xfc0)), f_q)) +mstore(0x2b20, mulmod(mload(0x2b00), mload(0x1440), f_q)) +mstore(0x2b40, addmod(mload(0x2aa0), mload(0x2b20), f_q)) +mstore(0x2b60, mulmod(mload(0xb80), mload(0x2b40), f_q)) +mstore(0x2b80, mulmod(mload(0x1020), mload(0x1000), f_q)) +mstore(0x2ba0, addmod(mload(0xfe0), mload(0x2b80), f_q)) +mstore(0x2bc0, addmod(mload(0x2ba0), sub(f_q, mload(0x1040)), f_q)) +mstore(0x2be0, mulmod(mload(0x2bc0), mload(0x1460), f_q)) +mstore(0x2c00, addmod(mload(0x2b60), mload(0x2be0), f_q)) +mstore(0x2c20, mulmod(mload(0xb80), mload(0x2c00), f_q)) +mstore(0x2c40, mulmod(mload(0x10a0), mload(0x1080), f_q)) +mstore(0x2c60, addmod(mload(0x1060), mload(0x2c40), f_q)) +mstore(0x2c80, addmod(mload(0x2c60), sub(f_q, mload(0x10c0)), f_q)) +mstore(0x2ca0, mulmod(mload(0x2c80), mload(0x1480), f_q)) +mstore(0x2cc0, addmod(mload(0x2c20), mload(0x2ca0), f_q)) +mstore(0x2ce0, mulmod(mload(0xb80), mload(0x2cc0), f_q)) +mstore(0x2d00, mulmod(mload(0x1120), mload(0x1100), f_q)) +mstore(0x2d20, addmod(mload(0x10e0), mload(0x2d00), f_q)) +mstore(0x2d40, addmod(mload(0x2d20), sub(f_q, mload(0x1140)), f_q)) +mstore(0x2d60, mulmod(mload(0x2d40), mload(0x14a0), f_q)) +mstore(0x2d80, addmod(mload(0x2ce0), mload(0x2d60), f_q)) +mstore(0x2da0, mulmod(mload(0xb80), mload(0x2d80), f_q)) +mstore(0x2dc0, mulmod(mload(0x11a0), mload(0x1180), f_q)) +mstore(0x2de0, addmod(mload(0x1160), mload(0x2dc0), f_q)) +mstore(0x2e00, addmod(mload(0x2de0), sub(f_q, mload(0x11c0)), f_q)) +mstore(0x2e20, mulmod(mload(0x2e00), mload(0x14c0), f_q)) +mstore(0x2e40, addmod(mload(0x2da0), mload(0x2e20), f_q)) +mstore(0x2e60, mulmod(mload(0xb80), mload(0x2e40), f_q)) +mstore(0x2e80, mulmod(mload(0x1220), mload(0x1200), f_q)) +mstore(0x2ea0, addmod(mload(0x11e0), mload(0x2e80), f_q)) +mstore(0x2ec0, addmod(mload(0x2ea0), sub(f_q, mload(0x1240)), f_q)) +mstore(0x2ee0, mulmod(mload(0x2ec0), mload(0x14e0), f_q)) +mstore(0x2f00, addmod(mload(0x2e60), mload(0x2ee0), f_q)) +mstore(0x2f20, mulmod(mload(0xb80), mload(0x2f00), f_q)) +mstore(0x2f40, addmod(1, sub(f_q, mload(0x1780)), f_q)) +mstore(0x2f60, mulmod(mload(0x2f40), mload(0x26e0), f_q)) +mstore(0x2f80, addmod(mload(0x2f20), mload(0x2f60), f_q)) +mstore(0x2fa0, mulmod(mload(0xb80), mload(0x2f80), f_q)) +mstore(0x2fc0, mulmod(mload(0x1ae0), mload(0x1ae0), f_q)) +mstore(0x2fe0, addmod(mload(0x2fc0), sub(f_q, mload(0x1ae0)), f_q)) +mstore(0x3000, mulmod(mload(0x2fe0), mload(0x2600), f_q)) +mstore(0x3020, addmod(mload(0x2fa0), mload(0x3000), f_q)) +mstore(0x3040, mulmod(mload(0xb80), mload(0x3020), f_q)) +mstore(0x3060, addmod(mload(0x17e0), sub(f_q, mload(0x17c0)), f_q)) +mstore(0x3080, mulmod(mload(0x3060), mload(0x26e0), f_q)) +mstore(0x30a0, addmod(mload(0x3040), mload(0x3080), f_q)) +mstore(0x30c0, mulmod(mload(0xb80), mload(0x30a0), f_q)) +mstore(0x30e0, addmod(mload(0x1840), sub(f_q, mload(0x1820)), f_q)) +mstore(0x3100, mulmod(mload(0x30e0), mload(0x26e0), f_q)) +mstore(0x3120, addmod(mload(0x30c0), mload(0x3100), f_q)) +mstore(0x3140, mulmod(mload(0xb80), mload(0x3120), f_q)) +mstore(0x3160, addmod(mload(0x18a0), sub(f_q, mload(0x1880)), f_q)) +mstore(0x3180, mulmod(mload(0x3160), mload(0x26e0), f_q)) +mstore(0x31a0, addmod(mload(0x3140), mload(0x3180), f_q)) +mstore(0x31c0, mulmod(mload(0xb80), mload(0x31a0), f_q)) +mstore(0x31e0, addmod(mload(0x1900), sub(f_q, mload(0x18e0)), f_q)) +mstore(0x3200, mulmod(mload(0x31e0), mload(0x26e0), f_q)) +mstore(0x3220, addmod(mload(0x31c0), mload(0x3200), f_q)) +mstore(0x3240, mulmod(mload(0xb80), mload(0x3220), f_q)) +mstore(0x3260, addmod(mload(0x1960), sub(f_q, mload(0x1940)), f_q)) +mstore(0x3280, mulmod(mload(0x3260), mload(0x26e0), f_q)) +mstore(0x32a0, addmod(mload(0x3240), mload(0x3280), f_q)) +mstore(0x32c0, mulmod(mload(0xb80), mload(0x32a0), f_q)) +mstore(0x32e0, addmod(mload(0x19c0), sub(f_q, mload(0x19a0)), f_q)) +mstore(0x3300, mulmod(mload(0x32e0), mload(0x26e0), f_q)) +mstore(0x3320, addmod(mload(0x32c0), mload(0x3300), f_q)) +mstore(0x3340, mulmod(mload(0xb80), mload(0x3320), f_q)) +mstore(0x3360, addmod(mload(0x1a20), sub(f_q, mload(0x1a00)), f_q)) +mstore(0x3380, mulmod(mload(0x3360), mload(0x26e0), f_q)) +mstore(0x33a0, addmod(mload(0x3340), mload(0x3380), f_q)) +mstore(0x33c0, mulmod(mload(0xb80), mload(0x33a0), f_q)) +mstore(0x33e0, addmod(mload(0x1a80), sub(f_q, mload(0x1a60)), f_q)) +mstore(0x3400, mulmod(mload(0x33e0), mload(0x26e0), f_q)) +mstore(0x3420, addmod(mload(0x33c0), mload(0x3400), f_q)) +mstore(0x3440, mulmod(mload(0xb80), mload(0x3420), f_q)) +mstore(0x3460, addmod(mload(0x1ae0), sub(f_q, mload(0x1ac0)), f_q)) +mstore(0x3480, mulmod(mload(0x3460), mload(0x26e0), f_q)) +mstore(0x34a0, addmod(mload(0x3440), mload(0x3480), f_q)) +mstore(0x34c0, mulmod(mload(0xb80), mload(0x34a0), f_q)) +mstore(0x34e0, addmod(1, sub(f_q, mload(0x2600)), f_q)) +mstore(0x3500, addmod(mload(0x2620), mload(0x2640), f_q)) +mstore(0x3520, addmod(mload(0x3500), mload(0x2660), f_q)) +mstore(0x3540, addmod(mload(0x3520), mload(0x2680), f_q)) +mstore(0x3560, addmod(mload(0x3540), mload(0x26a0), f_q)) +mstore(0x3580, addmod(mload(0x3560), mload(0x26c0), f_q)) +mstore(0x35a0, addmod(mload(0x34e0), sub(f_q, mload(0x3580)), f_q)) +mstore(0x35c0, mulmod(mload(0x1520), mload(0x700), f_q)) +mstore(0x35e0, addmod(mload(0x1320), mload(0x35c0), f_q)) +mstore(0x3600, addmod(mload(0x35e0), mload(0x760), f_q)) +mstore(0x3620, mulmod(mload(0x1540), mload(0x700), f_q)) +mstore(0x3640, addmod(mload(0xce0), mload(0x3620), f_q)) +mstore(0x3660, addmod(mload(0x3640), mload(0x760), f_q)) +mstore(0x3680, mulmod(mload(0x3660), mload(0x3600), f_q)) +mstore(0x36a0, mulmod(mload(0x3680), mload(0x17a0), f_q)) +mstore(0x36c0, mulmod(1, mload(0x700), f_q)) +mstore(0x36e0, mulmod(mload(0xca0), mload(0x36c0), f_q)) +mstore(0x3700, addmod(mload(0x1320), mload(0x36e0), f_q)) +mstore(0x3720, addmod(mload(0x3700), mload(0x760), f_q)) +mstore(0x3740, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x700), f_q)) +mstore(0x3760, mulmod(mload(0xca0), mload(0x3740), f_q)) +mstore(0x3780, addmod(mload(0xce0), mload(0x3760), f_q)) +mstore(0x37a0, addmod(mload(0x3780), mload(0x760), f_q)) +mstore(0x37c0, mulmod(mload(0x37a0), mload(0x3720), f_q)) +mstore(0x37e0, mulmod(mload(0x37c0), mload(0x1780), f_q)) +mstore(0x3800, addmod(mload(0x36a0), sub(f_q, mload(0x37e0)), f_q)) +mstore(0x3820, mulmod(mload(0x3800), mload(0x35a0), f_q)) +mstore(0x3840, addmod(mload(0x34c0), mload(0x3820), f_q)) +mstore(0x3860, mulmod(mload(0xb80), mload(0x3840), f_q)) +mstore(0x3880, mulmod(mload(0x1560), mload(0x700), f_q)) +mstore(0x38a0, addmod(mload(0xd60), mload(0x3880), f_q)) +mstore(0x38c0, addmod(mload(0x38a0), mload(0x760), f_q)) +mstore(0x38e0, mulmod(mload(0x1580), mload(0x700), f_q)) +mstore(0x3900, addmod(mload(0xde0), mload(0x38e0), f_q)) +mstore(0x3920, addmod(mload(0x3900), mload(0x760), f_q)) +mstore(0x3940, mulmod(mload(0x3920), mload(0x38c0), f_q)) +mstore(0x3960, mulmod(mload(0x3940), mload(0x1800), f_q)) +mstore(0x3980, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x700), f_q)) +mstore(0x39a0, mulmod(mload(0xca0), mload(0x3980), f_q)) +mstore(0x39c0, addmod(mload(0xd60), mload(0x39a0), f_q)) +mstore(0x39e0, addmod(mload(0x39c0), mload(0x760), f_q)) +mstore(0x3a00, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x700), f_q)) +mstore(0x3a20, mulmod(mload(0xca0), mload(0x3a00), f_q)) +mstore(0x3a40, addmod(mload(0xde0), mload(0x3a20), f_q)) +mstore(0x3a60, addmod(mload(0x3a40), mload(0x760), f_q)) +mstore(0x3a80, mulmod(mload(0x3a60), mload(0x39e0), f_q)) +mstore(0x3aa0, mulmod(mload(0x3a80), mload(0x17e0), f_q)) +mstore(0x3ac0, addmod(mload(0x3960), sub(f_q, mload(0x3aa0)), f_q)) +mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0x35a0), f_q)) +mstore(0x3b00, addmod(mload(0x3860), mload(0x3ae0), f_q)) +mstore(0x3b20, mulmod(mload(0xb80), mload(0x3b00), f_q)) +mstore(0x3b40, mulmod(mload(0x15a0), mload(0x700), f_q)) +mstore(0x3b60, addmod(mload(0xe60), mload(0x3b40), f_q)) +mstore(0x3b80, addmod(mload(0x3b60), mload(0x760), f_q)) +mstore(0x3ba0, mulmod(mload(0x15c0), mload(0x700), f_q)) +mstore(0x3bc0, addmod(mload(0xee0), mload(0x3ba0), f_q)) +mstore(0x3be0, addmod(mload(0x3bc0), mload(0x760), f_q)) +mstore(0x3c00, mulmod(mload(0x3be0), mload(0x3b80), f_q)) +mstore(0x3c20, mulmod(mload(0x3c00), mload(0x1860), f_q)) +mstore(0x3c40, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x700), f_q)) +mstore(0x3c60, mulmod(mload(0xca0), mload(0x3c40), f_q)) +mstore(0x3c80, addmod(mload(0xe60), mload(0x3c60), f_q)) +mstore(0x3ca0, addmod(mload(0x3c80), mload(0x760), f_q)) +mstore(0x3cc0, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x700), f_q)) +mstore(0x3ce0, mulmod(mload(0xca0), mload(0x3cc0), f_q)) +mstore(0x3d00, addmod(mload(0xee0), mload(0x3ce0), f_q)) +mstore(0x3d20, addmod(mload(0x3d00), mload(0x760), f_q)) +mstore(0x3d40, mulmod(mload(0x3d20), mload(0x3ca0), f_q)) +mstore(0x3d60, mulmod(mload(0x3d40), mload(0x1840), f_q)) +mstore(0x3d80, addmod(mload(0x3c20), sub(f_q, mload(0x3d60)), f_q)) +mstore(0x3da0, mulmod(mload(0x3d80), mload(0x35a0), f_q)) +mstore(0x3dc0, addmod(mload(0x3b20), mload(0x3da0), f_q)) +mstore(0x3de0, mulmod(mload(0xb80), mload(0x3dc0), f_q)) +mstore(0x3e00, mulmod(mload(0x15e0), mload(0x700), f_q)) +mstore(0x3e20, addmod(mload(0xf60), mload(0x3e00), f_q)) +mstore(0x3e40, addmod(mload(0x3e20), mload(0x760), f_q)) +mstore(0x3e60, mulmod(mload(0x1600), mload(0x700), f_q)) +mstore(0x3e80, addmod(mload(0xfe0), mload(0x3e60), f_q)) +mstore(0x3ea0, addmod(mload(0x3e80), mload(0x760), f_q)) +mstore(0x3ec0, mulmod(mload(0x3ea0), mload(0x3e40), f_q)) +mstore(0x3ee0, mulmod(mload(0x3ec0), mload(0x18c0), f_q)) +mstore(0x3f00, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x700), f_q)) +mstore(0x3f20, mulmod(mload(0xca0), mload(0x3f00), f_q)) +mstore(0x3f40, addmod(mload(0xf60), mload(0x3f20), f_q)) +mstore(0x3f60, addmod(mload(0x3f40), mload(0x760), f_q)) +mstore(0x3f80, mulmod(14704729814417906439424896605881467874595262020190401576785074330126828718155, mload(0x700), f_q)) +mstore(0x3fa0, mulmod(mload(0xca0), mload(0x3f80), f_q)) +mstore(0x3fc0, addmod(mload(0xfe0), mload(0x3fa0), f_q)) +mstore(0x3fe0, addmod(mload(0x3fc0), mload(0x760), f_q)) +mstore(0x4000, mulmod(mload(0x3fe0), mload(0x3f60), f_q)) +mstore(0x4020, mulmod(mload(0x4000), mload(0x18a0), f_q)) +mstore(0x4040, addmod(mload(0x3ee0), sub(f_q, mload(0x4020)), f_q)) +mstore(0x4060, mulmod(mload(0x4040), mload(0x35a0), f_q)) +mstore(0x4080, addmod(mload(0x3de0), mload(0x4060), f_q)) +mstore(0x40a0, mulmod(mload(0xb80), mload(0x4080), f_q)) +mstore(0x40c0, mulmod(mload(0x1620), mload(0x700), f_q)) +mstore(0x40e0, addmod(mload(0x1060), mload(0x40c0), f_q)) +mstore(0x4100, addmod(mload(0x40e0), mload(0x760), f_q)) +mstore(0x4120, mulmod(mload(0x1640), mload(0x700), f_q)) +mstore(0x4140, addmod(mload(0x10e0), mload(0x4120), f_q)) +mstore(0x4160, addmod(mload(0x4140), mload(0x760), f_q)) +mstore(0x4180, mulmod(mload(0x4160), mload(0x4100), f_q)) +mstore(0x41a0, mulmod(mload(0x4180), mload(0x1920), f_q)) +mstore(0x41c0, mulmod(8343274462013750416000956870576256937330525306073862550863787263304548803879, mload(0x700), f_q)) +mstore(0x41e0, mulmod(mload(0xca0), mload(0x41c0), f_q)) +mstore(0x4200, addmod(mload(0x1060), mload(0x41e0), f_q)) +mstore(0x4220, addmod(mload(0x4200), mload(0x760), f_q)) +mstore(0x4240, mulmod(20928372310071051017340352686640453451620397549739756658327314209761852842004, mload(0x700), f_q)) +mstore(0x4260, mulmod(mload(0xca0), mload(0x4240), f_q)) +mstore(0x4280, addmod(mload(0x10e0), mload(0x4260), f_q)) +mstore(0x42a0, addmod(mload(0x4280), mload(0x760), f_q)) +mstore(0x42c0, mulmod(mload(0x42a0), mload(0x4220), f_q)) +mstore(0x42e0, mulmod(mload(0x42c0), mload(0x1900), f_q)) +mstore(0x4300, addmod(mload(0x41a0), sub(f_q, mload(0x42e0)), f_q)) +mstore(0x4320, mulmod(mload(0x4300), mload(0x35a0), f_q)) +mstore(0x4340, addmod(mload(0x40a0), mload(0x4320), f_q)) +mstore(0x4360, mulmod(mload(0xb80), mload(0x4340), f_q)) +mstore(0x4380, mulmod(mload(0x1660), mload(0x700), f_q)) +mstore(0x43a0, addmod(mload(0x1160), mload(0x4380), f_q)) +mstore(0x43c0, addmod(mload(0x43a0), mload(0x760), f_q)) +mstore(0x43e0, mulmod(mload(0x1680), mload(0x700), f_q)) +mstore(0x4400, addmod(mload(0x11e0), mload(0x43e0), f_q)) +mstore(0x4420, addmod(mload(0x4400), mload(0x760), f_q)) +mstore(0x4440, mulmod(mload(0x4420), mload(0x43c0), f_q)) +mstore(0x4460, mulmod(mload(0x4440), mload(0x1980), f_q)) +mstore(0x4480, mulmod(15845651941796975697993789271154426079663327509658641548785793587449119139335, mload(0x700), f_q)) +mstore(0x44a0, mulmod(mload(0xca0), mload(0x4480), f_q)) +mstore(0x44c0, addmod(mload(0x1160), mload(0x44a0), f_q)) +mstore(0x44e0, addmod(mload(0x44c0), mload(0x760), f_q)) +mstore(0x4500, mulmod(8045145839887181143520022567602912517500076612542816225981084745629998235872, mload(0x700), f_q)) +mstore(0x4520, mulmod(mload(0xca0), mload(0x4500), f_q)) +mstore(0x4540, addmod(mload(0x11e0), mload(0x4520), f_q)) +mstore(0x4560, addmod(mload(0x4540), mload(0x760), f_q)) +mstore(0x4580, mulmod(mload(0x4560), mload(0x44e0), f_q)) +mstore(0x45a0, mulmod(mload(0x4580), mload(0x1960), f_q)) +mstore(0x45c0, addmod(mload(0x4460), sub(f_q, mload(0x45a0)), f_q)) +mstore(0x45e0, mulmod(mload(0x45c0), mload(0x35a0), f_q)) +mstore(0x4600, addmod(mload(0x4360), mload(0x45e0), f_q)) +mstore(0x4620, mulmod(mload(0xb80), mload(0x4600), f_q)) +mstore(0x4640, mulmod(mload(0x16a0), mload(0x700), f_q)) +mstore(0x4660, addmod(mload(0x1260), mload(0x4640), f_q)) +mstore(0x4680, addmod(mload(0x4660), mload(0x760), f_q)) +mstore(0x46a0, mulmod(mload(0x16c0), mload(0x700), f_q)) +mstore(0x46c0, addmod(mload(0x1280), mload(0x46a0), f_q)) +mstore(0x46e0, addmod(mload(0x46c0), mload(0x760), f_q)) +mstore(0x4700, mulmod(mload(0x46e0), mload(0x4680), f_q)) +mstore(0x4720, mulmod(mload(0x4700), mload(0x19e0), f_q)) +mstore(0x4740, mulmod(2381670505483685611182091218417223919364072893694444758025506701602682587318, mload(0x700), f_q)) +mstore(0x4760, mulmod(mload(0xca0), mload(0x4740), f_q)) +mstore(0x4780, addmod(mload(0x1260), mload(0x4760), f_q)) +mstore(0x47a0, addmod(mload(0x4780), mload(0x760), f_q)) +mstore(0x47c0, mulmod(7687930163830757070113631199804839025806810462573557873219800755854393200610, mload(0x700), f_q)) +mstore(0x47e0, mulmod(mload(0xca0), mload(0x47c0), f_q)) +mstore(0x4800, addmod(mload(0x1280), mload(0x47e0), f_q)) +mstore(0x4820, addmod(mload(0x4800), mload(0x760), f_q)) +mstore(0x4840, mulmod(mload(0x4820), mload(0x47a0), f_q)) +mstore(0x4860, mulmod(mload(0x4840), mload(0x19c0), f_q)) +mstore(0x4880, addmod(mload(0x4720), sub(f_q, mload(0x4860)), f_q)) +mstore(0x48a0, mulmod(mload(0x4880), mload(0x35a0), f_q)) +mstore(0x48c0, addmod(mload(0x4620), mload(0x48a0), f_q)) +mstore(0x48e0, mulmod(mload(0xb80), mload(0x48c0), f_q)) +mstore(0x4900, mulmod(mload(0x16e0), mload(0x700), f_q)) +mstore(0x4920, addmod(mload(0x12a0), mload(0x4900), f_q)) +mstore(0x4940, addmod(mload(0x4920), mload(0x760), f_q)) +mstore(0x4960, mulmod(mload(0x1700), mload(0x700), f_q)) +mstore(0x4980, addmod(mload(0x12c0), mload(0x4960), f_q)) +mstore(0x49a0, addmod(mload(0x4980), mload(0x760), f_q)) +mstore(0x49c0, mulmod(mload(0x49a0), mload(0x4940), f_q)) +mstore(0x49e0, mulmod(mload(0x49c0), mload(0x1a40), f_q)) +mstore(0x4a00, mulmod(18841374007583180662637314443453732245933177918185782718371124070078050062475, mload(0x700), f_q)) +mstore(0x4a20, mulmod(mload(0xca0), mload(0x4a00), f_q)) +mstore(0x4a40, addmod(mload(0x12a0), mload(0x4a20), f_q)) +mstore(0x4a60, addmod(mload(0x4a40), mload(0x760), f_q)) +mstore(0x4a80, mulmod(19197752132381552471349846071531569266256022960372343424487157777415058628365, mload(0x700), f_q)) +mstore(0x4aa0, mulmod(mload(0xca0), mload(0x4a80), f_q)) +mstore(0x4ac0, addmod(mload(0x12c0), mload(0x4aa0), f_q)) +mstore(0x4ae0, addmod(mload(0x4ac0), mload(0x760), f_q)) +mstore(0x4b00, mulmod(mload(0x4ae0), mload(0x4a60), f_q)) +mstore(0x4b20, mulmod(mload(0x4b00), mload(0x1a20), f_q)) +mstore(0x4b40, addmod(mload(0x49e0), sub(f_q, mload(0x4b20)), f_q)) +mstore(0x4b60, mulmod(mload(0x4b40), mload(0x35a0), f_q)) +mstore(0x4b80, addmod(mload(0x48e0), mload(0x4b60), f_q)) +mstore(0x4ba0, mulmod(mload(0xb80), mload(0x4b80), f_q)) +mstore(0x4bc0, mulmod(mload(0x1720), mload(0x700), f_q)) +mstore(0x4be0, addmod(mload(0x12e0), mload(0x4bc0), f_q)) +mstore(0x4c00, addmod(mload(0x4be0), mload(0x760), f_q)) +mstore(0x4c20, mulmod(mload(0x1740), mload(0x700), f_q)) +mstore(0x4c40, addmod(mload(0x1300), mload(0x4c20), f_q)) +mstore(0x4c60, addmod(mload(0x4c40), mload(0x760), f_q)) +mstore(0x4c80, mulmod(mload(0x4c60), mload(0x4c00), f_q)) +mstore(0x4ca0, mulmod(mload(0x4c80), mload(0x1aa0), f_q)) +mstore(0x4cc0, mulmod(4107547195958811607586128047858595978395981384383810616480821684720783343476, mload(0x700), f_q)) +mstore(0x4ce0, mulmod(mload(0xca0), mload(0x4cc0), f_q)) +mstore(0x4d00, addmod(mload(0x12e0), mload(0x4ce0), f_q)) +mstore(0x4d20, addmod(mload(0x4d00), mload(0x760), f_q)) +mstore(0x4d40, mulmod(13564642984573314542683510780499048133657656300857957395232929436066953511694, mload(0x700), f_q)) +mstore(0x4d60, mulmod(mload(0xca0), mload(0x4d40), f_q)) +mstore(0x4d80, addmod(mload(0x1300), mload(0x4d60), f_q)) +mstore(0x4da0, addmod(mload(0x4d80), mload(0x760), f_q)) +mstore(0x4dc0, mulmod(mload(0x4da0), mload(0x4d20), f_q)) +mstore(0x4de0, mulmod(mload(0x4dc0), mload(0x1a80), f_q)) +mstore(0x4e00, addmod(mload(0x4ca0), sub(f_q, mload(0x4de0)), f_q)) +mstore(0x4e20, mulmod(mload(0x4e00), mload(0x35a0), f_q)) +mstore(0x4e40, addmod(mload(0x4ba0), mload(0x4e20), f_q)) +mstore(0x4e60, mulmod(mload(0xb80), mload(0x4e40), f_q)) +mstore(0x4e80, mulmod(mload(0x1760), mload(0x700), f_q)) +mstore(0x4ea0, addmod(mload(0x2700), mload(0x4e80), f_q)) +mstore(0x4ec0, addmod(mload(0x4ea0), mload(0x760), f_q)) +mstore(0x4ee0, mulmod(mload(0x4ec0), mload(0x1b00), f_q)) +mstore(0x4f00, mulmod(13613576618463984615987010477140414706703336142901358713038085451220811690793, mload(0x700), f_q)) +mstore(0x4f20, mulmod(mload(0xca0), mload(0x4f00), f_q)) +mstore(0x4f40, addmod(mload(0x2700), mload(0x4f20), f_q)) +mstore(0x4f60, addmod(mload(0x4f40), mload(0x760), f_q)) +mstore(0x4f80, mulmod(mload(0x4f60), mload(0x1ae0), f_q)) +mstore(0x4fa0, addmod(mload(0x4ee0), sub(f_q, mload(0x4f80)), f_q)) +mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x35a0), f_q)) +mstore(0x4fe0, addmod(mload(0x4e60), mload(0x4fc0), f_q)) +mstore(0x5000, mulmod(mload(0xb80), mload(0x4fe0), f_q)) +mstore(0x5020, addmod(1, sub(f_q, mload(0x1b20)), f_q)) +mstore(0x5040, mulmod(mload(0x5020), mload(0x26e0), f_q)) +mstore(0x5060, addmod(mload(0x5000), mload(0x5040), f_q)) +mstore(0x5080, mulmod(mload(0xb80), mload(0x5060), f_q)) +mstore(0x50a0, mulmod(mload(0x1b20), mload(0x1b20), f_q)) +mstore(0x50c0, addmod(mload(0x50a0), sub(f_q, mload(0x1b20)), f_q)) +mstore(0x50e0, mulmod(mload(0x50c0), mload(0x2600), f_q)) +mstore(0x5100, addmod(mload(0x5080), mload(0x50e0), f_q)) +mstore(0x5120, mulmod(mload(0xb80), mload(0x5100), f_q)) +mstore(0x5140, addmod(mload(0x1b60), mload(0x700), f_q)) +mstore(0x5160, mulmod(mload(0x5140), mload(0x1b40), f_q)) +mstore(0x5180, addmod(mload(0x1ba0), mload(0x760), f_q)) +mstore(0x51a0, mulmod(mload(0x5180), mload(0x5160), f_q)) +mstore(0x51c0, addmod(mload(0x1260), mload(0x700), f_q)) +mstore(0x51e0, mulmod(mload(0x51c0), mload(0x1b20), f_q)) +mstore(0x5200, addmod(mload(0x1340), mload(0x760), f_q)) +mstore(0x5220, mulmod(mload(0x5200), mload(0x51e0), f_q)) +mstore(0x5240, addmod(mload(0x51a0), sub(f_q, mload(0x5220)), f_q)) +mstore(0x5260, mulmod(mload(0x5240), mload(0x35a0), f_q)) +mstore(0x5280, addmod(mload(0x5120), mload(0x5260), f_q)) +mstore(0x52a0, mulmod(mload(0xb80), mload(0x5280), f_q)) +mstore(0x52c0, addmod(mload(0x1b60), sub(f_q, mload(0x1ba0)), f_q)) +mstore(0x52e0, mulmod(mload(0x52c0), mload(0x26e0), f_q)) +mstore(0x5300, addmod(mload(0x52a0), mload(0x52e0), f_q)) +mstore(0x5320, mulmod(mload(0xb80), mload(0x5300), f_q)) +mstore(0x5340, mulmod(mload(0x52c0), mload(0x35a0), f_q)) +mstore(0x5360, addmod(mload(0x1b60), sub(f_q, mload(0x1b80)), f_q)) +mstore(0x5380, mulmod(mload(0x5360), mload(0x5340), f_q)) +mstore(0x53a0, addmod(mload(0x5320), mload(0x5380), f_q)) +mstore(0x53c0, mulmod(mload(0xb80), mload(0x53a0), f_q)) +mstore(0x53e0, addmod(1, sub(f_q, mload(0x1bc0)), f_q)) +mstore(0x5400, mulmod(mload(0x53e0), mload(0x26e0), f_q)) +mstore(0x5420, addmod(mload(0x53c0), mload(0x5400), f_q)) +mstore(0x5440, mulmod(mload(0xb80), mload(0x5420), f_q)) +mstore(0x5460, mulmod(mload(0x1bc0), mload(0x1bc0), f_q)) +mstore(0x5480, addmod(mload(0x5460), sub(f_q, mload(0x1bc0)), f_q)) +mstore(0x54a0, mulmod(mload(0x5480), mload(0x2600), f_q)) +mstore(0x54c0, addmod(mload(0x5440), mload(0x54a0), f_q)) +mstore(0x54e0, mulmod(mload(0xb80), mload(0x54c0), f_q)) +mstore(0x5500, addmod(mload(0x1c00), mload(0x700), f_q)) +mstore(0x5520, mulmod(mload(0x5500), mload(0x1be0), f_q)) +mstore(0x5540, addmod(mload(0x1c40), mload(0x760), f_q)) +mstore(0x5560, mulmod(mload(0x5540), mload(0x5520), f_q)) +mstore(0x5580, addmod(mload(0x1280), mload(0x700), f_q)) +mstore(0x55a0, mulmod(mload(0x5580), mload(0x1bc0), f_q)) +mstore(0x55c0, mulmod(mload(0x5200), mload(0x55a0), f_q)) +mstore(0x55e0, addmod(mload(0x5560), sub(f_q, mload(0x55c0)), f_q)) +mstore(0x5600, mulmod(mload(0x55e0), mload(0x35a0), f_q)) +mstore(0x5620, addmod(mload(0x54e0), mload(0x5600), f_q)) +mstore(0x5640, mulmod(mload(0xb80), mload(0x5620), f_q)) +mstore(0x5660, addmod(mload(0x1c00), sub(f_q, mload(0x1c40)), f_q)) +mstore(0x5680, mulmod(mload(0x5660), mload(0x26e0), f_q)) +mstore(0x56a0, addmod(mload(0x5640), mload(0x5680), f_q)) +mstore(0x56c0, mulmod(mload(0xb80), mload(0x56a0), f_q)) +mstore(0x56e0, mulmod(mload(0x5660), mload(0x35a0), f_q)) +mstore(0x5700, addmod(mload(0x1c00), sub(f_q, mload(0x1c20)), f_q)) +mstore(0x5720, mulmod(mload(0x5700), mload(0x56e0), f_q)) +mstore(0x5740, addmod(mload(0x56c0), mload(0x5720), f_q)) +mstore(0x5760, mulmod(mload(0xb80), mload(0x5740), f_q)) +mstore(0x5780, addmod(1, sub(f_q, mload(0x1c60)), f_q)) +mstore(0x57a0, mulmod(mload(0x5780), mload(0x26e0), f_q)) +mstore(0x57c0, addmod(mload(0x5760), mload(0x57a0), f_q)) +mstore(0x57e0, mulmod(mload(0xb80), mload(0x57c0), f_q)) +mstore(0x5800, mulmod(mload(0x1c60), mload(0x1c60), f_q)) +mstore(0x5820, addmod(mload(0x5800), sub(f_q, mload(0x1c60)), f_q)) +mstore(0x5840, mulmod(mload(0x5820), mload(0x2600), f_q)) +mstore(0x5860, addmod(mload(0x57e0), mload(0x5840), f_q)) +mstore(0x5880, mulmod(mload(0xb80), mload(0x5860), f_q)) +mstore(0x58a0, addmod(mload(0x1ca0), mload(0x700), f_q)) +mstore(0x58c0, mulmod(mload(0x58a0), mload(0x1c80), f_q)) +mstore(0x58e0, addmod(mload(0x1ce0), mload(0x760), f_q)) +mstore(0x5900, mulmod(mload(0x58e0), mload(0x58c0), f_q)) +mstore(0x5920, mulmod(mload(0x4a0), mload(0x12a0), f_q)) +mstore(0x5940, addmod(mload(0x5920), mload(0x12e0), f_q)) +mstore(0x5960, addmod(mload(0x5940), mload(0x700), f_q)) +mstore(0x5980, mulmod(mload(0x5960), mload(0x1c60), f_q)) +mstore(0x59a0, mulmod(mload(0x4a0), mload(0x1360), f_q)) +mstore(0x59c0, addmod(mload(0x59a0), mload(0x1380), f_q)) +mstore(0x59e0, addmod(mload(0x59c0), mload(0x760), f_q)) +mstore(0x5a00, mulmod(mload(0x59e0), mload(0x5980), f_q)) +mstore(0x5a20, addmod(mload(0x5900), sub(f_q, mload(0x5a00)), f_q)) +mstore(0x5a40, mulmod(mload(0x5a20), mload(0x35a0), f_q)) +mstore(0x5a60, addmod(mload(0x5880), mload(0x5a40), f_q)) +mstore(0x5a80, mulmod(mload(0xb80), mload(0x5a60), f_q)) +mstore(0x5aa0, addmod(mload(0x1ca0), sub(f_q, mload(0x1ce0)), f_q)) +mstore(0x5ac0, mulmod(mload(0x5aa0), mload(0x26e0), f_q)) +mstore(0x5ae0, addmod(mload(0x5a80), mload(0x5ac0), f_q)) +mstore(0x5b00, mulmod(mload(0xb80), mload(0x5ae0), f_q)) +mstore(0x5b20, mulmod(mload(0x5aa0), mload(0x35a0), f_q)) +mstore(0x5b40, addmod(mload(0x1ca0), sub(f_q, mload(0x1cc0)), f_q)) +mstore(0x5b60, mulmod(mload(0x5b40), mload(0x5b20), f_q)) +mstore(0x5b80, addmod(mload(0x5b00), mload(0x5b60), f_q)) +mstore(0x5ba0, mulmod(mload(0xb80), mload(0x5b80), f_q)) +mstore(0x5bc0, addmod(1, sub(f_q, mload(0x1d00)), f_q)) +mstore(0x5be0, mulmod(mload(0x5bc0), mload(0x26e0), f_q)) +mstore(0x5c00, addmod(mload(0x5ba0), mload(0x5be0), f_q)) +mstore(0x5c20, mulmod(mload(0xb80), mload(0x5c00), f_q)) +mstore(0x5c40, mulmod(mload(0x1d00), mload(0x1d00), f_q)) +mstore(0x5c60, addmod(mload(0x5c40), sub(f_q, mload(0x1d00)), f_q)) +mstore(0x5c80, mulmod(mload(0x5c60), mload(0x2600), f_q)) +mstore(0x5ca0, addmod(mload(0x5c20), mload(0x5c80), f_q)) +mstore(0x5cc0, mulmod(mload(0xb80), mload(0x5ca0), f_q)) +mstore(0x5ce0, addmod(mload(0x1d40), mload(0x700), f_q)) +mstore(0x5d00, mulmod(mload(0x5ce0), mload(0x1d20), f_q)) +mstore(0x5d20, addmod(mload(0x1d80), mload(0x760), f_q)) +mstore(0x5d40, mulmod(mload(0x5d20), mload(0x5d00), f_q)) +mstore(0x5d60, mulmod(mload(0x4a0), mload(0x12c0), f_q)) +mstore(0x5d80, addmod(mload(0x5d60), mload(0x1300), f_q)) +mstore(0x5da0, addmod(mload(0x5d80), mload(0x700), f_q)) +mstore(0x5dc0, mulmod(mload(0x5da0), mload(0x1d00), f_q)) +mstore(0x5de0, mulmod(mload(0x59e0), mload(0x5dc0), f_q)) +mstore(0x5e00, addmod(mload(0x5d40), sub(f_q, mload(0x5de0)), f_q)) +mstore(0x5e20, mulmod(mload(0x5e00), mload(0x35a0), f_q)) +mstore(0x5e40, addmod(mload(0x5cc0), mload(0x5e20), f_q)) +mstore(0x5e60, mulmod(mload(0xb80), mload(0x5e40), f_q)) +mstore(0x5e80, addmod(mload(0x1d40), sub(f_q, mload(0x1d80)), f_q)) +mstore(0x5ea0, mulmod(mload(0x5e80), mload(0x26e0), f_q)) +mstore(0x5ec0, addmod(mload(0x5e60), mload(0x5ea0), f_q)) +mstore(0x5ee0, mulmod(mload(0xb80), mload(0x5ec0), f_q)) +mstore(0x5f00, mulmod(mload(0x5e80), mload(0x35a0), f_q)) +mstore(0x5f20, addmod(mload(0x1d40), sub(f_q, mload(0x1d60)), f_q)) +mstore(0x5f40, mulmod(mload(0x5f20), mload(0x5f00), f_q)) +mstore(0x5f60, addmod(mload(0x5ee0), mload(0x5f40), f_q)) +mstore(0x5f80, mulmod(mload(0x21c0), mload(0x21c0), f_q)) +mstore(0x5fa0, mulmod(mload(0x5f80), mload(0x21c0), f_q)) +mstore(0x5fc0, mulmod(1, mload(0x21c0), f_q)) +mstore(0x5fe0, mulmod(1, mload(0x5f80), f_q)) +mstore(0x6000, mulmod(mload(0x5f60), mload(0x21e0), f_q)) +mstore(0x6020, mulmod(mload(0x1f40), mload(0xca0), f_q)) +mstore(0x6040, mulmod(mload(0x6020), mload(0xca0), f_q)) +mstore(0x6060, mulmod(mload(0xca0), 1, f_q)) +mstore(0x6080, addmod(mload(0x1ec0), sub(f_q, mload(0x6060)), f_q)) +mstore(0x60a0, mulmod(mload(0xca0), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) +mstore(0x60c0, addmod(mload(0x1ec0), sub(f_q, mload(0x60a0)), f_q)) +mstore(0x60e0, mulmod(mload(0xca0), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) +mstore(0x6100, addmod(mload(0x1ec0), sub(f_q, mload(0x60e0)), f_q)) +mstore(0x6120, mulmod(mload(0xca0), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) +mstore(0x6140, addmod(mload(0x1ec0), sub(f_q, mload(0x6120)), f_q)) +mstore(0x6160, mulmod(mload(0xca0), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) +mstore(0x6180, addmod(mload(0x1ec0), sub(f_q, mload(0x6160)), f_q)) +mstore(0x61a0, mulmod(mload(0xca0), 20975929243409798062839949658616274858986091382510192949221301676705706354487, f_q)) +mstore(0x61c0, addmod(mload(0x1ec0), sub(f_q, mload(0x61a0)), f_q)) +{ + let result := mulmod(mload(0x1ec0), mulmod(mload(0x6020), 12142985201493934370659158242092015678465417407805993602870272259656026591649, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x6020), 9745257670345340851587247503165259410082946992610040740827931926919781903968, f_q), f_q), result, f_q) mstore(25056, result) } { - let result := mulmod(mload(0x1ea0), mulmod(mload(0x5fe0), 17575202995145968412995467587554373308969396527144859871466654432792864477050, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x5fe0), 13507346808256882665261837699919635602236930155453310622146452670066717241788, f_q), f_q), result, f_q) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x6020), 12858672892267984631233883117647866851148059157064290846881981435700301865966, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x6020), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q), result, f_q) mstore(25088, result) } -mstore(0x6220, mulmod(1, mload(0x6040), f_q)) -mstore(0x6240, mulmod(mload(0x6220), mload(0x6080), f_q)) -mstore(0x6260, mulmod(mload(0x6240), mload(0x6140), f_q)) -mstore(0x6280, mulmod(mload(0x6260), mload(0x6100), f_q)) { - let result := mulmod(mload(0x1ea0), 1, f_q) -result := addmod(mulmod(mload(0xc80), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(25248, result) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x6020), 20880316823902385764034220950270964645276820671488089374347912013802613180902, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x6020), 11271371393372049418391749801370907147092722420906347516206630933275258056927, f_q), f_q), result, f_q) +mstore(25120, result) } { - let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 21869340487638379139105209872801492456082780734504032269410146788560475001942, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 18902384200896083141195872455782632465583665912002074288057398015333493675, f_q), f_q), result, f_q) -mstore(25280, result) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x6020), 17575202995145968412995467587554373308969396527144859871466654432792864477050, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x6020), 13507346808256882665261837699919635602236930155453310622146452670066717241788, f_q), f_q), result, f_q) +mstore(25152, result) } +mstore(0x6260, mulmod(1, mload(0x6080), f_q)) +mstore(0x6280, mulmod(mload(0x6260), mload(0x60c0), f_q)) +mstore(0x62a0, mulmod(mload(0x6280), mload(0x6180), f_q)) +mstore(0x62c0, mulmod(mload(0x62a0), mload(0x6140), f_q)) { - let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 16199055355995875908874098831560099797649990976433931925532505422809603664814, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 8947971868341681741891709615862399935097131087938461120792105052975383179198, f_q), f_q), result, f_q) + let result := mulmod(mload(0x1ec0), 1, f_q) +result := addmod(mulmod(mload(0xca0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) mstore(25312, result) } { - let result := mulmod(mload(0x1ea0), mulmod(mload(0x1f20), 4865187280763976036134135047793386535665014353502380106898040096680231678680, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0x1f20), 11630478684739875729628806875878858148067322406415298287941825707875102831079, f_q), f_q), result, f_q) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x1f40), 21869340487638379139105209872801492456082780734504032269410146788560475001942, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x1f40), 18902384200896083141195872455782632465583665912002074288057398015333493675, f_q), f_q), result, f_q) mstore(25344, result) } -mstore(0x6320, mulmod(mload(0x6240), mload(0x6180), f_q)) { - let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 20461838439117790833741043996939313553025008529160428886800406442142042007111, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q), result, f_q) -mstore(25408, result) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x1f40), 16199055355995875908874098831560099797649990976433931925532505422809603664814, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x1f40), 8947971868341681741891709615862399935097131087938461120792105052975383179198, f_q), f_q), result, f_q) +mstore(25376, result) } { - let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 4281685467322811008008141037834996387840601218638499035555958417347771835972, f_q), f_q), result, f_q) -mstore(25440, result) + let result := mulmod(mload(0x1ec0), mulmod(mload(0x1f40), 4865187280763976036134135047793386535665014353502380106898040096680231678680, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0x1f40), 11630478684739875729628806875878858148067322406415298287941825707875102831079, f_q), f_q), result, f_q) +mstore(25408, result) } +mstore(0x6360, mulmod(mload(0x6280), mload(0x61c0), f_q)) { - let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 19102728315457599142069468034376470979900453007937332237837518576196438670602, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q), result, f_q) + let result := mulmod(mload(0x1ec0), mulmod(mload(0xca0), 20461838439117790833741043996939313553025008529160428886800406442142042007111, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0xca0), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q), result, f_q) mstore(25472, result) } { - let result := mulmod(mload(0x1ea0), mulmod(mload(0xc80), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q) -result := addmod(mulmod(mload(0xc80), mulmod(mload(0xc80), 9270931013673651674008731376102018500640720878815062573686140036337408185754, f_q), f_q), result, f_q) + let result := mulmod(mload(0x1ec0), mulmod(mload(0xca0), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0xca0), 4281685467322811008008141037834996387840601218638499035555958417347771835972, f_q), f_q), result, f_q) mstore(25504, result) } -mstore(0x63c0, mulmod(mload(0x6220), mload(0x60c0), f_q)) { - let prod := mload(0x61a0) + let result := mulmod(mload(0x1ec0), mulmod(mload(0xca0), 19102728315457599142069468034376470979900453007937332237837518576196438670602, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0xca0), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q), result, f_q) +mstore(25536, result) + } +{ + let result := mulmod(mload(0x1ec0), mulmod(mload(0xca0), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q) +result := addmod(mulmod(mload(0xca0), mulmod(mload(0xca0), 9270931013673651674008731376102018500640720878815062573686140036337408185754, f_q), f_q), result, f_q) +mstore(25568, result) + } +mstore(0x6400, mulmod(mload(0x6260), mload(0x6100), f_q)) +{ + let prod := mload(0x61e0) - prod := mulmod(mload(0x61c0), prod, f_q) - mstore(0x63e0, prod) - - prod := mulmod(mload(0x61e0), prod, f_q) - mstore(0x6400, prod) - prod := mulmod(mload(0x6200), prod, f_q) mstore(0x6420, prod) - prod := mulmod(mload(0x62a0), prod, f_q) + prod := mulmod(mload(0x6220), prod, f_q) mstore(0x6440, prod) - prod := mulmod(mload(0x6220), prod, f_q) + prod := mulmod(mload(0x6240), prod, f_q) mstore(0x6460, prod) - prod := mulmod(mload(0x62c0), prod, f_q) + prod := mulmod(mload(0x62e0), prod, f_q) mstore(0x6480, prod) - prod := mulmod(mload(0x62e0), prod, f_q) + prod := mulmod(mload(0x6260), prod, f_q) mstore(0x64a0, prod) prod := mulmod(mload(0x6300), prod, f_q) @@ -1269,45 +1268,59 @@ mstore(0x63c0, mulmod(mload(0x6220), mload(0x60c0), f_q)) prod := mulmod(mload(0x6360), prod, f_q) mstore(0x6520, prod) - prod := mulmod(mload(0x6240), prod, f_q) + prod := mulmod(mload(0x6380), prod, f_q) mstore(0x6540, prod) - prod := mulmod(mload(0x6380), prod, f_q) + prod := mulmod(mload(0x63a0), prod, f_q) mstore(0x6560, prod) - prod := mulmod(mload(0x63a0), prod, f_q) + prod := mulmod(mload(0x6280), prod, f_q) mstore(0x6580, prod) prod := mulmod(mload(0x63c0), prod, f_q) mstore(0x65a0, prod) + prod := mulmod(mload(0x63e0), prod, f_q) + mstore(0x65c0, prod) + + prod := mulmod(mload(0x6400), prod, f_q) + mstore(0x65e0, prod) + } -mstore(0x65e0, 32) -mstore(0x6600, 32) mstore(0x6620, 32) -mstore(0x6640, mload(0x65a0)) -mstore(0x6660, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x6680, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x65e0, 0xc0, 0x65c0, 0x20), 1), success) +mstore(0x6640, 32) +mstore(0x6660, 32) +mstore(0x6680, mload(0x65e0)) +mstore(0x66a0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x66c0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x6620, 0xc0, 0x6600, 0x20), 1), success) { - let inv := mload(0x65c0) + let inv := mload(0x6600) let v + v := mload(0x6400) + mstore(25600, mulmod(mload(0x65c0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x63e0) + mstore(25568, mulmod(mload(0x65a0), inv, f_q)) + inv := mulmod(v, inv, f_q) + v := mload(0x63c0) mstore(25536, mulmod(mload(0x6580), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x63a0) - mstore(25504, mulmod(mload(0x6560), inv, f_q)) + v := mload(0x6280) + mstore(25216, mulmod(mload(0x6560), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x6380) - mstore(25472, mulmod(mload(0x6540), inv, f_q)) + v := mload(0x63a0) + mstore(25504, mulmod(mload(0x6540), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x6240) - mstore(25152, mulmod(mload(0x6520), inv, f_q)) + v := mload(0x6380) + mstore(25472, mulmod(mload(0x6520), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x6360) @@ -1326,1640 +1339,1632 @@ success := and(eq(staticcall(gas(), 0x5, 0x65e0, 0xc0, 0x65c0, 0x20), 1), succes mstore(25344, mulmod(mload(0x64a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x62e0) - mstore(25312, mulmod(mload(0x6480), inv, f_q)) + v := mload(0x6260) + mstore(25184, mulmod(mload(0x6480), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x62c0) - mstore(25280, mulmod(mload(0x6460), inv, f_q)) + v := mload(0x62e0) + mstore(25312, mulmod(mload(0x6460), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x6220) - mstore(25120, mulmod(mload(0x6440), inv, f_q)) + v := mload(0x6240) + mstore(25152, mulmod(mload(0x6440), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x62a0) - mstore(25248, mulmod(mload(0x6420), inv, f_q)) + v := mload(0x6220) + mstore(25120, mulmod(mload(0x6420), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x6200) - mstore(25088, mulmod(mload(0x6400), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x61e0) - mstore(25056, mulmod(mload(0x63e0), inv, f_q)) + mstore(25088, mulmod(mload(0x61e0), inv, f_q)) inv := mulmod(v, inv, f_q) - - v := mload(0x61c0) - mstore(25024, mulmod(mload(0x61a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x61a0, inv) + mstore(0x61e0, inv) } { - let result := mload(0x61a0) -result := addmod(mload(0x61c0), result, f_q) -result := addmod(mload(0x61e0), result, f_q) + let result := mload(0x61e0) result := addmod(mload(0x6200), result, f_q) -mstore(26272, result) - } -mstore(0x66c0, mulmod(mload(0x6280), mload(0x6220), f_q)) -{ - let result := mload(0x62a0) +result := addmod(mload(0x6220), result, f_q) +result := addmod(mload(0x6240), result, f_q) mstore(26336, result) } -mstore(0x6700, mulmod(mload(0x6280), mload(0x6320), f_q)) +mstore(0x6700, mulmod(mload(0x62c0), mload(0x6260), f_q)) { - let result := mload(0x62c0) -result := addmod(mload(0x62e0), result, f_q) -result := addmod(mload(0x6300), result, f_q) + let result := mload(0x62e0) mstore(26400, result) } -mstore(0x6740, mulmod(mload(0x6280), mload(0x6240), f_q)) +mstore(0x6740, mulmod(mload(0x62c0), mload(0x6360), f_q)) { - let result := mload(0x6340) -result := addmod(mload(0x6360), result, f_q) + let result := mload(0x6300) +result := addmod(mload(0x6320), result, f_q) +result := addmod(mload(0x6340), result, f_q) mstore(26464, result) } -mstore(0x6780, mulmod(mload(0x6280), mload(0x63c0), f_q)) +mstore(0x6780, mulmod(mload(0x62c0), mload(0x6280), f_q)) { let result := mload(0x6380) result := addmod(mload(0x63a0), result, f_q) mstore(26528, result) } +mstore(0x67c0, mulmod(mload(0x62c0), mload(0x6400), f_q)) +{ + let result := mload(0x63c0) +result := addmod(mload(0x63e0), result, f_q) +mstore(26592, result) + } { - let prod := mload(0x66a0) + let prod := mload(0x66e0) - prod := mulmod(mload(0x66e0), prod, f_q) - mstore(0x67c0, prod) - prod := mulmod(mload(0x6720), prod, f_q) - mstore(0x67e0, prod) + mstore(0x6800, prod) prod := mulmod(mload(0x6760), prod, f_q) - mstore(0x6800, prod) + mstore(0x6820, prod) prod := mulmod(mload(0x67a0), prod, f_q) - mstore(0x6820, prod) + mstore(0x6840, prod) + + prod := mulmod(mload(0x67e0), prod, f_q) + mstore(0x6860, prod) } -mstore(0x6860, 32) -mstore(0x6880, 32) mstore(0x68a0, 32) -mstore(0x68c0, mload(0x6820)) -mstore(0x68e0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x6900, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x6860, 0xc0, 0x6840, 0x20), 1), success) +mstore(0x68c0, 32) +mstore(0x68e0, 32) +mstore(0x6900, mload(0x6860)) +mstore(0x6920, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x6940, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x68a0, 0xc0, 0x6880, 0x20), 1), success) { - let inv := mload(0x6840) + let inv := mload(0x6880) let v + v := mload(0x67e0) + mstore(26592, mulmod(mload(0x6840), inv, f_q)) + inv := mulmod(v, inv, f_q) + v := mload(0x67a0) - mstore(26528, mulmod(mload(0x6800), inv, f_q)) + mstore(26528, mulmod(mload(0x6820), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x6760) - mstore(26464, mulmod(mload(0x67e0), inv, f_q)) + mstore(26464, mulmod(mload(0x6800), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x6720) - mstore(26400, mulmod(mload(0x67c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x66e0) - mstore(26336, mulmod(mload(0x66a0), inv, f_q)) + mstore(26400, mulmod(mload(0x66e0), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x66a0, inv) + mstore(0x66e0, inv) } -mstore(0x6920, mulmod(mload(0x66c0), mload(0x66e0), f_q)) -mstore(0x6940, mulmod(mload(0x6700), mload(0x6720), f_q)) -mstore(0x6960, mulmod(mload(0x6740), mload(0x6760), f_q)) -mstore(0x6980, mulmod(mload(0x6780), mload(0x67a0), f_q)) -mstore(0x69a0, mulmod(mload(0x1da0), mload(0x1da0), f_q)) -mstore(0x69c0, mulmod(mload(0x69a0), mload(0x1da0), f_q)) -mstore(0x69e0, mulmod(mload(0x69c0), mload(0x1da0), f_q)) -mstore(0x6a00, mulmod(mload(0x69e0), mload(0x1da0), f_q)) -mstore(0x6a20, mulmod(mload(0x6a00), mload(0x1da0), f_q)) -mstore(0x6a40, mulmod(mload(0x6a20), mload(0x1da0), f_q)) -mstore(0x6a60, mulmod(mload(0x6a40), mload(0x1da0), f_q)) -mstore(0x6a80, mulmod(mload(0x6a60), mload(0x1da0), f_q)) -mstore(0x6aa0, mulmod(mload(0x6a80), mload(0x1da0), f_q)) -mstore(0x6ac0, mulmod(mload(0x6aa0), mload(0x1da0), f_q)) -mstore(0x6ae0, mulmod(mload(0x6ac0), mload(0x1da0), f_q)) -mstore(0x6b00, mulmod(mload(0x6ae0), mload(0x1da0), f_q)) -mstore(0x6b20, mulmod(mload(0x6b00), mload(0x1da0), f_q)) -mstore(0x6b40, mulmod(mload(0x6b20), mload(0x1da0), f_q)) -mstore(0x6b60, mulmod(mload(0x6b40), mload(0x1da0), f_q)) -mstore(0x6b80, mulmod(mload(0x6b60), mload(0x1da0), f_q)) -mstore(0x6ba0, mulmod(mload(0x6b80), mload(0x1da0), f_q)) -mstore(0x6bc0, mulmod(mload(0x6ba0), mload(0x1da0), f_q)) -mstore(0x6be0, mulmod(mload(0x6bc0), mload(0x1da0), f_q)) -mstore(0x6c00, mulmod(mload(0x6be0), mload(0x1da0), f_q)) -mstore(0x6c20, mulmod(mload(0x6c00), mload(0x1da0), f_q)) -mstore(0x6c40, mulmod(mload(0x6c20), mload(0x1da0), f_q)) -mstore(0x6c60, mulmod(mload(0x6c40), mload(0x1da0), f_q)) -mstore(0x6c80, mulmod(mload(0x6c60), mload(0x1da0), f_q)) -mstore(0x6ca0, mulmod(mload(0x6c80), mload(0x1da0), f_q)) -mstore(0x6cc0, mulmod(mload(0x6ca0), mload(0x1da0), f_q)) -mstore(0x6ce0, mulmod(mload(0x6cc0), mload(0x1da0), f_q)) -mstore(0x6d00, mulmod(mload(0x6ce0), mload(0x1da0), f_q)) -mstore(0x6d20, mulmod(mload(0x6d00), mload(0x1da0), f_q)) -mstore(0x6d40, mulmod(mload(0x6d20), mload(0x1da0), f_q)) -mstore(0x6d60, mulmod(mload(0x6d40), mload(0x1da0), f_q)) -mstore(0x6d80, mulmod(mload(0x6d60), mload(0x1da0), f_q)) -mstore(0x6da0, mulmod(mload(0x6d80), mload(0x1da0), f_q)) -mstore(0x6dc0, mulmod(mload(0x6da0), mload(0x1da0), f_q)) -mstore(0x6de0, mulmod(mload(0x6dc0), mload(0x1da0), f_q)) -mstore(0x6e00, mulmod(mload(0x6de0), mload(0x1da0), f_q)) -mstore(0x6e20, mulmod(mload(0x6e00), mload(0x1da0), f_q)) -mstore(0x6e40, mulmod(mload(0x6e20), mload(0x1da0), f_q)) -mstore(0x6e60, mulmod(mload(0x6e40), mload(0x1da0), f_q)) -mstore(0x6e80, mulmod(mload(0x6e60), mload(0x1da0), f_q)) -mstore(0x6ea0, mulmod(mload(0x6e80), mload(0x1da0), f_q)) -mstore(0x6ec0, mulmod(mload(0x6ea0), mload(0x1da0), f_q)) -mstore(0x6ee0, mulmod(mload(0x6ec0), mload(0x1da0), f_q)) -mstore(0x6f00, mulmod(mload(0x6ee0), mload(0x1da0), f_q)) -mstore(0x6f20, mulmod(mload(0x6f00), mload(0x1da0), f_q)) -mstore(0x6f40, mulmod(mload(0x1e00), mload(0x1e00), f_q)) -mstore(0x6f60, mulmod(mload(0x6f40), mload(0x1e00), f_q)) -mstore(0x6f80, mulmod(mload(0x6f60), mload(0x1e00), f_q)) -mstore(0x6fa0, mulmod(mload(0x6f80), mload(0x1e00), f_q)) -{ - let result := mulmod(mload(0xcc0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xce0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xd00), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xd20), mload(0x6200), f_q), result, f_q) -mstore(28608, result) - } -mstore(0x6fe0, mulmod(mload(0x6fc0), mload(0x66a0), f_q)) -mstore(0x7000, mulmod(sub(f_q, mload(0x6fe0)), 1, f_q)) -{ - let result := mulmod(mload(0xd40), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xd60), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xd80), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xda0), mload(0x6200), f_q), result, f_q) -mstore(28704, result) - } -mstore(0x7040, mulmod(mload(0x7020), mload(0x66a0), f_q)) -mstore(0x7060, mulmod(sub(f_q, mload(0x7040)), mload(0x1da0), f_q)) -mstore(0x7080, mulmod(1, mload(0x1da0), f_q)) -mstore(0x70a0, addmod(mload(0x7000), mload(0x7060), f_q)) -{ - let result := mulmod(mload(0xdc0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xde0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xe00), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xe20), mload(0x6200), f_q), result, f_q) -mstore(28864, result) - } -mstore(0x70e0, mulmod(mload(0x70c0), mload(0x66a0), f_q)) -mstore(0x7100, mulmod(sub(f_q, mload(0x70e0)), mload(0x69a0), f_q)) -mstore(0x7120, mulmod(1, mload(0x69a0), f_q)) -mstore(0x7140, addmod(mload(0x70a0), mload(0x7100), f_q)) -{ - let result := mulmod(mload(0xe40), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xe60), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xe80), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xea0), mload(0x6200), f_q), result, f_q) -mstore(29024, result) - } -mstore(0x7180, mulmod(mload(0x7160), mload(0x66a0), f_q)) -mstore(0x71a0, mulmod(sub(f_q, mload(0x7180)), mload(0x69c0), f_q)) -mstore(0x71c0, mulmod(1, mload(0x69c0), f_q)) -mstore(0x71e0, addmod(mload(0x7140), mload(0x71a0), f_q)) -{ - let result := mulmod(mload(0xec0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xee0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xf00), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xf20), mload(0x6200), f_q), result, f_q) -mstore(29184, result) - } -mstore(0x7220, mulmod(mload(0x7200), mload(0x66a0), f_q)) -mstore(0x7240, mulmod(sub(f_q, mload(0x7220)), mload(0x69e0), f_q)) -mstore(0x7260, mulmod(1, mload(0x69e0), f_q)) -mstore(0x7280, addmod(mload(0x71e0), mload(0x7240), f_q)) -{ - let result := mulmod(mload(0xf40), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xf60), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0xf80), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0xfa0), mload(0x6200), f_q), result, f_q) -mstore(29344, result) - } -mstore(0x72c0, mulmod(mload(0x72a0), mload(0x66a0), f_q)) -mstore(0x72e0, mulmod(sub(f_q, mload(0x72c0)), mload(0x6a00), f_q)) -mstore(0x7300, mulmod(1, mload(0x6a00), f_q)) -mstore(0x7320, addmod(mload(0x7280), mload(0x72e0), f_q)) -{ - let result := mulmod(mload(0xfc0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0xfe0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1000), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1020), mload(0x6200), f_q), result, f_q) -mstore(29504, result) - } -mstore(0x7360, mulmod(mload(0x7340), mload(0x66a0), f_q)) -mstore(0x7380, mulmod(sub(f_q, mload(0x7360)), mload(0x6a20), f_q)) -mstore(0x73a0, mulmod(1, mload(0x6a20), f_q)) -mstore(0x73c0, addmod(mload(0x7320), mload(0x7380), f_q)) -{ - let result := mulmod(mload(0x1040), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0x1060), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1080), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x10a0), mload(0x6200), f_q), result, f_q) -mstore(29664, result) - } -mstore(0x7400, mulmod(mload(0x73e0), mload(0x66a0), f_q)) -mstore(0x7420, mulmod(sub(f_q, mload(0x7400)), mload(0x6a40), f_q)) -mstore(0x7440, mulmod(1, mload(0x6a40), f_q)) -mstore(0x7460, addmod(mload(0x73c0), mload(0x7420), f_q)) -{ - let result := mulmod(mload(0x10c0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0x10e0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1100), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1120), mload(0x6200), f_q), result, f_q) -mstore(29824, result) - } -mstore(0x74a0, mulmod(mload(0x7480), mload(0x66a0), f_q)) -mstore(0x74c0, mulmod(sub(f_q, mload(0x74a0)), mload(0x6a60), f_q)) -mstore(0x74e0, mulmod(1, mload(0x6a60), f_q)) -mstore(0x7500, addmod(mload(0x7460), mload(0x74c0), f_q)) -{ - let result := mulmod(mload(0x1140), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0x1160), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1180), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x11a0), mload(0x6200), f_q), result, f_q) -mstore(29984, result) - } -mstore(0x7540, mulmod(mload(0x7520), mload(0x66a0), f_q)) -mstore(0x7560, mulmod(sub(f_q, mload(0x7540)), mload(0x6a80), f_q)) -mstore(0x7580, mulmod(1, mload(0x6a80), f_q)) -mstore(0x75a0, addmod(mload(0x7500), mload(0x7560), f_q)) -{ - let result := mulmod(mload(0x11c0), mload(0x61a0), f_q) -result := addmod(mulmod(mload(0x11e0), mload(0x61c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1200), mload(0x61e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1220), mload(0x6200), f_q), result, f_q) -mstore(30144, result) - } -mstore(0x75e0, mulmod(mload(0x75c0), mload(0x66a0), f_q)) -mstore(0x7600, mulmod(sub(f_q, mload(0x75e0)), mload(0x6aa0), f_q)) -mstore(0x7620, mulmod(1, mload(0x6aa0), f_q)) -mstore(0x7640, addmod(mload(0x75a0), mload(0x7600), f_q)) -mstore(0x7660, mulmod(mload(0x7640), 1, f_q)) -mstore(0x7680, mulmod(mload(0x7080), 1, f_q)) -mstore(0x76a0, mulmod(mload(0x7120), 1, f_q)) -mstore(0x76c0, mulmod(mload(0x71c0), 1, f_q)) -mstore(0x76e0, mulmod(mload(0x7260), 1, f_q)) -mstore(0x7700, mulmod(mload(0x7300), 1, f_q)) -mstore(0x7720, mulmod(mload(0x73a0), 1, f_q)) -mstore(0x7740, mulmod(mload(0x7440), 1, f_q)) -mstore(0x7760, mulmod(mload(0x74e0), 1, f_q)) -mstore(0x7780, mulmod(mload(0x7580), 1, f_q)) -mstore(0x77a0, mulmod(mload(0x7620), 1, f_q)) -mstore(0x77c0, mulmod(1, mload(0x66c0), f_q)) -{ - let result := mulmod(mload(0x1240), mload(0x62a0), f_q) -mstore(30688, result) - } -mstore(0x7800, mulmod(mload(0x77e0), mload(0x6920), f_q)) -mstore(0x7820, mulmod(sub(f_q, mload(0x7800)), 1, f_q)) -mstore(0x7840, mulmod(mload(0x77c0), 1, f_q)) -{ - let result := mulmod(mload(0x1260), mload(0x62a0), f_q) -mstore(30816, result) - } -mstore(0x7880, mulmod(mload(0x7860), mload(0x6920), f_q)) -mstore(0x78a0, mulmod(sub(f_q, mload(0x7880)), mload(0x1da0), f_q)) -mstore(0x78c0, mulmod(mload(0x77c0), mload(0x1da0), f_q)) -mstore(0x78e0, addmod(mload(0x7820), mload(0x78a0), f_q)) -{ - let result := mulmod(mload(0x1280), mload(0x62a0), f_q) -mstore(30976, result) - } -mstore(0x7920, mulmod(mload(0x7900), mload(0x6920), f_q)) -mstore(0x7940, mulmod(sub(f_q, mload(0x7920)), mload(0x69a0), f_q)) -mstore(0x7960, mulmod(mload(0x77c0), mload(0x69a0), f_q)) -mstore(0x7980, addmod(mload(0x78e0), mload(0x7940), f_q)) -{ - let result := mulmod(mload(0x12a0), mload(0x62a0), f_q) -mstore(31136, result) - } -mstore(0x79c0, mulmod(mload(0x79a0), mload(0x6920), f_q)) -mstore(0x79e0, mulmod(sub(f_q, mload(0x79c0)), mload(0x69c0), f_q)) -mstore(0x7a00, mulmod(mload(0x77c0), mload(0x69c0), f_q)) -mstore(0x7a20, addmod(mload(0x7980), mload(0x79e0), f_q)) -{ - let result := mulmod(mload(0x12c0), mload(0x62a0), f_q) -mstore(31296, result) - } -mstore(0x7a60, mulmod(mload(0x7a40), mload(0x6920), f_q)) -mstore(0x7a80, mulmod(sub(f_q, mload(0x7a60)), mload(0x69e0), f_q)) -mstore(0x7aa0, mulmod(mload(0x77c0), mload(0x69e0), f_q)) -mstore(0x7ac0, addmod(mload(0x7a20), mload(0x7a80), f_q)) -{ - let result := mulmod(mload(0x12e0), mload(0x62a0), f_q) -mstore(31456, result) - } -mstore(0x7b00, mulmod(mload(0x7ae0), mload(0x6920), f_q)) -mstore(0x7b20, mulmod(sub(f_q, mload(0x7b00)), mload(0x6a00), f_q)) -mstore(0x7b40, mulmod(mload(0x77c0), mload(0x6a00), f_q)) -mstore(0x7b60, addmod(mload(0x7ac0), mload(0x7b20), f_q)) -{ - let result := mulmod(mload(0x1b80), mload(0x62a0), f_q) -mstore(31616, result) - } -mstore(0x7ba0, mulmod(mload(0x7b80), mload(0x6920), f_q)) -mstore(0x7bc0, mulmod(sub(f_q, mload(0x7ba0)), mload(0x6a20), f_q)) -mstore(0x7be0, mulmod(mload(0x77c0), mload(0x6a20), f_q)) -mstore(0x7c00, addmod(mload(0x7b60), mload(0x7bc0), f_q)) -{ - let result := mulmod(mload(0x1c20), mload(0x62a0), f_q) -mstore(31776, result) - } -mstore(0x7c40, mulmod(mload(0x7c20), mload(0x6920), f_q)) -mstore(0x7c60, mulmod(sub(f_q, mload(0x7c40)), mload(0x6a40), f_q)) -mstore(0x7c80, mulmod(mload(0x77c0), mload(0x6a40), f_q)) -mstore(0x7ca0, addmod(mload(0x7c00), mload(0x7c60), f_q)) -{ - let result := mulmod(mload(0x1cc0), mload(0x62a0), f_q) -mstore(31936, result) - } -mstore(0x7ce0, mulmod(mload(0x7cc0), mload(0x6920), f_q)) -mstore(0x7d00, mulmod(sub(f_q, mload(0x7ce0)), mload(0x6a60), f_q)) -mstore(0x7d20, mulmod(mload(0x77c0), mload(0x6a60), f_q)) -mstore(0x7d40, addmod(mload(0x7ca0), mload(0x7d00), f_q)) -{ - let result := mulmod(mload(0x1d60), mload(0x62a0), f_q) -mstore(32096, result) - } -mstore(0x7d80, mulmod(mload(0x7d60), mload(0x6920), f_q)) -mstore(0x7da0, mulmod(sub(f_q, mload(0x7d80)), mload(0x6a80), f_q)) -mstore(0x7dc0, mulmod(mload(0x77c0), mload(0x6a80), f_q)) -mstore(0x7de0, addmod(mload(0x7d40), mload(0x7da0), f_q)) -{ - let result := mulmod(mload(0x1300), mload(0x62a0), f_q) -mstore(32256, result) - } -mstore(0x7e20, mulmod(mload(0x7e00), mload(0x6920), f_q)) -mstore(0x7e40, mulmod(sub(f_q, mload(0x7e20)), mload(0x6aa0), f_q)) -mstore(0x7e60, mulmod(mload(0x77c0), mload(0x6aa0), f_q)) -mstore(0x7e80, addmod(mload(0x7de0), mload(0x7e40), f_q)) -{ - let result := mulmod(mload(0x1320), mload(0x62a0), f_q) -mstore(32416, result) - } -mstore(0x7ec0, mulmod(mload(0x7ea0), mload(0x6920), f_q)) -mstore(0x7ee0, mulmod(sub(f_q, mload(0x7ec0)), mload(0x6ac0), f_q)) -mstore(0x7f00, mulmod(mload(0x77c0), mload(0x6ac0), f_q)) -mstore(0x7f20, addmod(mload(0x7e80), mload(0x7ee0), f_q)) +mstore(0x6960, mulmod(mload(0x6700), mload(0x6720), f_q)) +mstore(0x6980, mulmod(mload(0x6740), mload(0x6760), f_q)) +mstore(0x69a0, mulmod(mload(0x6780), mload(0x67a0), f_q)) +mstore(0x69c0, mulmod(mload(0x67c0), mload(0x67e0), f_q)) +mstore(0x69e0, mulmod(mload(0x1dc0), mload(0x1dc0), f_q)) +mstore(0x6a00, mulmod(mload(0x69e0), mload(0x1dc0), f_q)) +mstore(0x6a20, mulmod(mload(0x6a00), mload(0x1dc0), f_q)) +mstore(0x6a40, mulmod(mload(0x6a20), mload(0x1dc0), f_q)) +mstore(0x6a60, mulmod(mload(0x6a40), mload(0x1dc0), f_q)) +mstore(0x6a80, mulmod(mload(0x6a60), mload(0x1dc0), f_q)) +mstore(0x6aa0, mulmod(mload(0x6a80), mload(0x1dc0), f_q)) +mstore(0x6ac0, mulmod(mload(0x6aa0), mload(0x1dc0), f_q)) +mstore(0x6ae0, mulmod(mload(0x6ac0), mload(0x1dc0), f_q)) +mstore(0x6b00, mulmod(mload(0x6ae0), mload(0x1dc0), f_q)) +mstore(0x6b20, mulmod(mload(0x6b00), mload(0x1dc0), f_q)) +mstore(0x6b40, mulmod(mload(0x6b20), mload(0x1dc0), f_q)) +mstore(0x6b60, mulmod(mload(0x6b40), mload(0x1dc0), f_q)) +mstore(0x6b80, mulmod(mload(0x6b60), mload(0x1dc0), f_q)) +mstore(0x6ba0, mulmod(mload(0x6b80), mload(0x1dc0), f_q)) +mstore(0x6bc0, mulmod(mload(0x6ba0), mload(0x1dc0), f_q)) +mstore(0x6be0, mulmod(mload(0x6bc0), mload(0x1dc0), f_q)) +mstore(0x6c00, mulmod(mload(0x6be0), mload(0x1dc0), f_q)) +mstore(0x6c20, mulmod(mload(0x6c00), mload(0x1dc0), f_q)) +mstore(0x6c40, mulmod(mload(0x6c20), mload(0x1dc0), f_q)) +mstore(0x6c60, mulmod(mload(0x6c40), mload(0x1dc0), f_q)) +mstore(0x6c80, mulmod(mload(0x6c60), mload(0x1dc0), f_q)) +mstore(0x6ca0, mulmod(mload(0x6c80), mload(0x1dc0), f_q)) +mstore(0x6cc0, mulmod(mload(0x6ca0), mload(0x1dc0), f_q)) +mstore(0x6ce0, mulmod(mload(0x6cc0), mload(0x1dc0), f_q)) +mstore(0x6d00, mulmod(mload(0x6ce0), mload(0x1dc0), f_q)) +mstore(0x6d20, mulmod(mload(0x6d00), mload(0x1dc0), f_q)) +mstore(0x6d40, mulmod(mload(0x6d20), mload(0x1dc0), f_q)) +mstore(0x6d60, mulmod(mload(0x6d40), mload(0x1dc0), f_q)) +mstore(0x6d80, mulmod(mload(0x6d60), mload(0x1dc0), f_q)) +mstore(0x6da0, mulmod(mload(0x6d80), mload(0x1dc0), f_q)) +mstore(0x6dc0, mulmod(mload(0x6da0), mload(0x1dc0), f_q)) +mstore(0x6de0, mulmod(mload(0x6dc0), mload(0x1dc0), f_q)) +mstore(0x6e00, mulmod(mload(0x6de0), mload(0x1dc0), f_q)) +mstore(0x6e20, mulmod(mload(0x6e00), mload(0x1dc0), f_q)) +mstore(0x6e40, mulmod(mload(0x6e20), mload(0x1dc0), f_q)) +mstore(0x6e60, mulmod(mload(0x6e40), mload(0x1dc0), f_q)) +mstore(0x6e80, mulmod(mload(0x6e60), mload(0x1dc0), f_q)) +mstore(0x6ea0, mulmod(mload(0x6e80), mload(0x1dc0), f_q)) +mstore(0x6ec0, mulmod(mload(0x6ea0), mload(0x1dc0), f_q)) +mstore(0x6ee0, mulmod(mload(0x6ec0), mload(0x1dc0), f_q)) +mstore(0x6f00, mulmod(mload(0x6ee0), mload(0x1dc0), f_q)) +mstore(0x6f20, mulmod(mload(0x6f00), mload(0x1dc0), f_q)) +mstore(0x6f40, mulmod(mload(0x6f20), mload(0x1dc0), f_q)) +mstore(0x6f60, mulmod(mload(0x6f40), mload(0x1dc0), f_q)) +mstore(0x6f80, mulmod(mload(0x1e20), mload(0x1e20), f_q)) +mstore(0x6fa0, mulmod(mload(0x6f80), mload(0x1e20), f_q)) +mstore(0x6fc0, mulmod(mload(0x6fa0), mload(0x1e20), f_q)) +mstore(0x6fe0, mulmod(mload(0x6fc0), mload(0x1e20), f_q)) +{ + let result := mulmod(mload(0xce0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xd00), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xd20), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xd40), mload(0x6240), f_q), result, f_q) +mstore(28672, result) + } +mstore(0x7020, mulmod(mload(0x7000), mload(0x66e0), f_q)) +mstore(0x7040, mulmod(sub(f_q, mload(0x7020)), 1, f_q)) +{ + let result := mulmod(mload(0xd60), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xd80), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xda0), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xdc0), mload(0x6240), f_q), result, f_q) +mstore(28768, result) + } +mstore(0x7080, mulmod(mload(0x7060), mload(0x66e0), f_q)) +mstore(0x70a0, mulmod(sub(f_q, mload(0x7080)), mload(0x1dc0), f_q)) +mstore(0x70c0, mulmod(1, mload(0x1dc0), f_q)) +mstore(0x70e0, addmod(mload(0x7040), mload(0x70a0), f_q)) +{ + let result := mulmod(mload(0xde0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xe00), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xe20), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xe40), mload(0x6240), f_q), result, f_q) +mstore(28928, result) + } +mstore(0x7120, mulmod(mload(0x7100), mload(0x66e0), f_q)) +mstore(0x7140, mulmod(sub(f_q, mload(0x7120)), mload(0x69e0), f_q)) +mstore(0x7160, mulmod(1, mload(0x69e0), f_q)) +mstore(0x7180, addmod(mload(0x70e0), mload(0x7140), f_q)) +{ + let result := mulmod(mload(0xe60), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xe80), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xea0), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xec0), mload(0x6240), f_q), result, f_q) +mstore(29088, result) + } +mstore(0x71c0, mulmod(mload(0x71a0), mload(0x66e0), f_q)) +mstore(0x71e0, mulmod(sub(f_q, mload(0x71c0)), mload(0x6a00), f_q)) +mstore(0x7200, mulmod(1, mload(0x6a00), f_q)) +mstore(0x7220, addmod(mload(0x7180), mload(0x71e0), f_q)) +{ + let result := mulmod(mload(0xee0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xf00), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xf20), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xf40), mload(0x6240), f_q), result, f_q) +mstore(29248, result) + } +mstore(0x7260, mulmod(mload(0x7240), mload(0x66e0), f_q)) +mstore(0x7280, mulmod(sub(f_q, mload(0x7260)), mload(0x6a20), f_q)) +mstore(0x72a0, mulmod(1, mload(0x6a20), f_q)) +mstore(0x72c0, addmod(mload(0x7220), mload(0x7280), f_q)) +{ + let result := mulmod(mload(0xf60), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0xf80), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0xfa0), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0xfc0), mload(0x6240), f_q), result, f_q) +mstore(29408, result) + } +mstore(0x7300, mulmod(mload(0x72e0), mload(0x66e0), f_q)) +mstore(0x7320, mulmod(sub(f_q, mload(0x7300)), mload(0x6a40), f_q)) +mstore(0x7340, mulmod(1, mload(0x6a40), f_q)) +mstore(0x7360, addmod(mload(0x72c0), mload(0x7320), f_q)) +{ + let result := mulmod(mload(0xfe0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0x1000), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0x1020), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0x1040), mload(0x6240), f_q), result, f_q) +mstore(29568, result) + } +mstore(0x73a0, mulmod(mload(0x7380), mload(0x66e0), f_q)) +mstore(0x73c0, mulmod(sub(f_q, mload(0x73a0)), mload(0x6a60), f_q)) +mstore(0x73e0, mulmod(1, mload(0x6a60), f_q)) +mstore(0x7400, addmod(mload(0x7360), mload(0x73c0), f_q)) +{ + let result := mulmod(mload(0x1060), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0x1080), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0x10a0), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0x10c0), mload(0x6240), f_q), result, f_q) +mstore(29728, result) + } +mstore(0x7440, mulmod(mload(0x7420), mload(0x66e0), f_q)) +mstore(0x7460, mulmod(sub(f_q, mload(0x7440)), mload(0x6a80), f_q)) +mstore(0x7480, mulmod(1, mload(0x6a80), f_q)) +mstore(0x74a0, addmod(mload(0x7400), mload(0x7460), f_q)) +{ + let result := mulmod(mload(0x10e0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0x1100), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0x1120), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0x1140), mload(0x6240), f_q), result, f_q) +mstore(29888, result) + } +mstore(0x74e0, mulmod(mload(0x74c0), mload(0x66e0), f_q)) +mstore(0x7500, mulmod(sub(f_q, mload(0x74e0)), mload(0x6aa0), f_q)) +mstore(0x7520, mulmod(1, mload(0x6aa0), f_q)) +mstore(0x7540, addmod(mload(0x74a0), mload(0x7500), f_q)) +{ + let result := mulmod(mload(0x1160), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0x1180), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0x11a0), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0x11c0), mload(0x6240), f_q), result, f_q) +mstore(30048, result) + } +mstore(0x7580, mulmod(mload(0x7560), mload(0x66e0), f_q)) +mstore(0x75a0, mulmod(sub(f_q, mload(0x7580)), mload(0x6ac0), f_q)) +mstore(0x75c0, mulmod(1, mload(0x6ac0), f_q)) +mstore(0x75e0, addmod(mload(0x7540), mload(0x75a0), f_q)) +{ + let result := mulmod(mload(0x11e0), mload(0x61e0), f_q) +result := addmod(mulmod(mload(0x1200), mload(0x6200), f_q), result, f_q) +result := addmod(mulmod(mload(0x1220), mload(0x6220), f_q), result, f_q) +result := addmod(mulmod(mload(0x1240), mload(0x6240), f_q), result, f_q) +mstore(30208, result) + } +mstore(0x7620, mulmod(mload(0x7600), mload(0x66e0), f_q)) +mstore(0x7640, mulmod(sub(f_q, mload(0x7620)), mload(0x6ae0), f_q)) +mstore(0x7660, mulmod(1, mload(0x6ae0), f_q)) +mstore(0x7680, addmod(mload(0x75e0), mload(0x7640), f_q)) +mstore(0x76a0, mulmod(mload(0x7680), 1, f_q)) +mstore(0x76c0, mulmod(mload(0x70c0), 1, f_q)) +mstore(0x76e0, mulmod(mload(0x7160), 1, f_q)) +mstore(0x7700, mulmod(mload(0x7200), 1, f_q)) +mstore(0x7720, mulmod(mload(0x72a0), 1, f_q)) +mstore(0x7740, mulmod(mload(0x7340), 1, f_q)) +mstore(0x7760, mulmod(mload(0x73e0), 1, f_q)) +mstore(0x7780, mulmod(mload(0x7480), 1, f_q)) +mstore(0x77a0, mulmod(mload(0x7520), 1, f_q)) +mstore(0x77c0, mulmod(mload(0x75c0), 1, f_q)) +mstore(0x77e0, mulmod(mload(0x7660), 1, f_q)) +mstore(0x7800, mulmod(1, mload(0x6700), f_q)) +{ + let result := mulmod(mload(0x1260), mload(0x62e0), f_q) +mstore(30752, result) + } +mstore(0x7840, mulmod(mload(0x7820), mload(0x6960), f_q)) +mstore(0x7860, mulmod(sub(f_q, mload(0x7840)), 1, f_q)) +mstore(0x7880, mulmod(mload(0x7800), 1, f_q)) +{ + let result := mulmod(mload(0x1280), mload(0x62e0), f_q) +mstore(30880, result) + } +mstore(0x78c0, mulmod(mload(0x78a0), mload(0x6960), f_q)) +mstore(0x78e0, mulmod(sub(f_q, mload(0x78c0)), mload(0x1dc0), f_q)) +mstore(0x7900, mulmod(mload(0x7800), mload(0x1dc0), f_q)) +mstore(0x7920, addmod(mload(0x7860), mload(0x78e0), f_q)) +{ + let result := mulmod(mload(0x12a0), mload(0x62e0), f_q) +mstore(31040, result) + } +mstore(0x7960, mulmod(mload(0x7940), mload(0x6960), f_q)) +mstore(0x7980, mulmod(sub(f_q, mload(0x7960)), mload(0x69e0), f_q)) +mstore(0x79a0, mulmod(mload(0x7800), mload(0x69e0), f_q)) +mstore(0x79c0, addmod(mload(0x7920), mload(0x7980), f_q)) +{ + let result := mulmod(mload(0x12c0), mload(0x62e0), f_q) +mstore(31200, result) + } +mstore(0x7a00, mulmod(mload(0x79e0), mload(0x6960), f_q)) +mstore(0x7a20, mulmod(sub(f_q, mload(0x7a00)), mload(0x6a00), f_q)) +mstore(0x7a40, mulmod(mload(0x7800), mload(0x6a00), f_q)) +mstore(0x7a60, addmod(mload(0x79c0), mload(0x7a20), f_q)) +{ + let result := mulmod(mload(0x12e0), mload(0x62e0), f_q) +mstore(31360, result) + } +mstore(0x7aa0, mulmod(mload(0x7a80), mload(0x6960), f_q)) +mstore(0x7ac0, mulmod(sub(f_q, mload(0x7aa0)), mload(0x6a20), f_q)) +mstore(0x7ae0, mulmod(mload(0x7800), mload(0x6a20), f_q)) +mstore(0x7b00, addmod(mload(0x7a60), mload(0x7ac0), f_q)) +{ + let result := mulmod(mload(0x1300), mload(0x62e0), f_q) +mstore(31520, result) + } +mstore(0x7b40, mulmod(mload(0x7b20), mload(0x6960), f_q)) +mstore(0x7b60, mulmod(sub(f_q, mload(0x7b40)), mload(0x6a40), f_q)) +mstore(0x7b80, mulmod(mload(0x7800), mload(0x6a40), f_q)) +mstore(0x7ba0, addmod(mload(0x7b00), mload(0x7b60), f_q)) +{ + let result := mulmod(mload(0x1ba0), mload(0x62e0), f_q) +mstore(31680, result) + } +mstore(0x7be0, mulmod(mload(0x7bc0), mload(0x6960), f_q)) +mstore(0x7c00, mulmod(sub(f_q, mload(0x7be0)), mload(0x6a60), f_q)) +mstore(0x7c20, mulmod(mload(0x7800), mload(0x6a60), f_q)) +mstore(0x7c40, addmod(mload(0x7ba0), mload(0x7c00), f_q)) +{ + let result := mulmod(mload(0x1c40), mload(0x62e0), f_q) +mstore(31840, result) + } +mstore(0x7c80, mulmod(mload(0x7c60), mload(0x6960), f_q)) +mstore(0x7ca0, mulmod(sub(f_q, mload(0x7c80)), mload(0x6a80), f_q)) +mstore(0x7cc0, mulmod(mload(0x7800), mload(0x6a80), f_q)) +mstore(0x7ce0, addmod(mload(0x7c40), mload(0x7ca0), f_q)) +{ + let result := mulmod(mload(0x1ce0), mload(0x62e0), f_q) +mstore(32000, result) + } +mstore(0x7d20, mulmod(mload(0x7d00), mload(0x6960), f_q)) +mstore(0x7d40, mulmod(sub(f_q, mload(0x7d20)), mload(0x6aa0), f_q)) +mstore(0x7d60, mulmod(mload(0x7800), mload(0x6aa0), f_q)) +mstore(0x7d80, addmod(mload(0x7ce0), mload(0x7d40), f_q)) +{ + let result := mulmod(mload(0x1d80), mload(0x62e0), f_q) +mstore(32160, result) + } +mstore(0x7dc0, mulmod(mload(0x7da0), mload(0x6960), f_q)) +mstore(0x7de0, mulmod(sub(f_q, mload(0x7dc0)), mload(0x6ac0), f_q)) +mstore(0x7e00, mulmod(mload(0x7800), mload(0x6ac0), f_q)) +mstore(0x7e20, addmod(mload(0x7d80), mload(0x7de0), f_q)) +{ + let result := mulmod(mload(0x1320), mload(0x62e0), f_q) +mstore(32320, result) + } +mstore(0x7e60, mulmod(mload(0x7e40), mload(0x6960), f_q)) +mstore(0x7e80, mulmod(sub(f_q, mload(0x7e60)), mload(0x6ae0), f_q)) +mstore(0x7ea0, mulmod(mload(0x7800), mload(0x6ae0), f_q)) +mstore(0x7ec0, addmod(mload(0x7e20), mload(0x7e80), f_q)) +{ + let result := mulmod(mload(0x1340), mload(0x62e0), f_q) +mstore(32480, result) + } +mstore(0x7f00, mulmod(mload(0x7ee0), mload(0x6960), f_q)) +mstore(0x7f20, mulmod(sub(f_q, mload(0x7f00)), mload(0x6b00), f_q)) +mstore(0x7f40, mulmod(mload(0x7800), mload(0x6b00), f_q)) +mstore(0x7f60, addmod(mload(0x7ec0), mload(0x7f20), f_q)) { - let result := mulmod(mload(0x1340), mload(0x62a0), f_q) -mstore(32576, result) + let result := mulmod(mload(0x1360), mload(0x62e0), f_q) +mstore(32640, result) } -mstore(0x7f60, mulmod(mload(0x7f40), mload(0x6920), f_q)) -mstore(0x7f80, mulmod(sub(f_q, mload(0x7f60)), mload(0x6ae0), f_q)) -mstore(0x7fa0, mulmod(mload(0x77c0), mload(0x6ae0), f_q)) -mstore(0x7fc0, addmod(mload(0x7f20), mload(0x7f80), f_q)) +mstore(0x7fa0, mulmod(mload(0x7f80), mload(0x6960), f_q)) +mstore(0x7fc0, mulmod(sub(f_q, mload(0x7fa0)), mload(0x6b20), f_q)) +mstore(0x7fe0, mulmod(mload(0x7800), mload(0x6b20), f_q)) +mstore(0x8000, addmod(mload(0x7f60), mload(0x7fc0), f_q)) { - let result := mulmod(mload(0x1360), mload(0x62a0), f_q) -mstore(32736, result) + let result := mulmod(mload(0x1380), mload(0x62e0), f_q) +mstore(32800, result) } -mstore(0x8000, mulmod(mload(0x7fe0), mload(0x6920), f_q)) -mstore(0x8020, mulmod(sub(f_q, mload(0x8000)), mload(0x6b00), f_q)) -mstore(0x8040, mulmod(mload(0x77c0), mload(0x6b00), f_q)) -mstore(0x8060, addmod(mload(0x7fc0), mload(0x8020), f_q)) +mstore(0x8040, mulmod(mload(0x8020), mload(0x6960), f_q)) +mstore(0x8060, mulmod(sub(f_q, mload(0x8040)), mload(0x6b40), f_q)) +mstore(0x8080, mulmod(mload(0x7800), mload(0x6b40), f_q)) +mstore(0x80a0, addmod(mload(0x8000), mload(0x8060), f_q)) { - let result := mulmod(mload(0x1380), mload(0x62a0), f_q) -mstore(32896, result) + let result := mulmod(mload(0x13a0), mload(0x62e0), f_q) +mstore(32960, result) } -mstore(0x80a0, mulmod(mload(0x8080), mload(0x6920), f_q)) -mstore(0x80c0, mulmod(sub(f_q, mload(0x80a0)), mload(0x6b20), f_q)) -mstore(0x80e0, mulmod(mload(0x77c0), mload(0x6b20), f_q)) -mstore(0x8100, addmod(mload(0x8060), mload(0x80c0), f_q)) +mstore(0x80e0, mulmod(mload(0x80c0), mload(0x6960), f_q)) +mstore(0x8100, mulmod(sub(f_q, mload(0x80e0)), mload(0x6b60), f_q)) +mstore(0x8120, mulmod(mload(0x7800), mload(0x6b60), f_q)) +mstore(0x8140, addmod(mload(0x80a0), mload(0x8100), f_q)) { - let result := mulmod(mload(0x13a0), mload(0x62a0), f_q) -mstore(33056, result) + let result := mulmod(mload(0x13c0), mload(0x62e0), f_q) +mstore(33120, result) } -mstore(0x8140, mulmod(mload(0x8120), mload(0x6920), f_q)) -mstore(0x8160, mulmod(sub(f_q, mload(0x8140)), mload(0x6b40), f_q)) -mstore(0x8180, mulmod(mload(0x77c0), mload(0x6b40), f_q)) -mstore(0x81a0, addmod(mload(0x8100), mload(0x8160), f_q)) +mstore(0x8180, mulmod(mload(0x8160), mload(0x6960), f_q)) +mstore(0x81a0, mulmod(sub(f_q, mload(0x8180)), mload(0x6b80), f_q)) +mstore(0x81c0, mulmod(mload(0x7800), mload(0x6b80), f_q)) +mstore(0x81e0, addmod(mload(0x8140), mload(0x81a0), f_q)) { - let result := mulmod(mload(0x13c0), mload(0x62a0), f_q) -mstore(33216, result) + let result := mulmod(mload(0x13e0), mload(0x62e0), f_q) +mstore(33280, result) } -mstore(0x81e0, mulmod(mload(0x81c0), mload(0x6920), f_q)) -mstore(0x8200, mulmod(sub(f_q, mload(0x81e0)), mload(0x6b60), f_q)) -mstore(0x8220, mulmod(mload(0x77c0), mload(0x6b60), f_q)) -mstore(0x8240, addmod(mload(0x81a0), mload(0x8200), f_q)) +mstore(0x8220, mulmod(mload(0x8200), mload(0x6960), f_q)) +mstore(0x8240, mulmod(sub(f_q, mload(0x8220)), mload(0x6ba0), f_q)) +mstore(0x8260, mulmod(mload(0x7800), mload(0x6ba0), f_q)) +mstore(0x8280, addmod(mload(0x81e0), mload(0x8240), f_q)) { - let result := mulmod(mload(0x13e0), mload(0x62a0), f_q) -mstore(33376, result) + let result := mulmod(mload(0x1400), mload(0x62e0), f_q) +mstore(33440, result) } -mstore(0x8280, mulmod(mload(0x8260), mload(0x6920), f_q)) -mstore(0x82a0, mulmod(sub(f_q, mload(0x8280)), mload(0x6b80), f_q)) -mstore(0x82c0, mulmod(mload(0x77c0), mload(0x6b80), f_q)) -mstore(0x82e0, addmod(mload(0x8240), mload(0x82a0), f_q)) +mstore(0x82c0, mulmod(mload(0x82a0), mload(0x6960), f_q)) +mstore(0x82e0, mulmod(sub(f_q, mload(0x82c0)), mload(0x6bc0), f_q)) +mstore(0x8300, mulmod(mload(0x7800), mload(0x6bc0), f_q)) +mstore(0x8320, addmod(mload(0x8280), mload(0x82e0), f_q)) { - let result := mulmod(mload(0x1400), mload(0x62a0), f_q) -mstore(33536, result) + let result := mulmod(mload(0x1420), mload(0x62e0), f_q) +mstore(33600, result) } -mstore(0x8320, mulmod(mload(0x8300), mload(0x6920), f_q)) -mstore(0x8340, mulmod(sub(f_q, mload(0x8320)), mload(0x6ba0), f_q)) -mstore(0x8360, mulmod(mload(0x77c0), mload(0x6ba0), f_q)) -mstore(0x8380, addmod(mload(0x82e0), mload(0x8340), f_q)) +mstore(0x8360, mulmod(mload(0x8340), mload(0x6960), f_q)) +mstore(0x8380, mulmod(sub(f_q, mload(0x8360)), mload(0x6be0), f_q)) +mstore(0x83a0, mulmod(mload(0x7800), mload(0x6be0), f_q)) +mstore(0x83c0, addmod(mload(0x8320), mload(0x8380), f_q)) { - let result := mulmod(mload(0x1420), mload(0x62a0), f_q) -mstore(33696, result) + let result := mulmod(mload(0x1440), mload(0x62e0), f_q) +mstore(33760, result) } -mstore(0x83c0, mulmod(mload(0x83a0), mload(0x6920), f_q)) -mstore(0x83e0, mulmod(sub(f_q, mload(0x83c0)), mload(0x6bc0), f_q)) -mstore(0x8400, mulmod(mload(0x77c0), mload(0x6bc0), f_q)) -mstore(0x8420, addmod(mload(0x8380), mload(0x83e0), f_q)) +mstore(0x8400, mulmod(mload(0x83e0), mload(0x6960), f_q)) +mstore(0x8420, mulmod(sub(f_q, mload(0x8400)), mload(0x6c00), f_q)) +mstore(0x8440, mulmod(mload(0x7800), mload(0x6c00), f_q)) +mstore(0x8460, addmod(mload(0x83c0), mload(0x8420), f_q)) { - let result := mulmod(mload(0x1440), mload(0x62a0), f_q) -mstore(33856, result) + let result := mulmod(mload(0x1460), mload(0x62e0), f_q) +mstore(33920, result) } -mstore(0x8460, mulmod(mload(0x8440), mload(0x6920), f_q)) -mstore(0x8480, mulmod(sub(f_q, mload(0x8460)), mload(0x6be0), f_q)) -mstore(0x84a0, mulmod(mload(0x77c0), mload(0x6be0), f_q)) -mstore(0x84c0, addmod(mload(0x8420), mload(0x8480), f_q)) +mstore(0x84a0, mulmod(mload(0x8480), mload(0x6960), f_q)) +mstore(0x84c0, mulmod(sub(f_q, mload(0x84a0)), mload(0x6c20), f_q)) +mstore(0x84e0, mulmod(mload(0x7800), mload(0x6c20), f_q)) +mstore(0x8500, addmod(mload(0x8460), mload(0x84c0), f_q)) { - let result := mulmod(mload(0x1460), mload(0x62a0), f_q) -mstore(34016, result) + let result := mulmod(mload(0x1480), mload(0x62e0), f_q) +mstore(34080, result) } -mstore(0x8500, mulmod(mload(0x84e0), mload(0x6920), f_q)) -mstore(0x8520, mulmod(sub(f_q, mload(0x8500)), mload(0x6c00), f_q)) -mstore(0x8540, mulmod(mload(0x77c0), mload(0x6c00), f_q)) -mstore(0x8560, addmod(mload(0x84c0), mload(0x8520), f_q)) +mstore(0x8540, mulmod(mload(0x8520), mload(0x6960), f_q)) +mstore(0x8560, mulmod(sub(f_q, mload(0x8540)), mload(0x6c40), f_q)) +mstore(0x8580, mulmod(mload(0x7800), mload(0x6c40), f_q)) +mstore(0x85a0, addmod(mload(0x8500), mload(0x8560), f_q)) { - let result := mulmod(mload(0x1480), mload(0x62a0), f_q) -mstore(34176, result) + let result := mulmod(mload(0x14a0), mload(0x62e0), f_q) +mstore(34240, result) } -mstore(0x85a0, mulmod(mload(0x8580), mload(0x6920), f_q)) -mstore(0x85c0, mulmod(sub(f_q, mload(0x85a0)), mload(0x6c20), f_q)) -mstore(0x85e0, mulmod(mload(0x77c0), mload(0x6c20), f_q)) -mstore(0x8600, addmod(mload(0x8560), mload(0x85c0), f_q)) +mstore(0x85e0, mulmod(mload(0x85c0), mload(0x6960), f_q)) +mstore(0x8600, mulmod(sub(f_q, mload(0x85e0)), mload(0x6c60), f_q)) +mstore(0x8620, mulmod(mload(0x7800), mload(0x6c60), f_q)) +mstore(0x8640, addmod(mload(0x85a0), mload(0x8600), f_q)) { - let result := mulmod(mload(0x14a0), mload(0x62a0), f_q) -mstore(34336, result) + let result := mulmod(mload(0x14c0), mload(0x62e0), f_q) +mstore(34400, result) } -mstore(0x8640, mulmod(mload(0x8620), mload(0x6920), f_q)) -mstore(0x8660, mulmod(sub(f_q, mload(0x8640)), mload(0x6c40), f_q)) -mstore(0x8680, mulmod(mload(0x77c0), mload(0x6c40), f_q)) -mstore(0x86a0, addmod(mload(0x8600), mload(0x8660), f_q)) +mstore(0x8680, mulmod(mload(0x8660), mload(0x6960), f_q)) +mstore(0x86a0, mulmod(sub(f_q, mload(0x8680)), mload(0x6c80), f_q)) +mstore(0x86c0, mulmod(mload(0x7800), mload(0x6c80), f_q)) +mstore(0x86e0, addmod(mload(0x8640), mload(0x86a0), f_q)) { - let result := mulmod(mload(0x14c0), mload(0x62a0), f_q) -mstore(34496, result) + let result := mulmod(mload(0x14e0), mload(0x62e0), f_q) +mstore(34560, result) } -mstore(0x86e0, mulmod(mload(0x86c0), mload(0x6920), f_q)) -mstore(0x8700, mulmod(sub(f_q, mload(0x86e0)), mload(0x6c60), f_q)) -mstore(0x8720, mulmod(mload(0x77c0), mload(0x6c60), f_q)) -mstore(0x8740, addmod(mload(0x86a0), mload(0x8700), f_q)) +mstore(0x8720, mulmod(mload(0x8700), mload(0x6960), f_q)) +mstore(0x8740, mulmod(sub(f_q, mload(0x8720)), mload(0x6ca0), f_q)) +mstore(0x8760, mulmod(mload(0x7800), mload(0x6ca0), f_q)) +mstore(0x8780, addmod(mload(0x86e0), mload(0x8740), f_q)) { - let result := mulmod(mload(0x1500), mload(0x62a0), f_q) -mstore(34656, result) + let result := mulmod(mload(0x1520), mload(0x62e0), f_q) +mstore(34720, result) } -mstore(0x8780, mulmod(mload(0x8760), mload(0x6920), f_q)) -mstore(0x87a0, mulmod(sub(f_q, mload(0x8780)), mload(0x6c80), f_q)) -mstore(0x87c0, mulmod(mload(0x77c0), mload(0x6c80), f_q)) -mstore(0x87e0, addmod(mload(0x8740), mload(0x87a0), f_q)) +mstore(0x87c0, mulmod(mload(0x87a0), mload(0x6960), f_q)) +mstore(0x87e0, mulmod(sub(f_q, mload(0x87c0)), mload(0x6cc0), f_q)) +mstore(0x8800, mulmod(mload(0x7800), mload(0x6cc0), f_q)) +mstore(0x8820, addmod(mload(0x8780), mload(0x87e0), f_q)) { - let result := mulmod(mload(0x1520), mload(0x62a0), f_q) -mstore(34816, result) + let result := mulmod(mload(0x1540), mload(0x62e0), f_q) +mstore(34880, result) } -mstore(0x8820, mulmod(mload(0x8800), mload(0x6920), f_q)) -mstore(0x8840, mulmod(sub(f_q, mload(0x8820)), mload(0x6ca0), f_q)) -mstore(0x8860, mulmod(mload(0x77c0), mload(0x6ca0), f_q)) -mstore(0x8880, addmod(mload(0x87e0), mload(0x8840), f_q)) +mstore(0x8860, mulmod(mload(0x8840), mload(0x6960), f_q)) +mstore(0x8880, mulmod(sub(f_q, mload(0x8860)), mload(0x6ce0), f_q)) +mstore(0x88a0, mulmod(mload(0x7800), mload(0x6ce0), f_q)) +mstore(0x88c0, addmod(mload(0x8820), mload(0x8880), f_q)) { - let result := mulmod(mload(0x1540), mload(0x62a0), f_q) -mstore(34976, result) + let result := mulmod(mload(0x1560), mload(0x62e0), f_q) +mstore(35040, result) } -mstore(0x88c0, mulmod(mload(0x88a0), mload(0x6920), f_q)) -mstore(0x88e0, mulmod(sub(f_q, mload(0x88c0)), mload(0x6cc0), f_q)) -mstore(0x8900, mulmod(mload(0x77c0), mload(0x6cc0), f_q)) -mstore(0x8920, addmod(mload(0x8880), mload(0x88e0), f_q)) +mstore(0x8900, mulmod(mload(0x88e0), mload(0x6960), f_q)) +mstore(0x8920, mulmod(sub(f_q, mload(0x8900)), mload(0x6d00), f_q)) +mstore(0x8940, mulmod(mload(0x7800), mload(0x6d00), f_q)) +mstore(0x8960, addmod(mload(0x88c0), mload(0x8920), f_q)) { - let result := mulmod(mload(0x1560), mload(0x62a0), f_q) -mstore(35136, result) + let result := mulmod(mload(0x1580), mload(0x62e0), f_q) +mstore(35200, result) } -mstore(0x8960, mulmod(mload(0x8940), mload(0x6920), f_q)) -mstore(0x8980, mulmod(sub(f_q, mload(0x8960)), mload(0x6ce0), f_q)) -mstore(0x89a0, mulmod(mload(0x77c0), mload(0x6ce0), f_q)) -mstore(0x89c0, addmod(mload(0x8920), mload(0x8980), f_q)) +mstore(0x89a0, mulmod(mload(0x8980), mload(0x6960), f_q)) +mstore(0x89c0, mulmod(sub(f_q, mload(0x89a0)), mload(0x6d20), f_q)) +mstore(0x89e0, mulmod(mload(0x7800), mload(0x6d20), f_q)) +mstore(0x8a00, addmod(mload(0x8960), mload(0x89c0), f_q)) { - let result := mulmod(mload(0x1580), mload(0x62a0), f_q) -mstore(35296, result) + let result := mulmod(mload(0x15a0), mload(0x62e0), f_q) +mstore(35360, result) } -mstore(0x8a00, mulmod(mload(0x89e0), mload(0x6920), f_q)) -mstore(0x8a20, mulmod(sub(f_q, mload(0x8a00)), mload(0x6d00), f_q)) -mstore(0x8a40, mulmod(mload(0x77c0), mload(0x6d00), f_q)) -mstore(0x8a60, addmod(mload(0x89c0), mload(0x8a20), f_q)) +mstore(0x8a40, mulmod(mload(0x8a20), mload(0x6960), f_q)) +mstore(0x8a60, mulmod(sub(f_q, mload(0x8a40)), mload(0x6d40), f_q)) +mstore(0x8a80, mulmod(mload(0x7800), mload(0x6d40), f_q)) +mstore(0x8aa0, addmod(mload(0x8a00), mload(0x8a60), f_q)) { - let result := mulmod(mload(0x15a0), mload(0x62a0), f_q) -mstore(35456, result) + let result := mulmod(mload(0x15c0), mload(0x62e0), f_q) +mstore(35520, result) } -mstore(0x8aa0, mulmod(mload(0x8a80), mload(0x6920), f_q)) -mstore(0x8ac0, mulmod(sub(f_q, mload(0x8aa0)), mload(0x6d20), f_q)) -mstore(0x8ae0, mulmod(mload(0x77c0), mload(0x6d20), f_q)) -mstore(0x8b00, addmod(mload(0x8a60), mload(0x8ac0), f_q)) +mstore(0x8ae0, mulmod(mload(0x8ac0), mload(0x6960), f_q)) +mstore(0x8b00, mulmod(sub(f_q, mload(0x8ae0)), mload(0x6d60), f_q)) +mstore(0x8b20, mulmod(mload(0x7800), mload(0x6d60), f_q)) +mstore(0x8b40, addmod(mload(0x8aa0), mload(0x8b00), f_q)) { - let result := mulmod(mload(0x15c0), mload(0x62a0), f_q) -mstore(35616, result) + let result := mulmod(mload(0x15e0), mload(0x62e0), f_q) +mstore(35680, result) } -mstore(0x8b40, mulmod(mload(0x8b20), mload(0x6920), f_q)) -mstore(0x8b60, mulmod(sub(f_q, mload(0x8b40)), mload(0x6d40), f_q)) -mstore(0x8b80, mulmod(mload(0x77c0), mload(0x6d40), f_q)) -mstore(0x8ba0, addmod(mload(0x8b00), mload(0x8b60), f_q)) -{ - let result := mulmod(mload(0x15e0), mload(0x62a0), f_q) -mstore(35776, result) +mstore(0x8b80, mulmod(mload(0x8b60), mload(0x6960), f_q)) +mstore(0x8ba0, mulmod(sub(f_q, mload(0x8b80)), mload(0x6d80), f_q)) +mstore(0x8bc0, mulmod(mload(0x7800), mload(0x6d80), f_q)) +mstore(0x8be0, addmod(mload(0x8b40), mload(0x8ba0), f_q)) +{ + let result := mulmod(mload(0x1600), mload(0x62e0), f_q) +mstore(35840, result) } -mstore(0x8be0, mulmod(mload(0x8bc0), mload(0x6920), f_q)) -mstore(0x8c00, mulmod(sub(f_q, mload(0x8be0)), mload(0x6d60), f_q)) -mstore(0x8c20, mulmod(mload(0x77c0), mload(0x6d60), f_q)) -mstore(0x8c40, addmod(mload(0x8ba0), mload(0x8c00), f_q)) -{ - let result := mulmod(mload(0x1600), mload(0x62a0), f_q) -mstore(35936, result) +mstore(0x8c20, mulmod(mload(0x8c00), mload(0x6960), f_q)) +mstore(0x8c40, mulmod(sub(f_q, mload(0x8c20)), mload(0x6da0), f_q)) +mstore(0x8c60, mulmod(mload(0x7800), mload(0x6da0), f_q)) +mstore(0x8c80, addmod(mload(0x8be0), mload(0x8c40), f_q)) +{ + let result := mulmod(mload(0x1620), mload(0x62e0), f_q) +mstore(36000, result) } -mstore(0x8c80, mulmod(mload(0x8c60), mload(0x6920), f_q)) -mstore(0x8ca0, mulmod(sub(f_q, mload(0x8c80)), mload(0x6d80), f_q)) -mstore(0x8cc0, mulmod(mload(0x77c0), mload(0x6d80), f_q)) -mstore(0x8ce0, addmod(mload(0x8c40), mload(0x8ca0), f_q)) -{ - let result := mulmod(mload(0x1620), mload(0x62a0), f_q) -mstore(36096, result) - } -mstore(0x8d20, mulmod(mload(0x8d00), mload(0x6920), f_q)) -mstore(0x8d40, mulmod(sub(f_q, mload(0x8d20)), mload(0x6da0), f_q)) -mstore(0x8d60, mulmod(mload(0x77c0), mload(0x6da0), f_q)) -mstore(0x8d80, addmod(mload(0x8ce0), mload(0x8d40), f_q)) -{ - let result := mulmod(mload(0x1640), mload(0x62a0), f_q) -mstore(36256, result) - } -mstore(0x8dc0, mulmod(mload(0x8da0), mload(0x6920), f_q)) -mstore(0x8de0, mulmod(sub(f_q, mload(0x8dc0)), mload(0x6dc0), f_q)) -mstore(0x8e00, mulmod(mload(0x77c0), mload(0x6dc0), f_q)) -mstore(0x8e20, addmod(mload(0x8d80), mload(0x8de0), f_q)) -{ - let result := mulmod(mload(0x1660), mload(0x62a0), f_q) -mstore(36416, result) - } -mstore(0x8e60, mulmod(mload(0x8e40), mload(0x6920), f_q)) -mstore(0x8e80, mulmod(sub(f_q, mload(0x8e60)), mload(0x6de0), f_q)) -mstore(0x8ea0, mulmod(mload(0x77c0), mload(0x6de0), f_q)) -mstore(0x8ec0, addmod(mload(0x8e20), mload(0x8e80), f_q)) -{ - let result := mulmod(mload(0x1680), mload(0x62a0), f_q) -mstore(36576, result) - } -mstore(0x8f00, mulmod(mload(0x8ee0), mload(0x6920), f_q)) -mstore(0x8f20, mulmod(sub(f_q, mload(0x8f00)), mload(0x6e00), f_q)) -mstore(0x8f40, mulmod(mload(0x77c0), mload(0x6e00), f_q)) -mstore(0x8f60, addmod(mload(0x8ec0), mload(0x8f20), f_q)) -{ - let result := mulmod(mload(0x16a0), mload(0x62a0), f_q) -mstore(36736, result) - } -mstore(0x8fa0, mulmod(mload(0x8f80), mload(0x6920), f_q)) -mstore(0x8fc0, mulmod(sub(f_q, mload(0x8fa0)), mload(0x6e20), f_q)) -mstore(0x8fe0, mulmod(mload(0x77c0), mload(0x6e20), f_q)) -mstore(0x9000, addmod(mload(0x8f60), mload(0x8fc0), f_q)) -{ - let result := mulmod(mload(0x16c0), mload(0x62a0), f_q) -mstore(36896, result) - } -mstore(0x9040, mulmod(mload(0x9020), mload(0x6920), f_q)) -mstore(0x9060, mulmod(sub(f_q, mload(0x9040)), mload(0x6e40), f_q)) -mstore(0x9080, mulmod(mload(0x77c0), mload(0x6e40), f_q)) -mstore(0x90a0, addmod(mload(0x9000), mload(0x9060), f_q)) -{ - let result := mulmod(mload(0x16e0), mload(0x62a0), f_q) -mstore(37056, result) - } -mstore(0x90e0, mulmod(mload(0x90c0), mload(0x6920), f_q)) -mstore(0x9100, mulmod(sub(f_q, mload(0x90e0)), mload(0x6e60), f_q)) -mstore(0x9120, mulmod(mload(0x77c0), mload(0x6e60), f_q)) -mstore(0x9140, addmod(mload(0x90a0), mload(0x9100), f_q)) -{ - let result := mulmod(mload(0x1700), mload(0x62a0), f_q) -mstore(37216, result) - } -mstore(0x9180, mulmod(mload(0x9160), mload(0x6920), f_q)) -mstore(0x91a0, mulmod(sub(f_q, mload(0x9180)), mload(0x6e80), f_q)) -mstore(0x91c0, mulmod(mload(0x77c0), mload(0x6e80), f_q)) -mstore(0x91e0, addmod(mload(0x9140), mload(0x91a0), f_q)) -{ - let result := mulmod(mload(0x1720), mload(0x62a0), f_q) -mstore(37376, result) - } -mstore(0x9220, mulmod(mload(0x9200), mload(0x6920), f_q)) -mstore(0x9240, mulmod(sub(f_q, mload(0x9220)), mload(0x6ea0), f_q)) -mstore(0x9260, mulmod(mload(0x77c0), mload(0x6ea0), f_q)) -mstore(0x9280, addmod(mload(0x91e0), mload(0x9240), f_q)) -{ - let result := mulmod(mload(0x1740), mload(0x62a0), f_q) -mstore(37536, result) - } -mstore(0x92c0, mulmod(mload(0x92a0), mload(0x6920), f_q)) -mstore(0x92e0, mulmod(sub(f_q, mload(0x92c0)), mload(0x6ec0), f_q)) -mstore(0x9300, mulmod(mload(0x77c0), mload(0x6ec0), f_q)) -mstore(0x9320, addmod(mload(0x9280), mload(0x92e0), f_q)) -mstore(0x9340, mulmod(mload(0x5f80), mload(0x66c0), f_q)) -mstore(0x9360, mulmod(mload(0x5fa0), mload(0x66c0), f_q)) -{ - let result := mulmod(mload(0x5fc0), mload(0x62a0), f_q) -mstore(37760, result) - } -mstore(0x93a0, mulmod(mload(0x9380), mload(0x6920), f_q)) -mstore(0x93c0, mulmod(sub(f_q, mload(0x93a0)), mload(0x6ee0), f_q)) -mstore(0x93e0, mulmod(mload(0x77c0), mload(0x6ee0), f_q)) -mstore(0x9400, mulmod(mload(0x9340), mload(0x6ee0), f_q)) -mstore(0x9420, mulmod(mload(0x9360), mload(0x6ee0), f_q)) -mstore(0x9440, addmod(mload(0x9320), mload(0x93c0), f_q)) -{ - let result := mulmod(mload(0x14e0), mload(0x62a0), f_q) -mstore(37984, result) - } -mstore(0x9480, mulmod(mload(0x9460), mload(0x6920), f_q)) -mstore(0x94a0, mulmod(sub(f_q, mload(0x9480)), mload(0x6f00), f_q)) -mstore(0x94c0, mulmod(mload(0x77c0), mload(0x6f00), f_q)) -mstore(0x94e0, addmod(mload(0x9440), mload(0x94a0), f_q)) -mstore(0x9500, mulmod(mload(0x94e0), mload(0x1e00), f_q)) -mstore(0x9520, mulmod(mload(0x7840), mload(0x1e00), f_q)) -mstore(0x9540, mulmod(mload(0x78c0), mload(0x1e00), f_q)) -mstore(0x9560, mulmod(mload(0x7960), mload(0x1e00), f_q)) -mstore(0x9580, mulmod(mload(0x7a00), mload(0x1e00), f_q)) -mstore(0x95a0, mulmod(mload(0x7aa0), mload(0x1e00), f_q)) -mstore(0x95c0, mulmod(mload(0x7b40), mload(0x1e00), f_q)) -mstore(0x95e0, mulmod(mload(0x7be0), mload(0x1e00), f_q)) -mstore(0x9600, mulmod(mload(0x7c80), mload(0x1e00), f_q)) -mstore(0x9620, mulmod(mload(0x7d20), mload(0x1e00), f_q)) -mstore(0x9640, mulmod(mload(0x7dc0), mload(0x1e00), f_q)) -mstore(0x9660, mulmod(mload(0x7e60), mload(0x1e00), f_q)) -mstore(0x9680, mulmod(mload(0x7f00), mload(0x1e00), f_q)) -mstore(0x96a0, mulmod(mload(0x7fa0), mload(0x1e00), f_q)) -mstore(0x96c0, mulmod(mload(0x8040), mload(0x1e00), f_q)) -mstore(0x96e0, mulmod(mload(0x80e0), mload(0x1e00), f_q)) -mstore(0x9700, mulmod(mload(0x8180), mload(0x1e00), f_q)) -mstore(0x9720, mulmod(mload(0x8220), mload(0x1e00), f_q)) -mstore(0x9740, mulmod(mload(0x82c0), mload(0x1e00), f_q)) -mstore(0x9760, mulmod(mload(0x8360), mload(0x1e00), f_q)) -mstore(0x9780, mulmod(mload(0x8400), mload(0x1e00), f_q)) -mstore(0x97a0, mulmod(mload(0x84a0), mload(0x1e00), f_q)) -mstore(0x97c0, mulmod(mload(0x8540), mload(0x1e00), f_q)) -mstore(0x97e0, mulmod(mload(0x85e0), mload(0x1e00), f_q)) -mstore(0x9800, mulmod(mload(0x8680), mload(0x1e00), f_q)) -mstore(0x9820, mulmod(mload(0x8720), mload(0x1e00), f_q)) -mstore(0x9840, mulmod(mload(0x87c0), mload(0x1e00), f_q)) -mstore(0x9860, mulmod(mload(0x8860), mload(0x1e00), f_q)) -mstore(0x9880, mulmod(mload(0x8900), mload(0x1e00), f_q)) -mstore(0x98a0, mulmod(mload(0x89a0), mload(0x1e00), f_q)) -mstore(0x98c0, mulmod(mload(0x8a40), mload(0x1e00), f_q)) -mstore(0x98e0, mulmod(mload(0x8ae0), mload(0x1e00), f_q)) -mstore(0x9900, mulmod(mload(0x8b80), mload(0x1e00), f_q)) -mstore(0x9920, mulmod(mload(0x8c20), mload(0x1e00), f_q)) -mstore(0x9940, mulmod(mload(0x8cc0), mload(0x1e00), f_q)) -mstore(0x9960, mulmod(mload(0x8d60), mload(0x1e00), f_q)) -mstore(0x9980, mulmod(mload(0x8e00), mload(0x1e00), f_q)) -mstore(0x99a0, mulmod(mload(0x8ea0), mload(0x1e00), f_q)) -mstore(0x99c0, mulmod(mload(0x8f40), mload(0x1e00), f_q)) -mstore(0x99e0, mulmod(mload(0x8fe0), mload(0x1e00), f_q)) -mstore(0x9a00, mulmod(mload(0x9080), mload(0x1e00), f_q)) -mstore(0x9a20, mulmod(mload(0x9120), mload(0x1e00), f_q)) -mstore(0x9a40, mulmod(mload(0x91c0), mload(0x1e00), f_q)) -mstore(0x9a60, mulmod(mload(0x9260), mload(0x1e00), f_q)) -mstore(0x9a80, mulmod(mload(0x9300), mload(0x1e00), f_q)) -mstore(0x9aa0, mulmod(mload(0x93e0), mload(0x1e00), f_q)) -mstore(0x9ac0, mulmod(mload(0x9400), mload(0x1e00), f_q)) -mstore(0x9ae0, mulmod(mload(0x9420), mload(0x1e00), f_q)) -mstore(0x9b00, mulmod(mload(0x94c0), mload(0x1e00), f_q)) -mstore(0x9b20, addmod(mload(0x7660), mload(0x9500), f_q)) -mstore(0x9b40, mulmod(1, mload(0x6700), f_q)) -{ - let result := mulmod(mload(0x1760), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1780), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x17a0), mload(0x6300), f_q), result, f_q) -mstore(39776, result) - } -mstore(0x9b80, mulmod(mload(0x9b60), mload(0x6940), f_q)) -mstore(0x9ba0, mulmod(sub(f_q, mload(0x9b80)), 1, f_q)) -mstore(0x9bc0, mulmod(mload(0x9b40), 1, f_q)) -{ - let result := mulmod(mload(0x17c0), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x17e0), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1800), mload(0x6300), f_q), result, f_q) -mstore(39904, result) - } -mstore(0x9c00, mulmod(mload(0x9be0), mload(0x6940), f_q)) -mstore(0x9c20, mulmod(sub(f_q, mload(0x9c00)), mload(0x1da0), f_q)) -mstore(0x9c40, mulmod(mload(0x9b40), mload(0x1da0), f_q)) -mstore(0x9c60, addmod(mload(0x9ba0), mload(0x9c20), f_q)) -{ - let result := mulmod(mload(0x1820), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1840), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1860), mload(0x6300), f_q), result, f_q) -mstore(40064, result) - } -mstore(0x9ca0, mulmod(mload(0x9c80), mload(0x6940), f_q)) -mstore(0x9cc0, mulmod(sub(f_q, mload(0x9ca0)), mload(0x69a0), f_q)) -mstore(0x9ce0, mulmod(mload(0x9b40), mload(0x69a0), f_q)) -mstore(0x9d00, addmod(mload(0x9c60), mload(0x9cc0), f_q)) -{ - let result := mulmod(mload(0x1880), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x18a0), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x18c0), mload(0x6300), f_q), result, f_q) -mstore(40224, result) - } -mstore(0x9d40, mulmod(mload(0x9d20), mload(0x6940), f_q)) -mstore(0x9d60, mulmod(sub(f_q, mload(0x9d40)), mload(0x69c0), f_q)) -mstore(0x9d80, mulmod(mload(0x9b40), mload(0x69c0), f_q)) -mstore(0x9da0, addmod(mload(0x9d00), mload(0x9d60), f_q)) -{ - let result := mulmod(mload(0x18e0), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1900), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1920), mload(0x6300), f_q), result, f_q) -mstore(40384, result) - } -mstore(0x9de0, mulmod(mload(0x9dc0), mload(0x6940), f_q)) -mstore(0x9e00, mulmod(sub(f_q, mload(0x9de0)), mload(0x69e0), f_q)) -mstore(0x9e20, mulmod(mload(0x9b40), mload(0x69e0), f_q)) -mstore(0x9e40, addmod(mload(0x9da0), mload(0x9e00), f_q)) -{ - let result := mulmod(mload(0x1940), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1960), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1980), mload(0x6300), f_q), result, f_q) -mstore(40544, result) - } -mstore(0x9e80, mulmod(mload(0x9e60), mload(0x6940), f_q)) -mstore(0x9ea0, mulmod(sub(f_q, mload(0x9e80)), mload(0x6a00), f_q)) -mstore(0x9ec0, mulmod(mload(0x9b40), mload(0x6a00), f_q)) -mstore(0x9ee0, addmod(mload(0x9e40), mload(0x9ea0), f_q)) -{ - let result := mulmod(mload(0x19a0), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x19c0), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x19e0), mload(0x6300), f_q), result, f_q) -mstore(40704, result) - } -mstore(0x9f20, mulmod(mload(0x9f00), mload(0x6940), f_q)) -mstore(0x9f40, mulmod(sub(f_q, mload(0x9f20)), mload(0x6a20), f_q)) -mstore(0x9f60, mulmod(mload(0x9b40), mload(0x6a20), f_q)) -mstore(0x9f80, addmod(mload(0x9ee0), mload(0x9f40), f_q)) -{ - let result := mulmod(mload(0x1a00), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1a20), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1a40), mload(0x6300), f_q), result, f_q) -mstore(40864, result) - } -mstore(0x9fc0, mulmod(mload(0x9fa0), mload(0x6940), f_q)) -mstore(0x9fe0, mulmod(sub(f_q, mload(0x9fc0)), mload(0x6a40), f_q)) -mstore(0xa000, mulmod(mload(0x9b40), mload(0x6a40), f_q)) -mstore(0xa020, addmod(mload(0x9f80), mload(0x9fe0), f_q)) -{ - let result := mulmod(mload(0x1a60), mload(0x62c0), f_q) -result := addmod(mulmod(mload(0x1a80), mload(0x62e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1aa0), mload(0x6300), f_q), result, f_q) -mstore(41024, result) - } -mstore(0xa060, mulmod(mload(0xa040), mload(0x6940), f_q)) -mstore(0xa080, mulmod(sub(f_q, mload(0xa060)), mload(0x6a60), f_q)) -mstore(0xa0a0, mulmod(mload(0x9b40), mload(0x6a60), f_q)) -mstore(0xa0c0, addmod(mload(0xa020), mload(0xa080), f_q)) -mstore(0xa0e0, mulmod(mload(0xa0c0), mload(0x6f40), f_q)) -mstore(0xa100, mulmod(mload(0x9bc0), mload(0x6f40), f_q)) -mstore(0xa120, mulmod(mload(0x9c40), mload(0x6f40), f_q)) -mstore(0xa140, mulmod(mload(0x9ce0), mload(0x6f40), f_q)) -mstore(0xa160, mulmod(mload(0x9d80), mload(0x6f40), f_q)) -mstore(0xa180, mulmod(mload(0x9e20), mload(0x6f40), f_q)) -mstore(0xa1a0, mulmod(mload(0x9ec0), mload(0x6f40), f_q)) -mstore(0xa1c0, mulmod(mload(0x9f60), mload(0x6f40), f_q)) -mstore(0xa1e0, mulmod(mload(0xa000), mload(0x6f40), f_q)) -mstore(0xa200, mulmod(mload(0xa0a0), mload(0x6f40), f_q)) -mstore(0xa220, addmod(mload(0x9b20), mload(0xa0e0), f_q)) -mstore(0xa240, mulmod(1, mload(0x6740), f_q)) -{ - let result := mulmod(mload(0x1ac0), mload(0x6340), f_q) -result := addmod(mulmod(mload(0x1ae0), mload(0x6360), f_q), result, f_q) -mstore(41568, result) - } -mstore(0xa280, mulmod(mload(0xa260), mload(0x6960), f_q)) -mstore(0xa2a0, mulmod(sub(f_q, mload(0xa280)), 1, f_q)) -mstore(0xa2c0, mulmod(mload(0xa240), 1, f_q)) -{ - let result := mulmod(mload(0x1b00), mload(0x6340), f_q) -result := addmod(mulmod(mload(0x1b20), mload(0x6360), f_q), result, f_q) -mstore(41696, result) - } -mstore(0xa300, mulmod(mload(0xa2e0), mload(0x6960), f_q)) -mstore(0xa320, mulmod(sub(f_q, mload(0xa300)), mload(0x1da0), f_q)) -mstore(0xa340, mulmod(mload(0xa240), mload(0x1da0), f_q)) -mstore(0xa360, addmod(mload(0xa2a0), mload(0xa320), f_q)) -{ - let result := mulmod(mload(0x1ba0), mload(0x6340), f_q) -result := addmod(mulmod(mload(0x1bc0), mload(0x6360), f_q), result, f_q) -mstore(41856, result) - } -mstore(0xa3a0, mulmod(mload(0xa380), mload(0x6960), f_q)) -mstore(0xa3c0, mulmod(sub(f_q, mload(0xa3a0)), mload(0x69a0), f_q)) -mstore(0xa3e0, mulmod(mload(0xa240), mload(0x69a0), f_q)) -mstore(0xa400, addmod(mload(0xa360), mload(0xa3c0), f_q)) -{ - let result := mulmod(mload(0x1c40), mload(0x6340), f_q) -result := addmod(mulmod(mload(0x1c60), mload(0x6360), f_q), result, f_q) -mstore(42016, result) - } -mstore(0xa440, mulmod(mload(0xa420), mload(0x6960), f_q)) -mstore(0xa460, mulmod(sub(f_q, mload(0xa440)), mload(0x69c0), f_q)) -mstore(0xa480, mulmod(mload(0xa240), mload(0x69c0), f_q)) -mstore(0xa4a0, addmod(mload(0xa400), mload(0xa460), f_q)) -{ - let result := mulmod(mload(0x1ce0), mload(0x6340), f_q) -result := addmod(mulmod(mload(0x1d00), mload(0x6360), f_q), result, f_q) -mstore(42176, result) - } -mstore(0xa4e0, mulmod(mload(0xa4c0), mload(0x6960), f_q)) -mstore(0xa500, mulmod(sub(f_q, mload(0xa4e0)), mload(0x69e0), f_q)) -mstore(0xa520, mulmod(mload(0xa240), mload(0x69e0), f_q)) -mstore(0xa540, addmod(mload(0xa4a0), mload(0xa500), f_q)) -mstore(0xa560, mulmod(mload(0xa540), mload(0x6f60), f_q)) -mstore(0xa580, mulmod(mload(0xa2c0), mload(0x6f60), f_q)) -mstore(0xa5a0, mulmod(mload(0xa340), mload(0x6f60), f_q)) -mstore(0xa5c0, mulmod(mload(0xa3e0), mload(0x6f60), f_q)) -mstore(0xa5e0, mulmod(mload(0xa480), mload(0x6f60), f_q)) -mstore(0xa600, mulmod(mload(0xa520), mload(0x6f60), f_q)) -mstore(0xa620, addmod(mload(0xa220), mload(0xa560), f_q)) -mstore(0xa640, mulmod(1, mload(0x6780), f_q)) -{ - let result := mulmod(mload(0x1b40), mload(0x6380), f_q) -result := addmod(mulmod(mload(0x1b60), mload(0x63a0), f_q), result, f_q) -mstore(42592, result) - } -mstore(0xa680, mulmod(mload(0xa660), mload(0x6980), f_q)) -mstore(0xa6a0, mulmod(sub(f_q, mload(0xa680)), 1, f_q)) -mstore(0xa6c0, mulmod(mload(0xa640), 1, f_q)) -{ - let result := mulmod(mload(0x1be0), mload(0x6380), f_q) -result := addmod(mulmod(mload(0x1c00), mload(0x63a0), f_q), result, f_q) -mstore(42720, result) - } -mstore(0xa700, mulmod(mload(0xa6e0), mload(0x6980), f_q)) -mstore(0xa720, mulmod(sub(f_q, mload(0xa700)), mload(0x1da0), f_q)) -mstore(0xa740, mulmod(mload(0xa640), mload(0x1da0), f_q)) -mstore(0xa760, addmod(mload(0xa6a0), mload(0xa720), f_q)) -{ - let result := mulmod(mload(0x1c80), mload(0x6380), f_q) -result := addmod(mulmod(mload(0x1ca0), mload(0x63a0), f_q), result, f_q) -mstore(42880, result) - } -mstore(0xa7a0, mulmod(mload(0xa780), mload(0x6980), f_q)) -mstore(0xa7c0, mulmod(sub(f_q, mload(0xa7a0)), mload(0x69a0), f_q)) -mstore(0xa7e0, mulmod(mload(0xa640), mload(0x69a0), f_q)) -mstore(0xa800, addmod(mload(0xa760), mload(0xa7c0), f_q)) -{ - let result := mulmod(mload(0x1d20), mload(0x6380), f_q) -result := addmod(mulmod(mload(0x1d40), mload(0x63a0), f_q), result, f_q) -mstore(43040, result) - } -mstore(0xa840, mulmod(mload(0xa820), mload(0x6980), f_q)) -mstore(0xa860, mulmod(sub(f_q, mload(0xa840)), mload(0x69c0), f_q)) -mstore(0xa880, mulmod(mload(0xa640), mload(0x69c0), f_q)) -mstore(0xa8a0, addmod(mload(0xa800), mload(0xa860), f_q)) -mstore(0xa8c0, mulmod(mload(0xa8a0), mload(0x6f80), f_q)) -mstore(0xa8e0, mulmod(mload(0xa6c0), mload(0x6f80), f_q)) -mstore(0xa900, mulmod(mload(0xa740), mload(0x6f80), f_q)) -mstore(0xa920, mulmod(mload(0xa7e0), mload(0x6f80), f_q)) -mstore(0xa940, mulmod(mload(0xa880), mload(0x6f80), f_q)) -mstore(0xa960, addmod(mload(0xa620), mload(0xa8c0), f_q)) -mstore(0xa980, mulmod(1, mload(0x6280), f_q)) -mstore(0xa9a0, mulmod(1, mload(0x1ea0), f_q)) -mstore(0xa9c0, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0xa9e0, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0xaa00, mload(0xa960)) -success := and(eq(staticcall(gas(), 0x7, 0xa9c0, 0x60, 0xa9c0, 0x40), 1), success) -mstore(0xaa20, mload(0xa9c0)) - mstore(0xaa40, mload(0xa9e0)) -mstore(0xaa60, mload(0x20)) - mstore(0xaa80, mload(0x40)) -success := and(eq(staticcall(gas(), 0x6, 0xaa20, 0x80, 0xaa20, 0x40), 1), success) -mstore(0xaaa0, mload(0x60)) - mstore(0xaac0, mload(0x80)) -mstore(0xaae0, mload(0x7680)) -success := and(eq(staticcall(gas(), 0x7, 0xaaa0, 0x60, 0xaaa0, 0x40), 1), success) -mstore(0xab00, mload(0xaa20)) - mstore(0xab20, mload(0xaa40)) -mstore(0xab40, mload(0xaaa0)) - mstore(0xab60, mload(0xaac0)) -success := and(eq(staticcall(gas(), 0x6, 0xab00, 0x80, 0xab00, 0x40), 1), success) -mstore(0xab80, mload(0xa0)) - mstore(0xaba0, mload(0xc0)) -mstore(0xabc0, mload(0x76a0)) -success := and(eq(staticcall(gas(), 0x7, 0xab80, 0x60, 0xab80, 0x40), 1), success) -mstore(0xabe0, mload(0xab00)) - mstore(0xac00, mload(0xab20)) -mstore(0xac20, mload(0xab80)) - mstore(0xac40, mload(0xaba0)) -success := and(eq(staticcall(gas(), 0x6, 0xabe0, 0x80, 0xabe0, 0x40), 1), success) -mstore(0xac60, mload(0xe0)) - mstore(0xac80, mload(0x100)) -mstore(0xaca0, mload(0x76c0)) -success := and(eq(staticcall(gas(), 0x7, 0xac60, 0x60, 0xac60, 0x40), 1), success) -mstore(0xacc0, mload(0xabe0)) - mstore(0xace0, mload(0xac00)) -mstore(0xad00, mload(0xac60)) - mstore(0xad20, mload(0xac80)) -success := and(eq(staticcall(gas(), 0x6, 0xacc0, 0x80, 0xacc0, 0x40), 1), success) -mstore(0xad40, mload(0x120)) - mstore(0xad60, mload(0x140)) -mstore(0xad80, mload(0x76e0)) -success := and(eq(staticcall(gas(), 0x7, 0xad40, 0x60, 0xad40, 0x40), 1), success) -mstore(0xada0, mload(0xacc0)) - mstore(0xadc0, mload(0xace0)) -mstore(0xade0, mload(0xad40)) - mstore(0xae00, mload(0xad60)) -success := and(eq(staticcall(gas(), 0x6, 0xada0, 0x80, 0xada0, 0x40), 1), success) -mstore(0xae20, mload(0x160)) - mstore(0xae40, mload(0x180)) -mstore(0xae60, mload(0x7700)) -success := and(eq(staticcall(gas(), 0x7, 0xae20, 0x60, 0xae20, 0x40), 1), success) -mstore(0xae80, mload(0xada0)) - mstore(0xaea0, mload(0xadc0)) -mstore(0xaec0, mload(0xae20)) - mstore(0xaee0, mload(0xae40)) -success := and(eq(staticcall(gas(), 0x6, 0xae80, 0x80, 0xae80, 0x40), 1), success) -mstore(0xaf00, mload(0x1a0)) - mstore(0xaf20, mload(0x1c0)) -mstore(0xaf40, mload(0x7720)) -success := and(eq(staticcall(gas(), 0x7, 0xaf00, 0x60, 0xaf00, 0x40), 1), success) -mstore(0xaf60, mload(0xae80)) - mstore(0xaf80, mload(0xaea0)) -mstore(0xafa0, mload(0xaf00)) - mstore(0xafc0, mload(0xaf20)) -success := and(eq(staticcall(gas(), 0x6, 0xaf60, 0x80, 0xaf60, 0x40), 1), success) -mstore(0xafe0, mload(0x1e0)) - mstore(0xb000, mload(0x200)) -mstore(0xb020, mload(0x7740)) -success := and(eq(staticcall(gas(), 0x7, 0xafe0, 0x60, 0xafe0, 0x40), 1), success) -mstore(0xb040, mload(0xaf60)) - mstore(0xb060, mload(0xaf80)) -mstore(0xb080, mload(0xafe0)) - mstore(0xb0a0, mload(0xb000)) -success := and(eq(staticcall(gas(), 0x6, 0xb040, 0x80, 0xb040, 0x40), 1), success) -mstore(0xb0c0, mload(0x220)) - mstore(0xb0e0, mload(0x240)) -mstore(0xb100, mload(0x7760)) -success := and(eq(staticcall(gas(), 0x7, 0xb0c0, 0x60, 0xb0c0, 0x40), 1), success) -mstore(0xb120, mload(0xb040)) - mstore(0xb140, mload(0xb060)) -mstore(0xb160, mload(0xb0c0)) - mstore(0xb180, mload(0xb0e0)) -success := and(eq(staticcall(gas(), 0x6, 0xb120, 0x80, 0xb120, 0x40), 1), success) -mstore(0xb1a0, mload(0x260)) - mstore(0xb1c0, mload(0x280)) -mstore(0xb1e0, mload(0x7780)) -success := and(eq(staticcall(gas(), 0x7, 0xb1a0, 0x60, 0xb1a0, 0x40), 1), success) -mstore(0xb200, mload(0xb120)) - mstore(0xb220, mload(0xb140)) -mstore(0xb240, mload(0xb1a0)) - mstore(0xb260, mload(0xb1c0)) -success := and(eq(staticcall(gas(), 0x6, 0xb200, 0x80, 0xb200, 0x40), 1), success) -mstore(0xb280, mload(0x2a0)) - mstore(0xb2a0, mload(0x2c0)) -mstore(0xb2c0, mload(0x77a0)) -success := and(eq(staticcall(gas(), 0x7, 0xb280, 0x60, 0xb280, 0x40), 1), success) -mstore(0xb2e0, mload(0xb200)) - mstore(0xb300, mload(0xb220)) -mstore(0xb320, mload(0xb280)) - mstore(0xb340, mload(0xb2a0)) -success := and(eq(staticcall(gas(), 0x6, 0xb2e0, 0x80, 0xb2e0, 0x40), 1), success) -mstore(0xb360, mload(0x2e0)) - mstore(0xb380, mload(0x300)) -mstore(0xb3a0, mload(0x9520)) -success := and(eq(staticcall(gas(), 0x7, 0xb360, 0x60, 0xb360, 0x40), 1), success) -mstore(0xb3c0, mload(0xb2e0)) - mstore(0xb3e0, mload(0xb300)) -mstore(0xb400, mload(0xb360)) - mstore(0xb420, mload(0xb380)) -success := and(eq(staticcall(gas(), 0x6, 0xb3c0, 0x80, 0xb3c0, 0x40), 1), success) -mstore(0xb440, mload(0x320)) - mstore(0xb460, mload(0x340)) -mstore(0xb480, mload(0x9540)) -success := and(eq(staticcall(gas(), 0x7, 0xb440, 0x60, 0xb440, 0x40), 1), success) -mstore(0xb4a0, mload(0xb3c0)) - mstore(0xb4c0, mload(0xb3e0)) -mstore(0xb4e0, mload(0xb440)) - mstore(0xb500, mload(0xb460)) -success := and(eq(staticcall(gas(), 0x6, 0xb4a0, 0x80, 0xb4a0, 0x40), 1), success) -mstore(0xb520, mload(0x360)) - mstore(0xb540, mload(0x380)) -mstore(0xb560, mload(0x9560)) -success := and(eq(staticcall(gas(), 0x7, 0xb520, 0x60, 0xb520, 0x40), 1), success) -mstore(0xb580, mload(0xb4a0)) - mstore(0xb5a0, mload(0xb4c0)) -mstore(0xb5c0, mload(0xb520)) - mstore(0xb5e0, mload(0xb540)) -success := and(eq(staticcall(gas(), 0x6, 0xb580, 0x80, 0xb580, 0x40), 1), success) -mstore(0xb600, mload(0x3a0)) - mstore(0xb620, mload(0x3c0)) -mstore(0xb640, mload(0x9580)) -success := and(eq(staticcall(gas(), 0x7, 0xb600, 0x60, 0xb600, 0x40), 1), success) -mstore(0xb660, mload(0xb580)) - mstore(0xb680, mload(0xb5a0)) -mstore(0xb6a0, mload(0xb600)) - mstore(0xb6c0, mload(0xb620)) -success := and(eq(staticcall(gas(), 0x6, 0xb660, 0x80, 0xb660, 0x40), 1), success) -mstore(0xb6e0, mload(0x3e0)) - mstore(0xb700, mload(0x400)) -mstore(0xb720, mload(0x95a0)) -success := and(eq(staticcall(gas(), 0x7, 0xb6e0, 0x60, 0xb6e0, 0x40), 1), success) -mstore(0xb740, mload(0xb660)) - mstore(0xb760, mload(0xb680)) -mstore(0xb780, mload(0xb6e0)) - mstore(0xb7a0, mload(0xb700)) -success := and(eq(staticcall(gas(), 0x6, 0xb740, 0x80, 0xb740, 0x40), 1), success) -mstore(0xb7c0, mload(0x420)) - mstore(0xb7e0, mload(0x440)) -mstore(0xb800, mload(0x95c0)) -success := and(eq(staticcall(gas(), 0x7, 0xb7c0, 0x60, 0xb7c0, 0x40), 1), success) -mstore(0xb820, mload(0xb740)) - mstore(0xb840, mload(0xb760)) -mstore(0xb860, mload(0xb7c0)) - mstore(0xb880, mload(0xb7e0)) -success := and(eq(staticcall(gas(), 0x6, 0xb820, 0x80, 0xb820, 0x40), 1), success) -mstore(0xb8a0, mload(0x500)) - mstore(0xb8c0, mload(0x520)) -mstore(0xb8e0, mload(0x95e0)) -success := and(eq(staticcall(gas(), 0x7, 0xb8a0, 0x60, 0xb8a0, 0x40), 1), success) -mstore(0xb900, mload(0xb820)) - mstore(0xb920, mload(0xb840)) -mstore(0xb940, mload(0xb8a0)) - mstore(0xb960, mload(0xb8c0)) -success := and(eq(staticcall(gas(), 0x6, 0xb900, 0x80, 0xb900, 0x40), 1), success) -mstore(0xb980, mload(0x580)) - mstore(0xb9a0, mload(0x5a0)) -mstore(0xb9c0, mload(0x9600)) -success := and(eq(staticcall(gas(), 0x7, 0xb980, 0x60, 0xb980, 0x40), 1), success) -mstore(0xb9e0, mload(0xb900)) - mstore(0xba00, mload(0xb920)) -mstore(0xba20, mload(0xb980)) - mstore(0xba40, mload(0xb9a0)) -success := and(eq(staticcall(gas(), 0x6, 0xb9e0, 0x80, 0xb9e0, 0x40), 1), success) -mstore(0xba60, mload(0x600)) - mstore(0xba80, mload(0x620)) -mstore(0xbaa0, mload(0x9620)) -success := and(eq(staticcall(gas(), 0x7, 0xba60, 0x60, 0xba60, 0x40), 1), success) -mstore(0xbac0, mload(0xb9e0)) - mstore(0xbae0, mload(0xba00)) -mstore(0xbb00, mload(0xba60)) - mstore(0xbb20, mload(0xba80)) -success := and(eq(staticcall(gas(), 0x6, 0xbac0, 0x80, 0xbac0, 0x40), 1), success) -mstore(0xbb40, mload(0x680)) - mstore(0xbb60, mload(0x6a0)) -mstore(0xbb80, mload(0x9640)) -success := and(eq(staticcall(gas(), 0x7, 0xbb40, 0x60, 0xbb40, 0x40), 1), success) -mstore(0xbba0, mload(0xbac0)) - mstore(0xbbc0, mload(0xbae0)) -mstore(0xbbe0, mload(0xbb40)) - mstore(0xbc00, mload(0xbb60)) -success := and(eq(staticcall(gas(), 0x6, 0xbba0, 0x80, 0xbba0, 0x40), 1), success) -mstore(0xbc20, 0x0d58e17dac48ad80bd6e3ee0860b8481516ec7f949c0c73707dbf99e1a659fe8) - mstore(0xbc40, 0x0dd669ba0897a1a969c987d7ed28621976fee2c0de58b62b02cd5de878afb756) -mstore(0xbc60, mload(0x9660)) -success := and(eq(staticcall(gas(), 0x7, 0xbc20, 0x60, 0xbc20, 0x40), 1), success) -mstore(0xbc80, mload(0xbba0)) - mstore(0xbca0, mload(0xbbc0)) -mstore(0xbcc0, mload(0xbc20)) - mstore(0xbce0, mload(0xbc40)) -success := and(eq(staticcall(gas(), 0x6, 0xbc80, 0x80, 0xbc80, 0x40), 1), success) -mstore(0xbd00, 0x287ee5534d4c16ef78de7646cc481ed44aa9377c9f27a39779833f7ddb4bdf7c) - mstore(0xbd20, 0x126ab83eede4df118f9cd4216d70c70da40820443112c18ddc36e2dabb355323) -mstore(0xbd40, mload(0x9680)) -success := and(eq(staticcall(gas(), 0x7, 0xbd00, 0x60, 0xbd00, 0x40), 1), success) -mstore(0xbd60, mload(0xbc80)) - mstore(0xbd80, mload(0xbca0)) -mstore(0xbda0, mload(0xbd00)) - mstore(0xbdc0, mload(0xbd20)) -success := and(eq(staticcall(gas(), 0x6, 0xbd60, 0x80, 0xbd60, 0x40), 1), success) -mstore(0xbde0, 0x17b9541314a49b7e1494dbb9b56c0fe5a2a22b5f40e308f0845c7d5b8700c529) - mstore(0xbe00, 0x1d95155e21064d16f1b5766a5ce76bbae69b692527d80618b8fdf4191ce081c7) -mstore(0xbe20, mload(0x96a0)) -success := and(eq(staticcall(gas(), 0x7, 0xbde0, 0x60, 0xbde0, 0x40), 1), success) -mstore(0xbe40, mload(0xbd60)) - mstore(0xbe60, mload(0xbd80)) -mstore(0xbe80, mload(0xbde0)) - mstore(0xbea0, mload(0xbe00)) -success := and(eq(staticcall(gas(), 0x6, 0xbe40, 0x80, 0xbe40, 0x40), 1), success) -mstore(0xbec0, 0x2034111db6e926233bc5515ff2c4b8f9a87b144f97d985aa02c434e8aa328daf) - mstore(0xbee0, 0x22c50db907ec7756bd04bda8b20af846bef6a44f87a5a4833d148c8f67d19840) -mstore(0xbf00, mload(0x96c0)) -success := and(eq(staticcall(gas(), 0x7, 0xbec0, 0x60, 0xbec0, 0x40), 1), success) -mstore(0xbf20, mload(0xbe40)) - mstore(0xbf40, mload(0xbe60)) -mstore(0xbf60, mload(0xbec0)) - mstore(0xbf80, mload(0xbee0)) -success := and(eq(staticcall(gas(), 0x6, 0xbf20, 0x80, 0xbf20, 0x40), 1), success) -mstore(0xbfa0, 0x0bfaa377fc9f385274cb2543a7e6b9bd6ca8cb08975aa9cf2e27b0b63ec25678) - mstore(0xbfc0, 0x067a2ddfb0832019515ea91c70c84508bbe62c7e6fc871d5a9d23f270fcbe21f) -mstore(0xbfe0, mload(0x96e0)) -success := and(eq(staticcall(gas(), 0x7, 0xbfa0, 0x60, 0xbfa0, 0x40), 1), success) -mstore(0xc000, mload(0xbf20)) - mstore(0xc020, mload(0xbf40)) -mstore(0xc040, mload(0xbfa0)) - mstore(0xc060, mload(0xbfc0)) -success := and(eq(staticcall(gas(), 0x6, 0xc000, 0x80, 0xc000, 0x40), 1), success) -mstore(0xc080, 0x27df0403bb022895b63e08e80610c6849c20c06ff4ef83587e728ceff52603d7) - mstore(0xc0a0, 0x26b2cd2f6ef264bc2195e322d65d289cd78726482c787af5ab5af2446e640d44) -mstore(0xc0c0, mload(0x9700)) -success := and(eq(staticcall(gas(), 0x7, 0xc080, 0x60, 0xc080, 0x40), 1), success) -mstore(0xc0e0, mload(0xc000)) - mstore(0xc100, mload(0xc020)) -mstore(0xc120, mload(0xc080)) - mstore(0xc140, mload(0xc0a0)) -success := and(eq(staticcall(gas(), 0x6, 0xc0e0, 0x80, 0xc0e0, 0x40), 1), success) -mstore(0xc160, 0x26d505e7418a23130727122fa40aec2bc1384fb6634ca5440d6833845fe8c0b4) - mstore(0xc180, 0x23e589635524bac957459885d70ded3c188ad4826b011b2eb9d7557184905e39) -mstore(0xc1a0, mload(0x9720)) -success := and(eq(staticcall(gas(), 0x7, 0xc160, 0x60, 0xc160, 0x40), 1), success) -mstore(0xc1c0, mload(0xc0e0)) - mstore(0xc1e0, mload(0xc100)) -mstore(0xc200, mload(0xc160)) - mstore(0xc220, mload(0xc180)) -success := and(eq(staticcall(gas(), 0x6, 0xc1c0, 0x80, 0xc1c0, 0x40), 1), success) -mstore(0xc240, 0x16be379dea433b52069d1cae3ca8a2998cff058b4c79e825525fd6dd3af2b73b) - mstore(0xc260, 0x2b6a5453eea274e075804701cf459507a0d025e9f1956dcc09bf589f531a6daf) -mstore(0xc280, mload(0x9740)) -success := and(eq(staticcall(gas(), 0x7, 0xc240, 0x60, 0xc240, 0x40), 1), success) -mstore(0xc2a0, mload(0xc1c0)) - mstore(0xc2c0, mload(0xc1e0)) -mstore(0xc2e0, mload(0xc240)) - mstore(0xc300, mload(0xc260)) -success := and(eq(staticcall(gas(), 0x6, 0xc2a0, 0x80, 0xc2a0, 0x40), 1), success) -mstore(0xc320, 0x01f1bfc4883abd91f3c5472fc90ec468a77585e071cb58a0d5d031d3b9dcdd2e) - mstore(0xc340, 0x0ec6ba7d2526983c9719e03dd0b3d8a0e1743220355f257fee21b552db0f59d2) -mstore(0xc360, mload(0x9760)) -success := and(eq(staticcall(gas(), 0x7, 0xc320, 0x60, 0xc320, 0x40), 1), success) -mstore(0xc380, mload(0xc2a0)) - mstore(0xc3a0, mload(0xc2c0)) -mstore(0xc3c0, mload(0xc320)) - mstore(0xc3e0, mload(0xc340)) -success := and(eq(staticcall(gas(), 0x6, 0xc380, 0x80, 0xc380, 0x40), 1), success) -mstore(0xc400, 0x23375e6614de3b6af2e9baca39468ab50bb3ef1d202191efe57a0dbebad79b9c) - mstore(0xc420, 0x2629cff3fdc35cc3d122fbd7d428bb5f9a4e36be60e93f4433e7a9c68dd9f1d2) -mstore(0xc440, mload(0x9780)) -success := and(eq(staticcall(gas(), 0x7, 0xc400, 0x60, 0xc400, 0x40), 1), success) -mstore(0xc460, mload(0xc380)) - mstore(0xc480, mload(0xc3a0)) -mstore(0xc4a0, mload(0xc400)) - mstore(0xc4c0, mload(0xc420)) -success := and(eq(staticcall(gas(), 0x6, 0xc460, 0x80, 0xc460, 0x40), 1), success) -mstore(0xc4e0, 0x1074b75d7f6748d687585d6b273b39a5470856b67554c475006b7f3f700fc95a) - mstore(0xc500, 0x0372448c1e9c9d6d8011910a6a2f073789c252fd630a37cdf57e045dce9d000a) -mstore(0xc520, mload(0x97a0)) -success := and(eq(staticcall(gas(), 0x7, 0xc4e0, 0x60, 0xc4e0, 0x40), 1), success) -mstore(0xc540, mload(0xc460)) - mstore(0xc560, mload(0xc480)) -mstore(0xc580, mload(0xc4e0)) - mstore(0xc5a0, mload(0xc500)) -success := and(eq(staticcall(gas(), 0x6, 0xc540, 0x80, 0xc540, 0x40), 1), success) -mstore(0xc5c0, 0x1a955231d3b39a4beb61f1fd7671755ed3fd58e83f08e8c26d8132b1ed58e760) - mstore(0xc5e0, 0x0887bf4b8c7dfe140be82b230262fd0e25fcc3988de780f0df78d1adc9a49d1d) -mstore(0xc600, mload(0x97c0)) -success := and(eq(staticcall(gas(), 0x7, 0xc5c0, 0x60, 0xc5c0, 0x40), 1), success) -mstore(0xc620, mload(0xc540)) - mstore(0xc640, mload(0xc560)) -mstore(0xc660, mload(0xc5c0)) - mstore(0xc680, mload(0xc5e0)) -success := and(eq(staticcall(gas(), 0x6, 0xc620, 0x80, 0xc620, 0x40), 1), success) -mstore(0xc6a0, 0x23f219889fa802acbfb9215dd3f269cd978b8b3c93b39c62107f68049c3caf10) - mstore(0xc6c0, 0x22b1eaa0949f5e4a512da6dad08dfecfe4088d9dfa39d3b7a8eca564ff8ef733) -mstore(0xc6e0, mload(0x97e0)) -success := and(eq(staticcall(gas(), 0x7, 0xc6a0, 0x60, 0xc6a0, 0x40), 1), success) -mstore(0xc700, mload(0xc620)) - mstore(0xc720, mload(0xc640)) -mstore(0xc740, mload(0xc6a0)) - mstore(0xc760, mload(0xc6c0)) -success := and(eq(staticcall(gas(), 0x6, 0xc700, 0x80, 0xc700, 0x40), 1), success) -mstore(0xc780, 0x1d077bcb3eb8d92ff2401a79f8735921b43299fd034ad79eee10970248de9deb) - mstore(0xc7a0, 0x1d29f9088b8ff05bf43541053fdd50b1d359f8e3e21125726e3a4548d220dd06) -mstore(0xc7c0, mload(0x9800)) -success := and(eq(staticcall(gas(), 0x7, 0xc780, 0x60, 0xc780, 0x40), 1), success) -mstore(0xc7e0, mload(0xc700)) - mstore(0xc800, mload(0xc720)) -mstore(0xc820, mload(0xc780)) - mstore(0xc840, mload(0xc7a0)) -success := and(eq(staticcall(gas(), 0x6, 0xc7e0, 0x80, 0xc7e0, 0x40), 1), success) -mstore(0xc860, 0x13c64c3e31025689345b3e40687e4b799ab68c2f0f2b73d3936b412a0498dc5a) - mstore(0xc880, 0x0ffde2a03f58a747ea8902f2523e8eed2840f83586d7257d55335a1c457ea352) -mstore(0xc8a0, mload(0x9820)) -success := and(eq(staticcall(gas(), 0x7, 0xc860, 0x60, 0xc860, 0x40), 1), success) -mstore(0xc8c0, mload(0xc7e0)) - mstore(0xc8e0, mload(0xc800)) -mstore(0xc900, mload(0xc860)) - mstore(0xc920, mload(0xc880)) -success := and(eq(staticcall(gas(), 0x6, 0xc8c0, 0x80, 0xc8c0, 0x40), 1), success) -mstore(0xc940, 0x133a88efcb58485c666ad7586e3e9ea9bf45bd29794cfd9262724e848bf3295a) - mstore(0xc960, 0x08efade4badc01d5b04dbc82859426c453414ae99ac70644dc24ff225f4d77ac) -mstore(0xc980, mload(0x9840)) -success := and(eq(staticcall(gas(), 0x7, 0xc940, 0x60, 0xc940, 0x40), 1), success) -mstore(0xc9a0, mload(0xc8c0)) - mstore(0xc9c0, mload(0xc8e0)) -mstore(0xc9e0, mload(0xc940)) - mstore(0xca00, mload(0xc960)) -success := and(eq(staticcall(gas(), 0x6, 0xc9a0, 0x80, 0xc9a0, 0x40), 1), success) -mstore(0xca20, 0x013d1032b8e11d792126f3ac9c65c99a52180b1c0dadd60efdf716951eaeee0b) - mstore(0xca40, 0x0575d30be88f6eb67fba0f4e32b8b69f98ea173752d360c2eb3c4f59451b4169) -mstore(0xca60, mload(0x9860)) -success := and(eq(staticcall(gas(), 0x7, 0xca20, 0x60, 0xca20, 0x40), 1), success) -mstore(0xca80, mload(0xc9a0)) - mstore(0xcaa0, mload(0xc9c0)) -mstore(0xcac0, mload(0xca20)) - mstore(0xcae0, mload(0xca40)) -success := and(eq(staticcall(gas(), 0x6, 0xca80, 0x80, 0xca80, 0x40), 1), success) -mstore(0xcb00, 0x2dc1be23f4e8d1e1ecd10574ec5b9233711487d31c19882a8a1c56fd2c80c062) - mstore(0xcb20, 0x0346bb3d0b2390bab67357ea49d91aff24bc31b0cb9a0171b5412992b545fe54) -mstore(0xcb40, mload(0x9880)) -success := and(eq(staticcall(gas(), 0x7, 0xcb00, 0x60, 0xcb00, 0x40), 1), success) -mstore(0xcb60, mload(0xca80)) - mstore(0xcb80, mload(0xcaa0)) -mstore(0xcba0, mload(0xcb00)) - mstore(0xcbc0, mload(0xcb20)) -success := and(eq(staticcall(gas(), 0x6, 0xcb60, 0x80, 0xcb60, 0x40), 1), success) -mstore(0xcbe0, 0x2b07e7287cbfaa5c96bddd3bc4b0907574e55d49f98ae484d9459f62ccaf3c11) - mstore(0xcc00, 0x2c93b14616131841829c3c7c8191781851adb2f924317f4e54898cecbcc64b67) -mstore(0xcc20, mload(0x98a0)) -success := and(eq(staticcall(gas(), 0x7, 0xcbe0, 0x60, 0xcbe0, 0x40), 1), success) -mstore(0xcc40, mload(0xcb60)) - mstore(0xcc60, mload(0xcb80)) -mstore(0xcc80, mload(0xcbe0)) - mstore(0xcca0, mload(0xcc00)) -success := and(eq(staticcall(gas(), 0x6, 0xcc40, 0x80, 0xcc40, 0x40), 1), success) -mstore(0xccc0, 0x251da073e7deb6f919ab09068ecfb89b79f9bab3d688a54498f2864ee2cc75bd) - mstore(0xcce0, 0x16af3fa724e11b625ca16cb71afa2429033ca404c333e9ae8b18b6e7038c9cce) -mstore(0xcd00, mload(0x98c0)) -success := and(eq(staticcall(gas(), 0x7, 0xccc0, 0x60, 0xccc0, 0x40), 1), success) -mstore(0xcd20, mload(0xcc40)) - mstore(0xcd40, mload(0xcc60)) -mstore(0xcd60, mload(0xccc0)) - mstore(0xcd80, mload(0xcce0)) -success := and(eq(staticcall(gas(), 0x6, 0xcd20, 0x80, 0xcd20, 0x40), 1), success) -mstore(0xcda0, 0x182eeeae43f8972a706535957951a18428f19aa4f326b509a7db6ac8ecb9ffc9) - mstore(0xcdc0, 0x1e4a73abf29d74f0cf6b064c991ce1aacbb1c0271c2d7aff91c167ffb4a4e951) -mstore(0xcde0, mload(0x98e0)) -success := and(eq(staticcall(gas(), 0x7, 0xcda0, 0x60, 0xcda0, 0x40), 1), success) -mstore(0xce00, mload(0xcd20)) - mstore(0xce20, mload(0xcd40)) -mstore(0xce40, mload(0xcda0)) - mstore(0xce60, mload(0xcdc0)) -success := and(eq(staticcall(gas(), 0x6, 0xce00, 0x80, 0xce00, 0x40), 1), success) -mstore(0xce80, 0x01b2ed083f41f01a03a933c5f67bd655c01a7e17a84c7b046632f349dbcf8e79) - mstore(0xcea0, 0x1ab53cdc69aba969007762595da8eb7b6d2924d4920fbf0571bb6a6e41d8ec07) -mstore(0xcec0, mload(0x9900)) -success := and(eq(staticcall(gas(), 0x7, 0xce80, 0x60, 0xce80, 0x40), 1), success) -mstore(0xcee0, mload(0xce00)) - mstore(0xcf00, mload(0xce20)) -mstore(0xcf20, mload(0xce80)) - mstore(0xcf40, mload(0xcea0)) -success := and(eq(staticcall(gas(), 0x6, 0xcee0, 0x80, 0xcee0, 0x40), 1), success) -mstore(0xcf60, 0x2aa30b62cae152e11c3a5cbe6129a9a2829cb3476877abb7dfdd6af8db7528a6) - mstore(0xcf80, 0x169b225fc423075010a83129825c4000d58e1f4aa6fbc83988c4b8d5364a95fd) -mstore(0xcfa0, mload(0x9920)) -success := and(eq(staticcall(gas(), 0x7, 0xcf60, 0x60, 0xcf60, 0x40), 1), success) -mstore(0xcfc0, mload(0xcee0)) - mstore(0xcfe0, mload(0xcf00)) -mstore(0xd000, mload(0xcf60)) - mstore(0xd020, mload(0xcf80)) -success := and(eq(staticcall(gas(), 0x6, 0xcfc0, 0x80, 0xcfc0, 0x40), 1), success) -mstore(0xd040, 0x1b14bb8fadf0343507daddd04c1de87885443648b8cc6769d05f6b4f5fbfc9e9) - mstore(0xd060, 0x225f8f14be1a2486659ef1059e7d983b44f76b54e6e3ef9c9162f36d47bdb600) -mstore(0xd080, mload(0x9940)) -success := and(eq(staticcall(gas(), 0x7, 0xd040, 0x60, 0xd040, 0x40), 1), success) -mstore(0xd0a0, mload(0xcfc0)) - mstore(0xd0c0, mload(0xcfe0)) -mstore(0xd0e0, mload(0xd040)) - mstore(0xd100, mload(0xd060)) -success := and(eq(staticcall(gas(), 0x6, 0xd0a0, 0x80, 0xd0a0, 0x40), 1), success) -mstore(0xd120, 0x2aa9bb3cc26b9bd997fa7369734416e650902039d1f861d132889986842f9a99) - mstore(0xd140, 0x2917f887d7af8c81f57b8b3bb8ba304c37dd03493812f44b644177860512a8d2) -mstore(0xd160, mload(0x9960)) -success := and(eq(staticcall(gas(), 0x7, 0xd120, 0x60, 0xd120, 0x40), 1), success) -mstore(0xd180, mload(0xd0a0)) - mstore(0xd1a0, mload(0xd0c0)) -mstore(0xd1c0, mload(0xd120)) - mstore(0xd1e0, mload(0xd140)) -success := and(eq(staticcall(gas(), 0x6, 0xd180, 0x80, 0xd180, 0x40), 1), success) -mstore(0xd200, 0x143bc93996e69f90412747c4b69bc869458e5d15452a878f4bec6e1e2c38d9da) - mstore(0xd220, 0x15655d7fa7031971c4712a26eb68fa4e9665e48cb0b70a111eeb382f6cdff21b) -mstore(0xd240, mload(0x9980)) -success := and(eq(staticcall(gas(), 0x7, 0xd200, 0x60, 0xd200, 0x40), 1), success) -mstore(0xd260, mload(0xd180)) - mstore(0xd280, mload(0xd1a0)) -mstore(0xd2a0, mload(0xd200)) - mstore(0xd2c0, mload(0xd220)) -success := and(eq(staticcall(gas(), 0x6, 0xd260, 0x80, 0xd260, 0x40), 1), success) -mstore(0xd2e0, 0x10c5427c2dd73030ae7dcf068f91be28b1070042874abd2203321738306cea3a) - mstore(0xd300, 0x17cf0cedab2ae229737f6a1289232ab650f8f403d7dfda9d442d606365c978b6) -mstore(0xd320, mload(0x99a0)) -success := and(eq(staticcall(gas(), 0x7, 0xd2e0, 0x60, 0xd2e0, 0x40), 1), success) -mstore(0xd340, mload(0xd260)) - mstore(0xd360, mload(0xd280)) -mstore(0xd380, mload(0xd2e0)) - mstore(0xd3a0, mload(0xd300)) -success := and(eq(staticcall(gas(), 0x6, 0xd340, 0x80, 0xd340, 0x40), 1), success) -mstore(0xd3c0, 0x077831380b2a00e9a381df8467516b5288a049179cea3ff469d4dd3fc129ba58) - mstore(0xd3e0, 0x0bf7ba2bde203fa869af0245a58723e2564e1123195a100798c77b3ff78432c2) -mstore(0xd400, mload(0x99c0)) -success := and(eq(staticcall(gas(), 0x7, 0xd3c0, 0x60, 0xd3c0, 0x40), 1), success) -mstore(0xd420, mload(0xd340)) - mstore(0xd440, mload(0xd360)) -mstore(0xd460, mload(0xd3c0)) - mstore(0xd480, mload(0xd3e0)) -success := and(eq(staticcall(gas(), 0x6, 0xd420, 0x80, 0xd420, 0x40), 1), success) -mstore(0xd4a0, 0x26a40c9db7313bdab77200c90466a8e21ffdd3be1b781c3864d471144ab36fd1) - mstore(0xd4c0, 0x187c611dca909e58bf03e4727a75a9dc95ab44853ac233cbdf91c75fee97ec01) -mstore(0xd4e0, mload(0x99e0)) -success := and(eq(staticcall(gas(), 0x7, 0xd4a0, 0x60, 0xd4a0, 0x40), 1), success) -mstore(0xd500, mload(0xd420)) - mstore(0xd520, mload(0xd440)) -mstore(0xd540, mload(0xd4a0)) - mstore(0xd560, mload(0xd4c0)) -success := and(eq(staticcall(gas(), 0x6, 0xd500, 0x80, 0xd500, 0x40), 1), success) -mstore(0xd580, 0x2bf6f9c6cc0240e259bde4eb7d434bf74a95f6c05ae9136b79c730acd99344ed) - mstore(0xd5a0, 0x1fa1e3e13ff630d4abbb9af9fa7a962eadbbf4e3051333f1bd19fed1fe1f4977) -mstore(0xd5c0, mload(0x9a00)) -success := and(eq(staticcall(gas(), 0x7, 0xd580, 0x60, 0xd580, 0x40), 1), success) -mstore(0xd5e0, mload(0xd500)) - mstore(0xd600, mload(0xd520)) -mstore(0xd620, mload(0xd580)) - mstore(0xd640, mload(0xd5a0)) -success := and(eq(staticcall(gas(), 0x6, 0xd5e0, 0x80, 0xd5e0, 0x40), 1), success) -mstore(0xd660, 0x0fa38ab0641196b9d013c6bf0b7643d05af7f23ac7482779994f48d97531d163) - mstore(0xd680, 0x04bc64747b4ac3ee2436ed7d0d76938ccb9dd9c47db0ebd331796b99a8eb29c3) -mstore(0xd6a0, mload(0x9a20)) -success := and(eq(staticcall(gas(), 0x7, 0xd660, 0x60, 0xd660, 0x40), 1), success) -mstore(0xd6c0, mload(0xd5e0)) - mstore(0xd6e0, mload(0xd600)) -mstore(0xd700, mload(0xd660)) - mstore(0xd720, mload(0xd680)) -success := and(eq(staticcall(gas(), 0x6, 0xd6c0, 0x80, 0xd6c0, 0x40), 1), success) -mstore(0xd740, 0x23c70057f528d84619872da36427a2404f8abc62017e10cf858cfd700fe8ca74) - mstore(0xd760, 0x0e70d8f3b7c9d10b04c203e22bdd9edf4eaf8d7b0c9cda2051756e0babf72ca6) -mstore(0xd780, mload(0x9a40)) -success := and(eq(staticcall(gas(), 0x7, 0xd740, 0x60, 0xd740, 0x40), 1), success) -mstore(0xd7a0, mload(0xd6c0)) - mstore(0xd7c0, mload(0xd6e0)) -mstore(0xd7e0, mload(0xd740)) - mstore(0xd800, mload(0xd760)) -success := and(eq(staticcall(gas(), 0x6, 0xd7a0, 0x80, 0xd7a0, 0x40), 1), success) -mstore(0xd820, 0x1badd995f73c1a90cee0eccb29db1832afa27c40efc00bbcf4b09d1438bb7063) - mstore(0xd840, 0x18fb86818e520e0c451b4c129f689f996680678c6528010238ed19f67cb8bbd0) -mstore(0xd860, mload(0x9a60)) -success := and(eq(staticcall(gas(), 0x7, 0xd820, 0x60, 0xd820, 0x40), 1), success) -mstore(0xd880, mload(0xd7a0)) - mstore(0xd8a0, mload(0xd7c0)) -mstore(0xd8c0, mload(0xd820)) - mstore(0xd8e0, mload(0xd840)) -success := and(eq(staticcall(gas(), 0x6, 0xd880, 0x80, 0xd880, 0x40), 1), success) -mstore(0xd900, 0x2030352b326a1a78c487e85f5699f86dfc7278cfbffd935a769ce088d0d4f3d7) - mstore(0xd920, 0x194cb77a926a42ac8cb44cac8bd059d57d9619627816fdcb6abd1e8a58d94020) -mstore(0xd940, mload(0x9a80)) -success := and(eq(staticcall(gas(), 0x7, 0xd900, 0x60, 0xd900, 0x40), 1), success) -mstore(0xd960, mload(0xd880)) - mstore(0xd980, mload(0xd8a0)) -mstore(0xd9a0, mload(0xd900)) - mstore(0xd9c0, mload(0xd920)) -success := and(eq(staticcall(gas(), 0x6, 0xd960, 0x80, 0xd960, 0x40), 1), success) -mstore(0xd9e0, mload(0xba0)) - mstore(0xda00, mload(0xbc0)) -mstore(0xda20, mload(0x9aa0)) -success := and(eq(staticcall(gas(), 0x7, 0xd9e0, 0x60, 0xd9e0, 0x40), 1), success) -mstore(0xda40, mload(0xd960)) - mstore(0xda60, mload(0xd980)) -mstore(0xda80, mload(0xd9e0)) - mstore(0xdaa0, mload(0xda00)) -success := and(eq(staticcall(gas(), 0x6, 0xda40, 0x80, 0xda40, 0x40), 1), success) -mstore(0xdac0, mload(0xbe0)) - mstore(0xdae0, mload(0xc00)) -mstore(0xdb00, mload(0x9ac0)) -success := and(eq(staticcall(gas(), 0x7, 0xdac0, 0x60, 0xdac0, 0x40), 1), success) -mstore(0xdb20, mload(0xda40)) - mstore(0xdb40, mload(0xda60)) -mstore(0xdb60, mload(0xdac0)) - mstore(0xdb80, mload(0xdae0)) -success := and(eq(staticcall(gas(), 0x6, 0xdb20, 0x80, 0xdb20, 0x40), 1), success) -mstore(0xdba0, mload(0xc20)) - mstore(0xdbc0, mload(0xc40)) -mstore(0xdbe0, mload(0x9ae0)) -success := and(eq(staticcall(gas(), 0x7, 0xdba0, 0x60, 0xdba0, 0x40), 1), success) -mstore(0xdc00, mload(0xdb20)) - mstore(0xdc20, mload(0xdb40)) -mstore(0xdc40, mload(0xdba0)) - mstore(0xdc60, mload(0xdbc0)) -success := and(eq(staticcall(gas(), 0x6, 0xdc00, 0x80, 0xdc00, 0x40), 1), success) -mstore(0xdc80, mload(0xb00)) - mstore(0xdca0, mload(0xb20)) -mstore(0xdcc0, mload(0x9b00)) -success := and(eq(staticcall(gas(), 0x7, 0xdc80, 0x60, 0xdc80, 0x40), 1), success) -mstore(0xdce0, mload(0xdc00)) - mstore(0xdd00, mload(0xdc20)) -mstore(0xdd20, mload(0xdc80)) - mstore(0xdd40, mload(0xdca0)) -success := and(eq(staticcall(gas(), 0x6, 0xdce0, 0x80, 0xdce0, 0x40), 1), success) -mstore(0xdd60, mload(0x780)) - mstore(0xdd80, mload(0x7a0)) -mstore(0xdda0, mload(0xa100)) -success := and(eq(staticcall(gas(), 0x7, 0xdd60, 0x60, 0xdd60, 0x40), 1), success) -mstore(0xddc0, mload(0xdce0)) - mstore(0xdde0, mload(0xdd00)) -mstore(0xde00, mload(0xdd60)) - mstore(0xde20, mload(0xdd80)) -success := and(eq(staticcall(gas(), 0x6, 0xddc0, 0x80, 0xddc0, 0x40), 1), success) -mstore(0xde40, mload(0x7c0)) - mstore(0xde60, mload(0x7e0)) -mstore(0xde80, mload(0xa120)) -success := and(eq(staticcall(gas(), 0x7, 0xde40, 0x60, 0xde40, 0x40), 1), success) -mstore(0xdea0, mload(0xddc0)) - mstore(0xdec0, mload(0xdde0)) -mstore(0xdee0, mload(0xde40)) - mstore(0xdf00, mload(0xde60)) -success := and(eq(staticcall(gas(), 0x6, 0xdea0, 0x80, 0xdea0, 0x40), 1), success) -mstore(0xdf20, mload(0x800)) - mstore(0xdf40, mload(0x820)) -mstore(0xdf60, mload(0xa140)) -success := and(eq(staticcall(gas(), 0x7, 0xdf20, 0x60, 0xdf20, 0x40), 1), success) -mstore(0xdf80, mload(0xdea0)) - mstore(0xdfa0, mload(0xdec0)) -mstore(0xdfc0, mload(0xdf20)) - mstore(0xdfe0, mload(0xdf40)) -success := and(eq(staticcall(gas(), 0x6, 0xdf80, 0x80, 0xdf80, 0x40), 1), success) -mstore(0xe000, mload(0x840)) - mstore(0xe020, mload(0x860)) -mstore(0xe040, mload(0xa160)) -success := and(eq(staticcall(gas(), 0x7, 0xe000, 0x60, 0xe000, 0x40), 1), success) -mstore(0xe060, mload(0xdf80)) - mstore(0xe080, mload(0xdfa0)) -mstore(0xe0a0, mload(0xe000)) - mstore(0xe0c0, mload(0xe020)) -success := and(eq(staticcall(gas(), 0x6, 0xe060, 0x80, 0xe060, 0x40), 1), success) -mstore(0xe0e0, mload(0x880)) - mstore(0xe100, mload(0x8a0)) -mstore(0xe120, mload(0xa180)) -success := and(eq(staticcall(gas(), 0x7, 0xe0e0, 0x60, 0xe0e0, 0x40), 1), success) -mstore(0xe140, mload(0xe060)) - mstore(0xe160, mload(0xe080)) -mstore(0xe180, mload(0xe0e0)) - mstore(0xe1a0, mload(0xe100)) -success := and(eq(staticcall(gas(), 0x6, 0xe140, 0x80, 0xe140, 0x40), 1), success) -mstore(0xe1c0, mload(0x8c0)) - mstore(0xe1e0, mload(0x8e0)) -mstore(0xe200, mload(0xa1a0)) -success := and(eq(staticcall(gas(), 0x7, 0xe1c0, 0x60, 0xe1c0, 0x40), 1), success) -mstore(0xe220, mload(0xe140)) - mstore(0xe240, mload(0xe160)) -mstore(0xe260, mload(0xe1c0)) - mstore(0xe280, mload(0xe1e0)) -success := and(eq(staticcall(gas(), 0x6, 0xe220, 0x80, 0xe220, 0x40), 1), success) -mstore(0xe2a0, mload(0x900)) - mstore(0xe2c0, mload(0x920)) -mstore(0xe2e0, mload(0xa1c0)) -success := and(eq(staticcall(gas(), 0x7, 0xe2a0, 0x60, 0xe2a0, 0x40), 1), success) -mstore(0xe300, mload(0xe220)) - mstore(0xe320, mload(0xe240)) -mstore(0xe340, mload(0xe2a0)) - mstore(0xe360, mload(0xe2c0)) -success := and(eq(staticcall(gas(), 0x6, 0xe300, 0x80, 0xe300, 0x40), 1), success) -mstore(0xe380, mload(0x940)) - mstore(0xe3a0, mload(0x960)) -mstore(0xe3c0, mload(0xa1e0)) -success := and(eq(staticcall(gas(), 0x7, 0xe380, 0x60, 0xe380, 0x40), 1), success) -mstore(0xe3e0, mload(0xe300)) - mstore(0xe400, mload(0xe320)) -mstore(0xe420, mload(0xe380)) - mstore(0xe440, mload(0xe3a0)) -success := and(eq(staticcall(gas(), 0x6, 0xe3e0, 0x80, 0xe3e0, 0x40), 1), success) -mstore(0xe460, mload(0x980)) - mstore(0xe480, mload(0x9a0)) -mstore(0xe4a0, mload(0xa200)) -success := and(eq(staticcall(gas(), 0x7, 0xe460, 0x60, 0xe460, 0x40), 1), success) -mstore(0xe4c0, mload(0xe3e0)) - mstore(0xe4e0, mload(0xe400)) -mstore(0xe500, mload(0xe460)) - mstore(0xe520, mload(0xe480)) -success := and(eq(staticcall(gas(), 0x6, 0xe4c0, 0x80, 0xe4c0, 0x40), 1), success) -mstore(0xe540, mload(0x9c0)) - mstore(0xe560, mload(0x9e0)) -mstore(0xe580, mload(0xa580)) -success := and(eq(staticcall(gas(), 0x7, 0xe540, 0x60, 0xe540, 0x40), 1), success) -mstore(0xe5a0, mload(0xe4c0)) - mstore(0xe5c0, mload(0xe4e0)) -mstore(0xe5e0, mload(0xe540)) - mstore(0xe600, mload(0xe560)) -success := and(eq(staticcall(gas(), 0x6, 0xe5a0, 0x80, 0xe5a0, 0x40), 1), success) -mstore(0xe620, mload(0xa00)) - mstore(0xe640, mload(0xa20)) -mstore(0xe660, mload(0xa5a0)) -success := and(eq(staticcall(gas(), 0x7, 0xe620, 0x60, 0xe620, 0x40), 1), success) -mstore(0xe680, mload(0xe5a0)) - mstore(0xe6a0, mload(0xe5c0)) -mstore(0xe6c0, mload(0xe620)) - mstore(0xe6e0, mload(0xe640)) -success := and(eq(staticcall(gas(), 0x6, 0xe680, 0x80, 0xe680, 0x40), 1), success) -mstore(0xe700, mload(0xa40)) - mstore(0xe720, mload(0xa60)) -mstore(0xe740, mload(0xa5c0)) -success := and(eq(staticcall(gas(), 0x7, 0xe700, 0x60, 0xe700, 0x40), 1), success) -mstore(0xe760, mload(0xe680)) - mstore(0xe780, mload(0xe6a0)) -mstore(0xe7a0, mload(0xe700)) - mstore(0xe7c0, mload(0xe720)) -success := and(eq(staticcall(gas(), 0x6, 0xe760, 0x80, 0xe760, 0x40), 1), success) -mstore(0xe7e0, mload(0xa80)) - mstore(0xe800, mload(0xaa0)) -mstore(0xe820, mload(0xa5e0)) -success := and(eq(staticcall(gas(), 0x7, 0xe7e0, 0x60, 0xe7e0, 0x40), 1), success) -mstore(0xe840, mload(0xe760)) - mstore(0xe860, mload(0xe780)) -mstore(0xe880, mload(0xe7e0)) - mstore(0xe8a0, mload(0xe800)) -success := and(eq(staticcall(gas(), 0x6, 0xe840, 0x80, 0xe840, 0x40), 1), success) -mstore(0xe8c0, mload(0xac0)) - mstore(0xe8e0, mload(0xae0)) -mstore(0xe900, mload(0xa600)) -success := and(eq(staticcall(gas(), 0x7, 0xe8c0, 0x60, 0xe8c0, 0x40), 1), success) -mstore(0xe920, mload(0xe840)) - mstore(0xe940, mload(0xe860)) -mstore(0xe960, mload(0xe8c0)) - mstore(0xe980, mload(0xe8e0)) -success := and(eq(staticcall(gas(), 0x6, 0xe920, 0x80, 0xe920, 0x40), 1), success) -mstore(0xe9a0, mload(0x4c0)) - mstore(0xe9c0, mload(0x4e0)) -mstore(0xe9e0, mload(0xa8e0)) -success := and(eq(staticcall(gas(), 0x7, 0xe9a0, 0x60, 0xe9a0, 0x40), 1), success) -mstore(0xea00, mload(0xe920)) - mstore(0xea20, mload(0xe940)) -mstore(0xea40, mload(0xe9a0)) - mstore(0xea60, mload(0xe9c0)) -success := and(eq(staticcall(gas(), 0x6, 0xea00, 0x80, 0xea00, 0x40), 1), success) -mstore(0xea80, mload(0x540)) - mstore(0xeaa0, mload(0x560)) -mstore(0xeac0, mload(0xa900)) -success := and(eq(staticcall(gas(), 0x7, 0xea80, 0x60, 0xea80, 0x40), 1), success) -mstore(0xeae0, mload(0xea00)) - mstore(0xeb00, mload(0xea20)) -mstore(0xeb20, mload(0xea80)) - mstore(0xeb40, mload(0xeaa0)) -success := and(eq(staticcall(gas(), 0x6, 0xeae0, 0x80, 0xeae0, 0x40), 1), success) -mstore(0xeb60, mload(0x5c0)) - mstore(0xeb80, mload(0x5e0)) -mstore(0xeba0, mload(0xa920)) -success := and(eq(staticcall(gas(), 0x7, 0xeb60, 0x60, 0xeb60, 0x40), 1), success) -mstore(0xebc0, mload(0xeae0)) - mstore(0xebe0, mload(0xeb00)) -mstore(0xec00, mload(0xeb60)) - mstore(0xec20, mload(0xeb80)) -success := and(eq(staticcall(gas(), 0x6, 0xebc0, 0x80, 0xebc0, 0x40), 1), success) -mstore(0xec40, mload(0x640)) - mstore(0xec60, mload(0x660)) -mstore(0xec80, mload(0xa940)) -success := and(eq(staticcall(gas(), 0x7, 0xec40, 0x60, 0xec40, 0x40), 1), success) -mstore(0xeca0, mload(0xebc0)) - mstore(0xecc0, mload(0xebe0)) -mstore(0xece0, mload(0xec40)) - mstore(0xed00, mload(0xec60)) -success := and(eq(staticcall(gas(), 0x6, 0xeca0, 0x80, 0xeca0, 0x40), 1), success) -mstore(0xed20, mload(0x1e40)) - mstore(0xed40, mload(0x1e60)) -mstore(0xed60, sub(f_q, mload(0xa980))) -success := and(eq(staticcall(gas(), 0x7, 0xed20, 0x60, 0xed20, 0x40), 1), success) -mstore(0xed80, mload(0xeca0)) - mstore(0xeda0, mload(0xecc0)) -mstore(0xedc0, mload(0xed20)) - mstore(0xede0, mload(0xed40)) -success := and(eq(staticcall(gas(), 0x6, 0xed80, 0x80, 0xed80, 0x40), 1), success) -mstore(0xee00, mload(0x1ee0)) - mstore(0xee20, mload(0x1f00)) -mstore(0xee40, mload(0xa9a0)) -success := and(eq(staticcall(gas(), 0x7, 0xee00, 0x60, 0xee00, 0x40), 1), success) -mstore(0xee60, mload(0xed80)) - mstore(0xee80, mload(0xeda0)) -mstore(0xeea0, mload(0xee00)) - mstore(0xeec0, mload(0xee20)) -success := and(eq(staticcall(gas(), 0x6, 0xee60, 0x80, 0xee60, 0x40), 1), success) -mstore(0xeee0, mload(0xee60)) - mstore(0xef00, mload(0xee80)) -mstore(0xef20, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0xef40, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0xef60, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0xef80, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0xefa0, mload(0x1ee0)) - mstore(0xefc0, mload(0x1f00)) -mstore(0xefe0, 0x0181624e80f3d6ae28df7e01eaeab1c0e919877a3b8a6b7fbc69a6817d596ea2) - mstore(0xf000, 0x1783d30dcb12d259bb89098addf6280fa4b653be7a152542a28f7b926e27e648) - mstore(0xf020, 0x00ae44489d41a0d179e2dfdc03bddd883b7109f8b6ae316a59e815c1a6b35304) - mstore(0xf040, 0x0b2147ab62a386bd63e6de1522109b8c9588ab466f5aadfde8c41ca3749423ee) -success := and(eq(staticcall(gas(), 0x8, 0xeee0, 0x180, 0xeee0, 0x20), 1), success) -success := and(eq(mload(0xeee0), 1), success) +mstore(0x8cc0, mulmod(mload(0x8ca0), mload(0x6960), f_q)) +mstore(0x8ce0, mulmod(sub(f_q, mload(0x8cc0)), mload(0x6dc0), f_q)) +mstore(0x8d00, mulmod(mload(0x7800), mload(0x6dc0), f_q)) +mstore(0x8d20, addmod(mload(0x8c80), mload(0x8ce0), f_q)) +{ + let result := mulmod(mload(0x1640), mload(0x62e0), f_q) +mstore(36160, result) + } +mstore(0x8d60, mulmod(mload(0x8d40), mload(0x6960), f_q)) +mstore(0x8d80, mulmod(sub(f_q, mload(0x8d60)), mload(0x6de0), f_q)) +mstore(0x8da0, mulmod(mload(0x7800), mload(0x6de0), f_q)) +mstore(0x8dc0, addmod(mload(0x8d20), mload(0x8d80), f_q)) +{ + let result := mulmod(mload(0x1660), mload(0x62e0), f_q) +mstore(36320, result) + } +mstore(0x8e00, mulmod(mload(0x8de0), mload(0x6960), f_q)) +mstore(0x8e20, mulmod(sub(f_q, mload(0x8e00)), mload(0x6e00), f_q)) +mstore(0x8e40, mulmod(mload(0x7800), mload(0x6e00), f_q)) +mstore(0x8e60, addmod(mload(0x8dc0), mload(0x8e20), f_q)) +{ + let result := mulmod(mload(0x1680), mload(0x62e0), f_q) +mstore(36480, result) + } +mstore(0x8ea0, mulmod(mload(0x8e80), mload(0x6960), f_q)) +mstore(0x8ec0, mulmod(sub(f_q, mload(0x8ea0)), mload(0x6e20), f_q)) +mstore(0x8ee0, mulmod(mload(0x7800), mload(0x6e20), f_q)) +mstore(0x8f00, addmod(mload(0x8e60), mload(0x8ec0), f_q)) +{ + let result := mulmod(mload(0x16a0), mload(0x62e0), f_q) +mstore(36640, result) + } +mstore(0x8f40, mulmod(mload(0x8f20), mload(0x6960), f_q)) +mstore(0x8f60, mulmod(sub(f_q, mload(0x8f40)), mload(0x6e40), f_q)) +mstore(0x8f80, mulmod(mload(0x7800), mload(0x6e40), f_q)) +mstore(0x8fa0, addmod(mload(0x8f00), mload(0x8f60), f_q)) +{ + let result := mulmod(mload(0x16c0), mload(0x62e0), f_q) +mstore(36800, result) + } +mstore(0x8fe0, mulmod(mload(0x8fc0), mload(0x6960), f_q)) +mstore(0x9000, mulmod(sub(f_q, mload(0x8fe0)), mload(0x6e60), f_q)) +mstore(0x9020, mulmod(mload(0x7800), mload(0x6e60), f_q)) +mstore(0x9040, addmod(mload(0x8fa0), mload(0x9000), f_q)) +{ + let result := mulmod(mload(0x16e0), mload(0x62e0), f_q) +mstore(36960, result) + } +mstore(0x9080, mulmod(mload(0x9060), mload(0x6960), f_q)) +mstore(0x90a0, mulmod(sub(f_q, mload(0x9080)), mload(0x6e80), f_q)) +mstore(0x90c0, mulmod(mload(0x7800), mload(0x6e80), f_q)) +mstore(0x90e0, addmod(mload(0x9040), mload(0x90a0), f_q)) +{ + let result := mulmod(mload(0x1700), mload(0x62e0), f_q) +mstore(37120, result) + } +mstore(0x9120, mulmod(mload(0x9100), mload(0x6960), f_q)) +mstore(0x9140, mulmod(sub(f_q, mload(0x9120)), mload(0x6ea0), f_q)) +mstore(0x9160, mulmod(mload(0x7800), mload(0x6ea0), f_q)) +mstore(0x9180, addmod(mload(0x90e0), mload(0x9140), f_q)) +{ + let result := mulmod(mload(0x1720), mload(0x62e0), f_q) +mstore(37280, result) + } +mstore(0x91c0, mulmod(mload(0x91a0), mload(0x6960), f_q)) +mstore(0x91e0, mulmod(sub(f_q, mload(0x91c0)), mload(0x6ec0), f_q)) +mstore(0x9200, mulmod(mload(0x7800), mload(0x6ec0), f_q)) +mstore(0x9220, addmod(mload(0x9180), mload(0x91e0), f_q)) +{ + let result := mulmod(mload(0x1740), mload(0x62e0), f_q) +mstore(37440, result) + } +mstore(0x9260, mulmod(mload(0x9240), mload(0x6960), f_q)) +mstore(0x9280, mulmod(sub(f_q, mload(0x9260)), mload(0x6ee0), f_q)) +mstore(0x92a0, mulmod(mload(0x7800), mload(0x6ee0), f_q)) +mstore(0x92c0, addmod(mload(0x9220), mload(0x9280), f_q)) +{ + let result := mulmod(mload(0x1760), mload(0x62e0), f_q) +mstore(37600, result) + } +mstore(0x9300, mulmod(mload(0x92e0), mload(0x6960), f_q)) +mstore(0x9320, mulmod(sub(f_q, mload(0x9300)), mload(0x6f00), f_q)) +mstore(0x9340, mulmod(mload(0x7800), mload(0x6f00), f_q)) +mstore(0x9360, addmod(mload(0x92c0), mload(0x9320), f_q)) +mstore(0x9380, mulmod(mload(0x5fc0), mload(0x6700), f_q)) +mstore(0x93a0, mulmod(mload(0x5fe0), mload(0x6700), f_q)) +{ + let result := mulmod(mload(0x6000), mload(0x62e0), f_q) +mstore(37824, result) + } +mstore(0x93e0, mulmod(mload(0x93c0), mload(0x6960), f_q)) +mstore(0x9400, mulmod(sub(f_q, mload(0x93e0)), mload(0x6f20), f_q)) +mstore(0x9420, mulmod(mload(0x7800), mload(0x6f20), f_q)) +mstore(0x9440, mulmod(mload(0x9380), mload(0x6f20), f_q)) +mstore(0x9460, mulmod(mload(0x93a0), mload(0x6f20), f_q)) +mstore(0x9480, addmod(mload(0x9360), mload(0x9400), f_q)) +{ + let result := mulmod(mload(0x1500), mload(0x62e0), f_q) +mstore(38048, result) + } +mstore(0x94c0, mulmod(mload(0x94a0), mload(0x6960), f_q)) +mstore(0x94e0, mulmod(sub(f_q, mload(0x94c0)), mload(0x6f40), f_q)) +mstore(0x9500, mulmod(mload(0x7800), mload(0x6f40), f_q)) +mstore(0x9520, addmod(mload(0x9480), mload(0x94e0), f_q)) +mstore(0x9540, mulmod(mload(0x9520), mload(0x1e20), f_q)) +mstore(0x9560, mulmod(mload(0x7880), mload(0x1e20), f_q)) +mstore(0x9580, mulmod(mload(0x7900), mload(0x1e20), f_q)) +mstore(0x95a0, mulmod(mload(0x79a0), mload(0x1e20), f_q)) +mstore(0x95c0, mulmod(mload(0x7a40), mload(0x1e20), f_q)) +mstore(0x95e0, mulmod(mload(0x7ae0), mload(0x1e20), f_q)) +mstore(0x9600, mulmod(mload(0x7b80), mload(0x1e20), f_q)) +mstore(0x9620, mulmod(mload(0x7c20), mload(0x1e20), f_q)) +mstore(0x9640, mulmod(mload(0x7cc0), mload(0x1e20), f_q)) +mstore(0x9660, mulmod(mload(0x7d60), mload(0x1e20), f_q)) +mstore(0x9680, mulmod(mload(0x7e00), mload(0x1e20), f_q)) +mstore(0x96a0, mulmod(mload(0x7ea0), mload(0x1e20), f_q)) +mstore(0x96c0, mulmod(mload(0x7f40), mload(0x1e20), f_q)) +mstore(0x96e0, mulmod(mload(0x7fe0), mload(0x1e20), f_q)) +mstore(0x9700, mulmod(mload(0x8080), mload(0x1e20), f_q)) +mstore(0x9720, mulmod(mload(0x8120), mload(0x1e20), f_q)) +mstore(0x9740, mulmod(mload(0x81c0), mload(0x1e20), f_q)) +mstore(0x9760, mulmod(mload(0x8260), mload(0x1e20), f_q)) +mstore(0x9780, mulmod(mload(0x8300), mload(0x1e20), f_q)) +mstore(0x97a0, mulmod(mload(0x83a0), mload(0x1e20), f_q)) +mstore(0x97c0, mulmod(mload(0x8440), mload(0x1e20), f_q)) +mstore(0x97e0, mulmod(mload(0x84e0), mload(0x1e20), f_q)) +mstore(0x9800, mulmod(mload(0x8580), mload(0x1e20), f_q)) +mstore(0x9820, mulmod(mload(0x8620), mload(0x1e20), f_q)) +mstore(0x9840, mulmod(mload(0x86c0), mload(0x1e20), f_q)) +mstore(0x9860, mulmod(mload(0x8760), mload(0x1e20), f_q)) +mstore(0x9880, mulmod(mload(0x8800), mload(0x1e20), f_q)) +mstore(0x98a0, mulmod(mload(0x88a0), mload(0x1e20), f_q)) +mstore(0x98c0, mulmod(mload(0x8940), mload(0x1e20), f_q)) +mstore(0x98e0, mulmod(mload(0x89e0), mload(0x1e20), f_q)) +mstore(0x9900, mulmod(mload(0x8a80), mload(0x1e20), f_q)) +mstore(0x9920, mulmod(mload(0x8b20), mload(0x1e20), f_q)) +mstore(0x9940, mulmod(mload(0x8bc0), mload(0x1e20), f_q)) +mstore(0x9960, mulmod(mload(0x8c60), mload(0x1e20), f_q)) +mstore(0x9980, mulmod(mload(0x8d00), mload(0x1e20), f_q)) +mstore(0x99a0, mulmod(mload(0x8da0), mload(0x1e20), f_q)) +mstore(0x99c0, mulmod(mload(0x8e40), mload(0x1e20), f_q)) +mstore(0x99e0, mulmod(mload(0x8ee0), mload(0x1e20), f_q)) +mstore(0x9a00, mulmod(mload(0x8f80), mload(0x1e20), f_q)) +mstore(0x9a20, mulmod(mload(0x9020), mload(0x1e20), f_q)) +mstore(0x9a40, mulmod(mload(0x90c0), mload(0x1e20), f_q)) +mstore(0x9a60, mulmod(mload(0x9160), mload(0x1e20), f_q)) +mstore(0x9a80, mulmod(mload(0x9200), mload(0x1e20), f_q)) +mstore(0x9aa0, mulmod(mload(0x92a0), mload(0x1e20), f_q)) +mstore(0x9ac0, mulmod(mload(0x9340), mload(0x1e20), f_q)) +mstore(0x9ae0, mulmod(mload(0x9420), mload(0x1e20), f_q)) +mstore(0x9b00, mulmod(mload(0x9440), mload(0x1e20), f_q)) +mstore(0x9b20, mulmod(mload(0x9460), mload(0x1e20), f_q)) +mstore(0x9b40, mulmod(mload(0x9500), mload(0x1e20), f_q)) +mstore(0x9b60, addmod(mload(0x76a0), mload(0x9540), f_q)) +mstore(0x9b80, mulmod(1, mload(0x6740), f_q)) +{ + let result := mulmod(mload(0x1780), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x17a0), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x17c0), mload(0x6340), f_q), result, f_q) +mstore(39840, result) + } +mstore(0x9bc0, mulmod(mload(0x9ba0), mload(0x6980), f_q)) +mstore(0x9be0, mulmod(sub(f_q, mload(0x9bc0)), 1, f_q)) +mstore(0x9c00, mulmod(mload(0x9b80), 1, f_q)) +{ + let result := mulmod(mload(0x17e0), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1800), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1820), mload(0x6340), f_q), result, f_q) +mstore(39968, result) + } +mstore(0x9c40, mulmod(mload(0x9c20), mload(0x6980), f_q)) +mstore(0x9c60, mulmod(sub(f_q, mload(0x9c40)), mload(0x1dc0), f_q)) +mstore(0x9c80, mulmod(mload(0x9b80), mload(0x1dc0), f_q)) +mstore(0x9ca0, addmod(mload(0x9be0), mload(0x9c60), f_q)) +{ + let result := mulmod(mload(0x1840), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1860), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1880), mload(0x6340), f_q), result, f_q) +mstore(40128, result) + } +mstore(0x9ce0, mulmod(mload(0x9cc0), mload(0x6980), f_q)) +mstore(0x9d00, mulmod(sub(f_q, mload(0x9ce0)), mload(0x69e0), f_q)) +mstore(0x9d20, mulmod(mload(0x9b80), mload(0x69e0), f_q)) +mstore(0x9d40, addmod(mload(0x9ca0), mload(0x9d00), f_q)) +{ + let result := mulmod(mload(0x18a0), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x18c0), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x18e0), mload(0x6340), f_q), result, f_q) +mstore(40288, result) + } +mstore(0x9d80, mulmod(mload(0x9d60), mload(0x6980), f_q)) +mstore(0x9da0, mulmod(sub(f_q, mload(0x9d80)), mload(0x6a00), f_q)) +mstore(0x9dc0, mulmod(mload(0x9b80), mload(0x6a00), f_q)) +mstore(0x9de0, addmod(mload(0x9d40), mload(0x9da0), f_q)) +{ + let result := mulmod(mload(0x1900), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1920), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1940), mload(0x6340), f_q), result, f_q) +mstore(40448, result) + } +mstore(0x9e20, mulmod(mload(0x9e00), mload(0x6980), f_q)) +mstore(0x9e40, mulmod(sub(f_q, mload(0x9e20)), mload(0x6a20), f_q)) +mstore(0x9e60, mulmod(mload(0x9b80), mload(0x6a20), f_q)) +mstore(0x9e80, addmod(mload(0x9de0), mload(0x9e40), f_q)) +{ + let result := mulmod(mload(0x1960), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1980), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x19a0), mload(0x6340), f_q), result, f_q) +mstore(40608, result) + } +mstore(0x9ec0, mulmod(mload(0x9ea0), mload(0x6980), f_q)) +mstore(0x9ee0, mulmod(sub(f_q, mload(0x9ec0)), mload(0x6a40), f_q)) +mstore(0x9f00, mulmod(mload(0x9b80), mload(0x6a40), f_q)) +mstore(0x9f20, addmod(mload(0x9e80), mload(0x9ee0), f_q)) +{ + let result := mulmod(mload(0x19c0), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x19e0), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1a00), mload(0x6340), f_q), result, f_q) +mstore(40768, result) + } +mstore(0x9f60, mulmod(mload(0x9f40), mload(0x6980), f_q)) +mstore(0x9f80, mulmod(sub(f_q, mload(0x9f60)), mload(0x6a60), f_q)) +mstore(0x9fa0, mulmod(mload(0x9b80), mload(0x6a60), f_q)) +mstore(0x9fc0, addmod(mload(0x9f20), mload(0x9f80), f_q)) +{ + let result := mulmod(mload(0x1a20), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1a40), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1a60), mload(0x6340), f_q), result, f_q) +mstore(40928, result) + } +mstore(0xa000, mulmod(mload(0x9fe0), mload(0x6980), f_q)) +mstore(0xa020, mulmod(sub(f_q, mload(0xa000)), mload(0x6a80), f_q)) +mstore(0xa040, mulmod(mload(0x9b80), mload(0x6a80), f_q)) +mstore(0xa060, addmod(mload(0x9fc0), mload(0xa020), f_q)) +{ + let result := mulmod(mload(0x1a80), mload(0x6300), f_q) +result := addmod(mulmod(mload(0x1aa0), mload(0x6320), f_q), result, f_q) +result := addmod(mulmod(mload(0x1ac0), mload(0x6340), f_q), result, f_q) +mstore(41088, result) + } +mstore(0xa0a0, mulmod(mload(0xa080), mload(0x6980), f_q)) +mstore(0xa0c0, mulmod(sub(f_q, mload(0xa0a0)), mload(0x6aa0), f_q)) +mstore(0xa0e0, mulmod(mload(0x9b80), mload(0x6aa0), f_q)) +mstore(0xa100, addmod(mload(0xa060), mload(0xa0c0), f_q)) +mstore(0xa120, mulmod(mload(0xa100), mload(0x6f80), f_q)) +mstore(0xa140, mulmod(mload(0x9c00), mload(0x6f80), f_q)) +mstore(0xa160, mulmod(mload(0x9c80), mload(0x6f80), f_q)) +mstore(0xa180, mulmod(mload(0x9d20), mload(0x6f80), f_q)) +mstore(0xa1a0, mulmod(mload(0x9dc0), mload(0x6f80), f_q)) +mstore(0xa1c0, mulmod(mload(0x9e60), mload(0x6f80), f_q)) +mstore(0xa1e0, mulmod(mload(0x9f00), mload(0x6f80), f_q)) +mstore(0xa200, mulmod(mload(0x9fa0), mload(0x6f80), f_q)) +mstore(0xa220, mulmod(mload(0xa040), mload(0x6f80), f_q)) +mstore(0xa240, mulmod(mload(0xa0e0), mload(0x6f80), f_q)) +mstore(0xa260, addmod(mload(0x9b60), mload(0xa120), f_q)) +mstore(0xa280, mulmod(1, mload(0x6780), f_q)) +{ + let result := mulmod(mload(0x1ae0), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1b00), mload(0x63a0), f_q), result, f_q) +mstore(41632, result) + } +mstore(0xa2c0, mulmod(mload(0xa2a0), mload(0x69a0), f_q)) +mstore(0xa2e0, mulmod(sub(f_q, mload(0xa2c0)), 1, f_q)) +mstore(0xa300, mulmod(mload(0xa280), 1, f_q)) +{ + let result := mulmod(mload(0x1b20), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1b40), mload(0x63a0), f_q), result, f_q) +mstore(41760, result) + } +mstore(0xa340, mulmod(mload(0xa320), mload(0x69a0), f_q)) +mstore(0xa360, mulmod(sub(f_q, mload(0xa340)), mload(0x1dc0), f_q)) +mstore(0xa380, mulmod(mload(0xa280), mload(0x1dc0), f_q)) +mstore(0xa3a0, addmod(mload(0xa2e0), mload(0xa360), f_q)) +{ + let result := mulmod(mload(0x1bc0), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1be0), mload(0x63a0), f_q), result, f_q) +mstore(41920, result) + } +mstore(0xa3e0, mulmod(mload(0xa3c0), mload(0x69a0), f_q)) +mstore(0xa400, mulmod(sub(f_q, mload(0xa3e0)), mload(0x69e0), f_q)) +mstore(0xa420, mulmod(mload(0xa280), mload(0x69e0), f_q)) +mstore(0xa440, addmod(mload(0xa3a0), mload(0xa400), f_q)) +{ + let result := mulmod(mload(0x1c60), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1c80), mload(0x63a0), f_q), result, f_q) +mstore(42080, result) + } +mstore(0xa480, mulmod(mload(0xa460), mload(0x69a0), f_q)) +mstore(0xa4a0, mulmod(sub(f_q, mload(0xa480)), mload(0x6a00), f_q)) +mstore(0xa4c0, mulmod(mload(0xa280), mload(0x6a00), f_q)) +mstore(0xa4e0, addmod(mload(0xa440), mload(0xa4a0), f_q)) +{ + let result := mulmod(mload(0x1d00), mload(0x6380), f_q) +result := addmod(mulmod(mload(0x1d20), mload(0x63a0), f_q), result, f_q) +mstore(42240, result) + } +mstore(0xa520, mulmod(mload(0xa500), mload(0x69a0), f_q)) +mstore(0xa540, mulmod(sub(f_q, mload(0xa520)), mload(0x6a20), f_q)) +mstore(0xa560, mulmod(mload(0xa280), mload(0x6a20), f_q)) +mstore(0xa580, addmod(mload(0xa4e0), mload(0xa540), f_q)) +mstore(0xa5a0, mulmod(mload(0xa580), mload(0x6fa0), f_q)) +mstore(0xa5c0, mulmod(mload(0xa300), mload(0x6fa0), f_q)) +mstore(0xa5e0, mulmod(mload(0xa380), mload(0x6fa0), f_q)) +mstore(0xa600, mulmod(mload(0xa420), mload(0x6fa0), f_q)) +mstore(0xa620, mulmod(mload(0xa4c0), mload(0x6fa0), f_q)) +mstore(0xa640, mulmod(mload(0xa560), mload(0x6fa0), f_q)) +mstore(0xa660, addmod(mload(0xa260), mload(0xa5a0), f_q)) +mstore(0xa680, mulmod(1, mload(0x67c0), f_q)) +{ + let result := mulmod(mload(0x1b60), mload(0x63c0), f_q) +result := addmod(mulmod(mload(0x1b80), mload(0x63e0), f_q), result, f_q) +mstore(42656, result) + } +mstore(0xa6c0, mulmod(mload(0xa6a0), mload(0x69c0), f_q)) +mstore(0xa6e0, mulmod(sub(f_q, mload(0xa6c0)), 1, f_q)) +mstore(0xa700, mulmod(mload(0xa680), 1, f_q)) +{ + let result := mulmod(mload(0x1c00), mload(0x63c0), f_q) +result := addmod(mulmod(mload(0x1c20), mload(0x63e0), f_q), result, f_q) +mstore(42784, result) + } +mstore(0xa740, mulmod(mload(0xa720), mload(0x69c0), f_q)) +mstore(0xa760, mulmod(sub(f_q, mload(0xa740)), mload(0x1dc0), f_q)) +mstore(0xa780, mulmod(mload(0xa680), mload(0x1dc0), f_q)) +mstore(0xa7a0, addmod(mload(0xa6e0), mload(0xa760), f_q)) +{ + let result := mulmod(mload(0x1ca0), mload(0x63c0), f_q) +result := addmod(mulmod(mload(0x1cc0), mload(0x63e0), f_q), result, f_q) +mstore(42944, result) + } +mstore(0xa7e0, mulmod(mload(0xa7c0), mload(0x69c0), f_q)) +mstore(0xa800, mulmod(sub(f_q, mload(0xa7e0)), mload(0x69e0), f_q)) +mstore(0xa820, mulmod(mload(0xa680), mload(0x69e0), f_q)) +mstore(0xa840, addmod(mload(0xa7a0), mload(0xa800), f_q)) +{ + let result := mulmod(mload(0x1d40), mload(0x63c0), f_q) +result := addmod(mulmod(mload(0x1d60), mload(0x63e0), f_q), result, f_q) +mstore(43104, result) + } +mstore(0xa880, mulmod(mload(0xa860), mload(0x69c0), f_q)) +mstore(0xa8a0, mulmod(sub(f_q, mload(0xa880)), mload(0x6a00), f_q)) +mstore(0xa8c0, mulmod(mload(0xa680), mload(0x6a00), f_q)) +mstore(0xa8e0, addmod(mload(0xa840), mload(0xa8a0), f_q)) +mstore(0xa900, mulmod(mload(0xa8e0), mload(0x6fc0), f_q)) +mstore(0xa920, mulmod(mload(0xa700), mload(0x6fc0), f_q)) +mstore(0xa940, mulmod(mload(0xa780), mload(0x6fc0), f_q)) +mstore(0xa960, mulmod(mload(0xa820), mload(0x6fc0), f_q)) +mstore(0xa980, mulmod(mload(0xa8c0), mload(0x6fc0), f_q)) +mstore(0xa9a0, addmod(mload(0xa660), mload(0xa900), f_q)) +mstore(0xa9c0, mulmod(1, mload(0x62c0), f_q)) +mstore(0xa9e0, mulmod(1, mload(0x1ec0), f_q)) +mstore(0xaa00, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0xaa20, 0x0000000000000000000000000000000000000000000000000000000000000002) +mstore(0xaa40, mload(0xa9a0)) +success := and(eq(staticcall(gas(), 0x7, 0xaa00, 0x60, 0xaa00, 0x40), 1), success) +mstore(0xaa60, mload(0xaa00)) + mstore(0xaa80, mload(0xaa20)) +mstore(0xaaa0, mload(0x40)) + mstore(0xaac0, mload(0x60)) +success := and(eq(staticcall(gas(), 0x6, 0xaa60, 0x80, 0xaa60, 0x40), 1), success) +mstore(0xaae0, mload(0x80)) + mstore(0xab00, mload(0xa0)) +mstore(0xab20, mload(0x76c0)) +success := and(eq(staticcall(gas(), 0x7, 0xaae0, 0x60, 0xaae0, 0x40), 1), success) +mstore(0xab40, mload(0xaa60)) + mstore(0xab60, mload(0xaa80)) +mstore(0xab80, mload(0xaae0)) + mstore(0xaba0, mload(0xab00)) +success := and(eq(staticcall(gas(), 0x6, 0xab40, 0x80, 0xab40, 0x40), 1), success) +mstore(0xabc0, mload(0xc0)) + mstore(0xabe0, mload(0xe0)) +mstore(0xac00, mload(0x76e0)) +success := and(eq(staticcall(gas(), 0x7, 0xabc0, 0x60, 0xabc0, 0x40), 1), success) +mstore(0xac20, mload(0xab40)) + mstore(0xac40, mload(0xab60)) +mstore(0xac60, mload(0xabc0)) + mstore(0xac80, mload(0xabe0)) +success := and(eq(staticcall(gas(), 0x6, 0xac20, 0x80, 0xac20, 0x40), 1), success) +mstore(0xaca0, mload(0x100)) + mstore(0xacc0, mload(0x120)) +mstore(0xace0, mload(0x7700)) +success := and(eq(staticcall(gas(), 0x7, 0xaca0, 0x60, 0xaca0, 0x40), 1), success) +mstore(0xad00, mload(0xac20)) + mstore(0xad20, mload(0xac40)) +mstore(0xad40, mload(0xaca0)) + mstore(0xad60, mload(0xacc0)) +success := and(eq(staticcall(gas(), 0x6, 0xad00, 0x80, 0xad00, 0x40), 1), success) +mstore(0xad80, mload(0x140)) + mstore(0xada0, mload(0x160)) +mstore(0xadc0, mload(0x7720)) +success := and(eq(staticcall(gas(), 0x7, 0xad80, 0x60, 0xad80, 0x40), 1), success) +mstore(0xade0, mload(0xad00)) + mstore(0xae00, mload(0xad20)) +mstore(0xae20, mload(0xad80)) + mstore(0xae40, mload(0xada0)) +success := and(eq(staticcall(gas(), 0x6, 0xade0, 0x80, 0xade0, 0x40), 1), success) +mstore(0xae60, mload(0x180)) + mstore(0xae80, mload(0x1a0)) +mstore(0xaea0, mload(0x7740)) +success := and(eq(staticcall(gas(), 0x7, 0xae60, 0x60, 0xae60, 0x40), 1), success) +mstore(0xaec0, mload(0xade0)) + mstore(0xaee0, mload(0xae00)) +mstore(0xaf00, mload(0xae60)) + mstore(0xaf20, mload(0xae80)) +success := and(eq(staticcall(gas(), 0x6, 0xaec0, 0x80, 0xaec0, 0x40), 1), success) +mstore(0xaf40, mload(0x1c0)) + mstore(0xaf60, mload(0x1e0)) +mstore(0xaf80, mload(0x7760)) +success := and(eq(staticcall(gas(), 0x7, 0xaf40, 0x60, 0xaf40, 0x40), 1), success) +mstore(0xafa0, mload(0xaec0)) + mstore(0xafc0, mload(0xaee0)) +mstore(0xafe0, mload(0xaf40)) + mstore(0xb000, mload(0xaf60)) +success := and(eq(staticcall(gas(), 0x6, 0xafa0, 0x80, 0xafa0, 0x40), 1), success) +mstore(0xb020, mload(0x200)) + mstore(0xb040, mload(0x220)) +mstore(0xb060, mload(0x7780)) +success := and(eq(staticcall(gas(), 0x7, 0xb020, 0x60, 0xb020, 0x40), 1), success) +mstore(0xb080, mload(0xafa0)) + mstore(0xb0a0, mload(0xafc0)) +mstore(0xb0c0, mload(0xb020)) + mstore(0xb0e0, mload(0xb040)) +success := and(eq(staticcall(gas(), 0x6, 0xb080, 0x80, 0xb080, 0x40), 1), success) +mstore(0xb100, mload(0x240)) + mstore(0xb120, mload(0x260)) +mstore(0xb140, mload(0x77a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb100, 0x60, 0xb100, 0x40), 1), success) +mstore(0xb160, mload(0xb080)) + mstore(0xb180, mload(0xb0a0)) +mstore(0xb1a0, mload(0xb100)) + mstore(0xb1c0, mload(0xb120)) +success := and(eq(staticcall(gas(), 0x6, 0xb160, 0x80, 0xb160, 0x40), 1), success) +mstore(0xb1e0, mload(0x280)) + mstore(0xb200, mload(0x2a0)) +mstore(0xb220, mload(0x77c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb1e0, 0x60, 0xb1e0, 0x40), 1), success) +mstore(0xb240, mload(0xb160)) + mstore(0xb260, mload(0xb180)) +mstore(0xb280, mload(0xb1e0)) + mstore(0xb2a0, mload(0xb200)) +success := and(eq(staticcall(gas(), 0x6, 0xb240, 0x80, 0xb240, 0x40), 1), success) +mstore(0xb2c0, mload(0x2c0)) + mstore(0xb2e0, mload(0x2e0)) +mstore(0xb300, mload(0x77e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb2c0, 0x60, 0xb2c0, 0x40), 1), success) +mstore(0xb320, mload(0xb240)) + mstore(0xb340, mload(0xb260)) +mstore(0xb360, mload(0xb2c0)) + mstore(0xb380, mload(0xb2e0)) +success := and(eq(staticcall(gas(), 0x6, 0xb320, 0x80, 0xb320, 0x40), 1), success) +mstore(0xb3a0, mload(0x300)) + mstore(0xb3c0, mload(0x320)) +mstore(0xb3e0, mload(0x9560)) +success := and(eq(staticcall(gas(), 0x7, 0xb3a0, 0x60, 0xb3a0, 0x40), 1), success) +mstore(0xb400, mload(0xb320)) + mstore(0xb420, mload(0xb340)) +mstore(0xb440, mload(0xb3a0)) + mstore(0xb460, mload(0xb3c0)) +success := and(eq(staticcall(gas(), 0x6, 0xb400, 0x80, 0xb400, 0x40), 1), success) +mstore(0xb480, mload(0x340)) + mstore(0xb4a0, mload(0x360)) +mstore(0xb4c0, mload(0x9580)) +success := and(eq(staticcall(gas(), 0x7, 0xb480, 0x60, 0xb480, 0x40), 1), success) +mstore(0xb4e0, mload(0xb400)) + mstore(0xb500, mload(0xb420)) +mstore(0xb520, mload(0xb480)) + mstore(0xb540, mload(0xb4a0)) +success := and(eq(staticcall(gas(), 0x6, 0xb4e0, 0x80, 0xb4e0, 0x40), 1), success) +mstore(0xb560, mload(0x380)) + mstore(0xb580, mload(0x3a0)) +mstore(0xb5a0, mload(0x95a0)) +success := and(eq(staticcall(gas(), 0x7, 0xb560, 0x60, 0xb560, 0x40), 1), success) +mstore(0xb5c0, mload(0xb4e0)) + mstore(0xb5e0, mload(0xb500)) +mstore(0xb600, mload(0xb560)) + mstore(0xb620, mload(0xb580)) +success := and(eq(staticcall(gas(), 0x6, 0xb5c0, 0x80, 0xb5c0, 0x40), 1), success) +mstore(0xb640, mload(0x3c0)) + mstore(0xb660, mload(0x3e0)) +mstore(0xb680, mload(0x95c0)) +success := and(eq(staticcall(gas(), 0x7, 0xb640, 0x60, 0xb640, 0x40), 1), success) +mstore(0xb6a0, mload(0xb5c0)) + mstore(0xb6c0, mload(0xb5e0)) +mstore(0xb6e0, mload(0xb640)) + mstore(0xb700, mload(0xb660)) +success := and(eq(staticcall(gas(), 0x6, 0xb6a0, 0x80, 0xb6a0, 0x40), 1), success) +mstore(0xb720, mload(0x400)) + mstore(0xb740, mload(0x420)) +mstore(0xb760, mload(0x95e0)) +success := and(eq(staticcall(gas(), 0x7, 0xb720, 0x60, 0xb720, 0x40), 1), success) +mstore(0xb780, mload(0xb6a0)) + mstore(0xb7a0, mload(0xb6c0)) +mstore(0xb7c0, mload(0xb720)) + mstore(0xb7e0, mload(0xb740)) +success := and(eq(staticcall(gas(), 0x6, 0xb780, 0x80, 0xb780, 0x40), 1), success) +mstore(0xb800, mload(0x440)) + mstore(0xb820, mload(0x460)) +mstore(0xb840, mload(0x9600)) +success := and(eq(staticcall(gas(), 0x7, 0xb800, 0x60, 0xb800, 0x40), 1), success) +mstore(0xb860, mload(0xb780)) + mstore(0xb880, mload(0xb7a0)) +mstore(0xb8a0, mload(0xb800)) + mstore(0xb8c0, mload(0xb820)) +success := and(eq(staticcall(gas(), 0x6, 0xb860, 0x80, 0xb860, 0x40), 1), success) +mstore(0xb8e0, mload(0x520)) + mstore(0xb900, mload(0x540)) +mstore(0xb920, mload(0x9620)) +success := and(eq(staticcall(gas(), 0x7, 0xb8e0, 0x60, 0xb8e0, 0x40), 1), success) +mstore(0xb940, mload(0xb860)) + mstore(0xb960, mload(0xb880)) +mstore(0xb980, mload(0xb8e0)) + mstore(0xb9a0, mload(0xb900)) +success := and(eq(staticcall(gas(), 0x6, 0xb940, 0x80, 0xb940, 0x40), 1), success) +mstore(0xb9c0, mload(0x5a0)) + mstore(0xb9e0, mload(0x5c0)) +mstore(0xba00, mload(0x9640)) +success := and(eq(staticcall(gas(), 0x7, 0xb9c0, 0x60, 0xb9c0, 0x40), 1), success) +mstore(0xba20, mload(0xb940)) + mstore(0xba40, mload(0xb960)) +mstore(0xba60, mload(0xb9c0)) + mstore(0xba80, mload(0xb9e0)) +success := and(eq(staticcall(gas(), 0x6, 0xba20, 0x80, 0xba20, 0x40), 1), success) +mstore(0xbaa0, mload(0x620)) + mstore(0xbac0, mload(0x640)) +mstore(0xbae0, mload(0x9660)) +success := and(eq(staticcall(gas(), 0x7, 0xbaa0, 0x60, 0xbaa0, 0x40), 1), success) +mstore(0xbb00, mload(0xba20)) + mstore(0xbb20, mload(0xba40)) +mstore(0xbb40, mload(0xbaa0)) + mstore(0xbb60, mload(0xbac0)) +success := and(eq(staticcall(gas(), 0x6, 0xbb00, 0x80, 0xbb00, 0x40), 1), success) +mstore(0xbb80, mload(0x6a0)) + mstore(0xbba0, mload(0x6c0)) +mstore(0xbbc0, mload(0x9680)) +success := and(eq(staticcall(gas(), 0x7, 0xbb80, 0x60, 0xbb80, 0x40), 1), success) +mstore(0xbbe0, mload(0xbb00)) + mstore(0xbc00, mload(0xbb20)) +mstore(0xbc20, mload(0xbb80)) + mstore(0xbc40, mload(0xbba0)) +success := and(eq(staticcall(gas(), 0x6, 0xbbe0, 0x80, 0xbbe0, 0x40), 1), success) +mstore(0xbc60, 0x1d4c2a54a19d990a86438aef08a4dea6e0fd5bd348ea94c846a2907446437bfd) + mstore(0xbc80, 0x12b97071e22ed3fb20822c84d046fff03b85c86c3661b83614e5a9bfb9cf1057) +mstore(0xbca0, mload(0x96a0)) +success := and(eq(staticcall(gas(), 0x7, 0xbc60, 0x60, 0xbc60, 0x40), 1), success) +mstore(0xbcc0, mload(0xbbe0)) + mstore(0xbce0, mload(0xbc00)) +mstore(0xbd00, mload(0xbc60)) + mstore(0xbd20, mload(0xbc80)) +success := and(eq(staticcall(gas(), 0x6, 0xbcc0, 0x80, 0xbcc0, 0x40), 1), success) +mstore(0xbd40, 0x287ee5534d4c16ef78de7646cc481ed44aa9377c9f27a39779833f7ddb4bdf7c) + mstore(0xbd60, 0x126ab83eede4df118f9cd4216d70c70da40820443112c18ddc36e2dabb355323) +mstore(0xbd80, mload(0x96c0)) +success := and(eq(staticcall(gas(), 0x7, 0xbd40, 0x60, 0xbd40, 0x40), 1), success) +mstore(0xbda0, mload(0xbcc0)) + mstore(0xbdc0, mload(0xbce0)) +mstore(0xbde0, mload(0xbd40)) + mstore(0xbe00, mload(0xbd60)) +success := and(eq(staticcall(gas(), 0x6, 0xbda0, 0x80, 0xbda0, 0x40), 1), success) +mstore(0xbe20, 0x17b9541314a49b7e1494dbb9b56c0fe5a2a22b5f40e308f0845c7d5b8700c529) + mstore(0xbe40, 0x1d95155e21064d16f1b5766a5ce76bbae69b692527d80618b8fdf4191ce081c7) +mstore(0xbe60, mload(0x96e0)) +success := and(eq(staticcall(gas(), 0x7, 0xbe20, 0x60, 0xbe20, 0x40), 1), success) +mstore(0xbe80, mload(0xbda0)) + mstore(0xbea0, mload(0xbdc0)) +mstore(0xbec0, mload(0xbe20)) + mstore(0xbee0, mload(0xbe40)) +success := and(eq(staticcall(gas(), 0x6, 0xbe80, 0x80, 0xbe80, 0x40), 1), success) +mstore(0xbf00, 0x2034111db6e926233bc5515ff2c4b8f9a87b144f97d985aa02c434e8aa328daf) + mstore(0xbf20, 0x22c50db907ec7756bd04bda8b20af846bef6a44f87a5a4833d148c8f67d19840) +mstore(0xbf40, mload(0x9700)) +success := and(eq(staticcall(gas(), 0x7, 0xbf00, 0x60, 0xbf00, 0x40), 1), success) +mstore(0xbf60, mload(0xbe80)) + mstore(0xbf80, mload(0xbea0)) +mstore(0xbfa0, mload(0xbf00)) + mstore(0xbfc0, mload(0xbf20)) +success := and(eq(staticcall(gas(), 0x6, 0xbf60, 0x80, 0xbf60, 0x40), 1), success) +mstore(0xbfe0, 0x0bfaa377fc9f385274cb2543a7e6b9bd6ca8cb08975aa9cf2e27b0b63ec25678) + mstore(0xc000, 0x067a2ddfb0832019515ea91c70c84508bbe62c7e6fc871d5a9d23f270fcbe21f) +mstore(0xc020, mload(0x9720)) +success := and(eq(staticcall(gas(), 0x7, 0xbfe0, 0x60, 0xbfe0, 0x40), 1), success) +mstore(0xc040, mload(0xbf60)) + mstore(0xc060, mload(0xbf80)) +mstore(0xc080, mload(0xbfe0)) + mstore(0xc0a0, mload(0xc000)) +success := and(eq(staticcall(gas(), 0x6, 0xc040, 0x80, 0xc040, 0x40), 1), success) +mstore(0xc0c0, 0x0f906f8b460a4128d14b1d5cdf600cadc80a260589da8307e4b649b3e76f82a2) + mstore(0xc0e0, 0x297ec074ed994b5e3041ffdc4eb711a639ea36ed3653d80e4cf054ff32a0c7a4) +mstore(0xc100, mload(0x9740)) +success := and(eq(staticcall(gas(), 0x7, 0xc0c0, 0x60, 0xc0c0, 0x40), 1), success) +mstore(0xc120, mload(0xc040)) + mstore(0xc140, mload(0xc060)) +mstore(0xc160, mload(0xc0c0)) + mstore(0xc180, mload(0xc0e0)) +success := and(eq(staticcall(gas(), 0x6, 0xc120, 0x80, 0xc120, 0x40), 1), success) +mstore(0xc1a0, 0x08489c309e3a350b26bd20bbb331375a870b823d83313090c9ca0cfe54d1f896) + mstore(0xc1c0, 0x0e7971e6f9acfe1bb2fe05d4a0a1ee4bd321f8f34b29d99a23fa00c65221890e) +mstore(0xc1e0, mload(0x9760)) +success := and(eq(staticcall(gas(), 0x7, 0xc1a0, 0x60, 0xc1a0, 0x40), 1), success) +mstore(0xc200, mload(0xc120)) + mstore(0xc220, mload(0xc140)) +mstore(0xc240, mload(0xc1a0)) + mstore(0xc260, mload(0xc1c0)) +success := and(eq(staticcall(gas(), 0x6, 0xc200, 0x80, 0xc200, 0x40), 1), success) +mstore(0xc280, 0x21e365028b782388e8f04d8bdb703ba9da66833964286665ab22bf2b5d3283ca) + mstore(0xc2a0, 0x12c74b55a7f9fab4d8420fd9cf35a858dd96b7cf0c2ea133f7a30df137fd59b4) +mstore(0xc2c0, mload(0x9780)) +success := and(eq(staticcall(gas(), 0x7, 0xc280, 0x60, 0xc280, 0x40), 1), success) +mstore(0xc2e0, mload(0xc200)) + mstore(0xc300, mload(0xc220)) +mstore(0xc320, mload(0xc280)) + mstore(0xc340, mload(0xc2a0)) +success := and(eq(staticcall(gas(), 0x6, 0xc2e0, 0x80, 0xc2e0, 0x40), 1), success) +mstore(0xc360, 0x23e03ab7485f3009ca3971504f8bfc59adb40c218c7a15cc568b7c5df2ba1391) + mstore(0xc380, 0x267737bc25c4490de920f7d1648fe06e1c444c817e5c3de3437b689ed8fe1486) +mstore(0xc3a0, mload(0x97a0)) +success := and(eq(staticcall(gas(), 0x7, 0xc360, 0x60, 0xc360, 0x40), 1), success) +mstore(0xc3c0, mload(0xc2e0)) + mstore(0xc3e0, mload(0xc300)) +mstore(0xc400, mload(0xc360)) + mstore(0xc420, mload(0xc380)) +success := and(eq(staticcall(gas(), 0x6, 0xc3c0, 0x80, 0xc3c0, 0x40), 1), success) +mstore(0xc440, 0x1559fead860432371def20191e6416f981c4290a9a902a53f90dc403a8b95b3d) + mstore(0xc460, 0x194ea382e7a479a2518c474aecdd65f9912ce70c9efc16299d114a5958d2f722) +mstore(0xc480, mload(0x97c0)) +success := and(eq(staticcall(gas(), 0x7, 0xc440, 0x60, 0xc440, 0x40), 1), success) +mstore(0xc4a0, mload(0xc3c0)) + mstore(0xc4c0, mload(0xc3e0)) +mstore(0xc4e0, mload(0xc440)) + mstore(0xc500, mload(0xc460)) +success := and(eq(staticcall(gas(), 0x6, 0xc4a0, 0x80, 0xc4a0, 0x40), 1), success) +mstore(0xc520, 0x0d68cd92538c898f78daa1fdaa4c60605d9afba72ea331e7ddbcbaccdfa31660) + mstore(0xc540, 0x0435a9b8654e5852b0a433bcf9505d4e3c641bbbcb1af97407cd4e1fb373c8bc) +mstore(0xc560, mload(0x97e0)) +success := and(eq(staticcall(gas(), 0x7, 0xc520, 0x60, 0xc520, 0x40), 1), success) +mstore(0xc580, mload(0xc4a0)) + mstore(0xc5a0, mload(0xc4c0)) +mstore(0xc5c0, mload(0xc520)) + mstore(0xc5e0, mload(0xc540)) +success := and(eq(staticcall(gas(), 0x6, 0xc580, 0x80, 0xc580, 0x40), 1), success) +mstore(0xc600, 0x1bec423dd77a94856cc1e8bc3447514cb1521c1c7482636cbb10d8d155d02669) + mstore(0xc620, 0x14cbbfd4f6e5cea5c930fe63b1e1438c887fd405ff2121827e1c2c142961cc41) +mstore(0xc640, mload(0x9800)) +success := and(eq(staticcall(gas(), 0x7, 0xc600, 0x60, 0xc600, 0x40), 1), success) +mstore(0xc660, mload(0xc580)) + mstore(0xc680, mload(0xc5a0)) +mstore(0xc6a0, mload(0xc600)) + mstore(0xc6c0, mload(0xc620)) +success := and(eq(staticcall(gas(), 0x6, 0xc660, 0x80, 0xc660, 0x40), 1), success) +mstore(0xc6e0, 0x1ff428ce93b475f7ba7a3fb58969816550fce95fa8f18e6dcc4cf40e9af89f31) + mstore(0xc700, 0x15961fdc3c180964b586336f6eddcb062c604790db0df61fcf94b4cd9cbf488b) +mstore(0xc720, mload(0x9820)) +success := and(eq(staticcall(gas(), 0x7, 0xc6e0, 0x60, 0xc6e0, 0x40), 1), success) +mstore(0xc740, mload(0xc660)) + mstore(0xc760, mload(0xc680)) +mstore(0xc780, mload(0xc6e0)) + mstore(0xc7a0, mload(0xc700)) +success := and(eq(staticcall(gas(), 0x6, 0xc740, 0x80, 0xc740, 0x40), 1), success) +mstore(0xc7c0, 0x2855b464d9641da5e6386f6941b577ae7bb6918ce637ed094579be86303c1939) + mstore(0xc7e0, 0x11e134211f0f827c530352dea99931ff6e0a3f1167417e883642b7b906a3c9bb) +mstore(0xc800, mload(0x9840)) +success := and(eq(staticcall(gas(), 0x7, 0xc7c0, 0x60, 0xc7c0, 0x40), 1), success) +mstore(0xc820, mload(0xc740)) + mstore(0xc840, mload(0xc760)) +mstore(0xc860, mload(0xc7c0)) + mstore(0xc880, mload(0xc7e0)) +success := and(eq(staticcall(gas(), 0x6, 0xc820, 0x80, 0xc820, 0x40), 1), success) +mstore(0xc8a0, 0x0d0279dfaeefc871311e3c8bdff57a14f862808d4deec9b8cb94c6ac24ccada5) + mstore(0xc8c0, 0x1ce6b7381bb12d8fb5b6fc99a667590f9b796edcd3e0fbe3fa6d6a287ca15bce) +mstore(0xc8e0, mload(0x9860)) +success := and(eq(staticcall(gas(), 0x7, 0xc8a0, 0x60, 0xc8a0, 0x40), 1), success) +mstore(0xc900, mload(0xc820)) + mstore(0xc920, mload(0xc840)) +mstore(0xc940, mload(0xc8a0)) + mstore(0xc960, mload(0xc8c0)) +success := and(eq(staticcall(gas(), 0x6, 0xc900, 0x80, 0xc900, 0x40), 1), success) +mstore(0xc980, 0x08895de3b2b4fd6986c9c71c456526394700f2c935aaa929aa2aa3dcebc7a52f) + mstore(0xc9a0, 0x13b172343099ff120a16d0a573dfcf762a9f92a458c111ea0d3a119ec9431e1e) +mstore(0xc9c0, mload(0x9880)) +success := and(eq(staticcall(gas(), 0x7, 0xc980, 0x60, 0xc980, 0x40), 1), success) +mstore(0xc9e0, mload(0xc900)) + mstore(0xca00, mload(0xc920)) +mstore(0xca20, mload(0xc980)) + mstore(0xca40, mload(0xc9a0)) +success := and(eq(staticcall(gas(), 0x6, 0xc9e0, 0x80, 0xc9e0, 0x40), 1), success) +mstore(0xca60, 0x2757547a38298411a4da55110b9d6d89029c18cf1a25cf1932170c2d146f18a4) + mstore(0xca80, 0x0a231f1eea0a6b6d1b46fb33bb97fb9b7db28807c007c5faa796ad4c95123736) +mstore(0xcaa0, mload(0x98a0)) +success := and(eq(staticcall(gas(), 0x7, 0xca60, 0x60, 0xca60, 0x40), 1), success) +mstore(0xcac0, mload(0xc9e0)) + mstore(0xcae0, mload(0xca00)) +mstore(0xcb00, mload(0xca60)) + mstore(0xcb20, mload(0xca80)) +success := and(eq(staticcall(gas(), 0x6, 0xcac0, 0x80, 0xcac0, 0x40), 1), success) +mstore(0xcb40, 0x1e127932633e9b3ccc5da1166114ce5ec8a858e66520250f9ceaf12c69e25d20) + mstore(0xcb60, 0x0e36c8cab53c2dbbc9f36082db1f4cf054a3b5200b8a46a813b5da1cad96ac07) +mstore(0xcb80, mload(0x98c0)) +success := and(eq(staticcall(gas(), 0x7, 0xcb40, 0x60, 0xcb40, 0x40), 1), success) +mstore(0xcba0, mload(0xcac0)) + mstore(0xcbc0, mload(0xcae0)) +mstore(0xcbe0, mload(0xcb40)) + mstore(0xcc00, mload(0xcb60)) +success := and(eq(staticcall(gas(), 0x6, 0xcba0, 0x80, 0xcba0, 0x40), 1), success) +mstore(0xcc20, 0x2e6b1c5b1b1cb551a1c3abb10fba025942bda466d6c000f76410caa8f3f5fa5c) + mstore(0xcc40, 0x234fad56ced129e9264b96df6e802974acee554ee530495f48f4ec9486e07b18) +mstore(0xcc60, mload(0x98e0)) +success := and(eq(staticcall(gas(), 0x7, 0xcc20, 0x60, 0xcc20, 0x40), 1), success) +mstore(0xcc80, mload(0xcba0)) + mstore(0xcca0, mload(0xcbc0)) +mstore(0xccc0, mload(0xcc20)) + mstore(0xcce0, mload(0xcc40)) +success := and(eq(staticcall(gas(), 0x6, 0xcc80, 0x80, 0xcc80, 0x40), 1), success) +mstore(0xcd00, 0x0b63a4536daf7c29df9674401cd1227dea73cfbd3717b9f84b1b6224f36d9155) + mstore(0xcd20, 0x0ba4f1ff18427b945265d7b70447e8d0b770f9a53fd6ccbcaf2632b26322c4d3) +mstore(0xcd40, mload(0x9900)) +success := and(eq(staticcall(gas(), 0x7, 0xcd00, 0x60, 0xcd00, 0x40), 1), success) +mstore(0xcd60, mload(0xcc80)) + mstore(0xcd80, mload(0xcca0)) +mstore(0xcda0, mload(0xcd00)) + mstore(0xcdc0, mload(0xcd20)) +success := and(eq(staticcall(gas(), 0x6, 0xcd60, 0x80, 0xcd60, 0x40), 1), success) +mstore(0xcde0, 0x2d75174dbcc1ffea6601c4c119a08953102f718430b7ec1402e422ba500ac44f) + mstore(0xce00, 0x1b3433b3dcca2f4acea2a0221d709cdd20ffb8d58745632805a2802464484c42) +mstore(0xce20, mload(0x9920)) +success := and(eq(staticcall(gas(), 0x7, 0xcde0, 0x60, 0xcde0, 0x40), 1), success) +mstore(0xce40, mload(0xcd60)) + mstore(0xce60, mload(0xcd80)) +mstore(0xce80, mload(0xcde0)) + mstore(0xcea0, mload(0xce00)) +success := and(eq(staticcall(gas(), 0x6, 0xce40, 0x80, 0xce40, 0x40), 1), success) +mstore(0xcec0, 0x264a45fcfff391274e6804bd174373577e1b1cbc85ee84e06c590d06400a7774) + mstore(0xcee0, 0x24ce5323508935dab0266bc2550466e84ccd7b01934c16baf0e4ab9372828849) +mstore(0xcf00, mload(0x9940)) +success := and(eq(staticcall(gas(), 0x7, 0xcec0, 0x60, 0xcec0, 0x40), 1), success) +mstore(0xcf20, mload(0xce40)) + mstore(0xcf40, mload(0xce60)) +mstore(0xcf60, mload(0xcec0)) + mstore(0xcf80, mload(0xcee0)) +success := and(eq(staticcall(gas(), 0x6, 0xcf20, 0x80, 0xcf20, 0x40), 1), success) +mstore(0xcfa0, 0x193ddc61b22ae282c7ec25bfef476983445a0efae060a6da8285abe7831b09f7) + mstore(0xcfc0, 0x14a7321e25b1143560caaf02670bbdc69a7632395e19f542b0d072c582a7a635) +mstore(0xcfe0, mload(0x9960)) +success := and(eq(staticcall(gas(), 0x7, 0xcfa0, 0x60, 0xcfa0, 0x40), 1), success) +mstore(0xd000, mload(0xcf20)) + mstore(0xd020, mload(0xcf40)) +mstore(0xd040, mload(0xcfa0)) + mstore(0xd060, mload(0xcfc0)) +success := and(eq(staticcall(gas(), 0x6, 0xd000, 0x80, 0xd000, 0x40), 1), success) +mstore(0xd080, 0x137b9485e064026ca98e4f8546a8076d178326cfaf3687bb46931abae7c262be) + mstore(0xd0a0, 0x2190310b7206b8f01807eaa3bc33c7365e24350e26867db6201b255079701607) +mstore(0xd0c0, mload(0x9980)) +success := and(eq(staticcall(gas(), 0x7, 0xd080, 0x60, 0xd080, 0x40), 1), success) +mstore(0xd0e0, mload(0xd000)) + mstore(0xd100, mload(0xd020)) +mstore(0xd120, mload(0xd080)) + mstore(0xd140, mload(0xd0a0)) +success := and(eq(staticcall(gas(), 0x6, 0xd0e0, 0x80, 0xd0e0, 0x40), 1), success) +mstore(0xd160, 0x0bedef9605cb6ec7c919cb6f6e279cf92212135e880e239e01a1bcd2b25ce277) + mstore(0xd180, 0x099e79dfcb5646d4fd80668eca07e1b23998c23bed07cd6d736e9e551befb7a4) +mstore(0xd1a0, mload(0x99a0)) +success := and(eq(staticcall(gas(), 0x7, 0xd160, 0x60, 0xd160, 0x40), 1), success) +mstore(0xd1c0, mload(0xd0e0)) + mstore(0xd1e0, mload(0xd100)) +mstore(0xd200, mload(0xd160)) + mstore(0xd220, mload(0xd180)) +success := and(eq(staticcall(gas(), 0x6, 0xd1c0, 0x80, 0xd1c0, 0x40), 1), success) +mstore(0xd240, 0x08ead2ff07afa5ab9d451c6cd72d8582e11d57edd92dcfca3d24f96a18652ff7) + mstore(0xd260, 0x106b36ac155f9c283ef4ffbfad0a24f45ed2176e3925214e0650bf5118392058) +mstore(0xd280, mload(0x99c0)) +success := and(eq(staticcall(gas(), 0x7, 0xd240, 0x60, 0xd240, 0x40), 1), success) +mstore(0xd2a0, mload(0xd1c0)) + mstore(0xd2c0, mload(0xd1e0)) +mstore(0xd2e0, mload(0xd240)) + mstore(0xd300, mload(0xd260)) +success := and(eq(staticcall(gas(), 0x6, 0xd2a0, 0x80, 0xd2a0, 0x40), 1), success) +mstore(0xd320, 0x139a73f32561d143c4b5431011941f28edae029ad920a541f52e0bd6c6badf87) + mstore(0xd340, 0x2cbb8342010126c690c9d0eda28d4c5bf7e019c9bbb97c97104eb65fdc9276ff) +mstore(0xd360, mload(0x99e0)) +success := and(eq(staticcall(gas(), 0x7, 0xd320, 0x60, 0xd320, 0x40), 1), success) +mstore(0xd380, mload(0xd2a0)) + mstore(0xd3a0, mload(0xd2c0)) +mstore(0xd3c0, mload(0xd320)) + mstore(0xd3e0, mload(0xd340)) +success := and(eq(staticcall(gas(), 0x6, 0xd380, 0x80, 0xd380, 0x40), 1), success) +mstore(0xd400, 0x17b80761a79329566449d0d378c2453c7a0e8e940bef80990045edbd596ccb7f) + mstore(0xd420, 0x106dea3b9873f88a7d491b68f040bb5e3c6c28177eb5ca408f6370fb271a60a8) +mstore(0xd440, mload(0x9a00)) +success := and(eq(staticcall(gas(), 0x7, 0xd400, 0x60, 0xd400, 0x40), 1), success) +mstore(0xd460, mload(0xd380)) + mstore(0xd480, mload(0xd3a0)) +mstore(0xd4a0, mload(0xd400)) + mstore(0xd4c0, mload(0xd420)) +success := and(eq(staticcall(gas(), 0x6, 0xd460, 0x80, 0xd460, 0x40), 1), success) +mstore(0xd4e0, 0x01e3156c0e0be3c8c3aa2cc3731cd459cd8b60d1eec037b522aa4c01202e13e4) + mstore(0xd500, 0x0cebeef466a25769968830d93029be049513e54dbb349bb1f1577df0beacc310) +mstore(0xd520, mload(0x9a20)) +success := and(eq(staticcall(gas(), 0x7, 0xd4e0, 0x60, 0xd4e0, 0x40), 1), success) +mstore(0xd540, mload(0xd460)) + mstore(0xd560, mload(0xd480)) +mstore(0xd580, mload(0xd4e0)) + mstore(0xd5a0, mload(0xd500)) +success := and(eq(staticcall(gas(), 0x6, 0xd540, 0x80, 0xd540, 0x40), 1), success) +mstore(0xd5c0, 0x087b57f031c6a5a18efa3947b0d24360cb6bc216e10d2d55593031f48f206d3b) + mstore(0xd5e0, 0x124e5b40e788aead92e74e10a1ec1675aa481660f68fcc318115ef740321f4e6) +mstore(0xd600, mload(0x9a40)) +success := and(eq(staticcall(gas(), 0x7, 0xd5c0, 0x60, 0xd5c0, 0x40), 1), success) +mstore(0xd620, mload(0xd540)) + mstore(0xd640, mload(0xd560)) +mstore(0xd660, mload(0xd5c0)) + mstore(0xd680, mload(0xd5e0)) +success := and(eq(staticcall(gas(), 0x6, 0xd620, 0x80, 0xd620, 0x40), 1), success) +mstore(0xd6a0, 0x2ba244c15291a703d85e3ac244528841bafe476b9c1819fa056ca0819c515fec) + mstore(0xd6c0, 0x26ade754188da47aa063157d420f7fc095059873584c3e18a4f3397dc3b53ed0) +mstore(0xd6e0, mload(0x9a60)) +success := and(eq(staticcall(gas(), 0x7, 0xd6a0, 0x60, 0xd6a0, 0x40), 1), success) +mstore(0xd700, mload(0xd620)) + mstore(0xd720, mload(0xd640)) +mstore(0xd740, mload(0xd6a0)) + mstore(0xd760, mload(0xd6c0)) +success := and(eq(staticcall(gas(), 0x6, 0xd700, 0x80, 0xd700, 0x40), 1), success) +mstore(0xd780, 0x1a177d9dac1c9eff4524c20ae8f21c5485c17746d673d4bf05e58241a7ae4af7) + mstore(0xd7a0, 0x226a7a2d3aca16894d047531a13153e7558485c88290717c88960d0adaf59775) +mstore(0xd7c0, mload(0x9a80)) +success := and(eq(staticcall(gas(), 0x7, 0xd780, 0x60, 0xd780, 0x40), 1), success) +mstore(0xd7e0, mload(0xd700)) + mstore(0xd800, mload(0xd720)) +mstore(0xd820, mload(0xd780)) + mstore(0xd840, mload(0xd7a0)) +success := and(eq(staticcall(gas(), 0x6, 0xd7e0, 0x80, 0xd7e0, 0x40), 1), success) +mstore(0xd860, 0x19c43a3eb6b7ae0da8e3a2cc8259bc3bcf180133f61e6c13b4051265c41c36ce) + mstore(0xd880, 0x04864fb412b576c2fcb1f4e572bddec16c3c9e6b85a7a205f735fe5b8fb50a01) +mstore(0xd8a0, mload(0x9aa0)) +success := and(eq(staticcall(gas(), 0x7, 0xd860, 0x60, 0xd860, 0x40), 1), success) +mstore(0xd8c0, mload(0xd7e0)) + mstore(0xd8e0, mload(0xd800)) +mstore(0xd900, mload(0xd860)) + mstore(0xd920, mload(0xd880)) +success := and(eq(staticcall(gas(), 0x6, 0xd8c0, 0x80, 0xd8c0, 0x40), 1), success) +mstore(0xd940, 0x09204711070c4f4b48274917a22163ecae98e05f41d6ecca855e4797adfded61) + mstore(0xd960, 0x2cc2e6c58ad4433d3e6b3cc643fc469a8f1b6189c540cb97c778d9266a951f90) +mstore(0xd980, mload(0x9ac0)) +success := and(eq(staticcall(gas(), 0x7, 0xd940, 0x60, 0xd940, 0x40), 1), success) +mstore(0xd9a0, mload(0xd8c0)) + mstore(0xd9c0, mload(0xd8e0)) +mstore(0xd9e0, mload(0xd940)) + mstore(0xda00, mload(0xd960)) +success := and(eq(staticcall(gas(), 0x6, 0xd9a0, 0x80, 0xd9a0, 0x40), 1), success) +mstore(0xda20, mload(0xbc0)) + mstore(0xda40, mload(0xbe0)) +mstore(0xda60, mload(0x9ae0)) +success := and(eq(staticcall(gas(), 0x7, 0xda20, 0x60, 0xda20, 0x40), 1), success) +mstore(0xda80, mload(0xd9a0)) + mstore(0xdaa0, mload(0xd9c0)) +mstore(0xdac0, mload(0xda20)) + mstore(0xdae0, mload(0xda40)) +success := and(eq(staticcall(gas(), 0x6, 0xda80, 0x80, 0xda80, 0x40), 1), success) +mstore(0xdb00, mload(0xc00)) + mstore(0xdb20, mload(0xc20)) +mstore(0xdb40, mload(0x9b00)) +success := and(eq(staticcall(gas(), 0x7, 0xdb00, 0x60, 0xdb00, 0x40), 1), success) +mstore(0xdb60, mload(0xda80)) + mstore(0xdb80, mload(0xdaa0)) +mstore(0xdba0, mload(0xdb00)) + mstore(0xdbc0, mload(0xdb20)) +success := and(eq(staticcall(gas(), 0x6, 0xdb60, 0x80, 0xdb60, 0x40), 1), success) +mstore(0xdbe0, mload(0xc40)) + mstore(0xdc00, mload(0xc60)) +mstore(0xdc20, mload(0x9b20)) +success := and(eq(staticcall(gas(), 0x7, 0xdbe0, 0x60, 0xdbe0, 0x40), 1), success) +mstore(0xdc40, mload(0xdb60)) + mstore(0xdc60, mload(0xdb80)) +mstore(0xdc80, mload(0xdbe0)) + mstore(0xdca0, mload(0xdc00)) +success := and(eq(staticcall(gas(), 0x6, 0xdc40, 0x80, 0xdc40, 0x40), 1), success) +mstore(0xdcc0, mload(0xb20)) + mstore(0xdce0, mload(0xb40)) +mstore(0xdd00, mload(0x9b40)) +success := and(eq(staticcall(gas(), 0x7, 0xdcc0, 0x60, 0xdcc0, 0x40), 1), success) +mstore(0xdd20, mload(0xdc40)) + mstore(0xdd40, mload(0xdc60)) +mstore(0xdd60, mload(0xdcc0)) + mstore(0xdd80, mload(0xdce0)) +success := and(eq(staticcall(gas(), 0x6, 0xdd20, 0x80, 0xdd20, 0x40), 1), success) +mstore(0xdda0, mload(0x7a0)) + mstore(0xddc0, mload(0x7c0)) +mstore(0xdde0, mload(0xa140)) +success := and(eq(staticcall(gas(), 0x7, 0xdda0, 0x60, 0xdda0, 0x40), 1), success) +mstore(0xde00, mload(0xdd20)) + mstore(0xde20, mload(0xdd40)) +mstore(0xde40, mload(0xdda0)) + mstore(0xde60, mload(0xddc0)) +success := and(eq(staticcall(gas(), 0x6, 0xde00, 0x80, 0xde00, 0x40), 1), success) +mstore(0xde80, mload(0x7e0)) + mstore(0xdea0, mload(0x800)) +mstore(0xdec0, mload(0xa160)) +success := and(eq(staticcall(gas(), 0x7, 0xde80, 0x60, 0xde80, 0x40), 1), success) +mstore(0xdee0, mload(0xde00)) + mstore(0xdf00, mload(0xde20)) +mstore(0xdf20, mload(0xde80)) + mstore(0xdf40, mload(0xdea0)) +success := and(eq(staticcall(gas(), 0x6, 0xdee0, 0x80, 0xdee0, 0x40), 1), success) +mstore(0xdf60, mload(0x820)) + mstore(0xdf80, mload(0x840)) +mstore(0xdfa0, mload(0xa180)) +success := and(eq(staticcall(gas(), 0x7, 0xdf60, 0x60, 0xdf60, 0x40), 1), success) +mstore(0xdfc0, mload(0xdee0)) + mstore(0xdfe0, mload(0xdf00)) +mstore(0xe000, mload(0xdf60)) + mstore(0xe020, mload(0xdf80)) +success := and(eq(staticcall(gas(), 0x6, 0xdfc0, 0x80, 0xdfc0, 0x40), 1), success) +mstore(0xe040, mload(0x860)) + mstore(0xe060, mload(0x880)) +mstore(0xe080, mload(0xa1a0)) +success := and(eq(staticcall(gas(), 0x7, 0xe040, 0x60, 0xe040, 0x40), 1), success) +mstore(0xe0a0, mload(0xdfc0)) + mstore(0xe0c0, mload(0xdfe0)) +mstore(0xe0e0, mload(0xe040)) + mstore(0xe100, mload(0xe060)) +success := and(eq(staticcall(gas(), 0x6, 0xe0a0, 0x80, 0xe0a0, 0x40), 1), success) +mstore(0xe120, mload(0x8a0)) + mstore(0xe140, mload(0x8c0)) +mstore(0xe160, mload(0xa1c0)) +success := and(eq(staticcall(gas(), 0x7, 0xe120, 0x60, 0xe120, 0x40), 1), success) +mstore(0xe180, mload(0xe0a0)) + mstore(0xe1a0, mload(0xe0c0)) +mstore(0xe1c0, mload(0xe120)) + mstore(0xe1e0, mload(0xe140)) +success := and(eq(staticcall(gas(), 0x6, 0xe180, 0x80, 0xe180, 0x40), 1), success) +mstore(0xe200, mload(0x8e0)) + mstore(0xe220, mload(0x900)) +mstore(0xe240, mload(0xa1e0)) +success := and(eq(staticcall(gas(), 0x7, 0xe200, 0x60, 0xe200, 0x40), 1), success) +mstore(0xe260, mload(0xe180)) + mstore(0xe280, mload(0xe1a0)) +mstore(0xe2a0, mload(0xe200)) + mstore(0xe2c0, mload(0xe220)) +success := and(eq(staticcall(gas(), 0x6, 0xe260, 0x80, 0xe260, 0x40), 1), success) +mstore(0xe2e0, mload(0x920)) + mstore(0xe300, mload(0x940)) +mstore(0xe320, mload(0xa200)) +success := and(eq(staticcall(gas(), 0x7, 0xe2e0, 0x60, 0xe2e0, 0x40), 1), success) +mstore(0xe340, mload(0xe260)) + mstore(0xe360, mload(0xe280)) +mstore(0xe380, mload(0xe2e0)) + mstore(0xe3a0, mload(0xe300)) +success := and(eq(staticcall(gas(), 0x6, 0xe340, 0x80, 0xe340, 0x40), 1), success) +mstore(0xe3c0, mload(0x960)) + mstore(0xe3e0, mload(0x980)) +mstore(0xe400, mload(0xa220)) +success := and(eq(staticcall(gas(), 0x7, 0xe3c0, 0x60, 0xe3c0, 0x40), 1), success) +mstore(0xe420, mload(0xe340)) + mstore(0xe440, mload(0xe360)) +mstore(0xe460, mload(0xe3c0)) + mstore(0xe480, mload(0xe3e0)) +success := and(eq(staticcall(gas(), 0x6, 0xe420, 0x80, 0xe420, 0x40), 1), success) +mstore(0xe4a0, mload(0x9a0)) + mstore(0xe4c0, mload(0x9c0)) +mstore(0xe4e0, mload(0xa240)) +success := and(eq(staticcall(gas(), 0x7, 0xe4a0, 0x60, 0xe4a0, 0x40), 1), success) +mstore(0xe500, mload(0xe420)) + mstore(0xe520, mload(0xe440)) +mstore(0xe540, mload(0xe4a0)) + mstore(0xe560, mload(0xe4c0)) +success := and(eq(staticcall(gas(), 0x6, 0xe500, 0x80, 0xe500, 0x40), 1), success) +mstore(0xe580, mload(0x9e0)) + mstore(0xe5a0, mload(0xa00)) +mstore(0xe5c0, mload(0xa5c0)) +success := and(eq(staticcall(gas(), 0x7, 0xe580, 0x60, 0xe580, 0x40), 1), success) +mstore(0xe5e0, mload(0xe500)) + mstore(0xe600, mload(0xe520)) +mstore(0xe620, mload(0xe580)) + mstore(0xe640, mload(0xe5a0)) +success := and(eq(staticcall(gas(), 0x6, 0xe5e0, 0x80, 0xe5e0, 0x40), 1), success) +mstore(0xe660, mload(0xa20)) + mstore(0xe680, mload(0xa40)) +mstore(0xe6a0, mload(0xa5e0)) +success := and(eq(staticcall(gas(), 0x7, 0xe660, 0x60, 0xe660, 0x40), 1), success) +mstore(0xe6c0, mload(0xe5e0)) + mstore(0xe6e0, mload(0xe600)) +mstore(0xe700, mload(0xe660)) + mstore(0xe720, mload(0xe680)) +success := and(eq(staticcall(gas(), 0x6, 0xe6c0, 0x80, 0xe6c0, 0x40), 1), success) +mstore(0xe740, mload(0xa60)) + mstore(0xe760, mload(0xa80)) +mstore(0xe780, mload(0xa600)) +success := and(eq(staticcall(gas(), 0x7, 0xe740, 0x60, 0xe740, 0x40), 1), success) +mstore(0xe7a0, mload(0xe6c0)) + mstore(0xe7c0, mload(0xe6e0)) +mstore(0xe7e0, mload(0xe740)) + mstore(0xe800, mload(0xe760)) +success := and(eq(staticcall(gas(), 0x6, 0xe7a0, 0x80, 0xe7a0, 0x40), 1), success) +mstore(0xe820, mload(0xaa0)) + mstore(0xe840, mload(0xac0)) +mstore(0xe860, mload(0xa620)) +success := and(eq(staticcall(gas(), 0x7, 0xe820, 0x60, 0xe820, 0x40), 1), success) +mstore(0xe880, mload(0xe7a0)) + mstore(0xe8a0, mload(0xe7c0)) +mstore(0xe8c0, mload(0xe820)) + mstore(0xe8e0, mload(0xe840)) +success := and(eq(staticcall(gas(), 0x6, 0xe880, 0x80, 0xe880, 0x40), 1), success) +mstore(0xe900, mload(0xae0)) + mstore(0xe920, mload(0xb00)) +mstore(0xe940, mload(0xa640)) +success := and(eq(staticcall(gas(), 0x7, 0xe900, 0x60, 0xe900, 0x40), 1), success) +mstore(0xe960, mload(0xe880)) + mstore(0xe980, mload(0xe8a0)) +mstore(0xe9a0, mload(0xe900)) + mstore(0xe9c0, mload(0xe920)) +success := and(eq(staticcall(gas(), 0x6, 0xe960, 0x80, 0xe960, 0x40), 1), success) +mstore(0xe9e0, mload(0x4e0)) + mstore(0xea00, mload(0x500)) +mstore(0xea20, mload(0xa920)) +success := and(eq(staticcall(gas(), 0x7, 0xe9e0, 0x60, 0xe9e0, 0x40), 1), success) +mstore(0xea40, mload(0xe960)) + mstore(0xea60, mload(0xe980)) +mstore(0xea80, mload(0xe9e0)) + mstore(0xeaa0, mload(0xea00)) +success := and(eq(staticcall(gas(), 0x6, 0xea40, 0x80, 0xea40, 0x40), 1), success) +mstore(0xeac0, mload(0x560)) + mstore(0xeae0, mload(0x580)) +mstore(0xeb00, mload(0xa940)) +success := and(eq(staticcall(gas(), 0x7, 0xeac0, 0x60, 0xeac0, 0x40), 1), success) +mstore(0xeb20, mload(0xea40)) + mstore(0xeb40, mload(0xea60)) +mstore(0xeb60, mload(0xeac0)) + mstore(0xeb80, mload(0xeae0)) +success := and(eq(staticcall(gas(), 0x6, 0xeb20, 0x80, 0xeb20, 0x40), 1), success) +mstore(0xeba0, mload(0x5e0)) + mstore(0xebc0, mload(0x600)) +mstore(0xebe0, mload(0xa960)) +success := and(eq(staticcall(gas(), 0x7, 0xeba0, 0x60, 0xeba0, 0x40), 1), success) +mstore(0xec00, mload(0xeb20)) + mstore(0xec20, mload(0xeb40)) +mstore(0xec40, mload(0xeba0)) + mstore(0xec60, mload(0xebc0)) +success := and(eq(staticcall(gas(), 0x6, 0xec00, 0x80, 0xec00, 0x40), 1), success) +mstore(0xec80, mload(0x660)) + mstore(0xeca0, mload(0x680)) +mstore(0xecc0, mload(0xa980)) +success := and(eq(staticcall(gas(), 0x7, 0xec80, 0x60, 0xec80, 0x40), 1), success) +mstore(0xece0, mload(0xec00)) + mstore(0xed00, mload(0xec20)) +mstore(0xed20, mload(0xec80)) + mstore(0xed40, mload(0xeca0)) +success := and(eq(staticcall(gas(), 0x6, 0xece0, 0x80, 0xece0, 0x40), 1), success) +mstore(0xed60, mload(0x1e60)) + mstore(0xed80, mload(0x1e80)) +mstore(0xeda0, sub(f_q, mload(0xa9c0))) +success := and(eq(staticcall(gas(), 0x7, 0xed60, 0x60, 0xed60, 0x40), 1), success) +mstore(0xedc0, mload(0xece0)) + mstore(0xede0, mload(0xed00)) +mstore(0xee00, mload(0xed60)) + mstore(0xee20, mload(0xed80)) +success := and(eq(staticcall(gas(), 0x6, 0xedc0, 0x80, 0xedc0, 0x40), 1), success) +mstore(0xee40, mload(0x1f00)) + mstore(0xee60, mload(0x1f20)) +mstore(0xee80, mload(0xa9e0)) +success := and(eq(staticcall(gas(), 0x7, 0xee40, 0x60, 0xee40, 0x40), 1), success) +mstore(0xeea0, mload(0xedc0)) + mstore(0xeec0, mload(0xede0)) +mstore(0xeee0, mload(0xee40)) + mstore(0xef00, mload(0xee60)) +success := and(eq(staticcall(gas(), 0x6, 0xeea0, 0x80, 0xeea0, 0x40), 1), success) +mstore(0xef20, mload(0xeea0)) + mstore(0xef40, mload(0xeec0)) +mstore(0xef60, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0xef80, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0xefa0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0xefc0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0xefe0, mload(0x1f00)) + mstore(0xf000, mload(0x1f20)) +mstore(0xf020, 0x0181624e80f3d6ae28df7e01eaeab1c0e919877a3b8a6b7fbc69a6817d596ea2) + mstore(0xf040, 0x1783d30dcb12d259bb89098addf6280fa4b653be7a152542a28f7b926e27e648) + mstore(0xf060, 0x00ae44489d41a0d179e2dfdc03bddd883b7109f8b6ae316a59e815c1a6b35304) + mstore(0xf080, 0x0b2147ab62a386bd63e6de1522109b8c9588ab466f5aadfde8c41ca3749423ee) +success := and(eq(staticcall(gas(), 0x8, 0xef20, 0x180, 0xef20, 0x20), 1), success) +success := and(eq(mload(0xef20), 1), success) if not(success) { revert(0, 0) } return(0, 0) diff --git a/justfile b/justfile index 609d503e..3a12633d 100644 --- a/justfile +++ b/justfile @@ -11,6 +11,5 @@ setup-circuits: cargo run -r -- committee-update -o artifacts -k 18 gen-step-evm-verifier: cargo run -r -- sync-step -c ./lightclient-circuits/config/sync_step.json -o evm-verifier ./contracts/snark-verifiers/sync_step.yul - # cargo run -r -- sync-step -c ./lightclient-circuits/config/committee_update.json -o evm-verifier ./contracts/snark-verifiers/committee_update.yul gen-rotation-evm-verifier: cargo run -r -- aggregation -c ./lightclient-circuits/config/aggregation.json --app-pk-path ./build/committee_update.pkey --app-config-path ./lightclient-circuits/config/committee_update.json -i ./rotation-snark -o evm-verifier ./contracts/snark-verifiers/committee_update_compressed.yul diff --git a/lightclient-circuits/src/util/circuit.rs b/lightclient-circuits/src/util/circuit.rs index 6966d49c..0b0d9297 100644 --- a/lightclient-circuits/src/util/circuit.rs +++ b/lightclient-circuits/src/util/circuit.rs @@ -1,4 +1,5 @@ use std::env::{args, set_var, var}; +use std::fs; use std::{fs::File, path::Path}; use halo2_base::gates::builder::{ @@ -8,7 +9,7 @@ use halo2_proofs::plonk::{Circuit, Error, VerifyingKey}; use halo2_proofs::{plonk::ProvingKey, poly::kzg::commitment::ParamsKZG}; use halo2curves::bn256::{Bn256, Fr, G1Affine}; use serde::{Deserialize, Serialize}; -use snark_verifier_sdk::evm::{gen_evm_proof, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}; +use snark_verifier_sdk::evm::{gen_evm_proof, gen_evm_proof_shplonk, gen_evm_verifier_shplonk, encode_calldata, evm_verify}; use snark_verifier_sdk::halo2::aggregation::AggregationCircuit; use snark_verifier_sdk::{gen_pk, halo2::gen_snark_shplonk, read_pk}; use snark_verifier_sdk::{CircuitExt, Snark}; @@ -217,10 +218,6 @@ pub fn write_calldata_generic>( path: impl AsRef, deployment_code: Option>, ) -> String { - use snark_verifier::loader::evm::encode_calldata; - use snark_verifier_sdk::evm::evm_verify; - use std::fs; - let instances = circuit.instances(); let proof = gen_evm_proof_shplonk(params, pk, circuit, instances.clone()); // calldata as hex string

qs9d~g z8QxtR4GwKy5aiJz1+p{HA4fZ+kM~}OK{2cy8-IADH>twOvQexL`z4+3Z*q_LK?f~R zHu-M*f+eSrUgoB}7Q+kx=qAg+_@|r$ zcu+#}*kozXfvCRisMBydJ~+|YR8>J9pt#C$EX9oXmtBy4;%2yl=efl5`5XE48rR?% zCUHaMJ}hZkstgLZOy(|0ReP_|;?1hJxW}B}99uFwu>p~bpcP%nyiri+c^gL(d0?JJ zie}2)+<&1o28k&qpkmoKrGCZ6ueBL-^atoFn{QhtM^#f7UPOCmp67zT>+0KN=N_P5 zT<@6)3PO4c>Am9Fdz_l0fc=LM4U?7`kd5N=UeO)yMX^)+H_~ov{V{SUhkeXs%#W~+ zRZz=eh`cIL$I&}OA9L`cJ7+Ki6w1gA${-^oEk{rEN}LQDNA{jdNe&#s`fYm;rIk%T z1NTCdV{FZ}C}l*@ZPRDiWXRvn({GU;v*A6j#vlNV5a)I;9X)`Ow5to6XVGF}hqzpE zSPQI8U~h7~{J(mJbZIR%dq(J}^RL^z@Bngfhc_uRQ{zb!-i!v_(a5T~~DC^ht>l(g$Ok^)Oht!jegwJIcaIT8vM* zoB2HJW+ zx+tTzFgSf|SqVUKfUN8$V3_YXc6X|cn;COkhut71GaOjH)M)-+>cZ!!E&Jy%mmQS; zGVRf57JW!2hIjJi3@q5ZSJhGfqbR_TN%=uW3q1)kZ^Hwuu86uN2@t~zNnim`34Zxg z1h2ouD;-#5U8VAYuysQg;^(3#)WWV*3&N;Y0aVYjcBu+~t@vK_k=}uz6G~DI z+6z^atwg!t3ooklDZ~RGzl_s}FKAo&UmVe*dFZE9?cs$nHlMTpzufB2Y)8+4C~YXn0U{n|@VV)2kI?2L5{Z0_?jUAfg@$J=VHUS2D0EaN)s3`-m*-Q(m@Z`eSJWXEJG5^B%TnX4 zQbvQ7dkfc7`v5r2VVrb353}Iz6IDgZb&G05GS3f(NLY>nzrasw<;S+M(u;4ShzNfN zg)!tq37Z3as0Pw(%C1&tem1`ZlI?u<#o&0NpG|Ir&UL{&*DAgkHk5Tf-AWQx!9aaO zhM1ex-c*D1BM>*qDGaP7N-J7~AH8O<9SY$J2{R(Y-5z?DuRVE>*BnMDkd!ya z$!XjIh)`I|+h-O5pC#P+SXti+Jmd?q;EN1glNdOz(e6OjsUB=h$AqrOU0Z2o2sBa2 z!$o_q$|HxWclyWw`9Pc+9;AZ~A$IYD1hWK>EZ>LSVyuLSt~5Q( zAZ9M^itJ=rYOk2!f1o^dfuZCQ4v$mlgaL@*Ln^7Irs6~+t^Sx#Scv@QKz}~R6C$MO zY9-VTzHp%nQm&@wmS=dFVN%F)#m1uGn{9azvUsj{inW-ZJEf!^`X znXA3)qP^qKbbMVQB~|#HTZp{Y4875hPZ-!WR_Rh-7f|83px{p9NfY;J%UI`nHfoi! zB8=%&jl=1VC~n9x-5h3_x6`P2-TQwOrEx|&_m*{^xa;J2utmbsBI7r1>VAjsRSoO3 zG$lD(PpH(DDrNaL!pVKh8YACpJ=|yvjG;7#Ii$uaCwg*v>bC8tCZs`T#lmx>p?}ow zz%}-zm>uVuW4yL3S75fk$z-0l9Eeg=FdCS@_ptX*(XZl&`?N2n=p?-c@XY(T##fv@ zGtLgWl+gV}P8;7zn)4!o$A%6lrpoR8GJcrY<(plqvX@EG{q(x1#*wIhjbWo9MBWx} zCDE`n#czyjDcH9_CQ9f<@y36gK$508>hmvHg;e$lWTOh8zrp5EC)~j4OqrFye~UkG zjc(hm#D0b{f__!mXV+#R6;ck6xh13>_t<;5168WQrAR?LC`BjB->eGJ_XqGBN zvya2AltGWot;RD$2TJ$k^`93yI@P0|3KXJrRjbPYT+BZyK&SLRP!OiGqh=c0-ycJ< zdAu37uPRw@8=T2)3a?G)Lj(u^_h#!oS_jKveKhg6PeA+_D(W9(!N?O_O-tbS%Jbt3 zN?0@Dk4REy`5s|y>w!&{%qn42E4+yEhJ-N|(n!oPj5C;heDfoAOkRJJ+-RefXc&|J@c(iR}q8 zRO{wbPmDBX!PH`WqW~C$?TKk0Ye|c-y?^kyX=J&*BzuR`1)_PcgE6jBn{>w{$#qqQ zn_eXVQ1uNBB}AZnd9uf16}S2`CAa0mTvzvS^RB7-mal@BreAPpf5)9q`PJ4Goa8}3 z=IG;-+Cix1Pg5163DPAk`a@3~_VGul`+th)~ z7V$ISMZh`+7FSy)JaQDoREIx$&_I^O&yEQK|Is-=x1Tsh_x#svP(5RAF$|aaNTbJ9 z2t-{kE151O2xi=(>X#Q{o7?AF65HdE4n=DG-ba-=S-NaQ-am9btZeUAJ#w|)&T|k^ zF;Bz#nij!D6o!fgWvE;X-cjUhN?;F8VG`k>+Xu3E@P` zuu~oY=@bJ0kxDv_L|x?k6KP}Oztf=9oH^05u_`YgL{lu$nZo`~bSG+@>GEtYfq3zl zVEjm=XIEi{tDyG;qS=N@tuh|vGIu4oClOwZRzyb`;r?lX-AZce^YbUw!TN4~iiT5{ zxWhC&nFkNfC%Lsq^ZIs!e+!kzKka+l^M?i9lsNp-8Eu}q=hqFxIJLzNcSSma;f-Y( zo^d;kPf5z#ssFJ8^T=t-3_$cR~985ndfSMROC zRpoE!yUs0LM-=gahThV~03CpK6NImkXcytf9YhtbdH{${@rKgjb! z!H1CApAnRtB8V@R+G*KsU9hn?gl$!>I!9wOCx*X{lBD@TQ|=zByExHD;~+@`^uZt& zgg@rllP>#}(B>tn40tG8sR}AP4y9Xjs0&_Jp*O-{P<6Dgcvh(b5dw@W>{|9b%)LF( z%I0&c0Mga2vYL(SSd{KdnWah@pqf>2QO`c^Sxt73yEV%QIR-R#Vv79=@dSQeIV`_| zIC#Pgq@Ys5SF!sf)&m(E^n`z8Yzg#Sc!lFsW0So6t7``tZHa{}TAS;_M>4@lB@Hoh zgbZy{l#2%-jysVyh&?b&g3s4Bb|5AbSpMjaq2wv-IU$)U?{ADNcVYf!{phyYAiX_qk4W0l=NJt)fG+GIPf9WM2F?{)mkHK4q@B=Ey@e z3$i@G<8A7l%@aqqK$i@r*(4~pVA%R>lNgJ0!U;o8Tuvr+(O3X|Y=x`7g~V3VJ;9a! z7x;fUgJJk-T#5lSAo9rvp2e4(p6si}BxPD4C;>OkT zG}E0?^2u#emzYJc8us(^M=_OA7H_S|+F*EmI~N75XKm ztOzYPD}p83s-iZ}%l%4e5wcp@?#y`}#yV1YZET)KW*C%5nJcm7Wlx#B6CKg4<5(@C zpYLQ>+&GcCq>Kv<|$9YP6flI-kT0ro4tt=R%wg< zv+@n60Cg3<%bn3GIkLMgz7+vDI-)X6MF zhgStecmb+V#8NSmjo0sml&RF&E@_^u!$3%h`AgwXX3iiXyE$$Gn4cQ?{Uaq!X}ggz z$29e^*p#pb#VwbCD2}8zO|b_BR_hJJ!e3}l-H}7ByvIi1-tj+Pkg_ZyB@kQ3H?O>q z2))RwVASwedx`~FUpE_Zq7FdfL?Ex&vL$usA_|FxxRBHdDa4akIIVT$c22dU#ycp~ z6GNuo2raF?6o|@9r>3*MnAsP55ni9^*xrB#GU2}oBJ^f`GL%%74lURXC(iho@uLP`eQ6gfsym3J_O)GxJ84`Os97KCvmPoYi; zAZ{0Abf?F$ClJ@~#*oz*G}ZOqGW&cw#QMBn+?# zw?gB*1T+%mldk(X9ofB-5V4|jzgj+2aia4a3VP-c`piik9v4c2{>M?}Bx3{0w_(Tz z{)9MHV_tbXv za*O!RJNHY|yrrxj-)=fQyR?2SV>pdGrU0 z5&~*yVm@y+NhMP?vMi58A3B~HeMQYCv(hjFf&i)vQWG&XFFh>%_Q~ODf9xTJCG5Bj za`!IJt-z6|eMKT)BZuyO`q~zkOm~B6r7^X7}xOELuK&fosa1hWbIX{108Ki8jxR z4&HZZ42W%w{j?RIy=bjI3Q7HPARr;cFK(%-kkMc9#QRp2r<|m6!N# zx&1@7DhA&pObV>hD-PCgk9=a&Pp*?m3Ypsxxb<1a=bksRN3J89^H9->Gry51H`NuS zVKdPToKRB|Gle?{UIy0cFIgk<=-o@`^h>sGt*viA6OiA@){7}L0l{$)e_M)3;dd|N z;jHN0?Y`#mPp60t%AQ7pY7ras*t7ah1n+O*kdQ&X-31qyc5xedFQt^V6&ccbe ze3WxbnLT}iDK9>bw1)&m1uIh*z?ty&b6C?3N<~}5C2*_=p2?j2sf-4=?t_8Tv(P}*gzYUK4S@b56W#ehP2foci>BO%3JfLt(~*MYjAfd5Lq=QL zhLek(Cib93ni>*;IsZs+Q%P|dTe+bc(01>?WH2!m%Nr8Dmv_YX`fIq$I(XY`lv6PV`ODrs74sCyNS!(R18G6~olp_=g z4J~@f0f^iSMDDYd9BeOq^X7JN(`+^L_3dwdkX5eTEYwa(E?HV}cusbpB|dWrfL@={uxGEp zDd-kCyWs>5K8T>jlZm2r&z?@s&gYp@7*`}+DX@?Onpy_mY@!oJz<9E1kr7@pQ@M^2 z@;hGjkIR^k3u(<^8j*=S5`Bxw9xrjUrOGQi7-#{yJr5)T%N6Pap^f?-2$FKzJ%%{_ z(|bJbUxC8h7&Y-Qlj9QQ&~d6cTUP|}G}_zucXsKT=?l(XS>6@|+5O?^xnOX}e9Niw zM!;*UXE2;9I{I$h*C&Q#l+6Zt6weQMh>WSJ-ib0qtj)9x7T0Bb#c(PZ{5kgb$c7@G zhQ@}bk=;vIp5Fwy#$eP-?UbW9S?GWBi~<7Z8TZ~DPzLs6u{WVVep>U7qm_z!b)1P$ zI?f2rA?!5m$aN$IOVACy9&ki6cvmw-xmO~sOFEb-vY}3u2r-8C2n%)_XOR+6Dhr8; z!&LWH>{wEd!D8h@wG789EV#+f@1-%#FV?X{G7_Z*NEcrW?mSUcPqG|9!*seMXLvH< zv^(xU_YZkk$`LX&Jyn>B)Ty6dtwcyXWjXTExyPdM2_nYW6P9FM<78Vk{as1=cBa8Z z*E2QsZXZk7if9>xjz{!6vug}~O1}6d#!go9bSSXOmr@-Y5FHk&i7R#e0r*+WthXeHIoymY6a*eEfXP(A zl3R5$MicR_&XMeT;A;aH-Ls@J#2JJ{r|N&ZPB{e@aR_J6L^ar2m}%m|q^Sf{F%d6o zXxb#%QQpvD4ev-oD2%?JE#Z~rHuhZS->Q2$kaE}Bt1tNml2Vj3Z9w8i&!XTF`?6!G z!W#W86o*jljaCoK`9%2On7&--rcXkg zWM;gs(9)R{nu$xo58_Bc#pXpA9e=@13vpb!Ubf>8VI-JKX7pPU`)AX|pSX;T(=b0@ zbM0<6ff?w^T(^&ztnh{;jaK*R$LRs@a&dQJK(AL#Mps1827juyuUV_8NxHc9@g0yy zaE7}sEypdAw!`)}O9F>?$Uk7J3ekjn! zaVFO#_vG%HsHh8YjJsu3+z*wl79%&p8Bee)mZT5mn~HYryXjgRUuqJYbd{&}@>$9` z6*|IiPyXi#S!j#}D+Pjb_X)o!MM*Crl)<&3?b`uM+3l1><-o#cGepLtL?`}G*rRL4 ziK|)81E~nH)E*|z-Vv$}YQNqmX1a31* zK97XT?}#jT&yip@0W~pVR@JNZOL~RqF-s#8Xf0Ipw3X8y2n(_-pgaDEzusK|{ZX8! z&z3&PPa)c`%DfCUJbLvR@fku#7Mk#x$>=6ym$2cuxKH?g%Shmlu7iW-;({>U;Gqdq zqX0_ZeE$k)@~+=2FTz+r;z?TUX*cC}_(Aq_>&>@UqaF?wjL*T}rg=NT8eW2KLd=Wo z8;%il^MeWrHjcmYsud$g+ekrS6ViN~0I zU6nU=*;>otT`2iDN$v?FFl|*Oyg7YW_sYu(dC0W+rRqLXn_k@)vVo`IJbA@gl)=I; z9a{h-WzC5D$X)2=4}MbG-2gq%a3$<@XfX^ZFu*8RE$;(2q$WS18oNmGu4n042R3`% z&Xl7@g-=jA<%PpsEr}f=TvO$yQ5ZO6iC?(4O?X|wvirDyi_FFY@}9o&J&W=^V@;eE#WAy;-^EZ5G581pMRxM2f+Ig$C+P4A>uM{GU=B#`2C1 zYSJG_!PazbtlX%a-NNoa_Ygvxm78_{wml(JXg8<{*A|-RS~Qq1i-WPsiHT5I8n3?Z z(fUN@p-lkFAl0!sC()+F1CBs~iMh)(vE9NT7Kn05tGW~3*=(V={^(~<49JS_49N1J zKk)5(Z8r}5tx)9sn0Z=Ee({iRiC1T@B4p`$X1c*Cco6?$_N6-~sRFbPkj^~$+Z|N7 z>vh3nVL~qMIcGB4;7z>NnbmEx;rA;tci!A|}|s2l5G!+^&75WsSoh7dwIQQYozM)@Pibt7!n>#p8R zJ*w`#3euHNSF8{UN5!!42?A2@o#uH$upS?r$lK;}HALYfr9;U{*tCcn;eF)wm=dOP z6E9ve&oljaPbbgJzbw??XP(>v^Rj?pc;&|h(8VxdUGkL2OQR78`iwK3YSNGw2valXs zl|GL@nm24gnMQPha{deE*#I8tx)M-mg!U_%AaZ3KFG~+`EP|Yp^z}(;X@)5gv#@Bs z+xuT_5GV8b?>t49-21oG?@jvD!a4(oj=>D*-tU!;cekOBfh>(G>w#G*=`0jRUPhy)o) zCN!r7WKx1dDyvB$r@+uC4Rnu6vAFrXF#6t^U84Yz75ZpU)6GJW!&x32W;R|-d&9U5&s1cq^X@ND5z)fKs7$S#jjMXT zM1{se7vnts>}Tw0mzWh4t8P3!k<>jN!Omn8D~yV&K%%;%^Dp0dQY7efj2;uX^{&&8 zvW1MI$ZWI@aPWoWaQFzHpxfa7#W-7%M7}Jl+81i4R`%k*;WTx9jR&`-@3F71wCK&w zeR_nZ<#u?+>AV7xet8Cu7J-U@%TIdGPO)otEyp5I1jSQyY84xgpJ29C$36CD5r9DQ zd5%M}NZxctSSx`10qC#uc{uES(5N)P$N@XiBcB@WB4XTXVxoe}Tj>rGu2@Y0JK^EF4p>3LZl;4t}USOVz?`#aB9Q$uvFm2CP;?oBk|A8bd%rs{iR>K|7{N~2aO0G zC`5xlz}MmwPr7@&B>-8B%UrS@{?P00%umk(mHVek=lp8DG6jkwH7tO0d5@&eGLJ0l zD`cIJ;vyKIhRGB4pkSf$vIxglele}(V-KF*Tr0nWGVx{{cGJ!7-MC&F&MWR4at7~6YH!Wu@ESXH}J@pOVy zsTk9DlY~cC8Kx4HvxZ2rr^~tL*hO?n?T|_S$(o?0mz#9BXW^DV5NDN6{Gq3$7igTI zI$zMbB|yF&(`?iCVbSKifB^hLPtDRe>0{r0dxGN6&j$}ai$KZhL>fYAb7TPB`um({ zqHk~yMvmGvtat=Vxpe(E^O!QA;pMG>LGsdKhi<`wipdilEq$95I*w%6JbL1mrpbcb zPfLd%W9-)Vu68ls)3Dq{`3wsWK#m^6W0d((bum^uDT(+G?E)DeEwp^!DAQI?U7&>m$Y-4f}3bWc7Cpzi5Iz7^@qpT(UVhwlYjnaJHAnlFf zi)3LEd~+J~3CqW_RllrZAwLf>jDomu+s1Vw>egNxSdwP0EI3fGa_ee{D(3K|{>PqEF6pdsf0M$lWI{lNDeK z`7)VU$b#{2I}IXpbD0PRZ3c+Mle78DZPD{u3bVbWLk}z;7W?4P!y#~Io(2XGA zc4=)xE~|#N)k>)JD;2Nn*i~1G%GkH!P9zWlPa`Db1@8l9m?ZMAq5RyXEh=~GZ_jpz z6tQ_0kk4t9r+J!j{`%>_Be5K~*dBh#S@!#ZE72-QZJLR30?9^#88|tl_t%Ikq9dc; zr4O*}zqU)&n$)?pIbHT8Ny}7?;xCfh=wlSXt*p==d|6etE7d19khp80HH##-xK>7i z5*BXIRpF*VBAJl8$xcbYUEtr17DcC%Z7-tCU}Ovk1R07iw2PX}+j@Y;Lj9rW@LSuq z!gHUV)>fV2#lr*ZXy7$GY`-@nu=OMV%^n{ykJGhI;x{RUvl&zWQyCfp^e{}Pj)2|4 zIOI1{$FH4fKzqL;pe|&8t@WAe6N0HGzuN%AmO1?0!N4=>mPn%%Jk7s3E^&NwtcXT0 zm~f$O);otk+qB+mCnI){;^PleRzE^0J%wc9kb2>yTJGXav;fnT%$t=jyVsMgE1Moj zmpfhHj~nb1IMX0Rc9yMHQ35;uPvkgT1jgqGUcVN8-eaxIB>mT;Fp#s^24Yo*%fiC& zFK)P1;7x7gp2oVfFcg!6c>28bE^TA`Ma-eU;Z!2OBm9NCN&QBK|F^T&zk&#tQ&GWA zme)-N!}3`x|~9-V6?CWjT*d)`~8w3o>{KBR({3=W{xVD^$~N zt{kepzt3dDM4I%+#Xi8A^-qgY;GQJDHNf!mNZ87`DjOm8s@_WoA)p9NV;bdPIZE0+ zf=vwX4T2ol0P^Aom(Ods1%ljFpnYd`0skeSu-uQ|!-^&81RFQpj4(d+M+)JrA#BjT z1=iN$Z8emW^e0p&qzsq9Nk~Z`kB>_+H63m5@%rx0qG#-_993(?SexJXb% z?<_xu$#dVWLC$T$lH}RjCxZypjFiL!w?zYk!&$3^_6vx(BlzouiLo<5R!|ftjJYq0 zDRFb6CkX%emilICbLP3;m@A$5be0g_i@NTLiNEM5-`tnQa0X3q)_NR?#q4u>Nfg;( z+C?N0*W8=KLb3jCwgo__2ar%zR?>LUe30TZ4^^G|??d#^C<)4XVhXiodUM>y$wD;Yer&w#;(?u8)ju&a z#vn04g>dq0RcA|DFrgQ=Cu3)^3}YY6k;xQ%!#MJbJJL-Pfn-&=z7OjzBB1rnUm)24 zJwU?01|m?m!FAcrN$=OeQc2As+>7QbYMT`ll0u&F+eRe8H2$H2tM~N~#{C`sqn^&b zGlbx>uC zzRix(ZH2~?_ZLCff)*MBk#-YsdWyODo^We)1;`g;@P=DYZ}CEx_cX^gnPh)Yxw{3U zi5#Qm#Of;EU9G@>e#U}!7q&of>IIV6`YMY?rt8GSDaDIle@Qh*fpxTykB<7Pi(Xyh zOodsg4LB+>gpU>X@Z-u2C{U=6WDDt8ujG!?zQ8_znsvr6xVDPTD-i2ymnG^o{aJxnjZvg8ATbPTmz(j(Nyg@Cwb`L6H-DL^YE~vk~ zvu$iD4BsoG0Fs&)0wj@%Tlll@@*ymxumnVYmDQ1YfEXfBl2B0KR&lrmtmAe$kG<@A zeP6P(Q;s$HH#S@S`x#_j9(m(QgKYWMwWUwR$vTp?j439?N3W&^Ir`NLJo|;h5pzqO z(_&k{vuMC)SU$JPau(9Yju2-g<5Fh~f{YLbYltYBgT;P|RAUbpZ4m5bWj;2$rg2i7kx4!FH79`Yyng@e_QqY z`i!&|bSVl?@}p!n=z}xP(QmuCy><>3Wjwo4?L~a|<@1Az;-)}pFz6H9d}&#zw_=K&}6@LxYpb z^lj@k(cA%IpjokG!WH*#YnF)d+fI#QZs{AG^4P@&-#!x|eOg;Ww<_6U{t5X@R}+y; z@Bij=@A6rF<2}rfJ|*;gYGdd4Y2PM`+rbg9*lHbx_V0r$BVw<9y=D(yqFdQb)kyN+ zGmABF@YUw>&Zzjxpr<8SJ&LEd)Yt1Oc>zuInZLFr;J-~*=)GA(^NnmQK&pFeZLu(l z_FLve=ZqJK!!n@R3KX)SnUS~vvs6#q%zPoKN4(PDpYh7F3M|$u_ms_$jWoz2YQM?M zhB{~Xlwh&}XZNdo(BvokA-fbW*Qe&~Xlwk1Pb$2{29n`1 z9Glu!MpT5jZ`d;n@%i9J5aB!~38h7>`Y-nR=zyV7e>a&>>-p}uHbnlnP!8meh%ebt{aU;LEuL5N?tG$gG-c3pIvtGDIe+ahtH{m-whIG z=K_RWJsuh$Feese-2q40re(P$5W){FJIdR+4&J5qxJ$U`WLziTdJs^1NFu=4u>1sp znD`WJdL%7i`JaZc)HJXS)sVv2E06+8@FUV3*hE4(!{*E>P)YddrcEhitAmOmX1hsB zcM~#AL4x|C1H)dih3iGqU|fPm<&m${mx88G>Q425$O$XVX)NJ0hjA4@h(>Mcdl^Yc zR3faCsXVUFb&OP8zj%bw9T)r%LilSs6SqjgC(!x>@|HQ8&paqiW2W@UTQ;UuPl5PYo6`}S zCBM^nzOH1D6S#nCwVR5F2eZJMiv{v%fdlZZEplNUZ+MYY|I4arg$fCz+Z>9bl|hMF zUR4{CMMw-98$|eU*q#aUAhR5ZZSfq$n!q z4_)8BRvMYdD96lU!pGoJHOh{$38m+ACIK;SGpgk#GjKnJ2n0>E2*i~f>yKNE^ZIcC zR3uJ(F*+igSt}r=RxjPPznH!r@p2;*RXV(6JwjxnWQ7(PAnM%H4uM&SLm%4RA9l9S zxo7Lz_PES!5I7V+XiI~$7BgWDmkqL7Hrw6UGE+Tgp{&F%eEVRjTRakMYp%&a4$10C zI{$Cw)xOA9%3OFjKB7Ka)peMJYP83Uv%A5fuK@X6wkuyeRg6XrpA&7sPti(J{BSYT6e^bQozeB0w61hx-K+ysieM2X@di z)$(~P*X0m>Q*0alUHf}+>^B@koU#w^oZm#3s+aFV!Pt{bHixzN@nto;{uI-L{&#Lk zJ7sGQgrT*};fNls1vj(k{%FBtlyD5MQvT;m!p*k|?C|1#b2uh+)Q#`-T+1gkrm7k% zf&7yvHM!fszojqFuV!W%KA8$_JGHfd6)HXst&8dMBm9)U;?TN_0mQ$!z_&aZq-mcoCUM}r5`i$G`YQ-Oju*cE55Igf0*%||ZN)YXJy(bkZ7CFncYLu|=`OdIicc}>N z(uHQ7r52%vwB-3h8WqDtRW;2;gdtDo%D18~%royhWP~!}*;3ls$m*}Fpd@j^O2}!c zzs5UfiLJ~0%86_TXu+X#ck;?bA*3FfHA4~&aSW3Ldoo&T++;_elr$FWS?hng1O;`r zuB$#F{Y^<{Dvh5Irk%Uno|#tC1|W7UWx5Vz;YL6{AcU1z9|>u7miA{i3N`C%To@P2 z72n%-LDw}RreLAEX5ntK1ZL&9HMc~%`if#n`lX!g9_?}Re~+FL>Yo)=+)DtX zI9vCTMY$yRtP*M?>M6?Tdk)xzG>0bznx7?g`y7>=Fvl;@NQ_KUv^;KiFn}~XjJpK~ zdi{cuc$td4`3hX`=iXh}K6*p8p=9Hv5(o7`c#qBS*mRf`_ z`w37jb^q@F`VoG>c!5{gX?sIgYG~q2rV%d|I(TLrYF&r+Kyp!)j*`{6hJtCuqWm)G zxG^thBAUU$F98c)O-(rUALpP4WD30Zbli#)Rxuy&hEiO)3)49;lPe%)Mamm>kc6NS zLOm9eM`@Q4oJU1~$9CF|f9*VBxvz@tKQr%u=1kY@^uh3EW5JPVlZyC{ZBas2M&H6P zRbs5^m-*gTVYZIya8?&v9N8=I&9S&+1BM-+VOj6cfq{0@7TEahI#FD;HG?7RZy@$& zGG*xYCGtc7nCxHBjFmwczNQm*@>+${uhUvxLvRSqzAisY+6ewgvG(?!4fh}y-&ht? zC8jKR+(8*G(NpO4uX+iuQ?;QaA`Q}^5zn-9ld z^z^v`2+PxGdU+e>0@tIWjW=f2F+ap%S=BOscw|Md8maiJX;1Y2V0f?t(fU!@DiYo#~WWjf{xIXa^+%t~e*MPDthSq^gz&`U0Xyce*xoamj zPRKYC?Ez`rKBFh^Uu5x{OWP1fMLd#G7GohL&R5d=`ar;^Xs=B5!9R2t z`oM|%cjKL_SHNE|>e0vEpRro%?BiWc`r0co#iHKNgy*TV9PTkWGIS~LhiUf|C0d~- zzGfYwE{0hc{Ncxgui^LLl_)|4c?3j3Hf1ChlQqXsn+EjA%yIb-DRxC+l9p@tm?2(U ze9xgosFSE`6miA&YaRw#UVsfk9>XU;G2ly%9w`q^9u_}n>vcF|fWpLn= zM2<|4ba@U|Pf(ady)_&eFa!??4 zp0I`sRRADBz?BA7wAnN^gB5I8JTL>am-&9Yj}@(L{$VP%xStw5l)tT#T2hdSjCsxM z?_C!XHy1q4Xn({zvh**tMdq6cYVV%M&g{&Blm@A<#ql(m*8;Mt73m zxZM(6#4T|{H2m)0ImPc3$f@56EtV`2HhU#qbZan5i^*9D=`u6xumf#2NSy#~>cHgR zH7|uz;4+2|E>JD`y~aW=ElbjIJmc2Fph$jlkX8bdGIB|33ury{J06F#!O@Pem>bc& zh!UwzBjX+~dPik?nGr8qWAD{jC$drwd6vJh`0?7AAPW9S&Ev@*mJ` zVcep39-L<@`MQg8;D<%!j-+p>uLYm&*sau*bMYp&I7TfTUw${^&T`VhX20}?2TDFW zRD(;zW4OCQf3a!hm+>4R`7tx2^5RNP_9^!E@6LEs9& zJQPv8$pNY#u90S>z#o5P()ZNX{sJKb8Xl{Vf3MVBTS?;3 z*w4thGZolymYN5r^73C`4kymv2#Zh0+H1rS=a zs;!H)R7TYrP8wetW$oSMjp-$xp|O76&pA;~6xUnXe=4jY6tj5WJdacWgM@I|t!x?# zD!!;2@pb7LmlEZ?mzq+TBCSAUTz9Rv+gG7QHM$8ElswS?%kEtrso20j>)sRK)aTD_kU$IJ8V<*+a$Y7f&}K!ruCr2mWxU9<^wd3B~^1$1s9jGkH#JgCTH zyuhyreO~rHssQ#~GfYGH*_L*QovYEt?{@((!WJ#`=4aV#p=cC>_JeG!>5nO}ou1 zv~HXpUhc@OvTdM7n1<-k0T`qVrgrTji~WaCD`C%lV&o|U=avFnT^vbM*Nvb zxeGlR`&&GdMKy>1GM5otMb*=ZA#A*I231`TSGlE!{2tA(Jw95cArb8bms4I*k__s z+C2&MF{isJ8gk4_0J^_CCL#t!#E4cjYmI zNQHZFfqKy)hoipF8(OX1Z)c6eBGAU=q;%#~1!F`PW`t6m;DaYAbv_|?$*}R_;C^Dr z)r`|s`gv_?Tkg;}ikpMN68D9=+3=dc=vI1Zc^>l}l!A^CBn521;A!CFLk+TgPtQH9 zRNGks>nakY3aXb|GuFeyQBR+&TizoMi82mK>L6d{XG?|W;}g4rsJmBA~%6}M{^{D0_Kj^_# z8hVqMnk38z#OLNGae(UukrP)RAuWU>VQlL%_LsA7-5Pa0JQ(&mHtm9<}EPxmKX86w_ElFmD1@pv=_cexKYgvK z6Zcg{_lMJt$gb;Ki`F&w!vZiDf0bP)1*bw7ok2eeW~4pluf2w<31&33pNssBWU_-v z_x!OTC7jZ8nXV{Ie`B-~^0{;dTLm^y8zi&%C?V?e?)rQol<+Y82q;leGPQe+%FPCI z1Eb*+_pB~PSZFPpk8^=zHxraAOL{20JHTIpT8Guh`b|n%=PhVT_1yx{x&mTy6|bJu zR(JIiFp-Jlay8{&0bi68f*S<$_P0s5Dtf;-t`pOS_g+txL_K*miK%LK*yw$ynRqG{ zfot!exzO+<6ss^l0WS+XzZ20Cr@oH!`*QEdi%QQTN+UWCmv3??~f!(VfTu{;^nGrs?T0V%1J?5@5XVHI}ytG!PH~Z{4Lsnyw zfvmxGQtkuB`Ua@u%(#2CgKgG)XB#4z98^xh*m;T+McU+kl%6nf#x2)@M>q^4h*`~N zFeHe20V+lU84%fq=9e~_Q(?Yd=0r=$AvId7ai+{Q>kjk0B7FHO%6}C55WX2iVPNOl z2@ADZWU~j;pbWP6R7d0{vZ+Pb2j(Q;O+chV{%yWNnXMdKo|#k{W$Sy`={j~2>sz|K z;B*bTHA__SFc`z{skeAc*Ky_m^)JkLsE73H*k|9CB#hcl;@Hj>JG3 zdYOm8@5sd2%5}Tu8BYs&nB%$s{m6is3$6!aTD|WGXwY77D{a$(E6KT z4qR-O3aNVRX#YQc=~z2Afs3TBqMemDmx{qQ+@&!Z(jL?EvQET9QYQxCsJb3*hvSG%-nTBRF;bXd5jM!KgPbtA(aeL ztAQ}q>lv6wOqiY4LdX+5F;nrK9?#Nbv23N3v`=Y#H@&<7-l=g0dMaXqVrc?U;jzd7 z1TtOmreYdLbK3o%nJ@j#VlErb(PHjso4*cD(h)&>9mR@NcAFnH`#aE~U#Zy;pi6B{ zuWi*!?xl}I+dd>nZ^Pjt#7ptHmWHP?bj%U=Flo1N?Uf;{pWK{R$MDLm-XEV`^9>zn zRMQ$c10LQ{RJfVbCuqRWADaUvrF}gryK9Ty#|Xbo5DW0BvqL7i6Mio%BD}^o5*kCBC&oK<6%Y{Z2r_JhxlzqZI~04YxLbzhRdrW&K=Y(bUH~#nSr9j8*m0} zY2R*~qYKVpin_Mb<4F{T{J=6AturjmK__|4^be`v83c`AG16n$jUIC%wp03fBMb^s zJmtWGCuyWIu6iGTg!;HRsIwa{A=N+QxxiN!MMcmy7?)1+8qOjOUlI7RqlvrHl>J{E z=>d~+fRT!UHjc*x@lQoz;6PRYgN7amu zGaNeX#2ah=1?ro@h7n-73{;TUrF|)oAsBkejBI;SB!+`z7XN(`M|QF#mNBS=GVpPJ zjjrpTC(cV{aaT*p!6h@igTFJ@S<#uh&Plx@kd&XoI>Zg~~4Gofu6j%`l<~ z035Fl(iuIT4U+GNe_P_bPoZAm$ z7dS7HTI{4!4Tu0Z4L)1B4uBWXYAqXCZX*(tl3ny5Mby~lRL3=2LTF4~P9@gTT+IIT zky;ZPkY>w{F^!J2yIjRLwjk!rOUi3EtR4vGF_q~MF-L@RkvdN&?>DoIV&lw@ zs^EMCc3eWqxp`?qb#80_o>vL3YIp>%)VrBuP>sGT)%}jo_>B($E8+tNw-ZB0q}N#& z#3PMb=4D_R&hV?>h25C|96oI`!P~u;2R*JGu;rVLPzxz2LDt18mw|BqBwbeN;I1@T zmm)M-$;x!?lr!V{Xf7AM#8DQ;(NqjU)l*vcaPmia8gH$EatTv9FP#(}c_6oS_@%pr z+RF(K=Hl%rjFZbt4uKs9Cfd za51M8{^0p5!gprXu0KZ3b^$yEgkOAm>*L|5!@sx+&WVJZ>+U9`;|oCnC%7aQeO~5Q zT^7m2k2%t@)1~Hw{>97YWr{l(-R;2dyQOIWsw&z|4`w^vmhw?sO^F?8AmROg~Dhj%dGfce3^Zp8xii90@0QP zC?5|6(yh3JEDdy6nVLqd=CdRw36V^K4Ld(KiSDK$#F~zX%ST zJ0D1_O&=SQq?Gyo{n6Z=VI2AJ!>ltEQwb!CNma6;v+Jm-81tMAx<||0)aFYrjH@_Fbr_r?ptC^IH)o5qMhT-Kk^;Xe7HRmo|6QkMidm_5Aw^i z{eu_7aorPAxX;7vN^FFFlw1?yES6LTY4_kpMz~%A#tPx7#n{pH3t)@G6GwwanJ~>; zOw|-mxGnR>TzHo`ceNVlqWpj9UGDtv2CqJufdoifn>TjZIQt`wV@2(tMm ze3?a9J#JiI0_7_9bGvj$Lczu0uA&FfN_!H^X4T3XzlLh-WMonG;29#UW0A zVTgi-dPtBhuO?Enh}Mmn%ljf=^v=-%dYS^ze8Rgd@*5M9yEvyh08peLVV0jZQKa|2+H;hpg5m#c7! z6&&yj>mWYjOTEa`KW~6a>{91{*`k}n8z7pFQ()7ETI#1FA+HX5km7nbHA>cMYa3>e z`f9CWYhS%AHoygKD$Rw6Ma&9fZ??;^Z|a2!R^#;fyKx=8xL{+#CikemVhC$_BGh7` z#{2_9%Hd#Ty$b|6Bc~vKR*zXgmTCzrUph_Lpyv z)phjioYMyjYfBnPM|CA+4O%)Iea`QXXp03#HR&__MQ!r zy#$B=Jz$hsgzUwWMWKxaGk}>9v?pBAtUAZySbR|u2S(Wy2_oHTj-H#380=QZIxIAd-M7Ys)HgKptrHEM%TgNecva^(5?;` zxkP{ho`wd4z2=*X*L092I|Naeumf~=arjIK^2{aexC*||{17{^$=c59-Sfs1;C)J$_8v)i znONP_Xzo})QKH*(;qW&J3fQ?sOTGx(Fg4cvz;gQD}044VY@(RbHnz@ z7`0$3ROLPv5_$j4-WW9S_D z%C*$y#y4de%5uW5O%?)x!eG-;{F^9`I0|GPSj^)TLTTv0wfSA@x(=G~u^g>$F4a)D z+OyVDeo4@n*>MXQ-v@p(Ld*T+6kA*`@r^Gq!ygYdNI=I6ks9}zY$CY85PmyG1jU=% z+x8!dv}C6)kSg4K6j(M#(5Bf>7oJEW?MQyOdR*Q2Dc1MKnI}uqO18<*^EEo z{E&m8?4|b&NE7d>Msa4>`*Ce@WaHu=0<2%Fa_)40N2`uDjaPnyRn~2_W|+3q0nZ1= z#7;R%?e?K#n*TI7!JoL_EhJM4Zm}(`g$<8PAcfqGXE2EBDXgD%(dDvG=5Qy$VpHK@Q{;3j+Jxx9q}LnKi+O=2kco&;rw@F7 zJwV$-P_+z7?Z*@d9kzt~4~eZZ%1~PK4+ZFYT!emt{G5inwiQya<|t&b1wYpH{kaXV zWGQk=N8`y8#lOuGZT6@p07?*+ls(D8(!9d=F+y z!QMk44jC<}%^x=9^^xeFgARLe5wGCU#Zp}i@iB@GH;Q+^b5nBP;+o!uFr>M+XnsQ?rW4Zo2BnaX+5vcZNdV z0MliLn#$g+KgpHVE1G+)&7N|y0i&1fr-yEIX`tz`;nIR`;kVy~SDd{ik&#dl9HC zuRu49S-A|RO;ns-GjzK{foHx>HD0c>OxJcw4q!8BQpg09Cf*XAZ}F36f&1btYVO z@AHPR$_~&gwl_sM0YC0fb`2ZGbE+L8zf&isDKdtcBJLj$1lQrX9g)TK$DZhIfyVm~ zR=IZ;w*hDeNEpG4@f$nSO+u9WiGXxfQyWMibwGvGUgn@jflDKQb?<-^7gb}w+s_Lp zC8u`2;ktPRK8!x`J6Oc}+gy)>>1?;|8UqZB($n_$Te6{k>m6MFbbsy!oX8ibf=D{5$CrBD@19@cG49D-jW-bekxNA89-q zgPS65Scxi+Vel8C`8RVoJB|%ed%k*7-`h4=Kc^?XHqiJ5)=fEi znpg}!^2i(PHl?h>=>qjFyNv6?yEM8AJ+OMzs*1;yrnQ{$y~kPzxp}i`dR0fq5ZBl~ zw3PK7&w)H-K?BL(E}Qul`#}ye(k z-z|5aglbdLpmj)M^j|+_^1ZbS<%+27JAlxwn>1tJb*V8~Uys8meRl0>Mf#7D>3a4w z1;0VCS;73D)@g@&A3AY;Y=16&brlV`z z*Kn9sTUm9L%*{Q05NtaB^{kuw!!co%zeQupv#xZ&QIzZeSE~OdC^naO*^vQlgOgB)QKuVm4=FORF4Y>)Oy)uNR6NyyYvpBho= z-h;x(ZhdvBWCbZeqGN^8kf^7DsLo=2x?YNL16#k~vSRJfk~H?*ek_c{fmFbWfE*1; z&I_~#fLDhR7 z)%Rd*dFJz~t=_ix*Xxd|I#(GAyg^^nwSOGpTqGj*TupPjB@`>pmO@S5=@cN9dYDI0 zw?q$H=yAvFb3ZZ$bL9*OJQf!u$@TI%Bms*MY*kJ|7+vm<;an?~4x6};07nwoBwgJE zq*HBWV8o~@WW(CguC*3c*-7AGYhF^5Hx0bL;>0#j84(g~Z>19jtuaGER9A*);7Z_9 za^yR~kyPJ$@_fQW+ItEs+BL7rbCJBc6w839 ze#8=?gvDCyFo7kQ&sAl2p$|hXrY&yR4quhKeVOCgzJ26NXWS`>?sSTF>vN=jwc0f7 zWYK96!@pKlk6e?%D5@Roc3+Lk!ed8+5#>HjyC0E*_m+i~lz9Dm0*6WJXOHT*sjrj+ z`Qy~W5arU!FJa1Xo5hEUs#UD_+n&KgC2 zpn@tX_3$clX9hFI1KG^&sEh4p{sXKT(tSF+CczeIozI|eav8(B}sh6H*pnSu4)Hw z<_QpbbX2(eo6@H)zM@7b1M2hEZ(oS zgKJ4>OUMM|SNZ5!e>A{b0XT0oUW->qOe5Kugp(l&2$@t3wLHLDd+m-Q-~iiTvuy%b z?Ze@Ll2S$!89?tHCyfq(xO_wf7*Qgz4=pOUSWXgNxOI_wUg>hQHaqJzZ=rJvVU}`3 zUE6Ptp&ZaFYMJHU)dKpzc}OR;O6YySeT-Vzf2e8+mZ$4EI^(Zu(q=lIm-|k(Nv4|J zaZbXs2f2yJ$ByE^C&abUJ|B&XW0*&TCnYwWEbR>rP+*`a!(b z>}(%b;S`>B)u4T>eLU0Kg4hCQ?kUt869Bi{L{KXHK0*1i{UHJT?3mUy&IPZZDJeE< z^uWI(v(|#Qtqq{(lwX^$uDXw`YmBj8zPV0L4G8KRdJs>V@0vu#jp@U^sw`5~3gKsn z2Q-%YFXp!cLH{_K#|E$M_qFeKcZh2s^x_;AQ1#37mX{N9x3kAC1#%yYA)m~jR_wSu zhmC2;<(8+mt^OA;P~WwEJ$xVQ-&uu20qK=DcD&s%2>LfkiEZP3G1RLe)!MZSJ2$%}*hh$6S zQOckX+yyjsDFJ#8fqA+zSupy;>V3`tM2hrhHYZDf8f|5hY)Q{^8U?G+85>(s=Jwhog~7cwvf_52l_tE;pz)>(Mu zhP2iy;%4HO7z2UB1B@f3c?k7aalMuyE(`{^#sApix2r-#99Bg_@2+#|QMsUz*$dY+ zdixk3O7Pl`5DaMkZaWJDZ2k5abG~!HuJ%1vw^yJ+fZ$}`Eus3d%1soNqrxAa=ovBT zR;#OJ*OU-VivZIX^oa z4`P~<81L@@sonXNFgx03z9Fgz?hX4S5pW}Au$R}+7I-G-XNl_S<-V+of25&|V;P{g z*a-{FK+g_0D;Ln{``^=&U^3p_Bt3gW2+*)(rFDAQ!iD3OMnu;rd;LwuVZpid@4bQN zO-Pmdvsrn&JtN4Gmox7sV{OWIl6uPTvuO=~M5-f-(ANK@4dn57^RxY3uxfotF>RC~ z#Dfk_#<|L+N++qBtz!xKT^_fhn!S%osf2Xnc;W?4+v?W8&Qq_!wkKWVtgI2zle|1W zwh4!c5YX0e8#!HO8U>eD4hq5DsGtVccv!hJpVUGVxt!qXD&Vv=qaj`GrqbCgN+Q(! z1`o2$Kk{;)ml}=q&403BO?)*^f6^IR96h0~uNzEQqj%(IGj&C^M(D2Y(Op(@{Zl~p zW1J_TV7~}ogCG|9e}R_=%K&$9M5+mELXAIM&?j?t1CceLn+?*@B1Ro^GTZiX*t`n+-%==9kI}G!qJ_?md4}5I>ujs z0)4r!T+GlN0R(B8SSJEr__lA>!AXBEaSJ#EQ+R|Zxiu0hM4#v2n05kVll~MN8^Nhr zChcJ;a$=CQp@EpCZ!u3{Zz_e z0VZ-Z6v{W_wBN@c9uy8iZy^pN-lmpI>1pA*Y7L?L+9tz|>=MOxm)rv0=U0oX1dj&| zDFb`tnPd?S&pko*R#Wyf9HQFRh{;$!9-~C|as1Ej#!%CyS@qvs5TUoXQ5K4e!$5^A zXLT(%x%;_!cI;3yfMbmcZ&|P~~_9yvYsdMs|w51_fjYwlL;N$5EsI%6JSCCCd6Ra-A?%9Bz0niBB+sTJ~l>p34_ z_~D&-1eYT;n*!~vwV)Xv!ra74e?`-D0H4wCXNnVTaX^>>g7-P0MtnCz#zOgz>*h<_ zL@uh~SS+iXN3(d0@l8|cM#ST0w=%mII_sksgb5biOT9JmVFmxmOl=QzxYq-~TRlu! z!aeNi$P4jAA3K`ZA|7E1%@Ci_Njv<%w5*Pvk#6X=3fyn`3B2 z4Yr~|vK@pfYEV2FvbsW*RRni%_6DtHhUOf-oX&P$ME9+s|hksb{zc@`CX1Q;BW^4Lpw6GzX>!I-RWQFpvjumH9di1JY+Et&Xj+RL>x%YG-EY@$qzRDDUZMF}Y)PSK%o z6Lw3kD(Ssrx6fk*-nheq%>~NVu0v78e}blqmD_T4c*Wf*B5mlUraq9-bt}LzgFjX{ zlh$O)c7hH26@uK46eCKn*k)?_v7Q)6DrX@|RR=BI!MB4q9&oZbUs3|9CWb2}YX#mJ z6(hv3?!Y?dNrbpXJm;#&cxnVKGfnDki)__WGe{v*1A}&JgrynLduzO}GjGB~%_&^C zQWIEB+pM|g!X!C)Zl#Z+5w?5yKCyw=Fn3IcTCNTkW#pJ-VXkf6Vf%mH%0&0O27Q`O zpv?syzjQ#-1W(Dfu9}uSP?zt63oqleM`4Z5k@a918A}XGLeV|rizc2xKUWj`$K^ls z57c4{!4@|Z$6TF3=Rhb_2Ql9bkjXm(9P`snQ_X@mBhCL}{(_j-WP1zI!aTCbn-7?< zWkc4@Qk@=qRXalp^M>;8gynbeAJhrBJJ5OHF;=qdR-jOvYknn(Fo+`)Vd%eU$WLo>NX=e~^VVb%y*Gx#F(#|lGz7kI`s-!p zMDA>X&%gr`zE7#4MQneh4FN?*8Fj<}9VVVa((jsvfpPmNFg2n$(9Y_fW9<9jeavrV zA>J9|r@e<~6kkDLlFwxA(pTzjEeISMMTv7W!5Gy6xHgog_0OX_$|08t5xI?czoMLo z-+=_G=aOigxa8!_e%f#%^5SuY<%=Nfupw6IwrorTu`E27!=<~N;Vx$+OW?4D?ThUt zg=rI?Yu9wvUw#S_Q6>j6_Bj>vEk#y0U`wmLj)pCMaj3png8j=fn_ch!Nlc9rxY2vW zW@l8ut5)}4?#8K_$eLtu9UB%56(6Tf0sU`;}1;?^9H|j4nc;Uqt_Mz<5P)2=q zMGMngC!HRWr~akl6pjNI`u=Zb1WcA$lZ@k}k{+vgs36&+z%n_G$b(ig09CsmV~IaA z=dChm+t?Syom&J}QS(a~g?f1P>P`P9;T+Vb%46{~S}8g@{9}J4O>Z_x>A1>4-Z-M+ zpPo|_58T6%mKIQG|8?p|g%6+!iq0@V?(nNDAu$$cfB2JubT6bLx<`vFj&KF$4%d0$ z()J5eg-%=+Stl!+ zFUYAuo8iCkXt8pAS_Mm15WRKph$rs__1z^qL(vO`h;0Jxu&QFkTR&^nEe^%U;5n7n zBTjH-GbJD+>Im?+2Z=g1iQ#Rm(8$4QIeDMu7<1lsph8*E}mMy8idD1JQA3 znMb}K)bz7%`?Y*gSY;MhZTP*J6vB!lu(&UV%I?@z&*rUUSKQW}2Q8_L_I}{ZF0JiAr+n2(TbWWA^yiF+9_{Gcq{$#u8I-W<^?T|C1#8*|%OD7KfYWk&X z@n;&<Bo9Zq3_`JpZAD zRUC31hA<(QQU4br>{F5R8f!|i8M)KdFGgpX#JPOH~ zg-beqX+^*Qnk~Sl|QeEknB5dwh$hoZ`?U}Yk3Ou^cuJ#+)UV+Z+%YF z+;1%+n~x*~rIm`Nm}`8fUD(#eZ7+lIk?a21)<|{2pE;L86bak=r4HJsE6nwGphQ{x zMfBu9sVsixQH4_0U4^P%WL(-4?(rr zz>sLE`P=^~YpD1fXKeyK3$``+#$C9IV4L~_H_WL65W5as>oy<#%DJypO6}MS>Ir^q&cvwo_7AwqawIR?Aw1rSs8>xn~pI8p(X9cr~Gj{wQe|M zO{(NGx}mJK_xrUtKjotv(@v3rz<}(Q$v;C;dppB3Xe)~3=$RY?!A@!g4Sio=Tam++5NsuyQWj3F5yM!d=6cV=$O%6| zIgXxb1u*PMN~_N^5P(s;!K!vyxUCrUxXp~dNm-P=5l{s#30nw+=zVQJR9X;YKl@26 z+ZHxb4qQbeHN)!{aLqB0O>--{oAQ{Q^;`NzG~Qa_`i_*1q_slnOeri(dM@~rf&jEt zFa)_j@OoXiSVsQ~;QMK&+C5UU4w6rl?CFHghXa(4^C-SadrBDUj)B68)gkH~UiQLu z`28k~I@d^?Of=p3M*8RC9Ue5)@duj+im_2@oSbj2kOgk4mxm20XSJ;GSqHr*xKrz+ zT&9uX4Z-X#QGDe(CmjtAH^ysbZz0*$V#WpoP=mn>C~w*help#qcr+q}_C3y@Xn(q=9C4d!H zDB%$#rZQyD=IDBvVw{1nq0tE_ITwBYq>!Ud*F7*P*C;LG_Z6fA38!9@X?z>u3dlW>tWs1-va*pb`6Ge77i)hOP1)TbHTh7-~0dGksO^OBV+NBO4>Ao+w zF5?QLKuWA``(5s9J_Pj}6S`yFmJ?Z|^^d(`XhaPAlsX4$(-dnyS>1oJO-!$fvHnie z;qdKW;kbl{xo<(74GroscVClrm*z`s>apd@(hy{ysS{IWwptR8O&Nvyx9^`&LSpoj zABQpC2T~2sWEKeodDl~@0T4Als}X))vFM!}!-_ZMx2B{+83i$1t4fES!ops$BY7y@ zgAo=8i-H0x6Zc0c_jLx6ooEGVIm6-54Q8uSIGFm=`gpq2O+k0G|KM|#Su=3o?f8r{ z(>8e&7&2~v?cF3LNwOJ7WS}*R9inAm)#)mQm3UT~`H4J1GJ2>pV6h5!5R^tX&>eP8 zk#Gsagb1OtwUDTZk%SRo0E)_nyTgTol4;h~g9lKBQh@mXVPmeCcP|51OKjr~OgbHy z(Jo-9y~tNS$GXa04~y&+0~bvT=l~7B2@K0VgGvH2^{bD8ke%spxfVC3_Rv{AGZ!7YKJ*M9aj8vD?yJ}f*~^^8~5Uf@#~G3EE7d`(S<~r?^se3VP)0 z1r7^u{6=1OePHeEjp!7d$qh9QYr@a6uF3~&!YaTS%o)^DNihM(qTZBONk|{q>y_8! zsk_j+nVynToj5F4kp5OY@uiC}1B<@@+Pp)KN%*cHJWHy}O4+cE?4b{na(@u0l-co} zm`#jCk@uj=eOZi&z;&$y3Tm<9-RN7vkB@|2(tE!#C>P%D?6Bf%seB6{(BcCF6!R8L zE={#rvY8{#$cEfTcUD69CZ)jv8=(#NF3*5#L(1?^@A>W5T2)6ni_{>FZDr;yI|aB~ zRE5rPDkVW&-gjqDV<0}xT8)Ufr&qx$fhg4$4`8@?WjQvt3_ffY*$g4T^r!#Td2~YI ztibttn(0KUoA}RC^T0-g@6itd9_A8tz-Y zp258FNOKoOsL)@b)nMV5?a7jLi5}2SI)>$7!LKd<1nSLvd^V+m*AbbcU?4U7MBJ85 zLg9<=t4oiU z4D~IU(s`5<>QQ1)@Hb=cxEMNAF^4vLojH6mSwk(|0gLnX!=UTY5m%23EBlG3}3m+3?b z;kqav^w&i4ht(V6edg`3XzdEB{h^LOb^V%y4yvO{xKvjLr+5mxPW{&$Ts>S%A)F-2 zsfu_jO0GN)>=6gLXK&(n>64&v8^= zJnItUP`m739{fuWyF?0+i+%`Lg#=!y!sA|n{G8AA5CoN^_ZJAKgNAa>`SxVm`A{B6AGA8` za>Vt4T~m`u?JW!(7?7(ceck2N1{_pSaaZEM&FmA9u9b8p9z6N@A+H2B)AVpsGV#zt zweOKu)~Ytc69~P`EyY^x&9k++b*l{Wj2bI*+nO6S-II$zKdj=Yie#OFV^(f>s`!P| zrCW7>gf&d?epdgcCL_M_KC8q>#l~oQqBhDO2~PXtHPB%LS9iF{E}UGxp!6ndP#`$c zbC?p6tqi;@1c1I(OtfEblwuJVV%b-$i}FF{=&+7?x1ope(T=+bBgKFoH2&_}y!#GV z8tw`q&9CmSLfmg52II18Pv~D`LCJMJ`bQJoL71e;s2n$_kofuWQ@)8R4^s4t7=#3V zO~lnNNV4;qYLSCMX3hK!OX;hP1gc!9{!+(zucA<-uyqKK0`MH@B|&7wmFW71o*8YA zYuJ@AjA>{PdxahPdFe1ipmMKd&I0ptcs19>MjOtu2s3RImU%rEG_r6?d37C@ z1no5r=iR@w#*vMFczk5q?|XElZ~U`JVj5w-J4xR$PeQjHaU%5IhX>m&!C9Q1dgw06 zY3fimdhJ)aSswaVixzGhTvqvbchwk&%yAa~A2%9ON$VF;^5ddA0X2?}-A2a^VrF6U zsz~;x{d%l=Dj6+%)!hp1NJRV+#L+fV=>`PYv3>D3tNnHZ!x6SZ4VmD{741ScgplUT z)JyVoi@+pX9)obcT7G=9w}e*C8cR^okHW4@Q))p4v4F`R+w*%tEw7LS#@pqEu`HLuL@Q5`#p^+-ZSJ7$nh0d@ahh}lNR>nPYQa__E7F` zV0W-by1u*IF?+BKJ|>|KS#mD3BD&{c$FM|*_$wle+V9))2oddBXt0uRtijxc4R!FL zUAh^5_3vA8;=A|F%1u9?PY>gl(6yglaiGLTm=rPcurNFo+lzsvK*8bVtvi$^=yX4> z=omm%lX_cFUXS}Tc)9|;8`Z#8RO3VUtLbaDaVqvC0t!E5#5BMnNc+&uQ)8)B@N}H~ z+w#8Qq$>%oQpbdUHhJc{MSxxUFOwE8npO91<3}eku_c} zcGpPu{cn|ePV(jHvf8$R?7c(n-&VI}EWeK3a8(XE5)R@O+>actKO@#ZK$qU|hkj?n zM=cD=7E%kGi?I~?;F0;cVq@*}QUg3sihhVLoc%JQ!A24ZUIuZ;w$&Y&yWyn{X zDM2e~YGWhcM|IJm^=NR%<202WlC(>&j!sQZY;VDq-KK}psg>_y<(IvBj3S3j12!horoiM=KU#!zLomzUjW^5MMNQJAm8>*q>eO z;0yOSDvbQ#hZym}qPi3);Z4Trm>H1Q6Xa0R)&NPwllF~t`Hx|8>x2k?Dm6v3sNMrJ ztb2MWka$ef=14-O`#>%DKmAV3w)?Q5G2UnQ@8r1L$jg&)D#vf6< zOw)1S2Rd)=TKl>mkmuthF{C95X96I`3?2!vPf+$geaFEyuCCvY(}@$AGg?qqNAWk- zaZR!&0v<>#g`B>!Ar7}t?fam-EOI=Lj7pE^saz0mxw}Xzo`-Xq68&q;UpkDUCl{4k zV4?nc8O9dj8bvM~ab_^4O7E6cyxxX&!pN!Pjy7~=n_Fgj%F<$ad3rK=b~5RKl{QQy zERIfY1Y=iES1l0UO>!A@ObAw}g=Q@q$@DNjjlIGYP0AR5+8_~tHfWHTNi{~1CN4s8 zJSO~R4z)Y&XXIVamY=h@Ef3l)`!o|-$GSiY=NgeQhIvnzLq~f^L@UhzwFnu&wxN|; zSgSs6QnBuLSTpT{t){*BZcV==(OI|GxY~tg2!H27awzB{L7;3Uw~SmeQ<-8WoHZ0r zR;DA3tWYy-(HJs$eO@clM^Kj-ysC8yl*|&3W|UCg<{lB$6G<4lnmI%9xCPDOwNoWg zMOltlmeA|_CCH;&|3Frh4TK;6*8gv~qRHxBJwMpF+DEL<=8k;QvYDPVPVfR}co^TT zuO`0MX|q+v>Ih`ziV{^1-)JN&`)qy5l%7Ff4*jNu0zjLxSh;-17px5cA_nU5gE7Lr zkO43Z;&nSz)g+w#vkAYv&py^jNeXW*hh(l~+8T|&K5?ZW=|_Js8bA?V=+DWAF#t(%M!Ev1MupdHg zN8@&<6xe1!tQjyOO~g&hqeX-~3&XH<`oGm=jjq>8a}?uF^jykHQ~QFp9u(eISau^0 z{*6b6FPS9$y#7ky&-WJ8ZIqJFNQ6tuAaFMosVlw$UzTVjYg%09FT2mA;u0WuE}OD# z0dpJ|s3Y8+eWO+!!Hi+6G8P)}^OVoDj^P^&Imbxk*H*v7t=~7Q03}kWoc^%jiE0EK zc&4G2X4-CF{fO~@;_a+4W@;acWlXzZC$O`Av9tX3Nv<<<9JiPTHbf2CN5l@@xa>Sy z949m?ca|64tnR`K4gV9^q1g$o5(s?V(={P;dOET*a$0Pj9TUYKPp6Q%Gk!KwL@Wuo zxU>dd&uIIGqbf_?eLZtpH|jxqb=ds-_V6aIH!kNbaAR)3*z zy2s)L8diJW$WW;Tg-d0F#2cWgQG>ibN=@vNB*W{a66)n?YXPRCIL7FkuUT=YAa{^!%9U)^C- zs?#ZdGnhE|xsm$G#BCmZeq!i^30x>4Pi-mSw^JTGjfb!Qd}w*XF~#;gW^dZuPaGdrW*|0gaUw#i z8U^r1C$B#oiWN4I3Kx2<8n4WhJ6YcT+6!+Q-WMxqc<;^mm2e>; zVkd4MMv2a`u^8ogiwJjZ3StF0?nS)+FCZ-Vv=pXF#;IN{^YFSce39#y&M^^5RF}}q z^xZn6_C6qDk?_1KuYN1Z%x{c1%%Hey{pHeZAr&eZ!7g1o7e2e6%RC!5?sS+#alIdn zBuOj2U$LaDvz2Ku?x(t}@t?yfJv?JwjA4_#HKNVOus?&uMYvMuiM?FlBBo3A@lSdM zRg2rmG?&K3yE7oNC#u%isnMP+#`YUO*V0rD4w4-88*ner#oEuR=&>ywv;~!UKwb8gO62K-AjD}0yGpX4NgeOasftu= z=}1RQx1T%5Xomi*KrgSpF^R5OHT z;W7L)L zs6zjNcMgCqoi;BSe`x3019-q1$E$I3dNM=je!o(>+UZ1tPvvyGIN-eLN+>YicuHMR!3zm~yW4(Hp zfG=W7kh=seJKE5279$*)UXEP&+cbK0!-!|B1>!)?8kwL*VN`6w6o{U50DpIbJq$CN zx`PfyI-JeYo_OCf&tf6VgSaFba4i^`?nZOIQy@G#M1!9XYkgdFbVtPU+WlE>ctxIQ zK-TUfi1}DNY=7|C(zd^kOrW0Q=hm)y`E({FSvY74U~*Zp|8$mdj`-j?+|QvwU9;My zh}E}K2KIQys$8IcyK&u@r+$N^XIX%3oZ`>Y5!jrz>xKXRqu%+MI{YLNrw!77#)u=_ z6b*Obz?D-yWYZ;fk=(QJwi?&HaRXAgzS3|h$L0VU` z$mFtiI1I{607GRK^6#BJ4Ow=k(VyY=u&chEdZi?ateeDqC1+qFs4b2`5iJfz-?fR} z$4Mf=1-9O+{+o)Hr{8Px|H8VX0cM{c^3r`}rh0lvjpPijw;n}B|7tj)BzFVg4j;(ECD3bUT!4(Zu+>jq!R@Tvh9Hi+P#UQ^Op3BHkc|e9{JsL!S5ou-MvY$UOgcALh~eQsFzr+pxDGL zqXGgkoMQ}~{@7T~s}S65!OFY65M%%s6Dkw9+WwEP72RnXyb$+Obp)#zj<31mr3j7w z+}2#fhGc)g%(xF_$O{V}`hg^oCrO3pvWe5j_l{5EZ78lt3v4$!uufa4?QG3#(68;p zI>Pf7&bq1^g>a9v@ge8&X5Y;Px^i6+8*d-G>F5-HcUt{vzFi(Oso>#{8`Za&y63R*%A3cq zIOo)e3x1NE_WAd&5x3xc#1mZiU&{Z(^~G2fQvhlueEH?3M91pE5`oqpIJYqcxYnax zHxXc>^;G#$^OTn!W^YwJgZ-%l9I`jT7D@Qwsw_b9nj2o91#)$`iVQyikxNvhmf;!| zlCS#Q*w!$7mBW(hG=~lMdvz(x=LpUk5->v}4RlX5O=AVtzciv?xq9TA+6^0idmR{2 zupk&&p`5oWhJHdpX;uONf!|%S>Q15gRw?eRx0774e?@U+C;ZN~h)HlDXxlRWdJ_v6 zG;MWd-&A+jCjEAS@_)*shB38i0HA}PSLJ#f-PX`~DA~jRKVhIrANw#m-p2&))jLvqD8aBJ9RJBG zgRM9zfAu9%pQm4S1A55irw8j4s1<&Lr~8V%U9AAo(Er($?$x(jlr`Zu2kgH13w9^p ze^k=)rFn6sc_uF>XEy?`MKvtMElZYXPL5!E{(HBFN`Q0n$_)H&_O5u6l)h3N{Ip%4 zgE5rbVslaFKuEpZpwts|Foi`amdCH_RWQCB^&} zOI~rxQ~VtJ;QW2|4sSabKiN$v~A z?tdJ}P-fcmLpr|Oqn@X?0we zgJzA-?o(hQuLwPezzQJ2FMHXaPZ;A}oF+-3ChxX>!e@W5X@IGX^Z-#5ls{*(u-%u} zgA^iUIXxMjEm6gwsQfcq&ba>0S=zl}5EKV~j?k&I`ZnK2NC&NMkk^T@TVZ9K7r{ zRj*K>zbSmtM{Lc}s<=Fcc&+B)^BgS<(CKnyf;z;R((s>MBFQ+QL7028O-6s2ux6M} z*h&Q(>P&l`-&P5yK0IcAOJI2m<4y^n^BgXlGXDX{aP20<|?3WlZV+;PyYtw<$tu@v) zmxbdl04prD;$stD3E;D8%nfgM(ZnIbEmzZjomHZ3z)$5o{NV%Z)2dJLm8fn~3WA>F z*B9fBXqoz5y45f|DwULtMiv~5PMd}~s5?cO#4ItA>YKQ8PBl|Y}jC2=9F#HY{ddy|(ORPGR(DBw?GvJ_4 zVx7QOlq=D#X0mX!&k7VdW=I96fDzn5bywM_%ZkDyAznoKsBFL1VflY&lP~FxZc8)v z>Q>c+YjT1-Q;DMQ>12s+!sPVP@8axI08xlxM5dytEjtNPAwb6O{|dH$wWe+`vUE6C zf6O@*`K#ux=@_=F5FLgAv$ufDP!SwHJ3aOv;iAX;faIgJtL6Ug7#fd70N0RWPh6Gz zyu3J~bANKU(m9({)YIxwx9xqiLi&{<#1v(xMZoozRoH#SPK<*~4E`E#r{tbENMvu? zl}K?YQssrgCd&wP+8JfMoZ`i){e<@_PFrokFIOH zivVl>OB-p6W5HlEB?Jzx!y>h%r0%an-1jQc5Wx`6bq@`sjuS^68i6Lz~_f0#l>e)^l{`OKfH# zn2PRv@`Hg#PI6`vN)nCg@jR>oWfJ(QwD6^&u!207JOy+tIB>!suav`TYdo|lm^Qm& zT=m3E6dk4rkF)u4U~wEnc#PH$&fn>D8~}Y1G-6h)175pjGs|jt`t$$BY>@v#*4 zlhyXa$uHOAt}4|uRl7@dtJ9rTHgY6F>h^VPwH-D?)0hi&2#6lBc1jk1&=FlMQCHS2 za`;vmY{Y=GjTwR|C950@IE~29=y6Z{#D@8lOX>1nYLpWVP;~lEMS5IObzc1f$QvWocd8k_RA_#IqQxc$6#kSXD zb^nlGdyf^})<~8SzP4kY?_pQ5>R>=qdR;8}1yg6`=ycHuUS0?sFAvu8;(fR}VV$J7 z%ntx=e*R!WY_1~>LiUcPA?t!N_Ao`Xm-R2~D%*Nw%*M+6S(?n#mrED-Wcz{NMY$)OOVa%L#Eft~_o9!hvZ(XxZ3T90d3-U+RDdlVsZy zG#4~fJeUkn$!Kj@`7raHwp2gO|j&Wj2T$2K^A^0fLtip z-(**FTjltJt~)u1=@GpP%+x|_C&O6mZNCnTT5iE%WamLTd!x-d#PJ@Y?+~+v9Fjm} z_s||DuT~jdDj~gT@>mje08IX1GLg1w=8js|5BCTuGU;RG+AHXtf1;z8xq*h{8$&g3 z)cxLZ|L>av7zr(bO*SICA1(vxib*>bG+@fgaO0iNa~bbWXolUl zvlR)hvRy>D?&Y79sKl~ykx&Zufut4|ZT2;BvkK~cs9dde4SSrthFX&>o*92`(MA89 zlsr5umQqaBlEx^j=H-aP87*0KjGy@554B4E!J$$at@I0_Ot>lGMu5FVr8Ad@l@50Y zyu*P3GNBV#hMpDK==3xjJw#+TdxoM7hHiiOs3C54Z{L-iz#cYk zi?xf5;V{O@17P3#9VP-f#GP2i)0 z*hJo3fJy5@EDOyauIdJ-!R1^}oqt`B0i8fyq71e9HPrrzS{m_5{1SE91Yjw@N!>8+ z({U_HKr{L8P?BteR%&woVGHy{#y>#HF|7&9se?pnP{n5{+xp(S;ZP+5F(NGR2gyz% znY7GPyxxTGj22M9U}#s~nE)=KqdCDYTXcf%5_q}Jlf2^+#eufkqQrODqS|{Z@mu1>FTJmOrKZ%d4&QmPL&r+SvNkpH@j^zYpH7@RaaOGlEt&o3 zue&~^VFg7iQZsRRAl4M<^j^RfHG*j;2yb6khYp?q zb-P3QI0h&Aqd0Lk7;MYCw95Z}U1Pyv8fygwr&l$Ay_C(PzR3?l^W>)@5}9jhG~FCz z{QI(Mz@yr*DV}2I{T$7UMywOIokT#2N2RJ*Yy>3T8)Q=h^$w?J))Zr{!k$OI?fqfG zm~vDsl@wB2XgW}|$8T6gxRR`c@PflAC2#XqSx(*Z=#5l%LI;*Ezb7muyufnQ;)zU49hycG5UnQ+}socolPfuQo!B}g|ngShn=QI zzY9MNUf!;v|I6)>@sKZj9b%CgwTz4G|A4&p>i-31WWx_!NskvXG>jbG|ZEI#0BUj31MSSy=i1Ax$iju|jbo#x7GK)vbf(R$~z z`*D!@wWo6Zc-X>`TQaH{wDSoo9SWQVe5>4sIQF8|F7!J1H-*j1&mWE_{I4 zX6I4uJ35)#WTtfG zXvURqx)K{8i!o)A&Lz7qyV%QG;wz^-W>VDNc47O4f%QE&JiA14uA9g7;60{>SyN|`t?AH)N7N#k z{Lkyek~&T8z{#15q&IyqyPVJOTWJ`Z5^Iv~p7vMqk^m*RIxoIpSC3fRTR2B@L9cV- z;V(BM6UB2{Yc}kJo3t#yT7I?>mTyqEEUpY-RBN9p^Uk&cPkjN_ks`3ncYT7nAi5-n z@FThX!HMF+ zn7!Rn2I^%xj8aJ3Jr)EDgMHU@ZSZ*3}-Si00o6! zUJox0DR`g^oAaE2JDA)z=~xD}BJE~Vzh*9O0;(kH@=FAM>v)X$-m@Ul#kiynZyuUQp z1R`xYu%N^zvj8zeDAUw3M@vN3pOcId8Kz}yg*eEaa}4VjMPn)QUUqle27O`E6Ek;E z4kLucW+NQZ)E1)K2)#{MpSP&bELvjmO5VG9eG#YDWE_VyWA}99vQaZ!CiWxq zl6Jxf5vPO1c$aUBm@W{*pqXB((=^SBG)xx&tR=P$wuC9dw{;E@x?9qG*1vQ4WF1+^ zR=Ok!V*~kG$^Rcy3*N}&HzL_`MaW$}cS;H$eiM@H<@;~xfnMgjHab4O$0aXGjh%_)`WX^`fL29$&TZ^bInL%T${;N6KUD zEDk8^teSAzoA}vune8p0-Qp45lh|6 zNKZUknZoUW9eIH*oS>&#y%0 zv4-AjiNgO$?iiBNG_zjNWr0=fl%#J&>s-qSEo-1X920e{w_h~i4)|7#LOIdf&7Qiv z{JdMb={x*Y2MI{`-@BvMMNodI2_?u4^ z_p{EvuE>r^+rADyz8gWo&KTM?iyA+qKh|#h1oe+&YvI(T*_bcJJ{`^yC7$*><*i~G zQ6TSNRPDMWKoLSB1n(hWvkW+thw&MJ&P+W=qW(%O zT|h?f6U#vxR>MF)f|!r{BC`72es^-sP`#dAm-E+rT_bCi*9e67!R4f!P&? zibM{7i_WXDFs=Dpiq+|?*=;XXCWL=eVU|Y6W+jPoEe$EDiQ@oeAoEb-_w^u8%++R| zK{hvZ#I~3dYv@MOJp&zAqle`njTew=ORsd8UW7EdT<8=Frs1)vFZhXR|N9vJb#fKl zDgIDuC=7<8ha52m33o~;Fvf(?G5L(-O}>1aU}*#hz)A6hJUmXU{{5dvka9^|5kN=y zsw-$CTJU5GX6Rfz^#O7F6`wsOo$*g z`=?EW5KRYYdbEmI^!&`{MgqBvm(gKEu%`6I0DE^FQx5)+<+m&XWoc->ej1l2)Vx=bbgCiyB>uT%;i$jazTHJOkr~Mt>&MgayGk+aRe}KJ=)3*WfVm`@Jr0cZ==_HeT@#q;x@|< ztc4d|g*o9c%6O#u3WH9w)8FNMZ;Epc*cN_k)GHrCH34+b_&n~ILVql2OTu}p{(y-!~ zp=UApJ`^>H?ofUyn7VX${><2agRL3US{ntIXLb^Q@03me5P?y$RCcI8K?$vHdIu5m zrS|9uO5=z7@beZ$|G!f2u-p#eoK8k{SwJw4>b@Cl_A2Q8&iC|Q!1X%TB11otXqx8N zH7N-I%Z?-CRdrwSb#d1P1wKW^0QGrlHyj zvOEF+nL3YG;hQSu$-|EayuQDpu`>`MzYs#=>V&A@DI^NiJFxco8G+sJ&Z$=I>}s!d z-8Gr|j>qxK+6^H+%_W!sRjRAIQ)8gS<5j0m&AqU<*o;$hRJp*c@J6z}-Azz^$pxB? zU;lP`h2HUAf`sc7buMFp*5H{n`BhN%es553W19UKtzkBfc8>DL*yQ0>%RNdnH(*$e z^_BMQpdngSJnV29^$rKSVTWE+lp@^OX)?)ImA_xoZI9c0w33*6a7UT9!QcSNkkzki zKY$a6-Fe{fRv-tM6FPt$X47>AD%-AIka7PVw6dR7m+fBxjE&g+%?t)PuL*U>Y@HyP zM;-MpgcaCMGc%>qcl!#LKXCI3_52jo;TZUV*0uHcNGu4|nH2^?p9SqPPtbwjd=qgo zFh5uscH)#I2KuRz=cNWy)o+wzzl*?CTf!CJ?!gu9QTSkkt2=;Xp;E6*N(`)5{-?Oe za!;q_d`efkbTm3B`8OC0DKlXqvna^=E$+b%vA3V!0h2gd1sia_YPfC(?6_!S zO8=?b$A`5xm8d`z-~(su?0hJi%BTqaWrH4zJjc;g9w$82KQgJv`0x3Xx6Ft(+R`W8 zuTpZB42PD2>f`vKJ!GjdS}TDQophDEmL+p)tEnYwj1wqHm{e6VW@I@SsCOiZh4o{k z07S?=m1uV0HkDo| zzMYy$v0CzoDEk@W;r6?}cyJ183v8ZEIUH&{jtm(DtKYEPm1ky)QSE&k-#f%V^ldMX z#Fh4}lZ}^`%YwAo_O4?9DC|_Mv$~Z`CM`Q>k$uRAQ}rA#e0BHe%2Wy4Ksx)qo8dD? z+&=Fu=NLYa+bkLnwpm;f^V_tn85BfOZ9vO=ZDQGoWVLoAKdSpPXG`R+?u=(utelLHKt&%&EDxN@?ARy52fC-% zYWhbl(Ipft`ex^Nazw#Tq9Df=jAl{nG+>>A;a!D@Zj_eUt{AD71hZbAitXn=7!A;{ zq+yX_A&Txb+#TIl_IVm2^PGJfi+=qd4!b1()8-$G?<&z56*x+1npwWKF8IAUafbj%Dg5UJ$C8>*qAqOh1?>VR9Qg^V0p4) zW@VjI(nxc>Fo{Dhx&B(ks#JcD^&XYphUsNRVo}|xe z?V$Hw^Gm@6!{&5r6l<4SE77v?4wwsX8+|p2J$=huq%c2*e-^=aqy9-{pa5?zqzUYV z^uo5Nqz)thM6N)RHMEo#=?>RF9|Yp>d^0Pd!O;%b(59OYV#OIInfe>}s)gof6vT!T zS0vof-`wL8Zi!o(%I$ElcJI_ccooJ84W8RdSNYj3UHRrD;SjvtY!ic1@=<5OFeg*R zF0^3FFC$Wtq)}*>(r_p4gqan(;*!`s1K5q3&{OUNOq_i;m3S)oeMu=uRy08$lKl6C zIlxF+N?=z$izb#cHxR-51BOzZu+Y%e(L~>BYWisYqOx>CpG<>sPs|ug5{6L}D-%s{ za)$IO$~PbF#hC@b7oTYA1dkkXqOYSX6yjH9zW#_Ljq&&oK|ha_`N?-iUAO*U*1r3!Ky+E%8UX?OJ` zdB|D2RMx7IpqlVb^bz-q3eUApk0U|zc--r)Fs@3kjPz44%b{jr%F>SozmEmEw<>Ij z@!~t_fYOzIOzIPE+@Xa#+>nr>#p)$XZ(BH!#C4HeZ0>?5; zJrjd`k^N^17S>mVPC+Inli^5nggXdOKoQK;z>tmGSKb#!@c8)#FdCm`6<;WgwV50h~RtR9ddY*oT4<|1*J@GIs`J1#Ls$Qjd4)h`|fqPUgVA75HK z<4g`4lVLsjqGwv)?BT#i6g5p-j|?bZ#;H&KS63tJSYa?P%j=l@-vtS-pnp_kINAtS zLth<~V#_!QnaKl**1MMOsQ4^(+e4f8RvxKmCIl-!^B+b+9Pmk#0r{&V0t1OTtKBji zZSHdCxQkJD%)6tt!+)Cqu4SKdLh`6vTi`pEnd6J;USN6E(ytNPgUx!N@2#2*!5j&Iu877nTfq%3WdvZ*Uh8(1SjpmDgCwPsCerfTG%o+pZ0GhpF5IP-Tx;;H}dCou7zxo&eUZGM_rMKMTb#_ABoCJ1F56W6D=_pgY7aS;f4DLrKcOSKC8-;rSNP2h*Jk7v1i-B z+Xe!r>oz9T?9@_;b-AdDv^<0b4Cz+Bl}@=akN+jMF!$mUO^YWBEYzD{dfEF*;Mlkn z6*F`qm~(S&o$q>D!1gN$c#46#!L3e(0g>Jdcj$}I3>k!jL{tN0uWu+P5yMkC*QFY# zz;w}!9V7ONomO|TAO8_g<5DkBWY_F3L*WpF=qBrd94Lfmv5#HC$llz+$}~SdCfTgY ztWQMqy^X*|ty;=T>LizN{R5ecsvwvza2wl#5F__yT}hO+dY2rRO_AnXvS8oSZHw3+ z90l1tgcMhppaM3w2Ht`#XXr{L@=y zq7_CnlQ1{J6T-+zqSF(#ccMwI#P5hGtBBb975`^QwDj=q>VnX~tpyG$$)}TjXe}0% zZZ~*xk26C;r0wxhRIU|i_ll+TX0>MOr~Oav^?UcU_B#}~RHAPU)Rpq__Vvn?8@RG8 z`cTW|KbV&?^h6@(7Jz#{5|WqFVUH0+bk?MAG|9#&s7B-NzFxYk5vpmsMb`nfgX*gr z4uk55t{Ck+4L%(oGW0{$2Jaz~Ebv3nC@a~0xgYd!$BCN(zdr+uY-@eRimtly&EV45 zkj_;ODl;|odJj4gcgCm*LK`3Y8VY=Y}8{{^?ZXhvSS%(Z6TDmS!93=mgq=QL|jcDje3<7WLi`Lg6eN| zxdBZ88Fbg^#*9E#2N&Pb+0o)M=rGE3P?q)rMzAam(G%$|=F0TIFo5n5tMN%+bf>nE z`(Q#=_&S!|Lr2HYr9*UsO!j=PdJg6mv;60(fUjgT`{CAd9!NLKRfkJ(-PyJasX(E` z{mQS_{u)U4W^T7X zAm|J?VStNasms6E3b6VAIWB94T!cJ0`znTmn5Be8C%-qzipjGdH}Q@|dOlbY?x@pI zL;051-(t$)!KoHT!y2gSe>0sE!jBw-rw#mj`w3=YwTzDuOCF8xi%4yC7;0=y7Z zgMlb-4T^GWJdt)bMwilAEy$0L^QnCh2?^vIN(KlF#{OCM7;7#wM!fR&C-Af?01(!N z^Tp2&DCwkwdfnPp!DlH}7H@bKYadKi4(Ugk3L}TdRia z`aA1cdbrQ~37bHWl)d?v*qp2DhXO%>|Epl=P$?)Oa!<(2>NL4AUI z;g0VSava1%=1EfBzHYP`3-i+0nGM;xa1S%Q!3ZzhWU-HcPOkrPf@XL)Ajm^FDCe>Q z@4l+DW1_zBtqJpj*4S8LYFb6KW>?B6G6lQXX z{D`t9fm_<15mio(0e?Vr=t89g*i3zoWft#ri#YDtBehE-DvbFmbSo+OD{p*-)m0#- z@WBmo(ipc|38Z9m^H=pVSu|0`OCvB%#GdbcyQzr$#D@*&n+@7V;j(pV zJ#BxtA_0yvexr!>n5sB26;xQ4zfD?bfxc;ofwI-!@6C)gA#M_C*!<30M>f`z+tQKY z8r>FnoZ31I487&@V2d>mSpaGS=k6yaQ+U0a3E633|0Cv)AFDHgPCV7hD}B?)|FY=3 zSWu*8FBc@YZzc@W<+cbXk16xS+|wZ12wwu_#qb`EyKDXvEJW=8;Xx6c(yXK6z~*c} zPrhh(C01)kd^%=c6=;s-NEVn2X+!j)?fQ`X*LY>?cgVw$QP`n0p=o|((i4>(f`=7a zpguv297Pwj$^}TP)ERlfN|)~0?!^Gq2kths#5cCHMrHQu-@FwZycz!DG90*Go+_x| z%vFgFmgTetVcmMvx*GX*49ztBzAZVxsmu^Gc0r(rnqj1B!GxeQH+11K41n@q^yl~b zSyTh0#vpUfYy-=G=e_7b%6{W7Z6KNUy^3-?c1sJOdy4YNmoVXy?)`qTiVT1zoPQ`?&;R&l|m^)epaq@QYW zf?3}|FZ*XWTig{!5P?2i%jh}24K9iES-tR~_@5vE-w7*@e0DWsE~KT(>Yk2OrVgkq zcMIirWbGBWZ{o5bkxu>ArO$z9=+3P1+iP&IuVN*=+tcuRcdJ^q8|C}YUe-nD$^@9RW$g{IaGzZ zB^)3^2b2Mm24oXwswFEoTLR?gU|FKgKKE0GZfz;RM5@v>Rf5sqbEU5$erQUH5KqaNFAT_QHPwOA zuftzQtF}mB=S=@VgZgpQzUcI!X~!lxXUX}y&!bp7Tm&fn=pIp!m;@UGcMBkDadBXL zbP>y<(u#-%&j#fZ-6A<{w%g<}Z=(C4#1OldCn$l_wzE-MD@!{vZUh%cc%PbNZ8{2G z7;?QoJRJPGazvYNc)kt0$N`e@QV~G9R!4UXxq{5mBV*^hD3(2i%=R_vyKpAfA#D!E z;_MmnyL?H$YrvOmnD=rn;Nj4KUS!d;4t0QA+4D4H9i+v|qXWhWFLro$9@F^rxp$$vi)UObw1{M zuY38KT>zr5Xr~h*_#W7$Jj8`7d;r;4w%U%XT=miCK$s>lI7XbPZjoWWAI4 z@ay8NB3tRRqC6h4(VzmROk!UO-`TyxZ^bB^swwwTt#3~UHU(+{dnY{!uPRRqtX1?t z(ra7}PH!+2ZlBjy?DRX@9ntK0PKK9PIkCBW4S?>WPT+A>7~3WEv+6ffJLUN1@gDi- zFsx#_;Qb^s4vms@y$rc~2)+UmJz2F>7Aww7>xq3CVW0{vVt2dg6m@(qLN8{Ul(e#Z zV+`swz|}>39Aq1W@fDGjv5)bY@Ki(a%G5EjcaNNEIiFY>PKT zFAbo}6omiE|6qd|U9gZFde{2Kl7n5p|E7R?t&@cQZko+8=aKm(@&1?QAu(%E9V@h(;0bA`m} zAd>Bn3{OV)0IBdB6g6{7_O5vXA4-aa=X4GSFK$Tw%V_GX0%5U|SU>yQ`;H&-$;?Ep zUHPZYidY-m{OiyGA_Vw`DfMoIzME3kqJjubQZ4WZY5@b{G$54Z;LLA_(=q(LQQ=wdUM`luxscOdOcSflvYy#Ko6YEp?c2AfG%wAMET zTyk2m5(f9%{H=kG^%(^pPMA7Ap?nMc1RRCDUb7OEAdYv6kt@!(br=)V3&@-eT5f+Z z7HO>cm?_5>r=ezHlkOQE4U9KaG>FZr_={9DYN>V?8VtJ5Eh3_``wZ8s#4f+GF32b^ z@!B=(xu80$uXVkg-0qKH8ox{CIyI-NzL{k&al=FCUBvDWGdc$_clnr)|ORz6jC12~W&hgJEb16Xe@w>@yLjx)b$5JZ+=YP5m$G z$SlV>bOJT4qtB}6F1a(0>Q_wveGk`C0;1?1EvrVx%!}q3+TXC!ix3#EK;_OUvQ>Pd z5^XkoPFfRydjW(>)A=1NH8}w5V_94A1Yt&T9Hg%4H^UL?DeUKgd!Y@d{a zSFZA60bZ_4?DH~XD*Q+d^`b=?5$F6jrxxo4O9>^g6LUSq-z>H0k3S0JRdR+UQxK4i zyjo9C9BP>CQLr2D+GVV=_T@d)?*1aEtx3PD+(a8q-lLRigs$%6&UadmTO9o(M$y#d^Z^1frV@ zJ_^Y14whu%ZegOmV&mADvttAJPPBG1kEke1VKqy5Tytf8xsgQPIc1QFsSa8C(k(qO zeu{kyi)q=jIH*S?TMmt2KiZYNS_LUTyq95^P=&11O|>u1l#5IMVM;etW$7iHKf&pB zT%lHq6_foP%o<|xk_Lyp?XQTO_x4%4mIR)DE9P6-;QtBM2KAy_ccH6>^$34{p{67d z&JJVUn2ZHf85&jsX2cXtbaScV2R=!v&i4NjQkB?N4>|P2yj^dC70S8>d(q{l#Sw|f z_F{j{EzO=nbBMe@l0fOE1%m16#VI86XY0@i0|CPOF_lEdU9#%vXIYEYVmOpis3!#y z(DH(Dq9ZaRD;E=5x4h{>iV4=S!FR4%4Ix4;`dP&(;9|wI( zwr;M{H~1YhPgzF~6(^zA$=v^3RhYFcv%z{R$%v^fiTK<5Y`0^jCWn6~LBvvxYGP)J zKjV4S_AVIbpVr@BGFy0`t8G@Sop@cDVyV}Pe?}cc$Bu(4{+~+aDO!id0s8(61|w%w zZ~8!gz1oX;yO%2IH+PqErIn&e*${=2z#)bSZzyIOn_hK|$C4A0QP;k+7R z+8-zfBNsKJEZ6fM$qQ%alH0k-f2nlUX<1bu;J>+t#FhuKFE)X3HOT3z726y8He;9v zuIR61lx3z;<-7_GxPNVi~b(T536x)2=8eCN)>0-%F@ zqQj;zlE491>5M4BtXA&d5$oIC2mciMo?q>`r;U`4s}D1pDN)NofzY?eS#I zBOoxf03*tT2MLhuV1dw~epr$sL3MiV0a!9|?2G%P0C3e?*tME4u58oPJU7^$=#sm!zFx!0aZ%_^JW^uuW zUGM&(n#AnJDm{Hpu}I#~X=G2xl_y;G=fxY$B3?h+%}B)@F6<)EFN4w64Y0Q32~Dv> zpC}OX@QT*cnNr$}eu3aWHxTOg%^~wKv~rjRg$-Kfa{f52k+-fT&soh~~s ziZ{8LYO6jZ+f+RW*>GIzb+2mKxRjfq)HOa7gieT`$2j80Pa{db2G~0~2o6Twx!swp zg_ApkfmtD#=#V(@o|dW`J#NSF*bj$52^Jg3)je?FTrUNDDNgv|-w<0_VnH|MQcjDr z$(eHmAb9_|e_MgSYElviuGC_1o^;}lbFb<0P#=|Ah+D(|3Ae+JT}3C_6-WAs=Gs)X zQEV|@IX=)CfP~jh#HKXXcJGlj1d$z>j-PLnl@K8J55+9)@X4>)jB%T2-vn7RF^;?Eynv3x8c5SSGNKSuwrqV~S+I5U#MBl%a7J}hS4BXYngMfTa4 zd%yk%2IOtb7n|)?av17#mLHr3^TP?bj@~+!shK8~Dv&2<7m)&cS6v`=#51wt3C!D% zeiK0rJ`{{HaI|#|0C%yDKK~0UoD!#H{^b|@*592&9%T-Ld@D*jt^_Z84d~Wpu8QnU z%Lb>^WUekHj}8Q1iD96_Q5->o)l1Q$7J(Wx-Noso$6S$xF}7Q)_GxJXtd%Uj;6M}6 zB#|;F4mL|*6pj`*shBl6`*tikL3M8fo5Z)~@AA=BAWFm{jNB|Lovnb4u@>N<+YW4G zE;L9mK%fJKffO0+SJYGzc~Er1)`56-SXEFfsk8g5jq6etf4Iifpd6pHRe!x=md^7{ za%fMfZ)h?JnJk$P#ip(!!)UDQSR{s_oxyf;lvhu!&5r~^ zIcO&#)9y@zTWe>||B^i4tpr=ttIxR?Tr@ct%gg=Y_$;hTCdpr}9`&-TMM{<;d(q0& zy{YDngHD3o*itKt3N27yLhgGyyRNptQDQH38D^OV_D#-bC8<#k%-WT*lT$^{MR=#D zB3r&X#o~q(=zBNj6$EVSA-u`pnx{X_rvR>qW*lS&-@hA>8R;n;;%y`TIjPfrd`LGh z&~5;k(}Ftc9aTe)nu<5a3-mbr2`Msq3vMvx3MF+C9DN<8>le$gP-6 zT^Bl7%t6d)ayV#cLpythz>jGPZaH&Y4N2kEV4pkRop~%e3gqSC?SWwORQrL9J90+A zBxB)OzyKA^xZ}~jY$+S7k4LI0x#d&`GpuX(;lLR>z?J0J8uayI^(h1~TBd;6^q2q8 zVC8u)G+HcUkZMN$nA5}sl&gV4bAOn3l^;+4P4we=frR-_AlCqXAlK~N?54Qon15hK zfy3jdCU|Gg!su$3#u{A-**BiRHcu1TM3>gM5q=;cxf##!(0W5NNvZ=!sQ z-ly1ocAYU@XV|`;c-)pZxaxoYa7&y7ow;Ggr|&!T!pHrl%Etp7%Np6m9Hd@Y2bI$! z2lgzJu--RvvVgsC;`W!)G!YBHI>Oe9>OiJGNW`N)nu^BOl#2YNVgVP|_YaWOJXf^< z5`|=qV!y?y>D=_>-uZ-=Che_N%T-~sG%_B;V;L#Lg56>>jmuXeeyYiw20v#boO+CL zr#MbxdT_`N~JIo$!QW?X=>^r(8c z6BY`p=;PLV1RCdEF1?xTtU@CYg%kf0b)BC@Ll<3Tr_7nrIc(Y*<#=G zGzdSr#qDuKnhJ{>58@XjUaR4Gq3B*^Q0h5S3nWRN8uNlu2n!D= zcG-p@vy>a1oD!^>2B>uemXXE=wRB=)-k-svA*!7*zhZ)NsKbjcQlyurxOa~1Y%Wt# zGQ+DIJ2pqgN{R<&=J*fJAVk5++9c>OqAUzEo&KbBRRr+nu+CMjNlrbsQ0%%x`It!r zJKlw3YlMy)i<@T!^XI|}97~S!S}ka zEMJTerXq|uMNp=s8|JfyD|n8oH!HR076smPoT+v%XV^0M=8^1ItBI(f>I?sA!t zlF9sHCAHlbWNibGHZG3tNj~pS2`6B--O{r9NHVnl&fRflbPa<)_;#;TJ4BZ_Qmgc6 z^ovhp%@nxYHpSJ+tK&Oh$N3Lk@DGQ;Ns9L_3uN`R4~vtfqf9z~EkcS3Z3$}9%JJM1JB^L|a2cE`F` zi~)GlrE4)m;$OBKU}*j3`qoc?J>&i3sfe!^4gI4H4S0`SU61stDa-&42ho+i%9QJr zIB8hN`C!Tldc6Iz?wB>Kf=L^57jGQO>D4$2b5mQmLrdcx34*IWfb>hj zyDe3q|(V+F<`Nim%3 z>KbjQH@c%}{J>0THepj-(FmuDYA7&1EE1{fB4R5Si3lXXLGZ^o(KjOU+R(<#2|T!~ zyl39}DZmtNw-m>2bPf!@+b>X1iy;+xfNDsOh&8&7oTI)Qg{p3!kmuIFue zt%fcMoAg=oXhqA-nLMyC3<)>qpOiq!Ajv^cW8r)f=v)a{4R`KUqkZAlad-0aV&am$ zt9}c30L}yJZ;JU(G#Fyx9l(PMpU>c|d){aS9RpW@SgmjSocFLlZQGQsc5p{dQofm5 z{Aht=)^8&6O5*zjwNh!>y|o~P#e+d5AB1*ei$nT$27;VLQOT=nqs1{qDViuoYRxdu zWzosS#=cH;b$qpA4U%6qdBpPx1y8Osb3yX(Q5NzKLlaDs)KdS4VTQ;#rxs8?YZ%%{ zwM=h>U`R)%U_68hG{BHQiZNDaJd0jAxQOh@6H2#)I4Y*&%PM=6FdI|$Z$3s3ESTZQX; z|Aj-gD1MJ~RegzGq+S#i0y+W*^n`=pNMIS}pd!@dfS9yDfBpwzS8h&>)qu}^QR=qe zl;raNz*H|zMzXBM{dB1YX;aSMxeyobm%)elCfi0Zf@qm=;r7{MRre2pFgm-a@Pmi5 zf*$~M4C&ksK4t($)FlPXh#`GXerFFm#PG(GWPsiEs+gK9RD)dNq&{C?h++mEdqewm z(F)pd^eko@qIlsEG1v|qGwkYru@07R!M@2vGK@MvUzsi$ z82d@MTZA1Mq58h7nctySDbdts@s;R`ZYHNedl5d=esB(*8H85A#J>BlJ#*k}d1NwF zc*KSy?a^Wm zLv5DN!t5)2vE1ii@<&cEs8^rb!r9vpmG#v~@c88e5>A)H80|i50>vvhLZ1v<>GPL_ z`%x)QkUrsk{K2%Dx_icI&G#70ViSQ*y@!T(2(y#$*aFCme1@arT)T7%#QGuMZ9+C7 znmteXnMX8M{7CEF2%s1;|3VF~P?Xc1WtWi-77*AE|IxA%mYaY1%>OLqAS(_}r^TVDVfw>8ivG zD#8&XchB^O-ox#_DQHuYhNv*v7Gg`qh0;gAXy(|ONG<;Ts!+K ziq|1~A$kz@a`Nx3Kw^L0GvJL@`1NOno&=~zgn#F;Z>3PrAXrK?SU9R!ZSbP@*npJ+ zprDzfCwX|gPF(p`;&eDt6c4F~Z)|!#YmDG2JBJ7!OTn8#88Bl9G3B?P?UncveWJ*tBGAK7iLo+SuS~RP!GTE{ z5*AQGu=;3CNyoyx@pX@ta-E&FQDjoVJuf*YjWs-9;_Y^iSzAB>j{IJw^4Vp&Fs;%Ctw;v@)6bvpv%H16ESU6_qrA2GgUaLdZ7;N%BLW` z1zG+nu3@f9^5s0s~>A(f#|3wRHX4(0O`sk&#bMz{8B}fHy}q#VvqU z;yrx~+@0#Fs!=7@p4(FmrczVlq0l#l5P=RUEIZiv3PfFJqh-YNR{p0EQe^y?w&z-W>6D)tpR^bwz%sIu*KJ|+vs^#I0g9sT>m~YInd*7Fd#WU zVK%^D@K04o0O6+JJNmm1De!aDbhM^J=U{L-SLt1CYL-wS@GQVIOcsyc0q-(e7tmK#WAkrEmqF#I1U#Qu+rTbw zrP2h^)g6JEQ<;)Qye10lkGiYpWiWri$sA zQzVX24*VJ1=ksZxGdiku6*)^?pot0`&>V`WZY#TEnz->KsLB%_1yv&Gk<;5~e0`T-Kx7@k;xc|2=& zL+Y3~C}|{13}rqCDpR<)*^CEQRA4&F=KZ*byANj1hMysaj&xx_@Ne2Hwpczn?5-(m z*mAX~_J2mcc}BQ+=AcqcpSvwOb3@$*fgu`!%6?UsssD0ZY~$nd&UcZJ;NAB&^En{vS{z15lxzGTurAKo-J2WQc_Qk{|EL=JodU zq5$$sRLcerOjr56^X(L$Lb%gltPCMFCM}uy;)9YUuAG5h$kdT2vLel?x3 zVx17w29cT+5A%*TDuW`i*bb+yuwXPbv=J52R4I~>&?HCen0-RSCsS~Ap+M~n7Y}vE zcG3TlW3fHGMF5p{j@I(56({et==6duIOBKQX&}ESKlr`4{i6AOyJrX< zI4N>d9ea4Z-}(*72aqVqIiTC^@Rj~Po32A&QZT6W zjY}_6JxZvO%ND@xQh3z#cW`-yAP~O*yg|jJ+6jB_FCD<`Lah8ljOuYpU>5!wwCkEv zl`OmJlT!;H+o2w)21!Bn2E+ppk(hZJz5@CgDK1bQj=ku?i=2CO@A$sO0Q|cKnbH;+ zxfa`{;sP@->O34NWRy|;Wl*e%(H3|&gvlrIzG_1?u8H!CwvsC1e@(>eO-Cf5_Tcc) z@+u9}s2Y_9+Xf_SRz2V%8hw>#yxn@Kdvt|ByV`(Zro=yNa}_L43Xy)c@AW70M7bu< z;`tBImDqYjYvt_-+(s?i(_gsIfGC75;BEqZ&e%>v_bZ4fa|-s(e}5c!iuL$;?uVSyAKLFKYN*ri8%1)JgH!`DWhu~gNQpei{dlFk~s88Pg& zP*#ov+tC^`EY86zeVIq3%GFbDHtZS}?2x(y>)vjggComK`(byNJ)IEOE-F}1sRH2e z%cZmD&3`_g$Zgh3qCB`wfV@h?;S!-*viNX1D8QV~%(=~zOc^U{6p$c=P;Bo0t-2fA z6zftvBpN7I6xo=r-k|@cszjfWqxXrRyFuFL123Q7#-2@$`S=p~J@R2Zjv!0`0&BWy zEgo0z;&k7X1!W6akU6cP@u%sw4a}FwWufYX*5QZHbWtXq+7`M+fX*)hF9mEsmMr_k zPEVw-qc{ZFGMWtDa1XsUvw}&<;roK?+8DzzV!wXEL;vNnetU3M$R1{U!5MiFTgcXY=8S1p^{R%!j*@3ZY2`I}Go zNDpm}iis!5aFQ=~+8c_YS1}{K5m5?9+L^f)dba8HQ_A%}DHd*!Y0NpMc@(4&t+&0; zJ;`USdrNMii#SEA5ZnI)BV1ssEKzRMdiG!-)K43~7wl^%Me2iA8sHRuL)`zylmIz8 zGEL|43@KEs8P;lc1gqSVI?pkH{*zdg1kI>D%Nk7&*KtYF*LS@H-BTzFC-kvk&N;B(OT*FkNu+zu64o?w8tyC4Joe|D&++X-by|Jz^@<@WWXVJnico-&KDI zlQ4_Ye~gu#D1e#(P@vA_qOP`fAf#_@*p@FKJg!HVpigi-(4U0V zb+ENG5>60w2*fVW2u+W|XY53H=iegc_an&RNNK`YRs^4o+bao?`A=Kl@0Nuk%j*vv zj{@9)HR_+hFyh{KG61xr*5D|e>>Zv5G0rQmC&t0Yibj&dtRx{`9M8DjvI{mg_q+o5 z_De>cAm-6woiqv0;0}+s&)kHl@#no{aN?HKJJh_-;|aL}=?1*a{tZ{|W%j1WFJbe{JroO;YzI~)ZU8{V1f0dE*^od^t21WcdidGHhS`;eU zRS7N?3Wk_o3=!#(nULJo5T80)tc>n!QE^aTnX-TV6ye3J=d5)Y&C*NoWKWbsna{4C z9lCbNkh9trK4)m9(6nLcrnxm<-o0i|(FiAP@n>C`iZz32(-mU70BW;>Q}I*azJbFLiJDEf zMZHch+xgC%pDSICXHuTg6|W9MNKzj~RpGDOuz1T~q?zb7h=gL!{>+5mH~44D^f_!- z;d{4?!TgT-5r{96kbE%qALYb~9PUtG;N1?sY`bK`Dh8tuZGrQ0UN70|>Clav{xWwX z*eE3LJMeSOK0|V~9b~L$q5)y2QbWMl{r4aO*`WT5^)=stfk#Hinb>dft+`6n3A7{X z^Gww}8lROuJmmC{5zcVlfy1f4KN>n~xLiO&D6-OJU|%+mr_9aK71>+$5?v9_xGag4 zl^QP0db*pEJ4!DiGYZm~QCDus`wbUyNG^ArGOIoI$*6bG47acWc3>pe;J1;M34w;p z1It(-i#Q~#hzMBZwS=E8Iem4cWmpE$Nn+kiL-wK-=E1%Fn>$u}*}16Iqw0Z{h?O82 z$0cK0>QQStES?ve=ZW^hKfM^Ru}9!(_|6c?8ze3~CgZd)|0Y00!ydL!o|2A7z?x09 zXXh!&k$9q1){Sks<1H7`QolNJRC}^(Sj(8uXofSxk}vk7kK8933|~9RWMw;payXaG zJnepMznE`7rnI|dIAY^w$<3Lg1a3<`K@mZ?}ok{hpEr@stE9oC1ngNUi7-Ia~nx3$~bv+7c7S3D{f*to5#8# z0%Ws+5p}()52tn7xv{Tgx}lHQ8dY;;+vS?m8qpXUpQOIm!?b-|7=2;98`gMcOqgJd zxO{p^6*ew_yqSq%S*uga(2s-G;AdFDwREBc<%t*6(k+A8&s6kYQuE&yWyDOyNo)Io zK7O4Mh%c3yDGQ_mF#}Q?zU-qAZ;*L&^mI@t%-`x*!={gWp4L~I42<<})ytrKy@Ma| zvy@G~kT*i|0p}bZM{jDaCprQ(ud5+~%Iq)$M=Bi7^!pnP#*4HC;e0vrQf7f18*LHP z5gn4US0ofHSZ$pRS? zUgYd=U0%ZKDZ*9siAZq{R#GS`WnSK;`X_S~L>;Sk9F}P;kvyi5At2Tg3zzZaEnB_N#XmluU9oVz_Ynv#k=#`w zx$ojDE#UAwdw0V?$eAy5pAe`u(10a$LYJJQ*JSLF18DD4Ow+^wG0(3@s^@URXeOy_ zynYy=yDQB;z<$jjQl`ySn(jO2l`HT3FeheGyBgPRXMsYonR@NhHK&nM*r4Wd=;jP~O~bep3uz zT->KsgZu#vRPM>e<)DD`(aYWK1*UPi!B3ZOk~|gY%O~7)UUISY8wm@r;G*ehPF8Zmn3~e}HacR-qh-P(ziAU`gjn50u!p!4rW`*E zvpZQ*>OxpD=&~D}ll2x_p z(O=F$Z=y2MTX}oAO$w_&r&5QSV0v|Ic?UX5VspE&Ni6iJ4Kt7^Vw&m-p%)-<%n6pB6U!v(M{l%S+?I2v`$nj9N4yHUxRe_Oe6v4A1zT&(jUBSJM717v7~JT}1% zK_2RT$UlGu(LZ{^h6xGnwu;qpm79)O`(xD#eyiZB3hG^6A&BVqaoza#=TrJl;~F&| za-OQZ7&c3VcHkhU~>ngodnR-qQnjBiCz-d}K>J2>zsoI-Nlq*_0m3x==c`M6J`*H ztbLg3!A^=HkbgaAQM$TwjqzFyGz35A?!`PV-GT8w^0}bBuf|rbK7|mQf z+r0Qp%|(amQnV8-4@@)%%A>BXrPbC$(hU%0uG=!S_j4Hp?)Le|kme|!Yu;0ZyG~ss zKYQjDUV_))PRY*&>{8e6O474!Z`nC(5iAqJ{GlWNTkoukDZi)`ru*?Iy)lQ^#4V|1 zsr{GIxIMXDgs!Q$CIU^pB_ssqNno^7As3|!cuz?@n7$AyY2GIQn`<8qYc3n)*+;5f z%L&&XEF>1lZ@M>vr7%#*07;B(d*|S`@aOSiD+2kduXSINNWKAmhXyRV+u|6;x}&zC zt~y&>kz88hHCKeu=01L%xc7#k68p<3trbde>(hoK7Tk7=m4Q%H$bmofj$pyHZuQ7- z%{a1HK9?j$1+SC~ty{|tF|{h)?7o#Qu1urh^`lh-c7(Im;OD-J(UM>TuE+jR*ocl@ zvc{$s&0dRr=*8UCa^i74+bb!x?n_6C);a+B9}WH+V2$_5lvaKLN8FG_)F4a3to?M@ zE@S9s1I(Fi9|e#+!2u7vxp2P%;%;#!BCBJDCC#O86m7_;qO)9JP)sOX*!XG<6I-by zV1{#E*gLTKw~grl+6E|;^7U+NE{RGf^Jd%Y6XZ-98e*8=y_MJbO7)|=SJ{b#X`CVb zJ=iuvcd+U4z;_SV91)B-m^Z4kmdWxM=ByD&iT?sV7XbOjzkb*lk!Qo&dPAS0uP4Ba z2RMd$stM6%18uE)uWdu?+_dWthUAG{24j4_x^-5CwtBw}I8b9oq3%x0K`_RX5q>kO z<+;dHw=-IL7Ypa-l=;PXmCD4LkvZaSBlH{~D*%Df-Ok<^H0QQurkMq1y1_ff`ll{N zDQgJRyN)SdF!I+Dc{&e1v&nk}K|Jgx|3azW>TcwSCG-{k&Gn!dvd+jsO1-O!oW$~1 zN>rMPZnC5+0B1dp>4tH-xcoOtzcTrz6n|6*!1pmtjxl`fa})@JtnL5YVbSVCd}6 zaCtUIc;*m@m%rb2R7_Z->_q_lK*J)ubKLGTo}S$17)Ri}81oR|3l*sVH$ce0oeI+< zvVvue^2gtU*Hqpt0q8}JFE$Gkz8^zl>Yi`0L9q3k=kIm1zwhc`aB!Y(1@)wQRi*)M0||wN(l+) z=3k>mgPi+_xSi|ddYrg!C9{Bz>ntrQbo6Aw7QZrzi}D-Zj+0YU4G_F-@B2-t4Ecv) z_lK>a#`@G3BNuVUUzAnot)&Op96;^X1JD`Cl0_4&rj0QLU*P&Rq>I~-mb?#GwB25# z?ZyQq`5Or~#IBp#$g(ktw0;x&Ti?j@J6O$9Vk|m1R*b8GTx^7F3>q2_&tghX<*54-@dJCg-nJ&F$=L#g>&c?rlWEW{MIYaxx8NK zQF;?Tjau=xJg*>2?pm-1LoGCs!RJuTZjJRM3tb9D?C5TCW{xm}S)#$xmsr|@k1SOJ>sw|@iLg}TtgX0p<4gcBx97rD}_Ag6h|Ke@yIQETN~f3Jd%7uojqGgb+l z$UOqSO~TBRtRfqSi<2>*HY2gQy%kDYnKXGid3x#OfhHGt7j((m80(6wPoqV@iD zzm7l+NtRF$C$)IVX|!pr4hFW}{_O>ZhA~dj$b&)Tuks8Y*^K~HGU!nMn)&>*^L_2D zPQ;%VJIKsYEqniGLf9atB^L}kfsmDB!puwlj|c7;T1zo$wPdN-F_n;@Dd1Z%wY5F1 zQZhBtDX8uC8w_P%Z@kIFCJNT=`USuem{n&z%U6{7lr-}h&{$mGH`4&FZ3omg2ul^M zT;e8lunJ=`)1<{;C~rQ}k1~O7>L*sV8xM?X49L5HcDr}b8~pUW#hgOQot5ljL)I27mQM*do{TF{Qq89i((xnNB7@-p3^o#peo0!@{ zkuO)|FW(J3vj7Y(af_P3>Mf7MHG#oc9tr5K+lH-)8170|NjbSLpA4{EE<-upOYOSU zcv_sbY7(JJ_Mt3SkFvF9K)C_J`qFd6Lb@ZcHbsfwVLV08q-4Byg3oY~^6-moWXH=h zMYTF_sO?2xbYdQG@HqxF_ed&R$i&g*^jt((+!jp=x@yQDPERcGg>Bx024_?FvlT`y+ zyfja8yP%Uy)nH6D#6}ZGKzWyyUm>7v9*zbTTQO8Iu^kyi;XjD*pygD>xhQ$0UUAH^ z8}$_d+8g18$|1|t6Qb22qK3Y8_>kzGt< zEzdMw>3zIzbka%MxJomB@_2!Jr&6H277yq*+052`5xIbMRw%>s-ZHnlava5;7(G^XR_l#C1oYb+8qaO5xJ`qbNgneE(~SVRKF49;fCLm{T+$ehMkm}_c`Kw zh6?{;@{}y-y(WZ@Y3xAiyA|E~VrS3?qCztK0{}XH*zSOB{zE28$5eUe zO-DdeRq98zHD(obL~+>?SfCFAPU9iC#HVk{=r^FAL(;<7ffH!Ephn!1JrhKKfK-pjiB{>X*RDrBtiqk0jWFFp8g}!Z*Y;%=Qht zGnfS`m!-4VFX(m6(EFRI<55l!Ue;}_k4iFEjRL+YWSKAxSQC{&*?B=3OqHoUlAS=p zWoNpRsbuiXq1EoCSi)K`*i|4?0|s+ai@#cLm8 z#Vq5klehZk=p<0cFKSb={s>niu*idL>F?D>>N{~KLLOy~Zf*rCx z(%cB6yjTaSOBOtXf-$LNsD92kiZY5WSQX z_yPE@A*B@dnK zlwd+Eg6QJ+-dUy_9k;ngH`C%DD#rC7s8c?HUR{HN&Fir>mQA^X%EUKtd!*r>uGDvzNiMo*$%$h&Wjs+wBxoe`b=sY@_CW8yjF zRu^Qb5T#w!7-mQ1po@@gQ8rSr=#z2*(Tk89iRwbiRCg%c*aC$W^AXkm(W&hIqyaQk z-{CEEXzSB@`Nf;QsA8|TF4}gjNq_bi!V-Jy8;_`!eT(e*l#a1b8MlU07JqKEeK`*| zA=7EoxNY9eMkzV@lg~KSAm1!RQw~QnTFXPLYh{;BnUB1mK2bt1=7ZtafA?1P1#awY zCqI5~zdA6Gy2>|Oh3arf6t|^icx`iGTJKP2dtmIT7qwibYteZ9pOZ7jDwBTL{8QD zAn1Vl0e`WS7;i5Xnd!4p+O}G6%1xrA+y`Ios_%evJvws6M)kF^p$RfPzS^k(SW`wR zZpM-V1Y-%j?NzF~9$mTvDTVK$uTz1yV)o{f=p65e9FET5Kz3H+pn|vrmiR(O{3vl% z+Fr(u!C1^ou-WdfViiwNGWnDlfnrC-tKizxRDsmTxU6~e`1aOYei}~0YKInim=6RU z#!4Sm0uq#VBX)(Bm0k`{OKd(O_wF0-SfN}--s#a`;<-;dT)CA=YMPN`jaTIEo+yO| z=XUk{QRF={SZ}h0-;1-tDmuu*Y*>l9;X`iTTtRG%tKgZg{_Q5-kfa? zD@E|!cNt*9vWjq6(Ehd4h}Iiy(T7cZtsQEDC?w{{A<*79mmZu2?DxvVhaI|i-)W-Si&EOup>o(zMVRIsUE!qWzbexu;G)h0E024q->8%>n_ z<|U{0HM#+<;XA*Q=CN`DW{Q@D@$YJfQH$Q~ajSG3#6rZBKNBAbWcfcyFcw7(MsdT* zWq@~+lePP@T;%8Xy7pI5mRan&C;{y_F^8p8RWXE59>=cfg(N(B4O9z*&gsgrkabn! zQDrRy&s&a<6-FQS>al@Z1+NAp0~Ai*UvqhQY^FR-F8VM;w(^wt!Up3QP^NQPF5Z3U z;Hag$`xPb5@G>G?-V;S@#jy@F+G$p$=b{w@YV5Xfk*-j84fbK|N2s6b`=4y;mncu9 zi^@Uz`6Vyz=lMa+0@e+2eK1@WMXk`>Kf_C8?dKQLa8VX0U}p!&nT%H(PsZb$q9G{r z@M&nL3Lz~Z-W-Ioz?`MKhti={;7aV`4N#FL-jyHkIHDgPW04~lV(t5tlzB2r zMG%aSeT{XFZCUw*Uxn>O`9ZC zg)PVQ%adRh-JQBrygmL&8oakS%tm6Z*sk->ST(U8nDvV zqKCB?W1}_MELS5XNL3{&8YVL&<@;<(($W$Q{sWZY(*Js^hwIIn<~i)Qhsn))6%<14D0zN1BFELsyhCMk$-IEP@}oo?jgl+;KcQk2EUSn z6osH4i@>cvdUxccG6L|$gPZ@MfVD18-z&eiuMpFyDqNU5sf*hhucXNVeg zBGF>#f1?EZo#OgV+U34^#(5IiI`Ut9$)3W%3RowRr>S#D@poz@Rg4 zN2c-)W~>n|Ms=(~+Kd%wW|mibYl~n^;hUVXh>n6CtQ(=i?^ZYV z<2MhDstUn=U{hZe(<&G&%(A4!nwlWhwh)^kJauYx=6%vW>IBy_3TDf6o3o38(09=c z^~YcOJ_m9ZM{~S)>iMUOfZxdIq?OmgJ~v zbyq;}3E>eVnO@aaL4aWQ=%{NZHOp3{WllN*Q&nhDNnn-uZek8;b7-dsq*`X}%=`Sx z@0S2?*iz>Hlw<(pwIor1kauX2X#9KR&56~yE{*Lvw*x((X!!QLK#LO}*`5=A%%ly- z*6!`W?0Jqo-GVli2kAW=Xv>q8JFj}n5^^qx4Pr|6<(rT%eSQjB`fbzE9=r}(YdhiY(a$^6!nBa}Ye3Gw<;8hpH9_jF&Pe1LJA?f$Q3c91$qdq9(E)r1 z9-rFAYh2mF@wPdb0c@=gIQ2+1j;8Z1K$N3y`^gU5Nvl5@@UgS;XITr{vi1f4L!T1i z*(d1;!d3Jf5%GhHc?Suz3FZQZv%B>S*+517gdc6T?6JURL6ECF8}VlZsqB*;Y;cqH@> zn!*EOui-SgUJuKqR$r_E7Rl>PY`@f>*EbP_K8EchDktr zY=(kU^h1G>5+b;a9B>k0N9vNEsLNszLG{J9(~KM2uXhrK$)$7xjfG?i0m(n8b$0mT z%1`Mhdk4C|cd?4>f^)9Evv9$29f_`wp@XCR6rz(bTH)+_yk1Ns2P#JtT5mwYON%5I zz~V1v?%7k^Oo!S-O2$e#eAy(qSV?m}f{*XA5!Ykat=dHDn>u8|PE zY*1rViDFY#6)e{{HEwk5;Q1H)33UC|n>Gg|)?L3t?1U}jpT;}WxAEx^_PFPg87Y8Vutpm(E2liD>~<`xOs&+P(L299wH`s zKWr%d#_%s&UMd=Ml(X&NjdAfJT3}F|O&W)55yFx&E5pul8Nuy0LH*TuK z9BU9+a?}nr|G~*g#F~D;)5=KG;`sP01hYSRz3CrRQMO*Fuy{9?O=8(0Sy=j>vSuTa z^e>SfRw`22Qt(|TT{l*exh%ICfWrB|J2jYzBXl9zO=ziHQDD^0?M9NCt>u|k z=68GapCV4kQ5~KN z&|OJl%!Lqt&P=W|xC z@>Y9N*FoTzKpl)HZ7>Kgb*;gu*pf+bOU(%5E9ML!+$!=^HQwCv-8WbJX$kN+X zl)ftynKArhXc$&kB0%`sNGIO%1W(V?|M_I4MJ_l2@qJ;|*i4J7>Pm4xTJQLTKrC}F zJ2xxv;G&H)iWzsh?LM+JQ~`puTKr6S*gEfXKj?@#B|G+7l_WgLQ40b>OQzz4{_QWGj>Nip!} z7Z$iV2B1z`!p3`16LxM=cE8KN1&zK5-1_ik;(bFGF^TZ2cVo9%@vM)Z!PD~^WKP^m z4QxPI;KzJ-$%ebc2qEJNR-*a+?Rr+uj)j4RMg@k9N=zI1vEK9atSeA2SyK;V3)@n% z)1V*7p{;o{e+r-Ua0Zp!Jt@3Z2n-kmt9MVwonp0p_WB!) z2Nto<6ts`N5Y39#tktkDRvYfKEzoA%act#W__zx3kvP|QILtYS9EcfU=NT9OhFNEQ zsK|@i1y7VnP(P}%fmWzfa}~x#d!mM=DcKfZU)m3@^V%qgZY|%7e4*DJSvN1l10{!N;OFiUL>VKu718j+5SMKmCtUq&x9hzadUNoHj0a|D%JMTx z85fe4AK~iTa-`-zTbw3?Ov)a`;IcAK|&qNnNrSlliP!ROR~sp!xGa zfhG|+yS0fE(9t8oHGi=l@h1lE)Ln0L(zZSY#iWky%mwAjh$^cQl(@G90*#$ER`4-QX#h2Zhy} z8y+4%0-Bds+f`pX@It6;g&s z55c=ObrsIyVsvb2W6XH);T~X|by%2_Ey)|=nUiaH)O=htinz@snNB{VVsa(hKTY+R z3~vZ?>{b78iXu9kUnYt0f!(^ArB36bIQc5YlDMjL-K1(1Y^h=)`HJ8bU*Xn5(R=GO z(>8x4HASKzJ*7qgi@d+t$mYKX8uxOH^N#x+Y~iI4FQaXq&=q5ZTegYtfWKC14dStF zA_+=lMN*NJ)wuYOa{{R|b=XA%tG=Dz-6_c2($)Uw%yoj-8RE&{t z;q8ToFgTg1aO_#1LO5%mnr>p{gNVZ@5h_o^Oznu{L}mi;GE+E0VY7(HHs1pf?I)TJ z&n~akNYbU|L7RO34>2K*bfUA_0p;|2Un3b^cm0kaf4Lh6PteO{9Li@ZiiO#d)IqrE z-yND`R9IsG?>-0q$fxy4(FiVn>|BpOM4^rM_@Cbl02*FvwJb8M2t(;l;sRC%(Pyp~ z^PX`AiLfnpb<@-wHZRp^B|gD6uPAoq(=pM&JmjKoI_Eut)pnWZ&ezc(Or`Du(ruh9 zw2Gic=oX|vb7Tyi)##JODD1KygUpTkj3*OUd79-HLrGMW1*)PQ?U z6JUUP!ohS?+BtXa2W#ouIMMdQp+lG~9M=`+^%pn{Jlg7VkIZWx4lVVM%A0ik-wYCK zbyMlz+K6hIIhIlkA^{Qu(8LZSh=WqV!!(U~@TysTz3TGJ(j%*EGqIum2yDneg^WW@ zY)aq>>rDu4CAz`?#B6Z% zLTMf;RNyV}AkO_Vrg&jlrzOWCD74Z6-J*RcoDjAOWy-&{k`=KltM9`c3yZz9Qo1<*u6JwjiITpNY z0{Qv6^uyVKBSmgg7a50WJg>Jkl?_!FsmMkb1fW|%;sjvQEezBEI@o;KR=a{u*s1MC z$i&L2y^Z7_VEeXZvYQ$qC~Q)@M~~QNVyU*%2x_Wf>Kxh&U8!|2?bf`tSjAD^FWNwz z`R>i0z)Fg7jdmRk*{g*foEt?73C@g9vJHRekF!CMpzQ1W!k*Z`k6d6W7lL)f;o6I3aR#I6c7r(x*X-W)2s6ejhGf@~ zG<;kH5wYv1tG|Z698#G8&=-Mv53kHqQ0Xc}tMYegWEqZ83irG@eA>-pajY)!DKo`lIBpI$d{ra7SQPqCozxy$1!DfCPOXXKC%qV?MthE#2 zG-XB2U~x@NT<~YSWZu8dqOK$Tz&c?`06HuFGoU9O>e`>WvBp=$s?u2y@kK+61vIX( zwI=K?3uxUQ)_c={&MC66M7qMv>M4{F;c>?yFW8uGTBvxahbw{3Un5DjE7p7tNT2dhtsb`15 zf;$xr8BC!!4huK?+sgA7eetfHQDX3WFUd-1Bb(%k{*^DAI<@eKw?}gW-xH81*x{2n zA-L}!E?D;owL-!IC?lpnGit;xd-6|06iRAp!Yk&&&_f8S! zY=oIw#_-q^j{T3t@_6L(#4fG}Wbe{1vNa0eZ%h6~BTZKmf_8EzCo*guP5-gYWOdqE}F+TTScv>F^rLUXxf!@VFuLggFcfGYi;u$lDQ}Iz6`?Fpj~YZ zNy$92n#Eh$^}R9L0f+p#8Dn-hhyC{~ao7MmboxJ#**Cc+DV38x)rX|9Gnb0fWUKs` zlj8-5HMXQh0bN5%q_cM6Fs9hnyfj~|2xXNQQNWrm7+XJ$xz?w{Xtv&^Wd&jzoX$|q zpqBYN=N~oWkCdQI+uH+nSN*b!6gQn}E8o&M<03@&n_+JilN3EALif7~os(H{Td*Q0lN2^)`P~m_*Ll?FRw}H+d6!U=&n3rMzOg74=WJ zJUl1v@3W07{qLS2x}HnvI7$jt=?G)Dno6G}u~eei&f&dt5l2gnJ@c6GcLP%zIUx$` zVuY;Ic8Ii`@qSSTUpIyyka6?kC7y8BK!km10Uf$=hl9<%bN|%;PD%~L8KH1QnyQ== zbIj>wSYk7k-d(rcT&Zvk+k%klt-Ot2B>N@8nbN|nc^1dx4~ItbzG^XUmgfr+X7S(B zi%ryEtgq7Z2x`fU^g*+S^fyi3iY_7tT9NmOK_oHXPBi8MCTdp%6S?=~JIFkpGo@>3 zNOQHA^}pv2^wxag3S9Fdq-doSUx{y~Fz84dd+<23cBB(y_Cmr3C)@J-AP*U$wH8#i ze>CIdVLGFR6!70}Po?@o#N>N?^k^+LGU7yrZwh$W&QE@h0vJ<=qTabPO43Dwgwwf66hN|I^2wljfU|vhBOcBRM3En0@FUNbh zKK9ko4$ra!An&sqMIN-}AM@(TG#e48d{#_A&Ykc3O^MLVb8JxM+ZrZz-);4U>mGPH zl~|X~t^RvIiZY$yU)bhI`Xql)9lRR@lB{!aCoEFOz1&2~f4n){lIt#l8EJ$3#7eYn zm0Y+tL!@9H-h*vDw&=1lcZMbQaxgG^Dx0O6_F2N?Tg z+-}2;agTU@QjUz$BMfpn2^!NpJAadvcs1A5*;kjD+k?O*ka~Zb+YE=S6zZdobC!Si z-cmY_kBhkatmzx>-p>=_2r9hJ=5EXJl9Us%S?0zV?FX)v7wj?VV;)fOMRI8tz)CCS zM9qefVsI?=7>R>lULQRF06?nB)$ly`%8UY_tb{qp&bUIKT8@iUsE`riD=4!xdi^NYD2TDurn}D>5#if8X5?kU9m80*04- z3pQ&fn^L!5gajb65XCsd?rr@E*L#>LaDc-$URaMfNvTRg9m4>Kjj%jrA3K`9(*L<5 zR@1+QXU*vC#ac=~vS8frn7Sn^HtQ%c#4QmN!bUID$B91EYWq2t(!+McQ!}le#Us#Q!8FJWRj(^L9eSoO}J`;dQb+3clwBe?WX7{ z)=Z?4mfP2{!uuxT{?6P*Mx#{YwNbk*u=1U=J`V!JUJRQ><|hE2&b&N_rBt8chdPsV zOT+my;xo0NNyGYKpH4#b+&5bG`X>E3U&@o=kZbXa(T--rC1^6+OHQkX`C13LFX zu*S9Y702Mqp8_YEyuHN9wY1n&(|{V4lQz>np-0$4sj3rA%}n{5uqkX*ThlAVgZ_q> zdqzP`DS3DgYHGR;sAd|Q??|${Es`>MAZ#!{q0O697*PD!+K~F}zLUtGTIS$=)6~1E zga$d;$09nsPA?)-nwymb3x$!p(&3KocKiyg1CXj6S<;|KOx-ZJFT)LYJls3I=H-yD z@HXobY6yU?#$)i2CSj zE{!!k75^Xrbf6WDJ)gaR?TXqnt1Vf(&5;u(G}C8-r1ebMV-y(A{`TurzEt?cN7pdd z==Ha85rDP~xsWig^*Y2s0F`yFT;o4ogD-d=d;VT$=;;(VQir)7xj7PKLsDU9gd*J= zVZMj}nAjzf@cC5T5&wrfSQ!{Kl0((x)O;j}?E;`M?*q6e(YT+kI7O&aaBoFrCVy2r zW^d^FTrxFZ0x?B3=7M3C8&|!h^%1j30Emc%iIUdDrFz(_O$&>)FNE!o-}S>4!g&6^ z1)d`Y!0jH&P+jT;1tyLhfC(E(V_qdkKroT*c%swf+7UwVv`GGP``0~7o}ICXDJsal zWf%HLi`sbxum9(-+-^XN#)*Ol0kgTc9XsWz_U58rj4etY4$?gm`HfX8KKCQV{FJ8d zbdpW7GmxK;3YV@+$oSc;Xz~TP8##R2r?>NXScDgq>s11xt{X8)B(9Xkf0)$3SPR9C zl_+je`;mw%_I{<&=S{rn+MPzvaa!WAu|P-+4zV4LmVU2n1qe_HT<% zmn`!c*Xy#6d*>Z1IzHk?WzRt3cEd1Y+-=~h!-2m#{mJpi#_@u9_i8H;(+WIlCm&Ou zGxsP+4Z!n!J9K1n=wA;0hCpV%yj!?D^uzHcF)JAsoxNS-BRbWv%|IEe)|_wk9U?H< zwOi(}c^EM~R)#@gvi~#V7UmJ&ecKvC4nV~_cl4sbRxQbz4*;nu&7nn=uV|Jjrh4t2T7xXcIWkH1cu zqajonH;?Ng`8@~Ls!2RbgWuxD)XY*l&Cgd0q++hXT|?BHE6@f(MGEDed=MeSXUn8) z?TX0nc5EWXPI=>wVH-=R+hdxdQe=nvP+F5zoeBAFG{$Tnq)ShEgJ`uH3$Et#UDeV4 zQay2*QeK3ebKU19an@ZuZq4u26&_g{xUB@EnBmc$i4m2#b0gHy4jiLw8U9X=98<&2 zGHYvOJ~HOg+ybqI*lqaFTs5%if*;!56YlqwH2v|ESxN8!s9g@w-t{_zCdE*VdfSyv zELrrD@)26Q&Jq(EC-xYh#)%o7nrBeK83LohW?PiqO8dEJ--?&6U1mU|<9d9kVkCz7 z)+$iorh!5|QGIio;fQN6 zo=z!LeB*@B@+*TP&PbBi-W8*O6CMTbmWMkQ3L!lM0_SD9Sm7mGAE=gHO`$wsfuknZ z!v=Cpg|HKJ*?3@OsFKi08&*q>9pz%{)w{-BFk}NUdBG%OJtqCatcc&)FqAttiQ3Z! zes*I(p(YT|>6b%J0CA9OHGW`oALz?TOy=#GF9eAGt_oe`Qh%YDLY=@NO7XKsfn|-B zq^ZYB-keB{WYlSoA#v!0>;B?y%3x;%aE%!&40?}=1xONapd&8K*6l{-fjWUknb43G z%~f?HlFi*g3DN-~*ZX;0Sj6_yDR5@NiIyq*2w4vC5?q(3Hy5lkOX}-imS}heWN#R! z(!k7+Qt3*-R0@Li4AT0xFs*fn4Emjm3L7%bHbUd01N z=#X;~cbOZJCyOKVFKz^Dx;ohpn%;SWRlbEzCqgvXL+2G36YZt`{v(2{Hso=bmqtKU zc{NNes*c}Az}o$l^xG@a59t5#p_~7006fQY%-pp)2yf;c$zvk+KQshmdTUIXWQIgJ zP1*k%89^@>cc_Gtn}G@7yqw?)w|QuZ<6GwG)X7=RKZXV(Qf9WGdYP&DeRNta=9^UP z0TA>0Wl#JzX#!{I%aP>j%7z4626?hbJ3|P}9*=>n{;WjIn%{;YR62hDtyZQCKT0xQ z7?i#OZqpeE+=|b@8Zbkwc*>tk=URuqGz2#Le+P?i5CgDo@5zA4Ars;zN#6qgye9EZ zTO{3&eb75p`r5bZg1V-xaO=*ypdy8(h{nC=;pX-qyU}o?h_G>GyKYDFJnTJ*iHKK? z9EZ3Qf7>Mmv=}~gyc?-4Zg92ao_~9LWB?>ZA)9sTI`&L9CWUl@S)vsnMzTE*eBIQp z%`OZK=3~->1by(Jblu>SONP{O+mbxRMCNil>hOola?oFs>4%$L;Q|!*R$(LyiE}B! z^xCA3@(a?H9Q6fK-oJ&zpQMIpss_5_qS?GliuFObEXc^HyUoa3_W3qMmr-P0-ifesVAKx1S_!jvQ0IwL@efV@43IHr} z0-SI4w2Ecdy%f=A4t+Bi6oYMfDO_n=6yotd;yCG=h2k_71k$S|AmPXbhe=Zy&nA&T zht^)3D7G;V6AWU3#2yD*IcsQwY^ymknSEW()3Vq`IJKkxpfUqJ$BHuvcPo|I z?unwHr2rdfOnK3(LjQ>Ev-l zNMQ#!m$KZmEnQm@Z|6-OkgYAX$ijbWOXtFo%cMqwK`P^Z{0te=fX-ugm|h%j-9(r! zP_AVd{rI=u+BXE{4O<-{Oap+5Ro!c#0(^^`^0-|VA08wB z6X_KyhgB0Xq9-c4Sf)gPAE6Y$mpfmtmkOJ0su5CcWDN6_6T|VTDFR4>-4Warx3KVp zn=hG9B-RTx+R~pSN7OGuJm z=fr*u0n1)5C+015|NC@*0)_^ib2PSC8}d?BJTER)ge+1q zj!;Tf?IO(KQ7iTOh#T*-MKqG6m7IJp!?ROg;rc^Zwogw;z(z6ZBuP`N1~{xWzxRH; z#SXyaW`c~QgQSM4Q?1Hir}mM3A7x=&)`q$Thh2!RYOqp)FBx_!6&THMz-AdM!y(j4 zj6>?`1=$ZKtHDf>wt04h-E0Qq_ti-5K*C*~Quk=e|1qA<=EEQ5=O z$Oletq{Z~PLW#*$ZXy7TA^Sjj{@W|nZc>iQ4f)2qVOB18sG?&{f zV73$a)d!?JoK7~Z!<&p?cVq$Qlzu7-A3}{FmM6RL{gGKGU;mvKWQ*mA=%J8y+j=d_ z!#br3If=o!Q{Y252D|TIK`d`bq`r?1kQCgv!jWOLmHq|U7sCmLZ9S@$C;ki`1^y6h8%ox5Qm!q2ySmzunl}?Sq;LZQsb;; z^0|_+hx8Yp;I_or7G{g6L>JCUSK}J06}Eo~SF@P&s~1D%lQIwOR8ybOw$;8*!R#qJzXsG zgN3*ZtkGbAuJH;7L$f<-Zr;a0e~0{#)98Y5&QQ&4${i!Iv_pZ8rG}YHaO4HZ?iOSL z6$h%38*BSA`PO-j{3kSEu&qX5Z-dtA`OtU>J$Xx9fr|#=%`=uUsH;xW-e=(B0_<^v zYV43LAR`$q;sgw-Eq!1oO$ZBJb~3!}ca^NH_^bY=AESGU-@Q*S*h_Q}B7*i+=H&YE$hpx*N|ph#e)KG?EYK z4~;QH_6_2_Vbkls;7e3u&Fmrh#3f66jmx#UM#=7|uMA3h;mm!EM21TzzjMj9jg^La z0N(jj*N~(S;=hj18=eCU90AMgHs0{ftz9nX16FT1Npfo^zVTnXzsA3bkO`yQLsu0S z(@hB@)>;|kLqRZ^xc)5mGkIYqPzWl90&~5sxFs^cV`YqRgD8@^Mq6bej);i2O|X|( zM*Q)|gM-QS&a76*Y5_jK#AYB9=XyF7a?d3=$G2UvH1#C+JTA`;-VEgVWr6nWsed<- zOa^fi$CjXI!hK%HBKnUsGZ+mk2Ep)(P#Ll1Ry2Dp+N)**U zx*ypeqIDaboTFYn@ktKAJ8rcf81Hg50A0_W_0q5r0pBiMjZSCirXFo{U zxL&g1q(7k@I65HmtO+O9)48K9x)7aTrFXm>g5AgyLOtV5xsl1H&3Vz&rW{Tiss^HA zmRCjs6lz>LOpP&lG!0=$~uo@gpPZOLsZsmjd8p z?J!^3{wNaM73X+$v)Cd18k2U0AUPk=NTu&1E6YKj#Rjm!+Y@2oyt$FOFa>FN@C{N2 zA`two4sIY#L?j+6f}V-=lJL2~SJy6dEwaJ>$jV4KKLHgCw7c|N<&-~4S9xM)A*k4W z6bgua*R{EyV~+%F6QZ6K&3AJhVQ<3vVogADogJCO8{c(bXdNCRy%xza{`0^=&)0W*|e>ACIclKlaW?0?maw(A2RYcH`4qESip zUN3X>la*&-^KStIJaHmRnhTvm4XBihvNt;s>95QDk+YqZc+{F z(u{WK4g2N@hLFoO6W9!^Ra}fQBCxvm`-Q8lb0W+^_*+7D%kzWCtZ&6PY{}bAlD2UC z>|rVz^{Cv)0e#*47)DrB0bS53?2Z;8+l$ue92ohgs{#IyVK{vqNDUn}zHGzqvH_4` zAHusb+kJ&&clMTiE6~3iJ=N{0>t`30B#A3{?bJGF5rZji-1kN5al{D#iYQq~lqOcx zY%^#dyO>E2w6&vIdXXdQFn@z}q`b>GlkH}5MEbs=7Y2V%Q9pR-GAsr7uc6`S9Y6KZ7iLUc?DqRO5^&n>)kF~28ugAv21->RPHmrHfFr3h$hXGd6$STe z)x5M%&2Q+WlDUo~kMPRqQ$h2=1l>(3Tj)sxsVFNH(2TuiPF{s-`FA&|hbf(V zvrUt-n{&ANxLXu72}ZGe?6KozsQbZIK5Lr0O57UM*o_?x5BiuWPo>x#N?yhGU|W4? zZF(%8RQIYQNM>QX#WB={114K5J0c~j`UI@6=wR&~?-RF7MOo1G`!NIA4#LIGh~)NV zfXTz_3a@>zM*#EAy9hp-NIJZj{|cp+-OvP`O#5UTW3!8)#CP)0+Cp!vuy2>$j-o`N zO-S~K4`fZR&KXST7hQYw7~LKrCQ6I4#TzGDOB^8w>im;Zu?0^_fTt#V?(&!i_mSY+PKjam<~(lwJ){HQV)^j zpx{*QYaEO)RCGei;VODvULlKKdv{7b;X8ND#KSIN*_40LHaWKsOceonuL0+XZ4nVcr=^(=;%aUz>Ln78nG5cQ zGb_I?AuW|62doGS1g_i(x+p0;t=vRAbRrCKtm5? zv~q9Mo1dRuxsufVSN*XD_hY2AlXsBcfE) zeOmDyr1F3(7$!aa#C!jJKZRrgbah!<#apta>17}PE{Gf!cvjQc5Rnh_dq0I0{qbz< zrH)?!K|sF0M5UvCaRM;bR1)Tcw_2&{0Lq}{)XY3p4|$5-iiMeU8i*QgZZz9(nMD`eL8!}u)o@>FJXA9DiQBS z(2i7T&msMy73O%i1(1|28zIvULW5qVO0I4VR2nTyo%rdCa`V?MCa8|u@r)`A&BWFE zRWiEy5=B|c1Am!(k+w6i8tM`Tmd}z4o~iD{$_A#m@#g!#N5ia?Pr0TZY;19X@I?2x zdk=$6=9V2Nb$@)#xofb%r_S!W_k5R+eZo=<6uESdbqxF6}qYNH?FeQY33T>RA zO?%tgPk-_HjvGo7V8JGmmwUOMlT?APWJ>TH)7wXVMA4{b{@+8T_u7ife}ut@E#l&t z#td#Vd6Ru>X041UgZSF1M1K&$bFgCpT)#|o8w^f~#GP=K7IWU^7I9Jr6b5)UK;)%2#a5*srZpwxh`-s#b)81bnhD8JRt+(eS z7EC57_XlRDn)FcxT$F+85VT14zRIb@1#rjU8#bwj?RcXI?MG&WU(Q1iG3|y{E@}x@ z5ovM&xu`9Mr+SR3V9rIUR60dhBow(5gJJN`6 zTLT2cL?dBMMT6^^?{YNFMmv2om%Ad;@$6@>nb)CMEmY1GToD!5lsY~G;SMLkGx*Ts zbUIz5wC!LL^3yo>yk^$8o+NHGUlxE^J6WOGx##IpLf0wO-H&rp%r3tNgzwxh&8{Sr zdbCdZ$BiHV={5GH)OuC}L*HP_E#|-17nT<*-y!x!O*T`0eyi;(p5TYeph( zayFq#X#6kjSCK%5lCZV#Nnj&8dv0iqaWs?nEkejb(|_5Xk7()2elJ4)y7ImNDpeNa z&Z_1e6*;uW%#CBg>!}1(*PKg7L3$9pEPHW z6*NHNb4Gvt4~27w?>5C~feJv=zp!u?`3(+!!u>;kh#J@0K*Y5zO~hI`3wDezcIY(| z*sHsZ1|jDIWxB~y39;>d)GfY=jzF|}a5xKLKh9BDxd>^k zE3S92ZE(X+PsJJR?8ST+XXa?v-E9MW^a2jY{ILf|Q@7uFekUYC6d|8XjiQVJIXUBM zJ5!3LX7M)2(w>IQUDVEA7E$vzNXy#hJ`kaI_ucQy`-T$u04LeW?`t$>vDsM95dK=x zgJc?2_!T)#{jQ!5VpCS|-X6yJ1k++XH=i^$@iQ^>VJHxn4L+jIZ26Jc&1nPj6w26` z-dL4$eA+hMdqUavfpV|*6$hp_L9L2^9gueg8G^D=D*Koy_z($uRRhSpWFQdxfq#2h z1}^E?_pt>ds*%<_;Uss@Re8^|&Pt9xFucmeA2_d(*R@?-cPwQJ&}Qn6EGFIISarrI zlgAgqp0T%0U!ijE$7$+*r zbx$~6ndU#;fte{^im^orvPClmCQX_~q;rU6(g@ID_q10c@fSI010-jk#Iy|!6hIdd zqu`pR-IpY~B%Y6+t2tQ|Q2b7rel(_O^1#rmT$fK=ejWFiHn_@a^Mo3-1f4Q37vNM~UyM2t0045!5jCz9PBRrulS);saI7 zYPKgzp|oXPG~}}Q_8Ga+aO1-vq`Iccn%*l}6OfJ5``H=p6A7k+Dhr!O<>s~?d-GUb z9+y<8Ztnr1zBTiJ7e4!c$;HyA^*diq+~Qrl)qG5r8|8q*?7*pJEb z4S=`bSz4up`F?1&w1Y*hyWYs3h7vAq$gdn@c0OHz7+W>pQc& zoi0AOL;)o<4Pz8zdOMW&`suKQ~;JURIvJ2mG)iYz3ZNz|(@ckYz`Y3|6SQs3-8<^<0%KEbQZEtMP z%d_mTOxJ^TIbz}m2})4GNFSk*qR9yr1F5=N74-x%SKm{PE{6J(jeo8bW+VuibS~}~ zrC1$CQZ#!*5 z^Nm`xW1G*yJMsnR>J;>rBm*j|VVAKIUIst>`4zZ#(>#SlYLIs>p0EMSzl3XfEz9ev zik|6@aNIo69q*w7;d=r~h?atY}{r>WVC^`BRWc zYM5iuxbsN>z`r~&PXnu|4hPOukpx+5ePnn!U}enM3TOMQ4(TQ*i)_TxgGUeVtoQG zRbLYi$z~&8GIw1~Vd_X=+4{uH6x#2gt)M|fz!|ndF+C_8J(rVZk=@!@K9iu+I`5=G z-zdGO`L&P{F1@YPgODO@wM}eFI>VJRkyjRAxgeNGt$|LnV*Ne@!mvs_$aPmtgV=a} zTadNm|FS51*lzSM>62WCJ?--fv~~`xdjquqHy6s{K}MHB2`=eiLa~XW*r+coQo1RjI!KECLGP5Q z*SpL`^5!$9jht&h?RezDI#mS0(+XC}yexMAIGo-25XTnd6OSmBtT%0>&w(O-^>{KI(>S0YvwC=i}1`K@mfReP&22 z{!8hZX20*5ln36=|E0VwUsLOODZ11*UL^#be2Nv2F^HYU5u|t8C)*h7i}U@PRH0ev z!T9~%U>edskF2QE|Ki-o`Yt)=B(xCk`UR_q&P>{)32ql)K9)Z zD@vV$B7ZY8wj;pO7*q}T;A$*%$orN{fT^MhyCt3HMiY1TnPiyU>ZDTpEnQO+-;qk@ z?gkxD!vO8|umSb?X^#?RrG=IbbT8p-1bK-PAb`vpZ_4}B6|@V`ZDiKFMss~|Uq7j< z$1tLV*%V==M7HN$h6%b2yIx2#bK3EAdG#v2R*oPOzfN+%;CfI>bj*BG4s5=*U)Tj0 zb3aso^fa@8y1B9VLN6%P6yTU)V}tpnTXj*4-_YBVG#oT zAS{&?v+eFTHt)Po{UdY{Lo_O|0^qbw_-!5xCxkJ}Q~iM?fU^$x=|m^JXIkCog`6JX zG`*%V#hW-b!dJ0>53#}X0iumJa07_s8Li7ZWWZ?Q{m?AY-Q>ZF6&UW+sM^8<3@LOg zjxlg-B6kRdll!{q2?jDSX4nJ}X<(4qa?oH9yRL+&e55`^OG%VP11g){nETo2h$tvp zO&BE`1HP!E?1opkFqxqGH2WkhrS>3`+dF6uxV(~hCX*{(=oTHm2w@5wN6@) zR9C?G=!ZXFu#S!#)+~0@-!_S%FCUjzill*Up|k1Diz%qe(J^a~Al0geC%A$n>1z^U zOV{d^9Wx354f;YC_n~~-uf8DZD3qtW0H)YAnuzuo{~`~;1j}K^vK$0+rO2~$2TsUO zx9C!RTKxl;5B-lH!l4EYx=SgC%-2*A)`<*S*RrMYDu6$hl$N3k)*Eb9upSVMNTMkp zUYXQ7m$|5<6Qe>d6j^rC_OkBnve5+8QoZ|SC=Rf286TE6<}?+v<})n3)CbkrlQM5^ z&|-Y)+s|?>)<@VVu&^PKN5Y_G$f#oDJityAxdf?dU|9Lybk6Ua&&sb4Y<;y{D-7{i z+LOI;Jd2g-M4NMO*f#j_olB#J0QC6)->#(Q{>PDfch4i6M1CTZbJ-nTcOgZGhYQjw zQ9i0MED3C5)|Z6z;5#8&{C_zVJ+^$@iP12rkOcIt?bwcvz)xA1{Y(n!ctc&$ zbIM@^H1~Q$S578RB#_$Bj}oU^O^{7B6MJShdcy8BD^2b&-vS!owBjL@(o{8h!H|() zr>4L4coS0Ls}-nMk#|*wbr4&;Q^78!;LLRGZzL`vK!@;hyCA+mESv3)V%Fi29*bo? zrTA(Y+BFMBRt_+!iOABE6H~>$F6iYPV_9E9wRmq)O~j3MaFlG7)Pi@TExAynMuG2i z7GtuJ&Yn>QZVAQ(iE2@dUNm+(o{JJAA|r-+bQ&~$b#+QB9+I1pt=ezu%%KUzY7g-h zqrAT7-fP#(!C_DgkS%8oAX4u~+8wQz_-w!*;Vm^yR=?U_nO_}DN1M6NNhL@%Ft7BI z&H@5ho&e@Eaf+kra%kTK_0aV-&PStxqqDp)$$vhMZ<&cj925s{XBxhC{OV}8#E3>s zCa~Lq_<%B>WIL``jhs6m4e+fgX3XGU(?wrHco!LMo@Rw?h-i-Ru# zSP~1Bla9cbLz(a9&o7>om>;xLMX9+14_pciv-N(*jMwSFkeRE$eEr$nv>9O@nz4~b z&UF$O6pt7v3Z&D2ik03+An%+Y^hEm1y_t-%^T7M6aKec&@hDT&2ix*wGh=NkoRKBR zF6^+(xo=x|Z4GM;uS{!3P8AX;=y7PdC+x)(9C*HlYS}0Devfm5jYKtekW8CqYJRkM z)N5?j2i5h^Lr|KZ)&W|po_>0h)`tHuy}N+FaRs3o>nr_MZLI~{Vw)$TtfZJj_E%Ek z`d}xH#{C}5Jvq~5&(wR^h8GJbxhr$a7VgYAwIsl_j92ZdmHn0(o+PJ?R&5}$Oq)`~ zfa4ZW?U}Fipu{U|HGbPbOAZ8h2RFSkWZe$KGFR3i#1t)*m8|6>w?oJMk-0@3Q6^Sne$?L6O8ni%On)=B-qjz}e%>al`JJ-e-qh|oTNUJQgl^(AnwHydT+hTFvF9YB2nV{x<*0o}v%g~t7P2Egs@ zSlJ`SoEJXy~eH5T+k%mkq{+fJyloHtu#MR;i5j4g`hwmm#A} zpV-ClTMjN;{bP+nH3M#gE1#Z;K0O#Ub8N_6i>SW3X!vgw+0MmBX>E3J(sa7A5b0s~ zVg0{#b`pcP%KTN&1tX>a4A_ZTtgnj726qn}`kWdVjjw@(O9Uz-PwHW4rLKj3qZVi+ zWQ&^O${K-lL*~fK+g%Zf<0Bz|E;RXLrm;rRV30UZc-)$)0P)`?*lzMJkK{D&JYjmH zlGFn-1(qG>2Lgb8-fqlJJQFC7%Sav7&7#_q(UCUTj_b-^v(?^_+w9ctiG92t7*g$H z@v`8CP$KW+ zmX%l>nsEbYFi^;RWvMHnZ^h1gaYHqh;;OJh(;;wLKtU3Ty^>) zBj95ron0aA(-3u2MStd?>e?(W?g3g;^)$m*kH>gA(GEhLvO-+ufWmcsM!JtOzzfJ4 zH~$QwG~VMM#q^3)M(m;j(Omf^-aRBps||`>w7&-T&+bITP?ObI1rOs1OTpRjVp{bt zS>gV|DB-5gETM&0a9h#ul0}e3=cVL--ovQcX}ze=vaoe*c1p8=ZChX00vEY{J+C`b z);s^nb~hcfeFUaAx3Q5#bYpu5&R$Pe!3Z43n~_r6g;lD`NFQt`?aYumgk~?ZO{^sD z-xWcM{fZ^@x8^17l-z}@MA$IIdVGOSlWp6kOt-SboS{_k;6HB(3&sA>%FAUw;WVw~m9rhfL)mGeTg_h9 za=5;j#lWaW+*0KRaboP|&bU1XZI2E+=VUi&YM_H1!XOCXb}rz+sEN?~=?V)OLJBLj z_K-kxdH4PN&x+KkDu*|N4(efHCjug z{D)*a>5Fd4(7t1?qLl&G)KNNSYkC~@;K&XrK+k(F@j2WAcX$+;R|`ir6n@8~K@4fL zqZf(5m+D5%As%C>OA4B|?ATm@LE!g>STIsOS(%k(?;~~uN=E4E9#{kj@p_n{sakeK ziPfbY1T~iLteE-z-rcLqMMQ2-aq0A|TP|FfaZ+)pdh@tE^%fg6(>{4>_mjDAV8dJ%`^t4iK|9|A)-Oq( zqA2hrZm!<6;3WYnJ^74|mjAEBw3&#g?}H2JR>OBP1|Q}?(hfzds1qlO`akNjG`B${ zcp9MzYNg}eblO&TxYZTg*4quA&dVZmx{xK8DDA$Qs0z}PuW5Zy-*FR~D$3=wqn&pL z?AiHe+_6f!s-c69%@EjMpOKf7XL2Ad4_uP+Ze8i0{>*38BvISdemdjWm(p!%0fqa^ z2SDhVBn^kuWO_krIBWeKQr>sqaS+E8BGJBsRMYEYwjvH~#UXhNL4mBR7*Z5rFR$&1 z*`cmagP`^zk$v}kM8|maMk!L4l(N=805Yw`W8Jeuq_9N!e-NJUUS<%gUF8GNKYwSZwW(qv5scM3bQzjrRYIJ2@S zigazmXxc3BqJp46ME<~G5ne!S()u7HyhHaTK{ABXVZV9p8ym^k`Ca$Z(V3IEk9*Mn z0^zi=yZPk#H{xHnu7BQ^Nw-IC+gU2c-J_*Hr<6n|C3BZ72$_bfi7-kdqcHbv8_qg} z{OJwF%A6!~h57n%=9uxI=#IUAcQJM+qc(KO+%OPQx!gA2P_Hu6D%h&3oqx=-eH17{rV-rdA^Dp zF#0nXrZiS0%p>1bD~9l)cW=n^hl9ZW=CC(=L_E>wnF z?goOezsckrEL)aZH9t6H)zY?k2rzn~G*VSk zYgq)WYiLx z;aE)>P{f0A=#ufI**Z|Y->ml?@G2bb%B(Do{TiDBP4_0k9Wq+@*q`Gz!f?2bNc~uK{)i^H>%K-uWWnhX zXzE^Pv{t?NFtsr>ym0et&(%5J)Rc{t@x(0}Ro43iRT1YJeBH<3&5Mj*hVQg(?6bPp zt8a%}c~!v)k}RJADzAHhdo_UsuD9V;b>%!5@=$q2pd6+O;TTs}w>iousIZku(a+%K zh%>t4P{_pOC&l%Pbci~(4M0}Q{6)}=l|*W>O)kxCbNX3*pmmI@7J{}a1f|eoUCR$> zAXF&Tjio;%Qeod7qW7}qees&jre@4~ho35JE&WHm5~P@`a9?C(U(dofb9&o|ps))R%)kF10aBByT~_>ci08X7gRpEquAnUH$TFnF2Xf|+TTvsHKxE#2V< zNpG$Y>slzh-3N~dh; z@G~~r@7S{ts{OY}%BY*B+EW`>ClX%>!yF5p3A}A;#3NG62-doa5Evku=?|vY&m|8m zh!5c8P*GXFg{gQbC~FM4u()U$3z3wo<6cA9d05#O8#jJN3JMEldMb5lFd?0-ge>Pk z*e$bjky#VkN*@l`2$rKkcw7sdN7t@F1W_dOh<5J{yW-aor zY#i;c_-8laeN2l_Um8qmfBW(Rlpr}71{Nc!ZNNs(DreH>m^q|d7Fqk&I93&ffcCRLCQ+pOCo61zA9$Ddq^B%DZ1GZ0goK*5cdHgv2%SOCKx;1+y z{MCkYTvU=E_KU8$6DqxM!@2HULFOcpALQx#-3C5`wleP5t)mX+f;YZ+9AA+q>Rt(3 za9Zhx@sJUPA#zn{?U}zC{Vf3tR8Dd3MCg=`-sRoGg+V{<_eE_TELA zXmlbh|H*M+Nvid(U21)L_mBPLGk_`lI>0DxRyM@=&(F1beu6QXlinOJEv2WGl6^VX z;`I@e6-$36A5UJFyXpePFk9VMD(S*5Kj(+`f+ejxw{fs)g^h z3b^85)%&$R<3ox#oDKKD$EagjHEyj8qrGPA0Vv#IT$H?mpc4MKZcVVcV7K_na=4OY zFPAOVgG(523ZiUtWM4a^t)4x!^a(U$P$P(LJv^KqC!EA?^vv-)teui(!PGA@T>h8F ze<|GDxv<#BnoEwNm_ilt%-xi^l3UA48@ydqk_78=sUF`{o3O_vGc?5C7i)bI#Pc<( z%EE6tt+(J#Yu*>Y00MQvA2ZgOTyC^IGnAF38=#z9Y$;>_ok7({^&)#CnIB4Yznx2(&<=$XK9hUadCpQ^D!xHM;>!wM|??;7{5*4 z^oMvD@@e5HHGa8?@X!aI8n?Qh>=M&|L4w#ju6EuWs5Jfu-(iLMxZo0oWT8BM<5^I| z%u~33EeCFbWS=ClU9XedO)8yo=|!8VmrF%9t>Tk>xxlYGuTiEhVGEhMCU$_DW} z+cca5q2Mk;S2iQ#k0Q`{ywJgGU%1r@Gs3Pg&Pys>dwcHGH6prJ6eKTQH)Vg@Su^Ta z!AY?P?h=_!WEzJ|UY6~obX^R!&oN=%&NeO$n#&7l!xY`l7M%x_GB(Chn z#-Hr_M}E$J9EeBP(W(}CJ%YVJL%8p`9-=LU&WODI#dDpGVe8o#K?OGt{ExqZlan>q zOgNV}Lx_ST4!C9hu}?Qh)-(H{i)98e{TD50&5X}@6SRe)cU-L$M%(r3fgN{QiJwU4 z=6CAXKi3Yt?(VBdomvDDV*i`{m|i~%f)`kRsE;~8`~=p}54Qo_Iu1McY;7-WLic5)uhg78D1@)-L?3CUOko0eXXvtHw>tMvYHX+ zW&*g z6h8RGF8)JaL@k5jLkh&0Yo<>O_71NsyCkuvo}}+Dn1Yk{ywnkQzDXvr<1e>;pl^T&1iaAQtXq?2tnjFd4L^Eb*Xe-k|YmgT2~ncjA=YnjIfn zRE5hky%lxiY39{@AaZl}?=2bj%P=bH7FR0!hZR^;N%KKEz0_ucF zjfIo8nL9FJql-3T(2Ca)@xs5`M-<2S%=2|upybJMW#B5}l%S2Oiei~{dfDy=P;P-Y zy^3k*M(OsPEC^$TUT8nDe~*vOp(H5rd}n0VU=)n&PK~xqb=AB>y}~jdS<3W2oaqM1 zjCv)f1f!;A@Z)o}V+|c+ykk9l4aV1lI9$^Flw=iCqWP8?M%ZRAO|LnSDQOvC$sS$b zKKQS6)Vx0V4PevK{eMmRNoL*rSmN;ZttQ?y>r;Zq02iq>4{{`csjDb}>~ek)3TL;* zYKuZ027`M|wynZD_mz#w!@na~fSi!2D}??QB(;2&HcfP;_(MN>nYPO(bI;}?f4nG=7{i{J_XJfcgL!z20l3COub6y zA4Bdg(_-wG*P6kI@)KO4;8lNk4Oh$3l6Rbc@n?aDe&uK5`-DAw@^{j7N;iF{Q}9qg zxsP5GguVK$ZB)WvQ$v!l-SBz2-LBLExXGGg4Sim*Usk>Y@5erOjKdvF8<#QUkns)i zN)rYv>K8a>YmyhY+bH^mb51xD>b}I{K|cQoK?CN7goXJf0$THRhii=4T_~qaoZVp7 zel{5TMnGRyjP(C>230e>^g+zZ8e~ShR=Vqs63JmHyeZ^5QeS^X-frlAhy1hPbP=K2 zRD#|?X42vjS(HcfB!+Flz&0CS*SDx4SoqQt3T^~QTR#wV%`IfZtWScSA3|mWS4wQ= zPnT5y88l8rAw4_gpEDj{}e#d4sz|OBf9+@AO=2?^arUM?D(QAB}tT{MT$@yd+r3~4cwF}t|rJYwR*+|w6%*wSGkaTO>7K0cmcv=q_AJtcls`e z+!*1?a|gEYSQy>-Irs^@Gu<2eS^jzFfdR*hg7$1eB$d)ELQ_}T{&E_(t4H!>h~tDK z9m;L3PrAFNTtw&GrssXunJetIdh6M_whX7siV&jeN#&u6PR-UZi-X0|ZkdN4FCth_ zb?4Snf7l>s!;nCwHt>hT@Y{}fWK|eU>`h;R_yCyNI<@bbt*U`Chu11LLGccRM{X}7 zdT{XKhmkCTU;Be>#eyV%h0;mBr8EG#{dmtZpPR1$*`DU~(mx%6qTdUMM>;%5;}@Q- z93_+P_qZ49>o>*#h05q1$JVw}zveoBKc(oisVRf{f2Z;S@4r$93ZV^;t9SA33P#i# z`}OWBkluH5x`q<^DB(G6H?R@qk(h;IAu49-&YC4D@?uw29Gpj6MgJ6-v=>JM*p~E@ zX;*XC%;Be;*$e=~zO#!*+`D3x4q}FQazdZdeF@6rn+Euv;jqQ_S+K~^T|09(UcK_v zoPJWT?Om#3m3camaEqMt6hwn~v%qnd7TcCxem$xtZ=R()2~yEXl5v_Pr;`o7C5cD& zzQpjHg((pKrCddi?9Mv&6*e`xA<&&FOXvzHXUDNXfgrfQL->w$G_(UFYYJ}^6P5DJyr`Ci#{))H2b*)Y#yWCwjSndXP+;KZ{TS9u%^2mdiWKl zSHOqL|6g^vtVyH~(jQu9k1x`Md6GbnDLyJ<6Zm{jSl~{e%VOXI8l9DLNbW@pEPW;e z*;6yt-gzI_5pD16L2eW!QuJrsD?m27+OoQR62d0v0L==(mv+u#TT2D5{%-DQqI`IW zS3x>Y_LyAa4Z$iasBYa!=VZzT%r6u0$-xd4t(;MI2^GSQwLCK?;?$|@>%g^P{j*{&bWA4?khQdW zCi~)soySFCIK7nPnKzEm=3LfxU}yU4fOkZ1MQD!emQH-xE;^?8C!S1yqIH8?pALwq zd>@;z=!YE8>v?zh_Ze*moLr7obMOd1P(hO3TaO?*SEA%i@C)`GlKEs|@ zj~cteR!$d+MeF$dok-`^BH*amePgBh8mX?u?q90hG9|fFl}^KsgPIVat9q3{3Qfr? zTNX=6Jwiv9pa1WO(j4;NB*h!$Un%95;;~`>R!{cu14w}|4$F`?@a3rj=1Nq-YJ9$5 zD4=|fp=@~e2NH6^*!otBxgU>y zy;W9!_&zD)L;)*;-=L29HivFlPRUO;{9?_y#7ox<)r`3l0Ea2ot~s+DS6(TMFG`eS z+?Qu6GfhwN!+xHlznIO(ihDed*?7&Hfc@Q-!*X_m9v?@)aJf2$&0N)serRolLl}hr&@H5ouqcA*vp*agA{PxHSGMdZDCBrpwzM z{J=Zy#4N3ogmq}~cp4hIQEazy$w|)23dg%2b+`Mci`et zh5$1HkP2gLCPp8_$|8k(;py}1#?k8Vr~+2+VWq~#1P5EcmN@5UiZ@FC2FlQCz5RuQ3N@j24$an-;tA9%seS$)OShzc#8 z81r>8eJ~0M%WgYpJf(CSfG>eS2)-o*1yXmg@F@?B{~Ar^90_xayOmn>4n47ar{nOV ze|(K%E;2#@OEEalhc1P~s84`1~YzMiqB}J8VC8-7}4J{?JyZAM3Ad3LKd}>3&G2|7Y*dtboOgA&@1&k6pAdj9 z)(V-OXcE@mK-X@SUI3h2ZI@7EW63e(G0qui{KFXu7hoO2?|4>x4CNicJl*unk|8|- z8mhbOffGUR2X`AY^83_WQ;%)lnM5}E0~thkd#gB-`OxLl(!f1oOEvCnab+MNNFKg-;)rd8=hyNcd^Ehxp4{{F0&+gbhU6{rivBm#d}^ z>$gNHO+utPSlfq%&I!bp_+m!KcE=?ZDp(u{tr>XE@%hy3)Y9;qY=pZ%hxCDO%nMo; z>sZOZ8Tm^)Uh9#44heHVsZ@>8T4gc%AR7*UbJlDETw=~<;puVq?0>f5F;!+)&{J@~ zaz-cep?u~0&RjD`ifY19YjAGGrY%8S9P}kt(ahbEgW1H(|6Wlf3lF}3m?{!AR_L=- zWumt)2Y%f~CV=g-WAdoAE}N4%(^vhhd(DMoAZcSsDEwoFQyj@= zi9#o5s65o1k4eT;R#cSZ$`T8#^FpJ!vBVl@F174;63`j!+N4Tpq0qpGpL4294)Yy8 zUC4*jI(spnP0(JWIITH1_s#k5dK|q8z3e8j#yGh}#)g)jtMxN_pMXO!-~ttYNbhJ% zAC2Z>$1lwYGhpN@{9`S$M|T#cx~*R88UOYhQT6>vKQMogusx4|j(AW$6#v3V2XAn4 zq-F>>On|)E8HBbh>puD;HjcaCmO-IM4O=zebZy$-*0QYxjczX6xz$w%85>R*~-G!0A*8~mVe}N;HJS?FN(w4>`WI2 z5VYTv>blaJoVE-pd*e588Q#nzwqH)wT<^X|X`$r(8|1_*)-|sE9R3hf+*3~Z(wj<0 z#*0?$h5B zd7FJ*OfIBvLiFoAttmhsn7zIqHLJfCbfhUs4ouW4J%Jj`cLWSK zYUnzkVM|v4Cv?u_L#ybI2~>`bA%img{m7v8#jI-M@OVYgsB;X|{{i?e{%5DqL#dLv zU~b&;10KPt0KJ!^)@LFEPB$oLHba~QOl!4tQjD|+;i&fYb@o+I&EUyXdBWal7F2!c zL~YB(#%LhQ&=XHQXz298p$tE>=$Hq^k3BK&Ztq;<6Tt{8a2G#-fa4Eys+4~6saZ=& ztp@*5&JXreAD^%o?U^Xy(uMM8q$?~l&k}*%+j0xxW4&=XSW0DHQwEJ{{J7$v&B)VwL8L}dBOVIZJ8Y}_sn7`xkl2$B3bq7dbUT|Yf( z`A?-i3>t#&a$IF~vC8MZjye1~PVqj|90;+>MT6T^`{bB#ySk+?Zbbp#hcW?rBPXbJk&w2}Ek1d%kt z#wu|hv{+{`r)xWbL_N{`*k*Dxv|x1f7goF74NhF`dUP3{wlhatxqkk<4iWF>?BNj`Ze zhTpC0c5smh`2Pw9*{M?LTuzE&Wf0Dbx+n2RB0)GuZ4xWbDKB=Pq z3S=ORp>XBZIpj&*N1z-qVuXZR_u-@bT+V+APqTVCa{f{jk8|syNfabRA=+L|9ZEnz zd{z#`_ViiO@Y1prOdAW^Y;RdX4guO{+qA)c~HjMWj6x6TiXs~Q@kxTZiB!;p6KKH~Q%^;1uDugVN zAE+5<&@lIrTqW3RmMgLf)wuFgJxxxQ=FuW|QH~sJUK;4pHcT1n2BrsXCA|C7Ccypxb%N>3}u^Ms4k2R_LUSPMrS_)G{_S;+a_JL;kRbeq$o)B}XneHwUDX-J`SJhx^dmO_(dr^#r0|`^EcyK5jWgRxf+Surwdz ziQsfZCW~unN+~05iJZp=Q;hHuf-?$yQmMk&7?5f4`Y0&AnNF|=9N%+qRTnW?HTMD@{AeIQEABu|NRwH76?~r-Pg#Ry z1K8NkH6v9a&oa+eI$?scg5W%VdgeB{+x20b!Cv6Z=X69I-vJky0zd-yr?TS<&mEUe zRuVbly`k3WNM5o5onh&8D>XXhhtTp&WhY;s7xBy65k%svLw|cc=g+xbE_M+{c4B?k ztXQE-2febdn$Ohz5279WbW#cEt%UTu2BHcukrnz8QB3O(=_PauG z+Y<4-0u8O8gbh@N-rh0%`3G4ap2-0y1_#tE8!xfEG~r|`sKFPra5C9IjZzj_eR^3< zU=lWY26;(U0K(dZg#5rPCYGb4_4f?E*$H*{J}RfQV~ntJ^cK&K9aKzu6x!sOc2z*>=QxC<%pa2jQ_IVB4+m<^(R} ztlbNv;C6Y7R|v`j98a^A&DKQIuKqu|Np_5#)!wpmJ+? zT?i}q1;ZP?=IM32mh_+ZPaWAY@!Ch()EqskEH>n)PD^Esly@ z5*gqbdo@p(vmn+r-JUiZ?YmbKr?3{-^ z>`3Q5A%(kWh&ej6M_vxF3Y^nX5dF=K6~W=HqsMRQw^2c-5-2Q+E_(f`zv1w>v#ClZIhhJXUhH~s|=Bd}upkULfSZOA_!zC5s@Xv$q0xV z*U6}#f?b_No?9A}_ExT$25d*>dW()-Yi1|#pxF(qAPM3o|*Gp$z_7(%HVUFmx?K&P-sh=E|}gJHjP2(ld5NaF1l*ah*skm*)(gLyg$Bl;Zt zds2NqOWz0d5eaXGuaRE<_aI;}{jka5-P`JD_G>@gxZn|$V_aodi8j7aBCXFeXv9U~ zq&G=~3%4Cx;|~>aF&Gu=h0GMkGg8O%wLyh$3 z#aiJi9PA}Mz{2T#m0#fd*|BI!)j((LX<(KRPSogJ?|P5qT-qy zQRIyV42a<^s5P-QoDPvntKIs{{#s(r^O%PUs`&lu$j5Q!yE2E+7AHwX8_2rni>AfV zHK%Z@FqYAVtGlt>Ti%L^(%|kSVmX#8>!htah5B$6Va;07spDH*LW+RmYHp46rVt& z8Mb221r$FaDDjG3L`vHzbt~XRMZe*2@IHRiV^^s_J$;Z2p%@qNb!z1duQ~;cEOe$c zGHnL>C`f~YrrtwbQzyrMd}q(N?v&f7?W+MiB2wN5793rlc{>X|Q!KT^khvJ9gZBK! zKkW9~c#4pL;PYL+9X&>(!!Mmvs&4!2KZi-2^IrYY^}ZW%{tE-=R7Z(|z}< zG99C@lc^l9LSCN5(?rUyW}sZm0rBLduarMPnH=voXT%}@Ya}5BB!-QZFsP~gCjqL82_fxutVe5mxq!B&f^Yx08xG{e8#vE(BGbY*uDOSP^YcoiFyti$z%^g@%Suo6(w*4ThkDqC1+e zFyigzywTo;^)-nTn?vsjcmiucRM&jBYk=pdqn0W?t|ThurSrxGG#Up^%KVjK2GT82 zm+t`xb4Yrk_~sxy50SV4LL0X48ql(E9(93opi<|C$QJZTixo*5^;ubbVtPWFx8a@; zZMB4Igyq82y(n=1APdS|tJbmrlBrvBBFUx4TQTk>ShAd(0*Z$87fj3$ zd1&!SA|)cO>(yQSk_+$37xrW$)K=! zb!P5Nt%~|4N&BeMB6fVl0!z!~`ehJ&@i?BfSunMy-Z^Tb-c?WVcg>TzjH#dDs|p#? z)GQ^jJa$f=QT0fr5s6n7VA0;h4t0S$`Uz!p4eXc?}S^g{M&gO~CivwmM` zj&wz|d#;Mi1q_wyaLs@hX9Gx8XJz+jMnB-Ue<1r)+m>dQ%a*ef!TY=IYGWfalBxnakHZPe8g5eg^TG|o zy6L&Iv(e~SB<_~9VQuu^1XB8`VmRI-Ex=(oT;!z>=#CLERvqUxb=?fKMbeA-yZmcj zG(IWYY!=mnD{%a?J2ELF6)le|(g!nEp4_@mK0DatbSJ z8n}%_vTVsN!lUM6Xu*ijTZ9E2h3vA)G={`s)CCZ$99p8!hpUyl-Q}}K=OwwNwDh}< z>fbIMXV=q|r#Y(*zK>ESp*+lEZg$*B9;S&tREDtIj!`?(De|twrLkP)aasj^nDHKW z2U1;;Dm0l%MPGvQWUMNft3YuBSpdK>AH&zC>S>Js+)a`HiZGZ;pvETAb*V!xnnq)o3knwtP7btpcs zq|AZ`r@E?>u|-*xp=+4>BH7pUt)Q%msz|~^gc{Qd`K_mtqgjY1UCtCdrwSd>!U&7o zav3l1Vob?k%X1N8I-9`H{oz!$cYo`#6Z!S+OE;l5T?*;)k`on^s2B%6*|YBv7N5D{ z2#`_AoCv^lBI``X<}|&AcV9B*k`yWW0g(S1(tS^N$G9k?z^xvsVh8naDC+d`EXg1} z;HW6SW7F6vU@A27Iqb3^^$}asNRSPWU%et2V16Ixhc3GnPMF*UDaw)R%)1tV-?41 zC!`!~->(WplfVO0Vec}A_Zd5VCH+0}O^~M3P+A6gSrASfGB0 zzfwxTJJnU-0%2c{y*EVkELT+rdUZ|4!ojT6rd{~&q6z9618_|L7_TN-{tLxqlBNPGMReLcDuF{bPy-kID zgyZiXll*#0novAljsWRElD3%ewoKQ;+Oq>vfWiW05R4=M{>FP0C(qLlE+Gk)2^9lP zQGJFS$bf%G^1V;zwEoI`6paZ+1WzYtMPc|b{TUpJas4HeJ}sS!C7I7Op9QVS?RmJVvP!(+cRBPTmal7wKgf;xsW zskGZ;#qyZUoUiicu%|oFiO+@ul#|vC9;5v;*T1IT?~yT&N<%3}qy&CfvX_?fVKWk~ zNDE`}E!Xkj)vyECO2Id+$VD`EUa5V?O7^uEN+t%`>vC{h>DHZ6#sPLQMQ%X2By5UGgh0~g4E5uV?uR*W z#B$?vD5rMud!%{4h z7VID%ci_gXSQJK?@%;9WOF_O?5^7gI^Ng;3XJKSgZUDFTKcU$k`wC|JdOUEjyTC{~JA}_qKlqk{)f3vCx#f75SV;{&Uxp!uW zjWy%el@y~d%r+2+Z&C!4I4%FHjbDV0#$_!L&PQ#>4VquH+t7>vl8y%(RuDwMJBr{T zqlCg-Z@oMxpX-`+{)u^7KDnqokTTq%^@v(I_Cs~;rbGi{Qqv}qzx7W33Le7Tc<;TI z!!JD~rjxjk06$egll~@(^4@|K)J|Fz>PQaIZ&2(pNI12?Dr(`pwq+qMqNiiy5)|RY zh`ewu#>&zj6KmjyK%OTQj2V1%I)tvx5(%!!;YPN~ zV!%bR$IRD<=V-)(E1xAHLlbIUsIrW+DU*Y!2qUH_+vsKO~#N`D^u{Z4Z7SU*ZiX@MHhLoGQb3NI`^AZQ)}hyyys@fgX)uUM!_} z1uk7Tjp1U$;lRuaK;)dg^&m7gu}vu=y2)TP@{(-7C^h+{f&}yu2lIWYCj;hJXw{usg?bia(5E>d3S1KtC&mgZnlwO-oEMQ}Q zTJ~k<>(%@azE06M?;Z9=A+RM#ZwrP4N7}*g$u!-UAfY1El@(VMrr_B=4cRl*Tn|Gd zhlOvvB0IsPeg0_#jv6@wF&kE@c>pI&36<3gYBAIN?ynb(%qCl4A3<5pQy8vhYuN^* zk{xRvAWzH14Rw0bgO%0cxPPBaf1OHtwzQ*1dQRGH7->sC#NkEJ7N^zAw^#4@4?nZd za$s2VXdkcxET_u6{#4Aa*acc-K;?m)$|*a2L$s~Ta3g(6Sat0wiI3HPQhy`kv0dc52PPBzc#MtuseI&1EzDFWpN;m1nm@F?d&aPrpK|91=g|HQ&)ha)*uaYLO0^aM(+7MGjq|5Lo3%-a9@15K(u-8(T33AzG`R2Rh&H~CIEzQg`$e2wf*+0 z#P}W^CxX_Ax(MBF@<14d8@Owgmf7GgZ*?ccVX~1i)x)jqK$M7#re);}IihPSju$^@ z_4tRVULJgT1f{kQ3&x#|RwAwq{Me2#+Om|ydrlnq=+aijrSFv%zMYQd%Os#&-0MigB?wy`sz zfN!L&G2Gr*dQ0UD7?mh;NcHP-Itg~{#SPF5%Oghg$;UKMub^#sL(mG4bziaWR+zEz z!~hNseWlhFA1hQW_q&R>6f^jSYl)gjBNpnck);K-ppJnv@X?A_MsuQ}#cR-18=^8O zeC{m}3EAZ@RAPJ6cCP=1ob`9Ak39pF%*FBAS}@~^BzL2Qj7~Ucy z`GPhp?`td$a%qCRm);`>QL7b}0D<14G{d-ES1a8-H#J^zcags+n~+@gx1xe0&#YXW znW5f+C*ts4;+3Rc4q#hqk#N$4QqgzmlET;B1y-0n+Wp>FAMmqPZ<6i*dTkDYmrvxt zyL`C11BH5+=qr|3D^K#8YWn5hEsv!zQkbu!N~VUWsBz%Du+)8PXyq$E(-A~rrt1IB zswRft`4U^a-=PD=a19IaE(qccSmFBwk#3(~zbbzFW1*I@KbJuwHU z#YsM=rRwkT(HJ-zKNqlW?cl=d!3=V;Cp)a&v|JahRC?6j1b3u(!~^N@M(6#Vv{55{ zBj1eTb**`_Nf@rE6*=CkT{fJQztlOJ+iE+NWwU1_5h_5(S1B%DB6J6oz=)P`oV&2e z0gX%_7Ux^>+zm8Hh;f0uQ5WtMd^}l( zdKir>H1t&lBPdktFE6CKniw)!*)pIUwZ!+}y)JUu{8eWUG!C~MfX;-P8_()o7wU-? zs43)*SjY8$;MW_S7{2{^o0bn9&Z~0pyW(OednleXqM=6i%Q2c&KiNMYliV#V%U<8` zt_%|}Wcxd^3ofx}9&plp)$kkv2|muxlSr;S^1xn4RcS%KWSK93(6uN|QC18oZIE-~ zI{aR%!w8m@;4C==RuqnN+hv?p7B2QSfHpiEU-jdtb5tp^>N?->hYjy&0DZ1M6 zA*a9cR__dcb&8aY_r1gd0hMd31X(1cHG8aMYK2jl*FOfRyVk`wRBxeGk>FNxeP}ny zePhOx!Z2c|cFNrqs7hgq6+F5IrDezqR!(?6`S%lV83E?zo(ZJ^y3iNUyLhA{_s2Q; zVAWc&OwZgCIL5VP#DsX7D94(VH$j$Hd#zg>3!9SW)GaBJNe}$WJtl>&S;h2Bi+IO} zpYR~!A5(LTM$h6OR+*o(R_RjL$8{gkk?C#MEuCXBg5kl~{!GPFIEvSUkVjy}(nPT6 zt6eYnz}?emY^w%Q>rTLUUgG2V>XfL_3@hjf$ud>N+k*h4?8iCvEZlNYM!f8TA(pHh zWTR&I)}l9pFGg#50Qk|+Ww3+c9!ibNTZ(0%&9_)Obs~f~1Hs_Wfn;Qp+0V+iG$?B} zPNM##^qs@|$q?7ra2!7>`>y{$$Bu!JH09Y$(=oZbD?ilIY8x;ba@$6#(nK^DMny`x z=oXk&lE@B`f)=va^SMDfbR`m^s8r4jHZ74WH`yN8-@1pNqG@WxJ8g40%p*`vwnveD zlS!_L_e^f_T|6`hEid2RC6)T=H_+r~F6Os3+}xMJK0+N|aoz^~XhD1O#|3Hlndw}F zpv6U%cShYpmRXwbe2M3d#}j)%{Xo+GU^ReVxsE)rft?;c4r2~W^Jhlo%5pJE?S5u( z5$)`@SYW+`j1;y7K?Ss1JV{suK4zWA=m(<;LiKaA)9SE!VvB266N^9QMHn_2^P}4| z%*5p?yccKN1EcQ-e|8|wL|a;|CA&Hf-(B7T%Sab{j>N;*@6x zl%oGj4k$AYn(uF$w*@*Bux=!e>&?^!1GPT2!O62l@O{(yxaUxODbS&Vhnb>AEpF_s zq*g|5iujuk9)Ay7VD3Rc5@?{{)9hHufmA^DxgP@z&buYTa{EjX`HIuI|E3#khzS+c z2YHZD%ErNbwY(MzW@VsXo1MmKC`8o_&+ml0gB03Twa#o|o3Vd`yV7(?0}=LzxODlo z(RYogDDG>3N%G~`WO_By_DeONqm@s=A#qeRz;QBqD*Km5O4<*NVkl z37(3Dfy^+;?(z1@xc#aV`6E6?wYRxV94(beMKekyv<}Ke1xt~1%V3Vp0T8d)`JScb z$h{SQt8-jKfXwjiB-?*ce&L@~c+ESTMR|a<8*rx`MmjM-kN#dIL}2w07v|uu>}&Cu z&njgK9$+=}H@qZVYPKGg&rf2}x}uXCtu@9iW-lRI$3^?@A3u2L4qomY_w$|bn#)l(+*>`B#6w-kpYxT7{xqm zS3|8dQC@D#6_lu(R{Y>cZD*f$pZv5@)8HqoM$m;YvJ>h~mMh3PWFMT%8jX^)`E2Ze zdcrih+z>(jio1F?>F^0oJJ?mn93nlo;E~pf`{tq0al(IyYs-JcZNOK>jQ5s8lfrc~ zYFG1PdH-7Ej)$B2w{;l)dv&PpBY)7!=!A4E@Ms_7^BH*Oby!s_2YjyUA`4x!@8=53 zpK$_(i3?LB-ExR7M8l|!3?mAyZ=?d>f52m8cMHw&R&ah2upW|#+*6sq?M%v3N7}3Z z2+PqHlEX{0U7l*zCTFitO+n-*jC6#ZXRUQ^Ihd_W+x3AzzR3XgPXebXorojkC!&zgP!!!oR<0@GqrWpOi=L_KTySA6bg)x%CS&+8;K@api>;?Z zOfg6BF3cHy^Q?lQq&VyQDx7+!3EH@5!4@>y#o+xFI3%{B8Sc~;rKA(aAo|VwT`ZGGwdGK-D0ja!cP23rm8EcyOq%WX_5fnPR(d`*4(LBsDx}>c}lJcPN zt#I*t*3;$CG%B9 zXgdJGff!rYlC7qW#XDSjgLnxy6dMC6&-p3)FBy`lX*&tnugQb5iK>>zy+(S@Zd~Zb z;V9f+$9Y|t<}z*G>Hw&A*_}*OK@b2_&C<{dE&F;a$_=MsQSHA|FK}*#c8`q@(Z8F$ zsx^}!ODjiIYW2aVibAjG&hfd7BXVV=stsqV}M7vzD-_b3!>bux$0KGEvb zWdP{xTF5Ew?iat&+zic1_HH{CYe-XF-M{(JrTP1MEn5e3$@Z~ekb0D5^?5S+Kdk>I zsy14@W9d7iG)2EI!xe%3_&TXD{+>PTnmk#b0M6uIPh_NOVYirM6Y)3#LBs;$d=HGHiD;G{P4LE%K|_3q`ErvdkDD^5Ulohl za6(lu{pVD$jp4YUG*QC*p}gdMyjXy09*zggbEjV~>P;QUdF}9JiP-UZbS6$L5Cj={ z<4n_U5ipO`p5hJDm9ucUeE5bjKPFbk`*;i=^G{{DY6_2|W@fhgwtGindq293z!3dQ z8)$S$CfPht!EU-J!?R9E?a8X7ygy7{Cxr!$h0q(ApOST#z~?w;nj-yb$9spt>9K8D z-A-c6hv^hBJ{vIBXAf@F53m|!slQebYMEuqyO>VB|IW%y^<7cR=3~S9d1(WrRi;ez;<0n_6mqD7 z;&SWlte?YqQP*&(q`W=Ml@68*gVUzU$qw-PLiDUDjm_iv>=L(Hfg23qUQtv04p((+ z6XICfTb*ZNCa&K;?2)&qn?MVM1fkG7%Z)I?(^!UfR{^9p&4j}od!htghvGkE4xWNE zp<%5MU~>^UCD-+z))Vq5GB7dudPMEadzV3Ppi%(<$Wv-4Nx}i0_*2IZ0Yf!XtK!~? zT{(C?Z}ETVNh(P@QT9ZI_bKs}Zt$K_S!V6mEXseQnOjz95fs9T0A3MA!vO{ZZ_78W z)Q-`;R!xIm5h4t}!UN@V`dXC^SzIb2hbE7+jv{8%@XF3=%7Q;tfY~&xkyyw28k)K? zcl?8cibbzHY}qw=X=jj%LHJl8R1GzgZ)UI1q^|yYRIgH>8b3Ww@!^;UZXJH3*F`v( zrx+C4zCjSx>CRS9d}}vt+dT_B6fSR&irTj zz@puY0!EGW*eay`gqaOCEwI@ntGgUQ-#=e7(k@C;-uu0`2&7z4sk&TGcK-un{vh>x z%s!3R^=#3;+EB$T$^ZMLT7%WMK{kWn`?B^HJ;2_=$ub~;ULPh8t}LrHtq1EZe=Mfs zNV#xKABOqSBG|o$w@P_|D10<#bR-97#bu@tvylqOw}3~Y7DHOu$Fo2?KFJsn4hVz+ zyWR<6R~D@}oh@y0HkR#3;w&D>5^@Fmis z{TN>OlwN_ybp~O1YfJp!cDA4dNuY0+jh%awb*pi&WY}LV8rk_i2vs7nyNaGyFvZTD zFvn;?jbn@swaRnp5cGP06P~O=F@`FHS#)jn1o0HK?xy#+hj_G*>^m-$nm|O7L=~vU zJ(QaxFK{o_G6&NG{5SC6rjLgauw9P&w0Lsg$rC)S7{%DT&dien`8S{Kct`P2pWz_ip5DM&i~flOTf zQ-3n*laHCgji4)}vDZ4b?QA~+ISe&e3}J=}!~>C*ku+GC>bMdfN^Oo!F_|Yr4Lf@uG;jEkSs*r;Vr&pkKiMMB=tC@3m43 ze9KvsL07yln(?W0FChmwZp+XV+j@5CGi33AfBLg-jNZ?a^8;s2YruOvZZR)?uD^ME zU3yfTyc1Eyh{=O{oePPtWGaUSanauOVa{o#Hsr=5U`dT9jJWa9ac&JBbWxLo=<8}# zB{SP-!Kw1;#?jhKeyChoUJUok>}pJ4NpQK!#HT%B>OMS1jq@x#vGY9e1o}~KWf#*v zqjP_u0V%qJi3%OHFPgALhL{O-6I~j*$g)c)^)V=vET7)xJM{&bk5d}uP$vGM$)z)1 z$%gs;l19B;Wj6{C)Ilph4Y#>;`J0X@Siq2FBv79*+Q-t;V)e%H_3-TrXh{U4MBF2I0+J#=;c*O%UJ5|j+Xy3q zBa@sfyGj)RFUC#cA*5WxiX$bw;jFf&{TDE}rvviCgvyr9|}pirg?Q;BeLHy}LB6EVA})zo_WZU2<-P5pTtE&@gbQEj z(dC7sl&KBLTH9%eE}E!m6c5wW8)fijWf~wdT7ho}TXs*${00j48iIRD-Z!-WFu7(i zhU1~6%DL6-gz|#YB>_3i7$F+TBUMaQQ)7sa<>aNIQNM0A^ z*RLN{UCvHWjt`OlIAHICHoa5Jbge>3O9^uzuhAJTiNf9-pS2p(DE+_2zDLKnN?@l# ze+34!_ylVAg7KG$&IHQn;8f&cyddMEX(R&&(jGCPSh4YIrf9N-hFZ= zQK;X+G);cx)Zl_3|1$6y(koFAuzUOg-zT{(WFotM!`l&!FRrq>V@gF!qY*|@B*>y2 zUwQ~E<>Z&{+e6FVDnK|`TjI1e1t!P#bCOwxo{*oCu_t&^o?}hG%gy^1#e}-nVJrDt zk_ELlqxp9|)CF@0@;^;6w!ce;G|0t3Y<4;$y8&S{=R)VKnP;Vwz3ogJ2Dwcz;t6L% z(_FxH%HI&5WJdmFlRA{q6QMse9V?o*kU-~(@3fXidnZk;1n|j;zICCVQu5@|$e9(* zJMrKN+tZ8PD!L48P0C9kL{zls)O?(}4duvQS-S_1$TE{$mj8!k)tFCEw&5M<^WSt; zu|V7yf^|;VA55TH74Iq(4se)Y%sK5G-jDaq=4+AF%(a!*DMABz@D#%3p9V6i3S+Ag z{q-?&CLTWCAjXmlD=6}5td%-=?>8@d^it|ZLyEe?ADUHo9fzPO#XjE_cTiyp}qXpQTy8Qmkt;?{+V$i;v* z52d!0E%JHz85)q~3`N8zgsq+#qWx@AA07w}5=p5~*w&~(0rITd7JXtGp49dR%DQ%2 zn5*~G-8UBZeqCnEY`_x>81_eg9&zeweuh)nPsZ5JAMT!jX+WsyKtxI1`aJ5=#RG?Y zBe!km56M@KMso(XU?WjsjJCTde9UaFme++P08;HnN+N8JGE3LK(6g=~3DtN=(*NGq@;sLAqnW(<^0L=1N z9(@nZbdfV{p)H-+5SnN7O>A9ZW$yiidrq4a;F0&Jnr7W7cy5(vL%Om>q7Kd;-1^Pg zr+|71&e%X3yYb^h=PyS^nxM(oUw4h<)5<1#k*_6|GSE;Zy6`_v{&%7?pTTZx#IlAZ z48F?vDm!Q~2m;e+fZGg(cd5v}KsD}OMe#?hh$BuQg+ifXX<{C+rL~hR<}U!~ox2}I z9dA8-ZS-)=DdU~MrB9qYTVvd+`Z%paSP?McNNZ5yZS-eJy8M*ey^RoJG)_34ksQ7q!aihX0$xN6LmPO8(O(CxAXyAwtd+TLEAc1Ooi*m^)H~z!e#gt5|5gyDRKd z(zJI9JoEX@2>(57^^~?Q!YPV#d1sn?*u#u#5lPf&zhLo3(z+)J^XM1gHFbRjd`}KT zstfpqkVc`2#F<7TRbL7A`;t1E`@(Qf&p4XCGYAwTIE+(IN%-|=M`(mzCZPu;vs4|cET*e zY309Umq}8laWF^Dv1Fyk19fY+($71H2k2Rr=^HtVgRV~prs0k_23jZ*3IqxgNSI@b zB6$ys>3?uxvG<}Nx`0|Yo+m^34`0YUi{P&5glv#4hUl0#>FEgX zS&~;$_R_eysImiw*N_!IObR*uFuNp>(lC?w?ILO#O6i5B-pe<&x(C;JN z-%uiT=Jm50zp(}I5LQM;(MheVLvIXe0X`~TQK5QM*!<(k zRkZ}dLmw6Gn@}cM9}^b>Y*9H7TiQk=UnbGr`_#)L`?45d2~|;4Vy-_^ z18ZuT?M`1-N2gXPju^8;*b3ME6{L0Kq{2%Ya1=rZk((YHP`7OT=8wyIX8B)Dm4U2X zLrk(hA6nsAPtwHR_B`SV8)&PUe1x350>vRxWI^AQt-7s98@8YPzZdSRt zP_asC7q;Osq`v?7Qoz^t47(~63XtNdZ}XbrEvc?NZ6l1zGUj{S9}SRLh-N`Fry(Vz z4ceLr#0w@Zkf);((`9E)lw8~agFwW#Nmjy7PNppBSX~zYf<><+ zX%jbuzuVkTkC*w*0;nY#$>VjSkl_IlvJ8jiMIkSq3cyTdYv#qlm|S??nEB3o&S)5| zw`sKUeQRc;)0+{bmI0ise#+s$@Fg?Y?#8|_og7wPn(xG`>qm3@x}&p?i~%Pm51%b6 z*`RFL>%QXxOs!~jGARu>Q}MN0t^#OA!bOZ!YlFPZEHSN@mXn82xk&Si*@Blc?JSc#0# z^b#o39rZS5Wd-rzx+(0dfb}YVJu@iWMQe^}C%qVuBQaEj|9TKLGK%QX{vyIH*4AL1;*Q(;d|aio&ODhjkz=DzGEUy`c%U`;xO+54sz+ z#hDnoEomXw#a{ zrGV>%3It-Ea#1;gz$t<`e#tOcf;}u=)G!iok!ZIO0GCRpz{uDBry;{Cq+a0V=v0MM>9V#`b&$E24pUejqST?Of>{bvnK^3R@B*6xV)vrqNf3BMzYw^u3+8K@zw{jpBOu z^I9=0S-8#Y5u_05A>`&dZRavU{^ru?XvW)_jNa6tgGyNwHT5#;HHV3vkYr?YKi#B^ zbq|9BtTQXd2dIjS`b<6c|HcGwv|sh|`R1i@n*XncxUbZV@nd`I-5{c=-^7Ql+s}0B zN%yuU_RqVq4Zg|J@7K!^^NY5Z;YhokjmX85)oslIblB8QVe34D@uQS!HoL5zgQk)z;U zFj6#!(i!tUVWyp^s@}|p+I>+9v+BB&{qQFfb&)?8qTzgo;$4iY91OT3r<9?pRlTld zZe0k}p)?1Wj_2m(i9L4`k+hUlvZvC^)8Y#wCu8Pm2%$g6R0Z$B2mn|Y8trO0Bc<5 zAWF+N^+xiegZnQ3%l2(8r%4Sz!_xB>HUJ-XG|Y!^_ywsQUEr z`6a88V9ir7sL4^A#ej8OAKL0NyZhZ;JEN5YfkuBvw zNfJebTJ!CGyY`+7}FCKaM~6#_AWykE%I@b&#@7Ve~)Qz4lvKS5zgrj)VF_ z0Jit$68TG3+POV+mHdQ4Z0YQzPm!R8`<=E!_VYxw@@T8j-PY)l3;)e7Wi9;Ns;B{D z@c+yruW(hA;l=?@vBA|_N=%7`uf+!V*a`3j!a!jY?H4jdOTbA+V1MK+`m*X9(G*|@ zvfyo{@@^LYNy$>1ZnO8J5~MPHIMv7@mGVRhKNuZ6gn<jVyz3a50+Z+E$yLvHqv+@7S&+~}=uB`~>6hL}zR3EVF zZ^J5ToFJ);r?5ocpJ8e8<9`QeF7}y?cq`z}ckEKSr0p#)J6x9!lxU)G>_vMVjKp@G zrKFF_5gFJ&U5!$<(<3+IYy=c|bp)8v&(c;;RTRe1xE9KNJ0sl+J`#Wy<-A*vGx;y@2$^4QvgLky1%Ml zHjfzkw=rEOB}w0mV0SA_I?h>4M;trDS;{^Exc!MJpE9fLFmMbI*c1VuV)^>(#@gWX60r^ zhUQ%qjXY2-C?TH6cJy3M?Wu>#IFhMTuS0Y}#*vUhe92-~o2;_c(@CxE`8LM`>O)%1iQhjbrY@7 z8BT*u?3slZDb3&ahJJITRxP&!BtW|^mhj6G;kx* z%}DA*A(K<+E?k%(-QyI}cLuSoJAC1hK6j|Mlmuz`Ud;y<(=iYhiKT=a3SE5-)*_OE z1%NHE>H4voveLTRbE1Lthl`=xA(77;BZw28$=62K*haWj?yP{DAHo~1m^?yD3e^39 z5~_YXMm)T!Kq}yn%Zf>#j%Xp)y*@!|CQ9|Obct5TfE8pJO%TLDq>fINae=j85EtwT zm0>{LT`XkUk$h1QpDA0_@2Q^!-2rGqGfoIWiFk({%@ImB!-ZLq)MzS{d0rlbM6Di_ zUtpvsK!7NO3y!2X65DbyYcoSDJsJsV*g18*zN2!5Bt`)zpd?8L%`RuV)}hY<;cN2d z$vS{UXM$%M(!2E!S~ag&dj!`Bmf`zMlufAyAdAILAfvaG3c3?UpdTZxDUa^N*Yd}q zf`Dh)ei=EzRie48K5Fg{%7#c`-H}}ug8yoN1CXuO3e2o;Ty3ee?+e*T$-Z!e#kPk3 zJ1!tAcM{p<@~=;{>8?I7oXQ(He3YiH3<0ntm$@slu3k(^Hn@&_aWxL* z?0B=HNF+>r7^dt%KlKg#tNj*V62yYn%8~K$S#g#F<3$2cdpo~g`2t9rXS^x#SM1*% z$X0sAiN>eBo}~v$_c?7KNj_>4olXHZ#!YYql#*-FmKb7%)s%RaF$ zjZ31W*dr;_?+^nm+^m15(WSz$9fVibRkEI!KOOM^*(_b8n7^e3R>26LQsCm&AyX!t zS;x;srkeaw;-sPe~=K&LO~(zk%>2ytQ=PbjFpr z7t9Cq5>WnY^+^+UsQxLj92#EZnO}{zKfXRpa?@BF)0XjsT*^C|KMOPH*coy%Ibu8D zK%q{-LMpCo44~+BPq5(e9cKUD-Mqj#}p4)>ztBO7yEVDSQ_a)x>5 zQVGIk;@V5i><9hXn3Aie?-W4igcM$j&dw<>E8qe>MjlPEd=I|c9?NEznY=po zdJ8_f%5VcQW-GS=E*Pey&#m~U3-AZ8RX>c@rw3?PS@nh8idnPmf6X3dWXy5bpJ3Gj4m~fz8*K}Pnlt9 zcIYe#yAhrYVCav|wq~|B|AQ~AxQ7|1wy|k=Iv10H9@`Alt|)9S=*y1qUF=Cu9Rh`P zwMA~zcErA&&V+sWFX*oL_;=*;jkuNR5xbNttDjsE1%XG@88tj=j*KX9KPF$}=CNgBIs}RV>A2@``ft8B_0?%-)F}Nx%{VQ1HL7lmsU>YF-f&e!_2wgN z+VPiaB4;&N(orvJuFgEKvQfJre*FLVPr0Vqt&cXNnd#D>P(~U}$q+;N1yfo|h^pcC ze;Q3)6NTfAaDv5~8ZL+h)D#A$2!e@fjg*lue!({=ort*7ZuU32hc91cs`L!%on}qug z;e;fF@D^-yDx$~%ZK?7sS8`fw>KVMS$>#5|L!z_PGDUxg(;equErG=9Xu`v|+1L}U z6)`24joM|SB&`Y=w0RJ~a*#&&9V?>cMrS@oEuzk@YiKB3zjyvFYc$bL!jAey#k;zB>`NlxiYVK9O};=|q>{ zR!bZWKnR#*cN?SWZ_~5}l*E2DowaG3u+sEzy!7%xk;65Pn)TL%7R#X>lt#^*PX$%v zDPota{6q9J;lcvIXL*_4_WCnd91umP`ZF`TcO+s4d{m}0z86ouY*%yf!+3LNKXz0) zdk9`y74ez3Nf5mMB=8M z^~=Hjy@lmK934S0la0W@B3Xq*#W^JNU0MTM{zsoKoEJr+UWPvohMtKApfo0mks||v z!dnh&#fvTx=KUCq`iBO-;uf1)JeR#S@a0IYh}_o>uk@)P9|>79B%rz~Z&CBe84+KU zQk-%lu1*#(So2Y}d0$LfWX_E_GSjAP7N5b(%M1ju&!*+iX)C=~+`sZ{a4ALij9siF zxk9~;_NNODRXm4^nb%}(zQ$e0)S!G&BRHE#f`c3l%SR5DMACNtKKA@pETg$fZmNqv z7+rHE=tkM3;jsU7yR&bg(cKHe#e%~q)!f9%)HaQ0ps@SX{jJhbR2ib`6UB7u;J#sb zV?5J@B3+{lk@6seBS)nd=-~C_c^FdqHi(9<}z1yC<#%#`&bW9U@*%l3@i z-+WE^wV!24oxlen<#24Q4Xdo-6Jp8%(Tu$n`d@g`Xv~W$E;cJ8@^>SfYK%*yfT)Ek zdR&+&F2VU5C%6NQ(RVSokAqDPVa$B4!#ZvAnPO!?37l!&NfL>ewI2Sv7pktidv45( zE+jwh;0!MspVg)8x~_Gc{vB?D`q$O5O4xGU#Dv@bqk0G|Qjrgw=c^=WxV{F&q5ze# z;QSS5biBF58j1t73GvU6flrW>C9!`MYnk%tf0@}@=KU*>Q5=?K$rz1Aq463%&Tnb*8_B1t;$n8v^en^aK%RE zL%F3r{lV)&T0d3JMLtzFM*;ptU5r#RuIP0_sz6Tdy%$c()FI>MWx0`7)J2#H2+!-m z(CQ|fX!+Nv>@*)l7Ec$G&hO{YtS+S6OQ{V@6=H^()>iMilb!Fj%VRA`GC2t8L#O&+ zYKBxyx}V*Nrh5wDYwR%$@Kb@WeJNEqzQs{ocJh?tA*7FN)u?*x<9ya~rIuB!{1HUx zyyfIdc*QDH%*^X?J70^o$bPkX5X+&SGLcntI}fsa21~B{0%VC+nGaEPRdBz3F&989Sn=>K;(( zLITc&UeZ*O$9pA+4B+JZ)~sHzc>ZMeAnfkwY!M$GvH)BG!{|dQD46U{)9`U_C{nXG zA_pVwr5C%I|8PjhI7MI3PTqrKqg6Jh?FmYC&{v&MYZ87n&H}=j6g{8zGTgwD&SWq~ z_5t`7Tb;}=#RSIeCOJWDU1$C2HmiA%2Rr&QO)`GlLXgm*^ov+Scc1g#t-RNw4vcst}X4#$q9=I97DINuHj>?Xh}&pX5WQH>_rM3wm_P0AfCY>PKUc43m@sUM7YAWKzq4$U6F+%oSYH-K+a1;`-VwgZI7RY}XKk+B8&^MSMqSe@wczf<_q z#Cq6nJOzbaEs*LY9(#HOdjrB2d?ZNz7pdnv+*G_EX)}H>c*P0i*+z3-Ecw^JQCIONDQR&~F$`m*7BlS(Q8aKKKn?cQV=HNrU`T*h96X!*{G9Gm^J*L_qK z_i`PSWbnkv--;&a!_hj6It!W=q2&%#(Wqy6u@}gyk7if2s8YGqw+$-%tDr97VDzOy znVmtRw&tanA!QRj&nY%5)!CBhZFaH82#(q6fKU;rpLowU^Oan5O?VTI8qHuyo0j1( z4_m5cNKNfOL~nq8-T@8+mkq~Vr~xXQrPI3C^AM#vWjIy|;2m(>(oGl!V)GScDUn$z z$`IHnN#J0G>o2N29O=J^j7lSGZ(r8|a}e>Pgy{}dvrAR5tx_Wu(i7l}Z*1wu6{}V| zg&5S=b2vmR3Ni9L-?qv7QdJXq5br+UWJc){QaQgR>6E_T>}Ahhaq65wh^g+>v7cVp zd?T0Uhv$pFWe>NRjW!rmZ;OpC^g!Ulb?BugHtOm}r3(!}Fa%UyaDSYkej)u-IGO82 z;3zbKX?Z_zwxyd#FEv_$vmIO{y|QS)6>XYmDvBZU)hl*{YK{v7Yv{M05Wd9ZU-@FK z?t>4_z8N4akMz;ZTq3@1Ubf6zZFtMG)ak`J&qIUe;F2!%7_Uo&oZ-B7h?+ur59PzB zM9@J1Az&Koz4@ulYzX~$d;{1m->QTE4c*piMA$ja{0f&&DP?Ryt4^7as9S8a5p~n4 zacas0TfBKqaTED(~^BOjugDZdJ!J7HCr~&c%McdmgoN_jA-po zcFprd5WdI%BY3Fl^ca>pu3$8;gS}1hoAW_%w-Hc<$!|Yk;*K>$(q1ind`jrpSF1n)6P5kz2wKhk#C*73^TF+}zkF z5~oSxKPQMZxg&jBUDe7>XNN)$$P1Lbtbl@B4DDID_e&FgD1m|zI5W_O~%^t z;00ng9W$%)1xGO5`7gdicqji6Xy&+e z@TK}-YQsg+cjYR*BR2$nV+o}Vs0@_*m@aeO!KZEiAM>1oTdAR?zon3Z(48P7Fp+3# zu4{|H-QG%jL!Z5C&bgZq+^nc4#|x^h6@cA7C24&bwb)Tm$%d&2j=&LZaNvSqY83(| zjWCAds!&4Lb{{5Gz#GVvI1SRDxxg+hEu--R+GTFGcPOC(4DcifB{{iMAdMfsnL;aY zLjf3`lZJQbLi_P=9zz< zX*6-R+Xnv?)cS>Y9RY}uknTFA`J{F~lwrBJ_{_Te{@~yp2X!Fc(%PfJv?Dq|NCBG) zqHX2|(0&>0uGVO7nuV@D#_C|oBFa<6h=;B?DIh|vIG<5^uG}{EXL(+lYx<_ZU7#I{ zBi9pqT+<=%+auXTW<8R%$)7&dG5Zx;H>;H4+%u%zXRTQetqDdQ;>Hx3S~+Vel)@}I z{Hx(PQKHQT!;c!hCRT`AIB-sPipP^v&%Bckw3fHz#O+MexC0rcP_N7K$Sp&@cR1v* z)qYP`;&LFD#|HWAZdT2jQx~AM-wT(hsW!o7k&Kx|fTwfMi#1nv>VFjCstxVwHvRW+ zFF(%7{LlhDL78yU4nE=t!T01(XG#HlQB}<O=#k|buR0eGq;zjd@Sj~S3{ zTpyh3Kw7q3JQfjut%%&P;%8a5Ug9J+D}^f%mZkm^r@|XP3j%UYa&1l2mKwW&ce2R6 zb*1nE8Q0fEo*I;M#cjE>nAbYP?@)(W+LPc3K<2>#HkWO|^}x9J4A0 zL&GMGHtP&S5CLML!FQ?}Yn>}CAq!vDA>T~qX?%!3nlvbR5(bgL9Q8m4ES#a=R2AUj z9>3&3{a#r11I0bS1OmhsckX#hHA!I4il;%0qnL*OPVbTb0<*TPK$#HGVXcdKnwoA_+pL-B&2CBlTI~$e z?it+_sqF~_9>}*Mk#DfzW`rEi6f3Uu2tEAtQ~iAK0LFo%`Q+@4&dMq1zY%k|QQO-D zr(eKvlqrVZ-P2U=9&7~4ZoTnHYqzxJp?CJ1FA2-Qvfc^^aoQ${NSHkkt4?|%A z*h13|{VlK~n^)tMXPL3xwB_qNo;5ZUqz-By=qIn`33_&NqhjKD03iBHgzabpJ};Ff zkq~?MBP_Rit5q&80^M*Qp_p@T=dR$_XG=3W+4S3rd7KAB_pc{^F&rwdJ#$#7AM2jP zTUiW1NG-J*hX;E{g;oaKbXHql2aw#)ixB&x2GFb(Kua}kFiT$#bU3(lB;;vmV$4ZE z4N*ts4OtCflzOy=i3@x}wJT*NwJi0oKIFFs6#yhV7|}@AqEh%+>ylIV%acq9utd(_0MrQb8z0~RhE+3 zN0ibL&EKX{w=Z+2%kLt{)9e9})BUhU{G6s~+X6Nz$#+9i{n@+XXATD&89j~qefD4T zv0@7~9tvLz{zBUq5Uj4jqppHd_G!+Is0di5Vw}F3@i58jC*re^=&b>JY8|`ImiNWW z58a9q$>6}L^2>Mn29#MWOyS?H9_RVoA~s!22P5$T zcZ;9u#STCuG@3R9P~kfhWZkmNb2fhiXi{-F z+6_G2vqh~Az=g1{v-VT&a~T$Lj2}O zOkOJTNV=yU>K(i8mcTcJ2;to5t-I8xO&>ep@@{c?s`V$|TV(#sGwFfidOV7r-a z%d_|0LH?X8*aLlMOpTm%oi~skHI_2A6_3 zsXDZaEt+o;q96bDv>$pBZNun@SD5SDc!*Qd;&roVEYPEutO_ebaJgcfSeE1xBEv_* zJ20aq_$P8N?lyDOL!JO>NuI0os!zc`)U=niyus%Qw#>@Hv+xy@ zdmVONzDp`XD+q~_$5ltAdMzq{V#~8;rk5!bGqMH(f4$f6Bif|DGfm<1fQbXtg#Q}73x5uWC^Qp^tJ)$X#VGq-vUU z-AepwmR}@xMBIy81>FQ!;rvet13||tbOJQjvR4R~(p+Y%tY#XPEc4G6q&MX0njTC_ zia%3DyR(J9zZ<5~5>ir(T?Cax`_=P1!B(5j{PiLxmh2ITe}kGm1B6Rhms`1c!-8v8 z8a+SqhZwFQ+LA2szKXS|^;%xMPr8LW2= znlk`FrbRa?#-5}n^aGg(@;3eSwkY=dDFS8R!rpUQ)>%sw7P@Nsc;Q!N$gtj==Ub}P z^*{?O*1zk5hixiCVT1Q?vRmdF-&oem)|9s1S2hB7A?1SUF3NwgC7KcJEGP)_E>4pY&cVZxA4(5}LN;l9I#(X_Gx_3oSSEgF;afX>o_Qe;bIL42 zHk0vwT^f+=flU%xQG<^+dxe=sL+CH8vAtjv8i|g)EI{H;>y+p3R#6bbpUl)z50j(GprZ?D?qGmCy1k~_hc;4eKc?W! z2}fhsABEyz1%@nz#A1KLhSCPuA&ERICFBVDJL>?HCY=dil%^{G`5SDbQyNsmF9DxE z{;>4Jp+B~5?r&j0zR#Z?IP-FCU;2c(>aZO+?&3_0Jp!=L1hpOEMj8^$!Pcs|@evaPr z6LH2`#Xay)lQ>KKDm9y|C2bM6g>G;h2qMH1FQU+-2764#uoji-bBx0&h>8u9z;0y{ zmoeP)cjtW401=r?R`mM3p{d6l%jhPT$$@54+ODD%s(3)Jha%7L9z;+jB*PP{ zItFON~&wbuAYb1CJE#m{) z*-_am1@lKnF@_0}<~!?UUr+g^Ic${)>TmRT_nBJym$LATCRr&_ymkL7YJI@F?WP z8d5XZT!G_JkukmX^^#1r`|Fx+5;(^{qxZu+YX`wNA5=C_i~Pf1tL3*(Hjlu z#3M6!JFi4<*R;Y3mljvGh17_uZ1BvqYdz`hE+T5w40a=4SI(<3!hsqu;fwa~Gh)hf z_PTQ#k@A*PR|ak7t6^1OAyggE>0TZnvW3yrIgEd-T0M+ff=Xw3t3{kSzEO;3GXm%j zrfKVQcz@Lhsv|A16+quA&LAQ!(Z-w&R0&WN=_24oso)c`ZtU`zeBQpw(Rq$qU$A7l zgNp7Ap$d}9JU_jk8I(pyV@xl;>KduU2Enw}TXl2gjed9Ya|dg+#Aa1yLQ z7%~aQ&rR5&(VL9UwkO%UW5GyVq$_^AZ3A-I=o%Lf21piJ%raa9FFx@D!6Xe}*=n4K z`>5X9A*nxpRrqYf?q6OiA+6Y))FWAZcZG=WSUt~E*S|?DI^<|u0R*+-B0DcBl^-E% zD(e!mMAE)ejx#r4|KDoIkgE^Un_uQbZ=sL{nbE6*j(+Eemx&fC66lAl1jTb)?s0LS z_h_F*3-AREp_x2CgGCV87%Wc8Sa3w-cLXLxkZCzafv9uveC@e6y#_BWP7<oXQu!Yyeua*A3=xu*@?gg@H~H?u)sV7nq92Fo&dn8`AKuc z)^}OwCYfB2Ji8v!12Ah!>_{;}2*)-QMXqTZT2z@AZy`QxI+ovU+TXaD{1DFz^KjVh zT9F*@ofK0I61u3HVQV2Yy?5KkGildTiY+=*O_z3!mNpa0+Qwu)=Dr(3WPw@9Vj)8%g9qazhUV2@&1RCg;{Gh ztOIGj{Wr5x_5VE~H&@k}4%)-w4Jo6EfNrk3-R48c?J+OOXzzcp<%~S9bbHJ_)2^Qz zA<8cgRLETFJI_x+`%Gz59}CHnAq+^Uj0mMfJW-Zj90Jod=^Mp$&%3z|XPo#NPz zNgo0tPALHFb#dfWtN=r-XMc$iCY*6={E+fpY(7sRTq|5=dyLxs*=x$f8v^*^Ja!W*y==&!KY0Br{ooIiNcj_QrP20r6vEcp42Ry6 z?JyYG5Xgx93I6E5MH=ar%FNMCe42SbR>@!`Uc4w5mvB}L@#eATskt(IkdL#ZI^ETI{0+aJflhS! z%Oj^-OlOOa0B)tpT35Tmb*`eoH-HSw3g=5C%#Hn1nO#NQ*syWlC4H4za8jV@z~F&I zp1`=lhY_nhrO1u;g!-WQsNB5#me$suh}^`8;K)!36A^vHVE$bvIZZ&@f19~Pj0Bl~ z!P0PB^Q0Y+eX+~5SE}}CJk{IO`I>#h9c(s8;?@X_8APuK zZRQ1ka$0M8?#D}%#R~Bpfq9PT!s@}Ro zsKlVak++6}bhAQt9*g@@1dT}Oi@3N7p{j~T#BS;ZC-+Q|O%}=LHi0rH2rzp;ZQ-Wn z!a>do`6Mi^vDE9bHITC&pz4l>`kE!5)9AXK>Q-8gCX_YLa*L<6tLfH#t7U#kcq>lh zh9!XV&_-ZWZRzbB>S+-0I;axdlCcBXsPnNFTj_@y*j>R|*hpDM|JY^ixQ5o8#M@g?tn z%^R19jQv#E?#Xd6jxwjmdZ`PRREpyc7;$7AeUK-@n6rgACLR`(hQj+-2yd7DGW4Ta zu3mXiTIcBm2!3DG7yj=!Qgr-V7tZu*JA8*UdWiD*$K*l^DadPF0CWy7Q?G3YdvNP-Cal~0u?XhQt&3(N^^FC48TM#l!Tj}Trf_B!jsJ^ z7)1&CCklE8O(NnqlH*I!1=m{o>T^u&BLNvm{<9m&2G;z`LR~;$m_@Mz*Eol>DO0rN z?HTQdc?N-gfGmZ>o;vQPggHC}!GkcfBR<4bzJS$`j_~GfhsT-+xK(r*In(p%l*3*f zV!C@bllSbY8xk|CwR3ixF^=_(uTF?S_?$Cf2h16yb|3FS=$hi4b9H4b0Pzg?&FglvgI5m?MQ)Dcy$R< zo9}~>^e9-J{SO8bokU&?)w5rk`bOol^lel{XZ!`@L zvA~s;=+xf{@hy1ah-=Orw2UJFRF~MQL-NbFWzv?9G4T6}`>`k7R6%3P{&(nS5BD z0=a32`gH6s)ebkGZiVV#=1tHHEIq^_BtTLIyfUGWUM@aY*jFf{UYn5sDiV#{2;Zra zjQ8LRVMzlUCQ93_m~glw+x&#G=A2DV3y%@MHXYVY8Ri4ao6vyr)!!9_j@mL+`Xhj@Mq zNBS-#)rL=mwAUJ#nFq?Wa-~dUPs(mknFLm64(nsi0M?x3@Kn2^QZ?%%P5i{+TO^VH z{;}I(g!gmh6|n>l@*b@3fNZY~pn&bQ8G*u<%5;-+aTs{b38IKrl3~BEx7x}8ufMv{ zp)D&m+$$C+K+Eq0QnukBV{*;DWYP$Pg|D=n5BxO4|2YX~3pS}*nWLdJWqp5V5hv{= z_ZGNSZEh|YP(CZsbf)3?{lCBx`ADFo9^3~IAIL1k18b{lKb7&pvdJ=jf^py(sZDIa z(iTjX>rHMIRhz%+=%h=*U%J;n(HDaaqHa!dGo}3Dwxl7*1S&~+4R#+YCi&@LoQ-0R zK8mNLDT5L}VPQf}+WJYgzDwvWdz7e7SL4N(2LorB<m9PqntpWA#OW6a0={HhP)pS$z7D7BTz0-fP5JKBPF5nE-PZU*GCMBxj1iga$#L0 zHwcJJ9VaDfu;dwJZcUi^2T$8GdB3fAzM~uF6BnA@KA%SAczXmC7(3YX=A;nETQW1P zltVc>qUK*O4Zir%r0C)Gp313~mg-rrJx>#;&n_wU`D2?3G zk_Nta;!*;gMa?)l+Y5(m<1d(~rL4$hy{zGeU9jsX)}Rn^`pemQUCJk@`MyRe|I~K`Szf1p8XX06qYL`p=$fA>F+eT)*&zBQ3uYJeQ#`d}bS?28cjNv&xs(G$+=rM*S%D)eH9kZkh| zU7Hs?=C2j;GVPtZSmj*g|Fd1n*Y4jKjq+F>i1BRT3f5QkwjS^?DArw(GUuH*1)GKU za(btCUKI1cTJLG$h$j6_`*34Tz=g1s1j7knFTMp_p*Y#K{g{MQk^q^-hrjeK- zkM43iP}aB@#MHI^P~tcTB!fTy%pGoWqN~1kl?rN2jD_C2$Xv(sw6YZFQNiV`eTxhOCvl}Vwk5Y|bSwY=@++KhM>3wqWRD~Bm&ANbbbgs0 z+7Ku5zlGRK{ZRsqXb#CEA1bof6whHI4s3UP^AFu^_b+s>>KDF+fe-GY#XgI28BIm_ zgt*Ew0`3$u_L%h;rF6@`jC^(8pQ& z56c#RG_2W5EZPg#=NLRw6j_I@`noeiJe3jcq5f)l<(7lU6=HsESte<6x%R^--=3^ z8i}T3@y=!0A+f6ZgQF#z6M*PGUN=Bu9IgTQDQpN-CXJug3ed!GJ7Uu&PpO1vk3?zm z^K1>Ef9a$LOuP4Lpy~}R(_azI?>bMb7@?+LW7crA61_m$U=_LAy2~3{Ne!W%m5yT^ zzh>ifmCYxW_vr*Yu#%3C%0OLTRx@N#9l{a6B~B#$0;p%pkEblYNFha-H`oPUOv+!V zQf=n!>VvDXR?j>PT*x`XZW;Lr0R>KqVaVkP$$gF;3;*SEPOYA};BbI1L9qr8>Y+YX z4H8R+B@1B?;{h{Fd61@I0l#1McN$j`gee7BNj8?=;D|sBwJ<;y=RGxAUx4EJ-0$Gy?UOCWKkW-Kl95=z`JU7_bkfuS7cwJ4D z`@G=IUYag`(5NtyM(Hk5M@GD&(QhUwPqEKEB*<%qNoU|~Y$CMG5H;mugVi19O-Ia5 z{1|QmUmXxu`mWO7K>zR_t}EKy?Yz+9~;rXJOe`L{`!oE2_5p=QiQ~7m^~E z0sDA+QZ85}7`oFm9vArRMLv$qZosHwXKjPFn#9I4Ki&S6fo`R_@ImDEC3R5AM3bb=TOGctBIx14zNV39r5*3 zSeB0Rz$HmD%~hilQ#p+lQR*@1y?smh z5n5V&<#JIxT%1YoGJ{O^wN3m!6uS*vWH$a(+Ngviz`lM=_uzN0y=2h11vQP zeF)!(ziCw<&2?1dz*{u~0V`ASv;W{)ufGZik8E+9wrI$W!Njh#D3(Dxi0RKkX-NQw zg}G(hxoS{o?tX!dfFZGs=wpHMKM<;7(59`%U8sKUGI_1Ue+U)qQep=LCK^CTP;lWz zBYc%|nRTb)$>R=2s3$g{l3fUE=yqSKj{~(ACP8%{XHBT5z4VB4-5vMMqEZU9f1N68 zHF*Ub&=`UHcMN!_OTQX*pWeB=G)Bt-9n{AY+UL_p^!cX_tKpurXKWK(AX+vrMz?tB z5Rc7Y@GBJ^G{A3C$klu{X_S8E0Z_R-r77uLGP(uafy$f3Ud$U0z1L7xE}`z2TgWai zn8?^Brk!i_0GVi{fEzuj$m`6OG6DUym)W-`=c_cMK{Yuy`Whh_vwq|(?bX%QzQU`o zIj?|+6JE-9((;K!%m~=%Z;TKYuwTTlK2mfk`~zb6<5yH`8eHLR$RI}d_Hr4_I!m>K znvv>`){+SFNSr1&oC&J}UaveT9$mFb)EW!6xi@1v_)MnVirKoO0>xPJ_8{nIE*xj# zZGiu;&tM!M#}q(eW)8GEWj^j3ZJ46_7?RAW+SOvN$k zVorxyDdAPx6`TNF*Ezv++ZlN%m;Fx;?6w4Rnww+^vi#>hH|yWQG+#MQPG%Ico~Nek z@TdunV9>oaG(i*K=}q;v0`0xfeYLLm;?W2GIyB2q`9Cc()9wAkm`qVrLS%sjncZHs zigTcFbl>F%{{tclyVMqb?%uI!K%hG+9q^oBamkL8GW)Ds5vzl+YRk_Fl>`B!yiYXy zaOnEyL~5G}gmVmf`MpWrELm>yC)dE!<@Mp# zM)iKULn=sFVB8C6NW7)2p*O=1D9K>hs3hqYt#dHd)Xcl)pWi$T z_Ho9jvzk9QNS!B2@Kb9fHyVahP@AY?$%hmtgT>F!IK%w^!;8g%mGQ{jZx1b0Zanc# z1f#iK57G$JRVe{Tti=BgR9+S!BAR5DOrjAM@#zTRJISXU#uif0SSPWR%v99Xw5%|v zshVEwHdpZ-6b^N066Mk0C8*ix|ueW0OMNf{^AV0or6wzI?=8bUe6uMiw zJV)*j&e;G=#%gF&j_RwmeG&!mf|sv}O$K#9h~{YrAcaJna8$l;8`^u|@Nn{eVp9I( ztt%-ISX3v9gs_Yommz%)IZfM^6C-qE!*?0gO>l8O%Ie$g!k;?1x!8Cq0uXxXPu`?C zi#CQ?=c+Q>LUsDpql+(a=0Ni3QHGQ+)4wB)ov9>&>I1Kv_~Z!M^{)z4gN_Dj%`mY< zR`_|Q@--Mj*%zJY0$k>tK)S@BsUE4*tRwOfcb_#uixyI=&RPwi8sz+nOGDkP3^czwL?14p7OG~kmD%)v)(h;(Nc2}7nakny zJTLQOfeDw>2*;VZF#*3PG9;p9vT&KzlQQG_HRE^#S%+Ie+ir7xSM&O}J|EaBljNb7 zPb?u0FnA|b^TCZ%+SmOJ$T?1seps+Vf3OwsW3&1fyY-whqWeAc`&Dne@x|sQ>7jSYm>d!eUPABVo%yutu#)f;tafEE+Kz*+=?MBjgb|-~|U?nHV`DRl9%~|wh zi0gY|a)byj!d=tXH0jqPYe^BXuax-5bGx{@MLeECOHS9l3=|Svq9|%}7Kb}^iM+I- zCGjOGde75ob@AJ$j#sf7Ek_r-VeixyuWUESdl>=gKKy;81SoY3pe{OxlVs`YVs^lo zHNDz^25|-9cfDK6a0X=}xsu_eurMLtFP7rrd$*D9{uT%r5{gX>PPWD`DL>Q8;!epS z#RT|{3|?QjS+FMtvO7(t>a#snhCM;-QPAd0AFXxub4Z~A_S$rLzNb#?McH14@~Ku! zb#gvxgI&sgR2ge~L?xWi4mKMDp>U$k5g+KdBo-WLxjBKjAwE2<(x-lh>@SbRc7MSl9 z_gkKBs4q`8{SQkM9zk@O-EX^1w%IfGd*jb}1zhnJ#os3klA0cva?_@7$KH9OOJUpp zu5TqaFY~dPBF%A+c*%zI+@tgSJo`q&5~VG^NF^t)LjX8ZELyukaxSelHkTsE?Av7O ziS~DBWMZ0dMg*&e6^Gm;SjoFh+&$v|n%dgXQhlfAK%L{q(@_BN8v08kT>Rh|jAojm z;Ed@Rpq6YPgxK6Bv*0XD%`z~5IL8Cn7dK+h_WkqBy=MfuikPU{$t$oritns56ILHX ziAZvfp!vD<+1(xkl>;>W*$W0BG`Se?kJ`~y_tMi54#kZmEUm|}+GsoSnq9kum$nUv z(1jY4xcebofE^-~^96c32i)Mb+J+%EtNa+i+Nwr!(nK+iahU(yol~E9_PnS6`|_{D zJ93e%M3`V|mujWMbxhBp9+s)xIGx6v|5 z92MHVO*LkL&VZ-PO)FA-4I6Kv;Yu@OSS~q@xTX|?5_u*$S7|L^42!S69HZ(s_^+qE zR0H^&jvd+sO6oUTq?RW{;7kP@&M^l}vd>3~eh|f3Ob28`o>Y#u_?hFkSD6d=hdsa^p#~9~ z&F~8!2Au4?SAWwc6dj$RzPC_h@;;sZfIe(Xnrq9aWCk2lZlM>+Wo*_f6)N$tV!O@oLR`p^6ve zh+N-km;8gyS43m{lP?|_4WgDndDtT@$Mo)bO}r2Xb^rge7R8n`fD zb^8dJs1LZ4xM?&?15SKZB0GWbOyuJDkt(UB*;ur|Mn?OIKEnG)d_tIVH&1b zi>as|!z$^zI;XHW(^Ke;rdPIpn!#7UVOQo8YH_YTUvI?IqO97R#Zb`UV+IvGGo37i zCv#zcl=G$+qs+PJ@N&Wqfl?(gCZkskX+hC|r*{H`=Qp8#` zla?3xL$_pyx`>xp5wdox4sa^JyzJ4#rz4`wILq#IESBOnH<;IfO~@7A{p^WgDEdI2 zN?+fc8-(Y~(#xcT3&RGFby_1$K5EqVuKkl1@Dq1bc@}@_=bsjDsMC!4yxIik!WZCB zhTQ=39G}<1Z>LJbxjs2uyFt5_5RJHGgfoap^bXKPsKRRzKN7AETM%+)-B#;iigQV4 zl^{9i%gV+RrfuGcS;qEKKoUojOYThJ8l7T#ze6YSAC3M~C(%oS;mtWR+`kR20QWbp zcpo&HW(K6+)J>z+uTfLCZ0Y^a7TVZ^4(?Gsjq&2L%nkAi0PFnST^P4)h(K% z0yO`htZ+4V>F2|OWp7K7m>`d@g>C<>ex)J!8JwAdBzTtTGpX>$heQh1OecJqhUbbA zj7#k+O1+SOt_zVM$&WN<%0eLaN-DpRrWVr2)oQyJlUvmvOO|JUG{AoOu|s;)^C7~( z<HOsx)x$kgkT59!5Spp2J$H6%-1%Ce9Q-?6d62Z5*)Rt=lnp5l+3hC6wNBjhpG$j>dy+f+- z7H@R)GcJhS&~#C;vhJ}!Afq;m6b%~S3$GoxSa)H8x;EQn)ScV_A|UWJS+tUljJ46} zEZry~2{z8%9U#}<~C9+MgskB8;P3R55i zY4)Sx&!aGP1=-2lXj{S!yHuH!IYHV^7k%bOGlC!S&v)4_b4d$I{_5M-*Wt8lKN4Ln zm#ikv!gtH@1>($zfL*!qQhZkPKf&pEN*=4$4bKPPNG=a0L6_{Ws$N=xE!rJRlk{s3 zoh9Y)V70yiG|IXksPgtw^5q?gj6WYtx)6d9bu|Wt3b5Kd??t}d@+taFJ~s9c7*?Tb zmBe{;H36{5>X@B^W$KZZGNNJe+cb%Bo!JFm#307LON^jKRk_r5(^CO$LeGa0$EKhd z0fo&)8YrmZ!*m%N8?q!}GKIcfJU!2_dQrLZ9=whBEIAqpK6#I07U@9|qkAp~f8*P{ z&uHLLfmjL`A)fYrD}CTfi0XZ5t8~teH4*sCBh7XUMRSYQwo2j)MfDL&obOi!6I_Yg1AY&+bWCKXkIW=054<@qE}CrwQM)9HjrM~PFMpPwl>DdK05SB0ndcg}@Hkz-BdIwJclni(q%Sou?w<6q(qn}7 zEfz5uotkHD_X(|H8WF!fXT<|WVp#cj6$SVWK&$)YkVopeU!0t)zeVUPxP&UC=57+1OJEh3Zu7(`+`mz^QVAXddqS7f~ifRwlEL4LjqYSo1 zQAYrJ8&XPm`@>_oBt_?OXvm^~{flAof_u6@{w?=Lfik0vxr`Ucvk;gf=XNh-^P0s3 z`yGQ0xa^94=u)|bRpD8kysISLV8F6w~3P-PsPIze5Ej7YsG)gB=$0fJny{r;=@1?6^q>G z$bY#oD&6UvnB-A}8{Ous1Je9njCC6r3A)l2KJYepI^lyQC=oF((Yd8Y5o6eTu#F() zo_pwfLubbFY5-t24U;GKTCxdrXfT_oImr}uw=q1;a{uGUPkkJ1IK9)I?Lms6;H!aO z5OtbihnVPEZ^)&|tdIYWS5pH=v?8rJVgy?DXm2H0LFrST2O++$_k#by6-|@06sFnI z<=5$=w(-sGpQn_>CBm}2k|V6|yW@Zi-U)JBewe*N!F5*CVULC^-M{#yA5xIST!-ln z%b&O7CELR^LS%0F>GB~nV4}!-m0EUyS~~7o7H%-23ScV2NyY{A9WB67Eb@x>hAM8o zuuhjI26B8AQQ`tfPxv>VaVVLj;6=gjBM+wBNxZFs1izqEToWkb8nnM7ILSHuY;_TM5qPwaIX zJEd?oKW%Fy@Wf2;!+b8gfyO`sEm8^+z&g0Ar-U$8$0nU(kWSZFw@pl7ooqCvbHDjW znR9OJ)A8fr-4GT(tNG}cO@yD(eusD+wOu#Ba1F!GS1=&>R`4($$tcrzKH8Tc?H&b$ z*vS@6+*u=1(vE{0sA4-1WOdG8WE1IiSSb?usq? zB|=;I)_?elfvEPACB99H5S!wsgK)9ZFo!JuAZdq+_|Yv#vIT;4Fz$l`UrYc%x^$0OQBB{ODZ=*$GcbS}>E z>S%h(zqU%+=qv-Z$SCE<=WPLF?rZ=g%4SBNow# z0srpDU2qsnvgMG9{uXmAZblLrC`(JEFvxnII+vVw)A7U931+Ai`mdoJGxi{ z>xXWM$)JDArpByoeNu#^(5-k$uZPwm_17>f}7rn}MZn4x=mXWo@nYTzrnc8i9S*vcV!RwI8=pMBO;A;?`Zn=DIW zQ;ldU7o6!739CP2GFcs-7H&77;hcp6Ox_q#a4LFL*v{*pIGy19^U0ONft$;AUOr;H zbgaeZ6b)0dDd|aQlW3{CF|P_QE0XBalVk%DNY#m7sGar+h=03^5+%n*a#j@vtmI&; zq(dIw?9#@Lq`TelhK-xF z()R`3B(1(`)Rg6YLniS=UZS%pG2RG$!6sPWOx_6UB+JDlA?aY?;c5f3wP3Gg(`5Rx zc1YoLdr1PNFA}$(J0Mw@0xJ{78U%mw(@p*O5B2$~wxrSmeV35BgP-hs0tSXfTNb^b zIfgTvlr?Ety8=re_a+o)$cJknO&Z3z>Qnr{ky-wnjpM@dR@v|A9)2Fl7Qe^(Eaz ze5sN}@F7cuz%>{y;c`5ZgM*dYvy~anKEQy^RXd2uWj)qeQK!Pz+^(vNn?QSL!WY-s z-X}WRr>+=|13;i@(qiXMrqX`3c?8ngOITWY8w<8tNcGJWxD&W}57PyEn(G!hCL%P@ zbq0gP)LV`(TL(^r_O2r)*n)xbvE(3g`b7dxk_ebsfwT!tv11X1KWDGZ+1PD zj3;cZJGok8*-SmL88co6b@1D+n0$t=vWNX$8bTF`OR5+X-jFwHZMd`%y_Bl!ob9tZ zMkbL+4drDT;m8iyGTD^A)4*(MD+KryRm8p0K5ci44g*)#&aN}J_Q!DC`8)*3*Y`29 zp%LGlhXpka^BXF`T~1`eAXpe}wZ9iR3R}4sC!x%Fy}g-gA^R9Db6b~Jy~S&BEHb?7 zW?v`%B)m3?ARr9d(Y9dEiNBhe;~B!ZLOYpl8DQ4}U#e&ERvEF9Rdu%8I69R#sq%3a;{F(Y%rcr(` z>fEeU%h(IdAB*M(;jhvgJcf}if7PgOO)(~lQMlkxMv*5d>#^!!qL;u#Adj{7~4JICOQSYpyNpxpDEumxMkYmKuf8LKIVg>I4?| zb(HZg;jW@4Xb^NTVt_TW9jZG=yXOI|`$2ofy@tIJy?DUk(^q{DBWy0@Li@z4vEl(I z2Y3|PkM7hvdxCzprKoTglQ@g0Cb}XuZ%DLKwv}N`D~+0Q$_&|HBbxL$Oi3pRcmWsC zlB-nuzj)rnGb{W(g$o4#BNWZ0LSZ*HnKxIu3%sX@8NI_jU!?Z*fXhi)UwFYL^2E)s zcC($iL*qE3OY0+L(Hu1crH^rKAJZx8t`F8sA#w__Na@5PO~}=fH5^vsY@7N*)(Vkm@xqx}V%>9?Wh(tl6Z<;S)q$HhEe>_^PYf85!*IO0i;RUud5=K~A3AJ}Ts{Gi56 z^NU2dnK6oebT+6mK4vDj75qMjpcG30pW|&4CkO@XCXHoTBCl0WOL#|HA{?u`@4-+NMWJlbv$vD~y?sZykG<%15kD0I5E+rjxvM`g$*{nb)+{%7L9jtutUTZnW3j#}tu z0UT0S=WMXj_AvXVD8BV5=57UFiRDsPn1h}SPie&?dX|j{A%0< zk~!7^sQiKK*rxveKk+fhD_PSJO_94dh?S|Hv_ug?E%-kmS~cn%J{?}dMmWCL=2JsF z_9I#b0SB$isbj{o7Kn}U1Ic?S)Kkc^Ni*K-iZ1Tr75 z$lrFLrx|k=Edf0#XX|?CDGE@?W1KImem;Gv4O}|0I0Nx~5?2!k35u;^ zBr5q~Tz_!?Svsfj!i;h2L0HMd9DQ}WVBo+KwWZtNcdkRkALu!h0Vi)+#mLvZ@K_(a zCRh0D0KROZLGm~9Qs*n>RClWkKcdXgNPaO#dn3$*M5sqoDya18*lkoBspAqD!5MHR zmRn<54)?xj3t!{h6oD!+*{;kHg&b`Pw6hxTo~>L&Z)-7kI}uU&t&WiaKHPMSeEZ{C08FbYHk)pRU+DiS|!CjYp38f2fmoVTlj z;!42#-z58*SG>{ISQ_FqP#WSs6LbB*jZOsj&XGq*{t{E!)cKLEmOvp3%}I`?kX7I$ z**~T-ijrE?euFPMYDP)Gq84E!mH8mvhdeldN%bS}<42 z+YKbq`D?#dCvoY$^pcU%YtWguIKGIj1K)L~y1l8^rtR+C_BHp3+mcw8yg17T_V!ro z^u~xwC&7z8bz%OyuVYLL}>-?pf4{D_S(fwYfq>-2$E@B!CC~N5OZC zh_NVB@pl@h?oou@JT3?yNHZn%sn`^J;9A)v}I(&}e50dv2AJ4qaP_t0M ztox)P@;VZl{V2ji0PipCnu$5e*&k2kzJ&2M;w`21O zEG)EGH|b1-?&L1+Y)R`+4wlDsZldcCt2GZ#g}ZMzCe9n{nyxS)bUhgB+Qk4;?%>j8 za-&`GjzMRAR0+S{yRXl&ZSEb=<$G0ow#1QFckQEwdd&QNdJnJ>6ppD?bg6h3SWq{7 z&V+sNX&q$-7i4VPMno^*u&KnR!boE*Gq&OvGIO~YY6k5HOn|NZP*1%w91G5%&sF^V zb);{FeBkwLSNMHQ+04(0!^Fw>uN|^936 zAAeF=COE=qwxYWsd*#vYP6nv2A~$m=(MeNdYR5FL(${(dH1_%+|2s91zQA`x0r~*e zf60gsQ3&+s9;K&%S%TcB!70H@hVpJM)UZQcbqkBI1H@8*iUpZSS(h;04MJWFq259U zsxjp=W7V38-aHPsyA-j_Zw+;V@$gYdbp3`3%roXexMVxB!3GLbqFdPAk3YXvEEYc| z;G)A^I*7A`^SdqGbaT2kHzgW1mfakj(g#<$H+{bcwBgbpB)K){nAPAJJ9*I>w--*o z3RXVBq&J&7s$uXdXoTA7!E~Cq)y<0i6Hi)natxjnK^~DlWdVG>X>JtL;y+#Y3-iPq z>+|5_=s`cqinWVlY{UzAgN{?p9db)V#?uz?YqO4oD~!$t zuLj>40^={x%UQ>NRR!V{xwphmL#Tp^nhv%cYy9QUhsNBS>p%=OgnmdSlFix!OSS%T zwZ_rhWaSDv$m8)^L>NrYnU+$wYE|-;UR7Gl!&bToZzLKQwdVk(eX^4(J(5{08ekSs zk%yq--?3MHB1N>yA9q2Pj>TKyq)4 zd>^$zlN6x^+(E<0P<8S~kVZ{N$-mQ}k9U?!%kN^o0SiTlV-B%Co@Rv=?QmdkVUoih z2kv&@FPGHU!m=&{vAfoS`F3R+JK|m-rECnV=$VdS!q)(( zXpV6|R8wTl_5J?8QRPjK?KYsxU$iE|*}BJ?@8m7>L52}A=~iDuaJo=^IH0h=c#CCFn{x62YvTe09p%rvcSmu1^MvTK13I%i;r0iA()#$`N$B*?X zu9x!$vX8>Yt~R-4jS_Ev2#>Qo+Kgc!$|5IL5Ck8A^vjl1>ol!LBZ7naUh1{J0OoI|9+{4GJuwMQ-x!Fe$;@zF)k7p-V26T1nySp5U z7jG(4sD0q9eR$0CANWAcKdCCr<}w%X0Tn~tCJ8#HPjXM*-O(g49Z9^U}yOUj_9pXFZ`1 zxwjN@KAC|5^2Mv@j+i z(n4bcm(yG6pl=^)Ve^iKC+9&9xpnl%7Dz$k{hbcu%5xJ4kq9|uPE(W7b~_Pnmj~oW zhs*U@8WTjF`@&}v?eDdr$}^QNBEf*-c5=}!H2SU=I*sAx z8m;O9V*E-1+mQ0J>vGArEtHdy^?hURhf=jMpDH?PWhrEJ9(N0a!5<>v<_4L^@x7Ec zXLzojtzxPQoFaP|uNT8CVBa)T&=A=Vw(3EVte;6qbHB4?u=0HN{V!Sq_uN{4SN7cq z0J<;-&z9L8q-R{>$*%bIe~4!s2P8sIm0lrQK(&dnT$ctStqu5O#}LEevSzjmkOcR8 zv{l$+d#@JaS|VgT6Z~9=Ck!U08mbj^G7k3cZJAn}H7xb&7AbJ2>+9=U&xgL` ziQB&@xfw}NO=$tqc}8)*H{SIuEd>#J&8XLLcJ;dwmVs$ChECRGhLN>uE6nyz=Y?aX zse_N5olv`tN&3)yHWxO8|L%uujim@2CN@WNYxrxzwTWnYfeK}pHHiXpwurtJLV_}E zmfoE9dTiHDHew?H*XGn(!$QB%kRE7ntKDct6C8JAPdU4?#BFh(=9vzuv?$-YH@gvE zU7&7OYZ{uwqOMCQxa-ttmN<>c*2hVA%3m@Tn~?}HXL08}V$>T0W{srVi1Y`aDgBIe z%AmOJRykxniFI^jlS%fD2c;boalYl0aV)?pvy-wbm!ueWtdj*#g% zk1f?wmki2$J0w6}y<1rC|3)7iCfeo-9gXV;5QJJ5yNn z`fw4t9l|`iI&?XZAt6tF(jrsX!A?2<^i4KQQb4A@cqUfaDNF~q*kd=cDppz(onRS6mBO#wIU$9L}g1;fk%OS8;HcESU7Mf4U? zZ6gF1s&Ol=ib6LFRC-A+g>SC>+0j4^anImr>DmNM&6Q0C@-K!w z6`OT2Xq@d>Sdmy#Hm`);_eWODYPf!A8Z{uAD)Z#kVr`XrUMEQlBYBk?eyo=`mgLm) zpDa3(=U+?oXm6e;Xk}ec3iYkj_x4r_ibIW6^}v{LVTJ>wZ@*+69=k-XCnlc``tcYs zj%+-_PwtNnA$XnLVW_0^xhKa{`J#xRxc=*Ngb|uXfnw%O*x`G0 z1-*jga9LE{uDfBD%ZIr0)uUiCRk-%}U_nl|?Mtb$v9oRFmH^Xhz~jcTYbPj}7}6$8 zJy{g;tpOS?AoB&0=zhjFnZo<_;nchU5a^+iE<+(OlK63cY!$4XT9(BXE7<;)W~`*E zKxF4!E7NRc%3XmwdTMQXpgYXBEs&oFW0)Fs6f@<+gBN|Sp$JaV>)}GRo!W{&d3QfX zw!EnS!i;wu#=!TqT5K~P5K?7HQPJ!nokO zQD>c->c6Bc+o;j=(0T;K409^hhwEoi3+FO?6NdmJ*KjB6CxnqVdt)7-T>_cuHGY4{?`XW15G= zviv|nwn&}D1H8h*n1_&9@NnKSH67P&Q*4?B)Qrf?Fk=P@=UoFKf#nql#^t;xO`s2y95khU`~&~Y?_#u&1KVSx#J&#yD2=jIa+P@#Cy z)5VX2lRuOSb|5Y8riSzbl@soItn$L=ze!){3yitYP+@D>l7pj2CAXmp8*jTsRs6{^(%f2m+9f}9#qIGuv;X_?Zv~MJx(<_uo z+W;#AMMRos=0Y(rn6ZMJ8|f75GkE8-(%_Vpy;lIm?FgDHGuIYPI!AJ`Qoocg7OVev zW#;$895R;zQr1YZRJaiHu#BosMmm)7SP5xWqM2oXkwI5NP3r`&T%*IkS&= z!lQzo4d5@e(NesN+A?r24){VgU@$pb&7f0Or*5d|*eCiu(!EtuOT!|G(0Waly_zmY zlw1o_S9SHH-bT+bJTZ-Nwry@Z0bE-*!6C7lQ8E%(bTKXFX_tX5-*Cs@oV1!|0UK19 zgo_flrLQ8L_=8JA07(SRx5pnQ)~C)fEcE#c>e7!;&;uh414IjH_Ah&m+`43`er4dU zE;ZiH89O1wTl;iWl<-uzg`z_oGgcE|;>H83=@><@T0t71j+r1amv6O3YFFR!uh4YW zwf}a(8&Sl5bo)qjDX={gaJPuKV)Q9TR?j4$o5paH!h&r{F!hQ8cQ*7 z9eeaj{%M4a@aMZkK2kXS&=@%%m-Hq|3?-Ij-ciby+!j^fT1X8fxaXVuM172@e)`N{ z8OX^A=r5Gr!S{w70ayM`#^^rSnOd9M;eBpRL8~DkAL)aWEhihfGR8WZ%PA0z8EkoK z7Sho@!s-SfdIo)~XvOFzvl>bkjEh%P@Wxe$hpjo;iN9NjHn=pN18U^BmqY8sN*(r` zX=Q{GX{zua54E6{(F#MWESCic1mUB5 zxMIaqLb|2@$CVoLt`cgOUuPzsXQwE zZZVd+v!a*d=lWP^bEM|t$9k2o_v&lT55;B{>oj#) zpqE}yxK@H-TpnVS3|7jG**gt;YTI9wMVg8e8TM1&YFHz5zb$+ard+z4p^zIliKa_i`KtrM)yvPy#UejNIyD86~Vz!6=oMpImLnMc11pSiEnjQOAnisT!Jnj-KBI29NSfbX!V|6jqwQv0(P1oYF9^) zH^%ahF3$aQhFodznv9B4YFz9B!&%3U8t*t%yK;AuBK{^lwz$CIeMlHjYDBaqqfMxQ zyHYY(|4ODbh8G^~)gp0ZkR z6lEweJIQaiX(sb=5llNk)>fjSTNZJfdU@Dhsa#-v(hk zh{5CvI!=Ypft}>hDiOaW-*(-0(A28`{BY3S660WS@PKmxE(k;qlSQihMaTn9=}r0>P+cBsw(bDfm6@ z|I6w=4Z<=iAbrIS03q5G7s{!!JKaQrlkgeaygXkx6IM9&VPd*E1P4&)u2eCktZRYr z0;(?7XVS~o*Qw2My+#?TUDzZ;2xh(i1q0bxukL2n@4k15r#c@^-00RhNYh7o^7Vp# z;%MBkj@c*j{;uOjXN+Vx;dU6iw3PepjD~}LcKx~(z-WePd@YJ@754M^$OWrpJ#!Z#4ol8rY z_ldBAF#fLQQn2<#dMaiow^NKQ5MKnaP|~U`X;?+$hdq`AfC~Xs)C22itShRlvt`%B zwb1cJ_RACwBaIzgbFL{>-O5X!I_MxAb9M#qDk8sfH}CZkBS(cm-6jL&sC<$_b&DLM znZA%fux_HPGILYb>0dW=mU3v3`jGMX>I*X@GMeQMdx0nl_?|ZIRIel9HFr~md@Vq0 zD3A|j=qy)9r6rr;d?NcVwNtorOrjEX)AbOPiROQk^NgvRX;Y}U=zsmsztm^~6fz(- z3KivDY_@0dd%!)o9aG~lw+0DGGAOlT*tMz|P-v=Y=xa57AFVq3;_w9Ns3zyGEI|89 zu28#pIH5+3KQ>uzK5(!T(i|^lvLrN(4uq1(KQ8rAbpntpJOZBPNc)hcTCvU3qut8= z2N_(bhBi7JR+;w6P*ogZIiclB+91X4p;0}#D1;k54^6tcZz#A(>_nkb1bR|_76DfS0kRp>a!7MUD7u0o>MHha3@@Vicm}qOcao2b1%>G)9Sk9U{wi(f*kjE4Ve!+tBp=9+{j}4NDpA3 zpp_G`+?NP*0n(%|%J+u}3oHbre?{<)X6&_?QqG4aLLpb|txz~0`oBhyoZY)yX(7UK z#b?L!5HdLKS2cs8L#^N1SePqAlhx1rp5H6+E43D4;@f=rNBsr#JsdGo&+UnsD9)Z9 zmJWC``l;sNuQL6b1?M8I@dK(Un?8Jwz3c&DxY^KDjRc_tlcvd|q|CU98yn`Gv&>2W z*AA9q{4xCs7O*wG54qe66Z>)ID0+CR2JY#YQi8(P=?@zwHQ02_*w6LuyR-Wdvqtse z=J~2Gf($8jW3CtQvzps5=04*;S6Df^W4Rs_*A$|8@+DF?)2v5{5U)e zx0XNH__Gg`et#GJr6XEe^R zPz?6$ilU@r?gduE#neyfI%AyiY=)T!_AC4#0XJ3?#(Ar!^e-<<+}?==yvl0VzIQI^ z;_gi$iQ02n`SBp67=XY(rB0f8Oz=rT7C3Foq6>+GSA*_=>u{sZ^3yb{_H-|g8Ft>0t2!Wp;jq1?5tv#`fH?ekmEj;?B4S?eU&FW(K<4O6Y zc|EfsREj+pe5>qZ5t}h(@3qYWN-Gbfo?epJnf4-zJpu^heBL=0#~m98GUQo#0Ms-ws2+*w}_wMnfGfh;l42;a5}*3=aRKJ1Y$UU(GJupXaMtlm}sM>qPWeO{FQ^D0#%;~1iGJxqWW6Q zO~_NBvLm22P89>=zC!Do=I*Z!>pf2=tQTZ)hvz0lOBAmH9&Sj#c$v&|&iERAe*joO z`SYvNOl^qbpA|^H%B7PI@`DG;7eI0NDu%3_Trr!Lx#p|0Na6w^RWrk4LBIzgP<-Ym z^x-DX9q$`lIM!-Vd`IgTOFW8HAY9y`*aI={2Z zDgq4~(;%aY*VaXzv;;mN{si;(K__Z4#6C)c#Nx8KKHGt3)KAaqeu%_`ZeG!TLzM9_ z$eMXaAjv|lD)B|+KBiCP)<@bau~FEfSWUA1T+IMHZ~Z-1)rmb<80#_ws{42HXKvG$ zt(UW!$+te*ePT_+`;_BIz)pns@fKG=%@r4la~e`8dZgHV8Hrz9ziW`5Xf<#9i6HRI zU$j<9?mws--$=$vgL_tD_P0+Uwrg%;NXR?yR74?%+u}U6m^^d{06211fXo+_!wfs`o`>juxmB;o%DkxL{r!8~}vWmQ}o76C}g``V~4>mLCy6wg) z=;zgaIY^B9)*X-Lj4_4qdV*1YPb_4UZbMi8BKszh>9n~ zMVHc^cJpiZc)spDFYlBXuQbS~noIkdk$ynXG{{s-2-Ky>&yXAn8dfG{8C^&1&3Zt* z)&UCRag!&ANLu3V>@E}xqJdq^_s0W9PYXR{eLlN((Yd(MY(0?NZuP|4`i`)dFEqf# z2Vl2UZ|)xMm{L7=V`U?Wkw%zqy3D7!=lNbhL8*NUSA$@hrY~waey>#TI}@%9cEY*h zIEZvI4fe{!MtBODr{ zFu`LyZ+IIo|7Fpv;7kb3X2pa(!fRH+^B0pvW7$OkliyEryjKlJe9X~&@KHZ>vL6fm z=>(ha#44^v<^a+2qQDIY50p4lR)}KBzl<|aqZigCQ5Dhz%L92%mVL_F{;tt9O_)s< zr97~Sd@eP+1?R3H;bH69_|<Zy2~{)nnv}jQ3!7um z4;TaKu%CM1=|C7#$chfG{^^2&hWM3oFFW5-2I@sM-(}eUHr}4H1PKU;`YTdOJ>5s$ zLJk~%fI|0eNA|rXDREYyFqV`qdZY8h>Hn~?rQ~X@?A#}0GPqX}b0u`d0O`wP zvnfA#F$gmbvXX=%M1IwM6mc$wdD>gufGO;0=9bBK+{Y@)5Pn*eJBZb*L4{E-DhrQiSHuD=4x*ns+ffSv-NmIcBbT{MIf zy*%wn3bLSgh5l}URDI8n7}S@$HpJzwCs^uz5RryOt8No(E3R{BH#Om!LKOD}&**^s z5cH3wU$p>J!tU8=-)KAfN#~!p`%o1QaFrdgAPUGFnJi(;3hF`CY{3Zhz3#GQ*}kiWGvORX$7Hh8Mg6vk`GIKKI1a@@sD z%7Q{@J_M{;HJ!Ts)vHto%|$a=?H4BJ!v&D~108nb?jcBe9pLFqI)TjaQT7#T>`5m? z%&a`9Szu^;-37hCF)3^$XUa#wmf~Y8Gg<45)OF}?dcA{ti?ATkfkIw=3W?gv@sM)Ok zx}Gy>7MR@6bX2lxipMz=rl~iwQoqFV@Nf1hb`C!YVVf-N{wG_pted(}N{(gQq|1TQ z#PVI~XMCU$c5wF1MC z@-(bLyvPvzAKA>wcO0yA=Y?O)6aZ`{!+WRZ;B2DD{-OfL$Nr-rX8q~Fi9#&*E)`f> zwVPe~9pQc)TIkZrhK$`Ejjl)N5HkRUUyRN#z~eI97_hdU&y+wUFZ2njH_Zan08@7u zt%o}g`=s9gVR$cN|9QKsfOV>MnK0#lX>y=}hteZo8Mel-$b7^}K;4H{GWW~|fx3=`y|_I-H1gf)E1BJRf?d^jNU-4&AA`3zn7B)WaoFnBYAV^! zULEinV}(OyCORw@B|^+3ad~c(e-_Yoj2*lHLqNR0kp}in=uoWk1$EPbo~9Kuv2zV* zh!tBd-AvrYFhmU^EohIbgFB6@9OaW8>sWg4)2U%wW%|0x=S zGZNFWFR2cRyY|F#7i1m*>}qniwBvsAn2p*(CR2{fQzUtZXKh(-r3A7=@Yw)L!#*q0 zOcvmK`0^b6Kfpqr47hn$Oa!ObHSZgT^HF2{o06Tt!s@$1 z&F9P6{YN{ahVz%xHH^ZEhXIDyRmaK`Pl7g-RW`6(C9myKghHAMIAM+9e28l93{XRf z72GEG|vqx5=5i7dRe7F3@nQrV!`5SkuG08O@1;M`$@yS(kJaR4Ec)Tr+Nk> z1}~Q)G5K`pM1yVO!q3#MV}awVuU#zb(#{>xK@hKC)Rkpr*Jz9b!oCHLC`w09S5e}G z0#9eb(Id!RQl+Oum*D5E`!aj;h7h_6Ps3C8J+mC`Pp_v(u;IL95|DZOf91<;3bh-R zZ?0d>K@zUvHHPO4dyOIM4s0cwFOLd`Yd^E~fvN}BnC?S_U*`0Hmy3>9@_U1)X=t|z z2PW2I3bEx&uSu%y=V$Eh#|!IQ=uLaXXW$_+r>^IQOnCHHxPIn~Wedl_CSvL^iUX!j z71^1)9Ae7UBSBrc?z;RojcVXtP)U3h!hlcS1U#KjdYkV?ouq)uFw&k!Y>$BA$8{q_SaUc$}{7on^`+^&9D&3c9$8x)N<)^&& zTv0K{-~CjdPQY^`kL7OOVy6OviqQKcq2;rKT7s;`5v+SI*Uzh#Eu_-xlc1o~7~oAE z{>kC+3k#O_aFU;CAw@(u-6%?%0zD|y=m1g4{~8*B@8lk9Xa3P>jK@NsA=>@PXG#WTe1+Jld~>0Ilspw;-f-TSs(6Bp^#Bnv9<^2*z}QwH zkby!-P^RgOqjBeU^u^jtTtF9^&T5_xEp_`|FIBT+uXxb$E4;-N`Gh)wu9Q7!u2ufv`TuS{R-yATY#yHExi)+hMH zfKH|+zfCOmy2EckXrr$JWQ>iQx^CK;AlMfGBjqB*%amX@^M_&7t3N6*Bt=bB#2!ZI zfB6;0GRB`=#(@g;nhfS;o6CEoW6K0x6Df!H55Kq?bSy^0IxzNZ>9ck+n9H$LcSaO~Aa+Vufh1>HPuUmr%q9Q$$ZoDQN zjx!(Q`lld2k^9)>FtTy1z?Wsbi0DcXEHQt7QJ9g)61*Aib$iuBM2AIQvTnksA_gcz zU$V%8-TQNWOcd%t{1oY}f){1DX->t1D2^c) z$9D5#y286HZw#O3@M&vihAK^8DIzkf6K7S4=p`3(oX#hFK=5u^o~^dlQj7#Ot|C{0 zEsfPNyXUtm{7aBb#twpRmV*KG8Px2pHTnG;1A5@?6kbE#Qd>%}6)pIhp8aznfbBG% zqC@IVEPEr5J66aThQOo3sYk}le>EM>FLPc6BA%q@Z&a$b3v?=s@Lud81ozt2Z+cn31Uhow)%9N|B?!I-q%IjnEZfi_g>YKz zN<>YF!U2ykS|Cl-u2-eDgbzn*czahZ1gJIq+e)``@D7eE9$=U{Ehu@)YE_nV8v%fa zc*MEE&x=k~4Pv`q3xsbAgsbGtESHa_w&`Bhk*jbA(PRAj`XLP@F%AW8Z#C955-6Pm zFyb`2`nm`OoS%(D{(7Yv9TD#N=bz9XgQ=Tbwt3^lJ1Dy*-3HcbUbhqw!_eYMD!2gIL% zZIXq*T7s}s$D6_xeFyT4|8HhKE5%B+Q1>^;Qgz=4prf82`2mUuXS!0Kr8z;KL=;n70Jb-nOuC~+XhDL`#^+E7c zm23Q&s_JIG!(yVmcG5^{1L^a}?8QLbKKr@!-?QC|#h6h>ga!8sU3epPnbNDnWvJ5e+_cy!9mXj@u7r^!@az#i5PSPzoz{fkDIfxTU zATEf8S`_|Gt%%kNuk#dr?&^WV7A!U;Zzg%_zV#>>eS<@pm- z>1^b4`4ygedADxjWXLE8C6VO`AUGkjp%|i(C%&_m(&zh(dQEG0&1n- z^;$Kl^Jy7?50Q|w0G{TlR8CD;6xl3+N^_kuB3%m@rJF3HC1*mc1Oydz+T z@g_44L6}!MkUt$bDi@347_gT`p1)!nU(64*7)+a3T9<@kmVu|;T}Ggy(v#rfSzz;Y zc;87YsXeB;Qr6+q2c|rnP^!Fn_Bw9qhZl$2u`&2S9v3d@;hu ziFq%GpbC^a5el5jkDNrr>WWehW&G?)>FMAolExtT(MB;W47{qb6&7bF6J24|0N{BI zb~e#oC1|s)8Ny}iW%|Xdrv+&NPb70^WvaD3mlGE}{Z06WY@uB(cMz^bG*2)XLiHtO zHNg+xFT$GEx9$rXvuA`|Bx9NFVa|UBmxVI^7W5}AtmKGKm7&QaB#oeqnJ-s`9l^XG zbrbAyECE*@p(1DtPE{Xu91&zv&X55z%Q2{sPA_e{6_J!0R0sl@v?c89*-z2tibI&< zjx^|y2d+Ba^=AZ$sF)>-x@UM4T2|k4Lhmg$;}U2|MOPEJ)bp^vg92B@Avw?WA^7^v zuaFCm;LgQrJ;Eop$DM*xCq|>-3{%!`I?g6Y(YOjSvdADBeNQRggn+P_I}9R0jWX!B z3oRSN7ucAsH-09Y8)VCb*N_q3L9-8?J5@U%7FAX>A~#c3DUC0bfr8X1HdqN`T?eb# zK*LTJ!tetU>RL;I|9n{AO|^AuNr;y|Loq@aqn!Fs%8wy~%oNh4uWV+gbdCO5moD_` zOkrK0(&?5*z-ld)BkD#N2h@ouFj9=JxK&>Y7&tfi=WPoS7@kU6SyERp8oSf1lg*!< zsj&%n1q0G^AlKG_zbWB6qXi(x*9L3$8|Vda5{8eRx+-THtozLf7UuzFa;q?2;zllF z#0zh+9IfF%D42{49%NK?I6nlcFfwEYKAD{qNA4pg?QSsarA7Cu2&)#uBK!;)6oUkr zp{lrJjDB>KD{Rkq3d~BQinvl+uxt$4M;KVkt1vdjgI|L?Hv~C&OvlaUytqE zL!UB=BYq>XjSRt6^z9KO)MLU?Dz3R3Zf>d~en6!jc0witInPwlKGx#k#I3+eEXaG$ zB42B5&30OEpI7M(^MduCRS`bqJ;XumkRVw*hfv&J-!C>3nY%#WEU}WJ)ysyl&xENg zXTS8)&Rx~}KU4F-!qAX$GqDA5@xpc0)X`2IO~39eB=j%|7h%Gl_2h4ksH^D}qw(4o zy|Rsvk4;{!M)nd0CHZR-U1UFfO2Y+eQ8aB}$%jQjI#zr{pJ8z>wrbA9TIBBs^Wa;3=b8 zO9)KKIUZi2K)h^j)v$b4i4MegZ%zt}9guLG^+Y}(8~Sg`6)0poQRx^#m7&Mj!+%wB zwuh|mikh&__31inPd3UtF0qIzaQm}FVHHwSNz$wCy0T2pQi0cI;QA?+tiCc)* zlHU%lcF=s)WHts09Kn4gKQ#yt_b%x@Qt^6&I9#1O4MZK0?HwcsXkgS#HUG0I*bv?g zn}Zg)D~!9K3k)wQBc9b>89}ZzLuf6FwIt=N|5Lr%IMFBpHQhhtTxn-`^Nv+`X2zwD z);25;H}BnlqM4|O{AQdL!w=v9E=cJE51RJM)18-{aQN)5L4Dv@Y1Rj@=rMU&dKc)} zJt2P3Lc}>`@b1Up*;>rvTAae7AeV>Pa2A4zK-v5=%;vB{B7O0h#AJuHPJ{(w)SM|a&vEm0)+SCOWGZ>uCeCp_?$s_55xqD zO4^+hFW?-fai064COvFV^8BpWIstvUB#1pH!jf5}I|S_s@%61qd<~3xfd_LS^as&Z zH=69X#=p)>Bn7&pP+{v0UO|ny=Xj`220x9g3yZgIkdlIfOAJ?)z}GaP(ANW@+_Usb z!svVOrq5Td;WMxNHPuM~8zWHC$21iCrb>PTDmjr^*YPSIxo8nQ$Gtq{!yFTsGHW#@ z72xmC*{31QcA^@{De$OC=B4cYHk;z8SRO&k6WM;~zd+@5VwCQv-P$g2Tr;@ttf(## zWae>|`#u0Q6Bur@UMB@emHcQwqZFCjRUe&QH*57FML0q~+tR92h_Rm zP2l#A;+~DM%!)`>y*w#Dn7YbRYq@P!M8#uyA%((}Tx$oq&Q?Ya;aL9HeslJxuHIM2 zq=%foj?w-8!Ke#tFu&UnlHOmlPXlSL5vL%G(Fz5Lztiz08-X(ARn!p55Jr2t%_I{{ zwkUQ=>cmyn?$$73w$Mmg>UJb@AvVv2%k=a5%jb%b-C7+NkZlvs<6!&kL#7=9@_CMk zW6#_|x(~A_RI`3%grNoi%0|1vd-u;q#~Xm7J3?j)kP=BQ>}5aEVjp06+I{5WS(@A9 z*$Rkw(#fMQYR!kRy5-O5C_hMxiPdIA|c_*qt3h!Fau(a2ha@1d$`%t|Y%=$v+ zNG>;v2LH#|A)gAD*tr7Q@}t z;dCtS$5&25o<*DVKMjD)%xa)a9MXKRwc_@Xt8)LYL98D8g?Q7CrsLbN+sk+kT}wJ) z+%N$!wn`4|aX!)rvA(0w)2EKRWFa-vF9I&>xzv7MWjMshye!u;Q77$$a=mKGeULo{ zSANAPu06>c930i~?&MWf)4)vNwh1(0_k?ATh%HsMiEn^NZr>Oizs!wCh6nB6gm%0= z18#@`3t+$y3h}4Le|gTnP3I~Aw2s5~=FkI8nFYf$-cf#tWrf|O9>(fHgIgP}E5*ybMq#`gd)z&t#Ry*0E(Fz~_RNQV4ETfto{W)@5s7JR!MM zpBE|#9A+-(Lc*<_V3`;`@TPgn2U5~Xd!(nALQ8^GH*fY8Fs1Kd1UC<;6n^~SM)-3s zQU)Pp2Xziz=L_xZvdnrqGlL_lGYUJy5C=2+6LoTBaRcd8A)pzA>&+r9p5FP+Z|)LA zTdB0W&>$8x#8QLzutmhs30NE}6n~VCGQ@&I<$9Dk6!DUa=@0l`rt*=Vy3D-F0W&XC zx5O(C3;qQSJy68Xqhdio!TWD=jW41KWe&GnC8-puC?howKOU!8ShUP$fIqJkSke;O z8#A*}xKpBd5Pny;y#SLY+!L@Jfq}IBk8XM<)=vvE9eH17Gf8*nU*AkSjy6G-pSvI@ zVbY!>$j}4j$3-oWXx8FhS`<`O1Yyt4x;|1Sb4S)Ik!lj;@TY$`Y{YmT?(Jrbs}$;} z9^JmwuL|-x?DS`q^U~UE;GcwhzD~B@Iju|HtqI3jV+$I1Eq@}2A>A8~#-Dyd>Xxo5 z3~QmiUIFp-@N;t+uIE&);YZ3s2%6D2Qm;GnmLhVU-&WF-m z2uiz$+cTE9`(u|*bXm#N>W@=@+rGvlj>kV?qAe|K^IyiWlkGf#dl84MwSJH*q>yV> zur*Vt`KQ?mvK;p6mbkZE1W$dFOx>llw9o-FkY%}PJrnqRz>pg}G_9JQf*WQhGM%eu z#CViN2sZ2b=wK!)H;EI`AR2^bxRe_!s|-G&VtQD8_d~z=7F&t3lLBd%LHH-GtD*d( zwC0lNc`5XYx`kBA@XHXxwJu+Lu~aB&qpK_&8|Evwl`&QMWtl-3_@JQ2tdtcpYq+?z zfw1RGH#b zj?T2D4^ca?SQz7jF&xgY<7ycXd+ALq!dgd;Mi%>v< zkH^^BCLOAEnf}fSWD-=<8Q!>OY_a4RxqT~kaQv6zKP#mfw!Cu^{qe4G?QRa-cPbcr zVrSeii~yr}w^6X>CS&4?5)=`Z@Ig;!`jFEc|5jalf_)BG!Ke=JTr_>IKW%JsJ6ytu z;Xu7cH_qM{!FiVnmViaYSL9eP>#f07C!{1I^cjJ*3Th)>LO)7CVQto{i#xqQfB= zb38il)ML_Oy$Hv18k|^RTK0TOBdTZiby4>(d30ipMrb(Ga~*(?%ZhP6tLP;3j(trV z5qIvcKy}#eM%>2a8U@kuS!1rFe zz(TuJ{>&`{;Bq|M8sc8|A^0f1XPDwe##?gcG3}!4QkAX}y}fm(f8xezDp<>hGJsP< z{|ua(+$q``H;>~?GmaoI{>U=7&Q0P?JifY^sWnH<`Kbcg@mnlTP)`zPVfNGOreWYyR>eI0)OweKS z8_$^krOS1lgHWEQN_D$f4$RStJ!Lw8yEq6Bc1uk8aKojgO0JG81fOW7 z3;}C0w0;g!zLgBiW5ata)O)_`YQytYfUpEjVN=LTQCXy- zD)OOiC_qgDN??Yj83}a7pV^zGgnvr=Of?$@`TqFg_W800WWMU}s-a+krGOUbO;W+0 zhyl69ER_J2Zozi636{aDLc5QUNM{wr@d-I{f0J`1#G zipG^inzp!1@u|J*llg=Gx&O0NE*!Hpv;%JYpqU_Z&+hTsz4m6B>iYutU6<<>W*&x< zPtLko*DI5!93Hk}x3hI{&m_ClNnUFbP0$M=al{YH z@4fw4y))&@q_vS{vvDM?RCKsYPhBXJBj`h5ys<<$FvVk*dL8Llbx^Jk;p3lVjXTCo zqvUZn?)Y*dD=D(EIMa~kcvtyqaprrb1BjqGhON(#au2F6+4^0L$8>@dNon@4qu94U zI6Oo8Mc{2qzn7fYa7W<(VQxJ>!|>f+bmhfj_NKo3*XM|Yq|s^!+l8kkV+C#tg4+Vt8{be9=ps2Nocj0?1y_R24F*gK9A5 z`&YIaFJ}dwW45dQz>bO8ie2zgO#9^-_Zw|)ei9ku`zShW+MY>rqc}{~MD=ru_)1~7 zc;^1PLC%W|Xu7LZbJ5D$F787KM;)GAO6t0!*OgxI+;}MPyQ{Cfr1tZS-FSalQQN5F z-+NOq`M>TCDcG(zG51JjwpvaLW~}eB0+pdkZD(#rx&z=lYmTo&tzJ%8sMg}(4Qy8;uts6N7tD{dR$-=vEI|-Ef3I6+pGw7l zq2P(TT{qvHg=>^81U5MV&v^`Cz#t1j(7i?Y^DfWrLgytqE9y+w`tzCi--56UV4v;H z5%eYhr6|4t$(VMDnIU8lJ;&t3-Yp0!YM3A}Mih6CbK;xJJb91e5iu33zNh}lKk$<1 zY^&KGs5uInoJKe4LQt7e94JW9wGw?xWHFKE6z8xhY{mbU zm><$*XbQq>eQVyO#`2Om-xg?HZWYZf&rSoRBT9Zs?N2{TSZV+f1B#u667xxqkw`4& zZ{PnUUWrfj^uqGvljij@B{~LTc++VL_9zu>L$mbJL`0Ym-1Bm>M&S4iMl3~1M&rN5 zXVfTLK6&YwWjv|!=*QTkst;YCis@-E9}%nZeVLi3iAK~6e5K*>rn$Vud5xXoA}S;% zy7q6R319a*4gwaKzU^$7ZyTlRq{Smuoq4BKGFD{v>&SCFi;6g^nJ(d%!ip9u#eo@% zp5C8OX+(KkdQJx{S{*}UWrv8pb^O7uIm15uvCLHZGDEcppe6vT zRdGh#EZO_39Got}(I%ok-?MM3NTmz$5VJR1Hb45!nzj9`@N4x$qN5qvxV0Rnxcb{h z(P3+^0b$QkC5Xs)(nVmRijP*34TFQ5!AE|q)#C;JA=olsBaOsN_iP5xq}-I}g%B2w zGJYIBEM|^@QOea2f>!X=q8gkFhGX5g)jd~5r3{3Yw8P#3vb6{k+d+i>j>3yNP`qC` z!dr6qeVRGSOHQgb3IwYy0>b}tdz2t`ECpciKT!&Lp#!9D{NO999;mk2;zC8jJvI}7 zuBaRQ5s9|jbFWB-zNZ{TTC)yQ#bo77VQq|SG=tlckg_x6#~JxEyK|VNqj}@|?MFe;#>Nw9Mv0 zg%uKee^&GF6x{N(q_*uI|NSG(y*|gV&*-Gap4g2vOjT?o`a!VpMQ!J_r+4<=B)GC zhwLGK-Sg$ogi-h-=Vk=4PTQ)?RNLXfqgKf;LgPbhj30j6gL=oe+(3Gz2a?^~W)kl5 zig7ieP%V_1#q0tW+R~CVsBx;SXQUM{@KC}q>Rp_SeG(1>I5s@BATiuPuALIsRhy7X zjn0fGH`+j?s7dsQRe6sU_-MeX1ih3PMP974+I#@QP|WZ$hEAhko?LWhgvX@K3#q?D ztRT&3F~LT5I)Uy0MrD4U|67CiXa)*(EnZa4=;1g?A276lW&GQB@#LIF5G!fuyx(= z-RjngB&#&J7%Ir8U=W(r0)vh)`#GVNBTxr7S^P$eUU1<7f2xUSPWD<7^A_`vr@(!` zIb>38Tr|0U26gU@*r>tW zu9`6mGb}LJ75X|=t0p5qiypsy%Y22=kel#^T$S4!mlB#6$??_y_iRp=)TLiB)caNh zpwhF&-P>phvC=iw0IhX1cY8Myfs^U=lZR-|q)!CfZOJ7Tz5I?B!(*JyO~DMPi-5oi zWwQtUkrWD$uVGZ!BmIqa0i;WK(=khia;r*iz~kkng%BH2l6}WNg^zQ7wK$|oz9TFa zEi_C07A=%LbyRxBnPq6Lc`oGdr3Xch79WfgS-lT_4 zs1sqjvDaR>xPyj_jU{zr5MT+8)M5b8DG*I6ubg0vSgtLK6S8A|?9Q~W(Ux*>ouLk0m#KeH{p1Oc9M1K>JVzXHABD}vc#7}@G zHLU*Kn{Jz~ka*fU2Fkq$9{Jd!386PmZ8q!rX|r=RuHirF&Zc3zq!)AQ|AifT_O#n4 zwhAu&*CG5);d|>*F~231LLnfE93t4#&6<^#!@Ze5-uHGRE61MpiTW(ogLK8{N>5z= zr9JKaQd;N+TI;FtOQp<=tT#PvK=sQ@BJkpacK1Z>|3et#2W80&f(-Nj3a_?Q21Gof z-SFx(=i;Q#r*kh?DoA-}y8k>Up5ph04vqd#2V;;d)L<$-piyJ{Zj(;TA;!NpP}K3p zoQjq7^S{M7Wp30ui4|U6sfL~)y`ui->8nyD<-}-YiAEsKkTK*Z$e+AihKprbKdtq^%gkoUjI z_1j$zB6m^cqs*4h%8r&Y5q{$?F6aXELleq`600@Yk-63>nO)MTTg@O*qk6wc5N9?% zvGnBcAfmD@%_+rzt$eUoAOC2|CN^K8vn!Gj)b3yw@U^eT3ra?l!pTQw0_+1CdDhxl zI1E;fThQDlC)qD2vjorlq9mAW&PYg6SL?ki_)SMzqRbS?HiC;aLb}JVu+Zrg8#Gt< zA9`ZbcdsK|M+xkPjaxJH^rm)zn!@h2N7hR4%gaHw>fmN?!5sLWNgy*k=kigt?Yc!i z&XC9QxY~dJC?JBz(RcLTmY|_tk4F=cT)MH$ikX{kQ=A6tb1>E-Cz-wma$Bb!RNp@> zNxy<9P<&7J1FpV)DEjQwMt2p^O%@seO*BJ%>O{n`XH-=%&-()Jg`fOOFmv7q#nvK3 zu>dMAoh`L9Xl>W2PA@gdVNIb#F2>>?_QrUh}Prhn9 zRvSNBO+%2*GFSEA>~V?u_Q`nSgzXh_Or~kOtM63Yn6YEAS{EV5a*~U=Lf_UrP=!hV zx{?X(udMQ*-a1oL)n7e5FD6YvZ|M@1n!A1u(%Wpo`!A=VbwYPbYEL`B#N`*MiSyW;XMsQ=nNaBmXVeM@ zk}l;2@F`7W0&+Tc3)BrbQ6Sjbd1^j+0tSU~vUTUiZ^^v5&Ap(P-n3fYz7#S4cpqk? zY;ds3P9@NxZ)~{=Xyy4@65qSM4AK@@z^H~BnZv)bef)_A`2!w`_^~}{D^7SuYSd>T zCs_4g!EqEm&y|{Bo`_mZKoZmz-$LuVGZ2f7i*~fnjD5e&4}BPm)>mtC0Sx>_mpC=o z(mS{DW%2qF4?S*g4@h)*enc4*BbR&W*^4xKI;Lmw>418rZfpHZ$K47(bawK=VK3@w`4;jzN$UEqceW)r2MYi z$rsAK0x1|y<;D=fUnUowH7qIhX>ZEzwtZIZ|0loB$kC>5AeLDiv`w(X#^(R$;i1zf z7y0qHwL&ZM1rS*-9PtUUnh-?wXtR6Cc`+4Cb#XMJZsrFHYj8Nh{1V`uO#|2xmMFq) zIQRWAQ&8Mthr7zJ`ld=MY-UB@f11Q0M~0IdqH(MUDy#1fAqL>l5;%ADnV6|e9vrAy zha-FwVTi39wf-uAD8}?rm3jVFqyxF|4_Kubm`Zs~?YRiyT^9xA=*ZRY`~d!hvb?_f z;R(y#c2&v4-DfXoY}y}5mV$i8x6QD)j}t2zBYzrwXOT0kwB}=-FnD<=3*Gv~v&w?0 zScxc+RpocDQQB^}0}3^Uag|?4>n}DuE_ci2z!&4`#Pd<~zDE~(ws;0$ET1c%7bBN( zpq&Be24<%;C&6a{xDOVf?XJ3Gm8Q4^xT<5c5+5bNXouUf8*^Xz11s{E-5hlgLL zxjDT5DhRxWwd;rEdwy4)(qy)Q(IXup1eFVd7N->n8kf>`>P?W&{ShLQG9zm6U)X?@ z&{Pld)YcHeek`jz-Ea47)EZo#X*#NAO`OUeZ1Y%X06I58pB!bD*R0t0$egx_HG+tG zjvDc}XKO;ZX^E$_w|`;|Sa*Tq#-dPT%)#(P`LzV|^cN~WbP5!=Z0>}=qfG?R3-i&cJ?f=;0oHiP6cx#|EKn~2;Cwoc-7 zFqkbZ)r$e|O)n(wRdnf44U{SkFDXOkez1bK;eu5st?nJ6t|}+Xf<5ErTmXSwe6C%+ z+(=zwrcFj2=Djrrf8N6gP(@}a8LTm39ku6w*&PJ!mdk&%=Sz{bxCey9X<(uMzA2nfn7|aTN<_t zcQC3Y$r>J6KmVt)6;pg8S4xT*=XU?)klP%12X;5}u7xS>SVy0JPH+g7=iXnkiLXK!&{r2U)BGx zB?_!7-+o+G7B_5AHz#H|>8`{5-R`4+TY2pZjUxsKyGm~z@&{1g3S{}vpZSgwv)JPv zXN`i6336Ar05|(MUuS6JdH%RvUMNGf8r?I1QP*1HHlF53LjAJAsVFE8o zGLC@Zi3z76ZA|BY9_fctg*obFG zm;y(~hA?uTgok%RQD{@q*2KovyuCJ`rCYL9K*t;S*Lpf*aAdYz1tgJWQ!x1*4B)X( zE1H4;SuzG?4B@YLqCbrt_ExW@LL4nsFCNAqC%!`D+?5NRZIDucKFLohPQ9j1>hkDD zTv*+UZby#-nR7S_ey7dkP0(628KalAsGoKXqyBlkkB%y=V~93T{H$8qZWz9`T1Mzb zPqM^n`67uANvyO0WL{rlM2xtvB7&|OxwH{UVMxVm1FJU*@|dUqRcR83?FOB;x$~G) z%9Z+3CXvvyc#$)83wjoOVP4X|2v4?eN z%vbbAK}Z{rOh%Zwkj9B*H}|qs8s?4mv=1h{kG}hhHH4ZW89T}{Y#j1Z6WB1BwEQLL zRMjztkFS(_A(7$zU>_nl67{Lm?rT(Fz}5~DU1bnA@Mo-7JF|^9?Z9R3RI?a1z+P$> zgRagi(6dv4^~?yVOWrnfP6->#5v$6xd3i!hE#WNrrsS!66nojm3mJM%iY}CQzB3tw zWVxyJ9Yh8h*%Dj=s7Cgc$3-WmT3J#KE4iXvWBa`EidTpCj0OoZ^IE_GBai&810R47 zu}krB>ySG_#LWl^b5p0CvG&6)m? z#TH1$FFASf#7SsDx#=vypl{LE2SzrB>gxVR;@-q_rV=*oB4YE=mg(k3T+EBkjk3ar zA70?Vt|>tL{WIsGsn6t3)txyXVvuQms&y)6EnoB|her_(rd#4@GIKAj!X^g0^D^hX zgMBLCXS^yfNrTR)N+Xfjy&cO#FflhW@XWz2#8##NU{)=JDQIzCJ?&0hH*wP%#iS#{ z{h}qO+ZuY{8hI=}bdhZ$kAgZMu)IT)DZ7Nx*ablwbH$EyH5ATee@M*)QF@N#kwF7m z$wO(iDG5t$rn>;k@cCB+BNbC3(Oh)`^wDv zM--XEIo2M=O79gNpolimzAqz497=(A5Kk~CyhtJeeKsF&pTfHHaSo;dzNEIUWjB?t zO2>MSNP?VILMYfxwlL$wwM}s#@=RYHwVleR1MDHM!?n=3-njx3D)_9acAgTU%7hj+ zCtnhzY5cXhH#;E%CBK}Ahv6f75C?~Im2-4Mg!QweOP$_9&lCBY(|*hrLWyDMX_#yV z<0g@*@aKotd%L4h+Bm5%L$Zsuiz&@$kwKnGy6{Bt_fG_BvyUB#B)}^zENY)P`s@R1 zGr!IvT=44VtC0I}z@;&HaZ0>`9d+p5YSRt zq)T2S$d4cD{5E+I8_^aL*x+8@%q51>K|s~7{$C01(hymdwy|-%h?e~yv5Z-TTS;=o zFS)JK1&I?yl!A1ni+A;D6w!I3bPC|TaL+@$__@yUh|e9$#hvhBoi=LH$z_0ea&srf>Ma_>#&KYhhYn?zV|0`w~5B`K> z>6_Ja=VN>7PeK=S#FI}mAetSxbcNDsPX)+!E$)ozjJ?MO)6YS?Q+>Z?9$Z0G_7)oV zd&O^NXQ*60Dq$R@&|F}x0(Ba^3(B}AqH9h*2hYe1xa^p29f^gMzme9y{jLerL5F+2 z<{GMrz(iWZppgH%lg7pbc!lf;l$p)X$QuA$)41dg`^4`eqbXIyJ#R7Ce6(B8q_Oam z8!b_j3J+moI7;8d*d;5dhZ&lO&*W4!`5fU`=Vt)rEDA;24U=^ER9{CX+)_B$4{jxQ z#4cL_%iI+-b?HYwiuECuL8%t;=sGv3UknOWAUA6|#(mWby#ij-L|>B3^;yz^A*$J>Re8C-ynA%Wb7*)x4K30ru@MF zKId98_rV>W0%w#|2Dk13D%=?BG~J`v5>W+lY(kOyeJ367%o7i#M+qA@&e&MSB+bhe z5;9JcPX1MNSR6WPT*U-wQmK!u^srnXGf4MSWK6pHg=UUV~QWn|Ik}iM;;Gi_0J`(`@CfKLg&YT+8!~nGj z1*JkAuFXGKz?~@_z=GvMc3{r*j?vEv`HqUz+pD&L^BKvMK((u^KZ8ORl!K&h|7x=V zdimdGjZQvOpY$_bF9OoG!{8DnuXE-T{GgXnj-%AaI zki}Iu*AdEtt~E$!c@!pss0qV7PspX?%IS^rHvfLP6_Q@=kwAkZcR0LtX<1*6Ha)?b zaZ<$aDC3cQn2G{|VmIOfzQ?8S$Q~a_u8lHd!CRRCf*(_22+59%1Zc-q6 z-r?}CdL1)zez^VWdRLHe>rIfdER7y8e#LQ$(Im1tGmhmPkz)6-s)=e{$Fi8Tuk#E= zi!`pq@)KO)4Bsw44LeMb?3}xZG#I|34jXEMI2CmG<(``%VyP3~&4xtOdQh*Z21o%- zFpb!!1%rFY5}6TtFV+1YpVkNFNk0N-ByHd?p5{Z-Z$L6>YqFn9Rf-I`ty<20ug@Z3 zH1Zn5Oedq|^h{1GD}zTOdO-lWuellof6>+K+5nM&T60KgEshb1;8H-69XKG6R^~A& zhC(mQxJLN)CIr62LK3}`+&r>D;UvH%r0Za(Pb^^Rx89cSAJlbSx+Ed4e!fRwVfK>; z@I5K#`aWnicP+kr2f0hRXx1x|@wG+Lwf)GFz=YNPEm*yoA0)-$>$v1{=FX>bkUxv+ z&J6mV?;*WhbV25W2oQE~^BGMPue3KxIV)x2FvgujrSl$QQr8zAH9-(R4z#1l5=(z6 z!IcYJS(B#rYByL8Hbt-t1>)95IUN)Gt|pYSjv8;MfkdwL5Y33Wbzl<#`_j-8V@xKfztbnCOOD*Upn^%H2p?Zc!aRN2}y8A{b0677xOkUJ!h=){*cDs~fi zQl*;LvYMmnw((Q_9}|^m#jDNhw8P&KX%te((r37T=%rCZ87_Nou_cUINgVaX%q&)m_onJv!9&{S~i z#I{G4n`m3Ov~yerV2^O`Diuwgn4^WtjVj@F>e;6-nb7W6DB@nd%vq$9@1^XU1(;F4 zDk*&wj)8~3coyjBJ4ehZ)rsKJ5FnAAR%&^$&yzcHQ8UvZi|F>6@Noj%^1oA{7&qLQ z*-lr+EcXed-NZJetG6QT6`J;DQ#tWupt|wyZgSBHq{KQ)1vlMU`$pOd7HX(n3N4xZ z4Ch2{M-5#J?E^lxtjNo*8pYi{UF_|=Ck@h7AVwh)1pi7Gi4|5~}9GSd5HXfGYCb;Wy zqQX7MRBE+1>lKE!;3|`&T~r$zU8y4V%Y#?xzqkU#ede<&`PKyCtmDj-L7iANcKO$K z6}{S3av2G(=91C$lGORO2&uUQ9LvorE;S^Rl~lm`-&c`Y)v9{*71GDL5U{InT3@I3 zK#uQ6Env>#Kj+eq^9TC_Y_t-C>|hdr2lib&AAk_|&m8a;Q!}wAza2>$HwIQWjHRb@ zdRf~}OPV`zKE)fWmtoKs%EhvW5pwXrfvno$_mJs@}COq*L0pLyZQ!APfLIJ%`02DNv4Y`q?Dn^0bjn(XozPa%Da-gI3+lBE9f6f2Y2 zHrx!^GW^hsS8L?(DcejFleXC%naz4X9KSQ&?pDZiK&An;lAJ#s9Wh6!69hX=)1vl*FXX}Nn@*c6 zy=Uu55pG3kn$-rbFuF_+h45_pdY!}U&9Cn6jtL~F4p~uPhbo>~b=6m?jotZh(e!*f zOylVXL*FFH6fe7`Wi$}0Fd$H_4In|%ohTRut>y-)A2*0rtw>&)Q7<^PM#9rENHaTO zr*~$%dE=@>)Ixyp{^Meo9jGQJ`xZSUk(2~K^Ks6u!D3^C-7Y_`SwIbf5jKR+hy(aO ztvYp|pWa{q{GG&tUvFH$N^NLxp#++mAd=z7I^IwLvo>;7DEwj_j4(=YDQ?j%=TORv zLc(o~^zI3rE1{F#`6aZ0ps62`1$}b6T{UG3bhen{tHgDPh%^xabg2iKu5A$H=XRMo zq8uc+2k*BM{L<5E#ih2x=Uxjk=6m#=Dgw1x1OoQWXYClDtMy%GZ^}4Qb?v&o^4epa zVN&AG@88S_%>(K1K;~g~WzVicav&~YHnMYpW|u55gTyr9&{D+u^lmoU-^JB-YcR{s z`N<8Z`a4Hf$EFdK*t@ofZennoJoQV~)hY<=#+b;dEbL034R87nMVC6rysl~^HMJ=$jED-+-h zX9owSi%5fU1y3nK^OM2iP^dFn8P$Y!S7`ehLcyTh50sV{*wr=Hbu@jIn!1&ksN{zT zw7P@q4qXAUz4zl8WqVR1IizRj}%^@ky+CWPOMSeB^Q({ENcjsD9pX#NI^u=fk8kPq@q?LwPMgHUe}3z9!-n6+w89 z6iJVe)DR*5m@~3v-k5H?(0Kp15((w=_!(fV-d!^1;!qOV2OcuB9xH853iNl8wpHO> zS!mIr3F!WM2Qk2|UkH$^ofE+QrEI)hUGi!+UWZVcz>bFUzMcp#6TQwIN(AaPP=TJz z#}cNo3?E6rm??@Bk_9(AyZ-1OilfH)j$^>2&Sm}LTlL5MUM^j;kY1=im?Frx2S(V3 zKEV@8M8VT!Ku8e@ht%9ZAs?q#+T-1K`DcFc%w72B%eNR;3>;YwK=S`^v_bztDL4W0 z@AWct%Yv+SvqR}xhdb{bz2?bRKArkQZ{wtrLZS7V^X|ch$=v0N z>shb(hF2HVkh=|g&{h(Hxw^7!o5}|UKt}icd%^qNW}lk%=6aE<5MzOvkP!tVueCHq=Q-A$`eLLIs>>UE#wkGkRL))2w>@?D9cy5H%N7q}(nD?&CJH+%(sOt~|T zcDk2V1xsDK3|9M~2(+It6-;=LzaejX>2+2Rs3b8elx-n^D1hzZ7W#v)1bh|RSQJUM z;0vEg{5Tm5u;6LMAEu>81+{uQkORF54--s4oI=xJ!B#x zty|tg`~k)rI(g#6mm)><`BH-amwkAa2iAUMcJZBaK6ZaGH8zI#lFw*@h^p`_lQ6B+R?qEKQ#E$vxv&78;|&_as4_$?%hT ztsQJ(O|0{- z8aA8~{qDZn!$K`C0{7At!uGU}V8~h5W-8eT+E&0oj@%DxqY@ zTTOdomF_y36Nliz5tHqNXDO;XED^UV-Gro{Uc? zBe5C^JJV$=ZcN5rC)_8txj^QK?3U3eMvKBLTH{BRgCOEJb}7Vw!d=7<;>-$>3_Ppr{U{)AbSAfG3>N#f1~ z2ssU5nClMv(6jF<>gFaKw1W9DR3PdA|I)}pyWD;LG*8}z1@G50I*fh*6cT&Md7Dy) z&A$~vW9jo9Q~F?`DeGuk5q60h@~;p~A@nExt^1Vsipy`l=HG zW)_c+AzsmFxhezA&UmT?Ps8De8^mH9haet(H%TkE!@W==fhjR?Ly3|)xxEUWB&x~s z?;QUfATgmZfD0=wI-ANY3T0h3c)jh||J+1FDUOMY7!{qM0lG#|iR|1(nCpF6zkIFe zxEwBy7?gMoM^LMce@~HgCdz&z<%VP+k?0x8$A3R|;qKD)2u#cPjY(k;3Clte70)cM zHFZ*Hsy2O(NY0)1nUENOsZ`_ZjUoUR)?T;l|BEv-05y zFLhwG0Vm)_ij+!zyLKqyRM3*Dv@-XwxiOpmdWLtozJ;%)0{g!N2^MPw+kwW;5~V>< zfyyGluYgTfCz2R|3OvJGDUv7DI@?tmf_l$|C|Yr=-Fm zWq=U=ibTtT+Twz{V!>-6wN*RkiW)9%#9J$`7ZnkK4GYC^g%mqfb-00WN6>G5iJ)V2+H2d*b0h;?Jlu#os?*Pco3hO zZ@u$%7ycL)nHb)vO*~2vzMV$!XZz*I$iiL^jJ4~W1tWg97aVkrp5FtMxXECy(R&qU zcRg*7@wKFA8Gpl;tM2Jlyg$U-)xIhlA-_NaFL34x=&IokvJLtbV%v&g1 zTpxEbUz}<%IIFwkOCWiq+ncZMPhVAl8pU;P?yfz3Rg0%MSakKlO0p7cY^kzNz_{k_RbkwzHp?zVoUSH!f*YIZ)vmp)_! z7cX~po35>gSUVB27qQ66;$Xs;t!`cGX9uLF>QRn@NWwZ-L zx8re=4d1V{AmZ-gs-WOzaXG-_VPA?kDt%^66v?hT zdzR%*_r8nqkp!N{Ez%x1fB*>#T$xY#h1y>YS4X{=;qZXjn&4_Optj+VzKo~)k2Z; zjWOybu6oVOn4Zh`EH7$ywu(c|7j$BfuE4=4Zl#J^V(ot#!j4S^bPvsChrl+Z`J0wmghs~=E@qXj1U-C;y)9w_qx7to9cc>WzBZ}Em-TYR=P@$vi1LC#@TOLhMP zZ4c%k0+dPR8RP=oNZ144j85lx3sV_;}mvD$w)Pqb@>x-~%q zYi6h&R38L%ndzHX+#HR{$ToThYAC4qVfh0?vqFRk1*&PcIdabl5oq?Lbi;fUS_N-) zbc0NTECCL;w#8>y(oIu~Q7Nk@T{S0MdffC5`B>2tfNkP@dH$iD6!@tCx{8MiSSa`l zk-f<{7y_ItE(8!gk*6YdTx!+1fAoOi-7zfHrVP<#O~cVoO2Um)mCO<8%176^qR!dq z;N)ZY#m0W<8(OgJ%U1DZq8u|nHVvVclNk+!1PV-&29H?iJ?lx#L1b{(P~d}S@Knl} z;`IlZ^0`D>W9TGK$*Va1j@#h{dis-r%ttGlvhSZl-VKkzehJiY1m)z1pTN@P;(mJ?RlzQnM`IsdKL1N)MEIeQOFPPIp3Rwd!O=$wUR~a@0TTrK{K)G2 zQYo7&W*EQMsQmvbGh5x9bN5~(LkYjIHr)qSa)eB(#0L=M!n4R_ym94eHX2j!+7;#e z+xosc83*O0EHAwUtaf}8DU;BI)AZd?k^G($P;KC8fRCfNi*~7)VCt8JI;S%hfz38$ zd@k%OFg@Lt)Dt}Z%s9XLJFcOc%)!nu#?wOvg%*JFt%6D;<|}1%ov-cG9ZXcX1pKyG zqc*edOjdIJ9X$AS;jcCUV$~2~zq~TPQapJVcDNq=_?KkJQu7%<7LlfV%bm0}j$0(E zA;D-KWdtn{Xy{4x)bu-f{YKh6b*U_MyJu;A^{hnTicL`Til9_*Bmjpt zEWeF9!tYF}Jg7$l(&TIlJ+M@5?YvjgATRA4NAVHNyX>lFbo>VC21c%BUqWo_MCV3% z7*^WI1K^fww-393=>HH!+>Rat$H!$+D7Ixb%2>eDW{ccwBrjE@9LE)Fi zGJ{f_)>^T}6WubQQ88EhfRWJIyM%Q)*2r6m8Oj!r09{r6e&Q|)FO1<{5t2yW=mg7|xFZ58^txO$Um2e? zN}N7g15w+b5iO7)jIAH>sm>QWsvw`qi;1`+mHQ`9p76J#c7}i!@|-+jg(b70aW?u7 z=aK8Qbd7;1$z;AKK?~bO;iFmnh(%No`qp0*7R4itx9`j(8-FkoQL`ikFt>u3WG@8*)gTd`N7vRQY|3;u zrZH94Vtb@hKCc@y6QzJ6!Y4Gz3h|`-lnJwR(HLzQ2=!*T@QrqpRTaPQxkCw4m*@wT z1jd4j*(mhc94VZ-woC0%LQvUtDED>WLAW_m_jAYgX^=4d^=dPN3Vm6)?#<_0HU(y% zJ>6CpGLX*ILge*;wEP~X$@ftR4s|`r>QXd&;yv@{V!!27s?QwX1|h4n-wdSLYh_Wo zd^6E2-(vx7IR&MKiLZjMzoQKDwOI|z#{_Zzc8Ht>UJF!|mN4sm3z`z}Ae7c+SrDTP z7{f6#qkkt%F28Ni5Hhj$zBnU^O#VW3PLQH@H9bp&72K}!#z^O^Ax*Y(fg3t)P47)Y zJn}s}A$m#gY&@MHg)_AkmE)sCiSi$(iym1>noJj5=bQ_jlr~A+3a9uBo2dTlERELn zHVkzQ`V*S=fh-N3hlUH%d)7?1Eeb4yUt-jR5Rnlg}W0(C5*&DP%f1JXH2CBlAWgQK8&9Zs+`GlA%c zyk^2R6Dp|Nm1ow^|MBkts>9)={j&Ruyd;_|6a(W=uRqo}XyJ~UEp?VlG zjMLp9YobOSWgD27s`pH-Fk23MZ_Rbv0(x7E#bes+#Lba+TcPU;vai0FweV5MtWo{E z!yimQEW4Q)^2YkR{LwFL!W%CkEp_ost7OH^o0#0K$0fRKmhT#;X&i(5*3J+$4k7E9rm zLeIp|PSWOAxClN92&R61hl)~1F_y95ZkSb9G0mg}FYIllaekKb;NGR|EvE9KEGn_s zR!ofSDwtL|yPUGxN9dyve7`O(k%~1{hL60k{E_TKHN;OB9M+xq!}2mHfgZhugNgmZ zTEvmkq%(qe0D~2a>8F(~opPlfOv``cwHs^M6=IopT2wPP0!}#FFx@BtfM}&f`Vz~s z$%3d~f!-uq%E)~6PZEFXj*8Jw%5t<%(s<2UFm1aE_gh1SmE0%lF7iP{=oyy8Mo4vU zG-p7SE}r5?fam?y)D&DU;0ZLg4HNvhFAWA&> z`H_AVEffyCKLKXaKn-20)WW}9pM3#EaPJdH8LOgRywfgOq|#T_ zZoABbxd_HbKSQ^3Gz_I{a+$~olTi6^-lHWm-ev>UU#+Z|#Mbn8OG;8u{N7CyC#e`+ zxfLlwwvImf)SAi?mc#Y1&YSpxBb|eiD%5{HeoU)y?>NON2ZSxSEjRSU-y0{{um}cqy%Gi}0qwE9S7dNWm~k z|H${dW}yNyuYZ8PMAy$d^jH{*_uG0A)t359PgS7COryBH%K?(dg513YdgB)@&5qmq z8%0a9Dq@~)hOw29(6xj_w>E9{J{?p8V4TZ+c*H2=)bJ-kF~JBx ztS-^2k+jZvS5KLM9w)oOW(rDPSy*REDsb=cD zb^jW-(j_Yi^PyaThtx8n#T{s*18Yp*gA`x$z(tC~VOvCIUzSN|dl=ZedR58Wr_{wf z_qqI18;J-~vYsgW#9q(s-7O%rJ>iM++M4++CENhCo9vl%U{{6pmcT9Wi@9dT0T?P3 z@;09@Ugw}pwuQOur|6uD-Gk#iCqJvrl4Y64I2SB z4s$CklFA*_^6YJLwGTUSR@nIgPrp?Ly<<|n7*)8$5~bZX>jk7JKaI`#6lTnZx3}#x zKGd@IDqccpzT`w~d#;h!)kO~9inx;{kU=1B72!kSwK30}bbh{LD=8|rl+nSMpik!s zPPr3w@x0AK$CEgV>wcjB2C?wg}=Iq^7;!3Ax7?E^HP%@j(d5R^lTXfz?&d)9lS$flxdu{62#% zOWxv^Ez=Dg_4%j;hYq$6^*EUh3k3+^0n zEphqsE%R*oYzrfoIc{u90%1JEtt8dOjSmU<4&Fg7#T2?0JjSBnBLCZmV_T%!e6tP7 z-5ukueau}Y^p~a9sg*X>zPCaf(9B>~*UZ9WsdGS`W`yj1jRsZlTf1*p2DqAlS0(&e ze1ASD#$Bq^di~@C8LE_$kaUDf)gv_S*$Hz2wlc1={8E^~cMf^8a#5!ZxG8M7X`m}$ zy1bX$*${|w=(sMc_=dpw+hBvm%~sw7c;x%~F2yf~R5SW)bZsxX%IYTQiyL!8UsKbi zt0!d5a4~Fk7b;LU=iCb+a8|^nAr*4^l*W4*8v)szV7cS4B5V7a^4)HT{#3@&Pcnxmdq#Q z*d(pi$uLhYXVGU$w~TTji5oMe>PIqeFvxBd%~i;j6~VT*&g6fPRR1*`l@&_ay4SAl z*BTJ8oy@s?(v!+#W!T#ud3OL(Q2N)Ue;z}vndm%5PQljZx;f@UHbm#6=Ov0zGKvej z?R0j)q|f=ZP-O@E$GmU`YbgnBTi~rGm)0e_{K>n}W==0~8wCM8Ay$Q_WlPH(qMsu) zQi3*2U!e@z;RFBSzxP5to=F*nMod$U&9FG2?d64c)y56m5Sv$j6C%fdI_Ff^vrK4Z z%YC2DB#POBWNO0WRy|eYI;)|KU2CQ`b%F-Cu5349nbv2Fh`(S7(%7*@_U^JUe>{Rb zhX}D};sGx*_O{pb>4U60#Toghxv=QVX)}rEcb*?{n7ctqoM4qASIhZii@eU*oqh2l z_VJ_BK^9BWa|RSk{f_!2is8H3=Hya1k)=9%q(~v>I-Jjnk#kAY?bo_Q?m~T7J5pj5 zqrGL4+qo-e**dOK10B-1m~L(jZ;akxuBg?DAye(&!gxO-;(maJS!k|2Mtc&PTc!Sb zfqbL-W)e39fP$?Jn^;pnP`kg~sZORD-ATemE?$D$D&7N%U-kNxBvx?h&D*yFqKAP; zilqU{J{=h(%*IU|9A?K6V}5lENJ31NRm9G(YiTJthyE?dJvUEwvvHX9GynQpCFx{e_s4q9`(D`Dm?1XU5Wy$yp{Z917$LNy+ThM| za+(tQ^VS)>N;QP(4(VL19N2R-hpUcI{z^`utfUGl#T%!+y}Do>D@IlB)$k>_YomIM5tC*0ccX}@PG}=(+`$dp9*P2JJ}&NWYGnu z(|hV@y93LgXR?PzcGVX44H<|)1-*H@McPnNn#tbc!qxwS!1Ss7KlcE$DE_|O(-H>X zO{QD1iX*!w`JwnkxI=dDu9YIWc0ODIr%*i@#sQ-)kY^TwIREkdw0_Pv1+Q*~m1Ib2 zuU?-^Pj%^vDa29h3jv~ETlWDd6#vI>MBWBc_YB8ptTY9%@JLea0|B`Z{`yV@J*s0j zBs&YZiI04Q?CIgm$ng}S#1opMMW-032>${4p17V7j=S3{0|u_*&Gyo$K_=FNXdFm) zyBfk=v&-zPT=%)onVIxXpZsN4v_;K?eUI7(sPMXQDC(b^8jsv~&^R_e!2NKJLDIIZ{#x&o zC8GnjPZ3i4q+L55CpQUQ5g&827tNZeG;LEykf)zZ&wadCzzEsYNEGX+%xYa;Wt9{S zp)*7;DqzRe0wQ|egnwwCv>_lKISX<$y5d00WigejWK;@Z>I&iNK%jDW#jUaA z8n8;MtuCBsk*pX~KdE^|9HqW?k>E5%Rd5WEnMGUkNvc{bn~)(cxE?W!T{8)?=kCJRqUWn)^SL$A*!d8AO{%v!xo#!HSG zm~xDBVAc61+N*Tsx}+Q~e=su|Wf{VQuM!ZX1~bCKSN>FdAU+Gx-S*9x#49*G-_6K2 zi+TI(TIZER+BKW|mT!-Qg@fm`pT3$PpdH=6HhdULZ+Kd&bDEoL%x~q<6k0NydMdE7 z+j-^vMu1l1nLP;X)PrV?KyTe$Y8*iMJc%Bn6}t(CoEQNOb?9Mem4RX{c#e9d;TF9i zTa5?qYnKS{OEe%%^sE*9_YIGxhJFVSfuxFhCIqI*tzTZz%77SZ4nvnInmei z#q>W2p=ez|bk?kl+xj4=D!3B&MehG-Kv=c_sw_zWuM?mBjy!k7egOg+|cpqYH72DAUED<P(D;UlXEdkMGi&6+r&ilD8AU zKM9Y2FH=!Dj~r1*eHQ|Qb_2O11@t|gp~ln@$1=moM~0(d0AvQ2!`Ab+yAy^!=6e62 z9rD~0Z+%aN^fm%7cCV_&%GPrmxe?{guG!?cf%}p~jf?J!?yN_|ZKF)5o1Y)8( zjWfa|JfS?zNE-A5Y$HXfM&y=OGz)Pz1A=}qIUsF61C3#?Rw?A zQas!#^@=6U=K!Fqx+q|pgfl{q?>6RHwCwGm0vQ*AiK3IaG1?3mQ+|@vI&k#2Hz6Hu ziZv9quP=LE#OHYAJhtMbhFeYSkg^Rh%UJ9_Uik5j@Q&(BgsZaZRZXj7_j$Mke=N|1 z#kpWJ!1k$x|eZybHo0!8=&XHRoGhDBWj$T3 zYN25ZMnxBiVeJraP_*Zdiz}JYy4vJja4&YL=Bn%*7Nn}51*9#YwoMe+~u#94|-h3Bl&|XS5 zp$FUbx6X?SOWJVs?AN2???8lMNjBK;QWo8J=H>E;`n{v})ZKr#G7CEr z`Cc1tu3z+yp=<(yvmE>#$4cxZ3bN}v%Q_vn#wW{fYKd0VTELZK-T^m=en@3Z&wzBJ z%9^sd;U;f6omjtmqu&_zTYM#>;eSBJ4gUN95cEv94Q6XM@7J@&gR82l!%H~cK#T5& zbZA$YgG`T$WQ>2KetnoC#bDUbDN^g^S>g1Y^bykk>MsP%p9s1iTZqkXb}X;i&S~DBi#8Gl z9|b7S;b!rgyh1)A-*D>-z|<}RSs3&7?aSdrer-{qDfq;iD z4RES!q_=^V1_AVsW!I&Yd;!E$_EoGAHQi7YJBvmqDj}5YnJd%3CxWnOu14l5) z5f7OaAhH}nC-u{g^q#jF6lnshLQM%cV?wai_3Hw)wCRHF$Q_(LzOoV7k6mC8!f7Nh z0FI&r_zFFzxTvKUis!Ck;v!KHWq=-uk9o(2h9u4R{4e2v5qoHxx_71(XUAg&=L~tk z&*B@q6H-_++j(~?gRAy(;b|4FAM_^L@J#=;$BKF_=}B3tMkdQ9&HXbe$dviS(EgNG zg;m*!fHjb)M_nhfFjgL@Rrc0T7z}dd73%Afp?AXfAF%tU1X3wB&Pq}Q#cfU{EiPGn zps2`e-%y3)X!v~-?cTI~8ch!{Psq|btkIrUH+lK(z-#V!7(3=t8zS5J(A&CBcifye zP$8f5Kv}{I<;XO&TD}cy;t2*IL*++EZ|~c60uwG9J-lSU`%LRQ|Fvp}OClX-)SBQ& z_m4?k6l= zn&a&2ptNo^@^%|3e7Gn;b&cxpXd6~v5`^4fKh zO3nXmV+(%yv21Z0#BF8=I)`vS@nSR-MRYa3jm8PKRA|pTp44B(j@hpZ{wwtmegbC~ zja?E)(vsE%odzGM#estmz!R1~$sn?#mp2Zs#PM$_ke^JVeFcrKeQD0OX)??6Mq+eK z5qIz?KUL6af<2B_;&q@9Te|Kxdvtrj10pdgtwckv*YI$iBYR7VcFht@nY-N(j=g89 zf{`^Zo5IMP)>H54!^@ZF^0rgShA=}mfjedt$ z-A;%f%wL(<3Vr()=aqiet5sZ8nD7VNEm5s8|V&k$L0q$OsbXO z^0eqZRzzl(S9#CIXr+K{ifQQ3xtmN3mKO2@I*StZN*nthz z{m|fApt44g!h8B!lHXw3m5t^vvy>T#LRiU*pMU$C^@-`4m~q#J7UdPkoUQydChaRP zf8~mX-%@%rRyhtbAosF5P#AZ3n&+p^!&WKNo5@W;i&D(}nWH`q#zGcJn+{qkQ1^@W zY7-XizQRrsVP~=3xNyJf%&6QA9pO~S8F{_{<}a=7sZtHe_-r>BXKDwgqLMAe$IEoI zN-Y_vbJNU!)oYw)c&!!E{_lnKnEe<7o3WxqX9MWOrbu3JWjq`$JXG`U(w z5)zT_!F5Djbav%#-F{x$-@9T$({&U=1sf?MktCoj;zu<2JdQvBLaDv|NTw4DEoak) zL^;1So?Rxhz39~_MPZ#~A1;j{lZK^$kjRUu$>s_T%-5lt%esP}2gP9#)A=If>uFrx zM9)pbqnj>sC=(S`akks6u8n=GIj?wf-34%Gh;k6aLzsNH>rRh{ zS!G^x+MGMN%PyHr$2_}@)z;`4N38}vUv4f$M~_-&f-=@i{8Mj&KOA?`(FM}L64*ypRr|aVnXz$c@JUeWWDK!ei8Ys z*+q0R>v-t~H7iPeQDaVl%9E;Lw5^7&ap%DyOawSWu0u&~ZX~tTj;X{U7ug%(xd37N%i1 z%dmGcrYaY3L%OEO3_7Y%xC#deLpD~cMVA%3xa&Fk-$!FMta^t%z785NjgJU|j<>Q4 z=;nZYFeju@-D(84Uc_zt#56sCoH)M)N_?xDE*1!DFc)Rc%n(w=5^9T>PNZ4`RD~P$ zB$m}H&E$8_mUs}ZXP+vg>dxJ4j+%fafvVme-IyjRZA2{}r7o zQloIU2IlI~-G*h?EwMhkmHk+sui_+;g2!#i%yBOzG*5L7VW?r0YzVXywHZePhO0{=#e0pdwcB7;z)e}ycNg|sX~Rv#TGR&s0Hoz-hMQY{ zJ?Q}tSCnuL5s-QrQ0C?*CdSv8J>>hWkxAL#HxFUm@DSTUgv(NioG0y=nCSDOzuTqy z0}iiiMR<#gMrka}2542Z-S`llM_&D9J%W0^ON51ID1_;FVXSE(6N1f**VAm)!?23V z>8gF18iY&3T9}A=IOnw()hk^aevUr4S$(sKp&X?^Cxc}yUgw1nsx*HfJ~jdViyIJp zLyIoo-mJN+S}!4OPEcOs@kdn{*wYNjsvS~7=C2cF&tHeVrnt!in8fi8o>~>zgi+B^+<5NB)Hp8D6m9S7w zl34uiLTrj5b#j{;B>mlJ=7cIs3?;s?B}P~JvK(kA=6hy?J@(hZN63eti1`FE1+1`^ z`L9?X*LP;I-lXr;8{ zoCv}UJThW#CgE_`V-1nXv}JECwHC~Ge3>KL0&n+-d3n+#q$W;GQP9!y;o0A7gs?x<^u6&W=WN)>!vmN_(Q%2m^UlD#?IfRBJ;XbOhm#$+tP(`9mMkR;&{#Ao zFPrP#Fqudy9MbUBHd#!Q5ZIg^ku?ykK(vM;d+}pEpDzn`>;``2hgg-?M`>%M}{k=3l z{j&7)%M(1T`QL~shU4-Dq;!+EHfQ!l8l)AiF;feP;t&PL?ephsfiU+b1S-b@trX~E zq@`5nqGhS0LyJ2bw%ptbb2Xn;w~po){NH7*tIEfLg}9Ix?vSm|LvMzY7bJ3JovF~w zPjBnsRv|A9t`7sAb&HXsMLI3V>Iz1PZdoYBp-vz7SVTo+XJn@neH`+S@c!Gdgb4&kef|cjK#`@FN8T# z-;fK`?APYVDXw|gjEVe%IZpe2R!4|CO$F~xPz*n8I@-j6OxVsEIFwEIKCAu2+CDDl zxLWlX0;ymI=_V-4%AJ+=G34DgYE1#>mPx=$h(r6{yni}kE`cLTEk=F#Ctz#sbIXje ziFiFFK!|XtvyN$NywR{)lq*UB=u;MHARg%|IOkKQ&vLU(H7<+1Yw1J`4^0-V#0b_- zFfcteDZ04p1Qyb#9MnzSk|Su|)ZWa8Zu%xG3Kz2M#2r@ zKU!ybH;3^qM2U$>lb6LRlf}gHJ?1KsevZ)RQB8S&k_Nnx2*cni8bq&3xU2!4NPhts z0%&t4WW)4%o5ttdFIZ4U*qw|RrDv(o++V#OtTN(wv8F?*@?s=5i~FPmXU-8SkM$9NDZ%eE>08>$}ilGKHnM@9SSvEw~(5&D(U#03kEm*FhCIn82xgu!`u8JclAgZ7VJFS1^V-n>;sC({(*HoC{2|~SeFAqr=i@Zq zqdeVhW@(Jni5fChEP9+?`?9vEit)&+X{YR5j)vptncnYC-L8Om!AaCD{N6`IrPYo&gPiw7dNZ>F z_c1(0&Z{8tT3PCHV%9w5hT)n$M&WBfX*h)YY#sSoPB5Fo2K zSc_+5y`<>?#UDLe$@Sgf%e|)t{}e;$mC1uBK|4s?7}G{^7@3))a2CKVck!+%AX?=% zf?b2oOjj^LRM6IImnMqg+tdQp+!xsa^?_I0X)$X=0!It< zaEW+8;QE{#$pwSer_C&SH(*eKf+K}5u(7J|DEtSlk#BP!C> zc+{QWLWIcqmg}`dimyU+#O}Q&WgD7_^%ae|_s6JPm`zL+oe*JxMlR+aZ`+oqGyT(` zXr=y=*c)YAQkD(-qjyIdH4Zvx=4me>;S@Pb>UxC1Y!XWcb#*m&P42KCqJ2H%IgYG^ z_YT$_-$Di$%-Vw=TCDnj6|pI@`NYcP{Ou;;2>Hwq z^vMx0ia?dKkR0Ht!SzO)pl(p>oB;Lxy`DG8?cFjPnf*hn!M%z??$*IDo$Jv^DTxi1D z0k`Otyx9oE!X9f?{2pifnDEcPYsFw#H*?b&-!E}TZl{E%*vS8P4L6=u;TwTcTrXt- z00N|}(G!7RD05Dej~F$w>OB?MM6FxCrnfq`ZNP$CKNc-WQlTHyFLk;VS*g$d2%EWd zbSLN7o zYZgbxm}_s`=;>kbDut;c9Vb^YmfthaM5M2bQmV$VTG zs#RSCbAtVePtjnY0$=P38G(#G3Wk;}3AFqpX>abu#h-92g0_oW7_V~mcmFUccUpnX zN1J;IHI`Gs>Vv1v7ea(D4G%El@e_g+wF4lcGT|==&NF|c*P_;KCv)vsI=C@gTDQ-8 zmIY0w4V~{6@hjnfCS9Mt6&XrO%D+jolMBo@qnj*Dh=M@_6di8dW$C!xYKwY|y(Se~ z>`!s#8n#u0QTdhT4*l%t(t{0Rm7gFJ?VmTH@R&%#m$i>`3J6XeILA;Xx8G(rdiyt) z9=AOzf_!^?cVVJL?9!I`irrkK5}W&UHh`G4tyNc2OmIqOKNxkvrI)gd&1pN$w&1?3iK z_=Vr6#R5g_Aiv^cauQQ1aC7pA*y44Op^=;SvsI8%v4`z+uwZ*J7x`=a5&XL1A3NOY z?Ral%X~F)vSkWniWj(QjCD?t2XN_SsZsCbZgdvG!QFP4d2_OItsc#CEf!9t5e#ar` zvfVmf)!HJC4lY^XQ2iN_uS5Kctstw%e!@9@+>ckwoff9rzOuAtef$G#8ZM-TM(}?o zKm*T!BkFaVz(WVO(L!BZN21pRs6RoYu~>txI0*E>!3Kj&B=BUAEXw-}|L?zv>=pv~ zaUG!Q*vOLKh%UG6?$X6(B7MHhX<7fEgaWLEn#hSOuvFU}DL9x5J~o|J@>zAULsy`; zr+luK7SUE{w#@CcdDaJX$AV;HqNOCi58^K*bc|pIZb>AIMc(s$nev{{)(xnW3!7T1 z3ylpI|3^@_vZTrADEEn=*|A6M#LOb=;Cd}iin@IHx$A7nYRh4x;An5Hnbi6I7(m*! zTM2m^F=k8Cvg(M8-B5~n#f9l+v=^Puwg$2iYvy_z`1+0mwj$}0Ln|V5+-20W?HjWV z8jnu8Te^hM^&F}NJ&g8PL{Wg%jjB~@@g{2-IP@SrT3)b4YIgd^qvN-W8W9#PI!8qg zOA8BfGp=nLIy3TR18UPB5w#xt}5>Q#f7Rnm4@pC^-7 zSuH35okTq}{N5)GxTq^dw4SLXjICW5s$yf^j4jaPt3Z%8#2?7$bmTFtE5{repf47= z_2qW3cri6zOR`1y1!;UK6aSggdw=oy3!P3$=Pmt#$HCLMB@>p<4aV->5Vc75TSZ@C zip}%qcT)~V(z?3Z1U5qvFhZ+)@6rTd1plT=EXl&6tHzf4bk@Kao{9nVX#eZ4(lv?_eC8=2X$Nj%v2hXanscU+~l@dUT$(({)$PM`NUA8gT^zu~?IrgCz3 zDt@H;UNM_pMLkc(KlVj8HMDiqA#Ww9!93Nw>zku8k%*|8z$?FHrw7#89qG997F=x^1dHfolhn>m3~RLSTXWz9I5z zTB%)V!=gk;=(R=o;7oSeBnopb=9_e#p5~hdDq2{Wr zjv>WXMg+0yVbZX;slL{RRiStH!O7{b%5b-KIDdgY3UQ>8{kl4CjQC~z`2wo@0<W z4uY`p{eh#hm-<`9GmCoEurFr`?cm>PK`rf}p*Nsh^eW16(m7`zO#u6KSHaSbj3`dC zy`WT1<}31PD8bQe5&ld8HwS!Yi1>sQwLH1!E z%4?+e?UElE$k#Eq$VaETkioV7gyr?8D-uYW%#6fz!L?LcL<3deNZ;*4&cW{-YF;9! zy0=3}eA{&FR(3W;2+OfMyNq&lRSc{(VD5lu%E!}S%=Tf+^C-SepP9j3lYGqkG1Z|+ zHk?c-%Yf4ByV39=6u+$&DPvNnRoSd^Zlu;JN*6V)fM{z~{sp>_ir7CWR|>F3Pzc6& zwpl%c5g-#WPV-;w?u+%w*a-%TtoqWg>r)wb5y|iyo4BYE6IZ>8lMSYD7MFNt$5**_ z$UC?0WImRMO9||E__njc>a{3j`i-bH-IqPG*ay1`jLBu>X>Ener@qSP2Ls1K?|wtF@C-E;&y7%D=R=R%?1de$l=Wx ze_?DH=QbJ`5UxIQfgiAU-Ay4`6_+Rs+c}%1tPluXpAJfZ(Y)n^oI}ozX ztah;cgn&%YR3^;@&@G1#$y_IQlf#+R${)`G&wyCmYVPw=Q*d#SuzaVm%BJ6yNQ#kS-jn+T`E=tiP>GVk16-tfPt5)|LoO|mMXM)v5UZ);Xr?(OLaBX{ z#+6zrxL#YuqTBEkTn7fBs&w)Fnbj4)Y^Nx5!v1v|b+ZMD6N3^^0Zeta&z8=WBnr4g zk|H2ZLwg9G!+Y{o$N4GR7)DWIFAk=y*@uMImw#IYNugNf6=&@kz46$6w^>~dOw|Bf3c!$ZqQ{bc=2BZG z+}TmP>PO2v}4kfdCe zl>`xlWKSR?pN1846jmguBCtJTMyI7Dxm0LC`7U~bsrLwDEkmQ~8 zLEKoc%6WbTfPU%ZR~FHAygZ<;{4jR?hw_hWI{l_;3LVA1c{*HNnhOs_^KPV4cbWtC z#XuX-uflt{u`_m#D$okDVIe!@M|$-N*#VEbRpC8}qHTA%e=5dxfR_17qZf^I#G@vU z{)ZZl1h=noqDoW5?uo7;$Ry!BX`~k)KB1g!v955LU{_Lv_c#!(J;NcYqo$A-h0qYRhS-;7AKrzT zQ0BJDi@+~yYCUasC3mb;EeU7Put+L&wCQK4v1k62Je*Ln4kLlN3{*OW+dyFAJQ^-G#^Wf(3lg0xRH z$Y$f=sdmNOy)550`lK2^7tN@mtD>N8NtY!1$jag%M;6nyp9NfD!1L zEZ`G=#dBbIAf4;tsFJ*j>4w_9<^xSWC^7f8HQ8q@aEaSR0_?m5*&F*Na_+Dwg&Bzv zd@Wj5`_4H|J28M4hEK37zJ?L zZ`$0Q9RISWKe-i;FlOmaM?~Jx{;~veF!4A`BRDEfB8{a$m=##=$1C2My#(!Z_OfjU ze})SRNgu=GEBmy~@ldIH6Q`Bj^oftM?Lgh@TY(-qr5%&>YX z-pg$I5Q{aSv{&VQ_SvlM1#2iUw;aTo7t1`1Pl&#&M?rbQRLJdn_CjPE%$aH$+gdXF z=cbH%$fG&u;!6Y?Z9>NNVVx9i4X_@!`O(%M6(I0ebmnWHOCZ}{FN{G;g0|9EMJ^!} z&EP@Sv9Q!_xfW3*SobntIDp!|&-nW*?e_kOo1Bz*A)6I*np)OU+M77_0J74}?;n4l z3ss|U2~xJ#-YR@s!=TQ(u4j&;&Q|mUTnRN8t||YXV@-OBI`_2pT&sxs)(Mj|MIgFR zBqul-`?pBPgh9wYp@dPJT(&qk44WyU+V({ za1Tyx{Ln-nD%;a>yRK-Rg1C+J5m$^gI}U5b)^#B)mS@!F77DyUg{jv(c!B>?Pr0k5 z1V^?EP|U*T96(r3JR@33;OC+H$+SvXOiR{8W747Sx(c!fhP9XG97w+1(Y!&~&Ijh_ zdt!&W@nSip_@*xvRZ6E}*%cOc0%Mn%nxcw6gxl<-J2nrzhy8#J2eC3y1(Es)qqKP; zhApW>c(fpw+CRKHKIa4^s>=jiin{u7c<$V~5~f#n)FPytr!dn4KB!IrI|pkUg-D%v znjn|qj@)qDt9_}AAJ2fl$54>mN%0R-6<*3C;IQsdpgN}*AyBZZx_L|yd^9HMSh^CX zGQgdXLh7&BzfGg>M(W8{dzYKrSN-m^>Jo1iJp3D}YOF+b?=DBeE@KR;WlVQ$8Z4QG z{6n>eaOT%Jt$0*-y6gM$VcY4w6uqvJgsF~cWm?8p2f^KN!Yk2 zJh@Es?>9z+vL*tIkrc$EIeAkNpDoNTjJUR$AbcQ?`o)l`RXCnVWA@&x_ALF}lOkH! z9lCt&4Orm)2FsH->v)_!oy++i$6?a>>voeudU%`)ZN!idQz<@ISJ!$`tKLpw01`YL zw$-O1$A>>a;?o(=1*DMK45YVXewsLs(M6|Y{aOG2^B>mRP=`Z?h$tksE;y4RG$u#} zPQgMGzS*e;0|=pMF`wgIehu%5&l}Agp;@vE8ds;}drZ0Yx9Q8m&PmF_02ot6f=d`% zkuxI3Z)AO?e=J&G*)w?$gLj@%{0%s9IU*QDy2}iR3Rmt2h@O4w?{X>F=8!sz?Utn_`^$RksL;ZiA&Tt4S>IAi#!{J*rjqtW2_|F-1vn3x6p zRi{CUlaqu)XXp6P;=0wPeyAG|u2{sGXrAG%_$eE6T-0Mb+DH$DrcObY-n2~ScPAb} ziB;YRwQll(@(@zRw(7^v$XTE) z^7jF|@Iyx`eRNDd+hOp33oyKbCp(=Vd?QpdgQEK-$?sC@#Oa=DP)(zQQrSd-SUZv% z1&YIKpEJ&#duJ|(SHA%rBOI?)5hzD zS%bl&vJv?Q8XTHU6gKd?BLVo0;Ka;J-4BKvm5b|i++iYbE`%Pknngfu=)T5o^e$3c z2CnCM;i@RT+XO$+tSgJj-dWl7riTq+J);->O4E@e2Kp`jGs~N2TH0}v1G=%Qisj$5 zF3bvbfb}R`oT;E~I5%?=%F|L&9;J}71qYL!gwm$Ab>lpk5kkM$&G?EE!ftL8XnA>_ zpRH`S6zCIw=c;Z9g4`bY4lu&0kj*9rz1P8|Nh>kR`n$&|=<0SK&XrKiN*h&ShKmG& z(qU|M@%e^+za$LAn}OyG;urbKrh7?E7p+%8+IDG4IR>*}TIiGNs58A0G&d$!<+EOd z5q^#R52kIHs;A~bxWmv?7esXZKuhTuaR=Km&6;vP=KvGUz9&2gCz>jmGgS zFcx!7+|YsAnMU3Wu&&%q(g9|l+G`AjDE2{!8JCTLt4`f>CyB9*R7A=w1 z%*+Cx^`GYki&aNgy!r@VI$zt#JQDS^0*L^48SCHeEk9YVQptC@m@oQT)sGpa)!I0u zwlT#D2adt}^!nzZNc3aWcmUwO zz)GI0JICaevM_ozn5w~;aVF>_UNcYDs0zmD^I-d5mX$G_%?-OKTuebhiPbiq9MH4G zu!9U^_AAdwB3$St%?} zaue)}lpamKQG&@tdLXbtUFC_0aujIp63=` zXj~*2dvcFdMH_d*!+Z6Cd+5eEj~O|+21RnZDy+?YMImlARSi8BfId&3x?R@mB zXu8ZGZ>@+fcp$O9$F1iRCitAka??;tf})GNT3*$l&A~ykUkWY`27E-)vA-SeFTE=_ z4bean$Rz6QvwIf)Noj-PM?Qr7bvbG+;7FmNKM#UMd64|I!9hQgGU@_WGJTrHW(AOIEJd_t!7RxBC;I8Nyz!ri`pH zNg-h+NQ8vl24D2_yP>0vG1wd`P%M?t?CCrDnneB0<)_3(NnMUA-X%~1=Z#I5*GyR- z0o=B6`(qN-;PYI^=R_-gTYa@jhWi8%DeQe?DGd59lvc@Lmt{#nJKK!8m0Thlx~n6I zUSd6xuoKj5qigggpx9CZ?U|nJj{c(B>ksPiAPAHxh6Xa4J`I=asq~A6&Bc411q*z9yA)3gywxy zx(>`Vg<3dkM-!;Ihm1elp*Ma3^o6S`Nm_7)wdUl>J}#?R+|HWQU~#m5M)@ zCUs_TKFwdCsdmLt1&&1ZXi6br`VdU zK=rRxn<4c7)eLvB&%y`5m^$*=bp4jyerhIs;{09$UvX2bcc}kL=EYfk#WjKPIYMyd z*!^}p1L^b9iR9C)^eo|`jiSPoHKQg&-)+!L42>BIwgRkYY;(%!4^8%wcuUo zQgsr1LQizIdVg#QWwMj4lK)HsY?!6_9-DID5^?#~8tG+C(tpRcaF}A!^t`C ziW?Hth5Ke;3H;BZ(3ZmL%y2!8o$zFHMVIfT|IHY90N{Lv`I)5^5@>@7d`aU!Y8hcJ z8<2~6qvr3bz(KLIFsFZt+Z&X@zC8{c&cM%M1B1w?W)#tVMR0z0j$ zqV+93;JJg>CVb81yeFD87S0a2{%Bl&Q4e5PAmF-G)O~a(J}F>T_MFVf=m}$CRB@~IdLSOWzH*JZimC@Do_jHLB|F8&)j;^X?Jpb{#&Ci7*r z!vW<4TC$%XUBmM;(r^fgnwS)@B)=_nGoPB>{0gK(PIhI?Y5Sx^d*td`A5TA9QsQ{c z=VB>6+_3ezMM$`=TYsf4edW-zN}ZqCdS_Vi{9t-YMva?G>qG6!xN)lci@Tx?E#y)OHisj*t$uO`I zUxt&Yr291&PdcG8x{a!XQugnM3s73?a^nZn`VDQPT|%Lp9(9fC*h#!`_jJw`o~Es6;|*d=sph>&cr4|&GBxl z%7Btv@{&JnZ-`k=LFyp2%FKYYQ6fcDnp<`kKwgh?>!#d8SAAvKb~Gz1I}MB<%r^A< zT~#(Vobmacg(*=MjA8w7DKmiK{`9wcoc(-!fjmwmf7KQpMRS`KWZ8?~1H!>!ktp<^ z-ORUR>)Bm}C}FPUizKMo{x#oNst#LEMV=0iXEW0usvmam! zh&6fa?WluHh>zBi#>{6MSG8mdO#nJaA@*~5^xImY7`jN4S;#&9t+)OZgyn%tgopi`;- z>)cf?H1uLKYBMleKXG34zO4D#8v5ycnV`pWx&VRhA6qp;^2`r~ZKfy-*vi%hd}c;K zJT$fY;( zY+o(3DGCIW)psk(OdVS<(Z%cEcSj;49GtKU? zOIzMIUFFkXH{K7WcHF&M!oAhxaJKNDac_tK4yn!D$Z5HMX=7Du64@p~f_57o@_n1$32=F{S)VUi49@;$_EjK9YzuP?$J=!O7=doMof*_Z8m?XG6I+vpU zVwGRC-%{gJnSVzc7Vu}Ki*YV#xfCC-7B~Z z(yllk)9>8Z&P^}Mv98o=bYU#dK**Hre{Y!+L&Wj7+<9bm!JgQ|ojFU;0`wkTjjR7>l?RFg5DKTM%lAzFk z;djV2J2zdyH@y7FPAV4&hahyLkMES(PB-JNi9P5o6m49&I;g$(XTTKX80 zg`a=qyhFZC+&cJ^So=d7Kt|EP3E8vk6NLyA?t7U!jhL)@m%B`#0*g_`vzMo3w=F-l z=y?0oz*+)LW{-|P=(!8qz~B>tz)-h|f&7A>$KEv6mgU*65ujR>nJn+uC;qQY6!}3+ z<@v0WmuAb%tp5Sv7;q^)959b)d%2uC&&e8FyvcONg}`nbfqQXR4=(dGh2DhC`9-J5 z`#(Smo|(R@KLE?ysJb6;LdPA^%kkvWwe!`eh|l@{n|Ux6ANZ3s_zP!InWWZ$TCrF2 zHN~p{2xl?!^hmNL%vBK2mMpmPnK#w4FyA7Xn+|AXNs6RG2&=4ZmU2KJ5n4_@9IS#f zQf3z5QEU??lz7M#b~0O5mVq@i(#^_7uCy0o16CWpmWavY8Y%{_%D%1qH(9SGt4Qru z5yH`Ud;JF~6ek{;yupTnc^pY)4_PV#HJOFx?CTK+UgP_Xsa1cs&&mbQnsBXjGRC!p z8oA7p&^r^-yJmC3H&TPmSTyoITQtaCSL+nHOpo-HSRo)_6$+($QO`!(*bycJc_G3} zgnE3rYRn`f!3VA!%Y1Hg;4XxG7LwWMSfmQbefCx^0L^@Qof z@Ub_5WMtHG9n~l)!69;fd{m4}UV+Ou-&mrSWf`-_g0RT?#){j!k#q%sbL@H`qAhV^ z`|@U)wHK;>cg%tK`Sf-TCD1!b;X0Kz+sZuVdeHNDj6 z8K5)fdIb81TpI)=ojgF`{rU8;;=0aoA;upD@>~1Y?7z&iF>wuSXq(jTJ$gz;AkDjv zy{jdf2(98?pKr}~3__4EiUn6R_EyBpR6-}GbHoDy%$c<-A*f2R3TusP68aUc83kSn z$8tN+Oca|=3N!4gx2@urTKlad(qY_X2nfSOBe6vL{NpG{X3>vX->FW8NC)`~$Of$S zMhXS&p$H!~eGOGYNfy)ij|nPK=>dCK|2KXImeG}KYp$5Z-;LsOZa(b~QBbPo??a1- zyN$#EcobhXl+}r*1Of_9lW&(3q^jnpU2;D|?CcXZ7n<8$E)F&PP^eLm(77s9e!7(N`TwggP1zCOus~5sZx+bI8iNyWx%c7L3 zv8^fYix+(vu`tS=$wC?gZ6K{!2xNxiLF(p7zYc_eCjlmp!C~*@`F;_YuRF2L%oa@{$6FP<(~=P_IH(yj^yl4nm*F zOok6AcSvtYLAmpbIQA5}Sw6X*hP!yYzbuUL8ks$bTR`UKek$cw|Gl6L)?9T`NXNvKf0<=+ z*XF*x6ZOqh3i;fFu2JOmgF;D^HE^J?{*POe78KKWms=(>RcBG4{`C>F$tz3j$|6Qd z86VCC8VWuI+(oQalkI}2O%q6K+~=?Q!UXtE;?t!%ozVNLyx0>N*GgyGU%a#Hmc+MZ75vV8RHg7CUFlnYFYN|eEuFq zsh2VAl)zcg!dQNiXWVbC-V0P)Bc9oZ@`yigUkY!;Wlo^iIsGDB*yN}rG_qYNtpBgJ z_EOEN@;w~&-0>4D+_|1T-bcXLK#MeaOQPyUro5v_SUrF8-1HnnpvU}- zVe3Hm8HlbWC6%m66cTKVWjNcu9ddNKZ4&e)enRcqPX?@!G~Oz|O;d}NdQMZNGFUXZ z;5+LFY-ykHG=FTyn>`R&nSlkSw7mS81MglOpzYB!pA*u?!s3u}U}+ciCNbNvNaBgi z?R~^SXz08f4s*-&&s80^S#^aEp;=3Qb#7378t+JZL~r+7&AmqZ5#Mq8SqWxf=aP$CLJF0edpf)7q3^iIlWf( zsAgWX-YPf=akrHY1s*%dKhKs>P4%oKM4<>)O5H;a=oZw%=%NQ#mDB_OIA8Y3Rx9~^ zloVt-u#=2IF3TPhdo&9*sgp*AO|wIiY4FwnYwGKh^}_DD4}a z;;G=^Yhg5e_3)d_-2rzASHy8GuY%{J!KQj0aqctd2o(jBfLu0Cl))MJF8oM>d87>j z%C@5cBD3MK%K5JF21T_9Tg<{U0mpw%<9C)*59a) z6tOA2b3e|wiO2R;n(lttlP1Qd{6hcvbHu=AdzfdhVinjl`}}2pYfa^KmW*erCJJ-; z;XpzZLDR-vL?376uwHqv&WHU?*sJX+s$nTISyH*y0Kf)ROt&jhZ}jxr`MUyr_lAv% zXa5E@=QN0RE{ih7KN$psE>a_|F=U^(AM5nM3NV&xq-6rEc6PH1juNKQw!&h2Gqa$wj#br_JY3hUjwxnIJO zv@duILnk)X(jnH$e!?K8^szy7gHEd{F7;lX4^$jppqZPNXT%}lvvBV7&$zDMvvx4`(8i&AbpIE)u)AoEvJ5!u(zV3yd*kA~DP z(05(FJjxnoipNCu`byY;alDRYhpPUx(?Iz|H=m1EI_fxi>7EgJ~@-!H#x1MDf(7awpo)PF;Z#RSBI|iSr zr^y+$J(HY0Qw0@{rq}l`>l?ysw{CI|V_R?n2kIQ%25-4{c=jvn`z{lBJIsgzV{`%r z^rT@GT|mQ~HG)%>ESx~K5!%$?tbQGnJ7Csz25eeH+5w^0R*s8-)_H zk0so-HbdSphF?hJ@7aH4e?oa8ojLwS#-GrL!1gEG--Gflh(S4Ko8g?qx; z`KumgmnHBap<$Bq?c8TW`U!zQS2UKo8Wd?jPyU&5OZjq^R^wm?Y7VG(9GZ2+7x+l? zWz%Ny&pEJZ%g<~$cJi*S5R3#colCBnb_%Y3pL?(MMZw~<3euUJlM$G9!$G0lrWKet z5g*Xwvsme8*9z0|4V=E_ViJYouLW9<7eLqUpQHf*&y3ZdzcFay->6bD6$oEfaXouXtA z9ob>oc!pXLv$8S|8CS@gP_`Fe9k$swA}a9?c^LTZ**>u|>skL*c{~Kp+?ep1dS9)> zYM7)~4(b86F=Cu~j`l~;-Dz>v;kCr-|JJ#PLNR`wk3;sAiz>Qk&T=jN92B?*3V5y zxvCBc3r6ruV3Q}UEu}=If4Rs{Mp^2su)bAm6zw~9+ zNz@{MOh-(MX@df2CMRReg-~pM3$&0bG)=!5yy%=Q{fIPGTL(pf*G7!)nbT+;%_N37 zseg5K;{Nn zljZ;7_FU^A6n@R@HilpU?LRHs0Kp#EVLNy9{u2k9W`fMcUr$ObedV zY~)U;$s7w`3XPa+=PkeFyI2|{#erHA0^Ec->@_m;wN?W_u-b7ilVZ1m(FZ zbL3%k){i=wlb3TI$V_B@_9IQyq+!BVehAnz1P5Ob|5Bd>=Vc^k%SB-Vluj#hv;PsL zE`r^S9!?vUOjkWfYcLR&;5&}i*t zr~m}xJso=YZ)44yMGG!ZM@?!_;Ou>ZtzaHs7aJ|pbu>*= z$=V+3u6`or7Rre0^;neHjwm(oEuoFcLo=2R6fbg68`6g(?4Oayun*MOcGVSrGzUlPT62g(aRKVU7G_>6|*L>~iT%4v8Yj+9Z z+1}He*WG16J<38oc61#%>sD5;nz_@LpK6iREJ1RP+j-5ihTg-)0_ZdC!vC8hz6Cld zf!%^P?L)1?AJ&jEroi(-LNmP_-tX1nt*ppiVS03(SG&iD!U z37f8Orq!Dmu#TH;`Kozg$)b9%TQ(b@z^cM_0kYr(hwq&k3-+pIafXC>gHHK2y4l;J ziaUzhQ5m#!4d0XnUn?s}pso({YG1WsO$jQl@bqD1&xEE2bSkb}9Kj@9RF+G;#V{sC z+9?wMBEFHe{*wY5Y!S!~05q3SRxMSL7aUd~vkTd5k1n6~y`L3`$mc=9`)n|+q;-4` zuus3&85<=q%HMd>sR`{Y;y)?Y_6&GZ#!0fExhE77JwHrm1fcLHB@!y1a{-K$ju6(5 zJOyhqutz-@An?04Ue?Wb$OaXf5}z{Wml5o&y1dvs;7?hhb(LzJN$pw?>SQTa|KV5S zd@z|(0=X8%eqRduer)i2(=u7sCP|@MGx&04qct+JpX-vnpI8@(1g=!H6XVd}<1SxK zrW};}MdCH>*Y$+k%p@gZ7n1G(v_hTe1LQkWFi-{za>69*x-@{MbN;#QUjM&#_To30 zSwanvngktDwW=T?uMx)rr((XJF&v(b6Abw?tjqT@W^m89^0QBpTwDES&RM081Df^d zX-xPzs7K!TmBq#?59XS6#b=tsjc=>KzyIvfT1&smzqTto{~cU*U3(dw5NQm}K)tri zPhc!(OQ$!!+FxhxgYZIqTg9P4*L-QCGHQD9_1S%#AA4#rVb^!Um%AXF`m4+e`w`y7 zAton8s>}_i_Aig|#0}Bs!A(gTby@>Leql%7-7S?kGJa=I5oo^5Uo5<-=d{uB^@zfs zz{`onij)w22Yc5wm58`Jxh@JoqPW&$fxsm4uD2%uk`wnJ$0m(Gd@0y*k9X*57 zFaycbI)E+zxi-m0OBouf`dr9K3$K^xz|Zwosk5GL#&p3#WFFV#LtGc7i2Q~}y{$wk ztWbH!GuU21G6X0b*&S?1)8&-HF-fxhKqDLy2&?(nr{3K2ghi8=vbi<~F*BjxzWoiY z4ZlsH5v9y&0F7IoR%c`7p2b>ewcd-9g-_b8XVv2Yf5`#BFtj9_v7 zO`K_n40FLM!!TH}3J@?b?2ZH!4BImC6m;d>a750o4lv^U{+E7=2&<@&yJAl)?Y}IF z7Br=!)yi~x5IRN&=SV(`$1e}z@AJor!Mxr8>L2}zYy1#B zYG1aub4@ki?ta6*OLt*MT`yK_Go65P{zpAGR(fu|B@#Q`?DEkkvRJs^qZP^vE5qbn zd4;f~c+A0mqA!}8N`55CMithKcJMf>grEQWn}dxxkMO!fl$Gd9FfC5$#O~ALzX>#% zM}e%9*oM0O^c0&#hpsz@$hl7-P+KY$Be95hV_@OEzIF{Rr}IyVjqy%Vl%Eq31B&|V z?@sq0^fS^o&-APT8KR*GFBJwjQ03zPY3hQ5>utwj)IQVKw#*qZYV8^v0U~Q4mo(De zvXE@!cTU9n+Teq{ziqcV^#dNK{oojpJ3sRu?!#++*hRj{aDgiJoT%-)1${SsvcA1L zSOEL%mp?`W!m-ix{m`FFrE8U?_5rTT_5x~n-KrDY!ocR9lsYYzh}$qlmjg(>2A9C}94oP0MVWfsHDtSwJpl%N5L?ZbsR4&i z-rK75aqV!-*gX-)h{Gpaa&Dk2)jNYGffHKA$Vh8&@y?Y)g)me+Z|(<(R9uBXgf5nm z56dc0-danf6^W9Y0}M5<^05nCMDS5+%Fo?3V})MPP59$?rOVS$h{>WKdXA2DahD^7rqkg|1iI ztr3_(^hp@Ik1gnSR;ci1y-XvdMqeU#{Lt&VAG^1FCRKc`Aq|*vUct@zz1njxE&YIwPLKNuY2(j>#uFiwA6Rc{ z3TqwX>SbQ*+AUZ!M2l-Aj|GWOVI|4}d9YGhv|ZAe;AYcS{Fl8m{W?_hGn(crN%4U= zrc0j*z1u|p)lewrY^gYi$vCYh5Zu$vM@zzJ_`;~24&zx6aTWaolb?pJc{N4N!}BF@PmGC6q*lTs;%~7Swj{I?3pXUp`fY$ zF6Rce>d&TcU1O?$^mNLaBWT%nCKM(vCPXaXWhMX zT)N@J^Pvqhk~>_b8d|8xuj0fS5<#y_21%4;^&hiJYmC&|Qn3@U1GOP>OW*%uvIh=} z{J9Ozi}M{~o3CuxxZOgS4b5S%#!#EIJ(^oCM*ulM#=l}C$3zanX<@fJjhUmS9N+`n zM<(&joGQ(^t@Ax!ZJ(Z|Ueg8>sVCeUoG^$CHlqboHWTGd6Af(%X#+sx@TIo7YFV;W zR^6l(XW6-6{)a35xgWTT*QrbL-U3;1m|1Bf@q0J|jJT1*OsNPR(J%CCz^=nx(KQ7_ zdBZW%_~aQOPX2oWiT?t4c4IcxwUWiNN#W+pcmV=wl3-)1wof)JlWvRvJAAc2)I$hm z$6Q2Fj(*2*I|ETHG?hk7Tvd#+ZPyq^1kj*UsdJ7M?@XNNf<#UlmRg0qqo?ChZ&OGB z&iP5DKoh)SL9%E}(#5~_*Q1V9m7c7S&YDgV;YD3U&iZokD{->9o>>tiZkX zq>x?;%%8Q zu_-*D|DGf&B#HO0gI8fGdh8%tb|M=@4U+yCs~JAAfiRzc z#Xy-gs0k_<)$oJkX^FCq)9#9O2L8!Q)Wfk zFWf!t_TG+$Ly-(L<(Bh1h~gZk!u0&-Gh>W%k1^TH5o4d9+vq$i2j2q!QD)BF#NE5S zC8954_!!IacBTwdqjmycs{umIVr`g!44B)^T+FNI4VR;xW5TCavB_2egv*|H1x2?u zs6E^Z*gu&Gp2))Rc6-1x4dvCIO{RkFF{y8eHLq*RLcRw_Q+p;;kNZ*96HVEBRsBbj zu#J4i*u#M*HKHN?b2)t5-ar{rdwbYbW8-DfN0KFm#VsW^4{c&h4I_l zY()kxff*iS>3oEB@dh=?FD(l!p%2SWj(FY7iN) zPZ$$Yygp(Q%4pS&Ur?7u{%w8R0Hdt+3% zN75K{hREEo4TCj(b~4B+?Z|X9Atov{|0YZcrJ9sctIuKMX)ml!Ky}wQ)5$f;5|BYetQ+EV!W2jPe3U zfD6h^2EjYj{ot88yDLR}-3#XSUItiQMtjk><#(8ZXk z6VJ3Ka2fqQd!P+V*TKdI5=VD>+SztH7@O~~uy`uVhSkzdoT!_e7pOHix`r!EMi(sL ze{yuj!KNg)MPwbM0#P#{$)+pg-W>@w-gNH~Y1hy!nM@i|V;S@WvPKw4U5n1_x@aE- zqqOIT?0~D^lm^uAiA{(CEa3t6$StMw|0r)CU5EE-ovrTe-S%{s*{e;%IY3N5$DS5K z(65?17s6qnG~*422B>|a#rUA3IqvmHZx<&lM!6+!7)i@OL21qkpV@nXPMkzuYgnM* zB>F`S=p$ZU^M>1$*k_*51pAPRVa5Y+7maA9f5WOI6PGFrWM;{C`QEhEF}X3Dy7vPzgraek3(VRc%T~#Y0J7dFg60`5 zFuiEsB;(Hgcv46)h;Dg7o5A=?AT5gf@p83mvgg>~RYlytzIkeh@_bm<=v?5ik;#OC zsZWg5@t^S(^f5XH=@#V;i9(TUVAvG$$1GvqQ%c-HLQDmr$osSjry0UDS{r{Ki8Od` zl{vU0Vy~2UQ_QFZ?kr3#l-2H#&B6@gc8*`+E<@o#w!9hj6{E7-!50?+C+(4kO80hd zHDmW*a_sv53wJ;*o0@iI40xK(F$b|rInJ0r{b@Ew@GhR&x@VlmaC8%Mn#G5$k-dfg zV9}dug25pAHQDX&(_(c0@=unM?NdKcEs2pX)QaAmwhLFp4xYRs*EvV!;3z{&^859fTb zcge-oB*zrPXJ#e@+~Eg_$4K))z(8d_=Mly)eCRSZF}t3_G}hzsr^7QIV{n%04#B=g z6riNj82;$!?s;k53gPSc^=={PxcM=BC-sn{DJ$oy(TPYQw!=)y8qYaq&fgskmcIs&}xErS2=IRBEll$ zT-~{wxZzK(SJc#Da|YLS1|vtvdEm*WH&&9rP7k+Le>_<$H;4tQGac4| z`hXWuX9M@r%@fn&a8iuZeq*|w$^9y{&YC}e7n}NV(@y=}sl=^>qx2EFR;;v&i4u;m zvuTLf`KZl_L(y>-rRbJA2G0fJe(l-V0iihqk6{dn1ag>J z{59wT|AwNkAAbmtL+en|=0a3;FPCl%?r?JwoNL_ws+eF$g1A=7=<7sT z+p8j~EpOB2O$gMu^2~!>6yIlLN{ZA{eVkR!7lRb+z>E3J7k1Pzer1ra7dU9uBC{eD zZitV754B!e8;d9uRnSIrNITp=lT9v`Oa){gzHDCp^tyA^GUpIVs|E`tBn8$xtXK&7 zc|D-}G<&q_1`Mq9uDJ%QNEY-!znE~&B=8e7Fm|gi`)HDF$ivKlprGgtwAQ_6aRwVv%^KEPq}}Y!Lo~O!XDd3<7g9n zwV2he-`E$5aKi27pDi?Gc~Dfk1a{Z8eM3q$w1^n+9G#sFx+ZfqO`GiYaKd$RD1V1f z?PT3Xu#8lTruuqP9v05%Vcl|oc3{+>$K9JxLoF$+(3E%BsLVFnDLoMCa~${0+HXUzA%^9NxqSH#k7*IQv+EvKvF`tBK}Ug^@i1Z zW{Dw(8Jy1g-@+t4$T@oV{fTQaAl(kj)64&kVlR`VF{h40cLN-{*K-LI$Tf81N6)T0 z4Q6ejs*!`PLH)WZ0LgYE1G=opk*HHs5n2s#RpM#F;l*~tP6e|kdgOL>b=^tn7Rp?A zar?ojbD(Awm`adSh5US))v2SYZeAGhXJ~UPd3|6IZor$yqc&r*Xj4Od;Oa_GvEfDf zT^ru`avGv>np#qCF%ETluR;daDw}6OsHw<2*YXJVa&uNl>wp+hgh7GRaCwQ|d5#ya z=2&OqgXk?ZJm>u*AplBslSJrx(czd~-lMlvpxP>OZKl#t{&mPvi%5|)nhbew13smya5MB7g-`!Y&n73*VWrTRmz z!HERW=zIvEdLXAstwglIfYLwz*dTOut+D!y!_{H|%K2Q%x9$xkG|+9NmWRB(Z~j zk|t3lz2qTcpBqDnS4636ORK&LR6`p9tS+P5dFx5*d-#~P8)Y29M&mS1DG20R7!)2PlYVcTdO9g6x78j}n2{6i#JHAf(-kFdbhk-7T-=0T&@LzEdA^S}{Ut zd#F|VL`H1HzHwe?u#-f(Mef(wwEOLIApi7$GH97rF_L_0MJ~nz@?n0sJ@c|@P1es3 z(#MQtIeYGyNTMf0rzinJ`eL`5k$YHp7Zwfz7(7aA>-n(nT!9CWA7ts8Lr9nuRIPGs z$X3qyLDImRc^5{-vz`dxGnRVSj;oPipKg+>GEW}q?@=-er05RN4fS=S)YX-)FXfuN zG--u75vCh|o=yJ6RU0qug!erZMZLpXdB_FD2Mhozi-z+#-*c)V zWDqVm){ft7G#3aWDCNhtVyBHdD1Vk_*yDZMnrI%g=LA2lAApL8IEkG*`5et1Ad_bz z8->lJl!K@T+i7)k>#c2VHKQm_D9OlQHbrCo_IRCLx{>gR3KM@`I`73Srxi zl<^DHt>=RynSdifXOJx+B>04_E_#9~-my_)C5wKij1lnbJN$E3gHu z{g?5o+EYIvmFRX8+i#9PlvE^V_hscfAQ4fEAVEYWP6hZn&7AXh(*)9EdLgq*+B>ct z{qAp}ipsO4u`+lj)p~0;FE&F(t93+1OUoSPTQ!)0`_4}3#gjakm=%?Zg}gyYn=q|( znodyOPJ%;v&FoCP{wa*6h9%A2R}6uipL2+RxSn{nTt>WA?vT;g%xl!Oja_W6fi{ba z(ZC#b#d;}oRYwNxPHq4MMU5C{=xn}xG9Elxtr(f8iDFtS zuw=`%R(>4(i1U(!#eDKX9jU(5VO%3OCHd^D`0i=w9YVbhs^l>I)#_?acP|Hf zO<+!lkIPL3P!v5qPtqy6#=KT7kX}ZHf}`n0dW$z)FaSq^VkZn=Pv4uxcdS^W)~{6p zg-u{>dRQ5SlHVbspGLErQ?7yd;-cc+Qv=bW$2`Y78~{y=tQ&8M0&zQ zFkG0vk_KAgGv>q*0SKl}le!I}6LCszn3_?aV@)P2b6`$m+m|DlO5q(m7P>`=Kjedt zQxV333~7CZG_lWY_#i0wJP%fM`^Y*54c-K=JsqzpKt4D&2i@{K(G#7m&!TLSegNqE z_tCEh!T9Q~K1OS@fz)DkK(tAEfpa7N^Yf0bf;i3L-3xVXBdwLtMbgsA_|2>gHwy&; zDVT%pTM63;llYgU{HtqR)qizPtodEN8|SN0sT>=Gq|f!PrtE?ASc)=(TZzgIR5*_7 z_z^bH1yCQZq{6kFW)ZX!1!vmEY1Lo4ly zzqkP-$n7OH0!EU_vHnNztrSwUUcWnq3kAv5PrH^Q5bZYE`f7lLhBq;ZBSe8GT5EmrSe2LUn4!8$uiJYZf$E9eAQ=*E_o&mWUv z6;}#*WB&zL+DmVpSxXpcdS3|OLFus@#8S$3b|^LX6)nvq>W_G&S@@<&ZCy|?Qco>o zg7`qOH2V1*)w7&16faD3eX%ivSk)3}GpO0-uw!ya_6L0Rs*a5hi6FdEb@OK3r&@b| zc;<}xh_LSZR`%}PSh?1poru(f{zw})qxP!}Z{M!E??ffan15UU=jA*T^2d`?59V8C zbJR)N-3~65d-re zu0oVgqz7K}6gmfT^-n2$_`lLA2z^kaNzWtTnM{Sd9l!u`)mLq<+xV4U1DCI#l}iMG z%pKU5VxKIF=xQZihCe~rZ^EW$bIdyn)mlt1@6dfB@wUz;R`F7f#oa)nzWA0Omjhom zLkWUHhU?kgB719d-3jm8;l&UUxRAvmsBeaP-+?#fZF{nmUru=(Jl>dLX<>H%@m z93|4wAtErj#kIP=hBIz4Cz1H3Zwv;x8>axSh;0`Btd0VS za)tsb9NFI)bJM^)howPv2kol_-x``?!-AM(MQFufy3{A;f{|-3;S?>{B~luT$$)-I zXrvp>Roo$nM?TEO#zEWu2P@U^`B)P?n5eUe+F0nH{X}IM&=%Gn&8(#Da}ainl?_aG z7g@4|rBAU(j(d8b&lEX|jj{m0l<9oHmc}Jg{7CfrFKyl{kluB*9L5vLF}9CInTb%=&o>5OrWb|F)JHDMZhp-2MFpPxNzE@0Jb~ z9a|FC%&RQ28iJcxLlPGasOOlL?-b9-`(Je=U0E6;khSr%Kf)7FbVE>v8+< zu{y>&bETG}y@6^aMZ_7{qSKkTL5qtOD=x(of$OWwX3mb@1?9_*__}@*Onv5Hg{bch z&dRy}{cey=g8gPLvo`eC|5yz8S@L=>xfXMJQA$@o=YYT94u|dr+ze`TI`!C%zm)Gw ztPkq93X5l*Rk8)G@bp!iGZ#P0Gxl~n!h+jqQe8tdO-(S<{(!AW!$ElPaImsi^#Q47 zOnf|Dj1hGhh!?_yv|N!RWCOQ;K4CHenvZUfg+Fcgtf@&xBw`I*3z^H=(E*1B7qGWS z3a=nG)n(*t@V@$Z4?2W78dG0~Bdoe+nc`RCbOI?QgOQyjB^(K#$q z82RoHGrDh~j1M2&4|ruyj_&~Mip|mAN zEhZkjhyGpAA~>X zVE^MwOS4nzhcVZIZa4PM`R5)Jbt$~aleSv$`KusRftTMS15s2_RItFZe6L(A`@B`= z@j>V(-F$WF>|}Ft2wUXlYVS?$)>xDa0s8V)IlK`nGmAuC5sVKY+>SNw0?LjZ`S}y` z2o1Hm2}0!adw)`}J1o=loQ5|{$MfT08G%E_?w^Mo}k zkRcY3_=su*g*s>>2~+%cJPsPuKr1QU;wt!KLVG>_R(@QqU2-_{-qkhtrwWs^kvA{r zbvQfeN9LR3Fu=Vra#HYmw*&gZC0=g2EsVl8d>sn^y40t3J0DtBuErSxO0t*G={JRg zGu`6ts0@um-w2&ITIjlO0~NOXB99pa4E&wC$%Md z0#ZyfmNCkb17n?&lB4LZ5BEunCS-5+D#xo6Ro98@$)hc1E@V#`H?sUF@E|U^WXET^ zN~YNNN_RRkD_8 ziCda26Q8pXDw>7X(PaU0mM6B(nmNx1{{1(8d^5|@uP8+Fb%#s>?m$-jdB~+vtZpo0 zCMAqNhp)ikjkN@qiMdIY=xItW`0gUxs;;hd_^0oqt=n1C$ThLjU z>(l+GHX`0DFpDwFDJ=?vNMGePRfcoCK#(W>xETq>v#bEc>Aic6ouJiL< zaM@(M7=^V{8w=kDDBt zy2%o%O81>u`=dpAoi+GVnaJ~G*Vn2ui_yKP1Xqe@g9QlBc}5-}AsK-4Ei_j4K;O~Liu#^}Ux~X8B8AZ+!7o-c~WvvmzM713MV=7 zv|W<_JPg8Jk$It!FC4hX>Le2>vld>j*O@Nmb0z+&{-|b8i2AA>P+dB<6|wGm#m;=W zI7|k3GeH8Ls@nQ@XdpO}s$zAf6;G&huWmv=QQ=W<@wKXVMZla;S&M*j?20!veC^%v z-9;=!DM6V&EbkTt8m$s7l^0H#Z$POTdjZ#DR^-EByVDb8?G4Jcm)E$OJ-exJ?*)_} zPr&^0X)R4@+_I3!BeSE${6eSTa@VcQX`FbX!VA!h2OWmNak-L@W~ zSC*O$_-YHMC{77VcH;77b47`xTeu-~P%%LY)KlW{+7u48rTydtzWv|38?#MWccNu+ z#f^@XgCI%M=O}2*I&Bb%9S?NwS8(Y6>mTDv((WEzQFoFT?{NlIFe>@Lx#_csFKl?w zHNBV12*d=+>Z{tFvI6wx4MIp=H7D@QK@h+$AAw2r1y|-jFB6FNh zp-m;OIu$ZCZ~~Zm%~Ch%5c)HWD9f295#b!T8-v_|jpRqM#b`oA3J@5djMEc>D#nh~+ zqsWN;G;(6+(8Q9GZFSVpMuU~w>phyuh>h05#QIb7`Z=b^2syfvh0?MfR$uYytmk)x z%i}0%(v~T7!|N_D)42i{Dozm8l~E9tt!Q=!8YDb`lc8DjeGX8`#2D!snUC>%$=m2( ziaglj!Ey3BHZUt-QLr7hndIqZEegHb2e z&Fdp^7N|S zmVbWv+~p@(Qu#dO2eYk~(eAzy8b=u^VgyOa2+Tbf&}aJMJ3UAV6bz);v!5a@ zb7w-aGV~H36Mr4&1KNyazi2nr9=cJeu{GWN>s15GL-3QOL2=q?2lrZZkf@&Q02n3Y zVu|=1?~s&Gt~a&iIeX-66M5t^-0jM2>qxZguRH>w_KNtv$7I(25(}XPt@N!R|b~;BLahF`bLOBolg~g#Ce)x1*{o%8zIV8ra3ez?^66+6oj% zrTcu)ZNsqn_p&j*S#3fKg0eADl`I=`}Ox7tYjz_ zvg8w>;S@kPSHN^ATDbH}GW`CbUcKz&4^bWO`#E!YnI8o6$eZd#FCgGnQT@1aEgZ!s zO|Hndz8nP|K#+@aE`iwEjqEKXs}+5Qdi-rr%i7#xas1cDm1H3o-8M(!@Y1n+z1i-t zU@*?Vj-(*b#EGu0(R%wiC8qS`Kbvr(`3|Rx=XhOyQRPBYyB^<4vrYxBOiUuQ9a_{p z9j0iQyZ`l;^t!7J;ArMUAY|QshTL;Vq|yLv@m1r4EBs#N$~6Xd)^kSD8>cIVarx-YVTI?5&Smnhia{0S)La9W6L&9w~ z9M1wy3j>0|Du7%v@lNDvOg^y3K^Xw@peM_FiAs!g2>|VgrgU?8w|}C8BmrRWMIXvO z=7SUt3^1c#1NeI#MfZ)~#k^4Rq1|I$E*~>_{7m`3pim*Wp5N!a0w&}vG?PGV{lq*w zJF|F0k;-B|m#)o0Y+OW@0_a=TaRb7j`lJ=l0KBI94>!M9?Ui$|FbmCu-u52|k-Eb0 zrNH;hc?a#JsSA-jrW^bo8xGR9$7M3Vucn3vXxr@kJ%PBmpC85l|E{KpQ1Z@kTN(*N z)!4M_f%D-$$bFS>wcZMI>L<47)*}#o|5n-|oR4o9 z-Penz$HUdW=Cd;ad0&7-(Gf)@q>K>7<&l!={N*#}%S~O9usK-3V63}{jzc+)YoWM&JM7@y``CKQK((r-1UT`HF%l0y(o39z<;_{Ai7aVaL9&?!k zchLc4kAXa4IKVOGNMsTpy~?pi8%h0d@hcHLJ!>c^E>*`jZrmxLHmoMV)PHF{TI~Lo z-Zqq5S`?Gm0=MkIfVN5p80$C5gh3aJE2q)OT}{^H3)uA0nb7jno(j|GzCMn=K-L7W zkCw`^GLueU$pgT;$o}nO7K~WJhwJflKAWVx)34(pMT(r9(JD?etTT3iV{e0!bu;b^ z`{z%T`VQ=M%O2~eG^1;kL%Z8}-tsLWv4%5FHyCImQ=K*hDBmy)rYyOKfj^nOB`^~Y z*rXceTcDesudGXQ2tb#E4D z>k{XP*{+-|hB9kcDT*)I)&5n9WkV<5GM+TEb>He-s-=QXWG0@aC|;IsD~l26R^nuI z=hhX448%%e;0K32?Y2Z$WFwppF$1o{hMi1i;iTmWfDy{#B$R`>H95RK6zO#u&s}fn zlEd-RxuXn!PNB~Z3dPK)t{`j+X_vVD%IW;uab*IJ;)@86aNjtF$QcvVIX9_?*St~J z&7)`8|CFjYKUnUbsDm@sUV5*IA&DFqsw2)j4yOXwJxek^zk*M&dOq*B{nB1>r}86> zq@aLzIm=7jV6zeg1NH+C*1{oqaj5TZig{X&${IyjhqXd&UucSGwouv)U)bUp!L)Qu zkEDT{DigBS6`itL z6+Kn;LD-u`qS8h?124?kNuZ2huy7+iC~Phi56&r+#(}gI_?kHJwkIDTSiS#b^2gY2 za=eRRr;0#k{%k^AVg&Nx5f}&$O@pw%{7XMq0T@@p9vELEc4@~54j!se8q40IYDn;* z4QQYN-py^^<3>`?!WnFR_@gU(usi6(n{hy}xe=Z8Sk4o1!6v#np-`Z^W-f-FDcfz8C z$5=$WY}4ayfwl28wWsx8smqE%Vqh$2(em$uXD*^y`Lv?QoP&vc!W24~u#zGeT>E4}Bi|8)RPdTvG(J-@s{*(6?$K4d>N$5Y< z#@!vl4|DeIeQ=boixD-@`=!AQ)U;Ro05O`Gx0qU~M6Ucr8`jF>7`V8f=Am?I+RpQn zD1YnP?)N{<)i-L_1>4y`qpIya??Mma#s|FMvE`(nsP ziMmv@K&9kKRCELnOnjY2Y=U{H`To{K>&nBeVk&;|j9*3mMww z*2u($qV^Q$H>*r8=#~LixST*SPVBWz2aR5Xuy~y42-2P?Vj6fsm-3DQ&vryaS?V@o zv$`n++G-S(H=gpHH(X)XEPx_nO=(UIW01i=vmg^=Cb$NQ<-bFcSHUmsVx|W{xz9RQ z9|jfHxnNkT@xZwaI2>#bv`{GEf^peZPAQ@8L7<~2I58t zCQv9t`~ZcPHE?kIhtR|2O>T%xD4?xr2SXS7P6eU$(OkK?WFKnMgvl~LG-Y{2o!WG1 zg8Fy3pBhi)mz~-8)MQ2c*cbo^E`O-N`yWiVS_CA%HXV^id)V~kd%K9k%*jHOilw%) zpGBoG)io%W=Hzz%o}UZ`ePxjzz(p-^ zu7$uD=(x2W?8#3}$yX=(_`o!rD)bue5#ayd;x_93oAV+d{Xl?oOGn_W-7nHpZsGco z?x^p>08vA1ER~DO^)dn@X~Je0DQ$4iy$~>5y}*mdpcvn?80oBw7p-6F!<;gj>IPmk zgrZ;Njf;We_(-UE`OG+s@1DZ>Cvqmv+PB2$&ntnqXPTF#!@t))upiJCgE;8a?Nh1? zz48&LO9ESe>VA7YDZ&uAFKgjPF{oJK7UEHDX^vxTRj#8MmtDqX{)W`Xl`z5tz3t}g z!#Yuo0aGPx+U>({d*Z`uMG(iP-V6fvz0G zCf`sy)cTXe^Lo;z@M#xLX3c_1a2%SVF4K!cI2aIgmUzhTv+fS!J%DxJQf2`Ew~sKA z{@#YqGG}RYZcK48CVI6YqhCnM`Y<2Sao^5E9xlT{SgDp78*Tq`fLYF6-4mD zK>BdDg)REk_Vo^wuV(L`wVAsmdK5!QcCjxIK(qMR&#a;1(4;c8d0EQa{l-JFVEXX! zC%vP5>3>b-g6#uBhUJPV9^;9h5VK$wU5nmr1xJ&xN^7xrY(ze;hpqDen>?DQ&UB}p zpOUXUrJ$i?=u@{Fe;8B&MR#wAWI;Vm%t95eKvuM&l%0yzm6A_nqiR*aZPPnLt%&?J zOJZ0ZFXa!5dqf+BV$|Io95;*$ayt7lKj|gDZuY+bve}%pg{xZ%OYRdSJ8VcAk8Xnt z55jfW%4eZsXr)1!>sy^KN#D(0|3(oEX5tyDqwZPB5s;bw!-dRv(R7C4aD*Nt;{`*d zD@7A@PS$W}d94TyPu@F50PNNY4Y_m(liX($>-+v7475768vz)KERFXV|yp(H)1XSkqTkqdLJ%{=K#aW^ij zdbXpeg=Go2uYvY@K5_eI&Q(-k!3D?U?udW1R^ker4<0|TsF<1uRaa~s)8Vstu}<9U z64Ab=@u5ie6uh_BVLPYB3=L1uA;qE@t(uwb0MIB~ePvp(5tO6#CT-eveVty9RRZt< z5Tku$?4yK@Q+=!)i}hye9~LAt9w~WV*1%uSN~oR8nHEf*=X4LLtuW;b?^~BpQQeY# z_gA*of=qh45SzErntAomLs5ywEB6W)>LPnkwQ(#Zpwmg?pBdyjckRQ1qI}i1{#a7= zK=oTDb;U_qgdjJc>CfiDzS~#7VIy5=qC-VvUqXWL*INP9v>#9$BUcFLYR3`1j_^=x zBrPa~WtzYLlnmd3?{wjcKOko#+b0VX?Hf{ch9{SsDjHF1;Dr9rVfHP{V2t8%|BER5 zdH57M4Enge>q|5XS)pXW04DUi>X=_h9^7{p^>{0<=~=dLUO>7cyp)D3Ii%{F7zff) zUIjMY`5$FV9MPX|lj{7@xG!yGvlQMo8$)KT^+Rx>2)8h#!j1d1q`I{6AZUqBsknJ| z1AqWv07IA6iB&;)?!-3LSQ;rk+#D@+?Je$2XtY&7mh|D1_8S+@EsQ`zN?(K@`92Ai zkwszT*!~_1OKS1}1oX!Mw%~Hmj3{q;6D9GQ@(*|n)F^^lMliPjZwHLVe ziezm7W2{Zi9PSr}^^)t3#ubnYLl+xqSQzNnfxWr=<>E}j@S^J~5NRjXovo(<kRX zpr~f&4HS*#hB_ibpf{TFAAb4X))ErGCm^{9*3KV_#R%Yfy%u{7xlm(CTS%UkCQ~ex zrycOM%t^T~n`|xT203XZ4|2?AO}>26mjVy+wY)kSC*RH#liyOgH@ok|pt}%LP7}9( z9CSm%&TH}iw0Q;irxe)pOvL#nYP}sXIFp&i*0Ea*1^#@k_W1ApVz-Qgz?L?|f?FPr z^0-)e8^UXaYc0$XbLGh}nbyMW@v_J)WJRKuAU1oT*eZno_nPqN?G&P>PV5e%T#??1 z^#BK?7H|ur=Z^FadTS_$whheyH-{uFEa{1-UaqKYN&+f6q&O+0M_s}r;9!6OcTYrY zu>;ie4mKsngBw}Y5t4RXr?RA+D#C(NdB#}5#r_fV|3x5I@FzTZc^y~&XQ_QE(#Vxn z6)@_^)$n53qSGK<_g|zQzOwDxXi(q>4(5bZ>P{Mc*Vu?+2OkLhN5$y%o43KfLgo{| zJ|vS?DtNGu!Xj8w(NunV6J%+aQtbJH8&^u5wff3ccAW&!fqg;Z$KV$jE7S-~y+=_3c?E=4~8AhmdIJZr{ zEB-mh*tbo|{vF4N@Q{7}^adnHq8@TEy)*csghqou4B&I2L5>fxVGvbm1MFg%;pZ8{ zeZnkywRAdx!#S{zg+0px7vz)nx8#7oy5{<7GG8s%Z#XW86{to+C>H>Z?%b4Bj6NCp z#X<-7Y7L{IU}dQEGr&3)xpe`enmR%}AA0GDn(v)oMlqE3Y?x%Tu!6*goTVUCf=zU7 z?&4SEPQWyo0N;)L;*EDp;q71qXXJwGiy4>Y6{)NKNpo@88`~8*2E-cKi+OV1XO1l3 zhF9Cuaz~vjzO*b~N3%YQF&#>nY{Uyk%VDx}`r27t_B`3fz;1Z(5MkRovsXWy6|FXo zql5w6*)uMeepu#CV(spST2=G=)lW5qRS7>7KAnKSa|)V_=rZM`y-zfxeO#417lAFQL;bEh6c8a!3&Gb!^!@8nYsTTEnVoV}-!G(wdNp>xp` z1Bm1nY}G>AIBqk|I?D7ZB}hSB$HR83!_nOQXB3t3_$&^e^TPAy*q~dnQ>U01ht%Imm_i zG!+6_4Ni(^`w2FiNXn|ARHc?J1TDTsX^3c@-wVQUSFEeit7&`5Q)=U^a-nQ2h;E_k zRy_FTIY~Kgi*82DB^`@K>nk#EX9}j6%+>a7eB*91RTPmv*){iB_uxZG{~>jprPez$KcDfp>FTpW2z< zEN05m1Lc*~HA)rwhO>w5*wtak98U>nAh>}I8lTnLACW`qKB|Qe1}6`#rHF?d^@dqv zO|h_WC4Fwp;!{=h5*C#oL=jJBhAPF4;kJe5)0zkMD;*N?wBR5LSJSlMMOtXhdeVQJ z{uTKF@-}R-mOgitFhZ|wDq^gEyGTeSJ&Ryc13hDg9ea&fS3h23Q<9xsx^RMsS8_!} zsj|BqWy8TBMV&=RdVFFdhD3O19fZ2sy1KtoRhkAV4H!J zPsoc~yrs{)|55YU%^<;y>BZ{&7N#(NZ9vl^{MR$^0=PH(+wN;X+D_>rPvI4ZEDQ28qyGO478ZVT4d z==nIcw--l>g*H(RN35E?i9e~@q+7^o zXAfmjeP)@eX(K7RIv0w*v znGe9@)>ekdTY3as4vo-(BD-xKe!S=0Hr}Z^wAAuKn&80=`ha0Di*F<4ykr-XU=Q&- zPkA@)(>hLN2a+Z*#~>cGZByE%a2kohcV-Onp5lNzb35v2Lpa$V7sGir&1hbs&NT>{ zd&xgPWh)ht_d{x+iX;4(vtRSWNQo7nB;JgQ#DE1u)RXf&96(81N+k(@f7r5wqIXbO zn$o)Gk_#ps7T0)oUm>-_DJqDU7_ZJce7=z5tU8rq#aiHdNQc36A6lA9%URr|+h$8@ zeatF-JQ_X!L9cwJ|KO5jdx37sUF&W%))LAVKNWEd`~Rz(W`YCE5v{V*uON((U^3Q@ zdCGu@$nUv-lUExlrj&K`L%HbmDygHWgr@|G9jsKSFk|0X>|V;A{9}Sw3@KU;m|3^9 z+oIg=T@MS~XwN^&QWaYV#)NJ!5H8BNjhNyaUx%)C1gv5_)t~u$fjH5)WKU?3Zl5}O zmQX@WOfCmu@p%t92YM^ClRvey=rU|Rhp(Yd))!&`3xS>E7T6`{*MhZD%A$+`Ai;lD z!)1mQzIZ<&<{dC?erSK}*(b(j@%rgE&*7cF28P9RT*ZdP)MYhcL3W$Cei@V`kv5fH z;h%k&#*rs}Vb&eXqCT2|t>W5v)}AmPwnG3nZR?m?v!bpqUL5tFpAdzG>#Ll>_ezD) zScn7=^v19Bd2c)Lr>Skh1J9^b{l`plluQU~lf1`SV)WGl8k1bo0p4WKu3EhlqId)F z$XV%Z3X-PBuK0tgtyc+MZhf=M!}^Uvt}!FBKFUXCQ=GAcE8$e(I}u3ss>YZHA2WJ6lR0sV(oZNXct_{ZJ}+)Q~f^bdbmbT^TMf`*nRl`LqNR0t(pA~ zAyO8(YTAHWdyHk4XVJtq}?}KMMg> zGg6&M*`Jfu4T5wsre$X+vU7enzn zc01m$QiOzbc-6oX9D-o{lG;hxKL#AWh~NHN4YN*jZQM3#}P#sJIJO&bU`-4K`p#z?>P(Kk~FENEHEhB zGNe7KZ_h+0q7tu$4U|Rva@^J4pPj$FZy2k!Q7}d6qI!dnda|)oGq67jI5iDsXckD{~ZWU z({|Ny$sFOP`d!6G7)*g&JSm+~H*&LY%e^H5sw2FKfFgwN6gUqhe5t>e@r$*M~vCa80wu%J8P3qhXi65uA?yuIiYV4!HiJ zF2Btos=xX{gTnzzdxlypLZLXhhgoZP!(K6eMMXeSt zVA)`3N9*fu=99{e~oL353KP~^-KdIGtgOq04qeFK*U>nvEX@VQ! z&l?3m@-ut?*S^N(B%*B!ggD&HED$+$?G03nA-P!Ei_?@(19%Sop`d)9gJqTP&H~K! z*}91jdNWNilg`Ll*^#q}s()h5w@jA>N?%~-QhBQ(vLo?r^VaY=W(*CAm>A{>)P_NM zTfj{^<`2yahqZRrZDcP$KKJPfzM0T`OCL?XU4EsHa+q1eO znwh-U*Rha6lM}yBDhZIbUqNt2oH{ms_K7ec@}#Fflm(#M#xGFSk&S81g|W(J$c1h1 zQk}moqqOcy+ldiB=z#g;XiwE)1( zDUW8@Q#gsDctLuQ{DZ@P?x{m{hg%5Y?h@XR+(HW$Ke|&!Nw>Zm1DLO?igCZApx>YD z(+WGXV6^{N{710ZM&jS9mhIOi5n}-hvZ3CX#1-SIrw!eoLVXIWL!!DQ8v`$U*Ef4k z)d2ru0N_{n=(HH5cv7mx=)J6qY`i>XLrjtxT}W468P&_t{-?U0PXkc=zMZ|QJDS(f zL~@<%1ve<=4p>$Tzieo4f0m-Nlf7B4d^qPA`!0Lpw`^Z$smc-H46y%HFnqd{t6Vcq zC6Dpo7&JerfY4GeYW&@GvAM-8?1{on<39@YseSCLw9uHBfU4d-p#(QT+*NPGN{oqg zluo*+%X&iRO4HYd&pAKC?GK&1bDn&aHw3EbqL%q-kXyk>e!ix^~vFYjW}WS zfB@3mgx0 z^_(T7{}fs|gWUR?p<}x0Vz;PUJ}j*0Ey^!X(hI;pS-7|G^q|t)-rREKzC@hG%05_- zCHetjyftrEzO2uUo3eiJi$%-v?l7*$gF8|Z-+&4gTu7YJ?3iiuM~5~gbvYN(5Cl_IUJ!kMEy&nnjS;>w(AJcLr+63;p~u)TJyzeT9H%6GJd z1t}UJGABgMBsi`8V2EMBfmEZw^87vPaPY;5%?(fd~n~)0H#1keL zW`q-8P653aCaBl&M>unzcy|A*pl8AkT2Z$L)d#S%;amvfEzj7{6Q`$4Ef{E;Z5|GB$Z6?V4)rq>9XBJVcVxdGtB@vxFm4E%c1}t=B?G@ zV~1=TBZd$f(haitWtK>>CnC5UZ>}SAm>s0&^BxyzfC=E*Ol(B~#5rUB^^KM3UH*-6y=K76Rm;rY(vab7sC3yjH33tf(a z={Ntw3vctzZ6L4(ONOz;ILC=jBc+Xx$;l1o6re-VVVXKw!odRpk-l>>9x zTbxhLz~F?|OH$MAGu1gzBBNn-%No%W2_E2yr_k0RcF@W}z*i})Q%_hjX;7e||3;Rw zcQIp8JL*(Pjda}JP+Id+a^V6*x29uc{N{g1)ztAPR^@6pZ~au@>hO-BY(er1ZW-PE zs+Rru30iBz*FiQVOsDuxk{!EZ_I)Y;_TuAAlmOr@5?{%qh{$fY~Fa;rgh|U-n*fDc@lU zIEQFogR(Ofg29Mmp&#tPN1;UVaL>4C9usdnW`-gCe-g3atb0g?p`+eV-$ zJ9r#fYA(lh)rU}c!%IGMZQ7-EN#)AvPQ1j_ip5U$Axvsr6~ei|6X+N+4c{D zJ9SdE2e=ZR)P#)Wf|0?5U}#}**yPJWt?eXRLw!g_-&C6E0LWvK5ND6GQk&}q_R(92 zyg)q#;iao`>aj=3vGFEg8SZ=&iM2WO2J2*eHa~fKIFie>R$@zQNrum@MqvkVw3+hi zg~x)8ckLCy)NZOu$v8#=TCG75P-dUT7o%~P?DL|-iS7m8ri+o&g1FTF@z(6?BR_Z; z`Q~wN?mpZN3=4lMgF+CnUtU8DFpUVMicWARjMv=2=x!bu-2egvyM$eN=Kzi*Zp~dN za|pW~YQrJsB_RK|DSh#-wzMU3WpSLXs+)2UkgRl0&aJ- zk1%LbAm&v@V+%ND8{hRl2FnnYa@5D#A*NIeo7gB9(T#s_Nrez_*`E+0G%gpG_`igE zM`q4lRkNW+2#x?CevvMGbs>>SVTM02tNz4jn2bEsto~>{u66~F$Yi3Bz*k?vCZkxP zh77SqNkKB8&RjW(Oz1<}m;47d_A(g{9n*0G6Tuwjlt*Tme3>~N6`O9dxkOS=1I{6y z)1FUqb(X(4%=VOWzZK49f4NSRRCUIVDM@Q!+h92%hgVJ=K_U_SQyPRRWg}X?W4E|v z+lFYvqkj(I)-5Vc&OK}pN#P|@moL8tdJ1}q`Yt83=@b};8Td73`;jnKflN@dLe1l+ zf!pkUEwP-BA#Mk_#tx}4yJvmkypCHTu2%zxqF+sgeC(p_4bKq)-B34-6fZ{z;DI5X zaA7|tbQ6M8JbQVkSBt8+Ny%fQlPr?7(x$kTqM#%Ll} z<9BIX)x?W~vL?^;nCx0u7F{%U)D>~z&ruGhHuIB#{+ef>V7zI**KR2h6D~2=i*0*p zTi|OHQ{Y6U=VJH+4Zaevvw{gk??x==PN^%_=C{U@seQQN6_Xt2-`T%TB~JQ;``1hj=~{CJ7? ze(M&-?N?}w>H7?$o>fw6fT?abmAvD#EDD%5(=ti0kK6;qYSTa&;pZ~wYVP}Q&VbYj zTv;Y(0=h=+J=t&`i=9k2GskB-5%%|&>u6bfW-x~58ewdkF_`+yIV#=?VThuUmDE`& zcbf{i*$5BQ%MNPsIhkQ|>*1pG(F6gUT${avU?*6mITajC+Uke~GRuVwLETZfeq8^drFvQRtOFPH>{L+Qg%#^RY#`RTxzit+Fo*A-zpi3rM|OZULz zf7Ko^1IwT()4dfy_mZtadq<>`s-Cm|!Gg+E$G3{i*Kurw(+Q>qRwy<9tlm?oxLDZ< z0*>E?Q(em%KooLch?}nL>ImfJSdmJNOlK@ielq`965Dj`hTP3Q3cQP z(ghnW;VG=J3gyhM5xcW8Ixx6Lfc*zt;*DK$2QKJ3_I<*nq$mcSxxt)|=u(=2%>QS+ zmpv6!XL;C#D+RJdjIZ7YFFe{a$4$!)b zuR+X`;<6$|+EMko5wO>htX~hdlZxMQqjjekxr;Y;g_&H_hmw~Au<8L|2wJ9^Wk|mE zMOFF~8r|+)Zkd9F4|~R$4LK*lK%J^RJ4J7A28aKeivbjk=$v~$Jbsp>LNKwS1B2{I z%<6LpZ=zNB`$Dm*O-`3xh@q?^xvpKe3`P4BVP+UNW(hY1?@rYAL`>j{;Yke0<*w_6 z5QLR$K*dF3{v`Q8U^ChA_RsQRbWe;zk8eBDj`!OL3z5)!`_`wT3-1NWhmae$+xjLe zzqr5{8(RV7HS1cLR}3Ny!;U@$v20r?8Kp&k@do>pH=Kr}6PFVXpO2Lhp0Iq%(e;;0 zawHq0ihT&y_<-p?}dH{zQ#u<H_|YXM7@)bF<3u|oS7)2BU@=hqrY=adPA}RS7^;gXa$up|NOH^OjZc6 zCT?vu>&vv(?0vM|*S4xa@2;Sb26c*}8T`10rTjc(>Y6l#80flVG}2NYR8ijRxn%U0 zN1MkwS(d+8#)3|PgwQ^8k=**5C8$vvf+dZ;L|MgQLasw=JWu@}xxbc3$ua&#-pFMa zpJzyMv>RoIcU$R7{34qq_g}u+2Azee7o07SP_SAqM^<{&xYMFL+BNThLZLqD4QtTG zJCH=9?sk)#vbHE`{CQlB@0H_~n=WiA^JQod1O20c%O^Vu1K-@~LSFt4!@unN&nJ73 zWY7vVgwlzB;taekHxk4mku#@tr`YXGQVOn=sDqh>i3&02xm9>O!-pLL_Xy2MX*gTu zWi7;GV^p&x9ctLgE|SFfcLz73XLSu3Ji|s0mBoN)3J9}))B%+#^d(H-{r_!%_5D3h z)Ui)-_>*=VO$_0tc<$T3zt&eU5DXwE+dur8xy!9;nisQ@CSmf}D1?GxBlJs=utMcorR_=7}=s^rTCu*3H6eZDtaw)NCXriHQiU>DtJNU(hYX8 zplqAG)Fi$M-rLYb1Mp7`g42RAv6<#Ey=4jSfdpF-@gN&+yW*J|%P1T!L74cdmERTW zn;2w+;wCM&Eb?^m&)O5~IO;^dYF|&K*rI6l2{m!39$w$hJFM&zZvMiya-^TaJh}Y` z?TO%pZ&*e)VgjR#P!>6osloU$TTOCC5i&{K=C#A3enXbHLJXr!yxmqqR`sMTMW_C# zDKvpF#xlj!P~4EK47$&qZLIbl-DE7lZzcOQ0Z&z?T)1^qr;R!ms={`LEf}T3x7k17BNxfcC%a9 zNh~>*{iiA|lDdE9$yWKr`$qryolgc4ssLM@NOr3%dFy-ZkIpSTbZR{?7A*XWlko!T-9g*LCPYavT5Tho|wRi22nPv^n{3nxyGMG zG3BLbcyv3*s4U5g7Jb>%7AmIA3f_w~<1b)@cuKaxUP?beOhVW)^@tMz(VnL+?Y1HP z0j_-Mvy2G3oqCgS9`B``5lACbQMV$?#0D~}9n zjPLf|vmOwh_ceF?ny+u>#NnS%IM*mpnWOD;j;+N)MO~LH{pf2K-&s~JUKmDcoY%k+ z-*}O3wU&g{4Z!y zVRlMm%y|kR>mI@N(Yp2y6415i>@OhPwBRM+ttMVRP*Ax`T#4LiEMbuMI~RO>JHuS- z`D+AI@qtLbPJdDMSh@6xU#B=03j1|)vpvqbT2^UJ&J7+bW_-Ad4di_;Q6(ne_+syP zVG_0;E0B27;BR7m$WF?r#}R!c&eyF}*yoO&xDjHoP8AsKghVK4^<6+mh|iKnLwzqa z@p@L+6KSZ7C!-GAL@zBJdoa6ZaGyq~)FWON@oLI>w;5LsEsmoDMXbS(@W_zsPN9WT zJY8=5t(4~<_Il+Pb?LGZyeKZYXN@_-#cOB=4lgU2PH{ZWwKR0$@*3WC4Rg(Nm%`~R zx_3SO3}7}%4Yso@G@Jr{<6;+a#Jw>i9{h}TtLpz9AX{ozW=q3I+J0OiyyJNy^Lk&C zD;4~fKr%%{aC}6(D&tvkgm-Q@TL*WSPW;6mE%y|*v9B}j-o>dc6R%0^Ymxxa!$U@n zkkQBfco347NxC2C7DOPs1hiM*Q1ppR zH`O_#Pvpu*5Q<^Wh_7qaM{-zPfN@rqJ!}r+V@p_vHJ4qG(C3cm{l$&TqQKf4W3p;fnY7ATfRr~P>wqAa&O^eDppy&{;W)Ca3qf=~bn#k{)w+TU0 zG%`YIv*eWtSxqVdkFA{|4!qW$hrSrFNsonY@2zSZIJOLo|A*G8EGshuG2zl4g5mEz zbLe3>d4B-IP%Ce|mtoid6rT()^zq|7GE?KkSST#?zvhu7dh83uu1BQCQeSpPzfaMx zip^T%w=x54A3$yCtf3#Jncl~%C=lxp0vP-p?w-W}j%c0{8m9;$kjaeu}?MM|=JlvLTz zi(l=3Jstdu^OF2e`y!4NUn)U|r!ai(YoziI(pLV}B`AVlv45cC?BRZYEQ@q%G+^(s zZ0hA7kAxVMh1vSUnH8p;MP=(+C$ZrHI9C8z)KavA!fsCp)`xeOYgRq>pWr}6h~mV3 zOOtE&dm{Q{zu0JlONOY(H9u2FkV@03bbJJR{y?(KhqDO9LPvUp>IUJ{b@MCU12<)7 zOq?c{%a4YJM)n%2RXpK^WdCcSE=LkZJ*JNW(42>8+449>oLgedvrM%6J|?dId?{WvE`355QC$l&mP58I5Li1%f3N%{y$RW zKQ|Y1J=rxGyZ6DMp2Zf3!a=Rs{d58G?ZC>2#N=A4$tp6i1jLZce|e-T#n%JI;e2I} zVC6D?Kv2GTy0S?SWQdc%Q5!+?HfkoFa3=01SrW@Ka?_KhipN#txG!F0CeQ``;}T;7 zM_zP<2D>Qy&z?Rlv3;fE%|k^ap<`7W4mvPLXEbOzVfsNIu!u(_Vs+qV?~`|_FheR3 zg5s?>%1s8@IVVehQ@{lxRl5N=sv$Z?(IJl{hO=#UdD!Uyv#GRc=oYD?8Hi=^6w2d2 zL3)b@y9s7MsaMP%lkyYeLC*$qyhZwkxuNMl(Z{M7UQTbsTlU1}+z;&P9=vr8F+#g? zhK&)x2S`kR)6i4dbwDqZ{;clQmRj6c0H~9?Y>u}$U%gC(_8VnD5RBY|4dCFjy-sSm z$`XN;)T~jWPIH}9mne^WXKUHu8FLA$V)%8F(xbKKzqGvV124pnr#-@7RW&`}fO8Nk z75WSKJXsU-D*voc9>t4&QqCeEr~2j6lTmz`e(*N#2E+7%cD=r!^j5*B_GYZ*d7m>y zybbSj-meV5B#Kc!;lFavLwO&OJ4pBtn~Q`qC*a;i%N+bRMs5QbaD=Br-P^dDb==~L zmOt-`XO2Jz9+l`BlClty=RnKHm%0|T9FH?fS6diEkgyv!lHK zp7t#w;)|h~4UXeuC@rJ=JA`pk!Fd+2If9O zc)L65YxL!684Niwc1tRcU$kGrxbbla+2ktn-mnIE@7+Sql=RsMpA}R16Q5>@F##Uk`G)Mc1^}@%VWSh?rZ7G_!W`Kp=uDG~c|oo@ zJ#K^%zBiyNz1!S!8|y607nhApr9c4~)Fa!6N2O=!kTbASR`-r6d(}s}Nvd!@h=9ew zNo2jq!Ys@|m)4(5KZuhDjD(JgO8M^sRlCZ@KgN`M!Iqy3ZNgTaL0)>3*lQL_xS0A( z!6scy7F7z($(2#N0zjFz5-(|Pmyrqf$9%c%Gg#_w`|=?8^O+G?)2J z>KV5sm7G8KCwXx}cr|s_r0BJ4@p3q>{yX|eBf^FGoK67;jG3E~tkdZL1hS-BI;EVnz=lR8GE%;@KyBINd>4W> zC>vJkJ_^oSeHg!-p&AEcYxc-HsY+2U#=hTCtY(wCkwnUY8Qn}b{Q4e5EZtSHY7%5a zv``jE%H-z~wUp8BmpiZn5Oh04=XKllU?JAMk3orzqroYUO8fuR_HD&Hg+1uSkW0Ns z$esAN3ZGB-MeE`&mW|<^lj`(KNkCwNRwviAb$aQ^RY) z?+!aFt8V}U15R(Un@jVjI-0Mb`#L_o0k6pd&RZZYBB`TJPSNl629l#C8+rEQ>uGGc9d>}Sxc?@p9& z;AAl7$zDx+3aT^f5+tI;z@GbJ8dvYs4Tq2M-;pUu!Gs*1ifp}>-8Re7U~x2Jzz&)w z#e3QFTji2=taoAu$THJh2jg+xDnDh43NcE#M^IQK(|oc2XA$$}FG_mRV+}+Jh+fuo z|D`z0xmtN_=c?w^du4cEl|8+?Ld{j>dZ7L_Y>y5X6|MjN=4JVPA|Gl|Hmp6Y%8*uG zHXe_jJC_5Ua5Ty)E`U3f&}KFX+5rQ~*NktwCo?ldI>m^H9BK?2FAQ`^$5tW3ttM}* ztq{TWh(W9*7d77lTeRQgv~UzCOtI##F)rwevw--NAW_D@ku>9WkCb(GlZ9u{Z*gY!dQUG8?)0nXxu-wUfF z+$c|u@i#CU3Blg-@I`1wm3cOWW;w)BNKo*`H4k}?IdF8C>r>rkWf6O&x71fB&KICFnFgUR)-}%UvLF zQxfkU$rUN)U-i$x%ZZ?=@uk{C>T5lJ%^MO)n3IF9RtYJI!H-t5h8oD+0$dUEmGG-I zf_Pwq&}}6~#%l$_M@i5KLFH!t2Qg$`kGa0x)p=2yuAJ&H3EPmVi-h1@;=}k`^mF?y z@c1vIWGVY>3w15MgNhrM?>`i6ty0!_)&=~1-KEDvrTO!)j%;Tt8`KZq={CeyX9|1` z<%sNEv-GbjVTQdp*qo_EfcUci_+gU)Bm!3+!Iq(k<9t0wefUvs*S#DN*<%to?h(U1 z<<+IQ=TRta`;1?fkA(=w*gZG zTiVJ7**@ERq-L4V^z86tJz~Yrn)B`K$GkXI`DW^B;2TN4s2=AVGP(rm~s}D z9nQG`U0xk4NL?y2;1I0xmm|o{hSg_c?uMU*6hM%%&gug^1r4BqN6@o$3!dT7`cI!< zWVELz>`Cj-5F0IQNGG5|^Fe9;`({o58n4E;MpIqXQXjkTB8BS|p~B_gvpXJ_ z%M?6Mx$e93lQVikeStIkT4?05*_mWQ)cp2ktfgYXqXfyh=7h_1E{fFDSk;knMy)wL zJx&s0jY`2M^T}T032la#bcDI$d0m2c2^MU6B!F0BXw|@0-&l(+3L5%XCf~FblHy$X zB>Y?YoxS~=X2hPN#_X?qbB~(bS*J#SP-&)=ygIDhR9o^ zU{D7JE&l=7q?8)VGNH5+hR?{u$u2|0wh6rp$+uZ|3{&VexmZCfbUMgTOy+6De#}~$ zY}Rt>xt`jhgopLQSCM`}6292eJ&I8NjJVP#e5X1GZwgUdw#kVF2;CQ(kV}va%r@uG zY|HdeY`;;b)3LI>%Jb6Kcw40V+QzIV zY)_}I%QkW59?7X?vnTXD>13sb!pUz0cvPl)ikj%nCzyqT0zy*xD&dZ5J?T?upJ?An zquagA*F|FUzAawB3&YqunJG5y-&GuXx9JZ?%^l&iK3R{0&Om}+RE&e;PuP9<5d!~w zP9G%mOFe^%9j8Jz`o2l2ofZ)h=E@{co1$*MlQ!csG=L!dBtLJi=j=`&VOYLFsmZ}6 zxH&I4G}>j~aGbg97G&HVd4@+_y-m+(08y0w*nNaHqTHc#z8ub1r_bK&5w#RLKCO^Y zN33gIB=Is8lx%(feDf0$Coe-fD&NGk))5$HO`Gh>!5i^;<@&fg6640X30VbTrJ$8{ zd&grd5BRYfia7@@yWlzH1ONItPeA7hYnRJx+ag~KgZ4Txp+BFCu9{6y+-st$CmE?e z=;UHsJmc~&hifx1sN4V%=e{p<@kR!yY$;xTIchj-O|`aY>289`f<3UM1}CO6kPkj& zm{f2VdT56MJ@QHiq9$40*a`f-bGQypv=_mi>;BZ&XOGwl;ov$5btW&yY&!IOKuxVZogG3MIAX zpw+jH<^V-zc4$~*i|i{wO=$4et%_1RN^sO^_9pfDefVU3(J}S2IV*}o>^~c2kd2-0 z1{=}`tenQ{SdPW&hpu7r z2)VOOGIn;>sPvLGFux(S>#@9M$0OlAhoAETiVP*|E6Cr?ku^GX%+uuBhM@>f^^B!+ z;%MR(YtX7tWF86wCc~ekh+0@3);DNcGRO1lF%o;kQM6YrmWVhjpMx3n$($gq8S&xg z-63*(=I4qL)Qz5e^0k-@tlAcE4BNrnh~5z8^*)|)ROzq#A4)Lh4osA3gc%XR`1+u6 zS_y_-inn!(G8oA0W7z`7W)|03@JHWt3`A66U69tv^%7e>M^h@2d?y;lTi40f;R(!E zL}Q$|Esyo*6Qd;qy`RB3;?(}J7?D$97_9hfqj{=h&N|ffjOP|C{)++?@Tj%&LAwiJ zJg9rL_FSs~vvj&1B;gE})A}Bt6zD2_G4m>8WwHN%qHf=fr_cdhe)LSvr^)>(ptQa9 z-E{9+_Mw$>OP$y=;kOM1Qydb6#I~RnM)(R`@|IsXf~_p3Af^Xi6!ui(J3D zT7~5B%&O3XOIKsBty%_3zYKWHsGaRk1nx0yN|4;BRGs8^14_6#;Yi4=*d|L;wdXfl z4kZHPx>+XdHmbV3MN(%b`)1E=`cnOtO#M+Aj)vGOx;~^HHih36W5C+FC5B?RH1-D5 zb`sPIiIAU(Dnm0%&b36(;xGU?kAPqmlSu}RAmjj86ED+o9TwL_$=K2P1gf;Z zSFdT!-vp&Aa8CbpZh-Oq5Xg^^J{M2+*6p9#_v?s6_ea=&2$t~})H)a?S@$3^S91TSOMWPs$!+13>jY(M`?Q<^(5k`wg#8lT5Nnup#$0~AhGGavohX) ztIaebrip^@5@rE#8d@Z@FSC5sLM(^kZ3dod&)7^UP*Z<*D2$48JJb|7+V4V(aI|BP6v%J+#^`Klz=H%mf!Z>a>2 zPEF*IVdS6*CjrPC76>L)+C*G2Y~CF)6?3>`-7b2d=O^n1v{(PQApt7W2^62p-f5_% z8VjpimWS^|3wYU8KetSfPY+3N0YI$@(P_Ofu2$j|tq&kWlRxl^gVsddrg^_I^$vva zKJCm3X_(Fvwe)_k6O=`9B~A1m6y@BJ4NEf+qZ8gPA9TTdvFDULxtvN2c>4YD zdjKh5#i$@C&hS^Dxn^q!m73=%cbX*y1Xw+*R_$yoN<><_K`btH~ACDhXSKhBdU zMqAR^ii9flR834F?>jcziF{!S3W;;*s@6D%zK3a};ZAvvdR6^Vhr8EgsmlUSWlY(K zSAI)-pshD1_nk*81&3v~mU~0=JJ)PwJ1`m=oVk{NOFS5Ws)O}vgc5H080sw3XbgB> zybV3jK0hdw+DH;C;V1}%p_YN#sscY~ZY z!&M>ykOH*ALy_i$sI~O*^ost5J92fkxQFXGhU^fOcl4xTRXVheJC@tS;F;dL*)x-0 zFB>iMfJGQOPm=A-X-Fv$6$+bJQ+w_8*YH{!&(6aBvR1TJGKZGU8$%rPQI1i^$tU7D zf{ETkB9Px{capeY%*V1euur*1&}r~b%XVxoi_S1FBWGcMCVD&j>-R*`QNNc1%|8=dg= z!8M1KHzn}54<}l=L2&PL{l26g?ct?;( z+rF~gu_pabzNdi%1ej9;VgcOL<#BR35>?fU4ZjX6AW8zWObSS!YieLbkYKkY3K7bR zF8J{meLqB`Uy(?FU_J^_Wz?Xs&5`(!*2DVjq7Eeb7VKhg2}UzB{@=@6N>jqMr1S9B z=VQwCSQmn6!0fdRewC@h|ADI+o68c9MMnZy@KHfmA0u2d+`(-(l7bRP$k$((^4%~T z;dIpjfcB!r!48nc%>86-TDj)!f>ynm<15 z`+ACAqab6~tBJ^ZVc*W2m_3kZX1$yPVtgxEi3)`XsRg5-T1hF4c%#0h4D?ZVmmu-;4%>KUSaWHp#a9gT3s1s5 zw2cBC)&W-JXKrcu+i<{60y0e7NS@$o()P2G5nj-|g)9g5i=g#>^0Nnkj#%tg4Vjuk znQKrBN`3HU_Q0>Zp5qN{KLzuI;RzBGq!&?s)5^s|J=-&p5y-8;lae$~ zf_2Bb$_-Tpl?_8fYIh@{G4Ein+x8m(a7))+NeFWqhr<~sK4&P+iBvaoCDP~sW zv(Wsf7i4KmodTS%)#Je8>Hc4@keiBqm^{~w8P%yTChmIFmK0Vnuv*fcU6^pnc!Gih z(2En7@mpPKzwdAL)=C=V{z#e+%tiUr}H=hczKn46o`%5+Fx`;CJv zo24;zr;dpiV5kHkz&~b3jL{ygfyLZ`y7}^&`_n`fHLrQ(z?SLltDi1AYRf;`!4^?u%*34`QcwU?dAHLSa01SKKPribYaw*UNW;c+ zzQg*5F&-xt`(~P%m0yK+i|P|*uFt&$a%LyGCWKMt?B+^Rk3N#CF!%6}eE)jiwU!g= zumr#eEb~O=xfKcLNGPE17uld-!V8eS6PKPDCSd@mZ}p@_097}VEL`6v;|_D70%*Y1 ze*xm@Z`6RC3eeR<4Y7hhI6vxNLEElEKo(3CMZdeYXfnNHbIXA=NG;qg2&}3i;@2u^ zjIO?HOsnT%{d)Shkr)bBES#{W8f+Eo~Dxq4WI!5}!;+wgo1*7M9-*%?3|%kGKnk_cYo4CPf9AONp! zTO@70HfETG4+|uQcRZw0;U;Gb96S<@5C%WUr|+Nc`b=k2@)-U+Y8{riQ2ZiQ7-6r8 zD&p+Gf-CvWq+d-bcrg~iA<|;~SIW4&#I`H`*Y;NNc9Gu~99+JXSx3en1Q&D;=2GxzQ?4JqTshgUWcGz7Sx~6Y7<=-k%TaO3XjY5-iF96 zE-&aHv5%6-HM=#o0>i@gqk2$73}B@Kmgc)Y=x15r(WdXGksE5AU05=EWO%lWdZ{y( z#WGw3r9lSgz2semta=IN2ui(wXmwU9m z!&s48{O80n4^2rH#V+1ft$?Ox(ZB+%L_iNeU(DKmYBVPeHZ?ch#!Y6vK1xzjnu)H$ z%ousMq0K8C9`X{hYN#wpb9%Y%O1VTyJ*cPok7H)#qF3!zrb#wB^060PrsG&4eJ7o{ zQtS;tU}~bmdrnAY>tH;qU)A*lM3ljsXg%Mf4-@t&3ImT<#`|)1aS!Yw*5D%*BV|hf z*JWjdHtwPLXmiN`&TSX3(~?kgwm*SYfLa>20Yo*HSVzXEF6WtFO+0KlmGQ0=PFA^P zv|o)@<_1w9K*K>53q%A-G;Pn|If%_*{#a}W6wzINJiWF;c5Hlqw>=&9RuzTH z!Yx4E#~dJb%Gd49{t2wjr*!OkV4P z1Ljyey^?DDiYJhc(&>@*qJWae1?hxHMR5c#8ADn#r*=SvC01vDg0|5jiM0a6AJ}0D zQp4IcctY+`bwnV>^I_zDGq2PC=Dn`-l$P?id{#x=HKa={ZH&J!^pS%=w-I*vhHheX z0dj^LJCsY$ILtb5EuH;OqSZpH12pIiyWnf{g6Rp|TCq&VeuTH&N-R@q7&H%tZiTK| zb9MjP`H2$`(b+}uV;d=G=^NXRO0{9rlhwo359x|*L6a$(Uu6cCxJ(j?Qzn~`?KO|vz!Ma`)Qdur&S{yZ3#qu z?m3b#yKuuo&9GO4`U=j_(Be@%T9voyqmkLPU8Fai`mu^iyXjy_|SJ zWM}2c^AQvPoJTz3fh*oADwyjRV@$-B?|9A$_+tB>m$Y=4N(yc;5e3tXQX`?wjZ?g+w)W))(M^cL#^y#EubxO<~K~O z*QRtEWSMhCjr5oCG+uB84tZYRn37;L=n}wMpxE*U4HvYFitF zP90BMBF9OtrCOWIFeUIYzhuwet}tU2WvaZ~f>6Nsm0Otj>nvE)qIN`6&~yudM-BBo z*D^Xr1j=2=LBt)ho*teWX*1gf&B-y@SK5j;Gk8AjP(3i6;XM=x0&~el`GbtsH>$C( z7dnSJQ{9}#)A8<>?xpxySIeBu7$YP0bxSduu2W97j`?cDx&N$QHh*nvdZ%C~Q}B#< z@$Zy$?B5O!*ehSpwR0<)T>O=TzAwCB1qEj7sFaE=N<%V=-r06&gE%L^p{nDemb-B% zzLM11AWHUYv-F99a|tv6J3z$0lRPxhryzbg-v|qp_DaiQx_*NGJ+Pa+QGCqYLgA(06v@9iF+n#<>rIjYe8csN+RUdl7dg$Jp%AJZO+fKEq2IN}k%nEBb#6f5G z7jqyaQ&@D1kX*->A*4SuT0!{!?k@#TD>wNJnvy1Q7 z`6dQAcx?SQ#_8rw2=YM_tr#)=c90?<6YzQ~OvO;hec$lC!W(o;B#!330pOd9&MbwP zasN(bFGQ_g(eub0B2~S@mi)J8A2rTZkQKQ>ru9WN0D=Euhe6X z9Wk@Xw7`LdwUqQQBh@Fk)Qjwgo)3$?SQ*+3wT8_)@Cb4Nq5A_=<5;bBJVP(~`LO3o zM#?35dqG2iQUZ4DzokGQ6ZDOHN~Jq1{);wvq{rO`N-N;I&<7q!H`af=>&hSF=hwQsNab4e|PWgliNPxRmIfH7avQd&dh+WBLc%(hSt6on=*)(ST- zMJ#xk)nIUni#Lewsq1VP0WERg0XZCl!`33g-Z+vXkscceY~&Qx-D!Brw@?!h4-!$syO!P_%fO#ktsL4q>UMbrfrw=^XA@R z!-krRRzyUyxmzH?k;?%P2_fK7OuH>bI)kVlOO6W?6m3 z-kr!!x0a>AngzvJ9nP8;k*Ih22g|!Ht&{(j$|>lf3~y4)G|KJCZ}SK-^Y{#?a!-$U zsuJaL`rVnd%|JY$C<$gXkD&#>#G9lNpN-1!&Z#7j>kYilBpsOxex|q5l8{Rj%y*gS z)=pAet@^Fhs&($}K)*#^&c)b#uXPw)S)YYw=E2vtnrt=VD*z`uuu*dDjQxmti&nfF z!(L`O63iven-e8jQJmg4^arZu0W7dF{6TX7F$qvxQH^|mqe_3byZ6j#UkvZmv9}%^ zr&-WBe;`C}PmgfDwZ`V5OcSxONA;-!-0I$%IC_DGAVZ`*#|4ZAljJox9v-|C5`R?~ zj$~JX!QY~ywnFRI=P2O$81{oawht9GRt6;F=-6f|V9a$TWM|tDnBJew%cnS87d~@9 zBpm-k*k1_gi>;69@`;wixqFxx1NC%a;naL2fRgH$nuR>h=0ivrQj4R^N2q+o@ zw79%G-olw?Z2XF));MOai)~a@7htg1G7&)0p@3oJxO^s53GK}XB9AclPdNkuw^*$3 z9i?Ochq(*mM#hxAGLIY)1Oy)Jq?%6S4J#2R^l&br^NBqvfDmCr=8j?Lc2xo;w*Z0Q zv0J#xw}1klK-ru)h_>PR)*8%e!>QJb2YM)awhKF24IF}UbF!)EG%C}7qXx1ubmaMDNx3n z6Qyf&u&siik}1!H#uK@(!9BBhR*OeMS_0p30tXx@Y&kiSOz+(`EA0Ph^+$W} zM48t0NnO54mgZ!`0#RwCK2}`7(z{CLjs5q}rX#Xs63S-9B9a;a`{n$xAgwX!Ri^}r zvOT>Au6YvW92-rM$zsKaFZosz6sm0u5u>|`X zY5+gDF9Y0YXj2T?7Lu|Gn=aD0J|j>73pJ4_-!}C{AT1%AwR+7oCz2hDr#y(1z(P6T z*4M-bNgbgF zJvd6X-Adsj+NVJ}dVLKP;pgu2E*mmU-7cJ- zdU{e)T@WZG_=|VxcB4*&sp(mpQWqTi{K4MeF5{S!4Q$nTUEVkd!sZg&m0( zy;khAL*VKze2Oc|NYjAd=!O%*b4WD2^qWD&axc%joN7ri&D^N}DhqF+cy5kPp*FNF zYPO@nW0O4f@ZZv<@O3aG)}&H9N|@VuUuD+o1f!#!^Ksq*{op__zB5^FPi(U}%83pE zqnZ4y*7;~=!vwadisLKx7Z9~Qs+c^nz^O3xt*c4R<_MFevZ00!)uPP{Uo_b&C^|#I zK2J7djjO$u;^U(5oP!^a@BUA0<++FC`d`3WLDq42?M*{xREYh|3=gsX$k|kr#; zj?}aVpH0&zzC0)X{0f2S&YQu!rWXL1bYXG7T?OH2nBgg!H10j@@?UgP>A@jw`(}?J z`o_dSy+WAjWkF{%4GI6V_I^74hR3ow)yq^h5Am?Gtc?n6n&%~)+>GK_7QP)PjWc_s z1pV6^^#QA}FV2XN=aeoUlB|7D^*t7X zQjL1INL2b(W=-x<)!NsZ^iR zaZY4xGK;H~)I{}F`Fsh6eNINwWQN)!ZI^Q%{YPn!y?p1f^x=#F5@j&Wb*~3dSY*QQ z`C5~}$ENo|7HWVHITm1LMoLo|x4kj;d+BAAi2i{xI_QbhHGUKKW#sfgiERAtAqBW14bC3uG+S(ZH0IJSv@y75O@%n~TxGxJ#UEBeV z4S49aYE+v9Q)Dqi;sTrbL@=rUJ$Q!&r6RV54QhBthrsPf zp_PL9_6moDk^r~7i5ApoT2|zxAmuVfx6n@JP-|X@d8d06e@@KZog&_tOjm=Zd8Q5X zec^xC;_z07WH9$c@f<6w^;0#~wJ@Xg!f zpm6w^y>fxvX<#32lt^$u7W|xm37Mw1jUUhs2un!M_0?NDaEtFopiu7mN(XtE*zGMQ zNohKO>kl6Lv#iH=WXs6xZPyxR9%7DoC_B$lWCHFT=dw1hP3jYB?Iw zJN7dq7j|-!0!z-wEo8Sml%8d+=FCXrut$v9VuI3*fp*YJ&hG($rW_=34=do=p{~|p z*31MhJd-a2n7;kRzkx$1pGG{(47T8LN6tpy_(Jw{-hL?`8cu^buwsOcdYzA9^>Wf} z$k`+ftQ_7cXTq!Y`nJfz1uRPWc8_+?j8)l1-;BqY>w{g<1ArBpC=djC0cxb9NN^c^ z=_3!kG$ufO25L(m*C9^#z7dz3erjtf0Ow?JBc;)6n);?9C|l7{WcBHp|+xbd84-|u{nwK7Q({&ZrWvw84=1;3SS9vQvYQ7fSjXUjaZQej?OF!C5LiLDgN6uwLpT>o<0YBMqg6&BNjbL%rY?!O3QAZPbdp_&3eSh8pYqx0a2pSC!j_F=_ zb!#9^WIX$V1M{vQI0O>+@HNxFB2C3u$N}(_67c|+Eb(0KBBa#B6?o#88mtN&f1?Dn z4^u$-YX3nf)k#6gH@7F)2dG*yK*UB=`!CN;KJGsD>pj)Ewxth0wZz01*^g^mFwM(Z za-@^Vqo9E=+UN@&$~Z(81U+XO?jfeotjt<)Gilh=MKDO=?tN?sNhD@VduP#%$Lx|exxCFO6{9!UttFulc-P;O| zs_nf>WpBP@@XMw4E#h??y3KP z&POg*U(mrB)WL+vmtEqH3X51MD>}uEqL^=sRXWXhoPN;lm;d;nO`0)nLk59U82QV* zA}>y|v$Xayg-8~;#9sv!SnreRmHj}cWS%~F)K2$uJ_sTi;a%rud(7_uBksas-#`~z zepq)8dCrr1FZop%;*;Roj0G=0sS7gdKM0Tx;FR}+Nky~(s zJS{_x!EKZMefdo@(n{GnG+bHs^KU)sL7z06-eK~adlf-t=Dc$~e!PP29bRwokUg0M zf{&YyH>fQ(6pB(om(^U@G~w#`s%p<9C_Gg2d!DHt>Ywn?YV*>#ST;qlM6A3g-XW?( z{HUXfuEIUT{@V#~gEUW}w7KWcOI|6u)LjN#!jl12&!eEeF1ZqzGP)og5?#_{X$z&# zfhX3Si zU!m&>Zf;quRu}VL>?WU-LPx+b@q1rS#!0imov*Xk=r{qHW5k1&REa)2O^IPw-7mGh zM9TUJosH+|PiLdLW>}EckYh{hb+$42Qx~sApq7&ONOwEy75@>O}DjrYeFXpu^X*HM?Pexbsh`!GxmaL=JP6; z_R7&~j?`u%Zb((6=yh!iwt)zNC&Y_HeCppm?#6Udc z2~M$^dtVd6g_Ds-*5rs54{Yk%gFuxiVZJGQK?FJ~S#UO=&8;iVn#h0V)$>NCXO*ii zt9WLH4ofCHw*LusmXysl~im&erBI1=3vA{Vh+Ql39%#;u>19y3oGDp)OgVZ zD#eR43CF_`wor3B6a0g?wok_ZsjKO>ge@z{eKAq_#6-pw&oDINJR40$e9hiau@x-z z-nJ85#0_^RGby+J$Ed-EM1T0g7y05J-)sGyYln--ZMK(kO8wj8ei!yK$g=n34xMN; z=pGsc`vMEl(?YJiB17{({JDXj%{?nTW3rmh&BO_A5FQt_P=UIVuwvoSr&tchBI;)e z@bIsF{jCk=ndF-8XI4#<9}9HOro7Azn{u4~ROqHnRuNMa1}jBB;732ROZ}RW?!g=i zZ3>GFFVB2LPv)0=5IzEj4z$3o)TK)-i-dVahRR zsE?6bWqZA#{nox^_`&ii&H@gDh@(z_2^X3(Cq=8hkpxMP=Cp-5>>*|R8pa%Cgn_2b zb6i_O)jbj5e_^>i;w^%WH|Hg@mCjA2I&}_j84es2f?_dEQ0zFDhz%RZQzq5k)O|oa zCWh_HEtwxN!^~lafOV=r^67Ku-OuWb;t$Ei=%R?|S|Q$Bxoze}TXkLfu*K3cp(kAU zd`7J66VuA6e!?JAqa>;$aC%jKTD)XYnhdnGicQbpyJuAar1v^7`oAQ#z15dz>srNL zaVqAwE)i!+g!7NW#S0B+Pwh%NS)3wcQNmx(<#zfl>%)R{B-F@-8nhI+Z^@XM`LJNF z-SD8tr%N8zv8jTl8X7L`rUBZp#oN!TVi(a{=Y_jnGFRjrir!M;m_>7!RUH&(N)7lP$^}&ROb$PVqY%|aO3q8toA^0 z>fA(Z-(Sm%o{cwS=T;sD^2np^6fKuZVaJU{{)N!sYAF+gyE%KB&{<;$tkqr{qQm@(E?FY;OAb?}m#<&pS$2Ibc4QO5AK5Snd6aNp**w zm5-6;?Xqx}#~6hZ0~*VgDKhNEsSko3r;sU_51F}fYpEI+SPwUwd0x5yl$*@fqb_%j zh;`s4h$J_^zOe&<=p{o0qVDIT_2nCDN4=Sz_KGY`psqg@*Q zgqI{R(3VwuA9G{$p7M$)X31!1ya0$YyG*C1AI+JUl9OOufw+&&GBNX;ggF-yphbpc z3@^^9)=coi=4b?oTtgK5K5jdw6uWLZ&ZzW$ws%NP>yK^a1&ufy=d&+OYwJ1Tkbt$~ zYXikOA9k8Sb-7<^*<*_woiu4<7xk^>%mB!e3v9lm73sE4UQ1i!`7TDDMP--w6j}jRgZ=%;#d61I>%@FVdh`jQW+$-4HXY0}xn)v1<_ zC_;ISe3$=b`JG!zxMMLPn2q5EW!HbHJ7a7n$UYx)nj5sB2mo}MBFrp2=hNL7(j@JK zoCr#Ey@~kDl8PfsmLmkrh@oYn08xz$Oxcu9H)B@a>hp#i?tcMdZ*E#KjNs*c16oAD zWCPK7{FEx(KK|q_*sZom1O6O34hmhPb1i8E^7}|SvhXeP870$Zu6^R<)0#@LqMI{e zLSXE;Hx@Qq@@TOT*As^)UepQx9_z;X=`Oo$rT+QNaw-c!+K@E!~s6nTbzCQHsoX^q?xk& zYFDj`QEtmwSt&F&>_K`@!?KCsi7Ayg+13tWghX-@|qy3-{0>~UY-|mbgBTy6J(!a0g;`A4$t=HHMlR5wceb9`hqb7NJeq}nn z72F5+(^o9)q%Ut$8?bG0Weno2$d%GlIcK?m&pNJAfHNjf1@0*fqGiMzx6@?g>C$08 zzqY187h*n%j%%l-Uq_AmQHIsg_*t?4Q;4X6>nK8aNE{*5evu8lGgUXKo7EGhx>GX{ zl)_zvWkzid*riC8AcdS=|D^UWh%Q=tT0i}YfI6uY7D#7J32QCAw+0|grTau}AniuE z!d4CWcB~_hA@2K79honU*_)BgHd?>FvIJ+7mHKayZG#*R`+OxU=*@b_H1M5@KA z4weLQ8Lv{@Fn;3<1wsL3HCwmuh&r!JDvh)^>`$ERkp%CV=7@5(r$`f`Lut;}sR`Mx zE_((WI&6I>$pj+LouURxI&uGmFlUWUlaHHM{ajktl)ad&eNj~LlZFDC7*ivy{aj%5vxqPtdR9m z;@vVe3E8E%++FwNAEM6#2t-%*{ z5<>aF(+tA`vrndzYF09i?{HTI5by7l_pw=xBSeNfbGGN_haO1##;m%2CLMM{nerH* zQ&Pc9C;eW#yA7KtUKm0gKzbo0kMIfgC{aK(AdX877jZqr%CQwTCxCO4)T-x+t{rsa zyJO8^3k7p0>Y~ME?jO*GBYR{Zp~3b+#Os`dj~9lQrQ(VxQWoV2t2$QQ%YGuT)}v{e zZ{7m++fljPQhF(PDs_-~*e-mI9%YTGaD#`9gjdI`?D~*SCUN)I*m_IK(>m$q3I1Qa z@TOId<0S@CW!dPVy#q0O9C%gEn4qCFRqZDmbjgauJmPzlElR1{g=mb25qR?kP@dn+ zy(#B<`EMz=OpT|W%}kvo{KCRP>7IEdLrH3~l?ACM(vG^}SzrEKC!a&SB_@%o9uuUlT+Yxyr=P}gB=M3|=N_*xroDQZDSc$GR z6MN~o#Oj_>e?Dv`fu;n{K3!qv5~HoJW9Uw#>`IpOPi4~p>xs6r3)Toy_^5pTuy0&y z7(GyY^?I-R3J4XJx>LYTmw2&%M0oidz$=oLu7-;O;>#~{nqOq{PBkZhM63`FnJuRu zKURCEIHoHFw!X1Qi#T@QCBVdEiJjeM_a?_E5x@tHU7ZJZkGC+g-Vq%U`73a>+2!E> zaU;%O)BD^-hs2`kz~!Eg*&ofG4TpNt8g;bJ30Qm;(zSg;2XJscd!r?V;F>gy(ha~4 zyI&GYPH#u&pAmWNGE2Z|hCSo-F;4HjQ6?RVZ_QxnTP%6%i_#Q$D`e3d**mpAXl?Yg zP!Bfat(g4Kq6F6IKRkw;!$LdO;XbZrj~r(l0lDRcbVvROi|M6@oQs+U$p`&mgfz{i z*JO~IeNgi6DX*mV+gTWqoqt3qE99367XKcw<6W|BX{;&PGd*Nvr4^7s zumD~_D+Fuur>oPuh{xCCKB=>D;YN8{d;G^q^jC$pJ1JSVAF6Xcs)+lJUVpY0-0fPX zeJn7D&45x|d1H}j@!fIoPfk$Z$8vXX^!?l3o$v^I5{3;f9pLl;a<NX@pfwIJP~lDK=Qb>f$Psw33k!!)%uaHqwC$&DMuP(B zzNsSWu{h)h64mxd6}$pZ!Z3+=hoT~i2%R*a$OJBP;l)r(QT)mla^>_jpR|L66sUWx z*Vsb!`vYTBPr%7|%AU7xUdEA(43JE2L6F50X;$+5m#J#|DD6wi9Emwhoix$f~7zCU=ZvC?2gY1V=< zf%4EQ*COJY_|Rc~jPI;=t||06*ydTxKb1%IYiD+L3qKLqx#U5 zJX9O2lCm^ib7dyvG@3FxM(@r?N^7+~`5SENYlDmx0l|7$`IK zZmWs52&~iw&q_>Jc=f`@>dD8BHniIMkJIvH#D}Z9v@IWpB4iC;ynJ(H|WrEB!*;%OUt8{|<6 zDN9lolqH0Hf1$3DaMPFxzLyteyPy6b%@^5Q77Ef8*Xu6lRLMMCej2xuJg_mqU|E}` z?*pOdq}#%8CLbjL_N;;g-NbwM$fGYi*q8>8)nz?!$5w;{f|1_J%&t6Lmm312afz`7 zh<47Kc|M1SHaoh;1I7}8Tclp6azoNGdfu_7oF^iKPag4{5Hq+dQikle6ou0^xQEIE zqu!7L#YV+nUFD88?#NFs)=rQ)s#yk)C}Z<-TXwMB4|^^$`e1oC^VR>fYRVK&C`Yiu-p3a=eAj%M-dW)TgLTpO!e1?YWV(mNk=Pby?_&s8n_uC9VBjT*CPuH)5 z0I(FcB1IMHPLz)sQb+Yn0GbW2I%jJge({r7k%+DLXt@in0TZ6{cMX+ztr38R*7&u# z{HuNxdz>+#NwHbIn$X4%fmc_`wg$^&nEEpx?V?%_KXvX(sHT?;Q*SfM z@)25H*a;ac)#fEHt<(_dqlbSO({5FrD z^Tf`Y&BBK!yf@&0$lSr^t63KbD&qhqm&?cOT{242jOwU)LNh5nf+NwK#n zw!6rZI~0`<@&ZBrJZXu`sFt?5NZp7E)X8|QkOLkpvK2|H<7f{x#Vu;%Z&daFilnip zcytOz$x6Twl4j13U1s27SKMSsfw{%fU%`$XVES3)Rj81CUqY#2x;5eIQ?~%qKe9)% zL3VadE_!E)9X8$k^Y=}7w2j8a4p>X!VVcuX4H)I)#k)7v&22swY5b^Ww9OdwI-IZ` zGnQ4Q+K*%QPZ3CTr$Y!I`?&s>;RFh(H6d7}sICQ88yPg56gw<5jPo(|&VlH^yf z=KfCm$6kXo_37*_g`9u#u-x`gS~~|f$C0c@WDRDq7@jAz@kenkBzS(B;b`t^%GVBB zGxE?@2N4hH(Oh)+85cXP4JJZ<5inv<2I4>DhFi|V;+>1iTQvRQGdZ=ZRH$qsml2oH8zoKr_Etn9*H5}uBF5^j^(XzV$XSwPFdOWoqp?cl!iAzuW zDB6$qZL{|C58z@gDC6e{Mu55|Cy2{GfVcBt4kUOJj4{)sVRsFY3%#@S7;HUTW9)w0 z0?jnr^0b!6kaK0PO#%{hkaDG~AYG7GK)grpPdo?=d3+w#pPEv|kj;JI3i9>Mfivs} zXP97y;lj+#qO$uALrdJ5?<2<_=h=F4ma?4l?U5m46NUU)r$kTCd#ijz_$|Weop3j? z21)}zCkHU%qCqU3<;-gF*=8^Z0!V`-SnLDA)(}d+DhclIW)9T(iXVMHmq0Atj2{K} zx}B4FIfU(UbSKL?r<*t6*AhU*Aww6J7HgtBJIXWH1$NvmMk9mO$)AAYK`h$(6*R<= ztkw)I8KQx?;l(Qxy9#eKG5>Bil=>$Pg6`}Y7-c(53*R*!n9O^&EE8Q{;iVHmSsLj?!2%3N(EdxL@df{A{miEF5Fx z7Y*k(tCs*7F!J-$wvzM0w}=62)&5CEyA=gR19gnjvI$hOF=q`lZscs=wIr`Mkptp~ z@A^O8VS_~pvOECmRlr=~YejR2l>xz7^6GlTpg6eK(i;w%m5w@?@0tPkjkJAoveSs` zG-kJP2Y*Ka6= zC%BH<&xgnICk4pl5mj{Dx*zAQ2WF!vzG#m7<7o_qk{Rv04C`ja@Q;UoFh%@c?8W<> zt?1rBsYGh96yDxVSF>7cG`z)k`f6YN?z34;Yw!?y;v7J!+5N{poFoIxR6z%PMpS-S zaWuOz17Wb!qVgb>MM=i^=NLc)xsw30uv^{D_o@WBZvKy|S}7K03Cb7@?sYX`wG1@T zv~?itR@^nOLCWmeT$0b&!K|os#D2sDjlTfuJwX3rw%g-bmw7j`>v`*K$E#UQFu@%6 z9uku=XD+A&%kNd(Rw zHsUP0wE8C0_U5zc)1AvEW!>RyHbWe}uXqm3?qYDq4Ie-}+HGy~M$qowWq?u8#&+?o zs#m*r?hW-!s>ivY}+ zh!>E+?7;_xjMp=nJ~m)3ne}CYw2C;L2KW3b#4D$zQ0l6eBgsyTED;=wsJ@Fa^r-Jp zenxcBNlH1eAW(bdl!qQU=FY{OvOzte+XhAM8f@b>i~vEYR;%A%`E0p1e6y}?DqH}I z7>2!p^D=vCml196Ilrt<9oz1@RVvJF&XnS_j5#>nvQPDs<$=Gs9tO@i#M1qPCCC%} z-=Sl-tu+5i!grBWP68ae%5Nk(TzFK)pDJ;V5U}wj_^_KYCWwOdKn>i++NnzNBxf7h z=4`ko(+rURCb=Kb)CU0=zla%diQrc$r@I(l^zF1AC9s2D4H=lz_U?B40xzNS2Dey9 zpp839Iek%Zz|Xuz=ahzhRTOeWqk)YMFjgPpAJ2Z#DfiB+Vf`eqmNx~xAgal}9|241 zijg0BNOw`H5#XGS+z2O9E84_~M!Kk*H}cW&FoB0Kcv}tW7bO4FRG&tz2CY*)YOe-E zcXpvw%70D%Ny97@y0H=P*>EvMs9dD)G*dx2`C1R=DxkXho83)aNRsuIvN=@tb;b(R zEm*kmiT-_;LON=8dxn@&u8Rif4o`d}=T=?1TxV=a;9XFpVxBT9!lN*`RYr(aeS zguHUT;G)qM1J!dda}4xSvLb)-V6M+I@$(VfVx5=={-1?*$7pR<5e5Y247mox5^hg0 z@?0CG3*R+;T9F5d?Ir@0!OqljFV?z&OFtSRN__-z-(A7O$EHkQu`GCc3SnSbxYtu zHU8-c_Ub^}ic>C-QMGv}Nbe=svCHGC8wXeQt3GnQW<4_bF@UGE!uI+YQ*Gk62!*tv z{SP9K&TeH-(RFIZ>Dm z(`ie^KSuQFr|<^&EXLw<2P$@w!beL)B3x{w{lfHw>?OrpZU7i*EC;S&zW^gfA4>2U zI}+EhCQpSqNWG-H>6&{2u)#MSXb5Dzn`nntW!7C3Pd4IMn%*f-ayzfNaldrnJgeK( zD6VZkytn7A>X4;|s-$Xr;59^g?3QzL7)c^=6i+8%kE(g~1}Fx$OkgS=DF6`B2-Kc> zvyfzYtXhV~^Jij^L4GSDu)YS-YBti6VrhKF24rPjn@epTq&wnpj&mX$T>QY3YdJjA zx$yK9%NkK~3z+NW%aH+RW$PdTlz^9`bTM}PDQ_qNPGZlY0Xx72@8viS=W`_3 zK@&A}g4|CbsYNxl$~(XB)HnBax5(M<$lY=q+?o;PWn_;Ro`=8ulfqS^UWM;j?;vLF z!rjzYt7H z!#%ISLiY#mACa!1PsY?bfayO36|$pgvv(>$-6u3nuE*^cWu#=8O-U;Bbt?n~$=i_1 zH#?pVF*Xr`FCkeSpn_43BrGw#zS%VIuTQ4~rLIb1`|3DZgK;3zoP}`i-LyV?n1;Yg_X|u_`mXEjtoWpW*sE+*AE2NT<7|i%dw~@*@a>=!z?sFWvvz{zj)NS(JT9% zGFZEivj4tp560RI5g)6IiU6e=BR({)UisHYZJqqna2(lc(;-g!4p>(J$EQ4-IKAOB z;L<}BaA~r*LZSsYzn}+De~~$;yjcArGKBn*9qc#q3u`usz{3JqkjNSd!m24oVLuXDiFRPFsu}p zzdj?n@mTCJ8#IjR(Ae@mdyGFqVQ@J^b3B+g;T%#KoQ~ZesTkJ`SNHHYOwT1f?)ofc zxt&sQ$oRYuwihN(q2Tnh78!7*K!Hh&&ZoP8W zEQC^Y47<}ZCY99QT!vwEHy?57lz}<~SNJx9)>RO0Af*9q0DFUKH7YtRvC_s9#ct8b zc5n4@y}r2JO)gA#rL`^Hqk{>1^1D4``eP(0wzX@_vY9>|v>*=kO7P@~2jYH>9|>H5 zn!vfA;Bol=H~ZXq8LhT|kkzK3W{Kx{@umkNzZ*Qw9Q9{w;o^6A;6eHm zX;J_Y8f=zpD3PxP>YD>I4#mbh+S@mC+{CvO#O8Gp#I`S%w}Z#(Am=M?kxBzP;gG1&BB^`Bik;< z`v1j9ILu!%9+FC`b%A$%HE)mT^}ArdIf^}^q=(0{*tX@s3YxS1LK+hzoIlp@1qb4( zgPbzWIRcd>SXp?so}R5cc1eLgDeFgVY^ehqP>XpZ)sjkRx(Z92S@((SPk1!O>hk+b zhCNh{bjnI2X`-(9#x$LX=9VQ3=qAc+Dtea+{T+1XGycoV#+zw#GLr)aZ)M`UO?Lnk zbbnGYfC5&;zB+rrOHTwTcg^T>Bu*vC3dk$3xhgTDw53UzPU7!mW}>VcAsCEPQ?Q=u;T@TUwTgO>fbErJ9_l({yC%>CtXwo&^TJUY{G;ve^rzR9E5IgT4xa2 z(#H>`>g@}6VVd%uL-;V99j1+B8o&HtABe!W!*(4W-<5w{uYz&?keCo;+}(Mdy!_!P z)xKfz{a%0d_)`uqPgnr9jr9gUN@&W;Oy_{#KEX+MCt0+i@BNHrdxpUU+y!)p5$}86 z1L`|;O2wUPaX0t&6?72}3!29YUb3^fXi+i3i=5< zPj7osy3u?i_c|tga?Kp~KLX%3tKs$(Q&zX#uH6fJUe~B@zy|l~d8!fyT=`;oT9&b9 zaM_wkCIwP(GZgQSC%uI^O*5zs!43AJ#rR1dkbeEWVye%*W}DMEv|?3rYDa0Tp=mlh zwrwX9(8;Pc)+3RRZv!s~kx{W7w5{O2V;#@$;4q0o1H*#(kGp0)#4247ys-Q)+$O@; zJ7PRJ7!nwYV>DR5>6G47x6@=VqUTf5`z(A5Y@R5=oNV(bMJi&sas zUS;Cr)X;yaJrc-qb|ncLVt{oW^%>&j)1{TKQ|}v3sKNeo>W+3o;Rdd$TIVphGKOSt z_3LCJa$7?k%og9?S9rJV5*jisIX;GArz;6#)7k0EyHP423%j3e!DCZz{i1-jW=_+B z!5vXZWh(8!zrWqnD0>^X8KR21>m^15A2L;|B`y~GlTjk9U#|Eckn>J26}t*Mr0zQoCkKZc z&rk~3%V@Y6i)G1M1kN!dUwU-t3XLK`2J0WGh6isfqnv^dv$Fg?yK9M%NTJZ=SQ$T= z2-KIs6rw|0_P56iKAs637!W@_VgC^1y_kPkdji~$x^du_tz5>4Uf-bdwJ$NJxAh*b zhpQ)#u&7_plxmLUbTPZBu6w_K%QZZkeqVckK?gl8f`0S7RJ~V;KT1xrz#55R1t>Dk zyJJm0c%_&caq&#-W)@T-a$M>`E*Oe{so#zc_Y2sMW$~2bN*D&HZL!MehOiSS^bv(H zE-;F8>| zV+~#QgEiIfsE{ofXBgihifA<7ZZn~hG|I@PMVrQPC{x}6;7Y7yZxMc?R_)S9Jb|0) zfh}(NlTuxSh45*Z&(h@?jINW68Hf}^#4N2FlKq>O!3=*m#ArfXB5#SaXQK|I;J=b9 z0>)3Nn4LDV<`(W&qn4j}^wV!MBw*C{N@cQE6xGCUx_M&2E~iY5%TVZ&Hg8;n;Ij_E z=HZ*RZH2hK8f`)IAR;K;juJ$sW6)VgyqPiD}naCroBAGP#)@F7c1DN5h#8lCR;O-6|s?{5m|A zQ3x&pgF8r-n*ySGiN*jgrnvO_JNJ{7+rOgfmH+-zT*ZL$P%&pzt(Q`A!#T`W2Cu^> znY$K=eeWP7ec?zctM;&D>gTT$0^V87sn#4pfQj-lI^d(KWiGiL?traFP{4tdNN5<5 z@glLr&@mzU;eqE&66(BIIA7D8t_?;p_b@7Zy^+Qa?KNLW-_3tz^4V>MmrBR+yvNB} z4~FUFHXe#(rq}E=9*D7(1?QY8abSDSKP+WhN+87%sKx=1h>Wptxvt{FP4%aM>xGH$ctu!rKrS%oTLNeNpy_bVR>F=VwXHYpxNNH;q z*WClbd>ozBw39D=o-#U+XeX)Dha6RlOEX;&2W}syQZriaBrg>HoPchC3%%!lkh;Ya z==>GlTw|(B2}+&nmS%2RCHucUqu94HKPW41LD?&7PRzp;Bgg z<(;_^NK4;>x7f21f&_usr(4X<$=FW%?xPdr;?LjfABr*q_nWJD8I= z5z+>qRS}yu1(e-)D3!M2$=LRE-${|mh!mOWeiM~R|ZZ&M&EQs+z`1CuW3tDT&9bM?>5qE zmicy@eo_j-Ud0%&)+YaH$`IDSGp3@%l613b11;a)(AuA#-NO#0H0>%*+bEu|n-`vZ zSphxyw+0nA2YKa*4o25$a#c+x-LpTLIrV`;7#drk(;HSGfcjz|{A81Rp`9ie9_H}>|^5<{IbItM^SQ+htNkiNaa`3K z^n_2ucTnYVEz--`Y_km8`P#vBh1ZFmTcY%i#)(0c{p?%=CDhu9QotC~VmYhQtU`Q1RO(Bu>KI&L+x= zpx*UtFHwwii(s98S0dAjhJKR5uF%{RF{-NXg9+}guCAHnp;iuQ%{dc3ki-j*S4NL8 zvk@n}IugiHoPD2&RJFiSj&J6Y!|Pt@CCX@ebvp}n_ypVLv!1vp2s?=-Y?j>^0%RfD zwf<`J+mnL#C@=^Us%0hb#-TR8{qE-L295om zZL_vc0vo840|}%PMV_?(gjI+2$;`0KcEb{6ILIIXJwU?0pb>DjZ9rAgo0OQxD`UIi zt(8&(;`y7UoX}ZtoRYA1zp3K{m^6|1N&}ucvU$-{93*|H1RPu|t(2 ziic?jA%WQK^J|1v2+zV%=kS`bT?&IU_?MPYWWl@)TR^3c0^Do$9N%@JnmoQFQ+F?7 zG#g8s8_NQ)G1{cP#Wt{MF6msfwVEG}ya4^-a6>Qi2!OVD%}+Jm452*aVoix|1ZxAm zDIGoE;EBYP(e?Johwm^K^l+P}?z=+cEc&wCc6S8o&`|4IXl4HzAdF+OafnOFV=xC~ zZ>$~Zm9o2h914%U#D77iBmh*zkQp_J@`L0fts#hwC7O7l90~V8tOTAh?vjMSjpV+P z?2sRCsoDPlLRYaQPgB-m^a_y{i~>D>FMA@59hHUJT2DTq5*eT>dxL0`MZ>#*y1-CI zi;u|1=Nx zG)0w_KKwpjL(G!^{NgI9e3<~|B_3~y%PhJvNue#>3Nwcczl?Q?OY;+z9cMVdKc?>B zUAxKVFsw}x=CZu7HEHT$Bn;gt7DwbB%^u^$CKPEbIyH^n zExwba@1n{Gae}SF{`P5;x**UBW3RQdE9=GaVKxjJ?{U<&@O;bu2itRT7;}}k(j=~;dm1iFVl^?LKlTHV8X6Zs2SCDtS5b=J?M_yeK&C$u+gl>4lQd?kL1_c5bL zL%Y<>C@4M8hgR3uSuDJ<6Q}s-#nm0gjmY7{tBn{r$t#B?tD3bdO2$l0o8{TPG>QPF zMMy-DqzyVAA3p#LYQUw~DJwO%J^GvrS+4-yD%s$wkm5T&)gjpM5iLHNUMPV))rlBO z3D7mPZUHY97KKp#u6Sj^KFYeHHd|C1)ir@Pfl^vCj_QmZ{xJ`$LPEqE0glLtpCSP7 z-!Gjo-O+=RXi#(H?vtHD4ia?b}zqj=G+36oTL?T>g zXjBGgu+ROLy3gcM&3GZ8tOV@VYdq0R(U!&Ot`kca8txSnvJ7nGbnokVC`vzp`i&O0 zJ|5H^)&;W+AU85po7!S6cjiEpcEA)G(??E{lR%9>x`QUSDTw^q)&Y#gTJ4$Z zBeb$%Y3DZ##VP<-CB6DvJ|UC%K6~`%4A_sBuE2XE0YZOK8L>+!ta6)D z-9Ia@XLgL^+v@8C;ju8%vTz^lsmyk03Tnwdx#14@yU(E)!?<=S2ZMlS0YOHOziClk-B`h8?9%J>O^#Oon2!s{Wcw zKkkr1Z5}kq^JK1GD*`hcMYm@+k^+}yo`LGl8c9iYq#)TgdQYe_f)^AQ#k0;XUj-!< zO+_2-H0c)O3KO5ngg|7o^{z^Kn1K>;dO|@u?7qjE-TcZFa{FXhK$~dxlBLKdqbn~y zVyXr}Hvt=k3`g4T?;EMuu}0Jn*=eGQz3Vc2QfQ!YvRW?6x)ew&2MiT)4)j3kDe!x1 z<^;!$mL5Z>yv7(_d%bLzlm1Af9uA!Q1Phrg#9IgiB;d(oJ}(uF=HjfpK1m{mZnpVr zGY;KnF{dylPnsW*)6hooUDRs2DAKIcu01Tv{PkOj1JLzt}*jx?Bep&sL+$ zZ(adDmLF>gf2*xawH_4deq9OdiX(3Ur;fz13>`jj@=j8y)lH5)M}85dYxsm(#*^C{8NnNQT=>*df}inX(9>y z;qM@Xi6AGUI@B-#nwJJmaz#E0|GBeD?*svRq;9;gi3Yi04d~UXwUMJ!MD0`+dS8R( zah^VK1eEx1MFUcH_%M0G+Ux!9E;EH3tXVrE_y;%zG`JVb*k{Zf-}@S7fSasW{Jd@A z(*rm~F=2U8TRCf3fnb3SkH{W*B&cdyiwk5EF<%S%+?nJ@5yWgDpG~PsF;pfcO+uZL zx2*Vn-b~20Z##q@GXGNfl9GEFgG@az7O*(xJ!53^0QM?!1mAAWxXe-0tiePzsksTe zdn5Dsdvyg8_evCcP-9pjc7#)FrFCg(l~r^K$asvQ6V+ZTT|?Aq7y<@oW@UF^eQrtj zC)Rg?tjlSs@7Z37i+k;dAD27Ahuv^_frD?UidE6dm|bD+0w;Vqy63b-k>XEFT}I7% z{9zzZM)6GF&8jo!5J^`0C_^Vu{4jiYEucF%?KC4~jJ~f98K*zh*`A;y<<0}NLi@US-8Uc?So!y3Sp{I_5vwU-@2<%@=_as)N739&9jeH8 z(_Ta-{w9n)Jz%%-zawAuSrh?Y)e~c{Ww)ppvfOgyN_y(Qza4j{3Qb<|m*xIctC9ru z)M9HQ(tK_sU8+}8DfTbRpo>I<+eli)b0F(J-8Oi^t<4^;U@&mW2^@7a1< zUD%Lz$qf-Ii?wCR3tYK!DIr_d-45V!imJu?e6HAbQnOl7#UB&QVh=5WJd14Nnf?u$ z^+#obO5ro6~Ju!Ey1RgO5Ki-?Acaa(NJYLh&)wZj-_jFo|!^?+8 z8kD@dR)zhoiKg5+hwHn?dcXn#-U~!`{Y%{)p%>Z_NN_5L@=dI?oEyLE;u=yi64WmZ zWC4NPdOAC-ko!pCNzCQ;vYD{BXoiS|tSr#fXR*Bm77`ob-a@nZjF&HQR-ZG>RCRx`FI{63k$!@AJ{Hz|2%CzhunndL(;-s(cb*r-;L_2=Tjd=S^7Jy94b0_hvI4i7+(76PpSi-QP9=IRPSM?@7C zNai`dV*V0>q`QK;F_SEP9~GWe+KodkCkx$z49f~M(^7RzyEE4sXb%*> zumovv4w_pHDVU`9ZgB$CAUx7Z-+;0d(zVcHs&{QjnVxBHXiJbxeNng=Is{*Q9r_>V z31)Qm#z%M6b{!eulz*;7W8m^Hs)_hGcg-a;N^~ixH-Z%zs_yATYMwSH@=rHq8PmT8c~thKEdukCW8sMB|6>D z^W5wG!jE&f2w8lEAd|Qrc(8J1`y{`TmKJ}riMPfZv1WIU7O`PKA){6-Qb8@Un1h&c zX7A;{8jG3m^vD-d_&>oKhF~oFmLNPv1;kIRlw0E8xoNI0rgsMXr0UF*+B=%>Qn3U- z1i>f3_ua@;*N|;{I=|VfSEfPgHrk)2pyKb9Sfi-P&ZM)On{)f`tudD2V6lm_KBfv9 zIO6c=fjZ&XpTBw)9@aCsc~+>!q1=ND66;Gj?27XS$^+X0`(MsfiYXjl0xDUmAhMml zZlQ@0hbha#ejKpNrweeD4xGJT?`VBuK zj+#vS_ZKs6$ldHQKL{{q5;8oLbiBaMi{gfbBR%?0FGut_cX5!YrSeI6zUH83^HCj92#QvGHOG){Q%v*Kugz9srL9tQzuvvav|BkH27ju z+9|<*gQg#OQ4vbkxCV46mk=y9q;sfeP3NklJ>3Gogcp)+ldR(4unKo_dkrufya5WS zYS%phAG_Q(UoLx}C|B84i?kqYjm2I}`Vd0b6v(Ym1HkbxjU+7+F~(Ot=)kd6$tTt& zAkq3-gH^tfFA2V^#{JrfQFoI#8b7o2YP}N+_bS6n0>u|9k&2~P1xY;tbn)Oe#VirYkre*KeVeh+1awa# z5n!W^Nwj!ZMpsdE z(2Jrf%0$`3P7o$9Kl03BBZj$J=&>y;f!MTB6afNO3&K64ApeW=ENd7#c41jE>uN9i z)z4G7fJ5BHdY$xlz1$9sGx^S!fL)-unFoYPhc3d? zjROQx`8=y;{EPRW*me3Wr3uB;!GlaeW~x>M%`as`eKSqhKoenh4s{tyuKT!1lP`!- zD7=>7RKURopwDpsHr^z-+0eYFE46jBU9+*D?=ZwHR)5-7YYl9}HuSWDh5XnCs4A)WcuR#fgrf`_XGxo+(i~1lDetg4U6=SbG0v zBOv8pu|G&PTTD=_dB#GgI$l;xcPNn z{+O7vc>CYAb2R$OAnopZTP#K=6<{uoHjz$jRV1xnmIK`HWR<6oti{uP2u~gZ!Yx?Y z+GvIqysFKrdg&L+EWz#N{98hY#006>I!gCi`(Y=x&B>+>wytjV6(H5`BCB)A?c`{f zFfmrZ>q0JyZeG3tla&cb6;F#Pdrq`HX=NHx+wJxt8-%y{YNRh#!P}0Mz;U; z0^CNs$&h3Wg7r{$RP7WXDa2AW^$Tgd(t|s24({WtA4=RpiixfKk&l}E3N4GBL05l1 zZ@kaOuK`FmKCvJ2t=_7cde56+f z5$2l+Dj~(2m2O3Y2O@a67eL_${*#3&_$f+UU*`JOD_kYdPg#g%$Rm(V;SPx(U>VGw zSytT3fQ@l%=sp(89n5LF$}@!@@L zWASe)np$56VPI$uCjx;lewYboCuu?STcj6Qw8280T&>9pF(DP8$l zQ@ne!!`kw}kGRdVc-DyWlH#^!u~}QiBWXeCVrnd76E}R!pk?P6m7>8VfOJ{xRiO6g z;K3oEZ7B38YC885!lL#TVR7Inv99_o%!#TpHZHXlXLiFcsnNsdeXM7_e3DAVH#C&D zA>zA2W%?j_kDgh%q!mLTK!zq+#v@#_(r>=sz-K9iv)K8D+z633Kv$U>C*I>FKX-^=?lvUC%-odVaQ#%Vj{-VC43*(>a=h{2N4m|z#c>*R-byBK#M3t zxVQA98+thl_+H!i46?K(t2S)R--)KjiY<@vv$ zBXWoO5hVpAhMf^4{w&9?Z_Dk5j>vRpun_7i>+gmw_}3 z1J-8S`rQJs7+J7}Z5ANcfo8|uggMej=ZAtQr$ZO2tAXEJC0usyTzqZ6pm}5>Jbm1= zK+v#Q`si{heDu0mA#S*lls7Kd8-M|+ci`+YJScv>WzmGJL!3m--RjX*82Jn2AEqC(h?F&aKaw>8GMHKC-DE}DyA_T zsYUUABo?`9N(lquHA`J{Mv=)Ra=xXDC&O5U!Mz(Gk zeY$DE%ZGeKlFhjbm%(q0_(<)`Lb{A$zX|e|WUNY~bggse!8ke{S3EX<8IhMsCYSm% z)qM7_0om0hU@Qi~6C$=OK?>&)eVb5qKc9qILtZMV^nIDdw@wPy5##NFc*ee3Z;KtI+m%SM=Ck8>evEY?c< z(S_OWSz$Jn0be_8pL9ter){-(RLHNlys~&aN21@AwQI(RBaY;d(K)uON9LbphnMkB zwe(viRwhJ-=_>WRBDr(j#0XYF{?!f7H9{AqgKREfz&=R)p|n*8YQghS1a1qah`flC z2f9xvegd1sAiNpeXtQ!7%5k7r?Lz)EDG)PAbnB!|?rUTy4=xww6b+&@lS`4n#SpbMc(TRn?-mM>qze>#X^Jh(N4 zmEC8Tq22&LxAF^=Nmic8-pC_0CHvlEH25QO2Bf_oNl!`)X2W|kSGt;V@*FF*tep(> zXf5a>qCGoXm5i=7GYS(uk7l&Dd03=#^z?t}F#|hkY9@&wB@1b8-<3xX5`Pa>XzXjS z#wn8w_0h~6@s(?9_pFK4!t#0hcfLVAI{*Mx`&<&KNuY(cVG}F~WkT|!&E?QUnrQEw z?-^*@%xjrynod+08=F;B6hhia0Ym)p2(hGjK?(=LCza3{O~eLn`wtyS=rBzX%Oldjo3 zuxb(mtNHFr&rGBw0xeiJTJ2N)BiJzd0!J1HG0<>Yjt=bU{X7#8ALQ#CCU@b!!I4PW zEE*4P==5)Gq zLPzJbi}wsqQyvKa#GbZTpacL?vGeRqI3+Nbxj8Je)8xI3+_8tpHHX+))8oN$b`VF^ z8gh)JvgXwUH1cbDBU zhn*=mR|WYPjDtYG_({@}8Po%a9EbIH$RM_mG(R~aGRBz$8sUj$8UDfG3jBZOpczMl z_^FO{n2S|z3FoJXX%TnxYY@Gz5~2UD6ZmR@MeS1gKH=uT5ae_1fo_=!p>|bcpZV4qi9gT_dW-bNu$?4zOda@HS zkuhXv=dq-;hQzE$zC!X1y-by~WlLACUT2bJYnKy2=_O%63Y}Lz$}U7&(*sqp7FI2& z{$G!I)tpLi>6zui_)gaNH-l%Ja59PV!Off%g zqcsHDs89w(bXf~%R9SOhpsLzYsOm;zLqmyAR|-sfvd3+Dt4*!>#RD@fQSO11l#P-D z20{EPJwj8rP=p?nkD3;AS~C@uRRY~DQ_+=I%a4@4~o%y)<;4tUgXAn2J*(dlRcK|Y!tJno`#)F^5_Xhx{3?R#vfku)bj%nPhN zW9xCq^Dk%k8vYru4rIpY@8BVwADD|K8l%;#2a|8Mh*~%d=jys zlsP!4(5vC|Pg0Gj4lTsOLLRV<%9YngNu)lSr$x7j?7OYo5DFHhymN<_ID_vC0VWba zb5^R~`Nf)jI1bXk_}ma^g0qdD<3b#*S#I&tFq#<==AMIUg$<8 z%!?yxrJ_WjxgM8oKA3$9UHDHU%91w0DHq;5?pk&wwA#5Dp}s!A#kwWK(^+7#uew%1 zs2dC^)lTSJ_0zT5NIDTGu)v4L)rK|xIY#K41HlGoP>)Pn%+p;7$klOsK|qLQ7r`ae z+(cpOJvF2j$B0Hut@>{rv}h6nG8y3ZsA|w}{=0t+Ytp?Vwp(U@V=h%8>K{$ zfK4(4T9y_uWX`;1+9X4}6Haq-jY};S-nd+VrtMh56Nfs^I#oT} zuIWDi#XJ0JXE5xxpgjNCEM;yw6$1Ix1`U~9{bZ|ZlQDjGN68gM!eZHehhxy5MZos2 zSWfD!imOjuT7>S?oV~<;&vxqZ$lzzq@Jr?Ot=&5;UEj@~-l1xSwJ{-Lymx)B%&Bpy zKgzv0aQ$}kM@^TVebyy`bscUoR)b7^b$#Mfzb4W|bU-W(;N63dKRE0K%)>0fxFGnY zd46Eh3CP1s=z^tf1soi_bZ9J`@jK}%dAp3oUL$#_KT%CX+a>CBsS3D?shLpc3{Xy= zQP60p)5N2N>^N(;U;)fmK|7lV&UYGFoxMZT5 z`87L_XO`gTCncdrwEupIeA5lvvlz}cq_1gDA(UCa_hu+Y_XWpnL;X zpA(iVV+j|Hk0iNzL&8<9^XSgL`+tJ0T}aEwMXD9dkv`WU5M?@wQe{4dao9k%#M!>h zM~O{t7G+Im={$$Cgm;F~6%8>@n<|W3QoxwNtewsmaW=kf|FdnxnnQ)J)W*aZ3>-4; z0_huL#pd(2%E!tt{q{8{$+6XQ5~&LH4E|XAlj8KG3zYr9Rc00Wh0H!b^9_@w<3hWS zavV|&S8O;kmb#;gpXk^1_Mq5h+{nHkOPJ?O#PD798wIPH@8Cp`?e!AK_mG|10ro)| zUKK}yE&@@qR}nrzeOGk$vPo`5mo#2ql-{PGY$Fbc7`+eFu5_KOmYb&m_~^T`K?yt? z+-E~AdQ6v4d-yd{$t}{z{91cG!-%V?eJfC3hAa0z)E5E)%*~Q{f97EHmSraYF)PFR zCEj)#ai~MEytOIYB3tXrU!6~AzUPX%OETAEy8IUi{lDezpn{hOp210!^x{pZW z6#7`88s)~!IZ7i`(3Jujqe=npIluyH&&{k;y>T+qtz_?xX!3WXUedP?aA6RznN(ar zS5?TU-aG@9VJ19@v*ssunvB|rh$Zfs%J~(_E2oP|`w z$$D$gY%4tYid&!Ftv3hFZLcT17L65S%w+_J&pjH3qr>B$Ku-a=+YQuKT}Gk$jLffb zgHVdi@c&%qz)_aOQNlmc`7U_J&-c1aJF~!K0}-n}OjViHkXLw5?=q3Sr6GSA_*dCJ z0c-EKw^*L73^X1T15i&NZ7 zgRakksg*sgPG=0@8pzSj=^3Tr;iC7lrn5@MDy^tDITXv_Lrz(6EWqV%!8c(Z4;O8h zkSLq4cJRU<4_+Y`NC>C(nK0hAMC2K#ruLZPs&OoN&=+Uvy{&QGdadBtJ`3Q~f>Cb_u1CrO z8;>7>4mxYB?oq)R;FkBuBKjc>G9@uS4NiJ686Qbg><56yi=J5qb|zpHT{*P&TA9if zx}iRo>~wPfnQlzVNO0+_Pb!*!f82?K`u>~f+d%A1I& zr&%+StDyF0_K_@j)Ej4;DKU89Wo*`BB4aA$O^zNtCgL=mo#%^I)Jxm4%X8`6gyriL zwKk=X0Ssw=+<<5t+DK5-=BypkuZFmC4pu^L!IW->#v)hJEaV{WW|`Qx-~CSM=K*6A zcp#i*b-4Ut;<8qN|atl(ur7pq14X$lO@2Z zM)P#IXoFQzpu>A!+glpLGVY$q0d;-K}&}BE4Tg;w$xoM(vz`&|-g>AIC4-Gy5aFZ|7$5x{2^hKC|&a@utUh%S3&@ z=SDaNvjY5{hI)R;=@1j0b%c&G2z%jcS9ZsMS&!bmm;7yAa`ZTLES=iDIb#w*J2#U; zNkgsBn3INCaw0a#drmELiM1rF96x~ZZIvaUNmzu^j+^FNZWNSv47DTdP!ap1BnT|o zJSX$ytKgQ9gSNmMZbOhL5eEq6JY@AILE?+JTSEBwPDgyP%!Z2@>A~S+Ipsf1ZmKl4 zI(~aDa9_mU-mt#UJC&s{lCPUD3Rp(w1UKI1mb97dlt{=$?)L*5LX;Ff74-YH$HhJ? zNh1{?fxmD@&05iI!bUIufJ7Ev>2V`d6$*TM*}ia|qO%n37w9=3c+{4BtFb6b!Y&2T z%1N{|=w9|xq5jBM)f|h=(i};}E2vXs{EfLq(aFgZed9~4m&ReyOPaJ%sJmlI%AqBW zDUeI}7uF6-ylPV1lj5p})Xw!p)Oc&w=VYw}?oD6Rg$Dvefs4cmegPO*?K3yWZ~}N3 zP&5z_5Uu$1Lr8IlR2K~{` zAFjrR0zZgz`d`ybOk6cACUZf{`DmeXN>Y^*ybV=C>TMa-tOVdZ9`fA)x~NJE`D zpY`AtB$j;EONcXtZN-O|hxYmMy}y5ZZt5?gjz}E+fv;qT6L#i;w9V)9LLtF=GyB;| z`hFC2E1iN1Sna#__cvringwBgON;ua=VBfSFQyWT*u~}|A?1zHa+vjLrP}Tg9Gml< zLRq@|@YjqA@m&)rfq=6#NSvx7H9q`bpE#L7(3}U@&q-pI{J_emReoXokSNi%Zc70_ z3{9K#~;bE>>lKF4QkN#Ak-DytM8H;?i8o zu`GdRx6w44oeljNCaY2d70+!VCb6x@BNAt2nZ>%9fIlxAs!z2~74M%vzW~ zmhEMvkE6W<{zocBC>;FIKa(hGIN%WQ)<|(G6?5cNyB?OKntW>Yp@t2sY>;&i?zUhK za`U*e9RfGorwhABbSsfz2yWoIO}C}f+)P8&@MBH60#qJ1qgMwY)Poe*Q-?{g+mDlb zeno{5_wwa)fZ|cjIzwU@(d0|as0#&s4FMLR&%RZVN&m9J`3K_d68T}_Oe(n5WokKb zD~jJi75hrfiCUTl3!aFE;1rW5)2p|6f-=|p2{n4IEfKR2UO+j2=Q-=r%%I4+!*EDN zM7ksattU9(eGuqvT)Nu`B}lejys{PV zqX-CQyAoBI3&4K=-WWq5*-_o761*Z9vjlfPMYSHRxs}Ci#mQpC(z;w#2m+UHZw7T@ zZR0teQ}7r6?rU|rugu(wmnjTe9ufbWqJ5Hnn(~e^dS|Qlll^k*z3=ksH9r?&X5FkV zb8F;!|F57B>}tI{(v*|fJ}8*Ce|%6>u323$4q&42u{G3s)M`ydh{Yv2E;uRn-7}-a z6<4YnKC;lYJlQiK1bGjc#HY!uZh~s{@W77oDSQRt#C%8`|eGeC+TGYXSK3 zD=rav2LT$Dhl#LEs;;&MYGI3&l_Odh7bPW{bD_A;znz{O$?Cf>{Tn}%FdR}2Q0beC z+7Q$_E}M}jqo#D{ZRX^?$6i#~+@peE*jCD#_`RO>!R?0RGd><*FzpI0_H(sfnA$4U zq?wBQBjYs_^$RE>bxA>jJ0@eOod&TDs+Qrbt|QXB&q4Y>OhYSsUsh{@M637vGSCWR zKw8Q-*(iC*D3JZMqr0s499_e@0+Q*YL5!k!LXq3IK8A!5sJH)iZ}5KGL>| zJ06Wy;rUQY>Ft~eio??4SO`Xf8U+&r$Ls84-~jaOlyFIZS!AeCbC85+OII*Oz{YxE-J>)FQvj{gt4dQqaFNoUS` ziKL07feM`eo=1f0I38d&w)wST>>4tgH3omz)QWmx>}msL#5PrX8aXOYLdICjad6^K zh2bq-^!dc-({5}^T>jTCuAw>CP47Sgi4?n-gtq=|@%~^^IWHDN6x9A7bw=Zjb(_aF z?cXm@MRQI&12&mc)bBU+*ulev?LO`qS-8nndX2VNAt@f;!LXtGz>}T|6G7jg;bzTt z_=7V--~N<>9L1%aie2x7;P6a*8rE6|LGIG3tC$l$!CrtV*E)~!Ec zA_U0G^6k0iUZat}kXnxW6pI;PUCfIjIhlhHBWIE@cVI(-IZpMy@zV7{8oN2l!WEPT zDw6e2R}H6bq5T?&l8XTQv=wcJde%+?FD|yBKQhJ}JO#Tg%b)27h+ctWnfu7Lp|r5a zp#5!^DN+(H3KOKtt6+KH@^9%@|Cb;YZx2vIb7il?Kk;#VPbX$Gk*@~Ks1au5$NRoK z0Z|}#>~N51u{1$ErGY$z6aNt}=eG{pB5Fz)d0F(n+O6;4T|K5r`V!nnmK1yfL;efw zyGmIc z$M)VljtSBxL8z^8$dKwN!~8=j1n+6a#{&g=UqMB&Yx+U^uFE?&;bb#sd5biKA?kwz zB&(gFQ|1AnZG_pt&$l$UG++43?zemx!&HS5yfIfNs93f=f;t$%5b5YImFy1*&;T6UtqdsYcjL=u6y>oGS6@64|-(PCl)oG zktmc%5i06T=@TAaR%?ZR<5*@?ykWwa854sb_aIdQ64u`3dkq92%kQRYdMJ0M;!!V` z7;+w8od&F)wReD=WaJJtYuXBE6Wx*$x{B&D!wm2n96yMKvX)o@xTLUfj0DU)IAh@r z3mwrO?8=f50D*A6Vo*8|a!d zP^O2W{NffRB>lF~X7}lhy!ZSTn|mbYjiyNYHu^8*yTz%c31Dyf^dNd9VbOyfJc!$# zW%51$tl^_%9teBvASRpkkald2FK=-?b@PE7W2-1IT~9FL@A-#ty)`gkT1Y--njO~S zNP!A3d!DfS?13?_ytgs5er`N*SG^Qi<)P-<2oM#UEl(S;`}IW#hzWCOpT9 z56$v6HE&uxjJ5{ zA?j6M37|0$znfXvpgWWqVx&%S6AMV={dW*<7Xv^B^O;7#=H$hc=dbArSaLsncm9B_ zRcN-f^j%LDsm#_WdKUwcnQSMo5Y5hO+ICX0&+qyBbEh#m+PVbaDfqQXC@Lp2;#zqqmz+$+xyp#O zd^@)Z4zhsZYd!jqu8H}jouVAfTeZyGnhV>|^oI6lnQiIrt?+!bVo9^;q4&ASL|58q z?U;pbzIZN1_qQ1T>d|^E;wWZJOV$*N7IQ}L~-u4Uw?yFpq> zbP70biKmXT6H-NfRk8Nms`Q8<-Fcog=7hhPZBy*jj;)0N0>4O__3cZmjxBiScDQ8m z$?QZ0#CncpC!4pa6Q1eCEK}~tg0HsIU=;J+@mY91$d; z1HjFS1F7C2NAD(C1F>f!tGEnm^$#Yn=5}QO2H_7SOy!v^z|;J}p@nbz{e6mp^>x7k z0aq0Mo@O9mz^SKR6L+sO^B3Jij?Gmtb1 z(>txf6THV^!SxH#;0@pWQ_OD*tsXYT6r!>e5Ghw&d{GY%;sX{eodfCs4F+)a0~6?5 z-)kM_jws4hu3LJBdWEC9PBr%PpMM;}tFG+ruPj%Ik9s;KhTf_4(Nu(GzFPSvimuQw}al`G>w z&r!KbUOc|{Vf*Sbpwib@L5SSg`rvK?j~0zfV)u1W@2QZHDG=_vv=Y(61YcQ+FCh|Q z*j>et*HG))-@~dO@F6G`e=ZlJ-K~^#IfXFRvED`ik95_#U@#t6RFCkf9nhK@l2;0Y z^I%y`tVAbaO)?2Z^5YCm367HTzeBS-NPj?pq4{RY=YnO%+?XyiHO#z{D?W3y4k6Uv zCaO(VTQqV%^^7r5wy7!zX7MY%`#)1E5$Sgb9jN|bcfk%@vIrx?muyYr`Q%W3Ya+Z+u96x$hbJkbVM)#& zG)IhYEJ;Md%_}E2a?E3wxkw>9lpyMjAc37r+N7Ym3et;GA+(9R1V0sKoY=FjkRd?=eZzbF zm89NoCaKpOE&P)l+TnEJRkU7be5e6_JL-Mh{;9py1aHHx!~e)+0N^J_ARR-ZgFoRy z{bYT@_6T|K>`51WiAnOJ@uZu6Rl8>O7GHeiviC#GZD$?9!{_)v9Ey{l>Qt%freQBQ z2gO|V6vzghzN)ha+qvrk8OmOq_<)6qy~?1q5%Yt?gQe)w0lsy7?imcnA9b|=LvJNH z%ni4#SXRs1L>V^F2113r2E{D1bJ|iv(>FbI+b0BYZXV7P{pU-L)dgI|Zc5%`2~cy4 zfK?zA?;K-XrLIFVKZYII=Ed%0x1-B#->YyYNzX{mo0Slb59$J!2_(m~s(!0)M#BSh zw5ls$mFuKrAz9oCvAomfP(DI3s;HO!qDRB{p2T56FXjZ*(HQ}xCXs`rr^icuVwiiX z5se{uKD@W)Kv>-d67ROrw{2k`Q$M?J2IPzbVz~${s{cz_^GueG0b8P%Skr#Z2+hv} zy9=j-d+w1;IC_?OM!ma?mqXSBT~wBe2ac*8Uvj7+>!{6-|as*QVYx78anL z8bxvdM0e$L(jIy0l)BY=;^=onnNm`DwYxjWh0}EwzLy)vB(mUeQmc?xwH#wDx8O>2fIas8|WnndbHbE@&u z&9@Xei`AG88Me99Dmbc{cocsibg(1X{j747stS_~? zu57zfERwP0ye%sQ0Tn6m+B)N%)~7!Y<0qUD3L!tm74ipbhnX`ranWU%ksOBt`o+mV z1ac=BUQOwoP;zvB$7DEx$#F8Jll)(S7rS))HG9u7Z36nMgWOvnA!31bpy)q)M4j8^ zXQ0o15cLB|U!Z?TA~fT>w!Z6V2@PI6RDZX3DKJZ7Z;8AOg7*hyiY)bJOF2X)c^FIB zgBcb}O0Gay>?Xk^@CY#%XC+iI>_cELhnK9fU17yGSz4y_tUkUjVR+QADxkHFBA(wf z(EJYrt{~q~q#&A&IqJ4OOOi6Hj}sYW-u9F`zf>7~bL>kzamunDvBT+Ev@s*wkN9vi zkAOp+wjuuJ6p0{|;$=yT0ZChM1=T>(Y8$(sB6L8-5B#5;)En!z*k&lLotgxUdjLs5 zw!c}&@m9JBn0Ma7M=2sT^1_A8-!2gA<_eG~qi;*!I{weSi?m6**wkLgOSpAE7E|T7{2Laj-(wL(vu;+8KN25TIeW zWbXl-_k7BVbbCH|*xTSdLsYVH%8ObS>T3g8y!EEj29?SI|KulvHbv$Oei11)cw{+1 zK`)CJ&;Hk;e%#khO~r59QU(o;woX5;@_QQ-%$!x_U`)*#|p+?l=h)G=#}>bgQ`F-ahj>I z=4R>p&^8=hqLNAl;z1VuYp&(bQO%J!;_e5ONQ`h=eKn~_vRJPce_ni0$ufIX2s;~# zZkX28_hG=S%S3QFDCI!)f4Lp@%*6jXeFvKr+_uuIW;-Zon|yeV37SlnrXphbt6 z@VAE78<^2N8))TGJV7-s5HbTHP>yN#z$}JKT(u?FO%pt|E;>xtaCc@YW70MUx}*eN z`2@#=o=0{yeiff|<+|j=&LPU1h->VYrkArPk}OZb*IjEU(PPlIf6F{?+;AmO&zOQH zhC}LCj~P2bRNZ+&z*%?m`wvYs$Vs#gokNI+!gk+#J0d2}b`a^03vL4QOEp6sPulP4 zy94;L)|W5>$N^?q(SWzw{0pzJv*UBU>74poO)zyWb75f~4WU&+f@t14RcwGLb1fTO(H-Q33>zmE<&IwnXD-kP=d~3c3gRCc| zQ$y_wY4AO@0`+oG6xv7)g7h!fr(kXW`PI9U5EU_Yspdc)2`5ychtQKDw0*^3CBVLk zUURnElX`c)eaohiR=m*v7GY6mCNaCWX_1wAPqWV*4~fUIhDARJxBilK{Lmt~jwL$4 z2PE?#gI`c=o3!@6yg+?1TY{5+gKK{uPw6vnJUVMNHx5A)kn}Nz@S-WdXy$NOyP|?k zF7rU+F4pnWW#hCko!!a2=?itvfUNPWPC+E4>80sLvnz@KB-iPDN6jdC60A`k#POk~dAs0*# zA8i;NVqy!W!@NZ?1}0=-Q)H1B70>Vfvg9KELSbd)ATP<8{EklnKIut^pR3HCECkQ+ zkenOqmPtM=@nCye4a(1^XF&l0P!&Y;C^?W=NO{V?mC|o+!r?@F65RRPpDEexWc$eY ziDvur)O`|^P5r)0lunuLy;4h~6AT~U=MLJU1`a!tKfKnKsFUx=6>NR*p_~WxozE;Z zXu~X&xeujs0TC_{o1B4MNiI0M?%fg|!3FDbw`LWn8;Bmya(M9u1HA@6VTAODx@n<~ zIL7pUf|xe39wd-FpyUmCMS2TEKYdehE3iKhDpwD@_!5!d&MQ9${(ZA>Wh088dhBKr ze`1USqV2Vw;p3y}Cuqcvg}809&0)_|aB1=Vu^Y;wueUG}Xd?X7FNeVD2Z1Y70E>$R za2=PHOL+efr_>>F0l2cFsnqZ7q$JgT_<94rq6l7%ppoxu4Zy=)0a+UoS>jRysmwJk zEp%Xb1x_HdJTAA?THOInkz0gkv|!VOHK6?YGqqQC4fu$pT)!RP_vR1-SYP{x&uU2q z$+1U6KdX)Ua`}i3J^aa4SJwRtzNg?TX@E4>3?7@6E?+z&8!pH5cpp@CICs|xZ(eS> zrJ1UmYnTsKSK8fI2_TjLm%yZX#Nw$ikDio>*F1tYgsddiIvaei%l)ApecMZ^YNijDr~il!{ig9HH6P1iAz;9`ST#h@UZH z4TdE)!!H|0y+lvhGuRe`g{%o1=)C)GFXG057~8P8Z4SK&ZI6FkY6v!GiY+r0OFaR` z*E7`iGtb+Iq?U4$OHY$EMZif-tN}$%qb8yk(XS~r>ZQQR)(3w&_S`pjU59s>V^^D^ z{nlW2?wBV><%NG@`_)X0e}m7t;a$C=nkVaybYpNEb9>YV>XlstL^cgyCxq{5k>9O+ zY#m^b-tliWz!D@pCEdhXF9ZX@*oR4%zla zcsbEmIJV*en!o|<`^Iu(U}N*^J{9bw@J&Au zAc+a1Xf;rFq+j4jtn#iCiB^kiN*gPP>V^^AuR9_iw7UEn0+}MeKVbqi_&3nD-MH#_ z8=1iM&_KP|C;b|R&jhp(QReF--H!35A4 zF@s6aEAjyux+8L;(F8OLG1A(v6^JFFfJe@EN#!x+8HsqJ^O`gz;*TzbEJo%$f$^oV zG!Z|Kl}1bkb;=W zKh)nHeYOD2JbP#gS10#|%aS*Hb-`2geRnLmnHczI6*XE1*P~Ne&jGZ+}%&|U&x92p|IM{)x+LlKi5xuKP zSV|DKj}=d<6Q=qyC{?iqgDb6$ zg7{pBVPbCo9E7ky2sqqe_tTa^`Usw?eiz&2@`x7qXA-AP9GkIn;itsJ1vG}>GJ|r1 z?T0jJ$me>*Yu4_Ex#+37YtXsw;z!Hf<%hO<7y_4vd03#vt;8e=QAD;5kb(mnV4sK% zePmdhnkhVYS2o>smUUb8-`8vW07cF**>Ze5BWe`Uk;esA7G1L*Z2W!;)zBMH22+N`+~zF6*8npA z>ozRmZO*e4ktJS&hLT1C&TjDaFnkvjSr!9_xOmPmQjA}rIlWDT(Z_=oyP2?nwaSS{ zzsBqcIbwCJ50~Oy;0p5mYte8Ga#?UZrqXCvK#pU~IINdAiw`)7$Ky3?H1ih$#ET`0 zKotxtJhrbR55n9OA*+bm;`uA0@+AHt=_v}VOr-OUu6|5Lser7VlW1r=`Oot;Yvn#t zTR~?3$dJV7UvV@6LQ#~o7gh{N%`Pq)W0H7Jw~ib zm~fAS@9f*d@|RhXedgsvz2FGxyx!SQ=WNX+hi0|kL5wBHdic6s7=cVzK`$b0aN6RvORG?*-%dE)MV(HqyiIV)}k_iT6$pQ7NkotWwc4Ek@0XoKpstWGMUZA!5IVo^Ii7!lJ}t%xt)d=4pKN~ zgZ)|rEm$LJ3V_}SYzaK;CFg)r=SV;tt( z%~@(MNWCX!4?&iVHxZh6mwk5{PD58 zTw&>_2rh<_Z2TpJu7nXIOxIp@`3c9VKJF{mtou#woQ>GJhzD?YG!+8T0Yy@Awk>tm z=u?q`=9?Z+eH?#?iaEXQKSNNu<%lh}kJNRJ#=vf^R{M6Nwx9rNr_glE#BJg_{iRu8 zhcT7NEfL@2j!+saaj;BnpAOrhT4@$n8|@OHj9<`hTb-ar{IXB%0(d~oEN1*bkRx3X zY+en_o%rlaX&Ps_suz9XfjLM>K~sa-3+F2KiVr@zKwXG zS}MK;x+~I@-6$oe35naL&g#xvLoHCfJ5bFww_f8Ux<+fHK?$@Zgc`wbQu<7A{ZyKt zz9CdjD9d|)$7Aoz_UC~Q+S57~pWd$59G5NEWXi*+f2W`ZCHFz>PS$)9<6XrC%eBu( zOwMYj=YzXPJ8&gTTCrCAT9}+4k76UjD=auKN}HMddC*On20|SHIQ%;M(T)D#G%NUM zP!S-tO62lreH?y?`HG)38Q!tefIkY7!{!6GF_0qQB;SyKF$a^^@!Ks8?CNm&)KSqK zmEpYC|8EX%nOpcid9^-O?hdyasG}c)5+X$e&qf?;-DOYDdAJEm-_}rExCTzoN?ID4 zUtr-+vTk=%K%jS8(4Gkq?_y0c&T^`K=9IKwnDKDXh{vYT$#%qosROPOk&=A~q64NC zqt`Q{-PU9y@CMU|^Yq$UXYpL#H>spIIJS5sGe`u}S;CI%+|7W+R^A7s?M;lX>U&ri zndmzE2odxnEhsZqc?WZiuqu?25f{URTd|#g0Xn2tl^qe(*hAV-ufEbzDC8T5Zf~OC zG6z-T!nIAb<0y`Z6iSRC^a$z&VVL{(d014yQE^&wOj5y$Ep2x^kY&-$P5*%zm3nK$ zb`(j_1`WdEnks&OFzduc9g7mke;{@QP&P=@`W~W7J!b1{nd{jRQjtSmV4^#&BUp2b z0t4QfQ60OYo5~o;5E9y025r@GMWKs{YAR@56O-Y;`q!{_^}|=PVqrDF zzz1**HHTNMv4o*{*3@D^l}Hh>qU09oR5!?%T(t6Y)HZ$F&72)iIwxYd@Dtco_}lt~ z7>xlBITphO{N6{5-mnQO@OY#`5u~PqlMnD)q=aVd47S}m_kw_gBD9N@F%9ouDd7L? z6q#`zF{gE)fnor!oa@!y`3M?>4%ynx?QJcREIS53lts34sqW@lLxDf?zc;*uiM^Ab z`(H1aQHRb!()O-+macf@b+FW@eu1{xHDKXXv)bU*%=#Ekhk9Vl_+tu7 zr2fB#u01=?X6ox>4KhDD(J@&r(mHQd2;Ty~_i#DX+~%*7CRc2Li8gjY21yuIcfUR& ztmRoc<)t@6X^r;4n@$3~yjAdQhd`UxsZ~SnVPj^;A25Q*XO|P{5bq#|E5+4XfACx3 z#V|KY{oPaIt!HWqJmHN3+3D5Snv1#hS&M&96R4LETrSU)&&)-IY9fc_$wx;kWrJJ* zeDe=Hko>HMWhCY>ZT=eQxfMqTE5wFuYa=8t>YPDG$Q7f-aj;W>MKHaBSQg9pT(l2& zWw*|6p3O3HywCnvU(qNJ2 zXtrWRkUGvh@1TQS%<4XrGt~zM%b;EGb~W(v1gxK7z*Tr*AS{OQpP#miUdzr%^S&|m zy95kszZlcx8nde{m)I#Vc5$m)<4e-z-oT=`Moaf8#v04@6%AmhhH+vDk6Fb(@Q$tS zKnCtwz07h5t*?5~s~Dx^f|v?419QgaMhE?c3?(VU4fz!v#{Ue=&(rCH^Bj4ZDNXn) z9GWN)_|wOeynD&Kp?yu+V@VB=&7772Jy3*ZN20we4?OQ|M!GT_Yqj$I=}`4$jJ~-; zsjJl){ z^Ey+pOyTajfTq|2Y|jeg`iq*FEn(jGo94GQq;{6_HF zm*eGNgE=3lBYh6dunK23&Zpgx5on$<;CWxNM?Q@4OZ!ZFfP833nxn{8S-&Cku9XZr zpBBiApRJ3Em@Qy~k5SIg6A0alXX5kSK4iCs?>wlM*QR(GZk1ficCLY{8wJcb-i-PteoFV%kWyN3b#%-RP~{t<3Js8~&MG&i*fYJgGbeO*!9ks-g* zhaFZ9VYSz3P+D;DLFQP;TX-r3Y0La8NtbD~l}?pY?U8pwqCCZJPy-AmJ^JOp{JUMd z{Ca94Ldw$Crek|5dFy)AM1zwf|A;SbK1F0joK?{9+3!&zWa6jjE<%z7mcpKyay z?$EBsAVo@nP~1@!#cadzYeGmN9dE(UN)Xs+trEe~lKVJ`MwY4Gd;iJr88id)tW*z_kPw}mnU9~s&_z({$_YoYxcz*)$)H(d(SqKQ< zTv7Kb*lqv8jFO)1&M&V^1YRUCNxr)8d$2C+lhC7hYWh4 zMH74M_W~jGZ@uFl+95`-C+w!Yq_JMdH-1ULm(0GfBA3qY&yEpSkuJ)5q0n)Fz?YgC z&yPAkG~#NS%TK+q;;ELtu9>vA|P1!T-uR z5_2(M5Dj4QK93Ry)s3G7a>`h6I@TrsxQP3V1+aP6G&wwF#<>j-rYUCOD0V#2gWZuV zHA}J6$E@~lYXrA!CfTPl>mgIaUzDsM_|yHK$(m@aB`6Q=TCqEkU7msn&s+F0qkDuK zdPk|Dpj3kP-{a?tIE>Df!4n|FEL=3@s^SZC@gx-f(<5)q^Seg5!cUIX^+!+16w#Iz zA4@ZL%ikkFuiV{U!Z~K4b9VFTvQmfctKlKvE#0&`5YzDTWBt3KP_plqS6dwmSJjzHO9WZr!oOI>OTOSl2MG$qDMYTDy6^D9R$l z#^`FmAf?Thji=fPAYrhC4?F`F0W20S(GyEK1tN{wGc-G$C_YLbTe%kSO=Nb>(ERFp zZWk{;+``c?^^6%iu%LdS!zqc4n`|WY=Vr`F7>eE?7KiPM-@|0DgG;zIdf^ebUZkeJ zX?neW;8tV++mJ*m*UFq4k8KG)+rfMFrj1fp5e|ojJEOm${ z!zi)fu+MP-lNZ7-&7cHNgsO5KG0j9m(zpofxYb!hu%Yf!K<;ASOc!=BrMSsfe1}a4EWTCYMPGC#ZV~*kt z?Nsx%<3~@-6=V5;{Pk9MGlzW@!7~U_+W^-) zqsRsc<>EO7bVby5oN>K8(t=qvX7Vl*4){}1BHPqO#>L4GP%5G+ay-QJbb)oVQ8>Fq zITcya?+0y~p_#VwjZzIiatxirO_~rZuK$XOWj(*RZ9e+e0kxb+EvvOt%xX01a{Y~_ z*8*UL-NsvjKR&1)muGxzXTsOhuDs5`TS`n9g9XzDKoJ zc_HxahIN&28W~n6x&W_u6nj&Kbs1{Mp}kZ*q5pwaU8pt@8;mhwqvsnJ7@X(a=oM)B zA~3UUpEr;hGU}WaO`bQ{+G7fu+>00tuB-iTz*ZEPq?v$ z{=0Rp3n1*94s0NfxdfjxJp#f$NTd10Y%bXx%AOZrXm|lr-{$Dqz8DIijbKZ)WY8}e z=>8!$tH7N>7iC7;W)A2{Rd8LzvTOd@*$=4uf9tiU$2Q)Ydn4tjHi5r0|0y29uArzn z&m<;0M%^eTT$kqHYADkHrY@XVle#~#9Eq178g;4XOpJRR&f=X5>SDr=@Ji`V0hF&J@(BJZ46LCtv#~|ay+JjY zX|VPMbghv>`5cZmQcvPkzv%bwdSC=cMb2z;D6u!t-pz`RB&JB_o8$DTJws_5Gh;D1 zzFjpisSRONs!im+(#e={zf*w{B(9_sRlDf~Xp-ck@P>nlcj11Uz8S<1c3-NF zmeqp3Q}PQ$uRi|W!90}bwV%Mmq`7n3>YXUW{x?C+;vV+<;$|qOW@Mg2zq->UxujKX(+(OHip6 zp*!I1bck#!3ve8+H#|VL9>u$eaMQd0aJ&X856la-b_TG^2yrRXG!s5BxdZF+=-zD~MIs{oHwnK(FLQtJn|t?%NeHX! zb}@PWHL5o^b20Ulfq&mRH6`}}AFIL{?F3bj=)N1WVun1`FR<(RI*OTEMiA5W#ui8P z2-b6^nBrLz?Ird|f?>C0s%k}yUo#7iVQ^=A9m?Lab&OSX8LI?OS zu~Lr1_xMg}+fQ4vp>3oWekjMwdPFnvHYK)>*hCu=;RrptZPO;BT?gqpXfUl$wQvp> z5>_%7B2fadw2s_@!<~D=x;2L0zVkiw73XcYms+vAfJn7rgI*I@MS}{dL(rje6PXO; z`e{=>!W0_d2Gqq%Om-O7oZ|~}xt!#GML!bid(*pXdu5Lf2Ffl4t5acqNE8asW-Ixeh(^Q(DC2DicJ-X{WA!DlX1LmUtE zG&;1I6yN{{!pOz`Jd8Kd|J&yy`Ur1W+PMkMa8@-V#U31Zvsc%@SKarG;)6RtBYe4# z_=!`6ICs9of;LzGbu{9;?~JG8VD=>0=ES0%vbNy(`7d_~KGnn!DPdT5n0S zc3SNPBZU}0=0gSXj_5mH0r7vnJ!?yM8$HF9ypuXXhrN0LmEoWg9BUvr9m!>P98-c} zV4zeu+vMF*Sk_Z|qLZ|?TkK#t&{-d%zp|J#^^2qMIU}zc-`ntF_j`L?oJy{1mzUD5 zj&&*mErQ`Z@({9UeI;n*JB3wMXsvn6*vhK;-r7Y%iU_287}InWx!g&@7HE zIENrFYBT#O%yz=b+SQFF$2k$(Q{(?jXQJN=Dd+Pz;1q^L=Btj(;oy%M)*9ok2?;M+ z(Kz$_Nv#ItY3(yHcd^=x&%lCcJy@#n?iNh)xf%1ROIjTfv3RalRZB1aj#VEE#2*H; zcVTU8!eo$nE%WRc3&&tl%{v_&clw=SB!0#NingZ`sQZ(UyRPV6vNnRvegj~gc&k8) z*a+&nd=S4f8f`WhW=s>4S!-V__I!z~-+A!8UuvTbBDFEXTEom<^}nKXjudr(qN?={ z=S6Wx3_*plA##Wxk**|YV&U76h)ymDf2uX(bIgFBQ({}GXuB=jPG|%Q6zt|7{@U81 zW$r7Fp>ko5Pl}0OobA0EZZy$0tIYW48SC?Kn}q6A^_8djsh0W$B|db zbyPT=xz`e)Rs0f#sqA!w{H0nQRukSZ8Y~j+@P$24G~3%ds_;@l1}PaF^uxUDXF1V9p-5ERF51_wY>wXnPu;@# z`59WGG3>p(1e`T8Nt_;(cbJtVoT<^MI!FU&&MHN?#&6P;nA^FX5-99B3Z=uE`?}Se z`m`H$k*OTy3KJz2^{KVyHuVrFgWLiDMHRHtTUR!q2l9Fs299o$eh_@kXL|o<;GAI?qTk6%H*LV#GtlHLBG6mXl6bVE6tjdH(b-<^H#{5fX34xE#lg6E;! zpw47bw?+9``|3{7St~w`uzloo1hXY6v-}9n#@s`7%O5DXptX|#qrYI2HK`;?Lk1e& zrCF87*A&{^ut=^}`peha2IuE`Js7l|!p*?r1dov!(o?Lo+CZC&*v(qR2oHH+`NSA1 z#u&}leWveu^g8Zjy1aI>#`1qVuH+GJ&0u+7+k?Y-=Z9VeDOvJmB`#t)-#g_zUczy) z>nOEl7!tbBy8%{;(GMr_+M8G>vy0v?RP0XUHP&$NPty>JWd^V| z?9yoXLjO!8WUbmW^;;m6^hf*fz#X5q|5!B!=~_794}SseU(^AP)o~F@ER2fIo9#zR zZ5nZ7U_C>amxa|#nT3P|D=C`NA{H)lTbx&AwN2lKP}g21+Ao)SS$)gTZj7sS!R`;j z^VL&!TELwfNtQ`AUyy4b(KexxxX#FUN1EQ+delS+JC`yQyi!AV){rKwil;V>Fz+kc z4|6~B<_p28-MIJ|N>H<6~0KkCO?&1@$%)j(Yr{mhcP&(1p;nm^6%Ag_(yl-5Y!ri__Xxlo`Lfzu@-QjHLI$ zFqVSC+^dNlV&5h;8D$)8S6?jO}V4N z;Et~4Qcj;Uts5Y6Z)#+C$K$1YR8|5p8klO#CfNJZ5g1iuJ}kHvb2b~?5Al*g9?BB4 z3G{SU@uq2c^R4FY#5PUcE{ z7<^x*6yxdS@(n`9SV|OuvLJg{4%hXiy1AK+5an}#I@CoZ@xNcP3flLusxMN6D_UFl z_R*be(HjL+zn`DBfT>)uzj5bNj*fft%{KI6SE#yYx$!L4;8$b^KhiP4-e~w*F#uEV z-=GEtLKMZYO3VSp>^7Bsiu)X|P$9jAoKd98q$XCE_LLYnt2Di+E+js2sLB;ju*G0( zT>+V2hOE$|*bPCvvs{0kq(RlIHc%$|Sm{Q`k!(W(*>6N(uDo}AHYZWEM0Og{TwBSK ze_Ua)ms-^d53X&ge6wE~T%G}(zWv!qsCnC~1A)xH&*wvY|1+B;FI1CnS!g?Yi-3|> zfOx58)5#9{Y}yrMAd5&L$mn&xj$j%8 zahI%L0ry;-oQbOW(!m{tgPsX_xfEZ{{Mr95}0syuyWvS_>JQe`2^+>)~ zh#(GIL3Il`@Qhx5Xik44%rK$CXDIv45vdK@{Kz-*U@ZCHkKZZRa>ppkf)bF_oiXHy zMpBc^$KwTc+3g)3Vz;Dx1mve>jPeloxQ7}mfZmru|1n&?*RobsfxK>h=To`PbpZYN zNOPQEN(62K>iIuDPh5S{C?xT&`WysapT{=r+ZPA0mncf}ol2!Cim3(zH1XPVf+%<6nq!9Ti-;+p}=`j;7_$i@u?*vjYz=T&_~JZ@W4#E`A=y1LTe`7@cF7QKk3%EX-drLX8%!DLE6BjW z8xsAo6sy7GDX{LfZT7X0N5hUSv1_)llmqY0vd0FW5_Uf+@b|5ra3!~zzL>EJ^3PTh zeGmBA+XhbaO?>wAXOd`Ne)Y<0sRs+~O~9&U8<>|m*`YI~G?|tcG0qi@UU;bv6J(Y@ z>72EMappeQ#<(^xtk*_-40x%Qd7ooI1^dx%e8**;R;76$ClUC(&sNX_s-lY^<^ME3 zJl0Q(YA~6YVs%5xBiEg^-9q|W-ru2#u@v+)Jfb#a8Hl&_2|JkRMF>SYjx$k(rnv7^ zI9}%0O;p3Tt1lQ0YQS7tzug@R;Zi0NH1qww8^-YrYx{D(+o2fKJ&xC`?>2@T3-cEqy8qAO&*r- z$y#5xJ?*MRWgm1?Fl*7Zjhcka)YjZ?0xkNthtnB(@!{hpCj<)Q>n?_v-*ZpeW^X=N z#)lxR^pt~qHAo`2fcD3+a@F-rWx?)9b3{&uvGjCC=%%Bu^Yi90e<%f6w<%lN;umY% zKy_K0l4@64K zC44|{b3g8X3WkSyW!{=Oyj8$V!CjR2+uGN$jm&t%L=D4tRX#n&Q!~-L@@mxgg0pX4b2w zJ905KlkrlZ*@dlf$+WACFQI|Np-o(WkZ=SJ89ESWevKL=#8Sy{r2sKWIvsgpj@vn| zWVq^qKi3q(x4tynsx)ZQ9wdS>);_jt@G;ZDw|u3?D~qs?aJ)7t-GOmB?}=ctBY(&# zhO0>*O3m&Hy!`KWn+^7Uep&`IR-*I@X?JE6H+@U`uIsIchfIt{wEN%yz7J9q)AtEt zjG}&!%xHBcW0gn00c-EfG}!ap#2mM*sRO6#1KFBJh|^WU z+Q{tr4a;#i?L?-mLv?HRE7+q9unc$U3`;W*m9fkkH>B+_-dEO)+?bP|cvM*ORniaj zUrK*$oy=|-UK%P0HTBq2S!tVJ!qcf8tWKaEFK%)$a8%%b&6Hl|0nK3`6U7aP5?bbvhyuDA6q} zw>}`RRZZRa!}%YeD`j<1bBcl4eUioeJsV*ll~%NSjuuxk`QG3cV+{CnOuJ!ho<@6( zU~3tcbS-z*DVJ!t4UWrvzg}&^6_d|4Z}L~J=vBe^QodxVQTi8X>Z{BD>EuPg6Y3*H!Q3j%6vM3RK5v{rLaf>1rp4srK zI^9L_2B)g;yO;b7&kh(?8(Ds<(0z-qdyHVdlIJYC4B{{z0r-P)!!j(-8R&wbJEpC% z${o7pc2^w5XHj0s5_`EeJG8&Xg&u>?-Gt8H3U8jw;z1!+^@|?osjOQzQfMKKGKb*A z4qQRJ$>ZphkJSnX-2hVRk2R*uymz7>9bm8+2^4xKePGW3)N5VH3$ttOWu04BG>S*3 zt`lP-GW@wlRKcm`z;21WbX;*xXa`^4FiuC1B8lJyjH^R#V(4-~RMpuWjrYuv9;J~Q z{mfl1^1$R8+`dt*&20=-Z>!D>r$w$}wwE;-1y2;P9CW;JQU|>awDIs~4k)d>^LCyT z;Ws%jH&0)etL3!V`|$;Si|v5Hy#h@kAt&kNIt6@udNLnz3T@Xr$*bDx$MxSdHj1f$ zjmqZ+9)}y;LqFGYh1L7J8g z^>N0x>Nib%s}xfKYIk zX%@kNk;0}(ezIcQ%Ua4xRT-pqlEIfX7ckll8A_N>2hb~kX+eIGLVpa8M+EK^o=nYt z+exYcKE8;P12ZW1hRI{zP?M? zZ(T>?0cldLni)^$sG0fGumWgwtxhZa^PmlFa)7?-doue3x ziuCtC#ZrS%VdjzKCt9U!+BJCvWC&@3Bji_?)Cs1Ao>ic36Pd zovu|`?OOiMCl^aRym6cd)%th~1w?}8lFBLR#QStbbX0bLFqig%M$5Zew{Wu2>_l+h zjOCeMEGZ&H-}c&l)SyT7&yRq(4D@i~H2)n+-rOFPMyo4>VC;70U(?;BTYPg6tr`j{ z*AandUFZu6e$)nF;N+VFbKKT={oeqkF}V5JxkmnZcYOg1Zfl3=A95g=+XDqfvp}$p1 zbqs2ilQR<}=`3cRRCyZ0xjeQf;)1kJR~T@QS6etdwY?4FIUDN+_U+|U48`1vLZ#12 z8E=*>$jp_H^jfgAY#2pVtrpO?`~gF2be%vE@uDG@n04a7paT9)U{0SkY>`ltXPNLx z^dw1BNTfV8KwU8etTLX_YWPB{(QkXeh-5^9)(>$T{gah$4rompJckB5KjcW4>k=0s z0Qp`tgYTqk0bD-QX;X4TTqogYfM$`XdWx$Fwr_#bF`@^(TXdqXVgzc{o-W)2<>09k>U|#9#RwX% zl%0rS?t}S_+qvN-&^nb@K#T^Pc$|@kLZ)7a%B)*_8o+Jh+?Y@_o1JOUk&cp)!hCud z6+-?(QlZ+%t0eI8UFCd=5RMjMk3ZwnermFB|hYV-F5dLvd zLrYx7cqAbP`gkm>FL->67&fgN;)|r7N~>91L5eq+Ds7f$6)YH(&CUO-n=pt^=Ba!0 zp&*Mr4jeBeVBfoROYdCgS5H+8eEjuE>1JhTOegoR1s+W72kKG06Nnd=>TWIpoF8R3dzHqzF2W0t$^o zv!Oq4j3{-eH1Gd|T^KyDmg0vKb9_6*zL`Qt6-d)(x&6v|4)I~RyIGH!Xw1ep$Rs7r;Wd=Q z!8Nqj)wZ}-SQTP>;V0{cPk)ESX}q5MC-=;iQc`k&5%`MDazGCWsBEz5!}Z@nYOjLI zjtKqq(*1NFKx6v%XW+NzZYk#)X^~+%*Gql|8IpyXZ9XUl}m`~Y4jOY z7-!tT#y$y}w^I@Tyf-}AE$stB#v9KNDyGv(B{n7fNe_gZP-VO4LrP0sXrE0Dhx~}d z+KRFY4UGe879V?YgHs`I1D<0iR+pPiwT);r6~giV_3I&l5uvv0o(|;7Lk@8YF;QL< zd8ppOce4NdH3>76Z%*KptpcFnU*=Enl?%m8)>nNx3$rG@M_OJAlITrO>flcjxs*nz z+uYAt62QSPQ6Z3U9}r|lG(_WrcaOcL*3Q`txtTV)-JSm>=OJ^ab5xUbfj|Or&<`0UUbQS#h%4MtzmNH|Lqd^fLP@xe0CTtQm9J&4Dt&+kG>8d56vau9d zydD6=E9q?nR6j6+WqVvoj-#6uyaHa5L2%|{CxKHY1H>g4S|OU|dB>HmcY2>^46rje z7uWhYePfzZ=~oGGIhw50p@iWpxQ`WM*blQxPG>#)(NGc8zF0 zV;tdpBC=VIr3&7ni|F-}t;9pr2VeJ6>40?rF+k40Ast|r21>C1*n~%fGrD0U!;}5Js8fi^~!x9uhwoE!1v3t z?f83)E|Z~~hwbLCvjN+bt7x-d-3k26c#JomhedXLc2XMHqW`Ytyc=Az}99Q~BGx9umxKtmWa+Ihx1$ON(u)JZul-BJEWPU9}j z&VoZHMtYj(#EuduoreqN;A`C8mh?d4o^jAj2N`lw02gdqAkA#NouvKjRC}q(5!wp_ zR|2xGP5bER^6(OeSv-rKV|Uer|&)0x7hXQbAiZ8N}Jrd?GZ*GvmOKMRxg#O3&Pz@EXvY8e}6i5GW zG2gKexS)?hhf2HkiN0j(u5<6-;&zH|BJ-P=?4~beR$-pR#L9JPnVaVOA*iu3bK};+ za%=%VWy*=eFmh#EIs6hVXoY_ZQoWPYqKWUFcf-1xwR}N^ zFXj_OX%0lPj+lCoe%-(HkUtj>LVxv&iA3PT^h4QwD?(~17;06>7~~lxO@NJ=zV$T8 zNbTv%GbTpeE9p{p;i8bqB@-S($w9z@&->|#nkZ3a43Kp%>82m%$?gq&V4rIe^8PiW zc9HhM80D{L02CC`6j@&_PO6gD%bum>OCRvwrG(@S3osN&eaUr3fg48C9(Fz_vz(Zx zG67AApbndeLoECIc>QM;&p~C~tfT8Oy2YKex@#FPNpSD<9S7fNj1O9fuq%yKfk`pM z)nB`q(Gkab`$zfH+*>PrZp`_-2p6WT99ER5DPVs)37lrxem0(Aw#Smj$uwOFt&V0| zLZMLk9gIR5Rg}iKB0_@5Ur@iVCd zzuH6UWNwxgXB2grVFC18zV$rDlL-^sTe8^g+lFZYjJW&pPyYVR-n6t^caFyT<-<_h z17~<3NC@mZ9Xm>T06A|o)bzo-Iy?akf1lhpV;TEKbdX6kf{cPxPLNFOGwINchLmpC zTt*y7Mhg-gZW$I0sAy-xOY0rj)D`KW@IO z;as4bsZc(EDW0oz$`{O6a^R5?87C{ORQSAlL=*?2AiWyUX>Bfc!K%K8o;GXxI0QAwjC zLFA+CW#5*gGPC=o2iayH_2%6|sUsmR_?`7hFmFJ4q4Bo}j-B!`^=~P|&7}Dg92Bu< z_e=RVHeCrC?AZc>_ddXd=qooKdkzvu*0c$)3ELRb;Z}Jd!XTKhrRWtu`RgSK2ubwS zCrS<`T&MRDvmb5gEH5m1b_;!=6HUaxG|B#DOV6r!ByeVfN_p*L^Lu>s_q0eA-vj-?&B9WPnmIGm3#zZUW6}F$p>({%tjt)Z>HLIc_x@)O`A@Yx~sXTRM znRQT>Z@Co4L1XSSgP45PyvJ>&ghPWxz{8J4Bfj!PJR>>O zr!Kd-@=P6oT%P8K_X~La5!blf!}?1zaSR`EH4YZp?j*8m4ylk|@XjDQ@3B>V`_^SC z%ux;zxR1{($Hb1HTNb+6nVh&?i^1K$-a=Xv4?5yIz!CZzKl-;OhnoV+rU zIgA-=@)9M1rJ@Y7Efg%a>foh;#2k$4qk%D`biYw1moz!)iwKKy`eS!d!5|V{5!TQQ z)$hfcyr)0qy?S~ZtA6V}# zwz}XxInJknJkywez?&)QL)GqRD8>Bu-BIUz;82_U6PEK4O>g-0nNj^6E?*4)P$Bz# z99wR?npdT7kZq~$dYLsH?1XMPK%ITq!wG6e>f$VLRLFyD6K50!5(wn^6j-AWTMN+Q zGzWk0h~%H-+Rf)WAM_qX)7m9R7JNEqBU+}HxuxZcJF-SQYVua9*hNGHaMk7$nG{zx zCk?SS>f{sz_vj~GR*CMrY#<#H91;tIz*NKc{tq^Yc|hCwPOj&nRFuHJ;h!aoSQq3KO%d8+*+yJ`=Ut8X#IuNEop8q$*$IN5Dk+Yw zBv8fBk%snZO7NiB)PRy`0uni1bUOUJVc zipJIma{O?Lg~14vEsj5@cmoa>r>B9 zRTmo6v|?ZWC{_iL$<``acB$B9aP7~#EmzdlIX-EoJoh1L7> zFog(0pZ%O}ECn<8NvFyjpe2ZbXoZ(9^z=CPf^A%YAoM4t7r2n>C`PIJy-EiS$oJuhdtd`I${ z7NkSCKal~(%5U0#rV;scjevx?46=skp4QGB7evCO9+Tq3gcjdFph_p#S){j(?pOuy zqql|O8K!(+*t&^1WbxS23A!({{Srr$p9a{qZ%<7yvqWxr>&p~<(YTiF(Kj!)a^PI?CPD{Y+nvV#a`(o z@i;mJ?=Ep5C2}y|GRcWi5*QL!eub!J+~M$e7nlJMl1+j-DCuJ86WSr&6LVjuny93> zp~8@maMD7fP^1(QrY@xREggwBCSKE#GP@F3&Hc!wS2vlH%riV=i&o^TxNxY~0Fa6My(>`v04!}5K;Q4}mo zrX#+?T-jAq78W#QZ1i}ju|EXq-NkFeSphSm(3;rL+e9oFP-PSuSXso-P~zy_U>Gkx z*h;Fg?K&^Ffbety;0G(I$s0kz`&D(KwnLDuzddomYfuy|>X<G*G^wA|PY=N=TLp2s{JD@D%@Fnp(XIdV`l(= z_hIG91uO6{MxPqzX2BquAE1)f?e74@47{Vq zS-x_5ULAgJ4lxKDAfT%q5|@5orDBK$xQYhNzi7A4)Ub8fyT?A$h#a&nGdg^Jk_TBygGLv{Or{H-P^BTlue=Z0E5Wv9Bp96$ zfO<#72q_Vm#E%FH3?LXZ1V4)MM6T@3hkjfy7u8l>>o8^b=}i1>|IDe?FqG9ao8-<1L z={X%6cD=(K5t^(MeHY^g;#qg8zSR^1MF|8(Iy`<|Mps!scFk7omAAn$THKx4V1Y_1 zzwZ(^uDK|CQ{UZ;9w;Pwx8bZ zd~SYroWu+r?ckNU)CuB0!%*fIrODOeg(Q}Bzk2rh{0np+f zQG>oihUJu4ELl6eMI0RDILb}e=V%{ATCWP&r8*KRWH1YDtu;KoS_qX-W*ajJ1t%Wt z3qsFRMMix#hcSFw;rjRkyYI<&2cN?{Vy5`uP%9q)J?@j;y7Gueex0BI) zZQgBhkM%wZNJIm{+isLo*^WKd-w%yP!bu?Ag^W_H`L)kJ}+C-A(sr$8&62F)kQg^U1xBuhng^lip;3^$Ti|9LQ3= zNE`;ykVG;2xG5+j;Jjs&yvEylA=M387|8Hp&oN&PuNqkhZvt7~4%xN#l~*9#Wo~SD z5biy1KD9@6qR_pH!8lv-jVoHw0EfW#GnZ%LE3r3vVE1Ay?RR)B!2#E!F??klcN&&D zVXX#>X;~0HH-)Vr5+J+Qi>DVjbwX3*3NPiJLcNbfp*(!~UIE_nYA}~E!d$0Cg194b zuuD3KWuS-3BPD*6ql)r;`*jmpg^i1Ul-N94Z_r2uqL}tV7X0(VzaX(V^rA_(1y@H; zE8(O&-KRC_v5i6)+>F~T>bPB~bTD2*e79El?`Sd#b+wSyNQq3M#S6%%V0Y$N$?5ND<*3WbqBUwvRCMwk<2X$*U)Jk zB~|jaoMO2A{Rb;1W0I+3H(yq|&Tl16=Re2A7n{PmKm*Z6OpHp{9LV)d-b&FYLs=rDZ)IUB{jMK z4}ko3sT0D2#Cq2>zVO8yNFH8?6{)Nfzx#X1RWGw*v1i^uC?4{>m^es0)CqsF4xeZp zbc}38oEF6#H`3M6mC3Jytf+gp-^EkYld{WBYZOkyfqg3Dc#)fm%P9MNi5Z&b)~>F0 zEnRNw>r)%dmHJ*u#j^g;^C2S$8cN>62c$vGWj~Iz;Re7#kj1`+6`6P-(YW>=W$e>~ zf++g|RU`aGeMpms0uDew5i8gx*>M&HI5xApH)S`4kP~n-rv0 zoNUej<5t)7K_#HAuRkOi`Uzf0ROiK~Ms&AbrxgOPd_a&JMrhJRGoZK(jw5W~+P&H` zk&-=rpk}o(8DlL%z=q$HMv1mt_^^bj?~n9>;x*L*PF!v>Fhr9$AQ-=vojm%t`gag2YsH#DOCG5V39$aCbKX?3%E0 z`Xj)T-+i2q9dYp&sL zCczwjq&N^^$%Ah-y3pis90z_o=L1uL^Zv%-twp)BKoW69owO>Vz+?|$*2^__N3#6- zS7%(h*2>_&9rB>P?Yw>tJq^p|M-h{ll?m@+e@Umj?8qSDPTS@919K{O-iXSLWZN*u zf>UmumQ4v#1Du9w$9q^$6O-;9H1KU3|9pu=1U}@765lQ}01;_CpxdFk7?J#g&SAt1 z+8yIN=?<J(p`V6YVPi9<1Q1mIzI^7ip4~ra#|aW=E^N!NPNy_ST=0dZCc`+H z-L^2th|p~^J!L2?@mEUxVR11eujt5<$Eo%5bt@#uL4kU`SN9uOC|;$jidtY(gOeoI z4tLBQt9Be@hlMUBm<|E(QNOeiN>C47F7ypb@O@O5sctNbGoOhKP^OHp@&fb75VL!1 z(ukR;&m}tb;F7?x_#@_AG+d_Cuk*s**C=u(Msw^dK_=Z0(i`E;bP0|zJZ)`J>)M0+xjiMgwkY_ni9$wNk# zO3mdr^w&FrOS^3bHyj1q2B;J6mZ5c%3pdz&Ftf=|N&lLB->2AkfnBP|qQm@TQ{TYv z?kB#e1~V}~63vO=KFCcI*eXKm+tZI08`~VaAqvn#eg{78@)5?WYb`Kd18U|!87t0d zxivIH?+KWB0|KsEDz}K|^6$a`cBxag)&-sGKsjx9oAdIS62w!^_sjmhWORrDN2%I@ zV%PZ%U)7>4_Zb55(D2{a6T>Z%b|_hj%1o5VSDXxG;vF+~^Yrr}GrLTyU*G4wgTHtp zY-HtUzCB!o$_}sHA|TR~3anOZ!=2#{*uCnyf^69^ITsPxs>4Qs4Tn^j;9fF~9YtGpHb%GXkg{aPF$ztTSSxd;TzMX04mM{g z&mvM(oyQW)_2}}ypGx&Zr0yMB7x#9C=wNYgtAGwlFWm!ol?rAyCdtg1zFSn`d{ZI@5^ zc1a{$>DB_|5VBezKhfjz_X+4FBg864dV>W6bgzd3vvG>y7ypK3Ab|)j@DdPr=Q7#$ zu(SM&-DveN0FzKcNFxUKl-Xcm+HhTXL)O{>C?vY(!g7AIX5K})WhkV=)=o2R;v*9) zSYlmCw)$__TQz{*| z0Qr^`hR9)7c}!M^iS$3) zN|H+~{3|3XC9i0YF>d(mDq;EDKPLF{Q!2H4(Z!1(@AE(oF*(7ujSP^v3r0NX+O`W; zwgGG2vwd1&v=z`N4U!de;EN0G!gal-_GYN2B5tHA^D#(YHj{I99OiR617cbCb46mV z#>2O5Oct#pyaqOj6HhJz-sit*na^I2d+ofNyrr6}%1KmE&@zzXtFwZQ8-TxmYUPL?wX`Nq+hh)mNE@r4-` z*|JLElu2)U5|Zk5Q{DRZr9?9aRzCogDm;BGT`?4aiMHkn#X)n?E|JQ z@&A84|A~n5u!K^moiGNEDbPm5?9up6 zuujAmTU7xhQre%aCqc`8c39yod?cYvTX9oEKL;31A7bw<#%&X7LO`SoF7~{39G60( z$(+Zpr0AtodQdrZ+n4$*A0-5$KpqSCvv~6YnqL>n;ylXddjYG2eiJi7hM^D7LKoty zL*@wQB&ukF;cXP5p{9%bkbdC=QE`Htk1DuIyxsA95q$=oo^__V|EwM5cCraa2@Pa; zOUcGtEq42GNvgSi1^}DB<~hG-CPw(U1Tz?&F_4M_o~hJ~>!uQ`PaeLb@nW;;XTAE{^B96vUX) zoTD^r_~}OROMM04VaD(*uD&X|9mEVsJ-j{C8Pm1_4Rf;2X9eZmcQSsqODo^TVGE9% zg#=3%LJJbjUi>qlqoj^)u+wbd?&cdu!`B1@VFm6sLLkV4LW%0McSKOenE2zHk;>dpo#mzIL3yjUxsz7}K!;fb;e4+aE zS%;>)f8`fwvER|z^Plr!Bgdbf7^8t(2{pW}e`go>a#pAC9PHL}Tfa@D)`o5A(xtvAin0L1% zOgBpybfHtmN`dr?{-kOB@Jc7=zj(#~oJ##H)dHNvwwOpTY@r%8o4$ym8N3{4z3jPt zpBcE#MxLqE>l+UZMkrjeIz59GOORKJCn~_fQGCrM#Z>-jMnH_xMDYMSxkmTC z0o{|e=g46!Z%j526pVLM428Q|zJXkiQM?H7-Rf|e6@R4D<{vAVxduCoLr(epM?se8 zMN^&HeM+3-B>hBXIPnbG_y!D=UL@f-$Alixn*8l$T}jb%oEC&_1JK4Z!TrzCY)F_dF$(M1L!@T2uKpEUyR=tb`X5b`GDbx8 zz?bRL$XN`HqIdB|Rcd9Z%#`$q;h9bysUNI%K2V@hxBc>MJQ}G&L{hhGow&7Qme5KM?F*9J)ay7Zp|J)gaxy+a%bm;K3@;x52C~BXB|l#!gag;(?og z&oM-Nf1TmEpK)970m0*{-8*^@epsG`Zo8um{TuM577NZ5JkzI8-T5L+u@CrmiLymX zi0|1IYoP|b!ja6wx;9ouwR8Yl1?tp5ehP$ij_hG?QYl{nWs4g`f+-@i)5gxVl=y+( z(V};SU}E6`&9_-nmg~lVuLCieXqbxV=%{!N;TbWYsU@uO`@@*Rkwuh(ATBF*Eq%ny zk-n1P!v$zLkraXpBBH#SOAOBAq*mol%?`IuQ5w$l;ywzsk?q+gRl^%!8OQQpA)Q+4 zdn_;+er{Z(uMx$Va*!;TX3H%(ax4yQ3UJo0%6uX*d%EWa9r`~oGS(s;!z?aJ+fBvK zz&i;V?QgEER#XN4zxr-C6F0I%hT1U>bf|Entbc^y8AdgW*kqZ0YVET<0kCjHsGuQQ zTDdWev5u3013LzLPnomuXz^GDF4H$ZgBPMUj8@>@vMoZpCm%%X67TDAJ_)en-vs5!j7o6-mkRI?y>e440 zc-3qhL(!f^S0~v+u%=;X00oDGjb^sJ_ToCI5+BaAm zxM&~Z&`R&m2(H3@g^C|=3|bt`<|ZA*Y$GrDo`UY}QRsg+kawiG?X{kTPjqC$Xm(fN z<7ohlY9O6c_CETSmZ%u;`tvfuXd4$?IUCn->))y2>jy6}Xc5##NNL``7RDQXP3AQ;NfBkkj!;nZ{W zx958191!cq4Vl!Z-#@Qt>#9uusK*&wRynrmYXd>FP_ptz8&R=QP~z}(Pu7Y6*B`I@ z&v=$n5}^ymtynKcXV%K5--yDvT{4ok69hnYN_JmQTp62Fh+yr}6z=rST@pjr~=K(WQh zm6PEx)!EmW9ZJPh(aT_Auk2=^zi`&!76`Q&IVokiE0*5ok}8GGAdJFS-|Zy^;=CPC z@_$Ax{@*)RnpD~tsHQ1U441E*H0n7*oKAD>N;5P!c(Wq0Uk2eHc@?wY>Tg^3vgdB> zs_pC^9S4t1v|*<*^SsWoM_XW538^{+L64(Oo@BKbrbT*7aTbcvd@n#<=we9RI|h7G z&odbzp=%{oaDoQI74h=w}i|Ev;QGKQ}i){&5rMj;4%+QLtI!ejlhqFiD&*G2UW@i-L4X=mXv<(uT zu;obZ>;YDuLR2haaKnRJv?$As3Je!DWh7S}@f~c1oM*vs?w68~$o%+Xd*QfdLvnd< zIhNnCO*BmacDV>xV)RlOy%=Mv79a=vTCFY{ZvIXt(^x?eHh$40|bz+7OK^RGuFdfIZz4)nhV@^76eQ$Ik= zGlI!Uerq7^tzOp+SsNTB7pcj^zy`1hp*4AB z!#|_Q{Qb)T!gw?Hg3TP!@JX+^QbtBgeHZ0Qm2Pg3NqDo|$j!7H+m9jcUSr^eGMcGl zN0jG3noCWD7LbX_E%N!Z_XK*3r9(leraAAH@N*4)moykRYAB?f7+plrw?3(a-Jv>Z ziY|MFuhNUsL!ArecZZ?pal}9k4IQbBw`)gKPJh5sJyVCJ3S{oI-`;=F*;C6r-~yI( z4}9Fl801!d48q?zq2Y)9>s&{_kySdNM_%9fnVTnKvs>tD7#s{*xhTAykev9au&~P{6F_12c+XVQ6RsdJyy|&o_x7I8$rFPuC)Xye9A;=Z1@I-y75@IwdQD0#nq z-M_9;+!WcP2&;XlQSf;X8a1Cnad?-q!uNwx&((< zvEA(EW^~5{O?mEzU->gc;cARwx7e~QJg?-3zI*q(n1A6 zmmW63WnqjSy|5i~fNCY$!Smp5T43(0_)2H){m+>0L2cSYW`geer`y5YyO{_lORASE z0;Cd)ZG#88fVHGsGi+odYwFTWaYmAbU$d<-Vd@n8D_^gI25h-<8lFdOM^uNidZ;P+ z(!<^DIdCHUl2Xrhe%Yc3 zj>wcACd!L;6X?WbS%-gbPZW-aDFOVLU|a4NvJtnzS9t4E^fYG32QNI`ZsSD!K}Ptg zRiR8X^>{Tzq{H@bZjjVXDu`PV<-nU$9hH!U4=5{(a_?iW%mn^bp19#SkxiSDqtSoT zc;W_lgT`MW7(nocxE?QWJ`wRjEQgS=!r$b`_03mP-=d>D1w{}*)uEp%H+lz_&D<|d z=A`P?DF5R^#>5TB1Wq*kUEzzxjF}$-Lc55?p7=f zbxC&GcPOlc5a0SV>ZMPF8z_|23ApamE3x-Ys@@i1D8Dma`K08{~)0}$;RKm>Sy!pER7NxCJb67hz< zl7bJFbVBl~0oxycmoS6^{IJ$+WH_d_0?h+$w~$Rj6jb=cPOG*>XDUtqndjNEr_L8F3U@v0`jB76gZ`+ zh@efJ(<66Se^i5pESqAmlLGfo(wn*ohwAP&UBPvr%*08w`yHjLep;l3$6~rIk z3S`T3-4`xGWAD;{#lX_1cwd5&Q3+XkNu5P6Mfv2~D9xO|ctaqkx%8G8~-H)G% zbr&B5sIyl!Pqx?(J8s;8eg?s}&%^v69B<5MxLbYUy}w~_C2jUA-j7#0cZNR zLL@u$v+zJ3_#xu>uIKvZh=*$b#e07{u|-ZhKS4Y2*ZsN?o{z%at-3_bu=l11G!IJ5j|K4wANdwPQ`!}JVj(I%P<{!_TqPFmxcSyDFL+wPO!j?7D5Mll zOhg-i8+*UkuUkO{f%>}D^;d}a-Gy8_ezAiu67nru3_}YfeEb9?^J~WbbeA#e`s&x` z+TBVpf4pduoyOtCcbgxHjT*BLLQLz|Rk`%0KI#L&Q~E-0{Px`~g9tUD*$b1ex*TA+ zl%DF?nA$-i(RSJ=7L_LKj$}PAbr0v%hVSKG<0MTjF4DlWM~z=2jsvBBO!>w6!5V#p zf2{|bK@>H%%PbWKRuHbeoHKujB0|ERK94TpkpWs^^mPbZQC+3~=1#kmXrBD$1VQp( zPPXTxvp%oU=9FBIs2-LLjra}Z55U`&^nIc9pCy}RUo>Uv#2(C^%MMG75p#Irr1JjO zu-XR=u_dOYf~Ec7cCo4q6A#o%uYQn(kb^NYT=IW9RY5XCmt{4hWOvY6A!jrFL5{Tf}5 z+MOq0Veke!DT1O?HkruV+AJ#^PggFN<%Img7p}pfnZcv^Hi_@i0)7g5QD89YP^FIF z*Fa4D44SVq@@nj5*xN(xol91?hg)Q=o6nL*CN_yZu%_LzVdCHejx$@1yO|OlCCf2f>(U48L@(*|BFS zUWR|Jmar@g?`TjSi;`gC08?$}P#yZ8_Tg(c>jJ4OccyP|f;#sB&TxTHC1miCQS_3Q z5K06e0V4#2$6=5QnTac_LNXA4AH<#iw2;teQ6);DPZ~H`2lYal1d7m~58|i=gSjs+ zgn=h$MnE2!FQanJz2)61>8dLZQi5TG7XW>B&etSjZnNbK!+hSg4U=@7?aH-Mo zPuruGXy|d3bwPUKvP^oYHs=6kBfze6S#))jF@Er4KOR^iCvPjE0q{z5LI;lvkU6LS z#1wP{o%d3%&1LmqJ~i06`4e3D3wi2&J>@`%wP^&>d7CyibB#AF!OMTCT7yMu>LSi-=GC~`>gGewk_xJqz;SNwH`Q105KS7 zoFAi)j8!#Ty#*d`xvbP^%n?8b(|3eyi`5ZL^LX;8f=XEb-i5jXy!That7D##k^mXW zoH1G}mzqr|NdNg7Ovs~5NXFT(lKqnI-il_V%2PL@up{fdkw)yi-EYY>Dy_|J0eDJh*;$Odoh-|M(E;~H+e&9BN9%$P{0g&eOZe0u zJ3I#6{Hzr&`v=-o3X#?{+)M$j zO}tRL`AfLBbF<<$>rawt3^1+U)t4_^P_gKxgKB;)Th zhi7Lb%{a9?Yv9d)C!QoeM9>LDe~5ivm!kUwNFbtHd zLCJRq#XcU~5e&6iD~QDwv}(9+jqzEG)~Pm109JpONAsUxKi=}Gtm`crw6`ejo)Sr~ zRF&w8IJvq}^3|yik`<$YSv1FjYv{hFWn*rT$lvm02K7C&5zTL+WEIts5U8bI2Cm|Y zsqwUd#MZ>nabKui@9T~S5XnzB5!IQ=GThACsqRGu``-gv0T(*1O~*OmI-q>5#!}4P zKxm&;A+SkSc!?nDvb8iUtxd(d7`e4qJ31D$j_!2`ykR zbuF)?`1Aa2WRShN*|Q`y8@ixESeq|uaR>pL!`%$i*`&~rA)-a>c_;UVsK)jsm9QI} zU*9bDh>b8hxYW$i6^I?|B_0$CLwlfTg>CkAutew`1mUtBhjT(hUA^?I$wFG$a1In0 z>Z7y+H+=mgVT{G#PR5#)eTk$^syuD?yYDhFT2df8)?7lNPM(mRQKW7x?Ef<8+7>-f zv^)!DdLky-ax$(_@rk)qR32tR@LD0gRWzE|!H6*vJW+HC`HqH03t=?jaWp|243-_c zyI0~_K{a_DTf|VzKbdL%1#;OLhxUbbRl?#ntyaLNe~JMD4$O84Fj6p zU*31RMKDP2E*i?AF@-YUa!j8Ny?wM3J*(}evBAi6#&HT=pg>r~qVAFS-80r{RSmz? zkTDCDVoMZ@O}3P8nV;CGP@k0FscsOT1TI-qsNstwmGLC=6!>8IDmxnT>Qu846P;-8 zW!7K)m5xV?TRVE#3<*PHC+nuFVuGpAS*jEJe;2AxK6KswQ?Zm$X#38V5!(kL; z0sEZ$T{SGV=`YI6`U-<~tpP=vpKEH5#j8ep(4gFv03uvM6f%pR$}zojk=>pT>r~ONjI}?nQYIfwD2RSO>>3AvTE*jpt*j@LRkJm zx`xsfUe#wN2O{@CA7f#^jrXgtqR?X)c|iq@+Z(1FFJx7vakW8Oe7^1N#NjaN;8{L2Cy5M`f{*uac^mGPFnyM0Q8hGoAqc?6gYhG!}pvj zk9?j#8D5%AzGH!Z5qwzXFjl%nz-*$l*6}q|f43TgyEs3h(W@6|ru>Q&lEmHwsqzpr zgH+YDBqo>wd%^+o2@OY29C@dE=Fc0SiUKCdBN2EO#zt^IR6HmN+oLCa67rt2Z;~vu zyaBV}D_1ai6GqKpV%zH%fq@+G)wtm4WYo0T#LxT1%^t2|Jq4f&_OEIi2yHr!MYNw1 z=r-!KmnIgrg1r9WTPkoUvlMIUj3oiU zz;h4f4p@l5ZSI{Ps6#4C^P^N)-t||}4-*hva$EYV(VQ8Qb@n_B=*z~NKf+6hj)^Yto&mXuUUMhf%JItqUK3nYQe$G2c zOegy1{AD4JF0Dp!2m-*yuZMaLP8!-nUaHs_1)?P z)_OI6;rYy7DIH6l^!mc#u{l63a4>Lok{35jv0U56pGD^JDt?X?xeD9-5{0cC-thF3 zhYi3=bcdRUUqrCTgF*s8W+mtyGTn0ZIFVfxV-r#PA*~}rg0cO#IdUj%G%kn~t}|5q zBU|i1J*LHyO&x&jl3}3?hga$+7@7fjV&-cC8tUJ>n)D*h+^#xXzdI|5^cziUB2s?B zg8H+Ez6>EO*#&4+HN+&l75k;lm*)*M<>owr(I1&hu18VpKr0-%V4yuqJ0u6!q==9K z3k%TkdbF~Q`y*aTPvwdlXdNZC6p0^Fyay0e|d2%;xYo z?J(V&kjG_I&-e{lXnrl{*p}cGNWV{xpQ(|a-m5cCBn3h>a1=sJ@-JhC%W^jf7;i=~?XYcvqYW}J+7N)~U z`5$R_7xlxk^9L`3n{-8Nfm)J>%L%Y2C|efaErU!gGLGm&9=yh2*aB!z7Sa6ISoh`s zM!}5!$cK(C0RnuVmA?)Bwn5+)@n4|*iIMTe2P>sb^{fGA;KTHp3;6$RKwN{^437uI zDf&^~eTAM-ALnH|AW==?({yA;5vJP_zL=Hwnp?fPcctQf2IX+2oZHaT3(v-u>XAOC z&7+Cf?r+_w6htXigaOYuaRQ#yf8QU$+Oto3O$dL3t65ZvLMo1vz8)ix2wDBc4!F3y$1(4#x$~~`_Xjb6tPTri9 z(G}UV<_xa=4F4!+VrCE;UL3}ZwwBInY$X=dw)RE&lT46IYF14mco%<-nno%e+U@nc zrYxYWl6u|we}FNQ81EHknQGxa`OHFio48=r)5O>_V@QsHVqMxf-LM&1T=jY|4sU3%uLe&9 zJW%__wU>nwfhLrgf1Vk$ky4^9+0v%=KJ48WZ>*{M{6arnx?5sl>5tV5ub(e_-}C}4eCwG2Q8X!PEs0*Q&$XdHdF*xFh9!zyJ6`H8cFX! zu(EOEc!;XT+TN>UPh=oDfUB1aLb%>@ANKZ+l$vv5b7T?X&AuZl zqu~bObVlAaRg6>^43rC->A9dj0?lL>A_rtVA#&at{jF-)R8#9SWuP&;1K0*um3@crDx_7ySEZYa8xzLt5vVz5l3 zM=zDk9Y8*7?I%HVe3v*JfBVB^-cUdC$eIrj zE!y($3dMa9L6F_IUtDcGPQv*81NN8oCVF=mAX zpM|OG&@CL5S-r7SR_O}ZZ~VaNv?hfvVJ`#oR|sRBijR=V21Fb39q48B2l)cXL9#f8 zzZmQl;m` zzb-tI`MY$3c$0Ruoi@`8T-V+?gRZ7=U?jXCR; z=dt5$UobVBqZ2gU4qu9?3Y+NrD)ZfV0#nWMWgxEe3@`H>_#`AP5FpijTANwNyu^v( z5?;WWv&Do(GGDMsOuT09<#d_~27X-KEyZnc{wU@N)zSd!>?;DR-b2UPjpE1KAV;U% zL@DsPVLTN;uuR5wlH?ZXtrNkz!8U?DV`DNY^IXX-Mb~B}4-@&Namt0{t?aiSa|x~w zQTrYB=R|d`UIR! zehA_MH~TAOcTGzCqGMf6)uX3g_OTz~MRi_USP3wv7YoB7c>pjD+0)X_a?+1Fu?i1Q z_J(3Ci1ev0)BV2Z6~Y|0ccdaH%C6O@8j_Xd`d;ta3yKO`s6!hjCInwICA3+5cDUL; zY;FYGrJle39n%$*g_(?k>-uzCPCaSh^BjZY?HcuD>0@=1DI{A|>aBdYzFy)5 zB{KWGZ7d?AVswAGXEDOO_AS>q#R@Q~E%FsqGK|wp9nd*L_3yDN6^IL>HLvmAQ+fsr zQqN|>^>7e^Qn8V|Zu{G%ni(sMZ1TgMwXIrRvSAhFI^ENP9^u34TDXX8>Tcj(MN!a) zC%4~dT~mtUPwvBBNp_a^$TIbdc$-)A6h=Ndu{%f}ob~WekZGW()A_?fd_A4ielS(3 zyh{J8NtLK*L?IW?Zy2NUhrxn4gbcP(!R2-Zc0nIXIS>s-s~~E$_d^Bh``-T0*%W_^ z@4S!cki7sY@DhCNm~#HN>cbF*Cp8C@)qPwvJk^@ugTwgW1l->yM1rQvX~)DTnDhQq z(Xg=lFdGfSb9o};nL@}mj`Tkwhy|``O$yn_gY5YbLBa+5rx(go6gJKW!HDdH1JWHoa zI)#-oCZQ`b)xF-|f%*)4wVv@v*rqhEX4F6~v|ucfL0bFd-;3(kes5}dST;W4XSP+P zimth4zPy?Itv!&vz>*cD3*Jmv%JgiCu*Q}i$n`XPsee$Q_oq>U?@W0qAyHt28qMpo znoX@(XYd|c-SfjBo}Ax!9GfP#8R0Jf+kJl?xo2kgs~9c>SU}mqlA_+2t-h5Kg;S+@ zksUHKX-(ox21F6#4YqA7dd*`V*bz=1?_6;scQ$rqxZ=vbCV zrGmh{eY3(`#cRn~*kN;$II8o4@}8M6zTpuLmWn#XfKisX94Ra|+bU(VkJ#qGX!4<@ zTCay0@*#V@Y4xb@ED{Xa@9T^S)>nj~QRCx1hR00t#$311I2v)mXKKBv7?Mbhv3#AC6Oi3H z_Lw5m@UM0xV_RdKU+I^zl?Oai-!c4-SI_7N-W6pBf~X{XBbUN<_{f%mxu0hK;1uVe zu0(;4ARNTVhc7Gt*r$AZ0^lJI;wP4sR{{w#tRIu^f(Uy1OxZ(c8f1x6=pY~TQ;no( zx%zoY_laq!7Gf5>xAq=eGQe^Ar#rD6q0?3Dr|C<)DZ`4nVvt^(oIPra(xOv*V?5^M zWU`=a)2A-TvcCCjPYAWuH|)Fhs>3LZH1OCaIK_N~?{|Sy%8!96*Dkwsyx&&waEpXu zl`3;0w(&c@{_YXUIM8Ln%f%gGwoY6Z_Q(4Kuwet-g#`!MF#A*uKOkl5P$@+i*yUi- zB;g@932_?4&z6=XCi?>TJS19EPvH zlyvr_7K2f6Rj99^#QBBUIRHqT`fo8YTXoehK}zqkh57YRK|rx}(Kz{jh*@Qz+h zhrz-DHZ3e6ZP^uHQ5)kNt>)F80t3Thx2v(DQl zVKEGQDJaTI4$vs*^RV^S(N5q4*}outql z#}OAu-Ug}A*yaCubW?_-2jGBN{*jr8jIU(^H=}#NF;kvzi}8d$4w|d1!dF0XOkMWA z`GJaV{-+SyTtw^bM69IM!x36*V@uWD8QZ#;Dj75SYmt64!fmu?S>yWcXDwARlr2ht zgbN`^S6#pZ5x5+3H*6AN4ca;j(Z9GeZvwnCTGd#pD&QnTI`z7J z{}%`UqnV@d(qVKBdpz*{m}|0S=oiqVYRE@!`LgqX#bpjJbO5$zPn{zN*R0`HX?B){ z+3gg6*-2XMa3<_(*X!I-bkAq}_3>4PIkATCzD)lU5T2hg?mv7ZTO(Bj4A$k83@~K4C+&s|ze~kd*66*Fu8#QHe z$hbM<=W_tj(FPAm5mgb-ao6+DXS`d4!TeSZM@wjKCELi8jqD4$wDiXs3O2zpAF_DB zr5#dcs8^s`x_~yMRDL2UZ0*izsUn;~S3BM_6{|E#fEO?9CFo@E$k7;IoHTGhuf0ws z?UQPI1p7{}sc~iw8|YIsYb7SX7h+eIu^dW=Nv0*jHl8bJ5Cxg?{Y{+E${VM!FcIue z7WEGP=6dvRp4gQoJI~q^%0dNUV@%)r9*LyQnrX`` z|NO6^`%?9uf2{O;mNNL^Za5bZWp`(UWxzk@5bg-@BmOHUQR?nW=v8JS&k|pHAUItsU0wJGC-JU$=CTa#K;}$_qq4sRt8+YqR-{SnnLCz0D zw|H&YE~k_<<H1EBlZrIb6G^>u_a?80 zm?v)J;q=PypgzmfR95X|x^7X+@zQ8q%7?KJRt#=gLuu$mU8IosSD>t}1ZTj0W($_7 zVJ#1e)I5#L!Qu~%TH}+HT*+6%X?1f$sky^KVU(v_BUqf=sH0Ow9ni3fbn=-rCWluc z`QCIdeCsQ^?#?GLXZMJKrr|Gz<$!^8p4Vc4GyS!+CLHaganQ0C#2Z}O&6$1wzr`tHXd@{F9OO+P$GO3k!dVR`aY42~&WKkTcy3T*&!d9^| zL)kg9oUR~He;?1ohp0j1E#?s29BME)ltF0?7o`vHVt?Y`YyNpAp!c2=b$#;MVjS%p zY7T+YRcbd;yI_$v0gJ`lG7~D-*a+O?_c%roXq~5r@(GTEV=*#bLc2QLwp@K&JAZTU zu;#pOF%-f=*KTSO$<6b?A?$`?3ZBtqm&&OtqESr>j>*UTkjUIse7k8Bxlv|usPB8- zvJz)Fs%8(Ff9i6g$L=#=?+F=v2TX&HvwZ!0kL1w~z{(-jJZ<3RgDD0Tl@tND=7HpU zeI~}R6|MUoLdWxZ>m-Td6K1$msOOayYGVt}F_nIk;-FG_k;I9Zr{&R|ri(~1{_S5Y z4uI@E5GI@b1LwzWNl8MN3x)SeH4&2ZnV2e0#F?20@vhCyv{S}CS|lw=-*^je<#M}{ zlYSkG&@YH&%D>^8q}}X|bIzbxi7n1OY6l0jK1oIP*~zbmEiP*Ev?b74I-DJF%A`wk zL*l_pNA?#q+CgzFAXr%<)7nyF_QjzWcjWxpqhXSkCg`J?*4srr0}0A; zBJ7p&O)Q4VZhh5t5gouQlx{&^mmA*E*H|bkgAD*FmHkyip2^x`i1Y}s>0ECAT{5VY zsS3Upni_Ft5iB0)mNlMb+e#`8k)u}GkDuD^5`T-XxrSF{O_^$%E-`SdoHNp2KLs}K z;!Lamq&yMK4uV!^?BJ#uAW^E5v}Lvd1!0QKQe>uC2U>c2h<-UP3P}u%TjKunDLNh$ zJ=wcz!ki>o$@oO@54+THJ#$)LbQ-GI;Z>mX3BaI#Hi0mtBg-U7n@-=3M-nNcRZD8c zqC15_@7RHAo7PCTjhQ|q2}0-ssvp6^v8||RC!`Xlc}`M zAaxYWxXfhw0GCSQerefy#5#^(QTU}L5*k5O1}DH zMLf-aJIBL2XnZq#ya4RQnbb;THZD+2BHHaIfNO?9Aq39ABVMW(rwgHfM>QXM9D(zs zdoLs!+NnG6H8-ZYb{UcW5xSDY7+VnhFkd`=$BqplF5qx_3&CB@0mS5%gTuCqrRXX zunNVh{agg0be59JyZdgFtoX^uFQjg-=fbp0bWugn2XGrP5v6P@P;c?nU@(iAvJ1~T z&xOQSikV}TUjf(4LJ*+n6?++v&2tXTawL$S_ zTa9Crdm+7DyGDz#pN?HKMH)|Tj^gWTLH;wi92P~1WR%R#5@TM<&utn09o{p9k9<}$ zl&bG}YzS=a4t5GAPBpVLtT;HXY{ni|SjM?WX+90*q_15bP2)Pbx3B2cJ9T>_0{{tg z7~#^AbulZDZG9w((O;`$XUo!FXfmcs1izz2 zoxf4EF9d&oLgOJ6lG@m5_8y$~k~F;&b`Kdgt0quy(kVY7Yl!ulkFD zPs|egZzd%_p-zT(;6|3`YjV=RF9@R_j7VJR+$k+=th0jvkbuJZ1FwmC%U0aI$U13B zr3vK0eNE8jcX{9MqnobzNL@Z^MHs46iS+Rk_NG_UUp>)e^rzjfz~cCB=x7l1s7n1& zRh*yH3PMI|&$sQD$2D?{&ZJz;^t8MEtXUq;S#8@~&q#xC*}uptCF7sTGaf)2?j#_? zRGFeCPEbELXO3}+J1v$FuCip`f#=aWb5{?)z3Q1ol9U8P7>z^?m0LU;?cR2I1lGqagYOi8E0hs9b;$9Zx| z-Jq@&*`LuYo(ZAwGjJ*j5_P9fKP_lNWf=Ln+TE}DmOSF304l4enf4kKZnAvKF`{%# z4E`V9LIMown{V2Q+IZokcr{C+zxlvQc_|%SZ3NLq5&cdohpBm+GlIA;(7aFc6$gUT z&Q5%gXQ(k$D-`FDZB60YY5#+w=`3|;+8nOtvb)92{SHDY*yVXVNO zcDZivmM(h-UDDb$l9CgZ)|YhZ!NWwxYto6I!k6%G#J?KVB_$yr4TZF52y+&_ih+PhWU?jATOx%lJ5GP^h2y03MV_{9ZfRIJ>HE3N zwdKuiNFi6_*M1Pj`SbW|lM1P3!_R+3UTj9n`=~)PJb9kXIEpcK^S+cbwond+Q1 z4<;?#O#OsDZ|_)7uS$JtAa%!?ha9$^6a``N_a>T8z_|m4Wwlg^ycPq>jQU$X<|7ey zdmK?2gwH7z)K zqt(3v2f@RGpp?s{KNE?0n^1G`ddwj(yD(fTt~H6|g_H?mR0zqHv-HXuoAur@q5quQ$c?<6`dB_}5S`%J^(jqcGlD7Kj<@%yz>Rw03?WaH(x0pS$j?q5doSD*36iPO2bxk~ym zKm>EFH#IigwEd`4s^@JuFh*c_rN_j8RXB2j+~kCW*vb=eY+(})5l^XN_Xr&grr_(o zUYrwO58ROubV`=810XF|(0>nq-Kx#JK%;}HnPBZ1>1{qMpI?)=y~(x=_f`k9iOy=y*zS?O!5j>tzYT^wFPR(J*IYPe^9^GlJ05(5xX%-`chEie!XJd+iI z;Fr>UChiS!ycDuTm{Y3R89?>m0_u@X0}sAdmDPXcCv2J z`%6^OaP6E*oF~9_7=W>b@0r_5Y~)4tf?=gjJOeTp>665wx9ldQwC&gfo>EacP4-`q zIt%N;^GIuK)Q7-!RKGomHg;g}NwBc=Y2h4@Dx#_emRjW zdWmema3bXB629_ryOb-ZmBn?@CY!}8>38knxmHL{&>fW_=T;Wf{yT{CLx9M=pI?$m zyjrQob}$6Uqh--K2lE9Tuv%jC&Tu@dXicU`ctzO=4HKwH1{ z@6~2MdWL66MriACZ}=`d0`J?8LVMFUb(UWco0(K6ul-_6vvP-8*{sX>Nf1z#FpM&{ z_h7q%p9RGP#$j7EFvO}AXp$buhgB~i>dG@ZmK&AnX!le10>5ch+)@MxMna5vNZ3^$883lhfFwu$={rc?Ly3Yh? zCXFQ$HOgb5C7x}j`QPDh+-=`~M}O-X!!yQE_#TW5V|T$%+qe!B!R-Tmn*a2=p65qR z|DcFA@1!TS=!yMYwXHxAMA`z{>=jWhR3B@WIA>Ew+%$V>MP6Qvj%z`xl-USh-{L~6 zJo7K`207o0<;kO*Mp&rOo6Es?Q+-7v&OXT5eJ6IBZmq5+*QN9T^B?RtBF%n=0bD&1 zL$L>TUY^@}rd}l-zM&w$6AX~uM?DOWe|t$PIAj_&)rc+7+R&@wQm-1oU59<$o<7~{ z_x^%@Qh9Gm602XZY&j(Wh*^u9ck(DFFGIZ{1V$P!?P{L@Wd2Ax@e0JMauEjNvjn`bXY4O?m#eRQfQ4C1-a7Y00l8&Q9hAl{ zZrLZtb-vL|#&8osn3!oMfb?I`Fb^_)(ej?7^D%x>5!C0aQvdQV9P)#C(CX>>BAI4D z$eG0Po$P#>&BCiqEm&X6J{UhG(bPk45+nZ;)i%Wtx@9V^w@V;zPA3$kR*ubPJYs6m zEG@I&ezMi{cguXVh9k}|-m2Fy3c?#71mOFF6vZiB-fYv(M-7pbjUEEy@|PAT{1PBp zWP_tXpoz4A;G(=pnHRm^*w>*9yxprk1Qx#+`2qCxu?{sByKSppF*Q9w$bi&}s>@F= zEOl9$cP92mXaMgD8N2?*-8@>fUjPgT5`EWpOh)I0FZaOGwOgZ*Wnapj-Y`YI{5IWA zw@wz=vUacGq>iBTm%ZFjm{K3`>zN9f0p%B$K|dSmg>dcu`s2ic3>hGns%(T=_Xpch$MdN&an>IL^>Ihxp8Qek}j5*@Z$U#5L1mCmXWf%IDuJS5ry z+(P8ogV685Ed~}V31%qF5DqboEEg9|Zjux3gy$m$&L`txe)p2`(65eZcTA=LD`uE& zBECm%z4kUM#)O8C49tW&5fxm~r5Vob!n;q8B|TzI?M*!5z*sbG9XWcg$?aK=mst82 zhgMOJsXw!f>suP~$+K^az|`j-WNViK`xOW^`kr5C+yUJN;VOQ8xc;#2dux0_j&}K& zKcY~@!+i<ec-YuPm z8}oNV-s-nJ6nRErmq0!z+M)ZvB`D0+`}d1W4~_97n-nkql3?2~>Zpq$zGM-SJ?OeX z&$n`|hme^KyIg_OqJKC#G~PyfuxyY^^?e39VhRumE_~_k-Z@CE%#^K0F0Od9pC--G zr&goU40$j4tw9D`P;iRoy=qx-_$U?z2uMD~oyap%-I0t_kv&G86?19Y`-#!CG;35W ze4e{MN!*t4TJ!+hSo?fz2|>sq7R{{-hA)w`3#fGHi=zkQJ+DGABf=*E02FWrocz2y za;sG>Z~0UQ!+|>{F20<~xgUvY@=WUsOmHDoUj{4a^RrN1>2NSGVd_pV6bYefPt8{3 z#T(JD*=85qEjyRj&}l~gvp~K~+#AaQ#}a%)j7_YIjtF~2fSXzkrS~3HtcLwTqR78> z&jmo(A{7Ar(wotc;2eH)7wi=6Z|MMl z47I{d-BEUOpI8sVyG6&*(?dACr;6!Ty0A>ICr+KSJm(%0)%#edQdg+udY)ymY42M0 z#-)*kKSaqc)M0-yvM-Qh8$=I~`E$AP+tL5+&CVnvbxG%&Ov%ONnZRxt-j^EPC5US| zk<`1O+14!bzfICwUki(b%{RSxDAK zThAEBYgIVpWFw1m@w;M0$$Yuj3s8f-U+?A@QXSSrH*+y3DygF2;YROoa42QA7MIeD zUZ0*Fs@Wl9xiUweopuhlyVLW*sArqET95-`b6cQBL`(DDCy$R>q!Pu5>&R}~@@Nw@7X zTO2>Utu#PD!_!9&lK+#DInK}+hBg$vN#UE9rsi5GU{BcMA{>vM3{_sDHsw{Z2lxsW zpVFixV-bt2s<;Of+L#7=Ht<@_+CS;1sp-OV3=zGbK%VtE!c=;kg!Z)G7h)2KfJdK+ zSW7^9VC}FdYi?RyRu=s4hhR~aQi-ifn`6Ko*hFYnMtCXl)lgCC1}iaU^)AwkR{Di_ zw|Y_E^4Yv;Wm}Kzl0D-yo7CWv@xXO<3tgabuV)OVk?)k}IP)MQhaIO^I7I%|?0c8M zeCFzm#X5l_ox8x|CV9K?Iv! z;b;$$P#C)zm^Xh&Qzy3Y+gS0AxXT_t#+}MqFp81%+8^Tl98J2wpMPaE=A>u;F4G#L zlpv&fCi9>}pIU& zZ-X8wgHPORQsDe)3l~xFPcB*}UIbR7qu=q&_L)H=p}gU%%XUmM5tge@8a3*5(tX8% z_%E1*yW%K9l70J8=f5R!sgjy7JgWh*UI>iu_aDT$O`f)R+*J&n1w_f>TO+wd@{Dal zaM}ZRh2$d{X=*Y?KNK2hHp~nrokGS;3SjUjG0z5_=;*3MM6vT&=;z%oQP_`T*eIwi zg@DVj8DVq%=2I3I?+9=yJ4S?pm>BgnZ7d@!ixItczHIMXA-$j zZ}PJcpd2ooOA>q7NE5oaRctTU!a&rI(;ovGEdwMK^<_cYNEsT9Vf2vJ^9AcRQhj=( z1^3veb=iS%j6iRJ7LRVs3%|79eKLx?E-z*(MtYhx+I0?aL<+$v!#g2S2LUQUH&hWC z%xHV`qm6lI*Zm-e={~|oicS;9DJ!j<6N;a*gkWQb9_F#N#VIFvhcIzVAf)Ay#V&JI zzbE6(h-LGY+6nP{To{fyLLSD-h(yGp*_+`DiizF^?Ai{pKx>X*^pqhhq$Vdq>atn{ zzHH>dijS5X0lnrXIx4nYJ`#h>)D8wD?&)RpZ<{!Gje32?FLW$xfa?)&$}Y&&16NEE zzhOU}uXz@#h+3*>q^R6eeb9ebNtX9SyJayvgv&)~6+Gj|*x8m%ge^9DldcNc1F?Gg zTXcwd`rt(H%9({23uZ-OE+TDV7guBr>Wwa9Z)JQZ8$W@+o_H0Pypsqz@o2Msb;CXy zOE}m^n8>zOj;M0w%PGTFg}oOCF37szws3C2=tiy%5fnSP&0vyJ>qCgeU6a*`TqNpB zNN5mC6vH#=51_ZCif2qtQXu%E4p!NO6kJ zyLLBO+fTTcG(A#8x3~QmR-TwklnNkIC6zd~z(|fQbHa?7F9FBS1vd6~>-U+i>c*;^ zT*|3mD8B_7Hrl!YE2yw&?NRP`NY^A&Z(z=r6;_#SAd==i%=eE9S17#c4K|!3?SLN} zt!t7Z+A!^m*as0?KOp}kFU(dUSOTZ;?~6Jr^jqCtVbxY35DM#V{#Xb~d+UnT6TdM=%&qjQno(S-(HbO?nu?=A%H? zZ!Ip(92adJ*PDbNI+Yxa0B{Y~jxoaXDJ#TZgl3iCB4KCFtt z9yoAJ41f2IUh z5UO!m4d4v)8%&Vzx;0AeDLoa+44I%J{kk)lL)hWWZ&s?)xcnE|Tj|tC^M3mpon%Pi zG8aFWOfYG!W=u?8ovw-oTTel>N~UeIK?z7kq1V+hoo9GLY&w6o1~Is^FIErB_}Ro* zpATUIs&Wl1b~5*5$A3FuvZwF6MnAXbDYoBR3wyp_h6dqy63Q6^JRbRZbD@1KDf+1b z!yY{qYlHSk29SDQ^zKVU?oMWi*X4lJ>Q$OD5s~x~9uDs5GQ4hGGy?*-9b#G$jE$;G z53%6|UwrE*=O;U)+NC_Mqr~bKu3;soiJjL+LVDg>2qd4a>%uj7tu+41MpcXKhgr8$ z55|r;jEmj;IC1q@5D)JIiGs+9em(ZNG4M@nX56ozl#fZ*f$yISHb}de;AMTuZ8Yes z<)s6}w&0EGxeASqPPn^ClWtrMod`amX&LiKOhSi<_KFRs8JtF}vpLh0{-QJ$dNCVu zqFwW-Q`U_;Kf(jlqR>A_7gCD9rxD^Jazbf|x;glyIK0}RsYY>wvRHsR=|7QX&0hto zuo&#FqUcu_YMLR~mU$Q)4VVfhj^Uagu;YPxDjy@mwJdQ39+AW3lwTWUsnaE#ZwnWk z1}Yty0K64&^xeJJjm}&Pta$Nquo%{TM2>de4WuCT{2a`5seS%?V)I2SJ88-`RdbE( zwqrJNomZ!Q+mvJ=mhP$QND&ULSZ=!O+GGW9xshw^A~&`T z%`Dq8NhswF?=;C?xz`W~3gP&IySVz~?pikn==1)pU#P^!wwh3tV_Ip}x%SoniS*mtHD`wRkLR&P5jroV)L~WCyYC$8e&wmEAOJTG`o~x!>j|d{B)jp> zm^a?giGbCUAo6)RjHP(#(4ryuaNcbgOV=pgC)XFOc4?4)O2T0QVH zT0t-RC>jiM=thzB(4skGWZHO?8K4x~|Ir>Rg4im{PH*(p$`M)lZpqu4Kzpte!QTxl zBnj_2FE$5w?lo{_hX;t2y;R~&$EW^~CA|sFe?#4BfM>$~=np(mcEv(L^BTveF=P}4hohCE}j_vp1`1Rr_M9ZXr+pVc* ziES{Z?JwLmSHy`9DyI=7UWRE9jR$?9`{p(g>NoTZqF!4-RXzfl9?@1EV3HRJ!@zgH z(JWz1Z~X8=F?qc_zk6~2lUK9O2}kiOePHEEU;T+2=3UL z$Y@^0^TGz^xZ=T;2OIqSCUe4J)wj_wV6f{qk)CGZMd_@WhgPk9I-;KCJ zt8da#8RpHf_ct&Ov~Q6$f=YXgwXL!RJO_s98L?;c9Vx%AASzqT`W%@FBD-o0rVS8J z6HJ|N{l7E3IoZILUyMucVg~mi!E>q;@;1UY)AUnc;E%H!3V$!t^@k9Xzq&(cC{%#D z4eL)%d|^L$ubVJ~1n73}E5kk7?WH0*VTgHBB30Df81={OD=F6w<9n{8P0=ANdVLrs5m z6%<}2WhIx4dIIF|H-yPWk?>5q4Z4ISb=w~mj1LVjJ`RICAtR6CJX<>)dOqL=EZ_Fx z-Txs+dcZ%dah9Ba$L(tXpNu{_I-UZM0--B_+~QB8800V|$9qVF<84NLJ!0{8?n|E# zOKJ&-siS0Cw700mDC|q9kz38TXCf%|EZ;G9oySrmLMqC)#cZumFrjNuLPxZv(OIGw z)BoWlAzm7Rmlf}#Q5mp}Wl3cZy3PH(h%fALbMVvOk?FStd%;K#E-I;WGo$UNzhc^Q zxhk6!>nyZ{?GYR%H;G)^$a(Ipn3a*DJ{KVEyqhjoA+w*ZZNa2)pH>bX#c9C3uAsDP zS-YLE>H-Z>QmX8vx#`^*ljlOqlFt^-ckS)sA1unW!gggqZF5IT+HQBA#k7zZRD#zS z3}Z#*CTV}8urznRcP$n?E_)hfsdfLMFn8h!FBdW~!cx4WYb_}&b(FG?N_1v0#E??K zfymq>*;e|g7R|O`sa;NJL#w>?Ez;8u4vhZ#2D~w{!OL2k4H!xEnn|_`l_&3Z+Q?#k z|LiVd1=|Qiml;=d_4@D*3Q=eI?8isrT=Y^9$=rDkIgDN;*Ars3BA&hJ6J!pu%4!>d z8QgR;96m<9atn)n4~Rxj1C{IS;PT#(DDUe6bX>Phi`5<5Pl;5NoZNO*()~ zuZ;@KavO>q)tP9`9S20Tle^mH45Sw7wO*qFnBheSyo2mZR{j*u{+YyPvUm*mRy-}F zfvuj6Ft>cMv21(IOC)CdO{cz5m(%|^+>9u-+(Re+aFDqpobqR}c~fSdXTQV=Q4z(x zP>4|9@Gp8L2O9odA$iz7zu|#m9BYmJ#LFG=5O_|?S%ncoD`L(D=~jGGMMBG(CX6g@ zCrYYxSq8N6%9KyMCyo2a$cn3k)D+-~1g<9J^m8{u2vtZ+QmR>Tz34&3ji{2?-Dd|B zY2TAM3Vcb5lqS&FS(eeD`O?OH+Z4{LFQ$}KA@AX}oMu3V>S!=7vf3L^zWT0sOos;D z6(3E&;vKniO}5pu!%37jaK$Q(dv#w~!I#2RalHwPfQiM6TgU%UHaTI_ImXlUgO0iE z^0tSZ^M1IeqG15OAvmIL<%l_=%Z8PpTn`E5XptaGI=~$an_wiCPLJfWB+;`yiott* zt|5E1G|UAjh*hDRTd{fv=l1;Cd6Zj{Ge-!D9_@XcimOh23u334gSFp}X&n<|OOrt-c8E?}X6hM2dd%yDM9tcs#=3R&rYZ#~Q>WYLA&l}eHd597O$bi0V zCe*?jot&*ZZ@*FW{@SUmZ&F>!C_0*cSj9#BDpf7B#&hZ%JCLr_#J)>cIDf z0wCX8rBCy?_3y~_CBnmIF%j@#Y6u8*O+DxW)d?fDpkuE$pjQ^N)Tc+J%Lp6;mHd6Y z`34183zwm|@1sZ6*W->k5qS9kG;(1l@+^;rjUAxr7e0gRhq(EmLGy=}PcYvl`Y>Y7r-32&9>+RB z<)mr)p-*-<*=R-!-h24`3wRkrF=I74{?cSm4~RB*A!3>p24aHXEA!Z#VE<6KY{UsO zVjB06y0y@C2>o+Ou`q?iE;*W7V2jz`XR}RZQj6f0S2vwz>7aq|0DyJE+fZNQ1@tMb znDo1Bkq=G_<6!m&fs&?}Vd1tKSI*}BCE*f19aLjI<@ocui9@77)?u}N3FN(i$DGLs zvQUg(;16W*tKE`N8Mk;rP|}VvL^i2{Wc6q8tt#LZ1|JEPHovY)Qp*eBUW zUse@0*V+cn?KQhwt(`gKze1L=OO`CYF|p)q_U4LE=*9*qAoWF4KEIUcx_R!2Hh*iqAnF5L{1?jy{8g0vPX$4bcjw~45!N8jOngyp7bo_5m|4}_VKm}P8 zkdXY;Q=%)S!M`76!ZpT+tQ9ZnFn>#kL;~TWkL^v4u`^}C&DWtjG6-(_cxBorw}&@> zq-W$`$tvD1Y_8M1-fX8LU|fjC`VI6U-7Ea{))In~HNU>Wh)VegcYXADxV)No@QZO$ z@dQ`w1j}f+P*%Q}kiSQCcZsmmO82E5s{tRhGA)UAq61jY&6|PPcLaUQhW6NCh<(bd zy|oiNh(Glnz5O`ATo#sGs)Eg_ug?Y8dqV^ZQ`NCueD=tz!Q#yBT36u53)fFO1r<7o zUyZy>*>CjB|Ll389ut{I(}ekS@9DMHwAyVhpf>yliEeyNeP6#8y+3Z;S%OJGMDoOA zy0Ld#YSzL*0cV!^mMSy&5)G~4?1XU;36aS(&7WpZ5(bx!filE!T@k9r z?Orh)qoHyzbB}o5gO^!W7S34Ke2xL*FCmUyDdo=kJKUIK;s+BrEUU|-d3TKNusN>- zJ8WA>B5H(n@G^AT;$xsDMk34-aYy+|HxOo&Eo8+^Q<)=kMAL3Yg@U;-54bdm_&54USG-&PtAPd|6rvq)6 ze?1hMepr;5(pi7u%ySd2c7-CQc$nur2p?OCaE|{PVR9eiyjq1hO z1DQM=A4gXv^7x&)thkr(6$rPv{0v1V!yXnwUitE_`NA4#Msf>UP=XMJ#Bg^eGUYc9 z22o?KqR@s~NGR-Vj_))L#4@JE_++lWY0fNnHB*LQNs1EzcX){$IImgBNcQ=LF?u_< z7l7j(ia{>~v<1(G1V1<(7&Uijt>SvCc7s@iAL(rV0iaI6ohWzWpxASBklo$A-X(N> zE(fmuEQZfOgP=F_(EtaxvXqzH(;CTNH}p>%Uss7y*Br-1)BYquT>OAUA=Iv z<4Gg;{o1ZG6JZ=S8E(+F6XD2&ydi6$v@6Rh{HOxV*aF`NECYvJo|8oj{k;mbZ+73Fn?o1xPEMAUk?e_Xz?{t=uC~ffPIEI-&|C1WS}u0EpU1y<{?}ZuT06yvNcvIWQJrZV@MXy`)V~ zer+tl$KWWaodsv1Pi-ntSF&gjY?S&kx}i9z!G1n&Y4SkSyUle0;Li-^kSyt^H#=d~ zcYf|5HB1JaHb_B(A&;jD9BdaOy6tU_+*7I=f9YrOReEdZ>;&c_xS&i)=F-z;$+jLw z_lAl!n1_gsvOO?(kR0h7$3u(Wb<(U<33Wo1C=5`!g5>yN9R2}r_>8xJkA+hPqW zOAvI%M&5|DEEd5%{MA;uWC6Svam;R!pfo6-;!nYDo;f)Mjx|}1G<#1gE;eoy)N2fz zdb_FaLD9_mn;Or32>=*fwS(`uxhnP$XYDdQtZ;`XWBICbafJAjoM|=4&e-0`tS!py#*X9^Q*y8jY<&!MLm>r6UKbq71z(9_UrmU-Fnh7<(rY3 z;w!2aXnIV-^aJx}eX67klbQ>O)ak5eTz!z|Ma89#crV{? zz7ZKW&I!zyM9NUbwkZUrSLHj4<-vcZ@Vnr)G`INr0z2lYYtrB_3n%J9B12 zk!eyewYfR3?qQy=6AtiiiK+nwdlz*%xXw9!YG4_YO)H5pKvq(0)hyo@4MXe%^B_2Y z(k$q!q;q2%eFc|74SNjN_G370sE*@2TZuCrFS< z=atgfAMZ+DhzdD-QpU)C$vWw#?>BNa+ zA?&!5HD|z#!WUZAEXP5{_yU)|s<`mdDCpuz7w3P@TPcQ;A(1v@jHaF8aBPLeV&IvD z54CLYq^@GdNTpO`S;uHRQ$txhtfzPwr?aWJxG5r%E3t{&&cpR$(Q;n&{1Qz6L%(E2 z%L{;e^77i5rwZMtmRcNAS~TS5V++nF@vXByQQ;_^1uL<2$)>HC)rx z=u^l#2eEqebt9XS*@AsfSqF??g#Aq`im#P!soQ%oqq}m4Yr3e4ghcAWTBMe7*l3}} z5!z_UQK9vagS4HARN%}&#$k9P%-I$ntYy$B_GjdiGBqDNIjb9SZP4~jLVr!x#47LT zV?Y`%$lo;RghR|8MQyQeUlurs_tF$6w?$x^?^r950vIfpEW0M#kG02ayEVqb{^?GM z0M4MPa8jM~jpOS&%pxVc=@U)PElwLUTkY#J1hRAwodZN-ffe^6pd~&j81e_?WBq@J z!CWY{*MkR~*s`jwR4ujh)ErTFV=q?^pzHGeGx@Y~leUhiafbo=(jB7<-9}FnYLdDx zH{yo-#OU@DH_lI(Mu3AUM`W7~G@;)jre_P+ZWqA(&L;+O3WIy`>!Cl93XOz=K0}WEls4QlDS@%qY$BB;y!u;wI;T4z zXw)rX@X@G(dXe4S{1wRv6-%wjb|2%eku67@!QSGvl6t{roBhs0uBTI>h;*!XT6mA@ zzIMt-&?6wS8*FW_=4^x^Erqm5o9d2{nBPIHRzD{y;#~uH^U*JXCC_>}OV}^v%P%B| z;^2G^<6%OMh!>W(kAD2fC6DgT%K#Zgx-Nu)oSFOf97)OMIJKQ4j($z5OHYf6eusHW zcA64TG2VB67QFNHFp=L;(gmJ|yZ`+6;JN&=KW|pk@(c&=XK}?;%|*DQ#3z)?U_x>_}sg9*cc_pLc@+@Rq}gpvvu-OAU^N7 zhat-cKS)n$T{1xI`EDTo*nt4m!x7{E2_UBA5G#Q)L@^Dyhq&Tt0WcEHz472LetiP~ zDeW0%sSfjiYD(?Mvqf#wXyq@zn4NH1!V4Z^Vu0-ee-0QHc(5L`TM>hm!Sp$6>*~P= z4hZuqBt>*EZNA_5URE#|6YcnrJ}_XYuRujt{pH+u zv(}(CuKSJ^j=GDMsp~6I=Y+tCAf#`t6Euv6V;l@edj6^=xLvg+4bIZq%hzS|q zRrb3WB?pUH;bc{O%U?qP;t*sTt`@pL`g>aZ2vldizNMe$9BPs53Z=x*_%YA-_!@;7IUzlQ%r(Q#I8&F6EqJp%| zoTYLuTweF2ZLcusdqX>4#JHBj2N&y#cGPuo2oaq5te+vv<(_G?dWf_&(06YfM}Xbq zjYXvwIr`@phzHL{T(^(sd8V-!2x9l5gDyE6o}j(~0B+KLlyJ=rrxw-7Nfrs(SO^=0 zWeL?c%#X00Ix}|11~(i(OVx&q#sx2S8}BX#?cABds!mKZ+DwmMh#p1);|S68&C1We z%wHER#JGk9p-?>z>a(1n5+-m9JauSQKHHhrDAOw%BKJsqX$&=F~~aONS((cq7o}&Y0&( zM!!Ge*R+9s!A>&#YOVwSK}oDo3axjyFcM%JY86BJP0*HoOogY`IW38_&Ag0lL_rL< zyYMO}YMJ?BQ{njC8*mi7A$=k2547cL*#Q@Y{^3E2JcvGoHJ~nBFM(y>A3E0m3#>x4 zC2PV)F-=%>DYU)IeS3vIxOGdB5{GAunV*34_~3sPx4k3NIBOsC*M1D1a~_(d;uS6# z2sIEa@EaXdVu*-vD9l|xNRQo-@Gb3K^TG>R@D%8deV^=EkZ`wZ{cFMBJtz#)&myu9 z4VCKn;B6_2&%@hKcw~Hg|Fa}t9p~-oX8rSCV!iY?KUspsBPW;9b=S&4p$W>+nI+7R zp-lJ@Tv5r^s@|L|FybL>zvWz?IZpT0tiiLNqH7akdh}z7N7_+8$6}E=dg@#KBV`NJKFI2bZ z@B^KEkBrcfMGV+`tl);pNY%QC`V&k9iUH+^IHT-r_t5PXC2TO<^{xOdCdC z_E}r|oTe@+;~g|OP55k876WtoQ#KI&1S7})YIOMaTVvUB zT}pK#NkqsqpEpM+xf~NXGoF4P$xBBI<5LcnlMbHA_^M0Lx znzn8N_bns90y5x{7z~pOL9H@c|s78eLSrebYo0m`h)q2hqpn9MwM;&=idy|4F z*O1rmUbpAdGpvV%z7WJ%-Y^Doi1GCR7N6!;%vQstXRB| z+HxOXM_bu)iK@@7hTlrCQY<{z2zg~wNv+Wy!e$HHzD*{{p?WOBOP)W-$;A1~;)J0X zG^A!{{DJ9}b#o52DFDs^IE`@=VJ?uV8=UVbe8lKVH+TPO%R=qJ;4zB%I(;T=8)rGW zj;L2)XSB}pJ<>b}t?swcl6!I=b-~%8cerU3ZUNJG?@F1ml9 zg!)VoNR87a$EX@f9(j=q&2GpbUW^A4rf{?&b@>Dgdi(2BHa_hFl=zP z34X&4f$b3qF;2bFOBZA7?vF7B@$j+y(|R<5Y{7BTdDko^#3xK01iC0$bF6DXw65HI zU9WhGRgYxfYmNE-{AjwtEhB=r=OvyqHoFA~D#3FLAnX5N@c&TET~Yxj3!`W^^aArH z8$Y(A4EJX(-FWXygM{0xrKR9HXgp$A(KyBCG97`5NwFe9NcW9Ul9w;FfDbwh20Fkg z5OP8u=3OX2uucR`*(sDZD0p3oBPvv9%HLJ_vr}qVaY;x!uxX?S!Y2t_bT@YY29H0o zOQhKlzQgM;)+MC-8Vz;5zHh)iJXRw#u%l8udTeQ#=;SH^{=Ps=f{eTJy4Rt5!^q;m zmkThlyXo4(17mLCUR}v!YJ0P*2aCp(w;xSRG0V_Zo7>H6o!91q&asfzel#CM|>Lh0G5`G^3eV$rRW@}jj% zps!E`wWPcX^EOkcn2!(%y7#(!krIRia_>Ytu3)yE6ahOSnO;@(MIzi!?G4v*e$vppTiULIq|^c)b0LFMZ>m%ee0#;W0$*>v2#>2ybbP{;&z>pDd$DGRm8Rg&@#6^mm`4db)dJoo; zveE+N>;1JiDPs5k^6k7$GGbWTW+_iBT8e(_X1O3u$%gK29$eS$rAvk?eABb>;2qju zutuH=!AJd0UC}#i=0z(cJ4v;>$fLM*xf>9w>#;*DkX$Ghp;$0qOU^I}f|v4U-3r;Q z1oV(?59!1Z=g*R0>QoB*sqa1A*zn)oyNAuNX@h`=?5=1;iOk=#REyn7;ts$10M4v` zo=r{T!s^L~&WcESkQU!gHT?mclmwzl<~YFp>S?XVXtqHvefB8WvkfSbNDJSur=Haf zXC7I5QQ9LTyhj3YUFlNiG%^0gBxQUZC6FUyiFSOc=r*0MxnH@U;W#tSk6QS*Q+^i6 zM>!u&BnXsAZ}Y}jvvu|G$w(4iN`*)S_2=U?-9I8(2(_GVIqv?$_7h1kirgK{w|mgU z5^_c{+-%bggZqB-7b2Yi{kBl)zeG6mS2vgi13$pT@s(Jk{5PXRkyGD3NEbZ9P>JFS z(*m(yu>*p3O`o$Ju29frSfOELmw3fqIf}VkvS|!sg-?A7By&AOj^IgNc}g$3_m+}0 zjSNxqD0PJP|5Mc27~mos%s0JneavYsHG0T`FcRUUX~ItaNW3*3N3Wqn9)#eO5NUo| zN-sY5y3EljJE+DuRxw4LQ1nn*feM|sB{2v?sz`Iwjw4aGk+%2d`zd(UWSeq&2w>(D z>ijn*YLQLnk41q6TsgfK%6{CQL$2>@#_C?V!ba|!qtKO+lXf3TDHbuJ`^kE6qmrb? zMTERE7H4o9h(dI;QAA|o7R~4!AkJ?k5IOq5;*$i*h4_9Ed^Sx=2zVhLuxlA#c7G}< zgC0H5jMErpA=~0w+#XVKy@{)?!4B9i!2gC;{T;k z|L(_zXOPEBjm@3~{2xAJ8oc3JDU-v|`|Bn9!qu*5A{!n$i zHGnv$tfg(Y8L)8;qaBbML$bG~R{_`&A4}=Vsc}`Hyh$|oz8aABm9UyaZlibCF{*!3 zy1m?^*6!f*Gu21y*b945Oja&|BPq!Ekx_i(1^ahS{Oeu#YrbZ*LGqtkqj?Q7 z%l^7DEgt^sq5;87aZm^bcR6?hpY^`wo9Kv(}Wck`~)IN?Ib%^Rfv5&^BPUP!UP1 za@cw5zvHdxg#Xa+aTY$SGJinbF?XGeIvVxvQyPmQmzfB{$@=n@)gV<|qm?8oLr`f4bHWIM|O{s6`9NO>-}VIj2q(7+E`& z{kzD`-+-NwX+n@N$ZN$Is(WN-QxSTFrcu*4hE0U1F<2Iud)U5YK+x~`0mI1BMin$9 zNslko(x4u1a?dh2yJpgeAZ56Dq>YjjL^R4siGeM{s_>jfdF`Ck`GsQmaw!k^109v6 zs}SHhotI$3sQ`E-RUU4EJiR6V@wV>L%4E)IPvPdXfrvj?a(HS@`SW=VoMDR>T#^z;P+CP z$a6T5dx+TTsH@jp9uR&SWGtg0&1qkWixc*X2{&V(i!Yb1Nlb6K0S(So`pxTQ#&HD~jkTQlxDC-&k2 z=2b~1#N%Lz%7t8LM1cEumXDF+^G{y9ykbU?=}uYy#I73)Y2)qa#r^Y(uCT04gX#Az zbF%1-Y8~t{CUYn(9)mWz2ou8l zT^+~|UC9MuB8$2%Ds*6a&`Cn*rzk?kE)cq&W}mo9QJ_e(&svv5kHk@U2GW=~T5`ZO&yd7*AenoqA_Deb1hCktZI$o0{H zV3EIb*iFf2#5v+SY2q+W4|mOa6_TY4=`5$higV5(VMAGxi(iCU4mC5RGch78moZ4K zoOt`}cf;1NTYNvrThR;IYkUYW=fSt?!S$d4I@zhAxHWz~1j-}l!vu8f3uwsosAOo4 zu?XUxR>`I%#OP})_-5lbb2fDNcquY}NIuZV%DZ48vW#D+h8H1YLXi>4D?Daymi?&M zt0MUW>x3X+t+^DfwV}RGTtyoce;Xg|61}oGkJk4+5a>XxE%g{N93$?z@|lYlRyDfY zkXzJB_Ax~(&yzIyz*Y-uj-UifwDP=Ll?Ey&RTuXCQ)kFlU7j8DZ%4|ig&+G=p^)Lt z7?=JigD^^_5bRwDwyPsBOTLN$VdF!!ejG=_a%YJ__H?0a71qIvmNcfi*v6;s*Sp zy0i1yj7QH*nAmIJWKWnZ$>RC>cWw5H6U&RoE~q<8%ae-W|0Wk7tCDF5ggUnE z?{?vzaxT0OP988Qx@y9+gy1m2FqJ3}m~Xhkj)bG0AfEvN@a7sSGXh=tzSPU-?D2To zyEDFd<9=>$gFu*K``@KphNyY|_`ulHq+KW%EDH83ku#7yNsP0&_Iax;; z1Xm8fD=;t8uxw)=hPGVLK=CQ|R7i-UmmqxR<<2`!9Amn_reAluMQhX9`k#zbnJ!j>yarY@XvXH!S;i<%uED9Y=7^5_`nW+pxK%!7%r=JRH`rr2{1HaG z5gAOoDDl;oxzZF|gmAkwscy3`g?+9LM4xl1cSo7fZjUiTTO&v6%KS!RU`j**7zXsI zBKSQkDh=r0Ph;IiQg8l#AiBHUU8*6VQqsd#*i6g0GP$Z?s5;b+1JZBM6%A+KPN431 zf|=Yc5K@p@0Cm9;rBpjwojB0!i6%0~+6VS2C$FINZ z`ce1>%RRRN2WG}n*RY08pp}=MC2j$DjmH&E84e+y{_yzW`GtsstI9PVB;(UVk>$D> z!JOZmANwVgKGFN;Mq*@qOnS*F8$?qeP8)u2S1F9-s+^9U&*jQQL}6C#HGdvfh8K+KCJZN zbdWZIhTaJq|9$>dY46_D>m(QC=KuY9b&o+K5e+kJj2vjxXVtqOjHUQZ#o`V@(LdRZ^#ZrKK};< zeMYoOY{DTAjXsMvM-Y(`yxSMDzYUJh8<^N*mmr|<_1V^+EW8c(euI?j!8>QTS$Gaj zKz2j|v8BVpbdk1mbMMP3kh3|)?$6d-6Gkib#{PthVB={*>UfYeg@^J2+Yq=aadCw$ zY~JX`;+I^yDqxcPNK)=cy%v)$(&VH?7u0*!ME@RD6bH&8093PfpVfMp? z>1Kzp?KyD`72i!}QPlLEnubohoWDWOOPl9nI~Bt%J#l_#lc5bTZu4c?&)qIgd50Pn z+NL7}oh%!waI=_mDX}YlK}s4IIe z5C_fOWWQWuroc6hjDBI!eo6*+m8)|i$v=TXYSNuta~HSf-m>l9X1ocQ}9 z^;cOg`G9q5tH!CWqfFHV(XRxVie==Vi5@s#50#*{;#eF355cy<_)}&(!1X@uV6_MFREk!a|gz^N14YplS{o(K7Jg0 zL)=^^%Td?Rr=G(ZBi_gr>Okr(zmK7mmO|QF?eJcj8&OUL>5aslOObCBiEY>w0CbIr5q@1pHVhlLtgWv6V-1 z{xlE)4tWmTIWl{zD`cST8-O--+Fo{jiI(RsVv@7EAX}<_V*`!QdK46Qc4Z!ngX_Zn zj#v317oG)5aiZr~b4(+5Vedtf6F(ydstkU}MbXpaj?;ib>Yv?xUqN)Wh|nae7fFpq z8pH=C1-1BKD@jWgQTB-rN?M9%dO>5R%|(}kO=Bs0suY@G)Buk)$TsAm6yN_k`9gVG zo(Z)_-iO{G9BioKiEf+hr`2S=x0x#B*RkohLWLA6Zm_dUkl651C!?%uzJdCS^n~Wi zn-iuhkzC;^(smYA903SMfQ>U2F$$_X!jGMPE(J?Y!qhBi?D#G0nWQtzxxM z@wq&-Y7Xrbw>c|J@zkfL^Le-brSh!GDI0qE(>mO?TDQpETh<0jYBxx$V0;*sH~X0GE?L zAG{2kvGlPHfihj{<_@|@S524`d}^w^1*s$&hHI2H-3Z(ad32We}w&p+h}qepevKg-m`Pc;+J|p${D$1aQ#fIsgI!WJG}+w*iyuw*`ZS_>*=33 z`;Lszz(5+t;)mXmhfAl&hgPyP4_-RZJ;|T?f32I6;{97LZlG||&S_MBm4DPW+f8Eu zi$bmtWuDLvfSC5rWwtFiQ_tq0pRNwEf@$dv_TrSaD35m&?%tfyVDAyh?qL@!~3D;k(kaMAEe)G zaa_=?*5jJ$fEk$sG*3aJ707~$QZ*z3UM@(wW&f9ic{nd|Q1fZ+HZ@PNec#P>O{=&` zAp%*+6_a^nxYwLt95zV7esNW9H)gihM<&1^dz!Xsom5~(Yr}@8vCVh6We46Jkf7L` z8cQc{(w@W63@Z3Kj*HPwx>#AsBqmG&fawTY8Kw`l=zjIACPLBT6ZCowH3FyI0=nn#()sZ;0Pt`Zf` zSTGU8?y)wiCi3D=M9~+1jW~#VsSpexSwx5Tp&XD7FWdE4yGgm!+J4ynVpE03Vm@9V z$;^MY&<6KoM4Lf@sPfw#dGs9yN_ck`t{7e>C!5&){R8uVrtbsnWa9Qhn8~KCZ zZ-j4_Pp~>|-gR0`G64zmuhGN;RybB~6lL=#+L5wr|Cub4nUzMrp$m6 zicFLT3)q7GbpC*b7W5*IqD2%xz2t{$p9`V(yPW4=V8A__obwZJ=Sotv5-Rpl16s-n zi-hKra*X509WTxqZ~-uZ;1f-IrSXI$V_zSb7H?|9=DyQ#X3bPy#L%YqgsQc!y!~Pu zrnpt_>|LkWaZy0A-*a}j z=oN(BTW@z&>FfHM(db_TkPi^M6u@qh1{c6`DwsRT$a5`*?~mS}5Yc9@8SGL#@J7BG zRiX|l)^)Q$H2PSr`1$>K?{>K(>#Py|U4fP8D#=^_;f1z)-Y8a(`Yj7>6e(zON{h zW7zTMSJ6pCJh9?Y!V~+|9n3 z{%%it&zV;jkhL8Y2kO+gC4ssm?O{n|{NM$7ec>Pm3n^Hg53T*{m6bK+-Vj@*l7KW@ zn2V(38~$G?xLa);$!4%|GapEi@^G3T{T7o~UL&Os0jK)l!ADW1R~DHPZ}9%(zxQFUwT}}ZTb&oHrIXfCUGUQtBzZyxGi=u5ytCs;oDRDhfB?~II)+l`-1@e~v zAL(1Q^C8j4LZgNWg9{y?omEkznd5}fvXlVtxPB;BYA(%4Q8g!d~l6^e`fm^{77=Xl5F4E zGC)Q>=_ZPv{V%uVfoVZbO>Kit5+y9IJAo8kPNWkWe0ZpKY3X`1$9nh{u8 z_P$JtAKEQ|jJy`%l3QUtLn<)7QZvkL^-OZ-H}xXQ_z1o)2uRy>BSOBal@arHtm;or zq`2D3nxQ!Ifeo>R*SCFPF($Hsp)Hz0$@1$U1O=J58FEiviKhFd(i0z8*rM7^fPs zvNR47N~_pMfj233Q-y_n7`GlF{8aq9IQj*Y#1Pfjda)6J?*v-hq)bP=L!p%O`WEET z0zKYbrPu1c)q^4mRei4B^?YLWCWCb*Q6l?qY@V;y>JUuIQ|KuE6zTo0^@0>Y5*wwg zYWLx7*+x~LTRX4W;F%v2eQgAujK)grzb$%yL*uf2yEI4_&O9;2L=-oBbV4yFM%Iz=`aD38_lCui0b9sRUMM*jbBRiGW^8LHa~fs2Q6zBBkGRG)r5 zK%fVheSOicVpvliej#Sh@L?UC?TsO9;7gTgHsDgEjtUP$TGJY8>*7HEb%a-CWaekZ zxr|HvC_ttH%L;eXh9W?T{%N-7FF0S6fYTFgz@WRqXBY;$TpprIKRJ^lm806<>mo3W zx;ipqsR|E9#flO6i}qrG{>X7K+K18`@z4MR2e1$I-d{?=9-e>!LZxQCh1yU{;f{@- zgskqV)j7v}Tzt#Db3_n?H=56d8lF$aeqMAruN-(|Gu(dW>J@hrX%qAin@jAB81Cv) zn6_xOH?f~Wc!WnMO;hDI!u$&eiw>Uz@hd?2=62`ZV8tjwm!3sG^WIz0{8q7Kd+SGf z`Yi&iB05snaHC&{x4 z<1=?-j1aEd9>MAu48Y8{dYiMA_l2CHRJ}bLq1SVPm;>?XNm2G0hjFh@rw@YlrFI$L zTQLC}PRk7jupcp$JUC}WIG)&NwyQV(^5Y}$fsE?b5fiM?gkZ%?%@oT({Sbq^v+MyS zZ+p+S;%OZL{Y8aghGBigb0LoA>$+{pSZF0d`ex|X$hLBml$pwAF=2J2`DQ}6WLXb< zb*dqSwq+#UVaDZzv?}wXw1eMkfh^9z)Dlc3=$MT&Bgkhy;F7=)-mHzFNO={;01`u-F= zm%H}3sq}fOa@qhsgE6Hy;;HcsC?5JxB==KaRsVO>Stb0mJl4P=nl`(u{Pe1Upo4oB z9>sr;DeuKDMU5?BXJ;#wQ#GnAQ>-7q{}+(_E<>H^%#J-fT3C9Aby1EZnUmgdnb^Nvb&X)X;LlX5?Y003 zW&D-l8d{k?X`XPD-HmtIe+FV$tivSE_OXs(){a()ho4Bq$s)`jl#S|OQy@$$qdfa* zl^RvW!f3ACY}Q8i(A#svR0`tYC)z|5H=}aT#Ejyze6E?`0sm7nDP~rX4LG3IuQJ0I z&eV7-S-;qxy$j5a8ZN6#&?BZ@iLQEX}_`<$3egyQg21rVH3 z<>N+~QXosH?!^M5`~pr7QW>V*DTx@1Fub84&7(cqA%r)Ykb|l6Q=@s6ie0dLcH?v` zRS;QGDm@ngY#=7MK^b*P{vV*UGZ>UlU&kT*=vE(4;+z;FCqy~A%4y}wNhIUYv3`{w zwB0iM{>T%GU2EE@VyOq3?3pv&f}Ou?TTgvwb2n9+T9z$5_PBl6s+032Ucw=MU!q3C z_5%H$kaq#!wsS+^-$SWOk~9BAPY%}&8ZzaDa?Y>>`lSn(Z)v?kEJ2I9;xl&)_HQMEw-smD-`DjtYX6XnI~)x z?yQ{>YY06eokatyQ3gjC=Y1F6K9|^t(UUh2ioN8S6V_uT0|zeM&f5-vMZ^gb8f93` zY>s}c9U45dye70Kv7t;8Y%m1`=JE%@(om3InNvZ1uD#erl~|ZN0sQQ~w#RvM&Ae2n+dYwf zc=-V5g0~%ZZI!3{mM1!ytrF^_54XDhR>IniPfFUKE11 zSvPp;T$LHO!kuy{!Cgi3bnI!KVW@>{0%PB*1u#Cu&Hi;D;_!8E8-&5=>Zbj^f zCy2HPdTUWeSIko8RRieutrajBj@V&yq9m_tY3wYq84*c;r+>(}z6b%+yOg|Kc@;!x zu{G=*i(s@F@K$8aYW*Ehou(9o(n z{O9p=IT5E{R3k0AK5ff^65aV2WBNW$-1DMnt)5)rx-RGDpjWuSUjnkB8G{R;1eG9W z7y;?ktXW#sl^DC;5m$lWRR>#XP4dWclu?^@F~bS$%abK=BZRn~G-RmrQMX7$lYcoD z8xyrFHanjQ&+b`$&lc?Z#W^T2Ai{JOMylH5gYCClj-jHT{}9{N3et1hn1k;o^i z+fLGl8sb{40d2&h-vrf&Uf9tNHsUErh?JoG3s!dqh9RJdTg7zBFeqYZftID2w|BEDsqY1LBB}052Uy4+`qqy z8F(7Xi$WO#k(#SI_ddtoZiXXj5N5_M4WwC(m9CvpfuHusfOl5#&-~u(6X;&YBL|Wq zCoDdHziyr@ehYUej|4e26iA#dH@AW;nW{&GWNSP<@-Y;TBt->?vg)VFcp&X$zPl8& zPsXyfMoRCmYgNzMn7v^w0{nE_#SS}l8#O&@NK`+6C|~1cae(|qDdY&00ma7sNSi z2&NhSn<)S3rp;ci&1HoZzUU#|naHF5wfNJkUSY3Sc0=c`EQ;&TAH9bmxlxqgN$AeX zMQ$wdh43aR<#eNr^$M>5`It%yM!pC&Gmh=fc=SKN_I`7&Ptlf|Mln2HTrOqF__pK* zG3h@Pd;4Y&6$yMI(j~m78XP6M75f^aY`3`=8?!F=z9R`S#(o+F>e6d^^0{RUIp!KA zB#tIJyT92ps0hhZe}vxmVqzHNQ;zH)WWESl=GRB*N;75V$1Zucv+OqVLqYjkUN13| zG1eHxgF>WdZ0N-7a1amh%eK2e;{f)Pd-*EzozCOXhZE`l>cGw%FUu;CY}7(#ISD0V z{~AGHr`=W3DNuS&P0i-HG+r7Dy<~VGfiFU7rjVrCe@AB3^6L5%ugj3P{c)V^_bu3$&UsAj@WtvWN4 zgAh6zH=v)WGk`RyMM_%!Wt0I2YpnQUb-#_tb!XnjB5EpAFL6N+Yz=c=RDwxKmr7w1 zqZ`GGrY|?>_JUVieB52@QEJ+TGMQI>#9B}Kb%wG4x|3~k`RDXb9rP|2mXuxI#6JVN z=sZ$F4l#L90#=Ql$kXz$j?cnqj}Q&>o}eM;7x14^dBt^n8&|_)*zmt%bCfRvXSUcn`c$CrdJp0BA@F) zCxaIf742W}P_ZM^gOfFGQHNr<5Mkl@XOyz*at+N;AJAT$#P?GN`PWV^8UJ=CEj(03 zv*@Imdk5}gPFnARJMIrYCTCIAG(`7Of%*w{V>*tz`9LF(%(UwEzs!M}(jgZz+5-m(=jvZunn`$`%sH&zC z1O9rWgW_Wv({PEuThKVaebx5SBAX(Iji8nOU9X7RxtM7#D^Dq3m1;8a96u#ogUyLK zk<^~(3;rNl>ZdaXLCB28omBht)Yd8DDl~Ho0M$&?)8Xmpc;vek0i1g`gmk_a(R^}d zmDSgL2*Mqic15+wF4~1O;CX!l&#U8DV14Q;^@|eYM!#-&LCo6U3@9kq5G?wrlRZjm&-9c}^CTgqG4?ka|ia{2@^qUZ(AWx8b`sKIg%h z7rb-6;Y?F?MyM!9DZJn&lFG#?cQr}oyyNWN0dHq1+%m-A=b|-j$Ho~$ya^&a+pbo+ z`9X##gCc~qzF+K*!>iVDJ1TBrFS0lv{0Kh8JsE46V#1a_|50saez3I9tPzyDvGc_k z+`V0BGdZv^VR&pQz_h!?3`hfXiU?A2 z->7HmYXjT<*^LqZSs}Druc@xx<8L`wk$xXFy)vbCh`kmhBh*LC9vrek zVQDA+a9ocRR>_vq57*i{vyQ#Pp!NFfd$h}H}r!r9Xbj1C{FI4eZbiTGEOkjbtoaoT`Mhg!VvI^X<$TC z;~PYJkzpIUs4Xu2OTQBvZ8g5H;%v!pNG58O-cZnDd8E}X zK@Jj8Vw$;k=$^!p${MY@6Ln>&SsCA+RPmU!pCRUHgj|VZIEQ8IJqDz@!Pn0;b43-% zLcP#|_3#Bh7$ja+_zi^cT8Br;oZYoEbt^pjYkJdwQ3&FehbBXixLS6%-^6=8$LzEy zi?x-^$-aybwnmSo12)#57Rqvg@I{02(v`6Qc^S>T8A5x(m#I|~x8`%Cg`PfMlGSJPekTZH=kBC`MsBB1vx2%Ewtoj+zL{%E$e`&=m2e&eD7Dmo7S1E~6VNV# zkH{pOkaqXs2%>22N-H_4PT{hEQ5kIy)&mo9~%P&+<9{Xkcglf`Kr?c@wC zx@7Y`T?WNUGDR{Yyw%TYeE5I@`Vaq$G-4##0fb*u^Nl&woHXI4(_u94V270%|qSl)@z9d2neEtU2U^$F>b<<{n>gaTM zy4eKsD9O+c$!Dl1{v|L{*8I!#zl}anX3~kOs6P&hT7?0q8mowgPJ?U7c@h!Csk{1G zj=FvfW+1bbegi$mrkMt26rXHEEI$`Vl>@TP}dgHIkb}FTflF`ci>;I#HMxz2lkm@{jUfR8QSrfI~Av zi$fFJvc%7j`K?5Y^CGU(4L%-9lwX*>$YDGIqhE1l7ZDnU-EUw$QcO&$8G$&l;e5sL zTBu1XeGmVZm+oTQizXt^(iQ#D3c`~Mvi_W#l2c|kXhBHyK}K$Io96jsi!|>#5xH_k zIBokCSp1B+(Q?*9zV7d65tmF?=oj$Im9)8F5 z_pisErbC42K9qxn$-!_8@529oGrrH9F3LU0CFFm=@N>`d)}AH~3}51c572B1n^syP9_!f&fVl1LTJJ+UhU;hw+}n*BVY!kEuY%%DetzWp3Xd4 z_@N_WL)K5#P1{hgfC`#IOeGRDw0)nL0tlNRT>n{@VN^fpv0p9^?+wIv;Ln%c1P2xk z>$EoJCxW|As}vUG%H~TaIR&i1kC~$*pYZ_^SH?SnF;Tb?z6=LnwMtWOZn11?mGZ|# z+$Pr6rC;zcxnL-!CI7q>IK-B_bnoWuBQ{ zhdjcB@L|eZ`@v*PBP%x2!M>|u6)a+F560JBXXfBlbJgH%z*df< zSVPqM9*tYnV>?;_4Kuc^BFa@WNb(PoNopt=BZ%%Fo0O)55&}MPCCCd!rNT4Bq@|Sp zqJs`wIBv;i-+gXo1(TXfI9DwHkpIHETbxKb8A>10EA5r>MYJGGu*-VPh{rPF2`Wvd z%{=101=MZob(rQL&KrDHID9wvt$9hzSahU;}nde>Alubw9{Y!J8 zNrqg7J{5yiN0~;bIypp%RrB7#?mBp>9!B^N?&^g3JGJAxBb0wLxt96%{X5{V`bM9? zfzUH_dDv=2;XUgAq1te04wgx*=+dO$%tZ0qr+m-QfTgfW0XoX;P<3N$Fx)=f0~NDDuAV$!0DjW+9Tvihu!!_s2L-|(CxrV)$*1*3 z)#$A$JdYCzOmTZkc9Eb%k(~SleXFp6she9JH~CMxvKGZEQfe2!z+R4S0L93*Lb2{s zu2;K{h%l4@{O<}p@_BV*KFxa!@4oH!NRO#t?vW8!%x?iwZ*O!X_BLY-202~hxmG(r zI~J-x!WXr-6+};w@b$9v%;uvv{64mb2<8zItZy2U919iq zf5FRg;_khJ2Lbtvp^xZ>7+sq8yO^tybNJU><*s!H2xeKa%Lewy5EWSZY*cuH)bl)y zk52QzI=|VlDigS+-M{UpS!vm=(gi&&S2JIKPGeN42S8JP zxgrBJ+TLX4BHypP8#)dNYn{MTzy<+GEAC~9;~M8OzChWC!ye+HJiop4V?N7v1byTb zTAPd~qHJs0wTY+tAD(dDR^;&_dD3 zX;@GA_=hlHmL~dEYv1wmT;52a7CG9G=3f2D(cLe>JIvLjYcRopOIE;qmH0` z$ILHd-p7kFJ`nLWRV<@cxS!$Hy&PH1>j}m-3$DVDB4Hn6e#)pvl3|`oHC!Qkq#5w< z_dJQ8iN>IQ{z?~X-A~De#&@P0cq=lXyj?04uYoW18*BR*8P?FEXX!p(dF}G^t$a*O zmCSEe9^v_{4OlH%f-wA=8Tk%b#gfDu#V}KjLawyz$Bb)rk0$T}?jvI&D!N~s-xc&) zU)1jN^V-qVj-mMXkoUNrl5M8tQ$04^8WVwLGXyP5&4q@OwO;$*&*_*6u&d{fO{#(@@087N^%Mj-2Buyc*`$@b`A0Q<(BEQspX9X zqS&oEjC$d~DjNM}fHA`*V7x|Pb%?ZfmE=XgvCq*LuW=W{C~r2uss z8A^t_sIVlZhJ${mH>+iYe~NL-k1t80lmqtn6y!>=-G*bnQ8R>hC*Y$Zz1{GtJhEB= z4#ZZ?CR)F26z>SiK;GBI?FPiUr=Ylrtw%=MEyITn-Uf!g-|%+O7-EM?PJistXl&WRS>;DvL8BH2*lq@5(tqz5(P^2GEjTB!# z!qc@fC)I9$ZtC3p34_gHN#I-#X*WnG1Ef~_>Ch41-BwcLfKp==6cm3^yWMGQ>!!Qc zS4rm8WBXbl8imUA=I#7sat=yq&1h+*JAlXGGmm787>Oqa5%zqtZ)ablTy80vPbTlO z-SaRF`I25<)>L75Ud)1vV2#|ZhM~}hk{~A!jQ$UCB1>4Gc%lw15y+!TbrE%~OWDz^ zsROV$n36c6pO=}Y+Kz-jqEvEVr1rG8geYCJ+WO$aq|dvPeRo=ETf}R58yA*4HJ~{s zyp5S#!{8p`>mq}IbB)UB0}dIJUL_m6N*vI0Hg(P&Sx>>tIcqT?E@mDzpe zH7fq-Bu$_M|DPFO`haS9w8d3wPZWzNfEBV^vS->mwq8aYM%is6<53oDZIpB{ayQhV zK@~{*;d;oL4&-Mu)G0ni(cKUx0MVGFK+2v*SRso9a;lV5(rlYu9Pq`8v%)u?W;hw! z0g<)q)qtilTgXU}DgV^@{soO5&T^XcQ)@!b>5o)g(rGWP@jt%ZPk=wx!qp}q-Lu!| zVzgKL3qqf36c3%O>^bneHvtQ*El-Qp1#&c;O`HIoC(5^41jE_Y21(laRkq<@-39WN z&Wq(K^`Dnm9tdcE1dkua5!(^${CV-G`eYarjtmt&_^o51)^^OLmD$W-@uDULC%LndJnZ8@gVuTuG0aB#JGS@-kg}KX+?70*?{#3nH5IhP(IRr-% ziieq9fQS+EoonKkU7u3nb-2FX7(_8n(9_cNpqO0p_t-V(ag?;FK0UR{VuJ3PD_z)y zV@1#J{fp?93;aZL;vJ^4LDeO_K%t@y!Sjag$zU-ju%p0NZ1e#E%9CUK=aFgLum`e& zATS6?HwX}X$moS1M;2A8gecB`*}1&YrCGw>+lSBIBN3zB#~ZP*iLBVl^mbtTrR*Cb zAQCXWP*F6q#`{cgq^z}NtBk)`^Wu@6kN98?l3pA}v8JT5RWnVwT$orD%nqx@;k_{! zlS<;G_iCL&d6%*S5B(+H)SwfMK+JN_e6;9(h2!P`*|%eV%w#wZqW#*1C_zU+FD5+hn!Qc&vM`4Ghts4 zyJ^5LIWOceIIe3?x0iVft~JoT(!-jp#mP+=6+<;;zM}j>x(-FXtKojD{6Me|K}mM+ zz9UfN-vN+`Oid$3(S=KL8Pl^j_0s;{s=K^E>ElL&8Yw|599j&tW@>-rGFt0l1iQwR zPR%$7u4y^&z|YLfOe66CTq}y&s>!hwQpgj96naB*|4a(U=wLLG?tHaJo!4*DMDmwa zJ?|QUZZM>gLf)*)r8S#XX=KUDT5{Rn5hhPL}GwFIu;4-ggF#*b;rGB}dupax)~8F6e2R z4*~Z9e%Tavv&oI_(9D;qwTyqa79`};2D7DON^YmQBnhCdX3hP^ec*D}YNPpZUnG#U z*gFR13`32-^@$>!`EAr0?Kd=>g1-NG7AtmAOdQlV{B8U4*6JrWi23G-KV&HAHpb|P z1I`!io@`e^{>s8Vei|-it?GE-J*MKYrtOCSCG!jSiQ%{WiJ<6Cuupdr6DdxfobjC0 ztrNorB|uDYi2W6Wks1Fp5;DMA(yz04t|9EBv^4LWj2UjjwN{*idmF+ZsX^}YA84Ad zpPt5%2_=DF@Z-0rG^22(L|J3NCJWUura^xVS6@bv-5%|x4nKa?`E#r0c)y1H_2d}2 z`}7Sk%vv?TJvJau5f#gLEks{o?quKJ-SWh;POpG`0IJ2_#g~q{EmM$wk=6 zNPBX`iNWEu2UnvH^XxPA83VZK%M19@^SiNgwv59rBFqggb{O)k_nCcXS`ij>5}QF#y?_C zSPxb%I*_mY(+VnuamcPUY8|JL z?Jo}(d6({!G@8dgfLt4KIr28#A18x-mhSHT=+gax@TGOUBYVl5NU~IeSicP*bU+>; zFZ=;yGo%D;d&Yk;`R6TH3h36|bx1dlnl*Fw*ZSSx77Jk_+Ek{KY3Yr}kWRUbb}~f` zgO)~BVk_Xhwp~W+A@{}9YU8y@Dk2{A8S93FBd%a0~Rc?`%M-m*v$-NSh zb`l^~Zy?CF@hJY`AR@>dN=W0k-*-RJMmM>+DY3o(y$~1Ub&3h?_#P*!jGyQVx;v@Y zGYomqifFd0L;kufgN`lGM>;bawJ_~n>t$axnQkWQHn!||Z{Jm}#dEpI#B~mgK?dIza46k*9)U zPytqx%&}u9^P+%qMvRzhq(9+Q-BG0m8NuR09IlsFfb$yvFj$CCV*WTMqzS$fVPtgU9L=%-N8I=Yvkw&O!pVxy zE!2?`12;V~$f(ki;Rva*AU325ITwP?uj^Ww>Ms0y<0F=BFl`XQBLT+;`Na!A8H#GX21hUK#xyq@fqp<}dqARN;~+rfKd)C2;Omt|F8k0KcO z|BnAT0i=5FJi5|iL*x4KhxZ$~7Lfo$L7DE=uYNkE<2`(tTBRJ3?~%fFs$6Qkk4B1D zKWK~S_{XfgEckGX0-MNNk+lm!(7 zoA0(ksXVL*_hQqlqP36t1h%+sbqGt?Yx)f-KL2d2F>?6&=mUfIN%?BrUC(?(ap}i&gasraaXBR-BqqBWg^GSMqE;a|232me3QW z1%3`)OduWSoUR4DB3z(*Q(_Sg$x1cYtQzxrevt0!0o3Q#L?h+tc6*q)kz;v^+jC)L zbg5>zOH@}r_1npz(z*c901{9KMYA=Vf4tNaFnD$Mp4732)6XNs|0-tK=kSy);-=s^ z75${$ijImHFYR4*R5_*!5Rbs9A33J7gHf^zvoA~cxKV$*oD$xpC)HrMx9flpal-9- zK*|kGM~@l`1!C+RD&&UtF1#SM*3|EoS%=hSpu#EPvY&iR4p82CGlXei#!sWk%Lw zcY2ZmfwK~Z`I@T^scR8t5139y{#YolQk^v(EOCuEb3>AD7x&U?;PR@DacptgYXiL~N}vplR-qUAz&i$wdGKf)(oH=6G5&1}9d!NpzSoS5 zCZ#1kQUCd-_WL%_R;?9id{%sbQ`ANL8y+K4>vmIF+C;kld^jeOjoLqF~?`ou(CgCnqsWD zHQ)2hLhDhz6GyRdDuaqC5uFK3-mu=&{t*%~-%{+*bpsB4H~UtuTgmz?-(JFR+NA}fuRfjiL6N0qpmvbFOig~5JCG`__Z$%!(|nRE zzVS@bzTEV(9F$+}rE%$+^*GucmHXfHYq-_>!O9{Dc zNh`E;liwPnj&RDPP|X~id<&#ojN6b#D6&tss(iQ6!7Ywc4q)r*ns}Ytg}uz%1PWzV zJJr_#E6N{!NJJ&)Jd>Q+druZr1iQ#hj4jhI=>LkvLKAa2&G7QD}^wIJ+J zPt_BCRe;jH00+F!i9Et6gWNV*Q*@02FkGrBZeX|%rBpLTK{jc;H>el)&!ASTA?zm}R zShSE|IBA;XpL2{MTqDKD*S~Hit}=Ge8{gSNA6?Dy;1^`FYcGwGpwJMVI4k^}P=2SU zZX=xat1r`@riJ2bERiyFj$op|5fb#}o54lQy@5ESu!%4j#VV*OQ{%ZC$0UgH5>tAS$$ls8)61G(yXrlDUI8{=EC)b|h z+~t?Gkh$O--wsb9wCUPNuP@ij z%}3t6gJ~MnGrYb!lt+^8Fg10^s`IU9FU?7w4-+eUM`49V(^E&l&9F`tw@T{@MFg+G z$*+*o)WWX5M$a7ZEvjwjg+dcBz%7dN2}#;WyVf-Fsj&wJ@kNtEPcm66Nk(;uH{5TpeG#L zFz58a&H3jByV%*BggL>sA+|X43ui7cjoAds$o}l^a{r;^frfI(vSEX1t5(GUFc@7= zQcF=FJVfA3G|;C!Bn$=|e`2GYn_Dbg#}Q|Vc8Z^s@DV)r$Q}g`OX2xK$u2n0P~o$y zpJg+qJ1Ke%++uj8^`CVE3tQQR6 zUvn}d1N6h6G`OS~q{WDSX(oYx`I);GjbrsFoDLq`E@-acwOT}cQ{H2A(jc8XRek8% zG~gPP8vO8AJO^lE1C6n=;02Wa=613ay?E6NjV3J;5-^5`vye(LrbkgXEWfc%M9I&= z*a$p07b%MLYQtm*CQqJqaP>qJKE7#9sapTD4j~aG`s4JVRKNX`j~lB`)!dqSYp z$01Z-&Si9@YcphlFOpaWg=bkv-v}}pSNghf*)qs!!+)c)sN5olWbyoL&Y?-EqQ0- zPQpKEFMCzsT5`}YB*8t2W;i@O9A$^zO@Ch7SNk0v0LTgr^H{SpaYgY%D zEfJYB=n2ah7gC5AlD)ZIryzxbwMp4(tz+0aDj%KIX4+59=>X$zEJ*utHud$TF~7_} zo6KS{P=I1-4xm`hmy9iG!FU`a@Ds+nkw0S;p3`eh9bN3&;cHMb8|7JIrO`3qUt@A7 zmJ3l)``gxb+rnH9w%S>_u*9ZZDmWPqO_BW2?ay6V- z=}eSRl2%zszTGF@{$O>puYM@MT2X;$HvP_OgH5wRG|`-Q>>Dz!X~7S>V^Q3$B*f+*Zs<6zp#1i^cze^~u_71KQWYZCMD?dyk!05%{ueb~MV>&X(sRyFMJ{?EIHD`}4i(swzT=%%87_DRVAe{%On8E?z+X?=;QUCVlsxoHMtV zBhy}#5v=!+!$_LPnnWH^={>llrU3$?sXOnBhAY&rk>~#9V)UL-v)b8l7hlggv*B6- z9V;k|XF52S3Yy_>Nu5%ersCxtGRh$yKGht|U4cxv8&|wi2{()pXcH$D$4+@cIntr+ zb_*xS(BU^4>dCReljXFq5$A0D(hq4QQ7f8b;Ue3tH||crJJda zJt~iSVwlRJCW+vx=YUGsQi#oVclGeWXhEEbjGQaEUlJ)G_R__on|+$=(SH6RF2YM{ zA4N1713W%4ips3;Eyi_m~lf;kHfedf;IhEV_0Z5+cBnY<39e{sApW8tn8{5 ze@IVHT+?ux4lR5rOSf!&2!RjobA$1S)|FBH1Y@1X0~4hv4%;=*16iypFVckgo-siP z7|8%&Ay0YTPvs_G(Dgtp{)Orw}%6 z^}HW819%S6p+OSnNU1H;_&1EsmE3MR>ZSeq;CEbAZ%^e=!>EnJ+y|37M%SscpH@rE zFz98vyaFX6G#o52pAv*b5N^AYW{t$>Az<)f;2%4sBCe#|8``FBN@nifsrez5LNL@^`>QMI@R~l#fs`%slzG1QvzDDz%TsV#34Bpt61#(o!k0(O0`PKX$7<>N7W~lEHKN z3?LF`7odY^fEZSKp=`NtjvySTN9%2tFvvl*zfF7x-wP);+^Rx+7K0=`ODL6r!FaE z^HjuU?CnDTwi?LhrSJgwcbuVz09~5|*i~*CH zhyXw#_}=rq`SwZ00J%KRi;i;YBDuooSvR7Z=$13!=0McF2jM%ir!7TIh$9zubON6 z_+(5t*c3J3SxIGNBz3q*W=->}$4b~8Z)t@_+K&Hf2Rg!U1V9161`e_yAp7>XQw6>c zxL4)ys8ckJ+(k7BxfeNjJ5Cam=Q(!1dP>&-&hydxD|;|7`heh&tRUVGjVfa1dJ50a zGTJngayD=sx5?4*CEpk zb=$V!CRT2L`Vmr`#l){8RA~C|Za@mw}BV zWxZD2A@bwumdZ%q+8~t*a)b=loH%Wb&MOqArkUBj-4&neMo&up0q%nY5zCZ2D;aJw zn{);E9-&u#;aReBD%ewP#G22La%>AZAEWiaL#bPv`syq!kA0+k1n^{~>0)Z#vU+EIMB-(0GhDkPM=IRNE=^M zOJ%>edZ6y`PV`u#?7@&xvFN<@V*b4&msOZR`@qD|}1nG*`{DpSIBYKWVBwLX8))N=REj6O_0{yhWgWFx+i}TF<0?nWtpNSsQ8nKs`;$C9{G9otJqW*FL{Pu zAj1Gn|G*&SEl7_S0T(g;d1P3)Sx@RR`V2d*k(C{n?nD9Q{O z7&k7o&;gsJ<=~&yCF%&$H|3JbaDgJ4cDHu~k26e=$c5_JuY*q;t+V@*PH~z!_RAof z+xyJc@f|;0M*pcyx`4dxU>kGi3-kcca+CGRg38b}lH|a?f#?S6v@u~t3*OJP`{eix zsy3@@v9!&PoGR^ipOBkMd%ry7X1dlhqq>xkZG-oUgj=zF1?r=tl56$3hww#Bq~;eM zt^}cCm-Fj!;o(txU!+N8N?eNkzGdzY7FI5{3ul;-n7&R8K4tei**NM6ix*s8+hr2w(Uj*47a+d| zf{D?Jr(u4QuUZjh=k6kzd z(^MQjzklfur}iopF$bH9FyORZbbUCujbF9i%z4gteOR8PKINEU_Qo3V_r`ldASWBD zmAVX<5#n1Qs%GhJFD(7ndAPPEy|No+yq7ZFNL|G#lHT~W3qEtm4n6c${r zLsP0D_#)LI#<<1!u9!ZLjCGM45X(U2asSPupZ;ipd*l_uY*z-`}re z*`zW}5G)V1hpttdG%@B?TuEqYJTRa)bIvCl9*W&1!;_dN8y&S2SH|ivuTWrl&&5OX z%O%+){+_vI1#zcfYM~Urn+9kW?$|1O^A%Bc&HgLWs^u){PC;B%Gga!)qH+_eoNQgU z1yucVb!d}Apdv+xq@2nPrJz6&4lF3XdHt3&t;m@zr>u_vg?oV6=cFv&)uQEzE%n~I z`C0B7lqI76lrl9{dGq5PS{=JFo9d$>swXS|1WF|dMY6eiHarL_0VTF4k>WBM_xlIH zVhJ<|;b!9I@|plopG#&FsypLaen5W4mjDvuJpr!I<*Q>w5EUCd@o;qjaA+AUlI?a? zkeNYj7VNxUK5H(Lo79E&StV3t*v5eWe;{(gndX)1GnF#;5fK#cM>n0ma(7zKHnIHC zmP2~^6tUvRX$R^#r8wwE9_CM&uHv&|xRy%l1OVc+75SzQRUbv$O}1_BT?8D#SX$_< zE{5%Barq;wMX;)c|7H<3_uaD4BCKz?;`oMGD8p3 zZYBl=T=AhWsI_AZUFc7xI*Q z_czHt;5geZ5J2s>;5uv>J%af_-CC}H8o8kbKFQxPx~*q6{;3^%eM_?bEF_fy806zB z%Zrw=`X2?Q&RCWm9S!6<0ua}LvB~kb&;Vtb-E=6dSkDJd^`mCQo#gvywSqL)n>W}l zHWd9V?>6bk2#GG&7JGdXW=b&wBtVuZCxGg46v$w~#wkwGzSWa#%Q4m`64j#=rqU1c z+NN*Bk z7Bk?9(gUFNPLtq!@Z(ZMqoCd!^5zuFv=~(WQ0``H$3+>EW+W&>`y+*sK+`ptQbHI{ zZpM2N$YO@F=}zE9d6nzE5V69xKX2zG$zX~cmRaxrAU~K%CTuli9h)bjXWEpEZbm@< zrD>3P^DW`lAe$jFnAo%?DG3NNuiA;Xy!-6%cj?j~GLp8KZ=`)J`s}nENnWnyJSB^M zCeEd)@@)kPynMWlC(t32HkSTJvC7Tl7gL;XN~uTYrAaEcf-v?@`0LA^D%O=V9AOC- zs8iBSs4jQx9R}}dXs(2RM>XNwjKa8xF&b8UC)29L;>8j#czL}m;p0Zgx{hMH;u$`} zPQfSlpMDn!Gjmvg)kuOWd*m7z(aao6K4H`L(X3Y_PE9xHU3WM^=9ijlmnd{C(yFhx zNdzHzFa>Y8S`ex0oZ*8J)mqI-;;!|IcVSApk}jTXWRVqt>opk-Xk48u>qt%QCSEt< z2x&UT1bd;jKfBv2Otd-~)+d`mhPeIkJrJ+kf7+=HEz458O87pfDXfc%kcspBcMT1{ zZ*U%<8v;cm<`^=n_}|u&<_H1iN%qZk)JWo;KYn|`4<*sgi&Frp58LEzj0(Sq!T_Ab zp*~aFT-u+5N%h*7rrgMRW@fRi&;~PS8(<)b?Q5xuX6?emLQeXwa3V@$-LB!Fc_Hv% zcUisLq(`jx(R6eXA;kM2xlGX#JhfTRwZ*2pPW~hfWz*ZDthj^EswH@*XkU2sqaWqvdFBC>9rQ1~6nAbN zbs6g-=oi^vS>7~h07cNMC8^3Jn&G8vVxU0DV`z|{cirfN3q9{+pLTiks#qa4qQ!WIIpSqt`ZX_Xg#8wXkG7fI2h_h~eo&ayq9_?%rb2uk z@H#j3=~31pP>h{JaN5zWJ|^t{r+N)Wmw$O-1+AZTAvh4e;il4GOyhos11OVjBTzsl zYD$)7LS-NWOuMzvd)Xcp4}(`44{50)atd*KF`(mP1=o_cr?Q`=NXn$J$tacdjKtJB z)zRxEwd@W|6wTb9jw(Qe`uEA*2`TgU=@^mf43gPgEhDZKa^wucy}oDx8fI{c;Igb+ z=u>w2SYWMIU2m>|6W~P{DVAKa6Q$(4ono7`3*7=g*rTr9(oKpI%>s;FB2bMs`~8lJ z+`qY!Hi1TUmMRlvxPo7zzrc6rkk5huOdVJR$>?6fzO$Xe(~Lyu#Q=Des%S_hE1s-L z!~bK@UMrMs)BYc8NXKl7d_!0jp<@4GHeqJBw*Hn!fw`jRcQkTq6Y{KK}d^cVTNwN66HI z^P@W&V(?a|=Br9c}6u@6NS32dL z`t8HuNPfxFug9>ty!Xj!0o>q>%?$C8Te0YghIb9Z{rQzoCg zk6mT#)5Xp=iLM1V92iu^NQ;FIYISSMcq-?)@C1BPx&*xeMRcwm@D^r@+Kqc>U*W9% znQ`M}<|G1zoB6V@?c|q2mpGm1=BoRK-0ZMAxa4bA0g+jhNj_NTXh@A=!*JVVL1m6b zZNOecH; zKzB7xhUG~ef0%7d4!yt)gwbJx(0$;=uFb5#dU>$P5UReoJEd|cxx=e6Po(DXiU^9=Sjn9byPaCUs=%1Y-dCC``N@he8< z%6q-xvGHTwq@4{bi#4kf{AiWPA?d8V$Fvw5Ge1rb9U{f*k%@zaGG*Lpza-5L_=hAohR zyp2&jl;ev+99zfoYKera^)1KtSFNPz<3I%sA|8QV;gS)&44#S<{`Iqb;us53gPB4p-H!SQ&g2wc%l2$21e)9C@Co*i6VSgfg~$O<@q7Cr3bd!Cb^%*# zvCQhao9N7n3@~TwVd0#O*T+df8`+`OQ4rtF#Z=^@R|9*!vLAp~Bzcsotmh&s>lU^@ zW$i&9Vs2}`?6j`4Sdbw2MV{n(AYRJu3)$*T;KC-jzDXt+4&R*TmJ7@eSTewrcntoy zFp;p(@M;86p0`pLYdU`V-rbtlKP#JLFJcWT^q&SA%9?N>E7*_yw5tNA{D!cU6;3Q# z@=qQUm-oDfd%9{{JV^*0htSD*s=}+Je18nVlcsX*w;FjJThZ&H9kj-}`eB4VmD3f@ zwUR1()%SwMHsv+T(WIN78-T&CNf}tNNV5RofcBrWgal$n9eM;4k6`cS&z?LOndLk} z;Z;RbB>0;=0mU^o!aT$Z7ut(DfRq z&^fCRdXdKe(bX7VGe*h2B4tXydlG(laF%%Vkd0b8_uwF?Mv(Pu;nAVe zD_nJTTUm)+V-;^y98{>uqt3p-A1N-1^nBUVZrmizVPOHHb?H@VRt2Na(DtJunJ1JQ z+jp+0Q*D5yngCNktiLFY$ksE=r?IC-vX!h1m?~%CH^KY`@moXDa}oDZiZ59p8Kg${ zc3t*2BF3mc$6BzuHN>nK1b?>=LWrz^{oW^EQu`*dmsEG6B>;qKl+@wr-{a_3pq9e{ ze`V!^(Q5doQUzCevliSZh3p35F%=ExX|rJ9c%rT+m|C0egFo=!x0On z-_N|Si{{4$2KHU?=uGSPaCZ)2jF8SeAcQ-?h5jJ(BS}-$GL-aOa{-qIT!E1JZc9GWjBvV#ne7yv;R`jqkRtY;S%!xphRukk}_^rk;(&&tyx1Q;-4@SRN zc&>VWbbWX^a`tg=hKag9!DdV`wsi+=yU=xA?eNBS*-yIx1SAls(8K+R7CU6GXm!ODGLQ0oueO1hr_K>bz-=w zZ1;KUr_To$Gex%7CAlb&j)MPn0` zTor-=G(ThZ;yvqjUdhGiQ${s9%K*)h*9EM2+jeIHF}ktrB(Feb9=%3}Y2IP?@O9Pd z+mtBkbPEPpVIL{ysQHwdMoR`f!ROSouA}9})ou}k@Kad=Ipw2n62*ne3K6wpwgE~> zz24dt2eeG|k!Avtv2AE?)Zad5=im4T1(3dJak09MhRl;0xbT3@xa>HN%6CaQW$kt- zJ_-Z02cn6i{H|p%5YwZHP>;xc>qwfZKD*!yUEze#Pmq zqZKEz?+bXASVIZ>Yrm_vQW0#w1#0ihR-&@yMa<;<`<*0jGnwu+86W zOxY;BeSQ#xDg8ECbP*mW@J2~d+ATztc+y&62wzPe>qO8$!r)+ zRp>fsS6;qN*Fe{Wh|g<|b?BRF4aep4#uRtF0FcO7wzUh`=G_9I5YL(l5IWUb4x2*?{Ky&ndTLl5kY@2p8Q z`;F1f4LuE@J(q4=?vvrjZwEFOQN#QQ^dY6!V`i1({RA28H)7%5w@UL|E55fc7iQ9E zEIm6P>7Wm;MtW`-3@74b4O-n~4+AN;ICV?uDAI=5 zTgmy2n>jO{ETs~OAoAwvP`oix^@y{54?}UPU&>oMWqEqU_oQ9koCYwH7RMK8Pfg>? zW+Fu9Y@2*}(Tvzw8+}6k!x!Mv{UfamLFLb{rj=awu33VQ`}sGp=xj9*HLqg9>7XFj zfjm}8w8)6;nm>~s`^tJhIs~cGVXZVEZ(}b@Cb_m@rtRLxLs#&e-g3YZ_|ZUa-C~JR zfgnR#ngkGqY_210{y|?v!&${lsR;7X2*eFz&;^FMO}EaR{}{q9tm^U>Q!WFS>5_}y z;=O_|jd<&RB*;>{dFsLaayFH@H%oPE+*f>TF{zL`N>2lYP{8C5;YikJSU;Q|RKOd! zZE&xwGpcTYGRh^t(d;DRaP}xyh#V=Q&n;PWaeGiaBUp<*JL9R^nXuUdw_Qb4%6E50 zePED${muM9r#i{QA{Vo+Y*^L44A2qb;Ud{V)>nb>x|;+_Wh9$F(aY>teLpUQIdj+* zPKwK;_~&KXpkUP1t?nhJ$yD-XVN>eKbqX8V{DjYIw8jLb-uu>)clPZ5gqlQXP;a>O z+wH!`b3C?@Pi9FGQGXJ@%mfFIl<_Idq$K=uqycuKGc1o$h9%xtRGHgsSFkn|}1 zniw4gcuHpgpCy@Qj3vN5RwF9@inkpshP?WogEAbhASHB7%p1lm9i#^`?qlOzBia2||&l~>+(?MqfWooD4FRxjS>t=J< z9;W~FgEc|u;#HT%!Nx7yh;Xcmebma^cip;j$J2{t=?BB(GEh-SlHga$_JzC~d$l;Z0))xayp4%^qc)+4HxxBY~>K;)*Gv^967~!O7!0+qj zpAd$(bZbVkBOxRvEh>|bKIC`x-_GiB$JM)X6f0O_kvNo3p;t$Cvq{%~m z>7{qehkec9SVj}8J0(`%S9x{Go6CH&KuAgxsprWUm0lql{Flh9eO>{?Qo7$-KpxInA`1gCuZU76)HP5?B(T&7EORfpM$K$K5U5M@*0m~x%janpl7{ItAg+7 zPR@Fft-0@TE?rni_B=mU-~Fk(-7>XIf%Tw05g_^`yWx5_;C6{ct8(oBk~s$BN?2&~ z8A{ZA{;3sJJFHURWhJ$8R%|U#d^ahI_zhz&9lfIAxh;nc%k+s4!tD;Dqy`p7qGq-z z=721z%}Xzd;9L{{FCd(5tlL?7^c|Nu7mtk(+gi0RO(^XZ2rZJ;2AXr7cc;?aSxeph zd*4sgHl-)}+s5Cm{{({0C*Na)}1~G*->Y)ZM|*IK8+~p}QF$zf;+_3P54WEyO(2G}yi-AH3Ufi? zG#9aCNKVII&GI)mxRAcF)1|mUG&ie7v#k=3{RCPrV4N}tG>{87?d_YDe$csL=G!bs zG2UWOR@Piyzpl#HHzz|8_}=J7p=A)sK2vFlZn{%c0Se06q9cHlehHi>l7Q8j;|?UD z460X!4q23upQGR^(2tr1_U{&B?f#(s#SS}kxyUrnbuAf}7btTn)4+Xw;UP5p9Pt{V z!`Q9>1|uTk5T|t95ae*xGw9q^9RI3@(lD(rP$e=vn4fmy>dKE{Q*SWeLeX(AHXkaN zz-p-wF@YF^@F#<|m_tXJZjfhSTd714pPB!QK2bK&Y*lh#X@Fv@o;D0|tW7OvJSOP9 zSb3nc5k@!>yMXYAOz6A=4lslN$^A1iD`P(gx2nC&$P|^YSjyDbu&mz*4f6P}0OxsB z&3N-ZINpfM>w#4Jj6MsZ&07umAqieLfGajURGW$uCms#SM`AgOqJWiDzSj|d;4dJh zXTh>Rg{?vx$tC*I8C!0xeC+I6E62W$q#0f0ZH^~s3DU!}o1v~|C~IJN!d4VJDfy%9 z#5n?}_@Z_`!|zZmElfZo+}td*?T>PHFgcxT3SRPn|03&x^%1Q~o5_A6{Y(VsKvr+A z_*LfHjzRNo&PCf+|Al6rQZG0{vS-SPndbOnQ06% zmt$iCg^^ud1~L95l-8d3fzzWxZY-II8^P=RO} zM9Sfr>^9%Wqqb_9N>Pr7dP_DnLWhHJ;zw8V@|?P~OGnJ9xwV2S3j3E|h9`J;zS(vl z5N*+8u(%7c!Q{|Tly;ALm?WlJCm|6*h94&aGV(GwgBt}yMNXo{R0mzYnO*^w&y4WI zF}M;+V;}S|p=ULi-@0y`)#9V-6p-lE7JHrEMPNCq%WV<9Jcf^*_4H}oVjMNltfi;w zWn``>s^BUD*F<_^ueB+#w!^}0ybD%ddQj3LpsV*uR;m7-g?K%r+qndQa#yHGFFTw6 zhy7N-mS9CD3Bgam_y{DIZ0D6waX5l#ZFyD#=+Bi50x(ac@G@5^9NlWZ9Hhffqg{_; z#yuG0G1B&Zde~=I_a&6%rt%G6R?)|fhAplv%aervSMosX;Y(h|Tq-sGn=dOKs%9)} z1qK`;shJUki=QEfBLygYBkm=Xvj!ISdc6_YA`^qYk1RMtVw+H+XXKipkyyIOcT(kB z{e{RU8dX7Hghpq}?wI!Zg-NYMqc}{z{tD&Fbz$fehq#CPH;aO8DVj&Zx%_3-q2vZ4 zkw5Ml1#^|D7gqz~<|(6oig6wT><8v2Uh{l;?yuBboYLuUXTH9Ojleg!`1W-gWmvw8<+KVWe!F~SXN&O5XLht=A zM|Qu=TMJ0&|Ix$=oW5Ad_jc6WTd^%W+cv3|$*MSbP6aL7r(k07PKh2>$04hu|B~Z1 z&-wP!^Zn{AQRq;RE>SN^?o^*|Z^6J{@NO+ipXIECqR*F0rs(V_+x@;NmkH5wrs%I= zrU{CA1;kP&i-V#~{z)Z|Tj0Y#msA!+d97@ScWhG&npn|Y6wnS6lNezUdh%8l&|~Sk z`TN=L2Lt;!8~BxbdQ*7Ovc53!ag(S>G$oy|Xz4lW)QX=I4Y4#`zuR@O%FE%^dS5E` z<2TM=1o{mDv|-9wr+ed-YX8zSN+3r)Z^HakvP1n+H~^2gG>7w~#w%kF@Qb3C`d13lYDvF(Np3go>G4t$e#RcX>K78dL#;X6>ZB761KqZ!4pu z%0yw`lkn-iqGVwSFk0)$<;!vxsYeLTtNk6~a9xtncT{t(X^|~F@7#B(6Tz=M>?x^3 zU)fpCXePof6q0-Yy<*w7UO+Ge(ozGkNZ~ZQ`?Dl;9-KzdLm0elXjng6mO%tSGaamP zVpQkcQuBlgtq77&zg$qA9!iUVB^pr@yO&G9v-}7*e-MmzyuU}2Wl(2_&?o?Y&!XU#l`%g zcxyMc@{gLi6F%ynq=6(FR6I}2Q)CI>B4HA_5pMuQxbS0YaYCry4%vjH7ZKOPjpvxc z?e39$$_L@nxGLdZXyTeng|c;H{~Q*mNk3Q$Ch#^(R3wFH`^i(r17LcmIP2!g2WGuQ zUi=M(pkm$7OWjV_t1Bf7UvIkGq_;yvcIKl4F|{lNfcgi(Wly$P2ngpw_ z--ut-?}2{T!~FganMxuK_m)HV|00yejKP2u(6qYVNgCjqeqRUC7vDdcRZhY;5O+h4 z#Ida^i(&P0yZO(SS#+~icwbmCF}6=c`_{t`$r-y<1R>VfxXTP(?4h`BA^FpVy&H-p z7IA!{e%@`|O}KTAd49F*;ZjvjDA;H$lEw-GsL%9tY%XIj@LBH;>mUlS=qG=ar^#Na zj)i<3ki1(Uz{w8$DuF|9DfS)&6N+`fp{DG7FEI{!Mad1N3Y z=xZ+r4=!_2-cwCuAl+vj-&bVvt5RfYc+kW%$~6f@>Xgl``?=nqAbV_-GDT_PNH==N zEO&BX^?aI z@z>_A{z#d#H-&!%-;FgVm^#Um3lAXlg>n&30^VBD@{q{wF?Fg!U2F)%a@!9c*D>jN zN?F*a1qsLcHm^s#DLH=f{N}Z^aOPW@2_w-gma*vtW#A-rDYR~woMN;OiX}xUj8FjKR0H!nuKWryD@@@vs{wnLQqJ7MJy zI`>N>`XV02HzW9?Hk&}nhO=|@IySY>^Qqfa@*UL6P$?w$$H0lOs2Ch=mVdI1* zIn;lK(8bVZ`J?!V=8~t<)1_!1i8PZ^MY01KIct5s6R4B!v9KQ1pM#Z&A8>^lW;2va zcoALU)YI@t&DOM3Kkyia^zM}WG6zDIGM@H;U*xrP0v$S*hz!|*bKUvwSoPmo$Tue=WbB(fJ?`IA+dTr!+_S{pc9I^*vSrcgEdw%jI_g0Yu?#!hQ0^U>ERTl7sFrzKfpEF-;NDwpS)`4yWG16s8OL z1Arp6ekcQZP0_U#BS&(V8Rq!E_4<;OOZv(HIC+!MT7K&`ZpFzoVF=SM z;X=>NLlbx!r2_s#w{aY2kApe0%57P=Y|!`7&ISE#;r0W)iXRv|+R+nBG2r%(c?ktA z;#6k-FY|ILM97|jkqtcDS+(6g_94F))Ox@?qW3Q5C5e2pt$5yqP&y=-Ob@*R)v+P| zuCs33`vhM@!t=%whN9!Fq-OSl5UdeA8d@nCozmF9@83zgDie%^*=&eot6Hoj&8BPtk$nF_KQWXo3iAp0utt3lvof~vRMpf^n z&GOnVqD+b3lmRZ~)%rv971+hJiS-Z+hqgFA*WV-+Xy8!6afZW7_rJ)y;|YwO9VtXye_rw_tRUl3)6+`g!lDEi`hB#mEg zMP%HL^?_XH*Lg#dUUs;Xgi2!D+&#)_^7{g^yUPglOv+yX2_2;`?Yam%W#PJ<|M|D%b#EV0@}~aNlV53LNBnuxxG&7eJ|Q==Q}p(wrs@3<`-NRnIYk z^Q^yTLAE{rg^#`gvd@6Aqa>R5no%iBF0Qzbe>3)i#ZN$&e79mO4*FVg3|N+Y zI~MMGnF@sje5V3iigaroI+M(EGI+`DY4?_N;R*DZ*(L*!2muYp!~511dETiXy|qip zuQhf@8-uH8F9GWT(&%MJ|H3|GRI0RdQ0NILdK5L-XSsso24uDP`hbqs945C?Xk&dZ zGv#>4=GI)EyaY?WnFaTAD~6tS!+-mY>6|I&-4F!%{Oppz=mpy0jlg!SovPf?8|t_b z)}BRQE4yGuAT)!R(wz)V?XJK?e602uf<*UP01>Dl23gui$nyAi5Ht+{tSt`WQlyoI zAI7vQQ5vbSh@WiqA+!9bmdyj+w3MrP~|iocU2a{=0QBE&%%FEd0WwLBNSDNU-UZmdWaRUG}Ai9`AX2Kghv z?aJEZdBtHWB>VoF6~#MKT%*7ibb{H|nwiB6|h9%o0nOQCs%Zsb# z9Ce%Qsw)&Lyz#IvkshG-`Pv-H&3wpLyLU@L&{(r3qzGw5`5*5p0ee4P9%ESv%2q6) z+8SuW{H5A;V)ZuMRsxY}iLg?pn4p9uUK5m0ar8mNF(%DB)wKH2*a_RqpR1oLKm9}i zZ$0j{i*|72LuA^QOZPy4m7qo&n)a$@hU3fV)iEqVFBhK;F6aG^aq+>^_|U~Tvycz5 zlZ=!Om|?^uBuT1tlRd?V5SJ|xE#a^~(yj!?#`;18>2TA=*lmOLVl*&!tz)e*3#MV{ z)T!9o=tSYbKTe*?hk!7jDvVM~h&@9YG?oTeD;)~j9BU{#4W{z#W8ArE?5*j%L*xXz zA;;lU58*4Z6u0CibRnxkB-MNhi9_4F)u6A!4NjQ$NH7xi&-$I@EqW4bBC{Z!a9uzm zY0A7cq*9`jPyV774G2KNI=Yzai}4)d-td@OYwIj{Lix?sU&^x!2yumyp_YE?$#RUd zD8ffFqM-uCV*4`}vn&AMM=@Rly4rub-sLZRAIC23@fe8Wn`eT@u%Pd=l6KyLK-t=ldE#cx#IB7}OUgcc0|~ipUWhzpVPcFD&?@}dqtWubVYOl$yIHBC z7KrZmeB$IOuIew>$0BfBS8+tpB#4`d1Zy^O3*n+kT0Y&CQ-TH$hfBh>ee3p@X!dTf(Plnw7% z^z&up>iKg8iHol3iMPtK(EqK(yO{9Zff|VgQ_kb+Li75nkEblv7Hc+o13*c-ZQ?On zn*m((e78z03e<$DV1U$Ecm4mV10!i5$m3mT9pcnbowKqxhtmq_S90=ysIV-q%T<%$8lpapibHLTh0kFPrvAt+beJ(yBIx;?)m-KM%2+U z`mlmgaLPz^5csb+#fZ!O%}J#)*oiJh!4!R$Vc;}bOHl#NT)Bfq zPDRO=J2k3<>E!dYZyfp|}PY#)k#1Yb*r~+5ZcW3~1W_K|PPXi4nZr@4Hw^v9g2-4M~QD}wd zGWeVry?mWczq$yw=LZMoZqh13WHnQ0phny^)B`s(|uxVGrIw=APWG0s5u{_F=rg?X(M*<3Vgcpz1AVj-d%3qhAKg zgB)K2#W+!HmtkD77eaCE>Xn6))_s%xw<>*zw@MoSOa60a zb&BOQK4(>K@M_|#xXY1*n2Nof94Jr$p&=d1f8F*SI7<2z@zfo9T~zM^+w}SzDW{UH zao?{qfX$8tp!JzBY*6*;vqVCpQb;;dgjvzW<(94o#muw6iSDOMXYgL7rZA2we1?UD zyX(_2IUWW#DiiEWN>6>;Hw%CErPA%-a0B>=$ zoH1WV&dYb<(W15}Lg_Tw$&3SoVZgXy#euQ6k%pZAeNC{i`jIpg+9WsN1Au>3EDAO2 zNK`WM<8qy%s!=?UK7%xx^6NWl2FaT#qgDFls)b>I#djOHtuXs$Ud~8$L)UrFW(z#5w*3DG7h0V&?utPz(=gM}g z3wP{0RYXBFy-}FAB(DqwQs2~{?1@X!3LqkIR==^nvP{UE%#Y7e!_<5hUbpOpJ zq}15w^lFyy+CD#tC}8s{IFa5GP@Q3EsA;_0=~pEIbn(UjYvpq)4A#p#{OA0MZub9b zW^>48=fkS)z#=yh6<5gf-!QybbW(iwndSw zytd|7>p-2dGczr`34cy}iL8A>xy?r4a~d1smKv2Zx!~D~E@=D3N3?wN*3psdkCoXe zmJH%Wt0(J{{#+f$WH-kb{E2u@otxM$U@zFdfQrA=?HsRSidk75NDeZQZ?*SXk5eqB z3=+^+s+aN7jhfFGU_3Ey8#j|E3(;$J6ax1Wj83S#46sf-npf0Lnf+Q0lyp}ps& z#Mh@Cyo{*IFdl~%Yf)#P4U|?gl7mf0urrc0%jn%Jm41M+((~06_sPl-E^Ul^MO3#$ zFO4wIk`w!yXI@xWlh+Iw_VB9RgA5?<8lWFL3MOF<7DEA0kLO-bo;%mzPPk?FEU^Lm zF-!>h#rJ`t5UnmEJh~mQJJ?C`?%7x~r18>lU2yx9+r)f03#=^jMU3td4lBVkcRH~|U!qC@zI*MUh(z!WDK|+* z2rlveFRo;SP#|h z!GtTqn>@&Pm!Xw18_Hd1t}-hm0UKT%PptE|8nIw1yV1Ozz2_i=0@AstCGAkgtR37Y z2~Jmw9NdQZP~Ymny;b-S7iLRXxDY17sCXh=&y(XT%n?nYj;l)o+^bi*L=dcud;pWC zuP7!t2U%uQp9(bEC0x;niS+7w2%4{KFQu~?iKDw{h`!++)lFtI)9K-FLApo)a zeQdqJU9tP&1Dbm6_M63;?o7!B?cUO@j!)0K7~TT>RH;z-P~I#AlL(@zbaP=U&9Tx3 zj4N*jQ$pK~>pugTaF;tocC2-{g%kAb%F5K&5loGmzq;0g-bi@N10h^!j1OD>9`7jy zwvh`g=-TK5OEk#t?nFo4btBP6q^NuOsR|1~y_kiw_7_aHoZbjlgZjJ&4o%ZMWW^nC zAu^%ZU0cYG2u)!F5=b+*dWA$Yn3YH^NuVlXyzSuG$P)UgVU@AecR@VaN+be+9qf|Z zf3Lq{0JI7&o=SReAsN5V->ZwUa?KgWkO*wnj+K&0XIYcQ2|E&(Te*DWKE^hS@jxN? zAmYu{rRJhhXYjLh-F!R*UE0tO5KoObf;WLXi9K4wrZ`W4cI)R6sc{GSQzs6K=qf8U zQk=jvziuDk6Xl?u7yjzIR~_3t5cc+iGqpw86xuTU?vOQjk)dh9@S5qc$s}><`3Rr3 z>HD0$jN9jcomVP6-Zul2q$Wu53G{}&13_|lhAv;sj5rqR(Ei1^I|wual8{geVdHrC z`u<;c&o*>Ry%5dWJ1cjDQu;R)k^b!zpoi%vQ)!kJRedtDz+=x{R>xITg1A1A)ug_i z>M)I$47H~Noez52-9yw|>k@aBjx_A2>UJW1^M#^fUXYK+Gq9GdeXECGteg)Ij8_R@ z9I;((u{r202V5f7@MNszSy+>HltoJ)T}QU)X7zi|Ef~UKF7I3k6l(;=A(7>fs@R9g=hgrS$~Pe!D41mD7!P(?Ao7?0P=8a{v_m187kQKo5i^LsYcq`^iji=JC3&@PXu)ES1zsb-}%h zA+C$Z0fVzkJZ^RamS*=7xFhbhT*S-EPt-|nm!DIk&FMh#mk?6ZwO?Yz1c*=W2D@OM8<-v6v}GysXMOBzi+CFFgv zKQ7OD*8w;cIF)z<6~+2hW= zY>a@|3xEi`4hVG?PWztQUnL64iBbyCC_^))ME|F~`o`$?Hk;bEQWE7CrNfj1WZ_=U z)mrnAV!LN9V8HU}M75n*2YBJl9qM>hDVHr27Xk4Y zsbELA%KbhBU=bE!3z-xbK$c-c0?bZZbnm{uw0A6#s9Q8g0Le~Lddvx&$L{iHNGJV+ zJ{Aak(d*vB_J=%1O^NhFzf36I34hCQHyTec7`5d}*4Sg^+Fnu;w-x;9u;yO2Q(GQt z@o*C5b?U)CuydsyCOSAQOXH+I55rOVIHji(?T<_r5%O_y%&d#UeO}xnb0=kg$~#8c zW7K%AD?W4Hu9yH4ad-h(kH$Wc9{I%^&6X6AU;JCX|Ioy!*xy|3b=&pE6;F|Xg{0@wBKikUbB*K0J zCrt6eJ?0f1t52Ne(?(&Le-vY6r7kuHh^Pdpd9J`Y=jpX&`5*stq-dlt4(hUSEk=?q z)_;=8o~S)mlzvVj0X`4;XvV?)JyZE~g5J`wQe1gxDF;&)X1PdxllYx7%n?BVA6!)% z->>&aBdikS?ZUe{*nq0kQf?Dz;;x)L<|io;J-=;b*gpcO8~%U$aI8zp zQdF-`sh6d0JV2^bH4ef~xlHY~GmM=9*_SD!@c-<-j(c80h2ukI+J5B9Cv89MqfSgF z8k*PL53E-VE9c~8PFHu7s3RDf@aKaY?SvT5?nL|kk_re59LX!xe9#m3;98l zo|R25QgGcjiqy+SGb9hiI1}`edd>T+Ri#cl6ekslU!J;ncF&^qA<1=F4b~?2xihGI zf+b~>^bCy8s=X#=?fY8i)n$T$YX@VV6V~Q!eB|mM%<@v~ zv9r1CY6p6Y%qQ}**F>%SNpSxJ$vj>BxPSYImeS&5$C9O8w%e!zz;BeE0LN`La~s{! z^+-G9|856rSjV1g0#)=|23M(B>GfkK=w|M| zfCZ_)=X3OK<|R?$qcVG-qxq-7n*(K?k7JJNF}WV)8e%zxbBZE$jQvGQ>`p5bbk-Tw zJeRdg?Lfz%oe9ID@4cIgvO-B}HX#y*n9Nf&N`oAXDSDc38@LuSG8|bLN`3QhUw=?H z^W(<|SJtW3!k;$zf~YpGIs7`lmEEn^rDUMPDIrd>EX&6KGK2UcaY*m9YcBd3W#+>~ z;d<$>*VSm#G&WQPNg)4Z)QO&e`RlFcBckmdIv)sV2^z_ZGhT_k?aW|82n&xmy6l!H zG)_G|kjFu8pX35Cx2W-}K9aB=KY)`d;&%ltU7WUkL2cy_8TQl&y3X(gpYCX5&{qcr z@9bNieQ_QviR^?*r9(rnolxV}j)Rl@HE`zR=K6K&)${)!RBaE}UF#*I&Nmgnn0`%i zGxk@JX}{93tD&6-4aw=QY4zR+K$7eeBff0x?)p|lS5{>N8OdY=*!57B1W)5b@c3~+d_V~ZU|9h1?OE(k+s$YO4P$* zG-iNw6QwXwJt95)x6DibBr_ifG=twDnqjCw;%1UV^PxE{yfCpyf{JJ6AB^hdNwsE9 z6n1gEm;lSx6nVbw>B5G13hC1& z(U@Trf)4a=J%qi3Wa}(^p4MTU1m!AH+RdO*Oz^Q7+xFOe7Qks?VH^xDnp!m+VX_EC zK}Bmc-Q-D=LDkyd8dTNMecT6QjJMsbQE`fh{fkcVaMVZq$D$>HsrMFZGw*Uzpp%l* z5*}`g?u&fBs6NJj4ZQ^fB*sGj5r-EwP!>1V3vvIKq^}UnzG{f{+OQ)gLxk>`P+uiZ za%+E2;<{6xFRR~Gx3bp06r8$|l&ah!yvj@Yw!6d=&vrNlH1zr1dJdxJ&Kq#pxt2|*@F%T-15{J$;%X-1%!wtrf zMDv+xZGv7~M}B7*C*AA6kkN0-EvO7YYiAuQU@19U|5ky>t1%F)_O^X@vPcw$0`W!r zvbpwiGKqqIe&?UjK%* zmbG6MvXaL#{{tF5Oh;8!&VgnS`(6thj4^IS#iV`5M?(}T2gT9ZDa5O_Ig?zb9~|s( z!b1+0t-fl^7rs_`S?23mumrY7ZTACjjF>Z2MF@ISo^oozEd%j}B3P|F!)(-}W5tH` zvW~zL8TmQZx&9$|jpnOK ze)#-q>6y7NtJXRobOdxzN4qg z2yHQ(HM7ODo{w(;3Q8V&lnS&XYH*^1qDQ_^$3afE~V>H}SEXZTp_i=_O~5)nur}ox(N?0!oyx>S zLr#cCPTqk&wziw#fcZAJ{m0V3tRB>6?@4>mPD%y3+CdK%uYa|(1zqqzcu;OpMbVoj z;}UpGe(kP2pD6l^dz^sYm#2ias@MV&8ocPE#-h({Eu)yTwiA!U>CO;Y9V9oD1XOXRn#vGEq^;qCE!q% z&4(%}Kk{4PJ%o<|+Wxse)R<7n);T^@nZ(%7EeDD%{0Ul8_}UY0YoJr*h}e&B2B?RQ zt(p;m$Y@{m>+ev-wLF(*`Op38jPAiMy5a#(cesg9oojy9F`PXb^m+6}n9z@fv1W+% zwDf=aZa5_8Th31^GJ8aLvzDlJOdc@ij7jb_&Z!F}rH88TcIW*A(Q+koS>0%BUp1%3 zLT+)0^4wkn5h|*kG$IItD2cl8vHET1f6%&S2n_jD1}xOH?xda&;6*W=X&Bfnmr}9!4u}rD7Bya!=6)&wx~d z=@l?huOC=Ss+Jn@m6o}(5Kzis2*-|QVHl^84-{kZPrHZ~gCksuc{nc%=wb|y@iH=Z z9i`j5)(DsHgwRtR_oA;cX(hK1B8qW7=Ut?aEB#LTuMJnbTAnw%Qr%K zldr})p(8ofP~h;eM9$A_QDEz!v~iaTUZ$*j4|3~YCx1KIhoCsur*yNuioxgjgxXCf zLw_ww_gEZ=1i)uk|%zU4SnKO(R@)P|0v%c=y|6uNk&Jb8NyV`bc?Q1QU&tf1Au z7tMpe6;_NhwysKpZJ|Mu2s@REFl&Eg#_nBtF27KvA8_JeoJGH+d9zZ+}p5!8S< z-c2M#)Gn49eh9OBkvuqE-T1?d4u@K|K!zq;B{rD?sN{7u-=ytuth$>PelwubT#GI} zI&bF7q=hEr;nck5#M4k&2p2*{t7gl(ZUr3NRMP0V*JEhTZY5;oVLxv2Y#W|dsFLVu zzEZozAhx?g799dVASr6j!yBAFk|hTAcpFg>nrF_ii%KRR>}O6%bwJ4SFE#&hJ{f`qVuG={Ay zq}})zeb}BfMgiazP>-fjSY=BUu!<)rJyM;tuECGaT9;erAm3CD&g;-sr$j0B)S7$) zA-i7O>A5?6@D4%yY{}sQM2WY5jwDe@hH?{^!>M8q8bbn32gC~ z5U@S;D?iWkWOZHqL=jv=-&6FfSw@7=&uhyC357FR(yn4D8^Uw+?8%I-5@5D#xtUIM zKU3+Eg4J;_ssFr|`|~XKyg>0+=-dsSo>CZoP^6--2x(^|L>-X_`topCVQTIFuRT zVUqyi8DyxS@8-p1DH>brd9b?FRAlA*c4c-#1>t6S?x$Q40VDkuI0T|gK?lf_owPSd zpHl?(~!G*Um^{w7~!z!uA zC3Kd0tyA!;9k%W!sYcn(RKA`c$Uq?Fq2;Jab3Ra+GM7@^kgt72`DO2>!i@#6qngI* zLmn0rODhn1?NqV;EMs*BVUAu%0nD1zU&Wis$3PFf#-Yd{v$+fwRZPiQBk@@3#Af#> zPNKV}#c2CFd&|fBR?k3Ub5f~)cys>%r|CF?GK%0?{hyUpH3|=j9RB7Aj$1(-A?;_Y zpwmGtI?*E~oqf^Km!r#V$*?dUmbCO60Sfv*K;aUW9GGm3o3BkE{Y+z~GsVEHyuA}O}7q)+2_hPk>Qi`7m~5(&oH#K;P(3GinfV|36%hZ z{8e|)Y5vu`I;#MphL(D1aDByGl1ZPaFSGTPGT&H}tK1rr(v_4oj)%{g9R|ip6KPkk z{>46krd*IsERt-uoh-|~-&w>G)7Eg&ia5T{eoPRlkBLxYrPE&M8KJdFleCybizV)d z~VtlxVRv!5?D$UqS+>Ne;e@HQ0(IM)G-_9@ zLES&QT@J6NsK>p*v!jlZ)d&U-v5&+A4S8oyH@`6wXW$^fYKD|T3BMwbY*|SdqZLGtDSx2{; z37qiH-mziJX?F17^JS;cWQ%55vtVC;CqY$!mF8*h?s))0q59vHgGDzs=dMb51>W%+ zgFIh*PrnJ5XZ{tUN~ZG=@n(2G(<&7_i!IlFa`mvFor=H|xeRYq@+iLUeDrz#N&=FsC?E)6z5`_x zCE6WmIDa5|a=!JbDFL{(4Bkmjl=!?f5He8ji_fJOo8B;48m`D536goX#SV5jLMOb4 zSh%)*jg9QqReBBkmAiO(S=8j>K6xtd+NPKgh^IO`h)ZpkGcrlRq3#rU6&Fs?6O=Un zh91!1_n!qJkx~_ke!rO7yF`f(yu@A$wn~4R=Yp&w%O$tt4`cBY{;X4hZ!DOE8dLqn zk{{q)w(LNSur&O$Ty&*=&h;r}4(tN`A)me=FO=G$iYpdG`5=UoS#P3P% z0-LszV$}S;m}AAhaB3*$X|FeX<)Q%hT4YlhlAjZ)l!kzPv zdvEz$W1+Q8fb;I?S-w=iDx{r}k$fqo-fo*2ou3xRdv5Cr*G;HGc+s(kn?Ao??oUOr zDU?FwsLBW;dFO)0V+o-vur4IWNzCN(FZ49`tstRT?ZnA_^*1tTr~NzLLhO3yX>q?t z*Ox9tzkHbjtE=GUMsGNvwD?Jf=5S|k)(F3x$|3LBfzEYc42^=ne54#D}tOX;TnIuZ3{@ zbho6sGi`4uEIr%dR4k^=j|HXkIJ+E2ovySfzk8gK4~u!zwP8EqODa9R6i@w(Z(u8c z2kn3PEv(`?kjVIJ4*F#&y1JOnd%+Hy*3KUhFq;M-hlLs z5u8|uL==r7Xy=7BtoY2kG}jQ_THmK|802}TH=L6YnaZb#aU4t8j6fHY({K)@V;84+ ztge_traDUl1yF-#;{4z3Z7jefjWewdbL?Mfa+M}*2e)KO4d_L=yWLXE(=3MmM-HO- zV(wPn>6jzdiC<5(wNhvbikBr_o&YPp8()6&sw}Kjz$aharEUOeYtAfuXZx;KuqV?f zSqU^`zv+`T@xHo%P%`o`ey8QTpt#>Iz81xzvqhX*pFET2VEZdpb=EWC`b}(eh-2l+X4JF<`tNTA)AD{Mr?41~Kdu-i zWJsst;!&gudq$B>uMogg<6Pm-igKQ6w#Xe!Er$OHP+@Lx@l&On*8=j;PuT==(myBP zG)ffDx_=(;zT=B#a(9(XPvsi!PA>44`i^~6-RKoA;K+0OBVG%MWwyr-J; z^E9}nZR|lOC7^^*$xa8kGOR$78klJTQi^Iw<%L-QJk+;$n42}qAcXIDk3X3wJQ6YL zZ`mUb3vw!pb9i>^CugKpj!*sn1ZI*XWnzVH_|%cQBNTo^R`hRxm)05!B&2;y+nWw;?pCQDb!L&P%z>P~{C z_S_|vTj}I(?eIVW8(w{d7?vr-?B{Jxu3f>Tsb86I9P9N4xMJf*KgAQEqoWLx1m>wb z1j+8R?U-4WS-`erO`Xp^+ke!36=bJKO1lt)%ucb>J$-MI!|8nzqe~uv#YLo#Dv2is zc=X=oD00YwgEAeJQ_5eXw)@-6HHBGozu~N33xm@ux@`H5VPqE>Jv(`9!0oRpVz9mm zjh5D_ijM=ygu2G<$qb77po#XtLV4PdWo7`dp6*DoGOECAxfWAvwICWVSQMA_e zQ?DqV!P6z6;sB6!%aIhrqi-$no0{@&a+fHA@*kemOi?E?K5ly7YsD6=m65N;FpP;6QtMt$ieMr{eG zsHbhQrtUJLr8qA=r@7R%Cuwa+jAIJ~4h2m?iU8<_>r8EtYHq>J+E#Sjp=#!5!~=9F zpt62Mqe~v^=tWjw`1k&ADwV7OoZ*c~KS0_GVDO1~&nB2<7<|=|-IoM%AGfw*lP_5? zIO(VEeXA96wL~(f4{GK*mh8wmj8(GHo5{r;nUF$)xiMl5g}t5!bIX!cn(fW}=wue% zA*@8Ab1rt-{&=y!JV_c{n3)Ud>>6O;WUSa}RTm8&rn2RzrKiKnnMJ-uo;&5iKP`P_ z-LY*PQcd}9)^&8Ay!7AAo!ojB?suscE_;4)8ufFS%L^#Qj6iahp+h`9u0=ACPrI9R zP8IH5YNLMrGVNj{lVaaJUZi27#mq0-z0w%OhUruGl>uiC7ISeYRixSg45D~uKp|I_RW-k*`gy>HswrUpp65XF+as4^K`!q9sy z$h@kY9f9%%3Xf6QaOkW!c~&&6*cx8Sy~mpoM=f705?Y(%UatC-Uo_-H37gav)p^|N z9US9X#6v&wV-u`%{?czkETsWu8LdAve`v5QDc88CdTEjPtVktb3Bh4;oZE%1e%2KPTKio{6J5*P$49uc*0M_tXOhFhjJpouS%f~q}oQdgKE4>_@Fmq?meq{oqH^|&s{+w%yWC5YWoz0itGnNJZ zeU_sWbb8K#J!Du5MwNq+smO(LKxBdyxDz6f*LYps>4A1B?P zvENtuRpQ*|j&JEZ@7R)G3}PZ*m`j4Fur+9sH+e3r=|TV(5JP%{sdPgbmjf)l{ ziQdcS8W}edwndRu_0C0sIN2sgpRiH1?M&x09He*_#1@U6i+&ha>A zjXnB*Eq1lIlcVPQ4}^mv*6M$oAkr!{KIXHIO#a6ruBYY7xA2uW6#%{lSQQ+a>0o_(0P;|L8_4qJ9CFd}7)4&ld7s~Jfd z&DJZEs!gK0pGYL~ky4@j+uBm*X$Q+@(unnSgEoTvsPBEtTuN6NU5`_?Rn)%|2w zrnoY!F-(=l$MVib2hq^aszQW4I)0R?B}30F()^ zj%4;A;l95^s5UTXrhfpaH73#{nsP`2jh8*{n;>t(#hKq>|#Fj14+*KZ9fB|#*^rLeiBiCEfLW`rh=sQ6}J=-bVdrGEp zx~6c?wY&X$bb-Akyc$k4qRXEzXnP*I#Acw-kkTQ3Ig|c@4GgYy>2YY(oYZUM3 zdq!X4**%J(r?dsVxDRt!$*pX|&oQ-W8#T2S-_su+cscY=Kdyv8~dBcedyLK5BylEm= zPyE+J`UnZHQA4=)Mu2w@pFtICHg3<*t8YOz$Cq}>==QKzuLFV>j1ZB1;X=LtnHR*O zjK#wl1viFp{7d|gE~Mj2+?-7f48AFZ^f9&l$q|wc44sB;81Y$J5EnwHYAmiCb`Rdq zXd2~O7iRc~@@~@i2NBdt1g6koxw)}oCwW<_s3GB7u=1fwQaD3U=+HWe=8R9t-(|j- z^U@@~hW?8A&XyXY(To%Il=VnxZbm1g{%>^U-foNhSHlWiQ9!h|Ms%Y#%iMy^Q=T*^qzz%#A#<=!LiNZGy&0D8 zSO@isK3*6vO^IQwQhq6%<2zF~B(?mg>N=ch7JUd%meKs@O~xR#7A9~nrTohQ24%Gh zXB-hBQ+@Y_eEhqRxb3~P8;K>EBVd;(H{t}apF28r6J=hOEj{($$QX7yOYDRJ#(;v{ zgt`(?Rj@q|e9#_tZb3DF0Bs|iOo_r~b$gJ_RU|)>B~V~E^YgI3B#m60hV8-yW~MPV zd{O5xbvjqX6gVA58Fht|S0JKRIO|VLxx+>e6#WP;r6{~R(H5IDj=)YA7P3n;E9dP* z`o}6Lg8THtZ2_nk$x%Mu0yawaTu)?_vz&>YzM)-R(LpR1a&BHw2Lff+JY@;-hmh+Z z2&`>?V>O7w{wk}G$he_j6yU75`f_?Jj;8~OR;W)L76>{DI6k&eJ$ZFh?5kWQ-8X#n zYa&`=Bimduse}b8il+^DvBNhuN?1Nq5?}=5Qv>+#=WtlDRxiETvPnGa!g^r34Iwg) zOMvEnQq=@8NLF_ddT<+l_DGOKzIY8TYm=a$V3YAphOwvgQ1N97B2LulNGc|Nk2QLM(t%e!o&t@wU+ zy3@+gmti$-+qbEz7&~BZvCbLGa8!Aq^8M~}Oze6gD-AAp;%rz-E~r6~4qmk#1bOZL zuYY`Z=&nG%eOo}YA!JWs=Z)7LRjdTn$$%1^N>dx!GLsx=0;0=uI994Qq1R!e&kD&& z+bJ*%%z(+{lW+E&ZqKPV!Y4&Z4wpBGaE|`R(UpsajTD153?BHu#a&=ykMXt!{4Y)B zLF|w`XZhPjs>~UDu4r_LeW@tJj@YaXXA;$iJUdh}`kO{5ItPHs(y0!el`!QGdt4z? z90@#C5?6OyrlHXXd5L`d=?+xdc*t%oLW-+)iqE{)C{zA&W0SLa{#87%hPZ{24N@;y zad$(`%I$Y9oF%9WetE~po+6Fu9A-g|pCA|(xMW4n1Wm1c&1qo$=HUd(_(lQ3Nm+qG zdqwlo)MVElz$51*?~H;ylb9^~VYzIh991aJBN;XoigDhy`mF=VLm@UcSRWgl0k^?I ztSBZ#obAv1F5&Kw!^68wcv&{c*pHz(xxFZOewHQ>S>(0rpI}nqrik!h2={Qe+?W^! z$RP`bX;G)6B~4+Q0rdIpJB)yH9Vjcj^UX)!xOu?oct4#@$;_EE<$a+ZMe+Ir)WLsg zOfzHipcQ~9f5OR&=kBEeNDw1Gdq5q7BFI@%RS+*|XmAr4ehX>bBfsUpQ>bXk=#4bX z>U7#|b!q?2cNcq0G^_ZKok{3fd!ZBhJzL6PTK49}ZSO1}BADYpr2@#EM_Lcw?%AO5 z*gd2_T2Zf3G5y+3DI#cFOOFxsJ z2AA1+^!dpBC#jb)-J_9qE{gjFlcsmOULQwtQu=(ic2M=Y4N^^y`i??o?Xu4~hf%l3 zq57rbe`)+Q&BVso21Gp4sod%%iq*v`xXP^1!YnXD!MRtFY_BfMrr}XoVhPE|QpjqC z0Ai%>voTE~eW-hLyFA%)DZe`mRwn#}28Qq2_MeiVeH9Q3v%Q{%oeWgzgN3y3 z4b1~{vSR5fg${jrY#JnEI{jgJS~fm3*@Z~3(Y~M(s4p^cpaSqfMeQ zNon-Yb#>8KojICSgoAwMGDe5zQ%aC+j_Uz>(5%^{-yVt;!(3rM-Nf6h508?5VFcRM zb<#?Do=F!7BVz?Hh$y3Y6lZus#*_mm_icWw>K2xNEDA<;lNTuQ^R+U^7d-$(;?1Pk zCo@d9q7hvJkL(ABn1Oe`)X;actCt%FWT93)e*i$^TLr(fQ!Y5CI_$|aYt&ze*xG}0 zrlBB_HT9MLHHL&9PG^#uV<8Z=VUVFdmemH3zoW&gEW~COM^IK1>(+x4D^txCSd~r! z)A-zqt_IYlIUF+jY{d1+sA2@VV}PC`X`j?K-;ha;Vr6VsQix>BdL`CCo<$;>s8C}D z_m(doqv0llG224V-0wRT;QdXY440mop}!h$j3#|J{Tm)|bQfXACN5;*o|`1H zbLA$)iQ5AeGf7O}v*z^yfinqi9|`yyfnX1jd7e-L79>9(_g4R2s!%feo|A%7M&M{; zHndE8Nhcx3g7VAFRL2SN%7bBiLPSJRO6KodBCWQQc+KR>BUlr)e3YPl&^o4W+#; ztg{Sv{*X-5D$W}2;O%0`S)xh`JS@J>&rtzDy5TmQul51a`Tb@m8j8ny-SmmRw5&9NfJ?mHb zYRIUulhfKDoA3@w+Hzr!$BgU&$3T)hGP)*{?VoOaq(sl(^d;apaCv180dkwE+M+ z=`nLF*rB4yDuzPNEC>%i}cne;O9ohjrzy2@$!DlW=sJ>&c0l_Tbs}-4mB0gf*_nO zMo4Pir&N*IPn!8o6h2G>YV&BKp>yO`SPQzCMTc@-r?RG)?I1fEKh(<*hP?{#{C2WPPDwmGK!zABoktAcbB+WMYr?+pONws@cnri;r|*`guf zm=0781z`p4F4`T?*k=k)!tPk-F{}ziomQ`lm5HRCwMvf!OqRlvR?p-sV}t?8dfnJg z>S03+_7)X-{Eg*Mw9#>*Wg{F_x=r(GVWQxaUujMHpoLMN6iA6+?48sB%u&21=TSl0 zt2rI;lJ%I*fe6y#OS;4AlP4Nd?v4D zx$0bBQM|lTZZmqJkBjlEv7>^SNWQQ^9qgn!!)&cK2dTX&s|BkCG5Dr$v-7tfH}-C6 zwKWk?7B|q->w?>-@H z=ZOlkZ-M4F`AF|WQB7%TU>H^YuEZsr;+ZC0xBV%JF2VGibpjjqpBmJt(Ok$;90udp z*V>OvR#`%7lXY|Qi?Tco^!v^9K#L?`g#q>TuFw1_rL-6T?G@-QaNXwo5b|Fy@Zir; z6qqY*5YfYw3$!_SC!s}y=i84*GnQn;X%$2v-zb5=&EK4t6PYIyRO=20iQ~ke&^a}{ z@t-jaCCtb7XvJK{1{du_AgfnsEJ`g-%_XEOzF=--FV+=?55)ooRoEN%&dtG#PiaJN zY;hAZ5Yf0SDa$L@8=ZHmYz7XBEY7+lxgRgs3W!OY{nmDBa{wj%;kln%;4!XV-_(G+ z;AboFSl}~KLJ+V;I@W8Wk@~kdZ!c>bW1)&;=^0-R%WcdfnPnhQ)2Ef%J%i_h4!Y2g zz*g)$--iI8@^~N(#%w5+=pj48SPDCTgm9up)JEsOms@a*12eZ~R^NnkIuOuJgi%vY z$t`{p-Zsj$W3%VPPEHY0i4;%E*LC)>M1&Y{&mzMaF|^^Z{_Kb=)I;ojbmH<%^o0j2 zg2NW1$jn>OEV%~c$Zq=5bx-+jLarMBH2JW&`qPyyzl%kXjQGv&oO3dguZ_gvcf3Gx_1YRo%+v z*ZB)HCUl#zLF{qPg)8J)70e?khCGF%i;$suu{9Me10g3?%tPd@$66vI*}*KTK{iY7 zJ_J4|k(<0y4eBQrmPNjuqB6Ubq7!$t5R!<)q%TgmEcYMT@)Q?fEe$L-86L#-IgJPVb=SF_^d~KzkhXl0H)ij_1|J`j&UL+ zZo=(CS_ls5-OdF3(dM?f?=23&G*;)41{A4%c~Df~aulr5>u-`)+X`XZ>HYYz1$x|~ z?HWy?rC=4iSjmV9{wYfRe+h5ZneO-@+=tX7T5*}H9JV)i>N*P2y@L|tm>R76XLk9p z7xz9rZ2u~1FM|oG(Z5o9PxGx31lv=zR!!xp^gHNypu4g|cjO!(xlY-oiAS}b?ia@~ zD@76OI;m_4HZo4>17lmkC7D~|O)cYX_qMjA%S48VcJbbigOF%uqqP)dcsp6d!;ZV| z7dKMyirK-Q6&q)S(X9M#$3O+|Cd3P?&r5VuhBzw=675<67QpjQG3``9$Tc#01R0_> zXKXw#3r`i$f?0w#RIlgL{x$_Gq0XJL`4SG>h_qr24v;-TP&&1oW5T)TgvsR8Zg=pa zweP;9p3m>p&o2K=k8$u{#LIM`9qjDE`p(nThqO=VxIc(039I! z<5*)t8QbQ%YfRvp!Xbso%{sE?vpZ0N-l8NsmD4I3=;5oghH35EzBa*ByX~)Ie84NV z8u>Dq^I81y;K8Cad)03-(*I0170&+mMUzg>Ovg=fY9oMWtRlR!?0Gyvbr$-%1mx)& zF+B~gS+yBD6Bm^FC1xQGZE58LGJ@;a3+rs|^U+`*AO~6TSKXl+;7-{Ok{QTaQD#U| zYfuo7)VOIIX!E)r-_AhkopFT90041|o^?8{+@>=V?&Xi99Z~jai9{`k!-{}~OkcH7 zH%R1L%pC@G z5Xelm8OfTvy(yOajr5YZV;_Z&dc+4Jj6s_`+<5`$9#2Z$UtQhCRF@PjsTjtqARhKv zH>W^W&~>zVwo~CtXA|MIb@g3%Z`SP(%~B+w^5k9$#5mIeE&EfpJJSDI9!~@j9QpS9+9ehN9aBUtK?Hn-4S3eNQEK5r_F8}~=Kbz9bQn3Yg-@=E z@Gk$6ol!sQg`t5;8`5Ls?L8Jzm`FjEe-dNtc@|Ts=^(;(BYH=D^`p1d?2mSNbKlh0 zcNsUnA7pONDL}a9ohzD!EghsK;#HKBNa7TBN$XFSNxOBpr&jg}Xc?iQnwLetsZ72< z5sbzc)X`gHw77s?r``JugeRXb>weXYTtL0Scb9%B`AlW`GdTC;)6Q@YE0Aa?7$?gD zpdkSrSdBwBGBuQ>IeH{HM^(V( zrVgs8&oTe;CddYb<3=DhA(RtX7CcUB<#d$o$l*>=-3Dt>-wx_{7YTw50?y?a8hHo~ z&$W9=%n>RIKG->c%KGoCVX=cAXRlV@yH{GXJa>i$>U9RN|L^n-OmUwjqku(BLC>fp zekRf4u3ZBd2o~>H%CvPOr-ZGRspKy6U1QfaBE!)E9YB~7x7WCYKBGHbeJShXb%Emb zU$+4;_4<4rP&$8<1y#t$LoqKd6}qbK^1tmfkIx|vs;bCw!_o#3 zz7Yk(D)YG$Fz7?)XO_z-B4LBAP>3h2#U+l7NdS3Hv%rq34THuJWV}1%W#icR?%r4I zxADCkNRC9+DP9!p3=)DkDp;27<3n+w%Fe&CwZ$8oa!<%Y?)%A-XhF^8KLXN^uY055 z{$OzZUtZu<1p1Usk1gMNlos_?3}uU+Re2b}V1uZ!MB6JYXGsd%>gT2j61oCZ7<|KvvQFcV1wPJ(5$rQZ~6A2d=}o`lD=Iqk#5Udxd$K&6AQtUFV?v%EVs52qB*xD!u&Z z*~CqF`r<~ZmMoCPWYz8YaPrDMdlOX+3Ng3+u2enevHy|Gz(b-F}N+;*B&mbZ)?c6owJdLfF2+*!^N5>-i}A~Zkh2PA3TmPa5;F%J?dxB z8irx!W=zR*fbs)UHXdIFj0x>1NaQY_P4E{kr4%z*x+tencV@n90i39ZMV}gT_GiM- zV+agXWcH(IgSl7HLQ*NBBG+@T80puBn@I^(x2Ya<8W{eJs=y!C1OhDwO*{mH2Fx>Y zx>ZRdu{pyttsCn=BSeIR6v_RKB&%I7m$aZ>Qp zM8uhhdCS!``I(M9RePn9f1qA*BQfpjtUAE7g0g=^T*2CQ_O)jU&O9JvEbB|rm2pVd z!5*HEh#cv3JE)lQk$e|=b1p5t(KFnwfTxNS`mRM@r^??fqTIZhLgk2jxT0L}OHyde zxOgZY_YQ`%L3uNeb+#*z!zF7zd)3YOb%XzAsqN!xcypOakD39y%r|XU_bW zhdmurt4?j*>*m)-;7b1Q7atC9yy@Lly`1em)7A=?01iZTP*8sy?b6(BiB2LrPabWL zpx~xwp~=G?m!yHe-3}ZzK_rG;4d2!Xg#t^BHP4jYvW1DN6Pm-R$Zk0ST3sc^&nIFlgUu}0S0bYR=rBAk#tkH6vP?N#a>Lg{MUYk z5+l5Z6%lM~-MKwkrYUBC%mR4?t1|=ZX&)FB1@dTi4h9Y^)SCv~+5*&Xy5QtOJvnJGE&6sZ)s&*7kT#l1f`5SO~zwG7^8>^c&i zI>`F%8#b`ZS(El05aN#0|E2qVnEMpwO3S~M{Att)sjFZN)iw|)z6*8EU72aH_^$P` z9eu*^hBQ+JUwlurg$MvDu#jn1o;`j^i8La_olh=zDMr)vq?3lx0Pi2t>?vZT>WRp= zS?J=tDPwdk|Bx7(54;zRp!F_2tylf{eFTKM!UMJ@j1Ywi6zQJ&zII@bibE!B(1jbu= z-=eVnN^m&hFQmChuu+1NYLa{O$$UN?To&w1 z`!feX3we@j-MPFa+RpFYUZ;NtvGZb2j2)IwbSeB~%q#_~QNXSR-7*Ocr9@GG>1arc zq7!v+KbJNnDrj&x9$hp@%D#%p1)LNx77GSU)L0tW{P>2YzLUc#p+uq6>xE=8812@c2Y8l}EHAFZm418)0P8YKl?O;1UY8Qpde51h-$`EAlK8|6i zIYc=3+hg<>`krSw76=`b`&YV>1t>Q&!xnbsZ`IwKF0PD?Ze8DN@*y=q0xyK~FM>D1 z`Noe@e81hx%Fqr$jW6|+RCoR6{avV#76@$8Qc5BK)31+>LHfx-nds%sdY&ufbLZ*x z1-zY@@&4b^lk0K%IwQrktN`^UBrY_4qq4fb=w*4Cq>b(Rt@w#;G;~6vf9n87B8XIf`txy|2G64IMg=A3N{p^8hA5Z=Wt{Pec<4%Yrv&lNsv)y?WB@%fOr8oeYIW^>F6 zcL?d;z$+&$oU)6H{=Kf0hcxpiRNTLR5q694sP5~y zK%iB)T-~_k>(NX zPxiRZ{F6Q4+W(`+VZU|8l$uDnc$t{=6&2($F{a*~p0n*EIlU~^$^-gigaEjd>vifT z4;S{OZ+mL|BeMjg7*xdz3BD4aKVz3QwFf1_)w{3W2Gz8y`qb`Zj%^q$LwvTik5W`@rTQWFWWqZ;N~A!Gi8D9gA5d#D}JNR7TueWMe{fX~bGgVQD%db`b|z zi$(zRPm+GHR?mYYy5bIs7e?mf%0fT7-8o?ATj`0+>L@6^iA~ zJekINN5z4!WDz_dDId$46nTLTgq8a3Z^_ty%QDHFF%@U#G^c*N?+f6^tAD+0(2QcF znfHlvcxza_JdeGL&k4zeDKx5 z=WGoeeNRJ|^$S_B^dJy~v`tlf+7t;%Bq&%argDy3iUKfn*vmGK90!Lzo$i&v#knO^ zE24T!N7c1ZHKI`p>+wA7T_>N{_0K&gjFETx^ zh^ik-HhDiz~oKyFbI+Z!fdVlRAtIl%jCvPV-j%qDcce7HW#`Qq*#xw8G7h> zFrokhOS>j2&{F#eFi6WRpK{tGm3L@S@qc>GmBY`c#M}Lg{uQmXaM^d@W}pul{5N`0 z&MXCExZ5_KEXv9dW_yqI^+ji!{w^%w^+9vmf>unD5}u=vKX$Pv;4cH+IPEeFA!@Q4 zWeKCUyA_a{HV@)w7t;oBBeLhrc00^pKr@SdSpE~9D(y?;^z+EbTO<^!ibot+mafyR zZ2m_QU)dRvNx-}q9loHPZmOiv0S6xc@e7LYU6dmmGdB&rE@jq&vCAMCZIg+sh%_S@ zTqy4;mqOp`fve-2s?WTUO9 zS}q`6E75cRSz_rkDENe+;h~<5wTJL@E9)m|3}{~ulzYcQ{DO)jO(U-!_9$84FhE{t z3r}8|5OU9&OF08n(A0KwAi{E-dusqR78imD4vYDI*xL@!qD=;fY=b6SEAS(ay)8;_ zV%m$-h=@bq_J^XQw=2FeZnjo_Of>TjZnx~ex2+9N$Lf$TWZxa5*3RtNA&?mv_kN&la7tH@wCgZJ*3unrnZo0J0<3GWo-PfRE8Sa;881nOKxrIj2?klb)Noa9#-(}c^A7V zWID=+D3{S(gt)!e9S}Wa03xz7Yl-z$9%gCj>%Xy&bx|1AnMcO-b9Oa1TT*=%W6Y#c z-N93+x3nG*WZ4=vK8UKbyeKb^_{ON&`s$Y-%gaDU0>~UKv}%0zy>4SV$b$_CKZIA zl?RwTy}AKtirI$_kJvMFfg5YSTMZCE(Iz<0_236Tum{djbVZfJQ=X4Vn-W*B3)6|;jerevTX!dPnDI6=XA)aDB8y8`m+=F`N>+t1J z9kegnWe?_&%zkIa>B2no-KQ8c>op6#%jsTwBmV&Dy6LU)9!!c{x9FJSXTYUxZ_F5> z`rIudm4RLt1hmQ>CpK52ZZ)V8O01y(LOm2`RMGXro~_zq;Lz97iN836uo7uHxtRb?fM1??p* z6QZ(bR?rZjk~}{21pcCcPLe}9ARZWnzM9^kLff4fPXtahi&={z(-+|Zh>ZeZHac=+ zmDGH;Q9(Mgvu}je#K^!DY?r+0Z>+n!Bu1AmwsfZA z#Xu$&i#@Oo63FFj%~h4F`ph5XJ_4UwnW7G3TjHlC5O<9n9r@A<^CpUd_qV=Rgf|SS zX=?5d-7@j8Nfx{vpbLMxJYm2c%j4wYx|+F#WysH;hhtw0eK1?Hs$mOU#mD}_c-DTm z%Hv`xr7;S@z1q&FzaiF|QST-Wx`2xA2@i;=gi5|&&vuEvSVDq%s&w?Wo zHFQ~hxzh?lC8If}487-Nco$W)YUY7pSl8jv8mL(uc1-ENeG(DtfYb5`!>2uJhHSp{ z7}wS7=DM)@16rX9Eb}8DS+#iz<9&sa0Lwkbv( z-=rqs8K>1K0MJ-{)Rh0yUW8W@YQ7VzAG*@1m_&#cLlzB!w4HR)vRnzx1O`smS7z~& zy7+-U2bPyqS%=LahK5ahM_q`(u_HCVhoD}87Ld5*0k&Qxl53rT>oU)@uhgvZP<3^Ee~85 z`fvSz0(kXqHq^}G0QYl2oMC&{>agYpUE`EWyuyCvvTe%jhvL2@rM{P&YDH8e3}kpL zea|f3g{glXU=XI>e$ga#T(9_rZ;bC|9@s8cA04$HMac&|L&cHQzvjEl7$u&$lS!Y~ zl6f}5?5%(>VT@kZLR^_Kz|V4A!)&ArvBRZ*^vEgzKS030O3k!+G-LzLS6j+MjjdRI zV~J;rsEnv}7W(&=OWK@{Ea2j{$Zqth2f2^R8*3r7o^JyA^MbwfHVo+G4^eO5Fqa;~ zAgTE&pMg7_K_3|0dW6{sH3dq@@nFKzB-HLehGRc*oY{;drB%)gnnEOiK^gf`fxVu0 zg`5zzwU-4{WUCAcD87a4;k|kG7OD`X1 zdU~MHxcztfAY%zV-&yedsm;bQO^h#Z{#*KRx9?v6u_rV6>G6TJ;aYp;H5Kn3kIr6L zTzQsiquG~5@~&)0(;yvN)GPflRv-eDz~5mHL3xM0axAJJhzcu|c3yeYX;922f_|;7 zi=#?%il)_`hNZ?~KTAE@ugtGbm$-FaX%BE~2z?7xuKI0_((~OML&m$FmvstQv-L*Q zMIvhxCo{bAo4`&0%n6*M4ao0>WfELgg@UzWWDfgdzj_*df3ml+%{^^r^hrVqHAiJ} z)`)m>2}>|xr(6FGq)1XAXF~BSDqclspde+b%XsZtaC$NVoW=>Ym)!sdpt#6#H9vbqB8UurC*_^F*Sk28aV_*AWMR+Wd|eQwMVI5E5`7K zDoHQS{W1BkODlOOji*oc=DnZ|j~n*Z_TL=9ploE?IP}=9d?Z3tE!0GhX!W^(3C{K{>&Lr1@MT)&L7KQXQcuE)XPIq!Jcg6S`Wy!`y#4nn(t0Po#;!ic-i z_|EADMiiWO93ceP4KAjHJA>1!)Ye5g?U$VJ3Ij`e?b1=YpkcVI>bt?)h|?II@z$r+5yT8H<# z0?dNkxYxv|@nA}*Jc{cfSEt}HTp~Wm=ft}6GJh#k3gdA(c_jO9+WA8WdV0lXdxT`B zNrQuiO$NzJZXrRwW0yM6qrE$?%@mJo(V?bmX>SM@E-RVlMF`@};WalZ)zd23yvywY zBBv@HMMy-(TGMoMDU(m z^Tek2XGh;=z3x*Nf7FzMBDTOMp=R>s)V|ds-L%y?RCdEdR&TK)B(XQ5uh;qY*Vh<+ zcz80@6uym)wZ|i8X$K^Tq|2hhZM)rqPnWSg`SJx>GCj845w#-p&T2e?4hA~}wmj

{1eT+Rk>{cY1LLw^@77J~jX?k2W~(KX*vW z#R0Tgtp{A^xIIaM-01_$@y`ltA?fwdpD-&)1Xqx*{P}TRDXKT$Uf-OP67~>R;i9nKCADbN2S)%*(2orJE>xZT%LX=i=)%8FGN2gw(`U?*PeUPf zOhXwP>}y}|;~zi9bB;f1Culr;do}HDsMWQ_xXVWrP%wbjAS;z9)O@W_!c7tDWDE$dG`pa3>f|AOdtz&_wJv7{rCvW{~Cc_i8=>(*Pe;5NI{L>2n zCB?^|mA-|cDkqe9%@iOhq2f-h1_qO|R5I=0k!_^x#+JkTYN8>{uxa#OHl$8Jt#c+| z%z`WrvW+a4{HdQ}X9T7!T)X!HrnWBtMHh#1+Fhpvm@Z!5uYv5e)pYDXGF0t4w>$n5 z`$};~vh6yp+O4jjq(+b#Y!wjc(@#&+hErpRtK?7ga+&~VP|?h<9VThH-}J=u`7UUE zc^yMLSY&xddo?};AOAGWYpfG|WKW#_%hmy4-WNwXsyuQ-i;1YIZdEfGIetIO%8Y7? zOZi99rJifG?&BTe&Pjvu62lNkCUONY5+2@7{hT{a^?4sDov~?)$h#X(b5HOJ15%|| z9RxJnQf35EV9^T%ue9cJmcwuPRWWDk19bYlnX~1~QByZ)q-sGS+8IQJE0W-KK*yP` z*sz3>OS?Fq7DzDCt>@*Zm;x4$LX(;V(t?PkUf%x^V3DZ)JnI5L?I0O?ld~C}3ek1u zI%yBnyEDE+iWF%jMdIF)<^VYFUVTh<(F0QE_IivK4wa;gGd@saV)NxL7Pd_KLdJ=E zb%Qx_E#BE0o`1^#^H8H6XE>LUxH5@ocY^#m2RF;nVNdp%p2A_htG8m6p(i|-fO@+s zW>7#SZ(D?`o|!8p)5miwk4uv5Up$?)Es=l&>dG9&nb`dowLA&TI1=@BkmgnB>VA@n zQd_6YWvBZCPvgXuYWMuoA`1P5l?Ef9mw6eP0(jjSTJ$ zHg{AgpHm-iQ7P$muH)CjtgZmhDz0Yvj%O%w|7B@!7UH?@}u=+;Jk zDwD4jt}Uplwlrd>wZnzRV`gsfrAxbKh`jDA>aAVaRYXUiKEoP%lzam^qo2>0hQ@t%+=Fs$jKOGz|HGEF=*)sJlnuB&|)=z`Dj$ zNoAP5#3#&k3!UGckg#!DT_w-CPpc1$n2_SO*bCE6ld&HBOlp={6O^$u zks^1FgDDQFfDUfY5x7GZT)03!BCjd4kdet4oTlQm1Z_LB%pa%b zdG5AZtJ?_zxK%@OjLqWCi1m6_ zQHDr!jIDRM3UUC^c!3e57*Z1>WXxjClGc&_i5&nT5Zli0@}?eCx}RN6`lzfcUoC&% z7Y=lkI#G?`PL}hbso738vwsU~(?5q0wO}7g z=J)812U6@lLa)dDjj}%@P&C<-(Xm;^|6{@YKF_q=Y^+TQ)mOg9hN}TN)L~dczCj<6 zf|y4w>)D!?F4M(?2hGY3att;VVmJ^O`Ut@GNq|2FfhuWuGGUf`Yp3xxgzGTX+x#$j z@xJTBI$L|&ys3RI)~|?`Jn`B!+h}h7rnLJ8dog&y0)`l~l+eW3!{8j?c=y!MU6$|d zV~!FBcgipi8i+Sy%RVeB3U^AMr#kR{lF~2!pHjO0Jc=heCRqae7AmKOdN($DagMRZ zaN1Q?t_j7^yA{bj|5kuT_uI!b>_h%aV59~hFQS)f^U!rSEHa~+2Ta+l7Osjr(ftG5 z^ktbm#^srC8+=c4E~Z<#{C?RO4@;lxdH)?QPRTXjp-XNq;j9~)Y5E^ZW;SazG;fb(H|4-l zuoSZlX>-ATi&+UgA)s2G2c>sC?PJuvkZsK~s%wfMc-fLCFK7yUJQY8OoRNr1HZ`bJ z=acFc#jZ5nBZ#r@@s}&XJ&lo=(@1lCIBWYHVIXD2H@5P$D+O6xV&&qjQ_-W16cDvf z=y1-iID*L};vqX?v96CVmR?be#r?<}-%9j+>3cFu2!4+$RH0T}h!KHB+!epZQpAX^ znI#}i_%9ut=W+Bb|6`@l43ORh;zY4AQb*m$6fKf6?cdhs#pwxspVHitR=_V!W z_WuC8j?tX`NoWK+pyonGaGw$h$Z9zE;q9~%M$F#qTDmk!87F>vHu@kVy9{}NVf8N^ z+`uv>I+a~?{EZ(St8<7K(aDf2|Ezp3^9qkW_u9 z7v(J|hNG%yhKv;n`+dZ5nLYR(R~dm5{J|r2E|CzD*On25n%jM5U9jYaXsWlXE4FC{ z;xT*Pa*uC|>U5q<-BZ8UDfiD>$U~2#LpnKMTzEiY)u0OO))kl@;2f-Z6B7d#p6A;P!vLmFWL{Izq)Pj)Zeub0k<`` zlb_BgJ3?JHpl*z&=6^<*bhItVMD+QjA!-}xivrBMmh>;bY0>zIHBg3I8YOcBv7OVb zcO(t@T5)mFk zQpb@UdeG&Vrl~^zJ253bjo4Fg3ppAD=_Z3NJ4CI$Nk4%)#sy%WZ}4r_CTr=tc?$-X zO-W~IeGDmOe0xc{#-rTs!WGoof1oMpY(WulTYB)n!>Ex(P>@n8`Ki}5u*HQQgfgHa zG5g&{mJ{8dv%-lVbAsfyu5DXDMj@-iFWR52yD?;nVsb`%}RVYDKhcFQZUHBU!M zqw+eDUmh?PU+j<#>H?-{iezyxmy$^r%>Mbm2Yr$AetziiqdlcF*=c;tLq6r=+njKq zi=>EcVz6F{&sP~pI)WUaULL3!Vx&Ay*BiKvpY0wixB5~Kcd1K}r8|7=tm47_7UU() zJy8`2S)p~_pJ|r+zufM;kmA3^l;EotNjXwCTseqoPG2*IgXUO{VqG-o2pakG($y~^ z`kZYi$`HxnY4kXt_hTEUPIu_srNPsPK4gI_W(WK%&|Je8O0k!RcQyxjzt}@gE+JCw z`5+g%cn$$zfTyD^Oq58l@koG=)@Phou|Qn1yByGJ0}?`;y@~$|icUq+Z>Q>H4+ci4 zr;e#>fF0tB)lTJIMh^(sVyPDiR2RL}Wp|F~*TH(}gb~UGTdoroCJhPMa&renKxuL% zz!TWTzvqbFVcoYe%usnM_5W#MkX&^q5QG9>2EZjxH$natiC3Ixin7OV$TVmkWp85F zXi;4(nAESIX0ets+rO6!ggdSV(Xr(`{=4BW_blvRn%nL$G;aEBH)I(VpZ%G->g;@G zd)+vv2A+et<9}06y6s!;r3n-LAy>B7r2D@*uhZr`Rbr`FAL_sqs%ph1Cg?j5hbpR@ z$*woCA{wM}w{i*|AV#G0Sx^w(#~!r>F~=8F$q8-Z^njaw`u#8rIAs}$l*FE5ylJCS zGDe03mCHTH&OwFyZJUFvK7>e?3?v40aFM3KtnoT%=&p67^|VW3bKt-Pw&dr>XI3%l zo~&TqN*=8z)3Fg59$RN&)!{gEFyTs#uVyFH<5#Lp zx2LyahmxeHRZo=rI(6fEDOJ1dGp=J%V)L(VvXDl6Me>>)=QJPU9Zx1*ewe8fw#WX- zkJ>YvJkYl@TJ?T7i;jlVL|=1r>iK*z4o9spBFu?Dx%C7R zzbLGb^G|mC`M&p|*WnuG8=z4@j?2$hhwR zF0c94;0$waG*!{`wLRk#N5hiw=!*vA4UTDm;ne;%GFU?!)W(K0o;>N_lt*~7YAo?% z!^@Xm7$LLssmH&oC%tVD;_bZe@NC8#Yol42dt?8Mc=q%#XP|q`LPLUu8aErS_e`=9 zLQUaKY%_QCLJO>C15u^CFFbW@p<^`>DR&L*=_hTZ)so=>X7XEBVc!z?8 zLZa(JO(7&R6w0{5SG{rGWE2FdN=Ni@X-=%prM~Y}&6H(AxcFcMssGBQ*7m^0Eg)c$ z<^wZiGMWD;j6L~?4idXcx6t=e-t?AZDS6RUKa(f**`pfKfh~Ruh-K-Tz5Q$o>nk| z6t|fIbd_;_n*kF=D)#6wR~@mWD@l}zvTWevqMn%aolhsRE{}~YJo=Ux z`1S$|CVE3iGB+43ywv`OL^fY}Vhd~ZIe};1TRX!`(yoM&BC3t(J`bnkk|s_uSg1X` zs4eVTO+xjubpH64NejyPj<4X|;-tjho5Vc%bm1Ob5aD8NBl^#j(totvV=Z|P7bkX- z1jnI~#C21m3&?Fk8HEnI=d)wU5pRzDZVR-y<|$rO<#?y zVgHUrB3lY-g2FYoT@+74@%gm7P?Rg0nlDdgY+9o}br>+xN;G31B#LfDi|2h?Y*pu4 zhT!aqvBWKrunDRyJ4UY8?UngNAH%xkUly?1Af9TLDwp)!4m7cX_bJr4j9_ono7d&7 zFL`efoB1NsteTv$3)WU=uBsMU;uTP$*{Q=lRvXRC+$z(T>McvB9P9xjK)#AmJUi(- z6J%cB0qqgGLF-Smkr?Ax?KMI_x5}a~FKxU`6l z_OvRpxHMVkzV+x5d`2*-vb@^=w@5gAytOq6uGC?l>iU{=ruetfl$P36APe?a{bF@{ zIAPcrbB=%2>;@b4MgJTtG`AzEA*Lrt^>Z zUV!=of*}DB$2OgHS>Sgtv8nr6EX2j&aa^V;HVB7oj75Xid6;UGT>)(++?xPa#!_@X zP2+|dvigGrRkqAYMH{q0eV9f=y_$QbykAAT+-n0i%?0=|MEG`8_P77EWsjVP2j6Y< z<`_CmODQ0&!6+CIVh)^Si4gKJwbaGC?K|5q`A@~{x$O0RK6qhONoZX*I9GwJkmY1{ z{pgCB|Fa?8d-n@(eJSgeX$&hEHV z@x@+HSCHQz+YcldY?FAin*V27Kkvq~5%jC&M1%f6clm|Lu1EU2-IFkDHEp=Z9QS@A z-p;4$OFq{$V3ocK6SYm*6kRLgvo1~|x#F8D-vJ$*1FN)9z-OQqv8}6$5~VInD@6I? z@pz}KsLu0Fe$Z3Y?PurV@bF_W}=8zo-Gk3>?B=@=8e2nx5-gUfp0*>ZVl~0c*YjYR z={aUI2u_?5EKrqwz;Tm}S9%&GW}mxrcg}@;3T4oGw(5Y&zHzwtD}Z-ZSR|^|n*h%f zEW`&8+kQpYV{DC)08Pkr9)wYKiViaK4O(o&A+)o6fc`92>-3nOAm^+RgnRR>=CZYo z%At=!t*htA+9BxRb*Nap5$8EX95$*Pwpc$dOgMyaEf(tdNo7PrxIvm4r|B?}wDeWl zE*|8Ji|7+c|$z8=ErUr8iwTgIGFX97Ckv z*Nb0-6>DU06usNJK@Ki(&(+Frnugb?0YW#V9r4Jb#!9tXGQ=%92=nun+d%0|mlNvN zSL`eq?YIRG^p-!p9#p{rwoO=%7}RSSW8oaX(7M4pycHE8xvq(GPQz*qj%uXs#7~<$ z**d5;(gEV4Q|o)~!Eu5una^sDzp29YPvD zZRF2LP8FFh7pP#%@6FJA_mn;FJI;;b&@>`@bG}+bq_6n6KZuHur%-=&YyP?Lrn3h$ zV4b{1mQQikdzOfRyvat$O0d?ZS2HK`(2<()P3fr(#AiwBo3VN6oYGYKd%HS5!LFU; z5Dzo;2eXMr+Sqi?w^9utAK9CdyPdF9me)ngk=c{ zJ^`h%jHlCOgCh&=PCb&6)1G3AwYT6})wmRDI{%Egie$empRPtFHGa&GNQ8MW3B{7X znMqLCIgut*zx9CyQXy0{0{)jn%aS$Ygp0#B(Vjto-OQLhq)5)`ls_3sL z{_mXWQwW&Hn*{G;;|sGxBB%#V3T=m2@<4Xv%;Y?6#~aYTH;oqKFNUSqjprwQq0Az( z2fG$z=lCY4*izr3qz-xUHI1A(BR;nJmjAT!v_dn)CA!vvjb?F_03DDtud&xi^TL!6 z1Ds^ioSw9iW*G7>ZY#+~#kBV*W(O(D%vz^pM0cl1R?uLWrfB-JK@vEY|HHyy*Oa!4 z&of(b_GEhnCLa$pC@P<@1Ba#BxV5e*gfjxZ*ML8&)3SiU7YqqZJScs9tC?=4=?fY9 z^7z7FWNx9Si;h;Ed+-E5=^Mwxb@v3giVuScbA)y>L7AlsgV=1DHn8pIeHG1wyWZ4D zk)mSe^R9OL!zVbd#rG5#Pkj-5I(e{~GEuTM$VK;Y5^dK2-j6+YvgTQydj6gJx|a8F`V-0noP<26u%2*&F9!C{?aP?ek1! zs4c@Ox36ZV-*u-Jb(wNi*rs5vVM?!pcc_ZZXyMmY4{IiJo%fg@!$G3MjR$&RyISsE z4+`E4VtaS0o{=}INkD0nywW2P^jcnToxLB(H4tJOCf7_$|J-0pLPu~cg?wCla_3HP zD5!oLH^c>FNbT_nUTQxp4=-(?9kFLc=fAO6bCUzXCrf@;VkPCTkC)w5QzFnw=a$PVNmoQf+o)qebP0A5tXwNQ81wT6UoN|}OmOwHj+x)(SYGUV1O1jCl=-myOkc zvGLLoUVmF9-O=^ClCVp_dv0?kZz0{&&*j(g8kX>6qYv*P>|t{ilBiB3tgYq(xUjZ) zZ$Ow1!*OKTb?~n$5YGF(WW8*@yt%i6X=d|XelyDb$#v|BF5z`9YfGoRr9WM(WpRk4 zh8vMR_1u}4mVv_{-~L%61y+90m$~7A4g?u{7T1@ms z>*6~GVF>T{R|aC(@1_*9%1GX*x`XaVcLp^vT6Kjp!&VolN?dq61%s-29OXScw9kc_ z!eZ;nm}s5XF8E{}$y9rDAk z7Qs-FsT~=sq7OKe02p^%%c@ejJ>t-{>SvQYm1S!Lob4FFp}q`!L}&@4Z}$`Dx6U;f1l-?8tD8*b%p ze|}dF8O^z#l(JW#aR=dwA;r?Mae_7X*boeUwQ_iV)Fv2dh7}H@7baybVta-~u3s+m z&-{Hrg}#%N=S@0+*F%BG@>T5FX8--A(|1m8Ec}ukcM4m~UoR*T&-gxrF#J_8U2F)h z97PJ~7LeJ{)CZhKKQMtjaz|_z>_p!cAD)?-ePmycGR6Z_6J6A^Tc&H>1Tx4UCD1;M zf4cHfwz^dQ%4KIVu)0e7(Mu+%;b&Ma8v#ECdL37fX(}^C;q~?5C+F^O^|s9kMFP;z zTIytsAeAP8Iz7z+F`gj|TY=tM3r8LwNIO&%!bz_(5itMLs@C;k!86b}yZkDML)p?| znka%l#3((x_8KzB;a$?=SHcO1`G4Z{gIgcW6pJXrakC95Vd+$}!M*$MefXm|dr%P4 z^ian7yue$Lxael5Pn@45L9Ff$N(7#fMa`>0j9j<3^r2^qx z)eYI#QwPfn-ldzw0*LPP*05C|0+zUbja!ax__k)kg+i{q`1wgY-{eS5hl@1qeF1`E zOF(p1cqD%*fhyXybS9_n=Pa=KQzZ+Qg7+Pb*KV1Zu7y9)&i9VUM~Iu@QRwny#& z8Od>pVh$y}U459e8GF@fA6-~YODEP~AS4Vo?NQ?1K%r18>2bl*;O>i>^jOMH7h0y6 zFN$gw@HYfo2G3#WHQ6bFU5*KUhNxlDm@S-`kFlRLe7e+ErawDiBCi&vn}n?&c^VSQ zOpt|8S){fjgNlpx3qqCr%JOtw5@YQI)7_1O#C34yw$B()Go1>3PGEs&fNt6?%i_3q z`_MoL&Yy71xbeDhOPe-uSrxyzWPG_y!14d0(F6if2$b#`q~;Rb~meX;+NprN`=2 zsD1LK-0Kp>86Bj1MpJNSfCEOi=&r_NBfk5UX|TexrmVh0!QX|ZcC$wK13=V^F4zN1jg|5?nh?HOVCg24&v@T1Wk!;1p*`)y zdIn*gS=0i3E@Bt*&02yNFD-fS#|Ep;vtTYOq=FFr%WDlqfdW#na)HQVGLE&OiGz^F z{Mn`}WzDB}BdxRd6J+Qn*IW(_*&|qzi$FKRXr278Z}%c`%}BGbpWtEIW#PMRimBrE zR0wnB5$LdY0aeUZvn)t1-Fa7C%#IkAnwY#vn}~P0uVVBU*R1e0Qo8;++BrC=X@~3j zQ>|y~#fBea#A5PYUb`mcVM-^++VjcmB~G8sEOv*}i+``1jHW)YeXtBy3DJn7LYh|GUOp^B&=SSHDk-@T~O z27eGZH5|W=u0^X}8hyjcHNz?pSji7oq*RQ$6;M44bYl8!a>(Fwf zw|WsI8uAYY%S}H(hpE=`Nsc<`b8gxV0%*t}=mwabdWxvanrxIslpRqvtce8YbVIu3 zL&aGK^@81W9K6JentzEiq4$FeFGvlGG~g5thB@6M{6Iwmt37e4?nS2DT@$&5*#x2+ z2wnjFO-B>DIOqi6%+zC0*?f)8H;+8z?tzqy^e`lXQilnN+6OA}*@Shi<3`7JK!j4o z&AaGU9>?;!={K56w$L9o6I1v?#}1ZGPPL-5K&Tmd#dmf<{~Lfx1-3o_;35wrYV4$)vhLZ zc-@*>bSVjz!@%y$?B`wFz7{y2w@lbKy-SI&DMAoIhK1BBh{hng}O z)hL0l*ctmMX2?SddaZYhuATyUg37sRgn6(J(44?P*qT~Yp2#IO7lZ$+@QB}4_FIYA z?PIt5qAH9j=!>74naT-+T{A0O&L#rWNH1w7>Blhc#SB^%7X17XPedX54P_M$iE+N( z5KB>cC59Wu(L#gR^JJlz*_Bp8QRbGvN+*vjc2$OaX2iTmRYWwN>zJ;fPcp^ps-J=3 z(U^CZJ(2e~F|6ZprUMsny>xrjZ1pe+8#a8^y>MFW#iLb)vPIVOG8tcS#YPIHJ+VfG zJ|7P;yDi;5l)ZmK!t@!#+2BJFQTAnq9rEo~X&yBBPTooKk@-bg9&%kpl>K|90>@{PJ|?0^^cQ`Bqp&M?*SO zPh#S|mpQ(ePQ-xDY`)DqCZgj;!Y8bIuwa&2^rqqtk+mO}?kHIdza`|9`OEV}q7sjk zs9VC-cvfk^cO5bNamu$O$jIN^+ec)WZnEc%jDZ&f{jxgqh2j#5q+TE>`b}hB1;i&D zFt2CGZw)U8jF^cyI74;k9MYapQB?4??3lkS41ItCn8pEs?2mKoHJluphS! zNco~45T}(oOVtVRRFln)4UANkb-G~udBG#w3yB0!=HFSD3*(E>i(|229roHTc(;O8=`lA<^afBo+HHW8xL_zV+Tv~ zhH&VFb8!7=lM*^O-sdz};f}~v6Vw6O?8MibPTOy1Lz!t=uR=v-bgNS0CUpr!#&a7* z&EqLw?Cf?Ak0lyL3f1F16F5CC$NPM#;p@BrRMUV%&)}kcCaFuje+R=a-7|Kt&8q+?JWJA|dHEjMny zcHK35)4nP%Q#8cIhoMR((P*9acqPVd6f?lGdXzSO`E)4)bWknfcHGppm7F51{+ErY z)B%I|-3kwF?s~w{jDU_`m^+V3#1G^dZGZBy7Y-lb;<^LRZ zqA9JH<^(PT51TO>6`^ludW`?34!Urfa0jC3|4^>^Yw1$x8QobI{rrVjLkZKn_oA54 zRIldykJ*=bUaY7bNO9WV3p-lu+IVJo{^1cLL|BU`k;{k|l{xwx)m z6Z_YbYNnMPN48Flm~JuuMDf^@W-TM*Id2Qg zab!GIc16)TT9|0fz4^~E#}Tz+1a(QXt6tlS;g$TJQ91fH<}e6)XW{PJv3a746nzBhlU_QZqeVRN_9TXK-;Xqv&=?W5Iu%&R3(&w zkoa;3?(08o2GEpjY7tNt5Eg-`C4`P3ax@>a&SA>EL>JjcUA+FIzV`yv)EV}7y1ig7 zFz7VzNer1eQ+Z+PMe|l{g(rLoi?lBlXd>1pl{$z0ne!7WM3sM~xh|4iAiH|_^1%Rh58njR6o*0CM#1p}^I9B8z2fpogF7{jHn*SDB=7~loaz=6`>&V?PLYc; z-VI~GSOmvq5u8wt-mMuZJsvok;`W1zsHu>-z!$)8Cxn7CTqSbcHE5R!xiD0>-)YG$O#eIn31=01Y*k>m}rD9dmply^~p zU>Es)Dka9{)AKcY&7JM73aI>X@*nlm(Ft&WyJ9OiJCNLCy2scFduI+AYgt3bwyvW7 z?CjiV`T?-YMSbp)Qp259nX)Q-fplJY)tu#IU^*nzV;dZgMlS+u>$}Q$8wXxjee0vS zBqAf7>1AJ!Iq;TI7exEoY!%yJ4TCm;)X!@hcWI9o24}ZT1OmMt%azA9(H#r}{<79& zrwpXcy1@pbnTZ+Q27Z2EZ2u(x!9sylHp#0407i$cZtE5lS+$A@23*{OP63GPlkz-) zojza=-7M5zo{zn+Q5t16J^=?U2z4h6p;B#> zA$~bF^eQReI=az=>QI9DOM-g%6_Y?ufW?=5Z1AWZLWVJ=W)lwmSQbKrwKjTJ@IsQl zeV81IBi)y+R59djCD)Tb(zA_)Y~E{q0hz4Lt5sDv1}{Gls}ReZiPfm+GxM>j=bYCw zCdP&;pSg%s4=*H~m}1qan3k=#N<${*!Qhh*WzthIW4ZGwHn}%V3|_xA9H)ne%E#0S z3u-vldE@rl#pf?zERb2@fDiT*hHP={O77LXf1qvgMwQ(ti4fhOBwmBqHDg-gd~+>i z+m+PI#(xkE+P(8C1tI^w8^o?akC27}?28nfkX<_aO8fm)LPLCQQ% zmV%I=D`JvV7^iHzu*dvtruRHUvR+z~u2IoL;Wwlb^>F7h+9J@L6->PEA$I~>zqqKjud zfj+cg|0O|bWIO*^B3y-F_(%t>m{%s6u;1U$KFh7Denh{=?}ApxWvoJlMyVeeT`;K8%F#; z`bfrTk6VGQ7XQY_85(*ObA7bD77&^B92@-37=il$<386&3Wyul-9xH*>BF3=hs zWFDkdIUkp!=JU1$UYc+oJLbvVT}J;8%@|p-wNI+%D4pv-dxG6crS z0|fs!6pJ?O0e&#Gem{y{bU13NEE~okDT?_Rsq9;M+$-N{Pz?J8Syona7Py3Z;#C8K z%9+3A{<$djv1YFwl1b_b>?PU_T;6$aVzX9*^i;Y++OH8n+#Dy6h)d#l4KhpjxQ4*A zo3kqfuA7p$TUqr8>aH`%#TE&DGw$RPfzXiKR)O~}f5?-~DdyuYOY*Rm9D|~)N|h|B zE+m%Pb}d(UF_#s*F3C*yx=rw;D)g=vO-?B3K{mw}I~uMn=kN{_fKeElHJ zmrnmvi6FnKJhRm)BD;bHdsVM6z778Oa?WPt8a%zdb7-gfO_(V?G=UNSP$~(;k{qp$ zk99}D5bGc|E6oZi=nMU8m*8g6&tjD6w~c=8FyQat=XQZ=1J(xB-D4k`X}7tY9Ef`cE666S$bQQ8wAA8cv}~n>}+kZZ#%kGs6(&J6c)7k zU=}B`Ro#z1L9ner!He*%F$zia)Ar4UY&-x{Y^$n!H*+OIpPDXVsMDNS&PwX4zBZhY zvJ1$ThzT=KaMpDJuS7!#%pJ|pnXTJFs&QGU&t(pEyTcwzwJi(Pg2j4eBZyA}1*9yq z^BJU%pE+Fs!qr?CIRE~BTM;z6@VfabYG!+AHP7?_o}`$+{vMsp?x4ID+Oq=9?~SUVyl{)$!o@o<&>jc zy%W?+@sdr9JKt;4OOWDO>Y3$q$zKU;T_kDE2yoUC&*sf<#LRF|4^95ONm2Vop(DGE zd?2sCn%}-p#}IH%nJ|CE^@(ECG?%k%_e^r+&c#Pc){s9(*Ij ze$5rOvc4s2II+ylj%q^tgC;zg8b9vt*2KwMhMuz0F(~|{(cf#6?p35MgNc6Wc}%G( zjB-&u(8XlX2K*zjlfVeksOo~X!*}RE{0;Wypm4)VXEPM%Tp>C5`O4b(ErXQn$4&o} zlw-9p=V)+U&T*>xX%(lFM5)SUUN^IDM!nraJkvm{XnCD6CZS_h!Q|LZqL};+iz{_D zP7>5V{|AeJ-+Daz&7I%0yB!HZsrPFFx-^PNZ~rNJ*c*WVYPG5M!ikUk>Bf&O;KO#) zKYtP{>DZf`-K8yZ5Z5V5+=PF8H;?o;Sd>FU`pn>);9}T8iT-<|;%)&NlIgagtZx`) z(oRp~UAYvxKKs--ux@A^7V|2eqrTb6yTMzEZETHqoqPPNd14co|n&gP>_ zDnOY2Xw0k_5}Ns@JV{x=iL>8CT|}@gt>?d<_O{)Kb**R-{G3H~-I?@A*(hT}@?bQ_SJxBZF!{O`%IcWvz(9rpLX{i<$ zLe@oGI->}@RWhg(jXORg;Jd>mVNj98btydTaAY0&|MtBr;L~F|9V=H$IMqB}z3{@k zR}2gV6V+^8_DK_y?;bDRQ+6CHUY`IA&C37@Quj{AlPB7)WvTn`1DKDc-m9F4z2)nN z^17P~v1a3tByUrqF?*s{N{kz4_Xt~@e;-bAs;G%AzCtxb4wM?s2bQ&&?21NqM}c)? zeSoGBMbEr-q9tJp9yq-ECeTM5q1mPmVj+EB{6dugwN;OTnK@>vcFB|YQZ#AT@Z{It zFbEEDD&QGqmmah-Y7_3ty@ZLf?o}T6E+9q1}=cMjMZ8)j zqCEf8Q``d2{a_G7JVa>D)CVcu=j7#r}PlX*81xG&QipRm&U4jFqEmkw!Np9{>g z+a`#ZC8-bL*HP-ZpeO8=LAZ+KyY%`M>K+{!m&FzszoP%jZPqA?<*{h{n~S5mg4Pvz z?78%P#}uL$vz_(Cc6%i&YP{D6`?-k$mtD=H>wj}v-qRfQELkmm9ZNo4`Ux&gHn*V9 zkH#Gp%B@3iP+0-@ABr(-558_OdWIr7fgI9*Z1v@`Qvg3xuSqHg)Cy`txoms205w`I zyGu;qHmB!iUbrfi?hm<%LXA125eYFu>S`2TJSqh-KuhY;FeI}c0zABhcs5$0#>4`G zrQ3JxN$pYCQXrRa$|bioE&M5gSZ5ra*w*ElXdU!HaAl>$4l#dnsnUYAJeZe5GnglX zP*7*FEEzED+2u>OwK1&zi0;nV{K;TL$07T%TIGqClA0&l`1tBpzKCK9pIy(m7lMy@ z%Ugcw!WWP`{-%}Wn$azcAFXp6aMP+yH5BWL`?_eK>A^P{)A@pDUs^=?f9h_H z8AP>dWbPW<39&BO*_92P({Bk>n1$Y~-X#Zg4UC827$n>n?Q|v>Z5JiS>&J>g8;#AX zIPJQ~4+GvvVBdV2w${?C9!RJ(;xSQAf=^)e8cU}3gflrZ$K<#A2MOooBTq_s{WbD- z`#8Ma+rVf=4X2))3;UyGyGG!V#J*c+s0{xg_#xz(;7#5B=7KVDQh}0_EQ%J=EG6?( zi;d+KW!jvorZ;faPH1@NG4B;o7hM$$EZrLAThD30##e}<)d+WZaAF{F+XbJZ!`Uq)(hir$#@!N1CrufY&Cimd5VKKs0qjx0H~BlZ zebBz_+3c4hNkLm9BV2P!YGGm}<161g8!FxBz%=^o zg3y3tstS_rT^*z=;s?$SRFey<*-IG{V^7al4+BK@ab~umvpM=zc--}IzjoPPk~R>%V6U341vZYMxehiac^+fkScK#NW;3bT_@~G(%dk5#rscMt(uH$b zAa`i&%7sb;Pp@m9$zV9w*&L4V3y*%21F};9HJKBd$f6E;DRx(x(}(Ueos8bS#o%?9 zWx~YbY8Cs4kx11UTYOYNMN?&{2nRgQ&BQ9TxsF=Hy4MP^TQ8ct+z6`Lr!658;QY`p zHgE%*2$#~!Nsr)s8XlV>uB4YCQur+j6rtrv3-$A{jU|WOSOg`DzTOL0%FD^LjO9hN zR_(-3Pk%5Mv;d9$%b3}C^Ga={5b1@@!Ntg+AN+Md^%7DJh$-`?p1_B)LIrXRs6>Fl zP^i85dYY%g2#8S4;k_AcW0C#xl&2%Ht=A963}tGnyP6ta%;6hOgg&9uJByY)(jstt z$Tz%LHA;Y-c@yn+D4JlE*SGSQGp9kynZ9vcw*FaTf17If%n%_!6$5#Yl)ZLfroxA} z`hr&Q)@^4>?|j!uO670SecMfNDZ*5o{8ITw?2O?4EkplzbX8Q#{uKylHfJAAM6UOW z;+^1;z~^dxH1t_nxAP1iniFKRQqym1DuoTX`3>=0E4SU8CwMR7i-(8po$pgmMtm>b zS2#U4kqPCF2oRSm;f&u#TGQ_~Qz?QGi%E@^ih6qh2Dl2HuOhk2+O1g?hNqCGhuQCw} zW07{^A8!S8I(^B~RTH)^NHygmyE>YdQu^R+{Wy6<>ITnFeMtA8D0ZJQX1|f&KapuB z$jyJVx43qcE*Q()J3FqnT$2{0qLjw}1}((!>S88tZ{I(WPwbBYEA@)QugDxaaDs(4 z!6o5l({F6YG7RbbqwIZBSt$t1C)iFSoF(5B00(W-!n!u9_!0DQA8e#Pw@i^_@9K>F)t%T9JkYl}P*H`N#J0gH>?y*Em+se@ zAn$P`wr}k?JFgp+W*dD^llo6QVFtWY_!caVl1#?~)K!PQ>qK)F&*`3_u79n&HE93bErn0!O$UgI(%7GDuD7Yvz*4u};!f3L6d4<4y}Ag?8ru7R;L^;KQ$Ab9!P~ zUsDb=dpfC-!2cx*%F}D=iv=pM{~%DVtWQZ#E55~pu2!o*bJbV-lNZyNo?AUD3%Z(E!rX-!sVCtOg<7En25n8QMXUX6J=L zrCf#LXt6fdq21hlwLk72LYxplcD$dR%uxSCL#DbtNP78NJO@u6 zoPlRGJ7Kz8H30g0FC<@oMs!t=Br|`WFSh;y7u>~oJ+Anny>fXB#Pz@KKJdh*wJtj+ z*o!o;cE#$=4*$JNtgVeJ-Qpv+p24q}0DI-ueLO9OyjzKQEL)(KWssTI$n>lmsfS%r zPtBCuwVWRiQ?rF7@keW8^zTCm#&-?yj;?hX1Tm(`t>| zMxi-H^XYg11smlKXC6%);P%#F52s?Bym&d7R|;mmTQt8O37k8l7&qKeA{nFn&)?bT z%E($?Bwjrv?~gJoWh{;nS2(Q}BeOT3_a#ge&Ox|LPAc%KpD4Y-+Jqy2=|sS#IzM@3 z5N!apH+BiPEj}8}xU{DWr zURFeu&=Uhs{$PpST&*WuJyN04Y%g$a6mkPH%` zwYjMFeP`h$H@M<+m|6r5MHD>fI6Lt@lH)_TsCTmF}RTAV6<0E5?na2m8hCEg^JAS)$l>(T)D*2nKQpjDz*~@ZKHVbcK%>&s- zSj{vf`HPGen1i^JsNbA)T-BjXvSH1$KjF^@O*|4UP0yRSmdek3lAD%7D*z_v`F2pzjGzp>exZ<40mI5D2Y5U(HSV&BOheE}#X zW078V2PjSLiYwFlf^~je`@BdfyrK102Pwr2ww8K2gDLa2wJpPnau?f))XX1Xrq z4=(X$mGn)(hKe15A%B?#T_-09%vb&_NMR{3y#H03^mQf22}8}XdB(zDbO5fR?})q@ldd+DD1*P zRe0UDv}-R|3sgPdz-#wCrOF{|^>1>}$UJxQQmq{@26KRSkK#)z&a;KjezFlbY^Vp%R zc7IbaSuq+(-=$57bSi~sUP))#eCTzyyf=?8LDH@Xz)QyYAn)KItcoWLKS z(z2C>gCkV7VSyaDKPyt_t(QU1NYJ1NM$wXKp^IoVS;(~yq6VgjwhuU7NUVv31aDWh z7F9Y2LGN@Bo@{dS*H?oDn5KNUZ%q&EV$&f2iREU(_vHoJyRQN(5w^oiGDLV4)SjlX zO)(Ws=SF&EVyc%F^tnm7H-3XBu{=X=i1Se>J;SCyYfb1VR9H22#a14M;T2ab!@F0f z!Dct+@*BBgq*+wWak>qS<9+7&6HNu@9Y2cp#WP} zycj&*ckadOs$u900Ey5NJ}inEr~~D0&MaTu2YOvf(8;R+4Es8}qB{%P8P%R1hAOES zK}eYMjW*Q`)C<#T6+ix)Xt)%*u|-UEd3<=q3uhsk!`cjPL~tl^b&F|bTa+Koh3(qt zR5jHk_FJ%YtBV=q(eRYSMZ@!w@(GQjBmBIj{;^RWIFXMl(Xa zqu0WPJL-p23*p=N=f8dArHwKajwiNMAU;nbHwRV5X<^v%h(m6drN1xR_7P)~Z%{~O z8M-O9ZSEtqWF!l{HFmii9GfrLgC72@Erui@n@x%AdE7_HcvN5#|LJ*s{p#1m%2}Us zj=iqkhU?$cB3U;p;T=;a!xainu)XrxZxNJaYnAycctA=(3*KG~o@2nw?74#-hf)~k z$K4?rkWGhszA5ilYYng||NdS6nQ8<3LjG1gVU=(i;xhY%;#sO~ZIiXD-=ph?VA%RRA==v)U>S^X=;9o|g>5@K5C$C)V;PU$sY?BTHlgIo3Mom&ZU0alzZT=ITzRIcm54Re6r|N?%8u8{| zo2GPxbA!x_SkIK<8^Ii{a`aO9)HP<}>^Dnkr$tH$yyRTCEtdfBE((||X+6~Eu#7z;so1{!sCUHX@?Sr=L23B)_q^XKuTLNX?OhwIMT`JVL?!Q87sy!L z%`}UcPRv*HXc#S#Y$Kt6wDrl2LfL~8?D{M;9mjcATdf254L0a3tzGFNAJ6XQMD;X? zE6q4~{|$d5-niD2!ORP~q?ye8&kL$O*caqbJCq92P{?C?$b%tzJ~5lo5U6!VsZ30j_s@;S3Mw+6=~T?C&AdfWVTbD3 zZn8&pVHdXNefzuHRYnN|e37@BLjZ>|yf%^ZxTfIgnr%G~Ut71LR+>+^Mck%9c^Z?I zp}hO_I&gKhg111E;kp`af_YLY*xX_|9b^1)#bs0vrYTqagPJuMlC{sIC>vYQo_`{)FJ zyO^U9Ror zRDQ^+-k_5+Mtti`@7l99gIzkVmXUFabcpQZ4Ri5sD9 z1_s049uC_VZ|@|azSFlV`RGiWG>cItZe5E`{LvYlNec!b^DrP3_pUPb)sX(t%EV^U zQ-gsJ@G!BqlH)~z^m8Da;wY5rjhTou^JvA2An0LWPh0*$QtFI83NMdT;%mJbB`%Zk&2e{NpF?wETgoG33 z#|~R2C&3-Vt>s`S7mKCxHJFyEpTuln|IOF{z<0az+BukhF_SqyQRiFWhYc9=f}hM- zcJ9lL*@$Y!6RIEYlKs9rjbzCBB9WqklW;?v1y@g zk*~50!T7SS+IGYW!RBDTDUYcKV(*=QCy>|Zv}&^Qj^u~szR=Z%5gLH>Fm?28E46AY z!BTNpjmUJB(bk;D};&qguci4=JL*BlKi4?FPZZ^clCun!jl4Yfb)bwef2uHuHlN{WLR z&q6s1B}^{x)WZ7L_2GuUH<~F;*u5S9HMZY#daH#NvC=d5Gl6eJ1(QmysFODg>g=kt z#b_#DcavYZRMSR-ybm@h4qUX}nWk$5f~^9At!thwesC^1wXuzZ(`3LV0@k*azC?&v zu5DoWZ_1J5b5DiK34}W1$D-lJxUhe@1@AB2NMeS+Gco3gJ&>i$sAU*v%s|g1b2T*BqXLvfZn2)*PFLBL1lW6E zl_2S{T=6yu#F7T7BN?B;H(f!- zUcS?^c$-wDf{FsQEOV+!08q2Z$bLrNE8h->C$AQ%1qUOZG0W5AK({;1A0s{N{6xfd}vSgG%5(vSe$#Wuhoy{pxecClE(N4f0s zZ14;t{>DiQ-ic0Q4Mqn_+s_$8MCsaG=&}rm;4Jk*!+G!7xZ>$`xr~EpR06_i_m|_$ z+(Et08@YsO)yhGyiG^0a+=)VS|Jz-wZg@rGIwGvb~alZEjuBH`nyS9~ljj%ad?FVEq^g{F&m*tW*ni%`KV`O7+O~j6t6s*j{xb%}Cpw5FnSE(be+c@IMFoIVA$JV| z^9j3_!zJB4C@O}A)nnG z5i;?CC+Iy9UuA2x9}V%TB{L5Xo~AK7E9|bXCvi1%-`5L|=Lc5NAHUbRRF8Gg*@{GG zaXb9pWKu_%ADf}|HhL>5)O!&*q)=0I;wt>B34QGpBd|ua!Tw6Xmte^W!zxM0At1-0 z{c<213sj~0eCp_=@G2KjbXQw5j8ApwY6W^gWHb)LSlT?iR9Y$z-Xhi^oDB@ku;rQ7 z9C2}5^Pi%jWSHxLVOpZz$ih;TBTo`<9Zu8Wj_yEF)D zF)^qFXTjElc4bFCqO}!;N2Ex7E2<3y*_ST1kFw!m51~aBt}S^qQl-j>**!JW_GABH z&~*N?NXET zFz9GV4AbiHQ+WE<8L@s((9rP=OQr)sfE}$Ys}9Y~>}j zNg6RbeoydJB9MQy9F!{?kJNk2$dI%z>Pdgiox!VpEnP6mq(ehZF3gB~CNJU86XNBg zRns%_J0APa1?)f-lXC6G=DtoX*O!@5ridIqE@v%Fr4jJ;8L+@BOvtjtT!zf&UhT~V z=?zQv&ReB(G-b~QI+%~mlKJvqCMUDaP~@!LE&;FuL8v$q*P+0BziGd4aG9d>%E6>}i2 zuwwR`Upczqw~6jr@1x#Kb-2*axp6QHLdsQ0U-mzQoJ3p1TqbKNChY_hm6wo@i~g;k zcQnqdc8TApWXCCmM)g2*$4YhJ3u6UMMLMDy@q^p>mRc<(ZELRISIeutA;}h{L>`p> zh?cg-SavjGR)pa?xcey>6ngjB3T^*{H9n*PSe$SS(T-8&@IE%n&f%F{)@t zO?3?|B>I&lsQ_cYwy8v`x;y*3^>==y!7OKxA@Ov4oK9>fBU`q3$fI+iBrX$Srqim0 z$7vKe_SpK{n-T26+7aQ=}riOfBpzEHgA*6IwIk%sZ_t zM05N|GUzy+K(4R;GW=^s6T-s&6@_dGLcBcV;jzKLrW~_7&Eqh`s&VE+(A9D zw!&6ICC!$vCK1+@@1+sR(-hgc!@gn~o?nZSi41bE6kLf#rdC}fX1SWZ@08T(2SSCX zOW~^7{#bXeI<_K(=?Kku_Y+JWcb=j6`YJ( zeY(Q$P21eh874w9{fs){mYZ{Cl0Z_z%O`waPxK(1{UA!TCq>lD*?r>T&+Xt}QMh1% z{#pm`;O>!rRWFMH!5DfdhJ-l?=yB4G8NYG2xr{UuN} zE?uakYqVCn(bthi(iLm?FsIMN-aUX94Mmv@@8yZ1yXw_{#uz=BF*#j(TX2QvtBm)n z@Zjuh58|E#o@DS=Zg_LQd5aTS2ry=r?9XgjeeLbi(aGWLuDklDC(LCZgN(?@*bDf- zZ?rb@0v**i=FNgCCEOQQILK&eF`Oi|Hb6WS6-F11z{7jYMRvmH1Il{o$ye=wax|6-!Wy7LqJx6@x?}NX05nP?!AimQBMez! zN3lol0X8{}Bso-fKl!(UW;s{z2yGR3XA4$aYanDAV9yFi570VQ^Ifu8tmBYjtsgVv z$}ds0WfSG-0+&9S=xyN#aG#^5$eZ(4*NHtr&k{ga8^K>K6}xiwvPhxE;HX1g{)6Dt z5lsLZ7P88}j3k1{5ro^Glp^F~fXa6r6C(l7;h1+>H2H>*_`usNyy8%s^ROcepkSUa zCtC?A1N;>%wKnwpKt|TN#^`f|M+S{JqFU8`a|FWs!=1JK&!0l{UG6}!@|YZC|B zr?3U~G2mOjTpWa;CfR_ve5As06{$I5t1j_d81_2rKI-M-Sex`2a_!1iLZ6$*)L^aJ zCKb9(h4kL_j7guKL`Oy~0H~HxjU|Ps*G6GVqT!BnVx6b%cYZMNO9+@1ZRXG5H9bye zDa48MKV!JmM>Mn1GrkpC%4Wj++`1WhGFs{kQo~$;fllFfnh1X^+V1fVGGly>EP2@a zN`BUv2Ie2_Upj&xM8{7pv(hSd3gh|FNNW7u6j@f-{2b$!Gh>T^{HNkWiO`!Bk zR=wBytfmV9uOlkdQJgpG%V5N<=h0p(?Yh@;6aS*x`7F#)P~AW3sJX1t|D#6(gMZUN za(EbmtuGdGP){HD=a{OZn=$dRfnA^HDB#i!B&_X%Q4aHywMKge&tj`!yyXe+-$_dy zC>zXqh(?IHU3jlHrNYmsObUQq{Z_;RcM=|mC#4IpCajBNSvp($~u{x?r4~VD!FyenCaC?xe494m*@hn640AwpV_?_FkG*v4`*dYld17&|CER_ z;ppeq3c#iRxNWjbmE$PMm+H<|bEQtnQ&VY4;TxO-W(`X-L|4SGBsmdJGg3ZeYSwll z`PdqAsTB-(cgg@A;Z!HtGPyuYguJzXQSpU-MkdqV^ZvZie|jon ztl(f5sl&9xs;3u|$ugT0+Mqc%B-`k-{&<_tG08mgu+Yj0PF4c6KO50SaH9+JB5;1b zhf%AWW0p#Gbz{BwpMwwos>5~=nJ3#2&bXQD`}59Owtl>g zbsU^url9VyWiKBYVqLoBwZISS6bo?u&9QvL2p_Oek~ zqF5UAP{Y(Tk$c0nJgUAthkCC~{JX^f-yLN9Ov3xs5F&g|-#Zl{CRhYwo_TRl%g{Y! zFhbD?J)(g*MjpaPyM~-+V!gcaCtUq`HOQNR$x!@t`(IKK0ii%0y|vw|o9}o2n?kqz zaRHgQS_$CgM%tzJmP&e$4podHEfc2p`#s~N<>0meRl!f<=XeI`%?IO;;B;--!SV8} zT))g6b8j887@#Y`0H4&8SCXCDy+lkTL9->MH>%mudAJwSv(?`i|(O$TW(uH13F;}u&>CWlAVU<6@6&X z(6?dlF!m8A$?_E}VAv!_cl)Bo4s1yHQfVE27u15U3yx@6fJ~Ir~a$Qx*%ocG0T|!RhL_b7sBaIc{>yEdMaa{p7iOaIg5hp@cZK^4p zG_>_yiSJHV%vOR5gYvCl&;KnVTKBX?EFqNoQ>M_BN!%o@g_WufW&NymJ3U4-1h-}7 zhSt;eSbp|)?v*4IfImIkQlGpNftbI<`l-;ee0?oa2gO4Jxqab2stFXpBsfNZmgl*4 za6_t`cZ2oX1b2jQZLvE(Ls-lVZ9NTA;L8;9uAD>QA2wUYn8>noraGN`>Q3*p1!cRQa|Yc_Z=|-+$N&Z=&PAt%6t1Nb6Z)XaHZ&-Bq&}clui$#1R?43 zdw|oo9oqS|W6{*O?sG7hbhVb?bUNWs9EWOr(F|BD(4FJ)+F1^*z9H^0Bfp0f4(sec z1QRPkZ_2-+_R0&ch2J;7z_2NQVk+FBh?<0_e@eq(g-TRWP`^ViJEkDW@1wt8-u3qP zuJ*ZcI_hyr&@I4BplXpH82K#siZgk?kJuew%JDk>tx0+g zB=KaCzOz_h@bTciK_$lP)AL@guz^>45`RH*{)1|G;wU@AVP~SvjP@{5XuwmYJ{+_3% zuMiS7gyUG~gu;=?D7jB zPaqlYFx5D>oW!Tr1I&&z$e6n#PwT5F*KB{v)x7Vq4ZQK!{Q&YMq!yCR4SK71>p>bM=@a+z{k$$(wA&7GqrjO0LAu3 z=PwxR5`qK-C)ow(0`&BFm{Y>LTfCT>LpiA$M2m|!-%te~St$t_Jala#6)5<9_l=lm z4&&+?!hM?>XXibX(zkx%H2_Vlz3D@8jKu$00>99Ddah)|@EWq2+A2VgkT|Vk;OTdytRj9&t%S^qjaU!7PDl9cKOP5U9~_0H z=8Xkylj=E&)fWtU@+&+NtWx6s%iXhrREO2x!I$DsQ?Tt$6Qr|R_Xn=HSM6E^4@>P+ zj>EGs&d&vd9N}h1+c`l>jC-=1{w?q!&_3KsCfp4uj6osg)~p~8#WQ~Yy!`#}8MTa2 zDc_b#OgwgPOUK^m{81`z!_!t&R%^Aa{WNdddT9A)}QGr4jnaU%1+jVlzZsEbcOzt3m0TW%z7oIm~nBm_p* zqa0fbNz@FSW`SWHc@0bPR9_p|%iwS}ip zSTTXS?A4XoHa%q5;9$7Zce+&Nq!NHQ?1+4Y9|Ny|vJf3Rfm zrWf)jT)S8EXtUt5n7C2&{@EPx;h(YTP7Vt@UVFE%VbT>&D#p}AB8#!dvwC~qRNSZN zyYYGRE-Ofb-2sB~aE?3KdS3NQ+Qr)X+fR>)Rty)l+hl6}tl&*;r{;mXWNa#WlIs=J zRSy`R(K(I#rB=MKNUm#VQByTa|HKp}o_fye!F7pMO8eN(H-R~5cdzKg|9U4*68~V_ z|4@2aLX4cv%FXJ#9Jsi9@v;l?we@eWUX`J_`O*KvJ|B9?|K5x+&W`Nu1%2~h%S|z` z*IN}oVzrj^a9jDP0Ng5{p~%O+SDd&T_2{!V2%~S<%w&`hRa{Iql!uf)vcGgdJYXu( znp`urv>Pf!6H#oyVL*r8BJ4p>kEQ>g$2e25yI5lCi}%wG*>n7)#N;&lPw!ZMIC#@~ z^{vfjUw6~ZXl1pm-xG18&Au&70x?H1S*V431^>$CT@Sqzy$t2VT@&fKK&u_RTV_9NE}yV;nrZrMwD?TG#rK26f{=X{ojW6y;iCT z!!zu<>5&HQY2#}nmLEE2^3lLS<>U-L$YzG=Y`F?-=pQII?We5}PK)K~n$Z_lCg$SmPT2*e)p5@B)7(AopL4 zv5pKbbC{^qc(W(5s_i=sPG#u}Mv89=l=&{;42q4w`w*wj8o zgN}ZU3!jv|^;9y%Q_Rz`*2|nPdleB@z6vV~(D-QOwRj(Ex{izl`x>|+`D^4mavhf6 z+n+qo{$pDU)Z1mlgKyyzjKzCqR+m_htm;y~sP4izaennn1cw;SvAi?dZK&Q}ZQ?I5 zTqpHmPQIT4{{`F`3UR0;nf5um9#(KZL{WMaQCR*NnSxaBkChQ15fwVaBRcD`S4~LG zy!fk`3_z;Pk_?nrfcA+xrU_Hpw#na$`DC9ABv}YyOqDX}$Es&$eKjUI&itW1FUUG3F+_E(+alE)`h#ukN|CB_0+FW!YJRMtNA zfd>f4#xLdpRfTal_mY!qJTtr6bkMUZ9q$kx7ujNQ&ZG4oZb*A!e9SZ5Il8EOq;lA_ z<6F^4Qx3`1wa@u2Vx=Y0;NAn1w4fu*>I&dhE%3jVahM3a;Hs!)f)wrH)6M8O4SdDh zeD?c#&%FZRR?eN`ZyeEvK5^gZiR^Ocq|1iZ`bPsYq!*gISOhfzldGF)MOja7<2V;uK zH~g8E&sK7Dg3K5ku+-wAY7akftKIyU3i_xAv4&wT&%h>fAR%vDBF&Sq7D=~eWYRc_ zoKO_aT6i~D8s zD!}sni(JQ~UUP;d5uzfd+@b7tfP5TNYbF>}!w*QiW+2#TP!QA1CdaAPi+SV}epOBg zti^CFm;iKLZ{>Dh| z`+J^Sg3l5ePjHCWvYt5F!AjOR$aQdZs*Ndb(*|lUsJx-bChj;Y%5lDt-szg{Q&!Yc z=0wp3v7cU8;W+QVPpj{`Fp!WiK`?^s;{UwCu*jxda=>Wz7{^{qrSVyN+|~>Ys}Epr zSmya=NU57!>q=fV0Y%=WSOi&hTsAo)F{`tx*Z6uSD~HoDpY%kC2QG%qJ1}(RO`;w- z>E*rU30dWHKW%G$07Tm%=XQALx9SX@h>*e^So-C;9gK0*rC)S&lH+}O9R_#b#vdh39B_T~9!2wpwcuQa z{alN07|*yQq;Ms*-WLGUERD$9bp^fD;RLap!1LCe#x!ljg15pBBbTg7%wNyfx_~{9XpcIaB-J2XhZypj6GNT$I>ID!=?B%+Oe-!N}&TL3 z!YzpwJzh1~V>~0KuA6rkQI>}mdizlsh))|%Gt=9c!oqqvajGzu?UWrAlAuQyyVrLs z<_;$oP)_Xci&{(EPkSG#U&kLC3~+kJq|Q^!m)r5C!DZKdCT1tK-idsAj}^i!)fuk< z=WX$3R=tyYYNKg|>@NaVwRY(K*T(AT^&O2`83lI|z6L&dMea^DZ15Dy2tx3>@4zs>gL%2s4NWq`G%wzWQ`+OqF;tUookD-QE2zGrh`&Wh+d>@fsq&~mN<+)9q`Jwp3d z@cU3jnM=WfTN&KiqUI%RkUZ6j1($GvC5ef&G+)s{Zn}4$__Cu00($d^ z_d#QNY{tyoMYS4MTdBZYZqNP{2B3N0khpXRo)!oo1%q1a)o*f99Xzq6+0j8>zC8x>=oZXH)D+dM;Hb30wQ+wGK$H8v&B73n$Z z{8ttHIX@49uIAU;B1#&8Pu+&yL0;OEbEoP>8E6n0CupBeR~2)BpI<`!5_^v}$1}S! zuCpX^spUQu8ZcYD)7qt**?N&U_EqDD-&C~*3Gn!&^<`a`)gKOENG6z`tTEE@RFd=es&Ne_>MH+P%GY;P zh9|9otO$oIx#%HOx=kiwj}Mbc67csi9p2Pl`;YF)v9;Gd(Zr5pR36^6JC%*G-pI}| zLC%J`jqn?(u0iuw=j`%tJ+Ab+iH&C5(fSCGrIXvb+}DMc!{Z0#u_~3M>`5}79->r4 zvMzvnzX)kpj2U*b|M+VX4!S_>MFDG+54q%QOx|tM_`&f)EhmU%XCkG5CNPB;Gk;L% z>?yuAWZK9@o!aXj=J2tFv||9# zTq18Jz-nWf`1yEyfN0-j5O~pR+CY0m`rSO7D(QY;Sk9$jAaEP}edbS5Lr=CqXsv8~ z^kn^f$2TQh`l||2XozlZ4##_Eqqu$%B}vG)oKEt$<0ooC!+2}dXIw(QPi8LVhn}n@dpV_6a zrGT|{QmLxz-Bs#>uEi7#3@ff$jFNL1H8VDmWujtwPvm4Y>1U$ZXi&>NDK!W|7?E)S zbeJe3-@g6bNReV^!&JLcsujD^MjgVecc1%dyvXIfpU4$ktXXG+-}}8~WV;#@vT~*< z&&3dV4*7M;>>jFLdZx`Fa#Hmo6OqD>HF>Y7*QGnhIU&Ajil9H@3TzY!{ZSN3oymC7f(<^gCUXE$Tfx9d;b#Ntig&pvst=A(W2h|Am3_lBH#d-2 zV?>}4=pY}vOFsp;$|d+vfw-{S0FNmAohRxZfz5Z+D4mKqNt(J1_7mx>J@HkJwSTC5 zMP0D@$6u@kvmh9Yx|Vfe=@t}Lbh!}P{XJ`P)-QSAI-t?&jVV6rEHWp!BNa1Zb9Y5b zF0ZepM0$3`f}bNlSh1YV&7baReSd54B|3?=KKHt3LEg9a6~Om6y8Jwz^3C{yz6@Rb z7|il``g2}Zd^6GHm#ex#4KoIAnRh;bIqwc8gWN;Etu@MMk2WT#Z%0O=N=Nra z8&Ez{(9KNEue-5qdN?lOnAS?)%m`&2H3H-}y>wx&JpXo>%r;&zd%Hyi?!p~MA7t(x zb_Ag4B~7;S^KV|r+oBRAG0=b1?k>>Nfi+~B7FAC?vXOxbZ*-d3SZaJP=;AewnV!ls zGCecVA`bB+pyPKe^XV(Vt8v6qHnm!p`i`C`ks}E^N2c3A^ZkUl>DtD>Hol=FgE{73lOA`nMhVTOht_$EUiY2TPL6V6>>6M z4_ziufpP6(9$5hnA>3?rt%GW@bE@#0R3_-M*untq17ZiW&XB)LZ!NE8afcQ#KduaK zy|FKhuXXJF(aT{kby>nAS4Cz^Nowz^bgxO145ZkH1$$pSI8kSZa(jiDlFP?Vz6Dcw zZFB9CE;mNPwo1vg20*<9fH7NyDfr zfMLYql_ZUfZ^L5JdA(PaG{pHgN*3h91i((9CB7}(01){rE0>6`_pIiP$ksjxV@>s> zzj1%5!ylDbiiDz7P!<(ei{yptCi0j%T&X#$+JLz_bX-C<-^%`uPHf>vx9sWD`JZnR zA!2=7!*E^c=AZj+eI5IJLNl;e?*CHr611;zFGejisC^i0#8ul5ErZAAVx$E4*f6A& zaMR+3a2)QRCq#HXYy{`Ox`#l0CogJ?*6O`&`gxb679Gnq^F0k(Xz)z2aG)Uw6zm;F zP5YZML+ue{R-%0GiY1<<1N0bPL&unO`axE_@he7~b_H-iIr?075@K+J4SLK<&q3ec zAyEjot1x|l0oR9d6N8S%!5sfH)jBGg@FeNXc2L&ICl>J1ltuZerj(3p;($CLPP`+Jfm zeWRNV)7?&{26tR~QEbn(}v-EBo7>`e%Kh&nV zL^~mV^u>h!Yqdw_`*cAEYhYrb`=sJw{LmI^48tD9y3>U~V_IibPO@NisgiY8j95Hs z`WE2?Y5%^N`fjEv5&uK{H}53xjfqS)axn-w&tCmSRI8(5zWN8eU&Pky?wn^+iE%c@ z>57I;j!P7gQLY}B?Isq*_z54PPN0lLRbK#bUk1a^ShE5>yKi=@Og(xlTA-qYQQJ|J zDkT{n&e777Vc=GW;oR}3rgSJ3*jXFi3?sqIQ{EBb2bw6?hn#h>f`)8ZJN}iynJklC ze=t;5yzL8u=^d}M$c<8!^>sc{5hRM8;AK~i&ZJ1=A0&T)AfSSC&{STI<(!2+-Vpxm z?*+e1rVIELpfiJzOGO?^AN;rAYk{Ua0@#kp<-0q!GxxlgDVXDd#C# zv~-XP>M};&Hao=iLK9P*Q;_u7rmOY?@ouil;EAnAPC}C8-|zbZtZiD6}OHC4`>fq)QD-yowG5_`$TKvzmMOQ@7YLjn&sHu z-JU%VFz<%7!zWFZr0_iUp(`;bymMUw1}mw%wMq7@C~#MGktw5;0A<36uTg5&rwR;j zGhD&Jb}TZ6w&)}3`FOPkOf@1rpu0V5$W`1@bf-7cEeKycsk5FOQ-_V&GhTO|pCj65 zpowUVyWQ6`RMO0W(odA>14-dtDN9>`t|q2h(b!!hkVNu>XZGV2!2*9<{p)#x`8lL) zWwHd;Qt39}{zs$K=|n0d+cKUqeslw6n~qGNKo^^5MGTM26p==fMvHp%>u+`xMo}uW zxWy^HT>WzKx&Kz>Xn{@+0d$`PnLs9T1ijv0KnDQxp_-JEPIGm>(5^fb#x6ml@zW_`h6T5b^!E;bO~gQkYJ9DySNL0mzctGFZ7C?)eqRa`+o z@FtO57G+38LW;0SK~mrt0xmsAcvgWle~PPL$W=Do89y$taCcIqloSMJ7i*G94$;eD#DL97W9MOrUg=+Wbkd#R1Gq-oe%f`c!2V==`V<$*K82Dku3U+L11rDhN5xzs zDa+j2Voh5{hb!HlJ3gJgI>o1HW-- zqt%mwsj7-^dw1d=aiI~(7H0PmB~+5~df}}Iz_#S0uKmUjSps<{VOEy5IfH`&m|A7o zl8n{EV1=DfWU`8_uL@1vm+Qqa-irg{LJGfLy;i>XA$ijiarT-LW{!pfcQXv>=(L5k zS(d>>QBuZuQPzF?0rPVFWx%l{>#44GbL%JT+^&~{(!3}Y3ii9&iM4|xk#!zX+pW}Z zNy}h+4CImyMc|nb@3s!(7aV7RtO)`4RRiLyKO&?4P4J?c3_uFdI(NQ%7M&X%hP7Vo z+?=M3uI50IKnk_<4mVaC4rZxHq{oY&#?BhBxpFwP??Z7S`qtzmc|l*&vDaCo+oMBR z;OGgS4D|h8LCRXp)qm9hlq)tmS0eBii6+D4o(sUuhb?+0ivqTtXedRh1Z`i@L}4bU z`<6sLn@KIa#$s0dE2~j4TevVg>Z6f6YT~^vKn@pmt7ec#(p9IhoOdH*Vnw_6U8Mx8 z$)g$$&l;EwsbhN)`4%B#MB8*PS0$D3*)l9q`d666f9PxL(W z$;FHbzzo4&g`30q^?KhthdOdl#ZR?$@LSgBeg48QXt%ugQ6`qZsXbAZ3mU4IsfSPgxRik-8ov_}{e!8y+qHatR?qm?(R?ykq^} z8xm1R)t4cJ@GFy$vT&Tlz?|_5;i*nQB$bT zz7M(o_A=JC_mM}D4$I6xd@XOToy99oZ$vdy2=+H{9%-J&T6Rx6Nsz74qpEqMcqQxb z02r5X@w_h97{SR&k;5AYH~U?N01``{a{L^VdRM#&PuH*o2*o%0BDer|^8a*Krb!G1iU0HW}26F6+<%!LZ0v&r${;8y&PzjnG8W&Q~?}h~!%& zRc?Ue9yK@tH5Vbho#pTCwt3Ahv>ik9Z0+6<|5ekOvCAF&5z5Nkk6|H%3dbtXZm7SZ z0;owhS8S7c@5-^^)KH5&R={WO98X9k5>!L3>*=z{W^dhqwF z;dBQ60;wHt%EO~>lU$>@Y>hihUrD3(BmQnHJg5g*lHrenF%b;85;Pe=?GKR5-;`f1 zikxW{n>#{aQY0qTmbIEtwzRfn6~6B2Xwtw(Don{~mT;6ppD!}ACOAR^dCPOEewBS- zPVU_igr&WM6G#mdDUz;hU#Q@=9CtaxH-X_eokA@YeS_0 zus@cYr1_!bQ7#J9r)p}X{3Z#|FP;-Ys}_p306W2Z zEiDkUP$eP=B#0_N*sjg@m~%D|sWxE7PyuG#1~hO5 zwC*qQI(Jl>-}CesGimNJf1#_kwvt`VJEN3TWmi1b;F&E`@(FTbDZSU_UZ6OLFX|n* zF{?oYjx&;aImtC@IrkK8Y*L7<<0Q&B$dVfHAb9b(*jW$oiqune;gCXvfoWf9N`o$8iG*to0=tX`YvvAsEmQERv6d9Rr&%$w6r%SIV%QzSq=@)jpmAm z(~4daYbFwO>=Mh?oHNMSL31DS2~!u9XZfyK=Z0S8P`Q|4>subXU)zbm|K?FJT@bPt zOTaP(_CLSH5kH(p(4t?S){dVCij_%fS=Ri)PN9yiMAdNiv@ch1l-?92*wR=CbO=`D z#s#7FVUL=6ZHQTe%w!Li4yN1HP2MRo5FB>*ov6hj&FFlogZ4}=Jk?!42(!@v2il&{ zY+M?8z+9SHfnBrFO-A3>TnkOAEUGP50bB9oQ1-_qQNA*3=_&yg`n7{}aeTzEkz?vB zx68SZzgnTl2+pzgf(3gqG*hcG_|(4iNt5c^fED|Z8D|r9r_I}9Tl=0)Ipj))^j2_q zpo`CyP~He^`r-Ekk~0x^*8ug=T~#Az3?h6-Fp>WN?IM$Y@N(=fFDTMSPWCTFAH`Mt zWO~E_N{GFSw=lib4VW#+RdXw~gxrgoe)L^5DfEKo(0h`#CyQ*qb}L?vidbXz`sFq! z*y^Gk=?9R;LUDPQ*Ez+98D~3B@_Rs=EC_@!lD>?pHC`MDY2Js-)?+XNEcFeGc%wDH zA_2YR;QP;c@VsExkILEdGETtOc(8Hv`8R+LJXY}YV~4{tvE8%)Cy4NXm^u03o4;JW zx_LUHzQHy8yk2xhhO{NRH26d7CBm2~Y9yjx;e^Wd-H=Skq}idrFwMjqv}#9Mf@>*D zE;Rg;)kR^z#Z^;Sz+HO6Jcc!hh3!5_m!V|iECX&}a$s*l*$0Y3*q9OQ{x)^FwP*_p zg0SXIw1%5oD^*DdU||Y7sw|F$p#)373WL29^6)r44b=*B0W;=n0F7Bm-`O*GwoK0| zk#n5DVQb57+V1QupRm^%3(t06>j*uU5Vjb*Yu!ZVUoAz*A>;a=lTm;ZR+T{xX0_Vo zE7RNt*RAUAI_h&~(353?BVU_rKVt<&k3eP8#c!8rJIk_CqfaA8Oeld8kpE`xf0as7 z<3%E0t*pF*uf*2tZJLl2d%{d?ky!&R&!bH|AX;w^MS0QC-IqGqtU7 z@d!gdwJ>L8 z=4W=Jd_}(mq$pYj<*Tscc_g|TaNmzD^$p$BbE86yRFlS}m;lQ&x$Aa%TTZB?>3RTh zhEc7}(amigA$e8`xB^AeeLbMg(VHw}G!WF&jOS(8<<=~VR@8IK0)Y6QQCfM`O(jnl z9T;K|8|dm_r$ao4s5rDm#0B1PC+~fiNQO+SV!8wuiHci?r3s*KB1=1+;=~?-eltd zi{rv)3Iw`d&8{-ZYy8XZ)DQh?8o3XYF9CrRy5a}t9vb_vBGNd9f*gL+`F@wn>*5yP z>w4b8THG{X8DqTONUilhK` zb^7?|uJkHQxtPIwaiqDxW1C&L+k1zHQZlD>?OpqtDe970wA@fQ$t)2*>7|{IM5-Qg zT%=xMmBj|4-`F!s;t|J!yyRlSn5Vuregup0=k#!@D3r3bE5MIMNfHbaVA(=kcpF@| z>KRMV_{Kc)rNmBP#k$z6VGJ=>8*l#`Xn%_zE{ZCf2~X?2TqcLhxYQ)6fB<{N*TJDA z7q5@3kZ7&j?p@9S2YzFmZpnaNn;8pYt})aL+30&W$P1qxc%bEV9F{_P*T>*@c^sat z2^uEwwpR-3(td=#U9JpbFdshqT|$yJ3h!fpyjrxI>C?>rWc`Aw(&DtsAE483eV>Av zja}Nq?M60Q%e>q&k=_wD;>HDT>x{naq`n->HN|VY(zzPNcY7@|m8jHwS{LB^1IfuY zt~xk|GKOEMORP|JV-`Sf`=THsSKN1Q6okv}5=v{w-#73$g!=G`EfehpDAz7mJHQixxF!(Ww)`=s8UT^{t-E*gJ-&2=!=Q5ENajO@h?5{%2qYFOPl1zczMy^ z_Z*t39Yvq*D61%9HT;62gGLQz1-o`r4XEpjQLSeGyE3lQvmDGG+H!9_F_<($v7W{{ zGPo_7pc+4F_3cTL8j}Skz@4ED+-Qh$L8LT*SLrl$bcq0?y9IdlZN38HYHAVgZR-7C z@;x*RH|;5;_gw7=dZV45`CF_sXpv<#S$@-}Q4Y_3xqW}JXpn|MF1m{2DrPlShTo)f zD%z+?v01=kFleTdTb+{D0|E6vE6{w${n~-_T>*v6l913RhtpipOA)BUcWTB5?A4b{P$@eKyJkKmR1?bcHSTMrku_c!iJ+i zvq)ZbFJotm`}T#Gb<=9~xJyA1gkL+C2|Icza3HLH$g0G)SGT)3+E6vwLB6j+Dn2Vs z)X#qjdX7zUVhrdf+C`W<_sE)(kmB5>c_RR^2k_Z_z-qW>p|i=SlPlxh(~UGS_C}$P z_ia~W+t}xHoe}zG&$|tjp(dR{FRt2XUS*92qFO!_KrSQLJ@UkN)>pJ!1VOreBVtS6 zk6TBn_iNFYW6St%I{dyF$VEu21gTW~^~v{j_YT5RNL2vI7=vZIC$$ylJ@85$9W}Xl1q&lltRa+vfz`NJr-;;GqF7 z&P-3`a`>FNWCrB$)Z&@A$y=$6&xCq3H|rLHPO9Nq!44cUGuS+76SMp@mT&hfv-{9G z@R+0_T2C0&JNGW~Yh(5P@X+y1Z2#Ru+R$Ou2HENncnUveVyG(FW1w8Dp3rVf;n-iN ztD##C=i3d|Ho!_{fLr*_mmS{_`(T03t-!g# zRodY%i&^b*t(k+5L!A$6d^O+Op;a0_KE`6!w|gU3ml#aj{$YTgn~@v^mD9D*Sh@2& z%Q!a+XT~BRmU-D^9L7`0+V33GC!UZ8lo7WDQjB`k%_MHp=$x51CUh`JSVcB}42hWg zq&;nCc&EI@%%UrNDd^(IDuvSd{L~~~AT8B^;-wFKN0gNAP4McsJAp5;851ZlwH^!i zFci}Yg=*JxwH2+vc})#Lk0?kG0KB&?Bx*2B(IY`-gGQ!+xqP9zr&krZx<8?qB!1q9 z8J9@&rXa|rF?@>Z=7GUynm5KL>8Y;`Yli{1zVZg}3i9KD^&8vFQ9~a*0j z8`q~}hqR}nv-PA&n;b6Gk;zI&0TG!Zyrjzl^^wzrWLc0H7OJd2hAFc($_h{rI1~|m zjpm4oSZQBYN#h<`SltU49{bZpe|WvA42vJM`z6X8gIR&^&Oh6 zP5oo5$@}AtYnrIuQv7tvrXZ$>&Tj@7%?sE`X}cSX5TJt8L7>BF1jPVRyjl^^%VFAl zvyg%kBr0Bj%zQ`Mj1^9>_%|~-2i;#Uk~#ZgW8$6s&v7io!mbOmDoEu!oRDdF;_~A~ zom3Sm^?P$!fjxv*G+Cf*|Kk>BQ!vyirbeFM!h*wgqHFQ=`T1Gs438`Li4<-h7rGt> z(`LT?<5JHE%!-u%HM0yWVE5hEPw7~Q&v!Y*SG0OfNqQtqX@HSs+Tu7PW?Dxw~5z^k`@aQvcOo5{DoktQ*7<%V8% zCZhE|nuFTVG+iJJxptj1@Z(?P+b`6EV{1<@PU3~`y`)*mx;AitMHSvv4>pO+b_;cg zv)a1%Xo(`7qfY@zN~lzJKl~1LiaKo`I85!G6gr5c>sJc^5~l}QRIxj=l|C-5sBtX| z5SOoisUo?lJB>j9{~+$Luf&}Jfaz=4a+x&{o4ezMIq>euDW|^~a(w3qBV%r(*W}IM z6;|}!uy%X*bjP>1+F}!)hI*}ZAlEg%W#JY`C*)Z0?xY^T1b%%aCV6az`a&m(7~8ts zfGL%OYb+Zh;6k*qC8Hm6q7L(vLxY3=1?vWoY1qB&f}mTKiQKH6DAvPMgA*LX6EV>P z(X-78kHmKXA9&P{nR21G`xTtjIEXn7gTTyFW0p6PLQEY#q8oMoK%c<>Lp-1l*kZKh z0mb;XogtJRrBA+BTQ)L;>pj%K+Ti&qSlV zO`nr_?+jw8z#yDUEC|-8cZs2qgWlkF)`k!z#5b@yT19tIRQYpz?$t&*8MUh-;EG*M zEd=MhQ;yKh;++@a`FMfeL29fJy~jwX0ivz?Wm^J`c^=i4lLj z7Fhy8a>xuCA`CGi*0L8Lyh;SxzlA?84fU0zby1)Lw-4)?raA|9dlGkC=3*-Ph{0`` zP-%qHriY0V-L^vht(dS<6<Yt^5N~u|kE-6Kre=gAK;s8t6Rnfs32vAJEFnUB zK#red@yutz829KIO7vX1Wxhqd|NP!m*(S>(+~Em->D?;w`52OIWzIlFi@%PwEK$O6 zD4jOfhnjzV7$;ca!mUUNYlfHVi#;R-_X}Vq5aCVEr0#it(F$n4Ss8{n0_M*OFui4! zsG`$m{(pIB+YUhT0waB^F}2R2V^`PmuJ3heMNEgmlg7mi3F;X&{zaRV!f`B%!nt_S z-!v!Z92yr4^oCJ+??aa8X^wo6swJa2E8uN?8ImI`e1H{A$?oLKYFVzS?_qeCJxty+ zCPUHN*S}r-qF`)h=)g18Obi!PZQsK0Fi{M~+|PQmQGgN;yZDDl+CgrReRV1exPYJ# z0DoV`)qvA^Uf57OqMJ#3e-FjaO_x)TlvFJG<;91|V8B$Xo<(G125J{PcPO#{f+^+z zaI$^01;)g*SEGG4OUq%oAsTEmSt|svrR*7dH4yY~XeNdtEq`1!Y=buqjk2SHHjPBk zfFA~WDv~s&o$Vr1ncM?P4a1>!qs2#HmSD+b=SfevUdR_s~>6PYa#5!SE~AELVzvDl+60#v=>tf)yAyJeswVdhgh{$W0=o zQ?up)MP)nt1B_P1Su6;pyKWrx$(iu=P2B{zsX=9rJUFxL1*t^tnQxBaAGOdw<2x^o z2NYdRVK7l8uy6PH(YMP{_$2}11BO~hWCiczJE6y8K*>79LzT_|F07k(2OFY$_sM{k zZ`(m@uap+K9j*_$POK!-3)mKs& zD?oE)N%rPQQLCEO#~8$OMbyqLCb{b=(?xa@O@GPD8M~hWQpBaS*uueVyRdM<9YW;o z;8EpKhSxB$GF$#S_gCl5krVWJlFdSJ9fcvB@zLBm%0QYNrJJSul^!^glvLnN6;lYe zsD!1))`cV1y#ZM15^QKoyD90@Ur~qcAs^TsX4D()plBfX7AQHgMHO9bEF4@A9oXMi zB30KDYAi)+O?Je}Ufvn)`qwmxvdYs3-6LqKjHod^F)9F8hhe#3M@ZMCQ`!wvS<63KeqR=y`VKn@v$WfsIv=wXhv1;T|EM z_4=e-R-%V3`;kdKdp^`BUCKAk=fdpe;ux7Iq+^&av`!9yA!A6MA z4*?Kkb9Wqn6#=n>c z=dp|;dKKI5`<~Hj7s}$ODSWY{;3DpU$BAk!1TB)Co83j2YT^HCt0o=Rg?kn0Lb|aw zDKJW%wU9%opQK@?AnaeID&>-lo9A%XC)5+nZXpr1@Zi?5zMS5-qabE(V)^vJcfuCe zn)OPm^(+TV;+;5JXY8HQsGp;Iw-JZw8CX7cPYNR}uU_VZ7#)}h!@Xtq-;4Dw7>X5_ zm3mh_yP^qa@=DU=&LMICdE|e?&Y6fEy%zIdpyjHD_nXNH;$K$%E9g- z2MUiiWuVnsE2xjzn2Vsi=v|xG4=J}PX;SES>o>=p{IyV5kxq#D8=dnfuOaXEMUNr7 zEH9S^7pk_MW%sgz_HA!u#?o)~%yg5c_CMOF z%L6_kDM{$`P90vrk(wwIiOMXG0vi5yp<`XYpw>D&wt#Bsp|h7OrNB;+`g!v@8?!1h zu}1arv|Opt@~dqxM#3)yyKIXgelL~t)N$q{+Be&}|DQL^z+7*{Z1T8ljB54MHcsHg ziZby(@L}#h$7jaoy6F<8m?+$Yz@i=uycq(CniiOXLVm^AiOCR@ z4xP2jWEr;rAa6-(hU_^I+Tmy0oJ;yR8<^MgcU0(e64(xL#3N#?tkKZPNRQNsJ9Odm zRWpC3hRqwroF+mM!{^oOY{iUX^x?WJhuPL6RLGf2K>GzXuZ$)#bDKdhqQmODVe-Nk z8p-AhhAOy^tAl5u{$x)@{@Flk{E<9ss=ueLcqqC*Z25&{3D{n6MJg0;QcC4J$SFZU z-wMyYmJ+Gfm{I>KVt@yhtYnZ?y z-Uqdgv830JuV=p?6L)+0wZ%@}rWsWt zluAF8?>A!NA$pyDf#vtJxSaw^KRI~LyJ@IbE^{n8gZl}zP-}1(UN9kFF{nF&sko(G zP4`%cPQxtX8{y`cC4+G3Ky}{SALd+H4+*Q~sPp-XKB^{+&x>e)^$wcHuN{}>b5R?( zETu0OiF_LtSkNL!>Gj|alWewlt+$nEVO#hFjkKMP*uF5!QliiwH<9@)1};gjGqW}P zk8p2=4Q5^U9@aOs({S)T-Yd8eYQdF0a zro~|#U@XWcdF(9Y9dpee@A8zZ9{hMZ$j#|7*9ZZW)EwCgV8lsZ0!DVazq&{|@&<~wpEc6^`#EZTv3IZ!nu(PMx3Fn*7!9&rujO{WoC{cEb*@n!OG*sJ|6>@eWs^2e`%~85dS- zhM}qn4}4P+r$YZFc@w!0aLkUG_J(bO{%8S-L(09p)tmSVU91#0;YPyiF41KK<*b1u zCOP~I$Q*Wz(q+7GUftuGaVLXaO7#3`qr1D(_f3?7UVnbFQ@ZV+mU^O}lkCxsG7O;EX zc3)YJiGYGSc%l*)z%6T6lvqmC_}w7}x=xJT)Vyb^F^Z8YlT)fI_LqRi+5}cR&1h{L z&GSR#*z9I7Sh@^H{lPR%#h$d1GaixM@Rxm5_N5vR#BU}L;ImE!(d@H1_Ys}3Bq_+w zND=oVahn!oaLoK%!xL*h{hZ~3x+yOuq{n^pzdU#g|H%`^Aps%kPAI(f%Z%5c?1NP# z$7|n8j^)iCTM=ZH?2t^y0cB4ZJgd0Uqa;`Kc%#C9v#{e?BnjjScBrb1A+TW8wgu~L zE7HC82>JQLNnB~&m65H8_|jjEbo9H)lJ7$Yj1nrOetuudWV7NUkn(6CC(lc_n1@19 zmNRHy*L!VapH)0HGDelVuj9)o+M?xkoS9(T4T48!86UCBQ_7Q5|=CbkzE4PqG36^4PI0nE))W{W?~OT5TDDD?>PbCjnZuiBS8x- z0&86!XvJj>lIj#EHb+P1Rd>+Rj7~J-uPU5z3})*dPj>0@3m z4A0)YG&mYplhWaRJsQT{&NgMQp+NjYJK@2hK`&9H2Czk%3<8s2TUquo$fp<4pVn@( zXdmyjt=Ca!+3CYodAWTBgqxnwBFZ~6R-R%t)h>BUEfhS(wSEpZ;o}oGajxE15bkld zeZGtiHFanQfq_Z#-zho)a~rl0K)=^T!+YII!U>~jelQfr%!~KNm>y6XsV>0%+1*}j zE|Jmzx@_3J-e1xLqNY0L)4323^@%39g>e{%$~^kheF z#5)}Gvq=$~FB1+Yw5_x9*Q zV)8RtKJ3p<98)fEt09~7WMGrJzozcg5HDAdp?)=aFd@vN1&{=L&?kfq3fP^ZFp_XA zy{TG3@VQ>15$wWqU3_LX;vWv6PD2-B`!s9xIs{l*!{m;ToHuss&aT4aFwnI4XIycN z&#(bujx589o$;wim!dWv)LV`%%@aixSDWQ?LG3G4%AjHZsk*Naj^kGKutGx_jCH)s zim#im*y@U%oYgHHN707I|{j!-&Mn(`bH&>H(7S0FCq-;s{ z_!;6(idz_5Iu;Od1~4bl$B9K~vSO|E%AziF%=p%8OfJ92GDNN9qV9q8x+QVnzBfV% zqP;gkgVTB0N=+E88dchNuqBuXJ_m9sA%+skzn1pa?+3pp{h&tW)j~un7$~!{EYY|D zU;<{IVy012`(c_}1__Tw*gk);NjF3*Q3F5Yx3LxDztE`yn`A3_h^th>@HveS^-=qX z1%{I56F#-o^vF}OO>v}2=_w7JDVI&E5yMh*tID#NPL8>OkjF8e_hOOXRnP76*fT$mM5&NJIzZOQx^C6?8F*jTB z30(jn!~vj7p6pfEdf*QRC6%F2sCGay`t}zNoCP4=eOz6(OB8@nN1+R$4uufrt%I_vscr>oxB-0=j7$%VYeIb_K z5X?LIGxmqU7{r1idh|LciGek17oaPTg#)I(6hHP20brHzv|Mm23H9M|rdBGkI8s{hBI}=f@Jllbbe^$C&~VFdsqKS&=u3OxhaI#2CJ>h z2Eaa`)2UTn&}YY~%7!X*Iw-oRe+S(ik394lsKxehtFk7z`4EpGi3Q6k-#23P_>@nMWgDdb^33U7~{yT>z zBQAuMa*N|p<2MsBE~a<|BbY8W5;!JT7N;&`c$mxmN|ual5nOK?ZONc|%byuDgZL@@ z!0bEU2uc_Vp^v+{3}QZXejlZ*1gA5k65I8MUvI&dtARZ;qrr#aho-M8!r9SlU%|xf z)8rkNkW_ba8da+n)aa&q3?)vX-dy62DL4Hy5gEF%OzSOiV}JH}&0EZ3^-2#i*l;4~ zikEy!L3?#c=2>1g+&9R4vIuBtMbYanULHk{tu3ltClo zmYrtzadwQQ5u#j$-tPrU2G=8Wh$~5Rf>TP;Gm$4pO^f_$*VO(%%Lgk8vID_t=32c? zXA`WXiIq~tL;lNSkzi&4P0+FtSsnOMBF|ViMZO-Ff0Sn)&7<;gU4H3`dVQ;9%(~78 zo|L+%#iRP@W!pnw3JBpw7H*=MngW7O%j&DUDFH;u6=Q$rYHy8J!%0r^T?PkNfzhSO z`8SbzphhfKs0FuK;rmTc)eZUr(CyziMgcUy5>=`CUM4sp>ujXlY#k51y1P=_ymXNr zJs2PAA4bwd$rUEeiT0ZsaGLy;_$*wYgrwLn;Ix=T1#OX(;Kza;lxK#ph%R{vH@U9; zblsrVc|!bkZ|}QfzE8{8e>#mmI2TKnjQ3mfNk^_J;pZunuf2{7j>JJ2Wq&?x8)?86t1dV+LD}QD7I4c%G-^bctZWt{^ zT=Z+_c~Gr#e%m^P0Db74$Hg|MxSlZoPXmg6Z*!$+F)00HCj`tE-bt=afGC_&l<;?j zACNog`vmem9h|T=SvAXAXb*7F@^R0;7=1$kUJ5p)@5rs+*w83gRk^SxkpR#V1zI=- zHWIeJ1!FySciw>U|KK~<%_3rz_vYj{>mms382syR#wxM58+#=ARqWZu@Laxa1y^`K zQQm3aJLK&(t)8fb)-s{Yo5ILm9Yf9N_Nx~A1`pyL>dps#*(Q|(42R&~SCI}}YN&yJ zWPt)|XTpHzc;-yjsW(E7eoM*7;YeL=I0z#U-I!1_`veJOK!Ml#CLj%EWRcN{n|o$E zLO7NcBoAhI7SQ!kAv&s%fC*QtAoHky#J3+11h1I{q~4|y@Lj(>UsAPyq`l@>bmZ4hNTu+48_NeTT7kT(V(fjR`x=|E8LoUjkR`ky|1xU9Sv)PX6&(< zWa$8ZV8$DyQTWN6gUfr)-Um+D-#Y+( zMO=3x#^#pm8?g>3-uzJbTQ_s0%R@YkzMU?*tt$v4i8Q^l3y+<56_j{ z=HKg-^QjVr*2F#YN}u6Svw_fH-n-}=?e4!a^^Hk0b6#uRTa$i+)gk`oN|Y*PUCKY< zXt75aexHWDMbO<;@({=4+1xoN1=PVBt@-DpM5SdC-oJ3-0&`4GFPM1@Fzt%eK=mLY z+??gT9WG=zVtQmNd~t_;gW4d@VLUovxx{2yqbe)4v6Ree#rVMsbt zQ#|Z%zGBxVETylBVmYRN&r;&tT*n#N0o*V*g#X8MA8T6G!L?I7#Fp_+>=6$a>fhA|pv`i0X|7J7 zZgBM-;@}fjNW32cCLOwTS|82HO%st$Z)F|BQC_;B&m}Q~xjuH$PhFvjmACnW-d=+S z8{hRRcK;AGD!q`k)cW~Nd1|OXCh9{SNE`%x+y+nMzoWDy<*s>OPiI|bDXz^Oa}W6UOImbb`VHbCDtKI z=(1{+{OJP|4MZN`lw(d?Lw&JcI?@xgsz1i3ANgpVk5S$nd-bU5eC(%96C|oep=w1Q z=bKM-5jWfK=MejhVMZXSn|GGQz(D*|xS1tri@UI)g)5F}^<(O!1y`0i8XYI2n`JTx zk!}Ft)ei{4a93@SGYD$l$MXW2%@g1IoA;X%;L_Wf{a$Q%croagx0_Qv*7`BRXL2a{vqxCJ$Cm}OI}-gz8ekDHbk==Kn_sb zUBOlN63*Gu&H~4<@)POhjQvM)e@~-BQSJ^bsd6;$WltgEwNB16HKeSWS`Z5NBGoVx z-k4)9Klcu&oCq*y{Gk9L^hhyml#&*Z<48H^Y!Le}jW?SWP8I0G;SEp8CWfAh5#(xW z`Oo)$4=7r27l?M6xa@Y2HNmR7<%$Pk$=lsAC9Yw>NDybhAUJf^WvD>wGsP*v84jbl zUQ{zo&CoxBJa>8{AMD>NYbQ}=5U4w@t>j=M^&rBGJE*P`B8nj1htrYd7jp!f8QM0b)-jurDc- zsUP;mzNs(DqtjgYictxSLLOk{ifx5Kidlf;#67Kslc&=ef3NHZ8e(x;@9@wELdV{X z`9&Hs+h?jN5xhkvW#E0)7S{+|I-PLQ7}NkDGqmh~A#06%>eI=^?Pbv!#y(gR>7uVP zHi(BPvL+8q3wE{{4e%T}Ux{$xxVH|bGX{DekC2Io>Aps8+`Dc{23kp;i<65dQT^@J z$55%%p+N3PsYY@W#-zKIUeD+jut@NkL*HBSBWYmr6i~+GMeF* zjgx{Z7b{5aih-0pYcxISCQ5tv3aG9_utrS=B9t~CcJzIuWMH0cYQbmu>{&pPR$Spy ztpBH6Ahyazz>O1ho#F)2d?8;jSinJi*B<}%0A{e&1|4(#BW!;~MOOua*!>Stb3I9Z$`(LUK3!jh3AqLn z*LGzsMKS5n%{=T?^Z2G3nciId?P3ytZb#8zLZwW9Q62GY4{D_vW6XQ4y+tQSh;(b> z9^NDG&jaU7z3vAbowO6lhwN(RMUX}%6gQjuv^$JNtXA57h49t(W(Z zg+a+~e|OUNN!do%1RfZ^aV@jaLHNPElWWOPM?AlQe3jEP6xpKF@GzN{RSa%XN(stB zlgWA%p&uup>6JZaZl^1YiedQFQ0^pD-2Fpg_!nA+W#S7fY$`tjjVI5Fk7pAQ(LI-K z8t4$?`1`)l)EF4b+-mnI);4VT;~$Bfv?=o&#_xV(j$A`}JwK zH4T5iq~gq7$gX@RPq(B?vybS@Lu2!wLD@)uZO_+IKI5{-#hS094VtQGHS}###xf)cE?$@NrQY*r-xbUV;q>7%d9E`TXwr{kcnmw8a;-DALv#(# zTB<>Bl#EsOToW~Mg?9t}`daW(2fJ}v3F4$S{SB)fycKL{%Gj}0h*;vKx(*eAY9wnB zfKU3oRDDP++powd7&MogYTDYhBTn0h+x$?EdyE}`3*Mm^em`M==R_OKBOLUK_Lc!N z!i`!)wKp=4=K~=(6F+s=e~J}Nt=ZbgU11)^o5d;onDM9G0du2DXaX^Nm4CMV91WaC zjOadfu9eHe!|go~x7M}V1+%$VL_%gQKOCl%_FsOTk$}Wk(|jqdvMd&Pnleo$^Y!yM zPqaDN0c1&NC9{tt3@mQ7gp)&fM4%j?YwMjzjIG3sCSo~^p4_-25<~CXd_L;R6N&uU zA>%DG2I$yQ*^T3qWe7Ft2U#~XJ((kxWAsd8HqJ-5IAq#OW5=9@Ni`=NUYYt;K+KpOR3KL&AL3N`VK^$%D>d#Hu}FaWevI3T2td~lN? z*0|IT(cg>;FZ9$_M8>wSNIpBN>VOlSO)BGdsj6+VcoW7{}cx>eCe#!nJHSjuYwB>(ApRef4s@ zLxpT~-vso&*l|XY@_O7JDnc|pYUs#T!QM^8GK+1w2IuP71y*u$GK3)8Dk=Vz6x6Y^ zPvpvxJW}1rPZJ%bmf$BOp9RoEIFcW_zgpXf@tb#noT}A=H{@?xg8-EmNLgtMwM$*}B6ZlOPgo46!72s!-cZiA++#QD`Z+(I zT~%#UkM?6-6%-`8avDVp-B1W)#fp*Ylg|C8=!{7Qb|XEtFVKfm2_kZlIqdh zXXbzKx7R|25{o8jGlhnzzC^ z5CVJM9fAY>70gh(KOc22B%*je%E6;xSy(7s|FK_y9WnkN096G&6%w-T^fT^hg%c(@ zYt0w|>%I3FIX&I&HRI7rG)v_cNmgUSj(A}ITji3s6Y#l_paqD-&>2rnm~FU9J#Dy&>^U$?+@s_pRGkxr-qZ_qAzO z3~K&l1{g27ClCG*D{6&tQN1V|@4r`%7T*tBgix>2d>n~nwYmAHTu<+f0u$X*&IDkp z+(C0MlUlfI8 zkXR5AG*H*l^XbjHGE6J5J=^9~J)^;WC&La^8e!<)^D8LlIWuEKzr#U*D3HdF12>v+ zI>uA_pHxTeZ1M6EleEa`E#A(1se>QM4nFueq0^1Om;A0b3s3aPj!R8%0MpI3n2Hx@ zSq*Xgz>I|G`7{(W1$Aqcl#VkLz3I>4b69t}@zjG&*Ny*Y)g8hQn|KY9$zp6xsKW8$ zwpsfB-b=F9;p%fX>aAYREWb>MPynDV%ykjd_f(5i;N^HQG$~2cATiL1=rTTXMwhPl$9B4kRA-P$iL#+{{Tkpw#Kai>l? z`krZE=s1v&SQ-VgK*yIm3mR*KCOctD^`7EmbplA}af>H0L8(bSk4%U9a3|>eka{p^ zi;Hr~zccVSXDyR)S|e!y)t;t?B5BM;2!`!t$_IVOChv&u?xIfjjV&W#^C+mQd${12 z4>1+OQ*i~{k2b{}=l?enEn%}@ct{5bQXJ~rQ(Hq#o9eCDir$SR99qK_S8QEY>G9F= zGN?$H_NhxsJk}^fjQCUDmk1{-FCiTbG))+;JT-<8WFnwN1fbWr8$QTrBAhSIlEsq+ z4OX6-<4YgW|7iQn7hIN{ah4~CL_3qr={SSKvAgSgCY^g6SAxgVDw0n&g$JO05u~8X zLM=sbOl3?$j{iiP)vBD z^prc|FSi_aakTfKMw;ofi^dXHed-S#H*~1hMaRx>QFwSJr&&c1TOW;d_o*}Bm%Tau zsj=h|#;QM5boh7RdGR?@zLgps+?7o2oCe%-Zi+}abqXM*ngQqhPOwRsZ@tn#+N1pm zu#wY82rB9@0!w4#6|a=4T3>jC@_LnvQ^1Redu4Y+o4&r-*s@+l>5v;mP?Bv-#NU9iJup}6!WH;5K}b z;1d8+GXRopk8-F$mW(3RaP=5=6#sR-09#u@5+`_Wz$yopxu4RXC${s{G%2sg!+{U2 z>Ury(WS%6u5w&(uVc!Qlz%SG_c#8H_i%dN64a~h;G2;0a<&G1(r-jD3F733ZFLsCY zQs*Q9yY23i=4InviFi{*V{JinsCUykmNESpX7eFZH zt}x!VhFBo4KL_#&=i{TEI2DS$LDQ(gzotujx4x!{tha7J$U!nUtCM4a~UyMSIEGWk0V!tJ-*^pmB^bu<%)p-g~oJ zGqk>vgK35>BUEJ@G7OKD>BlGrRK-PL7vC8iQ5l_NOQwd5XN@gQAkeeb1x%U|CP8Sv zvsmFuw9o4hJPuu{sPra&;o#~;>TBuM(0l$`(4^}46k8w;4CCs7 zEOD`iYbB2IG;!AFxO&Ql^tTJU+J0DaEsV9?Hmt1Ki4~}0A-NETYUWsIFsrQL-+5fl zOqytKZa7`5#`D?v;EC`mxMZ~P1 z+JBrFh1qM-T`x1EFU9`7XYNdHmGUy%307MtdwvDz2cH|DECj2Sx$iQ#@!(p$x4yeX=pEi@%T1z zKkw4S25b)bZRa$t7|fa8rUb?PiQBG!sIdbgCN**&`~@Sz z7}kA2Jtm^?)L!*fbd!*!c%zminz^KQDEAh5F{)cHu1k%{)!5&WHfyLCLLG+L2{EEu z-2Q7EOrhDetl%elX9anp2u6?p4}ko*(+aaS;#F9ASQJp^B@`MJG6*%Jx-8j-IO}&e z!HadJgHpE#3IX^P+!hGbktZdXD6a-!i?kUNEFkWC6^^jB z#@1$*Xw>S)Xwa=#PxHrb<6a7@7LPtZ>vZ;@6qWJNHY!0mKUn1=Hc^B~{I@geC@PL3 znHY~ZIM*Bh)#%_nbe6tX_6)@t2Zb1%4pdG|IOV*RrDl5yZ%ilpX-82lYvMak;~#Eiu_YIpxTOO{myOAy|XXd_2O z(<%~GTg||0W7W{dgisMiwXyGb@>2$J7c}#G`GE~>4rSRzLM@C9FDlz?<#{RUoAmC5 zHtc**261?ml8b(qVRq{aI|YkrDTHQ0`mHIl71e}dUsyOK8ibPZC3ZpG?B19Qycg<^ z49F?o5Jxm^+CsJ<`xNe;igvvKgnRsvkV>}so7*coSy_g^7Znpmbdi2^W6;F?Gcua+ z*EVqk-9IQUk^pd7X%3HaDK#FnCS`ZhANHv-T}w^$*jZ3+S&y%P-UFsf21R65_R_fo0s;+yM`bXNURo@5 zCNyQ%fup6d$pF;JFx1BF30pOqMQdCRLqi;@`a&EfCU$kXuyDF#y`Ar+VTW)K6@Qkv zS-_EoefmRg+xGV!U ze&rL7wp2zXn*|)>4CmA^H2XJ;-2gYOst3(##_B6Go>e=;PCt~;?LLX9-^Gu}V2L?) z{{IpIS@o0vYxOQ4=U-jyj@!hNi zWs|%DLWsoD@xm9~;9r=DzD%jN&Fpkg+mgO51GTI3f#497)xD(VRX#;e^e7k_(m&|Y z=a82e+o}jr%QMAzj^x1>*JjM^V}FJbUCcLC3f{rpF+6T*u-9PiMhV#U?EgJo&fU6- zO_trqR`#GQ$#%T~^6_<)fAjc|G_1M`Pji7b!~w`chy&tYOusyC@|KReqY;zH6;6L# zCvqZC)pYv&No#DgYbOk?A?yqc$NNd?8xLMJCO>jTjUo=~_3L6j8OR8jJQCdA>U=AI?320cb|7&Qv>dsGDtyO$MC3(~0od&CrI+t7Ds2 zpqyKk0UA|Hh>+9x{Xid|e{d!iZUg#B>if?ZTkRk9b&;EI)bbS$ZNpj%Fm?--;NnTj zUMI}D%Lq~q2%hIpi&33Pov-w>llIqTs-zLvX?KSPrZXvWT)V6t(=ss2Qdcdx=)+)g z@zV|pzQD|t>!ee`&Pd+eNGckS71irv`|FfKqzjQryT96aF7RHY!T?Gam|+?3=r%-4K0N1>O8&kw1$Qf(gPXOuJ9gQprq|(4NKSCXW~M$N zkH+`|m&_kZs;8}QOp?4T+aB=5|B{hN5+21t$DGOQfEw*QX*_|{+d&$7Wtv?F6;PK! z?mmwh*m2RM+72p$=O;7SJT5X)tXO!le^Gxr#p zNTWmuwlDt)U4N2Di^FAmt>%sdc*Y2d1}kTbJ_B79+IWQfy9`|4@* zrc%>cXy(WTT%`4(7yS;TtY_sPT_2lps%TBMYYIAPUkqEx7SBHyW7gmZy*vFdQ(Oy9 z2!lGmz?FP0cizIJkXmclIRj~&H9?tZDc*8;g{*3J@bdzJYcwo}w(&*A`$Td1m*-{i zd2TB}a6*ij5o1oPIctub7@N-1F)h27z_%BaV2s8mH@jyoWH#5?Xx*)I=3I$Q3GYgt z>26ZZZ0`GCAI5FKWcF^^5pQ6@080g}+|ZJ1$yWMy&eKME13ZS_gT#w3mk8&{3z1EC zQ#IHN9tSv?%NM2}=mE83E#ZEsS{wAxA(;RHxc4k#&Q{~c;=cSLXju=#DE1QDI z`&U>W zcv-~+M0>4?XWOl!Ng{{5yy`}MFh0=Q%@l&i?|&>yh4>6`WK68vp0qul2-@#JFFX%)c#`UiQ`>gUvD_ZK;+AXN(`w24yAkf4@R%kld`^uVGnw!^&>IPY`Ip&T;k( za;y-v9AY19S&r~kzM`(wJpBHZE3y8$-ShVd+QPOi_+Pj~D?>f^@a;Zl@a^W29)IsU zfQk$C=c~!-0NnY(PDYBeB9)rz^0P!ii_whwluQ3>BE8x&WHOTPR279 z2lp~1PH zr?=By2xU+A!!2Xt$x2gp+oS6T$c$F22Uj{qj}5m}9@CMk4-&RG+tpmx)=j$hJbhFo z9KW*|r!;r1n-sSt~y(woqD}OY=qz?3Dos>fNua7$H6*GT1&v$aos~+u{S^|Z^ zscXqNHflgSy~96glC5K zQIi5uR*;i7QbL|`%SVBqwAoX+J`)n)zbVx;4?8;*S~kv#_U%{Sx>Xm|d3Z;+NSAF&hBOXitiS%t^@Hi9lkH<$ z2#;NcG(6ALZp6oj&b5eM=_M#wPA@i$56P|H61Ud zMI|$mX{eK`ew}swt$U?nk1&Kw>jLx7WFf4y-tC8t%uM~172y_7(#7X-e{kJ(2E=D5 z650*|%LJbKb~ElRv=r(LNF`oEtIC{KtLz)jFY{<{rRCdQUZiG{K#)SRR7|U0*JqP8 zgp4#m9mrxNelog|bqJCKrk0z%x@K=uEeAjIbSh=13%>NlX-NBbh-4)cr&zAm_tiA ztJbgzPv+mZL9KB8Ku`;R(8!S@7kb+NAe|kkB~Xd-3;bGqyZudC`MUGh16F(g;PrYn zU*A7^<@bao8A+W(`4oMM@k;Desig8iU@79ycHrBUFmdTRcSu-PJI#{SUmh2qW)j#D zfyOP1OaCvti_hlD`^jeSO@K`ZLjcvB|m@E)mza0m^<4; zarK7i) zx5!I9I8UD02uEnP_|-x5+>3~>IDvtQCn>{aGT=I)V);Z zS!vaiC#mn(r-g}Xf+U;U8{9wVMzV6yCRfk+CH5=VD7A;yyS>&Q4nm~cSCLeiF??63 z{H1CFk^VBJulK)RH~h*#U*Q5Z z4xz?it)*9Xf-^VZT`(_JQvB#ujHgu9YB$l1)7TJJZ7hc)R3c>um{l{WNDT6bhzG0aB`A;2=Y3ziNLy=Y}L@)KKFoi#vTy4AUPo5g~fgYrwS z*WM>d#m*IVpuC|MF1Fx*2OsNlCQDoAp3uQz+5YAH%SdGPAE9*zrzo1Wy;{_ zi{r@VkCvR&;||3oe2kgiyCK+Y2KVOr65^VkQEac2x)ouG1EvwenID#f+f0ZfANyTn*L|A3cp7}FVG6krVLg=wH43-j#P<_@4j`LUw zyBy91uJQ@1wsYB#uH|m@dKF52KRd?C?u3YQ`W&>mKBs@@#xQ#in%eN`hVYj7!tFJT z;Km#*W#|8^s^;N?Db&Ud_QPn@`T~rCLKjKBU8HJN(117>9S#qwfvm|5E(B;2k8S%{ zbKkvv^(h*)9QlS;buAJv+i@GMz*-Zt`29?z#a2P2|KG%Zy|_Dox(M~)Xw^jOdXz(7A)XBZaspdBj#x;_-9 z6J&8vaNX8vJLPL8!%k8sanu~z!;CLvK!eVU(6L3r8K4>bU*vDZ*?EZ7bwea-OU)G2 zbr2G~h_Zto1fsnpAmREedDZNkgfymnX(+@*wQO)Mq%!UQ>XY1;t*H+tRnWGN2L5VX z=gL)Yx=996TMsVX-o~EBu8~GUW*^pJhNk%lACw^dj`Ny}U7v*=_`i?=*7)*2M{7u7u}YSTI$?ba%Ps(Wjcu z@kL_|tj<@N%tpKw4;b|#3aq>A?}`QTH>Ps;Iz&_6iLvS=O0=gEk^bhpz_SP6&4PWB z?hR28O;->9s&7RBpp5YGD9Aqsy#%C7+vt2A;(t`4xTKr)N!ayfiNprWCIC4>t?RqESZ#JZ9>!Fu0U=00si zs%nQM?S?QW8E)`YlEJ%aPKsqLhr2>QBQK5F1Vfkx?76)v-Yx5fO+qpdJxp#%>>M<&5Iq%`bbdcC2BVZm()H!;Bgb1z=x9(aRSj{}YhaG6LHU{KT!KdF z*2+mi)6n^e9XtReb&$*Xug*%z0&x7{z&(6OfH`i$#i61D9+C$} zI%Pn+kV}esw!gIE-o}xjlr1L~hG(t!KBjY#W@I^oU`I#x5}Z(M)tIXTsY`Xzj!uaz zgF1PuW(_g!ccg)b(E?<2db7)>N+cQk7xNpTrLsEnw}_q+{37232@$S{H!?EiN=o8n zQdYraQm$4qD`oKpqRCTY4y&0XQWET}Tp@#MNPcRPA*rGxg?)u&Uzu!$_kCv7cnqxE za}c^X9(oA?HbBY0bN#n0A^1Jr`|x_So%m6fMpkcm+-eP_wCL3uhx;-cqho34F&Hko zBLR90*DQa#dMsD#xO)#qw$Q|mT2m5}8P~`rPO-<>K3s;UY4QCkNm*zwCkm9;^B0DK zVY_O)%xK;~NoBr4rf^=$d;^4<*dsjtlE$<$a7+ekp{NyW5N z>k|hctU+jaCp)#k47REGZ=GQILVHSL`N>`iWT(bNQmwPWLV`>-T+_E&nUvS4uxP(N ztU|$JthR>QwoW?KOPE)519_rK zDF>Oa1|vAE3PE zq1VM2lvSJ19X*c_vf`Ph(&YL7SZv1GJ(WqF-Gn?(23@H)31nw5p~(sU9deCHOqO_a z75YUyHb`LQ$uJJ5`&|xcK7i3qq)edxf>8#HO_IeQZeNNUe=XV=JBxemgKDT%jf801 zq0j8AEL`{PpeiQDaNpAn5J986eHmYyCj|cvFtQOe*Zal9Y06$wmg3KWuEs`@NaoUm zT4j=(BbVq|xfPHncl>Sy%NOtSJWVO8M&-;bxu%@tf42is9Ov;6#`bH00Jl!7J7!o* zCvV93#-oJ{24Gtd+(z_6v^_PEI;Sk8D1y5lt@12R|{Cy>AuWk9qZlI8aH5u_2CSpn>C z--d2bEk7IKZmT86CdGx>2GQ$DEVbvB2F!Ml&ULsJMjmvxv(<`d-dRXf;6w??gu-A$et~WDj^)4T8Dm{J9i0}kQEFG zUyTQL-HUR@4YLT$S-rurx}`ih7(Pk#oe7>w-dlEwj{ z@t4_?l0$WxoNN24!`9h_GN~|wIk$J~qim3#24tZ<3GuB4g`GtABif$}pL7cCgZdJk z+y-8yOz(;ewDt7v%9ly*fcn#JC^3L15IPY{YF1oK2>7+qPVaA; zFmTPk-Wb9%WpC{DGO1IvPFGYSC^#}4Ek9`A| z>%tBwfOTkN;K_F&L+8!F{`$Uh$(HTxWOTXz?P`ryX>=v^l5Ah)9mLz9|4EqysSTeg zA@#(6ZW)0%#)(dflYw_S^Oi2{mB+cJyMpO%z<{F|V`xEijC$V|jj?hbLZ^*bWId8v zW|IpWfRtlbnL{_>85uC6WY0qeN}gorUc*a!XnmcTb3I6Wk5>;z^)EnPm-rt^=2{MRO^8Cz zX}1sXWqI3@gUppPbw;7>~QEH z`DH74m?D0>0o;wg#WR5NET1s{tK?c$L(SCh3gu$yFvfO+Y?ph8rE4OgZ@X?Bj`5&_ zip=mS@QnT$TdQp%zy0=`4~~muc#;PGC{(TTSfo8+T~N=`6v4a=FAW%;FnrNT zaTY>0OS>wGiAa=ssqgmo*p@3xDgR2M322h zUb`#G0m{1wW76YsP&H5hRad>`N1WCTh&&uqKDgZO%;=i}$ z4HPNkxmDt^Yf;e0GFf5FnM1KvD?MHc{>oSgqruejU*i(p-b3=+#5{kZ4v`}>A%%`w z757C`kvfnLZItL;tks}f=EJHKC+r-0Mjq$HMI-f0`JhUM_o-9)O7GQ0X$8or$Ew+I zZDw@U)H>Rd%OX~+hd|{f(G2Z=zJ~m;;rKWc_G%#*SSzIY0D#%XQ%mE7>~W}pw=ALO z&*Rm9705!<2e7TcBNgj!rt$9QuzW6-ELg;gBe0b%NQW+WD0|Wvo3d#F5`@J9@H4$x zPP7v}^T)z*jP0{X`Jgv3fv--QO4XWSV2v<2ALGpoTjK)CU%0YVPe3aFPa%`zVFTEP}~q+wS34&AKBa$kz@9bE@Wx z99^s(hzr$J(9DL_qp$s0D{raaEqdso@u%8JT88Y}W{-Sy(Jbq5s?Au9wJX(8t}~tA z7?J^FDWbX2b5=Bn8iBY5#`4FONEkj~IqPYrNfe)ns)^InAf~ukJCKyzr?SCW{XLka z6}~6+!AgM)!5mzdigKWdvkkOag;Z$|jzXFB+^P=?5lvm$oQ0RqDN%D*Dl}(CW_nrI zj@Fga)K-TVE&pd&0Y&IB+qX#PZq>}`#r>lg!5);s#=EcL#JCbDv7%^3Gc1suwFBO3 zBRhA$0OP0fS5ZFkN(oDZm}_b4?I+#f_BAa$4$0&T34#km>7638mA1jTWnvG-alQrP z_{TNWLB>#m!kvdr9Y^uN@0Bpq@T!FYE&bJ#xog!#(M8tiSDZm>6rhwXyk$Q^ZZ3w& zuK%S~bXdv7OH7)w&}L!xvOUghpMBZSzXb8i49$m@FCm9cqS?Qd9R`!@0NYIPkg1M! zX}B#IsGUcdZsS6+f9a7IV)iLWak~VPR&MnPd6%kBDQVwKT8dq1D0S?wXVzy((PFK$-TDBx57}0j zq24<5r?}*jv%rS7x|E|oT*AI2AlpCQkzuIrA~x_Ac|{$>YBZ!?s$ra2m#7eSZllI{ z;j|c_`Dow{&{slqwB-4yq5B!6ZN#>BKEg=sl$V_RR4NrFTmOdi7rNmE*tAm#pzS*V z`tliM+b`_*SO%ctC2IG1Eyiye;S$z`LQ2@m5V|{0I}VxTQa1?{1=chE*jS-0tHcKg zDB<%%l61wh6M9CG5$ef>I(>eqc!NrIRyG<15A4C?2-6t!L)E8$&O*!@tta$Q2KCKL znP>0ii!ZC~l)QfZQ^lYo`il?{*1=DiBvov#UYFXyt`+|v@~3Mv|L;IRrm7$44v_U+ zys<0C^N^2_`f}gw-GyJL52Nko_$(kP1(^hBOJG9HVCBi&Ye+@{3XRZ3k24+Wnz5$_ z^N9UEC;WQnW(6I41``~Hx9Rrl|Is%xpf?Te*uN0NeMUs}gXZtVE|#FEc$={L9hnKo z7!9Z-$XB7q(-|B{ddKzo*|7>cH`JKPvCk`oyeuu%m)4+}O1yd4x!GeJK{!{5d9}|F zs|AJLLOM?wKqLkuv~;`LgX%ZZ1CoL^XFw%=)hDUX?>>As_uW%k)g6}A2k?0I4n@)l<5f{}q*2bd2B6jp0Pb8RhQN^6&C*tF%> zgeTU2OjEG{lj|>MNvxe|Iz>2U2`I^c1n;;hE~kGrQ-F|5y)N&(Em7sP_npheGfhre zR;#&;Z^UkjGv4*%$r+10wGavj6`citl14E%VG84bHDP^yJ>>%99#cLXP-oeRMRs6c zP|U1#%Ds(;}e*+LW{V#76tiuo$N%M#?#?n>}N^-#1kh8!0gQCuPz zVAxP}iY!y$^jb~R9B_FaZop%^^^aom8b(>ZP;RT1xqUNoZ(Tx5KQ$G^c4#{`d&Y>R z8FH=>`gT5&qphRQWt;ID&X&5^v~GP@RsO^w=U)GuG<%A^kqRI0asMTT4Oug}bzz4F6j@h0fTwx)S@b%p}4;zKX$Jlc4GH8c%?O00wgFFyx@##y6A#KW} z;=$67;^@m&7IRGN?iajV*}x;clG7=}ojL|UFrC>uq@fp~lL>!#_WZ@%B0bCI;)5Lz zc_>pHH`0&Y{&4w|aX-QocIA7o0KsV?p;p7nG%!QRcKwKs+5@e;uhkA90vLXFBTkG~^{}^52Zj<|x_6L6S2!NLQR-b1t*qy9 zOjy#^(_cUYhu%EKS{5n;Y?vLl&8AlIQqS>f30-xv*z|NR@?+2R9!~q}`U@~oS>ZJR zAhxthz3-let{N`D0C+O}?o>*? ztDsN`m9}I4-c7DJKi-xIEJb` zz-D<(1`q+4FObqVg61v_v4`*1vR}4N{JZU}VIO97{crWBLq&lny2+xsuGAWFWF}$v zm9icnmM9nsZlh-RjF(ZC6?b(9F%=av&ss-QO-%Ysq`IVY2rpDDM=bboNPc>LSfH;a zVfHA8wa*5MqZo?ezPzQi_5S3l{HOFcxJ?KY=fW#qW7F^6SOgTt1`Q#5WEjRW(Fcs& z(Zs{c8ZYDzemT17o`c&PM^>_myn9U>81iflcQIKvc;NtBIj~s z&y~mk%4g28{P$L!>HmK5%qjpQekbHLC9#u*L!qc+$nl$U{gs?T&t+^s9O^VhY6Q3l$HU0-kXgw>Y$`O z?X(Q0^t&*cy^SzhDGZs*QpS98lN+nzJzk&2d&Hf@05#S!VHNlGe;ogWrL(&mxkOfy zg~*7ic&-L2Szp#!Z>yR&oqeV}dZG%H#V$e|aoJ)O>LApwWAH(JMug$rrU0;wwC$E& zAq^?oBSwg+)!x{=m&7gbQ?$Hv3D&H(a2=Kcw2R$UA%Ik;xO|se8Ik5RF|sGm>Ku&N z@7i~#PPm)x`4(=xM4-fYx&e<54(etKawoQ3sGX6IggUU@WDE6 z+|{UNQj-5xL-)y<{!HnuDqpy6bxN%m_JYq7$aCAVPb3PRyM^M7zt*U*%SQt?$$xQk>BldDVn2y0k=uo<1k& zP1TPaE!ME9Eu`|?y0Oaz-So8;}xfbuDUA#5teGsc0{33Bcho-mGql{9Tt4#avoIgP*$K4#54a(hqu9LY@2i1ehd zCj4fW6S~GQ*41z|@!;V!el;#M23Itqc@nV#upQQM{*%)Y$Lvt>2sZb(u`kfroF3TB z{{!L2<%9xrtpjMfI&!MJw;ok;j4?9Fe4_+5T#eSf(T&NHy3yUayU1izVb=nwILjb1 z>J;Ny$zLY?B-$F{cvssT>RD)KkJ&L83Gj7Lc96HWJ8*fgC>PoEa|RxLZq(ACe~#Q< zxw^O;+ba*hcEkjWKo=MIoIA&fQ*UUDru>DIcpF^m(}h=kEj#fJmen+&b}{Ap3vzl%JI(0(|jZZh(#+GIAc!C)Ioo7}1A8x$z}_^X=i zXI`b_0U)W0d8p#_E@^V}MSGMw{?}zt2^Q&>B)8^3w#%wh&zL%t$Nm0Xlqnrs$%V%} zUe6CmF(s3tx94;Q%O)`2Mqqj*&ql@!K$*LNjo~_G0s<{ebxp?o1rx7C9Np|2M-Hg=LT zY}$jDS1$qg21C(JxfB|QjvQQtSb|b?2*+yuQmG?VxZ)O3q6LXMYAuNUKDIkn4`ik};)=0Dd?MB3W3COjg1FWFILc z)AeTvEfKjllq_K+vl!#d+_+xD(rh7Xd*5lsFLD9uomGqIa{dl|WLnntynfp`7KbkI z^2S;;8-!iqb??>6%7(*4gcO_eQE*Htdv?)~^91AQrPWnKV-?deZ&EE}vN9E0VUh0m zT8z9wOX=ZoMNklL+$=AR=WQ_Btxf`bbt&9(rEtu?XzOIa5e1iv7Gtr9t$TDoF`5fw z70I587NyiYj68SN1Ayf6RfT*>!OdLP>=1g+@i0G;v$TwjA0B#*LK-r`EQi(Z0}Lim zI*0UKj{5o16xgy4i6Tf2;0xWN#_9F68v6Sw>Uobv8TcZfc$Fo3iv7XD@Rthiex-ZH zUIRb>PUdoXymXA%b{@BYYHsLSDKhk>l6utRJxIQ}^0sZ7EwE8dFjxHCk{GI(qKfCJ zbc9N>^@Q5@&Rb)pK?eM*jn`|dRO2r09e$BA4N?j$eCzzyJ^^c1UK{oMFVYx%k;M@_ zL|ZqG7t!7ce^3jMlIMq<2`PGsq&jKwJcFf7ZwMbSKtak^ttHG1D6)8I(w^F)?+^c=>38*>2D8^1>mh+%a0lZ8sE&~WRTiDzT z@v5$%sb2L-kIh#zl}aw%%Z0Vjkgo_Cp@JnwN0ARJzNmaKa`@EJY=f5RwUaeqMdj#S)@0Rd5+l8JZn z@r$G4oUf>a_iq*rNghzNLKEqLSb&`4VcU{5*}@gy<{wY^Q#dl`7yBKTx~otfmz0n< ze9&?gRn1p&!u?tClW$e+z{V3(pn*ITRb`j3SVn*t5s2b*AoJBNg}h4;I?f=L9&Sd! z<~2w%qWgFn`WwK*9KyjIUE1!J#CJ~P6%^wZYF63Tkm>t{*GzK_OIE( z;!OosRePW#APf_QC`{_m>^PLP#~Dm|@P+vs!NtJ^gmml&CG4PC4->GNrSzKNQ-*<6 zE<=y#`&^WSB)ZeO_Cs%T43L|%oHB?18pehLL&&)>S`>I(`a7I(G9)%fO~KJ`^w8%z z!UE3K>Tm3`3m7>WX!gBK#hH9781XZip$}@N{V75cE9?{A<)jOR@QP>qCCiO9_=sX?6$#Pi_>?rOR z4V-y3SVzxQm;jndt(Ep8UE%NqSuqPHd4)4Z9>1mQ!)!8xi|)p``MYASk|O!GBWx)j zIO4Ww+jav#pvOz$M@2p0!aKyuvc@^6LDVO(U*Wz+Z^yS@$PdYmTPjhDa7$QoX3mHq z6og8iG2{?Izo`t&LZP)o&uv_#61C)*o%~{YVMvsHdUUq+WLf5K@M@zlvUFilt_+UQ zkK~e|;gZ{fD?grWxK-9Pc&h@IqK4IM2N{$C2B`%I_K|IED`dXJ9@h=$kWu>$ zEM1uT#ntODmQEFe0PUj=oRVkN_=xkf{fKrqa07W3RigZ8>S;nV3%zjU$gxQ6IniGKS{e_Et^m`)X9T!% zuw-+N+(8+UTgO5lS&EcL#L*~T@PB_n<`Jv=R!D_LmiCtaz?~>iet2|*vpu|^Ax{wm z;>a-uZv(7vj1cmi=51vTgE2dmtIDfEe^2U#yY*8xIt3Ywx=b2VKPghDG zpHpU#0_A`D6x_G0j4HOAUklv6DzW4*w9waBG8zA`g<=05kPH4MqBIR&v+)yCNU^NppO#LCcou4ZJ70x2@dKmHyYw=0Yo)Jk5X zvcdTGDbI0#=k<>nAasoky@k|>~+B|mgyhC;fyPf|v- zQc4_$K-B*;Do0*R;ADIT(|C*90)e<@eM7wZ8vPZMsb83z*8j6AG1Yy&YTgsG)3vPX z+uhP^-I4wUl#^f4j^&bIEQzZGST-!dHw7k!RDBIys&sxsSutG_Fgwe5pX|~hD`O2; z&*8BOP|pg?l}f#8U;A!O<(yT~NMq!Z=i{-{f&Jy}QNh_jJyAivAWXUp|NkcS2S)`# zkDV&o2buq!qSmidrQqCmCa6C}{d*F(FrF*ft=I$0sX3EFP}J5l0rD>z!ass5@e5rw zkhlZ$n%bCTu@%1)pW~BlHplkBN1#>*m*>0VNQ)E`?9TXRIJtcxJp!mc{Qd4fr&7N*61!#8bwPrKh zwHlUcilIJjVW+;HnB#bnm{!0i+4_19LNmn~CkfB~YdI72Qb@te58kBMh{?j3)ODG> z;g!U3QzX_on_lOA~2I`(279|0L@tFHe|2_bu|oI(Gb|In5# zx_pRr5^(-nzL32gJKw{3+WSXTbJ+!__o-rxUxE)v0g{3RsOkJex-qI<1k*wYXHwqQ zj%^tg%*xJU>av~A$(dou9;TIv+INUn;edU--y#Du<(wZ9;Q$b*;E~`&aYihqv$I%P zgYetSqep*m8(_}Y=G3~l2S|+`A@HN>K!Q9js}^1(VX*akBT(GZ7XRWV0r zR=kyaohUArD{_VIa71_Kjx+n}|EB!tsn0*4S#GBQ%1Y;>b}$tua3~+dDM@-3a1ww(zovH^F zTd6xrdT;XPD6K5XB(<%PXYErE*s|tl;Onf@=i=<|lp~@v`t{^tgnG~**JfQ3X8sQ! z{(u4kJ1AVMMEl^)LOW(>l(u$@ z63way%-)jh&c1H>ORz)o8~5lo8P2J*_auSJk1}qS;N-nr(dh7FEb^AGhXm%q`IP5O z+3&ct(WzBw+03Q<@UUio5L*W-H>sKJCkB}YV|&K6EHs{cZMXg(Jb!GN3;oc|oPlA` zg=)bT98KHc_hy2W^nW!0(LRYoE{Dw2?*1487BF*N*X`$Ib8k;HMITIE!I-+iSU4p7bkkQd+xD0_0_v0Gn{p2u8~6l#$R@MMv& zNuo73Zb8kx&4Z`qLmNYPn7au+Eq3prFe|+ZNcpHVvIGn=rCo=kSbnw+O^kTM_@M6{#izl(KE=~&Eg6pfWAIn0LtN|swhna&k+QlP15fr&u?J&94k z9|3dFGp@eiXqdj$o z8#Q;5=r(q&ExKFH!RU*{lc*Q*eeK{J#Q?D>nJ+uS6e+t}I5@viaWMg?7Y^e@+kB)( z;d>5<;!RleO<*G_xM)hKB@d50VK+r~&$yvIj9%c^IrG(6Q?OBe@On~PZ^ogp`U;8V zgN)HME=k(3s!0mZiX)#cHcS9h%YtamSYju@RMakz<<7q}dZ579kvb&2#`C z_afIRK#+Ul=3kx&^>hcc)!o7P=cHm`Kd2t;jvo6yccCI;p%YJ}LsF(_?o`V|a7AnA8qn ze1~1(T%K)`8}Vy@e3L+|a8JVY)n)6mZwL~K6k01zkd(4pO2~>UP_~&QkYFNAykn#I zw}hl)l0?cLLPza0Pg;_D{0W5zp<2^(X;V+IQ+lcInsD-I-N1QEJ39jO2H=7o6}S(11LrSZ&LSH%eB2hS z8^#Is=tE7O?f|Zdpht7o-6FhakgT`r4t4he%n!Vgue7*EdweGG$CO{@+S+Ji;#iKc zT$Ked2I|FEDmF#G>}uORSbI2&dTZcCxxFVTsr-;;f@g%w-7^7%55l03_YwLJlV2UW z06RB+(B`=^w{LN=)bGONIJP1r+URog3W8L<6guLE7hnB@UQHUCRP2X+cv0)jF*?U- zH@4DxefiHAml&goB}g=3TbN;fhU7aBXrYI1BUjb{YZ!Zvx!}Ah2C)4Z<$B-5SIaXH z>W&)cpRUoOJx{{w@G&z6G5%}%Wb5OFi0rnjaf*=gmF&AB8M;uuUi7n6V9#AGCiVAf zn6FHGYIb9CuIFFIH^BI6DRLdF#)d?V@g z7@P|*?;jfjBeGsX5KwJZ8gfp19BAX)&p30czs{}pZa4t!!I$~{d0xEWA{#9zhwQ({ zw|&^B!R4H%S!7<4jD~0fK2f@_Fv_88G#WnJR6T8lbNY0Y{YWv9D&F`MQ%O%h_Bj2P z$HMwiBOXi9-w4wAOut~1eRogpl%;ZeyWnC)Xg&IC!H!XfXGX3-+^5V+%3u8jXOx__ zT6c-${Xgm0Mh%i~`xR%*Nv$E%{yII=2WhMO9Z+T<02oaRsO{=0fRsb zAP=JRm*CDPl;G%@Boo^Y){!E0zp6z*hPn?_(`HUZr2J1X0~S7l&Fs2pL-Uv?w0U_T zVPAkb+99P{#=*JqXC96XFbUg%n|f#%9?F^7?kHg^$0A3v0S|~JznhDTs3=daPTpfn z$xOF3coXEuSXLc|;~kNgV){;LYJGj?<++$5ak7&EQFos}y_*rsK^)Uvp>3B>J`uz( zn)X6HxD3S&Mh^>=S8W)}SED%3xCnbmL7a#w?Bf?dC zbmeWbdAp*^i9r3z_sk&qy`^`!lwW}NIU&q--$OTS4n5JXkX`bAyB#@iRs3e#MS8Dk zr|4p~T04YNV!m`EX_~gu>T0NMgkLX8-Pjo)n}(Wzlg+!>da!(02JovwjDbCclBfIn zOTv%Q_HoC)O=6c#a!gioLq#Kc+L(;v!6{xJ4Lg&|{%)mIN@W$x5)1eBjlxx10j9U? z)9~(4CtXZb9dIdZuzE9tFq+i6f-WHJ^Rej+1>3+iFz#aOR_Ng>uC!*#G|$xcf9-qv zh7d!R2#gR)Lef6sBBaFe?&=WFp^la3>E!M@7>-?W?SWZ`1+}j3QIQuRGT#6oth-<=EGlW%9+YDK3Dv1C<{(p@9^QKyFV-o5ao1~~LRDmZ>1B6`K6Z!CGnuz9^TgL~0heQpMOpmDJ zb%xwoYbH`2o+Igu*L8^QxrR1O6a9jg4yL}Y8m2ppZh(diUe!;n+Bv{=@gvk6F`dz# za4)n2A@^@QY&Q27aU{klF|YlW<@c6bb$wU zYXbH0!bM%)7{A9Fjqr!z;(-Y0YgpQ<}PbM9vBxTR( zg89UW^C-4|xun_iTvhFxg-?Ta5wy;UwI67j@^nm&lXpWh%8t#v1>p)~?gEnE-IY+U zo!qHSRD?gn8o|d&8y^Sf_8u;wK!+y3E6Gvwk*d8D^G1N10G|xCUvgyYCPQwI2vY3BV7q){S=dIb(%w83gHh} z9^7vaPqEec>F`}imvP)ZWR4t`_p@WKm5~n6L55z!jX~+Cw1I(MvZrQReyK&D&LCHVL#WW∓3SqnOaYy(+f_d=ct79sDthsi4cn9;tq;~ zu@{*h2%OzdMkp-4EegBR%EjNI<_(6GA_iibauka`}92XMib~+n?#tP-e+WZCt(M|ggqaV~QKFwXSG#xQg z?~a@IW#_)=4mM)zXEf)QBTxsik|miG26w=E{KSKy&zJ1qB0gze8D%iXDN#;xX@IOa zwnRG|C&F#4fpLOLCv7hPn@lG>oHuERn9%Q926O9|z?{EK_TRyXvPRQ}3XWL0SLnO( zR)Mcc*(F~Fk1ET4&CqE{it?oymMz9~Ey>D&?MxUEG&~ZW1^OU%jw64k3D(wSe%4J& z+Afo+ZYDHFLLdwaq+$|}3HG$&trDm4^KzTYAsY4Wne2#7yJRyU55-XJm{YZg!`2M% zW1wjvVHRr;kSl(zu$#J#KE6MfR{6juqenI%s<@mUIskOaBX_?oQbWdk_PyN8Hq8=O z?l}w}2W#weqPcJLB86Cscp+Yb>&E}fP%l@jc?Ot4xak}QibVM6N4#r&T z@al(rssomW^Te%B$NfaeNENNquPhY!pXYu`81$g{ekHsM*dmv8T}yX@-@m8Lu;YpI z+0h`ejJ^XL0Iau@trC|>UT{@rHQSJ<9cE{X`NE))ksngbAU^pL%3l)6I0~B*7!{ zw;)~d*e5Q)TD9mIrC+iaEKE zwMFJX7zCxSPrgk|JIJV7rdEe^7|n`|>&~VApNx8Uyh}cmyDq+BQ(uU^8a;*&IYAt0 zKBHCR)C+(jwMiJiJdNIMd2IB+P?9AuF<}A{=T^@L)|7d7ABI8Fb#&^Wg@$2b)4g`~XM8$qnO&%@#9p?3&f%L*oXn!%z(Y}8*tM34kKeAxGX)dS{u1>)l z!vh}6E!?TIQATdAC2MoeVSYVCbpjv6qqXvt^GWOwO(NZ%5D;3>Qi_B6!D*PIpsMC3 z=b&sCdNOOOJ9b$=0W*9|VJSQ&W2gDeYC-}wP?v-=CYY5h;_?1BgV3lWsS%qsJ2G{G1uuaI? zcqpC9{P@l-fm_5n;ObRk{2v2&s_mmQTiqJVkNd02*PCxa1a;{DnxEL+l!unkhE6F@ z{ph+5jE17;?C9LA9tNWNxKcfNAn*F)z*SFlS)#1OR6mLuGnElc&H=aTm<14<2@0iLZh+3Dhe5AOJ`X)3+I_F|ZW)S60i-_3 z5b1VjM^rvPS1K_!Y@bM|kWbI(tsDf{&Ky2&AteN3=~38Tt1hoAc2LSl{546SSWop6 z@ulB>hw+@y7y43-3mo}QG=9^90SJFYO>Cdh7l4PsX4yBv-8~QJvN}DcB-0QUt;;