From 175263ec91f00f6668ae7f28f385850a1c77bf6b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 15 Oct 2015 11:38:03 +0200 Subject: libfdt: Initial import Import from: git://git.kernel.org/pub/scm/utils/dtc/dtc.git Commit: 604e61e081e3c6c8fa1a8189c71cb3908a5bbc1e Date: 2015-09-29T09:09:08Z --- cpukit/Makefile.am | 1 + cpukit/configure.ac | 1 + cpukit/dtc/README | 20 + cpukit/dtc/README.license | 56 + cpukit/dtc/libfdt/Makefile.am | 19 + cpukit/dtc/libfdt/TODO | 3 + cpukit/dtc/libfdt/fdt.c | 250 +++++ cpukit/dtc/libfdt/fdt.h | 111 ++ cpukit/dtc/libfdt/fdt_addresses.c | 96 ++ cpukit/dtc/libfdt/fdt_empty_tree.c | 84 ++ cpukit/dtc/libfdt/fdt_ro.c | 679 ++++++++++++ cpukit/dtc/libfdt/fdt_rw.c | 492 +++++++++ cpukit/dtc/libfdt/fdt_strerror.c | 96 ++ cpukit/dtc/libfdt/fdt_sw.c | 288 +++++ cpukit/dtc/libfdt/fdt_wip.c | 118 ++ cpukit/dtc/libfdt/libfdt.h | 1653 +++++++++++++++++++++++++++++ cpukit/dtc/libfdt/libfdt_env.h | 111 ++ cpukit/dtc/libfdt/libfdt_internal.h | 95 ++ cpukit/dtc/libfdt/preinstall.am | 46 + testsuites/libtests/Makefile.am | 1 + testsuites/libtests/configure.ac | 1 + testsuites/libtests/libfdt01/Makefile.am | 20 + testsuites/libtests/libfdt01/init.c | 145 +++ testsuites/libtests/libfdt01/libfdt01.doc | 20 + testsuites/libtests/libfdt01/libfdt01.scn | 2 + testsuites/libtests/libfdt01/some.c | 52 + testsuites/libtests/libfdt01/some.dts | 54 + testsuites/libtests/libfdt01/some.h | 15 + 28 files changed, 4529 insertions(+) create mode 100644 cpukit/dtc/README create mode 100644 cpukit/dtc/README.license create mode 100644 cpukit/dtc/libfdt/Makefile.am create mode 100644 cpukit/dtc/libfdt/TODO create mode 100644 cpukit/dtc/libfdt/fdt.c create mode 100644 cpukit/dtc/libfdt/fdt.h create mode 100644 cpukit/dtc/libfdt/fdt_addresses.c create mode 100644 cpukit/dtc/libfdt/fdt_empty_tree.c create mode 100644 cpukit/dtc/libfdt/fdt_ro.c create mode 100644 cpukit/dtc/libfdt/fdt_rw.c create mode 100644 cpukit/dtc/libfdt/fdt_strerror.c create mode 100644 cpukit/dtc/libfdt/fdt_sw.c create mode 100644 cpukit/dtc/libfdt/fdt_wip.c create mode 100644 cpukit/dtc/libfdt/libfdt.h create mode 100644 cpukit/dtc/libfdt/libfdt_env.h create mode 100644 cpukit/dtc/libfdt/libfdt_internal.h create mode 100644 cpukit/dtc/libfdt/preinstall.am create mode 100644 testsuites/libtests/libfdt01/Makefile.am create mode 100644 testsuites/libtests/libfdt01/init.c create mode 100644 testsuites/libtests/libfdt01/libfdt01.doc create mode 100644 testsuites/libtests/libfdt01/libfdt01.scn create mode 100644 testsuites/libtests/libfdt01/some.c create mode 100644 testsuites/libtests/libfdt01/some.dts create mode 100644 testsuites/libtests/libfdt01/some.h diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am index 063a795b7f..86c20a9d2d 100644 --- a/cpukit/Makefile.am +++ b/cpukit/Makefile.am @@ -6,6 +6,7 @@ include $(top_srcdir)/automake/multilib.am # librtemscpu SUBDIRS = . score rtems sapi posix SUBDIRS += dev +SUBDIRS += dtc/libfdt SUBDIRS += libcrypt SUBDIRS += libcsupport libblock libfs SUBDIRS += libdrvmgr diff --git a/cpukit/configure.ac b/cpukit/configure.ac index 01da86d3e4..bf01ba0f7c 100644 --- a/cpukit/configure.ac +++ b/cpukit/configure.ac @@ -445,6 +445,7 @@ AC_CONFIG_FILES([ Doxyfile Makefile dev/Makefile +dtc/libfdt/Makefile rtems/Makefile sapi/Makefile score/Makefile diff --git a/cpukit/dtc/README b/cpukit/dtc/README new file mode 100644 index 0000000000..979974a1b3 --- /dev/null +++ b/cpukit/dtc/README @@ -0,0 +1,20 @@ +The source tree contains the Device Tree Compiler (dtc) toolchain for +working with device tree source and binary files and also libfdt, a +utility library for reading and manipulating the binary format. + +DTC and LIBFDT are maintained by: + +David Gibson +Jon Loeliger + +Mailing list +------------ +The following list is for discussion about dtc and libfdt implementation +mailto:devicetree-compiler@vger.kernel.org + +Core device tree bindings are discussed on the devicetree-spec list: +mailto:devicetree-spec@vger.kernel.org + +Home Page +--------- +http://devicetree.org/Device_Tree_Compiler diff --git a/cpukit/dtc/README.license b/cpukit/dtc/README.license new file mode 100644 index 0000000000..d56c88f528 --- /dev/null +++ b/cpukit/dtc/README.license @@ -0,0 +1,56 @@ +Licensing and contribution policy of dtc and libfdt +=================================================== + +This dtc package contains two pieces of software: dtc itself, and +libfdt which comprises the files in the libfdt/ subdirectory. These +two pieces of software, although closely related, are quite distinct. +dtc does not incoporate or rely on libfdt for its operation, nor vice +versa. It is important that these two pieces of software have +different license conditions. + +As the copyright banners in each source file attest, dtc is licensed +under the GNU GPL. The full text of the GPL can be found in the file +entitled 'GPL' which should be included in this package. dtc code, +therefore, may not be incorporated into works which do not have a GPL +compatible license. + +libfdt, however, is GPL/BSD dual-licensed. That is, it may be used +either under the terms of the GPL, or under the terms of the 2-clause +BSD license (aka the ISC license). The full terms of that license are +given in the copyright banners of each of the libfdt source files. +This is, in practice, equivalent to being BSD licensed, since the +terms of the BSD license are strictly more permissive than the GPL. + +I made the decision to license libfdt in this way because I want to +encourage widespread and correct usage of flattened device trees, +including by proprietary or otherwise GPL-incompatible firmware or +tools. Allowing libfdt to be used under the terms of the BSD license +makes that it easier for vendors or authors of such software to do so. + +This does mean that libfdt code could be "stolen" - say, included in a +proprietary fimware and extended without contributing those extensions +back to the libfdt mainline. While I hope that doesn't happen, I +believe the goal of allowing libfdt to be widely used is more +important than avoiding that. libfdt is quite small, and hardly +rocket science; so the incentive for such impolite behaviour is small, +and the inconvenience caused therby is not dire. + +Licenses such as the LGPL which would allow code to be used in non-GPL +software, but also require contributions to be returned were +considered. However, libfdt is designed to be used in firmwares and +other environments with unusual technical constraints. It's difficult +to anticipate all possible changes which might be needed to meld +libfdt into such environments and so difficult to suitably word a +license that puts the boundary between what is and isn't permitted in +the intended place. Again, I judged encouraging widespread use of +libfdt by keeping the license terms simple and familiar to be the more +important goal. + +**IMPORTANT** It's intended that all of libfdt as released remain +permissively licensed this way. Therefore only contributions which +are released under these terms can be merged into the libfdt mainline. + + +David Gibson +(principal original author of dtc and libfdt) +2 November 2007 diff --git a/cpukit/dtc/libfdt/Makefile.am b/cpukit/dtc/libfdt/Makefile.am new file mode 100644 index 0000000000..9d76c63282 --- /dev/null +++ b/cpukit/dtc/libfdt/Makefile.am @@ -0,0 +1,19 @@ +include $(top_srcdir)/automake/compile.am + +include_HEADERS = fdt.h libfdt.h libfdt_env.h + +project_lib_LIBRARIES = libfdt.a + +libfdt_a_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir) +libfdt_a_SOURCES = +libfdt_a_SOURCES += fdt_addresses.c +libfdt_a_SOURCES += fdt.c +libfdt_a_SOURCES += fdt_empty_tree.c +libfdt_a_SOURCES += fdt_ro.c +libfdt_a_SOURCES += fdt_rw.c +libfdt_a_SOURCES += fdt_strerror.c +libfdt_a_SOURCES += fdt_sw.c +libfdt_a_SOURCES += fdt_wip.c + +include $(srcdir)/preinstall.am +include $(top_srcdir)/automake/local.am diff --git a/cpukit/dtc/libfdt/TODO b/cpukit/dtc/libfdt/TODO new file mode 100644 index 0000000000..288437e394 --- /dev/null +++ b/cpukit/dtc/libfdt/TODO @@ -0,0 +1,3 @@ +- Tree traversal functions +- Graft function +- Complete libfdt.h documenting comments diff --git a/cpukit/dtc/libfdt/fdt.c b/cpukit/dtc/libfdt/fdt.c new file mode 100644 index 0000000000..2ce6a44179 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt.c @@ -0,0 +1,250 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +int fdt_check_header(const void *fdt) +{ + if (fdt_magic(fdt) == FDT_MAGIC) { + /* Complete tree */ + if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) + return -FDT_ERR_BADVERSION; + if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION) + return -FDT_ERR_BADVERSION; + } else if (fdt_magic(fdt) == FDT_SW_MAGIC) { + /* Unfinished sequential-write blob */ + if (fdt_size_dt_struct(fdt) == 0) + return -FDT_ERR_BADSTATE; + } else { + return -FDT_ERR_BADMAGIC; + } + + return 0; +} + +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len) +{ + const char *p; + + if (fdt_version(fdt) >= 0x11) + if (((offset + len) < offset) + || ((offset + len) > fdt_size_dt_struct(fdt))) + return NULL; + + p = _fdt_offset_ptr(fdt, offset); + + if (p + len < p) + return NULL; + return p; +} + +uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset) +{ + const fdt32_t *tagp, *lenp; + uint32_t tag; + int offset = startoffset; + const char *p; + + *nextoffset = -FDT_ERR_TRUNCATED; + tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE); + if (!tagp) + return FDT_END; /* premature end */ + tag = fdt32_to_cpu(*tagp); + offset += FDT_TAGSIZE; + + *nextoffset = -FDT_ERR_BADSTRUCTURE; + switch (tag) { + case FDT_BEGIN_NODE: + /* skip name */ + do { + p = fdt_offset_ptr(fdt, offset++, 1); + } while (p && (*p != '\0')); + if (!p) + return FDT_END; /* premature end */ + break; + + case FDT_PROP: + lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp)); + if (!lenp) + return FDT_END; /* premature end */ + /* skip-name offset, length and value */ + offset += sizeof(struct fdt_property) - FDT_TAGSIZE + + fdt32_to_cpu(*lenp); + break; + + case FDT_END: + case FDT_END_NODE: + case FDT_NOP: + break; + + default: + return FDT_END; + } + + if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset)) + return FDT_END; /* premature end */ + + *nextoffset = FDT_TAGALIGN(offset); + return tag; +} + +int _fdt_check_node_offset(const void *fdt, int offset) +{ + if ((offset < 0) || (offset % FDT_TAGSIZE) + || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE)) + return -FDT_ERR_BADOFFSET; + + return offset; +} + +int _fdt_check_prop_offset(const void *fdt, int offset) +{ + if ((offset < 0) || (offset % FDT_TAGSIZE) + || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP)) + return -FDT_ERR_BADOFFSET; + + return offset; +} + +int fdt_next_node(const void *fdt, int offset, int *depth) +{ + int nextoffset = 0; + uint32_t tag; + + if (offset >= 0) + if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0) + return nextoffset; + + do { + offset = nextoffset; + tag = fdt_next_tag(fdt, offset, &nextoffset); + + switch (tag) { + case FDT_PROP: + case FDT_NOP: + break; + + case FDT_BEGIN_NODE: + if (depth) + (*depth)++; + break; + + case FDT_END_NODE: + if (depth && ((--(*depth)) < 0)) + return nextoffset; + break; + + case FDT_END: + if ((nextoffset >= 0) + || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth)) + return -FDT_ERR_NOTFOUND; + else + return nextoffset; + } + } while (tag != FDT_BEGIN_NODE); + + return offset; +} + +int fdt_first_subnode(const void *fdt, int offset) +{ + int depth = 0; + + offset = fdt_next_node(fdt, offset, &depth); + if (offset < 0 || depth != 1) + return -FDT_ERR_NOTFOUND; + + return offset; +} + +int fdt_next_subnode(const void *fdt, int offset) +{ + int depth = 1; + + /* + * With respect to the parent, the depth of the next subnode will be + * the same as the last. + */ + do { + offset = fdt_next_node(fdt, offset, &depth); + if (offset < 0 || depth < 1) + return -FDT_ERR_NOTFOUND; + } while (depth > 1); + + return offset; +} + +const char *_fdt_find_string(const char *strtab, int tabsize, const char *s) +{ + int len = strlen(s) + 1; + const char *last = strtab + tabsize - len; + const char *p; + + for (p = strtab; p <= last; p++) + if (memcmp(p, s, len) == 0) + return p; + return NULL; +} + +int fdt_move(const void *fdt, void *buf, int bufsize) +{ + FDT_CHECK_HEADER(fdt); + + if (fdt_totalsize(fdt) > bufsize) + return -FDT_ERR_NOSPACE; + + memmove(buf, fdt, fdt_totalsize(fdt)); + return 0; +} diff --git a/cpukit/dtc/libfdt/fdt.h b/cpukit/dtc/libfdt/fdt.h new file mode 100644 index 0000000000..526aedb515 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt.h @@ -0,0 +1,111 @@ +#ifndef _FDT_H +#define _FDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __ASSEMBLY__ + +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_comp_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ +}; + +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; +}; + +struct fdt_node_header { + fdt32_t tag; + char name[0]; +}; + +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[0]; +}; + +#endif /* !__ASSEMBLY */ + +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_TAGSIZE sizeof(fdt32_t) + +#define FDT_BEGIN_NODE 0x1 /* Start node: full name */ +#define FDT_END_NODE 0x2 /* End node */ +#define FDT_PROP 0x3 /* Property: name off, + size, content */ +#define FDT_NOP 0x4 /* nop */ +#define FDT_END 0x9 + +#define FDT_V1_SIZE (7*sizeof(fdt32_t)) +#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) +#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) +#define FDT_V16_SIZE FDT_V3_SIZE +#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +#endif /* _FDT_H */ diff --git a/cpukit/dtc/libfdt/fdt_addresses.c b/cpukit/dtc/libfdt/fdt_addresses.c new file mode 100644 index 0000000000..eff4dbcc72 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_addresses.c @@ -0,0 +1,96 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2014 David Gibson + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +int fdt_address_cells(const void *fdt, int nodeoffset) +{ + const fdt32_t *ac; + int val; + int len; + + ac = fdt_getprop(fdt, nodeoffset, "#address-cells", &len); + if (!ac) + return 2; + + if (len != sizeof(*ac)) + return -FDT_ERR_BADNCELLS; + + val = fdt32_to_cpu(*ac); + if ((val <= 0) || (val > FDT_MAX_NCELLS)) + return -FDT_ERR_BADNCELLS; + + return val; +} + +int fdt_size_cells(const void *fdt, int nodeoffset) +{ + const fdt32_t *sc; + int val; + int len; + + sc = fdt_getprop(fdt, nodeoffset, "#size-cells", &len); + if (!sc) + return 2; + + if (len != sizeof(*sc)) + return -FDT_ERR_BADNCELLS; + + val = fdt32_to_cpu(*sc); + if ((val < 0) || (val > FDT_MAX_NCELLS)) + return -FDT_ERR_BADNCELLS; + + return val; +} diff --git a/cpukit/dtc/libfdt/fdt_empty_tree.c b/cpukit/dtc/libfdt/fdt_empty_tree.c new file mode 100644 index 0000000000..f72d13b1d1 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_empty_tree.c @@ -0,0 +1,84 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2012 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +int fdt_create_empty_tree(void *buf, int bufsize) +{ + int err; + + err = fdt_create(buf, bufsize); + if (err) + return err; + + err = fdt_finish_reservemap(buf); + if (err) + return err; + + err = fdt_begin_node(buf, ""); + if (err) + return err; + + err = fdt_end_node(buf); + if (err) + return err; + + err = fdt_finish(buf); + if (err) + return err; + + return fdt_open_into(buf, buf, bufsize); +} + diff --git a/cpukit/dtc/libfdt/fdt_ro.c b/cpukit/dtc/libfdt/fdt_ro.c new file mode 100644 index 0000000000..e5b3136820 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_ro.c @@ -0,0 +1,679 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +static int _fdt_nodename_eq(const void *fdt, int offset, + const char *s, int len) +{ + const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1); + + if (! p) + /* short match */ + return 0; + + if (memcmp(p, s, len) != 0) + return 0; + + if (p[len] == '\0') + return 1; + else if (!memchr(s, '@', len) && (p[len] == '@')) + return 1; + else + return 0; +} + +const char *fdt_string(const void *fdt, int stroffset) +{ + return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; +} + +static int _fdt_string_eq(const void *fdt, int stroffset, + const char *s, int len) +{ + const char *p = fdt_string(fdt, stroffset); + + return (strlen(p) == len) && (memcmp(p, s, len) == 0); +} + +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size) +{ + FDT_CHECK_HEADER(fdt); + *address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address); + *size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size); + return 0; +} + +int fdt_num_mem_rsv(const void *fdt) +{ + int i = 0; + + while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0) + i++; + return i; +} + +static int _nextprop(const void *fdt, int offset) +{ + uint32_t tag; + int nextoffset; + + do { + tag = fdt_next_tag(fdt, offset, &nextoffset); + + switch (tag) { + case FDT_END: + if (nextoffset >= 0) + return -FDT_ERR_BADSTRUCTURE; + else + return nextoffset; + + case FDT_PROP: + return offset; + } + offset = nextoffset; + } while (tag == FDT_NOP); + + return -FDT_ERR_NOTFOUND; +} + +int fdt_subnode_offset_namelen(const void *fdt, int offset, + const char *name, int namelen) +{ + int depth; + + FDT_CHECK_HEADER(fdt); + + for (depth = 0; + (offset >= 0) && (depth >= 0); + offset = fdt_next_node(fdt, offset, &depth)) + if ((depth == 1) + && _fdt_nodename_eq(fdt, offset, name, namelen)) + return offset; + + if (depth < 0) + return -FDT_ERR_NOTFOUND; + return offset; /* error */ +} + +int fdt_subnode_offset(const void *fdt, int parentoffset, + const char *name) +{ + return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name)); +} + +int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen) +{ + const char *end = path + namelen; + const char *p = path; + int offset = 0; + + FDT_CHECK_HEADER(fdt); + + /* see if we have an alias */ + if (*path != '/') { + const char *q = memchr(path, '/', end - p); + + if (!q) + q = end; + + p = fdt_get_alias_namelen(fdt, p, q - p); + if (!p) + return -FDT_ERR_BADPATH; + offset = fdt_path_offset(fdt, p); + + p = q; + } + + while (p < end) { + const char *q; + + while (*p == '/') { + p++; + if (p == end) + return offset; + } + q = memchr(p, '/', end - p); + if (! q) + q = end; + + offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p); + if (offset < 0) + return offset; + + p = q; + } + + return offset; +} + +int fdt_path_offset(const void *fdt, const char *path) +{ + return fdt_path_offset_namelen(fdt, path, strlen(path)); +} + +const char *fdt_get_name(const void *fdt, int nodeoffset, int *len) +{ + const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset); + int err; + + if (((err = fdt_check_header(fdt)) != 0) + || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0)) + goto fail; + + if (len) + *len = strlen(nh->name); + + return nh->name; + + fail: + if (len) + *len = err; + return NULL; +} + +int fdt_first_property_offset(const void *fdt, int nodeoffset) +{ + int offset; + + if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0) + return offset; + + return _nextprop(fdt, offset); +} + +int fdt_next_property_offset(const void *fdt, int offset) +{ + if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0) + return offset; + + return _nextprop(fdt, offset); +} + +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp) +{ + int err; + const struct fdt_property *prop; + + if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) { + if (lenp) + *lenp = err; + return NULL; + } + + prop = _fdt_offset_ptr(fdt, offset); + + if (lenp) + *lenp = fdt32_to_cpu(prop->len); + + return prop; +} + +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int offset, + const char *name, + int namelen, int *lenp) +{ + for (offset = fdt_first_property_offset(fdt, offset); + (offset >= 0); + (offset = fdt_next_property_offset(fdt, offset))) { + const struct fdt_property *prop; + + if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) { + offset = -FDT_ERR_INTERNAL; + break; + } + if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff), + name, namelen)) + return prop; + } + + if (lenp) + *lenp = offset; + return NULL; +} + +const struct fdt_property *fdt_get_property(const void *fdt, + int nodeoffset, + const char *name, int *lenp) +{ + return fdt_get_property_namelen(fdt, nodeoffset, name, + strlen(name), lenp); +} + +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp) +{ + const struct fdt_property *prop; + + prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp); + if (! prop) + return NULL; + + return prop->data; +} + +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp) +{ + const struct fdt_property *prop; + + prop = fdt_get_property_by_offset(fdt, offset, lenp); + if (!prop) + return NULL; + if (namep) + *namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff)); + return prop->data; +} + +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp); +} + +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset) +{ + const fdt32_t *php; + int len; + + /* FIXME: This is a bit sub-optimal, since we potentially scan + * over all the properties twice. */ + php = fdt_getprop(fdt, nodeoffset, "phandle", &len); + if (!php || (len != sizeof(*php))) { + php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len); + if (!php || (len != sizeof(*php))) + return 0; + } + + return fdt32_to_cpu(*php); +} + +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen) +{ + int aliasoffset; + + aliasoffset = fdt_path_offset(fdt, "/aliases"); + if (aliasoffset < 0) + return NULL; + + return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL); +} + +const char *fdt_get_alias(const void *fdt, const char *name) +{ + return fdt_get_alias_namelen(fdt, name, strlen(name)); +} + +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen) +{ + int pdepth = 0, p = 0; + int offset, depth, namelen; + const char *name; + + FDT_CHECK_HEADER(fdt); + + if (buflen < 2) + return -FDT_ERR_NOSPACE; + + for (offset = 0, depth = 0; + (offset >= 0) && (offset <= nodeoffset); + offset = fdt_next_node(fdt, offset, &depth)) { + while (pdepth > depth) { + do { + p--; + } while (buf[p-1] != '/'); + pdepth--; + } + + if (pdepth >= depth) { + name = fdt_get_name(fdt, offset, &namelen); + if (!name) + return namelen; + if ((p + namelen + 1) <= buflen) { + memcpy(buf + p, name, namelen); + p += namelen; + buf[p++] = '/'; + pdepth++; + } + } + + if (offset == nodeoffset) { + if (pdepth < (depth + 1)) + return -FDT_ERR_NOSPACE; + + if (p > 1) /* special case so that root path is "/", not "" */ + p--; + buf[p] = '\0'; + return 0; + } + } + + if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) + return -FDT_ERR_BADOFFSET; + else if (offset == -FDT_ERR_BADOFFSET) + return -FDT_ERR_BADSTRUCTURE; + + return offset; /* error from fdt_next_node() */ +} + +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth) +{ + int offset, depth; + int supernodeoffset = -FDT_ERR_INTERNAL; + + FDT_CHECK_HEADER(fdt); + + if (supernodedepth < 0) + return -FDT_ERR_NOTFOUND; + + for (offset = 0, depth = 0; + (offset >= 0) && (offset <= nodeoffset); + offset = fdt_next_node(fdt, offset, &depth)) { + if (depth == supernodedepth) + supernodeoffset = offset; + + if (offset == nodeoffset) { + if (nodedepth) + *nodedepth = depth; + + if (supernodedepth > depth) + return -FDT_ERR_NOTFOUND; + else + return supernodeoffset; + } + } + + if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) + return -FDT_ERR_BADOFFSET; + else if (offset == -FDT_ERR_BADOFFSET) + return -FDT_ERR_BADSTRUCTURE; + + return offset; /* error from fdt_next_node() */ +} + +int fdt_node_depth(const void *fdt, int nodeoffset) +{ + int nodedepth; + int err; + + err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth); + if (err) + return (err < 0) ? err : -FDT_ERR_INTERNAL; + return nodedepth; +} + +int fdt_parent_offset(const void *fdt, int nodeoffset) +{ + int nodedepth = fdt_node_depth(fdt, nodeoffset); + + if (nodedepth < 0) + return nodedepth; + return fdt_supernode_atdepth_offset(fdt, nodeoffset, + nodedepth - 1, NULL); +} + +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen) +{ + int offset; + const void *val; + int len; + + FDT_CHECK_HEADER(fdt); + + /* FIXME: The algorithm here is pretty horrible: we scan each + * property of a node in fdt_getprop(), then if that didn't + * find what we want, we scan over them again making our way + * to the next node. Still it's the easiest to implement + * approach; performance can come later. */ + for (offset = fdt_next_node(fdt, startoffset, NULL); + offset >= 0; + offset = fdt_next_node(fdt, offset, NULL)) { + val = fdt_getprop(fdt, offset, propname, &len); + if (val && (len == proplen) + && (memcmp(val, propval, len) == 0)) + return offset; + } + + return offset; /* error from fdt_next_node() */ +} + +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle) +{ + int offset; + + if ((phandle == 0) || (phandle == -1)) + return -FDT_ERR_BADPHANDLE; + + FDT_CHECK_HEADER(fdt); + + /* FIXME: The algorithm here is pretty horrible: we + * potentially scan each property of a node in + * fdt_get_phandle(), then if that didn't find what + * we want, we scan over them again making our way to the next + * node. Still it's the easiest to implement approach; + * performance can come later. */ + for (offset = fdt_next_node(fdt, -1, NULL); + offset >= 0; + offset = fdt_next_node(fdt, offset, NULL)) { + if (fdt_get_phandle(fdt, offset) == phandle) + return offset; + } + + return offset; /* error from fdt_next_node() */ +} + +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str) +{ + int len = strlen(str); + const char *p; + + while (listlen >= len) { + if (memcmp(str, strlist, len+1) == 0) + return 1; + p = memchr(strlist, '\0', listlen); + if (!p) + return 0; /* malformed strlist.. */ + listlen -= (p-strlist) + 1; + strlist = p + 1; + } + return 0; +} + +int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property) +{ + const char *list, *end; + int length, count = 0; + + list = fdt_getprop(fdt, nodeoffset, property, &length); + if (!list) + return -length; + + end = list + length; + + while (list < end) { + length = strnlen(list, end - list) + 1; + + /* Abort if the last string isn't properly NUL-terminated. */ + if (list + length > end) + return -FDT_ERR_BADVALUE; + + list += length; + count++; + } + + return count; +} + +int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, + const char *string) +{ + int length, len, idx = 0; + const char *list, *end; + + list = fdt_getprop(fdt, nodeoffset, property, &length); + if (!list) + return -length; + + len = strlen(string) + 1; + end = list + length; + + while (list < end) { + length = strnlen(list, end - list) + 1; + + /* Abort if the last string isn't properly NUL-terminated. */ + if (list + length > end) + return -FDT_ERR_BADVALUE; + + if (length == len && memcmp(list, string, length) == 0) + return idx; + + list += length; + idx++; + } + + return -FDT_ERR_NOTFOUND; +} + +const char *fdt_stringlist_get(const void *fdt, int nodeoffset, + const char *property, int idx, + int *lenp) +{ + const char *list, *end; + int length; + + list = fdt_getprop(fdt, nodeoffset, property, &length); + if (!list) { + if (lenp) + *lenp = length; + + return NULL; + } + + end = list + length; + + while (list < end) { + length = strnlen(list, end - list) + 1; + + /* Abort if the last string isn't properly NUL-terminated. */ + if (list + length > end) { + if (lenp) + *lenp = -FDT_ERR_BADVALUE; + + return NULL; + } + + if (idx == 0) { + if (lenp) + *lenp = length - 1; + + return list; + } + + list += length; + idx--; + } + + if (lenp) + *lenp = -FDT_ERR_NOTFOUND; + + return NULL; +} + +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible) +{ + const void *prop; + int len; + + prop = fdt_getprop(fdt, nodeoffset, "compatible", &len); + if (!prop) + return len; + if (fdt_stringlist_contains(prop, len, compatible)) + return 0; + else + return 1; +} + +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible) +{ + int offset, err; + + FDT_CHECK_HEADER(fdt); + + /* FIXME: The algorithm here is pretty horrible: we scan each + * property of a node in fdt_node_check_compatible(), then if + * that didn't find what we want, we scan over them again + * making our way to the next node. Still it's the easiest to + * implement approach; performance can come later. */ + for (offset = fdt_next_node(fdt, startoffset, NULL); + offset >= 0; + offset = fdt_next_node(fdt, offset, NULL)) { + err = fdt_node_check_compatible(fdt, offset, compatible); + if ((err < 0) && (err != -FDT_ERR_NOTFOUND)) + return err; + else if (err == 0) + return offset; + } + + return offset; /* error from fdt_next_node() */ +} diff --git a/cpukit/dtc/libfdt/fdt_rw.c b/cpukit/dtc/libfdt/fdt_rw.c new file mode 100644 index 0000000000..70adec6c37 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_rw.c @@ -0,0 +1,492 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +static int _fdt_blocks_misordered(const void *fdt, + int mem_rsv_size, int struct_size) +{ + return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8)) + || (fdt_off_dt_struct(fdt) < + (fdt_off_mem_rsvmap(fdt) + mem_rsv_size)) + || (fdt_off_dt_strings(fdt) < + (fdt_off_dt_struct(fdt) + struct_size)) + || (fdt_totalsize(fdt) < + (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt))); +} + +static int _fdt_rw_check_header(void *fdt) +{ + FDT_CHECK_HEADER(fdt); + + if (fdt_version(fdt) < 17) + return -FDT_ERR_BADVERSION; + if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry), + fdt_size_dt_struct(fdt))) + return -FDT_ERR_BADLAYOUT; + if (fdt_version(fdt) > 17) + fdt_set_version(fdt, 17); + + return 0; +} + +#define FDT_RW_CHECK_HEADER(fdt) \ + { \ + int __err; \ + if ((__err = _fdt_rw_check_header(fdt)) != 0) \ + return __err; \ + } + +static inline int _fdt_data_size(void *fdt) +{ + return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt); +} + +static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen) +{ + char *p = splicepoint; + char *end = (char *)fdt + _fdt_data_size(fdt); + + if (((p + oldlen) < p) || ((p + oldlen) > end)) + return -FDT_ERR_BADOFFSET; + if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt))) + return -FDT_ERR_NOSPACE; + memmove(p + newlen, p + oldlen, end - p - oldlen); + return 0; +} + +static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p, + int oldn, int newn) +{ + int delta = (newn - oldn) * sizeof(*p); + int err; + err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p)); + if (err) + return err; + fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta); + fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta); + return 0; +} + +static int _fdt_splice_struct(void *fdt, void *p, + int oldlen, int newlen) +{ + int delta = newlen - oldlen; + int err; + + if ((err = _fdt_splice(fdt, p, oldlen, newlen))) + return err; + + fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta); + fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta); + return 0; +} + +static int _fdt_splice_string(void *fdt, int newlen) +{ + void *p = (char *)fdt + + fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt); + int err; + + if ((err = _fdt_splice(fdt, p, 0, newlen))) + return err; + + fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen); + return 0; +} + +static int _fdt_find_add_string(void *fdt, const char *s) +{ + char *strtab = (char *)fdt + fdt_off_dt_strings(fdt); + const char *p; + char *new; + int len = strlen(s) + 1; + int err; + + p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s); + if (p) + /* found it */ + return (p - strtab); + + new = strtab + fdt_size_dt_strings(fdt); + err = _fdt_splice_string(fdt, len); + if (err) + return err; + + memcpy(new, s, len); + return (new - strtab); +} + +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size) +{ + struct fdt_reserve_entry *re; + int err; + + FDT_RW_CHECK_HEADER(fdt); + + re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt)); + err = _fdt_splice_mem_rsv(fdt, re, 0, 1); + if (err) + return err; + + re->address = cpu_to_fdt64(address); + re->size = cpu_to_fdt64(size); + return 0; +} + +int fdt_del_mem_rsv(void *fdt, int n) +{ + struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n); + int err; + + FDT_RW_CHECK_HEADER(fdt); + + if (n >= fdt_num_mem_rsv(fdt)) + return -FDT_ERR_NOTFOUND; + + err = _fdt_splice_mem_rsv(fdt, re, 1, 0); + if (err) + return err; + return 0; +} + +static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name, + int len, struct fdt_property **prop) +{ + int oldlen; + int err; + + *prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen); + if (! (*prop)) + return oldlen; + + if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen), + FDT_TAGALIGN(len)))) + return err; + + (*prop)->len = cpu_to_fdt32(len); + return 0; +} + +static int _fdt_add_property(void *fdt, int nodeoffset, const char *name, + int len, struct fdt_property **prop) +{ + int proplen; + int nextoffset; + int namestroff; + int err; + + if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0) + return nextoffset; + + namestroff = _fdt_find_add_string(fdt, name); + if (namestroff < 0) + return namestroff; + + *prop = _fdt_offset_ptr_w(fdt, nextoffset); + proplen = sizeof(**prop) + FDT_TAGALIGN(len); + + err = _fdt_splice_struct(fdt, *prop, 0, proplen); + if (err) + return err; + + (*prop)->tag = cpu_to_fdt32(FDT_PROP); + (*prop)->nameoff = cpu_to_fdt32(namestroff); + (*prop)->len = cpu_to_fdt32(len); + return 0; +} + +int fdt_set_name(void *fdt, int nodeoffset, const char *name) +{ + char *namep; + int oldlen, newlen; + int err; + + FDT_RW_CHECK_HEADER(fdt); + + namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen); + if (!namep) + return oldlen; + + newlen = strlen(name); + + err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1), + FDT_TAGALIGN(newlen+1)); + if (err) + return err; + + memcpy(namep, name, newlen+1); + return 0; +} + +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len) +{ + struct fdt_property *prop; + int err; + + FDT_RW_CHECK_HEADER(fdt); + + err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop); + if (err == -FDT_ERR_NOTFOUND) + err = _fdt_add_property(fdt, nodeoffset, name, len, &prop); + if (err) + return err; + + memcpy(prop->data, val, len); + return 0; +} + +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len) +{ + struct fdt_property *prop; + int err, oldlen, newlen; + + FDT_RW_CHECK_HEADER(fdt); + + prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen); + if (prop) { + newlen = len + oldlen; + err = _fdt_splice_struct(fdt, prop->data, + FDT_TAGALIGN(oldlen), + FDT_TAGALIGN(newlen)); + if (err) + return err; + prop->len = cpu_to_fdt32(newlen); + memcpy(prop->data + oldlen, val, len); + } else { + err = _fdt_add_property(fdt, nodeoffset, name, len, &prop); + if (err) + return err; + memcpy(prop->data, val, len); + } + return 0; +} + +int fdt_delprop(void *fdt, int nodeoffset, const char *name) +{ + struct fdt_property *prop; + int len, proplen; + + FDT_RW_CHECK_HEADER(fdt); + + prop = fdt_get_property_w(fdt, nodeoffset, name, &len); + if (! prop) + return len; + + proplen = sizeof(*prop) + FDT_TAGALIGN(len); + return _fdt_splice_struct(fdt, prop, proplen, 0); +} + +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen) +{ + struct fdt_node_header *nh; + int offset, nextoffset; + int nodelen; + int err; + uint32_t tag; + fdt32_t *endtag; + + FDT_RW_CHECK_HEADER(fdt); + + offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen); + if (offset >= 0) + return -FDT_ERR_EXISTS; + else if (offset != -FDT_ERR_NOTFOUND) + return offset; + + /* Try to place the new node after the parent's properties */ + fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */ + do { + offset = nextoffset; + tag = fdt_next_tag(fdt, offset, &nextoffset); + } while ((tag == FDT_PROP) || (tag == FDT_NOP)); + + nh = _fdt_offset_ptr_w(fdt, offset); + nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE; + + err = _fdt_splice_struct(fdt, nh, 0, nodelen); + if (err) + return err; + + nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE); + memset(nh->name, 0, FDT_TAGALIGN(namelen+1)); + memcpy(nh->name, name, namelen); + endtag = (fdt32_t *)((char *)nh + nodelen - FDT_TAGSIZE); + *endtag = cpu_to_fdt32(FDT_END_NODE); + + return offset; +} + +int fdt_add_subnode(void *fdt, int parentoffset, const char *name) +{ + return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name)); +} + +int fdt_del_node(void *fdt, int nodeoffset) +{ + int endoffset; + + FDT_RW_CHECK_HEADER(fdt); + + endoffset = _fdt_node_end_offset(fdt, nodeoffset); + if (endoffset < 0) + return endoffset; + + return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset), + endoffset - nodeoffset, 0); +} + +static void _fdt_packblocks(const char *old, char *new, + int mem_rsv_size, int struct_size) +{ + int mem_rsv_off, struct_off, strings_off; + + mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8); + struct_off = mem_rsv_off + mem_rsv_size; + strings_off = struct_off + struct_size; + + memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size); + fdt_set_off_mem_rsvmap(new, mem_rsv_off); + + memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size); + fdt_set_off_dt_struct(new, struct_off); + fdt_set_size_dt_struct(new, struct_size); + + memmove(new + strings_off, old + fdt_off_dt_strings(old), + fdt_size_dt_strings(old)); + fdt_set_off_dt_strings(new, strings_off); + fdt_set_size_dt_strings(new, fdt_size_dt_strings(old)); +} + +int fdt_open_into(const void *fdt, void *buf, int bufsize) +{ + int err; + int mem_rsv_size, struct_size; + int newsize; + const char *fdtstart = fdt; + const char *fdtend = fdtstart + fdt_totalsize(fdt); + char *tmp; + + FDT_CHECK_HEADER(fdt); + + mem_rsv_size = (fdt_num_mem_rsv(fdt)+1) + * sizeof(struct fdt_reserve_entry); + + if (fdt_version(fdt) >= 17) { + struct_size = fdt_size_dt_struct(fdt); + } else { + struct_size = 0; + while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END) + ; + if (struct_size < 0) + return struct_size; + } + + if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) { + /* no further work necessary */ + err = fdt_move(fdt, buf, bufsize); + if (err) + return err; + fdt_set_version(buf, 17); + fdt_set_size_dt_struct(buf, struct_size); + fdt_set_totalsize(buf, bufsize); + return 0; + } + + /* Need to reorder */ + newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size + + struct_size + fdt_size_dt_strings(fdt); + + if (bufsize < newsize) + return -FDT_ERR_NOSPACE; + + /* First attempt to build converted tree at beginning of buffer */ + tmp = buf; + /* But if that overlaps with the old tree... */ + if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) { + /* Try right after the old tree instead */ + tmp = (char *)(uintptr_t)fdtend; + if ((tmp + newsize) > ((char *)buf + bufsize)) + return -FDT_ERR_NOSPACE; + } + + _fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size); + memmove(buf, tmp, newsize); + + fdt_set_magic(buf, FDT_MAGIC); + fdt_set_totalsize(buf, bufsize); + fdt_set_version(buf, 17); + fdt_set_last_comp_version(buf, 16); + fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt)); + + return 0; +} + +int fdt_pack(void *fdt) +{ + int mem_rsv_size; + + FDT_RW_CHECK_HEADER(fdt); + + mem_rsv_size = (fdt_num_mem_rsv(fdt)+1) + * sizeof(struct fdt_reserve_entry); + _fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt)); + fdt_set_totalsize(fdt, _fdt_data_size(fdt)); + + return 0; +} diff --git a/cpukit/dtc/libfdt/fdt_strerror.c b/cpukit/dtc/libfdt/fdt_strerror.c new file mode 100644 index 0000000000..e6c3ceee8c --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_strerror.c @@ -0,0 +1,96 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +struct fdt_errtabent { + const char *str; +}; + +#define FDT_ERRTABENT(val) \ + [(val)] = { .str = #val, } + +static struct fdt_errtabent fdt_errtable[] = { + FDT_ERRTABENT(FDT_ERR_NOTFOUND), + FDT_ERRTABENT(FDT_ERR_EXISTS), + FDT_ERRTABENT(FDT_ERR_NOSPACE), + + FDT_ERRTABENT(FDT_ERR_BADOFFSET), + FDT_ERRTABENT(FDT_ERR_BADPATH), + FDT_ERRTABENT(FDT_ERR_BADSTATE), + + FDT_ERRTABENT(FDT_ERR_TRUNCATED), + FDT_ERRTABENT(FDT_ERR_BADMAGIC), + FDT_ERRTABENT(FDT_ERR_BADVERSION), + FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE), + FDT_ERRTABENT(FDT_ERR_BADLAYOUT), +}; +#define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0])) + +const char *fdt_strerror(int errval) +{ + if (errval > 0) + return ""; + else if (errval == 0) + return ""; + else if (errval > -FDT_ERRTABSIZE) { + const char *s = fdt_errtable[-errval].str; + + if (s) + return s; + } + + return ""; +} diff --git a/cpukit/dtc/libfdt/fdt_sw.c b/cpukit/dtc/libfdt/fdt_sw.c new file mode 100644 index 0000000000..6a804859fd --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_sw.c @@ -0,0 +1,288 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +static int _fdt_sw_check_header(void *fdt) +{ + if (fdt_magic(fdt) != FDT_SW_MAGIC) + return -FDT_ERR_BADMAGIC; + /* FIXME: should check more details about the header state */ + return 0; +} + +#define FDT_SW_CHECK_HEADER(fdt) \ + { \ + int err; \ + if ((err = _fdt_sw_check_header(fdt)) != 0) \ + return err; \ + } + +static void *_fdt_grab_space(void *fdt, size_t len) +{ + int offset = fdt_size_dt_struct(fdt); + int spaceleft; + + spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) + - fdt_size_dt_strings(fdt); + + if ((offset + len < offset) || (offset + len > spaceleft)) + return NULL; + + fdt_set_size_dt_struct(fdt, offset + len); + return _fdt_offset_ptr_w(fdt, offset); +} + +int fdt_create(void *buf, int bufsize) +{ + void *fdt = buf; + + if (bufsize < sizeof(struct fdt_header)) + return -FDT_ERR_NOSPACE; + + memset(buf, 0, bufsize); + + fdt_set_magic(fdt, FDT_SW_MAGIC); + fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); + fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION); + fdt_set_totalsize(fdt, bufsize); + + fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header), + sizeof(struct fdt_reserve_entry))); + fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); + fdt_set_off_dt_strings(fdt, bufsize); + + return 0; +} + +int fdt_resize(void *fdt, void *buf, int bufsize) +{ + size_t headsize, tailsize; + char *oldtail, *newtail; + + FDT_SW_CHECK_HEADER(fdt); + + headsize = fdt_off_dt_struct(fdt); + tailsize = fdt_size_dt_strings(fdt); + + if ((headsize + tailsize) > bufsize) + return -FDT_ERR_NOSPACE; + + oldtail = (char *)fdt + fdt_totalsize(fdt) - tailsize; + newtail = (char *)buf + bufsize - tailsize; + + /* Two cases to avoid clobbering data if the old and new + * buffers partially overlap */ + if (buf <= fdt) { + memmove(buf, fdt, headsize); + memmove(newtail, oldtail, tailsize); + } else { + memmove(newtail, oldtail, tailsize); + memmove(buf, fdt, headsize); + } + + fdt_set_off_dt_strings(buf, bufsize); + fdt_set_totalsize(buf, bufsize); + + return 0; +} + +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size) +{ + struct fdt_reserve_entry *re; + int offset; + + FDT_SW_CHECK_HEADER(fdt); + + if (fdt_size_dt_struct(fdt)) + return -FDT_ERR_BADSTATE; + + offset = fdt_off_dt_struct(fdt); + if ((offset + sizeof(*re)) > fdt_totalsize(fdt)) + return -FDT_ERR_NOSPACE; + + re = (struct fdt_reserve_entry *)((char *)fdt + offset); + re->address = cpu_to_fdt64(addr); + re->size = cpu_to_fdt64(size); + + fdt_set_off_dt_struct(fdt, offset + sizeof(*re)); + + return 0; +} + +int fdt_finish_reservemap(void *fdt) +{ + return fdt_add_reservemap_entry(fdt, 0, 0); +} + +int fdt_begin_node(void *fdt, const char *name) +{ + struct fdt_node_header *nh; + int namelen = strlen(name) + 1; + + FDT_SW_CHECK_HEADER(fdt); + + nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); + if (! nh) + return -FDT_ERR_NOSPACE; + + nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE); + memcpy(nh->name, name, namelen); + return 0; +} + +int fdt_end_node(void *fdt) +{ + fdt32_t *en; + + FDT_SW_CHECK_HEADER(fdt); + + en = _fdt_grab_space(fdt, FDT_TAGSIZE); + if (! en) + return -FDT_ERR_NOSPACE; + + *en = cpu_to_fdt32(FDT_END_NODE); + return 0; +} + +static int _fdt_find_add_string(void *fdt, const char *s) +{ + char *strtab = (char *)fdt + fdt_totalsize(fdt); + const char *p; + int strtabsize = fdt_size_dt_strings(fdt); + int len = strlen(s) + 1; + int struct_top, offset; + + p = _fdt_find_string(strtab - strtabsize, strtabsize, s); + if (p) + return p - strtab; + + /* Add it */ + offset = -strtabsize - len; + struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); + if (fdt_totalsize(fdt) + offset < struct_top) + return 0; /* no more room :( */ + + memcpy(strtab + offset, s, len); + fdt_set_size_dt_strings(fdt, strtabsize + len); + return offset; +} + +int fdt_property(void *fdt, const char *name, const void *val, int len) +{ + struct fdt_property *prop; + int nameoff; + + FDT_SW_CHECK_HEADER(fdt); + + nameoff = _fdt_find_add_string(fdt, name); + if (nameoff == 0) + return -FDT_ERR_NOSPACE; + + prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); + if (! prop) + return -FDT_ERR_NOSPACE; + + prop->tag = cpu_to_fdt32(FDT_PROP); + prop->nameoff = cpu_to_fdt32(nameoff); + prop->len = cpu_to_fdt32(len); + memcpy(prop->data, val, len); + return 0; +} + +int fdt_finish(void *fdt) +{ + char *p = (char *)fdt; + fdt32_t *end; + int oldstroffset, newstroffset; + uint32_t tag; + int offset, nextoffset; + + FDT_SW_CHECK_HEADER(fdt); + + /* Add terminator */ + end = _fdt_grab_space(fdt, sizeof(*end)); + if (! end) + return -FDT_ERR_NOSPACE; + *end = cpu_to_fdt32(FDT_END); + + /* Relocate the string table */ + oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); + newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); + memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); + fdt_set_off_dt_strings(fdt, newstroffset); + + /* Walk the structure, correcting string offsets */ + offset = 0; + while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { + if (tag == FDT_PROP) { + struct fdt_property *prop = + _fdt_offset_ptr_w(fdt, offset); + int nameoff; + + nameoff = fdt32_to_cpu(prop->nameoff); + nameoff += fdt_size_dt_strings(fdt); + prop->nameoff = cpu_to_fdt32(nameoff); + } + offset = nextoffset; + } + if (nextoffset < 0) + return nextoffset; + + /* Finally, adjust the header */ + fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); + fdt_set_magic(fdt, FDT_MAGIC); + return 0; +} diff --git a/cpukit/dtc/libfdt/fdt_wip.c b/cpukit/dtc/libfdt/fdt_wip.c new file mode 100644 index 0000000000..c5bbb68d32 --- /dev/null +++ b/cpukit/dtc/libfdt/fdt_wip.c @@ -0,0 +1,118 @@ +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "libfdt_env.h" + +#include +#include + +#include "libfdt_internal.h" + +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len) +{ + void *propval; + int proplen; + + propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen); + if (! propval) + return proplen; + + if (proplen != len) + return -FDT_ERR_NOSPACE; + + memcpy(propval, val, len); + return 0; +} + +static void _fdt_nop_region(void *start, int len) +{ + fdt32_t *p; + + for (p = start; (char *)p < ((char *)start + len); p++) + *p = cpu_to_fdt32(FDT_NOP); +} + +int fdt_nop_property(void *fdt, int nodeoffset, const char *name) +{ + struct fdt_property *prop; + int len; + + prop = fdt_get_property_w(fdt, nodeoffset, name, &len); + if (! prop) + return len; + + _fdt_nop_region(prop, len + sizeof(*prop)); + + return 0; +} + +int _fdt_node_end_offset(void *fdt, int offset) +{ + int depth = 0; + + while ((offset >= 0) && (depth >= 0)) + offset = fdt_next_node(fdt, offset, &depth); + + return offset; +} + +int fdt_nop_node(void *fdt, int nodeoffset) +{ + int endoffset; + + endoffset = _fdt_node_end_offset(fdt, nodeoffset); + if (endoffset < 0) + return endoffset; + + _fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0), + endoffset - nodeoffset); + return 0; +} diff --git a/cpukit/dtc/libfdt/libfdt.h b/cpukit/dtc/libfdt/libfdt.h new file mode 100644 index 0000000000..78adb1232e --- /dev/null +++ b/cpukit/dtc/libfdt/libfdt.h @@ -0,0 +1,1653 @@ +#ifndef _LIBFDT_H +#define _LIBFDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#define FDT_FIRST_SUPPORTED_VERSION 0x10 +#define FDT_LAST_SUPPORTED_VERSION 0x11 + +/* Error codes: informative error codes */ +#define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ +#define FDT_ERR_EXISTS 2 + /* FDT_ERR_EXISTS: Attemped to create a node or property which + * already exists */ +#define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device + * tree, but its buffer did not have sufficient space to + * contain the expanded tree. Use fdt_open_into() to move the + * device tree to a buffer with more space. */ + +/* Error codes: codes for bad parameters */ +#define FDT_ERR_BADOFFSET 4 + /* FDT_ERR_BADOFFSET: Function was passed a structure block + * offset which is out-of-bounds, or which points to an + * unsuitable part of the structure for the operation. */ +#define FDT_ERR_BADPATH 5 + /* FDT_ERR_BADPATH: Function was passed a badly formatted path + * (e.g. missing a leading / for a function which requires an + * absolute path) */ +#define FDT_ERR_BADPHANDLE 6 + /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle + * value. phandle values of 0 and -1 are not permitted. */ +#define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is + * not sufficiently complete for the requested operation. */ + +/* Error codes: codes for bad device tree blobs */ +#define FDT_ERR_TRUNCATED 8 + /* FDT_ERR_TRUNCATED: Structure block of the given device tree + * ends without an FDT_END tag. */ +#define FDT_ERR_BADMAGIC 9 + /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a + * device tree at all - it is missing the flattened device + * tree magic number. */ +#define FDT_ERR_BADVERSION 10 + /* FDT_ERR_BADVERSION: Given device tree has a version which + * can't be handled by the requested operation. For + * read-write functions, this may mean that fdt_open_into() is + * required to convert the tree to the expected version. */ +#define FDT_ERR_BADSTRUCTURE 11 + /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt + * structure block or other serious error (e.g. misnested + * nodes, or subnodes preceding properties). */ +#define FDT_ERR_BADLAYOUT 12 + /* FDT_ERR_BADLAYOUT: For read-write functions, the given + * device tree has it's sub-blocks in an order that the + * function can't handle (memory reserve map, then structure, + * then strings). Use fdt_open_into() to reorganize the tree + * into a form suitable for the read-write operations. */ + +/* "Can't happen" error indicating a bug in libfdt */ +#define FDT_ERR_INTERNAL 13 + /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion. + * Should never be returned, if it is, it indicates a bug in + * libfdt itself. */ + +/* Errors in device tree content */ +#define FDT_ERR_BADNCELLS 14 + /* FDT_ERR_BADNCELLS: Device tree has a #address-cells, #size-cells + * or similar property with a bad format or value */ + +#define FDT_ERR_BADVALUE 15 + /* FDT_ERR_BADVALUE: Device tree has a property with an unexpected + * value. For example: a property expected to contain a string list + * is not NUL-terminated within the length of its value. */ + +#define FDT_ERR_MAX 15 + +/**********************************************************************/ +/* Low-level functions (you probably don't need these) */ +/**********************************************************************/ + +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) +{ + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +} + +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); + +/**********************************************************************/ +/* Traversal functions */ +/**********************************************************************/ + +int fdt_next_node(const void *fdt, int offset, int *depth); + +/** + * fdt_first_subnode() - get offset of first direct subnode + * + * @fdt: FDT blob + * @offset: Offset of node to check + * @return offset of first subnode, or -FDT_ERR_NOTFOUND if there is none + */ +int fdt_first_subnode(const void *fdt, int offset); + +/** + * fdt_next_subnode() - get offset of next direct subnode + * + * After first calling fdt_first_subnode(), call this function repeatedly to + * get direct subnodes of a parent node. + * + * @fdt: FDT blob + * @offset: Offset of previous subnode + * @return offset of next subnode, or -FDT_ERR_NOTFOUND if there are no more + * subnodes + */ +int fdt_next_subnode(const void *fdt, int offset); + +/**********************************************************************/ +/* General functions */ +/**********************************************************************/ + +#define fdt_get_header(fdt, field) \ + (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +#define __fdt_set_hdr(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ + struct fdt_header *fdth = (struct fdt_header*)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +__fdt_set_hdr(magic); +__fdt_set_hdr(totalsize); +__fdt_set_hdr(off_dt_struct); +__fdt_set_hdr(off_dt_strings); +__fdt_set_hdr(off_mem_rsvmap); +__fdt_set_hdr(version); +__fdt_set_hdr(last_comp_version); +__fdt_set_hdr(boot_cpuid_phys); +__fdt_set_hdr(size_dt_strings); +__fdt_set_hdr(size_dt_struct); +#undef __fdt_set_hdr + +/** + * fdt_check_header - sanity check a device tree or possible device tree + * @fdt: pointer to data which might be a flattened device tree + * + * fdt_check_header() checks that the given buffer contains what + * appears to be a flattened device tree with sane information in its + * header. + * + * returns: + * 0, if the buffer appears to contain a valid device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings, as above + */ +int fdt_check_header(const void *fdt); + +/** + * fdt_move - move a device tree around in memory + * @fdt: pointer to the device tree to move + * @buf: pointer to memory where the device is to be moved + * @bufsize: size of the memory space at buf + * + * fdt_move() relocates, if possible, the device tree blob located at + * fdt to the buffer at buf of size bufsize. The buffer may overlap + * with the existing device tree blob at fdt. Therefore, + * fdt_move(fdt, fdt, fdt_totalsize(fdt)) + * should always succeed. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_move(const void *fdt, void *buf, int bufsize); + +/**********************************************************************/ +/* Read-only functions */ +/**********************************************************************/ + +/** + * fdt_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * + * fdt_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds + */ +const char *fdt_string(const void *fdt, int stroffset); + +/** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob + * + * Returns the number of entries in the device tree blob's memory + * reservation map. This does not include the terminating 0,0 entry + * or any other (0,0) entries reserved for expansion. + * + * returns: + * the number of entries + */ +int fdt_num_mem_rsv(const void *fdt); + +/** + * fdt_get_mem_rsv - retrieve one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: pointers to 64-bit variables + * + * On success, *address and *size will contain the address and size of + * the n-th reserve map entry from the device tree blob, in + * native-endian format. + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + +/** + * fdt_subnode_offset_namelen - find a subnode based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_subnode_offset(), but only examine the first + * namelen characters of name for matching the subnode name. This is + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); +/** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_subnode_offset() finds a subnode of the node at structure block + * offset parentoffset with the given name. name may include a unit + * address, in which case fdt_subnode_offset() will find the subnode + * with that unit address, or the unit address may be omitted, in + * which case fdt_subnode_offset() will find an arbitrary subnode + * whose name excluding unit address matches the given name. + * + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + +/** + * fdt_path_offset_namelen - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * @namelen: number of characters of path to consider + * + * Identical to fdt_path_offset(), but only consider the first namelen + * characters of path as the path name. + */ +int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen); + +/** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * + * fdt_path_offset() finds a node of a given path in the device tree. + * Each path component may omit the unit address portion, but the + * results of this are undefined if any such path component is + * ambiguous (that is if there are multiple nodes at the relevant + * level matching the given component, differentiated only by unit + * address). + * + * returns: + * structure block offset of the node with the requested path (>=0), on success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_path_offset(const void *fdt, const char *path); + +/** + * fdt_get_name - retrieve the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the starting node + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_name() retrieves the name (including unit address) of the + * device tree node at structure block offset nodeoffset. If lenp is + * non-NULL, the length of this name is also returned, in the integer + * pointed to by lenp. + * + * returns: + * pointer to the node's name, on success + * If lenp is non-NULL, *lenp contains the length of that name (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp); + +/** + * fdt_first_property_offset - find the offset of a node's first property + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * + * fdt_first_property_offset() finds the first property of the node at + * the given structure block offset. + * + * returns: + * structure block offset of the property (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested node has no properties + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_first_property_offset(const void *fdt, int nodeoffset); + +/** + * fdt_next_property_offset - step through a node's properties + * @fdt: pointer to the device tree blob + * @offset: structure block offset of a property + * + * fdt_next_property_offset() finds the property immediately after the + * one at the given structure block offset. This will be a property + * of the same node as the given property. + * + * returns: + * structure block offset of the next property (>=0), on success + * -FDT_ERR_NOTFOUND, if the given property is the last in its node + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_next_property_offset(const void *fdt, int offset); + +/** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob + * @offset: offset of the property to retrieve + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property_by_offset() retrieves a pointer to the + * fdt_property structure within the device tree blob at the given + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp); + +/** + * fdt_get_property_namelen - find a property based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_get_property(), but only examine the first namelen + * characters of name for matching the property name. + */ +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); + +/** + * fdt_get_property - find a given property in a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property() retrieves a pointer to the fdt_property + * structure within the device tree blob corresponding to the property + * named 'name' of the node at offset nodeoffset. If lenp is + * non-NULL, the length of the property value is also returned, in the + * integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + const char *name, + int *lenp) +{ + return (struct fdt_property *)(uintptr_t) + fdt_get_property(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_getprop_by_offset - retrieve the value of a property at a given offset + * @fdt: pointer to the device tree blob + * @ffset: offset of the property to read + * @namep: pointer to a string variable (will be overwritten) or NULL + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop_by_offset() retrieves a pointer to the value of the + * property at structure block offset 'offset' (this will be a pointer + * to within the device blob itself, not a copy of the value). If + * lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. If namep is non-NULL, + * the property's namne will also be returned in the char * pointed to + * by namep (this will be a pointer to within the device tree's string + * block, not a new copy of the name). + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * if namep is non-NULL *namep contiains a pointer to the property + * name. + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); + +/** + * fdt_getprop_namelen - get property value based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); + +/** + * fdt_getprop - retrieve the value of a given property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop() retrieves a pointer to the value of the property + * named 'name' of the node at offset nodeoffset (this will be a + * pointer to within the device blob itself, not a copy of the value). + * If lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline void *fdt_getprop_w(void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_get_phandle - retrieve the phandle of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the node + * + * fdt_get_phandle() retrieves the phandle of the device tree node at + * structure block offset nodeoffset. + * + * returns: + * the phandle of the node at nodeoffset, on success (!= 0, != -1) + * 0, if the node has no phandle, or another error occurs + */ +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + +/** + * fdt_get_alias_namelen - get alias based on substring + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); + +/** + * fdt_get_alias - retreive the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * + * fdt_get_alias() retrieves the value of a given alias. That is, the + * value of the property named 'name' in the node /aliases. + * + * returns: + * a pointer to the expansion of the alias named 'name', if it exists + * NULL, if the given alias or the /aliases node does not exist + */ +const char *fdt_get_alias(const void *fdt, const char *name); + +/** + * fdt_get_path - determine the full path of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose path to find + * @buf: character buffer to contain the returned path (will be overwritten) + * @buflen: size of the character buffer at buf + * + * fdt_get_path() computes the full path of the node at offset + * nodeoffset, and records that path in the buffer at buf. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + +/** + * fdt_supernode_atdepth_offset - find a specific ancestor of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * @supernodedepth: depth of the ancestor to find + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_supernode_atdepth_offset() finds an ancestor of the given node + * at a specific depth from the root (where the root itself has depth + * 0, its immediate subnodes depth 1 and so forth). So + * fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); + * will always return 0, the offset of the root node. If the node at + * nodeoffset has depth D, then: + * fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); + * will return nodeoffset itself. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag +* -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth); + +/** + * fdt_node_depth - find the depth of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_node_depth() finds the depth of a given node. The root node + * has depth 0, its immediate subnodes depth 1 and so forth. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * depth of the node at nodeoffset (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_depth(const void *fdt, int nodeoffset); + +/** + * fdt_parent_offset - find the parent of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_parent_offset() locates the parent node of a given node (that + * is, it finds the offset of the node which contains the node at + * nodeoffset as a subnode). + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset, *twice*. + * + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_parent_offset(const void *fdt, int nodeoffset); + +/** + * fdt_node_offset_by_prop_value - find nodes with a given property value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @propname: property name to check + * @propval: property value to search for + * @proplen: length of the value in propval + * + * fdt_node_offset_by_prop_value() returns the offset of the first + * node after startoffset, which has a property named propname whose + * value is of length proplen and has value equal to propval; or if + * startoffset is -1, the very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_prop_value(fdt, -1, propname, + * propval, proplen); + * while (offset != -FDT_ERR_NOTFOUND) { + * // other code here + * offset = fdt_node_offset_by_prop_value(fdt, offset, propname, + * propval, proplen); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen); + +/** + * fdt_node_offset_by_phandle - find the node with a given phandle + * @fdt: pointer to the device tree blob + * @phandle: phandle value + * + * fdt_node_offset_by_phandle() returns the offset of the node + * which has the given phandle value. If there is more than one node + * in the tree with the given phandle (an invalid tree), results are + * undefined. + * + * returns: + * structure block offset of the located node (>= 0), on success + * -FDT_ERR_NOTFOUND, no node with that phandle exists + * -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + +/** + * fdt_node_check_compatible: check a node's compatible property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @compatible: string to match against + * + * + * fdt_node_check_compatible() returns 0 if the given node contains a + * 'compatible' property with the given string as one of its elements, + * it returns non-zero otherwise, or on error. + * + * returns: + * 0, if the node has a 'compatible' property listing the given string + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property + * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible); + +/** + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @compatible: 'compatible' string to match against + * + * fdt_node_offset_by_compatible() returns the offset of the first + * node after startoffset, which has a 'compatible' property which + * lists the given compatible string; or if startoffset is -1, the + * very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_compatible(fdt, -1, compatible); + * while (offset != -FDT_ERR_NOTFOUND) { + * // other code here + * offset = fdt_node_offset_by_compatible(fdt, offset, compatible); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible); + +/** + * fdt_stringlist_contains - check a string list property for a string + * @strlist: Property containing a list of strings to check + * @listlen: Length of property + * @str: String to search for + * + * This is a utility function provided for convenience. The list contains + * one or more strings, each terminated by \0, as is found in a device tree + * "compatible" property. + * + * @return: 1 if the string is found in the list, 0 not found, or invalid list + */ +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + +/** + * fdt_stringlist_count - count the number of strings in a string list + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @return: + * the number of strings in the given property + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist + */ +int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property); + +/** + * fdt_stringlist_search - find a string in a string list and return its index + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @string: string to look up in the string list + * + * Note that it is possible for this function to succeed on property values + * that are not NUL-terminated. That's because the function will stop after + * finding the first occurrence of @string. This can for example happen with + * small-valued cell properties, such as #address-cells, when searching for + * the empty string. + * + * @return: + * the index of the string in the list of strings + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist or does not contain + * the given string + */ +int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, + const char *string); + +/** + * fdt_stringlist_get() - obtain the string at a given index in a string list + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @index: index of the string to return + * @lenp: return location for the string length or an error code on failure + * + * Note that this will successfully extract strings from properties with + * non-NUL-terminated values. For example on small-valued cell properties + * this function will return the empty string. + * + * If non-NULL, the length of the string (on success) or a negative error-code + * (on failure) will be stored in the integer pointer to by lenp. + * + * @return: + * A pointer to the string at the given index in the string list or NULL on + * failure. On success the length of the string will be stored in the memory + * location pointed to by the lenp parameter, if non-NULL. On failure one of + * the following negative error codes will be returned in the lenp parameter + * (if non-NULL): + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist + */ +const char *fdt_stringlist_get(const void *fdt, int nodeoffset, + const char *property, int index, + int *lenp); + +/**********************************************************************/ +/* Read-only functions (addressing related) */ +/**********************************************************************/ + +/** + * FDT_MAX_NCELLS - maximum value for #address-cells and #size-cells + * + * This is the maximum value for #address-cells, #size-cells and + * similar properties that will be processed by libfdt. IEE1275 + * requires that OF implementations handle values up to 4. + * Implementations may support larger values, but in practice higher + * values aren't used. + */ +#define FDT_MAX_NCELLS 4 + +/** + * fdt_address_cells - retrieve address size for a bus represented in the tree + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to find the address size for + * + * When the node has a valid #address-cells property, returns its value. + * + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #address-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid #address-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_address_cells(const void *fdt, int nodeoffset); + +/** + * fdt_size_cells - retrieve address range size for a bus represented in the + * tree + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to find the address range size for + * + * When the node has a valid #size-cells property, returns its value. + * + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #address-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid #size-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_size_cells(const void *fdt, int nodeoffset); + + +/**********************************************************************/ +/* Write-in-place functions */ +/**********************************************************************/ + +/** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * fdt_setprop_inplace() replaces the value of a given property with + * the data in val, of length len. This function cannot change the + * size of a property, and so will only work if len is equal to the + * current length of the property. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if len is not equal to the property's current length + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to replace the property with + * + * fdt_setprop_inplace_u32() replaces the value of a given property + * with the 32-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 4. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 4 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to replace the property with + * + * fdt_setprop_inplace_u64() replaces the value of a given property + * with the 64-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 8. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 8 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_cell - change the value of a single-cell property + * + * This is an alternative name for fdt_setprop_inplace_u32() + */ +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_nop_property - replace a property with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_nop_property() will replace a given property's representation + * in the blob with FDT_NOP tags, effectively removing it from the + * tree. + * + * This function will alter only the bytes in the blob which contain + * the property, and will not alter or move any other part of the + * tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_property(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_nop_node - replace a node (subtree) with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_nop_node() will replace a given node's representation in the + * blob, including all its subnodes, if any, with FDT_NOP tags, + * effectively removing it from the tree. + * + * This function will alter only the bytes in the blob which contain + * the node and its properties and subnodes, and will not alter or + * move any other part of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Sequential write functions */ +/**********************************************************************/ + +int fdt_create(void *buf, int bufsize); +int fdt_resize(void *fdt, void *buf, int bufsize); +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); +int fdt_finish_reservemap(void *fdt); +int fdt_begin_node(void *fdt, const char *name); +int fdt_property(void *fdt, const char *name, const void *val, int len); +static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) +{ + return fdt_property_u32(fdt, name, val); +} +#define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) +int fdt_end_node(void *fdt); +int fdt_finish(void *fdt); + +/**********************************************************************/ +/* Read-write functions */ +/**********************************************************************/ + +int fdt_create_empty_tree(void *buf, int bufsize); +int fdt_open_into(const void *fdt, void *buf, int bufsize); +int fdt_pack(void *fdt); + +/** + * fdt_add_mem_rsv - add one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: 64-bit values (native endian) + * + * Adds a reserve map entry to the given blob reserving a region at + * address address of length size. + * + * This function will insert data into the reserve map and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new reservation entry + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size); + +/** + * fdt_del_mem_rsv - remove a memory reserve map entry + * @fdt: pointer to the device tree blob + * @n: entry to remove + * + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from + * the blob. + * + * This function will delete data from the reservation table and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there + * are less than n+1 reserve map entries) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_mem_rsv(void *fdt, int n); + +/** + * fdt_set_name - change the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * @name: name to give the node + * + * fdt_set_name() replaces the name (including unit address, if any) + * of the given node with the given string. NOTE: this function can't + * efficiently check if the new name is unique amongst the given + * node's siblings; results are undefined if this function is invoked + * with a name equal to one of the given node's siblings. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob + * to contain the new name + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_set_name(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_setprop - create or change a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to set the property value to + * @len: length of the property value + * + * fdt_setprop() sets the value of the named property in the given + * node to the given value and length, creating the property if it + * does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value for the property (native endian) + * + * fdt_setprop_u32() sets the value of the named property in the given + * node to the given 32-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_u64 - set a property to a 64-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value for the property (native endian) + * + * fdt_setprop_u64() sets the value of the named property in the given + * node to the given 64-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, + uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_cell - set a property to a single cell value + * + * This is an alternative name for fdt_setprop_u32() + */ +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + return fdt_setprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_setprop_string - set a property to a string value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value for the property + * + * fdt_setprop_string() sets the value of the named property in the + * given node to the given string value (using the length of the + * string to determine the new length of the property), or creates a + * new property with that value if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to append to + * @val: pointer to data to append to the property value + * @len: length of the data to append to the property value + * + * fdt_appendprop() appends the value to the named property in the + * given node, creating the property if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_appendprop_u32 - append a 32-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u32() appends the given 32-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_u64 - append a 64-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u64() appends the given 64-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_cell - append a single cell value to a property + * + * This is an alternative name for fdt_appendprop_u32() + */ +static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_appendprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_appendprop_string - append a string to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value to append to the property + * + * fdt_appendprop_string() appends the given string to the value of + * the named property in the given node, or creates a new property + * with that value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ + fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_delprop - delete a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_del_property() will delete the given property. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_delprop(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_add_subnode_namelen - creates a new node based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_add_subnode(), but use only the first namelen + * characters of name as the name of the new node. This is useful for + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); + +/** + * fdt_add_subnode - creates a new node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_add_subnode() creates a new node as a subnode of the node at + * structure block offset parentoffset, with the given name (which + * should include the unit address, if any). + * + * This function will insert data into the blob, and will therefore + * change the offsets of some existing nodes. + + * returns: + * structure block offset of the created nodeequested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the + * blob to contain the new node + * -FDT_ERR_NOSPACE + * -FDT_ERR_BADLAYOUT + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + +/** + * fdt_del_node - delete a node (subtree) + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_del_node() will remove the given node, including all its + * subnodes if any, from the blob. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Debugging / informational functions */ +/**********************************************************************/ + +const char *fdt_strerror(int errval); + +#endif /* _LIBFDT_H */ diff --git a/cpukit/dtc/libfdt/libfdt_env.h b/cpukit/dtc/libfdt/libfdt_env.h new file mode 100644 index 0000000000..9dea97dfff --- /dev/null +++ b/cpukit/dtc/libfdt/libfdt_env.h @@ -0,0 +1,111 @@ +#ifndef _LIBFDT_ENV_H +#define _LIBFDT_ENV_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include + +#ifdef __CHECKER__ +#define __force __attribute__((force)) +#define __bitwise __attribute__((bitwise)) +#else +#define __force +#define __bitwise +#endif + +typedef uint16_t __bitwise fdt16_t; +typedef uint32_t __bitwise fdt32_t; +typedef uint64_t __bitwise fdt64_t; + +#define EXTRACT_BYTE(x, n) ((unsigned long long)((uint8_t *)&x)[n]) +#define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1)) +#define CPU_TO_FDT32(x) ((EXTRACT_BYTE(x, 0) << 24) | (EXTRACT_BYTE(x, 1) << 16) | \ + (EXTRACT_BYTE(x, 2) << 8) | EXTRACT_BYTE(x, 3)) +#define CPU_TO_FDT64(x) ((EXTRACT_BYTE(x, 0) << 56) | (EXTRACT_BYTE(x, 1) << 48) | \ + (EXTRACT_BYTE(x, 2) << 40) | (EXTRACT_BYTE(x, 3) << 32) | \ + (EXTRACT_BYTE(x, 4) << 24) | (EXTRACT_BYTE(x, 5) << 16) | \ + (EXTRACT_BYTE(x, 6) << 8) | EXTRACT_BYTE(x, 7)) + +static inline uint16_t fdt16_to_cpu(fdt16_t x) +{ + return (__force uint16_t)CPU_TO_FDT16(x); +} +static inline fdt16_t cpu_to_fdt16(uint16_t x) +{ + return (__force fdt16_t)CPU_TO_FDT16(x); +} + +static inline uint32_t fdt32_to_cpu(fdt32_t x) +{ + return (__force uint32_t)CPU_TO_FDT32(x); +} +static inline fdt32_t cpu_to_fdt32(uint32_t x) +{ + return (__force fdt32_t)CPU_TO_FDT32(x); +} + +static inline uint64_t fdt64_to_cpu(fdt64_t x) +{ + return (__force uint64_t)CPU_TO_FDT64(x); +} +static inline fdt64_t cpu_to_fdt64(uint64_t x) +{ + return (__force fdt64_t)CPU_TO_FDT64(x); +} +#undef CPU_TO_FDT64 +#undef CPU_TO_FDT32 +#undef CPU_TO_FDT16 +#undef EXTRACT_BYTE + +#endif /* _LIBFDT_ENV_H */ diff --git a/cpukit/dtc/libfdt/libfdt_internal.h b/cpukit/dtc/libfdt/libfdt_internal.h new file mode 100644 index 0000000000..02cfa6fb61 --- /dev/null +++ b/cpukit/dtc/libfdt/libfdt_internal.h @@ -0,0 +1,95 @@ +#ifndef _LIBFDT_INTERNAL_H +#define _LIBFDT_INTERNAL_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library 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 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include + +#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) +#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE)) + +#define FDT_CHECK_HEADER(fdt) \ + { \ + int __err; \ + if ((__err = fdt_check_header(fdt)) != 0) \ + return __err; \ + } + +int _fdt_check_node_offset(const void *fdt, int offset); +int _fdt_check_prop_offset(const void *fdt, int offset); +const char *_fdt_find_string(const char *strtab, int tabsize, const char *s); +int _fdt_node_end_offset(void *fdt, int nodeoffset); + +static inline const void *_fdt_offset_ptr(const void *fdt, int offset) +{ + return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; +} + +static inline void *_fdt_offset_ptr_w(void *fdt, int offset) +{ + return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset); +} + +static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n) +{ + const struct fdt_reserve_entry *rsv_table = + (const struct fdt_reserve_entry *) + ((const char *)fdt + fdt_off_mem_rsvmap(fdt)); + + return rsv_table + n; +} +static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n) +{ + return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n); +} + +#define FDT_SW_MAGIC (~FDT_MAGIC) + +#endif /* _LIBFDT_INTERNAL_H */ diff --git a/cpukit/dtc/libfdt/preinstall.am b/cpukit/dtc/libfdt/preinstall.am new file mode 100644 index 0000000000..2c5c51d2dc --- /dev/null +++ b/cpukit/dtc/libfdt/preinstall.am @@ -0,0 +1,46 @@ +## Automatically generated by ampolish3 - Do not edit + +if AMPOLISH3 +$(srcdir)/preinstall.am: Makefile.am + $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am +endif + +PREINSTALL_DIRS = +DISTCLEANFILES = $(PREINSTALL_DIRS) + +all-am: $(PREINSTALL_FILES) + +PREINSTALL_FILES = +CLEANFILES = $(PREINSTALL_FILES) + +all-local: $(TMPINSTALL_FILES) + +TMPINSTALL_FILES = +CLEANFILES += $(TMPINSTALL_FILES) + +$(PROJECT_LIB)/$(dirstamp): + @$(MKDIR_P) $(PROJECT_LIB) + @: > $(PROJECT_LIB)/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp) + +$(PROJECT_INCLUDE)/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE) + @: > $(PROJECT_INCLUDE)/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp) + +$(PROJECT_INCLUDE)/fdt.h: fdt.h $(PROJECT_INCLUDE)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/fdt.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/fdt.h + +$(PROJECT_INCLUDE)/libfdt.h: libfdt.h $(PROJECT_INCLUDE)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libfdt.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/libfdt.h + +$(PROJECT_INCLUDE)/libfdt_env.h: libfdt_env.h $(PROJECT_INCLUDE)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libfdt_env.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/libfdt_env.h + +$(PROJECT_LIB)/libfdt.a: libfdt.a $(PROJECT_LIB)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_LIB)/libfdt.a +TMPINSTALL_FILES += $(PROJECT_LIB)/libfdt.a + diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am index ed773c4e06..d775c77c76 100644 --- a/testsuites/libtests/Makefile.am +++ b/testsuites/libtests/Makefile.am @@ -1,6 +1,7 @@ ACLOCAL_AMFLAGS = -I ../aclocal _SUBDIRS = POSIX +_SUBDIRS += libfdt01 _SUBDIRS += defaultconfig01 _SUBDIRS += pwdgrp02 _SUBDIRS += shell01 diff --git a/testsuites/libtests/configure.ac b/testsuites/libtests/configure.ac index 4924e0f2a2..89ca57fa16 100644 --- a/testsuites/libtests/configure.ac +++ b/testsuites/libtests/configure.ac @@ -79,6 +79,7 @@ AM_CONDITIONAL(DLTESTS,[test x"$TEST_LIBDL" = x"yes"]) # Explicitly list all Makefiles here AC_CONFIG_FILES([Makefile +libfdt01/Makefile defaultconfig01/Makefile pwdgrp02/Makefile shell01/Makefile diff --git a/testsuites/libtests/libfdt01/Makefile.am b/testsuites/libtests/libfdt01/Makefile.am new file mode 100644 index 0000000000..880d22191e --- /dev/null +++ b/testsuites/libtests/libfdt01/Makefile.am @@ -0,0 +1,20 @@ +rtems_tests_PROGRAMS = libfdt01 +libfdt01_SOURCES = init.c some.c +libfdt01_LDADD = -lfdt + +dist_rtems_tests_DATA = libfdt01.scn libfdt01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(libfdt01_OBJECTS) $(libfdt01_LDADD) +LINK_LIBS = $(libfdt01_LDLIBS) + +libfdt01$(EXEEXT): $(libfdt01_OBJECTS) $(libfdt01_DEPENDENCIES) + @rm -f libfdt01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/libfdt01/init.c b/testsuites/libtests/libfdt01/init.c new file mode 100644 index 0000000000..a13fc82021 --- /dev/null +++ b/testsuites/libtests/libfdt01/init.c @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "tmacros.h" + +#include +#include + +#include "some.h" + +/* + * To generate the FDT blob use: + * + * dtc some.dts -O asm > some.s + * as some.s -o some.o + * objcopy -O binary some.o some.bin + * rtems-bin2c some.bin some.c + */ + +const char rtems_test_name[] = "LIBFDT 1"; + +static void test(void) +{ + const void *fdt = some_bin; + int status; + uint32_t size; + const char *alias; + int root; + int cells; + const char *prop; + fdt32_t *prop_32; + int len; + int d; + int m; + int t; + int node; + uint32_t phandle; + uint32_t cell; + + status = fdt_check_header(fdt); + rtems_test_assert(status == 0); + + size = fdt_totalsize(fdt); + rtems_test_assert(size == some_bin_size); + + alias = fdt_get_alias(fdt, "nix"); + rtems_test_assert(alias == NULL); + + alias = fdt_get_alias(fdt, "k"); + rtems_test_assert(strcmp(alias, "/m@1248") == 0); + + root = fdt_path_offset(fdt, "nix"); + rtems_test_assert(root == -FDT_ERR_BADPATH); + + root = fdt_path_offset(fdt, "/"); + rtems_test_assert(root >= 0); + + cells = fdt_address_cells(fdt, root); + rtems_test_assert(cells == 1); + + cells = fdt_size_cells(fdt, root); + rtems_test_assert(cells == 2); + + status = fdt_node_check_compatible(fdt, root, "a,b"); + rtems_test_assert(status == 0); + + status = fdt_node_check_compatible(fdt, root, "blub"); + rtems_test_assert(status == 1); + + prop = fdt_getprop(fdt, root, "model", &len); + rtems_test_assert(len == 2); + rtems_test_assert(memcmp(prop, "c", 2) == 0); + + d = fdt_subnode_offset(fdt, root, "slurf"); + rtems_test_assert(d == -FDT_ERR_NOTFOUND); + + d = fdt_subnode_offset(fdt, root, "d"); + rtems_test_assert(d >= 0); + + prop = fdt_getprop(fdt, d, "e", &len); + rtems_test_assert(len == 2); + rtems_test_assert(memcmp(prop, "f", 2) == 0); + + prop = fdt_getprop(fdt, d, "g", &len); + rtems_test_assert(len == 0); + rtems_test_assert(prop != NULL); + + m = fdt_subnode_offset(fdt, root, "m@1248"); + rtems_test_assert(m >= 0); + + t = fdt_subnode_offset(fdt, root, "t"); + rtems_test_assert(t >= 0); + + prop_32 = (fdt32_t *) fdt_getprop(fdt, t, "u", &len); + rtems_test_assert(len == 4); + phandle = fdt32_to_cpu(*prop_32); + + node = fdt_node_offset_by_phandle(fdt, phandle); + rtems_test_assert(node == m); + + prop_32 = (fdt32_t *) fdt_getprop(fdt, m, "n", &len); + rtems_test_assert(len == 8); + cell = fdt32_to_cpu(prop_32[0]); + rtems_test_assert(cell == 0xdeadbeef); + cell = fdt32_to_cpu(prop_32[1]); + rtems_test_assert(cell == 0x12345678); +} + +static void Init(rtems_task_argument arg) +{ + TEST_BEGIN(); + + test(); + + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_MAXIMUM_TASKS 1 + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT + +#include diff --git a/testsuites/libtests/libfdt01/libfdt01.doc b/testsuites/libtests/libfdt01/libfdt01.doc new file mode 100644 index 0000000000..1e9ab970be --- /dev/null +++ b/testsuites/libtests/libfdt01/libfdt01.doc @@ -0,0 +1,20 @@ +This file describes the directives and concepts tested by this test set. + +test set name: libfdt01 + +directives: + + - fdt_address_cells() + - fdt_check_header() + - fdt_get_alias() + - fdt_getprop() + - fdt_node_check_compatible() + - fdt_node_offset_by_phandle() + - fdt_path_offset() + - fdt_size_cells() + - fdt_subnode_offset() + - fdt_totalsize() + +concepts: + + - Ensure that some libfdt functions work as expected. diff --git a/testsuites/libtests/libfdt01/libfdt01.scn b/testsuites/libtests/libfdt01/libfdt01.scn new file mode 100644 index 0000000000..7ea69716fe --- /dev/null +++ b/testsuites/libtests/libfdt01/libfdt01.scn @@ -0,0 +1,2 @@ +*** BEGIN OF TEST LIBFDT 1 *** +*** END OF TEST LIBFDT 1 *** diff --git a/testsuites/libtests/libfdt01/some.c b/testsuites/libtests/libfdt01/some.c new file mode 100644 index 0000000000..5eed911204 --- /dev/null +++ b/testsuites/libtests/libfdt01/some.c @@ -0,0 +1,52 @@ +/* + * Declarations for C structure representing binary file some.bin + * + * WARNING: Automatically generated -- do not edit! + */ + +#include + +const unsigned char some_bin[] = { + 0xd0, 0x0d, 0xfe, 0xed, 0x00, 0x00, 0x01, 0xd8, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x01, 0x90, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x00, 0x00, 0x01, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x2c, 0x62, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x26, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x09, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, + 0x68, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, + 0x68, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x30, 0x2f, 0x6d, 0x40, 0x31, 0x32, 0x34, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x6d, 0x40, 0x31, 0x32, + 0x34, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x32, 0xde, 0xad, 0xbe, 0xef, 0x12, 0x34, 0x56, 0x78, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x44, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x00, 0x23, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2d, + 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x00, 0x23, 0x73, 0x69, 0x7a, 0x65, 0x2d, + 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, + 0x67, 0x00, 0x77, 0x00, 0x6b, 0x00, 0x6e, 0x00, 0x6c, 0x69, 0x6e, 0x75, + 0x78, 0x2c, 0x70, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x70, 0x00, + 0x72, 0x00, 0x75, 0x00, +}; + +const size_t some_bin_size = sizeof(some_bin); diff --git a/testsuites/libtests/libfdt01/some.dts b/testsuites/libtests/libfdt01/some.dts new file mode 100644 index 0000000000..ac15825b17 --- /dev/null +++ b/testsuites/libtests/libfdt01/some.dts @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +/dts-v1/; + +/ { + compatible = "a,b"; + #address-cells = <1>; + #size-cells = <2>; + model = "c"; + + d { + e = "f"; + g; + + h@0 { + }; + + h@1 { + w = <123>; + }; + }; + + aliases { + k = "/m@1248"; + }; + + l: m@1248 { + n = <0xdeadbeef 0x12345678>; + + o { + p; + }; + + q { + r = "s"; + }; + }; + + t { + u = <&l>; + }; +}; diff --git a/testsuites/libtests/libfdt01/some.h b/testsuites/libtests/libfdt01/some.h new file mode 100644 index 0000000000..e2e0135e68 --- /dev/null +++ b/testsuites/libtests/libfdt01/some.h @@ -0,0 +1,15 @@ +/* + * Extern declarations for C structure representing binary file some.bin + * + * WARNING: Automatically generated -- do not edit! + */ + +#ifndef __some_h +#define __some_h + +#include + +extern const unsigned char some_bin[]; +extern const size_t some_bin_size; + +#endif -- cgit v1.2.3 L~c#@oXR#NU-Tݮ[žEo8 1ZCFo*P:8_,MY}LSϼ253 f\ M*8I`muX=F)78vCgH8_<4ga&]a *x Gg}h"=2b 9c(Q'sIrC/:jAu!OD"m#Pu5Hd&@RQȲ҂k 9oة5M)a`c3 32a?w3:_\Y}?Ú&9"Bz^) oT(H$T()%3 03I}_g?<˿2?nBQ t\-y69TOo?}VMf5H9y*PݬgU1ʾ~ȍAa}@섴AhŒ" ^st?G| WM~L~%>^?%8R/_jos? hL'NKkRMX'ղUnX~y݁Lwj02gMM4|cwEä4NFAPj ;3 RSa5Fʊ\sN2MG@NL[/X6 خǮo濱oBxw.?}?QŧF㕋P?_.N_g3X#^B:A)3REn@?~ݸq7fl-tw Z6as<}ĀJ1 W..IBPdYWF0KؓL Dwohi@V1]sS( AzlKzy{EZȌV[YmߪjU;_"#-z~o)k0A#(0ko tNՓՊS!AfK?P FDui)}A*džeV6l4cxLIJQAqґ75 a-~:A2`B(GJI!J*JTEh'ȬTHμdC/戇>w7d$~[<݌UV )eKLV 0H`8#AMFfdS42ACV҆&FxASʪcc GD>}|7Ǫ]yOeUUtzqĆ!3-TcuoYcB&9I `+s6QTZH4ZؠqemDPe 10m6xQEz7kֽ"'wu[9GF@ДbZG4TCz\]$,Ɠ)12|E2Chjhđ\S#SAjM&4UھO_(*wZHH%N`08`X' @ ߏqk t{ )!tU`)! ~/zWx#4}GO򡏤|$l<+E.'m\"3f`4 0K% [  CAkᒚ)H,ejrsruÆh0?"uN9ycv4p841Fs=82#VZ^cM !FƲ1)}Jd F4=x V1<' l&`E*Q.؄vE43j@ҦZF0EgIc̗g$ar6wX3&pAh2?)f VTdtJGg33C&Ƞ~ٯRJB MR|'!8 !{:"_R S?6Kz N /cC-m[9L kp&ce>!AQ; #C܃=m>}`wwxrsa.ˠV% E;|RS ֳ3Jveֵ' 1o}<#RĻz3,f}[:Ǧ/7owwwxֵkkݽZֵ0`odYeYe_g+,Ы \qy{޵kX]zֵH K334'0$Y=B XnfrYS3336xs4kzwwwwg;W mqrg ? .m?nWv-IyT죹\sB;QbR?xy>{ևKSO›Yd7n9y[Ebz0sńGgw (",Bуy&v.)UPa":'2;'f[⥧_ohFQ4fsSӻXn..^*'UDbas:[)g5gpmQMlMt Ýmx|ǍUUUUUzU|sJj۞pȞD F00^'w/^zz$Hv|^%u48[8d9WIDȈ#]$&n!T {ՅxFj nOٷ]~^Zqb)raw5ŋ) 2ua~8EC6XK~Vr#>F0jƍod0rÎ 057܏s/ 毥S~piV"Z: { ?dcG,kIO,ɲ!qPtӮU끗<=UP<yTPsUvy`m>dnR埗w+;5GtUQ܂ 3H )LGDL:@S lbDbա_OkS5ƓqD\ry z<15pѪ[ H-OT;Y}5UUZL>' >a5O}~CDz̶vxz/[iBgy_~Ko!88um{QǢxF( t12R+Y4X3jR1?][]wwwuww7ww7wwWwqwww{]˻owwwz..nnwqwwwWwswwswwuwwwwxݵެ>UE4u^F,h)D)Z V#cC4̢Փ'~86giRXx}ϸ7~@?֑5no6`nD w QݎkÅ&8Hv<|M:Ll.\G8NF.CR@eůiVh l;z4Dγ o/7\}CdRR { 4boanJM/i%uu\Wҹ3lKj' 5 I4馿wEؓG̪j7%a+5A~;r􈓰hSQaL't=K{O#QdGERUg1SSrR5#_7h#x;+Ba2χWv>bv-=yfK6lXgO?6*4EgVV /a-;3[vA+rtFAsR cy/A S=p<^}=㸚 Z\1ZKz" ђ[!Ђ sH+( ̓|iaxgA7,pFΏ Ճ;-5G2hjq2:N2lM$1^@xה\Fl0/-aصG&8?VDx5u>7>~6p!vL`p"(L ^yEQ7"˳$O#1p.Ic2Tyus⽻~'쟻^o51T>ە=}wUo8V. ُ썒}?P+: i {*q䩪eţ&8L{?|ܤN:K-_a#-aQ</f5&2:{򊑆hY}K罟b"-4.-6G{Hv31">}6Z16{>jjL*sl _Gۏ3=q$D0oPBh4>m㓵l Z_MfQw^N6t? ¹}G\dI.:!*HdXd'v?duFBo" w5Q&7N~xH6%"tCno'%cEX?D:׻Erv zA#Rye_ƌ Fɠ̵ 6-i*5t` I D dFTme2ٛ6aJPV)j!RM$lISjT#*JjQQcbSf)Vlִ$Y*5223mL6EK*S5dTmeM#mHZ[JȈ%6YMJ1Fȍ 3&bS>Kg?Rۚɀՙ%I5e++IkBʛ-[KmMxd$Bjj+M[[JB ih 7)e]toMu2rwr* 6QDLØ`D@zdu PB%S!B%rD"BQxh:B nCR'Y2:2.M)H4ĬZB*Z sH9 s&k %PL2Y:J#* u8 0:!BȡQN$z[LRPT$E7(l s,L$7+G:07. @OΠ $K7 dd" u 5b FM@srɪ90dqeZL$"L0r02J)SR(&KP HX `J0H :9bɢݗXmRmRRdT|=v5)e\&2jY4_kIi);4EXVS%$DVѴSP[&l[LE5$QfEA -27Z-^+nEMi\~MZzj,Tȶ%ڮ3oo.d&2R=҅!1A'2"P11;}P Pޠ?> @,E @)Z"?x'?'PxpAyCPzLbOZ9ce!5uY3e4I֣~Gkݻ;Pjd#%pkn=sCn<s%ϢP)(CTB" A G#) r hL,d02zG_#RN$Ya$4%;h}|&>LL\v_H)[l}sWP+B=9#$&+lm\W_f5_]l 'Bb6QL?A[\xlfavd} 7πgp dH{KH8@.ypxH' ;v5M GhgVr1tC kL [8WX%46eYPә$$a_Ƀ9?9:a!*p;NNo;Nv7Q`ThF+-@Y$4,E8MNxNSZbv!aJlwĞ5 ~Spn; b.*X߸uzզQ_RIMQV5ǏS33-31sSmQ)Je->!$/TOaY$Kf`}M$Ҏj_c1uyb3 OtUܗjp$TP:봲h[ʻ0xS4g] ƚ$$k,ݦޛlWn!2#Ո_X+evO_a♏mƬJ#3v Tqˏ_ΧTp!7>_S3eULcɬf.aRF P"' Eq &SQj6#2w {6D6$ m%-뒆}0ֵDzrj~2!`f*F';H|7aD@KLE1ҴV:]H2dgy9gFX0'ҰڬU2^AuBӗRҖq?.DNLgj5 t/rTŏ(?ɼt0 NÍIP,ߌUX#c3O30vT9s3FF},1zpCZTU:6q7U6~Y Z`Vy{9sc?$|р(z?ˈӧg Ksak6},,%YeYe~_>3=!UnrbU'-(g|^׵$1ݼg%&z^՛ t~ &X9d4bh&1{HMq E37Kk$>?,١')fY%ڴO5u9_sQʇg>ONj xp]IM+HQY&T#U?_#ЇFG4àJUAI9TR?໶022ȶ `x-0vh13 ^xU:4ڇ:24^6*Mݭ.8oQw{֪8Mb3 ,xk&C4shcg~ӹXGO$հOIy_i߬M90yq쪺I5'/cO²ն_܏؏|_M}{FHcY`p2j5k o!Κ(c|IePKTzWlۇ\sm!TnӓَH4k&fe:7bȸR]aFnӻ څ\xR8 :͋rORĄHNE-g{fy/8b7881s!cil@J2 2QQdBiY$$#PՏ ]E؍&q6LB )|O<%tkxxھ^;y'L#\w eH2VsxQ$Ko=}%O?qmTmy#,_DB1Hƛe+ FY<>]4Sf!+xve{R>0th+n\p= kZ%F0CFݏ{Uo/f>=G \czv=46pMwu }٘<§r+GD&i:@_6ՈU۷`ty,3VfN1kp1{pvu“j#7.SP3$5QlD8-*BIl.iCՁ;pM:`B W$OaP2b`)_' TWx;0(7T܇q=?N*rnbt=`g?WpM'X,@0 }L}zh7l,܎}.`I ؾcG{>+/~`YllU|EBODJcA ȨGmjVDffChZ/)n@m Ddb!2 Ж w:;1":ɴEb'6vpJ?n2C^>ns8INfiVW[TryYer-t'+xe6YKFWgנG(̎zP2Ld2lf3v9 .& {] Ym|^C` 綻L[D !@q /ѕѸ&1N_)$3mu6cwa0r +Z]^DQܙhPrJ>fŪzJfQQ7 eF'^&A'e9ɛ_ (@0` j(<>9;_jqV+J_?;mc-qRՒ &(.xh t;l"HI1YZ<w,ۻ{_Q݆=h1( dZL+`ȥJqz7zF ,9Yu 1p,'}=Cm==6ݱG@2S1 A?wgnYX @ / p`qGYBDh=:[p;19 >T2E8`IL+'7S5 H8C5gv"5o0/Hfy?o<rN/V?'O>|>;5N8whUaKaTX?Ꟛ^iףUwvTo_.ׇUZ12 4ksRqBؕcSw?r8cmȃsw!{{z{^q ~VjQc+-$2L02J ҠHC{׮Q ahi"RDa4D?c?ZL#qߡZH"`wX:]kwcqr?㖂qYq81VP1ڪvnl2"-VGT Ѕ!HXEvE3p5oa8.0n$-b(f[ Fu;iûB^5ٱԄA|̬iTE'8?$!ߍCQ|3L.t>OӼwWR- 3GᚸApu9F'ɷA _}#j;oםG4^ސp&3utR#gܤٟqc}%]##$"JI^$ hD)(aGahq?UTR!2i"Th44n;3 9e !X;j3-#M/xǩT Mza$aƅ2'd9e(fmjIUMC uaz/ )owo4oz6"-i=,kf4zgu23en3Zֱe|1֟[G[l5݇3K_䝙ۺ?WgZ&ZqI1od[xW%%y%zO[2OLX:7щgc[YT 'HE0yRnFC;O-*K`O[Ш[ŵmGy@z.YVᗒr%)L'7j0儽>|dC?ʬѫ&t/.?9s*vl}2B:3+eF)|^4)gm>d~.&!gZk R^ Nz_|oJLs Fw^+k絵݊mi7;p8 i7xNx΅8wlRQ3Aqv0#ѥ58"n seGv/x;$4[,#!3A0)PU0qUӸXsnV]戍{֗|a<."{`2wڴ;ELA#Yk~b՜=\YnwG2OK+<4ȌwFtl g2ea pwqT`^h@+O$Mf)ofMaoI}3mʏ:vU,(ix+ӽ@%zy5Tⱉ*)4z1ZMyuI4+ x<U=:>aJЍ{ضf Yk!! om6ă/.f 8G3flaV2LUe]g "2Exf\$̝է$" Fd,%L,'*֍9LF -_+ C5SV̚-%Z^)ɳUgٹ,gğ>y*J [~L $~\o~7Y#A˸iYӲ6.R%>Iz" $ٕzɨjmN'( ܰ( ~W@U~ LS nnBv9(0jL"Itp)2ɖ o,A_*Ұ/]|i^:^a\r%h,p)-y`$"la͗8l0kֽ|6qfAK e@l$1̜3:R&|O5tu2gC4f1pd^01Rl6ydLjcWF"w@ۇŎJEFV3;0Sm_x< mK"NgW"2@#tt#5Kvb]}1AF 'HGP Y&w,ЌMش)mD-+h.6^4#m#NaŜiv%n7F6n7?YQP3둰N{HB2g)39;G=Gh6Νݠ-'It2G<3_U=xh M ܘoA _L~Ť~yݵ~e_w^hmEЫ[w$34[mxs?1935K^" ~^ ])p:. z1aܨ LɎ<^3%4xԓ~&HT(mU( Ҳ"oo!_kN-{Bq!&Ќ$P4,*oEszHDF >Èk-"7 ))_ O\J4Y.3' c[u}>5N .5*XY8]\a,wSS^QFK(T,5-;][mv궗$i]('1ʕc,٨`e<҃Y ]~t_-$/LFfHo؄a0.HE% $ƟTs?z闯[ۨ+6E6LFo/}_Csxgf;z62!t{m8}S M]qľAdg3M@o)wJR(91z#N!u_Meٻ|R/'7<+F;j52$KJ9ia֜lkc' ]8sUw6S ӋI\mm"m6&f3oN)]E Lq}wwx_G6|q"Yk?FA  =;$IUE`;Ъ,2AotG2]I!䒪 #h[%"$Hb#DVt-,U͟,<$~(d]v@4\ aIEUs]\To͍^*g?D?÷evuOdh{x=[J~>5}:h-(;t7셻%G4b.gcsB*x4('ˋ9M&Ia8'n8xk̐ԷPGOZ=M *j*h-o1jS'ɳV7\=ݏ½>>$"G#IBB!|SF/Rɟ_ w61̃.`;e'׭jjDaNH@nI6fKgB\o>W÷w{o{^<::ɦ X d CDhL:At;r}P1d$_פ LMq 'eysVkf_r3E0m0!! ˾;|P{5ff`F!FaRaQ"Bߐ5F>rD~EWb=AH=cťP{Tj䭬2v"O?du@}l>"_v(pmޢ{9/'{#! e?8'u2} nFڐ'>[Thn4B0gzsAD}6fk[TY9(h$ek81=ͧy3 ̾nN)3aՋ_ ,ٰ=NLɉL)OfL$Xyd$#r%lӠF*]^ɽzuܛfz33C|M;I~D9n?Q ߎ{:;ߞ玮b aa(ֳ>}1ǮW\{6=d_Ws;CĜI$ ܒH&񃲨hpʹm۳v\+wY㓬p#IFlD;:VIwrH Uփ1)ǖfVߚ#aJ)2*ƐYK/z}%fvnl 0V]uX;^]l|/#i 1>Nrn>ږ;coݻ~""887mu=VY '&Nnl/G_Iv|e)SL4r!gq;|z0R.w{2~&$ `rl NO~ɴlkgD z9m?n=/{g8լIlUy]^7}eRw|!MY"dŴqsǣƪ'z$XݙY S4 &I#9Wn3;3z o{k]hۉN^tRJ00I4' ~UFi$2Pcߊ2~gSE]u]f])3Ip5*{j&0c?~Wl"muw;z@-~7}u8N>3ƪXo^ʸoϻ]+־ ˁM+]׌6_u;BW2XbMә\gOoߝNd VW^|dwVr)0[xk 1S*`t͇n^*ڡ.MIw˖I{}̬xzpJA!k{?\MGbC1f 2,h6 nk5ؐ eV eq"վpF'e6SSM|>Ӡ;z_i{ǜb xIퟄ7MK\=k 1[G tbcK}wuv}zM[+l6a TWTtyeK33+^vڭԁѭt;O ٱ ÛWC 31W$uoVZ՘,Ȱfmiه=Ugcg^;9b[I$rFj6B $C3򵷼;g.aZ%E¿~~aDrs[ 32N֭kZs\=asxnxǗ vk<^*w{\)GCc]v33=*=X*xsW\cѧ)z4RkSOӸjt5JwYұ˷p@(F3u-*E7?Μvæ"fC0qXENhnF4(n3V+(oxqYq͙w&oZnjZ!``Є`(!'Ěf"b'Gya2^Lr[( *fmaT\aeoA/ũq{g!Tz (0cc Eԩ wDƛ׎cs*ɑVz~ξww}AW h"(:!A!~z 5bMMKkGd+U3.KkH&IOUo5Xx0Rq7bQnI.K@:G2$i#-_9F >}(-*W\lICMT|1iֻmJ@Gc=]xET!u&u|^ꃖFxBKE;nj4rt030dDDDC).HW`おYOCR,=*xwFY`qd*bYm;Y{L!%y/'H.A}3Ka]_ZWk6z |Sv~` T\I(;((3FL-%hI?}($%,QY,'W`VKjfUkTb12 7yw;sG;2#uRHm*ga8z4ևKD_Bc nC,Kds3ȝkc #hJG;h'"*yHE H  "гsRp9$$B;8uO8;_!=_C=ĩٜ;0EHC?'ty—]У̡jGR*x%tH<&x_zBȏ@S>m*'H+WDGxb=H޷XU]I&BN>j|n'k=bdstz C?~`l8^տϱJJr4l</cFIx=TГZhS -CGh9AKZB6|A("8% zNG|κYT,Kt},>>k T@X㽘lTT󺱱$-~$Eja'N6M .R̡_.o<^l\LتwwIIyc5hcZ0I3%t$@LAN;<*+]zDHCHӴ{q WT+yzd'&H'%%%䥤Y,JԖK%nUJޤblO7x4E;I Pci?9* ̉uMY~X+SiUEDV4%|1'xAF 6_b+,؅lW0< ).@ La Y|#_}}zf% `w!j& iQ΀}iؗѩ1Tn$]0}uvI-پ+vȟ"?$)0jIZ¹,HH_۪:Ų[z%s4Ru.T P4U5T`8B3[HDx3ՕxhD)@$^MEg ["qгwC#qO>#-"oY*g?#GY'I@i;mB)܏0YM`áɿLMLW믒!)>S[.aim* f0'm_RZ>=euAwN֊"XV,/{Ɋ/cϗp#IȥD#"Pq!m𼿵4jt;-ꫠt†[HARr&t0dZۻg,0''g$9¥ggQCʎ7($vCj Q <Z2&t# ա003Ew 4֪N;,vpz:s6U)J#4̥&6c{x~) 3230J@:xNJ[kܰ4#63 FBXxyzyl[iXHzHdzr[jS F_%0|DdfR7nKCد]S9H7rbG9%t# Tu`'q)plp:JrffR"&!%RV9FpHgp܏b$It lr8,wǕB:R`ȂWJ8Q;GGF$#6odOT|\q@Q~&Rb`[1%\ATZV«" ڋL38Y_ݙT241UNz6tg?U<33333 ̚LXz}l>_|]LX`k b7|$H@ Ȁk=&x -0W9/{b,'P{6XٙnЙG} 9@'sߗC>h{ނ5Lʥ]+w~nxMM;l*ҌB#e z[gq,Wb6Sc c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c ]ml$XHfW1>SI툑= ®,R EIJO 4211ɗ;ň}qN>x>5Ǜf5\.2UYfUfeUKʿQ@8ޞSH8tl TÀ؇*q!I!U ې6i@"P#H&4 & `H&O[/A*6]h0C u l+JHakNKVa,VQ6X+ssb^۾+qvXwc.KfHX˂kƳSZlkCSNP탽+gc?%$ B+ ?6ȱ b"RS? 2BWA-br{Up|l)$/PC?(8;=> HS@wl9JfeT!۱!ĒF%7sNSH2^@& .;w?6UFNc4\gVHW-+XM30lזp038n' ;QACdED/}O}*IlMʎdCK$IM:yvQ.c |L;BWjewIs!hkϢHU )D?߬C1 1e;/@H@#^ϥ6X0(|K'$F>!|qߴU"JI09vrRyah ^r6 #@Jg}q (cp^@_w(z=Z$UGɗ=n$8=fz}9Χs+'oci1,b%:y3;_/;1'q=I9[$Dq *%wKӓ*D8T#i#}GGdz9BbBȝ Ou=#`06!d щ&]|h,0 0ʉ(!)TTp$K@ @=ZC&0xXdTp*&Ao(~o/u4BrjI03 .kuxUV"|d4ÆtECp C_{Dq%1=:l|oX{y (rdGh*Y$#{&H;6F,JHtY"LղH磗SngQl$9#w,er9/sʊT76}Kki$67$#l%$?MWGDDׂ:=֎\$A L$`UYil@0twph]`QB* T(&!@УΩ}+Uu>\t19F_}_SXa)= c$M1#om|!rOxB"FNɵHe;y)D&*:D|ertvw ¬0< ċKb4 y "ogxU(gdu=ˋ쉬QG96|?NS[t3jZaq 1<^HCSݞ%TE\@:0mC}kZװgaU5h >f [v3|.ޮD499$y"qcuYޒ z_HxH'8>>2z9$)iXijd0(A̤ǒOg.%W}GR"==ԔMIЫON/W82O ʊff>8ԘVHŕhfb )=;ؒ@xQT`ǧG>`9ABvUqFu@$_zW :4`*xA߾# ^;>6 )qH$jOdYf mQbZX>{r6[vTqsqcRUDRF0ac1blWl%AG EKH%%ā~,p󃆀L0dB$&G/hZTL ~SR Q-0 ! Wl=RO8yaZ4)e?OH0NsQbqָ;Y(܍[ݜ4N#gq ͥnJ gn&!hF| DTn)BS`G]C'y 5tYjC*#BNω(;G\@o*|*i$XOR U~A0(T$Vh@/Xr \C$<7o݃xjI{ZIaS)C Rͼo *Fʖ3a,_stF:'D%"9G[j_sDEA.^m^{"uVbHXQ3{`{5(7h4?#rL ]r$D<9cLdp>В$@2ʇC=ESR4_Cٴ)Y5g&?"|#̒~S^-~zkU~>x}EtO8d84P,}u;*!%u(L*jmKQmRVjM"!)C!Xziws0Q=_>T<ފ IV%KlRaT2adJKi,2Ki4w%dH"XJMIC$MRl&ܗH9]ıۤNQтrd TCwE1!cКCF 8Gk8$ZQӉ99C@SC?ÝvfCs%!Hf‹ F 'ĐX=*ؗ p00i .KV2*~z2F%mdr VJlO\ݢa $B4YǶZ<vaUC">BTb͞]330H@4v}M9{mǝK0!^аr˹U!DMc iϟ83etqҒ8e}N]y9[ur\W+J%pr88:fqˉ73.E8c-bii%i&bYħdaN#MuARH)2'?s E9V&_Ty4AזW ib;Zcp2@Zd==HEߨb[xn4>4ԞH=r5CȐ'ТJ..>N$,rDPdK-[i$m<HMcާC=7Bp"~EU= P"ҕև#*v2ԒdEIBEJFBT^*~ۼ={CQง?'K$3I!$;$"y}Y6 Rk%<+9}kǖ5'2tDh=9;ʍD=r

rKLR)#cvIC?ICALy> 瘚V)H>wf$Nq;K,W"pv0`#ߚ7'8&@< &:84jS$A=Z@q76$ho&aE$ eJ X|#RpT8BQaB# ;w$I$$ZͅĄ``I$δfl6xovQ@SGWaSΘTEЩܱY0⚖X(F"uF[^FXHmL4 ApK}'*_aXv`}'9E?) !C1hBFF43$cDEE x@Y#5DV 2U+찀802aHJr[ J&l;91Gf61ݍVX)60pgǩ6{%ݜ(`G=0`s9ds>U}gSz3*Ŏ p/o!i"$`1-ϞU۬RRdq ҎF$wh,Yb!Fsѿ$d0sBMAr?P><}O/;w2ER(Q*-p+cEU,ǪL$̫]T ق 4elKIV}o{_a!(_?n2+VJ5_ JW'ȨI',#*{+pכ Sff(x$ByAछ!|M|`O=IfA–2`P9? uG,څ;O.p=qk]j]ɅM8CU8q#1}~ Ekkw=He5,Ώ%7 HDF 4A 0_3{(!y \!CT0O?Ϧyb͗Dp4:j-]+p!"9O>Dv;hGͼ9Uԓ {Xo~aG#DH%N';׼rf Iۻ$E'aІ_e9av_+yme kUf|Drna;?;r+:R{t"'ԒD !:[JD"ȕ%hb!V(7!JE({4"Oim<^༩GcaMw4vy : `o@B, $Pl4YצSi+RW&pydFb1lD}'= Q0{%d$AaA ?@y}xIvx8K-I#WAf$,EBF8l.8KK߳PI% ']8$P}Yg}A "T$(!YcևMpJz#b?8I;|~hԈ|I ,2QHIHlЄВ:QtBH'r5;GBhF~'G= 94k9$ DHiF}ƏSr!;t'$r΃%ȤuXX'{rq!GLNP"*t>gOf܇[4[|E #V|8x')y7|Nj:#u7దw)CbZ4uv p FOi<|{mvS,|+D~3v| Za22O4V)̷y 39:5Sɀ*jhg+b)ߔL#Ɍ8a1LN: d{>uVr`%VIe|gL|}~6,Al53hzRҒ=|zCz v6y0O,Wa2 s!xT>"$H!9G=%m!WX<F :~tIe"F#|3[qŽ4Zě`onʼى9. |BszH-3BCKGY!D%<P ?ڗ}nэ>: w&t?=>МU=kvfYdƳ 7Rĺ] bhkbcKW&Q$D-龞o8\zy;uOHr"*jA|wY9EX4oLD~Ιt=CaՑ`>nnnvq_͡p0V}<0ahyH;"?8Dy>wi Άv@de Ɏ?_Sd gR^(z!/Af->vffhi[M"(O]H$ w&L36p%IjE]Zj+Vr!9,kP$x{V)!d=G^]t!= Gu<|!eI2*Y Ax;pjJI~HGv횲/` EJ䕓q;*7hK#=AoQzHІIEf!ȑ01'#G#|&L,X QW?\z}A>p>rLrRC ct1>WURtz2ۻm$BĴ2srOʬ/1L+stUTޱBNgK^O^x'aQ !B @_ZK}Uv%70r$n޻̼KQTTTTTTTTV%'ݥdW\>_n>U,@@_ ?/4}N/Lfe<*"G 4"ǔ@}fh)Zf ih۠$QBTIo9\">F#f̅`m)nRrߦbèn7$F$0BڱFl Ყ؃ņF^>wpOi'02ӣ{ݠJ'" yS@JR ԙoտ[헯lƎFrK2faQSQSQtz1H'xgڿ2*%YQEFI:Z+$Eag4z[&'I;"<ԥG1Cm+yw4xo=`c%)Jj\|^#KWN\:~EcRQXNÓ$\?0_ vm{!x_ːA }`G&B cg00 ȴWD11500ppZڪ)iG*1~E2R{!9H}~񐚘,yeֆJ"fBhh)!Q2N0|pRo5!s%Bi*@4z%y1UxH|g5s{XО!=7~`,srOW6'S+cwFf·sO nTq|f/#0q% s"tXQ9TyHQ}%R'*dш8{ͥ$t?Y #^6|G,&1>hP=곂ւÖU埃n{aQbbD ?3zI?!tcTO-Ǭ¼S h6MGI机׉z$w4F>c~̉ ?:$L_C}YnݧsԴyBl`}ah~4䣹`31r 85QJcw0m,3 \s0 P[ě1yqˤ b8H(o-=>9#p$k/#Ƴ3f889I\̗ʤȰ*s2\rn 7D*{S``^2 e+l<%;keT؂,r /ܙzû8agk u_Y%YU|k1Wk!>za:T[~o_R1~;ṙqJ?#nN~gXZܟmFFD6s oQ49R)JRqc5yWkoO ww|91ꪪR'VzB뙮S_}a4e˗jX1^{uxn~7owwwxֵk9 <<]Zֵ㮻v9 ۷nݻv9o4ݹ%fb#N:t_R8㘖l arUN}I#=[zGBO}T~{lpU0Fe[<(ԇ ߻w`G?2'6ka-6N1e O;)p­KQ4"86+nLjl?ГE0&9j0fϭj*YIftjRHAgtjOo -NgB:XC@IB |@OJҧTj}*+Xcz'(UKDI9~,>%HUMOhw%?ams -4 '51U'y~H}0۝k:9ĎG}>&=o-3Ynb7W`F`&՛78E wCkFC'BrCֵz֝,$ RI[ p$C,3qv61ǜ!TOB:QУJ6Sˠ>7ىH}Ļ'=u6|oqsEojFN IȖ1dH`pC#[b#W0 G꣧wNx޴_j~!ѳ3 bߩ+Ta8g%XĭhkCUtl10=\aϖUu$V1}*0օ 62 +ڮA%%+""xz Zy,"uWJ'^I,͊ty.P2&ZETVYǟΞgdr9'ki A&S@[QGG?G&Η|Ib D`G8r{CI%ą"!iX͑=^I~xoD#3 _Oe$+tNH)PNrL)e2o!sUhVbL [1sd66x{z=G UwwvI糮AҏU&1h}Uoӡ,~1~w+YcN)rHKF=,tBr']r?cPfTAxuYtu53CH yCJcX# 51 ĕp  UD}GI{5B?>UꐋBcy3is 100;0pH_xga!!HdJ?ΫhHi~.ps| Ue<%8vH?!vFP<J )&(\oubevGy1'(DNxI"ej/đ4}J=ig cHV2 cJkۿյ^|GFBPABZrt$r\Z-~~V&C$$2U_ He1S,Ux=c%^z LNJv0VdÛuA1=j &b;MoXL,~ UD+wf>5@{ţ-&^D&׻YpݰnVoXZ`K;#Nf!+3_IBH|Rظ,9d 3T9d卵I.?_^nK^RM1MuQ"=븦5f aؽbP5rc! 8CH~5bq[>>1inl}IyqWnۃBBj+bv+(G"pGi&Gz X)%r1].?Ir۾|lzyjU  FPը ' (m.ӝqó1NTkpEHȜ(QA4r%(tm |O{׻3KG5i+e3,3!X%-L05[f5Oi A h|T|=vG84%X#A5%D$d10D2! ۸hDpؑ>\)cG48P~klNM|WD;ߵ)OBi$&"oMxORiѻnW"=ul=ilXh!ǒ>& zj( ne$q(-34 g7.F1ci5;{BHI%4 c)"\H݈A^u=dU#,XR_(T;zdɢ)H ʈI8lTFjKp6yȘ4G{h"2V7.=N6'Dsm),+ J  OXF%]m1ZuQF;a HCGϲ.ZhcNNYW\hdntk1_TG 9Y4y%gvbٛ_A=?>ry;Z!niDk?M4>^6hf?sR}t<w͙,kCro3H&h1gQ֯pU%}\i8I|E-ԵHhúN6x<'q_hmq]Jz=X-s_N>(ѳBJ%|`c!_\voC,4 nH&A  a%lg cuv0%dhwD6Bhr|,g,2 ̞Q}8pȕ `h0d(TTi. FeR-6ed}۪SyJ4ДiVJw$=/D9d$:x$SGʎCщ+f ĮJ7$ *%-\Fp2nrܑ4'>Ҋ4~RG1FכvҪ8=JH{lzkG~AyḦ́4z1.`˿(!u#tp ~Ht|gqtb"ȡ; ߃̨zli%b1bS'1림K-FPr|veۜ]H^ G$Ae1bKG,LH0Q ȇz?60M! .q?h5T3I/%OTy<'eCs]DkYCe@C0AXWQ2Q­PBB1A2XE1$aT!y^)ׇԼxH44̓94ڄjAO$G]KF4 iGHcCeBZR 2]݊`500Q5ttL ֠% !iT[[Z2<pa $c2Z 2&Cpk@AN&GPFbz$b|UhSh x6ġ72D!Tċ"U$ *Ry!s!""~tCRO7l1pR,0V*3 0IhQ+%,ܭymG9_mzw ,\$ʩI JS}j㔲/1KBrtt~>0w螡=C%z.Qoɭo&eX@bf* 5uǴ;?Aσ{㟗@cu Gڅ|v:2eu$4t>:~ةBUQ#ܑ%b5i+a4A2.sr5c@!'"f o& Wƣ92"&ltrQDYΞ^W/]hR Pϡ-QNQZqYD֞EՋt*$ɧ$ZA:u9֔3|\Y2`1Cr t N :2pI 9*:nu&TSlXלԎCkt(0 JgTzOM w.+uq XGD_3"zaU> Ȼ""_HaRyL]C] Ij&HL!*m=1F_1*=(޶yOQlѷX"f5V4F.谆E cBf0i.nD(lcý2>r2fJݝZQ4nJ%% tF"Jђ;F̭TY`0 $ οb#Rw?V.ߪ_Ki (S Dz u&ňYe?,/7 5mښBoKj>yXS0 $ACH\?{OS$yyTrV? ~ަzdwƚޙ~liT(U T$R K kK4X}.V9E4$ }h*9X4{s]^MwrS, 吴`;ǐU wGAʐYct8tKA4w1hNǑ_oh~kj#$=h&^~8L}.yףapBU|j1EgD- UJ۔th 8:u:eOт&U dZ"$?g0RT@:˝7HQ$88.& Pu$qN$!.r,Pehh5MVkd.$μ w.RhOxb,ȰJ|#3W?H&HD*z9uj̞~0`'Gڜ?"j*E܈fqERAC)i +y|U,O)'BHAaS Q{ޫJzfhEXcklɒFJ70+7LAKR~ BWAdd8e&ԂpI4Nd90zXGi""&BXI9 htJ%&F׷O'FNPa`ac$ʿ`U\$a5 bD&&3+4TL $V_$BafG7~vdvL״u3y$i)2}[r͘cDE_ؚLޕdSG:c c -ǂCOȏ. $!QliѤ,:?^Q-PsA6Nd8thx`k@eJв$ږU%Zd!0̷odLl--J !mz}dBA8#* *BȦdO0M+ $$=^\}"Ns~*IޮGAQQpTt\ݞO2 !:(dq%ߗvH PJ`e9ĔjP5CXRʰ# '=Z/3?nbIJ0R ي Aw JI**6-[@)"RQ8WH'z!|K>tǧBBʎclqTӟW6QKzʥOgV6JR?gx=a&f*0pn|x|'={ub}AEadd1xp4_ԘEjK.!~%m">b)1( j1&ڐ`|*?+939nwK&Li)D1E!p8 {'zq^qI" ^aBCn^vS?gl|ãZՋAS |}^FȼʿŘ2ğ6bHy1V=C `P7k5j@CV *pihȦ͛=-3 ?uCxc&a1(HGҽxp܁`"){ /XY"Y#e?`_`lNpүU=?6 ,+0H\+hm{Y!,(?d{$w[ Ld$ }0>z8(Em[IR6!HcH"d$H=m M[YmċV_qHqܑ"yjcEz)'""+IޒM*!,_/Veyd?&HOa흀V4w׊l0y1J@% N*`D*(1*j"ˆ5Mu ʊ:+XXC:@ʓciH*y٣%12SIFp3 u_|Ht(94uGuFPc ̳tF)GTU**Z,d J"~OLdb ddCVQ1ɂnS$"Ɍ[0ؒ ui *cD$dqR&ahT)7KFb}XJw,OۊTpu;ai$V(xI2kY0RK4;Agi:`FWBKˇ<pG@0fG9'$bL֙3LS-0Wk]-GQSD#A:3IQh,#L FRԌIXQ:L"@J00Ui HH[RiP -)Kr]]6]m`H:DoV}?/48lNB9LYriEb8+p9 lUJնPfO HOzj  +oL}t?-l_J00E(36RZ-4*~4ʰ?GIDR~1?w؈ aP?b2$D#'TADѕ[츝'ҀGpBXHfiF{de3#ˤy1O_êmI!ʝl*V%DM{h}{ƕӥbtA>IQEzNy͍ fjk84@3C7vb@߃33`rU&2B|1G_礑~O_}ǩ|g;?w59,iٱWF I "T8qh d̐!m8:KEAuQI"l~T0%i@!_C !gU9 lq't93uһ AT!HO>T7$ $@j_VLp}삯'h\!}hXs}Dr , fp u zYk$K\z.WzT*-PC&̘d drp`nsfƐ$FېnR@v4= MG`8ÍBh4 hJ̋zfRUU2^v橩Xk5Ro(,sC2P:ZO5{F$ Jط]xY[<ֲݚhAC#\0QB寃:*a'M)$43nL2tk-j.d5fVC&e4Mi)<ɴ';&G$ L ZHjĘ7l3 <&H&6-H`h+`bf"ui :+ V+NeltjDheIEMTD1*5H0D[h[9Q,&NAT (t#*.v&BmD8dSbH T6fу $>S%e0QiDc J -ɭ,L#M)0QHr1٣ 4m\%BTʐ4fPtNai.b4` 9l[Y4LL{R!QUaDEJRɟnjʊFf&CC24c$Q T)޷a Q\JYi%cŮMVyu1"yh!3I Kd0&XʯHŐ=`t]*d6) "bI0D(Nl9}\wڞF*qi)64^ҹh9 HMPf͛fMFE@F12; z)%&j+5}ԁV술9. рE(A,]/'Eƿ% 3`y 0mv\ L*P;6Ϣ"ÅZ>BB2%`w섮RwXrB>L]kʀC l ZpY$Y݌QcLX%`ZT$~)0PbC 3SEEXF`4I:,m&* dBǦZ1&#~'ǬBňej]*q@d4ꃊJK-*[#SfͬS7յZ[w?Wn#2AJ@!IBt$~E@*)ԕ䋀$|= {"Q"wC3LY$@/Hᢃ #1 D/A;Hq&O[#m"joYg?.V?4$ ?"(|!i-'$y`lM'8oң,:6;O7PZ>r WM<\h.b" B}?-&i H%"Sub{x˄:I[oHiB\UO^hetBXT󠄝H>qLW[>A/O>$&/dUH?LeKq|x}Z[->,o |ZC3СK-`@*J}9K#˥vwUX*_ay KN1}R hl%Im$̥ԓIRw?6RY=HSJVy4~{kr+?HRS fNa񇯚C1\{`2Ǵ 2XoY=l j:c; b)Q?>6/<ؼ-؇@ǁ< AQVx<7@ `s 0 1 rJf1UUݷi:uƝopCj* 9ŭ ģ*(wC"bHBѣFљ!8IHLHr]K>ģoD1i`"C3 wPe;vy gKC,q0ݻ3 .t:g Ul4l]dahX0$!>B is9C$%'# z 7#o({ÖdC08pu_7QXǭ pF.攧 q2Ã$x:y⣾}煂$=J[ىk̅␾>qXSy4u0P0C$&W$9nGMjJĒb93;+!}I1dQ}:+#r)˗&"Cv t< iq 0F}זg.a0wo, 'Fg.4SՖJ~|ؖDny P&$SMO" 0ofa@ALa3YV #Rd;v6r&$6,%J@I n+AT &6ƭ32֟ l+*%#;ppZi/#HvH$[z ۡs:$0a$ CQ DT;9)EӐKX[36ZaSC-8QNנE]lRC Vc*ێ,7_m-;;ӉX\ WP a*I&ix/eWb0q:=0.  pJΪ4q43)ⷩ{8t5ϑ#rNGuC*[!&\ -ښHJ:9 dNr,)Ag:z7%D1_9d9㤁C &l$:rVt|$@x1X\.b/pDvQEʀ\ '4ӛB1:.#HT4'G8HvDj 98pe!pYCBkp'}=5#[ Q:˜` ܞ0;q(u/ ۢ6ѝGC:dRL-.Rpd٠`k[$vd44#Q$#:PZpdKI@DM@8U%Xd>HtYK7Z:\'-hH*0 xN V;3 :u& sy0I39X0wع z*cA &u_VhKk ^{_KVFF<z&A[!+Q4O9JH .&&d ^Z Oc7(~~Ls#ɔ;2`8 x:XcDܧG&NIngƐ)Gm9:Rɥ-b:ؕlhƗA64g"Q\.Y|2zx 5܅loo`f;-s>rZnxf'[29^^X <`P ɀ U*JQT*(UIC8!a4"]!H6LD%& KWX7!ƒz/F+O !t: 4G|I@qi1 v`) aq  x.)%ţu9rT %JYI$$aX7zi]yHX.] N03 dw*ay(Ʉpܥ@n^2jdvF3+#u&p FC,j;Tg*|:k[>jdgdm #4g8,mD]u9[I1f4(ȡ9+db@Id8 ?rFPa7c`L: *rұC7`dSFRuvi Ua;H:QΉ cFzADX5 ͣCruRx2lJ9$^?pu;L%HbڒM%c Иx lP"Lbi;Id9# 1?q֕bHv/C'%1ZG 2B=HG @4|_JNa&LRB>~~UiUÈ>tUؖ,y}0T_G̉(%:$1:Sĸs }1`F4BQ Ē2cf^2M&-&Å(SR * iRd42&or 2\9Bu[2!xan$HHߗ擬W6}#daXK+NO%?) 2HĠTyPWcFy %T=ClMMAVP$+$*Q$!ø=d&Qf3Vh֕RGRxiWr.R&oJ0Hy>O44QkCO"as u蛉Щ(2NHN35pf( TԸH0A%Iו MTg*e"[%{VSl0ʞNh`IZz wOx$=꾾HتFlL!9<"F7˜QVaVZ4K1Q&;*OsPQr_:,59 ibdʼMKU[awA,U&M)uZbhLE%4I@d0Xh%|ug*>z)ɋʎPyYUdYMY SӸߋ}ھ&wyJ2$2LCo'@$$$z[Ϯ,'M ~MEHIISUw,:I9摖dyll ab'Ce&rہN drGEWyshn%dZK$㈠ɲ">F!r(b@_VTcg!u#>U)YTn:n7ьN\d.\U`fUr"K#a졒).lܬw[FL.HJP1Xk4`-ch3"Xr>dc2\&:k u&[NwIj A2aaZV*L=ᒉaָ |aDYShv0tb:Ea Ȫhb^v™RYVXscA(N*E#$\ :0SI6ePQ3^ Ί R/9y ,`keqV_j0f t.$(]ȏbI k?Yv6IQl&7I'aeγ 'DO;U8 I2Pv$gp_8MN8'Z8Za4ڌZ+ F%3&B 5l. @gatBa;Eﶍ*v ?+lvB9ߍsNRč*lAyBbЁmbyA)f(rʧp^W9m^#0戩" WGب[rA0#paK4d m|`ul*͸2@4֠>5@a 1;qZK vt,Uj 9 e€ÜN#+ΎF 832ČxA6϶9kOA]Od7?kaHiBGIcUїtvZT驊"{a0kc^$(gLnW(v2h| iã[/!'[.MQM] ơrvɘf`#n!"u׮wy;s߬.DF\^bl.!2"R2YС *DADvGեӱ؛O"bm a@z:2jV% "iP $2]w_a30Wn#8 P jAj(2D9$B%+26>ԁRJ" yQ;G#zQ_34)X>9$ |e()Lp"1,FFtcq!a$#.`+d  yȢaWUwesEÎs(? P̀ `;#E5p7`;- VqC  d`D@@>ca&PG@E~%s ESI`Ows}riO^HƾH"}1<]nO bX%HB2.j&_oFï,= }T*BBSb"P}<# TpY7x3&Cދn $lw- DIdB;$-sExB!@K jab"I lI~zSj~&#p\s% ~2}uLJ/QGT=_FXJFE=p}NB[:%(jdɺ'EWL"mT%#kAVE)JR}7 ԟygHpAlfa:҈("""ujeɍaunMf>nY~AS_7J$ <@| KG >v*ÈЅ>!1k1HQWIC,&mAc%[dsJUtNIA@F ̣j9ԦH:% J#TTlPMx݈9Ӯ[ _Ջ:o|oԣ Y/MN8Vz@߸-͝jlƏ7: uIa1hZ쎣''{SrasCY\ƙ!,ӆVFq( /wHaN'㊮Bap6t^_qNތN,r\1=nH'H>$u_GpMMZvjz~z:%ciș*1٭i gspIud3RB+}> EH|e @D9Q5wy)cQ@|`[i R"YzM2yT!:aXRB6` 8b B h =fi8A{Dj6dR3*(̄%(!m)E,B`fILSBɪah-5%6ͥHfIlQlc*-ؕIY6̦PJZRf4)Fj-R>*0LtrWdveHlY=A\)o7JJeV\PsG>w>l]3}d Kh%[ |QCnc`Oy"bע;dgo]qN< +-_Bg?RFr޻Khf*~N ښ z,RA>:?aC7mg'% y$i|cM'}amWrsPvN:\,w})G 'z2v\.S^S=T`%a }<f\b\@0q3$:1$6FI&v\ n0ߏt׫PBDwWމ 2& %( .B)s"dȩd ;D e` PW,dҼ&.$5a0D쇉#/7ҕlQ(X*!D!*J>#*v @v'ux?ώ}UՃpđbb9)HT)"Cՠ%:%MZn[/έ{BzHyۉ(43#H-JGq&AsN5'~̠NhR-/?(?o=-ҝB(bXʇJ|]>~jjaysAd\kZ{t~I~")I>} P_AFE]3#Qcjo]p#WX*Y2T #"҆`2, Y:e*j`Xej[i% بdҦ8iD;x24%-M2rÑQO0GZ 57dCC\?W|#,/!DiEQMa]L/& =9cHWT]>Gb@$,7"W3 1(F00C$da;ѶJ.K cLNum3٤/wZJP rfj4а%)J .Ys2p]ݯͷ%J6w@?%vPkd96jL}jj4v BO KkR l(`( .ױ. u Cp1"$h6!<,> }t;S %ʼN#&DXX%r1FB"$~'q|>U=}RNQ(8݄|ň8⨩:vt APP*/ˉh:Pm$&`|LTgXXG0!ߤ3K,sTK=s*ME&~iZ 1X3m_d)K%FǻW6kş5D7S 1V(T? }(fC,1 oKDLpQ(܄"@!w> rCH%"e5)$R͔ڭt]-W9m*ڻBP2N2HҲ$faV1ԗkA"aa4fwNqvJ;vM! f&BW3 3%0)D\!mIZA0YI'BȘYұF*Y$3)V\J)uܮ5)! 6ɶ*bv,m]ūLjYu$ )$D! DAD+cX1121d21c1e@$)0`vwW]]6IntJkmbJJլYS uֶcjYlZ[1fc %$)XEAh)bY<$_\<^'ֈ| 8l>130K">; v=4?>&Fդe*ZJi4bC{v[ 4~8s1$o lH}QpYY h8(/J 7#*Q#4#Z0kvU0=uW jLCeYjm>xaAba1C #tAd ƒ4p s\ r*Pm1K N G'܍ ʦO1km4QG&qGvD: V۱?s7ݓBKcѰ&1yG{bD b ͘ ۜm0 dC#9ހ;R~yDiK樊%b_8$( 2p P:?3%g`A1;psaϗY)036㱞ş&Ŵ|xo@,ntnGHt!DLXtNss"q'DO\@5DrՏ_-2CIaOqqo``r_o9G:yв@UB@ V&}YN‘ɶ+&rRdQqPMlK`2p!W 6ɨbgbpJI( A< I$ʓ9)eVYdWdC D+)eL?bƈ7S"?b d*ĴZ{퐩l"P)O z(HHanG#o{?DaD$ΧNM_7 ~2ȣ9ѥ]Aצ(:}˵%k>N *"|U1eJfH HmGMyE3U; `YMX qciH*,K=M=}몄9ڲYZ~\&'SHt %cgp() (E^:>*i:x+:!}$tJن8ifxT8D$9D1Hdae 4HE#Y9 ié J4d1Q$Iek S Ěbc{(c`m@ QX&7UCtG1Q1RVwL=SS% z9ط8!qmD4mi1,11=33C(Ƨ0, Y f5c[Z(`%M4] :c5k%%x0'llĺKQ 1B@G >ˠ3u\w]Iq2@ת} a#rI)mxdLb_y7=bש=cǹڼz*t|`')4p8l_U~ǜ«Q%|.>@e?}"}BP"LX8Dɷ>Rh0Fd[bS:1NnN,xC̡Н@ ʏ1l'Kݱ..uݎ]N0kSh1EOΫ 8UfmFea'JZ}ݷ:tʈwV*PMTڈeaZ`ՊB)$a 2u#m]MJ-JRQ&"L:{$<8px>d]y_^N~=Nhmd5$ѧX a%*4.hV%ֵߙ{Fd230cC 4E +*RRN0' .2!cy΄G2'S 0|?Z \q# C2G>vIJ {NkKtZ pqG'CS &'  wêl,K%UfqSO{dCy">G<̍3JH{Hn>v%e_(?' RO$Oi]~l{ T%DĞL&}L'2~-=~WQc``S de&5S\o:]]̖88r!Ad2Dw.Q5efHaiXJIʜp ytT@DLq f!I%pQȘO2:u[74weo[:'a@?!`Ex$ZD)X>Gi22 1Y$COy$ެJ'd:w-wj7abJIl3yr9q+ 'Z"4q FecQhlk~JF7\-PV)A ۶0Ӫ ʚPj3Aet|CCL1LIS4KA65™ tՙՐ3Mj SIK(0@h|SBp(#dWDSۉEMsgi\ 12:yl\3xF2hGU9cKr@ʝB"Gpb`4L$QCR< i sh &, q!" ĉQF0`3U c#%Ij%CkJZE9:rH[L5ZS%&JbeȍddBELK%bB{h eN>Hh$S)@ъ% (B0NhYԢYqIV!r#,".)6!vL˛&4&M  aZUt0r6d^# [Ucec (ƚ b€g#jAؚEǙ0X(24Bq( U1уmf4L9m &XKK5c L貤•l|7ddt*dq\/HVh谢B)Sld8`eʤtdAى33,2Ah2W6*[(<ͫɤ"jWI\YNU=&w$%Y[9RMDplRlfD@i`"EJ2-fDFONUnY"؋5ZkK W긓[f2"I*@:2H߹LTr`F8X@΁II 0s=Hz/(="D^d&ŠB`rP!=IRH9qOdmH%9HE Z8DUW{QkjZCzBђ9jBf7+\0%D QTiPȉrM #](Kd}6AE]Aщe#p+:T;Ca q ~U1?c*1*REHĂD~?!jUiEKm&VũRML `#$9"idC \D!& Y21Uq<-tK,0ִ" ht=NT+Er6P ./H[ / _x(#Er .Β%̜Q;8L"`_l /:x/ѿݟ[E呖e'e0ݽqIP=“JħuF$R!(DiT!`Qa ie!)@_Ș !G"iNG?tWi:9,i5ȓ ޝ6 mVZ*SRIEE3JJQPR)AAJ7U86B# ȁ9p-I(b_Z광'p ̑$ɋkdu脚pQAS\#ms6ٙ^a~45!FsRn͛%##Hquu|\ycfv! B(*x:~l3Yu0JoAQh"cюN31rCJN`A`b "`g͘TؓD :IJDn$ځLMHLmEUqT٫H}IΣ6)ڜI2Z))dLUe &!$lr0uf%%VZ3Ne207R=N5Y*KWM j,LXT02 3"@A%lwuzwQQ55c8f83 RsITX֔,n٫j4۝*l2+bM+dq1fPxtp8i8!I*jCcbݮ*%C,\\ dG]h8!6Q(RTeiTAd% %!hJ R!MDɼQɑX- `r f'k W@B3_!Z1bGoO3'I*+&U\ >ߣа”Pg>O)Jc; G]Bw>6-9_6FU Q)р&:D< xH& a{sBh{0sx&;JX{q yG%hBHd2`郘qMBcw ̧02fO94ѧ \ܷ!DsY S("YzN,U@P-. Q?H3i.AH8BC u\+ 9N|:~:CD}޼өiUeyM/D9%(1TNR,QHC=)'rC`p c¿X@U }R (ʖc ~ $ΐ6 .#DQPkvD; H"sW-kRN!!. *) r3aW3Zq&R pA,&c)񌊤 Ac}LJ|%?O{S>q Y"Ə)|6R;ޙ5]xӃ<Q | C}X:xC!_H_X>$$wo9O~ti6`6djݴT^NGV3fɶM`a88`C1p-b=)meigf1S2# :VB+Q?t!cMG ΦŌwJtM#[4 ʲk'2mvs6[BC>Lz\Qa E9@߆nL!VIČ3Țds#D D~PzXFsAČ@>j'>1GBo]&N}>mIal #vaSFϟgp ug|!bB ~i,vdx(@Gi-BJ@AkJV9;AsrAè [TEcW$&g=xLfӜj IIV OJy LPI!M9DpKHq0ś$USۣ_G]i4,rɈR?/#s":*KG9II|{z@OSӃ*fw9.F}H>)$'QرZzmCzmRP $ד&qb9RI0,G `NPH1 q2(P4Fq/9wLS$jOhRxJ:eqm?H!kY5QOڮɉR$HbD-bj7n҇sbd#MVaB5!Rl'r$wK>Sg[F"NmDN8'_33Z4GRLM{wr\ȪefU2ih5C1b z7T2;$ʉm wi;wm׋]I/S8B $dH&mLG/E~Qnq:8 *XU%lr-`)DLYT׌Y"i2qб}SE &c98-}v-y,a-&4`]wW"GS L*By < b. U݂*j#H{7|$et6ƄΌ[iiFl)kY1T۵p͝A[J4!JOQT\H,qhꍰ016 Q=8IC8t7|d8j0`\Ha*1:^n@-)_v#w)YJ\[يD4']dil Ս& i" INX2cSɥj'7|͸%$^(́hq 79@U̸9tpqhТͨkSJUMbR͔:MUMSJ=s3'dBC ÎEMMdYlˤ3f" xBD$5#A)ylԑ $v9̉0Hݮ۷0E:)5*ɖٵj%@KS1(Xcz]3Epjȵ1Iּ[[4bee X0Poh `VF9!#eD$UE]|z)i` K׃44a;ë4Hp"&bj&(j&1u;G-6>I3 VEt9MDkA/ G[l Fp,ZdXj$z{th)oXMCPP?>MY&A'UaА0-HunיuvM4Rt۫Sj•Wzd^0_A t (0&L:4X; ,Z3gѢ--ۣ ֙z0;Ly?~AȝH C  3.bc32I*K0[#;̖_]WM\7V;qy\ sNݯor^g?߫rρG7e j"ް+h;4,#c=?kD1F90 *n:OFjἏ7B&cm ̸jLJ=X B PQb]%#bb%* d`oHnQ^'?9 P).r +c/k}wRlϼsiJpI^@0&PY!ԍ,"@A(H)e@JĒ#1h +*8a|E1@׬`B"!>J}9C 5@9D/ !M#j?.c{$2<!vD)ڱSY,̱Vb3v5VcakL',,$C`ƖLpPhPSXhv EvD53Tģl [Pb` h  ȁ  *[4Kl'P S0" f +h*W$j FcHeP&bGP hڱTC G yX:q) NyPD &*.Oa)Hp #ib$yTTyԉ?I 4{CyNIJd$_XT hI q=Γ6gt5i(VV D#4fHAcA)}D0Qqd`v+GϷJ%Qm!.-c(GV519XB#PJOa7I4/g`aK D'$ ~AP/A{j)cXM>BdLQ~$lfI#t:b>d6E~Gt]Ɉ2D T1&τ ל{a~[ )cpl;MI~p Q O_=%3~߆S >W!Q-uHbC#$<^pBU毜5z7'X8LуLCKƍEcCGzSzM+9fGM:#IQn{cq(@)qS9<ʹO[ le|'W J|zA$QW?? i*`;֚X?!lXʈ]% I[$ē?mȧ ':Ĵi7hziɲþ hNtу' ")$ +i&7M$ mWo-kFFҫʈ@h`$F<8R!&0 %Gfxux> nb.f PFD0zZIhbZT&`bG ҁ0v> (" SCC i e$Z!YeE9OH?@%KVbCHdޅ J"Q5}=Ȣ"(DZ^_rւhd*h|*?CaibY$t Ď]~?C=}?-x$&xl2說bnG99JA4&MS"qJw*$ KeXff2HÑ3%7l [Դ_ t5f)+jJKWZZ }][ӕ0eXdynGr"ؙnsJeIs*cN۵EXM5)Okѫo*k6TKε}݃2iRX"Zd0 xٵ2rFf@jw[W>mm/9Rk_/?1?UMUUUUET3ޏ<_)W~9?ͿgǯhՇ|uQ&$_RM% (͛*["dcZ,h*!HP @JjJGRiRG TJ(f싱O]K_s^֯{ c(`©$<lM+@ `@w(jQXbhb)l4FQ Qa$fl2X,%;μ֢mMx?VUU`;e @ּ9HhtӤ,?6P8?$2GN6'YTg أ c [tP`6HԋU(Ԉ%*MchbI0,U Y$X3KiIT@Q%2-33wnɣ1'IF⨃9й}Gyˬ[Qv*5O"I,B)ICh}$QGhpf. >Y%4Xˈw@UtC/ 2Kk0)>43HJP.]Ba3D/M>r81bca1TUOIИc Y N#z@䗻]Jf2aJ8}aތ$zz&!EhnրՌ+0ϟ: ch J?i}2^*}j\9|?1 |ʷ>YҞlYpՉ|VNGi=T i~|`:>_CRN,# ?pw"ة1iF !6uV=wgH7ݑSE`&z  佗vHL"A>~Iz 2X"}AEj)tyI+B~ե)r>2}=(y߾nQl[Lq͎#*zJZLF^.=q0d7'I7Zv3&9ٲwwvfffg>h2kfws3nB!BđDD G:jν ߴ9V$ xsݡĠe$$J?uDb};芝6 8]]d$8=Ύs$780,1#: "j( /ߋLBq8vcm<& Mh1ɧ'G!S t+#փT0# 0ƐJҙ#Q, B }: >ņlOуy[d_z4cŝXP O-GҸ{ldOp22Kf~r'0PvOa'N/#emjI]"F>&~3K$A?(>8|5>;*3rz ĀP[$[$=.'&,&‘x<,u~>eŨu1":"yYM{>Z-7bń޷Qr;qyѻ<%83gCGٍɺգoc(|{#QG Y\k9³"d RSR7m8(2a!됀N3t720CPFjh*n\AӲ8(cѕP QqO z'A՚D1%QG RN֤?KCS4+ 5qnMV80&Y`#53PF  jpNf;'-ESt ) b""#mkJ`BlBb:Nx`AxeG8H#vn-EqlmsHi..Z0%́8R$QaBPό@ SZTZJ5@U4EH"Щ$I61,֭;##Iŗ r p$%} J-(%%ާfj"Hh'}(c " OV8\K"rl@]tRM3"\*$Ol ϬƒjXlMJ#JD>0%TUw߷rRH<ԑzdiE*^ ZcGo(%1W" '7MK!eI>8 L1FjP8~uJK_YIz=bq(#!FJqDb"=P^췋p:LPȢXJ0ж>q#c E9JWU[.Y16KFiB0fEBd-0'pْ61`4J[ 6a)+FCCAc2 M:ֶȖBj! h(d+zĘ<2Cv$ &`Y\ ((8Tx3dD`bdpaG04"I#1, Z x ` ӓ# 4Q!+hBN@)  PsE*)lHKlRxdnknV͋jda( NQfՉ2meol\/책,**qJLUbe P`L٠j3c谐'8YHXlڣl2EEK t"}K<!B%JQrbX+ R(F)YncbR̈nSC{\Qcpk,3ZCb +BBDZ> ,s׹C!L$.[Fb,S4HJċ^eslu99 ZTM 0ɽȹG bVf1 9Sz*Xmj:W*oIn<67qK+)2?͗8{%|nЩ i!b0 zt'YhD;B '=WUGE< IZ|E CWoႵHֵȥkDD юpǢAUpbwXkcs,DRis l:j"M'(sC·,Wšd(AhlFNa`$ysGsJq=+iNR`PD4{pv~!oj{\䄡cVJ 'Q’>c;Iܩ d;M'LĉId)E_K tq fآg"_8gwE~/ |ݾ>_fC|9046KgqkOU?5!#!@(2I{6e)<9)I#"K/2`15@>N2x}[T7(G?O4؄l> Exy8Z&O8ƢʶDI!p ڢB |#D#Ƽ?R-EbRIjSLN6aIC 4hZu%DIad&\`S !]ڊ`Q쯡KXQE,8WBXZpDB{ 6atDPQLz2"B= ؃>8(GȔI"@P К8;~n&4Q d$U$xê QJ&*j<;y({=h׾Y>dJ[ b7!=C@>8{@wCΆB  l@ڪ'8":%@)Uޤl5PEo1 %jT6ʥri2b?%E"RpH!ER>6/@d'8>KK"[y9D%} mD;;rCbF֤ Љ#LBOOy,D̡¢| !xCbzөCE-Ydx LZ)FdiuF%I=<ネxb^"WSzvslng&L,-8E7 C ~9U,QU*Yi/<(AT{CI0ʺ?T%Q%bioDN!B & # yצFG_b~/'Yf4˪"w|ER>ŷꦙDbޝ60pZ BbKrcVR)B6|M!s"%FK8@^Zrunf4Ǎt2/8, 6E!`jjF  (X0ljU*I%|ܷh[> uo(О,rmV& ˢCn輫 X`BL4N4O csEH`a (I#2̳!$J$pn L8Gh&$oݨ"2v'xygIGDA*(>?`q;IU >ӜGd_s̄X%Dئvl2a&`iL[s yK'IUMFɇ3g^[-1T*<|҂DDC>2YR©$ޞއKi$9ĝ @moWw{aaDKzz{g'ĒAl;yꢡ߶aPTecmh9 hIHeCG!i9m6ۭuJOzfvB}XAPFt. "U"Qy؎)N E;Gb":DTQ XxRO.k슎)CCHzhҚu T8l B0L)J"j6^fT0>tz.p'l|&(FbTFH$ Qi% b2ąs>CުyMrhћ7rv24Pa`SgE :0-&ZL|恾N- N(Ό)Tl; f 1 'gkͮNbxw“q@1˲JTd"C(tİ°#VfbE K˿/{!K+2.Z}=mw48  pRj;ǑՋFJ^rsB.EZxB>TjƎZJT;ٟeE2 H4ٺL}jT6k+@ZyQRH>\'Pqs=naCGW f őA i6zjㆍĩm5sMYĆBp9@YMhac$ONt톹q2HLpl+`'$\4CH0C\M"`wV 6GWȭ ({$F{cSdhz8,OA]FB\}mm*%JD*fQMMɶҘٿYI A4=[_=r??QS|5A"(}3,afM2AfN~{&=|" LŰ4FZ(S+ qoL.jneKqH\@̗ B"H"5]4II-YjaYGt8ir\Y" ŇDkvxK¦Ѱ(_;P 2:((EW ;"- aC#7 :Ù}1:]n%k۶7 +z7n{P*ݨ{˱=p,'nIr۹c%X]6boz'yRn=k9ۧT'uǫYkPkauzkN(E[#suy+p6݃KSL0eKP;ޭ2}54 u݉w=gQ]YMYxkHI!I7piJmV ,Km;\T$)Q ,Ly[^TPjD"uMk)])UQ]elPYݪ*[u%۹{gK@ teF6BR6v|ݤٞZ-Sn-h^ *D"֥KN#[aކ^Uܺ4 m;mݺDkn tֻٞzn;5j%`]u YFMlcƹv9ڊ4ebѯZ1ۭ `;tT[ittu"kMr;QecVJT*;7Z5^)ݨRdSvq hQyX'VBђ5nP(x]#\{W$lҖ{klkl3ުKLFWdYJv [mCkSMBsS=[jwjgNMwj/&ӮPը w[c;TLS٢QͶm۪W-2SӝK6B5 G65aXm+`5:1dՊV]u UeS])UV* ҃l2Z{uݮ %r)kXX֑PUVM*f0e*; $mY+eRPPi4M`30 [5کw]m6j4@HV &duYլ)$VfZdqp8Km p#v:P56jɮ33`Xzh]9W=w1@ h &A?FF)4ѐ $@"@F4Іzz'1M2i隍M= j4 P hOI4UO¦ifRiM&L &2)#M&DɠoJMIIё4A`>`W'GUz^ݗ8bUaia%DGuhYLNGU±g F 97˫;vqstRH&x dI"D9$_ZiٻXc8UsUU$I$-$vNI$I%_DcM6妕Z2s\;04_cI$I$I$I$I$ssI$''fչ=tm[WeiUZX9W 6YC4hѿZI?BsIIQE6G (|;<~I<Yv)^$PNdx{K/'g4SkY>MRtQƲֳ1G[4p6'抿`+9rAG;|NDJ#Bc[i3C\e(T(Q+a@C]H řfW;֞tƸjqNƌ3DP:#}Arv&`[|[o?-+Ȳʳ%m4{ItT9Et AGIj$GP~ [>$$b/ "dL Tz) ,NUig3xѕ+M'f /6u(d'g௣[~b]` b0EBȡO:T*KWQW!L!$ĔĔp-F }!m,/JF4KGSbƁzl&96^Ȓ$f]AQQhu:4I0 '=th pYXQKNQFjZ(mJD t8rMPjdzdrJD+ i尘!0ʘ-wqE s[KP2u#pAw p쒳]j/$SqSJE=o&!H),s>:%* <2YE' d፸&\6L3<@j6kM2ptɅ]4꜓E:ҥ-/+:IʙY/N)9Iؿ"v! wA&l'շbZ,u 7vTetvEDe߲41\9u*cGQc8KMnbVSO[cU+ne'Zr{"tMG`dTllJ**"#MRGBAU^`F谹ͺo&0-E> GAb<r+SǞf $op|N*EkQABsܙj!#cRE* Uc֮>@N8? 1pH!psJ[ƣģY[A|ޣ Q:b Ghנ]z଀AgZ =n7["@SU={C$Ua̽H S :Yc؛}W>ӹX-^>(R72Ds=vhu3|hy e{7U6oLvu{ mbEj'Pno7F:HT?Ox\њc#%- i 0ǿ7ѣ YC5p?FH>ϻCljEhJ4k+SF,BiHlr 3" cP5 1Ts2ʼ7oj8IG$g4xGi57-imɎZ>[{|]#ZGio۵4||s9+ȴIe:ULF*iq4̵MdnO"I&ƷzyH%x6|#,cq8diī+L)2sjTڣNEnhU,z ,KJ4MIļWa®13xio5vګ='9miQUJho%^o2fH9ۜSOsE}Ӿ1CfS#mZjbEq0[5 @ԍQxECµ\(sm^A`mïǭpX5.ԏ#t<[] RSvf&F2p0g/AIK$r,ᦶ,WJ+R=Ƕ_qW{s"!-2HĖJiȵIՆ+ǐcJˋZ<٩5k4r-o=٣ZR*,/ 3DfM6'tt42O&Ϗ;z>i=8pXݏ>:t5.%Su'5њ7tuUbH Ru@; ԇhzVwlzuC׼z[PMO3RJpo: ɓOf!ϯ^*T"uGۂ|̕""@t<+Lѧ-gq!)럠(U6 LcGF[i'kvWNƘ*YQd $lA1"92 qB $)bdɎ+iTӇYáS7vbvQ: XoG zҺN\9+!aDhŒ ,0aYe 8`4ѧ1OcN͎1^o'wFѵ8pur2 |E剎9@,D"n{VONS?a$^ꧥI泹t}u&z$,wrm+, ?oLMEC}r :8xEeϳ X~GC~zA]Q q=3·@o0h&14_dO3]r^\ 4-#j~NEeyS{Y)2SbW~GLD5]jIkC|oltӟxolD'LtxTU:<l)k%`NTPUq`rֱRbB$EA&B!UO{xx^}{v}Hbc( @ ~b'M|\tcW-6IT]]ۻ]^J°S =MW]=ivU1cCJJT a"E\{էFdBIIV,+N[ :Pixsr;^?, [57e)l$F͊Q00ZD|۝/yx5&Ch)XF<$*D 0;*~7LHSb Љ l+UU9N"@qSr*bju_MTBoPOO*i\>L龋#Pg[B%Dv!"0SkHC88WM@U'*n'ejtJ̬I>4ҔJR)JtҔNJR:S:tҝ:t:RjZmjy~(Uv"M<_ӷf)%3"^YUVZojW>][bjL8WX|NT:8vs\l{aͯ6S}+JҴHRt+:ۆb8vIUETUQS a_=h_NnL`Ĝ2bÎq J2*@9c҇UUIUdIU܆#}@6DI}omh&E1Ƒ& 4$2ྵZ!Z$`iA1h뇇M޿}uHƤ^|'ԲFÓC za*%ECš%^?fDAv^2colf" xxFUXŎ$$ ci `"a`XdoƕVZ,+'RM?urs;rm,8얊[iiYis'L@,uiCE LEQE#8pCg}qM'цoOfm7u!I+o5Ԛ>oo5s1-qyj6kVDD'x(4hAʘ!K0Q \D vJ6O!.Xui^gJMюN8ucvwiշ-ú03L3שkXK!i5ja-4FMFXR9g&HQ""iD0a)Ib{~j}cbr5$$Fel)Mhhf h!~ ('"}Oj| Qd,|yCA#I61&4$ěiƉ'-NqɤՒo:6p;I>g@E+ z|6*$d ,:j IWz1{Y`ii H" >e>3xRQ . #HkVM)5B*QU :cw0ᓎwiCGN;q.I:IF`@U^C;Oc]v_45JmRO&ţ~#o0X@=䈻јAf쵶DAR v)k!lta %#h9eT#Yj+ˈ`nžY@I$6M;m 3k|Xme&%HI)GHp"IB dHLCTF'+}^^]Y~("Q!kɞ.R&(چI0vQ(* FFoVЃyb$ +9# v?G*?gh??=h ;p$N0`C@C)lƤ%E]l}ZiNxK nTU$Tk7ޏܧMFcp|1$>`;}mzIn'GA!|_ZHhh!9b\GY*GRWĽ~|~w(IbA, 5ǟ]>y~ S< :zF:;8/RS+ ,~շNpy~B} cFar*XRLPd*B:IikO&ϤХ,? Sf&,"Hf@Ւ)$8*!lKpD$㟩iS{_f<\K T'1T>JƥQ0 O ;΃[yra1='޳Ş a_#MG7XςZZb}N?kg\S&Yf!Ŋ>Hh1(`w1s { svfݟzûǭ2_)gyΨG$B< }z45 y3r71;)-0cp¾̟Jɍ5S :a PCƤmmeOחiz> Ub*Ώ;f9}9 z)Va[!P٠FrcTǵt wC!9CbqjԨ3I]G8 TH !1MD;z3KA )`{4LhP1PJ,CP=&!5/%&MTI#nh@M,&cdګlRJ,'yyt"T.6b */)Р'Gp,[qY2DY"&*SFd_58LPT-yA aD&+ˠADLLI%:[&BBFfl*UB JFRrZ]Ux!X9<r}3cv!TԐ1LnGgo96Rc%Pk!sƝkm{U͝'|ranO5DlHWOB02x|dYA<IQ;u=Tv:ϽOƺBP~F(G)q̓kܯ8[$DBBJK$BTa")0Tw%!2~[bۊ4BRpi MX%N08Fލlסp p.#g UZ?,2~/36=0~Gc/H%8'-@G޲ڐDFE8M+'aKxsGJD?~j1ݵb5ZԧUmt>WycgJ'X9U=rh"i$ь6|h(a5NnIɁaʦ,1mR (7{ĈD}S4bYREB:4V_{.Ͻ?S5B=eZbk'wݝ3~|cY$K~$&EM]:cc P %E)ulotf2FԉE-V+pxs1I7l,TMhUҙ$VHIs1bqz7&SFnX@K-89m!)6qR1V${Yxa"mURMDxqΧECrY$b ;,P|~MDC2~$HTJ֕=RRoƏRSXute RTy8h8?$EIIZvMZ%k|w k&lrr5m)ܖq<[B+2e,nGlr96v٦hlqٔbZFKHq姝~9:4Ft6D4h2&GwvM.i ͺtJe۶-2-m&(թh[dKmqo;p[om%/iM0oȌ2' $ֳ;~t f[=z !|Mk1Б BkCFhzffv'u ﹊Q̵ )LN&hv6p$osI825ƪb-#TӜ SV0+!L(e2mm2>SM8AȜiFfbsb<(q0rńtXLK#R)g,7ORqu\ыcI,ns[o̒6U7Rް1Ad5G~cY27Xܫmj*ckzTcߌ;X IGd۶ FDT$RI0{tTeA%rTܤΚ #)CuouL$Hf},o2~Ei.~ln{8*b!J)O)ꓼ7_q;^L3q38$ #c2Xp<›UTj.LbOy|/HkL4)88aF 8֞ZNJW{qԓso{4 [aZٞ0Pp@@C6 .0*10+mVd#R=L<np2[h_x_ȗTÛ  )t}HAfb~q rau"c$9 b+*y~awk m}I$I$I*vxp<ǭq]+ŏzSSȥ}%'<>>ziݘ- ,viĶ;sJsܚmrGsvä/F;ƴ}spcf1߫%}aavk~%`rj0$9a:;ȎLd&ęmBHPԅ9,a􆋓04¶Sn[m+pJh<tlC87b#'gQO'Gu1{hB6nLJƘo'8Ӳuz`l%> M|4arTc*wh[N[j¸Ekd5mvc1,ՃȦ4kߤjׯmI3 ,ꥳ'V1bxOO'U(g6B&(xD=IPP/䏒iN񏗉]ࢊ3N}& p)Q X:<(J_xo^"8y=Xmޟb7]^FysݦJ}tp'VTSEdĨ੢g7s#|8@ ~Tzg ,͓6:B Ap`m$#44R + La@rTU\3sT=pV8,Xs"zF-2Cn,|O m;3$h'o~CnX ;~dZ[Ӝ;R΂:Hy)9kƊ"nPsh{7nb| A7)#; >v䇏c|0pz6p ҔQ:ʜtiWGv:w6pW ;M9cf\4«bT41sȞ?8~XIh<RqǗ 3 ˙Κ6"D*t! rotCzs_d,6KK10SV*^#6OY'94̬H6팊LU" ShHE`dTaV@:ov+.8Au!*.+F-5ڿZ&ߝǛɎ!wExtiTOً3tL3s6"ΪUƀH򼩐nQJ̇,ž8Twwp"7#A "Md(C@a)Ž9VUk?;{ 1x.'ϐɀ58ިWf//WIS|>}{[U[c˙7Ӕ͑/ٲ20Dzw MH9bo7||M`NAul&:ËY űN?ޟ{˽z%oSonu*kZֳkZֵ75~}M\gy9#<}u&ugYYt%URLWJANEz̿., 2mΨ0RaEΐBi"#\؜"5g!}vmշ ѯox.ÚtomEyXAןk ^ͦcX7LH8L0u93$1C.֓= K8(F(pv614̑#̸-~>z<=ʹ\T]+Ng;}.(wHWo΄6AP"a*L9(Hb`ET&7Y++c6JNɱiml[clrab+miihAZDrUHf۬ڲf)+16ڶPءF6l1FuI1RB2\qãsK}z۝c5aT9u^(]]ĸAN=Xx7<~XG#Ʊ9ϜIc$$-/<'Ҫ(e^to9Rv7IVr8͚,l *5xi2kIH @#L lYHmdibAis~~?/2Չ}@$+#nskק>X꡿C&/ڠhE<хu)~{|ultD|Ɯ}Mhu.KXXߪ)Eu eZHA͑7B'd(ZQi䤆)iߏ߄UHͷtSmznL_G qθ9覾5W{uÞͱo~MpJG<{ 9 I$tr)yC(`Ug_wE6Q>Fg,2<'ƒԯL%O{=TZ7> kjVg6 Fi^*[QtWE?YKyXjF!ktSҼq )6'?#O&Ԇ=Fd*gOdv\n:F:6DtQC)12?V'*/N6]s-񮞄ڥTӲ/4V1ϥy#2 r9`PnV@z,Q̊nrߡDu*BP+Djds&RX\z&<+cHKzq}~_4ә4B|dـ/ß8)yj 28@UD!b9AGH|tQ&uY91q鋢dnÝ东=n]t>81T@Ռ<>G6tb,)ncnB *Pptsb?}=Lښ1 *Q|%!=5qrWf( ~D Q5}OACrH1$A=Ae"_G6rʭ"3lhWx\Tv7~<0=,d"1X)w{F IRd6p,!_'! @TOMDEXpq)V@='G']PGe*!R%&&]gǫ?s y ȿS2 RrXFF\E(/ UE|*O݇ViwB&/~Ƭ.@<(ˑUEVEUP 3'{5r|u_-5^l7e'}BJQH+,E_ϟ^:=?*:D;QS,T]933?5+ػ }鉀1x"tȸxJvGvk{<%SD" n~y5R$’D&I*PN3B |c!yJEרU9(Qǥx; Kd"Fh&>o4h$_T:Y,g%CE"+pcTcHsN|+7ifH8{~t`#⊢,=kS=Bx){ m>{ÉY 0ا e"=Ӳz;<+UriXD ݴHNVxLP"0(?N>1 YxG!yB "Re$Z h["0b z]#}")!SVܗ7wǂzٽ> X~vaBc J*/ cqY>>Sw;nL.M;CUL?9"9JLo&O0T̢/1R=}7ˢ 8ʦ[!$N2ӳ:KQ5\$^RK׺5ָ .Ap- E!A`Y%=gtn 6x,=NkD Ac ( QקnǥcnJ-KS&Amqi31dsٖHACNWjOf ɐjN/FpՙRJhyn r| Qk&# quQ{k Ĥwԃ@cju *O D^F@.灢?6szt/ni8׆^HLxDc(EN'1 Ge{N>q ҫH}%E'XIˣ_08kx DԀ9$\O;!9r΢zpx4)Qi!(R}*$$ 1C:|d#D'6~Ajyc,6J!t# Q&V=zUJǘ^fxYݐ22 ý< =kp߿BaOb`:B"UHN')>5F41Mv7:6 r#^-BOE6yJ-p,.sa7 ]a|4y< 3r޾O8phI ^W>һDTQEDG$2W8pb-éu9mC:[PBC1<|uy\M#GiR"&57'N@C>4?9ZȫS՘NC)kS~fcu5: bӻO~]>-rmd?+B~ V XH?@H= =p*>Ci;|{>CGwu9_FIdԌ&fK'{۔JdY 031SR0sΏB,bL!<'oqG e|$FC~li\4¸bY+E{ $U*JT~gM:QTEOemVO)O\gM˦V+iaIݎJܩ U`uH_c-''Yt$=`H/ET:ޭT{1TZ^3/sY8(;D=769NF+E1UL9cf+Cq: ~fvy GG6xFIr]! hmi:;cqt~xCJ'c:fhoX=k+,t6c+0ٜܶ (R.S82P@.kK1P;H"4pQQ<ɀ1R  &0}j3)0gy{=ݿwuw8D/q ;P  fH"I&Iy馘9nm,J @'|5G:U?eы c'ggߡQ濤N<䄒DgGpqU*xR=q8W )amIV,cpm6Nz6&1Ʉrrbp*r21{&'yd:JQbW M~gFV99Vѥ?UHI FےM1P 4a6*2mS}{=GʂJ_LS]04,xqC.nd**xeYMxNX;?Sl1ɦri0'R%t룇 +MVccm)Ѧc +LYMZ4hc8s,]de5k*Cp1eG#M akS,%i݌qgr9 c&+ NNjQTŎXM05M0005619 c0blc,&V:iEDRHI$^LcEBvnFaaakF8L0TI$@A-'2uӫ :,ńV;dZSL`ag><N33!24$8qWF a綘9VdXs3&R~sR$: $a(߱e-v1ƍ*ָ>iħ 0dZI*ڄ~b"5MbɇvWbãJ٧sFH2W":.hD.Cm00;L1hM=6ګ c c c c c cz4 c c cMm saccc~m 1'NW8;;10vlSJ|XcO}&:0_> mŇYd)Xɒc!V֙17&eNra3Zwl0p.8ƀӘs4m6XM00ƴ4 cSFadɩM6ɒNsyL߅:KYΒ1驓& 37ىL$(Np( q$N0:'ÓI 0KκܩZadbJٶتvhZ։+ccWܥVdr>}KiK-MRI$I%IRI$I$InRDUHĒI$I%I$I$$DGH$"=r"*H"?Z}&d/Iz6v1auiTb|1pqMcSGQQWChR>n;z><˳J4cх+?}Z=6pQT#$d4hCJR1B1'~OSI\d; f\tuU F\[t*J2]? IWj Fhhx #=wqd5Ѣ5D4Qe8a=QAGH;9تfR#o$䗲Y 9Yё qژ81hg"XЎ=?d,8\3jsR*z $T.hQ 0tY*XuРA`&R= 9;96LlȄ%Яz[^(1IA 6#\B#b(Nz$ "`%WJ2 @wzӇ%{U;<7{[U/1+i'4M0fȢd1 L$i5 t2*)C.ɂ6 x5ð m 0v"/TflDaGS@HnġQ]@bXCb =>l /1-1}{~Q}'> yd ~EC>.ُ_&?lz;4imF4?L&K)"ȠY 5x1ٚ~5 06\P1!Y(FIԀ(9%. 'DJF\L$2)e#̔@80 zK0S2}Y B ($/ {RKc/;NÈ6;V`Q'f;v4*'&)P>tT*I>G{<J"wn!NU֏rS`/V=G$bzTj.Lam 9wG3s?xM TbrCxTcd&DDTu|~ۇИw@&t" &,G΂eF HdCnn(f_KvO4"^4=w<=X94ƴn (j /ZHb[=0UжkCn`#0:Ԍ)X\b|aH Hfo:V1Ry ;r%ku?nEݥ%dÕve2U̷ZL(*jLSd-\ ˆ TEX0Ae(ɬMjI)2 a7a"֙}O>Sڼ=$p4<8Ojϐ9yP3Sv̪PzL `8H7 QSR!IT IQic Gv!v`D v q3&n6ekB3x1hىuFnUXuG~ibzzw{pQ()$2W&4 UI~G mI7yx}_t%"O0؟ OS#5'f7(unsɒޞHP@> RҒ\5LS{=?2UQκ֛oG($x-@ $1^10D~-p\ XQ:G 'HPX3"#6%_l AE1!$8f^3 ghu<.LwaоjGP{q{ųfouuwh%Mqz"w $5k =V ^:3@zL&/GOȮ7qڝLQ=PTQgQP],6TSj|Nj,)㈇QӖT4Ns⚦ #}9\C)ĉ.n!\+A_=n$o_K*j2$ٕ"I q4+bq/L(LU!&Qb`wJXVw }>㝍R,\1oIUI4 o>"LTrnww~=s}>2vg;6ն>rJ~;7V{ѷ=VL]x>O%9X++UI?\6uc!3z`ƕ7|ڊ9č"I)qM(~5%!vRT6+Y(*Iѱ^*w{] b(NIJOc(Tn#W# TA: R(3~'٢LVEÉ9? A BpnBaU2rmXz\b L>#;'':E¥^KD 8I Nrr`Tnjrw-}}NE¨1c\ZOa.qF6 FPlD*?a1BHڼ5b:fc Cus $G!fPP⪣}R=oGЫmO[c<ʮή1{TV8jVVQctrJ^D_7^K=wcOKGzYA0GAtLGXzLGBb9c1|Y6i+##lo M$$F0qR[$xD99񾨉;3bB)_1`,\LO 5Yx2E"He4ᴆԩU;\/1N48m̨ءq:ub_/:mM`~%zpUv@Fp\v|>um\6S(h@ @Je3qXix6uv8_)I;}fh[= *L)ÇXӁ@B ︤\Agp>-@z\q85*G5`"!%I`PDd`2*\2fUS*@bG Nq#4\a/ sfR#eHMD-",ҴX\W'f_ov;7C (I ܤA}HlnLQtO)1psϽcF+kE& ltMvQ84>QN2uQI7"[_:nӯsO\ "2CIF#G㓲;pbk>yx#6o;,ó{j0!1L*jW|TQ.dz(dpS"yXB(b*#6bgRCJ^T5 -r<BIx9cNU^:gG4E 3OJxD 8`u߁" P`euyTDF9F>O= aa莺L Ӭ(w7[):OL'/LuQ:?F"H(`jWD(LԾ1Ŧ CŮbTp/ܺ# * y;Jn "ܖ (b3 ,gB-`5Ba^!1?8+ E(lYR+a?+lލWײuLla'$Jad-q·:thiUu2tg7M>{zw*:*r8"vaat*/, Բ!&S%+<,;mbJXcZNjN#MO]Rb_"EЙ<> OCet֔r|zȭL&NlBn5Cfa:,%gzvØ_yȨ9|J$BĊ6औ!\d{)gh/D6 2(HZ[8䔢N# #5Q_lm2(#ÜH!Rnd2LqE? 1ʹ Q('#$&bN _UU*9W{?_Owf^LE:C\/C!aKaѡU*)BiBHSaS. ,=w`mQR'Arr͌`D0CD$Bnc8h;Nʹ1 d*RAdU^)u6L_e9*0F (「 $so yGaӷiTĂI3lu!^d.4>[~bJ%*U1~PIcTc:h)ܐxmE`yR01 ``TN 8#%A㋸\>J cP`I(cG^0gYx[d =̨RHdGATYFsÒBgr¤$!я]߹cάu*$:{4w &c߇Yg|A ƴ:ԗP66kO(fMMO:$,{,J<qC)F5fAӈs M*ɚD M)Kcٕg#$0<{B͐AcFVDD?\]L@GxFB<т paĎa# "Zyu8+{όEBC$'fէÌez C{ *:1quQ +kNPRzQ=b x:oӟ0\d2XNQ^ P4p] *w%ǶԹ95 oV)5(\)%ۣesYUP`cnƔ&t_T|p:C.gf#B# R1 11{U8 @.VJ1U*)7$TTފH/ $9p k/&$ LG86?\eNj/ASBa40EiERG* @=ǣF-Db"h(&a`Qd1T&ATaeIRt?ٟnf,\D3FpԵ¸l7%UM~i[tbA6yrq` sDDREsc='yRVF⛩ޯ.33bX($c87%kۇꩊi.i NP(a*$ $ mҼyOcl{B'/WG\؇痰q`Ŕ|} {.<dG|uPĻFGTcäK!Yr"%&Yb쀓0Ҕ׍|"c= 9zCB_ro@4̗5 j{UC pp;sQMHI0@Q28 cAC 5;8ޒ[y! Dj\5bebh!\͖;Cw%)u++sLR9o7 4'~d@6؉"f̃4=e+~;JcXy'gJt(, qŠ4{dbEpɀ@3:m*fpeI5 * B(o1q.gqC4xz  9I\qE9H 㲠̊xT!C BIDIShl;@\1_X1K a9n52Pfm㨚/&L`M7.ƶ@rɒ./t G@m)}m@WTEcyQJ+U.۵TصRjJLm Ps' vij3 hA*^بFGtXJ3[IȜ (w`61HI9 Lh㔡2$ZLL/("h8FAgN`5B :2=inGz8#<+4ЕfKf7\4Qp|z;3aItpI٥OvinR_vtke_+(8tQlIPL "ƦIZ`eӢ,/%`h|J` 8hj:( 0F ' VM4pzXj <g1=x~VqAƆrQgDKRAf FfXA2dG`RƑ v2aY0T2PYItA n ))(U'a>J->QG#qL.YWoYrQ?{]OPM%UQE7F[Eˎ/ dS%qS8LE>@*oQ=(;"T6tRj `Ok$ˑQFr{O +ܲL4|=D0O̧6dQ37&<2>~θue9xpNG2BLQH08Gci@bd&3/b<=wAx跚8;C_4Qq{@'V*jj˫{ûVW{1U*%Ƒ#[h9m~_x1/& )6jI)_Ly61Y>Z٠=T(M%c1s\ZEN di`-dpՐtXxi:S%\CUReZHV{sq'~4y4tz!Ÿ7 RRS:Y]i%&#mB 2(q9/Kb3>}lU0"}gdi!ʕ4Qp8t)8"dsh8Yc;T۳wi_c+bO;쥆~* l uUvvXHܑAQ0(w*ou11ݧ,i m+˯4x )dd[-I by+]tFsTvxXHRcN-@8~.r$Nдho}>hˡU3%x$7謡X+e~;Ҝ>hь>ֽ\ !%#b`a0Yєfc)tx=sͩ}7z~Jp*ƐE@ÔScҵNӏ`:`P Dьf: ׷Kbr`ӹ6DdT*¡6٩ִ'@VLWzh9#5a0(B$+ P9$28r:+G.8{BIZi0rqRaB1T$e"AV3&jN, eT"Ne̼wҵbѿy0=;]]G6+]/X83y;aoY3!C4Ie9=W62FT!lHDRi2w$w$A^XAńN}EfAtHn'qP@A'm(;6p`\SG).Y%8%JxfC8Y{jp3f $쐄#5J,WѳF#rLQ^P|pq`{E'6sDCt wkV79dK*j=.Q"eG 2%OAY#^BCl͔x9 PI p篆۫!J=]ۂ{.AٶI!A#, hg)c52KJH=M @YLH84hݎD Q#8`rw .ǐ@$#{ ` h 8=IQ0va'|C;4h"ɀ`FP&vAѳJ A%vhםCWG# j88(a'Oׇ߮v<*cmi+.'٢ Q'+ XYdF Hza,^ǟ~ݪ٦iĘHi1:É\c8fCXbEX<+az%aܩ'd$f%^Y}0Bܻ tjBCc97v39<Քt=9G'"ֵC"?bHZJ_Ӷz -RD4CܒM삉/VD \")JĨjh &$ $MAKo"GI\ʳe⍎ꜹURq͟ .}96;,xu<+$ONHsX鷞aN%W1WT 1с a}vH捊Kn`LP<01yr{FGd7R>xa<=#jY5H)̟9Mh8QNc,f LQŪT)b!l)8#:dd6Ǖf0 `vX_:6Y&/}+!Š + }`Z'䟍S20H*dReDBՄh[|IALEF2(1#)6&;;?A|mKY1]rΘm[=6wɢNNM 0 PIQ"TQL$&>4 Dy%Q#0C%.΋ZkK8 c0u(á^MN.Biw84o bgaF82>bvv)}x"g0O'*%gGGx**hF&#ipd@)CX 3<D`EATX:kA=R"|:%FU(4rsclE*/QND2V?)I fRz|$(z{PZ0g,uvX~ B3EO?mu6j' RzAi-}G+c|tWyugI-XF-kE&"[:eW_dGlrvp\DBt,hď)hUJ}8yGw"=TRN]#Ln࣐hD!JI7X(du$_N&9=vb~裩S;nP"0MK"`iqM$(]0A# *a|h ͚6$dAL4:1m:C 99(a!C Yv$QZ0A*K9(r863\&,PΖm7Mk ȼRlZ"Β9[~TduJ%zPMCC T9MI @Qb ckCσo} \js#^`Dz=T xc3E a(om(a8YF|3EYFe-;%;bGYS1'SrKG# *cѶ68,TTVk8Kf$7Hh $ RdU"Q`m^&8"p#.^n7B %L=2,pJM@a!&94"OZ16b=kOsGΣ \.L<}4*>[/CxLT8.f`bflzJ@WR(zMM07 {H,)QxaPmSAMOH D`*l:HD|M $DṒ~fUfN`<$?EKC7{V($I)KE/'e-@:^AE.Fr54ѹC~ &ʡ")&_j nZwkߓga>mn,L&w ` 0Ht* Bxt% ^To$,xg}ԟ&W'cG4ۣwkac6B;,Qr%^b3h@2 ,T;,(XN+.0cR--<Ȏ\@m1١/hx , g6$S$ bAWX36J#(B|=|S>s|؂M".X EJ$L 8ш72|q3&A>~'\s !3hD{?[b@s{9B /3OHtjp4{ډaR s7vHG6McZն-0FS5[u,5L7|rO6đ"$5Q:4ri4iwb[EqTz z'%(9xËTjG|>RGUAQ`*R.0T9GH 2QDspE{?3ãXW/QY_wBrMʞ 1v&=Tu XdP&}gSeJ}D>_wsר}S$xa fi_@Js[̬h^0A8z>;̦ΠP! Ս?R'[̣\_NџC*D,taBu(PB<8"D9"H,Xbę- }{n MdDDDDDDDDDDDGsRĥJMm (hlԫUn뮺뮼] 3##04V0F`0 8~ϓWH ȣ u-D˕5&fUVٯ q0\d9(/D;H'ǸȎ`e*<#Gp:̓g<fj3A?qh "?YG T)1&ABb J{HAQHZ\iz\rq3iXbacgNVxpYbbhq*&$Id)j&Tc Yw8rV7q[pc$ҫlq״0 92HrԾ(8RQ*^]42WfOkʲΓ[y+vMNR>I69Uvg,8Y=٘{O)=֖*4UlZsm΋ ap&im"GZ t`*G򣺹Ts{M$z;aZBM1?RG Z*yɊ`)q!はhqcHK р>JgtM:)s;Â><в}GZvvWdCps@ű:LhDDqıBE"zy<+r'v+`<mJ*>mi\)F){'ާ.a]mb]<[ebwv1(xa#5KѲ^%|_0k{I+gg3 j:AKم!es%d*L{7g>i`؜17o]520nՎ :%BG2r5\(á+T؍H=d%w 8 R1dźfO'Ѧ1LpT讋TcM)aNb*TSEuRb+<4Rf$0Si'r'$Gcm#!!^po%y>}=a8ˆѣr #ި7C1=a񓯯zl㶌 ΗtCZ9,?/-K`2&}K cl~8zy=qI ?J -@҆xLiZ?߿Ss~lz5٦X \O"+D~RQB;tE0S\( 1 컈=_gL 'VH2?{ p1oC"cc_v,ŀԍ) OTǽ8Sži ̕'*Jm>Jy(>:_NXq?r6b_ALӈNCQ*DB4LIA4Q 0/R$yO+$Mѿ9 \XĤJ|*C˩Tc!کЇo荦UCtʪKy7wtIs#z}$AC>UeKn(Y.$Cz XqۛFφc0(o0JV$%b$bֶsHjM6 "IAv hڛc@T6b1q3oS ULT˽H(g奈$8`# 8 {ѹUg>>zeH+jz 14 f^L1[N$.b%x$NHpmKގ@8y!ȜCxF4)o 39TM 4A1:M CѤC; )# :F$@ŠfF'),g~_}~o=UVNIbI~c>&̉L9?eMmlVE]#X<˻p8#:[ zRe"k#ηX,9D@Z6(aY!g͈ !~#Ae`Y*ȌlL0~d R`DCcR8~{NL6>3@>ϪJ T[MIrW &Œ2iůʗymufץnsl߁nͫ%F8EP`;}SwmᱤhN͝"gbTGQQaNgL+%p9 G*ms#>lFآTl|Ov%Nq#"UrQUCo~PM$(87z @;$V_Q)x~YSVH$&y a@[@IckVIVO7030YLDD$14*D3י p4ʷr ͆IO(59 s5?IGȞ~'|?Burj(3aw5dU2PBP+JqiοE.Z|x1!H:u@AzEmA=8u(2!c"pnPsoF38a~#':5$?pZVG`ulD`DŽ&|h^*"_3C*8&ǐ>f&kOE[6UaEc1>~.4?آV}gēl$ZY&FU* le-L-lJ@խ3VZRF5 kZXkJ&hlm ͚F+2JZM6ȥ)K2[$%l%,iYiIJD)fɴERf(#DJRJRJR%)fKJZDII&Y,HRFRK%+Bi5ĥ)JRJR,I%R,K d,k&5bʣc$f aȨrEGsDSh0 0(@GR GR[gMnmo3nB vaGPB&H.@ ;;04# 5fKa6CefL m=ofmfV6PM΍ۚ4khHza1F|[isZ<"@lLRE7 )D Q')Д]tutBw8]uZYehÉq5zgVj%UXKF L 9#P$uJGVY[Qi1C[efvit:mnR*tsF"O?#'">S>!*5E'saTSB4R41Gc;](Q؁Pl(`D<9MAI: WqHq=1SݘIˣ!MB!{gOENo8D?A S!&I`}$#kr?>TpCa>owUEv:F(/ws8~&V-#=gCYM;w@u<\'aiu6&&o 2ӖٽWkG4{~_#i~A e>Q-F wmIݾmXi8"UˆP,; `J H1:Nl0˃Gsb<]dYc"v߃TXʦt}c;K#!yL>U1'-䳰D4OX;g!]p&  w KI`J7/V,UjDVb {džh}~}!r""%W~H l 'p~'Љ2G~y?r:~sKɅåbp(SfX_80Iy l Nc(~#(O8T"KH)zghAM9T:M10`,J4#\Ji (4?~)`)1zzNy% *@ď&Tϙ BL:ASg}6vO<ǔ}GQ6~iQrN}eSe$݅҅J4 $4A`ÐU$ 5.Ԋ<б@p'΄/)0LBb+P#b>t" $0wcoN]gI_TE"To8y8hRPfC _7(炃&j6-!;,O1C>$!yD"scPaW{ʈgPP&ŁĀ`jXɾv+)oMذ1RցIADQagd.Aw iȑCa"y}hDB&D'$%%S:Ēc4u|o$OŝX,yqampz}MCw@4V䱍o=+Bڎêo99>׾ymQ=aÑʜr~fG:?gDɄ(DP,XIDKw<;;1^OIFԸ$J 4tpD6ivFEԩ<^r0ĎX،ؕte:h2۸wxi,Ӎ*$@ yXDBi-C0\P؇TF,{j]$*G큚]ɗT)$kz>^GZ+4֞/v>B4{_4&fVu߁qy`\]ޠ9Hہ)Cuj4d*iL!IZB)cZ8pf c~lR/3矧 $F <aQGBɚHtHHA ;5!ހe̡zp>QTD?]=\^d~yAo.YѼ1aрFT6}?s[g(.jf a @~@ \e9G[]2ʟElHό%]'w>zQ %Y̎PHCLVnUPL-uOX̘Cƃk3C?i'[}A>`(}(A(4i[ort0¬JG5ٵk+ eCuÀ5$@! i!$$QOXWRtѵGV1c}r jMT4WmmîdI"IϙϻDBdܪ!TIt*RNa)# a^4ҫ.<1\aScd:TpiT : j*NJUza5LjUV<ѕUUdp:˳Ӈl,N-g'sg\Vh7z)XIŊA *7N8W=xBLSʓg_L*M`e?H۩1.OYPk- \)$͍o=^hS0ZןnRwqџ{tsǣoLb ʉX8H?T;<28R0g]6SYDسf[{"vEsubG+ I y{+4Xs0*t2Qax eLAae2g?bI A:G ?_K0,gF* O ; $-:  lI%TAEEF#IXq$tЛHtRGR _ au;5Hy:}v&1Vvz4_K0d)s#CCȼN!Rtqn9 8@b t6 LpDS0trUO5Nʐi8;?6,a8 aC 0 (F0]Һ;+cl 2I0M(G'x,(c$gY3+U% rRd Da1,6OFl ITx2rA=]<ݜwW;=9aʩXiF{ѷ#]k#anͫܮ6::ٶCӅrUeQQ)crNH$(9"FjeO{Ǚ(K8yđaY6 #Q/m$sHPoоҨaKsɸ%1'u/9_&ᆑJT|mB?+O4?O:ldk J܂TC'CffnH"0R`K&D%䓲^bB㑟(<0Ʋ0v#DD@OuLO g;0y=! H𢉇w ;LSi`\ᥖLawHHDPa?ANC:*X>{ĉaSE| z␱g\ XţSѧRi_-tQ$^ޟ.Gw1-loW1ܴSgpfNVSŧ8Uhqm NVg9Ay1L 223"HbƄHt FJE8*7n'J }56PFKD"T32R;fm@o^4{iRʖΰs㐛.")Y2+4K#*df,Ew.;bif48R9f_:>{^7T8$("M1N`RfK<S}52#8^#pHgV=)~I'v>q:)3t8LJG Er6hѣ'gGgc AeYɅvlft>’pM̃2dymtt]@K&tHZ)L%(FӟMc%{~A '!PP/~}_֘[-[6iBwS%+b-KY0IItޗǖ(%F{!=Ay! ʽ X 4vJDG"?)J5fOPdʈ挬$AXIGrzRur3k?sgoޚpDe$>c4/ ϕIH0 yI謞cn8+%Hp1BBE./kfA^!0#vIOsJ< ٕ JeQS"^(+h&1L(șO EeV߲EbgPB" V18.G q@>]= 2U|̵|4o!I,fR@?}eh?K_=Z2 2i2L)H1nuT8RAIm"嶐g*"tm°e+'lR!eS;]XIq^m QILO̤ ;7ij*&رXJ$"<{('8*)0L@p̌[J3S2,`$/&cm̚ Mi Ck)>SKC4m.~ݶԩFY!Oҗ>8?$}VG4^hU:cڟٱx=hGi:Yq-CoW;Z9ig&jx G o4\sS.(eTN(Ix(;*.E@$~_|QUnjw5qV7Un&!%"UghANX VOƾ)YAM 6/q<8p%Y/s35?{mۺ~>uW1haL0ɅlVY}sۆ6,?Tp2 -xg$4%hV "a. ƎpH)TJR#dPd1USSfއC1<\dD28fT-fbV3Y3bq\U֘iR$>s%tb=؀׊a+:0xu JT1SaXYwо_Z.cF?G| { kʛ|DOEo_5A (huwvmj/ϛk3Z@%:̘'S9pnhn曅u(Il=?Jv>Sx{+{AV:on8|Ѳך7$-*Y}}O.0,'Y`Qdysնڭ{6xVM=srOgo7@"i8-;OPe) E SKy74[NB_r-c+W+,fVDh+5b .vJη1!Z?\xݑa:+B@:<_뼡-3^ӫtWfffo'\v.s˓Ξ(˭Fc5Yx ,)>o/_C>S]feb ;tN*%ˇ[UBVW\ !( $1vEIo a#\Q5Y:/ sW!׫>Z=Viv~oT[=XN&Db( q!ƙw90nʯYP϶ϴsv6z|d]6LNªnuN˵UɗVd 2j5d[zGu ?˙iL5UJ^t?_i=i>=9(bK^"noB(_?'ÄGȘ^ScWf0)|&" TCAqѯFx Lq5+U0GPY źM]PZ)zǯ$ClL#[:l`2 2:Ԥ&˸iK@bq,6re#߅kzP6 xc? Ax? O[䇔XىeaCFt/>’ѭhGÉ{.K;O" "W_΃tPT=;a *K( Tχ* 9ML}Sϙ$ Hnn[\ܳgUVhMb$bo-SZ?tY ˷)*j PP+tcHDLB&~j"%Nv'-O$tD fffx_FżT#eQfj tFKs̟6߷W1_ởt"l#a-MsO|ZYv*/F^[-4EUVcEA]HpW ™Ύ'2>HA4P}_Z{0e)sHLR#l.6;)\ށ(`Vnti⩓;EBiVIWWyr_K)cVKUNX ;a[e-ڐc!RNTRCgtx,9*W>9eu%O5,BϪ矀?q&ڼzw"&sbKA`MsAoyڇ\qHdbFTpvnq|_Mj8Dkir7:SLi20 Üc#5ND)0/NQbCMZmGKwa %ąa9YB 6Il$\ds8 P6XqȄ ՎZhS1Í^`X|7D-]#Ljmu1˻N#)m!ڲ'd,Ŧ!B8:2+ėy"%l9G5"_f߇ (NLR+7P\\*Imå=;^a߸#l8Z(TOSkޡ/B0\k{LIX:f*ϕ AO5.C)Kٞa^cζv^`AJrb v#xPI)KdUk7X0]lN{T{ U5T}5[Ą? hY>=%Fab ߣcNn< tt8˟zو;!b%-,oE-1^g;$5J LQֽml9)f1,ݦU% M|tq;+(번NLytYY_ԁvq8W_Y]$Az d}IUlZZ<=|e=Pf^$(XoؾTC4~uhiF]c> blWC|oJ3X"kQ˨(PhgvreruGn6'S?V FXebI,lX#E*B \\je$l:W&KqČΘDFSQ,DR ˄ЂCS7mۉCC"!VtyK+Vۋ@%(#]uZ+ cDDQB0\dnR[ۣbɽnQ"At <$%ȸY(KQ6/J!z3^2}&JEgeDP}#F`LֆiMz)Q"(`Y(\9f+kXi]!]؏jEif11Վ6[KC_h)z7]H3 S>2o(2oGc5Œ @l7ÏNKg2h2uv!zE#ˋ:b0FDCIPuPb—B‘6XC@S$nK;sR,DSTR"`ٶTx^>ԣدt4bK)SY=೵«-|c9d=má 1M1{'YGP*.;NS5=ڠ#*AIƘ\He"0Zx}/dC)$9}#+ @(VP,l#4,?`3!oSJ"! 8kDe7o.+"9WZ*+LiWX G opy{ &1&<9ےLƄP7$2zxQ?8^9nD'2Ų=Z)-OIN3>Uq\ȥT; !!@ʅ_34,6 w=jrVJ(-?mͽ1@=Bܐ80xrw8یfdS9IaeTI͉6cO£uySҏ:W1oE'piP#4i1 K׈9L7 +o ч4gYcyz1nC>=${щ<1{n $e G }!|^{^ ".8ӷm^r*q| ;!η#M6%d1V3J,9U=!A@C~=/Ə^T~7ul"s] PxČi" +2 t%\\?\D,[蚬N M*bbBSB5D=*4`P92(;g[u"=B{Q"h&{ɒe/=X9CLpDGaΰs4sH*'^"&T;T¤];WTzMDלDiUNLLT?ӛUV;'=9|>tJF=^9#}K<4R>2Ȟ?8E#rC m͹)!Ty:Wz> pLM4 ̒zcזS# rē´2y&P~@h`D!ȉ) qDK2.9RTnda;w ak߳ B*vJ8CkO{;H`IK$hF`g* Cfݪthss:a0@⾏b I~$ Vcyd$9jcӱ>n$Xt'0|ēB80'{*Yv pYa u|b>bL{X@X!R7v0ITI8a`'h ZF 4 !]CCƙQgnc4~9>,淐H4[m壛Y yf;05ƣ=F΍8.p@Ǩk aqTq'HY,сXP=8''ĔOqBrI';}c"q#gӎ3CpY4=K @}Gp:ُ#~{,AMgܵ|maa 淊yMFڌx'B1!FJE< va &ՍȚF"[6!4foo/)MI(?[&OVd<|ԟ1nP?(sCrv)%2 ?icdTDJ!3+MN^GUb*GeLWj8#Eo*i=RQ$ Bq Ą#K9f!O|8m2$6VN^bAN!;sSAvc& I8esb0PY+'Ab  ' S8 LІ۴3Qp E>Q$!Eh3uÍ8JIbumǃ {TH`G.X 6 4d Մ c=F I6˜ۗbvvc-TQm9%$&I'&G)4Ts$;NI7TGԨyz|֦?[ޘvplN$d'Xtm6jnnqڜǞ[97'9ɡy<{y{jvV*5bfIQ㤒$la@9|U;=M7CxPgғ6YƉl2*WY<1쇬CP(/Yj]Ec>n=&46D#<0%y$2P`{UTp!Tn$TM+*ܟ[1I>×2dtomW=6lOb!y1dT>t* zwUe: =M`s82wBG0x/48)y`Ҧ+oRWFFĄ(H`R,{a#&HtM$&"b CKևI@( "6a0A*a͚4ѣ5{FSeT,{?[$CEX(m1|~ǚ=bTU$s>b~1+GȄ?A(!A<)-_r$|C8; XЂO}&ˌ*bF=a'sA!9 Ip(J"Jszidi6(~Ou:(0ݹ| ԪYivF4d!#$NJbnXՌ8hp3:2`CМH%t#`Tf1=ޖ]Zq/y67## >H,2"%L~EYj+#t?{x#SF%  CgI᱑~nϕY}U<?E^YseHh,[fljK%R#`aq+vd,*Yd<^_QPɹqhz1pylzḦd%(;#)! SD$ad:z(8B.Qa?$A=רŖ"œcwZܒuA#$ɌA^ɦdlG7hux⛢# .!E)JtO@kex6fv4{ W!OBr%RdM?t!Lޟ4@$/E%}Dߊz o4 ca*I=Im^JƍLI6ȝdyͷN~p˙Sm1<޼GȬLR;),֍}15aKɑ8%HL==I;'ɭ?$tı (6B蕂p2D /PKvx8Naa IK=򘰐HpVP3У4TJU(o^MY24uy}w˯/ ځH-$ۉ$?$} J_okQ,`*'E'`Ɉy6`{ONOs>OiX` Xz#Ș@d bz{䐼dvd*GYG*1Hg4 QlDn>| &2*C5IGƜ@0CJOl(K wk/w =)):pf; L(abSN1lQe(a&2>" =ͽ<٬q)N'^t@j8HCI2b;D4LHbO|;R Xe1م42 x\KEyGC# cڏ  `$dn~8 x*sP'_4v #824&!3ȉ 4)G/w>gF5ÚTL'I.#%D'8Ip @Ipd!f죰=\DnV,>-Yv 5hdTdWԯE{@uSyWz1%"fДБ!%'fafzMUUvm0D%HRp`^˔{⎧${:IlwI6N4aYB̓M&On5&H]"}d $4'e&fBCLq+r "YT?"K?OΟZ'*0^FΜ0P`h˶5n2_~u:WR0蹶ۚU7CA E}pGaӴ|RC@҂?3܎RJar!TWw~"AD‘(èKh9d+0EB~q'I>~8u`(/G om~&X{X*jdL^3~Y̜q#0Vaѭ4QI&z~-i̓+nY_P|Y`"\0D1?BHaFa }𾏇U`G!T:;_g6bU~F1K9Q1*i@ߺz"&g:f1-=F3c13c/JR)JRf1cf1gj;챠sb06^!VU+ hI9Θhn![E  >!SlC$bA; /;c]IRULhIUEC"'e4fwDrBNԈGo>@cԘv4* v$y'wBOrH$wJ#=7ǶbЉ1-G"^bo[դGSRZIH%>l}#g2i0EO8X>T P1pÂ~2GO #爈(_$V^-i1 Z^yal[強Man#HsrEgfmثJHB@Jl8J@c0 01^kCYY~~Ze`BUE %xُ'}~}miI(=E C(6A'ܿ+N[byy+""W=[g5968EKn)ܮ8;IrVG_GJZ4#qrU#p" >B^2DQ j$hEC @0y'>H&,8r)KWJ"1UT8Ĥ甍hNb{𦍦c"ant4;6v&):LLC%NtW4}J<*"GI;2Ephm.&&1YGDSEFYXԥmwY>JSWMLQL+0CY$c JDDm@">;Jp q>ۄzm]qdg*uoLؙIC&2ͳ~~c]jpqijj¬Kc⯤WyjpgDLN2d*gYl0VHAc!}H_QcmS}BGyLe_ 45NTrq"6qVzeY4>Fs?Dܛ$'@wTa;*p@9{!MtF!8xɋe•';TI=<6~xz;1NFX#Ddf!JeT~M$Nr;Y=D4T@$wUSC^{aG7WKf ϳԒ8*p0۲v"yC˗*~BtarcVvR9DOlyZiS4(>R|s)OyXfғJ0HI2L6}N!M~ݙ vL?cSVI|Æ7OȞIbDrTM:7"<nǡÎ.$cLw;Ŕ~w 8M6ޏ|=Sى1 TPV2Sc~YmXVH@B P(E T$WteJPF$F8J2$Qe eI]8`! J#) CcU9;fZ<V$5 I`#.QFUSd JJFCC@Cc#Gp~mͱIIGTdc#جvY<*- ,KBY4u(0?7͇0wC p1yrA57'IVE" p6>9!oibFH{|ҷ`?Ӱu}n{x{oog LO~1ҠACB!Wp{;4IbY2+Ѧ,7—$6UIjZ|\84mٓM+ڍJvsF_}i~TMrqBiF$Ok{S|BÕ)4U)JwNu xzD`Vp  @W0(@P  j9D,)"g1Il&$\1|ɍQQ)#DAxK?9TUH cLTYM#}f"c?4$lJB&UCP,y?9r2?Vm_b('Kt:?)vOjb%}^gκMy@S ?A_|;AʑCKcс$Z/_YA!kmLMiIw;Fq9OܒN:a C'~EWf)D_"!)G^ױ|;C⟘T,U*|d!4NI/{rsn'̞ < Se*󬴥 Ԡ94Wܐ7l/Ȉ$t :EPmC{|=>c=hD" 1 D `9ӭ p8! Ss3GbD%`9|%{Gs*UUYtOy4b/EA4mp]>P0aA0 R >#;]4ɍib̺oXHB?/=|;Nv1Զ&.&X?򬩰 lC~o?|5as'Y}?$4>|g(S%|c*\{k<6:7(ٵ6H8ZV c`"Pb7 Y$)ܩ>}u{S}簩?!y1p{q˻oLkxR}HwAUeT)x5ip\Bx]UK7=P@lqdG>vNn'VetHAA_X b*>lj_~K䞷AVMR[MJZT'lsZgrJ1KR0Jߐ;O0dSv{ <CPhQEGOm'Dt2IO`F2$XQmU4M+Fhs$8:*Ŵr6>qdE?3Ti,z%GxvY'Gb'G/5yyN''?m~ruMƝ_(vY.]aNóIDrEy:}2c/1߬fG'OGeڌ1y >0FzGҬ28UtaZ7#FU{UUjGItOP$xN"zϛ'!cc"t!h=pd!)Ұb=j~AxD3LP.NL*kt}S)I_)JR o9/ֵkZֵk5kZַ|JTᒬ#YeSZYVթJRLUk˕p 0 'ZkZֵkJRFLDb GҒk<%e~ J 1]ȡCņį 3P&ā/$R A% i >}OlCJ8ABW4> q>C'މ$? 8J &+>qC?$ߘ8'#PʪS??2~eA#]a{M)c JduOzt)~4}$HIzLC=,d>t>Fi8cq䄄x#9;Z>΂twe<) 蚕l" $s*͘fɓ^3 2=QY̻ up0˜v,6*z :Yb(&sr Pn y'~TYO>Lܥ**:#t11=!?RpM#p~CΣY:;JʧUrCCT>?;و:h8h4BdCwyqJ;>#WwZ U7K,%s߶+rqxyò0O3+,cV(iGR'ܩ I9(=ڙ$O!PiHGA4&>tF/e5+2 ~aVO%Bő>8S06%!>xFHw6pw`{5v!80C Wk 2ZLS "'T`& y LCBt'vf yEl~7X$Pq1S`7w`C|9T~؜?iw{G󟈞e_Y=EO4z1Xc2ڇ'O8 O'yIԞsrvMoѡ/|H #{?I8jm>ɤnX>?6!֡,,rv{Īi^U?˗ϾT~Dxϴ)Ƙb|0N?[Xpk$M8̎#qAPRU 8,YAՇs \(EPÿ(@}Ԫm#z<Q1&qGzM!aU8|U^Nʧj]cfeȸ夘ݷ!9S}γh:gZ۪HT)wt{v|gĒK{hD)4|؟·ܱ1v4)ͱp >I<}\"?ĘTb>;sD;A )I $Rc*/όy#I#-&i2O):U*ijUsI$N<OLsήX² jتUIWvեhp$kJ.4a{ pIޝhҺaVdț2@X $|#鞆N TrF EttPt/BLmD*4'FN}O_b+>)6wp<wxmwWIav${N3QG,;}/~;ecM1t]it8q#,s`cLS <Nŕ+,?0i@)}!8)h`. mQ&ևu|::7v$)-GT|~t|&?Cj[ckm4j#nM9i?_UvLc!>H,l~KU)i̜--UJq0U+JIYS>a=$H8w8ƍ$I$fo&ZG=Y>&8[ec n^80?r:0i3B\@ƐF蕞&6!1HѢ?}9؉D&i~%k1oʜgm9- 8f,Iz0v $I>6%RdupRHL_MdI.R IODU\&-ĎͅxhHYUe|kxGC”U)``&b:=X|ðbXS|q>(q#">l'/['c8U5ԬK2Q[c,p.Y xN%"kC 0,݉ *& M h-w[>eG䵚֋ t9c>>YTn'mȅ*t\.5Uh[lkQq~aOT;˶piE|b>F<\_'?M:ifVo٫P`,u#Jc( VD=mvI7;юB":jb!(~zKZI"ioN:Y8oKt("ݻ30CBlmH+Zz_1QIu9DJ~[̶ooZI& m^8^;U@-"a(!q;` 4 x^>'V*$Xaq }Ӱ>8\{`>-71 -X'd> F"$&#OOC:Q  L *`#W ~d=3|Ѷ2>{ЃyB4l e!ԀO!6Ih?=@>`4c10r.0܌tsK[c5E7Sma0I> FM`躨0`aAw3߹BSKl$4pI'Z$d QJ41N CA!;L@X<1rƙ\G CR@r =n4eխ1n ziH $S`Ƥ2#B&K":6pMvCy" H-HxGEUSr Ц4GET_Jd3Fk m4z5ݳ=iKP,`jęSVӖ MىfC G&i3mtTUtHy,) ~S'q$xw 'Ƌ1'O$9--qĚ%Y'|2mtcq#{$dhPF8rooq屽lro^Ma!DnΞ=S xVcх&KQU|'DaNضR!0]>Mnl䙣Xo@\Xys] &,DdCODfñ&K-2Q" 6#XY4Hȉ[,$B& M |^AD} 'l;Bvȩ7}Q!>p:Sni.ےlc&'ɈgȚ(YdULo#isSDO}{-ni&h[ 2&$*Bd4DNOt?ɆL٪DVvtiG:RO.@*"er6I8DDX- 9,>TO y- @H?p8g?)5TlZR:>4G+1C$1C\;P,0v(T@ōa#.3xa:Ɇ8W?w5jFҩ0( *A"Dm>rz_LD4$1GN@'I;%э2M4dኦ[*L8&$<|aM4VgĆiIDLgf9Y&#J$I ȏ>thw=B@.SIP CdF ?!e y@= {{j]ex}i8i!-T& Gr7Ë …l E @T%,5R0dޔe5*rbg ZFF%2n9'>| Cɏnqۅ1>a"hp_k0wd - XٌdRRFH0i$q;ѾIdD$p*De,*ڳju,bHOt_χqrca^BA‚Hi?2_4{sF(ܿ(, h(i)G~#M' LW8HӢdI״ޝs}9%溚|yD`V 񏫟Ev?\>ʿ./G AD^]ߘxa6DTW0%Xlc$iX:( ̔G"'S FHUUB,h5 , vqc A%RS<2i#|'1X 40V ٣&̖ "AvU;L$#Ud)ΜJXYrO:Д&9v?U&*zMiĈN4&#ɦ[6݄[lSUY=a-JXbL):u8fy/ll2)1-LimLXS"+Nɢ%vI] =)mBF{~ׁw~z-%(Ƥ@ߓ {3;ܡ n1z9ٴ.UGĖ+Nq!%2فB,RIH8gM4iGY*#qj ItT* D>'~.Ѹ1b#u߾_;$=~~ύvlWn}׸ZpyL.ĝR)M-}lǭZ;c翿O$nԸH}h<6_H:y\|My+WK4g N@:߹LHiR,zL(>&ODҒEED8XC  "MLd JL :fYZWC) Na)P@C,XY 5%fmk ҉eBě[~QJq ~?,'b_c= SR镟Et&4^{Dɡff?ā7 <x>:Y 9mg.vnܒI%}?t!,Z8D ']yuVYV=%E ' O9'LĂ/YETBA+y8*GhĐBpJ)W^wӭs3IF0ApVx /"a|dCR&?>NRUl,Z"&63os9wnIXXXF''w~%:9rmhMΖ'm$ɿu㛗'ɽ *M%Q b 08jazg-= y nn-m;{ϏgǟI$i,6堲փ R'6wYeO@wxL2D'0 v>ԉJa}7.Vp?584+,ςG' {s'$E~|p㛛#ZHnj^%H#&,nƕ\sI9Ú}7=4ɜܓtyw}󣣮[uZ9!4%M*V 3Nl X)O>凶j,k0+rb8Sx:Y&%svUM.Y'3G6ieoY6F:'O[k}]:8JX8n8mXL4K͜L[fě 3 c$nJY[emJޚ'8{l;hevhA5Kd4Y)T^3|GEhVQ,RbtFw}݋k6&yLZd5NC\bĪ,ARbE%b6ÅD2%YK4j#O7V|9O$')g(`>Q .1txi QUDdIa?$7:) % ~) BjFD`Uvزj|"{DY #aTZ*RiмNϺmչd(ZPx'jBmR`7MpM <$ࢷ j(J/vS )+q"I/ =N_[Ւ{㦡qwS;X r…>:ٍ {MMm3ٲ١#s/v};(K!È~7T\(Y"CU;1=xm`>bހJwސ>s)}ZPK^ nb`(C=]֌;)N3& SP\dch2LLDJnF'S}QNY$Y#n=:SOt#u>yQ5KJ &S%Hyw?ɂ #ۂ7ϤE,Ik*Ib+aA CiNή:NՍ10u(m<;*ʹrzGqjAj s pQپgFrhtIlTl᝾Nێ{](]CK0$ B,.3G6xga^nq2C4P'G 6 (9 \ y['eZbjW^d5AַJ.xs! M"QG (<MbV+&4vuf^yH. @Q@4eqQ85EDEDLw?Z*Bјnǻ0( v4-+@!ǡ=:u;; (ه_v>/ӣД1UZuۤdy^+F@B\/eH܎7"\tJ&#URHu3`O"R*Cdh\5! ڑ P̮nj1؝:t95'wE&άaYZ0 ud^$\sۻDvcmTls$EAEzCA"# T%6B a{=:q᎘ Y;͐;{ȂvIž:3Da:{$M,5=HT4ePhc$RȒI^E於{6QP#ΨM `d#VUCUieXiR!$җ(sZ,)â=4Q#BH P. V_NաMyllȭ)5 1!h8䄖T$@lFN jT;0rvxtEYb<2a=#,B׎C!tP3=BÆH$㾤 #=kr; ܎3\p{=V8X:#d4 `Ag!:H!T'bAÉ$FH9kc+wI:+s*-꣕Guq*QjWӡɓtFXv>N=8F o\R CŎ3k<ݺO;^!cgQCNH\/O\ݏGG5g^(D> 1^(4vg\da¨TI'aF(v]O3:ILtߥ'{!H‡l 6 {SQ՜76}цsz6iENaȖ31Q&A 0@$ܘr EL'qv&.$a1p%ɕpHl ٵ2& 3DV.d֠l֊ 0͟{-acRY(\`^\x.sNč[8Y,س4жDͦےMIB7c9o?w w*s;}DJZSUd! 0=e;th^P?$)R"0mP+%=@+[f)'m$;m I7 !>$$"HHD:-E;†p$X+]8Kي,A3Ѯ:4o1A?C\qUY!Šf]p`Xd. 5"aHɑJ5D$힀WTLzMtm]QAb 4C!jO=zDH&yQCOdrA# kM(NFqX)$ UA =jm tzhaﰣ`mmJ )VȘP @ a}rXoQ-%g ɲK>ô:i/`Vtyy8dIlM$ @a@NHi4ǘ7c63ֈBH+u̧k/ ;uf$j|(`R6&PԒPHfy)faEO|,idz-+i`0c$E.S:7 kՊGx{:QNѝkQwL-z@ůgla(rabI 0u,g&K =vlސH8x4?iP:xzQǡN1BKK{9@pz]Y">E;)M͝hy'y]vr[a+YT"~ς3UAQ VrFh4q?)V5&&i&ʛ{C8|Υ,*BCSPxO 9HRbז%M ؅]q;U2"iĨ@ O#kӥKv4zLJ`>\abBL"C 04iؖ T<`; *[o߅ܡ:7U h%J%"&RC^\'- &`T x,HHtƩL0}$IN[--HP }w<s Q)+TY:54s3 Wu-38kVUڦQŚ6ڷXvjgr"8#VO=U(( "[f Ȼ:/y! 3 xic˥'Tp2Xcra"dx&ꝄqcA4(GGB!El?ZTQjǀ>ϪlhgT:;}aȉKTHNu;|8ii>֟/{"] 6U6*FV58Xn4aҫ4Ӫf#UDiMeI#@6<#\\52IPFH$G- xQKMgcb,k&$pTlM򇀞yPܢL(LwJȥUTM%4r< 0/1G{CƤ`wwH>DmV NJr!aS`Wz":aaf/lj쪲UܔJQ!p,e'bhBLLxRԕbҴb;MSGӽws1pMZj7 .?%/Vd f8qnH "1i9(HHmD P@֔ B%=Lr 6tr4*C3Յ\5ֹ (#Hv2I9L,m[]$ѐ%`HlG1R P(<ƹ/]hX,GG{:TqTsҳG^/ <Lb]׭fa# NGY ȑC]1$ xA"Q.c PQ*vUbT&g9᪕dJ{ 1 A74핶97-lqʻ؎uWVZEc7\Pb~*Ko{ IPPRl섰U!- ITpv웒`V$I)G2/151"b1 xau9r'kQ`C󖓙xV1 Rk׭GbUdhr|C H4zIK$\ 0(JPA]KTrhLnZ*:)^LpM)XǥqךF2' 1ec=*8ԅQEITB̓q| =hT$ Oz*c!:GVZN"~+t Hk,"|;b}%NYI-"f&iml+ Bz> C`P`]f \ubb# X۫2#$0Bd0tN3d2Jsϒh Gf4!J4K!vHQŚMhE5%9&D33# b`J$AKl7ô2m6ɒJrŔ #}JD(Km 2=!.A5⚍kYq^ɭ#MFt K$~dDd}6qV̛1+¿aQ!VX\ce7 7rtF9$mlg!-1-g'icBO8i $$rNNn2A,[2LM84;VVۤsl, Ib!ڬ/`2fNaV+ ۜu~ϡn=}>+aAgqdg%F#|7btK_KO"@%zU&OfeJPY,,N%2Q[s$$dx6gLn%Lnoc#m<2&oVeݞYfPaa9qkn}4,$ ]f ̌0ߞʖV+TWLM= Tgmfb!(&Js(x`'iUdKuCV ilH-ͨI2ďǾ=Ϭ^FRш@S hĶ0dtLlB9GfF.0"1(uºW8m%:*Xz79 w:#!B T0^68{PD5; 9QbO޾ٽ[IdLtU1`8p*Zg$]y> JV1O;gwlE2w|d}=w>i@g*>2DX UJRh-EkQm#6LaEYls~IE |~tiP_'Lol7L`mv#Is/Ҡ~[x$EÒ^>cPm$MC$2$%Ix`Z z諢#%jMCGNy,nRoj_~jhMM:e,k$3,D9Ʌ޴D$# { N0^JDw;jAqPܑh2WJQrʥ^ωQfzF*khҦ4p_?5'PpfHR[gOҟ&yk-hYd䰥8X\8pYHO3/*!DG{b ċ'1>nIFxM* Ffەv|^oIØpVY$z}2!+BaSr,WOޝ;k=N =0 $̠e4S#Lj %O0lh ㏻5T|Q:ÆLŷP 0dRlY_jng$I[n "4SƩAdBKs p7C p8d[MNP∢L3=NJH*B(lh=E-\$O?!̻>˙ ܗ_8P?M 8ʠβSY#kYF ğy؟\R be=k7C"gm3Ka 0l qwLqƆKx<E8J&t=0{7jy ,lt-̢ɥ&"hYd̪Z"vɞ*tu'+%0!5fYe@ F @T;y'!Nw-mMۡӖvݟG{% ê,L}3igͤMLM HNb=lXYr+n&ڙ噌cp>"l>Bza0ֺC|Pb-'?,D$ "JCxdX)QsOj~D* X}MC?lf?A^/g!`@Ҏc3:KSoemV8/םE~U6cu+=4yɅ^0"SfLA% eA$(tp~z㽱R yO $=u: eSrC J+(M*NeBN`Kc&N)$O$aǮu.q9={x9yuW-q6l֚FM q:t,+X +m?ʱ%QboKHHE%j  81Xgxm'UHNFByA2GT8kU ˰oY~p!_}S~3nY)# K- 's,GA !D)#{l~,Yg 2TN$cg0SԐWV?fof`cC#4iW&xE69=p v%EI&J, mC1 #`RP;GHlC4t[̇ !L$! (Ï|C)zW@+mlQE?P?Z_gDH$XK R% W*D!m$&jmb[f$IdCD?57;$M6CVVb6X9dY[HjEljj󻦷;d!X[M6kI5mmgi-m-"0|N O/3)U  Ċ^}#(>B?`O:c?j|Q P(r7#0?: E+K$- h/;ACE (0M-!&In,6Q!-DZșf-6Xh0قԬDS,fh{9lIdlh-6$-+4R-a)Qe&B$6،k5#VBY!ab10DZ )AiFʉ7bCr afDbD>, 0>u06uݨ(VEb1w~md?q%,U[=p)\8ֿ/>N })/䎓H&D?o>)gWqӆMqXfʍ d˨~<ԛUU8,[+69fY6HH;!iSJQL#0LᴖF Wna'4W+ͮ"6dhN$J7 Ӣ?BqI#Ol&t,;Yo%$5CA)#֠`a<ǣ@ q3 5 h \7PDɓzV UXq9TU+ەK%QYHTՒ5d`oLX1}4T P6c nIi1)lz48fD2ml Ybۛ<"#wpƮYN?7o-&dM&m~&H9VjKRdE-VdY6lvhjB&LEmYlcmA0 lJgJ`!J_y"DCD/QE&qĴ[nsbYa'M+KYͥMfiӵsqą DDAy3%vjH֒|ߑ|8VHud9CtF J?+:11!ӿmTaū&*1r)sI!(8HF> "v,Gڻ>vt$dzxjeco:D1J H;2ɭVWaA+vKn4nN??w|S-7r7b1`HQ/orwi!bmF0 &@Hhp4'DLI7<$@~PaS,n¦IQڳCJA !cC{+ 94+K&֡GB(kP6ha5MA)22XW)RF݉R6i#]I$D.ls,ykK4⸊b`p&3GA2O~5>c7 %O; 2rEW7+JW6#elҳpvIXtNT%9 >aS,'7"ʷ'Xk.1@fT5")Xm}[%MTgطՑY\g:Օ aIiH9PbjĿvgɦ64~(;ro.1s9)v$ O"|Ė !S2_ʌA!_Tg=b M?7#'TLQ7dQLE͜ J- &){rݴ̿G=T'\OTfeS pjDR.cZHZhK;mLfYo,u?o] / zUGv@"RbӔX%K70bdQBm.p q+S˜ćB'?Ԇ٠44#JB{LE>|b  7"ַ])64ZCCAB.7vm6R3'G3q`ܑ2M8:Z4k9"HIߏlf4)iq`ZISJJN1LXhhrC΄ڱa8Lf |P|~P%=G.{I"fxByAjF1o6{I+_Z%K9Zr]<$FIA,C=<{L^a!VREt(t:L#0DAP}Xgסղ -2ɅQr(˺dɺ!mZРC0FU@Z6^ajAAq,e= %5# LK aQ$3jX> i$=~o6|~Xz|lhL2b1$ҥ> H)''驒*jJǤGtN LAqi׉ZZGdSB D"`I`S!ЪTQDDZeh)sd-lÍp]ɦ7*k jUwzY[˽2jkhMʡc}53s"h4bpҹ v$˦2m#E.f,Lot(RJLhD'JUIСR<[8\ruvt,9ėrv-l'-=<5'e•aX$a,;F0V:k.I]Tnɥbf,ɬi1NqŠE jd67JL14;y춹b:g^I!7vngqML{mkZZZ] !(/p2!t-~h9e24"onBM".[;K/WX_PzE-juZYv +8c+$A9'KGL "51щ_.jwnD20N$P??{bՒ,Xbkɩԋ³d6<`7tBoor:zzsƗ,9=̲qƆ11"APPb_*Q48CȦøO@h# KZ4}hD]Zn9H'֡6H}NBBaz4$.OmXU p,mZ,N#CNX1`q16{Y"G+9Q7bMES\ ]3Ab#[!/ |i4>'qf? R,M6HMz"bN"(,F :qكN>ghspfXdjZPK6~{C4[+%%%YkLՔ$5Pą"LHC- BL 2L*c~\geNyŧ$nfuLVi[ 0& 馓i佼Ͷ'nHq_E;:"l>.oc?sd)VGA,fc3#KmàŬk8TڎŁ.orCvc i?{~nƚNxR4Q HՔftKg9j2 N? dCJzZ _?mfK- ٵlť &D l&YP)F`"JPfV+1!mamdv:tȟ'3egS9D4wi1w;vY#"c)ԋ0Y[hȶT( @E,]*&ļgm]^ &1ELŝu J(Ye"`dd95{䒞92T!8a +VV9lZo;~̧ۙsql IK%%ZPng.\#Z&̂KfՉyh7XFܛmݡ}LDƟg;fPJU\um>k!Ԓ&>,4'kaXD}r Kے,0<48`8" aޜsqϋ7iy(V$fki&v2 >|MamljUaa:hYxI I"8"F$&Ć*T$!,Kc#d!dtQQۊli9HuwpO-'_ϗ?{핑VqeUP8ٌnyZK$ q|.Zxgg)M-Q[8tְ9HݥLrsum!qS ׁTY sʘ`U"H0ؓX(S6,YmFKmkK$[>c[epk KFTFtRܳ}im-؍&YifY6>&rò0S2Pš:|k$"є,bJ >=CN^$YѶ'Oc"Y!2>3u~BU0OӈaQ|n'MRsdC kpFST1ńE'[uY,jF,R!yPnjP l 40ESI[QU$觿gsm9Ǔؖ1&fIEX4KnoSR;&U :xơ>.NÒnK`{y(qWBu 4$ Jgbη+PnN(dg紖u #[B&f>O20V1!+;fM6Z`AD>V%Hc?!DbW80;ALat!*`u( 4H B,,apTC A(&QDi"r?'} hՀ`M :k4:D5ӞsOqɦnYZ@l;o5քj"9l lKdEkk7 {kwLDɕsm Җ?/o9̭S1DC>OhD|cEJ*rr0iBT!%dF0%$#MɏzYzAUGv G(Q^VR $ŽhJۈH,H21DIS{ iaZV7'X-K,U&Uv| 12ChB-J,Ǭ1N(wcdGԟh, 4ČXDn"x4"IeYaY& :>:-=K>8vSI"!L`b sczYy58K i9&kj0f\6aOqd kh*nDHg֣L{0i*BeFg-c53-*QlƱz\֟^_nw^e:_[zGMe4d)T}qJ>"ns)w2T̬iFSK0b[tVU*qկVbU*\5vO_v7)x<:"qdO}Ďg.]٦iXe[sr&=Ot2 :ϙyͼy66Y'T:s:j!rNG"N&CCH+ D"P,B@H:WGCʱdZȈSX'̔V]EtY~!'ڢ>$D|7 >YUGaA'yȉW"%-III_U!k $͔$n=$مq:iuRFC%Sܞ1U~,11,cDj.6~A(;+q 8qDC{GDܖuTxYR!iDZ1VIX|W(7HQe1Ť"i e+&IiUX&S8 d#*l҄oHuhXA(/gsݛR>&}gɱM8g8)*FL4&VhJjsnOiV}}C=2a&U;Cp֨]Z2Hw|Nu"D,S*P%%k$(g"U":Ȅ \YJ 쨞JAKm9?,dn-&1ֺZzk!+rTc1De7$\QbFCDz:csm?%&|g" 8H& mIdd NHƉ:dˀyR\!1h7❘Cm,QҊ>>`P0MR5lkpq>ҹOEEKH;~@7)g5S.fI5jr풖ij%MioNѷV+lkv8)JEm> >kJ;EvPO Vu[$y?y3QPso[d$&ЖƳ%״q>Oxo,>7NC΢ H&H*`L )Le9>5,ZZ$G[7z TB`iZ-%vsbF֍ M:%ˈ]hFC hR9 (fV?wf:J)󸢙M,>q,l{i%vLBx8kb٬pLnjd.w\[/RY-l-3J,[R";riKsUKW'H\np69i֒4:0'M{y=+Mlobs9Y6|hk;[M-~zBhB%6X}9>s[+i,0޴eҚ)ՑaSf661S&ɋ1,}U2Ő|y/N{9FkIsOi};ǛZe;㓞sԭqmMy0:3 )cTZ0U]B)yJ a04BAE9HĀĊ(!86&İavͶA yF~&4V~ _)$204끁&'ʸ3=ȉX^;CF_,TT\\ bķc3Y3mk55Zi.' YSWUJ*Q@g#F!$%ʇXp~3+& TJ{^Na=GNQT.9Ń JNl$HW:'XTH   8Ȩ2"P CtɊ3p JDH5Mh!'>UaRDe.P/CU:뉵CtߦK)Q}:6X ^.kW;ťjo6Jo KFsE!mW?'b3O;ycx@9U%"CʓrM")J޵A_ZN K(G3!JE6iH#Ux8\.sUyk#MO*$p $JBY"Ahԧ̇O SqFAMʐHE ~ĚTgordPĈٚL75ClHM$MQmJ"PaE%F`1U@:GD)DHC2`:ބ @DL*X-8UQ7$עXP?R=~>dp|Q HPD tjG#ȟ$'RA]hB!} $$(Y$>"D0F;@&P$E oS(BCŤdƱ--m7lѭNIjۛ刹rٛr>9{|)Ȇ6h"i2Uaݲ9rn(Ig^Y4isٿmGF"Iΐ(1B0<B  ( Sp{]fu7޽wvyݴ)4%88uxOh4M4M4]-eYeYeJ>Ϣܱt mm|W܃ `\Omzm[^5灹f+c.cUMuf(w0@t:;2y|,>vyi\U-G?A- -i+JJbĕ$+IM%J+JIY$?Yi/a8rqJ%iLC'E$=}ONOkR9i IjmIrQz+Ouye'SnLR?!F-$-ggYqE;6o砆$<{=D#$=uW mt*"|ZoR:ӟr,jTŸSm1dk;G{gǛ:hݷL("B# twm0ᮮ{~f*rÐc:-ps̔(fAfo5vl@d8rH3Z,c 04vR34H٢i($(,TofD͸xs 둥GOO'3L@/r8JF!yo:qFvhoGn( @+2%NZ D5A20Vcj/E* `4@G%46:S2lDŊ,]BpPL $4 EYeӷ2䚹VhH|1H͞51 Q$}jc}Q<26Yd90J.eNFl*Xˁ{Apu&1-$?~(͔IoQ rJCPHa 8_dfhaMB*h "<&7i1 HUA"FGGe=yh*;eCYXJ˿LsΦ8%!r pGƒfPbDI,6mxm/YZ%Z ;be ʔ$AcX0m@Yd!}R$Tpjؽ0\'ge'e;lK:4%mzE>N\4h`L%H VHp]@2;.(b{9!Xa)ĝUӹզԪ={<79ƍa+9[2r0[3nwKfN*4;J$ʖp 51T ՃYR(b $Zhb;iUX16ƚmqۆ^q&g F;L5d $%\9mM+UnnCЭ_{O5ْɓbiH´b4[%{ؖT1$Fm%113С3 W0bےءA :FfkAE :$e{TYe?I|Amp@la~GGfy{[n*AQR[N~Q{W27ʵ8ƈl0QO^^\4\ZTT5.2(LmZo:&;i+LkgOdJ y<9H(nrs|<6PEE51 pI%[d 6L$~TSM8!XŘVIdIk#V£;%t}?:B]yB@4ʃ]]i  ; $l$gQ?NHދ6AΆRA8%%nS>Zihڱ]쪭pjΟF43a!DI$A,1X1tE&&{֨hG5ـA" A+F кИ[hC7kDmVBx4iEL3Ba vA2` nOz"Q'LmMSEJ/*!jYp3' 0`6HH" b<.ᚨ (RU8 U8"4a6Yfv/<*ΚȬK!2ddInl9$gӶQi33-?m2ml lݛlmf&8vDҋIP櫀<"$Ie`~'KZ$DnI*0Q<LBԇwRY8Ɉx4%ct!ӺBIS@BO(eX2@ЌTxϢ;bZ4d-n;!:4y2HyCaMŠtbNϑ;=vM75$GQ`ΒnDU*4)$xCy=gD#RRP(0=n'_xW^^tЦH {FͿ(:a!0xnp"H1w-8k Men#pIәb"d*r2mE@!@C&S&%R A&޴/.1h<8#VMa*Qra(C= Z!JvDY{ǃ2/MGX~1am\+zUNCdHYI0礷#}2MM"s("4Gth$3 k Sa mf`˚ֲq?DKRbURY,x#Dj $VVCR n!%HWQNpcC ĉ@rF%Hױ+7ѡY5eċK7 syk"MajF\Rn] G2l{x/;EKda 8+cV`C i#FȮҟ]w1$b|>nw !A4%Pt_fRU$=x"iQtD%ݎдX|1 f4g>ɺܴԨU5,w;pUqeɘ0gߣ ME(c^{iyʘd«} 0ѬxVGDJ2:)$xZ0H14SLĘ=$9dCAcOA_DǠA܋gv" s\@{)a"T/.!~W8Fe 8zO|M并H>SYiډ-*SZfm_cP8FP^.1${@C)v30D ! )'Xq;:1ܹ,RįY0zW1c*4@ăVTG$]-*!$MiO;me9,y#=:RM&EcO&5JDJ&c?>}.] b{ylCu}\C}WM4@b>H#`pvz?_6FDd؈lO(!-=IB#U98- bhUliXiX1+`lѠ1N3[Z2s8 T) ІA! f蘕60TVhZMYWhv`lM4Y3vr2 9 )A asl8RlP8rCN vY8pNfѴc*2̫9.!|$Igdvas1,:P p1t飮ڢUj}I0i&4f4HɢR9DR'Vi+>)=3t4`q42KM"PıJ'Z)DeHXL\Ar.кf[0 O&6j充.͆~pԛ 6܄ A8A3A~6r3[%5 dz``ڄa斸\6IY0AB:/+BEBoKA!.tZFBdhq;L2As!1 |"qSk L$,z,)*:|X3DP8\ T_01&&#kNy8:PHƎPQFFZ&BMPS1KZa@QzDJsErd@ʓAAҠkPcX[@+#ȗzGF BP5AT޹80 fb]u?] 'i&Հ1k8eKƺR<.iYvwLc:.|BŽw'G:;NP^1m2Z \ɖ1ye{K3EBR&$+ sQCLTΌ-]b񦽎zxgGHq\QOÂRm0?Crb1 tx9E9xzrk0ضZO",qAμDn빂} Fƍ gZ]}.L] 鍵fW?= 1+HB:!mR)BaŢłŊ=|Xhc*TNi dSHѣ u:1|fJ&ƘqŌ#+[YET1K&5)owX͕ K$Z$ F/3\EwJGpDL! 0Zƒ`SnH+H1iB PD h;X@>  z\nGeo5\cdl$ L53I =NE0UmKĒ1RZ QZ2@Xa\Y2HȰ\ (Ý][9K$XyYF4c:1f5"թ4m0XƓp̒$L;7牤!HYJI2 l丬éʒZ]6^pÒN, `g13!Zâq:R6@QIX2!$ġAuCUnAE:QQVA.1V*.ǓNxq'VJI&LDP7vU6S$ZGon|ݳ'z>/9=۰2飊iVw7,bLlNi\6TH *(Vq 8Zjhܧcbcp${\|X;:2rW[8*Uб42n)fvYumj5*d(-ْb\n+Jӱٽƺ-0c*TxUUK:8ʼnɑ@*F$zHzTEyױ& $Ȩe j6{~:TGji5K$-kR7!ZAcb@4:Y%eEcPs9ha1P0z<|1ZF"1dm>ĩVd&ězvЈgM% 7s @4'PH?^. z?<4-u£³ËE#~鼹2ǐ1ysv!jMK3“YAnF&a1bH}/1&c)4P` ~1BLO*.EfMhz؈3IPyQ4TdtQN!Il(1~XjcUJR%t98'& +j#s*?6viN"m3EE ޿ӳ*n%&1/J1Rpp52S8eɼpf XV)YNZtc6cC֘6I%(0c7X͔+v`Zhoskm:aNU+&Až4Əܜ9"yfIɋXM+jFI*3ߑ98V:$* 0nn"tGb5]&Hp$${$=X0YN=6zO$[mhvf+&&JQHѱ1ų=Dr9:0¥R1 X#̇QHU"֓K] œ\ @J 2GWc?C8:L{Cq3vG4I44D[6KH-liZIeJI)(IJ[ }l1=i`11 Ȅ&$c%e&G|{_@UDA61*62GDYQQK $;Boy͖5|,OO'y f'^eRx+luF NHQF{>o>D8h6%|RڐˈJ oS+J[Lޒ/2DU:4GZP2I`4X +ѣTh hc@1شHN> P\T3,0p1HЮ#ĉRvU&Yl6}-Mm4iݷ Ue[kZJӉE-<{m.sK&%X ڲc>#Y0k}sX_n|ɥJȆEPgNv4M6yX^o>Lmf$s-0": 'J3awTNG%̃2rHdS$$Pfph^sJjicg\eh2lЇb|ntI@BG%G%PVڌvL9lܔb%Q`) !ZV)PgӶ?s/ӧw:S;{' )[iz Ȅh J_9M87zՍ'H'ĥ?oƻ hx74a q y$)Vij?`DA)8KGO!¤VD7ɲBCx#k ']ϮlWʺʎ-WFB2FtORlJRQ줐)6-v&L0-~!TQ3 EYbFA"bC Bchj=Jѫ xAΙr,2F6N\6ӕbqã oIЩV8p dDK ]#L?;BN,XCӲj &,~ZjɅY$Cj^Z@6TrDT;Ovwz xH~'DdL%U>0xS`` %XeM@` &PsH>ӱ4çF.Ҫ 9@ !RPQPn=FфߔiUs&VLX=ě-MG#rW ZHkaOpBW~YbB@S]*KQnFo:(9HHB֓ffH~BO:9.1 HC zKIlօY RX&4iuF' DJL ʄ_/N}s2YbY5,p?{,}AmU`wc LfJUJw) Z0?Sԉj,&M #ėtOXs!q7vw8Y+P?;`~I."rev휋bsE\ۻrUIg-4I"RZFXa1Q&Ks?Ţi$J^NJu;v?܃%zSҥI1A,Y1Sr]&el{BDNPΎ:N Zu-}5$Ʉb-mM8&ZT.Skep UG 22H5"i-dKMi1YCM,Kdh--,KbFh%`f&JM٣&6iQq\t&D_Wz=7wb\b,k3#l4N9~Ȼ2=l"~C';dp a9 vXkXh5"/{TĊR1-*%$ СbR+% +$'C1ѱKDh7r$C!SD#jk!]"G+yi8}SڨLcF SyME2 ("EFRiL,Ѷfk6+i ʑ$аRnm;iL PU$3pE)`6M2]M&Ƞlb$YS,*BJa'A d1;4n,= r TEw:lvhe 5N8Va}>H"1FM.!,lN K -&-J|*EUnXa JF)˪tI"TŚUk2ڸ$fXIp@2 iĔ$$sc]A`4d6j4r$GpMx ӹ!JK<[WFRG }Fx$Z фic 2+kFa ^ J$Y! k8c`]pWZit4\c2䛹أ>$L& (ҶBi8R@4L*s I'XYV蚄,)XNrRq;;XS]Z:WLNQX!^cOTtI# >y#]F QVH*;yDMY.TMf5ۦo}Z۸>|}|P6EC]wWec۟=w݇TnڻQJ|>@ҕ>;h( Sqzy}_.>}O9/zvuV݌y^kn/{;c{#|;][V9=M]kTf zfvcA*h&vYO]^:NMm4.ǠZZُ փK`,tWJ PhHhA ZR#`d%i*AMw (j8 P"+F{EtyZ{x};7^{ڹZFz6[^Á%:w@(=p y-P>jkKc<@P}}><ΎiMti}s5=}N_>zz@O}/{ýxȘi ﷸ}zy}{硗yǶE@{tmZ*4ݾñ}cz`݃.44kI}hk}[P-:;& Me='5)[y=Gyf{ ou}ו=}<}pv׷^y}y{r/$<1fcWKWEۺkmdV:U\Ν:mzrp zTyww{\޽{w>iB"ejNxmqG{w}O;f=+hjќT.<=Z6캴w P]w#i|Kwk*éMWp J] IZ׬c˽k{gjλ ur45gnlزm#)^/ukkHrRoo7auQ4Rw^/}g`XˇCqݗhw5۟O'4u͓DlwfW +3+l p g+]nmҮjFIhaxkd7fe̯fwovfv}i麵ME wGY:ݔ܈}[;Dm:`΃ٜr!EvtNsglր[}ם:{e ^6lvolnb:NP,m)|hz{'9-[kwJ'ftjޯ5Q;u\@צu2V)szƾVGX|WH4 M4@FRxSja5?*BC@Mx'=zC3PhPh@ &M1Q2i= Sɉ)H`ȘHƓ20 #FH4Ge("dzڞOFLmT&jO*m=1SOjji馡z6RS@ &M4`jx2MM7&ihi=M" FCSЌd'4zM2;PQ 57"KsF$F\ᙄ9o,bۦĔtFUۦ3TuDPUhZj7]+5 2mb1E0BB2ɫJ,L-c\ĜclUEdϞ9P~(cD&($( (D)@l(" iF@=/K#ʪMPy %(XbQO$%z~N Ѱ>4Pa;e0AfY?Cr31 xB@]t`A6DLp JQ)SG?ٚݗvz֋zZV9oCㇶ;l)vn຺ٜjgM˚o['iִk񚆬浤Ysjڢ،V' K;87"GB E 4d"0&PϏkREĶ!y{ vc \\8#hcz{hpWx6pͰӑ7.ɷˉcpD娋'Kb[V؜CjZv4b*s3yP 41l F3&L#CNS%nC\G,z] 8IM,A![9xԺ|ǒ=|>5s\cqr8nch;.qO%އ6L!E偊 a$&8< Ha ȹ4 R@s !XQDHJ`!$B`b f(%*HJD( OY !(C$6g GbAPۂ*<b!0KA2" ^ 򹣄Gjƭ 2ty C61.|c>*xdccnzJG! `Bk$LfQ рIXi"bi?tE 9 `Q8 `;L# au0FGxKq88 YdZ L'r?}f q!9Ú~q䟟M34"A@$P@Q10߫?' "X000P٣Fٮ $ӀkPp%* Ȣs"n<nq| q3 eGgľ/aM8 :x)r~Dɒ!p$b1Lbr͔L~ȆN 0f" XD`cPC]H4tĎ?&HrrHږCaya@AۙA*kK {Aa郊+q $37@9G F)q;U_7+oNIq@(1c?S0 0P0b gB@ψb:;7_2F!n슪FL,EZq4pVyw1GKZr'a? d:qcי2GW4& !\Zń!),G]ӽP~|gy=4k1&b0fmH'2ŲɓfcGb%6̵u͆ga?{ClV~I˼F:VN9Zs!lrA9#3D<ˊO? > #;X`Rk.˲T3뵚ߩx|ob_Oi{$He:Zty=Rj>o0kw$jGk6u1da"r*W#G~5Q1nʭ'i8ǥI:!ٛ4!  p1B;&; 9XR@9K(j-/Z &R88 }aV: pC"m8 ϾQb(eLJ&2fD2\~xs|q{us֧Q;ij;!UW{cżFM5qOOr|a.&Xޝ[ps'{L f f ;S&fR22 |^Zwk:bx_ /+?}/G%ƞY Q(|Č}4şO2ћF2;KtC~B q=<)h뭭2.4;If`] &=394T\z\l`NJC)$P@ATPP) g&z64k!BKX sucb0<|ywX~Mj MBùrYe\^a^(_m: /eš$ô$ [Xd1SG G/. 1qk6ZdnC:kkR.L6 TbO '(Yekqd=92| 23¬޶s%JiNdmcᐬ$g6}1Hdr;Oɏn7Wyh}9FW_=sr(!^pfKMŠA/dF, x<ƝՈ̩ !yXifk0ñul;'0Rf ڷ%=L&'@2duM/Τ17L#pԑVІK&0g_QU3'J!ILoR:fo j>r89|NHi@"YA#}mQ24 :@7`n S [?Np1JP lP'kC_9MPV%Ķ3ʐoZzk>~aOە5flM DWd_}[z #b&\{ |k~dDdbcgN:3$`|+J.~F-ezvCŖwZpc66l#a;sgofڟ$u7G̛FzX80ўo_ gǏRjZ4Z̥=wm 5bTь6E.IPF¢YrvfAL_]X(XaF cv ƽ37 ze{s2&R#02s\~k| DD! ~`7H7| Y2{KSHT)sZu{s7cuv;z9÷:-Aa!#@@?&"ZJQL8$<2 wk"!uxyrp_F9!9RJ@vIDFNR3Hȡ4g7ZV90dz}Ȕ<{#q>sfVdSa4vcsBzgDv ʃ($dde4!9c(fwRt0Z|a&JV SƕKMP\`cSn$RU_S=ˌ̄̑m  :B‘iX8]s-|mh9 ёPX<&=d4;\4 r 3=jjI ŽņX?u8L6pW& v唕Xi9]ETCCvQZ рKFAL2YHH_/ pGB|4Gfo[Ucº}t}e]aP:8vLkB ѯ#xq?bg׶r.菕,CL$H@Y.)$fk/`eTVҝcQon(#C=n1Ω>M0 f2֜: rY&L3>د=Kv+g ~(w-DgpQYRi^ I8op$C˚RCJSYHG\<KB*uX n h=ɖe32.05H}r{8dnçJy" mz*X 4/(ǀmWwЁY&( AIC`oty1V2G'sm.h yODfNcF^:>FLWUb&NP5",Is;mf%Z^' xb6:v`#OT#U#Dd}#E|~3}5siB G,cp cnAѿ]Y~VYc0gM^6\5|8VP82a0$<g(ʫYǹ vh^BZԿUz**i{"$q<$iOn7; {ϫUvVC'uxCj$D!bZ|wȊ I`\$[ !듰NbcK50V.ia-T[0ӁSc,/ TXks >3quS*hf#Rg٫:'sAUgpM1o"2α2ˁsq d ( rg5<4փid &@!o3/ NcU@FG}F@׋@Lau:20ִ+90OK9`+ FW`]4[80#AQwrf$f 4Gv4H«!Ѥrѷc3^̷qbE]qѽC1/t'I} ME2,L2I1:c ]WZF>$/>3"<8pQd&膀ԋŀMh3u,͜"( ~tfն>܆e|S rRp|N1$Sokl @duRd$##&qDji۴c:~E1AFbJ@1z(YB:Si-btSfb4KD)j{?f$q|Z S=a m^p!fHeـp!vi2,r&l#&4>ˎc9X3qǨyHR@.bjy8 ܟ8_kńae9.j`Fz=Vklʚ(L2J6J t9Q'ZH|ya# f9f'{ћ>X) >)˨ LIn` V80)6H8 < `tbbkz *5.Q5u`FSgZwcdeFMdfJrx@QAHF[ D0fS "Ʒ !4yax?u<[\<n0XC3x5Lh #e5X330I}Tc.C>h%gfZʀ 4B"c%Ÿ!I(jCET^bS!#Vj$O MzsYmMK;XvS "4杪g#yӘ}֭xP``r):Y9E& u?OzqC}Q^0W˨Ψ0R2$/3FR}- nvy`r12)$m7L,I$+8Lew W׆BIUfPsl+A-+ h˴1cmz$`Yx s hlVF% Бs~ K!Tы\F9Yf+X OF=vۭ^uXQKdS NH<P6Ae,Ж, c:8ģ[ StfBYנڊe9ߜc^s J)Q̈B /bG@ID$ wd p&IbE'&h*/3dzOAO fgl[WW/_^QܗC~P@h=b:8ȮTV !lsЮ'~rv2 @ 80$| ~Y娼XLIXMvd%DaCߪҍٯ!eBG{`q*PFyVZU숙yL&#Y>xjB+2e G UsC+%jR\o))rQ0zgx/ *;&0r QvfnHg ;*lf3#~T}@J6}Л J9 90;؈s)^+(pa:jE8pu}3 : P9FR1.ˁƟ8}0/EG~>?np6y(\5&,UZaQ,+-k-+2WTvΓ~qąP%$ M_6lͳ*x]&3D*~h̞po/G-R&PgYA͜eVc Hc^YpʿO%cSVHTXd;v{d4c$HNQbqZ](D֪+% Y遰MFsy;UZM2;%TT"%cXM?2 l`Pݑ_b(N83k0R063 `CHY|x!C `L;FҏBډt31|uAs zՠ2Okp0_ 4&xT1e!돖t&n"?oѢh|#%߮)L^# Q6f 5QS,f&UErCm$hP,&dfeTBJF2o !bE3F )%)+5`Kg6H9RR'`Ql6 ST威bt1Zy[jeXNe0>YA05L0'Oo`f?л—7ӌ!I R|\D/O33&dǙd;IS -ۃ0'f%և$* l:HrM̴窪2˼ 2` ^u9kLE%$Ǚ :1b4(]*(;_F^MF?r0rCLRiJ rPiPk> >{8UO3@|mlbя!__꙼0=?rS1\(o~&adD{`ީw7I~z>#"vx[D|_~ě\כ̚7j,UukbԱ`2迪2-߅^kqŠۭ@ 蝧6 @ȁz. |dS #qۀMme&DmXcDŽY\(W^v) { Y˞C)ߧ4D? wV~gte^ўr֝"ĀGjYIa_˹Љ t|'` I# pٰuKTk^N8H~8"3*&oe,TcmVksIiTTCҜ-=p^ ¤' £[N!8Rc'f/yB7e}dQ'0*Thf(B)*cF([@+8GLJ!4i%$B"cb8kY<]74|ֲyj):DK!K6aϾˌ]r!Q`$hj)73r4 i$8FO!. d8JJC-jt*! U4I{^ogdAI:Y 1Rk+d׻rIz r*Pv?)ȇp0_@ѡ rz;ܼaՓݍ4FdekRVq$dh@l=qSpkP9%wוE1ǒ_7'!V+[&Ĵ4m l~ֈpv*igh/?={]]# Ov0Ν IhG"0 @B @BQi4H\ada@VRP`$Z~8$@-*)($, 2k`HPBʦp0Q#~'|F+h?=сR&sw7uNZ3= OyMfp N6+#Ɨ/~0բ'21jB{!3T;Y& z2RG7@I0c,!ȹyD@.ࢅap?z51s "5YYk1A #PUAv#Rxx^ @0@~txõa6IBҒ=8[_1c_O$P`P`} $qE{X&A` ԰¦s 5, ,1p:4M LLO6y ѣ*%BA ƅ I6Fl}}pEy"Dd(K'ϋwHF !ц %a+4$ 0?h9!P)bp%_(\#%Ÿ@}9<$v f }잤't2Sč >Cd7< ]@WA)P,"P fl b(,4`H0cˠ}28q\U}Q$;g{<@BW#S^?]z} 7N~L ATW!dhC2YH4PpRR֫_)G/K>Q)djB`!3mÖ37 F, Ե/́?d _uI \.aJǻO#"vsJcUǍ?`Pd#2:̟Es3Fz8E;COY z|l[+WN4!JA'#<nZNT`snXG8SDs WTᴊZ*6t|ي$LU*~D1$xFnF+RnNneUf5~@gC\ސ],Ȉf<` -=S 3D\"Et{S<@x?`,BBOeD]8 J8Li33B%S{BnTlk29!oV-_|Zp,ӤPd` ߛ)w$X\'"""bb~+/6+ eP,$t'T/wE<,`d񂯋Ilsٙ,bC S_ BS` t\g}g…?8{8|$MU 4 HgϚH.J{!8e[M1a0uP+A',5ji֜v f#XTö|.pڻh EPƋX8:5M+UA=q2ើ9t)T@xȌ8inq/l#ӁmN0&\- ppU4fgP6` Za<MqbB)!q C8bGa3t|_z bb& `h!a#5&# 21jRBE=WQe>w-[w bAչuHh:Z8 ;(dhRVl6aɧ]`] C[!4M戗M3yK Sc1Yk1YFkm&^Wg!2 xN32ɹk+ ETVYo wD(O-4SpA=_IGyDEprH]>DN@b8iU6Hs_j7yQ2@b֔, xEAl`/W,=glCykU<ȰQO|&k70d6# v@x07@S1m`Ȇ`VY+  c, @d s8 t%(1F&H&Fm(Al aM}S<cDȭ=x䁳g @ ԒT#OGZV)DR|ɾDc&78/6;:;;2;hڀF]! 9)=ZZXE:Kx""j>Ta }77vUh(gcܐ!7M`@Ya^.hd"|]@@h8LT̡ <mGF`B  @4bw0,@@u ?yO@O#a J o x#"r 8("3 {!L FWfDm3b$?͢ȯ~b`NQohaELW0} aw՝̊.YI ؝|{74)85Hzs?f1D0 aZhEɀʱW QT`Q!2~]_lJٰp$=rw ""XbGC5x;-yj+"Pʄ|C.O?V̖ E$FKA;Ȁ9\oI/%OZ\*9ی؈LU#4Z\f!HB(a,LprO& ed mt&`yٓAHa$ [ѡ"; x'T⏎V>|mv|׾_Ӣe}CJߛDS'K-G{&hLstj==Ȳ>3y6f`dT_cIC|I1\%ČqZa֪6hG391X"( %"X"Nnz1R$"" B(X"H(& "@b"b""!"$ hX"(v03 o-$4GPCWTP 'oX02qZ7@GOZ_GD FAC&E4yypŜ~z$LP(H@A#SpPdLT_wUkQ dIg鑟־"52G P"Zb AHc@`t.Y;PiP(΀^ª)2@Hr[Ȉ0_߃;19uHJaP4AJ4FE'i$l?$ E帜>tr>PQ0) [wĎ(P JdBU(UCu H lIc$B== Q#,R%)1QmA)iJ?qy84046\ t=9_x! 0Z=1~FR4/3S4lFAd1c1} ˬI!A $ڷ0 p) (`dc1 @f{ 9U$C çk;xl 0HN<}s@!@-e8`~y$s8/ H>P.ziBm,)PPz6s}̃W77`7!MYwɎ餒隈#GZafZQC rVr!{#jDɅB @LE %P$@@;Ϝ[sbHL*|P6ELH84Ha狌x* &CB f;>Ɔ驣hٽT*ˈ+j08D>o׿GP( >/'À|e uTb!R&rG1/ɱ1="D<_i垌hx893*dM Yn)Y&>T45>:.v MXpύ7%<:m,2h{! d$E(o|_Xr'2B*\"2Vxetey< "2 IuwY$ ;yΊQK ٰtҙ5UK05?_%3'D/Vm\a ;! 6!2 TU ȂIR/IP2<_dv#KAlzlFtfH.q;l9,X0T0]짼ۇy6 D) !m!ʯ%,@ьv>KM#ܱZp$8sRsnҜ{j=QIG=__$:@n?Ӥ7yZӑsZ ctHr)Ag5DK"e[:kW£4<)M(NO 5oqd|Z+9yV_ +Gz rm8Ԡ֋i%E%,ϐf=I2C0CeROloZ JF^0c r!IoK${rʮ?̊vĞ]":[QGE;-J- Hu@->.8+AWk㒥=2C$@+d]Sf2)};>ha5$qj.~nfgs' a$$0!,-$"g ͗txe\vml h/*gGמGY9K~v BMSF91;gu^Rm75uD`<9HFC9:*P:d$Ŷ83khlx0F9P8 IwP̥!w_lƯYH+օF-W,g/牘~#a:Nd!ظަV%2%:8{33G\?8NS3vJۖν!UIosت'.XQ1loǨĶEM蚪98/ԝ*$%)^w ATQP9p4 ʶ?[p:[ؒYa9t$N{OP,Ja9aώ$~ M*q<gJ7 (V!ffK3m6=}Hh|(Erg۾^IMeO3N|`bdi`,% qAN$ dmqSIW/nƶwy*A2 SzD)AŞeI!XC2sz8Yk/JŞ]w&+]v`hH]q4[:{Kzfj_׋3".j(Ð\-'n :_M'n9N*W-;ىfK-,Pm9?Zތ]T# lR%!VΆ1O_D cШ ~ ߐ!6+ɐS @$naIBT@0 M$ 4(RA "T@Y$,-%"P KR J!H JAg"aQ )h!`( >Bc3rc `ggqI p \We(* #)69ܦ _I >md4C$ iN`nn)IaJ{I+J|H`p5*~?WBU=uO\0zp5V8183   ReGNKWb3Ã!aU,?HtF,H ˓ #H艵0/3;6ri/=>6<3OR N9F#iPTSQ*aWcF9{g N&i9;%^ɆAw+_h.6榕Ew6g ll%L2UҲ,~(]UQω}OopnR }: ji\_uMLMZ>)qi3i;힭8U.#IPfUIP<y_ >oI8őX@F?IGwdw|r; [!&@/ :H $xRo-Fv$rVv 5G"yQoY[]ǠtYd>=! ƾ QoZK!}c>=M; ; F1b?SUՌKQZ"zyp]YoP). 0x8!@T PZD *(`۴~!~+"})#JD6ẁ:j8a`1 @~0lBy <$1/{Q= =r~; ݷ4;F hOR;V>*D)$eXpaeɨ(+qLh(<a1$($7XB.q߻E' 4aQU' 71M%EDHŘ~=2{)b`1`1)/v|R 6.׃^aϓ@Y ?N4A ha`z!A~IԩG.P D&{/'[ö;fIC4 gqA>v1N'oM[b3¤b-{W[:\Ф~H5\?Cayw`90< t3L@>Zi>E =BrEazsޔ8I{9І1ٶzߧ+_ ~'3S|a6.Q gy+ܮ'aZ[㥎)q;I72z[>>(-kؤs9oce-4Î:ʤ:5eYG/7"͂~fF!;!l>+ʶ -0Lí&~Yic@a\i% ޅeA:,Ft&P wU){~l.ɲ\|$٘p:z/<6R C=x<^89ĸE# 9J@xz*K3׫ 3 ð_.|z9@#OL8-X:sq^6SL _ SXmnU|k8ƙv=M([g hF.\lѮvO\r͇v@8UC)M&J'O2~ZL]O"1 Cbmay>ްYM]!1$501%D7|dDqws1ߨD `pT~#:~s ׮q,`T!~nbNzXhBZ&`mg@at1g'9׿a X(l`jBaw)T W{gež47l]g?z:\lc;>@Kt??-饃NHNiaq%!}y1ƚ{$`hÌ\RY$>)\;J>Q&E=l1tPB72; ᝋ@ʼn+pa߉ÆMg*ia4cHmCˊOq zWe}1h$&UAbVqs4ZNaw}Ep2^̅dc#nA&[7WSzQ7'/vmPமr6OFP$J3fq](|6皖;}T`rA&w5D(cOpoHoB߇VJPX1[ 2ōĩQ 5b&(XS@ѿuƞE{#Sݩ^ţge@!K_HE&B$-Li3Cq J?y0B!B;y\3abd\1-.;yTƐdq`7 'ٖۻJ$Vk.eeXG>r?{)!Vw+d)*дQW;9Z/h(I h距 XA Uy&U2&C1xWO4Z*%@mT.'ӫ9+ځBV d՟?"Yc‚.,a 'wod,EoWi-\ }zJ 疷\GԊ4h&1ޭ+@be?K'h:P!ن"9*VcV(3 b`* 537r'gONhzf 74/`Ev1H7uK5jZHlP~>Mݚ2Ҭw.7r՞UB-v+F"6l!+JXQ ӡ$@i%>Q cHDN9(I4myF!2tJYv,yfLU!NjC#^JMJ3/Wwlq@c_/'WuG/zsqSTdS,q(:~vgl IdxL%y bA?֡(}HY #BGm CPp9|as\II?¦\G'_Z"۟`IHLy^mJ2dbzRMZd$-_y$'{]u \RS3^~3БϘHӺL$HȐMgM~59_zNbܦ0o@Cl!߸9>N+Q97п b­ k?@'AFDXa0o$g(q괁:c GwcTF 9o  A:%XX'C= H*t%Ţf$ĊP:B@"򇳫Qxy8p{:퍻kj$%p 8]سFh9}FCL6ːqtwUЌ>*;Je E:jaDDx%0ߡ.aRM_o hS C$@y" _|w""&@Uո N#D.EfesI(s ;.\ =5JH_14r^TKQ*9BJ.-D6;UPID>ȗ_;;LtB$crךUd,JUD1ɦC`#dgD)hY={L}!J 55Mi-Xñ3q 9 +0WT"Qq϶D$ I cq 4F7:s#UV8 f9b#2 d3ȴ"eom-UpMAqCůs23|i4}S{11V/r- \zG Q8p ɒcj:L`8GvɾiѠ !%:ct! ,t̃^&GQyU(mx b-ƀ#2̨\z 4ȊU@axnl+T*kN&ڊPN;a+eg | i&v4:tʡXAad KsDjui!S_*Cz!7DgO=&aQOAqPDMcDUİ G{zq:1_ŒG kbg=37mm=nj!eSPȂ)bkI$4R&gl']C3!e%fk@wRH0BPMYҹhLB£ zOd/~'(GGʏrLy/0KS+‘6eT F $pǀD(riwwwNK;B Bo,gG p`I H)8BJ^ɹ!MO}y`E\x0db;u|oU5#t{*`,ƳHa3Y s,JdLx.eM΄[w5X70D1)GRfOj g<U8P)N@Oi2L_}%wO/߇m7h~A0h;1D:gmIڇ=\=P4eppߎ}M(LqQcg!TaDl}uҐYG\82lʉy3OEMQ[*Od/.B e(cDuD*up9䨫s?$:MTU> s]>N9^>LV[KqB%WZ)4ۛ> Ѽ7p;]'FkܭʻTAӠ0=NWΌ>,^ym%Sgϳ珩4$1{5wC\^|FEUP{ JOzB'幞 R=F$F/6wh\jB14Dp4Gf%FcknbzD}A|ٯ9&K|Gѳ@#J}8=qh|0q}\ cQ*NςFQ- 6}חjf-זy::R&٪ z2/+zXP,y!D]*nMd`}=9Dm%V״[,o]-6"iyE%(jh{T&TLU{(*eBćՂJߟf",Km76Whŏ% !1tzu/ȅQ!Tps^}>yfըyutS:S ^dG(2&Obyd+z}8>ы`&-c}d7]qFq# SH=:\k6;qkx2I׍xAzD׮AK31&`P(X?:L=\tpDŽ,O@A*d09ru8D>X8p,0c]ffd,ĜhcևbpWz rlR1({folPWr\)Q!P03HT !L Q@@D4!LM 5E220-I%LXFRJH^T]Հ*FhOn)*=>lj/@P(gʏɓT}>=pfe;-D; yH|!o,3Q ѯ1osj/J0ĨY C!Zh`㐱`CPaxJ4A-HYTF2BD֚vG@!;Ϧ\zUY{dJzceiV1DK(Auh)1 !|\Eŵ?ӑڽtYgfĽO>]#ƋO)~I>&+$僁7B,7?6e :k^FCWGe`w)i0fK MǼ|:qC6A_thN۫y7X$`uo?(o%dJ7t0\j94vrtf{t$^z>1y> v%wrD= s\m ӑ^D{bJƔ{}>Y@9yqsJr TPT >vF\::uCkˎX@֐9xن7@q$)1Z\d~䘧~o-!P5E/>c)NĄ0*'qK2J2'iIWF]6yErT"ᳳ!\L#idٱ #%K.@$xu14@˝Om=6A{<^¼ Z.ydR 8ʡzrG<>.BѮ쓮"1ZtN˓8f (]*K/ ԽFyi_+ں֣3WϪ*F{,CG 4FMqșEFwMwj9+'{AljJù8~y>>Aԣ'(!2W CcQl`IkG]h'[쾪hZ't*8\{=$C-߶ܞJhCnzJuoH*U5n51:pY.ENc@ FB萁vR,Bo: ݽg2ŋ( @|Kk\"fWN=vdYL10ds/rvΊ<-d-CPV!~Ԛt2C'ƨkuL}C"&jȂFvWMBܰdk1x+J]PfG;}Fdr1 888DQH#:, zh"a`ZY״4Y4`o xK1fA  mEsBT.Gk]rI'vtF$\hɌ< &hW;œ(0kJHUNډ>ֺKFz ؕv!]]NV[ {=) eUDpdR9~)ԅ弥>S-|F6;m$l*vy~PVs ]oRào_uc:I|]D ,zIhUK$a&!#5+,0 D 'tC0;G WJgM ]II$蔣6B\M9 ӄPUIh,?Q= Aˢ딳WTfyJ9(:@vypT4<)W/WC*K&#oF[\!š,!LFNPWH@bGa579g9ךh*/b,VŒh3 l?w,q,ϜɩƳO-ф'i-!{p]`[@>WVp}ȅ!`ꙝg_79Š9`AY)W%qZ;0CzbȅP+Ƙ<]MqQl{*>\F/.jOWPd+P~Hz>؍0%i~ gfIBj7_e{8Ґd*B8^ 4*a|]9[Iȴ>3R1cE¦XVPS5j$7eO¸=#ʲfIj9lmbӺ5)rfXj"0'v儻- r5vJaQ8[ "-4Y^mӪ C{Sb " ^ dΖuz#M 3Bq'B鋜hd\S>t wXtY]O |F3?oቆbZU=T&~\Nd5rP0m)`HTf&hyi-ЩIg/+nfE$‹e$JڜYĥi LBUsWM;tZ4nסuH w։X#+ tm%Y51u#Փo/(b#0 1i&ccBD]2vqUT}ʰ&ycYf\$f|~;J0^"syF- !O,->n~A1+J^,l]C5 9$4TJn*\a؎~D r!}g^USJ%$4S[Ia8 ɂ·2ז #>?F2oZ0Ceh] F tsm_T]n)_"J<&0zU}a\P[M  /8'ǴЎ, 'qKQa$(&H^A}'AŀŒE(Kt(Rp79Ǒ,6,=Sq PGD1荣%v]F`t8%nbPPk% cr5S0"| )4è{q 5cla-&k[dSZbKR6*_'2 ėf*qo5rbJK)02t~DEɋI+ʑ oY[Ilwq'mfTy ʩG~gh4\M!qS" aٸҎrCLɽ4A}.T <NM'EogFG׋ . nɜWHƝFA#1 SJS8o1TjvSf8K+9(:m𳡚S كnbY;G!&Vm@Md"T|ٶh'QC"~?z6r(=hNI% q5!\rR,6 F󁅔bMEIP4(<^)$M Z:g3Hs{ WƌNh(/e Ub:f\˭ŚkGirJ>%iS].KL Bg"RR5\V28j[M*&<Y=|`ó+[sUT&ڪsEyps]I,JmIerp+CS7YK~㜐; !G-iO+j$WoQE֦"&n)_veS)`3biAy>sl6Ɵ:senI[^}9:",FM箒M#g9Hu߰U]VjcMP 3a5(X%Y=TQF+qj5so;`'Wt||`G'nLNuJvЀ=|m2N0Sp-9M<ʜ .k)/Ca1 FBՂ Upʝʓ(ّ8@xeG 9B.C{ bAP0A{0h* Z V0! =.q9կZV/̌Q$J׋* d40j:"H !uMT{gftaSWuN#f^PR{A|<5}8 .L#ٲ%xN } W~Nc!exaƽn{DoPZ9BI?^4I#p~?fK GSMC roj3hEoѮ'Vf&$Rp+Ȇ9B!3o;k}ElgAIȃ7%Aki0_I )_HQ!$)jђ)Z[g痎>(ArvĚ' .c5ؚl#~%Aަȴ+TĂcބ-vq#DC=y,Dl8h[逅) +o{vzǹ'_^'5w@#$zUa{F&Gr0( SB~t׉,"|ȏ`x%{w^0[Cj܅ eOu1- w61楍U/abl.aHLӏ0Z4ŃB(k(lٟvnJhaNH'4BXfغa.%3@H B S7ӑZf,bj @03^C 7xkjC+}i ZzK;۞ݓK$⃩ ff! ~}Q޳[ GD=<vptb?Rz}0@>Ⱥ8dQYм 0 2LnQM+0*IM_Q Hw V/5p" Dŋ`9^;1? wؿI!G G8s 'hx124ea!AP#8F4b9j9D#Uّ&'p9aa`M貭hr~_j01̤@%q1[)\$M1dN4?ˢ>yS$H ф#[b>MS~}(]iY ?^+Sí$3hrOqRL񽇼֝ ,bESJƌ I4ÏAq:hz}[Yw>C콧*hxA_-;µn<ɟlȏI%&w'~]zg23G tgkgߞZa&wDD!"#lZ#uq%:;c:žfjb-sEgi(+s~&oy}mU7Dx595tZ:iGԌi;~̯0=t+d=K۶:J#~L$Ʉ R:t"\H6t 4v4`X0Xq 7ϔQg`EHaw*S. j < ˆ0j|D_i"CEDs Xc)- F>fx&pa0緘 Չ*?uמh͞6RPl0:H-ߥ}ǵNnۓ냹Xcᓶ;-VGe9[WmNhGG@AZo)yJ3 aQPG؏#BZ0|k47Ԏ܌0ͩ/?3ћU³׉}Ky L旣pakz UP`sR:9tPO ?4kX2 eavPrZ C d2$$8gm]7b-.lBH%rJ猤DrEo⾔@;|8+2`r0+Jۺ5 ZDJV:7L^ΪjPy1E=DY[1ZA$E܎|3!) ,Lى[*Pt.YB8B!Ad:Gins/z$n@am NlcL*kIQYŝq/IJuF>jK>4y{cAġ-MS$A] T:0eWQg {}YW<9vtOY7LѪTlkx2cB2`naS@+*B8=<٥skj蟲:J{HTm8pr3m./͐KX)5:qcϨr [PHei8ۏuwUHB@BQB?"8I C Q!5(Ŭ3q]~~@@fyub'ɩR r:A١}mAa ^_D3Y4ݸы+ q2sێL'>qT3..jWOA@+4PSx:TqP%k ur +/{r ƅ䋠*Wt* 3Q V_94ji.G<Ѡׇq464DןɞڻHO4+zOǷ@2(×U$7cdrSt]-DZ5,muC?rS4YPT=g&̯!YKdo Ȍj{#n2y5>Ðu njzLGea>r1r%Rx#1֡Q.-b}y E}+2&lE>ʀDg'2dM |12J=AcIi 1!<3\(8|R"҅/ wH^c\v=d#"t<i]yS1IdB˚a& 3[ͧ|3):ʠ B)uGT̊an:6hJiրaIi{wH85m $,=!CqoQ9^>on8+Ft⤾y v['\3&Te!*]>\rT:Ĕ0dr[r>nOoѲXQbF >2W4U-+3Pa(:FD<'М)L %e$'߄9W-fκG&`L,b(U&BUaӳ6NLMzKAYjE"*_jWasVl\A.S) |/6 tjiE5E 'Lw%)>qv˜{HgyWIh3n@v _G87$"{F40S ;†[C{ zݕ6ixXKg԰$%Is?82JTP}̈́hhRrc8f-[$pBM|U Nѓ.c{[PoZ@ n7#|[mG1$MҲvAo^^T!S tc [5Ui5l-yX穽JhP7%t6yU0TMv V5zOoW7!>h' kByX3},3|ǺA9D PS^ ;l/Yb] }E\#Yt(%h&$Q>Cz:_;7)q6 ӘQ"ŒRSTU#9MYn'B!$^rgME]f$T{;c]{:tD_"d4;9(_Pif^=^+M>vpך]oA/?!csCp#9^VJOCܣ#Ûa1S;.1ٙ9e1>PgJ +EX{c o_ŸO1 a &eQjPym~Ry{vaIgqb>Ɗ3|i'U4x'(} {ǓBpS0;Õq4A;z ]Z3<FD~6Z(~G~sӠ0>0Xo%bPݗ֔?F/؝E)\p}: ϣ(o?x+YקT8*`Oؿ{O]> c6U8~힘NLq=KZVtuB?e>G %8A`a6BM0_ۤ>k @0I (%"*_9 K ,*11h'lGX~}=A7`1 dHҳ95#h#X`C%a*%A&]POk?#Ѡ~3f'?|`(S~/-l_f'&>S؞ `N>B\m_t.퇓`5@S^q,?CA *I3JOAR )i)pp`6K9% sfFt4Y7@#?B!VxMwaWnп(Zb Mfݶ/\Zd-_꣫3x0Vʱ M+;M!L-he奿БИfoaG'M97cWII%.@7hZym̄#IӺx +LB_Vs3ӀT};6gm' < 6coSP>m5/8sN 9[EKh œ+/Ã˅ N=z_8d5^A:տ fLO׎nāxu('Mc@Ra2GcS6ӕͯ587C 0)vG8G|LHSByG3ekQ-!PO Co/c J/ `پVJuO 6>mfœs?fz:|8[ѐ@ۮ0)Çd8Qt ;>r NZs@Xi czzC(Pԧ;8䓪"w~jAܫll.Y`G$ ҏ'LH>hy}E50I0[2:@ UZ?8ANPG0p'pDC*ÜYơoV8 4~rC2dv1wxF)tpvkd`'*4g~_Ih>;:Ca7 x+_ŵq026'C|Oُ7k 5ˇx~I:|< γv0 ,R?Q*TRjMNGHm-* -#\R00v`v9 }en!^gi.&EwtR~cM@UZPDfnat0ƀ}RzLdڝɌ.eD֎vȱ͘u`fXcc3XiM#8pw!ioW:lT:h&*[UQcytCqMy7Ϻy-U )G<&2TDmViնv/<ˢDTmV 52T'M NܦZVTVJxqtxnEfQ5EltIDJ`lpyV]߭ nυFˌ{=:RZAj,̨QA{ #T)Gͧ8 B3<4dׁˁv}ܲx_X~&12VBkHw9b]U&:>Irg*ͻlm9-1#w}gk.wps^KJT"3bBcQʣbjB)/doͥ >/oJpm?95=<`i[ȁ$wZ𲲞HYKhT*ݨ|ݍ[PxRs𯞂ݼnVn4hg"qqjj#svwK{wc[%\m'%c驧HFᎢY}t`(h%=%'rώ;&KtRW:g: uU: 0(Q;tkm9{ؘO:v2E׮aGkip3BQdBAxYևV=ORKM=rs| /к%yQL1p5)S Tz g* >qi%Hv@r=Q@ɵ=c1-atJAy@EB ƈ iϸf% LP ̷bh)a8)BZXliAȫh;<ۧbn͐ 4l.1JhjV+ Ni_㲎V7[m3]#oms6FLgT딣;Ag z("p DSTf,Ac $=7`%¢@%dȔ*P( H( (E @$B "DH 2I@C!I$L4I QM, D4P 4(0A$ U P Ȕ$B03Jđ@I@A+JEAE4* LR! R  @/Ra")H4YbR(4Ȋa@ IJ/LD(P(IH Bd@& 0@1HddribLV\% *2T1 ZEŘ" rs1TSBl!JK6^\ ((8wI p0E,4,F f3 a9OY!4Ԝ$W`VI(iIX5p9RR7ӆPK  c g[ă*ňKj=A@Ĥ!$[L5 a82;lDFsU($&ZRel dY[1&O E-#*.dE ٤Щ)CIpV2R4 HQN8;¡tuּ$ 2 d0C8* BH01@40LMs5 Q=0  {h56МBe4*Ћ4iBUȾPMJ]% 0 uOrQ|o0HE<*E%#ֆ%P;n D#CL@ >Ղ|Ӑt}+ =40TI?&3EU$_ >0P J̕SH"4Т&  U[ zH|/]Q!Wf.G󬚃HrA< ; w{9kD  <>XuG(Qw0BJcCFfW ts:` )Rpǔ}ki<~Quvw }zo3Ά13} op<`Lm}*DYoiJE*+1AUͬ?;\o%ʯx6|PE\"Z(ۉe|uGWکlYqMj/X&9 cPĄJA<a Q 0~ `|Pw>Hv:>; H; 꿊y}Q> (2-2iAjMޟ0?wh?"f q0V\WGgo}VvtfTscH8x4gkJd~qA\B8t~ erx /h_qU Gя8H0 0ɕ}ei*縗J*cfT+(6e1*ޒ,`]mw[H9 d%` r|Ғ]DzU@(E w'Hj3~0/GG?3 XL$g.QuK TGQ[O&M|Eϖx|}XT,UB-JpaS:1|e~KW-f۲Ha(HIK~OF_}D.s(wGj`-2ڵ;[V'cEI$FT'(H6GFqyvffw{!B׾Pm4QF&ƚۣAfgl*tWQ:xZC3FmN4(6^ۋiԀt;抆ȨIXxm4O{6^kL"fXH||DvC/iFq=)i\]s/T=bd$pzFq $[4JV1p:#tAXeaImFEJI.P:~OU9fh+x||]Ι K 9̎^a"q\9kCGb-<\&uPdž;k'_A+KafP%XxTyjpşDM +Gg%`yKM 2i.Tͼ1?+J[uЖY:דTS.)֒۶H0ƬK^7`n6DZ3Do|S=df5㪢]I-kٯ<q؅'&Mm5"F@z(y;Фw]8Bͤ|ofj#B΄O O_͕P:๪%}Q=^҈ZDrԔYbXTEff,!FF3XbphwKycci:IBϗ?/a&17ǘ`a1)4ֻ\a1t#;x{UEj*B0t^Ū.ך:M/ @:((a6]d WhIR&^UP˛|#C6i)+DrX` X18pc@D@yq鸨q?GWO7zfwww{Y ts2$v9"0D@C# 0&'"1s![*ʉ`HØ jş9<0zxJf7,_Od5u ֡86)'G{}>Jp 0%` "sFN1tv&ѧd?Z]fa% cEF B"PQ0;~oI849OE Q]8^9?gՉf fQeX^K(d8H:9u)SDX!F_ϐ?Qd>I%w&|;3PWmj- _2(_@"Xa+=d5t#:c; Q>:=t$0K)mgmb2lĖ~# CZ "@6exc1.\ RK/ 0 t쀺|;8r^gK1R ܨ>ط8S8"ZXA}[Tu%Fd`YaLw6 G`Kq!$"UcPC삳R5$$UD;TU!aeV铀[5e_K&cUxwiKc;NO-ͯ^]EZ@?Z Fmwv4u$ 1o eeQ+zm9O3PrI9y+kx6\Sl_7完lRNǽ.wM] @lk^,GF5:v$ ]qSᬶDT,D;?s}٢xv7!p J⨠D)9Atswn͍{s/AdAC~-2KKtnSAS`ЈwZiq:2su2N;aFk ߇]hmcvbgGNzl#.$cFh" #i\Wl89&~OԒh! ڑlɚ5e%(6z9c_@Q7'9PM8Do!͸Ls]pz.ws̼$o '4偷4O9 /1 f~%P4j8Wz;,[cBt#/zHH0}8|C6bC3‰B 8I@и򓨎:ȎIswʊlnb+طnZe'SowXÜdfU"ӌH節G6>j*s/ ÓC`>unP(ţM)$^2-S[}FilA g8EZ=nFnM>=NFԼB&PR@$E>fv!5=ޥD^3H~{i!(=p> p_וQ)ně)&<}\)Q)')}EL6G&Ce( 0 $t""8 " .F@s#cS+\D{:#"0"0"" #L"0c^Oª ?>N&2+;>P1p HThw v؅380^8]_՞Aכ)LwfM ޹U[zkvYכ<)*IYLd>_vz5v#]'np\Zl(=G/T]vjFۄ`7UQ>lOY`\0VÃن%T qq2ib: E[4xW}E)߇6S^aT0+Lcz:}E71 HK$uWS)[]1ǮWKYj-{9:-ڱ*}3C9`Gl;;0>d]!48^r KG|S,aӇaܓ|-JVƳ\Ӭ ȺT߭RrGVwQ:/7reG~|6?ل H@itqg@y?%0!@ B3`&c fܰQ1v( @yםx/ECJɁkDJ-֖br2YV0*!b#0"lAlDT AP~'*`UC9C,/A:bĭTe£|>W 5T;8<N_Wmn""!{pB 2 mh_R@pб>hGcm!7{L6Xq/{xfv % 30 v]Tfѭ#|Z 2 @߸dI3F%V3?uぬ;kT-'Itu+5o31*G-Fl06t!I3gd*2thdKoe(i?>zc3(dg`LO6njf9ԲύޡP[ sۧK{ozgd1Q(ܰ6rS\[3@$TM/L&-~ug:py2*s:Ri&'*gmFبo^Pyx>sd82Ywr͠3Fy³{/eBOlO 6q8(L|^DbOMLOa96M^v!vu$2.s9f g9V;5To)OcHy p+]Co: o erR%z`Aoٛpt̞[!uP~$AR{0uIT y9󾝌; e,յKw0ҵkn6NY?fcݛac|Eތ*C-7r{ |VV >_ўLđ +d/ߖx?=?k'D֧W˯:TfږjAql,_xIU׶S)?vR|GO3阮cGUf cG6 RB'BC0kuC~(94@M3,eTݜb2l43$1 ywFj!l!Q(,6 0૔_"r3qӜb23M9l0g8?Nܻ?C6"'$CA<#O;ʫJ.@層LENV˿ _u`RpM&}P\6&4"zie[hab%nt3Ar ^(3g-IUsYw̶bbپY炜$|scg;vo 9܍7o-:oo+\4$$ ͞Nd3 8|hǶ/ Nm]HH@{ NgҌGY%,E!,y{}ss'ѹ0Hn7 lGs c B4AkU]2n>zJjoM?uP~7 5!:G|鈖b( T-c O4glE> ( p8?6?<GrVÁ0CQr0zCp60~@Bam]u oxxxI=tgD O7c&MK 5~πB[pHeeL)'i$q+سuhK2|, R":y.9ZmE` ;WQtL?q5߽zW {`ɁIF$)#@b#`DݟmQSȥ8s˚:XƓ̂G+~ Z۳>uK HkZqrN^ )L閸8OAB0 f ڄ12-5#>z\(V7ȁz ѨHPd A8 &G$ Ÿ ]IcQT F92 Lςy78[g(hNI^IdL)04fzw~bȹ1h)l"6-pߦ"AE8܆EJ W=hNO9*"έ¸agaDYXF,6`>&{Ls%I_x~GyiUD8aַLQ)Aּfs8 P{<{ pk#xB?U3p58 q9sa n>Bn̂#K}mvT`yz:^4N)m.;[{G.kEObuS e%CDK,|wc)gt*y(2wBB+Xp+G<[" mWJb7T*Ip|5 o߹LkJvXDha[j`1ǗJtθWw+~EFF  h3iR!JdR7Q  ,P>=V %snص+ߧ]l*-@E^;Ov<#ؙx4̙&a Aw. ;\.yWYFSp-iA'VC,yOi*Nh% pKx,$w<:4dѣF4hѣFfW&[}'Z ]1c i?É2}O۱C&!((Z ̽zDa2qzLMNÍ&s]YΆ< hu=jLJSUsi"iխ[UDr(hPQw! քQ9y09u#, vkA uaHb B'Q c\|lIJ=oHQ .`D?(ֈαD(>] {e-(~#!h^sB[[D˄`fBP! 2Z H|b2;}A |9ʸ:7<ǡ޽C#ZO`l Q0 K |%}~qNx,LԔ! trUpbdhlN)eQn(vP-ɗz"H!:-h7;zTQR ҁK@c4@ 8`9me|en$f@2'1|yϾQJ"5PʱtV !M#:.dHהO3"G0GӷG19ۉ_-w%R*^OU&sOÚ,w5rvꃱ_̝_F0`C0|iu Xٙ|27+ 5>_A5QZ_;6hqpNS2({ {;緆Z9ĵ«R,&+ )p#:.evQ@S%:01In ()0TnaP0X/;qs[)j iZSj+0?~gCN9,(GU˙#"1١i_ (jx|Rahj3 0F-(+q̜-jFމӍCGuJ%LG,t0&fw39fh4ii^A8hM?y}XGK;Aǭ lѲQ*S@ @_O_58a)|Ȱb@PdN7A?o朌3o{h<{$\%yN_ -Q@Jv<)>/G[cg{E]4VeȬ [B4e~gq8co`חo/겻Jfې3 ®-?+P:!, q1[0ժt !wuFSa\2cc&:.;r|m9 ۩Y)t|ryp(~0"ߴsN?o4CY_6~ &B+;#3x1 fs [Y8yx%^'{wUMN!K+A6 KM@@;VP jWԶy Y~#W[5@P1GҁW6i dsòPm'1<.Bt7ݗ{1tx:j+B#]UWQ#CɌh.%7 *z|\sGcxƳXzI8 m@zohiW[54wxԅKwf-W#,d32G2] +"5_xBib&T8uns Q*G@f|EԼ|.զ$]) ;hxwD8P"t#S_rzd x#n'?˧*Ϊ w0;Hw["Ϭd.|_xF ʮmtH1@|Z<~ڱ..tF(v!a) щCL Ŗx1C8D$5a\b?Ff06Mcf;+Ngc{Gtz8pC) htY506¬ĺd%>< [-_\K̔rfUN"pF1m6xb& OȉaAHTGP“` ;Ss]uE Z+ +һ}b/|sJ@":>=$w@X ݼVfj2g$P_#AT{S'G/(B!?;_La\=Hpl`E~d: D vjAC;2(ѯ~#MAL}HT0SZ,(OKoxA3g-VЮު]Cma ,5}un0UuNդ%V#`{kPW#l옏$J (ojŢ $HPRZ j0w~pa,f!Z `)C/7F!rG#̛G /5VsVq{F>q&m Xƿ?XR ez%#P>6=u[ivzxѲJH_+%!&ў@!v yb2٧`{K8f= &fL~@%>%i{`QBD Lmk 37|gmmmH[l,[m-pdOt7)P`UqN7 XxABb50{RS>̜[id^_.!!*w v&_18颍P>tB%A1?l܅վӟCꙹD~.D>dͥFffӴf8 7:+݈UûlL!! x>@ܰdF$tVD@o?WO]()-RCxmq0Ӏ x~CѦ!ۆL' }hqs[533EVAAtvştt+0;Yr0 x7C_poJ?;Ph 0}Sw'i{8òM9r lnb@ ̈́l 3Y[X?jJH*dN |=SbA3D.f~6j@Lz> pCzaCѱ_|~(0rm o$ޒr8WfBSէz{N^%B)oբQU}GvRZ=IahbCEBd(޲jzr~ne@fvz1H8_AL \6C7"Tu4mcQ$W6ˡIq_hHOlތ_hH! e)tXH=qJ|^q?˂f# B,6IihF 7>gܖ))^12 sɕrѪPF Lfe~;5US&qQfSV^4HQ0sT(" "b?]<$bNgF<C! HY"Qo؉@d ւ k[g!2OR⠗t!Lmƒ^+G*(jk+n,v͔& UH\t۶~0Fz8qWjSsXfVbNS;-X..o𕭔S_ΘbDM#iÜ'`y{ow&n~LJ²E4jd?PѢeF?IAS 12;74`֟PH`Xa#af#(Nן&ׁ"1R8g2n:4O yrUe~祝[h4o\<`Jjl>hiUy$0{.?!&d9p@c3HE<__*`h4pL}Gf4hѣF4hKL5M ~GW‹UB826XT" 51 !E[Iv[`T@iceԖYxvd}2Ycn5S؟Tb0y$@t.gHkU;;.; hw̾$`%cCN,˄l. _p4[9KgɒU@hCA7c0hgp\ r|UIѱT?!h1 jz6H({ ,l5)~ SN{M6#2# Qbl3=l"8^ 2C< (A[4RvQ0>!9A~٫jБ7b0vQ|!S>gv?CuDVO6Lٙ8溓i˕52J>-;S-2|[nR[ XADiQAPO&]68 0߆B1ԒI,4ykv8ɤݾo W^c4;hx Hbe@K3?'&W香^M}Kă6,yefE0k45 HGvΦbgDp?` u<1yfc' w%,Z9}~'Q?1#f̙2|M4hѣF~+k8 m}}"3@eN /"Hqך8$-8N֥iݞMMER\MT4'z3KM8'4T3a׾(L:X5.S>|@Mꁠ|T HqP&^Z}1[E IJSA}Wqy|t/)>,Cp_WAֽ

PWG=Rh$YDqU9 cEj1o{4 3s99X3f9ƍBv},! !!LhCwxx 统0ûq5%s Ѳ:wΞ,WwWf;</ifÎcvm OɣX+ghc`Ɖ'1#6DcRR=x;&,4Vr9h3;`LX6‘$e(>}D VSdI Hq~ dB#,BWzX@4YClÝwI# G `EQ HC,:$FUBy:C:8LL!<͍cs.bc+Ĵls ]x@=?<=xV S, $!pZɦF0XD\G1}8\'Y1uʨ.HdxU^[@z_suR`5M-$iz:T9jݻfW&G6N2La؍ n†\_ŭ.4[ 9RH>vH1xHͼT>G^m74 CQW-:3?L2 E"x"G "3G|ɚUE00a?K{"v ETg] GԹ84<(0h)!!X5W m.%Q7_eVmRD/9C'IF4hѣF唔_|gE (&9 G >zqo]J!V"m=U51Am8&-ޥo1imsY/f55}>鷹 lfAC8IS, "J#JL 4=[~bUb/5[F=Ro+njdwD5f6U1s飆͖b\8__٣NV ;򁝇HGF6w>1I ue%HU= Xc,]K>$~J`u֙G~^_>g#~Œxټw?{3ṄL8;MƇ'ye<1Z[;| [O!F/pv<\,˿ lѳF4hѣF>&٤]%HU+w$=q`G ',IsFś~b2hc9˸m5ěYx߿}E7kAyzu9ycL~/߂9g)I]HiFHu^7?ؓ~(СKOg;! >t6VAͦhOoi3kب,&!q99;F;RyȖaQF4hѣ$bk~bH07o@ s >tNMGh"lU6{Yn,h/ V?O~G@Qnvr{(~)@#BcID#}g`ZZia;ɶ4D~?m"^EU-sˇ6cED~&GDZ)73^W5h=<Ȕ:{7uȱ BqzDOM&}RQNTbVla>_eld 2\O(i@AD$z!aLVhP(ρ'hѣF4h lE01W/>C@GF-?@zQe3.P~& eд{4hѣF4dɓ&L2dѓ&L0`&L4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣF4hѣDdg^A\sʟU؉qlD鎯e:a-6rI,cAZ˸f_ڋb%)mm}5ch,,\8_2}w $@^7<"^AYV<( uǸsQ3q7#plOÛs`pK$㞯J p~ Ģ7;(~Оt:9|' 򍜁Ey0!aMu6Eѫ! tV  P'* EdI =G?J2&K⌒t0&S$$o{NaQ&K A^aa >]UG.&ãNcxRrF%D!{ˊEE$A``j4vvSW%^+Gz<:0Q  g9?}h軛?R `59@[:B#qH;7/ Wv61l9L%E0ʨ,e<3SHrh1{Y3f1އxob9iHmen3t*)D.C VxۈaK"4oshɱ#hϟz.m=: i%PRWUFE%H.~LTLp"ī5?,G FJ9cYWCR[&L<  Ac>rE;#1U7tt:ڄ܄vzީavd'w1VPt t+C[HckӝV0&vGCmi/lZd“I*ڛR@$:C5Ƈ]`ǺߤHu*޷i E uvcX(qRvA,<%dZd ojwIjjiAicSE^!B4qDzU&oQ0g,W! O<応ijGh0“-r99aîFmnj҂kўUjY"rŵLaeaS>0ﲩTѓ3 fiz _\vlћ3$2i$Lj61Ĩ&tecC'42|le^Ξw$zG6mM&""NI\:냈Ņi9ۇAlmq(tf"/уf,i1i>" Lʐ'-)̬CKl[|; 345~TB B~4 AP RjsH0١Ӥ@6 4@;s͙"޺deF KPvz$_ =Le+cѝ<"ѡ* fmݣ5l}NU!VEЀGs)Ӳ΢%Ǥpp<NA)P<ౌݗp5&nbUa4|zML#p;h8Bw s8zx[w[:H0@shr D0p\U7Nwy֛*V[ٷĥ 1@Ĩ\9U |kDa靎ûa.vtVV\H7=[ zX|9wh,IÅ8?^@F&KsUR zJ1d=f2Mfb6>ioA ΝzÐl{Bkk q*V .!jm1jO~s rD+&U(>ڽWn5^w=%l/2rՅQ;.EK|2PG&/@)yMH_c謥Ǚ YJ xKS02dN&lҨFhϥg&ؠ ,[1{{$w1,6eA=M_BO@G/%1>tLӯokƔ9 OY}q)umcPŬuƨJO"?4`8EOf$qa8?OsA ?%?na4;G -@?`^R]C5)lU0k mF#Q&#I !9j.3Zy9SL ܷ(˄RdgxKwhVC4Q.I s _0" !0SjCԼ䃚N$)Ѻe8umN1BK?xB S4 4prIpsԞ)ːl s7Fwoѷd]06x8īS-&0edw~Ag*G1 ]t1w2BϿD,-K0rg=b񙆰H;7,ڎdf8y||UO~Ј}KA4?QG֯!Hd0e%,AIV yC1"'/?8>*H/!0q0$kOa9eb){L#HbH4 L(Hb3 뮡h ?(]dO5K_eAIΚX@}|5?ABXTS d0'Q[x$?ۉߡB >g0.'\Tjlm0iiH[aܮC R:Q!dUΩfeȹ,#.+ (0ZBLo%kX8DO׮p!|3 R@I~ݠ84@n(_PyNd(D70BpUy('0y'''J@Xt0z&(!Du.Bx;a-pqSzӏM>%Ţ6b͏PY/QzH8(%/3gY@1m~SDR/C>bGe L@)`X߂,[%E֮ 2RPßH\ @N2"`9tp/Hwx@JcAR`"xcjM~u %S _9 B?(@I'd4m$JIS ?}^A`ИuW>P~8\o)BdTsX+hѰnؔƸ߱t!<xzc> C0edrfx&;po1#fD9rv5A Ir%vLgզٷb/ S{aaN상+JF؃II1CX:P/ u4_;G˹ H%ɭ~Z?{ FROtAB J*z9Pb2 Af:'_qptz+PTf`=9iGwBn+9n[ m: tiL`,T(BpC"cq #/2:ÊI4J/Jay !T:J8kv–ÀC/L*0^ H [ }>.VEJa'TPNMGTMz!eUB#;5c6|O\==+_g /? "ݼ|G9t ~R$6GNU>r* H8-B&FyH2 Bypә =0{@ 1CuJ,.ËBɠɱhG]3!"8|Cҟ'~Z!><=ba7qCqs!`Bd(sXI] }nPB"r?~2AHhIa!?Z8h`b`<F?@4`4wi V3Lp'OGw{P@Y@ Xs}x!&LGer^ b[-싛oHZOm֬঱j̠?vO3 C:cB@c؆x33V, aC0wQO {ii8usgK NA/QꂝHUxf`U'GAJFI{/(T]3dC0jeXV"AcWj"#K ߵ = "H5μNdv:/40G!ihI%QnZ.*$$ʇ\$N2;^mWpF==U@_>QO?hS#@@nj*zg%'>8~%}BJV, J1~yD?= _A!)F{q&SHU2`V`A0T0mCrh:0=$hÄ4J`05$ #/|d pu\Y-:(>8+>upk,\%KY4 'z7FN6xj Ic=Y=72IsK8tdNf/ `]VRFDZTusO8c¨DZ2MN( VR$((`d܏pulN;b2Q-$3 eB @.駷\(\W`P3Q/xhգǫ 1 2b@l)@]4]:k K= ؑ((,9=?=_Gc  TMEƞ@-Q]R Q4Rf4d ӋkH#ڤ =nrJ-#ttP*d{$"hp'g8oAp{40)W#2HA%F(UX`db@ceajj9#\7\zZ .xJ%IJINjڲ|nf"PrP3e7Cb9@ _u˨ß{R3DB{Ӧ&OCd: P&ǛM(7گ/L:8."`||liyw!%?,P"'$1B|##AP?jp1> x T"1 3Opx#Gؙ cx EzB{?9FB)'r Ȫ/t׳^pC~>LB(Mv[ιI%uTiBXZSa44 F8P\Du/(u8@u0R&m!#0 2dzl(vZ B_ɶ@ga@~[6$V,`*'B8 &w;SX#[T? q샶OB72LC"xO 6; (H=6׈*{Ԓ>~o:^@?#2(2MOj!--l% ~6 ~#2d&B'!(3}b}awXA~R #2ɇf OYjQ2mu:{ 9#`# Y6H81-`bt84ւnShdA5~oVEeK## K ]⩤pWi1n8w `!b0FwpBG[QKGm^ƫ3p{Z1 G~D&BgQA1OlG*@ zp^I Ho?B߃yR7ܫD q 1;z0p ϗN|R;IP]%߰D7/dx Щ w?( C&'m)Ow 41J.m. LAIC{C+ҫD`B=N@01 ~GV`dËzM1 $CV+̋ĺa}!vDP(ƂoQhmP3^+pB ؆<=?"|T߷߈țC>D!'aw+Hs]*bIW0H8taieaџ\R$5UU1D03Hz¤s$`  7r{R2OfFֱOJSRC@C% AGw@p"Xo>,դ#Ģ`q&0 x85RvEӸ~C惉 sW_&D=њ4!Q(䞾ݱ$Tj4^cufhv"vz*Hr=aqASwy#8œ|YofǫN;P8:, 6Ahu 43U` @p= }\;C| E>RCE7H~/$6l0[$}=8 zhd4:=Jڑ, ^`ST2yZ\b%iGPvP =֟k9`:*/4dGAH?2%qCS{İKN kJk=̈́]v @8A<N'1Mۺ2as3ՔMZ"#Â9! @uTЈ$Bc zvOp@[;+B%ePRF5\d 1!G8#9j! uxn 8PŇD`#st)GDf ( =x #$z X3EpG7#B>0Jgh˅ ] ϕ"N쏰@OЦAP@980G%{H@^f}w,ސ`"4A@PQ" S67Pt8*w=h@ Xd-U#x#19q(QG|#s:SH05 !2^q@u< "q1zy "mh&8"pFXM`d?|,Pvw2Bq4ZD^<t)$D%':uLڸ8jsvv4 A)@4>hP%+@za'_XSUT'  )\aF@\&a=uA*#c$ T.t. ,荜ws/Q%.Cdm4!Z qS+/7Ph Hr 0nAҰ\=?1@_D6="+ש[Κ1n DξфY 0rCx&щIb|#}*N'9|#ǭr}IVq4~;Ӄ`H.ߣ嶗?n_L TV{U9>EO!ıOJ`&8.@l!2( UF]Ջɩx7,}Vd!]vt x 3ﶔGb#q~yM8&!D(H~/G˝궜z`!B$MlSkzl.| (Dc~[\M 8?1zlcFPN)#]LT$%Jߑ-V'༈OTmR2D$Rˈ"Rŭ Jf\)5XS5S/ݿВ),:rC}ˊ=BF-F 6HSr gJLΫ?|8˅Hp@DASPFhԌa0l\3" o]Fhvu4Lsᆫ>p w] rx٩}87)iq;CM`}|1E F̄?;$^<>5}|{0fǎ:v6N/d@o!W!4 g믤P8tq04 !:pɒK^A~ƨ?( R$:Pt[2r:z2DP"6Ƶ޲ZDk||^s(@3sW8y=tä뾄0d殿@pC# H; ar,l#&CDMFv(ԪG\1Ӵ{iy)u%ҨRDjHD_B)AA0iRYe=)̄'Q%FfzL5d[KtA%d ~&B~p3 35)% MlHHI'ۜYtfJґS qLQsƣd"Ң "f@/9X"Åc(CI4or I( )T4A!l cB#_"WN . Ofj'"'LJ4oY'\Jľb™()E$kp T{cEFIϕ2qD/5+5/Vˠs@'#,T c#H >Xe<$6Nllv#A09=_&o^&+B;pP3y>+8`2Gpr S(,AY<-K@An1x??F>OeF|}%E g;;;N Hp%B z}q5V>ri ɡ7e} =:+[h /PUsCsnQW2O9 R~_~,ט#lzwѰAc#'I 1peP;{ ԏ3A;v*R`\}gN ĀcMc6 mG<jEP5F=$-l9Cy#o;N*R\0L@C8 A !x@hl|QR@Ц7&w>}S*~:rB~ aۆkwN YAa%XZ  ( :1V;C8? Z(Z u:$`%;B7H|Hu #rP`p!Hv4ם7a9DzS> BGvܱ^dCw!Pb` yH'j@D/=2i  %{`c Upz_E@X%$ft'?}'9sȂ xs/ #[#(Qb` jaH`)d^xxf$>x`d$`~@(@|T7;ыC^+0B)+J,aMU T!+@J6$MpY!q:ӨXLhx y0|8W~ti@a@>GDc؉-GQ(&92D<' > Du 򈢶d`C\17!i(U@N%qr>_QOlBb/ۯ =:]O*9֩ӢSPGNQOMIF<@{Q)jS=`y=N9^twH Ϗaiϝ˹3_<` ?>ihۣ|gSgs$X-]O`ch]"Hj#bx=>F: 憻Аv͎;?~r.9kQ`#55i2ehۅ JϬhíh~&$?e+y^>0cM 4,TÐ| ވxE/Js>~OI$JOZVF`>*\-sBózԱCe?~r O''0Hi,x1;!3BOaS96(jC]|N!)iwO2S06i_y3tQ$# o ^y84j('0轓wqD@+~†cH^}' ކT?D>TWlMm;A/P&Nu$}xEٗ'U x@A6lR,rK9 ɓ?QxfId`Eyw%6S% aJ:{jLYk Xs44@qb>W7Pflyo?2? xL $ppDvD)4+K3J.[h0(1OfIKqkWgPG/& 3sy'4{dx STb^)B wdv#ts ;+DHV`oJd`}B)EecNmeʼ~ M<2 0lFliH&(" ./rJ72B>d{E4HB3Ƃ%#*( sdCOA^U4$@z{M/%3O:wNP T# Ku $>} nY ub xy|6 x̕uμ&@<[% T!2 X)L2~AK2e`qaD i3da:Dv%DA^@挏j>B9;C9W4Gu@GɕNsWUɗhe*䇖ʤ-HdddhH3 jk#hhInf)Ȱ?q+7?OJ @La:$8jg<ЧOCS|OR*nB NЯĭ j1^'| im{D~(b#tx1udV޳y"GR>pQ2P:VH2BTfFh@) ElM@O79<dի gI]C535s+n!ŀ!~ܡ\zBgpG,b RۻވcdrmO1,vQ%9W9Z!XH h? xE wV 4 ^AzHʇZP򇚦B"`{МԞr  a!""" יgG*gXd}Mx#nZBGX"B 恨`~ CGQ exCz4ۏ/ B3& 8(&mWpiԎ3acl &^h8$TUBB;#b@=q!Yl>~C4PQ""&17t?yXEW bI̶! |߯|/rW^)/~sP#-7mӣ_*$Rph|y#JuvE5V͵0o;@0:! &p@d0 ӌqJtW{zĄ!B&: YPiĄ>!|^H'>SRʱ*.iwO aNf9nȣcShN(UV@ /Yߢ&5äCG3`EAә/6HO?lg!\) !tuk $O|STb:Po_&<}&`|2`mvCۖ7Č@tJg & *` gd1{]Ebdؚ bS(nM 'B{h]>}޽PS# >t|EȎ'B(4GI\( .U}," 1Hn[qq1Y!á ,Ȭe Bd͍͌*$eS|cU!d?7YNgHO㠀ۦ= @:4{Pb;]Gsyٺnj#H4!5}h &Nx6X*1&#pjh/R'2nx *&|ooᷟ|,:i ]rU<s%j9>m޶>'ʠ &a9L/^) 1˭]k=\qȓ ]7D{. SU_hG1Q(ea ČBݭ#str"=_e5ÕkZyrt1qqI e` OBӚ!EORa~y!1y4A9PS1do!ڐ3jlL 0DmnK O@lD[ tcy'lX@]A |aYM rWh^_y&vI;<$'q]WƚXRxw˒BHBE¶WM@_yF{€0<JsxHPJbC`8B(+w.0A.F`H^>8bC!䩌"e!.";N`O!Bd9ij(S#`$+:RDH?7_P尉 rHƺ!Qe6ڏ!*E48/_N x;w)  R@!N TZ'{H, 4;@]^pP{cҔ:a`X|=R|)/x,#R0 >HXDS~QTC9!HbBT!OifC:p&GJy) h)( #8~(l\C4a5"/{m)U(H'aey@eZ--H\Bt{]A )JR.e9Cla{ʁ9`j0`h^-kJW A~:xq+ns.J r#gx3SwkNPJ״Q"Cp=C'h):lMwSat*QoPAQPBI;Q\#8P4c%ЉS`'RF{=XFtM7%oJ[{sz1VleBb`mn $~YOmDq=y<;E쌮jyGr&(C`|1鯟 0u/<"%@hTYb2bl JgHIP{[nJeR_aQ ]9`DN3Q8L X#L@)GnGF 4uBe A^ j/9BR9!qP'dc"fXDu-P of:Q[`adѠThjQhİ\x0pz3fPB2CEt4 M iH(  0%IGA X=?\/<ҏ3Hah14j 3M"0ww4e?4QxJ: 3cѧvwZûRyNAF #@s1^GQP))D*u|'{S,"AaheR0; 3']ORQ8f:hDn֒1?OyivPq~O_?oeR.VFhWЁ_g=0t.hS,Ke2y6(~ @Hl>4r ҽg >h玀:qve0?X|xjʁYA8P[/Y88w54!-nQ*LXd @JփW)L |yFb2Frr@1ښXi!p7wi"~P:7GK%$)[a !$Q(muK9`y-)٭F"P,H1p8&VeJd%̡0P93TC2Z[F$C,,v@%iDwAg(pÔ2Rl6 E8$SaHp4`PRwRWO>R &) 8 ) F,æ(Ȋ-@Ja> OOo~" wz!hF0id!䊢G`"62Hr=NdG#ܢ=a0?;9Oa+ ՄP80)2 P0՜UZ̰+RG u(9z(%jCж-nށ4M!)lIo3y]ךf@PP#%* "b-)TPF` $I4JE2ђYZ:Y*-AD(DZ!4D8` @ |A5 >!i)$8<$8;c"nJ\7I0WCb|[v8SdhT "a͡y|hLF&%!lOzDY~P8@rN2 B!)Jx}|Ġ% H!$M}A0?W܋}T"9S?_#") ä  F罏)f]d)f`p2Z'RwX n`&  x?8:\sak<0?m qA ڐ1Ey-q(U ǵ( )ÉLǭ-m 'H&h/(%{Q;7"x | &i4R-uA9( K,BS8a9p#" sq^"@@dI!!; FzԱ@|rG $y1M`-L$TQHR$A@69 DE* dJâ"d8lm@@ "!vfxZ0j\  t*Z%:){ޠ6tUDQ!}n7N|1tq<Vw1"B2C 1 h%dH8#%*yφ._zw@;Kֵ1QƩw;íc(0怒VYB0:X dcDRVkiSi =0X 4rp0 cQM1(f'zw]?.N ="IT$* lV?*7S A| D!D>>z0r3>TPH4W_w|p;@|`[!qh}/<_ LǶ0 ,(0#PۜOdSH)Mp4aA5%Qaf7c.j/$m0` De1rz}Bfc3^sGBD H$a$^ʐD;y#oU>>MDJđ"AoCiW|;Sd9@:X <ξgBeoS p| pv.A Տ% t8Z\hqB{ݳi#!q.m6b; W/3wNJi!a^ȧ_D10!<0gX*[Na# )1qg Y\h 0D •/% 9|#AG# !z CQbU?P!<Յ7t %B`"9v|ށ9lȢĈ\ xS]&x* ` (5 nd и(J#PDx2('| &ر@S¨i)Pf /{('jq j%FĎ>yG b T"H%*& {at1Ć5 CLtrMar`3mAG3}u^V0x I/ to;SjA0larN+hz(PT&k_CFM|,ZuT( qg E wKd;M}xA)O((( }b_ y7%!Ĵ*Y'F.ZUH 90jM%ܾ. eh; gnNz? =2 yuA  $C*|I'*aPSy+khxdCHt2kUD]! uPoS! R HD"9 !D|Јv3dQ4#p0f"h(\H!;&1#ݫ?s];.،E{jC.OMSWE;~^ܓKJ!vJE L0)NvQ]~UzG:,~hu{ʟT~RKz{3,(}bwiC.ĦTjMD^_.޿!/8BpEMUXBQ)t|H9#ʇa?h!h`4NJZwX 9!6a1QtA g 'W 7 <RHZ1 |d0C&7:v<[^Nc8s5 |}X(#>ɡS||)XT8+$$ xPl3yXz9@g2UCI//>309&rO}L a3ݰГ`oc@8P0S&\RM'[ SKhp>!ea^k1C T1$HɎO )Q }g"BG* K&O>W,Ԓ׆;w+  * K Wfb}ֲN7!DtMȜOC_l;;k璦jbI8 f*ҘBf w-,!IQD5L 1Q6Z@)X3Hڧh b/#ƃBrMSo! XDJXKGQUQeA.^} q@ᐟ0-É)H@-E;ы! M<):Gt/G`4Hƈ 02'TFP4M 77 YSZk00qH;qNadl!#2ȢCL $Q'L L M )\##3r%G'MGT wGPB%Dqqte0TAP3HلGC $DX%b45=w?. @8r3To?Q;ѯĔ C+VB5(yQ UFJ#Q! BႾ_jCS} Q:F"p9DIQZ’g!Wp˺f`}#r B@n-$x矰ӅGvR@o9C=PPٶ:ˤёE")$CIM3 H<7/w!`F\Tx~P9 _65AT=PaQ+L("2QNp@)Q^ R4'= (I8B:HqV B.>k;1 G|ޒOZ6:ZȐ LԆՑP{T* kX AZaeHas* bc1<ضo~kFljgέ)/л LLwRBj 0}}sCw0|£+W;M|.%b\$7{LjhrC@$,c22mnpNœ! a %H؆@Eb@E:'ƘK k&Z Fh0޶u Y-RE AZ*B,Yx'P:'HUHVu+qp$|>Λ?rvo~"q!N j":@,M<7u:`>󁉠QA{@\"&"n9w1{`l1).>p~B C# ?Xsv@E9@MA;i}9 {"'} EDp}=:NUet)* E7С*1P*P9>Jh !+{EXd"w/mit.YpHz4C G6`46@CT C)A L#IQO0%Gv bX:gB$EZ:P.+w"]ܐ!  [1] L 5\8k()υT1g.3; %s P1ڀ#F1MⰃBś).耷8ﻬ0s HhWH\BL8d.@626:${Ѝ!BN=P\> d ]Tt!?;~%ۣ g<&|rr.zJe8<#f@a/Ù^M{k?)lpew< w,%al#e$lf &ȝXwA;Xa ,HP@S2KD#;AQ:H "@qe@HC8!l31sC 942`ù&R80}=HFFZAl jH lNvcM- nFRgӼPL5 kj1:v^3 'hiQ#wwMU8K2۰82qiOdt6fV40Fd)&bF^ImA !TdSqqiKu| w- [667bU.p60ï^my?hH$ RCLD[<2!e˦7)5o(8'ίH޶ـD8%8% )8JӉ:ZʂCPyCC" RB=)08:81(2A*lGtn/0M.ZA!2;L8#r+({:H`d*V.o0\=#iN`#3|}'Ƭ4ȆBG S 0 D|xK5Z+#++ t1`^D|?|`Azs(Fw(y ,Ap $xA`_0+ Q飡Pt"P%sUD;B:HZFTvø !>i*$@C4T%!0@f=CZXzB#< r PL!d ^m`Ҹ@l (RW'9Ex'J.98<%:$ b1>D`"޹>HhLlVE+QϪ+{ #=T@P QG:Z!x=%c97  6(zBiH]d*3"yqCee&^da">U4kD۱Qs:E朔0@dr 8 ԇ(#A>>ҐC|:G@rPaYƒ0 8Q0 aIQa$I2CŻܭӋ-Rk&QRdEץ{J$*Ed!$J_7$Ub=rLLb&8Pv^@0،HD2$ 6wA[Aއz``w4@E0XkGt wQ1$(GqI~zF$g$%DIZ@[7daD΅[?Do:CE.fCl`V@q,OFFWm;D>sM/W E ]pTJnX oQPQR;ISצ>*i eĽ#e1ISa {iƪ2PgYr @$ږt&<*uQ\5OlAjePɹ4Le0"@4 E1烢hH#ԍYO) BVTe'8!LgM$cC~iT6c31 -x#Q-fH($A=kWۀ8J{UP/b" GPxHLCc*, >h J^'OOfN'1CRq0Cs?H $1'zOyBe "0š{ffPMWۄ2TM}E`db:iܬBEI MRqe(C!"~"sC'Q1谊-```-֏ǯ^>DPAq.L"LyI:==u 8X*Pَ +VƐL:ڞBVCUw֎NuhY#! C0yZ 탾/`s ܮ׍I:d@ӲXu%`;a%`K呐fQc)8Mtw8~2xCYʄ1casHX&/n{g <@m-gqv`K<9 JWpRF{~8!iK uR(gFtwC1yaLuQ&w:3(,. AO eܠPD+A0@@i۰(y.i$2=P4ҁR00pdɥD У3)>f?QfM%2+YȂq#3F8Ȇ0 @'h<zS]199Q8nDL~6_1FMU@ M<CLpMhZ$rˍ )UT !(Fi=2Ӳ& 3`qG/|/(M C2""ɞ 艊Cs(xx'xA$@D>CQ"ur= $Q)XbH"F2`8b"f$9JR,4 TA;{v*N{B(޸8t@w#URt a ߁F(`7ĢՍoXRW FC<ĤhHd'``Ծ_~a+#IQZS4IUBԸ!$v}+H`B&}4R rXaήt9Ac`<Ҧ" fPF80)hyA " NFPnDZdjǜ/P:JTL!Uf@| G!PP-A'LcPB2xtk02V&0`o4 $FT$rO1.\R8QU.[z Bi81lx$#0*Nġ#%4PPFi2DkZ hር  ztM!H`̲ J:°I0Xy`kD?Rk)A_uUA8੄ z%PQ1,Vd9CɌ(((:YM3} -9֧31jԁ@F29j#р|7V8' ('BHF ng|0`+%&}L JO7fTagz{l{(0Gӆ"cIM˘{)(L T35>ƹ2]Hp&lQ z;UV0m.$REqBJ4dTZErOX?ݽ>tw}:PXG^ b"JT)j@ ՙRi"@zʩdQtJJ~  x6:3^s 0_e9Gh QP #H4B;|-Zr& l03ӥMT;!<5ӍH|qHK(R/?&Iyёu@ qvᖒ;q9!1+5=2vop~n("E0 J''j6"`hwx^x17F*Lj t!PXSf) u,`9W[*"gXD .l lĩ d%# NBc iD}#eom0^4*671Bbhُe dP&1J0C+öPG$O=<ы0vat:` %5ㄎ eSp±84qةx>!q m~SCDO FdV ]Dk+,$q% wg҃G`^;2JKڝ4g4T*GbR_Z¢snxa !/Rg}?˙"41JVTNCuQapG|lL(t99tkw`B0 UHziuE!^q"~SBfkjr#A fsx\1uP BH$Z KY2 YQ$E1)Aa%p,glL1ewW3 9Adžtl]`At3цAdžlmFIA&EhFFF9$PDs(HC 1i:XX2)BD4"S4 V9;I=q<|@;ZJbC1MħUpDLA=?CÅq:?vO #_+>B>rp9Eا8ЃHtdC5E P!BK P EDD  Hb8A,BQŽA)%KHH@U ,T @A S(D M4MIP$@NDIb0EA@J#2DK@Q4T#AE%L /JP@Қ)O@}sLI ,DLs7h7$y(&lf0 ]p;PvY-m R%S#bZid8)vfqG*q:K  [&ށ(r g"h$%)RI@$fIVf)**J(JDb"$U$bH X.X0D3HE4ݮ[ pwȇR",*ġTbKb,4@oۿ>γa T FUï 1M!d7i]Hl dfyFBwA#S@݌Y0;yH쥲x᭐8u","-H`)Gy<"AטS@4LRĤL,F1JpABJ|PDTCsBe1 _6GɋŊ=GX/.P0O12X0dHti=kfx 1;Ñ)ai8:0vGEq9Yfd/ĊQ"bPV*B ֪gR01򜶣BHp`C҈WvtOz'h#@8Sq ݇ߊLD9( Wʢ;C])EUJ% \,1ix<7@R@r@)) 9}#+HرO Èjt;pD||(4T<O$ZТي$ @> utѤQ{ 0}XdA|`E7B>> 耒J*T\xayf d\ CH\Rs1r ^{0,I OBn 30v d^c: € # >e|y>t/ |\LngEkYKD$I?AE*,f## ⻨씑QHRLڬ #+2"W3O_Q?  # *DVV!qr3)B0h)(F$L0@)h %%I U(T0ZheSk0\Q!h@ZFcȁh$1Ra:z=0'V Q@ B|.6$4&HA?ҚDQT1 !+&Xv7 (׉;gH+s{J$@֧K} ty$f1I H0=@* FY,O "`.)b *;V FE!@*቉*TMP0}rAHT S$0wX U}JhJB! `VWb(N%p`\u+*s(d 6<,T\BPz-5^ny)[6C(uHz> D0$ J: 5EK`$ Ҩa=G`Y: {0t{P ;_`{{R$D[7e#)-CEw=QJB,Y_"sE#c;CЙ[.:tƑLDLLMY\"H^lgLPr W`haMS]tԤ9ɛY@O8m?);+I~$pEQϝB zJR"`> ̑_LQT\s1Ỿp#7{A C U0.9 Immĺ)`R6 [e%=qCFuTӭD< RH$W`|j 0Hܮ" z$i2x/ن$ i H#JQ#ptFP"V Q9L&ZzHw6h˄VÏ2d = fjd Ä-!`b@N0!0 hKJPKQ4ӀjBtNB3'?D$r$֜9P[(&{[7@I>이ُ)б'ph 3E7B*P/b Üxrb"BP!FQ+tֱ/-ߡ<69+A ҁ1zc$XCbQ8^q, #SKwJ)  6h3KUwVB%!o6ZOMD5L9G28,EWMذV !eR4jX0l)`B `. d*Ȅ(`⦂8P,bZa0`AׂZ;djfb#Dc puNA<쐉!( w7X6dB10 d H6;@PՐ@1^i `G1CR*:1WMSMRmA]~zBld CCæG(a8z٘Y։gv 1F= I0VP$:L=\4@e.aFpGMːq&uV[3 aj)$@\idY1ޣG8AK K0ty#T1|+rH@"5LNBAS J)!t&&)“u*" L4DX U M( i ڐz Cd@m q3^p c337V;`I.Z[8?χ.sy*IArf2J~yʣ4 ^mcTg{3QkWADe2*E4RP !U#w|y;Ȟp0qG!T47$4d!I8!\GAtT ?(vҁ>@D)*~@ @;h28t3!PPr۰h?4)/ZN𚚘悤]!5t4@d7<6wC~k22* Н7}D.E!/Ȥa#*ab!z.O:s|`Ȼ4d`y~eD#JP 5tB .G86Cb e/8UXziC(>yxZhb@T@Lfm _͘(>u*Eq7<{4CeV: 3N(:#M70"v(rsiY%_'j ʙN #b0l} <_g~)"TP(a-!C #!_Ɉ3X'@C$.\%P|HX1`DdGK*$3Q|3{O|@Cia2~ =;p0l]Aq/A0Cw8=dw*iV!@Fӛ1Pp>yE6ѠOdhSTP)Ȫ#a_!(" ;B቞1N2Z a1=h ڌb;UUU_{D ƒiP82)2yĖoak sxR >Дv FXc_HhzP¾;#ROylOB"=&d[0oXdG>ҙ ux08)ngӿHb(—9`(Q95UVQaF}Hb4/yAنHBjYRKNғPtȰ$cΐ%0`3A4UUx>~'RPA# Q::R- ]FX'MH*`SqPuC+I;:Dm{*u6%TR*yzGk a sD?t=xaH{=f16 ̌[f ob6 D'EShk[hhL6Ap*4.һ&@9oe@BTehYP$LzNqE gYi^ĝ=ܡ@2fR #dSEtC&=`z 5=O?yKZs0bέ]qVDG#"4#> :z 6#x@)dԘʹ'KG )E!9.OYpvyRe~ 6xi_=bXfQȠBSBG8)=u6; xqKQ`f(>D ^oo558MBE @ (l4K{]?E$z&`I#'o睽I2KV4U12d^kr_B ʔ..6m 4osm!{))oVS,`\Y5#ƻѴp}z:DJ=CAihnH:h0 Ĉ֟Yc I(0;}SAdR*&͗ZWHLT6]iP2Aֈ)lR&#C6‰EhI}iSXN& pvI{ñ5-= +E炍b9:!č>*Qu?!@`t q{'s& 'T!֦R=7Ƿ( )1=m5Bf)6G<CcdY6?F@^il,LɉDD< D,(-Zs3j5 uYT ܄#%,mkmNfJE+p̣q1DzU*m)$қb>{܄]h ꇴK8C"'}> H9ʳHt8aT#}*'z!5p؜C'(1ʗl %C`V Bru>Ǽ:w7@=2x)a:Lzh( C] FL`ŔGICL OE,A(e!M~!-_x.ßDWPCn`B. 8Qެ }_Fn[;Ad} iݱ[ s'+ ЉS@ D 1T='AH;` wqW4BuRNM6J2 8h9~8G5aACݯib2Z,^N  *pxT%H@dІ:@`mD2PAp,~%-#_*3D C!wFjr"& BB<~T9bW$@qh<T n9PU?"3ȁ"u"#὾}򏴏75m8|AnшTl^#C6͆KP@AG(c1C:þ,*P"R4E[4z(1hC0$q#>F.(h+8AhǸ%1AHx42y46@b#t6aÓ͐2R0vdMuPiUD󆠼(Ge44%l>锜~7?aȧʢ`"}?P AeDHBX@iP " &$B!h%ZV*Uti |\X~"A@O>qԆﴑ.c+`X͵&L` \ЅHJ4HR100IPA$" A#)#0@')! (]:@p& 1 `C4 %s @ \hoqIHV M By@&bR~"!]ޓ3q7aUC>3 I7tr d;,3\a/)i+${@` T@#sMSZD@C Dd̏ ^$h!֌tX 2dxvU@}G/ۻ0b⁽C/6<~fdRc;(dчD0KUs0  v@Ŷ61R%M1t$ tLu، $^(%&C>%ES ie3L CD9B!=q.33h.3YdA/$N !̤el `EH+dQ#CC!ps%1`qHZ6E`t9#Bl͌@B$AcH9e- ANbE`Au8p3Dأ(u-3HD1U t1ӎ s X(l.stFgHs5 bE큂JB7;Ȃ&@ ୱDqX$ [ "X)  XH dZZaJ)H V )iEHAB Ƣ$08}kງI+DJ! 1yAP8h"F%H3!t3 2,Bm[Svg+0ٶq]&yfn!T>iL1Dh z;H;eH`HJt8 i<7M'!W B?(G߃A^}5g[6Rfd9G#E Vd4H CIC 0rY< H8iz$H!T+ O=3>:PnR[@X A ĻYE<@BX!ܾx!|`?" >#{S;`9S4hX CB3p1K+X,ceGcM KȍEqGTz[> yBZC˼ =w<R‡fc 6uP aQJ d`l.g#ܭt$p$lD ;fBt3G$.eW)B `}~>`DA oѣCn'IrWU)P$0a` JI HJ~hH" pTڟP )"JȘޛ'¾eQ~ Reː`&Tt4t !HT*J o8SJj+  Ĩ LKAJ @*=܄8oл=Ęl Ɇ#UI`1 lG:8QAQ8ŕV)i&K%I40R±*bp MT EP V'hšɧ#&=b>ZwUTTE"PG ݰ Dä2n PA !b}(ƖhP~1 ?ũb1h.#yς}H>v%ڠA`S<|/IT$9"'v8bb(d"iWMk(XXdD! &۬{ϛ՚ڜ /Pv}2G"4o'd &1Ƃ>Ty`N8}a G"8!qU1uB cͼ,@ $wZi2{"!̈ qۀi(DԠbr9+ɓ0TM@(,P^q@$10` "BF~D" V$f 6  yaN! ._ĢBDHx hQS f۾*iBH@#;Ra!=$͈=tg&,qn{Za˛O9Vu Q  HJR @Jb 'B}ҁ`z.E<vmHADJBLD/{`pz~.N%+6cGA9"/3zlXFG1x kr.T"BQ BX]X{ iĉ8%TC )+lX mZEcrF=Z 8^ gl#VVm ;+`@1%‡ ;&-G:l;ἕ5@B@Oؑ"I>3aq*f0e!z0ppb%.E3ig9E=@n]}30R bZMNߺc!AqKv+ B!)iP]\#K(kΨH{(-Ta>waH~!|J C!Oҥ4HD >"ZD=$ـj&T>p9! $?LJ^ c̄q0M`T z1 `>^ qB $0D)%BhB%B$uy94"gq= ka!&f?H;9A4`Ee)ЎȠ0qbGiRv.$DCN o!= ':0!dPS"'p!;oKLpSȬ`7Ԫ `;,NEG1n|NC3 u/ӝXsmvIM1C!R2PBFQt^3a%$?t ?xô`.ʎ_992CSO %3D\p UF2HMM3cl!j&Hbj#7^æJR L1^(aͭM3 `6?HFـF G g1H[.mpJ ȭ 9T]{uͶbJFV7oź/I2*Sذf1oFFV~kޔVCa8%@9QpSSFmaHA ,!zG@].X]@0O70pY{)* bBroux(@#/;5QO( ; BU  S;_!?y#" ,~;%~aF!B{g&Xs2'_A߼CNaϊ{ v߸,|JdPTK ` 윁l2 =I!GqG*ҭp 2xR A,H%eB䌋ֺCT~J8@@sPjVJWƢdﯧS *Q؜=:!iSrAql<]!!9D$-*L/<d"$&B`0HKۨXRN  Q® &2h\r 4T`Ŀz Zj YFIFV$ePfhRNF&fH;1F9iEGXˬ4b1 )LJҒTIR jdNbh^>6i}||pɷdVVNAE@7w!d W0US҉UY/{f# f#Ӹv|n/ˀ `e"*</Q\[+>r#ѐt3=0E=x(zHQK o1әk*I կa؅<(||B lc6Q`O794zX0gvr3@42v+"P*`B8>J@ca v`}G~c6}| "DCm֜ 01",̊ i!33!iuf"& e:ܢsSM '0@QFCjn)Q^'^^ .UF *u!;K U8}JgPB'q y{DHGC P |DlC =8E}Y,<')?W U Ɛ+en{Åc*Wj#""쨐(TC,A`DDB'QJ0!EEa h>#uC _,r H '@]aT<"! AEC@D)(J"ΔTN71" fz/430h`$p2bX c9-1a!$4;ŊSI 'HAi  sH2|7q3H d(\R 2K dHBqhRL2H2Ɋ1 W %",(,R$`*% ZF)eB`W!d`t$ - Caʞ^.$M9i3 ~?^s[_UW_??ߥofc7~ߜ/?1_w>=K?c=6/O?޿??:Ak?C g?O??OC?9~kO7?_οoOV~\-W/{?o]SO3_oߗ?kLu[_?ߣߧ~ڿUW/FG#-yW167\H$$Cb hJ$wC@Ip0)<[kgX 2<9+SECgvH4#HC#b |I,XGS `S ` Z%M Շs M S~9ۅHyZ&gz.PX BTf#H4#H4#H4#H4zI'<=H4#H4#H6|9+##H4#H4- R4P#BҷG8b9#Hb9#H`#Hwr19p]{P#H4#H4#H4#H4#Bд#H4 H4GYf8"5'i3û*-h`c ;%77wK+ybhDMS%,⌉; dLe@@Z9f\ʼnKpi; g;?V؜= |Z5wBMIЖ-[=JF0;0*\R1T*qj$.:[d|h6XyE|PQ:WGe<(y3x9Ut!O F-сƍx䄵ڠ25%O9ѱoZe :kR7Մ,$IA.W f83ba(/ġ=7HU YLv8'$4Gyߋv$.jXlB<]6Fg09Bxd hHr8k>D3v126YE=%3 #ބk# 3ai` 1\N`roSϓG;R,cs3}O'ѣksaI $$m #x6c;%Ɓ |zX\#z,9C"c€Q1?fr*g89m^rA(]UsGS)/B[,(/9dJXzIUhBE")0'֑БE5`T"f T@K ӰQuCd1'lc*gZQ \L9[* -š3=ѫn&,fU5EX@|r՚ 2)qnSa20\z!p {O?ht+Ne`{=z3_&ݙvAaD@H}Q_y;HO|?P`}!O4"cv0::9?I>/>pySldxDsqQ*!PvPEHg@Ƿ\؎)GSmtIz!䞰x{;d+ 1T,Mc3\@ݲC"jfp ok!=KRwcNPK(THa$``|v̷\C\&XSS/^1pT(㟿tq|܉O]F*d!V(QĞ Hnopxyp ">Q |Lܐ>%7u u+"o= M$HL0A 4Ϡ_-4!gg7Trᘾy)S]1o0>)wHD"'DWTSObhN n~,,{FA"RXFC!%0#HM rh'd$ R QBup? JpLBl"jJA0_yCCg@pH_ɉ"\Gn ? h%p& V&O@!h dC.81 gMC j$/3u롌|!9I+l\*H1o(q@̆3ib@Zz|]fd:Xy#.$Uj`ص &# 0NU9SQ $<Bvel2\R,6'Qz @MP Z Sυ!1=N` AL*(!l`x ȑ.b[F HrP8Jkڽ< `Jd! I׾ o@el$pZ;Mk4 0&"I ) ج*DZFa`,B2"r 70T!U ,DA!JHDB@R"t|3%d~.J_U =\Q jp8S1T`)Qcc>_УQ=DAEz3lʄ SLLDB)N覚j̪"gc/eƶx|`\ƅ)kBf2Y``з|\2. `Ȝ#bG$0hښiM"5"-b '&,ԈX% 15{W^:.UTD H1Od"FymceK Q%_V A Ф]==~/<8$HG"K7` lW ?^d}thyG`@|Dߏ;ESH8Qf?ːubCcaU)T~0S'M|K5aQZVv%1<6 @N'#֥P6$E{`GA7@p|@rޑ9H@DP8 )gP_>&Năxf/ߜB0DSs@eة)# ^];BoKnG \M?5!IO) Wt0t|O:`@E7"LN R} *ל YAi\ D BzANCm*!C#ޏ_\`![ Q*I8ȄdH 14.,<@f&s`&SδAf`N f0@*$hPb D`JIA#L74$hM(TFSC1CFҀ{J CF֘B`$A\4A#PhXkt`g Q&#b9<IT..LPHۨ hnFrЎf#.f28DG A{`DtCxeiO@%0,$:~&Y\O(]u9}(" =`G}:1ȵiPq^W{c:/Ǹ=hnS@FZi !=)0b"=Q:4b/?~7J)  O΁M J(iJX7 iU8yJm  yGP@Cl|u!5@6]xОBj'c )Ԕp#$ē},I`JR2 RdUf D2B(Uc"Cd#i SR!5EC"Sq *8D.pI1--n>"DE\?P/hQa19~i=RW;zfЃ2LcĜ lkHaPF|SOXEŜJGH'`D

j{B R$b`瑇 AIkDID H1E( hC:B#>bZgvxJDz&>ua8+&B>`.IGq8+I֠~_D"i,ij@-[u/"T ~!"mgB~;{nƀ+𨏫piwTH~rH,X@`DOb:}4UiBW}('H~ %0IJnI~çu#1bawFCs; \N)1QC@%S!""QHƁ(`1b!i( yfXbe2};w"xvp"pjjI7~Ca_G{S m׿> /Mɣ'oŨL!_D)TpdXpȇTWҡ@ 8ȠUi2Iū3Ih $Eb!s-7 VI8g AM``*).r2,zNH Ѻo5*ˣsa DњI ~` 'ҭǖC5r[50[Y]&$ә%)؉3ǃ5e2mʡ~^ARRSAD8SꐟT1qFT. LIpÜ6r͉l,hjB&2&ɢ"L1+Ѱ b*  HxvcULvʃ+(h,azh 5r$u ƅF}l5)p_GL<@VU7J9O hBĀ$LҍԲC.kP*Dha |a ߯yY`D"B`p\'GE_|@pX!2 h_Dc~}oY'DTtB=F휇N8[() ,A"")P"+R= ZpRQP1Ȥ.> Hm*Np0#1,`C 'AHi:zߵϊ SBS&cPFNVF S"Il"V{T4Aoh{*(^I\H8Q\NcBDi1MAOpCj2e%%>E]HPB{>GP!ՀIl'8"*hdf I"J^'ҰLtZP6.H8baY$]10¹a6 d@K$`IQ#`/A.&F}H,JbP)DKA 4xBC"GɳOIi6h[CmΨ@ʇD@ fh(ػO ^lDJh :40B(׷]INxa(L ua'O vf7)%G{a QWbPtw }x0!4aYNPs{%|D#0!Cwew]ϵib 醽@uD,Whpb'~ʥC>>ZUhCS ;79O"f 2Ƞ?_Ad\(K⎘zZ1Dz P?BR^^Q=7pTEUE*J{0`<:VP$E A$A T+awHAE uPoD +*A^=y0iBUA^ %v7OotF Yt''&0jhôA0z%8HkP*&B{(A$ Uv:?y{?NM}Ob$~mqyn/O *rzev[G4lhF'Ǖ~o>|&E&\MpRQS11vf PVBH`)d0a &Q J(&#  C *[ݩU$Q"PL+BRTCI!pJl1;BI ~0oR!'|p ?mi@9?!;@p3;;U]\$ 1!4  $0c0)  b #́tԍ =~#e61pr$y03Fht~uE#D/#aedF- 91aqHDϦt@'>ZT!!p>e0tF6.(yj4hPC$ 1"ntF☎9Ø`r)BL rz63?8;;G)x.vdVۚ`DQef CX3$R(*Ƥ.6?zc3Ox<`${ ( ?ݍ e5_@cߟZ}K#OwO2Ͻz}ӽ{wzм`]t޻;bvKۃ{\h>^͊{}=:l`ҔWL{\eΫ+}ƹw6v]q-۬rb7c }@ɹfƬr!֔S^"U|UlVǻ>_{7{cPP  <ڞtZHcu}h֯djZzٖ*%fݠ= f<#Vvר%^ l6na{vݽ6>u[ǀu(w$ {i'Bze_v-uo4h0ɖ}{oZ=SYlѤ;Cuw7u{wV;{wݛfa*ntwݼuεc|6wMWwroz_wWݵ1w׮Svy}vtіso}}=dyFrkIכmK(ͦay#ϵzkݘZ/cӔUV5uHuv4ښwV>5Fw@GCP(lܐP:QWz(^ݭ}ޜ{] vM٣Ŷ{^ػd}%fؕ&V2-4{M}Oq>m+{ѧoZM.=5aݮ\jѦ)W3Y{g#}ih PmRǻv(cyNj5mc<}:3Zqܛ|cc[{{3Sq}^A qo{뇽2$'ͬw44Ѡ)ٺ}=Joe `:pp{df/:۾}uE#{k_@sBZ)4G]UW|ZB4ۗ>L.;dMiحFhXI7vt&wסIL!@ iI2hʞLѢMHA@M)ObꟀJ= FDP@Sڀ$DAiOI?=P54b?z&FGzGhʓ~_~eKm{64kF2&1V.,/9`3. ]`x9eVaʬ^g31x114b.8gX#sw5xY*:-u5s˧ww2f1^1Y3Ujk7neGvF51XqKs.c5;sE[muH.) !$!tDUU4']CW1U,U&y%OE^zb+\Dj5)&nq#%ܹstbkQ3f#W"w .pMb$!#51q%o4Yg4pTf9V;8ꥲ*7%pV&szPMF'1 ͐͘xn/75wu ܑ3Tº6Cj[3:7NY5cFnݒng9932bBI-xJ1A 2HMB 1 0%4"DBqBU$@ @a" &,RH_E HR4@*=b"7%RVWgqAEbI% &JUW*)Е n!T⡨P$lJlzvvwwvq7+( B *I2HJ PQA|F?Hp7a~S?|7B1:aFgETb){7$(/0I&;HB @y?]"v$rs|pa 5 c0c:a4.q8M=\€mHR{s1DIMIF jƦ* ѫ1iٸ̐cfoM9m۴UeEG95nxGGùڑM6Y024'TdѤt#.HmmzkMn?Wx~Pr\kK Q2Cm*.NÇ IJDos1F4h5D}$ )O%axOLTҤbTIU62f8L#i[7bO[qɦu*[5k/?O3vs b=hܯ:;4NӓOчD >gʹ8zonQG_8i<۲;Q$FRFR.Jb`YeQwA2NEP.o֔hX4 `8.:0ԆIK&[X`B&!'HdĐ()"r"i $ 1@&$Hh"(qhRSdZh (3R0( *š/оԾy߿S&pI0+<7lkW,|PmӗK0ƗjokiM=NOSF;cNJ_ɻ KcMM롞16%: jB7"l770|ُ5yU>{:6*2$wOY2z R3W(,ɌvyiSp ѻe aC$x(w(s.|tWnALUMe(፠P&&Nzy9 DĔZ0JaȘO@:JPy7Z?S]8[ka͟w㒸++*4}; qx5Kb`\24/5v |fk ߞ&fVDHªqew;qH0&&"J) jXrfW+CrG9^0$5C ?--R*RUu`)FrL) ܤ0FB M44Ѧ+i0ƒ41VD&0l "epTu2wȆۺ`Pι4´!P0of#K 4g" h*"+>nS{cǜ B(9& aٕ+d)Hiuۗq;4D:!L%b0"='&?i9X5>t)_C܄s wW*u"T+P56alJdԏoyq}MewH  S9XߕjnkOH9cSHC *'y &qҹM(sͣb rXf6 JY~ƙ-`AI99%s] J9h ! 2;ѳওM 2E58=t ~~0UUTUWf:6cc-4lآv:J%)͹MLTM!BTx`DAD/-Wr 9E6na Sa 1zӐp6"ὥG̥c V*bA F〼6Mح+Ln)U+Ri1Q4iUNg <aɍ1aYHHڅni o9IU >H'Rʈ(0$?zGe dhh l4>, *$-<|t()%U1{|tit29F_i A+V64 cG*qB"P QMgJqaK;haUpoÆ'{F]dUӃJc& ZJEeijRw ؂1*ء Pf0 24 c#Gmy]Z{2 d,+gwɕEW_Wߝrw^Nm6ű>vV\e H3$jD|MZ><%BaԚTןNWoQ[bnGreB`FjJ*AJ#3e'`}[ٳxTp62vAs7Sm 0*mە@h) 3 Ъh*ZCd`jN1lHRp4dpf.eLV-!)kfaEBC(l(fpXn2hZ%R^|2lȼCT-VSlT[Yd cs" 9ey&]$AI1F9$D`DH*lqjbX6`f 2c6Lȣ0d6&MPPP@i*ЎKSDP0AM,Tj"rh"2&,J&{r8# BHf0ji*rR\$Ŕ\Un݇Li4٥SDI(4I" #b wδqa90s aj\iy! 0' 3alцD3BT\@DQU %Ƌ&2hJF '3R" *H+,"B( 5bDPRjr" p[]1[7 V& l&C{&eda(VHۺ5i?>>+5Ng'z~u+:A, , Q nDXU=j߹N_V ;$"!lA7ٙb tDmT˟|O )*.FrTR%?MW;+ҰxdH@n&t܏F3:;3"'[IqF$$ al] q}, a,R;ԆL? ҶnFƘ3H3$`>I1 siJl5b LƲO:00wP̶+>~يM"AXJ` &Q (JwG])^/Nm?Ç\p7 t|Grަ+jl4boU7=qCm5܀B,E`X;;<ޣiջer\ƯؖOoЏ- O&TE2IX*O֛h^~oüaoꪔ_t줭oibnQE?:3-g:eLA``(⸏l]قt'Ba=*w=uz۞ J6G6 a #,r4|Li_i&?: cqcirEy_ޓn$J|"h~&Gd*U6d]qc9_gѲ4wԓi§ݓ(bR7VxoXb$ #%AI8GlA6Bld1T"wlqX#f2Z*(W FZ ȉ"H3F!QxOSF=F>F2)94T47_r_ѠԜVn| T,T6uss}Vل~>ój~7lZbS%։4AB5Wvp܏YSXofa>Sd4%JB"Hidn!JF!>h(bȆB1$AKĉlOݙ t "Xnh btәrRZ4MCLIÏɖ^a0opĠ[oW)a0ΆZUkQz#]Osj:say8=Ubxbg,ԅnϔ)o1XU{}]wVJ6&RlcfsUQғ86ȝUuhnii5pt!HJS^?Y!/Ô价 L@yDD!!06|U` B)DA9d=FUIh@JۏkP(PBF şzҤֵ5PRPL-4D8RHNthƂdLTSe>%JR?XJMN=hRF *CpGH!8 Ȓ1."J$"$ J + 0 $PH0 ̂J* J$A a DrQP!;tdքp;76f? 43U%! .Ii˶U!x>j} БHb$ i%PBAjAA0M"H:p\$DAXD#!{6X Y1fy'P%0BjGŏ='(XCd=ҏ7.Y_~&,Ӿ :]{,rIH{W(hdPЫ2DMHxkSS KFU6]"f-Hޣ } bQ*UQUAEHU(TQP" Cl,X×,Jb4@ a$Z f+vIY7Yw1#| ! 6/} :\3/@ML\וzr5E}PDa~AiRhF ? |aؒ)Y{C|$qg?@Jz46 $b= Ej;25؏4z%C E< $l:?7!U@9~ ElU_!o藋]>aFqUU R%ysP_w/! ZZG4$Ű mn KOaUΏVIJ֨# #Y 'ROb zI䈑(g;$2!HpVe&Cv0Yϒz;X~g_@zW`}yWx?kɒ;X^p!Ѱi0ř6*_HtHDtd"BeHGo CRB15q.]IZca`֚ed{::rbY=~gNj>gMs Yh{gAAo<1Z@Ƒp̭dϪ"0f2>2&<`6k'~5*]UKh 3gBĶղ*w#2U T[$S^ }1q!~.UmIJRuv|I_L:#tM:Ea}~Q( L+Q+~ɸeYgQ{*@Lbx }w#qޏ8msh#dF|͓Bc 1N!1rIa!mǔ U qSF(A4T(>E/Gp5F͝F+u/X=bD|}MjNoreTZgOaM?ݣ}$v3KY)nAJZMy0S` ͥM+C3 # PଌD6 ;N=2H4Ôԅ2oR K5XZݙ͆0J%Š(( ((,,"0Ȣ( qvA 1}CfΘQ%Q2Z^jαv4݅JUUEQUtoHՉME0h a4VQېE冃T1m%1"A2$Z[+tM٨QjmZJTk*)mӛo~Yŏ6/X]hUC`fecDLc+Xݹng pqT%UF/l -$Cy: ٝ$^"ucM$HęaPR+ƙ@\ZFZɤ$"6 Gh{mBస-²nͯkF)wىq/bKde I&S"V$98^J pE(A+1B>D1QUHJS RM#k;ףw 'AV Z&R4ƺU $EKD˓''$i$m1&$ӦK'gȮ7uzq5<#zW͞U4@2{@>Y1h|m#JD2ESSο]zGGg꟮;%=0K1 \)-!]{2=7Rd_BxOH/q ?`JϋoőzIj$z6Y4g-_}^֑7djfzfcUL&!7j;V *HM1Rb2et:oX*}xaaiSZcɳ%I6eM4ϳ19ɮxiJI!I z' h)ZRZ8GOfر!4ɟRy>65 4LHIoT$baq(X+`w S \O਒ ޮ>6oLO_EFJZغg=%hy LU&1!U}d,.:a#4<'#I2AlbĐ1%¾rT*(P-q2 (9&90.0@᳢i qHڴ@,#ԅ4e%ENA(ŗYᕾf}89/$(̑ EJt&/q:U JCn؛@^NrBN쫢gimsI;E4 Q=ib+&W$O+W ~Jua'Ifh;`Gy% 0.U61Ff-UW} s2,Xm@i&mt#ԒF52_qL!i E=G$q 93 ֵK9<{jeƈ٤LA :r9u ]NgQ:'l]s =~0kǣ7?ﶴ a;ix}'7R0C_9!w]^\ QkdoEioÜ m:|H ɻ`#i];$VǗxØ(n C&~<4:Zw"""$DP90xń4N?|z77y);iOCGTޯ@Ҧ@\)PInYanQm!%fBv FI`l5 a蠼`u34kU\ ώR]-= .I_K,ˎF̼ZHs>+*3ɦF.%%lqJԠ mH'ow׷{^>\[yN@n1U^IG .lüQeƹfѕRmvL2 -]ui'#HS`ƴr@# K)-Y *l[7 !]Y2R^M ޘLﶞAZYDs)X{f  u#&~%j5mտ6&<,ELx@xb0G1^ѡr e%ޚWmBEn/AW'uDegdVg_Y-yZmTNzų?g0{WWveҒ 1% jc] EsI E`V5p{ߘ $$UcYB#H"@ 4 J4* PR"P60b@$HiQǖ~_CnaT'ԢUI\~埃Ѐ]\HȬ%MĈ 䪯>׵c~5QC?g v;j n:A[ٱS)w';buĻ~B!gn-YOS/H>ja,y{KTX(on,cX!~ }jBK'[઩e [kG!S>NM\騯Qɩ%6J<_s\|a%OaCYwG=68m`hW&;T>V1|< {a) cۻp £A2ayo&rQ./Ed괌q~r]Q5dln8:}8ʼ;mRZ0ɬYthLԐl %8$8()&@ KB㢵a xC{OqXC}\mOI]s$s"i0J݅3R~SuiAFLi" H7ʱQLaA{6^C:/ w]3CeJO,brcf"Y\ C9dH(!!-zXoyϋY"V@26 %럳#밠a0^Eho۵ukԨ}/RBu:p#U6 EœUx/߷zh[e#[c 3dN͛&BY&f+^̲wX[ofJK]!rqQ/<ÁǨD AQ"$6J{xۿCV>N^AqVLd<4\vu-^=K)v=NӘjCWGVdڗ2㮙Uȥ4sF[MPQ"UG+ _G]eΟMb 2i|"7窬}H\UѦu{ ѴwGj|S)JJ PUz~-j#8o|Kzv*[ 3< x+;]!ߌwۋCSYJs9>5ck# T):|<}҅nV9񈋔c`GnOюIz#y?4Ws޷1{yc8έn G=j}HD-aDژ pï'b@G]dU/ԍ 1m͢^fߗ2Gߺ#v>xlW{q2t=uc·*eg<\u85g+DUZtTp8r\Ciw@z){jLĚ 4$_!"-a) KJFyz8Ǯ =,JRKzM+><;\Q` T D eGUXȳ>_YCy/!S D"AZU<\''')ggr~ban  t2RgD'v+xloK{-z 8IdDlÚ胛]W\K$h`1MT_N.,`hBZwN/HC1ӓ8 %ˌ &E |Y j bcWvZai)N W"+iρ@'cI7ŪDmJ0&BAΨ Ttu$%I&(ÔvFTt/^̥zʒ$ JҢER%@7xOA,u! }Ԋ9åmKDVvh-T =p-f^#((HJ v3$(*Gy^TG,+&hRARۤ@e*֮DVc \rD9%M.H<m0( mkZ,b rv7H  A|aP`'|SH.K|>=|$J*}H5}+ ~z*ucNsyvOR}Erq+JW1)uZ3'=5U.o7ǵW.v-m:_hIutkk/;eR]1Lhh0_IgUתe[kE{(M[}{pm8sN=mwyP3rM]_n SiUAZS(p=u%ۮ1,ls;fWq< 1r"Ya3aa ]g_q$byx'Cwoe$H`(8Qą5JHN5ׄ"n%+aI|߁ 9fĜqd]=fZR4BRˉr]lRP`nF9Z$M6 JGH;7AX,;W}԰"ᑪ3Ydp$9 ai[:%\w?ve )3'I8ϷmK9| !ѪӢNXΚVy&aY郹yfݒzN] &50%307R?Ie+N!eC:Ð @@@nAOLs1pGTO~KnV+^HZ*u‹ņOMͯ-;$J-ntE]2jU|cUJWϒIwiS/%M\*g]>z4,D~/<%zy!K$v1Z*x)cn7 e iI Б&~<EY/l|8(SCA4 8Ò[8H=y:$A)Vܟͩi(_zfʦ1, Ep̆t9T6Fڤ+x:D] ^xυPcF -o͗-jyCClww9A=l0VEEx~2LrprpFZs^"A>G<˳f[W*`dvu 5" {֤2" _YS9PF( ^?kUtú%Hik&>77j݇%#>[ ˎy ֝P'LDa9XQttiW&vLȭUJ?o[j t׬6*!|CI [Ca3dDd?vK3*MvƘYn)h<+v%o ȥx*Ra̧ (ɍ୍cvLzMT -4UzD{}oPG]\20,`1,c 0,c" ,N0;h`=*=z6 Y 1R^#>*#qK)pу2@Iu/ (r;VϷ'TF6iM4ӭ72HQRފap ">i4&Y( zZBzj\§dlx.tE DHډ#W; mT{6SUj~S2@@5cv[e%aqii c4ˋɁq N3Wsʹl;6Ab:|V̶פNtٷ۷oE4sPK!͟lHِlשPeDzG%"ImS`巄S$1ldР>l Utzb=}}Ǎ,Af\r[pê I,ݒۈӱpBx$/x31h^؛6*Bqrx΀86ml 0<<Ӂ@h6>0 ,]uyuYXݻIm!)'0˜[?\g{s{n*ڢrw9:4y4g7ˆd(i}C*42YU5Y~>H,2Qzj! q~3rۂy[XH?GB b`&< Rov2Xg?oI3g'bNC #X0?IB)/u{кL5WUIc0Huc&1(UʩZM7m$+ xdm<$ɽPyנGA<񔊠wd{zz<Rf KϲyPB[DQؖ.=^fdνYR$XYq&*ɘ |MX.g,ҀO?FRa=,. JsԒ2bbwdR +4hy>ɘE&Uvп(6Pr( B Lfa3: :_|x댗HYS5@JITNNg^o?;wbHHH9u٥Y aK/*n$ׯ#՞*+2[`ÂIt:iO'⪪,RM.'\Y}qhxD\ŒNiX\0d4 e@T)xUP]M i)8bjQ)H < -$$ (C,Vz4f7vwf%R73r\<~: zFfm*UN~ #_/xi4d[ `uejhQT0Єy(%b`JEc(ZiXiU$j -23ԩ3aydy›\Ր2c.}WFVH9b<h&6ir9#ݴ x\Eļ /EƳbUH @TK/UJ]0U'tiƦ[[6.޽}ǯ}z";4I lƛ$(g (6n~W*ze[ӓ[8K ҧf*ȂAX%uϟ8PB3FF{MB75UގQQt`LaA%FY 5߇RL-]عC"ɤejIve2;M8*d"z V&^f]c&] hT߶Psك!o VijBBK=UC2)򍈀-P 1Vl~3e>Z;"=$]Tr`tr xn¡3Y s2\>CŜV!pkiza>> JR]FYӱk:6iJ vpT0zdfV2?`2q̪ɝ3l$p|u`غ8dp4pXYxHS'50>O^Iw0L5s=ǑAr}h**W? #V$^԰Ն'' [:^Ө䥂|)+4fiBI q'9BPT-A+#;j }hx"{'x?QqA^èyޮB)Af gՂ9-Hh4_/#N1د$Hs#$rHAB*2WU! 14KժT"C9̊vi%zu !%JJk( ,}[lﶫrzէcOntNi207=z*M Gz*6-Ixjf+0 ʂ 4}PYTyZEGWyyY"2 /4ETMH AWFBWc[젨fZ$I}_$iEό'uK!}d;=آԒ@"GP^4d2U$r6_2F9OWV_#aĤV!hKP! Vq %Y?/1aiyF[+ eha핬KdH[&$79ZLK{PZkQFR*2F|{ Íх ¨yôpǖ4!Ɇhѿ>Ko'5D,t*g FCsϜ|fr uۖ~R[ z=Nh(]AFnR*Fd)dq๸vWY#҄0B8SkY!15J))f+r^2Wb6s]]D9 J xUf`>^sf3ٟZժF5L\J_碂KDK)H_ZAi%!rFcA>P^@>}ҮKఏ{. )Ϡ҂]u,-4$3e[({Ij3Y5I2Qh.W#VfI ea2 7:V)A IHXSY;iT VVr0. AƏ6z 27]9{04ۖ.EX@+B 8d+rfBAMejU3n{)f8ZV]_sA Z *$ N'i5,m1D,1 Ź˜u=JF$ME6W&&2a Yr3t#)oUJp3 v-z[IAwS 5\KJe+ MzrTHLf)! A2L軱$$P|Q6V'juNszeAJlZp%XrfgL1h S !Yc&%!djGՕF+T5 AimwX5rfu .5*z4rz[ W٦]ҕ[+[xyp%g)#d@k2jUo*"mɓ=28ą)xz7[Li&xAh&YeEX ȼ v|7gz݁ex)݉Fl/<]8h,fDө%X6 BG--#e!6/9x1{#' ! 9.Dps$s;+ '`*_p&L*)!`9"$¨$4sVѰn#W=WV 9dђ #IK C5pNTcjJ+j[yy05Xi:J %&A bh.5 y}6qIdTFF]Eg+)NSűe.v<N 8w8`uHdQb1[ 9n8> 1 rUV'15vQge`O;,>'$ES1IZa}Y0L9]8,p[8Yb`>L1'#=#ϲ5Gs5\6۱v_I*ͱG hRefΏċO.yϭgXY]}dFD&nL6qr{(w)7lQ$o4)! 7dw';6]- (Ѣ iM(ih,|yʢC>נ1Fciy[˞@iMX-rK;ro1Mu jÈޒ/U*-Ug ZfDl^7A"EEG°mHf5 " HYJfD34ffF `X*o,*21q0"HJ'9)]@ȄI ʑK$^^ԺZ Q!AH! h0)&`DcD$Ƒѝ:*8I!&'_#1$$FÐK1F$7xLuj ZU JT4MFJk;U\1f=y4ݷsX$C "󹨫Q HBөXS^j=|zTMlQѢ&;xQozl'gĢ~̑Q~cĤLIa%jZqN"8p0Ta'pFP[i! \@AQ2[!OK ͣ2v;e8Nǎ~ؙ/gd-WۿEfʒs$צz*'/gͥ ӊzg1jЭ #edӬbS^q$W5t:@AQ=eŔyH\sxs $e<aA%CHsWݿT<]Tiĝk\jq^FϯY!yCCȚB"rt/"ID< ,iIcA0qPDϕKMC4kʲR:ͰEo49=f-RMMUy:7IaG8f^Iƍɉ2%$HHG13nѳI !ƒFٕ =9*p5 {F+ xrAT@I2rpS hW椎B[tFV#QhHL ,{IJ( 8/): 2B:.H㽥h/U$o9| 5>yyqOp&!2V_.6PºF*k+D) Iw3[ h_tP2 DAt"AW]nl s($N6n|o6q:Fe\+e,p+c9Md1a̸bf%+ߠ:w$ <UPzv?};5HcH 1TFM=OO'EHĕm CiE+/wnHa:+&m45sJ P=b+ dB!bO^bq Lw@\SU 7bWKH =g aˏ}HBL0J N)Lq"VTV.M+wlzvclÅzٻOcܞxai C3 4.ЉkI(,HHE;C˴$w-:+wrlO S `p>"x ¡=}KN2+ԎeYb4`B؋} ۂK~qdLdF}Hvڱ8|`lc If8Y ҸdeE(EޭDbsYgFxmzއs }ҙ"*Y#i3&8x1~&ԏ/l_VIH4.RH čb]%Y}~"< e`b$VG͖I3rVl{w; @ԔbYq? -w-dbkƯ1;Byf1.ni:];{`Ժܾ}Y&q<eOpzz: =x:HZORHH*HG c]I Lw=&[' sGT/A,^^79Beo'2L^:0}O9ʵe>Θqڪ"M4x.@R3WN.(,^8Ǔ~u> A8gO?scS^Ps\`_k<4kK<{,~y 0賱69/vzut#3Gѯ ^r2Ns#OZWԌ:'ciC\=vCFcѝEB<3DkL 3Rbdۏ 챯@O5al4`GY_l$`X.W-[1eH,:"btȭ^=&ET`8}F 10  \VqS8*kv\$ Ȝ 'U5u  ɾˉyKe*:JK;j-+;¢AQLSH0/-4Vh36+~7 #I X?;/k%.շ fJyA Y$on9A3㖛[鴭V;E/:G0䆆qg*ͲBGN)S/;5Gںdk `Hߨ&0:6hvayak%IpTָ\Ix\&$PHU#\]yA+D-Dգ}[N4 )Ċe?+>C+%Ѐ6H?%SxU/ނ9|fWWXjXkah/tvOȦ9s\M*2gӫ-chO d.ƹty-gEJ휉dV#,c=4RRU{݆$krzg1ġ OGZZZZZZZTZZXXXXXX{SH>C*&3ABICIB0Zq|SQc_79jEL褕*z=v}nF03*ګ Z&J$&F«lyvPƅ5,1fZ$X>A.ޒ)(:"Š2{8KِLVW$mEж9I_h$\$9Yv 7p??Gխ*4Ld00s qo~B;Ƃ'CgyiՅdEcځmG)N%`9m56[ q(dȭkMfL8AID7"YTˆ (M(lq1@C )i #8XLQZc TұUV*¤`PF!" 1U1KRNš0(Ep%h(4ªCb+\ª >Q?|@ A_է(;.1^4B4JL dHD@TٮUT99, 7:-UUaO(ŒaTl2 %*?@q=0`ŨȢb,Bh*:0CNŸk66lXILa,AS R$HHR !!'ంf2]%۵30"!G?ttste@$ n=4~I>%Vx$4VG!d$%|KHH/8HʯI)ɞr_: QV9eA{ܟTL˂yEO9s`fݐ큜]Ƽy`$G#&-65eîE &$.s@ HC%CG=&i%5 Exq` TJ&0*Ab7 5Rt,}S&J֔&ꪪC͘cXM6i#y*]ÜRI j]c0w_yhgn$p˧R)`Ckf">RaR rE&jRjNB4$k&)x-Q0 RER *LI1`)w+0 )$L+ 2CĬDJIC A CE0ED08NtUǭDnzۜJp~ɨ7$b> [6j}ATPSG"1s2CkN!/Ivɸ}h̸1}aI֎mzT0ޮ;7S&3$|zB&R G!6,ʉVXa` ż_~h-8"?(:4 KD#`Mi#!m+P(D YH1N'{[`tk`R CiJ^"Hdd"nD J%LKKDMVA@v͆ð.|A h|a4E&YfV]#"eD!DTvo]," fP&i''`AMq!UNwQFNLs5{+ҟBM8=J|H}+&$ ۺ/CzG4x1U~wͳ:G{ϐ #愒eAQܦG@Jub{O6Kcg94n41(Zيm=~{l7SLV*}<{9*!kGY!b/xG^ 5mi |P-u}c1|MFnWlCv=o''O&0RnrlJ-0D3CK$ q!"&`6%l~s/9C2??^"$soWnc)QU2eRQDheyYpjW)kzo8k?zG1cZƫb#dC{w %s9Ls[VzƩǒT?oymf]J7 |^U̬jBH+|U_~=]Ĵ>:H;(Y{,\ly*%803Y#[퓁V4s\Gs!@qBA>J14J2r _tJE 2hV~D,69Fc?8ddxrbgVal)dAQCXLpӹ?:4ž.1 2uF=M+NUHu=uo96ipy{$BiT 2(HLz$\l B? KVkҧ>\WHHl*@MISwك1]i7zV3(eJIܱxRZ. :UaGNAM4)aqurb"$xQrGr8ixGvyn3&OR=$9))1Sqia |:J;n^ݏ-Mpޛ+pcfR$ t6qUSoT&C^)H[;A15HQT?p#~gOXju#n Ůo6 9Q,^*3Y>r=1IX'Mk&,(FTE-pb4V4p.dk"A|JxY| HyM{87?;+,T2-"P!H$|$ВDQH~U ▾ި#+ %QκkڪLk".;ORPL Uj rW7~[7Uzc;cn1[QfUR*X|A]a5&R48e-KDQՙ:$3YeFaAVwƛ'EJ~kš!vxUg )*4Ew횾ƒ2EE$A&FV$X he(("" """iH&!))"RX &( `b" H2D`d%I$Ud&TAV6eHˣ2ԄTH6XjPeUѢ5jD40 EP~2MFNY2 1!)$Q4j$YJ&4[ɣqHBdoyR@%2((hd5DD#c$)D;L߬%49L& F.& )1Ӽ p E(f4a'FXXNLĊKF DQDĤ D@z(EfW60`JV*M#"vXДu!VU)C0V iN dDLC  %(AE*K* VUb-aY%YcW#_FĉC !$"oJQEQEdddahX(((m afPy|VE K Ht%%(B/dJ!J¦|ִ|zȜ L&A+HEboHlq}R\5LqUb؄0<$|Щ =7WOBMFPw=`az;^c_91PLd-Ցfpp,=O6.Uj⨔beޯƞ>'_ jBMƷ&T$R(QpbY Gå_c_ i*l~k*tWpՕ9Bf#a"O~/v0H@?#?YxJ1$a_Ըrr @_lScJA})V2YbaM*p>a͡U٣:rw7w6vs*4vcfw?RulέW{DG9L(rr?%9}! ծ:"M5<z XP0dۓfj|a{{ԯ[s l*,O~ > 2ϸ&)6k0 eKAPW]Qlb1 rS _K 4(ͦ%tRnwz.a2fQdL0H!_Ky;́L;ރJ*<-V~YJ=cNL4AF}'cͳg{nnM0Ӽl(f2H@F A3'KT[alW-mڭ,?FY&HZvMC=_v?-~ p'vTޠ"aWb86Mr94)Pң-#k$q W$^ GiÕVY}>I.2C1x!0 ~a懮ĨeOahdD 㪾}ԯ?-vP-"YdWS(]J,#x |M0 ;$Zs"L$St,*R9x0 %^ Fbj ))<TOb8{uz5-^AZ/F$=-6@+9ٻ骜mZs3[Y8Oɬ`Zg b"8JlEf"Oc.B_W(cF*(iQC6, $DKݯW".І1F2ه59G./uob;߾/{4Y+']eEUhU޾ oH|(rPy ;.DN~yΣx\Wne"Pk?_g"vg96@]u쀓Rp䜜"C$!ç'$6R*kW6 %ţbeNRhU~<x>1oh4ិP|.aHQY:藌2>t[mo9p>@: wǬ8$/q!j3ZkbS;׻k9+S(~>-cݝÆͻw(x0X02k2Z%>;5 -Ȃ⺥=AQ{ V)QO0y`'8p>7rSNJцslgQFFÈBDN'SIhV+z0Z]Udփ!$?I,h X3>Vr"!Ht==E}6Usea{lg֪r &>Ǝ<Ӏ0ZUS10 A_(l.&!xV@KfW Zl TB6@@ǢN0T g^bs4H]Im1bXgu\ 񽪈ƞ|nDZɻ7461̂J$AbkQFk=n:O|({$T = ec>4t9It1~r-l 1>Șiщ4lnoɄ),q%Y!@)xVᘢR0 bA$"Df|?$S#y6LJѥYONYsndW#ɮ!7\!K"~LcF-~٧ЪW nܪU9?}g"rT?%UtUM*6b|&"ncFs4\>1ɳ9cN^qXx.gG'#e+h᱆)[iJRLNL96lp1Nn0w6g%ٲوUx:NO#MWsa < v·cN$(Џ'IeY]Wp8;y7=^ c_R 8lfuqBI.Fi# P1C5}as)LۺA-B?Hj J+eJS6'u TU( ci#;@*($_(*D0ъ:Av_eȖzI{_Mo-$KDs"glIϸ,*<VJ1;$z,A`Re 9$yQi:KÑ`cyRJedATv4[RDe^[.uJGx?+Gӂ ;.$KH@ki>,*G#)i [1ɟ_P1!_"Ny,AAg={r`fIj{izlDZFz&G 3†X4@;{Ļ=Yk}'\/$ufMWjiE|Ī-BT)jhf9ʃV[2%BN荓uy|^\ T9Q4mH`/.!pD3L+TDRg:u˕dwAJ7:O~aQCgI uZRɼ6_y{Y9~-9jN#=И{c0]h-Ii𐎏Y Rx&.GИ2LS(XڢgN9|Ρ~𨡁9N iy%=9qOhn+1_(6`Ү58@l,>o `Zhxu iʕ޲^u,w.սtkw\u6\##Ӟ8f3R8sq:Y#d5ls蝙{89l{{^qDb%Gx!27 難3&h|ogQ1 ȑRC:u z%|i\,m۸AuNQIЩBJ*0fRK#/D - *Lsv;GRC6p-PdCYFxd  G] p_S) 8Ҥ-$ئ# 19<+и&YQ(aC9gYベ7- W/|H'FTy,œ7oF<=YfoI*)|$R ClvHIlB q9z[:ttʾɲד[]v[&!2If)Ҋ$-|UInaҤ]  ƒO:!9Xj3t5Piӵi{L3gUUUUS}2Ӟsφ{0# 0F[,sٮiD?FQ4 bH!|~D?Oʟ7"%i)HHH I*T&i\Ypz݅)2zݲG7F(@0)r-*K**$sDJ98(H84k"XĠIRHe6q?`  &ihq6S$b:F X/Й3"B*Ŕ?g6%'A/&tk_.,/Ti6g7JMP6[w@'{D \ h13@K(bV`v6Yb'i/GVfJ\k1t?g8<甾+~=oft5NϜOہ*ŌkKgD]QKg):'/A$cy웈Ǔ _EF>3N)f3bi ~L#*0oe`fV)X&abV X%fVXeb3-;rT?Π{<7plٳF͛6lٳf*..88 6hٳf͜6lA% h֋Xf͋6سNES޻57`BH,ȁ }#ҡN?N^PAh,,ѯU:jݻ;8~Acoq1g3f7UH,o{I V%$iA:֫ZCsNH=c]](gsS1 ژ⦳n269HPҎh5A}LS5v:~[W-³ٝrf{0Շ)hJ| QZE\Nl[O,K֛ͮoѷnLp_?v!йb#5$A를no_ ||-U*/0sߔ=ޡ=?l{k\B@ x`4I vG6.G?G蜧T?*Rз1^dpZ¹;V8bÎmqW1}2k?߀ґ~C2 P!inI~&rPH &E@<*+˽PEeiB uI ~_tiBJ, *ha&[JTVҺ(zf_}SBXoBm~d(t:i˛A\5yi1w+S& zDIM"D)"$aEgӤ*LmӕghbY= 4u>|ߟ!2KJڢ$|ONZjcmѶ'-4h4%&_'Dh Lm䯻X@IЛ>ΌĩcrCLmRT 'zÐ.z-mJˆިX HI_`~ a$=~C>m~ Y?Fn٢ k$=Iw'a?M歲eO=&=m]G3As4k~yL*g@xH3^NYs&[I$Z{KY qK71D̼0ycd,r`sulb l&a3#эE:{??!U6~{ng7U1vWZSl}R%ecls׾x 8vRF1%#ϒibcLQF[+J2 ECGv>V#V֜pqY| *QrJډWC6 pȱme&CmP+j:ϜU ;"KR(~t]Z˚e'ÙqrK L0biu  '!jg#Ƹ4y7 mr@"*\]{3%n^ s"*"6f33D:*'i'W^p{ jS1K=5Oi6fkr-%*@lJ=5%FX0A6r;/0E̎VhP#d4-W<r213յ<,~9͟”7#J$xݓL}:F|x^#X2G]2y[o5s8K󛼺3ĪM+rUuwLo>OG &Ǫ ̴ѧ X4tv LʊVQ5vD'$$n:}TP|/*"n1ʈmiwDJ#'Y "&nLYfӘ<8GcwCڐtlfRK}e)^vo7s'B@5H ""G$'!0Ŕa6):rc'A\vQ~ $HE1/ nM:KnCk#<\$ 6YAFrCĢ/wI)\9kG2j gu?2U_W"t. aHrEI%ҰɓFpbN>Mo78w9^ 2'UDuЪ uNkw۟ =O({qͲ[Uz{h<ɶq03`dO% l*q6If&l8;Ug^'7=E52IUQDWvsA}ӽ)PĸgwEˬ!m[͑SQ·urEvK)98^")Έx;lz?Q()s9RJEW9I6 zǫ%ީ|l .Z8sreg9đr}fRxO9@vWm? 4 C7˪ƴ6#I9,,70lB'VM~/ԋ9eJQ8;V %|,aɓvTP(!X9ΕgqTT$XxTAQ!$r?!%Q fɜ1cH"9az~de£DU bphhéSU?lUGXBI+iуsq((vfd9q+ eVYtcRLsz{ffIlirT8Xe5WZ !ȅPH{<$ɬr ı$Y6 ܭ/|bKI;;氢,}TDV;6}S18IJH9dS}V͸`BI'Ya&`22F*HTh 0̳,$;ɋ~` 8ܒ~&85T!5.M Id_;%R=z3p1 PuǷ# f%hмI%I%=[ /W29,UF'XL8ÌjSXtsrWOu_7!.pOf!$@&qtHA[{kS)! h>ƥ6؈4f<*# A5Y޹bJQUؐF ńEIUhv[c)ӛJF> 71e7c"PnsB"$)=!|S?N|8d~ b1D+uYG&`ŗ"c 0QɖE 8$EI )+9.=QO!$m"q$јk6ب&qykQ]s%#L$BI+k>! $D,M.__}^w{|;lrЩTyK:_5#l /c6pA@ƞFǪrIHHhE=) Kh$\ehBA* *NB*t:aT@%;05{&K̐1Eu;P\OϱSbj媮+ٲ<ﶝ4_&uccf/}X+Fn❚vi>wf1WΣZ''pJJ*RUJgvdU7<ܦ9/LlԞtf!ʬ+f4ǛM*w,XunUًaCŜ))^ABKSSM,$4TƎlI{6Ɏq`쵇<)+X򑲈spk_62mc5d&DY\R B!%ᒋZ"!$x-OK݇s謺Ҧ7% ~D}߄dma ߙXmCz&3b9ކ uE->'b\f:w]vloA(rSeo]a^ey[ HYx[(01`b4dP c%K^2Ĥ uCYtTOψslg-&&hb~w .HVJ^x`BF{#p}M1SL|=͹ > uʺ6 jθ~ USg"eۢWsrֿ;w:+磚ɻ"?^f]}Cs -Oo94Y^Ӻfgo|3lh܌5S'=n|4=䊞C.$6 *|ÇזPE g> c곆}>O |Ku7yx_0LǷݭOY\vh-(yΰe]jG a3Q2eYI>mlʰ:dJKJoLM]]( =§}>H_nwUkxb=զG^3`%?Oa Rr"la3-e%ៃePf$똙+C6o*>qm<5= :JrjL^_`jFI@)r1Χ*߼dT ,(64DDdKgY | hP Rݬ!! ۥTcN{$;KtΕpZXNX_bP״R`UsR5ׄ*8hGZ&kCwg8/TF{:2C(0>%6P'GejBի+y?5ڪwZ:#g'N8'K (E lxUX{?V| r݊;O4\6+߀1 Cba4PBjLĀm7Hjܪұ޲1ܬ:;sw8p0j0TgNBCW"`P T܀fN!?&rt}'!%eQ2£h> 4!d3f_b 2JT:#> Qs`!W"%.(ɍ(kK-n?/EsjYaJ/X9 m{ߌSدR1+~(;5< =o| (/9fb4 "]<ɫxBw LMK tPz1fEAPiM/>"c-42PG2dAXtz]} ?F B ( S ?H >CPCUGd !TӰ#0>,BOݐ "%Թs/+$Z`1[3 ` DshhP?*1^! d ,f Ǘڴ &pȏa;NԵV6) 1 e`<mmKLG*QX$\dxQCJ(dj0!R*"ԥo6Vbbj%A0A!"ъUPR7hZĂ6*K(TPsQ"4 h4'Ywݢ4jH`KPq Z5Z(((Jp)6 E܎~,FAAYǗ_gCQ{頧e?t=D a/] ֏ܣurGEҶfUaU_M$<*"O@WM'*5|g*UCyDAȨж@Fh_p")% pb۩v}*Jb78i5$0"Fv |@X@wK$ps68,iGc=An+z°f(e1tCso"dN:zc^"C:H᥅Nyu2BHAzs`ElC1-- w~q/FKj<cByyA|ΪyQ&˗+rkz˔<=\ v( #|>~?nfΜxEBpUUM8CW*,(S5s!!$1iF'"e@Hruy1MnCQ >N~V fWW36C7ׅDZS~0=ndkM_NxE\ O.wduwa=~>g*1rid<,+u- K&j" Ë@`e^]JkO 4ə'&" ?:? G~|pkxe4 Br,/T9sBw hM*c`/!wJ!ZHK̬C C؂mQNTTa< CMH̲ ?*&O&!c̲)1=z@9%!yFSfaSHĨR[XE740_FSLc:XC>j&ct@8cEv}Ͽ!teX T"!JZQT9bV>sED,LLV({Fp9Z]l X$W4&? B)7D;sƙQ'*lƒNS+ȆTg,bZ-IF<7MH䘯clq1'ޗSFT4%VEi5(V$IJY1,!cƹIu-SUU|r![l1 e>J`~߬fl"c_o(H)fI=O$ǹ R"/SM WA30^׏Nhl]3t~6^Moގ-Tˀ 58WgE7BM8!w#чX\O&;f̚,cV4m;5m"jLT60Qegf??a(PXiސF,$2rs6ʷӾ*$@ LJU.d xؖŊfAG|U*x@jMEeP<9峵=g= TrX$ ozD@َL͂:\$KCI)PnUy=p9s }/"!|:'Dx| ZYNH) J*,=Bw}*ˡg֔._%i,yRobjCHu9LSJrI(7<5Bk>|,_Qg0?1t=>  "bbbQ1qPǨ< qp hR4|IIi ;.x'; hw  ,u;ɂ^TTS TĂH!?+QNBʋtX PAhOTY,2 OI=A.0~J|,ئD)mu35˗5]:YHAK !/|29s m}TF͉M|dk4.#+> m:o?/g߲tG%C>P̀&U@dB%?sP:Gb(%h%%: f@AJa,I&L"] D#GzGcbUDTLIpV*K'Lw$9w.6qw'~,Wf];L~M 9IôWcbFHp |A;=8@/ Ҋxa&;AQ^Txhڃ,@kbv9J⨱$`w+xw,#BD$K:%,8ޡG !9pp,0:G_~7-y;,=0ڣMe[*6A"fM |.8#`or'{4~jrt1iz*;7])ͰF D ș#T2>p0A!!X{C5P}#b'=ALmW *#A'P$I&˛ln:0dyz )#"c"HrQ1`B6sbh1,Ix7[Ȅ e_Ů\G4v̏`qsm窯_fo97!Ddp&E(>`<9Kр7>FG?un?ܲ H槎-͂ˆ9Q[T1d#%'V9ϬJY!wc$+6$XXwF{HH_ 'r5"v (GhsI뤘‰< aY>{ QXVA~@̈]]ѹ8/!ǘwA41#R`9FT341d*ɃźxլGw_3w#Gs+S׳%.YsS&Ti'=y]&ԙv+&VlZI*\_CҔ @jɮ20cfbV -H<N>%i}+ DBR%M<{@qZ"t,6";09ITTɉ3Ѵn1ky $rKֺTԙhEQ8 OF ".⿂>&$ G M%)X B!BC0cCf1F*8=$CQ0IVk8{OrEH9$|C>hQ-4]٦=mo^HK g*rW 4~8OjU~T7Q~97#4zFX17V*@ڱ1DfE ~SҜ$+A 8YfBM#F6,9! &ބF/t,8Ap!0pcIF+S$gZĄCCccm3OLg -#eUq5'O rSt[$لCm]DvRv`rۗ&n0)PyjͩR {]IVsd>s  ԌcJ ҇_qFm~"l7iNw76SͻT`Q*ҊX&+}``ٽ;3tl `O@:|S;BG&`C|)#ͣUUlż59=79nڈFܠľ xu׍1"TGɈj 8;>fAE 0oR3n~iW)b$A: lϝ)9D!An,t=h; Oݚ՘R}PPb:O78D?x9j'I!EMHF!VMΪ`08в `U16x)ՔB $HC#!0^ }ۚ; >$qϐUT9sHxD ֈa$Hԏ'gzRI0^aހם}Ԟm1Aө ȵخ A !\QU$$a \lJԤ:1"wg˄ um5[NjmhoV"rH#%BA4#+" $ɂ2͗H*p) "sElS <3M=dU}_^3EdQ2,\E%+ā1V &PzRڕ(2" *Vn\aBTaVCRȵ*[UhѲ݇}MMj+AJ|Vf nvKJa6 yDB@ @?BsM:D'! $L#FP?ҡ*=<&Hxz`* ;FF 4Ƭ\ w?TP٥4wϛi-2HgјR%$#+"Z-%AR># (D~':";2B\H+|̇O 冐rNGtqMiYd$h{M%c d#Iт@O\% *{h y- j0upg{eI/hVNVDݹ #~s43 XEGAEYBA!Lu#&o7}}C[c& 3Nv(a]NѤL S0N0 ]ԕBi}GN0hЎ)MSQD*lg/}w䵑MvLpi 3VuxR殓1 aN&&LZ26 h3<=lXJ]؝ɜb}@24]B?i1^g6~~=ZGL QHBJXXPUb9_GbͧbDRQ =tdcDnTni"A6qզj>8tI@La vPš{7=T@ꒉxck\U1 B.k5 KY7P1J!`iCkB8'?vPqH+ߥ4*P:L1"8RI}*n,-G2S\tvBf^dgg@T:~G 6{%f!d ݜɔa*PHDHfl1IeIӳJ;?l䣹h\ (0X94h,${FZ~7q{nhlrxkPK_v% _fhP$Pb(HXA-'l"o Ho 0X1'2/ad- L{ʓY6scxzscI&wh&Teїx@ A2@/ LzI׌;#Y"K# xGWJݷI2RieNkkJUS o>n )*"MUbfT9hY05Y 9.<'Et *2gd=%U%WO)ң:}~O,4`δv퉉z'^ww y:$=hv%T65 !fSm&LY ʭI,GlwR<.YW$-%.$Ѓ>eF±j-FCƎYѼv$n۩$rд_6).1ƒaCG~M8!;ܞiBL .,Mׄ? &PfS{buseV%ѳMҽ*mJVcv4dQ?MM @ys$*QET*B!qn^ǑІ%:uT*As7z= 0 }'!*pHkWʛ'%okIi'qa! fM /;$~;t,{ޢv^&{0sޯAF b''^{֎MصETnY]~G">r=zSQjvþpNɂ~) #m }LĩT[i iX׫`PJUc!WG&=ŷjZ 5i;DWcII织ԏLx7 dxsF.i#oݝTij.D֐I@ ,E "-vΈx6Hu<>&OrI'V *wīU, aL5/g!d*=U K+K|" ZAP&05!%sM$"[[ oCHC u Rh:KOv rkQGV?;dp~Oj!יmz| U=шC>/:r>v9w6&|N`rz3HaR>'ǾO=lt$g:a:G7J)ފ#tYJ$I^':bvUWeaX<N&?W4Flчh>ul"<'Ec Uc+UUDbpݧGe$gFJ2d` 0QNB,F0_|S7N{h1!  @) N˒]ַ6*Qѡ*'$NiScKfҼ&v +̹w UK,20 MM0ۿxz4:"S hLDWUX"] pA-7NMʪs6i澕G$`ZE/PG ֳɣd13Y臎7I0K) : D;⃺O9dUU)Uܚ%UUUR:F!aD7 QF $`)SurnӒQQdQeQ$d?|5wTzR{Dm#&@6'ytO9w?+ӹǨa;17cuR""""" q h^pyto'8 7I:$JUMޯGsvUURh41dl&)xI$A6hc ʊC{7* f%cm'X^<_LJLt-bNi$:LLGy}%ySd'ٻ ̊>,Zr+tKQ͌oVg3ҕ&*RɥFXC{\.[(dM_<I0ddbmeòDs$012$IHHf%$m X"F>o][Ďs%+쀈^bdd.cЁh < (.M]0HH@b[N;C1αbcXc >1Nu0 e0vz9<=pFd&';"X1JJyWw<Q-K4B,ֶ)klyN\rUVHxSFguxr4UUUUUUUUUT"b2F*QA88!>$ hb'7Lc3"XºE51autk)e@ =M:1ܮCg5pc 8pÑȎFCir_c!vTapbLba, P00Kdx'pNYLFH*ɉb@o|zBIc^>f9!9hc$Q I,)J1 ::L7Co  L,ƻ0JRv[6B`NcլZ M5`S+uӵ Li&ͦ CEf0ww+'VNK "#CFi"I)`eADD$)*,$û`T310.JŽ yǡ ayU0Bs 5 rr$7dNNdw<چVTy$N¯D07^6Y8VF&a_,zCtLY=+MCv fDɁ $sxل,BQeTU.?jŶ~䁞 c!v|7ݳJi7+hn{1JrU,&@ t_(B7uș]r]I: bY%GyEWz7$trE"QJQT(TRT*U$)iǵӱ[V|=H`0R!O@إ2&LYH䗐{p߉W3wrw;:GF1Uc͕Ò4( &4 @ ѢMd ,dр4$lgGGFs%99láTM&N:cY1y1jrNwݳH;$G`g(C lٲ4YPx.@$%$P07ёX֢Q$qȂvA%@e*RJ`hF9&bU*HpIlQ"iRbk+ͨLFB*=mʔU44/'T**)U%={P6`6<ЅxBk=qr ëWN#^ZŁk]Y'@>{<ѧ4EWQ['OEiJxnܪI# UW*1N{gӇ"20(ktU*##ufΌj͛M6@:oɈHXI%"VǢ"TU0}N4lɁ?-eIX1a&JrU)$tW Sֲr0I[܆>gp0ɾLevS\S,dxJv]J" 7=pF xs1`)'N.K$ fDmm0!`iܻ#IF3p2LG$KȂOI}N:dz,TURQQ RTJ\Cu;Ǻÿ_9++jG0٘g8=P8>0P$CI YS"P1B `\P  2Ě86L I`?:,2#+ه9S?gf4@gr>7]`?h)^֨=cg û]O;f Y {8^0P6Π~;B*o^2V};opf Pc-0Uގӳ ,Cd{`;'DiDT *ZVtdV4I\-&Nd4,u$#AR^4cб1[Hi ഑)BHH&ctX:eG$(Cڛn$X.e ҩ͙u2R) )eB$$0`PrB2af0s R4FSZi:^rI%R8F$2 "d`THb,) Y#IF+J$}"E'=0ED/^if 5UfI0$c hzw_yNX_dm5$ suLli3hZՃCai@@GWR ttB](MgxA% ;{DyE"GߕQPDq(rEk#JEX"2_BRC_6XB! 穇He77<+5R䁫й-ŽA"CEn' NJ7ί`H϶~ͤy'5/eƒs *oA(8@dZőI$1bbp*H uo#''j)(DžI=k>a /A#JD(c(Q^BTPn"F"N cP.ٝm-ix%?tإ4Í'Nd{_[3wFƂ2FÂIAg%#F%|i"j1m?uYdv>gJTYuS!@S{3(R$g"(cOzG5 xJ\uJ:>}ja}q>_{DQtiIe:ČCeP)C($̩w7a dv{;"\ q '* e LF1tsj;$%dF1&EKc:5bd*GJ 1Jja FASR!hY&ňJ%c B0 H!!aM24K ZIR T4KJԫ4ȓ HRTJ29QOy{ R+<K"2E8x DŽUuc:6I ϟ:ȘK'͚Ĩ4f5aa18BYb2%Y UUj84'Y%GOaBD2HR p7$Ɵ1 lZ{^_.Y-i"`;y}ip7XB}&,JԬV QdhX`! !\aT:I:FsL\Q`(hbq၈2 @4 ==AdJ΁^"2f!ٚ?2)D ɅkY-PjIElBRI" A>''"]Iw] DA Fo ۞5Xq*lIe45ckn֦,+UZ[2)D5`пn:tKDTΌ$N5VvǪHo|]tш:ϓTe'u~Cr"ZJ(*a!vgH{Ѿ36U!dE%V4QFfELFF8ڸ+*`cӦ١g|=P>OvTa$?༞vtC_di*diLF-evn(|LHYJ D>HZ~m6ޫgF"nHєw.[dlG&W/b3>T}"y"Q>SyW7 hw?U1]=NgEK9b>˄ؘz #Ѷ^$_WGUnMDmWv%n}h GWI"6#U8ahP5)3#R/79cC`3Z)$?b|E[%,Tlc鍓WJʐtکC?QGu,M'Ε وzDd#2#N+1Q([#x`d0agQ8LrD=r)'Q^WZd5YU;6lTaQѨVMUg -ү9:ч h v7b UrCu +B}aͬ9Fh /Vфe TY͋|bi%,U .1KSLNś9?I!!7RJa!$0I$̱#:.D31YGݙv)I%HX7$H ?WiDI$x7c'vG6gdDјPbb"$2d11R,ʌE*(IB)I%HH)RJ q׭!CHs(hHM>6#d&IJ70Ҫ(lM*aXTTM4(x7UV49Fɿ£⭹KV˧5sHw=v#푂P)PCDJ; )=!&EL*jK0##Uq_x}bFr;A>u=DU{|~ħ09*ڔ +TeJ$$"C&tYF3 cS*,1$$P3=ǧL&^l_@ c\$QF"XB@ RΉ5h ʈ8ZV#j9FFfVYeaW 8hr#CL_–-)UfF*([f6ic)m]<6pVX;܄x=afXHNekr+I[J@^ qآmvʞ9뒰m9ULU*JU#K8JQLh-LLd5*R)!@%]H蕊4jʺ1E*e"-E$FD(a2"؃SK)U4.1YЦi{D?0CE=i~zd$WG0wLE_(שJpi|eFao;F 3 skT_9eh6lMO[+v!?c٦ctaѠ!a${HGi4~ܫ<dc`D}FL6&<<+lU4s©d*TU#L D#찜2DW~UoS>}<|LQFD&sX!*(s\ğ0@ `{.]!8;9s(hOԳ<}WI5I4+yI2cH<53!vD2.: HJC ()#zGz=yd#(81oH&dE , +a.EȂRՉ9]tm)R$$ hX4, QgB񘢦ԫHn))3`12<9 " 'ÛQOXb&`GĄBR(H:B7zERk(9o1u0Tue#8II7-X"^X$-=妆(譖T A2YR56[d(SFyLZfаY&jHe U, !r -Zl!{/ AI³F*27aE%F9` (2ci7cCs| ,IUmYc! څca ]p6]*!gVGj&$d;&:%W )ť!Y"P԰I[ QCy7qR=3H-faWV>f: 0M'($H`dIU 8bO; y<☜'ĭ4}dx WMWٯ$}$uKб,2+O+ L@:!>PX*Op JJ#a̫g4U)ZNJp嬏U%:9S>}la}·or,CUF`TS{B=akL "3,,Zl!\ş)֍kL1, A$ ^HbhizzfPj<2Eeb*{ MG`!n&j(LB9y|&HҾ( Bzg%T<ޞ&M'4D2>')$>XRRD#ޠ5#P_;(^?3=(<4J05jBq$Gn9,lъSڦ&ꢆSl!wBRx$=+Bʄs04<$h \?I ÜV @S(s|Lɇ]@tжaFc2$H\W;0`"RYJ 9rks 8fPc wzWgWrcx!\Ԙ1Y\Yyd 66ƺQetyH n@FbCXfD*{W|AT3C5ڜhhnaU*IYRR4$I`ɣG΄R6SI&KԹ&h c2'3$PN05V%`b /};榷E +#k"N"Jj4ITVW#~ Qm&+; o M4jB(Zf̚ 2oNH0ZѣDI>Vl91<3ECP2!h8htkupQVuȐ8(T06"BȰ3dhQ:$K#h>Xb/vA#A$n vM!"JAGb L$x;@@8IZq'PatH uQg8CMPTZ#E1d]h1(b$M8rdxBD#0l+ɭޕ"[.‘) * Y% aC-p05q>YGU'ͰTk1GfJs{֦': 580Ɍ)؞e.  43hFjBy-W"03kHZ ; HJCD=O6e]f (PhH%RZ|`Gǃ kQh1AV=%&$:9:8s)H7)V5vJa{!>rЊ'c[DT3s9.hlv>†PLG1seClb&K+`@`ФgFd$X(*A''&M ܱ 2NA e8 ddɢ̉3a qHHqѱa8ha+"4p3(g bK9l: #Fp_9u#9TlxfR00Y 5$"<0 .<2rdB) %F%QT&+w?'мn0@EF|̙ٔ9'"*)<mhsɋ';1*ySu5Ƨ`>46NoAܳH{% $ŠSج@q!x} O0B; S&$y8KAx>$H&I/dADHY=J\qrgٔrAh 9=.`Qg#2`gMd$\$2^ rVϦyo2i-U4ucB邇LcEU@Tp#屎V,SP6I4aD[c5rbj4YARzCe 9B1-(PXvfK;VQm`,\^FY-E!όYQl:'z8iUJRiUU]+= = h#{VTbyʶU4iG#uR^FxȒ44uN "b& JXۻm1%+wUUrNJ & ĺTgQ7.A!z<-C@"9x;ۄ:yT ݕJr;ҡvVuwxٍNxhw)+ 1UZhgqI6nӆ[4٦5V<"Ni!\:+) DLC:URg\Aj* 0*? @{{e0+0i!X§I&կfTT7*1p'r(s HEAYo il1fDI ip[Ŋ69c@ iMB ! @L+D/B )eʣuXdQ<ےHlFX b*z鼃}سp@Ǐ3MK{yptɈJm j&'|1|SI9F̐rU#Ds&ϋS}N>Dt{T?hM1Ub#D=R,^(RM5 P)_BDk.ŲC29yگ`4zPCL'Пs AUy!Fh77H7H[Ob;т0()%b e}:2k"bE_ڒ8s_m|`K; ZT rSz&!@a&` dUoo5Dۦp7O"D!x@QlQEVQAQ~bыAf40yY c*dلV&MV8b ДH6C_) _0l,Rar9mѻva,*aRڱĂ zDydPBܫ@F{{GKh4ULيDIT@q=H=Zr|HyMH$_lDc %)+Fc|JŃxXƒewhq| 6ܪwѺ8 Шr54$V18da]a3 'a3&I:s}OT~EX" b41BD0$lE0#y!;$6) $>kY"C^䟗 ,ѓJ'r/~"GXs' &h̀hɐζ@46Y1G>U**0pƹ['ѝF yE$l%d7+9$W%M&f) 6KCbt'`Ɔb\)M$MTLhx 0H0L'tuUT 3O=!eJO²ûnyIA6*"5$Hw9(*<\r$'/L::(| iQBKU-LTJ BPț|*LG">Y>Ÿ4(6~eFF![ 8GeisG'y)3WZƅeѣ|j'uq8vjjI-PVH~CS@(RB -64ܰKQ6fd}5P^A^!e` .NކV4.Ʋvj*MJ\c;H$5ۃ;wOQ/'jӒ2!ki #q,P0w4ptEd&Ȗ8#Փ㣱8k7hKIעhJ>!\ e7 -#D*p;$$=O%~+G;,g SrV̹]+G& d N ,z$!:1Hֲo;S? %؉Kff͒rtvRQc9 +b5y2l#LD6Z !ةrav< #JJNX5H$E 0J!# $hpHd ~`F,Q鰃6S O9P;^&$ I d!ҩFaٻk9$I8;-A`_YF[z >'!! Vb7eJ4:1 >afH !3(2 7IaaX,)C R4XEIB4 ,BM&XD8.W3 Ю P$Gcư m$J,ޕ4 ;haj*jm06H!5H`m*(NUUTKQS5MYO|EAE5ETAUILPS0UQERQTEUEUQEUQU[}Z$*"և@NhXB)LaQQU/:{}frEmҘ{8tş'%MҶSfCX3MR>GQ1# u?gOk>ݱ&M;C) I0Nq`HX p;Uc1 dp=7c󙨟Eq0o0#A!< WR)EOrd "h#$D 8d~0v`&)QKt1-T9&1Lod6XdQ@a DIPbdqј:^EKTu"*H1 0J%0T" 9.Hb868zz+v0L () Ѧ FE(j"  M` ,  G1 QRB){~g#يTS鏢" Wi"dmq;D7eJot_(uSc'-FI"'z%IDH_F,x4xp"/̆h(Fӆr$ʠ^)kDj–JYabؕfdOS{;2Ăe6!!K AmSEBx^ȸ18 aX0I|>@{?yj=YO{{78!XwJ1bUM¨"Q$%IͳHimN,I8RCu74U,ZK#:)*U7QM, Z@Ir%%B[EB~lq X[ 1W0;׳iF)-b;'J9wԩ0#" D !(TDoeФNNqk[886W:-VDd5Yb!UUcuo'2{]c4X2%aAᇚ4WoiSF@I2 Wf*,0cHː.6_H'.^ck&eL)$% l:Cz+B:Yѹx_#\*Egd;?'?-)0L DMOwFUGW||wx0=NhDD-8$t(;ASdQS saVQm#UUPZbm籦! +WvTcBHXZ. foYJA.$bDDs2Uhb&eP261¦axF1 RD}fc[p$ , MH18dY&t|KP ,{_!7h1]2» EЦ"E^JB9,BVW`:*Bhh*J( BUiPTHjb"PE Z* jfbbJhb( %"(  PB!%8DI V>>-9ҀhTH^He9$+ggwc Q4"F<(99x.\aGnj }$ttO`x ]ǻt Odž*SNqBrzKT2$BAAELJL !$BD0P"%(P5LŶD" [?C!< 7 15fR;h,a F>0CA%Ns:~+DI蚆4Tيei=HJDT Л<:iI4?Ty&'ن"RKM6ĸlɺ'"ɻT8t?7 ܈WX̒$.Y08jV T7IE=\}[D& HI%n2kDKE5L #$xNEC"#E("HcSdlbF GcBd#գY92)MFH4, !c_t91>E$ńT߷kL30~0jHBQk1!b`& (X "REP8q5HdSb0FuyGP:1e'Sr禺b{6~brPۙ|61Y"OQ{bMMJOd/6zOcHsz4rONc:1MuQ2%$)SNAjGq/%yF|I& nL>!y:P}BL) %sfȚ1RbLq$Hm#[ECO Akn IQ&j3N֛`R1 F!j NՔ1|Fa}>plON?| /.#ӄqpM mn0!כ7hdNM̲LF.䪡啹IQUM1Ecv+M*EPUT[1&(Z4rb6I )(UQAF)hRBZޥ b# 7nXAr|0ԔZkK!>LI Cdc,N`zJLA@L (@0"Eq#jG$py/z~~ A߹U 3>FV/(\=R.}#X2[ #{Ok#'oR4tb EJ$%B3z{Eʟ0-4sN"G)SuLT(.}rt@}DPP)@n|8+Aہ47];{R_JzY~R XHR$Kŧd% A}2Ӭh&i=+=" AQX0rcP#BY4@csR[6!i&)</ |%Шg`0I (aNV6ކKKMIiih/ K5G&dLz*=Q?9Xl|h$&GNG$k }""Ȱ!<1 X%LI#<}5GKcY~S'ChX;mP\zF| hQ+LB'bDv&F$vfB I44`yX'2PccY:Ri\va, > %cS7f %`C{4W6&+ `ACR@RcL(TX#(,J$QÒi g/G`<|MrkF~S=g[FE?,4>kF`  jr"!ayb.46/4n :i BϨM p|:!`;>M`BHa(XehT'/0i\fF护Y d&bTɌ%YMԊdz Ir\  K!e~:6kz0%GIƅ %dGk!6[K+f;a|^ShÑXqIm{O}(Mt?1'hff*d"Ta)TUCLD*,@R(DT@QXRREB(*U--UBԖ*@%4,d 0f`VF.b`SFVb TH"0QHAYLYTRɊc Rr$f%>CHO5alR'gI?<=Y7E;sX(Q BR!OtdPDR! ǎ*A H# T0)@*HBLHA2LL -""H(n  "Y&%EY>2qR7D<Ǚ0@=+5J1_S['3UTLHDZ`R!D"] W`UNn]"7id^u _!}Gքu!Ip X͓fm,}Nj'RQDHD^`6$҃A'ٝH0ld3/ 'X($ !ח!<&c*9wU־"/=?3?tkkAaZ,$0њZT-6a%IvVAA @4$d=!,'=31 DTfs$6U)d6R,vpHʉ m t\O8CJiYnDRWJplKp$" Fc]:`YXA@`Ta_X 1N9N`않)1Quf>MZ6:T,PTR23 @L$O h,ŚXCHŒa %,_@H8!M_ :q*q( HV*$sYE;x٧H_ ߺe yGJaDZSXdd,ܵh~d85x&J#y8a~͓ CGi iXA!)%)t" y6/B~$'T<]*xӆ_VLndR*˯9yD0*VQ$<Gl|L^•1S%LS1%TN֓*c11RpX7/${J!ib*! TSDc~UE" k5a` chE)P* AD@nA@$e*Z,U"A, TC* )@DJqGXtl|}81!B/1ު{dP;!U  *(cHy8vnceWX ᐝ A2KI>^{E E?hN}Cꯡ&׋^BƆ1h$%!}cM+Siiؒ1'e kGG*XD 8Hw>6z<{9OyD$*zeCWG{I*Cc /J!4#OiFHiFaQě4حMHI[0IaC$gc!&"!)v!W(}T1BQ!2۷a,}֤*xt=*ӸZPWȓx|Vҡd/vo>!01m Rz $As׊RQOmER3Y'4 ؘ~+;1L"x}i4pRWpF>SyjJ3Lgp&H'W-tSiUe2#fi WBV WBGQ$c([$!  ,5(2TCb0 z#`koJ00BQ@mPNAVXbys JHYiN";#X& ,e!8Q&dTHdp! Bǂ%̎*0S AY)l&I%?glTo$jv-0WrUEJf)\' D0iڑ6*N5XJB8bc""j!h1:(a0\WKG%h^A4JT:Mшzc Pi %WdƠ"z>{.Q{.! s%tF94L Ь  I%2H4"o 1,sadrDZ$jU|nLS Tį®n5nI|39:1ĘEd?0WEI ?AĕBJv&JSȉ}I%-@ 8Kg0Q g2;CLBA6E,A0qX&kji6I&FqR#6&((QI"Z!d 0#X ` A"DɌTe XdIK#Q*RisYF)RZҲF&1ډdF)TBsLICģ& W fCA | o9Mw4%LDA%bH&׬tb@Bdl51.HlaFS-  D 82D,JHVE@ҹ5@ʠ.FQLIM(ALBPD+%fH,eC)0`d@`B0AP az<7))YC.Be[r5«FT9= c_}M~5̖}߱O$lUU Xߥ;0x<64drWniؿw"(U"A %ReX,`=2dD@*-",.d% e%E= J .Lo9V,I!g #gG aH22+hΡ,P10MrIZIR HA@a$E"HX(h)DsH$N}YddRȟF&(FnNE W K$.>:DvbBʉ#xG~'ԕIJj }IȘL}ē97i$Q͌S;FI{@| ঢ়bQ(OܢrWQ@"`B VXR`#N=,sJB`0ȃrTi&uDQ f`DGV*3PMT- fJ֌H" "b! !ܚ,}:_ϕCl5OR'-TE5 $<&=b:㜩#%lpXVYdDDH=DK|NaL,%Rd11b8C ,0J]b4iLRjb4h!J, `z /<1 }pgWP kS(w "N7Ŕv[U8V6.# 7iQJL0B@<20B`NW I"ACw4bZXF"UUQ10j=*c BXX!*?rKDIRU;Iټ*))m b/RMpsvm= /΍iU:NhGRTOjpdޗɏ6`$H ?>vO:AzA4 cgXAHANN zLEI"E<{`a& fgAJW &9@1l` bt`-c 9tu0BeGX5XpPXPS3a$dax‚A3Nlf1 c}9UU$B-P̒$b.lh*]UѵM 8iU**jUMI[a!T(, "5 DnTI?BwDM{arw 7e L)3Al1a$y0FT#}^!$:>E #w-'LƜz_}$h~ 0V %z;mHD BR!TFD:Ee 1AA84;OK'gQЛ; ٙrzh":h~#푾 wGv-Ijк\$LHlŒx*I)??NP>wOh䙊t1' `!r Khxn̤9I$58AzBwYTm>b:ڧǶ+ (M+OXIG5GR?K g'4فN) qB &{6AȔڥOtK>FMlzP$x~,e:Oŗy/tKٙ--Z1(̉+C"ءhiP![MQ0"Z ƍ&Lߒ|$8,EWV1Z`y Q.ȋ!">F~-D d*)|Q aIAZpU h<Ūl*9 eHӘѣyub @U裱 =C=OH<5bYeX~b(L$,z4PQR jpq  OﮅJ*Uȝ˨X]'4{Zc٣֯[Q\:)s72;hs E(& Qn8up 빧q4RL3, B=K Sz4<7' prp&aÿzXg=CI+Dr)$LU`UCOਲ''^F>&>mA|1?Rl@) È3~v $1 !{n#p}Bqf_iĠ슂f`$ `Gl{8{7MI;Y!V90Lw!_&;񿁍b1W®4='6rP}~,L(H!*"b%pHVj '~+|T(chhX>Y թ``Pp "|`i" fuTMDJ=_+$:ӈw.Huv7[6i]%̚-ű$HFc9(7ps lAPN@R%GW3/=ﭠВ% V.D44, P%7,Ʉ腵,ā@a$`QT=lנX`@XWn]Q=tqWIխD@*DŽts~!ToL /9H>^^5 O|ZF澝֤lFu2:4iqTra&0l5p K[BVEp6Ԝf<28:CnJoMV4 F2R*lfg-N6kO<7č ld#D-4b 4Df>)#{Zhh4IJX Ybde4$El@dT'tF)3$8 I]a`4 % X$ xqNTb jU\Q]hXM*bxVfrcK eV " @IQB ("`k3 (H0ް!C09a(Ѣ fD‰ Z⇼KL[q*>mjX*d;DAys"9#HD 0`C{qRd24Qh "Hن#:35JfeFcfͲ2$e)RG)?$V#e5x15$&Кd CjNwo715qCx *I8ĘP@YLI*B(@ hX] Cb ÄD"J*@(,2( *B, cXLTETPQJQDzCK4yAt ٳPN!(#/Pqͧư6+vP4?uKȭfd "f*N$ Uʚ@ DۼG)$u;D =Q|`H6dmG-ԓ* řm1K8cLiXih)TTKh֚tH\h \*`5&." iPfM v U! $FHbbȃMDk'WK1Ša%}E!PH$F%~CآċxnDYY, )*{l{??ܚo 9-l/׾ R*&u{fFƣI)7\Bqi1T1IƗfh^>ib|z`hwGֲw; s &2no,>9AVD#0~=1L6Xj?_l0z1d"ش ENMrmV`@O@ljĪV*H%y991lxLy0wn+J$*'в @&D< 91$.a `ϳ2C $ ӯ!bI$H$,$ "H'AhQrA^sU*'| ݏͻcUA]urF( JY)lZVCXd*Y6K,(2xf>/N*UC,0 B ,$CC*(2H<Ӊ"C  a{$9O4%X$.f QB(qT{oX(x`ڽUA\N|'x1> [KTx~v_" Uʃhz{z{$80ܰ?U G&'CAMc p B*ZCR(%L3" x, 0 aVaV+TjK! Ȅi.kM6(8HZhBA-/z#$-ADUZ5@I]Ahc(F(*&)SJdIb33 {#PDsqpNВ, 鎒Ē3[~,nW|O?.O?>=?W/krΎ:::::6G|o9=u_?g;:O7Y=iY7>,/o8~w6n7Y o}~gM7}.1N>ȿ-]ɷ7vkϕZ.=7ns_?<9}>|/CO;~s_?Y=)>Kᆵ/o/|???+?7}Oo>[~Gk??O'~g}}k˯m u~ݟ{~}ozU_3<\>'g/n_~+}I<>n{_>I  BUIX:0~ӤG *SJ1US `eBb,lR@;yP~^Ai X$~Jh"4L+j\VTZQ)UJwA*XsQñPGg_1gAOrHtjJSU¡a1UUL*?g{F&ʘɓJĢ"GPРJSu41Gsf%c18pXw 4I`d E%1Ƙ᳇ ՉXIUTQUR*RF1ƛ)X٧Da00 6! Cs \c8NɌcf17lpXV1R8iѳ&튢CU9:8i1TݦN M"+NcLc1nRUnъΏ6NG ٧rn5i4cOU·pҫ*"7DitpLFIiSpTn䪯cLcҜ9(ѣ bUlVH %p&ɓ2[*F)d713&JZFJXɉ7Vh$ *)4vV+6nҘ(Q2 اhK 19i4R# ͣPŘFFRX*Aa# (!PZe]ɀa+#ĕ!Xb#ubgр.H8f(ȓ}RĘM'=/OYc4lPLWğ'o% xh.(D@c(6Jf"Nfiђ`X6}c_y؛/^k3W+6KF?xGsFnB63lp3ԲC<@Ѡ07z۵f#fH#n?UHw@j?􋆯O2_seQ:z xhI l@M%-*c* v$/7&C,L!zs5\6hFH0aŤAQc?)o^krw$zVyaoC']KϜ^VͫMUYrxIDPBe(K020%)$DdK؀ !!:3̧$~p`P6B@1ȱu嬚"C@lU) kEe0Q%x3:[1cR3dqd0A0MȆ|{ڈA|^WѴ0JR8ڭ A6)!Oc7RvMGmށVe#3hhYPIH4VO: A#GmXW&I$&G=>liX EW|Yvy4y+Y GcĴô|N5# J( $ࠑIA_`J5ѱ+ dtl$,6˧C>Nʹ `/xZ;m%}$lH@UvI\,H$5+1KɌ@[^ԫ6\;|X7)|PIj}$ }E hI13J +*lzMtl]+$ȍ 3E`BCj\IJCd`˜<40:F.7Gy)L#YyxNܒLyV IqP | 7pln֒UI9zـɐѲ (i &d(ɒ (D. - Xla , .<d" O!]@YG`x@cGE)qg;ݕɼRILtO ʬrscԂ! ISa&"HBSQё# 6BITZ!4a⎰`r¯6$ ؄PF(7 Gs",Bp ۪=IޑwxL DLǺ1"QSfߜ>9iPd2vDƞ,OI2pG\ĞCD ~gxvh_t; NO &<6CiMĢv)ކ4 &(!g즉`*`3XlX\p} 2̚ B,.,E$H4 Y&Xfpf˄"a&ӗ ;8NvZ ٳ4V \A8²T;OmfA)EU)S 21Uý7)|WR|ړNs߮~Hm$HR)5 5+eX/ޅ *ČCv 0HU;| oJzGil) iJ$TɶЉ'r⧹+??4 V^YgO^ьG$<]>/2]2oLJ"257?*ɛJM p[BFD*6Lp:4PO&^Rb ]n"t8ʣ"7x MLRiGlU4>.'e2@ ,#g._.4ɵTqC(00Jw I:7hJAҶ7XvQhsX1=Оa ` 颡*Apm,,if*NMOӼQi`Pbfc%tZyR|OD`hH 'd<*BIJGȠnHIdfNm4l5N }nzA6UQUgaBna `H_@L&@'08'C۷bICwv(P44mLAP& B7ICT>$a[ TLl+ާ6niSy;'&4.WI؄ZGogd1'~{Q$+J89Uj2hC#0dQ# i%koϷs:.7, P$!mW9y)L 9E1ҩhd%X-G+XIR)(.2s8TAȡh2_<`VL2"бQLZrhцv&fRe@I#O2 4r]mEHcsD }{/[:2[6|ZLgBϕR?;gSRvCUeЫ$>cN%:& 4gWlqXx2tLzX(lcH(%n\˲d1[#1)&" y HMUUTR{apEU>Qdz$;j>+#v'ǭF$ߟ@e]!^EW=~yG/$QR) Ƥ61L$GYhpYi!uPPe ;?FC Q8M*ؒ uLPTpxKhAHЀ0ϳsOުK EPIu0hAP Sg[VS T3bemM,c7ҥ}U­hi GN͡FpX8o5UHTތVv]$BWPLHD#oLUk&)*UdޖRxaq% jDb0c)͙R1(8w߻yQP!掌Q,p`'BX$c]Id` 0I 5AQ"p(J) 'YkJ%JD*g[+~s B( N]<!%pgb#aiİ[XpbQ Xg 5f h3p2M(s$ BKDs44 ]H{0th!XМTӭkbBx=0BdjKHas۰Чhٳfd &'yz#'d6D#I}L[J"dBtZ JddĎ>Ĉ ȠG=.8D^dHMy EjTĊg aSwE&l=7qйޣKJ=!(/}Csm"QJɃT=My) 4pjm #HJXN<] =DK{ܵQ˧C9W+S 62̟ol!IXf|4G44-0ikp\D A3JCDe* `@g(aFp %`h#:[Xc MPԄ:H6GuewMm@ªHD:I"XC AIJAi)dn:ƠFD"P sERҨY DM9& $@BIT]uQEK 0k m1dH"j&PhnW ݧ]rF 3"JJQJΰtgH͖[ [AINl}"]JL$)V~I(9 (mH 24QiY&,U!tOo=BϜ3:pQ$IVB (=Psc0RȑBB *ERDJH- 3mbUͦHG?勤٭ڢq Z;XXdKzNq5q1݇=GJj{؇^ǯ \L]vI2)8WCE @aJ/^gۑe $eʢ;-ꢆs0|5XIr~&ňT `i2Q9 2HD6 @IDXOf24U9GC8h p:Ja0,iDpx= Qق*4ZѡCGI;${GA&PJ4(# 0фGHB-!hW'd|AF>|O 1P($ZG1R8ӄObUnaTұ}MU릑3'aP :QBC4 _1z"ȼ4~- 1ޝ*(l̓|DsCw0*l(u|B"@~e}j1˜+Ka B Ab&aaPjiQ@YdTU)R  Tadf1,jA0eB@pMLA)x@C0RPR-K Р2,+(H,4)C%"s$?PN}d"#dwO認ml0ڀڐl? Ofe@˙ /t!@2ʏ9b$H4lw፵Q"Ȩ *F&RC&F!t -&c%UZ JbEFbbdhe?0-.0s52\3Eݴ&&S.\*bj6nlM%SvUn*Ub*F18dtAb@*ȞQÆ06lV9+NM8i:B_gH&^ PWE#Q#UsURXV K'Ɯb6/dzH4T_DEJtmTP;# H *B|Eʑ$0@"p0A RW&,*'Uc%(U@*( b Bbu_O/?7uU\]<dQv+lF8o>K",*BP?U(v<'P%2uP! $` D@F"n {" .I HXN:P3^T#C! }rvr!4gJzS&Y3Q ݏ۰z,@+P;8;>SY226H#b6 46b:xjMgơZbŬiOɮ븵*P|rNEB8K C!&C}jp[,"}0ێahH]fV&Ba2f( ՗ɔ$\81~.p!;c;͡)PCIdJu}8p L<ѡ!i!YDʘAeE%)w=?R yb"(PGHzSlwLYg4CM9:!$ゐ~ Yg č}8w@z \$RU*E!`D`a q0 (V$Z]neQ n ,*D\ɘ,D͗>4`="K#ADR&"I( A`0T}~+s-1_95ZB6uhce·w6eȟCC6T{wkXT'w{Mĭ@R| X놈xȥ(">\z !s >ؒ&^p K!2ޯ|| ) O4;!( Wmt6K f CdFq0XZ *C. l+i#!ÊQ=K05$$Pms$R!$ID" )A96*Jw4P:;3 duo*dcp酱B FXOD:4'o=#%J'!Ya$%H%X%TDbOg59!'DЭ$b܄P`*8zC^Bc2A966c,Q0j  &b,s{l -=LfqfH2BiaP3F ''+I8#;\`VHp*ZŚf^a76Q%0F[ cY=-rj-B P1phI L彃fBfĔ%$EeK%9˒IE&`Y,,LP=0-pȏ䉈m\ĕQ \ha0U+94ŷۉe|X +ISאؓ"!0I+=FH[+c5 :8/!IH^sD)'Щ}a` ;zh~?sC|@tthGϾJ;nc;wn[GնcZ->}1}n+v{g֬B*,yhk}ٶCM^i{or:Cp@:I<{ۮ{7k[WiX8imkht9omwVҀ wJ={_>ilm=P2G=:`dBA@sCѐ`MwlzoXhE&G] &-Z ϯ vmjzW{/[@/cwvZrv^} 4[yǻ۾4(4ջAJǹ{ʐzja9s{7D{鳣4zu[wnwݽ!醚W[xsgvln{xkOwW+-'q=rف}k.)fN+GZ0a |WMVWmWlleBK>njӑm[6%4[Z}\nڛU)ξon>m>]4Wxo2>w(]ٺl=6k{]C|jix4̮&pgϣ=YNub+}FQ&E}OmJoy7س{t uQho\ۧuzmƟMz |S>)P@{@WuNC}d޺Ss-oCܡf uݑ>O*ۂ%kM6zw`Au%]>o{ Flt;U_}kNƒ^zH͙gk^#kwrVA^p=uαrvvPۗj$4wOӯ=o{_c\JP9S˃ɓcw<rb^{iB:5x"}t[;{{Q1[jC@{Z|`Cꎽ/hH }:U}y^=|%r$!4hLhLIjyMdLD@M&L LL ҧLM?6Q)zH M4T0O@mb53jjzSOI™OIhdy!F014hƈ<4Ǫ =R$iLTTzC?T${Td44ѣ@F@2@ d h4 4 hh )!2 L4h)MdziTI2*~LA1SSJx2dj5G=Y09&j !VFRcֿL<%\ڷL-Ñ9Nwp_\ yGqGAו:]Hd#df/mk6yyFFP%D!3}Mmr+[Li!"H[jUkTT00* @bUUd!~2 IPgu=ffd3333$˘mEN-deөOCQdbS&7WC55ԻDDMS8d^L=1rNUΨ֪NjqsV5YU^;ȼʛ*2^kL5*VVsuzµU9jbY;ȧz$B@$$GDCIm~!8划"mt2/#{4Ԛ*CEacf<ȨySjܺǨu, `D'dqzԫnΦεsZ+R^k{6JZfVJ 351Y%U:yqdF֢iEs.rĵ m.ɦKySeAuۡ1 \!L!2W%.\oӍkZֵ333.ֵֵkZ5kZֵuMh8HHD1Υٛ̒͢RmmjZBL*4LЮ*’e`I$f2I *DªPD"!#^qBb̢3 ( m@V6ڔڴEhT"@ZEF(e T*# &X@ " JdИRԲBsЈB@!W˫o-_ۓ c&bi; 6)5lmMii<e2x,;7hTײ\ׯ^xE\+Ιa7p- e-5ZևNl>f8ͷZɪkiyl7Vci+Apυ^]~H9T'$]' ܡ$t~m$0ɓiI}&Ǫ1[sZSZHRD%S_EeV2`m6$2\Y%T桿j@fٟtLEnX1 .KnKC |NDT{I*U'VU.Rlcc2xҔDҫb52CRIoMq9+Ӂ1Na=;4 \pvmAۭ mgwOFIF>:.H-v%>DټmȂ6~hR_"T 1_=cETŋiYZ2uf.'hpI02iiV!qHcSKlk]%NygfIW@,èRndbkGk Z"]o=z|~x [ľ1.beC_{fX^ĒIPvdUйit[ (i ,&R @2TbCHicS e2i&HDșBVʶ1'y6Col:~?<^HXhi4?<9uؗO8>b-v3P(4@!1 H`lI%}w_5ʅݔpd #"e @9KIHJJ 10|HA$Y(r҃NVSXNUjM SfvGTUAAtyE6Ys_ix ZmBE@%;$mU#5,8n+ AH`4D16iᚶӵdPv[f7w#;F3yWʱB%,,v47GpK{I (F1ZGesMrwDT82eS%VM-`"y5k{MjT^nhWZ mu"umMA43)6s& me`#G:4-⶷)'1Fm$Q U4Q蚛 6F1dz^Iy΂|$j&k^E00{&kvj\*ENed[bAG6O^\Ǫ;2H b7$ F$"]Z*Iű9[/TdžѳbĤJ j-7Q%crʡe{lq:'&c*.&$=Hd, *׷'L|4 1eDt\`7Śvm:QR MHH|'Ƈ:IpdJ"V׫"7dzzcnxJ![r&rH┆4mGa"AFʞ[S0BQ`]_ Y gUW~ ]Ԝ&@nh&gB]xr ѼI'<:JkY2fy[MT]}H\5PwFȆӒU𪒭6D(gllf#ھk nᨃ" +5a}$ۼF (Ȣn>oJC\%LK>|n/&ؔhd .gyzu}'7ukQgo[X-gҢ0Ȫ51\CaCCdV v=Wv-1L!KȉWn1 - 0q皥 u&d_S]&1S0s[%5QG,I\{Vp.#S.gɆmM[ pKjnǀ# voZmW hd ko"#(|MT=)Ek_;p-G0rX>399J:?Wˀlݿxiklɔf a%EJa𸏏~([kcd 6M%z$UD T."f) TbS?g_$>?j׳1 n֍*P2aa'k';.qcR[|yRAFW,71J E1m+^$i@y [˖K5"Rb1.B@냛[C@SJI_0SӋ_Wחz6wW"p*W!Be%5E/p: J83}xكH'#oJ!}<})5ȱ@"ʫ5[l >h6<5 u=]6H\\j:F!(Wo눋H>ϛ_ P%]??}:ܴ@]kwBc,hΚݝJr E_. s}* )b(1FX泾>>Ӿޯyg]*x:i[fsjL$# CI,BQd?~"YrIO,Sߤ =<-67TDA:Ĩ6͛}lc*˚Ra"|/$b>Rqk7\l$U&~ ͘KFR#C\sfҼ&yZf0F3LYɠQ0%PJ 5K,2kmjk,?rQ,eUuBpmTD@+#B~yPs?b(*[W11Ly6ς>̕ҕBLCZ2cJq+AR3=Fdb2`e$mi'&YP') N9m+%RtFbP4.Fnr7ÔLlܚ;|qz~~_|Ѕ~otF,  kr~ANvAHB~@Pc(ǯ!q?{۲Roc0t_d/,^5r zz?_ZkZֵ뮺휷D~ ]98>ނ[p.4oǼӑ t0)<>iIDYn>RH.?wdYNOueKvner}\ >8i6vvo˝Vk[+[c|~2';nV϶{<ǔ%R-htmˣ}ۅ˯W@KlNtkRx_ҋ[^.=V43s#пn{:-qՒo1?rpccO: 3>[n+S]Hߣk=PըgYξ]adv8RtpEĮ兵蒫uƕmߥ .-oG\"zT٫l-7Ի[w]6=7mîEklKmZ 0fm#Hb&kۮrf) ea{6mig]3NkY'Ӫ(~l-b I]G+]aWe'~$Yܯ9ۓ<;g*L$uؗngo$[< Y6\kC"ز7o ,2lg/Jux%55CK-R YYVE|>ӣ =[p%GYtexʖIwlr;{qPC)2::͝ꅷ';2@ @Ȗ3eOdp/SwQ4! }1bocs_Uzַ=ZBmi1?كP2rxjudgsFt^!v,-SB#H*"TJg 6cRgܴw2^7LUDHTW1!~Ǎq0RٿNz>:q?L;ঐ1}}۳`)+34fvN;TJ1LCS4eeb}fx{(UTdPU>C'K2lj]} `#$&QJ@鿃 CTPO)N%ՖYQHU{u(i_B1 RiS`%4Q HpWUnoME P srsφU8I4VZCVІlMdd\ѽfB!f~ ^hH.!( (5b(!- ,(D"#,DTfd"! P~/./g S?1KiIQ!YA 6SE /zi"zD!B2'LHw0I-S=~I8PCz9_CeeERrA0-'fHHD#p]Pk&MEVej6\|a4Ч$ :Xs߿Hx7 #]wA+d1 iN|j=cTvW>}5|9ɞ$I'a(FڝAVhpWmcHDHx; :]xc(rI~@cB02HIۊ3xUAPF"m500V߁s`Mxٓ2 dG̍ch4/ 0i[ V͙ZOе0ЂHՐsWn.DH+C } N}PmJݙuOYi*;I*I I:B5~>4 0/-uzZ 3\;39ɳ|Rߩy8x[`<g_faf쇌=K5)s%70~== w*K Osp9L8W09K}tQԠoP DB QBh=W"g⸼^6wGczQcų~ͨ&2brB_K4sіE%S9a< 3CI ܙL=F;hk׹ ]e7LD8R3V@H G-*>3"x"hZ BPL04E4`ހi\ŭ=_p j,xĖym:Sc;07!kUF 4wlٟL]/utJyJ~<?jIwvoF %Iw%Z[MV~/3A,tfYEfFa%ne| &r I6C)IݏCUIdQF *$R)T`J yCƐ@={};h T%%d R|dP$Ą NkǏZӝrΞ-zI\dYaii>m[%hͶ 4y+ʊ펁mir($p{r8&9~ Ko7mCG8^ jU6q4߮/& ==@DOd|a|M-GG/"`n@u:&hG~> P](3 rZΡyH >++7vzH5o ΋B3@C k=~ ax<m˺t)lcBG.x,2Aҽtyj@i x˽:>?pnr/&iOm7T{r=E旉Wf ֶO|G[},|ĝ*@H55'j,9ImzIY+ё) Q"4t6X:ϗӇVE-(0<:[iײA\,ǟg.Xf>ZlDB,+3_"ʝ/ޗmfu |t$.>RM 헜ѠIX.gɱi)_enxAƃbMl ug/f{yªeQr)NV+%iM7kXV7er.Fڻ$5|ײe. CSY.Jyk]r;sxWy1DŮV#WlcMVbUs>O &Y(j ZڬؑD8mߜв3Kڣc{TڈjV =Yh.t/Ō3$wIYb'{& ٛ |JUf3e\PumLC)7Fd~$aYݧiyUUUU I֩y*M 9|ΌiK`Io4h}vfjͲMx+Bu2T)V-.BWca!uH^s۬D(W܊GaEXt;FӢo+` UU'x{ji3c#ǽ_1<y!!jr-0 `($[XY}R->B0gVs~MQIhHg;pjS6k:Vg}c|tϮe.FH:Jity=Ϡ/$c1I ؖy)Mg]FW6,Q*1IXвKDP9 d/zuik"Q/,f4OOOMf\0 K RҠ#,ٟ##z!eIz|T#4#6i"y6]\fK/sU-/]O'\V\7=o댞}뾻vsֻ8j\y%;?{ }#buvS{FtU2YÃ%EA #*6։k ?g`&s-DYJF$]oLᨅ}`n#7zW QnͻnoxP3dXgTPrE‡'Qot"I8r;^*b}. مs.AD?y#-bC}{)9:SXctd\u0Ve>0݇S>#!-XgTsJApy;mGKt<Ҹlnꭙ4'7oKP=ll)ZRPd@5,5pRtRP ˤMG\[kcZ|:'MkCgf:n UHhdLH vb[#ɗ.}I ۻ5{Ci(.Ya-gy@F Q,`mePK& B%uЬ75e OE^VފC !+bma%KV]1~$x%DDR-Z%TK=)UO쟴k_I)O&..S4DQ$DVmllmm65\7!28m[jpgK)jcl v7j`YkM+ti=-ɘ a}X:S;fm8[nBbYNfmY tJ;"ND(<:7||;^< /e86Z_N jD(nGĊihNNpg+œ@7jsy3S:ڧNUF(9]%6S=O5)=9xQ1sF16|9s xЃ"FcD %48wDTJRePB$a- QDJ;I!F!{5=R "(拠IVB a#7j3Z5*Z%'be-W `Rd0,&F\kZŦM[mP*N SMXR)d0&C i - rP";<hX|6ګ2N N$@3?wYuqPFp>mYde.2Ț6  f%GrbfyBT~Cv]EWI0n1vO1uёFIJSSCD',#l|gEвYYn&_Fo[әYNym}ߞd4AD@6ٲ턊3׌\U)srt1HxG;!$Є92S3|p^pb`ZGT%y]<߉{O67{y~]-^@\!Lc]Zv} 5O^>:*@{9zQb`utXǦ_';%[WPC'+o'b~V ]d|g7a*g_NyS5zNܰ|z)؛6̐1$l@>~}26)eM!JD;1u UaV,R0vӏzfX6 Z6tKp=j_h#\( ᦼ̲iCm/)a0%&15M^"Pew"t%#&w^=,l/$3  VvK :fץbj3&y w/΂U*<ڃOvYo0+BKXOMpt|ᥖ.i/?甥/7`&sGCه;='ҦCfUisSɰ(GGXh>.eZm$ۚmjZvqlFtoooomUKe"]J];,s3<21 0_j! ~(I2/ }LO!c :w턇bbM"lU0!%MO y/eqh%}S-r3BRhn}ҧjYi^DZ /+m[wtḆD,irKcƆ12$#-M߀('w d|gcI$I$I$` qdJI; ߺ:-ȷPӛt}Q$Ys[N)ogq8 @r&x`ÄpZ'eZG1 2v6drjh4 & ^P8{9ˣ#ɨ"Xb,E-TE6b)m6֪ҋFՈ"mNG ZVxx`#rX[T;zRxuQV噈-Eg3FL3.M$N~cl}Ȓ;Gi <Yϧ_g!'$/6ț8l w0aLޤD]9JA( ดtTbCq:B6r8Ve۟KD<ո\V`@U *D(!Jx{3n{uA#.1* 7IU/󾿣x=ɳdqA7g/v{ae$I-ir\dV.~#bȱ1!0|[||=`"Rj@Y6ඣTG0y>>NKELqј1>K&(@L$dji 1Q.'a&;]~0q(39jMl!l- ŵu ]# :;`_`5ph59%aׇ?i2:i׷wppjͳD6H$gw'O?Kd/+:[wW:Q꘿Ax$ӯxeFQG :_}˖V0&5QcDADDAP^w!|v^k^jzQ@@w+#%Tœ5 %(p]w-PJ̭zJvk^4 >IaLu])HaNjem`)|6t!}/6tp$ ژ5/8mϲs4wJ5DJWһYuP7FZSDڿ\K7)SY-s;uڼIU@q6$9$}- tU[ayd$7Bn, ],3Y7] A 3vZ@t׿;l_9FA"nh_w02B !Ld%Ib?{#*`` 늅\!ǰ>sܭ+?LhIm6-zw/XO]˔ӮXhǑiyb~ ݑo )bCg p&4 i)!a`}_ 0ֈ $CӲA~,RHLBo=ۻ%)M"rrƪ\""39l7gϷ{Vm\AWǭйCa:A#h?3.|87_o*+f8؛ yk Ѣ20 їwZb }{HS Ń8%H(r㟤eELMf2`gHutJf;;i@yǬc۠TɆ_N]fW7_rmx|P*ݓIOl0Q8Webg(8eeƫtJLYGQX[),2]WfH'4K nEwJ颶]&y>o7[mmq[G!@N|~MW*+eâ_Ǹ"x!,3 ^+O4K7jOrlb]{رeP[3^f$vyKuuInȗ32>^ZY|zcjɯ Ax|-2ϢǥdY#H:KHy$MߎJUF!!&iq{z-_PU٘0d}_lKi_>5 v.8nI݁.=;ee֊{#\He~H֔6(vH "Đ篍MǕx˰t~{MIB]ꜵxG;==uoakKX-!)MeZY9WI4 TR&ƒ`L֒>EJM$eaD$[-VxP|d ,&p0p) dx׭3_W2~GK3c8q+!RHTtH}Hz~>}$I$I$I$I$I$I$I$KZꍃ#ݖ40_P;+qu>T)Mԅ 1BJZKl1.FA!B{|g j] vao`J6)F1[R"7XP ITꭚi+6흏q;plcg{.E X4G q:132.謳Ey$5%;%9sh8n8Ͼ^շFj"d(oOݿ<\tY)o:hq4r|_ wy} awsfٶv * 9[vm~-0%`#u#VsJWʄ;Ȯ]{{|-8`R4Jxs ARi RX+=کKQ‹YLnrU /PX˹ZyH$ 0 G}rǥv0d" *=Pg a١63'Jl;f&ê\%"BsH[}'J`c6HW39D3΀)Vr9^+…#|>iL谸ڮj/t,<|iL:^9vk,DWFq%<fypU ʳItX/}H GB 5;>ml9,|B= ƞo!gln]9]kWHU,#P9<,wS)cYZo`tO($-]Q^NEm70] F烖QAq_yAoid3MIBBFy cd{pIXVyLɓ5y_5Kqל7 @ƹ3orc^x+l@#ǻ۾Fͽ˞l-M즳N{\*F-Bwvg/nϲ]Ņf]"jp,{TGAnT:}9$fvt8lmZoMq>ǰ@ӏ_*4D9D c)u߬at3#9"^{apjgla4O^atxmê 9ZZKU0:R@{fc॒O,C',5ԒDM6R7T [r,|gzP>3"/"mP6Ha~?H–nXpo޷RlV>3`X&sJY[).ED-@s{dLwWR"EC29NR\f 7 083 !RbYmthiqp|{ iMk zEgI»pV`r=:܈hL5Pğ5 R)FKEHd)%&qmVAd]1bX(2XW,g 46%X$!'}sGAlai&$Ze+}RBRA#q,Ebؔ l jp\xRRDsk- \0m l|$V5%D-O%X$a& uc]s@$n\]0B>dpƷQFHǜ9X\c#FЀ4o7g x1i6+lA1Ս2mu J0Bx[g[r+dal+O}糴}15nG߬5)EDjS j}W᪭n_}"B0`;../g$11*Rޔ„pN3 y$mlI;ef0v_D P h4~K&cIK7> +T츠c3wV,f`7Xzf&fXc3|sq&>Jlg }< w FebFgvΣh5vhOmkZXh,' TjcY9$(FY R ٪:JI#yuO<Ď6`Xa95bz٘% O0 Fe 2,X_:Z 5YŇќŌYv+Va:4kE؋Am-,< 2}P*K&V6C&Ѵ+V8Xlz(7'c<NhZZ5Y`%c 6ɣBF$ŭhϯlWl:.D؞ y$ #[ĒHٞ;353i$4M$G[[ ׆-v Z`ˍ#!s"\򘘹Ktaiz#EFh?;|9w=JhfHGϷ,3mK0eiMO;]XpUktR8qdIGP AvC/,]DMl 5Kgzf5\PgcpL:<zUq\wT_iS VT MqtyW B}jʩ*"UM=ޱl%!5N!Jp_~y1jt":H]!\$)~:dG1_Gؙ-虄Fo)鍅]gLNؤW]a X An) '2z݉țZ 3]-7~Pk䪳i^rP{L,\:0ؘ) JLYm,mgÏA<鵺)#}JL5mv n"xV `CvDLVfdž[- ݵnHR،Z&HGԆKsFuN~^O`p‘aDЖgG$~M%К5>JR/:7mHqeH[J i%xYg#i;kDA$pv_2wXݯ (V:OVJW|c;؀)0NWy/PdVY)[iۂ f9N{\/e+'vkJal.D+;׿eL:Sc6g7҆nH =48+jn^d`;vjClΖdoe9̦PUF{85-ZW+f,-t\d*[qȬWD-8ӵ˸o64$XXm Ϧtnmx &%AH h /}ɒ19dt]Cmi\CwS DzZOl%-K)u;L< Yj MՈcD1n3:C`^f8~K:?\\B'W5ΟCƠ>{ t5i? 15-/^ 9= +K\XK[fA+PHޑY}w["OX?|PěY~J~-6;'7:Kk_;\(_wbK)vuy'Wa@O2K.;-j^N %])qGawP6m}yk|ū}\] .A|q)I{[1\*>'Y)̺un18\T]9Xyv_ZUJUgmX"_Nb/̌o9rꨁqٻ~c;4x>rK2Q(뭖HbE/릿~<}Quq ~*=$ud1˅IXDƓlpDpԻ %QÄZ )i=5+guFVnգnћ;$)ko~qW'~=AX8l {mVxG;oEI%,0z0@p%u}ٍ H{óك;%@fmל巏շi/ЍdfbcMw\ytĀ}5̦ʈ>OrʹT(aN=FQ-݉kiE{za+8'VX,lHMTO Yf޶&)?2mc&)9A|)|k<^f{O.˯JHyXn}(}oa⒧d!f;em w}i4'}P[Xw|`&YC w}4?nUy?g@9LMs۷ylxG^<Ͽzo1Ucp u1529.2`oQ9\.g2};I$'GazO1f;3}ݵ$~dyp+ }cenCP9(һxdʔH'١"K {!?WOv~JM[ g$o08`b@1aH:ZdhaHE)m۶[M&M+ hh (ZU2 [梨zja[y^]ڡb XE։E-1,5vcfj#R4ӱjf5&Y(іYKdX uܺrΜujV ⠀c+bVJ60Z֥kZm Xif1 VĭBH,)e(U9dŊ[%A!j6fBAFՈ)An홝ֳwà%XIii -@QE†\ - QK,ƴE5rQRBJ3k+1:5?u@*­.2d9_σd)S) u"33gִEYck+:ޛ.rbIbz,g:14hi 'r35~3WhD⚤^Żח\}^"X1KH}J_Aao@ux<59;9(akhpb h4'!!Ile&]b U)+`܈dI`6 FVX_ d6<{ rV!aP;BsA/6X}-G)v5211j$K|~M =?[4~KQ,őGR]ah{%Q,kU Hѯ-֩~ETW:PqK@3YT<Lc*SY@'G܏-.?,q$pWm1K mG~zb fiQ.bv1jp8~{ ꄀ$K`%=Q_B x_~Ilm缍U1wvN)k/@+ėHk1rKHBcrCz1 3IN! /QPݞ֊]*ڣ ?6V jjj1']a݄J tr2E ANqYd$$ͼUe!'$ vs@BXΎ;}_c4$RpԤ25S?:fllEH]Y8/$_n r׃dac@?d u&"6ͭ뫭uZ3쮰g\gkPENT KWFįhe|?wMXv2˄_uz4CoS(ǾWE[4 ~a߼ӡia7VE"GC b[x걾6VVdqgpLGGBgY.3--ŗ^Kf@rlZ(2Q#Ri@7 L٥$|}@  CEUgӢ⳽S)Q+r(eux@bzjGRDYi㵆[F7 `ٯl^X# UGYs{dh߅7jimہDsU^z/ NgsMms)̊eEQUf]}{~|b^?Ir xN~ <Գ_I/Ь}{\ʧuEyA?)Ivk|/G@gקЗ%l6q ̷3ڬ/K%ve黓tviYf܌O3%>2ʞz~dбJκ=, !m3[/K%+:g=u_NTbm[n)1mhַ|]W[he"ZRDyߎCh31E %;ȹD\$( EBQvq PBlB_3g|XeţXBVHR5" doٔ CLd#/l,q.6.Kg&*Տ3.:H$:ruJ4qXdP^%@KAm.\"W?l``VjDSŪ5 j5i&"(6XDWhUDUX(!Q(2 VdZ%J&\Չ@DA0eh2\$\1݌eD1Y0muy uvnmVhTJ噫=75V#oRLP-fي̴ҴVY9j.wTAj~^Cب$,O~rb""#b"""7xuU굷麵RJ(@S$S)v*R1bפ">p?Ʒh=e:$&PRt zPs[d M^xrcK)L2ي;u;6ŏ˙D XkpcÆpy7Rs;v]Z͟J=z(qr>˘Lkk=]%.L 9,kSQTwzJStlʵ[F3ۮ鸝3 Rabj~8Fr$n$jԣxZ~r_InQSGtRJFo|d AeA$3D<8}7a=g8ӳ{kWOW:3k͕Jس3SᥪHe`4NSI: rH/YUlN^F"+}_/bQoJbi4%hY֬Qա~2z+i[Gj SCDtkOA枘d'9JD ۃZ@n %IZyD_fVa N[L^dB.:D}NaQRD2_~nl_)("C!!<{{6ʆXfٓ.!IoUf!fQ쀴 =m#e5x;YZ%I .a w]v[%Ç}~)E;9t#H\_8HQ/!!0˃Xv7v+WRJ ?3q$ u|vGmq9߳0 Kg4guKL}OaJv ꄔݝK;AJ*diH-Ӄot#D#xcvֱ  H,9bRCJL·3ζfV3 Q׍մqhlVuC1^֘olߞNfROͭ~FðҷDg8nhGf2a/Y\K.4#w.cZnDޘ>RY -lD:(Jjjk̬ב|JrG$.kꈩIu&S S:*G BD7GDAq!el툵e%II9fzWOU;օ Y],Fp -$v9lkZֵkZֵkZkzR 5#yvO5,Z@i8B[2}4ȶO& 2 nXeM]r2kHNԝt&egi-P2)C-Ae v\X(8.09Gl)% }X3ZJ #` "l!x",,i*0RP+T1E_٬ՊӖI)óXEmIoFzI4 KvmxGg  B?v6T&+~r5'קm[im|0kץ]_vگ{rkB̬WMۅREyK&JGWuLۅ(?~]I^$LO{\!:R2E4M9˗ *].=G40ǗG<:rnfr6&i z,=ʏߋVXov6Y/}0]Nf* 3&ѹei3{~$w<ئ܉(#uðĺ/5^Z|~Ozf61jkd+37c&9s^ КtLH%|Oyck>'sgC#Ho󎎛s?AUCw < {U%٤d;@(2giS7cNC@IT#%9Jc[ϝvwxwGRIX3ӗõ~: ؐ6}f>loUKʀH (PhYCyrVIBB4Аٽo+! BUB(!r)"I09# -4)s̤` _n#.^FZo\qZ@0 4BJKdA_{n'O1d;KF@0_m…e=k )\}<py_ތSԎ~~{~B!Ƥqw9+=l. [INh{8s򶘹:8隲'cckZ6.WiZ*7s:K2udLIs"dU|2 6.94B&@s~PeCFp>Bpw)өw:y}ZbJ RqՍe- ^?fzk] oi!ĨIv Wjb:f8: e܃3gc<9̣r㡢>ӭ@yˬf!@ ʏ ׹̝Ã<8q9Mx3FD@KuE& { i6cwwwwʔﴬY[M'G~g#Ϫf}*33<33ՙ̻߷` >'cO+AKQj6)X Vk ߴm&YJu)1Td}KtF~zTS`H,rm!hVZz{ާoI#zKnfb3#)';o9bZ"*09ߑ/z GdMeY#G\ج wSoףxG x֤ m ]W>{#?;myl]brux߅25w",UPY`$GsP ,tI+'n@PM/k DXIIJ&t6(9ɠ_9+z]nNyN8[ql¥0i =~4 ʋ]B̼9Q*h bd۝d}q:8k5̷3xDъmIRX-rI{zd'# V2FFuɺJ[KtwZNY1sAkZ7u"9aZ*R `Vn^`ݝՋ|0&wɀaѢM!L6x)>kB5" x}z:MFffg:SEa b؋ P6 ۫@X#ꛪ(^Ey~鼸L,O5LDȅ?j fnfzqT։P6bIyG}0ɉ% l\A;r4qj[B\@ALE <*Vk7 Ȕۮ.X}G2f ܹI'\=[}'?B??·ǚĺ T8b٬M,$I!A4I$@4H8K LRjJD%'! 98~/7:S쓥)զm,6Tޒjddh5+tWt<`1,Ɂx!)gpɌfO66;!\d+';[`i6e| n>3~aD83y*REq{WU@AqqE#jKJ|IJHjR%<β2R9R S!A,,qs)J1+tVcm3)JV P3OuEՙd.0LhO'jUbOs(ƻZUa$TuJ"UkFkl}<<ҟ_z"}c: ? H`3\ȸ H]}$|GPfyq80JwEpX'N,#J {[0ǭ%DPg)H,Kl kmF$'Z6xUo 1J@EY "ѷPc`FD":&Pm[#od4\Hg]|L(brְ&&؛wX;'g+?r(7\oU^^>aesLRLDz0mzoߤK|L73| ~7Ôm>[iA@fKƜm&7ѴrDݏ%vgv&™"1H &j/}#٠: A,_f؎eI@>ʹ66\akWfaJ (@IeI7ږ^v304~9#"rʋBDDJZ)HQ+$۟H |.="RD9dHliy`I>`Y<1[ }ܶ\GZ=5U՞w-&+#{Y`a|Y7R|MS133 s{{U{NV*-Qq:Z7,:T&%r ICM˿|_"JW@b!64xĥm6gun.Xh+G_|r4p@lm%?VrY2(|ǹx=h#vo#o1zN%]KelDZ*0{I Ix4CV SQP;8 zc|e]Yq*| GvĿ)/*v χQQ!ӆz05Igm'3j3g<8-gQKJ{IdC.yW-:ݥ4CX0 g&Ѓ&F/o =DD 󴃫(Ƌ.ȫБ2Wou?0@r!M0Ɛ(O AUnJ@̄@ ܪ~SՈ'#cB' ҽZ4 . #ߪN+^9n(dJC*r)7$8c{ӞZWTswgPQDUP;!\+0mZca%^W1hj* 80TEr$UNAndJ(&7t弄,KDPgF;Uh_ͥ%;FL_Å;-!VdE 10/iB4Bg",/h\)DLNyd`vZx-(gl^6ۛ27&7WnVDG*#}e|.:;k}V7A'u9U;,m$i(.8͙pVzvav{.u16cA SJ{=Ͽ|YֵkZֵztӧN>3_?E 7i)bTaah0Rj\ĀDhPzsA^ D`T}1mrh^6kբ HMGqZ&P?BI{ԭ+M%AZ$'ݖ D2Af$ Ĝ:Nr[l,S1FY"nM @I4!AQ(ҀVETtt& 2a,G}G%K!MZ.P39!h-a!LfUtF-8Q Fdqd2b:HZZ"ACizb r# @eFVP M~m)^/dzDwP  0 Ȥwi܄ _T>otL=S֡$z k,0vt{;$Mk/Dn'=B vs Ǿ?k ǀm*lDƒɧʃDuoPGtS<,MlOdYN8zNPQ-jgHsN6duh=<|)1U4j4CCSz7ԃOCtx%KGGlX, (h|FHpp#z`BڍdKb;qRťZXyèy> &IeN|/:T/LD~fH.X8R_gkm}2" ,#\r)ܶ4,B0RzZ-![$4p0|a֟8i3IDIDٟ@bAQGop]Km*xNELKUZ_wN`ZԊ8Q.։sܐ abܧ*b/ ]\S;;-YÜCTu$ W@Hɤ MEpՄ.1" eSEK:98O6"sW@zFz5&)ClLPӽ:Q|%}_#&()uL'5' D%eEx\a ¢$VHD9G/nlae$>]mj bHAF2+;I񈊖6sM# F@]8 /]ȄJ:!>5V jbZ"PPRR |L鎈yI;˹͕FPr6W)E6VtCG9I, NSiӮCCu@|Dϸh8ۼ;k=0KJU}ZQSS-|N7. @.L`B)ߕ>KP_ܴFB 9X{DE!=H}]ZN+ٮ nh  ,-UM6Y5&(i^B-jWx~JbQd~Fldrz>K;x۹Ƀ$> g2D7Ho7FȒgJ3Ўr;rjD SJVfd~44'7Ƽw6Ѧ$pn!NTiqo6n A 5D$](j&Ȁ};Oo=цH)ՄM$EА׷srw! ̍v{[;F9(%!RxGhdۘaۈic Gw8PXStABEsP$@}ķ_vUCQ~E̮%[#_PlhCheS%QZ-dSwb g30hI*JѦ'2($ZTbNA6:U_ H3A֮,ch̝PA_'JgIJ!C  {؄n 95$4QV-rDx]~adII5HHImk Q8A[c$J3Si^Y[vrT?j(7(?bW1L'h)6RIcYĆ9v#P>ߍȚ=pxBU}HȒY| 0W0h% IF+Wf2rLS$m Ѡp6!,.wI*4) 1e ۭ vh&TN_f@6k8\D9? Dȟ~ /2}&\="gQ|PR%Z@ >O1)$u僧'ICdhM8w>$MGSہ)B\p p1$?ѻDkc=B- RNч{ qRek}2x J'\BM׍ڙosH7!ϢjVCIхSZ%p?WI2>2M<1Bk: 5/nGt.qP=b#HNIlbLHY_Y/?<ˉ_̐|B'Cn͋rqhLjֶ_|3(^V %#HhN\֏qf7Hb@0F_#k u z^wЎw ("0TPCТ>vC~Uȫ9Ȱ#%`Jq^i7;]Ƨq]"Z0٬R\5y}kTUl(mmI{bv f2D`0KrCa`ԑ&4PVŁ{"ӭ(qrL+bM1DICFlYlSȀEdv/ޥT?`&/@SFrT*DR-p") $@* !6Ce`!g@^lF$G/X`bW )H#tx煒fj1" A~8AWVIv#BsJT"S} v@jX ZA0;QBK+!sF@S$Fl>X%"'nOڥG d ~<)8w|AC|'ƠyN2jCpM/vj7 6/ٌE?X=#"_t?PmH+UXЫ2A>PG%N#/%7"&"Xgȓx6H6`id;N(na6ObR"cP>(&!JsQ8t嶧)]:ՏGsyJX0-HJA2+ RB-Y .r M]Jf=z[On\\h[-2H± $1}y( A$)HKC^yJt`|G@}WP`@[gXʹ4(BbnLބ4R- ovE0摟q6=T~1 !b hM(&dH9G!+؄wI"0FbG-@Mt+-TH9A0ߚK$܄.玑ůJY:8w(U-)E'um ,>Fm}c_GM)OBeI (Q$ %o>s*:~60oDeCʉUm' L22%rUXm*uBן>hyZ8un̄a f>3I ўPzw>}r|lrA @N*z-SFǯ"3QkS٨eR&4> LaI% u*xsԱ$UcT[병}QW!y`1T#blA' (ŪN1osvdž@NZ2$r5yþ:D{XIҒ$a;t)uC G?C~LHj>ڗfL.!ax̌!VF$d PH)2 lfEc A("D Rlä Z%\G|WP/CS`z\'|zd}tnNI:Ԓ)tHMA7ryP Jt`{i a&%%`N!" AfpUHr5=&g G׈!IrJGB,$#ĕ1Ғ3 >EiZw6iVRHmEC5 drs-NFѺ*RoN&e,,%md NHOr4HB?I"Cjk:AId!fF,[ZZ,Pv>R B(d%"P?J2?$ =0$HO>o>mVbdȋ$}𓞾I>A&uu$HQ۠ʏt'XI#:O\pd0eS$ah@STqO`ɑ|;*v]%%C,=g9 3_ ( EB8CeXn~5eQ'a |RH:#,CoNzbm(An!zء%b?iz؛m e:gLk'8s;QD۱D8Su=P9b4{][&ŷIIߺzG92U3>Z!*ެvhN T$iJ ,yLڝ*-(x3px! 0YTD .ԓ 1I`!|C͈]aSal &6[-)&ʟdXҖ/i٥l c,6-`M{jWSik̫A,JCVIJo%tLXդIRH"g"Q =5L3^dR"Rm I{1\E@9šTO?Vh3avw3ճ$-qfu]6.tzĠ[$=ZeH-A+_忠,O a,r9;,\]/:_1~yWQ\0y"/ډJ"pL|>9# A/Žbפ]cgK$ebhGB"g|2LߟϺ\@ ogKط߷%F(8_wof\u(/2/Q( ZYߑ;Є/cN'?.kZa̿ H+Km߷~#[ tu]\^;](y=$@I&$#`8ϡ|ٕ l 3(wBkg}qlD hE}*^0Ȅm eT8H-'R80T'i !sUUXX0RmR̴8i3%ДAW`\qĀpR8ުhx׵ߘgPx8$"C h [Q3B( o2lIBVuJFh_L &f rU2g<*dVp=P9|& M{UbűFlC0@/Gr**\~Y~,UyH=\8E VDڠ&ѴG+6XgvP{Y)hWJ}؈h{;94^^X-. ʼnɡBtJ+&;{i OFiaIi bJ m|NU.e1joa$Y:,`.no: L aP|נ2I׉;y{zȭ|<&C?IK7 6[ђ,jgK"MM&عE.I2I0(" Ӕn܅U\; }1C[eilhKA/=om8wC sllk(Vھ)r}ú6G7M[X1Ȉ"C(,~G+&c$c#B'DlG|/ow76왕D1"1!{pa9FS2wIIIz8W_&knxj8dIB|h.G}Fk)o¿6jwGnj;xqCw%)$R WeIRH-a(HХN"88p }V%axGM`+<9?#06nFH7+%S$X!,AK16mjo#>}"N]m;D1"R Ġ+wwg*ֵ_|O|7{Ӻ2Y0r!uВ&`aF; ,MSEt'ju,ӢN:c%$D1Liy+ļFd+{F[SVJLmC]K-Og{ ST$m^$BSy⃠΍%H4{Gk;4Cď2DvuPw_?4"KnZ{$9CկiBbK)D1d2U֮娤8C=lɓ2񩅔J h rffZpwլQ7[URͺQa!ߑWk&RAAXcҩ&IyIYV\)N ߱Tu1ۺ k.Zc  6ҹ+V:| %N}sO1˿I:RI]!瑫 E-wI%TR*BbmHZ}gv"Z\LH -d24CKF^q*DWTn!9\k[PDbInkw7{)JVփZmEv6cuY"L)MۥlB0u-khk4ns[m0hlXn  Z4"B2RASXf%#ovhnȻ.ݹU`S\rWH hwK}f9qqQ7ާ2'2,br B5\W4V@, zs[C{7)wvHSDëpԕe+АPBPYWW3wE*lȂn|fVTG"v> !ڨ&|\Q-My@Z[|[翖hpF\,`QU_Zv▔1z԰L6Z2Bae @ƘUܖ*4:E",< c6<4nUX@)@u$5܁aN٧Q!0̿\m*(*h@?s~~Xhy uJH英 s@y.5(PHXDZYm,DpL2}~vU;IyM@ZD’$UTJT 5JcUU[]5MfNc aHU[+`~y4^||tXi֔P jYmhRCuR]/7`3\Z'Xrb^ZF h14ZnS-›n$D xKXÝ!F! GG+~ŋJ{2"a Fl VnTGiR(7v\iJڻLvO8O9@D}2L۩! 8mkSGUO~&ؤ*!!" xS.5m+,ʵ8E.Tu2c爉8ܮ) ZmCm p aವ)n3m آ#IɂF#lwkGlU,Qm-Y[P~$e*ɱbV ELFYuqEMwH_"4|6Tpń%b#G᳻Cm'UQUUDTQx('pxR+aM2uRp( 2ʻ}\_mWGP) ~IxP4%!MoMoH+6Qo*APT!"^I~t2]u;i> Hb P ppdD˙SS;8 (?+yg4:oD_U".8Vՠ\ 6292MlvUP7* H}jӝoGQR d3K,Q-MTѝDe̱֚!"e6!֏+JҬAIPF\O}ix?j΃C IŠ $Z*BOU14V=gŪ-w2'$ϙg)LnG$giR&VS$vHXZ[mGl yfRɊҋK*=q>ڈdsC8ǨdnsBA@"R! Wh$Uq$H%7GV7&;T~h%$<@PX*}BT0A$' ޜǷƁ枫5bGWE rEOGB"Ċ(;,,*@ E}6Xuu@B5컕S'ԉ{ztU{R̒ !`Y1LUO]*~ҨP Hd "F Fi[ETklU6hfejjk%YcTZkEkUlV55Qͥ(-L0H d*(hJ<'>#GrtMlB|V65AYՃl=ξz#Uo Tʁr0paQIJ퉿XmL?̡ܟ(H7C$zߪ,Yd/Ll2=( x$ֵCF 6Ћp,հ#%ojUF O6$_7 i@-AR qg`@7-PJU!qG2BahS͸ hɘ۶!*Kʸ!Q) p0dIq1 $fHOBTl\*p 1b<;Oio{~DG/I}wW {9ZLľ$0oavXH "{~YCBtNz 8ӺaDO8c-(mʱz^#a >37#Oi MM!&?8O67S0x?PhL?N!lb ^r'D"b= Wsγ?whۙ'E :@zz%,!H7US*DiJi%b0Zo{N[2U (!K Y5T,Af]ݮ8@BAhs9L M_Q,A`i${9ReSD@rQY2RZ %x`X{x؍EElՐ59X ރVGDX#pV^*Hd .0:*8tJY׮QH,KX +=@oFvHiR6[a`17G5[߬#ñ܏oMk4DO)>ΉCaԫf$Em,D f+ZH[YST P#J|Џ}f|i:@zň70 jpu DIN:ִk1;? {Ό2@ퟍYG1COE_AzmiߖgNFeI, pMƃe JP BI#CSv CYw8"HHʓy1dy|:YɑRȂ 33 lKdDΓ] mp:c662G6+:b 贽;k=]& Q^Hb؍l$@BABikqӚ4e:2VMe2)-0O.rƉ.M ,K0C6&0"410 R$y*~bP;vA(Ph U)PD֞RA+++tr!d T ,CfJl,BL@8QY23ڂ2B+nG;z^{6a$ȶЀ:|I:t#Lm#j9}FHamM;JLo9فSxIv;'(Ra>{D!^l=Ľҭ!=/~&d=e2{{+M%,o4gFTl,t/Kx8`0קz&vuߢJQ$!HOb-6=z_----->'?=G ̹1KDIJd.Axd J:) aQ? FhHHJ*B+j8w$ `gF9%ahgmҏQ JWXz $B ŭY1hf-ZYHA.njdnf miFiOapQW$r` &p^s.V!,J` ju(e*!ZM6Մ913T5qI.bM#D^+!+L(g{ZF%)80I]Hm$!6PCT!y)E@E8*R -Łbe4tˠyQd"vshh0I8B0*7;-p)(˾qf1' Ii!h2!1 &1h@i B # HŊ(:.L7Ѳvn*B۬6QQBRZe+C{tu]./b,t=I9hB6B*X9ᨌ:h)DCR44-,f&]ǂM )v8hѓI@mT;Cȍ(L8֍b({VJX|wl6.C\qBtQ)IJ[ZtȺXDK M*-$۝"U Yci4ʄ N(aUFP14!\ 6Zw1$]Y@:$JPD0Ѧ06cFؚM%@2 %, cDwp“JIm푑g7GS}XyaȞ;U(" F!,/5]U41KdH¥Th6BPLZpwUؕWQO"!<6^HC k()v LL86o4MHĚ,F$ Jh7 tfP1l(iN#݇XlH'ę !6$$P F^_!FJ-*?ZH"HdĪ [ F(#YЫ4"AAF_^,C޽﯃<)JRKE hABAc?M%S"6%Q) `S=x{3؀/ 0 CwCrpCҤvtS◑UD)W]@deQ==[uvvwޕ(ZIĆ!}bh!Ϝ%yP R:,JVJ3lJMJT!*&ѴwmmM^D\ ;f1r!D$1 3\X i\8T<~Lh;Cן3"L  |k{+~cyM>6k.d}%9B?u>uS:/y/< Ts̷& %ڦnk.fbXe6 ) ̓Pc60ka=7]1 $uNϠﯰ9 oʔN`652'pK8HN) CYS A3wTrŮD煐+.hܳ@ijI];/^C<_/Gk>q )3&]-*WE_d=LΑjsޚqÊLE2r&9(I h gK]o8nxqj; l@]aa'D,iPS!ZdsUnJ#. omhY#Uj9l!FfJ6L5fyמA.Û21ʒKJqZWTXQ!N/GiԦ1Lc "dT[IVDHiuˢb&$M|GGاݜ_"Kigю5QDY*Ԅ .D +X>:"6 #I-)Xi"`՜Mb得&"o6n͘$C N5%w+W[aI!o QOg C]60wp^ۦ'~dSc$BI*A*;<,NH*HQ(i /N> <ɜ4I'qP T"*BTPx"L='>⭛@T<^,>T0 ` ֈHw#rDUUUUnnOǏyz';;;`m/Vsd 1s :LBٙ$'֐42ȅ*E"Um68n`K71,IjZ ߵˎQ&(#ؾIITDhHjUnTe 50e/5KJI6"$IBJ |Ǘkڝl R  $Y"`&Ba leadC2吴ۮUMVi2,"Jƈ0)$Մ4~A6cӘ9 &Ҏ$vbz݈&D_RIŶI~e2*d)Oc8uSrmÀ఑J*lm7 Si68*6^e -DP!=vmVU˘ɚت+1`Yz*fC&*mfKi%DYL r75%['/x{'e^[; r$e$)J~ј':)$i: 3$wd^J5*YdRTִYJ)WKhs>ν4-0TCī+bᘧA AkPo)JEw^8fx޼ޛmfjjjji6KO$2HhO\j'#hsTĆ|2D|PgC, I}'< =R*+:q,:٪0x N.;m3e*JRTU*Jzؿ__Ks0'+=xj*aA(>tr}j瞼>uT?P*|:, Ѐs#!εaQ'/f16 6|zClgCz?d V+ e,lD@lƥJ7,*ip 8u c4 $6jslxI (Xd)s9\(idU'U䢋bؑw= ڙChF:ې  RvN aLh y PDU b̛T$jqC;;A .;C|HHgӂNp7=:ި{dANτXWzp}}fO<02Hb%0w6"GSb &Ȃ'Ȋvg4e-Ʉ00)DR$fJ1d"Vc""٬kND8Xj3eA&ą $Q,!-ٱq Z_{f]Nt4R0#B89b)n!Ug@Y ̺*#,%$%B0O70|g|?md}_/ HA4Jc&Pd C+K5!?bZbuA^$ҬDL C BH*" hbF5>(Q62"ƌ\JfQcV~^q5ktʞ៫~(O~aٙO()Ȁ%P?B~05РRLJM6JȦ6Ie`@hYGKFRjP_d<!tBT!X V<<"`HCEmE!Hz+7|3"%)5ڲ|O's跃oG ;Uƒo;cky _. _~y9"ZD85!~woWx^ $b#QI(K:69/"B8ݠDB0EIKlU(%-(%k(Q@ 9,z?tߩ p!ǾbswZ|R-h?+6t9oA8μCG ȲLc03Xᩱޙ%kF*V +";qD_6|55q-\7C;=U_%t% LB/F'7Z;UT Zaե ;dpLG$qB\e2t<ޢ9?BUNI m->e*KTZ$&͌Uiwuە 5vE0sI:kZ]ۤJjf 4CTh!KFMscDs+4܌Nր9û(wp% ۶ZڌZ]B]DkFe;]].54W]Zk[vꢩ-wnHPiAwp3"jSu&bun`S(ifJ1ÀTlT@$ o+O"8G^-}1%owհz}b Vj幢ط9cf"QL߿jAeaefċmzo4RhO =X0^lϼz!X(x%)v؝b~R6#\Ϭ3AT,/mh}.n+$dV]3QrsIƹ֚$*[PA/?q,Hd" [P)5MUo! =U:k1, cMI'8а`s -3U$OJ":X*H~7'lwxdލ̵BDͱ|/Z5`*i$ C>'gK]@j;2IfD&RnO+zD7 i*:i O16A!y.w}loϴ7!S̆iG$Fj>ϥC#rM}ζDC"2a&Md)sv)#wx PP((PCm&)uAJLbV$&Y,jUw9BCv ppždt[~kFcT\״~AR{nO(I m"LM&Ṩ9&qhX&'UT_sbwz{,AFadla lXnXv115^m9Sz:@E9#2.q{DN_˃FRYk!1I' ؾ4*/qt0:LcX`dL^ڡMǟNq  @~>CG h;u*c:$5V;!ri̖62dV[.c31aL[,\8f6bf6zDC`_~+)T-eBelغ퓒 TLe.=-ԙQMPTH_fE=&M "=Qeg&vzjmQΥ\W) urIR)ya(J MdMBwx;u -'DO"CI30)6L|M3}șhV7Ni+۸`϶elV'm0bKN=~ʨ>.hAU ĀJ[˹<'"J2^#zko7DBg _f&.K[{[67@8X2 ;) @ к!#` Rl*ˆ jR)aV*F&JQq LZUT7̱mO)ol)ą[1 `e9u\$)%̪LPTKje)9D\ES@KCT"իR@2 唜 *f%kCk)%D0iƣUAtqD![5bt5huLL*vJHpP)k`q,5a!IjfՈD~C˒ ")4 H5D( ^>_ _M;Ȫ]%4Tm!~4(uX u) %Rd(= 2\w"z{FWeu|sYslz{pDñ8*:d@IĂl&cA2aL=l*(C \&6`9rrb +45:2CHeYAϹldY&"#sr> @X7%Ůh*J q'/x5 L@O00vUʍ=qT^TX p"ݷh .V2Ɖw# =*s!4k-ؙա4>X6&1f(qʖAXL$1$Vb+rʖZU *K"UeͺVQbZvFAi uȀ41bKZYK,ۗoTӎA)"(ND b9ט(!6ꢎxX @8UIZH٥"(Tjm6Q3kEZ6c (N+3g$H*!BÉ$!֥LN fpb> $ԉk^ {Jr1Bov J JJ %("/\ Cnz* `i^oy; pGoј *2Eجؙ ՖF*9 s$܏&DBB%wDO{ޛ- .ugK2C©a|q#J J_lel,!yftBq$ 튄g]أh"$'>M!>M SY]M(ex-zXeH.RO-*!pa d:t|zᖥPB@M@PB !5:DD3+UTsu$ Ĩ'FSX9kˡKkKKe˷U1,q㵵f(Qi,C$CJ#%&6-(Z)8 C0C2#% 6I)\35ΐ 8\qXHX S(_ibxX'@8􅦖 R%iV*XNb+BBۊM+HSɩ`*J 4DVūxLr8.HԊb}=U!E`3Oh(N9L`a֬14$$mk\\K$&EAoL i\esm=,$6äZ Jci 0P#(UAqΕ-Z1 H1$ PZ$j/ZO>Ѓ,ncϫ;@ڦ &,)Կ[E\P L,(h:\fKV60O֧֟%O2 >(Re_/@C@Mbva}^J@LA B)B=Lqa+$~#x!<z~QB`͙YL84өQfc D%bXJnei@.Y<VQQ%)TAԉ?5ʉ IzA5"~g0B끐DT>J?)}gl ' >D۩X(%}MYhkvM |!.IdzAw+TY)|%Hbx;rvdiT"hN̉A; UhzbLTw]KWfv@P_!/ߗff\|D QQxS@{y* .깆kp%Vab%_< ";$N1 4(I˫tQMihA7}U-eyf5Q"&͙KQUBC>/ ejqI:vJ`!2y?;#;Y/! dfzHFH!d4uG=v`ɡ &=37xÇFAB3JҼ&+LK)IY0#YrRh@Â#%#+h%)I .F֗vupm4\0.B#bq"G1L-Pq CRH\ZqЄ 17 ؈>ݚ1MMioM( !M)l}J .Ģo $N~9JCLo~GSȱeUT4T^S+hm[;b4rk"4*0* Չ0NBH@C0WBOx02(m]R)$\t >˭ޓj-l:S^P5FJɢ*s2/G̏C>"Ue v4P$;3ĚHJ0)iRe˳55!KtA3&FN`4hV_w4E=@s>M'b__;kx"$O l~Bwf^(R1deMR%[|G\f]Hɶ~cޣ_ vǷmAd`^.g~\'3K>z01>BiL)1B."p2B0VFfM'|%)"A(DP.v95>4׋P6=jt^|GjAJ 0g.G*ѽDb{K5,YieK*X ,00C +J5,e,ԳGωB~Yɾ+⪺c*BCCOӏ6}U1̈|RIJvV=PP%R;.Q8_U5}ypڤ!_C| dQ:n!*r~{~ hzf]Rw,ݏs-.pę2 qxvFJH^w) YELB־c2p[QM~tla79RիCGVU@pZ p[2YRerFJRZ)$@Z˻5q t\.l30`p l1(!ybH 2 *2MNbyDhd ݭ tA S1mI#$&!2Ʉ덭DP"hr wFhgA !%S)n3YB4bTZ(6SH&3pw1LnΚBM[-4iJ^QxCYKךr*) i4CPے**0 ȄC L  ULd& iha@ eR Ycy4:~sr` |4L`?x`f]{Px*ZQ8WLCbdZw"~H>^D]usސCGz~J3is[-4S: tf&YUaCK4bYufBɖZ6 2aj2Ԅ@TU cG?jT*%RH'܀MYba z61wtcPbCgg3Ry UUUU@:O~bNH2Чʏ^ >q =5Vu"iS%1Ql8Fח~x |ANrBv'\~hw_DH ̠eI fMqa&T 0))CmD X]" / )wR>Sȭ212cI;n(HDD*̅30oYi_M`XIP&,y(׻cT"g$0qɢE4An6;lkTDhy@urs` GO!E ?v}UHKdOoi؄>ϕ$ C]$#rϙd3Gk,* !""LV1$I,']9b+i45boi%NT!?RDHRE8,,3%e2hNCl;/ !{O;P7 P Y)R/*!V$ud1so$2);yY ig&jDMb{!\Bz=hm+) v0 <v H$XIchRA?DF-f%jH'%MHj V,Ő"Z!7JFgV+ 3ZWDԠΰ "ʑ*G 1r $jqp?N<~o?+_Cw=O>?qo|p__~_/x3x]?~wo|?[x߫y>wwwkGgx9W;3go3933?ᙟ3?_3?3fg~ggY38gָuyO[?C?7^~-{g~?OGz_;ޏ~_3>=^$J[)k SVJ_oZ|ww]wh&~obٕʣ]34Xg"' -- eLf q%əq*:Paa| 9aIʪ2C@ROκl` jiS&VM5Ħ&8d. 9 @I8dn\o &&ޙ3p=,llyf0kCUJ4 jP:. Z -v\ Vm%UrZRp5zn>yzqNZebÉW4ÊUHT8Ѭ̦n\jVM][ s62w"4xua.rHah&J,YN#L1 *RI2P!MZZ$0' q$:H0m(b 9o'R@TR\uj[fڹi\nrʨr!2)R+Hƶan]3z+m Jjիhr7TơD&k&"I9$IP-UT :2qF2ʪrkU1mjY-kp5J T8P6 * Uʔ 2cdqZp(Hk*\\-k*ʮpԥri.<պKTkj"%[XL -=!֟/c@m_<y1%7^J}J*p1(u4I/[`ԵY0$J\(-2)H8`f7S2Z-d)) ~׫|я''W}[%@vѫLBҢyA (y5A.L/.,ߎYҖBs"KMkuIHY]wUA.}2 l"[1KR |d8mFJl^}AAi%(i 4MD2crj? O-8at,* "! YHg$BDCOȀkߧY'Ӭ6"}E͜xL|:=.8֢4w- wR %JF[-vcvfFU҅lmkknn~UNKn|X ޢ{}Dh<G2wYxtB~64EN [WLܚb͍YK)ӴH@qU8A{6UteL Db:hF ZE@v T9BQ{XvvaekD&caq ό"<նhos0f[)`#^׮Dβ;H< Ө[Jh=Ʀw\{Z,InBS>ą)HTh\G![lOD"K@GAR"`CM!B FU1NJV+MSӖnlBהNk5 AJ|Tc[f45RdBLuα!+ _ֲ$L32$x`x1 ai;MsHB ]i? XѴXw%wq!OІ rK 0sd3DF$L$c"]\z{yo KD~iL J&0)I!EXJi({G8.R;1c6ZEͨ):,[W0iJ-~S`M8jQ4f.0 kp~&ᱱ#loz~~1CJ{ drBL8<>; ͤ>.t7% r y_JĆ&ǚUegj pFc]&.1$C$sFd"V2{;yB<bafn<:` R IiJ_]45e$=#YX٦ZBQ=k_֏|D&d}U-gYNa~ǁ \$~tS2 !͗˖`ySX)E5v֕c/;nR*>u)5%DEph XUMT0VXkmZ- P]{N޷zkڶtӹ2hXE h"ZLA%CjA85 l- 3 ㏩ )!6I QeFDHe F# yI `Q34 B2!ۮ]iun-hIk*(JeJmm&5>4oLm`UL7gNQȽѪI%Ykˌ&=DA^ptl)+͍ɡuJ҉h \2r$i sG٥66$3JTa5JѢb@0" ۼ֓M֦-)` Rk#i5AUNY4&n*>Ā* *e(ڞrՉ?"q?^# |aU ~CYƘLM$Vzô !4RFPևo- aVAC&KLdx೭"F)LgcGGn<)Z> ܷ7`;i],(y@DܔYW 'rQ92maΆ*"sX$w[I8y%8ժ[e 1$t@L %"T,C}}N7 M%h=dڄ&,B2R~C_z}_2T @?@DZZ)?.?KtC I5b Y)}r (B RG6l R jI4I& mBK")sj[|d>JQH@HDϨk~7܌"x>u%")TFU3)-KgWv(?-UVZ^w:]קK^NG]W.kx]K[YeK.뻦*r`R%.C&"f"bй.sżx[ӷv܋zmʦJIlVD4MBWe:y.I$I%ue[ǔr/f馯R]7OWS˵,uש]@C9k'R'l(4dDDBnA<6Y dj%)HY!A0 1b$rQ"Df%-paCYA$O~2\LlLM<$aisqՂPC$aIh^t6] +wh@hv ZC JQ3VIՙ-Z,#/A׸=~P_{ l@,mݤٖ = 6"ۃ` }qp S~x52w -cMڏ}V8%E Jp&DKI@ nچI@љjFFQi>a^ !@DYVPJBKBJ @ipB8D1cL> x'Trq0_}3ǯ_7O$w-!&,&M2$6hՄ0-4:T^ۧg =<ㄡ4X0@2"2JP(QKF2)NScy^8eʞk4ѪOƯl6IIԲfYL$i(flvZFs(Pz)+%NJRZ4)X&(Z+:S#K8Dq#P['Y!s_0_2#Z$cA'$/]z[x !Yqk Qa eٔ[{&n}a"HW_LqtK_+BKڂ!nE5?kԙ,_5U9(IH!Q U'N6 qM؅!+DP d-D"(T QA =5g>(A "$MhS@>O-JAlL+䊐J~}Jf*-4`@Q0"XJdҮ% _W]ׁ<9wJ§*>[V^JToi4~Ӈ_I4n} lRz(]?E*L;$i,õC+*Յ,,5n"QrIkVZ*+V TN "MB2F]́2P sU M1@I@mV_vƃq&$z# #!%7Q*==g%r~z {3ÒX#]@ܱ!`S}XlG8z6d Q!4Q) %*Cm_dD C@R!2&#X%HpY"D@yվ>6}W$~F~|oGozn[1am+,5?{v:TjWBR`:3P C1(B` /h~9Cx@uQ8<)!-i0HiXa@~Lġ@ʄhBp.'4BjKEj  uI$&pfKPĆ(i54Q1m-4jm(tD@ GySyL a* RY%&k6K2Ǝ\ OQx鉴1@'#pwb)? BAųA“)D@FiQW4m>4EYhd3oi H$15<*9q5.7`I-ȊpM$3[Zcv5J$XEAMC+y A*bHNBjekDÜ97&gLH=4Ixn6&섇h^v@hx|&fu7⁩-q 0=Z HAt!b(L١"G۴t<#p#T,yts|qNn}G4>eTZm,fYmeQe&,̖f4*u &#[V-Wj3e"-#E_VREjeĈ(9X4cmz"VmmUEn4fՄɽRk|YN!MA%`WߍnZ9gH`(,*t (+$k1@k_ rϽ+ .kS RO|(6S:@|COly.ᛷ_kﳮn U\)$y^SիݏZꆲe]p, fqxu|4ٷG"_a]e29;xw78}z}m3t`mnpg>=i;x{ޏݽFZny q;6w e!|wu {=7b}viٓκh4k}WjgYP:@@:P*gCҊMQYPJ*)& :wVk U*JQۻ!D)րZL,tso^plݯ{ٮLh;%<7w.sE,ni*:RYч.JƛwZ.ǜ|H)0IGs6Pk{{zw͠j `"m xlPU#M`t1"]V5Jai6 I׏o[( =o`jyמ/KU@j )R0Q0Xf KVˆ;_T{h6 ]JJRfh4t` *ޱѡ)+:C]*@%ZB{WhPZ4+lO*m{npsvw]3wv9ɥpz:>5mVԗ_vNER]vwՑٚp-Wn]{麟6]o}UHh}_G]T]xԅ:լ"շɶ4jWv] =\Fs׽uPTwٷnԖ`uqmAAJhTU M:u)TtvmX\P ov@=ղ<2}s(WDsmTʾ4]4.Em`wmB҈Mj^c8W(j;_Q>;}u>&Thmt뻚_ZiZf6g /6ֳ4usG]jeIly_v7}U8ϼ V}vyƚ%FkwnTewө+{h=!Pm*{6-wu(QvlIU4ʭrh|Ս ;79֝w\ni!CNܥ%zRŬ<>ϫ} T@$=Ǹ$XVҳ${5>>=Jh}^iۯw.;Ԏu{N^E=WZ,ڢ !)M0q"6_}S((%4@@ @4hɤ#A5 =LA`$! LMMF&M&h15=@$@$JHb#i'=42~oS5CƣA51 @zC4&@44j=OTI2 OĚz?T4A#h=F@h4@$ @4LI)?SQ$!44h i&FLIMF#Ij{Qԟ@h\T)c(\"It\]x?U8C @[m`e}QPyAG($™kkJX>ʙAc"a [^mC$ ."@=A7˨.&* ~D"aR!Y@o۬?fZ172W %jjzauj.L*̎V]JDŽ7SF=k7r^浭V  $p@N@Nrvsmy3u|ڔӘ,-SF_5w9\lcْ,jcѶ)51̏u*\^Yy2* rOBh `]/u3+/9UwCOu:+*̎FVk HT ) @J[Jmjԥ$)TQb(T"hQH1`eUy,bMYTE@cqO0?ײ2C İ4$@ @ )*40*؀=tuҸ +@&DCa!1E1RS 'P!ϑ?+cG{>=syyzJ?v8ws2: 3I?P?t5JHȹ g I&& HG# 15:1FJs{wUFzc;]#Xv1T'W iRv0]ui,(TR57V͎MHR?EHdxC*tG1ɳisi#{^*:# E}hĕ#^Lٰ<ʏEUJ<_CZc\S|m';v+خSpهjFiRiSu|c͍r|MJ譟 nTn6#v$9++3vҩM9)JLURUU _<iF0T)[*bU0[-$WZȌbMJUTҪJ+V#Va]8َ eM1Scד8LnѺ0{T}J#τb='OBJc4gCD-* 1PC0UTRRW Ni*[lʕ*JR+JK%RRIJJ)E*!E% JRTMUR+ V4(ԸhV lUXpO-Zq[3J'B0A 4$+]&P~Qlkv>B~UHUJO+p v**F*AUITUI0I]u].IV) UBW}Y-J̖Hb`)&Gۯ_qǡp2&2,;՟>p1X0:‡<D˕wn4AX/:X,!s^PJ=btg"cHnc 5 liMHePZ Nm [ y7݀üjDKj &m)JNÖd.jcWy)Șrow6PPTAO']!1z;ڍw/pwbv6%TrbTI\Np] 8c'D}&#tQ\(dj !$Xld?Y:=x/s]=^|{E5_EUUꭟ}8oJ91*i"B@UDYpW+bmw4 jСP$6ic-HQX5LӪmusǎ9֊)fkGg(y}l'ۻvI 7ޏuMGnE%m,iLj2戙XӺcZ%rg >gQ6g׶[{,ʙ4M8N% TBVV6l"j9wY2 Dr;9_%zsb}]뗏dZmr_/1ڻFTKɷc_$( "6641DD1-t@J:iNq2{Yo};e~J4ySw'mieQZ\5\t6^]wD%55Et_uwwNq9G[ЍJH{#6|7o痽^ڽUzƈŘ(L@ĩd^hvL()-ƁG*Yq'7~כםnicb"D70jMOPc˙{^QIIё߫;!x?|+-4m{9(2CJpN{I󯊇6S*{ɻqV[3N8҅檤MV[; ԉN[sN‡G7̤>n0i,hҶE6 DC9G07̪ x勲 $茑21vS@kvCD+7ɕw9U V뮪Iy$RZ67! 4$a][fYgZ٩ns|=U^(UyuAV_nq6r]!Bm({ѪT++[+A쐢, Lb^8w~.HHB\fqz|ܜ2BMЪY3sN *'#DQ*]U%t ש*8߱''.QGC*w>:Vm( K,>q4Rvuf]W7RTF^2!DI'M[EV2F(<ReIMq%$:Fck|LYzg}B_Cg**d?'3:Mpۯ}ulO SZ"Ä|PG'p/{(.kMtjmox픇uAA]mN8ϣFA0()<:?mևĕ3#jݔf!@_qCuȝ8eKq`&!($ʘw\㝈/ 4|>i W1wL>a x|O*Yc<wI."e-B&K']&a U)w{Kx4TxӣcIz3p@u0 q˗-F9'g{#ܮ7gr;<L*niI@QCx~Omֆ4:m6cz+˕f_E񻫨%R&eL,/SmPrc` } 7xkF*VH|CC@к.spX( %(!cy&1S{tBA{IKf@ւs.~Sgj z7W·}{j9ʥM>5/j+M#eEe!1oJW.f( QWI:e4sW4J@_)|[51N.q~B֪&qVʚzI,wKs \S.:G_VS(&,$ɓd4A#}7t S[jsưf e"Mҧ縅v:(J;3MFAᡇ@iBd/J%'2H?{t( 026ida .b1f[CK_wƐ`Ea QOf 31a"y{,ӄydѴW;.}]R_dMaHtA%&ML#d;hy7m现GcA0ꞽ0w>y6".̘ɑA‡?Av,{FϭdHm@*Xح%mBJPm,x 1]!LnGt / II2'L폌q[HsMش IblbbiyAW+I(p4DjA,XT*TՃ̑quɃKҷVvPO%aE7Xq aR2HrKcclI@m)B-vAW͝۲w3F$FڝJٔPѹ.QH2r O2to<ۦ?|G @ Кb+H096j]'0NBbPYWP~>}8*/$%Ԗnyوxyn*4q- B3 Aܠ7Ѧ[NlPi& wSԇs$캣잿~f$p# F!)Qb T06e7Ha<lef1nY0Shl*\ %2mVȜMhfhO[Yڴ,e+$?BRr|~px) /NSN?ؽ$eM-H4FfvzpxBjRvn}f/t.#9Y'>A񜓙1 r:kl#$v}u*P%Y}?Q&k_eQeoe6f!mOO"95NKz+moEVhH-1!NGnQvxuww傝eM?I{N2{lkCk疳h-1[IjLq%cǴ0-lvW`z$j`] ZV,P=j LJ*VL7PC*s`(v-[Wl}fRtˣsxD&Na'N6HI :b_7ueS |ybmX<𡯗r.t_@Cke|I=/?]f҇4°J՚Pb \Bd,83iYQJ%^Yi Hv|(͓`zJ+Kx2=p=aHǷ[GadzQUQ\B6FBJ(zpl7O'dbq,#v dIiBz2 ]Mfҵѣ{,P}F1  WIYJ;V Z>T^40g8{GĨ5i.V`|$J{5q KGlӡ^?V1Ç)6PT;Ha#ॿAw?‡`ώQ~n4ϐ 3>Y?[58aC @G[7?\h/3LSW:HD{_Ttka.:=29&UZuhёUYdd4r^[W;ߚ9pߗ痧 ?;ߑ(qL^镕x/w~o̻jmQf rMht˞JNLW#yx  g ȩサb3o,=G_ֺ_:{NY:{vVce&fC5i5JV&A!0X࿕x9).GCz9y$tIU))JD4cw66pvv͛vcJJ))RWcr9TF LI1:;twP0$bhɊLJa=f&؍܃q oFRs*p}X) $qCr$rA*G[3hڭCPTkV/٠'.cF: # |%?F\"ߥ4ԩ^qVERUW%$U%X|SEvBL?2 @<$&L %$wboTC2k9& pM۲%KuitFyʡ.c;-R"o]MRt<[st}X29 ̋cEcmc~RkW]DȕIv%2e/*Uw&#;3A WC"!(u=3?zzQ:(eBr'Í5tsx0 vUk,(u+%]* ( u_h`]׫F66^oزZ+FؚJcFl/,mU r5e{,,ksg[q)]ߖWh^طdm:SyM@tC7ͨRoRE')6cɡQ*SoAnj%4F@~nhVHQ;b= I3lCud}c-o<9On;gc Y7HݑNhn37sU rq nw'{-ЦCI?}>F&%X\$0)Tɉ筧`!Xʘv D$T_aIlQ"1@#k;h dv%F&"(*T, G0R%dFc",~,lDU ]*:hKŤ4m]# +zݡ\|oay LJUR 7̆BTRE2e44՚lZܘ4AD' a0!I p"b^HJI0Or{Cğ*sx>g_;=#nThg1eqEo*?+S͇OO^!"==Ff FLo 軳 L;zu(/j y!VSR/=ڸC'"~T+1X@#nɾ3 s&ޝ(?\8AA.)E*pPY}x]pH#xɜDCݳDpّΝ*YSD6f[;w8$=+yb|=CUِ:?}۳&Y88QLֻWޏmϐķR[yx,G2S93S/j>KӴ2&q/҆33GB^$2ršHaٮvvCv=CStjz]/A×?ˊi^ٗ}a}ǐO%/|}z@vDuI=s$ Dwz'D+M<s=Iy<[yd[WH,S.ô !o P(|"A.in5> *,#aܢE׏0kexK_n" X dzov7fڒl݊HVg='Mٙ1Ev# 52*Iak0Y3$âv0ƣhatwzCܨZhR&tAF;=:HgאяťÁL41a'~C{\J%B$L}L,#-U͜}OY@വ(DZkJ|{ߖѡ%hy,#[Ó6O Aa唠aoa3gR7_{??.]}~&=Ct$~OGm/!߄`6OjkhGNr>[ϟ|y?]=Č|ϰ7)1s<_q B ߔq,r$b@p~%GT4?t&`s#DiP6>Lf17ubs~ZZy<=}slޏ-̛o<lof͒!1O)?h(Ջu6׸Rȏ=k''3L;Ic^D¥[_˵6MLI~TLD|)+%כݠ)>Xowź?Y55~~$J2[?(֞;b*'.n$~Wpo7|_b!_FIQ[\5Z.64Ҽ] HWńvIN$6Ja]60'0F->[8)@z^yއs7LVuK kamSk;ĬSK#5#c~OG}Z~EV'5~UR45K#cbp]ejGϊ$0W<1 P~YMJf@b)J̺PfN`2;zLo¥!3:iε6m5xʾi,AjŲ[rIQ Mr1hDߡzH1K3?`Y+Sڽ^jxD9E6-:yLM$ݷMVZ؍QHl_q4քKGY]ۮH?tٶ_e 9uti ADP H Ay PiB:m9 FS@uG *0/G^!{h|Ƶ+#Ra.CzjfR~Zk$ z9ELٸz [CIz각Aٔm׫by*cV޻0*VPUN#c94Pe%XnŤLvzp1 +uB aU\/%|Jr&)W2 ~mHQ khv!REi6Ex$M8(iv &vsg%lY"yTjō{^ռS#ZmBRÐ(PoxZsŧуd6%b$5)KQbjEEF!E2mM.#!FR2V J PۊPde5*?\1Y@R44"Z:H  4G$iZV C"J?P4Dx)roDžDIQ*B3hP٢%2C>n]u߭w4; w2괉(aсhѩ2YD&mm`7>v&"RM&`a$th-\,JZ)%")06͛*J>}FHj $0gr%ڣpThPꍪ eP&QbJ؉cJI:/RX+yhII%(PԪb&a8%'nlc6ޱVޕTZTZ%FLtS;0,b@c  "}G3 ("!F&&&I9{>':=w}!#"؁y)7v8ϡVW&سNHVfPːj!kWN'a8ucooz> 6$Pb5szv˨ #  ͎AK|0^+$ZZ}cUǯsۃAa7bXn"RXăTSdr71ЪKz6<*0H66q3'}[uU03;175ژSJ4.A6DâC~L2W̏V>'_3F1y*:Q.zzaClz]kWz[)s':ww{E.^.>v(oiS8-Cuz̓֩4zç4>=5??Gm0vBMi1.XA+#÷yWfL[FL}"/ԥM)ӭo.2?+>`;3wͻ:^mۣtS@A]J̓{ЃJAPZ$j*II:pW"w<ʻw^N 1np8y5RM6 $F/N|e/!ǥw3մݶG<㐺a` <÷٦~8|p~#Aw2ىǘa'cգ$ 2z =2=Q/lR/'e)BM_1>Ǡy|۴Onl%seE\m3Ybe~ymk4}1BWi&J{mѥez .KvNj29! d:F5 TD3"iǑѭ*K~{۫fx}_a޹*Qi-M+]cOYQ|֬ձ2с^b731FUy `si)*DT];̭9c\݄=tӫw^8=]*f`77v{կG>.k:?n~x󃺖!iM#tj)jDv総QBW4ⴭβu$܈t,]%OݻM1m`:CVCs$+ĎG}:\k oə?h#"#1&g1͎F}W K)LM1LB@t.0y>i5'u B_Ƿ4%cශdDY:4j4&f*!ejQAH9&{ L/z|j%y.!Jz36DM;g-Rڝ>(|&'qpp dz#gQ "3|^m2=#%<~s~cv;ñܦ{9 A@^C!7C{0#ѽ3_PshJmf&H3r.8+ ܺk)Ž޲O4wXLf7ƱAҮ=!4;z'u^Wŏy %*ij֏-4=SvSW|y06twl힕7lmXUSO7\ ѳfb6'cፎNm4cƕfzO|ӎ\f%TUbf14bUaiZJgWzo4) gί|x8b&Sdylm+M;UMU1cM7uW4V}| h4cr9:8 "EÐM%Vʳ8p`}v7Y“ؿGߏa9RA=чROfw7dEF;oLRGfTAl))?SaiQZܝr寋GcCLH((/Qw?m?۰OER A餩x72qÇ'躍 Qƒ?imHz,݁z46~2kpD߹:.mU"lcX.ך ǺBTi%T1$b-FKdҒ>pHI#!Q_q{ݖ9T::(fbg .r8>a&H\E wf~f`H32a" (fT*AAgF^w: 8 Y^f*+"ԮC,)i#c@.S2oLܢ :(2C5Tͺ.mGVEVu6f(LP:*&G~ucQ ܇Aa̾,ZNwaw6ln4f4;^R]+f`zA"d4VYˏ}?e A!0H˫MUJP9DF!l`j PuT6m(3kz=QBj1y|&+sV,uuLzL,Յȟ,"Rs~@aJdNDuS }w%6O[vѽ~''t11M$KE[mvf.^`v :徍6둮emT~qYv!1?GG;C/:[}H˗0>>?9!qh9)z>c01ؘ`/үor~suq@KdL~.Ё,nvۿ݀_eE᜻ʲLaݕwNO (RFO z2"t~ ^s!M)O͝s:S6mCF߽k*r{x;_O"_PjK#߆,TwG[,y>oY :K^P&<A6Ibf{ti?%[2LmQ u!!5F,C1QV|{ ?G]SzQ2+lLM )^ܜ=)چ٥$oa-p3LqbTQul}YHlM`հqs~f bzmS)tS]|tFY}O^3:N~ wilGE j`&Jme"Mꬥ?k#aDEY/+YBā,zj_j~[m?7 gǛkIPFPNn0l+9;av2E\OU kٟzWwЈ翦D)ɺ&#|f#!"AjHM1,`#b [IMØN~FGsa]iG):3tg=>=6{xq>Dt us~$~3jw\\1x CH@wwfI99Ic4lQ7u*SK5UUUUUUUUUUP*+2G%5+,SQ"IP(̫3%#Ǒ,~ $φuuMyV~>?y9C pcvrxWmp0}G%" AfFsTOGVeuv \GY#3{#(|Ac02?HA Ǹ+Ws{4UW4ǝHx>W_xx@=tyPr(Th͞&fyȘ}{i P7PSyI$1)0PDiyML _̀`eИ"~ z1@+`=}E0EG;}_ɏQw/.Vos~W>6urWHF[g'{:&pjjr7*\H\*p$Ty,!5(9{Iy#фVg!+3| H9 <)i[}~9pyڣI# tuW2X&!Ćow,N\!5MH *hJ?96mi@{"ӡ GFv gy("˚=A"pm6\q ’H9!Rf雇$|jnB4~MO{ lc#HA4Uý|8vt*)QEw~QE縁 Ni0fdQqяgW)ZDxKVu%IU3_.jvn^q5]} r󱎊⪴#tX>~԰Phj{E!`#A  ȑ"Tc@c0?نe"C`-F.e 왓 9N2HPQ#o־Jk+OᙣF]lI[–7Oids3MؙRʷZNh$߾eI-j4~DڔD} kjAL)a!>XIΣICt-/ |uiB m /'lzN"Ov?˾*}t'f<#T*:TDLt7Ibq%цÎ t˒8eǛ߭D{AkR=.\ds!n8O~$| fy!٩;O",Nf;,*s ፍpBM"b;pݣnm=9Hte>gjϭSB;fȪ#,?C<S#Ō '9g FAE!Hc=Gx>CvY222222282@#########ׯ^z9;NLyRmKK)iiiϙ8{ʟy< :^xwv,y&iS]W|t {D9>2EYI$fz{Guu{fj3fi6jB,l6i1JldEGᅤ#p[CJWf& `b) 7lkoM>((Ұjm3|"r=&>0v<QfqX='"]Gc.nv?C#CblMp8l0͔l1fJuSg 8}ՎIl9uou<`6'\i $X̀@h|#u?"*'U: $WRݦuv=ey4fpXZ^0ZX)?6j7[G+^FqKfjOvlw[lrrbTB}<+i| Nn1 0Ϡ>s~>>4=M 8#`G򲔤@9rJ8̏<ӭ$~C*c hCnO>G 1 ^-#+ _mCBnʸ\Stv̼ܿic'؁=t ]O(q|UH< 2ibWP.PHT穸0hH:Ly迾HsfvsoM@¬$9:m*?fk>`Sd(:AXbǐ\$RTb;qXrp7(/>Vi*0V$p A1I&HIl5FY5F$bX-{`||ܦ>NB}oM[Y? =<_S\Llv Ǭjq.| H0=%|m rTEoE~'a۸8l6ia,BM4dT/^Ħ ߕNT#šY{b|v׼bo0L2)?Q{}[>?O"/D0Jb!S\Gۻt7<a_D~O+vH3G{@u GN2??j]X+QLZ}KL1e7 SBMh ԇrxO`⎽$h"o8n$@j=EUQUH.QUTUACC!W2yI7H >LLH'<] w5BYPd<,e 1iEX:YAjPuT,e\4 D/~WxxL\C\ᤞ!4P-T)21cCCF .NUUWET5!Ė(d߻Qlf΋caB5EQmdŚ23xܒ;x""v#tNm8;g} ʪ"#Z<(Ħ1sZ4l2me M۷,L7~/:#sJ3<~#X{u7r] ޵:3o}vnCtPZkX[ViXx<l>ٚKd-B|x>pTTTxs1z:^='͈0cV2 cGE#*[PpN""' ݴ*HhA/0UP@@Z0ET "pePr1q!ЬvmϮ#I$IMP D6UoQV6oX-=zxyo 5O~iB6+Kn\AY ɾֱ0,67. g(k|^/E˴KAw!+4/FVrCz4WOه9:tn;DN_1NDXĸ2v,0*эPk4لlcb.׊r8a=,T9y2L0}"j͕7s3M&_ac&=GxGjci74ƢUarRkj;6ȎX#|% bql 1+F-EUK4ynU ꩉ*Cv Bg̣GH_˩dx0`AȎTpv)N(x=M-9~ZE\ÜEGicw6mJ Xh&&Yc'~)ن=k3NZV^ *3R~BD籬bNY9X^l [~+ eޛl#sLxG]WQE$$$$$$%Qq` K;cy~@HD'wt3_@sZ-I7@obΊ8v<5fIuc,arLHƐG$g05:>wK2İa5ծK'Cg>^$뎿)h1ךm6UzݝZFdxWLٵ%V :" `s!ݓbO{HU(ug]s,.Ei[lD1G$wG!L1 M)tbf ;0ERyT\"2l:~f`;^9K:5&V5 F a 2HnN\ Ye?GSE!lV; Rh?](/sW4kW(6 `4VIB-zP$c`A!Gi,ȸXL`O\يfn1MFch @߾ϔnj厣NpCD%|s w GxdSyo8n~h=KKގ/t} 2+$^Gabi4-T~/mMY.)"b]tk3_!Lb3'm Ɩ 1!UTx3K 0:9BD onHw&^|zo!]q.vl2mlxaQ J,'~L햨Qg3Mʫ1Ijƌ͸ lH;vaf(k2 riQ׺χ۲q>9LBRd̤4ғ1![[9u #[r] VY04/r͉;X4,vkt1/rF.b*dT҃tk㶼7ly`s0,0 噋emRF"E|9Uh*W$J#F5+O٫4ـ $uS2ô1`tÝk}>l&bpMQOn͜\mЍGJaѕ3UԂF TbIduBTa'IȗGLБ#d$lV;(` (9j8ؙLz8g?:^k _;^/Cl.Pm?i=uavj(k3l{iQ8n P($ihh 'bϤ\yde54) 6oK[G\gc*m>T1F ss˥F;i:<^ϥ6αd ))v~[N@N[E!Ip%Y+F'}ެMw?K)l6ze.t9ɍ$E!J :]qw`NリM7`Kݼ(s~k0ru NP:OذEy}LE7u/U6iy1fypE? ԰xNZj&]hK#+p-r lMpg.N($Η,/2I`4'= <E_Z[^trbJz5)ԹkإaWaǔttýk`1gT`>@k֏f݆Do*dC~2W3&')$Җ )ϮS^PvNt/HE[<4[f![_O+RŃͼd0Q;1 7}3!6jm$#]#QZ 囌X[3X>JC!7-%^,3>>{r*87.Yvo<e/Ԕۆ/ R%,489@U3M$G؛`rh T\8O4ƽC̾{g&.D 5d^'8z__W(qX9'o)Z/3'6{wi]4,wz?8~! +S 65=_ߢtKt]ጔG@tث< Mrk*X¬8!Ff.d7FcK] P@0%^n<7ͺɳh33gtԖ ")pMم!רnv137Ч k҈|))'$&Rş6= ڸm &H N=w{Vא ,ٮ?pu3Q97fRT0NzC)ھ\kWPh2T,dT|!˾P FͶ'IUSUM$I%VXc[¬Cƍ\ 5b1! +-əpnCSO^-'v$ C,#_=+ow70!{hSn~*yqﬨz-<JəKsE_TRU]t fbF4$t@c"L }Y/ח#Mb*G|~*FKbiX : Mgưn}]崖s |.pKv;qW{48̺9`kʣ^M7ϪfN^)3B31TWOn=1 0&*@3Yv`W-dc|JUsjQ7X̧I]g{L ֕,C儉o'$z %je|bue~ގSusnuO# DaD݃L#'?H !-$#&-13!psπK.-Cⶳ}i A%>q ('Cl١ R5ZJqB0qσ?1F)UUUUUUUUUUUV1;x;x_].&c39f7Lv20լ0;5nU3ED<|0ə fKqAwI3$W[{i7qv 2ebo/H3GTSoBLi8QR!d$L|- #42c=#En󌝭Sj(LyǜÒ1m,Vz"GlBL`Η @6cA>—*_u[TR9i&p1~l /<-9% o#i>*~iG2m]s حc sӶ7mŰ$S2l}:Gh,x034Mv ф7kG-.lƠB&4>?s8|߉qf[;)FV 5+nneiNVho- nVFJ (r<\b۫N n)- #߰xa̘/C 7 wL1A: pFlʻi _yr2(XHi8Ɍ \ku-VnnN>:ӟ4IS*M5tGlU4eFi3DRa0 = : gaE76 vR {uZ}cBH+]}}myE+G͟'GBc/^Ѝuu6Ď&XftXD(nof0b`daMs&l嵷?&QG좏WE%C֥QGIjQ^HTw6scnTr`gfPCde&l,IuҒ Hp:IFȢs6Xpb.ഃF8nWgFMm+)10`Я`V]DSM,2 Հ8]EuֳYjVP_ J(bkz]_,k3X " *SuL4|<F=\z4x&ٰ/[{Ul W*+o]v\DwI} kcqtc>z!v(IA-9#2F^LA]"͛[@g@v M͙fVmp&^6a',"Yv& 4^ b{3ޏMyՔ_痯1 t냷_@w%%Ԧr<3oav a Mґz"Ewm)Fr7$$e+tK>2l\G#}@a@ P8?4\7 piVT-x5,DhX RaLq [Q60n&&jc/Woo\Vk**r~/r[HKak` <@CY67Cki䭺*\Y=ౝRaL:# ;v t}]*1wLJt1jjovnN@Jp0 }OP'~&VmblOzi׮VES24-+瞺‡m5pn{ys#RO'Hވz{v*`<2)ٙ ~#.T̎Z&IvxeS4oEn6uE4w^QB^52BGb1ˮ"p"S-2&3ؿA+^K?M=(2l? #tbsu XH' 1\y?/C^\ { s߾}@ dɾuf<;0a1FA 8}*c(p@VSy ˾_O^dzȅrw.UT֮6K֯&O铗L2ddɓ&Gu&N]2d˧.= .k~uv}4o=:UJ$COvg\#u݉&ssѺeFg;Þ߄j Z2Cb@.3X.%ZK) <31f6ӳ*7{hb%3x9_q|T6fue|e?ٺ˜xb1G޽1&m"Hs]@m˲8( O߃L a?'FE[6r_F:ȝ-'O|)edRKzN{U~IfK׵"?"cx!`xsjv߹l/C4%6d̓IWzs-lڄ|j|9 P셟ݯ$F\^Ut[(wXGo,YJ~GF$ao ZC9{":Zj?F7yW)gL9"udɛ7oRI;Ɛ۔ϊO~K:*f ] KeF<8w'Bٟ?)XkDfHc#A& rj DǨ?/ofo_ Y畕y3~yICA|z=34'YxS㠒BM3:fgx# -+gU-< c Q:Lkl\`V [b67F{W0W~͋8[\΍VAKV ȴ {!ʙ% W=_gZ;4޳Wge-R^9}ٔE|˰m3|^J%UJ9֩| ,)9LNឳe| C&,MgW+x*470:e<|v7қ8w1+Ts-*vLjg }= 7Z9#HӍ{Q5_8i[N[lIѓAf2y~h^J[ܡ[t"e^3eך,Uw0FyWx֘X^(m!WW^YiyJ%ʡ[1ʳy/ [X@7@ҝ(@BtG< I A})k(- Jrz%Q9&zYˣn:C6xD9(LJ&WDzY&:WK`W k-5)&7‘wPs9C.Z|90wU2`J e/b;&A0ФN(C4d|}1|+ey<ӸDvo237ם:g5] i"io xJJ भ40iQ{w{tձtiYrkRG'ΩT(MRWfL}6RM!_6F y#F&awdF-I3+(ۅi~wb 87}ymwujP{L4֝=ρʌr/&$>U=I;դ$Y\ NUL!vGUZn(݌ƨlmVPʤڍ}u!">ӰXƺpKkH88 Sau%\6FV}k5A3\ف `'کESњ*Q)+t('~w(42\GW7 wU.:5>< ]1Ifƙ,k `Ik;7Ku/Yuވo EK$!K0 2r8zYNkVSZktErɆl9c+`Ng'pֱxc*!WCLid!Ij{폥L僝eaMlHLVٰ/wl4Lu<圏 a!U$_iO96oIt:<~-@ ogvPtot<;ӟC#@. ʭ4B Fo\33ft8fRBR7wˁ\H),!- p{1'rL<b{2#RbҀn)Dbeaچ)I#%N/ZT蛽^9;MaQS1M0/}^]ow{kZN{9/k-J}~D/̞GS >g9g ?t4V&CN ɈQO{߹EU^uzNo|G7uL`Ͻi<ʖnb^_aE?Zfm}ۣ>>?mm{xO/~/^%:VP/JHOѶ@~hh(I#AغAO@!EU"$)bU$C,"jUHET*\WMݔTt~ OW!P9hv\(J lH9:y냝qvKۄƜ?}pn? X*1Ē%_ B!0ϯoe??ݛ;Oq~3Ēa؝A<û|0 |Q }!}4;!˗yk_ۇXΎq:`MU?G?־G?GqVYp31G5QHt;Hu~4 T!YV 'Z7H)C +(nTgOL{?4ah#O*f$!>{(e Ytu;IkՋCoP7Ѳ% f͒p0g{4ٝxK`9PrCim!]NZPű(օ0wȋ3,\~Nƍ!d=NΫ`feoz VSZd<[X{-߽_8kUí˜: r*,֝'D) iĠ.J8j 8!Wߎ ٿ(O7Mt!˭cKc2UjEAL9ux$79w8Dqq~ kGg^uq:d"̣O7;*'s=+/I+a>|Ϥ HFӮǗ-Lc"F=MhR$eC0TC>1Ћd'$LeZD#; QЀEc 0yFiyU94}sحX2ks*_bmG%QZC7%x&9p1q@ ᦚ3FڱfaCr^0kG}n02`D6Y 0{ QP#6J ñPJE5Pi3tR 5h5f7*kWIP$pmCEdJ%[bӹZ"ߔ?tY$G G6rx: }\5a1fap̑;МA^\Nlz$+ULͭޚ[ҙЗ>狷D}{ж#-!p*D0w=& YXƽ?['FHt' Wii3ïK*RIGgu ɞ'(CKL?G:& fQ1`ċ & G+N9Qb43.!Lo vm}I))$J]JJU }STV+e:ңl+$iPLT1S bTJʰɌCUZQE^n7؍XIXA(!yJ xO⍁lI3l?' 9 `X‘k؇/jcYs.䋘R\֎o oTf^GfY&ĿJ~/37;dd]53.syJ nPh:IJ8љv|ZSa@4~_ ;;1:}餐$7c0 ;yEС% ({,CPsپεI(wNI@IZiɪ6F58h^8aK:ac_0V<< &Hfc%f\dИ'f"_7@YͲKB]Z~?UFeDzk1@=BI s1ݤzIe&Yo$h}}OXCw7d'TNp/~WOncnӓb?P!(To\s,,Ab PXD#"f&ARhaafΊ:(Y (e :;,F7$:1XӅnisiͦ#*\rv?Ԅ~7y0*PEZ;06n|uC!GO}A0M㕉:%YKG^# ?DX L3oI]STM/93L7zl;1UTQݙjnEl5]MLo5xE ɲR<rih /[}ÓLܓ_폢`>{!4< e;`nmr}G'=drC?Ȕ#3X2A"EK$"qB˗$"˒*3ks^`0XSy.\r˞l`b !LLLLLLOqcaDFkC~u\G;/?{QG[oؿ_m{>!.kz:iWkkQUDV5m, "HbfF5DLaY&d6<ӓG3IN?;?^:|&Ͱ n;xdG+>Y(fPyb"Pӻ?0U0% 8MKwKC p"a&NlG닀Z 4:D0*Ӥ̀R)܆=] incnURρ+^&vAi>8u~w<r[taD~?BSTIĸc)wmnݍ$Mz ؒ?Bu~?Ji,oC(͸\rSExB+W-qCRlmr)lakn[HiU)DHz &knpm/=K4L^KLēDs&i*oa |ُ)"VnaW;aH@$"Hf^xG=tYeq+(ٌmP~GJ r( W!S~L0P323#)?%L:4p1-m}:O~/$M_dyQtL_PH׶V)ߖYI޵oT^}67!?Cug#Vhҹ˔V4VuGьt21( XZvՒcCfţlc𥉉tcM[03?GtE쵛q**GBYWP,ц2~`wg\4QL\bX+&꿝Xn0f0&B z&ޓ'yV{XfƧTy>KA)1bBf<%=81쁙Dw1+t8 bvUy8~V>9ˆ?7.rgZCto7awN]^oX}1)Loƚ$!)|^~_$<0wIrI|n8xu٠\|>/>VuW:(vH-pPDL:fBnPdѽFϳ}jZrf5vudCL T" F^')(ҩ>6lGб9xS۶1aHGE)hE4ٞl_r`kFtϦĆ{ {u@-nim3c=2&G7dSf uq|j Vdgw޸zˁٌqzxV8wKVv^ί6j$)*Hbȥ(=^ׯn\|xZ~febFM[Hp<%z5v^x5ōwJ|b֥#/7XĿgRomqjrG/M'3EEҩ3.{b77$`I%BϞ3x"r$m|-C&w\{\x[VڵED7<}͍ C[B`O|uR2ɒ,םޞV8@3o9CvZwO$dDe5ZN޴ixv qLׯ{zDKR1dig [=^4S<#}#ڱL(&ga ͳ-4 L #mɇc׏6[cCcFދ=m~c g7ë%0#W rdQh7˶f S]@U4ad,=G'-u"m-XpG"6 u!޾snk;zdڛ?1Ɵ.#;+{J޲ "sӛ߷ذ >6dp S}l߀dpg]KO +~o lK[ ɩI扣̅<'jѡ佧ǫ=2SSLc`lM1r`V1e)kCR5+g?xjЅ6Ј2 泳F24(HϛCmFfQ>!LXm/b6XʕVTuLuRKi뢤 (%):ICXΕdP -NC: p |E^րj֬ZΆJO3cK 9Ma d|蒞f_Dg1?Lu]1S ӌj6/*ʪ$:b I>6$wcoNhhj$lym8[җG'U:(˗3˫*mR8ҶDxP뫍/N?-T <Ñr$DUW['3-- y l#N]3` 6ay$Oٺ=HQAy.휚qYT\w6ozq3 XK,^y-1! F*XL$ߴdzOX. wЯAVĿ>.H҇'0!Q̺I߼?Yْ7ba@8SNc@r'K_5{ɰ94$7# vw6WV+Gqo ԳJ(mll0(T34iFFlTݫ2,40VW i)+EQ@4.0b c`ĕQE C 0UF7ba k)51{F=Wۭ6i>).h_-8DiaG[Zԕ>lV fi͆3qf΃5 T7Tfg; ST۱K82h-)9(-<1ZsVt-ZKd^k/U[vw7<"tdHN<\E,T%2$ g؉NGR 4z'er':scp1ɫN)5'OEΥ5Ou+ݽU|hyĆkU3'~okq´ Ӽ_߶[C={6x/\ Lnjq˗ c!}_iG$JAg#|A6;}U~4%O kT>s$ͧr:r9:TWՋܚ7ׯ߫C" P;D@9;A67Prv1.sՓ! `D~|Jd(X3di&6ߜ=n R&lPЦMDcF"(Dq6֥IbHJiJ"$Cf3M>vmSE k4JKu00u ƃ e_U"QAQ Zmo7$I! Xta hu1M+Lv;6M6nyXnehnlcM+MsLiY׽ g.7m"w=<WkiٌV+Vѻacؒ&$csdv].m'cd76 C 1B@ !eUP]Z!HBqcKÃM6n!"$v;[4%l+M4ӛY eR͌QٲE""#Po|X3s?kGV_6ϯMnxpIZriXH[G iOLf/*%z7-3ƣx- S<0o&BeuFܓ-ήG>dnjzOA#ؑflٲUU[_$LE Q $I$8X!ePH>A  'Ut kl6IJ{g5NksI"~^g>f#dQN#﷽KzssTl‘`A:BMAB 7F@;z/ӧM"I!MHDh]"1NpmNSrRތF j819?HL} SgF1 ~hBn7L٫~Bu˓uTIhJ<ۧ1'ZTy ؿcJxjn,{J{#tФzG_:x?6ywk,B{iY11U>O4=WL~}***?G㣸鿃~<)DTRNk}}cp <68q)ȀZ2"&(B.Xa1noɂ[4f'QY ,MaO*֬sSңW1J,%TT#u7Qo5NUU*bUY›,1XGoWxI<9/AIzR^Jʓz=7_~*hӔU"ɟ[LAgAsR:]pC P'ۃkۿACfQHTG tcR"F4sBq |_Gl7!`&*Qc~זKs6$GؾQ̿ UU| ?WcOf)*Tp!: 2c8Axo|+Vo#a2'F?i 27aTZ#>&Geve`>܆Dnj_;8ZUqT|QR@~''6}sg{n` >5{'Z[V~-5 ~/s<'UEP#]}oc{"Oc Sc :{R;*TO I>(N1R`D롆w+*=%Yҕ'iYQLODJ^-\S< zYH>JK*bɜ N 6p=Cߙn SͿwo׭WUU*b0SȖۀmbrnU8NHx‘QIJEY8A8,FBȻgq%bflAcbgAs3|p30;7k8Ηu*;3T:4j̼, >p&5$A(j\>ۅ%U7s e,Xs7s7F;Ϙ}_4BG%R1[lEU4"xбm#*KĔ&gWffLSe1W*Ogo/'4G!i(c>m6G̟Ԓ0g! ۏu<9ayF%Xs1:eΩN-.P1..c5Z̽ꋨ,,< FnUaY`Nfa%5W| 41, 4f浄[.bVǔŏȞNƏʯw#?#0l!!>I|#32>Dhv1S.7tb=cWNUP5Z`LW{*dfcV4ޒ|gz|VSwmH {Zl';MzvMk1URY\ak鳏'bfC} =GZ=Y,z7Pfa<j/ǃԙ.JIJ{F!3@i`#dG*n &at%_VL#DJ͎2<'3Ua}T䘘b'k|}5ea^J+O#RJd}>_ =Jا$J9>ni:DH h3G#k%kiUJ2[ޫڛ3&"ԜC1:ʂ؉ZLމ:_(4)9<Ƕhb>*Vد?I0O؈dJ[Ev;US^vނcɥpIIчwvD<4D*AITT ٱl= Pة{qbV8gCq({)> 6Lre|Qy^^#UiI&{fꍣy2{&C#q[TvnpBOeԆG %/F6x5پy0sHW_oTýjl`!5 O=$O$̝8 }lD Sq=;B##7MJ^mJUP<qˆoyAfq3̆BwwCiQt1NGJ̛+gXpw);X9=ʣcOe;%6lz11Չ O8֦ؒ& hݯ'7_c>Wz!}/NDI~'XF}o wH:81CI$r4^vДmƭ ڧA; ~bz/cҀl)ھd9H'9s?Q~ORl*ń$p;wo$O׸d+YDQ['E3!e5e59Mq2]J'_ylbQ'TuM=Mt 8( ZZ^V6q z?:ZwdN[o~_H!sdQԂ逇B%ݏ6#OyY|uixk;cHb TCMJ\KN{ǨAzɷnU(vg U8btW=/U>W'TuG7Etl]x@3s I Xv8pc:㫱SO:0ܧO?^6ibw4x6nwfpy+\&!32DʈD1r HnXNc6i991ýv&wp&c407AA2bF ƚui1휜n;9\{nJF icZM4=kf+٧{9'ЪiH8s~ƞcwctbcw7F ێdh *Ƿ 7w)rs8#u!➲w,v~Õh,ĩJKcbC]x9 Fa8th[=%~F0%g|qh1}KԻ ӎ !R:0:B+,ʓh=taZo)ZZHls|̸ n&HI [-`\dcWST:9jKke~}Q7&3#옱*CYrGw3Veٳ2Kr`ހ{45$^׿EG77{}j)fSh[Di6hl L:ܓ-0 5P?mm)t>NZS1䉺ԣcj3SDV1N", ÷qb\eW.v䲺DM#TKP#ʎ~LB0R0FxX^a#c3=9{p`b|A)$HSI=*#buVsqD|xm/.V=2ET'B"nYuJLҷxwVtj..ǚN Y)+ǎH2Vo~;y7a&v7m x]AK͔oWX /Gt|ke/3ug'ʬ{+ JW"{J=cݜҁF˹_-&sBv;S44 b\H)NӬ6Y4Rf8!жBS}϶.ׁ291:CZatg\DefkW{&ܒlD4gqFyVrgė֋ܜ5vtO}:E $>fmZ"N/zRJaWƣLb&"cDjC(D=죊r渺*)p.W cSƦrBUlnX$=s$IJ؞Y_ kKXh>S10wonYoA饼rݨ9KMmqع3ѧJA7$]>R{ʘ>+)t|sBO)`!>Ԓe2Dx\iMK T5^,;EU֑'_GYG EĢviV{pI,&Q3=?fQQWc9樔3;^%W;Nk7ҵMJ?ڻ"lVtn4 Ц p2`&f ^'+'>.$̑$ykTFjOZ&3k Bᓞ$y!BWbF-SݘuN I(:VQ=7VӃ7Asl[ws.7/GG5շSߞETԬi>l~heLN4_C,n;诏I˪o_Ys8FWxp2O(௥ϽAޯB1F7PQF-h"Nnx ԑi/&7חC6ҽ%v n1~.0|[Pi]vCp[D{=DYY=S6cFh}(|m#Rdi<  &!31lLLTnUTTQfjWʐߓ,l˖=H-K34ݳM*LRnƊmL4ٍ47E~$6ǁ{B¤$ᢔ Js72تOdd"NF"B[;I6'`;e1$#OJ*hUKmi Tt[1bk2fi# fd-$; :1UXeES}&֪,)3<_Ssc6Da ADwh1Qc! ;D? ^@ac%PL$bkd v eF070AɎ[fniHsDI#O&WѥDLUhs1:(kxaZiU]Xz$&)6_4vW{q7lhѤS v&66F͚HfǤu)#&BШƆ"XB*aIbDV̴BTPJ = a*Y)A+SI'D@>1%+ Jb>x6v+[s%{8g2ƕC X67 kej[ZLьf=M{z(.>J1#;/uBE-"#Ԥ'/s4zK㠺iM6v\ YyF!HrMǵ#F"8Ӧe!f7q v~(u18D Gs"A6s7ʦ jWfjz\heNR7d=qdi#nDS7{]N!#T>"y֠jk27!bJ F! eb0z |{TH>B9kT^Ox>>^I|kNxaz_ 4O(AMIuWMmj Y'CDNrb8ǗZoB;Q%NhȦIhɹw+8;1i9<&Sb]@SJZZVaMt;!~Ӱj MDPTɥT::冗@y9ΩnJvձ4|腗@PXa69|֤ Vc>UHzPLDP  < |5⼆v:"B[2BFfuq'9ΪO98Tf]faC7FH+5$9&21zR!DQ7t,gFcCɵ"]ReB->g}<BN*y(\*b`g5@`Έ!!{|L #)61WP cgi= jN⡧jhv9pZ$FIY|HrGg&k#$,u1 $"%C';s:'՝G'jgN}vCɊN6biE$Ukbef굧'/Osf w!#9UkKe"=Ĝi9`Xw"'-a`|׮,IT14횄rbtLqWK1D+2[ wtKl#0"C; 'iGW'1Qgib9fڍ!'sa:!ȅHn9ƈ\Tyl7i) 0h$BeW I+Y%j#ʤÇoC"i6IAZ!ٹc= 11J4bM VIұ1TTD;I$#֜í!=<ڒG{zF9UE(TJ8nحHx7M`]h$Mj1w;FU`j Jִs2&ى$V.aI"*I1~@? ȑ*P>S MKVD|9XXX <= cuϊ]h1WT")-9 @0km*`bx 0v >);Jbb)[I(ݬ&##PM Qt*'afv<OBȨCvY=C 5:) #"XE 1zNC 6Ibq) Mѹ)'& |fBGΒ"Gtsi'%I$ڴ61b+FmE j/'~6tnlHp|ͭg;$AΔH;q%IkcbȑMb&4Jф:EDc=IhbIdo*w dc~?7®SW[&ٿ7dm'2Q=@xDO?͞bI?iŠ*5P9T8Y>#Csy²ٵԫU!uvu$ĉUxX֝">dIBR;%PNB Ҹ(y"9wjNh;tb*N 2U11QbWK:4'~lIp0ޓO_>m+ H x~N)1\泠1E'AyN"O'j *dK"I) -hH=d1]N+2`8!o{"ҒnB qI(Mfʐ I  I`a$.GGma$L U"|{]QR9o&@74ⰱ!AɯSo`z(D'17{N"[F$$ᏭC$v"F7a1P+!6,HeQ)VՒG_""wTg""6 bI RepU*?Q\$?O_?N]/|.:Hd(IP=?c*s+ti['"*w*I;Da=Q$O.ii>41''(Ph(4voV8; }$9SHT΁hT%Hz* h;3 VQK`1aoOZdB^\'=Y c4ƌ9m)XƆٲLX+YXfkBbETU)dgI)MνWb_[$杓#<r4hjGGDEC6';  az-\_#$6{욏1D;Vu5baUaȁ6IIQ-4?IW]jz(BJBȎF$\!ad @%D"n0r:u3 x%H:"Gw|QI4:GJ6ǯ' Hr'8F S`z 7juIH<[;y<;I%tz'$8rS%Я0Cu 2CTQʐT~iJPtb4B$'\# -fAlIJ!JC`*"JK RSl UW r}>y)2L꧹Wg_>~ٮ$E2x25YyL|#G``EA60߄(%cJG̩1'*^7jlmJlhL7Dݰ݉nRR t"V#d61k`IԑQSfƍ4pxlnV918ccjFt EՅHPD20!B! KYd!/b(JDVP4aB (4bJLl'jGJV(2y)He[E!)XQdJNbX2q)YFSbBpA6g(^N?TVFC2TeME!Zǹ3Q(;(::I>%Ix{ņkc'XQ it]v\M9n;,<Ӗ AR%NJ/Ry-2-5!ݼ>J<ޭ?-\+uNa~۵QTWF1UT؛m]wt[al])Yԟ5mKd:^aGƁ1%CX\S.BE*B&e)mB+֣" `CO xex0'iؽj*XKTiQ`A1"fdzyiRL܆ьE;` iƙ6JM% RǃF R\D1GS>Q>b>7l1ڮ)RlE,\D?lݰ]~m[J4֊zoѺu^.l4Nb2Q]d?ժ arTn}Si]h>#y>c$DٵLۮ~\O*[ߪO#Љ$휄D'L7b@_LezzOQӄw:!f]R)! tB.S333:EX#W]oԖۡ;*ê'BMrc">9r p\"Ǔ#?Awpw 2Θ"iTz0>;7"b&#INLy SgN[R#*KEMA#ONM2L!bFfj#Z1njsO'kҊiK"ϥc~#$D2CNYԴzMɏӽsdx$NOaxsVv p5kho'OlI)u$i!:v;HD$Ϊ|ԯKcti9",Kv,hC0 J (I.]vpٽ *vets)&EaK,2#mcJq"0@ f h4'UˑVUIJQ($)H ӊ)"B}6MJ %A5QH2apYd`8(Cl& `$!JBv'K2ijʓKIP⨚u*ҩ.Lea{$D9ܪ'r@ +=&l5$<{BYSͥq##e&O{&ȓx)iEwMq>(loJ@EꩺGth:Dd %7ӜՒ6o JTxx#bCu~=9\ԆrYzhlN*NݻL|fu2AI)e.29#$1fDv` D#}}ڪdԙg&gӶfeS+tS(0ڍR-y|_F2G43G^ A y,-" HB$(HҢIQNO;^_6ؚo˃Wk bxE UO3(]`unT˰ۼH jdgsa"Q0\";&gM,?eҩLl6LV,lYQpo>sAB(i.\Fd? ȑa S"f?6cPm˻pzL,anI?~=1־0z`7~/ѓ6ul).fSp_޼85e/sShُ1iRcu+vɤN?'x6rd|K!-Y$#yh`=t 'zGweYkZ(R:z6 ;ccxb7:$qcf9 Aafglrɳp8N"z#Rzd%g@|6NW! $N G#+$BW=P:@rÉ+*OBD;[ G‘=7Zb;$ݩ~Ϩ>ﺘ)EV2¢Ly|W0T+s){P=AV֒: ~;w AnLWj"RЗe ^DM[WE^{LWnugog+8r9PYl;v0aBGcVb GkÇUձ ~&xY*wU[?W^Q61],|t?̧  S~.sh8$0^치l|O|>|TkhhĮ5bIjyt|>}T|I>3Ji&' A00y":h2N_ ۢq7F6iAb6mW7I6Bw3]Ud3u|h=$g FEAo?|iҦՕwHO*$}'ӗWUN?>'w#tN9@n󢤂1˥u+c8쨵'(#tѿR3v%Ej8V'x{ h-5RĈV6y2/IOx_xaRUJ#Ij>~,ߋz3&em4{s#J0RBE̕yR--KWVck Mi nۖ*k4̷0(Z!Ъbd9"V>MOc5{6QKglBQ<Kqy##UUo'w+ NQ|:`&>rea9Yw4HXX]Y~"~ /j| j쪫6$*r?:suup`MOT>U/5tl9 Ѥ[f02DΕZ4G;ͤNS=-/V jC1v0.7`hvg-HIhh(b>e#~2O8u\%%!yNFF 8; ,O]-4'168{{RaU75Aqr2Ra:򯄞eJ>I5>rMӬdu%\OMqcqUׇ<' m6NI;$~"# }S!IH0Ȣ$%$%o# ? jPkL`iMG5Q:;9O,>F,TMԭr鏰S,~YO9X6O#8O9= tD~+|RIy':`vPI%wgtCh&&VkR޳NݒeZYJ 0ҩV?@7D7:ʈ* YYoY31R$ TPZZ ,%i"XA$z$=zG'}Z*͉eRQ%||l؍o,A@ĻŜty?k´ݽN9"ȟ{cj(wH: eSi]<=!Oϑ;Kibcq&+ 𜓓#I'M/ph1TTnϒ8whήXGhCnNCcF%M;\%v,~ `tz9ÒW;!  wGTǓFM4F&dP@f 7zDIX8Θ N8;~:3u\Xϋ̚0N!>|>?ҏ*~u5PI]ywKӢk~yE'ѪGN < D,htaI4{uSc#vC 零[qUIt2}^m hϊtl+dFӔr+r <rL le妮F4t++z$t-|X[{,!OyJɒEc Ajmy `h|ʙR1>ⲥd vd^9Ͷ);w1^ l'6>|_"0E*dO!m>4y%I~nG'$_6,UO{_z}%,z;.n{l}`QCJ:DqܡD10L̘4ƙb !$ݟfor:tMBN.-akZ h~tHl z(H2~xa0G#y:vyQP~xA_f0^hSGӢ5305AYn\gYuiVEe֞tW˿;懩 ii?Ac ߴ1a掸HR@&3Gb1C~E9Wa.WnEXh{쫔? LV'h&k}$sBNUU t2wlԠIџ#θ?oyZXvCR*6-h{9Uv>(;&0]9=*!$! "|GELB:i!Cg$A(0dηWOlbT̿ѯWo '&jhsg|1MNS.9yW3,y#T8 .g4߅{I@YvNFt7eU:lyw < luwZϾ^oI.ԽX h< Wf1oatzS?/ogIFlAꝏUJN(H"_7CNa?p,_W,e|<̦c,.:VX!NѬd1ȕ1Pؔ>~ |Lb>~6m"Y;)X7>W8_5yCTSd~I@99:B٤z՛&FrBû9ҿrr'Y N$%%&g檝~.5e(B~/Rw{Q2; "v 4FΚaN<˧ M YJB:w(am׭]5_gi]7XV/֏r2p 2bNK+UݛGO}*A`1TK R"`Ǘ!vhM9bC5?{s䱾ZVk-XUE U0 .]lڗ[3Sd I#]5[5 Zmִ ,Y$Q$s'rH9H嚝q6"TIVbG,Qr:,=ʜgg(x9ΊryNm"G7b~ #hӟ Lݪ"+ 4qӋ34Ps5ӻŒrUpʉ˰9Q^[/TWFAph$w<:#`~ޏvׯn$HUQ1ʽ,E |9kXٙy/.k 8kfY4KZI8NqAf94*mˑ97tK!mR;X46ɕ\fvSn<0Bʄml6mQQ1YrD&}ݎv~R 3Z2R{LP]APw~dt\; r.UeSRJ~KBa(#LDҤY$>kAvk8_eh0Oc=:m?4a.L3# uI4U J$&e2- (y`Qpw CH*Ti6[%n⣀#$gAɾP(r̍µ(8t†5eL,0lAi5Ҽ(i4MaJΓ8HMf1,'n_ǫ޻t7}aB6G_M1z^0,'Q#w"G\TЙ[C 8bfՖ3{kaRp}ux)pflq!"+ءSuf2x}A2mJcS(ާVM`Qѷ  >ۭ>uNN!$k ضCN6 CUX7W 2#*ޜx̻U3SݩϪzVPt0< tO0N 4cCjN`(+gb+xMy3qn`:offcfb2LƞNF4;r=;&Iz4G1nk茞fC񑜐|(q'.o&9X2$!I&!1!!~q'{$ʨV PIat&)1C‘Y&}{4SL P @5PeD ʄH2\_NrXMNrn7Ul{6s$If͕U^o4_d8BCK I4g35RQIC2hD!j>Ce$sC0v4~U1CL*o cLcbli euy6{sVf64e/MFJ--tk.([3^+:o2k?oP@b#lNOosQ_ztF$ Ӓ!LR'P7W%aJDRD@AbA$#ڷq1{TL~]Ljj8;FL%X!)(X 0p֔,!SP4&ҀiH P+PH*`8>`Nƚi1FzU^<ґͥ!~kJDzUoH%xv#8m,sskQ! ȓⶾjӷ=U'@7T@OY޿ eq&CX=Y0W3ugjGРYP%`%$zƢ_6tCcis_FgMϟ1w,v+4BkM-OYhM Fa*C,teE v4#$ƕWX~(64VRRU0)*k3lD0A<(M5&p t%t`6Dۂ&Ӕ!Rdz'%?N$*XpDM*^srQ$z;å*$C*f`e`Zf9|@6X!`/(&š}e (ՄMBոfEە%\Vu֨\mQ5et4/:Œi }=6ZĊ[%m}AP*` pH3Ih"' 9v@7+` 3Y> Ikm <

;ɽd&ׇ-8YrTئ(v4MFh_p ܹ'j$;UYU='H[TI~4I d%`ԮFπr~8! J"0@JC ĠR _&H]V<1:=wfdBd,k0]cb\,W2ğm(CFųiQ2R{NA3#V&=` ΋]sBqEAWF3?*T"U_|_F{ϵ>SwҨ웬RJJJ=d7 lG${wHBKDB2'xsk86oR?h\6btv{ִҩ,Rv~4!VK&و1Sr+Hn2HX)E|Y&w S bRSc+E"5mKIm+*&jE|LC %6 (eDDB|SqAd>Lvm?HqE>dH/_| y,$#;G<^r~ڴTPbiM%n٩SFmLًs./P a*~HQ%G;Hj*kϢ.֭̏h}4HTb~dKC'fkw F1o(ʨ30/>ԭJs}~cUmUfī$DrO`ɱl0\=Q֏blkYn֢~g<ʃ~‰D>D/P_/&Y";QM¾COlbbe?DSҳl-l\jlݬ'uVڿFNhy.;?+H'vǯs}ёg&1 GF=zrs}A$Ns|k;CuT|#"ʔ8*8LL+E&/N:1y `bBM*QwPbK R)l$ JJ)((IN!eYРW^\ҦLT[bڹl)@B%*HD-a &츊N dK'n &aE_TŸ!:wI*r7H}2U*3TkɿByrQ܉. ]=cЎIOn4>#\vUS,:_;Dmi q1ŒNE8yЊ"QCR@m!@P>~G?g#0u"m72%8 :<:T$zJ$ Id SxïTzwI_~C&g/#!s"nX6M7g&*}A wCYraCi()ogoCX[ٱ ['Gsc Sv㿓=&yGI$2,dS=i1;4(r>GNG2h%"Eb-%Lڥ6w@'%4D!dOkb[?'~e& #>/\r_ 6Q`4j'O{#_'3{O@?=u03*!(h^!YTD&'n0spqCGS"=K?ILdlI>!D@!?GzE 4 PL!9ɠbڑ{ ZCJDAD^k0BϴdAD0 Saǰ1t,qr^dw4!waޱ;WOC̤Sy.8wfÂ: v3zhzQcynw?m>cQҾ2RUNI~.}QiҦɇᄊ?qɍ8i_Ky{9*;ءBGO=ĉdG(ĭ|2W*A) @#V(ˑ3(&.T8f!B(P8*Br2"!)Ca{M :[C+?/D1rqBIT!{~oP4mjbq&4XbՒbVA ShOl IFCN{LI"tcetK-IOD ~gW@_:nOMoQm^&90) @8QrŀPV #je^&֥CFpRQSRX>qnb<8O;$2ܸH5QyZ~ZTrfnmuQF&}64mJiͥ)ej4IX6{1P nQ*EDM _̍n^kP"A>=;iU,u5%H!jlZv#5&)} d0KG=䝆1ap6i4ZdH*X-)ՠvB'l;">yC"Bݞf 070f7M&02J,m]3KX*qSv$#Y"I&#s boȱ'AQ}mo'M6b,JZp"V1)yĠ,e,DRX$vPLƒ,xB P( $Y#ckUEʡ{2<}|9MslCUhQ*Qe +( B(ִa!a*:$.e"fn h+{7e@4aAMJ-эGۋk˦3M,ˊ 3cvd%UsY,U٘؎ $>wv5wm;Hۧ8i+SW?oU!#x:vY|porAϊTDDr<|㾝8 !*)0%*'QcСQȐ RK! Q];(\bhьrF;YLaACXwj2]ÈcvVܽ"mmot"Q:"?)K d&5 ߱vTC7V"ƦF 0#ZKQ%M#RK|X%T8Rs>v jGyϰj)XE?{I,uaDjcm 6a뼅aYFٙp҂i0Smp7Ԯ/2yL 1^:8ދMѴ}HMf2ůTCl׋5,C1 mZk7mtSDHqwz6 ;g44ʳwC$حvA Jyh͌ȸht.6 0w6.p6@hlJ$<4 =wh'NH(mVtl9,v$ca&FR1%bVà7 $NݑlV#!pԙ2r~͍GT5{ 9E&K;0M v©Tv.f& ͩKM&(Il `"=%Lk]%&j9t!`sŊE8wUWtY^.-`.Td^a"A]J4p4J!ذkT\^O{,X,B@L=h.iٔ}]Bd:4!ҙZM6x}xh ߿jzK:HsUB"Z^LdatM,ت~b6{8sv*]{/ pg]2?lҨ@xyy `jqgHcPؐKWp۩$*;|L#H1Ep0 G ;rP: Oy3,5u<ԑSIyd6y /CzۇQ0Kl]Xj FTŝ4;6>o$0igTOx$ל 㚹pMiE $V1 ߋ,Ĉn%㳸zkaF@ e2  BL C 1XZs"&dBf3f| WLaT$huŏ%퇯u7N xv2*Nt!4cI*ò o8=DzQ3e|#z;ymFkWT^&7GB.jT9 j%J/PԳ.z7h(>_h^H8=<~Oμ=aoєh] 6M`3*;Y]HrIݨZ_J9|_J92Ihϡ4+0؈S] `Щkm+ 6 96( εX 2pxk߂- Ɨ g{Iy FRt0. zixZE#cy;:!'dl]uvM!~vEeYI:L%I;Aj(\""""""HW

  • IRahc"t %m6_dIꅠT(jchb8Fx #C:pFs9Հt9Ů 猪&RSX3<11YT h!)ad*zu}ؽg*aC#nxw vv,T4(Rp -1# YlGEZ3i:*(K;I b[FE*.w o)(AMDfu]R/5I#~?8_ʃmCcaC5+J#ˆ1'DA`/KWl`i$9)lmE ( ݵ}a@v~| 3~}1{萡aFX@YE{…2ou^TQw\J9]f.L_oK, zZhk_Mx9 CEKCmγu—Xkw|9}2 h.J!+J3 8& k ph &jY-D"MRd [H2Y€2M IyfFb$ #H)JHRĐ$ ) ɔ0$]Md$I06~pbƊP<:$n>Uu^xrq1fHlwOyF͝:{.I*,_cF=CzdD*E87Dax` `%8DAVJRUkF4K6 Ѳ444UW Tng2SűdIE>ȣ 49Her6ۆ3w IS엷s[k%@8׮Φrfkhf$pE,Cq~hhN /+tP_CUU֫uXu1!lLdRIR)*VRZT%!HWBv7'=u=|=s곔;"2NZ'd*=Y1O',/,8IuhU%GR1RƉpxD07 ͱCU"`($ O.O[//U<s ىy@ȝJDI}\hF%Nӵv)7%Aa{"3b$hYb`xI?7x8(SC,T,,3CbQn-DȘ:IP=p':83K@c#4,GI#SH@j.YV%7B @w~dIÁUTӜDF "O6MRL~/ؑ \=𤪍xD?Ω!JJP='.o#vٖXP¡#,PKi&҂]h0|yF5*!ڪll(&"dʯ56+9b\dU瘖)u&p @QC2 HÐBb0=g!ӒڍxQ<)82DOkGϘFM|C%mwbdy E'H!$F75*ꏜ>+킗 J tN'mÔOFU` :90>vpTrf qZU$N) _:C6SʮPPapo x]U4(nV6sc+4A`uXnV+ l66J,A/4,9BAaAE,4:hva 4`XIuLQFV8rwpY}"3<3 81 a)cIPyc431q\44q q KPY=X$+*H9-Ly`eB W 4ze^yb;=L4zKɣLadA}yθE[a)uH*V5یA96-c:7.{UN$OJ ѲacJƓ. Ev S&%AO"M '@͌ 1y(F[n4iW 9I_tF)wμf0Bo-peA U lsɄ֥JVk͚vldh1wՕЉt3}Yy7:hׇن m ZHMtWC(|5ǰYtx7F%oP=ƶEE4 Ƞ(a~id+F۸_56LnL3bXL,#llLXhdK0ldha67mŪJH ;JJBXyzG'&* "I`D}.S)6MՉ"Zc1ȲX!7G᭑VM֍jX(lIl, TB4Ԝc B'{ ^e'KYVXCOYRB0ŅTR y2CcKlʈ q1?ʪ-?6&r k)jŢV'0, ]W4QL>&sQDIK) ȕcSlW-uTl,e{ZE, ƚm1%c m;s!>t?~_LHaa_[$'BrOAObVd X,A1e"$c݅UڤVEUQpZ\7; s""ݍ BҔTY mAk}!6 mQHM%>mRZ@iĚLp.NaV $,$6C7ӂӵY]"bY  x2m# ˋ4&וI!gs$? pmEZ_X"g'ee'IxyC?z}(>Wvw%IfBv*EJC(P"`%32hm1^=n[WT("$:8[SlrIۍ9"K+W*E=+`=3h UBb4#2p*B ?3clEtiy` #"M-Emd"? blFMEa8 G5|]ƗI$I$:~-T:""6{- v̒N>G <9 #| -Eҡ 6S9/&^ MݭUzhc$+;t0Dc(I،RT1iHލ"ĈlKtHnBo&e$dPmQۖ#`Uq:K+1! "G d,w N8~UUUr+"}z}cR}]uI_NJv :2Bof%2D MT4UЖq{0.7k1!]JK! Àp(~aDԔd#P "e 5u3ZHFF`c 6ئGbLQ11c)lRG6Pk$ə:o-֨zV$&č|Q!O v8D<ړa:'/ԥhɚCn CZ` پ> Bt86 df bVtsA7D!!PGvؚ幌2y`xW"b8'%lrq؎Í;IZ~xJtOppj!es-<,Ew+y8D9! \wq/X+J0ֳjDB+f2YN#7i1a7B"./欇h(CW&h$vfű"F050hGiHlĕ>$BbIJ $O'V _- fQ:6I5bad k%FT@+PBЕjFee,,-F*"Vk-REF5Se[ъUEXkihIRDTA-ox{@x7P0>0#,sn)2!B-\(!t~"GRwἔTfPwy3s1 ؉/>йe qy<*[`@8qijcqN38wu PI1jdRkD, (+1kH6ƑSjŋjXK,bYXhOOӲM *w\8ruPS ¢RʈI*(@JȣH 0 {QsG$C7bdf>\[m2d(pRy .E6%{Bw0~ 2݆ ?$_SV/d=d5=Dz0$q]= $$ѦOZ*7-PD'}/xу. 0Qc~cDV ; FHՑJEdLlϺhkJon}_F⟉uǻi?? ~h;l&3aX}0ax/8>3SG꽋 ÎdqeFJ1{Ri7;nS] j74f'6ٴ?kĽsY f=Y. +c+?~O ?PHTXپ4{[jZx{LeepޢL'Pcdܔv6mFw7"xEInQE&bL"g5N])DDT$P9ύY_BVmcLO܃TDW…$D"yQCiZiM4XR`RV +QPm4 E`bڋdj,2–F1uJ#'h,3.8Jhq~!KD;4/+T &]YXJ"bva&Qj#e#:cLEU=}˷~mbk8*f?榇vhJN@c:?xz|v;xddmeA ^b H<vvt7):@/'bXQ<F$<] +5v٣C=JL+z;$=_ۇBVph`ŚUk4 Rof1MD['jCM`F{hyd:^ѴK2t13me6YE)B;3=qƖ%+v4^ȴ!d"7x2zϟuɅox.yr$RigWL~ BS -ˈט"A؋QB 2I(O:?0Ĥ@l'1!?!򄧼9 9 Ap" ڛV㻼d6@$ۭMzڦ,v ,Nr~y60cJj 3 |n+b#!%ǩi1d9,>kR%JR*`~JRs :wݴyGG"O]MNa&$?#a2Jy> bMdUAvkGJhv&F%2rR!#$U%[1@D֥HZ'`Ӏ˅6FT\`eMd@* NlL[PԘ1u!T 4â4k2 &3;a68vg`ˌ.d%*CmaiYVB]Mp9 vjҹCjVȠ6 NPوU6\m`qpTUQX&&*XBjjlUR5 TJ9Ȉ$B@ `Jww]t媪UUUDXLrr UUJɜ%zj+m)jRmA;l`S#gd-KT05"Bp<28>Si7Oz'XHiO|8:r~3CvtDa4dV?<٠ݗvZ\w1MU4Ci_dSdci-$kJLSLf_n4 yQH`$(idH̪ͶRIVUT{!-ba%MZVQmF6fah#_5*&϶\_~l[_fS'6Gj,|3jIM1 &11K |h}O-+co)c~iEJ5EѤMWZ>mOP q6꼏o@Ԡ>gws$z>ڶm۷)7ETnaMM -%i-XP$qn?GDɾr4K 0DŵM  =G.o{DsXY9,s])?l wuA@4K_VCILIb a-@ESBBak "&fD.k ,VLoY} m;)gHҥ" L!ɮ2U!BBƠ@YmU]aJR-eM[Ledչr_/U!M!`H!-mF6RKVU%(ֱQ =G, q% ;EN15"Ҕ*R h:b H-,j(jp2Z L0D]4'#S{^],b?bZ֨"*#1h Inid&MuՈ>-da˱ 9hHQRPF!|'&m {ˊ)SKe-5<^aYfA~1Ni hD; 㾱H> Tqyl[ X)J+ˢ qp 4!ʇEr-JpxHwڼX2X֎ȓ\?/9|@'s(% l}Cv3&+ZJNyҡE pn|h%X6iKUe 7Rե걃MDb@eO!vh{6}{Hy7dJy*q_NfHqKdII>ZOj^V=ڒb_ΓH1EG]~X1Q1!^%~zaQq/on K)"r t>'^F,,d P 2;!59ȭ1MLi JI'!/+ݙIPTبˉv&ՆҎ..mhT T4Ko%i ƒe0 j[O $"LEC>(I>Gt6IPIC5^&Q߇l oe~֒6@Ȼ[ޖ7W5Qѭ)4DpNHYZUVkpІD7W;LC#I7Eҳ8{8Cdwvn6xDD`4ګAҦ 9&2R!ɫ&0*;F&8%.(LZ{WڬS RL># R1 T S 113f{W{Ŧڞ9XʵcnIb*iZ*{ tBĥ3J !bkN'rsJH ~`R'٠Wc? "HTslFSdNUk!0uED]ƣs~)6$#'Əm?&=kvKo#TqTņ̇o:aX^YVvU; {&d wz37A_*>֪Q=&1մ2[tyᮼa$ڜ Aբp'kRZYQJA"@R={Md+:3 >t]ر#)D2=iTԙ ]bI]ܳ+cFf5N4WUɔBnqJe&S S5&<hi71d_0  _!WR9lFrDoQ; 44 JTa^m&t|Opt捶2Ɗ[zruak|y 6N &HaSFx2|%|:E V-*c,y݊F܌?Z~qCVLݐ.@0ty3`a6_60G I~plS\X@p]#퉝ΐH&YA5|}xьh[kcX ,@ p8MOq92w<I q<9Ό GOd)2 WzL̑fFCFȭhW EhEbaԜᆐ!q!]'r)J-Ig6&"(C"hoÀ,H"TA?ޤXTaB@A$%Kڜ) !vKԜ<8e6d7Z$\X5H4XK! eCTZ!@Gb`)ܱ&4eN+RNH 1AWa1(ٔV$T-RpE(I/2R%&1vi$M YTJlNP mp= H|;-kjyR BhF6cJ&edo0 R qN9۩> |u]EKHrHI;){m`FjR72Xm+2fd)JH| ;;i?]?nFMhKtFF:taBY,l+&6GV˖jNt2FHr!:Bz! .BIIB Jr!$5+d0 =>ptu $J^2&ԡ8ҦO1afЏ CRJVV)6ԥS+h#pa1'q%^!uw iBA B#}CERBBKD` 8G!^>NEpRX[#,jq]Q)huO!D f%*Ԭ5>O3#_جC祤 G O62Wt:R ӏxمXH}~OZ͙=c7𑜈cm40׃GSFzifyqX% | ?jj|ڲXoq"ӻg31&ftUkmccd-!A*: K %R"xr֜C"D(vъNm,ƫWַBɛU^Y$X2CrwMKvpz8vi<%9pV,fH),ȀMbYSJ @{pG&pFY$9*Y9dڍ "d()&A1f$#,+RҪ"+D~ʒkEjeLV Aj&5࣍f'KlFH4r;btdJԨ5sHF8:Zw: ~w 1Q&Ag"l(/W=ŕ͕Ԭ’⚍20bd$[*jmcdFXԴ&%l*@D{Dtb;ªl Ŋk*ET+@ZsX L:Ids "G~Q1THY"7)tD+ܢ= P <þJhDF2?Q>}enl)?,F+l`G^~>a/oC)gk2{ϚŴ+D|>l2"T @T02Q+` P.C~GT]lajjfiطMhVF"yȦǚΨȉi$sPG*4Aâ*(\6[Fĥ)2dB;:v 3iƈrÈ Bh 1dЂ&,a8Lq;PDLRˆ|m2Kh1a@%-r潻B;8Hq:L;&PD)*DJIBNy9†"s WFRlPډ&&b9^l(m1"<%)-EdJL P$(Jխ6m6e4DDTK;!}!aNljR"!*&iр() ʒ&\c4bpDB"` °J ! D@`'``֓v&=5ǚ1bL 8P~KOݤ{ mhКC{N멱fY(HCd< ;![禐)Ie;e;M -C݈fr6u{^P+km ܹ; gzE~ `A2*:T&{Q1L$\2٥S;}RQd$P{=2rh@|J&!DQ\EXM#oi $J шDӌl\; !]11 @c(>?=ɂk_ǧوذ݊dD'ԃHDC ,){Bs%ÐHHbeCCMRҕ/v떩Jԉ<),OK %T*~e4J Yo+w`&2 ʭPR=ӓB*K0򉄡 IXPbL,ठȕMTș WɄ}%U}0BAi,}mx$ý B%*)i B9f.*3VWPڛi(iV[ sGQ4Q4/`:MMŅhbL?GFeE 1 >q?iz#~C7ܒY~xbDHtŰcś7-x4ڶ`jf pOP$6qlwitٍ,*DjA2ۉsөh fkj2dUɰ #"Bn洷gM2gF;?kkiq\)T-h2c *&HvEo_ Ü{{$.,-:))+)1`l P[RBJԱGDmxɌfêo% D}m?A;| H6Y2Ћan#r(8QVCwÓk3m` |! ""u0jL,b#&CAQ6l`<{EAr%qKޭ]g, 'd;E1$$RM2$!8Tw*MRb4~k$77F!l5VPI@ql;Oi#%A$Ts2bI2LILh<~g\sP;Y bD2-ԪsB'#F6tEޙ2Kdbo jNk(hT!8CH~i##\GG=mGIhύ-TeV@nyU S%S"ΐrٔ׺;UU%K ^"fIUXĮ´RJ֋HeB@˪.\)i䴲;c:7~Fl̾'OGv"S_uY@x>=Qp_*QMWK(weceP@9[zgeEZ~[9A#yd)1ophjl 6LqC nCjAV32yD/mٚi c3]f=ihW\O<b 1PX!O/$x4$ Oh!fˆbIXϷ_~_1{- o| sΓ}u:+~?BFZ[$c̭5UoOEAE a3ĤDTT#ۺ:}&Ґ~Ă| }ϛ<n;`$RA@ 3i*jM1iRj,e->|#I~ zdܢ@'v|g>j\-:;L9xHC_Bܨ,v~|-[$ CJ6DbE6D<5W?p"^X ~qAQt8>a4a 1KTZ4-8QéU@^@+@ W^Fbn8©3dUVP> nR2}ПAE:] _׶%t@(p! *SrnvQߑSh\V**MѓpjB@%R1,76$W_.߭+G'h-HZyOvzj!cb· uV]ZCTȵ #(IŌY=ƹm8N  S{H2p28N:8 [ݹ^v^o'g[ו=Im[l reAWDR.[M fLk$$1%C8MJi!"G^@3, VDRY}A@`H_Q >+$?" B~ Ex^,1] 6<eyު߰TtXN 6㦨h향)AFq/}009 AWWͺH">J{sT˲,-w?Ni IU m'5C_=rILWg@zxG}~A!O Ȧ ({w7)?N2hf%<iCR#J=L;'uOTSa@C-" ]oz6  2_8቎ciA`UIB,Ҳ@Sk2T"ДI) ލXEDHCdSlBI Q@JU!J[̟JI㯫gB {N@9I"I'ZC_, Hz^D׾̃>xvtM9Kc*|$#oXAI),&hRl&UWl^;kđkE*+J )*C2#\4VG$` &NHxh1FU:Iu]XzmnQة#tKsvvȒ\+ jP꺗M]y]u23S)@2u]dӕT1~o[>?wx??O?~Wߌ"?'/G?SOw~wOm7?7O?eG~oo?_X?Op5_IZ~?/[oާӿ{߮{[bԱJHf&b*UjZ*PU JCd1$(CCH F(6 Hd-U-EKV[W_,Ox(L"WW>0oC1jd f/23<^ x$"Jݔ9Fl!񠐡ʿ{PS }A@0lX6ԚvqT7zףףDb m:Y.ۚG{=?ִ"6Wl㍺,5|٥xzJf׮tF])~KkjDvȰJ9!0OpƄjShB5;rǶ7~RIY,Y+)%JJK$ZJZJKJRK-,-d%%URUUJRSH("Qff $MqGO7m d mM0blt/E=LL973?-愑$H6zUFeUY1!hۍwn;)ShÂH: w_,G7h\gDdzذSftJ(|fo^7FA-v5sޏ wqwdL6z蝘mChӛ>Yٸ>+{^z]ʪ]+[$djg&)NX&kœI!T@^vt9Ϗ;k'M`Pö|yO ԒntMd;'lcwB5~|x&~LFf;.Yuy PSܛ(LZziߙW~grPm@ib$CV?ZLWgUh ⥥su0${3Z:#[{,f]61sx8s£$+ XSKDiPTbm[[(, w,?:$%nɦ ofHd8^)^UC^=_f q֋E_N D߄UY) a<0k\oֽs ͱ"L<&?_NxM; a(yi#5xAl`Kt;ؐ t}nLDb;拇aԁcRZjGS/QP㙆jω/ V1/{sunBVWk[^н<:;"jLmKկb4*<_h65 {rt'Q@\vЄWt9<q z+zbEaf #;f9 'HgR2qt n`]JJ:bW{|8ʙ1}"ڡ&[(PT$?|skH;ᩴ mCڲ]YCʟD*<ϴL\fa;/t`v."Rl~f9&6;7yϣdU9yrIyg63 >Hx'd@"5V/xԷ-*M8!gɻ.N;a*(P4'X&9P#)ʒ:(2 w:;a_MhCcbc 5 ">Ν9cW\C5mJ30jK[Kj'c4\TQM[I)o.]%E[A bYpE%X'%`m.=FJCKm\lUQe;&ʸٱoZhCK"ADIP]HE!l?G5`țuyWsPQ_?ݩ1*_9} hg!ez&<$ CuAt{0l,Jz*z}eU1c%g&>Vam|y{苾 <\'w{#۴vɾgR* Eo{ĭ]6Zjի-ZdwŁi4hKiM|"# u&lU&b(hj{i7m۷-`b1$ÇYa'4ke,M J:Q{pF&$$ALK!blU6Ғ/[u\1Y9>/ m (@$Y%:҈rHUC)х"xFF6#DNBvE p $RGKˡ\` sGT=Q UERUT߅皺TRD%IUUCZXi&)V9좊NOD0ѢycrbwUnlE[E4 O6nOuyizE;SCu&.81-xO7-[s5erdYv npCDa19~øxbKM ZjP0uaAAv 5n M6<-#92hzQt%iYLh@TO'٤Crj?t.Kx'|tdQ$n5FZF#2lf̋D56gQ-xMhl+A-Hcu4/aۍ苪o=/ 骊~V%I( kA`QgϣQ_9F CAѫu3$Pl `j R0(́^;M ]]^N|&d4' ųX:6ǏA'm'x7m` Vܾ>6)#ZqBe3?lZ P(eXF8ZX 9 $B'%+ahS|a3 /n='$[J&OR*>3f S5ae5NGdH"[[mN1>>G$Ίُ1zS?{A6>KRv~ۺjREfa{H7eT#n~ 4fͬ{>B>ceAf5Tb.SCB#ش񙑣NyF$a@fҕ UR {T \r30L/`ʝdɑ~K ֱi?, 9Sm"$d(Bl ۘ :.ZIaUŀt csUM8o18twg7# :`k1ESXLi0&!vSN|X}yOQT.k=SrJP,xK |i{=LCDM$d¼ޟ[߃9{Ih$RrX *W"a Gcn=!4Phu7{eS]ttL.fCX\P$|OSP &9KjNh|0>qSqtЀ;zTNEY#T&xpvH֜v -Up'Q^56PL)k_pl3+1LSHa#0I,XJ݄8-H0GW-5k@iT dH`bC 8~9$fmn/CpT0 bdnˀFV]hHє4`&T[hL4NR;.+5蠢1Kq`3n쌂6X,*Qꖛ}{꿓COB#`}DW uFlt1ݯFнBv3~6׫֊ˡ4AQvoSQ#K)(-rI] WBo.3;wH!BzbrT{4n7] _d!&ñ52:` `L0b"[[PNoQٽ?Ȫfx|f'[KƺĬIǕSĤTJ,W PaE0n@1OO?|PJę"+q9Arp@vObi5x뛌Q4Њ!JlG43,DBicJatJP4,($tNN',C^u&Y 5;1 4L[n1o[fxЦ3xxP$If04"JZt8-u^obůZ<@P1% (;CK1"jDz@$&RofA-3s 7ߘUU88; mQh[X:lTX!݃RvQכISFVP` TQP21 (4%KB,дl4jDlv^v0u#wVrwg ^ ǚTW S![4etamj]D1 BBB`CAṧ s *=θ$xШ[cz\af|{ttVG^h45Pƨ..W/l:]~p1/KY,Ggҝa(T^s֙0[%GkSۯ+~ME߹f7q'^a5ү~laNhr5xĉwŌUH+V\߲4@͢TZ%ŠfiF Eccb՘@REU.NzDY6d6H0y\H36p1l!We;DV9lt]^)CI 6Q(S5#9#à:K5U9{ q#F `BđÁ+:='ƶdLyF8:YbQ̈́0<,(@0$PNu&FFFRo$:N۩07@xQNC&AJ&xCS!~@4l؛ȌĢ=C*u/2cRI2u>(u1EC jN$\zd{di ˰pc==F@1(UQ'8 1(gS#P9nq&.cW`U{&MMdUWm4ڬ*Ih6I?}3LppF(N'`H**$J;H Ȋ%YȉdR G3fxR.DF 3UAU s 8#f'/)y>UW`pG@[}L2]ƶ:QO?Y! 0*SvCe,&$%n~ʪ>Kt'->wDs @配f3 `P^A0cN '4nɽ%li,crzgoHս0B#HhT`xѲ2m-y.$T k\[FR4f 0"6hj0L1mS-M[Hj B!A@>:V;b 8+@.BL˪wm8ʻ(,(xx@B€:tvn4H0+HbFߺC,(D%9.ө:QDۖ&l󘓝BZ1RU(IT*E+Y0U%SJF(T2K; 6Y#C0ՒF%Z 6< A 6P]ZJ.>`mpNrMw&hӟ`ܑ,)jt#$,dHdDĔI+!&4#[i$Uz N"soplPJ&D$n">tqRˈ% qn(&r킠hB%sq&FbVY0PcTl".BLUPߠӥoGL}PZa-KO'~//g0a3זAH,cj@UU*L4[Ia#4F38pKCHkUAi> lӺs(&h8ۼ5-]Jvm6E'V ;nvr?fK mrH(^_8G!1@+hQ c}=ǻmlwwV2yWBF$Hql^xv^xA)yM|:N2Ӹkfx`rNޣZF)Ϧ24hũ{mh.WNpiY*[)QY4s]*N./ލH5g .hD&0+.͠;?m[jo>Uͣ FW/}pީFmvw]!n9qЊ_"vJ,t?m*DlGT7mے5aBqVڌID-}33%5*FD)"TOߍ4P#"O>!C0LLC"d EMrK[5߂b6}UrE=5W)=^ťK=luaP?'D ~ޜd0 ]g{)J ~gx-Д d񄐆Q$!>/ԑlґC/nY>wj H^P>!AN>H;R<iSs߿AClvӘ2P& BLkUQ{B`PS0L9{Y*'#v1lä xwn:MPʦm*% 5 찣 "ƜnMfvp@!pضCei-mH@G`.:'C{FI1aňMQLHG.CBrS|Yu;&UbJx%F[QJX Cj'^yֵ}7joVχo0 m}| 6CydTaT~sz=^w̥]&CfL"m=Jopv zrw:ŋQNB0[I$M uDTrOED,1XlR_ovuّ2K|!XV ^ H861 oH3IEIPЖFB)dJB+*" XXAB@@2(<4>Z ˲x;d~I4oAb3tįW$CaOCLw=,vOέV$H ibC]GR@9 "Q Bw@IgB>Q!uO$}c YJ;q|F'S ~Q!$GOi$U&`gWJ25R-Z2n2rĈ#m m:SA@ *D!,tXFii 2TRT#mi4kV'!ߜ'btslqjJ%*Bm 0*M#Y'kT-P)cُ3cS,(f46kuZ6њ%Z&<>dQDD0W;E W+E<9.[~'VFI3$/Ƥs/~+S簁!JTi{%d%h 0֙[)V}wQ(#@NQ`0q%"FXDd|·9᭣z;n?y0U: J>T=8LAFb7Ź6d3 6>>]ŲޒvME\?p|uɓGg}>_eM(hC& 6+ !gf*c -vkJdXԨBGaؑ7vP4kaqa?\Gbh ,}zf^yH$Ux5lTA')푡͂eE *(ֽM">~% X2ʺ1G@NPȄQ"!D`bD$A2/г 7yl~C"e@|X0*ȆQO1|#4Wv95LhRZMԕE"_e#9$gF&$d8vWg~{[4lmﺫWBLa]b>r6k#2s-Ŋ,×^^?V|t߯Dx<<s!"Ue`z4)V-dx%BstVI9ICQX6d$S F 4FhjʌC,L4cdm(jF"JR=idqB2KJRH1 ,A H R)xz{y@1ױ.~*l؝>V;-3Zf?eiA\bvO)w}LL] PإH9'CN'(af4̐1Z 0Ta H$  ƬIrY] m"&퍵:d0!$.yĞh?LQ-}X &-{䀽J%ndr,J'Pqh4ͲX_Oh$`0f]x%V?, i:cqƄd.UJ$!h83o<A~/\kwGagPdm#YE(F^B$OQvx Z(w,N2% ߮l=V;Dz/oj.z`a*%d-Vk]̔K9d80ĚpmJ|?oU=%vLB'#ѲXbJ!R!q؎U~`Jh|9DA Eq0I=0 I rb{4(PXr龫vjIޞ; n;wGw]{ދ}}t,q&47w\oWݳ'u(}{s]z:}j(zrw}^@4{/+6o@,/n@Kqv}jwkkx5:y-t63ӧg>1)QBϼqt2Gl(vm{]9J]p'tw.xtokeӓپ{:op}uA{$q>ͷvc$UiG"z7{: /cS6ku7޳6;&Ҭ _g>ڳz{<^97uwwu_|yoZy{{g>۶s׷z&/_wm]Ѫ1-ׁoچeT۵uA\o=zD{4-*umŬ'M caB^ (־⥛ {26Ys}R}h'U}C@}}4+Cč>@^uNڝYwb%5{fVـzJ'@ 7h;IZa&`0[ݪD_9Ys{OmO,yƒcBݚ,m,()Tڽn@zuVt>쀏s7s<+}{k>wз v Iz-q@RT+ް2oFf36"rajzLwwfؐ<:+XգzCQ ۮiMzp۽#u C2hl4 =\یd>vK^ON}2>o;o-k١wvQ:>7`62mƀ];eXizׯ;*ZJ 2tWx;뽞mbsЂfKl(ЯJ%s<=^Jh @i ЦjmMjz4#@ "h yMxj3)i0 a1d& bi5$$#A@Shʞ⚞e=OT#(oI<ѧ4&A=#0AiMz&CF1ʂQDA&jd(jH S@jz 64 )) @Oa LOCFSSѤ= {R=L h=@&0*oJy)RSު~TSS~=C4#Nn6*( n YYyЧ ]&Yh㲮y/7XULԓUUPߠQCZ*((("ib` nPLhhZI&h)QAH $ٞ =WЙEE|ƏɊl8AH(YP0 y???^ffd=Iuf.Ld:oQYqehFL֦j d5qFoYDeFEwZu3'DVj"5Y^ehVLَ%9UުfPaS9q$SDT-znuq˩qDkP;A[ H@ 0_t]8}Sjz٦ 5QQNkcnΪtk.6#Eܸ&naoseշz BTUˍ\Jѕrꭄ̺ݗzdFt^;̗fN.\7Y$L`Tij.˘ewإ 1 ޯzs3F]s6NtNtNb#NtNtdֵpp᜗%(+Rd"?vbXJ%T1xNBUZQ(E"īD)`iPZDR`]:DbA;xpL%r T? Jё ǤgTk`*PJ2LQ1D% @C@0῁ % *!Y*@ɝ6``3 ؅5--8#M4ݺ@5 ff Kn&|Ԅd*H}jj8YWUr@:T{(_/5fz Z9hY\і˺ڼ 6lQ7rxnAHtj uSuj7yi6FզKiCjF={wx}!`q?kNwZ'M 4HRs0Ј&YO֚/j $y! QAx]lmtf y Я^hCc1"D@ )%,ɟk8ֈ\c;)] Bݦ^C;ۢ^YpI,\K41ɎTgCͱI a>1p׆Ү~#'{dnyivrgvqS7jDDѦ>iM'{vc')~vX}˞9֜ow\_nf&U՘gp{-5ȤtPS KKQRb EЕ<`h 9|y_IHm62j|2F7x.7\.< &C  #@Cۦ|fJOc DITeE.h,!&!'NI $BbHZj)h"B':AAv)&H DI>.$/gS@!" 7yih]'AxCQ@頨*7j/?MF?QG_Y^?M ZE KoNٻ ".*-:ChXеlZZVՈ+jQuuBk&K84ВDԸ0Rw}m xڸ`^R}T Wgl UTT^IW0gNq>Ҫڪ#+{ƪ3jKW|sU|ΌNdž*cjɽwG|Pqv֪Ncdh!rdRu%Q !$2BB\d9|A/-<ILoOfz|tf8>i.('P]oa/ 4&<e|wp푸^{0][d5PAeHf?^R=7hVNaFQ5Ƭ6E;ޠMETܛ"8a,S@LA3V#W8f[:OeTV6vSޠ {{7mtd#{i 4i F1,~QS7C)=l0ԟtwE7zTUXaGO-]HԞT'I A ؍OxNJt~[C%6zktlGSI:z:ON_7"_}3ќL&0yc4 lyFtAE[_|j>`PC5``M \zaF9  XHfIi*'(̺B+u=\.9qn]3ֆnrW'Rg9Hdēkʆ23%m6]4jd֮&ǐ-e* Wk\xtS'27 _gC~-0{)gRa{$H ~Pc󏞢5cD(S2~jAf򓅓41i~Of+<~#5f6z>ٚRBN!!N܇<<7?[SNOї'R,'1 Ujvso/ 9RMGUQM,q*'?r#:'}/))GMkjVJ ZL#fAX$gxLO'w<)wzӪNۧɥ~dz˟>NWv\) ߯O͛Ӗ;)n?;7_l={Hހp"MĽGwvEq̵>=CHgE>E~'LgsvW.Rf8{U9yK>\707lǜNk>A7K,Hl!]lŵlM(dg(I%Є: YcR& tm7&%޼[TS۷N/޹>7Q<[|9E=?_S5: 4smGC+亊~{ VoiR,)(+pcO9ŒIx3?sտ MFɪA$.JIInKoIJ8+ش%վY{O$ϻy)?sx8j]܀@i~])cs}>/Z&M~<{؏u!,66)N4,{K3iVo~oV>^-۞_w.֭o-RT7^Q==]OS,h2݀yM& 7}7:)x?gˮOUTKi1Y_*z_u C驾!9jUyILv>ۓ0ųDz8n#. 0c>icql?"SvO+L葁 2!>3Gq,=Q1B:sܐҫk6!?`9>z-5]'gwqe{^pP?qç6!J@6!/tN;mtROU1y8ļ5gIrIeV*Bé<Sm7(ǁ®{Fݔn]6mRCĜ3D:}@4r>w/lw/L1nV3U'7Kt ؄2CtPQM,nI AIEQH4DP$BQW_z=uCCMR;O7-;pƌ"zr`}#uq70-h [ 3!AscM;lPf"_A7n]Z.*f$ܑ e+Phz7QCIGttObB4~^do[HʐK0<`&RnGxbX14zM0k㟵|204MCU9S*-gc:tLlE:i@0*Ў`Y$DIQ4ŧM%U Xuh:!|q (_m};15hNO'>lQ^#L'UvbD R2bpd$vDk! 0kw!']EWj b*-QUlb\6L\cMSA@b'l4Ҕb"hh*ֈ"B)dY"():uD< 'ơ7d<:rV'|$4TE۶i\ "OɃVY\z2 2o:av&Im, D&C j.v5`㨦9jع^ήz/_<`ְsAJRLb@uGLTx;;~Ç8Wiy523c,_6白ɚ5ؕB\>0ޒ_;H e@ʮ0IjScfL`;C7Uy=ϞB-ozaf;5iӠvus|p掺\>9߁'44 'h'lM*%]1Om ::XBw:3}8\YQVZ[9]RW|닋-U_jۙ2p4Nchzrp Յ_3O:^.:i}ʥ,! a@DR! H10hE$Na(ސi F⍔ 5]9oSzt>S)lLD잤: >&0 =-}~ޣ߯f3<=9p]%)@I#0i@)0D2\ 3$`cU*l`*4i M$o)v 4-<9$H^ъÚg>S}b(rNt1ԭ냎rZz|֦әkS q9Nv^_y4PTGT [Ruqaו'2!_T=F od1)HtN*d[w#%\eqT091f﹎ PD269s4$7LoB^R/wmw<8@v>':ihjhV3 hOd( Z(!MJ݆ d iMQM1-$EkA5)V%(P&ah(`b@ D(P)a3A8cd$;MÒj|(z[u)zoLNL-2Do>c9lw=v$Q: Hs WRGݙ&30CHLCRȔ!H4E!JكǼ;;.ݛ$~.^(v*ɢ2h oAɌBH__"(H* SQBu 3g9}HCOv>{.Ą"Z\}xJKT}#}>==wi#ʑ 2A 壒'f]̙DUMCIT0H}UR_CI!XHL IZqw8 <dUM%pQh(B'c ~]imE)O%Mi ~㵳͠FMQ%Ru6ozs0Ixa? ۳J*w  to?+:ͲΏYQaeNp ~ d8B"@ +)BzA Ce &Z "|) YXE`kDlb$2I"H_Z`0~/m#2s;kd~_֋DK1! P4B~Nv)) dI3BI7MMJDMCkbO#D*J$BdD@IdKˀ(0 *8Oփ  EEArD$A E#kHDKy>7L:a3eoOgO` n~)=\˛}˻o8i ~}$BI nvҁdW  On` O UDJ/N8""H2PX('**{B!aE,F\ gi ($q4,P0İ)G0E2<P zxs_X޾I#u=nۧ-OOy#txr<<:y|'%!U|=37?_sDOc95f2<:S5Mx9$+#|~^˷A54|q2gz/wh#bv~>4 /y؁[#o9yQܑOh;?ʊMOGPA}9*?!+{A^:AT8f((e@` | @{gVۻSM˗k7A\mq-ϮlJ6 =!C}W]ؚ; j#.lWcұז&ì:p}$5fl{FQZׂ-l> ロADѺn,aȱ2.Iksx.;5ѐ#$ol|{;X\Ku^$5~fQCcs\*iWD96=zd+_?Mٍ@_ Aá=7H]n~\B|e^@90ݻj ,Ajӳנrw>~}+q`$@}\ԁiZ{fA'BpM ])`=ɿ) }~Y5}}'߂9>q5Os:n!w/59 L 8q48o?7ͻ?iyoz٬zZeg.p(<u2:wg&@Wfսoz͎4PX; %J!Q-!VǺA * eg*,dl:` q8`4r@ˌȘ~׽ n'*xx"<bEO͠Ưa8C` ,0Dt.*RhJ>0t4yN?xIǿ2>ºJBs4#lK^eN9&@ $SQ!7kl~ ) '@& .0Fd.dH"Lj.o j-*dty'-$-DEDt*i"@<qv@vJ㜡Pcʆ hyljnO"0_Cj;Ys>5v5FND%kZ5?%X""#Fa4hdXF!J J hՃ~|b`%A D$ 4C|D+EQE 01  CE@0lbXLST '~;F{#$DRz!}&hCA M~GyӑUРA† ")U&B&HiVqI!\ d>ͅ2(w ,۲1 EAH" ‚t>O|#iu$ ~oُ=xR C2@Ƥ7E:F^n/Tf&/i;#ڍTR{ aWHd변p9L! uPkoX '򘉨G>|K.8J<s3ܡA91Jnryj<,yD{ct DKgRU 1@1khp{ӻޤn 36 ݵ' ݙ!MډA1U9kGA}KwSL9F??o[/iQ4§0(.ɿ_Owu II&;*$͵z# :NLc. i30'Q}m,|>5`2I!$Ğq0wUR+@JښN8d'&zNB>G!ݤ# 7!iuT^F ;y#z^{07llvZȂ ı/,LoV,n +#ҰvЃffY3L-/Rn~7iѸ}?EkGBI_zQ?YZrB;WOjˊ[lWGtg*H=Y9~oMO1QJ{~ᾘpۖ2/|>Lu^ڤ9$F|lz{fCwKf>͏lUHH(=[;{?&HlCLӉF;V.r,b;hQg|NN#_XHS}@M1r|6_n?8ˠ)gzA*돒ŝ^tgIBD N5Ӷ{\FԐ /mOZ$Gli$3~$=Ѷ08)m= l$ծs45(C1Y:ǮctrQc8S9Pq*֗$ VN.3wylݿ7@_ :'؄!UH&+,TIhs0O񪪿Ƙ'!*$䷯+o{T5SrAx /݋lɽ8Tݩg=9f͇WT.P,s;DAAɇO+få[Zr>z_Vղd6(f&I ,J 醘f2ts7=#LS] cp (*TxUc~2r#4Ban`.j42[Pq3ܜxx_Vm(tmG\pP2>:vI؂{m jΕ,;ylȷxӷp];={DO 1!\8e)a,JGD·,As߂ meA7fnH9P:OD6L@pCN/׃N~F^i: ,D{:ͥ6F:1oG8 BzGǴѯ I D14Ӕt 7&Ѫ} b6Ög-6]XV ufYQi4p¼jI狶vrIA `ѭiс]~~M Ypztuor̫(~O 6QFWna~SD|z78}e]iN5#6n4O1^I9gw PH*AUBTBH+$D !DBR  D@HA#J 55PPP"L" 4@)MM"ЋH  4 JP4 R R ,@#Rm?{h``]xzpk}6ƙˆ|ÞOt& ョZk4dh5GMnFTj&@i luW @:$'1_duR'{M4m6q]`*gn3:U$#vbm/AS>.nۮvyqP ێu }}S)tIMȵ D+z"h6_7ަ4uzӮhDdئE*J=(6~˖HTP!)9lLդ߉-0j\B6Ho:f*ăL%4svj' 0Blv{nMҟ|mL=?_ COd"d㔨L r 5eM6Ǿ<#~Z~_a0Dï'<*YC 74 C$BZ<迶O;gg+h3Lעg%aؼ;I3yJFT'hKͧ_D_|DwS?k͸5?&i‚U"UsngjfL؜cBwslBK\z)ݿЛ}>#9AQdoV⯤F+7SfsZ|h ݍScA0MRTN"6'F]Lq4kocXaq~ֆG.^vġWF;L~0d`?Kj8y?NO3Cv3:&|vzoh?J00sL|! ;ӧQlS 3|:;M|y:vLjlncnL%N ΩU߬``&IuMӵT(u2CM?~1MA̧)d,uf`gw %%.c%B镻+ND)S,mw£uѫϖݻmojj69 Rry@?,Az{/ۦ\x}Qo:/-{OX>o_7L6;y,Q+;@n%1sIOA?:Q|։^&u`fdؒ8=*Wk;\'/1VՑ5651Y'N ];%ݳI}[Y%&s#sMo=2c)䵤VfK)s+#C?yP'wn ,L!;cXn{Ssi&nM->1$ɛ9.ƪRsunqwSGFܐb8I~𜦞Us%ëb3CjiNa_"8 =Ί䜦:KY׺b[kuuX-aV mZeJ׷O/~b ?]G$uynA!1i~A-}۝f /_P -чͽB3a@Ĥ>x"F)āB CDªn{ZzAWl{ZYxF+:F#]+C/+1ţ!:42fݰ4?38|mo; jjeƻ04kOq)ݴw k%V-.RT=ܾWc#,>}/﹚zm>a}٪]?[H%Dm1Lz9 [egGtRmu' 3=ufYz䉬О$0ǜ0JV}2c8L7@tD^gNޭ>Q_ ;ہH >7;IOŶc 0c?ix^ eFc &^ ymǴtMu>ς0>-]R?"v7 Ll"H 8~;*]څ08LC_ ]-L˹ΐhmN`/h(e+_Spf&oa-tu΍B'u#&$%(*'vQ"o3=^ޒE@߂ߏ)t龄RTUT7(?| GW4|O^* &QUpqXb5I0#tGAݻ@ Q~l}WoL"@(;5<T,? $HI$I-Iy ٢B6m8ڡuyFlwB C`Zw>"I;##15%v;cG &6 ou\czBbf9쌷<{4볷{=?^l]pxhPpད(^ݧG&PnGa#6ޡ>ᙀCy 奊a٭RZ!TpRA .~\;|sNP"6d6D,+0K\VqqlMuL^_Kݮ.KxZ׏b""(P߃>;B-C#h4yC e؍!U{S30.T}e_wd<4`x7s 2BU{')tvtx?g/qs~;yk,c c6ccc6ccc" ,MꇟߠKh7?yU<8(#PA[mqEC- %FHOf$Eyx<;h陡CvuȆg -|s\g0M >C)h1EXF7s`3x ҰLV=s`< Svhqoހ&h!= rTD!@IH~h!1Jy*/ -jE98GۉTovpo{ :2'dݬM|<-`q$117f,ހ.wC !jP @s1307n + LλY~R]χ|Xf3HBgǓr~vUvq4&zu!}}qAU~Î١8@ܱiP5fXBh,~O A64J`#m!7,pry>L/ N&}x' u:&tò{l*#}m5kǿ5 4VwݾWmd4rBaBfջjh˒&UdLT pXE2mfg'I38[s >oy!Dj\HItrt"bwe0nR%4R**iDF.&RT_C u(M%Sm ls!d4Q~)LM-SbZSHԜaFaa.S KZt~}j/)J'jaBѳws \105fQSyX6mSN{6RI3*Oa6Q5ib**.`DTLGnuHbclmfllDza HдJ"(Q.*p)Ѭa(U7DSE)KM_eofNJߨ.OKl"fe ]AѨ(aRP%Vষ|VHDdN: H֝ *oϗ lc2z3}as(X͆b.akFj*****.EEE 569)1dD ykd8 HE#{hcǒ-g" 1-/Ii"ܨ uڒl1U 5¼ae1&n %6puN ڢSkQc"bM(đb"":= A{.)f."Y^m]m'LLDE8b<"Ili|qEs>c:AN _BmPEJ8, a}G%"***UUUUUUUQTETEDTAIj"E}s@9-D8Ye7fΉA0!0wu$9&bheΝfۀ AabfMRܙ.C.JˮuI%߆g.Ł"<̉TuTU}sl(k+ *,s}/e7?+ }m͛ёaw70z޶uY{ʹh(>[a"IwuK%Ì஦8n)[p r8v&g;k/֔Ǚ ս5.W+>6'5Z܍[^]GzV55kS/:Ϸ0[`=͒GIRdO({^.i(Ękiҷn÷j6s_{4&b?g^ڵݑ&aG8|tw3};7=q-61*I2Mk|9>?U|* 5ZK,?v(h91Х$^;kU>qj e٪U گ& '+uz<&㬯;~B@O84p1q,)ywݲqwO8b] FM6x^/5/]r]9ǟMF ">R޿d>$2@tЧf6Ahvz"Ղ>7*Ì駛\fbm '~6!PM'v`>←+͝c}W눂>2&!;`OqGh_M$ D'щE^!.߈Ciksz?XIB_q<=soئrJ:S~$bfmb QLճ*e␛-I:!eÊA?騜ڄYWCcB(3pI5Re84@L#Q8@jMHIURqQȆn=MˈT,+7亩0yhdК|$:5QQ~iMJU_.J>kZ~y՞lxTҰi|ن4n ٯUk!b}Itok61ykk8~ݛcؕ_&յ]nHםmEc֠3Pb_Ҹ(ŗކږ+5"^%_;/uq[JZg\i <rJm-Wu֢yf.3J6; VE5{wf;5E6?Z?ԖYB:οk\4q|'=յq_7y |zrs9XLt;(lYF =7NΗQvssjeRbayb]iCnotTi#MS;<o՘,pZJz;4Z^iW{EADc-nZyia Q`ߺɄPC&69evx {df[rl=s+vdEƒe y"lf` ዗.g^cmhrKj|&z捻V!f;~wK9cDXVs|v/'R2 C3+lA (CG7\Eqw[fQ~F"1m$Y06PXR72`26[p9'{3jiXۦ<MZ_~|)WG,w _ϊ8ێ_)^qt#3wE ۓA$a+ ᠢ[/ mSg=vfsi KDD\ݡhrR]v<[iZrylTnfƖ=]qAB^A"gZ$4HUAr3ŒpFvFipCL4bnZmɟܮ(XѶ(dKM"i| _- -M4k/ F`leXg MQ`&@ݤتW#Vf6fva\Yf`{~w;U≬*HA0mr{vEdLz 8್_l p%KT;lCC˱viLW8 ||HkCX6"Mbr:aQI Lƨ!| oɠY:%Qݫ+dJ&ZjmMLJ!{d ͟QgKǙқ G4Fjުa:wZ7,"N70>jJB \dk*AsiYb})}숛 + 9=eyưYq5ݫ3ZBe 9܏Z\N`V +yOv#)EX B@~ߞ3pkfJӂTjfgyç6b/ayfjr#qu[I&Cv!VBX#*>84 !]2ETiK*9J%d|}F C$={N5G2[qRI3q[ŜS:Zy ﳣ:JACQ6 '?% q551,jx9d<`\O!'ev;'x‹pdq_ʣ˿MlL]E i晲nF.:~;=g!>& j02ys }Lc=0[G7չkgYכJY*olu?6)9#&9J0Q-MJJfc62j FhLe5grgL5bޘZz[h?WM-!/JtM^7J)GBj$y6ӡ&W~* h ~O)`ܬ$mg+i=f>mv l5Q̗E/,"&9j$?mwiV)мTevtlC/&=?}G,:ɪ)m٥t=a35-q4 j8VZ3&NN{roUou 3;OT Qr ͔YfH{QAUu[1q%5 E;Gd2lw'~xckŊjOM g桑HW3$/!f N\ KPD_ȃ H [~ mLАGa*`=&ָQBjLcr \-}<&Hg*oMMFBN~(!V2?&FFkR%B> -YRO &f`')qg惄M~>7SL:a6b=-Ʈp0c)ЎWTZUin}%&.ۛ%q0W[Eo~g[.jh:h߃&/ V-?NC4Òj$K{Ǔ(XAqzjM%?|a-0%qESxT+o 3s*]ݤdWۍD h,e Y}h$`weޣgnkI6'=ydW5{wǂf.^_k|uG;HB&9ǪoV襵,ASN>ﵶ̿^eʆ:cg^yu3Ę gwlxXʐ̌\ VkSY["oL*L7>q3Z(#Ϟ^|۹i+9;HrsI#eL\ksR?\'ݝqߪ]1(muwH4Ƙ %[/,+t6 Z1#w[[N7# s [bfJ϶lOӃ3d fMθsn+dBBbqKaE}v9B"qLɎ9'UN>f(f`&dsr%_D6ӛ3ԡ"D7{B+)"o = 9n/Xva Ǽ"/}堍4HAxX8;w#2/ź(RP'u[P")7N!Q '2w#WʨyA9FJv֙L:Btr"`>Y<2 ]qJu[4ήnWlς|G0=b̲CcN`+FgfCo*=Jm-']2uN0:x| /(loDQlk#lK{ YQV9N D^=%o ٲ19aFS[׌93䬇RsKk5aiy'hCJa>҃xY((m(zI4h=s0r&dX6imm6 Y/˘`&M }MZ]kc;:B]%^I2/W9,WZ}9hm*M'>-&`T_LɵkѺZkٛ v2PcǦe%vtq ܶX1ᣘHxNb0}2MoeǾX!i7B~OuL8ѨY#oq| m\/Awn4-aY7NOZPhq!\۝s-X&[3el^;WܓN fsQZ9@{ydբ0>3Jlуj$^wҍMIdH4Vl:b<2Ny\ǟ6mlBI 90bٜ㲈/f[n)7 %}CQz>AF9-7.ʼn%mE*uu<2e̋OݳwfQR,(szd4ma%c6K( 2 8ϟzG޾KaP;I ]Ox~Yuהt,ݲxT2-MR sap>:AmY쮸ur|M~1hA MdLkS$/S'W3<=IL3oۻ¤;Tj,ZyJITX5Il֜:͸ TeFɸ%cٵ BsY|3Uם,w dk,}*Zg. .jrPC`y%EήE)MRTL.aDOfdE1D9,D1c%lvzG [9i|j Nl7ŝ\@v2€ n8s΋p A,Ua*)g9՞dN8{^zhēʚJ;vHLˊK;"$kz#;XE@΍8t&]g)ő3sZ]`A7Jz{?*k!\ߟߙt>{ 62x󜰛G}iv5J3Jaj?<~BxXeY Ųʓ^ry~rM1׀Y'7jփq 54Mbí` xREi7kSWFY> eꥠ2sJ߭OxxTdm~o]{p@+2ZÐf*ɰDqilm⇒|?ۮaAk)C J͇ (>_ .rmZ3:R)qh&ىA͑Ě5WOu=XV Cѽ)3EmغѴxzJ$f_ހ]6ɏJfySgס)S?>ibG1kϰpj`cۈ<`D58i9RL7|wÌsx~:^]m|%/ZP`!p& &j-N4q c]Efu(ȥRv7ڬ8rT+_1uliqn21c)@ܑA0w *hrR9JD<Ž3df4urC>H Ř@hz3̅ ;M$Ilj,Hm6Y,&69A͹d&4Jzn4,QM|!$MF:{4uC|I2fAm7̈ *k7.fGWc"~kY8jgGaMk9 xb8y'=B6ݮn ?cLl A,I$|{= d=Lb,6mlH$Y[KF F dɲ8IGppw#qVys'L2*a9Ϳ21&:fCtCz\P(w혚uVkюuL!M3dRG%:Vg6>tc2h pݱxE4|"8XD3q>G-Gmr> 1TO~|C%ofjuzLKWMeU z-7bОuN1{Ϭ^C3eZNl W)~{BM#MS.c0&}BOڟhP$0wAy`x݌dgD6HW=shg1]Ņ/ndLH'qZD%8#si^IcwG럧{ٹiڮǧ ;> J&/Y85vƙ cdhG 1hQv1mQ CT ˯ A+Cy!!ߞ&GDAĭ'2j></͘ t(sj=VsUdy~P[20c!KZer=xo=r\1 D4tz9%ېbR б1Ba!w9lL; U_VaQ?65}okSBMOtA7F/˟.KA X:;Zv\Gfv ^ɲWSL"SqݧwZ01]3ӥ iײ RcqO8(hnuz3vO%&VҏeYlՈ`&ˇq4%=)I#,,{8J^G+}7;t pKod Roj ^MCMHfRBLgyz apxn3bNXrcnms@% #(o㶻t뎙2I2xFPFd6qCe*̓ZШ,1 xVvS8HevWR 6omA6U)jRحvw`hFh+7,Ilh`Q|[ ?gyu s^vA8aa,gmQU?)&bK'a2ş=&V1:_4Nn)~܋,:x/4okۄAáQ鼲i7wNV^rM {|qa36 aLAts[>ð~Wэy}elC }պNܫ {c|9@1)HRG'"KȗףABHBa"lVrxX$zU%j1sAt+|ٛ$7h -\VX3|J&⻉#nC_8++/y)uώ㗗E;9QKNpΑtyw]̝nC\^dƴDO'$eɭ^j>k1 ,gXzgSr1=8 z{yJO8'}Bw[&Y5|1Q蛢XM! Prm㉝8Q9㞹o}ɤƦuq^GϾm]ך\HTr҈S>)ChR!n5GF%בiCZq )O'G;@{nὒָsΫDL7݈! 3~U+ tZff' BLs|kgjL<,I)ɝɾ7]ʍz^{]Ɛb^lFie3y3;7yR1a !y LʔZfs#sh\ܭBVU<œ]Z<ݖ3Ρ)VTkZ9}D41@|Nqo73f洱u3DJ-RfSzšC  |@TI$|<'$,a8+in2 0.~ 84L\%^c'5U^fj*_ jٰz4z;[_q0Jf.j;Y2VƵ%wAbbpk*MdW9T4L'ۡG,佢>z7GS;qe;Ih9(,1:Cm- ɐ"Zd9Lej=ÃW)r揓Tj{㣣X9~8gf`JW4%쒯 a{(-[m9I>%#cshpCImCN zY6tdXR I$a0OJSrI&4wdCp{сQR M1lj9P4**Ԩʒ /< fiZzAy7&.^1VvuL MZ~')o]p J z/ڨsjz>P+Yg3nu=w+)Lh'jCE%|nA{'6[VU9hVjیk# Jy}t1hgYq5T;"%'Vk[P A'7G2vjX}`fp^{I3VE6u#_~3>$PȜng8G3yp/7eU'XC@T3hLN9ns|r &]ٶm-pzvƒ o֍cvͦIC':$ZMz^ۗimhfc2`HAc?F{8xR'TAI_ZtMc8EOs0$=|t:SiiAGطm?\ry+?ma{a1-9~$wjՋ z(UYRY7Lևp\z5VRކZU_s^qѱ{Uыe#[T.mי?3 dtVb)j"S-|KRKnw/2[^N#ӈ!XxfY|=қyѳ, }lo}2e_]%q\2VvV/"XtJ '.ŔLԕ~,*#:U:cPqQ쩢f jJrK:AY3>3.r daw@z71ccDriu\I@[L+>ط)w0尺F`>*%BhŒ! 5SRRܩ7cϩs\];Itk|{Y +J+1 9 6ܘ+ɜv۰[go^kh*oC=CCyO D52_cϦ3%&_iN6Y47wNOu!H+㗜)24vΓeJfҵ{T|[.v;g%ϷU4ZqH:1=G9H*% m8pCjD|;{G`&0j'o=քmsfE幌c|с(D} 5$KPnI`~z,,ͷ˧g͵R ʥDvI|ODWɓ6ճyq +VoTB},QvVj4_%d"aMLbrѥϱ_KwBZG4 u& c 1"Gc]:(ЄKJO 4bk04'm:C/H_+y)N,{=JgUQI9W5vvz~*DCM`#~[070Ti\'s$;ރBM*X,7duoّ^HO8K,E^ 'NMPю71&^LC }6IX%>g^^ a'hDreNz<~q.c$#SEQ}U at5i{D?Tx})h'7-MD:2 9ckR7׸'z:sJ!\tu+1b"rft5[_R< ;eR/CڍӮ&߸?; ن%M J#ÎKG\HHG(2({# > LDRT?,ICH1(?SBJ.䖑BGN򤊝%%m? @zB#Jr@?@%?7FU9( (9 UpлJ:A>OX҂D0oth C@`a0B#(^Mۀ-rD Ep%WʱI>eC! O<\ 'JL? b h *S=)p>HCZpoO |K5;~*?~h4knSOb{vCp?n4Y~N:D}w/C*7ܢR ~Dk6g\JKxg (lzX2~fId"ϗ)p%A%o}iOx# )A;afgk]+\ laH.BfsE89LK6d:!(Lp$],l2C={ZuW׵xNkZ]_x.x"}3tD(L[v)pAwbf7ͨ0}%L>qشР`c$8jY^ll: my$d LɁ.nʗM0Bg$ !pBe;OH"hSc["n$mM5n*BfEBpx#Fyn Π?@碈txLif.M>`]snʐ`9,.IMm.v!^pw~08'?2L3泱ݨ&v)96M?HE^D9#NI$Z|?c%juubq[|qP :b4?l+ .(1݋w87h'ew: c&6Mhu'dz~} Q _."jԙmjC\؉w?Uy/=^ 7[w>SΩzN۟{?{f݈.Kw^sl/vXϼ!fksZjy/A\?f4L) LJ Q$D' e"N SSPEJtP3:(mjW(;#|fɭsiͦ"')gC_\)mZ]Z(Kz7t 9&eNTxxvCu䗚D^YjTm؈,8ug.TB81Jw-nsSfbmYyx+l;?o'5?Ȗ}ߑsІH&q|ڣF@&J$I@?)Lc3@ ȯo6xeyݿk>ͥ = EpE$ƜH``mbA,G?E13)AD'v!>G1"(N).Q!=||k''SըݹΗM:qm^4{v_ #JrT؄L!Aэ{_ӣ`m3ptzC/Qޜgσ^"Jqmlk ?ώD/^κAKI73a AM~l Rl4 T)G_drfmҼ ԴsWo<v }IQ"$ Rd)H?%)AzgnP((sĝe sPGö^nȞ2y*P *Msh 8@{"LXmH* )h(c`O)Crj0Ͽ9Z(229Ad7Kĥ<8C?R<D3- |M?o77M B/2'AyI# "fk.\?)O|tFơYP/2i}JKt H*Bu 'I")^&X&brg3tA=tIǐΛbe< c߻۔ Pҩ4?$~6x ͚!+0I3盒{=-|k0:cj tKo 3| \$!$!(>&* &M@L \4# /1)ZFH~J$If")iV`jb$!eT UV*(i))BRi*%ijj)h*EJjfJbYj &JBFZj Kq "{ 'tĂ9ɾTV6dh G1|A >BAT)N;%@Б&0(.@t*3eퟘ=0(2Ђ!-= ( "PӲp:O&F HA5+&B s)"sr@V &"C@/>R*q0=fQ"fh|,~-vEK-E/@ł_ɋ0dO1ٷ ~&7 ?" 3ky} {RQDR%L19VяAH aF:6sA (9{Q52pq"0654y}]?ۍLKLxR lt_)`0{ fm-nL&E#ZGR!~(k7FM هd79!d&o'oyI\{cc6LA2SERneT8@OoM'.Mņ03 #_yDd  C_/-p}߷t%}߫"珌y?Q6T8B]N囇a4poPr έMB뎪gLB5~ED>u96=[:_39zcP$'m#B31Fu ?(H; ŜRDRWΦ&d!`l1Nέ俍*>?A>>%e⚇7wnTᬺa9|_yH<2a8ժ8GͶ2Qi3%y"TTDƍ#s4-?0?hϚZ#xyyockZ[#sG@q!ylc,ٶz^khc8])u!ВfGtRKcAc6Ic$ՔAH<ƕ-O\S㓃Ś~3B0Ս0` ~4(.!; AkL@SU32b2PD ?ڧI^ᯝ7_?wzxS9<X=b=!2BJA]~a]1վM5J7;)YϫWw{<_=XY`޹TR0IMW޽R|pskhqM&wL=R2Bo4$A6x!(o=!PU1T vgi ̵e^FU+?iJbf4Q1]_N$n.C7]g "ώ:ק73}<~J[ }辄JLj} `@;A} *@-s (/FoG-|L– :RNSpt\iC1'mg>NJvc4m c?/ގ\K>y)86g6 lXKh(up(xČ:= CYՄHJ(P(ĈN[NçuBpQ-Hsp6 4Zgpo%@hLp;vuU0q{ l |?36C[?J >ZfV:$5Ljzڭ6τm9_Vꑱ-l/㞎pn ٹCČ1ZToMFzKMdfmU7~SOԮgIRx 3lIί.YT^+kfӺyt=jpj{7=:7ilX呐e4dDFOg"t١* T6/ N`>[g%l1Eˈn׬k=V~ټK|8g:9j-iQ{E&f%#pDCgw=՟< )̓I[zpbb3>+HÃW`5r=w~o)4}M}oX=30!) !  =gŏv:z"M{ /o3/ߓ1.3l$̫N<#tk={8edL ef 4j/鱰)iFcT@CTHI7#a(qO\NhΆ7Y5&Xu yg[&H7cۆݥ3@pYK'1Aq0[ A (e4rs-y֪R(%#5m/ 6DO' Ao)Ӻ[bfRً#A` 3iwn!-HYG$Xڡ鑘Y!{ $ aN6}ن`%o6w&}Cqf]z2nb4&L?>M/0z3clߞ˰<-{~u.ι~ڥSH!؅GnA|^ٙHN`WݢP'׎pͰ ∃u+lbkQ$~=dyy}}sL&rH[DV70^5Bmx#ȀI2~;=j3YOԴP1w~J|v\ di(\`0[hhVw )(&,ֳ3ř'lCg}٬+mg6jdjxSL޳#*>>eKsKρV4sxtj l@!2lg d.>ޏ Tt!J??F1!P(`0qv?A B\)!F:hDpP >|{ ;`DR~}?'3_ y¤>/TP :~ ?׏_OJz3CNyfqozֳs\wۈQu_}gw玻޴4P? }ARE]'2hz& /g#/';vQO$dB)[_3e"zn"o}plґt09ie'?P6B8å.檪I ${+]]]]]Vwz3"}fS@"xCf &"L)%Øwgi?q֖H`8tYrf;RKBBHJ>(]qnyTtt؉џp6[&l@L0Ceg1k,ΑGcםFDn?(Žfxi_[=J )"0Nja`*Phi`c QM,rДak`Ȟx`i-q>ʚccu}y/LGHo6&ՔڰRՄذ&Ձڰ;VCjmYHR!$48Ϗ;6Xbŋ.\rJO'{ŋ,Xb˗.\0}ͿD87lRs'<'l*k\88TE4SMST5MTH/AdFU% yۃ@჊i["yctqzz^o+zWÿN靷@y"W V| 9b`l7q&3"ӺESQCwn,]ĭ&BKk6RuHJP0pϰI >>|Uޔ@ܶ$,SFhHg:cde8nCB'l-A4^7d !Fcns>)'>7o?ek ])ғz?'+4sa I)V"kG9J`ߎsjiKC+eAJ c)( YnTơCDRYoZ m¤SigNU%'-⺱6*c&c~yή!Wg~B~;ŕ =V" ȁ dB[dQ~}~캔WO4]e|M2 ;Z壩y"6G fBKo"hJPbj^fR>=gMۣvR\>vʢ8J^Ji $@& ӻUk\} m&6؄!vCbߑޖ4$$KYIme A d<)| m&68kCLm }u9z i1X=B AO:FLI``-4X@L, Xel2 $̄) <*Z(xv<;”dmX(APG7̳ 6 TG?]]7vǧGtz61$;>rn "9o'$ QSA EV-/&N'$)?y6qq+ T^ccXyiDjMudunzlO;?PGqCJO7u H"V|VM1s~7`؆ˢ@I&. B3zq…U &|78ΎIKfj7|tCQa~R@o{w\m͈x|nIr`  F~0j`;فǕj N>fb*g\L^,3]j:p QDB[򦧦˴!1vwz:_'| &dAl$Cpe'>]PvV/EUi9ti]&m 3aq$e6zku[7̈#3+ar?9cK[fЂso>``wfB[nMtp򐺸_b-ɏ.ÆyؒI{\7L($o7-rz<7#vmqsy ;NzsIG]J'yq+dѰJ6#wTZwTXKN$ɏO9a1 ۞ZltUrlNR:XjWzh&x>I+{7dT'@)!4@h ҘWij^oncGq5|hCߊvj @߮^^8A3z ~/Oi7  ۳a8]=`q=*{=ެCh%9,i f1aOϏNƅv'6kqGѬpw>O~A$L27!mK F&wt͉׈GG&-Y+lFTxw "gN[S$4fn ϴL0&hŖ/H;޵oP$״K^DGA!u$7, .Iju2&!5hHyL^29EkHf!(O}1/k^~VGB*DMf7~6Y94/D:0"N0̭0Y }C!Lts@\K$ I ݎh Q.F]nQ  ;4{)^ގ3ݽVөHʜ6Xņb$ u0 &`|8sq2I$C ,2n".Q2NG*('ą/W1ӳ_qեnylod`H[Fp5 Pja\VU>7G/댚*"j5ןG9xbz?!<9^YX>*j[K 3g`"#kr~4C$ UJ_7tpw(zLÇJjuSQrݧ~mx Ғٺus(,yC^}zGҙR8ѯo(uwK2yf1'rqWo85.U )Q͛sn4 \~^PLӏ9 ֧urJ鮠HW˖ST2tPM@MTk ;S55CJth y"F Xi\V8{S!6d?^tK cg7(WxjP,R/l@TNJ݆{wI'MLUIIHBMӴWyYPGMeN&yg̘Qzds:kPkm~f߇{ງ +^:-7CuF6d/y.:q5v)P D 5l3L<G6gc(8̋dU8$ dӺNwCs2o`ljW42PۋW?qse 7k@j-]![/kWg[ѴL g FGkHsP&33!DR {OD!0Dh 5Q$x hC7+?%g@--k|fuW‘al[#.ve+B\-mTy`uh<͓$Y\ƛh% 8FI'6e2f0d(c.2˽3? CkE wAȁ| x%j5Uո1"֜eʇ&-%5x/9t,;iD:L0I<T 'IfKDǕB4’\FMf4l!=ϡzxx-,E2S3ڍ9 c-kw3\[Ta6 T{?,3'ڮʨ)A_x՘Ԛyo@?̀A. :S2kO Klrۇ̠3; =Y]+Ihq&SZoWwYKBz&D0qHyBGǷKaԎi2Rγ;b~7hsㅊKI` OCsj"Qٌc }Mp$bAWFA X]B29y 6=w0;&4FhczjUjPDm!NLjᑲ$/g`RpЏhѾvɿ"ϚBJm>[ 5$Y| كIFlݭj t6voyO݉%LdNހfʏ9$  ;Zq6pO?(fPh͒Ǭ,>cf*ubKB70j30߼*̽}4}o@SdT0* _ P =N(! DUC?i,cqOer 9H1>>ˮ=]hÄS'#>NBD%ƉOMnUV{%)NPv)j,8Q@SȐ#0ׯ$eoB!L P$48/}|L>H_἗p`:K|mgz0Jb>f.xiBsLcM Pӷw4JoHP&G}05*n6ox`Ha a|;pddlǗ} &d7{~tqějgU|3kmӛ~^6 LN@Ӈ@qF(b̌&p߉q!+]YVDFryiX厾 dI(M$e3A=ܳ7Ca[; ak;PO%N|=X$m"YtASMbKf%6Lâtl] 2wk;Ǝ]``'Jʑ\ *]5=j?ŻeԸ\3RmcR3J$Qwe|oPo>æt|(ptûǻY}âm(raՀeӘe|:0 RѮ3Gۉo*>g95ulqQVlIɴ6kջdȿ3F=6|LPt.diƠB,b$Ák>j 7acqmOy;32n3t2".! <= gɌ ыEBc."DI`U'A{ L7o#oĐoLڬ݃>Ɨjhvvb=H /65^vG)G4A+ ءW:6#õ»í$ RVEj ];l(eL()nL&v  Q]kz-Rb/U'v8*SS ;Gq2!@Dr&;j w,|tO`m^}hjccD)nAU$Q7:9]~`!=OU`actcZja:0緔rEjhx6Ql/:8.:jMXi8ƫorl5[Qf^y#}DRB#Q,eo Nr `iv4%d0tYizhNi4MHKq:Wsvɸnّ7pR'n4 ִX:'?C3 9޻CKgA dH:oM\oן0,d_(| 2DBK$9sr٘E:O9'  Cwxwqo!)n8;9;  +5m0h}l@)?~~Mz߶ )SnOZz<|NܧJYg =у00'1,)iI_y`ۜױ񭛓c J־O$̛ MBON Htʸgn\o*_o' R>([aʎygp*۲9BIL{4ه!e[R8ው(/O~ `qmѺ]ܘa|)'v0v&Jѝ39g={Q`#ld R\^DDedptl˫᫔sbwI<#Qݩ`xL pGHP8d:#0GHP`2ÐV HR% c!/B\;(X 6K7dCEޱzMA.Զ:MȠ~8uA5fy90 e(H1 7^cwpS>FC'G` tb#p$ϘYO'oI8CLTٜE/oA?wQ(HH!>CC5UW box((dOҹ&^DMemWI-=@OQǭ=A}Y{$QXxu97snzg-oSR$SET2^{k0 2rQ pPLT4$PGKR7 9N[@\\Ϫ@a\oc.B0tyq1.[ ٽK G=BÀ Ҹ_ #?ob VOl% BC"m0 }gRsx/޲5gDpA+,E@\RB&INCB0=s"BР"h+Аp/t! ~;}Ft)oMU=4ƞ aC҉I I 1 )QV9NN=r/1k@2M:9- U` ā~_Ba/J"Ew#Jg!'$Dq-O }*^+`'R^=yW޼?OxdA23!\|1ܝш^У(/!@DiiYOXvцB`vdجא>Gu|%$PJv$=gqGIFPnPvBe;qx =8s Ѝ"= H㒄P>4"W9*f%, Z!I*$:U>'rh >&&;''qziÖLI2Ih}r"|GC,QFwMfb?y 7j1&G6}He^e= G̞>Am1'QBxԇ6HnM)ϖKr}$6@P) V aykaJ!ݤA$'lj$un/yMV쩪ʸHG4y1i$@>_('G]%^=q%(k3a˘n z^HgkyZ5ݒg gGxҘoǵޢ:e/:Ni81y+ >76f!pUҘ/O0ĄȤ{sE0'r@HI&H-ھrXؤ(((%<ȹՃ@l=*>Uq)V$ Bb)(=#)L")KCy2 $݆1#Xz@/~S E sDAD%e*e%^p|yprzhMAX#UpmAJEb] ?!="F*( %"A]hL*:֦&@th<:_zU$b,x3a 6~%(ŀ:*D{$+$Hg(MZS{ >JP "$Ob Cҡ=f7wɤШJ|B:A0[=aG~}NMǚ`dyf 2etf|݉ O6jb 4\]AP54 D;ClJݘ>N8YAK&|ÎbP<aC ـ!w ˠ:Ԉ`r֛SQ]w h$$"1|.mUX'YbA]]~Ҍ17w"ַ`JN\Ң'wO $|x72HCɃcKJ[=|}>"?ZCyKi&3б.VmmjcgT*Ddp ncx@t_-0r`y* Dlw9  d˸,Y{" <ھu#.aGy^\F EU/_FOOI_w(j$FJOKPqt~bsi%sC(B8"yryJ0C;f"I7D,5߾.dƥmQ%6^CG@tY(8%KD#^J"x>Gݰv^F`$<Ѕ/S>C%.o@q0hZV:_Oo!QߎǞχ}.!݉;NeP9bJtąc 䃨7)T0Puu=-Pvq D 080Л"!}G8 vT?+ґ8 z0%` YOv;E9#A"u}f"oK`LP@~yN!L^kpp0LV@)΢{xc0%$a%%#o^~Zpܝx` 68,Bq}iv8C!ǹ< L)CC\0^HZ +JG>0ѦBF*|h6CCᏧr |jNz^'A,>dœX8h/oBv};&czlRPA߯d ]KWՂ0Iyė?ŲnEu޾9y|ۏԜ:A]'g>q SxjKp *nB=H<2F'>X-*Re.!+1{Mb $#~.$FzjE} t$N<7kO5,VMTB(j(6 >uвUс?dtzH):BӸh!}fl5 Q\3?Rs`LOSGځl0H*?DtGgt-yU~0 `% @%BFQ>Cx;A8r9haEEށ; _G@viUiK:z ;ECGp>( b^OњSac3`pox<]Ȉ0CqmCȔ<|t}&87Wb~C! ,e2 31e!I phhF&eH AD@Nm>?cb"ӌ1- `yHa/n}y_~l^B4Z:l" :Wd(㌦RHƙ¤ Cy ;5U&AIAvKaP(i&؛9?>h~B@,8޳UOԶ5AQlCOh4TAA]A<.IbC!@CX>jOM0S>89<^:[98S<_lg * *>Mˈ0b&a `3>T4! ̋P3Bm1œ(7}Al<3*pX >I6 $`zJD(y w`I 2>q dzt'":|poܕ 2PwglmvԕuCQΨJ+>]6|BҤF(wN'7jGFUDI/q^r6 8o0^lqNI a/J//0_Gm\9!;%N nDdrgLhU(܏D&Sm/UmLJG\\匊[ l~ 7&\&eW)0?BS pJ&@9m()MqMa:ӘynKÑ*q>(L;~<[;ޣL,4uAԒ20 ޭp56yc=Kԥ/ [M);>A^qP ʘsœIE:EqXdb?^Io{3C 3P! %x!0 ԰@=++.NRAOkتL FԻl$ F4(K!HC! qH"G)XJl1;=Iبz@.稂T}f܈q46W/VH m!m1+~KAc6E@XIa'b7Q ـc|$ f1Ѐ؆ C(&̦к&@Ď4!> Jq<[ = AJ!2½G+]WW3D%*Ku/` '$$#/zi YMG=oV=juP0G% $c.~>~(~9% LDmɖO)!} <~4 ~j\u n$qbһC7\4W $l{#'X_M!Y Pw B<ڢ9h̃\bzCD!Ԃ̓^IWΞsd=_1<ʙ;@x' ='ȧRu)ҞU@CyiFMdY4?G = ؈?SE G5*9Rvo:>. ql*}EqrBiK$#wdR`<;M˰h(òS 9_;fA=e_O^P [JݑZa" ^2= ~S GF 'MMr&3ј2Lt A׹1bd,CP')?XR&̱D; X2^J$SmP]._aM>Ϟ: H"G0(Z`([  G֐hl3;š`6x|sǏ (0 4Äj&>ƺ? ‡'Gפ0~l*(%HK_9}8p/+}5ڡ+8(֠$s )Z’gDW344w:y@)@"F*sẈ!HwO?R l qB c ֒5f 3@:D'P(;xzk ְљ9iBpE؝/b/Y//Og)x|! ACmpĹGy"_`Y?|o܅ {uFUo{uulrq4D^om$}mi3a@ >LtII@uy}]ƯGr>x ^JY3I⮴ 8I@S:/Npt08=[~q$@~ 姀>N4pU| vU[u'P<dq̙ 3Xpp/By$>(76>RI:NR+CEpA܁07)yo;Ws&ҁzk4:k8kL !sEXCu'Fì*i6Ur&;3Ba@8 BTX(9T;h>zd$>|; 972O܄(p(qN?܃ҧO=}0/I%ܯn(|g` n(f%v0eq$$vW]qF"F1eIаu/Y~}JsGP);ϝZ~ H t*b6AeZ A{Z D&ꈖA9 <!B\yMGF9ttpwwhJ@)+; !$›fzbj$*( ěxV!{a<P hJ`'tkcMeK"U'E7hA*(/$%,Ջ"{<$c2O<&Pi#о`vG]" Ba %"#W=O#!2z&hC6%)SUQmM|@{,b#0% 5gp6aonb H E1@`H_|S!`J8*b<=QQw5m( .3^@&Rd&^:LBEiEMgfVSeઋx7ˆ#`@s*䠧3'A;0AB×KGYf< ÃAE)b%{_o ]р4 ;z e1x'7<RI >7pxUW#pSH/p;0H$,L yHLr8 #%XAA y1-n@uQΖTAy7Nd.?xFs!'3#GY^0A_lP˷ +R#s<6s2 co M]03yZ*A2N-d*"HYN(5*PR6-9kVly) )hNC$> ˶ y5!A@C TDf(.037!7[KhD@!&)Ի 'j7/;֎g Vʢ0\q2s3.Ϋ]4TRa<꯫@I}dwcH|H9Ӓ$hW vdvWzs\9XS!8Ɔ.=x=kBLkRE̡Ud-> hkb EW}Él6 u"V 1cG!+TfE!N#>8EN>톔dCmNKf-URP!QxßC >hTj!iÆ |z9A\0ELƍIؕ ph=)ЎWˡ~*㹄%!(@@ĜixcFfTO^stI2cK2ܟPjT5C%Nئ.?guМ^o'k&T=zD :"ǬXUfնx6ѡH{5nZ)D2ll!Ze){KT޸_}㰃k3/\"89 (ReCԾ|NR { %3ZLSn(tZ5z\{g82 H545AF (w`.GYi:#rV#rS!:t\CJy<<), OLN0JKB@HEP??F3 BPB" pzh_$05Fn tb%J6X@tv P!戻4)[}z꒒#EP 6JJD |JFAi*8h"" >I;wemUtӈwq,۵PxLdx?WH@BhLj'fnbl_ꆚ:Xf?J<Ԝ>d{t62!oRMg$)F@lg_ɎV`fC}8rQaKNE&C HЏq_SIQap6)I: g#=I!4F`ӛC.PA'7t!ܺ| <(eP b'3> ľpT,T4B IBa9B\$ t >pn @jSe/kpn SORG!2+#ȼ/L| u # !""ʙDChsàTHP4UJD4"Q40RRDHDIPA14#! bCاpn1'J9u07{@#ɻ1mo$o'<=|;ҬDK0AL{"jOa IMe"if A!&B*iXR~zN| 3?T[HUq ;;~Y@ީ& ߬AD2; VT$ ЧcC- H*D'Н1F)tE0Q1, @ۺNg!т=aR2hiVT?}dԘk:{z+ h߹{rGdÜQ!ȟ:)@BQ~j+[m</}7 k%Ow)B(Bʭ* @$` HR {!H_} ZYN0(`irv'jQwgIB )`#\ Z L+ 2Uá6ߤ[W"@ 0!2P0,`e1QcEg0?A>?D-`( )%C @44D*,:IY"i& bbZVFdI)Z*%yy=#pS4x=0Q,)^p_PU7˚IóKHl\1l:%>G~k}g#\0r(єI3 t3 4Ռh/ڼCgSS:dsD<, % ۋ?ԟ @ EU($JqBq(gIiSJVD&>$ Gg7̺GAgkTf l"aGG!Y^d`Je^񘪜Q6*T\K5%(15*C!9t4omb& gvڌqѓ\ B`ě'YԇXhy VvhH3㨄x'ʈȋӡU)"ܚ$KdCZ 8!wwg6x@V0I @ d.-;ɧ%7lh,G HyeA+(›][&]2Fhi9`ȇm@l7]3'*qδB4zуP%8ԥ(pD.hA>8䎏00lmo,&Ic(cIdq{眛WB=$Lq9?9?8/vn9-U.ɗywq#O^bB)@>q~3xsɐM#|{ [[A/a"Xb}poaYH( )? g/|W&ƪ\lYdL.H;9zpYs>:<AO=܊ ۼz&&pM_h&$ofMі I& uC>O3CM S,M"|/2 n]AðBY@ha73ᛍpjCLiFY(pGpwd13ø?? (G 8 Qe OlQ·CCMKh""4IH>GTA3ȧԦ*cW !,'\>;O 6*.d.T=_bfP,AoHlAI?UU0L^Xx` _M ,Htd J23"gܺn;դ&BbA ") 0T1R${@w1ҙGȰ83AJ#eC (h  Dr Bf1 gi7M Ϗ>) D`' `# )&H Vh hWC _?N`oxG撐:?F`GQbvӢg#%| ͉mѕ}!ykz0 ahC(TPC&C$g=g 0A7W@HLPjDz%5 Sx r| wJ=uR5{3Gp8IED%:i: [gZ<-`?F 8 ׎{.1t&P&hcDE2 @Ho@Q(1 $-Crw:v >*xɉRP:̲LᏈɊw%&H+g4+.jiH( $% %HhHEv ԸS0}A@P¿`9S =Hs) &3p:3p{v;ܧƽy-ḉ5Ƞz  N1'2w:  ;DHG15lAmݚ^|If~َff!TVEEH:Ix9=$q0r/~XC` *1l??!\١:s.$¤&` r4P/[@Ea1Po9 /QҮP(NUBs(P'$RythL:jv9lQe:3bwb2،+/D0ρ)kLHnOw D|Rtȝb(p:(*!&!j$3T`Q`V7=!N ևʇ?Մ{oww6Q "Q\ U>` rhAa=BZBn*Y)8% ABd|2`!F4.֜S  &b:ҜGpC@,%d ċ86gwUU LEHt[YEH "Q064UєѢ4&YT4(-2 ORd`tDfjaA^l|EvG |~mH>,t|EP=PQ ex-vw<9YqDګ`}0zQXצu::bq"S+4ղf2Iy:um۴ b h2ZQ1>OSd$\<Dİí rAxy~cz>B2RMQ4CmbۃE*#m@CM2`i] x$C/.1P |{Oޞy</ Fx80mJBCmcOMr40h&{qҾE`O42A􊜐$CDs1 p5'Ȳ3&پWwϚ޹b<v2~'8$6ǖ O|ʾ@|>P_NWph_bS XǾyoSǑli3{!AI-X=xa$(/oa |nϐΊiZ$q0v5Vjw$CɪP@AUP08# *ifJ,Psp! y|ڨ_[qa փL惊Hnv ; 0xz eN۶ʟHOLӏ{$Ƽ0ESH1!^%z_v 2]#y0Gt ϿCOP1{/JGql١8!5Yh#h79GlwR8EP|Jby" rv@*^^ TDxDМC9vx+qۘx8R*60 #%Vmaf G7Myƻx{zѱ81ktX 30vpg .* 6+L^OB$" eG@]LM)>,Mi jgÃODcUi ڪ=с$,Rm8 v.e( A } PS2)J.Qu|Hl@81w(aT%OQ~:*l ACXNiħ22( znw  >H{0| Ra~_nB 4JyzύH;YVHH$!Gġ ?E$T# ~xAL|Ǭpg 4>/ҸwBB(O_<$毥%]3q&A]fpM 'x"6€֜U! ̂,~ 2 D<~WI !(u>R:0,2!IR'쌈kg^m! *@fT- :1<: $E:$'/S hk&Łhe* )P o`8ϔfHޑ0$D?<'OMρMfA{5bgC {A@| l _he𒁠kxA ދ&;\{H:X5-/[DRhOKU H&oDI h?ecjΊ mX`.>CK֙]lbH};DLH/\0`8 *B!RG6 ?|# ۲a 9A@HD iA !l1;)\gQ=}} ">P"@Gb@"/i-4.8{E +f դ-h"s^jFC;VeŸlxx]YlMt`oZOh;jW *Q! .$^ i{Lj\"x}g ;6M ӆ=K;pzp-fĸ tuq>7s߫׎u\u43Ϧo{9õmix胦t]1M FG.ɞfOjx[[fTݝpc3#2FA-ֱ=4}'z]E;׆_MmS&Tw4V$8"Ɠ\Ceb9$ 2vV4̲QlXPgaNKhLp)]S&;f@c8P̈%) cUjC@䄌ac''8/Miy`&cDQJ+b~)XZ 08v05uqZI at+ E@@ޝ+В( d5 $ !@}BdRa/: ((.u{WD=+xCHG.o?ڔvDMA<%“c`#5_;p䘛MrCG1EVnZ8_>z0N곬(8.ǶѶ"ǷAxn (׹hÈ@E a0(+0bb FMzj^b::m3J鈣;ZFٔG7Gk[)Zq:"[<1xv0`4r pk=0m+lׁ1Flha94J՜ 6'M 0pFC.8s4a=cnDq뉁.xb/Z~,Pn׭N^wÌ뱮88|)PLscI=eUu`L\C槝ihow=Ŝ0S)9 ]r>[ JS+J՜_LKIpqrG#w8e|c)GԵY=! }yI<6QraHm&Ěj Po`˓;-,)r:Z׆8!KWhr׿ݩK;+赽m9&Pjk &c&a)H.VLR)A+XjHĜ5I0 ICwzyDE+66r7=i(HZQE.PR)3PTbݬu3:tʘ@Z=*,2";y4ܢBrԜ(R6ֆPvhzJW\|$Sg'F$ˤ0옮'uΨFixMnƵ]C歹9f੢I!Ʈ)X@A"Fad C{|6SagfœȷU2JYEHY*¹9]цGV)Xc[4mz* SQUTʔɼQqIL,lgq%%PMI@Â40lӱC8bb%GCT3CޞUԨhzl*-u+>3t@@,$A(@4lƓL@tM(9A(2šX9I982&#`5DE&I Q0aJI%%09DX: z hyʊ`oxfqy@DJŠ*'}VXQjN!X',DLT44 OA&ó!={Q`ADHLIA$қ65,@<^%Z2AH!N:wOEt1*" yu`! 0 !9&.b=;ۦ(H\ !a1bV3:E: U’E Mx>ඌ \Qƙ"1_R4\8aV Q&q^'ɶ!.ZMm ;4 cV>>Abo/<4rz5†es!u]<]N^n;"K6]aui&,b č*w aHIRJlȞ^3'az^9^wR}vIBD\lǗN㜵yP͙8}jPlEw)I"ynAūSGz8^:SHbn6j4dzb ?rC7k%X#W"A0% pyh8fIJn U)ט!40ip,J0ƕIAAH:]ΰzQ2C^|@|fX(' @::B@(t':6/pW]6ٜ5w`}q#zpx-Q/|zC(R@b#hvhq&Co0<^;!@-G6P !F֚ii`8~=. vtO58&52vP@ l) iS_Wv$'n,iOq@r@|ZC L4R. H9p9ih  HK0t"P Nn5`q]K~y4E"DSזԈ'7 i$=BX#Rb:jN(&R8Lg@os&4"  վIRi i'3PǨ$cf$!R\a\ )%; . &GBPԒ1X28; Z?8ДٶpfmP!oGey5vhfcĪ86ů֠јbpP4L` w,P|_@, za)HaJN0(~c/Fyǫ C #9ѳy۠fvsr N[eJ 6m^OխN_Y)!Y<90Ȧ\ -iBD#$(!(܇s,ڷg^ܧK-DglJNC\rTIdqzQRI(1\L-W_mm>i-%]Ԯ!ubڞ4? 3VRhk5)$6?q\-T_൧Iyn@8듕o}ke.8T68N\" N:ty6BФa&14Gpz:ѭx,bPřP+hB@=w?GӉ=8 v@Y1*!`S`Š"uanf@9hIorKc4R蜽(5L$a= "r1[pI8A82rඥF1h,` A(L::A@|Bj윣 , 2׈19Uh`0 G{s vd bb&16)j)X|@!Azh~>@4zyꟐ(R !#D_CPP4(Έw FK .ioݽJҲaɖ(t3A2<1pERz QDIà'a!^HdE)].fHC'9":JQJب2ж1_gܑt)4itݕR#5) iB]- J \LD Mܩh牆 a @D! }2W#%2h~)D&L;"Ħ=FqBeLPOc$"}nm !oTgG{}m ("6{I"b>o #7(ώo.l&Vrꨡs2 nbI֞O^#lclM㥪fI;V |ĕqBaC 6Ȇ Qouz# .* Ā$}Q]NroZˍhu }f{X\BT#HH 82.eWdC"4+@Chb)X2spp^ުR,LHpȮF Aه H5*Vh) 8$Y6Ykh)l|)IM Ђ@!BE! 8C 3BM1T#KD1'1:z5u_$}:$ TWG]]<܍6EN9H$^ I)&Ix6v7/bc=2ȺMOb`8TB H  14|pCq> 1'F*v쀉_'9` qm $1SULdjb*Hk6** )" Jd (`"*sMy"h MEZ#+OΓ/i P$X g ܈clJnWKN[w!PӏW_D؀GFl&4ADS#(@K4 +(' 1IH : U ~xB^/,$#ـx}Z P]jZS^'iJ6 :,"= R5y`4S)gWf<%fE LL ACAih4@D&JIa[[c&e(h) !$rʄ!"=f~X0LA= +JPݗ~:1CW:68),S@BQa12'} Rɽ BӉ`$tox߃*tab$$@@gZ ! 'I11E~X@#*9#RjJ &F8rW"G,nD9OU:Ba:g}I5Ϲ/sǞB 4p~y~MКDVS3z ( b(#A04 #' 렜bbU  tDB!l(Z) : I ! Fv:WXXSu:& ONm#Hb ) ς7Ͻq!P`w) x:50*PQ;Nܝn9Wv'0 HdaDp*&|z.Ĩ N®ʆAcBTl2mbC8|4jLFi*) *xa5,JMA- `)!ҚD ')$YŴ@SS4G2bb`(b@" :ƃS$I^ 刖bF SöbHf*I\[#&kE1F=TD Ti+YPaq^ NCAz"bP FQ)YBN aʯA粡_# PJ_߰zH;y^HJPAH QKIBԐR!!M""RR* " !S%TM#HP5H%#PRAāCJAK@R+TD LUHH !@4(ĂST$BD4PR#IUHRPQBP @S P$ʅRDE DPāB"R,ʥд4 AH -- @ ( A|q! a(s!X((IEs R4ڰP'wCw-h*b=wͣO8x xK8NTF[h-j2G 0&(/ιfn[`1V^R l5S(#@:y$F<ueu'ihDԟ0wxQks#hNpa1)GxVd,ڄ#œ+[wdI0CaQ41GǎwLj:qa%!$^$ؐ4[}rnݑi/yw=Ě=a(tNO"ѣ OV&؉d8h|)HQmufߦ08@&$>{M7g>H1p qxc^pZ F\mLRn#QQ s\ a!ț3T2C80yrC􇿡8Bݪ}A$L{`C lPڞǸ}(|y{j WP^

    _Y5[7rnXiQciiҙ,*h}c)uv<)E/q$[c6šIOB *?Sz(P $kb!(d(R"a#pPο30Qjq=I^)Eir@w7q]JY(HXH!*I*y;S)# ,&ʏPcDtvt(;M  B ( o||QE&@:pb>C .Ҝ<@(@}B̤B11/Nu%8\^OF6mtRSrQ_)!H!U`F ^# o`#'$V x(= ~!<WB{qܽ5a3<ѴDU% R22؝?F&fpa)OsC$$.TPSA nG 4)قc@S"P&"4DЖrB;˓ݒ,Seޞq_ƨe[QDa>uXI:IuZuXxhudl dchIs+g ƃz"bp `J~0L銉PGEϞ#A^33CU4RG`1KÂ?)\Ydƕ 1!! rdzT*$P0(BJ0{:A JARTRDTʈT$JE@51 ? $)a`c2!9/-QGwM w!ȡ }zB dS3/p>o|7~ߧJ( bRD!1oouCi}Y|)&F|w)>iǢdN.һf7n(ӨN@ɀ  =)K238mB {}hS?;*θA绱f\Zd |i`cjM [FCd%bL0\`Ƥmb / o׀80 7x?+wQ&'݉vxBS oh@t /0DWq('ù1<@?EQ^ZG21$4=ls|n wa`Rrz'Fi:N#սW @%atUW)lT Dm%@XP #Q\104JBH@r;` DTi]|I<x! /?R% d>H%RTHDT0""$k)J-Cґ"0W1!D;>mhOY?}0,z{F^.RDL$U!P#"& U $Lo:$<% -"%a8+$*U$,E#++ՆT(CI$PE,yJO(HJ0CD1M2I@E*}ebh."(e2 9Pl:"-4TnɊ$'!YBVdghfARxIJc ȰH"H) J!P4D -Xe% !=Bc"'/$Mpf4bn%(dd/vtzn{E(!c) qP<NI ôF-'MqC ݈h#1,nP(r$l8+b) ''@J>*Nėx0'F}O +(I"u><~ M ð Ji# i#AQˈQ!?3[8-dGE) jSH(y2b9a;n;yd 7@uKA9T9pRDTI( \N>lMρBt/{0ė'k* l%K)EF 9"#x@\*`jI"5QM0ű `㷰/Mkؤ /"A/y@Ht:0dLe Ib(/ wNLJblėywm=E5o`maVĤMsQv5OUd`fQKT4bB2IǮ6A:?;qSk%Ozu :+(("0#tb}oVnJE3^x0q"RYBBR<{z]Uzwb&I*)v˒Ѓ ,pF`ТzKqNJY@kW0\!` Q@qLS? \)S6_\xbZ=z9E`Ѹ