From a2fefcb82cdffdf4706db152f62fa1c87d178b9f Mon Sep 17 00:00:00 2001 From: Ulysse Corbeil Date: Fri, 28 Aug 2026 16:42:40 -0400 Subject: [PATCH 1/3] add ch annotated dummy package as a sibling manifest --- tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg | Bin 0 -> 300167 bytes tests_e2e/dummy/proto/clickhouse.proto | 29 ++ .../sink/sql/schema/v1/schema.proto | 225 ++++++++++++++ tests_e2e/dummy/src/lib.rs | 27 ++ tests_e2e/dummy/src/pb/.last_generated_hash | 2 +- tests_e2e/dummy/src/pb/mod.rs | 10 + tests_e2e/dummy/src/pb/schema.rs | 283 ++++++++++++++++++ tests_e2e/dummy/src/pb/test.clickhouse.rs | 28 ++ tests_e2e/dummy/substreams.clickhouse.yaml | 49 +++ 9 files changed, 652 insertions(+), 1 deletion(-) create mode 100644 tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg create mode 100644 tests_e2e/dummy/proto/clickhouse.proto create mode 100644 tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto create mode 100644 tests_e2e/dummy/src/pb/schema.rs create mode 100644 tests_e2e/dummy/src/pb/test.clickhouse.rs create mode 100644 tests_e2e/dummy/substreams.clickhouse.yaml diff --git a/tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg b/tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg new file mode 100644 index 0000000000000000000000000000000000000000..689c1d237705003c6c6af70e0459abd71862dfea GIT binary patch literal 300167 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

-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 literal 0 HcmV?d00001 diff --git a/tests_e2e/dummy/proto/clickhouse.proto b/tests_e2e/dummy/proto/clickhouse.proto new file mode 100644 index 000000000..caca22ac6 --- /dev/null +++ b/tests_e2e/dummy/proto/clickhouse.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +package test.clickhouse; + +import "sf/substreams/sink/sql/schema/v1/schema.proto"; + +message Events { + repeated Event event = 1; +} + +// Same shape as test.output.Event, annotated for the ClickHouse sink. It is a +// separate message rather than options on the shared one: the annotations change +// the module hash, and test.output.Event is what the other e2e modules emit. +message Event { + option (schema.table) = { + name: "Event" + clickhouse_table_options: { + order_by_fields: [{name: "evt_tx_hash"}, {name: "evt_block_number"}] + } + }; + + // ClickHouse requires the primary key to be a prefix of the sorting key, so + // the hash leads and the block number follows. + string evt_tx_hash = 1 [(schema.field) = { primary_key: true }]; + string evt_from = 2; + string evt_to = 3; + uint64 evt_block_number = 4; + uint64 fee = 5; +} diff --git a/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto b/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto new file mode 100644 index 000000000..61651c2ea --- /dev/null +++ b/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto @@ -0,0 +1,225 @@ +syntax = "proto3"; +import "google/protobuf/descriptor.proto"; + +package schema; +option go_package = "github.com/streamingfast/substreams/pb/sf/substreams/sink/sql/schema/v1"; + +// Extension to add table metadata to protobuf messages. +// Usage: Add `option (table) = { name: "my_table" };` to a message definition +// to specify how the message should be mapped to a database table. +// Only message with the option will be converted to database table. +extend google.protobuf.MessageOptions { + Table table = 77701; +} + +// Extension to add column metadata to protobuf fields. +// Usage: Add `[(field) = { name: "custom_column_name", primary_key: true }];` +// to a field definition to customize how the field is mapped to a database column. +extend google.protobuf.FieldOptions { + Column field = 77702; +} + +// Table defines metadata for mapping a protobuf message to a database table. +// This message is used with the (table) extension on protobuf messages. +message Table { + // The name of the database table. If not specified, the message name is used. + string name = 1; + + // Optional field to specify a parent table for establishing table relationships. + // Used for creating foreign key relationships in relational databases. + optional string child_of = 2; + + // ClickHouse-specific table options for configuring table engine parameters. + // Only applicable when using ClickHouse as the target database. + optional ClickhouseTableOptions clickhouse_table_options = 200; +} + +// Int128 represents a 128-bit signed integer type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to Int128. +message Int128 { +} + +// UInt128 represents a 128-bit unsigned integer type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to UInt128. +message UInt128 { +} + +// Int256 represents a 256-bit signed integer type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to Int256. +message Int256 { +} + +// UInt256 represents a 256-bit unsigned integer type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to UInt256. +message UInt256 { +} + +// Decimal128 represents a 128-bit decimal type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to Decimal128. +message Decimal128{ + // The number of digits after the decimal point for this decimal type. + int32 scale = 1; +} + +// Decimal256 represents a 256-bit decimal type for string conversion. +// Used in StringConvertion to specify that a string field should be converted to Decimal256. +message Decimal256{ + // The number of digits after the decimal point for this decimal type. + int32 scale = 1; +} + +// StringConvertion defines how string fields should be converted to specific numeric types. +// This is used when protobuf string fields contain numeric data that should be stored +// as native numeric types in the database for better performance and storage efficiency. +// Usage: Set this in Column.convertTo field to specify the target numeric type. +message StringConvertion { + oneof convertion { + // Convert string to 128-bit signed integer + Int128 int128 = 2; + + // Convert string to 128-bit unsigned integer + UInt128 uint128 = 3; + + // Convert string to 256-bit signed integer + Int256 int256 = 4; + + // Convert string to 256-bit unsigned integer + UInt256 uint256 = 6; + + // Convert string to 128-bit decimal with specified scale + Decimal128 decimal128 = 50; + + // Convert string to 256-bit decimal with specified scale + Decimal256 decimal256 = 51; + } +} + + +// Column defines metadata for mapping a protobuf field to a database column. +// This message is used with the (field) extension on protobuf fields. +message Column { + // Custom column name. If not specified, the field name is used. + optional string name = 1; + + // Foreign key reference to another table's column in the format "table.column". + // Used to establish referential integrity constraints in relational databases. + optional string foreign_key = 2; + + // Whether this column should have a unique constraint. + // Ensures no duplicate values exist for this column. + bool unique = 3; + + // Whether this column is part of the primary key. + // Primary key columns are automatically non-null and unique. + bool primary_key = 4; + + // Specifies how to convert string fields to specific numeric types. + // Only applies to string fields that contain numeric data. + // Leave unset for no conversion (store as string). + StringConvertion convertTo = 5; + + bool inline = 6; + +} + +// ClickhouseTableOptions defines ClickHouse-specific table configuration options. +// These options are used to configure ClickHouse table engines and optimize query performance. +message ClickhouseTableOptions { + // Fields to use for the ORDER BY clause in ClickHouse table definition. + // ORDER BY determines the physical ordering of data on disk for better compression and query performance. + repeated ClickhouseOrderByField order_by_fields = 1; + + // Fields to use for table partitioning in ClickHouse. + // Partitioning helps with query performance and data management by splitting data into logical parts. + repeated ClickhousePartitionByField partition_fields = 2; + + // Secondary indexes to create for improved query performance on specific columns. + // These are data skipping indexes that help ClickHouse skip irrelevant data blocks during queries. + repeated ClickhouseIndexField index_fields = 4; +} + +// ClickhousePartitionByField defines a field used for ClickHouse table partitioning. +// Partitioning splits data into separate parts based on the specified field values. +message ClickhousePartitionByField { + // The name of the field to use for partitioning + string name = 1; + + // Optional function to apply to the field value before partitioning (e.g., toYYYYMM for dates) + Function function = 2; +} + +// ClickhouseOrderByField defines a field used in the ClickHouse table ORDER BY clause. +// ORDER BY determines the physical storage order of data for optimal compression and query performance. +message ClickhouseOrderByField { + // The name of the field to include in the ORDER BY clause + string name = 1; + + // Whether to sort this field in descending order (default is ascending) + bool descending = 2; + + // Optional function to apply to the field value before ordering (e.g., toDate for timestamps) + Function function = 3; +} + +// ClickhouseIndexField defines a secondary index for improved query performance. +// Secondary indexes help ClickHouse skip irrelevant data blocks during query execution. +message ClickhouseIndexField { + // The name of the index (must be unique within the table) + string name = 1; + + // The field name on which to create the index + string field_name = 2; + + // The type of index to create (e.g., minmax, bloom_filter, set) + IndexType type = 3; + + // The granularity parameter that controls index density (higher = less memory, lower precision) + uint32 granularity = 4; + + // Optional function to apply to the field value before indexing + Function function = 5; +} + +// IndexType defines the types of secondary indexes available in ClickHouse. +// Each type has different performance characteristics and use cases. +enum IndexType { + // MinMax index stores minimum and maximum values for each granule (fastest, least memory) + minmax = 0; + + // Set index stores unique values for each granule (good for low cardinality fields) + set = 1; + + // N-gram Bloom filter index for substring searches (good for text search) + ngrambf_v1 = 2; + + // Token Bloom filter index for full-word searches (good for tokenized text) + tokenbf_v1 = 3; + + // Bloom filter index for equality checks (good for high cardinality fields) + bloom_filter = 4; +} + +// Function defines transformation functions that can be applied to field values +// before partitioning, ordering, or indexing in ClickHouse. +enum Function { + // No function applied (use raw field value) + unset = 0; + + // Convert date/timestamp to YYYYMM format (useful for monthly partitioning) + toYYYYMM = 1; + + // Convert date/timestamp to YYYYDD format (useful for daily partitioning) + toYYYYDD = 2; + + // Extract year from date/timestamp (useful for yearly partitioning) + toYear = 3; + + // Extract month from date/timestamp (useful for monthly grouping) + toMonth = 4; + + // Convert timestamp to date (removes time component) + toDate = 5; + + // Convert date to first day of the month (useful for monthly aggregations) + toStartOfMonth = 6; +} diff --git a/tests_e2e/dummy/src/lib.rs b/tests_e2e/dummy/src/lib.rs index 60d8f6f2b..72d478028 100644 --- a/tests_e2e/dummy/src/lib.rs +++ b/tests_e2e/dummy/src/lib.rs @@ -1,6 +1,7 @@ mod pb; use crate::pb::sf::acme::r#type::v1 as acme; use hex_literal::hex; +use pb::test::clickhouse as pbclickhouse; use pb::test::output as pbtest; use substreams::Hex; @@ -314,3 +315,29 @@ fn query(block_number: u64, store: &FoundationalStore, keys: &[String]) -> pbtes entry, } } + +// Same events as map_events, emitted as test.clickhouse.Events so the message +// carries the ClickHouse table annotations. Output module for the +// substreams.clickhouse.yaml manifest. +#[substreams::handlers::map] +fn map_events_clickhouse(blk: acme::Block) -> Result { + let mut events = pbclickhouse::Events::default(); + + for transaction in blk.transactions { + events.event.push(pbclickhouse::Event { + evt_tx_hash: transaction.hash, + evt_from: transaction.sender, + evt_to: transaction.receiver, + evt_block_number: blk.header.as_ref().map_or(0, |h| h.height), + fee: transaction.fee.as_ref().map_or(0, |f| { + f.bytes + .iter() + .take(8) + .enumerate() + .fold(0u64, |acc, (i, &b)| acc | ((b as u64) << (i * 8))) + }), + }); + } + + Ok(events) +} diff --git a/tests_e2e/dummy/src/pb/.last_generated_hash b/tests_e2e/dummy/src/pb/.last_generated_hash index d2f1213ef..f4cc37fcf 100644 --- a/tests_e2e/dummy/src/pb/.last_generated_hash +++ b/tests_e2e/dummy/src/pb/.last_generated_hash @@ -1 +1 @@ -d937e490350d7325bd1c9e9c6bb7d40b008237a117a5d0bc241f69d4f92656ed \ No newline at end of file +d232da728c17f6f41bfa09fcd1b9c60bc8d79ec86a5559dbeaf6a18c51d8e975 \ No newline at end of file diff --git a/tests_e2e/dummy/src/pb/mod.rs b/tests_e2e/dummy/src/pb/mod.rs index 9e9fd8c1e..40f85fbc1 100644 --- a/tests_e2e/dummy/src/pb/mod.rs +++ b/tests_e2e/dummy/src/pb/mod.rs @@ -10,7 +10,17 @@ pub mod sf { } } } +// @@protoc_insertion_point(attribute:schema) +pub mod schema { + include!("schema.rs"); + // @@protoc_insertion_point(schema) +} pub mod test { + // @@protoc_insertion_point(attribute:test.clickhouse) + pub mod clickhouse { + include!("test.clickhouse.rs"); + // @@protoc_insertion_point(test.clickhouse) + } // @@protoc_insertion_point(attribute:test.output) pub mod output { include!("test.output.rs"); diff --git a/tests_e2e/dummy/src/pb/schema.rs b/tests_e2e/dummy/src/pb/schema.rs new file mode 100644 index 000000000..4ca191e89 --- /dev/null +++ b/tests_e2e/dummy/src/pb/schema.rs @@ -0,0 +1,283 @@ +// @generated +// This file is @generated by prost-build. +/// Table defines metadata for mapping a protobuf message to a database table. +/// This message is used with the (table) extension on protobuf messages. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Table { + /// The name of the database table. If not specified, the message name is used. + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + /// Optional field to specify a parent table for establishing table relationships. + /// Used for creating foreign key relationships in relational databases. + #[prost(string, optional, tag="2")] + pub child_of: ::core::option::Option<::prost::alloc::string::String>, + /// ClickHouse-specific table options for configuring table engine parameters. + /// Only applicable when using ClickHouse as the target database. + #[prost(message, optional, tag="200")] + pub clickhouse_table_options: ::core::option::Option, +} +/// Int128 represents a 128-bit signed integer type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to Int128. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Int128 { +} +/// UInt128 represents a 128-bit unsigned integer type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to UInt128. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct UInt128 { +} +/// Int256 represents a 256-bit signed integer type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to Int256. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Int256 { +} +/// UInt256 represents a 256-bit unsigned integer type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to UInt256. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct UInt256 { +} +/// Decimal128 represents a 128-bit decimal type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to Decimal128. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Decimal128 { + /// The number of digits after the decimal point for this decimal type. + #[prost(int32, tag="1")] + pub scale: i32, +} +/// Decimal256 represents a 256-bit decimal type for string conversion. +/// Used in StringConvertion to specify that a string field should be converted to Decimal256. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Decimal256 { + /// The number of digits after the decimal point for this decimal type. + #[prost(int32, tag="1")] + pub scale: i32, +} +/// StringConvertion defines how string fields should be converted to specific numeric types. +/// This is used when protobuf string fields contain numeric data that should be stored +/// as native numeric types in the database for better performance and storage efficiency. +/// Usage: Set this in Column.convertTo field to specify the target numeric type. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct StringConvertion { + #[prost(oneof="string_convertion::Convertion", tags="2, 3, 4, 6, 50, 51")] + pub convertion: ::core::option::Option, +} +/// Nested message and enum types in `StringConvertion`. +pub mod string_convertion { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] + pub enum Convertion { + /// Convert string to 128-bit signed integer + #[prost(message, tag="2")] + Int128(super::Int128), + /// Convert string to 128-bit unsigned integer + #[prost(message, tag="3")] + Uint128(super::UInt128), + /// Convert string to 256-bit signed integer + #[prost(message, tag="4")] + Int256(super::Int256), + /// Convert string to 256-bit unsigned integer + #[prost(message, tag="6")] + Uint256(super::UInt256), + /// Convert string to 128-bit decimal with specified scale + #[prost(message, tag="50")] + Decimal128(super::Decimal128), + /// Convert string to 256-bit decimal with specified scale + #[prost(message, tag="51")] + Decimal256(super::Decimal256), + } +} +/// Column defines metadata for mapping a protobuf field to a database column. +/// This message is used with the (field) extension on protobuf fields. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Column { + /// Custom column name. If not specified, the field name is used. + #[prost(string, optional, tag="1")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + /// Foreign key reference to another table's column in the format "table.column". + /// Used to establish referential integrity constraints in relational databases. + #[prost(string, optional, tag="2")] + pub foreign_key: ::core::option::Option<::prost::alloc::string::String>, + /// Whether this column should have a unique constraint. + /// Ensures no duplicate values exist for this column. + #[prost(bool, tag="3")] + pub unique: bool, + /// Whether this column is part of the primary key. + /// Primary key columns are automatically non-null and unique. + #[prost(bool, tag="4")] + pub primary_key: bool, + /// Specifies how to convert string fields to specific numeric types. + /// Only applies to string fields that contain numeric data. + /// Leave unset for no conversion (store as string). + #[prost(message, optional, tag="5")] + pub convert_to: ::core::option::Option, + #[prost(bool, tag="6")] + pub inline: bool, +} +/// ClickhouseTableOptions defines ClickHouse-specific table configuration options. +/// These options are used to configure ClickHouse table engines and optimize query performance. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClickhouseTableOptions { + /// Fields to use for the ORDER BY clause in ClickHouse table definition. + /// ORDER BY determines the physical ordering of data on disk for better compression and query performance. + #[prost(message, repeated, tag="1")] + pub order_by_fields: ::prost::alloc::vec::Vec, + /// Fields to use for table partitioning in ClickHouse. + /// Partitioning helps with query performance and data management by splitting data into logical parts. + #[prost(message, repeated, tag="2")] + pub partition_fields: ::prost::alloc::vec::Vec, + /// Secondary indexes to create for improved query performance on specific columns. + /// These are data skipping indexes that help ClickHouse skip irrelevant data blocks during queries. + #[prost(message, repeated, tag="4")] + pub index_fields: ::prost::alloc::vec::Vec, +} +/// ClickhousePartitionByField defines a field used for ClickHouse table partitioning. +/// Partitioning splits data into separate parts based on the specified field values. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClickhousePartitionByField { + /// The name of the field to use for partitioning + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + /// Optional function to apply to the field value before partitioning (e.g., toYYYYMM for dates) + #[prost(enumeration="Function", tag="2")] + pub function: i32, +} +/// ClickhouseOrderByField defines a field used in the ClickHouse table ORDER BY clause. +/// ORDER BY determines the physical storage order of data for optimal compression and query performance. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClickhouseOrderByField { + /// The name of the field to include in the ORDER BY clause + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + /// Whether to sort this field in descending order (default is ascending) + #[prost(bool, tag="2")] + pub descending: bool, + /// Optional function to apply to the field value before ordering (e.g., toDate for timestamps) + #[prost(enumeration="Function", tag="3")] + pub function: i32, +} +/// ClickhouseIndexField defines a secondary index for improved query performance. +/// Secondary indexes help ClickHouse skip irrelevant data blocks during query execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClickhouseIndexField { + /// The name of the index (must be unique within the table) + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + /// The field name on which to create the index + #[prost(string, tag="2")] + pub field_name: ::prost::alloc::string::String, + /// The type of index to create (e.g., minmax, bloom_filter, set) + #[prost(enumeration="IndexType", tag="3")] + pub r#type: i32, + /// The granularity parameter that controls index density (higher = less memory, lower precision) + #[prost(uint32, tag="4")] + pub granularity: u32, + /// Optional function to apply to the field value before indexing + #[prost(enumeration="Function", tag="5")] + pub function: i32, +} +/// IndexType defines the types of secondary indexes available in ClickHouse. +/// Each type has different performance characteristics and use cases. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum IndexType { + /// MinMax index stores minimum and maximum values for each granule (fastest, least memory) + Minmax = 0, + /// Set index stores unique values for each granule (good for low cardinality fields) + Set = 1, + /// N-gram Bloom filter index for substring searches (good for text search) + NgrambfV1 = 2, + /// Token Bloom filter index for full-word searches (good for tokenized text) + TokenbfV1 = 3, + /// Bloom filter index for equality checks (good for high cardinality fields) + BloomFilter = 4, +} +impl IndexType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + IndexType::Minmax => "minmax", + IndexType::Set => "set", + IndexType::NgrambfV1 => "ngrambf_v1", + IndexType::TokenbfV1 => "tokenbf_v1", + IndexType::BloomFilter => "bloom_filter", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "minmax" => Some(Self::Minmax), + "set" => Some(Self::Set), + "ngrambf_v1" => Some(Self::NgrambfV1), + "tokenbf_v1" => Some(Self::TokenbfV1), + "bloom_filter" => Some(Self::BloomFilter), + _ => None, + } + } +} +/// Function defines transformation functions that can be applied to field values +/// before partitioning, ordering, or indexing in ClickHouse. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Function { + /// No function applied (use raw field value) + Unset = 0, + /// Convert date/timestamp to YYYYMM format (useful for monthly partitioning) + ToYyyymm = 1, + /// Convert date/timestamp to YYYYDD format (useful for daily partitioning) + ToYyyydd = 2, + /// Extract year from date/timestamp (useful for yearly partitioning) + ToYear = 3, + /// Extract month from date/timestamp (useful for monthly grouping) + ToMonth = 4, + /// Convert timestamp to date (removes time component) + ToDate = 5, + /// Convert date to first day of the month (useful for monthly aggregations) + ToStartOfMonth = 6, +} +impl Function { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Function::Unset => "unset", + Function::ToYyyymm => "toYYYYMM", + Function::ToYyyydd => "toYYYYDD", + Function::ToYear => "toYear", + Function::ToMonth => "toMonth", + Function::ToDate => "toDate", + Function::ToStartOfMonth => "toStartOfMonth", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "unset" => Some(Self::Unset), + "toYYYYMM" => Some(Self::ToYyyymm), + "toYYYYDD" => Some(Self::ToYyyydd), + "toYear" => Some(Self::ToYear), + "toMonth" => Some(Self::ToMonth), + "toDate" => Some(Self::ToDate), + "toStartOfMonth" => Some(Self::ToStartOfMonth), + _ => None, + } + } +} +// @@protoc_insertion_point(module) diff --git a/tests_e2e/dummy/src/pb/test.clickhouse.rs b/tests_e2e/dummy/src/pb/test.clickhouse.rs new file mode 100644 index 000000000..9ff96f7be --- /dev/null +++ b/tests_e2e/dummy/src/pb/test.clickhouse.rs @@ -0,0 +1,28 @@ +// @generated +// This file is @generated by prost-build. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Events { + #[prost(message, repeated, tag="1")] + pub event: ::prost::alloc::vec::Vec, +} +/// Same shape as test.output.Event, annotated for the ClickHouse sink. It is a +/// separate message rather than options on the shared one: the annotations change +/// the module hash, and test.output.Event is what the other e2e modules emit. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Event { + /// ClickHouse requires the primary key to be a prefix of the sorting key, so + /// the hash leads and the block number follows. + #[prost(string, tag="1")] + pub evt_tx_hash: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub evt_from: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub evt_to: ::prost::alloc::string::String, + #[prost(uint64, tag="4")] + pub evt_block_number: u64, + #[prost(uint64, tag="5")] + pub fee: u64, +} +// @@protoc_insertion_point(module) diff --git a/tests_e2e/dummy/substreams.clickhouse.yaml b/tests_e2e/dummy/substreams.clickhouse.yaml new file mode 100644 index 000000000..e9c797f90 --- /dev/null +++ b/tests_e2e/dummy/substreams.clickhouse.yaml @@ -0,0 +1,49 @@ +# ClickHouse sink fixture. Same events as map_events in substreams.yaml, emitted +# as test.clickhouse.Events, whose message carries the table annotations the +# ClickHouse sink needs: it has no default ordering and refuses to create a table +# without an ORDER BY. +# +# substreams sink clickhouse e2e-clickhouse-v0.1.0.spkg map_events_clickhouse \ +# --dsn "clickhouse://default:@localhost:9000/default" +# +# Kept out of substreams.yaml so the annotations do not land on test.output.Event, +# which the other e2e modules emit and whose module hashes would change. +specVersion: v0.1.0 +package: + name: e2e_clickhouse + version: v0.1.0 + +protobuf: + descriptorSets: + - module: buf.build/streamingfast/firehose-acme@f6b2cc014e9d46059938734205759dce + files: + - clickhouse.proto + # Imported by clickhouse.proto. Listed so it lands in the package descriptor: + # a proto reached only through importPaths is parsed but not embedded, and + # the sink then fails to read the package. Vendored under ./proto because + # buf.build/streamingfast/substreams-sink-sql is deprecated. + - sf/substreams/sink/sql/schema/v1/schema.proto + importPaths: + - ./proto + excludePaths: + - sf/substreams/rpc + - sf/substreams/v1 + - sf/substreams/index + - sf/firehose + - google + +binaries: + default: + type: wasm/rust-v1 + file: ./target/wasm32-unknown-unknown/release/substreams.wasm + +modules: + - name: map_events_clickhouse + kind: map + initialBlock: 0 + inputs: + - source: sf.acme.type.v1.Block + output: + type: proto:test.clickhouse.Events + +network: dummy From a71ae9303d975da119f26b98042a2bff2a5840b0 Mon Sep 17 00:00:00 2001 From: Ulysse Corbeil Date: Fri, 28 Aug 2026 17:08:11 -0400 Subject: [PATCH 2/3] serve sink sql schema.proto from embed --- docs/release-notes/change-log.md | 15 ++ manifest/protobuf.go | 6 + manifest/sink_test.go | 28 +++ proto/embed.go | 7 + tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg | Bin 300167 -> 355940 bytes .../sink/sql/schema/v1/schema.proto | 225 ------------------ tests_e2e/dummy/substreams.clickhouse.yaml | 5 - 7 files changed, 56 insertions(+), 230 deletions(-) delete mode 100644 tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto diff --git a/docs/release-notes/change-log.md b/docs/release-notes/change-log.md index d856d81c8..c8d99f166 100644 --- a/docs/release-notes/change-log.md +++ b/docs/release-notes/change-log.md @@ -11,6 +11,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +### CLI + +- A manifest can now import `sf/substreams/sink/sql/schema/v1/schema.proto` without + vendoring a copy of it. The file is a system protobuf, but `protoparse` needs the + source on disk to honour its extensions, so an import previously failed with + `no such file`. It is now served from an embedded copy, the same way + `sf/substreams/options.proto` already was. + ### Docs - Document `Feed.Delete` on the Remote Feed Hosted Store guide: remote-feed clients can @@ -45,6 +53,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Tests +- The `tests_e2e/dummy` directory gains a `substreams.clickhouse.yaml` sibling manifest + packing `e2e_clickhouse`, whose `map_events_clickhouse` module emits + `test.clickhouse.Events`. That message carries the `(schema.table)` ClickHouse + annotations, so the package sinks with `substreams sink clickhouse` without further + setup. Kept out of `substreams.yaml` and given its own message so the annotations do + not change the module hashes of the existing e2e modules. + - The `tests_e2e/dummy` package gains three modules for exercising Hosted Stores against a staging environment. `map_hosted_store_feed`, packed into `e2e-v0.3.0.spkg`, emits `SinkEntries` and can be given to a Substreams Feed Hosted Store as its output module; it diff --git a/manifest/protobuf.go b/manifest/protobuf.go index c62790890..7a8ce67f6 100644 --- a/manifest/protobuf.go +++ b/manifest/protobuf.go @@ -149,6 +149,9 @@ func loadLocalProtobufs(pkg *pbsubstreams.Package, manif *Manifest) ([]*desc.Fil if strings.HasSuffix(filename, sfproto.OptionsPath) { return io.NopCloser(bytes.NewReader(sfproto.OptionsSource)), nil } + if strings.HasSuffix(filename, sfproto.SQLSchemaPath) { + return io.NopCloser(bytes.NewReader(sfproto.SQLSchemaSource)), nil + } return os.Open(filename) }, LookupImportProto: func(file string) (*descriptorpb.FileDescriptorProto, error) { @@ -310,6 +313,9 @@ func loadProtobufFromDirectory(pkg *pbsubstreams.Package, protoPath string) ([]* if strings.HasSuffix(filename, sfproto.OptionsPath) { return io.NopCloser(bytes.NewReader(sfproto.OptionsSource)), nil } + if strings.HasSuffix(filename, sfproto.SQLSchemaPath) { + return io.NopCloser(bytes.NewReader(sfproto.SQLSchemaSource)), nil + } return os.Open(filename) }, LookupImportProto: func(file string) (*descriptorpb.FileDescriptorProto, error) { diff --git a/manifest/sink_test.go b/manifest/sink_test.go index 5dfe58422..b3b42476b 100644 --- a/manifest/sink_test.go +++ b/manifest/sink_test.go @@ -1,8 +1,11 @@ package manifest import ( + "os" + "path/filepath" "testing" + pbsubstreams "github.com/streamingfast/substreams/pb/sf/substreams/v1" "github.com/stretchr/testify/require" ) @@ -22,3 +25,28 @@ func TestSystemProtobufs_ResolveSQLSinkServiceTypes(t *testing.T) { require.NotNil(t, msgDesc) } } + +// A manifest that imports the SQL sink schema must parse without the file being +// on disk. It is a system protobuf, but protoparse needs the source to honour +// its extensions, so it is served from an embedded copy. +func TestSQLSchemaProto_ResolvesWithoutLocalCopy(t *testing.T) { + dir := t.TempDir() + protoDir := filepath.Join(dir, "proto") + require.NoError(t, os.MkdirAll(protoDir, 0o755)) + + contract := `syntax = "proto3"; +package test.annotated; +import "sf/substreams/sink/sql/schema/v1/schema.proto"; +message Row { + option (schema.table) = { + name: "Row" + clickhouse_table_options: { order_by_fields: [{name: "id"}] } + }; + string id = 1 [(schema.field) = { primary_key: true }]; +}` + require.NoError(t, os.WriteFile(filepath.Join(protoDir, "contract.proto"), []byte(contract), 0o644)) + + pkg := &pbsubstreams.Package{} + _, err := loadProtobufFromDirectory(pkg, protoDir) + require.NoError(t, err) +} diff --git a/proto/embed.go b/proto/embed.go index 4a726fa7b..fd56ce660 100644 --- a/proto/embed.go +++ b/proto/embed.go @@ -8,3 +8,10 @@ var OptionsPath = "sf/substreams/options.proto" //go:embed sf/substreams/options.proto var OptionsSource []byte + +// SQL sink schema annotations. Like options.proto, protoparse needs the source +// on disk to honour the extensions, and a manifest that imports it has no copy. +var SQLSchemaPath = "sf/substreams/sink/sql/schema/v1/schema.proto" + +//go:embed sf/substreams/sink/sql/schema/v1/schema.proto +var SQLSchemaSource []byte diff --git a/tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg b/tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg index 689c1d237705003c6c6af70e0459abd71862dfea..b2545a5625b3d6d6feb74c0877161b19a5645ecd 100644 GIT binary patch delta 84556 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 delta 29261 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 diff --git a/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto b/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto deleted file mode 100644 index 61651c2ea..000000000 --- a/tests_e2e/dummy/proto/sf/substreams/sink/sql/schema/v1/schema.proto +++ /dev/null @@ -1,225 +0,0 @@ -syntax = "proto3"; -import "google/protobuf/descriptor.proto"; - -package schema; -option go_package = "github.com/streamingfast/substreams/pb/sf/substreams/sink/sql/schema/v1"; - -// Extension to add table metadata to protobuf messages. -// Usage: Add `option (table) = { name: "my_table" };` to a message definition -// to specify how the message should be mapped to a database table. -// Only message with the option will be converted to database table. -extend google.protobuf.MessageOptions { - Table table = 77701; -} - -// Extension to add column metadata to protobuf fields. -// Usage: Add `[(field) = { name: "custom_column_name", primary_key: true }];` -// to a field definition to customize how the field is mapped to a database column. -extend google.protobuf.FieldOptions { - Column field = 77702; -} - -// Table defines metadata for mapping a protobuf message to a database table. -// This message is used with the (table) extension on protobuf messages. -message Table { - // The name of the database table. If not specified, the message name is used. - string name = 1; - - // Optional field to specify a parent table for establishing table relationships. - // Used for creating foreign key relationships in relational databases. - optional string child_of = 2; - - // ClickHouse-specific table options for configuring table engine parameters. - // Only applicable when using ClickHouse as the target database. - optional ClickhouseTableOptions clickhouse_table_options = 200; -} - -// Int128 represents a 128-bit signed integer type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to Int128. -message Int128 { -} - -// UInt128 represents a 128-bit unsigned integer type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to UInt128. -message UInt128 { -} - -// Int256 represents a 256-bit signed integer type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to Int256. -message Int256 { -} - -// UInt256 represents a 256-bit unsigned integer type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to UInt256. -message UInt256 { -} - -// Decimal128 represents a 128-bit decimal type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to Decimal128. -message Decimal128{ - // The number of digits after the decimal point for this decimal type. - int32 scale = 1; -} - -// Decimal256 represents a 256-bit decimal type for string conversion. -// Used in StringConvertion to specify that a string field should be converted to Decimal256. -message Decimal256{ - // The number of digits after the decimal point for this decimal type. - int32 scale = 1; -} - -// StringConvertion defines how string fields should be converted to specific numeric types. -// This is used when protobuf string fields contain numeric data that should be stored -// as native numeric types in the database for better performance and storage efficiency. -// Usage: Set this in Column.convertTo field to specify the target numeric type. -message StringConvertion { - oneof convertion { - // Convert string to 128-bit signed integer - Int128 int128 = 2; - - // Convert string to 128-bit unsigned integer - UInt128 uint128 = 3; - - // Convert string to 256-bit signed integer - Int256 int256 = 4; - - // Convert string to 256-bit unsigned integer - UInt256 uint256 = 6; - - // Convert string to 128-bit decimal with specified scale - Decimal128 decimal128 = 50; - - // Convert string to 256-bit decimal with specified scale - Decimal256 decimal256 = 51; - } -} - - -// Column defines metadata for mapping a protobuf field to a database column. -// This message is used with the (field) extension on protobuf fields. -message Column { - // Custom column name. If not specified, the field name is used. - optional string name = 1; - - // Foreign key reference to another table's column in the format "table.column". - // Used to establish referential integrity constraints in relational databases. - optional string foreign_key = 2; - - // Whether this column should have a unique constraint. - // Ensures no duplicate values exist for this column. - bool unique = 3; - - // Whether this column is part of the primary key. - // Primary key columns are automatically non-null and unique. - bool primary_key = 4; - - // Specifies how to convert string fields to specific numeric types. - // Only applies to string fields that contain numeric data. - // Leave unset for no conversion (store as string). - StringConvertion convertTo = 5; - - bool inline = 6; - -} - -// ClickhouseTableOptions defines ClickHouse-specific table configuration options. -// These options are used to configure ClickHouse table engines and optimize query performance. -message ClickhouseTableOptions { - // Fields to use for the ORDER BY clause in ClickHouse table definition. - // ORDER BY determines the physical ordering of data on disk for better compression and query performance. - repeated ClickhouseOrderByField order_by_fields = 1; - - // Fields to use for table partitioning in ClickHouse. - // Partitioning helps with query performance and data management by splitting data into logical parts. - repeated ClickhousePartitionByField partition_fields = 2; - - // Secondary indexes to create for improved query performance on specific columns. - // These are data skipping indexes that help ClickHouse skip irrelevant data blocks during queries. - repeated ClickhouseIndexField index_fields = 4; -} - -// ClickhousePartitionByField defines a field used for ClickHouse table partitioning. -// Partitioning splits data into separate parts based on the specified field values. -message ClickhousePartitionByField { - // The name of the field to use for partitioning - string name = 1; - - // Optional function to apply to the field value before partitioning (e.g., toYYYYMM for dates) - Function function = 2; -} - -// ClickhouseOrderByField defines a field used in the ClickHouse table ORDER BY clause. -// ORDER BY determines the physical storage order of data for optimal compression and query performance. -message ClickhouseOrderByField { - // The name of the field to include in the ORDER BY clause - string name = 1; - - // Whether to sort this field in descending order (default is ascending) - bool descending = 2; - - // Optional function to apply to the field value before ordering (e.g., toDate for timestamps) - Function function = 3; -} - -// ClickhouseIndexField defines a secondary index for improved query performance. -// Secondary indexes help ClickHouse skip irrelevant data blocks during query execution. -message ClickhouseIndexField { - // The name of the index (must be unique within the table) - string name = 1; - - // The field name on which to create the index - string field_name = 2; - - // The type of index to create (e.g., minmax, bloom_filter, set) - IndexType type = 3; - - // The granularity parameter that controls index density (higher = less memory, lower precision) - uint32 granularity = 4; - - // Optional function to apply to the field value before indexing - Function function = 5; -} - -// IndexType defines the types of secondary indexes available in ClickHouse. -// Each type has different performance characteristics and use cases. -enum IndexType { - // MinMax index stores minimum and maximum values for each granule (fastest, least memory) - minmax = 0; - - // Set index stores unique values for each granule (good for low cardinality fields) - set = 1; - - // N-gram Bloom filter index for substring searches (good for text search) - ngrambf_v1 = 2; - - // Token Bloom filter index for full-word searches (good for tokenized text) - tokenbf_v1 = 3; - - // Bloom filter index for equality checks (good for high cardinality fields) - bloom_filter = 4; -} - -// Function defines transformation functions that can be applied to field values -// before partitioning, ordering, or indexing in ClickHouse. -enum Function { - // No function applied (use raw field value) - unset = 0; - - // Convert date/timestamp to YYYYMM format (useful for monthly partitioning) - toYYYYMM = 1; - - // Convert date/timestamp to YYYYDD format (useful for daily partitioning) - toYYYYDD = 2; - - // Extract year from date/timestamp (useful for yearly partitioning) - toYear = 3; - - // Extract month from date/timestamp (useful for monthly grouping) - toMonth = 4; - - // Convert timestamp to date (removes time component) - toDate = 5; - - // Convert date to first day of the month (useful for monthly aggregations) - toStartOfMonth = 6; -} diff --git a/tests_e2e/dummy/substreams.clickhouse.yaml b/tests_e2e/dummy/substreams.clickhouse.yaml index e9c797f90..40e11ac06 100644 --- a/tests_e2e/dummy/substreams.clickhouse.yaml +++ b/tests_e2e/dummy/substreams.clickhouse.yaml @@ -18,11 +18,6 @@ protobuf: - module: buf.build/streamingfast/firehose-acme@f6b2cc014e9d46059938734205759dce files: - clickhouse.proto - # Imported by clickhouse.proto. Listed so it lands in the package descriptor: - # a proto reached only through importPaths is parsed but not embedded, and - # the sink then fails to read the package. Vendored under ./proto because - # buf.build/streamingfast/substreams-sink-sql is deprecated. - - sf/substreams/sink/sql/schema/v1/schema.proto importPaths: - ./proto excludePaths: From 1f6db1245c04b4ce6638e5b11c35288d775c95bf Mon Sep 17 00:00:00 2001 From: Ulysse Corbeil Date: Mon, 31 Aug 2026 17:22:51 -0400 Subject: [PATCH 3/3] bump pkg and annotate event for ch in the shared pkg --- tests_e2e/dummy/e2e-v0.3.0.spkg | Bin 349320 -> 0 bytes ...clickhouse-v0.1.0.spkg => e2e-v0.4.0.spkg} | Bin 355940 -> 354717 bytes tests_e2e/dummy/proto/clickhouse.proto | 29 -- tests_e2e/dummy/proto/contract.proto | 14 +- tests_e2e/dummy/src/lib.rs | 27 -- tests_e2e/dummy/src/pb/.last_generated_hash | 2 +- tests_e2e/dummy/src/pb/mod.rs | 10 - tests_e2e/dummy/src/pb/schema.rs | 283 ------------------ tests_e2e/dummy/src/pb/test.clickhouse.rs | 28 -- tests_e2e/dummy/src/pb/test.output.rs | 3 + tests_e2e/dummy/substreams.clickhouse.yaml | 44 --- tests_e2e/dummy/substreams.remote-feed.yaml | 6 +- .../dummy/substreams.substreams-feed.yaml | 6 +- tests_e2e/dummy/substreams.yaml | 8 +- 14 files changed, 33 insertions(+), 427 deletions(-) delete mode 100644 tests_e2e/dummy/e2e-v0.3.0.spkg rename tests_e2e/dummy/{e2e-clickhouse-v0.1.0.spkg => e2e-v0.4.0.spkg} (60%) delete mode 100644 tests_e2e/dummy/proto/clickhouse.proto delete mode 100644 tests_e2e/dummy/src/pb/schema.rs delete mode 100644 tests_e2e/dummy/src/pb/test.clickhouse.rs delete mode 100644 tests_e2e/dummy/substreams.clickhouse.yaml diff --git a/tests_e2e/dummy/e2e-v0.3.0.spkg b/tests_e2e/dummy/e2e-v0.3.0.spkg deleted file mode 100644 index 6b582625297496ffa4c0b9fbdeba4995e3983f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349320 zcmeFa3w&Kyeedb>mbPSBK6Vo4gLduk33YTe1OUv^Pg-c5>9j3Qa7?R6{Knqib*X`vN=KK4v zwf5deQevBue)_o=e-iur_g>Hc`mg_ctsQ-;6jj zHQL9vWO>?Mx8LQ)wpq8y(c^!TR#4ZOs2dwS|6TFStEHh za$}|*SHF>_Rr0*3duDdNF=x#cYye&MfR@S^M3H-GZ4_-FuDGg~&yTv7W{)@9OO4|T zTS~mm)sqK%Hbm>E;z2OjJ^fK%@<1)tel;o>Cd$_e2f~Kopl9&>ffZOANMTGEGR*x# z)Vs9Um~S_xmu6e@Z7`MFx>nuEq)@%1M(u9aBK1}{*D~2Cz`1^}xelyZyE(7%Y6ZIM z9x7L&uEpkbbM{W&7|QE0T;3HG8^>GA^GjQV=AOZGR?l(v=;-`X-4`owi*hr~<`$v- z2}-L>c}rAkFHcW5+ihEiu6h8=15vSgXLEk3y`{^rbM~rUNA$YxOVw_P3ie=4RP2tT z#?sQ_?BV65W1OXsdN}uDQ#e9A0Kq&z}t2*u8QPuWC%fZU_H@zMK{1Sjndj~BFORn78uLd7 zT8l@M5vlR^t~=&iC+0P}g~RX4=59E+=e^krZ?LfsSR)K@;Fjjx+;dcJQdQzY;&hHR_$6nVN4cO*QYDZ78eMwGh?l#5k0BBI}`Q(;&PMjjyMcFC(2K= zqDG*7gHJnyzU$5Q0<5(;O!c}oQr;I8G?$asanInH&%{-)O-FsHK?+O1m|)4V@-rD} zs;!eTvbMhxRHWyCNISPaGI4NxY+__;czo~3)SI-` z*xr80$#XhijEzrDxtH1UrBU^9UQX>B9UIy|`n-|;{GQ{_yW?@0RYKi6)BDPAN5{O9 zGEcN+VQaPx;|>1@h3J}7Zg_;q5$$*V>$m&XQ*Jsd%x?eb_(|=TqiCYJRBt|i85N>@ zFj;)D_@2S1o&lMr_FBC5we{>lweKjnc15(oz{Zi2p-+Sg661&yL|t_U)XGtRQqWZ% z{Bb7A?*ljG#VE(i^0lWPoX5_9wPkaxJmm~)xz5YKo{74`h{{ht!#0xXR(Ah1Roxi& z-0{5GCy{uCE65Mp)vuUzzt|H!{gkBJZZ6(AJ8f#W|LF<%l2a1!omW4RqfRGn8c>NndtFOkbA3>8*F$6VsPzp>=$AX$sleTxuRM-Lb3Q zqi1{Fqo5c`&h*wLduso4ChD z4}^`9V)e1ya~kUt$-UYuGSPa*IW#vHcGtfM!qC`FQ^=z!^m@tPiq?n8IQf@SHyu{X z`=zKmjGn$614*fskZSK*s6i=xVeWpJ_NUpIl$gOYT7(rcf7POkwz}#ai(VTE3Xh+z zqrWp%U~1!0Nxe%T?_D{G?WZ+~&cSd0gMU3TxV$sk_IQ$d&;Ie@=S)eg*GGniZ$up^ z3}O=$CZrLUk3~6FxV-DM5MWf|SpI3KN1bFB-*;p=7~#Ekv_DxL{rAKcZ+*snY#V-Mw@&=mP;^_F{o)^Z_OJGp;`wey>& z5))FYR&b2+M6$n~b#xlaMX>P(elf8y;1#jjHTY}UuxIXad*(E>_+-5thjp}k-KlAL zWkt_@Ulet*E%wbWqFDaRcfaTP&ucx2`^nGQ=}R7nch;X|ql-ILrdj+{cgZO!Iq6lS zvpaW?6_IbU;_dGsRb_wU2UE>G`=58yX-sO@DqAJ=FD4K>9d7!qOjIoA*RAV9w~aEr z<=nb;W&O&QbJ=wl=~q`dms{6}x}$7YkNX)#+5Eb4zNku3l*_Nnlyk+d-l#V!H?_}XqK*4z=bC%tk}?yni}Eu(^hW=stNaF?HOzHWw;J1D*!63F|Cyg;`hQ)2 zSB{tOa4?34d^@S}AU$|8rEX9x!!W1XP5B3wn)7Y^I+dMk)avY;(T;@TwNDkIO`Wf8 zXz~fpH;%{dQT>+daiKANN8@O4-373GVH6!{F33$fKYbEqSEQ7BQob_UxUhV9Zg!e+ z$HgLw73%%&#oqXN8SCvtvvEhdXpa@`)8kY@T5T=JnUyZO!8-4EFH(hvqh9>iZ3aIj z#~MCcscO|#>y)gjTcaLdORlx@P}JSTCU7kjtcBGpJwl0k$tnxxg#r^Na~fJ8kHQ5p$mwdR|x88+qgoDW5;#?rWotZ2F3Z58)Yul)3cJQZ&08C*?W2i$gEMWKhH zKFl@t5GZyt>$bHXIOWVRC9Rs9*!s|ln-_*zcrazGQT(gB-Wwi{iA4@Y(VesH*~7DQ zvr8wp^ceMCysF=clgAIY=5CG))>D-#FNpd&F|6nUfwx5$H7wK}ApZdj*G$?%T|e=D zhh1v^hMvL8SM}W4@=DZIo@VBBf`ilTy7uq$(OGM@U4Cw~d3kt*f)6Hs>*BPYT)Kn)rqCXQge57 zXzb>Zy1A^~Fgu#B{5GaQY9`{S$eG}>D%3q>q2J{>BEJ&p(*L^|GY^brLnPG2H(eyu zqML3rSPZkvTp&gmF7mm+?D0q`VrlOjOh_c(U#MLhZCo{#@&<-FGQ5ANJ~TNxK86Fn zFG|g>KeN5N># zjpezeDHkgh6NK6Lhc_#JTD~aiah%rlZj-`=x?{ehw0f78{q{EMku7^=0UYs@Jwvl3!& z7Gd=);(k`HMD0VF=WZfy}T5^*T}Gz-6Jb- zU4mklg>d02LUn^#IqLFNQUCPZY;%5zEDfI^yCQlG4P$2iT&K(xU(@8Tm$kxcGr9K?4a`&(8*>i!W^56Qz%~TwuvOk zo$h*B@5c3NIJ_x8CE8>)jw1nQ7w~t;>CxUI8P*j>woxSx_yQV{q8JxgwWH1XCTd}G ziik7wo@&e=amjI;)xe(YmQ4Lz6}-Wh8?jvu9S^2*C?whE?PcCGfNMwlJBG&%S^$w-!w(_YJP*btw!E2$QOC07H3qfgFXAy@U$= z!+k9aHXd!o2$ogRUGF~H3g`t{)6-KnXFM!gFZNe^OMiN>8>gpjva{2k;@j+wvl3*b zE1EP9ShiWNtV)jyCs+4a?&xvhLl4ZEm^D6?M<08`)zKcKgKa%u;Ca3MZ{{sK-(DuQ80X^h;gd0a>~!PQvp^v~ zwLSBsS#P!7QE!^=%iV+$MEPhqC~lUoGofUftn{+|qmv_3^+RKmqX$O%b16#!KE1vF zO8&mQ|BAZMvx+Ed-^)dPovwoNGoo`?2J;2Vd3u8ML2cIK4QFD<9A>jGg^hO$W!Q=o zA)tKGd<%97Q)w(7!OanSVjGs1$*vdAk6Sr^zJ)Pog%d$FE`4)LipuWBTNjY5wNx!c#XtgY%WlQ1K4O|7uB%{Z`>7 z3hC}HNGgvOVp25>JgP%0A>0EkjO_sjUU*zv%e~G`l`n&nNyFaSEbA8ln(-D=C z*M@7RFfC)ur^a2fN~Weu4-88Z?=CuHq3&wRyoO=if!%8hT=!7$i42ADY#5{Rkt_g=S1D|@64OqRuZIdaOV@F z*ey&wRH`TS%Qr?P99~D8Q0yj@=|1v8S43e3Ixy;*nzSmyZ9P;k-xBqE7cm>v4C?ll z&E^i=@x)Df5A$AEslLIt;^B73-Z<+__Qs)TgZC{>wU-wbTKM(Ow)&?SQ1CaoI`ux^ z$b^HRJU?6Ic{n7Um)%c3?VuOKIvodnXNq*UPob^6F&p)DPK?b|4l9P+aItk{d72F; zt@4Tb+34$#Rqv~$8%lVc?cCF8Xm6sA?20yp1{7>M(OASqdDNc=D5qZC;@-e&0=ckn zj<;|`dmq%}2QvEn`0K8GZC6w<7F3QR&xG)pbw&B%@w!ALGSRW7se_{jv#Eu$H-M_a#zw+_;*vR-kd`T;MH(yQ>FX!3mHuQ7~oYZf{v$SF& z6C?GTN11jP0-~I*bYNui#__%V-D^p$a{s2SQV|HTGYTz^(lyM`&c* zhtXolHs3c4&^kM$`WnK@xg`FT3aivktNov(YIZor= z4+En~z5S}Td(-INkpl?AjqKYuGCVoqq8D*#q8DkJyAOZ(8Uai+0+&wXT;Hn|<2C9G$ihEJ*tc#~ z<+%X8=+`r|IMG~GNE;U?NAlbShIT~dg;tvkiaV8{5kg4XxOwtz{2Mf-xb!?0;EK`; zdFAT;;Z0l`Z^Mxmxjaoj1hM1{(NlZo8kFP2xz5}u#d~|}J?@z+LJX;K^ys3x4GlSG zU|;;$3RZ54x&j^)&YA}&I65pAo@MG?dLSgpTQl2E@}Q7LS#0E<*>)Uit-WJo6a{6I zjIGzfAHe0@5jl7` zdEHmtrO*N=sf9UK~d4p2Orv%&y6S}DI6a~FTAh-}uKSoA9N8bR1( zL~_AGH@=2Pid!AfFowowC}9{DRlhYEMxT01s?vXda1q5QaZ%tap9m%1(G(-&@)R;Q zmpAMm8M|Tf#;Jq#5sMHq7{4YPd}pCz`6Wd5od?JHrJQ47bpRxx=K*uzSm`}aw{CN9 z&NzZNr(E7Ya>Edude6wjq&V4l-O*@NE)4D8KYmMsh)BJ9PuKsFi8eRM+)}m|8x69+ z?RAnQNA2h}jq+qEMqE8MFV!YgYtJZo77*y0^*3WhTRdeh9 zktsJ?TdTfuw>=xYYVg`E-!OcAqf{^ZVWpZc{~@P(y^TNBwhWu8JL41^OLFTQ9C@O} zyE!iHu}YSRxeQk3>+E@|o5{N}8_E%T8f;F1MjP*0<$nKUa{M3@xp`!NGVF8w_*OPp zc_%rgtGcgo8tk0M83Ho@;=LpLh7RqYoSL}xz@G8_Q#X%JjP4o5RT>Lq1Q?O_WPr#n zjGdLk!;->AofjE!`58SMOF1AD=%mMsqCd*w6uC&F#%(jTun9 zHEG^_63OmGF?v&0DLt5sC(lp;rK5Pbp6Iy*~Vkhvg6B3ic3|_Q4bp70rw#8 z=8~?LkNL4EOXg}n7W*9vZ7+7cdaVDRG5)=0tp9amHx;|SUh03WRQrE(Q90?`@BKE; zy)Mr=!m09SJOLvM)drH5IvsfRxHY+|V9>M2Now{Us8hSDdvmLlWr+MRlG}DQfNt2 zJVi_Bc2o&%5SQS(0RGPQ=aP)U+Wmy5I`gE7Vs~-+)FlwQYZ11tTJ6p%1N(jXdR(*e z=Nz{PkJvwpDQemV|KK?zjK3s zKI|VWx1Xz7NO(<`m95cT?+-8H!n>n$L%T-^Wa?CF(t$FnyX)up0(<@YPnTkM>K%QjEa)Dz>NvVDz15}g=LtcK5Lqm35GmX;jnt{>ojlzDDu zNUzdrvu;&Au8#*JH-gZ*Dy{qUOp zua`)=>kZXW8?S+}u6T59KhowbRH3-%iOC_QCf+?JNg5tsJw@K%cwE{ z1)?oFC)9X4f1Z|l`S#ZqSH8Y3_4@wRub-ZJ{Q$2w;dAw)JTUa!{-5xtwEYnG7Oco2 zmuAP?b1;b-CSSI90bT?a5*8-C8_p<7)4yp5Pv%YHQK{B_%4Va?mnP8Q)PQl5$)jRY`Z$g9MwX)M`qeN91uZn7uSR>g2}Z9 zL1!skgh4PzMfs9(M9Dz@S>uSb4jSZ<*7UNZn6Yau$u98U;>}`}ln&DF$r4LYZ41Q9 zsG45ecv53c7Lb~1SpFv=#u1~Vt$ErG?+ov=OKr`F(4@$u1@#_poU9&hic&ygt4b0$ zPibgTgE)?ZR{w&NC8(RxL7deYUPQFZYP4H3OGF`?fr6^-h32#XR_?xJX*Q;jX(HhMYp_?2Xnb=Vs9UI<% zNG8{gDlJqwavxQ_2~(XM-(lUZu2&u3S3NLNAHI=hhMY-j9qt>Q98+glB~f*#dT^*d zIXZlZBL&rihw2CMcvUsCy`vKxGayrF?*RSNXB8uSY_d9WBZg4tM58LP&5^oBpPpuQ z&j_QGKu}k7eJhRD@&0N;$**CM#{l>5h^lt65Wm0&ZgEC*>ki-O1SYOxsYCm#dxs8? zS3XhQdMd22FvExHBL_5UP%&|6&&1^DJ8)Ldkxt><~VVE6;B^e_Eir}j4%-F z(jn`bHb58enZTYyxV3vd>gBL3z%W*L)6`C7#<(fY(*<0VgKk2@)2k}<7(!X(TS05EEryk zu^ZH;(0t1fokA#dEQ(}YERlYvNEaltp4HKP)uFveF-Go7Ljl19qDK>lhHvyZABYD3 z?`(Bw8QXAicl8b!L2LdOyaa=>SGPXL9#wB9p{ubC=C!Axoe4j0AtQ8Y;%Whee49NA zJ3C47iN^fx?C2Ygq5qs{EbXY?)SQ{A?rk>aVdwBk<1}sCgzyaS>uWpa#D11C$3Aa! z@EE2b)`7K$Rc47x@Ov(8Q(1Q)*-FzE8^D~S>BrUS1|y;g&b_tgq_D!lNUL0$J1I8P zs7gs(A152x7MU%bK-p0J#aqg|_w)o@R z+t=+4$GP>>o$a$xN>X$ilyp_*5V!2Bg;wwt{!f+mQVy53kyJ?LiN_OJ8b9hk@i4ScpYiE;Img!B?#ft_Kqt$Y-@KqHyaUIRan>ssuvX zO_5bNBLB3mbHiD8j>un^J|cfzmZ+~gJzwNi&xHYEHLknpk^pf;{<_Prh%VQe`$9Q? zefHUf%DL6p8iH0O+*&P}dvt6k@C%&4zka=e`s6Jw*b)X zNOohiJIV_ZaCT)Un`B{*9N%NDIpnAfo*lA0-_fA<(Q=bk!H?=PQ|Ls$X@ zom2Tayjnl_a2k-F8(d_*6Qd}@@ z0yf0%V1ES#$0;ZtOigmRe;R)LH;&IZ!08Ld@t{n5X8iP&~zb2s9s4}W@$>$xY zMMv7U!Qftp?HF#1AVWfopd1J~2!bGC@B`f+%%0=dJO{Q8#s%{fJe2K=-tQ=Yjdcjp zdS|9O5|nRK%~{|kQ%3DtI!LO zl<8EUmRw_3>0oi+-Nn|gX#|^Ga`n^2g zmYZjJPUH06vv_Ppy1ex)V_Gaii7tOBdsg%!>#`)EQdy`TOzq%6u8t4+E&|bD$hGFo z4vQ(V1GAB%N07x5ab>0n_~oTG_LaDdMl5dX*g%P){nC~&v@VAB%M8t-4Po`m*@`dN zMZsT=3wBd*DtoRkhyM8VtQf{}nwFrwgXalsx6HsXR@kkW_? z_E4}97wo0rOm=<5EnFgLZd#eio>zHqrUQXq&IJawJbzf~1-J;?(kG=F24!nF(rnGo zL0wqIi}AKT%x;`pMmuV=t+7p|do=ID62VMuRp+hjA_s6#Kp=>dRcD-2xCOzxtW}uc zeDg%;I!1jj)0*k8L{}j~Gv&hV>)x2jR4zfEavBm_$mm>G>!r0H>PrxcW8dE8E`-V0 zT`_kc2)Umn4^+iHe`_f{wspV2lw#ps;Vi_R% zxC1wxe+T!t<6NT$N@m~?bM&~)dZgf7_QKlvRa2vCGp$x_M^*m}9BwS~v$-@q;G4jG@GvKLpbs1glrn!zcBGU#V4Eh}YqqaHgX zGt4Z#wc_3+E?PvTTyJ8Bt&6yR)~24Lx98K_FIsQBdVY3mWiPfaXN+BcV(ac67q1j* zue&jL`#Zkg#kmq1@;1an$uX4Y_YgmF-7%EsZ?wI@FmvkfvMc<%JVRMxC@-*~7;t&z z_{yOuqy6*-f*QRKcHpe{o#sQ5vVVN`sJm4F4l#Ffpt=`&hA@z3@tE_Bc_|*VWW>_O zfUrDcUb^HmKjs3%yo)hEz_w&U)VnLYt@66eX)PCMg+9%7WWp1W1Ri5oh(bI=u-M4d zSX6a8J}z^=Js=f|Vsa8R@0y-l)()2k!5Z-bh9t1HR->R1#)KhxaTl>vw>AZ4cGu-j zlgwm`%}M8pfTJ1W?82&$#l!cI#t>yYH;jqwIgjLD)Z_JrLdvGc<7!g?3! z?}gj1^u3qp?^ozgT4yGUeE5~@&hUyxe#I-byrPj`xhM>?L?gd)x;I7KoGERxK+@4@gz#;5N40N8h^VpJTdD_Xb&Fi_K{Do|kTU*QKw`wUOq($r34X&{2F6$BXLN@;a9r=5zy+plZ*B~>V;WaEb$ovGgD zh3#!p?-hz>F5c5>&BgXn_{M{BU>pkmqxH1byy;vWIymYrM!tK2 zxoc;WtGeobnfBs!>&4Q%I|Ivc%ZMHW$aP~LWZmx0oOgi-*RyVK(7MU8VcpgnSgm|l zwBBJ|#KQ>-_unl7*F*Sk$n=y0ia_8SGMg#^1c7hJTyPN@Nfu+E_?FDNKSrTCuS22o zPN}Mnv9T~cC{pMI`L|@c&aq~)(xmeD3GrfAfCilxUb2Mug(c)ARqs>AiIxzM5!{zS zLvkP*QvPj8OOyq2+Z4N%xx6g{1NCL?ZS}GM($d>9Teo=-MJWIFq@}DuZii>HSz3B~ z(vqh0_6)q(HH?k}=$Uagi;|OnAZdx0Kv(**Ia+!kgN$-jF&zQVyF7qacw3kNI!gW> zNlOlLJU^Sw)6zRK2rAbSdIKPm%7e7@j?9%iqCTNGx2{}#S0?+OOwPT|39IiSRl?jS zytXBIcP8H(ofj2VUW)>JL9IuTh`Hr9YApu`akkh?*67`&sU{C-@7w zk4tE!9!z&Y4dCf}0R@sM(AvX6LQs~r9?nz(Nub>T#w3Ay zlYej05>HvRxbAa zpu7NHdRfF_A<;ypT>QOE_TOf5mA7W9b~BkIX$WCfml{W_NHy#W5zexJVO6;^bBzVh*%>X9`8~22 z{bHFpmj6IPP_oDbuSv0Hbn!MOD6_kG5K}AKP5pK@UqHsvTRPDl9j5c@v&JvZwefCu3lKYwH8W2f}`+&c^9WtWv52TyX}JB zJeUrWm_dM#KShHV1quRuF0PpSGdspg}(4VM5> zg4;|Hx=ndabGH$JIf?5WN1coo$Tg^N*{rUL{i94z5Gzu9|0r{Q*eVeN_@m4=*#lXO ztm2mxK>2g{E7t1oXk7{h=j1ADB-IXEJ5zKFnLZs`ygEkDM6DMdj z+wxozGHD&1=Sq$$s!(&FI??n2a!=Sa$T&Y5_&6ZFe>8K^HHH~L#`)3AQ=e{poV#ty z#gAvQ|IzbtU`l^H6P;zd0?&bC?`5PGAKwrYTE8(~ zT5a_Ikl}o8KpP$+9$au?{6GrW7lo8p1*EtK7gb*Hgg8mY6NuHqu(ErECU;H-`_Bxd z6SKHiWMMpEtzc=VCWPaN(WNFN9q^0k3BlQTz=SSAd1jT741b-;Z>Vi%5O$gztC54{ zZak(qsSqsguQTiW0v5W(WI7+P1?+*Cc}{N1{FlWckXd|@aF zi|yUjz2nN>P(*&9dW&-`d4j>>)92{4gUOikc~9n+N>Jk%mJ28w>EG3y#!-)VAojUU z!x!e47ZluJtB^tEJj#c09GIRG282H@@@!V7!k2@Ogc;Zr&T&o=K+yQ*%w8>*F>Tda9!z%pFJu`T@SMgR; zyh3+*t@T$kCC?~yCpr(l2F)OvVGDLiy5P-~Yn*p3O}DmkqGW3`X4FB(1kzO_VC8EW zo!<~6=7BK&^-R9c;ZzR{P8FcW*E!eY@gR2fEg_jZ;YD+ZaKLY8uCKiK6f^hpC9`Dj z`0gsV*(})R3-MJLPU><|(`ks6%~d(=imSRZ7)0ED2vohj}Ph0*H2ohhB?=_@Dt`gZ1mr$^6|cEYCrP9}S9 zs!o%Ohild`3sbq{o#Ph=))*__tCSH%!f73rBFj9dI69EiLV;L< z?_|!}5?zDNlrI;*pIP^%Y^HKqhxP9?O|MNf;=Y_8Kn&{pnXdDhS)Mkl&7H)fqx z3e4*tWJ*0o6@W&3|0v>{fcWe|IS;(KGF-h%4zF0^NF1c+ zDMz6+3FBk&NUZ17&?M!4EF8)%)>xrE;LY*aiBa>w??n~RD*bvkH5v9A@Xu&6*9@Ni zWbiT3b80d&vtN?U^Ho?s8FmA((|*)Znu>$NSK64ADi`zj(NH~^LF)Q%Qn+*e70dFZ}W^RK3aTR5T~il zOlTZLZcO&748PZi0CspxV_gEDO(1oDbN=Ykv9)m>_7f3wif>Bjg&=zVZY|v}u7p|k2>YFNbADU}+QT+{cYX@;l)aMBN@w#k(La2SzxHp^M7*lee!On*w!tJBRz1hvqtELAVsPX!AjSU7TH8xP=_30X% z0m%Qh=5e`4N58>m)y@_VYj?0dv^3{KR9BpCq+)7*8)@kc>6Q?Cz^86$BQ3o_Ejg)z zU+c};>^owqB5wZXY^m2H(z$-_(}vz|L*@ZK_+bIz~DZOk=Ihc$@9h_!@(FgT;H& z6lmB1H>$BG8Cl3ji)o$N*mOXV%!9nSB;JKT#&ilmJkMFavg2REz~7bi0UKU|ns;Tr zw;vE$^)7TBUs#65yOWkE3*=NRLJYL@?ksV1*RYo5-Pw&U+N4YP)<>i%1Hh56vkM z8JurC)k@5e_Q_!m!>PErn7q|=%4SkGSd?7YE@j@71f6jv1ztC!`?J9Ez#43KlCwAt zD^g1z&i3$`bz2(g1`lWZHwVxLe~#1l^3w70@7L6RU-22ZRk7 z_o7XK>593h-8mKyvYCcAWbf!}6ewyqpRnhz7`Or#1FjrGeVu+GFcjO$JF3H1Ub)kP zj>Hp{BO4JJR+@^m@<5W`l!3 z%_AnL=F=`Rq@e{`;qns5Et{-Te$dk7WaV+jEA z=v; z$q=4vD(%dKTRP>PBRQ7$VNRVzazu>5GWMG89WmAkQCNNo<9A%iW~kk)IoT`FVaunp z3r^t`1M#T~^2~`L>0}^zr`#TyWIkC_yf6;O_&_sypBzz=x#qWIYt0RlArT|43&edQ zS$mlcpGf#X7l`{r_QHTTMRh(U#K{!TE2snH0wzH0tWRZof^?HP@u}>Vz(Pn40*t9h z(UredOaEK9HH88Ucv;|UY2wFrfI2=jmzQws)y?zmsNhl!{N&hElI^>{m z1W#8oEgpd_o8!S%5&?n@*Pv@I{`7~|+BunREUtnVc5^LJua2EK(&nd*%qRtgpJe2R zQM5Ix?NC8WJd+91#tI;}vOD=Tbdf0}KyYmSgyLp#ROnP>mM-wjZ`4 z9f!lIh^)%n}pudic7nytgzdio#*UfpI&3WGCkEIdzYqcV~>G)%a*6le$71vdOZ}N*=hqL<_M$PH0e)H4=FTw5yRAY4}qCVLe&A zPI?q!98^Zwpy!`B)chiPDnu$VJ^GrNYaHd!K{7l}D9k}8M;N_d#*l7GBc=h~*7=E= z+hWEU!8rdmQCnrw|82HEusg+a|29i7xrSe|P%eHYyY4^Xm)zXpmkc6I5nd@VU&-Qz zl!z*rf$~V;w1DM2kkih9==zbsvjM64NH9H3ji3=}L9@@Uc$Wq};e<|RD)(ZI6- z?XBn8fVA|ec=i=cqF63|ExYcexeOJrH9TJ@yg=ul=8>%FCx^G2?@C?X#;taMCubN>!cHS z8~R|9!Ngdh^&e$@NC=Rr{wRBaOX2~vsSLQJu%g-CKhZ?zY@SRT=u(b<1{z9@(3zZT zJHPClD0Z`ht64+pCp_@_Ucc9jlx?-`jent7R_FLNsf^!cLxyvdoFwB zKPPvGMnKg|az1wlkO90T=W}-e8Nf?&WJz8PtK=%Lm*>{K8diBpnpJxHA;h5^=k!cd z2FuHHT~5(1*`D}KO+bn^U^x%uI4ThH`OTa+e*vlbn>p{F0%Rn=ne+ask`ezal9nh7 z^Kf9$H@k`v72lBS*%awuSvQH$xpnUW$+Zq7bBPLH9CIdlC&Fc~y(Q;U%(@NX z_l3y;;$aR52Lj>u1%v}q^}c{`KqhxzKzO$y{C>6cChO*4Ytn=r@ zWsEu2VGaN|fjKN-39CIs_(E_GVHD_s)|Fx{b{e@erlv@ew=XqZCR;EfyzwVZg@G}v z`;%E|@$b)ZYRtc7R`=(;524!@|A7QQEDMlJ&fq02J&?4dDL;_oswCHv7XN`9`CJZ^ z{CH>55-)*VMtHX|=y&FP(j_1*y)$>NqfbC9e2LTMx{X0UsFp?y(X z@y~MWKAq1Dj#Z!e&;LVU-&{8BXz=svt0OY8y?76oobG}`7vr`i=o}qPXIinTq+)u9 zTa|Q5Onqf0xHhCGVzACGEYG3H*(E{l5{H0txN)4*p@!DZ>A*R$GN+?i-R@BnHk;BQ zChgo_s%+4IPhz4m9d~nq{3KldVD3TAR+%-}X-i_C%2BUOD!uT^v{Q=ElVL2F!VNsi zGSe*&mSV@HQOB02%lr<5Oq}fGW9Tq<$2Xb1L&&>koat&T#nw|JFrT&jZiGgr7h5=( z_rG=JT1-+Mx1zX-uJG#um6HV?Zn5Cpr40TdiDm=ax zuIVu9SZJ}d)~Pu}+BhHmiT%jg;4UDKU9EwoS|@7Y(5|H(3BATiAVw>l89Z7u)@u3~ zM>RpH=t)t)_U?#_x#S0T?xjGt=EMw%*;4*O(4rwX%u#$)*b;;Sy<2@zw`;W)k3y9% zutz&Y#2SWXG*txYc19s(xjyX&Xh%F8v6g>c^cmSh9n|Z2~qX=4|@zEHOJ3 zoj$atp5!gJyAfDOnNUj@fjDP&Vm{3|Hy2^mok!a<1ETzTMo%b}^3H89%Itc$0Px`}20&Y$_d9PBag5 zBY(5HRlc1&8Lv__w)rEEi*oSKb1uGWryULL1b;CKtH)X=4DHI3RBWu}_eGOUe5g$Z zHe=MX82MO)5}%10il^_VG++lfWtjTRz8JHCQk*--8lsJ)0UMTEUb*y_mn?BJVHfS? z!#h1URJyNYIKys71P<30hH&V&$cPfzaqzP>?f7i-u7^ z5U9UQI{kTDEf20JF@_MlmL$?dNHSoqfkwhX{wO`cn2hILl$;Q)_?BvWArer=h6s%z z(WGL7a@OmM$$Ck%|6;D}Of}xJUSE{$?h4B}_+_mZpa0f+q1pppUwKnbThAwe`S82? zcWb0uCp~quJhlRX*x8WnCJK$h5q1H%yA#OCG^vaUian!&>m$ruBqi+QHBs(bGWBs8 zS;26mR`?78DIh3H+a;`5qb=ae(C$(M>@E#kIzwXeEn_-}lk_y@j=FBLAvur8gOB+b zI}eJdYU$35C!)JF*(vA{?pSzyy7O0l_;q8EzZ|RrmW@UJa<1RGAOKn9FXy=2!579V z_;POh(>*8~>=CWGt~H5N7HEV+#1`l9j8Ty#MMhAfbvu}ANV(6CB)!T&dnDKI4#d)s zwRF{BC`_dJk=!+VEia3=3a>tryLQ;WR&vX?G>X4)l;^-_RX&>2#Y8T|p(&dKHV$ea zG!>(i@MNIUarwnn{yVQjMdQoOQlq6liB1W9Id#zpRQk~gHaWs@y6K|Q$nV*C)altH zz6o}%g>X_~X3L9gp{F^yfoemC&^TUebtQdPx}-~HhrAZKE{rbt!X~ojgxC~g(($;N zp!^!an!nninx>@^g6<{4Q%XHrUa(8M9D$o~ZA?#d$W98Rj!gL6QKPYT9Mpk@GIP5Y zgnePyAdwkC6=b|u4j5gWjHU~GEN8>Q_w%TTc0t*0*%Ig%tiSe?DRLg;wldfFt|gC| znBkucH7$TbmyTFuN`EUM7MarD%Jm06BvblZInMw2!jR~CM<{^E`~i(%SzaS8|D(G;T8NJGp$fovE+~ zB-ZEheYI=i-e^Xu3|!3G6HR$D4GYa~nGG7dIp?hrnCEwLz3bx#V!hwZk;uFcXTM4~ zxLhf^yMl=9A7ZJJYm>)0GXtLElwi-}oUj73iXvD$^z_}FPk`0~wfwytIkurE3ILx~ zdun<@aBYrxL$(LpCzJO}i?v)g7#25q;Er||d?Y|Q*(^cl;k%1zg)BsxinP|J=6*)=H6tWRqLz8Qqwyu#*dw6bz6DGkM4 zQLTL%3zo1gvdV<|r$kXuDD$6!3ox=wsDH{`HH6=tV{F5cD_O;(0^H6{MTjUmsjR%^DimEPgSKFXL3ba9>dIF`6AiWz$k1s=!E zVzqv7n5Z}|5BWY=3RHS3B|Tx-fLeSUvbk*Y`ggjQX5}!dTNR-Yei}zy$}Z-%zY9&t zXMTwB2oc+6LBoA?iH&%>IAG9Qd{1`T%iW6x9qCv;iHsEYiRmT{R%Q^x)>n1ruyKM} zmdW{A4aOjXPmX48ZMcKXCL32_8Qf&%x3db>{5jqZH>cek9~4h=f6*jma<( zYcgR0-p6sy7;c?}b+$b7ns>dX$-v!fBPUNRcAPlJM@5Sg=P^ktv+b36?|y~IAjwze zW3@(^ZLiG7YE8*#Fji}n==Lg6sN+p&A3)Fayh)i~uSyzLz~xo>e&=}RdRZENReozw zio0m|Rrwu(uPG7i)k(uTC<5jChIP#T)k(v4t|S?;62V@bjJTVIU!7;f+lhokH1wK$ zwy$;pz6*C4bgi%6yXh!U@|t|lde^H3O41-)+CT+LA_66^&1Y+_q5>ta&2tl$W8g|f zd%foJU1!o#7I3igRpJxK9+#Mf(v^_ev$=`dJT(#=tgqOX`=Ymu*CnYO;-sif63b0^ ztI8+mV%W{***zq81_WJzAS9wtP zbG=Cj{8eLvoIL@0TIKoGk$G8r!l5Zl+LUbHdGi=L6V{pJ!P)HQ!`Mx)ce=M%1o32x zxv)9H7G|?~r-E=u`gOcxdYH?blDX(`%$xE)U=d||n9G~;++XMB(!*Tdl)u6SETXLL z&3dcma<3x>PQUV+|!)s_=(l(7n{*N1LdK9@@F1#>)%^$g?wWEeUMbbr3=LSRvLJ;S&^&((%*RDBHN zK@G#Qu%j%eegG{CJ8|<=Cr-@H#7tVU$(boShbS8AaNwAhHXQO@leJG> z68Lrd=OQWjAk)kUna2_Y%*ijB8a9i0m;0<9o6?)wKFKs?mza-`={_N{Q0k*Xqlv3I+BHxtT|{dvvfnW^d&b&m)V8@_c2T3B>zRr_bJ(_v!Ny-@_6}CZJomjZFRn zn*3+ny z?r9T&Y1QrkRAP6WCK*`QD_LS01pI!2fHDa9{bUQ5LBQ`PTX+))_=phTS>h%GjU^7D z-iO3D6K0hXW{)*Al zW`lND<|RvIEMbs@V6gKt!Ob7{QY1cl;zK<+n^GUw(MAv#sExb$qYO0{`w5r+x^2Fh zk$)`jZ^DbRn;H4X^8N-TKt}$tJU1x)W=7g6RP(7k3573+L+vh*B_I2lU7zsJ9JbxH z@Tt7NYa!BI3qbDd9S|z@r}EsjVAh1x`u`(Qzvb9TgOoK;cUkd8;?LyQy}jV>vXVab znS7T!yVzq9r7vmO{<^@r0hjZD&#L@cL9#4%Z8`~yjTsJBTpe6CDwR5_?NsUz$972v zFnsNH z;mpr&MV)ba>&yxE-VC2Hn#F0c!<>sVO-$!_qdP|@<2){H#ngSf*T^|j8If0$T~<7v z1h1yVuGNl6d^IkdwjQ8`6hCr-ZpFMy@mS&opdb@5;u`k#_Z3$zeWf zX>VQ>b>tW)!}88icR3Vj2*WdnaQpfcLS+;yImL=5{UA{7yjt=^7K0h)Qqbag%U@@1 z4?hpuw(G}PH8NeyMQe$q1eLEDR0N$^3jeS=D-V0f{;BSXj{`U|!DMrIa_WIg-dQ?f z;dETww%akUSR<{z|5UScX^3u2N$ofk<`g_An|=PJV3z>055AP|cN#JvJmE`upIiut zUGk+o-e2*Po~&}1AJs15TZ-Bx)CJsE`P)o&uM4Uo#(argg88a!8!N0>t63Zq0N13^@R%JcnEvRzWk1b6m{H+33-_m~j(ZHGAc65!R9|0l8T!@dgEar4N}*uWR^d?#mU)qA5} zUMEkSVqV0nAJ3`}TO!7t9MX>^xD(+#77Y6yi;6v#_h)4R!QEr|>Ml!5?ZFxI&3tx~ zvHKo*TfUk1X{kW8lLkSnff5Zp5)I$X_qh|@Kr28i%Uf60Ag)s}I=Af5Z{`!Q<84-9 zx?eA_nC~dsE@0&WFRZ+-DD@UJJK-D_6qK=G~X{Q-C&ATCYuBZ+lzjkWQ?;Tl#%u!1mt|`av5yElC_)lB8E4pdOj<3WqBEfujJa4UGgHfv{rg7#p7);r2L}NrE`FnqJD%Z7S+O+;PZ# z-X>@=%#kyioMmg=rHmEx7?|THh-uFy&GCh}*YN#?8S2UT^qsgdZ2^BC=BiV43)nJ$4n30S+v28oWlL>lQBHrN&G2_29WDEcC9!_i57F9~sK`G}39L~6(a zKD^lCdwwqSlk}No*c1JVJiS|lvB#riUQd8Aje_gt+)#u%hwivG38r|@EP23x{6Kf- zk|lM5fhaGVt}S2Ow6nApu|0eXN+4)gg|@!%rReD(bYGKbj(QZku(GRxse=yUjUR~YQC}HjbuR3{lgHfTgMMZ=2h*Un=%!rI>4k-D11>{mN;Skm9LIMu z%QX{Aju6JzPA9bCv}P|$+2w3HNfA=PL$1GWQNf|DfVfFFanD4G;qsoBvm?%RJfSbL z!9;_TBRG}9>1VM?cxzy@VO-8|OOi2QU<@UE?n*;a2JFAF$vks-yuSCBj4S&G`k3n2 z4Zl>~s)1o0DuB98@w1L|_{Q$(h=vTcHM_o~CN8ad$tA23^on`Gczmvr*&q&+BpbQx z;ncD?bAmO5M&DELr``Zr@%I$`T}pt^=z9wO{2U-E@p}r_48xyTe`Vo3T*!W?kTd=S zOy!3Q{vt0xYwf+{97Y$B;9?KBE5DH6P}vasWceVrn58mTtN_IL-h#i|Ru7~vf1r@> zir$#>ZMX;PE5DI51;;N(2cCUWz7s<}BWpEYjVvHPK6UKS%8eyT8SA(~8B9ZS&iXaC zvKL(FAa#>d9CQhZHcVMq0C?lH@ilk_7As-x3trDH#W(i zS?o|0i#UZ7;VY8z3c9M=*m#C1jE&{r$6pL0{hpIGsio63Y9Ejm6xLGa)xRzHyCAie z6aaQN=oxGeeDYAQne`tLd-;N6FH{FSukuN^(DE;{$NYNBDaac5;hVt{E9#uYCd@3= z+3z3rr7OrxoJT2kKCNOEZfD68#1Zob)0Y`VXQ6fZYV_6Z5CYL>7^H34{*=~XX)J6; zEuo_ue&{mB#^NID$eR0WMolS-&wb3TyzB5VXB$}kppUVT3i^gD30$o%aSu+GWa(L; z!g&&W#)m_i^~i`<^DvY>f889^8>Oy()Q3Pt5VwViJ6mq`-HsO5XDLjD1JlZKC68NX zI%!b;Yp7laXOR(f9|`&ppe=I0^M3-uZ$6Un8~H0fBZ|0B?$BNl5a2bHR~KyS-`+N) zdx{7l86RU;hUbJG4RT9k!_)d$R8l-u17x>Zil$`>1=?bX*jp|O%wb*io_Z}Gv=@I^ zYNFzi63(I%=oZ_DiJ;$Z<<(QK)Mz!KAirQiR{FJyQ1Yk7#_I=$_G@Q#TD4L`^m$d~#YwZEKq9=^(sqXc z6zdkdn#%C96_q%Lu6e8^eR)+$S7^144&WX>HZUqWFa{`R4YY|M{Y=3JJ^>-@&lLQZ ztpFkH&lI?a!52o5ex`8Y)n1TtBj#rd*}sYfsdmL@3niB++ROculB}OAkSThF2|>FN z6S!PC#|KJd9m1h52vm0+=I07N6;w^B?a!;JZN4c7m$}L05G#^e4KJu-7VmD#{Cv7G z&GHNB#@M02Yc%H1qoo?tZvKKAb10EJ>+iMK-xAqg2VsC$R$c|!xdcLU`?+1ivUou? z*LcC~+)1(p_cvaEko1|-AwS0ZD0XT+{Z^N`jF^|NR#b|o-?oJ)(GvZGbJEC3A7;1n zFs?Ua=MwX}jnB7DJVP80BJ&vE-cz7sYBXALW}vc1TJYD6|#F3h+@LqidAz zS+c?0B8gpyDRqp;vds(;IyK4<+*Wo)r)^r6P9GrDMTB?U(QLYVD0Sz@F&&15BK(0b z|ItB^5pxgBgBYDby7==B+}o^Abh{BRAI1q~5@B(Mb6TeN5$p+mK9>TCH&Izn{zQ>o zi^gd+=7ncLDX5yeq6y$_-!kJz^5ByZso`iivQyt+jK85M+C%lT&X})A&5Z{hYd)|T z%h!u4ArGG$9y(KNrZ4EQn@eg5r!IYmM$XgAi|)|02^sSJq&;^wD59U8_fDAb@n8D@ zslF8E$x>Jxi!b4^#p`ez;_!hOo$t|T4!UK9+^1%YJUKGJr03>#YNs$uDQ5Z!(Lf`| zXF070S%mAkoKR(p4>LWz7;TTbJ*;y8d`nIimJr^#)y)DVca@{1-r?D~8IPg-uIwsd zC;Oo^R`3GWepv94FF>&N!vc{nhjF>dek80t*C+-(2k6UjHgE0+q0Xr;-Ak+k0Vau^R65c; zyv((tjxQ<5j;@%f6|On)OZl-8i6rZrb;>P%b{7ezeY{Z0aQ{hy17*1Xq|hJqMrFAF zq~H%-FbkW;C4oc!;9hjJ2cHWUQ#T%Th#$gBYkNRV_vta+XEsZ#k~7glfkHWFD-6y zUmnu~DV{G&*KlxBLk@(OrE93u-zf5#hR_EEfRiSrLjFcEW_8N&e?^f+R#c`p3xNP_ z_XMIZ_PwI$KkUg%+I~gxJeP?G2x4DRykcAQ3F8c~k>YEM**AmA59rEwHeA{-gb0<% zCwVX1UUw6$q#kqGpp9CZwkH)`U8WdE$f>}(=Y*l@a?A6qmaUAFPmX51A4|#_4H+-B z`oS|PKCC30aLmL8lPsD9!)uErchh}u-hI37w~G05JVJTEy;8-z`v|BN0HMEC6vS6t5=;7!H+ z*>NA_B>*Q2rq64?iTazOMO-V48Fa%-hD8`9?-%Yy~wpvh9G}i;r(j!VsRNgAd$Y9zp%EkI!R`fnGDVdaYquZ2upi^(SKXd z9$2N#e&y5%-P~U!((A;I&b+)M!4XGZfZTbG-mJb-`HrH$x(txE-cj@)8V97McNBL9 zNvXph52+;!(Di0H{Q>y%09_oQ10~?|p`s7a0fNtmiatOG2tFSw5}?~F4h~}|{!TIb zM{wb5afCYYs%)<01NI@@asu{@XWSg`KGqaOYEFXZcM?j)C&DtlPgM0+`o0IZgxR3$jHW>6o1o0r};?oQhl*=>T}DAle<3DgB*}0 zh$?}VGqQKogLbq9nQu5R}*D{%e3 zWW(_QOuVmn))jt#@c?|kuSlL)eol^P;&mm z#k0I70BtGb=EFsQ;p>YUdf7k9Y(k9)H^ z=k=#*Nr8PpgMMa#eHvsie_Hf`eLx2Dr$ryw2V^jRTJ(W^olpCC@yQA7_gY~8<3%6X z2UK4^unz?Jf4oRw|2z^5dJ+AfEN0i&`l{hH>FwqfHCM@@Szp)n0o)}0zzk>EBdRI)?4`W^MU9Aaq}0mKQp4IK?d{rK=gptfhT%E z2J`tq^g0dsg(r#V*BjA)ArL*F`tn2%1pR$ML@)a5D;K|5T=zpye>z0?#iGBxtIz1~ zZ-lSgU=o1kJW#b#Cl5sKU2#fxLIC+1?v%l+h?YUJqP)pT!U;KXN8N!u31bNiIdr3- znVOzS4`AhQiaz}ikm3AIvH!gA76krH(SK#A&sOs*8r^@EK?=-`_(fb*Urbz87QRYE z(9hUYWn#}RUcw`Xks9Q}DUM#JPhOvvqsk5>cwLQYf}^h_I1-V4rRe=syah*JkpZRc z0f>S1l_Gws3t@15Ft|s>;5OQYTl0NZCrE5#fAJ8Wr_h{g8Ks22Op_>G>8*RTS z^nY6Sjr7UU061Rx!|eYUS(+|AvTpYdxXrLKMRG+#B$|}&&s9F8&a$A_u9*-CCRyQc zCMzt${$|l9MDmsu{$}y%?n}FX7{uQ!UO#3wr9gZAj02tkq%{45R>|zGK2-+%xd@5v zEl>j2{)Zq!073UZ1Q7yg81o{e&w>Nr6+Wdm0dkAb&rpQWAcOgC5FvmJ=DR^}0%S1X z4I)Gbz<=;0iI6@MAwLKr1W5dy?!|3MHT8_LChEUtTf$t6VUEcZVayWAnb4JJZ< zEPVY?Od6OE^@>S9wt`7JSMrn2s-3*~=^_i>I6&&1Dzac=$7U3~)=Zq$`f=FQfS~Ee zfo%h_us;rL8xXerW3g><@eL;FURDa57#J^b>F1l62)vhypoD$%vXXb202+$C(*zLo zzO3Xo@dguJuM|H2S4WgkGvGCq2OvtH+XzP|)L}kmxubC=kh1QsB6iF^S>td#tup|E z1A2`J$e9K}NKRT@83AGZ(9$bQUQGgIvac-p2nZmPePzktJP!yhy|Prh+S8H*!fQ15 z8*M*Q7U=rQ?lboub?9yzjE%mg)Z=ca17uLIDP7^x_yMgWFSRxp8@*ej5E})=LtgsX zY2q{pIow_H<|iP7xx3^waXsX6}#4-c1lt`iS32x?%UFMJ@A8{oTY^V9E+zRI|h6^89b75mD9yjM5xlW8j zW$?#MNi30JAq9B;wAqXvMCybW`8HJDL}^dJAq9BGPd6dY)ZGr{O*&)ruvOd{cd1Wfa=S$ zDIn(kyMaw@EEnHjTK6A3o6?;v?=N+oWx{2nv8fLWUtiR=0>*o(ZN;(kQN@4JoqUql zle(*1A5ZqC@_A$bYp6Z*S0Pv>T<<(?v z?v8xn$j)xs&FOAU+HuR`g&!~ZgZCRvo_(8s+x&Z7ipCp;K(PY|R z2AKw^zPwBWf{gxBGVRqlyx`?>@o!4&zFo>x{u`kc_IA4seo=w^8A<6de7M;=yK!Dy zvO9O2g_LKqKU+un0u3q3lP-d&Lr^+X!hth*gssQL&t zs_k$$1^?0x;KPl@fy0d#@JxfTN5@k|sxL}SlCzprAK2>aY#UHXFN#1W$o)zwa^FJ* zG?ncUPL`Vg*dCPgz%}Fa2D3>YDfwg}dq5M9lr~?GlweOkQsM)33ht|f-9D6VlNyhf z@-Cmv3ee`G+M00?9yK&R0u($xz-hK-&6h zX|wY{0@Bh~Oa5F@*~a#mT6&wb5n!&cDP^yyyw>Fqq>gKlnw_RrPh8w3u47{CUJI3SnF#!FiIM$(ez{f+;hxi^8Y z`>O7Jbp}i4{AD}#@et=^@Ii@V*~pSDXCO|Xc#sn%o{(fRP>^Lwww1_|(2?z!q2xkJ zfije~P)bLJ^wKsAg))`bLMas5QVKj?FSjkFEw_)hw7sRJw*$TH{r=Y4`~UwRNsg0# zdf&VG1fu;vdt7_%wbx!_N6jx;ex;{B?+A7VHM=AJBI}7CDS2QKtIQ~^fEp19q zf7L-E&fnLyu@1?1N83lMh5C1(Op2Beuyvy4V|mE_#8%x^XjzG!Y`%0YPop>>tVuWpVrnBXXyt=9)V=OKwB z(z)U__t(+?nB0s9xs&B~V^mQe zbZY-+z6BL1XD!4X|Id62oz8#NyFnJW>H-9&?8eAerp3SNiJ-Hw&Is)zmB7eTthG~m zO{E-v=CC|c3He3&ncg3%T;+$IBAq`{FON_imrK#fUn3pZOtc`eWrQ?bKXSV`;T_u?AuakEvX5y7#3vFdOd|f4& z?(2iPczuN+3=U_r3Z(4*saAm&udf8(e|^wiz5&3dEvP^_n}qiA4HW`C_|E83ePgyW ztbx*7)1A>1>y4Fg39hsGys^S19U8MUZ>-oAt(_^bGjFVPy*1sLf_CNyvz;l}&is%z zLN~HnXlH&n+nIuP=1rCIkEA=p7plBD+nGW|JM$L7J$9nNraxLK?+qJ)JI0S!ia(uh zgkbXHl@5OguM0jDKT&~maIoT3f%$W#+#Pm`GC=x?3fGN|5PT?pG6SoDnQ{axWm^2C zz#3a<(4VRV4oHJifpR=llF_`l>w;gzyDM1H`$m{w1ZB5Fw+aC1 z-4%>;9IUuK(8YVQjo^co<3>=X#e1@iC>f~Uo1Gy(AY9DO5M}!iZ15PAjd-87Hp~ec zO*!4!lF{ha4|HH3d?(ex`?H+{2$VjS?xbF_@2>>I_I1YSyuT6*Dk-v)@2~Xi2s>F~ zC*NP`{aCt_CGF$~vYjL;BJ=yjY$y2uNIsbDWJx>up-TB9=}z*6Dj&{vvSd5?QJo+^ zQhcDsFJ(JfuC@PirTDAqPKv4euVI!0<{*#rRznN}CSsU?d=?aM%rj7Viwh?@w z$4_S)LA2po`>$8ZpG`M{FI4$Vwh?99h~KD`53$BFH|vU8`{ydfFQjl63;MZAN2DSv z4DP>O2{J$G3+|L7t)mP~e!CK6eySk2f4)MFEr%i>tQ;v9Wm2Ksu#>VC z!2OGr8-G8A`wGGROBvi(7~KEwmJjs!Wx?H%nHtRR|H(FDg*M`ME9I}G8^IUa{FiJa zh`j|M|7)duH0?wu;`b`$ePL(XYwcgH6#qEg8L{+Vt#r7v%er#A?aUvFmN}gHK(fC| zSqtOpQw3)AhZT~R#}C?>uVwh%F1S;U_)VD>U#oR)TKrKZ zMEY50f!F>d+ZonC>2K4WQQWjYsdUEcT}%3t%5|PMkjCuHpHyzXh571|!4H(yxBhLq zGws@$ucy?T3OW)0E!zk_(Bq$0%G&}^`M~`C-)!&rz#!kq4iO)qrhnG*fv41;w{*&^ z|DqBc-88Rth_tvNoxzhrr(d zk4pPiT0si^6Gl*#_MUttfb>7a0B7xlD*sezUy~e3+xeFbB<4F1Tnmtg?T9We{X6>! zgrnF4$Bzt4IYFqJ5Nup(S)v>9hC@J*8-h{)NvM;361x3MrF~;^JROxve7U;5--2dm z=`uqalhnv~+F#NxT{+-`hCinPA;5m6vib z*YUL~I7s7Oy_qev9r|rW3FZIJ^CmRaP?QP3*kj_nSRyy6)p@?6I`??z4dUV2n_W^v zp4*ZNpC!nZwAC@phqUPm7Ha-V(o$z|lS}5K)yQX-+A!CBWffv>REMIl@|9Ki8>3VD zVC6tVRHlPhR%@<}U00Mx_p7SuTdt$lPU(%+N?=7hIE}BWcHR_=^!}>q%^pdU#%$TE ztL+_uhVT$>e|5F;#%hO;UhEJJc}=wvh$3atkngWny29DTc!g(HwetFEHJnVoFvjbu z4b{p$*#~O;K(%tzB*E)|zzGXyl8mJrqmjb=+ic zsun+34ewUd1-z*m%y8C87eLAVua6gz zkF7`3TW$NV$j5#{YL%en;4D~>EM+T@qnW0l(-KZ9P6aM%x5TJH%;gb$IdIa>nsTOT zMk-kx8H?x_Bsg+UNM-U=MBEgD;hEDKr?p9@Q=$>Lz(*%}cKVzq;{lbkvdhsVl?pl) zBvLE`dA_33DQXa1jm?iEaf{0sC(Ic8f(yjLxFu-|o^gV;d?TO*kR^9lJUdCaLlFV# zJ#=k-yjrOz?~~qRz3#0~Rg1q6lKD<;gXN$(Q2S)8UZ(uhnnOtj{a8OIu@i93=GhVG|jyFy5a zORXEVJUO-Kk$UWOkmw=Ei-Ax=3=|Vl0_Wh@e-04x3!+r1aR?_gCK;ny6Iq7>VwgSf z(|Znx0l`mIIWi(I6iu4->1ue|+XwjkYIy5d85;QMYH+x=4|MVAYH+x=575C+SHo*a zA0&tQtol5Hgvvfxc~|{e@j5pQj))7aSa?9c;Dm~TKnpXp%GMAkElJL2tE*gTZv!x= z&sI0}q|1`r|FhM;o#_XOBz{YCIu_={F{J$T`m>*SPFoGePij`CW6sY?C;zvqn_LX1 zX_}t78uFs^0pk7JIM>^Kp&~^0w{?4kbs7P0{lKj4gYGxAV1(bU1}56dOFmeO@QkDe zj_IGT@-Ph@D0AcIHD^N)!-g;DJ`^EaFD{>w+r?4>>R+gKULWf+)EBBZ^u!_%|AHXy zJqZWCte##jCDM99h z*soO6MF_*bqDA~(f!k#Rdf{r@pCyI*gXmqx36D>f7p_E(7PJ`h+v*3OhGlKeo|`8U znOw!4pn5_R^a=<0lTu<$>s2J_zy zhPkgzgl}uXH_FJXlj76rf47E<;SfBztu<9V>UNr&nq-mO0<8n^OHS(y5>DyvviMca zxml%I=dz%6mf4m)vd~+)90PZogD-n4c0?>L*MdcZvoqr%{U0kk<`X%mwVlUlI{ zoqIk(RsgMqd(u74rHY5P9I>%?(9LKZ582>#*AgF;YYG!k!y>#ew1sJ2jL4xcNnj)> zbBCaUMKPWxxqw$cG-Nb=|NpNy4m~&%GPaJH{A4L`L14|BpCej0{=t*(Z4Tv zf$UMo?59TKIh4^Kn{$h3**gW4Nop=*h2~@+N$C77^=lacU--! z6lgNuGqI$}&9RB;#Je5hq5fpgsU`Jy#rkH>(aqL`%BOqIEUCOZt$gn6N%ZdByQu7e z^8}_H9D@ipV`VUUk#=6F44B;3#M+5g*tJ&uiqy zD0F@h&L~B4He412(g`=5kA-Dqc@H(Z=Llgtb&^g)tSsS68l5m@dBy03GmCOrv{ya( zp}`dC90oHPxIhhFx`tl{HKPE+$gZ@%W>*SDb>x5)aOC2`Yzj`K!HhxCr)-Myg@0MA0E2?5oZ^xT;2@}UW;R{eWcQRlV*ebLH9YS5l6`xU{iP>IF zOip&$>j?x(O_K5ej0S1Wva6Sqlcx#fC^Ta3xt>zUNL9}?&oBvlxY(;9cCL$EM?^iT zv0WcG&Z3JDoksf)wx0|Uu+ zO!7T*7ZtrzQ?h3Cg#4ez%V1s(Kr+&Xd(W_ z>T49^I_x^%ZP)p&JqQ|~FS8u3Hlc}C5DU~BI3LRt(!HC@v#(EVz;11%{^_;Fb>GS_ z;U6l%A>5i)&>h^J{cJt#%7mE+J;u2AmRo7d;M_6s0UscFlg%={gBNqx`I*C+-K0ps z9GgYeeEv&2?{Dq=pw9B5rs05l$})AmT%}%PL6*#YmvtXmpU6X6T}#&{_(ba9X&((c zBrIWnawNlOa+rylLstlE2p=2b%s4Jtu%UpHHgbORweu-zWH?~Mv@&l^onRmV}5-!VF%^eFZYfhe>!jo!tMhupo>UI_pKt7fr^h-Z*ejiKLU73C0yg!x% z<)t-2lk-?|&C^X^;vaZqK9*eT!e4#SEBbMr`7aSe&c>lvKJ?Uo6@iyuhT0VF?(qdk zp29tIO^^bW7hEGUTzl9U7&qPl3Lxfxvw(AFXAo3zH`osu2aDSX5ShO)1v(SaiCn!r zI@l9Y#jGQ|OVrf+;fRiyy|wf&A;$(JTFhnO=A3vyBGQzt;}_Xvq-=o_YjTd--eu|w zr!KJ?o!#NSDq=y>u-l|E^@sC?kTi2_0@`fa2IDq@C~ab@37N5!12!iPYD_v}P-gEQ z&+nZi1CQtTPO^c=^LvMR5Fc`TS5TD2$Mbt9iPKlLcaNae}E zb;Bt%op?y;Omq#Bdz?FQ8Y}SpeQOu3_649APfjJ}2%)}N(hEPsqIHy`e4(X}a6@kXEgl#4Q!<*#apc5UL8=;zfyrHoFJ?HU zM=Msq`PtIS@8h&SLRZ9^3J5JTagZ)WqA;i?gr%hMTr;`i0d=n|YHl(s_bi^F6EGsLMjKx{MG5yF_q(}Z!d_}H{>j!(ighI314#0}fKcwr< z{Sx~6f~~Axm!O0_1On&hFQf>Eo(MzX141E=t#As6!|LI&H9yrPYPvy_?MS;@N-;$+ z?X($UxaBS|_6LCF7l1q*nY>^yG0Zg?Uyg6$tulAcqU8^`7=st9F5dKFftKKN8)XxA z_wEnN&m%4s80wNgpTtLCnQr;a#Y)1?mfwOr1fK$a+-=!BVF{KSl`3)6y`T`J(~n4g zW>)73riKSX=p$6RWKXeX3Y&>pG6?V@GrI2b9Oi1xyi6A=Ph4JPrg5I!6v zT^bAX#QqZni6|1ff+VQ-*q$@vypERYr067;+7CI>$J3yGc!M}2Xj`JEh0xmym!4jB zv>N?hJzZ+p6I%tla>qIm2~!V(_&kt6k=o^#D9|nYdMNc^KX)kjrc3r@;3=KWO@*9 z)Pwk2N%3`^{vf7I?QbQCyAx2fWqn%+`UXWiwJ)_YAA0I9%fE+pk*4ohzmyhjWXoKg zI2yZZq31wP6eY$G&{5=rTlu!$LqQN5i`5l=2Pr?^?WWA!zd=m-$(!DuSKB+%3QUK!R)p z=KT-xXxj%HV!hig+Xv?T4@n5Xt`A~&zoSVh=&yaS^0fs0%?T&88TN({ip-umB_STj zWvLS*N7RaGdekAHuyg7sKz*c&9Qd1)55lnJCNKK=ojlM*KfjZ#b8B3i8k7G{g2S5# zl|G1mKGMnLe?OuUHTZCK{WporkjYjImx7A@$xPnnE`fxr-2(WRPF}Akdrk$AWUg)^ z6mzg+0)uo7C}8Mq^1R+VmN})HjE?q`rT&YLS39-Ov@Ul*){tPv$EqzC2tCpn9;@~N z2tCrd&JC&TgRLK%wFiASWdZnTXZia(SJdxo3}vqrjl5(zh%nt5KBjoN#PLg74qkd{ z%(n2+&gxp|ImTV7ZQ(0B+mqxVW^LgUmRz0fR}j@3;K7F&Ka&pZ1~XwA;&xD1C|$fn zgNlij>zd>B%1*TI*(bgKUe(!NP3}lX^DnFG+kLA%Go!{dF*IqefP_Dp&z`eDSS@47 zw&+!zm?39l2q|CF+1{BvBOQZEd|6Y!QG_{U%k<4n0jPve?s(kNzwD}B)4AF`2ef~> zyk9GX7DHektnB`!R+enCbCp}h*$3wH+D@VY#WSJH`?Z}!1p5kxN*Fe`zp1nBN4Y|O zqqyh_-J027ZWaFVT)TMoB)-^o-SM8qmdTVzLKe5`!7d0BP3}FTO}&j_Yk-cQJH_rt z*|k_59x%ZSfJ9-Lo#*^H2peK=V_|tSV|+t*@SEgB+GBD|G@4nbVsvv|N?G;XtTWQb z${Ce6R60Jp%B42bI1w)L6UGFbkSig7Hg)1ijt16gO*Uf}6=&hIIqQsQqDbA{vZX>M z8btU;m)Sv#n#?HeO`R*uByoj1R=v5iSQ96tBK|_1MYGRPiG6-^=LTbpC<;%1B&+MC zSXVgrBUxSH+gmz|>q5W$NXa~a=}7qVmQLIgK8n?E^HiVIE0&R|+2=fM)35W|s^+QQ z?8myLGMt`FZQ%O+kj*X3&U=Hd?@m^lJn^V|vg1y>n%s~RqXGuWK&K}+6&i)^%Fs%E zJ;=v{e5+wH^P;J_P-%7=>!?jdtG0^IR?9x_xi9Gm^Q&FktF(%oZNo6^@p|*)ZhFgF z+IRL}-P^K&mO4YRuU8cc`}RMuH)rhUz~Ih01p&@OXYOQQ3%G8dJDGv!?ys*<=7+Yn z8pgOuVP&nvpZcpaR+zRBF2~sV2orXZk0s51u*OlLXe4{cmquUEptX)+s6U z^-7p2*q;@(QnlEg{JHE?D5_Mi|9%0Kge*B&Aba9p3||{3vYBzEj6Zb3UQA+cqbej^ zJ0^ND%x+cUoE@8)IwiwBcL6uaOk^wE)S#!qJKlt(;s&GGf{M8dp2-<^)!V>QG1#yn zjhUV@nG4k8gjGJF_vQ(I@tyD%dL7ux3#=8-t57OY!q3o4xPzBg0hNDts8Dki*?<4? z|39c0qV_bvTMPHx0vA9Z;Uzjkoy)=OG9WX+MleAgN~>^d3V;DjtGLjsiK54>5l(_r z9Z;0gnvU!JZ$cBS<(U9Bc7RT6i(CD3JAZdx>3`Gb+D)7NZ+cwYb>qo)J8`>{-|bH} z`x(sW!2$t%;rGtY1^RKtqC?tsdr}>Vbx3sDf%s51HbxanL$O#}pR76+>Rw z_q~N=9S`WmCx74Sw98|%P&!t4pg)XzdR9K=y@)|_b5t6pKC|TNOXoXx@*fL@w--xy z9^3bG#p~{L(qg@dwA?#6J$;YNOGni9?l135I%+GfYx{vhA^F@&JL%W8)%t&RWg2!Z z#$3Yy!25znvP|Hn$Q(ynMlcnBYAEIQ+(mL)oLOk}@7(!}(17TZ<6K*Nk&fDL;so5f z9>GzxPoCf+oW?bLz8PTxczmTu)psy;X~y~x!VF<>r^AKZ(~Q7CMX9gg#lu@vbiwm? z*}S48mqV#*9f=*NX!oX@;-E9-Hq0^}gA*pFblM{9cH3U@{n}wmtjXh8CLBbQa(SP` zHLVjf$!(aCy~T}Uzyo1|YZS`0N`wP&h*^w)sd3Ab0->2^jbcgiBO1NSPX|Dt5dsNa zI=I{<^hB{-W(ErdPw z`7J<=8FOxLO|Ga#9r4ItHeFNE0T@R{$E_I&V%RACW^jjAStJ2R6AaLz*@qeUz~G<& z;;Si~fW=wqavUZQf9`Cw0K`V*2R&ZID$kx;AZH57{9qUpt=wrfCBz~lI&yBuBCL3@ zrvp<*?iw6!3?Dr>a_`=ufd+pc8#?-2?B)(M_TA5q1C9MhkKI2sc;{Usjk}H>IxsLa z+}L~M0AG)c3=Qr(K5}$un1C;PhiTenzwAA7e`DZ2vJMUpH;xW91`i)QG)QlBKeU$| zcLT#cjlm=P4;?=+c;wEW20b*6938+ZNP(rBS$pY!J|Xcq#WBjG%~pV_@TW+giaeG4B9|LD?2bay#LVN!NW>~ICz9H z8w1ZJ=U!v@uDyp2wJsDD!M#Vwn$7I<%WUi$V3vFL9U9P341GVHl3Z~_3(Ef55Ac}a zAv71m#|HKf@)z(J01SJF?(Yem4i7x%xHA5c68pg3!+Y->7;bc54k~QS{^LUfhc#q;0ha^t+R1t;LbyXcMcrcKcM*>RX6tz4i9W&!v>k#o$6Cy zzIQK!f+!3ujAUMHk^au1ERoNd4&_Z)oeWkKEY$(?4!$>$8vWo%+*1-q_Y1 zfBMI*ZBMh0H`Ge{(?52%abLr$ZmE^@=kHx>9BTWc1zmmh-?|p;POo0>r<^j=6TypU zE2O_(;~}fMy%NjbF--UkUAY7*-y^ii5a_$XJ<$hKQ?oY zl$MQMn3~*nD^{f88iMRilVX=d&UcdF8u=Q%#MuXZtJ}vJE1oP@>m)2W)Y0vWFXA%8 zyHb)0yYexZ$0pJ4%f>A`(}gQ(Q?Jw-bLl71*RCdZU|6GdL2@CzEJO*Os3l#c?m}{n zNN2>#L*i-);f)nx%Um4X13#e4daUuh{+o7i;k#B#hR4?X^Shsz>Ck@mSxvJ;9pPe` zH!g=kbtg1-?%cU+hy6RUbLSrW_W{BGHvZYMtAEGtT_gRw_uPCN|Mu#e{qsO?V;`2N zY$TTw`^^Mt;u1pjj=oufw5Fo#*jI{r)U#+T%7Q7YUrLSV4ILyv@9y2ZZ_Czl;lhR9 zsmX;?#v#t18t>zOs?odf@WM86Y_19QEMtx96{t!|dII9aKO4LDNJ|J`KbboVwqg$Y z;C+n~f=u_e6WUt+GeXf=WIF=(m+7^z7mUC3B90gh$lh(uj~qXAXxp}B>lwax@8rj9 zPW_jg(`ltxKRY>lYGUkSZf-yshYOnsZ@$LD`7mNj^&1z?_cUxmuIBo8Ea`mj!g($5 ziB_~=m0&%_;bnG#JuNHTeaRKxJ2ivu_{5!)3&SRD61?{|C1%iHxy2qFJTx%E{o6RT z5SDqVHaDJHh%-IT-E_-MKxq7-CYrwP?r#6G?bJf=#D%*c90x!ejkK+C#~qE`{o5KZ zVE}$RGk=Y6t4sKJK=trIa@d>8}csJTBC{N(xsBHI9k1EtS4i~ZWUjn_|ZI+wv< z^&@b_ezxTLF$56)XDEKtB@y6mgmR4&zWKeunnQ~^jMev4Glu}8rjUDmWh*b;Aa2(( zkfB}rwHGJmednemz3SekBRuSH+wL%g1BP_+@gLPWqE~J=jzo}~?pV{8zAfOrAi1sA zoKL%3KydSAKrl!kUfBWjaLuhceC3L`!0cPZEtQSX{$Pcf9y4=0a!qFSPunBQMs~{n9-zhJ)b$p#U#^Uhj*=EQ#K}^!X2T zVdG=^6K}1Kf|Wgf|J<{3%WzJ>Yzil)5Q{d&(!f82k$M_76l}Z?Mp>hIbZ8sWgac;8 zH;09u3;Gr=%<@jP-ef(bb@3_>T%5Q+<|k1QSGrj=>l!~j+c-C8OhRnxUMl`^SB_5R zcs+$;6<6dUQGzqrNL>%W9U%{a1VV7-X$^a&=dX~&_|Wby*uSoAx3_#Xo$&nR3(w(v zG9leRoZrIiZbt^$$f37kq0tyUfKs9r@siz$LgQ%i72sj|Kv!^dbbPSg$gHKy9S$RMr^Td_s+5Yy|bM`P9w!VLy@ke)_Y z|IS^v>TcL|^T^I!dv@>Kv+L&Gox1>^V>eff%5l4bw$f_an$e=9T=UJ?Y15ln9~~eF z^DsKOxdlv4Wg(Yi)W#aR9HUFQ@pxcnKz7GRLw`{;UI?gHp0_YNIDB*%zHsJr_qL3s zOJ!n&d3_PYeav{f$(bF;hx_ofYxdncd9p8?O5c#I$EC9AyK@>(g6YwtreJRNX+nLu zL7*ER2c7qNq%`2X^xHP2#)%1924}{v*nJpFdP+&`gXP^m5@=IhT{U%E$!ZxD&YDU zNduEj4AoAWco3CDu-(A$ZEVh7JUkk6HY%Ee-3L0AKqtj85Yz$=$mZlxBLA6%im6=6 zuPPKflHZLw7ZumnKT~MrbmD<-=^d)`r$J-|jdkVa7%rT{r0EASq9qcqpqp>L72Zw% z*imlzkUC2@x&x7%<=#r&RFkLj$a+9WUv@gIlV!iEP`M%&(FDJ$K%5!>RS|dJASisi zXqqP~Q>@kBS8N=ao!K!nd3wwYfFmt8St7^6U!Ho5ipTL%>x*3QcW)yEk3!a5O(~2e zsRpY0g^0n7GCM;E9(219j z3%K7ac+{VAi2&?WQEbN_M6x%F^7_-YB6{ULSQWc0Wr!MC#$8T)q0{q%#ME+M1*U5KYBZ z9@3xnJxR?fw9a@*y;?0P3sR;9s}9-U^+wX})2wYwS16r&HBNe8XHre=5V~HHtZUgL z5sT(zZF{o9U}m$r)SA3X?Y5-C#Wx1s9kZEq_FuagmbRM1q0&%Vz3YpGq$6S!N`8p% z{KBXWtep>9zg70xx?o3h%PQuVB~yYXLAr9yg_Gr>mHL{t-kz+*)0b=9Mrn@9SYwmW zt1@(j{a`hlNBO*HcatZ#yImhfyFX+^_bI}$Cn;l^HwPLOx>xsaS`5R3(g8y_kpt8Dpkr3~zQhB|}gp>~RD)ti)cO&TOR`|C>%l&*KXsE4dx*Q%sb{xSiR zx_+#jtn_lgW+sVFb!ui*x-7%0>QL3b9N|N)C#hvWkD8^`q*Ti#X1gY>wwDkb#3`!X zp482YVH9?X{IudDmf+l#Rs-fUR7lb9w&bcyG*02Oak;iY>%L^I;Vh6GHC7v3LWahLPy2852KGe1(tG(wKf@hO(y*jkYzJ?G{&8|-sk}LMfv_9AL z>g39OhmP*QXLRtuD0-2jQj(2Y7(Pr2u1Yp6{qe4W`$*MyO|og}Pdo1$)vv|nf8Dot zc;Mz|tSMdk*IRB{Q?6}Ju3p-++TL>0@u5R&R&2jBsl=lMHYdX)1IN-CuS_adJ~D7G zlU$Wl!>;*qrfm^U)b=K2`>z>3foR4-z#{ZI z#(2-yEbcjvPWx_q;MPl;Ld~5#Ju3^S*fYEdCQz|-_jh*5FruyPV}+#_P{p<@rAu;S zr|a!cR8=e5wgp{NN81t8HDMQ}KQV@C#~7;G)@g<-?eM6jYGpNSItEg*eoBfvW$K~= zKPALK3?(dF65>~d62>ga<}I;=2}^P#j2NB6gsp13!aFz985lBkE*rek>f*Dk2?aV| zjoGHUqeSPcS6&xObhmoj9o8Kdb+xwj-W|4gr5c7?>P`W=OY4e#)`S8-t;4QW-C3;e z(z;GF*-?q^);(>9x|1E)#AhjWxV(3b)*ypyTAk(%0%<+V z7R2`6P`t5J-}vh7w(F zBlm)r2(eb$PGn7QM#b%ALs|L|V76b`6D!he`;OjFB05#+=`6#WaX6mNBD_bf_~|Sm zlxX&JTYw&%*x#3Wu{`r;{M1{FJrZKP)JvLLZ-(1asdw|XSW->mi|c@ZVY}LH^#h_A z?y6jEwb*xh=r3-t&J9WWi;egb75g`)73r>@`0N@A<64^CLS)U?=&i481(dF>zqAo~ zrN-Dv#aPjSv#m$;W1>wY3Fbg^Fc8~#?C`vnCmOm*ERB$EB9|q(sM!dQO`!kIW%$75 zi0~$o7}#q!K8vAKVQQMpnoY69v~R(gK~MlKZ)+QMC}_&J@rYL&N3gqjw0~s<%Q5`A zyLe6gH&>vnoLNA7EtzhN!QhOJ2Dg>zvCO;JxN_!T;?qzi`=POYd-}4SzPNq6N0pET zwB0eteEooMq}9j0ie{syJC7za6bp{&NS~Eddfr~+k(&xl!_(gwv@}2?Rs!Pme0J7a zJ7Ru1>3~o*gTCCw&zdeDWrTzVXDA>=^@aLxKa=#& z1S$N99XIccCg@>4xlN$4b&SU1=AFnTPst|Uge;1<5cGbR2CvP}bm;E*?@%@OE{D1V zx2I&5t9P4Iv=dSpSollLlfT_Mm_MSkBky`UCIM%rP(uj<)(L{1Dg2lxb$v4loz*_LnI)pnQu<-Rzn~ws`A`nKLv6Aa&;<7An;LN-XNTu@8TXFN)v38>;>q7G?6lOj2Nif}Vy* zhWU4dE%4(N#E14+u-Ad|5ITuCIf?wxtQn1FDn^Da1=7^S>WsGsZw-+OxUSi8VrV18 zgf~my9dT!L(|vb`(|7`hYNF71-!;5@N-qf4r5x`l_~lH2Tk8ekx}-!WF9_EqB|3RQ z4`AY=K*l)McGfQn4K-F-W1ZtWOAn{GE-mh*Txlsa>K7aPoy zuIkeP9+YaO)5Z0nnOK3-aB%`0Khf-TKyZRlg9~RsaB&?9O-;d_3MkO*OgI;mXm$o0 zbniqQ$#i54O8RZOc-{XAi~)0D+S7qCprol?eJ$&gKiG=dw%76ulOu`HVwRNDS`XPx z0K*Fb!?OW{a-C3ETi@L{LU>c?Rm$Il=RwMnaI2W;5Y3O_LO6bwKBe@+sy)BdACq_? zT(^%U0(^n7{z%79X;LVysecJ4%LA>0QI5RNl7Wl?p#lbf=Quj4ouMfN)Qw-Wk@H3e zK=eZ*Xvi|Yabsg3pr8!io7}YzTZJP7*yG;V7?y(oVWRbu0?yq03{fo83ASG1sHtG& zW`gfD@?eh`Cdd9M3(FZ6tR+_Mxv2F5j0?Ew`ESC%7Xgf6g9Z5aqT;6d!NxI^)iVoE z2!8p5+7s_mFmfv5SKN!LdM9Y7g{v2szOo|)o|G9vARie)b7$>LP&G4#@`N7+FinqKy+@;?4THRy45A_l; zP|m<6!p7nt+%g1z@h6FC9Rqfly`-Pja8w(E3kpGDL9IY^opJAo&^6X548>mfD)qd2 zRiWw$zE}pUd{rT&Vks9_;N|xHh2qu8URxwATv2gFetn_sth%C5l8%=g1YYGNoC1>SUG12Hww|EJO&^z^!1vRv~VJ!fXL?YO)g8`65xbp*Gh@; z#Z&|=6I_HBd2sjf5Uum)2p=vaqC=c}FQ&^99Ntyv+!B_hOXOVzOy+!*aNFgd)jA}n zYS)jH(jRI1vxQDiu*;A3D?x1({sR#sDL)G3_ZL=pR~8iD=L=O2;=s?gTaOnio2lQf z`a&Pd9wo=hK<)8D2vMOAI`8i;RIW{1c-fO7SOr?VyU_4NZ~CCsy{Ay|yjS+Y${sbx z%CvZo2$Q_#^+Bifz4;cbigMPXM2q+4TZpv2FW&+@qnx#nQ0IO57CKeLBJ?6D}?1c(bG8L&Ki?Uj>CN7%*B)QOf;RMaw&f_JImUSj~3Q@B7t_htUg-U zvNg5e_|^90niendzVo~Kc=V1x6wEi)@My}Mvw1XK-b!OCSz!1>+&q+(YLOz@K(ZQsEM4qQ@al&!RHZjt*ufNAxh z|5p?_m++u3wp|r8MWwdqMNLuoQ%WUilAg^C1X-xGtt=2H!~iCC1lh{0dAkU~qbkH+ zM0*bpW_}y2~28oG=%)qr*;pkje%|O+nzix~qm8yZ+rv$fM4a`2ohh}(Ag=V}8 zlJG_~x>QQSW0Mlil2kG-fqEyLRVq;LEN%}IfjE^quQ64YNEOXGA-uyZ8GO6~2k-iw z&Kt0Cms~XfaE1&=nTc7&L6#%59oZCJ9140#UlF7Ph|yWjny?%bs;>!9pg_en0Sc6u z*O~wYr06tTn>M53+5iQ9QYk=z63y1u)}?3YGq)tyEjdFtAS({YrA|>-GwC?&Rcif7 zN2rZCfUI^*KbxVVBo$tFC|1NAq+(vb#GE$cfMpx)Gr!=Wv}V^W=!Wf^taT*i2=)i| zw_MyMFN4O~`CK^^i(P-hJ?1k|!<^xQ{f)}G@(`xOqa-=9mYw~W%r7DvVFkVSP!Usg z?3OyzhCi`>O02nV@5ylfP3gQG2&{u))ufB6+F1b`ur=06xCfL00LuZHoNRrdJ*7 zHk_#f{!aTkY#(dSP1brP@z$fr6vnV>E7{b#FFCd6sM~`yKu|$_`n}uZRj+SPI__bog_PLEImj(8cUVB;pA=c4{zt{6s>+UjBgv|BbF%gwog-Y}_(f~5 zy1(y|GfkWJ9=CSKtl7{?@5M_pXfg$Y&%sU1s`f=w==y3QS($H*5!1Tk$M9Dk7(I6M z(BS_2Q(KY^$=cQ*$W4h+$@R(RC7(wJ4~`x=Ix;$N-{A1bFs3F;+U`AY0LzyppAQcn z!Q^G>=e_r>SpjWX-#XIXW5))L99YvX!<^P%nA+&@@xyC6>bsKF0#oilUUpY@CuTfNLDm+!P#b={bhRjO5!714UEBPrc!CnibS4-6a{*~`JG zUzfByAQb|}PG!I?FNo4iiHr*XPM4Phz`pjR{E)ExKZ-AX-xlXfzh^nSrpT9;Grm-R zN=^bZ+D_KCl&x$J`gyoT)Hoff2?T6qM==^bNF&pcT26?)>fl5NZWKPL3FbVES>;dB>HQLDly(_Sp@biPw=NC@`o!2a&qW z;Q@wp%MvH%qoeRj64R^^R$`x}X*#>OD&_lF-71T4Wg zWPjJfOtre9?0ZOoW*b(g6=}91Rs2cyv=JL6Z^lm>k){Y#u>UmMxQ<)jOZx4`?odKJ zSGp=)H#l-t(YM|;gjZEv733Pit3oU-gitiAr_HS3*u+naRa5AaTe>#Y zSy!0l=Cm16E;jRaa*$MLwz=xzu!_YB%{CJb%YUmf+S7`0JE|(gm6Bqy^t9D!MVdX$ zR?5D~^zQoN_J9~>Fn4`0nBzBlBHe)OO9pdR#^TEo&v$r{j&BGiUG_6w->_cxc2-?j zx23#o1!b#mcqgGyDBDx&MywoT_jGq-`*qpRDwDuBtxoqhLMUQc8?&{2L$W8#4)xR4 z_MWb%H&TAhE`o;faUO}!F09dqCNIi8nvm#OUyQYNmq(xK={ zbVLL|j%sglX9S=yzn2i1K1DySeJKF#!1k4|&VHtPAI6etbw=&8EmhZujrxm6W7nEQ zf3hyrbtU)h+2sYneORC3!iyniLL}`s4j6N3Fp!FnP(Y<&?A4^ z+u1-xC>f>R!~9}$0S7q5N{Zt!b!rs5r_srWk)+D|+~eGxJ8Lzt3PvD}JPMl|C507z z&4;rP2QocPzBvW?GDd!GnKWTxRmBMDSGDv$dz zZux@rfhcOhFvuAWGe5c@;|a_CD{!JG#97#Sp^tH*63VV!s)dSq$7!u4g~f{0`IrX>}0m4ydA^OyV%s%Fikvi6_(JGCm6$ zx`uGI;F4rS^zdEnN|#-UU-aR+d=(DdcX1xGMmidM+pkRSO&i&VYoro(BRK)kVd=Jd zGER}2Cm@(@sqddeuC~p{bBI)W0ZDC=ABw^ELTj_Zb@ukRZ%HQ7!Kt#peS4jFTbCbv zDN+l&vZ=Vm*>W?H*~NauR@qE+R0jaVY&sLbKhS>Z6P zzpPEJWp1!Hr8`^Zrn`8sWp1GN;FFu%*u(#hxrN-fOXr5(p)}YsH(l}fwAWGa#e=}L zb5Hx``q|6EO&MBdCZ5c0B2bfZO3t6beLf90YDBaJe(lWh9&Ye#x5ZB!ZofJ?l+F=$ z<8XVUe)}?Wl-ZW$$ctxA)RM@mBH!eH3-?0Hh#ic0*ld+_FQLD9PH{NiOTw$?BudAu zOWtj9hEmF8);L4ymFK24L+O?0#x+A+d4DSF0yF5iulT%D{dZ9l=3bh^M)^}S8Bvkc zA5cUT3LIoG6E}%(Ru)&-DY<= zz1qu#w<9w&2?=jW5T$%|;8%uQaVXD4%$ms#RCG%Ah`^&D^SODCseFurMf zR;KwlP6dABwu{j|RX&q~)>!RRD{J8p^Sj}|Y38@f4zYc~)USPGmlBh*?=njSua=q~ zcI7)^8mCvS&3|Dcr&Ff9on@A%$`54|5!9zvUXix&m+pg1=9F;tXV<}9N-<6&R) zA+j0vfktO@!}x3WEW>2o2-jxtO3J#S(MuhS6Yob!#;+_JxGd&o>qL=gS=}P3_al)@n4J=QWaV zD%dq48u?MF*2Gn&rJBBB^Aop#XT|yQ!`T)H@z3Wl5oVJuxRBcdds|!p_amg7KfOTu zh1?flcLA$0e-;s-`NhSTMmnSW>BZFbliXngyd=FNDA!6a39dp#q((xcmju5hE7SE$ za+?(damYt8pPw67Pyv~d5VJO@)7H0Ym#EYG#E}J_I7UJJ302_r%P9A{zEyte zj^k*S@{S6w0vYPGZ~M)B{(plH`PSqLu1c)g^gtZtE_4xZWoUKw*(9H+je_#SFHCcO zt`4pAk5u6jt?ka#madh$>QaK@W~R41o^(%4o;-INg&JX&QA^pIVYE3jHis?H!YKE( zCZBeai(=Uv& zN-`B;_!b=QH_0cxJha|^Jr;j7bwg8**w}21w!opeX_Y%-^NUM#;{^65*V6lGc!%aF zmJChq@g{48bAc5dMRT>H3Xw&awZQicM}oiG$kWX^VEk4@mE@R}w6d)W+Wg_O$AHW#%!34JQV2@FLX)BD{ALo&Lkz3$!497#j(R3QM)_@u&nxY1dMm5EoeGg%*>b=){i zKA^Nz>gAzY{B2l2IqK44nk=zn^P{+4P7r`Dv=D00!hgHVe@a`NMP|Y3Obj|I%U-~%+GA?mst_gVPW92`z0y`HHGA3q1dgEOi;b%CC;fmb4u$$+ zhm@(=^dSNND*6EWG=)D42py*VSI6h7ebLWdKh15hh$1a(^tC%lG71+c?DFBJs?>9e zQ#+6(e!a=AH`r%gf<5pS2gEE|$d9Tu)Sq3yTu9a~p>NAh@`#u?v763jK1Fb@v9>mn z!MFJzH2;a@ibbo_i**ji>`J(daNi1uuDs)Ycm&m_g^G zE{#Sq5?YK#U5^!#61yy07K6B5p{s_xAagjrF1j}p`(#iORpE?d_=$Qp$poo9l*CVmn_V+90|GH*t{Si^oSImy-IJ_|T=T@J zMfQ)FehCt4V-G1v|Iig_ODhv;YDLnSL*-@3%rld#eSa6B6q(-WptNBET|<98<;qI7(eC^|eeCzX33o~y-nlHp_w1cCZ~ zS`aaW21Dy&H`%vl?b*q-zACm+Y-d#KrgQVnxymXH8($f#g!%1GHs*WK2?-!kT)Fbl zx~%CCzd1B+POi*1(qWklt^BfHpS99~ne=A+lk4)$AoV<&PzVr3Ikc8spgiO|Wz&VI zr**s&jcD5F6{TR|tT)CAreu z@g|b9?DR#p&U!FGL1k!z{mj$Ie+{kil-Oi(L3o+TRD0_5x!H5gz?q7jE)Q)Czwb|f zHstQQH>oY%_hpe80x+IKTQ4X+UMotrtH^o$N35A_g?2^O?nlkBfF{V9frWOjP3o|`m=XXQ|Z4?IQBO`33M@1$DzZ1;ue?!EzqYoVZcX`h+IS;^= zt%pzN`|tj{j}v!Of!Kbtw4A}>waW%#+iG8tf48^YXn!I|?r7@{PB+!IiRg5rKR-yG zb;V~})pli}{;om;19L(lM&Dmzo1az8jv!$+jUi{tL*F!pGu@%2Ja~`i)Q!?rj!j#% zXq?JWwz>zR1vCqGBX}&I6rp!tQTtPB%D~5tz{NG$ZkXoAV_R^5t?N>&EN#AXy3Ud$GH$> zz;P;bM;lXEbX$7kMD7uOB6`^oklWI#qPLAVd_sVHri6VD*SQ9cPvr;@zF~-D=OGgU zr9HZ5oZ|7v`siqFwYUg-t4x5EYlYU

M9wx7pjro#G)7TJmVkCucsvVDR@?A6X&c|M(DYg2^$+3m5 z#%WSSk!NF4K85gF&(ut z3YkUF>JVVJk%c15Ar@rMJY^KWUG9y-hSV)Ocs}}(qQiw*5=1sEO#0L`S_8bQ{BTIc zb~PT`ugAo|V6C(w z9_V7dmYUlI$hy+>x)48+5|F(PXJo;d5(MkIo%bYP29`3~x}mLE@L25_HR43=y9#u$ zWr#;AJ<2DXf_eCw=84A8vHeDv;vrVNv?&&5hl9n<%FInP5BoLyA-5CZh|AVu^5MyG zEGPV2oF60a;W@>Ga%(~}v=GlhJT_5`Bvj{o$g0Av`)1Ai$alx|sW)Uc+lZG! zhlC~b1sh(eHhbj3CoUaeOk*3N@IJE8Y5Kv3G=OSvqQFoz0UEJ5irQTRdkF#46752! zDk%}h-M{yAZ%<>#E)pO4^!O`mSBQjW(+SZs)gMa}?gXXuwh%=ONP_$hzc2g%xLQ}6f0O*hSN{Xr40N=yC4W= z&Z$Ki@l3*|2a_5nX72hbgas4EaEjoHxNNwv#_?dwX?RX%_UTE*zR}JYwQeQWHXB3f z5YJ5+R%Z#f5R7Ia^Qa&n5`_r>6$pb7x;w!31tWC)S^@TMfQ>v#IL!gy4Nkuo`g4j4 zB*q}iKmkub*KBO}4c^WSxy!UjvlMmQ3fNAn_<+&enOp|gb)B1;2-xkR%^WL@lhLsx z2_HblkAw#g`aJ^H^{|rZ=~?V6{fhTX&`^_@gem8eu2fbByF+L)_u1W@q7}gsO1Bc4 z>=%5cpxmv5CVR(I4ozlMMAR}LI)><6TTPAPtZ`7VY)wNJ5~Y!Q83F~CSY#mwm54LB z1GfU0s2dDz?AjxighZZkA7u=2YlvA!CF_tuV&D= z%)UK_6huT6*-3{2EB7rXwwgBCHhyq{QflXK_~dL%;7G=~50IWTqQ>0z)$ana9O5D1 zPbM4P=ch=A=MsBSu_rbVIU#zuoxCQ~3sX@2Y+jBE0#=-pz+zDp7l8}M2V#kcUU)b~ z^o6i8X!}xoS(MoXp5jihfUF9Z1OyBRbn^KwRN*#@&JP)`0P=7c#w=(mWo>*)Z)I3` zsKcFppg~ZiL&52XC@D~+W85q#V|24v>FW9q78-Jej2jYqzo5h`0sUh@9T7j{_?YZ6 zhc3+pGsf+Xc81rIQLo;Ha!pvms{q3=2B6H?bDg&EnoJiXyVqmEgNgaFm}BW; zSJyjyF;?1Ie-jV!>~S5&3AYyrAub?N7jl`w1cMM~2})*{rKQBtwMVEVqbA;78FdNR zD(2>dFCZ8b5y%Bf5s+Dy^_D5cm`=_`aQpCwgfSLEMWI zS)c6<2HE!(pIz^2>`nb`EGXv^$`x;-4tDe2)Z0-ObobWw#I70W-e-PSD9K~&`P@sN zbY>2hvF8^z)_<|+?kuQnaqb;F7KMo{=9q{B7ZGE7a*=u` z>^v7npr3{T91|1D$ESz)X{yO(CY%5j)_ZWxnV~(e|+Kmw@j-X4hb9hI!Tuy;V zKFDQjChOtV<_Vwz6UUqaOV3h)sMJs4tzyvkt&7Vr3JLeXQL~^!j_78Z2AK;WH9w{1 z*r`dq;|b0NSvpHhNQs`2L*TR(*D2S)v1)X%t+LLsE`_Mm`yl~;6_WH7j#i}BK3&{i z|NFw_F}MX1DNgB%5ZMq`85%k&1u_L~^24dC0!VVJ3zj;ILRqiNnsq&}=TsU|WH5fW zOtVzMS<9Tw$Z9BTQL7N!HQbRJK#YMUe)L3H@Fs=_<`#@{V_xoED1r@AQa&pM9AqZK zD`D?Xr-w2DdZ#hK4DbSar?SMv;Wh!YU0r( zFwdE^o-|8o=V@38Z$*;H2B}t!^zCWftbp5rSK8w*M?Ew7eAZ7WK`-V)8cIIutByRR zXcv7DOwJe7$?_hoMsn84@*dpw^yDUm69Vba7FXB1b#7yXXW;Mb4)17gWVUAR%veKa zL!g`dDBG$$=g)SAC`46R`Q}PIi_%hYCD5CPr2Vqv-b$6OuD{pB08Y@tk%7kOT}R}3 z6hrA#z_>`3gRg|mrP(FvO>-79$A59~6Hf}9iR12QM6z*RC1-$=Jkspgs?J2<5{aAc znJ0`z(he;Xp50`Q#%@LBpm?WwduI|Pn^qxCyTC2FDNj&a(+`i`7z0q3bhp%+OVZk zB(7r(FIHsusq)WfOwygXB0gyH+Gsw%P3i^|vFKC^fF!Wh23 zh7bN^u{W7*pfNu3LY;}vc$dY!XpQ@GyY%fv;c<(DK0~~O5OmM8AsGE7<)_t;q~}?5 z%q}^n*G4va*kg9i_StB;c1Fk(#wHHEnw)6BTFxwF(~!jSCF|Yg+#>_LWOGdTATOAg zG7X)mf`kb#EpN92OMzxDCG4DzFD3T*rT8U!N!~BtlQ!e0?@62K&HFuRGrf7gCv7IL zmzUw$;G=OPybLc>?@^5D%WxJCC7Qhqk%vOw6)c?U%M0ZzlR29u!R9FKs-L{<-QiM2 z=ZplMCusz35&XF@U^K%75In!Uu<7Zsh||N%3%xr-5mu9kw|J%b^t^Q2|A*6)T>R0( zHM`?{nBJp>Tb_~pCk47L*4lrn(DpMN%D?5+E45H2RMXisY&JZO2^U&b7KBMfHnq(n z&l8_r(hx*#$b3vu0Sh2HhpbnjFmm)edkJVr$7M!CcA~7}5F3$~_^7~VwJm~C7hL;zZ#=>N{cXa#0 zox4LQ>L7JybRzRgJry{3*2jBh@&asg>y}I~AH*;MneGMl-OL&TyL;O+{3+Y|j1S9R zigp%SFb}Lel!>Kq+cQq|Httt)5@jJZnCCV(i~pQBUg?qzJFc58te+gCtQ_8DDGYd+ zcMa(Q-kd_L(&fFF3nmS$%! z8^&j|_sD^$R$T6Ipr4q9F%l~i?=p!R>`{gM5mq^b>`gU@fvs{Pkc!Y7-MI|dL5<1k z{RnRJH&i&Oes(kN0k~=LI=J$DhXXS7LEXwF+L!_sAX#2quOt;l1ml#?PEAa3wjFGc zO7`7!Nt(S_RSUXP{;2}W6Wu1b7ji?qUD3gRP29Y~c&NCm{)+{ZlLlLwaI$P?jZ%rp z^BD$MEk2@tAhnwGR0mZu0^iG$MmchiMXXz%E@mo&6hFfi$s)Le-d?z-C$5n@=hF0HM=HMH?OrkB8s#G z(rD+w5Yt3EmM=v|$u5u#cMSKPg^I{wYNN2|01*~!niSB)B;=U{4JjzztoJbqai9-0V=g?e=}8gZhx1J$}o zBO*f`50I@yhjqWhMxF#X4nVKDRBeH#i9+ZcA$h`~h`1^{&*`}|Qf)U)Hd_O1HzdZ6 zejJ#S%XyYO#E&k7Mt1T#NLaeqYDDBj7E|CON+Ow!ug>>1J+{29xKM{AlxZ&X+O3l& zSOPVCtE^=>*)5yqp)PbWOi!K?pK&V4@Mq9VPn?^>=fR9Z1Qd9Z(|7_l{^XG#&QATJ zLx0AiFEBYy`wlTgf-r&wgN&{Uj6+T6DRIQaEcc`yQbBx~hl+xLL=tMxT0j)CbWb(e z6tL6QdT#EiGBmo9p7l(Fh*7hY4x*7T9xU7_;Spf~1TO-GGW3X$}K{z%y$688zojx zqNqZ1vR9@0a?ueq?wIUANMOAK%?{EYKR?s)U0{C8%nhSK(E*CkfsYi>@OhCZUip^_ z#ZAPJ(K=WqrR(d@jd7PVfso16vf1t-Nm)}&-I+%BiK&Sb++gniMKN%qd=l#FVGfwj zDveYa)P}k0x>#gNzf>U9kN>JT`X3h^e!D~=CB@OFxW4{F#l}%jB^D?uhnr10m6~c9 zF=R(g_3Ne+V5(i7pj|lJk)UWLAv?Uy(#|+}*N~Pxl>_bMWAXhP@HNg8h7`%9xVC`r zeuV8ovmCD^u)_FoI4>fRF%=~Hn!$eY%?6Bs=*J7hR|_Bnq8~5d*6&3{^#8OV`hJHf zzfx?}-%&J_YdLwa2tu!AE_f+=<6Mkqll~{iw#fwPqH>wIMTfTC=NzejOVW_WfoOwg z!*e2Y45TeJkOHymIWAD#9y(AV7QBV=h4w5$iGfy&?bVN5$F z&X2*via5Ye@mL@V3f9mJ?-br`0XVoOdo+Wp07D@B=|c7D2vUO~0b=}DQZIQ+e$qw1ZorA}A?A-Ybo@eGmEan@y%>zu^l9au*=v6_%>BKK*2f1fYZq%G-UrHP# zDEM5V>gh(9HQ@PN;Yt^?l#1wx%D+=UPWozJ6j2u_URi%J_ZLY9;e`!%IPaNo&=8F5 zA<%oR&$-owjLk9Gi=O(asMAk`u@FYV^m0kbU6f>^Uz*0Law1YS6jsco!}8VuZeko# zT)#2wMumO-lJ<3{ZAQgPThNXLwbGSp-SZ1HY|sjVyKcV)BUyFc;^- z6SfIcXnH>Gl2jU#irnGVB1mqx>DaD`TsqVp#MUiWh#i=)_<%K_*dG)KLlTOh*dG+u zL=;0;MiCVI6^YTywe~+Qv^`oZ$gC@OzQy7BMk?h^+})_2uuXFAzr|pDsZp$w8_mO& z?~s@vXR*^nSIAQdwlycd>3ie*?F`|#aa!he;q{tukHcTw9}uSu&7{tFh@FzG zNLaC}{&&9CH2^ave zZx&LBDOJ-qGl+@n`)fh$q5+H_DRtE!GTgxF-i$`Vbm96^c!UYsDGsV^aZb=K<6wij zJ_A}94bSD$MI&XY*7ZvTtdgQ#Ma-E=o7lp9iAbN`UgMn zaC8*=>wi|zW}$T>bSwux+f$nuCsOBd#%vWWhaHIN9>0yz5C8!bL_R8x926F@9vyXA z1TR)GN+zo{L7nY#T)jI~`y-kc%f3lVpC>V63pSaIJ2m4rYS&M6H@AEV)~NR=wd~fb1`BtM@au(hwBE(T?R< zkP5-lN-;Nyasbh?lw#UPS3x=^2fBnY+H|BtoMI>lY*&~Yo#;&~%p&sAW5`k$U_zmGc-rnj?E#wzyopQV97fR3Wum%3@#S{3QJHrX77 z>8JA+)}EXcLg~f`(6yMTbQm7+77~>rNfd-DggoVbe{+$S>8K6P%qTsr{u~}aDL8%X z0LnB3t_I>-k)YhrCzXI27H3;vz)fc(0q2{GX?{>?Mc!Q8=n@o9;rZqwmL@(qF_~`> zWQJ^V@R*dYtRFBm&aPF)@>>#%0?f`q?eY0p`4Y;+NjMSCqam_SGo6okwzu#ek0U}W z-ck&yhubY0@LM&3<2C_)q_l~ga3h=?^Wx9l?luj3M~lOj(M>Bz7VlR&2k~QXEe0-w zL2VegjMJch2f1I1Z9fD0-`_ag8h;Cm@M)~>bcl~F7CJjc)YhcBp%Xd#=|G zO5K(}SqutC3y@j;BWy9rX(Dr$Rm0Da)`XNP# z_Lm|n{plhBcD*Rvct?@^@oyL1>d@9u+*1D`r(2g=q@8pZbHEy5?#5Y;4_)Ps)47PE zN9N^rW9HU^9}LWFPy_U;uF@2YBZzd~Dr{!n{2Q6oDJhqn^# z&H#^t+Rq))L1vyK0rMo`<~lRhB^p**QUu*gbRJM#+{)v{ipwr5Mt9#W6qk^gB6({; zaoagc)O~lvREhxj-4RnOMm66fs_9LsOUc<^eq__%6G3icYQ>5v8waZEhU9Gjhzu5MXqGj+di{*KLJiS#VLMneC z&X1y%{JxVT^aDkrGiiPl8RP?8KcOg@#)p`tCtt5>MilFod_5oCNrwy* zkm<1?(8aM2Owh(Up8$Ix11!#;sIq9531GlJ=XEc_NJtEU6f9&(J{evw>VvwcMN(!Z zX5)@04fn&8&FDNn0AU)$(YR-7pL|h$S=xmU6)`~#MOOKtVz3shTCV61 zYn9psinTH&M+HhW{cy3vi55kgepsk5z%C@U_Ky|YKFd+Nwc&@X37K+3X@f{gh)iZ3 zt|?bDl(U+lQcAJg`|k>Ez<1Wx%^ip5p+R}^?@Mf2u8fN)M0XA@zhbRfTGnixUt zy4{pLFbA<63QRlucweWysR25Q08b(>lGm|h9>CvJ(6A4Bfu4nO06@Vc!E%~8b*?n{ zQDVaRA`r`phJK$A`rWLiLO)84`qsuFL_4~a6w^yOU{e4fJ;YajzMs95gb`b9?Gep5 z8lNb3TCR8%8S)dwD;$d{vJIao28~Z*C-RdT@+KRSx|FunZ)^;hv$%;U;qnx#VBEQL zGnRJX#1VCJKUpLPN6!C1)OcIjG020m3Jt5fKkkv~-=ty3s6@~4W}0eev~^nbl*xnc!gex&5N zo+;7v*NbcYLZWEDh6@RVXwtntrBOb^1t=rk^R2Ugf96hj-T6KUZw~ zBAEUI=0cE*Q6|L1tWxovLrucYh(k)5M)_u*=oHkbz8Q^K*j-PLI?ztfrLy*;yXhKnQ#XtAvZ9A873j$aPQ^D_xG<_d!Kz;Ey+A4 znS5XHhx)9&UbSjf)v8siRxJVW3Il+$q$b9%ISBv-W)NQHD8coxy|ydS`rV5}av~I> z(r1$)R|V)6D4vxH{m(UP!<~UYOrozaYj24&3m>A%5(@G5mcVA$$|FH0A}UsWi!BoF z$`^vW&m}GxK#(>Z@#2{%sT3UYgN<_UfiME(az_#j}jZ5k#r&Tr@2i_-%M(E;?ip?cS(DO&yTzZdM-u_rU zZm}LIOKQ>hWo&=$yqmM@)uIayVx^YoNp!!F4_V)Hr(Zt^sN2I6R;Ar=*w*|%?scj; z`Qu)vV!J<)ko6)t{_nlk z13rWO&&66#(uTuY&%Ms1HqsgRvn2X&aKzi=j5vb*{1E);3T?F_mhfxE@>W^1IJ~q~ z%kA@P)K(eZ2>)9<&-S=yL7ccXPYO4Cvf}DCx&AX^g6uEU`^&9&%91*B{A%kxT*I$Ai-ld24>!p5LOcX$`U0VZK}wGO zMPa9)SAh77!cH+_^!yD0p`AF%PK{Kt6Ss3!m)XH8@O)q>Ls#?=AvXC&u@k2kVE9H7 z?ENFgCVwdy#J40l-brvW+w9`$?gO{8Cc%ns%`QlXkq4`U$;W^ISzUoqP7H>pz_&CC z1b>+fxp{`9brRgeMr`^1mLQO+h-9ZmN~WTlkp=glS+BNpe)I8?*{bh)UP%k3B{5KQ z*|`*eZ}p}?3c$BC1%EBZSm>RvjPo^xCWBb3tfN!y{X6e-3`jDau%>LvuUb>+ z$hNrO!A_2t`daQRR1RiS+zvU4$G6pPDedKYS>?|2i*4)R?b;?&20eih9FLs#t-+$2 zTJ)%gq;y#+8nz|Mna^c51Tcq51Nv!>#prJenN5G>O~fQk`!h&o`y;eA6t?*P$MPNY4+C(PcU$4bd`s-n(Y_GHS3P zW_KLYvWge0UE{$)!W0V^!lR7ydr5Ff7`55?Tk&2Ogp=&lNOi^+*;W2R{ucFxILgq% z-xfv$l3?m@3nRj)$<+r_8ob#Wq%5hGyj1AnK}*T$NBmH{E7(}sD^kX`ai$C~$=*9F z&+g!+L?_nlkndqg0>Xo7*u#vPRDFX$c#VO8R3&xZ__lr!Kv5A&bq)}=mzQH9>zS^> zhaH_!+&sWYyuKkFavuVE2bedcD}3iNYR|g8F%1+=vQr~<+4%Kq*TOO8^1R=I$3i>W z8t9B`b-9irL~w1NfwESiLh)c|ceChi3S<#=3DiYU zMU%9y*ZaZYs0rOS2}$gOH1kMZk{4PU8OiN;K-2<}K-v@1%hYG`=N0x1d&e zKE73e{;pF6$J!)UkAI?{DzIjjp?gmQ@g^&}%_0FmU!?W}F6)iX>p*;8V_|`mPC8>t zVo6RcfgUQ!#vjZPqlpd!-kJ`bA4o>NlW$EgaGT|5qNDS7Xy}jm&^bCMdCvF)P8Ga= zQ^X`LhzFY3-*x%@|V`?LL!T7y>1Quc(&y{*wVuGj(CF}%Du?8G} zuFL2u94pkxhBYtLGT=UumU3EW)=#9wa&Vp{>O<|FDI2u=jVqd#S~0Hs5?BXx$HhG& zi{Q+L_tI@tc2yP+j-x$va}|L)!7Jeh2mPS044N21sc>@|O=PTmXF6D5vq9vLa=f3G2AzUr}h>{27Oqni%#N%fv^bEjI|SXoh0e=eQDTrwoNs8zxuq>`b0G$wRrqi z({H`c(`|TMDXFffr+}>lOT&AAI^?EU-~g=mrwbP~e@P@W)*1NaH2O_Q=AUX41oI(i zantHEss$rL?+Dx;HJ1q*swQrjF>MjbiUUZg!5FV(7-(j9VC>``g*MdYeqpZJ=4jx| zUR-99+CKM0*^I3WL^L$UFn&30bWFP(BXsM)(`oW=(iF0}u@wJq)ViH*i-c@JH6^%; zye#K%(=UrPpJ4@D(JGxhof4*KlowP<8Xf&gO1K8S^=KbDHPQ=u1(?WRNqK^@s39u& zFlQcR4Ns5u3Q*(2DbGh1H8epVsn(zX>0S+42R>4*A^q;7)f&tx>0S-ki4XK4aXV%w z55Jlwt>)#>9!U;-Qp{nioc2V>@K&i>Sb*vhO^|v8LxzxFO^5y5iKgiJSJQCrG-izT z>mu@B(`rPTV<1ua2mHi4gq7!D)2s!WBj4GvL>94F=&ziw;+ipcCiS}ePEO!Zm37pO zV&KsdbV{Z(@|_~mqG4QT%z$HuK#FI?UW?1%Dp9nJo3H_4=SvmG{(=;Yn}5Av8%DxF ze_d?j7?mf-CpFNuHcrq@YHWPMFlzi@w^U4=%l*i@Ee)z;X21MoI^@SsBx(JV>8SJQ zm>Fh1#TAd{PHUY^QcHMt{bn#$o`ktakS!Wh)?3w2xELn_+-@O=8$GUmZ=z=kc}b7V z)Th#hdoGZ)E`uZZnC%!oEqD~Eg=D8jYRULkgGZ4PP5`B9A-`L@VuVEnl1-bhCzAiX zkVx78bPp0K`=3sMtn|r&LRADrq;R@YrGFHPxouKkh>`yWE?uOO(Wah zw2I1^(Nh*Wfra|QgEmF7`iQEYL}{&?`xX%EtqO9$-{rMXYr zlohvzNbK92UP);lvf_n4dv4s@Xw3VP6Kw=cl#R4PHEV@&9h{n#rGBZNXB*mHBs(wU zy&%G&NGsj5_m1$=*Zj|eHC6CRD`#(LsG37+PhJjfw*rm?y-vi<`#YwV>gm?u?VivJ zrU4Frp|!Pc?yHEsk*vAFA)eWcY2!Y<1Y!f2>1=C`7=voAbt1}3EP9;k!V}-S3^?)l z>&&o9duzkiLijZP>gGsaXT`%M{yv;NT=K$Z-Gr7sanf3M&WW9c7PjF$bzo+@m%co? zEFOPpbIgQK6@Ynq0Asx#hAIv4u2s^mcmGvVLg{^UZfTAL4anLr$bQ{vU|VyId;NMP z$47rd%+r95fOys@IT>#Ih70wnw6_(ij&EpoPVDJ)1FuyEKK`O+tJ3i4s#bB<<=)ij z9G0kZcX)O(FuPj5`-neZGqhbl%LjK-W0#u3m8#V4L%WvhJuFJ`v%|Zbh1e=&2JdoK zK6S5ZE^v-07_-AhF|cNMic_%E^bn`9xjn>Lbd{7{ZQOF}rXT1%m!lWI_^#U(s?)By z&0PCiBTbA-QFO_CkGPyU?;|c3^d503UT$ebuPR<{(a$D}Eel>V%6MdmrIDp8ZT6lN zAZpnNcFhN+=iuw|P{Xb$?kJq$cE}H#O#-q! zyX_ju7Yi6`M~WuRZ^AV~s>>a`S;I7%W!%p_@SWO^eMhm<0D+)tBds+>3TQ{x7NK2P zXVa0F{5b2Xhgn>Zbh?*h+i@AdJIC)?dZZsh4)9`$u1?wtf>#Ex?Pf$4CSk@Kw;+oP z@Ea=QFD@veR}MwQj$6Pc(_!K$K5es}TR}8o5=Fp3*5fLhhJ5kSJ;C!es?q=xFJ}3oZu*71v);AHWog0op z>f5AN{7_}6nUc4=P7uw-My4_pGw%-@Yr3RFSe^csln7IlDa6Gt22AnDCh(J!DbsO!TynqS~2U5ciZq1201p-e#jCGVn4C2Ul`) zS2h)y1+=Hp!-wL7o!Pb9Hea^Vsh zQ&sU+&slPAXdla0dd_*1#{FoI-RQ@h`$ewZMiG}#ymoGA&H_W8n@m~*9_;bl(3}T* zJoh}Gi`arat|+U~;)=v4hAgG?kVUl%Ff@e})h-AkfL$HcE-b5&bz#{X8?N-ivN!fy>4jx)dKO_-Sq(N^l{on& zItocw1=1u%wN>mOgevs=wORxuuGRQjJjVnRAz5hdVw$@ak|m|YvhkN>SC)~cj8;Xs z?s|a~ysgl*4g?)`O|iu3!);Eiv_(G`hv4I+fac;5e4J1(^tvt#LV;gMxMU=uR2Vxc zs;wJsmm8D6&YKs`>{;7e;?_z}T`O_Dch}U~qZb!HeH+kO-oHyx;WeQ!FO83%xa$Z* z3A>VI{e6XJcfywB_v7ZsCgLz0x-SG_;+efp4>BSt*cxx|?ajM|2zcB+)~ggg=^@n0 z%K*~6r%V}bY#*(BN74TqePeRYxLt!&1vW%d=B#e_lIDIu{zRE(iRZum;>cW3S8dSK1Ta3m{l| zdO+M&q~YF2UJ-vqlUI~&`is%O_<8lmB5wh6*W46pyFyzwrYC%5I%0e1N?_$V*8_)U zciX0s=UnxB{Kd_YzGj{;`m|^0z8yk(nLWbxqbH>2g+g{C@{*jj#~T~lJ<)w9Gh2Z5 zqn_F7r1`Gnbd%N($@7>rSLWwVnos4AVA9q#Te{3r%-9Kd_Dx40sdoQ0(UiT?j~bsZ zt1yA%^F^m&f+`%}H#WES3>AApf-y+zgeOJk@_7($)^lO8Py&I`K&!Tk1jbb-?(gR| zbrXV|J%Cl&URKsd&RA1cn;!{lZfFiyyXsujTqJW_@h0$8@o=bb>pIEJ5eCcxz?tY>-`99Q z79&rr(m%N28U^ao`}Z~AkH;cGul5gZ$QK~G+dWa`)81({2VZu>bvNAjiW}OI65C&P z!wuKma1~w*B(~(&T(5+^NWCq8*-e`_wK1#!WZp+izB}y0TPE zi2=`|oKk~IZQs20#+NJA@YGE&+p5&ix(^LB8>}<-Dn)0iIp9!sRy{B2942sl_46zp z=8bM#2Rm&yg{o$eX;0ftQ95+P)qK+l=DtrpR|7CD!h_$A&pi#8zih7qt#h5zbx>Iw zPuoG?!g+hMZZfTNI=AJ?O*mbZoBn{AIP3ALMki@7#Cz*=gZ8|UDy6;=I^7wC7#c;eqMO< zycSIrmh*7Pa!-CCHFF|8mPhKc%O?Vc% z+4n4TbHogj%EMIB{IN?yHLNJDvYKovt+HB-iK=@W9eN`%QdX0JX{4-%w+YtwqMB@3BV{$LR|}GLp+#A*77VnC6x9|C zFD+73TX610p*M_2qh)Wh{*IQt)u}dG_9k2KXxSU4$##hnS%2FlN(QLbE>R*|aJxha z*59$R8or|GSXph5YGY+J97nOaUt$I~=5tYWrW@R32wM~^q<$K)xHRE2yNewII;f!F z;$^EfW~FFuF>$3lC5zb^_(ZxPn}TOx>kU~-4Z7_!GK<+6aAtYF16WA9nPis#1O zvw{`RjlE|D3nn&Psx2?8(ccTLW(Fomg0yM}^P{ZmgcZscL1d9=_YpZA(`v#48=R|K;tDPUR=%%X4@ zLpd*)!HwU}OWgcU0tnArQVdMgzcu_ zRe`YG6udeBZ>HeYJp3R4-4wjKv>*#rt4j;AjP7d!Kco^(Yf1~UP_<^zZS`bPZ4I<1 z;PFkmI9l((Yls&IA|kjYz^@BLqyU^G9M={GGhG*m$f97T>jDwg?A+p#Fkz(h)U;0+ z38lh>kphZK!h}I?0RMt8W>QM{ggGU?AWRr3s=XjgSj|ohURYKm>xE&$$fCCwh6y93 zyf9(-qFokU?qim$yo@_OLNB4GfZ|1=IZ{eE=1EZSMFI1qXzoQ|UMS=^`HJXDZ%#7w ziiSf@tR+zRl7K=5b|T>@w5Uw!O9BclC{y~9fI^}mQSHYA3P~y9C?ug&Kp`oh`0;?k z0Yl+S1Ms9e=}Q9&Nl@*j0fnTf_R@gD0o{d3HzZg-;CfO@xXdF#wG9jWn2(h5c(FpL z8ql!QJXsK`!76!>zGP7?A9d+VifVa~z617P?8XvE(7iEC7+F-?7$%Gq)i#C+<8H;~ z=qkssmYdB1!xp9}-GcL|fLD|v5-!Xw)=;{o~1dr}M*W!u(rE znDpAvoFc-I@VT^rFzL0#;??La9!z>|Kp`<*7{_&GHCnumhsV62ChWSFAAVWzm-ITK zOL?AX{`#^S6Lx*g<(EZ%Nw4RAQYZ*6t|#=WrzG39met7GT2|A9Z7r*5!nRTk#foq- z>9%MI^onyXg|;zd(JnU$wnsNRDs;HHJz$pj8cgX;VVNYQ#6<=G38wz0fLT&hyD9U7 zRZ{eM)0(x`IKKZckAA`%*Hex!Z}|Fb!5Mgr*3bGCn}LL{pcYgieFYt9tQJ!teMML% ziETi~w*-D7rG%3s38ex*kphZa0zb8kF?bg5;q?8vJqh*Zos=yeeI_awdW00WQs{&(?qS~thW3-GhUR?so6u&w! z23b^lbzlrqRC~2EMjf4MN3_o{T-QA8sN11#-4&jJsZM$uAc0dQz`$*IV0%i4 z+gTR0L{U&$@y@cKP<4A*kgVIw7A0(MFAEAeyL=?{2DH0CqIV|EcNfkeo)S8Cmo0*+ z-DQiMWT(5!7KMO4PK&e%ZuTU`h)Pg!502a3qQvhVWs6YD9c7EsXYVLmloYwMY!Q9- z&ay>muy>X%N+?G$1`3mTxZcGx{TeR}?aU zgu52lb^r9pLKii5+dn;mUyPtz(5c-W-Q&%1^*Oyehy%NuoE{C(k?N3e=3w0aT!jU?*9PcxmzIP>XP0Kv*9Pe9&TRVH;I+f`RjR$N ztVWBkBUTnu&#g?+@#_}4#I$>^>FW@Edd;xisXq`MXHzQShfykhAjo^WS(6?MqteA1 z5<-97ar6ic7WXV3iosLw>cAUd9H0tU2T1unI=uhcIJ_Zd zY@sYZ2yciPoF{e7`r%$x%91L|GCY!uFO;R~!;0CgP++)u|70A!DF7t5?4OLmv`XSO zjkfcsqVEbIl9uvFLZm4BXv`=>Sz3KG4#Qm78F+IXX)~{3E~Mm}W2j3d7i#`$j}@?z zw3H8%6lEVPhDnlEA1j8rP;*%O>0VXJlJa4aX~{55l2qkg*olX}`o-^!rsHv3dOiHr zt@>#*`xX2i2K@W!9k08ejhpqG74&7^lc}?tja_%{-M@Rs zp*?>1es#2c(7xQbhj(l{uW2sb#ZyuHc))ySYR9bF;cl=+I$!!Zo#nLFoxR3kS#xDs z(E8K!0|a-zI^Mpd*F-gk_BXbgLpurpHZE(PxuaLKzqf9qIdILvSwf+8hp^CwpZ;;( z3)dGP^|RY-ZkpPKQ`UY;%XfK(o4kG?SKsc5N*QXLq|C>YX8R^x#J&SRX`D+noX%u( zfZN$LZ0KsOTTqPNAp(6NzjI-8@a|AFHAIaTMFaFgbtn;<1(tBsT5XoEp;^HinpIKv zUGHnw%UZK4{DNka5Rd^COV=3~odS#=l4!nCu2M_ATrzJh@2IFnYU6OTiQjp^Q}-Kj zbKpwF%{tgQqk1ArS9T^U;#$#c;odpLdoeq>WfbTy-rfu!ubaA0r8wU6?RW5A2q}53 z-*tqc9l6hH>)^j3|9|^L-Ol>vPyp!WL*dwYX)*S>^SZrPR2}X;sK`Zz;D#ntsf~lp zx*gAMWP#pM0lfR|xVdD0;_qx}j@s>`9k<_yhdU2$6$h>Ja1Ga-rjBg9Z;Og;AF*m7 zHPhMJY~#o?YZ2IrhTIRJTMVfO0Zu+%vS@6ytZR+WbY9vVHg~V0shW8eopoYU=D_R_ zwXB9W(0xsF{N(-3D`{3W8+*7pEhe&=Ua+oRbhjmZ-(HsJzP5_dDq`ks`)rZ<46lyr z-9&30O6Yyz+`Meri0IUPKNB|>^#<3&z`R{AZ#MU6!u;UgPxpuHi=Ej2ShJ>!h@sc9 zV#L0k{IfM(gH;2kDu&)ge)eOrP2U>&8 z6h9#J1{Ao1ba~+RJv)wG%y|~+*+WFh_H>GWlWtWUIuPznV=NI?V;Mhd6vY zGJE45&mXvaOS5ikP3N2wZvAZapyXk7S^CIV#Q3dsBL!-0h1u@aFW=m(+gx;(pU}=0 z&05jQ8$&Cl*mcph-D_{W=GLozh~tIoDt_&A*ZR4_S5ZY8&3L$zMp4I33sBhN=mLF2 z!%m~o@`&Lzy(5O#G~dCEbu0+YXgD5!Q(_mr2^7KwJ9!-M=60*acPl(M^%c(>d&94Y zR!1}-BBA54e0i2r;Wl5+vq`JDlDM0%Gh688S@*zwz6N)**T48ScWDk0?=Yk8vD+$# zh#XEI9=U|)j<{_pU(%u&rq#Rm6HHH+r3rCsmv48Pi?>1}Ik13Z&r}t4bT!i&34q$52d?o8B?sEo#vcg#i>!(T#UYoh^`P^7dzM z{kmMiVyCj#{{)yeloEGAjZ`o#M0+!eIZ>e6OX=e5d>Hor)-YahBElLQl+~Z#;HQHk zE&PC!PI88S)^7~-Rs{TX#+Edn)Ln6u;xnRdY~ibo#Eb$kgO_O0O%1`Ii?(_xv!Cjm zeCAFY_ZtPdv$U-7c0;73fPyA<)7_^8LZ90**cZ5VP34Tzd0xg(dH5@!l$i|9B*;Lx zvx+NK5wc?rKzh;Cg2sA8JH2dBC1*Kj6;RTv_G)gNI5QYDNP)C7F=%)m0qHsY;H9+K zzyP_+2`$1Sc`kSewc*oOVIg~34tLnV$-=5$xa9e~8G@`4kl3*AFDId1-?{fLC%~3&hX; zN>ZtO{LL{Be6nY_T6>0GP$LK2nc9Qa!qHq)^oXRMJ9UspoVbEh`Yad1!7lIbvZ33{ zmi``KuNz$@(oC_8C}wsssB%m?d6{Ur(GftIh>7myVZ5^HOuS@6^FyL@wruA`=ks*2 z-e-`W-yaQu536q{bfVt70ORQQQ+Fubmafrjs<@b?Npe{wxopDLN)lnAe=kuLoOV}S zA>gdK6GcyW_K7|RD-b>Uae7{3LGxDxI~OJ{j8?_tPsLf-V$2UbOZVR&_yMv2zh>e> z?v@$u*&kmNU0mRvJw-qGeE8o0_dpR~muc{#0{0v}y^y1)0{15c{_h?4J@{p@d?C31 zWzi0XmCK`-#N)pZ6K$#3G4|uXp#89;{5vK39!vrGvZ7wjb$y8}KkB-I)m|}W?5OJs zr2X7bmb>?&#Br-HJcgzyxHixbcUJ6cQ6-DdVrqH|J<#73VRi8nvn!DDhB{0@d9yY+W2GrTH-jzRE)cNV)l>v2rI(Q|h`T zdQCk3M|#>}j&v*(3@JKQxj2)ZL@<`&^9Y+typLT*pjsSF$taZzUc2e(5d94!XY~lS z;{R9!T1KD=0+jT+M2+LcBVyvtpeF0_!m_mJ#X@;%Au3iNo8{Yi9+FjpNHq`{fta}p zspuqXN;e0m_UzfaYcEf16N{!$&2LiZe@S z{)NPu#ZN1@1`WbbE4LEF!#Xsp_qJNA`6BCr-nZ435{%~LUCfo3MJHPNwhjAXx4l)8 zZX>v@ccSI~rg9wUB{!X99B{=vYf90DR;QcFaY#?NsT_w+nqOXygRGaIWE@2oCmV;B zk(Za_(DB>L%W>#j`jrG6@^@>{wq98~hj`v6M^+(VOoa{%f%ah*&|*}Q`>z~zubDwR zxO*iL~>DKt+2W)Euh$m+X~ApHWfNC+r=6$>~K)d3{0W#UJvcsiTV^iMK8^+ zw7nflpUj=MdA5gO=GjO%(DQ5~Xbogf1zICTzf)KuL%$Hkl$~VQqboq6Q@nqrO$EpB zN_EHoIpNLSm>N|6Jw(crq=8#^0*b-~o03h8t^g^bMS{a*(rnhXT%?RfL3B|)mu4IG za{GZgV2xUgJyU({1#jdMVidW_;(F@6g*zAQEk`L9-rFf01GKl;n-z`$IvG8H1JFG- zNLcs)>(X@giaQDTW&v)IjbR)?I9pWUoeFKPH+6eZF_g^*XY4`ogNG{7b1guJ0vO{h zY+~Bvt+yH0efM2Bz;h`+5fT9h!tSnN{yK*NQPDj~abQWzo&)oO2(Yrj7TeCS@z+cN z-8MG^*t~i7XemcnBksmzz#5}Kr1#k?N>~Uz41y1`gi_GYYnT8}FG7j4K`IcfBS zHIM7pNj3R>7Lp5X6-e7m#zo5uy!%R-hOlLwieiJ zE6Z$Qq6nK@hIunlA~81jQJ77tSvWvdQDdsoYS`TSE*Kg>M^M!RviCsKM~HOYQz1Z! z7Iz)hKhW^_l{|RFKIFl;Hr)J_gac_yUN-(T(m_gt%@QC4dY{T}+`eh^_H5%TGad@l zcc~lY<~_h;!?&XcO?gqFe1*(+-gn)39|4OoDA>V;Ho?T+G6f2R?A|-Guc`?Z0aS%7 zjdH%h>1>t(pj|&0k8u6clkCqQj8}MYV}IZ2!8imr<~=7y|Ac)1lI;(gGIYTrL)Jz2##q_s+&2+G7*tH`+VpQ z!;^Z}GUEf&LGmN0u8sdbif81zG1fa4ph!GE`?eA2*DP|dR^dMcyy?C8o?y`rf z-V#S|hiBgxY)y7PT~1dx_bU0eu%#OBX`gojiC4*B?!?<9hQK5?gELbUSCmVe!oDc~ z1qMN|ul2sjFiQCyDA?><;)eSN;9kb2`*C?QyaZk)X{pZmT1gG}M-K7*yeVj>;M^*> zPC-uoVw!+z_FvZR)dzoue|45x6WFc2$~Ct>_qmdZe| z!-GB_xCsO?Mu@~(oB|o2GvQM+A^0?pO<8v>f2YRZo_d>Jp8mWhled_jh@)R%GCx_J z%<7@v{1X|}mlNi)lu$0xo{!8bc48*GO2H*cG5L#Bdp;6NQ>+-hPsBkUn{Qz4pJ|G( z0_}1RRH`%nqLWW?5#>LOZq8tQvdyuOmcnG4XCcWj*?0^>SpPg`CDi*O@-0+q2`_z? z+7nB)oZe02@%g2{-ifIT@oW;wztbMgW-%(xSHrBDmm=*BI)#~=BFPXo68A$0?nx2c zK7#=fMQZ8zPyAp6S1u|gv27~C%qosG2J!=U74&9~kn|Sl%{(DVLT@HKctz^HarDu- z!o$u>xAcx&ket|K`=zOo_Q@qEly;){{Q*VeedwiAyY7}c5rl`HmwIoE*QprVJnU-k zD=14Yc1q1hSth8n$pdUsbc`0%V{H%viJ9IXX4TyDXem&Z`R9=gl*L<6P}T?3>x-FH zl9pOJzS`*73CVUhtR*3)E1HguB-n=_)C?AhR-k-dL}kVDm=x)NDCQLH?n5*ki8x6H*_F2^8eG z#VNV=v_^Tr`UWskXO8c%QC1G>dj}OgUH1r)$pT#56`A2UKbyQ$(ZY{#v`Sb?9e42- zAy0u4npQ?3o+R5VrMH9)WuE>*s8E0L>FGFx3LQ2N{f~&R94}}Bq?Ur08%@d7k<#}e z$PIxA@nTMN{_&B5bLfnre?)Vl%{mUc10Rc{--dH|eES-y7dPwNqtK2u!EOU%X6A5? zxT*RiY)@#zG@JFHjZLW@^Vz+3kMA<8%5LvU4x6>&#TBiF3fU$l0@*94;o8UIx&=O# zYcR==YZiI2T}exg=;`6T2NiE=f|0-zVdwu6VvmTB=DrUzzy&ULKeC z)OgoUkBTe;GsX+zPh9}OC*#JDsF|d?d?rqY^>&|!xdZ>68SttNJ<_pY(qfmqlQ8M* z_?k!n zeqnZlo=k8jtrC_=vDuNG_f!?yfO@Kef!~u;t>)ZW(*Uny=&CJNKTfTW`7SRy6)aiI{(4-9qD}M#is{Uyg1NX7@qFnLYe5XXMp^s?fR}erfXl; z_%>R1EQ_Q@#$QmPwQnjl#BB12#W8`d^}dMIW}<-}ESMEJNDp7`4T!_2+E-$pf4#+e zV9_VFc>LP32Wu2M@u1tgc?T)&^W(g`p%`Ktg_66Qjk?!noF6K4$S(cQ$@F<_^^&oe}*1AidM-SU7 z^^115FRHd$eC=G*9B?xkfw<)j`FsWt@V;iVd6{ev4Rmg9jvQe%?*ZH}fai~D*N>9z zn{T?g0BQTMS}9W9i<<-9Pp98m(nm8j<35DbM=XkQdy+htLAOe@rKQC2ShjqOFUOTY8Y*(qx92++2x2#H$Y=@dl?ELz3y$xCkhC%4}CL;7d- z7+x_T4)4GA{Vk8I{DP{Rru$|l?xo4~samwB=bLFiJ^X{ke2~jrqZ%Wi(TkysZMun6 z)%IM9DTysSK?`r_Dx(S@Qqoo# zRX_(gEv}_{|2l&mMzDJ$9N-M|tar$w+AyzrhZNO@dDPoeI#(URThptNHIfuD5_HNj za>lBnpz_x08Ye&s*`vuqKh-8h$x+Px3wX(elpUwFdB}xu*`6i<1gD&3Hqf!cd3iisEE;VdT+WydX3s#U^=i=186ko$w+5+p#%K{OLT4Lia3pdWrZv{qv!X2Kc>T`V*}G;g zU%U36d+u3-gB((ZgT4cL%3=52yJpwkgAsT2-kH^W_frL7;H zW2$5&qJyYR5gjyC@}RQii?{*-l_~Ya7?@bTWK+o2MdP!}R_XBU)bGEU9+{p!2R9$HK6 z_nEc(;jWq4wZ>Mu@QW!=t)1HoLqWGIYK{X7L$RV(jXAucFXr$HObIWbTj*dix*#5( zEW5P{2utLeLr3mdTV35k$D;GeaJ`st3Us_ObZl`KR)&r}?!wB@vBzClNylsH7{zck zVI0QKEjz9X$U~g$9@?{K?Ok`=Gj+QUREROA z(5I*k?QmW6f-1FD`{WVuL+spF@7%i<`MUZZaKK@fcP|GuI`db93gpBy>)K zf|rEO-3#lIibnUd3!4|5M57~cFrhjywJ^=Q!yURaPol~ZH~5q)-0|;2g(G-xZ$%F( z+=`QFLOhpIF8C*?Zre|$x~)7#bNvhX2`by}Q>$zz)qwP_$MaX!@;R#7sQ^BSigx|{ zD%#xlMs#a(4b(;G=QUN;;U87Aspp|@{V!3?uD$i@suZwyD^PG`L90gjzU%h2C*@q% z$c|ooYMrcG-j~_Y)5+}TKk8)vsFO)g_(z@WA9b>S)XA#S`0qd``wO;ByV%#t8XEMj zmNe}(9^AUS4l@aFgwD=z1-?F|Ul_ym0$68FrPvxPv)v1H-$6(N`+xtGocf{ z9eSB7wSf*Q{W4zXT3x)A<~MoII1vy-Xn0HP+Mf<@UJ)#?cY(IB%q(If%YpblLeP@fe#=Q}Fk+ujs z<<&sda2fqkkp+j#YT7yum$4vawiw1Z@-w>M!M1y0bVfY>knVRBoKd`#WM^A`?t2>- zM|a%GmV$u$Gb*?Pe%gIoc8}h@pW#T01Av{`)mFe;;@J2aj!*Fc-gyK+GF`=+AvhzY z<~|ddALOi^*T{7DN2iPTt+w+%&ewLklhx|g&Fr?Su<3z%Tef<&I+1-u0Uzx_W4Wd3 ztlI#^o4R|mPQhQc{rWEDrVcjUZYL|Am2%S}X1T(qu#oE(LaJF27KMkWNPyHu0jVC^ za?wy}VF0O%cxczFf$znMg-%sGL8{4~q)8*CyrCijqzGm)r}thBf>{!Rei3hyYI>;4 ztBGKi4EZHb@~F0iOPr$>)lROu zI7N3G9#6-cyk|FXJ9jV-&f*?0Txn(91%0Vgw6kt(e6$aMcD&)|;=ZQuZw?6~4qor) z_t)sDX5^IUc?i9r?0%ikzk#yuQ~-3wQ9G&#X~(C6fFYj}h&@ge?$I-~+lit`ty@5l zmI_^-vZGTI-~Q$Tjdk~-dvpP4YUhCq=A_rPJ6xSonWFa}qPO3Un~T-d32MRx^M5`C z!Y_YG^Tp0^&tKZ!gl$o}Fh1*@AF}!%K1LLD1kr)DM{vqqee~kazk93|k&dG%ihm(K z&`{Z-1K>A-4 z$2DJ&S}3>({w8Wmquv}&6Yhf#kHj1SMs=L-nlWBM3+f}I$w*v}P}1XwRV->ocnikE zF`liQ4^kY3heUU!#6g|JRQi{|*k0(s_;UqgFjlYxOi9iDRy{MHH{| zUyUwDlEFHSHIotku)l~$nuCJ^x)#TEw2w3eWSsO;{?`G#dYq;S|EUO{7$Km=(FoU; zIKpFa{6n)GenhIsI2Y0ul)@NU{?M|~{8*ed2-+3Mi|C6w1Qa4pkcM0nB=tC6tWHQq zOBmr@@sT4cGd6H$dMwV5AAcrl9gFgJe#`$pslS77N!kPM;D~O+MYKb^qIV>NyQlo; z&n0tMK6)al2$$%cN#BYT{eq_paS;8>WPaw2-jgg7v+I_~eLLh*H0yf;SAwGVC+GCC zd(SJ{wjmVxMADP~(I*`$7sb(UB-M2*`c%>&p)uJapILBlp~U-)mp@ zQ}LVQ$Kqd&XJ+r-d-V3*d!~OU{?qs`;%~&?jK3BCW&EA^x%hbUVDeD%hUDSok>tDa z{~iB7@&6nDkNB_R$C95;-je)n{CM)S$y<|OPd=MGnS3U>|Mka?$L!kwuitHaF1aR- zk0l$}d?$@=!gL>RA0CPLV81hdXHgcn-$+I@+RCEIM9H7*Pd=(->r+WQcNvltJbYe)M>Yte|_+pkto+^zNG4DU^+{uy94?C(^ld*Wms{0&W{hNOm&qyb0y=;77T$9~g0$kP0n z53+W&8!<-f@Wa1PZl2J-S35SH5B+HRee`#KWc~gX66?ePJF%c)*Cry2P)TE=mdBt9 z3XSq_{+`AaD^WuSA2SlOe6c|3oZoX3_d& zmiSfLGb6IX*!Sdk1?e&I5hy0)lq}#9!^?W-DVvax?+g@TLCH( zbD>H_V3j$32pNBpF{?+l_TRs%F^|hLdO0#fb6`{<#`ZSw{AdjqDxz zcOtfutE^<4f7XiCPFC!)Q0#9F9Pl}BYw9%4|Ft!x8KB2E^m=T+4a7zatb&86^%>T? z0teZ?ZW;tdJW*q&qSaANjI}zdOJ3*;Na+r&j+*)L7fcC3# zX|j}GyaNED8v3<9X=m7}neHqZGl~Ke$5A9i#_jw+s3E{4v1ktM)+C64rmx;a4S6dl z>KU|qc_f&!LRv(v|NeK*J(rz?c^81>r(q?)MHrJBgCP;*YdW1r{vPS)_&Z| z9Hq_P>RxlEbq0kg#pE@HIgyH#5h@xToU-4(H~8LyMc|_dP87>^SvsjAwIkIpm?Vor zSF}`!%+_7VOYeonT#_Ko?>*eD0VF(^r-!@gvMioPqo7@Dhy#QC{ORl9W7_)@fj-*G zpZKB(V@>`!{cZoAz9QAX6uv(CN0qNX9!cV~_0OUnij+J{|788&CiQJq?_29r=+ejZ z(VAiDDv+#iphS|O@7q#+JFEZO3VoaGePe8VxMI#UP9__AMNmpq=IRs5Twf`p5-;e+ z`g2+PZNh?nUIfN!`O-iOQ%*ZElagAKlnI1Uftv~HCN{`?k*1~n^WGXHps&j6wJADs zp%B*7R_o`nqgKc%D2ui})gXDD`q09|?_pwcMB_>Md4wt~g{ebP3H$5^D3zvC(6=caW;QBC>8g=7x6>|7K z6x6JF;A02?8+P65?%f)d(KvfpUL8S#$qXdeDYanX~ zalRyeK;UJAG}|3qmM5qLgUggZcgc&b5-gaUJU9Pk8^%dWVEN8!l{If-fZ+=qfK>lr z(%||7TLURQ4-i&ftF+eLdT-sWXN|D#+AmvorKkJ4%P+0F$owp6|I~xbDt*-pXp1j^ zk@A(5xe6sDE*Lda_38>uV(tn(P+5xyv=-N^Yw@;%=O-e1f*O9pPNaf1OIWZFLP`6rCS4M;rYB%{wmjWb`#IHt&ozh| znL&gd?9;JhXCVnWHc#z$s;P}p{_Q`5IdZgDn=SnrZj*I9(obo{6=`S4;wzoh+VAp0 zy(Q}3pHr_Ni|-#emOfDG_Rq%U4w$A`_p&V6sOH;J8CHFuuxF_&jGcKi~#J`StXO%X;#H9(+aR+HvN~?KD4p^Mir0l_|WS=zUlCL z?i;%CZOskud1rTUQ)K`9_NR7330axUcZn6EiAFZ~uUJ5$t49#0>~Z)M57&`n?WX_| zEqp|Ku|^ASkK6x3pKNa=OnCuqkl2r3#Lkz3L&Iq+|LA8KY5QlznJP@tcY8(0%M}cJ zV106#3-A~4@tH{b@LK!5s={zsORnw?@tH+lbtaQ19eGd2O0GJ1r`zvQ zMOAxOEE57c2N|pmw+O>4DR*hQO^7P~^BxBBnmQQx*t@@%3ZpDRDCF@$w2M4G+9flV z!9v@=fjqhj#3U_fvqquX!Hgw^LiKAvVQnJDwouC&MxgxOYD8RDqoB3gXgwGu1i>v` zdISRS)}(3u5$R7RH~T(F&}KC~Mgs&@G~C;Vg}ZEj%G_&N6FQJovEwqNYwf2TL2CR- z@InLNB@tfkk}OQ}Z~GM3G`vrR`8b(uGiWM2K()!_-fpc#?Ok9tYhnPIXo8sd#*t(g zCT%~VCe%j$J@^-_Ip$THnayffb%!;zlgTC-Y``ak4HEgl*g=9Jj=7NF=|Xx&^I6@J zBZvsmRw?PSk&!CMGKq$Vt*>lYEGO{v&o%oXAmN%uG-$}CH)wqr@p0F(5yp*igJBCb z8at@bCbm1ERV(V&4Fe>ugS6^u7>3QCiw`fr5Ny-=3{=nutz?79ksbSF@;PmH`TLnT zY`C>qFkYyE(k9yc=8++&NI*H1gf_K#A&J>80F$?mGB*vava?6v8w6C0Rjxe?yU3(= zgpzy>1;mu-Dk{R@YBb(u+dtewq+3re-2g29(8Pj`(Znd|;2W|o8{L?_F^gZAL=SgI zvjxYy?H{MD(X5>rg9mESFPtD&84tA>dtKyDG~C39MMwrs)ZBXk*Rx*Q0Eb8{X! znKLQ}**g`@bkV>?Lk?+Al00f)x`26{-;>EN1v>j6bf)xEvGe#daW>LpP=T!fAYmJ@ zlyLTX)7=qh)_6}qu@0LyqK^(5OHEdXc>z%x;gfWkA((_A&5SJ${p0+%!jO$q6?nMF zDtsnXc!ri}Yi06GER&DT=jUihhDCsXoS!Z?(??Bi4z}_y|JE~T6qn@R)!+6nhE=X7 z3%aA$Qb|4C&|GM0RN}YZYv${}U1`P;6c*0>^VUJJq{53Dw1aA^pwCEmL}&n$BR2b5 z4k3>b#7vhZO$?{++Sl+$#`lRKa-ZXW>0#*-aNK|y&SKLIh_`|$kg<6H0fsPgLChRV zv!^L-`$v$y0tU=81GR|}ZA*P&_PVl;<#H7!6Pw0XL`h^?%D(W zbL3b~S>$f>uW;j?0{;GqG5tA?#-qOv#|TRPZqPrQdZg`@?p&W-?d{)oX(~c*0ww~L zr$?o3@xkV6NE5=crd2`mHfB0lB&HFoF7+jEk-hK<^43pGOx&F;J{1D|J1+ADy zUT3cDV1=10r)cI1A#Ya0-!z=WJaYW)K$zL$texKNvg;ZZJo6gwtkwL{6v3mvjosbv9 zLwRkBYdKIqMTbkO?I@c^d}tB$j)AD&=7EB@Ow^%$1wcdDWf&uKq=ZzK5ebVC zl^!uIAxH_1-}?T_rAZ!;+OjeH!nKT#eZmXgyXKfD2>Il6uzvu|X|44fQT3#j& z5Y4N3ZNLYF1sDP`BtgqMFfAsBtxY+s(+1Oy(#8*~n~iuAR)}4R)Y`Ho5Sp*xh*OFy z+bcGTn2gwE`blZblEdLIJDITiMiVe(W)j@|TA3`>;+o{o#?vdLILPXYSj|6U+t0UZ zorzlc=e1SLFQwccum*m@QV)NbZ|x7LPSpB)vU0!aq=z{TPA*V4YZ72GV8n$11A^g* zPsR(=rV8T)U+j1cRGDqxj3b)2@`E%`siBCY(wdReM$&DH-G9qLgFv__jkvbn|fyjsZR*aB0#0VC+Gp1oRWo8GtB^37rT)LKpA$C zr1){&G7L+I#Jr(j?SH90XiF!=!A2_^5XqkGCDDM(pa-pZj6)XXv^T~F1)xMkvOz87 z(G36;PhcUMNMK6)ivCZ15qOri-=j{E*odvv_XnKLSuvPeH8cLD6BU3<_(kj3Pa3jT z*+E{GptY9JM6Gu=;~_iPP%Cr)qc!PgLP%Z59oQzoKwZZjSa9vQ1HjH_DFysN0SfQx z$b)2(56OxU!Om&^d(XX&4?10H3wir)9BEoQ&0EtnOo`St%eq6;nC-*1ht`_eV16&m zX^p|?q-DUZgBx~Jg95E3(1z6lnbWXpvhOf;@YN8`2D3UFzw4H9M8L1^;6BU&!vMc| zWRP4Su&FzIBu|cLV)&#^n)cPc&`YK+upE0KsV#$Z3h|}=Wz7rQBZk;FB%2V%kO)5_ z+Wa_+EGKcB`3GfatN+=TA3xsMI#M6Tyo(uXdScM#lmgOJ84OC@x1Kp3ZIMyH)8G51 zrO5?cW+yp3qM2cm5N6s9W5dCWmet$;XCPEQ$%&;c>yjv2(^?r=;EBOJ4al%obe5gR z_9ZUIIVcsIUE$mYs1Z9yTMb4d$iE{=GRV zVcOODWb)n0Fku1hpuUgOzWKWzbm-uHjn2nl{rDJ+CZHJGZnDro8$l{)QOx-QHQt}! zYcs{hCOr((LLx#hjx2B-CzYT(i?Z~4%_u5Oc1ZH9=`1072b;#xqBQ6O{t;0csSP2_ zuq#r2h)>15h?j=oLbzpUUw5b^sd~^F3z8bd7-FoWRTq^~Bhet3ev-l;$RBCMhCCd=GTGnX8SJ-k>^~MiP>4mu;orzKN=H%t`R888 zzzxY94T4e-GLeW9zAZ{H)aK`~TvF+|=LT;?Q%Lgjz<=ZD9o=Z(QIJJeJi9Odag>!H z?Ten&%r~tW%vcmdN`5z0d5K95(2jOdckr#TsfhApGinV^fKq4q{v4ta|6=BUOt=|tD1gF z73qKM*`s9>1F38Rh&RT{XPx_Ky20NU9F6rg0-k>xh zq^o8Y5(6~X@2Ry&=+Jt@MCyPK+mFm(245uoL??1uQJ4A{+g)1+4RC-^rKL6|fHPDI z>5D>!CxG4gVml6Q7IUrWs-3( z9+-i;ozL~D90;>t83>vWwb8v$;N26%&UlJLdK=A&ivlcOL&qRc4t=09bZB21 zo<70yjt|&jpf`sTP!<~!4IPGXR$@0TjtWx=*dPU>DPf;OK|bBgU9oC15*vg};|ObL zUuRFuki>vSqW@6w`$R=ub7_VL>^p*pptP;;b31vG&Pun%|0<|_8r77Q&2L@Ym=*A63D+THq9%k*^_MIkM^ z$^gj>9`NXq03DXXk~uQ8TgH~om3k8h5RF-!b!EuuO}t@(S1$7GfHd+RUsYs(MnDgrw@Ar0Sr{ zy^2(=_oONXwL=S}fO*R(h$^t>9I1-$bH7xr_oQmwrK(^pq$(qn1vgB;=}1+{%EVM9 zD+>_fQgFCr#ksH|Sv8T$16RT{gAS4v@WCP7@Co4MXhAU~D;bNFAq0`JC}bF|RT-Fa za~QZ_UlF7WQGQ8?7VK-XOYF-CU2#|MIH5mu9A#gdoGSC8l~PK~JK)R<8J5f&=ikMg zPztWPxYxe*Bp2*hVPEoXgpypnITQN=kWU>s74~JN>0baqjd3Yx^r`WGg%cM=5EQ!$ zAA%{B3_U?1XS7NFua9Hmg)ok8hyd{z1R&i|CWeKdSOlO|tm9W$QiJ1I<)gUm(69F)yhgzCq_Ort9LP&*E&` z^M;fRc)y&8$E|57hpu$o?d#S0#J)?QKX=ahSH`W;?Y>E)`p5qg; zKKX7)hFsIBDEu9LUY{KQOKYYmY+uR!p65OqazkPJO76q@3}_)Y6t=JAKIXYkgxpZr zzLNWP&wVoFhQjuh+;@5IFNNGt*uIiWpI;55dCChu9SVke_LYJm_k$tV{&MuupZsV@ z+TZobGyTa=grxoDXsbW@nUJ)<>yu~ulb;Vs`^!}IC%+Jq_LmX$C%+t$_IG{q_5S47 zLel;+)gk#!{bj2AbL}hG_>SiumrhPH6t=G6Q29IkQ)lyS8_k&xzC2&P}shb`+3j(QpgR3?JK!o@Z7J4+)&uQlKW-P z{d&j^h3%`ev5Ajf!LNBiR;pV}5Sf^hU=7+Szozp^+gc;Pjw4zhlXQ@Rk8*LN)>NdF z#0kqRDuHAOKZBf6LpVAh#Own}{EG*36D1RfQTuaDQrHb3dJ19o{S7dq-TXFL-efG3v_z;+v$Y(^84ZSpl`ar5 z)(?=O^p_Yat}t?-d+KfoVG1%lCT%m}juqg>Tw z1B@tD`&d$ZCt+%AB>b2S4UpN^`%>H}SAcJ7!nOIJl$PSUFU2TW1_(IEftuCsBF#NhdI`^ z0XBbI&^3FTf-NI81}VF^*;?GRtocGE9&}?K@Fem-MOnV4l;nC;5W%H+~yiMFJQwj?+W8QPKpZK_?G8z$Jv$07vucl`;f zi~eXsCi9puhWZRnjW3m*p)1s4~W%|$W zsGPtGjquCJU)sD;nW>GMUMp!R01#%^8e#T|eXVNRzLwU4`Y4S~8%H2u%PJ!18QZId-z<5mu5)!f+w`%Eo{kRC_ZZv^qkHmuM+0 zv|ij%R2COHorHYX=Q>~sFnU~KRxqLAhnY&Dt%aZkukD|dejT;0>K)$nZfD6ZDD|J+ znP@7_;}^$gkz$~J3u+j|b4Q8|O#9IXt)18PdHBaG5cDE~xko+Vhl8GZ4tVT{%G~ex zg+5+A;L#Tyj2V;hhr3tUkP(^QOY7ZfJTTu0RI;J^pXSCadHg-UAhViWz_`BJxEIq; zeOAle@!DZl#zDL`mLHWXQ+$+D1pP?thjz-FkpM0tRh=VIHOzOpPsny|P$IyAvId)C zpSuRpA(F+0ksrH$MB6(paXtb&mnt0FFoghCsue=l)-X%xB+<^M()^?EaZXLz@7Huu zH2<Z4EbtvE9+4hIoqy;FILGe_!zU&Xz--UNN87B?yrRP%ZB$)O{= zF_37Kb)O1hlG#?)Q6q)EtDm;5gFedXN;F;A0E+*zx=$Jy5;BMKsz>F3q9D~XAukRgvgeOq;kta*uj|%VF+261;kp16e`d$Etp1FHikK`Q0cmt zMtaF=m#mFqj>+cK&~il$M2u=MnaDqM9E>nJpUj_RZU!cr^va9}3Z@H0{$vzSG({Fe z8ammWPqCy-U^TF+5S}ez4TyEZcW@Mv*(*zeLxKv>k_yN%!&;F^aK07>H5RDPU`Vr; zU!DeIYvYr@j7 z39w4*mU|lo(?! zp3+?C3<`{E0$4VCs5gq@o2bo~E|zuj3qOe0bM;H30%3A}5KW}}x|9`yZQAPr%Pa)# z5BH|sL<$ot8=ue}+<5Bv)4&b#xNB`!> zQXRD}Di-6f_FY`c!VDW(X_Cj#5sydw|G3b?(dLRSM6}9(XSxc4=VI@_41Frx+lM%Q zO4YCg#wwocmh|IDI!OQ#xX3<#qlwWZf1Gb4X(kaLDR?o5pX&sFy3b! z5bGgWkSVh0Grya%WTT34)s5R-`F8~M`s8}PKFL?Ex^a<+?^iIgtHBv$6)hmtQRJ3= zfs;k6qeXd&lv3{S1a@s#&yh3$W(c#h5+{^jrP-pSW@Z~}6iPNXN^BLYtC4m$)v^Pm zx^Th=T^}FbkJGyr7cPgw<8S{@K-&J8T9a7R6r-jjYE3sUZqe{orceGMrMk^aZQg77 z88`%79_?mG{J{lP7|=bCr_>mCL2Rttd$eifyUpl+#)!Z%F?LicP0 zlzP>SBbin7pO6Oqg;TTmE?RJ>;!E6T1FPCvLdLqUNK&=9(1?dJ_pvU8t9`8?>ui`)9EOT^; zh`dw2t>C5(e3r;?2hbJ+uYxKjY;M(LM#@nAzi_EzV26Q+8?N1hPJqs!X znOtx5Ushj`MoVJ|0;0t}$90fLO=?LIHx<(^oILE;x#n~id3V$mj%8D#5zb=bZilEx zc7Eo4WMfX9W4N)KHp`Y_RTSl)Vyg*#4&p#w#}ob;p{4yBf>i+dRNMX_8?6Xu z+0ZwtBvd&v!4`{JcgbR_WANcwFPzRPoT@PS9qoU=9dQ>d<;Q0@pVZRod)hSrHKG*V ztA5jb%XF^GB1}^&>p+W!q>dwrKXSQ8TN}(e0ZAHJXJX7hj^!lsXRE04sXW=gAl8J# zAbXztD<6$#&=HeqG^hOcqnRVNZIQgQ?EmyGXamGg0ER>*?pKql^&8*#EAX9WV-p>` zR?wJh;;AM@!m5+NoLjrVOr%QlEOwd`_$RS7J6Cg>NHL$%>k#fR#6v7y$o#bKx{m|>_zVIS(^ zzM(D>yDgGY(T3I3F+eIYmog!4U7z*!YA-w@lrN%o&HEAbeOf3&87*UWpZRE!& zDEkAw#r*%tIUEJE^Y!VzufQcCA|c^m{6T1WRC;8J8;A^xvZEeT{{MKj zZEI8zPK&GZGa*|Rz7EzysMl8p?1(acnN`ZxM5MKGuCr?m6b^5+Gbj5aEf*ctbX5#` zkDD+CGS^U|_NTNOfezNS$73nvwlK4b^LK6ZjyM|;3Ux`XfnKyadV74NJI2*;t;Z&0 z3s}eXkyg06wJ=Kr!ILq4FATRh(U+wk>wcQSQm8r7lL{!vp92L$)0arZEZP?G2cf9-ia#J!VpT(e>q}va`}@Qa`#P}*{M!PB zH21ZH?3|H}O)N#qo|z3yjAw%r%d*bIS=pkA<>~?pzbNgZ=j@*7IdR3emcH`bbJ1a=)^RC7DN>2MM)qsRbUy08&<1o|N$z_g z>jD4y2tTp?z=*yN&oS}6RzLPe0#`@%g5KOjwJ$IA&d)9jHB=eV} z*eCUOJP_WQf$)|F!fUTby(E8hee$&avITscR?$e4Vg^ul+Y1Qk%AN*VGeunF*Hagz zm}eaCa%<@etYj7$!8wY5rIpfxZE0%yg%KUyJSgl&(D$?6$cTanGHc}s`xRohpsO#C zZ3oRAO9!zPS{!TIvGtdKQIx+l|Bn8)pD8uSE2i^r{;{$aw?A!+JSeHB-C6#ib})Iz zzjF#N%>-V$g#%kk9=|u-xV&uw-d`QP+RP{>bWmkt8-VE|+OaX1a0gEMJInLf!|F`U zn2Wm%>wX`ZJZ(f8MJO=#@qK$w3^+(?MZ-4sHU->W5BXrf6*0(?V;{Wlspa15U zK79Ej4{wu+)pq+Iu=dB4nA5)YP&WS;O}Bs3MhadpV#7fv)@S?Q>1+El`j;$=pciON z1#KIrKCJC>-;ca=(+KSw)v2wEtks+?M*E{`PPm%qbD%)1qth!WMz{6gt4!f?Vzqa( zqo1(3Vrs2DCRu7~EG1K|-)3{FOEbs~pJY%F$vVL5m_^k|&W9lra%)|wg5&b4XF zIhn2b3N6B!Sct)tt_kvlJa~-r!6S0hzLK=@RXl!wDaFO4tV6s zR#qHk^r|DwWHv2(koJ3$hCcJqybWRK(sum&Xz2fY9u1vhK=W1qbR((t(D_V+>%8Mr zbX8+BEb_t+2X9O4xI%I^v^pYopH^PXB9V^Y0`75(rd){;lf6Q0LwDLR?$BWV4n-WL zRHHE3aZ@L>$2p|6mkn;z6&?LJZNi&RM)N z$u3PNVSIiqy)@1IS6jzv_N`%~RxYuexOgsz}0};$Cm^r^eE4C9|U7|#< zxWaHdXU@P%AEC@UXFXKSGiMdR9yUA?xb{Rm8Hv=G1cuSz3MaS5gkJP+U2tTfMMKve z6<}vyun5_s!`k6#5nj7Wb%EA^yT>G5&Fd9`tb4$|$z)H3O^~ucfLbckncauE$iOgo z)W$_8u*Tdrh7pAu*Ruv?g#~E)B~Ma_H@us8~4T*2n5;9T8#& zxCx6|u0{MlSprxEuG5_a{L-iM`?(>8%{e#YfpZJO1Y~LR(;avQcQXR6u@YzLK0HO> zQFI`-La7(h<=<%_wEzl7^5YLa^zglhS!YtXg02*(iGj6@A|B5su*l8*PwpcB<|8n! z*19x`6L!W>nJ%lc1|}OL4*pT?>=OY@icgrM=YB#n#5=GwOxgw+^3Vr&IACA{`IB_B zAkw=7#s3ttY$(6&aQ@^mj3ZJohw^u0+2p}6nd%a4Fq&Vh7JR( zH&k}}j^Ag5tE8ne)WIwU3U$M}024o%#;LnIu+T6sZK(u`|L(c8Dx|U_-6h}@Yrn4&G_&H4AzvV1}{3t;`8Q^G7RlrqWfDg_Ocw>IR z=LgY;!fkkK)Q4Aq9hT7mr*3)6D|hg^|DU~g0k-tI>ioXPIp;pky|+(GEvcpMjK6c} z0jW@zm5c{FmP7P)fsBwD8{$x8Dix?oQjps!2gw=@Q<0@BTX+O`1{rKdFg6ypumrfV zco_|Nps{6JAejg(f*3SdfHBI9aZ~}OoWa=n{r_u!uXE2;%R*){WYnd5&iNjDuf6tq z@3q%nOph(L#T6>2!uL&Tsw{X_)d*SKGqj!s0+GAb_Uz%;@9oL_hC+9$63|B~BY293 z|MM(+W3_WTmxXo>N<}<2K^eB#_Gud3rp4`RkLfP=uzj}YTYMVnF8m}C5vd5tTYN$; z(BT$i0IgJB6DN?(bDDX)^|gscq$)^0+C42h@s->73MQgND2_*vP8g9O>L)T%a&P3$ zGm9*KrQRqxWyY%x35hJ{P`F38pa)3CbhO2bldBi(nSw;PI6ekt&bO3+7d3d6fIrj+ zezqET@=gK%Py;-{;b#I~_V+=+9}+!dJqq|k&jEPwdI$>O|7(w(o)edw?-&&34?KuX zH;fC2AGCPJOJ=2;ba+XQ*zE_3x zpbEA!wJ2MyvO!1qpm5ZTj~$t9jp$+mR4nj*9fQ%Xr~(7m?jBqdtL*to!_D$1?mWkp zeQ*7nvRp%=O`=w~RwGzU#H?U%qC^Z~V6hMvW{b_!Pzc|Sv$V>`Iz?*o%SsU1h>7B= zY6pS3A?)38Du2VP?VW(#>~$c#ZSErD4wEVhZ?P@ zrm0Z40rtTRgnEpK^!9wi*Uzg|v7_k$gdgGIiLOXmAJ;^2Q8Jv~5zkCDWDSpLWUTYB z*`Mwf=WCP-pI9IR!ub-#$X_Y#O+8`Yr`lY=j%dZlF|&6UWbG>ON`)$|?dWx2Gxu#& z=g~rSe$&hm+4Ntompjb$c&U7fCKK`#iVG#_GsD`Lour9G>B_(<5C|aIN-j015YVq5%#g1{oIUSdk>r6Qh zo?zkn)~mHL2qH_b9+6**;hN-zc25?js(T~D6|t;gPXXyX)&nxY=DTQX2h{q1aCqJ^ z=4g#@?;5mq0kPgBhfF*dRFj3$xge|ad6N4(^CI1Ggd_SW2v!4ILsTb(O!^j4fnS-o z#1|F!10&ekA}UM@**BmD9S__h1yWmkLcf zRu~wOnk?^eNc;Oons?t6J)u-$R=J3%5vJ<5IndSQEez*FTl1N)pxT15*^uKk++nBE ziD_i$#;O~^dl~N{u0|~dbTn_NNADjO1)A{sul|f*oyDu$Te1LDWEDOY4D5Cp zc!Lbs3vO&g`1xCRcP2%i=j&s~-`DG3;!07D;Fk6JK7C)CigPqxmh_}`w5&hqkjq<# zh1NW+0U`v^D_ac^`RoJ2?pFgCzD!XonXvxTZ1zE21*egQM=BVw z6hGR5-ZfRT-x4iu?*tWi?(}kVKGgv)ljsHN@Hb>6iFTYIZUuM}v87CuaGY79lb`tx z74QSZ2Z?AvzglM2okT5)mvePMDcixN%mxwe#tZEeN~|F-&me?=0ccQQr6OAeH#i2Q^wFS+2`@<5=adV$&5GY?9n(M>T(%jLO=4P!NDLr8*-{6v2 zs{UI)ZRC~-xjTw9d=R4%v#b6XpDa>}jF?nKwK)91M7wPXjCHNp-|-tXO@0hXk!W^l z(qKeWqiH`D7EJ#9-lET@4~fG+H9%_#AUmJUZPC@g_w7--O?7hJjOC~n8Z5Z4-X?Gd zft2;<{6Z4bJwRd19w6xkAr`FKC9-J+6`cH>1(p3R3o1HjkO81WM9GGdp)0*?HJ8mk zEQ}}4uq@`L2e$X?VvA;ASo7KJBc7cRQ@mb(RHpyZWZ&jj8sw3Hrj}sJB)`>0nx-;! z@}2!o(i$+xEz<4J50E=G{a0JA@N6CJ*o>1@s=r(x?S+FAi5j_%j{U&<8oal*-!e7QUp zrL|L7l%l?Le-_o*?9m-rSOK!By98OX%@A(J^xDbTL<2EPIcq@xLzltK6|Kg}QLGM* zVQ_e2aJoVm?NWUBkn^k&#Y_b~Z|ToEEUK;yD}~DXAf-fL?k4C4cRha%jP_3fVU4l5 zo}jS!OgClwDqY+KZQ38wwGF}Rkj9Bhq%ui9Hi)@kpm}+felL`6x5(wx5E%4kST1WV zeSs%Ms>fMYE%1kAOpth_>;aP?*{-T6<0t8B3Z;b4^V0^tQH2mu)s(>RDvC`;@|j8MPCg}DRy zCU;QVI5_qq;H&j1d&3^|hL0=iN6eBR71d@__M_$TmN+^Tp)O|io*q}bu_ijb(EQ^+ zeR}-nw9PDmgdo&6bc;T=*lE0oZD!iKs zF$7jO^VzRyBIe+^&CaOu>HjmzcbZL9y?yf}jBJIv;qV|KIIXq>^4ArTP{=kGTC%zE zgZx<|&a}0_kcYNJ#2|*)5O@I;`FT7-UxRRL(PbB0Ka%K*fH;FD-1B_cto+H4G%Af84D51?4JYfj|_ zoMa&tpasw)h%oXbMZjLmz034pvR$lA3IN(eGU@bC{e2%e3lkIJB5*bxFT@wVAl(lB1FpJ$i)}Ys~Q~A+)k8iZ35EnpKf|(4+1T*w)$90BlAup^Vf<`nwiAkrA*$lzvvMAs#F~*9{3t>78_7ypfa_KyZwWa-I1Not^e>8B=C3$b~)E zH7Gyp{r0*T|3H;yB6i_tFU)te>x_P-2?~%Ld4)NRewWNsbfL-?GZ|Q7NIeDHJR3w- zFNZ;~#gvVm67e0NUSmmDIoY%k(|}Ckk+4(7=zgpSv^1SL%9!?6xP?%>VCY-KhZ7w8 z$mCN!aagMUU#Za@yI+|fZYrjVVy8zt?BI?Bb(UU*R>rm!783d6r!BO!1UG8YKd)!$c9qu<-Ez20rkzIM6Zk_MW}ehIBnpDi@iRo@nZXtfFs14Z z4w%uo{(gvwgHpJ^oaqD+xwUx#oD<8z)QbY+uB&&BPJ*N)wB3iG9(H5YeDOBY_q+hm zr|w1FMmf~Fq(jBu|DWDSKZnUc<-+6O4<@}a%dlp@A!#;!?^-@>bSRd?D1@A5*{rmX z4w@|{yOjg3QwGu7+(U5^egwO04K4bSqr_15#aS(RY^qAQ0(es936re9!5%yqd$!;`+0y#Zo*)3_ zduy%=52YrO|yQoYGz>!+Q&zF0pj(V6)V?n=Cpi`nakK5!O?Gc6bd zs_Wa_JW4@SGav$k#SP^^uol{D)=M%VAQiUInw}DP0GeyEGiyXgT&qh=1FmYdBd$4| z9tB(Cg;X6wliP2>v)zAvPE2b@ZIA#%J_K17?8s(ZI`}3ia0$7nt3a@A2Fxs@Dii{H zlGNKq5O{PAVQWtK5P_~WW8z9exO|YIy_6=f6v_<{Xj#S~IhtgUgV8riD+9s!)W$b4yV0#&Zel^>dlzc0?T3vww2i9;-a1pcjKCD`x{dB^WkXejjvSUm-T^8&K*VtI|(NtMyyPF+-M;Rx&hp zaDcXv-5%c@`$={yQ}ei@KyM@MS+dQ5t!%$icB-0 zoE6h=f(lsG=JX#7>clkc%)Vvt1Qsn^vJftJJe-6}Y$L5Q2^VtcRtOi~vv3*kKr0c; za4&AZm-d+Q#=Y1Vi18^_)Bk~xa-vM6mb4mw2DP2Udb8hwAmUbJfZ{nwqBDagivwf9 z-#Ca^k3*he^(zD_;N)h_enGUvENagc!90G&8H~&fNNua~sIXNuF#WMFQrW2GvHlIP zct1HI5{6vHna=sRSxdKzLKQ_h2f5VLBS53p9fjHyv6V$kV2#_F6efunehpQ)Y9t1z z3@6tU^gb*IAeGEiJVbY*5~(_i>aFN57AA-p&{PyLwe(ll%|E{gRH_t*Zl<%nKY@H> zFGABb(NMZD=&2pG2%M+XaIssek&{yM0^)T}D&`r(AFrk=oPgO>b}|n zq>5D<=K_kJ-Xstf)Z85Fmpjmkf`7RWc;_-ePc?;eOGZy7GeB6b0=1gl(JseOF&l6j z0HeCV4-oGw3M#}lQ`#R_Ri)UdGj{I*UQY_`ELSATXe^(8D5!NMgO~yO}Z7 zga-i*(R^X!K;TE|)B4s_HhMaJ-w0U`ior!8vbJ2*2!o`9wHP_0Zo=5ihiV*iv1KhS z_YlIU6KgS=D9Y+(pN6&QBoRDe7+5QumU4-=ymSNr=Bc738S#{Vxli#FLRjJ;z0VK? zAS@p|r4hN8Ai@Nxc&Y(T*(@~C6d>OBBHRwZ;wq6~IzyqGjvxhO5D$qI*nR>|)MQHv zOGhZ!)ml120ZjBrA-oNdf+v5Ae!bPtKtl?&4^8ajQ4PD{Q66nD(3>H~Ew)T0f?E!4 zTHMD&(PC3rw{5Y(>7nWL`%24a6kX7bX{SXOnV%t~!6Bkf(l?Gcf@qE`ia3!YZ=-#| zgh)lvy@|uiYu%Y11zUnjJO~0?`J&KKAM!y&Dn}L=tmb}tsWN3ewZXD9WmKo1y`p~pS)SdD3P3JU< zW*>hp2GMkA4wcCqDqC~N_QxBNIi$r7=BPD?;E29CRCeaj*AJ|$JT;rP;93MWix$>v zi7#09VPe_ii6{oQZZsnD-J?r!z$@WnHO5Le zEhy6x35p-5&^nu%0w@~^SHl}TQouD(l?{_60O6)k4-U->K)~$-h?~`J`-j-*E`~!O zf5p=f6kCwnvr5x2zD^KW1%sRvZSZjaD2B^jdzp}Bw}6@Og(LzTaSQVIG=rIbB1gs4 zgeRCSa3`FrWL&NtCjdob<83;Oe=?)A`YpBvzk$TDgW9kph->X?OEe8BEl~)!4PZ{e zZp*gPiNhF@2)uBLK`8YB;gHY%ZH!1@>7ZB*daiJAi^Bt(?0RMfvgzA3^(hOs3&3hn zD>3=U>Q_+FC$F2FR6kPT5H57peCrBmHgEb?S+m3kDd%xa$5lzov6TbU^eMFjFe7|n zC5!l*YS7Sj$7}Cnr~bj<;V?@^H=`FWAj=L3bOafB>p3eJ3oH~9FP@HJ2gXUjSOO#e z4`Iv?hB3?-qC-Yh%zXiMIbw%$C7j0E=#UP)rqa@Zo|Zq?oAT0?{9|fChj|Z*3c@tR z84wo-VRe8vh*vvfoOi$n0(T4H)~;mH%J?RmMp&^-#Mw;CMI*|UbLR!*U_?bzXdbHK zW#N?%0szHT^^rv0DeseMXEPO?GqF5UNxBjSlBm(fibN$frOwwl*3Bu)BieX}=AX%? zTdwL;9iXc9f`4F6&<>OV`w4~xG^a^Kj49=tSjLw?yC6G{5wgyZ*dDmyQ$<1Z>6d29 zcU$J6Hwf`l0%ZD+#qAv*LJRci3nneYr~Qm!lX2N=DDI3N#w z0czx(&t1UMn}jMH0<>RDDSMd)F7|6VsN)ggs$&z#CzC$fZ)w~vA_my$KN3^+mx=c) zMlG0=1#y6449mbqM}ulxEq%o(6JeiTd|e_Hz12!$OR`21BeL4*>$PdgyDV{~9_gf& zxchYk+>A3vFCE>;Y$u9(qP zHjd*Q28D2*KDCBl70MmR8j%Tk2@O5<-Uz+`zWEhhO~0!s%E7wZBs3Jmpjga2RMYqj zNyxV>HdJF6v~S$ID5c%^IG6hLwPCChNP|wbp_4_dlp7MR1Idur`8r$YY^$(&6uHp+ zQ#A@zNe3r8*NwrAo@G}P?m(+UrytBAmrg|{LY&{NPjjaN6apJQY&^1{vv)A9oU}C_~i-=K3AZbPzpm9d#Z%Aj0D?X$G!--@V z8b|2FxZNAXn~HvMr+zgetYxtV%O4sy#+0NjsZpXADpktUU#tJE7V9v)0M2F@Nm0s? za|s#B>vU&WEc8-T(|HNE`4xqA)@rknkGWVQe@<5~<<|Y+#o81AQq( zsT|x*EjVpa8xxVV|8cTp`j4wG1iapvyWGaKyeiT+UDm^B+^)a-E%!Z|z4mmqol-j+ zeaXWvel$_lF1~osVQ&=@s){0V`Ar?ln)E>O+)o>PtCev^6G6v!d z4lsR{>OlIHG;+gLwyDO1jr(u`be%g?Mxf++~vRvu?PRF@|{bIJpEUW^L*6&=zp&3 z#~M?fJ1Gx>B}~tLXf&bY7^unF_eyGWJ~CpE%oWPt)R_*J0uS|(n@(nFk)K3%E{tw+ zR#Cb}wFa&sag=G4uAS#=TZ3zdeQh?l#+i8D6+kfSTM^F-obplq7fw}D(VY6v{ngK~ z_Q{_0T}I$UCeB66w_cnvQ}thRg}v$k(SzU!Q&GM!KXPTZu9HzSDkA65Mg7E+j4NZq zbMMkqoX3}W>tOrTCwyt};uF54l<4-U2YdYh>a6h|K zxZak=0dh_N6slF|c!27QePM{||IF8hs8%+=c6IazPw5b@4N-jw{alFgb}m%&%nDRr z*rECbZoG%;zZIzdTcCPcZ(^`p$jI9!>u|1A+qAW(#m$4ljjBk<2Eg)zp|pnt=1~cW zvTo9%roXG?e4gPsHm+y&PrRM{LM+RoUcbQ~#f>a4{|YQwPjBS@lm%IvoMk=YoCKO0 zJkZ=Lp5dNMjf37h@ZO-C1^&s^FnDo|Q`-c?qNoie?tsKfKzzYXb7*6nQj*L11yW)v z=1Za%%2Aey7O|Z8&?HVtXwtGuL`l+uIO%;Cn9??dtVHB-`_Uf<) z{@4BumxYE=xoZqId0E;z@d)}}?WV!Gnx9;wx49B5CCWu)KlXm1(MX^V-K;-#mP^fM zPAgox5>5b1b_V<<^DOL6T8T6Tn!wi`_O8|MRl|x#djosl&kYCmbN<~Q7_hYid%^=N z_6_VYpUs>G_U88u2lg0i(9g@j)VoZCNT>968S!|=T*=C6G7K)y{^;jDsED~>K?LD( zV6Uf(Q!S`$PRaYM{-hohDeFv!OlZ-w^=A$4npwj|*(S-))b5pk-iz&~^h z5Xv{jHEn?4V3!a5l7R4gaE)DfXous65T(_{53N)gZM zx86qM{MN#F<6VAFZoBAYMhc|Ruj8Rqfgk49FTv$Vgl*NLcj6c(dVQwJ3q~pp%@yaH zN|t4H+J&wk`yP^PN2o*mg%I%GV&(3}FxP-+6z~z)&==ZUU{j_u&~#hkF{?kU8d&vP z1zT0J7FNRxWX105Uh}~73!uU%<+fkn!nFgM>$C3`IaUixQpU z)LxlVoLmgC#RRT~g(mnnOE1wbfQMqKpebqpagSQH$1H*-6=3p9fsmv1BPP|cPp4~0 z^_kzp>5Nyu>-C!WbG#Z454!yH-m3Rvb=-JV2na<0%Jc;u@o#SyU@a8st|(Q5oU59O zRl=pzA|LG@j|Qux6G%8APT)0K)5{BmDG)l|_kxT;ow;fmeCZ7@Xen)Y5pzyr!wU}h zjXJ)^kCpntv)#Eplc;A!w9PwR22aHnm!h}D1#13G(VA(wLX&AqEf zB5u{6nPvt*efJ7|V?1pcKKmS^xwm za%<)gmYC7K3?5-`)ePD;jVip%V5mufry1mft?dZ*9-!Jlq9#!Ye}iVQ<)yPfvSJcP zO|gCOpy@=(wA1;Ftlc)diba2ZG{`?FPC#aRMye5utK-GT@5>Wd>qjV*YZ;^ElBV?zg*!yvtm?TS$k-+G6F4@!@ zNjW7s?THU-w*OB33Z60>t4o-#^AKP;!0K;4T&G{5oZZ`cLKP|b z)>bH|{-$L3daVlOSXlCp2`ud&v}*S#>5h>9!M8`^yjb}@s2yO?f&|-3=}j4`&_98b^8PBO;f%Nc2a}t7yN@o z_F5>D^@68#)RXRGreQTW{xBhez}7mts@YTb8lK|gI*#n{UZi@(&bo<2>A82-;p4Hh z4r@v4GEC#RW{W1{v4fVnSJ1Acdv2a{e_gcVH8^BFGZ-U~`AHMm^3FO&&icd)*b`S{ ze8phv%~pyd_XoW9GwZ8LjCA}WA)x#mr0Lm=?Ig6R4RB)sfeo1?-C;AH3~3}aOGlC# zM5YnDoug)MwF4#}ZT5q=?d>tIl1i+(FzaONDr!#fov%l{2D;cBM98ZR_06)Q50)yc z{$1`sRBY~gxvRi;FxhtLpa5VkrX2(arkCK@^sEVv#YR+GU_V@{w9piQFf=p;#K~~; z`jNzucDFJ$8-_`>>9dzZHH2Rj@_-yb-;Q<|B1kg<#Q$DD8{mtJTh-K?3B&hT2{S06 zeuz=F*x8M8D#zy>JIx+H76**<4VGsQVWWFc0+vBpJd(f0s*xom5WAQID_?O5T*9|p zb}B3Bp#`H}T}-G^?Fank zHfR9}ERBjMRHS%|;cH1r*Xp}IAn~7Sg7MrYuQGu4;dSGRhq+eY*MFEnLjZ6T!3LNA zXRnHu&?sEvp^tj|FjY%p9EEAd?LJJziwZ?(AEs$owIoc+vG5jKFsY3aJ29mPsehd& z9Aj{)mIT9RR1&g1E&w{}wBx}*IV&f$V+M#&NDp>U9g4-FK0C1JBh+uS?9ji5(!6Q^ljaVWRK~CeawPy z_QMi}OpJ>XLBCpY))KPwf)GO)vl#v7KTCYX}BQ=_{8Mlpup8 zj?#v2RTq+=q|XVCpy5|&hUkVkGLr3CY$Cu7Bj7sV;>_M*LCyTh2jP3{<3u4tkxf=w z%rU7viq`n3CFZ@CVEq?)zHzGiN30gcQy#%{`;zLNT`u`-=_QMik@7BC? zonzxBJt`@iK@rT?m#vQ@R$dxKmvJOfN%=x9c?8RHCrV9IYLP>5X#;`!w7?4Jr$02# zH=98bnjOVu!Qpxa#Z?AL;3EcpV&=*wJ(ySJkW7Cta=AqIqtvJ6Izea%-yuE-h(OWYNjwk` zldE$m5JOIX3gXula$1xOiO%1=1_VJ!*lC17l|>n%NumwA3#3Yn38o~XY|}!a+6bE3 zSFtxtlLc6BWt-%bjkb81YCd8}(B#Qi&ezy9P7@;TO<|pNQplNpThNeq*W4h$5G?{s z)N1%z(JOf(B_rvX=vj%V6jcf)c`O=^1vrPl3mg}l~_AYa&Ww3iPC8$Cz zHv!vw7Ua!p)(84;`ri!_Nb?gG`zR#WNf0sOo{9RJQVFJ;tRs52*{RrWf5-IAWjVUF z;DoqjTOfc3F+*}+&=3%CR%?kY4E+3mabkCHfL72wJi{_M@66FR;k;h4!4OO5U4< z4ou;#t9nZtWNT3SZL@d#mF8g|t|P7Mhe_8!i+XxoQv>L61UR8tB8Lk6Y$jviMJIFK zoFjBB*ykk}9EJ1=$tf$ejHJwR%7t(-T}gE+!9T6u|LU*1?& zAlzVQJ}jjiIBA5FvUsP{H*aEeB?>u93?%93kWzYG^zFGfuzc0pi>UNF#F;SVS8$*( zyrqMiY=(f$muSL9)boY*1N~aVYG*)jBQ##3L!S6{S#bray$qhE9HvcIN{%d0b3Apa zgvv{RL^hW$yome~l8?jojbgU6%spM4i(pYmST>D9LJ>i!gt}=Xw?cAU(s5_xDcihI zU%6gFJ<$@~NPUtLsX-|6^pXm}j6xC+g5ZjwN@AF6eU+34cak3=dX9l6C3FQ85gVhq z+;VLo+h|6==laqi`IwFrT}R0OCHj@abTbITaexg4 zPU&GOcP&$f3dL822Kxe391I0QlbjVIStnyAiBB%kC5g1|m9V86;WRwU(o4;6`*|vi ze_mbYsGvZJ>jw7ci=!|EJC2f&D3G98eZPbGT{LHj%Sgvqo;y}4IvwbVInqqbDxQ-R zl+m81la7^!BE1^LkZAvGwj0WK`U^$3UV_pbC!IV-CrIwYIJ>j^%sE*19Ec@@_~-(o z7V1D5<~)SsJNvPCM9Sqj+6?wP%7<2tnMGUI3K1tcX8(+-kQ}pN4Zns+Y7OfM)2-Qu z4{xyZ;UN?NgJMQ{$%cI6!(&M?T(8d`ukfnEu*QF}1Mh-N9$8~mGm2-b#e`mAn4#jx zsPH&GRxZbk}R1Aj29Fo+g88?U($va0?s|5=pQmXoSLCY4Yg*{?gA*& z@A~?36EkPjD6uCgtul!zli&~8N)53iN`KAVly-h?EHt3W>(r?j`O7 zmri+@I2y_8zE|m#B_f&P+PPdCy_%x7lu46G&&O$Ty*>y&@CK$UanTIo;KN-K#{?;N zeDG}NjkVB@lcEAzQH7u#YdLHbc|$g-b)4Pv3hh|XVw?4#RaMLAGN8R{8CqnN&o?YF zPYR}MjRw}^jWsT1vP^Y(E#{!}R@XX8;fw9z*IsINw+V<2m9Jjsn1kYSkpgaPBDeplp+8M9}#BRW0=;X|-4e24;|sua84=gI+KULDGu5^ zGoRra9ImD)zY)NU=UdirhpSEegPW@jc?q*yZeARgk8oH%0=LvD?yY$U!ozu`eEhUJ ze6RGG{Xg-KG|_IgBVF10!l5WP6^A^egJzjeHl(nz!$e^26xrCfZMu1Vr=0LPYnBu<-kJD1QaC*V-b-XFn-SbCZ*s%Ig9D-vE=$k%K zLb|$kSN~ckrWq~+=^-D_IL1r88)J&w>kaa?cg*8w(mj5irz&JJ;)K{koQc@|GI9H; zQP4EIziIG2CAru%a9@dv}+uXT2d+ zG?A@&5gH#MNQg1<3eGybQiSJc5+8VvV42}|GnJ+(@1_a)-8wsZ_Ax1JJ|8btnL>{Q(N(AtSRJ0~(pj(pUS-ut3Z06>TWoinK63v~y(xJtMWD5B}dsR)Rpf z0}Tcp>+1tKE8xHfw_RG?{kw?M#B`Lcy-Pn|Ts|5bt1m5nmV_g{b9-(i-s*G3!2;A$n88upQb|4M_)zAl(p3W6%(_s?O06FG^Sg z0hpW4?$zTSv)CF`dIBFWj~OXE+zgbLjK&|)3qS*)$Z|(>_=D=)G=4&v|gg4<=x=8Ma_^?mcD*?Wq{gweQ9X75RsP1arR znEMGVoNScCG<`Zt#3edQB-f*}`#L&%{0pG7#}b|0^PlMKKNOvjs=N27MZ05UB#L{Cfn@nuBy#0BEz5|uk!7dgroFSszCFo4?%Cj{LCF!xD#-vr z(TKIXdSdNPzSnmmiZ(i#by;~Qd`D|C8tOf6%J_wqLQcuLmoU(PLI8b5(KIQBZJXTO z-=w{PBGrzTsof|EX%MXP<|q9k^6n6D^uH|f?&w6`?SK6u52%JBZ!hdo(alpPMWL)G z^1iJjMOlCd>gyU(L=NHC1dY zHx=Rct(1;$E52aqcn9qzEqqt;?6vS)im={pXU-wWq=l_KHEf2;ygzp>Y<1pfVdAaN zO$!47y6$hP7JhP-bo`c%Br!KcSpQQ)k{we&p6EPa z_M1<WLn<4@F&t`gR-+BY$;9!|_1y@`UjbCHvrQ&(S`xu-;g0A7B>P;AniAW&7aqnE2%Or11>w14)FTeLyG# z6T*JXvVG8_U=WE?N4=b`^iGBoGo@|KO17h;(-9W111gwV7-n|*Ouc87R$7#5FYTc#4uyY6 zJaG$K5MyI@(?SJ*$bG-@214|Vsl4tqKcF&Yg5AI)Tul!sSPRMM5iC=Am>f){Fe}M_ z$?s-?$E-z0!DF%=0u17^U6iGDZv(6j$Y2mA@bwj~bnNi? z^YtB`#n%rdC-&YHFkjUYDN73w1DASQ?fnWwk*tq6ss7h6TfZ3ry_>am7rTRG$6MK+pHlf;8#V1>p?7vpsS1v>U;! zcb8160x!+?2n7KkRt*KCWDN0ft^Qm?xhLyf0VbwoRV^mmzeez-*CxGGw?$ZTnaE+m z;8cG%jc0brDxgK`j8OT?>>_MhZ;}nV?DHr6J7y}Ax zZ65Qu*|WxWvvi$Fzei7lDPu>vp^yFT+1u5&P;1Qv`Z#FHTo55L$^zL05u`RUWXhrTe-qq&M}gB=XeL*wdjt8VS>QNNK9}e4QC+7TBfIVr2wY zloINA_D)L_>~}s-X74bkzA$^c?fD+3OOaPwSLQ#fPoQ{Tcv8IbL`kZu19X@gqD&rW zKt~i>Bx3x8AblYXT$!EGGramfwkN$eqJ2Zszi73}f3!mDm!!6#nINTA5 zl-16)`qL=VC9 zqehhWpjqe`vf>!sMk(!+x6hjCnq?c9?yq~<1{@FL6+NaSH!_&67p^$E&vI)sA2kJ1 z^PRjMGM(%iY1B@)S?E9GL{J#?6kbX6_Zm{DN9XxGNdT5ke@aW!IjVAS!YUUrXw%x@eiKuve?qK zrv}%;<*RST(uOr9X7v|~wudDSxAWE8m#)eyxU~4Q9!cr9)^Ds62QA#~tM~Mt6_mJ`C(QZmP!nWK$|sFEX{=Egd16G@dD!tdi~R6dSs ztCLb^(`mrAMY7t(D>DsM+479B*~K7Popo%e+xiuzG;swY7#$U{uGFTZYOA(-YI7w% zw%%<>q!?H;LpglX?8e}$7U&>TfKXPv{;Vg>MHVXCdVxoy@BURIxNPDDJgH#GKR!bR zJ9{7XCTy@zNh|XwK$03>ORbiw;^oWkZ!)v+)2RCwe-!gqZ#U1TCj2a2F@uhwO9wLK z>KNn&E0rwV$C4M%}PqZpNFB$30XSi$DC`h%_FdR)reqB-G54dXne zZ%Q!)X6045Uu27@I(4tT%%o&{Go~sfD=Tg7TK!SO!kP<+?G(9o>U1-+xq4Cm|w=# z%&-AGzBI#dmu5Jnnm?a2EQpk_?HQJdk1s1&j<#Zg1U}PnlW)$=rDT4twE24p!GYcm z=@a4DNhtf;w-|y)dhP1~IG87VM{`Fj5T2=h#)32wqlzwD2{5K_(aIION$mge(iW=c zOR6l%m+7;RFJc{-?ppnU!o5#bTb0pi4ePLNKC#XQtb?3F=xb9hTX^+>=n{ib)?KWF z&eMljQjsHgl0Rx#j}gx#a)hBTK!b%b`y}U_le>zWUeuR!<5hBQ+;TzltY=^|p4~6! zUPko}`8<|$FXQ7yy@f(i-pdwKj>^@ym%s(ulw&!^z}X8eE?}q$Lm}s;O(>`@=f*4K zoROBWB{U^D$7UdcUFL$9A?K!&1syIrncs{r$^0hb6>Lt#Yov&m2A~llFrImYR;&TVRj*2u2vK#?ZnAHl$+SOE+8GCpv|FBKh_9JvOS@$( zAeV)O?D@w+Bkha@Njsf}04y&WN;_tHnidSWc}{8fvR2x?C{&Cj4pg+NeM`Gx`{$H) ztJ}9U-3PyojbZ!kwmAtKQ)uTI8vm=?_v|&6kEBE^P!a1VG*AK&RMB{8c7=rUWyR$j z#VD$0)g=kq|K@W}4=P^akw5%m-0vmLlt@y0$P;3Qe zz^3MTec+C0Q^Ul@huY3*+0C~FL$KU!yDN7e>zD2&i83rY-bedLu;}30CP#j-SAbJ9 z+2(zf#xBvT6 z=~ccP8@**l%D@34bcsfkYeaZdI(b5k#BsqiqgSLl5fAIr$JV>LCf#N_IchK+O^&!vQziPYDznsTf{g3L$hy8aNKEB~kjl@-aT&q8g z^=k{90CpcNP-45+<7Xp)&_Ke0D2M1Gc*LF#^OqJ`gw<*ie^%MOF zan&!1``ja9k-H$OqEnGPPN*GJo@8L!NT;b_J|l`Ceuxc^?0ckCu6FMouQpJ&*yhcA zd*xXQIN^I;z%y*kG{d6`i2C!4ugj@Y=?Hp*qgKo~4TEn~je9;0y^O*Nr^2*23WqT= z#vyfnwdv%x)dRD}fZX$gF@R0bU;tCU!$8qs0E#*Q19sszP{utBI94GAou<|pfaA}B z0sC0{Xr6|lcyVIvIbAoO;ImH}pS}N`fp88@QdHeG&?fGV%B1d8XEuA6Yu{|<0k(l| zRR{%d0~J>B;8m-ErnP-F?Jz|!9AQ^oQh-v$``T@T3TkadyE?K&0;VnA^7|XB{P>tZ zIq(=!$$@W=^lb`Gp?Y92nZS~R-u}DKpJxCH2`t9V!Y*&L4e?F&%Vm-|;0|Hxv$cX5 zp4vxK$lI57hd;{4`W$6x`&e}k_~x=Z6#^6Vl#Gq}%R7@;Ao3y~%p;Ghg?P~;DTgl> z@nW@xSBvqlvV3W9j3x4o^&#Wr_%VF%#-1doME8EWjSL)Luoo->HSC9LH-xDMlqCuu z-Vg?GVp!ENO6eE5`8N0d3#w~1lGIr$_kW?D1VrXUxb1g~o@%w*jcV;V_oZ+ka8;74>pEEf#i;R@1R(QV+k z*Jrk`&%TH|s83nDZB&7y9{Obgo1lW{+cC*hLapNxYi8~fXH+^9?AIzeD6OXeLq;== z=y;hM>^4<^R-zemvyo9Es*q7oEb{vv#~)3-iFV7&N=rgij<&4Hze{4u1ZnxEcgF|6 zTgfZbwl=wtC@v1u!wrnxQ9<%OIZe!3Gt%2v2Ev*`*VE5Vhm~v+#*7~qp#Cc>1vM4_ z_Nxcb9%Pi%1EVQkm~CH~ZR^{~?2yj6Kttlzi@GS4x>9+#)}yD;6VruqWJEGi$hw&P zkYb_+%V1<3?J1Olfv!*vA9SI6lmP*2i-STrQe*o=ImCR7{>8LaVi5?RcS?-1IEg^6 zU>)<<;O7Z>>lEmT<-4ubgRTJSJ=nP z43{FF6#v)-8CoZS#J~q14vGL=pt247^p)6hoegAlAUI*RaW^of2>U1urR9suq3Efi z9t|t?F=e$OZ>vFAQX7*bng!7QaYH!c)2IqWhlk$i?*oT!LAN|~s82&r@u25(=!k&c z(8bIL$Aea?G8#ytt&t&pD&bbBvIc3A5{{V3P3q$dsWwz)Mwb+aJlJJ)@w6~1TCreT zMi}~82uq=(=M!OqsHGL@6xdX-oM=^<1Lcf&5IR~`WlMqb%Uf0Ehzj7hp`(56TU8F* zKc}i(-9B@7psL*0ZL@sU8x{t{l7?Q2D6Q;PQ`*IbKD^Fxxv7p>x3c$ag#QZbf2EL@ zsxgh~&mel`(vpNvEZdJG?=kgQ9a?_|DGw=0%FFUZVq$pm2gB1+-rjI0H!XbIncH8LswjzDJ%U{wPW-y z-KBz9P<~eDv-inPk0{KV?zF7Vw_tUdl74|Sn_YTf{Qc^TkR@gkqZ2_N)xqKMb(Z>x znsX-iBT?hD(8p0Xi!(<2L(9vGW+NydOWs2|-Z*#B$_NoC&Pf0b<|CjkUtCWUD&*-v zlblOfPL8;(sF~t90y0vd@-MvojrfO4O-)tQX# zV2w--f=TQN8Q=oQW*~}gA!M|km4pn{keKj^>*R)zQ51v6h*%OjlaN7H>Lm;IhWaeg zd0S#t?-00#UkNw6GAO<%zb0yLomtCM;Cs9cpD4ade7lXLLa=b#V_r&XN@*8d$?CKH zVulfca+OlnH<`06p)o3SHar83Zr)TC zt{4d|-H3}N<>!?d4MB%?Xn5%UsH=_i(Ft!Z+Nvsqt|>tMC_&{H1&bskAI`W*Kq+?= zJktA`V|y(9&~8`2hR(H6v>Cb=wL}v%g^0icQ7i&;$2^znyfBES0HIG1Fdb|p@`lk` z-9cDFaRDy1g}e({TjFEqyLDtg>S+7>i|!=w?${r#a%J;Ol*rIcuBGItPXY6{;c;p6 zI5k2qmG#CvWAx@lj#}q)(&%BH`R7dgeCWB4FobcSNiw=Bk#VY`><9^XsQ+*$=%6QhivNCpJw zG1Yt(6UNzb@lCTD45DKQjZ>CRSgx^kMJx*O4o#iRvbr>lOQ&#&mOncML3|Gxh3e2U zYYG7+(~^Ei5{90Bp2(&j-B=sln%}ZbzTCH@~>L z8M5BYyAZ>gdh$qmc8_>inA*N2_CJs`Xp`K4SZr z@OMlN>NOF=?A2&t4)CdOt#7F|jzQB8d<2_i_IVYYGd~)T0Oer^{ZQTWivVLxk7HK|JX%foyybPLXmIaa0OBhP5A_b-NlVYE ziu^_D=pr%N1=Yp(vQRCg1pJ^|Vq7gB)*3ylF?=xPQSVJv<14U!k&KN=b-^`&If+vB z7jXiSx><}dHk|LfrBgSztK+-XF+F~mnIcnMQ%CojKa42FlGJ6fhE9{{H;1)jJ_NnjiXtdWi@%*znulj^VqIZUlS zC-cM7Ux%$MlA)5$f;rq5;|HJ4FjD!y<0yt5tq+f?ZS(^zdKde4q^FB5NYg?#0R?wmozcrNP3Ly0_zFpcLp=;Zq`bBI_iV@Aem*-x4&fZsuZOP zt1>;Y^VH^!z(Cc~H$+`hF_m9@x%Sus6TWtG`_;$vW>x4K!yC_jQQXPku*p*doNsKv z(gjNJ%1re)q?yD$&`Md4Vz8K`64koEhi|I}V?aCoF4F&y$=%^aX&4CZH7%lBVvWyK zC5mPvDVmLYfi)D(NQ%bKgh2sak*<@n7L_rejGpmzNaqO}G>)|aqkcuN#h^qo@r|=f zAd?c7rEfdr3fEGE<6ZQJkk?RA&c3U!NqrGU)_YuMlvc`GKbKBojcMJhjG6`EL4K}K zgn-va4;4R@ue3RsDo*_Ww}3)IpXV;%j-TkC;|`;Wu71Gw zrGG4qTp02r?|vlaYXx$I#MWk(y?Xt#Jd9*EdqWZ_l5mWOUy)mF#C0Zl?=X@dWQ$^B zu??vV%qJRgYb#9hT01T?49P|2@Jm)}%MMf_*#~L+2+k3IsXpNv3pc(n`;(ty+*gvQ zZ7E?KLxLXiRK`2%yJW3u`AkeEU(;XIdT6)iaMR9Ohw=o(yab-Cyo!f5c4gHkXQ000 zVY-yP8~H}9KY*jK$|Z=GIXIcIb)5j=QYSluPV5mp`%dEJrB0TZ;s+$ei$;idY>{R~ z%pvKh#8vQ^gYPFSdh&Fhoq3XpnEhI!3aFSjMA~{sb~tkdmDV5hdq1PUB5kmL{bF>i zzPQFEJr=FWO6BIhWE?U#zEd?9{1Szh0xP#;5X|^{(hnf|XH(%Z<1=nIVF73J7rP zex=MSFx&|J>Hjq@Cjg({st1Y$Ygi78Q44J;XzM@MNjwR@Qf4K>Ss5_Ah6T|)O#CMv ze-#F_#zzQB1(FS&b)tYAvE@oromxpWv}QZTwfFt%e63XLsAfqy^o*2s*S=ey=rr7X z*qCCYo3||1lPR%&FFB5!lSS?KR|3d>ND}x>%OBT3`z?Bq2}T00@(g?+S7YTWqma>f z;X#;yqCmps;7ms!yT$`kGZ_5RZ${~~3?iLEBnb}b^;ZaUY7NRQ=p;Lp2TfvF$kf6t z&A=swCX+C!-!CQC9U?E`gn%IqDIH>D<`Oc@w#bAxh;>33_K2anG<8Nm%&bCEo?;hy z7gpB1NpHKLjSbBQ0kC$cz{-viDaQJdJ|u}qbZRo7;5oY$^$aH4kwTd%m6Q;e0^3jY z+u+d+4}}^Zc;yo;EwBd3i0p^BmDRNca#D~$_65IWkxk#ZQ6A}^cC|NZ^*aNynN{y8 z@{pz*X+oNy$U$t&FaHT{9%}wxpa!WUo}Zk|99INPevgzHtEt6A-H5)3gpKE!rbUlH zFAE&wS9nB($+ViR5Z~0cCalb9rt>W>axTm^FHGxizLsaV>j|ZlZkUU#ao!v*+R`-? zM8PXJ%-QzK!{08#;#l2!>&AE(ni@P@>S6AmcVoS`_jJaKYLbXF<`L?a6d;n;R4QEC zUb(z!{sm_Q0bv;UN^yEZ9(ve+I5PJTUli}aQ;}p@(gSrZ1@X?k``Wio!2!HnMP#;wWQD)! z641|k%_6Igz6Og1i|!$bLEWN#rcN{=8vc^k(DtFlS8c&W}JmAmcg$>*e)) z`%)%_Z?D;f6b_4?4p%dMaFFBtyy~dk*&sX#RH~z>5Ak0nkVyKTC97B(E0v?C8{76-6J2B*`DSfPa$li4H5^05WwG|~nb zS!FD13X^GiaWX=W(50Nb(bjqGgUOD?b*5cQYc2+_2*1@>Wll{q2 z+iKFSNLGNY?ZZIBcMNbK+t*WarJJ5QP;`ur=KS5k_vwMdTiZM```-=t&X$9R1|Bqu zoc@_%8l|Uq8Vo(^=g9*V!7xsomhd6?fKsrTP_zxD$fIf8g%y+nQ$1%&nYEOnBRXck zVX(HgHXAr&CbyU7@1HLXiZ_4LZ*Gf6bG)j>`m2On_FjL?H#S>5$6S>4KORgLy-(`j z%&rbZmpKP=Z77qnkKEyHqIV7Ht$D*wq9KW&fmqtsah)M(;Sq^h6s81K1G)U9 zem_6qDKFC`YDa%NFdNtOAlcT+>um>W8(@mm8&j=XbS60+Z-fBDx^5s52s{amwa#4L z1!aoqcXMJ%FK&{D&S>PHz_sK71|26D1CUcHf?AAa86rANQXdjW0!AXKfrw9=9)-E^ zR_YH+$xyoa*QI78v{Fa#mPA~1polCH=6)|fhtNgJN--sQ;KhZu+lmG{ftO+OWx{_$ zFxs$ghU;DsdP6{XA2nW&m5_B93scOf+zohv6v`NX8*>of_N696zkV?esX1<>CNI+& z6w#lOfP!XQwOSR^1)ze4dQT<%>ex{~bQPu#R>S8CD zvcu66ar(IaG3W=05w9pcN!oesRCeksPi3=5UJtP=JhXl)`v!XDn|D#3IraJc4IFJ; zZ7>5(dyuKOlXyq?)zit4{G7-*-z@LNjNRhc&+>o4lS90X(H7HNHQ}MEzp+(Oh7FQ z#nat8om^?nKXjNp!hxKX`DbCNS&7Ohi8}D^-KWWyC6;HjH%znhnRdojzoW0!xV&|tCV6f4n6=>fSdmaaa*`xl0zfCTtp2q4WXpOu zpZ%5}I~+gBBD8U6Na;hikorizN=Rfbt5K~oAW#1fy$^OE2&d~woE-0@p+Y@wBtN$_ z)YvTzW#AOD+7Vi$Kg@nR`p~QdhveTNxkZZBV&hc)jeOs@SDWQv{szaKNjId7?J%2? zf>s3KZX<4-)XZ#)h*$Hr!VNzvF-KMmdH-Lx*6tV+ z9i*O!?vE^-nZR>*)>+!U&W3&uld*>JM%1uj_e8h}f=zpFX|h>K*=N={&UbE5oCCUy znxPA#(C_SDdE7Qt>^ErxyHJ$Y2OGvIpDn&UEzA85oej1r74-bO>e;=)Dtx(qdqZ3@ zbT+_a1JTggppm8*5u?FD zZ2dgeAM`@!-~+ahIG|ZBd2Z3CUd>1<0)=ncb_Nk$7P*A4yF}c|fEhHgtu4p_Tg4ae;=HBgg!X#50w2J$NOwuDoY zzFU>k`*K!P8zpJOR8bv0n4T{ss(Xf7-%Jl@pf#MV?86D*1^Z#h_9Z6(0P<3$Y;zxjw4DyI-^w7#vbk@|gj9=xx!;kZ{dYMei^;2)?V>(wN2u}Si&I#$Ml8!A zQh*J)!3ho%JlOY}C^3ca3Y2Shix0%CGab{^lTnZQKY~q~-zG%n09S;L4s;Dy{+tW^_CNL0$Ou;3?4ly9bs4oKH|FYA|G*U zp6FpF(TqKtY^nb{Xa9AWo6e&oITNgtnGD}a@61)^Vr z>1g>TNW}gq30Ing}#ZcK}UeB)GCeElU0PYlj`cfhh20fWHx>a7~$48fgP|7bU_e9}1Cd0XDVIq!F z?uj5J_he1&MefO(@=Wp@Y*N#*v!Zidn^M_e7JZ+!NW~VHi@5^_MZ#?EFyDESlpmcHCaZ|15rFflJ}j zIL+$?5o_Md>%F}PV^yVVVc+}o(j0EyYvN14mKn+Ge<(X*w6USnGV=P%u13@6^%I0? zT-+ol)Q!jS;#~FNo_I35GS6gCbeEpWbqQp2mp&|Z4LmmvP`(yzOD zG^GY5&exb0&LUnyh)fe|$;01^Q?$3|4bt#{HuZ&<=5}>sydG@dM8%m`f&e1D# z1>B3vGEPx&l2SgqQ@7#Fb3F~PC$md{j1Nf_HJGnonJdv#k$Rbw4xB?^$Ol#ttp1dR zo{@?HytkpWX=VR=ELi9jNX-qXamMVbpA+lIF%7_U0i)N`?B;@^ium`wIT!iTB$91p z!c92cf`)4V0ftVc7c2+4z-g;nsXd7x)erA)ybIvoaY!pw(wvH4OY*e@b= zDMzLmA$9)QWfVN4vmDGqtJn{UanbN8aY*%I<)6TapJSgHD->Q7WtJo>`5@^->nz0j zk$>y}-<|!QCLENI0~Kq9FmoDR#6jvsFr)VUEYTjirQfLE0s2Oob&F(n$zt1I&>+#tqBd8vTNuZP6=i*C?BbIrC= ztbq46yft0f_ny+s#Mh11qjBnHB)%?~V79!PuMMNqo4uF@ZXnzhoIekktP2bai1sF2tzPPbQ zgXa)e&HTbY9fTU>a^O*PFBu@)Ocu6iEYq5BKiMapDhwW(*>k7U`8Y}t?M zLkdk{zvbxSgN=W?2scvLVlg^fv(WK>4;WrE0iHw&Y!4%KSc}~#YV9mgRhRrmRSeJtrK}=L{3)5Ef<9$U zff1I^_@X%pyvQ3|PyxVCbK;iD8+T)yX!sKke^bM!5(lk4!&B@jeI=HJa^XieR+Afo zB<#A0IO$7x#*~=W4?K*yQeRp>sn6L*<*j7cHU8B^FrNJ{_UtlP@2NNdM+qfD9x)r| z^sdc*LETDF9F?HZmr9tCNyzu(3)a83gfTG497%YJXku3c%-ZgXAoFtUTDVO1ys=`BfrqILE!{M1u2A-+xqI4`!_|+5q zXDILzTQsIZLJJn#M4>(|0j0H?ynd6Aa7Hy5kQ%#ZZkNrH*WRd`u5S5i#nm6^p4Ed# z>wou-vwNbmqr3Hep1XIanGC8Iy06#`X2n2wB}wFrFt6|waG8Qni`jPx7==YGr@4#a zDvC9tp~tUv-kb*q5xK= zRJ2mal_|6<_@4<6v+vR0OPFrMF8S{5lC5dMfHYDaj@bqx0vpzCQn&*!6TWdqpGkXRflq zt3Wfz5Gth6%gC23n|w*-+iJU^qQ9+;;q?J%;1x-OUs}8x3x{zgZ33nk{?Isf5Wy|< zj1}w!M&G>|^&jfntoPSa7#L$;c2(QF=m(a+!w;>ehpg@Kl)eg9!6>|nIflGAsYUAv zFX7|k{CrW|#MRKv%i|ZUs~u)1(lZsG7I)R|?33a$wWUle*+G1d-kC}+9`7Jz?+2)t z!BJnTDpggSBErTzd%`2DBE?7aTr{i}JQ+X(Ze0$<8A7FXx> z)2$~pn%+GO|K-o06A)8wtl3~K>S3z5#y$HZk&5jVEF-qqiF*TMR1yJW2)ref$dC|9 zo*tsauW3mZB5(T4!PnkkEz7m=o7+O?z~7@Zaq7EiggK#28}S3j#ECgo&Hx_lXub6T zpxuB$Bk=1(i6JoeNepk`Sj5ja#<(y8epTw8N&f&N1agF7j4)>&z4|XPq9Cim2S;-C`_3D& zmsNAegP7Tcm$92hb-}1}iWy{-0!!>(qJ3@77X)_fFrU3Se;gN_I^e~B0HdNeP6cv{!`uT0SCsKm)b!Krnmfkx`&7e_SMUZAH=yPrkvK0%bhN2e#q_t! ze5dai#;hQkN~0ZI{cQ+9HX&GLqgQcNlHB?rbLd*;f>5&7LA^6tHsJ!F;$+6D%G$WC zN!#?;*ezO*ubJzt3fvD4-*yiyg`HmP)SQdKu;zzof5+dp8EttLKewwxYNVQmb+N5z z;7)Z&2F4*S2{YT(&iqi=tq5@Tf^vZM!!o73K+FDJLfq@~ZL^MAOo>%2bFtHqcD&V^ zly_z0>u3xPyCwHH0NR6 zWxLhZKTu(#ZZCM3_4dUm)qIJOiQ~eAkg$L}HtW3ztjmH;DT%8fi7f$osM(IX0$lLY z4PB_ce)?j#h_@`9ARleuMj+ht6hqdvJN;#UQ`2w4=K!lb;$_{m49ZU=O;vF28Rn7% zBK+ZMuiT+7jBe*bRugR=Sm97CtLeweo&E~yaGB18pk~}wWG%=}qsER<&%zHeaXd}B zxU3i{eW<`#AsQ65KEi$$m5&YjoZ^E~#u6~sU`UmD1X$__5Y#z;{=&=SWFA3H_#sfCrSVq z#F4I3cuXAaef=ZaK2$r50cpp^{{E8@_Fdl8FWmzK^Bvw+(53b%oa{-}#(LcWGA##B z@djT3%Q9hd29;|%*OA6b7vI7dW6T>$9^cW3`SPWlAtB50YN|)*@TBhIt*#prso!6V!5#10-Tw0`>39=E|fl&Gl zSzhrWYj;P>^d*h^gl7F(lnOMcs0dsO;u-l?{b(PbU?V-FhzSpHesMMO#CfJP0Z%Ty zz(y%h{{OP~Ch&D#)xG~YcaW}hHC#J(;>1pJbTNsY*s|uqae}WBId&7AkeLvWucRwm zwk#9vo}Is5E!t+m%)d+oLMR+mrZU`YwvX~Auv@RUR$BVv#&*`Z;R z=jUW0VdV=}qU0tozFk0Y;Ko3JYIu%_N}3yW0FBcX`&l#+xX6AMjg|XZG*)PCG|+|n zSu}=Z4>OnM#s=FcveVp@?Pmc=OI5PNEZYGsvnCPw{@km~wjd4C2*9>L3b>e-ZHmPG z#8=CSyUyA`gSDqaRnWk)5>>KY1jILUKQVI-8|~%|4rql8IIQn#5xijw==|QpCT|uY z>mbU`q3UtzG!(@MT_lmTZ6gxBR^Ed~NH6Q<)(cZ!uK8k|bKq05plJkee2Ka=SfQ&M zI_g+8RP7yp70+VPvn40cY20yoLN8T;j9~*Rmc1ZQ`lci411bs9*8l1v>7x#2LWOec zU5D1V9tcqozgjHmqb^80q{VXUq1JRs^hh)@76MFmToi-37@0;L9o9+zk?N#g&)S^A z^0yk{cxzt>%+?%3blSeV-nRmU>qfPaw+FvghD!%PLSyRhDXGa)pp{3h+`)hwX)u&* zG*3r@CLmeua>8B_2bv6fIJ`1ktT) zZLZxYiirt;^@6kk?$L6PVk-A!MSjq|%#A>tCvGBA@thvmcEU-s2acMS78@b1aR%XzShg*W zNK6XgidYHT52vn7^9w1emQZF`KMJhNHA5)|4KEi}zha{h1n!V&ik#G^ARg=6<{eYy z78Qw%u!v@+Y7P~~bQ`73R(h5n(n>FY=$N*jRRV+%pX(06vp6V6z`Lg+ZjB+Fy4mj0 zY+I|ou(F8`4O91F0A5f>6CIV)6&PvDnYuHHaY9t6j)yY{4YdF`;m}Yk$k!m#PzVh$ zLaV7@>T-ojIBaO-7d8|*V(L+3$JA>}NTD{4sXGBu9X*lTu|GGffi#i(1K9f!9&M@< z_SRrULoDGz4=cqeJd-lmcQ6c44l5~Hqdf8k8;t^qkWH*GnI;l6L@ma{7{g<6h{^bl zjVR7qtwtkCjV3A?fC~$t-RueR8Y!7N|Y_G2%gYvzq zVBHJHb_GHP!fd!#m0_{8SCw_QVVdDwjCP8n7jfyTq2O*24L&Xvr`a7u(ORJd~TX_zB{} z9v~4F?VC|wG|lxZr@8*|rny?K3Vfqfz&3Ba3F)Y8A|6k#@`(5`ftw_;%m<_`NdH63 zFB&5-3rG_M3{K(jHVem7|Z7rQ^J}SIqZc;ayX`NOYfct zdN|C~Bu3?pN~LNiN?|OWyWCf$e8h5OCdA^nd_gRk5R?q4KFc60&;ZSOTyxrv$_^5? z539;P5E)FI&JAp@<0jiJZb=;NG=Wc|qRISJ$~aeDSGQ!TKw@}Ews2)>V60(5oOdss zyZiBDBwLqzNcYS!SC8Do-&W|CQKsu56RxOco>m!N`d5Ah?fUDj`e1_w%f^A5$UPe` zYeUFh@D23({`l6Pyy4NuzkmPO>!q|z_1*c@8~*o~KKV~SOuYW6b0?7+h^eEt*M_{n za!{TX#t5iQBxWhI|MQ6l{`||Yf9zj==!Loc{MJAC)bIY}3!ne^>y#avfx@qCRb2XB zDoA2#N0{h}yw?VC(8G;thiVr!z+UyIE<>wDY$Zil93a$)4C$<1`V4#87@PYBure>K z914}6f8E}^^p$K*Q8JS$0xS2K_YpxWw!n?$N%BYe@`y|*d1U$49&?{F{CtL8dJREG z9R^xFsF%8FFfK2i|lC0brC3B{ufl4C{Dt3OA(+S;{SJfl=BB zuBEsiCiPKbR~+*-z14{#-5O}DPwix1-1UU4$0otrC?jXHj+eP}Si))0H4xn-dyhcR z8)NIUsP(1YCkTo_$q#+00PTJQ7qL*cM&Jy2?d&`VTNWemYs~v&+jDhpXLgw&qAX?; zenCq4sJM*F8Ix~#2jI+oOkLb5d}ZrRts`@Z^dI@WEnhGCB=_ z_|)OMV8^&c0$rj8 zf0KAn%YZL@h+KteW_g9wV%0&zMzM?v;fVz$2~RSG3X4MyW*;G~$jBm2hGIp*iJ?3a zoLquXaIzG1v!Kc)tagHvCA4o0E&8S?)kUF6MHGc5o8s|Kag|^)vBohAz!>tN^`3P! z*LG_mykNd4d8w8c6b|ya**aS;Rlx&NqG<2*3?UX zR+4M(%qEa2P|nSna>>t~#arso-fZl^A%+X#`Ks3BU4sO zOnUmqyya;3Og5o~da&(i7bbwWqZ=>m21OMUuo}?il19$T=1h_WK#APp8w06_&`sIk z5A)2Os!AO?z~3`>teuhdGMI_yPCt}O+=y9bxIhkR!3)ID5iwwx#jKb;@@gx|W@x2a zG02H4tB&;jI&NZHj4zVOqDIgU=QSd2y~@x0i~5w8UgPE7DLmxsod z`_tb@#C2Rq(O<5d9~;rDhh#CbWDLwPg;5wdqBVkp(*p>q;cx=6STl@S&prHTbvI4@ z193F7xpTf_aUmF#fEwp@F44?M-?`ggPfYFEWO!Q@>llz&?zq*Ch{kbRYBlQZ`LfBV=*ihbvTs2)aUVJ%qXwW6+YaILa?G<; z5qnNeIR%!Vt3A)BE9m>f9)XfPTvGaL>IFFrjuOHZ%xJYb@X~LUWNY|QOAsKbkUMFE z!Imn~w?R!PNyEc?vy7RUDzKaLFnc!hWurSPTx~RBdY&LM5nR}{r^C8 z`jB5C|HsNY6;mMiHFSTM@T&2ew~eto^o9#9ywYi~6y=_ZD0hcZkj4I+x{&LD;S7nJ z94Jis786&-#E=^;11y8~d1&RJDA~F2W}YQQicjCA`o^}K$RDR)milJQu_zoneNFt_ zm~DKaNN(aM#*MStlMuez?GqGDfBbZY+{m`nDIRxCbZv8grC@u9)DH~_FA?|AJ$X3{p)JU? z`c29LSdka%-q?2G#PoG`R9&?=W9GL}m*K`6BXOvM!@UJPc$g25pvIJLX>_)q5f9D% zy_fsB9wMPC_m%G`_#eI8+x1WkzSn}kK0o-5zf~lV&889(Niv;rj&OuQBhYDs3l?%>04gp#w<((dcBNnsbP7mO3$Wq*;@@Bb2sqbNIQ{ zC{)TxZNRBl8S=2LRxnl_N=p}OD8kWg9qrIBYrL z`-+q5F(h@C*C}CRd@`Hrj_(0Bsp$MoYQszQZP}Xc_+dWO^i^q7nRxCUYIs-dIwj2g z++)^x6%Uk?``<^8(eiliF)YL%G$>ej<|BHhFx#Cybzd%i$ow(C`y-;~R%QOQ_?aCl zAY@z~z#ZoGeRzew*%;y_rGPtDjOQDP! z3T35c5nJv$4N1?B#S>;qDbu4>`!f#-{_?l5eLE!Y;Zz92v<{d#CYJB!9;~`1W?+=L zw7L{R_ zcwR|D`?5;HF-9f5Z8;@LYf3pdbHp?MJ%V0hxh0`@R7roZoRZiZRr8;+V&cm!2JWO{ z-l@KPA|ydA^lk%P?uTCH&(tQ^g4v|df$*mlg{MRjaky~iU5Ws$n~0t38B~}c#|A`DmmXX%Ad7t z+7v2-d9r=!;v5FnjwGV=wI6I*veGjl8#6&*lUdt~T9>gs8;lUK${ zu928bQ8gsAc@f#+=8O+1x$-9?qu%eTwW=i-Vv4qBSQ8#sfVNY9)MrlTYR2$|*pH%A z)~@XI?&7V_+DZ2{*la8sPtsUZEms)7C2Qvp*I`PrXnfoDfyGNNTd$ox>-+qpNAAnL zq^x+At__4$zIGFBxIEiPJ1HWg32MXQDPV<3VRMBBIBXWN+ut8#_CJ8h1~^x4fTq50 zj@{_|0Hf9Wz$|*-Mc_oN>N_y;iCjGqfz>tYw=EV~trik<@L?&ustoR#`-EP76Yz5A zx-i7Y!bLbKeG{N^c%RXg0#SSUw<3gcSlqgApN;ZtBv}&c1xw*V?O5;?IzbK|6%vr^ z4p@5dzQ%UE;$anQ;Udt(Vr-(0CReiH<_@!F=yEQ|bSnAhV)ddZ*o<%_xU^f?_-YOi zs`u8EdUvV7@_aG732G!zuCRmofC))6F0O=Rl=EbjxlJU>M@Q0&_0qVeEOAX))SaOF zQb(nJk%Wun|M%ZN2DSemFL%!mc!)&&uUA(m5Z;{@HTK%#(I9ulimQ8&jzs6!_QmA* zNeBWTxso8yO8^Wr?-X8)T$uw-_QfR_N-^r<=brF1L^u&08ukf>QGADcpAaF*`Y~QM z#P&#MsE6S!86d-D6S;4C;uc-8n>AE*#SU{LF<#udO#&`S)_p|Z7!UL(gIvnN5tPHA z2BpRj$`{*d^)TMOJ*YiO5R<|EG!@4gqGlV|CemSTJI*s?yp2Q2 zxb;9%+&Vbhj9Uwbo^eZXDjLm$;G}ay8oC3ZgbNUJder1L>lP%Q25=%DV*Ol?9*eHw zrzc9Ep7Lp+>0=*rYTDdmemI~D&fmm)-?p?97tQ)Xty_X*yH&8O2zSsEv@Q#L=VG>1 zmO_6HsjPRQPlH1^zal(=yuQIDdx{7xR4NWEw8ja_QvrJvN3(eGYB^w|uP1qgf{(&WB%1Dbb z?SVuy?-uQXEyKI)>tjJfw^F(gO<@4J=stJ1O+4SD1YNN?g}zhyIcg-nmi#7*>jI?| z?^i4;7KH-7fmhh zp-YE~MB#n@q;?O}CN=mNlPYG8ec&`jJW#X`WVN`tEu2w;HD(!W-0b!{{(dn*%^*JK z9!ZpYCv+}PiH9_3alfCt#Iw7&*Kz+bkRt<~=b%S2(BTZYE!!!O+jKgg6|l4cUFXY#}}2FthXNo=*Cfi1_ei-IpTe4W{7%jS-}?}$lq|B$c;ZISK{ zTfF7rPB|$udNNbIE7r712I(FNXt?8CI#}W)JH~~MDMJLAGD%AigRbH0(h!{_L&t!M z_*6tjqSZ5;(TJ)3>hi`!&qSwIUcfov*i(lo8kEA4xX&E;sL%26^J@EC_C2NpA^CB( zj~K=#FX3PiFI6TvzcMc8gv+^ViGq{vbM;aMSCtCxTX%b~>SkAb$`#M9gBZSKSLd)h zND;GoM)l#~&9u<>I63R4o^#jF_ zDnd}=mW5Ok0t(AQQiKRchQnelY6!(>;GazI(NLUQXqq4RobDOoI5d; zQpvzo2$N3c1U zk&|tX5B1r8pK%GwqTN(qOq&s}kftQOrQBPFqcmYtp|XTdYn@-TGxxgg*hS$x68knD z;p80#0?ehB9jQ zQQs`;ZtjRlc_T61x@4AKrw$)!Z&snbIZ1pWCCY$d zMP&%N#r|1DGK}B_z_FdivNVq2MGnVNecat)yxKEePL<78VVWgngiNX#@aTuSEuzXf zDOBZzYLAaRc}%01R5>VjG`D=e3-Mr|oK6JQrgRvQDI-j4SJWB_H_IxDQCPC`kC#)_ zY9nMC02Q0QPr6raiLELy6qQ<9R9c;=rFE|OCzezEs<8N-kt{$h)NL-O7V0XfBX_DM zI(kSd%px#~imemXrry=&Gs~$BXDOKqt<>nER_jE?FxL>wA74%}cH*T*;EEO{mW$q6 zSJX$BQxr-;7;DH?SmfR|%h=16L7m4oCb7u5z)wKHZ2fY%hz1 zLvVg&Ic+p`q?jJytW>HI7AnNTQNfsHaa4#@VoQw*=mbMfg>+r69%K1xfqIOw^|_Ts z20lE%HKU{o)2z3I!WVd8V3?=-ZS{_6;8g!Zuk{em8lc{;JBy8X>aK5$T}Q)jH@i!%4OKQKiH$C{k|0@g@iGyOqcYui zR1!B{n32d1`(1h@qR%ci5~=G*`bc@vSR{fm0iVAWtVAd0E~}e`gVJv;=w?s55U*@d zTBG7Lji@L}8$m9ss3ixbMT+8NKh5Ij6(wimWfc{+>eiA%J{)QnDawXgO_?fMC6D}N z6%{UiAMMLfV#ffh?*gY8a4SLl5ba$T_xU0~^x5A*cVpPA}3WaUIV>uOy2H%I~ zSLl;v6?(`jq)DbARICu{s^vjw;p)iJ$YA^}vAX|jqZK^(8ID%A^NOGQkL7eD2LDnU zUto4FIlm7hwa0`{`0gWRc>NsDi}OPXdP~j$PKj@iIB>|IgHxP?*C~r}T@9g&mqMS5 zO8ND0-9`x?OLJZH4H4IkW_do_)w&suDPO`a;6zYoFJf9iM1PclCi?r)DlP#D#Cfga zve%^qwpgynWn*p?H&$B3We(*;|G-BrLREfkB%+zOM)x0wB=Te#iJ&@M0(sKiE=eM* zOC+LbHj4~aJ0e-V7?G$;EKVc{$x%7;^ZuY& z^xbmxqo&_ZWxk}*3S3J63wYL;UYmv9??7KtYV-IckLGE!5sH)9P^8fNCJUMK7O|g| z%x)X1f)ZQCu3tn>N0;;59x_{*hAaKgT1(KVZ_7 z|6X4w<&wGz&n+l)ujwmlB9*J-(KW#+Goc)fx8 zYH^5Sq*wl?Eix5bvByvdfJ+T2vvELoLeA3r+Jl(OhS(FVGepY|dVk77e_R&2>?vb7 zEq+sJ5MF326De3Urz)$9#zJiS%1YJyV}91czv*XwpXmOTfvlT18X4_@I0)rn=8YPTC47u*V?-*^zCJ# zuoM#C4;0)~P|Kzk=}*cc2?WG?Xko06mB&(?dqQ~L>xaupgfSC*Ht-BpOi%ytSfoq~ zas3Z2#4DS(IC3+(TP~9f(e;aEWUpllmU^(o?TbqVOq=$w1j+3N78bc(*W?LArYbh$ zJ*|Jjzja!aNt)ZW3Zuoz)w;FlPe%!1s&WbZI`s;$Ms^~r(J_}^iE18wCxy${zhgwJ z4!gkG1j&TpD4Tfhp5nsR%PZ`feYe~Nj9X7xE}6a3Ss;7zpf;^GxouFEWfnbTNWk_=iX)`lm`5=>^ry_~C!O9`QSX>5 z(`Dy5_=%U1%62m<)+%5JZfJ#YW^!0+YhOCE(!T3^kXEi4;6JJ-7Tm*)7IxxI;qvia z_Uw^MZwzoPWH~w>n)qNFqx}sdV-9*MMG&cEJdpk`%K#wqUzP!oPVB!d1D=Itz{Ahj zGQg#Hzu4mPECc2xSe9kL-^Kmv$g^k;Gxv}c!CHJ|`q=ixjC{o7kChww@DhmUl$q;q z&xRUVaam>+7iG;iYiAbwv$1RyCIZgb2eS;;j+(@q%_k~m%l`PVx?p%zOw63w1tvbB zAt`LHizP{Xh_&rH+ibe<*mmAnSl)?`7=@-BZ<9ir8fdBBnW1{(bpTXGXg!#+m_dm0 zmkkKkI|p(-<5)FdEMiYu#v+tvP!~Vsmr6+mwSkCsa7OCEyPZ1A(;`)3npPt+5)8CS zsM`%DY&edIrI@6ZoD?7z>~yeK`sb2X60wLg-$J?_hT4|K;No+ z!;mSm9wHGrft1X>nnW3Fp>x_lgAmAVvWfnne{|ERauO$EWh+;z3>ld{gR_dlib$Dh znLl%XDCTL&KS7NQ=MHQxXS${K9FlNIy~0AOY^OYoJ?OQSjWEMEBw#a`f@f*T&bGvU1#93PZjT$0mJ&s@HK)mo2f^h<&Bi zLz4m0*fzMqIbE?H-e5}|?yZG}X{!Wpi}wxT;yh1#DR>*aztLNlC&Nw$qV;AXpOo@# z6M@_|kOjB(0=o!(1KJ317)sM5D_W-UY1p=a!0!ug;|vWmPM-Enp7sN6(U-+t4bhJ1 zdjNe&q$aO<-OU=66f4g9nLiRKu=$=&hZGiNwdMt0XoyX2hat@ncL1goU+1=lrr2yu zr+$|(evaj}IUV<*B*Ssh6N8X?6{_hvg z6%o)7lsz8C%E4x)`b)O91h#6CQZ@9kC{zrAsb3>FLgRD*kO2`61kO4=P)!|x)=^>i z>3)L_n6nLdLxW&&Xng??id{nBuuJBeMq_3*DpHqixF8H$NU<4!cn{GmNvU(YG|I3t zi4Bbserybc>B!>qPPWBVrZ7}8^_wJWFm|wcv+T*M6&(~x7Zi0TxS^Hm%*jEYhC?r| zK1Tn|t(PKHlO1i48P1cDkDQBtsgj}&O`hjRo9|{z9PEM@_}DU_`EVs2p2;I@3ple? zHcXEW5t{7AazztX6r}=pv`Y)ssEWpcB~00`iOJZNN@@z9jWNdOXg2(*=pq2R*Vv8( z4!>r&S#mre8FOVNV`5xPmi}^#qaT&4ZJv_Tgq(I9$gLl5iUG!We7gXu2<2TYCg36) znqRU;dEyA0K9E_u3oQAKNC1MMULs9(z$9Tg}J;jeh+aW)t86iKFDMcdJP|TPpaMC0tyTQ^p zDbcri7<3U+2Uj>ZArZgyC^--ab;L78mQYk6-S;e7#(CsOe=ks#X##b1^`|k#iazoG zT15q0=@mWwL0xA%T0uQj-kiSxKIjDekXl)jXdII==-=(YUe>}lCz<=iN~Z5mSNL-y z%3&TbZ=xHQSNbFi2O14Sw{&}<8fD%rA}wi4Lywj?P<3fSyYOhPr}+-%;7owPZ#onu zk*8E$A9_P1{HYTOVc6`y;60@`&fP3Vrg!SJK_dQp6p^=$-am&CDHbLDQGo=hagKZ6 z8|g?7BD|ti*C>FwlcK0m3`BkEVo74$pIrNYKTf;W};emOWhImdlCqsW}VU(zQXjYjpN(ghOqKyY@My|rSyVcUnAFGl! z-@~s!oWdGLl&3W1hOr)8MC%M8+T^@xZL(V6XifzYjBQI|EqYBmdJRP@Hg4Vk&YBq1tgKop$J3loMyjxR z{w1_%O{)^Q2a&C4tpg%QXUGYL15~?W4@$SdG|6IVIQ_8du6{#91{IE2J%D+Lqp*P)k0Xv7|imk0gKQ9gQo!5d_?ZwQ$T z@gb{5wIGq(Mki?D9=Il~q6H-ii%L{>+nviQPusHTO`cTY=1f!PoM}K#g)@!8-|{c| z(~xw|R(yC6=<8UpPi%~X=|<5ep<@mo`?5usuN4ZOWXTC9xiYXpVX&1XWoA?2QK?(M}!Sy^cgBxTyTQOYp7X3U^M$&ix)9PwCsm=jnhUn>{KHz zdnH&eBG)|n6mCPy z2r9sO1L_x5Z<9Ec$h}*1V?0f#39pAl=0xY)_UG<;9~nD z0CG;T0gHwqqrtmNOd)=ko>{6@QNqm*Uvx(o%kAZ%+Kb-Z zJ}EptBzC8%wdm_(ezvhYem_R}MXww_G|DMwb$9%j*wSj}l#_^*SdX}B9Mg#MFwg4$ zp;HbGEjr~`c<7~~^2n*toO19=%vJ7{V%1rFp9mvFsE$Qyh5Cj7F%_Z#TEg=jV!hp1Z1(5%KhaNAV>T;m4h{DclW<`A>!sWp|b|WhJz(V z-Ag;1aTrA!B24!Y6(E)h3Yv7InFwm1qgOp%*B#dg zpa^@qVjtsZ1cXlp%lVXq!($mGIYWL&NlqPFNl9@VLgA=TJNi1Skp7liJBZkzfjY2X z907m;!kE|%T_IX67v)5pg#jrOPOV{$(VlxSUq;c=BDkZ)C74lh+f*C4Q+;1~_kVuy z$>09n4}43)svyBG-^e~TxM*ZGXiFBjyeJC9cjl~yQ61;KS#z3dSW&6ssznb@b5f;o zbbe-$`UPtuLqv~5FcoRBddOCxR^Z#-L_cFCiUYVAPO2HU;m$0bXq*M@_$?zV!v+;e z6=!z_vBr%1C_#Fa`}i?Fu5+Q#Lf`@+kPSQ`dv|by%38S5TeNEddGFK?MV9sDa9b0W zl9HR)0D=jpVLCt{QgQ6}pu+7D5)FP9Ln3e8q`CAJ77{M+`QDu^Zlsm`P@`-|xwiLfA{8}tH z{G4>3IdsnwmkJKQS5d#PV7Y}h-t3A`x#AIA<&RqH{84M=k4ip~KdK@#Cr`;MXV!1s_F_z+}6(UwuEIPftD zhTf>gA;N(#U1t`CZs5~&qjKQW=YWB)4$6y33ra<|dhlI2jqbE6m~~B}=qIZ2HuM=i z>Z*f$9dTc+W`xp+69TAU=rdZ*L(?1%MK-XVP26q)^DGgTM%iuq!%e{G>2vVP9rf~y zq?g`-tYEAno3?GhIEMvC(yB@!WP29vDsmWovTC7ya9VES(Qv-7APMMUL7;|Gi&BZW zXC#$8Z@4kvouzSu?~ZU2iX=KWt|8|6P-_uOxHV8q;Yo|6iO2`Awgt^rmsqk077n8#Y=koI|H6(^#^IM9 zrNCgR_k(>mN+BH~pBu8nc`RtwKtj+mIMPOypwspb_Fa`&%R-;IFbVB^N4PC7N74g#;4r7yumawCJZX84VocV;9rUi~c z`REgYDW-iJq{5@4y6N1c)dI#*B%Y!pON4YCmU{0GA?@N8ndu5e#j~n*Ik^^Vd! zJlKT%L8i+`CCRgPfVBPeBdW!@v_q8pv-j!kbNU;ZtP29q2)pKwR+lUKqt!Ww#YM3z ziSrp|9}>^8QU_jIs;tOfyjsItsOgRNEH^Cx^ZrQxVKrJ6#gZ!DVwCL}sB8lLSznfF zx%|hxed}_Mm#W|3X#YzKXy0nG&*{L%7@a9`GSoU~pe<@0h_@&*pEP7XR*uZslA}Xu zD{!jrN%EfKXDcndc}*UM0nrA9k)s0(raJBm10}36w5yywq0K|nQFM8rKOC#{dU(7x zu9L~?Bg^I!?Lw*w$x0-CxegBr;)~mY+Ac~|HIv0^Z@-#QC(AC@v`m#0%Y0Ftm2(cI zrPjWaX#1;+OV*+WKG0RGrDb2D3};El(nd9wp)7cZSz>^~hNsc;S2Yr%vLiQJcGRYr zMXMGwqmC+t%B#w(?l@j)(S1CrPK?Xuzc{$Kx-V&%W&43c6&=}HwXqhh$^ttNHW;89m5Xw4xLF!ACP0vWO*W%?W!N)t(Rzu` zy8Jk#=yHb*+b?wqY%nL&q1|keie7-N2N$z@5u39mK%EC#!zzyURdtqp$Osbc!F9Bw zYGlc`*p8~98DC@_!>BL&Ak6p{i7cp?Wg2`Hwt#d}xihNJ!?G9OTEJ4}H=zQXCcbS$ z4_f&RxD$f8-y&s#j2M^v?N5jhk+Dixb3#H{h>+UjbPsgvIF)JJ+7}$c@Hm6by>0|< z#D0U*jTxC4NsVz4piYScj$%t zqf*;N`w!BM7wEjGg`dp=61d1f1&gdWun!XHANt1J@oNJ_Z26X}W#FjQQFwht`!`XQ zb-g4Unqww>nG2b*kTSB(F0tHF<

T5AuTKCeH(PXnh|5D%E2T+#V#3QURS@i-w-V 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 diff --git a/tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg b/tests_e2e/dummy/e2e-v0.4.0.spkg similarity index 60% rename from tests_e2e/dummy/e2e-clickhouse-v0.1.0.spkg rename to tests_e2e/dummy/e2e-v0.4.0.spkg index b2545a5625b3d6d6feb74c0877161b19a5645ecd..586243afa6a8299bf84d1ec9f7d37df7fc2a3d73 100644 GIT binary patch delta 56822 zcmeFad3;nw);Hd_s=Cu#lFmv<0^Dx4umuPZRy7w{ML`fZTp&OY!V(|>WkfqD;D!pQ zl#YOaD5#*QU{Fy}QBZ<{GKvZa%D9b+Gve+H@Ap*Q-a-VN=l#8Z{63E}LdHJmc5&`;SJ7@7+zV@kmbt$MaIjMN4us@uc)f%ZPHI5tGkUV+TY^xj@E5l>|D0$)*K z;c0hLi0Z>s-O#mOXWuDR(`TiZcsUx&Vd%(L@~0c4y6LUG&Y7i?W|ZX!Sv}6k537%J zgxd%(^y9l=!jy^B*Mzdl^mDvPW%|{IzQdn@UI9ET(m=ZD^-mZ#a!N(j$g*oDR92}W zxQBTsgvSl8sOn2ep$84Gf9Q-dbUjv&c92($0ihILQ;NF&iOz?WRZgv#QdxF3st;3* zr1$eWX)reOiXuY^+gx%oau@2c==z~C-jp~f2~R^~cw&mme*)Atg>j9|isGyFEkH*6 zDAF5w8_GG~iH1!Aj`RlJjA4B*IDg3C3;K>cdq|(YBl``xaB!c1k)G#mAlH8<8n^;1 zy_wfk@A9MXgvS*Sy(f>DD68igO~dWtS=*iwQ%AQy?OD@v>S#3+qH}Ju)7$Bkwa1l} zjio6!E{qp@$`zb)Hc+j?nMJw(-JA|x>GfVvRyC|_+KjTws`T>}p~A%6im7}>#eagS z;-*HFPN8H>8R|guTd1WsRehF@ofYX6;sJ7K>@3xzdzf>2n7%^k-axFRu3hvW!z=n> z!0FSy9GU5zPYs=opF-7^8f9*mQ`8DiFDp!_rh8AHV|d*WkkY%KqLI37#0H$(;}lh! z)LT~r(R<>E3I8)DrICTnz@zjQWzqM1-tMPl(aN&vGbfBGYd^DNd--~EmJ)1wD*lwc z8nVXW(2a)I+dsx3>UM^2eBd34!yMR_sIr_u(iBurfeK2-65-)gjp)ddTql6c{!|n|hOV zCt$!a6@3@m#Nax;>ZmDjQuWPO?q_A#qqA zrdu$v{19KHL`HAZ`YPf`Tj!xHEj>KjoO?9ovf z%^xum5v_einT1!$o5vZM6O|4S8sbf&{%A$(69F=!x3oSjwnzlG_2&QUYgl?aZ!5K^ zg-7;2cgWd;Mh+e_eB`jc*4YF4_6azPpb|PSAO$adyq5#->FrMoY(+dRJ0ohrsi+-} ziv09xUY90udeQ0j7Ml&Zo&HoETS#6t!YKQnNy(WVAt04f8mow(iN*Y>CgG$|8hxR{C`Q-hDkyzVH;7=`Tsygzv)z>mxN5hR1IUDzaTcx zluloC8q02E6B4gDV$McYlA>xBnFZJASx~<^8rC}^Tj<1yqh*<%4&6@8opmePV(vPx z8?&O{gy~Sb>hFKl|Cjyuo;IRF&5%L=t+H#6OREz4ig`QI*?HJ}`$hkk<}o9{FNFmfSK_5_*GvKzqaV!nlg^*iGzE7&|hr5@;9EmW{Lmy`KLWy}}c(SG4h_0n{m#fEN4V zkz=qmu2RZ{7#4`jIGfT#W5RatL$NEHbvnHl#Wq-#rt~^t@28-4rq;=d z=r(dhBjyXI+X@QJ5Rbi^Yv^@X&6-*^a>n#Y3VhG7B>KK^`Xnq7kqxd|x7&G347H3YWFvpgSE1fZ^%B+|^7W>#KSDB?##+uX1#?7cKtMr;x73LUd zVpU~ksaaJzdQzEr^@OVNU=*`rN?DT+2NasE`b{+Jd)I44IS(@;scwP9K_pz|QFZ2pwFh@GiWW93-$lGsa{laL#?{!kL zlhWOhFEp6x$&7q)d^O04e7W(}(DJ5w-Biy#A06<_+!FLo?W1NE%eKoJXf-R^DuJ2h zNsHv6)o@m3mR%31&1R7v8R}(6>rtE8o>aRYL%r^X6d4dqp6X512bbY(40_7 zR56vpWD>`jqb8S59XTGPD;ujt=}6jlj54pDJ^|C&oG=AcFEs~Lz|c@ORyS4XH3wEv zQ)5b}leGhdDkqF3uDGhA;;KpZiaL76xI$~nthQ!lg*lHs%xu@rYmSN&8+wu{1|Nk?>g4M2rB&vvitr5cstGgEi5@{EsYxv>&CqZf#D&Ao z4WVG!6tCt`VqF?%M7V3-BjPl1rz^ZN;x3crD%9ZvXf;`r&|I5Vc&^OZQWCE+ZLDFca;&I@d$;RB;6ut$L} zlq|53hA)hwAV=ej(*Rqs=4$Zx07tiCdN$+Bg)g5TJie%89*k|6>G(n;t(rCi^_U1l zHnb%vM^c3NzO7rMRuE9_Fhi&gJ^)lZ8z_9CU^{z);0x`w!vt9kI|Yg&uLDcZU1FGn zi5DxzX`ZRyiW-LX)z&ql8qBabGo7wWMDjvvR$g5;9cU!^s3t(EIe9{5rCC{3I;+y0 zIiYgG=t;B8v9KCWm@=ly95=mUGG@=%GTMlm<4Pw?nt^?)#t^{7h&r&a7I^q1uszB4 za0x{n0%_h$)QG@jMJzjakQtd33Mwqo(`R9>U^YgkY+F!#Y86e*(pXu5IJvY6s{v-6 zhA{>N3j>OxC|(J7MYentj99h^;_*BM1U@>m2Dv3Bj4|Ld43uVO3=;Ed%we@}RLhGV z^;nwNrE#JvI(!ZW>CF6n>;V%)c1})@d{Jjv*^x~^fl)MXi_bgR>m{kCl#|NVaqqHx z0n5KQ*PEj(<~`yCkJf2Q#-^Vn*IVKB#~L2lp>@KSYW#weR6l9ceY`#;)4*e;Rh6yd zKd9lnb|njWuGh`eU85&l1*z=4)a#F{P}Dl%OI7Jnl$M*C&}_gcSz;u#GTZB+5$R52 zud4pIdg}N1Z^w57W^S~nB25(4Ymw?JT$G+0NE}hXI9X>H$Vu@zPLpcfgh^F26*Z|M zUqvbD{&*hgksJQ6d18_`g~m0u;_4}S*WJ3#cTpfcB@vi<#&yYzs>0J^!R>}Oi~2iZ z$!=YLGGRAAe1^BDX8BX@a-+g6&Rm@SKdgQr<7uDQk7+--{qz}?RqbYWOyBvm{BQwl zo#YtB!eJvUeYdmL-Y~t665;E^a`5e}AjgRWmBhl=Bg27z9GMOozMWlU2>IUatX23e zR?A%6C0s7UDVT8h98PXHTu?8a4ws)NGvRbN9R_y@m(Pj+gbSZ8f&aU(UI_Z@a5)?f zydlf&;C|uqJJFcoL?c2txYNM@4Qk$jr&FZ(QiTtV`YA2!45V?7o8vz$FlZYuSZFw> zf6RfuE<8LQk&3=uXw*n|kn+Kt27v>`6vmCz_@a(SU_J6J25;3SR`2`VURJ zvZ!LVa2ivMswzTbn#*H^4Xe6(tHYP{g^}W#TsFC4`Yh&%^0=(NlO>Jr7$;;MT@%Ej z;|%o~nR<>h>*rI)S$V|P*tbugHF7$7sVY;Ns9tj&eWbCF1;hPfBFfP}PM$ah#0yNv zzyx9F80;*a1Z#<73riYXre9xRp0^FdVHv(k|0}F>Uh`V^i1C8H>W~F7~CdjkSNBy~bW;NpCUFE_U%HmyWn-?6|8YlusN# zb=qcj-Sy$w_ZfdR?l+bi%ZxjXg~lRdv2mAixAC~~gt5UmV%%daF{E*uaj$WsG2gh^ zSYZ6ixQ#7ji`hMF3A>vuV{6$X>{0d@TgTS3$Jt7@iap3yv%fZH_p?px8CJvAuxHtG zY%BY_@iKeBSYfO(9yFlVEPvZw%j7>FVoi+sGVNj37>^DQvrIhtKFlT-KT=&??eLkx z3Y0g)E8YtXBWyYfm_KCDBM`WmlIhiL8kXDI;Rwu^*RNp(dGmFK)waBVp@7wao|a)5 zDDd(c))0Msw1zb^<}X>xx*NC39&1^spQ_|LQ#BZ%Rx@>tNGJJ}W+tW;P+Hqqn(s-u zYAq{kW^&6c58SS*a?4*HxPxAU4!_}3StbkIDLX#Gij9SG{3EQLu}Cg?gq@AYhmWv) zW3l|{5!Tmp zCOb@Ky)T!(&02SQ|3Ru_1Rka$sXhy~vA`;Ncli1Povg&l3FzuZvcnSidR1Pzh;_(c z;AGCQaXmFyz(j~4cfn_9%Ss8{RZ{?R8=lzrfpsjy$kgq)l7Z)-(`Py{$W>B2&MwCw zOCM*K8f)b9kF$I682$uXYpj+3eu7p!3_$k-^l4AB?&+W2NVU1utlX;o9It^*a?6vf zP14~x)zuDGBIg|DnZ_!~pJH9u@;UOwD|n}dzP^drpz&&Ky!sF;lvAE!?Ln30PqB`8 z?0$;1!sFMcz(R{;lc!l0zPdaOPQFck^A4Msj?M!y@(Yk(PJNeU8+Xd!2Q05GZ^d&$ z!eoS4=lV;4uqdTzG(oVvVL6JK8|)%Cy^B5<$Ig0!&eq{vE8k-c{5MkVV&(_5H_HDk=M6KrP+fd}@hF~wO_cAD zR(swd5qaqfJWK@wSi>p@Jk1{O9c3xqGB_Z}{LE*@F`u0S)L8o!b!`qXftX_EkQ<&8 zXZS&Bf{fDz4m{YD$7II)h_I_TRlebe%x`u(f>{8%lZlM$v zSo6F%WAI$vwj0oMtDwA?!SRIx);;quX1t<@rBpZ{d}b0D1KcmF%0mvzNeFgW$3H>qUH zBqct2n-v-lN$+l!i<#McH|y>>_8B^`8URCA?Ph~8b)MeMruDK%(bgmcxiN|YwL(~W z6aw_Hkx%PJRO+VEIx<&|+QS+&&}2HHq`YGfq|kEtXB|@n%dy$Q z;dkq$Niz=zZ~S`?tfqI$#_zC3o@im&=N(oMC&y>J!$y$k+Vc*}Gxo`fr!efrvUnG} z1P>A`L-fo5uRxq*$)X8j^1$5$NWx;cqKoiBK9h`Ys_<*=HYSFI#x*OU|B+~yS8imN z*^=3>B(uwBx=bH%zH1|!WIQN)Y+`wtTCj)$cC!)mlj!yZ9+VR{v7W{Q@}W)aFCdEf z3~PXOv)eQ5J}euN|Cy*$67tiUgSTEGUt5PGYh6)r~xB{NW> z+9=20Ugd%NXjm94s#dFY3omnxpwFLCe_dJTEHd+)nj}pV1@f-B&Si@)L@#K zY^LbdS6=@r3j)3sud-ZgzHZlAXxNKevI3Agw#4*cx`qM#6HKvRGs}Y+_G_R#m??jw z*3x97ZLE*6T8`ev3PV4WvJ$FH%xvm>0j!-z5Q2E1!|<@dWtgrq7F z;*S?0G}s_zn_2RV*IA46)=&x&#fb_4*B$cE!vX0IFl`}&1YvrVka1gn5;AV<;1PgM zLdI=*NyxaZy+`DR*IBkF6JV|eEceK_UuTVsW%8TXS#IWU^_9=t4qa}I?6I9i1zJL1 zX}Yhk>Z?0{I}5he0?n@|Z>G0mj;?$>=6gB@Qp~2}EkmVULT~cj?QCclTPoBVN-V53 zAQyJv-2(Qal7X=LFd;^#V@bYr2WtV2soudt&F51NIF(jUKSVg5SpNfowW@~S%CSV? z5xIQ_YwTN1Ntj)3%&zZtuyYDjT}$bgq+wFF6%KkVchH4@UWjC{s2l7t`VIDbT3X;y z)n>r-p@#x!q!n+noDy3pGu`WZA2)6creY+1%$j0QP@p6YsTT=yw{_f@W@4HdAuqjJ zNmb=mb+}xnUClEwF-)FnC0YJOw-ud&*)Y-a!x9&g5 z^tE$%05uzuOhZYkB7hvzrmyeajS7c@sg^hBhP(zI@y_rLL9O07-jnQifp<(7jq6B1 zmJ_L1?Y--xDK4a7VU0^kLJA~OT#6ehL>Hpl*c&w*=-Pv1s3;3Q+X`-g&P+6iV561D z#8jJT6V{|PtQRGwcI5-i)ZWMOU+P84*e4*VchZd^NQ+BA);M8N@jS~L9T65JAhf!n zYqLn8# zpQ0ULnGmF;Vkx$+Cz%l^*YBj!YN>7+{gOSh<7U>gFj2Ge`2*BKbSkX zq?+G)nA8NqhM#0A&EW-~suTy-LARR5ZhyLL^&D#_vUD zc_#-xkAR=}g4)U5_5y1Zj$bS_seM`__r)}FpT&vPKI`{SY*N!&N)j7vfH|L!bp_NH zFhf{}9Ra<(`Fy62^z~fm>vboF!Y~w^OiQ+Wk+rXb$a?t{(k!0da?6XXPm{XsDxEbp z;bfDSSeHLQWcXC_#dmTn;wOUz&*s1A>e>R-e4+0#M475 zDZYTQY{^!ZoAGFDIw>6cp)0l93jN|XdG1!Fhm72bVo%jmOm1bt6dTthph?YY^eW5i zAK5C9?1(4?KuT1wLD`3-w#k!p!gk6>Yeb~6?x$)jyY6nx=g*2&?{@0yG1mDc$~t~7 z55EZ{ER!_){&AznW|3shO()8njQCNd)ibJ8Iph_XC^V9K#sgO0@{&sACmlS5(G;-p zq*@B=3rBh2F}dXx*19VgGRpLyMj^Mc>aVANZwxIRPSrc86K(tm8kbAoWX-d;(x|OA zfCJ>TzE)rRKauah$qK+uz*OdgF+Pc6N*3;99c)x)-We+p72i~#F=&FYolDYnC*orZ~9$q6WS@b zn+=GxlLR|Kt(<)~>}a)e-QBEHW7S-UwtdvterhZT112k>&szEKyIFqQT1rLDYo=Kd zc!Dl6+)z@;uoHtW)p*}~SYe@R2iAzBVx~F(`0jETK2;|QV(WU-S-|qIo>t6u%a!-A z?lvSY7|>#nK*Ntf^7B0`->)HYDM+Nbgk{Y92KtsOmO#DOD0eJj zZ{l&6WY-vbrT<>`625BhW%JS^z`)vL12g(Q*88$2Zm6zyKww4tS6FtEDFDW!s*r0M zAq-n|*Ysi*!Ozdw2t*MCZx0~|X)z2r6^4%A$3|snyu)5IBpHLG5$}`J|H?vxmi~iC zkVHF~9uDrd({{(n?X1E)A~qa3)Dbqs%}!6mDK z({v1hI!-7rW-6VS>3EZ3c8m%k9lO%aG+A_!jrvuS11x5L*3z?>?Muv6sc3Gm&OK!3 z_OVN=WMuEx*oJ3H4dd_=ysl$8qfxm7k<#+qL+_ZtPl0(zj9dKR;L z6F={^Kh?9Ctw{V_YJaL{FgWS4|g)gY3OpMSjvrT`hR2rfFJY?tEg;gpI zQ0IPO=h}t$%azMnw%g7;QnO(>JKyMKI<3@ln*I*!8ptQ&COx7p^ekrEY_d2_$3%$3 zOTZW9kO9PZ`{c$IEXcn8R=&T2HEm*3nMh0~bep{RgkdPj+9(^Ygz0^w9JG@4%eOnB zvI(t1@82iauhgyXUddXVs~8~YfmjHXTaH$23(=)3b0C3u)b!x}kGRGJ{Hi=~qA1sU z6&sPJMFN?BSPAiKtz5r~uYx-;<`EdV6+<+-wkYI)Qw6Du}C)t5^81l)vQN%J);~pp&+d7 zX%9?b=$MZase2_Kfb0;KYy8Fh+9%hoX2A=;CK6(wO=V;Bjn=^IhpAuJhS;zSNJ28_ z>*7(lQDCnCy7*ohdWaPisajao*m+8f;$ zcw5e{Ww$mQt~^LYBa@+RBghqwU?oa@pLKED2A(&i^$*rimc7r0!<7Eq`^vEX;rr}j zd=>3uZH(vSmHSw;%$NZ^;{P;x&42d71`7*%_IoVUd*K=&$;1Exe$ z^D#x%s;`A>k!G*+fK|h6VapGL)L-6XEu`GXN?U0^p>kVAoEK3~iS4xvz*7P{H#}HN zjYs5*AFv_qUY&!EvAFL3fch=8sz0Q@zOnmQNMA_Zs#9f;58-T`FRMOeO^cM3%yhtS zLKZiNl^^raQf*@4g7P4Shn+(Ru1TLy9(tR#l?iKDgWh)^fRUvuMKp^|pL+vuMP&JuG)` z7OkKS$?!8GOO_mF&ZNCZ2oA3dR`CoO*d&@wPzG1a56EC6zlGWhJVQ7Qf~-IRxoOC| zrtGYiR~NhWgkoevqGHOVYNegfTA*f*+|x~D$W@=P<^{hh`N&B}#nkEH(7gwqqGoAM z!;3@Mcv>F)gk?3ieSGl$~efP&~3!`zaJ00wo!8 z3?`*tzm>OtirAhFq+wWO;!2u^SrmARbR94*iWRW6l$q>A4Nf(vBxX@DTSw_WaM>>( zQQDUdYr}rL*xp5-_5H_`{7-m|55*_Hp_2a=pPbod`c7(lJvs7(; zb$>#o^Ys25UMg}jpsG6r{9I^M`vPD;TVJ`I z$O*3@3{$)VnGQ~?YZwox>o@9YQsD+u0V7u?8=?WtK5k`}ThW~>!)k=i$V(myAQR)I zEicEE2s|sRzGUsgb2Z&BQGVe=4osEdnwYi=;*a^s3;qwnL_sb;*sJTB3>ev}qYm6Z zY9DUb6B$+(f5qBO)K-v42k;OR{FA6hJPYVgTnGz&cBVhwV*6D3RDb*tLJO01o~d#*I00^4ILb@H!HQ4&T#B z+#hDw^RVsgG_h(o1H!AZcz|t#kd`1xkOPs#;9&QB)96hF0$o`q0Z#%9DC#x|ibmii z5eW3=@T!11^FdQg=`jxlzN1{NyO>H*bb|M`n zAR@TBY3~`@jYJJV?Em$%t&s2EIIP|D5)u0^CM5~@zB$DxfiYb2Xb2?6LX*}M2U((v z*>{kow3=;}-J9}(?GzUju(2WZ2dh;`So<8r5XEdZaYr$`1`j2?@sLk6O~T2@OrZj%Cujf-Mn{Lk zOqp+b=OPI#SB|wFUhLlP*`btS5p-bQMLVGQc9R5t>fL zVNMEIK`a2RlYnQh5d`yunFV?Up4U*eA}CY97YO8-r;?xylCz4LDP5_W6()Bu=_ROT z{r(_v$KzBGHZMxOO~0cgKB^f6@>FY+t-Hi(=pZFhd~Uo#S0KES8U%i~Zkdl(@r7Ba zJBSvyfiR(=00;&6GYU#(Eo9|dHu-A0IMcwP2K|$z$FSk*(SZ9pLYxX^`69uJm5hQW zGIY>{p@Sws$@riNS^68xE+c7$3Jb8=BCl z@EEy~G2s9ut#Bk{%nap5M#ly^j`!nc$(N6_tgwQ{VP=^q!t5eZUv3tvs|XL3&F$=% zFW1gzW|jqvC@(T_N?v4DkH>m<*6m%lEW)~H*B|uk)Y(aY)UzwrGx>5eXVYA1>u~G- zA+pJfoTa_US>#0q4kBJ;Dr|+l!3^>uXRXHv!#i9j>Yd{qGe^A(yklk7sE+glFLDNX z2(pwHSvBTD3b;KkB?&2@T3m`7DMS`Uw%*;wXrSRm&Y*qm0wn??USzE%LKJ7fi>&Bs zW)NM$5oTsr4&KjbkdX?8Z8o5Ze`tq$K!3+5cTmGc%d@Ec1CN0egf zIHFj?2cUW<^;gX$aQn@ST*z+pp!hummZsUm)?b9?G1N5^gBiSpvel$AGn4@l3IXub zFWFVcxyJnPTT>rHl#ZR)i5Cd8J0Ub;`B(pop%dddDK>4tG`Ic;n}L&K6O%eye*Y6| z9aC{Vgj&+BGw7kbV~N^zhOMyM+V%Uiz0t}(Z2zPS)#?;NR)($OX4863OEB$fqKZ7> z*zRi3$@@~yZo^u9_%!;;lAr&~%#l%@9cyW%my>s*Vv-E&!08MqQ;z$EwFyUu;yT?< zlJ&;m%hTy3Luo;{I zzK)+xUx`O=C>K_{ zR~u3nqs)v+Lpp&%SK@{ZX>;XaFVDL`I~4zTUZxNl)YR{a)AZ2dA&b>+%vaBD4C_Lq zVcY-v#|@)w3^;OC+H%v7)q-c9Qc6Zm2TDpx^EjIdTg9T|EGMg8IVej%#KKbZ)1eE*IGnaq|gWv|gvgGZCUz3~Y$%%(+0UtMJJ=_75duJ$*Hx zzLM+ql^W}-zOKRuc1)D?FP_f0l%)69?JMQveZ{)6tw7rjZ_TT-s>F{=Rxw_D@n4Ar z$SRY3x~f=tno7%X#4Ju4 zQN$7$udw{F(1SqwlR^*vDcVuL6Nim-y@Dq|e2w7we^zcB5xlTf9gT|C;rcZy+0)5G zqw1O_NkrB!Fu-1smbBV*S^`6}$P_JR7*4Fxuf z%Qug+CMTGKp$SBBE|(|qoYr;qd!YVg>isG4n|^YI6aZw)Gu^ytO#BjlPiqmkCtx(@ z#;~xglS2CCiQ-qOR%DJyP)K>KtIO(>i4j^VyEe_8Xe89h`cmpuL|>qIJlWI3n;37% z%RIb4?Cqp5*g;}{yslG3NmNNlu185ABde`_H2g#DLw5J_CY|260fH073)l+i3RVsb zQdmaGchpr`-0)h9SJ>|G3Ou73!Z zt)!^Q2e3wklr+19)Z6sHo3fLSpMj$?(|q6yZQ4PhF92Nu`x&h%+B)#(CfFH#@G zfQw&83P?`Gpi7Ep3uin*KFD{>)BHo2%fzxz4y2s?@vVQZWov zUW@T+1Dz_cF0KGgaFp1nN+=tiDzZ7g2o+diqinTd8}E>|^uI%yy>nX`Lzzua|B|?= zFOU0qZr{_~*4}?YTM12Fnao2*hMbek3)8Y_G#%(qXN^+1HJN9(&{T)vC@qF)!i_q2 zlo4bw&9cDD^7mw(>xQNUTQ81gG*00?4DE3aucBE&#&H+}ZS!84a`~$!P#s2DSbgoo zBS5ch%qBN(h$aB?GRe(tvm}{rDV4Hfe2GFiiH>jIaD(IAv&>B8`Gp!vf&`L+%+Vys z;tlCIAgJ3@@DB~}E)Z!q1$a;6cKK?6hk_9c=t9_C{zeVq$Oidx$sPc^ecD{1xE@8!TuUSTYe&t~!#p830}FIV80{34SNZTJH<1M3>$ z4yWW0#y}7Seyophids~7C+a$fNBMPs;>D@7SA)>OYKh?Y{0j>H@>Sg<#!GE zkj8i0UuYK$kpz}PM7p)wPOZ5jhj-?Ux4omQL<*&&P`b6(PL)sO@!{@`kuP69zncAA zE$8O*x%Bil;?25k*@YIYGXU?$z~DOdbxhSzp$c$j*Iz=8YlOCs*lpLm(g-&=0Y!gr z!h80rrjxli&UCLjq5F%CVTRLq)@nk!l@<6-afR|as`O`7dV1hHdAZ5|(&-U}PRL;} z?&U$4G2wtR9RZb$82E$KNLL%?t*W<;(i7yB&2oi1`#F-x#J>a;?_ud#Y3Xw0uvWaw93?F0aPfV5S!>bYMUaXC;=SogHRFu|Q$4 zIqZNWBDX>~M;)m6FtHN~JWcR1WFrzFge6CX4;8RJA$5QP_q90PC%1gg6O zx61Q7LV==4?{3hKl@pO_liv`rTI*zLC;rS}o#ssDkZQ`y8@=)az1yJt0iS&x4+`|8)(8^J=*$a@t+H2V-qh~S zrs!Nbxiime^hEX6Y9cV%MII(_^gG~b9at?N>dc!Y+zbMb8Hk8>_jTqo5z9EF3qK?E z!-vpDPlrGhhNHmop1i*c@2St#qOqv|7rZw%D1cnGW`Hh=xG&59bm6$mMK&$wO}o58 z5a5gkol77{$kFSdr3H(N4(>oJ*8nd>W;BJs_`oaj+G5_>SX{HAn0GR868~s7PS<^8 zc0;=l$nM>sTrQTEcjJp=c}=?We8gk)>dteGyXD2*L6Z6M(e8Y57);^dcGFff+RQ;A zL!^P4GPM8Ir;DQsA|N44g+IPXATb=0@^etLZj>YlY|z-I1qEKgvluhj8Vm`AvKjQ( zUOjkDvsVcvP!%sHG(I65iTJ8{|AQFn4FakP)#8+cL z@wN3`m{b&U=PS}fRr6B@?h=V9zyv(f@)OgVQCdMP4QN0@FKlFF=bk(OboTAZn?z1# zBdas^ba-^L_a}JmK-i=mUCpCC`A{Pn6i1Q3yK2Dl*Iw8zBO+wvpjbo*Cx$Rl3=tvc zox#sKS5Fo&3rPZ0CjR@BxUtwlVbhLQj{Wr2)#0#w_IZCq4KdBA-$n|8ZCg1$m;27( z=O9S*x4xXNB52f)H-LJ3#hLK1yezLjlQ)a)miHO7VN<>lDDY59t>4wuTTh@DV;has zX#4`U@YdJlx{t&!s8QH8B5MebO>HV4AHKjbg;eRhX!s1!jyoWtj6wH7^g4?dBNV*y zEZn>BqWt|Vo`Y*=vPyVoFD{rV$E0O}7v%*d*d%~Wt}CHCU1}aL;qz$1EIFIE#iO)0 zH0OKeb^39ier)Ou>&jyJx88iKT{3ksb&TUuARj`Ow#q$c^Xq`HA$|DSU2dj4qB9+= z(U&@@6yszuL2`Q^-u7g)Zq%3eA3B#BQjwWJ&=(4!c!Auqvd)iMlIQc>gqn1N!c@EDI}T*XqsUNW0j zNs6W7rj2fgG!YBc150NROEbi_j-_%EogE<$$woD|&kcHex1q0Mkx)9B39ZMx! zHseJDP^Co2MfK8gQQdT0RA(I*)d9LGiijZW0O-cA#jnNG60HBKB0Mln2o!O4>=| zdzP)|I1PaS_fuGDL=qyt1NJi=8kI@zoQN?B5p;-IH(g4ranYUwdn(1Kk$(RXN}v|j zyT{oqFCW6o!*419smtut!jgiS3|$TSMWg^(A5=@VR0=abYJ=6m#7ZS1*^v~J0VLW; zGmUDmsslsW@<{!_O)ja$JV~B=KKBgNIu)~4MC=dncb!UwU#jqKW6`R8m{y!!a{2kZ z^%=Efo1xesM(5JD(N|Xv^)Ygq3u1F?LXpjO5iI>Xq;n{rIro*hv+J#>ph zM0Q8$=8WHU%Ino;YKZG8~(d zRdVDK(W%iMDg}_RJ^`s})gpxnpL7k?6HCM;Deq7b`<6SLLCcb&kL-3KwlFK@&I|d| z#x@zgh?k~C4g{hxocyIDf&aXSw}Kv+cQGG?LRVdkEzw?i|Hb^)==o+kTP-_Y!u#~u zHV2*11xKi<&*QleRgdGg$qYe|r+F^y*-LnbpnU+3&TT7@!06D)eI|~V(Ks;z@1^_+ z0QB6YyzESM@C+Nt(>;5pk&0=DDHhluuNcA4H1^1)BcQIXlAA~HPmFmr_g}{67|_=n zUBOGxPsIw6E3dhN=eo4rQhrl`-QaHdQ{n~|7yI`4#kzrRUoQR6oqW}ve> zu-Z`Iy{b{nOuRlJzaGWA8wX{JQtVJS$bqFih_8vIyoK?xTwKb>7>DGKrTlZ_MtN{F z@73amYP1Yc$d(`J6k53I0CpU5hznfhSTY7%{qJvxFDs{w!DhzJT6bgJtZcb^49`oc zlkv+K?5YpT!m-fq56g99`JFg8*sF|BHa?M$mH}kNsx9TQGJdViugVHb)V^*UF9k6^ z9>)(Ff0r*_#TTLX^T+f2;7-CFCTx!Fzo3JUbWt3%CO3qNbx__u9y~iwzC4~cZ*=fA zl(vK!NCT@@JMa%44|OtASnt*F3A}w$cN=slVA`yEN@#W7Rf=Ac~R^Wf!oE`xy+VT9;R`&epVq>Cs1w*l=zwV;dWP=1_bEBDdSI7B4a%m| z`2?W<_UXKle;1v?gRH>8r@zT(ri0b)ln0Q}Y+qc4!ZIU^x|c|Dgt9E$?Iq_NWSO$4 zlD7)3qqOyNyK-FQMQZ{62y0_p8*+9fwxA2;J(YZHNSpDKAgZIMT`7XvgPO{|Vtpm^ zs`ym@_jUtRPIj097s3-&e3Y?H24?Wg=JCxd5CLGUi7g7s0Qng*3ZYbMadb$7=yF?(RD(-ShbP4$)7dIO2o+2ra~f3;e7&07sgVT?h(?2*LD2 z@;~H?c{nliwQPAaZ=J83R!v~6xKYEIXEn3}rZW%C|2~hmjDw}^eDLcx@|l}?%ahl; zc|PRgxAKMgFq$lsU(LrHx0=T>4MF1v;2lzdD41mOLMD^nw}ZP-#(P6`}V)bWuBiDc8twOnNj zwEY7b4Xsk2U<6%S7v+6%IUv)E+_&r=vK%(MQBk5BU<5mX<+$}od|OCX zr#FwXt;=yac1TNlsb9r`o<4C*4`A zE{%pJxJv$O2|o`3A|(=Y(gGT$L@`zs&ZS*g~TV9|(x z`0yGGFLH5}LHAj#rqNjYWb*yIQ#422bfI&0sL`&|*r0we9drj|DbsZJg^*4v$rp0Y z{n(_=lP})S8xM|P)RzIdstOR<0yh!Nb<%E8XXEiW}?tX=)bSp*jJq4$}VNQ6Z-yLVHL@ z$2`WR`0s!!HVH%`EnohCH;~O&@J8~i<-8-PFl{*>k-SQyMW8_+ldT`X8ubu$!b)h@ z2q%y2(v9pPCqIDct+7LQ@4xZ@?{@O;iqX^ME3kE3Dd(?1hilceLdcW4Irp0t{Okmd zq5H}s9Fr$UuEY#qDa%#@H7n)rl~95nmL;qBe~fqJSr208v9jjk2YIrAsKc_=*sZOU z10Ld?^qFfMEM6(+KE#U}*kiQ5SB#QoEubwJ*nihUAjfi<`Y>;k8p-=zG0P@7@L@QP zYUKS7L)Bg+4?fIWrEHsvYEVS5V7gE{YYi`Hd3!>d#$~>yItT{hL(2Kn=E>P>@Iz{U zqkP&qs2o*_R;;Jj@UF%KHUC(H-(SHt?dW4%;&IbD-m!Qd)xbYp&0(!34Gz^KyO4ek z(8(qd$yBg#0KI*?4qM`<N~ zk2}yW-GIz}@-G{B-nsj>Vc3?h%7ku+H_A4fc+>Q4b5Inx!rnfzW;Z&> z1|%&eT3K(&Ne9`v?AN#Da|c-v6MH{B?w9{L$XX+opw-8$Q_15b4i@>eh667E`%_a%a*u5!L)^lURVayJTPs&nk-UAx)?5 ze(kDyI-to84=cJv0OCE*VZVRURtLnjig*Iu@UQhXEFyb+Q+EN+TtrWcjyWZ9%yRh_ z2*Zu?@D|<jg|(otmaJEEwy+Cu(ioFJE|ppGyMd zMHog@3po_H1Dz<+%mn1v%`~W!b>}GDmvrDo(0HBO^dovd}VQ-p}`xRsC1o>N1K*O#Yo zhr#F~9(cX2-{fOkp%?xp-`Waf{3d_j${)mI#ml_0eq_pbUxvBwH~GcOe82IMeC-uP z3~ycXD#rhkJnvPo=z4k0t8l5mB#mu+f6@`MM?shz*~VKW9kV~uUgNi6V9Q>^n){M` z=QSuMTV?9&{1PONf1M9(GWT`VidQ!487+wO#p`?ks&w4WKQN9;-wr+!0kRW!z|FZ= z&flTTx*K-zmOYet|l(9w5d4p%?sBUyoZ5+mxD`;q+d;+;c?ABFVXq|wd zvi8M~wCzGm>L$1lE^9-OR)Kv{BkjxROSKsiR;z)@upG(EH+h$w6E1(#UG9~oZ}NWK z6_8|5W+l{sxgqM$)Z-S^>NRgu@lPG7TIYh z@0FjBk0ppokV4V>7=hPuw(pin0;9^WqB zK70bjumGbUn|d^b>8d?Vn#j;J(N3Trosc26Ie{X&NmZU?Qlv@5@|p74UHoOpjcecH z$~jk{e<^0tFK z#ZQ-CAUsj~ruYHg$L=Hvl0{JbCXAy1?Xm+n4e+)MA3$K;cDeKbe;=(>9fZ!jO0GM| zZwCN9KIYq!epl!?Af1PJC^l4>!t_v8Pnl@XI)o6V`EvRpgf;DwkDxT9VC^Bk0nJ`_ z7zV9Xa>-%-S<+scDmQ+@*CZXWKRSL2XVBl|)1UGV?f<4IfIq;s{%Xcb;T60lc zSTr3`8c5N#79#z9yF4zNLAtKBHIi=CynKX@Fv7?5aP%y|e1wb7n!9~#Y!-ltyx`2c z>!cZ&b#r&bm9rxAYNJY3HX-;8BB_b94c>2D9m`D@aK_66`{atxAS-vtcRqu`bFV!9 z8K0XPsku${yh$$poHw(n=^_Iee#V3t*K6X7sJZ)doMibxy1w8|8+>37oz@ccV(sST zh^u*9mVCh*q5Uhr;J4=OO&AewTEd8q=rqZ{1ROhMhc9{Srn;?EoC|W|w{apZ18l_V z;PN4G=7;jSFX2!6P(Jx3zo5z6x^Kkg@DL()unK{%Op5IFn2x|++4L(c0u4Zc@Xwi+$)n_`rbetyf5Z zM}MTJ+q^f!FziT$R0`#6qcrsmV5_o^COw_9p8z~#F6iS zT~kLBEZ4{ODC6o(d6!2ar$9 z$`##xfdtgIIHUkn`7r=TB~V~20Nj6!5F{V_5en%Z+2;p@oNkwQ{-ESq$&U($m;T7R zH#}g^5@G`v1zu6-5D?L-AN;7Q0zn&M6hA+qzv1Zb+n>QXssM`9CBd0l*jo!O;s#SSH6~*Ef!3(LLCR-nkDZUBDxuG+;g)iGPd9I zym%r8VTag{1c2*01H#V@(Lz3I2of4^8G;rkBz1-xKc9&+bKW6H)v9l8BVci!lfkF3 zTTW-9D?oab#W!yzG~W!(A911i`?$yey6anZu4 ztw|ENqzvnQYp3Xi34cq~cF zTP~NoMf285qLW^R^Wj(mRwpbAI&Gu9EHw0pW@p?-Lic(_%;cVkO5fppu4*Qx$>N zBMcOuxLaQ77ule}48JHew%4roivx{Gjj^lIt=N-M&-q(&JP~?ktgx{`0cLfZ}bWMyU%w zXpf|Rzqs65K$6n8WQ)6#?p7rZ$RD!B zEca^tQB7x88_3%m2nhyjo+H{}hj2lTxGz-)_C2=r>@r&}GCa6DOZfGRB*>&jW?R1@=PzOxVvazD(KbtG2{6}Na2^E?&5t01`E$*Rs z4+#N%Srbu}8jY7!Q*^UD*aVVrk3?icPdqL*MPc)I2~PML(FPpYs$Y^D*!ECLM4x-q z6eHY9_(06l9gLYZW>7Sz)u&%bbj#8B@C9*2o;SW3xwRQMd|gO!_|}kk-X0@u4fPmr zZK@dk`KDs=NzhZ-EDk+3nDV)13O!#n6OY>DBim{MCP+7byt!h38-0UYi)OO01?Kd8 zd1edIJXSL&p(ZT_s2P;YTi_;F%*&SI2u8~b#1Qtz9C=$)Ej#4R((Zch-gQ#KfW|pQ^Q)CkV3~H7sRJn zj$jt1z9+$2GNp@HYg4v98;0yqES|tX4izgZ{8B8ggH32y+qT7(Vzj#Q*Pqu2I2-_Zlt(@Fp43vVNEa5 zEUr{aol-}7iT*i>;Xf+;6xRU#Glb-z6XGCx*qvCAs>Gu5ocv{rY3>{vap!$1iFhm5cj}NpYcJNdrVP&!f>`n$816 zKjWCZc7SMcVpvd;Mn@8%;{~d>AzJUN0V3b?r22FrH+7)MAG$D-OXN?+FRj7O3VeS@ zO94M7V(%Gm=&j%QJ%S-A|oWIr4ERK?XT zMnJfHd!T3^ey(m_q@QF33kQdS9%x$kl}4A`BP2-y2m>8?Zd47#T$9V~dDR?z)~c(N z$bf!P<<-s94vJuMQ6+asnDV-Fz?{eAL+6MV;duUnZGBoO4x6eyTs?^4_i(7VG)Lf9 z)vDi*TkzxYmK=cz9TB!(ssj_?|4r3QrWh@w70(H|>DEdYofiLnjy!*m$o4!I!HcXI zB=S40OK8JGkyi1;PRz!sFN*4Vk=lvI5Xu9CM3?SADQqIbO^pY^FS<`6xB9hpz^lSF zqG4Yu;Fww)bgp>Sqg|mCt=Hf@(X+kg6LrfvX$W)(knVbN1dh@8Oaq=`cmnW(!?-lE zIp>Ky<43vdJkcY8b=6Fck5BymJZui_NcO&iF)5DKln;gujHODPFCO-<{t`?P#O{PV zHqV?d&WW2^o}r>s+_3u&73QWj<;P@Q5;R2BuyLZA!jSC=3 ztEG8?D2@Yq_o`36hq(%zZKqs4j8L7eW7{MD6 zsFoSSMM=RN@{lE~rX$nP3kFU^SBl>&mtTZgzAJ(vxpcV5&5TMK)fG*Zzzy=v;i9;0 zw4lmKiOyL%^lhU%Cf?d!D4LizC_ua_hS8Qg6ipFjb2;%sVU9{{SKarlz>aG-QNYoS z{ec@*+t`}g6i>22hzc!Daem@3{TGScI>HP}EeXuIve!kTed|PFhP+50&{Y&yMTMEX z=OPizOB?`xzLQFku)`v@=OWQ4j;nvVNVJS&kd_yV9&w-L7mNIGqL`)L?XluGxINYr z;Lu~We;7uUvW3=LintL$f!o0pXn}ckkViq=dsI=Dt%XWooEmY*M)IS~y9Db_EXcFu z5>do3i>fXW4`fE=iQ){HpbSWwMUzFI?0u=Y6v3}krifF7GGBk0=;B#GD={`&N2NJJ zwD2rcpCqP+j1Z0Eq}I$4qFMLfNjQP^aPER|w19>L_ab_CScwVZjQYCIw+8L zUIDB|ks)_oA=<{V8@p1RJvKoq*wMe(5d?lzYnzkV3$wbV3|A*6@DnXxk)l|Q=>&{o zK5~#F=cp=7lJAi#p`-scN4|TdxU9?9C$ym#(kLy7%kBQ6(8)0)p$2KuNP+eXM~VxZ zeW6;4C>5mM7%Ki1GA1hcrDv3A+d2BFIFw>y4LbP2l<*APPpJq~2d3l1q?|Ac``=e2 z;z7=5SOpG`5(VyvaF%JM*zq2f%}b$5SIeQL*a+S)t4l?8*jAzK#n}N_jg=@es}v{l z`nZ%UTU|Sc7d|<}0T76RABYGT7NomUcywd&scG8?iTujd^<*X<0U}aHrUcRZZxZ@7%MI^lD4YiyJT${ zwzl(R>NprB=E-x%iCuW)UL{(e^|U>EK>~zz;i@{CBp5Sm@5t$CfHEd)p{Cpe? zQ+im2X|#8A=xLak$VMwi0fNA2SS&iMNNG82q8gTel4uh*QA;L?MU4}LtXgsr;b1^} zB1-%yk4_SEf+vq1MsnUuc7kGNzC0F3!ZAfXyn!_akm5meMCEW3h8|{RqX*6#x`T4XYqNvLsL{*u}axma2p7 zHmn3p$iR=^9a9_EO>$Zlj5X`!swy$WtHKt2pBni6r#a8SFqbw%WNI5jR~#u5IZ5|X zgZRm?*)!nwSR|jCA=-P6D>+IF?N>9zE19)4Ptz3P(=6|TQpjKEnv_cfRoc#x#0?JAok zntNgjT!&fW(#-Ew>Bx2yrD>@=jr%5Q!@|0+CsWILoiBgDHJa8-)!Q%{e!S2gUdj-1;u zinUyDxlzk9RD@+GI3t*C+O-T*iI!!C<6FzcV0EKTYe$b2kaTb$Yo#c)oN$Gp_LagJ zw(MPmkM=`90Ne~r1|=`I^D%ncUh2C_^a|4kQdhYj*`>Mfpdz@B)(ZA&cRjo|de9v7 zXpghCqEElT8a*6~?G?-g1=yaW$5)B|mJ0@5@2?UWmQM|==W0AAy6av2YSqHkBFM6e zN#@Bn=W4MQ*QH)qjpgBuG-!>;&$!#=*2bz4`${kv13Y$3+gACMbWwU{8SS#WN8Er9l-fS;$8nz=^N{{KPxgXRcPl}%EIJFj| z55JS_7=^wAwnmL!FQTVvuYh6=h$lKUvpQ1$T6ojgCKu4gJkwUQG>0Cz z-!@`{NOIoIEry<+7MQo`84(>k#9%%e4`FJ$%cXJs0y&%D@K4_& z5H65Ib+)$Cl1*Zq`qMw@(k9WXH!(AK&5Ad-a%t+c*f!I}O`^9#)N?a73+$$x&0-4n z&8^)m3PMh4)M;yH{2yd!sfEq55aR^-TLlbTgAYEceCEtF6Hf8Wm}~oN42KFRb}-Gd*NN0 zv{e+N$Mn!v5g&b6qsG;SyE~H@{9tsz%U<8nw_C+^-mkJZv?*!#i-T9M?O<(Vz&5PK z?WTF##MHpuT;yn_^}~Mj<~9iaS9EEc=&i55;0S-8?U+VBOry7B;J2Hqwu=%Y6yD>* z#KdlTdplO?t`REoFpp5s%{F&#^;g}8{j@ny8@gM#yyG@}a63a0FMQ!jNWP-sub{i= zL9u6oE|p%`POj*eez|YXgav!oJy^I?WU-}SLq6<%(2CgFwAIA7T(zCOzCsfo5^+Pc ztr3t-u#ERM9X4r)V!1?JOUJmot1(A@Ri!m#>PeJk8M*8R`@c z?`poGj}+IAGaVP$;`fgoA~B?M^?4H0Fxj;zY<*Y^#w~xt9~R58F#77lVrrO1X_R)A zi+fcY7;h`g*eNz+()jhA;?e}&8%TENpet>dfy0qJy@KPsJ#+@w4362zrH&y2>b6Tv z3N@nS4RAX7cu&;&2`%1*Chj;ru}frzx_3aS+D=<7E4%^fmt9EU6AIsrGFw5jc4PhY zC~eq{&h06BZMT@zYMk}Bq?M3sRrhKF zu;)>+R9VrH^q9c8={KqMaWvE?=;Y(*7OtS^Cq$_7U`Or~nAeBn>^)liEqkzFt@%l! z@Ars$nCI>lMw555~ql>hq+COVqYEX#I4wFs^G* zaT$$u7jqCcy|{|A*^gA3GgR~p;ejUKmy0syF2$u!4!8Yw9XMg-r)*W5%GZ=&8F@He zd>Y#9el4wMDf|FBt{Z64$2bDF;wM0-!G8Ae89K302qZ+B%h?_-t6vRX!upHySihd!nHcDxCIH}1nJ{zKKjReOWn z#%nFtq`Hrb>Lad_{2gxtUEZG3yy3juHDl8=_pIi}s{3hO{TqJrTlU!hr@skqu-(HO zb_)EK2Y!Xz&)~^X^GF`^bjq<-n>Y~^mHw^+zx%*K%PzSqTuxozcE~`T(W1d3A0OpF zoXft3lyKx{ItNsz-&W(yy{ztIDNA0&{vsXod61*#t{I(9#`&?06q17N?Hg%Sig{4_ zMt0ryz-8#SBg4;iQn`YyZoOVvcEje^7 zM|7tT_KQB=%QgA(?F^UqZ!H{4JmkQG+tIp^8-=pYQ!pR6M)aS*D4zG-0Hd(*!K*wnkM1f2Ot4)03+@JFb@O_0vJCgH{N8TMaMCA z8%@WLiTue@sCJAQNDu#8Ki3W>XFz2Bqu3_YnZ+$WdC?(BxrX3$qU( z7l0mG815A}nT7$lc#R(?GMs8ph|u66-a6Ss5E;`mgzh~dV!D}x)ie+2ZWT=AV4~yg z6QZA(FdF83!1aJb$lFAGE4_4222Ne@ySv~Ekrs3QP{;81#q-|5`~0n@DZp83ncMrw z_q4b#xGd0W8V~df02fjj9XKuewuZub9MI){dU+c7THs-@f5*paYQ}dZAQlh=yaC@T zKtI43U#n>mz6F4A51i%16CVsN#d)}=>UgU=g0wCkHUVd$G7{L>#hvrP1RCxaU=H!X zzwd(Y=z>=O?`w+bjNn-$5abcT3kFUy86hs0Rvn?*8w;? zhP;0PVpt=2;?azg*XN>dun}wxtO5YbDeH5Q?Y3sQVlh}wOW_-7ZTnm#2XBDpN`P%C zfTa?*b9^qs#}vcJO2>#Z5`kHL82BOJtbGhT67`oG0t1f$&Xr&}<$ZztEvI|G5Hnj1 z*EG0v_wb$E1!sah-Dd!2W*gy|bFAd1nXQ_lW07LjYv8Pd{5I^OE`z?#m}1D7UO zDIC!S9}P=?_`MBkj#b!B09TGB0lN157-kku{=usT)9_tF z$G;NU&ZtDIR)ib{|5QK$>{#;|?ay?Wxu|CX_-6rdR5t-;0cHd2fH?pwfZZH`Qa~A? zoT|RY>4v#<@M}zn%%v+|W7+y5#h<|*=WR6OjM&uk62?!g>(>KV(|mX6MblnVzY!xM zGT~GNtL+eN&KUm;3Y;|i8UNdZ&*IZ{_L}hj2`vIUEfc|+-tcYuDE-Q03 zHaZtNYnvJ!O-&7zrOi#wMw?;EtDHBcwux>%E6U@?pb2D3+q_Js5%?PTD&WPy$2k|5 zF6O|swCA80z?rKC7zJ9xeW#&HEq(Bv=ftft^ptEoSLe?##_jx=@$;p+?FvSjw(k#03@0Nf9F z3~&H&FrB>rBdS`JK~~d+fmYK`fJB%t;X4Rl{`JJy3h3{`z3>eK_yeKu302~JVvCRB&|E7O@tB6{v zyC6curf-#F9jh;3UmOs{d&r%!OykIBoRB~}?jm%GbCy7yP%t5j3{JlTutdmsmCGbkch#s^m0^HcH* zoA@u!VJH7$*;}SJHrG_qxy$I#^rtt?a;8u02zzni!fB1UbZd7RMyJB0pb0{TdBtV2 z1MO3g&=pk%ssmiCTPwi2fz$K?|6a(x${I~~>4b!G8~Y0b|flg66mEP7AM zWHsS=YOj_fsn9HMQ4^C%=_h+rl$Q*}Qzcf5oa2@hNvFN#U?quyEOLuE86p;yhU7o0 zkdiJ{%2G9@LASZ3Ql`;}D(OdA6|!5m)IhMtUS8Ky+t}3Lbkw9hO>HrKt3>gum>jW)5cZV#qH*`g&(MwDO=yW)PeiAV&pf`*KRU zKFw+Nj5rLhT*{$pZVSu9P#W_Sj=ik!CcS%RYPv8#XI?{HiyZ^Wyeak}_vtJ;SuIn& zUG9{cCnL!3XJIuL+lSH@f%1SdjJ5^IsTtS#cP4628LnY-E2|+B&himG*{!0kvB_C( zZ)~b-aN411%SY0zZt`K(*1+{Gg&qx*sbmk5fq{92_PjHHSj=X4NZ24H^}iCZQMCOB zk=cKAI1{*_+1aqz-r%gMYtjkSY0aN|HG^~9qTr)kPs(~VD)t5+4&T`1Xlg9bn6DYr z#`x)()v&R&r>87a$1SI=A+nN|gvbbGJlz)}A5|x~#LW>ZL#&1V9)Z#(X1eR14?Pl! z!k^Skx85WhB7eQ=_4b3XD`*gHC9n@gbbxQmxYBU_K_t%_BmW% zCp4zf*+2-=kv>Rz&UC$&j*7rUkz=KR1^_ zXJcg$6oa#+na0M-W@RD06f29=7MHLj#mNwL(P%n1UZT9?q`$h@^oJ>=1si$pWaw?4-Aj8xpS_`OUHkO_lAbY7x4KlM+TQxH6GCQqJnV_q)AADrI z@2$%4YvwalxsCogP!7W#YDeQ`vVUE9xxK6!ie#CRPNxUS=-%0l6|8w%bZh%UXW4Qk zlH;P_1lg0e50Vl${bjS~DC#>{2KaFtO?B*ZB~6N#NfZz-Ex04=8h&b;n^v=*Eb|&v z$@Wy4K`+Lmi0)u&a?E!snHmw4m>_%L;!#_IOf#=l(sWBokiocgzJ!)eMmzgPg3K1F z>!IJ7Y-<|Gh6dBA-k>DwK~^V9KQ9or(ZeFpyvd01`9v9v_ulp<$=CorczHuz{T2_( zL(O+7IUH9MO&=_K;eLWntfxSB?$-E7CkIO(^F1zN$R|k#P$YUSj*9R9NiPZhV9IoKD0MkhMC)SUW75`7o6$J-a;3rA8`Bhr-T$4 zXnxSsd-tongUW|=vh~R5o)p>LyhAT=SN!Sj_?ZI_LtQ{&jiuyN+0DFDneI`)?|_x^ z7uuF8N1JycTCIVzq{*IGYcu0!{mTp)Q`x z!1?W`lp;+ok6pnu>-h|sVcxF{)pgA1Ok805G|EwE3a3c zq3xM6-}hO?Rihz!1DW?esL{Q$q}BW!q(tjnjLwq1@&3u|EU3{JXit_*_kB?r!bwkS z%%aqJGA=M@d|ivPp}@H)9eU~@MPBi*@o+>~uO8B6o2p1akdQ_a=&15pLHYOGZs|b@~ZUE3b?iM_Ky2R6hb*?>#y^Le?n%LrEj$0^AX^X>2aFH&)K8{g+asXEasIXe3?E!!Y5@2yo{yo6Pn*sobo) zXSx`%cDS@s|2*`qGCsruce2s%-%5)oue2zNa8t*`QQ-P1k8Jh863wrpWH~OZwY%#> zocR-MHr41nKU#+3Vl9^zPR<9%KBF1=a;EunrIOBGCnM>-d^ry9cT`hiKVWEX18LIr za-{OVwBdSLsC-GMu9pSouP{xgbyW**kV(qdwB!aPdIpn*Nd+>S!V9Do_tGa8$Pu`8 zzPdo#&EKJkZM{JbAyjSM)qhqSq$M0N)Hfu3wQgrY|rxwZgf`URzmOTJ3CXqmhN+-mSE*P;Nl` z7Clkki1zKniE@r5MGv@)v3ZytWJ}+4-ExIGnLATq^!g+@#Al`YvZ4tBL7zlYd=Um& ztLTj)=`gQWT?JB9i~?ChZN+l3?;UEYE;o&OPvWOyY4yHS9Sci{YJp6op*KQ}|5+{5 z`Ssw9vNxWAn5O6PhZ}Ky*gCb8qnOY*SMN>aPL_FClD%cJoQ%n_W0Pg0|3>w8ovKDu zd}^(~Qg6i|YO<}QjTkxLb#ttB$k z`);)#htLKgmW+zJy7~9012hHgpVH9W$OTecS#~c)Pm?W{`_xfd^t2#IhR}g&av-kT z{b-sTYrbF2*F|*VblJ~q8+ns=%t?n)O( z6KA0k{DtPsl9lFNszd9wc|oAlQg&03QDSq^#r&9h8@0}n zH~YI&d0bsWZFA&enLf|i^aL%LBX388q&Q@gc`rD#tps^m?*Je7QM*G9#r35p9rAj= zr#Oe)0HmQWHXYnq+aK*lQK`)H-LFp3ofhbV(NT()>1lN_%i16cEki4EfGW!5Nu`7G z%TcwTQ9Em7X2!D~*~!d&PRoutGwXTkaLPL)Ur?nsE`Cw%9j-;UZ zXko4z=;!_JI4ndP=;!C9HrWrU`~G-h0j@zQ`ulmQSEae&chd~$O!Kf>qmOx-=gICw zb5R9fqQA|B-b=}TnFh|2!@N>*UQzGu9N)K?UsYS&WBbYCuj;x^$KnWsoTj`id**0o zY4bd8wewO-?SE6N-N91nR|`6Pe^j+5i9m delta 56212 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 pbtes entry, } } - -// Same events as map_events, emitted as test.clickhouse.Events so the message -// carries the ClickHouse table annotations. Output module for the -// substreams.clickhouse.yaml manifest. -#[substreams::handlers::map] -fn map_events_clickhouse(blk: acme::Block) -> Result { - let mut events = pbclickhouse::Events::default(); - - for transaction in blk.transactions { - events.event.push(pbclickhouse::Event { - evt_tx_hash: transaction.hash, - evt_from: transaction.sender, - evt_to: transaction.receiver, - evt_block_number: blk.header.as_ref().map_or(0, |h| h.height), - fee: transaction.fee.as_ref().map_or(0, |f| { - f.bytes - .iter() - .take(8) - .enumerate() - .fold(0u64, |acc, (i, &b)| acc | ((b as u64) << (i * 8))) - }), - }); - } - - Ok(events) -} diff --git a/tests_e2e/dummy/src/pb/.last_generated_hash b/tests_e2e/dummy/src/pb/.last_generated_hash index f4cc37fcf..875c16c96 100644 --- a/tests_e2e/dummy/src/pb/.last_generated_hash +++ b/tests_e2e/dummy/src/pb/.last_generated_hash @@ -1 +1 @@ -d232da728c17f6f41bfa09fcd1b9c60bc8d79ec86a5559dbeaf6a18c51d8e975 \ No newline at end of file +cb8b989881857369c71f2726366159d38f11bab49fe54f60ca4bcb1a64581377 \ No newline at end of file diff --git a/tests_e2e/dummy/src/pb/mod.rs b/tests_e2e/dummy/src/pb/mod.rs index 40f85fbc1..9e9fd8c1e 100644 --- a/tests_e2e/dummy/src/pb/mod.rs +++ b/tests_e2e/dummy/src/pb/mod.rs @@ -10,17 +10,7 @@ pub mod sf { } } } -// @@protoc_insertion_point(attribute:schema) -pub mod schema { - include!("schema.rs"); - // @@protoc_insertion_point(schema) -} pub mod test { - // @@protoc_insertion_point(attribute:test.clickhouse) - pub mod clickhouse { - include!("test.clickhouse.rs"); - // @@protoc_insertion_point(test.clickhouse) - } // @@protoc_insertion_point(attribute:test.output) pub mod output { include!("test.output.rs"); diff --git a/tests_e2e/dummy/src/pb/schema.rs b/tests_e2e/dummy/src/pb/schema.rs deleted file mode 100644 index 4ca191e89..000000000 --- a/tests_e2e/dummy/src/pb/schema.rs +++ /dev/null @@ -1,283 +0,0 @@ -// @generated -// This file is @generated by prost-build. -/// Table defines metadata for mapping a protobuf message to a database table. -/// This message is used with the (table) extension on protobuf messages. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Table { - /// The name of the database table. If not specified, the message name is used. - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - /// Optional field to specify a parent table for establishing table relationships. - /// Used for creating foreign key relationships in relational databases. - #[prost(string, optional, tag="2")] - pub child_of: ::core::option::Option<::prost::alloc::string::String>, - /// ClickHouse-specific table options for configuring table engine parameters. - /// Only applicable when using ClickHouse as the target database. - #[prost(message, optional, tag="200")] - pub clickhouse_table_options: ::core::option::Option, -} -/// Int128 represents a 128-bit signed integer type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to Int128. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct Int128 { -} -/// UInt128 represents a 128-bit unsigned integer type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to UInt128. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct UInt128 { -} -/// Int256 represents a 256-bit signed integer type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to Int256. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct Int256 { -} -/// UInt256 represents a 256-bit unsigned integer type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to UInt256. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct UInt256 { -} -/// Decimal128 represents a 128-bit decimal type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to Decimal128. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct Decimal128 { - /// The number of digits after the decimal point for this decimal type. - #[prost(int32, tag="1")] - pub scale: i32, -} -/// Decimal256 represents a 256-bit decimal type for string conversion. -/// Used in StringConvertion to specify that a string field should be converted to Decimal256. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct Decimal256 { - /// The number of digits after the decimal point for this decimal type. - #[prost(int32, tag="1")] - pub scale: i32, -} -/// StringConvertion defines how string fields should be converted to specific numeric types. -/// This is used when protobuf string fields contain numeric data that should be stored -/// as native numeric types in the database for better performance and storage efficiency. -/// Usage: Set this in Column.convertTo field to specify the target numeric type. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] -pub struct StringConvertion { - #[prost(oneof="string_convertion::Convertion", tags="2, 3, 4, 6, 50, 51")] - pub convertion: ::core::option::Option, -} -/// Nested message and enum types in `StringConvertion`. -pub mod string_convertion { - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] - pub enum Convertion { - /// Convert string to 128-bit signed integer - #[prost(message, tag="2")] - Int128(super::Int128), - /// Convert string to 128-bit unsigned integer - #[prost(message, tag="3")] - Uint128(super::UInt128), - /// Convert string to 256-bit signed integer - #[prost(message, tag="4")] - Int256(super::Int256), - /// Convert string to 256-bit unsigned integer - #[prost(message, tag="6")] - Uint256(super::UInt256), - /// Convert string to 128-bit decimal with specified scale - #[prost(message, tag="50")] - Decimal128(super::Decimal128), - /// Convert string to 256-bit decimal with specified scale - #[prost(message, tag="51")] - Decimal256(super::Decimal256), - } -} -/// Column defines metadata for mapping a protobuf field to a database column. -/// This message is used with the (field) extension on protobuf fields. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Column { - /// Custom column name. If not specified, the field name is used. - #[prost(string, optional, tag="1")] - pub name: ::core::option::Option<::prost::alloc::string::String>, - /// Foreign key reference to another table's column in the format "table.column". - /// Used to establish referential integrity constraints in relational databases. - #[prost(string, optional, tag="2")] - pub foreign_key: ::core::option::Option<::prost::alloc::string::String>, - /// Whether this column should have a unique constraint. - /// Ensures no duplicate values exist for this column. - #[prost(bool, tag="3")] - pub unique: bool, - /// Whether this column is part of the primary key. - /// Primary key columns are automatically non-null and unique. - #[prost(bool, tag="4")] - pub primary_key: bool, - /// Specifies how to convert string fields to specific numeric types. - /// Only applies to string fields that contain numeric data. - /// Leave unset for no conversion (store as string). - #[prost(message, optional, tag="5")] - pub convert_to: ::core::option::Option, - #[prost(bool, tag="6")] - pub inline: bool, -} -/// ClickhouseTableOptions defines ClickHouse-specific table configuration options. -/// These options are used to configure ClickHouse table engines and optimize query performance. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ClickhouseTableOptions { - /// Fields to use for the ORDER BY clause in ClickHouse table definition. - /// ORDER BY determines the physical ordering of data on disk for better compression and query performance. - #[prost(message, repeated, tag="1")] - pub order_by_fields: ::prost::alloc::vec::Vec, - /// Fields to use for table partitioning in ClickHouse. - /// Partitioning helps with query performance and data management by splitting data into logical parts. - #[prost(message, repeated, tag="2")] - pub partition_fields: ::prost::alloc::vec::Vec, - /// Secondary indexes to create for improved query performance on specific columns. - /// These are data skipping indexes that help ClickHouse skip irrelevant data blocks during queries. - #[prost(message, repeated, tag="4")] - pub index_fields: ::prost::alloc::vec::Vec, -} -/// ClickhousePartitionByField defines a field used for ClickHouse table partitioning. -/// Partitioning splits data into separate parts based on the specified field values. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ClickhousePartitionByField { - /// The name of the field to use for partitioning - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - /// Optional function to apply to the field value before partitioning (e.g., toYYYYMM for dates) - #[prost(enumeration="Function", tag="2")] - pub function: i32, -} -/// ClickhouseOrderByField defines a field used in the ClickHouse table ORDER BY clause. -/// ORDER BY determines the physical storage order of data for optimal compression and query performance. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ClickhouseOrderByField { - /// The name of the field to include in the ORDER BY clause - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - /// Whether to sort this field in descending order (default is ascending) - #[prost(bool, tag="2")] - pub descending: bool, - /// Optional function to apply to the field value before ordering (e.g., toDate for timestamps) - #[prost(enumeration="Function", tag="3")] - pub function: i32, -} -/// ClickhouseIndexField defines a secondary index for improved query performance. -/// Secondary indexes help ClickHouse skip irrelevant data blocks during query execution. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ClickhouseIndexField { - /// The name of the index (must be unique within the table) - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - /// The field name on which to create the index - #[prost(string, tag="2")] - pub field_name: ::prost::alloc::string::String, - /// The type of index to create (e.g., minmax, bloom_filter, set) - #[prost(enumeration="IndexType", tag="3")] - pub r#type: i32, - /// The granularity parameter that controls index density (higher = less memory, lower precision) - #[prost(uint32, tag="4")] - pub granularity: u32, - /// Optional function to apply to the field value before indexing - #[prost(enumeration="Function", tag="5")] - pub function: i32, -} -/// IndexType defines the types of secondary indexes available in ClickHouse. -/// Each type has different performance characteristics and use cases. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum IndexType { - /// MinMax index stores minimum and maximum values for each granule (fastest, least memory) - Minmax = 0, - /// Set index stores unique values for each granule (good for low cardinality fields) - Set = 1, - /// N-gram Bloom filter index for substring searches (good for text search) - NgrambfV1 = 2, - /// Token Bloom filter index for full-word searches (good for tokenized text) - TokenbfV1 = 3, - /// Bloom filter index for equality checks (good for high cardinality fields) - BloomFilter = 4, -} -impl IndexType { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - IndexType::Minmax => "minmax", - IndexType::Set => "set", - IndexType::NgrambfV1 => "ngrambf_v1", - IndexType::TokenbfV1 => "tokenbf_v1", - IndexType::BloomFilter => "bloom_filter", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "minmax" => Some(Self::Minmax), - "set" => Some(Self::Set), - "ngrambf_v1" => Some(Self::NgrambfV1), - "tokenbf_v1" => Some(Self::TokenbfV1), - "bloom_filter" => Some(Self::BloomFilter), - _ => None, - } - } -} -/// Function defines transformation functions that can be applied to field values -/// before partitioning, ordering, or indexing in ClickHouse. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum Function { - /// No function applied (use raw field value) - Unset = 0, - /// Convert date/timestamp to YYYYMM format (useful for monthly partitioning) - ToYyyymm = 1, - /// Convert date/timestamp to YYYYDD format (useful for daily partitioning) - ToYyyydd = 2, - /// Extract year from date/timestamp (useful for yearly partitioning) - ToYear = 3, - /// Extract month from date/timestamp (useful for monthly grouping) - ToMonth = 4, - /// Convert timestamp to date (removes time component) - ToDate = 5, - /// Convert date to first day of the month (useful for monthly aggregations) - ToStartOfMonth = 6, -} -impl Function { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - Function::Unset => "unset", - Function::ToYyyymm => "toYYYYMM", - Function::ToYyyydd => "toYYYYDD", - Function::ToYear => "toYear", - Function::ToMonth => "toMonth", - Function::ToDate => "toDate", - Function::ToStartOfMonth => "toStartOfMonth", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "unset" => Some(Self::Unset), - "toYYYYMM" => Some(Self::ToYyyymm), - "toYYYYDD" => Some(Self::ToYyyydd), - "toYear" => Some(Self::ToYear), - "toMonth" => Some(Self::ToMonth), - "toDate" => Some(Self::ToDate), - "toStartOfMonth" => Some(Self::ToStartOfMonth), - _ => None, - } - } -} -// @@protoc_insertion_point(module) diff --git a/tests_e2e/dummy/src/pb/test.clickhouse.rs b/tests_e2e/dummy/src/pb/test.clickhouse.rs deleted file mode 100644 index 9ff96f7be..000000000 --- a/tests_e2e/dummy/src/pb/test.clickhouse.rs +++ /dev/null @@ -1,28 +0,0 @@ -// @generated -// This file is @generated by prost-build. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Events { - #[prost(message, repeated, tag="1")] - pub event: ::prost::alloc::vec::Vec, -} -/// Same shape as test.output.Event, annotated for the ClickHouse sink. It is a -/// separate message rather than options on the shared one: the annotations change -/// the module hash, and test.output.Event is what the other e2e modules emit. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Event { - /// ClickHouse requires the primary key to be a prefix of the sorting key, so - /// the hash leads and the block number follows. - #[prost(string, tag="1")] - pub evt_tx_hash: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub evt_from: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub evt_to: ::prost::alloc::string::String, - #[prost(uint64, tag="4")] - pub evt_block_number: u64, - #[prost(uint64, tag="5")] - pub fee: u64, -} -// @@protoc_insertion_point(module) diff --git a/tests_e2e/dummy/src/pb/test.output.rs b/tests_e2e/dummy/src/pb/test.output.rs index 0c40a3840..951643dee 100644 --- a/tests_e2e/dummy/src/pb/test.output.rs +++ b/tests_e2e/dummy/src/pb/test.output.rs @@ -6,9 +6,12 @@ pub struct Events { #[prost(message, repeated, tag="1")] pub event: ::prost::alloc::vec::Vec, } +/// Annotated for the ClickHouse sink, which has no default ordering and refuses +/// to create a table without one. Postgres ignores these options. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Event { + /// ClickHouse requires the primary key to be a prefix of the sorting key. #[prost(string, tag="1")] pub evt_tx_hash: ::prost::alloc::string::String, #[prost(string, tag="2")] diff --git a/tests_e2e/dummy/substreams.clickhouse.yaml b/tests_e2e/dummy/substreams.clickhouse.yaml deleted file mode 100644 index 40e11ac06..000000000 --- a/tests_e2e/dummy/substreams.clickhouse.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# ClickHouse sink fixture. Same events as map_events in substreams.yaml, emitted -# as test.clickhouse.Events, whose message carries the table annotations the -# ClickHouse sink needs: it has no default ordering and refuses to create a table -# without an ORDER BY. -# -# substreams sink clickhouse e2e-clickhouse-v0.1.0.spkg map_events_clickhouse \ -# --dsn "clickhouse://default:@localhost:9000/default" -# -# Kept out of substreams.yaml so the annotations do not land on test.output.Event, -# which the other e2e modules emit and whose module hashes would change. -specVersion: v0.1.0 -package: - name: e2e_clickhouse - version: v0.1.0 - -protobuf: - descriptorSets: - - module: buf.build/streamingfast/firehose-acme@f6b2cc014e9d46059938734205759dce - files: - - clickhouse.proto - importPaths: - - ./proto - excludePaths: - - sf/substreams/rpc - - sf/substreams/v1 - - sf/substreams/index - - sf/firehose - - google - -binaries: - default: - type: wasm/rust-v1 - file: ./target/wasm32-unknown-unknown/release/substreams.wasm - -modules: - - name: map_events_clickhouse - kind: map - initialBlock: 0 - inputs: - - source: sf.acme.type.v1.Block - output: - type: proto:test.clickhouse.Events - -network: dummy diff --git a/tests_e2e/dummy/substreams.remote-feed.yaml b/tests_e2e/dummy/substreams.remote-feed.yaml index be6023cba..471840e0a 100644 --- a/tests_e2e/dummy/substreams.remote-feed.yaml +++ b/tests_e2e/dummy/substreams.remote-feed.yaml @@ -25,7 +25,11 @@ protobuf: importPaths: - ./proto excludePaths: - - sf/substreams + # Narrower than "sf/substreams": the sink/sql schema stays, since + # contract.proto imports it for the ClickHouse annotations. + - sf/substreams/rpc + - sf/substreams/v1 + - sf/substreams/index - sf/firehose - google diff --git a/tests_e2e/dummy/substreams.substreams-feed.yaml b/tests_e2e/dummy/substreams.substreams-feed.yaml index 1f8f6cb81..c89d13bcf 100644 --- a/tests_e2e/dummy/substreams.substreams-feed.yaml +++ b/tests_e2e/dummy/substreams.substreams-feed.yaml @@ -24,7 +24,11 @@ protobuf: importPaths: - ./proto excludePaths: - - sf/substreams + # Narrower than "sf/substreams": the sink/sql schema stays, since + # contract.proto imports it for the ClickHouse annotations. + - sf/substreams/rpc + - sf/substreams/v1 + - sf/substreams/index - sf/firehose - google diff --git a/tests_e2e/dummy/substreams.yaml b/tests_e2e/dummy/substreams.yaml index f45aff80e..7f0ceb159 100644 --- a/tests_e2e/dummy/substreams.yaml +++ b/tests_e2e/dummy/substreams.yaml @@ -1,7 +1,7 @@ specVersion: v0.1.0 package: name: e2e - version: v0.3.0 + version: v0.4.0 protobuf: descriptorSets: @@ -16,7 +16,11 @@ protobuf: importPaths: - ./proto excludePaths: - - sf/substreams + # Narrower than "sf/substreams": the sink/sql schema stays, since + # contract.proto imports it for the ClickHouse annotations. + - sf/substreams/rpc + - sf/substreams/v1 + - sf/substreams/index - sf/firehose - google