# HG changeset patch # User Tommaso Pecorella # Date 1432674882 -7200 # Parent 1362b0b62144eaa389a81ae29a6e9dff95975ae3 Aodv application-less diff --git a/src/aodv/test/aodv-id-cache-test-suite.cc b/src/aodv/test/aodv-id-cache-test-suite.cc --- a/src/aodv/test/aodv-id-cache-test-suite.cc +++ b/src/aodv/test/aodv-id-cache-test-suite.cc @@ -37,11 +37,14 @@ // Tests //----------------------------------------------------------------------------- /// Unit test for id cache -struct IdCacheTest : public TestCase +class IdCacheTest : public TestCase { +public: IdCacheTest () : TestCase ("Id Cache"), cache (Seconds (10)) {} virtual void DoRun (); + +private: void CheckTimeout1 (); void CheckTimeout2 (); void CheckTimeout3 (); @@ -93,7 +96,7 @@ class IdCacheTestSuite : public TestSuite { public: - IdCacheTestSuite () : TestSuite ("routing-id-cache", UNIT) + IdCacheTestSuite () : TestSuite ("aodv-routing-id-cache", UNIT) { AddTestCase (new IdCacheTest, TestCase::QUICK); } diff --git a/src/aodv/test/aodv-regression.cc b/src/aodv/test/aodv-regression.cc --- a/src/aodv/test/aodv-regression.cc +++ b/src/aodv/test/aodv-regression.cc @@ -20,7 +20,6 @@ #include "aodv-regression.h" #include "bug-772.h" -#include "loopback.h" #include "ns3/simulator.h" #include "ns3/mobility-helper.h" @@ -32,19 +31,18 @@ #include "ns3/internet-stack-helper.h" #include "ns3/ipv4-address-helper.h" #include "ns3/abort.h" -#include "ns3/udp-echo-helper.h" #include "ns3/mobility-model.h" #include "ns3/pcap-file.h" #include "ns3/aodv-helper.h" -#include "ns3/v4ping-helper.h" #include "ns3/nqos-wifi-mac-helper.h" #include "ns3/config.h" #include "ns3/pcap-test.h" #include "ns3/rng-seed-manager.h" +#include "ns3/icmpv4.h" #include using namespace ns3; -using namespace aodv; +// using namespace aodv; //----------------------------------------------------------------------------- // Test suite //----------------------------------------------------------------------------- @@ -56,17 +54,12 @@ SetDataDir (NS_TEST_SOURCEDIR); // General RREQ-RREP-RRER test case AddTestCase (new ChainRegressionTest ("aodv-chain-regression-test"), TestCase::QUICK); - /// \internal - /// \bugid{606} test case, should crash if bug is not fixed + // \bugid{606} test case, should crash if bug is not fixed AddTestCase (new ChainRegressionTest ("bug-606-test", Seconds (10), 3, Seconds (1)), TestCase::QUICK); - /// \internal - /// \bugid{772} UDP test case + // \bugid{772} UDP test case AddTestCase (new Bug772ChainTest ("udp-chain-test", "ns3::UdpSocketFactory", Seconds (3), 10), TestCase::QUICK); - /// \internal - /// \bugid{772} TCP test case + // \bugid{772} TCP test case AddTestCase (new Bug772ChainTest ("tcp-chain-test", "ns3::TcpSocketFactory", Seconds (3), 10), TestCase::QUICK); - // Ping loopback test case - AddTestCase (new LoopbackTestCase (), TestCase::QUICK); } } g_aodvRegressionTestSuite; @@ -81,7 +74,8 @@ m_time (t), m_size (size), m_step (120), - m_arpAliveTimeout (arpAliveTimeout) + m_arpAliveTimeout (arpAliveTimeout), + m_seq (0) { } @@ -91,6 +85,35 @@ } void +ChainRegressionTest::SendPing () +{ + if (Simulator::Now () >= m_time) + { + return; + } + + Ptr p = Create (); + Icmpv4Echo echo; + echo.SetSequenceNumber (m_seq); + m_seq++; + echo.SetIdentifier (0); + + Ptr dataPacket = Create (56); + echo.SetData (dataPacket); + p->AddHeader (echo); + Icmpv4Header header; + header.SetType (Icmpv4Header::ECHO); + header.SetCode (0); + if (Node::ChecksumEnabled ()) + { + header.EnableChecksum (); + } + p->AddHeader (header); + m_socket->Send (p, 0); + Simulator::Schedule (Seconds (1), &ChainRegressionTest::SendPing, this); +} + +void ChainRegressionTest::DoRun () { RngSeedManager::SetSeed (12345); @@ -173,11 +196,15 @@ Ipv4InterfaceContainer interfaces = address.Assign (devices); // 3. Setup ping - V4PingHelper ping (interfaces.GetAddress (m_size - 1)); - ping.SetAttribute ("Verbose", BooleanValue (false)); // don't need verbose ping in regression test - ApplicationContainer p = ping.Install (m_nodes->Get (0)); - p.Start (Seconds (0)); - p.Stop (m_time); + m_socket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::Ipv4RawSocketFactory")); + m_socket->SetAttribute ("Protocol", UintegerValue (1)); // icmp + // m_socket->SetRecvCallback (MakeCallback (&V4Ping::Receive, this)); + InetSocketAddress src = InetSocketAddress (Ipv4Address::GetAny (), 0); + m_socket->Bind (src); + InetSocketAddress dst = InetSocketAddress (interfaces.GetAddress (m_size - 1), 0); + m_socket->Connect (dst); + + SendPing (); // 4. write PCAP wifiPhy.EnablePcapAll (CreateTempDirFilename (m_prefix)); diff --git a/src/aodv/test/aodv-regression.h b/src/aodv/test/aodv-regression.h --- a/src/aodv/test/aodv-regression.h +++ b/src/aodv/test/aodv-regression.h @@ -23,6 +23,7 @@ #include "ns3/test.h" #include "ns3/nstime.h" +#include "ns3/socket.h" #include "ns3/node-container.h" using namespace ns3; @@ -177,6 +178,10 @@ const double m_step; /// ARP alive timeout const Time m_arpAliveTimeout; + /// Socket + Ptr m_socket; + /// Sequence number + uint16_t m_seq; /// Create test topology void CreateNodes (); @@ -186,6 +191,8 @@ void CheckResults (); /// Go void DoRun (); + /// Send one ping + void SendPing (); }; #endif /* AODV_REGRESSION_H */ diff --git a/src/aodv/test/bug-772.cc b/src/aodv/test/bug-772.cc --- a/src/aodv/test/bug-772.cc +++ b/src/aodv/test/bug-772.cc @@ -33,7 +33,6 @@ #include "ns3/internet-stack-helper.h" #include "ns3/ipv4-address-helper.h" #include "ns3/abort.h" -#include "ns3/udp-echo-helper.h" #include "ns3/mobility-model.h" #include "ns3/pcap-file.h" #include "ns3/aodv-helper.h" @@ -43,7 +42,6 @@ #include "ns3/on-off-helper.h" #include "ns3/inet-socket-address.h" #include "ns3/data-rate.h" -#include "ns3/packet-sink-helper.h" #include "ns3/pcap-test.h" #include @@ -59,8 +57,8 @@ m_proto (proto), m_time (t), m_size (size), - m_step (120) -{ + m_step (120), + m_port (9){ } Bug772ChainTest::~Bug772ChainTest () @@ -69,6 +67,17 @@ } void +Bug772ChainTest::SendData (Ptr socket) +{ + if (Simulator::Now () < m_time) + { + socket->Send (Create (1000)); + Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0.125), + &Bug772ChainTest::SendData, this, socket); + } +} + +void Bug772ChainTest::DoRun () { RngSeedManager::SetSeed (12345); @@ -144,16 +153,26 @@ Ipv4InterfaceContainer interfaces = address.Assign (devices); // 3. Setup UDP source and sink - uint16_t port = 9; // Discard port (RFC 863) - OnOffHelper onoff (m_proto, Address (InetSocketAddress (interfaces.GetAddress (m_size-1), port))); - onoff.SetConstantRate (DataRate (64000)); - onoff.SetAttribute ("PacketSize", UintegerValue (1000)); - ApplicationContainer app = onoff.Install (m_nodes->Get (0)); - app.Start (Seconds (1.0)); - app.Stop (m_time); - PacketSinkHelper sink (m_proto, Address (InetSocketAddress (Ipv4Address::GetAny (), port))); - app = sink.Install (m_nodes->Get (m_size - 1)); - app.Start (Seconds (0.0)); + m_sendSocket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName (m_proto)); + m_sendSocket->Bind (); + m_sendSocket->Connect (InetSocketAddress (interfaces.GetAddress (m_size-1), m_port)); + m_sendSocket->SetAllowBroadcast (true); + Simulator::ScheduleWithContext (m_sendSocket->GetNode ()->GetId (), Seconds (1.0), + &Bug772ChainTest::SendData, this, m_sendSocket); + +// +// OnOffHelper onoff (m_proto, Address (InetSocketAddress (interfaces.GetAddress (m_size-1), m_port))); +// onoff.SetConstantRate (DataRate (64000)); +// // 1000 * 8 / 64000 = 0.125 s +// onoff.SetAttribute ("PacketSize", UintegerValue (1000)); +// ApplicationContainer app = onoff.Install (m_nodes->Get (0)); +// app.Start (Seconds (1.0)); +// app.Stop (m_time); + + m_recvSocket = Socket::CreateSocket (m_nodes->Get (m_size - 1), TypeId::LookupByName (m_proto)); + m_recvSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), m_port)); + m_recvSocket->Listen (); + m_recvSocket->ShutdownSend (); // 4. write PCAP on the first and last nodes only wifiPhy.EnablePcap (CreateTempDirFilename (m_prefix), devices.Get (0)); diff --git a/src/aodv/test/bug-772.h b/src/aodv/test/bug-772.h --- a/src/aodv/test/bug-772.h +++ b/src/aodv/test/bug-772.h @@ -24,6 +24,7 @@ #include "ns3/test.h" #include "ns3/nstime.h" #include "ns3/node-container.h" +#include "ns3/socket.h" using namespace ns3; @@ -62,6 +63,8 @@ const uint32_t m_size; /// Chain step, meters const double m_step; + /// port number + const uint16_t m_port; /// Create test topology void CreateNodes (); @@ -71,6 +74,17 @@ void CheckResults (); /// Go void DoRun (); + + /// Receiving socket + Ptr m_recvSocket; + /// Transmitting socket + Ptr m_sendSocket; + + /** + * Send data + * \param socket the sending socket + */ + void SendData (Ptr socket); }; #endif /* BUG_772_H */ diff --git a/src/aodv/test/loopback.cc b/src/aodv/test/loopback.cc --- a/src/aodv/test/loopback.cc +++ b/src/aodv/test/loopback.cc @@ -18,8 +18,10 @@ * Authors: Pavel Boyko */ -#include "loopback.h" +#include "ns3/test.h" #include "ns3/simulator.h" +#include "ns3/socket-factory.h" +#include "ns3/udp-socket-factory.h" #include "ns3/mobility-helper.h" #include "ns3/double.h" #include "ns3/uinteger.h" @@ -45,12 +47,66 @@ namespace aodv { -static uint32_t g_count (0); +/** + * \ingroup aodv + * + * \brief AODV loopback UDP echo test case + */ +class LoopbackTestCase : public TestCase +{ + uint32_t m_count; //!< number of packet received; + Ptr m_txSocket; + Ptr m_echoSocket; + Ptr m_rxSocket; + uint16_t m_echoSendPort; + uint16_t m_echoReplyPort; -static void -PingRtt (std::string context, Time rtt) + void SendData (Ptr socket); + void ReceivePkt (Ptr socket); + void EchoData (Ptr socket); + +public: + LoopbackTestCase (); + void DoRun (); +}; + +LoopbackTestCase::LoopbackTestCase () : + TestCase ("UDP Echo 127.0.0.1 test"), m_count (0) { - g_count++; + m_echoSendPort = 1233; + m_echoReplyPort = 1234; +} + +void LoopbackTestCase::ReceivePkt (Ptr socket) +{ + Ptr receivedPacket = socket->Recv (std::numeric_limits::max (), 0); + + m_count ++; +} + +void +LoopbackTestCase::EchoData (Ptr socket) +{ + Address from; + Ptr receivedPacket = socket->RecvFrom (std::numeric_limits::max (), 0, from); + + Ipv4Address src = InetSocketAddress::ConvertFrom (from).GetIpv4 (); + Address to = InetSocketAddress (src, m_echoReplyPort); + + receivedPacket->RemoveAllPacketTags (); + receivedPacket->RemoveAllByteTags (); + + socket->SendTo (receivedPacket, 0, to); +} + +void +LoopbackTestCase::SendData (Ptr socket) +{ + Address realTo = InetSocketAddress (Ipv4Address::GetLoopback (), m_echoSendPort); + socket->SendTo (Create (123), 0, realTo); + + Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (1.0), + &LoopbackTestCase::SendData, this, socket); } void @@ -80,23 +136,49 @@ address.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer interfaces = address.Assign (devices); - // Setup ping - Ptr ping = CreateObject (); - ping->SetAttribute ("Remote", Ipv4AddressValue (Ipv4Address::GetLoopback ())); - nodes.Get (0)->AddApplication (ping); - ping->SetStartTime (Seconds (0)); - ping->SetStopTime (Seconds (4)); - Names::Add ("ping", ping); - Config::Connect ("/Names/ping/Rtt", MakeCallback (&PingRtt)); + // Setup echos + Ptr socketFactory = nodes.Get (0)->GetObject (); + m_rxSocket = socketFactory->CreateSocket (); + m_rxSocket->Bind (InetSocketAddress (Ipv4Address::GetLoopback (), m_echoReplyPort)); + m_rxSocket->SetRecvCallback (MakeCallback (&LoopbackTestCase::ReceivePkt, this)); + + m_echoSocket = socketFactory->CreateSocket (); + m_echoSocket->Bind (InetSocketAddress (Ipv4Address::GetLoopback (), m_echoSendPort)); + m_echoSocket->SetRecvCallback (MakeCallback (&LoopbackTestCase::EchoData, this)); + + m_txSocket = socketFactory->CreateSocket (); + + Simulator::ScheduleWithContext (m_txSocket->GetNode ()->GetId (), Seconds (1.0), + &LoopbackTestCase::SendData, this, m_txSocket); // Run Simulator::Stop (Seconds (5)); Simulator::Run (); + + m_txSocket->Close (); + m_echoSocket->Close (); + m_rxSocket->Close (); + Simulator::Destroy (); // Check that 4 packets delivered - NS_TEST_ASSERT_MSG_EQ (g_count, 4, "Exactly 4 ping replies must be delivered."); + NS_TEST_ASSERT_MSG_EQ (m_count, 4, "Exactly 4 echo replies must be delivered."); } +//----------------------------------------------------------------------------- +// Test suite +//----------------------------------------------------------------------------- +class AodvLoopbackTestSuite : public TestSuite +{ +public: + AodvLoopbackTestSuite () : TestSuite ("routing-aodv-loopback", SYSTEM) + { + SetDataDir (NS_TEST_SOURCEDIR); + // UDP Echo loopback test case + AddTestCase (new LoopbackTestCase (), TestCase::QUICK); + } +} g_aodvLoopbackTestSuite; + + } } diff --git a/src/aodv/test/loopback.h b/src/aodv/test/loopback.h deleted file mode 100644 --- a/src/aodv/test/loopback.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2010 IITP RAS - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Authors: Pavel Boyko - */ - -#ifndef AODV_LOOPBACK_H -#define AODV_LOOPBACK_H -#include "ns3/test.h" -#include - -namespace ns3 -{ -namespace aodv -{ -/** - * \ingroup aodv - * - * \brief AODV ping 127.0.0.1 test case - */ -struct LoopbackTestCase : public TestCase -{ - LoopbackTestCase () : TestCase ("Ping 127.0.0.1 test") {} - /// Run test - void DoRun (); -}; - -} -} - -#endif /* AODV_LOOPBACK_H */ diff --git a/src/aodv/test/tcp-chain-test-0-0.pcap b/src/aodv/test/tcp-chain-test-0-0.pcap index 0237148690060e6f7648f18c31e750dc894278e0..682dfb9b06f6c4362de0e765c0a4a22405013ed2 GIT binary patch literal 46848 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 diff --git a/src/aodv/test/tcp-chain-test-9-0.pcap b/src/aodv/test/tcp-chain-test-9-0.pcap index f25b92cf7c2a0a096ee5a931b85cc205bd44ffc4..da0249a6a9b875745093c0024b37789316f4b3b7 GIT binary patch literal 18146 zc%1E9Yiv|S6rOwU?sj(z%0@Z{B6k}slrUEf6f_hc+OQYNAC5LVVB|BUAw!euxT)_uScgxik07%+{Y~PI9}j zr+3abv)^~l%(>g+hxW9ZBtks9c8!pwxqtuJM#uw%Uhy>ez+6{__jA`S3%q0&AvN%p zF`SU3VI-aFnz_;32)|7lzTsOF=E7slURfp^nGWf1pRGq zY_LREaJ*?GFj5Y)&5vi&_x(}ak-hOgcE&3r^g5o-y;y`k&Udo=ImGC?!5VfO#Aj>9q{Ca58TTa-u;R4{5}!-!-!w#A%4tWy zC09E>mwYrEwi@A8W@gr+TIGtMws&lmp}%t*vW|@MYeMUoiuu{fS;cN6H@~x#qmjO)y^PB?P^n z&l)eAikeRhrshYmOk(vDE|WwS>rA3eZot3Aml1aQ8R>Abr8ozL&Mm@o5IByEuoUMY z+sOAE1mm4_#uKAoUScVBENOPHV2XAuF-Kc#-0@v)eL(f)#kp@Jg2GpLcCv5{y}krL zXJKCg98cYiMDw%ZgHw<>vwaDJpEJHclF#|{l!zj4rP#a`#qw4xbXJM{L}O{wCNdz+ z?+*XO%0GQS;`KH1P@Rgq4J>zK7 zXW$lKXVjn!_2Rr-kD&0Y*0Q+>3Z{-U8$1fUj>u80I}(*BwYDd!c&gB1NKPx*Qw5Xm z9}4$-F=qB42>egu)_xhjch5x?nIz3-k~o%03cCoGNurDBN@>$3GN8wY=VaWy;&|nm zB+F)!h%A$=z5utl>|90}>c#0fkD%}~$?gjX3MP|e3?79zlZa95{-i*n)G-GORK0ap zsYy(!!&(Wi)bA-0ZQ4Wz{F{0ZVW+RuR~@fhsa#h(Dpl$dxW#4X&y=BFoOy>36uwf& zeuki6d+P>|LZVa@1svy7J5+tnZng($4zAA$?`OVN^*Or@L5#fmobdjM>Zqd6*{kYi z_%ko3muNFnGM&h_Tq=LE-snW8EH-kWBrc1i7v zZ?cwf`8WO><(D>XA_M-7nCEPMyV;2M}aFMHqLBL(ke0Pf`_W z(ZO5LKDcbJF$-|0zQXzpqoqyhhqwaK_!)vl^C+_z_wqAF9dB5gnKe$UBe=V8iFFV6XPS(Rzu zsj4!)CXWKIGIA76CuK^Fohnd#_o~m7JVC|2du0W`dj&B@osxYTdu!toe0NNYtDY#b znWO~EBsXp*d?xvvu9P-yA_M+SpNO#2=k9BcSMk@9Y$hp`W)k=VYRb-j%1|%P{7DE3 zKa(WyLQpW7gjhTZNhT4Z*wCobqHQr+9EoYMawpMR)HX;1{_SX#Y4O)al@=RVEe?@s karp_j#bxJ3Rt25&WLn(wuu6-S7LP)#MKOvM&7!LLFWKjX8UO$Q diff --git a/src/aodv/test/udp-chain-test-0-0.pcap b/src/aodv/test/udp-chain-test-0-0.pcap index a3482aa60a72314e91b99510ea63d44179bfc5a8..c899b56d52fd35572794f48251c516ef05bf6a38 GIT binary patch literal 36702 zc%1E=KWx)L6vpqI|8ZN|N=QH{1c@O7po&(&P>C!^9XlWd6Iqa8BCs%lA~u%Ng%!~S zP{mM~Dh5=khygKVD2Ra}Vq!p51q%$Q_&K@6=ezS|f8S5Co%*GIK0E#V)v>;v?Kf+I z$P2~(z7V(iue)c2xGZ{8xlJ`9E>+ZgeLY82aY=|dS|z81s7fiLX+KyAR>V;u0?}J1 z2Fp@M^?SJ_T|KI5?&uL%dIVyy?DdfSK3DsbeH@d?9t-qK#yD!xx_bO>T2~#8rPqRH z&6=}Me=N>EL8_0;>T~e06pd)vi2E$|1{fy$)Ks6MkY!QK$A>3cua1xiqgOe#z4j3) zCZZ)xJ8hBJ9#yAjlHF{hnoD<+!*0EItFuqDg&E7%v$!Ks;akVoyV^~UdQo^$2&NFgYmvSW;uS^ zh?ae4zmhy3ACG12{h{Mh)FXMI$$qwy$1fiXNn`l8Q{9rHlG_si049)b{5_ea%KuLJ zt|`q?t|@~n*r(H3SFoS+77f#`mn}oXE<(cqU<>KS(hr~aS=Mz!!utTg8PbjVZkG4i z{q1ujZ9`SyMgZUo>Bed&=W!!VT{i-_5db(ty3zWQ%Wxy-zFAa7b0e#Us=$o^z!%bu zubTyr8%f<$&B2WTz!}nw&3AYi#IZUg|% z#1E9bC}p^j53ek$qPdX`Lsj5L0N@Mh#?40+j~hwdQ!T)a0Kl2}d9%lr3^y|I#G)#i z8`&~c1#ScYzL0Kg+zCByBy~@<2sZ)%XX5A0?u8j{Q6KZ=Eq3&*y1<*aD3f`MwEow$vxmxCl#U)FBjc7MO6l# z@cdb)CaTQVw1zno?`V6)c}urYRX<;_Xqe_e=VV&L;6MT33+aYGV@Bw@QHA#bfHU!b ze9nv+s`@i#8iuOCjR3$G(hYyc%%rXxA>0T6oFUzCXUtI5pE0v+s0!Q&0DK|c@Mp}_ zbln((8v%eb@t4oej2Wu>GiI8Gs=$o^z!%aDf5uGe8{Toa5db(ty5Y{4p{hS)re&xK z+z0@CA>Ht2%%r~Ioq!twfHU#)X3mTms`@i#+J>sYjR3$G(hYycOzIon18^e%a3+4< U%$YGmRe#3Js-Y@yBLMK_KU_z{p#T5? diff --git a/src/aodv/test/udp-chain-test-9-0.pcap b/src/aodv/test/udp-chain-test-9-0.pcap index 823290d5b595cd7d20e6cc3a8158b256ade1fcb4..3b0e4144c6cec351af3be6a64c36ba16f773a3c0 GIT binary patch literal 19774 zc%1E;zfTlF6vyA}9e1~P!rftG;x8Hvi3L|kq6x({1WO8yv699ZJ38B=wBha#FcB({ z=Dm8OXrd`i@b%0iT*qaQ2=i*$)7pyV8>_u{Uc zxBAICqb^@9GeX0RkkorJLqx~;l4~6`eTF#OI(WvxTcRcExQnPWKCv^Ri3QS@wG!^&6q&*lV3^{-~_ZZKZc;Dpi$NKbG}V zD5rL)6n)MuMRFbIAIcf?TZSvB%j%;KuKjBavVSGn@8*tST1{53e>AMOmY&wkT5n0M zw<*^d*P_;y4LRe^H`kp#YrE?PzOxs88txKp9dqWpMBN)yOYhqHLDsI_dnq!i7rTPS zBa!f7zK7;h>&?f?xs|Lp-otG{VeXg!0G`0!xY0FOMLid8UkEas)4v=zoYT^sBj6kW ze1^SIy<)J6a?V2Z_mJH=Gtn>I42obzBa%y7=tUg&Vn zw(guEI0pcqVQ)w5Xv-~e^;(#7q+Q2OPqU_l zx!;V|&y*H!4xAR|!r!Q$IW5f9-_@MsNzxG7lO)8G1OT65Z}h7MtEeZ5J#`fu&Y8Mu z>dq;{IRN+!d&8c(;;KD$#Z`CeYF2kn16lsVlC!Q&)4kbI!pz0Qd}h z!=Ae0sy%hZRd?!YUU$wgoCAQ*us7_fE3Vp8S6p?cu3EZtM&KL(e1^SYPhD}