build: Always build in C++11 mode.
Change-Id: Id8c26bc5951a0b60c4f2f0868ad0167b2f0d56af Refs: #2103
This commit is contained in:
1 parent
31ad44cf14
commit
906c2eab6d
16 files changed
+176
-55
No files matched your search
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
for i in `find "$DIR/.jenkins.d" -type f -perm +111 | sort`; do
|
||||
echo "Run: $i"
|
||||
$i
|
||||
done
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -e
|
||||
|
||||
cd /tmp
|
||||
BUILD="no"
|
||||
if [ ! -d ndn-cxx ]; then
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx
|
||||
cd ndn-cxx
|
||||
BUILD="yes"
|
||||
else
|
||||
cd ndn-cxx
|
||||
INSTALLED_VERSION=`git rev-parse HEAD || echo NONE`
|
||||
sudo rm -Rf latest-version
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx latest-version
|
||||
cd latest-version
|
||||
LATEST_VERSION=`git rev-parse HEAD || echo UNKNOWN`
|
||||
cd ..
|
||||
rm -Rf latest-version
|
||||
if [ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]; then
|
||||
cd ..
|
||||
sudo rm -Rf ndn-cxx
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx
|
||||
cd ndn-cxx
|
||||
BUILD="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo rm -Rf /usr/local/include/ndn-cxx
|
||||
sudo rm -f /usr/local/lib/libndn-cxx*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx*
|
||||
|
||||
if [ "$BUILD" = "yes" ]; then
|
||||
sudo ./waf distclean -j1 --color=yes
|
||||
fi
|
||||
|
||||
./waf configure -j1 --color=yes --without-osx-keychain
|
||||
./waf -j1 --color=yes
|
||||
sudo ./waf install -j1 --color=yes
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -e
|
||||
|
||||
sudo rm -Rf /usr/local/include/ChronoSync
|
||||
sudo rm -f /usr/local/lib/libChronoSync*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/ChronoSync*
|
||||
|
||||
# Cleanup
|
||||
sudo ./waf -j1 --color=yes distclean
|
||||
|
||||
# Configure/build in debug mode
|
||||
./waf -j1 --color=yes configure --with-tests --debug
|
||||
./waf -j1 --color=yes build
|
||||
|
||||
# Cleanup
|
||||
sudo ./waf -j1 --color=yes distclean
|
||||
|
||||
# Configure/build in optimized mode without tests
|
||||
./waf -j1 --color=yes configure
|
||||
./waf -j1 --color=yes build
|
||||
|
||||
# Cleanup
|
||||
sudo ./waf -j1 --color=yes distclean
|
||||
|
||||
# Configure/build in optimized mode with tests
|
||||
./waf -j1 --color=yes configure --with-tests
|
||||
./waf -j1 --color=yes build
|
||||
|
||||
# Install
|
||||
sudo ./waf install -j1 --color=yes
|
||||
sudo ldconfig || true
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -e
|
||||
|
||||
./build/unit-tests -l test_suite
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
# For Ubuntu platform only
|
||||
language: cpp
|
||||
os:
|
||||
- linux
|
||||
compiler:
|
||||
- gcc
|
||||
notifications:
|
||||
email:
|
||||
on_success: always
|
||||
on_failure: always
|
||||
before_install:
|
||||
- travis_retry sudo apt-get update
|
||||
- travis_retry sudo apt-get install -qq libssl-dev libprotobuf-dev protobuf-compiler libboost1.48-all-dev libcrypto++-dev libsqlite3-dev
|
||||
script:
|
||||
- ./.jenkins
|
||||
@@ -9,20 +9,13 @@ from waflib import Logs, Configure
|
||||
def options(opt):
|
||||
opt.add_option('--debug', '--with-debug', action='store_true', default=False, dest='debug',
|
||||
help='''Compile in debugging mode without all optimizations (-O0)''')
|
||||
opt.add_option('--with-c++11', action='store_true', default=False, dest='use_cxx11',
|
||||
help='''Enable C++11 mode (experimental, may not work)''')
|
||||
|
||||
def configure(conf):
|
||||
areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0)
|
||||
defaultFlags = []
|
||||
|
||||
if conf.options.use_cxx11:
|
||||
defaultFlags += ['-std=c++0x', '-std=c++11']
|
||||
else:
|
||||
defaultFlags += ['-std=c++03', '-Wno-variadic-macros', '-Wno-c99-extensions']
|
||||
|
||||
defaultFlags += ['-Wall', '-Wno-long-long', '-Wno-unneeded-internal-declaration',
|
||||
'-Wno-c++11-extensions', '-Wno-nested-anon-types']
|
||||
defaultFlags = ['-std=c++0x', '-std=c++11',
|
||||
'-stdlib=libc++', # clang on OSX < 10.9 by default uses gcc's
|
||||
# libstdc++, which is not C++11 compatible
|
||||
'-Wall', '-Wno-long-long', '-Wno-nested-anon-types']
|
||||
|
||||
if conf.options.debug:
|
||||
conf.define('_DEBUG', 1)
|
||||
@@ -32,6 +25,7 @@ def configure(conf):
|
||||
'-fcolor-diagnostics', # clang
|
||||
'-fdiagnostics-color', # gcc >= 4.9
|
||||
'-Wno-error=maybe-uninitialized', # Bug #1560
|
||||
'-Wno-unneeded-internal-declaration',
|
||||
]
|
||||
if areCustomCxxflagsPresent:
|
||||
missingFlags = [x for x in defaultFlags if x not in conf.env.CXXFLAGS]
|
||||
@@ -46,12 +40,15 @@ def configure(conf):
|
||||
if not areCustomCxxflagsPresent:
|
||||
conf.add_supported_cxxflags(defaultFlags)
|
||||
|
||||
# clang on OSX < 10.9 by default uses gcc's libstdc++, which is not C++11 compatible
|
||||
conf.add_supported_linkflags(['-stdlib=libc++'])
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_cxxflags(self, cxxflags):
|
||||
"""
|
||||
Check which cxxflags are supported by compiler and add them to env.CXXFLAGS variable
|
||||
"""
|
||||
self.start_msg('Checking allowed flags for c++ compiler')
|
||||
self.start_msg('Checking supported CXXFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
for flag in cxxflags:
|
||||
@@ -60,3 +57,18 @@ def add_supported_cxxflags(self, cxxflags):
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.CXXFLAGS = supportedFlags + self.env.CXXFLAGS
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_linkflags(self, linkflags):
|
||||
"""
|
||||
Check which linkflags are supported by compiler and add them to env.LINKFLAGS variable
|
||||
"""
|
||||
self.start_msg('Checking supported LINKFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
for flag in linkflags:
|
||||
if self.check_cxx(linkflags=['-Werror', flag], mandatory=False):
|
||||
supportedFlags += [flag]
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.LINKFLAGS = supportedFlags + self.env.LINKFLAGS
|
||||
+9
-9
@@ -26,15 +26,15 @@
|
||||
#include "config.hpp"
|
||||
|
||||
#ifdef _TESTS
|
||||
#define VIRTUAL_WITH_TESTS virtual
|
||||
#define PUBLIC_WITH_TESTS_ELSE_PROTECTED public
|
||||
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE public
|
||||
#define PROTECTED_WITH_TESTS_ELSE_PRIVATE protected
|
||||
#define CHRONOSYNC_VIRTUAL_WITH_TESTS virtual
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PROTECTED public
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE public
|
||||
#define CHRONOSYNC_PROTECTED_WITH_TESTS_ELSE_PRIVATE protected
|
||||
#else
|
||||
#define VIRTUAL_WITH_TESTS
|
||||
#define PUBLIC_WITH_TESTS_ELSE_PROTECTED protected
|
||||
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE private
|
||||
#define PROTECTED_WITH_TESTS_ELSE_PRIVATE private
|
||||
#define CHRONOSYNC_VIRTUAL_WITH_TESTS
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PROTECTED protected
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE private
|
||||
#define CHRONOSYNC_PROTECTED_WITH_TESTS_ELSE_PRIVATE private
|
||||
#endif
|
||||
|
||||
#include <cstddef>
|
||||
@@ -83,7 +83,7 @@ using ndn::Exclude;
|
||||
using ndn::Block;
|
||||
|
||||
namespace tlv {
|
||||
using namespace ndn::Tlv;
|
||||
using namespace ndn::tlv;
|
||||
}
|
||||
|
||||
namespace name = ndn::name;
|
||||
|
||||
@@ -57,8 +57,8 @@ public:
|
||||
ndn::EventId expirationEvent;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<UnsatisfiedInterest> UnsatisfiedInterestPtr;
|
||||
typedef boost::shared_ptr<const UnsatisfiedInterest> ConstUnsatisfiedInterestPtr;
|
||||
typedef shared_ptr<UnsatisfiedInterest> UnsatisfiedInterestPtr;
|
||||
typedef shared_ptr<const UnsatisfiedInterest> ConstUnsatisfiedInterestPtr;
|
||||
|
||||
/**
|
||||
* @brief Container for unsatisfied Sync Interests
|
||||
|
||||
@@ -44,20 +44,27 @@ InterestTable::insert(shared_ptr<const Interest> interest,
|
||||
bool doesExist = erase(digest);
|
||||
|
||||
UnsatisfiedInterestPtr request =
|
||||
boost::make_shared<UnsatisfiedInterest>(interest, digest, isKnown);
|
||||
make_shared<UnsatisfiedInterest>(interest, digest, isKnown);
|
||||
|
||||
time::milliseconds entryLifetime = interest->getInterestLifetime();
|
||||
if (entryLifetime < time::milliseconds::zero())
|
||||
entryLifetime = ndn::DEFAULT_INTEREST_LIFETIME;
|
||||
|
||||
request->expirationEvent =
|
||||
m_scheduler.scheduleEvent(entryLifetime, ndn::bind(&InterestTable::erase, this, digest));
|
||||
m_scheduler.scheduleEvent(entryLifetime,
|
||||
[=] () { quiteErase(digest); });
|
||||
|
||||
m_table.insert(request);
|
||||
|
||||
return doesExist;
|
||||
}
|
||||
|
||||
void
|
||||
InterestTable::quiteErase(ndn::ConstBufferPtr digest)
|
||||
{
|
||||
erase(digest);
|
||||
}
|
||||
|
||||
bool
|
||||
InterestTable::erase(ndn::ConstBufferPtr digest)
|
||||
{
|
||||
|
||||
@@ -82,6 +82,9 @@ public:
|
||||
bool
|
||||
erase(ndn::ConstBufferPtr digest);
|
||||
|
||||
void
|
||||
quiteErase(ndn::ConstBufferPtr digest);
|
||||
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
|
||||
+2
-2
@@ -82,8 +82,8 @@ private:
|
||||
mutable ndn::util::Sha256 m_digest;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<Leaf> LeafPtr;
|
||||
typedef boost::shared_ptr<const Leaf> ConstLeafPtr;
|
||||
typedef shared_ptr<Leaf> LeafPtr;
|
||||
typedef shared_ptr<const Leaf> ConstLeafPtr;
|
||||
|
||||
std::ostream&
|
||||
operator<<(std::ostream& os, const Leaf& leaf);
|
||||
|
||||
+3
-4
@@ -57,13 +57,12 @@
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <boost/thread/thread_time.hpp>
|
||||
#include <boost/thread/thread.hpp>
|
||||
#include <thread>
|
||||
#include <iostream>
|
||||
#include <ndn-cxx/util/time.hpp>
|
||||
|
||||
#define _LOG_DEBUG(x) \
|
||||
std::clog << boost::get_system_time() << " " << boost::this_thread::get_id() << \
|
||||
std::clog << ndn::time::system_clock::now() << " " << std::this_thread::get_id() << \
|
||||
" " << x << std::endl
|
||||
|
||||
#else // _DEBUG
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@ public:
|
||||
std::set<Name>
|
||||
getSessionNames() const;
|
||||
|
||||
PUBLIC_WITH_TESTS_ELSE_PRIVATE:
|
||||
CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
|
||||
void
|
||||
printState(std::ostream& os) const;
|
||||
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ State::update(const Name& info, const SeqNo& seq)
|
||||
|
||||
SeqNo old = (*leaf)->getSeq();
|
||||
m_leaves.modify(leaf,
|
||||
bind(&Leaf::setSeq, _1, seq));
|
||||
[=] (LeafPtr& leaf) { leaf->setSeq(seq); } );
|
||||
return make_tuple(false, true, old);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,9 +94,9 @@ BOOST_AUTO_TEST_CASE(Container)
|
||||
{
|
||||
InterestContainer container;
|
||||
|
||||
container.insert(boost::make_shared<UnsatisfiedInterest>(interest1, digest1));
|
||||
container.insert(boost::make_shared<UnsatisfiedInterest>(interest2, digest2));
|
||||
container.insert(boost::make_shared<UnsatisfiedInterest>(interest3, digest3));
|
||||
container.insert(make_shared<UnsatisfiedInterest>(interest1, digest1));
|
||||
container.insert(make_shared<UnsatisfiedInterest>(interest2, digest2));
|
||||
container.insert(make_shared<UnsatisfiedInterest>(interest3, digest3));
|
||||
|
||||
BOOST_CHECK_EQUAL(container.size(), 3);
|
||||
BOOST_CHECK(container.find(digest3) != container.end());
|
||||
@@ -139,31 +139,31 @@ BOOST_AUTO_TEST_CASE(Expire)
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(50),
|
||||
ndn::bind(&InterestTableFixture::insert, this,
|
||||
boost::ref(table), interest1, digest1));
|
||||
ndn::ref(table), interest1, digest1));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(150),
|
||||
ndn::bind(&InterestTableFixture::insert, this,
|
||||
boost::ref(table), interest2, digest2));
|
||||
ndn::ref(table), interest2, digest2));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(150),
|
||||
ndn::bind(&InterestTableFixture::insert, this,
|
||||
boost::ref(table), interest3, digest3));
|
||||
ndn::ref(table), interest3, digest3));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(200),
|
||||
ndn::bind(&InterestTableFixture::insert, this,
|
||||
boost::ref(table), interest2, digest2));
|
||||
ndn::ref(table), interest2, digest2));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(220),
|
||||
ndn::bind(&InterestTableFixture::check, this,
|
||||
boost::ref(table), 2));
|
||||
ndn::ref(table), 2));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(270),
|
||||
ndn::bind(&InterestTableFixture::check, this,
|
||||
boost::ref(table), 1));
|
||||
ndn::ref(table), 1));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(420),
|
||||
ndn::bind(&InterestTableFixture::check, this,
|
||||
boost::ref(table), 0));
|
||||
ndn::ref(table), 0));
|
||||
|
||||
scheduler.scheduleEvent(ndn::time::milliseconds(500),
|
||||
ndn::bind(&InterestTableFixture::terminate, this));
|
||||
|
||||
@@ -30,14 +30,14 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
import os, sys
|
||||
import os, sys, inspect
|
||||
|
||||
VERSION="1.8.0"
|
||||
REVISION="8b796c068b3476c699246f84311031f0"
|
||||
VERSION="1.8.2"
|
||||
REVISION="a01aa13963437a19e5d8748cf2afd71b"
|
||||
INSTALL=''
|
||||
C1='#.'
|
||||
C2='#-'
|
||||
C3='#%'
|
||||
C1='#/'
|
||||
C2='#.'
|
||||
C3='#)'
|
||||
cwd = os.getcwd()
|
||||
join = os.path.join
|
||||
|
||||
@@ -54,8 +54,8 @@ def err(m):
|
||||
print(('\033[91mError: %s\033[0m' % m))
|
||||
sys.exit(1)
|
||||
|
||||
def unpack_wafdir(dir):
|
||||
f = open(sys.argv[0],'rb')
|
||||
def unpack_wafdir(dir, src):
|
||||
f = open(src,'rb')
|
||||
c = 'corrupt archive (%d)'
|
||||
while 1:
|
||||
line = f.readline()
|
||||
@@ -128,8 +128,8 @@ def test(dir):
|
||||
pass
|
||||
|
||||
def find_lib():
|
||||
name = sys.argv[0]
|
||||
base = os.path.dirname(os.path.abspath(name))
|
||||
src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
|
||||
base, name = os.path.split(src)
|
||||
|
||||
#devs use $WAFDIR
|
||||
w=test(os.environ.get('WAFDIR', ''))
|
||||
@@ -152,7 +152,7 @@ def find_lib():
|
||||
if w: return w
|
||||
|
||||
#unpack
|
||||
unpack_wafdir(dir)
|
||||
unpack_wafdir(dir, src)
|
||||
return dir
|
||||
|
||||
wafdir = find_lib()
|
||||
@@ -164,5 +164,5 @@ if __name__ == '__main__':
|
||||
Scripting.waf_entry_point(cwd, VERSION, wafdir)
|
||||
|
||||
#==>
|
||||
#BZh91AY&SYZ˜"ñ¶ÿÿ¼Hÿÿÿÿÿÿÿÿÿÿÿÿ€†"¢§PÀ#%‘#% >Xaänöº#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%篬Ž6¾Ü�®½u{l2µ =Ú½¸ûÜ^�ê�}k³RõŠå}ÙóÜ®|æ¹¶ÛK,£»ÞòëK¯}>å…õËu¨îoeaHvÙmnØîÓ£§£×»Q{Ü÷½Õm꺮�ï7o]so6ðÞvŠÝ¹ëÕï:#-}<öë¾÷{á×@Ô_|l¾î¶ñ5§�o¸µ3Û>»ì#%#%#%#%>„û#%#§¦ì€{>@ }óç¸K˜6³��—ÝžL½Ûíco`PtÑ£CYïv жž…yÙÖ…±ª[GG{¯Gªq% ¡@ ‚ÚCR•JCL¥*°#-zÑTkÖêv£¾ßv×^—Ö/M�6·¶Þ÷KÓ#%µŒ‚;:Ó©]µ¶o·ªv[ZÇÕ2¾<vúúõ÷o«o¾³•ÙÝ„¯9w>íÝ<ßw{×o³l¥µ¸ûïž_cß;wzõyîûíÅõ×hä#%ú3±�@#%]Š(룦ÙíÌï}Þòzú:Š)ï{ª%ìi(�—¹ÜôÀëEU é¨�@Ð7[¶k_N�ï¬×VÙ½Ô#.{¶·{;ß{æû{Ü…Of‹ÛÖ·±£çØ_^êùÝÐ>sN�(øÏ{+[kÞí#%ówrzß|ïUY#-Ïy^ØñÓëÝŽtÔ#.!Z;îñᙯ¯Œîzïªçm×˯›W¬û«ªl}ÏvÕî3]uõÞÕÞé÷·½Fï¶àÃÚwÝŒ÷¶>¾@µ×7·Ï3ݹ4IäzR™óÑÖ¾=e²½ê)PªåÜÍñžîç>Þ÷{ÖÖon¶ûÚÉ�™óëRÉkës¯¹ËÝå]åí^ì}ïT{Öù5€#-÷¶÷Ïž}ﯷy¼ðöÏ èÒ�¡CÖP#%¡]Sˆ�&•eÊ®ìÝ�«qï=zh,ÆMuµÞs¯ ¤ê«šÕ0îÔ'uWƒBìd€#%ß{Þ<@#%&½õ˵ö¯o�½Ù÷zú‰Ï¶ûy½ïzµÝŽÝƒæ‡¸¦ê»›‘:äºètøžžì÷w9ëÕm•¬]ïb!Ýp{ÎÖ÷gy>öð4ë¼ #-½Üœ:˜yÇ»}±ÒŸ#.¾¶òíõãìï{u.ßW×}½Íî·sÅΟq»í‡ºÛ«‹Ëì{Ö÷Þ½<öúÏ3ªéît¤Ÿrî�îçO1Åá¼ÝPv±¾ðú§yñ7nÃö¯�½7cï@0}këbbª]yG¯}ÝáC`îMQ<Ø^ݹ[®÷ièõ÷ÞÎrNë¹Ýݾ½…×g‰êîîØë“ES躥 ²¼ÁÝÕ·¯uõÐûÏ^Ïí ‡q�Ý·®½æ÷¡ô:n÷#%Ð=æ+·œŽž÷€ ïa™z£Ýñ›wª#%}d¡[9'ßqÍ@Cݾ½c‰U¾¶»ëκn{g½£]u8]·cERK—k›¤K#-Ù÷¸®�}pvlô×K!®ºkÞw}Wuç¯6>÷ÊîÖæ|ôÏa¥éïg¶»8‹´k£)uÓ×o½Çvï]Ï@>½^ûjwkòë½ÚÝçeøÜšA#% Ð#%@&&@#M€3C!õ?Q©¡é#%€#%#%Jh‚DÂ#%M ¦„ôÔSƤõ6™4Ô6I õ€#%#%4#%#% ‘@€%?ÔÈhM£Ñ”Úž™M=5�zCM¨#%õ#%Ð#%#%#%#%'ªRD#.dh§ƒJzž¦šžh˜¦F�SÔ4Ð#%Ðõ4 Ð�¡ ÓC@#%#%$ € h2hÈL ¦�14ÚG¥0i4i£Fš#%ÐÐIåPI¨ˆ #%šdSÐi2z(Ÿ¦Tô50ÄcM2=HÐ20F&Oÿ¯žÿfÛjíÐO÷r\ÝÚ¹´Z×u?Wm©]ˆ¦ß¶§@™!$V£+f{ÕV«óííÛU¯Ùü?OÍ=~jIýéX¸X!ëQŒ;Õ#‚*)LS\MeÎ82nÛÇ.¯ï>±ÿ(œø—Í!°8 ЀïUmûóÍÝ¿˜™ÛžW#.±Œ*ˆ›{ºyª§ˆ› W‹¨©‰|\,båðg3¨#%š}ûèú!Â*0(Ȱ‡®ÛjUFµmÖ¢Ûf`$@º¨@DyÁH¢§0 Ђ#%Š!!”A±Rt¢ e€ŠD‰j‘Y�Ñ#%S¤X@��#.&bXÌÓ£©Y¢$¥H¥Œ&JlÅ5¤¨je5BBi-JŠÉA„FP$Íe#-d¤¬Ê±„¡cBi…(64‘“b-¢)%-)–¢A‚Yi-$‚`Ê"FÑmIªib–&¤b‚’QM"F&™±hÔj›V•m”’²X”&I’*-@J¦ÛF&lÍ4ÕL²Õ*[5I%HiL’I¨¶djFkE¤#dÓ(,IF‹&¤‚ÑJU&±‰‚)1)±C©›„#%R!ŒÌ@Ca’dJ"L,›d�#KŒšRDÈB’“-"AQ)IjÔ&Ô#-"¡‹#.(¥ `F™’$Ò%±1±²e6ŠI-")"h1dRFIRŠ)™Ò4ŒM†$Â@¦ÄT–6‰ ²#.FJ*6"#-I�¥* $Ô”RF@™™š@“2fb“Y”¡¡,b$"©6�$“FÁ‰2bÊSÍDSB�¢¤€J&ƒH“6¥–e(Á‰Hi4²Mšf4¥ŠM™�ed™‰$U#%ÍK$*$²Í‚–fˆÚ2†ÉD%6h’š´ÐhbiŒi‚5&JI ¦JY¨ÒYR¢ÅQI¨‰‰3” ¦�#%ÂHÉ#-0Ñ$J#-5¡¨f²ÌÒ,™#.R´›&5’-I‰&’�%#-"Ø6,L™b†ÈšLÍI£A)°ÌÍ$2#-Lš-,bÍMŠJQf“Q)bL²*HÙM1h� Å&HÃ$Ì6L#-&eC!„VI•„6‚ɲP$¢L¢B)¦‚2™HË‚ÒR©³Xب„È&D¤ˆ¶4“5‘CI�$†64†H bj5”ŒU$–“#3E&Y$ÂÍ"#Q¤ÈFTf�Ùj¦µ´–Æ2TÐ-%ÊHM’”LQl–‹,�1”Í4Ù)J-LŒlÛ�#.›1”ŒÐ2Í-~•n��²´†BYFBkÔV-&Ƅ̨¦‘FÉh*˜´ª‘6#-,FSIÊŒÒT2Ô%¨²)¬˜Ôe•EabdÌjZi±#.‹Ì¦ÛMdJ²²*–ÃXÓeYQ”ªÅ*ÒZB³ek5)LÙ…YŠÈ‹£MJ‰-2Š#,Q±XØ©š-“clU™l[hH©(ÛcQ°Y(Ö"%Q�¨4UŠ¢¡š�µˆJÉ#."´Øe4”R ¢Œ3R‰M©Tj6I6ŠÈXÕ4™[VmZh#E„[FË"fÍdI�ššP¤™¶Ùª)³54©–Ò©i6©B¬©”¤Úšj-,Š*)lÖfd’²Å¤¶–Ód(µ4�‚@Í�%Å2†!AL“•£jLL–,ÊV-)4بəA¤¥(¤S*"Å ´²Ò Fš)’›ÊlÐÆ‰ B¢Å™!�š6jK‹&“,Ò`Ù#-D”4‘`„Ò&ÄERQ‘ Ò4Ê-L´Ò)+a3` ɬL1³-B)S4RE")´d,Í£E��Š4#.ˆÒZP‘IƒhRËA„‘&6˜M%#)°d¶33Rˆ’Mš”dÛcJ¦f,66R“dm&QelQ!˜Y(”I6RK Q¨ÊFÌÒ!*k#6*#.ÌÙh¨ÄؤÓQ2ÄÑS-©e-É’ŒÙ ˜–"cBi”h£#YI²R†&"jI-*„ب¨ÑFªi0É3D”šE¢˜#%ØÉ%‹Ùi¤’¤ *5’a¤¥™#-�6´j-²ABe…h" "²kc()5JQ5b±”ÌІÅI%L*J$´l†ˆ²ÊÕ*š‹F1%dÔSKRSAD•,’¤¥)J6ÑUm”Š,”i*Œ%%‹dÒTXÚÙ˜¦Q³M`ª†’fÉ›ˆ„,ZfJ£“¥2ÄÚ¦ˆ¦fSYˆ¥-F±¬�†Ã$Æ€Š#)Th¬É,l€h"ŠL"J´ ¢Òš¦VJ�¬V6Ó1¬–²@VŠ¤Ô”Q˜¥dfŠ4Ј„Ť¦#-2Ø‚‹FÅ´lR›m%Ú ¬`2j*$+DͲËQ±´Xµ‰$¶¥²ÈieaTbÑLØÛf¤¥eFŠPÒl©±´†Ñ¬›I¶J6Émš”Ì£I´hR**J4Z6ÖÙµi£5&ˆ“fQhØÚA¤Ù¬ÚŠLS*ÒQb´m±h¶Ú6¨e’µ‚-SR²Ø›)bE¤˜Á²°²”Y#f•A3D’e$ȈZ’´ËTÇÇý¥^–þ?Ƚ/å_ë=‘°µXI¬×6ì%%¤ÿmþM™H¸a”ÈŽÕQ&%Ra?±?ÛE2áÿøhùJPØ$\AÈŸöçQ”lþ¬�^ÙéH¿IÆCtP¶Cd£J«Jê’MÒÄPwfB¥Ïøª~�°‚ÔµÝüµáøÙeßñ¥$É¡‹»*˜¥�ÕÜ…ˆˆò;Hˆhž‹£¸—Yøïf£S�¸˜OU¸ÏÝ!SºqÖÅhâcQ cŒ<|V˜÷j(ä6Ú¢ZUUYe\Dorõ3YQæÉKL§Dk@ªî†Ö•’¨ÊafRG%5æØ2¨)‘TQ‰i–[5¢‚¯‚½ž�òzõ7¦ÞÂæå£bÑlÁ-¾—^HóRjï~ÝåØóº¡þ/W¿�³.nRns�íç^!éÅ:EAÿ¹å¨Æf0íTH8“äÅË–1=e DEøÿe–NÝÕ£0´¤Mê�}(¡¨0xçR¿¿œ�VªÉ-ʄÌP`Ìõ Ý–‡&™v“_Y¯¦ÆM�+fe>� ´Ü”={\ÛýZü#¤‡®-Í8]¨"0¡ùíæó$×;¢î4W74šB’¬’lXÚ?…/ªUìµzZ•ásÉ�²&Zd‚ÅV… JEÓPÌd�÷²Á�°•íQ è0ŠV8ç‹Ê”‡‹_â6½ç¥îµu,´Ôv(Æ5ŒŒ|>w»¡– º†#-î‘VŽX‚7ªT®#-=È@n\¹&î»ï¾òb ßÛ×�ý+éw‘5_‰w·N·I²_'|�ó›S‘’˜¯ÝT�ÚŠÇì1éOú¯L,ðU&É'}f4#-°�¬.D�¨Àn2Wò�1ž#%ÍTDDÐÆ%É…V’QøSßhhäMŸÖퟧ:™ñˆbPJ2!׉Že„us#-¥QLq½s±æjœ)þÝj•Ï…_6L„�oC¡#±Î¾·êC_ÂÇG”�Š€2KE?‡ Œg›„3ªP°Í=n�N¸~rˆ˜Z2í¯V6ŠÅÙªÄÝIÞXR‚Á/=/WåŠ0ôIQ:kE›5#.BÆç±—S+áÌÜϦ÷‰j@’Ò<òwóû÷»¯aŒ™¦É1šü�b)àföQ0æë‹2—Ї”¨¿úÜoÔHÎÒt‡Ü™+m5øúR¦4d»>ÿv÷»©´Th¯ÉdÞ+œ¬j¿Uå5}Þá¢Óìêû^oöû}ßÞí}/k´G-Íkº»b"‹0a*ON\¯·×Ýöõmo&„Š[B�yV š'�…-%!&ÇÓDf�@îrØÅÁxã(ß5Ìø¸¤¶L%jÖí[‹ ¤P9¤Ù#.E�ípch²pô»|u#-ÿ<p°#+_;žÚXþM–~Æ.¥Ý;§š’‰_ý#r®¦ùK©!M(Áa·K±dÜd)7ªpF´–ˆå¥ŒF�(Aî ”ÃMiM™ ™¢¥šO£#-*‰¯…Øœh°4B‘gwZ² ¤1T¤Zëaɼ•H¤xU%»Däâ WpòÄ#-Ù£&ZKª•Š(ÍJuªS«FˆoœÄ^#-"³ÇBy3GŠ×Ó…"wÕ7áRüjŽÉB|áøÝËéð©óÐ>îÇ»Àü"VéõŽÒòìøò‚?|>áH ùgW‡ØÂhEïú¥|dT=�‰pJ$R4(‚§{‹”~%vÒV �„gÚÔaÚŽn#Ó~7Göß[ïºhþß~—Ñ¥Ù›(ã�vfþÿ¶¹3L˜¡èÐ)Ñ(üwöK§ÆZk/ê×l!€SIÁ†‡ Ñx%XÛ±¹H<xÂÉlƒ×²!²³ ìË÷U.„8†Í×ôQSnkÍò£ã»ÃaxI £ËþÂv�¤�,©åÉ!ã8úñ�|öݶ|¬ÅC¾ÜI�ö¿,ecßi©3è©¢ø“36ɾz9¤!Q½WdÑÙíˆO‘CÝe|ä(ô¥% Æâɳ‹ƒ)õò©0æ©_À”ejOQ`_ÀÝrtÒ4\|¼ÇcŽÇ'}Ôþvž�·äçxáp’3†ZCQçs1›síP8ú~‹MsΈÖ�…j¦nìe´ÄîªEøûê߃C–‚’’Î{¼¡ÿLine truncated
|
||||
#BZh91AY&SY�ÉLt"ïÿÿÿ¼@ÿÿÿÿÿÿÿÿÿÿÿ�†¢¦x€�#)!2„Xaé\÷x¬#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)/ºúÕ=[Ý{{žÒá¯Z»må˳]9y›o�3ÏZÝ»½õ÷SÒû5Km»¶÷מ£ß4àÖLÕ—sª_^/^Ü&.ëm˜}+Üe#):z{·¡íªì÷ºìUg•:vÚi>{×�˜×ÍÞçÁï>jWlúûí÷Ɔ»·}Ýw½öpôYÛÆÞÚîÇ>ï¯m¼Øv,¶uÈ#)#)#.#)#)yì#)ƒÉl€#È(MÛÞœÀYÆ`Ë'F]Ûg¹î¡ ¶ƒ\ê¶#.Bí©¡I#)×Cvf(’ªR]íÒOcAT””•QZÉI#.7 mƒËmªéíÜ<z÷޽[vÎìê¬d¶hÒMyU,j¦zS/ݽ{wß};}ÛºÜ{|ûŸ^ÖY}k¼íŽó7Zö³Nì»[Vónßb¾÷s¯WÛ¶hä#)R¦Æ¨#/¢‚{$�Q‡•›™Ü»¯3Æ€#)¡{w³%¶d‰k{Û½Ûp $UPÞg»š][iŽ™½º'¹ÚíÎÞðÉÞ·‡[½n÷ÝæÛ·ÎßYUH’:lVÖíÔš˜×mòÝom;gps³:ÉßõOkl®õãxß{Ü÷ÚµÞÞõXZcÊžÜצ¼�J@#/U&ûÞ<™5õöó½=P®“۽Îo³¾òv}{Öw\ç{ÛÞíu=鯽ï5>÷w³×¾ÖiÛ{ºgº»Þì}ëÜoJíâ®yžíÅv;·‘ëÛ6÷¼jöª´¥¼u¶Îí¾ª•B’n7nï}Ís³ïžï]{çÝÙïI^ÞÎ>ÙãåÛ4¸·Ý£]´wvÙ]Ëžî6½ç]½wÓ0zOžó{ÌöoƒÛƒtÜÓ€P¡P ”Øwf²i»r޶#/¹u´œçFæù=öò<º—Uó½ç•ÛÒ¥8¬Á¥—¶ÆJ�¾,¶Þ|sß4PSß\èT#)‡ÞÍîå}ÝÞw¾>ûÛ\àxï¾îñ{�D½Ø[®�ºÓ›ïmµowbn£#/6Ï^—»µÙÉ«�ɽ¾ïuWÑ_{®ó>öñ2}ëáô€Õëï®ïW¯Q×»Ð=öo©_}»°zµ»j[}híîç½÷}öíÝ.·ºÜ÷[Çw®u·´ßl6µçw9á{[NOrÙµäﶪÒ6önæPO¬Ó•,ë}x>&ƒ ÓCê¼5[Œ´ØÕ÷lóž{ÞÁð¢@iñ#.:ù¦�}s{¸>ÊvçNÞös›Ó›Å[Ÿqœ«ßmn÷w½ÙõõióÎ7½'ßX}÷»A·\¥Ë)¥¢ûío}bù÷T‰õ½€Å„)õ¡î¶Èè)¥³%Ú³Þó»°6Nîwž¬i¼û[ï¼à2BÍT+g!÷°ãåÓ‡·¬vîw4=.s›¥soº�YÝÖÝé½´(ªH½vâv‹·*�Ù÷›šìçÓݬ«¯s{¬®ûÙïww¯¾õÞ;_ëßN¥_z·fçÞÚ÷n©Nœ�;ÞÝäS½ŠÓªÕé^¾Þ2Ýv{ÞíÉ÷šûìKQm\¯#½zÝäÝƒêø´%4B#) #)#) É£@#)&�L&¦ž©£O(PÓMSÐÔšši�)�'¦�5£M©é=!§¨hz�¡ê#)#)#)#)#) ˆ‚#)"b2#jTü§µSÍÒ™êi”zFÔò�S ¨#)È€#)#)Iê”’ ªj~Tª=¥6§¦¡§©£Ò#)#)#)#)#)=@�#)#)#)‘#)� ¦šM#)M`M&OL�žQ²ž“iP#)#)#)&¢ €€#@&™4 éSõOh¦Ô�eêÕzž¦›Ò›P#)#)#)Ð#)#)û|Ûú¶ÛWtI?³’wV5sZÍßom©»%‰£á¶Ôå)) ŠZ$‹‚¢#){V@åöüòÎX?æì¿eB?8ý0LØã©‡š.$…5dÆ•ˆƒŒÅ3d�‚o�ç÷ŸAÿ´“ŸRù¤ :‚]X�A#)»/¾_Ý„sE¾M̺Ôq·ª¥ŒŽÒ8æœÈó+¹IŽ0zË|-8Þ]Y‰ÔÁt>±q/eBœJµJ”ÄâqQa³[à’;Æöu8@!ÿÄð‹¿äÈx±!4…(ÒDa†*„¨¥"CJˆÌ�Jƒ@Ä"›*„ˆ® ‰ÞI#)iD(ÞE(#¢UH€û! °¤ª8šÂ•¤#/AÔ )æUÛ%€P`ÌJC3LH„È…Í£fh‰)©±‘2RŒÅ-¤¨je,P4$&�©Q´”DJ™¢l¡l–JÌ ‹L)A±¤Œ›hÅI)iª$%–’5$‚`Ê"F¶“T,šliblŒPRJ)¤HÄÓ6-�SU¦ª¥$ÖXŒ“$j6‚𥫙³4¦©,™fª%M±1³T’T†™’I5Ì�HÍhÔ„lšf‚‰(Ñd´�Z)J¤†lb`…‚‰šLM6(`›)°L ‘f*d™ˆ“%²@‘KŠÉdI�„)%%6)2AQ)Iµ j1¨lІ,L(¢”��%iDÆ,LTl™M¢’e¤‘4²4‘’T¢Šf¤*iM†$Â@¦ÄjK#.›D�l‚‘&**"#/É�¦l`’MIE$dBDÌˆÍ I™31’³)�¡,b$"HJ“a I4ÒÐbLš,¥0lÚ#M"�¢¤€J3A¤I›RÍ,¥”†“K$Ù¦Q 5,RY‘±£+$ÌI"ŠÀ3c,�¨’È*#/Yš1´YCd£2›4IKZl„Êc$jL”™…2RÍF’Ê•L ¢“QdA%() FHi‘¤H4–5¤Z¬„34‹&aJB›I²E²E£I2I(J,”4�`"���“,E#.‘6k1“RXÐJl2™¥1 #.…¦MRÆ,ÔØ¤Ê,ÒbJÙ$…”T‘bSLh� Å&M)&a²lš2d*#)„k$ÊÄÃh,›%!K&Q�Ši ÉL¤eˆÁi)TÙ¬mˆL‚dJHŠÑ�±¤™¬ŠLhÂHaQ¤2@KÑ´jR1EbKI‘™¢“ ,ˆ”!ŠY#)Z4™eFi#.›U-m ¤ª(É© k%ÊHÚ)’™&1¬–‹4HÓLÓM’”¢ÔÈÆÍ±(Щ²ÊFh¡K_‚ѲV�ÈK(ÉMbÖŠÅ¢£BfTDÓl–ƒTÆ¥ªb(lXŒ4¤IÌld1¢¡–¡5E‘MdÈle•E¡bdÌjZYŒ�¨°ÌÊj³F™Y©¥°Ö4ÙD–Te*±MZM¤+6V³RRÃm1B™b´i©Q%¦QDe�¢±¶f�²Ufj�V*J6ØÚ6%CDB¨¤*#.±ª5Ô†Ö!5’E´Ñ¥QH&ˆÃ5(”Ú•F£d“hƤ,jšLÚµ›Vš±ašÆË"eMdI–šaI3j¥¨¦ÌÔÒ¦kJ¥dJ˜ÛJ™JM©¦ÔÙlR#.lÖfd’²ÅÁ©-¥´²ZšFÄ@`i±¤£H„Q°�D1mÉ0)µRD¢Å2šÆÒ“MŠŒ’h4”Â…ŠeDX¤–cBi¢™)“ÊlÐÆ‰ CbÅ™!ŒR³RXm™dË,Ì!#/RÉ�ƒ ±QFÆÄ””dh4‹2‹S1³¤¬i„̓FM‹lËP)¢„±DE")´d,Í¢Å��Š4"¢4––H¦`´)e ÂH“�šJFS`ÉlB’Ò$“f¥š¨Ò©™‹#.Š”Òl�¤Ê,ÑV(�Ì(’‰I$ÙI4•%£)3H†•5–lme6V*16)4Ô“,É¢¦[R2e-%%²$”K1 Ó(ÑD#.e“d¥LDÔ�‘h¬FØM‹EFŠ6ÄVšL2LÑ%&‘h¦#)6)"±`Û-4’T†£Y3#.%,Èl…hѰ†Ñ¨“F„Ë#/ÐDEd¶*c()5JQ5cXÊfhB¢¤“i…ID–��ÑY¶©‹2j,Q‰+%¡¥4±¥%4IRÉ*JR”£VÄ¥"‹%+e%�²i*,m¶f)”l¦²¨i&l‘I±a�B"Å‹LÉC4`ÚL‰L±"Õ(�0™Kf"”j6¢ØªHB¡’c@FÊj�£i’X©#)ÐbŠL"MZPQiMR›IQ[ÆÖf+%¬È#/Ñlš’‹Å(#4cf„I �’˜4`ͱ�‹hØ¥6ÚJh‚±€É¨¨�6Ë-FÑX±kI¶¥³d4²±*ŒZ)–*¦¤Ò²Œ£E(–LYR¢ÒVM¤Û%dÕŠM¥3(²m�EIF‹F¶Û54f¡²X‰*eEF° Z#.&¥³VLS*ÑDUŠÑ¶Å¢ÛhÚ¡–Mkjš••DÙH6’cÊÂÊQd�šTEÌlII”“"!jMb̵L|>ó~i¯éyÛÇð‘{ßÍ\«E½fý;i6N£#ý¿òþÞS´W d]j¢$LLY¢ÒE˜pÿ«ýT|#.¥)°T\AÈŸúgQ”lÿ©ö�+Û=i÷é8ÈnT-ƒ²Q¥U¥uI¦éDn�™#/·ÿ5_Ͼ!kÒîƒÿFÃû>û®ÃüëI2h•ÌäDL³¶»Yb"<ŽÂ #.¶nà]uø^Ì?v§;q0ž¶ã?¨…NéÇX;£QLC§6íˆéTf¥5F�ª2Ù$”¤©�·_Bðjck´ðb¡Ø£Â¢5Š UwCkJÉTe0ÀÙ¤ŽJ’5äØ2¨…*(Ä´ÊÍh¥P5W³Ñü½Jô·³ÍÍFÉk1Q$âQb-ÀFiw.Š‹u@(þó«ÝçlËÙ¹I��¼ëÅ4â�" ÿïCýª0+1‡j¢AÄŸ6.ZÑ1íÃxÑ#.-WÇýº4=þÂv#/…•µÚ*�6P…²P€§†t+üs’ãLãPºˆÑˆí}[ï ÿi<;ð:N¤¥!V&CS‰MõlJ=i¦Žäâ+kqeœÿ7ñgH\Zšp»PD(aB1¼Üó®ît]ÆŠæå&�¤ÊDUCBWœŽÂyChJ;sÑ§Ó ¡�ì•(*H#(k‡=?#/\‡nÔØ28¸o}up#§²®ó@’�ñkñÛ^éé{𮥷³PhmØ£Ö21ðùÞÞ–H‚ê4|:EZ9`ˆÜZ©R²ä 7n\“w]‡uÓEA½ê·žw÷/š«H(¡ä•š%€‰³[5¸�ND”Å~uKꢱü+LySÿ5é‚eƒÿB©6J®YÆ*%¡x¨ÈI+ù1�ϳ iuÔÎ%É…V’QøUkÛrú#/ç÷EÏèñé™ìâ£Ær2?f_C<ᎲB8ãzçÿRƒ¹5NÆ¡ßÆ—dÏ>5~Ä�±qC¡.çíí}ËP˜Îo¢÷Ìå!³P‘ö`rÆw¸C:¥ÓÖèÛAÙÙW0´d;Ò×¢ÆÑX»0¬MÖ/R„PX%ç¥ãèü1F‰*'Mh³f ØÒƒÆçµ—S+áîß¿ZÄ›#.KHíÿ—!¾ŽëØc$4Ù&27åúí221ÀÍì¢aÍ×e/)Qì´½ÅFv“¤8ÆäÈÈY[i¯ÙÒ”cB'ë!î.êm+Ç3,›Ås]He �¡»¬ªJ]§<0=–¨™ÿ³�wîÄê71)¬‡$LÀÅ¢šÑ`Æ# Rzrå}�_?·ª¶±¡[B�yÖ ’'ˆ… -%$"˜K<P4€«µËcIÌŽ2�ø3\σ�%²aj#/Î,³$©±6„ؘÀî5Œ#CÅ TX]Q4£¶ôõ挃þ‘¢è)€,šùPöÍ�åDå’¡„DJÚÍ›éjõ(�µïï´ò76êo„º‘‚…4£†ÜîÅ“q�¤Þ¨.´BÒ$¸àPj‹{)˜²#¿¦kJlÍFd@îª-¥Q4í»¿‡—,�ªJgoeYRLHÀ]ë²áͺ$cb}¤e|¦x<C%¨÷b#.²µ¶–œe‘L„5|HÙæá¶ºk#/ÓÙÖDVxvT<Y€Qâ�µôáF$Nú¦ûª_…Qš‘Ñ}ÎS3–»{��ÚG½W'²¬äé•Z …WµÍòÂ?ÁV‹S:Ð¸í»™áW'h#.lÌ‚MˆZ�ÆÕåPý¤óÚ˜†‘�¦Ã¬!açž7?Òú_}ÓGúzô¾m.¨l8ã]Y„?ÇÒ¹3L‚4‚ÃÉ XŸm½§"úr‡±5¸uì‘FÀ*”Ð!¡ÈiZ¬mØ�\¤<ad¶A�ëÙÙY.ÞðÁx#/åÄÈq0”ÝM6á¯GÊ�ŸCay¯õ'h L~²XG=ñö«>^3ßa·ÊÌT;ï’Lq»óÆV1^75&}U4B?->Ó36T ¿sžª#!slÏdª¤?¦Bü†”<ªô©‡«(uÉ=Rò‡x6Ÿ£WÍüIFY¨è_Ún‘õÐh¸ùyϳwkŽÇ'~jKOWáÇY/(yå…ÂHÎl4cLine truncated
|
||||
#<==
|
||||
Reference in new issue
Block a user