From e58334e8bd86e4fffa7a6da4424e99fbe837144e Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 15:10:49 +0200 Subject: [PATCH 01/19] Backed out changeset d21a2eafb84d --- src/devices/wifi/mac-low.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/wifi/mac-low.cc b/src/devices/wifi/mac-low.cc index 55cd885f2..30fda0099 100644 --- a/src/devices/wifi/mac-low.cc +++ b/src/devices/wifi/mac-low.cc @@ -804,7 +804,7 @@ MacLow::DoNavResetNow (Time duration) (*i)->NavReset (duration); } m_lastNavStart = Simulator::Now (); - m_lastNavDuration = duration; + m_lastNavStart = duration; } bool MacLow::DoNavStartNow (Time duration) From a0d182c7d838077306351d469c4a678f07207758 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 16:42:06 +0200 Subject: [PATCH 02/19] CopyData is more efficient than a PeekData+memcpy pair --- src/node/socket.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/node/socket.cc b/src/node/socket.cc index e13dcf43e..093c501d7 100644 --- a/src/node/socket.cc +++ b/src/node/socket.cc @@ -148,7 +148,7 @@ Socket::Recv (uint8_t* buf, uint32_t size, uint32_t flags) { return 0; } - memcpy (buf, p->PeekData (), p->GetSize()); + p->CopyData (buf, p->GetSize ()); return p->GetSize (); } @@ -169,7 +169,7 @@ Socket::RecvFrom (uint8_t* buf, uint32_t size, uint32_t flags, { return 0; } - memcpy (buf, p->PeekData (), p->GetSize()); + p->CopyData (buf, p->GetSize ()); return p->GetSize (); } From d0ae1f485016ea955e29048e14b5881de1120ecf Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 16:43:21 +0200 Subject: [PATCH 03/19] avoid extra memory allocations when using PcapWriter --- src/common/buffer.cc | 26 ++++++++++++++++++++++++++ src/common/buffer.h | 3 +++ src/common/packet.cc | 6 ++++++ src/common/packet.h | 2 ++ src/common/pcap-writer.cc | 4 ++-- 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 8bdc63455..ddbf8f800 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -643,6 +643,32 @@ Buffer::PeekData (void) const return m_data->m_data + m_start; } +void +Buffer::CopyData(std::ostream *os, uint32_t size) const +{ + if (size == GetSize ()) + { + // fast path + os->write((const char*)(m_data->m_data + m_start), m_zeroAreaStart-m_start); + char zero = 0; + for (uint32_t i = 0; i < m_zeroAreaEnd - m_zeroAreaStart; ++i) + { + os->write (&zero, 1); + } + os->write ((const char*)(m_data->m_data + m_zeroAreaStart), m_end - m_zeroAreaEnd); + } + else + { + // slow path + Buffer::Iterator i = Begin (); + while (!i.IsEnd () && size > 0) + { + char byte = i.ReadU8 (); + os->write (&byte, 1); + } + } +} + /****************************************************** * The buffer iterator below. ******************************************************/ diff --git a/src/common/buffer.h b/src/common/buffer.h index 4c65518de..3124b8d11 100644 --- a/src/common/buffer.h +++ b/src/common/buffer.h @@ -22,6 +22,7 @@ #include #include +#include #define BUFFER_HEURISTICS 1 #define BUFFER_USE_INLINE 1 @@ -486,6 +487,8 @@ public: int32_t GetCurrentStartOffset (void) const; int32_t GetCurrentEndOffset (void) const; + void CopyData (std::ostream *os, uint32_t size) const; + Buffer (Buffer const &o); Buffer &operator = (Buffer const &o); Buffer (); diff --git a/src/common/packet.cc b/src/common/packet.cc index 7edec23ab..13c024675 100644 --- a/src/common/packet.cc +++ b/src/common/packet.cc @@ -356,6 +356,12 @@ Packet::CopyData (uint8_t *buffer, uint32_t size) const return cur; } +void +Packet::CopyData(std::ostream *os, uint32_t size) const +{ + return m_buffer.CopyData (os, size); +} + uint32_t Packet::GetUid (void) const { diff --git a/src/common/packet.h b/src/common/packet.h index 90d3a0a73..a272eb2f6 100644 --- a/src/common/packet.h +++ b/src/common/packet.h @@ -344,6 +344,8 @@ public: */ uint32_t CopyData (uint8_t *buffer, uint32_t size) const; + void CopyData(std::ostream *os, uint32_t size) const; + /** * A packet is allocated a new uid when it is created * empty or with zero-filled payload. diff --git a/src/common/pcap-writer.cc b/src/common/pcap-writer.cc index 6cb282727..e2cc36eb5 100644 --- a/src/common/pcap-writer.cc +++ b/src/common/pcap-writer.cc @@ -164,7 +164,7 @@ PcapWriter::WritePacket (Ptr packet) Write32 (us & 0xffffffff); Write32 (packet->GetSize ()); Write32 (packet->GetSize ()); - WriteData (packet->PeekData (), packet->GetSize ()); + packet->CopyData (m_writer, packet->GetSize ()); } } @@ -412,7 +412,7 @@ void PcapWriter::WriteWifiMonitorPacket(Ptr packet, uint16_t chann } // finally, write rest of packet - WriteData (packet->PeekData (), packet->GetSize ()); + packet->CopyData (m_writer, packet->GetSize ()); } From 1825edbc276d3ba0c5558e4463f951c9223ccc28 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 16:43:55 +0200 Subject: [PATCH 04/19] no need to call PeekData+memcpy. use CopyData instead --- src/internet-stack/tcp-test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internet-stack/tcp-test.cc b/src/internet-stack/tcp-test.cc index 1d83e08d8..0eeac0c6b 100644 --- a/src/internet-stack/tcp-test.cc +++ b/src/internet-stack/tcp-test.cc @@ -189,7 +189,7 @@ TcpSocketImplTest::Test1_HandleRecv (Ptr sock) { rxBytes1 += sz; rxPayload = new uint8_t[sz]; - memcpy (rxPayload, p->PeekData(), sz); + p->CopyData (rxPayload, sz); } else { From 2ae6d337a31d3732e37692c9bb14873751e2587f Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 16:44:21 +0200 Subject: [PATCH 05/19] don't call PeekData if we can --- src/applications/packet-sink/packet-sink.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/applications/packet-sink/packet-sink.cc b/src/applications/packet-sink/packet-sink.cc index 3a86f5416..a7e9b6db1 100644 --- a/src/applications/packet-sink/packet-sink.cc +++ b/src/applications/packet-sink/packet-sink.cc @@ -142,8 +142,7 @@ void PacketSink::HandleRead (Ptr socket) { InetSocketAddress address = InetSocketAddress::ConvertFrom (from); NS_LOG_INFO ("Received " << packet->GetSize() << " bytes from " << - address.GetIpv4() << " [" << address << "]---'" << - packet->PeekData() << "'"); + address.GetIpv4() << " [" << address << "]"); } m_rxTrace (packet, from); } From b1dc85e1c799f7ebd3fe1bf0e22903cc5b3e3ee3 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 8 Jun 2009 16:45:13 +0200 Subject: [PATCH 06/19] no need to keep around a Ptr --- src/applications/v4ping/v4ping.cc | 7 ++++--- src/internet-stack/icmpv4.cc | 32 ++++++++++++++++++------------- src/internet-stack/icmpv4.h | 5 +++-- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/applications/v4ping/v4ping.cc b/src/applications/v4ping/v4ping.cc index 9ad780b06..035d4744f 100644 --- a/src/applications/v4ping/v4ping.cc +++ b/src/applications/v4ping/v4ping.cc @@ -87,10 +87,11 @@ V4Ping::Receive (Ptr socket) if (echo.GetSequenceNumber () == (m_seq - 1) && echo.GetIdentifier () == 0) { - Ptr data = echo.GetData (); - if (data->GetSize () == 16) + uint8_t data[16]; + uint32_t dataSize = echo.GetData (data); + if (dataSize == 16) { - uint32_t *buf = (uint32_t *)data->PeekData (); + uint32_t *buf = (uint32_t *)data; if (buf[0] == GetNode ()->GetId () && buf[1] == GetApplicationId ()) { diff --git a/src/internet-stack/icmpv4.cc b/src/internet-stack/icmpv4.cc index b0b2cfec9..53fcffea6 100644 --- a/src/internet-stack/icmpv4.cc +++ b/src/internet-stack/icmpv4.cc @@ -108,7 +108,9 @@ Icmpv4Echo::SetSequenceNumber (uint16_t seq) void Icmpv4Echo::SetData (Ptr data) { - m_data = data->Copy (); + uint32_t size = (data->GetSize ()>16)?16:data->GetSize(); + data->CopyData (m_data, size); + m_dataSize = size; } uint16_t Icmpv4Echo::GetIdentifier (void) const @@ -120,10 +122,11 @@ Icmpv4Echo::GetSequenceNumber (void) const { return m_sequence; } -Ptr -Icmpv4Echo::GetData (void) const +uint32_t +Icmpv4Echo::GetData (uint8_t data[16]) const { - return m_data->Copy (); + memcpy (data, m_data, m_dataSize); + return m_dataSize; } @@ -139,8 +142,14 @@ Icmpv4Echo::GetTypeId (void) Icmpv4Echo::Icmpv4Echo () : m_identifier (0), m_sequence (0), - m_data (0) -{} + m_dataSize (0) +{ + // make sure that thing is initialized to get initialized bytes + for (uint8_t j = 0; j < 16; j++) + { + m_data[j] = 0; + } +} Icmpv4Echo::~Icmpv4Echo () {} TypeId @@ -151,14 +160,14 @@ Icmpv4Echo::GetInstanceTypeId (void) const uint32_t Icmpv4Echo::GetSerializedSize (void) const { - return 4 + m_data->GetSize (); + return 4 + m_dataSize; } void Icmpv4Echo::Serialize (Buffer::Iterator start) const { start.WriteHtonU16 (m_identifier); start.WriteHtonU16 (m_sequence); - start.Write (m_data->PeekData (), m_data->GetSize ()); + start.Write (m_data, m_dataSize); } uint32_t Icmpv4Echo::Deserialize (Buffer::Iterator start) @@ -166,11 +175,8 @@ Icmpv4Echo::Deserialize (Buffer::Iterator start) m_identifier = start.ReadNtohU16 (); m_sequence = start.ReadNtohU16 (); NS_ASSERT (start.GetSize () >= 4); - uint32_t size = start.GetSize () - 4; - uint8_t *buffer = new uint8_t[size] (); - start.Read (buffer, size); - m_data = Create (buffer, size); - delete[] buffer; + m_dataSize = start.GetSize () - 4; + start.Read (m_data, m_dataSize); return start.GetSize (); } void diff --git a/src/internet-stack/icmpv4.h b/src/internet-stack/icmpv4.h index f8d224e51..ba69ff7ec 100644 --- a/src/internet-stack/icmpv4.h +++ b/src/internet-stack/icmpv4.h @@ -50,7 +50,7 @@ public: void SetData (Ptr data); uint16_t GetIdentifier (void) const; uint16_t GetSequenceNumber (void) const; - Ptr GetData (void) const; + uint32_t GetData (uint8_t payload[16]) const; static TypeId GetTypeId (void); @@ -64,7 +64,8 @@ public: private: uint16_t m_identifier; uint16_t m_sequence; - Ptr m_data; + uint8_t m_data[16]; + uint32_t m_dataSize; }; class Icmpv4DestinationUnreachable : public Header From 6f0998770315b242ae94e35bc93a371c79c567fb Mon Sep 17 00:00:00 2001 From: Craig Dowell Date: Mon, 8 Jun 2009 16:58:28 -0700 Subject: [PATCH 07/19] fix build --- src/internet-stack/nsc-tcp-socket-impl.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/internet-stack/nsc-tcp-socket-impl.cc b/src/internet-stack/nsc-tcp-socket-impl.cc index 7abd834d0..396d38681 100644 --- a/src/internet-stack/nsc-tcp-socket-impl.cc +++ b/src/internet-stack/nsc-tcp-socket-impl.cc @@ -448,7 +448,7 @@ NscTcpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags, { SocketAddressTag tag; bool found; - found = packet->FindFirstMatchingTag (tag); + found = packet->FindFirstMatchingByteTag (tag); NS_ASSERT (found); fromAddress = tag.GetAddress (); } @@ -600,7 +600,7 @@ bool NscTcpSocketImpl::ReadPendingData (void) SocketAddressTag tag; tag.SetAddress (m_peerAddress); - p->AddTag (tag); + p->AddByteTag (tag); m_deliveryQueue.push (p); m_rxAvailable += p->GetSize (); From d05448114dcb715caf6840f296d202d3431b6d66 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Tue, 9 Jun 2009 09:13:42 +0200 Subject: [PATCH 08/19] use packet tags rather than byte tags to match TcpSocketImpl and UdpSocketImpl --- src/internet-stack/nsc-tcp-socket-impl.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/internet-stack/nsc-tcp-socket-impl.cc b/src/internet-stack/nsc-tcp-socket-impl.cc index 396d38681..69f4a68b7 100644 --- a/src/internet-stack/nsc-tcp-socket-impl.cc +++ b/src/internet-stack/nsc-tcp-socket-impl.cc @@ -448,7 +448,7 @@ NscTcpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags, { SocketAddressTag tag; bool found; - found = packet->FindFirstMatchingByteTag (tag); + found = packet->PeekPacketTag (tag); NS_ASSERT (found); fromAddress = tag.GetAddress (); } @@ -600,7 +600,7 @@ bool NscTcpSocketImpl::ReadPendingData (void) SocketAddressTag tag; tag.SetAddress (m_peerAddress); - p->AddByteTag (tag); + p->AddPacketTag (tag); m_deliveryQueue.push (p); m_rxAvailable += p->GetSize (); From 355aaab7c9f406eda9a6a26797b9d5fd568e2769 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Tue, 9 Jun 2009 09:21:48 +0200 Subject: [PATCH 09/19] rescan python --- bindings/python/ns3_module_common.py | 10 ++++++++++ bindings/python/ns3_module_internet_stack.py | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bindings/python/ns3_module_common.py b/bindings/python/ns3_module_common.py index a7e510bdf..08e0b76c8 100644 --- a/bindings/python/ns3_module_common.py +++ b/bindings/python/ns3_module_common.py @@ -203,6 +203,11 @@ def register_Ns3Buffer_methods(root_module, cls): 'int32_t', [], is_const=True) + ## buffer.h: void ns3::Buffer::CopyData(std::ostream * os, uint32_t size) const [member function] + cls.add_method('CopyData', + 'void', + [param('std::ostream *', 'os'), param('uint32_t', 'size')], + is_const=True) ## buffer.h: ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor] cls.add_constructor([param('ns3::Buffer const &', 'o')]) ## buffer.h: ns3::Buffer::Buffer() [constructor] @@ -544,6 +549,11 @@ def register_Ns3Packet_methods(root_module, cls): 'uint32_t', [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], is_const=True) + ## packet.h: void ns3::Packet::CopyData(std::ostream * os, uint32_t size) const [member function] + cls.add_method('CopyData', + 'void', + [param('std::ostream *', 'os'), param('uint32_t', 'size')], + is_const=True) ## packet.h: ns3::Ptr ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function] cls.add_method('CreateFragment', 'ns3::Ptr< ns3::Packet >', diff --git a/bindings/python/ns3_module_internet_stack.py b/bindings/python/ns3_module_internet_stack.py index f5cda47aa..f74fed29f 100644 --- a/bindings/python/ns3_module_internet_stack.py +++ b/bindings/python/ns3_module_internet_stack.py @@ -181,10 +181,10 @@ def register_Ns3Icmpv4Echo_methods(root_module, cls): 'uint16_t', [], is_const=True) - ## icmpv4.h: ns3::Ptr ns3::Icmpv4Echo::GetData() const [member function] + ## icmpv4.h: uint32_t ns3::Icmpv4Echo::GetData(uint8_t * payload) const [member function] cls.add_method('GetData', - 'ns3::Ptr< ns3::Packet const >', - [], + 'uint32_t', + [param('uint8_t *', 'payload')], is_const=True) ## icmpv4.h: static ns3::TypeId ns3::Icmpv4Echo::GetTypeId() [member function] cls.add_method('GetTypeId', From 45685b2ad54bcca841f484c22ea3c3f23b15bfb2 Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Tue, 9 Jun 2009 06:10:09 -0700 Subject: [PATCH 10/19] add two AUTHORS --- AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index e2262bcbf..311dc742e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -26,4 +26,5 @@ Aleksey Kovalenko (kovalenko@iitp.ru) Liu Jian (liujatp@gmail.com) Andrey Hippo (ahippo@yandex.ru) Francesco Malandrino (francesco.malandrino@gmail.com) - +Faker Moatamri (faker.moatamri@sophia.inria.fr) +Guangyu Pei (guangyu.pei@boeing.com) From f39c6618baa3c34ddcbbc347f297a91287f4688b Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Tue, 9 Jun 2009 06:47:18 -0700 Subject: [PATCH 11/19] fix doxygen collision --- src/node/ipv4-list-routing.h | 2 +- src/node/ipv4-route.h | 4 ++-- src/node/ipv4-routing-protocol.h | 2 +- src/node/ipv4-routing-table-entry.h | 4 ++-- src/node/ipv4-static-routing.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/node/ipv4-list-routing.h b/src/node/ipv4-list-routing.h index b6447d4c3..79f49edcf 100644 --- a/src/node/ipv4-list-routing.h +++ b/src/node/ipv4-list-routing.h @@ -24,7 +24,7 @@ namespace ns3 { /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * * This class is a specialization of Ipv4RoutingProtocol that allows * other instances of Ipv4RoutingProtocol to be inserted in a diff --git a/src/node/ipv4-route.h b/src/node/ipv4-route.h index 40950a08c..d58f9bb87 100644 --- a/src/node/ipv4-route.h +++ b/src/node/ipv4-route.h @@ -31,7 +31,7 @@ namespace ns3 { class NetDevice; /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * *\brief Ipv4 route cache entry (similar to Linux struct rtable) * @@ -99,7 +99,7 @@ private: std::ostream& operator<< (std::ostream& os, Ipv4Route const& route); /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * * \brief Ipv4 multicast route cache entry (similar to Linux struct mfc_cache) */ diff --git a/src/node/ipv4-routing-protocol.h b/src/node/ipv4-routing-protocol.h index 1b950fb39..faeb52985 100644 --- a/src/node/ipv4-routing-protocol.h +++ b/src/node/ipv4-routing-protocol.h @@ -32,7 +32,7 @@ class NetDevice; /** * \ingroup node - * \defgroup ipv4-routing Ipv4 Routing + * \defgroup ipv4Routing Ipv4 Routing * * Abstract base class for Ipv4 routing protocols. Defines two * virtual functions for packet routing and forwarding. The first, diff --git a/src/node/ipv4-routing-table-entry.h b/src/node/ipv4-routing-table-entry.h index 7211e412d..b4597afde 100644 --- a/src/node/ipv4-routing-table-entry.h +++ b/src/node/ipv4-routing-table-entry.h @@ -29,7 +29,7 @@ namespace ns3 { /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * * A record of an IPv4 routing table entry for Ipv4GlobalRouting and * Ipv4StaticRouting. This is not a reference counted object. @@ -155,7 +155,7 @@ private: std::ostream& operator<< (std::ostream& os, Ipv4RoutingTableEntry const& route); /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * * \brief A record of an IPv4 multicast route for Ipv4GlobalRouting and Ipv4StaticRouting */ diff --git a/src/node/ipv4-static-routing.h b/src/node/ipv4-static-routing.h index 897675dbe..076ed6f05 100644 --- a/src/node/ipv4-static-routing.h +++ b/src/node/ipv4-static-routing.h @@ -44,7 +44,7 @@ class Ipv4RoutingTableEntry; class Ipv4MulticastRoutingTableEntry; /** - * \ingroup ipv4-routing + * \ingroup ipv4Routing * * \brief Static routing protocol for IP version 4 stacks. * From f58cfa0e5f94d35ee2ebbb0bd6a615df69e9a5ed Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Wed, 10 Jun 2009 08:36:51 +0200 Subject: [PATCH 12/19] move global routing code into global routing directory --- bindings/python/ns3_module_internet_stack.py | 67 ------------------- src/internet-stack/wscript | 2 - .../global-route-manager-impl.cc | 2 +- .../global-routing}/ipv4-global-routing.cc | 0 .../global-routing}/ipv4-global-routing.h | 0 src/routing/global-routing/wscript | 1 + 6 files changed, 2 insertions(+), 70 deletions(-) rename src/{internet-stack => routing/global-routing}/ipv4-global-routing.cc (100%) rename src/{internet-stack => routing/global-routing}/ipv4-global-routing.h (100%) diff --git a/bindings/python/ns3_module_internet_stack.py b/bindings/python/ns3_module_internet_stack.py index f74fed29f..a2626bc91 100644 --- a/bindings/python/ns3_module_internet_stack.py +++ b/bindings/python/ns3_module_internet_stack.py @@ -25,8 +25,6 @@ def register_types(module): module.add_class('UdpHeader', parent=root_module['ns3::Header']) ## ipv4-static-routing-impl.h: ns3::Ipv4StaticRoutingImpl [class] module.add_class('Ipv4StaticRoutingImpl', parent=root_module['ns3::Ipv4StaticRouting']) - ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting [class] - module.add_class('Ipv4GlobalRouting', parent=root_module['ns3::Ipv4RoutingProtocol']) ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl [class] module.add_class('Ipv4ListRoutingImpl', parent=root_module['ns3::Ipv4ListRouting']) @@ -88,7 +86,6 @@ def register_methods(root_module): register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader']) register_Ns3UdpHeader_methods(root_module, root_module['ns3::UdpHeader']) register_Ns3Ipv4StaticRoutingImpl_methods(root_module, root_module['ns3::Ipv4StaticRoutingImpl']) - register_Ns3Ipv4GlobalRouting_methods(root_module, root_module['ns3::Ipv4GlobalRouting']) register_Ns3Ipv4ListRoutingImpl_methods(root_module, root_module['ns3::Ipv4ListRoutingImpl']) return @@ -636,70 +633,6 @@ def register_Ns3Ipv4StaticRoutingImpl_methods(root_module, cls): visibility='protected', is_virtual=True) return -def register_Ns3Ipv4GlobalRouting_methods(root_module, cls): - ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting::Ipv4GlobalRouting(ns3::Ipv4GlobalRouting const & arg0) [copy constructor] - cls.add_constructor([param('ns3::Ipv4GlobalRouting const &', 'arg0')]) - ## ipv4-global-routing.h: static ns3::TypeId ns3::Ipv4GlobalRouting::GetTypeId() [member function] - cls.add_method('GetTypeId', - 'ns3::TypeId', - [], - is_static=True) - ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting::Ipv4GlobalRouting() [constructor] - cls.add_constructor([]) - ## ipv4-global-routing.h: ns3::Ptr ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function] - cls.add_method('RouteOutput', - 'ns3::Ptr< ns3::Ipv4Route >', - [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], - is_virtual=True) - ## ipv4-global-routing.h: bool ns3::Ipv4GlobalRouting::RouteInput(ns3::Ptr p, ns3::Ipv4Header const & header, ns3::Ptr idev, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback,ns3::Ptr,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function] - cls.add_method('RouteInput', - 'bool', - [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], - is_virtual=True) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function] - cls.add_method('AddHostRouteTo', - 'void', - [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')]) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function] - cls.add_method('AddHostRouteTo', - 'void', - [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')]) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function] - cls.add_method('AddNetworkRouteTo', - 'void', - [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')]) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function] - cls.add_method('AddNetworkRouteTo', - 'void', - [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')]) - ## ipv4-global-routing.h: uint32_t ns3::Ipv4GlobalRouting::GetNRoutes() [member function] - cls.add_method('GetNRoutes', - 'uint32_t', - []) - ## ipv4-global-routing.h: ns3::Ipv4RoutingTableEntry * ns3::Ipv4GlobalRouting::GetRoute(uint32_t i) [member function] - cls.add_method('GetRoute', - 'ns3::Ipv4RoutingTableEntry *', - [param('uint32_t', 'i')]) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::RemoveRoute(uint32_t i) [member function] - cls.add_method('RemoveRoute', - 'void', - [param('uint32_t', 'i')]) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetNode(ns3::Ptr node) [member function] - cls.add_method('SetNode', - 'void', - [param('ns3::Ptr< ns3::Node >', 'node')]) - ## ipv4-global-routing.h: ns3::Ptr ns3::Ipv4GlobalRouting::GetNode() const [member function] - cls.add_method('GetNode', - 'ns3::Ptr< ns3::Node >', - [], - is_const=True) - ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::DoDispose() [member function] - cls.add_method('DoDispose', - 'void', - [], - visibility='protected', is_virtual=True) - return - def register_Ns3Ipv4ListRoutingImpl_methods(root_module, cls): ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl::Ipv4ListRoutingImpl(ns3::Ipv4ListRoutingImpl const & arg0) [copy constructor] cls.add_constructor([param('ns3::Ipv4ListRoutingImpl const &', 'arg0')]) diff --git a/src/internet-stack/wscript b/src/internet-stack/wscript index 16eb5a5fd..c9a4d2f7e 100644 --- a/src/internet-stack/wscript +++ b/src/internet-stack/wscript @@ -82,7 +82,6 @@ def build(bld): 'ipv4-l3-protocol.cc', 'ipv4-static-routing-impl.cc', 'ipv4-list-routing-impl.cc', - 'ipv4-global-routing.cc', 'ipv4-end-point.cc', 'udp-l4-protocol.cc', 'tcp-l4-protocol.cc', @@ -110,7 +109,6 @@ def build(bld): 'udp-header.h', 'tcp-header.h', 'sequence-number.h', - 'ipv4-global-routing.h', 'ipv4-list-routing-impl.h', 'ipv4-static-routing-impl.h', 'icmpv4.h', diff --git a/src/routing/global-routing/global-route-manager-impl.cc b/src/routing/global-routing/global-route-manager-impl.cc index 9587dd441..d311026c9 100644 --- a/src/routing/global-routing/global-route-manager-impl.cc +++ b/src/routing/global-routing/global-route-manager-impl.cc @@ -30,12 +30,12 @@ #include "ns3/log.h" #include "ns3/node-list.h" #include "ns3/ipv4.h" -#include "ns3/ipv4-global-routing.h" #include "ns3/ipv4-routing-protocol.h" #include "ns3/ipv4-list-routing.h" #include "global-router-interface.h" #include "global-route-manager-impl.h" #include "candidate-queue.h" +#include "ipv4-global-routing.h" NS_LOG_COMPONENT_DEFINE ("GlobalRouteManager"); diff --git a/src/internet-stack/ipv4-global-routing.cc b/src/routing/global-routing/ipv4-global-routing.cc similarity index 100% rename from src/internet-stack/ipv4-global-routing.cc rename to src/routing/global-routing/ipv4-global-routing.cc diff --git a/src/internet-stack/ipv4-global-routing.h b/src/routing/global-routing/ipv4-global-routing.h similarity index 100% rename from src/internet-stack/ipv4-global-routing.h rename to src/routing/global-routing/ipv4-global-routing.h diff --git a/src/routing/global-routing/wscript b/src/routing/global-routing/wscript index 483e5b5d0..22c62947c 100644 --- a/src/routing/global-routing/wscript +++ b/src/routing/global-routing/wscript @@ -7,6 +7,7 @@ def build(bld): 'global-route-manager.cc', 'global-route-manager-impl.cc', 'candidate-queue.cc', + 'ipv4-global-routing.cc', ] headers = bld.new_task_gen('ns3header') headers.module = 'global-routing' From 282f653bedf5e4a02a918785cbc08d5bbcb67c85 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Wed, 10 Jun 2009 11:13:49 +0200 Subject: [PATCH 13/19] register missing constructors --- src/devices/bridge/bridge-channel.cc | 4 +++- src/devices/wifi/wifi-net-device.cc | 1 + src/internet-stack/ipv4-list-routing-impl.cc | 1 + src/internet-stack/ipv4-static-routing-impl.cc | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/devices/bridge/bridge-channel.cc b/src/devices/bridge/bridge-channel.cc index b8b8b6bca..26ec993c9 100644 --- a/src/devices/bridge/bridge-channel.cc +++ b/src/devices/bridge/bridge-channel.cc @@ -29,7 +29,9 @@ TypeId BridgeChannel::GetTypeId (void) { static TypeId tid = TypeId ("ns3::BridgeChannel") - .SetParent (); + .SetParent () + .AddConstructor () + ; return tid; } diff --git a/src/devices/wifi/wifi-net-device.cc b/src/devices/wifi/wifi-net-device.cc index d7dccc85d..2abe6200d 100644 --- a/src/devices/wifi/wifi-net-device.cc +++ b/src/devices/wifi/wifi-net-device.cc @@ -38,6 +38,7 @@ WifiNetDevice::GetTypeId (void) { static TypeId tid = TypeId ("ns3::WifiNetDevice") .SetParent () + .AddConstructor () .AddAttribute ("Channel", "The channel attached to this device", PointerValue (), MakePointerAccessor (&WifiNetDevice::DoGetChannel), diff --git a/src/internet-stack/ipv4-list-routing-impl.cc b/src/internet-stack/ipv4-list-routing-impl.cc index 539f4e976..466bda81f 100644 --- a/src/internet-stack/ipv4-list-routing-impl.cc +++ b/src/internet-stack/ipv4-list-routing-impl.cc @@ -35,6 +35,7 @@ Ipv4ListRoutingImpl::GetTypeId (void) { static TypeId tid = TypeId ("ns3::Ipv4ListRoutingImpl") .SetParent () + .AddConstructor () ; return tid; } diff --git a/src/internet-stack/ipv4-static-routing-impl.cc b/src/internet-stack/ipv4-static-routing-impl.cc index ef15f5337f..65aff1474 100644 --- a/src/internet-stack/ipv4-static-routing-impl.cc +++ b/src/internet-stack/ipv4-static-routing-impl.cc @@ -36,6 +36,7 @@ Ipv4StaticRoutingImpl::GetTypeId (void) { static TypeId tid = TypeId ("ns3::Ipv4StaticRoutingImpl") .SetParent () + .AddConstructor () ; return tid; } From fa6d46b9ea98712129fa49555e4acd4d1422417c Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Wed, 10 Jun 2009 23:09:04 +0200 Subject: [PATCH 14/19] document default --- src/helper/nqos-wifi-mac-helper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/helper/nqos-wifi-mac-helper.h b/src/helper/nqos-wifi-mac-helper.h index d582e3743..9800b6082 100644 --- a/src/helper/nqos-wifi-mac-helper.h +++ b/src/helper/nqos-wifi-mac-helper.h @@ -31,6 +31,7 @@ public: virtual ~NqosWifiMacHelper (); /** * Create a mac helper in a default working state. + * i.e., this is an adhoc mac by default. */ static NqosWifiMacHelper Default (void); /** From 17eaca49f3f8c0c6310dd3fa26f9eef15c714015 Mon Sep 17 00:00:00 2001 From: "Gustavo J. A. M. Carneiro" Date: Fri, 12 Jun 2009 12:33:21 +0100 Subject: [PATCH 15/19] Upgrade to WAF 1.5.8 --- waf | Bin 85131 -> 88110 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/waf b/waf index fc98af278a5a2f006826d8d4b7229841607c9822..ca4d42c188b318018b51571e8c3016b174878f64 100755 GIT binary patch delta 85103 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 z zbY>2l4L5tHd2av-UU)3FV_J51*f~8 z-7U{be;E!^NctK`d}m1H+kB65JwOjmEiA$uvtRO>Ye`*5EkCSCF(z5A_R}4I0e~)L zxEmxB2XZe^GAMZu(xk(nJ)bUj$jnQWr}e4M7XZBTPuj_!#)PXl6Eia36Z+`ek27K| z9x~S(MMnNlQsNv=teAFthhFZx{J{rtzdY|2wINU|I|TRqG@sp*%kUoDanCFIyCLWC zd^p)DhcWtrcHhNsZSCFZs~55QFL8VCVEOHx{3I-<__K9>OMCeuLG=-0H_@||MX>zp z)p~Egh4OJD+kY8Vkll!TI(7HN1CrUt5SAY-TU_7gU>Nc<4sg7gl3st5;+h(^`eMJE zl&r1ZrqG~>+EWgqeoNkMZk{w~n|&P-iwQemx1YpICEJZ1yPWLm-aNC)Nk62@8DGs9 zw2X=TRJZT?o3L}z{J9DlW~2X^ao@DEGO*l!DC?lp4wD<*LC+K!#BLT#y1vVQ3^?Yv zm%;IvA!@QeBHg2z`}PA^W8r_;LEIXX!+C-K)=~2A78+huXhQhB$?c9#x-FsO#A`lm zMfWMta&?RBcZF+ik3?0ey``_i4a?#;(_^1<_%y2h?a^jC2JRekuUk+poe~xnip07X zMLyBh@%U-AR?*S$;BCA%;8dc|emYZ9F>@3Ka9aJ@nYg;tb&CI79BvgoH}sQ}Z0f^yG`p$#*qXlyCSWgVS&gX=wQS zURq(jH2{qJR+9#a<*wu(WmXC9-G?X3$1f_B_1Jy(_}r;-er@OV{DV7I)ulJ{G)9if zAcIOb>+x0*BY>huP}8mW`q>>*Y9LWjbAMiAE_=*h?zJD|6N=9`@`yz769W33?fZV_J@$CKyz&X4ul>1t@jv;7Ya*ZneUI=- z=JWp5p}boz|Lyqw?wbK=&KYmlhaN32A{>$do)c-}y};-|-;N+@lA^4vN0O{2SmVc% z25A7CL+BDjN$>k(LEB;5mq3oipbLsf%q>?BX%Ca*a~!I42ncwp^EV~sfMM+V_KqZH zcE#r%aGtwV?2jc3{Y01dz0xt9Fq0%6Dhc+@2A5;bc16p%P~qs#-CaLhQcQ=|6W*`` z+9js|6(W*|ULFbi?%w-yMzZoxtMcIEh4dMZQrQ6^Vcr&AWP81lH3Hl^0f1HSh(90( ztLbj86B=9oFL}jVw>|!w{5zAIY@#um_G?b>*V$L?FQ|4$V(lW1^>ALjv{}yH{tolg zj1Jx)O>+&#+MX&?y*d}H9q6npC%QSKG=XC>#CYLY=r@7Y&5F%@ zXYG8}LkBJtJbh}MBHjc7S*%g*)qXDYoI3yY%J8uh82aZywfx5i{ylV4d?zYR{7VO7 zZF#%+Na9f2Wqi~zsAu!crsKbVDFC#!!N%2GC0OrWqb1yPg$(WxmkP(W(j=3Wf(4wE zmspeeek=PAhQHL&@{dSDJmrJK^VX{{v4aT^7^4GhsHpK23t?tyY=XTfX_@DXEJRZ$ z8~e!&M#u&T5%LVJh>Z%%cHlJs$`e2g0}}sHhxMwArN3O0S~;L42yAaOCmw5C;H6rS zhY5<>@ym0MAMOtSM3Y8o?%oI}+)PJR60ZS}atG%B>ePyk@H$OxDq8Wx%#7Rcn5N#e}IXt|K8fP71K zY!G@|1eMX*Bvvu4TFze^gVofXC(nQ2u_F+fp(0wGOk=vKsQ^2&QY9~`&|0=he zV(zUYrmjWT>;03~QtRcjT&st4jplYor{>4mE5Cw*0w34VRpQ+9XU-D3+y}-=&)md{ zMLg5Rpm)l|@CS03m&DFupAW?0PF_!bd#JIQ_}fh<$N`_mGfim_2TMWOn@>9urle%h z(}y3@WI5G98!Q7IN6+~_pYq3V)Ag#_p*ijl9sm|dO#XKnBDyrJGk)vp;_Z0fp1xYR zm3#<|dpcVXs+gKOe>}gsUd<<>K3tYq>sNdUT|p60d812_76g6pe?gKz6GOVX!Dk9@ zRh~;oKPZK4OZtYi2uUESwd7>#T-e62;&9Z)rLJUW$sU7^I0XrNf`iy5fQUp|YJ~oD zvJkOk^k!(Z4Pi#QNwt6`tyWc0wFErIe&)rN5p3GRWIV+1!rZ}c$|m+no{XD;>10`> z;>t~w1QBsIMA^;D>kxai4R}~nFo7MSD?%5Gx{K9bsHQ>coQ#^JjTn3YYq}9ourx17 zm|O{y5F-$X)l{9X$43w;D@uvLu3X+8NsDF1G_GYKfwu)CI)N?w9nf6hxbQtBJDZ6* zQfW>-Vrm`$KCx=n4%x6VrjswmcFHf8s;ESVviOGxtkDUCAyvsng%QHV=*4QJO$;H( z`*57e|CH`!!Z1h=gA@6Fwjj7Q8Zeb%iH_pF%o!9gj4gbvpb*qu1rn};v zYl~>v@=j3&<+&q~`mgHQ4M+YLuYE(}My*1CBDR+)q;b%laQNO@lSf1PL2YR_08QV% zs~HvOr-dX6wnkAi*fBcBGo$fx$?oDW{yAMG`1j+2H~H;PeEV?m;c1>2>Ar^SPst67 z-E4w57xp4$DatgOF^vw00!M_tkipG50Jw4{`5YO_8Mf2gp_y`GPWt_OtQO%2`66KW z^40Si;*~NJ>zI4@{pTNjj!_5evGA_k(JhV8y1>l2QIcFmWQ(JRg)eSnsE#sDmdS&Q9r? zpSVxX#_Xr**Hcf+^E9|Uyb{)gm(Q^4Q$BV-A@niC39s$8C4M)oF*|u6R(jS(-Fi(_ zs`tt4x-B{I@LB#Sw_&Xyl#(E@k#|P{AT{M)%F;9clH_p*m94r5dr`n{Pu_* zLyYd-L>hKEB(Q383~X!NQR;ZI86beKwcd$qRNeAprjSaf=VN}fsA>O1eY;`)%t^dX4j9;ehK9R{M-~3khO@>34dpmmiA;lVpDo`enb?PiSqb9IAjP%)BS`;z&m8Ml$_+vTM^ODp?`UmCb3)4N zsjT?vn}>s=J?h&CVgNu+iH&B%b5{0|C<2`>BV;ue0`DTR-fq@{dY3$qIEbr5i6G>Y zC-5rwz;J}nlVnXydr436+R8yMpqw25jE;+PH(b^|DDgv+&0EW@JW?H2UsPs-4EPig zdV)Ht*IB!D{trdx{8q`s#^Gw?Rads_)T!-Mn{8|JW^T5P$+q2Q+um$zvu(TY+xs8P zFEjJt{@f4Fx_{hWHw8j;zkHHERyCynv%u}P2m!mE##}R3U}Ipd_`DG_{(pa$;&Zf^ zn;+N*1G>qTpDk2Gqhkr~SEN~oqYBeiNlk`>;u}T9l!;qs(=7}MDfO!GSB(1ls2fH+ zB^o7>u!5q9VwKt7{_C#-A^ZbO+!|sf6#` zqdAO9`{Ynu|COmzfWYt&9gE2o5o*LGObS=2Rs^O9Q3mv1YNZ&_MKHSN)X`(r|7F|1 zk$!^}3xLCfQVt4;MLAC6{yT5yHh#5MY5Vx^v)jpxl444}JzKo*jl~d)ZJ2tYc;QSm z<+mva;^7ZB-`h>@dE5v5t8MNrzOco0o=)Fh;$X*TXB+pW6VvD>q;z*>Yk&`rAJ9^2 z7T+I$Yvq^YeQ%nL)gdqyZm#6rfyLd*ei{qG&JQ|->hIuf58ps_iD)I5Wa{Y2y#6x1*R$Z6Y%Vqrp{%j{S#pXDurJPE47hqX zLoOQCfjl+ToL4mNQahTtJLGLO_M=D4*AHCvB2_@%Tv)qlGJ}XWawQa*L^n})7!(CZlnq{4m8hsv=3rWY?26045cYX zFt@#Sp)>y}l($-xwXkg*Q;W2pPCiKGLndh@35Zmhc1f8}Coxc^n@YS7jA}U;LciJf zQ;V_LP@+Uu$x!Ywl-cZdiv>D*Y)*w+f?mnq^f%%xTkADrj9JA=ks;5im1b>&Xp=FFGifK|&rSTH z+ldY3`n)_+u6QB)$e&rAqQyhn_KMP`=7A)0X9+19!rM-P#7`+3L__ZBF;PU(E=xs` zVvCA7h}wUn5!TjxEF3a1k}2IBRqlB1G-HSerU4@3vR?!s2uEc8S`1O&Jy(Cax8Wj31~V7>X@diNn^vtpe95XhXA`(54$GWdNyAGtDlIOz6tAn+HQh81BzX9wP9KWI^_Q~> z6PmCKgo|iY@q;PnRlaeiGn6OM6q$bIZz?$F&2!uw*K*#?qUoI%)}_Qd7BNsAx5#P~ zkGxHc-T28=HtE*aDwdYsrxQDi8tzFC`P9xN3vM@K8!Zn+$ok4j%aKxv%se?$L(<7( z>vJ#$yWYBrWoT3)On#v)u>|n+8#zVkO=aIJ-B{c^Od4+A;O8MVMk-7I^z0NAfL%XY zq)&;xw?%_~`SWg?lHzjarSPP2$iC)DW$%$oGdzV<1&ubX*dZGwd4#(P4=e?ea|hSG z=k0vK%^ffM2+!JwO=h%~XntKO);!E(YTeO@V?&$k^^%*4z!O@Msn75fz})}Ro&V{} zJ5_M9iS)NCNr!2W4sU_1!ZSGV0+G93Bn6Y13L z7^NC2fU8rF`^5sFfA~Sg%)c)V1xHD8bdMxDuKEuBpOeibfaZ1Be$%0LLjK8ZSYoXN z+?Y0_%YwkW`)}o43W7Ziy!7Cpx~QRfZggx+(sh|VZwo6Vxr)}5$BN;8X zW~eGhnrfn)^Sq}4{s{zWSI}v+{#)}iC)n9_ed4j>zmkh{uPomg9=1?tZbmWGz}thv zm`%Iw{+7S!Q3N2v)Fl*c*gx=$zOjG`S&YL(Z3Z(MD}tcb_c+ILE((I|@9YbdKz1L* z37#zG`o~G`5DFb`m>md!tj=GAxOO+qWgY^khbUp(8vWME+>5mtsPcR4x@J+fqx@99 zvo?WTX<-Wc^aG@674YIeP>_Bp%Fb2x3Gd7n)O|mH@Ff5g?mn|ll2>quR-9n7(snt@ z(eNp;31AjGnUs8l6tTYTOo@XZXL^&kFW-ER7gbC$N4D297TAFXRLokI-t=JRzWb1@ z$eojdi1hKyv%Nt2b{e@|3CT6iC@UN*egYrd3T=l1$$kVhV3yIN3X--dza zePhrf^#$Q_Is%ceTpEGXTyYEP3JBTquunbGzXi3l9w2jn!D`tedMz5Oiup zJ2^CavxxKrSJ|Gr*qvS7TSsS}KK3=fw)!hU$}tJMtOdg(71A5h_D96}uQ#jt*ri}F zRL#j11pAR7CDFpO{k!4A{41S-JJiPEd1uQd4T?8O0E+5kRboMqYu&O>uEeQQoY6+% zm7$FT`j+F>e5&B)Y9X+uBP9O$v&_ z^fID-tCKpv%A^o&>sg95AkNi`8{_JA^hoC}@7GUG_6B)oZ<@y}^iv;ZL8dy8Q-QLE z>r5WwsAMp<2+t?k8c_YQki?zL9GND|jLXFLxciO_84|lUtJf8RvM51!DSaEGYZH;6sI zG!Sy{BUW9x8eT0;Eq&M$yxy^mbNn@U=g*eLw=s425kJkYd|YNP&sD}{$^d-+V>Nf} z`;Pk-MAe-vO%BgQfL-;((M-nY!k*_t(Km%ZEA(NIk1o~f^hlzMCymgR@SDc69?=lS z8>w0T7VVjO@l5(wy9h)CjXKuo7AuN_!V$VWdH>GndWE#9lpLQho?T-)kLX?+M!?R= zzTX3a)H+>nnYmo*F^$()F9Y_~7DpI+2(c;FSM4X!d#>r5(XxUg3TK^WVnP(CaaX9j zd1d+75jqEG$SrId0zkvHekHLvRlS<2EXQU0_@*k}6$4JIEtVI|v;BYIf-4;`Ov5Nb zNxz~2`kC8(8k_&|L5Zc=;lJX_y?o*z-nX&zV0ryDlt>fkq;Xp zplfyW)M>i+1C43V9_T%|U``pc<~t1IxJ`&bA*!Q~YDK2rbrj||l~hpcUU5PmFypX= z#ZljK;+^|k41BmH&G{|(^(5BtBom(v(Dr>d(t|;r^2tLcV~s`BAjrR1Z>qMHsre+#97aV(-DJHpj|Vx{#37?UBU^slj(Q* zRo^2T+KOM(!z*9ivXhFMx(1034hYO>>aq-`w8WM|c{qGh0YP}Z10QD8E^0{J8G>Ff zusie|l5iv{ZQ7;gkoFc06Gn)NqMA$#=D4|Q zmhxhViRNs91HV3SmKt+kwNC`>0y@6E8P+t8i*sTKHVKEI#vXbLT+#USLDGRs7E_Sv zoH{%WZWX3|9ttcYbILy%YFiSz3p-?Wc(z5qQ2wvNp;dVq^L3|h-z?%R(Qu{M!lXi0 z>*R=t>aB3eB&ZTQn+eNX=ts;qW_Az+=Lt@p6-^!J0)gWjR2BOYqwz)A>p~Q+TpHR^ zngpWQrn(l3erze8&=+{YE$9#};&yE;%MW@zLaJ7bX_`3%2RYMBZ`2i#*ROX&^K^MG zTqq}MdDys9X%H+!5|0D!9SWVM$fMZ#J-6H)scQ&L)aN2+3==X28yo{U%g@x7&UbVj z&^7>XCiaz!L;GBjRU5pDg(r^6YuLTP{G(()owb4%2_MR;qAJOyu&O<#n;lyDG5Bq& zs4*3*<0z^iodVYv%G1Ikg9fLmUl8Xs4KXOnl#6=Tp+?Uer!-#G_la`{^HKIg5_DlV zuJ-yJilm~5ki>_}Zrs81=k80!oU%C(*ckXwQ{~XoRWkS+@Me^>Pj!R9UJ++AphcJ_ zeSW;6uSap;O*tmu%ei3sP;`}@*AFXG?KPpqaJ2-s2WvyJhDFry4g>$C_ zGFs1Oe`vX6yD=~4y0dE(aU!2P z861$?LK!i4!xg$br+a#(aWW>r6 zt%4830)qU9j4xByyFTe@rH;}#7zm^wSMQ|M)^~%Y`chC zgCLKqPM$jY;hNR+)tL+x1Dm~Bgx2~Qr>GIQ4i`-?o(wE9KoK1-k{$htC z(_@n9P=`#E22&U;Yq#jms-wCa`_*$~CC%hVCd>Fdrzz`Jb+4wIC`+C8dLZ-ENWLP6 z*RbV_2#Jqj*oSM5CZBPQ38HF%OkLs&>a=Mb@+ivf?rSfua#@`Q3OFYQw}uJ-GxTNK z7Qb(HJv9j>U$tDM;~7Dk5;+mWD@3KYf8uasbfv9)oh;EUD+_T%o%|lflN(Kjs7>t? zixT%`dg5x;xJlW#Ha0WZ0n%4^49*`RxI4ZpFw*FVGl7-ATHAuy=*d4Xt4p}=&U(DI zgR&p>!2hvTqbAVl+3%=<&hq-_>Uw06Z(n_ubCi6CHu#<*zoGEaD=Pxz&0|Vjqf@~Y z${-K~K4N?a)2KQ+vs(9@-aJa=Zp~%f#9E8oG8h()NF+)MYbY>1}N(qSkKyvToIIgVMV_S@C1$DV!pE1%TqB%cZRo(TN4 z;(@g1HC`r8F@nHsW+*v(h=^ZITu9ej2}%t7Z_nyT6{4%0{?Z-sq7cbYpE!pW&u9+A z!2Q|!;ZsUR9I9SmY`De|YE*O<1i8v7ki-wUMbB&Lp-JxX{+d?% zd&|z;#BbjQ1e#n7tU^ZyEZ^4QT%gRc2|$2%UJAJ&Z4tn@Da#acM{>k#22Yy7XH zcnCKkLuZDq1UF(#UHY193wIf@8?!xj>J_zRK%ze>#koG!LWYmEg+QHv*Rna{)b{=S z%q<0vXe1x#oBW4*Y6VB~RjgIQNv5v+}BQppY~s6z1zg<2z)1u^Opz zO)=EMBfOp}g^6;wAoD29s8eGb*ld}vU!&h)DiYg_@6cRZ8LZ#f^%`ZHNp&i+GZ0sW%p2^cnQomn#g&Ob;h0NAzsKumC|s zWby%zic(eLXZL)jF<0URNe4#L5;@jsrywCJ3Cl)JW;<)XU$S*{><0DAM11r<H&oZki30Z}I6IOc%tnklDv6TUPKiV`J;{P4&kFB)_x^a=5t#h`=>COys zu5ze}uu>L&U#_duoXWo8f8ne?KkS)MxlCyTc*ZG_R_t$N+(JFpj)l@fdKO z2)j_*Egz1|O^`Rf;e~m2tg(FC8`fI)&QRY!{1Rd8&JK8ZR8(#W6!2@QxrAzHtw8~V zI!Eox^$sS}NXik<))dCqidYp5U9j))O@+n0gU1S^~f(fTx~x$^uib}eo!j_v0w z_F>ESPcKT3)=)E_l%M0)#G(z^P@6z))kp!8Jsm1NA}tStVc(>eELx-L(x@B?4lcH- z=Tjq^JL~&3K5R7zA`BZ40D_Rz?|f+~E~h>gmRDAa6X|;R3x;a{l#bJK_X%OmA?$j8 z2I$K`aPJDV-f9(p<28!>EHb6PQP75s;Cb_LAu9xjK%77)l`uevh<@i*9~#GjiFH82wK~G4K8F@EMiG&{+(B$ zH4om?qdD=|(!Lez`rLF$wi)+%a2taw+YDRyYelS4Qx7s_4~(`if?w6K&X(-zxnpP+ zWjE*+v$MeRl0LQ%%r7ja!K$DW_Rm9EdPFk9?EP8K#9@IY{I<+r}j|hRP!N91_uTrzeKOxa0 zq4I6TEJ3(u*j|GPMfwp1WpN5Z++wsY*@2P>c&}aZGav|I-tub^jF8J%WIb=ltqncnk?|1U90AH+`KqOxeS615UB$mmv zw~BMN{j{vu>v8!*38lV=_Iwkg0aruxwb=>eR*upbJYU_^Y_5 z(faS1t+|>9$o^jHBg^L@!Q}0MKG#q`vRdPNJj7iO^1}`Rc*Y-MhIDAWo znx+Vf|8!E8bpR4jQ-26EEW9msooyHN9=*k6>ZQi@h5X%-swwO)q;_@t35yZ3Ir(G4 zImkYYAak<7mHD)seSN@W#cZ5~<-)~x%?R0yY?8YW*nuE6c9CA4IU&YamK57#@GtPT zikDkEAA8rlHr$J8EeMzVCR>GEKUj38%X1&TaFdKWxIXv%Er=vbb)Y_uYS zwuZoZhoYozsg(V(T%H)7bx{`d`Qe-7%U?13~|S0d#06KsYcG!Xa! zpHjv8>eelr&B%)_%EDbahE0@H5+ni6U;i#*Dr+tKT%;GKD3w>{;54m(I|s&tdoT9j z5ps?i+GTN{0D);q9OKcV7r+sKX4 z3g1(3-A3yQeweF+a3@j?2)usdb)jUy85-&*W&f*;T1HHvCz!bds)>y0PY6*SF^ejI zhh)1_q{1XN_L$JB+s^UE{_OFdvdDUD8z3OxYfhdrA_Z@b;T6zc=hOtfI&Y)q!}!20 zO-c*XN!#g@wdeHGW6;(pGyy8fqv@8*jQ9{ro?*De6=7x7G2;24sJ-g6NM z{u|ADkbf#l%S-OE@gH`_rS7TT`Lf^Qe!Id35()sNVVSwR_>X&W;t)UpK~e(BkuWJ?$YDacV6jnq;x?(Bm<$LR%{QdP z$TYqU9!PyZK`1=hH(-T+n*$K_URq~|RsXQ({#Ia^a@G1IbI})o&-ICEM-sQag{$cZ z%walft`|eU#e-gDkWS6{(RSKmJIiH7ma%w7PzK-P(4MwT=RlulP&&2uK7UIx zOm)|4?7jRf21evNs2MNj?^?gQ^VyywuOed^zp!2k8}GD!JFVH6!T?&Ut}jxhUs!nG zV(h8iK;YYYr&s+1YfWn>3@o9?MgdR02&J8W&$I_I#Stj^jJ@5a|D2xIw?87^9-z?$ zQ~7x1uuMhXN=sP=Rhfyp&eN40xmWc{4+>C&9Wm8j{~Z+baG@zO9JR1{3b3_K5X%1j z_aHZD)8{uvf5$-e&Canj|HwOuM`ay9pGZav~6-hnOuXccR^@}42Y zLK(FCU6eq2L==!XiDK{9M3C949Gdb$PZ3Yz?td#Lg&uI^#Y`uEsJ_+ZwY*iQt3wcYhYWYYty z%d8f2Q?OfDQ2QrC(QZr|Iuqxd1bmATE)yNp?|mnKr~w?@{1gq}cxk3xu_Gv z{f|Z9zsdWM>@ck4(mnr?W*K&I$uK9A=Z!C2e_xLLKy|0<&l@O^3GjaB;Na*7uPf>%(%eoH&rs$8EoU;{MZ3^2%5-BeJkR0PC$wth-5>pWNw-aPW3H zmnO)mw;F2>G#ibaN2OQH}DN=v;$kxtT8085Oe=q2do@f_7-W{8Q zaa{XaS(Cx0blu9r!;!gL-+SOiLPb;!V$V-iN%y8|rFCq%X`nEyqmRt+W+}O5DjnZ58U{}z4)3LKM@=Ju(i8~!1C*Qp5 z0FL#h*{@K3Ad&4;t{@2$eO(s-jmFHl8Nt`1&7~t}d1da!{z~{!lZC&5Zl{A6(_Wp% zlE&}BBHi3yWSdAeX>0FY2&$1GYKw{%u}$jdb=>fCF3>57nzMwkA((t08aYsphLt)= ztCbRl_gwrzY2=>c>RXx2l&L!(*ocb=#r(aq0L75lmQaX0{}vXxx|sryhCS7pTHd3& z?sMHi93Zkna9vwSETBiKL?_i)@d_IQZG}-II8foji;K6eZ_{e9_jRl?A+vEp1L};y z(zd%Z*sR-D^m-lDI+TtrKc^ANYWiK88dYVuJJ_F$KoIAI(>u|Egto*n`nAmrF)Auf zV=ttPvf1x>i@4nFy6J!k(`)f~7Hk~#g$Eq-udD?aX!AH#zwn8(7TZ68`4ij3h$Ms^ zgHqe575g;DQ*RLm8WlxPn9^K`_ucd(3|Zu>A$6*UcJ3oKy-ytQ ze9>NZ(YF4G)+^V^Pu!+|FCs-vP$dUP?8ZC-1;Dm0x$xd@{ldTyF^8Oigj<%@_|ZhE z_tb8z=mnpghef^JT2R8%j;8>IK*f#ZC~hPO%s@qvvgTpP{$_CW;XP!>`%A4VlE3QQ zs-^Mz&6`oRfD8oA{3UO5a6M~bTqTc!*sOS&U6(#etSD8h;j{A9J{v-q52e4xT1*cA zj;@_h?Td7thI5Cfk)ypW_=oo3wL*-h z$tDLthaw2F)hXUQM^PJiV&I6k2Nt4N)^79r6dd>KBjcy3~q3@XMlw3=Td!A!Z zZ?3MkMg`yLzb0t}L2pH7F?bnhMz)AA88}7a!g|b73}EoVg+!HWkQ5)zthfEw2uF%2 zn`AcwA?q9Bo>T@3FMT4n?p3LZ5kdXShl04N3=%?R^;n?zK1-)1#cU8+N>UiRAtuJ{X8Zw%r;G}3q; z!|JwNfZSvHqd*OP9*o#6m*ZZCn}1|;Gm$@zung^Bet@3qH*^JRJr;>7{0fq7B}7y; zSbmA-V@imVwYSTp*whAl?M&#TD_NOfEjpR2xe;G``H*E|o~po4WC|(Yx{k8%=qfQ> zDE`t2I#h_7g8NW|1PRpN-v0~8qW)qq-`BC30NPhAp(A)?*JUb|+s`je9#k-#L2byA z7g}gPk7=nMA35}A&*B*vflrBoB4Dj>5Wa|c?}R9Vb{zI!0;S9+ zN-!dTcf-NUi4dB3CUBvt?-5(yYmmzHh0@DDx#6QWkXHQm=KpwkRwOFic>EInnqM9O zL)#+P;8RsuY&dq=7EGlbR@rPyfQn0Ly!~73`o7(v2p6Gf9TR|)9qICEN!+}59l|hd z)fyMRVdf}B9n6Rw9T2-7*aF6iN>ii@z(9mgB6|JWA-?O@OD*MQV;U#QD0+eUTtAKD z;v3JPQfQ?;Ww9GK3vDuPf3$(X$58+^D+pXng+dgyvv+u_?cHsr`SHu9h>uJIE4E>s z9SH=%5RgK^CALMeq=nCOs0Z29Ll`2nLaRcto=t@R*rR^O#uZPz=kiwUgNgtNSm^0T zVu$P0Y^3`Ob4^&eG3orrDL1{@&ILV2@DF$a9>@qcmjeqLP=!-=T7PYc#Ur}-1l<$b4`Sk%_WHYD=l zs`yEgnp#Eu6?8SUuDe8IEbsB>ZL72e7OUyjzjUch@um{e5pqHsbs z=4YMKg7tHU*&8M&#(Wi_^P~!HU6I#Q1GAh58rT^Vw}rNlumJiFcwNUG%%GNK*w~9b#_$Wk#d-$L7U|$f}l0w-Y1YsHcu@2wvkY2I9wuZB zYyQ2tXAQcFd8hm7{h83Rrm99qHDFWN{iahoC>?EiqAsiUq`fI2J6fYsyHwgJu~?wB z+5DqP2PKm#tl5uqnV;3$_SL)bd+{U=Ex7AI_-t?&umy>eC(ZKu`zL8qqxl|irs0$a z_}{x}tv&=PqJ6_S*4vZaz%CH7KJt#?{yJ{(kkkF2AbYmVK@)fv|1=n(tpaCUs=jhk znSb38J}Ruw$q7cRaX#Cj97T;@aT>m3VD_76blX>&XN84STUV+CFQaXjMJ#NH5Fuq1 z9VHPSumnLs5abXQ#BdO}ei|(LkWw~EvC76mD}TD(Mq&-gEP(C&*V@BYi9a1ySgc>lo>}CdVtoRfNLh8}+}(KFP)GGrie3rZ zWHfnPB4Vh4{1SF%wYvG$3YU-JoexJMHs)k_s2TR(?Onnn7*)HBBn$$+qcm}fZ;OPK z*Oc4zJiO0q-djzM$Xg~sB@N%DnrZ+$B8!&w1`vdn-`%dg4S(lvt}9^76&Dy?4+0Na z)X-4%vX=9X%%S-ZHdXB>Ad!xEkj^a4Z)Q8Yq{=VuB^F?K^kLkT@G9~)7aL1V?WWqb zP$uBVZ*DN&1b9S9!ig~@GsJV(I+KT5@Nw?V;IR+;!?JISNT?`>VNjI$F9E6Mq9r95 ze~{rRFsA#WV%q$WECdMg`1W+GV8rK&=;+9cS@IP|Y;P}Siqlb`RexW=VPl|a{AC)C z9JzK(&Rn+ie z3}Ye;)A~kEVQY^Af-HU=l>yApr^e?xS>V2bE6d2e7DjT_tMz}NLl^qqBtniFKM_req`1uxsg zCV|N32BTS@UTR^Bv!!h?$nlbdF6WKW4x<~iO596*?1`c9TgW5AW$lk(eXJy3+y)et zB(&u+~!+dLT6-b4~>n4ev+3>T(UIImt;H^xxz*S;7FcOm33c_HEyNT*%sd8{8)N^SuUx+< zu9-J|>N;2r;f?b&oZS>?VC|)u%;_NE3qskntvCw{KBm;WVuC@;Zsh{)4tUC>Yd zjeHCft3&JA(fg<;a_&4vTC|qwF@pU5A-T8Qsw!suqYIM^T(~n zu4s4KjAgSXGsfi28dr!POQ9PC(M>i&>&YjpyYO4(nu`@we^4?Dp!7b)RtMxSh;t?^LIX_*A%68V~U;Un85o_ zGxrQ@$AMqm7Ej}e+%;w*KonV!*3*53l6b5NuuP!iDTNG5bZOwR6?x8?1Xk~sqk>fy=t^LDFDC7cZ1 z52jJPKi>!(hy*2QoXLbwo>fN3RthH;Wp?WuyQ;I8Zh>7W0Y6Eb54b*Ym=Us;+??=b ze>Cl@D7?V&M!X9qfFKTr(wM?hNAfTA_#b2`Tg5k-3sF^-hmH77;s&Y$6k+6Kr`Lcn zCak}>hwvjH*r>n)FN0@`tV{dQ9VP{BexM{$#S-L)$MhdS_5cVj<%t5hH)eG^h`HPK z&XENmj5k5}O#dHdo`Nkm&b#!?UA~_i8WSiCF`sF|A3LsSJmE2ZVi@t3 z*BJfb$a$0jw5!KqWF6 zioJ{|7_0^b{w_NOL}`}`-t<|$?^{|*AVbn0z~Q|qt70DF(X;2;E_d*Y2AqtDQQ82jUk!MxqrrwB{3{U7$1mo<@L_;Gxd zP~Z)GIVz~0-$f{YMQoWHfeVfHL8XH&rs;Gydjb+D?xY#_xr(0zrB01PU&)y-mH>?M zY1jDp8>)}N$mR(e5vA+jU-%q=))Q$4827$h7qTZY(I31Y-FcRd_p6MGivDeF>-7nc z`PNwb@b}(4a~#m1*rd({{@E9Q;M!Pgz zi^s#%>-}BgRF|g7>C1nC&vaAs<{&wi&_}TxbF!JgJ(_2&-T-5Y$A9W~!P);+SOhQh zhCc2{l60TJRTZJo4F*iFJlBK99bLgvloa zw96dT?wbBQj$Kwj$cIDtO|aNuNCjP0?g!;)jdhzwY7WFh!(3w?$jVx* zoqBu&$PfTF^-R4n-{l*cS8|_7uPY%z3Nf;6%3ST)jW3Eo6etQ9(oGrWdpqt$*(N1- z+ll3zr4_T9nF+am^^I#5StL~sJL{^3Aq7(B5AI>V74ahOm}i}O6H3kwA6zfrFNea& z4;~3Y5g+?+2Po~s(TS@lDqFeV@r%>A^>XuL?E_gm#gK*^eqejy zCiX0u`$18LghcXuc|^MS?xufUy`l(0k!1~AlKuKIa^Tt-VjH*w0>gbpoB|isNaTd! zC;&p>&maCIf|?Tb2p>sGDB|bQ(96Jv;lNq;26qxg$2sHy^DR#8Fn3)#`S&*ZZ>EfbEHq^ z*cmYaEu1@)&7~Bhh!Y6(=WU=%YETWKMc#QGoSzh<@I!+p_Vb3N>N5?n4S}E~4utu$ z1O#E6>3`|@9Zz>0pn2MweAL$jQy^T3S_tS^cCk+-En!cb;Xd*g>IrC%KBO4{s8~>~ zE2#zVy^yFd#^jPZ@4q#g!gTD*=jMDEIC;Kx3ANWn+2tRPF(3#JzH?OW<=v#o>qG2Z zNprLETrO0}*k+=xNwcaePSt-I+pOvZv|n4><;QdUlQ&-pKMo9^6ju2R9#n1bNWLV$ z2O*-_Z&tYpMUx~HWY;}ijc;gx&wo9GO`h|EMZ+g7$~)W>F;!Fsf;pA9x$(w@J!aL6 z5`VS7yMd-dMO=ErK`Ac&p$mUF_WBb`G*@@pAF|IT-;96Q=dCeV?*&#H{OaTEpO91b z9>4XtvLZF+UT%}5Sq;tGiO8UmO^2~1F9q5TWWA1sk~`NZ_qlbsy%-OU*vy=Q@0AW?-$2`=uf*S_gT%CzsYFGEWS=c z68E7>X6C$6Nd1J=*Vi*-OI}5Zo9xz~qE%>?Mjc~X>%sS3 z^uNBeDJY99yB{;+5PsMI-?h-zl}7D7Ip~Q8^z4oIpv1<87*_0+BA&YtQVDyay&uU; zygshVIAgiI5WWy`#qCFx8YC`(HzxVj8HqtGBFlb%T&cLyLfzlowHa}n1CiU zy0m9&5sZQMCwVtYqbaO%PvU}{>49Mp90xu<+*Ur$Eb}~IQ=_f0CX;f_vj0Ic zJeUecg8)+X?$c3&Q4f}kz&RHA3s-_@FCgeBg=908nV2Z&& zg2bwt`F7$`#Y$U{!Hvte*fHI`P;0%|zonqe**ZEZ1vI@`$W5vuzl0|1u!ghJnmKu= zm~5`=7pd!w_7e>dcd!LM2(_LqkZ|&~o;{ zM?JHj_)bO$A#U$u90@W4`ED^yxw)aslBBu&L*N|44&Jp_tc=w|#v~(Fuq_7iOn=;O zywQCx*FxZIi7mQtfJT8=ChxwR{|0}RD7jHSoa5yaK5S2mS>8J_#bfsj`{2Gb^!eW7 zI3EPj+VDBzjH$qN$HA73_;)y|M|oIY5tKVM7x+Y{IJQ%4=LyS?ynsq!ZQpy+pWa-n zUEEs9TIqp1@DcmslWnjfgQun9!b4zC1A;6K8v#PNuK$nlANJAm5hBLh@i;z7ASS?h{yQf$&pgXpGm`Eqoa?NRrlhSmovTeoMzY05+#?#Go zwc1D(yX>2_|13YVajmz3V-JEkzfKP!XNqm6f@T)#G^3|VEwSCc7~*&r`2~#z4;{UC z!wt$7BXOfQT+pZmY;|$j2sLW(5?2a|7oztrLCUP7e3;keQETUZPAWmL<5kHrP!S#I z%!4t@WU`(HWZ->`QOT_%V!FPIHZ#-}edGKtwM0h?`&5_^O0Z|_UtS9?B@Uuu{jq|A z!*xZ^j0jJ|F!QL;SyPa^JuJ7k$_htvk20)Ub~T?@fR7i!ajYTHx`HzBcXX;~Nm%o$ ze@ui?nwwL}iKbDExuhqp@6WpFf1q#{g)JdNTV;waa}@&scm@{3d-hT#`@&u z>W<;7W-@%|4f_DdLi8%!{WMyP7_QHoiOq*GI51$#`FqlGGXlyJ1?fM1rYc7WNJshv z32s}JP6ZpPUymO(X~WXrI%E!>I)$&T75^>_5+&eo8dLa zP`!6Gw2t^EEX6ke!G5cnke7mzx@Pe|$L=RU-rL*Hx09>Wygw(CnaUlBg^?(}MB@*1_S+En=V;6~72F zCo+YX2ajOa-gL|C2)RC}*Kg++Luk>jFMS!o7E1eh9$@=24y_~b=4PK95TLvRU6 z3XKp|3@-u7$=(PwW~ABK(cZs~6kjQ=J$lhNug;3Mu7=kq1LtE;PrtUQkgy=iN^nz zSaLeO97X*kT%QyV#)7&IRx0L3F9hqt{^*AN3DwKka`-P0kJqHtij_P&9d@zq&Z-=? zp6oONDWb#c72f1u%PW!}ZFfRhM92ES>qfJp#X2l&02tes-Xj^q9$My0_kB$T1OTv`t ztAz=lPorPN(!9b4f`U4GCf8VI+G42Cf{u@Mkd5bWnSwS}@j-q?;&1b9@tRGDFFFik zYU5Y>X2Pt1^zB~pH4D2p{XMUbuJuzm+3?LiV0w4NO({e9U!z&F#6!9@-s3s)HUz_0 zt0DJdUk6tYLvdBIK(p8H!-WY3+#6ubH2RiDA@a?}w`rbE~a_~%AH$&nRF1Aq0(l3|?Ga~X2AorT7h6<&U25kOAw7#X5}LV`g#lHMrBZO|DY<&>s`HSvpnCUb7q6s5%cOZHsTv)SB41=OjX}I5?F40{-9il|<8 zz`kZ!%YYDxvRJ;yFUFo}Q@Oq#D3}pZs?{RCn(B7hqG!O*{h63Bz%H$rAuPmTX87&P zbIk7Ml+E0VTuy-@xd##})z^{6Vcf+?d8&Bj;I*H~y`!_kH-Rc+!mfu`pBS5*98*JU z&{furmz0h&nc)S7G?NqfuBVA|F;u_@AEFiyPB~FFtSS!{}FhH z&=45*Kh0~nPAkSHk@?BR!KuTViTam<=aYyePk7=2>b0pT%C@Fe3AgR8oYWN(-5f$T z9FO2hf0e|z-O=`}>{%W0*cabyGgg<$O$lM)xT~p2eX6+*IXASP)l9AM_@Z6d_Qkfi zp_1r68@`8~fjU?gC*>-DbcoF{Dp`C@ z7>F?ci~4Z8yquyuO^4udb2~u5A|woYc2-_b{K#sY$7^Uv{!42*%+MVb(SEzxY->y$ zRfb9L&zZWsY(?F6q$KhF1S zafWiwi^;$cKEp(wS;Z33rzxTlp)VneyDl(N=%`i>#KrcJI7Cg$gyFU5d=HvuQcsKz zHc^HjiRSi*lNtTv;Sy++gf3h4`sewuEquc~ATR`Hql$o`!58-@4|2v)#j5l=UC_U4@Jn@TFCiv}-y8daDQ?aGBM z2N#P>8$*jF(KO9@w$fHISqR`jycNtLG}PtgAbm|g8j~`WW^n{-?Qx#VowCFzS?`l0 z1TF`$LuqUurMS#}ndJ^L17258S2c29fg)z{n~IY94!~09K2Ff19r+GtxMXKaQ_nlNr(4+eapziP2^Bu$ZlYRf! zfGnbfSjF5L+5%0y?^;B1U%jX3a`OW#`PN0hW8MAg6AU3}wI?5qv`5+Hc1Rx~ZP@Q# zwuvmn1l$(G@-NRk1yujph85~wc8suh2;`HpS5;c!rcdO*7-9LAZdDX--gU~defNnmEDB{7gJg|cBv&e81|(4qbK*GR1dCE_7UO?F9}v*_q=2T z-8It(hU0YC56a+d^-LJN)B#lIT<*;4pPu=InFb%fJ=c=3*s@092w*m0 zX6S=42Qn(o87g@aCnuw}6 zL3c1C0d^2xnoh5wlwE7PYg8UVDWeSv9h8co@Sk%bmt|v<=VfYe>3D;tkq_fB;N01C zuvIuKd3{LegOLOxofMD%r>MF{3_({}s9Y<>^@hZ?7s#c4GsHRuX0C5x>N;M(wVk>IyDXztxx&c4Jv-DUPCN03j9`Fw zF-lv1mG>74Sba4jQ_-jC1JpbCcbBizOtsPf+e|znlMN5K7ZuiCp(h3qKnY5A3$G)B z$$rAH%lyKHTEI?ZfJjGGF@U`Vh0bDgu8Y3?rc zRU}Zm#mB?RQ}%!7^Shtrtz81&TNLZqCW>%IRs~v-*wlD30!U+LRerr(Q2%TV0V(OX z^YDZ}x`pSmEM&&Yv;*onbarba2|$c)=+tVZ1TSWpaa6bnxN7@{v>rfPr1Yf-dLUVM z-z9fiE{A70=fA<`q3^E&7`46pD8?}otMog_RjI*VvrRM3X$>l}R=V zfn~fzsqSH^3VlW#{10~D(I_U0g(#2~zD(nBv^bWdi~owS2R>}bQ}}wOL|j52PR-j2 zT<>g72tH%^Oq9Hgo;>!0wiOS4s*{z+lc#$)9W`xn`4pPrc{WlG7f&Gj=#92b`g zNW|Qn2KP!_x+8^$O-41%H=YG{7x7rSo0CsQb6(~HTa-!XbL1ZVS8 z3dVEfh@3+}DlsIO7e|7^7woyC_1BBp=2!ieLIk8GG!hQ8>&xKU{=L|9qW*Pfq(4#p zT7>Tm;I9`JEkB6^hU5$WS08NF*&g6I!{OE26Z0o+PHpsoLpr`8M$pf4oiIkBm|ybY zJ+G7sDy}y^-Yk}e6Ta0X+Efr!Og*Rgj{2LPZ~Af&K+V7WGjn$WW%Q$9NF{tolI*zM zgO-Ddl#~5&&*@)TTINbks>=8=8r=gT4YD0z&qL&!`xs}zX7=U9b63Y4GnYEi zyNiQnI1ZK4^G9(WJ!KUw)R+Sog&9%GXk+!lf9y*HY||h`S*L z<2mdqGGl9vt)hz1D7}@N+5JaD?6g~jP9%>NOW|y(UbS4Z0Qw&L+Y%e2&@MlpGf;e- zA@ubX#I$MX&RSpN$QMRpNhwTxfI0@C4WeI%b0!=*Vw=V+H7&CX+;Ki!-m*sgh%#>J$y%9DR9VcLw+Kk#dX{L2zUubrA3HSU%OEAitt+v*v zHLBwOA2s1!yf)n;o+7n#=QnJ&0?~IIvrKG7VX_h0>_UzshihkGMuxamZun)qAVgB% z1nBh3Nth$x`OxK4fC~hvAfEZ1jTWoZqflhb&SZorHiH()w6VC>V^FB%)pS*>ltf+SV7*Gl@?78n(|fZZ=L+yqTR13C3A; zVmEApq4=w{)Ub`JsEg~vz(TGqa&}8Nn{IGf{ed=m(J8fkD*#TCCQgiv(LbTXQz;dp zBVNrDN|C?EN54WH$sze8G$1qxOCkm?4FCHr+eojBgX7Iy5D;&@hRSSQ7*z@bSK({d z73rsMo6AdXKTh)>DdR9H+d_nl$IzvXtX{o@Bi=8+IVVmE+iLc+neO-C(e&Q6E7LlM zdrxB1lg&Qf0Q{3sBnW5xHn4SnOa_+vyWRaD&)><}VPNbKcdVhYMg|#F0YkRg7RRXa z@y~pv2%W;jH?5{jxGo*Ax~K;#CcYI-MceLG+sbGmb||H!#)c4!LHm_5;zcIWKG4CL zb^JaZ4=9=2lc-=w(ky>1m%Pg~W(=oQA{dgAo4En>AdA^r$ix`4UK+lB4t^R%-mUe% z3f~|Pz6o#Kqh%QNoXz1hJ!el6h`dJ7js~I{bzd*87A(Exkox7wuOgDeK!2}{;Fn8P z$|jY}lL&|}Np*v5J#i|Bd-3Yk4eD_p!o0YGh(Tl*7*4+MCT*wD8E;;GJw-6KyEg5P z_GiG<*(#~z`%KfxA;k-{*EYhVk6I!@KK3)qRy4?V84`0wExHR+@3S& zw@P2xWF4`9NVN!gB}^Yqr93f%mn6)^bA#)$Ke_js?e43MpG(K^Tc^F~Up_zKaPxrM z1Xzui{xA#JG{$sg*hIZyxQG_2GAX*yCRKoF7_+{u2!45p#V1~u4Aa}PMi^t>=7qNG z+KP@gjIvn|L@q?fl^{$;NkQrdTQ5wAxv8OKas^dC9%z(RDz-^^an3iU|1&aqh5Bf{ zQ{iyKO9M#Kn*?CaG&5x2%l1e|l$_BN^GAmVV@$z}A6t4TUF)!pq=12zCe=Q=0e~$_ zxa_l?Z9N}v>{0IT6h$3O$y0mECjs?FG5W#gohy^PxefBEl`p#6!Fi{6)Hs`qu#-uB z>UrJ&7k>5}27SvgJk_n@?(nOBIz)Iarc(q0i`%l8?d zvTTkn&Zs!0(?H}f>QI-l4N)gu#o{;C!FI(zHg1?3W6*mM?fEN>8geQiwirY~3bU&X zhK#GCBcN?FUL~B$RdKAR5XUMfe)Y?G-Z$JEj}r7Wv1I5hx?JsU4&_Et^>sTSqe5%wx@cto z2DbG{v1Na^Fzz$Mn~(-nqHja)(F%fPV}#7mgN%Ql4Kl#PS2e^NZ^L1zj6SB*75plv zuBcwKU28|zQK^6Z`BdCSccI{ z{UmuUw`udym|O;kLE;77DojZBd2DdMl|{@VUXhz%2bzrEX%#RrL5mga27_?~tl=AH zU2y$js(3*|qEYaapkd}6sDqLGN6^@BMuh8^u0?9lPI9KHXFoZrMbH&_p6R(>O$<0R zA^JyIJ~X;cNPr??OdxdtS3^9hh#C|?f+U(Cuf_%qqym&Lm3=#;$6C<&Alma{Cp-M% zn3qGw6)~V6gM*X+3`wIVlpMYIp2cI8o&SbKzvA1wI2}R$K=Yj;)_5prxIx{Btj6Y=;knw7+2`tcsTaVP0zPm!5#r_#+FaGL1s|F&2847#*oCOg>fUX=dieg>|J_`1U5iB>lh)3`-%vJBw z(7q^z=NsJ|i+VRL6YE#lq4-H9>~WEu3;FNI&k5W0JF$sqXmM_XtJSy&2Ll$pC;Sq( zw1K;mt@1(a?AAuXN#>3_@66XCC&;i7GJhx=lE~%MO-LdJaK)TvHZ-Hyh7Ba?Q)W}H z0qGe^#iW6CGy(4w9eU-LZS&5*e4#+keD+t+EJc(!#`$N+iIP6NLNuH0|0 zrAdM-?lBklUKZhtM5fQ9Ned0;HKyGi zpa1LCa&FkB0`Rpi9Jwfo?T!Gk*F2f;fuc`R!Y3sPG`n9UzI*CDdrJs2lhMmDJd*O}~3 zet$pW#N-PLXoO}Qwglu0s4Mbm6N1X1f26T$%<;e(|V!^>Q*(#2}#j;>HIl|LSTkIgh z@bDwigv_E%4;{9`w<{pLkPa^D9;!77{f45tTQ@+2C0+e0%5a_@rB}Bn3?m-ud6{R; zwEd;F9!z5|eK#~`yO@6qEb_q+l;H4+A|_c3b5R+mhLV}%hJu{ae1&wtHf`HI!a)H& zV?!a*tWd%@ZM{SkYY=X#lkS!2Y3MNE7gp*zA9Bt=rwpy>7PbQ(bc033z@L98FZ(;> z_+B%TwIxW*ydB)q zCBHh=*j6p^^*)6&$PnuR|7a*j0;5mP-o=a2=1e0CuE7v{t`HVVD)4x)73AaBnOya! zqO?TTEP9I?OI`YkwLZwxZzdj(nKyn98)`ir_&ONb=SS)qv*(^epO`vOCbr(7`L?5^ z>bfeNCKL$^Ull1=(fbG@2}xwa$d}HH{Pyr_58?(xif|TQ!n1h4SIM>ts6UR#px zBeG$V|Fl>Sl`O0I++82t!{ zX~s{Mf8i;h>%zr|66uji+`+}S#+AJjuDnz*@DMr8q1i`QBIYR}Ku>H~)i}H&wk7uf zSve(G!>uAO8UmHp0cWUjJ+1jF*B!oje(vuEOSbtvnPV3q{mA;OQH9=mkyA8v@dDw> z3yBN#JeIHp>=3P{ui5*Rb&uLk@Yo08Hv8f)d}2oeCUEjHS|QvSH0X}5t{&56tGjw3 zdLjRWDaZ<)=OHute|OAnjQ1#IM0pVZGLN>QkOrtU%>d5E{WzJ`dS4L6{w#$z&NDv! zq6iXbBXwQ9r87{T&r^al!_WW-Qd z-7o8ssFNC=k$V;0(zNWB#YK-XYJKS^p`OzYi=l+DVQ+uxj~xp|r&)Cs$)G~SB=P9M zScHTK85v+2x6A1*k9^R(w(MA3t$|zpPl(#cK*Z0ij7X=tXfPv22CUP_s-SsCTh81Q zzi6+Zem&x2HmmeZ*J^kxs%bcQhg>IO<%`q#%wJoQ0KxVYkHD+{*aK|u%k?#Ve;$%U zMH3J^lB5(Ib^9iEuc$S9kxb9U7UWixeEWxwj46<{Bqboitr4f({2x-H9zl!}EIYWz zzIwMp!ALNQrr^USETsw7W(qq{j*ooB-k*NiX;TIvtozR@L1_skrch|E$iTve20T4g zXq*0PweC3#C;S)}2JM}qNY5aSBk$M&wJ}u(=RfLjPSJc8bXRj{4wRMK)e`X$7$FfMt+<>hGbSq(r3gESQ(<(6`wAHfz7* z=im=v4C9_NSitx7NYL+dt64sCU3sQ2&@>|W*^v%{gb0!8Pa?&|0A#*$;E1xc|6QE9{_d~xtk+Sr+2h)lejPN<5cr&; z%xRn#&?lB)IOC2wb>IiFDZBzh^^Y?=|61*2RckYl3~gS>CkIafXjq!80I9bH_Nal( zK=PGVmrWtsFn8hs8$}!T%_a)l@_H)^dM7dj$b9F-?||LmnLImoXfG-PZ0gNIvWN+} zks$@C9N7#p<4Ese?>V$}xW%n>zk3^MqUnjUBH_--U&l99cluMb7~&lUCJv2q_eesD z7dCw+Wov0!eoR+4z5Qo&+CU!z2aPDmSoMA@YJtVb6%3HVPtcZ;NPYNDheuYcsE4NQ zKQmKPlWRzB-|(v0F+DT`_yn(#_JO{yO#ALQ)$ZNjZ)+;LrexxUGRJ4A5Ij`Jl4rKf zx?8fh9psLL(~ymvF5ua3++g%Y%=UtX#`Aijn8+RnTAd0040|xVzD;;}fgxRIvUVsL z$EB=7G8aKlE^*iVGuL4`$SKNUV24&y3*XygZvq{Udy4bJ zrs_qO742U_da_lP2Ugr?G6`e}CD{@>p}yM@LF1Dc$(^~tLv}VYZMh#a8c@^vEVXCU z@o?~*9iteYWnw=cEzZb&AK`g(O7?#fOUM*K&?MCe6QlbQ0`Ct@vrVjr1e7^pVv48# zyv}nj_FoqQM&nL^bqafPP{C|B=Rt1l_+EiOzZb!cug`C$k!=8Ef<;AqSK)J4S( z%bgG}dWT7x_HBSjsI=!We~Y^4?s*Oo8Qx+2-jxa_;XuKnuh!6uUIWZ1(C+HMt#GIa zISXF8cFlfSXTqqn01EvR3u;;a3d>l3U*JCnWs8=DE4HRbuJ4gb1Mn0eL8o9yIPZf}zQ`ow>6@j8*aY#cB2zt5V3TM-fgWU*8)& zpBbK`qXpb5a%*AaC~BahQMuNf36bmi1lgXOt)N8!Csic9Y>lbsLWp)XNDm z->&p(OdEkfEm8)>$HL+tdrba4Gm|TNlMf8qYKdA^Uew7=(JOVHOOExUQ@^*-uFlLxjds14T*>Rf5{JIj;}SC+2XT zxUb7sd4lUT6eNvo9LG!e<`kcD7|r9g$|6+@XLfRHj#8yKesd!ghZ7EaChse$uTj(` z%FqE!1Vd5?D}n2l`XO%1`pO0*I~CjI-9kP(&`g%?+ppYtsL1xHnNd^oqpmGHiOnw- zJNSTs3sY%g_loRu&Z6lpR^;FQzQ%;cAdB1+UvR@6_?U$Rv(1)M&lwN-nz>wXm zFaMNp<7GJ#bR_g*wow-i&zg72#d?s(Xn29@2{7dnh`4=eqxrb1h50|+5ufYK@qNWp zx{M^9t@UI(1M5neKWBKIxn!z<-99@_1yW~vT)H3&16&!In6Uc&#VdfIlOz3^a5;#q zBJfR%&+jzi*2*s|B?OlSjfS|}YrtVPN3RdQbpN)LJm91RQO@H(<4@r9I@`xfe;Lqn zmc2?}YkxmqdN>-bUYQs~3joQ8PK(UC`TK@pU|DRWvWRY4N8XBclM~gg<=W`^UI=}< zqiSp0ahS)iu0?LmVA*Dz3bwT2V_UrE{*5HqiN?jVoDo*?FZJa5w+e>LN%DEASPD=0 zqYY4vy6()=uX3+s{W3KqRkYwrUI0khgYVKk6MF@2bEM*n|MfSwy4BlJBT)!S#ILJ7 zR{kyH#tapYfp?=`K|v5||B&c%aCia=cIMU^CdU1o&Y}wEkU^1r){=D&8>UUanRyN@ z1jH4d#sv;3Aq>i94QDbxjqerASrOFog8EfcwG@a3@>gyKxw*@j&>GEKu>d}r!@I`u zG-y0^U_?5mu0*!9AzH~lHU9FNMd68#FN8TcMu5+d?5T9@tUCrSj@EwN_$}n?6q|c$ z4ulBFoz&yKUh`|~xXIk-U?~~o=zBh!T^70$D1AEV{|d1DCU#v7kb#A?Hw`l z$XS-tew^qB7ZFy}oHymlO2F|CC>VMjD=6dBHg`PJ`Iq*`fQsN>4)Ve7h24C{bxiMO z-)jUhWPzW4s0}RTRL}{>ll-Ps^AD^G_m&>_Xn3c`E2*As;0Qq8~lF@xW zow|U$FO0TIa>%CnT6p?fKafX$!{Cedthk-IE^=@e${}AbdX90it;pOwVUHY{y@%CAD&hj|$L5?UsT4RMt$CSuLQ}ZD z$-vidz6vE)IM&1r1Vk5kNypx$i42qz9jn&JiiD`Kw}+7|z?-BLR$19j+U}6mF%)U` zUScsD@9-!8z+SQ`2}wy!Fr&)E;3j5={?g>tRksC`nsatL<`Tlg-P6B&q0a0=Gn$DY zgaN)dKS$+%H&OK%{%E9g^JN7U8DgcxDY%~f+H7B6p7jUk0oEWw!e6_%4-&V;Sl{gq zkaSvwRK12(MRWYDeJ}p`O)~ZCqi{38*1Jolf`u~&yGGo_=invqB#gy5M4ti?uJ({6X zNK$N7B$z2>U9w!4Zk}jn`d96?p<(U(bI$x%s-YyT*hn$a`q%qk@&8=F&V79o!bcl+ zAzwc)La0M7Fi*e`Xnvgz*G7~XFlr76sz`<)~UnPj~6WIqYOR=ywY(oe- zcv|Y@gy+lLX{lNfC4AS)$u4JzzT!!6;laM-hu1NgT%qrDO>E}*CCYw4l@Q9$ihOiU zU!?d!i%evQ&+0MIj*MK#l;P3K42FcEyvh)#h|L67_O#+~mW89aEt+kY<8sp(3I_V7 zX7{-Op<#=d6>fFb*kVEb^2s5*#y1+K3||$=6nJi=gKM;9QRocAI5`&C*-UA)Yv5{5 zD=OMw-pR>9)w3#-qsfE3o_gxjeegmUL}!_p0cr9IC`FCthk?tCYQHMPRf0(2O=obm z+zQGnnKpOaoGM9uIjA{Fp^)fH>5-yz5;A1KgLLHN+aA#ZHyqM&HJ#Xqj5;+A!aDCC znJ*`2zy1phbgMg$Wd2bSnPRFIWaEYFO?u}-2=aRMPjNTz(L=Cy5dCfRFo=_E)w`J^xfsS+<6BeV@cJHjgeFT?n$XrEA?+?U2p+ zt$dWQWNg2POIUOPaWS#wMgYUWZ*BIPU~0eRjpYg@{t%RX@`!dPFYaY1)fwItD7STX z^#`x*aQw%(#Z1<2q=b^FcaPXNs=IYSFl?nG3fGLt;Ex$=2@}*)6`_^z1ACgCmB0>O znFu!G#MwzRxb%fD3x*vX*{xblGs$I+G7)`aIA!U8Wl1{7y*(iWBuh0UE>jNTpjDf7 zd&E;JE1N(mI3uv9_K`MYCQ8xJkjg-2>ih8DRk&Dm8b0ZrO;&RZdv(HDCvOM3;8GQ{ zvuJcxUBIT7@yJH3j_wz4L%nydp27b-Qnxr*;dJ#4Yi1^N-|3YcioTj5( zjzKGv9b`=>(9$k+HGQyQKVe4>j*?~W&}i4_H-n>70yC*7FStrx{7wkDjSn)`q(+wH znHm~#J#8~}TH{!U1j=E9BW*~4?Wm6{Q;Gn+=yCFI?3_G08Im)Cw-bs5g^oSv@z1ojb=o!7h?g0>g}t4NO97W$rBZv? zFJ-54d!g1zJV6J#(~CAO?bYSx7rnSsYpo75@W1UVesB#ogr!F17fXII{&#%u<6%MU zER|zu*M4F)nXh@Ke~Tt4b0W@K!TlvYy??xOu5@6Zsj;-iI1ljoxt!JxZH3wfL+I1= z|2~NsaUS6hx*&#woCHSeOR0;I1kfp$5%yV`@MUpS5{)MyZgc7iQW(ww{AlsuhGgBi zR5@7^R!Ld|u*PW)a!Wfg=A6i4Nr9{}Q>R|sk&q=tQ6HG94UyCu)0}~0h?E8?M3lwq zH+HX1?Cem{An-Fro;H-rl+S@%LqTP`y#p~v@H{d?Ng!0hL=CUy(-w<++Px}UbKO8> z)F*C_DujA+D8U$7(cx&$6*4lAq&ooH#2a@O`xEs`23wUN96TkfJ~%kGi2!Yaf3IX%I(*J<7Ut<3=tyA&6p9j-SR#2PlRXOZ-@B_8{{``@Se431q#b z&Cqc!p_jv+a!#?8I?d~pxV3Rj;4Xq014#c2ws%rC&038fG&b1HYjQBG7D7g_LQT;-{>%H)K~&S$?hFp(bx~5MKEL z%s7i#Pey5)x=GWnHg7O%`i-|Y+`DO&Zz>&%0vHWY*i{KwgZ#M&xh9FCEFWZtMBYKstytG~byF~KNZ z;3=LzxSv7K^!Zhj@6gP&pBc`?9cG^*dwiEGK9T5|)cJJm5Q`8pl05$VZ%sQdfn=$- z`jV=Ak)O0|3ih;`l`S7B1_l{OjUM1!q0Y{!dkBPKAt0hg%dq{*KJ`L@WYRi&_11jV zU0S#AO<9-G#3qMflw8Oe>FJluR*KhtekVLj@lCSjjQb5NXRv2jROBsvZs7pm^K*6e zlen8yRq=ql$#bLiiO#f(+4w#$YglRL@*s0T*Mwp_oihIM_t#@P_XlE5^Eu#Cm-NR!n7=x~ViK8K1A>_1q zYH#Ui{m{Gh7mv6C=LL9PyqgV+0S=eHxgYD?rm&Y%I3!kv9Ygr5qOXoBKXy`4uBHF^ zm!1EHgm*C>fd&NO&QBxjS}*{S%GBI4GMYR^u)$K|_BB%0j5YGPo?U5P>L`>*%&OS# z*TL|ch&Renia}QOoe}rtpv?y}G9t42IGIc&hBxKQJKc(!Z;pK9fBa%R>QzriqfDhr(z3NZ|2xIFW>nw5tJ zvqWB^O%zBBi>ls*=Tk%j7DN@Z#jBs^y%#hpMFfvT_)wvZoxNk=4u=M&=%`#9-rpXrqfWUGkt{_9UWhl#&8oh;?!p;5n0QDuF02DVw4C0rvrR-ur2A`*wo`v7c0R`og|?()g|2(Bx#_R8l$bQZhABx9 zS(K!-j8u@aM#kzx0*(ai`ZfP`j0v}B?h@u_8S#+I#nywz! zsHt@7q8~9P^w;i(07`iTXBMvW0%rJ#JuJAcGzHA!{KJg6Uc7sgx?+gTuF zw~8^k6MF~`_8OhnUv#=TdX_tM2SxOt0fx`78!_Lox(A7WrcDKoDpf##DeluIMbFqPn`O zIq$5wid_sgGcy;ZO2QUxD^keT*!)`25mtx&MDNy3mxC0~ zseN%;Mh{g+&I@dt%FxIP$2#@qQnwDE1p&#F*u#chc$%=Ah8UEg&|d158BW^UFNfaAY|J6>@YksXd^BbvAzT_QXqB3&PQxnzCWwfYSpBMNHoe#lr933V((j((04+dhB+7AV*u_+$iWAtpvMoQJR9?E1GxSV zDNdH`t;x@Aa3qkqJ;SciHoHF3>R+0R_C>Zs3|kVm)Ik0wwfANh8_k#C<&PT?f2nZY z0Uy}&UK6Ma^z31P0n?{WO?C^0NGg|sjso5&gQ{;fSi@qWPcOemYi+&Sm{W1UxDjC{ z@ThBs&fH!dRY&+B51_8&7eammukR--Fi=OE<|Fdavpd(UhI)ivdloTXi<53-o&+dg>>R<*|H z4QN40Fl-3a>V`ya-Y={bOc8!64`bFS;u)}$;>wvszJQ9Mw|)b|2<(n7jo zg28c(U`kOq`ec^)R1LEKLKfc}11oBSJgwox>Md;@s|(lQF6HaIY-oNANb;js!Kii2V-H8Ep||6kZh?NZ|hK&hX@McW4W2xB9%5?w!FDxQl_ zizwyvff=>E)-fZ$#3cYDtx8&z7mxpW-v8$=fa(@OcJZBNTRym?qT`cllM7zrU_f^c14 zfutl0BGu<4+E;)E4AD)y(I2bv7Wq^T5u-rX?!^>AFs(?Eox!;{B|^DJ|M(=qVf!#WKV1y*+7 z3cmci1>};@;Fu8(BMql+6Ix+aUrZ6*3hDAZ^OPK2s04)d`NHsxQelEB7qD*lllE#| zcZdc2*J^*#;)aJ&-yKHI4v-J~dOx@;#A@)g8u~!h53P~aD82vSU@QViWoSE_u@jUq zKgg7y$0(D1QvRS;OsRKitJ%|z^qwA(`kLcQ0xFnM4DZPXOBz))Fqd~)nXB) ztl?L%qa`^Nwp}u;IYMfkq!@NQDS9(rIUE}~wJr6$U|Q9%dDb;sbu;_*x~H1C1q!#AMPX|{d|E&Q)!Jlz4%*@L^>3%sO`M6IneLV@O|q}0 zk9N8a>wK1|vh{(F)Ygr2X5b2P{6B=Mto`W+-iA*5t2`wA6wI zj0)XN7c{o`*wj^vzS(B;u6V9UCE$j+Rx>Hga=CeE6_JjlB4zyfccz2X6eL+@SI5NQ z_5-6>@^n_1ACV`JG^Ht6LP8GK3g|`eAa&jkkY#S;-Qka*VgE$!4(8ol-cIjVB+5Df z!3MRS(lTmM?9gf^IFQtrV(4Wh;C&yljj5o`Tw$3gV5^2k zyMYZR{k=V#s0?f8)p@xTpoW#nv{kUk&ZNJzRu4tzyq03KZ6jmm%#)TWFoV<>4N`d`~p^r_b1hSbOk6Wx_Aj{Fbp6WgamAQAc9AyDZ0}@+LM## zNLJzp&WcMCo$BCsrb(O+nX@@exULN{-DD^hl)sFl!S4N z2_+`qXa|oN7m3;*K;jS%X@lG^%E=BfFhBmDG6S`Usl(ZHR9v9e`)bZz>jAeZ`HYf< z+b}XsYA1-DCt)?GuUSK{qG6Xsh0SrfclUEuQF1G_5y)DWX!Y!sz%j3b$u@Ek18!TtiIFB z;cMdaSfBEp=`IhViGC0JnQ{_>56a$W4#7qBZ=#1FqutDFhr_oGz(W~>Tyuf&{{ErT zK9C=q@toIV7c%zK%gMsUjk90>L9vk@LVxdQwZYDOyVdPN(3nc(wG^6!;Pqrg5?U0x zC>XLc)R_mw?AY6kgTS$ zQLHb~d>$@#X-eKZw0=d_M|&dLJNHlOGgF7AE4i zwcjEFBgK^Hmr1Eof256O8L}Vhrn2moT(IWDjd2Z+{+4apk4@(50ZZD61i>~h%0QPG zvEFukZMN>$(+<_TznSRz6B07NPMDYfs1veq-M?B^pJsdEyJsK1R2VN?m^6V!6o7xL zbgu>I|43=OM*Ot*t|th3wkF(WV{QAJpGK#oBwJ3z{OdqFx`F9>c!|zl-LVeI(EvSk zoUFDxodZ$;3E=3~|MQ4+r;=LnkJHtJ9R-mAcHHI9eV72+T-7KRSB!$yyj>q5h&^D6 zgdp!HhD3lo0 zpVW*SXb!tUokox2&vNh6*k?>vtNWU${$wf zcl!KQm*;ORYhcJcTf#cAx2n2klDP)lK zhI7rrX&h)0`79tw337$`mVb$JTz=Z*|M%xX%2@+h7t761Ka2!JP+p_}HK2Hc6VK`u z6%eEBH76u%XU?1l3!^S;h{pu@L=hrFkjOI|v`2Y(!y+!qW765_!61_R2N%`eQ_%M#8+gFUXhlljA6N)*ykHF0IM2pHE1IvN*vIyG%~L zIV3#`8Db)SPpo&b%WV~@&PpnKh3xS1kRji?%GBh)GJa3PynFoj47=9&V0=4`v@a6* zb+*O?yH}-Q#1O&HiYX@}<542ARtusZ-|x!#PD&aim&q%O62pMSZJkKEhAj43qLXIT zlj$v3S~J>>MRVD7wSU@u-J0-FlahZ_BArwV}5$eo2(V&eAMC_ zPeSA7J3O4baUNDfE#Wva?{Vn zy2y5E%KLjPhJNJg2N*I&v=Iwlp!_)>WA;PNFRJW-`cR|F->*lJI%Q?*&>DU4)>WAM z>NA4Gs+bUJ%w$%?KK)ipw*gK~Ft*zVqG_EB?At7*0K0K1I|cV7!4SA`Lw3bPDC1-V*U=Qu~qrnab| zAoeUHCD6&>Z{t}RSRMnTp!YiE&p>9Tz-ULu94oQgmQ@jir=y7WRJsbznp$^Q<#Zb> z0cuG^!hFUJ@#DNf-C5(wWy(TmMB>CN%HqFn1#oOExuS9_-Juh{YE@J$XlBpFhSJ*R zWLRsUv*b8aX3nTR=DSw1wOCS1(kLpLu+V(cqo9J;p(%kG79QKNnMhO_jTO19m8g)${&AP<7vpg2Di z2;%k$Dkb>{?_oBGZkku0NyKwirg21z+EV#v_`tVqNRb|Dm|pSS_Tk)h6SrQ!J#=)y zb_O#DDTd|`f_itg6hzDmL)wZtjA`}oAa~_pa-zu(%qjAwen(fo<4~xo;dZN@L1W`9 z>KWkDHQ}IxXsb_N>LPuWSkzfU>G8+g(WlTQ4r zRTfk&FAWhHT3m`&@!*S+x6+Z{ESDd9Odp|jfzi;TO9IF=FvB^CB$XLT9Tg%Qc)5wy zD25^f0J-#)u@Y~c;=Xvir~u+5|4%9=w}o1E??g3FU5zqm3>Xo=OBl%Z5kYFjeYx3~zHzDl=X@zm zONybGiEj4xiOVl$!Vr6%BQx$5@gNUl#Yv#E+D4i9Z;8-yy3^Y?m>+M~>$^9&x3;<( zQH}n?sCXrBMoNh5j*C&k($Ru(%E)BZVf?XPhq&8ep;{B;JVL+x+rzSRKrE!)cX+%( zJ$X&4jN{@f`+Y|`xqPe`*#ySPhlx77>wa4Mlor>nI)IKh2@-KCS<0#S&_aKQCgweZXct-GA*1rgRTvYv3T z{oak!8E;Q)Mks!f1S)F^F!)MKiBa6gj+7m%DCA7dzi-f7lx`Cc@1dv9n{9IFF0dQC zH_kbc?`QbRsQEK6xcIbTL(wMwzbwa68uNa_7@y&jo^-R}d`~WI8JLe}jhC$4p!_=P zNUhCM(^-vaSviglJ`Itnq4O*C{*Ic}W}oj7)-QU->3sxaH|Nm~e5{FfBC48=9GTfG z@jwursjw+J@T;@=J2T)S-#eB(@FM7529VrSJ7$D(Y(I7>Os@gr9oxid3Z}FD&Hq-s zrk6QF@b-F$f!ErD7iKI?Z`he?+fQO$6ce#H0p#)~c|*d4xfm4JPKlVFWZhf()SEX!EZziV1KmwD+K%r6;-1_*`<~5#Gi{A?)XMN@&|IS@bj+w2&_{s zp2FqwBs9;9fSph6ixv9(;CVcg49n`U669|~ea_>i6nR4V9{Q8-f=)G)h>y10KTer^ zRR?a)mzTVPV4^CDd@0{%i@trkYZDq~%S&R(^m83qXgE4bf5m6GY(GX3OLw%~J*I$N zu7c(3Ny!m%MOtL6u2*&)c5@IZd|b=$H7lW0TOyg?pPgHAo1)!+o-7M`hRi!FkN(CR zeY~vYz_@2;pE-({WE^1#!i2T_^{*=QDjs?B;g7&-7mUP4S#-In_^NN0Y9}dev(Y#C zrWmqB&yT?z{KGgb#Qf~<*1;B+w;`WjiMDXSCl%S1rdGFZ8GA7Ht7y<32CVd^9Qly1GPunh9 zC_e}l%+3Efit~7(w&A50L(vns4tojGz%+@*N?g%oA%BA>{mZ;Tacy>s)V2)XE4Wq& z719oX%(ASlYrXJ3gPVzuDmboYvw@#tXI-KbL@Kx8V^*6^gyY2YUUrp2Wd%T<(=~U( zVP9eRN17?H;IAOl*~GRE_sm)59wN3fR=t}12C7B0t57@cttDb<8pY2w8V!c^gKIN- zXLYoScEA_U(nX4RDPLxi#qYlaIR>6COS2O%_Yr6=7PuHWq3q)Ed2*3X)Oo z?my^7F0Ffirgc1b44!p&M0mp@&}2UA3W(G>B?*NseO)8sqnP-5v3DgG&m^yQSz_TH z>ucq(1&fLvMNxUYcY#KT@d2kTniZKMOPX;Mo3Z=1Vp7&EQHSiJ5m5@W9D17y@B@=; z1Gw`9Z=UG-K)IYi`IqV}ja{2)xX9FZA*M!V-uu$B8Lp5Lt#nRxNB|6{f{uTipeKdQ zvOMfa6>Dmtzl+d;vJ9s+N(Ij9vwB=0?Ni7k4otUG+sEZi-laD%2TRO7Ua}c_$a^0e zU7js+xd$1YQ2sXr#b1*IM>JM<VsCPYs8|HaA~1E-iW5<4_R?qx*rl0MVd$~WEu$_ z=1CifFY`7wf6op59@JBhi47A(nY;!L2n9U5{ha#b-;p-eldITxmuVJLl;5STd_P`5 zzK~w&V&xkbV?cyNtuh#j;Sa(&I<7}{Flprl;3y|4F&;Z# z3o`4>T<<;)tIVpM#ROM~Xx1Cxby~hqvYj7ebN)nJ9=4z#=VH8s_?jz2LWC@_eO9U{ zAjwR-KxkANd2IL7wBU!y-iP+4l;3^lDp*Z(VvR*VGV0$+iZW)$+o&)z6J@D?q%uME zv>kkATatxFjKictSZ8Me)qaYQK37B4N}N|fm)1_H+^m9vos-3Gm(k6fH{G+*>>CZ2 zOE;!Md;`}qE0D_SVID)$Dly&7wcp<v4qNe?!Tsi23zc&N zg^na{n&Oz|P@s$VRACq>tf>{mulN;LwM?t^I>_)b8HO~Rxz^q}39G#rm#)cAX8gq4 zy1C*hqsJZXBu!g=I6+JY-xN$T*7Z@TvU&@F15MuyfP*{AQk^I_gZ=KeW>O}_q{+8p zXy&w>$FbfdR~GuLS((iy(^JzZ+rURE7mky8YuEjzri2t71A4dR*~JIn(D~R!U&fgi zB{^i*az#`dDN9{v zm)0=X*{Xrwx9Kt>67%!#1W}?D%C6<1j#>~33W$B#q#KJL2ZOW=BQ9tu<+FXBFUO40 zGNS-izw~vdWFb6Lj|<3?PU@$z90LT+Y*S1M#A&rSn#%?hO1V^))zGRDRlot=v=}f_ zmNH)=bc8m8{OgaDEw>R&p^v1kO$iR8JS^$hpyfVuP;OZ)5R}typoUGg(xYYC=vmYsij%9v7X%9~^6s124{(iJFhaT5us!&)O6MSh0I|7F z(5Y6IXkH4gBi_RCNg?}j_BgJII=U!Ften!%jMgho%g%J1$%V(7D6FvF8|ME#+iq;+ zR@r!Gyp?LM6#Lw=Ba3)$BrM{|5TbgO{?aEU4$*7Y^c#!Lk{@x|jwHzQ$7?-rSmw;dQRT?6ptz|JKzZPwJXm>-Sa8rdPqw# zy4BM>SyOc5XD>QO{&1i>u}n>!KBr5>S{S_)KBu(t#K}zTAG@OrE3OG#DL6&H`n$zq zS&nGG(}vKmw@6IkG z(BqUSp5>kUCr$7X@?Ap!7%n?q%BZahr14_Q&fpYBw;;4#u;D5S#BY9!UJ|@ZqR>*( zBj|`MBvr;&r(}ZNwYY;=oEuCNz>}6t;ig^@wO|0Lk&zzdRPCo&h;w>+DLLT5%pjWx z3+zGkhbQ0m+i*mSE3FU>-}nl{$Pc*%5u$|}y)IGn*gx6BQraK74AI#7=vDS|y)l2J z-=q$EfF2}j*lkS2TpdBrL9484y}!gBK0m$Tn~^O_ngB~u!I?^RDWsb%8dY#{7MqpK zNQ(bS$yvBXI)-H4 z_SQaDEekdP(7=*NW&?$emyCVAeBJz~=n~MCK?5ElBoL$$^qJPx6T@YAYi)b7n=+O@ zBq$s&8BUiIt};w~=TmjzlliHyJN_vaVFE)0BdP`t-ZID-Fn_Td*$CdTGE{!M^1=C! zwy`H}EY)tG!G5{pZHzuoqYHLZ`W)kOSSb@jVJj?(K25RTcWJ-0Xvfx7mo1uxW5-Je zr<r;BO5lBQnPOw~V;EG=lxt*5(kcI1Cz`7c|>)`=o31f`{Yi+Md3oeCM^%f-jsJoZi;k zUa(>N#NOkJ@KPnr2=cAa_vz65*I+JUPArz8Es2Q7tjqAuv#K$rmYPjy&VjU)~y_=Pe-5rAdvP6cwAaQn5K5H(n{Ddf~F&pP%v&ANhV28e!f> zlu999O;QUFlzxV!M*LR8W&_XZ$gN}vR{K=_-Io)|di4A0*Dk3+?4a4{Xx!?efn!U?GGuQp%o|A+p7iu?x$n*{)@AEllBVT`%P2X@yz)XTGOES7~>tvtTT}$Ol49M%IzgTnY zqJ<0Fk&jZ8EEa@PsWhO1FY6e@!P{9?^^@z7F`{H#S}Y5Z%SK9_{y*Fg=XWxef`fk) zSc$1&3#t*VBv0uzzl~|?-&pW5QNf$-ZD;JPB69F|7@B`9a^Zg2Jq5u$1J2ueojJhv z@q$RPw`yG;%{lj9qYkY;i}}61lI&KM4kDF~_a4p1m)?`cJJxWaTac*XQqCS1_yibX z@>DByZb{)hG-Wbzq*Y}KWF(TW;$C(B_=UF)oW&$ORHVf{OB)^4#M?Mc9zYl`?vMV-SZ% zIptig%PP6qpF_{WU&O?VB!nB8~8 z*_mbQ1x7-#W?r9E%To6C^x4lgVG&_gRr?q+(%NdXBrbnv@|(7Afc{0etzG_ry86&2 zX@bWkHK?pZL3Fb#MGZAJUf|r--XSK`j8>pr=%Hs+g1)@GpL2nNG{|QqnN%+a`s?w> zcF&MxAWG(U609M4FEXW#Dq~~AZ+0HaHqb9=fm#?b<m)mYF z&MiX0mCBLA!V+bv&q@wu9bI4ludmQtW#)=0wJN)jDh_7bskFT>8f6?&keODTxV?HTK#8Jec zNF?zAo)70&2S5E=6g_NSS;<=eaLlx1^s_ZtO8T9#`n1ra=5j#k;cLlIhE2IRQ=NZ! zZpQAoznp?q?#9)F{oJY(PyKf$I_yZ>dsG44u;a;IW@6iS%768>Qp&05r|2^A3OmR0 zH;^(%{I(TMi&H=ZTIlFB4at=ZtPX;QqevR;UJ;~#YI7Baj`t}GBR4RvaT^u-s$h|RkpeJ2tH4$2b9rxjF>pm<@^UN zaUk9cO{6`wBGEp<2u}DrLZopHV4vcx0?4+20C(^jZr;wp#Y}6Y0JP4X4!Y#r`Yy@u zzdDm?e6igGuh8r9?-TL&pT6pYL)iBZdOUhB)#`34L^%Sb9`?%N`vHfjI@qtKsm3EM zga%(_8@;0$qRhQr{mi{_wW{4!vx1CGb&_5B`CoPX)#ktq*bXy283bMHNYFPIT-uFU z{r!jB)G}mjTnPb+iLdh^2lS!y+Cml->`EEY#Dr=rrW6$a2?#As4n+cNnTp3sb__Nk z4T0aE_4DQQnVYK>-KxO!FaZ|qNfm5hj$*nFnQ&c#GY*Yeff82cNDc{J<&dutreXT8 z%ZtmNAy2idKOcSy%7ThbpnqJ;>N;cEx<7NWF|w57Y%XcFB>v}9N}DcE6VH3L+kXaz z)^SJaIrnuAC>vmP1e_SI;o%l_6OC{H&>QrJkOphQFO&!{;@F)9R^y_xmUa~}wB~lh z_CQh?=OsYdu)m^fm5T>bbf#C32$AibV0hFnnoy~U3j_N}QqE{~+dWV@|3T_})KNaU zcuwLE)?@MOp`+7wSSDhQ*Yw2a+E@*n)htU97S~puPyKItN$@JIaI(Vltn&+@+S_-; zKv0n8P`$_K2j4<7m~a-J7kyMaCfXsn8-*1EOhNlz->6DR{0k-AP*csU1cKh22Z2+b zzO2R_k>6wJ*HWrtVzJ=QtoeoNWI~g=;$lHmBXj@0ZoSD2)j-^F;&fQJ{z$B`jIv#s z)^CW+Hgf8+J*YD2^09Et&P2G1@R98V?0{>vpta?Ch3)hi`TC@|_Fn0~Ov^^tSg}TdW8f0|2#Hr{k zs6iu$YS}tNTpP;ndesowm5ySmcg>bLh}h;xggegm5BSMa(UCTpq;rGq*Be#e=dyBWVGnRAq{N-ce7-KHxuI zPX}z(+K8t|KgZlmy<`{mWozZ5!Jd%V!sTIR|KQVd0fW5;>G?gI!}|tt1Fl7q^5g|t zjuq~JU<-`}^y)|?MGHQ?B#aa9KuOI>%&R_J2tyV+y38&)>du%1no+fhcBS+nw)!pF z?M169<**h&lbF^u3RFc)3MDZmLM-`(+1T6ye!4R|3K2Frt|#s8VXO5)i;eb`N)&`t ziY(E9zs)F#XIiYo@G&wavdk?5ch7*%)hvQ69#w>B9iOP!%8CXDl@=Fkg%(Aw7H=Cb ztj1m4oFmg2%$HcoC1U6TSEgBkRzNh%GPA1?;7n&wW7*aUUnG!6n%#k&G*ii)(w-E^ zV;w_k$W2O6hwd@PG>;$D#L-YBTY!9^1oE(i$FeC3c>duX4`|O?MVth9Mj#_CgPTc( z%8Ui^aTJ=Ps@?o)*J9q;?Z>mZJNv&poUqz_WI9Lu^|rk<{a*+2k%v&v5ov>N3<&C7x(!(lrdT&C zEii4vy@MI!{GE`oY1LUzw^qBNiT|YrKv3p?8+M;ir zH@-ne1nD0HD&bSVSOOzyG>J1w1hmTw58DWU_bNv1~>CjDlQ+AKVbBKRH-wO62-qDi-S8IPd7yAfC4Nj;)!-h#NkT#PF^t-Xhqy^ zXU3wwzfZLMF^L+sVRz(QkTkZgL?=ZX;U})RF>v(Wh_u1+LnO}iusZA_3&>-EGQmXi zJlTWU+xlwRQ&XCbQjby$E};ZNa;OzdbS0Y*-__-WObXUL8QDnrO?c&Oo3(9SQ`ALkyF&){NNM`EnwE+V>x}7}y|pOXL@tL*hBuUZVtW*9K^6Oz|P}(|>1esY51Z`^@$Bn)T{&pMvS}|I8 zu5r!QAhtyw21OT4GD>>Fhq<4oE(Byz^O(`w4%j65A2C8_B1O_#Pni$cFdoA{iylE9pScIK#S6!T!s`$DL9CSyp*x}o3(!Or=5UGEDz`9`1ylKp*D@ zY@i=S2_F*%4=Q{r?_^qtXh37mWdb{UHzH;+_MS@EM5|KVdbRAs)JtpL%k==KM)mgPjg?p=DO&gF#N*#u?F~q zjfcfTga(9D@XtruxKdGwcC$u(!kH;MWA+}wBN0u*jlcW*G*`Mb6jdjopM^odai4x# zMHpy&WHJz)Z-`wt(g%sPR!fh3N(G!@xeLKze5JKwC++ErnB~!x9_wEa-%_<*Ak%X zG$XjRF`ZcE2glvCvG1kLAu`umXL*#CT&{n9-KVd>$TiT6LMn*|KuCfnPDuo1G%Fh{ z3D>dK%5_kBmu{JJy6mOEeGZ3hlHkB~r_M9xa{4!gl!U&K0o2K4&}xHGc=OxkWl z&d5oj*^r{brl-)-$e>ave8m9bgqXwZOH8eD+l@7d4=Y&oBBB%3xkP&-4RqVmT%k#^ znm86#jT^H{ z8U9LW+war*C(Zk(4=UYOrCeN(F`+{?Ito3Cl(fAH-ymuP z3(0er<^n+tLw;&t6Q8=d5o{Wm2Ukft_`GDwy|o%=c&*UQc`?Vd3~Cl@qp(azJ!u?% z5_Em~jRC|H_THn>afmWppqsqexVqVsuULk=V!%WTy|{dG0)i%e46+3iUlDe$NDDQ7 zvh%=s01E*qX(AJ4{WpEMUxOT0s1>WIA*&|;%!%D@+#gMPla3pkGk0MoDn10`i0_SZ zwUyjSa3g;{GDkg^lunw~iq7T z&jfaRRtkd%Ksx5rbH>?@r9a)j%g;Q$tpI^Eo3IJM&*$Fmo66txVH>7#O)d`wI_@{I z*3SwUhWfS!u!P%4a(r%r+x&$$zow2IJYPQ4eS2@jnDJGE5O-r>R=d(Gvebv0=E;7G zF?0XP0NshlY(rFKnH z#uZt(@sS}Gss6ViazQEy@&x7Hvb9!wnGpfg2YF$; zE&|E0vXRw%tzA3>seT&4v4Q1(Q*z4X@^5Oi8O&N{ka<&9W6oo69pgTcUJX9bOhqLZtur@I41>I{3vgabO+U zMv?JSktB`thP(Mz`ye1S+IRqx5<~T?uO=C&y!Oq}+?$~jKP&8DcwH)ojtgP0{=5FP zVT`pBHbEedKU*f;ct)D206Y2(+aVnb(Jy9oSo`~)=K$$89)ioN;TH6$oiZ|I_s^VC zCejV5d^%+!5WHSqzgXvyb7MJ>d(0}xKF>MAxx*DoX{(Clod&9A(1nk>0m&L2lI{ML zaZScoXt;WVW;KCsMJO&JabxJ)v~7W$VCK6NxkODOu*V4(&<|qR zF|CjuBh1TchK8Ex4%xXat0v2vraJ1Su;&!UTAlJ$!7Xj7D9>yAr?*>954DcA-B%_U zS;QvaaN;uggIAp|3U%m|1&#VoQLw5Wvz=v+oE}>tMCNJyxQ8o!QMpf>>$&?mswae1 zbxNq&wM!WY^8Xq-KSFQorafw2KxnR<0R%ajb2uLXd60`+Ecx>OSnSe%!UDH2k2@g9 zR6?=L{Z;a7wp4rL`66Cns?xH?Y#@bA3hyms{*PZddN-a^pq>KW3J!)c(K8}DYtiNu2MaB zO6*rVUsXL~`a5R)c&R)K*2GpQijL(Flk)9?n-d|RXZS13*y$u(`n4g1BvAFy_Y>7k z3tl3gl6$JqAKH(e8(?7~gUf5Yr^r$qC5MKbNLX!PN;4Sl3WwQwxcsni?a!0B_`Z#W z+6jIAsWhfgl!l^7S%_1Jwce}?b-DOt0pz`FwmE+K`g+BYzPb*S&RAiB#2$;gCi`iD z%-)wXAVe2KqApO}))aiPhZsjg);^b>t|EG%EpFso=XA4U2ffkVZXaotQPA3xk%w_r zP!$IskMdR(nt#}N(ZAUN*Ehdk>1(8%@yH1iF~1b~AnD#+20k7H&jqT(d$Qjie0C;bie{@7!TPDThMRu#^ zFXcx?N{_m^kR@uW`q3pvlJ14xL#1Y|`@*U_8J$aOU_T2xYQy~YE;q!Ol3V{qoh>AL zxlJDG-Ay6>nYD)be*EG&9Xa@qaHdpx#O_$eHFEG-Hd-3$AJ;1L#VO>^b|)MuObB%Hc<3s{lHhM=a)|4$Jegk z>oPn9sR~L|q6hm0zWye7?pykN3fpZ76*({#Vy8|>9vw^nu^8L%K{lY4cG-^1(fK5@ zP3N+7THXPoxop;Ng*$RP8Ih1>K<7!AG49rBjS2J6;Ng2Cf}woK&)V^F8@`AvRQD>$ z#(kw$8-%a778ob3e)90z=hwfC04s2&qS8f0N~S6q2px;mjP9+gGc6mZGBe)8h|cl| zoLCxU);REsNPcFrtV+qA1%iwcWpnn?j{~v6TsVE3T=(WQUN^d3z|N(nF7!8Ne($le zEX=t+BX?g+lDf##va7H^@>jXYfWB>h8FwFU&%F_z|6`#Lrs)=8tJ1MK(2d?wlr|%6 z9g#&Cgnf zyY-}8Qo-|H&c9TBjI1N(o@><>-3UOSi`dmGTUSDCIfzSnO4l(0*`_CcCGJ|=h~Q4# zST&^ESgq-tbFFOr)pdH+d4Nke6j5K`&uCpv`W}Oy`ycd6Ax`37Z*K0~nD~maVqTMp zrjq$<18WdK=&jd6jvl~3$9{kk_Hi1><5?iaT3;7^r$|;ClE>;7PsG*?_`;e0*~^Os z#+P;WY{{bAC}a)9z_BKy@LV$TY0wihY(Tw_de@aKC|kBla)b(JlCq$&{6;Zrt5-%i z9&H!YeRY9uIUbBnp?~+F-j!G99%>Ny~W4zzc@!Fkt)UqF5#$L7S(h9K1J+b5F-ZS>U?i(@0IlguFvhsHp22}r~;(c zz#Dc%dz~0LxI`Tv2l^KyDAYe86Qib3^?I9#wcUs;DIyNFAkECwD~t2`l)~+W1%`h| zLxRQjy^{8$R3}IoGuZ-$UANdmXv-NGs0Dn3jF}R*IoNuLH|vwpzdo8yvd#*-*A#s2 zOk*cCG!?|8!7I`(*Lq}V-8Hi;FwN$mE=wY)-73~Zn5;db zg3a5LK{HNo^Y#mDr)aGs&~iHT7lQTUKeB~$HT7EJN6%lo~fiw?*No1pe_Bn9YkY;wRNHt2tOSSwjMrxW7LPu_AD@QC%58G zL;UyyJA=AvC_y7iowPz<5E!YP(KeD{igx?S6j^i`eF%hwq)wmqG+yCOMw(vzym>8` z|Ee2zZcAX<7_&v1De4C%*`WgGQ}18R%ebGANoM&|}9mMFt@tk4X)rUlfq4x7@_$=sKSc2bsc$DUK zB8k38$LNbvyrO5O2&UUjblF~Oq~)5O6md*fV(~a|ub<11mhhy+_q`ad^O?yL{k3Aj zx((#<{c`l5B#FVx*YtteC*Aj1x1nD_O-|#yPa-<7l&jBY?IQAyIr4Wij zZTiZ=_I=>#KdXriS>CnOyYzf(23C-+sZb;fr_zes8}r#|zx>TuCH}XxezCTkX4rue zo5&s5qK^kyZCaD4u+=#6Yu96^f1?s3!?~v0*dZYoy?Tg}Ja`4}TN5JCTN*!H-UISq zY`V-pf{--cN83qeSa22cN&Pu_=bIlyXLtbpu@>L=3tPj~7!l&HG_>y9z2hKg7Ghp0 z;Z*NzUL_1*Uz@$-vp#a_AlS5h+!&0ZE_sI8^u`Mz4uL!%LBm^Htd2fG1krN>6+Msx zsQxL6L_kx(nf`TS*^<5cvs5oD6JOoGFJ~!%AIMv_AO>tq%0JfW@o}7Wi>xc!NhK(B zsnjLS<#lI<6gBlE;>B#DoKHF~cKpUjCKMIL%!-=;>{-$2?;ZN!;|>m8>HD z6#Jvz=8ybXe2s;m!S;2H7J^UZb9)ppcGWjyD*9yM4y7R#XbqSh-h&eBF);!+nHX-l zS8OG@(jnVi+LkuAE-ia4q?-bAoog*R&`5hGr%!jqv);CP1YhfhWEcIlHzN??aL(hU z1fYKnc|LeV8LA58G0Fy`IkJDVbAcD3%Ru(8{+qy3-BK*JZ(`uW7hb?D}&nxtyy zDiFP(u!wiRdrC!?+%!GNved54I6pZ(lkJEs8Nt0EFXIrj7}e0E%345W3OD1h;gz=v zP=srBY|(JJE0lH7$55&pLhbN1z&+oDoUxrtMbP;|qGt1$5h%2lax5Sad^gCsOK=CI zPQB~%>D|A%%i_g|j0(5nkNaD*=M%$A%Pg$so7BJeAIsnWfX$c@oLV-d zz4NeR8r4oTds(tlx6*C9a#psqb%ICdtYP4Pxro7Fgfdl8xVKfnG{AbsLN%@SMy#Ye zoAP>O`3rLO6qBnpH5oODY7i<4WDTaGs(<>P*|Z;_QZ&2&>u-Lc_SvSLuf5M1cWP=d z{@^mMq3vr}%l}V@DEyN;Kdsbej_KFYY-RIFNcbtxmE_A}stdyeq+EY^O9o|WB;&bcU&OcSW{{pH;|cc1?_-VMzjUgEQ2p9>yc zK;5y0ghuF}J*WW^g^M)5>F05#ViZb;Q>iPr&DZ$9KNS6Tg$|l=)vvf6q)~B(&p|0l z$fB$8!qeAuvHXeyP*?K!`r4UNk?a%`(-FKnmS^3O>C*9OT~+ zq6+x-o}#Fm4hhyB*EZ>COPB%?%l%Wr zAv2T2Hgb45EUJ8LRjz1xQCM$;FQLwkaDtIMbiX`uCPOCBt(6o(yJ4!0OM3K9YcM@% z`*GxWaVM=^= zI3@z~x(IstyMXQ_x`!vI9TcT|DzE0 zs$-Yx)GYBpi|ISvNnSR79CO?FCAqOknhFSjR*!`SeYLTqPfo)8rv+F7x9r3>*7^H$0H!Y=&woRXzR)eX-8GPr;r2?l9#k z<2i1}P7%Yc9E6EW*K3ncmT<=(ZpG^!h^~eBx+MUCIN^I<#)8OAYN!={-ttD$ z`~HWwxXTSh1-Y04oE%6maIRxc1A!S=6ON}E^U5oEc_^{ zuoZF{0X;SN{?O?x8LzKo8ee7B46BWZ5S+Hj;O3>F>s(Whon4&RiM&=tOT<=x%Px;Z zHgVeoo3d%IqY3NNEe`7_hxSPXQTSTj*YJNpo*$$nmK65#^gq4#JU|>y1LeSv@eUtv zc7q~fcHk&@_JqEz8{7)Wb1O-(Eda;)etprT(%ayEt7}@u+qfK1zOjD^GgE2MXlZ5k zNEnlnfpGp?*#=$@=PIdxt3m^qj-CRFYS1IDw-|p$r7b+`8|9$?

XNh z0CBK_1zNr?b^N((hX@?wy7<<=Ss|=s!v3E_E;e<8QoY?!_~U;nhkw7Q|Jz8ypvp$W zxeGHsQ2}{WqOprqChEdrooZ@qMVTN`AO!8N9DmXRAnAV1555?sX}cIVW{tgG7Kvj* z_n`U5k}j$qn4ur=rFuI-Dk>2*D;4Kz#py-fyCgH04QXF#zX?G3;CHeXcj0fbLC^o3 zZ>`Q96m}WO0*~VI8Z-{PH)~=Y?F9%1XptU*`K)M<jP@qV$C+C5+`yx1o>ftk>FIJ7_Oq*{688RA81SAIyXER-}1+WT^eF{hJMc zR68raP`bs?XxGJBh|^p4fx&HAtT#b?R`Q8llvk`Q&Z1eUe0-ZPVMHRq2fd6U*o{5^ zzR2LTul>h+VPOD^W`Fp>nfO{S%J#Jz5nN@y72^;HiYl?;uzr7Xv9kL66y5}x@nqz5 zLouezC+l2s{YR8-8wn3^+73lT&XUr@K4DbkX}WC#LCxK_HiC-hw^I*J6HcGM&ZUb) zsIk61;Wjj6SDFfr*v(ZOj;A4|C@$C}!X(k7>GyCo+B1QfcO|K%$h*7KyNuH{QYCpx z^_lf`+OM|h%NbU%0ob}B??$ace+8aBO`k-Jhi`}HJc?T+pHh44B>Knh0YP6=xyEr_ z(Geihiwsu1Sb=^p6wEXcMEluX_1kM4S#~Xg55xnqft|k8+M^K(1dQ|D;gkn5{LlHk2`IO5Y3VlE9P`?3Q*$|2Px>K5{v}m3Wq2{S)erRg(%5 z&&afkJI&ARHO->#+tVB)5ym>k-f#REbszu5a1`IQ`~&AggqydfMc2gU#DX5fx1`BJ z{4ao-U`~;ihufL=>avOvIl93uf)V14+Z&MYl^(D^>0{}B>xKjwSFX8X%{2V9TwGbA z`b8I=SbI@}fdc`vviwBPeus%O+yY*=z^;0dg!0H~@xZ>!=$dvJ7rEPB~k&(Cb)#An0a&HkgB5 z=M59f2ZA^+>}bBWanLkb))B@C54pwmlivm!2!GriE>TafF{IP4by4TkuM>Y`l~(hh z7rT-Fi+VphurAdSD`=I@WnEh@!PJJQGWskPPdt99IV~`3>@bDWT!WTUad*=qUG%ba zXc!3clN`PM_2ECIj4!ms)L-(6_1~6E(*1)O>Olfdi@teQe^m^4dtJrRYD890xoD@5 z-?xmm6UbEJ>&s+(he~2UJmAq6!XG=#SPt1#y^=Y1YUNRIVV6 zA|Sq6Oo?ZVhtS~(sbPvOyGLM|=>OHi8FetK8V`DFc_>awOCc33-8aTb~F^S&^h7Xm#CxT zX0zRyX6nQ{-VsV?0cwvvj|S36*f>OeoX)XhNmRi&x>9q)&c<;~Ls2TAN+Zv`8{XCB zw}$r8Rn?N>ed*ZLs2DGep%H>ZO@te0Y57={`Av7tyn!r0R)=+7f`2PQQFKO?C56Y< zL?UVuT$V+#UA+ezXpe?qLX_$h;7}VWm{R1`vM@7tYrJ7cA$0!U0aOn2o~UVhv=%XM zkHU%@1P1PmY4y8DE+KErD*pQ*oHhO@0e6noIo?4v-YfNxL(T>Q$p|OC zK{Dp*MprsaVE{%!2KZlQ9wEvT3loH@?kYgub|WQjw`XYgGGK09z9s#VQ7P~&+I_XEF!H;&!0E*`KMz1vOBOe0ftDFBLwsm!N?ZR8qUXhby&;UR zC=5v$orGbwXJnXy17(ucGh7j}v-|i`yBD>--n{%NlL{PKZ8>JeiFksIcX!Pm<>z(i z*Tb~9&iJF{v7Zmrk>m_qDB}!A5u@t8A|iQu?pPteniP=H0+M?`t)A6oKwo?2-7pnp zuW_|&q^V0?DV|bkXDr5UH0M7nP2*oEZ5a|i;qt2er8)6xkZ3827lgzZY54WVPv|^d za)roBC`-#wux&A^`$z#U-T9VWCrZ+-9;TM#Ss2D1TA%70y*Jq@Vf^RtbG>XE8||q7 z|0p`ks5ZJa3gZn67B0adf#4K(DDF^Pi)(Oq8r1K3T87K}NySRlMW>kMKMme1R;}L?E-+iNj zX2hv%k|(Wp$YJVRqI7WHgTpqGWEFTkUyMxNPnlv@4tH^{HUoHCKL`B?5KAKCPq}u0 ztE0TIaobZf1StPoVh2){x3U1yWk2PGIg;JDWm@9^o?Ryy_;cwAN+PrJeIrY?c%Y@Sr8evgB{ z)^TH8jT4<+nZsJXPKW_vMO!_DzS}R6p{&r5+|QIq8D0m2+gMN>@jY!h#DM}2%^?QL z7@4Z79fm404Xy$7xu0^%-sfxfucx2^luK}xSJQ8{5}~}6ytP@~jy>z@!BgU4r{;SLJyCa zVsI1fPz3?HvM_~eWbwtNO8%A7<$Vic%}6=|JM^mZm(V{Y(r^@GLrZ zMp?T+Vxd1|dPBkS@8k{ZB3F@x&D$!uo(TJ7+NpzZ!LXu2aiQan`a{GQI zY=EM*Z4V`>e7COxH}sF>FqtCGCEAZ0GZhaR5vmN^UT5N@yY>XkJV6fvSP0aZW%=uRLYSyN$UPMT9+%3DOfziQ}qZte)MlhQOB|>Jw}(O zNc`;p@D6cgf4H;g_{a5%_V*o#+tRDk-h!45W~RE8Z~Q_g-!B}pDbjdF%#s9w(QX9S z4r&r9qfzz<3%0PlzFyejv3V=DOOzEPdh%y(s{OpYdLsx5>bbXh`p)i*Fl0=5h5?N z?YM6r*O^~{h_umif#DoP8+Xlau#@|%Xv&G36rSe|7HtyKP!x+;wkVNEqW&CYA`XZx zwX_LfH2I54l&;A|B^sFW)Q&Vsf(rB6jMz7n6jc?;C{`VQgrODyiN%1nxq~-ZOp&$D ztBFRXY;nuNh?FC+41>+TpbfQjO4*r5a{tDMDHp>9qYMONoqH zGob{Tm`q?S%M^>F08K0eD4@{*7#)RRd?l^sJ|`W9#>mjd!goNom?o*Q4koGd(vIvV z;(R!|&ZG_rI5CX>&?3!nR>{H4p`Rq!<&A8Zl1Lk=&&lLD8feHOlhPz4*h&3z2qG!g zU&DB?yVo$U7dfJYa)eh#jh)Np)Bb zd2N#=c1*mV?`Ho@kWs|zIGOONe1@;NxE!nd`qMw~%dF3ksTAz$z1tg;a%R0P_a>H_Cf)sQ3pre_*>*a=*I*(Q zMv;we1nTUhMGV6h{6v4_gkt6-4Fn3_ya-NqXP0?}wj>36xcpnjpB=(aA%Q>I(lUga zRdV(4Jn{MdX1Sr(Qzm=#mQ}s)T@{IqL|Sx9;D8qc^#WULD|N>D-aC(ftKw&H4hY-Z z4jL(LjuNZ7`JHs&cPQQE8me(qcGu)%tzoIWb=;AaZaXZ+IweO{-f?mVG+I)z(0Mfa zi>vFhlh||imt$H__V)BeK@snjo`E)V+mZqI#<68rl$C9N@_J>{>d5EiomTJ7U2P3K zTr?B{iei)oMpK0C{Bg8qj#V@2FGtka&Ca9Y?0&M zD}ZUm^ILD0*$4aFICd3AwN1S5v!LD=zdegTzC+pWA|MCTRnH7u<#F5~+Td7oKz(Fl z9FU>h0)b8}bXE(8C5G%U$gKCj9|=tGyK2jczXQWfl&dC`H;c=5(Bj;3z*i)VOOC5m zuv3>=8*q5_X@e8riUGNoVLSHjlRDK?J?<0gIx%y6P$uRt<~v{zZp;JdnpOOSD^f1} zmBA8+1_jeB440`?+!UFS1c=1W$8h->gSN}Fk|&Ct8JAE#8nJR9G@@}x4vpJ+U7dj? z5ynsuCXbtj$N}nyKgUV>w7^0na_Yq)%t;=qY6COuVfgVZ34jaP>)ZXenAoF=bgxyx zBnQ$$aptEgf1IMcoIgjV`R@A;X>C=`F%Z|VRZzBQl)jfJG% zAQHTv-ycT<;~hz|z|BW31dFu z4F8*>uhy?-NGd!&k#<=>WEcUCZUXva9Z*&ZniP$0oXcxE!OY6~tk)M+J$7!I={>g` z4_b%IyIx&ejfXpc%*0Ixnl>1>6H}Z_od=k?S*DZ&*^CUoAy&=@FV;Yv2HmPimZ#2{ z{?miC&YyPf-**DK>jfBbw8^93#(^xRj`7%d?Vs*x3Ebwwq;j=j=J80)_o>aA3~|m# z^<*Yal)%tPWMu&S0EXAVu|%g96dw1lbgMlUXScv%tC5F~9NA1wyb!i$Uy!E;GLE+f z41PKx?p!#rLE;2Vu|&a1V|XV7{*NC!Jc?sFtliy)-%|WMPh(Z1uu9HVgJuZ7di&@7 zJA0yWD4~i~gKGvTXJGh0D5N@R6{?9DHK9eJDkg{!{UHZBta$kDd>1}SNRX8H(~$V} z3&tJxsm}GNyZgQ)xhY$yZYmU7cMO z3pF*YEqg~FGwzs%CSLP9Dd+f>Ir+ANLy;p28dKG(6*+(7XN77;C>TNkxZwKNWHT8Bk23SX>I4;ywxIRU6@L? zBz(wa?gO!i$8sTZ$N}-(56g;ZSPpESg#v1vd ztn6zr3Zr81F;=h0IDes=q0-tNmO&{kDhx3P4T`@vhS-z2%G}i0bkRW32pXbk>3^H+ zz5Nn`uR^@BTi=GjkO+&xNkdJ!;*y)XBh|XnUy_Z=g>yLUh_DO|?0WQ~u z=rWOjyo@cw)aRw8t)oJ^+O0Q7|8NHR#A)5k7SE>a_+lEwM!h7Jh^rN8bLYV20MXPl zFr;J7@(wPGneCvp_;}_8S>bgnpDKstZ+d>w@CEe;Z4B{l4L95+;nAt<}Zg0obhdhNdwNkmP}R1M*)vL!&6&Y1N7Z@wepR7 zF+LaHSnun@T1EMcvzQZa<7Rg}y$r#siK+$Tgk@7t+@&_9a?_d1wLNtzH?uGT9YGz( z8%oOVp3C#Fva6-79d3H%!#9Rj`5rngf=1UDb~=ryD^toj9e3qa=Xm@rH@H9vbr@YV z<=v@K35I^~r_+mPSq-9xYauV_9UX~}VN(q3vqMkNWmB(m9WO5EL~W43ctr99p~zN5 zxs9@%lc5X;A!%zwL9zEYYOuVn=iZx(hP=*98j9ytI>6Ew-9-$16LI@8wceeXKTpN+ zh}JzRY?cHkxQ4Bat!4TpUSgez zpjS;;uv|dcTr1M~Bt@`y2TtG4pTp+wzoqfy+%y>I8brUAz<0+DV(TKLzzyp4Rk__E z-3Ajy1yQAAXrle4qLz2_zz@7nlt;A{5-6GgkF-4`tlVs#$(=nZGfZ{x0|Zt$20;z+_Hxf^G0- z8$Zs?n|<~MBP2sq6a8zvvQ%Y9 z!aV1)g0n6kMepj7<(zn`fr0F`jFjEad(<#vXokTg?8jM+AM)O$(sy_aYDcKQ4Be{%0!U9o=y6#B6QxDXVDvl!5IChIgv#ngMhYpC$WgDRm&!0pP&FINoBqUg|$DWf&mFghC zT3~RW3=*83mKyKHNk*6eG=Rbr78hH#AaJ=yO?`TOQembkT|wVco24RD^(KBsvu-R5 zU~J~{)7UqF1f2$CO;LTPF-`|(h>|A?nj9FyU)6W;af0yF1Fe=lMx>Y8r}x%C;7jYDW7!<1pMSIi-VC*r!2eD@&Bx& zRy~wk@9jo(vL)$iYf(|m0ITQRIu%L6=$}R#D=rs46Gihf01SetTxHmNT3M6 zl!6iUBCeYPq)^VT%T+L1pm`_=m4G^h3`mnSJUT8YNQ-PKWXLw>G3KX!2qViS;9yU! z!8PN@|CX4X*+kSYT4R%*tZyR;&yEPr>O#7{#UT?fBRbyr9e zqhf(bj%4%CjoFFgQhbv^#_w0@;yIEj7l?VFMpg)rWSR>6+aeBnI2}qNvl7Nd;LygK z$*rH4-i|qu8?s%`2NIElX<}@QoO9FgQVYN{)^SN?lA4_?DR{a(%MG_2b#&^wxHW@VIp<^(~F0{ImIVvT?!N$gc(^Fhp+4{E}6}WwsgD99ywaR`c15$-4Ymb9^-&JLo_qQLgHcv zfgB}q#rIG@Yr4biR3wDR$-kFhMwat?q@eC_4AMwtU+EK8wxKw*dCrBFE_a1k;FUxd zVIGA*d-;*k3oe3q8@5yt*9^MFp=3IkOBymP9IW7p6d$(nir+K%T31TcjY>+Dt%?*; zzN>iL&@xA~0oFC75NUK}g#oD~G)+zv93}qD%ZA`ylUdl4YSYoNNQVT@c+T%z4Q&mt zzBSwGPWuHqWm|ktn=~%*R7M&rTM}o6M8`76O5!*~dwYBI4uU$sUAqEHJOE5wY#IHd z3=xBO@dzL8jZagHup$Z72+z>Z)(@t_j-C90e&)&2N$5whUxm~!ze6_6P*?oy7o-3X5 z2t7nL9A!IX_Gjn99)0?24MA)OCh)EGAgZlQa|=I?wIw8?0rWhhpgYwfBI)iVg~y54 zGlaZ=DO)BXCs!Jx=f2QHf&5=I6FJhQf0rzTz_jN_7OX6G z!_Nfa-8Pm9i4z0i;Gxp@T-0;r`O2K8a`QNNqB(MVji*Dm!kPSq-=?p!37xgSX>37a8=w;rh;rT{~V_Cx7v%Zj-} zH@{G`<6Upv=%pGcq!}YrO_!R}0ogYF`!Lew-$ez#5zi9|y_sh9X|Mya*dU!5zLId} z-aM52)%iS2(gh5$TT5}KT{!3cRdN+Gqkvk2Bcs13Y2%N`cEtB2fm=UV{R+#Qm&fO+ z{c2!7xPP6(o(UP;j|Pj9>-a9Blhw(Rg(hjt89`gPrtU;WiEr0$xI%-x&oyz%4~K=* z6rV_y^TLn+{t89}^(fczV5*P|t`s>AzKlN0aSR--A{RK)((V8C-yI^Xs>B*7Xo>LN zo zzsSvr7JqOO?q*-+oIo*JJXyQXLoJYSl5UIQVo){J8m6R%lPzVWk-&sWcA4(|E-I1` ziFnsuzcz@%8<=@|dpZ~%1(^^f_{xiH*tdmk;eg=7!H&;x$=rgyf#{YP5B z!S}F|OOilwz@)KyuwfP&CeHFTZ93w~JnYFth6eP>AJd^QKq`!OP(yKUB8w1@k!}M02-3S5omseVPTHJ?ehn+t8bpGegKxyl&>v7Zu;Ipqa7~l^)p0%m zGFE01@N-6E8WhSljd4qZB8Mkt0UUwDF|h!~1qSMRYDGjhFrY|v1wOwW1Tz!Rpr9kT zv?f(SqG1yzMRFlhScnFQQSqusy0V1b-gwHP?1gK1ObK1INa%1QHxe>6iM7iYsB|o_}TMc#V-j(nofte2@=7`Lzx6%J)0^|V*6vT(3 zL&SD}^0^o21725z<}X%3VN9N$)K^ose`RLi>rWB;mP`!M=!m?{gtW!7hO)U{TIOIy zYw8xG1JQ(o9;^L8ZS}3e9sZhE?(r`_qmCMLxzM;$+^17b6LT=MEe2{*{0R)H!-T!+3=<%$?&4YQde_iF3uDGHwu9*@QO1f!7R{sCcFvbN5SZ40D_yhnb%*>8Jm#a^=K1PABat z;Wmpnr|N>TbWBdCjcVM)^oDTm#qN&BiNUwF(GlC|lIrwjo7R(E-FBhbXG3o>pqKX~ z*E%I7A^Y9ObtS84dwkb+qngJeoh%6{nAvg^=rGU*6FzLb$j^go+W8q<`^PXwe;gPl zyp8f9JiIKEUnR!hjkjag_2@|;EC548G5v)F{r@GF5TMh0ow(92yZX~)dG%>)V~{-dOXikFuK?D565$mp zgq4dJ+su?rb#sD(kGf!1aZD z5gCgJszu6P-p=#Umjj-s-~U9VmnjLmgd9g~Wi;P)j7 zAG_nAwU=06Qi;JO0r8SsCo$2HZ@0-S+8WJL!9Vsf$%317Q?i-KN&EZ+9~tL=+}&nF zUf&%B+!))sRzLn6Z3J;ckmUm}!|6-@L^(DrZhaBlvVj2xt37)x;1Ny3^$b`+_-J$v zrHfBAJ1D-_3gVxUVesNYUMc)sFR5{c<$o_i>p!sk`^e1&dJ>G(Ql{2We#RcUZB?wG zM#W3b(y-8URR?T4FZ8!*TpyKp^mzs}fInkDzDJ#JH_i`*RQ7ioG8~OO+s*d>ICATH z`Bj4#JCqpNQg;NlVzNYqR^^$IL`a>3A*tzW$1ki&oTp%B7&nx9j^5JXyTSEh_4m?j z?b=UZX0(pLdrm(L3I4Bga1{N&5fQqM(@(57COw2*d&Ef6g6zE9x$++LDNc5{K(9ym zHiCrNVQBOgevxOEYoK$BJEu|c*XPouZLAnu!$Ay#>3R1z>+cU&B~wH@&Nimh*%jRO}Czbcv6;o?2Z}j!jSoa3E z61mD>m22{v&ECaHMSngT3Oun1XV-oTCCVCxl1`10dA0GjxjTOGSSYeGPW!^ub9vm`r0Kc5deONY+_g#4j5Q zw_~s_IwnEutF06JoQIw!$P!pLIoLFX9ZtgBP9n5|>@r5;Zw6s;{iVo$ z^LfE?k{4vj7T}=r-*iwBY;c2SE60;fg+uCJ`G#_zU;_TaekUbD!0G2^9~~#=$rMxC z%*)~iiA(NE54>EAU%5T+%X4d047Jz22yN(_5bkGns=(d(bQQ?w&y7_T6sToRBuPkj$ zi@cg%#&_5Ev3bqE?$BU2K<&dL+_ekjk|g*xoZ6VVzTj`yC7&(y)8&&1uF1^;f(@&#gB%ZN;{g zybJB69_}$}I4PvJ-HhKXtN_SDYp@JQ^P||qU7YPEE85%xnLUI1ETjvfS& zKsN6`J@@+HSSd~S+LexQ8;P&+`n55gZ#~Ew<3;h;WMkg|Sd{%Yom0E$5+=LUTzX%@ zn{VQX$?#SE_OZG3`9^9?e9Pj_7tUIETds^;B2T-028?y^h=%UwFA$Oz5A1Xuq7}Yx$8&~=cp%Q&P-Yem_kG(sL7Z3qALd;oP z&EciZrTH#r6mI21OcUN0FnlDH$EZZtqL_-Qm#F9F89k{>`nqEXykJ7*{adapTpNZ^ zax{0}#oD=ZnR8JWYiY@rc4hNaS`VcPlI#pe_AKh*o!kyOnR*$~N6wO^p-Ako+*z{O zWotNY-`+n+sc9%4cso{n_KyqC`fL|=c;Ki#cx030#<1I+t-#I#8x`zQmeH{{*=-y7 z8g}6=<2@uhGx>$f(M!ObOg#NUnM`y?fUl_~x1{i_R>;%0*q0CN>a|=D!QS{p;rw35 zax>KSTGHa&{gFh8TomFUGb!@vhk~O~Cj&91I zsIVQIC~`dt$CV=En}OAM)X&txP1!oSQ9rDHKex$*zmS29M`*1!rN>gz=#v(DqcqIh z${u~j6SEVfXj}~TeQ>Uug=U}<%beszNOatZ2CP41Sc7w6?H~<7PYHi-S+@t8%!{df zo<_qu_cW)kUl-G}gOgIZif^BSf97CqpsWBaN)T2tMaq4|xTYh(&;eOUV$re}`@Eqb z0*602axVom24Bxj8+n)(zVEYJzb4hPRJuSgAvLnMP9=YRUkmx<5NfTbgb8oFW&7ul zU@Ua(C{GWw`2#qcfKS3WaXie#E85@&c5LL>n{&5`MoCH@mD}G2jBsh8ad6OuO)ZMB zPcWVx-bzCSf8GK8pvBFRf{R@-1hsCB;EEq(6M+AMoGFs2zZ0nb620UU@33rm`?o!A zrIbh3DquVz`uLf+OW#RqW*&K&bP@GDDZ=|}2M9(0C~Bt6Y_4f-yO023`_ne(8T;($6!1TsoVa9f zUW!(t?#lKJTf{cP5{hsygUyoNI$1CnvId<%23Tik3)GmbW@6xmNIDdDqH*-Yq)Z~< z@=}AKLtNxJZ}9p28*j+Bhfp2>JSWshd{UlLE1c!Pbx6fdHMS1AuHcf(^;v<;A@k6d ze>w;)3S8s*>wqVnM<#OaGqA>we>@YJ7;Rp_bmNH2wff*@Ib2CSv{W;pXIGgOZ`ezl zbODP+$K+S~4d;i!)Nk}>wjX;-o^L#)vdeeC{ ze0-UuPMh;V5tEO}I(fAUp57c-s?Nho!7yk)8DcV{I&H?qF}}&Dk|s-9%LQLeBlTHS z*Jq9euM0By{9Le{HyCR$c)cf{Ryt22N3B9XGwOn;GrjmZ=@@pPfT9{Du97 zjJf(G?>^C=JK;{2Yj?utQG#IV3d*$h94ajlDkl_b5UajQ4kX1&HSReyzOn+ z;pUt@j4>}6)D(m067AV5%;4pz%_wT@h* zV25{Lu~fpg{LmdD+KDcprx7Mklnn?RJ0;k_^UV*L?n z4|1H!Ys)1mr{kvaGAvs(*~qoZ3{*qlsHWAhy}A|` z9gNI2+kucsQE5w_y=`+0T0b}$a_amk`8<1Q5sMmi;9Zu5ixHycI_wdmur@tMjie=>G>5A3hr zp}D4x^N}AQJUso4J_Qr>D||+4ZVOoEaXUR)kVRoLUMO^GM|~2|uw^!=CNqMv&efs- zhEV%}01G(WJi6v$+L`mm6J!#)^Xc5EIp4-ZZfsmX+eBZH#wl#JnyTE+#&N+%apHLY zXUus}q_F~U^sRDzcdh7x8k?tK4BClVk?`*ed8H3gz0}~&fC1BAq6seJuirgw3*zad zzSymg>%$YBN~oKvoiW+zmE;pd=K`un)bXH6in~i~PhQ^-w)qMMzPK&wEX=ldhd>Fr z{omMa;bTYpU0&2ZTt_JuKHUg}`0|eF(usIv+Sy z!Stx4DThx%tGU&DI1rp}hiV2eaRsP9X+yK2Qp`+@2uHF%G7{Z*`zwupAkG`N@!iyF z$=;EYxqObK1e>qhyR!igtb(4W3yb%ym%260zCO&MK3?B(aS~{9*d5^;i|U_m%SH|z!0bV1%9P>dUw$FyzVY--T)$?MA1+wq^tC#* zq$Y73+*@7 zyTh;=XVjs=lU18H$wJI`#0Ld6ztPk!-Y@lecVh#Bi%P2BJ~bOVNdy}0FlS~H7r!*H ze!6{aqq68>v7%BomN~dUF+Mk|OeMbNFMF7{JG#S(0l>sT#aszBfv;ahDTP)G=$+;^ zEP#OW`@XhssHkD8_QTS}4|bt+`yk^bDp!;7fkChu6IGb0zi3#QpmO~ATl=?={#xJO zf%C}so|xa80VJ~PbYFN)MLH+4n?Fs)9ue?r^fr%lulVZzXZwfh=VP=!Zs@!b{@ir^kybSh-J1d%$wibf+d@JTcThjQ+7;%NIz;L)zv<+tD zdE@{Inz%g}!V<25BL_x7$!5at?QZjD0&dmTjmZOrLc z+z)b$Ez@u&CW>wSV^$aGhwVak#wG`Uk7c{oN=+bqT=gnwzv zYYNv456?f$9)=#YdB<@QxuMq7E=VgT3(&dGKBi72Z_F*XWz!t|*1#t)uW`%DVEL6u zHlyw{?dSG2BE2qiePU`_eNM=zncc(TplW#)m4)V{*szRJPPJ@8^#aDM7%l5rPOiz? zJ<{gk^s8CLF=Cp3z<>F=NrIm-DlrW1qKA;hK2hg?bXFzrhQ8NGwc(h5fd<6h`hE0t z(T84e-K4ZS2sti{zUkoYrW207%>V9|4tGxxJb9?dri( zjM)y@U>;23r%2Qg(sUx*I z0v>XNE`)TsH*xH@yj^8MUYaOM_Eqe-mu@0Vh4Yggoy`nGu)?jZ-PO#c6NF~k2EvBU ziz=AKHhFjMHet1T)SNg;Be;bIG=pA~56YiOaGd%^+KzcTiN=SQNUA%8bS+2p5W_g$B zf}2q02F>M(Ee^)#DL+k5doMOMhW*)OtOiV_w(UJNV5tD-sf@`1UNGD~qjZmPSm`Wx zlEWT;wi||8r#_$!(G$ulW01D!V#H$r19u3?+#uLAT>;gl7L#z_^2K_wF6oe*Eiz)_ z$aZu#tkNdf%Erl=n_HiaoJHH}ffHVd393Yl0GJK35kf`*fu8I^o($qTEvQuy}O3kJjP`}Y7N205FTwq zr*bS_q6%il6w1SlDYmMt09a8^4>KUEaR$S{1j^JY{d?YNgOROX-y$u-OK=J%R09W4 zQp^e@19K2Yi93G+?72vh-6y%nMbbB#f#PN4{5Tvax{3Y$15gw^Md}>H;J88=LzPd6 zyj(a-Iy+L`g#_G~!Wg)!ZBeCo34H`~WMF2+hV4RdO{kfsE%v}mUe|w^yMGemwIX4o z;aU=?cqrE4uD9(=wscqn0x!Z=IY@tA?mKpj$GN3UEs9tD#%}gnW)`sc?q32z`}wah zRrZe&@bGXn3K8*Ri9cNMH`>|}uyraO;A~)hf@w-Gw$WEJ<0K(FsR*F^3FnnjVQ zqf6KD7c+^)?U%3h^%M&kw0B86v@IoH4XyJTq53?-$0;}=xC227p=c$wQaU%f@^H3e zK+2>Qt6X$5wey6um$Go_SsUg_3Yv>kDvhdPn6kYL@3M0zzgX1tG~sk-K%Vd2XHsSB ze+xY{a|+K6mhP$EBX7pCYeQ(G8q6k(a?*RK{y9!7ZN$T@|CaP(pmSiPUXrO_^|x$i zjQv!4D4dA=0|O%@nkl`aOcJv;ztYLTVTDT`#liwIy`DaWzOubg69ePCy~s#oNga(b z2#i%Z&_aXYR&eNonb~cIlYtm$!K^?i8nqg*MU|Kc2(;x?8f5ta{BI9E5mK@YqPp3$J`E%wHH!H%Q0@_=!!i>*5bfP4KZ2* zOp_~aMr1%ohlMTy(!I>}w_tD(2FGJ0Z-aWVD;5hv2(FG!d(!;@cH_3&65;sb{aBFNE7upnVjj|YLq3#*6P zU4{q5J+~sXu@t_P;L#$W#EN-X-v7Sg2s1etjG#bP&Hp=$-o22lW`J$bekq$8D=R1F zyri5koh%k>KpOuGx?R<|U6-xsu|=072V`wx0>ErMAd$(Hv0*d_1<`o&k_dppUjm4y zPI)L&G7?{w>a*(J!OTq2`r*xVTyQfLq+@TGor8y6R)l-Y_kAsCXWgy7dPP^|sGpHF zt{$jGWzX|px%p6QhgGE0y@g_*A6&7PnS^IM@NRL4yo>@lo4m_{sk55WsS{(;fmPHp zuyeSpNi#!mM1>pNg=KwqjZ5f$h&!(IMd}>W?7o=@7SVHrbi1SP!EvO`RmIf46G5q8Z#tee0YpJQB zNPIq7YV^*Knd7W9@$bVohI!J3gnioh-s0_NmWahlF@RhuCTXROVxXZw1LfhRW6~Ya zu&t2Kk=uY)ti6FDRYf#Xri3(j(hPFd@(ufW6CF20BmlO0jL%pRU&1pE1H9j0${}4U zvy7cvd(Xa@H0c_Fj;&-j>iQ``)jxP-tq!rtb@Ue4z0)GG0VP1DUkgZm7Ou#ee!ouP zX#Kvph1PN9{Z|)Lt=+~X8h|vD5xgISxT>G;SYE~77C*rFi-EITEWh-n0tRX7m??l!+DM~i#X(!P%rko_K@B>X8w+gR+b_Vz*iBMd zpEL25&PXE7UuTMagfoHEyP-ifT@y@7T;J#XBpy*^Cx<+6O=S6smumkB;ZM4l&SO=g zMxWI4L9>&P&rrQ?&a%KK5z|HrKm~hr83TwGb&lcg)ucezx}LrX)x%kZV~eSjvFi-? zI?Tu@x)Nn;_<7J7pb4`b(-AvDItwx!`cwgiWYYEwG>n~h;+aUfr%Q=1 z?2LM9W1=GtsCzDLvy=ao^voBla=7}}#n1Tac%Ijl+Bv;~;l7S6dKi=AU+>(jIK7t@ zI95B3{zCEmWBMCgup_9#udKw(qcvbIVaRslNo(@A)>1YYf(Ik!@$wk5+?k%@WBcR8 zJWYBsaAx?&i>*E1&a03!5+0wcEMcX(TX#VEND56|MVaKlV`(em-STL*OqeE!X&TAG zZqVUGYXBAf{Q~iGdA0w2w3%m5rMJHC8xlq5VniN#^p=cA8v??V8;Oh!28o9N%n(m~ zMGxi6UF(!%WMD`&>6PKU^M#Q2&EIhhIp;sE@DzB;O5)0riuIwT2s8+kDRnjB zco_H5wNe@&s>2|xK6L^1fviL^EOIp|)I<$bLeykNQ~PL6-KH$ku%uMprjp*f=C;k} z9L@I0J?1=qHnM)%f0TVbzJEhszdyed+yI1Cd3&u*_+dF{_5myM`@vE+p9S=gPcRLV zo8K)-=V6s{Lpk<&m7$W^L6HVj)MVx7zqN3!8{?J{RMkbkg^A!lmVI@%;5;AZX6?D# zcYm*|Eqaz%3DOyDXdD1T5Mg@aE+h|u*W!YBpNepvi*N{SWSaFr^%;iQbvj%Q(Bx*D zvKC;d1S~KqNvvC@XfT*Aa^Rmg%Z!0P%j&K_c=oS*i<(=m zkHb5CUV|^<;{fT0DW?pGKSh0i#5)|)bX=30@{olvl4WC1-odcjkW7`NCQ|SlrcU)x zfJzalc(?M#f!@Bivr)5^J0z{Bpw9!GFNv0jf+Y#Kv_N@BC89?n>-*}3yEuWH_-1kC zg5!h@rs$|33B=$psGW5y2qkn(NdrOG&9snZgmbq~$^?F|bLFKXU2Qj?EC1#>_WIPn z=&zt^YPa=Xj;_wD=`pbuW-n&PY1-N1i336}c(!1~Sb_@4>2Dtm;lptjE$`@dTY_wO|T3% zMiqfj@KzvK;aZrMz;aGiY)Sg|_CJF;7?Hl9L?RI@HVSLO3{nknK9)NDKXdl-XZ86B zcMT+chEIqzJ|F3)sq|oGMhm0FshJZO_Efzr*E5f9>7G_P8E!~)Due#y`Vy(VI!?Tz zSH9M9Ivs6MR(DUik(TQspE34lUdwv&b}zfUokl}E>0UapW*W7O-b^p|b_XX744`%C zUJH<}^t}`A-dG`c#x}C+_2`~m^Sx#5@l2LnsD}2n`36f4D?~vHk_#Pf`Y6nxYbov zc86B|fT@v+a;RLA8cR`)Au(x2Q1w8?tr8<9rSd#KB_F=&T&%Kt6eDaKL?t|o#W*K# z2%pkVBPUO66qgR~_1YP~CsjEUhX<8LsS=XR*;go8sfkaHa>LikJHh5+K!s7RMVa`ZVc_onh5SvHjwQ-PZ=jmGdm;(H@2<%vPeh;5gF zluM8vn(ln3BPMDRorrMp`qd8)=49cj#@M!sT2{fN+=GHMz{mrId2mOZ!LmqrJl`QT zs4fIY^Ew%3Y%%lWUOM%JVI(2Kza)PZFfo!qRBf7G>QR`ql|@1rl4v-R5eNCZJ`lRT z(d){i`meJ%b2RQcR)4eK_)TQnzD_O$F5vAV4}t6Tb4d&#k~;q@_DmO&W7DXJ{a0oe^-4?bV5VNh5~QffM_cPZ4AT18NpEnaW3Jg(87zMBi-!&t7Robh<<+p#@b_! zF01@|n8WGKgBncpgkL|7EG-(JjF0eSU!a9$Ox!wOv)tpV(6QSMU5Q8HtB0-?w<%@~v zaHLv%Fv;lG&p)ypzhUHjr}TgIUCSFD30nc{Zo?E&uihF#e;j)cb}7rW>vk6G==JOr zBPRMg!yfAx2no1Bmb(|HuEI z|6lO`fBV0`{;&Su*Z1e|9AcW z_5VNr&adwOvoG)Ze}CWo`~R2z-~Zp=|8M*sXYhXK>JQwn)k^-NFZkcxX+O94#4s~% zW%?-odaxB6r65D`XRPS2_qn; z!1eZ<`1kYjVUa+R2d#hp=DwX*QOYJGK!2{2rsMr7j`sqX?0MyqEn(S(UJE)aw*&iV|VCo+vvRN1Xp=mfn>FY&wf9fAa<|-c0(~=f|-+M8?yW4Dw!QBRDzWT#{E-}T{fZUFgBvZl?$Qpg#Vui zlusIWNObE?D2|!ueJxhAi6}Z~F-&6G+s>q`pp*qmV5Wa7$@>+UKQZr3CK;yv-ofl= z$0I%dz4Hr5h?rOLV#bwda)(8W1cGrKakB7O0A@>U2(5WI`xbwor;jI&JKo9!CiMfU{0mq}z z`*>E8zUqH9<()Sn+`wtTAGmPkyf7k^p+V-|n>@`BAYutzQgE6#N}0wx7*M z{kv8hrZO)8V zgH5M~!6;VI+WT!}$+pF0tFqg2zZJF8Dx%wwR^L3U>2Ax$xo@jK47}TV*r_6oph{5d z%MyR5nHq!x{Nx@3VW@>5L4vJE2F(J%ioF0v@mH*l3l(6;Xu&Zcj>034p4@eYUJ#J; z*~ZDsDi6PwqQV=)YodR&ivM%@KLh)vY|PvTN}w8qpc;aS5(x%BKnq}6N!PLm zdGf?W>WF{$`ZRyHGySLh#sBn^_Tm3W+;*7~Mo4)7&Y?42zA{Xo_dR#{E6?N~2mgQG zXwgQ<$8DIK{*-zu%LZZM_3!fzwr})!d~FbNzc(|zzxe(yK*WYcBP(1z<$v&V7IKcYANMdP z{~O}+O`Jdb@pNioCpVYtz1{55<9&Zq_&rmXl!F^W#-g&-34fcH8dDOoXE$|deir)w z!Pk7>T{uA&5XQnjW{Vdbs_8qA{#c>`l06`XgrQ(nmO5GUtIw-QQiw6VY`Um;;7`regA{K*R$XK zK6q>E;iEI*>$wqx*eU*}BCa8=Dy^u%Pr+eg#%*q4&ctoOZNX;B#bUw1Y-Y~Q!f9&4 z!DPX1!bI^uX$4g^VL3T|YU=-qGV@adKuz8V$*{>-|HDnD`yTf)M^|&2rtSaf z!-2#5^U+}Pe8Jz}-B4EF|4)fQL4i;(5z*jaFcHwn`|*q$4W8Co&!GPQ>P3iGvsYK_ z>aw#em4?d)Rd2|brqa`dwQWz#OsqiY(?YG9wBEZ0u8&(Uk7}<;ZD%XlihF%sdSaXD z&z8WoQT)CQJt^1#;Pbugs=t7NyKhA9jg#*dN1Ogm$Lb53@6vBw|Gf9DnX3WI+WFhl z_ZoBm)<4kW*gqtG6OL>ZBdygyJ3;OKJKTL)hw|wO`|aqz{S;?54|VFk{o-*=TyF&c zDp8gIK$zAx{i{$)@G`}SK}8faN=g?pH1J>%b&sO{AD*3E*}m<6cExw5eQlR&tCrjr z&SxlbsOp+dyv5hpUrHVyO4#POcd31)^Dd&EPBgo^N1vWAsyuC8!rmGEF1ox=n|-c^ zb}o85NgCm{{C74RRYHD^{9cf;^}FIU@GZSOfWqupb(8evR9fL#q219tPYA?JNL2w# zFYFia_RLAn^IROau4x<`pGfYUxZn6gJwoZn_ok-kI@Xgzxx85Jv5-AItoyXO{lGzH z=wZrdB~UN@pAz?0v#s%NzquQF z{OxHt*4*5&o@?`!;`Lr@HG`@xWhY?Q7qT5$h4!qm?B2O*o6TYDDSg(R50~GXCmynb zmnw$R_3r#ZkEYGLvRZwOVAeKYxXG$(y0Ml)d~l-9MeV>-q+8WZEb8xRdzlIDhdR6( zhV$XketKFp{%h{A)m1&iZa?RH?TDga4bwG#xl)xI?RfB!u-ea=;w6ewax zi@cLMg9p#<{k6obt5T;6J0jPrT=UG`(sk9Ty0jkDz=ew$-AvsAO5#Rv$4-^TtNt_^ zh!&zlrKsTJ>nLB&SXc8fyL)kFJ8)GeJr%|M;`8`m-=rY^V%tm?X^Uas5?i&i+Op!b zrxzZceA3~uxZ@F)cD3if!*6=@c$2=d`J-%y1+A38RswU=S<|Mr={LBx5xI=r;gFN&|y@^ZHTJt09n~9vS*X6BR00l4dhmQDks|TT7RZVT)xW z1+@IId==1-)+xFbLZsnUg8f2-Zql-^l>H-x%8sRhIo>U`MH8Y&J;ONyD$ip;|tExFlI7J3O7$pcI)x!XLChFf8LCI=xv^Hq0;BFCAnQShe zh%Eo6@Y{~Y_#J^KEPiC9BLusTVY$lnHzsv&iC+q$TYvRfjA>PXoGN=r(K=p|4V`dCy)qU6#2{UXSv;;|ff9chMy8CE&z(veu~PzZL$ zI8YS9%orU2Vlyj^X0R`+7tcU9>CZ;!7nZSO6G2a=MF=*gZP$(i9GLo2+q9(G~3^QOF)9nRE{I7?k|57WWmynsT8F@yvY1U#nH8%fjWnjoi zEKY;#**pZ4TaJ<_WY5ePmCFEc$}O4`U}?qTRnlUDu&pX+8UP@zW)`3p00f~l#Rt+> z;WN#v$~EY)L#*n7MbW0FDq7_W;<1G=3C(g%SVE;ih|3{Z_>IOwQ~)3Wh#)ILCuCU} zN^6)Qfg?f18XGgPbTzHjPA*GsI)zXfA|oS>z)`G}G;anAH@*-e3Pwt{4jY{m$7nVh z+pqlFfL*An4FFLlsc6|_Z_*{3TdcCAtiWf?tEs0@PP0+6+AU;^X35e9i>V}HhY2eU z#}-p03u`TzH8CYo;H4!<(WbGju!JR9V}JlaW;#NYCGm`+5n*Gt1|5b9xyJFLXo-wT zmGUVWvor}Ei=qV!aDzr{3*xX!vQ4a2jaB(7O>rdv7-LINEmgD-X-8`wF{m7w5;lTS zVWZBfi#;i8BdcvKUDHBuw@$~Tma0U_X0c?Q%AgJ0uwj^K9+0L;DQ^s0Zc;G;u`K~Z zQ#mXEK!zq2wuyo;=7gk_;$*XRjbF zER%K<kjR$)e3lnogNE)?%*&mM$T&*&t<%s?df-n&QdX;UG>g)W62&Qt$^;9_$t=dq9I6^AponT+ zY+V2-wLGwaMkbo7TDknbjmBORII*6X>L+vluEYW`N-0-}P20^(-jL8K#so;^NU}5R=WumdHW^AhSd! zEkrJ&ILZQ6oPt1%Hk-v_ayii^wzY&-)l@BQImF(s+GrVfgiQ|JN`ggJBGae=Zc&yX zRwX4hd`zxfB^DQNIOWG#fc&AQzTvnd{^CJqQc*1m4>J=W#iL zur>xpL*e%{yW8qCS`|FQpyOa<;N8r6P;>Yz>A$ELMvs$Cd9SEDMgj^4q9jkFB)eNad}oT$vPna&0g1xXk@-2t2;T4vLN7J~9H?**CmC~!wl?z9j}APN74>cK zi}Z#)>POAb9z0?EVIOWeR|0qdP_S+8{ce`LNNiuM6iHpqs5O!z)(4Co&bV)cGa7e$ zBf_-b3elF{sgb^0(h*dEMV( zoXF%lM%!VZtHa>3O{>FhCZ&g}a7Rkd7Fwjr8Ga&I($km>;9y_MYw3tn-t$d0`fa7| zQUdX44^oDH^&WD@l!6yItfEt0{^_y5D0p*M3ie$!1Awfzmp-i2oW2fovBC7rt9jQ) zNh9ia*Ne|rld_JT*PE2=3DtPJ7RLb4dV`H~23!r}={Pj;&3tK-3L zk1B^f0GLTACQOOvBWka9IC!^r#%45%C5^?|x8&Y!XVOiW3Vy6AYZ9~O3n3sJL*V)B zJYZCLZ_mq8vU-X*yPF)k{$j@P_9jNbv&;P_>@kKLjixIQuu${O>Oirn99U0t^v#?3 zt3ex4Zj-BLe?$f?VTp2ae3T|Avfmo6lI&FPTbH*DV%MqVwLL$V>3>f5%30DYhcgr9 z8rh*$CGKP=59Z*I5R_9+=MgK3V#KZ($Z|NCRZOx>HIM(0Cz|AHXbYYF8FWbm0Q!3T z>G2%&KIrVK?eJVD40&PBUTy9lmi|$}6|xm!CueF$lA$AJJY3^Y3CgN3+qHgRm2IWljjl;osUDGu5Q!5)bz^zRx^6@t`7TUm8=R zT-@E6X-w5+h-?z0Y$$IW=<*pB?>ccpLa^*xC;(3(LL0YM06gZ>1h?f{F>b;*!9nPm z-@EJbU=cR?3=%s~7CRABZhk2KyA_9NEq)VoNNNo{oqcpY9aAf=n7Y&^mW6G`6Z(2i zSXKx17Cp@_%TleFF$vfCR$g`q$)<8_k8~^ZkP0zB1-)++i`Ass4g2gXEz5vgQJX{s z^NGrS*4Pw!%7oi>=pb`MxK98hF&(}*x?6x7xEVXDvSUPKPLqDn6i3Q_bP7%-_wvls z#-y*d^UowAghK{JSz-kM+zX(=h-gqfI+NTF3iG8w(mSs#nk+8H*~pu_wrN86)Dq6C zZ}sKsA!py*_Px)LjwMx_Y~Fv|M}wW|xFRk7CF1R{P}g%PsHqWI3`dHjD1b}!`ueyJ z&hVrghPh6@?8*^0XAM=~AyD!#g_(U;IN_7wHCV;H4H!G9@5DaFBDT@SU_(_A@WVP@ zOplIV>s#`yB_51yD&kPnASQd6wq&wvO#i?+Y;hAZ$6z!>NHiWOiRSJxpfSD@RcJ;Q z@RS+#AHlHii*07@{ec%U$)yC*S?cz6O;I# z5~fMddr{`2IuA0syuS+4a_nla4$zndPJ7o3gEnwSiMCjg|4tOY*iYBXG-sBACr%Ie zZ*YD~ykOvODx&lIR4-|Lt<$V-A0?jU{i-M|x= zTmPbk48BHkB-}o<7xrirwU0&A$$}dFd$lVjfKW_FX24FBL1{dx=6A zKk>WUB4b4kFB>J}tS)kJthD``MYMte+ojR3UoAVoRQ}iwEBx0wT1#tS^ZqqxmndCv zQvBPcpDEq*lzQK_y{npq*zR#O-vNNT|Ei+H(%DsJz1lqwO2wj>wP-8BGDk|)R0vm` z*=Z3Y7*Wb35!s#-rH13M>3(NdRE}^5=6w5k-QR5&>oYf8;=L z@3t$GE|8mJO7*@_V%o1smfDlpYYu^C6jy4_yStBH(iks5@K@f|>9*=2q7ACzNCH|6 zV1$gMc$dTOs11j9&_xc+&8k?|c;zlq8H=N+eLlJLLr~({r4z^9mhi?{*D>?QD~pct zqBM-H?r9R!v)tIVr;?vQ5|7ngc^sYOT~W#7XW30@!ffsWYA#Yb=Z^(9d2Bl&5#D$5 zOkM-+CARO$32$1$5XgOE>%EYP85SKnBt#AYw?WAd;}BJ4)Y2Txs^D$YHL2&*evn9= z?1*3Yj$8+60Uzwa-HUNbGm|86R}tNvs+#_#=efq0#q>Eg=Ia>du|l20^Ju;>yXxfO zW?rM#>Aw1sEA!tmUb(k^&Ms@F`b;9)AIZbDT`&&2?V+MOsCW?qfc1F1SiMTfQ-bY@ z#@Dw_7WbM~p_Rcq4Rx|yk7rwmH*0+CL;eS%Cc#G`fOnnh3+(mf(kyG-bWZ>2-u7RzSFyXnArgH^6!SKpaB51AgOWP2@>YV zPOhtlli8_Q?bcvR&aHVgp?RiVRwKzER|hq}5Q6nhaCx;Uw;2E+B!q}ghkuPDr^Jk@SJwOPhd-`2Z z!}#NxI;_p1chIe~^By~o+r)D@r8wK(%5~}F7dVE=Bkc;U!0l7%T_EL`vS0hD6d#Jd z2{?x_*x|K=#;3&4+G(}CdG%RVjwZ}JZaQQaiEnxV9CY;asP(yiq~#B6N(kXCv@|ko z*WMpJ6nbcd6VD`8$=<15)ljBAoj;EKPvrKixHY&?j%*vz%JO4%7mWj zM%-e1R|k`hS|~LJ>;2OGdDyXdJF8IMn=#7d=7^(ZlX@v?Rf4oPfKvvO3|G}w=}o&{ zoC#Opm&$2sG{3Yh-b5#MKGzY7XZVZ4Be7txge40z*ol-raDdxZ7Qh}z* zBKf+Tg&!j5cG7ZKB0-dmC~407fH3~g{i8QPhcMBF;bz`dCe`Hbj9(W2YA5kd!uac| zc(?6E7EhW5qy9>*luIE9&Ea;K94x*p|L?=N<(@%__rI_0n|*HIG?FwWZa$>bZolhb zTeghmOz)C)V@u^er6Q%+BxXg>nvc1hDU8w6l;hx44Ix=@WruRQ;^nupg7Mbyd>%=I z!EJtS;_Jmt|4w)$;TCUuPG(*+uU~EndgdkigTCf4vgbyOS7f0 zT!n`EQTmV3ym-OAB!hR|UZXm}UEt;a#>LZp?opr9*Fxa%!Sr zBS`Ql7Nv^4bYnLIn)&9CdD@ld+LdLp0-jTOY(#uf`Tg8djoWd+! z=oh@R+OQ1iD{mn~*-+rzCD@0rrqY5V-Fxu^gG8OUQJZ&~^!`OTo$f15g}-xwV?Rfe zK4`pKA5W_|FQ(d_BfMcaCsLyB&!o!>me9mAv74=Qk<^c{*fh39v(;x?8T8oycz;7o z00faaG;C@&3O*3jKK?cMT%tQ>e}1l@cQo6aW;gKz)2YH;3^n}O6O3W~W&4RZFjB;o zp2~QWxxwT|mz)KL?QNE^+_Xr40(-YCp;=hr(cA}Ts{A6K4I)GA$8vo7t9kjOsS@^b zKUE0|wu^qv-G9moBLe~HW8M|el^!tn_^DoW;KOVfFRTZJM>+mbcf|GHhg(Qubw5U3 z>i3ux^Pe5?1pvjlf=f7SvFpUV(q0;Liy)4=ka4O2R)0naw72QJJpe^U==ZSj#R;H4 z0%HST>k4&DKmymVGG8EuN-Cwf0Fj~Nn^yCL!`&>7i=D_rj8TI8zvCBcJ{)w7z5AOS z<@a9S)HMf-?)%msr`7X_m!*H>&KeM*{S7cGp0fGs0LZ|BFKwe%oQ;bARET&HBS{)a zIQG0)D^dF};L0(Tz+);MYC6Bd<(V)(p72%Upm2bH z@1qZ=a&z4qU3S(WcTC&OW#;C+Ex5)ivMMijVvLG#jlK(8=C&Dgi(W14!BzE?Og&w7 zOX?-9(8VmzM3uZh7#-Zh!(&r{bjSP0 zC$$D>IMu?`&Ws1!lPg2BXU%B6yzN;Iq@&v0W&}_dBh@;a&QYi4!Us1z-@0Kw(e(o$ z%zoTnUYavG-z2Uv9@upR=kFWvk_vejgUA#RN)-mMR)e~*&e6KR$iTv&CKBzSFP>5ZvdC0t-5?%T*cGQ!jCm0r zk4dzy>PMp8XeE#R)*I9P8O+1o+rSaFP^5thjpd`)>#<+f)~duIRYY`>TfHUPIrx`? z$KfTosA#-VUnN1MAzL+kRV3QKwB<1PbbrpYIsO;AH|pQRKKJMKh9u|JO@FHQ28+yi z_HDb^^*Wx}llp&K==ltAi1Q{&&K_6V=F=@3JMs=^QxY0@x3u`IFiM#FIG=bHcSu9| zT4(o@hLh0&U38za+I6IfoTLL7P_Vbq!~_57k4iqdeo+Nm%?=6fc22N~$d{Pi7MxAl zb#nMT2N$y|AD*WzZ|-jYw)Sg=K9vR9+bN|m$b8Sv16jgt6At*>_$Nkg*3z5M!|)WF zuH^A;VMN_h)Z$nI`TPy*&X)G}54rkK^}f7t&jM%Rx$zRONK)x#pLrt;3z=te71*71Vb`d0LX16<5qJb~PBnbRt&8!F?bMdewT zxBprCUIYL_#~sybTF8O?GUn;Ah55h(wMkeUt5y!d0cL#sr?x7&+z!~0{u_;R<>ZPq^4Z@V>*bj7hP->|=u+#XU=aE%YkA%EgcsfQ(geG01|)uH z&07$AFc85R!A~)hf-THPKiv-TFpw+Z5E0mf9XnbQ&ie_GOYj;L(U&aQgy;3Ef28GM^oBC_2z&-+LOAQ);f5vBA=Dim;UH*Dv zz(aRw!67E1B8-t_Y!i+5-tZ66xSa-bF3~olp*mvEq3!n@n7coup*BTKbcaRcVIdiO zrM3b0B0ur=8j3R!AdiG?R46sQR5@tfs#+o5+&zf_n4{}bHXDrNjxg;69 z)l}-FF4NOsq35f2g<=Eif_whJgrBwPl|0Olywim}3x9NSL(3jXQw2(HBrG_ZdWTcx zrH^;<>^a-XhQREs?9$=A6ybU!-~h=2YuI*dwz#i^R^ z%!L`4;4L-&l?hoN8p|z_I&rd$yFLswcJ^+CJ^~KC`o((RBiuNaE(gT1t=Fy(_2d$%Uy0Y=eIbG2O zOLpM-1Ah3i@JD4Dj=>{mp%HAf2A$BhRYw4*jAcfmv;S~y3Q&sk8Bn9oPK($cB6ZuR zDp!;h;tdJXZAi~y-v#Qc`Ai#@G?UYMK(&U9pB!3nD3K``$>sAm`eK0c zcQbCc#OmlQ&p&>zw+vM*FBaHzlQz_nl%RqO3<6tymB=u!Syslm&K}|rSdQlqAMngo06a?fm#ZnU!;T^ zE%j$+PFELE7dnzKMCb`gX49w7$GWGHv*3*Ts4OSXW6{F8h5fzDStwJoQ?Ntrdl$li z<9@4v%Z@o1zEqKD?;0YW+@{?dF!B2wBtbPOdZ7vP^F zQ5pMR^KH`J_wRFUbS2!IgYe$|lLP`Jd>T`wd!#y)v#~{z4`9;6`AqJv-2-%5}!YeNT zw2_ly5TDa#s^|26FQ~EY-|i84wJ!j;6^H0=-)7NluZdWqB$*au4@E}u@sX_Aw(gyb zVo#E0xA-vJIWkb;#vKDjg^9YS;&!If>(Z@@q&8PXs{ zn6kf8{F6j$p=`e(r?JEnS4!KzmZkUle3)(07UD@vk*TI{Zbi^2trrU;nds{Dk~-B1 z_j=_JGzyl_wu&g?@p&;hfb%}Ms2FE|9cOH&yB!O6JKb(()IUg{fq`Tv0r6O~v$MLd zGv9E#>>Ss@Mb|g1;C=n_QNlyTw09#fvwO&81p?ocM}K@8E5@vAIh86d5C9sDat8nK z@u1G!-tw=yygO^i%_gKU%pg(i9t`9y`SCy-%B;E~2cb^U?b7%~D06D?_~M8^Dlq1f zc#!{?8l;Ux*)kH}P%XfunE9^{@X?~m^T?}nyQS)He*MP@3^qKj=CDJCQxS_qkRHD% zjCJ3s3+l9IDPq>$I{L?$&CJ#P7#{hqHzp9@i`r?_A7(xc9g@{gu2^O$xzb=u z8E@aplLP}>Y)1_x#x?MI6?Mf>AhoUIYh}mCjJUUYWjB7Ei}^O0fhFa(z=*=nh4URB zGuqs;6d#;M6|%!m6prkym~sV+UW9H{1MV*xts7=pcPoHzYUB$()9$$RmCh7`>v z!5Qy|n=yBblF%gV4vd@Uz1{?j68hX{-w%tL&sgse1-z9?cjLSp@yk6PY*bA+mtjZ0 zhY8F3KY8q@oS7*VaK>GM6~q>715U+vDV zNl9`%X3K(I7{9kzaWIHO*ts77ApNYpE^{sZyVQVmca(qI+|jePJT(Ad5q^xAvY)$K zIE~zBhIvekalMnn+eK}!u8kc!CSGk!moW-fU|~=!&E)!m4@!hMMRXJ9m@S1?EVjN5 zr^zR{2JqHt31ER*)1O0jfBU)R>8!sAr4?n28v#EKpeipY=MrZa!Ml*QQiE!iSdhk! zwLrij^N9q2vLXm2w0@(Zkgf!j2$~hJFDp{FraLYXHelmM=TS%k?l;`qxG!~+O|8+$ zCWl1#bPfAikX_5=12r1(o25NC1eafJ&~v~+<-#G2ao=_G9~Nlpuef|ZU#9+6Cah~^ zM!Rr=oI?`b-w?rkW|<9jbNS3SXAiZ6bT0P!ihCGshxGJ`TDcOlR!}>@ z-A$dO_RBt`yY@E6W|D$U@Cf>L4@FgmLugY<4gn-yqh%P-Y8;zuiId1Fa9+f?RSn*4 z*J2u8z;D8ZO}?l+woI@k+*^F{idNy9elKS0K{j$ccp6&#S->XQE?)S~m9ZrKTq7Tu zm4<#sntpLhY5K!gHty65e6@w$R~jiduRt_*{9)L`Y3mxi-4FZ8$FI6Q51~j?1 z(ckXnKaH^s3};8|`bO}g`NO|>ICQ`M!3vEP1pr}av2(mup<{+c!YT_Q7Qp1GDw$cG zvO+fV)~AUXOD+IlBLLJ0Vx!PZ+kK7eed>Z2~GqhAD%%sm^{uwx3G%Y@J zSorO{c@$p5otuC8@~>L$hfXBMrqQz>r1nwfPLq$B;Dy2JNt&bXyjIJY$?dm8k^RQD zF*#6d#Wf2?rr9dYLPb~F!WjVU!W(^K7R6vmL1w*&ciq>ZJtu1bR}QZgFR30M6TqK{ zsH55!2)#NgP7C8KNu_;8f!yk>O2hg)Xja9qEf|yC!U`L0H7s4V8j<*rw(KV2NB}_M z1nvM`v5B76!|M3Ubtb?S(OKYP>+=WC&nfp*5wibih*y$1t7BP~>yNzu6nMH^+}vDl z>%ufj#kXOvttAeyi&5OiSD9{7E_f ze9fqt-E<@3*dj_uOecyu9eBScm?Q@+z9t7QtQjpMO_yH511!9m?2qjHeBBU1O=n@K zaR~Eza>dClT{Xvxc(Tl|hhg=@u=*^0W0cK@^|*_T27bM_T-PId$jIL0eiegpF6A_4 zX1E9dI||kW(?MdH9JLgK;xCnp7}K`(<$xafErgkY?HF^D7|(t-pEliikRY*O>u}M1 zX8;OH-+UH)w@o{8^O+ulu*v64*mB)=Sxh=I94F+C(O+%^sJ9&P2{6hMXGEQ7NQL}j zRl_kHd3ahiIH=K#>8O0W0%axvt({l1Ks8j~-dUY^xI zceeZNeJeK7o-pKxf&v+3zpY>O3l+1%=QxEJlb~5)fEXcqw@*b8Zv~Lp;LW02Nfxd> z{1s~jPIoBo0R8`e_iVFqSrV#k6xA6Hb{g62wKyhKZ5tZ zF&AnBIm<~@a{aojEGN$bzV@v7V|%5Kd(lN#qP9wJd+z|Y;H1MVG zzH|{=e*elT9m8Lk3+pph4(2AZ2KPsYMQcB)DgT}yGZO`vj+XZq-ykbZVnw?kHDXt$ zWvHvS%HgUf-|&5#+kR~BKyfZeewIV~>VJXS8YtuT(*J%j8X#oDh!kR_?3lQe{{#T3 zOS;|5dhXs@Jql}v-=l(C<`9QYu(GNseg^}9ye-T@08r=(8;dH|n$2HEaK}Y+L}m!& zl2=L;u^6}47L>Qs;O94j-#%qZtxTg+A+luXf?)s zi0j2?@2IP<8r^2L$=9kCi-m&-znte^8%dm!q-r<_p%{rIp%8%0>LJ1eT=-haMxzyb z?r6{dDiWDssOv6@hAEzSEPXfQpR+HZd%$b*q(|X~LpQD8e7AgLIz~c;)u>Q{ud)7R zLVR%A>$9f3+BfKeS>@R*fGWxdcajnB{zb0Q#omu4DTGTJUX{MAD8x&$RX^r+Pm6CQ zq|^Bk{Kv`AsyVRE6vdT?+$w%p>59IpvpiWD;wtx5F6-BsN{i1=*?|T_18R2f3o1AX zQW!zxP^h4Tay%QEVl|VX=#+wcn!*6<=c^BW!Eyi)D}*oYw8*QSRz%`AKMe-q_BT~S zelq_B+j96dpu5-W%kr(af$yd&n$$nRKc9qgf53@t4G4bcdJF$u)t@MwdvTz|`}3=A z<#$4Y*Pj26xqq763Wj+JulnIP9&8n%TcanooQhBm+@nw&xE*PPyw(=+NUM<|u$;^I zAT}^=X=aPm?;<*w8Zq|IwV#EE#;{jSh3|c9U#-na+gt!pycNDM**yTr2ptq*%}A4h zF7SKNAr5@AlF^Irm~a^Ff1Sj``I&Dr%ZrGKbRcqYY#tPD4*&&9({ibbqqQzDQ9Ka(*O4zs`;O+-*+GS+x#~%QiNRg-bt_n~=g3-~&YD1i)*FO@(o}=EX;PLLwGwx15 z(-I93bO{>%HoW|@d-!9w6Z!AwR`3v3Tq@enRq9ULyE?pTaZ#7wFWKbGc=>FD>!B=Z}uA>M{{t55oJ+VQ&Y+Iwd9i{P2KY^oc_Daods zcu-wG-F>N6A!{+SWoFUkLMm1kizTzyu;uX(V9ip*80 zEjt8=X~KX<{3)WwpS{{)n>JjW*r~PongjMe!U#8k0D_RnG{kozp7=y+F9N1!*-f)+Pv{j>W!%qDe#z9B~LQ24Q?2TMP$HsXepzwu9f*U$Q6T?St`b&K3fvE8>#=ivR* zHszzOUhoWwvs*ez_18k``v(a{x^1C@A6!!}#*_Q`6mqYyJ?d;Vx)PFX*)y2)fpe#b z+Wg1y`WKk>L$By+v-u&GtA1r~hO~bkja1^D7XXyn5&gv5*E2s}{VDX4i^6*TSDr6{ zyf&5M-NEnK1e$MFQ1v?oBeWqm3H(*)3Cu%w`mptvtTErmr8vuUvGzNA{nk824{HgT z33f(9I}WH2it~~>B)Kx=6udcVq_kj$D0bIYe=$(!#Z~ZanM^I@vW6QjHF#xFC3f9Q z&cMCuTcBPXPS>O;{QN>C_7eCy^`-!n^s!kx>O(uWc6VvfG#<3d0qPn+KeX9RUdB3wzYL@R|MH7Wd%bUI3t!wpBwZqWF3>f z0o!b~f|e&Bhb(V?KaGNWuNrX@jWL$ip18i}F%*W%)+s83us3H5|2aC4SRg4ZI9XWi7Q~paF%**16@JQyAqrI+Q>zt{Mw&*;_L``!PKBeWx!G!Dv7@&b0J>&2|6vUr;h zYW~N@9q*@Jx0Xi|0EDaD?fXsNx$e>R9QcG385!4tg@aR-yst_6Up{*uEuy^c8DXDT zkTI_C_W@^ozOnpX)Aa;@F|13Fl5`K+?eoy#AVUKCXYWkzlb7SC8KIpbp z59Ae|Z)z1#B)#{Cm1I{iF22g^ofu;2{&Kx3P*>6{bR*b=%;`tj#qpW`z(w;o=gPhY z0FI*5&qJH#oQo)?=QFyfalIUN4-D4LzwK>d*42P>|1CE?_InBb5yGMfC4qhVnizSE zHY%veO0f=K4Q^K<-@USh;{Tn*Cq)o`OJbIbz_BPvBA*`whf0RNHZ;!D)kgWBg~0c- z@&tOub&MLF8$D+pT}G52)wPu)a9Q|cYKc>zFnf0jt_S%>Ux5<#SQ}5Uz)`_?KC1TU z-?|&vrH8u`{!!9txtuFb4%&s62{9GS>T|gzAjEJH!6d$p44{akfoPr{rh95aJaK9s z+Z4Ix0+60NBsGYG+b+8P@|lyydB@(>%KmG8`9JKo$H`{DF_ynaqFq^ms#1&tulj&q zT$xHP**U3%mni6qIdtI`{)Bz1jmPP78OcC1FC1crWsHbU3)Kt&Ws@5`AfvRFSc!o% zrke-JjK)Xt)}^#`P#aX#ZpN$lGuKQ;e^paqqtKCY%LM=DfUu3Yr%Qubeg?y2|l{bpSPP+^!cay1psk-4&0WjMmS{#2@BuxOo zmh;C|gP-w`HOF7Njnz$52xJ7wVZ3Y(!ZYX!e*v^QNhk%4p$JtaJK)N8HS}L;Y|<^M zd`%iIHv8dRMj0z0HBl29HjLsW3>J7brr!~2Vxz+a6CtrKi%0wA&GRBc!RB;T8Tcju z<~Wrp5w6iwOrTa3`d=4>!=WExd3j8#xR9b6oa|!p`4zhoge^N$kXoQ74vso`f;d71 z`t-0wLRA$urHa}j9(ez=)u7!LGakt-wsS)S2HD9D0iKQbWL?LIDJREevvd^wH&O5( zUR|gXhX3{`RYE*8;xt&THq=nCL6cpHVHOI zZ9{<(ar=Mr4$QwUn?Baug$axJSa_z(=x|)sWeB9D`{fPdpJT8i;yVHW_3-}TmET&Z zwzN7m$l}SK2a6z2ylpAnn}>uJ;k1MUK=qC_UK03G8K+Zc<{z7xOK4L^cCrPejT@c5 zKhr|7!HEIs(}vm}dfZr36+c*Q)G3psld4mFIUjCs(j)48l^a-JYxP=Cn~RIi7eL-xWDPuEn0(|>zsdp$6iVTFaU(QuJ401!M`n2P&b zBA)7v)Jwn*(SZpo)0efSI0*o#)v@|qT;#>MTWL?xNla95^62iQuhmc?miHyH*r&Hq z$wJQ>Y}H{_PwcAQ0suOtz~(KU)lk5<(s2Mb4=~?fwvh8_t!+t9#t8Mi}e2Bwy7-gtx;aZAL*!qziu}3hi=TvZpn-? zW>MIF+`&){6Ie@C=n}^(jZVaPv4rBIL{Za#aLrF%zSCa|CY@)H-xXO8ZApIl60%T( zH!7&0W~>q$HP0jZfGcAkwn4WFxA~Wu0nzjP^8_ITckAHR!G$MeHb_ z*})eD`}O;y^)bICQ(Z+HDw^E@pz?JN4iV;^aJi15i|9~Mh_LoBld-O{6!VauN^EzE zzNS2ZA#v2Tc*6efQo1BN@IDiUT2Bn@*C5dNM+BeUKx?s;E7%2f;HP}du;t6aB5QAq z{n0~5VG(wQ0VfaNv%fg zV8+e6%997op+-{ACX{f?%n-RxH1C5x>MQj`T5|~D&ts^pR zh*r!xgYxT3^jcD(-WUmJRk{B;`Ggkaty?az1n!9_O@S%y(l;NLhi_IiNt*|{UON8{1gv#jJ5wk5N^RFuGPzUPni{-4;p@IpckFr z#n?_u*J#P34H69}|&*o8p=HBGvvw@(QkizWe5i?#5I z`3tL5Nx&Q1@E8$pCU_04`3vq!G%)Jjs@y#BYMHEzjyT(K)hNo2E8O7X;_dv3D^f3W zm&mLKByQ0u<|e0V6{y3uFm+cFE&yZw7{ankfOR%UK1On1dO0+XXGgH`@f8p-ZW<{v zcPV|1qI@a0AI|v@&OlsZbW@4jW7YOI?*9O{KuEvDOf`cMB%3%Oh&jZ6G1J-nb}bS$`h<-NXq7dvQ^5{-d+&f z39|{)2{IVQbt5MJZLC^3$mZJri!VwpTb zx*bdfsNi8~DXfyFW^rZ@QMZ06Ac%~S1~5StMG;}g1PDgwca2BVZD`h`d}Q$7k6wQM zco^j4b7sJF-iB%xGuC#^t*}P2t;rl7lh22(Aw1?-j>Plt4boOemf!)v~?BPNWc8Z|LPcNy8G zqj{RAd~LMt8Y4J=cb${Q_D%xYNg8WVTNhQEp3xFeA~)8I)vhBZu(L1F=$dAb>D|(L z-imInjNqkoq^n(|@thA0ul_5Hm;cvQ7dus`i>xv$^uzH6@= zwQiDs57{F$?TRn{tkr{z*l!Le;Z^2%{5mtD!e~nv%xyD>0RgiDakdHS-$>yPd*$9- zx#W3$wGXGKm0PDIl4ew)g{{!^bAVR>Z7flcfV|do1t37%o@VB_UQ3Aj}o5RA{-r(J?4 z`CKBmFk`sCWWU=bs1`_X1#M~dhIYP{%{RpT-HaI!a=Ff1bgj;fl+bn=rl&k?c-i{L z&dxWM*FA~Jy)M#~N1~0%2K1C>5)TfI9f40@r}Sa``AZ8hDmJp>2{&&;Ela)OSMv{?Yxww z(K=@q9LXDN88e(!tn_8@TCHuyjUJddd;Up(yH9f)<|8ecZQQbE>YCl&q8cduGdOuM z9bl}PDV8f2h3*zQXtOlYqkqaZLU9a#$%JATBPJ1m*!IYjIK5@o`&cc~Cp#OtMf@Br zLF1fAYP)wlW^7N5`bhw^op6nzIqavYZv~}roXMW{)S(5aLwR6$k#7v8-%Q(Aa+kYz zjAiop6d-iko-t%x{pHd#eCDA>qCL?bne_;=W+NtRq1KNJ4x^i~7$@eELN&R6+XEG! z@k{xeKr3Thn>~3q93+v*vdJ4K^f>TZ!FH$hMEO-KlV>`-a(igtEilcSC7n)GbsyKx zs_!Fjrj2Pw+ux*}HrV1wI31bC;95CrNHFIxRuN02(<3Gl+wUvF=%WMzremKaYJuz8 zBOd$&gPn9wCCFBB({o|g8DUj_5f$b?YzQPTdP$UCQ6S{QbyI3^hWXO_l7ibGb-}Ly zsByYxXmDK*ZoOM2foDzK`=Ylk6_sx16^4PNnWM+LEyF!ug=`b+ z8+aQ_cO?~K#Nm`Pv!BLKm3u5P)UG;krrRI4#EESNx-?+EW z%O-{-AgU=PFjmgN5Fe~vSJX}pNTf{CF^brcMELw=fOjIrxgV|Djj)aSenEJoP$ZBV zv`EB1Aw`atScAhh?yOCJCO7fB`a9EGu;fBdBP}1D6h1}rnwNElAuF66B&9OWijm2` zx2gDvzIvQ|nXLb5sits2Mk6hMymM8r8v`Wpk}MSDHo65II4IW60O)p8(rs0Bs3K@@ zNCH(f^9&ip>A~7q^(eS>5%ygD^_m+rmrd_L^xplJT20Ckk4S%iIp5tV(Fia&6rfA@ zPUPIPl_r{A=cPhR03|27vK77Y#<`i!*VA&dX^$nf6j!61lFD`uuJ^4u-DQ1GX!1+* z;JI!`G;&lUExn;Z?y1DoZdE7Blw_=Y|^ zF)nO^r;TFq6>x}Kt)s*GKIq#T&OA4m?NcwpkuzD4{QP)0KuK6ej9sfEEy@;%&DO&0 z3viv_N{x=txZ3B1TODE_taHC!?o;;aA($J%v9pXAOaiWVx|eQ|$k&)Y-Goxb&cBqUKPfK5*^u7Qn>8%w`;RwYeCiqGCfcsv5 zu8U<6mn5N$PnR99WtrPYOi+Iww~k9ejE$062%lHbY9iMtcwLzy!Snq;di?;yQN~MF zWVc?+?ZM=*gCe@1*e0|K*LV07eXDf9R(K%$J+%e_4!3_fgGe5ZT6U&>ZHjE;q8!Q{ z{nDmkQHfD8o9#wcfgZKRxj|-g7L~g6@Ob%r+BS&M1R_UF4&4 z2Fyz%E+Z`)p{%xj`+5G?O1gJ;Qd5bViErzJnhe##_qmDD!_T;nzc(3!4z_1TR5seo>u}m8p+u8C zS-sdzw?tX0g12mV=)r6!(`cpIvy7msFcw zSaj6IVk0J$!dfy>=p0nFiap$45H_Ju6+b%Q5o*7>H z#?W7i*x5g^*3RawPn$%4ByyS7dn9xCbK zd!8In@~fv^Zi11aoxO5!(<3Gl<$Ch+PC4ZgGt&GzA$W2n&l)qa^`i2a9Tkgca+#B= z8lRxo83}E^0|%{j`upDSd6v^?F1+?OobUvNFS+R1JDaUtq6-&)Ri^q)6}!!_bo59z z(L`oanx8abBqG%s_DL5yN>&RsyyH^0Nri+!0x52*Cv0Zw?B4gdKTSN0?6PRdHE0fq zAiIFRvfUw^rILn|_3geE#qAeeoTsLAgIPaCmRKE@hg4WFAimh;HgH(lxdz%rp{InN z&W&yK;w^=5khNWZKIhwDd8O~2t`;I(vcb&oo~1(r3vx)&&xL* zIZKLtpIdb=PK~wB5}|aM^^2+~@d9jf%dxy=Xj(;aSd#E)y;6B^H<~zH&Yk+?+Hc{1 z>c6Jfw5QB0LFqFd#ldYUP)PM&vDUFYraM*H=Z!=3c95ZqvexME zHqm3Yv@yaADMbr47G-=ME}Y~h$lEe!Q}ND~c=6juTiF{foVgn~LekP`-D1Re4_-Df zm1Bdqwdtu`GSQ1UV782Og?tkd9S5br-ePoPoqRERH4f;%s`9todXH7!o0US#`ma5D zakG0%kUp?~tHJzR%g1bA3`%OhIzTzSlT#36)s&E$@MYa(|gBUHe*(@G0nUIZGq2a zY~1}aS(W1LSU*&_*ycJZGmDXLS7>n6(FT0!Ckt_Z5QDJ7{Asw0>1^%N%MKy5Y11k? z$O+Cu=|mT#4lHo?ws%#9CDLpNKwVY$BcGvhM~$` z44yP&BQ4m=w`5#flOrav5=gP4?s#`0%JWcFe$TIYn(^uGrlh^y3{T~b3Bx;dU48Xp zK3W`qJgXb?VSWBTJI^S+bKhv7Er*44msZhism4aA}5c$?hT`!<#Wc{-RO1Q*WD6gy@4)oYes%Y@}dRJh0mA-yJ1? z11|@6td8RW6f(&ix?B*)(JIdR7%ac)^ zPikq1go2TjJo2tb#Ai=RHMiT+%wm3X2QA~oMyru%oAbszd;E)WoHeQ-QXoQL+F24d7Y^+4`f>Ckq><|X>|`r;U_Z@0&PjqiO& zCl~Cok2Q%+tQ4?@wSw^je$Jn^Wb8|s-sgN3YJAnrjm!b>3L-D}1?DH~rRSCgG{ z?(MFX7IsUk?{fwv*!!Hd0!U7O{@l)|BQ4myMlZ(eXKfZ%#r?(R+8CHRMZ?-eN<=BS zn30;K2tJ&|T0%35s)^>Vp-^+(+Yx?Ku;!vWNpm$Hqb;1qASn@=trkpM%?{e7*p(V^ zS!#`*Ha_LLQHq_5h4rKyt0P8WuUb4?IMUr3Mmk>$r%OzAI!j7xg|QxgRg)36ZDqP3 z-6JgnG34hSUO#Q$kpBg5wbeh2qx4?TSccmuhotFqt7RQh_j9ZU;I0H-$RyXkIJfzPe4+=rkHKvUWqHEpC8m zaXPJgCiYzzN|aZ_DqCDXIfaGKX3@VJSviyV{xRCO<3p44y|%rJ6hcd@;slqL3(BJZ z9FaQ!qV$O<=V?z?nrO^y!!3Q9*^od|_Ut}r)+`(}?dH3t-I(it+MDdLP0$~cue~wM z3p9SQe?_$$!?T?L*080>qcD0SErXK+2<5egc52pGeS)U8N@zv}L@2L!TR`=K>Hbw1 z1g;}3K?H(=BP|`S;mvHeeY!O}af0pBU`$o&6&YX$C`bZ&;C<)I)B1ltBQ2-u#~S}< zzfKt?$O0^>(fkyD4@UIo(bdo7doo6SOg2g*CSlYQ|I@%%d8M?5g=8)~zR$eW`WuwMVgF z!Z|r+Cak$`rI*Db98XlBPWT0g$|corUCyqnh~9kEz0$3JMbo8!$%!ar4_}NO1()Vz-`*l7GOPxmHAgC-NFXgp+ zzc|%&PkxJkW$&!kcT&}+xR3eg(eb5OM{4ex5srvM!gcH%T|kTpG6>8 zRX|Hx)sP{{B^Ve#7Hz>_IQH8ZJ8M)B=!jaP%hoM_cQmmpbSfhzwd#xctapkBTM(d3 z2_@>UOT;F*w})KhBjlK4suX{_OlCx;v9S<~Dhq^fRBow{lgq$mzRR^da4@p-u<{v! zGt0hstHlt*0)ueldk#1C@33q~Kou56vaxN1Jc>AHSqL|^u4$vfjYaW+2CAUJD65Ag zojERl{AAM)0a|<(eDj#mo$zfoT=&H{O>)*!(LTDW^`|0Vb9B(TcosxiQCEr3P*BQ33#Ff&L7eug_sr?x z5<4?v>2>DZ$8YkxA8qUr$p0CsCAh!62TPZxmg;?0xW8F!hL142I>v>ABP|;Pg(AM9 z`jC~^;WQ9N8#=UKnCA%L9L?s@w-(f1)5JxjsAZg-5a9>IT_X}f(7&oQpg37Z67+k2 zK6MyGOvhYUMEEFoaEnyfUwGt)x?IFG4B1#skU4fU`gNnBAtIqhn{zIpQ0`NUzrp>* z9N7IG#Fmkkd`P93UKQ{AZ0t&NJRK__S$IvZa^8_E60WlDX~GAUW42F(-gel`^v&eH z%ibML7}tTp@hkgW$-ce%@js6!=)GvP|S;FTjL zOPi|c;cWs1!G8&!4v@z&nA}E8_-aO^4!J<*d5Cq=HkT12mwZM0UolWUlxybQj**zD9vAQ>)*aTN@&Jug(qfjmm2*FmQl_>!(-P5x%c&PM>2w$=h zzZC-MY}K7pFlN0ZwiiOrZ0d^;hL+OMpJAJa2&j@mNY|og#l~IlINn+*MhZBvQ{6Cj#H zh~;>HsO!nh=lb~E!XquLNRbc`l0^=ZNFyx)he#~sTZEVfi<&o5B0i)}-vol5ahP6n zpL(HXlJ4W7Kx}zgGiKxXG#|6}!qKE&Q9@@rO-+w#g7fz_<>vYD|s} zxSO`wcr7bndm7d{_1eOb}r6#j^72 zpKo)X9~a^yCL$v((eW(53ud%NUE^opReuK~CWTLK*mR$h1HZg;aVxlw>4fFhU_GgihBy;NN-j&zqsn6P;s$*Z~59*zZnQecHBIP6w0UfRvV?48K* zx{!*8IG~9RRYFiD+Q?t2Udcf#n$06E1C5zW=eTRDL^*zJj)EL-g(EHNZM|3gM(9(a zRKBR+N(P`|JR+w!-@djCT7n;JGoPM+j7%aDc@Yz?E)XLo0xsB#tQW>3wgJx6KhGB^ z$PY*m z+?C?(*F}=%U@jA$NwGMe%7zRGq&OojP{vYm5Yf71CYLlU=bjxa+mo>uV`?bnUZw?{ z$|bQw$2F6MN!ZItd$ z_-%mJLJL2fjvsH%8g?K~HlvOQ64@xz6&=HWlP~DHP#Z-&I+D7v*Ehrgqqd#fA8=J2 zr3Bb0d?eIN_TCwp1b1mi)q**7t+sl#`Jb*H9bvASH!Dd<;PE3ZCB0QV9@FfP&V2Lb zfPHtw{0R4qG+=Rw?UQYq8&u}3;N%2apj2G}5|426A(W9NQeoK%{m)S^tkjQ5p+Sa! z#=ZLWA^g$Rz0A#oP&jw!+f95n)osVTJE*c+kLE_cLm&*5M|n1r^@J@pGpsdyH4_Z)sU$@spMR-$ zFV?T@Y|al$vM_44hBvK^`tiIf8bP6d_oz*rh>NEXrh+g^qlcGJb3C0U%|hpe5E(-D zy};$$mJ4=sON1PzT5y=chAcyroaHd>47(Njx_0>KEOaOXg)>$GbTkJHR+HO3fTlj= zroHk@h9w_>Z5nAEP6OYVx$2q+e_wZorZ$ZGP~tmubM=_yhGQ*-g`be2j6& zm*|zxVb{BD5lsT4wPhS8Z#GhnJ4Z|j3BApWHN7+5v%|IQBxLAxHrVgecS(>p5gXL& z+!9O~W?wf8Om=10*NF+z_==P?A~fY}jQI#mN<@b&-#o@82};BvM$+r)Lt*LH-DY?0 zK(tI_Xydd>8G}>mgoQ?ygha}JsZ|Kg!OY0OtrIovC^Yx3fKmrqMVemRqm&Wi1dNbe z!t@Xlhzo1bizBdYjhc)^FV4(vh~B#MjK-^`45klGOp06}9Gh3V^Chh^Rx`ysU zBT$=W6}DiotumG~7^spXE$yW^S(RKg2ocdCV6Z_3Zq&(n6B~r{v-ISDsezkwu7N<{ z1_d_|!w6-CqeKImFCaj=%%T*KPL<5;#!2MDR^cNp>JuREr7^D+<#4j$kQUcl{&Og>zIuGPfOHtc7&UF?v5p+MkJ>KCO+>;#VS ztSI0-<9LQNt=2q}&b`Vyh)w5-8wi0ANtu!eLrP^5o3+GU`Xth%>i52oLdsM%Q_^^S zR47IIWu|lM0b2U51f9!%HcPt~WM?Ux+=>@79&)~$vc&^nm}JT@DIhvmK~!M;BFoqiEU0nGCT0`?A-gNzVfPG_yW(( zfth`>VY>aH(BbrLoe2w?IOCF2@xgUqcG)||Xz zK>(B-Mj2y&Tdv+Bms@N>BPJ@G3nM0f8;4-4?$TcSTUPo_<1tnyXz{;-JeNzMqDmxn z=uwFdlIcH6Bdo-M{GVHufe|4I2WjZq=DWJwl+JUhbrYR;S0BYy{NN;{#Z;6(+y3=E zd%F_-7V?^qFp~>1%B-}PF!vTFT_pOqFA6RrQ3-s!81#pB7XEZQOmjm zkJjdY{zIdItUD72=bK;YkwenG48^!?cLEVQ>)0d`!j_6yDD9)K77~qxg#x&SVgaQa z`3EB=`TIcBv(AY+XrpCFJrf=m{D~nWY1RQOP?GpaQqy`7wrj+`EfF<;PACTl4i^SB6az@O*%7kY6_&NmL)6E) z{+-N*;lYB)DL+$($qX_?Q5p4YEVcPhi6bpg5gQwpDBy%_N-Bm7KN`F#bL0c=PQu^C z{cW%EwXbs{CO^VS+H4`zltR0uM0&>l79P8Ufp0?xAbqz8STP_*#SvNvEes5-nt1gRWku?V*zt`^c1@I@_{AD757W`sJVYFc zeo4*PrgWl(cWbwn`nO$q`Mr9YlVH?%I0t`|{;Sw{*=;C;TDQd}9Si$hcrToUpS)@v zw3&%<*vyy{nn+T32@-VlB;=QgO#`x0tmSntvWyJ$-hjx?9u+Z)A_%f9=iRk`lN(f| zL@P>DRt6=~uJ;)9&a4$3={xbgX78=jPpcuSrr(rSh7Qt59S^qlu%d4$Wl||9?=Hj- zKWK>QopTP!>(g$+tMq6b`ulr{)~Q5M%_Xs@qitBig(+C7X;xIhmCD#MHA2@!TP+>C zW^q8sR)s-`i&P1G?|ga{>@3iKv23f+&>6JyE<@ZryZil~+lMwDU@qBQJDdZ!kdk04 zht9G=qeny*odBRHc%d?J0Rct~At@ar=23CFXC{QYs!9ybG%|3(;DW4hYh_Nn=&a^x zHe~tLzj31IBiIKv%fnuZ;LEE-FDONrxu66OSJG8*vZ z5X+Qj*tgr4yGZ#JUCL11_`nCb=b&|Ag#gAG0ofBOtqemyz~yzF$@e? zl1Lx)r?CUGYz|Uni1~r5-Ko+&;CQxazPez*2P_57KN(P|uyH#Nch5FoVs&zY@#LX8 zB^8Q^F&ffuyK9>iY!R)0x?82Tz1H`UlJaZR>@`$uM%JTh-nK8f+zeQeMI;qLXK3M! z*sflB6w_vlnk**11wrh_CgM3M1g4?h5hEs<6{34OMBrdnv=k4cw$|CPiZ6+D-dNO& z#+w!Z-yL!|;b$s$<};wfJkb!~t{O#_EvWZ!#F=D&SWZr4giB2w`@qSR zY&1V`%`h-=w?47ECQjR2NT&;2#>GlvKEXSRG~zis-VY6&PM_EhZX6hA3MjErlQz zBQ2)7Z%fZE=Nj(1*=6c;OxV&&EE4EyXlnKBt&;nD8=l*(v(ttnCUO{(VIkJtp$?9CjSFDJB02a`k;S+JX1>?G=KH+w(>pAC^~@y}GNMnkyqn3UnG6QH z_1;8MSFB(dWyR!pxlA3@`0cdUYv-MzVzi~os=PKO;74cL>f?fW6t|#{bxtbdB?ex` z9FkOjVC4mew&;XHQv%S65G~aa0Igx9Z5`R!I$5p&P({i#h;J#QIIih;e6KgKNkIHK z?~JoPJN0PhfX)O;DL}O+bRgQCg6;?bs^I@#x&kG!_9ovgJ*Fj~2Me%L>gCw?i z$`ndk`AFEIU@428bKgpeoxCU3AF`U{@b`j$YG&}Pw4Oj~hx=Eu))O#}_6F#1?JG&# zP|?Euo50}AwAylvF_Pj8h!2|eHZ>gt+xZ-KpEw=%4>;@N;0)}|J>^ISYtR zU2}_o-PU7{{7}myCYj0!e`UG?-Gtg4!J09l>_xr=fbvtfZQ)&#-A;K9*o=Vbrqa28 z&7+i&7adHCCD|d>B{1Oea{47rdoy-{Sh_muy5FKN4sJqX0kGK)bE~3#58GwtU%js zGIqzu zF6b3tCps$n`L7$p>vvF(JEGpewWuVJ&Ig;Jzm*;K(^^ZsX*gb=FJ2&Wi=Jvmol z(UV?JX~{#NF!hQc^7Ev%U zwwLvU01V+1#{i)sPzShYwoP_G12aBrdp|ZGi(Oh{IkUC!Pancdnpok8s(XF1{h=6$wz^VQ;|*0e8ZVuXB$ zoB%xB0(CCp-8C_{skg6xv(rOZ0Dn)P>3+YL?H~bmh~>xnjNQUO5AiN>2#_JILQ#4^ zrVL~HzW?DYQ!$)yxe_V`@gno*rUZikD%uDnXB{&4pd_kSD|;=-gUB~?m| zJsvzBdSNtj(pt=P&P*Q7YetOfS|I+6$t{5 z2qP^4LH(Nlqy0aMkLhCX*spQ^5#D4Z(u%@O55WGmn<0BY%l(l3kDCZsx6a?uy4Ntn z9(?&H_oAo#kOBZ72&f0c>4#!~7eEi9mbRaxR``p2=mf?s$mgA0Ko4tyeFUQ%)PI=3 zU1#jshE$|5@~LQl%h=eY!<3cR>HM2-`qTK-M;r(@5+t1dujQtwPA!aiVxQ0Wecv3M zz#L#9^+6HL6d`OR6Ljme7Q?3H#sALK{!KC5Ub{TW&!&8zCpc z)D@@{1RY=7_qoLDf0+ya8E`)AoozY^2-$5TV zgP4b?U=%4|tD(KaQp7|7F(oNd#Rj2Q^oQ96Zj=KfEp#I$Ufh}pk$}emyXkkuz@wZw zZ&&ui`?^n1Q>1@+>5KJtFZzvm(G7cIisRL*dIH-+Wlo5y^; z^(J`aH^Eqc1l5>rCcABNMUcWp7&%P1r7m$cO-!ouC2Aur>Oj4*z(6A=HuU;o>mFnO zg8ALJfZ~&>ck}x5j&upBKd1VPxa!@1&^eDXt2{HqgAN`aZ{Vyrn4d_| z{FQi_K>l_QbOZS!7VtbQo}X?uJGOq%FvI7xJ-{Q-kLr4+R`oJ7O+pZ?7zR&2qaE@& zqqFR0>7!xYXtuHxu{RJEt7^4&C~elr3qL@62w~PN9QSqJFd5kpbb<&(Zqdp!?H7c| ze!T;KfKg*Sbt5L;Pe*TuXhG;#N6xntdhHJqPY*=|M5P5IR_!8gAb}oh5$^lX`p%5Q zMkX7hzOlr|DH+Y?uIT;z2{R}Un1d&0kC&tY#3wgi5#!O)AI{+H{M{g> z@4w3t;(30ekI_LtS({<mI}^0Z&{$QSml^g^T~D?~M6>=41aOEvXjz!04Q*O}zS5h;?;)u)Fc9z6Nsl zZdj*bHpXFq3zr(GEyjgTrm~5b$NUdU&75K*Ey}g^8(W)=GtsgCkihqhid}=-&pL;a+w8rGWCFnD6(_$(gV~BQ4itd!bw5<7jR$0YyRrmKcC&L>`d#6QH|nKd*%_GedR9?x&Ch7H4*il zsDUw5b;6y?-Z*kuI zpD&qFfOSLDM4lBjb5eZENM8eg!u@n>mZe2zYCHB;``b)vBQ4ruM2gz4IF%BTLjWDZ zdxkO4%_vWaRUM?--}ruJW(kQ1CVqp24m{g!AP#NW{Py(E-4&b!EdpGCCg0wlm%q4s zUE02vb*sq-`F>9{!=^g*(aB^y;e|;e)q<#H{(z$bbu`jIK&8i?kr`WmXL^^eU+<11 zEjk!_R$ zNq&DUT#bOXQto(nq@8eoVn~Zong$<2fZER94y9*nhP&2xuJ79+dxZ|EaAyO9u3(-> z-w!b`W+Ri!ds=q9!HJ{G)0^s_Y_;Pw?zR2g&FK3Q)bNa?xATZ09THCQ7TO=yyyE&7 zIE61xn$kxIOXQt+OTxi^E@r$S!fpqs;q1}ezwmMh^&ihcT)p>ygU6)hx5OhYA3S{| zt8!qs0dt*W=?SHE(pE*NKYSrb_g2}D#+x`L9P5QygkGcx)yzm_Lv;kwWg`fpUt;Oa zMP8(ZuHp3;BQ1?SrnX;kMoWcJv0&yR^MfY{0vzK9#Umzx<8SY98ZDgnKa!6vM(8qd zQfvWULrgenWjJ7e!usHyl$0u>N4sck@R022<92gGZkFtJliWm`nyDics$=EUtY>VW zIS)eR`STY05dAKC!#sLU`Fx7yIH1I4(+?vpu*J+>bwb%@U&$z5)zJc-pM zECke*AADqdUd9p9s=}Ro74CauMYZ#AiBPOL?`W8YSpx!pNgC%%QOP|^9<7Zi#9a{M z@h{4dMP za@VHq3sc{D-OGnZ)PUVJ1pPd-UC$BP*9&6J2YxxaoYb8}?N05FUfnjU2i6Ia7J3py z`Nt@O1!ZV|j%4oj(U>!Ne!97b;MO^+3&X)Vcuw13DWKi<)+%7h8rOw&tj1PXtGUCw zCmynhQlxVZoLfIFExQnb8xA^rcFv<^W^?AB=$WKcBO5y|&$VqjC`n|*AA0E1bGnYctRBMw1`UiXph+MVAh)DLc+bt;F-_jbf%P~2@3qO@)C z`%P^%w#I4CdUDSkU1FTOp3J*TTx!AQbt*ZcM3yRq0$?<1ZRmN-Q8M^jx z!svN_c=I5~(T2T1;uhR6dGO|KtQP66D*@tD6ZRkW`%ee1h~YQ8Ut~GM(EVo~uVHo% z4tHZ<&$Ms4dI+W3t0yhAYIZXVB12VgdMXlhCLIT7m{>{Uhx_d4e!eM;uE^(aey4<$ zL!!BgUe^7v_kslux+csyF^BVzJ6jPM@`|&Rf4i8BePywrl*G|yQz zB3-q-y>uFSV7oAk&ps*(AwM)%+~LocT9=N#R_uyoKCMItKEzyinqlXXj#x5Yvb}dF z1j>01j9$br^xHLN5|^TH3`+Au=Mc<)w#?#+(GQN!dW*(M_uOQKa__xwvjea~&|ByGJ`lBL|AhY;D7ykIm?Qcl}&P6^i(OisX}n zWfwE+5e#YXPgI`B}?<&~=XWBg- zq<411i*f)10-d^^>)sGh5CS76i_`Lx^UzgL<)72F(;@~ZvM`UveU~FGJdgDCUu7Pa zN*F^Y1MUP*(ezy5IMg!1Pwu0C@cwM)Mr@q6YZrv-0FFn$$n8CVx-J=_0XIv*JCQn3 zq2xbXxUlg_-DMUyJ)Gb}>=K<^&a{X3^CK=uN{XnA6p4CQ(}KVWi1gL(uA7bAB(5!zw)V5PXO_Gt z1n0ysvc`*=`~$|;;sI>@w{t&F3s;~zb_Bb=#1$}d5+5d?qO8yaDvU8)L(u8221sNU zrY4uNP&u_aNkai6CT$XbN;;1b*f6;n-7=HL_{W|~LY>w=Bbv~)1Uws9C^jVT$v6>q z!AS!!E)s7M^w=)BQ+|~Qpl2`KFG(9heE;IopKq9H*Kn7y5FC+L`+J+z;2uP%{gQnX zm#W9Tf9Udb`03RGhoawe!;t4(0biu_vxtPDJ2cKw(~12W<3$mFH<1#7iUa;c9A1N; zH2Qc9-ihhaDxk5HLq&)fX(?t2{5SmB1VNz*4^V>5q4%$kFZVoo^nAiz-JS2>P6J?G z`w(^1D97z6RI+ua)E7izw$;AdA{;K2n|_Ee`(mvY_xm33-PJ*=y`LOPIpne>z5otvmiu&VY8c_ZSbEsAV1>( zF5IG;l7Xyy2RY3#o+OV_eBq0<)ecvESyUP@(t6$PK!LSNMJ!eOvH4bUl7xTXXPV*CO?-P!TGc}H@Wxiq18TfBaO4S9kt3n(SKfX!=6|(Q~N*O&U!tOupp&O z(as(?*25coiz~PzEjr>9JZ9H25*`Spa)Y2cUrbYM$i!5Vb)i*$$gs%$yZFKu)f!wyn;@Yd9%zPW~x zw*((C2BB0L7Q9W(qi8o>=jga|_2dQrE_SnAq2a_c4xU^VuSUn$7;Dw5Uc#-w-){eu zikxuUv=@)LmjR(+<|3J!MjV;T1tNEtg4ek1sx%5R&|NB-55q@ZX_R znCo@G`Pwrno!zJIo?joeCg!@2tjj=|H|*ZmrU)ZviA-?M?40QkQrXNa5|ardCe9@^g&>Fiy^c*2)?K83 zSKF)~SulICUaEhijbw{rkHYa5pMifj-IV|%^`=x7ap1p>3?N<}4(hTKk%~1E0x7Hx z^aL}C5+fc{w<9fUvL}An!~z|eQ>Vs1U4B~ZtU%3|&3Hq?BYWLj1iB_iEiEq2@QD)8 zS7?S}X!}fFtfDLtD?P<*$wahW>WX83e{6)zh)LrzeUa~tyLiu*b#7x5vq!7!)?GvT zK>cSVV*nI> zxQyOG1d9ii`t&l*elo!#8Ar2k-xhBi71n;F>i`Dl>wYeUIR;a4B%po%tv9)UMWFv1 zd9?u$1Q&=_E3e00*IzL`d~!MHUpU%I{~C73poDyZTzD+bte}3FX*8grNeQCVa#NNs zg24$d-N!;T+v&?>xA@3A_`28{n6Gg@&Er13X5FYHD9*lN!JAHMc z4yZp5qy1J+IO7meh<-74ws*>AIbG zU|-sAoy^v>J&ngTCms|A4pJIBRgV&wMISJO@0EU&gQ2aOY%5$N`hgQ>u`$MGv_i4M4|+O(Lp-){M7Oc_4{t!)HuDsQ8+Oju1t}nHO@Yu#=m>yd_dG`J z0od&lvS~PbZ+TU!60(YJ)$?_2Dx`YJbHIvWIOEQU1Z7}(vl zO0iW^PO{Fc42rTGOF=bqcSmEYo-HcU##z`hZZw5z7n9nJR zNy&t=k9798FVYK-cdUBxP-YNhW16Suo8p>D%47D*fw_F!KC7QUuvJ`R+?g#Rk$JeM<_+ zzZ7bRy!5t_rg83Azc1*;i&OwHA9sF>{VxXweA2K3PZ!%+MN7eTzVEX%O)onmD+ndn z|AM9viS=1OyH{qrQGtp~wPVoF<}e8jf6RHZ#j`j>?fE1`#zYqEt4A-Yt4EAG`NWc? z>VIC;vPT$!#3IVf!-vNl>KbmTy8o!7E|s1#xzAqQEeRGV)JL=x|5pwan1ETQ z-rbSc{q{fd2_=8ieUL5XPc814S%Jx{AID82qBWeS+J`Zt?1%S8G%rl%8b;j1T3>p&Ds|QQ5#zPN5w-g1L9|3;(cBu;OSgl`}b7CBazk1VOhMa}1vvy*bp; zEo7zxsc3)WFPLs`ug#t7G;$9DM#e|tk=i>;ZGYJw_SemTM2mmg1HLQ*IiF)`Zmt5D zD^7W3p|m;Njp&qNy|ygv!Wj@rac7}PEJh0G+B^O}1o@xa6ELLU6a1-o1SVl^Al5cz zz<6Y?WHp+94+S3Aw_PsApC6yZ^mn?G3&K8i8I=BR{5TNq5Ql${4o5{^M)i?gCg7^u3p$>wR(1Mpc@Q#d?4`rVe2{c z{SrN_Ikv{a4e-uO@Zlfi>Bsr`hKL@jOx;sEc%D7d$*I14oPjD39)kR#0o)(MOjIBeJvhgxl)RwqRK)7{NGQHuBYS- zUSp7~QwOjA$y9cRKT-YI@nOU8 z&tq2l1-QW_o7)J|IWEf+1{tDN#R_wSS%?V-<7GzovqF*NQyy7=sG+dj9C|1TOiG50KwVStBnH}D|bEgxRw_SH(Sid`I83m<8(4J3_A9s0G;2}^D-q3mF z)?P(_0_x9GVnEv5`wo!2rx*ZcF%Yey z?w(ED&b>vwB#r?%{u?K*r91_SQZ&Uz{xd?c8u&;-3aT@FE69``f>i0FhzC{=tf{Rb zO(vldK)yU618zA+XCH(|PZX55$FA={gJ;MdtbYWB#4Xs{10^qm7&2AMNQQICGuaZ@ zmDGk@b(=B9ANKI1YAmu_HdJI#p-RJZzCSM7M*4H&DN2ejzRUz6OblGRZHa0QXw1+h z&7j=-XBV#7vxq>iunKQ?^tOsWx^=3qv1W9m)m9jGP-}mMcu{VNUM(7fYwZB)^19l7 zXYX5O4I5iBWi1bsU&?dFx>%&=ikMVm#Uf%TyPp;rE$uhC_+!n2Iv%M4#J1lxQRZ66 z>{Bejt(Iys0mP1qU8YW_`~Kklffgeotg@`m_4NLX>7=VKtTFg@2A)Dj1!)m@MsY-Z$eZ4ZhZg|p_GSS*;8>9 zv9@PqTVWjKhP8&uFo|v3ux}4l{EBAJSs?pA7H_u+BQVPd9uk!pbXGspP~vxP^&)j$ z#ClgrHN{ObPc7P4BEL9R>g7ENeZ*EQ#S$fm9%0Oi#hzTs_{olJN!u%Eca)-vB?WXf z_JqCV%(2Mq%HpCd*A1YpKM_7sFzKD@TsD}2>hjIRpv$;7Lfv>oJ(2tVZ&BCFv1^hC zlzY%Iuj%w)V=vXPgWkH$4e_g-dT+7r_126)Hj3GuR%Kvk?tvTz9 z-rDT{y?sXL+cx@*x-za$p=pGxqH}xTJkVjMhHupJ(z94pdL~tQ&dtF`Nx6s?86GA< ziY?kpS~zWX$fDLsCsrgzt20gA_uP{I=L&M7PP$NFrK&QY#i|G1>sb64g$5T22ged zu?LZE+BGNCIegJ7!@QYY$NbD6DgEc18GB9kvr!%`9#u)Z&;YloO&DEeC|ovHU9VnvT$*8 zY7)U>Ay($+87xeQH6c%IytYRy!=Hmg&EesX9D*s4PDcX0b6GUwJt_wUJ79%c6?i-$$Vqs%_9x4|5HKC0IOwZUkwm z6Uui68&rJx5IerFfL)E7mA&a^c)YedorA^ zldgR5a)0pVv?1_=V?_4DmKNF7U>B~JGjVR@p5x{HA@Eieq%SVLPM~UH9U>Rh7#(NLtYHqyN;Rehyhxk;B2`_NhTU#2fhP9bQ_pSfx&D!C2 z*lGDbQ~O2-jz=sYdvp>{K?A1+P^pdga18!9lCt=AiIDIa7a#y5BdjohAt7iw4+Md} z#Kn`GOJUIz-eJS{8Gf_lSM>CBv7knMDoPbbu6R*8A~9~&QR>eM<>$f|p!T8)FbikP zSY?n%XXmGvm&rLt&havwJYm7bjEBzcxoWm}RE>B~a^V4Xfno4xJodn-NB46&L}%nb zJpS&6ULn!^z@0ozc39oZw`}@{FqhO5C_D{1dK;iSlV_uGiV{+*#d$G{bF9*$@!JM} zys*tRii#CHzCG#5ntS$UOa~v(CvP~|Rrqi~ob(K4VI}%lJSY|^!-=N$$Z)=YD8b3z zxS<%mzGFzBacDB8uEnn81>|&cZolC0AlUmOP?d%Q7T(c4tksE;1eb4!@wmfYQep}} zHuuPK?Bz$u@JF-sUp=0|Ica6ofdw#9@2$6#Vf?hS^emk|lsJS|%YO|&<>_Zk<@rDV z&~|gbAAC5?Zr&!pd({zxNsA4WwQTvn4790C1iPW<8epJ6DETcbB6w!>#6g4`C{4~A z$n;x)*u=fDUzmcHY06&Sk+XD|>ez3`Uzha-ah3{3T2V!FH5CeGwwwZ?q$XY0d32S~ z5DRq3KjNk&H;wBV#|*kVEQUzW8r(nslnHd3cxz=_mx*iI>iSPD>84N0XAPH z${!y}FHKqq>?Xe#A6I^f8nAQqBkaDi718}^Q@QlJ^qkze=IbXjeTJ`#%&2=hO4kPv zN3YO&@3u{tCju|7DI%B5(05QkunH3fegB8*6)=l)(4YIa)Ucv8x>O~3IBMpv$-nm# z)pQa59=JXw_B?;Tr+p7as37ivqCw@PNAmZ)eePR`zSDFf*3<8&7-~1n&dX~ZGF#Lx zNstp>M`)cmqU10{EC3`gs@5|;F#rGRV=vNGg&?Co^5wJl28M#Xt4qiH9_MGqSx)Wl zQm3Aib3bH5!4FjlXb>5m8xfrw=(5>_b@~N`b+G+tWZQyz*%kxV$U{PmE@eV2vxiXg zIa&oHu;PjYL5$rMvuB1fqhsUCkNM?5otBghhNXZrwzj~M12Jmo8srIDX9mENGS|$t zwKztsP$tp}en}&3$Op5i&c0YvlC<#1PF0d4IAS!fsUu7mF?LcGZeKldE^BPFx~(X* zA!yc@Er3~=iMW%@x`YkpH?*$x{^;GWFW6-c{-#xDp#e#AG`Mix9rTEt`0n*G3i4tm@pFnia*eCbB&UNXcP zNK@X~D!1Yfq-nfJ0qzC?QMH6=&>vBIVJ3-}Uo{PW<7ANK`) zPluSyusp)=Da>cYFf9-0c0M@p!)U}XLl-md*KGCnIHi#_Nm!VB~ z0r(y>Fr@er278HrE|wu0!wsc}Zs*ol6PQM~N5~Y0&?#1Cyc_@d;GZ0S75PqC-A)*} zNjGhSeN!;*-MQ)e0=&T<m+vgjqk{o4?iCY)H{82p`Vb)r3XX&7@QUHh9(d=gJ z8KouNDDU4Lc{YZz--6|a?!UkAEs^fzy$_-H94!rq^wIAJnde_ljhJIT6Z6Bl{l|EX zUHjq$RYTJDO-= z6nJMm`D~xOUTJHs;PBBarVBPtl(&R?XstzUHf*3nv~;l_<_aQ?rhEXM9V^yQZT?wMO_BlAS8z8FWsJDu)SZLMrs7W z6CAJ+R+_3@Yiwg->|%gZ-@`&0{739ne8WkRTsN~%G?30F|8m3gz1cp1wVR_9m{byo>vsu9t`5-M0xiE=Z)hPT zc?qifh9}A)w~*|oYq`CmR^yW<7aCS<5GzQ8Tb z%1P|tQ3)OMqB*bDr&RuKxApw31HUNAehS!KY=_1F(i*ti&r*U-gYu0YzrF4D%sZF) zRb)+f(n$;idRS@{Hle7S*c4Ll(NE$?*-!Wu8do)ls#A=zTJw@kRJ)G~Kv5l96 z{6|s4y#X~U9I}kok8h&naiYs7|A};$UYDwL8g2Bvlmay&BdI~^uV%C~sxdx%i$J#e z1p`3Pzw>Ngh-uS&K3cNKq=?%Gwn9wFQxBAhiKF%olAUeg+RBaresZHDqD%i}Z)R;} zLG#LUqz&!+E$X#u@_HpH866=<)FX=PQ$2)OX2|0Yb3kGLoION5{e5^@X^2HG%i9QY zfh=}Y@rDl~7O{(CMZ6iC(Al^L0nWU{$<&>bh&}G-!p&rG18tzS)+zr7zFh<*H0@|^ zHU+YrhlBHM^}0UTww)J!&wu;CNdRv3EQ<^?Mu#u_D=b=?@0sL+g&=D~;K;e5!v;O( z;m~zf%3Rm+^{4K3s)re~VlA4aOf++qY8&n}AV}jA+Q0RF_8*yy)ap?~44IL~$9>N=eq5Wd_)5J0lyr+?a)>2S zKplk)W6f1~{0X0t0fE3nUzkOXP;YaZZUxG0J%%be%urL~s2*F`@wQEg2q?u6w&NOo z(SQ69?!WY82=u-k__PMNbyBJ#+ESdcM3PO0`&)qxvUeLqgKAyi9<9{ZP`lrh5Uq>3 z>t$z)3l9V9P^d=A;-yjr`wZeS>T8SSx<}n|&V z>lav+J;T*Z9-nI4qSPM!4R=bAj2r0I{?~g}5ql6qLB$p5SxKqmL>A6NutF)h9dH|X zNopMSKzVTgln8`#_z$;shpDD`OF~vSLjBJ$2&5>xy#aAHHUonp-^!dybD>7lPMfK`$!%e%@!L|Pen)f7=PnU%2PaysfrYoSwp4K>PF;({83HKv zNa-K34hF;>gwVN=|NgdLa^6+7eeFIuDKbSfEk&L=R*z1F7ml}}_FodDLi?~S5daXWv5wmIp(b{9)mg}rzss~+85Hbi9P>HN6-0)cBV@@!jmG-rVjOV?FG;&Nhkjde4 z!V279ly1Lv8zx|yU9vlH7Kk`og{pi`tO(9G6 zo1C8|bXYy1)MS^yi+(u?`Y)K7qM2Mu>j*GX=ysBKvLzROE+i@hjTLT&)L~u~f_*pl zVL7rAq%foOkx|1{n?pAmfk@HNd9oO{#Wm+rqC@Gby#x!>uL(I7dq#L46@|TF^{2TU z_nOO`$Q1n|P>Ogr8R{#Wo}08ZY{D=NRv&t&r6BMhZ4pwTg+4n8LhFP+0Xjm;JD|EC zcZK{5@baJk7|}^y-j6Yu9N{jGMIuG~faGt1;Hugg@7KL1VBNy^k-WhHuICB=tcye6 z_{IAw*Z0@o@dE#|?SEI-eqif!>}x2{bwGbisF8348zO zlBq;|{Q-g@Dd^JFyckiHM$j8FJ7uI7&4`e+Jf%D4^`+` zb|s~RY8S9Zs;;xN&qqt+L(%Nir^>KL|ENc+o14x~eZq2M^!QCc**|67?ftm_tr06t zzWrF_%ozP+s2&9Y0Pm;Z-TxcYnx0cbCrC&5#K}G-J2aO6X;e2{I%zGos>(rDr+V6J z)q$x!T1c+TF}R+8aF5~A4(KGV|o+1idCxb*nvNJ^c6L$97wjr-iN zuvffT^y)gX&T6NJZ>=g2*1z7Ky3;=57*d9P`A zRB1U^F7Qslu#yR|9jP6F4=b7$t4@3(W@#Tq zIOhYr>O%b50(yT?rlK3gcAx|_#0rYipcdOY{ikhy8IS)`(IRI zikow1b;A$&i`0efiQ&?dsgdgWi4Dv^G&xl{a=M1Mtbcr%apVm3NfMf-moYvHn1#1N zQ93Y^hxHTz>=@r%b6KwM&v41TuBLwZ1+)rbg4Zj!3xHh%+(!r2Gl52Mg_7r z@q-VQBKbS<41&4>)YsB*|EaAqAKn8E@btI4c7OeoOa<}^w&5ZFqQESKgh$xz3rxC0 zvn3@1=U8LYIV^B(@p+TX^5YUoC-P1RpTf)AnSif&3&|Flu_CET(d7x4;4GE_m4QE9 zDI(@Fv1O*ag+m4<@}fa}n5nvsQ zq$sYQhjsm`CDDL|PT&*AG$m&QMrVwVREKg`bv~a_z^-Ho$XKE&(DIRxm+mn!_>nig zd~_<#*V1jH|EyGYO(QHQ>II8ylO8`}f!jy-?un6#b3fDvFB8>cmw?B2MEahocXW9f z(so=|=^Wq$|E2do`PmtOBy}8&D6{WiP0E;kD0JffO zaM7R{BcSN{Pvqr?Lyf+TkkZA-iVB>k56bh+Sk*qL&9QRijL6;ToIaGjTZ(@an7b>Y zaz0hUy893GH*f)uwcp-n>KW&Az}3i98IK)hGm5S_Pi)TPfZnn$dfQQK;EAWsUP5hScgU^Ny!3Kn52WH6+ znkHEW)s6-UUPm_<@odz7A{`h_CEdUsWmM~~%uBFCt5k>0O@7*N&w*?fTi{>fX^ zLbVyQj!a}e)j_~Hr1ZfR{G+#bOmw<^8O{Aa((tmEJo4?H2O#V`XvQwzg6pRiCOynk zc=jGM34W46`~4agjF1ValtzFd&3-b9S>vw4mSC8FJbo%z?@!}Jh^BcutVe8VV6oPN zzDtz!7qOd2m2I%CuO+&fSxz znU#A)_2Zt5+a3ohl4?tt%6Zcn5g1aKhL&(qN<0u=MKj7L846$%exok*uyrwO1r5wJ zS3qO>6!44`?Gsa0LLr#uw4c3*)JJKJ`*%J>kydL#TT|25SY0Q3c5^P)VNp$2EX^+y zGGh2N4Q39^TUoUNgSM`Oi0Z-Qh-Q;C+HM79l?_#+8`H~Uc#@!TSh0?c{e@t=Z`_=_ z8EJ_P%5F6?2ry66q`^m8;p?RObaDdxse_PI%gyzDf|`Ck9o>VNpo+v^{pM zarlzIkU}=G+ndbTx)#D1@f`$}0sai2b_zq1u3i_Tyzq)?*Fy?Yc=TsjzJ`_OhG=%=Qw=NT=t1il-#b_(HfPk0s8LgrBXfxPUO8e|5qou$86F;7 z6&=sVA%SC|lA17CTj4LQ1BQH358aVXJGU(S8d*^`3%3^Z+<}N%-m{VkieHgMwNj0p z%9(nf*dnNKJ6mR)NlN%kFdVcvJT~vUY16I*Y&iK*X1@OV?yeM7o3hB%UUG+Bnw7{* zm!bX-RaiM5mDHSJ+(`yS5AR=b5zP`5jeJdiK|HESi$6^mc^=F{<-|OwcN(W zZwNkc`I1{;tOiuO9Pef$!Oq*conByKlCqdpF}-pEau@UujY)%@4C2T@LEuvXITt?Q zSe>ONSxro$mY8Nt!B*2Nb1--^XFg?y-j9LqFtb+Cfh*w?%`Pn|NT%KFVu5}Vmu%69 zLzcYC`w8ovBiZ?{(gbl`L0yjNoUlg10(IfCkeHw{%4b#;c%2%?H~w$#WsKx4GWKrL z;tJDQy70;n;xjCAUDWRFBaOY^V%r!%k>RY`@^>`xdeojp(-xC>4jRZlv9)P=-cck5 zlR3={n%jjs;s3-eqeM@m)I$YN_2`30s5#na8t)r0q!exklOmFbY0Yi5W--&J6q0>l zR+6{fLYrwy<5d%^-gL27t;RRRRo^E*pBxk{IiaXDu13l zz|28DU#7P-Xh0Ay%W^-sq8|t>dLipeLW+*uBJe*10D@RChaf#c zTH25CaOV~xJ0#(1y$I;Ov$`N*Stu;Y5Pae$=R9GerbRcxr7e*0?B`baB0ItYKlHON*PI76ghtr4PB zrz}cR@}<+ zKf0@A*{{QnVX}`mI25}cA%mCEZWG@Lv!X~7Nu`gpIob1}_D})8`W@N#GOn($zOMUIs4AVXnVkJ@S zSke};+DK_gm5A9VS;K_|?x}+z1_oli!=y_-ZuXa-CBMnw<%`{Cky;P#^7p2*nbkq? z2iB7lhmvqP#40_6>UTge*YI$yP!Lqe#Pn_>hwCjX2axn|)~HDl<}z`P+VE4&?`abl zbK1`4$79s&#*Heg5r~MnMW9+aNEe(qRQ*=V$d#SbzXZEz1-WvCl()q; zoCTt^aDS@$cNyN_7T+hMzk3mdr_bP8S*NF@51xXX(2dVaw9M^&E~i2;s2o3DWLFQCO)i~AqjU-fYB=XQ5_@`(1a2ggE; z+>6{(>?fcP=fB?{xlSdd8J7A@FI{0`AT_g`CO>0twFIpCuEw4`8+1GgoP-#-|D-gT zbx!Zip2XZ#(+}KakneDIXOYI5I0PS=F37A{yFR5*ihzD+KSg#6FYDANG|yjDx|bx+ zi2)*@Z+?&)Fi5YW%E1z9NlpfK({TA0g3baj7mD)po11X|EQ-LnD-UC_G*$wb&zu0^ zo_0tIK)nJAFvFtog0<*rsp%a5E*<=5%v*=lBA3lK!V{=Vl~s|RKFW*g@O4fBov18N zN(M6_Nh9|dIWQhqYMsxZDD$_tDRCO?{Y~<~sEZd1XXuVpZ#LRko=)r3|H8fR)LFCo z7!y2|E7~)y+Dnxh%`J|ffoe_^FCd7OH!28KH7G*-j_N!C|s7 z^I06D)6C-MC%ONc8I#*@1b24>tg}CWK%1y=Pj@4iT{`DXwmP9-{+d!I2C}f=N20m> zc)FCT0p1mv3PD^3je&Q7B9X%deaYj?ZxMz>c|OdbR!;aByq<9xw16Ru9i9R?66$Xg zqEudYh1L-Z6g{%zR0z)d9pjTAfIwKRPAzGy>#dYsYb5e>t;#>RaxW^%F&Zf%F?D%T zv%LQHWSJlnlzmBx(xa{N)1Diha;V0j8w?qR$tb=;DG$2GbD5dIpyU0>AaCE8 zHUYFK!Gs!~8=eYGgC>vGDytqvY}TV+DCgXA7lvyQPZKU41j3tu8rKE{FXQdNq?jMf zB=E<0$~lvhT4MyNk@=vz0NN6|)2Rn6 zfXNs|PzJAAUs3F7xQ>fU?s&B6+YvR<;%3-<5gs1Z(cV#W(b3LpIE`;1PMwG+-dd!b zH9z;>YGa+g`+Bgw{Ej#uh?x`Adl35{6#m_?^y{(ITsuPvl^tL@RY7wf!Gp6*tJ}jD zr#M=WH;{;h3z2}2{`0_C4L@fXy9=9T!4UE;l627&IjR%l??-fDs)Fk&|5+RkU-u(@ z^nV#X33(3LSS|A5R7U$teQSn?NcDAK9|P%U3c_!;9zp0XjLRBD6w^BEx#cnL%YHI6 z-PQcho)eRjb03y}6_VtIkxJUq|I;h4R;J2edVpmsA!z;CU7M%Vqu|YNaV2SKS9q)G zp<_I4tHddBj+*Qgu_EJJRT0hZU|6}W(s}gMb~K-4-Rn-^JJ#S%psyp_PlUG)$FOh{ zMm+2wl)N%cF&8oaDGTvY9Xn*Gre=`v9<~S-J1$fW3%GT``)tc3clg}i-dl$)_H61a zF=ugTX9@>p(1celm{ zx;QU|zgu2b^lhRZFIIouxk26l`_2D(II8SsOM*Q;j8v+WM9 z>Xj#oDM@TqW(=9|7KKhxdVh=xVLB=c#_t||Sqd|kz2;C9OED+3cR6L20><~&fvzr>jbQ$@MbLUHA4npU~NJ7e|8|0_z zAiej^xVq?sTZU9&?US^|^U)B=e*iAQ!Hf*fj1mDa);=2FivP%R*ypH;=7De`f8$Y! zh1W(W%0*suTyFeDT_YFpeF}Dmav$%xJdn%vbAVe`3)r{O{!8rD+UxqwRFhwaMr!_e zJ2rlu{htbU9c_6FX~{oYO@>b%yDJP&vJ;@RtI~PZNOXr#M0Hui#2mC7pM0S4h@W6! z7Kdl*Uv-DTXsESp{yrBY35yO6mG8tXXL2*cs^htj*LL@h_8OhZPATk%1PK_cj!%dh z53!#ZRA0=!T;S|I4rbA)$3wp1w*qgllcQ>kA@E@GB@lOpQQi-Kr_m>lGA=E4;;(vg{Ob5?hc9y}a%#$(DoPekCzTM{PM%)j z6@gtb?E5@aJ@m^9@gn?n(Ws4FvvRwoPQ|KKEf~RqfJIa^VR3;B0(5y4C`4;L9&}W; zcm#WDOD)q^rPpPwoyD)ba$moocQ~S@)5G_O#kw^UxKNa;8q}sEx?rNm70NEufO0Znz6T*^d}`jU zZ;Q4W68e89nhx#dfC|Ace7ixgekSCNg@H5I%V(aJ#-B7is{+kvqDxi0u|k5g)tk*( z3Gw$jsfJjCHc7XtM@xN6*D8^zAUExVp~pX|n=25H*1%+9 z+9e-(e5bS_c7>Qw*B-GAge_h1zRegRftX=O9HY`Z#oM$|pz&e`MC!X368fS@B0yJ! z%=b+AKnxsQ^Cte?#s@==GJ^lQC6jwW^S*626Kv<-LlSOkXG}-z9Lc(8Ef{$eS$C9D zE_ODu^M7Fg_G#N{(NM^?E2|fI_WQC$l|ez>nA?_PmI=>6Xy7cupbT=`!`ZM!mKm$q zMX$Y{fW0AL596_u92XXQT`s)g3v}jPgx^j&d4Iw$?q5;O+!D1)R+qBjLeV82F7y2l zJ9T(=BK{^*ee%cNJi$O1i)$(A<E z4^J)kK&0-r-~3)lQl3r{t)y6yG@joq5T_(v(C*ycw2E?rjVe zOxgi7;l=ae$$!6p;Z<*T^;ad@seLPW4sM2vrElqx?)#dWa$UPb&X2nC@+J+2aO`P| zjyzrPby4@h8;Oi%>Q1b~3U^;30%F6-9&Rpu=0kl>CupsZZbFox35~kC&F1Q%|Csn9 z+8IrYhpqaGnWDyst0#+MqWLuMPfc0ZJud+)0b?xBmU&GFkfw;(%-lUQmOCtR=u%qf zV_Uq!h)yREjYrydLX|;FDGyb~o{5X3o1EUR!wHl_S$(oN5#z~182&ywNdbAZ{X%&@ z$ls4F=vStSTF`h@5FUhNfw!fJlbGKq&GwmVMS88+oqTP4HKV4%y@QD7w5IvuyaVV9 zr9}aBCT`9tb-3`mtYSFEQ>4zhYSDJjLMjJ=$YEj zzDk2~{-mkX>LWNM(VvEPsB&7^dkyfYOyP+V;ktr5{k!3qneik1`w1R#YnPAxjU%xi z1JA{}7|LvLb@_}e$MQEz}zmP~x1k%cD(RR~Xn*H}hKXUTp}p#o|H9Xk#V zIBY;7UAMfm5cZ#H%UBNWWoUG|nG9N%S8gRJBvfL^I^HeeMLjY*?)@PyPB!)0;w~Ur znWK4i82=cp74N$n;=>&G7wx64Hn^wgC?atjLOJG0grxb-hp}T3h>!motM~Wu1CeIo zrmvZG?=^&xg&FZ{yh1q4IY5n!lTf8C81e>LS@f`7siw93r{HEUSQ0yd+K#F$GN4zx zV@2kGL5$;IyW1;zN#VB%z3#hkkum?>zq;kVCz`unBwLix^QJIjM~i(Ulg>#Sl%nFiS7vtUEHQt(0w>U~c>+ z$4HK)Q5s2yCw;Ix0bo8^g?Ud-S5tNnG9!GSbLTCRGx6xpOL3*IXO69gurLf;8VQd5 zA8Ov!&CnEBg9j;;LsIy`(*>~v>v>d(gyYY`5^SwoJmxZKG>(6Ab{BeB>x>mk(U1lM zdn1_Pdcuxqhwq9sq%(65Mk1c+4Gyg(bO>EekmF#H>pKPxOu|tA$2#)fFZ8-8<0NIT z|3y7OI-xXKopfX-RhFP6?ee#v&H-)=rP?atO|6c{X`!+fO`5Mw_Gfj^LTe6*DQA_2 z5VeMM*7doPE8Mo}%qjM~i5f3sesi-kK8LL~$54n|YLfmkoep!nSB`k9g0c8KSc;2B zD{mzFYy*&fwd5A9@L(biuj9sLO!3B!2->^uZKXlNI?Ljuny^^}S60bJ zr}7JwzvBAXhIPz4(kJQccqp&#flQnWaAsGQZf@Sc!FiQ!h3%el2-<9sl?gx&V{fK= z3d=jfqy_tN*~4WW|Km2eIIo_{SQ2lvlxIzmih9W0@{~^+f23!h7MFjY z>}hAxzy9NWMkf64F+6Rw^g4WuhpWS?_=`tiS3fkbcfhV>@@;^He7%pPUdSY z_SgRsceq=IKK$jyYiP((7uJ=m^1m!Ik@}5Hj~`14lH~86{5@wdUort=B7gdj001j@ zhB0hB+5wTIG}8w>E15{H7q5(ygzDAyg^*P8^Xxj+^0AQa6mLjy>63@U6fX1N@5L?n z_Dc2#W~|$Q4BDWa+niyV%+D7Ya%M&7fs$>OsEpcLLQE#qfjUR!Q#Jh%kGg7|78x{4 zOK*6$^l*Td`+Q@D9DV(8c5!bJ*6&S94uW~~DipL0D2saQA6u5r3rp`pj~6E^ z&X+sL!|c-dvf{`HX?PBijj)X&ZF8&nGS#i_{qBMD6UC6AUB;5R9svL*l}^V=hK+Fv zDQO-iq^I;kVZrj;nqM8``kL(fM}PFrqNFNE^6F?bBw-27N?OvgW#nZmFVmO5NGp!x zj`Ehb`tSd(2cc~)aPsMmIW`{;)iD%*+5V=m9E&?F`4hUb`F?|2PfDze``JpsX%Y)7 zA+$dU-}18Fl+eVq9~tOqZX{0F8ZU9KVyKG_oic7e~elU-9+|IJ6-ZOZjs#ZuF?t{?byqjR4N~UT|Q;3MQ|cKKrAa zfGbDOM>(AK4iHI-k27PsW@E%t=0-SwBbR3QGJkGUZKZ_{jV@i#v&V2| zhmS)e2r;N|UC2eY(ZW}%_$zmLLt>OM?7 zT(rH<#!-%edROy{Efl4K)JtDB7JN_6QtsTm{MF0I_NtfbzkC^^WvJKEewhR(>xiL= ztJlrb13u8BYxp{m*OqC0U*4SxWn~`2wQ9pfb){sUD6=}dOjj-Wrb?OmcNp$OJ9240 za&@SprnrR$PC!=0f9_j=M~-m(SiVYHoJG0%wJ$?sha_maZE4#MuaG;oEW(Gg-A8i< zt`&ug_6Jtjf)J^SY(j<~S{^wRDISOMyV!Sn0CQnFy+ppTI8>^bgv*wzBuaBU1`Z#_ zk1-h<&p;~9gM?S5RpmFxgPIT~sLhoVX(gzWEs1o#S}9oODNUO`8n)19QcqZoDrhF5 zScE6a!=vFqQ~xB{p0Ch&Nd|4sxELg}ZoOC5vZK*tQi3iQiG;TG$l+ZL(lj^^@dp|WP9j~f*oxA-!2pxmn+Y;D2Qpo1`*H;JssHiHDY+c+6 z;p^5`u~Qx{mlL!<#M*UmcB9mf4+{ed@#p6Y=0Tiq;=&)c&J{Xtl}$wSWm7|b6egBv zS*8ZV2DS$MU>0&GUes4d_FJRnSd!Yi11|i(=taWyfj5XPhMT?ra4fi5pj;6 z#wNgb;NmRyCnh&s1nkRcY7uZN7t0OzZCAb zc4l`8nDu$a(KluAi<=cwZ@ni1s9Bi*CX0MR!?o@YN#evLDY)fZ^AX^b#gXN3wdIwY zsq=iZIy@`g9)g{twU|C#7{uS=SJ6AD=W*lygdDVDmEWlXryhP#kxKh%=n{@z0*y}c>9k6 zIX%5&%w`J>3~6H#7m@TK-tgGk^15Yy)pY@x*=-N@9csT3YQ0Zss^=E=?DhX~bQW$+z3(3<2V8I= zF<|uA#%LJbNR94pM~9TO2#jWQHz=Lb4T7|EcS?wo3P`Bv=eO_gPdL~0ob#Ofe#fiF zqf+?}QKE`%KkDJpavvtu8Fw%>lSU_X4^0alsI0%jbt|KEl&RvoY*awT`?FR}++Y4CZ{_T(%s^om;kL%vd2KBIg1jTWV1yZIG6>J%N%eNdXz#wuu7XD#vV zQ_Xr-r7P8MCN^(=VXm&#c;j^Pb$lmo3ri7?!Fx%hvSQgq<#F_hA$j8QQHm&r)u>H} ziLLUWQY+p!-#U~whg-4USpOx0n&#;`;SC+Fvhl!Uf;=hU^toif0D2=i(x0z^yjHsC z2+9|+EEu8EwocuhKWdiRCjh`Qf;}qPu*~A*8+)@-U(h^!5%iZge!5d)kY-V;CD~!g zlhsLc@W;ya>(PPIy0ZM9SUWY*mmDrcw+9fIZ8CPbS-4wU*XMd(;Kh7&g z!M+qHcq|+b0a%UE7K>gsjpL?5em#PToyzaGhoqnl1a8yplF+Jvfc#iKLPWk{?fXe> zYn;u&{Pp&vBsRuPD8e>nVhuL;ofaik`XwcYfpF>^CZ@*enE{MKZevbFsJ<|Mhv4uQ zlTLf*NC_#%l1VNG8Wy=G)Ip&=$_?C^5<(_E4o-bC4lQW6`1)82$JtGHyPlvT>_w1E zq*d&y1gxZj$7DJ4K6krCjB6h6rxjnVqYgoJ4oxH1l$%9fI?=3=Ek9=n$zjo6!LDve zeS5{*5-G7`YQuUf}noHIJJkZ6^9PabZ@w z(RrHC#nG?qmvjXP3Rf%v&b7!s(vF6sqWE(FLwVBYR=an}*|#g3!Dl{lNsJ$6cqOJx zi_JaKedm%`5D^X@CSuh>&l2+&^^rY#UmcWqb`SE2)!Tyi3uo=Ac3x0-C`(y{P<1FU z(4&_|uRZkcd8m8Gq^WYaF0X|wJ}6>bFeYk$fVQ4T|&y z;lF3SpzxDVTm1`4`YFJ%24gHrHMxY(xrjVZi#-Z2aL+P_ z!lUOhl9y-C(x&@D&LbO7G`X<+X@Sbmrg5PU9KwcWK%gxJnP!QDMI@Op73H8)|GL(+ z>gBSkwySF$VGW#uX|y#DGR(!sJQR=(zuT~IvC6jE0dyV?2?Urw1_=NXgb7< zw9P8aS&Z!o4`<3|y7xr!$FgoswC`%&trw<;Hfb%m#Hm%&4o*gl+G0IHuPP<$?HdST zD6zv}R_L1i;xefg{U(`L`6TeD=+zzqO8zq_T;qMF z2J^AD;uOkUsmhH7oSz9KA0yc?jb9V`o!eMwT^IT|cyi>;Mu5iin=GQ(Siy}ZESVRR z|20V+?Oh$nMJ3IpE-^ng!@gI^u2#0hh2Q`b8Z!uYOjB#-sI`z+B9+~aYeY!&KJNr< zNwi#fP%C%3dx!L^3ohv0~>Jla*!#1Q03V1#2!wgS%rxbc5llz;SnFLow!sWebAuijjR9BLON0?%^} zb#CW`7W{~>RM1fq$}`e%sM0KpcAKK&i-&xYFC)`7w|weNnjws8$?KR}J2hf9Yr>~X zaVyH?Gog0lA$#^c%h1D^D~L&r9flR44|Cn6)gtss(T8F-7?$)nOpEf0F-4*pS1AzX zQ)*bUAZ%HhqLmbtg6mMYHdIGX4#UN|uqdqx^1pc?s2GUzo*8FLvW2T8AG{OwC9?t{ z#FFi?l|bFnk=61Oc1$%!oZAHrN|dN#4mnF+?0zhI6;`f4`f9hRmAY4oQYqqdZ&_vM zUT-2gQr z|1Gd0UGpFAzm&5bt~u8%J2Hl>IiDgoUhgXSU4#B`J}lo9)kc))$@z2SB=V!U(djSE zanlwHq^f=^%19KnRH>HPFx_BvbH)ZJ+>NsoK;myj@;Mjpz}-x^g%^PLXINFOI=r?WJ1BCtjJdlsE!FJ?6DhT# zi6B$bD&ho3xIUye$FWg;nVIj~iMarrTWL|`nsLqn zJH1CabG`LF)5E)I3?c9qY7$cNiMgCOAX(*rN72)V+a}09A_ymPvR41F{)11eN4)V>g zDCP+SF)(+Mr%l_@g74&NUB^1NcmYU3*+%o2ax(aRz+0Ny2mSXzR_@`tP}@!(b+VYE zYLAuHvC{Jg@=kIAGb7k@Vk*UWE^Z;{ot;5USt`C|iiG7O1^(MW*lFF3gnNyleq`1X z)~#S{ENUEd-X!hC5^&n9D|0*3=$-*kPMg(+wb+CtTAz$>AMD96F$$f{1gwn<^;VKu z`wg{!)QVz4&tB~Ym}3J%Hl}Gw(5>lWQzj&c$ZIDf=H?MXAeo#tdUXA1tN$*R? zo@lx;EJ)OFA%!QdXHwLkJyS1mZBFJqGT*xx;ldyLWWwee<7oF+_NHb?@Q9aW*zWyM zo|@F*)b^ed6fSC|?UoK3j}@;jzdsOd^$ONF$08}w!6J)`>6Z~Iq=^)0XUi%#_Gxl$ zYV}$F4^ppKFz!8Og4`zbYEwsM$477nh@tY(d#O>St~jOj(G?>9#Xr|7146kDX(~AQsAJre6_h z19^uo8)myCzzH8B>lF0H8GHECX*OJ2s~>><<(hpFprw(VkZbPvj-|sb6Yyhc$0)4K zlRxp#2_hCK@>aEDV-3rUwZcTszatv!*@@Z>K$ ztQYC0TcE^eN3SN*pF*q4RsJp~U)uN+cT3dKl326z5?PrukfL8&(&ncma`FIB8t#+V z)!t#waG4rcIYLiQzOD9S`Q5%gRgn&8t+vh=*cd@S?gsP>aN2)$V<@GR43AVL7y62b zRjRO@G3k7(w<_ZHAq$kfqD`&?4M$P7sjVFf#WSKi z6=@$_@s~(rV9M zu`*`ye2+xg%Ct1eOq*es!sjQYIo`K|Vtm(~V$&69yD-m|e^FEUk>h^4QX0L+>58=E z_6@rI&KdoOM;HvhpR6nL3R$zYrHeN8!$|346RyEa^PKS)ygiCWY*BwjsN_Kkv`BsF z7*;L%o#L-oe@vaEWwq4?+Ol7GzjY&3RTbc2cLe>OSq@Ezp_iQAIGG}l8b+TvjX5pI z-n#^;J|FhXTrT&QS>x~PzE8qN^oytDW1{b+9Z{pnL;kC=ejMJzy(=#nveBb?8{>DQ z{I=>=ycwKvYNAj$-%87Lzx3!1qwQUitu1B6s?bCT#RZ+!**1lAB^GXCDELwg#0cKB z-SDV_n?VRpJB6j#XL!d4{%Y(^o8@uVeTo(2`c9tc*pZ{awW4J3ratr}iu~M|YNH&J z15-s-}Zk??vPA!4iR`JLOCZ8 z*mAK^?lv;nvpZ@98plvl;`}wieAC|Jz2%P2bti5l8%Au!Q+ zJg^M1l4vy}M*KUe_3_0q%$E}b-V9pZBrZPBz_U+aRNXIVVl__9*P@$2rSP@UlnmSVuGyb>C0dH^I5yS06 zP0{y^ThI~+Q%;Y5O$bZQGSa<1W9CgFW&=EH8_Z%n3!*q@p%2T~3a@w`sDe4d>l`)A zOM$COB|=z~9gV5l5iV6(;J=07ag<^Y14FhL@(m9d%7<1bNU8U~@E(L_6TLu3jeM#K z&I6P$9`%>PF6e@wcP-#@4TN?P&M?nYHu2qggH?UQdEMPt{c@F!EhyZ8grS08>nEv$ zdyB>Nxz+2$0($j7VVAN0q`S|L&T0t(>c7+f3|=wJ7FXEVUMkhl#kdP$&2*%#gQF8M zP#4vD7WB~H_dd&6XAAyb`YfJBXFkvAimM;fUR+b`n!S)_Q$>&ZSgvldRS;$AmsXru zBZlsy$A9<~L*b??qf?PKb2cq+KlY>IG0ngCp$i{#TeaN^B9 zGt2UE0p#lFC_bjS4c+wf?WXM5cJP!kAMLhO3!#9aiKteUahf5chio4mqfmce#hceHsF?l+ce8@`ch zL7UDxu2!<_Htab&ZR_Q1ioI8@YHZ`S_~W+zg1qsi2vx?GQw4TZfV%aIuIaztg=`sQ zr?(e>wJ}N-tQ1*-7+>{vVgWI;*&*we9z9~48cO&E1zTDh(?&+i>;65Sty_W#291`j z(PJI)1xsJnnhgE3YsLP-@4i1im@z*Lq0=B(bc!44leJF;kqXS^uN57cx(bF1=&Evj z+lIkj$5D6lZ`)TlAG}jvU*5fAow9FneG3ZH6~$S2uZ$Mx{5jdFluI;SYgtFiR;Q+3 zM~&1=XaNf*t>(j>V&V0D?-R{IjL4drn382WE-iUdq}FF#6jlh1srtsHr?`LyrDX}MrbyS&R<11T;@p2WBDItTbhGbZQ z*0y=qTklR{&dcl+c96u`_zYv%aU8Q~P&N3Eoz7*$K>f$bC+pLS5LLpjmF||2O7o)}iyt^S1|6gx+h!l|YSa=z^QQ@Hb-W zYP{@CIIt5&S((X{d`V{d8?qagZW_4S7Fg5Akme z5-pMG8Q{gBhyS@0S6_Z?5}wWh%<9P0O=_J?3Pj8eU{9zGi!PS6>Hr(Tv2Zae0(sI^ zOi#7s*_|;-2H(AJ`za)*FwaNWb3Xs6vhCabHFK!lC0;kt2l36ZQz+k^7jp|6&;!4h zP$u*bvTfYa?XpgOi?#0o*Dkj|ixr;`55r#So->Jl0p-idzRi+vN7dLyC{k**S{s+J zhEG#R5@IhU|JpJw$XTwDvD2j)e5M5|sB!(?l@|)npp_3ga8@YU?w&;&x|*aj0E-q< z8I#y(FSw*HB4gBX-8n#3JpkC(5YB?;M7QYW?RzQ=->*hWnMZ=23tV%X3U@qh!>u6mUFQx!T z%$DRVh?ar{bkMMSjOZza z0*#Asp1}7w<80lLWWU-|y;rDlqKPo^GDieV$sae|9jmZA%Ue^G$C0F2FXgU$(5#2X zRkd)2v}#-NHIhYHSncaP6duZHzE@suO{^%F8Ij3uZqQXRcCyuqjc5fByxaf=VZazN zC|nB2Rhr%7qA(Xe@(d)bU+nLUwj-nn&ZF+TS=V05)hCZ18y>_ZGdVL9bmCg=p}Dk$ z)8L#nH!c+A6TN;l{*cEsL$GBpW~pTOjQ#dWLbY$})73LPl-0yfFF(!+sm?r(57RWS zWUyjlSfj6Zlpdc+gK4Ifk0fOfh>N+DjW89btRjM(kom2cbw*tS;DWjjZIA?}`KiK2 zozKyIONxS)MEPPJf(ebllcuM_;A1h?(WR06Lg~H?-n1Jq6bf(1*>cNX>pSW{Xb?&& zNxP%4NTNstL*v^#+oAN>cqd-v>`~=7|FRz7psxNaA^t18(AR+6kfy zh0=ncStYJnOCefnt;c8#_9G!Aky&ig41&#myZ|xIf?Nnc zAgf!@wd&hrh!r;sY7ZzNH!IYjENmf5fu#LmwrBiAo%+RykbR2FE*W3XHe=Jr3K@G+ zVQW!lvEJkUG8n!n6La`FXox(C@Wd@(yHatEvb&mISW=Eo4}C6^_;a8(N_j^>=eE}* za>qU75#TLFa9i$8DS_X33pJ-&MOw#3hUg^USS?yV7kLcaldCj3wRg1l$J1mlj3o>a zZ%>Ix#jRk25}@*t9;C1gaAY|sAx;Kl-yF;+9DRu&2@$MK^CJWcIw2XDi$OJr*Hk1B z1*$0GjY1{#+jA9$smKYwD3nn9!WcnateIFFb&Yyi-}M@=V>AGH6<`$BK%wAy86;&jm-2YWY74l_- z#$$hkU&+T2?3t?i5RY}9Y?T--nTS|zZP&UuX>ga-162rQwFcALC8{SowLw~7+F^lV z8XOa_JaQO}MOrS%Oz)}1`YUK5GNSb=s$|X*Yu-@ND`%A$zArx>Y(Ktk3oyZA0;~zXJk0>3uCRe^ zrHn8wWbH6LystBN^CfL(89!%|sC zX;bu`Uf2IR*5ywmjuDkT3(*X*7E=v$++P08W#-J(9+0*mCCR50+;QtmUC^zd*F!@V za)VXHN-poOjZifStd9N&^QHVPNu35$SpMX`>@xZDAD^Ah7(Fk^_NaV#b^l&Tye-jc z-TI59Bh*u$^UH9~JT#a2k7$Vqy%u&or51mFN5~!fAsOSMEU&vosjpKLpMFUdZgLF7 zqcr$DNG*tLc(xGdO6sZ?I=J)`L=$&Bk%x_^-H1smOipmvPRGx3e%S~$3wmN}k?NCM zIo%_WdEQK6*UzC_Rh^oMqoSZ-LKVmyM|UPDxt+_i4^Pfn|4U?g)0~cnW}_m&lZmVY ztM5A3nLh+>svkYKX&pyNl}&$Wt^(@YK3&sA%1GYw$yr(+z`5ECBDIJoC{ZOPzhn$P z6LEFuq~+pI#Mx%a{V0nF)F@Kf`1$i7`+&udnY2Vay_fUQ=&q!&lKphzDMIQS?T}$@ zEz4@_+%jDLNEUp=0I9e~zl*VIIx1gQY@TVci@}!T^3fUl{WGCswf53X<=5zWGuO{- zlWgeM6j?EUqtBN}lEdJX1W8_~Jg%om^1sL|Xf1f~q}}Vw2=m__U~b&SS=v!=qbA-~ zb8yg3uYtF2W%?J1q+77~>a~j`saxwUtB@n01`5LZl%?&3$1YZAQA^tzO0^Ddk?C&A zqYQ@hstg`Ql?{_+h1HrRDBnWW4wWUyV;fIUn!tN%R?upzr)H~fy93#!5qa<7Gh{(7 z%sI|R$hXH{vFvJ3{3$x0c2Dp_L2_^2Q3YU=s1m1qb}(5slX_cz4`Ez3GzP#7NrIO$ zx_DLiDthe%Eep`&UpaT)7yMccriV0`eN$x5I1IyVI}OO`N(9**bGj3nA7V?)Ad@uUCsw&_ zY(m*#+ci7Cy|Q9iZQA&ISLV+cwK*I2zJ_IU*On?n>{`RKbGE08`y~&%N7=I2^~*w) z7PnsGHFSXow^662*nOL5RedELCmDbbhmA%>?&$Nz0ucy|e;;Kpp(ZZT^W%K>ub`p( zImY(;DJx6ukrxlx1;@c4)PJiANJ9*R0XT+7fGx1B2HYd(8z=*e3dR%(jH!A_!}HZsZ=Y zngOqjD~s%(w4)YYOsi5RZp2h6LInX-(WbGR?U*(G=62(jWL{`;Qs>O2SWvL&VW_ds z(`ljUab(!LXjOM=I?ZDZ5bq+lvYvGfXww8vc4Eu@VJhzbyf=t}iX|t4syLCIkrwP| z7~X{dCBEH)LuigrgbVL@_!Rq{F)CcqA?#b3l|ZnM37bJe74m)B8e`ciP!>>yOMKn` zTNDv_^;4E|C%=I8tt($+O_<>qAHmZ$XmH%wM1AHb#-Fc)Q3o%=D(P3)d4M}K)xN(_ zGBdS^Djpo;=?L~Yj@(s7h%Voj~Z%l(SgGC)a2ol6~BPap=R~iKj4cl+*+jrlcVuRE!~v6xl|+T2Gc^S-t&-jTqq|)N}bH6 z02}(m^7d{u+#wQ>!wWNkd&ZzVtcfKvlH2dewYi&k@+)CmMQpBoLLGKtbGK6}S57!6 zj*PINtet5V5Rq4O&kuMu`&vE&-(ZKWcbbSZoay#xl(YQRj=pBSSrdBUVEgU;;j4Oy zB@_Bb%(HnJG~IKs!19N2I_82Ho{=dMm5{AAdc%vf@3R~t-=pcB6Tr~12RqDHqQY(4=Q8BHAZ(JN%rpo1yT}bfHI> zRYU|^YNESC=2B#37r^f2k>)uCRZZ|Zn_oB?1a}K`Wn20fhe!0sM7Qi;Zv{4(S;g53 z?cC(+NdCpw#lw&QpDJ{T|Ge9-@_d!=&jV_}!V+Y4m^EXkUsig1JS%gaauuP_lwPi~ z-mk3J66~ShhW>j`$PB=9YoVsJBROGWWF^H(H9~R(y?!eYe<4hzMx_Ln!fyrr)WtS5 zNem5XYx1v}-o|EmOZ6&Yn6PWGz>NIg-Q(0S7LT4Hhnt(Ks~nnF;$x~gr)0F(aMcJ=eR(igE6F8f=>l5d3jv&-+*}fK-uD3 ziTT(0Z&cpqKWL6Q@X9XVYUwU_(6zI4ACO&hz$j^G$*$B1OHfR`MdF`*KSeky^vLV` zBg2)ibUL?7d#xqp#Z(&way{sh4;2Sf983A8Db32=IabdD^P|n?+x)92ZzhQ)wWQSH z^9C3`@oRNYPOA4J1IlE3 zT~3@*wV1GOA=751529>Ln4>Yo1X&`JjW*0sY{|LHvXH$EOSr`j4nlBP+>r>wrXjuKcnFiJ+^jeiF<>pU)C!w4^su^FGQSi4*0B6Hz|O(EUoUi)L2GF`td7UF2_ziXuFBYj zcqM=tLxz@MBz9GFCdN!3s4|%1GQ#;mDz8^b5Xc+RS0v`W-OH~%9xqWbI9XWh&L{g{ zte51hhWktRvbUghc@FlUM>@Cga+>>OdSVo|pS{agThfIXz=D0(hhqyt0(3SK^-)H}?ZC>F>)y9M z)e8HB3X~qv)F9446rro1t-I976|aR2<+65v`}c3U>|DzEYGPn#^1uJa!o}+FSQ**XB$t5 zO26RG2UQOK5Zcx>+^n^eEzy@cNaD!_PxdQ}#j+Q^9RQ<>OVfxbsRjHt@5|UWfl!u^ zz<1QH`LD;Dq%P5+8Xp4!zdh5b*t)BEN5x6>J)9sdvb-@gBUKK>+lk5W-SYH!q^ zUNK{#-+&@5%_`G+ZnI;mceARe%V^6a(@pICONL30%E~r$mrIR4Wj0a+kIXC@kOu_H zsy0O&MQKB^akJEYliLOals3-v&hgaBrRLK?$ng#MdU9%9QbF7A!c=35!8W?hV^{`k?W%;VgG69nfa zc5w`LFv=4#;y#p;DqwC%cdX+ZHLL9KH^@iA*Y)|s*}xlQVYhl~apVcu_-M(ZrJx$S zyd&{WE#4tvl9?vPDh-9g>B*^kH_|OdXP1Yz3?X(Q0H?!SHIm9QD)nN(FG8kkuFvjl z^Ztt%6ASr|rE1>l4;FI@t@LS?4f3ULUdH60VYvpmMwRv69fe!uSKNtTuQiO1a4y5C z@CMnaX6!b`%f=Edw7qH{LaiDCJg2_%kAIgsNtx(8P4;utBZvkUDKB%p>}KF)gVv$L zh*W#kk%vP zc21;{cHGN2E+bEh@-@9=^7KTEQiyjypD~*D_gr#;h{Qk$(qr= zPl{tvFK{z|?6-Pv#L~o!3+n4Y)SVXNsCa6b?_1H}%v<4Q--RFT2_EJrXJwJ(DzUZp z1F>Jt5I6qP4fHWssOyL0`BzX@Pg|WtAoEVh>#G%avw3ER zEdhN-C$>!2-Got$5esJ0H={&Pf>b^yPX0p+2+6A!k4{0#ET)gbaFA^^`NbeBPN;o^c$vjtH zCn@jz`y%S{v_fV<284WOgbGn!xO((MFnB@X%L~u=CG=yW%KlJ`$5-O{4W!6RC^UDP z#B4KF-D6=*JdmJ^O*^Q&aC37J_6Q9w+sAcIJ962IE2!ZmU?|m)xM&fpnmRx!8*8dR zKfV6TEc{-Wu+&-_;M{8BM)M>;{`1fE&{TWax zoLt=M6i7DW+`yMX9f=-VwFN7)ZSLFV)^$6@Hm`j=#HAfhOu8oGX%um4G@&-z#YBhS z(i%7$%hr->V<|$DF{N_21o}&8o%BdVW7&{JVegkKx}_viv5X zm^10R8Eqi_nOUEezlJb*R1CUFCeG+$+h+DrvJ5n0(=&gN&{E)Q(7L(#PCQ8BjfCjj zGtQEw34LtuTS|Saq%?L>oVOFo5TBx``S|y*Bu9$yh|Pkf_+gmySDZIwh37wXGrlV) z`V)oe*x0lP#G75LXd)(Ti2LcsJrQ|Wc_sQsGWtc?I~&p>UMEFN3SKs<08lrA2ZhT@ z2W$u;I7=9OKkLTPE6b5={5ivX+Av(C_R_`X1j7Ch1}pOGZus1tr`C9 z;T&1k@1F0zpEHkS^Y~A6yrS2&oAJ3)DTGp5){0f;m;2pcS@(#dlC*bzG~7@=D#&ra zd=R!16k!J-Kyr8n7!oSY3kL0UZVxnBpt};)lNIVMMC%!iX%qJR{hh8>Gge#F38~UB z@(Bmbh1%Iawhx-tOqE|F7}Kae0?z%4A>X-fr11l0=X1EmlwXo5bHAoh>yjjr@%Z3isnETDV;Pv=~|E(I>0p3%g4x4Mdzx!05et|J{Iw7SJ$ z*f*)E^d46(p|;0EWVrxr$z(`-dHwUt2{`4I{)t3f@lsT){L7W!eW&x|tV7^smoNr0 zSMBpaF^b1i%igIBa`Q1fSg>dxT5dgwaXjl)_z#SmZd+Sln}|S*SiOGILYRT+)I;t# zQ~tBO!ne40fpTtz54M~eIy>@S1i?=v+uJ5y&Yc@%0O6DS*d9#YX$`nOT)g?uvZ)d= z1UHh9m|g_@rZAopSCI=yaOgcAt?uMZCLOz8OF_@&@ys7MJ)Nz9sM2FbQ+_fD+xL5^ zdLOEan+}1LEM;pN=qqOH_ncjZs@5fmeR|gZk*U1j$j_VPs!sf1yz0HJ`LqosE8Jn3 zSOaSzBZy7=CruC*Ld?&v#`gn*42NFisYE5WVEmx9Yw}~m`sSEN{UuD z03ws#W;GDRlL9kw8L;W&uzUt#&{EUyK*{hQB_WJKg9KZ=#D=}QqP5O}mTkRfCzFMc z-t*-qjsOoX5mZyyZpfU+x%8(0;q`|pkUC$j0G(%_=X)wzZUz(1WznkiI%+qnLb45& z;o0}uxjMBOU)FZenq6IfYl6sl%6B_1=0WP|q@eh6lAy8o^bAnGQ6=v3-anAh(NQv2 zki&K4^KmlNc($txyk`bCmJc?;WmPom>B*N+Dl&v=#fQSp0hDbR%hEmSNlV)#VT-R$ zaSoz1`v82=`XPO#UCO@GVfdcdSV5$1)h}_(=)3FKT4^-hMwa$1Nmitp%8xAg#``V1 zLIn?lw+$V;X5le*Zt(_?@Fja1*H$hY(XU+|!G1ex{f%c@8SVJMDymcwjSYNywMd~< z9S}u6H7p^W!F$bU93PPOb30jynFYjC9WGi9RIie>a~v}Q72=KKv`f?$CG*yqk?GaG zbleptr9cacxddHF@JZxkL3^kgx)HOk@wtv_xo&~!8sCoIJwI!3`$%F>>~iDNdZZ>| zDB#}dEI2?SG1Gu^37{Yk{$LSVCgh#?%J!WL|E6>`9fjls;f+jO2C?cIlp??#TI7oj=_yN~{Ei zp<|VClC%`S46X+8SJ}q9e9eb0-(>#WTrdy_yC993@&N^kf_ixg?lvk%KxImT(U?h; zBfn9VdF0SbeI}{`HHDGKVWKeuqS?EX+PC@}wH&Euq9aO+;&pPz4TzZ(I{ciF_FumO zC6z<;Y#b0#w}13m-MH99dBNdE;9puN=$yM{)|`TXXT@!C-9w0U6sZh%U3y6}{^di4 zL~HWfb)wMkFJ!~qZyf2We8(ZD$gZis0hd8V>hW)o-0e%XmxgKb|K-5yhwWozgnL~a zm#@a6C>gn91q~sq3@NdKn(vd4g*LSuj`e1V*k*ek!-gSVQDeO*$il`5ju$rNcC<43 zUArqnZ{fN2NTrG8e5Me5gbt<7JTF84)=zwfOckn3BC3*7!S}jt)y=zla85D9QTj-? zBGsq+tAzHSoNBB^PR94n`A%6$!n4Y)aAD_5bg%EnT%Uej)zh_$X+f$u%}6dIdZ20~ z$2}<&B=AckzPvXXW8rwD*+~RL`}0%b)AtZ`b>1^x%_KiPU|t zc&wi+*&1yD>y2hv$J9}wIpq!HTVevde7L!4OjTJnkeNyz1nw@Ji{E!{QRi`)6mFek z07ZgL$}3xU4OT^8dg#O4&#@Lb8Lk*OfirCkXceVim+A3-cH93;M`M%Nx7LOMf^>&g z_TiFhP~nXJpuG!%Se^%mw-uMT#U7OSSnjW@t`Mz6MF8c_DQiHJ(x&m@Iv9*E*3)E* zWQ)bO5xlgy>1*66t%PS715Fe(3Du2}B=#JVD)04;w|mExm$X&hZ>&acV$YW&zg0E= zmr(@>5EzPIT4irWp_%gFI#s|iFQar|I^1wwZ(2BN&mdZ{F@Z>gRR8)H^7G?x;KpTf z;T++W8Fs^oJA}SJXa((*eDjmu9?i=Y=H0?(Gd>v6s9_z(0qG8x%_Q>0X*PLL$^?9X zc>VI;i-ME2o(7k#s;vqOc3c8BfQqsOh^s_KDOAbvnu^&P%VUjxC5o9S+YGC7)riD1 zfH7B+wD2}y8**^ir}TGR=wu`d^FJk|k~00+k|RxELwD_IC*(lk^;&!w8u^UnE-z>9 zThc?N7AXALNS@JerUhtY=k_Yh^`WW2!Pbcgvt{PXZ+hzO@GF8`H|Ig>GY51tus({W z&1prC6*KLm71Ct1n*T89V=AUs&Scz~!F^O)SylK_&#Qv`>Z@Jum!$27J++Fp|F@U; z9lb_VQI<{S!%mY4Gzf+jtqx{*OG@?Ts;|GD3i3!A3LX8VP36|tS~!YmcJivH>DhZ% zpTOWDcSA^-lPLVM+nYMu_`W7PF&QD~t%)a5lJNx!=a!gtKbRR>Wl_g^KXQh(iN&w~ zw%*M0wJl~kTTD`Tj5Gh<mG>n*Hha|5Z2u>&dB|e>e=DN?*#dYt)TWdtXWKyBXQuZKi1<6I5J<~ z7u5ZE`4Sdw+^@dQ7Lr6OH5+vZv4pr^Uo5Qx2=){ZYD>n0c`J#X0O0@7~UhvyJhli|rSlJn0&|NPcXA#+o)`5 zsw8(iRQq*Zn@+@gmAtyjB!t&14HdCw4Hrlk2mvlsNs<6;dmvYApwVcCj_q`ZudMkzy%8BXr1RqqDf^UtJr5i zV=ULE_V5?f-Lvi#i{z_5oP18~1TY~i5pI0gTe8Sxxb`-@6pSfXYoQPu2dgD{LwGL) zQtvUixqYi!w7RH?XG;>Hi+@k3TmDUl@Y7QM)|{7%TFjCE&+zY>!l#WDVEcs&Ly6VC zcB<}HSkznZ4Si|3fh#Bxy7!jM&UFz#y#Z_B({yS>f2R=V?UR-w4;j)0=~bPH@2);7 z+q)aRXdKDD-kp1=W-y=4bT>P0#if5gDcTkv4L|lqkxz%tjW?c@ z7GJ_p#YO+E5C@w>{0Oin4Wx>wQJGp3){M6>*rqnpe@-J7z2naN(a}iFERj3oG=2Eb zWeo;PZ>lhKPCUH$Yfe;EqZguNucb%|iblmA{n+66z$Tz(l<{mL+n;A{J0P3=!{w2a z*?OjPW}%*X&kc~l?W9WHly=&Qr(z*O=kmAytx zHPt-biHcK5h#>mKRfz@=FNT^|{2y^}xbpT%eggAxQCWpM)EC83E~V; zPBY^r2uU%2Z4?*7iifoa3e;ZQ{qY-nJa|_STWBn_t}4wjot^pR8#CAJH)>z$&Rf??3WMyb}1=!DHnfH0pNA1r~K0 zYl|W+<|1g1PD76ju>n%A;V&)s9Y$S?b2VRDmbvbFNOe9YS#K@S9zj{V30h9o~Ko4`SpP;$*S)otH? zT&5jiq09%Y^LbFaMp8m@N9JSJn%oE);s7ejL)f1oCDWw6AU(km9nbd}?f((nyfk*C z5|Js=d*3mH#qfAw8aR(k-@N|fWxdwFb)ai*W#G2xV(EASycqXNT0gxrLlsxr-=T) z0B${z!kSY+BPN6l%(TRG;CU!qaTy$~e#t9&qZ!!HD#Wab0Uz=iWfmYuBPIk8*nu`9 zCWr>XEigi@EeRtnz{gCLMg|%;`7WAkaSjLu?b}mU z=5$A6T{opfprTD9CW7ozFs`$UD}NNm zLPH#={B@1CUBscb6L26j+ikZUCEiRTj4`3ZDhtOw&b5`1>uYCTLW>$q!A5hOiTImJ zWz1Ow6uy>>iRtwvNU}jZVl(im5OQ{F2bM(#r-fA=qe4P{M{`SgPR}cp+ZcD}* zhDr0^N}ggZ2gV(*kyK0W^Gl5%O*gR+U`kpl7&bDdBQ2rp zg<`QV7hVN6Cs0RKJme}eBmIt7gwT4|m(M>=ukmIKGubbk>_39<)Tiu%Ke za*?Krh>*!OQ!aq&z!-uB09dz%_GQ_V_rrF@P^OGV_2;s#xv$?nIr{Q%&jF}*TQ&<{ zhK0V-8bP%F?gnE~l7P?ies&1{+*6Wk~Zvzb|BdAbd}#X!saHN%O79Sl#@6F|Ge&z`}Z6E>odA{Cs=$ zBPP(?s-NHZfpuw7dx|>BqS(mvSnw}ycf-}%n@B_6W}LyzHh)yq@5wyy3DTG{YLI5X zMaxOlNrX&}Qf2Ho_%4ALlIEhLC3%4XosxGUhKOerSBEooww9J?W`T|pBPOTceGU)u z{~vt)hd!_>iee*g5>imz)kSG3ixCBg#v+!eP3Iw-&Jlsh#e1K(6@ip?Az2(;FIh^e zfcam9@G&y?Rex|{=ku(FW^~^3b~UKv86zzdGLLxzp(Ls#V~PCE6!3GyC|KCqXiWs65ppCV#2h6yO*%@`R(xYvN3JlAe$R zMkF?pO^FF`)n{Cbv0_0En02$OfYO#NUVc7aTi)KAzFdImQ3&rlOr#@B{bMMhG>8&` z<3y@+-M)=(l0IM;(c_U%Y)K<6+VY&ea!2g1$!Y6PG|2S#=#Kwq=y|Z;@^H>crpSJ2>p>hs5T-XK!`Cs)9+w5JZg(D*kQRk6gdZ3soZtI z7yQMY-;-xE;@$OkVPh!iwFCpRLnDuJh1JK?F!v$U9nN|aTP2XMX=PpFWgUZGGxuTg ze@s4*uzg$67YnC6g|-E`0pgHIfWZT3^k`DzI~ZE5DNwQOhSK3uYXjCHr+L+3=cr^JdfMLUTwFU;}MXMXNQi4tyzYw57?@d{T_4M zI8xtfN9wswH>g0kh@7kAe?7{Usv=0oFMr=;%#1n&+3E|R0MLv;!U(HEWG3);$;KVU zixF5rfjsh>0~hpcd3n!4hllj~jPdDtxQ&m#NGF}j^`9H-g3EqTxAL|AT>KS#{LSAU zCZE<;yXKo*vL=7Hm;`nZ`@<(f@`7Y+r@Cw$=;|44Tw8pTVK?plL19O_5Hes<6N~&B-;1i!uO~TpE9cF%Bz@`pHnFT zofk<-_m|1uN@AXymSnQSg$V*Y@7MAUfy-_}Ai@yV)0Ee%)#0N;DmAkLH3z z8ZiU~;6z6H&~$os>YwD0bt^*$=)bsIb|D4=_s=Mq(8ulR;#(q8s5$bV!5VifA_MS&v@1;*GRJ4#J=v zrxfdF{JcLdm&;pK+xbo9?yf7R9Pf@i4{9US9(;m~wiY-y7u@c~u7A;K-?omK-f+3~ zzysOSkcKbqTQJh%>|V858jP>B8FbDDR{|vnYRw794lvQIEtDcywNjFbY(+Ch1N_*a z%~GN>?Vth-G~V@V0|q3=2t*?-C_yGRFoIK26r#$wKoq_6H*=*oy_bkBYDyeTC94Ej zm@x=TV#re@`gYMS5`SeNJ7Bpi#+M{FZNSBoD0eoHH8o>G1~AaY7_oq{sxm?*FaRdu zy$@R%sSJ@LChwqE{+pIfL6nCl&J5*NBTT@~FnoHl#DrxlRey6`Ub^Vf&r*g@xxxfc z%P3|r;u6^6Gyy^gN+Twcq7*c&Zm2=XFpMyP0I;J@NWwa$krlR@ie)1nA{d!j869Lz zBPP*=d&!tIHpd}cY?cGIj#xMnp#qF`wA3Lh8z>_!g9gSi%LxZq)-g1rnRliSze{2dXzGY`y(c4yxyOx zvC*d!eJpWPlUx$J2&)X*tlNWqNzG7trQwY)Dr*R|(HzpYGFwJ(7P4Y)ITJW?%pl^^ zD9nvx8+!efuBO*oP7xLnk(*~EyNb=(Xr#}4rPbCWCV!Ahk}8NZizwP}Lx3=v4p^nq zX4;5Oy4~6fNZD}BJu<@<7>x&aHR`f|V-GjB8u-(m+B804ISz_nmlfsG-E%@o>^jV8=xBPOR~W=TRdY>GLQa;uTZonKX~ z_p=6Ym}ePtBMt~bsTPV#-0wpkwKXS_f|HV+7=MR4l01ox&=#Riez`W6;_%SnBOt>D zpEkTO7)+_QDH7Vif$;>>etE*|%B)=Mo(N(@UK?B^Ey$V^y+%Sruxu`xHUlCfCMydG zlS0`5#Ai~NnhZd1K-?+}0i-a&n1v8jg|vn+YN4Re6&eARL98?oFoKzc43$Q~`Gra2 z@qZ`NRCX6sQbk=PO+mX$X&Qwbh-?#)jY}PhOGeXe)f@s?19ht)+VxcsZQ<81+-rN+ z$@1IlwF1=^tWcDMNWw6R>NG?j*=rIgdwfpshvg(nffyCtZP{%>{u5B>{D>w`1SgN^ z*5TlQKuBOCEe^rjj)BlD8I2<*`_lhAm45_gKo6Bsc_0vqNUpxxZL)*uZGOFsWHom= zB6JUe0*fF5z#}F|fpQ%}0{}iyafJ{UP1k*HE|EeA=A$)@aJ?3Xn+TwYV=FPlHycC% zo$8Ilj3tj<&UIDh?v0~t*PAY@O}34;?BMRrySt}$?P8w>ysSYW5pqK+Y<{S%)qne? zJ>a;+B%^L^%W)BxyqkttT0$`nD86Q4uYR*?#f7*gu9$mpccaK`#_NmCN(HPD8Ebtb zCZX^wkW2X1J$^M`&~*YxnXPJh+a4DOWSNA)HWvg@8Sdd->qsPSxg2g1MNQalWJqoH z9^(t_cI62hM>3#=KPDE7@gauor40>9piH>CfUB4;ku_^EqVkD@j0Bp{9liw3!9VQ5R*<_#V%zUJOn+37zRz83 zSS_(e!z~jMNtDLbHJf8@`YY=J#W|#z2${kJFOK?J{9gW+3?l_6Nf!>gE8g6B}#i7J8V#psD*_5FltZh(>UHE7z+qy zwmqB$Dh~q}qytdtQlyz+BY!O{MjT5&S!Ed=6~2{+=Fg4s_e-2GeWl2Vkd@kR^{C}}-Mv@RsBPOvs z2-MUPj5T7$A~X{mI2sfgSvi5+Js7=O79$TL4-$p+%DFI>Hd^yOD2Bk*Pl+|}uUqUq zp$i49uj`scAq0>Tz{CL`P@}p5?OAQCrNFS!yPoO856g-fTDOrD;|1I*KojJMVjpTE z5DcinJChQADhh+s-5k@i*N<T-NWVN)KwqVxP_4fK+yS(QIS)(Iq1~iCB+EE`o%8U$TZ8p(uEEHhz*71UD z0z7e=H6ty->VH#Y5~Cw6mzyxc#A8Azr8!}3k4~^{Dy4CM#%Ta64(_&8`-*GJ?CX!Ht-HKeh;;2LxFn=NF6PdDkc~U2YF>~g;7{|G? z^3B=$vH9NNsflGl7=qNSz**^1*#-tSsb%|@){H;vMHPG-sE=T7$PuQsi7RyH+kYLbd!0bryot0Iz`y1_-L0#5%aMtf(2 zE!+HwQh!=}ULJbfu~Bu>iDOAjBQ0gd7;V9}e_n8`dS{n0vGO^m_x!EN!B5?XHD3s5 zX=#IWIyroEHn`4nKi2ACH~p`=Ht9U_ZL&agf4l5 zW4^XlvXc;>NFQk;nTbIZ<^fH)R?n4BSH)|gfqzL4^)UOxi2~D+J~m;8CPPcD1`Ew5 z`xoDg;TaKfv8xPQp)?oPN>}zHUT-aLS@_2GsO=bqR!qpCHm(Ro_HFdu?{0BMb#%KN==SKyM7c?Ri0bc z`XeptQ2!5^Jhu#TVZqekTrOyyq~1Y4x4L#-z8b+ONt7`n!n(|kSgDj1rmA!ZW`7+W z0c@tHWa=%EGTszuX&}!hWm|ps*`lj{m6}$q2O}*8xTC@5i4uP!syNzOmZHqzX4 z1D5u%UL!5tZ;OErHVNL4TmF0C!HIX4P9sJCKIJNYfiM5ZP;8LiZD92Xg1H zOPp6;(I-pXgB5e-alSg2);mOMK=+O~8uXid)7h&5`NpzkzJ^aYR8MUzt%?CBY($?7a#_aP~WPi3{&tx9+ zg_pZEfM9%k_Tg{K-UoGb>BF1$<6%b7vmIR6M|o}N!c6C38~&+WreV`t-V7X z2LRi$FAEXU`$?t8BPI(YCd}0%NH3#jfW9!p^O83nTec!feY`NHeK6{KjD@V8Ls*3HQ=^_iJqh9E{1l3-32ci_;5^@X9tr zJ?O~`u#Ll7hwCw8jQgJV+m*p=nCOxmIx}fiLWof#CVSL^$a8!+hOy50F_mNjTQn1ty92Kc$c?|;54#>%xrfMK2`bmF-K zh?rQiMH5C8W4*1r10yX6aGD1#m@0z6O}3SCyc}B>BSFGB?tiCLG$Mv^F^EXQ0k>1Y zgLFInxwesKedNM&gs5Di&m-C`j|XvjL!_hkoNG&57n_uPMH~5L=R47MICafrl638T zI?*w}@Q2#4wwh=VP~WagvZ)p^X-mJ`a>Sko%|{n9G-F5lQC_zW5j;9E?MOsQP()dhSAFzY){E*MBD*yaI`bjBM`v;~Hi!5x6Ls znLO##(VWXZ*@DMIJGhZJs%(m>iqYT0dBwLQEtbBm@y#Q8o!K3H_qQKrF|^Izw;hl# zO%AOxUY9sr62`(-(IVq3-&08`M{KfZL_`poDYPC>mfefqN<1+F@;2$yry>mR2Ai!k zZu|A2aa{foZi+}6VO2NoXfgNTvRwPHM5EhirQV%~X zwRY)}w@8V9BP~eHw2O}yDo+!mdJ?9`ZB6F$ks&o6XhPz*!15v4W_O)jK9w>WC|qkJ zEp0xtp~lc^8->QBiH-5#gfYhMUJ2%=(x=TuKK8QI6pW#rA3rM?emtqnBZZ*ID&$AR zbZmO~J|l8TT2#u4mD=bUFoD4?4hAmdFb-uSCOt;)2VDsE z>8ME~EtLVC1XI$8^)QCUg`3qAln>>UL4O+q?zYYQbGBF4j0M?k9{QtC(euY&?XJV= z*@xXlJWsNWz-}3AKA*2L8IvY@Rxvi)*$c$F^6AIMPfSI@w`u*1$bV>UthVUQtO!b_KTMAtVR#8~M!|-HYngz?HY1I6 zGHMfqp|V39dU1`4^CKWK&a{;oVz}Pf_c``d1K+e77)F7)ccNpa)k13e5g5%T8Y7v#qI|)u1!I^nb z+if(~ILv_ti6f}h>fo&6>3<@exaM6tO;VyrlTl$vNnz3BGjglh?bL=$QiP>ckF4HJ zEfU0aRvOVNng>~IuQC`sqb8wGzK21L6)s?rXk<$xMZN^?ot|{38F-SzBPPn3-D_14!X(>+g=5??oV5_>HNzt&CYaWf(0}V2Bix5;ZdjJs z#4Q#mY-aKsZzzZ@@2ncFA!U|pG%GpKQaFwU5s8E296D1mu4gp5utX;p^u7ibG~^=* z(vd5vS=gb83u|ma_MNU97WwH_!a925a`ZS zN=QVz(UMvm%jZvAIMYv*jKc`Zo+u+GJf&lu9cC)mBQ2yTz^)@LVfBmBq~*2&62=8< zG8AA@GUF{HO?9t3MH^^qmKe9aSyu*%UA{5~(+8-SMHgr&tbb!nO@n$Oh^KYb*|KMc z#e5UtoqBv-S&wFp$feNHaXDJn|n5I&*{6y6X550+wk z$-a2)Xu)iBkAH+O9sL*GCK}FRxu_V954zey7udn<$BFd-0{ZDgS+h)EpR29Xd!qL&6!2EY*uA6I z#deqm{!8E(4%&bSl%1yB69xwn)aCho$f&NSSIoJ3m4D@~$fIPFWv^^{Zua|k)R)Ir zXwy0JeLZDBTJ;dY%+-NnSi>wv$9&OMRaF`R;rN&&4$llOXDDgiqOJQ5&7_OSE_Mhb zCeY|)A%s+@vTCuVsaZDNE6KN+c&^C;(m@i?62uTZoIHPc`(`$MF*T9+9?ZzEqlZ56yveH;1CWb7-o0C?dkR+YcL_mQ>K(@hLjI}V$7*SP9O^bpP2?E1l)Y764 zH*!Rh9$X)m;6U<4Ql8Nb5|(K88gJ*E3lME9rr>VJNuQSf%oHx@}Kg+PSXO(|E5; z0<^{sOp&yOj1tBrX3jDo`&t^Q+fcUADSraCtyojLv!gc<)DZ#WL@|*JV{4C;7MZ6W z?Wt@wHh3c~6{IF&97AYLk#>Py)Iz;*SbPtcpy+%YYy~vbXZX8lg`lPyLJKOlB*Rwv zp0@9!-qr4^LQN!6z3nVo_ z!|!TAYs{~Iju4q6CjOT5OWohdrhlMu*s&)+r@D&sufv)~D>jWZ(y~-0q9S-?tjaH; z6yU`?{MF-uw?3+gWRgQrt&ow9LYhH?lFK|>x`fbE#Um}QVMDAcm2gXNgL8)h5ZIbH z8)9QLt&0o;bs>mnOC2TE(@l=tPADSCqwQ7_k)b9y9H=-!RMabsMOS)?C4Ug>Yhzp) z-OPz_HoLM;0uO*Hm2gXNgHwthXnZ`65cmQxs}ehR8MIKv68dVmljeD{1Cg{f_G82X zLI)e?CezG;EruImbZUkWLz9(d353f0XB4K zf_j1^R5v0Fk|}O>K-Q=Zhkvp5CmDHQ&xK972*8q+tMi&87~)`guoukR7%Xb?e^f%p6~}ED7NRXBPXz;)zF~ zi&(=Fc;%(Kww0a>28SkMVe05m3)`i06GHTU+zUbbzD|25PzwH22o$L zif=v_Plqpn1V};&B!moa?hu|c(~p+*sT0HM_SpmkQ~d9-mjPh0N}$<@i$~$E5SM_7 ze=K&U49I06OesBT_dm!O!e+#{jyE_Em<6pmfaX9!p)`kPtuu1OoA_T96cJ35)!Y zN(R#sawJaSV4o`T*9Ts?cn%{b&FVu-;F^L&bwpr{gCMsimwzTx5MUz&1{yG$gJBdz zT`s`X<+n^AWTsR!kjjA7HbP%0VR}>GrWxboIblmVoZBPKB#%0xz+1~|M*mMvAo0E}H)T(KM38P&RL zHup}978xj*j3=x=t4&oryii-wG-5H8n|wqu6DaN$fL5C)|mmx_wB$+c}wrcNG zDl?G*O7Xf8a2-IZ9LU?}pu|AeZg}80N$yxh6y{9pH7~eZ!I&WsB@a?!fS4l^!3))>h1RGub1Ij6ziV;T`yj7vJ@71we)Pd=ZUBPQ|14`Id&+MO0iM+Gr56d*9%XOt7) zed?sQq4ijaY#_#d!upx+@3Hg<*)!H1xz)o@eKx~JyY(HBLawA;9JOD>S4GD#+)XN; zB1djuu4^)2=NnO1pui=~J26UwtRlORWPfAOdK}0N0KKH-ThjUm*c$pTh%IBPPrkWtPF` z`;6OkI&L&AGTlSQ?cXZcCPgJOFccGM)*G$DCbYyrN@!tu@^T}DeTYRL&bh~S&VP1s zvicm$etFGhd^Ue@@x}bd!$}L>?W2z~FLjc!InnBsVQewXhGZ=FK=)=pd*PV)7*@8_ zcWN9yUTMwOBPO$CZzV;rE{q-1j9LYmBP~`lDCDRMOg6eBElK0PNG%N3gowcK#4I-NfofRB zDKi+GxkX39n3owV-J9kf10Zf_Tj`;;G-EVX7-|MG7uTk0Ez@W*wY2=UWq;IhMES7# zTwQu_#hn4RX)YM3j+jEb1x-wyGZLQKyWZitjtmquc1OTT!~;X0MTAIVTP+we4$&wi z(A3WWz3P_)j#;w_j#s-QMvpTEmSrb!ff+81 zCgyk;N{Oj*T8bKjN4y!3;G$vF;T&WrN40=aA&PLRpmjB~*kV%)y99Q)mmCyLkO-y3 z(uYzY#84wG3_6?)i-TsVzzj5yW<)3>CPc~zj98jMCyB>+mBNJFwtsg)p&STd14Kdw zh73!RAV$J60%XK!*34v0HX|(^GnYWDh=;ORL8crW1Pnom6<}btEx@D*B_jyP5;>L} zrITY}87Yun7tRK4*kS`f!?3WZTSU@{N7o}Q5{-mLCV3DJ7(TiO`H5iB%#9%T7x%)-;ceF9GfdhTy7m3)1 zBQ0|xjHB9A2}oM!k+Ky;Mzn!Yz<196xxiMkPQ(v{b>ou<=6|D0JE8UK;xhpQt8{+v zxN(U?HQjEY1HYjOIcTh$!i+x#vYILZ!Vo&=V-H^Ss%wKFb$T?T4m90ZOtJ)TIKnBm zv6k*+CA_U-p(A0-xi;7y?0i`RYhm4^SwvFy@!(aOOiu?f5Ps0mHfL1|O!_O7pPxOK}X zdHTIOG2Y9Pcu4M&T2d#aX2p4{M!Fr)bOekhVih0=N?PDDPsT)BqKhmPMhj5t=h;%1 zJfl~m)O7uIorZ|B=BbpiHH8^%T~OCeZiAgTw9MiXPJe{}dKc8HB?9dan({FwdIXD7 zxL+Kz4yD}{8v*#~rMQ;#J~emuh{*zFkUKy^5bBHMz&4 z#IU$HqN#hXZF+8%E#V4E{yTQnzEb4Ic>G|3>-IVoK+qbqI#F*$`)7?@OO zi2;xzU4ImSHX;<@T)_*V(p|u?3yTa4H8N4e1+aLhXlElPWN_%GonbWN3EMa~tw=%! zUKJpj5Uj|ep%Otl`GNNL_%r9WFkAUgdPa zQOC+10oplR3nK#CQdNv?$&4Mza3NwoxPwr&G>G0vIIuztQFbVGgjA4I)o|N{5)3cXm4d=^KjW58BkC0sWzS0X zNN?~1)wZ~*_xT<^RrT#PJ11gDpfD03Fn@|gkdR~m*Tc7Y$iPu|TaR8DBL1}qkwFp> z6x7S(?%ZP|Ex^N#4mt*+d?P0EM4SC&jTOl2dOb>UWh6ELBPL9uk1~`gCX;gUQ@OU> z?pIAEy6q*KOl)Ab$f$vXsWe2DOk^nt1qe`*N*Dk|4}r)JLwx8WAdG`QmoDRF_J5RB z6tyEJhDv7dl1F53te{!b$&Gk?0e_yJV>{r_dCsJDDq!yPOo3>{gYzRAPzGG;x8 z)qHt83&%rK!ZKnQ98@|L7s1%>&fYI5_i16radY!=6}?VHaKV)vdfGW1$1xAeev8nm z*8Vfm`V(k?kcyHsI3VvaJsV+4!Wh!kQA`LxWcxAWCc@NbIwLKq5cc{xdVlaJI8c3l z9f!0cEwZvLwx>($dDi8MSj-x@6lzB#KZ( zT1}@E?@i}+7|1|%@v`ygbNJ2Jk2E>Wfi5RzC@kOO&WJ$}fxHV@Ma-nKpuA(%)QIig zLFJ0<=$IUe#Yc=%3`Kcpfq!2@IRUJEG3p~GBQ0JKAhII!6!@pSvM`-wV!;$-DZ(ru zp^B`BpJu|`*Mp&WdqYf1Vo$L6yR3YCV93TsXjal(-4YnzH;Z_(rJTv?w}!eB17V?z zrXiC$5(Sb4U4_YXnx&hvBP~ofMJ!F4Uz0J$yE9!>>%@@}v#Mx0YJXUCt0N|@47Rc5 z!GuOL_cEGEts^FBp(7@w83mffRzC5+}1GCYyS#>xX8h$Boq@GY2naBUrYa~T1gIn|gnz1VQV&GrEX@ z$52;J!E^8^xx3YSx2buX^e`CqIRQT7!n67dh0!A>_%np<={8L4QItQz7;vE#yGeVyOLJep_+)?Du2bos1u0+TeMIStW8_Ji+<@Z=`6k zt1BeUCelkvn`_m#*}n1j`rF^@1e+F&2HH(qFvYYeNxq$XMwCtRUx`SV$y*XiHKwGE zr6WeP(@iRpt9^Uv?=^cBAS{G56Z()&ykv4=gEJt28-MUc(u+mv>$GHwSXM<6ShFb> zFxew57P6$h&YD#&#R3kC^tsW3;k*EU*VogRr?8(7PIf@T9`@v{{@F&rAN(UNMm#RbG?$_cel=tv%jL)aie6`>l< zWQ;YUn1NAg5hDiEXr|O}dTQ-NYOh7N6bnfBv{UvDNaQX?4&U)>O(hj&OUy=?37=J=tax9UOc7@!VEnsek)?fj98E9Lp zz$oIdk{^vxJ;3*Wf* zet&ODJGI@ozOU!lh3uc*6aq;VWDye=XxiE%EiENRv@=>$Qosd-0Tm!H9|Mi`?V0V} zrKvH;-;f8=D3!*Kut{`G77RxkAQzWz z6r8#F<7kazK)Inqpe?uqIUH=wlVwqqlG~df$$8+*M@Uiv#e;$iU}k|<3~2@t3xBDY zQ~NZuG+0K0S}Z2wLjL-2RFj2DBJ+zImK382MVXf_cU!b?Jo9bjYc*1oEoE$Jjej;N z2uB7fXcS`+DJ2xm-Q_y+tCo?v_ww*cxWyzyazr)}p|r9hAxMbWGtKbcyLR<@to7S; zs_f>dLNE-;X*A#?CWFDZl@lPPh?yf`ympo(ipfn$wR&po)#FM79A*%?1w@7-66%gb z%S?{sNd_wPBQ0b8Cb@ph7x01BhJg_94iDa| zN9fRv87Qiq9l}to2G21L(jFmAs=`i@WN}TU1^}@fsPlrwQdM!Ps;ce|yY_lQ}AdlgQ%ol>4rg%F8FILiOP5YkA=y)CU){GxlNbIe$8N>ScLV zSF?r5^t!3aP8=Rp7Lt=RV#1Y0jvi z{cf^t-zN@2vD!o)r=Q8qBrupr;rCYO?-DX8AgV>Qf)t-+xnO5RmcXfeyU# z8Y3;iTSGAM#&A?YTuZoWG$@6M2dC9Nr6p1Wji|;>-2OdGYv;gdX`Ue$(c6WEr{fDG ze}jkKLb9fA9KX}^JNdrnohRX|*JmNJkhbOtwbU41&{JF9Os@A2!^@XZbF}cbN3!-@ zfJTGB^i28iF*&>Z2!BO|5g^cU$=YP(dd@V9M}}uc-kiRuYd+U-pg}Zt^HX;W79pR6Cj1UCkCqf$MCvMucCb^>0^y%fr(}*)e zj=%2zZ~ouocmKcg{&|0&{eS&#^LT%*pYZ>8>;Gr`zR&o7&wu_tAN}nAaESBZ6sHYLZDD ziI9myS9ftU%U?h2$ByM42(Se4?&p&0(KEuKm(8wx_(;)Ai2dC%?A+tQ$o&cc*`@)>LHj-YF|4UwT_I=9V{a)3|m`x)lqa3nSZK`6vcgy*rPChBi@=xnoGBE?;|aI z>CxlYX_6pz9gsrvOf^K3%qfUnBup9z2Yn%&1pw?J6o}jy zl2W8tYDFV0P(z#qd%e05=k%fF191=dMnn6U z26Sj6R2@Y@Nofh-B*lufC_!P16w-Wk?)jhxpRNA8QSg-;6Ta2!yrECM(tIiY`v1?N zrRk+kqA`6#QKT!Uu5EcvFzwA<8Km0Ar+>iTjcNjCu+sg{u1;hXk=BEbvp{^XF88-X zoSU|vppT!Q-4Px~q}yrEh=wHFsDqHrks|b3*dDwVBg81o_;tR=A6GMWbYip`ZZ-)K zY9lRfh`}XnZ6>=mw>Qq!(-yI|?i5obB}5J^sFuQ#bdShRO6NjZRHJATl;^f1Eq|TJ z)F2=8AnYB^qap!}MQS)UX;K6g<^*pAddT3hRt$Fx6A}pRA~^c@W3V&N!V(_6ysRF) z=sxay3kYf(oge%}Q~l@P{_poz+|A&9{|AtkR&Gt<)AgNzA^)l(z#tc1FZARZ(ngh;UhK|s)o9zG|!er$~`U_Oey zLn|(lS#d|50Lz3GQ%nhxzqad4#%v*uU%(6Au(3IDb(Cq3t6{ ztgvPs-mTtI(#`&_C%AOIL)@p|_P3w$IoITQd=Trm^%B|qiTAQa`k9fC^I`W*)c;S@ z7nmb0D;M@NV&(;jug8(z&-VVeqY@Y@mk*S$?Q Date: Fri, 12 Jun 2009 12:33:37 +0100 Subject: [PATCH 16/19] Run unit tests as indenpendent WAF tasks --- src/contrib/wscript | 2 +- src/core/test.cc | 53 ++++++++++++ src/core/test.h | 5 ++ src/core/wscript | 2 +- src/simulator/wscript | 2 +- utils/run-tests.cc | 41 +++++++-- wscript | 187 ++++++++++++++++++++++++++++++++++++------ 7 files changed, 256 insertions(+), 36 deletions(-) diff --git a/src/contrib/wscript b/src/contrib/wscript index 806e433c3..046958dda 100644 --- a/src/contrib/wscript +++ b/src/contrib/wscript @@ -16,7 +16,7 @@ def configure(conf): "library 'libxml-2.0 >= 2.7' not found") conf.sub_config('stats') - conf.write_config_header('ns3/contrib-config.h', project_root_relative=True) + conf.write_config_header('ns3/contrib-config.h', top=True) def build(bld): module = bld.create_ns3_module('contrib', ['simulator', 'common']) diff --git a/src/core/test.cc b/src/core/test.cc index 6f0a7a7dd..165827a41 100644 --- a/src/core/test.cc +++ b/src/core/test.cc @@ -55,6 +55,18 @@ TestManager::EnableVerbose (void) { Get ()->m_verbose = true; } + +void +TestManager::PrintTestNames (std::ostream &os) +{ + for (TestsCI i = Get ()->m_tests.begin (); i != Get ()->m_tests.end (); i++) + { + std::string *testName = (*i).second; + os << *testName << std::endl; + } +} + + std::ostream & TestManager::Failure (void) { @@ -95,6 +107,47 @@ TestManager::RealRunTests (void) return isSuccess; } +bool +TestManager::RunTest (std::string name) +{ + return Get ()->RealRunTest (name); +} +bool +TestManager::RealRunTest (std::string name) +{ + TestsCI i; + + for (i = m_tests.begin (); i != m_tests.end (); i++) + { + std::string *testName = (*i).second; + if (*testName == name) + { + break; + } + } + if (i == m_tests.end ()) + { + std::cerr << "Test with name " << name << " not found." << std::endl; + } + + if (!(*i).first->RunTests ()) + { + if (m_verbose) + { + std::cerr << "FAIL " << name << std::endl; + } + return false; + } + else + { + if (m_verbose) + { + std::cerr << "PASS "<< name << std::endl; + } + return true; + } +} + Test::Test (char const *name) { TestManager::Add (this, name); diff --git a/src/core/test.h b/src/core/test.h index 358603a3f..fa126e1f9 100644 --- a/src/core/test.h +++ b/src/core/test.h @@ -89,12 +89,17 @@ public: */ static bool RunTests (void); + static bool RunTest (std::string name); + + static void PrintTestNames (std::ostream &os); + private: friend class Test; static void Add (Test *test, char const *name); static std::ostream &Failure (void); static TestManager *Get (void); bool RealRunTests (void); + bool RealRunTest (std::string name); TestManager (); ~TestManager (); diff --git a/src/core/wscript b/src/core/wscript index 60a63aff5..1c8a5de37 100644 --- a/src/core/wscript +++ b/src/core/wscript @@ -41,7 +41,7 @@ int main () conf.env['ENABLE_THREADING'], " include not detected") - conf.write_config_header('ns3/core-config.h', project_root_relative=True) + conf.write_config_header('ns3/core-config.h', top=True) def build(bld): core = bld.create_ns3_module('core') diff --git a/src/simulator/wscript b/src/simulator/wscript index a14cf2480..505b3b264 100644 --- a/src/simulator/wscript +++ b/src/simulator/wscript @@ -31,7 +31,7 @@ def configure(conf): conf.check(header_name='sys/inttypes.h', define_name='HAVE_SYS_INT_TYPES_H') - conf.write_config_header('ns3/simulator-config.h', project_root_relative=True) + conf.write_config_header('ns3/simulator-config.h', top=True) if not conf.check(lib='rt', uselib='RT', define_name='HAVE_RT'): conf.report_optional_feature("RealTime", "Real Time Simulator", diff --git a/utils/run-tests.cc b/utils/run-tests.cc index 0e1d3ef91..2533b8806 100644 --- a/utils/run-tests.cc +++ b/utils/run-tests.cc @@ -25,13 +25,42 @@ int main (int argc, char *argv[]) { + if (argc > 1) + { + if (std::string (argv[1]) == "--ListTests") + { #ifdef RUN_SELF_TESTS - ns3::PacketMetadata::Enable (); - ns3::TestManager::EnableVerbose (); - bool success = ns3::TestManager::RunTests (); - if (!success) - return 1; + ns3::TestManager::PrintTestNames (std::cout); +#endif + } + else + { + // run the test named by argv[1] +#ifdef RUN_SELF_TESTS + bool success = ns3::TestManager::RunTest (argv[1]); + if (!success) + { + return 1; + } +#else + std::cerr << "Unit tests not enabled" << std::endl; + return 1; +#endif + } + } + else + { + // run all tests +#ifdef RUN_SELF_TESTS + ns3::PacketMetadata::Enable (); + ns3::TestManager::EnableVerbose (); + bool success = ns3::TestManager::RunTests (); + if (!success) + { + return 1; + } #endif /* RUN_SELF_TESTS */ - + } return 0; } + diff --git a/wscript b/wscript index 43452ed41..e0dda6565 100644 --- a/wscript +++ b/wscript @@ -146,6 +146,9 @@ def set_options(opt): opt.add_option('--regression', help=("Enable regression testing; only used for the 'check' target"), default=False, dest='regression', action="store_true") + opt.add_option('--check', + help=("Enable unit testing"), + default=False, dest='check', action="store_true") opt.add_option('--regression-generate', help=("Generate new regression test traces."), default=False, dest='regression_generate', action="store_true") @@ -523,6 +526,8 @@ def build(bld): " (--with-regression-traces configure option)") regression.run_regression(bld, regression_traces) + if Options.options.check: + _run_check(bld) def shutdown(ctx): @@ -561,35 +566,163 @@ def shutdown(ctx): check_context = Build.BuildContext def check(bld): - "run the NS-3 unit tests" - Scripting.build(bld) - ## generate the trace sources list docs - env = wutils.bld.env - proc_env = wutils.get_proc_env() - try: - program_obj = wutils.find_program('print-introspected-doxygen', env) - except ValueError: # could happen if print-introspected-doxygen is - # not built because of waf configure - # --enable-modules=xxx - pass - else: - prog = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj)).abspath(env) - out = open(os.path.join('doc', 'introspected-doxygen.h'), 'w') - if subprocess.Popen([prog], stdout=out, env=proc_env).wait(): - raise SystemExit(1) - out.close() - - print "-- Running NS-3 C++ core unit tests..." - wutils.run_program('run-tests', env, wutils.get_command_template(env)) - - if env['ENABLE_PYTHON_BINDINGS']: - print "-- Running NS-3 Python bindings unit tests..." - wutils.run_argv([env['PYTHON'], os.path.join("utils", "python-unit-tests.py")], - env, proc_env, force_no_valgrind=True) - else: - print "-- Skipping NS-3 Python bindings unit tests: Python bindings not enabled." + """run the NS-3 unit tests (deprecated in favour of --check option)""" + raise Utils.WafError("Please run `./waf --check' instead.") +class print_introspected_doxygen_task(Task.TaskBase): + after = 'cc cxx cc_link cxx_link' + color = 'BLUE' + + def __init__(self, bld): + self.bld = bld + super(print_introspected_doxygen_task, self).__init__(generator=self) + + def __str__(self): + return 'print-introspected-doxygen\n' + + def runnable_status(self): + return Task.RUN_ME + + def run(self): + ## generate the trace sources list docs + env = wutils.bld.env + proc_env = wutils.get_proc_env() + try: + program_obj = wutils.find_program('print-introspected-doxygen', env) + except ValueError: # could happen if print-introspected-doxygen is + # not built because of waf configure + # --enable-modules=xxx + pass + else: + prog = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj)).abspath(env) + out = open(os.path.join('..', 'doc', 'introspected-doxygen.h'), 'w') + if subprocess.Popen([prog], stdout=out, env=proc_env).wait(): + raise SystemExit(1) + out.close() + +class run_python_unit_tests_task(Task.TaskBase): + after = 'cc cxx cc_link cxx_link' + color = 'BLUE' + + def __init__(self, bld): + self.bld = bld + super(run_python_unit_tests_task, self).__init__(generator=self) + + def __str__(self): + return 'run-python-unit-tests\n' + + def runnable_status(self): + return Task.RUN_ME + + def run(self): + proc_env = wutils.get_proc_env() + wutils.run_argv([self.bld.env['PYTHON'], os.path.join("..", "utils", "python-unit-tests.py")], + self.bld.env, proc_env, force_no_valgrind=True) + + +class run_a_unit_test_task(Task.TaskBase): + after = 'cc cxx cc_link cxx_link' + color = 'BLUE' + + def __init__(self, bld, name_of_test): + self.bld = bld + super(run_a_unit_test_task, self).__init__(generator=self) + self.name_of_test = name_of_test + try: + program_obj = wutils.find_program("run-tests", self.bld.env) + except ValueError, ex: + raise Utils.WafError(str(ex)) + program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj)) + self.program_path = program_node.abspath(self.bld.env) + + def __str__(self): + return 'run-unit-test(%s)\n' % self.name_of_test + + def runnable_status(self): + return Task.RUN_ME + + def run(self): + #print repr([self.program_path, self.name_of_test]) + try: + self.retval = wutils.run_argv([self.program_path, self.name_of_test], self.bld.env) + except Utils.WafError: + self.retval = 1 + #print "running test %s: exit with %i" % (self.name_of_test, retval) + return 0 + +class get_list_of_unit_tests_task(Task.TaskBase): + after = 'cc cxx cc_link cxx_link' + color = 'BLUE' + + def __init__(self, bld): + self.bld = bld + super(get_list_of_unit_tests_task, self).__init__(generator=self) + self.tests = [] + + def __str__(self): + return 'get-unit-tests-list\n' + + def runnable_status(self): + return Task.RUN_ME + + def run(self): + try: + program_obj = wutils.find_program("run-tests", self.bld.env) + except ValueError, ex: + raise Utils.WafError(str(ex)) + program_node = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj)) + program_path = program_node.abspath(self.bld.env) + proc = subprocess.Popen([program_path, "--ListTests"], stdout=subprocess.PIPE, + env=wutils.get_proc_env()) + self.tests = [l.rstrip() for l in proc.stdout.readlines()] + retval = proc.wait() + if retval: + return retval + test_tasks = [] + for name_of_test in self.tests: + test_tasks.append(run_a_unit_test_task(self.bld, name_of_test)) + collector = collect_unit_test_results_task(self.bld, list(test_tasks)) + collector.run_after = list(test_tasks) + self.more_tasks = [collector] + test_tasks + + +class collect_unit_test_results_task(Task.TaskBase): + after = 'run_a_unit_test_task' + color = 'BLUE' + + def __init__(self, bld, test_tasks): + self.bld = bld + super(collect_unit_test_results_task, self).__init__(generator=self) + self.test_tasks = test_tasks + + def __str__(self): + return 'collect-unit-tests-results\n' + + def runnable_status(self): + for t in self.run_after: + if not t.hasrun: + return Task.ASK_LATER + return Task.RUN_ME + + def run(self): + failed = 0 + for task in self.test_tasks: + if task.retval: + failed += 1 + if failed: + print "C++ UNIT TESTS: %i tests passed, %i failed." % (len(self.test_tasks) - failed, failed) + return 1 + else: + print "C++ UNIT TESTS: all %i tests passed." % (len(self.test_tasks),) + return 0 + + +def _run_check(bld): + task = get_list_of_unit_tests_task(bld) + print_introspected_doxygen_task(bld) + if bld.env['ENABLE_PYTHON_BINDINGS']: + run_python_unit_tests_task(bld) def check_shell(bld): From 582b959a4d73b68b57bb297b59ce03b4fcefe058 Mon Sep 17 00:00:00 2001 From: Andrey Hippo Date: Mon, 15 Jun 2009 15:22:33 -0700 Subject: [PATCH 17/19] tuturial fixes --- doc/tutorial/building-topologies.texi | 30 +++++++++++----------- doc/tutorial/conceptual-overview.texi | 12 ++++----- doc/tutorial/getting-started.texi | 27 ++++++++++---------- doc/tutorial/introduction.texi | 8 +++--- doc/tutorial/tweaking.texi | 36 +++++++++++++-------------- 5 files changed, 56 insertions(+), 57 deletions(-) diff --git a/doc/tutorial/building-topologies.texi b/doc/tutorial/building-topologies.texi index 17d8156cb..010a55418 100644 --- a/doc/tutorial/building-topologies.texi +++ b/doc/tutorial/building-topologies.texi @@ -248,7 +248,7 @@ from network number 10.1.2.0 in this case, as seen below. Now we have a topology built, but we need applications. This section is going to be fundamentally similar to the applications section of @code{first.cc} but we are going to instantiate the server on one of the -nodes that has a CSMA node and the client on the node having only a +nodes that has a CSMA device and the client on the node having only a point-to-point device. First, we set up the echo server. We create a @code{UdpEchoServerHelper} and @@ -296,7 +296,7 @@ leftmost point-to-point node seen in the topology illustration. Since we have actually built an internetwork here, we need some form of internetwork routing. @command{ns-3} provides what we call a global route manager to set up the routing tables on nodes. This route manager has a -global function that runs though the nodes created for the simulation and does +global function that runs through the nodes created for the simulation and does the hard work of setting up routing for you. Basically, what happens is that each node behaves as if it were an OSPF router @@ -317,7 +317,7 @@ you haven't encountered yet. @verbatim PointToPointHelper::EnablePcapAll ("second"); - CsmaHelper::EnablePcap ("second", csmaDevices.Get (0), true); + CsmaHelper::EnablePcap ("second", csmaDevices.Get (1), true); @end verbatim The CSMA network is a multi-point-to-point network. This means that there @@ -336,8 +336,8 @@ In this example, we are going to select one of the devices on the CSMA network and ask it to perform a promiscuous sniff of the network, thereby emulating what @code{tcpdump} would do. If you were on a Linux machine you might do something like @code{tcpdump -i eth0} to get the trace. -In this case, we specify the device using @code{csmaDevices.Get(0)}, -which selects the zeroth device in the container. Setting the final +In this case, we specify the device using @code{csmaDevices.Get(1)}, +which selects the first device in the container. Setting the final parameter to true enables promiscuous captures. The last section of code just runs and cleans up the simulation just like @@ -374,7 +374,7 @@ run the program. @verbatim export NS_LOG= ./waf --run scratch/mysecond -#end verbatim +@end verbatim Since we have set up the UDP echo applications to log just as we did in @code{first.cc}, you will see similar output when you run the script. @@ -395,7 +395,7 @@ the echo packet. The final message, @code{Received 1024 bytes from 10.1.2.4} is from the echo client, indicating that it has received its echo back from the server. -If you now go and look in the top level directory, you will find two trace +If you now go and look in the top level directory, you will find three trace files: @verbatim @@ -648,7 +648,7 @@ was in non-promiscuous mode. To illustrate the difference between promiscuous and non-promiscuous traces, we also requested a non-promiscuous trace for the next-to-last node. Go ahead and -take a look at the @code{tcpdump} for @code{second-10-0.pcap}. +take a look at the @code{tcpdump} for @code{second-100-0.pcap}. @verbatim tcpdump -nn -tt -r second-100-0.pcap @@ -845,11 +845,11 @@ helpers: For simplicity, this code uses the default PHY layer configuration and channel models which are documented in the API doxygen documentation for -the @code{YansWifiChannelHelper::Default} and @code{YAnsWifiPhyHelper::Default} +the @code{YansWifiChannelHelper::Default} and @code{YansWifiPhyHelper::Default} methods. Once these objects are created, we create a channel object and associate it to our PHY layer object manager to make sure -that all the PHY objects created layer by the @code{YansWifiPhyHelper} -all share the same underlying channel, that is, they share the same +that all the PHY layer objects created by the @code{YansWifiPhyHelper} +share the same underlying channel, that is, they share the same wireless medium and can communication and interfere: @verbatim @@ -1111,9 +1111,9 @@ third-0-0.pcap third-0-1.pcap third-1-0.pcap third-1-1.pcap @end verbatim The file ``third-0-0.pcap'' corresponds to the point-to-point device on node -zero -- the left side of the ``backbone.'' The file ``third-1-0.pcap'' +zero -- the left side of the ``backbone''. The file ``third-1-0.pcap'' corresponds to the point-to-point device on node one -- the right side of the -``backbone.'' The file ``third-0-1.pcap'' will be the promiscuous (monitor +``backbone''. The file ``third-0-1.pcap'' will be the promiscuous (monitor mode) trace from the Wifi network and the file ``third-1-1.pcap'' will be the promiscuous trace from the CSMA network. Can you verify this by inspecting the code? @@ -1329,9 +1329,9 @@ If you are feeling brave, there is a list of all trace sources in the @uref{http://www.nsnam.org/doxygen-release/index.html,,ns-3 Doxygen} which you can find in the ``Modules'' tab. Under the ``core'' section, you will find a link to ``The list of all trace -sources.'' You may find it interesting to try and hook some of these +sources.''. You may find it interesting to try and hook some of these traces yourself. Additionally in the ``Modules'' documentation, there is -a link to ``The list of all attributes.'' You can set the default value of +a link to ``The list of all attributes.''. You can set the default value of any of these @code{Attributes} via the command line as we have previously discussed. diff --git a/doc/tutorial/conceptual-overview.texi b/doc/tutorial/conceptual-overview.texi index cb38386bb..aa914c774 100644 --- a/doc/tutorial/conceptual-overview.texi +++ b/doc/tutorial/conceptual-overview.texi @@ -276,7 +276,7 @@ done a @end verbatim to build the project. So now if you look in the directory -@code{build/debug/ns-3} you will find the four module include files shown +@code{build/debug/ns3} you will find the four module include files shown above. You can take a look at the contents of these files and find that they do include all of the public include files in their respective modules. @@ -308,8 +308,8 @@ The next line of the script is the following, We will use this statement as a convenient place to talk about our Doxygen documentation system. If you look at the project web site, -@uref{http://www.nsnam.org,,ns-3 project}, you will find a link to ``APIs -(Doxygen)'' in the navigation bar. If you select this link, you will be +@uref{http://www.nsnam.org,,ns-3 project}, you will find a link to ``Doxygen +(ns-3-dev)'' in the navigation bar. If you select this link, you will be taken to our documentation page. Along the left side, you will find a graphical representation of the structure @@ -601,7 +601,7 @@ since we passed a @code{NodeContainer} containing one node) created by the helper. Applications require a time to ``start'' generating traffic and may take an -optional time to ``stop.'' We provide both. These times are set using the +optional time to ``stop''. We provide both. These times are set using the @code{ApplicationContainer} methods @code{Start} and @code{Stop}. These methods take @code{Time} parameters. In this case, we use an explicit C++ conversion sequence to take the C++ double 1.0 and convert it to an @@ -815,12 +815,12 @@ drwxr-xr-x utils files The source code is mainly in the @code{src} directory. You can view source code either by clicking on the directory name or by clicking on the @code{files} link to the right of the directory name. If you click on the @code{src} -directory you be taken to the lising of the @code{src} subdirectories. If you +directory, you will be taken to the listing of the @code{src} subdirectories. If you click on @code{core} subdirectory, you will find a list of files. The first file you will find (as of this writing) is @code{abort.h}. If you click on @code{abort.h} link, you will be sent to the source file for @code{abort.h}. Our example scripts are in the @code{examples} directory. The source code for the helpers we have used in this chapter can be found in the -@code{src/helpers} directory. Feel free to poke around in the directory tree to +@code{src/helper} directory. Feel free to poke around in the directory tree to get a feel for what is there and the style of @command{ns-3} programs. diff --git a/doc/tutorial/getting-started.texi b/doc/tutorial/getting-started.texi index a4bc52aac..76ad4daf3 100644 --- a/doc/tutorial/getting-started.texi +++ b/doc/tutorial/getting-started.texi @@ -44,7 +44,7 @@ the Getting Started section of the @command{ns-3} web site: @cindex tarball The @command{ns-3} code is available in Mercurial repositories on the server -code.nsnam.org. You can also download a tarball release at +@uref{http://code.nsnam.org}. You can also download a tarball release at @uref{http://www.nsnam.org/releases/}, or you can work with repositories using Mercurial. We recommend using Mercurial unless there's a good reason not to. See the end of this section for instructions on how to get a tarball @@ -53,7 +53,7 @@ release. @cindex repository The simplest way to get started using Mercurial repositories is to use the @code{ns-3-allinone} environment. This is a set of scripts that manages the -downloading and building of various subystems of @command{ns-3} for you. We +downloading and building of various subsystems of @command{ns-3} for you. We recommend that you begin your @command{ns-3} adventures in this environment as it can really simplify your life at this point. @@ -128,12 +128,13 @@ Since the release numbers are going to be changing, I will stick with the more constant ns-3-dev here in the tutorial, but you can replace the string ``ns-3-dev'' with your choice of release (e.g., ns-3.4 and ns-3.4-ref-traces) in the text below. You can find the latest version of the -code either by inspection of the repository list or by going to the ``Getting -Started'' web page and looking for the latest release identifier. +code either by inspection of the repository list or by going to the +@uref{http://www.nsnam.org/getting_started.html,,``Getting Started''} +web page and looking for the latest release identifier. Go ahead and change into the @code{ns-3-allinone} directory you created when you cloned that repository. We are now going to use the @code{download.py} -script to pull down the various pieces of @command{ns-3} you will be using/ +script to pull down the various pieces of @command{ns-3} you will be using. Go ahead and type the following into your shell (remember you can substitute the name of your chosen release number instead of @code{ns-3-dev} -- like @@ -257,15 +258,15 @@ get a copy of a release by typing the following into your Linux shell mkdir tarballs cd tarballs wget http://www.nsnam.org/releases/ns-allinone-3.4.tar.bz2 - tar xjf ns-3.4.tar.bz2 + tar xjf ns-allinone-3.4.tar.bz2 @end verbatim If you change into the directory @code{ns-allinone-3.4} you should see a number of files: @verbatim -build.py* ns-3.4-RC2/ nsc-0.5.0/ util.py -constants.py ns-3.4-RC2-ref-traces/ pybindgen-0.10.0.630/ +build.py* ns-3.4/ nsc-0.5.0/ README +constants.py ns-3.4-ref-traces/ pybindgen-0.10.0.630/ util.py @end verbatim You are now ready to build the @command{ns-3} distribution. @@ -404,7 +405,7 @@ Configuration finished successfully (00:00:02); project is now ready to build. @end verbatim Note the last part of the above output. Some ns-3 options are not enabled by -default or require support from the underlying system to work properly +default or require support from the underlying system to work properly. For instance, to enable XmlTo, the library libxml-2.0 must be found on the system. in the example above, this library was not found and the corresponding feature was not enabled. There is a feature to use sudo to set the suid bit of @@ -438,7 +439,7 @@ programs to run as root. There are many other configure- and build-time options available in waf. To explore these options, type: @verbatim - ./waf -- help + ./waf --help @end verbatim We'll use some of the testing-related commands in the next section. @@ -488,7 +489,7 @@ This command is typically run by @code{users} to quickly verify that an @cindex regression tests You can also run our regression test suite to ensure that your distribution and -tool chain have produced binaries that generate output that is identical to +toolchain have produced binaries that generate output that is identical to known-good reference output files. You downloaded these reference traces to your machine during the download process above. (Warning: The @code{ns-3.2} and @code{ns-3.3} releases do not use the @code{ns-3-allinone} environment @@ -505,7 +506,7 @@ along with a suggestion on diff parameters and options in order to see what has gone awry. If the error was discovered in a pcap file, it will be useful to convert the pcap files to text using tcpdump prior to comparison. -Some regression tests wmay be SKIPped if the required support +Some regression tests may be SKIPped if the required support is not present. To run the regression tests, you provide Waf with the regression flag. @@ -568,7 +569,7 @@ ubiquitous hello world program by typing the following: @end verbatim Waf first checks to make sure that the program is built correctly and -executes a build if required. Waf then then executes the program, which +executes a build if required. Waf then executes the program, which produces the following output. @verbatim diff --git a/doc/tutorial/introduction.texi b/doc/tutorial/introduction.texi index 299264155..0fa1f05b3 100644 --- a/doc/tutorial/introduction.texi +++ b/doc/tutorial/introduction.texi @@ -226,7 +226,7 @@ only have to understand a tiny and intuitively obvious subset of Python in order to extend the system in most cases. For those interested in the gory details of Waf, the main web site can be -found at @uref{http://freehackers.org/~tnagy/waf.html}. +found at @uref{http://code.google.com/p/waf/}. @node Development Environment @section Development Environment @@ -275,7 +275,7 @@ problems. @cindex MinGW If you do use Cygwin or MinGW; and use Logitech products, we will save you quite a bit of heartburn right off the bat and encourage you to take a look -at the @uref{http://www.mingw.org/MinGWiki/index.php/FAQ,,MinGW FAQ}. +at the @uref{http://oldwiki.mingw.org/index.php/FAQ,,MinGW FAQ}. @cindex Logitech Search for ``Logitech'' and read the FAQ entry, ``why does make often @@ -295,7 +295,7 @@ such as VMware server and install a Linux virtual machine. We will assume a basic facility with the Berkeley Sockets API in the examples used in this tutorial. If you are new to sockets, we recommend reviewing the API and some common usage cases. For a good overview of programming TCP/IP -sockets we recommend @uref{http://www.elsevier.com/wps/product/cws_home/680765,,Practical TCP/IP Sockets in C, Donahoo and Calvert}. +sockets we recommend @uref{http://www.elsevier.com/wps/find/bookdescription.cws_home/717656/description#description,,TCP/IP Sockets in C, Donahoo and Calvert}. There is an associated web site that includes source for the examples in the book, which you can find at: @@ -305,6 +305,6 @@ If you understand the first four chapters of the book (or for those who do not have access to a copy of the book, the echo clients and servers shown in the website above) you will be in good shape to understand the tutorial. There is a similar book on Multicast Sockets, -@uref{http://www.elsevier.com/wps/product/cws_home/700736,,Multicast Sockets, Makofske and Almeroth}. +@uref{http://www.elsevier.com/wps/find/bookdescription.cws_home/700736/description#description,,Multicast Sockets, Makofske and Almeroth}. that covers material you may need to understand if you look at the multicast examples in the distribution. diff --git a/doc/tutorial/tweaking.texi b/doc/tutorial/tweaking.texi index 8a7ebcbf5..ad25e14ff 100644 --- a/doc/tutorial/tweaking.texi +++ b/doc/tutorial/tweaking.texi @@ -112,7 +112,7 @@ actually logging messages from the @code{UdpEchoClientApplication} and example, to print more information by setting its logging level via the NS_LOG environment variable. -I am going to assume from here on that are using an sh-like shell that uses +I am going to assume from here on that you are using an sh-like shell that uses the``VARIABLE=value'' syntax. If you are using a csh-like shell, then you will have to convert my examples to the ``setenv VARIABLE value'' syntax required by those shells. @@ -353,7 +353,7 @@ Recall that we have defined a logging component in that script: You now know that you can enable all of the logging for this component by setting the @code{NS_LOG} environment variable to the various levels. Let's -go ahead add some logging to the script. The macro used to add an +go ahead and add some logging to the script. The macro used to add an informational level log message is @code{NS_LOG_INFO}. Go ahead and add one (just before we start creating the nodes) that tells you that the script is ``Creating Topology.'' This is done as in this code snippet, @@ -439,7 +439,7 @@ in the following code, This simple two line snippet is actually very useful by itself. It opens the door to the @command{ns-3} global variable and @code{Attribute} systems. Go -ahead and add that two lines of code to the @code{scratch/first.cc} script at +ahead and add that two lines of code to the @code{scratch/myfirst.cc} script at the start of @code{main}. Go ahead and build the script and run it, but ask the script for help in the following way, @@ -497,7 +497,7 @@ is created in the system. We overrode this default with the @code{Attribute} setting in the @code{PointToPointHelper} above. Let's use the default values for the point-to-point devices and channels by deleting the @code{SetDeviceAttribute} call and the @code{SetChannelAttribute} call from -the @code{first.cc} we have in the scratch directory. +the @code{myfirst.cc} we have in the scratch directory. Your script should now just declare the @code{PointToPointHelper} and not do any @code{set} operations as in the following example, @@ -801,8 +801,8 @@ the script just after the GNU GPL comment: #include @end verbatim -Then, right before the before the call to @code{Simulator::Run ()}, add the -following lines of code. +Then, right before the call to @code{Simulator::Run ()}, add the +following lines of code: @verbatim std::ofstream ascii; @@ -811,7 +811,7 @@ following lines of code. @end verbatim The first two lines are just vanilla C++ code to open a stream that will be -written to a file named ``myfirst.tr.'' See your favorite C++ tutorial if you +written to a file named ``myfirst.tr''. See your favorite C++ tutorial if you are unfamiliar with this code. The last line of code in the snippet above tells @command{ns-3} that you want to enable ASCII tracing on all point-to-point devices in your simulation; and you want the (provided) trace @@ -900,7 +900,7 @@ managed in the @command{ns-3} core code that contains all of the nodes that are created in a script. Just as a filesystem may have directories under the root, we may have node numbers in the @code{NodeList}. The string @code{/NodeList/0} therefore refers to the zeroth node in the @code{NodeList} -which we typically think of as ``node 0.'' In each node there is a list of +which we typically think of as ``node 0''. In each node there is a list of devices that have been installed. This list appears next in the namespace. You can see that this trace event comes from @code{DeviceList/0} which is the zeroth device installed in the node. @@ -928,14 +928,12 @@ device on the node with the echo server. I have reproduced that event below. 00 r 01 2.25732 02 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx - 03 ns3::PppHeader ( - 04 Point-to-Point Protocol: IP (0x0021)) - 05 ns3::Ipv4Header ( - 06 tos 0x0 ttl 64 id 0 offset 0 flags [none] - 07 length: 1052 10.1.1.1 > 10.1.1.2) - 08 ns3::UdpHeader ( - 09 length: 1032 49153 > 9) - 10 Payload (size=1024) + 03 ns3::Ipv4Header ( + 04 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none] + 05 length: 1052 10.1.1.1 > 10.1.1.2) + 06 ns3::UdpHeader ( + 07 length: 1032 49153 > 9) + 08 Payload (size=1024) @end verbatim Notice that the trace operation is now @code{r} and the simulation time has @@ -978,7 +976,7 @@ file names will be built using the prefix, the node number, the device number and a ``.pcap'' suffix. In our example script, we will eventually see files named ``myfirst-0-0.pcap'' -and ``myfirst.1-0.pcap'' which are the pcap traces for node 0-device 0 and +and ``myfirst-1-0.pcap'' which are the pcap traces for node 0-device 0 and node 1-device 0, respectively. Once you have added the line of code to enable pcap tracing, you can run the @@ -1010,9 +1008,9 @@ at the @code{pcap} files. 2.257324 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024 @end verbatim -You can see in the dump of @code{myfirst-0.0.pcap} (the client device) that the +You can see in the dump of @code{myfirst-0-0.pcap} (the client device) that the echo packet is sent at 2 seconds into the simulation. If you look at the -second dump (@code{first-1-0.pcap}) you can see that packet being received +second dump (@code{myfirst-1-0.pcap}) you can see that packet being received at 2.257324 seconds. You see the packet being echoed back at 2.257324 seconds in the second dump, and finally, you see the packet being received back at the client in the first dump at 2.514648 seconds. From 1207fdcbd2f239ba07298f783845a9a9a6aac535 Mon Sep 17 00:00:00 2001 From: Craig Dowell Date: Mon, 15 Jun 2009 15:42:32 -0700 Subject: [PATCH 18/19] update dox for waf --check --- doc/build.txt | 2 +- doc/main.h | 4 ++-- doc/manual/new-models.texi | 2 +- doc/release_steps.txt | 4 ++-- doc/tutorial/getting-started.texi | 4 ++-- doc/tutorial/in-process/introduction.texi | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/build.txt b/doc/build.txt index 984e809d4..d56554d4f 100644 --- a/doc/build.txt +++ b/doc/build.txt @@ -36,7 +36,7 @@ The resulting binaries are placed in build//srcpath. Other waf usages include: - 1. ./waf check + 1. ./waf --check Runs the unit tests 2. ./waf --doxygen diff --git a/doc/main.h b/doc/main.h index 7dba8c51a..ce9d233e0 100644 --- a/doc/main.h +++ b/doc/main.h @@ -27,8 +27,8 @@ * ns-3 requires Doxygen version 1.5.4 or greater to fully build all items, * although earlier versions of Doxygen will mostly work. * - * Type "./waf check" followed by "./waf --doxygen" to build the documentation. - * There is a program that runs during "./waf check" that builds pieces of + * Type "./waf --check" followed by "./waf --doxygen" to build the documentation. + * There is a program that runs during "./waf --check" that builds pieces of * the documentation through introspection. The doc/ directory contains * configuration for Doxygen (doxygen.conf and main.txt). The Doxygen * build process puts html files into the doc/html/ directory, and latex diff --git a/doc/manual/new-models.texi b/doc/manual/new-models.texi index a73e3e201..71f75c506 100644 --- a/doc/manual/new-models.texi +++ b/doc/manual/new-models.texi @@ -205,7 +205,7 @@ add this to @code{src/common/wscript}. It is really just a matter of adding the .cc file to the rest of the source files, and the .h file to the list of the header files. -Now, pop up to the top level directory and type "./waf check". You +Now, pop up to the top level directory and type "./waf --check". You shouldn't have broken anything by this operation. @subsection include guards Next, let's add some diff --git a/doc/release_steps.txt b/doc/release_steps.txt index f4d666be4..d46761fe6 100644 --- a/doc/release_steps.txt +++ b/doc/release_steps.txt @@ -6,12 +6,12 @@ Steps in doing an ns-3 release - revise and check in RELEASE_NOTES - DO NOT change VERSION at this time - confirm that Doxygen builds cleanly and without warnings - (./waf check; ./waf --doxygen), and check in any necessary changes + (./waf --check; ./waf --doxygen), and check in any necessary changes - ensure no regressions (./waf --regression) 3. ./waf configure; ./waf dist - this will create an ns-3-dev.tar.bz2 tarball - this will also create a ns-3-dev-ref-traces.tar.bz2 tarball -4. test dev tarball on release platforms (waf check and maybe some other +4. test dev tarball on release platforms (waf --check and maybe some other scripts) 5. once you are happy with the tarball, tag ns-3-dev and ns-3-dev-ref-traces - hg tag "ns-3.x" diff --git a/doc/tutorial/getting-started.texi b/doc/tutorial/getting-started.texi index 76ad4daf3..8b9a49e1d 100644 --- a/doc/tutorial/getting-started.texi +++ b/doc/tutorial/getting-started.texi @@ -456,10 +456,10 @@ but now you know how to change the configuration and build optimized code. @cindex unit tests You can run the unit tests of the @command{ns-3} distribution by running the -``check'' command, +``--check'' option, @verbatim - ./waf check + ./waf --check @end verbatim You should see a report from each unit test that executes indicating that the diff --git a/doc/tutorial/in-process/introduction.texi b/doc/tutorial/in-process/introduction.texi index 17cb4d7c9..58ff959bd 100644 --- a/doc/tutorial/in-process/introduction.texi +++ b/doc/tutorial/in-process/introduction.texi @@ -562,7 +562,7 @@ The build system is now configured and you can build the debug versions of the ns-3 programs by simply typing, @verbatim - ./waf check + ./waf --check @end verbatim You will see many Waf status messages displayed as the system compiles. The From 84e9d6f051a48d0e93bcbbc07b37b39e8fdda54e Mon Sep 17 00:00:00 2001 From: Pavel Boyko Date: Tue, 16 Jun 2009 17:58:06 +0400 Subject: [PATCH 19/19] Beacon interval is 0.5s by default --- src/devices/mesh/mesh-wifi-interface-mac.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/mesh/mesh-wifi-interface-mac.cc b/src/devices/mesh/mesh-wifi-interface-mac.cc index e2d21cad1..30db7fea3 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.cc +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc @@ -46,12 +46,12 @@ MeshWifiInterfaceMac::GetTypeId () .SetParent () .AddConstructor () .AddAttribute ("BeaconInterval", "Beacon Interval", - TimeValue (Seconds (1.0)), + TimeValue (Seconds (0.5)), MakeTimeAccessor (&MeshWifiInterfaceMac::m_beaconInterval), MakeTimeChecker () ) .AddAttribute ("RandomStart", "Window when beacon generating starts (uniform random) in seconds", - TimeValue (Seconds (0.1)), + TimeValue (Seconds (0.5)), MakeTimeAccessor (&MeshWifiInterfaceMac::m_randomStart), MakeTimeChecker () )