From 814b22f25bb78edb29e83b06a1b8e844b6941584 Mon Sep 17 00:00:00 2001 From: nillerusr Date: Wed, 28 Apr 2021 08:36:34 +0300 Subject: [PATCH] waifulib: update --- scripts/waifulib/conan.py | 246 +++++++++ scripts/waifulib/cxx11.py | 74 +++ scripts/waifulib/enforce_pic.py | 35 ++ scripts/waifulib/force_32bit.py | 47 ++ scripts/waifulib/fwgslib.py | 153 ++++++ scripts/waifulib/gitversion.py | 47 ++ scripts/waifulib/msdev.py | 780 +++++++++++++++++++++++++++ scripts/waifulib/owcc.py | 124 ----- scripts/waifulib/reconfigure.py | 45 ++ scripts/waifulib/sdl2.py | 93 ++++ scripts/waifulib/strip_on_install.py | 78 +++ scripts/waifulib/subproject.py | 174 ++++++ scripts/waifulib/xcompile.py | 48 +- scripts/waifulib/xshlib.py | 115 ---- waf | 10 +- wscript | 8 +- 16 files changed, 1794 insertions(+), 283 deletions(-) create mode 100644 scripts/waifulib/conan.py create mode 100644 scripts/waifulib/cxx11.py create mode 100644 scripts/waifulib/enforce_pic.py create mode 100644 scripts/waifulib/force_32bit.py create mode 100644 scripts/waifulib/fwgslib.py create mode 100644 scripts/waifulib/gitversion.py create mode 100644 scripts/waifulib/msdev.py delete mode 100755 scripts/waifulib/owcc.py create mode 100644 scripts/waifulib/reconfigure.py create mode 100644 scripts/waifulib/sdl2.py create mode 100644 scripts/waifulib/strip_on_install.py create mode 100644 scripts/waifulib/subproject.py delete mode 100644 scripts/waifulib/xshlib.py diff --git a/scripts/waifulib/conan.py b/scripts/waifulib/conan.py new file mode 100644 index 00000000..88b4972a --- /dev/null +++ b/scripts/waifulib/conan.py @@ -0,0 +1,246 @@ +# encoding: utf-8 +# conan.py -- Conan Package Manager integration +# Copyright (C) 2019 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +from waflib import Logs, Utils +from waflib.Configure import conf +import os +import sys +import subprocess +import json + +def options(opt): + grp = opt.add_option_group('Conan options') + + grp.add_option('--disable-conan', action = 'store_true', default = False, dest = 'NO_CONAN', + help = 'completely disable Conan') + + grp.add_option('--force-conan', action = 'store_true', default = False, dest = 'CONAN_MANDATORY', + help = 'require Conan, useful for testing') + + grp.add_option('--conan-profile', action = 'store', default = None, dest = 'CONAN_PROFILE', + help = 'set conan profile') + + # grp.add_option('') + +def conan(ctx, args, quiet=False): + # print('%s %s' % (ctx.env.CONAN[0], arg_str)) + argv = [ctx.env.CONAN[0]] + argv += Utils.to_list(args) + ret = b'' + retval = False + + ctx.logger.info('argv: {}'.format(argv)) + if quiet: + try: + ret = subprocess.check_output(argv, cwd=ctx.bldnode.abspath()) + ctx.logger.info('output: \n{}'.format(ret)) + except subprocess.CalledProcessError as e: + ret = e.output + ctx.logger.info('FAIL!!!\nretval: {}\noutput: \n{}'.format(e.returncode, ret)) + else: + retval = True + else: + retval = subprocess.call(argv, cwd=ctx.bldnode.abspath()) + if retval != 0: + ctx.logger.info('FAIL!!!\nretval: {}'.format(retval)) + retval = False + else: + retval = True + + if sys.version_info > (3, 0): + ret = ret.decode('utf-8') + ret = ret.strip().replace('\r\n', '\n') + + return (retval, ret) + +@conf +def add_conan_remote(ctx, name, url): + """ + Adds conan remote + + :param name: name of remote + :type name: string + :param url: url path + :type url: string + """ + + if not ctx.env.CONAN: + ctx.fatal("Conan is not installed!") + + ctx.start_msg('Checking if conan has %s remote' % name) + [success,remotes] = conan(ctx, 'remote list --raw', quiet=True) + + if not success: + ctx.end_msg('no') + ctx.fatal('conan has failed to list remotes') + + found = False + for v in remotes.splitlines(): + a = v.split(' ') + if a[0] == name: + if a[1] == url: + found = True + else: + ctx.end_msg('no') + ctx.fatal('''Conan already has %s remote, but it points to another remote! +You can remote it with:\n +$ %s remote remove %s''' % (name, ctx.env.CONAN[0], name)) + break + + if not found: + ctx.end_msg('no') + ctx.start_msg('Adding new %s remote to conan' % name) + if conan(ctx, 'remote add %s %s' % (name, url), quiet=True) == False: + ctx.end_msg('fail', color='RED') + ctx.fatal('conan has failed to add %s remote' % name) + ctx.end_msg('done') + else: + ctx.end_msg('yes') + +@conf +def parse_conan_json(ctx, name): + with open(os.path.join(ctx.bldnode.abspath(), 'conanbuildinfo.json')) as jsonfile: + cfg = json.load(jsonfile) + + deps = cfg["dependencies"] + + ctx.env['HAVE_%s' % name] = True + + for dep in deps: + def to_u8(arr): + if sys.version_info > (3, 0): + return arr + ret = [] + for i in arr: + ret += [ i.encode('utf8') ] + return ret + + ctx.env['INCLUDES_%s' % name] += to_u8(dep['include_paths']) + ctx.env['LIB_%s' % name] += to_u8(dep['libs']) + ctx.env['LIBPATH_%s' % name] += to_u8(dep['lib_paths']) + ctx.env['DEFINES_%s' % name] += to_u8(dep['defines']) + ctx.env['CFLAGS_%s' % name] += to_u8(dep['cflags']) + ctx.env['CXXFLAGS_%s' % name] += to_u8(dep['cflags']) + ctx.env['LINKFLAGS_%s' % name] += to_u8(dep['sharedlinkflags']) + return + + +def conan_update_profile(ctx, settings, profile): + args = ['profile', 'update'] + + for (key, value) in settings.items(): + args2 = args + [ 'settings.%s=%s' % (key, value), profile ] + if conan(ctx, args2, quiet=True) == False: + ctx.fatal('Can\'t update profile') + +@conf +def add_dependency(ctx, pkg, *k, **kw): + """ + Retrieves and adds depedency during configuration stage + + :param pkg: package name in conan format + :type pkg: string + :param remote: remote name, optional + :type remote: string + :param options: package options, optional + :type options: dict + :param uselib_store: set uselib name, optional + :type uselib_store: string + """ + + if not ctx.env.CONAN: + ctx.fatal("Conan is not installed!") + + name = pkg.split('/')[0] + ctx.msg(msg='Downloading dependency %s' % name, result='in process', color='BLUE') + + args = ['install', pkg, '-g', 'json', '--build=missing', '-pr', ctx.env.CONAN_PROFILE] + if 'remote' in kw: + args += ['-r', kw['remote']] + + if 'options' in kw: + for (key, value) in kw['options'].items(): + args += ['-o', '%s=%s' % (key, value)] + + if conan(ctx, args): + if 'uselib_store' in kw: + uselib = kw['uselib_store'] + else: uselib = name.upper() # we just use upper names everywhere + ctx.parse_conan_json(uselib) + ctx.msg(msg='Downloading dependency %s' % name, result='ok', color='GREEN') + return + + ctx.msg(msg='Downloading dependency %s' % name, result='fail', color='RED') + ctx.fatal('Conan has failed installing dependency %s' % pkg) + +def configure(conf): + # already configured + if conf.env.CONAN: + return + + # respect project settings + if not conf.env.CONAN_MANDATORY: + conf.env.CONAN_MANDATORY = conf.options.CONAN_MANDATORY + + # disabled by user request + if conf.options.NO_CONAN and not conf.env.CONAN_MANDATORY: + conf.env.CONAN = None + return + + conf.find_program('conan', mandatory=conf.env.MANDATORY) + + if not conf.env.CONAN: + return + + conf.start_msg('Checking conan version') + ver = conan(conf, '--version', quiet=True) + if not ver: + conf.end_msg('fail') + if conf.env.CONAN_MANDATORY: + conf.fatal('Conan has failed! Check your conan installation') + else: + Logs.warn('Conan has failed! Check your conan installation. Continuing...') + + if conf.options.CONAN_PROFILE: + conf.env.CONAN_PROFILE = conf.options.CONAN_PROFILE + else: + profile = conf.env.CONAN_PROFILE = os.path.join(conf.bldnode.abspath(), 'temp_profile') + settings = dict() + + conan(conf, ['profile', 'new', profile, '--detect', '--force'], quiet=True) + # NOTE: Conan installs even 32-bit runtime packages on x86_64 for now :( + # it may potentially break system on Linux + if conf.env.DEST_SIZEOF_VOID_P == 4 and conf.env.DEST_CPU in ['x86', 'x86_64'] and conf.env.DEST_OS != 'linux': + settings['arch'] = 'x86' + + if conf.env.DEST_OS2 == 'android': + settings['os'] = 'Android' + + if conf.env.COMPILER_CC == 'msvc': + settings['compiler.runtime'] = 'MT' + + conan_update_profile(conf, settings, profile) + + # I think Conan is respecting environment CC/CXX values, so it's not need + # to specify compiler here + #compiler = conf.env.COMPILER_CC + #if conf.env.COMPILER_CC == 'msvc': + # compiler = 'Visual Studio' + #elif conf.env.DEST_OS == 'darwin' and conf.env.COMPILER_CC == 'clang': + # compiler = 'apple-clang' + #elif conf.env.COMPILER_CC == 'suncc': + # compiler = 'sun-cc' + #settings['compiler'] = compiler + + conf.end_msg(ver) + diff --git a/scripts/waifulib/cxx11.py b/scripts/waifulib/cxx11.py new file mode 100644 index 00000000..fdfe7844 --- /dev/null +++ b/scripts/waifulib/cxx11.py @@ -0,0 +1,74 @@ +# encoding: utf-8 +# cxx11.py -- check if compiler can compile C++11 code with lambdas +# Copyright (C) 2018 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +try: from fwgslib import get_flags_by_compiler +except: from waflib.extras.fwgslib import get_flags_by_compiler +from waflib import Configure + +# Input: +# CXX11_MANDATORY(optional) -- fail if C++11 not available +# Output: +# HAVE_CXX11 -- true if C++11 available, otherwise false + +modern_cpp_flags = { + 'msvc': [], + 'default': ['-std=c++11'] +} + +CXX11_LAMBDA_FRAGMENT=''' +class T +{ + static void M(){} +public: + void t() + { + auto l = []() + { + T::M(); + }; + } +}; + +int main() +{ + T t; + t.t(); +} +''' + +@Configure.conf +def check_cxx11(ctx, *k, **kw): + if not 'msg' in kw: + kw['msg'] = 'Checking if \'%s\' supports C++11' % ctx.env.COMPILER_CXX + + if not 'mandatory' in kw: + kw['mandatory'] = False + + # not best way, but this check + # was written for exactly mainui_cpp, + # where lambdas are mandatory + return ctx.check_cxx(fragment=CXX11_LAMBDA_FRAGMENT, *k, **kw) + +def configure(conf): + flags = get_flags_by_compiler(modern_cpp_flags, conf.env.COMPILER_CXX) + + if conf.check_cxx11(): + conf.env.HAVE_CXX11 = True + elif len(flags) != 0 and conf.check_cxx11(msg='...trying with additional flags', cxxflags = flags): + conf.env.HAVE_CXX11 = True + conf.env.CXXFLAGS += flags + else: + conf.env.HAVE_CXX11 = False + + if conf.env.CXX11_MANDATORY: + conf.fatal('C++11 support not available!') diff --git a/scripts/waifulib/enforce_pic.py b/scripts/waifulib/enforce_pic.py new file mode 100644 index 00000000..e8cdd534 --- /dev/null +++ b/scripts/waifulib/enforce_pic.py @@ -0,0 +1,35 @@ +# encoding: utf-8 +# enforce_pic.py -- enforcing PIC if requested +# Copyright (C) 2021 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +from waflib.Configure import conf + +@conf +def check_pic(conf, enable): + if enable: + # Every static library must have fPIC + if conf.env.DEST_OS != 'win32' and '-fPIC' in conf.env.CFLAGS_cshlib: + conf.env.append_unique('CFLAGS_cstlib', '-fPIC') + conf.env.append_unique('CXXFLAGS_cxxstlib', '-fPIC') + else: + if '-fPIC' in conf.env.CFLAGS_cstlib: + conf.env.CFLAGS_cstlib.remove('-fPIC') + if '-fPIC' in conf.env.CFLAGS_cshlib: + conf.env.CFLAGS_cshlib.remove('-fPIC') + if '-fPIC' in conf.env.CXXFLAGS_cxxshlib: + conf.env.CXXFLAGS_cxxshlib.remove('-fPIC') + if '-fPIC' in conf.env.CXXFLAGS_cxxstlib: + conf.env.CXXFLAGS_cxxstlib.remove('-fPIC') + if '-fPIC' in conf.env.CFLAGS_MACBUNDLE: + conf.env.CFLAGS_MACBUNDLE.remove('-fPIC') + if '-fPIC' in conf.env.CXXFLAGS_MACBUNDLE: + conf.env.CXXFLAGS_MACBUNDLE.remove('-fPIC') diff --git a/scripts/waifulib/force_32bit.py b/scripts/waifulib/force_32bit.py new file mode 100644 index 00000000..367cc44d --- /dev/null +++ b/scripts/waifulib/force_32bit.py @@ -0,0 +1,47 @@ +# encoding: utf-8 +# force_32bit.py -- force compiler to create 32-bit code +# Copyright (C) 2018 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +try: from fwgslib import get_flags_by_compiler +except: from waflib.extras.fwgslib import get_flags_by_compiler +from waflib import Configure + +# Input: +# BIT32_MANDATORY(optional) -- fail if 32bit mode not available +# Output: +# DEST_SIZEOF_VOID_P -- an integer, equals sizeof(void*) on target + +@Configure.conf +def check_32bit(ctx, *k, **kw): + if not 'msg' in kw: + kw['msg'] = 'Checking if \'%s\' can target 32-bit' % ctx.env.COMPILER_CC + + if not 'mandatory' in kw: + kw['mandatory'] = False + + return ctx.check_cc( fragment='int main(void){int check[sizeof(void*)==4?1:-1];return 0;}', *k, **kw) + +def configure(conf): + flags = ['-m32'] if not conf.env.DEST_OS == 'darwin' else ['-arch', 'i386'] + + if conf.check_32bit(): + conf.env.DEST_SIZEOF_VOID_P = 4 + elif conf.env.BIT32_MANDATORY and conf.check_32bit(msg = '...trying with additional flags', cflags = flags, linkflags = flags): + conf.env.LINKFLAGS += flags + conf.env.CXXFLAGS += flags + conf.env.CFLAGS += flags + conf.env.DEST_SIZEOF_VOID_P = 4 + else: + conf.env.DEST_SIZEOF_VOID_P = 8 + + if conf.env.BIT32_MANDATORY: + conf.fatal('Compiler can\'t create 32-bit code!') diff --git a/scripts/waifulib/fwgslib.py b/scripts/waifulib/fwgslib.py new file mode 100644 index 00000000..ef762caf --- /dev/null +++ b/scripts/waifulib/fwgslib.py @@ -0,0 +1,153 @@ +# encoding: utf-8 +# fwgslib.py -- utils for Waifu build system(Waf with extensions) by FWGS +# Copyright (C) 2018 a1batross, Michel Mooij (michel.mooij +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +import os +from waflib import Utils, Errors, Configure, Build + +def get_flags_by_compiler(flags, compiler, major_version=None): + '''Returns a list of compile flags, depending on compiler + + :param flags: compiler flags + :type flags: dict + :param compiler: compiler string(COMPILER_CC, for example) + :type compiler: string + :returns: list of flags + ''' + out = [] + if compiler in flags: + f = flags[compiler] + if type(f) is list: + out += f + elif type(f) is dict: + if major_version in f: + out += f[major_version] + elif 'default' in flags: + out += f['default'] + else: + raise TypeError('unknown type, expected list or dict, got %s' % type(f)) + elif 'default' in flags: + out += flags['default'] + return out + +def get_flags_by_type(flags, type, compiler, major_version=None): + '''Returns a list of compile flags, depending on compiler and build type + + :param flags: compiler flags + :param type: build type + :type type: string + :param compiler: compiler string(COMPILER_CC, for example) + :type compiler: string + :returns: list of flags + ''' + out = [] + if 'common' in flags: + out += get_flags_by_compiler(flags['common'], compiler, major_version) + if type in flags: + out += get_flags_by_compiler(flags[type], compiler, major_version) + return out + +@Configure.conf +def filter_flags(conf, flags, required_flags, features, checkarg, compiler): + + check_flags = required_flags + (['-Werror'] if compiler != 'msvc' else []) + tests = map(lambda x: { + 'features': features, + 'compiler' : compiler, + 'msg': '... ' + x, + 'define_name': Utils.quote_define_name(x), + checkarg: [x] + check_flags }, flags ) + + conf.env.stash() + conf.multicheck(*tests, + msg = 'Checking supported flags for %s in parallel' % compiler, + mandatory = False) + supported_flags = [ f for f in flags if conf.env[Utils.quote_define_name(f)] ] + conf.env.revert() + return supported_flags + +@Configure.conf +def filter_cflags(conf, flags, required_flags = []): + return conf.filter_flags(flags, required_flags, 'c', 'cflags', conf.env.COMPILER_CC) + +@Configure.conf +def filter_cxxflags(conf, flags, required_flags = []): + return conf.filter_flags(flags, required_flags, 'cxx', 'cxxflags', conf.env.COMPILER_CXX) + +def conf_get_flags_by_compiler(unused, flags, compiler, major_version=None): + return get_flags_by_compiler(flags, compiler, major_version) + +setattr(Configure.ConfigurationContext, 'get_flags_by_compiler', conf_get_flags_by_compiler) +setattr(Build.BuildContext, 'get_flags_by_compiler', conf_get_flags_by_compiler) + +def conf_get_flags_by_type(unused, flags, type, compiler, major_version=None): + return get_flags_by_type(flags, type, compiler, major_version) + +setattr(Configure.ConfigurationContext, 'get_flags_by_type', conf_get_flags_by_type) +setattr(Build.BuildContext, 'get_flags_by_type', conf_get_flags_by_type) + +def get_deps(bld, target): + '''Returns a list of (nested) targets on which this target depends. + + :param bld: a *waf* build instance from the top level *wscript* + :type bld: waflib.Build.BuildContext + :param target: task name for which the dependencies should be returned + :type target: str + :returns: a list of task names on which the given target depends + ''' + try: + tgen = bld.get_tgen_by_name(target) + except Errors.WafError: + return [] + else: + uses = Utils.to_list(getattr(tgen, 'use', [])) + deps = uses[:] + for use in uses: + deps += get_deps(bld, use) + return list(set(deps)) + + +def get_tgens(bld, names): + '''Returns a list of task generators based on the given list of task + generator names. + + :param bld: a *waf* build instance from the top level *wscript* + :type bld: waflib.Build.BuildContext + :param names: list of task generator names + :type names: list of str + :returns: list of task generators + ''' + tgens=[] + for name in names: + try: + tgen = bld.get_tgen_by_name(name) + except Errors.WafError: + pass + else: + tgens.append(tgen) + return list(set(tgens)) + + +def get_targets(bld): + '''Returns a list of user specified build targets or None if no specific + build targets has been selected using the *--targets=* command line option. + + :param bld: a *waf* build instance from the top level *wscript*. + :type bld: waflib.Build.BuildContext + :returns: a list of user specified target names (using --targets=x,y,z) or None + ''' + if bld.targets == '': + return None + targets = bld.targets.split(',') + for target in targets: + targets += get_deps(bld, target) + return targets diff --git a/scripts/waifulib/gitversion.py b/scripts/waifulib/gitversion.py new file mode 100644 index 00000000..3cf1b980 --- /dev/null +++ b/scripts/waifulib/gitversion.py @@ -0,0 +1,47 @@ +# encoding: utf-8 +# gitversion.py -- waf plugin to get git version +# Copyright (C) 2018 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +import subprocess +from waflib import Configure, Logs + +@Configure.conf +def get_git_version(conf): + # try grab the current version number from git + node = conf.path.find_node('.git') + + if not node: + return None + + try: + stdout = conf.cmd_and_log([conf.env.GIT[0], 'describe', '--dirty', '--always'], + cwd = node.parent) + version = stdout.strip() + except Exception as e: + version = '' + Logs.debug(str(e)) + + if len(version) == 0: + version = None + + return version + +def configure(conf): + if conf.find_program('git', mandatory = False): + conf.start_msg('Checking git hash') + ver = conf.get_git_version() + + if ver: + conf.env.GIT_VERSION = ver + conf.end_msg(conf.env.GIT_VERSION) + else: + conf.end_msg('no', color='YELLOW') diff --git a/scripts/waifulib/msdev.py b/scripts/waifulib/msdev.py new file mode 100644 index 00000000..4d623976 --- /dev/null +++ b/scripts/waifulib/msdev.py @@ -0,0 +1,780 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# Michel Mooij, michel.mooij7@gmail.com +# modified: Alibek Omarov, a1ba.omarov@gmail.com + +''' +Summary +------- +Exports and converts *waf* project data, for C/C++ programs, static- and shared +libraries, into **Microsoft Visual Studio**, also known as **msdev**, +project files (.vcproj) and solution (.sln) files. + +**Microsoft Visual Studio** is a mature and stable integrated development +environment for, amongst others, the C and C++ programming language. A free +version of this IDE, known as the *express* version can be obtained from Microsoft +at http://wwww.visualstudio.com. + +Description +----------- +When exporting *waf* project data, a single **Visual Studio** solution will be +exported in the top level directory of your *WAF* build environment. This +solution file will contain references to all exported **Visual Studio** +projects and will include dependencies between those projects and will have the +same name as APPNAME variable from the top level *wscript* file. + +For each single task generator (*waflib.TaskGenerator*), for instance a +*bld.program(...)* which has been defined within a *wscript* file somewhere in +the build environment, a single **Visual Studio** project file will be generated +in the same directory as where the task generator has been defined. +The name of this task generator will be used as name for the exported **Visual +Studio** project file. If for instance the name of the task generator is +*hello*, then a **Visual Studio** project file named *hello.vcproj* will be +exported. + +Example below presents an overview of an environment in which **Visual Studio** +files already have been exported:: + + . + ├── components + │ └── clib + │ ├── program + │ │ ├── cprogram.vcproj + │ │ └── wscript + │ ├── shared + │ │ ├── cshlib.vcproj + │ │ └── wscript + │ └── static + │ ├── cstlib.vcproj + │ └── wscript + │ + ├── waf.vcproj + ├── appname.sln + └── wscript + + +Projects will be exported such that they will use the same settings and +structure as has been defined for that build task within the *waf* build +environment as much as possible. Note that since cross compilation is not +really supported in this IDE, only the first environment encountered that +is targeted for **MS Windows** will be exported; i.e. an environment in +which:: + + bld.env.DEST_OS == 'win32' + +is true. + + +Please note that in contrast to a *normal* IDE setup the exported projects +will contain either a *debug* **or** a *release* build target but not both at +the same time. By doing so exported projects will always use the same settings +(e.g. compiler options, installation paths) as when building the same task in +the *waf* build environment from command line. + + +Usage +----- +**Visual Studio** project and workspace files can be exported using the *msdev* +command, as shown in the example below:: + + $ waf msdev + +When needed, exported **Visual Studio** project- and solution files can be +removed using the *clean* command, as shown in the example below:: + + $ waf msdev --clean + +Once exported simply open the *appname.sln* using **Visual Studio** +this will automatically open all exported projects as well. + +Tasks generators to be excluded can be marked with the *skipme* option +as shown below:: + + def build(bld): + bld.program(name='foo', src='foobar.c', msdev_skip=True) + +''' + +import os +import sys +import copy +import uuid +import shutil +import xml.etree.ElementTree as ElementTree +from xml.dom import minidom +from waflib import Utils, Logs, Errors, Context +from waflib.Build import BuildContext +# import waftools +# from waftools import deps +try: from fwgslib import get_targets +except: from waflib.extras.fwgslib import get_targets + +try: from subproject import get_subproject_env +except: from waflib.extras.subproject import get_subproject_env + + +def options(opt): + '''Adds command line options to the *waf* build environment + + :param opt: Options context from the *waf* build environment. + :type opt: waflib.Options.OptionsContext + ''' + opt.add_option('--msdev', dest='msdev', default=False, action='store_true', help='select msdev for export/import actions') + opt.add_option('--clean', dest='clean', default=False, action='store_true', help='delete exported files') + + +def configure(conf): + '''Method that will be invoked by *waf* when configuring the build + environment. + + :param conf: Configuration context from the *waf* build environment. + :type conf: waflib.Configure.ConfigurationContext + ''' + pass + + +class MsDevContext(BuildContext): + '''export C/C++ tasks to MS Visual Studio projects and solutions.''' + cmd = 'msdev' + + def execute(self): + '''Will be invoked when issuing the *msdev* command.''' + self.restore() + if not self.all_envs: + self.load_envs() + self.recurse([self.run_dir]) + self.pre_build() + + for group in self.groups: + for tgen in group: + try: + f = tgen.post + except AttributeError: + pass + else: + f() + try: + self.get_tgen_by_name('') + except Exception: + pass + + self.msdev = True + if self.options.clean: + cleanup(self) + else: + export(self) + self.timer = Utils.Timer() + +def export(bld): + '''Exports all C and C++ task generators as **Visual Studio** projects + and creates a **Visual Studio** solution containing references to + those project. + + :param bld: a *waf* build instance from the top level *wscript*. + :type bld: waflib.Build.BuildContext + ''' + if not bld.options.msdev and not hasattr(bld, 'msdev'): + return + + Logs.pprint('RED', '''This tool is intended only to ease development for Windows users! +Don't use it for release builds, as it doesn't enables WinXP compatibility for now!''') + + solution = MsDevSolution(bld) + targets = get_targets(bld) + + saveenv = bld.env # root env + for tgen in bld.task_gen_cache_names.values(): + if targets and tgen.get_name() not in targets: + continue + if getattr(tgen, 'msdev_skipme', False): + continue + try: + bld.env = get_subproject_env(bld, tgen.path, True) + except IndexError: + bld.env = saveenv + if set(('c', 'cxx')) & set(getattr(tgen, 'features', [])): + project = MsDevProject(bld, tgen) + project.export() + + (name, fname, deps, pid) = project.get_metadata() + solution.add_project(name, fname, deps, pid) + + solution.export() + + +def cleanup(bld): + '''Removes all **Visual Studio** projects and workspaces from the + *waf* build environment. + + :param bld: a *waf* build instance from the top level *wscript*. + :type bld: waflib.Build.BuildContext + ''' + if not bld.options.msdev and not hasattr(bld, 'msdev'): + return + + targets = get_targets(bld) + saveenv = bld.env + + for tgen in bld.task_gen_cache_names.values(): + if targets and tgen.get_name() not in targets: + continue + if getattr(tgen, 'msdev_skipme', False): + continue + try: + bld.env = get_subproject_env(bld, tgen.path) + except IndexError: + bld.env = saveenv + if set(('c', 'cxx')) & set(getattr(tgen, 'features', [])): + project = MsDevProject(bld, tgen) + project.cleanup() + + solution = MsDevSolution(bld) + solution.cleanup() + + +class MsDev(object): + '''Abstract base class used for exporting *waf* project data to + **Visual Studio** projects and solutions. + + REMARK: + bld.objects() taks generators are treated as static libraries. + + :param bld: Build context as used in *wscript* files of your *waf* build + environment. + :type bld: waflib.Build.BuildContext + ''' + + PROGRAM = '1' + '''Identifier for projects containing an executable''' + + SHLIB = '2' + '''Identifier for projects containing a shared library''' + + STLIB = '4' + '''Identifier for projects containing a static library''' + + C = 'c' + '''Identifier for projects using C language''' + + CXX = 'cxx' + '''Identifier for projects using C++ language''' + + def __init__(self, bld): + self.bld = bld + + def export(self): + '''Exports a **Visual Studio** solution or project.''' + content = self.get_content() + if not content: + return + if self.xml_clean: + content = self.xml_clean(content) + + node = self.make_node() + if not node: + return + node.write(content) + Logs.pprint('YELLOW', 'exported: %s' % node.abspath()) + + def cleanup(self): + '''Deletes a **Visual Studio** solution or project file including + associated files (e.g. *.ncb*). + ''' + cwd = self.get_cwd() + for node in cwd.ant_glob('*.user'): + node.delete() + Logs.pprint('YELLOW', 'removed: %s' % node.abspath()) + for node in cwd.ant_glob('*.ncb'): + node.delete() + Logs.pprint('YELLOW', 'removed: %s' % node.abspath()) + for node in cwd.ant_glob('*.suo'): + node.delete() + Logs.pprint('YELLOW', 'removed: %s' % node.abspath()) + for node in cwd.ant_glob('*.sln'): + node.delete() + Logs.pprint('YELLOW', 'removed: %s' % node.abspath()) + node = self.find_node() + if node: + node.delete() + Logs.pprint('YELLOW', 'removed: %s' % node.abspath()) + + def get_cwd(self): + cwd = os.path.dirname(self.get_fname()) + if cwd == "": + cwd = "." + return self.bld.srcnode.find_node(cwd) + + def find_node(self): + name = self.get_fname() + if not name: + return None + return self.bld.srcnode.find_node(name) + + def make_node(self): + name = self.get_fname() + if not name: + return None + return self.bld.srcnode.make_node(name.lower()) + + def get_fname(self): + ''' Returns file name.''' + return None + + def get_content(self): + ''' Returns file content.''' + return None + + def xml_clean(self, content): + s = minidom.parseString(content).toprettyxml(indent="\t") + lines = [l for l in s.splitlines() if not l.isspace() and len(l)] + lines[0] = '' + return '\n'.join(lines) + + +class MsDevSolution(MsDev): + '''Class used for exporting *waf* project data to a **Visual Studio** + solution located in the lop level directory of the *waf* build + environment. + + :param bld: Build context as used in *wscript* files of your *waf* build + environment. + :type bld: waflib.Build.BuildContext + ''' + + def __init__(self, bld): + super(MsDevSolution, self).__init__(bld) + self.projects = {} + self.xml_clean = None + + def get_fname(self): + '''Returns the workspace's file name.''' + return '%s.sln' % getattr(Context.g_module, Context.APPNAME) + + def export(self): + '''Exports a **Visual Studio** solution.''' + dst = self.get_fname() + + s = MSDEV_SOLUTION + + with open(dst, 'w') as f: + for line in s[0:3]: + f.write(line) + for name, (fname, deps, pid) in self.projects.items(): + sid = str(uuid.uuid4()).upper() + f.write('Project("{%s}") = "%s", "%s", "{%s}"\n' % (sid, name, fname, pid)) + if len(deps): + f.write('\tProjectSection(ProjectDependencies) = postProject\n') + for d in deps: + try: + (_, _, pid) = self.projects[d] + except KeyError: + pass + else: + f.write('\t\t{%s} = {%s}\n' % (pid, pid)) + f.write('\tEndProjectSection\n') + f.write('EndProject\n') + for line in s[3:8]: + f.write(line) + for _, (_, _, pid) in self.projects.items(): + f.write('\t\t{%s}.Debug|Win32.ActiveCfg = Debug|Win32\n' % (pid)) + f.write('\t\t{%s}.Debug|Win32.Build.0 = Debug|Win32\n' % (pid)) + for line in s[8:]: + f.write(line) + Logs.pprint('YELLOW', 'exported: %s' % os.path.abspath(dst)) + + def add_project(self, name, fname, deps, pid): + '''Adds a project to the workspace. + + :param name: Name of the project. + :type name: str + :param fname: Complete path to the project file + :type fname: str + :param deps: List of names on which this project depends + :type deps: list of str + ''' + self.projects[name] = (fname, deps, pid) + + +class MsDevProject(MsDev): + '''Class used for exporting *waf* project data to **Visual Studio** + projects. + + :param bld: Build context as used in *wscript* files of your *waf* build + environment. + :type bld: waflib.Build.BuildContext + + :param gen: Task generator that contains all information of the task to be + converted and exported to the **Visual Studio** project. + :type gen: waflib.Task.TaskGen + ''' + + def __init__(self, bld, gen): + super(MsDevProject, self).__init__(bld) + self.gen = gen + self.id = str(uuid.uuid4()).upper() + self.type = self.get_type(gen) + self.language = self.get_language(gen) + self.buildpath = self.get_buildpath(bld, gen) + + def get_type(self, gen): + if set(('cprogram', 'cxxprogram')) & set(gen.features): + return MsDev.PROGRAM + elif set(('cshlib', 'cxxshlib')) & set(gen.features): + return MsDev.SHLIB + else: + return MsDev.STLIB + + def get_language(self, gen): + return MsDev.CXX if 'cxx' in gen.features else MsDev.C + + def get_buildpath(self, bld, gen): + pth = '%s/%s' % (bld.path.get_bld().path_from(gen.path), gen.path.relpath()) + return pth.replace('/', '\\') + + def get_fname(self): + '''Returns the project's file name.''' + return '%s/%s.vcproj' % (self.gen.path.relpath().replace('\\', '/'), self.gen.get_name()) + + def get_root(self): + '''Returns a document root, either from an existing file, or from template.''' + fname = self.get_fname() + if os.path.exists(fname): + tree = ElementTree.parse(fname) + root = tree.getroot() + else: + root = ElementTree.fromstring(MSDEV_PROJECT) + return root + + def get_content(self): + '''Returns the content of a project file.''' + root = self.get_root() + root.set('Name', self.gen.get_name()) + root.set('ProjectGUID', '{%s}' % self.id) + configurations = root.find('Configurations') + for configuration in configurations.iter('Configuration'): + configuration.set('ConfigurationType', '%s' % self.type) + configuration.set('OutputDirectory', '%s\\msdev' % self.buildpath) + configuration.set('IntermediateDirectory', '%s\\msdev' % self.buildpath) + for tool in configuration.iter('Tool'): + name = tool.get('Name') + if name == 'VCCLCompilerTool': + tool.set('PreprocessorDefinitions', '%s' % self.get_compiler_defines(self.gen)) + includes = [] + for include in self.get_compiler_includes(self.bld, self.gen): + includes.append('%s' % include) + tool.set('AdditionalIncludeDirectories', ';'.join(includes)) + if name == 'VCLinkerTool': + if self.type == MsDev.PROGRAM: + # Force Windows Subsystem + # TODO: this isn't enables Windows XP compatibility! + tool.set('SubSystem', '2') + self.update_link_deps(tool) + self.update_link_paths(tool) + files = root.find('Files') + self.update_includes(files) + self.update_sources(files) + return ElementTree.tostring(root) + + def update_includes(self, files): + '''Add include files.''' + includes = [] + for filtr in files.iter('Filter'): + if filtr.get('Name') == 'Header Files': + for include in filtr.iter('File'): + includes.append(include.get('RelativePath')) + break + if len(includes) == 0: + filtr = ElementTree.SubElement(files, 'Filter', attrib={'Name':'Header Files', 'Filter':'h;hpp;hxx;hm;inl;inc;xsd'}) + filtr.set('UniqueIdentifier', '{%s}' % str(uuid.uuid4()).upper()) + for include in self.get_include_files(self.bld, self.gen): + if include not in includes: + ElementTree.SubElement(filtr, 'File', attrib={'RelativePath':'%s' % include}) + + def update_sources(self, files): + '''Add source files.''' + sources = [] + for filtr in files.iter('Filter'): + if filtr.get('Name') == 'Source Files': + for source in filtr.iter('File'): + sources.append(source.get('RelativePath')) + break + if len(sources) == 0: + filtr = ElementTree.SubElement(files, 'Filter', attrib={'Name':'Source Files', 'Filter':'cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx'}) + filtr.set('UniqueIdentifier', '{%s}' % str(uuid.uuid4()).upper()) + for source in self.get_genlist(self.gen, 'source'): + if source not in sources: + ElementTree.SubElement(filtr, 'File', attrib={'RelativePath':'%s' % source}) + + def update_link_deps(self, tool): + '''Add libraries on which this project depends.''' + deps = tool.get('AdditionalDependencies') + + deps = [] # clean out deps everytime + + libs = self.get_link_libs(self.bld, self.gen) + for lib in libs: + dep = '%s.lib' % lib + if dep not in deps: + deps.append(dep) + if len(deps): + add_deps = " ".join(deps) # work around when converting to vcxproj by inserting spaces + tool.set('AdditionalDependencies', add_deps) + + def update_link_paths(self, tool): + deps = tool.get('AdditionalLibraryDirectories', '') + deps = [] + dirs = self.get_link_paths(self.bld, self.gen) + for dep in dirs: + if dep not in deps: + deps.append(dep) + if len(deps): + tool.set('AdditionalLibraryDirectories', ';'.join(deps)) + + def get_metadata(self): + '''Returns a tuple containing project information (name, file name and + dependencies). + ''' + name = self.gen.get_name() + fname = self.get_fname().replace('/', '\\') + deps = Utils.to_list(getattr(self.gen, 'use', [])) + return (name, fname, deps, self.id) + + def get_genlist(self, gen, name): + lst = Utils.to_list(getattr(gen, name, [])) + lst = [str(l.path_from(gen.path)) if hasattr(l, 'path_from') else l for l in lst] + return [l.replace('/', '\\') for l in lst] + + def get_compiler_options(self, bld, gen): + if self.language == MsDev.CXX: + flags = getattr(gen, 'cxxflags', []) + bld.env.CXXFLAGS + else: + flags = getattr(gen, 'cflags', []) + bld.env.CFLAGS + if self.type == MsDev.SHLIB: + if self.language == MsDev.CXX: + flags.extend(bld.env.CXXFLAGS_cxxshlib) + else: + flags.extend(bld.env.CFLAGS_cshlib) + return list(set(flags)) + + def get_compiler_includes(self, bld, gen): + includes = self.get_genlist(gen, 'includes') + for include in bld.env['INCLUDES']: + root = bld.path.abspath().replace('\\', '/') + pref = os.path.commonprefix([root, include]) + if pref == root: + node = bld.root.find_dir(include) + if node: + includes.append(node.path_from(gen.path).replace('/', '\\')) + + deps = Utils.to_list(getattr(gen, 'use', [])) + for dep in deps: + uselib_incs = bld.env['INCLUDES_%s' % dep] + for uselib_inc in uselib_incs: + root = bld.root.abspath().replace('\\', '/') + pref = os.path.commonprefix([root, uselib_inc]) + if pref == root: + node = bld.root.find_dir(uselib_inc) + if node: + inc = node.path_from(gen.path).replace('/', '\\') + includes.append(inc) + Logs.pprint('YELLOW', 'Added relative include: %s' % inc) + includes.append(uselib_inc) + return includes + + def get_compiler_defines(self, gen): + defines = self.get_genlist(gen, 'defines') + gen.bld.env.DEFINES + if 'win32' in sys.platform: + defines = [d.replace('"', '\\"') for d in defines] + defines = ';'.join(defines) + return defines + + def get_link_options(self, bld, gen): + flags = getattr(gen, 'linkflags', []) + bld.env.LINKFLAGS + if self.language == MsDev.CXX: + if self.type == MsDev.SHLIB: + flags.extend(bld.env.LINKFLAGS_cxxshlib) + else: + flags.extend(bld.env.LINKFLAGS_cshlib) + return list(set(flags)) + + def get_link_libs(self, bld, gen): + libs = Utils.to_list(getattr(gen, 'lib', [])) + deps = Utils.to_list(getattr(gen, 'use', [])) + for dep in deps: + try: + tgen = bld.get_tgen_by_name(dep) + except Errors.WafError: + uselib_libs = bld.env['LIB_%s' % dep] + for uselib_lib in uselib_libs: + libs.append(uselib_lib) + pass + else: + if self.type == MsDev.STLIB: + libs.append(dep) + return libs + + def get_link_paths(self, bld, gen): + dirs = [] + deps = Utils.to_list(getattr(gen, 'use', [])) + for dep in deps: + try: + tgen = bld.get_tgen_by_name(dep) + except Errors.WafError: + uselib_paths = bld.env['LIBPATH_%s' % dep] + for uselib_path in uselib_paths: + root = bld.root.abspath().replace('\\', '/') + pref = os.path.commonprefix([root, uselib_path]) + if pref == root: + node = bld.root.find_dir(uselib_path) + if node: + libpath = node.path_from(gen.path).replace('/', '\\') + dirs.append(libpath) + Logs.pprint('YELLOW', 'Added relative library path: %s' % libpath) + dirs.append(uselib_path) + pass + else: + if self.type in (MsDev.STLIB, MsDev.SHLIB, MsDev.PROGRAM): + directory = '%s\\msdev' % tgen.path.get_bld().path_from(gen.path) + if directory not in dirs: + dirs.append(directory.replace('/', '\\')) +# elif self.type in (MsDev.PROGRAM): +# try: +# for directory in tgen.lib_paths: +# if directory not in dirs: +# dirs.append(directory.replace('/', '\\')) +# except AttributeError: +# pass + return dirs + + def get_include_files(self, bld, gen): + includes = [] + for include in self.get_genlist(gen, 'includes'): + node = gen.path.find_dir(include) + if node: + for header in node.ant_glob('*.h*'): + includes.append(header.path_from(gen.path).replace('/', '\\')) + + for include in bld.env['INCLUDES']: + root = bld.path.abspath().replace('\\', '/') + pref = os.path.commonprefix([root, include]) + if pref == root: + node = bld.root.find_dir(include) + if node: + for header in node.ant_glob('*.h*'): + includes.append(header.path_from(gen.path).replace('/', '\\')) + + return includes + + +MSDEV_PROJECT = \ +''' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +''' + +MSDEV_SOLUTION = [ +'Microsoft Visual Studio Solution File, Format Version 8.00\n', +'# Visual Studio 2005\n', +'Global\n', + 'GlobalSection(SolutionConfigurationPlatforms) = preSolution\n', + 'Debug|Win32 = Debug|Win32\n', + 'EndGlobalSection\n', + 'GlobalSection(ProjectConfigurationPlatforms) = postSolution\n', + 'EndGlobalSection\n', + 'GlobalSection(SolutionProperties) = preSolution\n', + 'HideSolutionNode = FALSE\n', + 'EndGlobalSection\n', +'EndGlobal\n', +'\n'] diff --git a/scripts/waifulib/owcc.py b/scripts/waifulib/owcc.py deleted file mode 100755 index efee4131..00000000 --- a/scripts/waifulib/owcc.py +++ /dev/null @@ -1,124 +0,0 @@ -#! /usr/bin/env python -# encoding: utf-8 - -""" -Compiler definition for OpenWatcom's owcc -""" - -from waflib import Errors, Utils -from waflib.Tools import ccroot, ar -from waflib.Configure import conf - -@conf -def find_owcc(conf): - v = conf.env - cc = None - if v.CC: - cc = v.CC - else: - cc = conf.find_program('cc', var='CC') - if not cc: - conf.fatal('owcc was not found') - - try: - out = conf.cmd_and_log(cc + ['-v']) - except Errors.WafError: - conf.fatal('%r -v could not be executed' % cc) - if not 'Open Watcom' in out: - conf.fatal('failed to detect owcc') - - v.CC = cc - v.CC_NAME = 'owcc' - v.CXX = v.CC - v.CXX_NAME = v.cc_NAME - if not v.AR: - conf.find_program('wlib', var='AR') - conf.add_os_flags('ARFLAGS') - if not v.ARFLAGS: - v.ARFLAGS = ['-fo'] - -@conf -def owcc_common_flags(conf): - v = conf.env - - v.CC_SRC_F = '' - v.CXX_SRC_F = '' - v.CC_TGT_F = ['-c', '-o'] - v.CXX_TGT_F = ['-c', '-o'] - v.CPPPATH_ST = '-I%s' - v.DEFINES_ST = '-D%s' - - if not v.LINK_CC: - v.LINK_CC = v.CC - if not v.LINK_CXX: - v.LINK_CXX = v.CXX - - v.CCLNK_SRC_F = '' - v.CCLNK_TGT_F = ['-o'] - v.CXXLNK_SRC_F = '' - v.CXXLNK_TGT_F = ['-o'] - - v.LIB_ST = '-l%s' # template for adding libs - v.LIBPATH_ST = '-L%s' # template for adding libpaths - v.STLIB_ST = '-l%s' - v.STLIBPATH_ST = '-L%s' - - v.cprogram_PATTERN = '%s.exe' - v.cxxprogram_PATTERN = '%s.exe' - v.cshlib_PATTERN = 'lib%s.so' - v.cxxshlib_PATTERN = 'lib%s.so' - v.cstlib_PATTERN = '%s.a' - v.cxxstlib_PATTERN = '%s.a' - -def find_target(flags): - if '-b' in flags: - return flags[flags.index('-b')+1] - -@conf -def owcc_detect_platform(conf): - v = conf.env - target = find_target(v.LINKFLAGS) - if not target: - target = find_target(v.CC) - if not target: - target = find_target(v.CFLAGS) - if not target: - target = Utils.unversioned_sys_platform() - if target in ['dos4g', 'dos4gnz', 'dos32a', 'stub32a', 'stub32ac']: - v.DEST_BINFMT = 'le' - v.DEST_OS = 'dos' - elif target in ['dos32x', 'stub32x', 'stub32xc']: - v.DEST_BINFMT = 'lx' - v.DEST_OS = 'dos' - elif target.startswith('win') or target.startswith('nt'): - v.DEST_BINFMT = 'pe' - v.DEST_OS = 'win32' - elif target == 'qnx386': - v.DEST_OS = 'qnx' - v.DEST_BINFMT = 'qnx' - elif target in ['linux', '386']: - v.DEST_OS = 'linux' - v.DEST_BINFMT = 'elf' - else: - v.DEST_OS = target - v.DEST_BINFMT = None - - v.DEST_CPU = 'i386' - - for f in v.LINKFLAGS + v.CC + v.CFLAGS: - if f.startswith('-march'): - v.DEST_CPU=f.split('=')[1] - break - - -def configure(conf): - conf.find_owcc() - conf.owcc_common_flags() - conf.cc_load_tools() - conf.cc_add_flags() - conf.env.append_unique('CFLAGS','-Wc,-xx') - conf.cxx_load_tools() - conf.cxx_add_flags() - conf.env.append_unique('CXXFLAGS','-Wc,-xx') - conf.link_add_flags() - conf.owcc_detect_platform() diff --git a/scripts/waifulib/reconfigure.py b/scripts/waifulib/reconfigure.py new file mode 100644 index 00000000..5c130422 --- /dev/null +++ b/scripts/waifulib/reconfigure.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Copyright (c) 2019 mittorn + +''' +Reconfigure + +Store/load configuration user input + +Usage: + def options(opt): + opt.load('reconfigure') + + def configure(conf): + conf.load('reconfigure') + + ./waf configure --reconfigure +''' + +from waflib import Configure, Logs, Options, Utils, ConfigSet +import os +import optparse + +def options(opt): + opt.add_option('--rebuild-cache', dest='rebuild_cache', default=False, action='store_true', help='load previous configuration') + opt.add_option('--reconfigure', dest='reconfigure', default=False, action='store_true', help='load and update configuration') + +def configure(conf): + store_path = os.path.join(conf.bldnode.abspath(), 'configuration.py') + store_data = ConfigSet.ConfigSet() + options = vars(conf.options) + environ = conf.environ + if conf.options.reconfigure or conf.options.rebuild_cache: + store_data.load(store_path) + if conf.options.reconfigure: + for o in options: + if options[o]: store_data['OPTIONS'][o] = options[o] + store_data['ENVIRON'].update(environ) + store_data.store(store_path) + conf.environ = store_data['ENVIRON'] + conf.options = optparse.Values(store_data['OPTIONS']) + else: + store_data['OPTIONS'] = vars(conf.options) + store_data['ENVIRON'] = conf.environ + store_data.store(store_path) diff --git a/scripts/waifulib/sdl2.py b/scripts/waifulib/sdl2.py new file mode 100644 index 00000000..abb44275 --- /dev/null +++ b/scripts/waifulib/sdl2.py @@ -0,0 +1,93 @@ +# encoding: utf-8 +# sdl2.py -- sdl2 waf plugin +# Copyright (C) 2018 a1batross +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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. + +import os + +def options(opt): + grp = opt.add_option_group('SDL2 options') + grp.add_option('-s', '--sdl2', action='store', dest = 'SDL2_PATH', default = None, + help = 'path to precompiled SDL2 library(required for Windows)') + + grp.add_option('--skip-sdl2-sanity-check', action='store_false', default = True, dest='SDL2_SANITY_CHECK', + help = 'skip checking SDL2 sanity') + +def my_dirname(path): + # really dumb, will not work with /path/framework//, but still enough + if path[-1] == '/': + path = path[:-1] + return os.path.dirname(path) + +def sdl2_configure_path(conf, path): + conf.env.HAVE_SDL2 = 1 + if conf.env.DEST_OS == 'darwin': + conf.env.INCLUDES_SDL2 = [ + os.path.abspath(os.path.join(path, 'Headers')) + ] + conf.env.FRAMEWORKPATH_SDL2 = [my_dirname(path)] + conf.env.FRAMEWORK_SDL2 = ['SDL2'] + else: + conf.env.INCLUDES_SDL2 = [ + os.path.abspath(os.path.join(path, 'include')), + os.path.abspath(os.path.join(path, 'include/SDL2')) + ] + libpath = 'lib' + if conf.env.COMPILER_CC == 'msvc': + if conf.env.DEST_CPU == 'x86_64': + libpath = 'lib/x64' + else: + libpath = 'lib/' + conf.env.DEST_CPU + conf.env.LIBPATH_SDL2 = [os.path.abspath(os.path.join(path, libpath))] + conf.env.LIB_SDL2 = ['SDL2'] + +def configure(conf): + if conf.options.SDL2_PATH: + conf.start_msg('Configuring SDL2 by provided path') + sdl2_configure_path(conf, conf.options.SDL2_PATH) + conf.end_msg('yes: {0}, {1}, {2}'.format(conf.env.LIB_SDL2, conf.env.LIBPATH_SDL2, conf.env.INCLUDES_SDL2)) + else: + try: + conf.check_cfg( + path='sdl2-config', + args='--cflags --libs', + package='', + msg='Checking for library SDL2', + uselib_store='SDL2') + except conf.errors.ConfigurationError: + conf.env.HAVE_SDL2 = 0 + + if not conf.env.HAVE_SDL2 and conf.env.CONAN: + if not conf.env.SDL2_VERSION: + version = '2.0.10' + else: + version = conf.env.SDL2_VERSION + + conf.load('conan') + conf.add_conan_remote('bincrafters', 'https://api.bintray.com/conan/bincrafters/public-conan') + conf.add_dependency('sdl2/%s@bincrafters/stable' % version, options = { 'shared': 'True' } ) + + if conf.env.HAVE_SDL2 and conf.options.SDL2_SANITY_CHECK: + try: + conf.check_cc( + fragment=''' + #define SDL_MAIN_HANDLED + #include + int main( void ) + { + SDL_Init( SDL_INIT_EVERYTHING ); + return 0; + }''', + msg = 'Checking for library SDL2 sanity', + use = 'SDL2', + execute = False) + except conf.errors.ConfigurationError: + conf.env.HAVE_SDL2 = 0 diff --git a/scripts/waifulib/strip_on_install.py b/scripts/waifulib/strip_on_install.py new file mode 100644 index 00000000..f499d1b3 --- /dev/null +++ b/scripts/waifulib/strip_on_install.py @@ -0,0 +1,78 @@ +#! /usr/bin/env python +# Modified: Alibek Omarov +# Originally taken from Thomas Nagy's blogpost + +""" +Strip executables upon installation +""" + +import shutil, os +from waflib import Build, Utils, Context, Errors, Logs + +def options(opt): + grp = opt.option_groups['install/uninstall options'] + grp.add_option('--strip', dest='strip', action='store_true', default=False, + help='strip binaries. You must pass this flag to install command [default: %default]') + + grp.add_option('--strip-to-file', dest='strip_to_file', action='store_true', default=False, + help='strip debug information to file *.debug. Implies --strip. You must pass this flag to install command [default: %default]') + +def configure(conf): + if conf.env.DEST_BINFMT in ['elf', 'mac-o']: + conf.find_program('strip', var='STRIP') + if not conf.env.STRIPFLAGS: + conf.env.STRIPFLAGS = os.environ['STRIPFLAGS'] if 'STRIPFLAGS' in os.environ else [] + + # a1ba: I am lazy to add `export OBJCOPY=` everywhere in my scripts + # so just try to deduce which objcopy we have + try: + k = conf.env.STRIP[0].rfind('-') + if k >= 0: + objcopy_name = conf.env.STRIP[0][:k] + '-objcopy' + try: conf.find_program(objcopy_name, var='OBJCOPY') + except: conf.find_program('objcopy', var='OBJCOPY') + else: + conf.find_program('objcopy', var='OBJCOPY') + except: + conf.find_program('objcopy', var='OBJCOPY') + +def copy_fun(self, src, tgt): + inst_copy_fun(self, src, tgt) + + if not self.generator.bld.options.strip and not self.generator.bld.options.strip_to_file: + return + + if self.env.DEST_BINFMT not in ['elf', 'mac-o']: # don't strip unknown formats or PE + return + + if getattr(self.generator, 'link_task', None) and self.generator.link_task.outputs[0] in self.inputs: + tgt_debug = tgt + '.debug' + strip_cmd = self.env.STRIP + self.env.STRIPFLAGS + [tgt] + ocopy_cmd = self.env.OBJCOPY + ['--only-keep-debug', tgt, tgt_debug] + ocopy_debuglink_cmd = self.env.OBJCOPY + ['--add-gnu-debuglink=%s' % tgt_debug, tgt] + c1 = Logs.colors.NORMAL + c2 = Logs.colors.CYAN + c3 = Logs.colors.YELLOW + c4 = Logs.colors.BLUE + try: + if self.generator.bld.options.strip_to_file: + self.generator.bld.cmd_and_log(ocopy_cmd, output=Context.BOTH, quiet=Context.BOTH) + if not self.generator.bld.progress_bar: + Logs.info('%s+ objcopy --only-keep-debug %s%s%s %s%s%s', c1, c4, tgt, c1, c3, tgt_debug, c1) + + self.generator.bld.cmd_and_log(strip_cmd, output=Context.BOTH, quiet=Context.BOTH) + if not self.generator.bld.progress_bar: + f1 = os.path.getsize(src) + f2 = os.path.getsize(tgt) + Logs.info('%s+ strip %s%s%s (%d bytes change)', c1, c2, tgt, c1, f2 - f1) + + if self.generator.bld.options.strip_to_file: + self.generator.bld.cmd_and_log(ocopy_debuglink_cmd, output=Context.BOTH, quiet=Context.BOTH) + if not self.generator.bld.progress_bar: + Logs.info('%s+ objcopy --add-gnu-debuglink=%s%s%s %s%s%s', c1, c3, tgt_debug, c1, c2, tgt, c1) + except Errors.WafError as e: + print(e.stdout, e.stderr) + +inst_copy_fun = Build.inst.copy_fun +Build.inst.copy_fun = copy_fun + diff --git a/scripts/waifulib/subproject.py b/scripts/waifulib/subproject.py new file mode 100644 index 00000000..e8bfc61b --- /dev/null +++ b/scripts/waifulib/subproject.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Copyright (c) 2019 a1batross + +''' +Subproject tool + +Helps you have standalone environment for each subproject(subdirectory) + +Usage: + def options(opt): + opt.load('subproject') + + def configure(conf): + conf.add_subproject('folder1 folder2') + + def build(bld): + bld.add_subproject('folder1 folder2') +''' + +from waflib import Configure, Logs, Options, Utils +import os, sys + +def opt(f): + """ + Decorator: attach new option functions to :py:class:`waflib.Options.OptionsContext`. + + :param f: method to bind + :type f: function + """ + setattr(Options.OptionsContext, f.__name__, f) + return f + +def get_waifulib_by_path(path): + if not os.path.isabs(path): + path = os.path.abspath(path) + + waifulib = os.path.join(path, 'scripts', 'waifulib') + if os.path.isdir(waifulib): + return waifulib + return None + +def check_and_add_waifulib(path): + waifulib = get_waifulib_by_path(path) + + if waifulib: + sys.path.insert(0, waifulib) + +def remove_waifulib(path): + waifulib = get_waifulib_by_path(path) + + if waifulib: + sys.path.remove(waifulib) + +@opt +def add_subproject(ctx, names): + names_lst = Utils.to_list(names) + + for name in names_lst: + if not os.path.isabs(name): + # absolute paths only + wscript_dir = os.path.join(ctx.path.abspath(), name) + else: wscript_dir = name + + wscript_path = os.path.join(wscript_dir, 'wscript') + + if not os.path.isfile(wscript_path): + # HACKHACK: this way we get warning message right in the help + # so this just becomes more noticeable + ctx.add_option_group('Cannot find wscript in ' + wscript_path + '. You probably missed submodule update') + else: + check_and_add_waifulib(wscript_dir) + ctx.recurse(name) + remove_waifulib(wscript_dir) + +def options(opt): + grp = opt.add_option_group('Subproject options') + + grp.add_option('-S', '--skip-subprojects', action='store', dest = 'SKIP_SUBDIRS', default=None, + help = 'don\'t recurse into specified subprojects. Use only directory name.') + +def get_subproject_env(ctx, path, log=False): + # remove top dir path + path = str(path) + if path.startswith(ctx.top_dir): + if ctx.top_dir[-1] != os.pathsep: + path = path[len(ctx.top_dir) + 1:] + else: path = path[len(ctx.top_dir):] + + # iterate through possible subprojects names + folders = os.path.normpath(path).split(os.sep) + # print(folders) + for i in range(1, len(folders)+1): + name = folders[-i] + # print(name) + if name in ctx.all_envs: + if log: Logs.pprint('YELLOW', 'env: changed to %s' % name) + return ctx.all_envs[name] + if log: Logs.pprint('YELLOW', 'env: changed to default env') + raise IndexError('top env') + +@Configure.conf +def add_subproject(ctx, dirs, prepend = None): + ''' + Recurse into subproject directory + + :param dirs: Directories we recurse into + :type dirs: array or string + :param prepend: Prepend virtual path, useful when managing projects with different environments + :type prepend: string + + ''' + if isinstance(ctx, Configure.ConfigurationContext): + if not ctx.env.IGNORED_SUBDIRS and ctx.options.SKIP_SUBDIRS: + ctx.env.IGNORED_SUBDIRS = ctx.options.SKIP_SUBDIRS.split(',') + + for prj in Utils.to_list(dirs): + if ctx.env.SUBPROJECT_PATH: + subprj_path = list(ctx.env.SUBPROJECT_PATH) + else: + subprj_path = [] + + if prj in ctx.env.IGNORED_SUBDIRS: + ctx.msg(msg='--X %s' % '/'.join(subprj_path), result='ignored', color='YELLOW') + continue + + if prepend: + subprj_path.append(prepend) + + subprj_path.append(prj) + + saveenv = ctx.env + + ctx.setenv('_'.join(subprj_path), ctx.env) # derive new env from previous + + ctx.env.ENVNAME = prj + ctx.env.SUBPROJECT_PATH = list(subprj_path) + + ctx.msg(msg='--> %s' % '/'.join(subprj_path), result='in progress', color='BLUE') + check_and_add_waifulib(os.path.join(ctx.path.abspath(), prj)) + ctx.recurse(prj) + remove_waifulib(os.path.join(ctx.path.abspath(), prj)) + ctx.msg(msg='<-- %s' % '/'.join(subprj_path), result='done', color='BLUE') + + ctx.setenv('') # save env changes + + ctx.env = saveenv # but use previous + else: + if not ctx.all_envs: + ctx.load_envs() + + for prj in Utils.to_list(dirs): + if prj in ctx.env.IGNORED_SUBDIRS: + continue + + if ctx.env.SUBPROJECT_PATH: + subprj_path = list(ctx.env.SUBPROJECT_PATH) + else: + subprj_path = [] + + if prepend: + subprj_path.append(prepend) + + subprj_path.append(prj) + saveenv = ctx.env + try: + ctx.env = ctx.all_envs['_'.join(subprj_path)] + except: + ctx.fatal('Can\'t find env cache %s' % '_'.join(subprj_path)) + + check_and_add_waifulib(os.path.join(ctx.path.abspath(), prj)) + ctx.recurse(prj) + remove_waifulib(os.path.join(ctx.path.abspath(), prj)) + ctx.env = saveenv diff --git a/scripts/waifulib/xcompile.py b/scripts/waifulib/xcompile.py index 86c343fd..a7818911 100644 --- a/scripts/waifulib/xcompile.py +++ b/scripts/waifulib/xcompile.py @@ -152,8 +152,6 @@ class Android: def gen_host_toolchain(self): # With host toolchain we don't care about OS # so just download NDK for Linux x86_64 - if 'HOST_TOOLCHAIN' in self.ctx.environ: - return self.ctx.environ['HOST_TOOLCHAIN'] if self.is_host(): return 'linux-x86_64' @@ -250,19 +248,6 @@ class Android: if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']: cflags += ['-fno-sized-deallocation'] - def fixup_host_clang_with_old_ndk(): - cflags = [] - # Clang builtin redefine w/ different calling convention bug - # NOTE: I did not added complex.h functions here, despite - # that NDK devs forgot to put __NDK_FPABI_MATH__ for complex - # math functions - # I personally don't need complex numbers support, but if you want it - # just run sed to patch header - for f in ['strtod', 'strtof', 'strtold']: - cflags += ['-fno-builtin-%s' % f] - return cflags - - if self.is_arm(): if self.arch == 'armeabi-v7a': # ARMv7 support @@ -271,19 +256,23 @@ class Android: if not self.is_clang() and not self.is_host(): cflags += [ '-mvectorize-with-neon-quad' ] - if self.is_host() and self.ndk_rev <= ANDROID_NDK_HARDFP_MAX: - cflags += fixup_host_clang_with_old_ndk() - if self.is_hardfp(): cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK'] + + if self.is_host(): + # Clang builtin redefine w/ different calling convention bug + # NOTE: I did not added complex.h functions here, despite + # that NDK devs forgot to put __NDK_FPABI_MATH__ for complex + # math functions + # I personally don't need complex numbers support, but if you want it + # just run sed to patch header + for f in ['strtod', 'strtof', 'strtold']: + cflags += ['-fno-builtin-%s' % f] else: cflags += ['-mfloat-abi=softfp'] else: - if self.is_host() and self.ndk_rev <= ANDROID_NDK_HARDFP_MAX: - cflags += fixup_host_clang_with_old_ndk() - # ARMv5 support - cflags += ['-march=armv5te', '-msoft-float'] + cflags += ['-march=armv5te', '-mtune=xscale', '-msoft-float'] elif self.is_x86(): cflags += ['-mtune=atom', '-march=atom', '-mssse3', '-mfpmath=sse', '-DVECTORIZE_SINCOS', '-DHAVE_EFFICIENT_UNALIGNED_ACCESS'] return cflags @@ -302,7 +291,7 @@ class Android: if self.is_clang() or self.is_host(): linkflags += ['-fuse-ld=lld'] - linkflags += ['-Wl,--hash-style=sysv', '-Wl,--no-undefined', '-no-canonical-prefixes'] + linkflags += ['-Wl,--hash-style=both','-Wl,--no-undefined'] return linkflags def ldflags(self): @@ -327,10 +316,6 @@ def options(opt): android.add_option('--android', action='store', dest='ANDROID_OPTS', default=None, help='enable building for android, format: --android=,,, example: --android=armeabi-v7a-hard,4.9,9') - magx = opt.add_option_group('MotoMAGX options') - magx.add_option('--enable-magx', action = 'store_true', dest = 'MAGX', default = False, - help = 'enable targetting for MotoMAGX phones [default: %default]') - def configure(conf): if conf.options.ANDROID_OPTS: values = conf.options.ANDROID_OPTS.split(',') @@ -366,16 +351,7 @@ def configure(conf): # conf.env.ANDROID_OPTS = android conf.env.DEST_OS2 = 'android' - elif conf.options.MAGX: - # useless to change toolchain path, as toolchain meant to be placed in this path - toolchain_path = '/opt/toolchains/motomagx/arm-eabi2/lib/' - conf.env.INCLUDES_MAGX = [toolchain_path + i for i in ['ezx-z6/include', 'qt-2.3.8/include']] - conf.env.LIBPATH_MAGX = [toolchain_path + i for i in ['ezx-z6/lib', 'qt-2.3.8/lib']] - conf.env.LINKFLAGS_MAGX = ['-Wl,-rpath-link=' + i for i in conf.env.LIBPATH_MAGX] - for lib in ['qte-mt', 'ezxappbase', 'ezxpm', 'log_util']: - conf.check_cc(lib=lib, use='MAGX', uselib_store='MAGX') - conf.env.MAGX = conf.options.MAGX MACRO_TO_DESTOS = OrderedDict({ '__ANDROID__' : 'android' }) for k in c_config.MACRO_TO_DESTOS: MACRO_TO_DESTOS[k] = c_config.MACRO_TO_DESTOS[k] # ordering is important diff --git a/scripts/waifulib/xshlib.py b/scripts/waifulib/xshlib.py deleted file mode 100644 index 60c10120..00000000 --- a/scripts/waifulib/xshlib.py +++ /dev/null @@ -1,115 +0,0 @@ -# encoding: utf-8 -# xshlib.py -- advanced linking utils -# Copyright (C) 2019 mittorn -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# 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. - -from waflib import Logs, Utils, TaskGen, Task -from waflib.Tools import ccroot, c, cxx - -MAIN_BINARY = 'xash' - -def options(opt): - opt.add_option('--static-linking', action='store', dest='STATIC_LINKING', default=None) - -def configure(conf): - if conf.options.STATIC_LINKING: - conf.find_program('ld') - conf.find_program('objcopy') - conf.env.STATIC_LINKING = conf.options.STATIC_LINKING - conf.add_os_flags('LD_RELOCATABLE_FLAGS') - -def build(bld): - if bld.env.STATIC_LINKING: - apply_static(MAIN_BINARY,*bld.env.STATIC_LINKING.split(',')) - -class objcopy_relocatable_lib(Task.Task): - "remove all exports except of lib_${NAME}_exports" - no_errcheck_out = True - run_str = '${OBJCOPY} -G lib_${NAME}_exports ${SRC[0].abspath()} ${TGT[0].abspath()}' - def keyword(self): - return 'ObjCopy' - -class xshlib(ccroot.link_task): - "make relocatable library" - no_errcheck_out = True - run_str = '${LD} -r -o ${TGT[0].abspath()} ${LD_RELOCATABLE_FLAGS} ${CCLNK_SRC_F}${SRC}' - - def add_target(self, target): - "create objcopy task for target" - if not self.env.LD_RELOCATABLE_FLAGS: - self.env.LD_RELOCATABLE_FLAGS = [] - if '-m32' in self.env.LINKFLAGS: - self.env.LD_RELOCATABLE_FLAGS.append('-melf_i386') - - base = self.generator.path - target_unstripped = base.find_or_declare('%s.unstripped.o'% target) - target_stripped = base.find_or_declare('%s.o'% target) - - self.set_outputs(target_unstripped) - self.generator.objcopy_task= self.generator.create_task('objcopy_relocatable_lib', target_unstripped, target_stripped) - self.generator.objcopy_task.env['NAME'] = target - -class cprogram_static(c.cprogram): - "build static c program" - run_str = '${LINK_CC} -static ${LINKFLAGS} ${CCLNK_SRC_F}${SRC} ${CCLNK_TGT_F}${TGT[0].abspath()} ${RPATH_ST:RPATH} ${FRAMEWORKPATH_ST:FRAMEWORKPATH} ${FRAMEWORK_ST:FRAMEWORK} ${ARCH_ST:ARCH} ${STLIB_MARKER} ${STLIBPATH_ST:STLIBPATH} ${STLIB_ST:STLIB} ${STLIB_MARKER} ${LIBPATH_ST:LIBPATH} ${LIB_ST:LIB} ${LDFLAGS}' - -class cxxprogram_static(cxx.cxxprogram): - "build static cxx program" - run_str = '${LINK_CXX} -static ${LINKFLAGS} ${CXXLNK_SRC_F}${SRC} ${CXXLNK_TGT_F}${TGT[0].abspath()} ${RPATH_ST:RPATH} ${FRAMEWORKPATH_ST:FRAMEWORKPATH} ${FRAMEWORK_ST:FRAMEWORK} ${ARCH_ST:ARCH} ${STLIB_MARKER} ${STLIBPATH_ST:STLIBPATH} ${STLIB_ST:STLIB} ${STLIB_MARKER} ${LIBPATH_ST:LIBPATH} ${LIB_ST:LIB} ${LDFLAGS}' - -# usevars are same -ccroot.USELIB_VARS['cprogram_static'] = ccroot.USELIB_VARS['cxxprogram_static'] = ccroot.USELIB_VARS['cxxprogram'] - -def apply_static(main, *reloc): - "apply xshlib tasks and generate files" - - def write_libraries_list(out_node): - "generate library list" - - libraries = reloc - externs = '\n'.join(['extern table_t lib_%s_exports[];' % e for e in libraries]) - table = '\n'.join(['{ "%s", &lib_%s_exports },' % (e, e) for e in libraries]) - out_node.write('%s\nstruct {const char *name;void *func;} libs[] = {\n%s\n{0,0}\n};\n' % (externs, table )) - - - def write_export_list(name, in_node, out_node): - "generate exports list for library" - - exports = in_node.read().splitlines() - externs = '\n'.join(['extern void %s(void);' % e for e in exports]) - table = '\n'.join(['{ "%s", &%s },' % (e, e) for e in exports]) - out_node.write('%s\nstruct {const char *name;void *func;} lib_%s_exports[] = {\n%s\n{0,0}\n};\n' % (externs, name, table )) - - @TaskGen.feature('cshlib', 'cxxshlib') - @TaskGen.before('process_source', 'propogate_uselib_vars') - def apply_xshlib(self): - "apply xshlib feature and inject link_helper.c to sources" - if self.name in reloc: - for k in ('cshlib', 'cxxshlib'): - if k in self.features: - self.features.remove(k) - self.features.append('xshlib') - in_node = self.path.get_src().make_node('exports.txt') - bldnode = self.path.get_bld() - bldnode.mkdir() - out_node = bldnode.make_node('link_helper.c') - write_export_list(self.name,in_node, out_node) - self.source = Utils.to_list(self.source) + [out_node] - - @TaskGen.feature('cshlib', 'cxxshlib', 'cprogram', 'cxxprogram', 'cprogram_static', 'cxxprogram_static') - @TaskGen.before('process_source') - def add_deps(self): - "add all relocatable objects to main binary source list" - if self.name == main: - write_libraries_list(self.path.get_bld().make_node('generated_library_tables.h')) - - for t in reloc: - self.source += [self.bld.get_tgen_by_name(t).objcopy_task.outputs[0]] diff --git a/waf b/waf index 919420c6..b2f4c6f4 100755 --- a/waf +++ b/waf @@ -33,12 +33,12 @@ POSSIBILITY OF SUCH DAMAGE. import os, sys, inspect VERSION="2.0.22" -REVISION="9848c8ac89183c48b69d47e767462720" +REVISION="a21fa92a45548e4c642deabae50eb159" GIT="3f8bb163290eb8fbfc3b26d61dd04aa5a6a29d4a" INSTALL='' -C1='#=' -C2='#4' -C3='#/' +C1='#e' +C2='#d' +C3='#T' cwd = os.getcwd() join = os.path.join @@ -171,5 +171,5 @@ if __name__ == '__main__': Scripting.waf_entry_point(cwd, VERSION, wafdir) #==> -#BZh91AY&SYqz?&_$e>V#/cgs`P#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/'zھ }Ug7Ч>וsF#/Vnګ}m;ni6-9m]Ц^W}{\#m\Ü֯6mNU`}w[馑黾>{y=oz8=(vkoJ=!v7P)EF#/҂Q:v}}f{ۨ u=z#/#/#/9lX]M1TE)Puv*⏦C@i R ʊ6٭ SU#/UQ;#=#/xg}b^.f#vq^M#/vyw*6{w#=Ʌ#4amKj BP)=6b܈#/=`$.ͼ+9 t_J}{#/#/#/#/#/#/;>[[QEh{S@#/ӧ@WU2nqZ5Zl0#/#/*΄JJ#/#=:vhl#/>7wyws#}#܀:Pv[7ηIG}ܥ@:>zEy֗|}t{ǽt{Ͻ}u>I{ma^i}{v]zw{6 w{xvO@4*WTF;Fٶîi%wnkKthaS]0yi|ve.ӷƀ;v=n=xDϧֻS{nwۻ{{|w+{={޾.ٻe}zwt{eZ{xfo_]sfGGlg-osoYKӪȋw<ϳcs>{>8}{GӪzTGzSww;|}ٶfufv-yvglhK<{^47g%Kwy'sׯέ}}k 黷v(*ѹkX;Sk+>wG*]V7voxdPZ6"X1IAn]oi{]i]}RG ͉l=z9۴0w*;U9#/*ze_w[^tmsiͨW;%m]ATvt#/#/gXJ}I.r몚ԠP>y,j#/T=N}n$@(+}}{ϽV8#/+l Gnmf{md]#4κ(zvg/SonAݰJ6P;WwUclϭWL^Au*wyʹEg#49vITIJlon#4,꜁{U#/ fU ]aӵ#/uqծϏݛ#/#/#/ZȠvݎDn;{*![L5Lm#4%|co>&Y6Ivu{ƮƂwsݻnJ%h#/=#/k#=[#/!+mBs#/;亴KEWC$#/r#/#4]#/Ԩ#/#/#/==#4P"m}@p۳O䦛|^<4Ѐ@@#/14hLL&4)ISz2SOPP=GJhA@@#@h)ҧ*x§Oz#4='@P#/4#/#/#/#/#/#/$"&@50#/M3*z5FLOO64h=M#/#/#/#/#/ D#/4OMM$)Hf5G=' =#/#/ #/#/d#/#A4Ѡ4&'ѦL?ВzITɣ@#/#/4hTj"#/4LJx4LA4icQڀ#/#/#/#/#/#/#/?dU'#=`9#=G U7?犧DHS:J"J@@ #=| 4QÏ6/h{"zN8)[ɛ+8|ojJUND].nStLATRO}#/Sƪz *YC@K1#= F0M7UxO4‚7=uu2T;MM\/tPD1% J7` Rl'c( d+B#=t"" #=C@BiYJq#/@]*" _ܶ?x#44T1#/ P RTT"Op^$&T+ BI. 9CGQxDKSCHSE2pU0&),DpO7#=5 WU}((#/Q(DRB#/RJ($1D1DQD1TEAELE1TD$4UI$E1DUDQTASQ,IEQMLDSTS5QESMPLEIBST14P#=Q4E3,E@5H#=PPST$RJ̱#/)3!EI$5Q%Q$ES00T-D#44S!PAI##=İPL4TATE#4DIUTTS1RL-#4#QDUUU AQ TPREKD TUAT4,T$D55S0RP4,PTTAM)TCCS5 EM#4% $Գ5U#44L5*A4$!@RA!I2RTDID%3PĤMTAR0ASMTPA)BI,)KPTCI5D44ST ¥UBDLQ!"(B,D@34DL@UE4D JLTICPQE-,Q$E)QR2IAIDI@SPT4RS$@LQLQTEPRTAUPTUT3SU)Q1I1Q@EU@DC2ELDQUUMLERHS UITD1CC0!M%#4LQC11  C!DAL1PT14E-#4U4T#4ME#4UA(RQCE1)QLEA-DITI-QQL#4DCMPDTQTDQ%$DIDEQPSDQQ1D-DADMAEEM0@TMTD4 EDAC1Q,0CKEE1TQ!$DTDIbJ&("(%(H("!")IbJX("#=iJ%H H!)X X*@*X* &I* a""**Ii*"*`*& (i iR"Z(d&")Y$$#=&*I(h%bfjbJe&))&f"ibZ()hJb((i"$)#=""H%)"("XZ#=#=Y&(J*"*& )i"*Z H "Iei#="#= "(&B*Jb""*"e()"BH* jJ&(*"`bjJ&*P(HQI`)&"h" *"b"*d(#="Xai)B`i"(#=%)"(afSb$UPd #/jV&a bY"J""&#=Yj"H b*("bB") #=h)*#=je"&("HH*"&&#=")i*j)(j`"& **Z"F& 40J10TMAS񳉨Vab&Rf* I(("I)$f"h (f$!!""hb)&f( ()(`#=hhHi %)"h &( $B"(#/$ jdb( aB*JB$ a `f**f"#=*RJB!"RHIH%>r(ii#=b*#=") ""h (R*bb$640LԕS5ULERE@D1QT4IUQ4U3TRM%3L̥#4H#4(55LDC4 EQSADI254S251IEḎU2TULM%T0ԴPCE15HDUE0AUL)1LRQ$T05DDMBEJPKQHDHQA4BQKE5UD43TM4 I1LC T%!4DQJЅ#= 4-S4BPRS4T%1$Q!)M,#4AUBJ !T!#/@PPITMBRRT)C0BK%!LPICP,I%L$ %Q0%D LT45MKIL,RQ0TBPMU!$M#AED0#IDP!@4-RQ#CADBBRPД%+CU0 U-U LIL4JU)3UAKE%%Dą1Q1MT QT%)4HЄE-#=(JHPMQDQEDLCT%R@24B!24LQ#/CL%T#3M-1$Q#/D, EBERE4EPUHLD@RQCADSDE- Q- @U!31,TLJ DPPDĔSDE#4,E$0!SADJUTL1DQ BUTLSR M%M%C3U0CQ4U5TČTQA$4EAESIT5-IDD1 IDTL413#ACDA1I4 3UPUTIC5@A,ED LTUU4QKK0DM#4TM4JQA5#4)QHD5%!-2IK#4+CTEDEALBPPPTHUIA3DIIC0@L$SQ#AC% E EM!R#/RȔE)0DTQA1MPTPRAU!PEA+Q#HIĴTQ,1)10DSPE5C2!$S@Q@D1RAUED% R5%#44#LԕEKLDK0#445HD#4UERU4-TAAALE% C QK E!JIMQ IU T!BP5LUTU$IDDЄ3%D1#/R1$ITATҔQM+5E#=!T0-,QE1%U DTEUM%2L0-!E 4/6hbBh !#=bDiHV"ZX#=#=B$`d)h#=( i "i(Hh(V $"&f*(J@#=H$&Rh*HBj(!Jb!#=#=X a)J"iR )i@((ZB "%i$"h&X`JB"Qe*$( #=I(Z#=BHh h(RH#=Dd#=X$Bh(*(#="bj I*(#=i)b@b" Y*(#/*j $VhTjj((#=hh()i$!)Z#=P&"iV)F $X!Phi"`)*()h("bb BPJ#/O #=J +!bC>?tZUW+?WIms1gdM~M5 T~`SL P~4u (\ۨFz 6j#=~ĭ2R꭬m `r?nk#=mrhM8ԍr0?ھc zBm 0ff?U PbП !ɝS,#=I6]zT](/' Iy75wOX+C#4r<*Pth֦})2= n!V@?Q(~](z.T,Nu넾ߟn׍U֬0:rڻbg :w6b i`G=ȧe1rh8*4l&Ac2VFUŝ\jZ}P2oITнŘBR(T‰Z72%[G(g$ݧA8Ct,ͽny]P |t'Չ#=̴MO&|<Ȑ|߾;4p$嘕4γ";o) &*d >9ĈHjaK[vIlIO'+yD})$l*Xq$&CtKKEBǩ{*BQ-&0TGN#/@aMp!pXP:UP(gڷfk̰F{ǿ0 )2 l^ը^X$єY k\D#=9V"&ý69_]xZѾΛp!khi#=/aI<)AO}SCz0=PPL,̢M i)^=3臵:͚x9tiʿL bJ'&Z#=5r8k#40b>z2}X[xw^t#/S"v偺PZ4 =#4XfqRZi7fFHDr#=)t:lHCˎeGWK8@μ$W>ʱ e;vUiFk[]iGfLYd>JR #/z;Q!h^"4#4:h(J2+9ELE\}Lۜ}^ifi,TP2kSuy} xT;9%^ gѣfՒgdgQRn]mjJvp &WԆ>#4V|*ooy(뻽e?,SrK?eP#4h\sUeAs?v(|CgeVYl(@TuK:tŇ B"{%gk'->#=iB C8juAS #4ērQHNS^9#4\ #c#4F֚;L@#&Ŗ{n>>˗-grz뚅SLM&ҡǾluQ8xI%ww?Ǐpd3T%(2]R uJ^l>~K&YE S$G[Z#=Ei)$gϝG#/vp}t{vO^vb"BQN.c Sծ&+ )'>]pXrL6,d#=r҃ &!Z'蹖A7ZIE/n ۳Mq$ۣ}P+kY#4CSnFU#fED>(~6#?+a,R'Ftj멘;!6F$ARL )(Kb$#yK7m(f, HL2= JsQɅg%R޵M&D W{qtWX(57$N+("|ز"0"B\l4+12f.N|<GkK8>€iaS"QC%];ֿ~rh?#4 y&8qPkE#=ͮW`F9m8฼S@TG4VsR YpxlWPA/F@1J=KB(4`vgY Y`wژa[JVOպ d.n+N.ˇ4:kЏ8啀S6b]m_?6b#/DͣI(SQ1 Dr ;Zv(#CMg$fz@l#/x\4iDu:)P^Q4zգd>]I9k7_&0`+@ф2( #=Wuc͛;!2`xr/冺#Eba#4#=<d`NBd\u Ȫ#_uBjS3(#¥꣝T"oUӟ0qX$3@r`Dd?1#=I#cy.n="&ص|˯ku#=!󍻱㝬^SD$6_Բ#=HϥOc#4_q(}/9`}g%xa5!1m?֜z…I'QIzI8hOYxV>缼3O)HXwfJ&}ZXU6u#ְme5gaUGb'!ӥ׊StS;7ɐ(T-;/v/ AQT) o4N#ʷ[`x_3$E2bCpcsV+ytj DPz>ԩgж8?x_~9̜ȟ'b5317zF7aʬk?U'ZюG p9]+MܐJYYАT*|^ܱe^KcN#44,IP #=pJ(+H=9H$ڔa7P!4*k&dLr][ϞCc ` @B#42B?!7wl0],NmBkspsxfn3 ^\$H2}8J(ZN#96$:4IG29$޿tuoYW)j!t,LJr&֯AbKRJ3BhF#/N?}9P`q1)ʥ^{H4%!a,#rGzkb?LpB,bd²ᦨL>T7q0#=_#/q[YP@ `7g+nu.y^6@JUYq5Zx!XԫnwqSZJdE$2ތ<{ITinbм](tϖa4"QT8&p#=iTRc9D,J.x䡭ղA#4d Ѓ|+#4TYP=4}1դoMFZ׸#42!(+f =ˡAW0ݰ˭3]lGl{u ”|jT{㉫cTQ0ao>C~+:{Đx6VjfBAoN27 j4|׻+,{QʏJl3#=T\ʪR5 1d(MYQuquH1~#/Sh1Tfvw硳 lޖ>ul`JYs!&L]0捛nKU>ծV!CGBo>{Cu25!`/G) "(W-L#4KJl뿧!SM1X#J_8>}"ZT<>Ŝݖ~j5q@4\?y_wwA6i%>BϏSɐ^Td/Q7k"l9_N2/(LYKs|.g iKըlqu?R[Bÿ#=V^~np~#=Jp(0_loĝ9~:cconR& #/ 'uL#=j2 }JWZ)09O}\i>0'#pf9i_#=VfK<CCjR)HƒAJy<S$b$  Hb>i3PUvfĂ.\>C;#=U~QB +.u/^L݊B. d7Cvh!#=k+(Gwt-#=,#>MJPdb1heU"ف jk`dX])x EX4L~ldF:37u#=4_Gߟ/} k_>#4Z2;P6I{Noŷۄ#/^FDA]R*7=1C$/bp#=VЇ-5<'SB4'%;@@ۆ'NRC{OC-q%쯪Eg؈rcE#=JZp`"矏M"f" | %"'fC-RUE>Bc#/;Kؾ(oګniolW+hk.(]"bfkwx&^IS9'щ)^FW(Ż%74<7eൈkn#=a&fw84tU)O:(O #=d#=U|J/;#/q@cnb촂=Xşh@{a2$s0c0@Os;lx8$/kzڪ3z-0 2e"{B oLHf.|Tq[A}U6uX)bntoLG}wn#4G]%hV>EJgpΩ9`6[1[f4u׷M눰)mORLl j"c` y\]LHAVI^(T#uS-얀+#4с׺{5)E\hTPm3Q~^5?&}~rdHƱ!#/YT3-L'^=NfL7#4:ꕩEFmՇ0Hd#=t⑐W$ٕ</ .*.x|Ò`_p#=HvWS%Aձ7^9R8Ւ8#=:PEEt.ջlW St;qA[8SF#,|ܬi|&(EmLj_3s8V2531sB#4F-a°,61W |?kQ>&/ˈ}deȦA{w3Я`9LvOx{)ӻl}c21qR.ߎX$?p)R-rcqjfoiktUf'J"-릘KPYJ;*5q n_ڟ\W'>f^sfrb(}f2q4#X,Fs*#4m1Hbo!3dF6J`=$J]3n6V#T$d-э3fyMK3/_.q+lGqѽƃ3qU`]Y;T$1yz|3egAJܞWBwfI)2:}A~)YK%rn/A.J}<._ط61Uo,VZ-aͲt~yۿ[DAQB!E.EM"|=P$qUdRz-2k~qq+8b#-"j"*Tn. K3#4+]SJ2;eh0u$0+(w<*icNʘ*eڿb *æNK(=!qi-~/[;kf6CTX U.$|n'D <Zɮ###Q9l5#4v>(g)SJ5A6szWMP @( :&bT/}eHڬ귘/- 2${2%AG_vYGuJCJ9iTVS%xɒ/I;vHq>,LJpZD(gw@zunσ{!n$5(Qr oݼBbPo)o#drkNT>78@4K8`@Iө~krsi א3£ ^+,.ml#4#4m<'g\LY"ZP'6- _Vpg_\,yL{ڝDq02`p\8@^R1a{.9snf#Qx@ 9+5RO;\7?ON=jֵB¼<#4_/|<BgZMBm-ogxx6ÍiݫqرZ=ukKWNVamr>ڴ@(]t3P#=Ixv&^Sk9OO|Kp˃ƶyO{tL\ܢ]Nа#4P`wyKŘ-#4_dG.܅^⣏rE—%&MRFlɛn.pQ\:ȜEp7awYBx#/iIo?kF쳣\7-+vFraj/_®+؅pD.$_08plYo]j&M#=Al]y/{,2NѽT C(#KވUWB_ħ!6jJoEZ{|!ߒ Nmo#5 Q3#=3- #=+lMdD0`rZF!>6rIo4Cr;N!uCvw99~s7Y _ŤnִHg!n!z\\?qm+y,Fbz*`Q9M椺_WP^MA#/I;{e%` '[k2mdP;V`] Q †j>7X[ry}ʐ?Utu"=F`ez#;t_ŧ?Q^ޭ+SCH!UXGs躎!gv8 $>o.˰Q^{H}#=Xخ ݓ۱t*d ;w%]ix_veH%q3Cs8i#4~TjuզC_rSAo,]ABKYL^(U};×3&/#4I2ڠ{:ܾ5^jsW-swFFWtT(໏/#=b!. Pbj#=R(o[`6KcAE^Y> "zv-ӲѼ 7#/&ί2r*Hp.Q#|"9(P[#4EgP#/؀ S@w2!>NiHgY1*ͼ >?w]s߃[e7d%FE~ۭ/' eNMc~I?ۇ)@g #U@H}C% 86'bS+u#=55JIk^B喋f.ՃM6@|xTv}O ^yS\b(\B `n,Tdʨ#j1ݺûF&2ab:u*GHV #=#4I Hz*:K#/HHqs*&vn3Q~/&[umÁݫ!2:vJGvf!dؒpd(JWT2ERJUg秹3Lf<.#/|0Ơ|V $!J#4芟I}KR\[r ƃ-&bFQLzjTh:k& LIމBD5IL~,@"+CL@;Gͼ_ԧ%JfosFP5ڛet[6N0AEh%i#4/k^]}LJ;Csyzat,I~dg}1u9#/6#=AO?: /ogP^*W#/7FPp9@vyeQY=>Ӭ Ӱw|@!^ z/9{'hñKfƠzqiT\^8)+ѻJsb]Ntqͨyd=~hPy[U)#4ws-i=w9E[m8za C_KJ&-lcu;c3]4eʜܖjM6t7aX{W>FO#4Ӂֲ495+d[{k(IQd_7xLV9$TmGU35EJ Y @?v]|d}4u"@:$0}.όj<aENs@#ъӻovrWa7>$=wD3h#4#ITR4 BGm~Xu>wz#=4;.Hk1+P0vCI"hJA BBn\;v#XjsxAÁ\''<#/{ו-H{#=Eb*#*e:NGG7nYσJ#4N.v];YbXe A;TKIEE$]WV#=tIUm[*]4)vn3^t W3;|8E\#T`3 gt3D71a)`q\a( `,lו)7H `tʥ7urh)ǎͳ @5n|}7 :K4&lSHnk7,`CFKqE.jT[!BG8B@g#/q>[4E)^ LKfwh#Ga1fRC<`:L&} B6T&(cY/R4EQڣE#߬<{H eHHI>yxU@60h7~k8;X sՋGO*gHZƗlGچG ބ_C"Q#4xj(Y*#3&i.~a.G#49(efbCv=tBOGgzcוcf`TVN3قDl`t|abljCfC&#dY&oML X(ȌKI˚~rf)<ϮUXBH3Ы47I=y-ZHiRьX,gbXXL9.+o4R= J )79^E9cŭ FgHF&kEdf(g!dR0tum%;#cpP\Ii]p"*or#4C]`XAm!V"#=QP+XN4f#=oG#4D#I^&$盏,y1sɁ"ŗ J^Ro#4Thจ\ (-MC{a#+SSp\r*k*G/,BJ#4pҀi3mT6d薐81MF3D%A#4жt.KIIp#=S 6@u*#4xh &Pr1:pbňсX i>a(:vCh4 ;|EA#jj=٢O'#4ClCͺ(4Gډɨ əU?}jHs} bOo٬Ę|R&#/C17%/C.C~h$gb lBGd|5/}s$Ӕ1 ޽zBѥC@^-ÔR#/t&/Qj|)î_c#=AwscK[tV q^elER#/O$Jd#4'.~Lc\| g`?ƙχ #=$[y>ٿ\䝺i\s:֡ZsdǠEһZpB41D|Pv5h\9m*  INu~ϭE~rd40C32>U{'J+#=#OQHPo8*}տL{>y}ܢ+V[)ߋ0k##/H}䤖c:Ըi_/VL}Oun4YqQɫ wz]M~ HI#p5Nxv#&#^qzEyF#4pj#/Gvi _j<є'ǘ{J#4: :N[hx+!#/N &l2QYy X!;bj.ߣ0#UKM 7#4%pƚ-PjLc?b=eezܠ![s D -\""u( P8rŖ!B|>cbE׮jf68Z*)#=\׻!vĖ0P;!% tUC}FjV"f@KA{2I.\/KDFT_!U7éOY&abCMQ'k'b|axT3@[uDP#4_rO,#/5N_il3A[4rR1YBEbz< 媠rvmU n,sł$:ں;YC.0rĘ4QCͩJB]162He#b4J M#=y`t)PqA#42mT( NPBvOȤD{0jo[ޏ=tĎ4~7[#=]yeDTމyQoZ -WLvsы,Ӭ#< 'n:1MTLoTkV &4K D `$AH#4O/*N+drHt2[͝"PysMO tH|5zͯc 4 Sc{g͢=`8pJXBbT@QqL­NmOk1$EoTbSa9qu##='8dfMbqT߳ܿØ1]忛g[}GS`IIBA#/o[-$hsgK/HN(A#=e}K.{ γ֙$̓ELg>yRQC5?U_CHW@$C5:n7ê¢go1ַ˔jؕ'x,17nݘT@ܔյhVLI '.m뉬$i\us̓5=]Jʢz87DPܲA~vL 5MH#4{}\ÕG5[A(<5ѳNU%C<#raE8 0Į^]zz1'mZQ죖[ē_[~λ>,@>#=#wRKSE,f]&;~?-ʥ)~K7>_ 4b A5e|ON~ nVBQ#4]\K`ϣX!_u ]0L?qwW7-1t1^8#4^xx%)҃mc4) 'O.!vꚵ[g wL#=fq#=ӁZ6+j^Fox9G"Н5?#=?1˞3n.#/Fb󿉐 =jӰ`0J0YXbg8*<QIE.Q̰$ ~Q]nשd ]n=p 4g3v:9W3/1vdk:#= }-9̩;KAA7'iyȈ[gIDPE#4[۸Nt8}MG {-AL焲A^E4/u[s!)?8#=8qj-ՄҺGe"=C#45nxhg"BE#/&0W {vF R[q#/49'uI*}M6jQS`9yD3.a1ak,U`a{}ue٬6;jqG*6#ˌP(y`D{eu8!D &Y`K1>@#BUwCӰXysܐOT^Zn) ka|(-SHmZDݦ,Ab)I P2D8@oe:9<(#Aʣvr;w2YM2F [kKtP/@Lc)CZO7@qmM-鐛Y,)Q* 1bYFQ%/-LZO1ϵ:}o z;{Y4!vJ lbeMpd7#_ ŌۙaEٕvS-ᱍqgQfu1l@lB#4()bƹud)Bצ09k#c@(_Jk_gYlKVs {ㄧ#4tS;OTF@#=Ċ模t^圄fv4lӘJ2ن ]NBD<>/xv/" /Z!#so0ë#/Ժ&%M]\#/2PD$1#=~!tgjsxRw8 =NmH-uq&h Гq`G@[5A@ٲj-hH\ē$SG%:đmѹ#7 Ձ %F2C \B2t_.e#/I&^vf!ȏ-}E=aQYԊgڕbg$^k!JsUkbv9 O$tL8aP4l<2`.H.7b2ߢuP[6[s:j+R@ra 6m¸Qg=Dz 7Tyw՚];[2%&^x4o?#/S!etQ^VDc̗o᧯|lzWg ZD͆#/'PndFn g[Zl^@8\1 g"cQ[qAR€r8 h2/p?G`qτeP( tj徬eŽ.{r"zAx|ǛWʹ`d: (/ҹVpX_M2?C.gM\^on':?tG#4QJ({"ve;DcUFUq\1a&Ϟyj"%$/[>fa2ha#/ puqˊ"3FGvD@rzLZ}ue@dj"XH@ WT MOPTF/Or'S`6ʒdn^s*]tߨÄFA@uooӃAHj>O/vxE~_>aGp;Q'bx!#maŸsJNH A۾a0%22@n?x6ɅESZ}=?8G4\:گ^ݷvQOЛjzg2,h6옖m3#4𓀼Kn׍ҿ.A=#"JԽO٘Y5K .;t#49ixCG(~Q~cHl}^$;C U:"vY/{zSRDj<;tC%bHv&#,ʼn)+f(n_`eGzv^ @#/^,7XTϷ3t2deZ(*BE]_#/İ^fDPz-OA#/U69FDIItu]#/#GBb#4Y2AAB$q_N}rQvW)0Ϊ56 Š/ p1`rᗟݗq1(g$-_!~E+m_'}6cJ0#=B#/';}g~_ֵߥfo:߻WPWj;F4 "D~ 𑱙,ǫT)*k3eRmJFq܂*RsF[RG T4#/!ON]qkuAL *0GdE(h}P|k㜁m/vyu.tۯ!ӭBgȚ#,J(ha wΌX;ɳ0k?TXvEssbe#49ꠌ!Ԁp>3mMQ QMw\_'5%̞_#/M< )<!c 4D,\-%p%)O/H"K|%F#˰᧗?6q1@'ti!6##B{A3P@D8a^*{sM-aIGlHH//,_#zCO/gꗰـ:L)i.R'uߧ+3w(QOMT%]F 79fQC-t٢j\Gtbff)Bl-VUbQ%#4[Wyzت{7J`OzzX433!=vD&#J/mǐ~qOs)`mOvLDnu票Ε\sβY1kzPU3bUV]YºhJG ^|>c8!J:qÙ1ͺh#=٩©g%42F,.َ(Xs8pH8\e#4y.D8&5+z) /^μZfψ}j+7a`FJ,`#46$SYPyTh%qa@IjzA]Z0Mw{TkK@24+^GAQr#/3cI kxX)<&؇.+_XdT)nlJ$3bo&R6RYWWuGKvn(sn,5j}_u#4;<&1iGRfW-yz cmخ]#/#~lH#4z|~a j>D{%h|m[%ZB!D5H-a6l9p(M|:$A};㽬10DS>U#/o@ x+!= #4'h &040!as)ŭM(CL3#4KIɖ2Ґ8p+JGD62_tXN&rNx7{2>8$'e?#:~;P6c3Ҩ]ҿrL+6fLF[)g^"87I~\I3m I&3c&0\G/V1}[>;j(WH^&GRסg'R|R)U #L35XBB`gz[ G\1Fo31T48YͿu_}ѐ3ulL#6nLB @__?Ʒ}; 8#4KpHsiA>o$7qz>=fKFc!9AC O~~geԺ,c: =,(X۾W26o+oY6s )dƆ#C֜,%aL$$c֙kU`,ҦZ.J1I$$sE/Oȣs˶V٫&$Na|> QF9h >X~^Y3=?F{@0#4oP6ni5)jf|:(!-50n ="x_dɟo^ߖ0J&CTG!5V@;#&fMI#/G#=~!c]D,R%}x ]gbncZ@Ǯ罘iGWg0f8|Z4dkB=_c x$o<_p/>;CsW'ܦ_L5T4EB*#=%SueS7T,\3wnti}\ǢA.g3,,g#4xZ0H6.Q.7.1& 7\(^:%1Qv#=f}; i#4)XwŐ*E/)d!,ju18™orSRDr];NMdΕw*Q$9j@8<ȓ"\~A#{*}z-۟AK(l% |b"I /w'8U^6E\N|R胃q?L%SC\4_#4_xo ̳r>H8w0j72E9C(,fyyṊJWtpzE;on"\ %/Y0z >'`ۇ1T"8A#4c+S (0ZA-2Lu&I#4v;"!S+ܮi3T>mW,0N!hAoTD.ȞPs3#/r5~q 0Rf#4aM挚+ÚlY+CǤ8K巍qB-U@W|$ӝ#=ZĠvjTj<|j<ˁ$?w&A/QΩ4]I#4EKmWrM(D#/o*/e^e@:<'Jm͑K"XFֱZK:#=bq1QHô`cc,#4̎siWa|֋1e:lCкbra8vL?I$ k矇;l1'/b_?iꌊFw<ãx=>`=Id9gFwXfsa3"#/~r" 5S'iVMhܴnyϤh\_xI.-D*#4X d[PzE=TK@RA#L캓xC:{uצY#*;R7HavHn̥kXHV#4~ݳ c01U  Qb@#=v;Kv̩~G}PgUV[z*] wW}`l+RʷT(CP>1U{f+¦BYpjv N/AI7DF42@}ͬ;iҍO-e'wo]g#=(YgT ̄#=ysX`Uw{9 v=8hk ݥ̰mmgP@&ѓ`tb:ft&BXAc*} ^]xF9#4J'9bܕE *.6ħϽ 7U;(U |u%5I#=>|-Ƹ vesJjr>!CR#4Yk]b-|[٠q >OsZ~O lw|"1}1aqmBDyq~ú>Ry?` >UqwRtRW[,}s6_#4J\%PP{|5*Ŋx;7`Y#4)t/EwQ)7VF$̖I0V&n91w0(U8F.:8;M: 9^Ngj+tը37gBf_EļVL$;EaX:ׁ>˗ a\8+vƦjAJu'si$*J8DJK esS#=LN\0nBM[x3CNvϜ [6A)g#4= R놙ba%Т DŽ]@=FyMپ1~i;׭>_=怡0U @ِRm'(鷄~9SGnw]BkGY# pmAHZҶĸjbT5 EXG#4b܌+CL5֨[9Q(&4Z9®[`10z#@FfpJqA9-8~=#4Gw ~z.S @:#= eZ`l ol#4x.-a>6ݽUrb], 4,=Y:9>5BfߚJXnZtQ ʐPITwF98;ޔgX UsZ,"5Z^#P#4 (Z=idqr4ݮz96t#ƒV\5̅ɟXQ;}-zrp ǥaL{g|\zE2*xZH$_ǡU"d!Hb=H';} U -t^k#4~W>뺏LROrcd?~?V졡$i|^t/#/(5 [*O6X)ٍd4"2mGCc,B?#ntD9e}cnkiU/hiz=rKp|gdN|e(#/"zdY=*B"@T eV(YE̻^.- )#4-⻖c!;/URe,C?neKdUOzg0AVV'dO`TNڵUEF"=OxH$o7aqʸFN#4~o= #4pCq.]p@VyB\$ȠAL;&@wq72x_8)`Y8A"S9 4.{?4/`sy ?Q6htpPP9+[~) .~BxשʥhYYoUuO ժɭ9~+ι%,/T#'dsaH#45S%#=;ib/AEWSjR" yQ026t3A߈3.Ͻ/d (X\;>9tÆQr9=B÷kB(v,_d^p9"|?[z"$f /?s/B뚵fG3o\~%?i|?(CՎ+ДLr4hmulD#4aL^?5 Q #=A`As,4/Z`t4s,AEEjۼsa.Y4Zcd BPZU;i=ݽmjC^>^w!Tl8#4tdeDVBAȥ[R#l||䐟D| ZS.*}f1>dN4/Wy3$UC_~8AhUYg8+YrW#4+-%9q=æb>Nv}M69B62y +-[k@\0mT& DktI#/Rf+r tFE)#nH*ҜwO, eh,e`%fp*K#=t>#/]^+*.񡲘rr4GP9/7t̃ލ;fdܕ>#(\>GSOlΰ]ڱ bQ須olueBWΰ ۛ~c*nl,dTNV4jٓ9f"gץ.AoQƐ~wr@vk爮#49tFLkm؈n13 2 Hvo>Uy|HPocxgq}7@#4H Qo#CGiWћ޻NA},:\!]\0$ԭVq0Q90G`p1}j otoԷbmM\+ni@qn+]~U^pc"¦!MsTo+wtLq[f{#n:xkKoaɏo]Ǹ;0`_fx=p1m}<#=ͮ=#T\f#=\8X8N+۸?t5^*#4) rlr 0ejh7 ModS,t(^nX[|>Y -`^z2/_|QH+CMؗvu bL*J<"z.DJЈX ܺ+#4qٓdb1PK3*0j9>_a74߅ar01/]8rC"ZUҒ61' b9Gi ^&p;1DZ3|PRɪt~w5 aNȅ تl퇏W玭faQSd1",IC6)Bhz>=>pprUaA#=M A/JxlO`'#<7&y;TI,l9tXDj߂; OIKA)a yhLQ꾜|z/Nq&.eRdH_dB{b8 ,g^Lq$9#4\iӸ%6:-Z^<J-'eqv_t:8f}'2wB3F)XkO#=BqۜvAǎy_GU+l#4-U-wVRc`PpȨc@_0!ԐXDS,XFC' 7ÚY51*qȆ n?18%Fvl5 ߘ彅~G|y0Q-9ߜ. DE{: sUF㲱7nd1;[xf#41e2Cd^`oTU L%9|p,=wNH ̞^l<1Ӷe.8#/*#/rɰxZ?y&B8 8VnkvB4L &ɓb_\}fKzț'{#=[N+;c$H`Q%fB!΄"#/mYx#4f+.)Nwa)(lH'd^2>(sUAP,S7#=a-{AHҊY$,\;1;^UI+OIv0xc#4W]rx1h%0ϧN@0TUkͧbbeh8'~׈&L y*X\eMDS@pß7~EϘ`lG9<%)񖆂 <9w8g~p)3?2x* NeW,(U\R̔3Nh=0%Vp6Y./!JD^ih^DTƍj)k^e]U.>O{oˉ/ 3A蟝{|:t#=U WBdWrcŠ4F Z;)]GF`79"\&3ڝW9ѣZİ_le=`m)Ib+#/$M#]#=}U砾!.1?q/3:Z\IeU]a"@!HA"\zРFqh6'/~f3 .)iT>]?T#/Ԅ#=g V7ܸE&6,oR $DFx-8iC;ꌃ7H4!SxMqT½y|X0`aTc8n[9bQp2fqQnyj)8͕33_{ǜq 627HidGK(9PNJ1nA!OSL…M%%-7 ,Sy39< Dus7HQXb~LU^Oz0:p$]E-p0cbEUT^6  Xh ,+>xy6<#11u)\o^WXiKAq]Û~ձ,-:dE RJDeiD₍kq hsKC?`FQ&mt0饆[BaB4H5xS¶EÇ>J3uߝPi~!EA::'AvJ5Kz1.58|o0Q::SeQtقɡţWmת钩fUD#=81'!3Q%a}V. Paa(!ݽ z1>:I!#/:ӴҟZeDoӟc.M6Hm[뤹Z(#/̗wu0(7R3;e0WI,OM%0U{zcsRWcvY,.DqjϓtHV"%0mBl20퀷hnUS(mXa"u`6ȑ䨨U>/vFm#=Խ:72#4œ,eP]q `0AW5fq@`;:{$X A_ҧj?\<2Gn`#4<yF@MYJLGAA,Qre]d19w8EHSA=~G!$9JE U Ք"Y\AT`!;K͠wϱOi pQ 33>~fVn.m wo"< rh?1#;Jԃ}y)mwTk^[ *4|]Tu.,"Ra_QIRH,mzmrJGԵt&6]p粍B%0SDTR_Sխ0كɃF/wb<\EfC#=n*FU$  *;[f+zuuqь>yB[fSW.lD#4rI-]hl4l&C.v_#/ #/v7a'ta@\Mqb>?Qxuzf\z(>0|xp%T(s2h*z0c߮`fv"}gㇶv>֟_ - ˿iCJhI>o; 8o[7ñZ+V/'؇Mm_qB[~fq&+#=U_&eʇ+R>}xWڄ,"#o'ի BԿxuU[<X1&o–'#4lf2H mUkx\2U4vY״C1ʤqInU?S#4+0=:vY)quZ֧8z ͹x q9ܾ[4Ŷ66G5q#4S`j\!`\S%.Rm#'gby8`AǓ]F!%uP"F5<`e?rd",w iq}Ovz3zҺq$7k^]\=s 湇N:S`hHs.6"/,ڳYⴣgefJ9#O#4zwHZ=s:þB}O M$ָܹ,k>ɮ#=k֔=z}xO7:Nzw-֍UVUpP{s}T;V >0*m#AU}*Z\gVƗ9Zuie/6Dv@3#=v%{,*q/k3fM(Ԃ\^4|uze=f_>7ni6-NW9Nw*e(y"-@R[I4,g#4F>un?EyvgGe.AXr ة#Hw>(g@(th#2k?_&Jl_1.: L)/v3w՚%KSXn-+D|ZY1RhgogQ>vO#\Q-ׁVi#=9 ^8ݐ!꛴& ZOBe)<J(UcO\+_s̚6I:꿆UwҿqNcqCOPxeǽĩfV2p a)V{œM.\Lv)R/ʟ׊{|(N̨׮1|%9-G.ZX}%NTŕصr&x00Cgho#=y׀n\_)2uLG^XWX4'_ܭ]Pq! =E- X>/q.^*? gf%IB#/r#/$\>r86S~[}Wx˘ñhKF'XlDs3nps()N""9E{Db6s6h&A(B$!!Eq#/m2a|Y@ރqEJ0ʹ!-F&b-+_2m/5=#/\:)yݦ&lsy^o]&RDlq bU:d9ĝN\5^~:P܉ͫ *\,1g>|pԽc-)r0A#/`U㜉KoWzKqꕝ,鱌m9[1xF=r璩yxq؊b9^/ђm^q*PC9$Ǣ̀aw#=8iH||.7J \X̠pH1")K9hG#=L૗JinQr5„X" TYS#4ᴌ韟U#4)g>1kh}F$DȮ:tzryiPb2аfJ#C዗nOiH3\[aj+,%׋h)f͋|J\Yr+ Z =}N"ãzp9#=Db1eZ O%8cICciz9Qڃ#4tC#4U,Dg{LF]bORЈ$cY%x^ޞX (t 0epIcue3Xd#=Y(BS,XY/ C9*2K$[r刢 D~'QB 4-N4l|%׿j&KqƖSik-x "k#ZL.(^PtuvPv9 #4.aO~Q|TDnz%%}3Kp Hd`g B\%ed<'t|~}շ<SWh<74wDAG!.Q"NLmI$NļA:䓟xoml^|P֙phb7g=j]8$H(d#/mC5Og#4iǻ5X[i8uQâ`a W!\ )cVn e-P Exn >K1;>RD6sPJhOIVa|QQBxwcY/;Zrxc8e]iY[zKUypnw\U}a=>g#4Y^x^XcIWGɿ}s:c9!wE}{pe~/k|N}ϩ7.(jypLz\:])8{<;MLǐn9WfDw+L#ߪ^PU$XU3l=cygM3'÷5n'.@?`#=/lQ]TC.3uq?ͩV!3dK;g/KJp $Qw`48-p2=<#:]]z)pu=Ӎ8a'xDANRʬWOg@#45 JH,hb^B&%")M. JWBd7={&C}j0XKzi#4`P@Z*"iOl$#/&%C5B \Aff}2)&^xC!jYvg BdLz7K~+.]iD]Hގ-!](û8~r{x ABPPOlؗ|'R~CJ_㮶!<{O|(*`jungo8(q:a#/@ ?`9ǖ7Uڮǩ[ن'QDkru[{Om'$)@0SJo{%=2&Ю-Р$SHx"yB}1[@F#=iAR Á$ED lB7K!~vij"qyx}#4nc# ;}c8]:~}Oo sRR?\#/w?8ӏE)+.s_$>Q2ۣo<0[e/E9 &Hm#Τ/ՀT%ہkU H ;˧}z~0#/P֗)"O#4(!9~O&Aށ4?J5#=hS5Cܦ$:~ ^w#=w}B])E<;<.y.^ccjݔt6s9d@ȵh4 m5Qqwz1 H@4,KDj놕iVDuk@D*%[KY#4#4G!:/gT@FO*K>N?166/.qV%-g#sh|chmn#4!+2#4, -c7;GKpE׫u\Ei0)5kTawWVl`ޤ9n vd[9j\8n(FQ3MBcE4QV}Dr}lR};-^ B!JOnd%?Ɨ(PPpEHUNݹr+`k;l%ZE;j(}k@Occ( uB#oHweR;>`(E@"}xXB%"J"hR8A#=?qjI񀤖z#=iv,g:ryQ8Wb h,64wi{T48ðD)TOh0$1ݴ:M7ql#=1__s),cwc.0mE6M_2)TH QRx@ЅCgb23 %>GvyW#=mD[0Q iؤg*ck{GV+D.?ڝѓJ?#C&8y S un^I6,pTJ峉6|7X30}|PC;Q3ECJfb|؆8#4gCێy,"C:W#='$K0~~ J T~~t|P?*0QܚoX@QQֈQvPW † )_562*LT,:#==4Q!2(Pd CʐF# Cz4k|oإK`׍?ŢN:vC<ݚTFǛsw;29Ȫߖu<چ2?S椺pUDO.dAJ]oNk 4}qsF{U|0ّ]έi׃P:kfϷ#/B1&ؿ{t1F1#=BnaHYK _~Hj,ûY˒ԄMJypP$`#/]tz;-7߻QPsu%Q?/#{UO\(.1g"R>CN_3YKV@O?Ԣ_"hmNj}Q(IuJ}brI~Iэ|.#=yh2;׋fFOL&;?7n /ɛ)ڽ|q6)Q+]NE(IZ+@u\=A(#="swyG[$qdPC1dX4G՗#/Rc$Fѿ䞢#45Ӟp^#4<ќ=/=~a/{]t4xzߨuwhk0.> wOV%1| 3zNj1&<.:fV"yB#=` y>zv9~S?ϿW^uo.bL/ҙNeRy3{zj=1ݜ":kS9w{/v==A@$Fbࢉa`T#4s!hb&"%my'ψ|7mFݍ#/_v+ E^d2'D8buMrj#YĂ#4@ O<>'%O^_'#4F[L;>Uz>j#/gN_5^no{E80_]Pt5~Glݤp5z>~9މm^JOg!E6⣳[:{S+q#=s~#xS~ou{>.߈6j.`xE??>K[0aݳ/Y3j>DQJ#՗˖;N;Ƕ6#߲L=՝>:}BO7柤CߧcN ]C )/ rͳKw&&)/aXN|n<}7/Ҙu0:DzSRɦ~v7cGV'mܴ?%uK#4B0./hn,>z9yXW׺1Ϧ럲]Mn;~Ł{k~yF^^}CD͆-KGt?oŷ^[o˿e^N:Qau.ݧOn^+om4,YTF%,]x`fYVj~}f$6}##4VKE 22`|\x 4o\=V)3zak5q&ӗah^M0>^o?,~立N[6l(=?%G_Og~hl []Z}K} >!'yύˇݴ~/c#8q=%֨>C/6!K9"]Oͻ۾B]pFwi ?:OQ,TRG>-r9qM^#=Knw>Ds;Qy83y>|xṹ2/|Oy~eWOOg|ҹ9݌qxTMGڋP$;#=vϹ_p#4>o湶̻aL>zrJ|?K9ՄJm,!1/O~Mw((SC#=@23mP_>ccO~^빛J-ͅe{bɳ4O.m&̵x>|QjL y)*#4NrR #/bf LWig~|&(?/~Yt]86-rv4~7m~sHaO#uuf{4ю||KvG{߈FT[w~"޽@[_fZw=Kz>acM#=وԪ>Uq?cKX|Y'ktm׫1/qseq{gGO~#=7|ãh/#Go7GgޗӠ7@#/GWʠB<@ss#/#PHr N.D%:[iNN7et7A/hˣ$z:FyG~G$^>(GTaww>P.~m%=qsSQ&gQTbS۞YVX|w䡘d,"hH'ce]#/#=D̏wBk#=<:SCU9>mܚç Xom˲98R&; 8TA DupM.~ 3E- "1w /m}[l>>< } V]z_0 #=xEۦuQ$864kB. -Egx=iD:퐛#=aK%D虣MA7-`z%&>oXnLcgV:RC{)vBDqzפɿ-y#4q*8W_1l6r#47#4{!MNPԜ mtLt|ڨ`jpb7tA(B`SqTmFZ'WŨ ,ܢ)1ڳ9w`aI$7>k}k#t"a;9k,pr3!G.@isRcC{#/8tX5xg!se>ϾáзAftUwAR~#=1lM4c6k^-Ň?;|TkWݱO8}2.d)K锆6 Q#4* ֗tuE$;eǮ>oH9NYEݸ9?/=|tӱ%[*o9:9A puPt[Y>L{Q?J5.ͬ9%#4U&'Q6r'7Vq mS#]>~2'XU뫪L26FؚmR2I9#=2?I7(VCIX9ˁt6yyr֔AQ$M*IAcNT ӭ<dh$8p#FHnY("ӧ j剒QP܊i0f1G$KvJ1R=g~=(8#/ӈRөzڹg6eOfw"< %#= (1)*//7Orc`I$% I$@^Gh66󁦏$b 1]߆ƞ ϭfֿ_pgyzyk`7鞰V]>K_5}6w5yͯ_?n<$'x?([~lXr6[>PoG˚C#=Llt']9W& n#sZ MYoJ-T`?~ju~k#4?:$#=Y!|_Lt;CXA>`-(ȺA;aMᯚ˥x WpGD5#4#(??~U/0ؚYURSjxYфr"!,ˡ[G#B1GۚyN#YQ g@չ׉DQcQLŸN)#=e#46^UqV[k42XicَLv4fpF|6#=qRLμ0-101\8DY#}<<}H\ЯnN4Ys:#ss<*#C^0wX2K l*b8+8; i=);{w Dئ6dƴK,\Ab ѱ!O_$ |X`[YJaJ4dr(4g/wL"}xwO=5HwV>a,qQav //'ObSv}rn)OߒV\(&~!;}CNnmBvAy.?JsD9*~F< xb#qyG.aN NܺCs8Cak#+tu`G˵G~>)(:O;#/>IRJ[EC$Pwਸ਼xN#/A&qL~=/d#4CUw?`%{#{K:ܥU|3WZ&*b%P{GUÔQ<5p-OҶ"5>QDog7a3p"wbB)+qz^'\Μ7bbI^pW68+nԧ#4qMR![#4Dc#, h1;was2pF[1njc#4A{HD>L#sCjK bjH&h$39&&!V#E zd!ҡZS1Tlg XYX1;c,TX"T=|ԐY f81UqHa6t"ܡ)#45BQ4h؎ vD\M)_QRqIMqƣ;[E_\ZqE2U3GnI:JA2`rdjvﲠ}VQCj#6c]S+uj mջUa~ <眭iZLnp#4쎇Npqޝrm&%υwCQ {#=6Mƴ>DU4Q+n[RVusSKaN0lzǤڲZcBF=w0\#4dV ٤x`5.A#43]Ǒ[[bɉ(UF0- }`Ar4#41 Qt#4h< f`Y0G1^s`)h#=-`$iZ-ftlFTcN>Eޛ(6+I8isAҦۅj(>>7jQUCDnε1QC?S,=8O[ܜ({NkQE1{%?3GĢE>jĄ1{%1A0v:mbb)>%| N~x#P#4)QGN!;iC8''3{[`O=:1 PVf#4#4OYnO_zH"~$_OC:(v.1(w~a.4zqQiz R[qRO$46Vr5>U;xA!4-Hdܞ)CmUBC(_~ͫǭLXt0ia֚m#4m+:LElCMQj)I# O4̑eE[ LdaxC"mb1$:;I&@#4bMi4Lqʔ1NB E"8nh- }z6" vi"Ŋ#={+5\oQow7Fz8?m a8|&,;#4E?]9j#4:Mc[G jC32(ksҏQ*uwMS~Wb)^ϭXc{낛F7&5]۞{=<]ѷv~O&,Kd!{zVn_'nU.;ml*-uWƆb#=J˖ЙKA]ݙTz%e%z2uyw.YOs_\+*zfXnD7 PU#=t=y&c1&e%梆/)9kfQDF#=BIKa]@QG#4Ói BxrMf˕{iC_Fdߛ3l*^(W/Qw~s%AaOR|~;y~g?ȶ#4wB}n6jiݧC)<V-SC'9w|?n߇3V:{X?5#/F"Y@#=6l_X`dZ~ڿ%#4 0+ܯ E#/^MU=^q!G(k o 홚QO&g-MI\o7#/cƘp[v>QtbJG-Ip_C#4 $<@1ێ> ]݉E*+e ">d4Q X_J`:#=#4$<3tp=.LTÉ`ƍc *Aw_njyů0$'.P(8jsB_HNwߗQ@|)DmOSI_w$I'4z8v0o d0-90g,2{ZhU0U'Eldϑ7z}SS +ZwEGiHĽStn1w#/y <ⶳ$I*"EF4=jxfOdͱUi%|7~ b̳3R4BWf˓ލT׳!Z̳ͯ#JΎ#4a'%hbVUqbfv8FZdچ2u30F\tb8U0~a}3Lɗ,DY+C& Zv__IFO&gZog o';;'L:`&hC>o&W|v,ųICK>g_8AS`_4QkȒ4[X󺋀b#/l.Rw=9-r|?eRi?@;bʃdֽ}ǧSoےY9ѲM|<'5;jN@PQU/FAUAA}h@> z#42eD̿>} jNrr#4[9PF&SIj!L,>DO\RNpˋ-&Q/mHR9pK~ʢ$7@`ԋy1Q]#73egJ~tc&bCZ+85>"W 桥Yn#=T㐼,QO41#4iJTxj5j38i͕Bi8R b-.RE6*'NH׉Z0Ha#4͂ڣ#= =hw>]׌#rU HxOA#4ɻ-nsW !aۿ+.:kEc'5z@d[d KDb@:ћav)U`Rt(#;(| `Ēo|6& h54rn>3ȴiwr艴kxo zNֻV ݿYv;si-2-q#4Ҏ̢Խx\9["g7#4=R.$4bF4UxscqLA|y\J_?=؋F%%%;%o{"G6OMБ\^L\7fhCD,M t!>7-D4Ͻe <5Fm5YLJwIS)LoOdxɼ–&[|/،CA1N,s^~NQĈI -XLNhLWZs7ҵsYRRe^;tOV%1"9j6~)h ӧwԺpN>kx;V&n3Dvk.ώB(YseHd3l{;]gWWcH is4muy>H:#=RbtfGWƫ/ L ֓[JgmwKw20v;a-V6F%ՓExJ4n'.rhZђy|5/O7WefrH[} Pŧ/Il(0D>MN.;ͦ#4nmYL 0&#=\͜,L/Q*{l%хyi͹Eh,H+YYd>);eTm0єp1"^wk'$*n;m׾O ڰ@.Y0+7*@{0LV˦fgxPņ~a֢l9XJM*Ȉ!#=]d\vOl X[o>l%پH`ފ/Yں#=|E@@ԗ<xeV$+sѶ'%#=JB+[LDA @.d]G>wGe#/+WXd]VEٴב|րʼnU06iզ-y\ #=/zff;>1ڍ}T@.m!HQFvJ`325d*4y~+.Y#=\uփ6a<b TpL s<[7Q0Ung:s;YUf^HҖYUXNL(6V3J_f#p|Z3h!դ:#B#/q:Ӝ{++޾_fq.rM"#t5;G)Yغ:_%rk«u@<trYѭbA%jUe4`-9o&.F/x{|^u;-nP~^!rxyGNQB'i5(>Fƞ8_T w7b3aSF[AlyC@(IFZ/Og2Lt4Z׿wjk±(Zs+eX͸87)G>~KI|$9i^$|ҔओN\˵ť4sv_}\Qݛ}ٷxU7˶I{b_γPv[T)νg xt>V: \}J~W;޳lg7UXFH #4'f^6Uqʞ '#4p#=p_[@3dDYf JqARsV=k=(qk-~4Øno!_wl0!=1^)a-DI#/pwϮ)By[1йT.f7D?AՃ4N("VTE АX8 FNԡ#,PL9xwggbsEg;#oa%NQ)j q)BiΧk8?~tˉ5#`*8FjVK\aixyFцYn6z1S߭YP]G}͖roLjJzO](Co|%#4WHSrao#=֮.x?C]#PHjZ*̓Z m(@ܬ~.o3V1=Tea@qgVҏ;k8>:D7I{w[(OrG0qlmGK3HŦm^Yb\8JwHm#OdmBTنM ՠYH}8?6p2~?WqF;g~PAf~.k#?K25mscb0#ωpd6waBzu]O]LkV0+WFDwu)FM"? \\0f&x3EFd=6k* Dv8߽k%\cʅDi yA#Zͬ^ $]ٟlh)xN0լF/8ZAa {C51ƍt#ӫfwhδgPA4Od#4#=GxMѤv+A#/վ='vX=#4Eyʡm̷kI\#4e)㉶v8vPJa{9#C6t;Ͽcpjz8%(cZtQ[anl^.V]P7[UWH̺V*>UUmUSq>?.Q󝵦^j` hQ0yyI5Qݭ\---oZB P躍jJ6.+ic#4/y|1#!I&^5y1U(gtc"7Վ~y3"z,`5a6/<xZQC#4C:җ|yNUp7e.ҽ8"ygɳ2ssˍAI1 #4xٴ|X9fypx!I5M5O"W_@?9L o#=[kaԃ0;]kCuO'׿oRM#/OZ=cSPuċ0UV-z(db䜖5 Nj%l GPn>@,d4G34F> hDϳ<_D4~w]~as7'N~lF^Mwsc3b$ 83M'^`7]HLNy\k𹨕tK%/m큱Բt ~=5xiupnFtlPE=sJ.utu|}_)ѓa 3=ZO5K#=`g$=B<^ ,f7*ƭC7cVV6+AT@9a^_hF e臊qnp6ٸ+AeLdtXAfq~F"Y\7gd$oRFzf P7s?]Z,~/M~Z_FӀ+H`c\KOvwKh#t* .[[]2Y-b.-S1S= S F.Fc+UʅʔlI/ۭFrԘ;0bƼ+A!}Pȁ3_0:pjgQLEf/Oq4g¾yo|#4/v=lv|ծL@u0#^q~ /5/rk+fQL#xo\K|Q?$ҽ# Ra0#s$AtpuO7>T28JYG *E)⥸eJ“]Z@RJ܂hy2CR>4M#=v\}9c6AnV#z1aq#ͶCNt9U7da^aG=0bdl#4i8!~GRJ'1X#=}W׈\R'sPm/b#t6%tϾ mڮڃ>763Z}7=6rj@HaLaRbTtiEr?0]c9aHNcFN{.`ڣI s2%Kp0 ! 󇃗%@O&r{ ݻ{'iss9Vh$E+gaD@=b[C&u˾4[=ߡ3=,J{t'7K|:j5 ?O9}۰4ƃݺߡ`?.v{\a%?[섺)_Ubmo@A#=JX/OJBO xσ_k9']]7"QvU9WN1y#!r0ެ 'RzZ<^XÜ#/к[ hN:tcEØ)(<@)Ga÷~x@Y=AwKm/oDH5P=rrU#/sl|T۹Q?P?\D;pOV/\ 1oK#ᚈxb0 C5T2еC{YW[6^d1x$@Rp75 #=/2bKMĊB? v.鯐nvy.navJ>Fava 99eusЂg=]ˊ}έ#=#=#v[4;P=9D-~878}ޤBT/瀂J&F$bR!!!#/_|_~IG Ô[oOC#=\9J3rFbr&1}I!:t#4?gi1 yJ۷ܽyyJl1deUAB종Ђ.AU^:wϜV#=#=HIFJ `0)S*0P x^F$l&CH]}Ll|KN%ir↚h0,[9#4S<;`6 ڟڋ}#4 t|VtxE#/.&M7H&#HA^b q\ ($Fɯg׬~3c۰kvXc?"dUBRR@/P[RFCЌ.}1^ˎ:m1[yNUO*#4u#4p'Or,\rK'nFIM[~%꘳\xF^Tu ? j{:oUi>:bz`1ù>c驤pѥl_#MOuZ*]bdqaSFZH[រM7#=Y#4N9avz&ծ$X_[v`tLv"o__R2*q54d?,tԹ\åvr708pvpMVPF0"#=y 6|Bb E#/B'ݥ q/r#)a)d]Tܿ{s0y"`Q=]:ƶa)Ȱ"i#/56&ݎB ΢J>Hi3jG@η蠽z&hFɉL|d4$$Xwz':t'wWz|@?K~c9.Xo=~fv.2u~#=|q20#Cqxϝ8\컠yp1Q+Pvyu4%zYFi}@РdIwz-)G&_)&lK'Kr]~Xoݬ!O(i<1 2VLB(f )ͧD'h!) 2/ٮX@vy=VHP\}ϑe`ACH.VBt+޺ֲ{>9G9~6WOdqG#,SQSx`$ڲfV3jmh`2Th'dD|D Yd\|LTC"o#4T`'-ӱ>l#4T1an##'lo,s<]zMnXX'̧'禪u;Q#=@,)ȡ-։GZJ|ux#/AKzS Ksp4J^-CE<󍎜S-ο5a_A802Ϻ5Ň:Szxv%-Fknh#/v>]d[YB3 Ң|d+M@_&!2 a[*SH;0Ķ1d˗JXX,wgՔQ#=^<|'ӧ+탠m7 E<ɝāmrI#/|+SYR]9@ZjNaB6U=&qve:}ְk:#=()SA?@ds DDS-) QW| WyCr)KTBA  }blh-P)haݣ&TH#4]86CՂAzaDEYD5ޘ !Kw:br"9k.`zڣQ+*5Z\";TD01(DE0ys76sR>BS͞%ZN_NnsƤ-3[bqu}W|7 )X%9"")Ȑe߯xsj=$41Ka,~De.ԋ3ՑșqηyqR#oNS7+DW3lh2#/RAE];XI<k HM#4X@ԧ`&$gy[ǭ4k|R:H!Q&QwFuD"t*`QȀ!y)̃BI֗j`0kmJ##/lP,(7L?5vMj˵88X`y3V \O1F^D߽Tri;7ձ^hFCbjby(e *,86â߉XMɂI(Z)%[O Qzzk&UH>;o@1)$3N"G/r MHASREMtH"=!&dfu]%-!!Y#48'D3^4Fm*)tδM['*G#=<#4Yvlhn!\^ɮ."I0~PWNMK4t!yF2:>#/ o0t3分9#4y]1`paNq.`Pz C#/a]Ǣ$6*ÈFħ&7sD10|<#p(eűӯѡ7Vu#4X[B1=V`!W~du2_@)z;:Gt:͏W0xWbPE)aFhrU^cKl/Ljd2k&{=A_J!PPֿ̕O ϙJ≗^4VE'8Yre#CAUQ%QC\tAjhj"Ƌ;?,pT[:qȂ#=㞷&m#/hUQZ?Ps;_a>\TQaPA/?_#4{)+#(.QI/ik/ot]ϏDB)}rW<TTg|4>σ%#=fH7AGt4؀{?#HyHFJϘ~8tx@?ҡӱ@XRd+ ޔCӖVt~x2n2f^k 0)sI*=.vR[#=$p0יC/<3&R+a~(=^Ee @׻h ^=vL=wL_"tt Ý˻5@#/̞Bi>jPXmZFC#/D% rcAݿ(Hn~lFD;7R>Zu+_rk#4:0͟yv鑾"u5o8\dOUY ќ\|'lg;Zhm>,6*D4cn6/m)@:)f7UF<9 .ձFfjO1.s8dcq77-̻Ba$LchKa2V4*!Ә&S"͗[=ޅ̪qB5=z`Dzc{JfA\gYϴqzc}0ȳZ<YTƐg #=JUy\,̻ _;wZi8eFUY#4WYL&[m%07(adFMC؍,Hd&cv񚋥7»8 ?ar[#=ͼ?EluD|f"ª*%L+Aψ /VbñZH%#)s:3؍jJn^XN- h~];<ؕg򸺽#=/C#=JwH$;zQ6 Ҹ07Ԗ:'V(HYۏYBI[v[ŚIŎ #/  z E0 *!GoĀOs"#5^ ?O:$y0?/o??_o/_?Of3?y_>7??_Oc/w#=Xʔw$KMk]46oo@3;j9?I&\9Zbl*QO'OC15x vi) \D d.x #48=Nt06rT(m~ĝĜlpHD#=WŕI:#0Q#4&EAp@(p1@!%ߘiVȋ4t~&?>h9:Pk~ |qܶ8'LAhCQgrA\hGDС;"0]S"hc?,<2|ooСFPc0lS&(Ի'w,γG>.fu{h>OsŗdZ-;& ~n#iP4h؏Jxgs2Pe=PQ; eV[:%&tw#4U0 köSi|/(?&~^Cȍ=<rWF% XHd =FEA8Sx"(JT3N唎{/<+R0dկv6:r H<#4xV&MQs@h|>{Hӥth+A"{,9#/EI풙 <7d& a~<< <z/CЛXIawiF߻)b Zt'H6)"+A!40 $#4LdGQղ|Qyr/A#/t&LX~ y#/@UN!#/Ņ {wɹ:H#9a_N=W_uİB"46jV3#=m" *T颠-H9uzkYFK< 9_rf!)>v!f{O-8)Mdi>E}#H+I_KFؔ`ZL:QULS4U/6f y·cgI#4!#4R`\Mi7diGh&(1?RaKܔXù}w][qF 8;$ UPEC#=L#/! ?jny8c̞8;8Bꎹ<<}]EgSLebhx_9s>^ܔTs=⊞0(i.Cm{o\uM1#=_ԭ0"z'PyyqV2y!,9]JR3ΪZ #4#4a.#/n$obܑ+Q86d!"`~o{]#4O/V?nq՝1虃D~A NOϓDL{:9U׏sؼ*@ٹt(%#/>};01%@[cݛG]eX=tQC `lچ"Y#\q)r-{'NJ[Β7#=%u{J4)F&|t;m"@9L3=9[BϡZEF=ei\8O,OG䙲nQfu-F1SA]r#DTAjbR6zW6< q:Ct0=Ԝ~E'lkc.ގ.-mVrעQa2ȭfs3:k6"Ct#=҅X4Uu$qBwnr$߰5_9JwOߏn.}oGCSmbERROf` h*ZCmǶb?vwrIGu=/0I_Ĺ3mLOGp#=딯)`sg鯫?'~[o#4ޫ“,%0 alJ): CfB7d>>q({vw)4݅Rug)%/XU=$C.BFG'pgRC<ѰggGM@吼aVDD|T#/ |a@~?iOP_Ϯ;y~ S/^ʍLIy8~07H @ԑOL=*}|@[+>ϰ΂I  $DڊB $@>ɮoW݃B$VoGqƙsEv6ms;4 `ƒ%#14Aa{$2@7ѬSb'NuU yE\`P fMDI걸tbX1q_XoO_iY~;@ m?q\y56ۂ""#4{#4|i*6S$!(no#4pG;áy>#/Vg<:yk/k#f?GWC`LQ1՘AIJ|#4?A>ޘpx"V*a#=,6s-G0Mqd u[ʗ`T0Lt*-_$#/fȔRNkU^VZ71v>UQE%"x.ޭ* }jyOН|8ST6z(FKkG/5 cSh8#/t@;kϥ)7$+JQd̠}#40+ۇB#/NR#=%U=6d龆J+Woev߿çޞaHʈ8}ZTRArG$0 |>}N?@#4%#/̈3yh$=APy@7#4F}_ DDP>ԅħ#G#=fqPKlsIu 9Q ~F}O}! '6{ELq?f<,uuu%A!]8]D/g3~p3pjnWlٯ˚Np%c*JmW DJ$o5ynORCjx# :ou0<1I_洺 ܯ@Q6#/GI(O#=AL7sD#/5}zC.gn|;g\_|t[B3먄?7ka[X myױ9S{.\>'@WrcJxڃ-&@)z#Κ(r *",S6uD*n.6~7ƓcxO/#4}d:~)?$/0Ï<}>/繧NRk;_&$ot陆I&^ߌFQe33z(\`0&SCffg)-)@M+qo1PHhCB;t>;w{*"__`5##4ZL#/Vgq߲"XJN!c!!($+$#4MOΉDDHo0Mnmw6;.Mڈ}a#=##/!JXM';P$nv`81{""2uRO}_FИ8%?6{&33mxu$q+9qRͿJo@k7[[h;#4&p#=#/2P(Ax~'_Mofã% 𼣔{=w?5b#/$R~@.FBQ(F#/DyI)۪} rG^q_6B@HR3"F<ɼع܃)8@CwY[.IkQ?Aj"Nv 5]"OG/s|_钩<{ϰ!ȈA/aepQ}Q`#/T}(~X ذU|,Ӛ*?D=ʨ 7=C!5=M]s2xN눚5/UY6ʤP49>RGC$[YjE[CYqo5a /Lx0[W#=PVI jRm a}m=:\ss83X󚪣KBp#u`t#=-NCx-T%Axtx^.ۧU{u"5E;G [-0ՇOFCg1ö}U]Mݼb+e2"i/MITG9mko&C?weP8[T}8d9C|J"1/]$k}r}~kܾ*ˑm9G#=|eS"LLo$Pb8Ln PQFP%?/mzõj\bFtzDZ"k[fiVj Wzy"[<彃^3o{j:WW+;٬ V{Okh+t˙F+HfoCaËESe8nduT/F%#ug3u8 .UyL:,%nvָc:bfU=t__>cyqAN?bPҺs߱`L| 298u~LNQpǻ%Ľ:ꊜ"l8fn]Uct]c6h<‰MQR {C_p6 7&:EM8)#=#=%#=&X3"6ܓ>[Ɍ*vԽn{wf0?f/wd`Ds(6Az"a{}M#4|!V0!%جP>8 <ﺁ?WyMb9n'Ps~}3*;\f7!+ GZ!E9Q|K~\6?Q='?5$)Dzk\>+ӂ.Q3ư^Ơ#>؎]q}1yaA1;{{Xx8uB[JsRcӘ<+b1um zj)fvX ׄ&c?b4[੧w)Ϝ:?5h,⠕I⨒bAlGH.˯m(bm߻8J7:[WK&ORR ɇ1&9(#C?P{n9B^<2h!tg#+KpB^W.nxl"$c-`GrQFW w3#^FEH#=Fք$D 4wPKpϷuSC)ԪU*&"/>IP߳øu#=^#FK`׾s;6;r#ȇl8Qp(YxB05PEɼ)EYG lJ[3EV#=4veR].Y6?NdzANQ3_&nZ-FSv͆>Sl4UJ:3 D@=;p{z- dq#/з)G}ᛩŀ~;]3 *3R!f+:Li0sǜ6(A,`M:qCi:| ¸:q @0.Ly*؁|"'g5EY^#[3L=ABsW+񃐷%J.2 y냅(xjd P4c9U :9Z"#/M. GT*$JaC:CzԥHxǗdH,##/B.#=I3c꽻w67_־d؛7tL}~fad'1:Vxaєb%~La0ⰊlyZs~)洃:˂FO-xpsM/H|<)z_Q爍:dol!D.#/n $K;Y.G{?.KٞE#=Ό8phIxdS `ݧk!Z:!>D=/@c<3>=3NwJ}x{dU8G$gI/J#4lXrvF2d[CCѲeI $Om#4vמVwмPsa@J#`FcVrhMO4Ϣg@_+A'vW~.A7C) nC#4KUUNTdJMT#/#/)%V:!5 xrP=j}_&[O~|nW64s|T{x~SR|iv?z>>OKKeBʽkU E3j>q.D K " e@$>,$'"$͵W=^6h0N#4e,X{0dd-'QWSo`>)Pnu*Օ; #=R%>xV4u~tn|v>X׻btDП14(%@#4t?Y'zpr_zL3΍KeTB_ ?1ň!UOIDQ#=3 $_(9݃"CҌNIq[hZ5Q#8Mkf0;N=i|$lQG\u@a(UH1AF.F6ke }hDE"aL ՚3͓4TهVCeT!XpCLf Z9y/6>OD1À03 }Xbm1: %#աōe{&ؒRhSR; ,ZY;H0#4/&NB2C^;g ? |<=*>=gDEFNѬoT b!,r,rrW%4Nt? ?qrtȀ,Bgnd?oAX~OYm4X$?"kH4=|K?@3y^o3ē}}11,tfuI|>\b/:3 -5kd`v%);c.g[%Jtr"482m)愉ĺX(-j+N\`R &O͢Ł6,#W]#4Rڏ*=4vi=|sr@2&#GNgrH)g@j$ 4(7 dĠPS$\2Kk6k dr|>W\#GIgDߋ,NM?[i;H6S3C% *.{Y Wi"X(7HL3`IF(p(F1#/'}mp`O#G6P6d1x4N76vz%֛5GoΩ?Yeqt?jd0_88#4 C]JE1$+("8uNوfBwjwšAT5#4!#/1rwE7 YsVo#/zix#/cˋq P6ٯq#4`aǗ]!;.X@*#48ڵyɠCchADL_gS<#=~\2AC*Ҫ4t:cxyI($]+d۵ArI ns݈av@Э21|dOߐ#/6@9#Jrv4}y/Go(m(c?i#//a1_Mc>ؕMOp5>!nhNF_^ׂ&8Y2̛twӾCg ^ _k}o#4ϩ䞥hSTN>#ɛ=Ҽ.#4ݐfxG34!#/DȑX(<1Ӑ]{|@6m0%&<5+G< xkv >bB|P^"Pz ] @MUuD) ;9q̦&B *6S\L['0ѭO0xiSN8SDdVO#QZAD%4A~xulwP/>Q|*Nc g#=G 5b~54̑}G6)s¾Eg#43r{6 |t|BOﶾ:As$Z\u8IFknoWwz#4B~+;ukBĝ=B0quxЭ힄N0*+INUt4R>*@ ܫL(+$x`~U(xC=zە;3_6!0x90ف{4Hv̗~5LEf ևІQsQM%(PmP:{A{qL6P >CC:/꤫h;#=FBN# LFeP]<!Z0xw)8scҋ?  li`Zbgc8 vl'%F##/>-`#=ꔈ$)?/4| U,%`|P)Q=6lgFP!#/>Fx5 ɖZ!RʶuAwD/ ߟ{:bO?6J%#=b.i%#=<ժkGld}'Pd=zsmB{^hɃC1V#=(9q__5 tnCe,,,x)Bb7N71~J!6xEik:henhDI3U?5`~'ndYS?3'٢_E3{Wi]13VteaFR>O 5a}}LR=um? ~!A D1YMPsM> 8'>nͳqۆ#@8ԥúpu$6#wQ"q^bjAi/Hq 58& -6!QH{eR¤ߟ4i]C< fEG殀_Xn0!hR}.lGo*~#/{gL b j Q 0o_эbHQ,?xe-8uf̑~ls8(E!Kl4?vbUѯT:r?72g#=usB"my|.>)>J+#/?_(sqF8L_ױ!Sy`mC`!k:ŕl #=6q;t#4G5=tCN@#4;4,B M td_HACDm-^D"l :Fo'J{:<@=H@$HC)g[%d "(utQt@I_қPDD#4[ƣ1{Æ>Q|k.#4Qdw1KM5ր>{b\zBIH`!~9?/Ad>; 7yӯHN? y}U:攕$$Io;7ǻuovNni=X*!(@&_j{LoP)|:0=z$`´w;N67ڹ׮*F5 _xs8fw{CGTynE9F/S*_^]C~'^bYb&)vt#4:#/"^,ݷ 9?VƁCbw70y8䮉p:;GoM?;MTCD߷?L3#/DDUOD}+0=#/|" ԁ T@Xf?Y\[-QFW$m55[ؗmv &j"~t,7N |ّO\^ͱtH?X-U4T}*~0 I}_>'Oo Uzq|)\QO'Nb/ވ:X#4)!֧f%.jMp؂-9lt컚]f52ZЙ'8wyA#΢,0"D1真aUqK4^PQwOrn?QT't@r#=6ɧ:u;qn]Gѭ{ީV&":.-UC[0?PV##/$}#=7 ]?wr;2" " TJ g=Yz#%Rt\m<@#=:t=cǗdw}#4|[P$PACWbxY\t+PCS'fE*67FV[4{|<pCdBOG.(:u1&r|9#/#=MR }[r>FA>k^ӖBju5݂^til)0~OAc#/4Dniꒅi ̺ m70=!l'bJԢ/wOi#7Oc @ru@#/ ~g(#=$+\m&ZN?{n`=_b!g1#/c;>>CF|C0QFGnrv{<WBk׏y7P:F]ľgh!#A,[Åryy"A#/P/R렯^S4&pġ#=#="z_5,СWQ@S܉Dw/P,#1ff&s1Ul\]K?,lOϷ/=KCIMW}xw>2ġe#4 ޤw;x-4UZM'H)1f-#=.^p ?!6L 0>w@@uMZ !V%`/h &%Dٮw Py0Z\\'98`dמ@DKyenٙ_?pow0R:}ڊxDTA0QGUPyCsg4A#=J Fl!-ldߪ^i%SpM!d9Ɂ(*NI\#4upbH @{.R~OWRWM<}|0A[@SM}>~\đuHA1ڍ!moV$)zP(U*$ATI,Zc@X}2~F1??ߙ*)r~!o`V#/&nȀ,3;u>Su|R#=Гf2]=;080^Jf3#4ש)igg]QΤXU PIs=+@:$|S1F8=٤1Y֡(H"fCILlNTChY:.N|4^Hn.U _yá@\utx7;D^N7RnXZ``@#vn ビS؀WI&ݥ zY6q0uݞsP?F/ q< A1CN#|_30U]4Ƿ: mYl)d?aHr@7.#4q1_h4 Gɳ>eX#/ȩ`9:C=S&VdX{rI&m?#4e5TUY2KdX*3F¦*ldqק $cAIb02x,07?G<ߧ~Өyt ͞gY1eQsa`1^|O9#4NHM#921O>pQus˚={YDۇJ?Wd9~B>A͢#4d[(ϏI 1Orr؟#4G倃܇R2i K94wƵ.ҌбI#4]F!mol*WACNv?~Kp1ﺜNʀ&$O?n"o@!Á5Z3EOS~K=5]kuq*U6#4660p ޡ0G=^'>Ss+c5Q?gæCQ|fN-(lM$}Dda&;u?⸔SĜ a]q+`efB*K#=L ' IW#/F/^Sſ?n N*hI |5 p@ gq0A1ab6| Kxz;c?=ޏaޏBU>ܬi ÏuTGdv![PRNUq:d!G0C=#4VޒZ:4e9~3*uYI=C2jT$ #=Qi>n{_DȠ̜mGb)q8I߯tD,Z!=4#/v#4ond#=$$H{'$^z.O#;WES#/@M54xaq:W؋6cy۲#4q(@(07[!5^<'#/#4HҟI~E<0|#/o}UW)oq$}l`#4QdQ.lLM=7Bێw~Fx?f٤:~̓ٙ2Q?WHPq#/ ׯ:ŖlI|͓7ݴ"c0bf5x =5#4&E,%; !=Hq8M!~Tj{USҥC嵂18Ϟtw8ˍP2dP[d,v8vIpL3fhŘYߜ<-?RugS[7Ts߭o~`Vãޠ3jzYx$ Zf\>_,'Ibblt2(qOɲ:ï@D4@#=J^&~3zkuւ?$M!2LPi_N#/Yw#/Lj*'ر8/zW>'Hn(1%$1<^)<\LdNu x,0cia+-!\%Dtor#>N6y6: }p?0 #/5EPj]ǻw$B%IH-O>U+)G1G,H֒FvB#4 kM=Bdp*BI1$ŲGf7E#TAO:ӿԌ\aqIcJsn$)9r"j"Nmfhz0˕d+ 26ŮۼF9PnZڡZ Aqe, JQx`X?[JԩTK?M~qhWlzfEDꋬ#/Ig40U?~odb"!Ej(#=H6#4#71OEk V?#/_?6(Cbb1_T>XM>5I~ǿ#=k3_i$lT({Ow|qGn% ]W!I>Vu@n3_ˢJLPG̅NY@k ԅ|oϴzÿɨldUFtpR"?%P#4Q~@2H}bPҨ!O218djV0, Ԡ2#/. B] 0+g$R#/Er K<}( @HD4><=ԺIqdXUI'|?py{`y&ap{#4@j?H(b=OA@r%7yA:#=/%M4'' D_S/q41BfIk+lR*xMH9S 4-pcb?fhg9BR(Zo#>39NS6p@v#OVva^f]7b?V"fi#/!`0B~~˷ֻbKxudUQ@+ۣ~sTu9Ĭ%(#4J;?5TTD5ZZ[2dA?.GdG+e\rQ$eP %%EqpD(#(^~:DK䰛#=Dre(/A%Y6Ogn,ҋoF 1Lr󁬩y1#46oRaTv-b@!B#0LS_}@(I|`B#uO3|cX=W7J<}HoOœ8L(o#4V{uE9'e.j$txm=ïJK]qg:zX GPû80)HŅ#/c" yHab0X˔jU'cԯ,CJJxC26|wQ9A FX.y35Εed$ыsn\/Ч5o4C(Y!XyP"K'.J*"@t!$@4V0D#/B"fO鷞oh/U; !ؒZox# Iz(QHnY#/qoBwh$f$-Tk/5 u@މNEioI퍗~ޜE&#/(UT,|amQװie"#4Ȯ4EXd-B} 8d#=&s<ƎsdbTP.*#N#=u #4qsl˯rsJһ-Xoa:7Ѡޖ-(Fx{kjm>?nφLwtFażp{S`4.K1LtaJ~}GCvgrՑg~wQEttP8c)K{k4 D[B?zNB|=Sh 9ܢ;, T'Ef z5nS02#4H*"FǎPs*/? #/Pa[Q4ԓy7cǝHu^ a_1޹zY8鱎I~\˽"T. /Y.p:ЃJ׬k\/,_?ĞBHzpM#=FZ1gKNɯ+5xUh2GAP^DSzT Peߤ$F >h!%ɐz'}́>9sz`2f#hRdu?bӿ/* Oe\jT$#/8>m3 뤼EZ(\v\#/ bNgs$@3$ s=Pc8V≖IbɹpD#=wmD@ԅKNj d=xod &~534A@"n4V&Hs%TH<=L9!2G:%FŊuLm렜=&>XNJfO3?^#4,=VQ`Y()C|A.)03=w>a'.EШR$1ߧ;wr>XeC~|G36;N_}`CϪ$j_V?O\& 3'>!GgFg2r7nۭ㇎"d3,@W?+=ذ:z['c4w1$: $el%@x(/M#/E2S#=I$AH+rA;*kC 0Q`b52^H`)U#UKMOϦ1\(&f_nz?lzOݖGbޗ@G!̴ppiu͌p#>oBS11a##45G7u^}bAC`d?70w7G1X͖2!:^MnY>io m`$S!oF*!#=wmt?=j-r/]TEUUi f d8dݹMVw l2"DGwS< ʤ1hH47)ِOɊ I%jcFntVHbhX^y[{=zm7:x#=q?N,d`97O"p8p>| U L/AW az#=]X<\>cÒ`_';t%Oa .a/^l|Nf"d m5!#/w'J(0zaDoƇBa5\Ƕ<&0y*(I bL7m fs\񙗗=;3rmKnk^d ewzg-d?,8.0"8Ɇ#4(ۅY$6Ί&RjօIuXb#4*֬eU9KЇ646IC]}۲=k8a(%؄cWs(0@`N%r&CzMNq7fSZΒm>s B/C>X5XK>[XD@mTtR*.#=QyT(j"$gQi&O/~9V.qfBtM(\x:w>!#4ޣ5<CW hA 2)ݑ4wTJlPjn/WI䓡;0B"<.{jJ2%Zg*|-.,nPV5#ִ<΢}E|ɡbc7 #=}&d,i'C T9-#=kAf\4)4z6Ȣu \yhg&?,s,i#4||8/H=^ޔcw~g?o"~պhd1/oG[cQfm  c:`6 r*A#4W+R˹T9M {_O0'҅+E%RT}b59.HyiLvΆ2L^1i5E=#='97:b(UPHEAJEDV;hZأg)9h':98 zk0uIے̲g!'-aZVZ#4- 1F2o;xwnG9x+zEL$njuSų wW2xs7W :gttB̰KhdE8:ZJ$B338cSX).}ɁxlYoD$ٹsUek0oNx_}e+R5X#f"{|J=a<ꡨ^Ryh)ADw6q$Bux"4stzNPuM#=b˃M Y6Aֽ2I.r`yTb0i8ɂ&]ῳ{ T p6-G u R dg/q_>-*Nrˆ$VbG~{ĪsuÈCT廿<ɀe8<8̌ߏMm*Hh&#4zaiz3<+#=&CD^L[<2,`4"Q(M' N#/Աɓ#ƪ{#3޴U6'@*QFa :qۧS;0Ne3@9Bϯ83Pj[MIbk ̘;ٚfn{Fjb#4ƙc#45"0y%$d/R4ʛA봙 b)ZZjd3ޜl@#4j#ޏǞƈ~/1oGg `j0#0r'{h#xqϳ+#4ˬd.v{O˖B䛧OP8>F(f~׆#4e‡~1.8_ s)_g%!oH(#4akc5#>bƀ$I"LCux]>8reD8uFB'k jNЈiu4!yzR'X 'Cjr3T#50Cu Cgx3q8ԾN2U=G9Ciw@hWN YNrzRKX0;C#/8dGqE*4&J=I8Q[3%gϪ2c/X;В֒HLX{b*wwb1wۺ i $S$6X@.t5^iL0$ueY$إٙ6NP,apȳϯo{a祗MFu,~V^pp>e׮V1y!h\q5/^1LQ̎,S C;_7=mt1wNCtgmix=Nu3r~˕Jq)egQN8R>Q)A.$KaSKXG"Wd'imdǭ`r(!5/@)i#/,'4CoUt7 ,\{0!Z:qkլ!n{)#=N\$٧>$קev-gC|"}CAHc4D @7U#8{j+z&@}XIKщʹF@Y [qXxT?A>WH]ޖ*uRf.j#/~=ۧfr@{.l!#/W׈p=4kߌ̃ubs,~^zO/ǿ?2`U'=B'6C澽ʹ?-O3ʾ(Lsp =Z|g>gϩM:Kws/puwG@0` ۹Wgr*|kS~UЪ#=OT(#=d#= j=bmRz=녌(ˑm#=T1Ʉb#=4J$xEnY( xlxa)'L&SD)**TcAhJl3`[#='~";U`aYDޚU ~ch)Y. A'#=Dhx"?q!T* \!0Gc2,UFD?B^>χh!۫cܕ:b 1h.!9S0MC&TIM#/0L(eh2 *z:<_ Gc]7?23bjt(**|p#/P+z /r""٭j6E (s[uуG_GxCI]"h_Sr*Xv}?GT@@RLLQRR{dL#/@9sUS=,#5[q]ebz~ڃ0a]gt#4 !B2FPϦZulh+HDH&4_uλnD2f`JQlJu' |??'iN0(c1>q4\s6? gʛiL//# Σ(#/hrP& |J> @# /+2;D1%#/H! BGw@_h@T{9'q)5ޤ0X#4@ ؽv15md]73@$KуfE2qͤC#k n(I"+B1JvX678o$kB#A΂!dc0`?`@4c&!` z׫=]ОCNE>g[i>ed)UNqF*~dIJ֜DX'!e)aA~F&dC?G'fnC 1)Hmַ ߸lmjT$VLflŹ}(٭sv_gf*ᖚ&[tHj(7jnޟ*+#DDۏP#/U`uG=^GP0#/4 A()F2!&X~ߤ#4>Ln(#=kb+AƊ*${LQ!* #D@ 4- a(ȄP‹$J??ZI%Bg٘O,ՀϨTF71%0#S J}\|#4& ǯѦ'ZdE8 6tDTRƺ#4٤fӢދ4D@HLb 3P\dBD"'C`.<4h2ZBZjE Hᒔ)ih:#4$@ 3D#=I"hm#/HaPЏ!)C2v#=R1 ^L7,C`@ \GNoj*J;tC}Au'#=Bv/)x *ޤ~N+~J9zn)fD?V$>o^V vF+\C L*(_k#= 4ۖ&I5IԚ#=|A~v%#{^8#/<> mt[u<#gMu#=T"chDb#=T(yjEc$i4sOn=#/#4!QZi#SssV@dKr XA@SV9%\Y9 ==@}'g2"VJ.gh}A+ZZT0P困̎c-n3&#Xpl~PKԸ`fzn̘b6~ Qa眫GYeL^=(匝^#Ohą0#/~SoB6W8u&׺JH?6v@knAbJICon)>QCe *CdǷ#4LUnd>D4z`4$L I*EH&1{UZ*#4OST^}?E*RaQbI/>5Zק8pi\5l|#n԰;\9.9Mq%V~H\B;1}#/he~{(2JF+0s#6 t.M#4#= jIs^@wVm^HP`(UZ &"KϨ`ҫRpm)e[0_I?C]`,Z69NAOgp2rlMj,lm*U"&8^#=] V*r"@0k:ԱQb,lmb ;h,6 "-L0Ȫ4?Nܸ'9 #42S"PE4B#4 P1%!BA-%L0HBUE2B!2@2D%JĤD% 4)P B@PJ¡(P M KABP 2P'g~=+f<$IiK*eNwK#4]-a>E*UJ#/iQTiQ#/C'+#/;#=s\ >O擡4&`m?^6tO8|3`niBHMhyD@q}N;AB\` X(i4PD90lg >x>'> XTO!z!#/<G7JD&C@p~BpiMS~,BAB~nIÅ9| MRcwNF?CDcsftw'6g1]vp Ŷȗǂ!c3P`9`,#4`"$sOr~nXlŷG1869 JL`)Sz";ZhWoM#=?٩=\تsJ=(rQZ#4xv|zXՆ~}Kh)ԯwkR6uLhw*<3?3#4f,giS\8*!4E?daJji/ ]^0>0'l'q=2o(FM0^(!<Ϳfu&#k`#48XG='PM Pbt} ܍\>ǿJ= @6#KA/1+#4i6ĄUxq h9uѨُ#4D!>tLAӗf:afAAa'ivurc9|©YU1"n (GTW)i¸:CATUXÓЁ dd)Q@[2QZI]-_:*;&*UjwďM={O#=ccXΌMǑtLjW'PsX"t#!PΛ1hzarR%t7΁ M/g}QEDŽABLAKBPQ")=A"iՆIA& 'U4Du9)C0Hn=xѿӬd{AdnxDX49@xuMQQ LT#]lQ3_Q{* _p@HA~ey*jgClPezPm7}ܲ=vĂ|h:4b?UGQsz蹧DV064֠c#TNW e#=,'@`#4BJ"*E%Ե00XN#/i:ABh:,HR!ShlTE2lh@bSE.BJ D:}rc;oVP!6#4s6R".kx-#=A Yg9)wbQ-ٳʇD/FGci+FGg;Ʊ}/m]'џr9k>FHcјתA)/{1xp|8Zx#=aK#/W-_(zD-+m"4A6:X77t`p]\P) i(c;βwlОAٛ*M80hs8~gB0.jZoK.J dDNaHEa$;#={uq\k3x<cS<9u1|&!kzI?lܛFbey֧쬇RmeΣN/{/w!ôudw,8%iQbnwX.hWmD#/iA/7@םH$N#=^@jk_#/HGxڑ@jBfn.3tAsJQ p #/p;T3~FT:c|G-R`}(C~K, <.'&zcLlOu?#4 M aD`I]p%#/y`/jU4@D{llEWcvtef;T-[ic9d#4 HK!իY+LѣdChCq:I [L.=P'6]DvuA7pA4ԇ]$/(,\ˠ zKü}TO#/3Jk_qٵ7sn72m5sfR9Hf!њ"1w(1+yB0w G0&h*@i* i)*eS ɪ4C@6/63m#4MA{:y$h8h#48z3Ӌ.\%$*ɇA >07N뼂2!2= |EGتLiօ)h&#=&B%%S++Fҏ_tKCm2t#4=SáHI8mnqEG#=x ӘYQcV*-*¶O5)I{EǙ\rKPU G`5]86;`Pd"{#=#~r?>;y'Ӛ!Jtd02vI ޒ,*@n}H^ i&lm(xo 娪"oNM"TŊ#=:!˥]#/Ҋ Z7&];a@c+@8##/w~@QI}0|=Cv>{8|H#/PmE!}#/|M=6p0Bpt#4h-E#pLpN2sF7 M qG$!e8(&?#45˅_Eh%#\$(RWl#4 ճcbCD)#=((a\Kv\%!!̇8(1F#4Zq h8x8 qO@"Bm)fR{ s߫<몘Pc5ɶI}a*&tNYOAE*]͏̓BX4d#Yox\51'䤂 D#/;N8~7a։B)W-Hu' )l* “5ǹ!3q0]g*Hn;F:dʼnD]"bz/Bz̛a rc<#R@zt:݆u"H+Y4tjg7\#==C}iaЉ>E1]ljl&sb?MmM2bA ڪ;Nf\DrK!?F\y5#=Ȅ&OCTp+4P!Eml=6i-DMbD5 @d@MP l`n mЩCY>F${UhC5%tGPpČ$^+NTe;9Ds_qwhȐi v^eBiaS~:q[J<4L 0AK`9HIh,J_Hc=9A(UApn=3|_'׳rZLGVnz.brx,b,^WHH"" `4T,#4|04V Pa?;SKo#4ږ'NTNw6xr#4aPդ@@<+fu 5ahå570M:: bGUrR%^ٺ/#4#GrET!#=Iݓc j ө߁u; 5-$:D?K :.TBW`Hv[k<9*jk:+\gAm=E<z> >nQP~,' ?JJzk[u:M "a($GD \T!E硧_pF 4%3hU#|babsCʌ|/t'd#/ AWOoa{ HkP* "iA狋:xx$p~EԤ'SG"aʦ0Oj.HYx"$֥#PVF'kpG;%)`N@!I!4QCBh(҅#eb &V9df$id3ESJ=0vbI" )D@"#/2DQU7 1#=#==e@TcHRS#4pnICM̀PP8'3B w#«8GT"%q3q 1hLPbduD3#='T!ީ#4܃]1&vTIt#}1Ը)N5~#4!f>@pwD\źABJfPAψf`5~_aɄTJO,980T1~ LbL}ten^[5o& m@r}[%C0(cTc8cgh5 wktүʊ#4 (V%V4\eNYWJ 'zɗ&xrT߀%f'aGMG\3d%hNXym;ݞC*Y-}ܶe$uzqDkV6My(OA&?#4#=[QF[=1Ks֡/͟ީa8Qj"#5I¿ͱ(EsD5FGP!Î28u) 1ܚf#4&j-=Q+:5#493JAsZ5A8T#=$#=6UAɉ^c촣C[ozXע巫חyz4t3WH1]4d "ik IN7Iwwrׄ]}RV5܌2 orVc1WZ8d-(ԳD#=He"y@s8d,zi3n5LK(h2!@L3Tѭ,୉7G!>Nyj'U(LnҖ: ,4Օ-=piȹDž9pqګ|ES @4rtN\9Hq^4D5.XmC6 Q3,:1tj62EҌcr#=v15ʹ`!;Dr=Hy+Дb}l'Čg#JJ o'n ׾a̩#46ozXXFB1Q0"4ޛ8 LO+fGu_ko#40*]&Ӭ:A~#4]aL[!fsS; ^9/yPL==3g,-ۮDeέ _#/VtB!@x8&#= m֊ dCgHH y\ rb9. |Q5/&<=#=R'V,#/l5aY̽ Э2(1)jѰi lQ#4 )YSyH;SZΆVNDKbI;51:.@zHM],Ȑ2  єuaM$ͬ럏ׇDaW]jg#]1dɑc;=8s5!HTN_ZW|'C_BGuu#4 z҄|8\##4, ( "#}5Q,1$HME@ J'و[0#=TЎ@2 Ay#4#=5Tb)"l;+AwN2\1&'LIg݋ݭàϕ(*݀wlY~>h$bRƒ{3żƭ#4nj&sm5vM 2j~K?ozZhō>(b? ?ʄXjҥse3ԧqF?mnE!N،MHaCgn_"QZu=FO~>DpAgz1xCL^#skFEm'Ӌ#4G 'sE\7Oo73Ozo^Ƅg*pz#4]ݗl+L(#4KHc٣74c)={%{Bb^#=e =9ܚ8u~{c#ƊH_WJOfj(rK8 Zq_lEZ#=&OR<"֠}{i<,r~sSJ'Ҽ;oFX^!i\|!c ˈ|U%ͲƏڅL,֧6ƍtI8LsTa1+tg7R #=њz*)腮X\ZPgZBC]jͮ;QDW0έb:]DKl嫀X>3$9[tŏ##/2hځxDFF~ϼ Z)À]fBoСP8(vڃ6~9>˺S'Q-ӲM2#/$Nid,LU#=beg#/ra=xpx#/,\-SۆѡH!^U/TB#/B8!}(:`Ԧ2/!c)Ot~_ўuEz i2U׆~mҘ pXV={ !ho,hYe#/z<{:B}h&{VfX`; xG#=Qm뒕&dWï{eU<f- p2Y6LzeF4;Y0P:(=^C&Nt*zyJ#_ڨBUVR #4AQp l/Y{:Úvܒ't$iҺV$iRk׼#/D%)>wUuZ?sQ/><!hq:WUdqX(rY霒:NYŨ$Ji#qau`bxc1\̽C†i>1CeP`pk[9*_8tKJy\M[=X|xIH\Z"j^Y:j&Hjl;<l'/!m:i8E+Kg| Z0['7Λ?z1=ۓz]n5:R<}Q*]zTn#=b="#=n-Y[CB:L:aD_gɧJ#,J)M뇺y~iTfw̛t(w\SXʗ\EZOٙEy ]p;j4s3o71nkVlWw,]Nk7#4"Xt/RY|<#4B'QU❁9ImK(v)ÿ3+$vV(X3 PBitbV96y:# Z!$UKoyP}3zMDv#4ܧƬ=(|l(Dǣu"8B3gn]I0= qla#=`pɍ0mL<]=,PZErl_8:v5h(5hn_[1)iˆ+$|,I`sc8-AqT5jɊwV"Anvo?7 d̸&0&P]\a#3Ah&rM萩;O Pid#+``İJܻ=˛1 v|Ze61;,Mc~8B3&2{E]yQ^zFf蒋¶*mvèC#=Lr=5wQ?ND;Yuy)ʕN>6`?{UvW9' ug{߶;REm$XR LkF\h1GmW{$Cdꣅ`.D6`M{~o"]ymc9205͚IKv!O}LC>"':n](t %,pxu/D9s/na8]c N;$>٦e}&R%Eْ0֒3#4z [B[%cPò[#=ߍ=2- I\(@UoVm*a('JYmb U F#=cf#4 -|BȐaxb*ɇlfˑHa&Ĩ8"X>×Z0nR9GS*m_V\TNRUr[o#=k+1XVS[ڌbGdr5\c<%IbﷻJ]o6cT7Hfh1zB)H^#=; ]AGMMl?\n +]LJD8puψ4.ÒšMz)-ݔd6s#/L$J3\]qR^RרiZׄv&=,]a&`i,5{t+Olv4A"$6baH#NhE&!UP!M=:$לԤmDun@81#=ƇmeON!\LbLɜY Đ>XC𣟤 Q{52HM&]2qYaJq5mnAFj+F{e9=uܙ5/#4\Fh"/VKҔe(OXqN:[p֦#G}e]WDf`'e.͎fSeQTJY2g.V5_+7I vwfgmq;ls5cc.S534\VVc1c7 ^29HtsXv &*c'Yq#Q"ʌa''B|HɌnu$BV3>Z]*31롪t™֎mnMd"P`F嶶\"\\?f Et0PQ$ͩXsni`W^$" M$jjMKH-JʇԻR ͸;lc)>gc'Nݲϣ?nIP YeK2zեD-Ќq'ʣO58 -K_1o*:޷~Wy/m%/Y; @B:fyd+be-#=f9Māw!"%@8>WFnm[t)ugHp`Kv̪,2j41Nnᐴ6ܭCJ:5(w#8aY{J 9]P*=8veLo h#G L%7zwA0yG~EϏٛć 'Q #4֡HO3em s`[%8ɇ]] ,#4Y92(Z&hc4Xۥ#=֤Cxc#/0#4[224ڈ[ xfx.BJ#4I{L0plФ*Z#=JQWJiQiGzP5dGrf2.BtPmmه?Re];ø5fI@К5!Yxα5@{-$89CR4Ӎq.C\8`аj:m#42#4Gh,#4'Xc+}OqxfNGbg*Bv9#/t#thA,ȪF=O:uhY~/h=iSzw1Oq-.I9dPj*Vxz2k#DZM$36Rr:}7#=c@y#=+4Q0`IShj(jpn'6b8(2K ƬDf5䁲?.CP#/Ԉ@pi6aB-j#4C`2:#=Cd3˒T(Vďgc'rIdz/RvHdH₝#2#4N+#DXDJ )ؒL9hT`"pE53J&I,!=ʼHKɆBL01L53#4arXa̘3I,ٮVp2r75 FYU#81 \%ʦ $r,`:m SrN jz=㐩f֮iw7yXpĂ3TNc W#݌K#/D4@T̂R0&D LpfP6[1^K#==C3#4p=@R@CÚʰ): LN>ʝ$#/MS¼{>#/P1 Hԝ CE11(Pwg>*O#f"IQ냺S)ζևn)mӦhRSܔ~t~9Bm8bbƌaX- iN#4 ^9!;~#4Xd##/Au݂#/D#4M/Mgo~$= .(^>N=POimwq,&[r<[T#= n;P͓/(y;+(ZGCwQ"fTˆ;^P,9k)w4bT3 f`B]Ï75C!mr$?ztΗfrJ*<ɒA{ƢY8t]39M7A'%q!Zvck/],k{;SR%62bZ|ÐaӜ6^|5,2a3}12</YIӞ׬.!!eN)Flκjtp3sBL*,;y%v2}cy>ӃHx\PKn/2ն֣dΩPkzyUv{9]Ft<]P#4Wu]{谡\){y%%(I 4&6we:; &{(R!_^Jżx~7w:s' ]b58mkزg:C-.A9CK޻|I6D*7NӋsE (}ԤO#KVϡ(ZcLXs|9zsQ" +>dl+jM:y"6-յ"Mk.\fCڶa𹶂 nm Ruˑgk aU"9]{5d=L0\c8UG==$@M^B+*X]Dne@yU: vrB5cC>e&%Ihv9eYvH6*Hgœ` lw[1 HAq*(n:GXDm2=6S=xZ::1S1C3ѕtH gQ}@cH]#/7v*#/R'*#/CuC#Ƭ`)`4l:ZAA@{vُ8bPb#Rc4׭#4$CT478;Es˾M#4Tke{k^2h\2#4zL(QA#H7@V8fib6d"]Y#4@rP\)AaPACF*RG,}gw0D_Phͧ5GhLHVCPq8q~Ћx]aO#=#=A(hs#/T:1#/Y(<@}*<'Px#=tiI$v~=}-S&w93~0zX??BR/պL|v:lYNB]hT긷'F٥0:ރ¤њ⣌+ a3Dy]&|\e;Xglg#d <Ď+@f9'ygNTuV#=-P']QpEi4n،-;#4~\s2 Nbi0*kFCFf7ܨkGYi#=d#4R![h snf1aBpmtڭ%'S.Z*0\%H"úK}u3fE^~/}d 8Car[(;  "3wW~vD0nRdGn/BҨLy `ScmC<E* TLiH#tY#= a6n(V@..X:C#Iu#=bH0Rh1#4I]0Fv!b '}aHb^8cxYq<2b1G:QV1ʊ"4%nENHc}\qa暔>3<a2-q7:YGhg:d_PYxv㼷\r_N0ds0jCˈ#My]7g>RiмQ\=Q 8A`N͡>H5e[KdӘMQv2`=m,!4s/0ط*.u孓#=w"QT#n jrK18SNP95ur1D߼=`k?'B1P3#ݩШB&ñH:7$Oʠ>QC;^Z;\(҉0 0#/xʯ$R PI:`0Xgࣄ*h^d1sa(ly7ۼN#4<-)pt#= ÐcIA#/}\1ՂFkA>#4zsbrI0hm#hh{WyFnS2$@GBzˮٔ 2C5If1GSl#&tŖ4ꩂAJSC :%DQN+ptOy*b#/vJ#/)l qCW0O6]?Q/t??޸^0#/2QIKQDDEJH5LB#0 C.F2? Td|GQ2,J`j+3"?8OIz -0[RC#/8~h qي!na#4QC8xA?fw̬V8t/Ru1)#4pd}צ5T>[?5x>akZAYC#= s#/hKd\BP_"#/B)PFdx"*Kx 9<@FF~ ̜{SEe8.#=eHGb⃨SKl@Np "c \:i=l Idc9ҀL#/a5AӆyXqhҠzń(#mf6|PII )/w'LRPb9B4fXv\ p]$"e'6q5TT%-=Q0E#=ѨUF6JLP@("[0!MD}6SҙW{pC#=51)$abi~ϳc)4r]ʣ-d(#=PaՅo*\LAÜčn {i@!~tmHވ(3#/M3Gv* h^|dd OFuACIAE#$JJL1!$tM#4"EE쀘Z#/ I~78HEtAzuHGA v ؐHW$.|dLJ,P44PD4$#*J`hR$#= ) uPSSUU#4$ HD@$PRL$DDR A5@E1-I3KI0LU$QL4BİBDD1IPDĄQMRP#4L4ADA C24AHDP$S"R T0TM#4D0DA1L@C(RHR#=J2LDP*C#/D%$D #/T a"8HXT!)FePCH<`F#/B"@(J]Dx͇7=3r"|]\hL=~ yur3`эg Nˬ(k#/Hߧ0dIϕ?<v#V7%ʉ8щ5HQbhfha6Zb*v24-UT)UEEUj#=Bj>E^&X AV0?JPfJTQދ_({$I{ ` };;X~*UF#/"fe;bX%&|R5.2G#=g볍D ,;td^'wS>9#4܎s:*Hp13%I)$/ #4)A\ y2D@e+a2E<ƚx(ػטygM84&BPR-,/d*Z(d-%hsb";Q)SYkuaK)ɆTkDm|;6Q1sB\7@c] cDpl0w#=I@GWv Y-1VؓBgGzFK#yPJfؘd R@4Bpa#4C܁ZNTqSҚFݾo{,Cd:!I03d TaMxHuPry{ CN8d\&ubJ4}+:aEf t` ԼԮ9URt$$sDiqMJJOA5QCCp9d`TgPѡ۱;lV#4], :u$#4պ5MqwSNղ,8toQzdnPi~"#=hg( w2L,<(*r1Djx&a~OWMa#=c"PH Ctܭ%wyb#=dZ",#/Xb5ЍGx̓ rN<{}x{X=(y}{Cv2_dcd@j ?bSs-(DChvMHؐd7BIuf`Y!](]wJ*mkeKWNbdB%zW7&9X;Hk@۫yNGVSSUcNJ8=lv`13;j Fg|>>~r؞ڛ>ǜwT@f#91 F4 ANA>1C"޾򫲡FHʼn+C=W{ez䷪Cv^(eh! !1Lu<9|=K096#2ߥóZN|t]tE ZcImsq&߈&&Ѣa$h*Fclhc#4nKO3݂IFPceO-5hhJ{PDNq!r10dɐ=M(U"948"H (VIJJD4m!KP+'~'l.}ݺׂy?o$x> OEL§F#/p>;EPhAW+cwd9&)BŃ0ҩM?kAه7ń8(K@@ 'Ξ|]d夶M#4Z-/DUXmjO?VG0ECS,'Dseh-hHuΖȋ5GDdimQAs(䇜#4mL-.AL_n}[IY%KO+#=PPE#4TKDHT@h#=` d%)`iL(JJD Dc@PA/`äy!#=s(R;2}8#/";+}]hC1(|g,aW#4ѥ 45dle؇Jm$UQP)B9EHgnE\Cp˵?p@DPMUFp74L?oO%N!ʡy8sn)yȧDNj(a1TMsjjH#=J&f*`V#=h*%uzٹ?Bp9!h@#/`;5TӵWj<#/f#44Hj= #-#2Q#4aD"#4` Dz0X57}Bgs_!5bQ⽾%t* doغsKQ/:jHPɇ؇3 l~z|4}g!gfpX]{ j7@p*]ѻ[v1PnKBt%'FI>l=6vPdI#4#/Ł!_9{aLECLü ya򧴀SMifH~\H+H T#4  CQrTV @f@# >3QrPJ@"PTv`S@hրZmIo/D.A\CoSOprrRz|E8M! DToNE1bQPyn1W#+c^BWb+aww!|8pO'sj]$H!!GPy""4ĕ~8xz$F,Ž~l>5B5ZjN5DXS?4hMuIP@upAHwL,t|b DwLO0Z#/}AՁ#4ȃ3Azz~Kouz=7~sA3(}#/R=x)FG֤aXC;~X8[{')d%Q%q زBt =ȟ'EGy5i55V#x+4&0R(Ӑ,tE<^>B_-s}1nV#=f<`+'=Ip,4,b#40Wp#AĀg!G_?d':\MQ5(59cg[#/1lsoBnaO 9=F51#J0]ZX0GHcY<,bGqS4E;pK 6pDV]^i ZL:G|m!(i+8chk0vN G}F4zK$"rGr֢#{%y#%pPF{;Ɗ#=Ye.z8MD^7Wۼŷ̥s݊bhNm6rO%+`(i#=";&zuRWsӆ'"!b(T=ɡ#=lˇσ4plm5N97 dFUK<;̿)|:O5avkݙM{]vH<~c㫺f("[@2 rWaUrA!Im_ x:˔I*"mD D 0Q2#/D(=qeK&޽#/qzʃ@E_ !,`'!ͳ>4?,Qk~?/eI Gg`\P e qC$9'C`C;KR&1IpzƖozq;yI)/=>li5z)NA5u7B@)~:`P*$V!J!BdaD40+@-(#=U߀% i]`SLcBWTִ0$KB4^B#/bR`p}NlXR?5Ad3#/J\HGl u.KD)B4#mlkNp-:J R-MJfu{<#4TXB;N?+#/V衁9ϼP #=%U~~Tt ;'Ui #/U#= CPvkχn~<un{F{,rJ!5z%ؚQ&Y-Hbb %B=ro9ğ5[MN:4S2'D:6~7=]h<\©u@{L26>76$[P9<@E8*j& R}ZblI@$BAshhh$'9{F2b"* `-*fN׉6 RcpRԀ _!yktkB|J#/mfk#4x'@$O#C /h_<8,mJW &a0[o 3/YRgPcWr'TmL>4aQ~v#4w2\ '-ɇqN#=|G(`t2[AarNu3:##4#=#4#p˷;#=fn;9$x_41A(!Ec,f =(&s؂4kW#;hx+Izn<3\*\L▕栧WPG3v#4.xwsnv)X[>RqS.k<uIg᜜Lw(y!"N)U!D+FHowltv*iAN@U! RP|iʋ'b`aUT~yrv4: (8ȊD A3!^ޱp]1lÐij YyHOt30Ya^b~ueyyG?qLo~^PۻG#4jgB?=ni0:>3!= pd88b8:-N*4E%dz6,LA 5ء!"YlR$D'3Т)Ð13ȡ¦tv9`bڄƂ^C(@"OVonL%ttaD}r#/ iUфA;a!*9sICCjjn #4˚z uals,̞H/~y]L J%#4(&|}r< 3: _H/R @RDMHSM-PLQ)RP@R!44#/ATE4#UDKKSM#4 DLDHU K #44S2R4+BRUP!@SIKE4-%2TADTPRJM$|DQM T RBB@IT@UU DT2$A$P4RD$-EB%CJ!(B,"%E$LQ-SP Q0#4E13AT2RI4 RUC#=DQAD5R$*@HP@? ӕM1+.Dc?<;sߔkp#/y(=ЊR_, S#/Ah@1*Bv8Pv~; uWL)HPxyJ&!H>?VD{{}#=kI$EiMR)0AizQ-DħL "#=#=h!imĥ!4AECJU/#JQ"/q85)T2ELMA%{6E+IHIyp ߋ&~v/&hfOvyCAcagŲ"R#G #fpsN0Ljt#=,LsH>#=HB#=r'x/YΆ;#4"/`^߽hFFe)( "#=)"#=)JQ#=#/"M GP 9+9:C' R~I-G4珵kCa:C v9;Ԛg5OĜזoj̛3 L]8iTxYG #=N6 8;"K$- tC,7ٔuv$hUd8R 1&>֊Թ%caJ0Ău֒Cs8&jR#=HD6#/ɰJ#/=-`H5EP_/1ʘ$yiIȎd % pGP@=^i1>9@,U>y|=fJ}r)b1pT#=s>(#/[1i _c-M|<ȃi,1p*z:4~3~D)GL`m4eA(ybp9<hvDEL--e\0H2dG%0<򞟠?a53j10H1PJf柧\Xq%mPTAk8UQE!BUVaic4YĠTq"zCOC)AE5(B& 4JHBE(DAT2A!BLSUTHTJDOu"}cMܲli#E4TG\`Q(-AV$dˌlf#=cURw:g&_›j*j%$_}K2CmzM/gGŒh-wf%յ!Jzƃf<!eR#oaqeDr{.XoZ#MK{Z˭SC%#=pܳI$#4Q`hZu4q!4:urp'#)(ox]LK~%Pqh,1T[( M ]8,L8C#=Tq@YuNO^=Z&<| ihiIOڛySrji ?>yb !}*ŝ׌oB]Д(A7RD.r= ny?>9f#4l~ȥ'!9'uDgE{!t9R9v#=FǪnzz|#B(ѪMR2-R& 1/|!ɤ9#/P,fy̟LX'ĎrnLA3Mp15t0tɢq10CSN!$}ىJ"0 ]`g [X,a6ɂɧq vsuo+SW"h;'qpxqE8#=r6+S6'>#/;\D#47HcMG=k Nc%4!*\'\);ܠY5qbnWn]XGōqFbUA#=# hT.5#ۉq-45dEv*ű$jԏ|gGۤ;O峝?}m8b/fGq{1FcJ.W{e(2n 1Ct\Rhly|諡j[\4Ŏ*&8Ц3g^l%2 T#4 c<[6|pp;C4ˤŪ$A!4A'4i35@+`!1%Q< *fnF6~LWiy&uASUj~H/q#=#/w V x]0z. K!Ƞ%0 $b]""$qA1/_:A!N L~,p;JII #&({CDZ"$xiM=TJS8UNHi|>69pzס{Sĕ]Auy>T(J"$J, ñݞ=; ÔѣDzj.Ζ+sp7BZ `#=F  tȚ"z}Хr>J}WHvJY{,OiwAAIOv=k:SI>(g < H6Jn:A,7 Z#4#/R!;. {滜#/ P4]K *[%TEH$#/>L8-%%DH)JT`!h#/"Q"Vj$&@#/faX4s{J*UL?É 4P@xBZ%M#=iJ?w<3Ӧ~-E߽#R b$Ֆҍ \XM!VF#P!XTR%F _6N^BѶ6ڎg&+6a =+F#4t9`keZNpZ!ps3L8`Ď;4pvq+do h1U7.fLccYbM-%ミ0䨝30xp߇s1l{m9\cKQ͐Dc$)@ĿI.r]Pn1v#=ǒ5+h"]s!ذ%3%#/kk|]`vz.(F+#=GIuv9v;\B)`G9#=֪4%9!L 3A#=x2> WY=3gso$D?%a;#=w<0=ϱ3S_bTL.-}EPO#4͎k E6,+ _ǿ-6}#4ˇH;Q,NM1C|IԁIY؀;h@]xBއPCn=ʺPog#/l"~8hG{Cip2COӌg`uHTAA3ٷ1"83 q>~+o8?PX~gfuӒso-C%hld^ w* DSwVط#=0KqUi[Sbu_Dxi㙉t NpPh0`;'H׹!} */`*`OQqo-)ǐ $0zj,8_yf IO9g#4eɸ!>^Uaebz8 |0z_|\]ʨ؁GEt䉝1)L:6O%#=:Nl!jB9%G_Džx?ƚ8#/" <~}ƣuR`;ℒĩ|GCPz2衊0LKCsSj%lᓁ3$#dMЫ') fAb(J00-,ll 2` 9OTȦq'VE 想K#lmuyTV"X'6" 2"#>zZNӿhw}eZL7jj~\T8d1 򯕄#4IܡTy:wl:WϝRppK0?`lqTܔm>)=X@#=#= 0#/9.'| {9'L(_ȦhJI\ASh&pP`>Ivy( 6Ӑxꟊ8!u0O! 1뱈O#4jlԭc@7g?<-40W,@U7#4^CZ)<cEj$Nupa"p\aCU&St`̈8'U?J"&BƛbO{oJpq o\J>nz&WɃڞK&~ϟz7#/$D ;U : @#=vނu8k%j|z;qad%wټI!E'0s1D#=Srۓ3Ί };G+Hk3*3gdNAl;_dt2EPoikxL{Vyw#4D)aWPbUUh_ Nv8~( 2bw` AҔ iO+2Z"#4X z@E'Qޘ?O-h2͂La5$\QAͩQ d#=W5JI*r G{?#=+ @bގq_#4$>B3@#yrQRy%&#=4 JDAz᝟UT̺۩d‘SU#/6,w?oƿ1~L)#fH:X)\#4Y=R`4$^\yjrQTD MN0tg]X$аeX>347ĻV-Mjz#/٬P!Ō!ӂk#/]ssLATOu0`sYȱ6@8r/|rpBhCbl |tGRz#=uNfh ǯP;*X1h^A &0#=p3Ǐ{ًZY0~긓*wv9w?en.z6La=#4##ZǀpTan?EIMi&@O'af!/]H>N g$z~HP)HQ;+>h &:x`t)¢i\\#4vx;n;znwln#/u :HsKL>h+Ьhy7¡5:eEH~~8h@pHY+T[L'ǧ~kNRW{(C#/ ~d=} dDĠ~i J]Ί#4<7t"quj- @4(P:#4(ʓN#6"#4nKHi)3W)]4"M AJ(P Z@Ҡͦ#= ZV iV0 TP1'4B[\7#4NJthJcM/5E"e-+`#4w>HuXܳǔ4P[9Ah#/MPmzgAF@ ) h6!ȟ(s`םAbW]ͳ!Y$݁(Ԝh)#4A#!風늏M4$B%(Dp)AE8NudBj}FnRYPQx4BI!fBJ#=#4@+'"cfx#47#4kHZDEj!P|Cg?O}53ėKq_#F9mݰ3O!׼v4. 쓞(~ Lɡh9ßkԥ 9qRhM(Xn~ŷ_ 3ɆSLD·Jwbgc˚6DntO0;2 S#=dU^r#/笢iNZ|^#=~Xk_~zЀ>Yߗp/),"} ۻ@=ۜB^h`S9clbט:{ SN+yw#=hi]ߵ20msc:KDmޘXwKF`IX1e$T4ڠe((ilm#=)W=nʢ.?qg:A-0˃Ud! K3A(F(hSDlFy.R0l-%iM0x{)X"H1LK:0dt9!GԦIp)jR2ZKf bG3IH +ͬT}f=#45%Ũ˲G#4?4(Gs#w(N܇^#40mQoVaN=)F<%VZRZ{H>:s8ƙ@驈N١d($ǰo$PLAV0ĭ!$ʨƚ@9Y d ^J#=qc6zM 0IטThPUw;eHA0mn%G"0^sc=d;Sv7*4v"`Wj#pqŁ.TZ3nHP_#=4qm7JU#=D=xMD(DY啙5}j`_f#4FtEI䆣NŔlBW9!zSOhI{;DA!yDŽ#=Wk.c$00:2dec"66Q(jbN,H8,Hކ$uz@&dp9NJj@#48{0p<f,X;B#4dK+1PfW@ 1eh&` V *`""RZ&()R,<:$Sz):CM45Hs2 #4ƬK`"qD69k,6g㎘c[JQӘyp]Tp+ 1' TMYqsF'TijsuT,SvGv[!q*HY "|"q͢ h*ۛ']}%+tpj8\9!Q`9ktmCr&]ߺaGl|XdhǶ܏>2jgG~h<di8[8le΋*Q:KWLw*b5Á,q#4+rlU!Fzⶌ#=D#Oc4:]ULV7sÀ`Üa +u8yxIT3T#=d#/EB#3z_iG3@%#4pO9;*hSD3wA"'"8~mHOgCf)]>(f8ȸ~SV_<=Q{jFcm_-WLgLXTְmPm=8(l [4zy]?IDtaBvT[º4**m#{\a쾡4!wMA[b5%9zUߗdBog e8 8 BB1 BAp0D2&&E?A,GOά{n9QAjZҧJv*BzN;em_FŤ#4i ˄Ѣ" hYOiQP4j~lP@ŵË)f{^tQ~r(etgM+713gKhcKza#/i֮r~xEրzx8yMsþҽ +ʃ#=K4*΢vZHR%ޱ\o#4Gޓ2a%QonAoz̷fǫr&` ]\)\G5o>q9!Im#4ej*szN` U]96͌XFǓ{Q`k#=E*WwtiVvj*,bW# bcoqm9Co ¬o~z@Ɣ"Xw49$w`y@'R|#ʀ* )*vW>xhj4MF66#=K c 9ޗKb(#/bX3N'NlRCn=T-QtT#4 BJ(4}7ЪޠVHyM@#/1ɣ+SLN<6QFJxhHvZDlSS$I#46-$,qᱹ͹8CCˌ h0#/2S9!@qV-[*9<$s#/Pt:F)#Fh1*Ib&0O,*Z:HU LKIC3KlB0$NJ%JBhC#/`|\R (M*#=XnO5nT8i@Y#"#D RZ#Fc#/R&vŸYe :}Ÿp&#=EZDhafCD$8~tJ=#=!RCH&mc񈦁$)bTb.?lhWӴ_,\:NuOP`3L]HAR_ #/냁"@A3ONt#_*- J IA%1#/CMQ)DĀDуPqewLJ4iQ!#=#49 #Ryj B:T7q\v=/#Kw{[|f4msh[\t#dRtC{4fT02`~XHA$#=&Or%5ñ'˜9@1Op Ayk*I^J`J`-hmV:+Sh2(:Ctf:0|BՓl%"V ϹUDE#4L&Zr/1\5&hh2ixRɆ.-#=E9EIOMu@Ol(zzZٍm:FH۾Wkۭtc8zԆhcr6٣cXr#4pHiظ5{A#4c27 HRdfr#4JF"uZ+U4jYH&TQGzP244=9#=4^VbJ&#%گ rm2]{zh7rD+?<'#=HT}z9 (+p3#4il*ŅshQ9IC:BtQLEC "hB$#/)&@6O*;)U?W"Phh$EQ#4-4zù#4i>m@6Xbx'cَQҩ}qO }M#4+V,QDkqAŒ0Re0d/9KBatݚPdN+4DIlMY4m[va1hm286Lf [I*` y dIQ#/%A FiQ(JGgxZIAEiM&ձtsr%۰pns%& A1!4)L2s';$5ځ#=r78#/R !!{2:ͮ{KE!X#J҃Ҡ;sƪ4 :J&(a*GC w4D }R*%Ѕ#=iӧ#=2s#/A/$CApWߌQv~6`#=a+#/(AEGCɟq~ހ?h8W#/xc!9DX44ҥ&Yd7Oz8Bjq#=4[v1K8na=}+AP;HPXJ(fj ZwSED70]\-u}ߤ1(1MZ|n,olB*3U#/%3YOx()Y7O)lH(4TdRՁգVj>Gl#4'$:]#4IdO*uV dR@՚)mӱX#/ߙgz:Dtҧ%) |Ȼ jP")7zPD-Sc_w QTQK͍Gat"@d0$il#4[7kl 垞U@@4#@4UpyX0Miܰ( #=:8oTdt v#4vɭZQ QJYZE;ȼBwuT:nmֻ0P6-1v^Ra# w]X"!%Ou6[c#/Iyc_#4t`'Ln{B4#4#DQa!j4INT.6VIT1YRX4é?Dǁr#4U &g~ .Bk#4dXhXxwb$UdI+!eH껪_s{|_ݜ6}ksq?ΆH`7,YV':%;N)LYJ:6%Qi1*<QC @ N{~ei@"#^`*д21{t.%B쯬80#4pw IODF!#=AiQJQ:Ud$(*i $H("FF(% f hYQQ9f ,y꯯bfs  ~]gpa~f[jsNP*b)LJDl(xՁ#/ 0ҊL#=DE0n#/pTԗM;y_&^z{A)Ti聨ޭA(ߎ2B!:# yü.`2vX(rzFf!`~Dh*!"#4cG@Ԧ@<.{;tj$#/ִPd ti,BE#ЩetzCfc#=#/Љ@>$z]Λ1ɓ.zJ)C ZD"( P]>(UM YYhQTZ2qL" I@ e8zT"q4eh;0P}YY4@|Ԙ uf˟#=DY{.T!#=f9TL̇,NTRcY44?򶟝ۘVZ-eKbO0JN1IO?/<ʔq=$ @dNhL)$i6!n,t;=/R*EQ!Oˊ)L#2T,#/o!ABWFID>4UO @JD '@rC !&^&Tyb+EM$wk>:eIUM"Jp:CRFZ*I.#/F*#F0H(ѪXj JHdzZTܜ$ĚCGƸ6DҜ(~ϓXP!0 M4!Mmއ0%&QW:iY}XkI6{ Ȕ|s%)Rީm95YYƸ¨ȤD&6ڢ,:xVh=#=d0 Ad(T}EP=E }y.P`?dB ƻ\%lj#4t!jnY,n4h@P뗉Ȓh1pChr1!@5@l4&8IPw:CLY&Q1 P5 .ς#ٙSNiZbEa#44>к"}i0@sƊ8xebmSє@@z|Ƌ=1"5Jw/ό,Q0,qO~11rI3#4ms` ^sC=XFғ2)2.6ǦɖtXJ߫6X83SZSV@%A4ʊhUW[ƮTIa}#/9Yͩp)Ke8"XpᓗӉ=Ý&dlL Ҏ50h_-tEQ7|ͬ`v{7hnNF9rQ- j#4mZciiDR'j^G Y /3Pp#e7EcLoy3z2E#%?XC7v\J#4`h`'ѻ{8|:#/aQQT;#==54,3ƕG>YHDڮg%qG~RNݑ,7=J0#Ϧ_c>/#4ƨ;4P?!3"#4V$ϳ`Ã+iyȌiݣ<(Қy+o9_c2z۔[J|^3kzf7Y~I/)4R3E[NzِW#49ɠVR9)(-3BUaÏ;/z *dH37)(N{c*I#=ABH"$D+AV7g]efkGv|QXI}1a I;F#4m#xJ`IXwZ/"f3'of6\5`.Y5*կ[1e֭ڡYS'Y#/Tcr?-a\@#ѐ]RHL$i P=B,}J{:c#QӅ~XA5R2ABRC `R"NXVz[e]7=<[O\^uONaA&3rM@.JpwxF38'˖B4k>#4WzCOl}@G ;R67KOw}Jx|C5@PQ3$&ll( $Acԝ<g/aAqmz"49)pRSz~&pJ#40 E"`hSH4"*e)jO_+ϻɦGğjB@GC%||gk}!?^(ux:Oz')JHy"BH20!T~H4!'kdBPۏZ4j 5@#%{?)C? ] ;O)PC`;|=}L倕Pq%[(0Te`#15SfX[ݑ`TbM?(ƧyAȜMLB HeHdA{#42>@i< /s-Z__(ŗ4Z`1M>j#/2sp?g881Es|M|hPX8rH Be*uDpw,%d#/&qTDn+j#/W=K+f.&Dٜls|U2RN#4h4r Ќ Kw :laBO)ld2cE1 lN-XQv9^u`Gr;5ЩdƄ󴌗}Oh 丞R)rBua@!AF K)#VOJ؀DnJ@dAT\>7rAזIVwՐÑHstXXPQ({zUR<_wmBH!(4`;V-4cb- m2d%BLqjfuA>?&&#=w}>ҰÝPFߍ* YƸֿ =̬tRuCfE|`6Hrc4#/u4 +0qSٷݥp!"g W\rO$ZDv #/`s&J!#?!أta@pє3|d,;Br_-]7pi5D]%0Si4t 4nI͐)U%aI%%!B`<#4PzFU-O4$8s]A}_1y0хrIR}lvރCR%kA`}3a'&?\'laݩT:ѦU>`U;=Yi Lń{dL4kL1qHc-ezZF`q0 fF#4{p8t1yj#4]$.fFMvX)T@#=2J2ӝăɪ1[bt,ю+ M,#)R2јAAC@oUbMAk ! m GFE8XD&ȵAAa7eLFCW(4DAFC!6>ff˓uT:`pg [p`A;ӎ; #=HVI$#=O4ƭLX<(xз dbkytpPt~QnBPR0(pbB7cV.l BAw[:smX։y4ٌhl+y/#=Ƽ I4#/Qn@bU>#ٜǐyr{ALF4v]9jSU #=TBB9BZGICEϳ9!8E E8q5T<0㸍fΪC?O|^SMr#/S&REUB;ci'͏ɪ@=F}Ni%H 9#=Fj95ˊMQAOv`((*HQ#4HIQA`*f(`>$5QߖA1#4vܺsC»:=II$ a'@Ќκk;5bn!#/VicIr'+Gλcj*/#4ͺE1 積hveH#<70c7ahІ'7FAMgmh/MGIJCAЦzz:py]4%0ZS'$h")'U"|<\3T\VL6?8rrWO:b'e6B =ρNJiTX( bƱs)!372Em%)#VX9y<8+Ucg gE/--X,%wC(V#=j:URL#4/ :xOmInٽ#31d(ȚԘ#4"iJ>,cf]75#4;1Q٢^f,';x5mgMć`o)UiEbnr1!&.#=7cm ܽ9hWMGN\=!/12zkILJf+<\"똰#!Ʈ#4-;BWe3qϞبpcI #=GxH2#e#&k`QHQɁXh@\GtR3 'DXdj#4bcb[@dEdU#=L64$`F͏3zFM1P&j<~ 6Pk0#4q0kHJVo[!hzN.B|-KT'|ʖ˃'[({it3'y9#8c d1 {'YC)=[$MjcfO]\>?>Jp. .NLȫTGX2#/:I"lh65BT1NpLhD(SFR>[Ȇ5r=D=LywʋSCH2  FDD"8xd=`8N*8zB u[ 55Vt 26"e=;ApSjM@tT~OTXCA[TE.n%7pbƢ颶m+{z{#/bQRJZH #=#/(Z@`eX#= "dd"#/{:R4B@UHAG$?F)O,4;:)"Q0/5~ok2whz?n@CXB#=Z hh6Ƃ` B|RLT¥L$Jn#d@]]+ 'MM_ʲ{ (p¾_Z#`DRi&D"TJT#=$f@$#=8֐ճN[h?ez3b[\L> .pSnFe* j/2j$`2#=(-]iG.t` neFA=@ h(k XDK3TunCFhM@=~{?߯ U\ATQ'#/HvWGcY0'wVh31##/qb!oqןCEL7hgѢPd='L^IL;|:']#=RO0Zb(yW|}64 FEYNBP! q3}7#/ʜ:#T$؂1TqU!8Bq4W!dSHum5W2h+T(4,G_jwZD:ok0@u.kkr5}H7t=]˒!o)'ʥ#4z8%*o'`{wmHP-HX}4%ͪ!L}~:#/쮐i.B1)@M4A|Cs#H:{W.mQ A6E."rivҺ#/:@p8/#s*%9RikI1)CBbґ#=iXF3 whM|{L!B(g!.yG/QIrO{0A#4-#/J!:|OHh`=!̗59'H1) A@, !Tu8##/)%Ӄ:dE1M<}Vf}9G,D^6@U墴$SIM!4^5q#/ޢ™JJ`8/f~ou"D%銶vUf6h}oq) XPH%0̼5,VԿ[ #/P.hs$'ݹ#4'pV#4@NאG="V!nP"R&A#/#=H rQM#=ҠR&Z$`h"tGdu N;#=I4R$z#=I4H{DF)IiDZB!HQPbV&#/hhFQFQx"lQznZT(y}_b[?0|ϭe7g~}v0? ,~XoT8|=D2 #/x/o68pQ #=Д, Mm/eTH#423w>}}F֓#/` %6]rq0e "hHbHJHJ"#=P &"#/ @hZ#/J ij HB" F#=^O71n89mjRÍ#4r8Fy#NG%MUP:$ ݳ''wh#=9vLM cErqIjNMYH8QֈB8R9F_>g^rW鹌ry袙-^'I #=faI@ir"q6k ByB(2RH'#4l-hJy1,LۅᗐoBZ)8?FLfvIp8I& K䆱+LSc $lö֊vtpp$>xSڣARԐEADmpVw6 6wcEm9$"J8sus&5ΎhL= P5L\,E1LQ3DCBRR!S$F)cxK;!TK%ߩ%: }|s2Y2n?9eYR 3!yv޷"=?A5iw&*1}Q",tpkI̚y!!&êxj:WNLg&P=#2~9ZSӔ:8I2m=pY]:Ր"i3aDHKSШUw{f*rL?FDmm.M8y5.#r$uE5cn˜E5-dQqEid޾7QO#={#4VJy2J_U?ұ ]q1rPAwUXԃu[Q5B_vLfZR=N n>]mbRz&;MG=y2BǂV_LqɌvQEˇH5)W:l(#=XB{I(N1V;:8nz9JOw3?=~祮saB{Tʫ?̳Y)8s)q1\#=F}7-8 0=iו$cYeWF" ggwn,̦-N) "Eݽ/❎(;rZ~۸SYzds򙲯F>[)v*{QqnI#=AwF!5־-GU 1_qciw:YC)[ s14e!R*75S{;UGZ#&s#>z0 },$Ҋ#/9_vj_kgHzqm"N.-xQ2Nb9g&6)}3.p%wD] r&ݛ΄BVm&ڠn\ۘæ܀Y4ebf=j]6.T.C2TbԨx 1{ՉT88;JXxfnHkSscpקS%ҁ&T:xCWs8Qs <7KKCW}aT#{D1o0;s߇ !AC#0{zMw4vE˽-t=h})VQJ]cRDmwo'mR6?ZMzH_䱦{:*2\bŎ14bI[!#8~R;5Nq2srMs\I<$7YW1(H}#{14,kUKl2w]6dˁ7]M)}%ju9L+.Jx3ӻ׻ԋIW*$/! s&PhBNbbTNw#=Zp]38S#ʭyq1)ӹ$:Bhh#}øeBb}1A"l~2udu-I5s5~޸}"P/i[{7MC[x̨K!xgV0a ˤ4)vTLmda6ӯ 6%x~ޣVvQ|'iҧJQiB#qOL1J#4c?h'mJpxMAgD$xH$q2|.5:sa3Y<&^#=M&l=5F7][(OCx\&{&;8i·&T=û>N+^ix3a)S QC&%?/=YVtx ҕ5VrvєY<㷬3*%Tdʋ-DŽ?pՄ{_V(#=LPef6!B.}-Lu`~&JxP52q<-=]&U+1T?zRW(}L<pD_$^FY5#fdjY]e4RQ=xiQsWtKFwdkWoOpW4H|8S#=+Bn㊊qIb26[]]Rn^;+8xekM"D@)G};2&b1,q:n(%oL{lɻ#Dq֎dZDnolm8UJiΙuqf?zW^S7o3}asVq>Vlߒ;M]moee#iSr'JcNptw;ZCIӶ}_oKep<%AM㍞xǯQAALޙ#cS;& afPi.f#4\q:mZrЂGHGAvr^KvUG3k/BlvUJ:n5aqljr/ <&`;b{HOiu˲MXoc2$O类T򍾷#br#$AfbI/;UmpCsp.{Q={ADyRX֖;%"OIFA5yĞ5,vÃ[bi- 3l~:QTvvfͷ͖Q&ٌ*kh4GYr :nY7˳e7>ҚP!B5#4H%̘uVJ%ODLo=;Sf(>Ǯ&;D$΅Nvîm'9gc{axUW'sR9^#L~L:_:u7Zn,PA"3Fu㥼,nBFp`.-6HˡJ1ZWx6s~So8, e,×(t,ן{t!s?b91lsCK%ץTgϯێyJcem ۄ,U5Wލa3dZ^n@-(6av4؏e1I'I:k݄oWʘ|ruD0S0RNY` ^^r%ED|Vn'Yr}&ʂ7'hϋuM#=)bTVU>#=‚A1:<_k%[PߥFsө-);yvd?C3wT"kڹ9 BdV|irXZ$K/eJ#4Wg6b:U>S?#4)͐8vdh8#Pui*9*p_-賀uy,cmRz=]UuְGR>g!IsgE{#/ 8aHP%UTQՎZJ" 0߮pWƼXYV+$$PI^N)9yBwmRF^fD\{D䩡B4R#JtM(l"#4A*Nxc"\^ q8G! A`dw_.&d-dd4:_|ۧ/`wCűcKNgFޓd#=5Q6TT#4 Dt4PQ-**R#=P*%#/rtvI|aܞsC\ icT7l=ն0.ƒyArjX=G!b#1ә"%J;%\5Q!NP}5Q1c#*O)lIvM8tQMDӻM?"#4 ̣#41DO@y~fEAKW2q$CsBa')]R"pt((p9!A$(D cn#/w`H `:3LѢ'cnB~]`6ykA9}gr7,ƍ͹F!h6J_ܼz+#/ۆxpi>X#4%pEQ#=.ޤYdF؛fUJ r= чc@"MI[QF=s[NAIX_i)Hh'{cGa=Ww-Wϊ< yc=ts`tz _:_%ԥUQIVt(]P@T&&{[o@QJBE !%SP]9q7#=6۲.%0[a"i#=j.H&uD\LѦ,ES #4B)|:E'?g?]#=&f?0gKKzJDESE!LSPEAQD $@B"3(ЀЕUU$SDT! 5*I,- T$T"$2#A!AM50QMQ1A-$4RIUM%ERJQKEE4HULE@C4CԂ;2<Q_?F!/?B>H? 7h9>d9I2mN&s*{1owֶ$C RNػ#4P < *q'&I8Gkw2 P?;>>MDAc=u*ԚP4Ӧu@a|1 ,1 Q Š)cw=5oYl@zğ}8x0Jb^Q3Y$(\_\`EmPjf񟆩C|!˥0Y2L5z}g =BS&A;켃`b"(4>|.5#=1t!y>7"?[)OL>Ag*H=60(^ϸPPL)0E $Hģl,dڈ)%#/"ԘؕLT&5Б*PS#JT4LAM4P4ВE1!IAMZ)))0*iD?xa*4C14DT#t׾hڙ*b#=[#8 󂰰hf(}&Nj)-lu+4&7y;{ǥNM#KDRcM|"WLsv#4A{tOmnv#=E`ŴTG&XjyXOY i0ƾ!Us7/W(OޯbitO%#D0Vh~88E}#=% #=T(.lxŗiW>o‚3 r0,#46l`iK[Q+r,ߜ> g/19k=xa8 ^mJ<,;t#4B'b#4LH=OUG[Ƣ)\{.cDkDQPDǗ9E"!V4p_|ۯ短>5OG#=5K#4(_jGi~xyJsبo>*cz{beU"&C_IN:I?N{w#4Y>yE8 ?ߨbu#4;#4'KDFA{#=Wlbf#4^Ʉ:6q@P=#/y:϶+q#=P 9U%S *WxSWb\#=LCWy:^@۟HԔ+%Tp8s;Mx5t]d&?tc꟣@N9;U{& opu]TAuNMf:vGXŠ=ҠB019Kçӿ؞Vߖ}?Hz^&S'CBT )2dU6I't9,M~kkswɹ6lÏq.4+q#yk*EO tþvR;O=LkWc5{!lw FieYWY^%xivЯ,m+w_ɞ2#I/k|6 yыr΢V5ΦyU#4! VNMbA4p8Դqp#=`9}mITrC_9/amRiH8Т;szlܴF*ܷjcQN2ʸ$jP gP$ɌS~<>A,Cp&".L 1L;zEf-8~o:#29u0}MO99pL7G"'*k'`$DjYq̐bN=*C۲\ÔԅYjӔekI:RywOZDM;Pe#4@CsgTZU'4#2f Ԁ"Tr^jKh#/#4 Ӷ/T#=xf+BD\gQk0Nxm,{.ݠPZtLCi׬ylP>3uX~Sr LfK0Vs,69Ϝ``.ָ9̖^Tl։M@Qk)ᣘ#= i-PNWYH]d[`5Qkkp -Le"PgƸU="жkYv֟Bдyuo-,=I(łOS ꪝޱNR#4U1?52M" b/DACq)_'*#=u,1.暦ʙqh%h-e1ńۯf*4!3>YJUjcShke0E6 u02;duks-NLӘ M &/(bk*Ydf=r e͹<`=O4p&噞d$t #4vsC,'˚3( S!`q* u5x1MI'2|K2ܹvi09:MccNۆJJW,NvFzC/ e zՊ /t`K`ypzƤEU2$Pۓb2Tu00QTP{%n:#=FC  2A)/Ǽq< ;BFDTMvAG$95&)7^C$3ItGJCdqc]G#`h9ELWQǛ8#42fܙ{Х꼓,ヤ0)<紑й+aLa%pВ<Аp`Q#=ժWݓ&S9#=E1l%,RC?'Kwʒ7Ш7u5kZ|/,r@j"@d1>+ >ڝ|ͽx+ܪ+r@#/A\J:tV$SK68B#/#/#=æH8B3zd_SO\\0v6qP܇|!Qi %E)#4¢܋zZJ#/6Hsa)c&#/HS{y/LgDqײ#4SVhu8twʈ{>dtiؗ[3[Y?.'>W^2#/WNNHSI,/5rvs$h!a}(zjR0#xt$cnLSs(1UBF0]aa[m?e{1s׸Yc'B) @Q*PB- YdO>}~9@e#/:"zHIvt1 IB)1u9T5<< ~2xBP=ElNul#4R`Qˉ6p >_Ϩ\ݐa2]8#N0n4^pG6""1Z*v;P4sbls *@䮏<"5]QqZ#=-ग़1puLr&+9ΤQ( UDvv!TS mCc9Lm*F0ʙd!=WK@Jpx8˙8L*!}p |>rS!N|p֛cLٜBkxk q܃ʟXF|5s>%vF*ֲL/[wׄap1+36ZV`o3]hduFl4Wfі%& !<ᆁX KG}q_Or#=f1ӂ@> ~WSE"YWa>LM{Ϣu!9R+Ô4hh#=ђb86ѽ9q[pqj34r)(Xjd`~=akoSL -#/Un\36o2$SU64mcmG9$u&䮑9 #/qT#4{s&I']M;շN2ZhrR sgV<`|<`#=#=hP)d%#= {c0P&m#+Ƿ*۱Մ?5LɖQd!k}v©^-7:ꪜItϯ`陯)`<~C/ ob#h^"}'КuQN|/V4YTU.`ڼ]N3"#46fb ]o5Z\nΒrÖn'Ktd"#42;\lNhTiJlvu£aEQQ!MM/Pc6N.--,4UD Q90'9 9S]ۖ j @Je0Kk "aXF!23',HK( 16c`&!9ӱwF/v"6xnsu1bzICСɉ{08B]`RSU )M]łxs[Q3bIIӆ[:ն,] [sN M0QJhhhx' '!@;ۧ#=,,ezt;Ú(2V2S/hVBdE:rU.1䩠]6qHӁk2f'T[_ya,~GMa6rT27aԐ<=#Lr}f:xwBOG'SCm5NLNܼb鷪_9n>OK+_Je8yQoi)9ot\M8VOhTBUN:Pqii71ҝ\B(XN,weJ,C#=gIf"%LG9AmKA(|\V(Z*%s9 T%2˄!"8heYg\욢ò:eO-燣nb"tۉ7H6ݔǹyP%A4I(‘J̎#=a|,X'02dַΦp;b|wI#=1& 3 :4yR68:iTRT>.;:Mݯ8::C>e&x9I(o|>ΒβzBlA4023١$N,]b< .iTdàFPf,_|#/FA@AW=;x#4+2JK4/vP7ef&PZ%fM#=$<ȴ>ZfD(CxO%U6 5v0[ CLQ@AJ! |CM1%@D("D#=#/ t04Gw/0*EBLb#=J(8UuJA1&H)v #7"DL#4K `{@v]Wy 2D*D'7O=qghb7ET)MtL:?ٿ]}?w}8rBJ:#4`,@'xҞN~#/q;`̔ G#4C|3Ss8!?Z&#,31V&iֲЕHxCR@#=:-#/B)#=d)(JE(B$B`"%RM5UNW= |E#4-#="3l{Qh#=J("#=J*ZB!`$*iDJ=DD|@8#="#= b)Z!#=!dD~H$@UI#4$G:0RHrB!@Ne6/ ZCd{툪PrHBOœs+^QClMRTIG CTDPRKJ# R%0DL)I%Du9"#=5I~SXP`;]SUUcШQ/_}ϋc sB!zQ 785~Rr(mD#/gDH1anrUْW9i7t̠-#'%sӼPvwy6+Ȟ*C>8 `Ga,f!`F)+c < BFgZ=0ij^HJ@& w'=>@EDC h?-% QB A()@ Q#/Ӳ(5JAL0OF 8d%&6*Z̑J!#/ RC‘d#=Ih@r Y%El n4#/ĂvuDP^;%πQrJ0@I晭h=i$#Dag>+MNͶi J_>9@e#=IN\#/Ԯ1}$hWi*v>&.:u嵫b%>O>>dPB{KBWXq书KAZhl{dcTr!4.d/T)0b$2Lu0pD~(("$[:<i(Pi#=X#4U:r`:3NJHc[m궚{(k$F4IJDI)EA KIE%PR-!bU%)*2 @ȅ1kgH}"vMvC0 )T! #B"jK4ҏ2((Z*#/!QIHuzǶr'd'͑Ur2Os8>D:hQbi+&=XKF6#=S> mgHS5@?$2b&!5\@ёږ>`@|v^^p,Ny|XC#4O;iTΔ?& b1h )k_ფ@}G`-*t48*i`!r*$0\d`#4$L#4) )Nqg30#49B#4Q D#=6R#=6DH ($`1#"HF1'ԱP! .`a3 %M- 0L+vL #40,bLDC>Q>0vxl#/DY؎E"$%!;&6njL#/"O#/aT ML># ɤ:yQ5< XR0 VA'8na4%c{"xit" U3~ERL3D1u;Gy~CRJQA1$QHF?OԎCO(] {%ܿ̕hXN!! q#4^EU0^sa#/)m Q9aQgtGs^ml^ELV㩲<4 gIQg2RuYu߬ɃyMJЏ#/t@7OO59sHIHD#4=Hų_hGl1b*H䄑 KJfIdkpO-ݦH(d9(`\bq2^s]QbfS̽@|`>~?8nN&&JX/ǃua S۞SxeU1J$:ÓA.̈soA#=:3GQRS#4)Ć()d!N4}Q1\[ -{]ŸsEgV,x[|e'ךPv2P(XWI(Hj3ȎXYt)#=pMh%"}dPe6l&D˰ xw ߇-Qt)'43@ʑ>k\:G=q(u?a!~IrDE,(•0r,NA2TXа" Ilǰ輴ȢG+f9cF3膆Z$$SILh&#=?ќFpČ}"M$#=(@@QJLHt!#l! mU)i9fN/ɘACiA?ϑt&s I$WIFA$#4MS@MNaU,Jʄ(3w|J/`HS`Kd8۠ D$IA15$Ad䉪#=")JV(,R"M5ӠX kF3FaZ.# )ZΠNNj%2}9 'Aht} @}}rC/[*H( #4FH~( &@Gf]#=g DINeDDQ7p:ub#L#/`kkM,lp#45!զ@y N8ڞzi{#4GyQ%J:HvhxxNY~XP8Dڳ.ބ )a;㴻|@#4 #L<0)#/bM$XAS"! \OԮ ThJ}Yg囬2#mǂ~'qfiplLvL4| NEj֯X8#=c[1w6;agŲ< 9<,΅c9j:X#=2V6PwvDqyד#4-unL[O[2C!cdJFmYۿoTW@5$_N(պQNV&tс+#D")V,M?U*)t|9$酓mhj7L&֤[D&'GsM1 d+nma6ͦ&\l1퐔eԄFpf2iS7$:t)W)O._#47D\Өt8#ْk!!g\6XqQiǶ`8s~7XHF#Dlm#4،^>L(qɒ"QHS#=֪O#4I:i39C;LS#/)*`0yofwuI<,|=gKMOZXSJI|IݟCE[&QфAGNKbIC:~ݓRtm%G^1!l_.V1нcfٙHPwAGTjqGE#/ڥTDbj&BVX `u~MzE'w5ӈ '$Y7z=x1h#xG~YοPm4^l8{7v|l d`@B)0AO6@tww\@L4E1#4AUL)!@CT#/$USCQTL @B 2@ 4J!Ae *'yP5!d#/d?,Hu!с W죨,11P_+q x[&#/F Hɠk?kW!D,zR3Y#=6<\N7SS>h&T557EHSf#=1Ah ʹ|[Og~ǪaμC_3#4acz?+w6`k|'^!t2#4I0Ze&kAhm4܌Zp`LisT8v,9k]!㸎u5dcu牜m_a:#=;"3 vx;r+61SޛtL ̞i˓ ȸׄ]<z1#fM&]l̨dhjK2JW:lڝt94OHZJ8dx8'21 zX#4^% )F$f É$P;[G82P| یx:Yɡy|XC#={Y:F~dM]Jaa#/19RaHKe:N̛Z0$.JUhKjBo,ݱ"!hHNv|l#4*bF+mz60RE%S b8"cc#="l>]mF9μSi E 2MЩ%'$~4r@Э#׼k7nlxCX>_yQ$=5#4:܀v\@%{pi` (@M&C>ZqY89j0x '˲vBtHBkʂ#=jrfr#4?WU۔h$xD=` @ Bu=x#= P!JC (Pa9Nҕm+PILÚD3/E)%$W}d/Ϥ/SDu42DDQ#4!Q!CQ!_*4PDMl}n?t#4UzOq6!|Akmӏ_O^QgLs#=#4ּo=#5|3! L>NN1p:Ru8|FV9J;#/!-M-6t_):mKWF.7h8P^agTP 3hkʗ$DmGG⨊gU,#4L;qD 3BJ3% X5YB*9(:Y7#4C<9Uy_~ӫNqA܈zBAQM ĭʠ2:ݕ6O*@?HN?u(/!Q fBLL ,A;7ޗ_vCPO3CN#=EܑN$#^ +#BZh91AY&SYn?&_$e>V#Tczf\(R#T#T#T#T#T#T#T#T#T#T#T#TP#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T}v=>GɜBaG':v탾o{{Ǻ@-+98ݻfnGFԾ׎ӧo`vv.zմ}Ύu#Ssͺ޷ݺvݯp}wD]nNo]&5ewF>!)(;b#T#TQsnɪ#T4ؐcry;#T#T#Tm0ݒv*c6eЩ-4;[,wb'g@P$*Z\KT]#Tu I]g}}ﷇۦ$#TUk*t:TwbBS٠mv!MoFPHP#T'c3 Q{Pz"C^va}==Tx{;.{7jG#T#T#T#Tz#T#TGxϗ;}9h+c@L9}|My'o}Ƚv<ٽow5[}OwW7no_;3{>n[#e.rϗv^zy{ϱ{u۫/v#TGWmۻKA+#{e)]Ux﮸#T7‡|}}aϯ@ëKu'Wϻ:{{5W=ܾƌ_juw_z<[2wuuZ4>Nyyo.]=oeww[󕷞w*ֵۗܽOyMw}׽#T:tNuw>ͫ cm;uvle޸^˭ovqǪvK}}8WlE|sݽkvq-Naw띾MTS`;iw]uڹ45u7Y9Mmn_>=j+W|ss}ػp}wzܸK!Ӭ#d{q1,;;{н @N(0Q#eoZ\/#T3*:kF#dP#d(#eeb@#d}kֵ^c\ow{{jW=lrmEʬCsdvuW)n](XjOnmUPݒ$*U;w-Yys@#TE(#T#T|2wtgˋx#T6W[sn{{2kQ̸@ @0e5#T a!w,xMf9mBZ#eܩu_nu#T5]w{w{#T#e"`庱j4]%۪>JmGvCRSt޻_{)ezy{7ZۚA}i^b65㺹N謜=zʚ 5Q%[8'E3ns{#d@#Td5v6#d66븢@#Tk]O/ڊ#T#TtTP#eV؝ĉwNءnbC`LMkwd|{6:>ǯI/gOxUgcsw/Qoe]C#T#Tbh.DKq#TwN2ͪHg`#e#T s;#TR#TBw#dP"m}:w}JV0n{mfH6ʡ@it9Չݖ#eY@:>۵ownꮳ{w#TѝsV}ґB{xZ7EvWw\l/C5U;{utQIlǎu\-ܺ=QS-<[7{A3%kF.6a@w>x>^U_{{75+oUyuQzpiIZ9K_]0x4Ѐ@@#T#Th#Td==Gچ#zSzCG0S@A#T M12$цde(vgA%CR4v#T2&Șbv0Q8"%#e@("" #eC@BiE]$U@\P7A-$zC D#e10ST**I#TA(HeL B (Dހq"^#TRX#QtDKSCHSE2q0&),DpEO7#e:UJ((#TQ(DRBARJ($1D1DQD1TEAELE1TD$4UI$E1DUDQTASQ,IEQMLDSTS5QESMPLEIBST14P#eQ4E3,E@5H#ePPST$RJ̱#T)3!EI$5Q%Q$ES00T-D#d4S!PAI##eİPL4TATE#dDIUTTS1RL%#d#QDUUU AQ TPREKD TUAT4,T$D55S0RP4,PTTAM)TCCS5*QEM#d% $Գ5U#d4L5*A4$!@RA!I2RTDID%3PĤMTAR0ASMTPA)BI,)KPTCI5D44ST ¥UBDLQ!"(B,DBA34DL@UE4D )31Q% @PADQDEHT$RPUQ%%LAPILT1E2@QERMAKEQTDQCIQUPMTDDDE$JE#TS#dU Q1ETUU53MK!L3S3DQU%QE A ą441E PT0DTRP2A LPI0SLARD5TS4R#d45T UIDE#dLLEDA3TK@QA$-Q$EDM05#d4DIASDBDPDQDHQQD$PAUPSSTIEALDADDPADPSA4QTA4AQQ5QT-DDRCA ADLP E-QDQQ$DS,["*R#ei(jH!hb((bX(("($Y% X*R ($i* #e*!b*Hj$H"#eJ**&"*Bjh"(H("h*X!f)% &Hj*i #e(%IJ*ii)dJ#eh)*Zi !"ZZ) &f()Rj h#ebfa() %b*i"*j((bB"$R"ZH(*IibJ*"b)*"j** h `*Vj *""i($(*b**i#e(&XhIb()"$ H$( &"bhb& h&*aj#e#ej(i&#ebb& &" !`Jh"`%&Y)* (Zb)!?e=pb D@* MJL3A1LSK03A DQTDQT҄QS+5#dDIT1 CESELHDRSE5C1T1R!M%%R4AMLQDRSDDIQCCIRDDDE-4ME%MLDA2EEKDTRH5#?0A3I$3 UD-51Qlj%%j fF&JRf#eJI*fH#e$f"@ Hba Z(#eI#e*J#ea"RhIb#eH fj!(*( & %"e*@!! ((*(fF#e" &a"R"BX`X#eRhHH&*R&IBZ)ZB#eH*bb#ef * M(L+$S5%TUSAA-TP TU#d-UDTM1L1AIL3)AC@R,CJD@MMSQ)TTQ4RLD$EM̍LRDQ3,UL@S$2IE45-,LMEEE5L@D4D2EJDLEԔI4 0MQDRRE3PMTRMUQ2,M4CLSĤ HA!E%M1R!@C#d4KT(P LI4THJSK2CAD-UP110HUH@$P,TUP#eE#T@ IDHS0#TP A D0( DTL0IQ%#TM#dSE-(RS L1@ЁT#TSDUHD HDA$#TDQ@ -,QP#d TAHQ%4PE+T4%4JL%!HKUBSS#d4RUJLPRAIIQ1!LTLSU@U#IJM4!KB#e"$SDTQ0DQ,!(4DU T M$2HLD@ ! AU$KM$CQ#TD, I AK(IUATD4DD#dU%4$AU4ADQRPRLR1MCADġ@I%LIA@E4K#dPP 1RRL 4DULTTE,UD5) T,T31S5ESULHA5LQSDTU4ACRԔDAS-EMSC324DI5U#d!Q5UL^443QTHPEUSA0LM1EAIEPґCRRA$ұ#dAAT15DT@TT%DTS4D3@L,54T2PPTE P,LRJIULTE,- DPRI DT2L#dR1 PD KL-#d5ES#e4K0UST3 RAIM#d4 %L3-QHDTMRR#QKBPB4-ITTTI$ MCT4@PPLU%SHPRDRP0E PQABҥ#D@RSTC REEDBUP#dS3DUIDLDDЄ3%D1#TR1$ITATҔQM+5E#e!T0-,QE1%U DTEUM%2L0-!E 4/6hbBh !#ebDiHV"ZX#e#eB$`d)h#e( i "i(Hh(V $"&f*(J@#eH$&Rh*HBj(!Jb!#e#eX a)J"iR (H"#e"Z f)I "d#eB"Qe*$( #eI(Z#eBHh h(RH#eDd#eX$Bh(*(#e"bj I*(#ei)b@b" Y*(#T*j $VhDTjj((#ehh()i$!)Z#eP&"iV)F $X!Phi"`)*()h("bb BPJ#T4O #eJ !J} 8[oC Wo}.TToة1QJO;oaB0kT~#T\,0:1h,Dtx +wѯ&:֐GJ=10^/1J0Q`ӆr(roGA12`)?U P e>@C:X08l qtP\xbLeK?~E^:}ʲSoVhH_YC;ϖ#eLZŁZP|kD yڨX?.=_*l':_nݯYa:u[vtl6H{[OQ21c)g; I qTiLM!6EF,ZV/&mt?5L} Y1%(L(ѹ*=C9&: fms2P<L~cq>HPeh}5gVU#Q ɥx鉂*{ebT;NW vQMXa1T#dw\wF@pLH#df$dyDBq퇔GhZ?EzyV4{]NIL QDF[ZZ,f=M\%~V)1VJ:uɉ#T@ÌVB(డ;u@ P5Wh`.)u6P&ɜfɗ_1|p~cjd]40a mSJ/[{]xZѾΛp!khi#e/aI<)AO}(Q"`系25#TRR+>=3臵:͚x9ƿL bJ'&Z5r8k#d0b>z2}X[xw^t#TSQ;rNxFYyNEچ,Vس8) qg kD#dRQyT6C$!e2#_pӋ#dжSkEQKf֙h)|VjϿ՘|vLwT3? g+n/F~WM@CTg8iv˃ s|kٟxsǙZK#̯D-~juIل< MT;^:%2+/A d?FمmAٚfWIK%#e~J!7Or 0P/zS*F}J<#T-1?A`z6m,4ч> :j\|M(0)63;#:`uOǺlWSe١#eD{fJ:|OW%m@-= k>7h7speM{~daR/JSlՉO:Z#dFVb!F.{IScf`Jߜ#1PF^L:+#etϖTahg#eAD2$9?X5C˵IchTM=FC%>ePf8й~ʂ#TlXWb(b 辪3-!#e/GDçs ;IJ!LATRpc-ɖE@}(ַ~#BZJc.$={jsQ@9]]O11L'#{s16vbC#euuIᏗ\<#d-'C['@ yya~q2ء|XS"@B{n˔z SsAya:<#dҺ)s7|JS\fr˥zDc[֊ǖs:&옜aa#es{W|soPzA[vtn$>Jmk!jc7-є` hʤlȨO@/eM e7}2K.T<<tj멘;!6P}NI2,PzvHFk+J&&̏wBRG\Ժ :19'|YLh]>hB%Fh]7U+Œ#Nu>*Fz Ϯ*{#e\FJ1k b$_>#eA`x5{|ZJA`vi=J(|$C_t5cmy"dz !O RyNaFX+mC$$dP`uBrC)1ӶuY]I9kynLaGH>h0fEAyT39jpQ1rr~B,"x3>!4e]>,mHmYа&TYfEy#dFOqAr>/UiSz|Ra/4ԯ8$}xx#e*ٴKΠӡf}Ѻ`řfuyG^:@9Oc5|vϝ4C(|T#d!/]Ѩ#da~A#e$_qF5&-$Q=gc XNxgSȞR%<̔M!"bJXUFu!UI)HYa[VШ8TZ7Z>IWE9(|ӿ|CFQ&UB#WhpBϏ&Dɲ1VTSx."-<Ss+k-+QRӦ,~ͽ|yc?yS?@֟d`^?6f̜ȟ'b5Q'qB!;>inGu7ҧxI2О+^)F>(sƎoa+JQ gLK{9h3>TƦ^s#e?=^qT}Zm雊IA/3Ol|N F7aʬk?~t-hؠ[Hp?ƍ3Ot5xcBAPU~#dc9o_!ʽP O.a)?Sr RbT)¬\#eR/ONR -*äwwD&5#d'Ց5ǩߓ+{4wi,4b"Ң@ ϣl<81V>GHlb&41 i7c>|DE>+`Ih.g8:>\f;gyp"?[rczY7YNPGivsl/I tiP6>neГzսf\\а;1-rsPJGɲ &bK #zĜ8 5y|k,tCvF~4R+uO<|z:}u)߸#TY^5;ٿöPy8'T4SŅKچk#pD}#dBF k e%{<|*U_ηN\C&3II;tCܵ3Evڥ]'Cpnʥ҇A f#IFaZUQ#TK%^9(kulPAa٘dVH]V袽\\a_d ]Øj7s &-w O<*m3X]tU\`ܔL~H8s&=<R\#elq5~~`ʛ|9#e&I?J@ 7bka߇HB<+5} aKU E(z-5g]jTeQX#eh6#=0fwUTxrg Y#e fqxs]n{]R x_/$w7G%/#TCB$)IPKaTaawb<^h aY`AB)QݬQL|)ws L9i; 6sɔ(#d1]K ]wKb4tcJ""F5`Ͳ˃R;V#e woΓH"z9uƳοl[P!7U=wB辞.(CeW &~T#eDlvYjN>|ip_ǤxG0OU3h&RU9#d%όD/Ag@@|;}}>`A (HHë;0YɘNH_+H#dyQYQdžZS>dl2?_Q]~sAO$rK$$_&ayh[UӺ908#dhљChٶDSZkX&rot=`8e+z9H`1#zqiw;7Y-*U8ۃSR54 ulaӳY#dصkTαv4\?#ey_oajYp1T)I,ГDh?x!Ov!9cTd/އGT#dpJR0,^SaXr{2" ;lzQw{2#TxR##TْsaXGV2X ;?{94MA#p/0}{Fk)1FE5ѭ6VO!] BM_bJ˝A&E7byЬ1 #d-5#T݁.iZ+rqa(p:QxMIqSy2LLR1U lEUҘa- (K'aPxGFf஡FkkRvXy*ߩ&0%#eBvIL+Ȁ+JEFW3dI=CZVQr7el䘺ɡIS{B|2~,:h=7a6*XSieָW~B%h|#d+g%C=2 ['?RNͫ'aZb8xmX;U UE#dx,bL p{D"\֮&^ISrOщ)_G/9 9O+bގu Ab߫rYxAL$fN*Ü%)We +l*< !wX0!ʶfv#Tu\7o1@ZI^bqg=f0{z#eM91E iRsU'`zfwm~/oI5xhWSE7fw,*唊?_z^wYjdf|\4Sg\%R݌>C+ҝ`2Zu[ IwwUѝSr*'{5V=V(o,L$bh9Km\:~eno'|y 96.U+g$j*tA:[rX(pY||TJ}6?>h]m(,L҉ϊĈ_ kH#2f5T3&5 &{Xᓃ#e>Øv2e:hqH„im2IWHb<d^#e\T:]v#=]72;%'Z7xD5&!@!H#dRJbnsq%~Pu#T5{ɖfV#dP9O*٬v⃮8SF"]TV!MSJi|16#on&~n!4+fq! Ifxw .2vem:7vYn* 'bJ$7/6[v}qSb9זK)%2نZgOh1Oڅ+6i=#d9Z |.y\nl;! ҫwN}qy4F zUCm.V}8yִe>]jewog6`R 1UnuKO5VN%;&G{-VpFZDϥ˘7 ]docKlPT_-o.k\|rs 2(]);Tx#e铧0@8QZ~ 6\ P1.cHR?0*>=;GV3/#&&jpȁE Hz{srk$b1B ԍsPMu?X䬻8 ) &bT/}eHڬ귘/-+d{,B]#eZ?iŞ{WT=7ۑ#d+LzOtp?)">#7^6: 6CZ2ɀg+ d<#e4()U#eFkh穁p@׊ G[#T()Cn[q *uĀWIe?s#fۡÇXv*KԮ^9*/NNIٻ.c E#Ҧj8wG>y}b5t#dÒ^/+8:Kz?K'!:N\H6FӧtFM:milG|;=f(&S??+|?v7_kGNm}jr(sGڪO3;Vbe .tTqA[6ZL)P;Eo!jV | p˃=Z˷Bne(*#s}2흫[ǚ nTY rxI@䡌5vYyy;=1Fhᑨj#eS%H #dEr0ڳ"s9n%#c|dr&g[ѷ:?{,q݇A1Eќe0Kp>:ʍ*3[Bѭ0ՑbF,ګ8~Up§CުC!(F'Lѽ(ʿODBV{複4-<&Q5ǷD7n&:ߡFj*gf[R,G=+lMdD0`rZ1j($RqY~^Q_Yd*Ib?"y24kdotA=9ŷщB~ϖz6-%c> ෘbSqpA!.$St@m)֙FaIc??(X [cёQ&"`y'zG3eTkWxr3+|(-=^a%Rh=]šAso w>kqL$(zRsvUjaP]TЭ5+=6H܌U LU7EF#e獜0p=7#duc*G+z|E+u1 NWU)q$fxf3dn;>5!Sr6=,ȮVPƦ/ؔ6wQ.g;M^AIeA28@ܾ:PpL&5r;gtlQewM̾ګUB 0%AQ7P6{C~9Ss܋"R}?Dl[Ld%xn#TM^ek'Tx\FN=~\ErP`8Ϣ z.I-AƸk&%CyC2-)G8lm?яqoH A]4`<4PG~4%=?d?FCg)#eAJBƐ(Y=#T1n?3bsjHCy⓯b~x9z֐y.I0h(dl#eb@>MhZ#e;:|wvn5[;;l"砀lXwm&4D@2OQpÃnb}-{e~]c"!#e55JIk]t:9-ͭ]m܁h,_]["TNL!Lq#eP/8_\UrF;[ws(OX,,G[.H٪!7A$ EY;U[I`x #n{%[:_&vn3Q~/e&[umÁݫ!2:vJGvf, B*0^25#e@*=-xmӅ#Te8dZrdʀ""":m(G0Ơ|$m(6*}K h2AV!j=EYtW:@;Fvjpd TCT+T'ߩv9f@m{-Bd39.':od{Аl4cXw 4.>Ϧ%p܄;0gƋ'QGd͉8=y#eAO?^t@^Ρ"/D#eT#ToGI~_zW}8jR[냪F#eX~*&{&}M8O&:'꫏V%(RՅbG T #*w;tU-% #'P<첨ʬ~٬19l$P/pkno}z|)xf ٭2h%jfdWõ! (i*9I GfSe#]Ci>$M-,Nbve÷i+KJ::77T>G- }??Qpjͅʱ8jYNƑ#dۖd҇Sf NuؖCNRQ`"EIUժp$RA[j#es"ӆ4t)"9V#T(Hs !-r܄ϲ9EF>XmpyGNi#d8$Cs~%,2˃Ì%$l#TSZ!G 2p)7B4|"]2x~/DE8ٶwpIA׾?[5Os#dwE3D!Z%ݗjq-)}4S a;'P7ij@ X$F@bI=C{Pb7fZƅQRZ*u C}-gj6-޲q p& "!'5/99@XEP@)D;G]UIPϋʹI ꚮ5ԢvHz۸,qp@u*8QTFj&1|V.k 4 U 6 Q`6pE`U$\H~]/D|a`% #d#dG\QF[#e4vdr 7cy^Ǟ4K KI˚~Z"chӀG[jE$9}#eSCtۘc&sRŒX $ĹFɌC"cI0]IQ#d]>%H,Q#d(*2 7{(]9- CK>Ϙ#dKžc92FE*#GVёg]\DdpP\Ii~z8׭ǿ^EP&2^&1:1b:FṲR#dQ%zLI7Xbmv" L(vje9@-ba8-I I!!nݗ}5%Ω_'.8Ҭƻ2rΔ/?EX3VJ,6+CfNi `:Fã#eʕbS^2ad(wEAYOm4b8Eu2G CxtΦ,,)#d[X#dULUEe#TuId'-zf}y몽Δ^@S h+:S#eÞaAD3xنvy֮n+X4 ŁQ\:_12aRAnI8u,B`3qI2?A#= Kb;'l9txNP.z$^= F#!z.RH#Tt=Л_E򜧫)#d)͍.n[m϶͓,#JX6ʱUhL6F I Fh"a3@6#d?DQ AdM1#g7srk?Hz+Z-G\b|@,ז0sN?qHA7Rf(T[\5d]ESez8Rkvyn#drUWvZoU, SlꊥT73u-:Pj 9-%s 2?yA"09MWoe߀Vr}Гd9aOk'WV-ęlyi\/t2xmM#T?f #d<|/6o [7uBI:mq󶇷Ɂ$OQ]Ys Xq R udX/P1#d2 I} DMQK#e1ħ?PH~ BVЇl_΃|w31~4~|g*᪈Gh ~K6ĪH"w8??oִ`#dý5P=5^vFݖD`?;#e}肤rJJeDTw?M:S( WP s 75[WLzKp4ûR#< 3#8bLҹX:1Q@w]B=':v5;w H#dO/*N+drHt2[͝"@暟krvj_X ija=Y0$&+g_ =QNIԌ*0Ptᑚ7iPGs~#rď0\Wum^xDpܷs-$N'=Y~Bws@S+υ^݆_,Q Fs圐e+̏0ewk#dF~cgu T]#TH טt#e=y~\Vĩ6 jM۷f(7%5m` f]Yy!fN+u݊d%#deQ=#eol̢(Y m&$>#d.tʣ؎dA*m9#dƢ}&bbW\/s=6s(QMḡ_[~λ>a;tDϡaHԢ>r0BobHC7 ˽dԌݕq. DV'bQQU3No/@Q~yvW:ehx.$%0%nNl 5yDWn& .<r$ cb<;-הnq (1JS:ii+S߮N]3BU75kv#ki@OR6pq`?G/"?ZWqQ[]uȇ!2WvKe}xNA4%XoXLzQ5?#e?1˞sJ%.#TFb󿉐 >iz^ Tg|V#h)#ToRQKF,/ 7zt"Z,6<-s#eǻ'YOF[MonF;@#yq6,/`LXng[d( l#Tt'hS#e{.zv.{IꐗQ!+^m!pxL/Eiu#dHA[ۅ9C(8E RI;pR#dG'u7R9Tv{N:.\gnqFK)H m} nTH e(t}I޲݈K0{dbt:d&pK#exJ)aVQ*&TI@FSlstOV0`gmw hBd@H&Xm7A~.85lq2=~wʦwI#T~2t~3D@D:%ߊ3j#eFѕUդg3̤_&gp$ۚ,1p]Fl0T[׹ FYQz7;@e^ѪzG7]O1,.-h^öY'B0MXo)tĢ+Fe1K0K55`kfhbyCGH0՛,vW)cfn"&RR2zŊIQ#e^}3[%ԁrU`ê^q8₣/N@;t]~̿7q5;YED@\ՌQ˞`19,Jm6qXQ'W#U$IW_B#dOŁ̞O#Ta59=w.a6Bd>zAx{6/hB@&6tP_;rkа( "e,~gh]7q{4399nPCܡܟuݿ/Q&%h2`K17׹_&݆_˘E\9IH[}ԏ0SpɃQOAC9ex% 'g$D XM 7qx6ɅESZ|/}|{YWMCKn~?iHhM5{3|#TL4]|qX#d&LvU//]'xݯ~]9M3#T={G"JԽO٘Y5K .׸v)#T;NM+>aٞ[xC‹{CgBI!`Iԉgrh;F,ާETDDTxzD4@r aYnĔŕ˳7 O|kb@A-xjP$]#T#Tfx|@RH{zs1X'N}$ޫ.AT/ /0#T-`%62$w/#o :z4q4"JM+H,2=(obq42#e?_#s,Ӑ*˲IuUA -x[- x[?C>rJjخ'oDX¾.FwhV1͔_ q|ֻb{7/o#T5;!ڎ&1lf`K&$:q3TF"f(fڔ㗹VSX)9ͣNir]<06@ +"K)㓲˶g_xC#e`aQ;%UR($A}f&t#dnF[^x|C˟CH^XD@"EQXN+#e=+!`,K濔 Ecƌbe#d9#ACi7#T}zgomMQ øᇓ^el_b##ŤNt&Yns}(a;3'kW&z AC`ͱ^A "f.R/H"K|G#eT JF1$^So1@擲5!7J $mcԁnG#epwq;79䝙,7KBdw=6[d-%S@UU@n654f>áv{ѿ8y1U14]`Q=EᲺPyd9PQg  >&/o܃y(#e Z9#T: uut\Ì,+h=Y)Û)}v ]QG 1+vԝYqI8yJ|.9@"FtutgvYgYcl_yZ8-xsX16  fbe͉TU5\XB67Rsڤ^)WV'a]" #d0xJ`\ k@RC1#e.H3t(BόbdAùPoFο}Dw0-\'MJszf(˳t<6mk*(ꎗG^ڮÇ8ugYWńSPScu&gr߷l76#d#duH9Ā>#d]P#Q}b#񊋏~4vg)oH%i #޽[kpە[ڢ7}@XJ[wul`$]#+4)m#T.Щf瘻p#e~yX}C/.R\oHmd?qNub\3f/bT޸Gis/Y]P*/44YLћw`]HYg#=/K#e_3j6a B>$A}`;㽬10DS>UG徐#e@ƫO@II ;#d7L,`2?c\G%:UTj0ʚܟz!.e B2_lX*P\v#TBh}enu[\7|LqHSS_&v`1{ #:ϝ<#eMzhqզf kҨVN"*pIǏkM8a^c9}Bwk6QƯCa9GM@BϠ*NA(RApF]jf ]k(/rdme#<4 Q fzU#dKQ=*ox젂4Ӌ<NX0ٹ3%~wʷ| 8#dKpHsiA>o$7aA8mB!#ez:ϧ˿?Y3j]i1ƝzzVɞLJ[)b-\1,ڋ)dƆ#C֜,%aL$$c֙kU`,ҦZ8\YFd.F@֡*vJTej쉰)B 2_-,f&Qo9t,?jy/I ퟣ= 7_j͛n3EJZDy*+HKMbz$|v`4S93Df q54= M$CZz=.bCBqMŏ1q" Ħa2Z" \AKΦwW~5 |GETjK"fGG90gBa!S4'N`Y3lC{-i6"Q&pNm2@c ท.e/@] Ib'EU6k5oMiǡ h#d؈y21bHG?#d22~dfeA%'k,?3 Zc $$խ+.٨7>9S>7IHC&K+N3zFg8,U~ #MK̒]74 +'N@-jF#T@ߞZ9=Yh>U1V@.RRE")2+ b3LTfPX(%sED)PN)!j)}+A^c7ޢb#eW:$҅_3T'o%9=q\M|Ûq ;2'Hx`*ܞ%!#Jb+ VUQ3_#d$#oHٱmJ" [{IE/ܒbxɮ d1ZLqQY;5+ЏlWU|TU`VH-B.1yK #db'z?ӱVӎ'IۿBqA2)ʛ.z:4cA.g3,,g#dxZ1|pM"*4%?4!!b'IGD<`)nY8_Y i#dX ZD.:;2B"ƧP[)n,O<,.ZUb詅;E/xX:k}^#9$:7C~k6ЙD}}G(>Q#e%/ܻ(;Dc)5A[?Q1wDI#eJ4 D%;ḀWm]t{\^k^CSc8i}s*æop% Fɺ%Bп#gMFQP*YBZBa!IvgwyPCs`?J^ `@1ӄ;7bE-7S&V0Q) 9VEiX`*]B⯍:fxMj"ngrI)5ӭUqT9Kp x4m7D5D7!LWTg=!F]XB.xa4#TDPJ'lH/qun:z>^!E_6]:;>2@)E7x&%ޮ@:1n |/ت;M aasA#ef9 sOs E'>`΁ǫŌ켽)> q`(7妷2i*#eTWB\)a#dyDZQ9n3dv*`B#d 쨤 ""~iF_Bgo?+*\#`@]х[X$tF Z#e63we :_Sݪu,01ELaW8!~KtQ&,II0A~+Nm)O0`"A#T9BG=9%#Ts+~B%(+zUPIPU;*wߗIfq74 #dG[YmcR@Z̶G<5100fX+vx0۠ҍ!>lppXҒ#d*!fc\wqͷC soFJA0x=v$I꜔8'tUH.F&$=y3}iw#dKH$ZP0)yy[/*jR;;bԮpbvo8۩#({]'* #d~ k#d7ˆ$AIoۄ_F`x^у6uhaD i{s󕧕uݝoXav_X'RB#Ӎ 9#|wݴ/۳?<#d4Wl5r}YejtKd(ƌ2(ێcg0$I<΃T>}{ F.Qaz\h+Q8[#d.̐Ng;}<:N Iқ~ٲ)~KmkypljEx# YI89#6WakE26!]19zlz;sZ9ߝ?'OS|W1/VCFw<ãw=>`r29c}5%y'FEr7Lh,O?KL PY5rYO6h#pI.-D*#dX d[Pz#e.} geԛۮ.t-r!-a 2E%Jְ#d~+.ݳ c01U  Qb@#ev|vRDa|#TB[yU{#eBv}&A^ytƼ'ǘ77\ʟK=ƹZWaiǢF@I-Dqu3VbOt= J&-yxA)}{\".4CuoNwt1pB#eTU7?oeN~#dtiB s\BM*@d-F-!Q[:SCQYSϲ^ycWlإNTQH.|-nf-+WYb Ļh(uoQyri#dI"0@maoQ!He@Lp&m9*LXCIIaSf6H) 9N#ψ`ҧz?SeO&vz;aJCb?<2~s0ӽSpdn:)[㓈J-[|qwSqQ8dUM10`P#T}+tk#dF:utCV_zv7} EVOr!鍄D|yC__yE9|zysVurD]Bi_l=.S78.4#eqNX 6ad3d:%P d1;)$IXy׶y+7(8;1ɬ՗E w)>:>-<{8vxgzy 8x&!G˝en̲k3+A]#dH5euOquoD;bSxX=G>Jy4YgǨԊMl|!^B #T/,.-(P.:5wG*7@0dIrˍJ#d+1ԮN3k%ԥpX[U 'zOہI=EzZq:`Xl?PM";L(O5vof`ES7ɟRpvt pD5W1*VİńMS~fN-Ҟo78ffQRTLZ'Yr;0,UCV d$j XۤjIs3^ڥW(DJ; esS#eLN\WݙWhnHz[=v>lt+f%<|97 TA=$D#e]p,P8 $A827}W5D`P[ FEh <+ZFQ#d&:r~zxOxT V)U#eHS#lU}䇣 c>x8#dQ_6jF8dȸkqp[u(iƣz a1J%Ն X9Y(ۮnV2ѱ:bD@FfpJqA9-82'Mc>j\J1{r7V7#TR0^fN-cÌ67 @WІ<0WC r^X-ID ܏K3n,^*8m䫞k9}&st B|юA!!/b֋b֯ÿئ([v+ܶNg/MgB9qxO"'Rd.LGk%le$]S VpHw#e^$Zq/cU"d!HB=F]o|VAY>Fhr^ȁ:`5])Ayn >M (>PZ 0ܜTtJY&,ANs m;APs;buyx&ܳm#d-:ouoy#|Ys>(?FN2Uַ2]H avp#eIaoUY#e"qk|Esk73S:gjPh&Sݥ@bUȩaJp9w2W?v?V졡$t`9$AMB~GM#TC5!/7φrS@#T۶DJb7҅ee&_V轣U#THʖx#%9#Tِb.d|HBSkL 7vpW]P+{IXe2x$'t4WYdUJc@4Y闷#u-U>#]?TrajC nHZX?qkE {.GP)vElH#enӕqȝP`{pCWk7Ć\2iȁ崬8#IB5=ezθ7L_8)`Y8A"SlX1%םwZ9gK*9&SZm#eg6%ww>~;S"$\D+7CN#Jх򳓾ު넟UU[r,>W)rJ":X^G 9O#d@3-‘ jJvL_tT7XԤ"Eo*Iaec{C&leï`̻>$apd{G\-#e)س}b9V#7x9yu3a|=#yM/ʠUH]TIau% &`zW.ah UTՄwyb+2_#d8#K#d)F:v$w$ FUFM``1C1! &n!ڻJe :uR7]\c@>!HIFT`(gQ".&FH4zbag+ހq&t^9xm9U#99x2vȸMPB"T#T]xn .4g,P.*#Tyf"MlzB˃Noib&#d#e.}1q,xDdx\%*`2u#eo,6R60j 6GΠ#d?o7 (瀀^YŒ=X @nx|ўQ#FV@[9p+f2BQ?wW*8\R {-֒3W88w #dP졢ic3A㖘M(PQQD66Kj`%h2\(-;swͿTg^!騟Y-GQoHgX[XKUb3yʌ,^N*^w /J:ns4g_wbțK-7Mr#d7Ѱ46B4[{Ie:VysOyHsahE#T˜ z1^i#dt5+C4AkCh}q߳ozzD275$~;9Ȟhi|zzs*9RTj;g:(!]ڳA[Q-ڊ0dwn#d=82u(f3GzOG^6DBUvɝ"-BBlUX\yC+y:pҺzJ2Z<)D#dFOP@N& (|#dh#eguFf/Ij"Y=FwqUnb %_Km:@@\wY6Þ̝bPi, ck5kmpC2 rɫqьA] KZshjFIX.\{St!;0mW9S i~/ax뾡aaS;ZSц%,p8E6lg7fm&5nސWtmqɥ:.+U#T B`PîڇV$1#djQװn2F2ZK,a;ZWj1ݔ^׶8V6r<S-Ңfp fPzO^}=N@]m4ar<åPGWM&Kl#ToJј$1CiLs) Jr޴<P-GɠL|wiô,+1IvX=z'䪻D񡲘rrGP9/7t̃3rnJH#e.䩧6A#egX@_Xȱ(Dt7F6:BdWΰ ۛFT;V>݃R՞,dTNV4jٓ9f"gץ.oQƐ~wr@vk刮#d9tG_5{ܳ4uy "8_aߟ#e\C$){P ͏8aXoD?L@Lw‹~g̦Q#e:?Nzl(r a׬*e!''"Q&j#*A=+˄o Q}qF$aN;}WT#rPPS3d~Fo5\Fp)B O܈m˦^q{&ZӢb2X#ee#e2ߋǧ^CЁEE0 yK)B}]"ؾq[S|#eۢP[kʸK#SLq@U f9_fwtLq[f{#n+ıԉ ätc98yhiJ{p#je9^]$zF9`8^ʗzC\0z rlr 0ejh7 ModS,t(^nX[|>Y >f|%D'd 'J 7/gzw]lmNK:ڊ&^f%bgJ=5WC#TCX,4D#eM˯ұʸ;&F* d:1b#dQY#9A? 3#eK5Êo.C_ھrt>$ G#HM!+ђ't:F?_{fqr#eR5Nَ沴bL)#+EM*~\ج9 *l$@ʼn!f&-'@' `Y2Q!V=ڙ AX'h01:Fb3<#t[hʔ)z4m\oJJ*D:CHp'`7<)h>cJs[ah^xZ˜@K[JLbS#eQ04EU5rfQU.ҁYab6rӾVDٔIᖑŚ=[GPc},#]EXk(,0R#TEŒl"ώW:ƅqgn(zJDU#ex1 ~lzۖ,fӋxq1P[Tj'0K͙ڷOnf'&Z-:X)UHĔYm+) #ePֱY/y*Y qLΚ)"W%rofՏ!f#\ 'T"7EEXuOOky۾sh(Q4Q R#'Hl 561%xÆƻ>Emo}#ߧ[R#'/=s(>uׂ#ex-5vvc{"`K.jK$p 9Nq~@=}>`QRfC`Mt@^L'F8'2 F|2Ԙ4mxyDwaO[s<Fvw ^d0$7*hn#e\2[w\85"^*<M0/`o߰mg;6|[bD!SJ#e3U6,%e=@(tO̩咒mҢۏSbդvs%smk}#=Z"L#e92twmRE7* 5p/ [/imK#d,$xJU*J+UP_(ZqtD%-lVgFov#dm,#dCFhVckYMoIt1<3'i#e8 _6S5"@>%;y].}g\;+dR>1pvW˃ρE0іK \ "}q#e:K,Pa[Ѓسhz`Y2ܓ{CYE_&J-DL`+%b58{;(Teƅ̾ntrV:ʤl#dk<,i>) nrjoLC}~Ŕ{ӆ?3'[& n;|}oa\r/1 #e.<~ţo\$.:@CNaQa#M@l1%87+&mD`Ko\c`2da[C|9z38"HČZvXd RB( Fnhvb6Ăpz1IP#"9T3p״(Dժb1(ADdB}ҕ̪LH\U3Wf'v> u'\s,ՔHV|>7(OMʄ<WʼnU"J,-|u9@?| (x'}-ą>y])|3nEt-E&ͧif+#a 5o('t ͹Rߊh (I DAbyc]6B]#d6Րe5YPm4U X~sw7jb<FtlR#eD ӤPTF#TW"3Q0JԼt8U9_Ov<:4爳1ϴG1gӪ:4kPT8Kg➇={q#a%bm7:p>}A*_uY8hMT#ea-Y.$2հa#d io B.`ԽhP#83qv*;U.Ptr߇ ,w5PS$GS8bWy#05!FS0G/#hZ(;b`R`7-fET*e2cs gsQ:[~>Tj.BZ6Ay݉br)킰*=gy0l0nTOQd#Tq4y#TͲ5KԂcg"KtN3`kP #dD愫eD#dĸ:o[:!H"<뺓'#zt'RH͂Alk6 "fRq˛+ff8mep,;eoDJXdQst05nc5=8܀i=Nli1L0JKZov@Xg68(" w:9k (+#&[ ]!h`>@vWHNPZbP'D$(QdXP<Vk8YZ&FV֯&)%D-̓Fxӈ#du<p@ϢRwE{cMĊu1lt'BcC;iةf%hSdW=7l.ʢCF\ۯU%R#T((ğxdDwԕXBSeCv[y0gϠC;eukuUȝ+Vj[#e]BiOSݍXڲtii1J#d$6\#T?fKN;d#e:c%#3Ilv(AoMCUI4 ;^kZ lU!vV7eHM7Ičb"S,J###d/ yֆ%U8onvՆ.>*PA@FmlJSn(6MR:W1]&A}Ő !&*&#TV`NM"U2YsP<9eMʫO#x;$ 4/Bgơ(y1-XM1d,W=wPR/h#e'UWyc)a0e'N~(VծlgC˶btߙ`Ɋ7BUWŬr%jG\o{PV]mj/_q;Y4vY׬C1ʤqInU?S#d+0=:v,p،uikS=Sʃ;u`4et)PN)9Q] ՠje< Fuv#d<1[Qb/FՈiuT'} ,x9lPoWQ\%/cYόsQ\)I"|P^={ 9Jēּ:zf55gUs8F0\N=CC_;k7#({#~o9Mm'Ax|ӌu\G3diu/NY#0sػiY9(7x=ດLM˝~c]io,e8ƛK'&9ud=e#TnwGWeʇmChFJNgDFGYrW4 8#Q@k391|WM>.m;F;̳1NB]^D $PHyhE%xk&9c#T(ljh\i4[1FW[j]8$H(d#TeC5O'#diǷ5X[i]8p[&E =cJK_U\#ds쏉Z)-7zmxcG%ĝ[ )U"tߋ_`J'<4j/z;u/{=8޻ReyzS ,if_S|Q9_!nH_`!C#dส7u_mLq9wHE'WzuD="7Yh1+YFLjm i@.y#P#e.F#![:sܽ~3j>Ac&jJLÞ˱#T|D^0^~R" 'rATeVn!€잽HRV Jje"bR"t+vO^sױ7#d j1m1aFe˲Z*"iO`l&>Ao,Pj #eȁq`xu5 eٞbU#eA#e0v`n)vͧiUu#ytPyߟ>lvOYvl>X2Ξ((tѲxx=oO yG_㮶!<:?rfB$*CO/&?lуU0=}#TA#`6#dÜyn3~]zޯſ͘j"uK'Uب#TA?h2,e>۬roTD#ehP#T;p"E '(? nx¯ G 2OLO׎qm (`xeLŖO'hujL[nyBDą\cyn]KZ%ɳQ_̛$DRۺ^w7%Ckg2a>~~ͳxa'լ@yi`Mo~Qpr@4ТD?눨{:%zeH| GDn>K%"TZw|OB#eH"P#TbtvE'`]Iφ\#e;:\a0T6tL$#R9%HnU#dU)yySMqUͳLnCal9D8b|( ;-#eŖNo"QzCwT@ݟBYE"@g,ϖ W\V#d9Sv$E4SEHS@K 2KPE;(AR ؑ38A7K!~vij&ƿ_#dnc@|XN~OOS4!|JG5@4JJ wx岏>o{?OF~P}b9 `5`u#T@3Rd(I0(H#T^\î>kk<Œ@GZ_<>4|}0#d(_ԭ>BmĚPhD֚ >#bA)Fw>2Oh=Tt)m톴1 %0@0)FE)?w&xaɦ261_ ݉767PiS-39'Ή\,eiJC-# 4Ggm 7IN@g3(FD VN*Pj5zǣ`PQ !h&iVAoGZ ƴ#dM\X4#eFhːCgT@FO*K}Q֊/.qV%-ff3CU傧!+2#d, -c71)E׫u\NJpl#eB1ZwWVl`ޤ9n vd[9j\8n(hǒmIەIMkգkQ[NËeݹbWNm#d)xB?zd,ڀgӀ/?BMv˗m ]|\q5*5hc>@Occ#dxpnv(i?8Jo0|4p:FP)w3x= PD,1%QA2JDDULpD~ԓZq)aر9 7TuN*[H׈a- #d/ovELCd#TJ"J@MTxUcF:UQKRBGj+ =px b)x}#eRQRDE h@#eqtIӟq23l˗bv ;L{HvnTݡ{lQgfR:5P] Z!qgxSZ2,ҏՈ>iIS,6tE#dW$uJr&*#dwUGjWG>|PC;Q*"S3N.6ou6e-=a 0b]6aB,0AV 0:^9{88IDᤷc> Z@Z† )_kmyM3DP4ziYn?I#d"=j:օ./ @q4i|ߵJ7Xyz~_l{~%o})M7>b5ڳ>v\n:ҿG׍?ŢN:vC<ݚTFǛsw;29Ȫ3L"'!EM5mQ~a9?oOoM)wE9X`05#=`{|0ّ]έic(wMxǯSQkLD#TAjȌ(PcM.Gw|>4(=1R_Cu#d:E6^<(JCUMdW`\"jS>%>?K_{}cuO#dF#\I?\g2USaAuOя㽜KJ#e>R%TXx=YTY~$(pWtT@K6h>{VS#e$֊`I#ex۷#dΚ'$H֌h#eyh24]K ?7xDD͂cSv`A |cjإFJ8t)F*JXןZu Gq#T{ #T'9k{7uGE#d3H%!I#Dz}9~_~ !2Ap{y#T7A{Fϋ33~_.=}Wn;fM? ~oWp6͐.> wmoLο}|7sO_^;ן_яW^uo.bL/ҙN]Ry3{zj=1":kSsS_pRzӧ{d%D$2`cXʺty0(#dCXq5!-hMjJMIGdLd`#dd(Oq받ɨg+egZM,UE ! P5T2!~PX)ٳϴ/ᣛƼ ?pD\zNJRR,8ؿ,{!@Mr~a#yܞPp`j y=ӷ}^noj{E80_]4j=ZzgI.'"*}78wz'ŷy%*<]ǐ`Wۊ{nƧ+þq#es#xRzt?oV_~&\:k~SD|w#eaͻgW~_>5&?b}_8!CڕG/,%O(n&O8pۧ;t">dYS~T {uWb+#eKslv JKF/ӟ(O"M4}3)L;qΑ*aRsy4ӯ.fv(6j]G>ݹ)~l]C߇^y (ܰk#v}¾k KN8r?XWպ1Ϸ~rkvp9 ]ƣpǗ,Z0o3a{ꥣt?oŷ^[wo˿e^N:Qau&ݧmOgWnRiYKXp̳`{#e.`Hll5[.0ɁsQ;$;|ӎr$pTX-ꅆ? njy)/>-wC!y4\h;˷yW~9lٳ4pؕo~="{}w n~v~ ^!'yr?ӻh&Fp?֨>3/6!˄9"]Oͻپ!w\!yZC/ΓÆ.g#e%UH:EZc32#T>.3)>lԱ}6qG9Lߧ͐tnd?Ȟ[Gssse^_ Oy~eWOOpv3_vK£S#d6j-@([yڟ}>wU~E}{ism{v1E|3=蕿<vs=XB9_֟a@1ofu'(PYDi$523]Gg'c?{]ݢT.l+,U?QvgMѠ yw< ?} V]z_0 #exEۦuQ$864kB. -Eg=iD:퐛#eaK%D:&hPp#d趋X8%ބtlTg,ۇ!|&GcpոԩM]QyH"L8iWɿ-y#dq*8W_1l6r#d#d{MNPԜ mtLt|ڨ`j{LyH O)dzStsh _GY-8răI_sOY?W!ˌ=xk#t"a;}%>g5(Jd`a՝1]Kuӧmc?6k/xN}N#d~ 6htoWۺg_Xs(zǘ4uۗ8~oO _Dh>S_cz q#e6!Z\R) "mIT. I^$vvh;;0;:rV]=F(9\;㦝I*؍1Uyr G} 0Kl#-CFҕmgǰy2YD*Ի605V1>'_Drw䃗wsukIygx'ϻtʈ¨U]U\`cmTmѱ8y,lA-DsNBƌd+l,As:X<⼹ZrlkJbf&$a1APiss&HfH r69f65DXߏyX,fcP O18"X] ۵nQ;d)({4۹HXQ@b(S(T_v $$~8~<=2#dBC@FaAGړh r^nv&4|XfT}n6}/'mֹ)IςCņ<犷}mz\r^ψGn7~m٬L=?@O|Ilmmb7YuBO}?Pq<._\d?8:͚|c1\S̏(%68oey(o˧[¨g}k4i+f8Vw|:[qt&w8 &Mᯚ˥x WpADKQZCʊR*J K*JtB"5##q f]#e9@d1GۚyN#YQbw;P57s&(< xb#qyG)˺]志ò1u :E|Iz~LY/Iwl)N 7䯐f0@GQH1x1tzkbT1B#'rb.AFS[JvsDbZ竺&ˌ$1}vq;q#<|?;,FV#7\Dj~?G^'CIUjz(L)7򞓱_1w?`%{~a#{KknR*$!zס2,2A\?-)[ldv!jMb+,QN0%9OnZHR%4r^3iyأLhh?*ZJP+n'#dqMn;#m$L_=n~ h0ǒ ge30?.+֗wыLoyM)crcUߘ߉#eɋ z ܿOAܫx\vml*#d@s46+WP3!<#dP8AN~eG8vGf ̤#Nrdx*6OB(5.dQ!>0iɁ!8pbt)Ji#_fԷ?j='mv=1ߞsp, s%[ӣzMD;DoCGጔ8?~F OlP-#e*!3?|勸˒0⌀Q]ֶ *;J@&%êRpLTK{q<1[Y?$I#e!ݪҋ@VԵ52|%';GQ|5@,3?6\j^k6Bψ*vCߝLʫ|MNA+&XՕb~n-Cb+l`Ժ,PN(:hj^RD$p`Q3&^XqPSAd7eG0eӲxNG7b}y3?*2"!}#dq2V):vųLSOԳ~pŏLIzL6uCNVL#O; q?ǚ?-0ssR'a-ķf2&[;#efϯycUZ#ebpt*/)m\ai0|^jѣQ&o׊}2H",oKI٪P7CtK:(yf+!Ԉ=}y#d})9r Oڹm[٦i{M/l#Tef c!C{>y |4<5ݐ] tIs)KjJ[DK@0ɦb,y}fB8PP(PCj <8Nq 4ç4PqT\#dDp5P$U9nNNc2cuҘ^ %bb]<59לId#e>ۻ#dk~- Ȍ2& F'"'ޞO7M˃]#;,a0*/ᑂk#db)D2G+j/qA΍sF :&i79ED#d^|z'w߾uH m=*a2,ީ)f%Qb/!{t1;3}˺4@]nJ,#)a!L,>DO\RNpˋ-&Q/mHR9pK~ʢ$7@OƮqS-)[߼f"9cOӝb_O>xf//(kP%tGyDwv(iV[19%pU8.SM)9Cdh\c+?#FTf5lp/m+#d߃sxБ#v)$SmBtw `#T&ٛEG(=~?nA7pzQr|;GaAI 0-{v;6sLL#?N&쵸\'n\$t֋,Oktk~4`s=};G)җv"QtG2/U&^k&eڕz,INr0R3olhְ\aAE#d#ezg9a{i{ċk}Kdt%g >glsVhh]h%'v9iꇧY,,ǶA, M1F$(1ۑ'GCDip3T‹z׾bM>>F]mc;Ԏ!v}1vlM⡊(oTL5 P)KDP-i*GK24f^@&SklB4rsn:n4(J&[5![mpK-Ls& _ᅓ,.Jğ53}_+)Ef3h"'bf\ַ tO_,묛Ό)b`e?=0|`><8g5$Ux 43#KV#T{}St?|K#dZt=rVO5(ѺHd EţkFJqTVۛXlJ"kԎ(\r.-%Mo=6M)]*iYD*m_8A!WkqO;ox^.ՆJ)tɁ^QWF3مbeb~]60;†,73w˿ZMXc+q6p"#+5umq9=*vcor,F;|)]o MU-_sCܚ p Wf#dNb -e4vjGTb[i&*97FL yT\.&DFKvG)Iغ:_n8S[.ie/W?8o{Hmq*qaee7 tM=|/|^e;-nP~>!'eyU2&)p#FNkP|yYaC| 2zq#HשO>1*:YI":Aт{h3hbϰ cl0!=1^Ձ)a-DI#TpwϮ)Byޘ=gT.f7D?fi#e3Ia#o݉%[gBBⲂ đ"zԡ#,^#%TTWQO\w#oa%NQJSgR՜R7%MS OtoP{ r5#`*8FjVK\aixyFцYn6zw)Xo֬l('5K!8nskiRdm๸`#j#e`T^UL7-SzQ'kCb[j GD~rTنM ՠYH}8?6p͸;D; {eq'jtl8*e[E -K̍[oXź r##dPGŞ+]}St~Wp.X_8ChB8:g|(Fu JzK Ф~m7}mGnB(<0#d[wn>o0W<vAJR8gcgiZ8DL/`<1`u9R{?ʰiC?67FPƋ7V(#TCm*UD t_#dbr5؊syXfT|kUmÊ8T_AQnˈukM 1SzУa մdƼ9@G@]rDv->rY* }dFo&R_%6;ߣ FzL:<炃U J(a(gZR)ʸxWGYO 6q_>y|yq"zj{GO#;¿_#6:Bk() jϙscT{ /:yv*0#e7^#TUv#erQ9(庵ys,+yff#dam6~*XVqiTF( 2Pƫ#eS9z=nyh"ktEDK}>{r@ko]gPa[=ƩzY%N#eᏅDun7 <1Q}!*;6wqYd"8S:`k:%'2s7Z;=#TT#eM82ݗ%{6)z#T=6n1k|m4Ll7iHnN}bRbֳtQX#T:;_d%(aXAFQ=\J5́PU;{vsR0GU7K:cd[s/L:+?h>Cza {.}ѶX*J礩pe#eB!HꀓOn'| dPa,](!A3l5mU^$)Q$(#eoڧȓ~}>~À>kItYew<;16"@8T,z5Vz7>5 ^wAxo"Pnqv. \mK'O^^h݇iX_8@f _ؐnpCk;cY?Gr7k].TbM}j3`!م5Z ! 4eBD E2:T28J['rUS:#Kpe<&[^vyOd^gl$gLИw78pci\0tOCN2T4=fn_=ub&qvnִZ.o{a`W)E޳QX08'jFopÈpw>:܂hy2CR>4MR<읛GS90GnY*VN ܬGzbDsGclA@8sפ9nR¼z`*&#eѦpCzL>` (#etƌ)#e*0ѼG-:qH EA+hT VnKOvw>%DSj5{ql! 컜n{m-ԁy@™UP6{g--#}(~`:s‘+PJ*'nt1A{'=cmQŤ\P$*8OySxܒ{{l=n1sDߥq!G9#eJ"u"*"#eAfp0OD?|h>}9M6~-(D?>#dp_g#ڬ?j@'%Ab;9={'B @+5(тoOC#e\=RܑI_ARHcƒlOM>ҼE;4)T5 9wgĜHTIx$5I*#e&#Th'rC|&(=X$4ZfGy|X()"%(> 4#d#TcHaL@3zFƧW\mV hQMcGEj55-/i"&o<4SLɃ`@v~߷=(՝#Tƞ5@ m#dR R*8P|+~lA.=kE_ϋYgfُnUa1 eU#eEH_`bUI~JdZ5 zJXH}Ϧ+q*PPq<#dˑďu$#e#e)P q2xb㔔Y=[r7#THlR,DŜ|yv P3% n:8kք Û*\TBl?]w;pI-#MqKO\FGd:zқ>؇l{ Dv˹L`60㿇#d@%pS‚9oI^0CFXzH9ki_-֡>pDl_:HdB~Jm!d3N!A^>(͗eKZpdzV㭖'i:F;3&>G#d_o;k$ۙTw^ ,^V*@^jmM4aSp5mM7iE7c3#ech_J7* m}uSz_SFLcΥRz:Wiw#sgthYc W2gڸ#e.\0~$& Qp({n5=nD}[,>,nx7f$S#e'Wx [|̺I]?.Q"sʖHAyBiGm3b#d\x}95CG5LLc&d!4j2LMxG?io|C6*Qj|W #TAڼ̠M_ R2 o7#TF@?3c9.Xo=>&v.2u~#eP|q20#A@S5{?eB.B[3(7Ivzjy`@? Aga PB !7ò>ALUB9(:JZOg&/]߶yUtH:GsDŽH.X>]$9 p%'0w#Tܣt$|޾#dK]-m$4O~WGE o<@р8 HE ]ȃd` )[`ni#d@#TT0&"WQa g'Y`rtE#T#dʛ''&Ֆ2U{lSDޯ m@z6XvIG'b"$ED2+#du@@Vr;cxpC12}6Gfkׯ_Dԫ$S)-骝pNƳa8ABd PܔdPkDzC:Ƽt#TT -%Ln׿TOXR;~4#ds$x6:qOnu-krΡr &!ٖ<}֑,?:Ga-Rf Whj=#TL徕#1LPm*/gOanmqK>b"1E0Wb;$ Kn>nx#NLt允r7pf}YEPpO I#e`.@cQO)gn F\ a@7#e#,VTuNm`!C6*0gڮ4|c\lgO#dq@aE>q T"']0̎{>#TI ]t@1.-1>+**z#d{ןh7.qaD)D`(Fƍ":#TxB0an M@*0uӁsiT8amX$D_C^Am :R~#' +٢!*8#dXcI9Zv @L<=LpN m}>?',]Y)8r(>ffގajWA:c\NU.\.`,^kyHATvEkzVU>6=n{oO@prPK=pC#`>$#mupz-X>|b3!;ɽaK Y8 ĸiR.CG}@YDa).&<*9>a~m:Y1S#eO1֚8TUH}C\f䊮<*Վt#dJu*\lFw| %]^iGЄ?27ê!@PTMD NdRH޴V)Gc]nx:Q;baDg 9מI7.^o]2!g,zxq%կYFǒtd6eծB#e@BBJ#d0wVmr`nqt#T`&mF V+T^G#Izk&oUHoQ g M%0p1=X9|VfjB/kA7t'7[(-)m PnP.7Va= $!(93hQHCuWlf2?s[nmTp C՗fʸ 6)\]ÆDa(SQ6]4:NްZ-HEptyo0u b!C}\`Wh dX/\)7>Swodx>jR\` +X[=zh\򚚎9<"G{ *ezݠB$<G h?"A!p޾`GzY7$~6ͥxfG]/0<~?DG[O0}wׄbBGw ("” xFhrU^cK,/Lj\2kM&'xN_򏟆 fLC-l+'3D/.2i5vMJuyoyÐUTITPWkEA=ښq`g>4Uλr 8Ȧ@USXUQZ?Ps;_a>]TQHAk?W|>?_Wfe\,1t'_d]ρOPr_iK<T5i#e*0=b߃:JL?% DJoaC}(aw~/FjhoSMaiN?֠sPSir@uߊj7U"(A'@߳-&L֣##dp7s9a %F4!EE)4_DTbu8l#TA}|i-V-P{_9kRdX\};NQ#x&kz$(NLUxH93 ]ך#T1Ϝ=QIM/3R׀-#!F"N&Y :Т!I; JM$<&?(1uݛ=ߔ`>80R-hkX0x\dOUY 8NRCw:Ѽ|XlUM&ePp2lZ**V\KhU|v(_~^F\\vtIG\U9ktN.3Ms.PD.kG&1%)9Rf'Y\ǒ>briLè-\:Nz57oc 5?;]Pcr,̻ uUģC8q$+})umƲ1MKa0nQȍ\;Z=2Xɵ߈L[j. owip@A已x~'LagMOQ#e _'#e6|Aj+t&z A,%ψyMcўonRW5pJqiClį =7@QzPSA&!rXUp\?JZ _9k]c{6vjZ`vI!@$_?rW̝;==P?H}wjI,KSVND} Ths^]>?g̮q3/|Y2fj4EF;eu?Dф%_2z͟ JM '"M J:@&ΟXd;,=ш_#(?U>aJJ*0i@Vm0b" fH&#;mG@U}G<%#e*\?홧RrG=_*Tb Ճ]P.A'#T2jߑ$ *# #eP $P]#e|Owl!>e2BXW.qX>Tˤ#dHbEd;C·g/޿NDYX:~:Ѥy''";"Q҇[QLJD#dn"Sfp#dq@kC4*D!ހ*>5=ɲFr03d{g[]vAF@H1Myy#eLʹp:yBu$ڗ\ 8Eҫs>*ERBi!rmBh)TW-Bkw.p_mA9}xBA$cpa;# YX؄Arb<3.y-ØT@vSЦ-:A4 ː/`;peh##exsa9Ăi1(G! 6=BUIMPdSF, 5po2\/G#d1k;m&ю?vֲewCT95<5Ywf؅LtCsvx.$MqNoL PgqkÉj}+ʝf9ϜSgR$ZY('dOt%8`z7QS8ځtTC&Ѹ,@{#0!;W7_w'C4$/ĝм;wT/,qG~B#e~}}>,+c1 LI#eDqĄs "C_'Ay}TN3xv>PE%:#5IBUx_*nxw0ѝ|5׮3CbywJ.#҉fzwqLeM[H`:ao.w(P @jvNX0&:?^熉#FE!JxJtP x#d,խ]a#T,O'Vu=ONRz9<ȩ׸=iMç=>['x/CЛXIawiF1vS\b8N'$0I,F?7xA18#e"ÇFTGX0Т|gpCA#e}B$#e@-ruFs90>Oƥ@䈮'ADz!owY`٪yX) 1SRb%#/K85ya_R"gყ+L$%'ۮ)/ic>ɬ\3 T2S5+N&\-mԱ:QULS4U/6f y·cgI#d!#dRaܹԚn$!{o\uM1#eԭ0"zq'Px8Fݙ0Ѿ.u7CB^tMm?W,]BWː#T_z#͇Fe&>c`sǐpEX.'!mJkT+\>щk9]mO?##><BD8_Zvt0tN`E6F峒zZoDK &go\y4:CO7=T1Q#dF+Pu;9eR;+vP#d(kVa#eTvOv^a{XApa|02;,D_#T͢TdULRGCH1F}]fMgl$M82˟:~[m"@9L3=9[B/"{ ҹ*qQY@ smo3d;ܣpZblCO}w{x>aQj*Φ8~#e%:j #e!,Ӥˉv8z\Oװppqkm#e)]܊nM!9>㦳m"$:'N~(UCO*WXN8BI0{_CqCx!S!yד y#ex#e #dT*TMet)LN56k ,2k99MrV)) p #eH`}b}}a3*2*sT0ְ}"Iv#d^oWjmlHGC0~LhvU*ZCmǶbZbLf",G#T,*?||*9̈́!Tp !^sL|:2\^;8dpP.`9`-O. D#dW-NL;;%?=aѷtxG`#e RDgQ<[D!x^8g@U``H*W#T0F4ފhR4!n@/d16 )DN0&nF'&s!i AgH87%q1΢@| $(V"aT/Y?GfB#e?H''" Yqà"1EOxm?$k5En2#1F`"V񭎐?T6nT.vCNqR"ҚCK(#dYe.VGe"~ ,#e9~"L2$nt{n 3Uj^i:&GdWݗhI>~_ D? T_'%#eVtZfƘEhсj]͜ȏ`nHPOTD?,@i.X$~i}FuBH4"2OǬ#erÀ`M8Za×,"3@$ZI&KOo@Ii(w#d_~P"?N#THqe"뵲HPaAo]hB&8*#dC% :Q60h^^zĞ6>be>x}CJG#e߰y b'#T`޳F_OΝ; T,>٪Ԏ "D@O?&wψp#eai@b DA(@CԀ'#TFǛ]5? j#T6IF,wc6SdQMe*Ayn(lN*3o>> %݇,!͊Ƽ4}mqJpK80ƞفaҡulm$#T=2 @xu.Ҁ!>鏼O욡 DbhgtW? ChAT!b& jcPbEH&>$A?u#e 0+rGI ,6sG0Mqd u[.`2#eT[Jk@'ݏVsJ2Кu!ه{nϋM4*Lm~RGô(HX:UH;GoTd^ OzqD|cQ:|IF)(/`cӭ,S !8*z=G͍=q(w11G@|Wx-f;rT#T@>s~K$|&oѱ}#eXdq&a?aBΰ轭UKXD(s&TNdL<[8oHak)?O1jd`hF_kv T7#M9#Tކ&!IP0$J >~'ĉ_BqE#T7@L" o> X1䬀'eR#^P#dQWtJ~֏bS鉛^3E¸8(%5sQ ~R'uh=# B+;OUTV1e18KGQz9C7(?K[̾U[hWɳ#ehugWl@a' @NW#oqkl?W<ӣf@nk~$?O<<\#T^yE[%3W"GZC$TMc S3DM#dhiPW=Kd$s3>0x`o/]RYnW{@Q6#TGI(G#=AL8l.}l_msʙ!*@M3nt ^Ëq!"c~|T-̮&>j>#d_5ڪXץ<_<6▓ HrM{^c*!i.οbz"`83Íٯs/#d}d:~)?:X,fPW0Ryl#TZb@ +#v<1߄ۺBZ4\k7[v;s%GaUMʜ% #TdFwy{m/?NaI#j4&Л-s\'fS*%24x/j*!52ڽ`cڽUqszB+@NWHtt?'V2BKx @] "#d>dNd@?BoAlTth]sl,nD#eԠaᐲ0@2^K(@f-$CW9"ROZ^-|06ӷ-Z1Πጹ}N>BB~ѷ4$$ AqauH ~iz qD7/O#Te Rni=]5%#eFLl=#d??()r0',O{}x:N`#e(E?G#dI)>9j~$8g #ek,5&MI!wY-`$c=p:Q?E"#Tx0@$5˺c*fT yk]2U#Ȍ"DB#d +3Fu` ڣ)CAńENh#e9 @O4.6UDXpa!mдŃ(Sfx.c@߳f]}:?#gV-mg}Մ$35m\)B5Y&jl\kU+3oCK)k 'F6 Z;;RI(R=z̺~onWdî؈e,`##d@[!tcm?O0yWn$dE) Ө_InrM^>߲ʡqڈ[~|_C;D.^!!~r x-g6\Gt{zI+"9-V#hEE h#e|eS"LLa'#"Y7k9%u@z8DJ3"^^>Q*BM:$ƌ7U&m]*DO$Kvs]|c2?aR|+֛Ze\b[ב_koh+t2W/p'ZɭpfQ`T `Nx3ѡ ML.wZ;LZ.Qpضa+vK֞6Ci"Yܹы]o.(1I؇%T+괮;8Uɏx3~ag&'o_z(c;cB*pz /#TA!uWew$#e_ݣx#e%5EK/=#d| C gMÌ 3dܘ54ⴧTwuk5`()+')ߦLgAUUw5{ sTC}CBDs(6Az"a{|M#d|c!V0!%جPh7K{l)#|pH Cpq~G2mrbU*-'Y KzܠTŐd2a>^pc5-p<u5}NrQvPGk7 G#X..fhsRcӘ<+b$!EhK΢N۵fvXNnH~0oH>PDHHJѤTI1B#_$e׶Z#e_tߧ-[^-,=Mf7)]2Ï^iiekXsfpyIzd#eC2z,GNW〗/p(B^W.nxl"$c-`Gz(+g;/mxxhGXE2h1DˉJR2Fs{nJW:H.Ee*P=z,i-^Sh">^x%4!31&Ti};'!7K}z]'`VQCUbp="TKVc̗W0f'(xGF7^ɭࢮrZ(o6܆yw(`ug@7#{ wݪL[˯>*ŗq#Tз)G~p.1`NLʌ<ԡY:((D,(7v#e LMH̵fO@ q +q,܁Љ%SrLn#T#dgkOʑH#TCWx Ԏl3.9nUr9 _1#e~J^;(7#d UJ׎,߂=3)~3/v`A;';֥,8EDc/q9F#>]͍w_]P\2vlMy?/-٭@*1L"fxaєb%~La0ⰊlyZ?t{ZA:˂F#d~`+.?bf?>T?Q刍:dol(!D.#Tn bvxz~޿w\ct)=Fa~0Q>0HOC|uNB|z^qiw#dIMeZ;L#eBBOoKQrAچtŏ0!Ї37cUC=D_Z@qqO@J#`F"Ƭ;Ѣ$#d>T><~Wg./Jov#vCs@$]Nªr~s"Rj#T,P)H.ALn qPO$sTtCvϣӯӇ#efO8p?!H73$WuD AB#Tԣ(s^t4~~zOȇ$4Q?+.⡷oUtxì0M#eᨻ?ֺ0}3kͨ_8#e<7DG67igHW;V7sz|&J vp܀d#ṰpQ~_ _#ea[;Vh٣ FY&9IBӽ6Ƹ= qDbH"S['~5'Z22#d6Ohs˔OOWӫc:G74|IMEl$W09-Y bTȔTt]A%[n-(Q@*RVA~ثio 蓿@'Aqq{(rKq~ɹӚ[\`jPTDtKN߃׀$8>o8EsXᣅQ PD8) *5$j'ah{I7t_B=ka#f᠚H샛d9bc<"xFҼxwpiΒ},VHBcJ-ە䭐n73(腘lTvSNm5Sj0AKQ;IY V#d%C;Le1x` G(H@.%Ж62#eΏv7r.= i0K b#]n\xesB#T+n?;.,!X̻u"7:#dnXY}tBljSǼƞbO;e0U#<$ԟ57=OQ=KK'Hʅ{#e֪-`gk$;Oҟ8crX"cnp#ddA,Zcd6D FA/u78]̒셿/q{?Up;i>=O;T+۝JuenNE~ϧ(uWl8fGKgªt"g .#d۹#TΞp]ؒ^ n'qCrw"O{1O͈ᰠ{3]~_#TӀ#TeGs Zhү`IG$#d"Q@-#er"H>ШhhUS}~WD1%V3S1-riEEЌ$i9b?LIu`#dx@ON`GǭO*"xDCZd'߲ϴNרl O:-J#d^#e)cW]ˇt ,xM35!LyԐ )(4}#e0DIgxx|F:qd9 _%2BdЖ,AzKȂ!Fs $_q@~|E e_SG&&[ur<,ėf(z"SHp#eiW6ZGv 4J(<۝elµՆ$wόSSf[EoJ5ZO!ǫ= gC3f ['BZb ln]Սr}.$AGqb#AF̺9{vj$ %ˉ3+T*xO`#T1#d8zdֻrɉ(ъhѯ.D8m`4ްqgcZ#eъћoxcE+JTxLR$c! mN*`#T\E9wEJSY=eE{B&aWF #eESqnN逥hFdmb$(nP@||A'`#dV,#Tv^G1(MIBQ)F E䨞sVy2H)m:Jj#T8b%!ĈT[|!K!B:.#T:E#e#dt Ay#T|!EW߀}Hxz@`#e}H{*]A5@P~)ןա`ވaTh^UJ#T{dgkA _(@ӉI($,. 958#TV7փ.KIOcs"<%#Teٟ$P!~"߀W:UOKN̓"<;qG.JX ~'q#1 LG}0$"B"HbAC,IǜxYtj’K*lJ2C_M)#Tb:`Q24п2tѕ|(&lU8Nȱ5F"c"'XPhT7G1іVZ9HBЈBazy(|*2 aۻ7$,>p8Od'WݠCHo=<Ώ7~Ӓs=>#"]/2>Ų.C,#T(W_4#eCD-5kd`۝X @iF"#O ɷƏ']b %:pbp%‡TW &*mBnj?ڨ }fe XJIorDV,WAL!p.ٮ$1a$]p#T=H :&DDp[PAҡ8#e%#A!3C*.{Y Wi"X(7HL3`IF p(F1#T'}mp`O?#G6P6d1#e#Xh47nw:9g0`YCFX9ˆ52/9wGΧ!!i tN#eR 8F#<]tjܞξ^>{Wvql)DMCP#T˓(/aq˚~f7_<k#dP\q,/~qцy~3}2\ὋW̚(/D=x)̓z;=&:}~v3oL* pr#9c* #dм%b=|?iD6iz6s]fi?!gNcǫ`gGY_+bM*}_譡i!.c`ײW;}Zػ@6Z$==)b.H`D !p@ D!UKK9 zNI׮XG~y{6k~Z: tP28`L5FF8oq7#TM9q1wҡek_9u_u;~w2Q&QI] <#d SHY5;TCz'^znH绸P= yޮ z4YY8zԀ|u Ax]AUP:Uf.e(L%WSvs,M#dׄM*8;J/ c;97%_NJ@ABP$B|׍#d#e!)O~Oíc6@=gv&i^ ad;T) RX0Y@?2GLBڤχ5^]#dfs(}c<0^~[^l/QG^hzIvӞG`כ 2&!3%g:2rS:Uf և'iǣ09 JPf9SS/P!p{о'#ݠ)69 :,iV5 X|D-?X`Q E$&scҋ?  li`߱Zbgl#Ͼ͵i5 `#eQ?/#dBE zX8#eTGGi#dOٔgFP! Jω#dj2l#EOI@ώ WHcu`cr xP#dh(UtMy>1jrbSBRQY$jW6ш'FL<#e(9q__-5 tn%CM,,,x)Bb7NXxJ?f#T@(d8fT@+wG&"Ij>}b}fHp i>ˁOݪ=ϑ^J0?]fR-s|{#d'$Gkn;xOy3E#6P*~8a`>#d3mKT=g ~9!A D1YMPs|L9vm\7Ń#d~1@Z=J]q?;{gPCn;j=^*{E#ǔXюTSӼwyy#ehT#TQF6+auF׶6Ak"g<[ډjS)<3ZNS[XLTTv4GҩUUګuF? N#d(nT x]d^2N#T7$Ᏺ1bd1˶;sI(;1#d9MFa3>o(1pKPP#eR" (xJ8qaZ,;d02@I ]CS$徦lW_]4U^oϯ;zw'uР*7{c޴g}5kl(g(+50o0V#TSd8゚Z]oxou~?^;qiV귐O{E*yfr"'l%t0h~;ϋImdjȿ?W#T]s#d4 `#d%Գ+3#Tڽ:}{c:Qtm""$BǚmeB#d}Y4 %.#TtlbPwH9zdno1D4ש$P~#YCD[p+p"{x'#T@=g?=|'2̚e3t5\XEcqV(0O{=!=?<|C"xݱ3LS-p,%[: *ŐmOߗ/~p'kt5>ӗmh9|.l5\-US.9:]gAUެX0ID$QhFJrma%I8? %bᢢ ca?"Bu|gM냸y >4ROT'75|0gr+#TBrtQ+D+:;vv<,S864I 0o_Ӎb`(`?xe-8uf̑eϨv.ߢ]nYک^pF#e*D&1!?$_n>oo>FG Ͳ$߳T 0("Iу>>ݹ*BJG 606{ոmq_R$+8KhyJC'z@"&L͡Sh7X~Dw@v8!θ~{co[qx硒R~#dL\}q}i1sJ)^|/ƅSXB (2/ڠCil';`4؃2|cQPTS7?#T#d q#T82I?hRK1ٓ2Hn0A4x.(?i+Tҁl; A^Ꮤ| !9r˱C(D'c8?P~*Bx_IA9b#d,y15ϭ!Nߺf7yӯHN? )y&t)*HH߸H'to{tè?\=~|C4~~ؕ"ʛtuQ&loP)x3s'u a= {.I3zhrL"`*O8A xu]CwP*}y"mxyVOj8Hs;zTh&&">'LNlt d!̀i#eF 9?-3 +r#en`q^\@0wtuޤϧ#dQD4Mݧ*c:DDUOD|0-#T\Go4?M͋MjxsE/`4f?X_6iؗmv &j"~)>6=#dӫC9D'V~yiN>wF*O@`ϸ {gK$&@@?G$qE>V>3~R4MZdOC):gI0|W\=b5ms'|x$BC?%?dc0ާKZ$?7wCYEH<*9A'ڔxBaE=yzG-b0c'mO2tw9n]Gѭ{ީV&":.-ݜiMM@laG#eUSQ #TפU;TN{;7M&!"XPK9s춘*-#T9ِOs?/6#dkqN!*h9Ao߹iZ^d0pQiCz{XAH'Ǖ_*67FXֹQk[-;pO"!x'.(˙=po<'Q7#T#d)3(x~$]X #TQ;9 |cv#ejBde01Tw*f j?؀sBD84=%#epCk{k3.ji(.4YzZ s;_S=B6,G1~~~Pr?-g6?DQ*rH-ɱ_{#T;M̓* ^ ?Yky~3α ZjHQ$duNjw,@Ltb\zxD5h%}KypO2O4Fbb>n۞io$cDpġ#e#e$Gw3$CDg4~iO8y}lm $:'ZO4q8rܞZJmq_Տ~CX0}rH604nU+=3a2|;~РX*%T\Jfp 0K34ZE?ZC(O?A:pw8{1^1TA cLKswS'޷\0`XV$A%cN?= #T:x}AQ5+Qbi %p#zT!-l1ɈHGpk#.W'TQ~4`"(h%1@! g՜W]Y~nUC3ӃÌwVĉ;vQI[(4)8Do^&QocѠ$)z yԡTDR2AicPwQ~ >ߓǭ#t'#l>Mzw ,3;u>Su|R#eГf2]=;080^Jf3#dש)'cӠFL#GSCY9A%Pp!s)#d&#d#dO)#d`#YgZ GٹOw M{#e`zNC#hK9D#N67/r<NTtsbn7ӆ#dݛ{<ӋAcp T3#d9r9#eI6-L& krį$m :(&"YHwɱ(:">45aLI (=M8FO~&cEAN=M1*#TA=Ɖ*Hzߠ_4i(o -OV<Sa) B-9ޙ.0a$%c'ۏP>8xM%0=2`><#*ǁa6@ !*|cp;:7'z- @#d`1͇#ITožSAU:!7GzsnD_01Ow>Hp.QtsȀ`yjnVBzY%M(#e#e/o?dd>0BΧF3}EV>Hg\nfLgR{Q[`8^ЂY 0јKMF@TXCKUae$H#ٶз)i)(o h=g'P "Χ0@_z'wdDڪLd%3Ij_ؿ7H/I c;$g87,gCEHPͨ?Y=:F*:qL)LZ,mmtirjgi $?lMs⸔Uհv\ېr̄.T#d&65M#Tpv -ePJ#T9>Z Gk#TjB`$Se]*Y7 ? 0)= à Ņo 8xX|?$ԝ~ӯ|'!UT\eV5#deivTGp#Tܞ ~vD<Y|ȞazӘD;VIA [0f;00POPW债a {w;E9ՠ@nuMSOjpej.|G,S"B{9~MMZj#e?nV[(lBTMRNK2J ?zN8e@8WUUH}@[ʌ, ?{<=I<ۃB:”hCg$5O$$0@۱K#e@>LwILTTd? nnX2vZ﵆`} P~ZHxO;J+9S#T@M5#eV@:#dtk7}I| >Kq@uXo3r)h:xԾM=7BVwϏ(pxO5rX~=:K#exr"A93W$(8#dpD6˟nvb׷ZBKl촟Ic#di&c_ޓR?^cJLd[>n=gad4#@( )ouMGbCW*zT|]X&5ΘBng|qRlQ.j5I0#dôKWa3F,Ě3͟qE'[:P߰?uQs~[/,]W#e%nCˤmq@{TC}//#T#d,=I2(qO0IA[q5#d d,\%bCg욕C0Ap?@@kK$2,\[?vlUr 3 WRR#Tc!)X%;#T>8b ?52P`4I6$Yh^4[B8KAGm :ӿڌ\PR8QISrDDxt;ˏ69i#F뮙ۼF9PnZڡZ w@^10,%TjTE{I?_,W^'ndWv ?#e32I!~T#ej#e"";bEIF>R֊<"qlZU|n>-g;p$!dߧn{8??ptG#P=炌lq9\Qo), N&utnPT_SJLwPסs2;e$ B7g=P^#draAĶ2*&;##T$/@uM$`e#d*Zf\0 0-SW .05( l@b!a̾%lh?[0DEU_#2('>]#T>uB{BHB0a#T!|5U2~cPtV0ps'NiSng|;EؤCNv`gXD P[ KP/P@J"Dcпwy>UAfWScl̼ro~*6ۊS/Z"I"ǁ4H CLy#-Li ȿZH#d#TOʥ#e=:~U`0D*u9f|xeM=hiۘaW >^';(#iN1/MB2h%t',7=C̢BH\s vIvhKǵnTT}S#T[HQlBD#T|`o{I5'FF7@,@4LS@cI`; @55k#e/e_?hxw'۠=#d]L%[7劗/Ԡdqw#T~]MPB@RyRpNTApKM3ԘSE` ҵŕH#dq?MH9S4eċ`awH؍i3e#d4 wkT(J@MDgiNa#dբ9!n1C)l0,@@!TAOԿ9yv,~_H#T}LIw`؟WXKPH=8pG0uGYyJ̢Rٿ(jVGiO 9X2/FOTvD}y_*㕤P I ;2! c߄晊L^(xcuN.sa7#TQp^nJmXDgn,ҋoF 1Lr󁬩y1#d6oRaTv-b@!B#؅0L?d|#dEHv%4#dҠ" ~?gљc^h*,k"u?OOŊg|%#d!#Q>O^M۳5r(!{^! 4u-kX GPui1IJFE/eH8uŤc.RmVȞDQRsLA)) NqF!&g| Q)#p8k*(ɪ&IO5~^BXAydSf QbQ@,*08[#T҉X'r>ryc'k _,kf͹L>`|T8Bmw.#eCGDF#qh$duН0I$<@mD4D]P&fSt}<{{ce߷;I)a0:nwUK.}|AlYHr+~f2 nfjB Dg.`B?A?[q@G76ɨ<~x'*74+Ն ]QQ|#d`A1rk燵.dp/<,~+H26w##d-〟;ڟfJ$(KVւ Ne0}gZҋ]BUO|w/0AnƟ#eH69 PM|0r_.`SP=<<ׅC1NXc 4a#0 򞷍DӽN93)<\44%UF}7Z3:s;i׭3">xt/5̴2ÅT__m6ۊ_rl=pC" b~@EKx=Vsn7udG3lzHџ E*eO Acg(%l+i8ym5WkXoG}RXo4XM3± I(Few#T\1ɾ~J8+lAR@0ݏ kV_#dsj#em6G#eD\žtID7qa {"-ښ*:#e)H#8r$#TO?rvVHyh]4_8?LrKG#d xI'> ,t#dga, Az?Loo޻Yxqt#d9hu:$s˙b!U?WY2ѓLW@/y(C>d |@JB|N pᜆU#eB~\gsɦ+O$n7/pzN?#dfKˈ28?0*dC;D9Ӈ"&p^"lX :A9vaj"@/KKg@I);ZH#aI982h2-#[>4|"OmQUkZ?=J-r/UTEUUky@oT2! GksX4#eټF?C[{^e9Qb"<51?gU!I@lY?P3C`cHh$VLhC?ժQJB)m[AJ|Lh>@izDܸt9hh%I#$6V~؇ H_F `(hd[8=TM'q+td 1LyŪ9iXV1O}h":1U4,CZ<d65jxݛlf)nHx#T-ϼ~0U#TQ4{A,,p1%M82d9K2vSlaF3F}d'+ilR@A>G?g"~պٻ&#dΓC )}z:K<~RC@͒s8!t[ũe48>-N%wX JIPsI>\<#"j`06r#d߻/"w)٦ M"Fo1}_|gZ- 4PRQ1UPج&9+ ZX:n\ E 5ے̲s&#e,BOЖ#T@?RFi](#'0^D˽ L}ٜAŽH8#8BZSRӚӊ8cvWd([0hLbH5f$w/ %SF"tL-s&RíD;!}xүBa0תV+8;#°}h4@0ecS"LmJ*d>ӡA 4r 92dbsg|?&6ȺF$m\a6 s٥ (C19`Blcbe@D&jKXFQ'Im!2ɰKG^\ FO<1<CCPʢ̆,ZKޗT&ޛ:%Vh3*e+KT#dB̆{Ӕ#d wf6uz?7=C7XP~dc~+4=T#TFCF^j#e%5>L>WFq+Cջ (ciꌤyVt$3|o]lj&ѫ[5F&JL{!n~ˍ3d}kY51* dF%#d#d7FN`HʲIK2l#X5aG;"C>aߌ#})K*NHR cBDtٯMI}E&ǯM&b$Bq5/N1nLQ̎,S CFK+H#Tʔ-K਩OK#dW\^]x'#d]A iܧ_w3RJYyc>A;!>C~^OE9PK%@`LnWL,TaȠX]6<&D#dZ[w,x(#8%4? 1C#dͶ?-O/w)u;#}IHr۪=j#yOfWL?_9=W48#d;;XB݂ZRDIϲ=޾~$srt/_5H #d _gP4,M#T߀PAT/vwz&@}XIKщʹF@Y [q tLJK&lBsst{ZDPdPy',j!&MP ;\a2s2p ^"Bjy  ΟMU^g]HÞ Hlָg !]BCi{jCm2C; S |#d̜ˈqA].#TT a6( 9);\|N]4׼W򳷷?ew==J>?DG#1#e!B1LjX6T>*Ozc#e2[a¬1a!*I8rG\咎Aa ~C!(tE0eNhӴn8#e3`GK~ 9%6گ4ҲW4'k*yq @#Hp4J: f+A$*>eTk^y6C`l É 2Q#eӸ|^=cS|tF%߱oNT胗^i&Q:q L޹1EPBY$$#T Bi;J$"T'xX H9#[#dCzL؀ڝ#*C`*F)[xIqT4Uc[n NT;}bM=CҺEWjWwtS>)T[򤈩0GD $%'"iAa @envTC5z#dz1v\vČ?Wixlt:9ñC,ʴ @VQаVQP"1ͳCvj 53RRbT- d?#TiD>I& v'&JC~_'?ڊ&Lq)b9 :hR/#T? >x%X=9'|I^_A~{kyz!(Abm?g@Tz_ۗsĤz 2B/v#d,FL,P*peP! 67m`ٵw?;QLzo0@M[s6Άr-R#k]P\aZEvrAv*:4o; p->08?x:'#e+Y ̬u@e#B<)bA]'XF*W9R#e(Fˢ.qs$ "#eFD#Bw(%#To#T6x#TIHSPـժ?H/ٸ='%ʲu,b3mT>}|ҧ#d#d3X@ԕpM-s$5HuǯѤO=th4I#eN]zL|d*"#TД.v(Q#ePNȀ CQM J J/_761GƊ*${LQ!* #D@ 4- a(ȄP‹D$J8^~.;K%kC0NYQ8] BAӺF+4b(nd*f&R)LXŀ *AX(kV0Rퟄ4)k4S#TLi &5Lg\r!H(DNs`.<7t#dP- !-lE $uOF%)HR͐ѠtIJfD#T#PЏ!)C2v#eRc~=o8:9l$TQ#dJu#dA'#eB;}ih"8j~;IN8 =dQUD7g7b`X,[! xș@Adblz Qoy6m&<'Rk$)Hu]ݴY67F Ou$0;:lèTRٍ]Oʆ?4ns\Sxv٬7!Xmd!QZi#h#d$ē~ݨJDcx<ݸsM/9uS?G zn'4fR%3>ma|:NT0P困̎c-n'3,~ 7/N_t#e(QBiY0*bzuYhv %ϙdQ&DbT#e7#epC1!L~7_7k֟by!2CCfr7OQ=P/&]=->( B0đk B}dg7r3/ڲa(s0~XIF#e?=.a39n#ZW#d[&􃷟$#dtpu,2ŗ3vi@g&k#e{!hz+XAj",hť4~94VeUOK]`A8Έ#e ?,#eA D$$Iu!#TP0F%V|%7.$6c6nۦs݊Ĩl;X}:K͂h6od 3=B(Q:[fvAY4p ֍}3eӦb%RJpuSlM5WU M6?l3z8]*Iyo~rk.,i1J܉wN.LQb,lmh" I^3-1 .G`C-L0mO偮#~BDLȩB"D4QE#d"ЁCH IHPKI@EE4L(R#TDPQLP,DH@L4 ,( D) B#d)JA0,0J0SBPLu˼O+ALV0bcي?6yfWwH='|%JfRTfD`@=hTӎ& r}lˏ)#+pooLy4O|3`oy."*'|#ed:k[7@S̾ ix ,"(#T;! \oeCz֑pTO$#eG@ aSё{<ǿL~BpM8;6;b?-Q_[$/5xp/q7ɢ؊Lqӂ܇hslΎL1vɬ1mò%1HjX3AvX%=>< h'$Wߜqqi013[14ls8#{$c-$֩t4"8sFH![N0iYCCwG<}WvAG@_dHHPj`#TBaz1Eu ܭ=k9]?yak#D2& -4 LySBcL5\eXk@Qs-Kn]Su#dR"Q=<: =zsrK̸J%ͤ!-HF<+#m0'bAz5!|F{3nQWWڽ=-#d).#e omJs.6FyhDDS`4L_w Fo.45&|%ST\1gox>օO^6?(J=nM0*{'uHKQ:~9O%Mj$~'Op!4 2O98gҊ^/o? /Ōv>v6*Ea Sؑɉ ;9\Ĝ K'\jDOmTo~>l<'eT> A%%Ҏ(rQZ#dxv|zXՆ}kh)ԯwɐ֤mk)wB1 ^/+韒b|'@qzb|C0G 쿆/[֟?>}GebC}8>~}bVUQDQ03}aZ$ 60헷>Z`˕#dK#d@ϙפ0ECSr'rS>C Ryo:#d<Ԙh*J#d}[@jPJTP>6 V}KfΊɦtrkA#U.4L09~`q#m3SOvZcFqfK]?‹1Y`Ӿ+hPp,T`1Mu\ͅԄD/j(Ǟ.aBH#xA"4"#dptF:z8ϋ`l:#c뮝0F UDio.-S-#c)h=z$ѭ#e:u֊xg#3pHv׶XȽ`6z9jC" "ъPG$0T#d=]&i.A݇YLx4m{|}ʰ`;[3uI`Vx{6#e''屄 sUͦCvIg#E@]s\)A&nQuӪHY9hIOÔ8L$BI>lܛFbexSRmeΣGG['=84ڸvΣ,Â^w2b*8y \ڣ3ElPzhܷKZ^x>'c A SlM8)xy#Tz-}ƫ+2rΉf9lbω'RVIm_F?Q#dT*u"Sz) 9 ;O}~k *nyp]NMyJCwJlvu2a4)專la|y}#egًA\Cc|+j,Xs5$H0p|ɹ$Cn]ոܫGzAdz8^GF8G^E!Dl{=bv$3#eDUT PX*wg3l<-A,I f `١M]%v$:I#TbJ*RkĹ772$ܣ"s׎}*!P`߇ pR2^mr^lgۙBtHъqD*9qL!rg/~H/ꊷraChGb#d%&P&B"\bتLiօ)h&#e&B%%SWB!F9t>oh`l0œK.u$}W!۵Og455'f€1C"4bXꡥ"U0yJphJQ#qXS\rKPU G`5]M XHd #T6P17'!Dqz7o$sn)NyzQNʳ#T#wOBڌy.c5R=IQҦe1ՕRQTEةS*:<J*.uՔW hr8ܛzEC /5RAF{ =uwlzϧoW7>>Ќ~Lo#T0`UJ,0Bpt#dh-E#pLpN)2sF7 M qG$!e8keG4.r۵}F;iGPH4Pg١FIlٱ1!U0bM۵rSl2$"5i0s!eM`eS(=I3̥bCJZjPBl*D `Ṱ dGѨi@bu8 .NpM  x&HqWO3GjDRi)b@)DOCVNMNsT $za$e!#xu)\A'yrDt0L=?!T@ã,+'*h#e/"F$;=@;?t#T,i+=nʽ~lM4Z2i5z<|Go1G#@we`BRkFIr ;~C#N#e$Tc{!:RCh<PHYOBHTCLJ㞓Rm3WD`X~`7>G4]JJtСҡ8mpG@pQ~qloNJ[)=ݾάj~ÎNJc{RH@r#dPК*4HX"! ga2nm4< TҴr6L ؒHx,(ǁ5$E ݪAPz:#d 3*\#dHM4AA @VU4mf5ev#T̨}"nd@КƊ)!9_ͮQN1 Eúci-"cOZ1u BB A{0_H#8RkʠĒab({]C9h\#TDLٿf 3 C_ql^ @8;[X.CX%L1̛uEo0?.a. LUNÓOBp27 ف|sSdm/({1}<:2{/-LhTNݮ#T?"3P(kJ"kF#WDf.[\PbUcpPGAÕxR `d׌ZmٶO&dFuQ5w߯e&ZQV+[C6La(AL`ֻș`3rWI)#dmkV6My(OA&>#d#e[QF[<%:9B_?Rq\2"#5I¿ѱ(EsD5FGPo;)ґG;Υ ܙYa5Y[CDmG L74)hSL9rGS!U&&cUyBiG:҆9ےH˖ޮƈחy}#d'L6kqȚ5$S8e6 B zl,5%c_Mc q9}NCyN^N?D2D3Hr@d L4hӴg#e#pn5LRXE j/4S 4kAkK#*5[muG2M[7%G|Tj#u>աa6m1s#ep㛎F\#eQ9:XfB'_?=VRV(Փ:k#df#eι~7?zILU-zsp:¸oDâ61.)i$TQ⑏ V7#d!#" .]Ks#7L11(itEs6b)=Hki^CTv;މGz"eV1))!m@F3%7œ#eb7#dkh0FTG\ȷ9 I/(7cAiT.hXdyX4;U{_f{1yR4T-a nsgZ݉#d0~[?u9z w5ƽWJ]¡"<1 ވCBt 'Ѓ1 $axFC!NC;u +$+!Xݚ! 'zLz<㍕ #eTVnMwDg+ SG!P"T][둃r݅&?20M;`;Y@`atI&FYr|7ß?#XIba&+#T%| 6nz}}H`t/BGu'Q"p1(HPA:#0 K7UA4ЄT#TĩPr}#T:%M$"7)pAp8OQ5NI$IDCf̐&d:Λr#dqE#k#bc:㩉"#T3Юc(*C9#d&acھs=ҔP CDY *f?yGŇ[):1TMW#Tԁ@ICJIʺP4;߂p!ZULGb$rh$yp`NJ%<#T D֎鄡4͵M_'5EHe=`c#_R1() 7ν]q"`faT#m7%ns*}FZV16sr%]wy`"N:ә7M*#d%~'ϱ,TI`(d(8ĔbZB")ZiY4DP4L-RRDC˫դ"y O1ch3O#eYA/偤z3gog= 5)kmaD5Q[$xfڧRF&}0!ǫsQRt #'fIOHwA2֘/ # %3&*{3j~LtMއ҄`\7#d}pc]CA>L[ m-A05-#Ɏfьm^h<) P#dU(1W ;C^~~9'__60hf. tU1j/xI-jGӳL9g40fQ*5Tbwrwϣ#d,3.!֗ WAT6V? <&YC+O6m邴~ HNWa}]@攰,PWKFsshF#d#>z㜏\n8)`Ӡn.W|ZskFQ3X!DKl嫀X=f(I 79}bǿˑՀT@<$)X ~9 5yltjeC&aCp%{d0t| zuI #dl-~#ej\4Ҏ$E.*jra({|Lg@upOnGF z1TQ#e"P >t#dM8d_osAc=)N;m3ʊN>ȳc\~;C#T9A.N7!l~@#T4@#T!_52՟(׏_1:ׯ[o5\GJJT^/7Vf"k2`bnh0++݀UmDǡ[V@l1*dl?$Ezǯ;ϏuFN *`C$a1_!K5'A |v9`] ,zwPy6 ^|#T"Ad+Oxz}ubmuZ߁9RqEѶtpq#djo8,|E9,I'R,?ċ48bxc1\̽C†i>1CeP`pk[9*_&u-*Sq5npbs0V1Bbq6aU--Oljl;<l'/!:iU"KN3Go-CSS Λ?z1=y=.ҍN)EͳyxRRf+#dtbx:X(kg-Y[CB:L:aD_gJ#,Jވluz_z4*3fMTbOCK"JDw槃c30A;j4s3o71nkVlWw,Nk7#d"Ht/RY|<.B'QUޝ9ImK(;p4a+)qjˤOrfd xZ!s˴[1+[IɼZw\NZ*c%Sδʦ^6V*CmX,8zQw5CY)S08Q&/sk C3gn]I0= ql`uifF ]@r OʷDC@o<,Jˏ)0[7qq}l 'Q.䬐ÊEjRN#diTLSq"h3wcߋ~iTLb}wR`F:>4#(w;AߊxbK$ ]Z1>\ٍ6Vw((pfB 5C"(l"cvX/u#eǩpgyLekÃ5#tcX$;7& 6-4'h%ymU:qf@K[zc.V'Z7xE3Cj1 5'XGnko✩Tf =$91ZRa 2zͳ6DmSB5]sĘ%wͦETȑ9xZ Fgiu9wҽ-wr͏4s)v0)ίCv}ĎCoҘf2;væf;aMM\0ݧ42mߗZpFvy 1. $F0N[&㎒PYƶ#e9t}<ޡ (rHYʇ~Rqێ#NrC!&ITSr&KjyvK єpG.vT*L ؚ䅔y魓U5RDY7BXvi20uåӮzK&RyˎT+R13U)#d"KLINB$Cdꣅ`.*I]+D wN;܌4umc9205}fm$YM;#d>!sߌ n7.:gy8svCri" 2!%3]6#deMB#dfv#d.^8#d8T/6w9`Ƒ  1g,Y&9}>bo gV:#d @|,'w}*Y;2vż)r(uXP n Z3r"r1vD',N>2α0@AQ"[UfhӓH# J id힨vCޗ^y;}mcLj#e1b8SCRfS1O<`!ׁ(][ɼ~8zk$ԆlrM>6)Dڶ뜝xӢDZAlM =9ѨP=z;P7ۃ 8CwMV#NJ:rBDƖUS!;2C;wBO{ ?#TQyMh”B8|u;lbўr*K t%Wth~+Qy7nOip'0)WPj J#!7:P"Wh!#d;>8.abc|P959xHGzU\8|CzXjY4jY$K:z5pOToÈD%e%e#n:Vr01y;bE@v;xؽ6PY9pgO8zE<9E~ן#e9,vfPAڎB{ٍ;  ΩH#d5eh Vp90yavTadcYpw4FSu;񧃲yS4*q–*jp>[͵h|ID`PYRtD.k'fU̒q%byyyZbNhH~ vA>8}flnd -ܺxCܨӲʉ978wvt\hgi3a@]<&VFz7lL::*&J̱gxj'(ŸpG.Yp"XOdh#C#d:Zŵ(Jvs#5d3pR3pTK["r$D3"| `i,5{tߗ+Olv4A"$6baH#NhE&!UP!M=:$לԤmDun@81#eƇmeON!\LbLɜY Đ>XC𣟜 Q{*DDbH|dFgXRxwFDn(|{ +&+OnkԔ'GG:#T0-JR.pۼFfԴ)dȌq]K" ۉgmLe:LcV۳!!Yyk|wg^\o-RD1;H?d7{o4̂+n5iv+GhF_GI#dNR#9sz;8NiB5g\DWt5#TBh#]όcq rѪ>'3r$$HlNl&յmФfc#d՟"u#'%AMm8dZ'x޷pZnTnVoG.C 傁m60hq@$3Z$,#G(Qyt`/,az &zjMY9&$!%@yubW"1Ɩܪc]c8a~WH) VNLsIfhc4XۥO%v^OP{{ǾU>|\b6U&e2De B:& h))E]*ӓ%[MFm{wyVNL䜙G#Ul<1ᮝbD>=o@r=*ϭHɢ`kl}HEVg1R;NqF̼%l:) T#nZ\Ψ,0A{NJֳ-$SyĻ2 ]ƢkӲD!}lq #efeaG f[InƧDkYt 2հʹ[pll\83X[#dH'JٮʛP6@L#@sd8.CaKjB.;T6,!.4W*u\[TlҘAwBa)HJXFph08`I3h7⺜L9uviRwNv-k3ܽ3b)IK{2(xޖ/f|Zy$NoǣbkF4&z5͓ۭ2IT;CĶSBt\҂OXzΝoQ gHt)\C5@1>c޹}"S7Ju>&Nx{EӀiƠ5]d< Ĥbt\$ihn\;L=&2]IjubI}˾rW##;yK+}YX|@N‘ļq,uxY81VQqtfjr*# eۤSWjGLjzx)O|;2FL4gl @YBoX;?P*꫙nZaU R1zms`!KSWQ/hƂq9N5udZ|dZ.nt~1Vht! in졣㼷|\r_N0ds0jCˈ#My]7|g>RiлQ\=Q 8A`N͡>H5e[KdӘMQv2`=m,!4s/0ط*.u孓#ew"QT#Xy)#dJGBqt4IЊڇ40.Bf:`(h1x"#dyp #IX"i{FD<*%Jm4AVHFIP@fYH\@)Iԇpn?k|by +,x"\[/ 4{IQ͐ޑ&]Sҗ@0l9#T0hb8Pc?#TTXp>ۋ#Tp#BB5 @9@p^Y6%) n.FnS2$@GBzˮ 2C5If1GSl#&tŖe/ூm>=*1F61$Q*=)$L`3|e#T fHJa) FfDPId/=}4G P HX"ki }y;Nd詂AJS̟CN>IQSq/SeJR@#e{ipÎաD6{s :\ARcO_\ z7~O#d끉H*H*#T PX@J))j hI>ӿjLGg`4Tit({K#Dhx zp:þx*/HcoaRy~Q!k %L +sd^Dq7 0ڹUV%F4;6y6iLWCۧB'S`wO^}5T|7r~86x>Am[?eۡ@ߞ`#d lJ#TRF"#TB)PFdx$ p nɄPޔvp"YkM&2rw*h,lLh\#ee1բ$#qA)%fJ #7!@LB.@rIRWcogu_|9p't2ߴhg0,gݶj#$0 1qi'c^cW1sdd OFuACIAE#$JJL1!kz&#dБQE""@LB-#TyfHdtCX$ g"SCH ѽ{U:#D w$(DЏiTa#ef`("Z#T}r`PIBA 2C#d#eDAP%$.#ejj!d $J#eI#eZba#e H"&X*b $bXhe"f"i"bB((PF#e`"&b*"B" Be& f&"Ie#eI@!XiB&PH`!B :*" "@ҲT 5K*%0̢P*RHqb)"|@:P8!D!Dt"{'Qbւ#<]Ww_ݠjM3$YhXVK=@뜴 ;oP6+8(]Oru]`D'qP}=9fkwrd54%}`|n >t=$9A;2?nUZոy=&zJ5"gj5DCLJ=b\QN.ret贗z/hpQNAwuk #eME)#T.sNt,( $Aȅ8(p%:hКjwǼk$#d`x*I|S1F5aP#T Y#d mp7绡WFo. "f>w_<};18Ã0܆#T)[{#Ts=R"ɯ~LfLDdHn37ZغF]x :]S(Bpy *GQ1v/V$ >LҼ4#d' a&SIALRDT ʊcAZ"O{}JCbhhxH27@RVy/V[!41S.vڤjFQ" >G1&c*;L^#d M ǐ"_x{D*:Gr@>ZW7%UHRUTTU\6*@(@(C@l`4Uj2eDo#T(h%(P3%*A( Ո%e{b<fZZL}Wstbj3avԄS3/`33 L`,}v9 @^-Ci`I.my ϰ<#dESA~OѯJ^co`^pln5t!j)*IO9$^^H1?:ׁu$ :ը=PT#T8ORs:GQ toL`YbQd)%VaR#ezt!`Ѡ |.2G#egf1DR.gۣ$q;h4jr9#`8L<d&;#TFT,4s[c͠$#T)[(14Dܞ[Ȼ:n47*#e9Qx3Ȣ*4DN@fĴDwfyy$)hO7ʪ c]x4NYt^E"y7ܚb#_Vj 5(q#dI"P 7`D-#T{~#e:z?O"< 3mN)Zڮ=PqOxg< )}]JGij8tUL %9=F#C|#dA >}GO"#e(ySc+0JS#B2A 0>#TGHHJq"h#dqyaRDm3Y>)SYkuaK)Kwѭ>O[֛V(ݘp֦YN8CdC}+ Is@J&#TCf{иljeq('ϲ6n5lIӡ\3$?mG֛T|O 3{!Pz bulUףlCom;m`*t=Tuik~8I)8ds@ i&e6Em/7t֚ _w6FijJirS{}݋fBY̧`iH)zQ|ZT:UʗƮ"K綬 e_ ܚN dbJց/;÷WK)8=ٳ ]UXUjm&[5 F@=ELh9GoY[Sp8x.J#dTb%91 F4 ANA=8%?Pg]l6bF,L\R'<41ĺnWr#C/!R8g4I2D #Tgn580DdJ/"w)p}a1*PR4uQ@I%'#TzTRĴ1}2U!BO:ʢMB44#M0T$TExmf$`/ڠ6X(y۬xh#{p]1TCDU xF?V4-zȿ{hOi PIBdZ0AQU2Q Trpg?!AS,#T}$1Jv;m4#L~RhnQⰝ!!$dGL@TX"l<8Ԃ#eM69J GoRؐpk+IB^Y\Y#TaLEPtfƪNA5Nkpbu#d!bT6tHC<[ 2^#e\!<*OCsッS@ݹ^;k<9|=+`rmnAFeWWX[Rt'zt뮈TգB',If*$^4&ATɪY=fdFR,z)(nEa|4L91MML!E1[堩=]+p5->tv %)Aމ6 dD)<u!J*iJML,$,#d!ic BH֏ D#TQ@R@2;r#e(y̡H@x#TXlXTOAwΉZ#eġ1=1mh fzc $^KFute32x1#d/#TNa7& {#I}i hm&*i!31SV"^bCKPeMc\yQDdi9yϢQ#e#x#T.T!c3fǻzFhIA#e)(#eX$#eF)(Zi*!(B*#efT))Z#e(hM(Ri#eFRJĩ]b#T)b)@$b$:#e(Jbh(!(6D#d4-!@BDRU- DSIJ4DTM@D IHbt4R%PA% U#eJ#T nοUOaД5_6fAԘÉ F+ܙ+`DA*R2AM4y#dMA 9Na@?WN.tS(ScܟXk0>9,#ei!7p#esM.glh+Z1(5Q#d8; $r/:Ec܊)kb ~ {'xadtNN!ʡy]s#ebXl sTCDIO))#e)(#edh h &bJ`ah z8N +oF/ϻ A#eCb#T $&$gbBjs& #Taqj{ɚ$5Ar}}m̆FD@'@t1? Өt@HQl !AzJؑDcp#xYB5#e}q=hgoMIDsāJ#eyyC| |ҧ4}cg!gfpX]zj7@p*]ѻ[v1PnKBt!GOH[#T7 NVR2O(uxMD.]d&;؃ |_>UL"aцM}?*kjx+ղ#T|$pVA1(-hJ%Qң$䨭('_C#TD B)Cp8ZѦ#Tړ^ _ #ek:s[[PWVL2)"mz ~c]U0&*2:\|ɛSMIEA(@=1W#+dFQOϳ+ô#dM08t'#TcFB!1 G/&bA<ܹLK%^Y*(%()+Fŗ*)98'@͓Ё|ݐXI%"$#eb#2qnbcn<7:;:mmN,vyN(F5#dQT-JM8qMTt; Fi!K=9iڻ(\H#dqK.uЈV[(ʹCmjPj`w>0<:G|c$#e)J<>]C^yu燘_==8CMB4.Tž5,JD#F<幭DG{%yKzGgȒjy(^+l'grdoXأEhpaIU&/a&X944IsCb5ӛMi4&/(C"oX,y5I]N{{TcɈP1y4tf5]:mM"4܂p;sFr1ƴ3@Em#,KKOR#dXtj"17!F@/&nw$@}p@615 f#T-k9r40~Ur@?HrRsz[tv^>rq#Tȁ&#e&@8L d8 -xd!15ds ϩSB@#eҢD#d)LH'@IGI>JTAMHNB,Qq&%Hh<^Y"4p K D&C %UĀP.@i ($)#e6&bW,JfI@H YMPR Rs}TJUH 4FJ#eGH&)@:EГH%*$@Ӑ)#d"R-6C畉bb $TNt(ai]?y]AgaWy~6fC'g%9 z6'̊\0>cJOgÎC3X?!T" hHs[OC`C:;^_LCi#"`likpz^z!0`}WWtcЀ~%? A; '#eP#eL#e%D)T#dWQ#T]#d#T#e- J$Bv'<#TZWhQ%~SD#Ku)#T%(+ GX,EF)D4y%\#TH'F@KQ0)8mgnrE;Z@Z +#/Ojر҇li%\Ϡ8q .5U4'} y/.~ 0ݴJwj%G0RW1϶?K_O##e$CW]"oyQYh~}H]$EX;N~q'8~1Xp 5ѢZ "tq_nn~o-;Y@U 51U?a[dn>3"I$*ȳT K(nN(MDBA#eRP}A17bĐ#TI?dk2  Nkb(LRPDPS5P &Y{[j~X_4cYxre'a:߳C I!>Ҁ#T4`g~g7uoi$6.,G.#eLiďn͖f.܃{f.^겥%NΡƯO8Ι|i'5Q3#dw2\ '-ɇqN#e|G(`t2[AarN 8 6(4-!?PS3qؑ"Y|h0MBJwy;4C;붛gFk\TN H؞*n=IjSa#dN9wU;6Vϻ%tT˚s|RYtl3ԘIE$$Ie;J=\hǃ*zf*վ9(s7d,s]☰`#9PX|e_FeJ2"0ÙIEbv}x£g:Dp}W?i@j M.!q#"̹RMbCpS$7o#e8w)&M?Ini0:=!M4w˳I Ju[#qThT JKgJhLD(q^Pk|.^ҿ'4Bz#=#e"H(A6 kk~gl:,B9P=G2 YHΖy$YflMlP`η 2n\#T%3Ci`D?lD#T Cz'C6Nj4'X< ˷d43~$$.#T0}Nx.R vI"&)`Ij(( f#eBb#T b%A)d&"$b#e*i)))h*)XI* *(FQe#e%#eb& ?Y(*BB)!! $* *YU DT2$A$P4RD$-EB%CH!(B,"%E$LQ-SP Q0#dE13AT2RI4 RUC#eDQAD5R$*@HP@? К"bl1W&$]\CLñq0MBVuA@N#T%JPHZ `Aަ"#T4B)ЀbU#d#d(9Ji* ;#e vWL)HPwxJ&!HC=ޝl'Hқ`M"R`䯢AJ%ɈF"o[`1)HM2QP҄KҔHKd*U"H ƁiN$pRbVXOGvMJֈ/&hfOk,1nCMDJDt);#T(u948jCd@WzR{r2~H)(@_D/7|m߸(i[H6؋ޡo!ʘ$~C=8mr#!FiD%Xj;2^'(Cʾ'o/SO.R,F##eE%#Tѷl`Hpp>|KS6"J±j4AC݂|JQ#eQx?uI-lC!hj%X 1F[,숋# C)VNҔF 5 xz~ΰ(6?M%#@؂P64ѮYsi&#THاTAk8JR h<Ճ[?Eh:wg,1(/\Hސ=buHPQDE4@TTU#dAMU@U% JU$!CUTQPTE""CۣZ*(dB*d#dyQߥۮuMl! &-ۙ,R|x43mo'VxZll#e˼´^Ӎc|IUZRĴ2?N123}67p^s8wƆ9[I m80þ5x"egP&wINF$a#d4r#EfJ}Ɗ#e d"hP[bIpɘ#e#e);{}іgTG' *4ݰPO}A>Z<;"6$QgzH 5ʵ= h &8,C%h|1(~#eNr8Ғ`GF[#T]pңPl?C@--ꄑaR( &f})'0ȘRs9̲Øxȏ|4 qLKG?7y(ΒD954WX5WPQ}#eŝ7:WJ(~q~>(~5h#eB1#ej*9$'2dNbvd1>*Bw<]Cupl^poGt`|;b4h#d&\m#e)#ehtF#Ti(n3<'' q#ܩSGa8\4LFf4T0C3Ot~'똂6^ىJ"0ֻ\`g [X,a6|IFdӊF&kY>^ZCՆ>[Ê)P˕YX44T#Tg6l"k6b։cb T2XJB1Rxp52pllmޑ׽4$ѫrv#ƍ8#W1AǪ Reٌ#e4*yZmĸ@΢xN ]`qDH5jGS3GYW:q)Pee#TQ(zuksvr?Ëٍ6Qt".iApaCdcԻ-󢮆5mp8z3֎%q1U5=.a&fCGB)5'U g=fύnhftD &9H0vsF9Qk38ė+iD̂hhҢ>-^o PTZ njB:Ճ'w@>jܦC\_o`OY߁a9#eFahF4–DEDPLdK!NADH~GOD!u`P?V(}D|Wf^*#eB@7 {>D B  #T``7w;(䦧c 7}RK_@k>]JǪ{O_"ͯ'qzbO},绱stDSI>(g ;֢ (Qp8%h4#TiHD~.G5#TT#e$**J"H#T|'(;8q#e#eZJKl%hR IB%#TDD*3LI2M(&#T͂5A=g'Đ{;sAm(Е4)(#9ɘ0f߽#R b$Ֆҍ W)XeE"Qdl2#e5n)-cmralvSҸpJADlC 9I D.uib>Z٘э6QڄSo-'ϾQ3|dlmdPe6c c`>%Di Çgv3'Ә]]Wk!s 5LBA/l 9!J%Itht፷nǵ({45+h"]s!ذ%3%#TGG#LL81Bpn+#dbbDtX7xW9˱HpvbKRp(TVT١,̈́q "`4E@6 Hnh\*"]ʲv18y$BW%a:#ev<0=ϸRebZ[:EPO#d͎k E6,+ ߈^]~hcˡ8OGˢ8ri,H#eHNvy G#dBD$25#eqd#eTCd(J4įg2P@)KyZi?Ѕ<" 8Z=,O!/!94AHPW"h"ѫm%+#}Cc##dU$Cc޹;h)44+N3MfMb a~h%#T&L͝' 10d8EuT)NU҇|;r>P"]ӆ]Ӱm.Hts~ZqX#e$ |2̓oebURj(,?3:i9u5hCTvCIynvkU`kᆖ8fG,k8bi45F?1CӜ5A#eο#TJNbxt{raT#Ty(SX>t[p#T.&wgpr00eM}_tԓjdJN/YF誰a"i'=#d/]>..؁G :ce0bu?h*9X&a HdGq۪<#T?05q;EaExG$:ݟv}HJ}gAˢ(׋1-#d΀b>MR)#TR414Jb>r4t#d4zgв1#duu.bQdLE8oVt707J҄\`?~ԖB `ރ-"3'aߴ;%ZLtݩeqP'o_+ SNÜx$` crP}(bX VD ,%C-:`彜%/ف^lȫKC#TPPJO58@4?Ivy( 6;ϲ8!3m!E>H_]B~kTERa#Tݜ'8f3{^Z<T6ayZ9hH9tnrI9שAM9pn.]#dTbhNQ:"W2 v!TBU 54(ndB#e"#olI=(u8lX@6rɹdO&~ϟx#TI#e.u@I҇#TI#THDCx`N#b Dڝ'q^g!CL%doTټI!E'0s1ڕi+1}+65}HS f{`AU\.#Bܓ7h7#eI0Uk<6>} wvS-Hk3*3gdNga.$<# T/PkmЃOףc3zqAL]#sohhMj??ciNMI?kFdmz1%)̚36W6Tbl%.B]Qe ZԵrN\`Èiի sK'f5Gmb))gV3#d;-vGI7Ggzi=>p28k`]C#e X?_ًSUr|н9/-VY@a+2<:\&gJRn-b# d<湌~#TDvz` 0?&ڈ! `c+bl'ď"WY-' t&d6 Za?8NVXNIcrbaQrj#Tj偡ʖ ZBh L\8~XVKk  ^E}ٿsTb0IJ<[8(l A7){'^%3NC}\C!{A\cN@Bju+ʋ+А(M#T@}&D߹Ih7@zyWOvtکSk#eUxHu R?O@(n;}^}#e4M0DĠ~ J]ΊCDŽN]ě$Ϟ 4yԄc4#6u#T4z"c;r$t?&Yz+3˩rzYC8%ȁ'6Tb|}TB vK *sxuIa~<pxȎR,/ޏWۗ8OX X}JBs|>gKQQ ~do^))>GBEHT`\9S 0%ϐFDm/ hKǔgfGd I41{ByPw?d#TJb}Z7axRxh9Oz`am惐jp2D 'j`}#T#e#eƃ`B̉b6Iyܾ4%w: PRMBuIˬ9%JH u4 ]$#TRC&fi"^p)AE4ahMp+MOZ#eK4J*(8BI!fBJ#e#d@qˉřp6h^?RZT#-OkW/ƹFxQvn)cU#FTq|HŕI9B9S/1&wGKl)ޕ=U(,7MMu:1.'m #dGNŗ4lIS>~.L)#dWzaj4süɧ9jL[>x $T!|go~^+fg\< M|,2#dyl&G5cXn-+aw3~ǜwa͌|^.cz`fAc-.$KKpy^4X-MgVf`K)-}$86u%'#d:R1 3%\̄m$@hq́׎4q$b(CQ׬,x@qJ2Am-2 }qIh#d,";e( 7A8Di퍭ym1N䦩t#e8pB4Y͍5.s݀3]WF;b9 X< ZHKAݰCBf#eJX` hJh"*%%a!^BCnjffHM#d49#906BE/0{\8)d>t6,zR q,tpU4$pq<==4iuF91UI7m]wcNyF=s¼M,, Ì&-Sy#'4Dg89y#e-6&hι#TD6xhI?ZI ^6і-հb8.1?,ѓ\3ɈsˍqJ٤N2.2}nv,Ǝa#eL*;21E "j`ڡیzqQRfcF* cvT[º4SL=&.*d8b˯4=*ˍS1ԲXF@F:ѧ&X9 tJ %!#TN$>&z '8'q12)Ib8p'xudsU[uyʊ >?@U`lHz U?92Ғ4T#Z5hLYc4 ߉n7qU!v x7[ǔa1ad#dX_4,aetdeZlȳXf&ޠ}@a5"K`逤" kW;ۯ~dJB[a#TkKPYjDv<+HfL2d6j34=mTa<#dYn]6u3Mfs[mNHRElCYEJm>Þ)+WNMc'XBFKܓ[c|GN 6&E\lWUS{ nuUG8i5Hz<|#eX1`L]4S~߆Y9&tKe-rgNlwR#@,iu$W~ނ9%q0bh2>ۉ(E#dz8%({ _p@ E!BRT'>}2&t%ՆӅnGG;wسJ4#T ೓2P7Բ-azR#e!%RA9J7т*P+H )#T>F<#T>5tN<6QFJxdbvDbDC'{b 7CTm$,qᱹ͹8CCˌ h0#T2S9!@J¸wjn-{Cݒ9#d(:#J4St$ܱ '-j$*\B%M؊AZ#eTaN@%M!sE4B!R:$~r=xa#T#dL]+0s"11ܧtSAP%VzȪi a#TQ%TDxV)ԉ#TY`:BNax3!A@rHCxM1L,ܨcޏ*bhŜeĆPtP$:M C5(RA#JS4$UAdUT4DEQDwXDEz#A$EADD4-#TRAKT,T%H4(C@LKQD%0E L @PHy11 bAZR"a5[ ME2D  7[O\s@" `QMjXS@I1#e4!Q+~+/M9k{6MRtܶ_stn Dr(G #T@vXbx'cَ 0aiT#eQC>b)ORs'-$MVXֈq%T#@" fPBt(A]٥@vD鲺CHtWGp8vHCiŁ`}6ncHyvNqP$Rp u䁑%GJ!44 M%#THP#d9SgxZIAEiMt\غX9rDexXk879JJb PGi9';$5ځ#enp#T!BB2:ͮ{s%N]iAPcU%P0L#!4D }R*%Ѕ#ey\4Ӂƅy9#TU h!CpW|Q|ybf~M(x$o@& 9xBQ#eћ(.ǹŗ#Tm쀾#e)MЗi ^&RD#Te`2">.&Q1elSl9gPߣ-Ď҃OLA.0>}}wG{P//rJNåFtD#e>&[ Kh>Ƶ?<-*՜ !ܐJ{݃)'ԠDRo^ 5N5p$3 \:Tl0Z#eJlmr<8HǬ/bF\ոΓ}0=@w==thFiV}|@l bq;s~W|G#e{S'|ZA ThξiFџLŦ?X&p~@pyx冸p[Rn47Ͽkslx@ /0kA.89NT& =uJV mV"(ε`D$c8\&M Y$}_#ۤ&!d;,aA!hKEUIi{zMkp#en01*Y$BݾU6:p!p`.H`6" 1Lt0q:cp6I,D*I#eesm5 $ͭV JRQBƊxc6h)4!#dlR&&#dbqAҊ).& %#eZ*a"hi(tꩥs15c)ڄ5PrGI()z<84`4,HU: 1%(@a!l:4Y(#e1RD6i](ZrG ذcPSAJAN#TSQ!6 MA]; n#eZLw#TFR%=_@N#dA7rA(JU~`<1މE!{AɸG L9Ī4E`J]Q#TJ">#TzP>?MN?IJB,~=ø$$ '菦2w Rɽv71KA7) D0cj`0J!b*bh#e`t@0 4Lp'EOIuGo;߻OD1/`q9JcHazK>PRs:;~;c#eg01蹀Y`OCs30~h*!"G2#T{(?.#T9hy[cG`bm1 0rJBBA h3ҥѤhlElE#Щ+ ?~`fǤ"Lϧ:]Λ1ɓ.zJr8ޖ5 TPUEyޜ;,0Q*U52TATQ)MES<0XR d֣J#C@lc@r_|!/0c:"scAB@xM M0ᄓ4ț`}_r~ hlrR-^w1še>yǔC>E"EEimw8U#TL#T0aA1(x1Dv I_3yͿ|u ;Jf !ZD"( ?rj>#USHѠE6$e mD%#T%0Lÿ4?d@=O]"SE0pe t#pW') P="bb"#e"`#eDԢPBB{ px=xc׼>)"q$]hw0P}YY >YCnSytR T#5Qh`6d9btɡ8Ois#T5<JWi<{oK.xBAa1%>&7T9#dzIb@H~oEaNt#dʹtGZ#dҧS~Q"dvǡENꢨ)BL#2T,#ToCR !@+$Rd =dUMĠ%"$!h0 n67!jR[#dTGL.O|"INy$;v/VK@#ȌTF`/ QTP2RF~ZTN$ĚC#댴6f)/TC0 ֵ$2zkc?bٗY}XkI6{ Ȕ|s%)Rީm95Y3qZo0f*:nG#v#4\)ó-Q9RC%as4#dC'`wPL^k@!΅YQuv?8d>xV@ZPɱ .:ԡ3 ph%3sv1LCpo%x#e'~1߽gܐbj!$#e}1}L>\xG4GeL}9$X=mqQ >%]>~4@,ܜhFYV&E=NZAГ@z|Ƌ=1"5Jum=a`!cZ{L= &#d9l1xeN b9JL,ȸ.[0>ҧmmXffzj`Jj!Ĩ&QMjxʉ~"$r`?O$U@V;#et{`a "%<Hfm tq8UJdcB>gۢ@q$Y!`q8%ڜ=㐂IlԙMM MXi44#d7"CĢC~\lNQv೼u߹OQ:`~ ZxDCÙs3je7uzJD:#eƄrB(@l_#T1|#TvH]nC4>OSSrRB~ Sdbi(:Kz:'7(Ab O<,\!.Hԥh,9`'ѽ(s, #dFJ#eY"ߧO~G|~+8!]$X⏢ojp.eNQy?n}0"Dy|to8l.5G)X6?v`2,C[ʡ%lMoZ=& 8>n#dMPs:_d#d}a#d AG_ z2&rV$766cu?tY5Je*C>\Y筝 l7&XfH性#e&:7]#e^4TfoSCPш+cts%ZI!P(4B$Q^dm>lj+ I IFNJuY3,#enh_itCmsCqph1g,VָșٹF0EgM~0X*˖M`:7)}"k֙K8u'1Z<ǟפIH)1@Pml~Fn|gͻ#dETaBfbF#d$d"V-ӱe8W("AP((Z#e@(`HR"NXVz[e@%yozB3Ԟs s4g I3rM.M`vxF38'˖B4k>#dWzCOZ𺜏F˷%Gwlø6}_yǠ؍kJ#T' PQ3$&ll( $cԝ<g/aArgiħz:C#e՘0KPk#T)> B#eGUDEUU -S_3dzn7."Sqw[|gk8/G#Hi|L/ݼ#lCPYwZ )#T@#TiF*"d#dlJ[qX&mA#vxo<aNRnJCqgc\ `喗WqDJ1e#d8( GaO2{@-8 \⪇jlS?Fc98C@ЇC bA*Yݭ:Ph_8iDlCp1_P_oQ[4yu6"'&>8cAʐ@zwkA߈ul8ىILd2Poj2_?2aA1x,ϻ\>> ɣ`/vhoA+,!'}$G[zUBNwrR"#e[Ĺq,@(g^Y$8MX!VBG"|LÍnh00 Gϧ4CIJ7#el\P ĸ\I"zD0bbŦlQE#d@֡ D4La#d \10G8O)#eʠ!doQ9O i{`uFedLb6fea ުr$$$*~q6C{//1o߃UNHdKGmRӀtdB$wp;W<ַe#3aސ7b9;Ow2shsj#dmK`h Q#E hΓ RJ“*K(JC*#Tw=][ 󽻵T: !Ùvq{Xy6Zj"25Ă 0G(#6\_K6ңhԆ Ae@Ǘb3/i335H44vT 0#d$AKCy4LX<9>`f&.J=Jh;h#e#e_ip{#eRl<7..d+v9b1t-DJu1VՍhI&˱wkM P#d5-%Z=xx=<˗#e`5AR7W2#)R#myUi%#d>G Pz5:L{xg 8/*B;ci'͏&#TH!9""H$(V9.(DL4ADE=ق "(b[m!D5!$QE&B`G~7#T~hӚNB*;ɐ3綶tC %1HD@&CvXoBęEUQTL|vL1L10z!VfY1Cp# 3p(P&0N 7wHV+6qFuuh 644ma#e+g )ҝ9#A)I<9bYp"fq'AE^Ó}˸8Ub0a/[8{,cf]75#d;1Q٢^f,#n3TD5j-H7AUVeL@\(ݍz3zlDMSvDժPDFޙ`b 1cX,gZdQ=sd8ehJpln9:c i2!aYHIfDlc$>Ql^j1)*90+#Tm Fa$蚃KZLULLx,T+y(3qD|f晽e##dT5~p?R 6Pk0#dq0=e=޷%C\-SOR-O^)TPhfNrF- p0a 4oq EboVDegI ]R\r.sxma'&dU##TFQ4m jR2v:܇ي$X)#Ս%{|#dk#dh1#ewʋSCϣ'd":pɐ{q_ l2#T6-ͭmi+[k 9ZF#T##. 4nQ"ݞE]7 )$ ࣘ)EAU=b*F(*Ę *!6?!6?C"$J*G*V`(hvz8u&" kȤK*4PF󉫔s:ls1Oy?T `ϣ5uX*=x>K7h:?E:sz!Do|M7vlYr|(~Kw$Os߀XN'^k1F;&E `sǭ_8xEYNBP؉Bf}7#Tʜ9umn LU8U`dw➎]JcIF ?4cVB|p\ɢړkw8OQTQL3χXL>z+srЂ$cʥ#dB#eۄny47N`#dDM6Ӽt 鞗//\ҝ- F%(i(5xndiOj?p"!"К#TeԤTzNB>WC\@GC%ns_D*S--i4%4hL@R4R!M+ր?|#Tn 08`,iC?,'}xI}o`=S`Yy>p?>|O1./]-g#-@q#T8،_[El*ci2 l1-yWm;vjU"ZJfaI@ioroٸyjk ByB(2RH'#d(]ђ]RLDYᗐoBZ)8?FLt 7H~^Z.WX71l`?0W9m#N;4 |S֣5sA SIl5჎cll4la7K+i%`TU!gQɼg2icX,L4ь LQ4Q^l4LT4%()H2Nh&:#*fKө%: }|s4d3~ t:?LѼy ]iONR`n0?)'cɴLyvG<9N[H#e"FrZDʮOm]w!v22%3hm#dtjlŋɩtuoܖgL#dV%< Y|%/Xeg.͹Y"S.;b~~.{=oG-ᨚ!vTLfZR=N n~=tr6s)q;&sۇIYy2V#䬿4;vq;SڮPqģjRt͎Q!; #e6P$+>c"O2S;:8nz9JOwr3?=~ץs02@CPTMclc5l3)8s)q1\#e3rӊN ҝ>_#dyRN]>)UUta!o[8>'ӻpp1fe5xRE)ӻ{;_;**5oP2we)qj C3e_Xl|Sv*{Q-nߦ#d#e޼v7Cؖ=}\Rc}#d\wXq9#M6.?CŔ2J081M\*뢫;~#U07_Y{Wdd{}bڏN#eKA}(Js}xWZ|[z5Ë87G A#Tj4IP<5BbDñ%"edEa:8`"mټK%f8m}:aA#dEMfX13RruvBkEެOZƱRRƃ4CUxKZӝ#G#dzznU2[pm(eOӭXW>Uvuӟ(|M\b_Z#e%6}\I۞{GAyz L.Q7q{[z%SWXƤuOo'mR6?pJMzHH_ⱦz:*2\bŎŘncv1$}jꇜD?)^'8K9rMs\I<$7YeC>=4sbĪ" D%͙2M WSO6Av:5(#dY2u3JbH=88~3Bj&3FaMNsʿ#eD];ӛ5)}%ju9L+.Jx3˻׳ԋIW*$/! s&PhBNbbTNw#eZp]38S#ʭwq)ӹ |GWuZq~9Ǫ#T8eBb|⃮E2dduۈ暹Ƿm#J-1!:m}0#70S%]>*+dof•#ee*9MBI3u֑H#d 1y#d1Ea@ֳMKl,Yj3Dm6-2~*Yq|탃69PCjRcZ;RY3JTVhBiZ!ʳf#(0;.<;%ǔ?~Xg&TKD-DŽ?hjj=G/lg&(]!>mLu`q?sQJxP*PǴw\81tV0S S,qIRSgEEER6fJfSO(y) A#e#eq˧5wI^Ĺa'q;˦Fv UsHÊ,E;;aZFght TWDl!bz6q "C1bo5Rz>f;W(*%A8"+n[T}_F5͓iy~{;o#(=]c8t Aj'?oF#d6M"n#.#e}'i,x",,3N%O9čpYtߜ~"볫?i%X jg]`4!%Ze%#d9ۣҟ)_LFo>gѸrﱊ*;_^hhos-׭t 6@wj/^)[S\:;d#d#e=mir p۸ޠ2PH'`Σک߹%^Y<ޜWlw7P/>O?LM!DM xNZ#dAb|^αļa 06ʑC)gޚ>* !kb1#T#d4!|YH!l'r鮼eP[CӀ@́$@@6 !{-KGILv4:v\l{*FJR(sJ61#YLlINm_*afr5cuH,L//I9qpg>+7<'prp, ce7(RZ-V|74[CaA B쯵fbdP怦MCreKJN.̇:zUbnMz=g3a"ٚ{hLsO*.eJah"0TH=h;ʷ[!#dc?13ҩiO6@\LJEٓ}C;զ̨$D,"A`$j.W0HQliK=֏,e)ʁ3ܕ\'QL y3#|O20f|4PPj8aHP%UTQՎX"Cva:N{#eRVw#eqӀM'O#x#eEP3QVƼ̈yB>*1!mՂE``ǽiJNjxV2·!tY#ۋ8[V yqMw.I T4&V].B.pT*ccGOx]/N~<9J#C`=,Q;#d:hbax 'b fYA z,v܀R>#H;DPg#V(%Kq]{Uʵ1`T2sW%VgHv#*sWiA H*G*S@GYj#e3н&-Ck<dבbi,V-DAբ^I3baL2t<#Tb) ݃}{f&b&anePI~)|1 fI%Zsa/YښBw܅ .zDvg.pxck9[̋:;L)rEYJ[HqxUJsK=D䩡@4RJQt ҆b*I#dpeTL)UDʅA(*(ʪ&qcq$4_1->1#R(Q#iwњxcìK=^c3NŏI.9m&9$#d!J`se T4T&F* #ei#eZU?lH)BdBhD܏s:5Vƴ06.w/"(cVLFΎ4ta S nV6-nSjzlAmGׇy۽0y),A41$g$.Zjw4Fˀlcq\0 KE.lx#H2ZB̆&qǐ3ngA#e^Aϋm-FqGH׮W6"dƜI&Ox);8N1D8OWbShtdF7ZǗ#T!qTm`&Hp9 4LI,pyC#/4]×*"#ehKClwN͌66\ָ0#eEN9ܕ?ڦLcK(\*iak#c93&sËN`!Iw_\WH4J1nj"1t$86)f#dJh#o YQQ>x#d:ISxգjT#dʻ@d`3/2ω3sUt( s%*nY9r!dVLĥ/u#T>Fu|~|8BvɺO<O]ILPCD!`PQ9UQ헟w91_=ÊCzf)#eY^n\L^(U=9I l>H#T9CxtYECLvFĽ!DYxNQPƬFaz|c i&&P?8~?sAэԚ=k,Rlʩ\a.Ws{01FK9 8kvTk+=$]I޾Qa+9&Uq\b%M-Wx32Hpnݎ́~5|RT"EE'Z6EСu@1APݿ BE !%SP]8mx@B JA45$@Ăs.&#e#Th"A#TΆ G`{l#d|1$$#TQ76'$@p>'-/~8wXCq*(#d*j*"(VFe#eh!&UY%jD&P$bY Y$()#e)&(%&#eB) `)IJ)h#e(b &v(.5 ~y'I:u?-(9 'О>7B'Baw}ZG瞏GɾO[xcf#ekDmk':.H{T0OLJ)}giCQȂ\]@p,b#egӎjd>!T#d,$I$49|#dV/ߨ{If}tsegٰ~}8x0Jb^Q3HXR.Q.j/Ar(e5WgLj&x6l_v{3 EͿtjQJb$3`P]Wtc1XhC`G8fD#T1Pp*{͡#d9{~A˥cݔ'̜#e%IM@z,ԇ,Q!L^p`#e)R`&"HGXɵ4S KL 1D$%1#d+lM j!"T*F(#eh(h&h%$bBm%-@S~Fp#e0p j<}BAD0SATHUAIH>맲^*jdJ*IlGu]#e@#d߼ZPK܏R#d6*\:HsRV1Щ{Mr:?Sgnwq#(Б4#Is#efǥ2ףCYH"Zq1m [Ƽޙ&IM': +9⺃~˫#ecU5{D& \fUm::3Io'>q'1b7'yZ 5yygQH$#e`!9EUl89IA-0$IӪsX|WpX>#w\qDmHcF{hJ5M4MSC>S#eBe73 ybs(sNPxURD=O T꧃LB<i&"%ҙO#e]J= #dQUY&9`@^p@]'z3ٽ{T]:`Aҥ| r9Y&#d%@Пɽ|NOvKM_,:x`RۙybkN& k(#aʬ(#e.p|_)@=z5GcM2s'zJ-H=wS J`UZldC_}??fSENGlOw>2;!PZBf#ez: %pHCV#eC* l.iRݷ/{.1Y0PF#dQE")!S$cD$#TW̤{X+) :6*ywѲ#T0~mK)#R)$A0UMMx ]mBa s#eӎ;IZ&1W =ɬNX/"*)Efmc^N=~SC}[{4iԢUSyH=R>ʛaػ\Web@LVm4)Sk3_x6%n2na#d.ӼޝN )a2#ewJekXK<-v#iJ^<1ṶSG1w.;M$qKCK:WY^%xivЯ,m+w_g\љGpؘJ%#dsQbj]6FQb6fNֈBdv)I<nAc^l#dw0̈́#T-P1 `6%R4æ&/s:I1E)#d¢܋|~#T#T9b;(( C9HPKgD{hz>N{}=DCHŕ0R& J+ۉ:~7luE*z@tPtŸp_ZdO>} !6u?bDP9qaS(E4 ~cdybVfp$}rV9-5IcG.$È@#d=K.@0l.cFsyՈDUw&7w VU=wcJ.c,R#dnEH]ƫZ"5SAE9ڝF5CqsH5P"&)#dYCdnǫlm2M4c !Pl,btP\d $ I $®N"E:."8B>Z9O)DYD^0Ԛŋ md*6^0^5U8enAO,T# >xC9\Mɻ#|adkY&Iݭr|0Vy-P+J0o7S2sºݣv42K¦і%& !ˠR KD@`vGmq_Gr#ef1y$CҊ"i%T&&gx:p)`M May44ntqhc|#dhޜиȸ8S9Oɛy r \xQFMh:=&`ިc کyz``T;$_$)3/8.Uo=c~Jv"JhL>'l9t#Mԑ`ӻc˲("ΔgMS;st>>I#TVD՛[,>ׅ!\n$M#d'f^¯HIfư$zddIB#e'92N63pn˺͘t sߜ]_IN2rt+&Yە86>VM%H+=lJ1 CHBDŶ_>+wͭ[JIzqp<m^C#TVV3+9>-DP]f [#(D:ҠN4ݝz#dSIC1#W̯#dN>=B?d7eNJEo.eGyPVy#TP PF T:e1@4DHNhC NB#T H!x$IXy*TCH&@T(% H#d#e #TM #d@& }ЪGQPP#T2}Itrr#T7)-ͅ*lhu#eA6I:!< #e#ehP)d%#e yllaB670P#DCÝO#d~}XCQe@#T(6׉aT׋xrЯo0`C0x*UX݇P>ᗀ7]ׁ}4/Q>uQN{.˧i2b>DȓFrE>LLR#eIJe2Èrb;LC:I4rGu'_:\拠$ipibp-DrKJUx#n#d'#T*"k#;y0w3E^.H#dѺ&Xs5ݹb#d6lmaQ+d3&YHv[s(-#&mٌD4#em22d+C0ۘ۰ΕCU'I%@K&%dp@rM v9AIMT25w mG ͊%'NlVرt1m:"&78E)9B \\c(#Tb#n(xhs lr*Uc(8ۈ>kkȗ"H=Jl#˃boU٦6S#e|<||~osYYo3(e{iͅ\U- @x0çޏrp{22z *)t i /s(TK@b$Њ(SH#dJE]#T4IYdJ@0V?#T/A6#TS#T-#TC#djn̎1l@@bM& r>U>w+CH>d#eZ~2fhWu#Ta;=) (?h2QOYУJ!1FW~QдhR#ddhM"%$B"©d #dn>y]j#h5f{6H'ԁPS"Vmȅ33$8I\,J,BL HD4M)C$@#e,#eEPP$(EÆ \D`֩e0Ns`Jnw$9z^TsØ)z#}^Aw2—< 9><Ѳx"uHJR-PWfyK>#Lr}f:DxgD0O6#T@Δ;D[=[06}W՜5*W2 =H)sɵCȆ܁)jZTN!YD3 N֓5 :SPӡjV3ziSe>.+EҔ-乜#eWxFU|%PM4sƲͯpkXm2uKwb"E>ʹz|ۦ4Axt)g&Z :hiއ>Yg\욢ò:eO-FZA0n&8 vS&51ؖH& #eR iY_1bl>sOy8L#d##ekyEֈ2)$(Zc']u`iH!٣Dv4/hޠ"Ԙuh-Ė#e74989+G!w 1U""O7O=qgh|b7o"#dRE*!%!G){t_|04#e*2u@NXOM* A _,3I@zHx|6@G#dw|cis8!?R-Ng\DNAYhJ;Cb@#e9ꖀ0DE.)(}rdFP]=#e*}#ɪb#eiq#eJh#dK6]TCQFj@,=TȐF!F4iJEiN]#yI݊DTREDEHPPRMUB )dZ#eM&bJ]qtI46AKA]sE$ 4Z'`ήa>u4ϧ OMXn/IQ[zd#Tr ?Yɣh/DwZWqxrc{s%"y6,> r#hD@td !1Q!K$;i'*` iHM9Js390ijb&VTD#d$J@AD@d 3GpqB1SSRǞs@0~ㆈHBQcH1Lh(\%$;=CfΒI= ! =驖pP]94O3J&' Ak݊F*R 6C!kI3n(U4)5#d+K!ėp3gӡaq3FP[5p<}tLޅwCI_*bI؊)1xsja>L͝p-ws%w/m Z>D*##TP#e(0^?sa~#T)ọ@"QR@\+{kD_]Wd*b,M]38@&J8ܹB;I[90`O8)iZ#e,7̧ʃxuw*&\hbE}^#a$$+}BQ\9)_ώNUۛKpO-ݦH(d9(`\bq2^s]QbfSDR#TEPk~Q 9@+Q[^.#d}Ô~?Wn}fWMgq'鬺z>!=@.ȇ91j|ӯ2fITTl((2o0U([Vh5 [Fpp4YնGoW)+T$efP9$ @yCfGN0Qr&0@̃'PkdPe6l&`b #dG({:_f&@`,)3Tܩ:G=q(u?Yw*ҍ?DF#~jJ]"LSs.ƙ#dA)-!iC4}'d]$QNp LD#CC#dLe[^6*W3ND_MHŝzpDYwQ/M$#e(@AiE+o"=qiE98>ӈS$! `~Ba8 =Rh퉨F҃#L$^Gy&k]>f:p0و#jS#TN5K'eB`.yEB,my^N:LHF"J $ A<$ |#NPq= jQS Gć$rq3v/#Ԩa~D)G)\v~RM(m/=6w At]#L}C:c=!#e@6G3$M\8`I#ք1E]lU;<>T#TNς?nґJťQI ԍ5YULٰHLvL4| NEj֯3Lkf4l:L@BV3ƬӬ5ng&&$P#dR#emT6qk-kr`R|j̼0(<5"&BR6jۻkeLEt ISR@m⍭[nh2`ywK#d㸢4B)oo[ Ӽh#e,kCTrex6 nF0ֆ4P5t7SBr!O;R5S1,#d8a $2lӶŸA(k2zBT#T\vӥ#TRA"P15Q!@+,0BE&{^g0)W8]]8_@.#39C͡o饞o} Hj/{#=~* diw?U<;Mv\@L4E1#dAUL)!@CT#T$USCQTL @B 2@ 4J!Ae *'TG#Td ?$Ht!#Yhè)!Q@n-%n $L#T '7$=߫y5LakYI,|E}.dZY'ΰz aZf.#e1Ah ʹ|@']ߤmlfJB%;7'4x$gdo ެChxdQ8`nLCZ$hm4܌Zp`XLisT8v,9k]!(DYT B5D:I?Kd1dǏ#dq<*AۗСDeK[B =pxE;Vhn5Ƒg\ŢlNښ铙fnrO9g9#d -8U fPJWٝ^u$3XۇhfL7|<bm, {#T8bcLUjSɥwf*DI /09P;-A2(dVdr~ZYɡy|XC#e{Y:^~}7WgiL134tB12Ҟ*L)qX IٓkS8FY mRRmg]lHt]*&JcTM[׆#eZda,UE>x_2'ˣ2w )Au1Q6s-BCA(1R MRtih hVB)X@ZqY89j0x O0HBk#ei^% ~^~WnS-#T%s1Q`#TAzp`BP:CN;_=+6RSK$&aE)%$v_Sw#d2"4TU#dD4D#dD+JT0h9 y{>_H?gۑ}niWAD#TR` jS_/mѻFw=˩ViNy*?kO%"L#TP#eTp֧ _Wј J?;)HSL}@?0w#QA#e)D<#d.?-3*(?^?|Bwgq/oE#s+a`J;#T!){ZhLRu`#5uoڗZU,L8,X\wc{Sk+?O}?g?/N'#dEt'DS8&W9g0ja#|Ν@΃?,. X9 ^B,]zj!8#dTrPunyurVGd(- B,ٸ@0[+M@euA.o]*,&*mʟɺyu#e sSt*[׈d1 ::W=!?0V C5!{8vK>"}T~qOΈXg F0dИX':m;~Ǘ0Pb#dA?n#4k)„kw #<== diff --git a/wscript b/wscript index af2fa031..e38f424f 100644 --- a/wscript +++ b/wscript @@ -154,6 +154,8 @@ def define_platform(conf): if conf.options.SDL: conf.define('USE_SDL', 1) + print(conf.env.DEST_OS) + if conf.env.DEST_OS == 'linux': conf.define('_GLIBCXX_USE_CXX11_ABI',0) conf.env.append_unique('DEFINES', [ @@ -167,7 +169,7 @@ def define_platform(conf): if conf.env.DEST_OS == 'android': conf.env.append_unique('DEFINES', [ - 'ANDROID', '_ANDROID' + 'ANDROID=1', '_ANDROID=1' 'LINUX=1', '_LINUX=1', 'POSIX=1', '_POSIX=1', 'GNUC', @@ -213,6 +215,8 @@ def configure(conf): conf.load('msvc msvc_pdb msdev msvs') conf.load('subproject xcompile compiler_c compiler_cxx gitversion clang_compilation_database strip_on_install waf_unit_test enforce_pic') + define_platform(conf) + if conf.options.SDL: conf.check_cfg(package='sdl2', uselib_store='SDL2', args=['--cflags', '--libs']) if conf.options.DEDICATED: @@ -335,8 +339,6 @@ def configure(conf): else: conf.env.LIBDIR = conf.env.BINDIR = conf.env.PREFIX - define_platform(conf) - if conf.options.DEDICATED: conf.add_subproject(projects['dedicated']) else: