summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog53
-rw-r--r--compat/zlib/CMakeLists.txt52
-rw-r--r--compat/zlib/ChangeLog63
-rw-r--r--compat/zlib/Makefile.in20
-rw-r--r--compat/zlib/README6
-rw-r--r--compat/zlib/as400/bndsrc10
-rw-r--r--compat/zlib/as400/compile.clp2
-rw-r--r--compat/zlib/as400/readme.txt2
-rw-r--r--compat/zlib/as400/zlib.inc14
-rw-r--r--compat/zlib/compress.c2
-rwxr-xr-xcompat/zlib/configure171
-rw-r--r--compat/zlib/contrib/README.contrib1
-rw-r--r--compat/zlib/contrib/blast/blast.c8
-rw-r--r--compat/zlib/contrib/blast/blast.h8
-rw-r--r--compat/zlib/contrib/delphi/ZLib.pas2
-rw-r--r--compat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs4
-rw-r--r--compat/zlib/contrib/infback9/infback9.c4
-rw-r--r--compat/zlib/contrib/infback9/inftree9.c6
-rw-r--r--compat/zlib/contrib/minizip/configure.ac2
-rw-r--r--compat/zlib/contrib/minizip/crypt.h8
-rw-r--r--compat/zlib/contrib/minizip/iowin32.c98
-rw-r--r--compat/zlib/contrib/minizip/miniunzip.163
-rw-r--r--compat/zlib/contrib/minizip/minizip.146
-rw-r--r--compat/zlib/contrib/minizip/unzip.c12
-rw-r--r--compat/zlib/contrib/minizip/unzip.h4
-rw-r--r--compat/zlib/contrib/minizip/zip.c2
-rw-r--r--compat/zlib/contrib/pascal/zlibpas.pas4
-rw-r--r--compat/zlib/contrib/puff/puff.c7
-rw-r--r--compat/zlib/contrib/puff/puff.h4
-rw-r--r--compat/zlib/contrib/puff/pufftest.c4
-rw-r--r--compat/zlib/contrib/testzlib/testzlib.c4
-rw-r--r--compat/zlib/contrib/vstudio/readme.txt7
-rw-r--r--compat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc10/minizip.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlib.rc10
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj16
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlibvc.def12
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj30
-rw-r--r--compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user3
-rw-r--r--compat/zlib/contrib/vstudio/vc11/miniunz.vcxproj314
-rw-r--r--compat/zlib/contrib/vstudio/vc11/minizip.vcxproj311
-rw-r--r--compat/zlib/contrib/vstudio/vc11/testzlib.vcxproj426
-rw-r--r--compat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj314
-rw-r--r--compat/zlib/contrib/vstudio/vc11/zlib.rc32
-rw-r--r--compat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj464
-rw-r--r--compat/zlib/contrib/vstudio/vc11/zlibvc.def143
-rw-r--r--compat/zlib/contrib/vstudio/vc11/zlibvc.sln117
-rw-r--r--compat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj688
-rw-r--r--compat/zlib/contrib/vstudio/vc9/zlib.rc10
-rw-r--r--compat/zlib/contrib/vstudio/vc9/zlibvc.def14
-rw-r--r--compat/zlib/deflate.c12
-rw-r--r--compat/zlib/deflate.h2
-rw-r--r--compat/zlib/examples/enough.c39
-rw-r--r--compat/zlib/examples/gun.c11
-rw-r--r--compat/zlib/examples/gzappend.c22
-rw-r--r--compat/zlib/examples/gzjoin.c13
-rw-r--r--compat/zlib/examples/gzlog.c21
-rw-r--r--compat/zlib/examples/gzlog.h6
-rw-r--r--compat/zlib/examples/zran.c11
-rw-r--r--compat/zlib/gzguts.h22
-rw-r--r--compat/zlib/gzlib.c40
-rw-r--r--compat/zlib/gzread.c21
-rw-r--r--compat/zlib/gzwrite.c64
-rw-r--r--compat/zlib/infback.c2
-rw-r--r--compat/zlib/inffast.c6
-rw-r--r--compat/zlib/inflate.c64
-rw-r--r--compat/zlib/inftrees.c14
-rw-r--r--compat/zlib/qnx/package.qpg10
-rw-r--r--compat/zlib/test/example.c8
-rw-r--r--compat/zlib/test/minigzip.c20
-rw-r--r--compat/zlib/treebuild.xml4
-rw-r--r--compat/zlib/trees.c14
-rw-r--r--compat/zlib/uncompr.c2
-rw-r--r--compat/zlib/win32/Makefile.msc77
-rw-r--r--compat/zlib/win32/README-WIN32.txt4
-rw-r--r--compat/zlib/win32/README.txt17
-rw-r--r--compat/zlib/win32/zdll.libbin15256 -> 15658 bytes
-rw-r--r--compat/zlib/win32/zlib.def2
-rw-r--r--compat/zlib/win32/zlib1.dllbin107520 -> 107520 bytes
-rw-r--r--compat/zlib/win32/zlib1.rc2
-rw-r--r--compat/zlib/win64/zdll.libbin14896 -> 15288 bytes
-rw-r--r--compat/zlib/win64/zlib1.dllbin112640 -> 112640 bytes
-rw-r--r--compat/zlib/zconf.h33
-rw-r--r--compat/zlib/zconf.h.cmakein33
-rw-r--r--compat/zlib/zconf.h.in33
-rw-r--r--compat/zlib/zlib.36
-rw-r--r--compat/zlib/zlib.3.pdfbin8760 -> 8734 bytes
-rw-r--r--compat/zlib/zlib.h48
-rw-r--r--compat/zlib/zlib.map5
-rw-r--r--compat/zlib/zutil.c2
-rw-r--r--compat/zlib/zutil.h9
-rw-r--r--doc/file.n7
-rw-r--r--generic/regguts.h6
-rw-r--r--generic/tcl.h10
-rw-r--r--generic/tclAssembly.c1
-rw-r--r--generic/tclBasic.c167
-rw-r--r--generic/tclCmdIL.c13
-rw-r--r--generic/tclCmdMZ.c2
-rw-r--r--generic/tclCompCmds.c3040
-rw-r--r--generic/tclCompCmdsGR.c2927
-rw-r--r--generic/tclCompCmdsSZ.c328
-rw-r--r--generic/tclCompile.c388
-rw-r--r--generic/tclCompile.h108
-rw-r--r--generic/tclExecute.c69
-rw-r--r--generic/tclIOUtil.c3
-rw-r--r--generic/tclInt.h5
-rw-r--r--generic/tclUtf.c40
-rw-r--r--library/platform/pkgIndex.tcl2
-rw-r--r--tests/cmdIL.test9
-rw-r--r--unix/Makefile.in18
-rwxr-xr-xunix/configure64
-rw-r--r--unix/tcl.m433
-rw-r--r--unix/tclConfig.h.in3
-rw-r--r--unix/tclUnixFCmd.c4
-rw-r--r--win/Makefile.in5
-rw-r--r--win/makefile.bc1
-rw-r--r--win/makefile.vc1
-rw-r--r--win/tclWinTime.c4
121 files changed, 7584 insertions, 3985 deletions
diff --git a/ChangeLog b/ChangeLog
index 81d6507..fed4e32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,56 @@
+2013-05-22 Andreas Kupries <andreask@activestate.com>
+
+ * tclCompile.c: Removed duplicate const qualifier causing the HP
+ native cc to error out.
+
+2013-05-22 Donal K. Fellows <dkf@users.sf.net>
+
+ * generic/tclUtf.c (TclUtfCasecmp): [Bug 3613609]: Replace problematic
+ uses of strcasecmp with a proper UTF-8-aware version. Affects both
+ [lsearch -nocase] and [lsort -nocase].
+
+2013-05-22 Donal K. Fellows <dkf@users.sf.net>
+
+ * doc/file.n: [Bug 3613671]: Added note to portability section on the
+ fact that [file owned] does not produce useful results on Windows.
+
+2013-05-20 Donal K. Fellows <dkf@users.sf.net>
+
+ * unix/tclUnixFCmd.c (DefaultTempDir): [Bug 3613567]: Corrected logic
+ for checking return code of access() system call, which was inverted.
+
+2013-05-19 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * unix/tcl.m4: Fix for FreeBSD, and remove support for older
+ * unix/configure: FreeBSD versions. Patch by Pietro Cerutti.
+
+2013-05-18 Donal K. Fellows <dkf@users.sf.net>
+
+ * generic/tclCompCmdsGR.c: Split tclCompCmds.c again to keep size of
+ code down.
+
+2013-05-16 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * generic/tclBasic.c: Add panic in order to detect incompatible
+ mingw32 sys/stat.h and sys/time.h headers.
+
+2013-05-13 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * compat/zlib/*: Upgrade to zlib 1.2.8
+
+2013-05-10 Donal K. Fellows <dkf@users.sf.net>
+
+ Optimizations and general bytecode generation improvements.
+ * generic/tclCompCmds.c (TclCompileAppendCmd, TclCompileLappendCmd):
+ (TclCompileReturnCmd): Make these generate bytecode in more cases.
+ (TclCompileListCmd): Make this able to push a literal when it can.
+ * generic/tclCompile.c (TclSetByteCodeFromAny, PeepholeOptimize):
+ Added checks to see if we can apply some simple cross-command-boundary
+ optimizations, and defined a small number of such optimizations.
+ (TclCompileScript): Added the special ability to compile the list
+ command with expansion ([list {*}blah]) into bytecode that does not
+ call an external command.
+
2013-05-08 Harald Oehlmann <oehhar@users.sf.net>
* library/msgcat/msgcat.tcl: [Bug 3036566]: Also get locale from
diff --git a/compat/zlib/CMakeLists.txt b/compat/zlib/CMakeLists.txt
index 7ee3bc4..0c0247c 100644
--- a/compat/zlib/CMakeLists.txt
+++ b/compat/zlib/CMakeLists.txt
@@ -3,7 +3,10 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(zlib C)
-set(VERSION "1.2.7")
+set(VERSION "1.2.8")
+
+option(ASM686 "Enable building i686 assembly implementation")
+option(AMD64 "Enable building amd64 assembly implementation")
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
@@ -121,11 +124,44 @@ set(ZLIB_SRCS
)
if(NOT MINGW)
- set(ZLIB_SRCS ${ZLIB_SRCS}
+ set(ZLIB_DLL_SRCS
win32/zlib1.rc # If present will override custom build rule below.
)
endif()
+if(CMAKE_COMPILER_IS_GNUCC)
+ if(ASM686)
+ set(ZLIB_ASMS contrib/asm686/match.S)
+ elseif (AMD64)
+ set(ZLIB_ASMS contrib/amd64/amd64-match.S)
+ endif ()
+
+ if(ZLIB_ASMS)
+ add_definitions(-DASMV)
+ set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
+ endif()
+endif()
+
+if(MSVC)
+ if(ASM686)
+ ENABLE_LANGUAGE(ASM_MASM)
+ set(ZLIB_ASMS
+ contrib/masmx86/inffas32.asm
+ contrib/masmx86/match686.asm
+ )
+ elseif (AMD64)
+ ENABLE_LANGUAGE(ASM_MASM)
+ set(ZLIB_ASMS
+ contrib/masmx64/gvmat64.asm
+ contrib/masmx64/inffasx64.asm
+ )
+ endif()
+
+ if(ZLIB_ASMS)
+ add_definitions(-DASMV -DASMINF)
+ endif()
+endif()
+
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
@@ -134,7 +170,7 @@ string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
if(MINGW)
# This gets us DLL resource information when compiling on MinGW.
if(NOT CMAKE_RC_COMPILER)
- SET(CMAKE_RC_COMPILER windres.exe)
+ set(CMAKE_RC_COMPILER windres.exe)
endif()
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
@@ -144,11 +180,11 @@ if(MINGW)
-I ${CMAKE_CURRENT_BINARY_DIR}
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
- set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
+ set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW)
-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
set_target_properties(zlib PROPERTIES SOVERSION 1)
@@ -166,7 +202,9 @@ endif()
if(UNIX)
# On unix-like platforms the library is almost always called libz
set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
- set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/zlib.map")
+ if(NOT APPLE)
+ set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
+ endif()
elseif(BUILD_SHARED_LIBS AND WIN32)
# Creates zlib1.dll when building shared library version
set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
diff --git a/compat/zlib/ChangeLog b/compat/zlib/ChangeLog
index c2c643a..f22aaba 100644
--- a/compat/zlib/ChangeLog
+++ b/compat/zlib/ChangeLog
@@ -1,6 +1,69 @@
ChangeLog file for zlib
+Changes in 1.2.8 (28 Apr 2013)
+- Update contrib/minizip/iowin32.c for Windows RT [Vollant]
+- Do not force Z_CONST for C++
+- Clean up contrib/vstudio [Ro]
+- Correct spelling error in zlib.h
+- Fix mixed line endings in contrib/vstudio
+
+Changes in 1.2.7.3 (13 Apr 2013)
+- Fix version numbers and DLL names in contrib/vstudio/*/zlib.rc
+
+Changes in 1.2.7.2 (13 Apr 2013)
+- Change check for a four-byte type back to hexadecimal
+- Fix typo in win32/Makefile.msc
+- Add casts in gzwrite.c for pointer differences
+
+Changes in 1.2.7.1 (24 Mar 2013)
+- Replace use of unsafe string functions with snprintf if available
+- Avoid including stddef.h on Windows for Z_SOLO compile [Niessink]
+- Fix gzgetc undefine when Z_PREFIX set [Turk]
+- Eliminate use of mktemp in Makefile (not always available)
+- Fix bug in 'F' mode for gzopen()
+- Add inflateGetDictionary() function
+- Correct comment in deflate.h
+- Use _snprintf for snprintf in Microsoft C
+- On Darwin, only use /usr/bin/libtool if libtool is not Apple
+- Delete "--version" file if created by "ar --version" [Richard G.]
+- Fix configure check for veracity of compiler error return codes
+- Fix CMake compilation of static lib for MSVC2010 x64
+- Remove unused variable in infback9.c
+- Fix argument checks in gzlog_compress() and gzlog_write()
+- Clean up the usage of z_const and respect const usage within zlib
+- Clean up examples/gzlog.[ch] comparisons of different types
+- Avoid shift equal to bits in type (caused endless loop)
+- Fix unintialized value bug in gzputc() introduced by const patches
+- Fix memory allocation error in examples/zran.c [Nor]
+- Fix bug where gzopen(), gzclose() would write an empty file
+- Fix bug in gzclose() when gzwrite() runs out of memory
+- Check for input buffer malloc failure in examples/gzappend.c
+- Add note to contrib/blast to use binary mode in stdio
+- Fix comparisons of differently signed integers in contrib/blast
+- Check for invalid code length codes in contrib/puff
+- Fix serious but very rare decompression bug in inftrees.c
+- Update inflateBack() comments, since inflate() can be faster
+- Use underscored I/O function names for WINAPI_FAMILY
+- Add _tr_flush_bits to the external symbols prefixed by --zprefix
+- Add contrib/vstudio/vc10 pre-build step for static only
+- Quote --version-script argument in CMakeLists.txt
+- Don't specify --version-script on Apple platforms in CMakeLists.txt
+- Fix casting error in contrib/testzlib/testzlib.c
+- Fix types in contrib/minizip to match result of get_crc_table()
+- Simplify contrib/vstudio/vc10 with 'd' suffix
+- Add TOP support to win32/Makefile.msc
+- Suport i686 and amd64 assembler builds in CMakeLists.txt
+- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h
+- Add vc11 and vc12 build files to contrib/vstudio
+- Add gzvprintf() as an undocumented function in zlib
+- Fix configure for Sun shell
+- Remove runtime check in configure for four-byte integer type
+- Add casts and consts to ease user conversion to C++
+- Add man pages for minizip and miniunzip
+- In Makefile uninstall, don't rm if preceding cd fails
+- Do not return Z_BUF_ERROR if deflateParam() has nothing to write
+
Changes in 1.2.7 (2 May 2012)
- Replace use of memmove() with a simple copy for portability
- Test for existence of strerror
diff --git a/compat/zlib/Makefile.in b/compat/zlib/Makefile.in
index 241deed..c61aa30 100644
--- a/compat/zlib/Makefile.in
+++ b/compat/zlib/Makefile.in
@@ -1,5 +1,5 @@
# Makefile for zlib
-# Copyright (C) 1995-2011 Jean-loup Gailly.
+# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler
# For conditions of distribution and use, see copyright notice in zlib.h
# To compile and test, type:
@@ -32,7 +32,7 @@ CPP=$(CC) -E
STATICLIB=libz.a
SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.7
+SHAREDLIBV=libz.so.1.2.8
SHAREDLIBM=libz.so.1
LIBS=$(STATICLIB) $(SHAREDLIBV)
@@ -83,7 +83,7 @@ check: test
test: all teststatic testshared
teststatic: static
- @TMPST=`mktemp fooXXXXXX`; \
+ @TMPST=tmpst_$$; \
if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \
echo ' *** zlib test OK ***'; \
else \
@@ -96,7 +96,7 @@ testshared: shared
LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \
DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
- TMPSH=`mktemp fooXXXXXX`; \
+ TMPSH=tmpsh_$$; \
if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \
echo ' *** zlib shared test OK ***'; \
else \
@@ -105,7 +105,7 @@ testshared: shared
rm -f $$TMPSH
test64: all64
- @TMP64=`mktemp fooXXXXXX`; \
+ @TMP64=tmp64_$$; \
if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \
echo ' *** zlib 64-bit test OK ***'; \
else \
@@ -216,13 +216,13 @@ install: install-libs
chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
uninstall:
- cd $(DESTDIR)$(includedir); rm -f zlib.h zconf.h
- cd $(DESTDIR)$(libdir); rm -f libz.a; \
+ cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h
+ cd $(DESTDIR)$(libdir) && rm -f libz.a; \
if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
fi
- cd $(DESTDIR)$(man3dir); rm -f zlib.3
- cd $(DESTDIR)$(pkgconfigdir); rm -f zlib.pc
+ cd $(DESTDIR)$(man3dir) && rm -f zlib.3
+ cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc
docs: zlib.3.pdf
@@ -230,7 +230,7 @@ zlib.3.pdf: zlib.3
groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf
zconf.h.cmakein: zconf.h.in
- -@ TEMPFILE=`mktemp __XXXXXX`; \
+ -@ TEMPFILE=zconfh_$$; \
echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\
sed -f $$TEMPFILE zconf.h.in > zconf.h.cmakein &&\
touch -r zconf.h.in zconf.h.cmakein &&\
diff --git a/compat/zlib/README b/compat/zlib/README
index 6f1255f..5ca9d12 100644
--- a/compat/zlib/README
+++ b/compat/zlib/README
@@ -1,6 +1,6 @@
ZLIB DATA COMPRESSION LIBRARY
-zlib 1.2.7 is a general purpose data compression library. All the code is
+zlib 1.2.8 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
@@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
-The changes made in version 1.2.7 are documented in the file ChangeLog.
+The changes made in version 1.2.8 are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
@@ -84,7 +84,7 @@ Acknowledgments:
Copyright notice:
- (C) 1995-2012 Jean-loup Gailly and Mark Adler
+ (C) 1995-2013 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
diff --git a/compat/zlib/as400/bndsrc b/compat/zlib/as400/bndsrc
index 52cc661..98814fd 100644
--- a/compat/zlib/as400/bndsrc
+++ b/compat/zlib/as400/bndsrc
@@ -202,4 +202,14 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
EXPORT SYMBOL("inflateResetKeep")
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+/* Version 1.2.8 additional entry points. */
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+
+/********************************************************************/
+/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */
+/********************************************************************/
+
+ EXPORT SYMBOL("inflateGetDictionary")
+
ENDPGMEXP
diff --git a/compat/zlib/as400/compile.clp b/compat/zlib/as400/compile.clp
index 8d0c58f..e3f47c6 100644
--- a/compat/zlib/as400/compile.clp
+++ b/compat/zlib/as400/compile.clp
@@ -105,6 +105,6 @@
&MODLIB/TREES &MODLIB/UNCOMPR +
&MODLIB/ZUTIL) +
SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) +
- TEXT('ZLIB 1.2.7') TGTRLS(&TGTRLS)
+ TEXT('ZLIB 1.2.8') TGTRLS(&TGTRLS)
ENDPGM
diff --git a/compat/zlib/as400/readme.txt b/compat/zlib/as400/readme.txt
index 23cd1b8..7b5d93b 100644
--- a/compat/zlib/as400/readme.txt
+++ b/compat/zlib/as400/readme.txt
@@ -1,4 +1,4 @@
- ZLIB version 1.2.7 for AS400 installation instructions
+ ZLIB version 1.2.8 for AS400 installation instructions
I) From an AS400 *SAVF file:
diff --git a/compat/zlib/as400/zlib.inc b/compat/zlib/as400/zlib.inc
index 747c598..7341a6d 100644
--- a/compat/zlib/as400/zlib.inc
+++ b/compat/zlib/as400/zlib.inc
@@ -1,7 +1,7 @@
* ZLIB.INC - Interface to the general purpose compression library
*
* ILE RPG400 version by Patrick Monnerat, DATASPHERE.
- * Version 1.2.7
+ * Version 1.2.8
*
*
* WARNING:
@@ -22,12 +22,12 @@
*
* Versioning information.
*
- D ZLIB_VERSION C '1.2.7'
- D ZLIB_VERNUM C X'1270'
+ D ZLIB_VERSION C '1.2.8'
+ D ZLIB_VERNUM C X'1280'
D ZLIB_VER_MAJOR C 1
D ZLIB_VER_MINOR C 2
D ZLIB_VER_REVISION...
- D C 7
+ D C 8
D ZLIB_VER_SUBREVISION...
D C 0
*
@@ -359,6 +359,12 @@
D dictionary 65535 const options(*varsize) Dictionary bytes
D dictLength 10U 0 value Dictionary length
*
+ D inflateGetDictionary...
+ D PR 10I 0 extproc('inflateGetDictionary') Get dictionary
+ D strm like(z_stream) Expansion stream
+ D dictionary 65535 options(*varsize) Dictionary bytes
+ D dictLength 10U 0 Dictionary length
+ *
D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion
D strm like(z_stream) Expansion stream
*
diff --git a/compat/zlib/compress.c b/compat/zlib/compress.c
index ea4dfbe..6e97626 100644
--- a/compat/zlib/compress.c
+++ b/compat/zlib/compress.c
@@ -29,7 +29,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
z_stream stream;
int err;
- stream.next_in = (Bytef*)source;
+ stream.next_in = (z_const Bytef *)source;
stream.avail_in = (uInt)sourceLen;
#ifdef MAXSEG_64K
/* Check for source > 64K on 16-bit machine: */
diff --git a/compat/zlib/configure b/compat/zlib/configure
index 36c7d8e..b77a8a8 100755
--- a/compat/zlib/configure
+++ b/compat/zlib/configure
@@ -70,6 +70,7 @@ shared=1
solo=0
cover=0
zprefix=0
+zconst=0
build64=0
gcc=0
old_cc="$CC"
@@ -77,13 +78,26 @@ old_cflags="$CFLAGS"
OBJC='$(OBJZ) $(OBJG)'
PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
+# leave this script, optionally in a bad way
+leave()
+{
+ if test "$*" != "0"; then
+ echo "** $0 aborting." | tee -a configure.log
+ fi
+ rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version
+ echo -------------------- >> configure.log
+ echo >> configure.log
+ echo >> configure.log
+ exit $1
+}
+
# process command line options
while test $# -ge 1
do
case "$1" in
-h* | --help)
echo 'usage:' | tee -a configure.log
- echo ' configure [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
+ echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
exit 0 ;;
@@ -106,13 +120,18 @@ case "$1" in
-a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
--sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
--localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
- *) echo "unknown option: $1"; echo "$0 --help for help" | tee -a configure.log; exit 1 ;;
+ -c* | --const) zconst=1; shift ;;
+ *)
+ echo "unknown option: $1" | tee -a configure.log
+ echo "$0 --help for help" | tee -a configure.log
+ leave 1;;
esac
done
-# define functions for testing compiler and library characteristics and logging the results
+# temporary file name
test=ztest$$
+# put arguments in log, also put test file in log if used in arguments
show()
{
case "$*" in
@@ -124,43 +143,6 @@ show()
echo $* >> configure.log
}
-cat > $test.c <<EOF
-#error error
-EOF
-if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
- try()
- {
- show $*
- test "`( $* ) 2>&1 | tee -a configure.log`" = ""
- }
- echo - using any output from compiler to indicate an error >> configure.log
-else
- try()
- {
- show $*
- ( $* ) >> configure.log 2>&1
- ret=$?
- if test $ret -ne 0; then
- echo "(exit code "$ret")" >> configure.log
- fi
- return $ret
- }
-fi
-
-tryboth()
-{
- show $*
- got=`( $* ) 2>&1`
- ret=$?
- printf %s "$got" >> configure.log
- if test $ret -ne 0; then
- return $ret
- fi
- test "$got" = ""
-}
-
-echo >> configure.log
-
# check for gcc vs. cc and set compile and link flags based on the system identified by uname
cat > $test.c <<EOF
extern int getchar();
@@ -179,8 +161,8 @@ case `$cc -v 2>&1` in
*gcc*) gcc=1 ;;
esac
-show $cc -c $cflags $test.c
-if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
+show $cc -c $test.c
+if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
echo ... using gcc >> configure.log
CC="$cc"
CFLAGS="${CFLAGS--O3} ${ARCHS}"
@@ -191,7 +173,11 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
SFLAGS="${SFLAGS} -m64"
fi
if test "${ZLIBGCCWARN}" = "YES"; then
- CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
+ if test "$zconst" -eq 1; then
+ CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST"
+ else
+ CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
+ fi
fi
if test -z "$uname"; then
uname=`(uname -s || echo unknown) 2>/dev/null`
@@ -208,7 +194,7 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
# temporary bypass
rm -f $test.[co] $test $test$shared_ext
echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
- exit 1
+ leave 1
LDSHARED=${LDSHARED-"$cc -shared"}
LDSHAREDLIBC=""
EXE='.exe' ;;
@@ -231,7 +217,11 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
SHAREDLIBV=libz.$VER$shared_ext
SHAREDLIBM=libz.$VER1$shared_ext
LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
- AR="/usr/bin/libtool"
+ if libtool -V 2>&1 | grep Apple > /dev/null; then
+ AR="libtool"
+ else
+ AR="/usr/bin/libtool"
+ fi
ARFLAGS="-o" ;;
*) LDSHARED=${LDSHARED-"$cc -shared"} ;;
esac
@@ -334,7 +324,61 @@ SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
echo >> configure.log
+# define functions for testing compiler and library characteristics and logging the results
+
+cat > $test.c <<EOF
+#error error
+EOF
+if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
+ try()
+ {
+ show $*
+ test "`( $* ) 2>&1 | tee -a configure.log`" = ""
+ }
+ echo - using any output from compiler to indicate an error >> configure.log
+else
+try()
+{
+ show $*
+ ( $* ) >> configure.log 2>&1
+ ret=$?
+ if test $ret -ne 0; then
+ echo "(exit code "$ret")" >> configure.log
+ fi
+ return $ret
+}
+fi
+
+tryboth()
+{
+ show $*
+ got=`( $* ) 2>&1`
+ ret=$?
+ printf %s "$got" >> configure.log
+ if test $ret -ne 0; then
+ return $ret
+ fi
+ test "$got" = ""
+}
+
+cat > $test.c << EOF
+int foo() { return 0; }
+EOF
+echo "Checking for obsessive-compulsive compiler options..." >> configure.log
+if try $CC -c $CFLAGS $test.c; then
+ :
+else
+ echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log
+ leave 1
+fi
+
+echo >> configure.log
+
# see if shared library build supported
+cat > $test.c <<EOF
+extern int getchar();
+int hello() {return getchar();}
+EOF
if test $shared -eq 1; then
echo Checking for shared library support... | tee -a configure.log
# we must test in two steps (cc then ld), required at least on SunOS 4.x
@@ -362,8 +406,6 @@ else
TEST="all teststatic testshared"
fi
-echo >> configure.log
-
# check for underscores in external names for use by assembler code
CPP=${CPP-"$CC -E"}
case $CFLAGS in
@@ -698,35 +740,6 @@ EOF
fi
fi
-echo >> configure.log
-
-# find a four-byte unsiged integer type for crc calculations
-cat > $test.c <<EOF
-#include <stdio.h>
-#define is32(n,t) for(n=1,k=0;n;n<<=1,k++);if(k==32){puts(t);return 0;}
-int main() {
- int k;
- unsigned i;
- unsigned long l;
- unsigned short s;
- is32(i, "unsigned")
- is32(l, "unsigned long")
- is32(s, "unsigned short")
- return 1;
-}
-EOF
-Z_U4=""
-if try $CC $CFLAGS $test.c -o $test && Z_U4=`./$test` && test -n "$Z_U4"; then
- sed < zconf.h "/#define Z_U4/s/\/\* \.\/configure may/#define Z_U4 $Z_U4 \/* .\/configure put the/" > zconf.temp.h
- mv zconf.temp.h zconf.h
- echo "Looking for a four-byte integer type... Found." | tee -a configure.log
-else
- echo "Looking for a four-byte integer type... Not found." | tee -a configure.log
-fi
-
-# clean up files produced by running the compiler and linker
-rm -f $test.[co] $test $test$shared_ext $test.gcno
-
# show the results in the log
echo >> configure.log
echo ALL = $ALL >> configure.log
@@ -758,9 +771,6 @@ echo mandir = $mandir >> configure.log
echo prefix = $prefix >> configure.log
echo sharedlibdir = $sharedlibdir >> configure.log
echo uname = $uname >> configure.log
-echo -------------------- >> configure.log
-echo >> configure.log
-echo >> configure.log
# udpate Makefile with the configure results
sed < Makefile.in "
@@ -816,3 +826,6 @@ sed < zlib.pc.in "
" | sed -e "
s/\@VERSION\@/$VER/g;
" > zlib.pc
+
+# done
+leave 0
diff --git a/compat/zlib/contrib/README.contrib b/compat/zlib/contrib/README.contrib
index dd2285d..c66349b 100644
--- a/compat/zlib/contrib/README.contrib
+++ b/compat/zlib/contrib/README.contrib
@@ -75,3 +75,4 @@ untgz/ by Pedro A. Aranda Gutierrez <paag@tid.es>
vstudio/ by Gilles Vollant <info@winimage.com>
Building a minizip-enhanced zlib with Microsoft Visual Studio
+ Includes vc11 from kreuzerkrieg and vc12 from davispuh
diff --git a/compat/zlib/contrib/blast/blast.c b/compat/zlib/contrib/blast/blast.c
index 4ce697a..69ef0fe 100644
--- a/compat/zlib/contrib/blast/blast.c
+++ b/compat/zlib/contrib/blast/blast.c
@@ -1,7 +1,7 @@
/* blast.c
- * Copyright (C) 2003 Mark Adler
+ * Copyright (C) 2003, 2012 Mark Adler
* For conditions of distribution and use, see copyright notice in blast.h
- * version 1.1, 16 Feb 2003
+ * version 1.2, 24 Oct 2012
*
* blast.c decompresses data compressed by the PKWare Compression Library.
* This function provides functionality similar to the explode() function of
@@ -22,6 +22,8 @@
*
* 1.0 12 Feb 2003 - First version
* 1.1 16 Feb 2003 - Fixed distance check for > 4 GB uncompressed data
+ * 1.2 24 Oct 2012 - Add note about using binary mode in stdio
+ * - Fix comparisons of differently signed integers
*/
#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */
@@ -279,7 +281,7 @@ local int decomp(struct state *s)
int dict; /* log2(dictionary size) - 6 */
int symbol; /* decoded symbol, extra bits for distance */
int len; /* length for copy */
- int dist; /* distance for copy */
+ unsigned dist; /* distance for copy */
int copy; /* copy counter */
unsigned char *from, *to; /* copy pointers */
static int virgin = 1; /* build tables once */
diff --git a/compat/zlib/contrib/blast/blast.h b/compat/zlib/contrib/blast/blast.h
index ce9e541..658cfd3 100644
--- a/compat/zlib/contrib/blast/blast.h
+++ b/compat/zlib/contrib/blast/blast.h
@@ -1,6 +1,6 @@
/* blast.h -- interface for blast.c
- Copyright (C) 2003 Mark Adler
- version 1.1, 16 Feb 2003
+ Copyright (C) 2003, 2012 Mark Adler
+ version 1.2, 24 Oct 2012
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
@@ -28,6 +28,10 @@
* that library. (Note: PKWare overused the "implode" verb, and the format
* used by their library implode() function is completely different and
* incompatible with the implode compression method supported by PKZIP.)
+ *
+ * The binary mode for stdio functions should be used to assure that the
+ * compressed data is not corrupted when read or written. For example:
+ * fopen(..., "rb") and fopen(..., "wb").
*/
diff --git a/compat/zlib/contrib/delphi/ZLib.pas b/compat/zlib/contrib/delphi/ZLib.pas
index f24bb3e..a579974 100644
--- a/compat/zlib/contrib/delphi/ZLib.pas
+++ b/compat/zlib/contrib/delphi/ZLib.pas
@@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer;
const OutBuf: Pointer; BufSize: Integer);
const
- zlib_version = '1.2.7';
+ zlib_version = '1.2.8';
type
EZlibError = class(Exception);
diff --git a/compat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/compat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
index 1090288..b273d54 100644
--- a/compat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
+++ b/compat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
@@ -1,5 +1,5 @@
//
-// Copyright Henrik Ravn 2004
+// © Copyright Henrik Ravn 2004
//
// Use, modification and distribution are subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -156,7 +156,7 @@ namespace DotZLibTests
public void Info_Version()
{
Info info = new Info();
- Assert.AreEqual("1.2.7", Info.Version);
+ Assert.AreEqual("1.2.8", Info.Version);
Assert.AreEqual(32, info.SizeOfUInt);
Assert.AreEqual(32, info.SizeOfULong);
Assert.AreEqual(32, info.SizeOfPointer);
diff --git a/compat/zlib/contrib/infback9/infback9.c b/compat/zlib/contrib/infback9/infback9.c
index 7bbe90c..05fb3e3 100644
--- a/compat/zlib/contrib/infback9/infback9.c
+++ b/compat/zlib/contrib/infback9/infback9.c
@@ -222,14 +222,13 @@ out_func out;
void FAR *out_desc;
{
struct inflate_state FAR *state;
- unsigned char FAR *next; /* next input */
+ z_const unsigned char FAR *next; /* next input */
unsigned char FAR *put; /* next output */
unsigned have; /* available input */
unsigned long left; /* available output */
inflate_mode mode; /* current inflate mode */
int lastblock; /* true if processing last block */
int wrap; /* true if the window has wrapped */
- unsigned long write; /* window write index */
unsigned char FAR *window; /* allocated sliding window, if needed */
unsigned long hold; /* bit buffer */
unsigned bits; /* bits in bit buffer */
@@ -259,7 +258,6 @@ void FAR *out_desc;
strm->msg = Z_NULL;
mode = TYPE;
lastblock = 0;
- write = 0;
wrap = 0;
window = state->window;
next = strm->next_in;
diff --git a/compat/zlib/contrib/infback9/inftree9.c b/compat/zlib/contrib/infback9/inftree9.c
index 5a0b328..4a73ad2 100644
--- a/compat/zlib/contrib/infback9/inftree9.c
+++ b/compat/zlib/contrib/infback9/inftree9.c
@@ -1,5 +1,5 @@
/* inftree9.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2012 Mark Adler
+ * Copyright (C) 1995-2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate9_copyright[] =
- " inflate9 1.2.7 Copyright 1995-2012 Mark Adler ";
+ " inflate9 1.2.8 Copyright 1995-2013 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -64,7 +64,7 @@ unsigned short FAR *work;
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
- 133, 133, 133, 133, 144, 78, 68};
+ 133, 133, 133, 133, 144, 72, 78};
static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
diff --git a/compat/zlib/contrib/minizip/configure.ac b/compat/zlib/contrib/minizip/configure.ac
index 6a9af21..827a4e0 100644
--- a/compat/zlib/contrib/minizip/configure.ac
+++ b/compat/zlib/contrib/minizip/configure.ac
@@ -1,7 +1,7 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
-AC_INIT([minizip], [1.2.7], [bugzilla.redhat.com])
+AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com])
AC_CONFIG_SRCDIR([minizip.c])
AM_INIT_AUTOMAKE([foreign])
LT_INIT
diff --git a/compat/zlib/contrib/minizip/crypt.h b/compat/zlib/contrib/minizip/crypt.h
index a01d08d..1e9e820 100644
--- a/compat/zlib/contrib/minizip/crypt.h
+++ b/compat/zlib/contrib/minizip/crypt.h
@@ -32,7 +32,7 @@
/***********************************************************************
* Return the next byte in the pseudo-random sequence
*/
-static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab)
+static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
{
unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
* unpredictable manner on 16-bit systems; not a problem
@@ -45,7 +45,7 @@ static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab)
/***********************************************************************
* Update the encryption keys with the next byte of plain text
*/
-static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c)
+static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
{
(*(pkeys+0)) = CRC32((*(pkeys+0)), c);
(*(pkeys+1)) += (*(pkeys+0)) & 0xff;
@@ -62,7 +62,7 @@ static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int
* Initialize the encryption keys and the random header according to
* the given password.
*/
-static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab)
+static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
{
*(pkeys+0) = 305419896L;
*(pkeys+1) = 591751049L;
@@ -91,7 +91,7 @@ static int crypthead(const char* passwd, /* password string */
unsigned char* buf, /* where to write header */
int bufSize,
unsigned long* pkeys,
- const unsigned long* pcrc_32_tab,
+ const z_crc_t* pcrc_32_tab,
unsigned long crcForCrypting)
{
int n; /* index in random header */
diff --git a/compat/zlib/contrib/minizip/iowin32.c b/compat/zlib/contrib/minizip/iowin32.c
index 6a2a883..a46d96c 100644
--- a/compat/zlib/contrib/minizip/iowin32.c
+++ b/compat/zlib/contrib/minizip/iowin32.c
@@ -25,6 +25,13 @@
#define INVALID_SET_FILE_POINTER ((DWORD)-1)
#endif
+
+#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+#define IOWIN32_USING_WINRT_API 1
+#endif
+#endif
+
voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode));
uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
@@ -93,8 +100,22 @@ voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
+#ifdef IOWIN32_USING_WINRT_API
+#ifdef UNICODE
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
+#else
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ {
+ WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
+ MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
+ hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
+ }
+#endif
+#else
if ((filename!=NULL) && (dwDesiredAccess != 0))
hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
+#endif
return win32_build_iowin(hFile);
}
@@ -108,8 +129,17 @@ voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
+#ifdef IOWIN32_USING_WINRT_API
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ {
+ WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
+ MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
+ hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
+ }
+#else
if ((filename!=NULL) && (dwDesiredAccess != 0))
hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
+#endif
return win32_build_iowin(hFile);
}
@@ -123,8 +153,13 @@ voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
+#ifdef IOWIN32_USING_WINRT_API
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL);
+#else
if ((filename!=NULL) && (dwDesiredAccess != 0))
hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
+#endif
return win32_build_iowin(hFile);
}
@@ -138,8 +173,22 @@ voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
+#ifdef IOWIN32_USING_WINRT_API
+#ifdef UNICODE
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
+#else
+ if ((filename!=NULL) && (dwDesiredAccess != 0))
+ {
+ WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
+ MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
+ hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
+ }
+#endif
+#else
if ((filename!=NULL) && (dwDesiredAccess != 0))
hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
+#endif
return win32_build_iowin(hFile);
}
@@ -188,6 +237,26 @@ uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* b
return ret;
}
+static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
+{
+#ifdef IOWIN32_USING_WINRT_API
+ return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
+#else
+ LONG lHigh = pos.HighPart;
+ DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT);
+ BOOL fOk = TRUE;
+ if (dwNewPos == 0xFFFFFFFF)
+ if (GetLastError() != NO_ERROR)
+ fOk = FALSE;
+ if ((newPos != NULL) && (fOk))
+ {
+ newPos->LowPart = dwNewPos;
+ newPos->HighPart = lHigh;
+ }
+ return fOk;
+#endif
+}
+
long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
{
long ret=-1;
@@ -196,15 +265,17 @@ long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
if (hFile != NULL)
{
- DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT);
- if (dwSet == INVALID_SET_FILE_POINTER)
+ LARGE_INTEGER pos;
+ pos.QuadPart = 0;
+
+ if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
{
DWORD dwErr = GetLastError();
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
ret = -1;
}
else
- ret=(long)dwSet;
+ ret=(long)pos.LowPart;
}
return ret;
}
@@ -218,17 +289,17 @@ ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
if (hFile)
{
- LARGE_INTEGER li;
- li.QuadPart = 0;
- li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_CURRENT);
- if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR))
+ LARGE_INTEGER pos;
+ pos.QuadPart = 0;
+
+ if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
{
DWORD dwErr = GetLastError();
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
ret = (ZPOS64_T)-1;
}
else
- ret=li.QuadPart;
+ ret=pos.QuadPart;
}
return ret;
}
@@ -258,8 +329,9 @@ long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
if (hFile != NULL)
{
- DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod);
- if (dwSet == INVALID_SET_FILE_POINTER)
+ LARGE_INTEGER pos;
+ pos.QuadPart = offset;
+ if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod))
{
DWORD dwErr = GetLastError();
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
@@ -296,9 +368,9 @@ long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T off
if (hFile)
{
- LARGE_INTEGER* li = (LARGE_INTEGER*)&offset;
- DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMoveMethod);
- if (dwSet == INVALID_SET_FILE_POINTER)
+ LARGE_INTEGER pos;
+ pos.QuadPart = offset;
+ if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT))
{
DWORD dwErr = GetLastError();
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
diff --git a/compat/zlib/contrib/minizip/miniunzip.1 b/compat/zlib/contrib/minizip/miniunzip.1
new file mode 100644
index 0000000..111ac69
--- /dev/null
+++ b/compat/zlib/contrib/minizip/miniunzip.1
@@ -0,0 +1,63 @@
+.\" Hey, EMACS: -*- nroff -*-
+.TH miniunzip 1 "Nov 7, 2001"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+miniunzip - uncompress and examine ZIP archives
+.SH SYNOPSIS
+.B miniunzip
+.RI [ -exvlo ]
+zipfile [ files_to_extract ] [-d tempdir]
+.SH DESCRIPTION
+.B minizip
+is a simple tool which allows the extraction of compressed file
+archives in the ZIP format used by the MS-DOS utility PKZIP. It was
+written as a demonstration of the
+.IR zlib (3)
+library and therefore lack many of the features of the
+.IR unzip (1)
+program.
+.SH OPTIONS
+A number of options are supported. With the exception of
+.BI \-d\ tempdir
+these must be supplied before any
+other arguments and are:
+.TP
+.BI \-l\ ,\ \-\-v
+List the files in the archive without extracting them.
+.TP
+.B \-o
+Overwrite files without prompting for confirmation.
+.TP
+.B \-x
+Extract files (default).
+.PP
+The
+.I zipfile
+argument is the name of the archive to process. The next argument can be used
+to specify a single file to extract from the archive.
+
+Lastly, the following option can be specified at the end of the command-line:
+.TP
+.BI \-d\ tempdir
+Extract the archive in the directory
+.I tempdir
+rather than the current directory.
+.SH SEE ALSO
+.BR minizip (1),
+.BR zlib (3),
+.BR unzip (1).
+.SH AUTHOR
+This program was written by Gilles Vollant. This manual page was
+written by Mark Brown <broonie@sirena.org.uk>. The -d tempdir option
+was added by Dirk Eddelbuettel <edd@debian.org>.
diff --git a/compat/zlib/contrib/minizip/minizip.1 b/compat/zlib/contrib/minizip/minizip.1
new file mode 100644
index 0000000..1154484
--- /dev/null
+++ b/compat/zlib/contrib/minizip/minizip.1
@@ -0,0 +1,46 @@
+.\" Hey, EMACS: -*- nroff -*-
+.TH minizip 1 "May 2, 2001"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+minizip - create ZIP archives
+.SH SYNOPSIS
+.B minizip
+.RI [ -o ]
+zipfile [ " files" ... ]
+.SH DESCRIPTION
+.B minizip
+is a simple tool which allows the creation of compressed file archives
+in the ZIP format used by the MS-DOS utility PKZIP. It was written as
+a demonstration of the
+.IR zlib (3)
+library and therefore lack many of the features of the
+.IR zip (1)
+program.
+.SH OPTIONS
+The first argument supplied is the name of the ZIP archive to create or
+.RI -o
+in which case it is ignored and the second argument treated as the
+name of the ZIP file. If the ZIP file already exists it will be
+overwritten.
+.PP
+Subsequent arguments specify a list of files to place in the ZIP
+archive. If none are specified then an empty archive will be created.
+.SH SEE ALSO
+.BR miniunzip (1),
+.BR zlib (3),
+.BR zip (1).
+.SH AUTHOR
+This program was written by Gilles Vollant. This manual page was
+written by Mark Brown <broonie@sirena.org.uk>.
+
diff --git a/compat/zlib/contrib/minizip/unzip.c b/compat/zlib/contrib/minizip/unzip.c
index affad4b..9093504 100644
--- a/compat/zlib/contrib/minizip/unzip.c
+++ b/compat/zlib/contrib/minizip/unzip.c
@@ -188,7 +188,7 @@ typedef struct
# ifndef NOUNCRYPT
unsigned long keys[3]; /* keys defining the pseudo-random sequence */
- const unsigned long* pcrc_32_tab;
+ const z_crc_t* pcrc_32_tab;
# endif
} unz64_s;
@@ -801,9 +801,9 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
}
/*
- Close a ZipFile opened with unzipOpen.
- If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
- these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
+ Close a ZipFile opened with unzOpen.
+ If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
+ these files MUST be closed with unzCloseCurrentFile before call unzClose.
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzClose (unzFile file)
{
@@ -1223,7 +1223,7 @@ extern int ZEXPORT unzGoToNextFile (unzFile file)
/*
Try locate the file szFileName in the zipfile.
- For the iCaseSensitivity signification, see unzipStringFileNameCompare
+ For the iCaseSensitivity signification, see unzStringFileNameCompare
return value :
UNZ_OK if the file is found. It becomes the current file.
@@ -1998,7 +1998,7 @@ extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
}
/*
- Close the file in zip opened with unzipOpenCurrentFile
+ Close the file in zip opened with unzOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/
extern int ZEXPORT unzCloseCurrentFile (unzFile file)
diff --git a/compat/zlib/contrib/minizip/unzip.h b/compat/zlib/contrib/minizip/unzip.h
index 3183968..2104e39 100644
--- a/compat/zlib/contrib/minizip/unzip.h
+++ b/compat/zlib/contrib/minizip/unzip.h
@@ -197,9 +197,9 @@ extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
extern int ZEXPORT unzClose OF((unzFile file));
/*
- Close a ZipFile opened with unzipOpen.
+ Close a ZipFile opened with unzOpen.
If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
- these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
+ these files MUST be closed with unzCloseCurrentFile before call unzClose.
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
diff --git a/compat/zlib/contrib/minizip/zip.c b/compat/zlib/contrib/minizip/zip.c
index 147934c..ea54853 100644
--- a/compat/zlib/contrib/minizip/zip.c
+++ b/compat/zlib/contrib/minizip/zip.c
@@ -157,7 +157,7 @@ typedef struct
ZPOS64_T totalUncompressedData;
#ifndef NOCRYPT
unsigned long keys[3]; /* keys defining the pseudo-random sequence */
- const unsigned long* pcrc_32_tab;
+ const z_crc_t* pcrc_32_tab;
int crypt_header_size;
#endif
} curfile64_info;
diff --git a/compat/zlib/contrib/pascal/zlibpas.pas b/compat/zlib/contrib/pascal/zlibpas.pas
index 7abd862..e6a0782 100644
--- a/compat/zlib/contrib/pascal/zlibpas.pas
+++ b/compat/zlib/contrib/pascal/zlibpas.pas
@@ -10,8 +10,8 @@ unit zlibpas;
interface
const
- ZLIB_VERSION = '1.2.7';
- ZLIB_VERNUM = $1270;
+ ZLIB_VERSION = '1.2.8';
+ ZLIB_VERNUM = $1280;
type
alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
diff --git a/compat/zlib/contrib/puff/puff.c b/compat/zlib/contrib/puff/puff.c
index df8470c..ba58483 100644
--- a/compat/zlib/contrib/puff/puff.c
+++ b/compat/zlib/contrib/puff/puff.c
@@ -1,8 +1,8 @@
/*
* puff.c
- * Copyright (C) 2002-2010 Mark Adler
+ * Copyright (C) 2002-2013 Mark Adler
* For conditions of distribution and use, see copyright notice in puff.h
- * version 2.2, 25 Apr 2010
+ * version 2.3, 21 Jan 2013
*
* puff.c is a simple inflate written to be an unambiguous way to specify the
* deflate format. It is not written for speed but rather simplicity. As a
@@ -76,6 +76,7 @@
* - Move NIL to puff.h
* - Allow incomplete code only if single code length is 1
* - Add full code coverage test to Makefile
+ * 2.3 21 Jan 2013 - Check for invalid code length codes in dynamic blocks
*/
#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */
@@ -704,6 +705,8 @@ local int dynamic(struct state *s)
int len; /* last length to repeat */
symbol = decode(s, &lencode);
+ if (symbol < 0)
+ return symbol; /* invalid symbol */
if (symbol < 16) /* length in 0..15 */
lengths[index++] = symbol;
else { /* repeat instruction */
diff --git a/compat/zlib/contrib/puff/puff.h b/compat/zlib/contrib/puff/puff.h
index 6a0080a..e23a245 100644
--- a/compat/zlib/contrib/puff/puff.h
+++ b/compat/zlib/contrib/puff/puff.h
@@ -1,6 +1,6 @@
/* puff.h
- Copyright (C) 2002-2010 Mark Adler, all rights reserved
- version 2.2, 25 Apr 2010
+ Copyright (C) 2002-2013 Mark Adler, all rights reserved
+ version 2.3, 21 Jan 2013
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
diff --git a/compat/zlib/contrib/puff/pufftest.c b/compat/zlib/contrib/puff/pufftest.c
index 76e35f6..7764814 100644
--- a/compat/zlib/contrib/puff/pufftest.c
+++ b/compat/zlib/contrib/puff/pufftest.c
@@ -1,8 +1,8 @@
/*
* pufftest.c
- * Copyright (C) 2002-2010 Mark Adler
+ * Copyright (C) 2002-2013 Mark Adler
* For conditions of distribution and use, see copyright notice in puff.h
- * version 2.2, 25 Apr 2010
+ * version 2.3, 21 Jan 2013
*/
/* Example of how to use puff().
diff --git a/compat/zlib/contrib/testzlib/testzlib.c b/compat/zlib/contrib/testzlib/testzlib.c
index 135888e..5f659de 100644
--- a/compat/zlib/contrib/testzlib/testzlib.c
+++ b/compat/zlib/contrib/testzlib/testzlib.c
@@ -116,10 +116,10 @@ DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPe
return dwRet;
}
-int ReadFileMemory(const char* filename,long* plFileSize,void** pFilePtr)
+int ReadFileMemory(const char* filename,long* plFileSize,unsigned char** pFilePtr)
{
FILE* stream;
- void* ptr;
+ unsigned char* ptr;
int retVal=1;
stream=fopen(filename, "rb");
if (stream==NULL)
diff --git a/compat/zlib/contrib/vstudio/readme.txt b/compat/zlib/contrib/vstudio/readme.txt
index 59c8b8b..bfdcd9d 100644
--- a/compat/zlib/contrib/vstudio/readme.txt
+++ b/compat/zlib/contrib/vstudio/readme.txt
@@ -1,4 +1,4 @@
-Building instructions for the DLL versions of Zlib 1.2.7
+Building instructions for the DLL versions of Zlib 1.2.8
========================================================
This directory contains projects that build zlib and minizip using
@@ -28,6 +28,11 @@ Build instructions for Visual Studio 2010 (32 bits or 64 bits)
- Uncompress current zlib, including all contrib/* files
- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010
+Build instructions for Visual Studio 2012 (32 bits or 64 bits)
+--------------------------------------------------------------
+- Uncompress current zlib, including all contrib/* files
+- Open contrib\vstudio\vc11\zlibvc.sln with Microsoft Visual C++ 2012
+
Important
---------
diff --git a/compat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc10/minizip.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc10/zlib.rc b/compat/zlib/contrib/vstudio/vc10/zlib.rc
index 8eca4db..73f6476 100644
--- a/compat/zlib/contrib/vstudio/vc10/zlib.rc
+++ b/compat/zlib/contrib/vstudio/vc10/zlib.rc
@@ -2,8 +2,8 @@
#define IDR_VERSION1 1
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
- FILEVERSION 1.2.7,0
- PRODUCTVERSION 1.2.7,0
+ FILEVERSION 1,2,8,0
+ PRODUCTVERSION 1,2,8,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
BEGIN
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
- VALUE "FileVersion", "1.2.7\0"
+ VALUE "FileVersion", "1.2.8\0"
VALUE "InternalName", "zlib\0"
- VALUE "OriginalFilename", "zlib.dll\0"
+ VALUE "OriginalFilename", "zlibwapi.dll\0"
VALUE "ProductName", "ZLib.DLL\0"
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
- VALUE "LegalCopyright", "(C) 1995-2012 Jean-loup Gailly & Mark Adler\0"
+ VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0"
END
END
BLOCK "VarFileInfo"
diff --git a/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
index 2682fca..b9f2bbe 100644
--- a/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
+++ b/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
@@ -182,6 +182,10 @@
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx86
+bld_ml32.bat</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -210,6 +214,10 @@
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx86
+bld_ml32.bat</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
<ClCompile>
@@ -266,6 +274,10 @@
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx64
+bld_ml64.bat</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
<Midl>
@@ -326,6 +338,10 @@
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx64
+bld_ml64.bat</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
<Midl>
diff --git a/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc10/zlibvc.def b/compat/zlib/contrib/vstudio/vc10/zlibvc.def
index 18ddf50..6367046 100644
--- a/compat/zlib/contrib/vstudio/vc10/zlibvc.def
+++ b/compat/zlib/contrib/vstudio/vc10/zlibvc.def
@@ -1,7 +1,7 @@
LIBRARY
; zlib data compression and ZIP file I/O library
-VERSION 1.2.7
+VERSION 1.2.8
EXPORTS
adler32 @1
@@ -134,6 +134,10 @@ EXPORTS
gzgetc_ @161
inflateResetKeep @163
deflateResetKeep @164
-
-; zlib1 v1.2.7 added:
- gzopen_w @165
+
+; zlib1 v1.2.7 added:
+ gzopen_w @165
+
+; zlib1 v1.2.8 added:
+ inflateGetDictionary @166
+ gzvprintf @167
diff --git a/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
index 9218fdc..6ff9ddb 100644
--- a/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
+++ b/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
@@ -180,10 +180,10 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapid</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapid</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName>
</PropertyGroup>
@@ -220,18 +220,14 @@
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
</Link>
<PreBuildEvent>
<Command>cd ..\..\masmx86
@@ -272,18 +268,14 @@ bld_ml32.bat</Command>
</ResourceCompile>
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -321,18 +313,14 @@ bld_ml32.bat</Command>
<Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
</Link>
<PreBuildEvent>
<Command>cd ..\..\masmx86
@@ -371,19 +359,15 @@ bld_ml32.bat</Command>
</ResourceCompile>
<Link>
<AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PreBuildEvent>
- <Command>cd ..\..\contrib\masmx64
+ <Command>cd ..\..\masmx64
bld_ml64.bat</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
@@ -463,15 +447,11 @@ bld_ml64.bat</Command>
<Culture>0x040c</Culture>
</ResourceCompile>
<Link>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
@@ -554,15 +534,11 @@ bld_ml64.bat</Command>
</ResourceCompile>
<Link>
<AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
- <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
- <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
<SubSystem>Windows</SubSystem>
- <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PreBuildEvent>
diff --git a/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user b/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/compat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/miniunz.vcxproj b/compat/zlib/contrib/vstudio/vc11/miniunz.vcxproj
new file mode 100644
index 0000000..8f9f20b
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/miniunz.vcxproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694382A}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\minizip\miniunz.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="zlibvc.vcxproj">
+ <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/minizip.vcxproj b/compat/zlib/contrib/vstudio/vc11/minizip.vcxproj
new file mode 100644
index 0000000..c93d9e6
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/minizip.vcxproj
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)minizip.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\minizip\minizip.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="zlibvc.vcxproj">
+ <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/compat/zlib/contrib/vstudio/vc11/testzlib.vcxproj
new file mode 100644
index 0000000..6d55954
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/testzlib.vcxproj
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+ <RootNamespace>testzlib</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\adler32.c" />
+ <ClCompile Include="..\..\..\compress.c" />
+ <ClCompile Include="..\..\..\crc32.c" />
+ <ClCompile Include="..\..\..\deflate.c" />
+ <ClCompile Include="..\..\..\infback.c" />
+ <ClCompile Include="..\..\masmx64\inffas8664.c">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\..\..\inffast.c" />
+ <ClCompile Include="..\..\..\inflate.c" />
+ <ClCompile Include="..\..\..\inftrees.c" />
+ <ClCompile Include="..\..\testzlib\testzlib.c" />
+ <ClCompile Include="..\..\..\trees.c" />
+ <ClCompile Include="..\..\..\uncompr.c" />
+ <ClCompile Include="..\..\..\zutil.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj b/compat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj
new file mode 100644
index 0000000..9f20c78
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694366A}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <OmitFramePointers>true</OmitFramePointers>
+ <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\testzlib\testzlib.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="zlibvc.vcxproj">
+ <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/zlib.rc b/compat/zlib/contrib/vstudio/vc11/zlib.rc
new file mode 100644
index 0000000..73f6476
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/zlib.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 1,2,8,0
+ PRODUCTVERSION 1,2,8,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
+ VALUE "FileVersion", "1.2.8\0"
+ VALUE "InternalName", "zlib\0"
+ VALUE "OriginalFilename", "zlibwapi.dll\0"
+ VALUE "ProductName", "ZLib.DLL\0"
+ VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
+ VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/compat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/compat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
new file mode 100644
index 0000000..806b76a
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
@@ -0,0 +1,464 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">
+ <Midl>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\adler32.c" />
+ <ClCompile Include="..\..\..\compress.c" />
+ <ClCompile Include="..\..\..\crc32.c" />
+ <ClCompile Include="..\..\..\deflate.c" />
+ <ClCompile Include="..\..\..\gzclose.c" />
+ <ClCompile Include="..\..\..\gzlib.c" />
+ <ClCompile Include="..\..\..\gzread.c" />
+ <ClCompile Include="..\..\..\gzwrite.c" />
+ <ClCompile Include="..\..\..\infback.c" />
+ <ClCompile Include="..\..\masmx64\inffas8664.c">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\..\..\inffast.c" />
+ <ClCompile Include="..\..\..\inflate.c" />
+ <ClCompile Include="..\..\..\inftrees.c" />
+ <ClCompile Include="..\..\minizip\ioapi.c" />
+ <ClCompile Include="..\..\..\trees.c" />
+ <ClCompile Include="..\..\..\uncompr.c" />
+ <ClCompile Include="..\..\minizip\unzip.c" />
+ <ClCompile Include="..\..\minizip\zip.c" />
+ <ClCompile Include="..\..\..\zutil.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="zlib.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="zlibvc.def" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc11/zlibvc.def b/compat/zlib/contrib/vstudio/vc11/zlibvc.def
new file mode 100644
index 0000000..6367046
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/zlibvc.def
@@ -0,0 +1,143 @@
+LIBRARY
+; zlib data compression and ZIP file I/O library
+
+VERSION 1.2.8
+
+EXPORTS
+ adler32 @1
+ compress @2
+ crc32 @3
+ deflate @4
+ deflateCopy @5
+ deflateEnd @6
+ deflateInit2_ @7
+ deflateInit_ @8
+ deflateParams @9
+ deflateReset @10
+ deflateSetDictionary @11
+ gzclose @12
+ gzdopen @13
+ gzerror @14
+ gzflush @15
+ gzopen @16
+ gzread @17
+ gzwrite @18
+ inflate @19
+ inflateEnd @20
+ inflateInit2_ @21
+ inflateInit_ @22
+ inflateReset @23
+ inflateSetDictionary @24
+ inflateSync @25
+ uncompress @26
+ zlibVersion @27
+ gzprintf @28
+ gzputc @29
+ gzgetc @30
+ gzseek @31
+ gzrewind @32
+ gztell @33
+ gzeof @34
+ gzsetparams @35
+ zError @36
+ inflateSyncPoint @37
+ get_crc_table @38
+ compress2 @39
+ gzputs @40
+ gzgets @41
+ inflateCopy @42
+ inflateBackInit_ @43
+ inflateBack @44
+ inflateBackEnd @45
+ compressBound @46
+ deflateBound @47
+ gzclearerr @48
+ gzungetc @49
+ zlibCompileFlags @50
+ deflatePrime @51
+ deflatePending @52
+
+ unzOpen @61
+ unzClose @62
+ unzGetGlobalInfo @63
+ unzGetCurrentFileInfo @64
+ unzGoToFirstFile @65
+ unzGoToNextFile @66
+ unzOpenCurrentFile @67
+ unzReadCurrentFile @68
+ unzOpenCurrentFile3 @69
+ unztell @70
+ unzeof @71
+ unzCloseCurrentFile @72
+ unzGetGlobalComment @73
+ unzStringFileNameCompare @74
+ unzLocateFile @75
+ unzGetLocalExtrafield @76
+ unzOpen2 @77
+ unzOpenCurrentFile2 @78
+ unzOpenCurrentFilePassword @79
+
+ zipOpen @80
+ zipOpenNewFileInZip @81
+ zipWriteInFileInZip @82
+ zipCloseFileInZip @83
+ zipClose @84
+ zipOpenNewFileInZip2 @86
+ zipCloseFileInZipRaw @87
+ zipOpen2 @88
+ zipOpenNewFileInZip3 @89
+
+ unzGetFilePos @100
+ unzGoToFilePos @101
+
+ fill_win32_filefunc @110
+
+; zlibwapi v1.2.4 added:
+ fill_win32_filefunc64 @111
+ fill_win32_filefunc64A @112
+ fill_win32_filefunc64W @113
+
+ unzOpen64 @120
+ unzOpen2_64 @121
+ unzGetGlobalInfo64 @122
+ unzGetCurrentFileInfo64 @124
+ unzGetCurrentFileZStreamPos64 @125
+ unztell64 @126
+ unzGetFilePos64 @127
+ unzGoToFilePos64 @128
+
+ zipOpen64 @130
+ zipOpen2_64 @131
+ zipOpenNewFileInZip64 @132
+ zipOpenNewFileInZip2_64 @133
+ zipOpenNewFileInZip3_64 @134
+ zipOpenNewFileInZip4_64 @135
+ zipCloseFileInZipRaw64 @136
+
+; zlib1 v1.2.4 added:
+ adler32_combine @140
+ crc32_combine @142
+ deflateSetHeader @144
+ deflateTune @145
+ gzbuffer @146
+ gzclose_r @147
+ gzclose_w @148
+ gzdirect @149
+ gzoffset @150
+ inflateGetHeader @156
+ inflateMark @157
+ inflatePrime @158
+ inflateReset2 @159
+ inflateUndermine @160
+
+; zlib1 v1.2.6 added:
+ gzgetc_ @161
+ inflateResetKeep @163
+ deflateResetKeep @164
+
+; zlib1 v1.2.7 added:
+ gzopen_w @165
+
+; zlib1 v1.2.8 added:
+ inflateGetDictionary @166
+ gzvprintf @167
diff --git a/compat/zlib/contrib/vstudio/vc11/zlibvc.sln b/compat/zlib/contrib/vstudio/vc11/zlibvc.sln
new file mode 100644
index 0000000..9fcbafd
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/zlibvc.sln
@@ -0,0 +1,117 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Itanium = Debug|Itanium
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Itanium = Release|Itanium
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium
+ ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32
+ ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+ {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+ {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+ {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+ {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+ {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/compat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/compat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
new file mode 100644
index 0000000..c65b95f
--- /dev/null
+++ b/compat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
@@ -0,0 +1,688 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Itanium">
+ <Configuration>Debug</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+ <Configuration>ReleaseWithoutAsm</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Itanium">
+ <Configuration>Release</Configuration>
+ <Platform>Itanium</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8FD826F8-3739-44E6-8CC8-997122E53B8D}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ </Link>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx86
+bld_ml32.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ </Link>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx86
+bld_ml32.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <PreBuildEvent>
+ <Command>cd ..\..\contrib\masmx64
+bld_ml64.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <PreBuildEvent>
+ <Command>cd ..\..\masmx64
+bld_ml64.bat</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Itanium</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+ <AssemblerOutput>All</AssemblerOutput>
+ <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+ <BrowseInformation>
+ </BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x040c</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+ <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+ <GenerateMapFile>true</GenerateMapFile>
+ <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+ <TargetMachine>MachineIA64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\adler32.c" />
+ <ClCompile Include="..\..\..\compress.c" />
+ <ClCompile Include="..\..\..\crc32.c" />
+ <ClCompile Include="..\..\..\deflate.c" />
+ <ClCompile Include="..\..\..\gzclose.c" />
+ <ClCompile Include="..\..\..\gzlib.c" />
+ <ClCompile Include="..\..\..\gzread.c" />
+ <ClCompile Include="..\..\..\gzwrite.c" />
+ <ClCompile Include="..\..\..\infback.c" />
+ <ClCompile Include="..\..\masmx64\inffas8664.c">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\..\..\inffast.c" />
+ <ClCompile Include="..\..\..\inflate.c" />
+ <ClCompile Include="..\..\..\inftrees.c" />
+ <ClCompile Include="..\..\minizip\ioapi.c" />
+ <ClCompile Include="..\..\minizip\iowin32.c" />
+ <ClCompile Include="..\..\..\trees.c" />
+ <ClCompile Include="..\..\..\uncompr.c" />
+ <ClCompile Include="..\..\minizip\unzip.c">
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <ClCompile Include="..\..\minizip\zip.c">
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <ClCompile Include="..\..\..\zutil.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="zlib.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="zlibvc.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\deflate.h" />
+ <ClInclude Include="..\..\..\infblock.h" />
+ <ClInclude Include="..\..\..\infcodes.h" />
+ <ClInclude Include="..\..\..\inffast.h" />
+ <ClInclude Include="..\..\..\inftrees.h" />
+ <ClInclude Include="..\..\..\infutil.h" />
+ <ClInclude Include="..\..\..\zconf.h" />
+ <ClInclude Include="..\..\..\zlib.h" />
+ <ClInclude Include="..\..\..\zutil.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/compat/zlib/contrib/vstudio/vc9/zlib.rc b/compat/zlib/contrib/vstudio/vc9/zlib.rc
index 8eca4db..73f6476 100644
--- a/compat/zlib/contrib/vstudio/vc9/zlib.rc
+++ b/compat/zlib/contrib/vstudio/vc9/zlib.rc
@@ -2,8 +2,8 @@
#define IDR_VERSION1 1
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
- FILEVERSION 1.2.7,0
- PRODUCTVERSION 1.2.7,0
+ FILEVERSION 1,2,8,0
+ PRODUCTVERSION 1,2,8,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
BEGIN
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
- VALUE "FileVersion", "1.2.7\0"
+ VALUE "FileVersion", "1.2.8\0"
VALUE "InternalName", "zlib\0"
- VALUE "OriginalFilename", "zlib.dll\0"
+ VALUE "OriginalFilename", "zlibwapi.dll\0"
VALUE "ProductName", "ZLib.DLL\0"
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
- VALUE "LegalCopyright", "(C) 1995-2012 Jean-loup Gailly & Mark Adler\0"
+ VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0"
END
END
BLOCK "VarFileInfo"
diff --git a/compat/zlib/contrib/vstudio/vc9/zlibvc.def b/compat/zlib/contrib/vstudio/vc9/zlibvc.def
index 2df8bb3..6367046 100644
--- a/compat/zlib/contrib/vstudio/vc9/zlibvc.def
+++ b/compat/zlib/contrib/vstudio/vc9/zlibvc.def
@@ -1,7 +1,7 @@
LIBRARY
; zlib data compression and ZIP file I/O library
-VERSION 1.2.7
+VERSION 1.2.8
EXPORTS
adler32 @1
@@ -133,7 +133,11 @@ EXPORTS
; zlib1 v1.2.6 added:
gzgetc_ @161
inflateResetKeep @163
- deflateResetKeep @164
-
-; zlib1 v1.2.7 added:
- gzopen_w @165
+ deflateResetKeep @164
+
+; zlib1 v1.2.7 added:
+ gzopen_w @165
+
+; zlib1 v1.2.8 added:
+ inflateGetDictionary @166
+ gzvprintf @167
diff --git a/compat/zlib/deflate.c b/compat/zlib/deflate.c
index 9e4c2cb..6969577 100644
--- a/compat/zlib/deflate.c
+++ b/compat/zlib/deflate.c
@@ -1,5 +1,5 @@
/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -52,7 +52,7 @@
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.7 Copyright 1995-2012 Jean-loup Gailly and Mark Adler ";
+ " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -305,7 +305,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
s->pending_buf == Z_NULL) {
s->status = FINISH_STATE;
- strm->msg = (char*)ERR_MSG(Z_MEM_ERROR);
+ strm->msg = ERR_MSG(Z_MEM_ERROR);
deflateEnd (strm);
return Z_MEM_ERROR;
}
@@ -329,7 +329,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
uInt str, n;
int wrap;
unsigned avail;
- unsigned char *next;
+ z_const unsigned char *next;
if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
return Z_STREAM_ERROR;
@@ -359,7 +359,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
avail = strm->avail_in;
next = strm->next_in;
strm->avail_in = dictLength;
- strm->next_in = (Bytef *)dictionary;
+ strm->next_in = (z_const Bytef *)dictionary;
fill_window(s);
while (s->lookahead >= MIN_MATCH) {
str = s->strstart;
@@ -513,6 +513,8 @@ int ZEXPORT deflateParams(strm, level, strategy)
strm->total_in != 0) {
/* Flush the last buffer: */
err = deflate(strm, Z_BLOCK);
+ if (err == Z_BUF_ERROR && s->pending == 0)
+ err = Z_OK;
}
if (s->level != level) {
s->level = level;
diff --git a/compat/zlib/deflate.h b/compat/zlib/deflate.h
index fbac44d..ce0299e 100644
--- a/compat/zlib/deflate.h
+++ b/compat/zlib/deflate.h
@@ -104,7 +104,7 @@ typedef struct internal_state {
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
gz_headerp gzhead; /* gzip header information to write */
uInt gzindex; /* where in extra, name, or comment */
- Byte method; /* STORED (for zip only) or DEFLATED */
+ Byte method; /* can only be DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
/* used by deflate.c: */
diff --git a/compat/zlib/examples/enough.c b/compat/zlib/examples/enough.c
index c40410b..b991144 100644
--- a/compat/zlib/examples/enough.c
+++ b/compat/zlib/examples/enough.c
@@ -1,7 +1,7 @@
/* enough.c -- determine the maximum size of inflate's Huffman code tables over
* all possible valid and complete Huffman codes, subject to a length limit.
- * Copyright (C) 2007, 2008 Mark Adler
- * Version 1.3 17 February 2008 Mark Adler
+ * Copyright (C) 2007, 2008, 2012 Mark Adler
+ * Version 1.4 18 August 2012 Mark Adler
*/
/* Version history:
@@ -14,6 +14,9 @@
1.3 17 Feb 2008 Add argument for initial root table size
Fix bug for initial root table size == max - 1
Use a macro to compute the history index
+ 1.4 18 Aug 2012 Avoid shifts more than bits in type (caused endless loop!)
+ Clean up comparisons of different types
+ Clean up code indentation
*/
/*
@@ -236,8 +239,8 @@ local big_t count(int syms, int len, int left)
for (use = least; use <= most; use++) {
got = count(syms - use, len + 1, (left - use) << 1);
sum += got;
- if (got == -1 || sum < got) /* overflow */
- return -1;
+ if (got == (big_t)0 - 1 || sum < got) /* overflow */
+ return (big_t)0 - 1;
}
/* verify that all recursive calls are productive */
@@ -458,6 +461,7 @@ int main(int argc, char **argv)
int n; /* number of symbols to code for this run */
big_t got; /* return value of count() */
big_t sum; /* accumulated number of codes over n */
+ code_t word; /* for counting bits in code_t */
/* set up globals for cleanup() */
code = NULL;
@@ -466,19 +470,19 @@ int main(int argc, char **argv)
/* get arguments -- default to the deflate literal/length code */
syms = 286;
- root = 9;
+ root = 9;
max = 15;
if (argc > 1) {
syms = atoi(argv[1]);
if (argc > 2) {
root = atoi(argv[2]);
- if (argc > 3)
- max = atoi(argv[3]);
- }
+ if (argc > 3)
+ max = atoi(argv[3]);
+ }
}
if (argc > 4 || syms < 2 || root < 1 || max < 1) {
fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n",
- stderr);
+ stderr);
return 1;
}
@@ -487,18 +491,17 @@ int main(int argc, char **argv)
max = syms - 1;
/* determine the number of bits in a code_t */
- n = 0;
- while (((code_t)1 << n) != 0)
- n++;
+ for (n = 0, word = 1; word; n++, word <<= 1)
+ ;
/* make sure that the calculation of most will not overflow */
- if (max > n || syms - 2 >= (((code_t)0 - 1) >> (max - 1))) {
+ if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) {
fputs("abort: code length too long for internal types\n", stderr);
return 1;
}
/* reject impossible code requests */
- if (syms - 1 > ((code_t)1 << max) - 1) {
+ if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) {
fprintf(stderr, "%d symbols cannot be coded in %d bits\n",
syms, max);
return 1;
@@ -532,7 +535,7 @@ int main(int argc, char **argv)
for (n = 2; n <= syms; n++) {
got = count(n, 1, 2);
sum += got;
- if (got == -1 || sum < got) { /* overflow */
+ if (got == (big_t)0 - 1 || sum < got) { /* overflow */
fputs("abort: can't count that high!\n", stderr);
cleanup();
return 1;
@@ -556,9 +559,9 @@ int main(int argc, char **argv)
}
/* find and show maximum inflate table usage */
- if (root > max) /* reduce root to max length */
- root = max;
- if (syms < ((code_t)1 << (root + 1)))
+ if (root > max) /* reduce root to max length */
+ root = max;
+ if ((code_t)syms < ((code_t)1 << (root + 1)))
enough(syms);
else
puts("cannot handle minimum code lengths > root");
diff --git a/compat/zlib/examples/gun.c b/compat/zlib/examples/gun.c
index 72b0882..89e484f 100644
--- a/compat/zlib/examples/gun.c
+++ b/compat/zlib/examples/gun.c
@@ -1,7 +1,7 @@
/* gun.c -- simple gunzip to give an example of the use of inflateBack()
- * Copyright (C) 2003, 2005, 2008, 2010 Mark Adler
+ * Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
- Version 1.6 17 January 2010 Mark Adler */
+ Version 1.7 12 August 2012 Mark Adler */
/* Version history:
1.0 16 Feb 2003 First version for testing of inflateBack()
@@ -18,6 +18,7 @@
1.4 8 Dec 2006 LZW decompression speed improvements
1.5 9 Feb 2008 Avoid warning in latest version of gcc
1.6 17 Jan 2010 Avoid signed/unsigned comparison warnings
+ 1.7 12 Aug 2012 Update for z_const usage in zlib 1.2.8
*/
/*
@@ -85,7 +86,7 @@ struct ind {
/* Load input buffer, assumed to be empty, and return bytes loaded and a
pointer to them. read() is called until the buffer is full, or until it
returns end-of-file or error. Return 0 on error. */
-local unsigned in(void *in_desc, unsigned char **buf)
+local unsigned in(void *in_desc, z_const unsigned char **buf)
{
int ret;
unsigned len;
@@ -196,7 +197,7 @@ unsigned char match[65280 + 2]; /* buffer for reversed match or gzip
file, read error, or write error (a write error indicated by strm->next_in
not equal to Z_NULL), or Z_DATA_ERROR for invalid input.
*/
-local int lunpipe(unsigned have, unsigned char *next, struct ind *indp,
+local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp,
int outfile, z_stream *strm)
{
int last; /* last byte read by NEXT(), or -1 if EOF */
@@ -383,7 +384,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile)
{
int ret, first, last;
unsigned have, flags, len;
- unsigned char *next = NULL;
+ z_const unsigned char *next = NULL;
struct ind ind, *indp;
struct outd outd;
diff --git a/compat/zlib/examples/gzappend.c b/compat/zlib/examples/gzappend.c
index e9e878e..662dec3 100644
--- a/compat/zlib/examples/gzappend.c
+++ b/compat/zlib/examples/gzappend.c
@@ -1,7 +1,7 @@
/* gzappend -- command to append to a gzip file
- Copyright (C) 2003 Mark Adler, all rights reserved
- version 1.1, 4 Nov 2003
+ Copyright (C) 2003, 2012 Mark Adler, all rights reserved
+ version 1.2, 11 Oct 2012
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
@@ -39,6 +39,8 @@
* - Keep gzip file clean on appended file read errors
* - Use in-place rotate instead of auxiliary buffer
* (Why you ask? Because it was fun to write!)
+ * 1.2 11 Oct 2012 - Fix for proper z_const usage
+ * - Check for input buffer malloc failure
*/
/*
@@ -170,7 +172,7 @@ typedef struct {
int size; /* 1 << size is bytes in buf */
unsigned left; /* bytes available at next */
unsigned char *buf; /* buffer */
- unsigned char *next; /* next byte in buffer */
+ z_const unsigned char *next; /* next byte in buffer */
char *name; /* file name for error messages */
} file;
@@ -399,14 +401,14 @@ local void gztack(char *name, int gd, z_stream *strm, int last)
}
/* allocate buffers */
- in = fd == -1 ? NULL : malloc(CHUNK);
+ in = malloc(CHUNK);
out = malloc(CHUNK);
- if (out == NULL) bye("out of memory", "");
+ if (in == NULL || out == NULL) bye("out of memory", "");
/* compress input file and append to gzip file */
do {
/* get more input */
- len = fd == -1 ? 0 : read(fd, in, CHUNK);
+ len = read(fd, in, CHUNK);
if (len == -1) {
fprintf(stderr,
"gzappend warning: error reading %s, skipping rest ...\n",
@@ -453,7 +455,7 @@ local void gztack(char *name, int gd, z_stream *strm, int last)
/* clean up and return */
free(out);
- if (in != NULL) free(in);
+ free(in);
if (fd > 0) close(fd);
}
@@ -467,11 +469,13 @@ int main(int argc, char **argv)
z_stream strm;
/* ignore command name */
- argv++;
+ argc--; argv++;
/* provide usage if no arguments */
if (*argv == NULL) {
- printf("gzappend 1.1 (4 Nov 2003) Copyright (C) 2003 Mark Adler\n");
+ printf(
+ "gzappend 1.2 (11 Oct 2012) Copyright (C) 2003, 2012 Mark Adler\n"
+ );
printf(
"usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n");
return 0;
diff --git a/compat/zlib/examples/gzjoin.c b/compat/zlib/examples/gzjoin.c
index 129347c..89e8098 100644
--- a/compat/zlib/examples/gzjoin.c
+++ b/compat/zlib/examples/gzjoin.c
@@ -1,7 +1,7 @@
/* gzjoin -- command to join gzip files into one gzip file
- Copyright (C) 2004 Mark Adler, all rights reserved
- version 1.0, 11 Dec 2004
+ Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved
+ version 1.2, 14 Aug 2012
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
@@ -27,6 +27,7 @@
*
* 1.0 11 Dec 2004 - First version
* 1.1 12 Jun 2005 - Changed ssize_t to long for portability
+ * 1.2 14 Aug 2012 - Clean up for z_const usage
*/
/*
@@ -308,7 +309,7 @@ local void gzcopy(char *name, int clr, unsigned long *crc, unsigned long *tot,
/* inflate and copy compressed data, clear last-block bit if requested */
len = 0;
zpull(&strm, in);
- start = strm.next_in;
+ start = in->next;
last = start[0] & 1;
if (last && clr)
start[0] &= ~1;
@@ -351,7 +352,7 @@ local void gzcopy(char *name, int clr, unsigned long *crc, unsigned long *tot,
pos = 0x100 >> pos;
last = strm.next_in[-1] & pos;
if (last && clr)
- strm.next_in[-1] &= ~pos;
+ in->buf[strm.next_in - in->buf - 1] &= ~pos;
}
else {
/* next last-block bit is in next unused byte */
@@ -364,14 +365,14 @@ local void gzcopy(char *name, int clr, unsigned long *crc, unsigned long *tot,
}
last = strm.next_in[0] & 1;
if (last && clr)
- strm.next_in[0] &= ~1;
+ in->buf[strm.next_in - in->buf] &= ~1;
}
}
}
/* update buffer with unused input */
in->left = strm.avail_in;
- in->next = strm.next_in;
+ in->next = in->buf + (strm.next_in - in->buf);
/* copy used input, write empty blocks to get to byte boundary */
pos = strm.data_type & 7;
diff --git a/compat/zlib/examples/gzlog.c b/compat/zlib/examples/gzlog.c
index d70aaca..922f878 100644
--- a/compat/zlib/examples/gzlog.c
+++ b/compat/zlib/examples/gzlog.c
@@ -1,8 +1,8 @@
/*
* gzlog.c
- * Copyright (C) 2004, 2008 Mark Adler, all rights reserved
+ * Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved
* For conditions of distribution and use, see copyright notice in gzlog.h
- * version 2.0, 25 Apr 2008
+ * version 2.2, 14 Aug 2012
*/
/*
@@ -750,7 +750,8 @@ local int log_recover(struct log *log, int op)
strcpy(log->end, ".add");
if (stat(log->path, &st) == 0 && st.st_size) {
len = (size_t)(st.st_size);
- if (len != st.st_size || (data = malloc(st.st_size)) == NULL) {
+ if ((off_t)len != st.st_size ||
+ (data = malloc(st.st_size)) == NULL) {
log_log(log, op, "allocation failure");
return -2;
}
@@ -758,7 +759,7 @@ local int log_recover(struct log *log, int op)
log_log(log, op, ".add file read failure");
return -1;
}
- ret = read(fd, data, len) != len;
+ ret = (size_t)read(fd, data, len) != len;
close(fd);
if (ret) {
log_log(log, op, ".add file read failure");
@@ -913,7 +914,7 @@ int gzlog_compress(gzlog *logd)
struct log *log = logd;
/* check arguments */
- if (log == NULL || strcmp(log->id, LOGID) || len < 0)
+ if (log == NULL || strcmp(log->id, LOGID))
return -3;
/* see if we lost the lock -- if so get it again and reload the extra
@@ -952,7 +953,7 @@ int gzlog_compress(gzlog *logd)
fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd < 0)
break;
- ret = write(fd, data, len) != len;
+ ret = (size_t)write(fd, data, len) != len;
if (ret | close(fd))
break;
log_touch(log);
@@ -963,7 +964,7 @@ int gzlog_compress(gzlog *logd)
if (fd < 0)
break;
next = DICT > len ? len : DICT;
- ret = write(fd, (char *)data + len - next, next) != next;
+ ret = (size_t)write(fd, (char *)data + len - next, next) != next;
if (ret | close(fd))
break;
log_touch(log);
@@ -997,9 +998,9 @@ int gzlog_write(gzlog *logd, void *data, size_t len)
struct log *log = logd;
/* check arguments */
- if (log == NULL || strcmp(log->id, LOGID) || len < 0)
+ if (log == NULL || strcmp(log->id, LOGID))
return -3;
- if (data == NULL || len == 0)
+ if (data == NULL || len <= 0)
return 0;
/* see if we lost the lock -- if so get it again and reload the extra
@@ -1013,7 +1014,7 @@ int gzlog_write(gzlog *logd, void *data, size_t len)
fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd < 0)
return -1;
- ret = write(fd, data, len) != len;
+ ret = (size_t)write(fd, data, len) != len;
if (ret | close(fd))
return -1;
log_touch(log);
diff --git a/compat/zlib/examples/gzlog.h b/compat/zlib/examples/gzlog.h
index c461426..86f0cec 100644
--- a/compat/zlib/examples/gzlog.h
+++ b/compat/zlib/examples/gzlog.h
@@ -1,6 +1,6 @@
/* gzlog.h
- Copyright (C) 2004, 2008 Mark Adler, all rights reserved
- version 2.0, 25 Apr 2008
+ Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved
+ version 2.2, 14 Aug 2012
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
@@ -27,6 +27,8 @@
Interface changed slightly in that now path is a prefix
Compression now occurs as needed during gzlog_write()
gzlog_write() now always leaves the log file as valid gzip
+ 2.1 8 Jul 2012 Fix argument checks in gzlog_compress() and gzlog_write()
+ 2.2 14 Aug 2012 Clean up signed comparisons
*/
/*
diff --git a/compat/zlib/examples/zran.c b/compat/zlib/examples/zran.c
index 617a130..278f9ad 100644
--- a/compat/zlib/examples/zran.c
+++ b/compat/zlib/examples/zran.c
@@ -1,7 +1,12 @@
/* zran.c -- example of zlib/gzip stream indexing and random access
- * Copyright (C) 2005 Mark Adler
+ * Copyright (C) 2005, 2012 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
- Version 1.0 29 May 2005 Mark Adler */
+ Version 1.1 29 Sep 2012 Mark Adler */
+
+/* Version History:
+ 1.0 29 May 2005 First version
+ 1.1 29 Sep 2012 Fix memory reallocation error
+ */
/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary()
for random access of a compressed file. A file containing a zlib or gzip
@@ -221,7 +226,7 @@ local int build_index(FILE *in, off_t span, struct access **built)
/* clean up and return index (release unused entries in list) */
(void)inflateEnd(&strm);
- index = realloc(index, sizeof(struct point) * index->have);
+ index->list = realloc(index->list, sizeof(struct point) * index->have);
index->size = index->have;
*built = index;
return index->size;
diff --git a/compat/zlib/gzguts.h b/compat/zlib/gzguts.h
index ee3f281..d87659d 100644
--- a/compat/zlib/gzguts.h
+++ b/compat/zlib/gzguts.h
@@ -1,5 +1,5 @@
/* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -35,6 +35,13 @@
# include <io.h>
#endif
+#ifdef WINAPI_FAMILY
+# define open _open
+# define read _read
+# define write _write
+# define close _close
+#endif
+
#ifdef NO_DEFLATE /* for compatibility with old definition */
# define NO_GZCOMPRESS
#endif
@@ -60,7 +67,7 @@
#ifndef HAVE_VSNPRINTF
# ifdef MSDOS
/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
- but for now we just assume it doesn't. */
+ but for now we just assume it doesn't. */
# define NO_vsnprintf
# endif
# ifdef __TURBOC__
@@ -88,6 +95,14 @@
# endif
#endif
+/* unlike snprintf (which is required in C99, yet still not supported by
+ Microsoft more than a decade later!), _snprintf does not guarantee null
+ termination of the result -- however this is only used in gzlib.c where
+ the result is assured to fit in the space provided */
+#ifdef _MSC_VER
+# define snprintf _snprintf
+#endif
+
#ifndef local
# define local static
#endif
@@ -127,7 +142,8 @@
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
-/* default i/o buffer size -- double this for output when reading */
+/* default i/o buffer size -- double this for output when reading (this and
+ twice this must be able to fit in an unsigned type) */
#define GZBUFSIZE 8192
/* gzip modes, also provide a little integrity check on the passed structure */
diff --git a/compat/zlib/gzlib.c b/compat/zlib/gzlib.c
index ca55c6e..fae202e 100644
--- a/compat/zlib/gzlib.c
+++ b/compat/zlib/gzlib.c
@@ -1,5 +1,5 @@
/* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004, 2010, 2011, 2012 Mark Adler
+ * Copyright (C) 2004, 2010, 2011, 2012, 2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -108,7 +108,7 @@ local gzFile gz_open(path, fd, mode)
return NULL;
/* allocate gzFile structure to return */
- state = malloc(sizeof(gz_state));
+ state = (gz_statep)malloc(sizeof(gz_state));
if (state == NULL)
return NULL;
state->size = 0; /* no buffers allocated yet */
@@ -162,8 +162,10 @@ local gzFile gz_open(path, fd, mode)
break;
case 'F':
state->strategy = Z_FIXED;
+ break;
case 'T':
state->direct = 1;
+ break;
default: /* could consider as an error, but just ignore */
;
}
@@ -194,8 +196,8 @@ local gzFile gz_open(path, fd, mode)
}
else
#endif
- len = strlen(path);
- state->path = malloc(len + 1);
+ len = strlen((const char *)path);
+ state->path = (char *)malloc(len + 1);
if (state->path == NULL) {
free(state);
return NULL;
@@ -208,7 +210,11 @@ local gzFile gz_open(path, fd, mode)
*(state->path) = 0;
else
#endif
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(state->path, len + 1, "%s", (const char *)path);
+#else
strcpy(state->path, path);
+#endif
/* compute the flags for open() */
oflag =
@@ -236,7 +242,7 @@ local gzFile gz_open(path, fd, mode)
#ifdef _WIN32
fd == -2 ? _wopen(path, oflag, 0666) :
#endif
- open(path, oflag, 0666));
+ open((const char *)path, oflag, 0666));
if (state->fd == -1) {
free(state->path);
free(state);
@@ -282,9 +288,13 @@ gzFile ZEXPORT gzdopen(fd, mode)
char *path; /* identifier for error messages */
gzFile gz;
- if (fd == -1 || (path = malloc(7 + 3 * sizeof(int))) == NULL)
+ if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL)
return NULL;
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd); /* for debugging */
+#else
sprintf(path, "<fd:%d>", fd); /* for debugging */
+#endif
gz = gz_open(path, fd, mode);
free(path);
return gz;
@@ -531,7 +541,8 @@ const char * ZEXPORT gzerror(file, errnum)
/* return error information */
if (errnum != NULL)
*errnum = state->err;
- return state->msg == NULL ? "" : state->msg;
+ return state->err == Z_MEM_ERROR ? "out of memory" :
+ (state->msg == NULL ? "" : state->msg);
}
/* -- see zlib.h -- */
@@ -582,21 +593,24 @@ void ZLIB_INTERNAL gz_error(state, err, msg)
if (msg == NULL)
return;
- /* for an out of memory error, save as static string */
- if (err == Z_MEM_ERROR) {
- state->msg = (char *)msg;
+ /* for an out of memory error, return literal string when requested */
+ if (err == Z_MEM_ERROR)
return;
- }
/* construct error message with path */
- if ((state->msg = malloc(strlen(state->path) + strlen(msg) + 3)) == NULL) {
+ if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
+ NULL) {
state->err = Z_MEM_ERROR;
- state->msg = (char *)"out of memory";
return;
}
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
+ "%s%s%s", state->path, ": ", msg);
+#else
strcpy(state->msg, state->path);
strcat(state->msg, ": ");
strcat(state->msg, msg);
+#endif
return;
}
diff --git a/compat/zlib/gzread.c b/compat/zlib/gzread.c
index 3493d34..bf4538e 100644
--- a/compat/zlib/gzread.c
+++ b/compat/zlib/gzread.c
@@ -1,5 +1,5 @@
/* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -58,7 +58,8 @@ local int gz_avail(state)
return -1;
if (state->eof == 0) {
if (strm->avail_in) { /* copy what's there to the start */
- unsigned char *p = state->in, *q = strm->next_in;
+ unsigned char *p = state->in;
+ unsigned const char *q = strm->next_in;
unsigned n = strm->avail_in;
do {
*p++ = *q++;
@@ -90,8 +91,8 @@ local int gz_look(state)
/* allocate read buffers and inflate memory */
if (state->size == 0) {
/* allocate buffers */
- state->in = malloc(state->want);
- state->out = malloc(state->want << 1);
+ state->in = (unsigned char *)malloc(state->want);
+ state->out = (unsigned char *)malloc(state->want << 1);
if (state->in == NULL || state->out == NULL) {
if (state->out != NULL)
free(state->out);
@@ -352,14 +353,14 @@ int ZEXPORT gzread(file, buf, len)
/* large len -- read directly into user buffer */
else if (state->how == COPY) { /* read directly */
- if (gz_load(state, buf, len, &n) == -1)
+ if (gz_load(state, (unsigned char *)buf, len, &n) == -1)
return -1;
}
/* large len -- decompress directly into user buffer */
else { /* state->how == GZIP */
strm->avail_out = len;
- strm->next_out = buf;
+ strm->next_out = (unsigned char *)buf;
if (gz_decomp(state) == -1)
return -1;
n = state->x.have;
@@ -378,7 +379,11 @@ int ZEXPORT gzread(file, buf, len)
}
/* -- see zlib.h -- */
-#undef gzgetc
+#ifdef Z_PREFIX_SET
+# undef z_gzgetc
+#else
+# undef gzgetc
+#endif
int ZEXPORT gzgetc(file)
gzFile file;
{
@@ -518,7 +523,7 @@ char * ZEXPORT gzgets(file, buf, len)
/* look for end-of-line in current output buffer */
n = state->x.have > left ? left : state->x.have;
- eol = memchr(state->x.next, '\n', n);
+ eol = (unsigned char *)memchr(state->x.next, '\n', n);
if (eol != NULL)
n = (unsigned)(eol - state->x.next) + 1;
diff --git a/compat/zlib/gzwrite.c b/compat/zlib/gzwrite.c
index 27cb342..aa767fb 100644
--- a/compat/zlib/gzwrite.c
+++ b/compat/zlib/gzwrite.c
@@ -1,5 +1,5 @@
/* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -19,7 +19,7 @@ local int gz_init(state)
z_streamp strm = &(state->strm);
/* allocate input buffer */
- state->in = malloc(state->want);
+ state->in = (unsigned char *)malloc(state->want);
if (state->in == NULL) {
gz_error(state, Z_MEM_ERROR, "out of memory");
return -1;
@@ -28,7 +28,7 @@ local int gz_init(state)
/* only need output buffer and deflate state if compressing */
if (!state->direct) {
/* allocate output buffer */
- state->out = malloc(state->want);
+ state->out = (unsigned char *)malloc(state->want);
if (state->out == NULL) {
free(state->in);
gz_error(state, Z_MEM_ERROR, "out of memory");
@@ -168,7 +168,6 @@ int ZEXPORT gzwrite(file, buf, len)
unsigned len;
{
unsigned put = len;
- unsigned n;
gz_statep state;
z_streamp strm;
@@ -208,16 +207,19 @@ int ZEXPORT gzwrite(file, buf, len)
if (len < state->size) {
/* copy to input buffer, compress when full */
do {
+ unsigned have, copy;
+
if (strm->avail_in == 0)
strm->next_in = state->in;
- n = state->size - strm->avail_in;
- if (n > len)
- n = len;
- memcpy(strm->next_in + strm->avail_in, buf, n);
- strm->avail_in += n;
- state->x.pos += n;
- buf = (char *)buf + n;
- len -= n;
+ have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
+ copy = state->size - have;
+ if (copy > len)
+ copy = len;
+ memcpy(state->in + have, buf, copy);
+ strm->avail_in += copy;
+ state->x.pos += copy;
+ buf = (const char *)buf + copy;
+ len -= copy;
if (len && gz_comp(state, Z_NO_FLUSH) == -1)
return 0;
} while (len);
@@ -229,7 +231,7 @@ int ZEXPORT gzwrite(file, buf, len)
/* directly compress user buffer to file */
strm->avail_in = len;
- strm->next_in = (voidp)buf;
+ strm->next_in = (z_const Bytef *)buf;
state->x.pos += len;
if (gz_comp(state, Z_NO_FLUSH) == -1)
return 0;
@@ -244,6 +246,7 @@ int ZEXPORT gzputc(file, c)
gzFile file;
int c;
{
+ unsigned have;
unsigned char buf[1];
gz_statep state;
z_streamp strm;
@@ -267,12 +270,16 @@ int ZEXPORT gzputc(file, c)
/* try writing to input buffer for speed (state->size == 0 if buffer not
initialized) */
- if (strm->avail_in < state->size) {
+ if (state->size) {
if (strm->avail_in == 0)
strm->next_in = state->in;
- strm->next_in[strm->avail_in++] = c;
- state->x.pos++;
- return c & 0xff;
+ have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
+ if (have < state->size) {
+ state->in[have] = c;
+ strm->avail_in++;
+ state->x.pos++;
+ return c & 0xff;
+ }
}
/* no room in buffer or not initialized, use gz_write() */
@@ -300,12 +307,11 @@ int ZEXPORT gzputs(file, str)
#include <stdarg.h>
/* -- see zlib.h -- */
-int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
+int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
{
int size, len;
gz_statep state;
z_streamp strm;
- va_list va;
/* get internal structure */
if (file == NULL)
@@ -335,25 +341,20 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
/* do the printf() into the input buffer, put length in len */
size = (int)(state->size);
state->in[size - 1] = 0;
- va_start(va, format);
#ifdef NO_vsnprintf
# ifdef HAS_vsprintf_void
(void)vsprintf((char *)(state->in), format, va);
- va_end(va);
for (len = 0; len < size; len++)
if (state->in[len] == 0) break;
# else
len = vsprintf((char *)(state->in), format, va);
- va_end(va);
# endif
#else
# ifdef HAS_vsnprintf_void
(void)vsnprintf((char *)(state->in), size, format, va);
- va_end(va);
len = strlen((char *)(state->in));
# else
len = vsnprintf((char *)(state->in), size, format, va);
- va_end(va);
# endif
#endif
@@ -368,6 +369,17 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
return len;
}
+int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
+{
+ va_list va;
+ int ret;
+
+ va_start(va, format);
+ ret = gzvprintf(file, format, va);
+ va_end(va);
+ return ret;
+}
+
#else /* !STDC && !Z_HAVE_STDARG_H */
/* -- see zlib.h -- */
@@ -547,9 +559,9 @@ int ZEXPORT gzclose_w(file)
}
/* flush, free memory, and close file */
+ if (gz_comp(state, Z_FINISH) == -1)
+ ret = state->err;
if (state->size) {
- if (gz_comp(state, Z_FINISH) == -1)
- ret = state->err;
if (!state->direct) {
(void)deflateEnd(&(state->strm));
free(state->out);
diff --git a/compat/zlib/infback.c b/compat/zlib/infback.c
index 981aff1..f3833c2 100644
--- a/compat/zlib/infback.c
+++ b/compat/zlib/infback.c
@@ -255,7 +255,7 @@ out_func out;
void FAR *out_desc;
{
struct inflate_state FAR *state;
- unsigned char FAR *next; /* next input */
+ z_const unsigned char FAR *next; /* next input */
unsigned char FAR *put; /* next output */
unsigned have, left; /* available input and output */
unsigned long hold; /* bit buffer */
diff --git a/compat/zlib/inffast.c b/compat/zlib/inffast.c
index 2f1d60b..bda59ce 100644
--- a/compat/zlib/inffast.c
+++ b/compat/zlib/inffast.c
@@ -1,5 +1,5 @@
/* inffast.c -- fast decoding
- * Copyright (C) 1995-2008, 2010 Mark Adler
+ * Copyright (C) 1995-2008, 2010, 2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -69,8 +69,8 @@ z_streamp strm;
unsigned start; /* inflate()'s starting value for strm->avail_out */
{
struct inflate_state FAR *state;
- unsigned char FAR *in; /* local strm->next_in */
- unsigned char FAR *last; /* while in < last, enough input available */
+ z_const unsigned char FAR *in; /* local strm->next_in */
+ z_const unsigned char FAR *last; /* have enough input while in < last */
unsigned char FAR *out; /* local strm->next_out */
unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
unsigned char FAR *end; /* while out < end, enough space available */
diff --git a/compat/zlib/inflate.c b/compat/zlib/inflate.c
index 47418a1..870f89b 100644
--- a/compat/zlib/inflate.c
+++ b/compat/zlib/inflate.c
@@ -93,11 +93,12 @@
/* function prototypes */
local void fixedtables OF((struct inflate_state FAR *state));
-local int updatewindow OF((z_streamp strm, unsigned out));
+local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
+ unsigned copy));
#ifdef BUILDFIXED
void makefixed OF((void));
#endif
-local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
+local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
unsigned len));
int ZEXPORT inflateResetKeep(strm)
@@ -375,12 +376,13 @@ void makefixed()
output will fall in the output data, making match copies simpler and faster.
The advantage may be dependent on the size of the processor's data caches.
*/
-local int updatewindow(strm, out)
+local int updatewindow(strm, end, copy)
z_streamp strm;
-unsigned out;
+const Bytef *end;
+unsigned copy;
{
struct inflate_state FAR *state;
- unsigned copy, dist;
+ unsigned dist;
state = (struct inflate_state FAR *)strm->state;
@@ -400,19 +402,18 @@ unsigned out;
}
/* copy state->wsize or less output bytes into the circular window */
- copy = out - strm->avail_out;
if (copy >= state->wsize) {
- zmemcpy(state->window, strm->next_out - state->wsize, state->wsize);
+ zmemcpy(state->window, end - state->wsize, state->wsize);
state->wnext = 0;
state->whave = state->wsize;
}
else {
dist = state->wsize - state->wnext;
if (dist > copy) dist = copy;
- zmemcpy(state->window + state->wnext, strm->next_out - copy, dist);
+ zmemcpy(state->window + state->wnext, end - copy, dist);
copy -= dist;
if (copy) {
- zmemcpy(state->window, strm->next_out - copy, copy);
+ zmemcpy(state->window, end - copy, copy);
state->wnext = copy;
state->whave = state->wsize;
}
@@ -606,7 +607,7 @@ z_streamp strm;
int flush;
{
struct inflate_state FAR *state;
- unsigned char FAR *next; /* next input */
+ z_const unsigned char FAR *next; /* next input */
unsigned char FAR *put; /* next output */
unsigned have, left; /* available input and output */
unsigned long hold; /* bit buffer */
@@ -920,7 +921,7 @@ int flush;
while (state->have < 19)
state->lens[order[state->have++]] = 0;
state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
+ state->lencode = (const code FAR *)(state->next);
state->lenbits = 7;
ret = inflate_table(CODES, state->lens, 19, &(state->next),
&(state->lenbits), state->work);
@@ -994,7 +995,7 @@ int flush;
values here (9 and 6) without reading the comments in inftrees.h
concerning the ENOUGH constants, which depend on those values */
state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
+ state->lencode = (const code FAR *)(state->next);
state->lenbits = 9;
ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
&(state->lenbits), state->work);
@@ -1003,7 +1004,7 @@ int flush;
state->mode = BAD;
break;
}
- state->distcode = (code const FAR *)(state->next);
+ state->distcode = (const code FAR *)(state->next);
state->distbits = 6;
ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
&(state->next), &(state->distbits), state->work);
@@ -1230,7 +1231,7 @@ int flush;
RESTORE();
if (state->wsize || (out != strm->avail_out && state->mode < BAD &&
(state->mode < CHECK || flush != Z_FINISH)))
- if (updatewindow(strm, out)) {
+ if (updatewindow(strm, strm->next_out, out - strm->avail_out)) {
state->mode = MEM;
return Z_MEM_ERROR;
}
@@ -1264,6 +1265,29 @@ z_streamp strm;
return Z_OK;
}
+int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength)
+z_streamp strm;
+Bytef *dictionary;
+uInt *dictLength;
+{
+ struct inflate_state FAR *state;
+
+ /* check state */
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+
+ /* copy dictionary */
+ if (state->whave && dictionary != Z_NULL) {
+ zmemcpy(dictionary, state->window + state->wnext,
+ state->whave - state->wnext);
+ zmemcpy(dictionary + state->whave - state->wnext,
+ state->window, state->wnext);
+ }
+ if (dictLength != Z_NULL)
+ *dictLength = state->whave;
+ return Z_OK;
+}
+
int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
z_streamp strm;
const Bytef *dictionary;
@@ -1271,8 +1295,6 @@ uInt dictLength;
{
struct inflate_state FAR *state;
unsigned long dictid;
- unsigned char *next;
- unsigned avail;
int ret;
/* check state */
@@ -1291,13 +1313,7 @@ uInt dictLength;
/* copy dictionary to window using updatewindow(), which will amend the
existing dictionary if appropriate */
- next = strm->next_out;
- avail = strm->avail_out;
- strm->next_out = (Bytef *)dictionary + dictLength;
- strm->avail_out = 0;
- ret = updatewindow(strm, dictLength);
- strm->avail_out = avail;
- strm->next_out = next;
+ ret = updatewindow(strm, dictionary + dictLength, dictLength);
if (ret) {
state->mode = MEM;
return Z_MEM_ERROR;
@@ -1337,7 +1353,7 @@ gz_headerp head;
*/
local unsigned syncsearch(have, buf, len)
unsigned FAR *have;
-unsigned char FAR *buf;
+const unsigned char FAR *buf;
unsigned len;
{
unsigned got;
diff --git a/compat/zlib/inftrees.c b/compat/zlib/inftrees.c
index abcd7c4..44d89cf 100644
--- a/compat/zlib/inftrees.c
+++ b/compat/zlib/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2012 Mark Adler
+ * Copyright (C) 1995-2013 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.7 Copyright 1995-2012 Mark Adler ";
+ " inflate 1.2.8 Copyright 1995-2013 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 78, 68};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -208,8 +208,8 @@ unsigned short FAR *work;
mask = used - 1; /* mask for comparing low */
/* check available table space */
- if ((type == LENS && used >= ENOUGH_LENS) ||
- (type == DISTS && used >= ENOUGH_DISTS))
+ if ((type == LENS && used > ENOUGH_LENS) ||
+ (type == DISTS && used > ENOUGH_DISTS))
return 1;
/* process all codes and make table entries */
@@ -277,8 +277,8 @@ unsigned short FAR *work;
/* check for enough space */
used += 1U << curr;
- if ((type == LENS && used >= ENOUGH_LENS) ||
- (type == DISTS && used >= ENOUGH_DISTS))
+ if ((type == LENS && used > ENOUGH_LENS) ||
+ (type == DISTS && used > ENOUGH_DISTS))
return 1;
/* point entry in root table to sub-table */
diff --git a/compat/zlib/qnx/package.qpg b/compat/zlib/qnx/package.qpg
index 26eed9b..aebf6e3 100644
--- a/compat/zlib/qnx/package.qpg
+++ b/compat/zlib/qnx/package.qpg
@@ -25,10 +25,10 @@
<QPG:Files>
<QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
<QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
- <QPG:Add file="../libz.so.1.2.7" install="/opt/lib/" user="root:bin" permission="644"/>
- <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.7"/>
- <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.7"/>
- <QPG:Add file="../libz.so.1.2.7" install="/opt/lib/" component="slib"/>
+ <QPG:Add file="../libz.so.1.2.8" install="/opt/lib/" user="root:bin" permission="644"/>
+ <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.8"/>
+ <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.8"/>
+ <QPG:Add file="../libz.so.1.2.8" install="/opt/lib/" component="slib"/>
</QPG:Files>
<QPG:PackageFilter>
@@ -63,7 +63,7 @@
</QPM:ProductDescription>
<QPM:ReleaseDescription>
- <QPM:ReleaseVersion>1.2.7</QPM:ReleaseVersion>
+ <QPM:ReleaseVersion>1.2.8</QPM:ReleaseVersion>
<QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
<QPM:ReleaseStability>Stable</QPM:ReleaseStability>
<QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
diff --git a/compat/zlib/test/example.c b/compat/zlib/test/example.c
index f515a48..138a699 100644
--- a/compat/zlib/test/example.c
+++ b/compat/zlib/test/example.c
@@ -26,7 +26,7 @@
} \
}
-const char hello[] = "hello, hello!";
+z_const char hello[] = "hello, hello!";
/* "hello world" would be more standard, but the repeated "hello"
* stresses the compression code better, sorry...
*/
@@ -212,7 +212,7 @@ void test_deflate(compr, comprLen)
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
- c_stream.next_in = (Bytef*)hello;
+ c_stream.next_in = (z_const unsigned char *)hello;
c_stream.next_out = compr;
while (c_stream.total_in != len && c_stream.total_out < comprLen) {
@@ -387,7 +387,7 @@ void test_flush(compr, comprLen)
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
- c_stream.next_in = (Bytef*)hello;
+ c_stream.next_in = (z_const unsigned char *)hello;
c_stream.next_out = compr;
c_stream.avail_in = 3;
c_stream.avail_out = (uInt)*comprLen;
@@ -476,7 +476,7 @@ void test_dict_deflate(compr, comprLen)
c_stream.next_out = compr;
c_stream.avail_out = (uInt)comprLen;
- c_stream.next_in = (Bytef*)hello;
+ c_stream.next_in = (z_const unsigned char *)hello;
c_stream.avail_in = (uInt)strlen(hello)+1;
err = deflate(&c_stream, Z_FINISH);
diff --git a/compat/zlib/test/minigzip.c b/compat/zlib/test/minigzip.c
index aa7ac7a..b3025a4 100644
--- a/compat/zlib/test/minigzip.c
+++ b/compat/zlib/test/minigzip.c
@@ -40,6 +40,10 @@
# define SET_BINARY_MODE(file)
#endif
+#ifdef _MSC_VER
+# define snprintf _snprintf
+#endif
+
#ifdef VMS
# define unlink delete
# define GZ_SUFFIX "-gz"
@@ -463,8 +467,12 @@ void file_compress(file, mode)
exit(1);
}
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(outfile, sizeof(outfile), "%s%s", file, GZ_SUFFIX);
+#else
strcpy(outfile, file);
strcat(outfile, GZ_SUFFIX);
+#endif
in = fopen(file, "rb");
if (in == NULL) {
@@ -499,7 +507,11 @@ void file_uncompress(file)
exit(1);
}
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(buf, sizeof(buf), "%s", file);
+#else
strcpy(buf, file);
+#endif
if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
infile = file;
@@ -508,7 +520,11 @@ void file_uncompress(file)
} else {
outfile = file;
infile = buf;
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(buf + len, sizeof(buf) - len, "%s", GZ_SUFFIX);
+#else
strcat(infile, GZ_SUFFIX);
+#endif
}
in = gzopen(infile, "rb");
if (in == NULL) {
@@ -546,7 +562,11 @@ int main(argc, argv)
gzFile file;
char *bname, outmode[20];
+#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
+ snprintf(outmode, sizeof(outmode), "%s", "wb6 ");
+#else
strcpy(outmode, "wb6 ");
+#endif
prog = argv[0];
bname = strrchr(argv[0], '/');
diff --git a/compat/zlib/treebuild.xml b/compat/zlib/treebuild.xml
index 1f4d15f..38d29d7 100644
--- a/compat/zlib/treebuild.xml
+++ b/compat/zlib/treebuild.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
-<package name="zlib" version="1.2.7">
- <library name="zlib" dlversion="1.2.7" dlname="z">
+<package name="zlib" version="1.2.8">
+ <library name="zlib" dlversion="1.2.8" dlname="z">
<property name="description"> zip compression library </property>
<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
diff --git a/compat/zlib/trees.c b/compat/zlib/trees.c
index 8c32b21..1fd7759 100644
--- a/compat/zlib/trees.c
+++ b/compat/zlib/trees.c
@@ -146,8 +146,8 @@ local void send_tree OF((deflate_state *s, ct_data *tree, int max_code));
local int build_bl_tree OF((deflate_state *s));
local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
int blcodes));
-local void compress_block OF((deflate_state *s, ct_data *ltree,
- ct_data *dtree));
+local void compress_block OF((deflate_state *s, const ct_data *ltree,
+ const ct_data *dtree));
local int detect_data_type OF((deflate_state *s));
local unsigned bi_reverse OF((unsigned value, int length));
local void bi_windup OF((deflate_state *s));
@@ -972,7 +972,8 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
} else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
#endif
send_bits(s, (STATIC_TREES<<1)+last, 3);
- compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
+ compress_block(s, (const ct_data *)static_ltree,
+ (const ct_data *)static_dtree);
#ifdef DEBUG
s->compressed_len += 3 + s->static_len;
#endif
@@ -980,7 +981,8 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
send_bits(s, (DYN_TREES<<1)+last, 3);
send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
max_blindex+1);
- compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
+ compress_block(s, (const ct_data *)s->dyn_ltree,
+ (const ct_data *)s->dyn_dtree);
#ifdef DEBUG
s->compressed_len += 3 + s->opt_len;
#endif
@@ -1057,8 +1059,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
*/
local void compress_block(s, ltree, dtree)
deflate_state *s;
- ct_data *ltree; /* literal tree */
- ct_data *dtree; /* distance tree */
+ const ct_data *ltree; /* literal tree */
+ const ct_data *dtree; /* distance tree */
{
unsigned dist; /* distance of matched string */
int lc; /* match length or unmatched char (if dist == 0) */
diff --git a/compat/zlib/uncompr.c b/compat/zlib/uncompr.c
index ad98be3..242e949 100644
--- a/compat/zlib/uncompr.c
+++ b/compat/zlib/uncompr.c
@@ -30,7 +30,7 @@ int ZEXPORT uncompress (dest, destLen, source, sourceLen)
z_stream stream;
int err;
- stream.next_in = (Bytef*)source;
+ stream.next_in = (z_const Bytef *)source;
stream.avail_in = (uInt)sourceLen;
/* Check for source > 64K on 16-bit machine: */
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
diff --git a/compat/zlib/win32/Makefile.msc b/compat/zlib/win32/Makefile.msc
index 59bb0da..67b7731 100644
--- a/compat/zlib/win32/Makefile.msc
+++ b/compat/zlib/win32/Makefile.msc
@@ -9,6 +9,10 @@
# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \
# OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64)
+# The toplevel directory of the source tree.
+#
+TOP = .
+
# optional build flags
LOC =
@@ -43,8 +47,8 @@ $(STATICLIB): $(OBJS) $(OBJA)
$(IMPLIB): $(SHAREDLIB)
-$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res
- $(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \
+$(SHAREDLIB): $(TOP)/win32/zlib.def $(OBJS) $(OBJA) zlib1.res
+ $(LD) $(LDFLAGS) -def:$(TOP)/win32/zlib.def -dll -implib:$(IMPLIB) \
-out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res
if exist $@.manifest \
mt -nologo -manifest $@.manifest -outputresource:$@;2
@@ -69,72 +73,71 @@ minigzip_d.exe: minigzip.obj $(IMPLIB)
if exist $@.manifest \
mt -nologo -manifest $@.manifest -outputresource:$@;1
-.c.obj:
+{$(TOP)}.c.obj:
$(CC) -c $(WFLAGS) $(CFLAGS) $<
-{test}.c.obj:
- $(CC) -c -I. $(WFLAGS) $(CFLAGS) $<
+{$(TOP)/test}.c.obj:
+ $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $<
-{contrib/masmx64}.c.obj:
+{$(TOP)/contrib/masmx64}.c.obj:
$(CC) -c $(WFLAGS) $(CFLAGS) $<
-{contrib/masmx64}.asm.obj:
+{$(TOP)/contrib/masmx64}.asm.obj:
$(AS) -c $(ASFLAGS) $<
-{contrib/masmx86}.asm.obj:
+{$(TOP)/contrib/masmx86}.asm.obj:
$(AS) -c $(ASFLAGS) $<
-adler32.obj: adler32.c zlib.h zconf.h
-
-compress.obj: compress.c zlib.h zconf.h
+adler32.obj: $(TOP)/adler32.c $(TOP)/zlib.h $(TOP)/zconf.h
-crc32.obj: crc32.c zlib.h zconf.h crc32.h
+compress.obj: $(TOP)/compress.c $(TOP)/zlib.h $(TOP)/zconf.h
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
+crc32.obj: $(TOP)/crc32.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/crc32.h
-gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h
+deflate.obj: $(TOP)/deflate.c $(TOP)/deflate.h $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h
-gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h
+gzclose.obj: $(TOP)/gzclose.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h
-gzread.obj: gzread.c zlib.h zconf.h gzguts.h
+gzlib.obj: $(TOP)/gzlib.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h
-gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h
+gzread.obj: $(TOP)/gzread.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h
-infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \
- inffast.h inffixed.h
+gzwrite.obj: $(TOP)/gzwrite.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \
- inffast.h
+infback.obj: $(TOP)/infback.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \
+ $(TOP)/inffast.h $(TOP)/inffixed.h
-inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \
- inffast.h inffixed.h
+inffast.obj: $(TOP)/inffast.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \
+ $(TOP)/inffast.h
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
+inflate.obj: $(TOP)/inflate.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \
+ $(TOP)/inffast.h $(TOP)/inffixed.h
-trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h
+inftrees.obj: $(TOP)/inftrees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h
-uncompr.obj: uncompr.c zlib.h zconf.h
+trees.obj: $(TOP)/trees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/deflate.h $(TOP)/trees.h
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
+uncompr.obj: $(TOP)/uncompr.c $(TOP)/zlib.h $(TOP)/zconf.h
-gvmat64.obj: contrib\masmx64\gvmat64.asm
+zutil.obj: $(TOP)/zutil.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h
-inffasx64.obj: contrib\masmx64\inffasx64.asm
+gvmat64.obj: $(TOP)/contrib\masmx64\gvmat64.asm
-inffas8664.obj: contrib\masmx64\inffas8664.c zutil.h zlib.h zconf.h \
- inftrees.h inflate.h inffast.h
+inffasx64.obj: $(TOP)/contrib\masmx64\inffasx64.asm
-inffas32.obj: contrib\masmx86\inffas32.asm
+inffas8664.obj: $(TOP)/contrib\masmx64\inffas8664.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h \
+ $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inffast.h
-match686.obj: contrib\masmx86\match686.asm
+inffas32.obj: $(TOP)/contrib\masmx86\inffas32.asm
-example.obj: test/example.c zlib.h zconf.h
+match686.obj: $(TOP)/contrib\masmx86\match686.asm
-minigzip.obj: test/minigzip.c zlib.h zconf.h
+example.obj: $(TOP)/test/example.c $(TOP)/zlib.h $(TOP)/zconf.h
-zlib1.res: win32/zlib1.rc
- $(RC) $(RCFLAGS) /fo$@ win32/zlib1.rc
+minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zlib.h $(TOP)/zconf.h
+zlib1.res: $(TOP)/win32/zlib1.rc
+ $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/zlib1.rc
# testing
test: example.exe minigzip.exe
diff --git a/compat/zlib/win32/README-WIN32.txt b/compat/zlib/win32/README-WIN32.txt
index 46c5923..3d77d52 100644
--- a/compat/zlib/win32/README-WIN32.txt
+++ b/compat/zlib/win32/README-WIN32.txt
@@ -1,6 +1,6 @@
ZLIB DATA COMPRESSION LIBRARY
-zlib 1.2.7 is a general purpose data compression library. All the code is
+zlib 1.2.8 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -22,7 +22,7 @@ before asking for help.
Manifest:
-The package zlib-1.2.7-win32-x86.zip will contain the following files:
+The package zlib-1.2.8-win32-x86.zip will contain the following files:
README-WIN32.txt This document
ChangeLog Changes since previous zlib packages
diff --git a/compat/zlib/win32/README.txt b/compat/zlib/win32/README.txt
index fad9f14..34a13b3 100644
--- a/compat/zlib/win32/README.txt
+++ b/compat/zlib/win32/README.txt
@@ -6,7 +6,7 @@ What's here
Source
======
- zlib version 1.2.5
+ zlib version 1.2.8
available at http://www.gzip.org/zlib/
@@ -22,17 +22,18 @@ Usage
Build info
==========
- Contributed by Cosmin Truta.
+ Contributed by Jan Nijtmans.
Compiler:
- gcc-4.5.0-1-mingw32
+ i686-w64-mingw32-gcc (GCC) 4.5.3
Library:
- mingwrt-3.17, w32api-3.14
+ mingw64-i686-runtime/headers: 3.0b_svn5747-1
Build commands:
- gcc -c -DASMV contrib/asm686/match.S
- gcc -c -DASMINF -I. -O3 contrib/inflate86/inffas86.c
- make -f win32/Makefile.gcc LOC="-DASMV -DASMINF" OBJA="inffas86.o match.o"
-
+ i686-w64-mingw32-gcc -c -DASMV contrib/asm686/match.S
+ i686-w64-mingw32-gcc -c -DASMINF -I. -O3 contrib/inflate86/inffas86.c
+ make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- LOC="-mms-bitfields -DASMV -DASMINF" OBJA="inffas86.o match.o"
+ Finally, from VS commandline (VS2005 or higher):
+ lib -machine:X86 -name:zlib1.dll -def:zlib.def -out:zdll.lib
Copyright notice
================
diff --git a/compat/zlib/win32/zdll.lib b/compat/zlib/win32/zdll.lib
index 669b186..8e6f719 100644
--- a/compat/zlib/win32/zdll.lib
+++ b/compat/zlib/win32/zdll.lib
Binary files differ
diff --git a/compat/zlib/win32/zlib.def b/compat/zlib/win32/zlib.def
index 0489615..face655 100644
--- a/compat/zlib/win32/zlib.def
+++ b/compat/zlib/win32/zlib.def
@@ -17,6 +17,7 @@ EXPORTS
deflatePrime
deflateSetHeader
inflateSetDictionary
+ inflateGetDictionary
inflateSync
inflateCopy
inflateReset
@@ -39,6 +40,7 @@ EXPORTS
gzread
gzwrite
gzprintf
+ gzvprintf
gzputs
gzgets
gzputc
diff --git a/compat/zlib/win32/zlib1.dll b/compat/zlib/win32/zlib1.dll
index 9943b3e..9ea38d5 100644
--- a/compat/zlib/win32/zlib1.dll
+++ b/compat/zlib/win32/zlib1.dll
Binary files differ
diff --git a/compat/zlib/win32/zlib1.rc b/compat/zlib/win32/zlib1.rc
index 0d1d7ff..5c0feed 100644
--- a/compat/zlib/win32/zlib1.rc
+++ b/compat/zlib/win32/zlib1.rc
@@ -26,7 +26,7 @@ BEGIN
VALUE "FileDescription", "zlib data compression library\0"
VALUE "FileVersion", ZLIB_VERSION "\0"
VALUE "InternalName", "zlib1.dll\0"
- VALUE "LegalCopyright", "(C) 1995-2006 Jean-loup Gailly & Mark Adler\0"
+ VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0"
VALUE "OriginalFilename", "zlib1.dll\0"
VALUE "ProductName", "zlib\0"
VALUE "ProductVersion", ZLIB_VERSION "\0"
diff --git a/compat/zlib/win64/zdll.lib b/compat/zlib/win64/zdll.lib
index d7dfb09..ac9ffc9 100644
--- a/compat/zlib/win64/zdll.lib
+++ b/compat/zlib/win64/zdll.lib
Binary files differ
diff --git a/compat/zlib/win64/zlib1.dll b/compat/zlib/win64/zlib1.dll
index 631439b..bd1dbc6 100644
--- a/compat/zlib/win64/zlib1.dll
+++ b/compat/zlib/win64/zlib1.dll
Binary files differ
diff --git a/compat/zlib/zconf.h b/compat/zlib/zconf.h
index 8a46a58..9987a77 100644
--- a/compat/zlib/zconf.h
+++ b/compat/zlib/zconf.h
@@ -1,5 +1,5 @@
/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -21,6 +21,7 @@
# define _dist_code z__dist_code
# define _length_code z__length_code
# define _tr_align z__tr_align
+# define _tr_flush_bits z__tr_flush_bits
# define _tr_flush_block z__tr_flush_block
# define _tr_init z__tr_init
# define _tr_stored_block z__tr_stored_block
@@ -77,6 +78,7 @@
# define gzopen_w z_gzopen_w
# endif
# define gzprintf z_gzprintf
+# define gzvprintf z_gzvprintf
# define gzputc z_gzputc
# define gzputs z_gzputs
# define gzread z_gzread
@@ -103,6 +105,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
@@ -388,20 +391,14 @@ typedef uLong FAR uLongf;
typedef Byte *voidp;
#endif
-/* ./configure may #define Z_U4 here */
-
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
# include <limits.h>
# if (UINT_MAX == 0xffffffffUL)
# define Z_U4 unsigned
-# else
-# if (ULONG_MAX == 0xffffffffUL)
-# define Z_U4 unsigned long
-# else
-# if (USHRT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned short
-# endif
-# endif
+# elif (ULONG_MAX == 0xffffffffUL)
+# define Z_U4 unsigned long
+# elif (USHRT_MAX == 0xffffffffUL)
+# define Z_U4 unsigned short
# endif
#endif
@@ -425,8 +422,16 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
-# include <stddef.h> /* for wchar_t */
+# ifndef Z_SOLO
+# include <stddef.h> /* for wchar_t */
+# endif
#endif
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
@@ -435,7 +440,7 @@ typedef uLong FAR uLongf;
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
* equivalently requesting no 64-bit operations
*/
-#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
+#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
# undef _LARGEFILE64_SOURCE
#endif
@@ -443,7 +448,7 @@ typedef uLong FAR uLongf;
# define Z_HAVE_UNISTD_H
#endif
#ifndef Z_SOLO
-# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
+# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
diff --git a/compat/zlib/zconf.h.cmakein b/compat/zlib/zconf.h.cmakein
index b6ca59a..043019c 100644
--- a/compat/zlib/zconf.h.cmakein
+++ b/compat/zlib/zconf.h.cmakein
@@ -1,5 +1,5 @@
/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -23,6 +23,7 @@
# define _dist_code z__dist_code
# define _length_code z__length_code
# define _tr_align z__tr_align
+# define _tr_flush_bits z__tr_flush_bits
# define _tr_flush_block z__tr_flush_block
# define _tr_init z__tr_init
# define _tr_stored_block z__tr_stored_block
@@ -79,6 +80,7 @@
# define gzopen_w z_gzopen_w
# endif
# define gzprintf z_gzprintf
+# define gzvprintf z_gzvprintf
# define gzputc z_gzputc
# define gzputs z_gzputs
# define gzread z_gzread
@@ -105,6 +107,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
@@ -390,20 +393,14 @@ typedef uLong FAR uLongf;
typedef Byte *voidp;
#endif
-/* ./configure may #define Z_U4 here */
-
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
# include <limits.h>
# if (UINT_MAX == 0xffffffffUL)
# define Z_U4 unsigned
-# else
-# if (ULONG_MAX == 0xffffffffUL)
-# define Z_U4 unsigned long
-# else
-# if (USHRT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned short
-# endif
-# endif
+# elif (ULONG_MAX == 0xffffffffUL)
+# define Z_U4 unsigned long
+# elif (USHRT_MAX == 0xffffffffUL)
+# define Z_U4 unsigned short
# endif
#endif
@@ -427,8 +424,16 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
-# include <stddef.h> /* for wchar_t */
+# ifndef Z_SOLO
+# include <stddef.h> /* for wchar_t */
+# endif
#endif
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
@@ -437,7 +442,7 @@ typedef uLong FAR uLongf;
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
* equivalently requesting no 64-bit operations
*/
-#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
+#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
# undef _LARGEFILE64_SOURCE
#endif
@@ -445,7 +450,7 @@ typedef uLong FAR uLongf;
# define Z_HAVE_UNISTD_H
#endif
#ifndef Z_SOLO
-# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
+# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
diff --git a/compat/zlib/zconf.h.in b/compat/zlib/zconf.h.in
index 8a46a58..9987a77 100644
--- a/compat/zlib/zconf.h.in
+++ b/compat/zlib/zconf.h.in
@@ -1,5 +1,5 @@
/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -21,6 +21,7 @@
# define _dist_code z__dist_code
# define _length_code z__length_code
# define _tr_align z__tr_align
+# define _tr_flush_bits z__tr_flush_bits
# define _tr_flush_block z__tr_flush_block
# define _tr_init z__tr_init
# define _tr_stored_block z__tr_stored_block
@@ -77,6 +78,7 @@
# define gzopen_w z_gzopen_w
# endif
# define gzprintf z_gzprintf
+# define gzvprintf z_gzvprintf
# define gzputc z_gzputc
# define gzputs z_gzputs
# define gzread z_gzread
@@ -103,6 +105,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
@@ -388,20 +391,14 @@ typedef uLong FAR uLongf;
typedef Byte *voidp;
#endif
-/* ./configure may #define Z_U4 here */
-
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
# include <limits.h>
# if (UINT_MAX == 0xffffffffUL)
# define Z_U4 unsigned
-# else
-# if (ULONG_MAX == 0xffffffffUL)
-# define Z_U4 unsigned long
-# else
-# if (USHRT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned short
-# endif
-# endif
+# elif (ULONG_MAX == 0xffffffffUL)
+# define Z_U4 unsigned long
+# elif (USHRT_MAX == 0xffffffffUL)
+# define Z_U4 unsigned short
# endif
#endif
@@ -425,8 +422,16 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
-# include <stddef.h> /* for wchar_t */
+# ifndef Z_SOLO
+# include <stddef.h> /* for wchar_t */
+# endif
#endif
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
@@ -435,7 +440,7 @@ typedef uLong FAR uLongf;
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
* equivalently requesting no 64-bit operations
*/
-#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
+#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
# undef _LARGEFILE64_SOURCE
#endif
@@ -443,7 +448,7 @@ typedef uLong FAR uLongf;
# define Z_HAVE_UNISTD_H
#endif
#ifndef Z_SOLO
-# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
+# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
diff --git a/compat/zlib/zlib.3 b/compat/zlib/zlib.3
index 79d3402..0160e62 100644
--- a/compat/zlib/zlib.3
+++ b/compat/zlib/zlib.3
@@ -1,4 +1,4 @@
-.TH ZLIB 3 "2 May 2012"
+.TH ZLIB 3 "28 Apr 2013"
.SH NAME
zlib \- compression/decompression library
.SH SYNOPSIS
@@ -125,8 +125,8 @@ before asking for help.
Send questions and/or comments to zlib@gzip.org,
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
.SH AUTHORS
-Version 1.2.7
-Copyright (C) 1995-2012 Jean-loup Gailly (jloup@gzip.org)
+Version 1.2.8
+Copyright (C) 1995-2013 Jean-loup Gailly (jloup@gzip.org)
and Mark Adler (madler@alumni.caltech.edu).
.LP
This software is provided "as-is,"
diff --git a/compat/zlib/zlib.3.pdf b/compat/zlib/zlib.3.pdf
index 485306c..a346b5d 100644
--- a/compat/zlib/zlib.3.pdf
+++ b/compat/zlib/zlib.3.pdf
Binary files differ
diff --git a/compat/zlib/zlib.h b/compat/zlib/zlib.h
index 3edf3ac..3e0c767 100644
--- a/compat/zlib/zlib.h
+++ b/compat/zlib/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.7, May 2nd, 2012
+ version 1.2.8, April 28th, 2013
- Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.7"
-#define ZLIB_VERNUM 0x1270
+#define ZLIB_VERSION "1.2.8"
+#define ZLIB_VERNUM 0x1280
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 7
+#define ZLIB_VER_REVISION 8
#define ZLIB_VER_SUBREVISION 0
/*
@@ -839,6 +839,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
inflate().
*/
+ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength));
+/*
+ Returns the sliding dictionary being maintained by inflate. dictLength is
+ set to the number of bytes in the dictionary, and that many bytes are copied
+ to dictionary. dictionary must have enough space, where 32768 bytes is
+ always enough. If inflateGetDictionary() is called with dictionary equal to
+ Z_NULL, then only the dictionary length is returned, and nothing is copied.
+ Similary, if dictLength is Z_NULL, then it is not set.
+
+ inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+ stream state is inconsistent.
+*/
+
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/*
Skips invalid compressed data until a possible full flush point (see above
@@ -846,7 +861,7 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
available input is skipped. No output is provided.
inflateSync searches for a 00 00 FF FF pattern in the compressed data.
- All full flush points have this pattern, but not all occurences of this
+ All full flush points have this pattern, but not all occurrences of this
pattern are full flush points.
inflateSync returns Z_OK if a possible full flush point has been found,
@@ -1007,7 +1022,8 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
the version of the header file.
*/
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
+typedef unsigned (*in_func) OF((void FAR *,
+ z_const unsigned char FAR * FAR *));
typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
@@ -1015,11 +1031,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
out_func out, void FAR *out_desc));
/*
inflateBack() does a raw inflate with a single call using a call-back
- interface for input and output. This is more efficient than inflate() for
- file i/o applications in that it avoids copying between the output and the
- sliding window by simply making the window itself the output buffer. This
- function trusts the application to not change the output buffer passed by
- the output function, at least until inflateBack() returns.
+ interface for input and output. This is potentially more efficient than
+ inflate() for file i/o applications, in that it avoids copying between the
+ output and the sliding window by simply making the window itself the output
+ buffer. inflate() can be faster on modern CPUs when used with large
+ buffers. inflateBack() trusts the application to not change the output
+ buffer passed by the output function, at least until inflateBack() returns.
inflateBackInit() must be called first to allocate the internal state
and to initialize the state with the user-provided window buffer.
@@ -1736,6 +1753,13 @@ ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
const char *mode));
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
+ const char *format,
+ va_list va));
+# endif
+#endif
#ifdef __cplusplus
}
diff --git a/compat/zlib/zlib.map b/compat/zlib/zlib.map
index 771f420..55c6647 100644
--- a/compat/zlib/zlib.map
+++ b/compat/zlib/zlib.map
@@ -76,3 +76,8 @@ ZLIB_1.2.5.2 {
gzgetc_;
inflateResetKeep;
} ZLIB_1.2.5.1;
+
+ZLIB_1.2.7.1 {
+ inflateGetDictionary;
+ gzvprintf;
+} ZLIB_1.2.5.2;
diff --git a/compat/zlib/zutil.c b/compat/zlib/zutil.c
index 65e0d3b..23d2ebe 100644
--- a/compat/zlib/zutil.c
+++ b/compat/zlib/zutil.c
@@ -14,7 +14,7 @@
struct internal_state {int dummy;}; /* for buggy compilers */
#endif
-const char * const z_errmsg[10] = {
+z_const char * const z_errmsg[10] = {
"need dictionary", /* Z_NEED_DICT 2 */
"stream end", /* Z_STREAM_END 1 */
"", /* Z_OK 0 */
diff --git a/compat/zlib/zutil.h b/compat/zlib/zutil.h
index 4e3dcc6..24ab06b 100644
--- a/compat/zlib/zutil.h
+++ b/compat/zlib/zutil.h
@@ -1,5 +1,5 @@
/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -44,13 +44,13 @@ typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
-extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
+extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
#define ERR_RETURN(strm,err) \
- return (strm->msg = (char*)ERR_MSG(err), (err))
+ return (strm->msg = ERR_MSG(err), (err))
/* To be used only when the state is known to be valid */
/* common constants */
@@ -168,7 +168,8 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#endif
/* provide prototypes for these when building zlib without LFS */
-#if !defined(_WIN32) && (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
+#if !defined(_WIN32) && \
+ (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
#endif
diff --git a/doc/file.n b/doc/file.n
index eef4647..0b0ee9d 100644
--- a/doc/file.n
+++ b/doc/file.n
@@ -481,6 +481,13 @@ Returns \fB1\fR if file \fIname\fR is writable by the current user,
.
These commands always operate using the real user and group identifiers,
not the effective ones.
+.TP
+\fBWindows\fR\0\0\0\0
+.
+The \fbfile owned\fR subcommand currently always reports that the current user
+is the owner of the file, without regard for what the operating system
+believes to be true, making an ownership test useless. This issue (#3613671)
+may be fixed in a future release of Tcl.
.SH EXAMPLES
.PP
This procedure shows how to search for C files in a given directory
diff --git a/generic/regguts.h b/generic/regguts.h
index b4944dc..b478e4c 100644
--- a/generic/regguts.h
+++ b/generic/regguts.h
@@ -341,12 +341,12 @@ struct subre {
#define CAP 010 /* capturing parens below */
#define BACKR 020 /* back reference below */
#define INUSE 0100 /* in use in final tree */
-#define LOCAL 03 /* bits which may not propagate up */
+#define NOPROP 03 /* bits which may not propagate up */
#define LMIX(f) ((f)<<2) /* LONGER -> MIXED */
#define SMIX(f) ((f)<<1) /* SHORTER -> MIXED */
-#define UP(f) (((f)&~LOCAL) | (LMIX(f) & SMIX(f) & MIXED))
+#define UP(f) (((f)&~NOPROP) | (LMIX(f) & SMIX(f) & MIXED))
#define MESSY(f) ((f)&(MIXED|CAP|BACKR))
-#define PREF(f) ((f)&LOCAL)
+#define PREF(f) ((f)&NOPROP)
#define PREF2(f1, f2) ((PREF(f1) != 0) ? PREF(f1) : PREF(f2))
#define COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2))
short retry; /* index into retry memory */
diff --git a/generic/tcl.h b/generic/tcl.h
index 4de18f0..d47e931 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -329,10 +329,12 @@ typedef long LONG;
* in ANSI C; maps them to type "char *" in non-ANSI systems.
*/
-#ifndef NO_VOID
-# define VOID void
-#else
-# define VOID char
+#ifndef __VXWORKS__
+# ifndef NO_VOID
+# define VOID void
+# else
+# define VOID char
+# endif
#endif
/*
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c
index 5786975..fff7b43 100644
--- a/generic/tclAssembly.c
+++ b/generic/tclAssembly.c
@@ -437,6 +437,7 @@ static const TalInstDesc TalInstructionTable[] = {
{"lindexMulti", ASSEM_LINDEX_MULTI,
INST_LIST_INDEX_MULTI, INT_MIN,1},
{"list", ASSEM_LIST, INST_LIST, INT_MIN,1},
+ {"listConcat", ASSEM_1BYTE, INST_LIST_CONCAT, 2, 1},
{"listIn", ASSEM_1BYTE, INST_LIST_IN, 2, 1},
{"listIndex", ASSEM_1BYTE, INST_LIST_INDEX, 2, 1},
{"listIndexImm", ASSEM_INDEX, INST_LIST_INDEX_IMM, 1, 1},
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index b39d346..aafbe71 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -185,11 +185,16 @@ typedef struct {
Tcl_ObjCmdProc *objProc; /* Object-based function for command. */
CompileProc *compileProc; /* Function called to compile command. */
Tcl_ObjCmdProc *nreProc; /* NR-based function for command */
- int isSafe; /* If non-zero, command will be present in
- * safe interpreter. Otherwise it will be
- * hidden. */
+ int flags; /* Various flag bits, as defined below. */
} CmdInfo;
+#define CMD_IS_SAFE 1 /* Whether this command is part of the set of
+ * commands present by default in a safe
+ * interpreter. */
+/* CMD_COMPILES_EXPANDED - Whether the compiler for this command can handle
+ * expansion for itself rather than needing the generic layer to take care of
+ * it for it. Defined in tclInt.h. */
+
/*
* The built-in commands, and the functions that implement them:
*/
@@ -199,95 +204,95 @@ static const CmdInfo builtInCmds[] = {
* Commands in the generic core.
*/
- {"append", Tcl_AppendObjCmd, TclCompileAppendCmd, NULL, 1},
- {"apply", Tcl_ApplyObjCmd, NULL, TclNRApplyObjCmd, 1},
- {"break", Tcl_BreakObjCmd, TclCompileBreakCmd, NULL, 1},
+ {"append", Tcl_AppendObjCmd, TclCompileAppendCmd, NULL, CMD_IS_SAFE},
+ {"apply", Tcl_ApplyObjCmd, NULL, TclNRApplyObjCmd, CMD_IS_SAFE},
+ {"break", Tcl_BreakObjCmd, TclCompileBreakCmd, NULL, CMD_IS_SAFE},
#ifndef EXCLUDE_OBSOLETE_COMMANDS
- {"case", Tcl_CaseObjCmd, NULL, NULL, 1},
+ {"case", Tcl_CaseObjCmd, NULL, NULL, CMD_IS_SAFE},
#endif
- {"catch", Tcl_CatchObjCmd, TclCompileCatchCmd, TclNRCatchObjCmd, 1},
- {"concat", Tcl_ConcatObjCmd, NULL, NULL, 1},
- {"continue", Tcl_ContinueObjCmd, TclCompileContinueCmd, NULL, 1},
- {"coroutine", NULL, NULL, TclNRCoroutineObjCmd, 1},
- {"error", Tcl_ErrorObjCmd, TclCompileErrorCmd, NULL, 1},
- {"eval", Tcl_EvalObjCmd, NULL, TclNREvalObjCmd, 1},
- {"expr", Tcl_ExprObjCmd, TclCompileExprCmd, TclNRExprObjCmd, 1},
- {"for", Tcl_ForObjCmd, TclCompileForCmd, TclNRForObjCmd, 1},
- {"foreach", Tcl_ForeachObjCmd, TclCompileForeachCmd, TclNRForeachCmd, 1},
- {"format", Tcl_FormatObjCmd, TclCompileFormatCmd, NULL, 1},
- {"global", Tcl_GlobalObjCmd, TclCompileGlobalCmd, NULL, 1},
- {"if", Tcl_IfObjCmd, TclCompileIfCmd, TclNRIfObjCmd, 1},
- {"incr", Tcl_IncrObjCmd, TclCompileIncrCmd, NULL, 1},
- {"join", Tcl_JoinObjCmd, NULL, NULL, 1},
- {"lappend", Tcl_LappendObjCmd, TclCompileLappendCmd, NULL, 1},
- {"lassign", Tcl_LassignObjCmd, TclCompileLassignCmd, NULL, 1},
- {"lindex", Tcl_LindexObjCmd, TclCompileLindexCmd, NULL, 1},
- {"linsert", Tcl_LinsertObjCmd, NULL, NULL, 1},
- {"list", Tcl_ListObjCmd, TclCompileListCmd, NULL, 1},
- {"llength", Tcl_LlengthObjCmd, TclCompileLlengthCmd, NULL, 1},
- {"lmap", Tcl_LmapObjCmd, TclCompileLmapCmd, TclNRLmapCmd, 1},
- {"lrange", Tcl_LrangeObjCmd, TclCompileLrangeCmd, NULL, 1},
- {"lrepeat", Tcl_LrepeatObjCmd, NULL, NULL, 1},
- {"lreplace", Tcl_LreplaceObjCmd, TclCompileLreplaceCmd, NULL, 1},
- {"lreverse", Tcl_LreverseObjCmd, NULL, NULL, 1},
- {"lsearch", Tcl_LsearchObjCmd, NULL, NULL, 1},
- {"lset", Tcl_LsetObjCmd, TclCompileLsetCmd, NULL, 1},
- {"lsort", Tcl_LsortObjCmd, NULL, NULL, 1},
- {"package", Tcl_PackageObjCmd, NULL, NULL, 1},
- {"proc", Tcl_ProcObjCmd, NULL, NULL, 1},
- {"regexp", Tcl_RegexpObjCmd, TclCompileRegexpCmd, NULL, 1},
- {"regsub", Tcl_RegsubObjCmd, TclCompileRegsubCmd, NULL, 1},
- {"rename", Tcl_RenameObjCmd, NULL, NULL, 1},
- {"return", Tcl_ReturnObjCmd, TclCompileReturnCmd, NULL, 1},
- {"scan", Tcl_ScanObjCmd, NULL, NULL, 1},
- {"set", Tcl_SetObjCmd, TclCompileSetCmd, NULL, 1},
- {"split", Tcl_SplitObjCmd, NULL, NULL, 1},
- {"subst", Tcl_SubstObjCmd, TclCompileSubstCmd, TclNRSubstObjCmd, 1},
- {"switch", Tcl_SwitchObjCmd, TclCompileSwitchCmd, TclNRSwitchObjCmd, 1},
- {"tailcall", NULL, TclCompileTailcallCmd, TclNRTailcallObjCmd, 1},
- {"throw", Tcl_ThrowObjCmd, TclCompileThrowCmd, NULL, 1},
- {"trace", Tcl_TraceObjCmd, NULL, NULL, 1},
- {"try", Tcl_TryObjCmd, TclCompileTryCmd, TclNRTryObjCmd, 1},
- {"unset", Tcl_UnsetObjCmd, TclCompileUnsetCmd, NULL, 1},
- {"uplevel", Tcl_UplevelObjCmd, NULL, TclNRUplevelObjCmd, 1},
- {"upvar", Tcl_UpvarObjCmd, TclCompileUpvarCmd, NULL, 1},
- {"variable", Tcl_VariableObjCmd, TclCompileVariableCmd, NULL, 1},
- {"while", Tcl_WhileObjCmd, TclCompileWhileCmd, TclNRWhileObjCmd, 1},
- {"yield", NULL, TclCompileYieldCmd, TclNRYieldObjCmd, 1},
- {"yieldto", NULL, NULL, TclNRYieldToObjCmd, 1},
+ {"catch", Tcl_CatchObjCmd, TclCompileCatchCmd, TclNRCatchObjCmd, CMD_IS_SAFE},
+ {"concat", Tcl_ConcatObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"continue", Tcl_ContinueObjCmd, TclCompileContinueCmd, NULL, CMD_IS_SAFE},
+ {"coroutine", NULL, NULL, TclNRCoroutineObjCmd, CMD_IS_SAFE},
+ {"error", Tcl_ErrorObjCmd, TclCompileErrorCmd, NULL, CMD_IS_SAFE},
+ {"eval", Tcl_EvalObjCmd, NULL, TclNREvalObjCmd, CMD_IS_SAFE},
+ {"expr", Tcl_ExprObjCmd, TclCompileExprCmd, TclNRExprObjCmd, CMD_IS_SAFE},
+ {"for", Tcl_ForObjCmd, TclCompileForCmd, TclNRForObjCmd, CMD_IS_SAFE},
+ {"foreach", Tcl_ForeachObjCmd, TclCompileForeachCmd, TclNRForeachCmd, CMD_IS_SAFE},
+ {"format", Tcl_FormatObjCmd, TclCompileFormatCmd, NULL, CMD_IS_SAFE},
+ {"global", Tcl_GlobalObjCmd, TclCompileGlobalCmd, NULL, CMD_IS_SAFE},
+ {"if", Tcl_IfObjCmd, TclCompileIfCmd, TclNRIfObjCmd, CMD_IS_SAFE},
+ {"incr", Tcl_IncrObjCmd, TclCompileIncrCmd, NULL, CMD_IS_SAFE},
+ {"join", Tcl_JoinObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"lappend", Tcl_LappendObjCmd, TclCompileLappendCmd, NULL, CMD_IS_SAFE},
+ {"lassign", Tcl_LassignObjCmd, TclCompileLassignCmd, NULL, CMD_IS_SAFE},
+ {"lindex", Tcl_LindexObjCmd, TclCompileLindexCmd, NULL, CMD_IS_SAFE},
+ {"linsert", Tcl_LinsertObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"list", Tcl_ListObjCmd, TclCompileListCmd, NULL, CMD_IS_SAFE|CMD_COMPILES_EXPANDED},
+ {"llength", Tcl_LlengthObjCmd, TclCompileLlengthCmd, NULL, CMD_IS_SAFE},
+ {"lmap", Tcl_LmapObjCmd, TclCompileLmapCmd, TclNRLmapCmd, CMD_IS_SAFE},
+ {"lrange", Tcl_LrangeObjCmd, TclCompileLrangeCmd, NULL, CMD_IS_SAFE},
+ {"lrepeat", Tcl_LrepeatObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"lreplace", Tcl_LreplaceObjCmd, TclCompileLreplaceCmd, NULL, CMD_IS_SAFE},
+ {"lreverse", Tcl_LreverseObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"lsearch", Tcl_LsearchObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"lset", Tcl_LsetObjCmd, TclCompileLsetCmd, NULL, CMD_IS_SAFE},
+ {"lsort", Tcl_LsortObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"package", Tcl_PackageObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"proc", Tcl_ProcObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"regexp", Tcl_RegexpObjCmd, TclCompileRegexpCmd, NULL, CMD_IS_SAFE},
+ {"regsub", Tcl_RegsubObjCmd, TclCompileRegsubCmd, NULL, CMD_IS_SAFE},
+ {"rename", Tcl_RenameObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"return", Tcl_ReturnObjCmd, TclCompileReturnCmd, NULL, CMD_IS_SAFE},
+ {"scan", Tcl_ScanObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"set", Tcl_SetObjCmd, TclCompileSetCmd, NULL, CMD_IS_SAFE},
+ {"split", Tcl_SplitObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"subst", Tcl_SubstObjCmd, TclCompileSubstCmd, TclNRSubstObjCmd, CMD_IS_SAFE},
+ {"switch", Tcl_SwitchObjCmd, TclCompileSwitchCmd, TclNRSwitchObjCmd, CMD_IS_SAFE},
+ {"tailcall", NULL, TclCompileTailcallCmd, TclNRTailcallObjCmd, CMD_IS_SAFE},
+ {"throw", Tcl_ThrowObjCmd, TclCompileThrowCmd, NULL, CMD_IS_SAFE},
+ {"trace", Tcl_TraceObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"try", Tcl_TryObjCmd, TclCompileTryCmd, TclNRTryObjCmd, CMD_IS_SAFE},
+ {"unset", Tcl_UnsetObjCmd, TclCompileUnsetCmd, NULL, CMD_IS_SAFE},
+ {"uplevel", Tcl_UplevelObjCmd, NULL, TclNRUplevelObjCmd, CMD_IS_SAFE},
+ {"upvar", Tcl_UpvarObjCmd, TclCompileUpvarCmd, NULL, CMD_IS_SAFE},
+ {"variable", Tcl_VariableObjCmd, TclCompileVariableCmd, NULL, CMD_IS_SAFE},
+ {"while", Tcl_WhileObjCmd, TclCompileWhileCmd, TclNRWhileObjCmd, CMD_IS_SAFE},
+ {"yield", NULL, TclCompileYieldCmd, TclNRYieldObjCmd, CMD_IS_SAFE},
+ {"yieldto", NULL, NULL, TclNRYieldToObjCmd, CMD_IS_SAFE},
/*
* Commands in the OS-interface. Note that many of these are unsafe.
*/
- {"after", Tcl_AfterObjCmd, NULL, NULL, 1},
+ {"after", Tcl_AfterObjCmd, NULL, NULL, CMD_IS_SAFE},
{"cd", Tcl_CdObjCmd, NULL, NULL, 0},
- {"close", Tcl_CloseObjCmd, NULL, NULL, 1},
- {"eof", Tcl_EofObjCmd, NULL, NULL, 1},
+ {"close", Tcl_CloseObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"eof", Tcl_EofObjCmd, NULL, NULL, CMD_IS_SAFE},
{"encoding", Tcl_EncodingObjCmd, NULL, NULL, 0},
{"exec", Tcl_ExecObjCmd, NULL, NULL, 0},
{"exit", Tcl_ExitObjCmd, NULL, NULL, 0},
- {"fblocked", Tcl_FblockedObjCmd, NULL, NULL, 1},
+ {"fblocked", Tcl_FblockedObjCmd, NULL, NULL, CMD_IS_SAFE},
{"fconfigure", Tcl_FconfigureObjCmd, NULL, NULL, 0},
- {"fcopy", Tcl_FcopyObjCmd, NULL, NULL, 1},
- {"fileevent", Tcl_FileEventObjCmd, NULL, NULL, 1},
- {"flush", Tcl_FlushObjCmd, NULL, NULL, 1},
- {"gets", Tcl_GetsObjCmd, NULL, NULL, 1},
+ {"fcopy", Tcl_FcopyObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"fileevent", Tcl_FileEventObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"flush", Tcl_FlushObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"gets", Tcl_GetsObjCmd, NULL, NULL, CMD_IS_SAFE},
{"glob", Tcl_GlobObjCmd, NULL, NULL, 0},
{"load", Tcl_LoadObjCmd, NULL, NULL, 0},
{"open", Tcl_OpenObjCmd, NULL, NULL, 0},
- {"pid", Tcl_PidObjCmd, NULL, NULL, 1},
- {"puts", Tcl_PutsObjCmd, NULL, NULL, 1},
+ {"pid", Tcl_PidObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"puts", Tcl_PutsObjCmd, NULL, NULL, CMD_IS_SAFE},
{"pwd", Tcl_PwdObjCmd, NULL, NULL, 0},
- {"read", Tcl_ReadObjCmd, NULL, NULL, 1},
- {"seek", Tcl_SeekObjCmd, NULL, NULL, 1},
+ {"read", Tcl_ReadObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"seek", Tcl_SeekObjCmd, NULL, NULL, CMD_IS_SAFE},
{"socket", Tcl_SocketObjCmd, NULL, NULL, 0},
{"source", Tcl_SourceObjCmd, NULL, TclNRSourceObjCmd, 0},
- {"tell", Tcl_TellObjCmd, NULL, NULL, 1},
- {"time", Tcl_TimeObjCmd, NULL, NULL, 1},
+ {"tell", Tcl_TellObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"time", Tcl_TimeObjCmd, NULL, NULL, CMD_IS_SAFE},
{"unload", Tcl_UnloadObjCmd, NULL, NULL, 0},
- {"update", Tcl_UpdateObjCmd, NULL, NULL, 1},
- {"vwait", Tcl_VwaitObjCmd, NULL, NULL, 1},
+ {"update", Tcl_UpdateObjCmd, NULL, NULL, CMD_IS_SAFE},
+ {"vwait", Tcl_VwaitObjCmd, NULL, NULL, CMD_IS_SAFE},
{NULL, NULL, NULL, NULL, 0}
};
@@ -481,6 +486,17 @@ Tcl_CreateInterp(void)
Tcl_Panic("Tcl_CallFrame must not be smaller than CallFrame");
}
+#if defined(_WIN32) && !defined(_WIN64)
+ if (sizeof(time_t) != 4) {
+ /*NOTREACHED*/
+ Tcl_Panic("sys/time.h is not compatible with MSVC");
+ }
+ if (sizeof(Tcl_StatBuf) != 48) {
+ /*NOTREACHED*/
+ Tcl_Panic("sys/stat.h is not compatible with MSVC");
+ }
+#endif
+
if (cancelTableInitialized == 0) {
Tcl_MutexLock(&cancelLock);
if (cancelTableInitialized == 0) {
@@ -768,6 +784,9 @@ Tcl_CreateInterp(void)
cmdPtr->deleteProc = NULL;
cmdPtr->deleteData = NULL;
cmdPtr->flags = 0;
+ if (cmdInfoPtr->flags & CMD_COMPILES_EXPANDED) {
+ cmdPtr->flags |= CMD_COMPILES_EXPANDED;
+ }
cmdPtr->importRefPtr = NULL;
cmdPtr->tracePtr = NULL;
cmdPtr->nreProc = cmdInfoPtr->nreProc;
@@ -1000,7 +1019,7 @@ TclHideUnsafeCommands(
return TCL_ERROR;
}
for (cmdInfoPtr = builtInCmds; cmdInfoPtr->name != NULL; cmdInfoPtr++) {
- if (!cmdInfoPtr->isSafe) {
+ if (!(cmdInfoPtr->flags & CMD_IS_SAFE)) {
Tcl_HideCommand(interp, cmdInfoPtr->name, cmdInfoPtr->name);
}
}
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c
index c70ba23..0e33392 100644
--- a/generic/tclCmdIL.c
+++ b/generic/tclCmdIL.c
@@ -3005,7 +3005,7 @@ Tcl_LsearchObjCmd(
dataType = INTEGER;
break;
case LSEARCH_NOCASE: /* -nocase */
- strCmpFn = strcasecmp;
+ strCmpFn = TclUtfCasecmp;
noCase = 1;
break;
case LSEARCH_NOT: /* -not */
@@ -3400,7 +3400,7 @@ Tcl_LsearchObjCmd(
*/
if (noCase) {
- match = (strcasecmp(bytes, patternBytes) == 0);
+ match = (TclUtfCasecmp(bytes, patternBytes) == 0);
} else {
match = (memcmp(bytes, patternBytes,
(size_t) length) == 0);
@@ -3645,7 +3645,8 @@ Tcl_LsortObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument values. */
{
- int i, j, index, indices, length, nocase = 0, sortMode, indexc;
+ int i, j, index, indices, length, nocase = 0, indexc;
+ int sortMode = SORTMODE_ASCII;
int group, groupSize, groupOffset, idx, allocatedIndexVector = 0;
Tcl_Obj *resultPtr, *cmdPtr, **listObjPtrs, *listObj, *indexPtr;
SortElement *elementArray, *elementPtr;
@@ -3991,7 +3992,7 @@ Tcl_LsortObjCmd(
goto done1;
}
elementArray[i].collationKey.intValue = a;
- } else if (sortInfo.sortMode == SORTMODE_REAL) {
+ } else if (sortMode == SORTMODE_REAL) {
double a;
if (Tcl_GetDoubleFromObj(sortInfo.interp, indexPtr,
@@ -4088,7 +4089,7 @@ Tcl_LsortObjCmd(
TclStackFree(interp, elementArray);
done:
- if (sortInfo.sortMode == SORTMODE_COMMAND) {
+ if (sortMode == SORTMODE_COMMAND) {
TclDecrRefCount(sortInfo.compareCmdPtr);
TclDecrRefCount(listObj);
sortInfo.compareCmdPtr = NULL;
@@ -4233,7 +4234,7 @@ SortCompare(
order = strcmp(elemPtr1->collationKey.strValuePtr,
elemPtr2->collationKey.strValuePtr);
} else if (infoPtr->sortMode == SORTMODE_ASCII_NC) {
- order = strcasecmp(elemPtr1->collationKey.strValuePtr,
+ order = TclUtfCasecmp(elemPtr1->collationKey.strValuePtr,
elemPtr2->collationKey.strValuePtr);
} else if (infoPtr->sortMode == SORTMODE_DICTIONARY) {
order = DictionaryCompare(elemPtr1->collationKey.strValuePtr,
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c
index fc4624b..5087fbb 100644
--- a/generic/tclCmdMZ.c
+++ b/generic/tclCmdMZ.c
@@ -3527,7 +3527,7 @@ TclNRSwitchObjCmd(
i++;
goto finishedOptions;
case OPT_NOCASE:
- strCmpFn = strcasecmp;
+ strCmpFn = TclUtfCasecmp;
noCase = 1;
break;
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c
index f6ca0e0..8c88649 100644
--- a/generic/tclCompCmds.c
+++ b/generic/tclCompCmds.c
@@ -7,7 +7,7 @@
* Copyright (c) 1997-1998 Sun Microsystems, Inc.
* Copyright (c) 2001 by Kevin B. Kenny. All rights reserved.
* Copyright (c) 2002 ActiveState Corporation.
- * Copyright (c) 2004-2006 by Donal K. Fellows.
+ * Copyright (c) 2004-2013 by Donal K. Fellows.
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -31,16 +31,6 @@ static void FreeForeachInfo(ClientData clientData);
static void PrintForeachInfo(ClientData clientData,
Tcl_Obj *appendObj, ByteCode *codePtr,
unsigned int pcOffset);
-static void CompileReturnInternal(CompileEnv *envPtr,
- unsigned char op, int code, int level,
- Tcl_Obj *returnOpts);
-static int IndexTailVarIfKnown(Tcl_Interp *interp,
- Tcl_Token *varTokenPtr, CompileEnv *envPtr);
-static int PushVarName(Tcl_Interp *interp,
- Tcl_Token *varTokenPtr, CompileEnv *envPtr,
- int flags, int *localIndexPtr,
- int *simpleVarNamePtr, int *isScalarPtr,
- int line, int *clNext);
static int CompileEachloopCmd(Tcl_Interp *interp,
Tcl_Parse *parsePtr, Command *cmdPtr,
CompileEnv *envPtr, int collect);
@@ -48,67 +38,6 @@ static int CompileDictEachCmd(Tcl_Interp *interp,
Tcl_Parse *parsePtr, Command *cmdPtr,
struct CompileEnv *envPtr, int collect);
-
-/*
- * Macro that encapsulates an efficiency trick that avoids a function call for
- * the simplest of compiles. The ANSI C "prototype" for this macro is:
- *
- * static void CompileWord(CompileEnv *envPtr, Tcl_Token *tokenPtr,
- * Tcl_Interp *interp, int word);
- */
-
-#define CompileWord(envPtr, tokenPtr, interp, word) \
- if ((tokenPtr)->type == TCL_TOKEN_SIMPLE_WORD) { \
- TclEmitPush(TclRegisterNewLiteral((envPtr), (tokenPtr)[1].start, \
- (tokenPtr)[1].size), (envPtr)); \
- } else { \
- envPtr->line = mapPtr->loc[eclIndex].line[word]; \
- envPtr->clNext = mapPtr->loc[eclIndex].next[word]; \
- TclCompileTokens((interp), (tokenPtr)+1, (tokenPtr)->numComponents, \
- (envPtr)); \
- }
-
-/*
- * TIP #280: Remember the per-word line information of the current command. An
- * index is used instead of a pointer as recursive compilation may reallocate,
- * i.e. move, the array. This is also the reason to save the nuloc now, it may
- * change during the course of the function.
- *
- * Macro to encapsulate the variable definition and setup.
- */
-
-#define DefineLineInformation \
- ExtCmdLoc *mapPtr = envPtr->extCmdMapPtr; \
- int eclIndex = mapPtr->nuloc - 1
-
-#define SetLineInformation(word) \
- envPtr->line = mapPtr->loc[eclIndex].line[(word)]; \
- envPtr->clNext = mapPtr->loc[eclIndex].next[(word)]
-
-#define PushVarNameWord(i,v,e,f,l,s,sc,word) \
- PushVarName(i,v,e,f,l,s,sc, \
- mapPtr->loc[eclIndex].line[(word)], \
- mapPtr->loc[eclIndex].next[(word)])
-
-/*
- * Often want to issue one of two versions of an instruction based on whether
- * the argument will fit in a single byte or not. This makes it much clearer.
- */
-
-#define Emit14Inst(nm,idx,envPtr) \
- if (idx <= 255) { \
- TclEmitInstInt1(nm##1,idx,envPtr); \
- } else { \
- TclEmitInstInt4(nm##4,idx,envPtr); \
- }
-
-/*
- * Flags bits used by PushVarName.
- */
-
-#define TCL_NO_LARGE_INDEX 1 /* Do not return localIndex value > 255 */
-#define TCL_NO_ELEMENT 2 /* Do not push the array element. */
-
/*
* The structures below define the AuxData types defined in this file.
*/
@@ -155,7 +84,7 @@ TclCompileAppendCmd(
CompileEnv *envPtr) /* Holds resulting instructions. */
{
Tcl_Token *varTokenPtr, *valueTokenPtr;
- int simpleVarName, isScalar, localIndex, numWords;
+ int simpleVarName, isScalar, localIndex, numWords, i;
DefineLineInformation; /* TIP #280 */
numWords = parsePtr->numWords;
@@ -169,10 +98,11 @@ TclCompileAppendCmd(
return TclCompileSetCmd(interp, parsePtr, cmdPtr, envPtr);
} else if (numWords > 3) {
/*
- * APPEND instructions currently only handle one value.
+ * APPEND instructions currently only handle one value, but we can
+ * handle some multi-value cases by stringing them together.
*/
- return TCL_ERROR;
+ goto appendMultiple;
}
/*
@@ -222,6 +152,42 @@ TclCompileAppendCmd(
}
return TCL_OK;
+
+ appendMultiple:
+ /*
+ * Can only handle the case where we are appending to a local scalar when
+ * there are multiple values to append. Fortunately, this is common.
+ */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_ELEMENT,
+ &localIndex, &simpleVarName, &isScalar, 1);
+ if (!isScalar || localIndex < 0) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Definitely appending to a local scalar; generate the words and append
+ * them.
+ */
+
+ valueTokenPtr = TokenAfter(varTokenPtr);
+ for (i = 2 ; i < numWords ; i++) {
+ CompileWord(envPtr, valueTokenPtr, interp, i);
+ valueTokenPtr = TokenAfter(valueTokenPtr);
+ }
+ TclEmitInstInt4( INST_REVERSE, numWords-2, envPtr);
+ for (i = 2 ; i < numWords ;) {
+ Emit14Inst( INST_APPEND_SCALAR, localIndex, envPtr);
+ if (++i < numWords) {
+ TclEmitOpcode(INST_POP, envPtr);
+ }
+ }
+
+ return TCL_OK;
}
/*
@@ -297,11 +263,6 @@ TclCompileArraySetCmd(
}
varTokenPtr = TokenAfter(parsePtr->tokenPtr);
- PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_ELEMENT,
- &localIndex, &simpleVarName, &isScalar, 1);
- if (!isScalar) {
- return TCL_ERROR;
- }
dataTokenPtr = TokenAfter(varTokenPtr);
literalObj = Tcl_NewObj();
isDataLiteral = TclWordKnownAtCompileTime(dataTokenPtr, literalObj);
@@ -310,6 +271,23 @@ TclCompileArraySetCmd(
isDataEven = (isDataValid && (len & 1) == 0);
/*
+ * Special case: literal odd-length argument is always an error.
+ */
+
+ if (isDataValid && !isDataEven) {
+ PushStringLiteral(envPtr, "list must have an even number of elements");
+ PushStringLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}");
+ TclEmitInstInt4(INST_RETURN_IMM, 1, envPtr);
+ TclEmitInt4( 0, envPtr);
+ goto done;
+ }
+
+ PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_ELEMENT,
+ &localIndex, &simpleVarName, &isScalar, 1);
+ if (!isScalar) {
+ return TCL_ERROR;
+ }
+ /*
* Special case: literal empty value argument is just an "ensure array"
* operation.
*/
@@ -329,24 +307,7 @@ TclCompileArraySetCmd(
envPtr->currStackDepth = savedStackDepth;
TclEmitOpcode( INST_POP, envPtr);
}
- PushLiteral(envPtr, "", 0);
- goto done;
- }
-
- /*
- * Special case: literal odd-length argument is always an error.
- */
-
- if (isDataValid && !isDataEven) {
- savedStackDepth = envPtr->currStackDepth;
- PushLiteral(envPtr, "list must have an even number of elements",
- strlen("list must have an even number of elements"));
- PushLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}",
- strlen("-errorCode {TCL ARGUMENT FORMAT}"));
- TclEmitInstInt4(INST_RETURN_IMM, 1, envPtr);
- TclEmitInt4( 0, envPtr);
- envPtr->currStackDepth = savedStackDepth;
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
goto done;
}
@@ -410,15 +371,13 @@ TclCompileArraySetCmd(
TclEmitOpcode( INST_DUP, envPtr);
TclEmitOpcode( INST_LIST_LENGTH, envPtr);
- PushLiteral(envPtr, "1", 1);
+ PushStringLiteral(envPtr, "1");
TclEmitOpcode( INST_BITAND, envPtr);
offsetFwd = CurrentOffset(envPtr);
TclEmitInstInt1(INST_JUMP_FALSE1, 0, envPtr);
savedStackDepth = envPtr->currStackDepth;
- PushLiteral(envPtr, "list must have an even number of elements",
- strlen("list must have an even number of elements"));
- PushLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}",
- strlen("-errorCode {TCL ARGUMENT FORMAT}"));
+ PushStringLiteral(envPtr, "list must have an even number of elements");
+ PushStringLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}");
TclEmitInstInt4(INST_RETURN_IMM, 1, envPtr);
TclEmitInt4( 0, envPtr);
envPtr->currStackDepth = savedStackDepth;
@@ -475,7 +434,7 @@ TclCompileArraySetCmd(
TclEmitInstInt1(INST_UNSET_SCALAR, 0, envPtr);
TclEmitInt4( dataVar, envPtr);
}
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
done:
Tcl_DecrRefCount(literalObj);
return TCL_OK;
@@ -519,7 +478,7 @@ TclCompileArrayUnsetCmd(
envPtr->currStackDepth = savedStackDepth;
TclEmitOpcode( INST_POP, envPtr);
}
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
return TCL_OK;
}
@@ -559,7 +518,7 @@ TclCompileBreakCmd(
*/
TclEmitOpcode(INST_BREAK, envPtr);
- PushLiteral(envPtr, "", 0); /* Evil hack! */
+ PushStringLiteral(envPtr, ""); /* Evil hack! */
return TCL_OK;
}
@@ -708,7 +667,7 @@ TclCompileCatchCmd(
*/
TclEmitOpcode( INST_POP, envPtr);
- PushLiteral(envPtr, "0", 1);
+ PushStringLiteral(envPtr, "0");
TclEmitInstInt1( INST_JUMP1, 3, envPtr);
envPtr->currStackDepth = savedStackDepth;
ExceptionRangeTarget(envPtr, range, catchOffset);
@@ -730,7 +689,7 @@ TclCompileCatchCmd(
* and jump around the "error case" code.
*/
- PushLiteral(envPtr, "0", 1);
+ PushStringLiteral(envPtr, "0");
TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &jumpFixup);
/* Stack at this point: ?script? <mark> result TCL_OK */
@@ -866,7 +825,7 @@ TclCompileContinueCmd(
*/
TclEmitOpcode(INST_CONTINUE, envPtr);
- PushLiteral(envPtr, "", 0); /* Evil hack! */
+ PushStringLiteral(envPtr, ""); /* Evil hack! */
return TCL_OK;
}
@@ -1242,7 +1201,7 @@ TclCompileDictCreateCmd(
return TclCompileBasicMin0ArgCmd(interp, parsePtr, cmdPtr, envPtr);
}
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
Emit14Inst( INST_STORE_SCALAR, worker, envPtr);
TclEmitOpcode( INST_POP, envPtr);
tokenPtr = TokenAfter(parsePtr->tokenPtr);
@@ -1281,7 +1240,7 @@ TclCompileDictMergeCmd(
*/
if (parsePtr->numWords < 2) {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
return TCL_OK;
} else if (parsePtr->numWords == 2) {
tokenPtr = TokenAfter(parsePtr->tokenPtr);
@@ -1370,6 +1329,7 @@ TclCompileDictMergeCmd(
TclEmitInstInt1( INST_UNSET_SCALAR, 0, envPtr);
TclEmitInt4( infoIndex, envPtr);
TclEmitOpcode( INST_RETURN_STK, envPtr);
+ TclAdjustStackDepth(-1, envPtr);
return TCL_OK;
}
@@ -1511,7 +1471,7 @@ CompileDictEachCmd(
*/
if (collect == TCL_EACH_COLLECT) {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
Emit14Inst( INST_STORE_SCALAR, collectVar, envPtr);
TclEmitOpcode( INST_POP, envPtr);
}
@@ -1649,7 +1609,7 @@ CompileDictEachCmd(
TclEmitInstInt1(INST_UNSET_SCALAR, 0, envPtr);
TclEmitInt4( collectVar, envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
return TCL_OK;
}
@@ -2025,18 +1985,18 @@ TclCompileDictWithCmd(
TclEmitInstInt4(INST_OVER, 1, envPtr);
TclEmitOpcode( INST_DICT_EXPAND, envPtr);
TclEmitInstInt4(INST_DICT_RECOMBINE_IMM, dictVar, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
} else {
/*
* Case: Direct dict in LVT with empty body.
*/
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
Emit14Inst( INST_LOAD_SCALAR, dictVar, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
TclEmitOpcode( INST_DICT_EXPAND, envPtr);
TclEmitInstInt4(INST_DICT_RECOMBINE_IMM, dictVar, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
} else {
if (gotPath) {
@@ -2055,7 +2015,7 @@ TclCompileDictWithCmd(
TclEmitInstInt4(INST_OVER, 1, envPtr);
TclEmitOpcode( INST_DICT_EXPAND, envPtr);
TclEmitOpcode( INST_DICT_RECOMBINE_STK, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
} else {
/*
* Case: Direct dict in non-simple var with empty body.
@@ -2064,12 +2024,12 @@ TclCompileDictWithCmd(
CompileWord(envPtr, varTokenPtr, interp, 0);
TclEmitOpcode( INST_DUP, envPtr);
TclEmitOpcode( INST_LOAD_STK, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
TclEmitOpcode( INST_DICT_EXPAND, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
TclEmitInstInt4(INST_REVERSE, 2, envPtr);
TclEmitOpcode( INST_DICT_RECOMBINE_STK, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
}
envPtr->currStackDepth = savedStackDepth + 1;
@@ -2122,7 +2082,7 @@ TclCompileDictWithCmd(
if (gotPath) {
Emit14Inst( INST_LOAD_SCALAR, pathTmp, envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
TclEmitOpcode( INST_DICT_EXPAND, envPtr);
Emit14Inst( INST_STORE_SCALAR, keysTmp, envPtr);
@@ -2153,7 +2113,7 @@ TclCompileDictWithCmd(
if (gotPath) {
Emit14Inst( INST_LOAD_SCALAR, pathTmp, envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
Emit14Inst( INST_LOAD_SCALAR, keysTmp, envPtr);
if (dictVar == -1) {
@@ -2177,7 +2137,7 @@ TclCompileDictWithCmd(
if (parsePtr->numWords > 3) {
Emit14Inst( INST_LOAD_SCALAR, pathTmp, envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
Emit14Inst( INST_LOAD_SCALAR, keysTmp, envPtr);
if (dictVar == -1) {
@@ -2299,7 +2259,7 @@ TclCompileErrorCmd(
}
messageTokenPtr = TokenAfter(parsePtr->tokenPtr);
- PushLiteral(envPtr, "-code error -level 0", 20);
+ PushStringLiteral(envPtr, "-code error -level 0");
CompileWord(envPtr, messageTokenPtr, interp, 1);
TclEmitOpcode(INST_RETURN_STK, envPtr);
envPtr->currStackDepth = savedStackDepth + 1;
@@ -2512,7 +2472,7 @@ TclCompileForCmd(
*/
envPtr->currStackDepth = savedStackDepth;
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
return TCL_OK;
}
@@ -2551,6 +2511,37 @@ TclCompileForeachCmd(
/*
*----------------------------------------------------------------------
*
+ * TclCompileLmapCmd --
+ *
+ * Procedure called to compile the "lmap" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "lmap" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLmapCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ return CompileEachloopCmd(interp, parsePtr, cmdPtr, envPtr,
+ TCL_EACH_COLLECT);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* CompileEachloopCmd --
*
* Procedure called to compile the "foreach" and "lmap" commands.
@@ -2791,7 +2782,7 @@ CompileEachloopCmd(
*/
if (collect == TCL_EACH_COLLECT) {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
Emit14Inst( INST_STORE_SCALAR, collectVar, envPtr);
TclEmitOpcode( INST_POP, envPtr);
}
@@ -2884,7 +2875,7 @@ CompileEachloopCmd(
TclEmitInstInt1(INST_UNSET_SCALAR, 0, envPtr);
TclEmitInt4( collectVar, envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
envPtr->currStackDepth = savedStackDepth + 1;
@@ -3256,7 +3247,7 @@ TclCompileFormatCmd(
*/
TclEmitOpcode(INST_DUP, envPtr);
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
TclEmitOpcode(INST_STR_EQ, envPtr);
TclEmitOpcode(INST_POP, envPtr);
}
@@ -3266,2790 +3257,7 @@ TclCompileFormatCmd(
/*
*----------------------------------------------------------------------
*
- * TclCompileGlobalCmd --
- *
- * Procedure called to compile the "global" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "global" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileGlobalCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *varTokenPtr;
- int localIndex, numWords, i;
- DefineLineInformation; /* TIP #280 */
-
- numWords = parsePtr->numWords;
- if (numWords < 2) {
- return TCL_ERROR;
- }
-
- /*
- * 'global' has no effect outside of proc bodies; handle that at runtime
- */
-
- if (envPtr->procPtr == NULL) {
- return TCL_ERROR;
- }
-
- /*
- * Push the namespace
- */
-
- PushLiteral(envPtr, "::", 2);
-
- /*
- * Loop over the variables.
- */
-
- varTokenPtr = TokenAfter(parsePtr->tokenPtr);
- for (i=2; i<=numWords; varTokenPtr = TokenAfter(varTokenPtr),i++) {
- localIndex = IndexTailVarIfKnown(interp, varTokenPtr, envPtr);
-
- if (localIndex < 0) {
- return TCL_ERROR;
- }
-
- CompileWord(envPtr, varTokenPtr, interp, 1);
- TclEmitInstInt4( INST_NSUPVAR, localIndex, envPtr);
- }
-
- /*
- * Pop the namespace, and set the result to empty
- */
-
- TclEmitOpcode( INST_POP, envPtr);
- PushLiteral(envPtr, "", 0);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileIfCmd --
- *
- * Procedure called to compile the "if" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "if" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileIfCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- JumpFixupArray jumpFalseFixupArray;
- /* Used to fix the ifFalse jump after each
- * test when its target PC is determined. */
- JumpFixupArray jumpEndFixupArray;
- /* Used to fix the jump after each "then" body
- * to the end of the "if" when that PC is
- * determined. */
- Tcl_Token *tokenPtr, *testTokenPtr;
- int jumpIndex = 0; /* Avoid compiler warning. */
- int jumpFalseDist, numWords, wordIdx, numBytes, j, code;
- const char *word;
- int savedStackDepth = envPtr->currStackDepth;
- /* Saved stack depth at the start of the first
- * test; the envPtr current depth is restored
- * to this value at the start of each test. */
- int realCond = 1; /* Set to 0 for static conditions:
- * "if 0 {..}" */
- int boolVal; /* Value of static condition. */
- int compileScripts = 1;
- DefineLineInformation; /* TIP #280 */
-
- /*
- * Only compile the "if" command if all arguments are simple words, in
- * order to insure correct substitution [Bug 219166]
- */
-
- tokenPtr = parsePtr->tokenPtr;
- wordIdx = 0;
- numWords = parsePtr->numWords;
-
- for (wordIdx = 0; wordIdx < numWords; wordIdx++) {
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(tokenPtr);
- }
-
- TclInitJumpFixupArray(&jumpFalseFixupArray);
- TclInitJumpFixupArray(&jumpEndFixupArray);
- code = TCL_OK;
-
- /*
- * Each iteration of this loop compiles one "if expr ?then? body" or
- * "elseif expr ?then? body" clause.
- */
-
- tokenPtr = parsePtr->tokenPtr;
- wordIdx = 0;
- while (wordIdx < numWords) {
- /*
- * Stop looping if the token isn't "if" or "elseif".
- */
-
- word = tokenPtr[1].start;
- numBytes = tokenPtr[1].size;
- if ((tokenPtr == parsePtr->tokenPtr)
- || ((numBytes == 6) && (strncmp(word, "elseif", 6) == 0))) {
- tokenPtr = TokenAfter(tokenPtr);
- wordIdx++;
- } else {
- break;
- }
- if (wordIdx >= numWords) {
- code = TCL_ERROR;
- goto done;
- }
-
- /*
- * Compile the test expression then emit the conditional jump around
- * the "then" part.
- */
-
- envPtr->currStackDepth = savedStackDepth;
- testTokenPtr = tokenPtr;
-
- if (realCond) {
- /*
- * Find out if the condition is a constant.
- */
-
- Tcl_Obj *boolObj = Tcl_NewStringObj(testTokenPtr[1].start,
- testTokenPtr[1].size);
-
- Tcl_IncrRefCount(boolObj);
- code = Tcl_GetBooleanFromObj(NULL, boolObj, &boolVal);
- TclDecrRefCount(boolObj);
- if (code == TCL_OK) {
- /*
- * A static condition.
- */
-
- realCond = 0;
- if (!boolVal) {
- compileScripts = 0;
- }
- } else {
- SetLineInformation(wordIdx);
- Tcl_ResetResult(interp);
- TclCompileExprWords(interp, testTokenPtr, 1, envPtr);
- if (jumpFalseFixupArray.next >= jumpFalseFixupArray.end) {
- TclExpandJumpFixupArray(&jumpFalseFixupArray);
- }
- jumpIndex = jumpFalseFixupArray.next;
- jumpFalseFixupArray.next++;
- TclEmitForwardJump(envPtr, TCL_FALSE_JUMP,
- jumpFalseFixupArray.fixup+jumpIndex);
- }
- code = TCL_OK;
- }
-
- /*
- * Skip over the optional "then" before the then clause.
- */
-
- tokenPtr = TokenAfter(testTokenPtr);
- wordIdx++;
- if (wordIdx >= numWords) {
- code = TCL_ERROR;
- goto done;
- }
- if (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- word = tokenPtr[1].start;
- numBytes = tokenPtr[1].size;
- if ((numBytes == 4) && (strncmp(word, "then", 4) == 0)) {
- tokenPtr = TokenAfter(tokenPtr);
- wordIdx++;
- if (wordIdx >= numWords) {
- code = TCL_ERROR;
- goto done;
- }
- }
- }
-
- /*
- * Compile the "then" command body.
- */
-
- if (compileScripts) {
- SetLineInformation(wordIdx);
- envPtr->currStackDepth = savedStackDepth;
- CompileBody(envPtr, tokenPtr, interp);
- }
-
- if (realCond) {
- /*
- * Jump to the end of the "if" command. Both jumpFalseFixupArray
- * and jumpEndFixupArray are indexed by "jumpIndex".
- */
-
- if (jumpEndFixupArray.next >= jumpEndFixupArray.end) {
- TclExpandJumpFixupArray(&jumpEndFixupArray);
- }
- jumpEndFixupArray.next++;
- TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP,
- jumpEndFixupArray.fixup+jumpIndex);
-
- /*
- * Fix the target of the jumpFalse after the test. Generate a 4
- * byte jump if the distance is > 120 bytes. This is conservative,
- * and ensures that we won't have to replace this jump if we later
- * also need to replace the proceeding jump to the end of the "if"
- * with a 4 byte jump.
- */
-
- if (TclFixupForwardJumpToHere(envPtr,
- jumpFalseFixupArray.fixup+jumpIndex, 120)) {
- /*
- * Adjust the code offset for the proceeding jump to the end
- * of the "if" command.
- */
-
- jumpEndFixupArray.fixup[jumpIndex].codeOffset += 3;
- }
- } else if (boolVal) {
- /*
- * We were processing an "if 1 {...}"; stop compiling scripts.
- */
-
- compileScripts = 0;
- } else {
- /*
- * We were processing an "if 0 {...}"; reset so that the rest
- * (elseif, else) is compiled correctly.
- */
-
- realCond = 1;
- compileScripts = 1;
- }
-
- tokenPtr = TokenAfter(tokenPtr);
- wordIdx++;
- }
-
- /*
- * Restore the current stack depth in the environment; the "else" clause
- * (or its default) will add 1 to this.
- */
-
- envPtr->currStackDepth = savedStackDepth;
-
- /*
- * Check for the optional else clause. Do not compile anything if this was
- * an "if 1 {...}" case.
- */
-
- if ((wordIdx < numWords) && (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD)) {
- /*
- * There is an else clause. Skip over the optional "else" word.
- */
-
- word = tokenPtr[1].start;
- numBytes = tokenPtr[1].size;
- if ((numBytes == 4) && (strncmp(word, "else", 4) == 0)) {
- tokenPtr = TokenAfter(tokenPtr);
- wordIdx++;
- if (wordIdx >= numWords) {
- code = TCL_ERROR;
- goto done;
- }
- }
-
- if (compileScripts) {
- /*
- * Compile the else command body.
- */
-
- SetLineInformation(wordIdx);
- CompileBody(envPtr, tokenPtr, interp);
- }
-
- /*
- * Make sure there are no words after the else clause.
- */
-
- wordIdx++;
- if (wordIdx < numWords) {
- code = TCL_ERROR;
- goto done;
- }
- } else {
- /*
- * No else clause: the "if" command's result is an empty string.
- */
-
- if (compileScripts) {
- PushLiteral(envPtr, "", 0);
- }
- }
-
- /*
- * Fix the unconditional jumps to the end of the "if" command.
- */
-
- for (j = jumpEndFixupArray.next; j > 0; j--) {
- jumpIndex = (j - 1); /* i.e. process the closest jump first. */
- if (TclFixupForwardJumpToHere(envPtr,
- jumpEndFixupArray.fixup+jumpIndex, 127)) {
- /*
- * Adjust the immediately preceeding "ifFalse" jump. We moved it's
- * target (just after this jump) down three bytes.
- */
-
- unsigned char *ifFalsePc = envPtr->codeStart
- + jumpFalseFixupArray.fixup[jumpIndex].codeOffset;
- unsigned char opCode = *ifFalsePc;
-
- if (opCode == INST_JUMP_FALSE1) {
- jumpFalseDist = TclGetInt1AtPtr(ifFalsePc + 1);
- jumpFalseDist += 3;
- TclStoreInt1AtPtr(jumpFalseDist, (ifFalsePc + 1));
- } else if (opCode == INST_JUMP_FALSE4) {
- jumpFalseDist = TclGetInt4AtPtr(ifFalsePc + 1);
- jumpFalseDist += 3;
- TclStoreInt4AtPtr(jumpFalseDist, (ifFalsePc + 1));
- } else {
- Tcl_Panic("TclCompileIfCmd: unexpected opcode \"%d\" updating ifFalse jump", (int) opCode);
- }
- }
- }
-
- /*
- * Free the jumpFixupArray array if malloc'ed storage was used.
- */
-
- done:
- envPtr->currStackDepth = savedStackDepth + 1;
- TclFreeJumpFixupArray(&jumpFalseFixupArray);
- TclFreeJumpFixupArray(&jumpEndFixupArray);
- return code;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileIncrCmd --
- *
- * Procedure called to compile the "incr" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "incr" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileIncrCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *varTokenPtr, *incrTokenPtr;
- int simpleVarName, isScalar, localIndex, haveImmValue, immValue;
- DefineLineInformation; /* TIP #280 */
-
- if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) {
- return TCL_ERROR;
- }
-
- varTokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_LARGE_INDEX,
- &localIndex, &simpleVarName, &isScalar, 1);
-
- /*
- * If an increment is given, push it, but see first if it's a small
- * integer.
- */
-
- haveImmValue = 0;
- immValue = 1;
- if (parsePtr->numWords == 3) {
- incrTokenPtr = TokenAfter(varTokenPtr);
- if (incrTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- const char *word = incrTokenPtr[1].start;
- int numBytes = incrTokenPtr[1].size;
- int code;
- Tcl_Obj *intObj = Tcl_NewStringObj(word, numBytes);
-
- Tcl_IncrRefCount(intObj);
- code = TclGetIntFromObj(NULL, intObj, &immValue);
- TclDecrRefCount(intObj);
- if ((code == TCL_OK) && (-127 <= immValue) && (immValue <= 127)) {
- haveImmValue = 1;
- }
- if (!haveImmValue) {
- PushLiteral(envPtr, word, numBytes);
- }
- } else {
- SetLineInformation(2);
- CompileTokens(envPtr, incrTokenPtr, interp);
- }
- } else { /* No incr amount given so use 1. */
- haveImmValue = 1;
- }
-
- /*
- * Emit the instruction to increment the variable.
- */
-
- if (!simpleVarName) {
- if (haveImmValue) {
- TclEmitInstInt1( INST_INCR_STK_IMM, immValue, envPtr);
- } else {
- TclEmitOpcode( INST_INCR_STK, envPtr);
- }
- } else if (isScalar) { /* Simple scalar variable. */
- if (localIndex >= 0) {
- if (haveImmValue) {
- TclEmitInstInt1(INST_INCR_SCALAR1_IMM, localIndex, envPtr);
- TclEmitInt1(immValue, envPtr);
- } else {
- TclEmitInstInt1(INST_INCR_SCALAR1, localIndex, envPtr);
- }
- } else {
- if (haveImmValue) {
- TclEmitInstInt1(INST_INCR_SCALAR_STK_IMM, immValue, envPtr);
- } else {
- TclEmitOpcode( INST_INCR_SCALAR_STK, envPtr);
- }
- }
- } else { /* Simple array variable. */
- if (localIndex >= 0) {
- if (haveImmValue) {
- TclEmitInstInt1(INST_INCR_ARRAY1_IMM, localIndex, envPtr);
- TclEmitInt1(immValue, envPtr);
- } else {
- TclEmitInstInt1(INST_INCR_ARRAY1, localIndex, envPtr);
- }
- } else {
- if (haveImmValue) {
- TclEmitInstInt1(INST_INCR_ARRAY_STK_IMM, immValue, envPtr);
- } else {
- TclEmitOpcode( INST_INCR_ARRAY_STK, envPtr);
- }
- }
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileInfo*Cmd --
- *
- * Procedures called to compile "info" subcommands.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "info" subcommand at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileInfoCommandsCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr)
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr;
- Tcl_Obj *objPtr;
- char *bytes;
-
- /*
- * We require one compile-time known argument for the case we can compile.
- */
-
- if (parsePtr->numWords == 1) {
- return TclCompileBasic0ArgCmd(interp, parsePtr, cmdPtr, envPtr);
- } else if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- objPtr = Tcl_NewObj();
- Tcl_IncrRefCount(objPtr);
- if (!TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
- goto notCompilable;
- }
- bytes = Tcl_GetString(objPtr);
-
- /*
- * We require that the argument start with "::" and not have any of "*\[?"
- * in it. (Theoretically, we should look in only the final component, but
- * the difference is so slight given current naming practices.)
- */
-
- if (bytes[0] != ':' || bytes[1] != ':' || !TclMatchIsTrivial(bytes)) {
- goto notCompilable;
- }
- Tcl_DecrRefCount(objPtr);
-
- /*
- * Confirmed as a literal that will not frighten the horses. Compile. Note
- * that the result needs to be list-ified.
- */
-
- CompileWord(envPtr, tokenPtr, interp, 1);
- TclEmitOpcode( INST_RESOLVE_COMMAND, envPtr);
- TclEmitOpcode( INST_DUP, envPtr);
- TclEmitOpcode( INST_STR_LEN, envPtr);
- TclEmitInstInt1( INST_JUMP_FALSE1, 7, envPtr);
- TclEmitInstInt4( INST_LIST, 1, envPtr);
- return TCL_OK;
-
- notCompilable:
- Tcl_DecrRefCount(objPtr);
- return TclCompileBasic1ArgCmd(interp, parsePtr, cmdPtr, envPtr);
-}
-
-int
-TclCompileInfoCoroutineCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- /*
- * Only compile [info coroutine] without arguments.
- */
-
- if (parsePtr->numWords != 1) {
- return TCL_ERROR;
- }
-
- /*
- * Not much to do; we compile to a single instruction...
- */
-
- TclEmitOpcode( INST_COROUTINE_NAME, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileInfoExistsCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr;
- int isScalar, simpleVarName, localIndex;
- DefineLineInformation; /* TIP #280 */
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
-
- /*
- * Decide if we can use a frame slot for the var/array name or if we need
- * to emit code to compute and push the name at runtime. We use a frame
- * slot (entry in the array of local vars) if we are compiling a procedure
- * body and if the name is simple text that does not include namespace
- * qualifiers.
- */
-
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- PushVarNameWord(interp, tokenPtr, envPtr, 0, &localIndex,
- &simpleVarName, &isScalar, 1);
-
- /*
- * Emit instruction to check the variable for existence.
- */
-
- if (!simpleVarName) {
- TclEmitOpcode( INST_EXIST_STK, envPtr);
- } else if (isScalar) {
- if (localIndex < 0) {
- TclEmitOpcode( INST_EXIST_STK, envPtr);
- } else {
- TclEmitInstInt4( INST_EXIST_SCALAR, localIndex, envPtr);
- }
- } else {
- if (localIndex < 0) {
- TclEmitOpcode( INST_EXIST_ARRAY_STK, envPtr);
- } else {
- TclEmitInstInt4( INST_EXIST_ARRAY, localIndex, envPtr);
- }
- }
-
- return TCL_OK;
-}
-
-int
-TclCompileInfoLevelCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- /*
- * Only compile [info level] without arguments or with a single argument.
- */
-
- if (parsePtr->numWords == 1) {
- /*
- * Not much to do; we compile to a single instruction...
- */
-
- TclEmitOpcode( INST_INFO_LEVEL_NUM, envPtr);
- } else if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- } else {
- DefineLineInformation; /* TIP #280 */
-
- /*
- * Compile the argument, then add the instruction to convert it into a
- * list of arguments.
- */
-
- SetLineInformation(1);
- CompileTokens(envPtr, TokenAfter(parsePtr->tokenPtr), interp);
- TclEmitOpcode( INST_INFO_LEVEL_ARGS, envPtr);
- }
- return TCL_OK;
-}
-
-int
-TclCompileInfoObjectClassCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr)
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
- CompileWord(envPtr, tokenPtr, interp, 1);
- TclEmitOpcode( INST_TCLOO_CLASS, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileInfoObjectIsACmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr)
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- /*
- * We only handle [info object isa object <somevalue>]. The first three
- * words are compressed to a single token by the ensemble compilation
- * engine.
- */
-
- if (parsePtr->numWords != 3) {
- return TCL_ERROR;
- }
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size < 1
- || strncmp(tokenPtr[1].start, "object", tokenPtr[1].size)) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(tokenPtr);
-
- /*
- * Issue the code.
- */
-
- CompileWord(envPtr, tokenPtr, interp, 2);
- TclEmitOpcode( INST_TCLOO_IS_OBJECT, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileInfoObjectNamespaceCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr)
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
- CompileWord(envPtr, tokenPtr, interp, 1);
- TclEmitOpcode( INST_TCLOO_NS, envPtr);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLappendCmd --
- *
- * Procedure called to compile the "lappend" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "lappend" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLappendCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *varTokenPtr;
- int simpleVarName, isScalar, localIndex, numWords;
- DefineLineInformation; /* TIP #280 */
-
- /*
- * If we're not in a procedure, don't compile.
- */
-
- if (envPtr->procPtr == NULL) {
- return TCL_ERROR;
- }
-
- numWords = parsePtr->numWords;
- if (numWords == 1) {
- return TCL_ERROR;
- }
- if (numWords != 3) {
- /*
- * LAPPEND instructions currently only handle one value appends.
- */
-
- return TCL_ERROR;
- }
-
- /*
- * Decide if we can use a frame slot for the var/array name or if we
- * need to emit code to compute and push the name at runtime. We use a
- * frame slot (entry in the array of local vars) if we are compiling a
- * procedure body and if the name is simple text that does not include
- * namespace qualifiers.
- */
-
- varTokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- PushVarNameWord(interp, varTokenPtr, envPtr, 0,
- &localIndex, &simpleVarName, &isScalar, 1);
-
- /*
- * If we are doing an assignment, push the new value. In the no values
- * case, create an empty object.
- */
-
- if (numWords > 2) {
- Tcl_Token *valueTokenPtr = TokenAfter(varTokenPtr);
-
- CompileWord(envPtr, valueTokenPtr, interp, 2);
- }
-
- /*
- * Emit instructions to set/get the variable.
- */
-
- /*
- * The *_STK opcodes should be refactored to make better use of existing
- * LOAD/STORE instructions.
- */
-
- if (!simpleVarName) {
- TclEmitOpcode( INST_LAPPEND_STK, envPtr);
- } else if (isScalar) {
- if (localIndex < 0) {
- TclEmitOpcode( INST_LAPPEND_STK, envPtr);
- } else {
- Emit14Inst( INST_LAPPEND_SCALAR, localIndex, envPtr);
- }
- } else {
- if (localIndex < 0) {
- TclEmitOpcode( INST_LAPPEND_ARRAY_STK, envPtr);
- } else {
- Emit14Inst( INST_LAPPEND_ARRAY, localIndex, envPtr);
- }
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLassignCmd --
- *
- * Procedure called to compile the "lassign" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "lassign" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLassignCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr;
- int simpleVarName, isScalar, localIndex, numWords, idx;
- DefineLineInformation; /* TIP #280 */
-
- numWords = parsePtr->numWords;
-
- /*
- * Check for command syntax error, but we'll punt that to runtime.
- */
-
- if (numWords < 3) {
- return TCL_ERROR;
- }
-
- /*
- * Generate code to push list being taken apart by [lassign].
- */
-
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- CompileWord(envPtr, tokenPtr, interp, 1);
-
- /*
- * Generate code to assign values from the list to variables.
- */
-
- for (idx=0 ; idx<numWords-2 ; idx++) {
- tokenPtr = TokenAfter(tokenPtr);
-
- /*
- * Generate the next variable name.
- */
-
- PushVarNameWord(interp, tokenPtr, envPtr, 0, &localIndex,
- &simpleVarName, &isScalar, idx+2);
-
- /*
- * Emit instructions to get the idx'th item out of the list value on
- * the stack and assign it to the variable.
- */
-
- if (!simpleVarName) {
- TclEmitInstInt4( INST_OVER, 1, envPtr);
- TclEmitInstInt4( INST_LIST_INDEX_IMM, idx, envPtr);
- TclEmitOpcode( INST_STORE_STK, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- } else if (isScalar) {
- if (localIndex >= 0) {
- TclEmitOpcode( INST_DUP, envPtr);
- TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
- Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- } else {
- TclEmitInstInt4(INST_OVER, 1, envPtr);
- TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
- TclEmitOpcode( INST_STORE_SCALAR_STK, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- }
- } else {
- if (localIndex >= 0) {
- TclEmitInstInt4(INST_OVER, 1, envPtr);
- TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
- Emit14Inst( INST_STORE_ARRAY, localIndex, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- } else {
- TclEmitInstInt4(INST_OVER, 2, envPtr);
- TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
- TclEmitOpcode( INST_STORE_ARRAY_STK, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- }
- }
- }
-
- /*
- * Generate code to leave the rest of the list on the stack.
- */
-
- TclEmitInstInt4( INST_LIST_RANGE_IMM, idx, envPtr);
- TclEmitInt4( -2 /* == "end" */, envPtr);
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLindexCmd --
- *
- * Procedure called to compile the "lindex" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "lindex" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLindexCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *idxTokenPtr, *valTokenPtr;
- int i, numWords = parsePtr->numWords;
- DefineLineInformation; /* TIP #280 */
-
- /*
- * Quit if too few args.
- */
-
- if (numWords <= 1) {
- return TCL_ERROR;
- }
-
- valTokenPtr = TokenAfter(parsePtr->tokenPtr);
- if (numWords != 3) {
- goto emitComplexLindex;
- }
-
- idxTokenPtr = TokenAfter(valTokenPtr);
- if (idxTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- Tcl_Obj *tmpObj;
- int idx, result;
-
- tmpObj = Tcl_NewStringObj(idxTokenPtr[1].start, idxTokenPtr[1].size);
- result = TclGetIntFromObj(NULL, tmpObj, &idx);
- if (result == TCL_OK) {
- if (idx < 0) {
- result = TCL_ERROR;
- }
- } else {
- result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx);
- if (result == TCL_OK && idx > -2) {
- result = TCL_ERROR;
- }
- }
- TclDecrRefCount(tmpObj);
-
- if (result == TCL_OK) {
- /*
- * All checks have been completed, and we have exactly one of
- * these constructs:
- * lindex <arbitraryValue> <posInt>
- * lindex <arbitraryValue> end-<posInt>
- * This is best compiled as a push of the arbitrary value followed
- * by an "immediate lindex" which is the most efficient variety.
- */
-
- CompileWord(envPtr, valTokenPtr, interp, 1);
- TclEmitInstInt4( INST_LIST_INDEX_IMM, idx, envPtr);
- return TCL_OK;
- }
-
- /*
- * If the conversion failed or the value was negative, we just keep on
- * going with the more complex compilation.
- */
- }
-
- /*
- * Push the operands onto the stack.
- */
-
- emitComplexLindex:
- for (i=1 ; i<numWords ; i++) {
- CompileWord(envPtr, valTokenPtr, interp, i);
- valTokenPtr = TokenAfter(valTokenPtr);
- }
-
- /*
- * Emit INST_LIST_INDEX if objc==3, or INST_LIST_INDEX_MULTI if there are
- * multiple index args.
- */
-
- if (numWords == 3) {
- TclEmitOpcode( INST_LIST_INDEX, envPtr);
- } else {
- TclEmitInstInt4( INST_LIST_INDEX_MULTI, numWords-1, envPtr);
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileListCmd --
- *
- * Procedure called to compile the "list" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "list" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileListCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *valueTokenPtr;
- int i, numWords;
-
- /*
- * If we're not in a procedure, don't compile.
- */
-
- if (envPtr->procPtr == NULL) {
- return TCL_ERROR;
- }
-
- if (parsePtr->numWords == 1) {
- /*
- * [list] without arguments just pushes an empty object.
- */
-
- PushLiteral(envPtr, "", 0);
- } else {
- /*
- * Push the all values onto the stack.
- */
-
- numWords = parsePtr->numWords;
- valueTokenPtr = TokenAfter(parsePtr->tokenPtr);
- for (i = 1; i < numWords; i++) {
- CompileWord(envPtr, valueTokenPtr, interp, i);
- valueTokenPtr = TokenAfter(valueTokenPtr);
- }
- TclEmitInstInt4( INST_LIST, numWords - 1, envPtr);
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLlengthCmd --
- *
- * Procedure called to compile the "llength" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "llength" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLlengthCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *varTokenPtr;
- DefineLineInformation; /* TIP #280 */
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
- varTokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- CompileWord(envPtr, varTokenPtr, interp, 1);
- TclEmitOpcode( INST_LIST_LENGTH, envPtr);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLrangeCmd --
- *
- * How to compile the "lrange" command. We only bother because we needed
- * the opcode anyway for "lassign".
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLrangeCmd(
- Tcl_Interp *interp, /* Tcl interpreter for context. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the
- * command. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds the resulting instructions. */
-{
- Tcl_Token *tokenPtr, *listTokenPtr;
- DefineLineInformation; /* TIP #280 */
- Tcl_Obj *tmpObj;
- int idx1, idx2, result;
-
- if (parsePtr->numWords != 4) {
- return TCL_ERROR;
- }
- listTokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- /*
- * Parse the first index. Will only compile if it is constant and not an
- * _integer_ less than zero (since we reserve negative indices here for
- * end-relative indexing).
- */
-
- tokenPtr = TokenAfter(listTokenPtr);
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
- result = TclGetIntFromObj(NULL, tmpObj, &idx1);
- if (result == TCL_OK) {
- if (idx1 < 0) {
- result = TCL_ERROR;
- }
- } else {
- result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx1);
- if (result == TCL_OK && idx1 > -2) {
- result = TCL_ERROR;
- }
- }
- TclDecrRefCount(tmpObj);
- if (result != TCL_OK) {
- return TCL_ERROR;
- }
-
- /*
- * Parse the second index. Will only compile if it is constant and not an
- * _integer_ less than zero (since we reserve negative indices here for
- * end-relative indexing).
- */
-
- tokenPtr = TokenAfter(tokenPtr);
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
- result = TclGetIntFromObj(NULL, tmpObj, &idx2);
- if (result == TCL_OK) {
- if (idx2 < 0) {
- result = TCL_ERROR;
- }
- } else {
- result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx2);
- if (result == TCL_OK && idx2 > -2) {
- result = TCL_ERROR;
- }
- }
- TclDecrRefCount(tmpObj);
- if (result != TCL_OK) {
- return TCL_ERROR;
- }
-
- /*
- * Issue instructions. It's not safe to skip doing the LIST_RANGE, as
- * we've not proved that the 'list' argument is really a list. Not that it
- * is worth trying to do that given current knowledge.
- */
-
- CompileWord(envPtr, listTokenPtr, interp, 1);
- TclEmitInstInt4( INST_LIST_RANGE_IMM, idx1, envPtr);
- TclEmitInt4( idx2, envPtr);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLreplaceCmd --
- *
- * How to compile the "lreplace" command. We only bother with the case
- * where there are no elements to insert and where both the 'first' and
- * 'last' arguments are constant and one can be deterined to be at the
- * end of the list. (This is the case that could also be written with
- * "lrange".)
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLreplaceCmd(
- Tcl_Interp *interp, /* Tcl interpreter for context. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the
- * command. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds the resulting instructions. */
-{
- Tcl_Token *tokenPtr, *listTokenPtr;
- DefineLineInformation; /* TIP #280 */
- Tcl_Obj *tmpObj;
- int idx1, idx2, result, guaranteedDropAll = 0;
-
- if (parsePtr->numWords != 4) {
- return TCL_ERROR;
- }
- listTokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- /*
- * Parse the first index. Will only compile if it is constant and not an
- * _integer_ less than zero (since we reserve negative indices here for
- * end-relative indexing).
- */
-
- tokenPtr = TokenAfter(listTokenPtr);
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
- result = TclGetIntFromObj(NULL, tmpObj, &idx1);
- if (result == TCL_OK) {
- if (idx1 < 0) {
- result = TCL_ERROR;
- }
- } else {
- result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx1);
- if (result == TCL_OK && idx1 > -2) {
- result = TCL_ERROR;
- }
- }
- TclDecrRefCount(tmpObj);
- if (result != TCL_OK) {
- return TCL_ERROR;
- }
-
- /*
- * Parse the second index. Will only compile if it is constant and not an
- * _integer_ less than zero (since we reserve negative indices here for
- * end-relative indexing).
- */
-
- tokenPtr = TokenAfter(tokenPtr);
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
- result = TclGetIntFromObj(NULL, tmpObj, &idx2);
- if (result == TCL_OK) {
- if (idx2 < 0) {
- result = TCL_ERROR;
- }
- } else {
- result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx2);
- if (result == TCL_OK && idx2 > -2) {
- result = TCL_ERROR;
- }
- }
- TclDecrRefCount(tmpObj);
- if (result != TCL_OK) {
- return TCL_ERROR;
- }
-
- /*
- * Sanity check: can only issue when we're removing a range at one or
- * other end of the list. If we're at one end or the other, convert the
- * indices into the equivalent for an [lrange].
- */
-
- if (idx1 == 0) {
- if (idx2 == -2) {
- guaranteedDropAll = 1;
- }
- idx1 = idx2 + 1;
- idx2 = -2;
- } else if (idx2 == -2) {
- idx2 = idx1 - 1;
- idx1 = 0;
- } else {
- return TCL_ERROR;
- }
-
- /*
- * Issue instructions. It's not safe to skip doing the LIST_RANGE, as
- * we've not proved that the 'list' argument is really a list. Not that it
- * is worth trying to do that given current knowledge.
- */
-
- CompileWord(envPtr, listTokenPtr, interp, 1);
- if (guaranteedDropAll) {
- TclEmitOpcode( INST_LIST_LENGTH, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- PushLiteral(envPtr, "", 0);
- } else {
- TclEmitInstInt4( INST_LIST_RANGE_IMM, idx1, envPtr);
- TclEmitInt4( idx2, envPtr);
- }
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLsetCmd --
- *
- * Procedure called to compile the "lset" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "lset" command at
- * runtime.
- *
- * The general template for execution of the "lset" command is:
- * (1) Instructions to push the variable name, unless the variable is
- * local to the stack frame.
- * (2) If the variable is an array element, instructions to push the
- * array element name.
- * (3) Instructions to push each of zero or more "index" arguments to the
- * stack, followed with the "newValue" element.
- * (4) Instructions to duplicate the variable name and/or array element
- * name onto the top of the stack, if either was pushed at steps (1)
- * and (2).
- * (5) The appropriate INST_LOAD_* instruction to place the original
- * value of the list variable at top of stack.
- * (6) At this point, the stack contains:
- * varName? arrayElementName? index1 index2 ... newValue oldList
- * The compiler emits one of INST_LSET_FLAT or INST_LSET_LIST
- * according as whether there is exactly one index element (LIST) or
- * either zero or else two or more (FLAT). This instruction removes
- * everything from the stack except for the two names and pushes the
- * new value of the variable.
- * (7) Finally, INST_STORE_* stores the new value in the variable and
- * cleans up the stack.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLsetCmd(
- Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the
- * command. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds the resulting instructions. */
-{
- int tempDepth; /* Depth used for emitting one part of the
- * code burst. */
- Tcl_Token *varTokenPtr; /* Pointer to the Tcl_Token representing the
- * parse of the variable name. */
- int localIndex; /* Index of var in local var table. */
- int simpleVarName; /* Flag == 1 if var name is simple. */
- int isScalar; /* Flag == 1 if scalar, 0 if array. */
- int i;
- DefineLineInformation; /* TIP #280 */
-
- /*
- * Check argument count.
- */
-
- if (parsePtr->numWords < 3) {
- /*
- * Fail at run time, not in compilation.
- */
-
- return TCL_ERROR;
- }
-
- /*
- * Decide if we can use a frame slot for the var/array name or if we need
- * to emit code to compute and push the name at runtime. We use a frame
- * slot (entry in the array of local vars) if we are compiling a procedure
- * body and if the name is simple text that does not include namespace
- * qualifiers.
- */
-
- varTokenPtr = TokenAfter(parsePtr->tokenPtr);
- PushVarNameWord(interp, varTokenPtr, envPtr, 0,
- &localIndex, &simpleVarName, &isScalar, 1);
-
- /*
- * Push the "index" args and the new element value.
- */
-
- for (i=2 ; i<parsePtr->numWords ; ++i) {
- varTokenPtr = TokenAfter(varTokenPtr);
- CompileWord(envPtr, varTokenPtr, interp, i);
- }
-
- /*
- * Duplicate the variable name if it's been pushed.
- */
-
- if (!simpleVarName || localIndex < 0) {
- if (!simpleVarName || isScalar) {
- tempDepth = parsePtr->numWords - 2;
- } else {
- tempDepth = parsePtr->numWords - 1;
- }
- TclEmitInstInt4( INST_OVER, tempDepth, envPtr);
- }
-
- /*
- * Duplicate an array index if one's been pushed.
- */
-
- if (simpleVarName && !isScalar) {
- if (localIndex < 0) {
- tempDepth = parsePtr->numWords - 1;
- } else {
- tempDepth = parsePtr->numWords - 2;
- }
- TclEmitInstInt4( INST_OVER, tempDepth, envPtr);
- }
-
- /*
- * Emit code to load the variable's value.
- */
-
- if (!simpleVarName) {
- TclEmitOpcode( INST_LOAD_STK, envPtr);
- } else if (isScalar) {
- if (localIndex < 0) {
- TclEmitOpcode( INST_LOAD_SCALAR_STK, envPtr);
- } else {
- Emit14Inst( INST_LOAD_SCALAR, localIndex, envPtr);
- }
- } else {
- if (localIndex < 0) {
- TclEmitOpcode( INST_LOAD_ARRAY_STK, envPtr);
- } else {
- Emit14Inst( INST_LOAD_ARRAY, localIndex, envPtr);
- }
- }
-
- /*
- * Emit the correct variety of 'lset' instruction.
- */
-
- if (parsePtr->numWords == 4) {
- TclEmitOpcode( INST_LSET_LIST, envPtr);
- } else {
- TclEmitInstInt4( INST_LSET_FLAT, parsePtr->numWords-1, envPtr);
- }
-
- /*
- * Emit code to put the value back in the variable.
- */
-
- if (!simpleVarName) {
- TclEmitOpcode( INST_STORE_STK, envPtr);
- } else if (isScalar) {
- if (localIndex < 0) {
- TclEmitOpcode( INST_STORE_SCALAR_STK, envPtr);
- } else {
- Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
- }
- } else {
- if (localIndex < 0) {
- TclEmitOpcode( INST_STORE_ARRAY_STK, envPtr);
- } else {
- Emit14Inst( INST_STORE_ARRAY, localIndex, envPtr);
- }
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileLmapCmd --
- *
- * Procedure called to compile the "lmap" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "lmap" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileLmapCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- return CompileEachloopCmd(interp, parsePtr, cmdPtr, envPtr,
- TCL_EACH_COLLECT);
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileNamespace*Cmd --
- *
- * Procedures called to compile the "namespace" command; currently, only
- * the subcommands "namespace current" and "namespace upvar" are compiled
- * to bytecodes, and the latter only inside a procedure(-like) context.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "namespace upvar"
- * command at runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileNamespaceCurrentCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- /*
- * Only compile [namespace current] without arguments.
- */
-
- if (parsePtr->numWords != 1) {
- return TCL_ERROR;
- }
-
- /*
- * Not much to do; we compile to a single instruction...
- */
-
- TclEmitOpcode( INST_NS_CURRENT, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileNamespaceCodeCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr;
- DefineLineInformation; /* TIP #280 */
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
-
- /*
- * The specification of [namespace code] is rather shocking, in that it is
- * supposed to check if the argument is itself the result of [namespace
- * code] and not apply itself in that case. Which is excessively cautious,
- * but what the test suite checks for.
- */
-
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || (tokenPtr[1].size > 20
- && strncmp(tokenPtr[1].start, "::namespace inscope ", 20) == 0)) {
- /*
- * Technically, we could just pass a literal '::namespace inscope '
- * term through, but that's something which really shouldn't be
- * occurring as something that the user writes so we'll just punt it.
- */
-
- return TCL_ERROR;
- }
-
- /*
- * Now we can compile using the same strategy as [namespace code]'s normal
- * implementation does internally. Note that we can't bind the namespace
- * name directly here, because TclOO plays complex games with namespaces;
- * the value needs to be determined at runtime for safety.
- */
-
- PushLiteral(envPtr, "::namespace", 11);
- PushLiteral(envPtr, "inscope", 7);
- TclEmitOpcode( INST_NS_CURRENT, envPtr);
- CompileWord(envPtr, tokenPtr, interp, 1);
- TclEmitInstInt4( INST_LIST, 4, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileNamespaceQualifiersCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
- DefineLineInformation; /* TIP #280 */
- int off;
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
-
- CompileWord(envPtr, tokenPtr, interp, 1);
- PushLiteral(envPtr, "0", 1);
- PushLiteral(envPtr, "::", 2);
- TclEmitInstInt4( INST_OVER, 2, envPtr);
- TclEmitOpcode( INST_STR_FIND_LAST, envPtr);
- off = CurrentOffset(envPtr);
- PushLiteral(envPtr, "1", 1);
- TclEmitOpcode( INST_SUB, envPtr);
- TclEmitInstInt4( INST_OVER, 2, envPtr);
- TclEmitInstInt4( INST_OVER, 1, envPtr);
- TclEmitOpcode( INST_STR_INDEX, envPtr);
- PushLiteral(envPtr, ":", 1);
- TclEmitOpcode( INST_STR_EQ, envPtr);
- off = off - CurrentOffset(envPtr);
- TclEmitInstInt1( INST_JUMP_TRUE1, off, envPtr);
- TclEmitOpcode( INST_STR_RANGE, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileNamespaceTailCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
- DefineLineInformation; /* TIP #280 */
- JumpFixup jumpFixup;
-
- if (parsePtr->numWords != 2) {
- return TCL_ERROR;
- }
-
- /*
- * Take care; only add 2 to found index if the string was actually found.
- */
-
- CompileWord(envPtr, tokenPtr, interp, 1);
- PushLiteral(envPtr, "::", 2);
- TclEmitInstInt4( INST_OVER, 1, envPtr);
- TclEmitOpcode( INST_STR_FIND_LAST, envPtr);
- TclEmitOpcode( INST_DUP, envPtr);
- PushLiteral(envPtr, "0", 1);
- TclEmitOpcode( INST_GE, envPtr);
- TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpFixup);
- PushLiteral(envPtr, "2", 1);
- TclEmitOpcode( INST_ADD, envPtr);
- TclFixupForwardJumpToHere(envPtr, &jumpFixup, 127);
- PushLiteral(envPtr, "end", 3);
- TclEmitOpcode( INST_STR_RANGE, envPtr);
- return TCL_OK;
-}
-
-int
-TclCompileNamespaceUpvarCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr, *otherTokenPtr, *localTokenPtr;
- int simpleVarName, isScalar, localIndex, numWords, i;
- DefineLineInformation; /* TIP #280 */
-
- if (envPtr->procPtr == NULL) {
- return TCL_ERROR;
- }
-
- /*
- * Only compile [namespace upvar ...]: needs an even number of args, >=4
- */
-
- numWords = parsePtr->numWords;
- if ((numWords % 2) || (numWords < 4)) {
- return TCL_ERROR;
- }
-
- /*
- * Push the namespace
- */
-
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- CompileWord(envPtr, tokenPtr, interp, 1);
-
- /*
- * Loop over the (otherVar, thisVar) pairs. If any of the thisVar is not a
- * local variable, return an error so that the non-compiled command will
- * be called at runtime.
- */
-
- localTokenPtr = tokenPtr;
- for (i=3; i<=numWords; i+=2) {
- otherTokenPtr = TokenAfter(localTokenPtr);
- localTokenPtr = TokenAfter(otherTokenPtr);
-
- CompileWord(envPtr, otherTokenPtr, interp, 1);
- PushVarNameWord(interp, localTokenPtr, envPtr, 0,
- &localIndex, &simpleVarName, &isScalar, 1);
-
- if ((localIndex < 0) || !isScalar) {
- return TCL_ERROR;
- }
- TclEmitInstInt4( INST_NSUPVAR, localIndex, envPtr);
- }
-
- /*
- * Pop the namespace, and set the result to empty
- */
-
- TclEmitOpcode( INST_POP, envPtr);
- PushLiteral(envPtr, "", 0);
- return TCL_OK;
-}
-
-int
-TclCompileNamespaceWhichCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr, *opt;
- int idx;
-
- if (parsePtr->numWords < 2 || parsePtr->numWords > 3) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- idx = 1;
-
- /*
- * If there's an option, check that it's "-command". We don't handle
- * "-variable" (currently) and anything else is an error.
- */
-
- if (parsePtr->numWords == 3) {
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- return TCL_ERROR;
- }
- opt = tokenPtr + 1;
- if (opt->size < 2 || opt->size > 8
- || strncmp(opt->start, "-command", opt->size) != 0) {
- return TCL_ERROR;
- }
- tokenPtr = TokenAfter(tokenPtr);
- idx++;
- }
-
- /*
- * Issue the bytecode.
- */
-
- CompileWord(envPtr, tokenPtr, interp, idx);
- TclEmitOpcode( INST_RESOLVE_COMMAND, envPtr);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileRegexpCmd --
- *
- * Procedure called to compile the "regexp" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "regexp" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileRegexpCmd(
- Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the
- * command. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds the resulting instructions. */
-{
- Tcl_Token *varTokenPtr; /* Pointer to the Tcl_Token representing the
- * parse of the RE or string. */
- int i, len, nocase, exact, sawLast, simple;
- const char *str;
- DefineLineInformation; /* TIP #280 */
-
- /*
- * We are only interested in compiling simple regexp cases. Currently
- * supported compile cases are:
- * regexp ?-nocase? ?--? staticString $var
- * regexp ?-nocase? ?--? {^staticString$} $var
- */
-
- if (parsePtr->numWords < 3) {
- return TCL_ERROR;
- }
-
- simple = 0;
- nocase = 0;
- sawLast = 0;
- varTokenPtr = parsePtr->tokenPtr;
-
- /*
- * We only look for -nocase and -- as options. Everything else gets pushed
- * to runtime execution. This is different than regexp's runtime option
- * handling, but satisfies our stricter needs.
- */
-
- for (i = 1; i < parsePtr->numWords - 2; i++) {
- varTokenPtr = TokenAfter(varTokenPtr);
- if (varTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
- /*
- * Not a simple string, so punt to runtime.
- */
-
- return TCL_ERROR;
- }
- str = varTokenPtr[1].start;
- len = varTokenPtr[1].size;
- if ((len == 2) && (str[0] == '-') && (str[1] == '-')) {
- sawLast++;
- i++;
- break;
- } else if ((len > 1) && (strncmp(str,"-nocase",(unsigned)len) == 0)) {
- nocase = 1;
- } else {
- /*
- * Not an option we recognize.
- */
-
- return TCL_ERROR;
- }
- }
-
- if ((parsePtr->numWords - i) != 2) {
- /*
- * We don't support capturing to variables.
- */
-
- return TCL_ERROR;
- }
-
- /*
- * Get the regexp string. If it is not a simple string or can't be
- * converted to a glob pattern, push the word for the INST_REGEXP.
- * Keep changes here in sync with TclCompileSwitchCmd Switch_Regexp.
- */
-
- varTokenPtr = TokenAfter(varTokenPtr);
-
- if (varTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- Tcl_DString ds;
-
- str = varTokenPtr[1].start;
- len = varTokenPtr[1].size;
-
- /*
- * If it has a '-', it could be an incorrectly formed regexp command.
- */
-
- if ((*str == '-') && !sawLast) {
- return TCL_ERROR;
- }
-
- if (len == 0) {
- /*
- * The semantics of regexp are always match on re == "".
- */
-
- PushLiteral(envPtr, "1", 1);
- return TCL_OK;
- }
-
- /*
- * Attempt to convert pattern to glob. If successful, push the
- * converted pattern as a literal.
- */
-
- if (TclReToGlob(NULL, varTokenPtr[1].start, len, &ds, &exact)
- == TCL_OK) {
- simple = 1;
- PushLiteral(envPtr, Tcl_DStringValue(&ds),Tcl_DStringLength(&ds));
- Tcl_DStringFree(&ds);
- }
- }
-
- if (!simple) {
- CompileWord(envPtr, varTokenPtr, interp, parsePtr->numWords-2);
- }
-
- /*
- * Push the string arg.
- */
-
- varTokenPtr = TokenAfter(varTokenPtr);
- CompileWord(envPtr, varTokenPtr, interp, parsePtr->numWords-1);
-
- if (simple) {
- if (exact && !nocase) {
- TclEmitOpcode( INST_STR_EQ, envPtr);
- } else {
- TclEmitInstInt1( INST_STR_MATCH, nocase, envPtr);
- }
- } else {
- /*
- * Pass correct RE compile flags. We use only Int1 (8-bit), but
- * that handles all the flags we want to pass.
- * Don't use TCL_REG_NOSUB as we may have backrefs.
- */
-
- int cflags = TCL_REG_ADVANCED | (nocase ? TCL_REG_NOCASE : 0);
-
- TclEmitInstInt1( INST_REGEXP, cflags, envPtr);
- }
-
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileRegsubCmd --
- *
- * Procedure called to compile the "regsub" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "regsub" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileRegsubCmd(
- Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the
- * command. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds the resulting instructions. */
-{
- /*
- * We only compile the case with [regsub -all] where the pattern is both
- * known at compile time and simple (i.e., no RE metacharacters). That is,
- * the pattern must be translatable into a glob like "*foo*" with no other
- * glob metacharacters inside it; there must be some "foo" in there too.
- * The substitution string must also be known at compile time and free of
- * metacharacters ("\digit" and "&"). Finally, there must not be a
- * variable mentioned in the [regsub] to write the result back to (because
- * we can't get the count of substitutions that would be the result in
- * that case). The key is that these are the conditions under which a
- * [string map] could be used instead, in particular a [string map] of the
- * form we can compile to bytecode.
- *
- * In short, we look for:
- *
- * regsub -all [--] simpleRE string simpleReplacement
- *
- * The only optional part is the "--", and no other options are handled.
- */
-
- DefineLineInformation; /* TIP #280 */
- Tcl_Token *tokenPtr, *stringTokenPtr;
- Tcl_Obj *patternObj = NULL, *replacementObj = NULL;
- Tcl_DString pattern;
- const char *bytes;
- int len, exact, result = TCL_ERROR;
-
- if (parsePtr->numWords < 5 || parsePtr->numWords > 6) {
- return TCL_ERROR;
- }
-
- /*
- * Parse the "-all", which must be the first argument (other options not
- * supported, non-"-all" substitution we can't compile).
- */
-
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size != 4
- || strncmp(tokenPtr[1].start, "-all", 4)) {
- return TCL_ERROR;
- }
-
- /*
- * Get the pattern into patternObj, checking for "--" in the process.
- */
-
- Tcl_DStringInit(&pattern);
- tokenPtr = TokenAfter(tokenPtr);
- patternObj = Tcl_NewObj();
- if (!TclWordKnownAtCompileTime(tokenPtr, patternObj)) {
- goto done;
- }
- if (Tcl_GetString(patternObj)[0] == '-') {
- if (strcmp(Tcl_GetString(patternObj), "--") != 0
- || parsePtr->numWords == 5) {
- goto done;
- }
- tokenPtr = TokenAfter(tokenPtr);
- Tcl_DecrRefCount(patternObj);
- patternObj = Tcl_NewObj();
- if (!TclWordKnownAtCompileTime(tokenPtr, patternObj)) {
- goto done;
- }
- } else if (parsePtr->numWords == 6) {
- goto done;
- }
-
- /*
- * Identify the code which produces the string to apply the substitution
- * to (stringTokenPtr), and the replacement string (into replacementObj).
- */
-
- stringTokenPtr = TokenAfter(tokenPtr);
- tokenPtr = TokenAfter(stringTokenPtr);
- replacementObj = Tcl_NewObj();
- if (!TclWordKnownAtCompileTime(tokenPtr, replacementObj)) {
- goto done;
- }
-
- /*
- * Next, higher-level checks. Is the RE a very simple glob? Is the
- * replacement "simple"?
- */
-
- bytes = Tcl_GetStringFromObj(patternObj, &len);
- if (TclReToGlob(NULL, bytes, len, &pattern, &exact) != TCL_OK || exact) {
- goto done;
- }
- bytes = Tcl_DStringValue(&pattern);
- if (*bytes++ != '*') {
- goto done;
- }
- while (1) {
- switch (*bytes) {
- case '*':
- if (bytes[1] == '\0') {
- /*
- * OK, we've proved there are no metacharacters except for the
- * '*' at each end.
- */
-
- len = Tcl_DStringLength(&pattern) - 2;
- if (len > 0) {
- goto isSimpleGlob;
- }
-
- /*
- * The pattern is "**"! I believe that should be impossible,
- * but we definitely can't handle that at all.
- */
- }
- case '\0': case '?': case '[': case '\\':
- goto done;
- }
- bytes++;
- }
- isSimpleGlob:
- for (bytes = Tcl_GetString(replacementObj); *bytes; bytes++) {
- switch (*bytes) {
- case '\\': case '&':
- goto done;
- }
- }
-
- /*
- * Proved the simplicity constraints! Time to issue the code.
- */
-
- result = TCL_OK;
- bytes = Tcl_DStringValue(&pattern) + 1;
- PushLiteral(envPtr, bytes, len);
- bytes = Tcl_GetStringFromObj(replacementObj, &len);
- PushLiteral(envPtr, bytes, len);
- CompileWord(envPtr, stringTokenPtr, interp, parsePtr->numWords-2);
- TclEmitOpcode( INST_STR_MAP, envPtr);
-
- done:
- Tcl_DStringFree(&pattern);
- if (patternObj) {
- Tcl_DecrRefCount(patternObj);
- }
- if (replacementObj) {
- Tcl_DecrRefCount(replacementObj);
- }
- return result;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileReturnCmd --
- *
- * Procedure called to compile the "return" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "return" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileReturnCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- /*
- * General syntax: [return ?-option value ...? ?result?]
- * An even number of words means an explicit result argument is present.
- */
- int level, code, objc, size, status = TCL_OK;
- int numWords = parsePtr->numWords;
- int explicitResult = (0 == (numWords % 2));
- int numOptionWords = numWords - 1 - explicitResult;
- int savedStackDepth = envPtr->currStackDepth;
- Tcl_Obj *returnOpts, **objv;
- Tcl_Token *wordTokenPtr = TokenAfter(parsePtr->tokenPtr);
- DefineLineInformation; /* TIP #280 */
-
- /*
- * Check for special case which can always be compiled:
- * return -options <opts> <msg>
- * Unlike the normal [return] compilation, this version does everything at
- * runtime so it can handle arbitrary words and not just literals. Note
- * that if INST_RETURN_STK wasn't already needed for something else
- * ('finally' clause processing) this piece of code would not be present.
- */
-
- if ((numWords == 4) && (wordTokenPtr->type == TCL_TOKEN_SIMPLE_WORD)
- && (wordTokenPtr[1].size == 8)
- && (strncmp(wordTokenPtr[1].start, "-options", 8) == 0)) {
- Tcl_Token *optsTokenPtr = TokenAfter(wordTokenPtr);
- Tcl_Token *msgTokenPtr = TokenAfter(optsTokenPtr);
-
- CompileWord(envPtr, optsTokenPtr, interp, 2);
- CompileWord(envPtr, msgTokenPtr, interp, 3);
- TclEmitOpcode(INST_RETURN_STK, envPtr);
- envPtr->currStackDepth = savedStackDepth + 1;
- return TCL_OK;
- }
-
- /*
- * Allocate some working space.
- */
-
- objv = TclStackAlloc(interp, numOptionWords * sizeof(Tcl_Obj *));
-
- /*
- * Scan through the return options. If any are unknown at compile time,
- * there is no value in bytecompiling. Save the option values known in an
- * objv array for merging into a return options dictionary.
- */
-
- for (objc = 0; objc < numOptionWords; objc++) {
- objv[objc] = Tcl_NewObj();
- Tcl_IncrRefCount(objv[objc]);
- if (!TclWordKnownAtCompileTime(wordTokenPtr, objv[objc])) {
- objc++;
- status = TCL_ERROR;
- goto cleanup;
- }
- wordTokenPtr = TokenAfter(wordTokenPtr);
- }
- status = TclMergeReturnOptions(interp, objc, objv,
- &returnOpts, &code, &level);
- cleanup:
- while (--objc >= 0) {
- TclDecrRefCount(objv[objc]);
- }
- TclStackFree(interp, objv);
- if (TCL_ERROR == status) {
- /*
- * Something was bogus in the return options. Clear the error message,
- * and report back to the compiler that this must be interpreted at
- * runtime.
- */
-
- Tcl_ResetResult(interp);
- return TCL_ERROR;
- }
-
- /*
- * All options are known at compile time, so we're going to bytecompile.
- * Emit instructions to push the result on the stack.
- */
-
- if (explicitResult) {
- CompileWord(envPtr, wordTokenPtr, interp, numWords-1);
- } else {
- /*
- * No explict result argument, so default result is empty string.
- */
-
- PushLiteral(envPtr, "", 0);
- }
-
- /*
- * Check for optimization: When [return] is in a proc, and there's no
- * enclosing [catch], and there are no return options, then the INST_DONE
- * instruction is equivalent, and may be more efficient.
- */
-
- if (numOptionWords == 0 && envPtr->procPtr != NULL) {
- /*
- * We have default return options and we're in a proc ...
- */
-
- int index = envPtr->exceptArrayNext - 1;
- int enclosingCatch = 0;
-
- while (index >= 0) {
- ExceptionRange range = envPtr->exceptArrayPtr[index];
-
- if ((range.type == CATCH_EXCEPTION_RANGE)
- && (range.catchOffset == -1)) {
- enclosingCatch = 1;
- break;
- }
- index--;
- }
- if (!enclosingCatch) {
- /*
- * ... and there is no enclosing catch. Issue the maximally
- * efficient exit instruction.
- */
-
- Tcl_DecrRefCount(returnOpts);
- TclEmitOpcode(INST_DONE, envPtr);
- return TCL_OK;
- }
- }
-
- /* Optimize [return -level 0 $x]. */
- Tcl_DictObjSize(NULL, returnOpts, &size);
- if (size == 0 && level == 0 && code == TCL_OK) {
- Tcl_DecrRefCount(returnOpts);
- return TCL_OK;
- }
-
- /*
- * Could not use the optimization, so we push the return options dict, and
- * emit the INST_RETURN_IMM instruction with code and level as operands.
- */
-
- CompileReturnInternal(envPtr, INST_RETURN_IMM, code, level, returnOpts);
- return TCL_OK;
-}
-
-static void
-CompileReturnInternal(
- CompileEnv *envPtr,
- unsigned char op,
- int code,
- int level,
- Tcl_Obj *returnOpts)
-{
- TclEmitPush(TclAddLiteralObj(envPtr, returnOpts, NULL), envPtr);
- TclEmitInstInt4(op, code, envPtr);
- TclEmitInt4(level, envPtr);
-}
-
-void
-TclCompileSyntaxError(
- Tcl_Interp *interp,
- CompileEnv *envPtr)
-{
- Tcl_Obj *msg = Tcl_GetObjResult(interp);
- int numBytes;
- const char *bytes = TclGetStringFromObj(msg, &numBytes);
-
- TclErrorStackResetIf(interp, bytes, numBytes);
- TclEmitPush(TclRegisterNewLiteral(envPtr, bytes, numBytes), envPtr);
- CompileReturnInternal(envPtr, INST_SYNTAX, TCL_ERROR, 0,
- TclNoErrorStack(interp, Tcl_GetReturnOptions(interp, TCL_ERROR)));
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileUpvarCmd --
- *
- * Procedure called to compile the "upvar" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "upvar" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileUpvarCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *tokenPtr, *otherTokenPtr, *localTokenPtr;
- int simpleVarName, isScalar, localIndex, numWords, i;
- DefineLineInformation; /* TIP #280 */
- Tcl_Obj *objPtr = Tcl_NewObj();
-
- if (envPtr->procPtr == NULL) {
- Tcl_DecrRefCount(objPtr);
- return TCL_ERROR;
- }
-
- numWords = parsePtr->numWords;
- if (numWords < 3) {
- Tcl_DecrRefCount(objPtr);
- return TCL_ERROR;
- }
-
- /*
- * Push the frame index if it is known at compile time
- */
-
- tokenPtr = TokenAfter(parsePtr->tokenPtr);
- if (TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
- CallFrame *framePtr;
- const Tcl_ObjType *newTypePtr, *typePtr = objPtr->typePtr;
-
- /*
- * Attempt to convert to a level reference. Note that TclObjGetFrame
- * only changes the obj type when a conversion was successful.
- */
-
- TclObjGetFrame(interp, objPtr, &framePtr);
- newTypePtr = objPtr->typePtr;
- Tcl_DecrRefCount(objPtr);
-
- if (newTypePtr != typePtr) {
- if (numWords%2) {
- return TCL_ERROR;
- }
- CompileWord(envPtr, tokenPtr, interp, 1);
- otherTokenPtr = TokenAfter(tokenPtr);
- i = 4;
- } else {
- if (!(numWords%2)) {
- return TCL_ERROR;
- }
- PushLiteral(envPtr, "1", 1);
- otherTokenPtr = tokenPtr;
- i = 3;
- }
- } else {
- Tcl_DecrRefCount(objPtr);
- return TCL_ERROR;
- }
-
- /*
- * Loop over the (otherVar, thisVar) pairs. If any of the thisVar is not a
- * local variable, return an error so that the non-compiled command will
- * be called at runtime.
- */
-
- for (; i<=numWords; i+=2, otherTokenPtr = TokenAfter(localTokenPtr)) {
- localTokenPtr = TokenAfter(otherTokenPtr);
-
- CompileWord(envPtr, otherTokenPtr, interp, 1);
- PushVarNameWord(interp, localTokenPtr, envPtr, 0,
- &localIndex, &simpleVarName, &isScalar, 1);
-
- if ((localIndex < 0) || !isScalar) {
- return TCL_ERROR;
- }
- TclEmitInstInt4( INST_UPVAR, localIndex, envPtr);
- }
-
- /*
- * Pop the frame index, and set the result to empty
- */
-
- TclEmitOpcode( INST_POP, envPtr);
- PushLiteral(envPtr, "", 0);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclCompileVariableCmd --
- *
- * Procedure called to compile the "variable" command.
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "variable" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-int
-TclCompileVariableCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Token *varTokenPtr, *valueTokenPtr;
- int localIndex, numWords, i;
- DefineLineInformation; /* TIP #280 */
-
- numWords = parsePtr->numWords;
- if (numWords < 2) {
- return TCL_ERROR;
- }
-
- /*
- * Bail out if not compiling a proc body
- */
-
- if (envPtr->procPtr == NULL) {
- return TCL_ERROR;
- }
-
- /*
- * Loop over the (var, value) pairs.
- */
-
- valueTokenPtr = parsePtr->tokenPtr;
- for (i=1; i<numWords; i+=2) {
- varTokenPtr = TokenAfter(valueTokenPtr);
- valueTokenPtr = TokenAfter(varTokenPtr);
-
- localIndex = IndexTailVarIfKnown(interp, varTokenPtr, envPtr);
-
- if (localIndex < 0) {
- return TCL_ERROR;
- }
-
- CompileWord(envPtr, varTokenPtr, interp, i);
- TclEmitInstInt4( INST_VARIABLE, localIndex, envPtr);
-
- if (i+1 < numWords) {
- /*
- * A value has been given: set the variable, pop the value
- */
-
- CompileWord(envPtr, valueTokenPtr, interp, i+1);
- Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- }
- }
-
- /*
- * Set the result to empty
- */
-
- PushLiteral(envPtr, "", 0);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * IndexTailVarIfKnown --
- *
- * Procedure used in compiling [global] and [variable] commands. It
- * inspects the variable name described by varTokenPtr and, if the tail
- * is known at compile time, defines a corresponding local variable.
- *
- * Results:
- * Returns the variable's index in the table of compiled locals if the
- * tail is known at compile time, or -1 otherwise.
- *
- * Side effects:
- * None.
- *
- *----------------------------------------------------------------------
- */
-
-static int
-IndexTailVarIfKnown(
- Tcl_Interp *interp,
- Tcl_Token *varTokenPtr, /* Token representing the variable name */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- Tcl_Obj *tailPtr;
- const char *tailName, *p;
- int len, n = varTokenPtr->numComponents;
- Tcl_Token *lastTokenPtr;
- int full, localIndex;
-
- /*
- * Determine if the tail is (a) known at compile time, and (b) not an
- * array element. Should any of these fail, return an error so that the
- * non-compiled command will be called at runtime.
- *
- * In order for the tail to be known at compile time, the last token in
- * the word has to be constant and contain "::" if it is not the only one.
- */
-
- if (!EnvHasLVT(envPtr)) {
- return -1;
- }
-
- TclNewObj(tailPtr);
- if (TclWordKnownAtCompileTime(varTokenPtr, tailPtr)) {
- full = 1;
- lastTokenPtr = varTokenPtr;
- } else {
- full = 0;
- lastTokenPtr = varTokenPtr + n;
- if (!TclWordKnownAtCompileTime(lastTokenPtr, tailPtr)) {
- Tcl_DecrRefCount(tailPtr);
- return -1;
- }
- }
-
- tailName = TclGetStringFromObj(tailPtr, &len);
-
- if (len) {
- if (*(tailName+len-1) == ')') {
- /*
- * Possible array: bail out
- */
-
- Tcl_DecrRefCount(tailPtr);
- return -1;
- }
-
- /*
- * Get the tail: immediately after the last '::'
- */
-
- for (p = tailName + len -1; p > tailName; p--) {
- if ((*p == ':') && (*(p-1) == ':')) {
- p++;
- break;
- }
- }
- if (!full && (p == tailName)) {
- /*
- * No :: in the last component.
- */
-
- Tcl_DecrRefCount(tailPtr);
- return -1;
- }
- len -= p - tailName;
- tailName = p;
- }
-
- localIndex = TclFindCompiledLocal(tailName, len, 1, envPtr);
- Tcl_DecrRefCount(tailPtr);
- return localIndex;
-}
-
-int
-TclCompileObjectSelfCmd(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Parse *parsePtr, /* Points to a parse structure for the command
- * created by Tcl_ParseCommand. */
- Command *cmdPtr, /* Points to defintion of command being
- * compiled. */
- CompileEnv *envPtr) /* Holds resulting instructions. */
-{
- /*
- * We only handle [self] and [self object] (which is the same operation).
- * These are the only very common operations on [self] for which
- * bytecoding is at all reasonable.
- */
-
- if (parsePtr->numWords == 1) {
- goto compileSelfObject;
- } else if (parsePtr->numWords == 2) {
- Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr), *subcmd;
-
- if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size==0) {
- return TCL_ERROR;
- }
-
- subcmd = tokenPtr + 1;
- if (strncmp(subcmd->start, "object", subcmd->size) == 0) {
- goto compileSelfObject;
- } else if (strncmp(subcmd->start, "namespace", subcmd->size) == 0) {
- goto compileSelfNamespace;
- }
- }
-
- /*
- * Can't compile; handle with runtime call.
- */
-
- return TCL_ERROR;
-
- compileSelfObject:
-
- /*
- * This delegates the entire problem to a single opcode.
- */
-
- TclEmitOpcode( INST_TCLOO_SELF, envPtr);
- return TCL_OK;
-
- compileSelfNamespace:
-
- /*
- * This is formally only correct with TclOO methods as they are currently
- * implemented; it assumes that the current namespace is invariably when a
- * TclOO context is present is the object's namespace, and that's
- * technically only something that's a matter of current policy. But it
- * avoids creating another opcode, so that's all good!
- */
-
- TclEmitOpcode( INST_TCLOO_SELF, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- TclEmitOpcode( INST_NS_CURRENT, envPtr);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * PushVarName --
+ * TclPushVarName --
*
* Procedure used in the compiling where pushing a variable name is
* necessary (append, lappend, set).
@@ -6065,8 +3273,8 @@ TclCompileObjectSelfCmd(
*----------------------------------------------------------------------
*/
-static int
-PushVarName(
+int
+TclPushVarName(
Tcl_Interp *interp, /* Used for error reporting. */
Tcl_Token *varTokenPtr, /* Points to a variable token. */
CompileEnv *envPtr, /* Holds resulting instructions. */
@@ -6262,7 +3470,7 @@ PushVarName(
TclCompileTokens(interp, elemTokenPtr, elemTokenCount,
envPtr);
} else {
- PushLiteral(envPtr, "", 0);
+ PushStringLiteral(envPtr, "");
}
}
} else {
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
new file mode 100644
index 0000000..c6a01e7
--- /dev/null
+++ b/generic/tclCompCmdsGR.c
@@ -0,0 +1,2927 @@
+/*
+ * tclCompCmdsGR.c --
+ *
+ * This file contains compilation procedures that compile various Tcl
+ * commands (beginning with the letters 'g' through 'r') into a sequence
+ * of instructions ("bytecodes").
+ *
+ * Copyright (c) 1997-1998 Sun Microsystems, Inc.
+ * Copyright (c) 2001 by Kevin B. Kenny. All rights reserved.
+ * Copyright (c) 2002 ActiveState Corporation.
+ * Copyright (c) 2004-2013 by Donal K. Fellows.
+ *
+ * See the file "license.terms" for information on usage and redistribution of
+ * this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ */
+
+#include "tclInt.h"
+#include "tclCompile.h"
+#include <assert.h>
+
+/*
+ * Prototypes for procedures defined later in this file:
+ */
+
+static void CompileReturnInternal(CompileEnv *envPtr,
+ unsigned char op, int code, int level,
+ Tcl_Obj *returnOpts);
+static int IndexTailVarIfKnown(Tcl_Interp *interp,
+ Tcl_Token *varTokenPtr, CompileEnv *envPtr);
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileGlobalCmd --
+ *
+ * Procedure called to compile the "global" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "global" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileGlobalCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *varTokenPtr;
+ int localIndex, numWords, i;
+ DefineLineInformation; /* TIP #280 */
+
+ numWords = parsePtr->numWords;
+ if (numWords < 2) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * 'global' has no effect outside of proc bodies; handle that at runtime
+ */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Push the namespace
+ */
+
+ PushStringLiteral(envPtr, "::");
+
+ /*
+ * Loop over the variables.
+ */
+
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ for (i=2; i<=numWords; varTokenPtr = TokenAfter(varTokenPtr),i++) {
+ localIndex = IndexTailVarIfKnown(interp, varTokenPtr, envPtr);
+
+ if (localIndex < 0) {
+ return TCL_ERROR;
+ }
+
+ CompileWord(envPtr, varTokenPtr, interp, 1);
+ TclEmitInstInt4( INST_NSUPVAR, localIndex, envPtr);
+ }
+
+ /*
+ * Pop the namespace, and set the result to empty
+ */
+
+ TclEmitOpcode( INST_POP, envPtr);
+ PushStringLiteral(envPtr, "");
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileIfCmd --
+ *
+ * Procedure called to compile the "if" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "if" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileIfCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ JumpFixupArray jumpFalseFixupArray;
+ /* Used to fix the ifFalse jump after each
+ * test when its target PC is determined. */
+ JumpFixupArray jumpEndFixupArray;
+ /* Used to fix the jump after each "then" body
+ * to the end of the "if" when that PC is
+ * determined. */
+ Tcl_Token *tokenPtr, *testTokenPtr;
+ int jumpIndex = 0; /* Avoid compiler warning. */
+ int jumpFalseDist, numWords, wordIdx, numBytes, j, code;
+ const char *word;
+ int savedStackDepth = envPtr->currStackDepth;
+ /* Saved stack depth at the start of the first
+ * test; the envPtr current depth is restored
+ * to this value at the start of each test. */
+ int realCond = 1; /* Set to 0 for static conditions:
+ * "if 0 {..}" */
+ int boolVal; /* Value of static condition. */
+ int compileScripts = 1;
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * Only compile the "if" command if all arguments are simple words, in
+ * order to insure correct substitution [Bug 219166]
+ */
+
+ tokenPtr = parsePtr->tokenPtr;
+ wordIdx = 0;
+ numWords = parsePtr->numWords;
+
+ for (wordIdx = 0; wordIdx < numWords; wordIdx++) {
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(tokenPtr);
+ }
+
+ TclInitJumpFixupArray(&jumpFalseFixupArray);
+ TclInitJumpFixupArray(&jumpEndFixupArray);
+ code = TCL_OK;
+
+ /*
+ * Each iteration of this loop compiles one "if expr ?then? body" or
+ * "elseif expr ?then? body" clause.
+ */
+
+ tokenPtr = parsePtr->tokenPtr;
+ wordIdx = 0;
+ while (wordIdx < numWords) {
+ /*
+ * Stop looping if the token isn't "if" or "elseif".
+ */
+
+ word = tokenPtr[1].start;
+ numBytes = tokenPtr[1].size;
+ if ((tokenPtr == parsePtr->tokenPtr)
+ || ((numBytes == 6) && (strncmp(word, "elseif", 6) == 0))) {
+ tokenPtr = TokenAfter(tokenPtr);
+ wordIdx++;
+ } else {
+ break;
+ }
+ if (wordIdx >= numWords) {
+ code = TCL_ERROR;
+ goto done;
+ }
+
+ /*
+ * Compile the test expression then emit the conditional jump around
+ * the "then" part.
+ */
+
+ envPtr->currStackDepth = savedStackDepth;
+ testTokenPtr = tokenPtr;
+
+ if (realCond) {
+ /*
+ * Find out if the condition is a constant.
+ */
+
+ Tcl_Obj *boolObj = Tcl_NewStringObj(testTokenPtr[1].start,
+ testTokenPtr[1].size);
+
+ Tcl_IncrRefCount(boolObj);
+ code = Tcl_GetBooleanFromObj(NULL, boolObj, &boolVal);
+ TclDecrRefCount(boolObj);
+ if (code == TCL_OK) {
+ /*
+ * A static condition.
+ */
+
+ realCond = 0;
+ if (!boolVal) {
+ compileScripts = 0;
+ }
+ } else {
+ SetLineInformation(wordIdx);
+ Tcl_ResetResult(interp);
+ TclCompileExprWords(interp, testTokenPtr, 1, envPtr);
+ if (jumpFalseFixupArray.next >= jumpFalseFixupArray.end) {
+ TclExpandJumpFixupArray(&jumpFalseFixupArray);
+ }
+ jumpIndex = jumpFalseFixupArray.next;
+ jumpFalseFixupArray.next++;
+ TclEmitForwardJump(envPtr, TCL_FALSE_JUMP,
+ jumpFalseFixupArray.fixup+jumpIndex);
+ }
+ code = TCL_OK;
+ }
+
+ /*
+ * Skip over the optional "then" before the then clause.
+ */
+
+ tokenPtr = TokenAfter(testTokenPtr);
+ wordIdx++;
+ if (wordIdx >= numWords) {
+ code = TCL_ERROR;
+ goto done;
+ }
+ if (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
+ word = tokenPtr[1].start;
+ numBytes = tokenPtr[1].size;
+ if ((numBytes == 4) && (strncmp(word, "then", 4) == 0)) {
+ tokenPtr = TokenAfter(tokenPtr);
+ wordIdx++;
+ if (wordIdx >= numWords) {
+ code = TCL_ERROR;
+ goto done;
+ }
+ }
+ }
+
+ /*
+ * Compile the "then" command body.
+ */
+
+ if (compileScripts) {
+ SetLineInformation(wordIdx);
+ envPtr->currStackDepth = savedStackDepth;
+ CompileBody(envPtr, tokenPtr, interp);
+ }
+
+ if (realCond) {
+ /*
+ * Jump to the end of the "if" command. Both jumpFalseFixupArray
+ * and jumpEndFixupArray are indexed by "jumpIndex".
+ */
+
+ if (jumpEndFixupArray.next >= jumpEndFixupArray.end) {
+ TclExpandJumpFixupArray(&jumpEndFixupArray);
+ }
+ jumpEndFixupArray.next++;
+ TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP,
+ jumpEndFixupArray.fixup+jumpIndex);
+
+ /*
+ * Fix the target of the jumpFalse after the test. Generate a 4
+ * byte jump if the distance is > 120 bytes. This is conservative,
+ * and ensures that we won't have to replace this jump if we later
+ * also need to replace the proceeding jump to the end of the "if"
+ * with a 4 byte jump.
+ */
+
+ if (TclFixupForwardJumpToHere(envPtr,
+ jumpFalseFixupArray.fixup+jumpIndex, 120)) {
+ /*
+ * Adjust the code offset for the proceeding jump to the end
+ * of the "if" command.
+ */
+
+ jumpEndFixupArray.fixup[jumpIndex].codeOffset += 3;
+ }
+ } else if (boolVal) {
+ /*
+ * We were processing an "if 1 {...}"; stop compiling scripts.
+ */
+
+ compileScripts = 0;
+ } else {
+ /*
+ * We were processing an "if 0 {...}"; reset so that the rest
+ * (elseif, else) is compiled correctly.
+ */
+
+ realCond = 1;
+ compileScripts = 1;
+ }
+
+ tokenPtr = TokenAfter(tokenPtr);
+ wordIdx++;
+ }
+
+ /*
+ * Restore the current stack depth in the environment; the "else" clause
+ * (or its default) will add 1 to this.
+ */
+
+ envPtr->currStackDepth = savedStackDepth;
+
+ /*
+ * Check for the optional else clause. Do not compile anything if this was
+ * an "if 1 {...}" case.
+ */
+
+ if ((wordIdx < numWords) && (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD)) {
+ /*
+ * There is an else clause. Skip over the optional "else" word.
+ */
+
+ word = tokenPtr[1].start;
+ numBytes = tokenPtr[1].size;
+ if ((numBytes == 4) && (strncmp(word, "else", 4) == 0)) {
+ tokenPtr = TokenAfter(tokenPtr);
+ wordIdx++;
+ if (wordIdx >= numWords) {
+ code = TCL_ERROR;
+ goto done;
+ }
+ }
+
+ if (compileScripts) {
+ /*
+ * Compile the else command body.
+ */
+
+ SetLineInformation(wordIdx);
+ CompileBody(envPtr, tokenPtr, interp);
+ }
+
+ /*
+ * Make sure there are no words after the else clause.
+ */
+
+ wordIdx++;
+ if (wordIdx < numWords) {
+ code = TCL_ERROR;
+ goto done;
+ }
+ } else {
+ /*
+ * No else clause: the "if" command's result is an empty string.
+ */
+
+ if (compileScripts) {
+ PushStringLiteral(envPtr, "");
+ }
+ }
+
+ /*
+ * Fix the unconditional jumps to the end of the "if" command.
+ */
+
+ for (j = jumpEndFixupArray.next; j > 0; j--) {
+ jumpIndex = (j - 1); /* i.e. process the closest jump first. */
+ if (TclFixupForwardJumpToHere(envPtr,
+ jumpEndFixupArray.fixup+jumpIndex, 127)) {
+ /*
+ * Adjust the immediately preceeding "ifFalse" jump. We moved it's
+ * target (just after this jump) down three bytes.
+ */
+
+ unsigned char *ifFalsePc = envPtr->codeStart
+ + jumpFalseFixupArray.fixup[jumpIndex].codeOffset;
+ unsigned char opCode = *ifFalsePc;
+
+ if (opCode == INST_JUMP_FALSE1) {
+ jumpFalseDist = TclGetInt1AtPtr(ifFalsePc + 1);
+ jumpFalseDist += 3;
+ TclStoreInt1AtPtr(jumpFalseDist, (ifFalsePc + 1));
+ } else if (opCode == INST_JUMP_FALSE4) {
+ jumpFalseDist = TclGetInt4AtPtr(ifFalsePc + 1);
+ jumpFalseDist += 3;
+ TclStoreInt4AtPtr(jumpFalseDist, (ifFalsePc + 1));
+ } else {
+ Tcl_Panic("TclCompileIfCmd: unexpected opcode \"%d\" updating ifFalse jump", (int) opCode);
+ }
+ }
+ }
+
+ /*
+ * Free the jumpFixupArray array if malloc'ed storage was used.
+ */
+
+ done:
+ envPtr->currStackDepth = savedStackDepth + 1;
+ TclFreeJumpFixupArray(&jumpFalseFixupArray);
+ TclFreeJumpFixupArray(&jumpEndFixupArray);
+ return code;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileIncrCmd --
+ *
+ * Procedure called to compile the "incr" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "incr" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileIncrCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *varTokenPtr, *incrTokenPtr;
+ int simpleVarName, isScalar, localIndex, haveImmValue, immValue;
+ DefineLineInformation; /* TIP #280 */
+
+ if ((parsePtr->numWords != 2) && (parsePtr->numWords != 3)) {
+ return TCL_ERROR;
+ }
+
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_LARGE_INDEX,
+ &localIndex, &simpleVarName, &isScalar, 1);
+
+ /*
+ * If an increment is given, push it, but see first if it's a small
+ * integer.
+ */
+
+ haveImmValue = 0;
+ immValue = 1;
+ if (parsePtr->numWords == 3) {
+ incrTokenPtr = TokenAfter(varTokenPtr);
+ if (incrTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
+ const char *word = incrTokenPtr[1].start;
+ int numBytes = incrTokenPtr[1].size;
+ int code;
+ Tcl_Obj *intObj = Tcl_NewStringObj(word, numBytes);
+
+ Tcl_IncrRefCount(intObj);
+ code = TclGetIntFromObj(NULL, intObj, &immValue);
+ TclDecrRefCount(intObj);
+ if ((code == TCL_OK) && (-127 <= immValue) && (immValue <= 127)) {
+ haveImmValue = 1;
+ }
+ if (!haveImmValue) {
+ PushLiteral(envPtr, word, numBytes);
+ }
+ } else {
+ SetLineInformation(2);
+ CompileTokens(envPtr, incrTokenPtr, interp);
+ }
+ } else { /* No incr amount given so use 1. */
+ haveImmValue = 1;
+ }
+
+ /*
+ * Emit the instruction to increment the variable.
+ */
+
+ if (!simpleVarName) {
+ if (haveImmValue) {
+ TclEmitInstInt1( INST_INCR_STK_IMM, immValue, envPtr);
+ } else {
+ TclEmitOpcode( INST_INCR_STK, envPtr);
+ }
+ } else if (isScalar) { /* Simple scalar variable. */
+ if (localIndex >= 0) {
+ if (haveImmValue) {
+ TclEmitInstInt1(INST_INCR_SCALAR1_IMM, localIndex, envPtr);
+ TclEmitInt1(immValue, envPtr);
+ } else {
+ TclEmitInstInt1(INST_INCR_SCALAR1, localIndex, envPtr);
+ }
+ } else {
+ if (haveImmValue) {
+ TclEmitInstInt1(INST_INCR_SCALAR_STK_IMM, immValue, envPtr);
+ } else {
+ TclEmitOpcode( INST_INCR_SCALAR_STK, envPtr);
+ }
+ }
+ } else { /* Simple array variable. */
+ if (localIndex >= 0) {
+ if (haveImmValue) {
+ TclEmitInstInt1(INST_INCR_ARRAY1_IMM, localIndex, envPtr);
+ TclEmitInt1(immValue, envPtr);
+ } else {
+ TclEmitInstInt1(INST_INCR_ARRAY1, localIndex, envPtr);
+ }
+ } else {
+ if (haveImmValue) {
+ TclEmitInstInt1(INST_INCR_ARRAY_STK_IMM, immValue, envPtr);
+ } else {
+ TclEmitOpcode( INST_INCR_ARRAY_STK, envPtr);
+ }
+ }
+ }
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileInfo*Cmd --
+ *
+ * Procedures called to compile "info" subcommands.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "info" subcommand at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileInfoCommandsCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr)
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr;
+ Tcl_Obj *objPtr;
+ char *bytes;
+
+ /*
+ * We require one compile-time known argument for the case we can compile.
+ */
+
+ if (parsePtr->numWords == 1) {
+ return TclCompileBasic0ArgCmd(interp, parsePtr, cmdPtr, envPtr);
+ } else if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ objPtr = Tcl_NewObj();
+ Tcl_IncrRefCount(objPtr);
+ if (!TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
+ goto notCompilable;
+ }
+ bytes = Tcl_GetString(objPtr);
+
+ /*
+ * We require that the argument start with "::" and not have any of "*\[?"
+ * in it. (Theoretically, we should look in only the final component, but
+ * the difference is so slight given current naming practices.)
+ */
+
+ if (bytes[0] != ':' || bytes[1] != ':' || !TclMatchIsTrivial(bytes)) {
+ goto notCompilable;
+ }
+ Tcl_DecrRefCount(objPtr);
+
+ /*
+ * Confirmed as a literal that will not frighten the horses. Compile. Note
+ * that the result needs to be list-ified.
+ */
+
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ TclEmitOpcode( INST_RESOLVE_COMMAND, envPtr);
+ TclEmitOpcode( INST_DUP, envPtr);
+ TclEmitOpcode( INST_STR_LEN, envPtr);
+ TclEmitInstInt1( INST_JUMP_FALSE1, 7, envPtr);
+ TclEmitInstInt4( INST_LIST, 1, envPtr);
+ return TCL_OK;
+
+ notCompilable:
+ Tcl_DecrRefCount(objPtr);
+ return TclCompileBasic1ArgCmd(interp, parsePtr, cmdPtr, envPtr);
+}
+
+int
+TclCompileInfoCoroutineCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ /*
+ * Only compile [info coroutine] without arguments.
+ */
+
+ if (parsePtr->numWords != 1) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Not much to do; we compile to a single instruction...
+ */
+
+ TclEmitOpcode( INST_COROUTINE_NAME, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileInfoExistsCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr;
+ int isScalar, simpleVarName, localIndex;
+ DefineLineInformation; /* TIP #280 */
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Decide if we can use a frame slot for the var/array name or if we need
+ * to emit code to compute and push the name at runtime. We use a frame
+ * slot (entry in the array of local vars) if we are compiling a procedure
+ * body and if the name is simple text that does not include namespace
+ * qualifiers.
+ */
+
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ PushVarNameWord(interp, tokenPtr, envPtr, 0, &localIndex,
+ &simpleVarName, &isScalar, 1);
+
+ /*
+ * Emit instruction to check the variable for existence.
+ */
+
+ if (!simpleVarName) {
+ TclEmitOpcode( INST_EXIST_STK, envPtr);
+ } else if (isScalar) {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_EXIST_STK, envPtr);
+ } else {
+ TclEmitInstInt4( INST_EXIST_SCALAR, localIndex, envPtr);
+ }
+ } else {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_EXIST_ARRAY_STK, envPtr);
+ } else {
+ TclEmitInstInt4( INST_EXIST_ARRAY, localIndex, envPtr);
+ }
+ }
+
+ return TCL_OK;
+}
+
+int
+TclCompileInfoLevelCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ /*
+ * Only compile [info level] without arguments or with a single argument.
+ */
+
+ if (parsePtr->numWords == 1) {
+ /*
+ * Not much to do; we compile to a single instruction...
+ */
+
+ TclEmitOpcode( INST_INFO_LEVEL_NUM, envPtr);
+ } else if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ } else {
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * Compile the argument, then add the instruction to convert it into a
+ * list of arguments.
+ */
+
+ SetLineInformation(1);
+ CompileTokens(envPtr, TokenAfter(parsePtr->tokenPtr), interp);
+ TclEmitOpcode( INST_INFO_LEVEL_ARGS, envPtr);
+ }
+ return TCL_OK;
+}
+
+int
+TclCompileInfoObjectClassCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr)
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ TclEmitOpcode( INST_TCLOO_CLASS, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileInfoObjectIsACmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr)
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ /*
+ * We only handle [info object isa object <somevalue>]. The first three
+ * words are compressed to a single token by the ensemble compilation
+ * engine.
+ */
+
+ if (parsePtr->numWords != 3) {
+ return TCL_ERROR;
+ }
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size < 1
+ || strncmp(tokenPtr[1].start, "object", tokenPtr[1].size)) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(tokenPtr);
+
+ /*
+ * Issue the code.
+ */
+
+ CompileWord(envPtr, tokenPtr, interp, 2);
+ TclEmitOpcode( INST_TCLOO_IS_OBJECT, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileInfoObjectNamespaceCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr)
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ TclEmitOpcode( INST_TCLOO_NS, envPtr);
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLappendCmd --
+ *
+ * Procedure called to compile the "lappend" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "lappend" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLappendCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *varTokenPtr, *valueTokenPtr;
+ int simpleVarName, isScalar, localIndex, numWords, i, fwd, offsetFwd;
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * If we're not in a procedure, don't compile.
+ */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+
+ numWords = parsePtr->numWords;
+ if (numWords == 1) {
+ return TCL_ERROR;
+ }
+ if (numWords != 3) {
+ /*
+ * LAPPEND instructions currently only handle one value, but we can
+ * handle some multi-value cases by stringing them together.
+ */
+
+ goto lappendMultiple;
+ }
+
+ /*
+ * Decide if we can use a frame slot for the var/array name or if we
+ * need to emit code to compute and push the name at runtime. We use a
+ * frame slot (entry in the array of local vars) if we are compiling a
+ * procedure body and if the name is simple text that does not include
+ * namespace qualifiers.
+ */
+
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ PushVarNameWord(interp, varTokenPtr, envPtr, 0,
+ &localIndex, &simpleVarName, &isScalar, 1);
+
+ /*
+ * If we are doing an assignment, push the new value. In the no values
+ * case, create an empty object.
+ */
+
+ if (numWords > 2) {
+ Tcl_Token *valueTokenPtr = TokenAfter(varTokenPtr);
+
+ CompileWord(envPtr, valueTokenPtr, interp, 2);
+ }
+
+ /*
+ * Emit instructions to set/get the variable.
+ */
+
+ /*
+ * The *_STK opcodes should be refactored to make better use of existing
+ * LOAD/STORE instructions.
+ */
+
+ if (!simpleVarName) {
+ TclEmitOpcode( INST_LAPPEND_STK, envPtr);
+ } else if (isScalar) {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_LAPPEND_STK, envPtr);
+ } else {
+ Emit14Inst( INST_LAPPEND_SCALAR, localIndex, envPtr);
+ }
+ } else {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_LAPPEND_ARRAY_STK, envPtr);
+ } else {
+ Emit14Inst( INST_LAPPEND_ARRAY, localIndex, envPtr);
+ }
+ }
+
+ return TCL_OK;
+
+ lappendMultiple:
+ /*
+ * Can only handle the case where we are appending to a local scalar when
+ * there are multiple values to append. Fortunately, this is common.
+ */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ PushVarNameWord(interp, varTokenPtr, envPtr, TCL_NO_ELEMENT,
+ &localIndex, &simpleVarName, &isScalar, 1);
+ if (!isScalar || localIndex < 0) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Definitely appending to a local scalar; generate the words and append
+ * them.
+ */
+
+ valueTokenPtr = TokenAfter(varTokenPtr);
+ for (i = 2 ; i < numWords ; i++) {
+ CompileWord(envPtr, valueTokenPtr, interp, i);
+ valueTokenPtr = TokenAfter(valueTokenPtr);
+ }
+ TclEmitInstInt4( INST_LIST, numWords-2, envPtr);
+ TclEmitInstInt4( INST_EXIST_SCALAR, localIndex, envPtr);
+ offsetFwd = CurrentOffset(envPtr);
+ TclEmitInstInt1( INST_JUMP_FALSE1, 0, envPtr);
+ Emit14Inst( INST_LOAD_SCALAR, localIndex, envPtr);
+ TclEmitInstInt4( INST_REVERSE, 2, envPtr);
+ TclEmitOpcode( INST_LIST_CONCAT, envPtr);
+ fwd = CurrentOffset(envPtr) - offsetFwd;
+ TclStoreInt1AtPtr(fwd, envPtr->codeStart+offsetFwd+1);
+ Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLassignCmd --
+ *
+ * Procedure called to compile the "lassign" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "lassign" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLassignCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr;
+ int simpleVarName, isScalar, localIndex, numWords, idx;
+ DefineLineInformation; /* TIP #280 */
+
+ numWords = parsePtr->numWords;
+
+ /*
+ * Check for command syntax error, but we'll punt that to runtime.
+ */
+
+ if (numWords < 3) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Generate code to push list being taken apart by [lassign].
+ */
+
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ CompileWord(envPtr, tokenPtr, interp, 1);
+
+ /*
+ * Generate code to assign values from the list to variables.
+ */
+
+ for (idx=0 ; idx<numWords-2 ; idx++) {
+ tokenPtr = TokenAfter(tokenPtr);
+
+ /*
+ * Generate the next variable name.
+ */
+
+ PushVarNameWord(interp, tokenPtr, envPtr, 0, &localIndex,
+ &simpleVarName, &isScalar, idx+2);
+
+ /*
+ * Emit instructions to get the idx'th item out of the list value on
+ * the stack and assign it to the variable.
+ */
+
+ if (!simpleVarName) {
+ TclEmitInstInt4( INST_OVER, 1, envPtr);
+ TclEmitInstInt4( INST_LIST_INDEX_IMM, idx, envPtr);
+ TclEmitOpcode( INST_STORE_STK, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ } else if (isScalar) {
+ if (localIndex >= 0) {
+ TclEmitOpcode( INST_DUP, envPtr);
+ TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
+ Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ } else {
+ TclEmitInstInt4(INST_OVER, 1, envPtr);
+ TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
+ TclEmitOpcode( INST_STORE_SCALAR_STK, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ }
+ } else {
+ if (localIndex >= 0) {
+ TclEmitInstInt4(INST_OVER, 1, envPtr);
+ TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
+ Emit14Inst( INST_STORE_ARRAY, localIndex, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ } else {
+ TclEmitInstInt4(INST_OVER, 2, envPtr);
+ TclEmitInstInt4(INST_LIST_INDEX_IMM, idx, envPtr);
+ TclEmitOpcode( INST_STORE_ARRAY_STK, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ }
+ }
+ }
+
+ /*
+ * Generate code to leave the rest of the list on the stack.
+ */
+
+ TclEmitInstInt4( INST_LIST_RANGE_IMM, idx, envPtr);
+ TclEmitInt4( -2 /* == "end" */, envPtr);
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLindexCmd --
+ *
+ * Procedure called to compile the "lindex" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "lindex" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLindexCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *idxTokenPtr, *valTokenPtr;
+ int i, numWords = parsePtr->numWords;
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * Quit if too few args.
+ */
+
+ if (numWords <= 1) {
+ return TCL_ERROR;
+ }
+
+ valTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ if (numWords != 3) {
+ goto emitComplexLindex;
+ }
+
+ idxTokenPtr = TokenAfter(valTokenPtr);
+ if (idxTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
+ Tcl_Obj *tmpObj;
+ int idx, result;
+
+ tmpObj = Tcl_NewStringObj(idxTokenPtr[1].start, idxTokenPtr[1].size);
+ result = TclGetIntFromObj(NULL, tmpObj, &idx);
+ if (result == TCL_OK) {
+ if (idx < 0) {
+ result = TCL_ERROR;
+ }
+ } else {
+ result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx);
+ if (result == TCL_OK && idx > -2) {
+ result = TCL_ERROR;
+ }
+ }
+ TclDecrRefCount(tmpObj);
+
+ if (result == TCL_OK) {
+ /*
+ * All checks have been completed, and we have exactly one of
+ * these constructs:
+ * lindex <arbitraryValue> <posInt>
+ * lindex <arbitraryValue> end-<posInt>
+ * This is best compiled as a push of the arbitrary value followed
+ * by an "immediate lindex" which is the most efficient variety.
+ */
+
+ CompileWord(envPtr, valTokenPtr, interp, 1);
+ TclEmitInstInt4( INST_LIST_INDEX_IMM, idx, envPtr);
+ return TCL_OK;
+ }
+
+ /*
+ * If the conversion failed or the value was negative, we just keep on
+ * going with the more complex compilation.
+ */
+ }
+
+ /*
+ * Push the operands onto the stack.
+ */
+
+ emitComplexLindex:
+ for (i=1 ; i<numWords ; i++) {
+ CompileWord(envPtr, valTokenPtr, interp, i);
+ valTokenPtr = TokenAfter(valTokenPtr);
+ }
+
+ /*
+ * Emit INST_LIST_INDEX if objc==3, or INST_LIST_INDEX_MULTI if there are
+ * multiple index args.
+ */
+
+ if (numWords == 3) {
+ TclEmitOpcode( INST_LIST_INDEX, envPtr);
+ } else {
+ TclEmitInstInt4( INST_LIST_INDEX_MULTI, numWords-1, envPtr);
+ }
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileListCmd --
+ *
+ * Procedure called to compile the "list" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "list" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileListCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *valueTokenPtr;
+ int i, numWords, concat, build;
+ Tcl_Obj *listObj, *objPtr;
+
+ if (parsePtr->numWords == 1) {
+ /*
+ * [list] without arguments just pushes an empty object.
+ */
+
+ PushStringLiteral(envPtr, "");
+ return TCL_OK;
+ }
+
+ /*
+ * Test if all arguments are compile-time known. If they are, we can
+ * implement with a simple push.
+ */
+
+ numWords = parsePtr->numWords;
+ valueTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ listObj = Tcl_NewObj();
+ for (i = 1; i < numWords && listObj != NULL; i++) {
+ objPtr = Tcl_NewObj();
+ if (TclWordKnownAtCompileTime(valueTokenPtr, objPtr)) {
+ (void) Tcl_ListObjAppendElement(NULL, listObj, objPtr);
+ } else {
+ Tcl_DecrRefCount(objPtr);
+ Tcl_DecrRefCount(listObj);
+ listObj = NULL;
+ }
+ valueTokenPtr = TokenAfter(valueTokenPtr);
+ }
+ if (listObj != NULL) {
+ int len;
+ const char *bytes = Tcl_GetStringFromObj(listObj, &len);
+
+ PushLiteral(envPtr, bytes, len);
+ Tcl_DecrRefCount(listObj);
+ if (len > 0) {
+ /*
+ * Force list interpretation!
+ */
+
+ TclEmitOpcode( INST_DUP, envPtr);
+ TclEmitOpcode( INST_LIST_LENGTH, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ }
+ return TCL_OK;
+ }
+
+ /*
+ * Push the all values onto the stack.
+ */
+
+ numWords = parsePtr->numWords;
+ valueTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ concat = build = 0;
+ for (i = 1; i < numWords; i++) {
+ if (valueTokenPtr->type == TCL_TOKEN_EXPAND_WORD && build > 0) {
+ TclEmitInstInt4( INST_LIST, build, envPtr);
+ if (concat) {
+ TclEmitOpcode( INST_LIST_CONCAT, envPtr);
+ }
+ build = 0;
+ concat = 1;
+ }
+ CompileWord(envPtr, valueTokenPtr, interp, i);
+ if (valueTokenPtr->type == TCL_TOKEN_EXPAND_WORD) {
+ if (concat) {
+ TclEmitOpcode( INST_LIST_CONCAT, envPtr);
+ } else {
+ concat = 1;
+ }
+ } else {
+ build++;
+ }
+ valueTokenPtr = TokenAfter(valueTokenPtr);
+ }
+ if (build > 0) {
+ TclEmitInstInt4( INST_LIST, build, envPtr);
+ if (concat) {
+ TclEmitOpcode( INST_LIST_CONCAT, envPtr);
+ }
+ }
+
+ /*
+ * If there was just one expanded word, we must ensure that it is a list
+ * at this point. We use an [lrange ... 0 end] for this (instead of
+ * [llength], as with literals) as we must drop any string representation
+ * that might be hanging around.
+ */
+
+ if (concat && numWords == 2) {
+ TclEmitInstInt4( INST_LIST_RANGE_IMM, 0, envPtr);
+ TclEmitInt4( -2, envPtr);
+ }
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLlengthCmd --
+ *
+ * Procedure called to compile the "llength" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "llength" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLlengthCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *varTokenPtr;
+ DefineLineInformation; /* TIP #280 */
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ CompileWord(envPtr, varTokenPtr, interp, 1);
+ TclEmitOpcode( INST_LIST_LENGTH, envPtr);
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLrangeCmd --
+ *
+ * How to compile the "lrange" command. We only bother because we needed
+ * the opcode anyway for "lassign".
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLrangeCmd(
+ Tcl_Interp *interp, /* Tcl interpreter for context. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the
+ * command. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds the resulting instructions. */
+{
+ Tcl_Token *tokenPtr, *listTokenPtr;
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Obj *tmpObj;
+ int idx1, idx2, result;
+
+ if (parsePtr->numWords != 4) {
+ return TCL_ERROR;
+ }
+ listTokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ /*
+ * Parse the first index. Will only compile if it is constant and not an
+ * _integer_ less than zero (since we reserve negative indices here for
+ * end-relative indexing).
+ */
+
+ tokenPtr = TokenAfter(listTokenPtr);
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
+ result = TclGetIntFromObj(NULL, tmpObj, &idx1);
+ if (result == TCL_OK) {
+ if (idx1 < 0) {
+ result = TCL_ERROR;
+ }
+ } else {
+ result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx1);
+ if (result == TCL_OK && idx1 > -2) {
+ result = TCL_ERROR;
+ }
+ }
+ TclDecrRefCount(tmpObj);
+ if (result != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Parse the second index. Will only compile if it is constant and not an
+ * _integer_ less than zero (since we reserve negative indices here for
+ * end-relative indexing).
+ */
+
+ tokenPtr = TokenAfter(tokenPtr);
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
+ result = TclGetIntFromObj(NULL, tmpObj, &idx2);
+ if (result == TCL_OK) {
+ if (idx2 < 0) {
+ result = TCL_ERROR;
+ }
+ } else {
+ result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx2);
+ if (result == TCL_OK && idx2 > -2) {
+ result = TCL_ERROR;
+ }
+ }
+ TclDecrRefCount(tmpObj);
+ if (result != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Issue instructions. It's not safe to skip doing the LIST_RANGE, as
+ * we've not proved that the 'list' argument is really a list. Not that it
+ * is worth trying to do that given current knowledge.
+ */
+
+ CompileWord(envPtr, listTokenPtr, interp, 1);
+ TclEmitInstInt4( INST_LIST_RANGE_IMM, idx1, envPtr);
+ TclEmitInt4( idx2, envPtr);
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLreplaceCmd --
+ *
+ * How to compile the "lreplace" command. We only bother with the case
+ * where there are no elements to insert and where both the 'first' and
+ * 'last' arguments are constant and one can be deterined to be at the
+ * end of the list. (This is the case that could also be written with
+ * "lrange".)
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLreplaceCmd(
+ Tcl_Interp *interp, /* Tcl interpreter for context. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the
+ * command. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds the resulting instructions. */
+{
+ Tcl_Token *tokenPtr, *listTokenPtr;
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Obj *tmpObj;
+ int idx1, idx2, result, guaranteedDropAll = 0;
+
+ if (parsePtr->numWords != 4) {
+ return TCL_ERROR;
+ }
+ listTokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ /*
+ * Parse the first index. Will only compile if it is constant and not an
+ * _integer_ less than zero (since we reserve negative indices here for
+ * end-relative indexing).
+ */
+
+ tokenPtr = TokenAfter(listTokenPtr);
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
+ result = TclGetIntFromObj(NULL, tmpObj, &idx1);
+ if (result == TCL_OK) {
+ if (idx1 < 0) {
+ result = TCL_ERROR;
+ }
+ } else {
+ result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx1);
+ if (result == TCL_OK && idx1 > -2) {
+ result = TCL_ERROR;
+ }
+ }
+ TclDecrRefCount(tmpObj);
+ if (result != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Parse the second index. Will only compile if it is constant and not an
+ * _integer_ less than zero (since we reserve negative indices here for
+ * end-relative indexing).
+ */
+
+ tokenPtr = TokenAfter(tokenPtr);
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ tmpObj = Tcl_NewStringObj(tokenPtr[1].start, tokenPtr[1].size);
+ result = TclGetIntFromObj(NULL, tmpObj, &idx2);
+ if (result == TCL_OK) {
+ if (idx2 < 0) {
+ result = TCL_ERROR;
+ }
+ } else {
+ result = TclGetIntForIndexM(NULL, tmpObj, -2, &idx2);
+ if (result == TCL_OK && idx2 > -2) {
+ result = TCL_ERROR;
+ }
+ }
+ TclDecrRefCount(tmpObj);
+ if (result != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Sanity check: can only issue when we're removing a range at one or
+ * other end of the list. If we're at one end or the other, convert the
+ * indices into the equivalent for an [lrange].
+ */
+
+ if (idx1 == 0) {
+ if (idx2 == -2) {
+ guaranteedDropAll = 1;
+ }
+ idx1 = idx2 + 1;
+ idx2 = -2;
+ } else if (idx2 == -2) {
+ idx2 = idx1 - 1;
+ idx1 = 0;
+ } else {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Issue instructions. It's not safe to skip doing the LIST_RANGE, as
+ * we've not proved that the 'list' argument is really a list. Not that it
+ * is worth trying to do that given current knowledge.
+ */
+
+ CompileWord(envPtr, listTokenPtr, interp, 1);
+ if (guaranteedDropAll) {
+ TclEmitOpcode( INST_LIST_LENGTH, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ PushStringLiteral(envPtr, "");
+ } else {
+ TclEmitInstInt4( INST_LIST_RANGE_IMM, idx1, envPtr);
+ TclEmitInt4( idx2, envPtr);
+ }
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileLsetCmd --
+ *
+ * Procedure called to compile the "lset" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "lset" command at
+ * runtime.
+ *
+ * The general template for execution of the "lset" command is:
+ * (1) Instructions to push the variable name, unless the variable is
+ * local to the stack frame.
+ * (2) If the variable is an array element, instructions to push the
+ * array element name.
+ * (3) Instructions to push each of zero or more "index" arguments to the
+ * stack, followed with the "newValue" element.
+ * (4) Instructions to duplicate the variable name and/or array element
+ * name onto the top of the stack, if either was pushed at steps (1)
+ * and (2).
+ * (5) The appropriate INST_LOAD_* instruction to place the original
+ * value of the list variable at top of stack.
+ * (6) At this point, the stack contains:
+ * varName? arrayElementName? index1 index2 ... newValue oldList
+ * The compiler emits one of INST_LSET_FLAT or INST_LSET_LIST
+ * according as whether there is exactly one index element (LIST) or
+ * either zero or else two or more (FLAT). This instruction removes
+ * everything from the stack except for the two names and pushes the
+ * new value of the variable.
+ * (7) Finally, INST_STORE_* stores the new value in the variable and
+ * cleans up the stack.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileLsetCmd(
+ Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the
+ * command. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds the resulting instructions. */
+{
+ int tempDepth; /* Depth used for emitting one part of the
+ * code burst. */
+ Tcl_Token *varTokenPtr; /* Pointer to the Tcl_Token representing the
+ * parse of the variable name. */
+ int localIndex; /* Index of var in local var table. */
+ int simpleVarName; /* Flag == 1 if var name is simple. */
+ int isScalar; /* Flag == 1 if scalar, 0 if array. */
+ int i;
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * Check argument count.
+ */
+
+ if (parsePtr->numWords < 3) {
+ /*
+ * Fail at run time, not in compilation.
+ */
+
+ return TCL_ERROR;
+ }
+
+ /*
+ * Decide if we can use a frame slot for the var/array name or if we need
+ * to emit code to compute and push the name at runtime. We use a frame
+ * slot (entry in the array of local vars) if we are compiling a procedure
+ * body and if the name is simple text that does not include namespace
+ * qualifiers.
+ */
+
+ varTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ PushVarNameWord(interp, varTokenPtr, envPtr, 0,
+ &localIndex, &simpleVarName, &isScalar, 1);
+
+ /*
+ * Push the "index" args and the new element value.
+ */
+
+ for (i=2 ; i<parsePtr->numWords ; ++i) {
+ varTokenPtr = TokenAfter(varTokenPtr);
+ CompileWord(envPtr, varTokenPtr, interp, i);
+ }
+
+ /*
+ * Duplicate the variable name if it's been pushed.
+ */
+
+ if (!simpleVarName || localIndex < 0) {
+ if (!simpleVarName || isScalar) {
+ tempDepth = parsePtr->numWords - 2;
+ } else {
+ tempDepth = parsePtr->numWords - 1;
+ }
+ TclEmitInstInt4( INST_OVER, tempDepth, envPtr);
+ }
+
+ /*
+ * Duplicate an array index if one's been pushed.
+ */
+
+ if (simpleVarName && !isScalar) {
+ if (localIndex < 0) {
+ tempDepth = parsePtr->numWords - 1;
+ } else {
+ tempDepth = parsePtr->numWords - 2;
+ }
+ TclEmitInstInt4( INST_OVER, tempDepth, envPtr);
+ }
+
+ /*
+ * Emit code to load the variable's value.
+ */
+
+ if (!simpleVarName) {
+ TclEmitOpcode( INST_LOAD_STK, envPtr);
+ } else if (isScalar) {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_LOAD_SCALAR_STK, envPtr);
+ } else {
+ Emit14Inst( INST_LOAD_SCALAR, localIndex, envPtr);
+ }
+ } else {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_LOAD_ARRAY_STK, envPtr);
+ } else {
+ Emit14Inst( INST_LOAD_ARRAY, localIndex, envPtr);
+ }
+ }
+
+ /*
+ * Emit the correct variety of 'lset' instruction.
+ */
+
+ if (parsePtr->numWords == 4) {
+ TclEmitOpcode( INST_LSET_LIST, envPtr);
+ } else {
+ TclEmitInstInt4( INST_LSET_FLAT, parsePtr->numWords-1, envPtr);
+ }
+
+ /*
+ * Emit code to put the value back in the variable.
+ */
+
+ if (!simpleVarName) {
+ TclEmitOpcode( INST_STORE_STK, envPtr);
+ } else if (isScalar) {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_STORE_SCALAR_STK, envPtr);
+ } else {
+ Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
+ }
+ } else {
+ if (localIndex < 0) {
+ TclEmitOpcode( INST_STORE_ARRAY_STK, envPtr);
+ } else {
+ Emit14Inst( INST_STORE_ARRAY, localIndex, envPtr);
+ }
+ }
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileNamespace*Cmd --
+ *
+ * Procedures called to compile the "namespace" command; currently, only
+ * the subcommands "namespace current" and "namespace upvar" are compiled
+ * to bytecodes, and the latter only inside a procedure(-like) context.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "namespace upvar"
+ * command at runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileNamespaceCurrentCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ /*
+ * Only compile [namespace current] without arguments.
+ */
+
+ if (parsePtr->numWords != 1) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Not much to do; we compile to a single instruction...
+ */
+
+ TclEmitOpcode( INST_NS_CURRENT, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileNamespaceCodeCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr;
+ DefineLineInformation; /* TIP #280 */
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+
+ /*
+ * The specification of [namespace code] is rather shocking, in that it is
+ * supposed to check if the argument is itself the result of [namespace
+ * code] and not apply itself in that case. Which is excessively cautious,
+ * but what the test suite checks for.
+ */
+
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || (tokenPtr[1].size > 20
+ && strncmp(tokenPtr[1].start, "::namespace inscope ", 20) == 0)) {
+ /*
+ * Technically, we could just pass a literal '::namespace inscope '
+ * term through, but that's something which really shouldn't be
+ * occurring as something that the user writes so we'll just punt it.
+ */
+
+ return TCL_ERROR;
+ }
+
+ /*
+ * Now we can compile using the same strategy as [namespace code]'s normal
+ * implementation does internally. Note that we can't bind the namespace
+ * name directly here, because TclOO plays complex games with namespaces;
+ * the value needs to be determined at runtime for safety.
+ */
+
+ PushStringLiteral(envPtr, "::namespace");
+ PushStringLiteral(envPtr, "inscope");
+ TclEmitOpcode( INST_NS_CURRENT, envPtr);
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ TclEmitInstInt4( INST_LIST, 4, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileNamespaceQualifiersCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ DefineLineInformation; /* TIP #280 */
+ int off;
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ PushStringLiteral(envPtr, "0");
+ PushStringLiteral(envPtr, "::");
+ TclEmitInstInt4( INST_OVER, 2, envPtr);
+ TclEmitOpcode( INST_STR_FIND_LAST, envPtr);
+ off = CurrentOffset(envPtr);
+ PushStringLiteral(envPtr, "1");
+ TclEmitOpcode( INST_SUB, envPtr);
+ TclEmitInstInt4( INST_OVER, 2, envPtr);
+ TclEmitInstInt4( INST_OVER, 1, envPtr);
+ TclEmitOpcode( INST_STR_INDEX, envPtr);
+ PushStringLiteral(envPtr, ":");
+ TclEmitOpcode( INST_STR_EQ, envPtr);
+ off = off - CurrentOffset(envPtr);
+ TclEmitInstInt1( INST_JUMP_TRUE1, off, envPtr);
+ TclEmitOpcode( INST_STR_RANGE, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileNamespaceTailCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ DefineLineInformation; /* TIP #280 */
+ JumpFixup jumpFixup;
+
+ if (parsePtr->numWords != 2) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Take care; only add 2 to found index if the string was actually found.
+ */
+
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ PushStringLiteral(envPtr, "::");
+ TclEmitInstInt4( INST_OVER, 1, envPtr);
+ TclEmitOpcode( INST_STR_FIND_LAST, envPtr);
+ TclEmitOpcode( INST_DUP, envPtr);
+ PushStringLiteral(envPtr, "0");
+ TclEmitOpcode( INST_GE, envPtr);
+ TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpFixup);
+ PushStringLiteral(envPtr, "2");
+ TclEmitOpcode( INST_ADD, envPtr);
+ TclFixupForwardJumpToHere(envPtr, &jumpFixup, 127);
+ PushStringLiteral(envPtr, "end");
+ TclEmitOpcode( INST_STR_RANGE, envPtr);
+ return TCL_OK;
+}
+
+int
+TclCompileNamespaceUpvarCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr, *otherTokenPtr, *localTokenPtr;
+ int simpleVarName, isScalar, localIndex, numWords, i;
+ DefineLineInformation; /* TIP #280 */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Only compile [namespace upvar ...]: needs an even number of args, >=4
+ */
+
+ numWords = parsePtr->numWords;
+ if ((numWords % 2) || (numWords < 4)) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Push the namespace
+ */
+
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ CompileWord(envPtr, tokenPtr, interp, 1);
+
+ /*
+ * Loop over the (otherVar, thisVar) pairs. If any of the thisVar is not a
+ * local variable, return an error so that the non-compiled command will
+ * be called at runtime.
+ */
+
+ localTokenPtr = tokenPtr;
+ for (i=3; i<=numWords; i+=2) {
+ otherTokenPtr = TokenAfter(localTokenPtr);
+ localTokenPtr = TokenAfter(otherTokenPtr);
+
+ CompileWord(envPtr, otherTokenPtr, interp, 1);
+ PushVarNameWord(interp, localTokenPtr, envPtr, 0,
+ &localIndex, &simpleVarName, &isScalar, 1);
+
+ if ((localIndex < 0) || !isScalar) {
+ return TCL_ERROR;
+ }
+ TclEmitInstInt4( INST_NSUPVAR, localIndex, envPtr);
+ }
+
+ /*
+ * Pop the namespace, and set the result to empty
+ */
+
+ TclEmitOpcode( INST_POP, envPtr);
+ PushStringLiteral(envPtr, "");
+ return TCL_OK;
+}
+
+int
+TclCompileNamespaceWhichCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr, *opt;
+ int idx;
+
+ if (parsePtr->numWords < 2 || parsePtr->numWords > 3) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ idx = 1;
+
+ /*
+ * If there's an option, check that it's "-command". We don't handle
+ * "-variable" (currently) and anything else is an error.
+ */
+
+ if (parsePtr->numWords == 3) {
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ return TCL_ERROR;
+ }
+ opt = tokenPtr + 1;
+ if (opt->size < 2 || opt->size > 8
+ || strncmp(opt->start, "-command", opt->size) != 0) {
+ return TCL_ERROR;
+ }
+ tokenPtr = TokenAfter(tokenPtr);
+ idx++;
+ }
+
+ /*
+ * Issue the bytecode.
+ */
+
+ CompileWord(envPtr, tokenPtr, interp, idx);
+ TclEmitOpcode( INST_RESOLVE_COMMAND, envPtr);
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileRegexpCmd --
+ *
+ * Procedure called to compile the "regexp" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "regexp" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileRegexpCmd(
+ Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the
+ * command. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds the resulting instructions. */
+{
+ Tcl_Token *varTokenPtr; /* Pointer to the Tcl_Token representing the
+ * parse of the RE or string. */
+ int i, len, nocase, exact, sawLast, simple;
+ const char *str;
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * We are only interested in compiling simple regexp cases. Currently
+ * supported compile cases are:
+ * regexp ?-nocase? ?--? staticString $var
+ * regexp ?-nocase? ?--? {^staticString$} $var
+ */
+
+ if (parsePtr->numWords < 3) {
+ return TCL_ERROR;
+ }
+
+ simple = 0;
+ nocase = 0;
+ sawLast = 0;
+ varTokenPtr = parsePtr->tokenPtr;
+
+ /*
+ * We only look for -nocase and -- as options. Everything else gets pushed
+ * to runtime execution. This is different than regexp's runtime option
+ * handling, but satisfies our stricter needs.
+ */
+
+ for (i = 1; i < parsePtr->numWords - 2; i++) {
+ varTokenPtr = TokenAfter(varTokenPtr);
+ if (varTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
+ /*
+ * Not a simple string, so punt to runtime.
+ */
+
+ return TCL_ERROR;
+ }
+ str = varTokenPtr[1].start;
+ len = varTokenPtr[1].size;
+ if ((len == 2) && (str[0] == '-') && (str[1] == '-')) {
+ sawLast++;
+ i++;
+ break;
+ } else if ((len > 1) && (strncmp(str,"-nocase",(unsigned)len) == 0)) {
+ nocase = 1;
+ } else {
+ /*
+ * Not an option we recognize.
+ */
+
+ return TCL_ERROR;
+ }
+ }
+
+ if ((parsePtr->numWords - i) != 2) {
+ /*
+ * We don't support capturing to variables.
+ */
+
+ return TCL_ERROR;
+ }
+
+ /*
+ * Get the regexp string. If it is not a simple string or can't be
+ * converted to a glob pattern, push the word for the INST_REGEXP.
+ * Keep changes here in sync with TclCompileSwitchCmd Switch_Regexp.
+ */
+
+ varTokenPtr = TokenAfter(varTokenPtr);
+
+ if (varTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) {
+ Tcl_DString ds;
+
+ str = varTokenPtr[1].start;
+ len = varTokenPtr[1].size;
+
+ /*
+ * If it has a '-', it could be an incorrectly formed regexp command.
+ */
+
+ if ((*str == '-') && !sawLast) {
+ return TCL_ERROR;
+ }
+
+ if (len == 0) {
+ /*
+ * The semantics of regexp are always match on re == "".
+ */
+
+ PushStringLiteral(envPtr, "1");
+ return TCL_OK;
+ }
+
+ /*
+ * Attempt to convert pattern to glob. If successful, push the
+ * converted pattern as a literal.
+ */
+
+ if (TclReToGlob(NULL, varTokenPtr[1].start, len, &ds, &exact)
+ == TCL_OK) {
+ simple = 1;
+ PushLiteral(envPtr, Tcl_DStringValue(&ds),Tcl_DStringLength(&ds));
+ Tcl_DStringFree(&ds);
+ }
+ }
+
+ if (!simple) {
+ CompileWord(envPtr, varTokenPtr, interp, parsePtr->numWords-2);
+ }
+
+ /*
+ * Push the string arg.
+ */
+
+ varTokenPtr = TokenAfter(varTokenPtr);
+ CompileWord(envPtr, varTokenPtr, interp, parsePtr->numWords-1);
+
+ if (simple) {
+ if (exact && !nocase) {
+ TclEmitOpcode( INST_STR_EQ, envPtr);
+ } else {
+ TclEmitInstInt1( INST_STR_MATCH, nocase, envPtr);
+ }
+ } else {
+ /*
+ * Pass correct RE compile flags. We use only Int1 (8-bit), but
+ * that handles all the flags we want to pass.
+ * Don't use TCL_REG_NOSUB as we may have backrefs.
+ */
+
+ int cflags = TCL_REG_ADVANCED | (nocase ? TCL_REG_NOCASE : 0);
+
+ TclEmitInstInt1( INST_REGEXP, cflags, envPtr);
+ }
+
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileRegsubCmd --
+ *
+ * Procedure called to compile the "regsub" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "regsub" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileRegsubCmd(
+ Tcl_Interp *interp, /* Tcl interpreter for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the
+ * command. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds the resulting instructions. */
+{
+ /*
+ * We only compile the case with [regsub -all] where the pattern is both
+ * known at compile time and simple (i.e., no RE metacharacters). That is,
+ * the pattern must be translatable into a glob like "*foo*" with no other
+ * glob metacharacters inside it; there must be some "foo" in there too.
+ * The substitution string must also be known at compile time and free of
+ * metacharacters ("\digit" and "&"). Finally, there must not be a
+ * variable mentioned in the [regsub] to write the result back to (because
+ * we can't get the count of substitutions that would be the result in
+ * that case). The key is that these are the conditions under which a
+ * [string map] could be used instead, in particular a [string map] of the
+ * form we can compile to bytecode.
+ *
+ * In short, we look for:
+ *
+ * regsub -all [--] simpleRE string simpleReplacement
+ *
+ * The only optional part is the "--", and no other options are handled.
+ */
+
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Token *tokenPtr, *stringTokenPtr;
+ Tcl_Obj *patternObj = NULL, *replacementObj = NULL;
+ Tcl_DString pattern;
+ const char *bytes;
+ int len, exact, result = TCL_ERROR;
+
+ if (parsePtr->numWords < 5 || parsePtr->numWords > 6) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Parse the "-all", which must be the first argument (other options not
+ * supported, non-"-all" substitution we can't compile).
+ */
+
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size != 4
+ || strncmp(tokenPtr[1].start, "-all", 4)) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Get the pattern into patternObj, checking for "--" in the process.
+ */
+
+ Tcl_DStringInit(&pattern);
+ tokenPtr = TokenAfter(tokenPtr);
+ patternObj = Tcl_NewObj();
+ if (!TclWordKnownAtCompileTime(tokenPtr, patternObj)) {
+ goto done;
+ }
+ if (Tcl_GetString(patternObj)[0] == '-') {
+ if (strcmp(Tcl_GetString(patternObj), "--") != 0
+ || parsePtr->numWords == 5) {
+ goto done;
+ }
+ tokenPtr = TokenAfter(tokenPtr);
+ Tcl_DecrRefCount(patternObj);
+ patternObj = Tcl_NewObj();
+ if (!TclWordKnownAtCompileTime(tokenPtr, patternObj)) {
+ goto done;
+ }
+ } else if (parsePtr->numWords == 6) {
+ goto done;
+ }
+
+ /*
+ * Identify the code which produces the string to apply the substitution
+ * to (stringTokenPtr), and the replacement string (into replacementObj).
+ */
+
+ stringTokenPtr = TokenAfter(tokenPtr);
+ tokenPtr = TokenAfter(stringTokenPtr);
+ replacementObj = Tcl_NewObj();
+ if (!TclWordKnownAtCompileTime(tokenPtr, replacementObj)) {
+ goto done;
+ }
+
+ /*
+ * Next, higher-level checks. Is the RE a very simple glob? Is the
+ * replacement "simple"?
+ */
+
+ bytes = Tcl_GetStringFromObj(patternObj, &len);
+ if (TclReToGlob(NULL, bytes, len, &pattern, &exact) != TCL_OK || exact) {
+ goto done;
+ }
+ bytes = Tcl_DStringValue(&pattern);
+ if (*bytes++ != '*') {
+ goto done;
+ }
+ while (1) {
+ switch (*bytes) {
+ case '*':
+ if (bytes[1] == '\0') {
+ /*
+ * OK, we've proved there are no metacharacters except for the
+ * '*' at each end.
+ */
+
+ len = Tcl_DStringLength(&pattern) - 2;
+ if (len > 0) {
+ goto isSimpleGlob;
+ }
+
+ /*
+ * The pattern is "**"! I believe that should be impossible,
+ * but we definitely can't handle that at all.
+ */
+ }
+ case '\0': case '?': case '[': case '\\':
+ goto done;
+ }
+ bytes++;
+ }
+ isSimpleGlob:
+ for (bytes = Tcl_GetString(replacementObj); *bytes; bytes++) {
+ switch (*bytes) {
+ case '\\': case '&':
+ goto done;
+ }
+ }
+
+ /*
+ * Proved the simplicity constraints! Time to issue the code.
+ */
+
+ result = TCL_OK;
+ bytes = Tcl_DStringValue(&pattern) + 1;
+ PushLiteral(envPtr, bytes, len);
+ bytes = Tcl_GetStringFromObj(replacementObj, &len);
+ PushLiteral(envPtr, bytes, len);
+ CompileWord(envPtr, stringTokenPtr, interp, parsePtr->numWords-2);
+ TclEmitOpcode( INST_STR_MAP, envPtr);
+
+ done:
+ Tcl_DStringFree(&pattern);
+ if (patternObj) {
+ Tcl_DecrRefCount(patternObj);
+ }
+ if (replacementObj) {
+ Tcl_DecrRefCount(replacementObj);
+ }
+ return result;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileReturnCmd --
+ *
+ * Procedure called to compile the "return" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "return" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileReturnCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ /*
+ * General syntax: [return ?-option value ...? ?result?]
+ * An even number of words means an explicit result argument is present.
+ */
+ int level, code, objc, size, status = TCL_OK;
+ int numWords = parsePtr->numWords;
+ int explicitResult = (0 == (numWords % 2));
+ int numOptionWords = numWords - 1 - explicitResult;
+ Tcl_Obj *returnOpts, **objv;
+ Tcl_Token *wordTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ DefineLineInformation; /* TIP #280 */
+
+ /*
+ * Check for special case which can always be compiled:
+ * return -options <opts> <msg>
+ * Unlike the normal [return] compilation, this version does everything at
+ * runtime so it can handle arbitrary words and not just literals. Note
+ * that if INST_RETURN_STK wasn't already needed for something else
+ * ('finally' clause processing) this piece of code would not be present.
+ */
+
+ if ((numWords == 4) && (wordTokenPtr->type == TCL_TOKEN_SIMPLE_WORD)
+ && (wordTokenPtr[1].size == 8)
+ && (strncmp(wordTokenPtr[1].start, "-options", 8) == 0)) {
+ Tcl_Token *optsTokenPtr = TokenAfter(wordTokenPtr);
+ Tcl_Token *msgTokenPtr = TokenAfter(optsTokenPtr);
+
+ CompileWord(envPtr, optsTokenPtr, interp, 2);
+ CompileWord(envPtr, msgTokenPtr, interp, 3);
+ TclEmitOpcode(INST_RETURN_STK, envPtr);
+ return TCL_OK;
+ }
+
+ /*
+ * Allocate some working space.
+ */
+
+ objv = TclStackAlloc(interp, numOptionWords * sizeof(Tcl_Obj *));
+
+ /*
+ * Scan through the return options. If any are unknown at compile time,
+ * there is no value in bytecompiling. Save the option values known in an
+ * objv array for merging into a return options dictionary.
+ */
+
+ for (objc = 0; objc < numOptionWords; objc++) {
+ objv[objc] = Tcl_NewObj();
+ Tcl_IncrRefCount(objv[objc]);
+ if (!TclWordKnownAtCompileTime(wordTokenPtr, objv[objc])) {
+ /*
+ * Non-literal, so punt to run-time.
+ */
+
+ for (; objc>=0 ; objc--) {
+ TclDecrRefCount(objv[objc]);
+ }
+ TclStackFree(interp, objv);
+ goto issueRuntimeReturn;
+ }
+ wordTokenPtr = TokenAfter(wordTokenPtr);
+ }
+ status = TclMergeReturnOptions(interp, objc, objv,
+ &returnOpts, &code, &level);
+ while (--objc >= 0) {
+ TclDecrRefCount(objv[objc]);
+ }
+ TclStackFree(interp, objv);
+ if (TCL_ERROR == status) {
+ /*
+ * Something was bogus in the return options. Clear the error message,
+ * and report back to the compiler that this must be interpreted at
+ * runtime.
+ */
+
+ Tcl_ResetResult(interp);
+ return TCL_ERROR;
+ }
+
+ /*
+ * All options are known at compile time, so we're going to bytecompile.
+ * Emit instructions to push the result on the stack.
+ */
+
+ if (explicitResult) {
+ CompileWord(envPtr, wordTokenPtr, interp, numWords-1);
+ } else {
+ /*
+ * No explict result argument, so default result is empty string.
+ */
+
+ PushStringLiteral(envPtr, "");
+ }
+
+ /*
+ * Check for optimization: When [return] is in a proc, and there's no
+ * enclosing [catch], and there are no return options, then the INST_DONE
+ * instruction is equivalent, and may be more efficient.
+ */
+
+ if (numOptionWords == 0 && envPtr->procPtr != NULL) {
+ /*
+ * We have default return options and we're in a proc ...
+ */
+
+ int index = envPtr->exceptArrayNext - 1;
+ int enclosingCatch = 0;
+
+ while (index >= 0) {
+ ExceptionRange range = envPtr->exceptArrayPtr[index];
+
+ if ((range.type == CATCH_EXCEPTION_RANGE)
+ && (range.catchOffset == -1)) {
+ enclosingCatch = 1;
+ break;
+ }
+ index--;
+ }
+ if (!enclosingCatch) {
+ /*
+ * ... and there is no enclosing catch. Issue the maximally
+ * efficient exit instruction.
+ */
+
+ Tcl_DecrRefCount(returnOpts);
+ TclEmitOpcode(INST_DONE, envPtr);
+ return TCL_OK;
+ }
+ }
+
+ /* Optimize [return -level 0 $x]. */
+ Tcl_DictObjSize(NULL, returnOpts, &size);
+ if (size == 0 && level == 0 && code == TCL_OK) {
+ Tcl_DecrRefCount(returnOpts);
+ return TCL_OK;
+ }
+
+ /*
+ * Could not use the optimization, so we push the return options dict, and
+ * emit the INST_RETURN_IMM instruction with code and level as operands.
+ */
+
+ CompileReturnInternal(envPtr, INST_RETURN_IMM, code, level, returnOpts);
+ return TCL_OK;
+
+ issueRuntimeReturn:
+ /*
+ * Assemble the option dictionary (as a list as that's good enough).
+ */
+
+ wordTokenPtr = TokenAfter(parsePtr->tokenPtr);
+ for (objc=1 ; objc<=numOptionWords ; objc++) {
+ CompileWord(envPtr, wordTokenPtr, interp, objc);
+ wordTokenPtr = TokenAfter(wordTokenPtr);
+ }
+ TclEmitInstInt4(INST_LIST, numOptionWords, envPtr);
+
+ /*
+ * Push the result.
+ */
+
+ if (explicitResult) {
+ CompileWord(envPtr, wordTokenPtr, interp, numWords-1);
+ } else {
+ PushStringLiteral(envPtr, "");
+ }
+
+ /*
+ * Issue the RETURN itself.
+ */
+
+ TclEmitOpcode(INST_RETURN_STK, envPtr);
+ return TCL_OK;
+}
+
+static void
+CompileReturnInternal(
+ CompileEnv *envPtr,
+ unsigned char op,
+ int code,
+ int level,
+ Tcl_Obj *returnOpts)
+{
+ TclEmitPush(TclAddLiteralObj(envPtr, returnOpts, NULL), envPtr);
+ TclEmitInstInt4(op, code, envPtr);
+ TclEmitInt4(level, envPtr);
+}
+
+void
+TclCompileSyntaxError(
+ Tcl_Interp *interp,
+ CompileEnv *envPtr)
+{
+ Tcl_Obj *msg = Tcl_GetObjResult(interp);
+ int numBytes;
+ const char *bytes = TclGetStringFromObj(msg, &numBytes);
+
+ TclErrorStackResetIf(interp, bytes, numBytes);
+ TclEmitPush(TclRegisterNewLiteral(envPtr, bytes, numBytes), envPtr);
+ CompileReturnInternal(envPtr, INST_SYNTAX, TCL_ERROR, 0,
+ TclNoErrorStack(interp, Tcl_GetReturnOptions(interp, TCL_ERROR)));
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileUpvarCmd --
+ *
+ * Procedure called to compile the "upvar" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "upvar" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileUpvarCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *tokenPtr, *otherTokenPtr, *localTokenPtr;
+ int simpleVarName, isScalar, localIndex, numWords, i;
+ DefineLineInformation; /* TIP #280 */
+ Tcl_Obj *objPtr = Tcl_NewObj();
+
+ if (envPtr->procPtr == NULL) {
+ Tcl_DecrRefCount(objPtr);
+ return TCL_ERROR;
+ }
+
+ numWords = parsePtr->numWords;
+ if (numWords < 3) {
+ Tcl_DecrRefCount(objPtr);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Push the frame index if it is known at compile time
+ */
+
+ tokenPtr = TokenAfter(parsePtr->tokenPtr);
+ if (TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
+ CallFrame *framePtr;
+ const Tcl_ObjType *newTypePtr, *typePtr = objPtr->typePtr;
+
+ /*
+ * Attempt to convert to a level reference. Note that TclObjGetFrame
+ * only changes the obj type when a conversion was successful.
+ */
+
+ TclObjGetFrame(interp, objPtr, &framePtr);
+ newTypePtr = objPtr->typePtr;
+ Tcl_DecrRefCount(objPtr);
+
+ if (newTypePtr != typePtr) {
+ if (numWords%2) {
+ return TCL_ERROR;
+ }
+ CompileWord(envPtr, tokenPtr, interp, 1);
+ otherTokenPtr = TokenAfter(tokenPtr);
+ i = 4;
+ } else {
+ if (!(numWords%2)) {
+ return TCL_ERROR;
+ }
+ PushStringLiteral(envPtr, "1");
+ otherTokenPtr = tokenPtr;
+ i = 3;
+ }
+ } else {
+ Tcl_DecrRefCount(objPtr);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Loop over the (otherVar, thisVar) pairs. If any of the thisVar is not a
+ * local variable, return an error so that the non-compiled command will
+ * be called at runtime.
+ */
+
+ for (; i<=numWords; i+=2, otherTokenPtr = TokenAfter(localTokenPtr)) {
+ localTokenPtr = TokenAfter(otherTokenPtr);
+
+ CompileWord(envPtr, otherTokenPtr, interp, 1);
+ PushVarNameWord(interp, localTokenPtr, envPtr, 0,
+ &localIndex, &simpleVarName, &isScalar, 1);
+
+ if ((localIndex < 0) || !isScalar) {
+ return TCL_ERROR;
+ }
+ TclEmitInstInt4( INST_UPVAR, localIndex, envPtr);
+ }
+
+ /*
+ * Pop the frame index, and set the result to empty
+ */
+
+ TclEmitOpcode( INST_POP, envPtr);
+ PushStringLiteral(envPtr, "");
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclCompileVariableCmd --
+ *
+ * Procedure called to compile the "variable" command.
+ *
+ * Results:
+ * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
+ * evaluation to runtime.
+ *
+ * Side effects:
+ * Instructions are added to envPtr to execute the "variable" command at
+ * runtime.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclCompileVariableCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Token *varTokenPtr, *valueTokenPtr;
+ int localIndex, numWords, i;
+ DefineLineInformation; /* TIP #280 */
+
+ numWords = parsePtr->numWords;
+ if (numWords < 2) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Bail out if not compiling a proc body
+ */
+
+ if (envPtr->procPtr == NULL) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Loop over the (var, value) pairs.
+ */
+
+ valueTokenPtr = parsePtr->tokenPtr;
+ for (i=1; i<numWords; i+=2) {
+ varTokenPtr = TokenAfter(valueTokenPtr);
+ valueTokenPtr = TokenAfter(varTokenPtr);
+
+ localIndex = IndexTailVarIfKnown(interp, varTokenPtr, envPtr);
+
+ if (localIndex < 0) {
+ return TCL_ERROR;
+ }
+
+ CompileWord(envPtr, varTokenPtr, interp, i);
+ TclEmitInstInt4( INST_VARIABLE, localIndex, envPtr);
+
+ if (i+1 < numWords) {
+ /*
+ * A value has been given: set the variable, pop the value
+ */
+
+ CompileWord(envPtr, valueTokenPtr, interp, i+1);
+ Emit14Inst( INST_STORE_SCALAR, localIndex, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ }
+ }
+
+ /*
+ * Set the result to empty
+ */
+
+ PushStringLiteral(envPtr, "");
+ return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * IndexTailVarIfKnown --
+ *
+ * Procedure used in compiling [global] and [variable] commands. It
+ * inspects the variable name described by varTokenPtr and, if the tail
+ * is known at compile time, defines a corresponding local variable.
+ *
+ * Results:
+ * Returns the variable's index in the table of compiled locals if the
+ * tail is known at compile time, or -1 otherwise.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+IndexTailVarIfKnown(
+ Tcl_Interp *interp,
+ Tcl_Token *varTokenPtr, /* Token representing the variable name */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ Tcl_Obj *tailPtr;
+ const char *tailName, *p;
+ int len, n = varTokenPtr->numComponents;
+ Tcl_Token *lastTokenPtr;
+ int full, localIndex;
+
+ /*
+ * Determine if the tail is (a) known at compile time, and (b) not an
+ * array element. Should any of these fail, return an error so that the
+ * non-compiled command will be called at runtime.
+ *
+ * In order for the tail to be known at compile time, the last token in
+ * the word has to be constant and contain "::" if it is not the only one.
+ */
+
+ if (!EnvHasLVT(envPtr)) {
+ return -1;
+ }
+
+ TclNewObj(tailPtr);
+ if (TclWordKnownAtCompileTime(varTokenPtr, tailPtr)) {
+ full = 1;
+ lastTokenPtr = varTokenPtr;
+ } else {
+ full = 0;
+ lastTokenPtr = varTokenPtr + n;
+ if (!TclWordKnownAtCompileTime(lastTokenPtr, tailPtr)) {
+ Tcl_DecrRefCount(tailPtr);
+ return -1;
+ }
+ }
+
+ tailName = TclGetStringFromObj(tailPtr, &len);
+
+ if (len) {
+ if (*(tailName+len-1) == ')') {
+ /*
+ * Possible array: bail out
+ */
+
+ Tcl_DecrRefCount(tailPtr);
+ return -1;
+ }
+
+ /*
+ * Get the tail: immediately after the last '::'
+ */
+
+ for (p = tailName + len -1; p > tailName; p--) {
+ if ((*p == ':') && (*(p-1) == ':')) {
+ p++;
+ break;
+ }
+ }
+ if (!full && (p == tailName)) {
+ /*
+ * No :: in the last component.
+ */
+
+ Tcl_DecrRefCount(tailPtr);
+ return -1;
+ }
+ len -= p - tailName;
+ tailName = p;
+ }
+
+ localIndex = TclFindCompiledLocal(tailName, len, 1, envPtr);
+ Tcl_DecrRefCount(tailPtr);
+ return localIndex;
+}
+
+int
+TclCompileObjectSelfCmd(
+ Tcl_Interp *interp, /* Used for error reporting. */
+ Tcl_Parse *parsePtr, /* Points to a parse structure for the command
+ * created by Tcl_ParseCommand. */
+ Command *cmdPtr, /* Points to defintion of command being
+ * compiled. */
+ CompileEnv *envPtr) /* Holds resulting instructions. */
+{
+ /*
+ * We only handle [self] and [self object] (which is the same operation).
+ * These are the only very common operations on [self] for which
+ * bytecoding is at all reasonable.
+ */
+
+ if (parsePtr->numWords == 1) {
+ goto compileSelfObject;
+ } else if (parsePtr->numWords == 2) {
+ Tcl_Token *tokenPtr = TokenAfter(parsePtr->tokenPtr), *subcmd;
+
+ if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD || tokenPtr[1].size==0) {
+ return TCL_ERROR;
+ }
+
+ subcmd = tokenPtr + 1;
+ if (strncmp(subcmd->start, "object", subcmd->size) == 0) {
+ goto compileSelfObject;
+ } else if (strncmp(subcmd->start, "namespace", subcmd->size) == 0) {
+ goto compileSelfNamespace;
+ }
+ }
+
+ /*
+ * Can't compile; handle with runtime call.
+ */
+
+ return TCL_ERROR;
+
+ compileSelfObject:
+
+ /*
+ * This delegates the entire problem to a single opcode.
+ */
+
+ TclEmitOpcode( INST_TCLOO_SELF, envPtr);
+ return TCL_OK;
+
+ compileSelfNamespace:
+
+ /*
+ * This is formally only correct with TclOO methods as they are currently
+ * implemented; it assumes that the current namespace is invariably when a
+ * TclOO context is present is the object's namespace, and that's
+ * technically only something that's a matter of current policy. But it
+ * avoids creating another opcode, so that's all good!
+ */
+
+ TclEmitOpcode( INST_TCLOO_SELF, envPtr);
+ TclEmitOpcode( INST_POP, envPtr);
+ TclEmitOpcode( INST_NS_CURRENT, envPtr);
+ return TCL_OK;
+}
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 4
+ * fill-column: 78
+ * End:
+ */
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index f73beca..f2017f0 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -27,11 +27,6 @@ static void FreeJumptableInfo(ClientData clientData);
static void PrintJumptableInfo(ClientData clientData,
Tcl_Obj *appendObj, ByteCode *codePtr,
unsigned int pcOffset);
-static int PushVarName(Tcl_Interp *interp,
- Tcl_Token *varTokenPtr, CompileEnv *envPtr,
- int flags, int *localIndexPtr,
- int *simpleVarNamePtr, int *isScalarPtr,
- int line, int *clNext);
static int CompileAssociativeBinaryOpCmd(Tcl_Interp *interp,
Tcl_Parse *parsePtr, const char *identity,
int instruction, CompileEnv *envPtr);
@@ -69,53 +64,6 @@ static int IssueTryInstructions(Tcl_Interp *interp,
int *optionVarIndices, Tcl_Token **handlerTokens);
/*
- * Macro that encapsulates an efficiency trick that avoids a function call for
- * the simplest of compiles. The ANSI C "prototype" for this macro is:
- *
- * static void CompileWord(CompileEnv *envPtr, Tcl_Token *tokenPtr,
- * Tcl_Interp *interp, int word);
- */
-
-#define CompileWord(envPtr, tokenPtr, interp, word) \
- if ((tokenPtr)->type == TCL_TOKEN_SIMPLE_WORD) { \
- TclEmitPush(TclRegisterNewLiteral((envPtr), (tokenPtr)[1].start, \
- (tokenPtr)[1].size), (envPtr)); \
- } else { \
- envPtr->line = mapPtr->loc[eclIndex].line[word]; \
- envPtr->clNext = mapPtr->loc[eclIndex].next[word]; \
- TclCompileTokens((interp), (tokenPtr)+1, (tokenPtr)->numComponents, \
- (envPtr)); \
- }
-
-/*
- * TIP #280: Remember the per-word line information of the current command. An
- * index is used instead of a pointer as recursive compilation may reallocate,
- * i.e. move, the array. This is also the reason to save the nuloc now, it may
- * change during the course of the function.
- *
- * Macro to encapsulate the variable definition and setup.
- */
-
-#define DefineLineInformation \
- ExtCmdLoc *mapPtr = envPtr->extCmdMapPtr; \
- int eclIndex = mapPtr->nuloc - 1
-
-#define SetLineInformation(word) \
- envPtr->line = mapPtr->loc[eclIndex].line[(word)]; \
- envPtr->clNext = mapPtr->loc[eclIndex].next[(word)]
-
-#define PushVarNameWord(i,v,e,f,l,s,sc,word) \
- PushVarName(i,v,e,f,l,s,sc, \
- mapPtr->loc[eclIndex].line[(word)], \
- mapPtr->loc[eclIndex].next[(word)])
-
-/*
- * Flags bits used by PushVarName.
- */
-
-#define TCL_NO_LARGE_INDEX 1 /* Do not return localIndex value > 255 */
-
-/*
* The structures below define the AuxData types defined in this file.
*/
@@ -140,7 +88,7 @@ const AuxDataType tclJumptableInfoType = {
#define BODY(token,index) \
SetLineInformation((index));CompileBody(envPtr,(token),interp)
#define PUSH(str) \
- PushLiteral(envPtr,(str),strlen(str))
+ PushStringLiteral(envPtr, str)
#define JUMP(var,name) \
(var) = CurrentOffset(envPtr);TclEmitInstInt4(INST_##name,0,envPtr)
#define FIXJUMP(var) \
@@ -809,7 +757,7 @@ TclSubstCompile(
tokenPtr = parse.tokenPtr;
if (tokenPtr->type != TCL_TOKEN_TEXT && tokenPtr->type != TCL_TOKEN_BS) {
- PushLiteral(envPtr, "", 0);
+ PUSH("");
count++;
}
@@ -990,7 +938,7 @@ TclSubstCompile(
* that is too low. Here we manually fix that up.
*/
- TclAdjustStackDepth(5, envPtr);
+ TclAdjustStackDepth(4, envPtr);
/* OK destination */
if (TclFixupForwardJumpToHere(envPtr, &okFixup, 127)) {
@@ -1472,7 +1420,7 @@ IssueSwitchChainedTests(
* when the RE == "".
*/
- PushLiteral(envPtr, "1", 1);
+ PUSH("1");
break;
}
@@ -1597,7 +1545,7 @@ IssueSwitchChainedTests(
if (!foundDefault) {
OP( POP);
- PushLiteral(envPtr, "", 0);
+ PUSH("");
}
/*
@@ -1816,7 +1764,7 @@ IssueSwitchJumpTable(
envPtr->currStackDepth = savedStackDepth;
TclStoreInt4AtPtr(CurrentOffset(envPtr)-jumpToDefault,
envPtr->codeStart+jumpToDefault+1);
- PushLiteral(envPtr, "", 0);
+ PUSH("");
}
/*
@@ -2390,10 +2338,11 @@ IssueTryInstructions(
for (i=0 ; i<numHandlers ; i++) {
sprintf(buf, "%d", matchCodes[i]);
OP( DUP);
- PUSH( buf);
+ PushLiteral(envPtr, buf, strlen(buf));
OP( EQ);
JUMP(notCodeJumpSource, JUMP_FALSE4);
if (matchClauses[i]) {
+ const char *p;
Tcl_ListObjLength(NULL, matchClauses[i], &len);
/*
@@ -2405,7 +2354,8 @@ IssueTryInstructions(
OP4( DICT_GET, 1);
TclAdjustStackDepth(-1, envPtr);
OP44( LIST_RANGE_IMM, 0, len-1);
- PUSH( TclGetString(matchClauses[i]));
+ p = Tcl_GetStringFromObj(matchClauses[i], &len);
+ PushLiteral(envPtr, p, len);
OP( STR_EQ);
JUMP(notECJumpSource, JUMP_FALSE4);
} else {
@@ -2545,10 +2495,11 @@ IssueTryFinallyInstructions(
for (i=0 ; i<numHandlers ; i++) {
sprintf(buf, "%d", matchCodes[i]);
OP( DUP);
- PUSH( buf);
+ PushLiteral(envPtr, buf, strlen(buf));
OP( EQ);
JUMP(notCodeJumpSource, JUMP_FALSE4);
if (matchClauses[i]) {
+ const char *p;
Tcl_ListObjLength(NULL, matchClauses[i], &len);
/*
@@ -2560,7 +2511,8 @@ IssueTryFinallyInstructions(
OP4( DICT_GET, 1);
TclAdjustStackDepth(-1, envPtr);
OP44( LIST_RANGE_IMM, 0, len-1);
- PUSH( TclGetString(matchClauses[i]));
+ p = Tcl_GetStringFromObj(matchClauses[i], &len);
+ PushLiteral(envPtr, p, len);
OP( STR_EQ);
JUMP(notECJumpSource, JUMP_FALSE4);
} else {
@@ -2796,7 +2748,7 @@ TclCompileUnsetCmd(
varTokenPtr = TokenAfter(varTokenPtr);
}
- PushLiteral(envPtr, "", 0);
+ PUSH("");
return TCL_OK;
}
@@ -2975,7 +2927,7 @@ TclCompileWhileCmd(
pushResult:
envPtr->currStackDepth = savedStackDepth;
- PushLiteral(envPtr, "", 0);
+ PUSH("");
return TCL_OK;
}
@@ -3011,7 +2963,7 @@ TclCompileYieldCmd(
}
if (parsePtr->numWords == 1) {
- PushLiteral(envPtr, "", 0);
+ PUSH("");
} else {
DefineLineInformation; /* TIP #280 */
Tcl_Token *valueTokenPtr = TokenAfter(parsePtr->tokenPtr);
@@ -3025,246 +2977,6 @@ TclCompileYieldCmd(
/*
*----------------------------------------------------------------------
*
- * PushVarName --
- *
- * Procedure used in the compiling where pushing a variable name is
- * necessary (append, lappend, set).
- *
- * Results:
- * Returns TCL_OK for a successful compile. Returns TCL_ERROR to defer
- * evaluation to runtime.
- *
- * Side effects:
- * Instructions are added to envPtr to execute the "set" command at
- * runtime.
- *
- *----------------------------------------------------------------------
- */
-
-static int
-PushVarName(
- Tcl_Interp *interp, /* Used for error reporting. */
- Tcl_Token *varTokenPtr, /* Points to a variable token. */
- CompileEnv *envPtr, /* Holds resulting instructions. */
- int flags, /* TCL_NO_LARGE_INDEX. */
- int *localIndexPtr, /* Must not be NULL. */
- int *simpleVarNamePtr, /* Must not be NULL. */
- int *isScalarPtr, /* Must not be NULL. */
- int line, /* Line the token starts on. */
- int *clNext) /* Reference to offset of next hidden cont.
- * line. */
-{
- register const char *p;
- const char *name, *elName;
- register int i, n;
- Tcl_Token *elemTokenPtr = NULL;
- int nameChars, elNameChars, simpleVarName, localIndex;
- int elemTokenCount = 0, allocedTokens = 0, removedParen = 0;
-
- /*
- * Decide if we can use a frame slot for the var/array name or if we need
- * to emit code to compute and push the name at runtime. We use a frame
- * slot (entry in the array of local vars) if we are compiling a procedure
- * body and if the name is simple text that does not include namespace
- * qualifiers.
- */
-
- simpleVarName = 0;
- name = elName = NULL;
- nameChars = elNameChars = 0;
- localIndex = -1;
-
- /*
- * Check not only that the type is TCL_TOKEN_SIMPLE_WORD, but whether
- * curly braces surround the variable name. This really matters for array
- * elements to handle things like
- * set {x($foo)} 5
- * which raises an undefined var error if we are not careful here.
- */
-
- if ((varTokenPtr->type == TCL_TOKEN_SIMPLE_WORD) &&
- (varTokenPtr->start[0] != '{')) {
- /*
- * A simple variable name. Divide it up into "name" and "elName"
- * strings. If it is not a local variable, look it up at runtime.
- */
-
- simpleVarName = 1;
-
- name = varTokenPtr[1].start;
- nameChars = varTokenPtr[1].size;
- if (name[nameChars-1] == ')') {
- /*
- * last char is ')' => potential array reference.
- */
-
- for (i=0,p=name ; i<nameChars ; i++,p++) {
- if (*p == '(') {
- elName = p + 1;
- elNameChars = nameChars - i - 2;
- nameChars = i;
- break;
- }
- }
-
- if ((elName != NULL) && elNameChars) {
- /*
- * An array element, the element name is a simple string:
- * assemble the corresponding token.
- */
-
- elemTokenPtr = TclStackAlloc(interp, sizeof(Tcl_Token));
- allocedTokens = 1;
- elemTokenPtr->type = TCL_TOKEN_TEXT;
- elemTokenPtr->start = elName;
- elemTokenPtr->size = elNameChars;
- elemTokenPtr->numComponents = 0;
- elemTokenCount = 1;
- }
- }
- } else if (((n = varTokenPtr->numComponents) > 1)
- && (varTokenPtr[1].type == TCL_TOKEN_TEXT)
- && (varTokenPtr[n].type == TCL_TOKEN_TEXT)
- && (varTokenPtr[n].start[varTokenPtr[n].size - 1] == ')')) {
- /*
- * Check for parentheses inside first token.
- */
-
- simpleVarName = 0;
- for (i = 0, p = varTokenPtr[1].start;
- i < varTokenPtr[1].size; i++, p++) {
- if (*p == '(') {
- simpleVarName = 1;
- break;
- }
- }
- if (simpleVarName) {
- int remainingChars;
-
- /*
- * Check the last token: if it is just ')', do not count it.
- * Otherwise, remove the ')' and flag so that it is restored at
- * the end.
- */
-
- if (varTokenPtr[n].size == 1) {
- n--;
- } else {
- varTokenPtr[n].size--;
- removedParen = n;
- }
-
- name = varTokenPtr[1].start;
- nameChars = p - varTokenPtr[1].start;
- elName = p + 1;
- remainingChars = (varTokenPtr[2].start - p) - 1;
- elNameChars = (varTokenPtr[n].start-p) + varTokenPtr[n].size - 2;
-
- if (remainingChars) {
- /*
- * Make a first token with the extra characters in the first
- * token.
- */
-
- elemTokenPtr = TclStackAlloc(interp, n * sizeof(Tcl_Token));
- allocedTokens = 1;
- elemTokenPtr->type = TCL_TOKEN_TEXT;
- elemTokenPtr->start = elName;
- elemTokenPtr->size = remainingChars;
- elemTokenPtr->numComponents = 0;
- elemTokenCount = n;
-
- /*
- * Copy the remaining tokens.
- */
-
- memcpy(elemTokenPtr+1, varTokenPtr+2,
- (n-1) * sizeof(Tcl_Token));
- } else {
- /*
- * Use the already available tokens.
- */
-
- elemTokenPtr = &varTokenPtr[2];
- elemTokenCount = n - 1;
- }
- }
- }
-
- if (simpleVarName) {
- /*
- * See whether name has any namespace separators (::'s).
- */
-
- int hasNsQualifiers = 0;
-
- for (i = 0, p = name; i < nameChars; i++, p++) {
- if ((*p == ':') && ((i+1) < nameChars) && (*(p+1) == ':')) {
- hasNsQualifiers = 1;
- break;
- }
- }
-
- /*
- * Look up the var name's index in the array of local vars in the proc
- * frame. If retrieving the var's value and it doesn't already exist,
- * push its name and look it up at runtime.
- */
-
- if (!hasNsQualifiers) {
- localIndex = TclFindCompiledLocal(name, nameChars,
- 1, envPtr);
- if ((flags & TCL_NO_LARGE_INDEX) && (localIndex > 255)) {
- /*
- * We'll push the name.
- */
-
- localIndex = -1;
- }
- }
- if (localIndex < 0) {
- PushLiteral(envPtr, name, nameChars);
- }
-
- /*
- * Compile the element script, if any.
- */
-
- if (elName != NULL) {
- if (elNameChars) {
- envPtr->line = line;
- envPtr->clNext = clNext;
- TclCompileTokens(interp, elemTokenPtr, elemTokenCount,
- envPtr);
- } else {
- PushLiteral(envPtr, "", 0);
- }
- }
- } else {
- /*
- * The var name isn't simple: compile and push it.
- */
-
- envPtr->line = line;
- envPtr->clNext = clNext;
- CompileTokens(envPtr, varTokenPtr, interp);
- }
-
- if (removedParen) {
- varTokenPtr[removedParen].size++;
- }
- if (allocedTokens) {
- TclStackFree(interp, elemTokenPtr);
- }
- *localIndexPtr = localIndex;
- *simpleVarNamePtr = simpleVarName;
- *isScalarPtr = (elName == NULL);
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
* CompileUnaryOpCmd --
*
* Utility routine to compile the unary operator commands.
@@ -3417,7 +3129,7 @@ CompileComparisonOpCmd(
DefineLineInformation; /* TIP #280 */
if (parsePtr->numWords < 3) {
- PushLiteral(envPtr, "1", 1);
+ PUSH("1");
} else if (parsePtr->numWords == 3) {
tokenPtr = TokenAfter(parsePtr->tokenPtr);
CompileWord(envPtr, tokenPtr, interp, 1);
@@ -3588,7 +3300,7 @@ TclCompilePowOpCmd(
CompileWord(envPtr, tokenPtr, interp, words);
}
if (parsePtr->numWords <= 2) {
- PushLiteral(envPtr, "1", 1);
+ PUSH("1");
words++;
}
while (--words > 1) {
@@ -3806,7 +3518,7 @@ TclCompileDivOpCmd(
return TCL_ERROR;
}
if (parsePtr->numWords == 2) {
- PushLiteral(envPtr, "1.0", 3);
+ PUSH("1.0");
}
for (words=1 ; words<parsePtr->numWords ; words++) {
tokenPtr = TokenAfter(tokenPtr);
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 0e98385..87e620c 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -14,6 +14,7 @@
#include "tclInt.h"
#include "tclCompile.h"
+#include <assert.h>
/*
* Table of all AuxData types.
@@ -309,7 +310,7 @@ InstructionDesc const tclInstructionTable[] = {
{"pushReturnOpts", 1, +1, 0, {OPERAND_NONE}},
/* Push the interpreter's return option dictionary as an object on the
* stack. */
- {"returnStk", 1, -2, 0, {OPERAND_NONE}},
+ {"returnStk", 1, -1, 0, {OPERAND_NONE}},
/* Compiled [return]; options and result are on the stack, code and
* level are in the options. */
@@ -534,6 +535,11 @@ InstructionDesc const tclInstructionTable[] = {
* the word at the top of the stack;
* <objc,objv> = <op4,top op4 after popping 1> */
+ {"listConcat", 1, -1, 0, {OPERAND_NONE}},
+ /* Concatenates the two lists at the top of the stack into a single
+ * list and pushes that resulting list onto the stack.
+ * Stack: ... list1 list2 => ... [lconcat list1 list2] */
+
{NULL, 0, 0, 0, {OPERAND_NONE}}
};
@@ -551,9 +557,14 @@ static void EnterCmdExtentData(CompileEnv *envPtr,
int cmdNumber, int numSrcBytes, int numCodeBytes);
static void EnterCmdStartData(CompileEnv *envPtr,
int cmdNumber, int srcOffset, int codeOffset);
+static Command * FindCompiledCommandFromToken(Tcl_Interp *interp,
+ Tcl_Token *tokenPtr);
static void FreeByteCodeInternalRep(Tcl_Obj *objPtr);
static void FreeSubstCodeInternalRep(Tcl_Obj *objPtr);
static int GetCmdLocEncodingSize(CompileEnv *envPtr);
+static int IsCompactibleCompileEnv(Tcl_Interp *interp,
+ CompileEnv *envPtr);
+static void PeepholeOptimize(CompileEnv *envPtr);
#ifdef TCL_COMPILE_STATS
static void RecordByteCodeStats(ByteCode *codePtr);
#endif /* TCL_COMPILE_STATS */
@@ -614,6 +625,13 @@ static const Tcl_ObjType tclInstNameType = {
UpdateStringOfInstName, /* updateStringProc */
NULL, /* setFromAnyProc */
};
+
+/*
+ * Helper macros.
+ */
+
+#define TclIncrUInt4AtPtr(ptr, delta) \
+ TclStoreInt4AtPtr(TclGetUInt4AtPtr(ptr)+(delta), (ptr));
/*
*----------------------------------------------------------------------
@@ -654,6 +672,7 @@ TclSetByteCodeFromAny(
* in frame. */
int length, result = TCL_OK;
const char *stringPtr;
+ Proc *procPtr = iPtr->compiledProcPtr;
ContLineLoc *clLocPtr;
#ifdef TCL_COMPILE_DEBUG
@@ -705,6 +724,38 @@ TclSetByteCodeFromAny(
TclEmitOpcode(INST_DONE, &compEnv);
/*
+ * Check for optimizations!
+ *
+ * Test if the generated code is free of most hazards; if so, recompile
+ * but with generation of INST_START_CMD disabled. This produces somewhat
+ * faster code in some cases, and more compact code in more.
+ */
+
+ if (Tcl_GetMaster(interp) == NULL &&
+ !Tcl_LimitTypeEnabled(interp, TCL_LIMIT_COMMANDS|TCL_LIMIT_TIME)
+ && IsCompactibleCompileEnv(interp, &compEnv)) {
+ TclFreeCompileEnv(&compEnv);
+ iPtr->compiledProcPtr = procPtr;
+ TclInitCompileEnv(interp, &compEnv, stringPtr, length,
+ iPtr->invokeCmdFramePtr, iPtr->invokeWord);
+ if (clLocPtr) {
+ compEnv.clLoc = clLocPtr;
+ compEnv.clNext = &compEnv.clLoc->loc[0];
+ Tcl_Preserve(compEnv.clLoc);
+ }
+ compEnv.atCmdStart = 2; /* The disabling magic. */
+ TclCompileScript(interp, stringPtr, length, &compEnv);
+ TclEmitOpcode(INST_DONE, &compEnv);
+ }
+
+ /*
+ * Apply some peephole optimizations that can cross specific/generic
+ * instruction generator boundaries.
+ */
+
+ PeepholeOptimize(&compEnv);
+
+ /*
* Invoke the compilation hook procedure if one exists.
*/
@@ -973,6 +1024,202 @@ TclCleanupByteCode(
}
/*
+ * ---------------------------------------------------------------------
+ *
+ * IsCompactibleCompileEnv --
+ *
+ * Checks to see if we may apply some basic compaction optimizations to a
+ * piece of bytecode. Idempotent.
+ *
+ * ---------------------------------------------------------------------
+ */
+
+static int
+IsCompactibleCompileEnv(
+ Tcl_Interp *interp,
+ CompileEnv *envPtr)
+{
+ unsigned char *pc;
+ int size;
+
+ /*
+ * Special: procedures in the '::tcl' namespace (or its children) are
+ * considered to be well-behaved and so can have compaction applied even
+ * if it would otherwise be invalid.
+ */
+
+ if (envPtr->procPtr != NULL && envPtr->procPtr->cmdPtr != NULL
+ && envPtr->procPtr->cmdPtr->nsPtr != NULL) {
+ Namespace *nsPtr = envPtr->procPtr->cmdPtr->nsPtr;
+
+ if (strcmp(nsPtr->fullName, "::tcl") == 0
+ || strncmp(nsPtr->fullName, "::tcl::", 7) == 0) {
+ return 1;
+ }
+ }
+
+ /*
+ * Go through and ensure that no operation involved can cause a desired
+ * change of bytecode sequence during running. This comes down to ensuring
+ * that there are no mapped variables (due to traces) or calls to external
+ * commands (traces, [uplevel] trickery). This is actually a very
+ * conservative check; it turns down a lot of code that is OK in practice.
+ */
+
+ for (pc = envPtr->codeStart ; pc < envPtr->codeNext ; pc += size) {
+ switch (*pc) {
+ /* Invokes */
+ case INST_INVOKE_STK1:
+ case INST_INVOKE_STK4:
+ case INST_INVOKE_EXPANDED:
+ case INST_INVOKE_REPLACE:
+ return 0;
+ /* Runtime evals */
+ case INST_EVAL_STK:
+ case INST_EXPR_STK:
+ case INST_YIELD:
+ return 0;
+ /* Upvars */
+ case INST_UPVAR:
+ case INST_NSUPVAR:
+ case INST_VARIABLE:
+ return 0;
+ }
+ size = tclInstructionTable[*pc].numBytes;
+ assert (size > 0);
+ }
+
+ return 1;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * PeepholeOptimize --
+ *
+ * A very simple peephole optimizer for bytecode.
+ *
+ * ----------------------------------------------------------------------
+ */
+
+static void
+PeepholeOptimize(
+ CompileEnv *envPtr)
+{
+ unsigned char *pc, *prev1 = NULL, *prev2 = NULL, *target;
+ int size, isNew;
+ Tcl_HashTable targets;
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch hSearch;
+
+ /*
+ * Find places where we should be careful about replacing instructions
+ * because they are the targets of various types of jumps.
+ */
+
+ Tcl_InitHashTable(&targets, TCL_ONE_WORD_KEYS);
+ for (pc = envPtr->codeStart ; pc < envPtr->codeNext ; pc += size) {
+ size = tclInstructionTable[*pc].numBytes;
+ switch (*pc) {
+ case INST_JUMP1:
+ case INST_JUMP_TRUE1:
+ case INST_JUMP_FALSE1:
+ target = pc + TclGetInt1AtPtr(pc+1);
+ goto storeTarget;
+ case INST_JUMP4:
+ case INST_JUMP_TRUE4:
+ case INST_JUMP_FALSE4:
+ target = pc + TclGetInt4AtPtr(pc+1);
+ goto storeTarget;
+ case INST_BEGIN_CATCH4:
+ target = envPtr->codeStart + envPtr->exceptArrayPtr[
+ TclGetUInt4AtPtr(pc+1)].codeOffset;
+ storeTarget:
+ (void) Tcl_CreateHashEntry(&targets, (void *) target, &isNew);
+ break;
+ case INST_JUMP_TABLE:
+ hPtr = Tcl_FirstHashEntry(
+ &JUMPTABLEINFO(envPtr, pc+1)->hashTable, &hSearch);
+ for (; hPtr ; hPtr = Tcl_NextHashEntry(&hSearch)) {
+ target = pc + PTR2INT(Tcl_GetHashValue(hPtr));
+ (void) Tcl_CreateHashEntry(&targets, (void *) target, &isNew);
+ }
+ break;
+ }
+ }
+
+ /*
+ * Replace PUSH/POP sequences (when non-hazardous) with NOPs.
+ */
+
+ (void) Tcl_CreateHashEntry(&targets, (void *) pc, &isNew);
+ for (pc = envPtr->codeStart ; pc < envPtr->codeNext ; pc += size) {
+ int blank = 0, i;
+
+ size = tclInstructionTable[*pc].numBytes;
+ prev2 = prev1;
+ prev1 = pc;
+ if (Tcl_FindHashEntry(&targets, (void *) (pc + size))) {
+ continue;
+ }
+ switch (*pc) {
+ case INST_PUSH1:
+ while (*(pc+size) == INST_NOP) {
+ size++;
+ }
+ if (*(pc+size) == INST_POP) {
+ blank = size + 1;
+ } else if (*(pc+size) == INST_CONCAT1
+ && TclGetUInt1AtPtr(pc + size + 1) == 2) {
+ Tcl_Obj *litPtr = TclFetchLiteral(envPtr,
+ TclGetUInt1AtPtr(pc + 1));
+ int numBytes;
+
+ (void) Tcl_GetStringFromObj(litPtr, &numBytes);
+ if (numBytes == 0) {
+ blank = size + 2;
+ }
+ }
+ break;
+ case INST_PUSH4:
+ while (*(pc+size) == INST_NOP) {
+ size++;
+ }
+ if (*(pc+size) == INST_POP) {
+ blank = size + 1;
+ } else if (*(pc+size) == INST_CONCAT1
+ && TclGetUInt1AtPtr(pc + size + 1) == 2) {
+ Tcl_Obj *litPtr = TclFetchLiteral(envPtr,
+ TclGetUInt4AtPtr(pc + 1));
+ int numBytes;
+
+ (void) Tcl_GetStringFromObj(litPtr, &numBytes);
+ if (numBytes == 0) {
+ blank = size + 2;
+ }
+ }
+ break;
+ }
+ if (blank > 0) {
+ for (i=0 ; i<blank ; i++) {
+ *(pc + i) = INST_NOP;
+ }
+ size = blank;
+ }
+ }
+
+ /*
+ * Trim a trailing double DONE.
+ */
+
+ if (prev1 && prev2 && *prev1 == INST_DONE && *prev2 == INST_DONE
+ && !Tcl_FindHashEntry(&targets, (void *) prev1)) {
+ envPtr->codeNext--;
+ }
+ Tcl_DeleteHashTable(&targets);
+}
+
+/*
*----------------------------------------------------------------------
*
* Tcl_SubstObj --
@@ -1194,6 +1441,8 @@ TclInitCompileEnv(
{
Interp *iPtr = (Interp *) interp;
+ assert(tclInstructionTable[LAST_INST_OPCODE+1].name == NULL);
+
envPtr->iPtr = iPtr;
envPtr->source = stringPtr;
envPtr->numSrcBytes = numBytes;
@@ -1533,6 +1782,54 @@ TclWordKnownAtCompileTime(
}
/*
+ * ---------------------------------------------------------------------
+ *
+ * FindCompiledCommandFromToken --
+ *
+ * A simple helper that looks up a command's compiler from its token.
+ *
+ * ---------------------------------------------------------------------
+ */
+
+static Command *
+FindCompiledCommandFromToken(
+ Tcl_Interp *interp,
+ Tcl_Token *tokenPtr)
+{
+ Tcl_DString ds;
+ Command *cmdPtr;
+
+ /*
+ * If we have a non-trivial token or are suppressing compilation, we stop
+ * right now.
+ */
+
+ if ((tokenPtr->type != TCL_TOKEN_SIMPLE_WORD)
+ || (((Interp *) interp)->flags & DONT_COMPILE_CMDS_INLINE)) {
+ return NULL;
+ }
+
+ /*
+ * We copy the string before trying to find the command by name. We used
+ * to modify the string in place, but this is not safe because the name
+ * resolution handlers could have side effects that rely on the unmodified
+ * string.
+ */
+
+ Tcl_DStringInit(&ds);
+ TclDStringAppendToken(&ds, &tokenPtr[1]);
+ cmdPtr = (Command *) Tcl_FindCommand(interp, Tcl_DStringValue(&ds), NULL,
+ /*flags*/ 0);
+ if (cmdPtr != NULL && (cmdPtr->compileProc == NULL
+ || (cmdPtr->nsPtr->flags & NS_SUPPRESS_COMPILATION)
+ || (cmdPtr->flags & CMD_HAS_EXEC_TRACES))) {
+ cmdPtr = NULL;
+ }
+ Tcl_DStringFree(&ds);
+ return cmdPtr;
+}
+
+/*
*----------------------------------------------------------------------
*
* TclCompileScript --
@@ -1561,7 +1858,6 @@ TclCompileScript(
* first null character. */
CompileEnv *envPtr) /* Holds resulting instructions. */
{
- Interp *iPtr = (Interp *) interp;
int lastTopLevelCmdIndex = -1;
/* Index of most recent toplevel command in
* the command location table. Initialized to
@@ -1570,11 +1866,9 @@ TclCompileScript(
* code. Init. to avoid compiler warning. */
unsigned char *entryCodeNext = envPtr->codeNext;
const char *p, *next;
- Namespace *cmdNsPtr;
Command *cmdPtr;
Tcl_Token *tokenPtr;
int bytesLeft, isFirstCmd, wordIdx, currCmdIndex, commandLength, objIndex;
- Tcl_DString ds;
/* TIP #280 */
ExtCmdLoc *eclPtr = envPtr->extCmdMapPtr;
int *wlines, wlineat, cmdLine, *clNext;
@@ -1584,20 +1878,12 @@ TclCompileScript(
Tcl_Panic("TclCompileScript() called on uninitialized CompileEnv");
}
- Tcl_DStringInit(&ds);
-
if (numBytes < 0) {
numBytes = strlen(script);
}
Tcl_ResetResult(interp);
isFirstCmd = 1;
- if (envPtr->procPtr != NULL) {
- cmdNsPtr = envPtr->procPtr->cmdPtr->nsPtr;
- } else {
- cmdNsPtr = NULL; /* use current NS */
- }
-
/*
* Each iteration through the following loop compiles the next command
* from the script.
@@ -1694,6 +1980,22 @@ TclCompileScript(
}
}
+ /*
+ * If expansion was requested, check if the command declares that
+ * it knows how to compile it. Note that if expansion is requested
+ * for the first word, this check will fail as the token type will
+ * inhibit it. (Checked inside FindCompiledCommandFromToken.) This
+ * is as it should be.
+ */
+
+ if (expand) {
+ cmdPtr = FindCompiledCommandFromToken(interp,
+ parsePtr->tokenPtr);
+ if (cmdPtr && (cmdPtr->flags & CMD_COMPILES_EXPANDED)) {
+ expand = 0;
+ }
+ }
+
envPtr->numCommands++;
currCmdIndex = envPtr->numCommands - 1;
lastTopLevelCmdIndex = currCmdIndex;
@@ -1732,9 +2034,13 @@ TclCompileScript(
for (wordIdx = 0, tokenPtr = parsePtr->tokenPtr;
wordIdx < parsePtr->numWords; wordIdx++,
tokenPtr += tokenPtr->numComponents + 1) {
+ /*
+ * Note the parse location information.
+ */
envPtr->line = eclPtr->loc[wlineat].line[wordIdx];
envPtr->clNext = eclPtr->loc[wlineat].next[wordIdx];
+
if (tokenPtr->type != TCL_TOKEN_SIMPLE_WORD) {
/*
* The word is not a simple string of characters.
@@ -1742,7 +2048,7 @@ TclCompileScript(
TclCompileTokens(interp, tokenPtr+1,
tokenPtr->numComponents, envPtr);
- if (tokenPtr->type == TCL_TOKEN_EXPAND_WORD) {
+ if (expand && tokenPtr->type == TCL_TOKEN_EXPAND_WORD) {
TclEmitInstInt4(INST_EXPAND_STKTOP,
envPtr->currStackDepth, envPtr);
}
@@ -1757,26 +2063,9 @@ TclCompileScript(
*/
if ((wordIdx == 0) && !expand) {
- /*
- * We copy the string before trying to find the command by
- * name. We used to modify the string in place, but this
- * is not safe because the name resolution handlers could
- * have side effects that rely on the unmodified string.
- */
-
- TclDStringClear(&ds);
- TclDStringAppendToken(&ds, &tokenPtr[1]);
-
- cmdPtr = (Command *) Tcl_FindCommand(interp,
- Tcl_DStringValue(&ds),
- (Tcl_Namespace *) cmdNsPtr, /*flags*/ 0);
-
- if ((cmdPtr != NULL)
- && (cmdPtr->compileProc != NULL)
- && !(cmdPtr->nsPtr->flags&NS_SUPPRESS_COMPILATION)
- && !(cmdPtr->flags & CMD_HAS_EXEC_TRACES)
- && !(iPtr->flags & DONT_COMPILE_CMDS_INLINE)) {
- int code, savedNumCmds = envPtr->numCommands;
+ cmdPtr = FindCompiledCommandFromToken(interp, tokenPtr);
+ if (cmdPtr) {
+ int savedNumCmds = envPtr->numCommands;
unsigned savedCodeNext =
envPtr->codeNext - envPtr->codeStart;
int update = 0;
@@ -1789,8 +2078,8 @@ TclCompileScript(
* length will be updated later. There is no need to
* do this for the first bytecode in the compile env,
* as the check is done before calling
- * TclNRExecuteByteCode(). Do emit an INST_START_CMD in
- * special cases where the first bytecode is in a
+ * TclNRExecuteByteCode(). Do emit an INST_START_CMD
+ * in special cases where the first bytecode is in a
* loop, to insure that the corresponding command is
* counted properly. Compilers for commands able to
* produce such a beast (currently 'while 1' only) set
@@ -1802,7 +2091,7 @@ TclCompileScript(
* command.
*/
- if (envPtr->atCmdStart) {
+ if (envPtr->atCmdStart == 1) {
if (savedCodeNext != 0) {
/*
* Increase the number of commands being
@@ -1811,21 +2100,16 @@ TclCompileScript(
* INST_START_CMD's operands, so be careful!
*/
- unsigned char *fixPtr = envPtr->codeNext - 4;
-
- TclStoreInt4AtPtr(TclGetUInt4AtPtr(fixPtr)+1,
- fixPtr);
+ TclIncrUInt4AtPtr(envPtr->codeNext - 4, 1)
}
- } else {
+ } else if (envPtr->atCmdStart == 0) {
TclEmitInstInt4(INST_START_CMD, 0, envPtr);
TclEmitInt4(1, envPtr);
update = 1;
}
- code = cmdPtr->compileProc(interp, parsePtr, cmdPtr,
- envPtr);
-
- if (code == TCL_OK) {
+ if (cmdPtr->compileProc(interp, parsePtr, cmdPtr,
+ envPtr) == TCL_OK) {
/*
* Confirm that the command compiler generated a
* single value on the stack as its result. This
@@ -1860,7 +2144,7 @@ TclCompileScript(
goto finishCommand;
}
- if (envPtr->atCmdStart && savedCodeNext != 0) {
+ if (envPtr->atCmdStart == 1 && savedCodeNext != 0) {
/*
* Decrease the number of commands being started
* at the current point. Note that this depends on
@@ -1868,10 +2152,7 @@ TclCompileScript(
* operands, so be careful!
*/
- unsigned char *fixPtr = envPtr->codeNext - 4;
-
- TclStoreInt4AtPtr(TclGetUInt4AtPtr(fixPtr)-1,
- fixPtr);
+ TclIncrUInt4AtPtr(envPtr->codeNext - 4, -1);
}
/*
@@ -1894,7 +2175,7 @@ TclCompileScript(
objIndex = TclRegisterNewCmdLiteral(envPtr,
tokenPtr[1].start, tokenPtr[1].size);
- if (cmdPtr != NULL) {
+ if (cmdPtr) {
TclSetCmdNameObj(interp,
TclFetchLiteral(envPtr, objIndex), cmdPtr);
}
@@ -1944,7 +2225,7 @@ TclCompileScript(
*/
TclEmitOpcode(INST_INVOKE_EXPANDED, envPtr);
- TclAdjustStackDepth((1-wordIdx), envPtr);
+ TclAdjustStackDepth(1 - wordIdx, envPtr);
} else if (wordIdx > 0) {
/*
* Save PC -> command map for the TclArgumentBC* functions.
@@ -2020,7 +2301,6 @@ TclCompileScript(
envPtr->numSrcBytes = p - script;
TclStackFree(interp, parsePtr);
- Tcl_DStringFree(&ds);
}
/*
@@ -3692,7 +3972,7 @@ TclInitAuxDataTypeTable(void)
Tcl_InitHashTable(&auxDataTypeTable, TCL_STRING_KEYS);
/*
- * There are only two AuxData type at this time, so register them here.
+ * There are only three AuxData types at this time, so register them here.
*/
RegisterAuxDataType(&tclForeachInfoType);
diff --git a/generic/tclCompile.h b/generic/tclCompile.h
index 79497d2..3909fa9 100644
--- a/generic/tclCompile.h
+++ b/generic/tclCompile.h
@@ -309,7 +309,9 @@ typedef struct CompileEnv {
int atCmdStart; /* Flag to say whether an INST_START_CMD
* should be issued; they should never be
* issued repeatedly, as that is significantly
- * inefficient. */
+ * inefficient. If set to 2, that instruction
+ * should not be issued at all (by the generic
+ * part of the command compiler). */
ContLineLoc *clLoc; /* If not NULL, the table holding the
* locations of the invisible continuation
* lines in the input script, to adjust the
@@ -713,8 +715,10 @@ typedef struct ByteCode {
#define INST_INVOKE_REPLACE 163
+#define INST_LIST_CONCAT 164
+
/* The last opcode */
-#define LAST_INST_OPCODE 163
+#define LAST_INST_OPCODE 164
/*
* Table describing the Tcl bytecode instructions: their name (for displaying
@@ -848,6 +852,9 @@ typedef struct ForeachInfo {
MODULE_SCOPE const AuxDataType tclForeachInfoType;
+#define FOREACHINFO(envPtr, index) \
+ ((ForeachInfo*)((envPtr)->auxDataArrayPtr[TclGetUInt4AtPtr(index)].clientData))
+
/*
* Structure used to hold information about a switch command that is needed
* during program execution. These structures are stored in CompileEnv and
@@ -861,6 +868,9 @@ typedef struct JumptableInfo {
MODULE_SCOPE const AuxDataType tclJumptableInfoType;
+#define JUMPTABLEINFO(envPtr, index) \
+ ((JumptableInfo*)((envPtr)->auxDataArrayPtr[TclGetUInt4AtPtr(index)].clientData))
+
/*
* Structure used to hold information about a [dict update] command that is
* needed during program execution. These structures are stored in CompileEnv
@@ -879,6 +889,9 @@ typedef struct {
MODULE_SCOPE const AuxDataType tclDictUpdateInfoType;
+#define DICTUPDATEINFO(envPtr, index) \
+ ((DictUpdateInfo*)((envPtr)->auxDataArrayPtr[TclGetUInt4AtPtr(index)].clientData))
+
/*
* ClientData type used by the math operator commands.
*/
@@ -985,6 +998,11 @@ MODULE_SCOPE void TclPrintObject(FILE *outFile,
Tcl_Obj *objPtr, int maxChars);
MODULE_SCOPE void TclPrintSource(FILE *outFile,
const char *string, int maxChars);
+MODULE_SCOPE int TclPushVarName(Tcl_Interp *interp,
+ Tcl_Token *varTokenPtr, CompileEnv *envPtr,
+ int flags, int *localIndexPtr,
+ int *simpleVarNamePtr, int *isScalarPtr,
+ int line, int *clNext);
MODULE_SCOPE int TclRegisterLiteral(CompileEnv *envPtr,
char *bytes, int length, int flags);
MODULE_SCOPE void TclReleaseLiteral(Tcl_Interp *interp, Tcl_Obj *objPtr);
@@ -1090,6 +1108,18 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
} while (0)
/*
+ * Macros used to update the flag that indicates if we are at the start of a
+ * command, based on whether the opcode is INST_START_COMMAND.
+ *
+ * void TclUpdateAtCmdStart(unsigned char op, CompileEnv *envPtr);
+ */
+
+#define TclUpdateAtCmdStart(op, envPtr) \
+ if ((envPtr)->atCmdStart < 2) { \
+ (envPtr)->atCmdStart = ((op) == INST_START_CMD ? 1 : 0); \
+ }
+
+/*
* Macro to emit an opcode byte into a CompileEnv's code array. The ANSI C
* "prototype" for this macro is:
*
@@ -1102,7 +1132,7 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
TclExpandCodeArray(envPtr); \
} \
*(envPtr)->codeNext++ = (unsigned char) (op); \
- (envPtr)->atCmdStart = ((op) == INST_START_CMD); \
+ TclUpdateAtCmdStart(op, envPtr); \
TclUpdateStackReqs(op, 0, envPtr); \
} while (0)
@@ -1154,7 +1184,7 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
} \
*(envPtr)->codeNext++ = (unsigned char) (op); \
*(envPtr)->codeNext++ = (unsigned char) ((unsigned int) (i)); \
- (envPtr)->atCmdStart = ((op) == INST_START_CMD); \
+ TclUpdateAtCmdStart(op, envPtr); \
TclUpdateStackReqs(op, i, envPtr); \
} while (0)
@@ -1172,7 +1202,7 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
(unsigned char) ((unsigned int) (i) >> 8); \
*(envPtr)->codeNext++ = \
(unsigned char) ((unsigned int) (i) ); \
- (envPtr)->atCmdStart = ((op) == INST_START_CMD); \
+ TclUpdateAtCmdStart(op, envPtr); \
TclUpdateStackReqs(op, i, envPtr); \
} while (0)
@@ -1328,15 +1358,19 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
TclCompileTokens((interp), (tokenPtr)+1, (tokenPtr)->numComponents, \
(envPtr));
/*
- * Convenience macro for use when pushing literals. The ANSI C "prototype" for
- * this macro is:
+ * Convenience macros for use when pushing literals. The ANSI C "prototype" for
+ * these macros are:
*
* static void PushLiteral(CompileEnv *envPtr,
* const char *string, int length);
+ * static void PushStringLiteral(CompileEnv *envPtr,
+ * const char *string);
*/
#define PushLiteral(envPtr, string, length) \
TclEmitPush(TclRegisterNewLiteral((envPtr), (string), (length)), (envPtr))
+#define PushStringLiteral(envPtr, string) \
+ PushLiteral((envPtr), (string), (int) (sizeof(string "") - 1))
/*
* Macro to advance to the next token; it is more mnemonic than the address
@@ -1403,6 +1437,66 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst);
Tcl_DStringLength(dsPtr), /*flags*/ 0)
/*
+ * Macro that encapsulates an efficiency trick that avoids a function call for
+ * the simplest of compiles. The ANSI C "prototype" for this macro is:
+ *
+ * static void CompileWord(CompileEnv *envPtr, Tcl_Token *tokenPtr,
+ * Tcl_Interp *interp, int word);
+ */
+
+#define CompileWord(envPtr, tokenPtr, interp, word) \
+ if ((tokenPtr)->type == TCL_TOKEN_SIMPLE_WORD) { \
+ TclEmitPush(TclRegisterNewLiteral((envPtr), (tokenPtr)[1].start, \
+ (tokenPtr)[1].size), (envPtr)); \
+ } else { \
+ envPtr->line = mapPtr->loc[eclIndex].line[word]; \
+ envPtr->clNext = mapPtr->loc[eclIndex].next[word]; \
+ TclCompileTokens((interp), (tokenPtr)+1, (tokenPtr)->numComponents, \
+ (envPtr)); \
+ }
+
+/*
+ * TIP #280: Remember the per-word line information of the current command. An
+ * index is used instead of a pointer as recursive compilation may reallocate,
+ * i.e. move, the array. This is also the reason to save the nuloc now, it may
+ * change during the course of the function.
+ *
+ * Macro to encapsulate the variable definition and setup.
+ */
+
+#define DefineLineInformation \
+ ExtCmdLoc *mapPtr = envPtr->extCmdMapPtr; \
+ int eclIndex = mapPtr->nuloc - 1
+
+#define SetLineInformation(word) \
+ envPtr->line = mapPtr->loc[eclIndex].line[(word)]; \
+ envPtr->clNext = mapPtr->loc[eclIndex].next[(word)]
+
+#define PushVarNameWord(i,v,e,f,l,s,sc,word) \
+ TclPushVarName(i,v,e,f,l,s,sc, \
+ mapPtr->loc[eclIndex].line[(word)], \
+ mapPtr->loc[eclIndex].next[(word)])
+
+/*
+ * Often want to issue one of two versions of an instruction based on whether
+ * the argument will fit in a single byte or not. This makes it much clearer.
+ */
+
+#define Emit14Inst(nm,idx,envPtr) \
+ if (idx <= 255) { \
+ TclEmitInstInt1(nm##1,idx,envPtr); \
+ } else { \
+ TclEmitInstInt4(nm##4,idx,envPtr); \
+ }
+
+/*
+ * Flags bits used by TclPushVarName.
+ */
+
+#define TCL_NO_LARGE_INDEX 1 /* Do not return localIndex value > 255 */
+#define TCL_NO_ELEMENT 2 /* Do not push the array element. */
+
+/*
* DTrace probe macros (NOPs if DTrace support is not enabled).
*/
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 029f402..7c645e7 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -724,7 +724,7 @@ static Tcl_Obj ** GrowEvaluationStack(ExecEnv *eePtr, int growth,
static void IllegalExprOperandType(Tcl_Interp *interp,
const unsigned char *pc, Tcl_Obj *opndPtr);
static void InitByteCodeExecution(Tcl_Interp *interp);
-static inline int OFFSET(void *ptr);
+static inline int wordSkip(void *ptr);
static void ReleaseDictIterator(Tcl_Obj *objPtr);
/* Useful elsewhere, make available in tclInt.h or stubs? */
static Tcl_Obj ** StackAllocWords(Tcl_Interp *interp, int numWords);
@@ -1001,13 +1001,13 @@ TclFinalizeExecution(void)
(TCL_ALLOCALIGN/sizeof(Tcl_Obj *))
/*
- * OFFSET computes how many words have to be skipped until the next aligned
+ * wordSkip computes how many words have to be skipped until the next aligned
* word. Note that we are only interested in the low order bits of ptr, so
* that any possible information loss in PTR2INT is of no consequence.
*/
static inline int
-OFFSET(
+wordSkip(
void *ptr)
{
int mask = TCL_ALLOCALIGN-1;
@@ -1020,7 +1020,7 @@ OFFSET(
*/
#define MEMSTART(markerPtr) \
- ((markerPtr) + OFFSET(markerPtr))
+ ((markerPtr) + wordSkip(markerPtr))
/*
*----------------------------------------------------------------------
@@ -1065,7 +1065,7 @@ GrowEvaluationStack(
} else {
#ifndef PURIFY
Tcl_Obj **tmpMarkerPtr = esPtr->tosPtr + 1;
- int offset = OFFSET(tmpMarkerPtr);
+ int offset = wordSkip(tmpMarkerPtr);
if (needed + offset < 0) {
/*
@@ -2331,13 +2331,22 @@ TEBCresume(
iPtr->cmdCount += TclGetUInt4AtPtr(pc+5);
if (checkInterp) {
checkInterp = 0;
- if ((codePtr->compileEpoch != iPtr->compileEpoch)
- || (codePtr->nsEpoch != iPtr->varFramePtr->nsPtr->resolverEpoch)) {
+ if (((codePtr->compileEpoch != iPtr->compileEpoch) ||
+ (codePtr->nsEpoch != iPtr->varFramePtr->nsPtr->resolverEpoch)) &&
+ !(codePtr->flags & TCL_BYTECODE_PRECOMPILED)) {
goto instStartCmdFailed;
}
}
inst = *(pc += 9);
goto peepholeStart;
+ } else if (inst == INST_NOP) {
+#ifndef TCL_COMPILE_DEBUG
+ while (inst == INST_NOP)
+#endif
+ {
+ inst = *++pc;
+ }
+ goto peepholeStart;
}
switch (inst) {
@@ -2369,14 +2378,28 @@ TEBCresume(
TRACE(("=> "));
objResultPtr = POP_OBJECT();
result = Tcl_SetReturnOptions(interp, OBJ_AT_TOS);
- Tcl_DecrRefCount(OBJ_AT_TOS);
- OBJ_AT_TOS = objResultPtr;
if (result == TCL_OK) {
+ Tcl_DecrRefCount(OBJ_AT_TOS);
+ OBJ_AT_TOS = objResultPtr;
TRACE_APPEND(("continuing to next instruction (result=\"%.30s\")",
O2S(objResultPtr)));
NEXT_INST_F(1, 0, 0);
+ } else if (result == TCL_ERROR) {
+ /*
+ * BEWARE! Must do this in this order, because an error in the
+ * option dictionary overrides the result (and can be verified by
+ * test).
+ */
+
+ Tcl_SetObjResult(interp, objResultPtr);
+ Tcl_SetReturnOptions(interp, OBJ_AT_TOS);
+ Tcl_DecrRefCount(OBJ_AT_TOS);
+ OBJ_AT_TOS = objResultPtr;
+ } else {
+ Tcl_DecrRefCount(OBJ_AT_TOS);
+ OBJ_AT_TOS = objResultPtr;
+ Tcl_SetObjResult(interp, objResultPtr);
}
- Tcl_SetObjResult(interp, objResultPtr);
cleanup = 1;
goto processExceptionReturn;
@@ -2501,9 +2524,6 @@ TEBCresume(
TclDecrRefCount(objPtr);
NEXT_INST_F(1, 0, 0);
- case INST_NOP:
- NEXT_INST_F(1, 0, 0);
-
case INST_DUP:
objResultPtr = OBJ_AT_TOS;
TRACE_WITH_OBJ(("=> "), objResultPtr);
@@ -4763,6 +4783,29 @@ TEBCresume(
objResultPtr = TCONST(match);
NEXT_INST_F(0, 2, 1);
+ case INST_LIST_CONCAT:
+ value2Ptr = OBJ_AT_TOS;
+ valuePtr = OBJ_UNDER_TOS;
+ TRACE(("\"%.30s\" \"%.30s\" => ", O2S(valuePtr), O2S(value2Ptr)));
+ if (Tcl_IsShared(valuePtr)) {
+ objResultPtr = Tcl_DuplicateObj(valuePtr);
+ if (Tcl_ListObjAppendList(interp, objResultPtr,
+ value2Ptr) != TCL_OK) {
+ TRACE_APPEND(("ERROR: %.30s\n", O2S(Tcl_GetObjResult(interp))));
+ TclDecrRefCount(objResultPtr);
+ goto gotError;
+ }
+ TRACE_APPEND(("\"%.30s\"\n", O2S(objResultPtr)));
+ NEXT_INST_F(1, 2, 1);
+ } else {
+ if (Tcl_ListObjAppendList(interp, valuePtr, value2Ptr) != TCL_OK){
+ TRACE_APPEND(("ERROR: %.30s\n", O2S(Tcl_GetObjResult(interp))));
+ goto gotError;
+ }
+ TRACE_APPEND(("\"%.30s\"\n", O2S(valuePtr)));
+ NEXT_INST_F(1, 1, 0);
+ }
+
/*
* End of INST_LIST and related instructions.
* -----------------------------------------------------------------
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index 25ed57c..6259216 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -3225,6 +3225,9 @@ Tcl_LoadFile(
*/
copyToPtr = TclpTempFileNameForLibrary(interp, pathPtr);
+ if (copyToPtr == NULL) {
+ return TCL_ERROR;
+ }
Tcl_IncrRefCount(copyToPtr);
copyFsPtr = Tcl_FSGetFileSystemForPath(copyToPtr);
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 5b113bf..e60b627 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -1681,6 +1681,9 @@ typedef struct Command {
* CMD_HAS_EXEC_TRACES - 1 means that this command has at least one
* execution trace (as opposed to simple
* delete/rename traces) in its tracePtr list.
+ * CMD_COMPILES_EXPANDED - 1 means that this command has a compiler that
+ * can handle expansion (provided it is not the
+ * first word).
* TCL_TRACE_RENAME - A rename trace is in progress. Further
* recursive renames will not be traced.
* TCL_TRACE_DELETE - A delete trace is in progress. Further
@@ -1691,6 +1694,7 @@ typedef struct Command {
#define CMD_IS_DELETED 0x1
#define CMD_TRACE_ACTIVE 0x2
#define CMD_HAS_EXEC_TRACES 0x4
+#define CMD_COMPILES_EXPANDED 0x8
/*
*----------------------------------------------------------------
@@ -3090,6 +3094,7 @@ MODULE_SCOPE int TclTrimLeft(const char *bytes, int numBytes,
const char *trim, int numTrim);
MODULE_SCOPE int TclTrimRight(const char *bytes, int numBytes,
const char *trim, int numTrim);
+MODULE_SCOPE int TclUtfCasecmp(const char *cs, const char *ct);
MODULE_SCOPE Tcl_Obj * TclpNativeToNormalized(ClientData clientData);
MODULE_SCOPE Tcl_Obj * TclpFilesystemPathType(Tcl_Obj *pathPtr);
MODULE_SCOPE int TclpDlopen(Tcl_Interp *interp, Tcl_Obj *pathPtr,
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 18a82f7..4ad6f01 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -1106,6 +1106,46 @@ Tcl_UtfNcasecmp(
/*
*----------------------------------------------------------------------
*
+ * Tcl_UtfNcasecmp --
+ *
+ * Compare UTF chars of string cs to string ct case insensitively.
+ * Replacement for strcasecmp in Tcl core, in places where UTF-8 should
+ * be handled.
+ *
+ * Results:
+ * Return <0 if cs < ct, 0 if cs == ct, or >0 if cs > ct.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+TclUtfCasecmp(
+ const char *cs, /* UTF string to compare to ct. */
+ const char *ct) /* UTF string cs is compared to. */
+{
+ while (*cs && *ct) {
+ Tcl_UniChar ch1, ch2;
+
+ cs += TclUtfToUniChar(cs, &ch1);
+ ct += TclUtfToUniChar(ct, &ch2);
+ if (ch1 != ch2) {
+ ch1 = Tcl_UniCharToLower(ch1);
+ ch2 = Tcl_UniCharToLower(ch2);
+ if (ch1 != ch2) {
+ return ch1 - ch2;
+ }
+ }
+ }
+ return UCHAR(*cs) - UCHAR(*ct);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
* Tcl_UniCharToUpper --
*
* Compute the uppercase equivalent of the given Unicode character.
diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl
index b882e4f..23a3408 100644
--- a/library/platform/pkgIndex.tcl
+++ b/library/platform/pkgIndex.tcl
@@ -1,3 +1,3 @@
-package ifneeded platform 1.0.11 [list source [file join $dir platform.tcl]]
+package ifneeded platform 1.0.12 [list source [file join $dir platform.tcl]]
package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]]
diff --git a/tests/cmdIL.test b/tests/cmdIL.test
index 721773f..23a5f96 100644
--- a/tests/cmdIL.test
+++ b/tests/cmdIL.test
@@ -417,6 +417,15 @@ test cmdIL-4.34 {SortCompare procedure, -ascii option with -nocase option} {
test cmdIL-4.35 {SortCompare procedure, -ascii option with -nocase option} {
lsort -ascii -nocase {d E c B a D35 d300 100 20}
} {100 20 a B c d d300 D35 E}
+test cmdIL-4.36 {SortCompare procedure, UTF-8 with -nocase option} {
+ scan [lsort -ascii -nocase [list \u101 \u100]] %c%c%c
+} {257 32 256}
+test cmdIL-4.37 {SortCompare procedure, UTF-8 with -nocase option} {
+ scan [lsort -ascii -nocase [list a\u0000a a]] %c%c%c%c%c
+} {97 32 97 0 97}
+test cmdIL-4.38 {SortCompare procedure, UTF-8 with -nocase option} {
+ scan [lsort -ascii -nocase [list a a\u0000a]] %c%c%c%c%c
+} {97 32 97 0 97}
test cmdIL-5.1 {lsort with list style index} {
lsort -ascii -decreasing -index {0 1} {
diff --git a/unix/Makefile.in b/unix/Makefile.in
index 1c84540..9bf8b43 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -291,9 +291,10 @@ XTTEST_OBJS = xtTestInit.o tclTest.o tclTestObj.o tclTestProcBodyObj.o \
tclThreadTest.o tclUnixTest.o tclXtNotify.o tclXtTest.o
GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \
- tclAsync.o tclBasic.o tclBinary.o tclCkalloc.o tclClock.o \
- tclCmdAH.o tclCmdIL.o tclCmdMZ.o tclCompCmds.o tclCompCmdsSZ.o \
- tclCompExpr.o tclCompile.o tclConfig.o tclDate.o tclDictObj.o \
+ tclAssembly.o tclAsync.o tclBasic.o tclBinary.o tclCkalloc.o \
+ tclClock.o tclCmdAH.o tclCmdIL.o tclCmdMZ.o \
+ tclCompCmds.o tclCompCmdsGR.o tclCompCmdsSZ.o tclCompExpr.o \
+ tclCompile.o tclConfig.o tclDate.o tclDictObj.o \
tclEncoding.o tclEnsemble.o \
tclEnv.o tclEvent.o tclExecute.o tclFCmd.o tclFileName.o tclGet.o \
tclHash.o tclHistory.o tclIndexObj.o tclInterp.o tclIO.o tclIOCmd.o \
@@ -307,8 +308,7 @@ GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \
tclStrToD.o tclThread.o \
tclThreadAlloc.o tclThreadJoin.o tclThreadStorage.o tclStubInit.o \
tclTimer.o tclTrace.o tclUtf.o tclUtil.o tclVar.o tclZlib.o \
- tclTomMathInterface.o \
- tclAssembly.o
+ tclTomMathInterface.o
OO_OBJS = tclOO.o tclOOBasic.o tclOOCall.o tclOODefineCmds.o tclOOInfo.o \
tclOOMethod.o tclOOStubInit.o
@@ -395,6 +395,7 @@ GENERIC_SRCS = \
$(GENERIC_DIR)/tclCmdIL.c \
$(GENERIC_DIR)/tclCmdMZ.c \
$(GENERIC_DIR)/tclCompCmds.c \
+ $(GENERIC_DIR)/tclCompCmdsGR.c \
$(GENERIC_DIR)/tclCompCmdsSZ.c \
$(GENERIC_DIR)/tclCompExpr.c \
$(GENERIC_DIR)/tclCompile.c \
@@ -843,8 +844,8 @@ install-libraries: libraries
@echo "Installing package tcltest 2.3.5 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.5.tm;
- @echo "Installing package platform 1.0.11 as a Tcl Module";
- @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.11.tm;
+ @echo "Installing package platform 1.0.12 as a Tcl Module";
+ @$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.12.tm;
@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.4.tm;
@@ -1077,6 +1078,9 @@ tclDate.o: $(GENERIC_DIR)/tclDate.c
tclCompCmds.o: $(GENERIC_DIR)/tclCompCmds.c $(COMPILEHDR)
$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompCmds.c
+tclCompCmdsGR.o: $(GENERIC_DIR)/tclCompCmdsGR.c $(COMPILEHDR)
+ $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompCmdsGR.c
+
tclCompCmdsSZ.o: $(GENERIC_DIR)/tclCompCmdsSZ.c $(COMPILEHDR)
$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompCmdsSZ.c
diff --git a/unix/configure b/unix/configure
index 8a9a462..46b9843 100755
--- a/unix/configure
+++ b/unix/configure
@@ -7719,63 +7719,6 @@ fi
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
;;
- NetBSD-1.*|FreeBSD-[1-2].*)
- SHLIB_CFLAGS="-fPIC"
- SHLIB_LD="ld -Bshareable -x"
- SHLIB_SUFFIX=".so"
- DL_OBJS="tclLoadDl.o"
- DL_LIBS=""
- if test $doRpath = yes; then
-
- CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
- LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
-fi
-
- echo "$as_me:$LINENO: checking for ELF" >&5
-echo $ECHO_N "checking for ELF... $ECHO_C" >&6
-if test "${tcl_cv_ld_elf+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#ifdef __ELF__
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then
- tcl_cv_ld_elf=yes
-else
- tcl_cv_ld_elf=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
-echo "${ECHO_T}$tcl_cv_ld_elf" >&6
- if test $tcl_cv_ld_elf = yes; then
-
- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
-
-else
-
- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
-
-fi
-
-
- # Ancient FreeBSD doesn't handle version numbers with dots.
-
- UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
- TCL_LIB_VERSIONS_OK=nodots
- ;;
OpenBSD-*)
arch=`arch -s`
case "$arch" in
@@ -7861,9 +7804,8 @@ fi
UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
TCL_LIB_VERSIONS_OK=nodots
;;
- NetBSD-*|FreeBSD-[3-4].*)
- # FreeBSD 3.* and greater have ELF.
- # NetBSD 2.* has ELF and can use 'cc -shared' to build shared libs
+ NetBSD-*)
+ # NetBSD has ELF and can use 'cc -shared' to build shared libs
SHLIB_CFLAGS="-fPIC"
SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
SHLIB_SUFFIX=".so"
@@ -7898,7 +7840,7 @@ fi
# This configuration from FreeBSD Ports.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="${CC} -shared"
- TCL_SHLIB_LD_EXTRAS="-soname \$@"
+ TCL_SHLIB_LD_EXTRAS="-Wl,-soname \$@"
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
DL_LIBS=""
diff --git a/unix/tcl.m4 b/unix/tcl.m4
index 3fa6abe..ea7fcc7 100644
--- a/unix/tcl.m4
+++ b/unix/tcl.m4
@@ -1469,32 +1469,6 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
;;
- NetBSD-1.*|FreeBSD-[[1-2]].*)
- SHLIB_CFLAGS="-fPIC"
- SHLIB_LD="ld -Bshareable -x"
- SHLIB_SUFFIX=".so"
- DL_OBJS="tclLoadDl.o"
- DL_LIBS=""
- AS_IF([test $doRpath = yes], [
- CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
- LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
- AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
- AC_EGREP_CPP(yes, [
-#ifdef __ELF__
- yes
-#endif
- ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
- AS_IF([test $tcl_cv_ld_elf = yes], [
- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
- ], [
- SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
- ])
-
- # Ancient FreeBSD doesn't handle version numbers with dots.
-
- UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
- TCL_LIB_VERSIONS_OK=nodots
- ;;
OpenBSD-*)
arch=`arch -s`
case "$arch" in
@@ -1546,9 +1520,8 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
TCL_LIB_VERSIONS_OK=nodots
;;
- NetBSD-*|FreeBSD-[[3-4]].*)
- # FreeBSD 3.* and greater have ELF.
- # NetBSD 2.* has ELF and can use 'cc -shared' to build shared libs
+ NetBSD-*)
+ # NetBSD has ELF and can use 'cc -shared' to build shared libs
SHLIB_CFLAGS="-fPIC"
SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
SHLIB_SUFFIX=".so"
@@ -1577,7 +1550,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
# This configuration from FreeBSD Ports.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="${CC} -shared"
- TCL_SHLIB_LD_EXTRAS="-soname \$[@]"
+ TCL_SHLIB_LD_EXTRAS="-Wl,-soname \$[@]"
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
DL_LIBS=""
diff --git a/unix/tclConfig.h.in b/unix/tclConfig.h.in
index 8069b68..839c2ab 100644
--- a/unix/tclConfig.h.in
+++ b/unix/tclConfig.h.in
@@ -241,6 +241,9 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
/* Should we use the global timezone variable? */
#undef HAVE_TIMEZONE_VAR
diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c
index 6f443a9..e27f78f 100644
--- a/unix/tclUnixFCmd.c
+++ b/unix/tclUnixFCmd.c
@@ -2226,13 +2226,13 @@ DefaultTempDir(void)
dir = getenv("TMPDIR");
if (dir && dir[0] && stat(dir, &buf) == 0 && S_ISDIR(buf.st_mode)
- && access(dir, W_OK)) {
+ && access(dir, W_OK) == 0) {
return dir;
}
#ifdef P_tmpdir
dir = P_tmpdir;
- if (stat(dir, &buf) == 0 && S_ISDIR(buf.st_mode) && access(dir, W_OK)) {
+ if (stat(dir, &buf)==0 && S_ISDIR(buf.st_mode) && access(dir, W_OK)==0) {
return dir;
}
#endif
diff --git a/win/Makefile.in b/win/Makefile.in
index 12c04bc..047b0b5 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -225,6 +225,7 @@ GENERIC_OBJS = \
tclCmdIL.$(OBJEXT) \
tclCmdMZ.$(OBJEXT) \
tclCompCmds.$(OBJEXT) \
+ tclCompCmdsGR.$(OBJEXT) \
tclCompCmdsSZ.$(OBJEXT) \
tclCompExpr.$(OBJEXT) \
tclCompile.$(OBJEXT) \
@@ -650,8 +651,8 @@ install-libraries: libraries install-tzdata install-msgs
@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.5.2.tm;
@echo "Installing package tcltest 2.3.5 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.5.tm;
- @echo "Installing package platform 1.0.11 as a Tcl Module";
- @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.11.tm;
+ @echo "Installing package platform 1.0.12 as a Tcl Module";
+ @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.12.tm;
@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.4.tm;
@echo "Installing encodings";
diff --git a/win/makefile.bc b/win/makefile.bc
index 18bfa28..d148513 100644
--- a/win/makefile.bc
+++ b/win/makefile.bc
@@ -200,6 +200,7 @@ TCLOBJS = \
$(TMPDIR)\tclCmdIL.obj \
$(TMPDIR)\tclCmdMZ.obj \
$(TMPDIR)\tclCompCmds.obj \
+ $(TMPDIR)\tclCompCmdsGR.obj \
$(TMPDIR)\tclCompCmdsSZ.obj \
$(TMPDIR)\tclCompExpr.obj \
$(TMPDIR)\tclCompile.obj \
diff --git a/win/makefile.vc b/win/makefile.vc
index 2784140..95d3a9d 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -274,6 +274,7 @@ COREOBJS = \
$(TMP_DIR)\tclCmdIL.obj \
$(TMP_DIR)\tclCmdMZ.obj \
$(TMP_DIR)\tclCompCmds.obj \
+ $(TMP_DIR)\tclCompCmdsGR.obj \
$(TMP_DIR)\tclCompCmdsSZ.obj \
$(TMP_DIR)\tclCompExpr.obj \
$(TMP_DIR)\tclCompile.obj \
diff --git a/win/tclWinTime.c b/win/tclWinTime.c
index daa229d..7045c72 100644
--- a/win/tclWinTime.c
+++ b/win/tclWinTime.c
@@ -280,7 +280,7 @@ NativeGetTime(
Tcl_Time *timePtr,
ClientData clientData)
{
- struct timeb t;
+ struct _timeb t;
int useFtime = 1; /* Flag == TRUE if we need to fall back on
* ftime rather than using the perf counter. */
@@ -446,7 +446,7 @@ NativeGetTime(
* High resolution timer is not available. Just use ftime.
*/
- ftime(&t);
+ _ftime(&t);
timePtr->sec = (long)t.time;
timePtr->usec = t.millitm * 1000;
}
ꔮ]Hyu%(A.& V@M88v~m/DT0!f42q19ӌA[pNvVZq0$gJ@^cHa&O\BOtSHTE~Jn%yb: r]L>Q{7ĭ} '<s5O D]vt&U PR iGqȴ:{;ˡH%8(h2 PSE :Pm1Bi5 EIrU1 ;b` 'ARFGX: ?G /~>PCo+ glc~M"RP!'伕4R`1CdiG G*3" t>؞p (P.r/UhړYG?jJ)iĔB?PDV! "wozܰFa aC;| h!%yC/>wd$iSi2YjSa0zyC. fȁL|#SP?̪+`фO T39R?j{(UI"*jThD@ c'}$ef1$ TSv,Mk +/ h11gC{ZRpNvhˤ4(Wiյ+;Y;cCoJ2'9i5 F tF[mxxRwa k Y$ϔ?'AkR}Z(NSa!Au)3d*uWO9>{"a!1E8|Ieh"!g$ְqh$>P|y4EdDM)[\twm%\1XKhq4 '-li͢eQH@ rՕU42׾%K7;NN-d(4:!'$liڢm!52Y1}4YrVen՛c^fFɕ DžON>1m !xg~PD@IE+H L!IU(ͷ"@ȵzqg׼㣍] };b GOTiwxPk/ze$kBm1 Q:(dմE:7Ad4fEaRƓH(ډɆy$?]ZpIjp+W|hCPm@W^ظCظ:Y:KgGcJZ#pÄHHrct`~'qځpHˌ*1R7CZ2E] jAiz$Xr-L=2@keT(F`IACC p 4k8Z!}Ox=!Pbx׮BR| d"2edPBB(oGod:675N*\ёi*!,$TJ,UIPX nJߞ/p'HD%8V D' uؚʄ!`:(vZSH3}~)]{@R}l8SbJh޻hZL1qp"vwT.tk?o|__/=v ۔qo.yJ3X{$IPvM֛Jj$LS1 #z7~Wo9&}\L$?ODM[SH}IAX )!&(*bY ?/4>v o8p-uΕ)Ӿ,وLHTD:x|=ac pJF}w_.ǒt JR( ȇ_~F6rYN)BO[@@yS2=d=ԙ&8;-0aZXz o`b`E$QT)dR-A!MYP%#Q!:Nh6+JDthqDNXiL-g';dd-Ae2Vɒm66Ker̤hiRH !??^d~&>߻{*Rݏ=nPρ#K(j7aR"G/hBBRDI%%Xyxp{fޞ@reeFHa -~9W& G6k6, T"B < ;,ak3@X>M<[8V$x3 Z*$uG.N$ CX]# (xY)-nI&a"klƊp .bB0M:)T[3 % O4N>>>3OEU`ur!j#77s};$rֱ!a"F*n2Rp"FL!ϬZhgߡ֏@z6 츒:1i}u5TYahրkMmZRe"ZvL^LXzZ .%ɲEK㝧"dd.εh$dDkӬKj<*y]'(iH-ޏY9Z%L3,Tεp!> %)K4G:!c8c#=(Kq>szg틸hiq|O8Z:(ݦXJ:@X{k;NP\ffħDB')8ZhXE; {" At.'^ ^NUCǟ\+BpA < Q~s{E =Ĕ5@~S/tJ*dʰ פ x?R(''R+ TpqC!(% B"eRۃ-|m'KK:஌XܓbnF]xwWW"a$ʯ!석jqxI4vvPqH1; &Lr(|X ߻%JLo:1bJa=A9V(ga0R$iv@PGQ~@E94*'\p]w'Iΰ4681ʩ Ӳ '}9vΐܘ (ytFFÖ)M)1Ba;HVPrLr Rqp[ qnՃ7)[(;ui``Q<iIv\ HЦ;g0.jP2ze9mVtNd]kJ ̱+v1x< S=ph&Ud{NQ%9Uo a`0RdR 9p)o_Kv8 /zA$ a(QLT Q9GO_[&MrVE4Wh٠2T$cQQD]VUR-MJV ^5ii I/R%kk 3SLRd4Z+vuP!(cHG>{^E!Kj6SCv/H28TpptqM;l[lNj'xi }@$V&Z\ks]v}W_ʶDIi@뫯-|Ka1/n/b/>fׇFT1NpP Ja(h!%ߏTPÐPP L^GpFJj`]ڏ)Go<;(~uõGܽ&}cBI ď!_ ϕ X碠S8=|j'3L! JjJ|8N27@lL VIKd)d<E7 H5(iq@$q\J8qCcNqL 0 ª19#atZ fG(*_t;q(2$&$2 Hg@TZu;n۠<^;2CnY=;Du A. 7:6Eg-E9]}0ɃĸsJg㏰AFMBC7.:=DJJrХ)@ U)@ PCySd} Qf-d*}|ԞXIhH}LCl{~A/DL  U,NIa 6k8dV07UdI̖A[aZЩ [>2Kw+Q̆D!rT9hLT:0D& Pb\y9G;Aa]L'@@֌+̷tBi;jLFj$6P@}mԇ)Zuē<)p$EtݞXZZJ9MxuQxqRoZFkWronuvX34ɈV\,lDѐt<UCgq V&NJtq pu֣{Y X9dޟwPn"!gK2Y s4Sl&!DѠr6>pyAsGXe߯m&\9Q뻚CVyDȉhL91H4A`KO f ~]3+D8G;Qy+\F<7˝"9W뭤;)E2ƒt3Cʌ m$j\e G^K@4ik925Ɇa\Nt*]Qs'X#Bٌҭ5 ʡ?(J RςBgH{_~. Ym%9&#NcG ωrbɸ|8%V9@ik3A9Eu$M $ T fx+pof a^c>{ ~q&@$u)hfb(BC0';تbI:offi"NF Dp^h7qgsH}eKupr\22|_"*wiđ-hû|wg`Mɸi59AJ%g!ÎkFȵ EQNN*a֜H p-㍳o\A.\dEg9h"ۃ]{9qJ+Oe_<\e @|%#譤@]:n +@bYa϶(pT r(h^6Q Er+n,5sq҈H9Fpt8arg w; h jcuK3%1ĹTJhvݶ8aѼ {h׍qvpY\NkW \XҜRٶk[4% H1@^_ ttWt<@Z#o #Gl)DM:1Z#d]T@"دwXa. b% 2},BP( (Z=ɞ,^usn.ZS+fs5d:Te2:3db+ͷ^DJ@^=y8A۟] L ᰤD # N8@Z (G?.')[3imR/X42AԖYfbf .ik*j9Z!'V<:@| }yT"H8ȎlĈEzftXX>8QQ )cTZڻ"44!-+ؠ Y-F(hݰ>E6D)ӄ(L0tq\1#l:4W Y]4Bj$W*LQ cnǺ~剧VsNY>yɫЕ2kRc74G%>R)$}Ex i;tbH͛&{E閠trvI''N;^g.M-bmٗwŜFjf=fdPn;f_"-OʪGyc:=nLaCTX vw3S">gVX= -H&uơ$5:굕^T($I \ GFՁ!2 ٶ*J%EBQT:ںiBKx-ppm:uwWg9~ʘ'gIѳB(ci @% xLopvE3jfZ#{e܈iQFASȫv"vAguPRD6Ѥ)Q+QXUyFB$cЫsoД ]0(m#6P{p q9 D?D˔z<7xdyd=m*G}ϳ^Ӫ^u\uy!J}ZU#3'*"DhLM$š ,*$l<<3lc6lsa6E1AA0҄lP{!цuns0wz+㇗^6I SEj豈"PBJM*$d ZL@︆l]Mj’lzI~|R*֮"-J)"aqjE(b9 Fe1E8X:*QP;U5<:#I˄Iٻ`R'`$IDNmEMg2ΆYԐ$ZKXGBEѱ Xm8ZR&Mغb&H6l|t)mh̰T!hSZZVIo-%D"d|})$['p%;Ek%LiWeG> J? c.^yKb0@Nͭ&22 !9#Ө3I'RpbdQ 8 Q,cLs囹(lE`B,(c'w/2ICkPG$(Ƙr&ZI$$8a|E'vIM3;9Mj@u D[0UL\1'D<2k20`GZd2 dLHGѡ’M(hLġO4M8#H(b?ia >}  FsH@ZGvo$(dG&L,ѷYmRX֙*% G߶yx<7xo*gQAZPP4k@UظA@+ fG@Ҡ6]kdP,KAaN~ܛrE}o*MLF)|=إdqڵb<Ӄr wMi67+(@Yjy7Gw_VuQ@xۺܾq[ 9q֏+\O7.B9&MX0+fG8x9ۜK[fE>tXpv"3!7$i>GNL@_7ǘAd"bsP: FIʤ*\(f4DASJBZX(bM~מoM3z[yp# Y|G&5"U.7HnKD|)z'ѮKpp8^9N{6˹tnߙb\uY|4E*{ẌJdi[][)30?G VsT&rq\)Hq0&#Y^.}8&K!KAХ|JuN"2mGXFaĤI*VeVB"ި7ZmM+b`IpGJ= rTE؎A-p 8[1sץtay;,a}2SDkO좷)QJ9&N9: pt @ n>"8$]aC)D8a>81D,zONtFW`“y}t`U NcY׃[ϝm1r׬ZX--r?g 2%#my 8\;skê{]ɚtvl"Uk~2anΥM5kˌEN:UzIhHJ2DD0ECa\y3*{9z@_w|VL[kACIjzA~rīlWbTYy}"ɰ". sE!E_@ So?$N9 y&ZÏ46>M/7(c1 4J5<Ԟ9'$MlN ;c8)b4 B )ClH&[F1AN WO#IhM MݬsDKA2Ӓ' JXe<ϛ%TZX3IdE}LM̕L ,%ʚ5沉hQRV> [UR ٠WO>(14-E6%H"CM401(`G8P u\eQXhj6FLh*Q-UJBASyD4!"0P@)*PUQ"@%R] JeMI3HXMdE-IIF[i)̥)BH#%1( /^5;Z}qRHEL7\?'gTRaeS d' ~ (ûuheOjl%&/Kh;07v- ?c95"y ;#> t J9E%IMMX5QcFE2ɉm6JCeV4aXbHAv' '< (?f |{-N鶑N$1>56iK,P+H(z{&BE˚zfDI [ H(MB`f2_w|]*_3v45L!OFaTIBd848,7DT+>1(B^~eIE ń ?\9MXb(3"U#;G|b`gQ|?bJ 9"&I\m\(κRmJ`TbO⩚M6 G:M'G֝blCA#h`}~~= ᔑJDbG /׆yX|Y1/_&Hb(#QC4d%fjDd(bRTWד_Ml:K%CFV'Yht>HFJ*2X[b>MY Pasw(`C#z8N~[&‚K ۹~܏۱9A<_o'b9EI$A~7É6{ ;Ƌ .@;9%>.VlC}DU\N"t 4kM1uLiMCXpq;n#[52R@@b,c .Wv,p&vw? el"t=8wCτ^IGH_hp kA_wb$q2F$&«tYf! Fqn;v. Mk3zD))DP8m2;f8Vl "xN\.Zk~x1M% )Up#LJD #Dj. O9Xa%R坭:$OS[ȡ>!QMiѱ7bweR D3ūeCyk۞eWLUJ2ʟfY5\$w# vW]p[J :p8Q>%K"&C=V.Ql7P6B! ^3˶]iF:J!"BʮW+|K<L7\N"8`uRG2ҟ%iRQ;}LqhU u]}w{1W`|40Cf#RB4PJ+lMaղ\ &8/OXC5s/Yy?M^]pL/WsW_K7,ȕ+:rno7e!v!$ǻ}ELdn'Vg4]+N]I'-u[~*9 U {ɒL񼋈Zɩc$*zl:p?&"}{8e7\T^;ɸ-%8g|'Pul<ߝO¨tPG'ާy3K2)Z|Rb]*gZUV/CM1_aL@MYx69l(/,k,=nN׵6AN<ڢA.r}l/{. Bŭy;MՇ5ZýGvZ_ZF i hT.'2lS%S0Y;x!Ӽ|P~!!rKjip2մ+vP9DZ0g8vSqLyÆB.hj<=DǾ,iyQJp/')Z҈fYI57;隗}#Ww(nK=KAΑڵ$3hZ@xFTD|+Ypњ6{ЀH9=JbP9>~ƻzff8ȔaS 9/3?&HH (B-'ϤCDKX,dHJ{c]A"!Zք ","d+")X#;[w1?&F͵X "!@戃|t>qLc#ԍ>Gh q8p3cWQ$lbAp(0*z7̾^3#HM_TuMRFmDU? LsnN4%l|8.1q}wiI$%v씚>!e!m5 jj颍̱UD ޹6U;ϥ.0u+ h\ *5bW4[KL. #Ӌ|}7mj;^Kn5l*S NgH ,hR.f]w%ey*%466[D2GADv0.㒱@!-$62i2VfR7!+˶ՊjY)mddH%mhT8ڐf`$3OTw}є)$w*B-'{|IUBp??s[Rc`"QҎf&FAI>SrPq^"@44Ҁ"ST y~??g$iAmDMc5{|_ڮ0?E'c#)<0|n5a] !p*0}іQ_~z'¹u4p Ĕ -6JP90u`TQ% %"aП. T!NRP1\C6@>[׀dB*Bc^L'|>6tqQH"9~U)!s0~qXݛ/ؑ<E+-=_K/k1n8/$ )xqeZް` bU8@ DNH2`@f:0Y#20PчtKH D%j`O4kDN(RDG^CJ$RDZҬYMե vC p#a ?qOKu5 PʳBaHe\C֯ #a^wG }"XJlm3BREm#jՑH;\RLIiQanji[`݂*x_9pUc@yF@~2fs 5H+źS*[i5k︇dH[&hdBR!q&#D]p#4&SIHHmQk6Sei:vR;rۚ!$sbѱngu.LB(\hw;Dr=$DA J/[d,+!ggDd2`8D_75㶓PPM qlY @ LWdKWeg/: )6|V!("M^sn%u ؑ@P"`G9$&;Uu֐%("-^ W%i )ZӤLNid6(BYϞǒ1*L(5hT&=QO7٭@AGC L´E$"&T:SA\Xu֍k"AWby"ú<2 R}-p{:ViIQl $4JDxlGrH RBJڌUH) j U|eP @t5Hkhըhڢͷ.jK6!"Vhh4rwz 4BP40RP%Jұ"]6Z(ɖhՋhƚjmD[$[c6ѬmM2ifji6FѮih%bXm-FZ+In,jZMXFk,hTZ[ETVɬ6T[F+Ablj4VUidA!YeXZ*"XRZTmkQlWS,EA@a )jG'Ab"ƖiJm'J K]㣷#HccȝoUeXh&˕{ Gs!(|Q>wf9@y)=49aa g 9IF/9dldⵅe+ .vvDDr"m!X $28.AM&yv)imbZW#$rZ Q U3D5%f*)Hw9QCm6Cӕzv0ӆ:tM17gao5ȳj){悎x FIbli&[ WjjbjH,l&$5je Z-ֱdJhFK(H1h4[Rh-I5%c!i2j!H>@qy)="2)OQ':(H 9P4CP۳AJ Lqq$53B1;:Wc~:$~1-La& ԕFTag1Dx^@h܏O (wr(I'r(.ᣠ5>P[5fK +JTQ#\?ژ/A9SPl @I1n3t?w?Jcepҧ0q^L^08k)#F18fk(i>瞑8z 'mrpekf/NhA?Cؤo,SVA~s@w}IN( 5q~^%J:f^xfX@~(w;~=v?$!*r4◞&" )$ǿDrXZJZ,UbTRmJ;zsOȽ@sE54)2d0Y(" FʖEf(3L4ESjedibM RCR-blV(L@)(Д!D@Q!}9{:>125&fiˁ`d N!"D) 5<Eݠa0{_Xet[wƓ`qMUQ-$숊=wfoj嵯>&BB=@!Fq')K+o:]2؊ y]ّQPLj(13kZv$LLeȊ5TiakܨFXť.dF(vVaݺY:nDwe1!F7`k2$Ў H:|w 9QW}Q@X*hI@RG}dJ̠ P{DZq=LI) O;czGˁ]BRJIWK͚Hե2a ]>JЋڭ%f@7j+TJc}H0Lq7;ˋЮY۩bNYb7!^CSKPk] L`i;];Pkjߦ/:)2^ˬIy[Ӷ%VrJfs{,l! 9hŁ:)5EZߜ{`]oL5oIU6OY^#{;rԖ]d#m1IA$6Yۆ6i4cw s_C ~ 9~' Z^}PP_'ۡ׊}j;k5DŽzk,ȅbys'D""Fc;|mllbR?d@= J5D/-뵮4 =`ѱ$/u{ !chD\e"9zR,ʪ$j$즐retd,4E V`P*.V3)\ȖMPA5x<ݮZ!Qndݐ* rm7wgwLdl֠]4E8p/QMb{x#ʢX ȶ>W)N 5H;|)Aۡ adsy2jv"VVN$@H&u% JЀF܄39"TҁI5UيLP0 E*UL>D5ˊݴ ?^( |eC JG1r&)Ip%A ErUBPZAJ2ƥ1L@" (\483kMhVilݰdYZ-\F֠hiXXPR֠E&h6QEFUk~$VZ);c3L҄wf'!31A' y>dA!j1}ʂڛϯ4}怸/N?#AjBh\/q;P_TxzH'I x,,<Є\(Ϝ]1왮F^W) B.(V̂s Iʘg`+A olò'?H` CQ?t/SC?F8E>@ ÇSH&BR& X82< RPs}HXtAeikr4$~rQbQPONaQMaִ8th0.cu{Kd9 \xq4 { ^1)wEs "X= dRbN;p:5P}G{pqr9BTb*-6jR%b$*IB5E)5e( G,Hl#ZP*٥P7%YL*D\X5hPh]]Tw * HP p ӈw*I `U1POl~@?~g5-DD(`ODQ̿}1>ɳem0ѵԩ5(+ X"(H\qz^:{  2}I=֭b3\ [YktQAӬpHQ6Lq Jݹ(BD$-f[?Wc9Lg=;(sNhHFI0!.:fd]'m*!* LldJS%Eg C .! di%tz3oL&n'lRZQdPőXat]$dB1MdQD RIHHXY!DDJH Z 4A@)1P*"ıH EdY,RVXP1Q:l?f!Iq9" @Lw($`FfEA9} v(R:So+SJ~a "bڄA.Q5P]y bmsÄM:nP2HV_R>v>wP҉B D)UJT8 Pp^L]Ҋs9A𜜌S">p2h0JXm&pKF9}Ν2jZ7쪀.srDMۯ.mad%X 1ZϠO=FHA1c[(~v8+Ļ"t4dvmw8.q^i3&k<h6Qo&p{Nȩ;;""xL Du^O[mv%2˜41&-Shpt׃}{~! ؅&ߎ1$:.zRy8 9y%Ͷzs< ClW| `L&hWSR)V`# v0gi0b.$AYg l $Fzy噔bvlB1g.)MirJVLF @lDrCJ pTFa%LHra0 kcΕ6~m 0@"XL ٰ8!3Δq0RCA$L7n)1mT kFl^xA0xHr;I>' Y c'kZ FH}veD>KѫF1Y[BeCw=>cFWͲX݌MB[EDIF1H jmT`)r^'O?Qk&@ :xsO@fYA@_6EIj)dTĖi$Tʔ" 20P4ԁYY֙jr H Db'B'ݧOHd6yT܇uܑҢQ#@*MR[V`+@"4 >PQ 3O:\[6ގ3 9(=tC/ PiG@ӸU3 v8i梛DƩ 5..Ab}kFky3NFL% *U:*z%ݿar_]{ܼ׿M q .&J7!/sDnbPy`=4.%Z ؔk"Hɉ+n!!PU4$1= 杹(߯zz=~&8 k ?n>w>r~.߅ss8݄5b%S*E2"wZT w #M~XCEߎL#Z7I/kMcō2TڴDݢ-h]eCqL.j0z7˓,lt=`N0N=8@m4C$O> E48D` %b& `0Mݠs"=OL(rf$Tfc)4!DWx<2b FQz:}щ? u+A IvX|a>ч xg5>P?B_ \%[J)Zd ZJi*m֢4 "(wo1LÞ{mAN.CII0By" XHS{ɉZeZs(=݄ksl8GBh{mGvCQD(CB׊V%0?]B܏w-0ᤘ!'K=T?l`r~g *}oD2 bbLNDDtBSVFْ5U Ȅp\tR5TL<|y`4eh-$@Gn0!̓NEsكo(kvV09+Hu&Jw~Nop{9`QSR$1HP.Y&հ$dž:s(S(WSMAzVdhNd%8*H$4Tx2%qCVQc+Dͧ^=p`$d#%I!Sq99b`QAB IVQ+W%(D8HPɒnyI%|]No~DBHABؐ=p̙$ڎn;;"Qa~P}VK1}pf|jr䞟}r̢RWzRf0iL&R}D>Z0y5Ė]qcq 1K~K%2ս`1f5k^&"+XC|BCi0ah k6wmcPu!mYlmeG‹gD JL I|C~ϭ@럛¶i*LE\Dq b@8ew(5﷚}0Q~x:rǦ߯~o%FQ" uy[t}ꁗ0ƪ09PwC'6j}cCxpI -֯Qi>B4P%lO3H Ӣm_dТ'U~FK4LNgeMq>@٤S5c.SQne?~"qDdxܩAemUJP tn%z?Ay B%wZӼ?ğ^I{Nmʧ*D@R9\Y:g7kpx)FpU \P$FȻ.?Sn< YD; *+);w8B+Rd'6iș",nk[ă8o5ܚ#TH0(`ʐHm"Dx;6{+p8dDpLĐF掦]pm  ]8"k=[ܖCdřIfP&XܩԘ`hq^4/*[o¬&"z<$D|W\]~"R"bH& PۍjCx8C1j<ɐ?8 hsXz@S\ӑY`WI3zJ&f3;q)e,]؜-vnsFǃv'nSkEG@%(qf81٬ F~~TjA d3އƎz^W.>=@4wxgd#I5V=,ȍqqP%"r) }AJ~ )*zfG ( kx*.2ew"# NN\+\jY d%Y1͊5L4Q;O|xC;89 hp`?hh%H%4:K #s9G[ ՙUFm5&T&D%$ߵ3\^U6YcW&X!EͯǗDvfge Y2Ej GwI:L`rU9GD'A2}&/(y;Hzw2]qCȢ}u<4}!< UQC 4*w~QUc is(7eD?!ٱ?1۽X)(ABM4.>0 r J}@  PC 0|&g@ ƥ>0D(p!01 %e8TQ"s "~i t;Þ4& |M >B:mU3pC UMM\p:M4vXsbTh8"ܐ%,YnEn|;@I=8ťl=C9/y6c !$,w.6w>=w fnp Xm"ys~!>qظ cE(monCo?G'':]`E9*m=?oّÔw[4E8g{ck{Bye?\ٰ' DZyX߯q؄ prx1hǠ]:o vZ#[h9Wfwe6bJXI+%vb -?͇#֮%M*5h4k|V3ް#h](ԉɗvu$.2xG*'O}vȶ1[&)M'!Ÿ+_$<(Ό2êBL>8z-\$Ց9ɷIs1~^NOyFVMnMٓOs;w!;uw,o+1 l4DԬr73㛾ִ<83Tʡ{<Ocd oPsa:``]4<+ i3i#;p;cJD=s4:ci0Z42 ]-oEzWDqFcIʚiha USbrm]'1{pilȊf)E Nf\>g}A[<ShH^IwvH w׎$y+(>"k}έM+cI"+HU-$jI4Eilٖ-$YRVEةDl)bm6RQ٦l_{^*I@B3!UZZdmZj(UBH} ԫB" )fFiEyMiEBHt4%4΀;`x)MĺDg=8mӪ҆!"`y,I##Sk0 LCE &E K BB#2AyyxF!`ϡI@@&YI˱ ); m8M|HR'bYp0*q {L_yߨcv" sZ6!Z'(lƁL&DD fbYRbb`"TԺb }cr];-2FwmչU4hF6wL{ p֛Z, v1LvdkD`y0QI܋r<ɒp4XXXQĜsV wE/ݬqL8 +l[ 6Vz2csr%V"/%0l;p) #Jiؘ)ڤ$pc&L;;Àr-y+^N =F99|P2 (i&IMIC??#l&vւ /jtdjJ=@j\V3dqNQ_'y I )R(BdBH S}24kWDf`q5Ÿ;TP ~\B DAƚ &`J"&D!Sr (^b3F56p4#T2Pb&E)C`ocɀ9QA:*29)z!9 SDx@k-m"mL^(z ]1z6^GSąֿ~O߻"~"s3;쇮; '7PB.djT`$4R!\\ԫtѢJүM&mAXW1$ Pea4-c) 9RE1@9J".xd0:aTTJ혋e3kB @OjʂD%vT,TplI8ˎn iԈ]uGG*`L wKyh{#۶Y3ۇSf@]=q(s3tۊ79e6 (v0J&d8Y P?~Cvf̿:1[ #,ALyI쫒R~8' Q920'!O3vz+\rCJrU)LR$GbS,G1Ȕ?Ba@ T@ iC,O49Eqb"{ !dd?|ρώgvm=;.WdAyńS!NvOv@#xACh@ph&)V &%&,S#),QcFJLh6Ũc%ThƄ&#{)~m!(b?#h~B%SW**KkRz@R=e? Nl՘럍eq߾3O3qMڄNѢun̟ۙY͚Jm,%C~Džxka"{|?V̨ҳZR--$fJE$Cī"dL5+vN=91Oa.v}Jk'Ho$xC}JROQ2re& O@<~E?f(0@8 (ɲf5Rk2RQCe),{zřviiErAJ 0AsppUiJCNKLd[Aah_@%J@Il)6E b5UDKj-bE3%6j&ſ+d/rBևRD.JGӠ\`8v hUT(C (8H?Y"qQd qSy:b im-Fu\0h0 *=)BJPLS0?J nQG%*` &JT  ܇)dP;šs A&>f}Pz3̰׵/eѼCsQ rNPOH~YZmem-Ϫ/úh2! :u9{ Ŵ,ՄRY+Z=S3 '(2A$}܁z&FfqTR҂; b`E~Ĥڻul)7SlA +"1!9#QD0|?˔ <}pyѣMA0=rEiZb" YW}5[uZm"-TA,_o&5՘}dlHT19j%"$!! &0ƨA[ xsN 5/]`9}0]%Y_+Fֹܿ[Y nqtbOFh=[i4\wctTܣlr:mf0= 'Atu||bbP_JJjϻ;vLy9ՑcbWs- @ڄl5kUѽvNˡ-fjߕ](S"{=wIL̬lTL1ltƊt ʕcFS5v ӂR3F <#5.IR>>>x#8NaDEJ{w'_2 %cMi&7}-^*8z6klCaN>(|uE:O6L0rPr1dT ԉ)e͵FlѢ6MR*i4IM؊b3e-2 bQbN2c)tx2 Bm\vܐVQc>qw $W1ajZC/?o|_4 {O!C኎ {"4^QEp5 i~馆;&$p8@ pF C!!E$DQE0(>qG{bBÖ8R$Hd'B씇8..8 ɍ༄<$`Y0ԙdtD#qS8Tp0r >\ ׻^;v`bbP܍%8 tB=h j)Ovhvh"'?R'a9 A{skPܡq{U/T?Y2ќS%(&WR9O뱅XJeIѕѠp ꡊ` S J Idhl)Jk)m[6"R\eJbd 25nv'nNTL0R)Hʔ[;ÛdeF)b^/I'p&?wADNHDQ̀y@IH?E!:-: /ml*d QA]'mM޴ k3o{d>O8< n RDI4M70@e]DNtR-Yx#6SHQ|tGQ*?D{`u288M"*8ہ"L;PD- A`LCxHyq|v0F)^i뭘PQ^BheKaBA(%&Mk`J`PH rCA v2=1ʀϺz/ُ1/(XkBdMT$MPRF_M~ SUjObH`f>彉&&ld _{Rȇ"{(&b8ia2BΤThA04IR (:qmI\-YvH"ɋJ!I#BpAkd%MW'* D(h(u x枢.٩²Y<8,.A !Q1B=oJ"=9%)oﷶG4P4(;n)A%`UG:"%TZ2P@y/%%RBac"4Djɋq/b3u?"."Zwn{HzL+7*.͎ޮA;G@;'u<( n̥ ( E5g;6E,ؒ1ĠNT>*,L.ʈ݃=&8v `B@jgW]w?@B DPP̈{O'A;;unw/Y8SrvgB^x|]ȹO S`LI [Bd f2Pi**hnHg܇ȣx+r<+0;d!юtLB\%Lre)u^v#p=al,^Dx[-maގAG#9 >eWZZ(x%zpn,1gp[D'\rxMz>GnGiyC?OzcBJ-Zm3E\zhh)BM"$RSIjUY[SdT|"pWh8X@IWv3\Y9{o=Uw:@Қ3W]Jfl[<r' pwbzz/5of eT&Tb0s[{[:iX94TX.D^0}@OED("2Y! ILp$g"=I( LcT%\aפ;YQ`/A O9` JU8>=tw'1TurU&f+KY5뭫b"mLX]fyyךNjS-]Lk1&Kc㶐TDtCkBpUIݳ^/kNhxY05M"E,mfkW%Il45ڟ DE0 ?ĄMk~1H4{tD5R-:Ԕ(DԡM䒐pSQD(BsaI9Hdph&vqM$840A!5q ՅOR}` iR"deh)!`)IYRD/N}?FڃI!Q3B贪"ve(P? lP(IdmlڨM,mV* Ucm1)hKf +SY_>=.71c.nn4ֱ^;}&9xzpɷsjKnHGx}e;ϼ.GA>e:Gz#㼻=Jz\0r7*Ώ}c*&"4pD9/> SnH#wN(A"绑A&DW=y>uwx}BmqhCD$Ow qŘ}>ӵy+c, Ree5?$jC[_db~'Rd{A·1Xbiryڜ#ĚoLڤ)i rT(*yu$tF-Ԋn:?G]M N/[ouG ܧ.ǽK>8,9;ѭ" }AMR0!縿+ D2K.15 J31,wH#(m2 o>j$;>ĐU<1recЃs3fbQjXJ6e2V%i6MZiAU¬7ㄋJ 3W|t\w`GRn|_FzoW)Ayh&X28PҦ \ɴ cn ZRl֧d8ᨙAaJaPO0jXGAKl, ^kCy vQ}KM'{ƒ09 E pŋ4P‰DAC$ʰ ͇2 +cf4,]Uɱ`8-0$%]{|U:v@I2@|e[5ɬ&Y"QPN/=P Aޟ)O)!>"B0ۏ%Oˊ%8NCtئHr)P97'*B e~Z:t&/\/,x*wETkTlFj@C4x8eM =R&"T>! D*KFFHPU҄h&@RRZ&V̱($) Х HJr@(Q  4S @*? :$OQ1b}_nᑿHh:2OCI,,UX$S }Ht0p,00)31Hc3^c͘ly0'QAN~KN>f".]J5,ZQXT$QH;DӺLtbm2 DRRp``Zg}ǎx;$ɕX\3˾g˼ܖqΝh؇^( 4vRƎwcܼ#H!+LEBB ɳ H+ GdY8SM*K.FRt: i-LKT6 Qр # VI^ Y EDRR 6jX[/Sɼ7T۽yyy#SZ?ˊ#C\T"A!N^<x278prf"6'[!ǒJ<ɱr8(v9qzә*h!e0vo2?RjFk*h,e#%d5XQh9BXi?{K޷GgkɩKybehLt7Vf_5:]𺅥zd.ѣvMJ7WmQغޯ-]7q=PDj~}a#\9ĺΕ$QP;'AÛtcC]4%QٔQdo(ӯȾ`ޤR.L5y۝S*it'UU8ףlW!.TK rfNftX- O9$$I7S+#sè% hN52dIg2>hڝ{N6" q9& AƩֆӒ P* |6I,LmEh%e(Yq<|) Pn!$ [3L5 `܇ 50\H(P7c8ʑLM)dRdj-"bT ˳LYJ&J)hs!hMRZ QZP5W7-ywO,~,㚱o.07$(j=#H~{d'#F3ݍ!fLIqq'4c+&"AY-,5QF{KY6SCM1${H'!X{m- MNz0E:Xarjq'k^ۉ+Wj*_Q2ocLyXV,Xbp" |frƼm Ag[DB Z1OFvZĴ'r!wGf.u=\?z)1-&黠)< ! "4(#=MMLWyYr;MCtQ#MY# ӝRNfS*bչ`7ЂRI½QQ1q}'Rjsq|>(sƞԢx/v.g}ߏ|9{`õ x2hBL:ʲ\,Li1OtpKW6]+,BhIVp0;'3arK{'ϓ}ߡZ"Խ(a3LםDZB}/[[q3)ʄ襍9N*/H<+dPgm] ]VC$M I9/cj^eLm|Lt_ɩn{+gy}3Þj%k2T:Nɴq/LbMۊS6#^K3sŎ{`jo?'Wu!ŐOn4Ԭ1QQ u4^iWz^̞-Nm_ di>^j(icVJ;Q/Y(3-#JW$QڞZknr5׍FXVq26n"k'ajn!bIx^ 8ߴoh$#-(Mv˔x~;&Hp51V$ɦLiFw(ye.}}agZ8.]"ge߅щg$wu$X( *,zuJ~ ?f$!LBFkCX`Zإfr=D*p>H/m à1tˀ"@ T S2$ҷ*UL. AhфtTTFj@ooN;sv\;."z>^5Ҁr[(E1()۔АĎ@ю1va8)oT>]bs;P $_$N88`!G?%_k\5%fzANY ˔E$rP'}R2?P7γ4]PXIR;[ QS4aI;%#n9kͫ^xZ{ٰL0z"EOZNXa D AJ<~>MOdT:߁ח~zU7n*D@˂)gITGrBÖW~)DPcT9tBBD"jcr#z,!G]*ًč"i\b& &2W* Ni8j(8G?Žhs8 D| G?QaJQL ^4FHvBԖǭ:zsGF }~hǾi< %.QlcqHbGxǦz~bAAB'`wG#v') !'28ƑI;<;CIպ|9-"iǒ=H]y(^U"`@!Q$LL1M@0zQr;Sۨx7dpTdNh* %kFN!L\ySɵ |O%X$߻&$M8p(4N}~D}\;<4fZ׷=DDXGqyJT*ŠUH.i¨&*"i4pGFD=xkkhЧ|:C{#'\F"vOQA1Y`Boa8W!}0I)i;>50szSH0"Ot[`p4R(mHHPfZ$6HbN=zM qo@4=1B!&SK-&ih%d\(:NG@24Q'HYg *8do=q ǐ zriԡt֍: }In)𝽝U@۠v*hL D]89ljge~ynvEV 1<&D4v_:'R]bUSNڛ`bG&ہ4 GiX`  ` è,2ήAp9BK9d2Bh(C}e=x^ɯr)A玃: rErE)/^ZFkq rZѝj84QxJPOW¨ 7TR PT>?2ñÞ~wEH`/;;y}cw?:q؋;}Q{#%33* nY-n[l-#u"i4LԎA"/ 0vmM~fG38}{sᙨDiH9" b@pk6ٰǣ@5kz?D.N=ݽ, kn oǎFQSL1\4r7ãI)+ȺdR˴ 7fbsIMBTctNMdws{ȏXr^Ͼf@Tm(JTh}~x'][<]t/)]N`!w;b W^U(ʽ|kKJM!-S]/ODk]p\GgU i8+[Ci&dư^QETM v38fy y2@s8|`Wwx#0oCxpn:#izZ h'r;GM/pe:͚i|=l-𗳎)e$0dSE5.)U 0`_`)W`2Y,*=SSh=ક1(K A [0V9󎝔:FӬo|E; ?(MU~Vd@^~)EwQ%v~Dm[470&%7WF4a&dGk7aN[J%N#f`b!@KO8&³#€(W`WY鄗IvO"#mڨFD_Ise46iR%*D" *7or82 ^t0Cv{ꔦT "&B2涊nc{eL[3u*qYqH8uu><;NRD'-/<7Kc"0"=w&u0rE#0(ҁR]3dkWyμg}]J]ʼ86kRH;+JT)H 8դDwRFiL8U wnEmz$}G\j3x+sSRe`.BΖъ!"9]#RCt<[[H+\Š?c햿 u,IB CE]uG:46#%TK(U(΢.ZLҙQ˹1s Ġ~(hp8":/QAP[&v8(%>|cF5;QEjC#f'\(H où(K[E\=쾜@yQk88];yͅ30Lp Dv:cPwZֲf(и]($E\Nn'átMb;D$9c}xy̠-A t3 SӍp:J&Tia9Ƭχw<\ T=jMK4\quv! +"8~QcOҐcLPtpM.01ŠESX $C^e*ދn2͚g2fA*:F-ҒR\2A,ȃlBxʇ! 0-LN s$@MҒf0*q:D^-qPSgfC^Uū1O\嘸DBk(M!(hEyMkˏ_%GRGi觱n4*"<map{`TRy/!! 0#x+G8Wn!}k<=\wfD³w[$2YI&TJ2Ox;Ԛ+ZH{~t]sw.Bñ8cɟAnĂ_ވU?.|tCNzp(Fhq.`g LL|cI `3L{ 3Ġ`4d*)UDg3:"ƓL1G9a(Nt8s@$L_$1'~h (0BW@v"HpkZ>?LD YzG'S = BAFf=˃Opi(ڡ,@ 0LIbԀ)5؁r93{s5ݓB ;{"sĐ[:-veRc#xz ^*Rv #88wxŎ}-" n߰'S>G¬D>/_K^I/4!ޱ5 JĴ#Qf4l\w`&`G]CBof;ސ""hfaAɌ,-@e $2.) (r ` bRKijQ3Lli(C΂tT[)AbR)PKU &Hq'l1)EOdP*УJA U1 d\)GEuj2Z(h !BLP2iQD(U r @C] kf!Qd; /YF*mCS >ײyǎvUlX"v+%;uMQ8yq2\߻u28x@BzH%IFoOMt<  a>w>FvNDaPRf%gMΓ=:WВ0{%j3{Hmӵ%܀Q3S#z{OI' ||91D̓կp4EI T;)3&'hf !8p!Mnc Ec&#w4DmCB2Ncc@ho ;;sqk`eIDp-\іLB">(S~VG.wہl69U?(n2UdھN ݸr9%L48pBPtk5p'"Ì6PrPA7?_Gi;PPvsJ˫IV Uas|;r]*2#O~Pd}cWlS{ msHm]J?t`b) `Pf^*b]2lU&\k2i$!Wame\Ir2m(D jc/$ 8%k5RZ9ۜs ^MLavLK)nx n8EG ~ZJF-I? HNӅgUg6;y״"|IaS:Fi/6Az /)*R 3o LH/7" %N IfcdMՌpsiLWY"QmkkVܢ`mqEJ hcQQb 0R 2U*;gޗjrIHj3<zD`jq #qJz и7Ňm!pJq uoFmE2CIʇ[U>~Xys{93"5Ҥw3q͈H?Є@س1LLH _Z`vc9b&Y<8jTEQu** &T)8~"^Qh =e!~GvzLlIzWEk1L8 M qל!a\! Sl1 h]ޣY0_o5oⰙi5n׏JA&"~b;V6M#Q.1ecEFkYAfMek- !*C Q~g^4?Ed9 )FQ!b6OWF)*^- *B{p強j_Q}s6c%剪"P@hʡmDіS8NhԄqw)P- $LI"eNIMJ SsK;k""p;[kS}7;4#J>8ʩ߱<+Ō?BCGZ#zx8Xs}z$>xDBy@u 5O[1p ԉE[ڄHt !'a}= v(@P• mSPu8JҮu+Q`jBaF+%WR"p\%~_w> ,VD+c8g \(! "dUDD(J;TZeccDi$VMZlabi5"#OOc:g lM m0x#O.сCJ^R}}fKkF_(ظ=QiNCGSQ_誉w!0M/Y`p#~ NI@nDH@ùdĂ19J"T ,~H'zbVha$#Ǣ~sg)1SCr?HOS튯2p$AbĀ@RlѬi[k2I+($̐uE(*yԛ hfJJH) (EeVҀHdiLFa4YE%ҚOPp~*}EiC?tk[)Zx0?w}XU%4h!l࿷kc+ ?/~(b܇tOd?!5XNO:74Zש Ocz6MPt\usA*j&x[ia Xԫt~:'jT^L >\}f`  D|}R6PRmmIIխCEli lؙ+$ʌFHdI^\ɺzQr F-~@`aAրCçncF*+QZ4O) `%X4ihlOtw}kVQ&w07j|^;l;*"J)?S@C*n k*P}Eh&.c?h/Pm>&\L2ZpcR'0%Txklutvnoi$)&2MȻԞz0{:0! B&DL:%*/S}?=kA<0JAی>\Ę(QqBˣd7tc׭vcr"c}d4xi&&dR-?'ss\aOrMP*D% 1RHJ !o˰gCy(&ֆ32fK,TY:om 1@v=D P)|dMIJgܜf*dq˷+| r!]Ǧ 1.KFE>p rgAs=FJqYlE1E4 LXX^r+$@ ͐6ȱW$RRD?e@2Cc{}9f!sD:  Շ>rav>__Sv)Eq|M :d0"NÓ[Յz9A ͫj "D '_CϙPCO%ҁ@D.` G{󯡄bs]$%J id$̆I dQH9'ڕ)4>Vg\p~ soI#zbC!=xAsv!paGR~I~@C9m&Rr#n\u-z!*&}vmy\〉p4Kl4'5)H%M&70F&؁3+ PdɯF¦À#)&2fc (ԋ(A p.$94)^"W#b=?9TpD` h(0h~Dאh 8"'mmHF_͚a"LـeHYN%U+KeSA)c6Jy%_Z(_|,БÔ(ͨt՛Rդ_?GݦdЈ&Tx(BP)YϻXukml8˟-{W#[3UCKZCjRCY'`fE*t #~N CAJ.潔J/P8]+UG\nTj Hbnc, `TsR,*D.$d]eu 1%<EloDl=rFB*TFAF HW4MbgLPJP8C m:FA|(-wZJ2X{dd=q-`p(w䓂-iB&/ N"b3b&e?:W3 Q-IOk 7OzA+8>53:BKL3r(w9 I&@| &Ѹ# WrolmF6RtH-m0'o9D;~hrUyz3[># 4A|AU"Nt")w}cΎLth”|H˓aHnqQCh;6!녓agaQ#Ē"sYh(~ TLFۥaW$F'PL#/'QciE/LHgM({^Kxh1~]x|t%3T5$ ~p>k&=4`d~'aF4dգ؁BA(V,4X3eEeb”${ J|BH;@"w5IJTQ R`(?(#J PhR$Xh)PRZE)ed Yjm46!32҈DHa)(BpOЩC$l?HB}k#n~E,z)k[;5gC#BNHCXF$Q!0!IPDQP`ia#|.H)"&Q DeV*9 Zt f|`Ry@6H,2kEL$*iS%0jV8pqgx{?עD2=wVxno^wKtI[_F]k*")BWۏé>O1*}ߴCp.=YGכM'9?PVIKu_ᇏ]ppڏ(]zReuU lƱP5<(vg{ wA_r%ﮮG$=7;f/WwqvA4zt[({} +;xFv{y(} ;7n%kݎڴh^}l ٥2>ۭKU}|o[@ETʧ1.{v{{ZZyd[gnWwQ"A*R fKﻕOT Ewo(;u)Tz,Q Vu(JVwIDu@!U P(*EX%J ( JPhW@((vA:u5DBITUTJR* R * P+хE *Q}>!=kᾷguca=pwwnzOmV1ڶmզhwXhiEh4P}ER-z : {5=c|7١@s}^:=# t݁@PH=*Ƥ}^JH T Uq9ޑ^zwwoYET$ H3YS]6ijPl>_^^wݭyUއ{vocA}};"Xs6Z5t:w/{_wnm骥,jڍ#kw^cNQT0h}e{&wZMRj\O7nP%ظ>N|JhnNn{ݐ]ۧU>t}}OnN/vW@n{}ƻ9==yviLj^!TUwSj}f_]/}6rvھػS9f՚X}W]m(5]|9q{4׻}jG[޽s^r]7vFm׽;{]ulmkv8w\2R2m}om)w޷;}{^q۞Fs{}dv%ʾ:հQ>oQmAA(v亶W@fJn绗˻xmٟx}='*5 w݊>^t`ݷW{ovG@g׳҇6Z_.u*ru9TW&"34 ٨0Vڎg{̾vU޷9۹=z{2mUΪYLa5j@ )2mI5Q3g+>S}{ᄒ}=٘m >y긯Mn+iSM{IU[SԡٖM[gݪuGnn{w۽ݶ{R{jܐ/^c=\w&ɷ ;Pj %Hزfn8n4[ne_ F {r3]eՆw;Vo+8[ەR.+ Or9ݲw}"l [ mFS+L]]tݎ+=q)n}I}f)%hNiJ zK;}۾j-;'];_{u\wӺz4P (XqgŽ񻹷=;>6|z m:{y޽9R[y@={, /3jr޼>رv*V]l^{v=E]ֳ=zk+ӭ-u.gC^Wb6[(!={ڭ{SD 4 U?&S)jG2C@SAD@#)BS5#*4~A@64$JDcI&4COS!z@4 =RRD SM4)šgyLhcP # 44LIL MMF FTLQ0О@(!H)M`&ML=5O5OOPh 4??!gŸAwfSTQQ @Iy$@!\T43f41LN~Z]ٙ~\sUyoUQ3fcVNv_*\(`8GwOٝ # "BhZ@@fV6Ҙ2%HrP@PHhDhbi)Q(AFiQh AJTXU(TJFV iE hTq(UP0A(hx׍)DF%MuiE5*B|2R LYQQh7A8H ^]11̆:..Q t1%U32ye2;C[o!B'~ލ{n]tĝ(F mqwˍZSFZ5o+s^^^n:5"0l8!2nJwh2 tċz`)fkSUv;'gd5))FXWuܺ파RL dgS]r6lEb/\([BHȘr:_u*F) lٮZ&m 6Bl5"EY1F-6eS*6mIi MR&JĖJiQS))5Ha{G@,(EʪHVB C(b$C<$ aD\XQZ»N b9H"l&A# !$aF۸c {i. B )qϠ< ڜX`cDnljX0 aUf^mqJ\k2쑢f,pGc!.M"B H'&5h2RB , I ORn@ȲG#A[4R[\쥽j۷m{jEK5,R[mJm  D( )AQ&_.\oȿl6Öղ땝m|(Gu нG^g M#z=o?7H1,-1r"[X0f<1,Ûマȕdo{u'J}$,IXX"=T.$.|q #e!{r{YrFg҇?jYS||Iw!fK#1* f pX_lGztTBDy"S J-VXZ >!HG뎴\?hN]AcAC||ow՝:'ێ㜣 ZR)t74>oBI6=JR|gr>$ogjuy?0ocX0׀c ^{1__~}~!Ҍ`سl>Ӑ$也*b '3Ѐڋ7!6*jSxy5n;.7<&ΠB~{̅HQFkI t׸G/Ub^^L X%!);^ޗ{:_:;h؞׻^mI{5M#aw\ɽ\Ts!ň%(}G} eqvC?n[u[EjB,l X|?/`y1; ffB|!"Q%c#dw;u9;?ͯ*8j{]e~H< &cL>x|Wyĵ]|2`|jpo'c/8rqϹ7{#_^GPqȔ]GLIR4NjJ[eq16' :q}ϟNQ(;A_-avI+h,!ڭ%ٹq=E=d [!bB%45EIw8x;t}.+9<,n] %B̔Zg+A[.rCƺ"BfQi%}RQ2mk7!ΔҤVT@`(/2t y]1  osJ;:BDPRдBm?5s\ƍ#\ɾyRj6 E˛M5?5\.z/[P{v_IO#5ڲoa y4,,d!M+wi43壙ʫevZV kXu'Ƨ*S|8t+Vo4 x` 1웵(ڧ,LlaC1t0PRULcI!4"l%ITQC -w@xaIhگSiF:2\D߃'V-$pb~DaB9BE SBVXX'1ֲ@FGn_2绷CøbKqp5 yG8 Y! ƿJl<(HB/\0*9QKͥU\9arҹȁH>甫jd1MJRAJm4 e"u1KNn.qN9Ի4(RcTi >yE[%/x7Y4aR!n;)r1<~wsi }{}A]# Zg(Ds rqJՑ j^ bM#9r*k?^ǎg;Œۢߎ׍B.x>FkrvJ>oC=s"!unEAK1˅0q]z E5ܝsJ8ǀF|9bt"o r%:J*:tߒZO3|М\Q C*TutŚ6u(b"t15C>u.ơʶЩ%YHIp}rንW$寵lW۸CYG!;=>/||x PfyOD3C1rJBBq$SfJv CYxHlI7|2|u8OؖW>,) ܡ=[E3 wm`( hzK4͋XZܪ4lhkE[eW\l(jP&h~ەFh+*CXTX5hԉjJ+{IgPH8di*k;dCӪQLIiS,5Hؙ1-i4NrFHfA$N]-f!DD8dB:d\Ha(juR*t*Hdh;˝K%ɲeE*'~)ǣ'.Mv1"Bia0{h``1>=I23(y# 1-I >.$Ww߭*DYV$R(++;m\hƃa ; ÒRU%IFI$4A0YN dL¹DD/;V1aHFlDHU>zR]NH XMMй']:Rs#g#uZ&fY$E9drGr.(we8*r0{̣ɄWn$S6QEf-KZaeAH0o?]ǷOFޗm-9P,v~44QU[IZL5 K4j %l6V7D=EråJYCh(~DmN#&faMkF9av,&$W}uNSo@-f(Ha)R *0XOu=ֺRshVWK4<萓&a3u_]p"Oq0߮"Y"Yb(4&A RHq %Sz|mh 4dc~[rmg>F'ct ԔH)KwPb.IFZ-Lc{ciA ߰ JLuZC xEMxM\% eرw :ĊYd "MACʆryYr%:ìf(MUB**HJ204TODIh5F睳56 q˞!Q4k[R4QЖ+E\pj=n+>;6 `X(BEf4s'!I)Xt"ဂO2(|Iz#G}\/SvNMY=*+kJ3;pk&kd:pvVjV"썳) eҒ6-]W2+ sD>P[tW5r'l Bq67p5Ljms:po1w8ǃȬ eUe)(b#\fƸ͕CLLZe.be.[7}GM0Kƪb#G4^if5jʄf 6e&8ƐI+j\BI*vxD2HRqEhr @8DT5N]?Uo_d\/ylT;|T{y<$p>AyJczWs-B>NU[D|xsp" I!R){%s\uPj0:mDU]@~߁4˺'tU!w跚eA 9@_=$oϽE}{8} .(jb"Njd}X͙*% ӴoJ,R뷾'r)TZjQ9Z`2 $<%ꡗV1dh%8Ғ'<\*j5~!h%$EO-=r΍1u3 ܛ(~>w#N~Awb ENAɡS*V}+چ14"Kͬ1A)&W:/(12N!D%ȄchÅsʁxwݙPqq@~ȃ)8VXҕ_$ !h Cr1a8!>iW"09!+-89Ǩ:m;^N2O\/eNIf\ :\ c/ .7hf }yAt$x{GL\:y2LE*(b",˩a\Q'IA| ܈ЅOg'˷nO%^:YytwY .߆xQկk }?E#S<Ľ:ChL.OuYГ|IQ%{TR|ܞWh?T߆ȧ۷Mg뗕;&';r:tq$!Y6}U/jϕ[ZXG8a=<85v:/Լ羮nߜE\Kh~T@^'GC%'""%:yB?l'Ȫ#`0+T"L&ffj *PN#Yi6mBMs?O"$Ԑ$2FDD_)|2MaƄtW7:DhdU['d9z)*9qP>JWypwLBir\SlZJMsO'yk*65xx2|n@_߮&;KˬŝcIܿTѽfhicwVeYwM:>?g_JM njXJ$O 5G(L$[$&E:Y#BPUSpAx92N|ne>1G[JP矟^35eŻR2+Zuď\U'G>+o^Z9?+f 3n9k>Y,f`a"#qSѥLwAl0/"t4^BuqJ0ƄQKq/bI3h0$&G1CPd7z%7>QS1wv\>u>|aX9\C(EuH+J+[;dF<Ԧj:)]}YQţRQFrW Y ) %RbVLb, #Q_>w; GSWW"DqH"FH*^ G+8ć% X;/^ ZAa\ND$sӅ5+n* fط]vg$T$ivs$ {606Zhޣ|*ĖnW5űmKRU *&mz˦lOnfU_Ci1F[zuteЖ%0PCB#Y5+h5Qk)2Do3%H@T9DQ]#F(`6\*wA9T(Tݾх*  чjhbAzaFCqד'O0c aHH0ʔP( cp&S+]Ap[5!h9UP4BX( A=d!H$KVh۲RJ4Y!jdDLb/ʫ lb11dUIdcj+,U2I[lՏWJZKL)ZkSMZRmi*i3MM 2șJl"K1,Y5KIj6ckf-lXFF֒Eh ZfSeYd+f4I)6֔m,5#*1ZMJc`ZVYRXHѩ* A#Q4jD,5)YjehXR JBд V+EOQhlJKk\)`lAfP$P͍5)fQQlA̤S@IL%Ej6ҫ26IbP1#&E`EDIe m1"F,Z-߮bČuv% YY*E"Em2!,صMeE&V,ce((`QRYb 1iMRX,LĢJdEDlSiF6&Ci)2mBjw]Q14E5*B6Rf"Q2փ5&0U3kldQ%CJP7ƻ[&ՒֱF*XڍFV-SJb*#kŲhL֢5*hɄ hdiTM@-1 &S2R%L6;k4Բņ4ES*YQԒmi-TZZf@feD ` @khѤDliKM6wuX,SF)Hhdو,@`((mIQlɋF(mdڀɌ ؤJշe 5FĖI6ѵ%cb&%QڭQ!P R I[ɍlKZVorem& m#IdlI5 L44Ab)"XbFƈPhcQfH!RabHBh&I4`cE PDC34c1& 0b*)$I cR%4RZf$i4)#%&, dFeR"EB3$bP$bJ2Td+L"W1D;"B̴ҍ*H)@N:Kgsi{Q%93Yjvh_A~jT&w"J'@:H}f?ޫ-C%6Y ˪GnI{>4y]8/9f* HT%AbѮ8p5Y]VC`ҥ2exTH&'#apU::+-T|x5?s\).bP1鱽O{QBJHA>|Y.F#v   0y& xQ6T]sZ6o(CoPo='bq=ɽD|I%987o*}eC1.=>觇GLB ESAR_Sh9kLf5&R׮OgpoX24IX &/-BzJo3~5މkATw%4D!,e*OHSh3d)x10qw˜rΒqqM$bFHꉠ@Sew2͑)IY˰*!'C_[] G9!ta*J&t L"?fQmM_H2[${&۴$k1?2"JJO>C?h|$' ?~׮dx・ yvv"fIVvjڵLzL%ԥ)}?3> (R&E8$Er͹rL%Qs,U {c7/Vv GW{Q&2fQ3M6;F x,o 6c䡤:STa"MHN moryw/8BHs4ڼb?`"(̻fz$)yY4kzɌI3Iٖy?/?' a?`?R[?;ΦpBf˜5uY>=!x0CyQt}{371 3 lp D򇓆IBuDrG4ozQ~$gW C.t)& >ʞ0uv!v{9m0*(i(,ŢR%{CAfa3DapG&Wgs9,8M I#˸g7NJ&8ƃ&b2]x˲]VNor2.PUhCeJH|, * ~apI"oI0? %TM&B69 Hn`Pe<13G-|9o"$LqT%ʷb~}}1:7,6dLd}7Q 4w(P$$h9!Iᗳ7)$`d!1goԒARk]P.A&u凮=qvsYyCA2B Z:y׻^>x]M3QAC1'9'! x4C΢~pCr@[漚WI#& 4K;l7Ν?6Knx1&z)&/'H&cm>;6y! m;Z5z;Uh2@ЙweF&!Xښlm?'`Gޘk~qPx7"#J d8MLZQ?6 &_ؒ.x(9N}I8+!8LIZȢRPij&띨MwmιXHFKE7wNݮS lBApH"lJ$ *5D1g۽h"TB&K3 E>QHjJR\B `Dr4]J$p4jr;v)(wt)%^2kuP"3L2 .gi 樖s 2HU_X&YpGT+BbX4H*"89 鰩"-&GMJ }GPi]+"rY8rFd[o^u@$9'"7ܜf$DLDFBԪ5* 8΅V)2*$Co(:ȭTBPJwM%CV?x<{Y_i@BHq;r~#< ׄ(>&&x~Χgw'#$u >O{ݳW #~T}0Ȱo~?1V??׏هGTu>eCr#"ǯ߿<e=t3})|'nQGp(w;O/wNk\ku}q}ok( ҢR6)~|)oDɝs8!w?IMZ$Sȇ :O??>5yOIj{9HL߱ډBbW=1ן,0e3>fHq A?:I=$D Tcy0 i;xC|OOgoZ|}S^w΅?{Icixk?6lFUKyNvۡ4hPTq+Q_@RDeGs}\rF˪i]pc{~`\HbH΍ ܯ*,1y~u㞜\_l?%'~E6N =l Wq@y0Ӧ<#82CY O^t⼏QZKt-C?1wrLJ%i4E\A{otkW ځ#2 ] xk}߳HAzڤRs4}~_ˢ>Y7d;Ƞwm#E$1@)"F);) !6BA;.$J\+.1 B'sc@ Qx$&9c1aD="Hf/˔ѩǕӶx/f?@PAE 0Daeli6ڣ! Y%% ƴC n4_쿏^a!y'oj!rFDIB&Wv-9>m8:V`cYw> #ܝ +ˏɺ?d,Xh3ҧ]a=(7TQ$qrO*fHS';LY.Hw'<  N1ͻ 篟հ̛npq88c&'3&1Ϸ0&p>O)ɵwۿc}%@tw@VY.?/U?>!_-]f͵Itv~s|Gx|H׀ome<ЍPEeN|{- r>xpڇ` #@:^JT+},,P',{文EmGh"Ĵ-ݎ<3 BdqVȆ=R %94>k vW6/UcpApP9uV.2Yh^U&9+x2{apgM< `ږٓ gx 5mx)a_JWsPocj@z퟿3:K~VlWY4,b=J^SqTwX/=)-yDӴxfčO{2L?s\{eԕډ%2N <):ׇnt\T|RNNǁ}h1nNB6LRjiRҧX~D,Ls qfwmI4v]SNl96X~ b9`F1wI$;@]7LHAZ=*xs8m%EԗC!t1lgDIk$fρM~WiI B De哵.9_7[ '>5p]E#ꮨD*3*a|I^ڷbr:k'2><.(:r1r3v%f eCCvp4\擨|H"UW`kBfc8n&i D$6P,U"vψu+ox&N ,NE3]-N09\t mA'@gLq!8O^ʑaWD1Hi hi-6́7huG4 ٛe6 OC㛿yHBm#\&CDLHJa$|TS˳MW!Msi.Yvv!&J'9K/IM1% ZRJD\ Oʮ T$Щ/G̐MxM$Q;CYfzބ6*-n3$: sBTh'a ,c c\c\,!q46ĝmq-+hm4 Yśvh|'ን^ǓhfnIipNױOOgeU0띵 HJoD#_HB:4 ^ MN$ɦtCc M11Յu񰠅WM6ҫ LNCvg=oky}xKj.땤95 T2Q~^ެ=Yy1~a8JMALJtԔPVZYHƄ9+"ei $>dL7珧@t09PxE3LQH9SYFVf<|wŇ0fjtI\qdҝ] OtWGc[=vzM`]g *U{}X%11Y^9AĄ^I꭫1}{呙~>8%nduӖnvg[%]$AU픎[#A4iJ^PQg+Gcj{4H_ae0XHc]s~gH$T5!A G۱(d6o10) zO7}oAj _ꅧ<!<1Q0CAs |;>;|A؞Oti]G+ KB_Wn7~nZ՟$H"Bkr7jՍ&MzI$t:1uK\ OLv~=ץUF_ bCn|ؕ /;r:@;ݠKƊ&\,"e3jwzVE:AK8\jl_=Gx0@1%7R!P9"jf`@4U@T_RSG0ߔD EDL,DDT{v@xVf*۱C@xD\)QA5﯋rOM)ͯ @?ޏ=OKۓSՆ HdJw2knj$?+ l}`JHR5w=@g]2YW諺g8uڸN8wbb4pByMJINyekSS3K d+H(H F q7uO^5z98x6pL W @Ϗ?@ f M}r%ڿwf%ilI$U|ӳP" UK@'9 \(8`R=焜x7-)p`3f;I4LL"!ˁ6.b"4u!R Hrr`#1$*㸿sG ʔrj꬇ZWVl8tdhecoulx}#A eVr:H>c[39|"?>heHmtWue@~MGa&Ҝ()gLn}fP&a}ƶ;;U}Ϙ^A2mKh2X֐k",2Lm ec& I&%y)&1)~=R 6d+|ȏl0Cx*DsNwNMq>-4ur2a{A܇vjRhހz ǻjO(7Kx+K~'v~gK=̅7KG:{K["7SEozPbs9=zGYKǯ%k·ip͖i{  ^hխ|g0/O6Ϟ%f{=y ^*4Zuh7/Zw:Dqo(g}h_U)ƙ3r}i/;}_]֙m Gi--:ԧ\kyZUVכKX:fbGit.!oEM S>e^5;U|ٖ6H{DdGclT,jclDf=q!xqĿ"cc9l,7ױEQCD+C#CIZNHη 5"`HJ`"Y\udXCAc7m,Yɜ ~D ˮ TAˈӮlj=[O7,tRl?<^'tW.fY]UGmC}-=mMZh--Zk"(j7I18w{yIꐧ|Ɗk >iVgGO[y9㝧K=: !5[*ҭulIrZghQE/{$9)IiCS8 bZV?27tqjt^|)(;cfLQ٪+Ͼm'KsjJN8FO26n"~`gMeZG6;ZڤL_I֟L*^t?J j#>iF]P+G44ar,beUUQZQ7M$'~p ӟ7Ut+i;Y*ѹ;GXPҦ|Ǘ6Zk=vڴC.HpW'ӝ3z_{ZZBj~36JUAD[`ʙFMWi;UWfe2<0Nę )u0xJ3?rg3VPiVՠ1e>[VRujgM'!qyMK${T]t!$%_#' <#vvZh1ZGoҟ] u98Dԓ2G1~&zp۔]NjזY$3IPA=r/&]*0sx*hBE_QHr؞;ujinsxȕfVulb3JbٵyiRMiQ [!4B3NYX,y ,RLAheD'"oS8b3D&PՎvԆ*tGUJS9d;!Ǵfs(d䘂]5"#IrAmm_ȿ"[4y˴7 ۽c|}R&^Z=;-\F8ճ9܍\Bs%.jҸ'弡ڊțO E<'̈Fum_ML897;[jUv2=ʩe&f< )ٔUAyctBHcAݾe =ѶC^~Y?\^>LpK}g\?z +S|oMJԂK͆} LY獯1"~f&2="GPϖ]d}IVx@jFA)dQ$ʢ -Ic8{>SXN՛RpvB 2 $CisW΃ʎe$43xc40P9;O5MȂ#1ٔ$+r'I I~4HɢȒ*3 phO ww?o=>0}oB?Z^5RuA"RgoeI|ިvXw{8J>(}iw匬3>ӳFmRB1ڦUvѠfS[}'T'+N2~k,kU8gO_It)w/V=Ms H=VGuޔ>1?LfH'G}eUI!'y ǞļogĮS&ǧMc I(pۡ]o<:ڛEY {+>ē\a`ITTmr6RKmܾ-%)I:IJcWI-tۂFF o'woJ=NS [-gne04TrIBd$ɔ82G*dBhM{pap.Zeo b6F4" c=.z&K$ <)q'~(:R/^Sl?^+-U^KGb?nO)*Kmy&:nipM=^ <ŝ݉)=),J>wN}3&6c^FO-2j8h $εC%v=iHM݉;a)hhMTzqS <=lײH@;#؏ v?;o" 4lnCJoɲ5L\ $xrwN)ƣD]8}[Dl!H#&$Lͼ-/^~eҾMV6<(DZLsSby{h tC^ӿ{K"tnrNYpRI$ͤbaI !EFƳ7geߴϺbI-`꿡qDV|x< ~vPb;I/p~[cuvsg+\v)浂zctn[i'L5WY<0y*E{r+})*'i8zU6S()w7&sB,ɭu*t*A*Z=ߤ3p*BB2SRB.|'̕* U,E|J K 9W9z"IC@mx^&CrÈrO(>6זZ(y&gJnCcwr()|[9sy]H7,=\\ך-Fe<-&FA*q[<+WZӭ gzyȄˑ`Bk^@pC,8fV=[4T$WEֵIħ k>?XwԵ^HD|Ϧ£Yޱ%9s N@yYޛٓl7!d$# @sQƪbN|ܗ?yN]獚yCLCWٟRW(q<U4{=Go2r?9~@V}9DHI='8 HH/JBi(C^C48}ia>/)q"teϜ/?M= ^5$:SPcKk GEl)û_D(?+4\Ka4}#Tz9&Oe?LJuB<\vIk$Ļ&) )7dQ}<~HUc""!+~v$g9} Pm}k#My:ri]ٜeDie}k o˅FkM5&W?j4WȘێ2-y>LzZӃJ1Nb)2YesoߜMHڒ_VAZ9UGIJ+>cH4&xRC%U'5~yfMa$֬AW'&INuj}"!mE1'(XFk Xv:fZ^6BREJᦹ,iF4ʫE*Gv\DYt3-[EY2g&㢽oU~|=/EL1@4MNeQgK ^3Ӗy|γc3gdd܁GR/߭pJrn9NAL&I˫E Ւ*'Vwr@M k[ O1Џk-[OYMMC#ڙ~6"eT뢸]%k?I4B" dD5(*GڪTgai) i[ ȑh RPL.]S4(2ij4vʦ*JFY h@JnL_߽GdfpҘCT~Q)1dw~b6lWpカ}'{с 3i-zK|H]ǽʠrH 7NJUwFɝ׵, Tu}#+Hr"$+ԉ/]RUExu5n|/of4 %}1])/΄zS=l|V.*IjiC2R)ޠPi<<0l- m] @/$ PN!94QIFOx88?eLR9]?*\F '3,9UI$ 45VGn:WxZNI_^LhZ j >Y e6_#xEoXGY9WitBftĶ@a,2$OP]VLOCi#˻=H-Aa$I{FtToT"IM }&?;!K#˭$;L9t;rM^ةsEϗyypnɾ\>,,7QdB9m?9/S:y?&7c 9^JP,X/m=^+L-K6$Ӥv}#3H]jP&8/Bl2\J<2YWXAsf$j({I|tZdG6ӺĭQ7-l:d$_:gg&'x%dvtսu㐿y=Zݼx ;k)0sk>o,Mڄ&aӠd%μgu&J }6fUmuOɑD) O~|mAVU@\jNsY@an8Ǐ@'w)!@n{/ m ?ȕ9anDd^Oj h~͠4=IJ6jNe jo)=5U^u,vMmS~_X4>\$l%v^ikޑ-G [ij{tב\+G-®Z?ԮM=,ԟ=T"lu/lӐvA\tlIKL:~/60$U <"x xfϋΤ;ei}Ɣm*RCJ+&6#GpQ.;oeZy3f\2k s-`Z<ܒk{0\gZJ[#.=1ǝ2k磱v,C?hbhgrvcßZ͌zʙj}m-iLS9TmTuRg 瑓şjh0Nu::W+;S"O҄{>xɐ{ȼf٥*S[Aa8䏇9*"Rv-e6L_HKMq? i\ )Q&ͮkՊ3&+**5*>*;T.8'A+CIO{]9ZW^ۮ;"oMvZU -grY&rYLbr<[Y@ = Ʀ!ǧHS䓹<"@˔%Am,kNJ]4}-|ڦ_\֡CƆ8Į/fTr,YǕۯ:R/S~ ҎĿ٤0^da_?+Q2;:}lij_'ϥҕ`㷯jK5odžc(Gs9ߍϵ{])cL[<2e ]鴪b Ke6ιE1,Q MbfyPŨb\qҼ1zʒ<9xkVc, / %Nh'ؕRI&.zG/,aZΌ]~Tō;mZֳ<`e8$G{&ͭĻ!ΰyGZκlyԭ6s|VbmH{GT,)蜑I#'S/Q&_ ޻5mùW"kB r𔤅hCR|rRtٯ}\=᛹۟Gsp8y}%d\E)&g}(Q|6k7ggBqΙ#5ne͢DL;ӑfH(J\L4IZLXa*[nOҷ'圩Zi=jr[C&*D[KgPϑѡvA!-m%BJut/]NRLsFgKx7FyAU,f$**zRQ+iT4ZH;=IX!hNdv<|yPa̫}z_"ZosDZKc~on[M|x{fjKF]r;mЉtwd$5vueG$.rD313Un@&ckM- Zi!qH|9y)LaUt]M`Rҽh ~7|{,^n<24ƽ-^Y˴i?3~pa:zT6riM^f q#Z$9 !ر \,s&I/EKw>K9%E!ٙ磡&[@JɛTA@2Vg6.ZT%,wLc!ݗwϹ}&\tffEU#GP-yJ P=RIxDny]^ N ]}7k5|ypa4snYd{L CT>O 0y2 /5.E 9DPP.g Q/ K9M II8ob6ZѧZ3է}qq<>o(A2 Ku[ {tFbZkxV 3o[Xq&p g"唞u 65MVoJRJ{,=ZSɽI}N.%}ˁ9P8$;^x؝l~LsDSY͗7ʼa{_)F$@$j֦_ ]khڡ~GJ=wlNvo}Z)0:hJrKӼYSsD)^n颍%6o&@{^qAy[P{咣Qi&|?O/"U<(K^%\u{H9{L{?;%mYGwfW2$BqJ{H`֔vIdC(B[mo @eaٚ-3zŧ)rk?qHyYֈ8ۺr(z%,IwzԼF rsEL0[DG^S(ߤ*+:f1GUf­ st r:5~D'u_/¬(ig liҾ"ꗙ_w+Z-ʊ'[BfLURy%6+(3[>ُ\&󗔄 yս1!vD1fu&bɆ\TIUݣz4zHl=zzyWiAT3Y6o==R֒G#dm!i!3O=u? ;f׏δKnXlJ13U- ^bKo|tMk{'AIB;e_IoYJ 1*o<4.vxoVZ{7V4M&Lu˛WCeߞCRءcwwoΕ0Y N4d@$FJᅪBi)QG.DOuAtA@Ba>SG<ߜ<ͭ3:ޚČNϼ~8n4'Uz=OƸ5G4Foҹ-Z89xDAmT|aFXsoUm({g{so*|6a4Ng9O-nrf.{%mi߭|_\=+j֖NH2Qu]G"Hֻk/뿦f[߬ϋ&CIr.^o1S_2m`s FA1/f*Qے_TO9E:-J~N/`m]Ĉ}h 9ם;t\eiYG)zD1uiM=4IjT,s3"NC7!`U蟵|$QW);OFWeUr6h1GJsDNĜ684z]ϳs-5XvelT~ܛ KKC>}'4 >[B>"?V}_.#-9zJr46m'7\ 7=>0㽐dH۵E:m(lB% P 7ɽlTiדB'YQqs a4~n.sI%>\}g'4 qc ll&F.bMˣEXGoTdf#|]|UwreIGvqa13jdAs/4HBc(Z0Yˏ$سo%1 \Q*÷+ϛ^*`dO*_̟̋;bOYNŤo$7{8Rҕk7n*ENl6~z'#>ϙl_#& qެ ل -s5v}ǿ+s;{AO~ b=RP=k`_{ϧ?(k$&h8m }+h4 {r.h*æ AM*-)5"f9Ix+LNzv_l^bؔYJ'|JW\e=unzo{iחXEbXy_M3{KMl8w@y ߨkϞ3}/i6!tgz=iɌt~R5{Vo5 ky֔\ͣ!p=z8;1SWqގv.::g]l¼O/}4l/ѳ]ns/6MaJ{:OIUMo{kgdɕvuk/s6w XߢRxϾA)MJyi!QRriW0d!52H1m)ɢ!0B(v鼋L#"٪>k돶"] "BF*xmwdkud&L"3왘UѬ1^xԵfY =1oٰߨG'OX(\e=k&JVuc\ġ+ԧ#)os:_KG?2O:77VzX*BfC%#$Y˕vX/w򵢗W^zl&VV(^X2/0*3f|8hFi"YܲXu#,]UyK~d):)'#LIɱNgl&V'[u ;}?w9v"C~BO8mnG#aa x0}eFk+ /@v1T-|?zKN2tÒC&ődbp2LU5Yݳ-'I^nҒͳSC o"|K7iJuyuBcV&FI5T VžmK6M*M:8y/PKem0lNnϜ{XpEHA|A>}yvI^3NuJŋvNr$!BdC.lCO9eQNQ''N>b 0 ~#OY&g.SGյG|:BME?^FfHK]UU{?ԸjϠp^> UK{ G`PM٬dȞt23Lҫ-OIWe$Q%H=BlYJHgڮ9v'>){1Pf &rh.>&EJ}ݍZ~;ixj/gl"yA'C׽xKd{:)a71;6\7可r3t;O 7C~3?GV,SGBնamaJa ۍ ̒P$DGh$G3RCϣHwrsI$!/Awol)mZJTM|^,Nz]M2ĵBr ƸZ ee#; !/VߔdǚB1rtYq&lɳA4xw휩؃J2&ǁ.])Rg} 8VN79X.ʹ|}t3dUHM4Öᕰ^0y:͙wi꺚<s]="H"$ #?ꌷ@E~Z%j!|f<(PHWa4!#=k&mgI6y;v;xI!;4z~ ,'ـoY}^y3xsZ{}3k4(>si8Mgp^e{at|+ y35g%! =k 3+Uϩ;+#huљCœg\qk2sgSǞxK8y91㿭)d>^N=r;O 6Ne;E>\n,iJZԭbF ,i,\B%7t WЏ+'+YQm{Lf$QY+bJ4[kQEiMѣD=NMi定Fv}ui JS}QZyFf`s~|dgqrQ77ϼdH &%zńխ*[ijm)bX9gv+5Ͳ<㏩90vZ"mܗyVbF5Ud]^H%^xu*)ԆnjF/Wb\i O=^s 1Y_tg۪muyÞqqzak[h礷QcUO;bRhQ-4R4[)8X*rJCb%_\s},<\H(!vt 9B{1evOj-ZU9JYOL7ȍe"y}~=aPwVSti[MoPH4sG)C*-F?W{fzdњIRj yFv'!(KjC[Mzo(1b([|=#cgI;NJI41dVYiJ4LKT˓35؅dR_ƓC=/3V }_'vt^ o`'eKm"lcu$VzUʊtހʓ7^:QM[Ydž)mpF6=J8?=bMlG1ȶQ.Qh&W}|GAZHYSsFO\= sJ|9)#F )sY(}Y_LIIITg rfA<3H aPXz "OD)PDohf+3AGƪLCm|?h֟%MV V C I62EbawI:q!7%۝5͋ijcmu=lY^ۯF1bz܆eZ؝ĸ[3/&EBU]VE<ɡEI>bc֝_?FESr.w+z{{X!4+W0UtIbBb9xxB]+2:=?x 2c,&N)ZĵVXm~I+ eLCfhAA͎T 9G[ȵtSsf xIm:tOkq=&2p]5|D]?yaf6zr| 4stHt;ZY^I$Wo-l|XggJP#i4xE2ϡ&E%R^浖OF&\!Ύ%-;?/2q#Y` ۜF+qNq,J FzZgy}lضN4>MWK7sfs׎듴,1[4qW枏?e;zkݩZB-_fzvCnh/u&u_Of{Rbe,a=0]uWYMM9^4wXo%Wϧ+_3e.ʵyCFL/JX"Jn)mdL:(aMUBE)\ZˉgL/O{e_1Zb#9O<,?86!ѷHz:Uv߿zkPXOCOÞhe+?,z~4h&RR󜶼J-E`LdUT}l@Ir/Čx )nC<7`gDYt/UkK 7gPV)̄'7eG&ܠLBnӜ㤊$ f.XHȺcHۮ9p\**-R1át.l[cir]ur֙IxcVWf{'W$iZeof2КZ7"jN[םK|Mpu5lD__׍x' Жּ؜woP.x}UZy**atzb1G2dXGOѤ v?i4F^X*|HzdIds4oXyVH)D;^CIu'5rgQ)menV* Owvd *Ҩ5ߟ)]P>,zt, Йa H$f a} M*Ip96B&7qF[.u"z]Mf`1R( : *K$IӌfͦЛɇ Px^{yIcwbb&zrɘ`BffbűEkjTDjڊXAQnV@T!kFѣQi-JƊ̨ՋEQB2kBՈh&X"͍EZ-D`bRQIZ(FJj,UDq+ "lU-KKFJ!3,!"ہ@9#]kQ[ٱs9a.$ U"DhTUPj4AsԈ,4Fڊ(TEfkH))fSفsiF! ? 0O`3qu/ʳlٙj\ZI {~ӻߔBx9~Hp'~Fk?onEٳ|G^|< 1/_LJ `w*$ 7=_Q+86yw ;agݞ)M ?~Ϥq_QS_/ׯ"D/?z<E[..=iKJܦkV'ԗϗ畔mR)]}v`Bo&:dø|!;=@omoɿQ$Q!x&h3KX%5d! 9j?>a:&xƝO+諌sb\!'^J? ==/OLW4'R:# w8e"L!U[/wgdCpp(= DDH4pWnaLQ&6Mm^F֧;R餜.FIbЬM;}gg[iloUTvS*N|RFyhTQX!(K9 f./+Ono|˿V6`w_zNW\OdSJ4JlP8+!_τ>v4}9Xvme~>saN! J@g%OL9rЕYp8k{PAdEmBʵTUKĬISl4WD /&t{|;5 Sj$FU|`6z`ӤyĤ3m3\%%kHm$|'ӮAW*O\eܵɰ<&>$:&\l'EծJfD:.r|H ֥w(%a?ӵX}31>(D=#"W,VJHWloOtUG&'oFG|8Q6 _R,^p)Ib+ `z\"! ˪ ˂޲|TrCZF~gz\HDRn0)Zy5Ͽ߫Waz~SZ9aZ{RP七LD&BH8!5!10"&4֬C3P{ 6faAꠄE_Ӻ)6?E= D tB9TíD H* t}VIMc߿O8 QVRl(^&\uReOHT e{5sۧ۩ْR=z<{)еpJL^ulbѳtځٮ6B 8w-v/-ri$|@̃A37$䓀lymqs džvy6f/Hj}bb&aCr=a&iObH?.r$!Zlqv SzhNT4B~L1Â2Tag dl_=7tw_ב߹֟==9+}t1d\L͖r6^gX3s ~C^ 8FEa@ECdzp/7=6Ǐid{NLޟơ (Kq$Rr;>[8LvT; h*dH:["V%ݚ>j $C6iMZeM~5<]X__S& {s0yy`?A oϷ@sKi!swaZn1&{dHmu_! 2䝒1ӤJ+WE5 2V04r=ٙݯ5KӠ7|*ٮ!sfhߏcY.30~QS׳4|FjJJTH}$6 .:IL([lh&c1071f-} S3tsj DHX U7.`B2I@QI2^ԁ5ɿRu_Mf%P'WgcGHMGӪuwBZ#烞lӁr<"k5bߟmta<ˈ*~>SV !6HcAc[;0ąrR$H(cW uv+s0!ʟeGrtM0xB>'h|ic~o/觍 x&C?ݫr~?s=\pytZKLU\L֦a ζwG >=¦of}vզ+W' zLO~M*/Δ!3&4T0_:~??u_`\M.>`|h̬3==lx6>{AŜ4M 3WO.Rb ~(unw RLJk\/, t6_+gu˾އrueݿ7Ԃ?/&>nLg佰{JcMxԱCeUG}O~HKS-7v_;roV+瑹 A" xFe>C˿Ep|dG;sMCW5h9kcӼVa 2 L̄OwޖIK+gKsc-k\/ww| D kn^r=pDZN=ĉW-b@6ti $M`N]?/_/UxoQ6m[m"ˮyBg=ad~&ui9gy)4lܕ[U-*&RCLKИRTr[ǟ/ّr%= GLlW 4u6aڽMm|nzT&rKo+gç~65)-UwVpvη(| n-5\yܗ2IYq RuNA[8d E=>t#3NZWX#S{ڧGsHӿYkIdE!)SzQFRS)N.tTWF/Z{ͺ{ sZ):y~tDOd[Lbq{4wo~;}Y`cAƆ- ֗"x&OSg3zRSQ2^䏚SZtu(_OeOYhiy\^7[ں-?烩ulZq[ϑ橼kzg r&TozTDpR|ivt4{ܫLt3/ԁdi:̨K*# yGOGZ`7M):6N?o/,5"~9SZ{~= 9Hѧ>2dR"DA?H-ϮG<wS>D.P4#HBUZ~oD8Xќ<]Nqǫ|PS=q=ϴy|(+ &# \^goͿSȈ[~̓N~QG"94hLK$7}}>߳3og;eEBQ[ߣO>ޓPRwRTx&~_CܫKЉ9圩5"^6hS6zyp}|6 zg}va9$iցrV\troӵy{N)Lݶk`ڟ?7ny#?y}։Rv}+Ԯ͵8~b'vADz&-_|t##ŏ܉_;{4ֶl7r%yrޯY_M5R^2^Zzs{(*|g &-촮#^QC3Poa f_ ȕ}R'-_cy 0dyC|9li"q9HsxӍ弞mb3Jey+W]vWJ˰h(;ߏϕ2׵N+eʋu y?e97ei ۚ6V:orS^<ДvCi9fgÓf|cU{)J~+hVtrVg.5D>/CoȯM#f')AqkrNm[bF>u.>Uj__,dsO(w]8~={Ǜzk5oM/g zƶi0<;~M0Iڕ̚>|_0~GcPzLr[.0{9>Jx_r&&o$ާiQࢍMכ{zdɐ@=2:[J5vW[۝%9zN}KIY5GT%?-O\;ֹ we-797-TS=>4BYBVoޔ{ tj(Z)%BMTÂE$>וeqCx?'ެnvy|v!#ٚ]Xe,$h(Y̢=G}?E-={ ~|JMϬc*{i5|"Rl^w~iwՍNyw= A% xׂK։{~3?Pbjثr1TVsQZ6V6-IvmEbڤlujHđ!iSfFd2jXYTؒb[)bM26ڦaARXaw+`gO MEjEzjCBMIl`]ĎژK$N( 4:9Y&2 Ɣ0Zk7u͉pZ A!DT*[QQ4C3 t0`MEDs:ͥʜJt:,Uuaukd3 8HHڂ1hE0L ᰊw$KZy!JAVb$_FZU1l22&s&ሄ&;B@bL}@DsP¥PF 0hI΄C ʔl"✈Q0Si&AӑsiG& aq+,Q '#VuZ}}Τws.M1wr"h ,|{^L&j+tttWDFHowwRQv/:QL)գM?7r-ҁAys $e^-Jvw1RpʹUú Ā)Ӌ!>~]NjܴK廦:R! 08I5QW^YǮ1B Tuŗ9y/Lē(dG֥N ѡ(5%EGGCG(I6W]ݵa#hNƒDSU0Ր̑\`~(P̳?s&S!5ɡN7Wv'k?[2<2i+j"1(QqL΅\R^ޙr5W,1.WS'>޺h HS4[ e }eޮ|벯Mh7v ޥVT+D(Ȩ5'' D$~) LhE\6Nf{# )=`QF'D4&Gj5_ݕ4X%V*5Q[FuY+KER39I!HRbQi_JP%D*(5A2Piw )H- P* +~g?_y;?R~:$i 0_SA eڸG<3!¸PI$```oxjn1A U`d>_3^l0.Їb=`S 9F f^ ~|8QЎbmh O&I`7Ù;ʦ"urTMGJh$zH;MA)I<:Cȹ@$s`cmZP/75E:* ݖYF11GRhDwv=v !ZixztBbCO3JxwW|7b`wbNkq8yNqyG,0>lQo峁(A3Kn\4e9 Qs\  I|{mFp;6_ `\.Kf.`0$94s t~9Q' ?У3bZtgf_Vf_)&AP,CU;1#]x5 v'sBgcac5C@,pa,\b+cP>I~Ɛ 陠^{jP#KK2~R H7eS|k&, !Q;&bq 藖p㽣tO`wtd,#Ne s/IiNIwjf- 9rWfZzjC7 7ys6=2 J OLXT:11KM&Ͻ71@Cez ggw^iU$}F8m_y햺'5h*O2*w(ߋdX:eVƎr,x-VP\}2ИS;]wqF=%])/Suwi !&niҙ󣣓+ǻ#K{,%B|R%;eJT#\?dfNJTN$cE!b>?,y Hq|BAy~n95H\JFH9w_5Q%Fݦ܁H&#<2gե1m oQy^}@ 7ta3fx'^B/1BoY 6I ~X{9 qInH78fq\o@ΜだCYJ#ˈFiZK^4VV x!z  ~q.Z*ثAܫ1u ].PZ9_av hF>9 'Ƣ4R>ʝJ550~8m;FٲJmMJ +M6sh}/9<;o*b1ޜm&JFz1Bq` $d t0nw&od5z rmIG0$v_ssH[~O.RU,WM=" Ã#gΦOlqϣ.뫵tGTVa^0?9v}5Rsw|&v %._c25>g|Jq-#&ǽqYn=zhJA Tvʒ$Ex# UjcOy Te@>7yh]KCZ5$C%QdBigEgM]“t]hkqf!M%g2-3ʈ ʄ&| 3?v.nh`:B!2v!]S(!ynC !3 2fKя7cQ:\8!gv=_ӗU/e o!2إ)&?4I1 λRtf*ɋzQJU}`>q;':և ?Tw &f- Zlp1046ř~[ܭD0tWvEqr7}?3zwu߿9qz~(-`'ؕٷ"̃cm%mbJ6A0>3 ? Y]5&hyץ}`QC0JG)!K흕JlX8X%MQ_N dq0=7ί]$1){-(vQbz>)Q[y*=(uOPM#,t=muF=}o-7Lڗшb `-:#fu9ga= d]&s_ SO=9toBX(I58CSvėy?¹m)wdz r!1ۑ?DfɽڥIgդW>Z;u9t˔?dž]3% #-m1ح^ah|^\ Nl{a3OFZ|cGa=-(*꼤blX\8 TkSW1lDH&kXpg(-oHy+//L/]-r>J% Cx77nާ?(_LZY8ͽwIDg0OVAZ Cݐ䨚.UNʥ XmN$:؇/<2=jS գšq,QzH_7d~nQZD;aap(.>X<0&  1-;  $dxv]̞Ѳtwu9jOw <2DGـ1]~Obz+iĺʝ!!AjB%7lǹsג5Q!>2ùͺs)3N5J '{ W;o{RǞ^2]ߝ1L݄̀hѣ v1 ]5}eg>hA5'C˯hPq%ZXك;kP|vj~j%i#2Ae gRw؟§S2;;^[:M Pxba]>FgdC_G bPVNIsjPwyQӒզzGOYZU5/Ҽ1o ݵSM~޴;sصIoizZHQqhTݖO#-/Me-$a3RB[iyVLrS驦7[>A"sYۘ@\$&i3ei%cKvxUs02=[Ex1+\c3 l_`&/2tEҕβzOԕ>rFsW̴-%ވ_W?Ё~mț8mR@spLL^1UMIu1ٓtf"_qLvc \ͼ̀gg,yOExq_;r1]/bg(Ćw@r d!Hy3M,OECV12OujLF8l0|ʽ:Q9B&$I47>DKv3p2#'"?p{I#Xlf/|@НJu=88% %5ZP0b'nq;H= HnYԉa }Oa5t3^<0==qTϿXaz .>k/ Q$؆7w[ޝooh=`52T'u_6}[z=_?PZGAW׷~qH!T |$":߿3u'ߔl0 ֻ(ݛ2q W=!R @OȹPzO2ycpMXWxv D'(W(!{ O2$r(Ci!@܆ t<OcH$ rW\'{ h"W!^*g=rJdB=!) )h_/-@)x$x>1f| z|eU)IŬjRȼ CL!eO~GCGsԮ+Q.VJ?G A\' i2Ih BI0FM&N$p0D-H*@0 $ 5(A Jо) y I Eq*jx oO^{ƾ_v>GU;00 L4)|cK[XwDE~dSt {Rfh"J7qDCT h~,v5ZV} س;/Aύٲq-|JUַ4sKB8vG/PdRpCىٱLrq ٷ8d|I.B.%fo>%叆VŎ}U3n?07OM]7g)z%ړ !.(t|:bu9Y2H*s{YYZm[ܣRB'!4KXK9YC U^]$b%kJt xs0e"W!(FghAJ饛K^kxȬx޷.xy׈}|n4VFoeg̢TKx nVwZiem曪mJ!y=ʹnV˨RyfNXk\K-%YzS/Wiy^Qs}7eئhLy`*98ynO'R)62"זTH{jtp`~ʅWzmrY=rrYNs>Ak'ڸҥM_Ug3?W"Kzw|^,M㜜ʬVNk\7."xĽ%8Fc̪oiXEaٳ",VoN)w$ -Wj nC: x"W1oUSI'EOKYii)9KYVs'fu|aEh6j6k&5Z9w͔ v d'ͣi]DIr"yț\É Vґ.p9]P Б@@kH~3Amr3T!BlHnpW{wZ"d"SF4W>xp k\#=`vWn~6N++tEȞ0㖅ky̜2L;PGjhg7kGz=vCg6:m]m}gCۥ;)Z4Ա2$aKacJsUyWT ʦV!iZb+&h({䣱:f<|瞘z@#tII3]6Gʖm6wF+=.voO|lv{'QK~>8FyOSs/Z8M̵ܞ|2*=1>],:~T D%1f(<(|,[TV&ҲJLy<GZ {S9Z˵xJ}4%پָ̏7s}ֱYc$/]b;+c(Rqy^Եdo^=Z!-|pq9l"K iѢ<o V|ԻFeR#iF{R@"yQyPODPN 2p޸8d\7Uhʿ??U~@q9W샠7{=1@ܑF=R^f>Nu Nw1i`@rcP"(CjL&ɵj{kE,|ՇGA,<NH})HHJz 70u@ļBD@5|=D"}dtΐ6$QEb(Yw (!ב<㗕OS5&}d.@Ps˭)ý|x쉿@a;Q6qꪈ<9΍vk{㴂\gexxRsId!Xj҃{"6[4kDC, Y4(R7 *Bz<=PF|MTjh*Ab"G%"rAr% ~b >QzʩS+60ϼ)i@D*2Nx:{p .?j(%pc _e,) l%^P;u3wJq }_O.%+E/CK@;hY(+r6_q8l5ٸHrTVƕ.,Wi/ ݢ_NnnGpIیm9:WkI3"ELM-VۓP$K>"(bP l0B-*NKѾpL%=B))NaQTɳ}Y6wcŲo} 1'w*qM*sz;fk+΂1qƍs~(Ii9h+9?|2}(sc]&F-w/DXʌW Rlւ7A;3wKUt,kUUU0NѣdSA5O`M0 cYf'ƩpOVyR؉L`̘|Gu;èG<#z&S]~6 U>hRM?E u͍ PL@Cz2Fz=7n;xc+i]"c~9iJ9YޏǯLa&0tb fx#5~-$\w>|0|3vꓰڈ=D8z#{X}6Q) LJ0TSaAwq> W+B Ph} IJG겍0J8#q}y}Ui+&}bN~I}g fG iPӢ~ nժU_&GzBb:ɨ(D0N=]~s3ʴ<һ$b|WTOqx~Y Ӥ2r] ߁4Or>By^f|~ziV^n7ף3VA?x$2=@Aff'#"T~t{H~nzoԔ'ca9t 7S%KC`'(G1߿w2M!Bo0Z]s_?)06C$Kbl`@MٌQ>@}2tͫ)/0wC΃-*R+UB?-B͹V"fbdKikrGh i31ـg}RBhrԜ$ʑiTj qO臿Grf/@don`39II > "R95آ6j+DGe6`mdi$<LЗ}~JݙoK{3>UOX>]~OSr߻֩#4}9OMfbj81R>ׯré?rA~x?9ѯb~~ߏjkπћǍ$Еntz5mJ~ܥ9^qwwrLg=|lQ1>2PuBD(>ۼH"P|].ƭ`>o;D9fdGEW]o%Np@۰~ "gAo}Ͽ?n#p>=g3;Y\bMdz{$ݲ$,C泭}chue9ڡ=h9$3qq=I 0 | q/0I%{Θ?\[>mDח)2O}4W@M(We~>re^2t˦zg7Qxx{\*5E:J}:i:"±Ͻzp,UpߵɳDgm2Tc􄎲9e׭\RCO,V##-KjУMG1e)g):ǁGcJVe!Ɋ[|%[6iTt3Il9,j|Er L 'n1zOʺҷm&KwRGu jV+h4''Y4y_:r|*橤&jNvEot͝Lut[?,Q̨걪 z{4ƚ)AU5YgYSTsjN63L2ޏzqjgOEw"h>Fw:JQ}R\Q+g|mF8[V/g:Zr 6ZGܙB~7'7s벉ֿ{wG5^.L+xR *^/)=)3(tdd!MVx5 r DB^a?t;üZ^yZ"ySk[jt'ֽ`# c}k Ρ"CtG2PYjpx~mE;V]Qd>1M xvXTDˇ\^tk i o$2m&}?_S}[DNm|01F#$}IɷcP} F5}$U~iNߒTlH疾O2O-ry%bǭS7{m('*AVEf&e86x-at9K 1Y0Wyܲ)rP[BkFQ_Jn[K^%ʽ" ol3)k2#YВ*8ޖKK&S(.i;N2~_gН bRg?w#*'>Q,˚-\<ҵ.{_v: T+3BF0^f;+s+x޾vJI}9Un|sVvۅ椸ER䓿}pN&yk9 V}'wǁۖW~k65עnWMUnYOD[G];&;[~4lA6R-_|9?noA^uxqi1^˔hG5XY{-XwRP}ڰ7j],շ^ gMTX<-O')'ۦԢVG^tINo6ݽz94]T9tIOUVOlRVse߼Ғx$Wqssq($~:+d9y9^7üXIvݿd--"8s\{9GU鯇ޚ8Ȧu[9oo^"B2^+' hTdKd2Cd8PWh0Q]{,|~otɥwcLQ0z;y#"f3rgH/dE4q VOu虨-`i/nHhPKIOQIS~b#ohqX  ; .^7eG#gMymh#]R7{ѕrڍpwZYYڭw⫛"JWt]jEeN00sLVN{@aL[H>}c®xsZ~_ + 0@޾{{ny[+YGL+ESVg>}m[:|=dlw"o6􆉖(sG*C4%((󜤗\bjߤ?3M5!3&>So Dx%tN 9gBǏᵪؾI\g1 ^$&W*|ZWXh[ٺjJkZi+,%'SD~tBs:jm+[%#~y^tig~c|t:'{{jlwS<g  3XmtyVZDVU498<=/'1zMϫoWx2vn{ |k%+TN|hjY5]%u`V{̜P; c5:LKvgw/!TCc?Ѱe@yQdBLJÚ٬H6-cZۤ8MH27 I7 V@hJy UɆXzrgW'^X=<נz]8a 0_M@( "r&rJuLE 56ܠogux~$TG90|\ #&`Oojx`&Omΐf:y1@nj/IqC%v+L(D LjR)IH%(ŖdX-MIE DڙhȅFTZL[!!Lmfd%2I Z+,kI[lH|cn>t5ڙhQW48;Y#@q)Zr]b3$7PjU)J HIV*qǑvpdwp"o 0$Њ&~n1:6T> An6+#\5ՄL3LCt0BK:i-Pp@Xj }XG@ , C!:bTzbtwy#Bt'd5!Є$ZjxrhаC#vŸfOz" T&J hx*%\ AOust\}|oʑb?;ǕawA64+0 Е%*VoL*xZFiPhTB@N mC `9ǐZkv9lhd1#ď!Hq(rTm%(ۦϻrڭ4,*3Y)'|2L  J}e`{D3=FPwK".B9'H= =s#~=y"&s?w(Pd@ 3Oc?3蛭QZ?Ӓ?gkHG.Xѣl19NR1rywvB#>_?GW谟چ<w(: Q;<E/x; s:+F%z2bL;O&65g CFmp۵!Dj'z.HM0;P< _bvy 8vx2$@BfѤ 'l18 ^_H$ /EЛ1?$m?St9aN8\_omX<6;bר|^lE4 M_A;21S*NB^W ˲KW D:.0 a'ˁ ObG1]B+Pă"f ߝ:''Hi85L0GHJ(q,]|T'al?h5Il8UN>''?|z.P ɡag~/zƘ6;;`>s>h88uuy3$GOӉx~*ƨ5tm)T 0ɬ ~8?s@!뫏;gt C,F`6Yy Dx8 jV.BuahJn {a)RuT]9Ⱦ77ڡrK ES$(N) 煻ڷw(uF1W \oYg79r( G8ER~᥈Fees8 ZqkV֖jxHQڛx޼*Z0"Ӿ h?U气i$$H}: J?@Qz),,52x~-BЩv"rdpiC9)Dyk C4K2d+A^o;߯Fő\p4C݊S1+mӃ 1wX]4^doߗZfvOӠBZlJ6LL/Rw)nr jzP8Î3%0I}Pv[ۘ $HBOvoæRl볧9h!=YlNORlb?3fvk f|cٹ9yJ])~M=m6'BT|B \*4k^%"': K;hO"=I ~p$Hqt}QHfLU"Xi2nt_T?^c׳N~_?ʆA)45~?%ݤ+AK2?m}Ͻ.K!&*?na Cva 'k4U*w?7K$ƌ7`4Z S!b @33PG~ג> /ӌ[Ar=gg1_|rݎA2gtzӯ"SI vX'(q P, OИ98Ș@p$ %:}X\U4> X- Pt`.}& QI; *z]E$-kѭbrSxLiPY(q/p'T=s:ЕxwȋϧfOO{j7z[a2f_{bgB#b3REeZ٪(([DuVExjKwOV2Uh \reCjW88R괰tZ}˕ύ!ND2xhqFmTTgۛYm:L]Á 5ɠz kk9>aL%j5'O_uTN-qI czvdxg,£Ge܂҇@@N ! gP-!.6 y.|ۆ!3GbBaP8KFD۰tjTptV*G<>Q]\0|<3-@dClWQܡV˭6"i n>ރ2n9kiDJtq9pN*>ytaU9FpI9kino+ uՕs:si:AfJ۴rRF2cc g{^*Yj꩕LI$$䎛GR\JMK0oU$QvܒI$$% B ʀ4Jq~x҆31؁} |0oSE>ݣSxkZʰa n'8 yir5-S_S!,g)X$. ͵*v4I fY9ci/is>X|U?`?C{Hֳt >Oa:5`kX省9*/rVLbc&bpvO0\NyzE0رq!dc-4}gc\O3!TU=P}:C/8}VbCcX+R6rژ{_"P@_8=e:'13Vp 6 ::B[Y%0 k3Wԟ!A͇eN/<y<%n$CusVGMc/-`I )^s:_oδ:\k0ȓ fDd@ֽIuvlfo9sɿ|;7 &:"?S|@>=(=Yؒ '0$'>C;]jdaZޱl u~QJ*ʯ¼Y/at}kQ ^id&i ƃT'Xkm.p@wnVGW䎿-U&`L`Zgyf2ctl9O3fTV)~(OKS-Od:iT:b?P_ y% -[6|$ZY]c(DDDUsl/Wr&i~"fܥma\ֱܭrIBn88 CLM%2 Єz'J+L@|v3ˠ?wAG : p ?>;~.,D;8L^>Л( Ga@'KYG. E=mM|?һ]<\VD<zЈ=eT9w(hDbbBo~-Ra@̓6 aنn@ '=H1>yMlV+&JY-a5&+@R\zYӧFc6$& CݡyҦaPh4Rv<k|}|6]RyٿO>Mg /H "O " -2aph"(1UL-dB9ojeIĖ`I_yWֶb*pDtQsJ4u5NltECe:hdP0/eh #g c/CHJHHWH!֬h kLbZV%NJ$*#Z,}S lMr)GWX23(P{Au-M,yIz3 GC8&YFAYA4CQSf2[4hп?ް ¨a]sJ>MӶ6>@T4.9hMqVx~ϬE8_ٯ^muAJ rP0v'wW^:bA2 NDIHQ4  H a(8Bv>c?ԦcL30)Bѵi-(ժMYD(QJфoՈ`L@Ã? 0: |Yjz3 Gd-D;ǚ =Bubײ";Шyxh1xf ♈C^:'Pd(EDrPP9hWdHӇzP<^D$Kdj6Ͷf̍b E򮵺ղLđpYuj5~]q0AF1_~:cItY;vg>EU\^Q"RH_E}w7`Ee[K"G[Iδ0kyf%D"T%2CL+1Xp>P蜜%ʩP6,thx#4 Gn8lqF'Uv֝nh!;J{w!T@5Xt~bWOO$;*xܢC(2ܺ.T깠ؾy})qhnU4lbήNuwvp5!$D5f?c'%GƓO@/ ܅}/Gr y b(t_BJ@D? w,lߎ6aI<=; P%ؐQL7ɘ2f/U@F4q GwDIE|]"њVA&h?³/Re`SI&Oq=W-Lq^֥=W˫QDI)3EjMɗ~˱f lzٟ}Հ}:ŧw{/Sdb#(OB@jx^ØA=B=meeL2Ly(`|ՁSA^@$Q,$ D&q8A8GSGGq AOϸ쟝{b x]a /Ad>d3AA;PCR@?;2RrA_3Bvn!^MSrH ‰cKP!T@>H@|`4 9 S5sl,^oXNR]wVRjX`ɶzHg,fTIf8l~>^!lՋڮ1FfdHA>Bg@ã6|SMJ'EtlQH_'F!H)GX*E*_*u$KT2>dz/c($r$l,"{+:UѢ!Uq/I*DdO*[/ *FRGZTZjiӉV3(_jU}FEJٽ!{a6}H=lr)7,:"ʉciߛ!61OZeyB&NbbR*.0k&c_OB+Q2,pb,Y\kOz}UQZ._oB 4w*9p]aյ#ˣ/C3 ePv6p6 Gx^ޞF^ٙ;k'ahҏ$= V\d 72@,MF d~@bSA 4aۓ e01Qa0L1V /@5(7 y' 0*~=ܔ9a_DK6};֩fefp+`?T%!5y>OioXoty]xKE1O#~?-z_RPdY#mVVrP 1*΁}Y]뎞 H9 z҄FGC5I1c?ȜSz$yh?&V.1iM9¬.3[#F D%yzGNR&> ɿc;. ߿)^__O?{UjR'U{qsF!RەQ9_ByŔ2ŘhKZXY:`>ߢ@ӧUڡahQ%+G#꼜tyOI,x25lf:jHF5|C3l#Z&$lʂ6UCxj5 nm$95glxvAR{9𚊡^*i3: UFmM*XșV^ 7s%P8?3 ^t(L%׍(c Ic#1):y&x8OF2αU֛(P\<ưWU[CwнnRRxp*kdcn-+NԽv>K՟N>5uj\ۤԤ|T٨iM[N;ȔܓNi"(2k‚ BL@و4#kq̠WWOzRL0ivw`y8_&uȈ)vJLa1fIUhbI񏟎wFc/9m#eC)YFɷ!piԆpNylHEۮTb%Z g9͓i03缧2Z-ZYU2 ˔j$an;a-phxhp1OT^=nuc,W]^5<+<@<)\0ꍈ4I$ɆBftASvy UUH:QGppέXlg++B!TU4YIA)|ꎝOc8s'"y%񙙟 +ֵpnRoYM) t '!űDH 1E緢Q wQCsȘ]y<Qz T"7]\.FWEhz!* >VyMM+뺓TTkcA9:hʞ?E|m9v-⤕`P} @g=6B i[4:ٿ{UgۛUlyWt%u3]t"HB:=]mxzH9)F̂A:yo|u24CTJj'N޴֣͝GitADaAN?cL( C6S7rXCgbM&u$/FU^|}p=h9#xuĠ!,1 lNsqVPle yji'1@$CCrEU -ДJ m9ixa|3g˾k^%;CDaCsΫl;P\x|t T B=P"&Gr!hPQ%fph#s@G[oDZ"YMBɟxH)ϤHؑR0b$] G^FVe0d,сF0HHd5C7́Q0,VFi!!oLr iCF阴q:"_ΗMog:r8a@곝01DWų++HmyfL9,G >f4Xuki#i|9-LʕBN2hZNH~{_/3 01ZY5¡?WJ2ѶrAi}%,? ' i烂lHA*_=TD:՘(_=;a3!'7&?؀R|OP8x^vUUUIyO:Ea5C]&U4!h[pIx^8{a |p6.DI1fi;0h *@e'8J"ɵevҖ0b& L)嚈")BmU_[;GA||]K!D"$1 #զ8>5~|ͩ4ǂI֔N'6h]`d!#aiMy.A#]%Ju:ֺ"vwM j;.'CӳKd¼cK&UzVwB\0s>x{7ayr*0jG!gVyݔzA7/|LGsvZN/n#rü<_u3/_20w{0`uۊP'A~PܩoQ j "2 ~4U\J2@=d^p@馓JCHI;H0 6EL8 h̒Z[־l FBdȡքT^H "$KkݘP}O]ULr;1=O`_aƔv@vU{})ގ-/^}U9oG6Sg@Dyd̈́|}>|Q>;_çNЕHaT0AWi4r'^ˠpC 94A!HO8y{bz=MM?^~vS4J:ӳgkENwnիcCFԊ&YL ^"{q_ꪍ8фyw<P?F2'f<CDOubRÞ( H !Ezٵ;HEQB9 &uNF=dUMRIIlŚkL&F6ff2S#UD 3&TE& ff@58@@xE?g|%iI33; QV*bH!) _xkK #ē?Cֵ͌yP|ʑ>?_l%>/A 6Rcv}{C0Yn鍼u1ءI XVݾy콸 Wr\*dn=Š8_o{_~Uz>3uo+0F#)XZ;sv7;sn.T/RNNAA@໣F< ۄu}|ki $tI\(:^M5 +S2kS;龝:vCm"4:r3^j9蝲=NȾ;Z  ű7yGjr\v"[ܩ>0x>` (\ݺ?q |DzBŔqa+̫rϭ9u_ګ1v&1MLIvFPq)gK{b9pE%}H,V ?¢㿲ⷑ{r衎YuСi{Cuo{ߦ9 "ʛlmh9*;;=|v8A7 "y|1_LtzSHo#.yAc1O ctSCy^ p;dÇbsl%̂& V0D@laÒ8)ڲ*×NW>"`MMsc|㟏6OoANEHs8?{vR4 M$Bv:ʢGV%RS Cnj#GG*l;W~?O?O:#>'s?j8P?=@vq -|Y**/Dy<=_C?SuMfS}{V,rH+ up%^HH|efc3S4 *0Gnij UCswtl4hB?G҃A4f!$ S?&hn6/ꞽV |1y4L~>_TAF|b˙ghEBS(hpp迚ıBDBMb1zށ  v2BI0G4D-4*uG͑_1{~%TW|Qi ӉKt dkB< b~1Xc  #'0z}p B笠Gҝ`sƬ&`i5i3Dqy] }n?r1{yi{-[2č'q0JL98g- vy#6TAc#phBHTTUJ8F 5Og$JN O fE?BI 01_\Lu'DAG^e =@̃FaO$U4oˁH'g"k=}*={ucY=c;˽?%Js`<}X;PL#q2 tr"d6M,&7]:ZP^z3Dc%gBٸև* V.'!1$ӅNŊ@xmʕ*S$G%5.8K&\'U=XD+HQPܧ]$E* *|S30%U~K˘3- cܗ9zY>eJ$)<WT.ECRJ.}̣汊:.WEhL?ٯFppvBO8O{OxD@chC= Jw;"‡U-*rk;c9~Sp^:Fo w9.kV*JdlAw344b'r:ENPhb "hm=<=#GN #y|GHj8ߐAy*PJ _v:| &{x'>Nwe l!N`H aR5։&k l PfFD"E"@! YZ;xNQ(Nת%8^~\F_n)":^:Or l:c88~! r՛`dm+C|! gkJƉ礨>>EzN$M<U!LRQaڀNA9+y v@`êIFB $:(sU kTλJ@dPOCDSD"H=7NEt\'I P?SqAN&H5< (IR)F^uORTda n0qXhOt'$^^\<v&ct9FH49T 4,U͎=' DTA{20")Ll:drOήϿ[fZ?k=П`I%+_c:=8Gho3r@yJ3\,E0aL#i~Gr\ A9" dG2]J jA6;ȉ+ĀLh %7?ۘ)p1JaRRJ0H9ǺQN ISwBc IHPK鵠+-a :LC p%hQ=aHTPD EFA`uF\dl7UYr>3ͷk\ξB:dعm#&2G(wWz`moXB]Jc8)g!:枇c\'+%r?ɞL@bIXMҼ3c q\ 2i!rI:@È ,1ַ=AHZo0ٲڠQyh57mgCЕ{ 4A0M,f~"'`hiw P4kCps 0$ υӡ2Sz93@zH]RuV720 &"!?=a{~P L ƺ`g@ua@FN 47$⃖`$^<$i&h|oFxUr,lA`#l!IBG9ӐI _mۥYcRm+ ȝ$iM '?$Yf?`uH89&6iHW60DfͫdmA[$A* Y$6v<8#%Da,kkU+/aCcƀԑ* lP&kyo#?'0TD1C,lUڗwLA. &.QIcHFYU>㧉mj-Gwt4n@  %1l4;9s>(_x*~unz]Ñ*rBK&c>鿗Z7Zg:~";_z9殛6rz&"*u>`Rw`~/3`.T>3\PG+U M2%.4>͌ܺzTH5fzc+T7C)Ѕfvt]*3SYh5].[V&u-J'`CTnHu{13qW9t+,aТU"JG%),>b//y~tۭ9rt@LA@bli"r;iSPjvh}e1<+kjm4`N떌 '41pf!K}k#!.PZ퇴2ۡ3{ h}?V1)œHjDā8p(fՌj\VZV^m]^1lmUʨUCp '5QB\`~0%R.Ą#_@jJ!"JW)_r+N|B(`Z1e$JF;6[hQhZP|'zjh5d;v$Z U)!H\FFL J),ԍ2@d`\ >oSo47:JPcp38a7ӭ$ond=0L!)30BO% a]W6ȹw[ wn".mXM]koVk& =|Q" Z]kr(lآ3&OgYDMb9Xlm{v $;G[a (8"l݁l'ZOM @æ(=ʟ;^jd7 e`NY0R@%RX% ^~DC! M.hMk?L-{@(|.d"JIQ r|Z %c\ML%Q\6jm]uW42BU2 8rp>.B F362Q ,&FKbUʺJ֓6ũJlQI԰%fIa uiZSE)xa՘Jt}J5CkU%Im^4-q$ґ-ywKflR=.\,#?]]VbN_8q;&EL(Vo*1bF1'|zR#CB\n2z/0q-l0pMכhTd0HqN:ht]4XvI-!ДΨ <  hfw&""g~Li\BBD2i%{Lu@ĤT,S0˴i B %*S%E),FkZWhdCew×rgU/$gHfSSҦب5@G ("r{ VHXQA0l{ f-6!H*FV ,rp|2U)Hg7G=91&Y-]!D:ǚHj8aM!bT TF\.:b,ԉ0=ȩj~4ٝ J[R@;7y!3?};")*"Z+LMFSLJY4Jy(}g"rxnj#%O嘃e9:?) 84Mc÷]-'!SӤpJ<ӽ0ݖTr0ͭs^X(ZWy#v֜ ߯C`!3|N(L'a *w7+v;]f0&L 4""镶qn؝b.r,5ӨЭFQMQm\k%k`]M5),9 'c;'$lD4|vC.CRGqsՖ޵bR A7 keж`WfsMf皵=迻P6 s $eJ}n "p|聾q3 GqM >nHJx^hz=ShjJ"Fd?)$o# 0o=D @BU+@dTa C?MuYWY-|r~5TPuz8/ Ft >T 7 y@R,V,.˻m#m嫁6/{PT4;z1j'NB3LUSR}?oϊE|UVdِk$=N#H0Lxz Yݶ~fN"[U2Qqa&̧cl"`= z2ddH ~hA9> #3\ffmI[G\aFQکMbb-wؓg0 +;ˆIC= lI dž5QA=Xߚ%P%0 ,J͸g&oݎKh8bjOMLh\-Òhɗx{ǥ;/ɝ;:]ȲLd2ZQBU'*"+.ix@Q80QH]Ϗ ?y/=sLS]Ht|X?H=R_Pm}Ճ%]m]Ev܈T[>{Gf[NrmGph br/Zⶋ٘ u*!tkaB0nVtx hv3T%JXŝu nX /"خ{?'"+P"@=]B<3!k*~|χ)!/tp Lte۽g :R.S"(1ѬRAS!;]2;D2}pRn A&Mx p"cG'+QpGze8| 5XSe8S?Z~a$M&/2v `7c12m%‹*"p^;kp.:8 4 8Z!0 0@1Mx"G5bHL2D,fR4[F`$pbjM/=1GN}>?OߨM/C'I}͂ \o<|~_|ٝ' S8]R{8#n e2'S(J(OE?A mB1RyTtFp 1>wQT%Jp"mT^ 3JT:ISz5%AAP#6ׄhk  9[~Yu$kyoϼʦ!k\''߈WF 3oc>ytA/Hj>NQLo9sd>yr2W `02 W$LHR<#\Iny_:uS ) AzIQA%TNdLs>9 ~("B`f# ȋ͈g0PTk8=ܰٳzrQ-#Jl:f+yC[666(_ۖ6Y(|D#t<8D2Atǟx# {Bm|ox(h7F{}L54R+x ̑oz`p<~8I )+*@BP(A5VJ ƲiIRjV*FT[4m-)iʍ bS'ׅ+I `98T 9鉺?;Nyqԛ{;P(NF4$ҀD"قqA02W:YetF$<[IS2w_{÷re5F^Da]Lx)4QvA^² "@:5urŵT* [HhU; Cן!/q`js9iiyb8T=tLC%_Lhb?8 z8I'i0H?EG߹Ms9RHUNjIQ!\숞/$ kN6tR 1`:#0JYp*5O:?؁\|2GH{ݦwWhbSy҅z1n ˉ|Iq9J)߈󏨔d4=0wPJi QodqVeJsEErnѻJssRn)CQjrJO'꽗aܞT㴹Q\ -?L:i9:.p,L$?_ w0dpC):I@>g./y- D)7pL(Oq"]%_(7D ;2[ }8%\ac)!&fِdD2nԁ̞=q싾pO-"%`M8 ͹&k ff8 EγȚPho}6Gc͆{6F$3,L3Ɠ- LF)p8 /u$LpnS'e?DG~Y& ( 0z:nkU>:MG3S|mnWDE#f&.(N4n"`ddQص1ĕy :hfuØU UzIS@h3i hJZJ Y 8Bv@o#l,Éu ]㽚pީ8v>٥nŌq5Ӷa wDG%B.媪 %J$aD$ 2DD5O|b/'.qӪťT$&5JLE|3f&DK5qBHOsCx T"%}௺Jp129,сMPYh 0 ((ximPΌVeQ:( WUa&"BM ^K(Ԋޏ;F*$=x"=G.)lE3r܍TnJ\;gȀ#blٛiYP|S]00fGo*h"+  49`ׁE+퐗 >8ӫ lMH.l딓ΕVޅ̓WWr66f65{4Z⻫q23dEhVIiaDF, Cr/܆È!~33&joj)g0h4p0ا9&]*y6aBwwFM-wH C^WZ~ CBNL&@a73.ӣJiNRH7@},$6"v.<WhxtG '5Hne>H֧|F]čfffzz;5 L cED 1c0 \ e\tUy&hZL6E)))2i))Je0֭ᄑnb Jg2#3ސ)]Q~pDB|2@KD^}L BSJG3qU_a^C4vCECtxƀCHu9*)*{C1ĉ&x~zD g$(m@FGf#G!^oc0tR/su LjWUbfH5)xK0q'KʶRZ+QE~J  Uv8٨45;kFe!p;mN6TA Wk_{]c#Yi\ M}4;3:/aIjNԌIxfKEq9Wy֓jލh41;(OC)iA/<"K$4XgͭFsC5ADW71̜!pWW9ĝǸyu_݌1ShtBZ)-;< VXf&ؒ!$3BX _5?nw쌃ODWͱ32ppSc8QG(׷mKm^{j_wl;_xA\$YtV` O6'i&5¡v(=(0u3(ߡxK0HcEh UFo~[0I")Wbu_hё7rv1%BI;%Eٞu|1"2%Cv"Iu#!F ׃ c#[{UV ƧIVqܬoye + \mΒ@d1,k&6xשkՔTxi~{8lA̼Om2W3G:Y+SSo]IT vL\Ldwkg 0`yXd[%,"} M4}(rEei0I'fanfA"ٚ+Tb]ѺeE美) jm\Xbh4&3wc!*vpk]xz:jk~YWTJ #bQE=|K~cml)E b);Br7h;A/ PҞv ]Sg,ZK:krO4;RkuVB"r"ҌHuc!Ǻ3m.΋2jWhHHG>t)(3\C -.ɉAwgk4ʚݙ!򰝂隬5+Y_gU9ƾpgck,*\͝c~0y Js$uUV;;+xYΕc4KeSΰ耺ѢM'30"ϖ LV]"䢨Hh=]sTgJR1UkUچMO2 _|u<{ƲA݇6 E4#'#ֽ$'ի bb u>4v>XE,JCj^c5\So\!c]Q(Zu'PWB/GPQ 냻ٚ2;#G$E/Cw%iD6"_0ѯȣ_:Lᛓ#[iTMY@Z1t7 Š3b08~/ɭ|qvweHU۾xq(;"C م䊄epOn%=.V( ۯ ,UgȂԷC u0nZfTft2BPj2U`^^?4T|H^ -EU* C,jE9]%/ɱ4}zlKzyPnZcs5"/=fh_ Kð!KE;oj< -kǝbc3SÍxc\^ܣ hv`[Ⱥ| *z\` ŬO,NwV\O1b0g(jP&W_vÑɧo32-Z;`.h;]JB)"uӂGm-qh 2L8b|C}WuAF.3OsdKe厗^ yXǡMEu~A*"@L$R;E؁;u\|e"jp8F*(dªpŁ u C{S2 *T"j:1C|\DZbPd˪BKQ#>^3`~1=3\نG%#Z6zWi)4oo/L9T:U+ߌs\1*p|`b^qyX9kEl|-aײoTnhhzuxeZth4EBkz0cy/TexSt~L\!jx}S2S0YRh #\)I͞I zs~ q/yz^2M5H5]efE{ Op oW}_^wh^מaVru oW !cw, ! b]^5_RC{ihV"P {ךnVJ+/|Q5G]W^k c)o%ϣDG H3t5ފ\{wMYHDXn x.̲F~٪O88NPUؕ7D˰:46|a3+e/O}hwƙRsMh,1=.Ov].lh;aFp V-T:%Rqt5w1Z|7 <]ՙ84@0ܕ'F!*5sX* Gexmb&W (=_]z}z:rBBZKeqٱ=KLފt-H\> ୒.eD#+WtvZaH9Ra~{5+K&`AH[ж*'[LN4w@:WG^ڮuj׊oz< ʣb -qI*fq!J&yyͣ9+^`0=q++Q2 gp2oFՄ!q1I|:R;2Z jiL? ˻8DR J!+kU5u=(e 3JxF_ՓtF4/_eSY2D_LK9)&I*&ĜDx[ᴐSYڵ@ƝnDu'0=s!4kzfF;:Y~l3I#O!seRBnm^C4iSLwyx_k[ MX/Ⱥ? 曧ω ɥ^.|XJ嚚T閎DIow w\ &Ɋuc,PSmW=1&<3,3!T?ԩiȗwzI>vP;2! Nå]^=jsR دތ&nj!mōEY..tGjk|? HjZ=cy!GˆbDMc,=ilVRZ"Y?}3k!ƹ@]Y86;Xm@胸Ou)2IIbԳlY6eJkJI,IW2{a@|1=N)}NSiD `>|Rj`R׌pvk327OGa; )TVLT:{DzB֑yOfIjWֵV!:կ6TJe PIUD(p*Jai:Q(*ZĈCɃ6S$pQq1o#c&Ja{is ziz¸9|6fZex:<^ֵK>{>k94"%k5.Ѭޕvk_7YWtRw8^~5pe6;]tgjz;\ 9yj3y$He7YTՊ}5nt?rST3Ί[6ԋN[Ie*| Pכ9\nqWZÈIY9%5劧$M!Qjz}=W7^zd9{8sÆR't=na10.L,еMxO"xf83QP(^?NSV84E(dLaq++r(QgO<'ہ_l63{4$zewN^Lvk6bOIfnCs*c榩vU׈oZUÅ'3T/ MjXxƕ/jYzkTsbI&Õ3MJX\zXF!uFUwcZAlOv9 F@|BHf"5Qϝ/Y㇍;ѥJ)mM Ť,j_jqIU#?=k3LV- ި馒u*8dfVGρ>sH2+bEK&iX:0MCDYY47H^_LSD tv*9fz5w:bXzֻN4ӭXVxbT4Vo.i92m3 @9OJwJ!'B>hpp,P:K$j,RaQگb̘L5\4bdB)H ZўXeJ{.ȅK $2CzsyL'1"0 V]fpa H!#?AFaNȤ*24CI` %$b Lw9xH*9JRM+;L6ZyUF!")R eBA|DUe`AYǀy{ր^%6@m(D 0t(ALTL #ۼ/Ly=4ysa{8,٫0j:6̅'f[ d>D,Rѵ$0`%BHhX  jPj!3m6Fə,hilZDX` Q@d$bi yx?wJ*Ir;-Q[NO,cL>Zϣɐ-ƗڊWFi0 \,E8d G&Ѱ9Џj'@]j"(e"F({{xl֏S7 yLfUTTaC%TT!!2Jnx~^ ~ ;_TY M`eP4EP@ ,[EZ,k-J|09Wldi& >T7C* O7>wճ-T?翹?D8D6ອ?r2P;9)7Ck혆 !D.@‰iCO$%' K,@?A<׎XF1ۡC"ssDJa܏~͇#}%6M"RJNvq"Tq[.9p켆:QNwl|ZU!~R%"bvaG "% i*al,?>^pZeQT)]!fU[ q!4PJK8t1FY&Ӏ|66-U& 8!L:. P> ir?^1&fQ>[GOFTq7 s'?S̨7ߝ8<||`7Ć'LI):zq<&@ Lh'xpTW AaR}'&__~C!I R,Z* (hi=O|5UƢ"ӑ~rI:ds#dLVShH&@PUBjeSP4YMNgxX΄c(2CX,|kc~XLZAv<3ǀ eN .ѨX?yUfUcl[\^&: !vЯwȒ$Iq n *]GaYKw*qب*i"V!cfӯ/Ъ껅G\ݒ.$ʑRAExP NB%1֑QxPgllo(< v/G`j\UL,ՍfQFufD\DfNΟ5}v%wpa@xQcOiкEy #X^*vY@Z+h *:OY%*/̐nQ\z%L%^ Ŭs]>K}7W$嗕A"dLmxpE &R;[2)i!MºAUfbDF-) |unl[WQF|2Zo~PbvKxX(B;}VMė78'2[]d+n|c)GERUEݡ yAkk ?/Zk\E:嗉%EuH*><#{ K4G\Nu\H>[9O&QH*zEu˼H*px]:pm&v 8a6?|P0B$ c"gINz+t0z=`(DҾ_ c<5n3 $2,*䎺~Y !A81(1;kM‡.1dNQk~cI'Óa Tw!CxiQϽ_(6(/ϸtC=|"Fh}8'aLD7^D c115E7p*=cN!,~Z uC[nj !_Ke K/ԈZ}M!О"hR4ɅNd*t8JH726VLO9\A/:Im,fg=Ol7yfjN̰5{ɚ j'}XT~Jx.\b!]rR喔ʜt4K9+ Lܷ-IdB4"=b|tg.i Xv#Ȟ-[y&ST4#8vŠ8Ѣ?W<^LݵN B3\f>ǶMjѮ SfI_1 l=Yό(:Da4 S扩;% fuݱ]V()5/b[/՟*NXgm Ti.<cx$߼Υ+BDΣ^SËex22CM'o1c٘Ru4|2w iϷx^H/G B< 4k d o-^sW U5Lim: MhaeAϷ^fh!j /u[LG[w,C莹 E)ИBGh>BCEHJ&BPĴ^ He!q1$}K4lTS"D4 p3En57TjĦiQ4!uV]sC!:PS0LaLkL^UmIU "Etdijct۫nɠXBPI pLFp!I\q\*sbVتuY1J`e!iJ]A'9%CK+C凴t!U x,$O12N-]v BEfn3cM]Bpm<1LJA(Mq'%B 3x»|ڒrlvL!A`LCʛN*vH"1. ;@5:J0 iNm;{pp'?(MU}>|^XIU!!;|CCT8y<6c9qHp 8Ky˕n `m0js\|zQ6J&i:Io6:u@Aw!ɸQctQJMSpkJ]B7Kv";0(ZA:A&ƙE#Dh nvn.T8)sF**F|)׾M{NM_hz Kq6:?V 5+i0l\P1F#pN:⁞ 5C b, !t!8S~l>X9 hDP{(~N(p|b+H>F!%;#"͎ oU*RCYlhg#k\J7ǽܡ2^ww-1~{QN}  峱pq%_#,7--rwTsDLQS141$̲i$RFRyS% ALrEp2PhrDkpr܇C:*-j'ls8S3m5NF4x.BaGG]7ͫl N{sD^_g uD*#zڋi4(H:jQu{6YWo|bB$_PPK!J JMxͯ77ho+ސ o.L2Qc(-BU YKj}LC.MabrM'М!x.I9FW# 0]3 ީʼpªvI%BQTS4A5}䃧0dzuo~gc"|RMDDH|A&?lO8 ! % =aifhj-Z"&XԦ6-ll1!(&)1MF6*C["jZa1Pd(&a 9ǁ:n) 9ׄiXCOӉxbhd.^즤dyO=(TVӕ2]gz& Ǽ:c4w4Pb9[zC!tc?"&9)*,-+ QAv!@ipIDű#1D2BF?ap~aM'@$"NN?dXs R—@'#~GM#ɣzk᷅T~|EȎtJc ;ṕ6Q)u aBHƌyw&cxA6\l8!S6&=Z*)ް]TBLZQJ*h:3vNs@ rJ>%^sOjװE;88Bˁ׶+.IE'`i: ^΃pC$JB)uxJ&A"Sui;nXHiYJ2Z֥THCGrlLy'="L5 F-%%-Փ$36&h42jRmP"AMҙfж(&(L`2HA2ɉIemh(3*SB4QE"~>ckҋEEvF2^{2ONnSYJ6a" IJR  !i8MJQOXӝui?` BW i ',M ][IwI)F. GI+@ԈñjM,eW(v幹<@*YaWWw唩!7;V6re#bX%3Li (c7#|=ޔL/fXrG2eM.ܡLT) ҴBP-.@t~['%W-j01$q00,-yI9kްDupt`=UBJ)&e jc* ,U;2]4a뷁Qqa/2;" J{8f.$L% B[3܀#ҢhFr RխBS<6L0П%P>fEN>O.\`)*Jy02zX$W2`%ٕNi]y#' C JXᘥ vfף)Q\XdYIbOQ26nJhhrVGDH[CUHi>N`tA}~qvdoԎ=}Ӥx"}KlIRD|c/}D9'!д "zeALFM=#-:8Dkİ9D&7xp]7T^*4p7g%S l# #f xN. N.LNA IHPq !HʻtBU%ԉqJ=R!<}G):u,{@8D7bPAQM0Vpk7^WPBBir@$S 08 G*PAkQ2Rjii61% f)"(Cy!q94k?t_  M@ QEʀ"h hL/PE~?T3TJUOCshRMg30p:|pHx&KFݹt&ϐ8A(SUlv4&$t4a1@Aq+vD:PMm%h  941ٸ,r*x97qc`-]'|}l 2.4aB'I Hˎ`\ w0Tx]b~D&C!"$5R=ۓ}Dr#w8ÿ-ƅ4S^"*z Z #?PQ!]xò2Dw4>>"VBMZEe6ԥZ6mjRR5&6m05&KM6Kd6QfHA !RHd%`?F B4HRhkUKܖ4YYiH\b6̳cUj5cbOD:2&8iJݳE҈[*}.$ p&JqhZhxԂd CR1,*p)ڊm6%U6U5 RM*LlX-V j*ZE54IIfjkLPۼ*1cG ŋ gAQj 9 j:g;5)ĈPATRȸiB$<=*NR; 'I*ʼnAaͧ22)@#!{lovC~)T$IxʱK*ru_hpz+Ic$ fɂ\ӔQs&*bӐj>T8iۻ;NySQ&A8@_FH%p9]G"m:v4u|;KыClƪ|]*TA{TĄќJр Z&B%VVZ6fĸĔ9 #(XnAJ0Lg-6 =gpno  Oy!P>\%8/*r  lQlpqG ڗR.F4&?E`HB5Y,Ôɠ@CB׸\M/J^qPi%(Nl*,()Թ9ж,KmΟ~n185IƁ7P.$4w.4e7Yfy^k=5$/fR xRM٢W5Ӂ/uXVf8pԠz#2tc޸O8!Ps4PVe*a(v=,)n5JEQk4-PA/a#b8J Qr/,hn#* vR9 #NRr"wqR?UOD?1||t'1x4H.2D&*WJiiDWb]D#q8Hiq&18 I!ҫ[km^P }`c#QL%V!IRBrpFM"EOb )~(?F"`D~j"?PyDD) LFҙ"F0[WMJbL-3lɫ?]U&plTEPe̫lA $DvAMm+RmKf5IfDj#2б,*9*k-\d4ԴF5KM3jRi Vj,ь,JDZi\ˌ (X}|Ɇs˛4uxGW$n:wt|$Oz-4&hU5Qm+QXdmEM6ͫJMiV&2k32h$(&BB6~s&w#Q:̾p]@~yqȅBwF΄#xQI70aPf)4hAG76}ҰB@Ly'/x= %Z!M{?t&,jSX!32h:$C1ڪ"}W\=*<@$=.W:xa;n P(g\½:+}Z)N5ɳOmtLoЃ|޽USI.}ʍ !H5?# ;IA>j/M4o0% "_Z6fyHQHoEc]gxgtq֞vF/qH lNE*, yEƳ=>?Hh;?adV$LT;F"B)*ϰݺ|>Ӛp 1@PBDXlZQXcBTMccTZLmͲ2kiHO©JR "bNk"GX`MhX &֙k竊aZ8]a;qeͮ%R%c;SdMv6J'#.VR (QB &hP:0 *R&8<=@CS#Pn2`% 'l5X~S{ݬFrsNkg }/YakƎЯ1džlHsiJL%⣋DVAf+5nB4{wiERRAnODnϗG$lz B`mWj7}@}Ө"{D SFy4,Yo*肠T֓tavo{Z CZ<3e^׻i!y!vzؾz|l5-SuT*(,$ Lrpaك;g Hn0A zi%zB` sFH!z! LF8B 08SdĈpMh@#XC$f9@h%O!xnA 8)Gtrۧk֥Ф`Pi,h$hI$qV\ P"% MYj4@ilP!F YBiiMZRդR A"dAb$IlM1Kq#xaeBfH@"iIP!$X2ڦZc $B@",1%*"!I2 (, $ H"#.@)g"yb˗.&@Ys!0$WͰըQc3׎.GF9lt zg5VQ:Ȭ"Rv{.k^<RH({#ԡTζ[B8LB9#uph?|@@(xBn?Bq/q}2xv vweyȒJEɷYGnqJ;NmeF)2 ~bQ 9pr>(tH+řDLvP! $m:D牄hl񵫥)ri\&$N.nϲncѦsu},!G.icIЃۮ=:ٶhܼA>_.;J AϞsjʡD #sYvKv/&89Q< ]ܑ*HLV:Ekw8B~NR]8=gM Ϗ98 `%W14G+;n@48kriJW3//9<0+!DϴP?rЍÁLad(M"!^5RhcؒE]mAA6|xRvSPRMU!*z#~"P"gS̹j=j"tPOSpPA 'y9M9*x!ۆ&O_Roӭ8z=K_N!gt!}$M4.cA}dBsɳN (bT.>±-dtdČ4fphc,qH`(ʱO"rK#;Mwq+ a܏Gqw'n (:DȈ(ZI gbl\=gIPo<` P% #z5`['' IGw{LEklt-7(Z4YqmRy7زy@$ңƠ%q|h8c(l[TE(0)jDAeY(hzpo6muA-<-VسMTcp;$=alVS!9319&i:Fa0Hnuazh J+|nJ3DUq2VIQG#wONW891' r d ƓPaNW}D-)BC+hw^P4x?4@gd)BSe 9R{ŌԊlO8ѬD $)Vk\!* KB^Yone;{)cYdO#DIJ􊇖#AY@ 20""HFK0C5 P`;<(glYjP}]bF!UJD3L%V7~v aOG?$MdY,+YpJNKE-("5d8DL"A trq E% UI0s8'x`%+<9| ~2~ AuUп.<[I!ԺܓkN nIܧYut'9M9u;ɻQ6u#ȉ S0h7 `99 ((@ ^m@Jx𭪣^k"q( N Dݚanٽ< ްc?$@뀉sDT|1!WWm%,hk D -'&@(~2Z=ߥgDD,1܁r`ish4iJ\P#4hq|HN0_GH{9rlG95|~=1~/a qoߘg4JWNr(z?G1}ghT&" hXwmqN%Ǎ ěH#IWz1032bs8pXҬWIg& }|>Dڍ:ܔ2/}!Ɵ~އgD. GJ`*RuƶJ))%7tKT;a8 6JlF Bvֽ_PG0&RIĐu"q @0]]&@[ x'7gՁ?}y 40c[h$z.k8MaTfa4'  63=9Zk,: EA))0 J.=af޷^F&e'5}p@o S,FQw dJ@jLq 9 >}ܮ)N-&ߒ-s+(I&5+Rjm5֗R&f{\@ks(Yĵtcw?AhaXL잨E!A8cdw"k-C:z\*iAEi#D\=м=*UDQ>7;I.pwu.?G$(}I 9xA 5=tqoI:x#0GSl4۽e;`9XCI1?kē;\o7rkХ`za>L39,)G&bl)8I0ƘC,!/ZTUъ$P)2~P09_􎑣x0c+CmriU,\ɨH^؛]#GGv[w<6VijTjԛi&MMVuQݬY"-ߊ鴔J46ڤ M|xZ҇'nE| y@?z>aR/ဘ*I'P`I+܋s2 &'G[HkIJIZ W oJiy],l"Dd_%uQm0`ACoRl4i qdJRpRah3:~B\<Co:*q8jh "$MF`{O.|4KaTy% uǥ0.T!ԁc2ps?c9|?~Ϻl㨏{=&F: hv#2 ^.] ]|0 ఎ<œ4 S 0al7t>LN=9*|ۂw|6m4;,K!:ACݧ>O/ʅUT0JfCduAF@Pkq*}q?1cHg#G #׎+/%'s&Ad8y9+9D_U~  dp+aIPpχ}rBϘ^<)}/\)@o.~OǔEf9ȿ)]dҦ|U7r M|ܧ8<5 Q]6&87zz18 r#ၻIU3uci \q#whr T\f4Af (4lS:FB5nJSDfkKh"W7 кPZޱ9xX[ՎȔ)M:jp_;g<_ۃGP~W38GIm4n89?50t[Hs^y:Y {Ro (2cv1gMm"" mA'G;NCv"n]tJLA\"!FQ T!qIR @xj>,lӻnS B0<܇qA.7lxqc+Mp ؃g; eF =q0{z"ZMRѯpI)A(I hs޵1$M0?)e** CxȇBEGP$xAlf{'-p6I.ԋt!=4 4HR)kVv*ֹͭ%TB$&` Lq!,F 4Uy lB@E p:*HeEdi e6XSM1NJ\QV"8l\g+weq* Y'3*@N4Z'cFpgˤ;y}~@"$oSa?b~^Q.øLCG=dFUӃLU=؎LHHAI$dc&QK,^N!)Fskh K:-o2C:<(lwsp JD8ܑt*I24L2 0,‹#!$0CZ*+JlUw߽׭H*P*D( KB-b֢MY[QV6Ū*Dhh%VJMmHV [ld8WB 0cPHL0>cq 7 QsBFphuGLJ3 !98v8x"1d̋eIuW2R`(Jx i-MAEKe4"IB\viL ;Nd |J~ma]F1&/({W|&#n (q4KK BJ'ɲWH)L8 Keяwhk':G]D)@C'!AM;G!92~0 GǤ`8\.=D(OϗLE/|A~{h}o&퓛j"Bx5!08H8M("AjHV)dN*;͈ ]8e"72bM I{rdL;Ru!^w&6LC nCH!p$تLYdm+&ՍmMjWdtfi 6m,vtH4\SjWKt%BvIM^;{9:6x@ gz4 -iKVi[{NHwLekmvibmޠnNK|-uR" inQnwr`fPaJJ(% v8J W)ybiyP[BV4 g7n[_LFi-&֋[mESBHJJʝ"pՌDi0%Zڢ$II (*DHbVTiP)RBluFŅp-00*8pT%P8Hdso4kvQTWlktݑ5&%Dl1Lv+C `}7oEř7deŬCn9.wPa\PC[;ly말TC"Qr?(ԼGfPG{*{* %\&lBC >\^h#E2k&?4ECl&du#_6IƲ/v˷,9(ĨPyN1@zC'":b9]9A@jIqɩ`6wh(dDH/Y)::1& ˮ.( ,!W\b9-#{CN&(s$:Bs9f.*~,@@H#E@CVZ"D$Q[-k?C؄$M@f^M;t-4 W$pwOM tiV0uCp:&F1Zrxv勋 ̫H}p"3 J5 Ih,!dS J›HeA A2QhP8m.TAHEP$9\>P YK B: f߿AiA: ooDDY3X&Z u%<J Ha`aJ`%Xx)U< X$ $D(q }AB Rg"PD^@ {rP @10 +|o0&J\!l0Fv@^Nyό*;=tc 5|(+<ϴ>[03 Q< !UD)"Q(E>E)bB @]Y~]L+/wߜϧG۶cηx 8<~!k 9UTG8:MQVi9{|>ʆ$dÖ́'|2B$ӛwlY6QLk!hT,FZN[mͤ)SZiRTeiC0wq)C2 rA>ѱ]zt)( Oه׼ƣfxwXG46A($}n%JXĚjVm!X*J-eL,Q)2Mkdl55K#HJm6EX4 A,Q BI 0=$DhSLESEHQV0()0Qs(yQ#!s@a kyM!0BC@I(uQ[2FěM-O)W/7%NLъIX#(щOJE&Ά:Nt Q2ԋ@!92+$W7"n7dD4(4f(d9.WU7-P 쉄Qcsn‚&iJJh?&'4\QE{jm244ȶEXQ0&K^'b&)h܇΀5jr]R)$ CC%+ nkQERTKJi4-k}C<6.s4d>(~{Z̃@2D> HzY1I@gv|Tvp9O eعNq $6by>m(BJ8zO Ґ I v>7atFMd x}I r{O$}夤6Ũ+r]TrTC*_R1Gl P5RJWmگd20 sCol}+$X}?}ʵp\_F Åx (G!KG#&>ˏք(ҁySı*BQ`AFGbw<hi 2(!tvYe$a @ExMf@sa &ㆢv)CWrğ^KCrtX4PMdGh飦)n$ai]2&PR8}Uv3GQW-ӌШ_Ԯۮtb0꣬46;3I*e=d t”A!%;Z1~Θ9 (jZ^$9Y'\]Ɔ O q: "R(GOɝ{H$7?o[X=|;n⋷g41ɧb P&(ڡ*p'*hz@rm'J+Ă.ͦ&/SCs?D]dHV%1H  ad>r&js\*\QL5ҲTQYL604 BAS,) ;K9FG> "3GǞ-[hwd|?+&&;#\G4N< Fj tkA>S䀍/M#=z{{PYKOO@Niq=CY*lKٞ:FV%ߥ߳p:}"n _`c)hV*xA%rdd;ý|NyHw.G h QK&aգb:" "`BI*1W0`^Nq9S?X:qԛ%2@8$r eF !41Lԩ,"ztG~3~-}_Fiph9}vLhhg 'P1z>JPSX uhUL6g Q'v\In6SNVIO߄4!V.*7MwXS+MB )JpȒ3K,6,ȴAƢID$iLj\TGWwtMa֚K*MR(RY0ɒY)*a *{O' :,Tj(EA9qwx<;{֟~ U^G<0N^8BɅpOvq50ARpaوOQ^y}#"K#+#$Iq>0MR\ ""\\q d&.w>H!b]8OOLr0yxΟ~j$ʾ E8Z7#AQq&0y0&>P"' eāz'B9D_\:N>Ѥ +$ᑄ\J 3ĥGA*a"@6vy[%MTIϩI '[rZMA􌫰` q Dd`q @ q" pUc %;M"WæǬ%4ІCA?fHT5Rd5KA /oql`cnR]ЗٸM1C t$e9ڮ*fJ 7|n5\+QStuUe.RAe9~>h5IjŲ i"X喧鸾bM-8H,FčK9P=@<&7^$E5l8pY7b!Иol@q"&\S]|HQ3VD`5f6luX6;i "(ؤ&/WF]y`IiB!D<~˶0- mOnx9^QͨG0 =OXWB"9>Rv  Z5&2~)Rٰo@A4 SH:Z0UKxl R<9J[q|ajb-qiNENs1y'ߚJ(dReITh $ D(Hٲ3TҩZZT+}sQYCDO`3D6>AQ_5 oc"Qz/YZ==gE&CBz{l(j͉ ^9czr[Ɉ7!j>9NwŤ}eB;_ǜ]9lȩ&ahlj&5'"h;_Z*i@TB`J ['X|w7[.Nf/04D2@M/{(I0#, ,;08L@+@T9 tu"~CJ3%$ 9s0v6XY@O_y@p9q% GrBzZ#bLHPEA ;O\:l6rԞlTH) }ipvzˈĭn f+<|$Q4G|:#ko臋 aݢC{o54離z?v;nX&ǯDҡAfA=q;Cv=S-|̧T :ܠ}~FWE%R'@>j# bKFu0?@B$2i[& YXZ)J`C_|x3ŏޞoA{~?yth4Sd>A/'+~g(gߥ>4|F0Sɨp<<>3 *r9:y7ásRaNb%ɜ9;j q6;X$A\ YsғTV޽mnDM!!Ʀ%29hb*8gŽ;w&M;)PNjq뵭tRƊ[6lm5`[ace%'n혔B"E,%3U]-+Q[cTm(R X5P\{%S]"L-mW MPk&7wi4F5%7RGO?AGq^-%JDߥy";ôDuI`XhKB0㶷BJT)(-M*V|BTEP)ny.H |M: iowQʮPp2B&W0)cXe>k[e#% U|81lv 5ŘG{|'HWQA#6p;ÁS.AK3)u4p2uΝƥBOuueIe\F52C"S sQcfZ")RBpO Nvӂwf 8TW"7wSm$w"J{kyEٴ d8bMEf6p&]w{>wnt]cFLv)vvSaj0+plѬ0YFPAY`K[[{{{ܐPDazէF"2^aʊ̲ !* WwZQV D-,$ 8Ь» Q˜C?j C2lDC ?3fGėھsO0J.#ccjk{2A&fT2Xm,N\T hQU)*;SL@A]_:8ے~CƄ.0uЛnN>|K]G۾'8,?7b`\wg8x .Oeoyqˁ:QuxGmG&̀_`U<'şPh$-ڣBl߷zq1*X"44Rb&֔4@ I @!Р0b\,C6p=Ѐ}asǂ}B!_SH^D>$Dkf܊+=Znu^_g3''qaru$0˽fBa Ž8i]G\=P/yr+B[*׭;h1)"9huە;umTHCPS|Bxu#)x!Guj"3`j{}@AIL=Hv!@e>@C5V\0g+δc4JX8yyG0rBAԀQC(1" aYhv w]tjEH@;gև+  XF aTnL!-0?RGцĢt"hFh6&*Bw{ AhDAP!G䆋H%pL`OLmq@S  a(H?z @@ )$33U$eHQ-g :i5.t7J8Q{VJ (:`Xqj/I_^QnR )8P<8'H̤@,dϠbLʑNw`q*浊ʠt H 2zѣ:$%WcV@)iBK!Ɛl*Mق2c!eF26+<&QGI3`UR5mzU>Q]˯j"AU;n(Ɲ1&-/LHkAq ZaX;c&bK--ѴS baξW.G12%WђV*L6(rSft:brm&>/;=HjY"13ZQVs%+&ȍt܆y%^[ ~SpQן>K𺋙> (mUq7_ ~N;ui6V9eD\+pd4zDܖ3HE!\E}Tgl4m]XoP&JP?43`$y ]_S)϶՗Mh|) Bނ L8߄ݡUycr3\tOVHݓ|,2КZv{}[u'dkO b6G bkq^aş:߮"ںsp"cQDlf $oRx+S[Ty$xݕ+̥ զ E_N+wmiV.P@Tv(Y1qhwQ3>:ݑ e$ۉt" gRBĎ*IU&-ĞF-K ڪl7vm:(6P%'w[EblN߬-z.Y -[{ ImFk*KQ汐n$r'VY"x3g2w_/&vf]2[W믯EuuK^Q#3,E,u9vͺW[R% b"h榬J-t\RB%2"T(EGL֬I&p :3bႲ;t'{b<ȇx<7 MgA+g;+CJ9bVثߎuZXٸp`4& &Jq6LRR Ҹz76Tr}-3e}eoږmlޅKĊ>=tuW!dٗGXJiOojD#\TJP:^\rp tC`<pA> +,TRX{8u >;RHB&tӓKzWQ8lONG7qI:|%Pa+z|p )6'UJӓowT@ѩI!ޥ _5ٍrhьNd1-R"c%i ZxX] 05EpJ.*dwBWɓ]7A̱.}*u?Y ]{cd4F̼I*?>MoG|5}'kLٻ7Ey֦'=&ijJϠCpi|=yn!*vF1rj7}ӫչϔkq鎒6}/%ޗZn޾<zuѸ;V5g(=SkߋȠP[×x\[e|e}<HFg}Z f%p3̬ Ak7-,uo,Z^򰵥+&N- )W}L6~ۖuf*^/uJ* 0*Мo|Wmf^ڢUY)J`Ʊ:geAͮa"QE}aƩ"j1(yzMS;:"rŢ#D. g!Ϟ{:jrΉ]z4aGީ,' 'D'`1 r;^$IS} 8H:Õs4GTQ"H;Di)}0Z]G 16bh/CwځyÂdY/hYTS;O^94bcr:Q8n pA*;혙 ex%hyoO\~S\yQR6C8g7lqhr)Ӻr;ɒPBg;7RKKsv~H^2M>'j@?+4/!*-ߪcSh$<~YX昚RCAꃭG|ܲ}i. }8Xx!qqpAu\("H9S.HxtO Lx9ON]o4ƘSAykC( f=_-}؇$Yp"v,1A~淁PSU@:( ︯3-dpRs>w ޵r?F¹$+`Q 2Qj "5Rb"+;6uq5&I9.Кц$Թ \CҺMy/g݇aqBD.p4T4Hi;z8&,"b#P4hE]F'trwzƙ (%b/,WA`=?1\u =1#Ġ-a$wfЩ|j.>4|0=N_5<`Rl:qAy)_?h<㳛 L" Cc'8AySة;*Jlw-l#P8}ЦBE Kvb :MdTL$"ͦhCU1%*\Ƌ4cf ]!;?A|d+OOIX+, zsN 1!M.U!p]eA}.5zl  UD[P&"`H! 2Es9B^}xDO{ǎ~do!Puby>lxG 9ԘBr x*99q&7 8lƗaf5f$!!y *HNHtH,_Zsp rH͠s }nWx*@(fHʬXL8۷z:d"א;n 9ar]bB Nk A[ں< r1sW@yLCEݢ=u CH=> ~%OIdz39-2lǂ*0mk@PJU_@ѷJ̰ѳO1GxOS8<<f@*u ;o< C}U>T^Nw,iaynohy]0)'9gkD49MS%J|l7<3Q%JOTX Il?ί8coƄQaiR?, XaAa UH|']Ҷ~Zיl'gݬpd+={'jdZrsTAhsu:.~N6RЖW-an<Hz];Q x=5CuG߲DC?f*AlOʕ,V ^ks\32e);|/{Mkj:-e7Ys_;-Z)}]WO^)}d/Ƭֺ4V;R8C`۸Έv ִ[}6>ihp>9\g~ `,]ּUr)3Rw s FmD]aA'|Ȅf B:5uj㣇=|XfV =h&mjhHJLf9g`AxDsbfcS $͈jƀT*c.4ԍU4ZT+!`ڵba.9ԖŞ@bcnD5bç817QvҬ"I:9Z,cBIAq1.AzkL%t+.,]DSx+"6G.v>U+SoxPp^rf, 0vh3*ċu4b**,T_}W/%' j}{}l5mU,VʠjQǃƙ\qA&Ck@No*2%K !+ѩf 16Yֽ=y Px@:&sd31UAe^ c9R Њ28!7\{ص\ xItL"!!"cXMTBG!M=gJ{Bc w΋4Up[w8ـILq("Fnˡ0JA) a"P%똽0WlFzQT RIaI{%UzL|-#UdDĔѯ e}Xy Y.r4bZՌÓy}9%'E~!FT=#K'5[J+#t+. ئTT^TIh+k-4Y5~Pĥ"Rqr󽟉:KnUD!Tc0]X#^SMF(bnN\PqmSuǃ+z4AAZ6 S\% rv<@p/{U,Jnh3f@j?K/|YEA7ʪU6N!S7rWg*%C5a("vHJ&j QA,׊[^{y7țGJUWPr/6%!L@ YX"* O"RezH4k Nθ 8L.Oy&~wDה N.ݥ[mHh( ^(ӄĐZ(i)ɓ(| $JHh`f0nGoW;KM)LlkyD5B>-c WW/Or++D;axZ؜ȋP($a̯q %V.s@ʺL{:T `H(R (0 Qivkh R#&0`PKl[RQu+4\62[ 2k JOJZti׈:H-TDP-!dˋj WAuѥ<=c=0Ou{f0j7884MS!t@dfASDKq"dDD*IZ#Q8 N1]7;6 1ql(^uϽ׼{XTG9`80S_w8Q-ʨ#hfhFh[K&S@ݚEQTq%ƈ*R&Hէl&[P^jwI)'a 3h]>_q_z={/ ZS_㿱+$lmwξRE9EDm4! b *%X8K|d`>rcHH@kh$ WPB1(=E񃁡0~޶$!ȮEXd}p%;xkfJ DuX"*a{L;6fAJjF~NDy폤"Xt.$RB@D{lUF@}aE2 @ TBN=Otb^@iMBp@܄2I'Q9W@i:+BBQmƢ3im՝|c&Gpv25|!0Nר_=^>;Ӹ|%Գ&J5ޫPL&< e,tTmkEj8ԍRzA cj76.I]ᐱ4;,.򋁲ϣ$ ĂGL2R) 6QCuc/gE&G ȎY&WyІ;pX“:m Qm|*.}mȲxϭQ9Ƿ@<̝uO}z;K ;30JNNwh9FX@dc9&|_O?O??W:bH#CoIW߆TQ8+e pn 7`)X3~.,UW"sAvonD"1 CVmTKd%&L6%&MI&i6&L%IID~\,^mg)7|O䕳}⍽>Bn3GE&,Q.UBʏ]@mëD70m\ӎCL4(o^ ×9Jmr*f4y5.~u~o eQ1~25S~Dr6CF*[9hP|d9b%rL*L`Z@WgXُ?6Q_[힔WPd H!@HЋ@  yQ@,@-%"*d*Ң$ 4y0;͙k9A#u<}{L g( N88HK' _ *I)v&:TU3FfTQQF"*@,elelFflZd-3j RF!wkJùiO䨞`SRL(@;׫(K99&ԑk]V2ml$5*.͍DT# éBT ?b,s>t\zO"+Rs;4DӸm93דs/}Qj5Mi:EЌE[*cQ TƼdqJG*v$IΨ[W/Qr펞gNڮwi;!|@$VtetJiRF+LӠk^ 94#6~ѩT%ڮvHecUӗ#P*F %b%ZF)Z%H$5Lh6$~ Եۮ :k$7D;+BY)aQ̴b6?rڹ⪾؄uʀ~~4Gt>r1>>oY?]U~V~q,D!|>~H&'RDJT>8:7/yh%*(!oQWp_w4@0pBdb@dP)`O#Ve`&ѓLV,*e- BBA:A4:0@i C!9B^Ta!ә0A§(88a~D!Mm<< IdCi l[l(hw& ' Pل;k֋F⪾43ĝXN_dRph_":O!O?Ν;z| ۿ+rcՁv:lPm^S t.J!؏?4O@ RCT^wqIiA~'?{WⒿvخUC*_T2׆ٰ!. ųrM˒hN?J xPgQD}Ӕ[LOۏq~`8!1PU@ҁkFۺoU,noYUfQPPTˆ[@{6.B|ԁ@2gr;1q`/x{cΞr IݺDpnڑSp#ەk48B̒"%1.$1sl@s6TIќv*&iZ@h)EJ@y93B0D $/>%`7ǁv8XkTIXA@$qμ˓$=.]b.D!}Y^~ZseF8ᙄeQA|(u1f̈d/=9H'[r ;5 ̀pY㾄/8N$^Cʢg8qQsp8WQ*"@rb[EOC8$^񟮺]L(]+W" sv؜;DM3? ѼD+C; Ӄ\`';#trb(Oug.6"ao=:{sMCٙ*UߍX(ƊMb5֓RUKYk5J(XYce iO*1=2|m2wV"WT!5lciMj_{'pɊ#uJH*8 Ѿ, Q8g|hX?L"^2gCi{{wo"Iu* ?L:pw,e 8 kMM bq OŖ?jxI28v]IN*rnJ9a뽸wf<$Ix^lwv  \a3|/hY̜P^AIą-7;x,s@AaF@_:m̦si(i 6RIAIMkMiK6ZjWiME{ݯDeÌu̚?b"by?N:h#obHevu,Ŵ֫ǟdm ;0䁐u_ JǏ*"Nn=V1L曫週1S!XVa:DM*9 ]QJʧQv5?(koDïngv}'|v\)U/[z/vW.BEPJq)X 0InZ%f$RqsK]ݫ!32ʔݗut$L) 8hL$0sWJSmYJ .ח_8Vsh BUrܵsZP[&V|}67 eb 0>g HpBɆA*c f4$"`Ĉr%cHSLba\bwWKU}6TULS'nR}pKYȐNIƿ1@Q T0KV:JbGC!  ]h`)Ɗ~GwJPԶ+gM͉M %_{@ҹ!@p{'B J:0S*?ÄqcOUp  V`\;mf5ro !(CYpxDz0Tڭb3y҅Yۄsy |B"NKU}k* Ztx} %"ː%\ofR ۃ,$E%Wv)@]Z  4.08^zf;]ӹF%cՉ " k"M2y9%!pO-p&Á;lLE7̈́ H2 a., 8|pԷՎsF,.7Ѽ{3`)X;z8<n$) Qjkpgg57mOF:y,b.dr>$F|u^JPw.|sZP•7R  A& 1 ܪLCI+͸:Iq?bЅ"4M1ku$Zd_ 74B ?CsMA@DSS u'`Ɩ i3b4g]] ,Nyk{f UVP}:U+Uc{T5bI Bb]+@85QEbX6t~/(댘  2: Mcˌ9ZDFH/ /UȪ7ɀA7wތ!G:3Mj)Nfwy׏[:IV{ Ob#"*:/bKLE޵cѥ d=cYez1%$Qhwf3DI.)F$JAJ$_pl4ZĄ9_Ԏ%4J"^kzk+6$[ TU}pˣaʤ߾m+ZnVj7g2>'&=VuKec ,eUhTREDL sx*ѥi$`vR(~ W_ Ljļ\uTC9{MRM9ı67g'[x_E)k"IHA@&1) ULH3gnUY ;誮 :".dۿd)Tj@4Mm+ݽq\dHORCjT|`fsi\vci0irj#>gVD2?hYA~9cY B(H#*ph䏢~?v@IZ ! 2(Q60"o(<9g*[zJJFQ|>w]$U$zI{,FresC5`q!`#LGjxaNvH a28_@S@]}ZG! 5peTNmͮRO7%-48$9!t|fK<ݞ/؞,LЌS@Q |7AF7^ rn>ob)C{0耯/ `JBR*Գ6Y" A)o<9' ‘%bBJ VSEe5IcdH"v5 _'Oa:{"Z)hh; UOPHBJP(!ddZS[66,%YdQQE%cjVfJ-5ѶMQTIEF̛iyn b4C4? *|` !?A"`~==/?O{rgjKV"@~c)I5~Md# "JPlF 0 u i!Z (?PȈ@GD"c_r<W XQ@H:)HP )Gcx/n$ʶGˡ|s-9y$6$AIM3L J(Gt5o@zua;EJd:?nm#'YS#IZr~!)J ǿ1WB 2̤ؔ.*&}Fy@Mc=뎇:{llv`|=Q{;1]aM*vCa78>ϟ|  )z)Λf<*:՝gX@>N[t֧UQf3<3>ٻzmLyإ%v{oO=g}ݰ HmISp4,ieZݢOUvݓuי|{{@> =֣N'v#> A\Tv ܡgڽ|D7ݻv۾xQA!=xCkykπrI陸`gvV{/4wuՒv={EGC/[}]md1ZcwK (}5W^;ñ=@K2٢ޭ Wy<󴇎챃sv[jzwzm;hoX &i#ذD(q*}>}O<;J{//:S|ݩ<wv}o[뼼T]Zk;wgur 7 j׷37&6.} JOzwskGRoS!ӺʹADF|C hvswv#ʪs; N>ғI(>{}}o"jBO Bh Ft dXE8'Զۋ|[Tm- bfFJ5cQ!;P$x݀>oO{tضhiL||>oa^F >>UZ{R {=m2wy{V(Q{ش1)VL@]=)tKOHR JjS%zU7 oz*Kba6 Rּ,nUB 4 hkWP muQ4-`U R57M0evvql :۹U* ۹kڳ3Lx A$U BMb:P&kn&ƨ%B3Z(xǡ}װҰ P@URMAcAlRzټ ,vNVme M$-d;L XiZH4#3>%(ѦFmC٧ڙm6 1kkc{jNk|J#tE)$= P=fn*Pv Z0|8 v 7uILEV}'!%MeҼmpM:aEsO"DR QFdސ;ut _saPdɐ@@h@ @ 4i 5='~zjSS0TOjOdɕ=MLzSڧ~L(h@ MB ɉ0QOȩE=OSdS'SSzS=SƩ4=OM'OSSG)oMQ~ThzAm4ѐOSiP!i"!!2a2ijyF&J3JOi~U=?R=SiOb4C*oMC4ʞ z4꟥ҟh2=@Q=C4@!I@0 &Lm4L&U?O&0SSL~ 1*~Ƣ=4'=SzzShM I @ @4 40L&24 4 aE?&!4Gt_h+5B(~ğJJ˄j8C|?]G1ı/ԈֺU%E 2.2*?CC\QB?#@>yoT/۰s)lOǵy>!a 0?A@!@g`a1S>)rӶ&` {zwvС7cEC $zԀs Xr^H4ӔY!8?VQS Xz8lr*#?u >wS!獡 '}ӘNIAw9n>G}x_;m}?E5DX&T_ :~Ѽl3_`PJ)2p4_/!a%ýֺ#3 ?爿g=0"bDeS,"Hs߂׸tq=N*=u{h/tkzE*@_AD"?D$=┊*x8L3Pl$(hڱ X@0H㷑W}Ԏ5,M98`TFo0۞2ld3zc$-t> ] ta@׀!!szSMQ| ѯ!Tq&WBWMSM~DUͲ/M':/{(?q".D>ʜι1JV|cG| >Ց-?)bE~+G+R}ri!|=ݝ4&VnߒTv1_qeX;Dd8e%9)^@/v$Ov3,p?rab5R@7ȎGcTdSNml,Â)#XO@ C41=tf尔24 l#߫ }O5Ef l.u!@sP!ˈM1/CJtأ'=-J"rA !Fl{JV ISo[޻xG)PVqIud#ՈG_aIΡl 0N2\bEDfU U+بW.; 3dɧwzkύ y<?ŇzIiefX(`,|xG~;V !8D> 0<+]C* &hrArp5v*5Ai [V lkoE7{(uRՒ̶ؔ)0ײ/p1$I~5!"m ~wk\\a a((7+ICdFR_쳤 qb!{[doM)+dz6w'Pq3.Jnjj"~&]czćY y ZUM4h(|$Ba ^}TftR Bp}C$$H¨mLJҧUwm0 ,CۧbHh$ ( QgV϶H'.2#죉Ҥi+$"S8늛[):ډKHt~ʼnI:DYe?;:<eHi%1<- DXsRBa /5 *#ycp%Xs@dG=tX9cT4dʬ) V?wH"(\ 8 [Bhޣ#PW.« y==s\<3J&`ɍAH4%PIA <^Kd=rqE]TWk4IU bǣ@Dr&=4.E}t1ӊ Q%`ˌ4(r *N(@i"q$}7 TF+ԣ >,h` uhНk ~"as"5e ė:v2{QM3@ebd +}Y]/Wj9p܌-T_/VIl  7p(EMsS{:b B556LA3Y` fP NLgWd <"\KFrTs,b#]çU'AQG򠈔.`w`nr| ۦ%hrBꙸSoGEGv+T?:@}a6LwsIQ\R&i-^e c*R#p mЍ[+1Je?+4{x@x:0\4!w E{SYH5FXSJxEɮ&.qOp"ւ;FaQ ,$wEEDu *?|U"`_K* Q%prh2AM@H IF,9xň╈#4ZQ( 5`^sXp4U.;$q>nvdcNF--(RGȉ.9R3-$IZ'{⣔ "B޶!L-C7X)uM:z$erJT-zEbHD4Ƙ( >o* [#_ 8EDNո;҄ T 㰺"0 ־4_K@K}w`ᦩA@x*2#ٟHB/1븗=֌ g>!K ݂b傧#Džj(r.3c3HO4ΫDs^bՖ\"Wd~uqȕdTumR:ʪBRrZO%Qu>-Dޓpsj{|b{3dd :ȸyݢw~epòj''T]6Xq(!IBЧMoMqTq2^d\'4wA1LJ$Gj52DPÌk[ 1gB4ZbnxAjGPI6"6R I8#%F|^6_wÇ^F[eow~gW>`DYRZc\T>)\ٖfʤ0*l`f.I$S#ɞASV6qhAIM#>y\qMȣ*<3$ -A{ UXƓ}<]*}91(z8M=Lj 4!|B57 t j(9N>Ԇa ZSF}nc?pYʋ)) ˷ƹ9ubTIE>kw ŽPx0ҵA<o Qy:),#,ޅXHL.$ vMƃh\eR#Td؟ ALI6Y,QHF-{w˚fmyCi in{rdYEYSBHA%Ȑ(_& !eŨ=8wѓ1Jq7payE/ʚ 2) E8͞_0/t|ms tjm%Q8)֝tշs3ǫO1[U%TUov$J8>B80 -!u=эa<ԘljE К5 C!)e8, ž:[[&FKh jTv_2 P_|4*-ɵw ϿIW5&V  `:q&M"P;UQС׶tgKϚ':/(0eP9G萖%gMᔞAis2B9N⤏e{02-W4grG> «;+*FN#nSGK-&5if\!QNVY2L^<50-*ԥ5iQ~,P Ѽq LCyEDXG!*pQH)醓<pdtM#q00ɣpˆ0wGdz"heO9R1,_5b: %Ό87׈F b?%(]zhS D SA # ~I6('t/zW1ᇤAiZ]L&ӶcŠ={9:9&Z@6ӵ|V"0vDIpі$Ny4'*BK2782q %<@y7ҤSpbQ%&FL86yI\Zy?_wj؋_tC!挜[]S B`VzVdO@L;><gЗ/іCkt/_KYPT9-uq0 J ~n4@?";h-Eu* 홋*(ݑge,KʖX:ަнy4~,uzpdt{8p i\^+p,+=heࢍo<RPZ<\Yvm}HbH J$<:/:J^8H{|_>%315KthF(ɸF25$듧og iA LznڹuSD1 #⨊Tx[ϥS.oگß̆cfCb5J,4Ӭ?AqIDYDE;njm0&O쟽&+ڝ}b"TBO%~p7͘Pu|cus" ŋ Pо%IIZաb,SJ:sSZ"9Cz51+M9r6p]kAZY1刘504tc5:|{P5^Pd`F=hUez.Qsy}Ӭ]S&b%dO:b-!NsΘˁR+Z$5maBYag4`@$GqkFlՀb@D5u|BSp6ĀX|dFImِ(Kaf5M$EB-*P"dT4+H DCQ$AHCFQBJ * U(A)H@JDB @DK@E39(&H 284Uᐼy:e2e/]#0Tj_MZ#{t" Ww%TQ%PF(&o?noԠ!&a^u'U#iw}>G|Bpg<`Ն_S⣣ /YB#g"R?T;T|˝h{~b]mk\FMisn]FL8 F b6&߼O BPR%::9u,k+ C3i.&id@K)L"w2]u] )VpvX HcxשNcY2R> Yi]ZXcdX\|w {Z*r蚵QRUkդ.߱;ܯs ݯ}kX$CU;?)8cbD$W0ҟ-4RQZ%tɃ+zۯ. ;|B&tr{(G_}AGu9H_,@ AshG/V@\51L%aOCˎBc'P$L)\mspᅬ?^Lcƨj,?)x_-'iE{2f4BL'\]dD$xntd  fz)f₩?dRvQ3 dp?I&EJh,r $) sب#MSȚk(s> )% `( "ቐIE;B2 -)@Pf0Fj?_v六}gRJ}ƮnpC Xjrc4䕆 h } AdӎS1K@cd `7~= ^mZ0p/x]KOB==6in #"Hf}̜ ]8H^BP{VUBSq2WSX R2D;f!M"uFѱЄ ȑVi_̈́?oT66(KFPX(n@!J +B!M'!xe!2{ I5J}ҕ4zf +Ltpk3 Dnw$9DT Gt- Zeۙ!eE!T$4@ XWPnhXbOq A"l$r lɆk)̝}խu:YEd*N$ҟq*(aX5ЛdCI6Xn?Ʋa*y+ޯØA61/Oz˱/?̤hZi9mz^¡!7C;4"V(o&ۭZ0$D  (Ҋo}YY$r4 `fΣbX ߫R@uub|=,~=tfUPgPJ4]u$k`?? ގa yǰrjeİIbN11AZ%ad~ݴvWyG5p6)[823<ߙbmP6nw#T :4CqZB6"!Ss:*Y:I׍/?ѽn:)T/ UF(踳OgSA&HjyM;3祿LG(c؜ Cba Hr#ÌGqPH=8nߵYXy{.^p ETk \}ݢyŻL; 1~w|!Peϟ4KCc 7ᶄmܶ)J(:fG ኘ](PA2뷪7vAwfk =xOyC쥈QkoLӡyh(Ci@&rdOkHyyadOtJn)w@'J( K~6@.){Nm4jrjC* eV$ߧ&0M/$͘NL"E(3Gm\h$k*Xp=a{4<LXBPW CBPXeMl^9wn$%Uʈwu$SC$Z,)2pEVk !ݻtbڪU hq.I]t_5<Ύ6!T)d\\\j1K5ŴC-/|o}IҹM-6kiWF6i#՘7HvIa^[PB1 l6Wve }? lJ ]-Xooӝ<؍rcdž -R3ʌD3\ˁ]ӆfZ4ozdM8cR EZXlW2ҴTjl/%37[| vc~s-k=c9&aÙDL1U~uOgK5?s¢%7ݺrrHx@wg(LJe[;+\e'l)xӭ~mYS; |)KA]H`y:γA$bKMQ3$STE4M0IaQUL̢2l' *)m!F1h'rC os̔=j.ȅ0*B"R! 3$pu*ӌ` "Mא/ o*oWO*M.IDUU@jePnXݴQ"kqG ?'sb>wg.J\L0db)^[\b.}X!$|Յ}MT!Rq)GOo!cPE:\`0q P_ɊBnϧvg},O!||I0@}Ш% bj|BI($>lZơL$%v3*GEH?=׬u1F\ft*L 7|=/b8hmIX9DҔ"EMXT^8M7nj`bUKl:3S]wb H"sH)j#1_ !`P"0c ʂ$m;6-M}*fqX+SF&>9+"Q)wxyLbkr +,DVӁ4`REMf81,J *{ HME2#c :K/7S|sq8ʃ䛝հQ{mW|{?c u@$5ƙ.Pok"bm:^}Cxa`csfy/(=:0hph}7Tv~u[~UKAJd"b#`%=_AkAt̴uYTQ| F mVr0ݞ621&j2S4CHR08f bŊpv`k`$PƼۍed嘆%Ki[oċ,w*&SQE`)]˕ !nنZzݳB*f hR: +"PUmm`ԥωGhEI# ^7/'@ 5}["2B҈: RP{>|=  Fi&|]nLjd,j<ևW»m _F $J2h17SpٖU-BC ]ei0h5K/ν7 H΍ F'"$R#ۭ 0Ckr׌nxMh|V +4yAt5EQߌ #ܩ9et9-+T[&} s=uzs668X:;Iro<g_szA3Dj 6f "},6_KSP$ yeU6V|j1ȲIy"##7WPk`@ PpT+Ĉܧ}~@@u@kz{v+|N..55vʺa2FYkE=;KJDڣzZ& !hI\I ldc:PK:ߕv3LOEyMDlC͗bgEF;Ⱥ ʩS軚^?Y_bfn@JX8 AG V~6jt @d@m µ1Wa~@Zu"wDRj:#p|yΏeNv߸Ft/@|.W__Y#4S ?]SYQM К `%ԧj:`0vu( #G*ZRIr)mX[Թq3Tɐ&h5e a̺T ld0N3d'iæpɡbׄ1QXVDa ª3&](HWK\A-P \b1iKDU.K  ]4jX\նSٚ2(*Ҵpn8log$m*j7Jd̢01\`mz7bkAŦq ܹ0d(aJ!7& ̆fL8%9M([mYmUSJ5&$AN,5-̖n&33)VhCr1 8Ι]Ж29!ٔR]fbY.ƥy)n q2ڍL1[jY^)z8QbXrjDեlf8ѻ&ddՋUލ.8}V^PA 'œ5J~~__ 1S2ʇtO`ߣ\λ;~8Hkvƪ잝kϢ~%gnͅMѭdӏ=?PP-R}2ˆd 1J+{O_:^I ?Gd*>O*"n Zu'˯;Zr<-Qlъb-Dc} DF(ԡebjB*%0 ASt8c餞|Sy4dS-53R Ta\ˎQ7"1flS)L4V2 (]}Nn뙽G5hhZ[m VSS4ut4sXjE2噊 \L(Pu@4ѸUEE,4K`˘aj*ewkCn}vrւ0mK!3;DA5[1QQ~~.IUfԼR7a5|!کb2QeHnBϝ}KP0-+Z}X-->iR6L9d-%9[ITMU"V*iX,Œ 11X! #G1o>XbK%~ϋ:˭Pmg՛;ռdQjBapA'n~jD[n:l<*&:FU%U,lȌvhqOh+('X'=u<#NT݅2FzmN.Sf.VepqAg4XT*2"ʭ)JAF2kELe-W*!t|pR.+Ldl-1YEQl ?:oƛ(q H0ؿ`ު<[L`z?#1szP"z'\q/~bٹs*J0/Ԓ X8̣pҗBRhܫ-d@9c/AwA43CaX`(2H2x (V] ԨO{'6<۠PԅhK /}|U X$#͈a20mtup`z"Ą9nJ,m2/ Wwt]X~cA$^f;yY2t NM=NXF Ys$<:o}'ekZԵkZֵjRGwzR)JRkZֵkJRs9t)JR)JT)JRkZֵ)k[N{>0A (׊+aeRL]E\'741[#)~z>\ШJNn#Q3Q^-I|:F8T"‹*=\s©}~'5|X:\l}o'㫂"%x]W_M}&^]]jI"ks;wrq2#%-L--R7}͝ztPSV99Q$DKB! yIR,6R2hBF/wcgA<yyTUBĉ2SQ4RS}S]K٬}m4#Btu=8]Xnؔ-PWgx7˪4 UP?v(ѯ|z-^Zb'\Q]lYﯵ &Ź ɹ}܈;^祿$4P b$8#4Yl?K( 92)¼sQqV!q"r9]@9ɴOb icCxm"v3eth3D uBId NCߥϽk P@BJȰ|OO?, NNHP?]L:݄g$0§JT/R\BO2N/CX6X }]\ [Ze,9"*v|b3 H ?% qu{8wp2&#yLڊ#sװ耢DKOTIrjiCF]=AqsӇPUi(NfP%W7kwUB@Yol6u)-Ke,7) + `ʠ[WpG&-+_NcRȪYPPC=i'ڀH@HFTwʲ21غ}=|bE$3I+*Iݐ !<.\Pwz֡˰^daiP6$<d  RKKCv8' .SظOx, a fu{㸴ժ / *X$ז&H),!]E||6w9n'yբX/g? JJVH) ͠#gfvKi|x2s!iX,JS@S 8!14I's^=G8FlG ) U`!2lEiQvߙϢz^$?U\0g>{j&M@کj&KL:`IjCy=_:̩Ȝ'6#<-RmY=`1N4:9WmBXs]2LOtowɒ  {vi ο>vhHòzCМ&!">(@"O%Z#3\_r Meag[iڠ$D)b@,Vm=j GΡ`[,P!ᑁ a'PBd#$IF3RK|TqD%WL 41n{7:v9wlsP/Q2sn!8:(+tlf}#LWAt'Pq1oW}X~m:pI=W@ ,RSt]b !tڇJt3!~};bǦSC!:<3?]8s~g7 W7>SoR"$J_ 7L =φ@c&O(a2ZakC5Dh+" oWy& tFT@ᠣ6HhcKQuvov/lG 1壑GM*؀0.$Ƅ\ <]cNBQ#/.b5re~AR=\jS~ke>$Gt I&9M"9B9?".jQŲ`aSTEEy0p(e$(EyE1Hxudܫ=WE>xK_?77-6T\<˫C<_]v> PB:񏙟NMY42ߦsڭ1 HE& ۍwyuDMQ2fVTAffQe/x(RҬŖQQe^/qA/_ %C_l8*=2^4k]*ŮcXbA``UdWh&!m&LcAlP+2DF_#t~Џi#咲OI$A7S QF-2& 8ӄȍUQFCl0d0٭\SA IE)E)~|i䘲Tu8Q~m]ٯ?BJhR'o~ RM̄}>}y"z/eطrT s%Nj33'%#U -5}\G*Enc'r%*dQWDl_db.pj[Q8 \uDe dAPm OTt4:Ծ[wGGhUKӍnW wQj٪*HB +ׯ5==>ns<[SmP'֙~s2*I!&`k5bUTd<R>:}A <,L)AHD0HRR$rI0: 2R)lԻK >`~ϟ\Gw%fPD(rΏ_KL[~+8}U@IOǓ ;HVfŋ0uDU'U2k+ߍ2Zvx JR"*=9U4KTT% E4AHQJC (Jhr(*B& RT:8QKFZtuo>Xu[y;{j (B& UP $cSpu[/!z+w^b֟\okۜ4ߵJ%;J($+=mY[5p':}G)\Mqc\or]GTƠ\Š |=_w]wȷr0zۻ;jȕaڢH" y6 @$`C;xҼ9Ĕ6\9FA㊡4r@xZTHl Z+5vkp04z^L5d'gWHb"<$]{uP&x 0A1˒"psz 12Y# ]XzBۦ"`qUzYX)Br#r w&;GXJn%")=}Mj=fQ$ p 1;נ4)JwU)ahQiR7 ΐ-ih.Yz3 h )Q0" ""]2+4#:Sl"ౚTD-tsc$?"eMy4򞥫?-ӭpyC7ʲ쏻OWrgU7(3hT@!ԀB"KEu 2t)/ܵt v;bB/mZ T+ ؄d<zvaH#cbJ&: ]/KZwjDn<[WO1qocB:qpn~ G%[J]#xOۥ (IDi+Tz*ڹSfz #'1+MsMNC=1C ڕu%~R. *3ZfLŠMpf-Pws xz "|0AOT$)F4&- ABE%4XyFѐH"VNcL$i Kn!"4׭ir̋e"2e6U΍bf׳\Y۰L1dJŭ"4co؞aN‰?Z}P᤾,#tOdVhJp Ivppߒۚ_L-9ޏJ%Z XqvWjѳȤzœ9+6IHG:IH%.("R@KT m{_r]tӽDd:ftJgd!-H $F|hH,4Zd ֛%>= c1 "AbpU0Hl3QGhAkA~a_s|Ƕ1WoYAo3DGcp)8pԈ@ek0pN`uTDwLlLe\_BYBe a԰9K=Ňig+$#]5M+m_ӼN@A(jʥox*=mSxNUg 4YD"(Y# `:d2ޢ+8Л"H``^, 0(BMQ|ݩY?-A [Paʷ"f; QQ-q79fXhcSg̩O)X=#T^96:R;BəLHrvY^=Js FҀr4C(–o:8#A]y2]f0eOΟ?)0-Y؀;DC6JZ?G7Wl$qg G0Z=d7bA3"S5l8/>Ry.Ue748U#?=ܹ_7PCXed[SugHtJGl zj_l6Y[m$| Yo}Cxq?vb[;,!\^}EUIZX3gv]ޯDTʘy;\i6gTK\bJ$xGbwŴD\.~ϫO*͎#1 g%$ 0xFO)F%[J#ia8jF|V5"2( 7Y2NՏHF^JO= mJ1ԴB|V79\}l}XK˫)MZQ\6!H51z$"YJ{*\KqIi AF3r./Oy ZNlYgIB; U&SȚ ! ``0V Dn +2筌6MCjBpP8}BwFʬ [?GWt$¦cmhHH3|E]UB~VF>(K#c itwYA%!zs gEa0ѠaFb\(,ȢM殸~e8t+CR#.9!)_Ț} >+|uE4"w}BI촭A+.) A,<~hT!tn:_lMК؟uRGpE.^-ji&]e){&{C {eTLcp|5>HN~ k hשڽGn]|!iwBwߒ_3.RtF9`L'>/:ᦔ&TR,pw6;BqFE.G17ՖK¬[],  BV}Uu71Hӂv %{^;^r8l H~ZeWV!UYoܫD`9$eYTs51>~ᵭ𧬣Z E:"x1( (I F:;p0 ݊-u-)~e-,H3DTv2W{ Q3?dXQ;l["bzqV\יT;Ue!Ԉ]@EĞ4q%d 1E A:),JӶ:1 oG-e\*рs&~@qG"WgNҞ%#AHopOh&0@j.)fntPg> gUa VȂN) t,5bSNsf&bJ5328Z1iE x 8ҏt뇬:wVEI[t%:s]H5.m矁+Eg^]{U٘`x͚?76UK.UHUuXŭ!e3В)ʫ,.7 /YTB˕o?&JQmwd ->Ŋ_)oGFYbW~y$R_ڌb{^`++-6Kl@dioQSQ:7t;.x⭳ K9N4>k:-}}^oI(dS?}Au_#JMun^k_ȮDA9po X%;ͨ#r: =~tlaD6j'axddwИsIR)s;[3WrvG,[ ș弼8©ef 01g&)1ݰSb꽢Ǒ.~n9tBw9&x5{ ( ?05^o'ɦ^w#IXFA[ xs5qkvƷFyom"խw?Xїyfo̗շN"N%k¯uBh8Cr^be4`مa&Y/&LJlw؟_2/sp6>̜KeTz OIט/"3ܭl3hs o(pPzn;ZZr\͡ c7m<4pm'=C̀u$?}I.qiJ""0B<҇駑:~@LY8j$HF-ˮ]h0!5:>CwM!!?ѐݺ=g>.U{?_CC FK*s{vLcq%5n= .ډԖyK\цo 4ݣ&~uo16D+B+RCVȵhC۴ócP_]U=wHIj-kg88f"jbASV!č%Q@+$ --"PP"R1!11cS+ J PF%vI"%~b@1HDP44ДP +IC2RDT X VX!%XPbdJi P"V$J"X$FZER*j$"JBX RbJ"$QBJX"i (*() bEih%$x&XhHFi(JT("JUJfa&F%j !J(ibF 6,IIDSQTD4- KA̴ ,J)CJE"QHJ HP5LM!@D R3%R!IB I)DIBQH KH% 3RJDĥ! SBD@* DL4D̄KCE R!\\2iE% *"V$ (J$bd&A $b"%%Be$VeB*"Y &BT"PJZHZZ"&f iU`h"(H(%Jb!))B DP> *(bh bhZ)hh& H! f`YfJH!B$UHPL!hh@A;Lk幮U : #><@x*{E2ԟ@tϝDw @J)qʁnR?$\B`ZR%FT@$e<5y|ᦽesT$HPD$>=蠡UdoQ[&ϝgA{'@IlvFLx+QEc㷿Zbv`0 Hy{pAQ4ČAوPD#i 0PD)a؄Q)ii*`QYŊ)faIW[v;/px+K)]pj/{o|S@hSFvm+ô1RQ\9.=)&ĺ%IΙC7/2gqPpt#YF n, ^-@YC<7!ԋrvvjm7nQd+Ttqud=צWoY*C$Wzsb@Ʈs[M$FI] C6#pLǮuR"|vƛc-5/!$P!Bj,Ż axswt>9oH#1@T@hX=k/Cfh$oNA9fj&aTf deY Kg@(O"ILFWK;'/A¬ mytUډ+3$!("`&*j" #QÆ1_>Nd: '7 @{ PQY ƒx ]x`>R&EZ][qk8ArY 2v# *A9!4ɹ U6pN#~ߟZ<;l /oE 00"D2%Ns׷o~8b8a&bQGG "IFA<_Ǿ.:H)!3=n;v<^-efM=E6TiIcւ<{ߢw ),g:1Segt~U>]ռz~u]_A|x v?28|سYgx ;^y:>&^ͺ66@@Fgkl>}w^qۦY:<bsaB{AM-0?Knx q05k8Q밍䉊nm*,hNF}k`/=I 7 M,QEd ^e4paH]9 T705Ƕb#9z6Bf(aryDķ"awL?ׂ+48Fqao8N;cQY DhACM0uo_x_P(Vf$"qN-X2v4nKcIk Tor^IBeRB3`^: Cn!҂>&;+tmQ(Po\6=; $gwXD3dnp"hs̖s}nlFw2ΫXqy?^=E_dBL#q~OkqR ,`AvV,̤P!1UY\:+'1pd` QWd3=_(\kQYrd)iԙi] üQu\P^*/NK JqxNMt] 1)IJZ$ISS.D8!Rp/Gp|tuD p B*ZZ,U)V#& @FP(Q(o':27aD #r2mk;2Ԫ_K9Zsxm ׋A/Q zGH?()6U`j96Ԑ󘗰*Q@gG*B\a=o|_4RzI>7sYtE@QL "0.ƫw[=t录pO uhe}Jie\`](}> yY_Gx/o1ǘҟ0'`2ZF*D;3tWdG_Ê]ͼI/?zJw wm֦V3ZHfr(J68}؃-yC%[X솁w$T io&̮f"'.(v) B `Sk8ߗÔG$!{ {ڰ{h9X-005auɁ7z;ćzs]@5cA]WJl(Z1ƫNfƒEwu﨨5`ҁ>VoC4~6AALUQI*!׻8ILR,N`^gchr%H@`w^u9,ܶ6"h/4xVLcC[L"!79<@}HjP7xv, $-mmu=7v_^BEq(l(i'!qP}g{|7pNA IŶUW 3CY C&PY8F6z'σ;t<2'%%Ѕ(P (,'oE6>t _^ѯ & 1$e8ih|;j 0:m|Ϸf mֽ԰ȨNg1ؠ I{ڂ%Q@EPYI3]k_?>1,SQ8FަI acQ_TD`nW  tW59on|mò^:d<lO?&Ϗȁ}tvSU4Tg "G!O&1Cȶ#V }}30;ɌYF51ңlm3t*5kmtz\>޼fA{nf]6ǙF}1e&0;Tf@  L~3z ~Rgp*ꮖu)]m֫.pm>u;aˏ`D` .l, o AxIԸyK95_ #̗E0ll^ <,ܙjVqq"f@@ADMh7MBmܗnS8\ =Qw>3켐G|{'#^=!NC BTHh, 7}d B ™%„{;x]}uc"[6|y//+{4p<14҆^ 5s H4.evtxħq9w@8FjK$DtIqQ+,tW@ 6ɷ@e$^ =#: QCkp,͵GB7 !oks(}X+. NU侲b&9!Wp(FRRjC.J AAl/qH; Bllkcv][BpnB(6AB@,YQ1W;V`2T@ 8Y\)a9Mx! )ϻ`E72,r$IZjrjd9Nx7pa(0006ѩF|'6K_OTwO=v\7u$<@Kc{"u:ayb|مIDL~;z_}_7e8Єo3?0B-̎_ Jf4}]{]:9vc$|q"~~z|1j8u>:[۴"\QH-z\Hgvr?(Xm= p5Ebz~y|8{LEWX#"V6A@A~Y/+( 4zCմLa1F~_HS1'~ "kݷ K 2Q&K;ip{YTb@ b)Rߍ3!n:GH'vǞ5T3\[At ώll+ ՠcZ,QB8$8kYb02*)f`JJK)h1|F H$V\|>O0x=|t[X仹{ϭ#,J5KJR ЌKT5IKR @4P4 (RDъ9 'hJQJA"fPB( P 14AB QB4P4R!C @4PI@E4-"PKPITĀJ*PH8E%+CHY&HU- 4ҷ iZih!))hiJJ *iB BZP J HA(V(Z(B!B#_.A:CE^Izߥw' A.-%`x ϾMGxnF@Cp|q2 ˝ yP^&uj8קQ]ߙN 53+NQ]|yp]x)DћrB@TȂe>_A x  v-\ wLr(">:uګ@|_n5Q(<^()?T UUI'Ib͉ {i(}f;- Ww"U}'-,\ܵasкpi-jZeIe`-0 / 4a,0+VT n̜g)D}?nBB٠*.ƔMoᦆtXeL%1b"|;gp©XVefLTjIz*dtZbu1ē̌Le˖Ie׸vϺ{9~5G|xߞ`8x*S MPKY\]_I Ҫy@R>,_mT&+WQ*!4{snH\Xs󍞲Ǧ4RJ5ꁈBPlUP|)i%)6*T4Y΅SCȈhZ՜V@G hrJE(1O A7.wv]r&Iڑ!H ND!LVj*:HSpÉGSDآ/6a˽Ғ{lq*ߦYeAKY"+[O#\=-j>xkR?ZrzgI+}j<%أ%uD68^!܅.$T?4+SS:XB ٳPylqNgE!uh3YY NJvEho #Z7Q&ջiNި u[eXQ^'b^x2GGQVHO~T]5(=y$uX,Q꫱ʹz9DCp7+Ve@N?P1Q\tt3Ʌ.Εiߗ+]'q)|$XHŷ-stmeuջμ>Dt>Wj&JTkI4gߚG]r;+VDA19'awkKUy z~㈾֜I.8M7VBXUTaiv=a7ucffǮ'XTq53q\_:tk\)qS~e8N)'K4x^}y~ 9$Cx49U~ۿD=Pluhvw5ؒHNZ$Lm W0槦[j[E!|4깑bn 8ԛRb!m::"‡3~Y+++.a}cz*Ù>=w:\d3WV|xJIq|)KDi+ ?_q!,KXʸ'8FQsK䵵,!IkXҗM g櫗^G \igqh~;egƄTJDȦjB>_[HuKxd͍ 6]^vNVknx[%K^4iΥHVqӎ.9Бn&#J7NjKt4X@` byAaoi|S> UUUUU^.%5_+UUUZڙKEUTQUDUI;v&!)MN彅O M3`u-V }d{ԓwxy57A(AmB &ׂn$#oUݒ"^]rJC͍kerb{. g:F͊A%@;4.#tWd2?R{^"A6`7*\?;qŷm;fCw?FnL8,.`qG?j%r&:'>]b0;bESN#W0h.ӜpATpc!ERYTLGyXVQrP1#usg*YBҲH\" f$2`/)cd5p]k1 *i\\Dh@. *!}ODӎ3,=]+LB&t""`f|uJ4Y"ت 4]QT> ]QI X41+uE+RB(IؠXk m"CQΗ7ҕ)Q6 Ր ˭sg6F-j 1BClsg7(_]O7L!lHTsG#`'恊vfyvm:⵫;0 T5JΧl&Ha )0s|fe+?*(I:3Bdxwt>i: W+3̩D.ǷcTESR[`.DTվ4!>Р A)P  s3˃Xp׺nBtoq7J0!e AQy@Yp%'Pkr m}pDH7]*D|?Ej$2*dGN  ZZ:!w˧L"Y:27V_̗ `QC8KaSkS_˕E,:=_'xaw|=qH{v*A@!ҥgLd/IXlu;r~c9ufRf=ֹ*Eϻ )e PC!B -:Mm|s=lEDm.?gzu.X{H%CmEc_@aٚ_$$KݔnT7momd T8k(p#엗3̒AB;%2ۏ> ELoqEvX)b/qo=kdWzPn @7@oC;Hf  ~^[GhAiyua* I"+Jq_4S &Έ027uQkX5T@`>&Xfa"@{<%p'V\r72ݽkDrgفL2) Bۥx1q c꒧U3P ^wAO;UoI'SRIeRI$Y>")P 嘱J:bab P9Azn/6*%[$aŰt2)Xu/%js騘ƒ/ڴe$h. (%򇶸v,=ր1}KܱPH<]Rlq |TU^:{aMOrO^6^Omeu.e6, s٭Bak$Dk#mQo}O_JԐHI)F H'EbJ , k(B Lp 7/|NelZ$ Jő}sJozDD Ukbns5 M/5Vu^ YP EVY`"@b n`.',u <>5!l1gI̶k%54,`rm/#j 㻓4p½ ]kt14)j@mĉ*0$j͕;T}rvC=@T Ue2]u9`-qN9FdJlxD. tM;8?`dOxVH,C5rC#u@p'N/Gȓ8M%;xmnch$ iG6"&Yg32ﮭ4澬q7' cԄU˹L4=Nnla[\=}@[4`` e`Đo}5Sf*eW>x{9R<*0LrC , 45>z?|?gND,"TSm#&/7=6x.͐qBg5O~ۛ'OBmP!YOçboC;s'#J΄G31(%a5?XP87  xe.B=0b"3e)U:0m N;ym握ᵢld5&:N|/$rf{E:oI ,Q4@o4kMN[?i5+=}_D}߃ןkv؂&)3V Ld[f6v!  /%hUኙfe} 99Ǣ=ߠz ffr<_QEksM[6L5\AX$92+# \!!d|3~Vx$'F$F(6YUBzpH.2?KѪ ~WV<0؉g- \kw'Dk^ T*:Kk|w'!$VP@"kSq_ěsLHuKY6=G{a㘠w]磭ugUU61qgc0I̗ U?L` (U`=[_>?@gq[\Xh#㤃sK_[@|"BOηm+nsx1G44|TXX|P^,fܓdG P$7G7GQM~a?$VŞtgdW#aB kx[-.m)TouF'4⋇w{6; 8%~8M.y$p(?[ji?PC}/^&@&$*$V| "*D4eAm2haHxqvn~kxmqu>/i9)e+tS1m-92QY[{5ø|Ğzpʣ@T f]&7Ok8/O~6GUUUU|b̌A/=z~= GSR0'EQ%!iR_x5! bm6x+Oڀ]s~[#NyR+"xb҆+#T|5 Y}qPGrTȻ mC&߈SGO/|]ǤБNT3L b?:Lf۸nR3[yY5qFq(ׅ{]%|A"¨x1_V^7|Ve=8\|~0bNk3;UUB%H(KX:X)¢Q:"ԆB!C;z\]D6Yaqim xzcղM(ڄbٽ"]-ޒEQ֐'.Kqm|e'aҊcy>oxvP<)3zS_|=ˆŐ#.yT4E$n]GW4QAU LXMQ8snWu!Tp·2 TD;15;Qh$ayif"DLTEDG3'^D IC'F7G3PnY~XCRU'#4#cm !$`<ЇWWIj`V-l!iHTT[,%DUQZm2pJ-*"'Ű~l0CĺfFt"!趢^Qvr̈Spq{`yvܾh2m۷otxMHr ˼d3oƄ$6=V`ărߖu@KI)<)vŶƾh@AOSrیsS*8;J`)P.LJ bW"  y Pn4 /.7h$sJU aKXn!M )sAs}淯`묕hL§CY rU FŽ)X) vtJ2Q`H#.PAqqg[q~^+&>sA㌨VkO;uFl!_WMkE}/U]d1t%"/D;~O l*}8֜׈Iw7qwuB wD2e.3AE57&˞`Z5K<@lnϿZm}ttӠ>,5gKyoMwA>-j (R"A" "՘RUfX~iPA2kF(e/'SZu @i;pӮo?SG 2{`Y'z _O3VP8TcR1ZiFnal)hs uTiʹf {[,HU@ʚ0—&[_=V K  UezTq6c#)F"'vBP",YH~r'^ܤp DSRB9Fއ 58AlBBi fYLϯQ\~KFp$?Tx߹Sflp9"dbS ^sw$" @{EgFC]°L"2(8 qђ2]p<Es-Rɷctb^qKxA(uWAԲdN &ss+R2`}#K$M]̲n|\# :_P䵑vw;eJZx0I(]`7{ccr}u!3U;N 2Q}p{-aATG#S(<<$ X_wdT$ ފ\Oyԑ8/9#+HXf+> AEV k.r=Θ~yr'2NKrjo\(H#MA1+ϓ]8ypcL0PcR+-D=,^TKaքl6fRϲ^8ؠJ5qv({# FtBlð ,ɕ%y}dV6]9=Iy7%]1@PK2g̻4$'AC` )8luYT @I5.qepAp=uL&P Q7щOn'#U"Ħ K;~XQt+ Ci5bX(*b(ӈ|AbiK5KȬ5|Nt2PAwGNQ(4eA|Tx|/),JjR\# 97SfZC I5ߖ"@ PCY#G1 )a HEOGK(ld.z~? 9"82tu@gNgQ @:d"#9툖$' >.oT^ܶu5(">}6.烷os8!>GRta9O.ÁD2z5sdtIQU9C{\L%E`2ͤr~Ă-H;$[*KT&Դҍ,b;P>oܯjjf{aTSG:əjUU_'hEX4$Q67f.@9ԦI46޵ vyJ"0ڬ+xQ =y9Jl^Kݷ)c_V{;\>(|H9u2)jȫ\<;8*|J[(rXPb{A/P QTZMC|˻ĥ ꪪTUUUQUW~onE|"2 q}7%c .DRweiܦ2.Ow8˴l1_SWcn2(yHS֔S]ul&>wT "DtM輭"YT#H֤#u_$h9ꆴ-bRt I4+f{7w\DZ!?4~,ަ,N$V  /(IyXK,0ٷ7|ɊeUIAADh>[;/oוËg!.c e:{ amMbw( ز Ře˩!SxIO,WG`l }T#mB PfћCi %`p%7zgHB.f[Hﲪԅ@!LSNEl >@kUj a $i,|2%jL?u$8sx5ϠVpyeLLQQD*FkU|ѷ0ŕlWw0 ()P0! - {g܂UT uwUϡo!O2QU.mFDqR ]P 0H :wch}}g9wJVz=`2d%;K_ءAqxylJBŰ6}tp"}7Z[/*nqfMܠ$bڲ/ M(;B\>Y&e Z]D/B A'"TU.P*-~ dR`eLJ_WBؠ=9C;bI!th=N38zaQ}0N0 `+DDv4ņTbh0PD i">@bw.bqs 1|[L&N巄 pSBmk 87%D+j[CD$=*vhz$AFֆBHp`#)# ^\:7ۧ#;BTE訍Z`ȓ8`(c mTW[g\AGB6"ݍlhThk lǃ.ʈm9%0o\9l9Cɡ.d 񄕬 yuZP4P:?bޥD;6BUf; 'bwN@F |ڋ66հ~PHCȌۆRh| \*) ]. < D*SG)ݱS,b8vo_ LD;o7*,RXrm>- `U$"ËzGαH*H{@餃eoJk=Ÿec}_7 %?pd>?'DeUO[/(,(6֖1V# Q-b)^ɫ}Ӝd!ݍKB!5*7 *K,emJVڨZ-TQFZՌPRAU[WfnILWsG-i Z!udxfDn)X4Nq+P|B<󆲁4]Vs:()g۲~8SVv2\/T(Dψ5) `C'{5ʍIGg60%{^QfyGѭ[u.7÷gⱗ~m 2ꘇB)HGcAj;7!~X~J/sB?ڿZuwuf ʪO,t 7(:2N* tQ!; G;òƲʾy)9߈`ن;C'Gs m"dor _>: Mۡir"Y9"E)BiD|4RY#/Fd&%E#*/G>pXD!'R2[% B,9(~hژܼW{X>J8|+oX`Ló.>la.k %%,9 @ ICHBl}`̐t<2h C.wE|0/#t ! ]NN"Z"s 2xLƖv.{ ¦-՘>|\rϖz d\oci ^-F'ױ@d$q]aϭхF}_BVxF`{Na(0G"\0qNg۵|3s5ȓ`t[k[ahu |:kW ==fEbݹ.2LV5@/f߇|TmqΟbƶUO s=iڔ@j]՞炴0tSi{㦀0lߝ7ݫ@u9toNDPnLBaB/:?ٛXZggYZ*}^ʖ 5-[Wqh񱶉\7bWT|^PSz0] Vk\R*L^%oITr\|Z.sNxceJOz\z 'w}NxFΊjM+S= "^9zz8A/&\*, >Tt}FL(hyLn Ӛ7ӗ c?[I([E(:\ w@t ^Žn3f=sM h 9{aF ܪ!#tM<ȉRq +zqG{xPx.p{~\t a MZ'JmJ4|yA PiɌ{5VK(.To+&vUf+zʸ&S蕬"b u{~N=+(S\2Z<}'P xwC)5j1qp|uId+ww3ڈ1k*ezuIO$+ڜrog bV7ɱPŽ%+:BxvN"3lbH #SFI4o4d(b7P>k9!v'"|zzu@Fl/Q]Y UDpVF!\- 6Vj1EOv;$ϷP[&9 rC(d_Pꦤ*"3xv6q|\尨' F2/eKo'b2U$Ąq퀸DQrϘO(9JdDTHaZ= _T 7xRMˬ=wѼ#!2i}~f"ϓYeOm c}a|H 'vDEą$6%!\אv vQaxq.ԧ/uHv0 cF˚R 44P5!T1qQ(0tZ єhYkjhT++,`h;8iBLE^p۸"᪩ ˣ룔2pF-W U#2PV8RP"Kө}pj  K۳Ŕyg~&1Patv~ACA5a :HW(v]qPIaaD˕Ϝxu <_þ$nX:G›akT7L;1ߪJbHb)ݴ0DBTkeڢC^Y7[KtDt!Aǵ!(HBSAAnI_o.q\ؖ#+o{0P!76P,'<2=Ǡq/$+ӭ$xHǜQ Ar@96iFPq7_/:z`7D܆x9pP܀@A@H/ e;&^ ك )2ɒm%0,GGhIkia EQ:bB$2 (r7ɪ7f>[I)%GtC53-.'Lɑ}:[=߹=rw:$k*IO:uud+V |CChwRC]òˑxhg PͶ»' -!Y0=ФA  jMX#vP r&"(/r"۷7&R.Z H;|ƷŽnDX#ok.- mL$kX"!'~XlU {zSYyRw,&*KĤ8޷fش(wSr=+L^@xцʿ)\8rd<`E |F:E A:VQ\1qёd .b߳ʣ}ӻ?h4..`JV1QԖWB_sR67$']\t#BFH2ou0|xW7х~3|Xbu&(o:06pUqsJ͌-KS(" re1r Tdz6Qo x %69lcUal H8RpiazLf+C(}ąH~:Z*׊!brnIXJ[QF r9 -U)f潨ɳg~z[wjBj4̜tf=sJֳKWn>u;R57oD:o]aOiwwҍ{N:&j+tD .LD#vtߍb=x: -ZXV&"-M'"/N(m@.ݰ @^osקJ+ fAF*,HL]PN+\[S< 2ER:AΑHGf583sAΦ}5]Nd* [\:q0o- yV.+f{G,Zsm^ !I!)$ =D3wRdĕrh SZ-YI*,KP!-ІuГf&@PLa-oVīܫgu Ƈ<\:3C0,tqBWmvQ' &,iɩ#'r8!-s3 -|̫_ hUR%6t|ܾ7A~7]e>O~}x:U*"zrd_z%?<*'aU ! J{oyoY6kJx{h2.4:1RP"t*_Wpc zP8Z!~P} |~<5b+gYj˓-P#Q7KRiA}]8u2Uκg: ;1',toӌۈ ת"mQ{lK" ӈ!|- ][+{J g%Ӑ#nJ'$1ڸ)Xxٝq Α$>(-3%cCI.NJ\|+I$ܢs;NEMC,gt 8d&E<=bC=PQXG x(h1L>,H{d 16IҔʔ'_b=C|E$IZf<֑O8̏*W_Xw|m&"2n< U%.94q2S(-`0$!P Zq6TQ. 1`jG.&MqVPY7Ll[:sQbfM0PXTu\_>t%@- dJJYb$PTw`T"2(.  KJ-)҇q rTrN5!#6q&P!ǀ?Mp'+Ri9ÄsA5RrR cs舰՘AL-Tq$@%2a8r'3B@}XHo1ٸ94Aܟ$C/`J  gp3Bk+@L1QE ER,pvrMT$&96b́5"r4lM$d ps=?+w( E\cթjsn 19 .HVkksٻnV85V;u%–X*'I#?vuc6[@LYo2]a$@ ENP@un4qe[UUYU^xkPP M p2PU "HAT EΝW[#w~Lwͧ=ꜭm&3g]'5Cǫ8 ƙS'٠i: UM5`4/z3qXv§I\3Up.;ĎjR:)j2 bWH-l#GƗKǰuvp'^9p߈Ԩ}: <;VKT/{tRAʂ,=(58.܄Q|㎸\pKADTlPO ێk%ZGޙgxm ]^21]R_k>S8&:>l2.Wޠ=݆Y%0LsPsUqcGUr5-X= b4}~YL[])xD5z eS._ |o<㹪F<Ƕ+~3\Joє;a'B(4BHaLG .! P60m{jWc Z,i{q5gFB#Bqaĺ|!Dv%z G⸽T,hv!"A/*_ݸp>Ļ~oc"$~`|]7L9 J$l؈g00BӳP]o?pNo'Zζ.ȅr, \b(*!o%E8y^cs7u18p ! "u E׶/]bEENf*2ߨo*TSU#\ͳia42E3vX=uZ'Ed&r fPVGьdH>ZC-jG7V=t1H2S7LP (PmKt hp?؈@xBM"[7ET؅RTS_<` <G=e"r ڐ 'VyNOwGӭg<)u m]j9m1D&ˊo\m\Z҄񸾄4jnkL>l:Zc^ _g})RoPq:1l}@/8R"&@) Wב9mr^koJ&1+Z70O >ݝIׄ`-뺈;_=M]#L|*5C;mZ\\"k|_"YBQ{\(0sy¢jr>rԪ-1<9\N?2i|-a,ej@UJ + |~{GmY]k䄞.yAp&vP"x@Ö @Ë NWo#;,]ʈQ c7 @ۈb1_K2'{5(Box'/AoԳDL-RQUUTU'\#0m#ZC@پTxz%;yGu:::Zpow dƅ)JT)J 8po){*VǂB'" &jVY?C$4̐ Cky @Ď(ԊP .*"u~ {:krDȩ ~&h%'sw:# ' :y(zj)hȀhԓL G<9^MWŀ㪑lҌzWt*uFsBg=/m=e$|2C+A"E/҂o/7T?lD>!7 iICF̻bYUlo~ǹh/`>ЅF)'\@,0V@@JПԌ$R=}-/GUhLB } "7p0s"F,\хSۭozG3 ?~Qi5`z~kz7 -Ⴀ q;3DdK0L0.8`bvtMr? :/̚=ҧNgwo1\%BI yY T"!|һc Ú /9ZlSr=USF+ܟVEk/ m`9.;H% Mw#k`q44/׆;vFamU'/dHH*le'vyLf7>W[ŞwQfeW'ԶaU͔% 7d @[RbXBNA@' N ̉ȀoO FG>+˻C'|m!Dav(5T=~sd)CgIt$BOߨ5[/C\@ "\۟~tXl4 V@G o \T U`S4'9q+N)Ӱv s:Xj@HS m/#t MxN \B wJ!,*mхPLjV$Q\p^#eW]ej Lhekl՚TRM\X:(!͘ҧ WAT1%$mE @9Xv6J8MqJ njK aְۣIN[|,-"ݔU.Wa=1;q|q+6ۨު,0P% khFHY^ыxCYKMWP(yKc0 Aʋ B P sO6Q4ZҬ|0f+<0`_ {#:^Zsّܫ!L  @` BA.~m=>`Siإ``N F(" LɂA Z#63C'6MiʧD@4 jI>؅LNS#߳+v~=I I*0$BB <__ck`$ᄔdB@a's=gn/ | =?5_jŪy=jÂt,@ ` 0 %9GWQEƒ1 >OKnn\qͮ{1i34U/{xK h2edL2Z@Q*'F[ d$$ `%b;@[Pa anh=o@ WN9 (M7mpi<ŒU:Ԣ ذ-:x3Ɣjc Sߧ#%+HQtPoh{t=m) ,Tj~\@x] ӎMOq! qފnI=ˬ!I;K殬,ԓKWP~nNH==K/M3Gv:Y9hE'<|;YUv7j痄 o Q@qA # (r X9zd(0AqQYM1&b*7O'OԐj;(O}G񧔥`TSRcxe'..MQ : < /]FgΕIKDƊ./]PDawʁA(%W? ϐoCoQeE-0t)EUsuAsdFK x&L_scSMu\Ghnrc 2I߆phjv/=?R: M'X6KJ]RIk[jb( 4HW[!NN2!a7xxGb8! =}M߷;0իHNg:MsM"oxBR \ŅUC?nߝݞ.Ox>&KJK[;dplN8j PAaDɗ.""RB B'22^k F#ww槽C-rZ^Wҽ>m\:N5=cjB|D4}ȪM6jgs#w;#_3o|oLjStƐڈdv7%s]?߳Jlө.@g\:R9;Y3FMm`k'8,rv7߼?̞5@s{;fIȣX[hqw Ma vN&:)@2t346B<Чao. rrgC ݬ :PUXTP4$4'L,|͑ ݳ:[-Pb+q C_-umF)&4cRv)&1vI 5Ɣ2ˀb8)a8") r?'uπCu@l.W`!h,)vJjU,_NP0o[C0Y)K <=$r;쎑Șt&{J)Bࢱp=wXȋ%PA" LSޓ f;ΠcL g>sl|uq+%&QJ7ƚ{Wh!b#J^OguQY°6 zO Hudch)Y8z؆HH&gdn8d! &D&M4& +B:` + [n#Au# }KX_trp|) 3n̜q*j%9'zq dW &y! 7qQ2͕:0cۇcLFlz0*XNc-yd~OD(a16QB;+ `h;<4 խ ˑ,Ѹo.H˯p9嗲^_KQ48C* uJ *Ş45ASt^rB)kdH A`7h1fNn;<9k׆2BԞ/a 1IhCٚ}G؜'Иg43Tg<~ ;cL4S 83O%=oq ol>'\.h%TT@'_/l"A؋hgԏNJkw52#]:\ӷ ܣS?4Joj).LGjoHҷk/5R7FHR^*i-tvCeDn>&|!w>vCկ M9y0u]邧X%lטy u;qV.+7; B =ӧlw8NIaB A;PT's9Xm~>g;Ismjvdm>up/?xGhȭ ؠo,߅MGξf{vN 5(K63d$!울bBqx4q.(Z|c86 xir*85!'y ̓h&ʙqߒ3PI9e=i2> T$nj9r~Zu( f u>BJdqqr"MٍNV:/snSI6_7%IyC~pxُynYQ^B&@7(|ScoJMzE?):cӕo ҰZ Ϟ4 +pDշT'KGnE( NKG ~f4T`ɿhQMFS\#zt@g ek  t*ø;jFZVV>NK7:^8fxև/;Jլi߇ooG[ȏ 4 ch[cn '{)6Ncunh@HI~0.t8ĩMBQlǹy^GOve|)iuB[lQ1xI%F@.=,+ oqƛ82f7'[* UdGzJ QQm͛,NS9z1==6Mek}\8iYgWXtg˅# h)a;'Gh~xԂ]5I`,6MP)y+ʒ`x_1h G[P1lgs>%/lZͅ>[O$l8 u0Z^͜ouzd‚qe=7Ԏ vkdܣ(8nD/nc<d2߅ۨ7V3f\8av> &=)1@.mrϱkls&=Iw~y,<sx/·\l$09V :vqpOM ooR]L/5IV@>}m; [жJ?^]-f~ g#ݣG Ho-vX<]R_;)x}j/;<@,{D K98P\<%E0Č ;nwc{ [Icqyh+|_gvxc1vtnnZpƗP+{mgvMxDHR-:j*sǹm:DlLAF._P)\{'X3t,SZ/taqH(Q3Bs@PSD:s܂nɄ/TOv.' ?qoLکKCeַ]DeM@Ӈ07BMc0,)UuRMĨ8"1`I>C>ڮ^@.ux7FHb'h|{Z |ǒG yoO͚1s}^Ys( 0wht݌ hԸ찼_l(>/$@՘a*P#gQ9|!R^VX.ŨO7%+Tnq7Gbޚ@H)|ㄫU]kV|zf!x~|WTsr/7+nN#ZU.6/Pc5qb곙D l`NhLi/-e]q].LDdžMe]&qҗUtmwkJLQ u]e a.X8f`J5=별.EsgLu1P8"SU\v@Yu\+=_^XT8kݥ|0k"\k+qǗaһL:Een ^{c5#g1+DaU|OxaKjt V4 NnbrUYԯZM޲u] R*â9U/natD͕[ KqV\!-c.Z]G:^61rÓ߆ gXtV[%Kx_ =5ą=+W(}&OٜS 1}#AI^]FX#@ 8>b$j@KvƎ$8+0?5P@Q7m5?$O } >Gy7ĉaC6x։Yj1,g ``]TI_u,t}~|A5s>;k ykϡ88^BI 'a7:}ׁ;K?ds>Bp̨j~ Z\I*XZezҔ7c#fOqZzaҕ ';4 Ճ{ܿg?6Ϛ<>[%J)!qttL;}+Oc㖒q9ӈ l[Q-  W(g7 \:HGD {QE 'QK5#">y.;E?ց>-,Os Jj(hZHi)@ h%)R@$I$"+ywp1Ar6@ x Z$  ~m<%(P#T$ESD4)@Q1l!DPKBX -TT* 1D  DaE+R%*?dYZ* O2b5h)"1b" hT!RڬHHKRF1B6(U%ѕ1-,Vd+DЕM 5VUCbm2,p(i 1)"h$&d(,œBbf0ď-ELlbib(M-)hHll1%ajjHYs1 5#2f$L rL̨G# "d=?{ca Tdd#|l߭3o z2d<I0_MȬ8&VG'F; ?9/B r(_ - @򯆀jcLTB|X?ɡb+Y$?fj vlGPJ=_Op@q6\eWS*CP;@:60_CEc~(PeTCh 0 G TB)hy!N R߁6P oaP1ƂLPBb ! A] Nw2s|{{MHe;bW[i||83/:g$InVH]Vk:`Ը퓯m [!EE-MH ?LO-UqW ׳axԼ;*7_?_p~4&H H" HDAilYZ$T ShPN-snsV yB"H\y3mªlЃV#DKj_n5q-">_ݩƼ.K9hV9?tjS \'jA8^c[}<=WhY)^#>Spܛ* mء|`-ѰCp53;zʼ6gM73w TsUb0 h,(#Y)nc"ud_)֢';?%y j!b'ɻnddP<ÈOBdM"J^Oܲkx#v0?[ a@AG<$K]o%6jӋi85 ZqѧvWhv8R{X0')؊'eW.wF;eEd;;<-#yDq.R&{LyC6|$n:S1t3B^oV٦K::@(VD:Q{ynỉ@Iu=Jj{+b3|D*s%:8K.Ԟyv^u Jv y/.]jhJKI>jyT)?{poPUgRjtS.Ό\#Iӿ1IX$\u):T{-)שּׁ?dI\gg:tug|\|gZ=ByJN4=>9(.U"6Ƅ#'.N`u)|~a TukQVBJLrwN ϻO+";KL3v f!v! kzq*@Cv@E؎ډ?"$<@{_3\wqӋ<%2 x t;>*3wga3"sDÞȎ>(S_M&3mp< ޸%gpCmbBd"jyS"Bd&g T-H@6 ƺF,Mq/:IhXftŦxt Q^Njs|PŴpFڥ8?: $88gșh VmQ7(2 I1J X_ U(`r$JJJEizH=ƷnME(&3 ut`QMX5%4?8h-9fE.p8鈹u+A  @B k`8e.sEugМYàL$l~ɽm  2Ɣ2d9hpCx V*/ "[ Y b7n#+ѭ4=zW*oGH`>'GH9춑bb wXOҊ`!K1 4H] 7{6㯟|9n$Fz)!F.c*嘪"tA 6㝌 oFpa/RT˥czZ  0&yd&BQu hRܔ0\R15S@m~gW T>Fl2:Jb.(v^?qj]ICUG5GrhP׆Ђ/ђH S Pܜ $]] o^ot6c-=Mc2QͲ-. g @LM,+}Ng8ߟ9'sNݔqt;;G62_8] B! ZhKHQj;Mm* =vN.1'{O4x1!}Vk?:Έ|;PqF2ݒdAnNuLH!)=v#{oS J;kZ5e}?kis!C:f4aQ}y:;ݠϴbs}9M'4ܡd}?[4|eZ'Y>^ Taā[pӐvNsս~^%;1IW%4 st2{-o$WO5;tuE@mz!HA2蠮+H%e"iA)]Y)=wLu^("t7s|}ρ9|^aw{]6I`S:J*R1#PEA*y=/f rZ[/=`vαUZ,o %!^'mw/_ZD>tL_cnvhh iđ'X7l:ChޓTGM [dy lapk_d)EgwE jLOƥ477n)pl~6 |MM^a`f[BЪ6cA!b T8 F?1T3PR[(¥.PQdr T2qJs1]i0hm{ɣr`QCY'y-CM 9^QR t!wX偆r4/͆dd_ }P- 2lw,_T^C>4&E8saC߹#۬@K0xS# ͆*2zuaq'|呭‹hL"eL N$Q/r- !rX2BB@tb A&xhq KZBH"rz۬7ND=([Hjc5r0rЄ% 4|-K\Su^.˽O0V (LgI˵2*Cénwt9N+Ɓ %>=nCxi&eN}\GUzͳ^}0dAC@C /azG%Hˮ&, YJs霳Q5ߩ徰:3^ᩋ, hguI'{tà&PL$B}!?q_[!рyPNvxq=;Ĉ Qa@B"ACS Blz HV?|9gC_ło>݁l0`XJ#j8!! 2JPL(2Mrx* ZG=s_:^KrijXC (H#0P8#A{>\`'k2՘=(dtGRʁV8k=tgQh0]ԉKr4dG$<R/q^VV$ݪ%+'B>oxr!›gIvǑWYr +>rK-0vvYݖ:0gOGp;F;7o}wlLn 6^Va\6ܕ.Ga֖J5$|ɹg]ӫtnlnsZAE˓@C{v|cO/9a 8I+GTA>qe)Q1'a!5MJ)@`^ъhNș"3kZ[v,V>Zxܛ/"ky2z|ݨ–.8GvIת= ܖ"Aw9@u ²cŀ '/cv}mwg ytөe2ί1ЮѦߺT=+"; ehFD7+N kcхbkt-DcWsڑ-w ڂl6L݁o6k,=Upk !sIkLDxPY^x0HBIBI ܤ˸&|jN:X]NT* -*'_(`E΁{hqF 3)!cO?շ5~fiӦQ(k(X9n/@tu`qRx|u4Djr CR."CKp8fGW^pDC>%(De7D'&"YzJF"B% ɶf\IY 4f|__=mRszx(hVTm#bX DV8*X[N4SHyKg젿Kl(mX@1j#_}n0sic !F ȨHiWi/ڂH12 UUUUQ~(xpGoy-'XhQR(v&~IM!"D@ P'g2"7:K>YqψiHLLMxfcb9XDd˾crsj~kGʾ<~jU4y4*Ej~NrMw~+ #C:  W:%_J'~epl@"Uqk7q٢VwYzfGURCƩ#V@WǓxWs6_D@/ _'+s z<d EBl!4j0Y4L * |0DX*QIr\lQDeh1- d(Z`VZmJA+AA4m2Ƞ `0P1%ձ(.cR5Q(3"LEA4\WkBY` %!rZaRQ2DKi~E1v2CJ~  &D;@zS la) ),0ŀ[ѐhbKAA(XIV`_ vcjމ5RbK:#v("h {qix =5(*NUohD|٣UL k<@{Y{lǰ]~UrDAS?JLȢ}KχYIRT|`^9{G:b_^ĩޤZj-pFE"'p#(X<~7꫼|[7HCl8Kb w<D_iXUmK"S+шL6"* ))R@CĈmÁ`|=,`É6a4Oǽn1܅nQ)nrŋ9mU}ˤƧ&(ۻ"1+4IfH6Sw.3Բ!S4nzx̽~k϶zǭ_af'Ϳ)LwLM`)F0+鿫./݁#mH_<\DpNޠjAa~G%pq z^1J473Pkb]v6azhoA{@Tֳ8SD$4EDeJRWZ:(ks$e{)5Yd!#tgCvx?6v(r4P vERST:poLGR-h& ˁuŹZ71;|a!$)S p* "i y.q?޿z}UO]PkmVu3B/Wu$0&^g:T5B*!n$p7_(Px_%\|!%ei~_"dֵ!TbQNMYQXa &^voWc4u˻3ę4!YVHalEe7Zd~rKaL`X!l.#lG^e.N&9v]a2E ,_'{Hm#3Ӎ 8os|qL7IE&Z9N xAӢnIo|[iCMX HfӽZܦ#!Lȷ*KZbպP^吿A2DP da0Is݃ /cmJԏg6)B$iPX"J(G_v]c9RlM@ڐ6-YvT.wz 'O[ڰ@O:7C<'.)sqDe"K?:wZ2pCjngAɀA'̍  ݭQju纙" K^@0RP(fLCѠ0iD aPaz/3|/U$z#V/yGN~dtݫZ?BaD PN#XVθ3 # )Cs\8 ?ށN5uZ}dEO'wqECuTKlTT^}~mu &cQʣ;)%$ GJ?A y2X#R-O}|H>fP;IOjӋ&V G'M) .r)۱SiͰ\; @Oˀd?,;[a;IyU|HF|wZ?DJ" bNcX}U~t2JX SIC(A[7)o4]u@CҧK]3uHFSa0"Lg:֧8Ow7Zz\AȢkjo Fo)P/,2][ z٬E"@$IbP>4[OBPB pe . + rk8!4–Ԅΰć$̻҄](u7HzydƝlat PxNcǂÇW &ۘ+&|PCJV:Tjo /+֫LH:Te nݶ۵(fkC{Cb6= מ P3O}^W;֨6+:\ mBr˗d!DlMP♖1$r݆*i$L;4/L(ӵxɴBmCfrADMC#^ngۖ` +ROĠtnv&G^&㸨]0* {#iΣUwiL" Uo3p3|{C ]& EV_4,}ىIJIA#u9L% 2 H!*@?ouaK(Х B{D'~Pդ=7N&vk׻Ʀ D]1Ýk=<?+s|| wƀ? A4×kO +ޗ @`j%{}J$Jo(%c-j9VZ$hplh3M35qe?!d0=G<&5om?/|Þ6T.8=7i(&N}"T1 6 Vc", 8GWp']b9&>g-| UK]rB`$d* *BLm^m#^n,n1aQ$qZ 4qH.xs+z_K1_%EAM4+ \s4GB * vQ#IcW UPO_uN%z* "w3 ,X@`HxOZ6j.(qRzpW\|>^ժvAD?0B<5bq+kyK|!;!" ʂEHZ[E.OQ&W>.<"*Y3[:r9Wsd.\٧!"5ͽֳRe(ڔ2JLJ3b<)1`?cD;y5&{1m/x19B.WhNP7gkE,DBI?#IE3 Ns33Wv`~ B?f"1H<<LkAS ^hl'r@D6Vfn?Ṷs0Dr pt.*ޔDH<$9HQcm8f@C0j S#x̃@ة;՘aMAy& !?a U 0-™cp%{ufש̀$Z]`\S;'-{rinС=EȒ (#z:4_yM9oqD~_=W}1ٜ`EƦZu׉ml|?+ϛw:?ccOM8xHzu˙{ ̸Y۱FkpٯZ F*Ot;8 ,}M 1RۈecvC$M4ݹ-\٦WxXQS|P>WF֟NP^<-ibkr6o$1N!D5uC]_qK]987ŎDZƐER. gz");JM.Ù 0,8߿Ӄӥ'x2m,)N05زд.b1D@,]Zr ͊qD6# `> b_FOo(,~|r5Uy̚Nqo !xZ=;pMLKjHM(9&2b+`;Ġ Rgh RO@&ItTPdtz >*ˡw}HgHH2Ұ{ !RK*(d,7n[5:d_h8F$OfNK&g E<>& &aC(ONLtjV[@ %P*sH\&Ԝ!C;Z@ax2J|y!LDR!Fj-$yoe_ka=Zt_)DȊk IY@B>tٸk\ ;e{c6t$ nyߧI@šCHqSCnhP0r;g5o;gLb:&}PßQxn H$"IA sKzB0SE.ӂDdDByW5J(,$*Ǽt\1nw2mg[.u J;w.1fCNx XH/q 0]  A6(~X>?|@d|I}71gLϚɦ;A$(hS< %BB  >Wfzjn}J^Ňm>O:;)7,E$:EQERޢ 3<g3]LIQ򌈘gڏ8?}U'S/P}ph&ødUmSje &@㝨y;r*n)-! _sz<|0' w),}c/rX_ZF #5 AuAtW>с$?~Ŭj_kO A4رaȃ )Xc,(-W`7"pa~ ;{أrGύDtZ͘e^ gpOKY^PGT Kl6Vޫ3n2M /!)O8%_MU;[%);@nvjޚ $JhArp񀑇V c5*ΐ=494H򿻀'p&* ٔeĖ$Q̙tΚ+q)o Jrf!%rujts$vWӅ >3A9.9FVuY/k|D"8Lc²f!kHuZpc'Zko~lPz/S;,\QUp0?Soz3X2vaq55[:TM~5g  U t#$ٚ[P-&*ҩO"XqW g ^ Nb;ag}.rtwW}O'V" )M~{t< s;ΉKmm;M0ghhԧtd.>X5[j Ԓ#og$/isG*3HCz0Th5W5ߨf;Lģ}G|wpnwM?<y-D9Rf+]3hA;,~}bMDА5@}ܥ4|I${&K/Vy&l̉eW`0 " dD05 0w*ZxDÆ$@V\vP adtD6M5r3gi6o,y8&@x!, DJDAKE۶C87"$(zl&v N,:kxb #|kJ7oPSL.Ci -GxǁE̵mRSQ=g[|6Ţy/x>a_<-SڮFNd 5`tmv{WFDGVd%P[ӹMgi~ j3aP"PJApZ*d KF;.14;$we"8w"pFlE:[XD6`vlppEgFZrYW<% QQ0gju-(DHNwۀq-(EL|ŏtr]u\o/L>lt_XqWxfUs%p=izفg8`0<gD 3f􃎓WqaGd@!BVd[PxcjӰv&f񫌂n¢ŴiqKfͱ!2Ħ F +5M4iY4 3ʥ(”JdY~>)NB cHl2@9A2xcM-0qҦ^62rJLIv HRX C0^XO{%%aTZ,|vX2 OWcGTi#Ci4w<'NQ $TayR۫a /*rQ/.E]| ;mV[1o`AsC|ێ +.S G'%( )'?mq.,(wDP_''LdACHsߒ] ,R` xSsϒ$I+n\oSn fѶj%yݻ!EOŕ)rӦMXbsDg  т-[Ǐ &W(WGK I1+N*I&9H]qq瑊_I-m)'x\%n|{ڶˢB툎p:C}+ο ygv77ABOqƸH)_l@PAPX}NpO)ǜȱI5$"r#Pb0Xa}$$I 2 ;ܬ}Zb 67¾"LFa$ZW7ckhrRWAC&L')/)C+W=ʢ&F5ThHY &xjVhъWNOzv"}2RwXg{Lj,Ev:VF-blڶل#jbl"1SJp`TcFxUsR?;Oz_Sb5T'P ig\hDA]7+&؇E_+dL=eY,\HPys{O? wӻ7j'D-:/#!T5Evt˖&L,/]9 tU 3˲U)zAKl3e,C9"pp{ ɋ+P/9&][8g&&!jvrdqn2o!7[ :/CpSΤB+Eވ1rL*oÌ fy>NI2\)լtRYUQD+U~[ܤŇ 2ɉ"ʡǕ̧In)H##TP3O5}ylu^;{Y: "rl)o@ q\f8Ņ3S2{itTKM m(C 0Zb0008lZȣ1 ;1OTs{٤ɜ-]I]'^ @s:%@"ٜy+d_N+KRNG-?2wx:5wqߓ$B@Usٷ1:og.oy-\޳{s|K^+t࿹(М\'ҾeJO;&hT$Ui=J\ZH'"& b pS>xݲVX3ŖSWsRlOq۵S8- &j vu"3y%Cm6LvԆH9lzŭ&Ci.˴"x(5-xdF7BK.G7y>ξϼW?z8 q7(aeQERN"%yJ Z/- |#;~9nVR?(LFI7v+ ?13Ye^&ep7)LeX0CqdƠe˛ E7HC ǂk~ -종^(&ֶ6eN2`I܅BaI/dig#8LM_l3L7c lm9Zy;)(B~J*|1 ACt;rܞ 2di>CwAx>ᄁ?nb[PD,P q&?Q35p !QQ3, %04]7vǙ]Z8# )CzƦ#׽fbH#W~#T>**\޳u2"&Mv6PG۷%!ZPPqL!wD9&vF#7{Ǡ] >)oD4%a dž b ,FtJ[Ԉs{wT H}74.n Z!({0k]j‹Fc uԶ9nӭ~D6Ʋik땉:=y|JK]-آ2QF'jny'3E0 19=*޿ٟ݊v6S vDsWbG q9KOUhsc\8%[ztABvٲlneqZKX#fpNmmB"n:Cbjt˛24 k`Y0!4̊z+TfItpK:(PʂB՗.Z W I[`C3qzE9Ll t4 n:ijېk8' ,e:6އ6Pja-4+B9TH;%jFdŽgv*Q)8ECNLO3Ş7=X!V]6#i/ cAWIB+-rן}qOԄiS.3Le4WƉk39t]H" EfZg ]O61 k<,G8l6C7^+9:3RDaCCHo(sӨ-s`, U5ȡ2S)!TY M %cw4ٲa7wی gvB.L; lb a@ZYKLA'D_VRk *жm HB}1i}//SDD5/4'Dbx'!aH(qE9(@‚֡Ah9 U>x aʌ2̊UH$HEXB CNlZ+?Zs|l\6MaSC(ح#w+R(H9iM2VȣX^QDǢr-U)F!=wRyd)Bo+,ĺg<5nJLMCh,PlFX x@A7Wf|W۟?Ά GWk,#d}dxEWpPmn)?8J>_#0ab~~ݶ6vA*RpZGJ.X<^C #ʫs|drc }G,֓AB\E"j>d^=%V6!?劶2r`.z)D|N@B ?F"N©sû|L7JTЇxbI RB\Ly6uh- 1 &~S!O9!ͨ Qxig qy?Ŷ4@qvks~Wv\tH:"HhA0jz]7} E; Q\ex_8gb|k7v>r͸$༠G@AXD!0Z~>#e$͛FՑF+"!gЁ]" F1` cLg0Oe`DdXH.莋hJ$A( X lI h,. ]jn͌;U'}/Y;D+^u_ u|8]gie-p{ 1E"ELiknrԖdIY AnovAC8[Gw M,8j }_H3 ŀ{ȬBjXA5E9l4uXی}+63~yu-'@~.]Q> r d)1w"]bslQ_۲rq  TYf_ Uz%BʙVY(yJ$$KQ5m7)L~Ix+?~п ] 3"e2+g5/e5gѪ)rI/j8yYKmω!8HNSIGKlS2 dW u @s߷7E & Km%|ajHFq1ATĠAb"EAwN!8(ߥ:o`TAׇCH uZ{tح6-)D>F.5B !9 E6dMf@b`%<+)R#nL.n бJR'T>YE7"iN]yٷoG1TZ%:ջ g5 ͵mÁhdTUdX E21ft*&ᐉNNJxJltF' Jap.t~fF]&5T32+8aԣK;ay0S_68yC4u5XĎlș˔L盲)s  ETdpUrok&[dj0& _'}mOXqw*>{r;ӛ@H/!9oHJ3P5TʊHLQ*xMZ۵m~䵄E@HqIXg F A' v:`\lV/f {NF]TShFLD BJh1QGD+M'tgM0<(.7^ue. $DIM)<L1ƞoa nWW⡪jmȈ!VQfřֶϿ:ĩ8 \ p$2򒠠lb@IΈC7׏dF0|tӅ6b*[q\%`@[;b wRQQB :=8`/ҷx.]^< Gf*6 f\.,NN `@vRl {" J@N#Fp0(uQfDlA`>\vABw>)&Otn֥ \tFtKUTr4\:)qqr#3]]Iy Ut -TQ83Ac#R,FÂrX-=',%3;358@N~?={FVj!`#z$D[ٟS<]p}GN[e5((,B9t~L,<]dR0WrVw|Yr){&9Wd9OЕp,) n4 ygywA]-b8?g!ŜjMkͭIk!:X:Mw "ys0"(ϓ5pH(́IbnUKxʏ̒9XH6U,̑6‘d `R#& ʼ0 x{&^c0:nLF3Cv& 38G>607JWZ".E_);L}?6 cߙ}zQA[lzga""Ow{H|%s/{qAAĄp;O蜘^߬>ðt!a2]N}Xg ֑*ӉWE>.(Gї@PIxB, ".IHRPnHmK'@`.GtϢ{$5ĂN!Rb!!жUda/x(LyUi=I=jҚlFx۪m9 f9n\~dOX^UTw aDǛuPLƝq'tuࡉUS!\3 Ej?VtP2_mNczqf \O4 +HEcW]v ׸3'o>>Wǰ?Wx%Wuڂ?D;DԂ9*tDNRz#![*u$o/z絫u6XnyF|R-Ҵ;/M?2>+N l;5?e G}EX?Z+q`_ޟFl M8p+iOtBsdh.]MYV=vכ˙Bo 챾*W]p] 9YU~kzzw.;MsWwY͡F eCXEV$aIZ"NJx/ZG$VfH6[ajO~gD9Ȼ^S.1Ω,ʳ};{*.1f2c+`=#='w 布( dz͇ -f_\bRŽhhd哈yHCN\r˵Fi4$Avr+8دUQ>obuLgilvSyl]jM?O=U?%? uќjj]"{ m"`fَCd9WDYME}?I䭩CBX @ZgM?߻mӎ7"B3UHukWz᧑2 NvQ +`Y$ֽ.,b3}`&M1.ar 0x pquW$>7sݬ>;c.SQYQWf#9:ć-N=>z_NmE[̆{l^J'.8eKnR ɛ[ϽJYAs$kк깧CBKux~mNg̒mԽ@^h:MϸʳIpy s0/iW}y2hYs7LÄ_ N]?tnN sL4dpo`T&b vڎhXx <_㮨P>Mcs/#'&MZz 2aV-3yxJ ]'ACNS^ Mٚ+ es9n $v7W]_Q*q C]?s{yUybC9'4~iH~(-Hl?j bgzoe?#Ŀ{!P-iCEKaȜ" ;sDҶ2a1r7 ;f<[l6S=zl_Z5Y@ן `XS0@vP]3 QlkmM,хn 6a28zKE D{BRX3@ I;~2߷s7.Z0DSX݋c!S^}]X)5kbkb"d^ +A6:V"MsZ&E 9]ﬖ/E4D/yxvN^t̏7KO[-9|_I}|9nn, nˆ`#??_e qQ8O?Jfʸ+ OrĩHwL/?jj"F?7{nBB$+vp^X'sp2@Y8Ԍ,!AMo3crgC96ΝӖ۔u2:ĸZkYJo3؂ޑYQ1t֯LSz5boIG&ṉe[389a*loo U`k,ɻ̩)aS{""ڍE!r,=Vcx PNgTQ%VzEEbE|KWqV*>a,j"UUQ4itJ"aep#AaTzwbS k%7l5,"^QGA_oXy0yN<)ōfs  p)M qAt LeCA|ˁHH!! 7uEP^vwy釨ک;I "JJ@<}C JgU &PD4RRW ϛk4>7Cd~C钏&A6!wxfwt _7rHOmx+~M+AG_6 22 ]gҋt!{g7E_/sדRś";RI Y{4r 3G?y.o,'#Fwa.αHCք"`7Mxk鶩7Tw/rݭ\ч256mC`9y~T!t &vVBjp#C4kԗ1x%:Dz㊤fؚJu0}s?8i?of{!x]OX42ɔ >Sۖ;Uȵ1~6 ZGuB2¼^vM!x2)/+ҁzDETciaCTVʹ^nZz>ӦSw"TPM%Q,p&\K:'- &yij^tPP5@*x$%?}.U䀇? '! 4DN. xgR JtCR4;cA+Fl_#!)ϯ%SEbYo=޻;@P  BO?}׳ɲyӌUh0ROڻg;A$k 鴬S01RjC)9Kw*jr>+4^u_,m ߕT&6͑J/ig;n`0 ya @AAgqxLvS{R_7iy앵ZqTSvui@ 00&$ 40P@^'2/K}Χ! "2#y<չ\/!Hnڼ>ghChrdѰ(!4`y`$A*/z<Ӽψ^}re`@0' M RUS B*T+" b@EFX)U.6a|i޲M[M5gv\lh4uXu'1xSZ.vaC+4I83|bIBg{)*IZ[c0WWwu o⟪_ŖeKͱO%bT._ w5vL}AK#~^m jȭXil=כ(!Y{zՁ krR[/\t\P$caxmuLb>9˼~.C'?C7#/z/4G3~fp @1j$s^ځjiPtP|q K/2CIq~7]Wb;ܡں2w&vŻa ;*KPq7nm'7:;ӸD ) \۬P$8j vz-*m+]MJoXtCz]?~/߱}}Bݱx+Wofȕ!;,0V(:=|]-C&&M6;Q ;_}ADk!2u04]>BQ9I8Z0I=T!FIwӜ]7pK/5D)ו,Y6*+}0tgs 312u (o?g B\vlmu߻ݝVvݎ;LP0JH^r'llHXLkL00杧lj==f^:[nQ*1ׄz+o@hg,mÃʵ%RCqfF0Hu9Oz"==`ViKJZtޘ|IaP[FЁD35l+k|-v܍u%VuD*8^i.)yX½Q}\<{>*yuW DA$k8xɬ9U73ӗvex`nTip#eAM$+հj|PKA8iG3m@8ka CQKPWR T];)%5GaH%=?YZf*zq/ owاT=v՟y괔O喎{B[ Y7q9 ދW=]Zz_`&h_{ߓI=Eu^n7v!Wvgq˺L4.Rpa AuA2靋gcvPC:v_ʒjď10ܾ:!tk5[ֿcnؗ `G+y..{<"/֫T^uf#Ǘ̡:ֶ K=Uϼ2qdY7  (C*Fj)nP5 (B0iг$o!Q *Y#vgdL#+rAq/\9a-ãC$B-Q fcdm֔#>oI!o4՚+ G̪]}ԭwi6J}o+a6m~6Eiѵ2`Wx߷RܺacJ׷u[}jllBPjj.iP* ADhӥ!dl9K2L< -D 5to5ȱA =45k_:k kc nl)X@ꠏ'҆~w`c Ad" 8Ot_P͍tO1os7nZI%I*TJbυEU_t̚^RO{*❾Mg>/bMĎC7.9:ejܨ|g3]JK+;jG4uN$ jqesNQWwҁŦYZRj*k;?ko]-kq^V=I)P]D+x]g0^^[Hϐ`@! |N .D2:dwkл3@H2Gq[/=7xShqdv+}'N{se7MA}W++\H/+ɽ z1!#Tab A T{.KW!@> Rg" x8I6}lДUmj|YV8 m-UUUEI` >|7t#Qژ'WCw,.-Tk| RgƮuF)KlҬSB3:UvC\}4}/ܚseV'Po}w}߷0MiU 0J Pay@(`*q~˼3c@~K M7mpi@Su7mpYrRܟMVw®ޣWݭLbچyL>n"f}"1')a^uPR>5ªל¥գtE~wL7V}޶; ;%_)JSJDO\Ęԇ(%ďL> 8a'ONQ@xG2ǗОzw"OJKoT Re$ PC ȧ>m¸F}ןG+z짮=G"{ް8VRƲ ރ/~P-{^N7 I }a=Nk~/tTu{_UѿO aa8yG0'-"`my]%AI]sh;9>,5h4C JH LL=o_?ʁ{i2Qŋ7{Xm;cp辟wЦeNύXX'TqwZ:pT"2/u~D3I@HGS'ktķ ރ?>J)6x:wFM3X"'iԵLߓIsp72_swxCo8Y6-Xܑ4m .VN3nZӞlҏ,֒CuE1?qzT&i"!I[0h زc&aLȌ-VN̞yБEd7MY5~lFeƜ^0g5+id k`>)N!$_оcf<~x&AL_xS ̐/1o4Bhj4ho~󍉊<'*))䐀dja$ZK_q}Y˕uu[(o! )/|n\H" BIM&SEV*+NHle VD=lgUl Rt>?h7-7(٩)yQr^SEx*n\r]OT4ܶ!;N=g;V84DryV)/kt黸߁wp*3W_u]Β0a\a*k xqVl p=yA\ԶheUF09VLρ q43lEAъ5c풛 h&T2+})s-mD2+l{ňb;Xf4h~O;8vePPĒBY1>tSW;q& &{>?\:l!:}~÷ qJ! n##{?dOa^xOx#-9 B# wX@&cXAxB3\0DŽ}>gFƶQ|x8 A+=PxqY-0u8h;/"t zΜP_2Ѯ JZ>Tke<sy{-gTRA4Uɲ\XF)JOp)MÆq`}ݻXC8 鬨vV "`{'݂p8~tEzL@aU3a&S~~{;btE@FBN Y Z oh(;rmM_oTE0 |=>ep䨚aHVᶊ!hz0QADHŽ'JuB{7 woXQdRQFp"mؙ7 $®BR1*H³e50-YZ-R2zV7]y&P1@QȘaW?Ԅʇj(yZ!^|g,z` 9}K zQ#2c2ht2"r weVF /ߛ-tlyk?f D/|]f)Cz7%^\C]w_6P'I,sx~+;~әז?nQdK/rElwg#ztGcQ/Td2bUx+ga{a_ZEp}OGLsE]!O$mm{Ksso..ϔc_fSY4M2U`{#F!lb oX,3!*[ "1dNCOnzQT4w|RZk|n'<( 6ZI6l cpi\rB8o',]/S5kh!r{jHb),P@JFXL#uޛ&n(e DȔ;a3SGg*8+;r枅M*ArLbHk] IC^ 9‘8K%JnEL`&񦤪H9oەWݡ=p #Bcѯh:Bވ'PϒžaC{˿cҳ4W]N\MUb"i;YLdz&~GGfB ^azLښ 2( Ppz<0Ȑ` "" "T@ZKGؕ] o$y^~MԞ!QM H$pTtT9JUB@K+ ܠ/P;5&~0k   JH$.^޲:0!C6jAE+ _m `@K\Ffq~V]99U""Ć-Wa~о̶3a u)8>PQGCl0ģthDJ TUkwO5h(&ˊC:~,a<)bЇ{?ϛ` A OuP<|T_+4lS0st]rt0CV: j{9%{ˇ`Ž#hh~=/-adg(P5 1%dScHY2`] Ԣ[EJ+\&MP(W: &BB| o1x z?X(lo{o>)󺗳?A9 / 8h 3_' C\Om M@MJT) wGqC(ɀhJlE- vmhĒHxr7QM4&`Ba&8 Ao /%h)RQrB`OG.wsߝo@:N: x_9XƔN+B&GUSppE!.cPpWҭ]3SS)yg8dqD~㿂b{qD qiV>dǽm&1E%HNZ8^ҫ<[n{G'ƲȞ$ͦGI$Zg t9jM֫f-nq 6Yz yi iE Rٞ5D¨!'EuxBRԼj+]O[87O;|lxyEQXw֢ۙ78 [;)rX.Šr;Mt:@;`; ']<pbVG^k;)*+}a஘⓰O"zSz3"d 3JZv'.ہ, uAC.-]ZS&*)_oY4q \dF0LA ;6J2$T{#=Х^ )UN_s0}۴' p?˟kbͩ 0QFZ%ՂAh$<> ZxqYce6qr"e>ג+"|h< )n)ne|W226λ0qZ JrF+7uK^ϽBU ǤuհugwQAG$Px J=GatO.s{@_>/RpG'_>H<<0.v`c!:9$9f=yHAy?ll[rԢׄyax0>o?hp&878_g%wiBTBkZ)[,:_E(@A؃ނŒߖ.)㭥OϜqC0 [ vt*Qkrj[EZsqxl;?P7잆0PC S4wC}՘_UJ}鹎iWK73?T^Iߋ QE=O6sn\QpIK[]ֽǔ`99`rBCಇ}T]I8@m]bB#[ΆVIP Cp=+zO2##Բk&bֶNB=_g(XYF S, AEwV:hs<2.2*6$4a75ŶJpbe+۳!Y4髮0NrRpX#,˱u;>W`C!lDED^vQUSkˡD/guAhd&()$ pb4@5ڙ4N1ܜ\ppꙃ-*+cyE ;t?)ỘDYمMsnwvq[<Ӻw΁WY9h2 vTzj` V<;} :29jG!INf"dwD8Whq0Ck909'H5w! q !C78.yJǚS^lZCUXv50P 4 d Ivt7Rt i ð$`iҀ%5ZP%&[f8fAa!q8 A 4ZCrq]{b @ @ "d~׬6p<|}&J/Vs;9+b<>]"Yj4?>B\&4tU);5*xJQ ɻVg)7@h!'uǜ~bOLP\_0 xe>1vW:R2_w> x/ߦ%fX[4>UF]df~-/NE/6B }Uz/5oKf236 zxJaԺ!D>8,w9)t?U(k9x7*H2P&dJ;OM~O;p3 uMbNs5 GGK_hL?N'qvf4O V]~g>OpiˌEU@FkslQ3sfѴ 'RP"$ئYf6:b=oa!9!R*]ș$0(oX֍fRUyyխַ|vJ8]%:6ph@P=3 :J{&Ma&*<6h.DBđ$Hk>GASsv$bQX)6D&s_uyNJ18$>qk.wr7"|si'["ZM XSS꯻˺[,s3uAx}]!i`$ӭ\UG|Q:ć~:De$:SȪNP4Þ%, `b \E[]g_Ӌ7\'o~-e}2X@IP*jֆFku>O}/^{uރ흭yF QOoP:E^b0 { :'1o͌)pqs] !Փ>٤OףU\.bD̋ lFӑ)'mz~_{q/sq3 n9dƑʒDBnhDG-jrR[AfT[wq[aS&0MHP[$Aam)q*@8,c=j۬gqeXŷjfI nD[j y`]cHc{EIYȤż#f/vX`Su,SX$Xh;2dx!=̜ɳkŪG'RwRI0˽f'yd+pȀM,DCS*wNA3zcoy;ݾpf w!)4E6~I9 pm kN"S[q}A# 8aI^!7|8 1Wh/?-9÷~_to_4W1;S~oN,Sb7OU|騠"Vn)xe?_)ޚ1jR ˾puY>P*M    [7~m2.iGQjQS~VHP{ckښspQ\ѳV.x qnC-:;4>\~_?+$qU'11P`S(Uy~OWɽVBȚ8|N'mGzgb @0\g?7*Hgx"l*lNd gLM&tU< K5"@b FEWGut=/|?剒wW[}]tD2qU)򐠽\yoxJ ~7fs?gZS2)i>SG1@T"u?~ˈ봚 Tu jPd`S@iƟ- *m0[˽z]["DعhZjMv@7nUZu5&8`|no 9{\6lH@\"ܸdPơ8ɌASA}|,Y/4z0LD3 6#TBeYcEL'&CKp1`(k4Lcdm 5t\RQ"Ԭ}+RUaR)GFh6)s0EL d5QěB#DTcW@BF*\n9\e[-f"cJUiggR9ڪ*tEa Q%ebc,(D,f [e 601TA0QEDE$-LC Vd4JdG¾0}kS..o"nS[T$d7 )㣶CyR8b$E0jh $C2@] [<>v !9Қ83g!Ct2=f-dCi6:(,U D$xŽH֒YcXzM(3xRRLkl-Mˬ.SvU)2 "E*R" "5h!4Ю&K-9WC 4:e*D5jXVڻ"pl sC&Eq$631 CHD̡Q )5yLK]11Xm&C )f FLE[Gj9WPR]22R2ZfPG )) )Hqfbkc+8-0thRUd/||N;%a St]#OSǒxzNw{7x;_3VaGh d|g>.7-:95^WZQ]7]ɳz9 pJB}Թ߳r&lXjpWJ:rU4uڄď  bv{<4C a7\|A>8-~(s;ƣ!An&?ke>V ._P}>@F+Ivj !k3 Kaqwgs#v3~ &4U@JP$D7c!7 `uhC&0>$1_fɬA36@@p4»H*:m._NCHEδ d8qUͿɜߩ))lכUEhpԺ+X`N>4d?;ƬVᬽѮsQ9 l>43{&):Cx}$ I'dV=O߰;yPsh󿑃5lFh"k%F+6/(NKGNs.#zGma}5 `Ł _lpBHCs۲sY?Y uU{qF]fll0C*_%]ffwst+3IxQ;o v}d-e<XD(_rV.eX[}.XF!!c*}9u`O %ނ!G-guʗ_#P.*$ gp\}=Dх].@!v m/@05)@̩8y5G= Awknjֳ"8[OYge=fs{gt|v_@:5&3T@[cC@@<\d+%|s-oB hBlKnFT!]Fſ0 S> 9 `gu q:q3,YnffF.{ͥ'evU[)~緆{eФnΏrjg5>RvqpR3X/Y1myJB;W}Gg4V-t"$_c\>LL :,ɮ-2) [2o "kk ˲|yD%P)d@|۴o& oO?62˽q4 zmILk \NsDn۾h߲"v/A51ceXqkGbUjԒmq,-auR&\N0Ԩw_FndVmQt5x}ml4~')c`kRQ ` L40r^8*+ A! - 2 ?W4b+Àx0 !t4`+!M!D H/G?WpքD_@AK~jPg9*DB A(R ~H" X@(7@ ,"N%PyL~[ ` P@ o쌄'VLN8lԀb3P+(TbYQG?L,XbS֡+$F0mǹohi2),wKLN2/ԱI'g}'_ i@2׺|Kh1YUKE6Gl!_Ʒq9bEZs̿ux5mwwu*OF4UCYcd\$&ʰ !u7|k|=1=.|M I:E%j?$ wlJWur,DC)!?0.2'uҒ64ݜ#+v)v^&* ,[е$3іNQ݊:g[x; ̛wLS_$e`2Rkz| 7P]:S߿P߿Z=2[)֑KB#+@YܺoS0Ȅ@z'JʝZZu){I߰gNրL`3 J-Ll}ZMPͮ~Uz ;w ׺%M>oq;̝>^.Z#_ yKk~[H52^\8+j{%fV=F/O2 ٽ}|H"$Au A!md#2m@xHt<>8~E|(e״BV֔Nʁݍ/nu_? ~yp_c?S_WN0hrXAF}uID6Gi2I//%_]7Bg^3P9~G01tvyRɛ!nn3fn8~B5\a"?nׁW:A@ :">F@_yp=>^Y 4U(nQN AWxȎKǵ|..s7dD$)!(#-% ~|cp'~?oL3jGBzf=?8Ƚ~UFbdڗ]aIW*YVባߑgz:$j2V&Q.ߔO i~P _e gUv0 a<Bzl% w,x0-A/2zKcj"/*^zpaZdv7Nmk[ in1U@ÁiK*%|'wwMk7lm`գef"۴{q1GG5F:!N="`m[>H|p᷋WV>#ǎLA8z@@LrCeJD b"k9H`5Q]x\&CO<7?l>1:@fvItC%×ĻbDNBRIŘ}R]Dr AM@jP(M%$ٽ Wtt5~V s_.屑mܨN逸q`n<@:؁PiQ@/.thk FDBt;s\#7DOãې<.A (c2>}cI*7W$F,!R._[M-L7v WE##{~4[*J6ޱvkυ b}MOݻ8'QlxCy~ۇňa']U5w\uCҳԋL)0И3e u wĖ^u>N2@Eb`P@ oƴq}~"^g*  # j%R[\97]A W MxXx] E Op@#*Њ B@<ـ،U:w9We ׼*\i͎lo:_1o?O;m_{I3sj)w5!JmGX$ؕ E_frg77O<b]"'ys7/tBb_6|RW9[n&cV: FqR"REmD`TVjA#Ku7WLy?hOKW8Ag'1@SH1&IU^ !F~tqg\5k]^xeQ_Az4WH>1yWvFh=iE+2Y!aQKU_s׳$ bҿXDcb@[p=@2?oH!$Wi:gOfxi֗ZFTS)v79W.^?!\ #pvBCO! ΛxwkSڠ2n @p$H;xS *CeN*/Y&OHB4k/tʙ3 e%$ K ҧ8I H2D(¡ $C#62RpQn^ (g6 PM(5Cx[ cZKs&57yAl fa@!UIr"A(e.۶ aktk""DbM+$28t3"BH(to!̏jts>JE!E0<ᙸa! I5)mޛfuEaC=v䞳:f6芤6wyqwjűT4,T1Go<ʚ`9s8"`B[d."5fbB; HFr+FGGy1"+/4 aq\cHl//v?n ˼"#Dtx=>-QUA6F^y6/ DaVT@ΨG-pOH>+M/xz7;ŷMOv\nKCe͛>'RWs?͵>⸩JEUwn1w|OwgwwtN${gx_w̑f0J_'"goBT&ҟsX P$pEf)K$1ιI. %arP -O@HƎNK pP"dC~c6O%1~ 2D9H"t ¹:_ fȳ.?~K}y"Uݗ(m{NہЊ#'<xoŸ㥂Vހ*%DsUc5459z[䉃\0\t ?(]@ ,r֞m\٭z}^'A)Pa^9:uw<y1O+^40̏V]6]"E4h82> h\@% {9kt8j_:]kQy^ڠp#:sR 65qq1N+!ۡDC9g⨳q  6O!r:%$)Q:,o PA!xa2X@UH^b휏hCQ6G7.u6!P UK=(t㋒2d ;\<xñ 5b$Fc?gUŇah(r8ш= DBQSicE C Ѽ)@a *C!0LeN6HjMo^2X*Jkkʽj3 YH~ʽ%\. "28wq­ߕ9 ^!F7EINACB[r\FA7-5`ٙ"9zɚˑUu:k7aun%'=QDdJ!8:WN'J.PR{$P8 fEe-8Vf;p'aX1FmAp8bx`)O8J$4Z% <ADE'xLTtv$lEu!?فqs; 7PQR fGcۃ>|hMe= :Z43 y< $IHd"TH *"AH.~.(,D`d>E;JBAExCvY!gE{Z.zT|?|I5G$JCH30SV++M,I! (4JBHDACETPA;pˎi[S{:l*$ψ:($޻]!eO!f f"DJ)($YiiI)J )f)H$*a"eP>,yT|:b,,$IRT%&Z`Ō+)BXnZ "FK<,ZFL`?.TX4 դ*zȚBJw  Lhd(f*d Ba"0 ) FTDXPU(A"%bbA`U%Bjl3ABelr\t<2EՑ歚?{0YtD+(M,ՌH`({B3\|TgdQQg%$;#PMQM2CP@DAǛ>iDktPҜpXz PY mOI ̙JR ("JAAbb\YID MJP4~P^IoJVH]DZZ$"4?*DI"!<ε+8e7 Qs4iʵ niԢ'CFEsCHSAT`L"lâ[=ҧ>iGM"'Cڪ` )*YHZ#o*~60BN2b'JG O4&"K@^"S64JR'/w8i1bIy^υB8b =ň|N]0OiנI@ G<;8y@lQ7k8V.̴٠X <G2a_)_aOuTj13~@CYQ>;.ZTPA[lK# `73 8#\ Kf#,f?4902~w= H4% lȅ4B5Lb5ncxx(^q0֊b:'L1YV77 A .n{I1Z!JB 'Z|/SqU<@2)F1^" AF!AQWZovw>biWli%(#Tb"!X # ,1 h8"by X f@ hV!JAX Cd C5JJ^<΃p4A,OgY{ |\SZ iJ1B&9zn3zu KhI3sÇi9 #P<$chq*`4J 0"I +D7.k\@ W icMq1(hJ$bf@rD7#3 7A*wrl2PMA8Id&[= J 6tB)Nn`sC:Up DbC L.3}$Vz]ELCB@\ڇ\;!ٰچfS< '%z1hgF`-*R@7\U ޔ;3ZƆtdND y!xLx*CCI2'<exӊNLW;󺛦\siɡƉHO͜<{=(y{qݣ:j1LA.$Ye>z~z?=vz-e!9}^3|U^CEZnMd>vz\>~1Ƞ[y&~,?CY*_^yO՘{Ji],CGk-,*"FOukFgjL"A !{ B`0wYg_w/ݸB#v@2HLR_OQkK) .͚$%lزK?3Px9_r_Uy7%L W_Av&oP^"h1385P.szssCbh|乼s=nE {o_6kAR{O]w-|!7Q?/zlywz9_?pt/xKs " P3pB,8K^:uh)?}A QČMփrhЭZ&c+K;SQADUQDLJDQ#,`8݁>fV5;vf{`cvډҧ4퍨`y e$2Z{߶AywqpD&Ak q`*Y# cSjeMe=͋5E5E76>n(>D&JR+2f8ANQM\ X,*(4 Oyu tQ2/Y;q<ȶj923"Q{}ߑ'HfTA}*҂4+ *~W|zha|#Uflġ E6(: X ZԂ&!)R U)C5 dRQ54:*\AʡmP ʃǾma^u'DF ҙ@HF~!G -*B<9@6lier]3[EBf+Jx|Qm?<[700A |M!y~/'q: q[S\ al,60j+r)f\2&MѸ ~5ƜfdqgXUV***%53LԗpG7y bHCy <|6y^SX)*5.ND8x.D]_) GXp[|KU{/;>~wq4kjW<͑P E7OPԿ qK̼ c۶Gtmނ s\[E?ݰLBa mhxQp6b:hL尠 [jc)揳pf.+~!+8q- ik_gmnG}c`?F) fH$!I=~qh @Ϟudv,Q|AEFv8(Q܇<)9 ʤ Bd2u1n@ .}HBbtDPؘLR@ NGk6k v}HqD$'A@q TJ%zuuXk f,RNI piH374S@R2w]R5AX@XRuep-`H 0.(6L=w{]~d^3L JT:~EuIXY[Z|j](W2'Vٍɠ7?Vd~?fֈaÐfcn|;y$zF3t1F-0CаMMa54h 6Ad=<oGZ'x=2ՔmZcs rBą|>%&/ swr& 6,.5"߽+\zؓdp}+=л&|_6P0Y]-.Hb6wQ)]'AyG:;w [^s[Hqs$$|0}t}&Pbi% T6/5 rRQd1{Ȥ!0n,Gzsl,*NC Z4ۨSL&IR ɝJ}!mp+3$MNgxvpfchrrE4rUEYӥ7?ZAtkk-3LwoG"_8a#*PpxG~Dlkh֕iB(#Gd TQFVAfK ZdQA\Ee(F[+Zar-_ 6@`Rv_ϗyupsÊbQTRC /}ԙGǙ@vp=Nd 6؝ڤM'ZIC<:Z$LoP?jv7TzR&$H=S8ԅŚ#!L5Ԉ+keLe6k 2+xLTkfdTedY8V7j&2Fc;q7 D5CTnRP\ %AJJ  B7֐@EnȍVݽfS|\IM*$"qya~zhYiIPf%fT2tc"qd=Gv 5 D!hF8&iw!<ɓŬUT#H1ā X&b"H6 BѡF D3 Q$UQD  4yez-f[ApB'=]},# pփ4 "sjA yeĆGHd]!j!ۯ$g2j ul;((>_y*)^0_gy L8?:N 8('DEQ332EM֛ L›q7R10Mk&|xq.Q85.}7}b8G,$fAd3,f!9k;cKg,YFL/H,; x3a*dig;;('ֿFy~>}9ݛdͳc]gChbbSYóh:NC\DT`BRQZ m(R("[QбL"Q**Q**Z'HL/@h2(S"A Q&b8JДs{1)M'ֲ2Ye)9Pvv3UQLs7o*<nPɯ&X%l+%U1-QDT%~[\]vԛ"֖1! &MQDHL00@(A@S#U025RS T @$L>h>8{䠸Qy<<~!cDaS- &Fo?{ Ό-Fb%J7UUճIv+n|o?c_vBk .ć ߆т?U#l_J$dI*b C`s7CdmaRҌVwu& @2B! >cp㋓X\7iRDߛݧ%cMTJlBNyroo zdːr$r @]6Gl1BfQ:.`)XTfI,Z 2"3AR[U H!Rzk:G&~B NY V`i;4ei+ &T̗c"7 #,8$tzI TCQ!eb+44N.eJ^n#LL(& 62kA/T^Cv@ɴ 01QJ:bvwAs,MUj0Vjya(T s294-h"* WO:lS& p>0n4Eݫ"9E,"Cbc+RZML)J(pʨ,X;* j֨k\(  fglhHu mVn ц "MdN"c%pQX39ȦfѤ8]d/#ɮp "QFT 6 5"`}<Z|YM.m15)DʀU3or~G<ߟtDgbSE$ '¬Mzd0Hɽ}Yjs ǸA޿ʅ፰^3%?Yh²Syq,NLTd+' 4e&224QIY0swrba>'%Ta?eݤT%וqt" PI"})='cclJ QY} c8ѡ27ABiu`T/*2H5+xpKw-H^=Ky4,$s1Dg)\907݅|6t2I`po!#_0:j6.E'AX:[niRBSBaa!tA(%( $" _68~FEl8sD|{a?~&uh%-+kdH0FC TKk*d* v8rZT|=yva퐻S{mJuɓ$7MPJX *VAD D9P.6XQCa63MTE@`e "`8ÇP`UHP,dѣiߢ(ŖOkud7wznaa̲ I(ZF"T,%hHbJ IHl&\"+:/h75lϐ5 :yС -(OZ @39paȼ%?d㌏0k5%jpP'b9't@A yuHyW3RD%ˇ?}1{, DD!J  'H"/P@8|z2ȣQ=T+V9*j؏ Z:eCK+Ԟ;;8F! -NqXa p0+ە,I]ix{Տ_,:P(I!P :n|['Nl ).d,] hÔ`?\r!݋-ctˆC%yӷ~"zgīB'6;w[l#6у6y0"DÝ`t3ŁВ` 4RL ƒLXeHdraHDa 5##j9AM8DV;@$6sfu#wI :حK~wќ [%"vXM/o6˘.3eͤ d I @<ꬓ<7 m:Yɸ{Pc81ţS;ir׋04yޣ..[negqxD># YiE2L8؇d/Ԙ?4^@>p']i^3#OwFz]rncFH~$C&q3eX2A q4a J&BQYD(Zp&7l˪RE&+E0vE= w̯&JmL(i-!Ham8嚉 iA"q[go+g9zb^-Άh)H&F2z *ãca4m7먣n[҂Q(*:b@3ͺޏ&1Χ;s_Pk~2ü(\pa-ԕw'/L2t@.CaX+w Mu.*6:`ػ`0 Yk**p6Pq L:ʣ<& saBbȩ!\k7Fb[8MF!N 9cvlpq&4S7b Pe솴w7pLv;3)JY=pijvQ#v^{&PR+!<4F0bᇙ%Z5vT$ c2ԒdZ $#icmz$[I(GYkt921ɗossW,ko1ȅʦfXNnۻ@T;,^͹!/Tyb"5禗I;ɈVxȁBj(/aK9fH;r}baGl1 PህM1L>fi1[+lDq1fIviga1׃*{,H`3$Zt_&|,.Yd{2R×{/nDk/J-sO+P(T'%ND%#R(Чs38s U.=(=i~N"19/UdW\ikTnTc+f`Uu)M6[Ka|iY 3J(m>"zBa рwx 'v-,Lk}W[1suxɓ^ HAǴ4!Xp(C'CP<:cHgVh:q]9M~=W+(cg;U; 44K;3y֮ ,ޞ\<;O̿;D懚gq= zPh\m,;ha)L8qӴF|A| *54'GU Bak 8%UjWZab \\3\KΦSmPdݳrۈDH/ qƇy"*% bNM`7$"ӎb4LͯJ}<2߬Yƕ=t46t"rewrkQh,![a:)*%Q:J L4hzs*JÄLo0]Iw1ιO6:\dXCr:Q;vdZ뙩u\g:j5IY˚pۜ..*y~cztqb 2f ҼwfHrj9z}"y!9&^[K )(!Ѡ-q *hһhM;1wp6VFj`\ qį1KQ)(2EN7X4.jPph 疂Yp{(F†tD%\hza..uѧa[*&-}jzOMdP\CE-CQZÍ%13QAnIs9ভ q)5uq#.7{KtnNd6J.*X/ytDvfBd/Jg.~!6$90&Ds?y眞ζꘋaP*mp{zU);Cګ UF{;0awCBb9;fւ 8"P(d1!LAP2"I&p̩3]EVP2zq&w<7 Pf1pmR4-iox%EQ`wHx 8TKQ|p֑ɐ7w9<<$\@TU. 2̉a5c vB yQvTP< h09PNL$b4c񾇔~p堵Qqjql%-Phw;Zdp U݁vLȵ„RQ!0:T!zCE:sETmv;K:S P S+7DU{, 2f^ rH D {MxB3 prŬ3$3yjX ۰v4hC ֶ'eEa 4-%+5rv\Xf9h2ɲ(+ Al80hm6IWf XL1fO7&g:6ڢIpIg J"2nqX*j0YL(6хBy:ERD BS$ [~9U?k%oDQ[!Gs,;d;{ֽؖ gvMЃ`g# l8\hIӶH*c_ y}M涍p t2?qb@vQB6}]L 0ܫe1e#) ̀UU(ePtfXz\AԂ:`i\; "j q:bu#PKj!o'9B>;,"(9(էP.ؚS)NT;qӊKJXjl♩i5T`um_on4Zj=7'\ 8[$gn!37H A켨-?1$ː$;xwDrq@Hj[>7y׭[EB̄v#ުn=|)q#P8D'ui̓gWБ׳ɝ3amKRk=8'~_ hݬ~4*x#I(óz!\"wM8UkXEY-ik ҾWhdX҃kKe(`*߅%rK\m,Qkמ(=5 PR H#+#1$NI D!$ $#RaY(!S@N4wHR!Fe&JBXٍx C!էz)HBXi\y'c>/z}70E1*g32IfV0DLHDATQ5MUBRPQMLa690.ed֤12r;XᄒWt;: #MNŀ"/.&R"dJ (`_TieM Mb%bs l#h!-pжpH\")-"`-*\,S7qxǺ&o@0tCH$0(BJA!)0|>PiWOJ=3":G4l&5XAߖ~[Hvc ؐ0+X~5Ix^s{ -R4(EBx(Sɡi(()z>ڽJIiC솔, 1i(.nQ.]%ؒMT!sT0ukJb. -& ,Pr(;vϓO:5'tP44%h 2^1BtrHuYUtMF!p%2) )6p(dRd{cQQ0*B?8>*u|TAD!C1= !@ B@rp?RDPO%QHZ[(OgM3QqtDr L%T t2u5m4Qm팓:Hx 7lpHd(g09ZpM:dBj%'|SNEBu5k- Cƞ)w}G}ce&,Jx1שl#՝G8A&# IQ]PjUYKĊ~٭ug'Sr5VDԵDt@g2sD 8Vsp{(_\ #E> C%AD\z>'M/ۋz $0w6mټaPb]Za60VX+&+rcY00Ȕd4%C2 vs.h쏙nQWjIs 8&MO98`a2(dN09ɘ +\Ad+RW«9pʦ CE#虥D@eaKVoɛ;P`D/dFs 75LIY.o 殙 jE54%JɈLJ5tf:J%iI&hB$FLd@&T@hDq]ITpp SK -[Î)G)Jܝ h E1wdшkTC|:Wbw-L9a#kZz#!) (Law(N"Td2)rk!wCmV0%MaNUd0U'SBF_[Ox{cQTOs>$e D \ P8Ԛ Y hbi'ʑ1Jே`q }>6rFgMG=`4/dY`!" v7R a*@"åFADaf7drs@o&\W&5adKP,SIi{Bk+Z%+:{g vd2lNx.7˳3=FpnE@d)ߞs36;pAL+|(RxB7 Pգa6v@Z%uG1̼SԽrz&t>X% \y 5IFt[RLB5<9 7r`  .4T`ldHp4A#,*!xw (CX !ƂE 4]@ɳ.zRQQHD PA kЦ ٨J{;7T: e놓IB`.s,'#^Qȏj݇3dPZIJ!zbnF!2P2 )TL(D,-QQKU,%KR pSzb:@&ZY<8Xy:".ĴucH`~T3]AahC jJ AR/We"] \aec лM0 , S!7%BH}!2LP@H!*JL8!c$)F I A {ޭiN!)qC"iMdС& (&N2*y`qo. ǐ%3MDAcX#Q >=@V1 :64(,J9cPIP\("), YQ cFkF Ap4 APJ&bRRXdj1M2cIhX"&h ф]Up;UcIxg n0Da>%zuv6c 0"7E˫/9o| ͥ܅e}v_i55#]ϠD3жhr8U oGS}(^A+ !!﮳V/@ _>`Xm 68@iS<8/MڮoZԁW6T֯ y}mIK;(Zp, ~!}}[܎`P0% nY,*[bL09M"`Aհb)6" 54K`TLrlL*F0,`]&@Z+*е fHJM<࡬eHY1QX.NI1D.C2dE.\$ԭD&Z-Ra%ijVa`5J`T$`gzi!*V?KO5 O^g^UGhPe}v_ڝT&jLQCIҤ\oJƐY\'O<xo6JZh& #W\ӝOړryjq.q3QӼAUq;÷+D-J};h,XdKxq^&IGCyIwC/zLf7_qd}T;ۗ.rʡ? ;Cs?B7BF':?iA.1*8 GOnwc!ay*/ ">XĒ7G(0!:=tr"M"b>Ő6;RdlFD$D  7ty@!lXr*]{D}( ?/_>w{|g, C]Ἆl8сzFNF!qm\\{i%7_IaY{oHhи ~iQX`( ýOz"^p5vfN56Ä/1z?{2캤`/vN_BJ l"DDaa$KaGCtd D! GA,B T@m桹$!y]u'l4MhQq#%uSh5o`+#8A&z <ߚEХ3 DER-O|5C:s2|"+b,ZbCzayC?r#)6oN%U' ԥ 5o{vфWFa>Fgު@ڮP0szUe@gA*6@n2Bh"kR֢d.+ Q}p.[/ASj 'bv EC=x]s3htය`me^M? a)e%a}? #+=_{)i!ZDNe N؆O|_e'*5C D6@&ߕ%-񘈚>"=v>^K&qo&8i!($ZB4$ِ?T+sUӼSV[m?c5L 0$Jc㡢gz$ȯȊxKygs=beSMI/6ACس&?aqH{ns:pAB @DrEBcXg:}qY t]j+4Q#0ˁ4_Z 4I,S&8ȅJf@`HjӱtC`%C ;Jj @KȃCJ@db"N\؍RHDH2K@.RՒ]B$6RC].lE$?N9pTD&c-խn: Y) m[%qDE IُitHLmr _E# a[:U0޸[^it{(%܃|}_]t*. f-H{Gi,ɲ$MA9 yGhDHs){e ^ K-xc}E s%1JJ,=hhޥo2G"Q(*b" *) " q_Pv3 8Sce@KKUDhdl%-dfJM LjLBȨ,:TdhB, `[ @ 1=ƀQ _pKss~Ov9A S| +v ԏ^`S/EaߛGN^}u1| NO B>m^ J%=g1D~J\IȦ n1w.:T_J1aa UUc𮸄7qv?7W/ooSzΓ׌Ox'8Uˊ RFHJX&( ՀQtncDШ35J0HKcEHݸ[$PF҂)ApU1:30tTbH"J&"ijH321(1ҔL,XjRQ#rFʤ=W7*gV .! tTeo7zx Ehi$Y`~X(N#9VFɁIq jVswT~KUXJ r%HVԵT?F0<:=U^߹'kyGn* AB!6kVD #G7^o{W ΠŮmzΛ}od~[5%b=56DPL@ɼ-rP@So4:v~=kkkkbѱ@h δpЋQ ACR DTT,= iMA0X;KM(uMF ЇHҥ)ӘXP4!@ؔ1u dBj'qNrSOwygP=#H4P.AK@HKM!HHV@҃ D24CBHM+4IC@4P* P(d",@!H4 L)@R4BT)H R @Q#@&HefdДJХ+PA@ ;bұg;h~a֘PJl@%CU'|1.p@ %LvQ3a]&$cT%ρC# OLu冕;SP,fQT\MԮS5/q'!čE%8+)0л,%xSa\]I~fjpT/txИڹ3h,P)>H|?!{2&gxsj{lqX'W49*x?gG1?!aw \hh4!pi%!T_ϝ3ʃ>xp-fW,ܞoLQV*Яlh$BB\v^зOw>]>Xzw9}i@'O F؀;Ss&zI=/rXOGzuKVND&QLݸ`!.}wܮX!DHt]/ߛo78"1OЊ̌E\XR@#@Qta IO. fB@0cɱ5ݨMk2ԁ1mNoz Iݍ*a]0\DQM4K3!H` ^׀ ޞ\a(h5!(+flQd~=uهLwI^{INXhb%aR2]D};̵\c7C%{H-%̤{mUx-;!s)FbRb_Cij!"-)*6I|@T.8Wxԣ|YhWA%+L%%U R0P4@QAM ),*U"2H0"IJD)JDʓ K&8x* * (P* H"`R%dJ"J(*jJ` "*"*("J"&ZB|P(PHP&hQB4 4a*H"H 1@=Gf{P([3lIxhP]Y$QJZRa((R$ AJ("TDU4F$3TSMC!M!If9``ҕ*Zl(!TN%1DYddRM%de#L S!UD4UDED53AT.N@D,1dIДII,so^tSAHAC!@j&3 /*!B20X&eY"&&q 2 %@ ed)qaTRȂm[JXQdFs P:$n}H{Gd&vQH X'8vBW&v\lTI:?s2O Ѓ]6Wg"31j `QQY'+:v[ḿ(lhF)R% s[#huY)/ZlG*;,&jI$xCā񠢑 f {WBbP uBԆc0"Fix{тx"Xgpu1) AːAREZ4S6u4-d8nSB`d9Ooŋ˸Yَ&Yі\hۓ.4CcI`9c/=ΚXQ />W2᫴N, Imv)]q2oG΃t0…Ӿ/"YTE˓018X}'h}l=o S𽿡kb\1ñ5,W:JʥuѼ.ARKDn}T++"$W3yM]}9{1 1 BC3 @dK ~[za%A dM-B_Zʽy %9\ߙ>'Om0CzU;|h ty)3m(Q]_m؁eRSN`]Zf M ''#\-^&7u~!zP@ il 1 H!}D2k&]t4D!K9. :+p>!i)p}M2% 14TQ #R0C2R(Q,Đ RTxv'В"a{3+J:0 =r;Xqnp,SdĦaTc$P2Dh8qLzij &)^^[E:%8'ae9e!x~7r6l=LLd%bZH|4!_xzm~m{';upD۾6LࡢcbæbuaMHx$X?Z2:2D?WD⮥w4ܓ;Qߎ 9ﺐW竟yPlƍRQWSݽ>4Z%^9f qJnY({h`ii0PC뎈TrBẮNy{8W>9Zuqe5 iT0ބ+gDJmߌ{! ,CA039 eՋl;[5uo&uͿ~oL eHf靜gDCvY  `F`~$whάZ\s=p:p~! I/LjC>|)` {|sO 1GվIڊ2y1> An BAAR!L0QIILd0HҾe 9)B `qq@"Ū""EU` TA+%DQag 4c!*20 e12iQ#)K+(B0D&X9mjnp)2$$k,J2,&% L3$– 4 8eTk^*>en.#-pӟ<1Bu G΅y}7JqAxƭXBO1 c(jRH7-I kN Rm[ll860w DRL hX$ C,6k  { =A.ۗ0p/w%َPp>y\E%>!y&)Bd Lp3*)D2AhZJ (ZECk11*"""J !"rJC35 b,02CiM:iC$ !D|E Df/x#7*T1PPFBg>]|z5:sY{?e7tN,\j[k +Ĩ I%Iٓo;hzPIX,.0:'< m6HV95C@$Fm5 Lt8jű=Z@`=0QQ, ~ %G侬p_pp9>7'?Ds5,T,hT~M5=u)8m%[g+Ã29WZόq;.E>Ǫ^ʺF7%|7{С04w@(-Y<@@HRӇ U<`ץDZ?_~Av澚EVD ~?oP?߃ :@\s5Ƅ=]\>uQW;#Ti>zekt2DU NK63i2DaT)̅*_̻E ź^.R[эw.,є-V7Szd0N6fH(Y^Qlֺ&/7478'L͂I@ʡmAE?3:(a/|ct5H Ll WZcV5jt@AFHXֻ/L 6jPwF B9Y!,pC&|q4 T5MPC48 @ٹ+e?:F"0 @]Art*"F HH BRA"R FAYd$V@!`@ e$%U`DdUY"R% IfX!YQaS@Тv*kt/ņH0! *ʀc"pcB$ $c0CRC,3g'WF?9%:$98's)?sN!;րNƸcp֘ʅ*V6RZtƯ?'(AIoy3ig5X-.ZQ5 2?] PaGB UD]^@DŽ@Gsw -|5ܳ-r9MUI/eG73-ҠV]wD Wvw)-:_ ..uKZr&,5MLj_y^}Gy?\JT)( HES)D<wNP֯M=$VAsOH>1KqfKŜ5Ļ,Ncs1"J54e7ܣR ;`m7d+V4  ,tK+hYR[ ҙRf("8[C%Q sjdqfl0\3 nSEH"k8 mfcDm*ݸޥRaZc+R& 1FlVČXA$ hhx㧊80~|f޸M wOTUUS)Mc?* *T=ԵD}2:u Z;qjhL^=M*V?C4&L%{D:hvt޳madn$`B¢D{=ݓ{ʥ*%U$=]T`_L-OaZKw{]t$!?̹\I ÐQ4DTS:}ow3T**ð"Z"0N 'ͤ``RF!(BCH!ll``ftIX2?`]M%p(#x=Lbǟ>`xۙvD' @ͪt]XW L%.aqՎFk g`l(xa +q53EƢ%wb"JN,;\qc'[X,w Mb&`QBpsOz|1اg! bu)Afke9E8Qh2l{Y e{Se20yL;71M8Ɛ,aTh[ Ɇ L$3WE9]A"62̘RPvD*X&D VYa8& 4P* [%HE$!aA$!da :!RĮzfEt4p8U1'"JR1ȦdDz%Jx6b06Rwb]w10`` DF-f 4n\x&EHD2 Y0crY[@Ņ_-:. ;J{RM  0PDLL;_v`&CAާn5GO3_D- \fy 1ED[l)~=h[ W_u@@Jg1,RȵLD5434Б $4134EA$4RT@EQD@@@I(@TLHK$m1*ã{ É^!:D$MQ˰]˥^@(ۏсɿ4NPFBVK7橳Nvơ@sRV&?wbxow["4 iU[Ѹrxp?ɝ 1<'5z#SMaiB)'(!A`ZmJK1WMc}f3;\Q 0<ޜޏǘPlPv ( REee[d8^Xzs ;GE3ţ&`R*`*H>Le:o!VXP!0gr]{Ih~VQe}|ޘg9p+5#NS<~yBbJ+޼0`0 Bo|yK mc4jфHTf4]lŁ94$R ]&qeФxC$ajdRYY &jB IP>&3fұ%?td1TpZ/(SNn3{.3J eY#"70RV4<*ã|t&Aa,;PTrN,$"oljWuA7nU.ctD8*a R>gvu N0"a-.{j%w_D A@)8h a/g>-5&^gOr3c{6pKoDh7Փ07DM0+&" M8l bdS&MJÄ9(Ѡ=U# PT#~P6"6T h( ( &J)4EH`18w) ڼ4.u ׉j4Z$=٨wUe ϙC|f+f8ՔV%ûCLH橦,u&[pȗR9ga9>G(tȀP(JF};ĿȚD9;V/X/0ŻvuwfJH;AE 0_oO[]л幹 +ȽD0M v7,D(qXqABH d9>*-K{{{k@Qu~-pC8d,GO, ==fo'F50!FC\9bRr 0 V0USC?|̚,p `TS;M JipR0M7 wD 監e؆z33atIMNnJjDɢr~S `.QtU!k74i $l&#Z 쵚 Ada$ k6#1'w2hSiQ S<TkO gTg^Fƪoo' vPxu}9\sxfɇXwG"H$,%9Ѻhob˂s]>sSp8y55݊䤠 9AXpkiOx驈`% H JB&VBR b@*h"&Ā̞HQE{HL> NhC%*dDRFd9yEd=?82ttKyNsbga3c`kC ewe1 ڍ<\uSD *W7ti xLġJ ʉY"b%f @`I"JJ|:-,P|)FƢY %RXPVVfDLj*]BjpH,XA%!% (CM,ERm 4,M4BU$! 1%DKQ$4̐E,8!)D "҅) a$f4 QRDQPPS\``&b a`%IBH q"+tmI=}&.Y&s 'K6B(H9]2B|aaSPAPf`O)Wnn:NwM؈ L Z $@r8 4Mf=Ie}ҘGJOE2WvēW6z {FQ XeP͚vVw@c*0DX $s~\ӱ-a*<[ü'WR-a!'s\Į I+bۜhe:˓%4jAlAy hM>_qϱ><f8w I ,jZ)D ޣSe캻o52o'84",4q ؆;ww{`J$DԐl֝٧{ͽĿ̰4:C%=!t)J!Qy(NI%,d&`.Bpa7%C;t%3ܚӌܢ]` Ө(_P^ѭlFHBQ [@a42iѐ:鲉hscMgo7LknS99!3Y4]MӑXZYg [XuBi)[sC+GMͥ4jH3!%@2h!rjvJrsc4 aء o`ȹj(;6+sۚ+íMgrC3ep]MnSRRpbq[lW/)zD$Z8I $RM.]55CS7)f2. ]:`: 76ma0]浥G\м.JSuupRK%ц6M ܠE,M%Si2`bh޺nv=r3)X]GVVJe)K0'?u Ȓ"(e$?EW f^&6:G=$ü|+"YT%&REbHSL+HC) ESEr4@pۤRiNP $I@.[([%T0#IJ$B1 ٦If7h%5nrH"BK882f,0$?㊛M()l98[a2\a2N" )FMIQfX)Xh (085u-M@LLh*@ J` (.QTB2AA"RS$ 2˔C\JDV C* d-FMYA]Zd @640FfF! 4Hd ؀ 9vISf ("*a6K j` 옺j--@<=͓ϔA)Ԟ,+$a AkbbFJ$IR( bZdH) J& h(""bI)@ hfPXY M4Ydapar2 9!2!5m0d3DzjbŐ$DRAMIEMR$(Q l0Pa@R.#[EQXl(!eTheYD@--ZjH PXXd8bO4,J 3#+,Q!J-jԵȩf* w5fù0obrD qwh$aHdfa#C.~TtAdJ98DSLEza6T{. 8K3pkg׸Θs[~UG:ѝæf-E{Hh֬ϿXJrMĕ 6eaQ`#i9<[B/&y5w ɻ(4 $T h!R("D)ii7 AV$ iB(|r ,ʫXuPJBȟWѕt0QAC(j`"C{h6r:Zi)T+1DAKICAD&NøA HɃ ru+^B`&vv Gk5j3]$C.ePzi_~LdJpԼX2jiuƵ#Z[d6Ñ; =84̸#0rz  ϵ{q!>#kIB{ ALu0ԋ2B 0!dAvh7C-.VTnH%iU4B+`0كN z'qӏɼdlh#)CA4 Ƭ!h"X@% FbdiDH ڍj(Z"H"Hg, 6 Z0a[,BQUR`+@!PdJhLXJH@,$mm Y fRfMPi"JI)J" $6 LJ$`$ RbPЄ҆ G FYq T%aDB*8@0)PJuSRS 27 yCQR;MU HLÁT֠4MT!5BYXb " aHC\ZK5{daD,dl B!QRP00*4(*D<Ҋn2ւ'l#M!7տ4RJLC2HKB) 1@EH $.'DP7I$ x*muɲ,NXpJD Q dAKlKP%Rȴ')܀c:@F"bcbkۚh]kQy} )>ﲳsxY+l245C\79ÇVSo*nL` -)!AB0Cʟ_Gn oZp%죾rSO R[:9釅Es@ 'F4')07tnN^`I$^@zӹdt' k9&GW lKc &m/Ng Y"BwqLL® ŝ;4ZlRzl!Vfw&PD(FCu} ! gY(UHO*4:"h 6/9~pO1g\_8q?G!8"W>oz>s8beBBUtfri{r)}Y:& V*|Gc~8(O'Iט4^^TzOUd,1 bON} Rᨚ&4!j$9&Q(ҼDȘ(I"#9PPT1łqAEn"7=5(x C4 LQ1@hJa/A5pe&Gzq,BrP?)BP1$*ɛ P*HСvQO^͗&2ji0* 8!x;0_s_U_QdeCNc3 P-}hx|q4s=CDbqRo'5@](`!hyY*6 ?Xp c"KBD::0!%DT%:D hCz RHD*()"BjbUQ$$`"fZJ=8rp&Tj"%Y!!$!!JJ"bZhJ"\:~!iˆg?9/DF3ep"B-JRjFdRTC_l/`:¤ jH"jנ՗y<#T+MCH!C0LTB!@D2AELsLUIIT42!=)pXeYpT%-niLom%ȥa-wC `2. ꝊxBA̹XېL@Xtɭ23] f&0!v*4I,1:!d@oʁYH:G/ Yh& X$Az۫L8,d}JD7|Ң)@fc#͠+'zJZ@xdƦf1£)fѫmmF'3$@%&@+# ,,H$Sl6~~e: 9,|~$)b0=aՂ{)'S# p"cc a~T0!c wSsP^<`IPiREI!" Ha2@ axC(^;|n~SV A*DBPفTU RD C5e2(*C0AUH)0+(" =h{9 JdM !bꃂaxv]:u q|Zw|O0֚+9G40dQіAHַJOWI5"rrLRbQFdL^'&lF`(%&پ.ZFS'3>\;O(qU\kl'fL2.^yl&Cpu'<&tzD{֔ =>Ȍ9| %U/̞+CVjgTδ4ZD R1H=CsobB볖A630}Ɖ S0  NyummR9Fh$$2Y!97^p,A6:Dr9T;``t?oM0ƙB8ZC$B2&Aϓ}xa (wAvdHӀɫ0ViܴXs#k'F8/<58sHdt!ݩ B L{`c%"{9 s*`)Q`T,-dj"WM50L!E%w\/*Pj*ZZZRV6=G:fWl)hJAmx;ş׆ Bi }GVlٍhF 5ѳNd) !6-d|\8mEiQQMz *P@4#b"@X 8ѕD&pW+@db=)IE܎JIHV\KXQ b,DgBҵ)d>d ԁLFf` a-cI$hLK_qg6qͮIEa!b@S`Xv\(JP6Q 8@- $"d#X,&Og չ : 0C!e앶K&[In)mo(jcfa"%$@(FP"f (ReD"Fh T$Ijbj!$ fUi@`A<$2pqдi"أ8{>b@LB1? ROG?6yCvF E\q"]67tv9aN[~K6Y)$w2BzWn1kN?eO!z۷ rLp-kAB@ń Nu)ï[l+)_{Oc!&+~JA蹿A|ćA,J4{<Hd}$'+;YF3sNYv`6_ÆGh`L~:VkZ?J!ֳs2`8U?aHfBv C/va37ؕA10"ʩixa^K8rCA3aƩMҘFB^V*aXe.]ϞfKIuTvyoϵe_g6B!ɁaL4i! dK)@K;ϰjiKӂi5& `NSj94F.8d+'aEB!@n1 3i6mTUhhuJ9prYn 'l8&(0Eý|ɑ[FF W>&O<ϪycnS|&`FmcnwtX=`X~kwOun:fstb7LWX(lu XF->p $'g2í1 ΢dz:x淃r6t4^vZ]v؇cs98[>ADڿ5RUBQQcc:Hvb`_?3LE5EErp%? b>o}mRݸS}z)Z54\c;b*sev VBZ]dيQ6oՒ%Pqf8AF]DlTaf6i^ds)L B#; aWSYܗR!}!'ᢞ)2ӡ6՚߮ə׀V,\A4tS]΃Em %"6 wcyw RlF(iB CkߔD\=u}jnZp鱤^s0(9tiL|8zo`( $go$ $(1t@/?Om_l D$ )J")"HI$!J &R!Q fABX!@X0n@<-ٙ1) 0ѥ2T}Օ;Nm۾}zlB%?-8gvArQd?FSc &C $HExxYR9 E [j|:-RB& WK9m4@M3DSSi qؔNwf&rqA Ƅ `>H4vn̞Bi,n4fȯgGBBx:a}ƃ2zl#0vQhK~,֊7C˛񰜲*scg [0\wT @a9syeyolt"i~Ϯ\Y"H|.(l 7a-mQxMp!ʼn'a9F( t=`f< E-⇋ݶeԘBϦ.ZMH{jw@f$OFA3!JлkC(k"r|hMq8eKkl'fnqE4[jhIlYB%=hP oF P5Q3&)AD KDHBSJ4P %2BIPATQK!,4DDLвP44.$-$R돓"nMܝzGƟ!0,c đſcpP lk LI$j'W$=,4ֈJ澃sct=?7sAC A_( "K΀?: K~-N2$jA :C B޿V[KT"d쥦H9>2_yJOHVؐ>{zZ6An @h[rc+PYDkQ"JJ(' [HU4U@2A2g.u mY(2HI\_X Z0"Rg7QԠ2bdĔv $)Fq i Di` Dh:M!p+"J>Ah@ MJ@<釣d.ijX h4q,q,(d iFbf@("P8(0,PP@F@- !:l-HVr553V @05sdf3zimL7Wr0\4TJF aes12VjWy4h 2>@Ӿj,)hyک*!(Z Hc%t(X0J@bLCIi-?5PEIx|2E@y?HPU2-@%+ 42#HKB?{|%4R/6Ekm RLjJ 8l!ѧw*m Ip 7V Hg׿7s^(VLd]Eu5s[ 7O~PZLG)t3fP16T3q CcB#FK!0,&:]'݃"rh5Ś_'w)OLF\ƸPl(5ae82Dr+I@H `b9ʽoDI#zJg8D3$\ϣ9b֥&["=d_^7^Q1!J2) VT`--"gl)E(*@<>_ '^d;v4hs$ZQk5p(r|]P+QG73pa Q/zz!|ٚDrAܒ"Y@TTk5<<APQ I0[[1y::Gd!!X| $@ iIJ i%JR ddd̥9T%S*d`FKHRd@.ATPTQAHC2*pxiHf 'Nk!9TYȇ2s6pla,(3 #"J(@ȉ!glp.l z!x"TzqpHԑ$@pZ L| ]|:XhOѶJ˼`C呵jZ@bBR=`j`2=|GLR@{̩J/yL2RЁ1ecg:#%&[!A=Œ"V}QeӒQKfItBXe!鬴pԔmURx a"H7nERrշ:(o^WL׃P.bRt <11LG5(;J*P0L8?FYKK`TzGRBl0b,AF6*]kK& NBQZBA`e*V@)DdH)I-"QAlB*B’ikI$0!֒X8CI$ NI\% 4 31$hȠ0,dtJ@ @!O[ULBR1Q2|ɬ*&kdA(!Z К ə,1fXH$ȡ5*pS (P$lԔ60,Hp'B)(h[0 '8)c +@FҲ Q7_VYiK3j7-gw,^ u]ӰLܲ{ NSI4=Cy*Dff(LmT$r 脲fb(;G0|P p@2dQK?p_ʥ0I~6_<,Bܧ"eGj'C/xpĉOi\AS/$cWOV׉?T$lV ((>+KG?}v۸jUW*t 7n Q`O1찗FuUPcոyrR`I-7̲: L*|ǎ1/)1(+N*Rr{$CnųR+dק\]~_ZI $I$Y좎]{'fo5fxqi9>wlnӳzMMsdHQڔL2=g(#nT K)j؅fu%>57^]t$H:Fy8n8R9~ຘzwy¬+ B L $=I>$˜RV CY6Kr$ g5#Ik@ﶯK&]ߞ4dDy5Gw_+fЍ#ʜ뿇!زח &-Er&TԼXJiiq{z(% 4CQ0!Uzv73 P;;nXXi6t%1U}169umECnT)^ʡ.6L0! WD٤LJd ><o\#-~ L(ۼS}]5bɻcHٞaq8MgRhAk!,Q7EP:f*`t;7InL=lAH5.˧jc\vС?]{k)TW{5ec uXQb,#ȼ&vQf<'Z:Y.Ρ?=h?.6lͱ z"eec]w,xfOInxL0HJe*֣BHL/A9{GaɄuh\={'*"FjTzr`+s >$uH ( Dhr~0uRE3ʚpVœd&%|g}]̍|AnCsz;S]:zBKp1yx mߤѡ>DWc]QYM2XN(X+5nvX{|,+0GPĝȐsY7|:wdCo|=煽YwWFWm^L[Jf`o9kO~ƻ!)n7n&fT5zs?1̘b9&P֋e[Jc%}_Ix:9kE4DA*#O}Fd/IhLt"Sl{[ (jItC=&t>xC670t"њĺ(İ5Rn(3,-FK^A%MeDVБ**ܻ;)Ы/3/wx^۷I -T;외]'ӝR;*NʟV q )ą"e4@Ejt-xzᏩgGH퍡 1טc8r7|YR< 8JS%.K>57vP.-W)!HZȼ=e(訦,j&QfZF G}'(hȄ- \IUԗ=z]w-|(N[Ủ֘e;u5=VWZk4m#jJgVT(oz%y?#+ʭJusҝwVvqKJn ȩ=[([n5S6f`]kI6/sXɶZyQ?!}líIF6|+"5}{`ĨZe Cԡ7{ o-ױߙ全wNӯRyL%+{Ob9֧kg9v-9> ZILJЗ5z&S  4NS^R?GB}[H?wϠq߼Ϛ)VzϽ̇K8Hw`=ӚQeV&)*3NOh[g?UUToύnHu\:$Ѽ+! IYÒ8.q@eS%-Fmgz?Wo|YH(s~1D5.=zΣ6xc[mTӢ=!I4W&)pv 7һ@REIf2'z}V\˳ svG3*>Zq '%8kCk%K÷5it{hbf% H # Pm*C=Z/S⋴wΓ@9"35oQL'AF Z>V gxk\pb(o~r6m\Mͳ&ܗ.:JjYUjnA[~>vw%iiw^(C6Y)]hB,OT+t-ʎ;Zn`}&n΄ |^xr\jT݁%05zc:jgK CR1L[7l]HmVX @AT1 f#;O,<؞:4U>pcsS'roE#KHYDBlLG4d"%)!s!C}?r0`fAG*ݹpU=P-V ra8`@$ ht !1S2-7@ȅO6d [*nyu>lh 4= ZOO{rc<9ꠃu֬T~ˏJo[QEE(-J R"ED +R05E#ql  YC73W㵈gf& >T@!^ Y ѭ -3,DHEL*i"NJQ> j-([мl. !;cc Í\N7ӊ=1V*("\9٩m mEF "bV"0CIIx5H$՚LV$&4l wvY{Ϙ̒oasQJ5JT@M&L@Rvh"zP{u'SIDߣ Ab9 v&B:cs}p[CP~6_*Ϝ=JaE a)EtR.h@ y>|du,lCE`{!i>/ܩO:/AXN|m;>kHL}*[b٪ҽdmå ܖka O^P=!V2WLaS%N I DP!5L=pM,ؐ >],>$}*@Al\W,JӤdgKd}0$$SϻZu+LOS RR`c16=L`0^"LGb[)"**҄,>pυSo! 4u~J %;F N|ΈL:்@ g ȣ}d\0 7jԴ4Pb|]̯׸!7,VZǍ[XO/%b-XhFD8|eB0H(߫ -*c 2Z55SE%A$US%, TJsM*#(Hb @%E1 JL̈2}9S2C'(% N»3 LDMM*Y&"(?_k kY-mX:1bC#8Lې 7p!Fh1,u[S!jk1 HS pH%ANYQrfb[,7PGP^ .dY:"݊ + 鲨cC-.Jֳ̦ M'I8vWad7 \VfV a0,,C\C5k% X"vߔ@˼VQEkܚ qrA"- X1շ)Pf3hBʃY =F@WhZ'("8hiprBE pD,)z'S]]9%ЉAؐSQ, FgX1#T@GzcL^S}݂CP;C1lPF4˱Pb$$HDؔGXN"0Q/;wanL9 'l7/cDv'DEWub4ߑU"(lW 18*sF--@7ު<}&=3w*7T/ w7`!Y nqlY||͔)L:ʊܮhlpg^ d4x|{;9J?1S& z\W ]lbfq|w zugRCyWZ ?A zd=)LJ߽ Z={*H?(P`G5Uq)&Pn~ޞ*6V{۞?]|/\7n$|V&<3)hxa=7V>$ $?kvbG>칼Uv%𝤷chɓ-m1??9f#Rg)}xeMNwfȳ|$ ]kP9ħ:㸩ۻm,*9k(Y ]13=}>n(k͏9|O>kp~J/K1Ƭ!C2a8 *cc K41 8J8M’hPDd 5Pj_wu&]TJ%zr B} oLY 5o g54 (]z`Ti%RမjܚU${srLm;X:RN2InO6HhHMFxH1l]nm71ga88 2G:NbʁLn%I]AٜM)+XiY\hHk)2Yl Cu͝)zl !  a%'BTAC&C&wLK>8 +z2L;hh[C;ꋞ-I#:wwnzөu\ Eq18Vцrw""J <.`Oo7 //ԍO$&6/nێUM˧)MO+(d:BNx iM*RF KgK5 6e^GOw V{h'.5yTGu0L\MКgk&szK= 0̘nP犗n]fFC׋?M/|ۂW=OT϶}x:m@S1óH:oEg{[0FMOp]T0rxg禄I˷0p"+3W=b,pbX/皈Ƀ bD ,A0$w# DMsLEX҆.p kأt.łF2$A/;EgkaYse K'iӜ%| EԻFJ`Ivpa)L; KutsRc\DW {-fU<,X R:C%cXM:9i FB0 h ل"(3 A$ RR w6&FE!Y43:0 FTiDL.fYȹ&75&h((7o\] ]fJw_2@Lɐݴ50wõiYBN.hؤ٘KcBt/b]=iuUxPg>g)9. 38̼oyK y=yK- [ĸvxw\B-@YL-墢P4>'E4D*ǵpZd!@E2)D_v-ZƸDm!QB<=Lp0$Fy5RS'n5LC>(bgotԦ)qҧxn6kMw(.`N%pq ZZ1&אFZӸ%lhVze: 'CC^CFuq愨sN*J$%8FoHCCv2H~$w%-c*֪cQG)H!]$&4}>JTwBfsv)T@VWNu# ATۓQF^ݬtg0Gvv^)~:2 @7% D )aZ $ E,3)p ҳvt&uz~XDC쥛3 Li>DCrh"Ljr7JCBE?ˡ&LS+mRtfKaE[Zb֐M]LIHA@`L l`>QOa 9+юP)@Q&:t-15S)CW'|Z (HaCæS,) K)tATTT4$pYf`*lh1 ie,J,H2r*0opDh:o;8b6jNxU &v`FBZQd[)e!K9W3Bog5 >Shiͭq?v\ŗFF҂ '1SPjJf 3!-\y@> 6Du.7`іlli^|~? i9nI냧 DX &ҭ:S#dKll1z@\)а,*eܽY~fz3|cMpCY] \z OA禁<DYe{JaD7]z'@ '?k:wM>"$IhRy_dք: ׅPh=O$Rp:ʀb)B(I$Z"F H0  Zj$ ()fC"!1K *D**D`0P+$RȍsiaXubK!FYII(A"d|$w/nNv$AR{|R'_2gZ;&Ӕx0pb# 7yX? ,Mb7MF`Q-qeJOd+6T$C5uL" fQ  Xehm *q r I+#HևQsv fNM)d)j3(I-TI2*m 4SFBAW Mm$J&$((")bJQ|}xSI m% *R)S$(T@SH RH*PR@,LiBpYNA3P? vƇkϾьw{2iwÐ= y;(M Qs)֩SB(jHf"1$0NPǛaӫ07dSfhM![rd7]R7|1D TtX9>"{C2R $DPS)>uƇADJ@0@LIUT/<|P=x93@uۖbEVR>وVu.[!ԃ"Zy}1R*GH @L12̹T$ Z.0TJZJVA0rLYN@Mȃ !jf2F\b12SfI),D:ڈIrك A p!RՙEŀhPb,`2T%ɆLh(.7,rReqZ*.-*e IUXUTN)kH 24L&Fc R ZBP!F%KYz\ªF!PZD۫30#PDD`LhoQP(iIRZ՞;ӡ|\5'nz:dbF ) ,66@ L Fǃ۞mZ}/[̳1 ^Ч o ii6/oYGx;6p8dN/Ó/}ǏP^CnXBT""Z)CgaT @(T((fY\D\  hB>@1BBiEBda!X) S_,4FsƇpwpi,G33*bKX\J:k ֆdEV6h7d\8pM,b[1R"`el$ }~Ʀr ܱ#@?g[S4'#KCWS[\C{gb MSQ (Hd 1!ԮдdBSCNNH2Dhu}ͱ_|7ѧyNꁿ F*irqȆ>=SɁ4x||R-KG +)(E r*GOE%( aBHPRUd Kl=]C^16j0_-Zdq_}?2BFTB0(s_.l옾mۼ{17ͥFǣ! `#kXhѝ0iJiAG% } TnI:{:$r8JU蠾i,?UbFy}>eeן\5j@FN!h<bHHx(]I"+Q9lr '*ЬjJGh*hyZ2~3FvXCHo!Jm#@R:Z @< e@eum!f«fOFA|z s?E|˷z\D<ͷDvi" ) *).pRiVRVITyHH xS;1,1F6*؟WfI(KPJ$&N1@C ^mTvxw.o Q6r(|-Gȏ;~~۝YM2/ƫd7bGyw3paDțlٖkFI;Wp%yWznx@Oo2+:*S,^-51}qh]kCEXR"`; (^%O6x.7&PK,LzsE]+uj1WbHD%B(LXi٦d\?Id 1mRDI ]_*uU] 1,B MHpa&0۩FEF>]fݰou)eB)L!GhJA\,I,Z00:CU2QXi`J-h'hJ)mh)B"tBuKHL3I|:qo)>/Ib~X匕AZOE ZC:9#NBhH0 ʕ+"Qd(!-d&1((q )r%D7,ЀB Hl`(TC @,k,M)cV)rrXK%$WX.tmBL RRQT5TB4$!R>d]^֗.6fϓ}0Aͧ/w&$:[W8=cYib^/_ʓ d 1v] %a'94cz$S-԰†6Aj040C}W5dH$K[pV:@!L3@'BfevDRPL@D&JJ8D 41EhH?{kc $o^zo[~˱WNjn(+@w_|?,ru !HWX)l/?ol|(Hn!ϳwͷ10AəcܩJ9a/,I&&ʆI[b1Cf(nwgNy4X`ՖAKO44't9 ewj6ÇqR1k);/PK JPJZ$"w"*9K+b !S UDYeUB0[,ZXi(T*C dc*BB # AB AB[+gdEԳlb`%"%&0P֌CԄ!Q@EPPaK/"U !VI ޭ7f:/"tSwL\5_]_γ}3tyGZ\ZN!ݼHh&f ~Woevk:T, ֵB Dt0D! &O@PL)[LB¼3-S J}dn2rxD d 2)F߫*1ׁmmã^v `.r"!QPq53fk]%xS4h0&:hdLęC$-)dwd+mJYWnh7+("HW3eY!QPjI"pJaP-I1sV(UT|G/ógY;1(Xw%\R̴YRx+E QEI/70ƪr1=d6hc3@s2qMCC#.ЮelTTR a\?dϳ4 nj-$dBO'?_^5>t!:_ xf@Jn0IXc,4a'cN hZ#t6!0Fʊִ R ",Ւ?~F]҂fd!?O8 H$듏=҆i*}GbDs Dةd.\搑MZt!&^">X nUw3̡4( >S4u$;Mz0F#Q9̹ hiud!*"ZbsMY aOb!2PJ (vbx9۬t ?G~ jdzJ@ `&TQ%wغP=Nݚr#؉5XΫwmGL-p3N #Yw'g+G2::&,B vpN /7k-]gu;=XwUЈK|tz0ޢG\~:; EhlY1gq=y3 hFDIђ&R .DBbSBc{aɿʙmc.F$c$ (x>nD$ 1 0Rߪ=O3 %$E1X] Q[Fpm8[s>nL5DesM60. _Q(c -+$'=?vAu;AbG/FBCϿ}?G ̤DW"{ ʐs5^Xa&61wTx d"#puR&|*QCs7 ASZpЩ@*hTE@ E7` 0UJ;v!o{z?WzkHs~!yq/: ~AEh1O63s 8Is:t5n^tB@oiF堤D?yi"0/qEG8젣?';=N;!JInvb}/_?ӧ$ i&FNc /S6ĥShE &Pn8\5O{AR0!IFbaU*H}wp#mο3>ŧq (TZ_lOr6Lju:bRY+1 w)7ǃzq3LʙOurJەy[MJZxIN>Y#FK1q۱ZWnSa50~u}!x>Y.H s[zhVAB mHKRQDJ y6.KA!.$3& KT8`M@cHᢀ1Wn{'k^DA=m̓⡨ ϸHr7Y.A-UӚu^i|4_~^Ð۔К6*{~W¬D)J_ (&E9 ~3gsۄSnK<ݙrR,Qi = W Nxe\9@kMH&fesק;45gqmJkV(0aWCEM;Amu2Cey0!nLJO`B Us"%tłgJVM1MU3zvrO jsf 0Lǔ0L9 @&[J{nQSS ->/6)+#"0S/ )9d'OM=]?͆=D>R4}"; 0cLót7/WQWQ _O;0v.sweޤLĂdrMD/g#0w#zh* ;\eJе~ BL<=g&a=b1I4SdL> XvfpͼE¯Cg/ypAEr$trټ@aŢcC,7\!10烁e;A &HJl ^ӳ m o*g\@|t(}6v?F|+vu- (ʺ-Nn[dToV_] _"}=~? J KB-*KHd P H+TBJ51Q4TQT- ̠P$)A-T 0EL (ЌS+SI HPРP CDUDJQD0ʲ,L*D%$-!"!ڣo׉wd@" Q%4&CAG*bU@'𾃑qt"{*S1ë8KM+A5'ehuH䚵 4Ժ"?_} HA@{o P~ıOɈ'ΆXo?Q j/?"CIO/ E^ըGLł&C$3(+P Ѓ` wKd E%hwI5֎4x!}'? ^_0OGߗB%a g|Q2Wv{<ǝǨ?LP`vF!aV7)@HBz_{ׁ Vmhl2NunrJH. 0 PX4OR(މ~u)@5p1@ٿ_2+J{dJMQ/iXZ`[idjlP%xڹf^T9!ڇ{wY1u塷ͪGӤ]dڽ o/& Púi%og?i֑ԿzWD/;Cy]$F7@*%(P ]Jj6AO1*pvwQTA*P@PRL UI SBE+KDPQUT!!DETDBī5P3 UTDEU#DLTm3xo.73Q'mRb[M{Ӄ>^DX_@z Xi{ȹwQD2҉'WCE9 (d-0pPMLWw`Hd?apUa?>6x^ /~O|W{1t-U(u<h@݀zg$? ɳt0]}rwWD}q|cc[Lw Â_wEDe- .II!-1) B (DAHXt[w:s<Ө $@Pu1F"駃a"V%qmr xʢj)@:Fd?8/47,N/!JPZKƭwaC;fn( |u(w <0~P-sFh^DHL HUe*Ry VB >uHr@碬2\R/Ewo1(p D|L92o&7P<kGkq-\^Ra<'@[BwR(GE;YղJih>X?ϝ[_}D;oiE W'˥W ?C± ȄSU5U%acHۺl BgKuK(/U-ŻP\wDŽeh[0^, XP)$Cp'(>d|B_[_]?4&d!(D4*ȡm'>x{3Qh JT ֌Z͡ LШl^()y{quRzkǻϸVQ2esFY}Gv5Bd0%XJ")̭T}g$ Qb3]di.;ExMs>? ^^aD\mzeuY<fFZu'qY)$Xƺ-/?SkC;WhCyq=W 3Z1A ߥe $9Y][~;w .dV kg[VAգb.m\PVM8hHZ]ȋ]A ~ ۴sX p(@_|X +dbc`3 Y=>yzy z$䔽[k&k~+L>nPnho nm*[ph jsNTZ;Y͟sz94/UI%W/QwZxL8@UTieb D:L!ݛ\κ<&qH. GNr?)GR'Y^lЏC߻#QO(u K>B\")kA[}vXDz%,_46~c hUc=)4V1vBzѾaͨ.! <6AL:D~"ߥ$9N:Ibh0ܪP5oXqd=LޣʈDǣ1%テ$ S\LaMN*htGS/孤)fRۇAgzڅ7,lKRcc!ܓ_^"rYڢ+0TH2 V5a#=FKQb 0{YJ!myQ'/+Ǫ. A_z:Ӵ͍*ҫl]fJd aJYq~@淩dQ=.py޻:FOJZ{UXS# C^?9M~lfަsi}{dui 4%1P.i>%LF!WPqO}O!:-aQBƾCU.ǸY2GԾZorKJQ/>:]^"P`;4m˙PH$4_2G> k>O{?O1*%%z|:/}.|M: ,g.vtRuU-sh=O-5qPEH lF/fNg2ke8wtЯWk7+QpSGݶe83Y&e8Tq;Zedx8VT4q@Yr#ۖ丢9ڐOŦHd{,`fs$ ,?$sJ< "yz܈j*IuBU^Y`/b3QP $nHR&_QW=|߿K;W۫庐I}(e\o-љ6d x2W쎔a+:THP,>j9 3h -B`N쳌+Q̸5z[檬Qt[!k*f)=ΆT8p|jxBWdIB T_ ɖФT:<}?{F t)qu "4BR|~8 / P_5$Nv`0TqߩI,ePyFahxCdLZIbFCw繈,5;#~j17"A[դV F>R'u=Sgz66Xr詻J> 1H{Fe۩>wJT/ 2!=&.v4K^>VleiM. "wYAb5+5]U=TYn4E$"Ҹ]IB ɘVpRc3sL7fLMD߹x" _n^X˝]aT;\}t,DWCF՜D$/ )\Vj!%\nHU':6 S2\[g=cjBBjRI[JG*0_-__,u>BEv;H2N 5=Ȇp*6۔tIYNmbݛqYn*_1Mvun2I5+K&]7a ZEdj m &g?jm.:LG#qڑ78Qh NJr62a~$V%!|HW9ؖ5Jr-ffb;aDU.q_.0/Q̶d)6l=v9lȏ.@p %If-zL>RɾBRs(owqz'JUxɿ3D^NQcUAVg| Gp<< <~?YnϲDk d-=N dt C1Z^FB/ȏw6~f%K5!2 wTSF/Rr;W2HiH_ȡM 䝨ϔnѸa| $^^ٖsOXWh'=쟰ǩSx3|UaGd7^^|G6ߍ{6VMwCP`\m\Uq#w>e[o/-V<x/w\yC`ֵv²qoW[`8VWOFE#I5|bz?wn4B*}K)=y$~6Z5RGΪ5֢$c)}{m6cBc̦ѰD^ "|!qKg63{?ؒ<ލjnW,\`KX9T[џCuGq^3P!R>|Hx=#sիRWURo/u!Xnׄܣ؋o9eSȡc}ƌ73*O&ldG K[ov`W {݊NxIJ삼|GѦKF魲/T]I@VuiRk/N|KTl'%.^VI? Txf&i/![8AQko]^0>׻ԒDv\F9o+f}a- ՘~ANwl* mbzƷ?Otp}Q}40O~㲡0elc&"%w/NR*V䄻Fs^L!K4M&37I5tư}c >&T|{}#}ee5!fy۸TЯ֒Tw~lbvLk;$HnݽCp3KSM# n,r/«/Y{+332QĿM3j^z(Ɂ--1< AVM Q =dRKiǃ DsА,/LlA]7A~A*&Ԇ@!]"-"=S{N*yG㳝CEC@XHEӽji_mJb7WTDytgo/%+_kX[j_zG o B\m7]:Q&M/4|Fw&ۂY,:xŵ5P n*wje籣3& Hj_gAQu+!xٱkONTh}Ka[ Ha.'LKvʭ csGoT~:v>99f~ ә:%(znL{.]yl"8|ZGUgG#= vԂ 8Eoy2;ze@IĪٷ'VE7-iwKs=,Ä1Gfyڏw0{^i$N췕o6aXdx7 iaǣiї=c:&T<'ݙ.*Y2s*Waq5Vtۮmv/KFSOѧ.F|3ȱT2rT 2ZۺmA2Wz* ,w6>~0)Hu>쪯"$&ywʃAбzhW~LH ߚk|Iŕjс֗lb[ ӅRyvid[IʹlG{:Ll4tn;D5a_{,5%|ˈ5~6.6z Gpvih-yٖϺFJeXzy:@0jXg a=uZF1'EB5)ҽU4{=""}l<鮞f%$ tZYy,6z$Ou8C"k&QW&C}k t/r/ 7MG\Fj3;/{2<͏јJznEdvwYlﲹzѬ`ɮ< pO#^b_ZCYi9p߮i/LKZmY_v᎒7l` q6{ 2%)ojJT}Yk{lryj$󐪚 ;Fa4Q֬ 1uV>Xo0ӥ gV-949t{l5-ؼbWntIFG1}_2o4tԚ;Ot0U(zđDgzjr Zf/ך؟XPN^x$"i"W^D 'kBj'}E$q=;309)[̢O2wP wRd[ Fjf῎Nv 4dD MA;tuT ֝ﶈGki+dP`7L:[_/HC 4#I>HKH .tH£Ἄw,$Rn! KkZPQ|/=RLNM"97q{b^EO)?$}Lj6˿{$F#=-d֓̕cıո[u(>Tj&ai&-vQΨ3> O.}=/\nSSL\3Tߐ Zu?) Qa{Yj0+dЫYi x4T!}r$^SDI, ZQ]%7^aweBcSrOrp˓аK`3n|Vy7h,/ rN__)k!ĻđEzh oK\23ɩ pRflϗu?- 5MjU1h :To}BQv/yZV3lעԬ~Zk53,MKQcw74)11 6#D)=ܻ|;d.%dBy M0gVR'O[7?PZq (+ nFs`Bn|'X3jRM(h6\5 nV6e%IbY]r^Ba8 Le-dK IdpTRIk2Lbj#qqc=R}|"i1ҩ" ey;n Q+.seazH [ŕrZ,@̓qy~gAsڥ- ,~1DɞuUie/S}-+[\QpS,~Vd v<0" Zj1F@$4;??Q䈭R:FEQ=?Ky;f}?MS#= hyknmgN[FF `xݭm %iFsweT꽘UEV:o^#-#oop鲭[hd"Qbf> ,`n[v{ƱGv;Zvԧ}jhӖ&H-+vWc>.}wY,;EumYp7fRs2`T՝UV~[o9 ]Z bc:fn? Ȑ&9c񧭐2p~_'<=OJSqFwpevV<)t}.Ҩt`n𮙂P3Q:o5~> ~/q%OUz_@/cT+miE&q> n̲L gp~=. Z~fѻsEde}׸Mی7C9KE#X ;]ΔS;5u%W2wܗAH#T3tv>|o`4zkɎ2epEF6g Ϡ+M@~53qc>cٝCasDHG_b}񋱞6]mgyՍ1h%dOy>.=A L;ɝ؆"3]LiQ |-|͏Ak35 8f=\ŧ"y؋_;%x GK'VMEy'lzP}A[^uR26b,ւx> ?bgḾ+c!%E%*'/.jI.&_u'F('Cz TDvjBT쟫Μnn3%Rݘ֭+T 9nT!a^uͤ)wjsDoV"Ya&Ru?s&m= ('|P+ᴸ?IbUQ*ڹd."I6_5{#JBIcq2?j.Nmg7uє.jg=+&E_sϨ-,13MmOuu t7~oVV/,jkq$ ̵ p+=62哥gsgjS@SHN)fj(XMK}I5]N xcZ"ӝyKxO&޲/#0"ˬԙ80&qE+@:W6L_L^ ǛAu"2i8yX$үaT7z?ӛȥCU3w4jNt33''\rru`xs7Ò]៳Ծc {'R5bK^X&phRuܳ9֫Jp:\; US s I+k3e0 5󦸧U#d.dkT)T[9'LxoQutҚ8kgʸtAe"4[A0)78S,zsWezZ-~$.8aM.Rig^Y2j|| CBu]ϝ3uVy]QvkVK&qRO}Sv?l;9<2Y,QS6+oP >ND>bd u7Fy˒נv/H!EvF?TMr_͉e2rSW_%mnȒw;;>)NQ|uc|r^_t:d_w_2h zmz?K0tVv\r:Xw4,|i[hOLSzp[*JYێL1./^t=!Y1=sP> CeNjuUr"]+})[:'Fwީs-C??pw8y 9&1"^ w.BBKHK~+18]՛&&+FCYgZ\|'CO–w+U=]h'&&u)TЯu_A$X<{ݫW,4 [E/O)C[z;^M{p[~\JΩ2d7gl떀Oa;l(BNSsqG1P4~|Vk(Z5Z eu7'` }U$=q-y헙]s=^k)os.[tu}?f.-,Hb W,)ch0# `vlОZem]d}7Pk?wg+{Rߟ ]owXp4}JߞynyjMzkJ Nqиp6h:rby^wLFxѝ5wj Z HZ:$rMYծGr[\iCT1T_kE lua ~tG2´ϋ.ֵ~a[j3 %vv'-!&!0pQpi6K)q*1{-CmɬDmPsHkS#Կe5_Qyf9ةdrm1ZIR{2 _n/TL1X,Ky[iOa]WSpݡ6!ypvDVЧCBhFK{_5ܶV'Դҧ/^%hY1:7h>9d{ƝGCR};Uc-CaLK.66flx+k?/) *ϭUީNY7m"0uo>]jPR-Z?_Κc9""RhoET{SC F>̞/uTO;(B)XL޾m> Q5lx39∹.>CBrZ9ܟJ]5«}g",mh?ⱷ*[\H GrOJ؅bhP=_RC˾V(Bn=c*=illҿbS_gt J{ά2ukWhbl69xxJ 1ÌRkv$TxYFJҾa{&Y5-𯻘HG#jV. R oF(T9#HKoՓ3g<~D9E8sHSJcra8濲_*+EcuuuPSsySZtQ$¼s?lDiO++Ūp|/U$ܩt> Z>7χҨKP/E+/i#JrWqPޠ3َKx 蜈f,tʲ"  W1T>ۂD:CXe1+W=4Y(&kK{7f~zlFngXT41*I)?ޯ51=$I0o6fejw&fe{'mL"uJ>w/Cr6|Xa>7[4T/@,%۰D ːg вuHA]Pbƙ:j^wrXԷ<D=s}Lg#ܝO>qlŌ~^3?OnȞ"' ˂jH6Gsr*Én"6R*y%%LWz?Gi2*n3pZ"2c\5R#r-clEGzϏgmIM!"e 㝈bV{ʮmNW 8k;2GdؓGޝ :c_Tvʮ8l"B'AID=6]X)t3X8~ܿkүIvպO K_ȭA-~|UpP'*~]5eЃY NG<^ ìae2A߽eUL4w]mlm\Xc1K~Ccp2}MSʏQP$URS)_pdꐹ Khf1MTqI)M&NNȢ^ǪS:{ֵPwuYFG[ߍC]RL-#m̤F-6j)am*bҊf|cdv h^#BP<-wk'.3፟ft/n͇6) ˃>ʻå24e&v`ۃґaŞ:ZY~kAK4|?f,Tgu_uMM>`yd6*8Tx&`yϮC1Q⪦$v @/K&JPlqWb3YRMZEjБ( |>PTSn{6_> 3k\[ƐO{@ץIajhů1,689G_.~uE^nSF=wyÈz :J}쾗Ak)࿿ۃ>nSRqe@8¥8Gt_nm-?LYqV61;5g~S*A͌|uGMzFr5{bs훘rY7,Su.f9ι  F2mh˩" oGA\܆vE !MP2M@)7~gFeII/`szZ(KhòN>Yik&!5`+u]87 ܄ _Xys}%(.N7_$jČDFٔ]_ّb~oVj~l"흘pƙO#NdfDdt8Kv+[f׷wVmY$]l~9UlsRw5_qQ4)U nTdS7f1.\%Y9I61ln0pfskf-%Ҙq>ڱ4+JF'H2 &?j V$zF^x-$HTPmYӗa̕'/CU+x$l~gZ=ANF6eG8ofް籈+F Zn.-7vc:XA%qr+ݗZV2|Y׭{\ܔ7Kqh2i8}<R$"zdyGk1563aҮD]W.ic*K-ÛCuYm{JMq:Y_T3ccF˩rR>6PnOxC$%'{S90{FgbrUiQPnĠxs|"^)~D+9*oNΧx"p׫[rx#&@4Fo!?ͰLQO:rlc+C~쌭E_S +lL^x§w1u0P11{#|uҪ轻kI=ȹZ+*# x^r I8N+Egg+-rx}q2ׁݚer;:ֱpu9V713uǞDX,nAAڰ5./h8X2{Pj#X"Vp锞7+b'?ѧo:Pck^w2e:_ 97$O T؏vkϮ?%UCU+Uzc^f 1^uPt\nG /k--G]Go^KqN'|KWӕ*~Fy*tltf.LgmVוQr:;MYܟj㨾гWgaJ,=9PWiyhDh)0:SboǗA@VIx񗵝Dzyoc:drHsZ? 5؆uc(z[nc/oW@vw:;idnLbf߹WwN7C1o: Rw[Uo#Yy(f`Wu!*֞ D$B{ud6P]'l_<1+RVJVf ^b;,$~?R m)Ve.ρzйq~S^°AރoVً7򝿝U\d%DjU*\\zZS 1XAɩ6-sԗqRapUC[Ǻkg 0yJ7Lݱw)CD@iz\hE!/$nܯXdU iZ)o/tۮ7جw`BqV{+!ͺO~f|e.ڕoaԾ_[Gh4H5[þieykilg)jBaW͓՟m2z*?*Ԡ@BzAHۮ20Zܕ:v.YiچEDNowOēb}Nij{DNź+1 ?Nc4}!"fHM`]M_躪Ը\+v@I%w:[)bpOz1`bZY>D^@;8a㪹s:1k~za"e6F+2Ϥ)gcC1]Rb *S;ehhP@BearI Jk m>+|p리A|HѶie홻RF ~6G)I[0?M7G{d$afn tG~dFgPśKS35V-j?УPGE~s#ZVgyJޏF)Ij;<߇X`%'[>bY,=GtTeP6V5힃ךy|+*^o/vj̷TETxGbp`Q{!dGbHثz U37Ӷ{hyHDS)?|TԭG-qxJs*WS=07" l~ײRۉmo6]N3nr ߗ,#*X\aqq\f?5sl' VmaьH2y ')~]IۚW;wlA=ڍaR]/1vNnѼ\H n}ʰ3E|{oЕq֙ pԐ\ 瞟d/1Ξ>m'ArW\wy _wm!хvt7}M~M,fiR ۱Bf[AQ޶ ?gţ*JSDí:5a(m b 7␉uH@Wa˓3Ϡ[yX ز[|VҿъN#:I;5mGTIע6 |߿9V S ]?i9b_N[k!̪4<ڟ}̘i7e{g:R˕ 墸\Bͽ?<´.B=&)>[|vw%#6lbk4HЬ5b0v:4Wwssdؼԭ?.]xψ]! fgLrgcKXdn걡  ,[FdR8&'Np\+<r/&7t4-EkmN|"]vĨ4fPz"s\P0Y4i;M\UH>JFg2.3qgjI Qa RbErĈAgU+]n&W H 1)Β-^8$stDD/<\*omZ4MR0$H7=uC[ lo_x?&_L] , nbrgꝅl-0؇oI(fN8WɏWؿ@Ca?O<Ėr}KvS= !qON"Pۅyoz͝6-/hOrߕn|񗨒!WŞuG8yYute/E\s;9^ԫ7%$y|i\ڪ2+9kM-ӷj%J~`)ZI[#pR\A9-I}sZ&QǺE9v\ousN7{Y=)Ť`z?JҀ5=#ʑ9xnMYҗsvg&EO*K«(gI[$=l*4fl |vDA~E"woq~0y*OZug~.W<+n|goz,¬- "gpx62q9}Cԅ7J_qh8yپgq{zw]: BMӷmUsEs`Gzvֳӟ91"Hu`_xP-qФ#YL'ٟkf96tvH_O|_3+7AW7wdw_ekxK컂(,}_\R.&>=dbSWY%9,/W+a_ͯ>e}TtWYH?͛pYT^5_h*i+V ry39xkO@MS<;MWdK u,.;DrWCPe:.?ӗo3y ߐVg.0iҬb^j- A~:6< _ +yʤ`Ռhm;=j=|f;Yz8՟_ST #A% }Q:e7ߨn#ܯo2J7v,~|p13g[72`z&y)Ϯl!qIIcc?yHq˛\OwNC7cQb j%fTPwp}ۢdx73 :4QKQ8|)4(xizW$1 o:yJd=x;ˤX_x۾ȝn+Η)jwjט~OTtvA&&m.f|TɕlEچGfDi佘>i4>ZD3c-2r 4b`ޙ?ic#B;2:6tpQ^-u[ iuQl5OC EGujDUL^K7)USXTJ^f0Q90wk#_!M <"AmEsG{ǔʓOdZ^'71LSm/T:Qk5mL{F)bR]LCbSӂI~^r\'/e7!ګfn3 +]B j*}g%=Ʊon};FL7)@_[s0s UZq& :j[{,Q:'XJˁk~sԅ?ufW)ѥEG&7hëxsSߧr{c2>d(m6$x]?gI[⸉b{pw_8t|7-#EWcpe+n [o5R31ɘ9>̢dc29I5O!%Qi_gp;h-,Ln EYUwfڢ21Jnp׆%΄_C܌'Se tfaS`[KI䟛J^//ߩ#%h"uxj_ QLm~L#X}ܚ۲(_w5Ώo&m,L(X~y6N_M/<a-I&^BԜ(=WVہGOw-0m| )*LZf%NUbF{=6"`„ƿ¢QmEnDu/Uϝ@9~)F5bb,l GϧizWU' 8_biĔs^̏Y)~B49E.%ՏUh>90bx~6&bwˤ0ҴFj͸IS]5"ѤRZyg#3Mݛ&<<|p G=[)) VRA[1iv9hB-߽ **36ɖ?2@n?ˍ"\< y4׏&z1綥 ; u5D?Xɕs}VENSOVh7P?>[ ^ILV:2D|c$T/%9Bɻ`[9(bī1_cXδfwm'oʒJ-vcI$ 1NyKWNqHmT$fWCIڞX! (. .)m)WqvLr=Gq 6 I'N+s&l#ac[Q+ka.p\" @- )P09=jS0z[>Jp_mP W@ӷ]jh:@tݝݽCVEP ΃@3 n۸zٺ+Ch8Vl@w{ B:I뮐wr)1B]v–ڧJuZMmP4Q=ptP@hSF3`:vΫAB$j:(+MDTB)e@6QRr(AT9bE0>Uab}6RBx|P`@\:nj>tV7vs^٢IFݻ}}}|y}K:'tS, meJ6=:y r-wi(<ϱW#P>oY|>qqM u/c} =&Xz+wzq3h _}D݇Ⱥ uZGk>v/ 4_xS|+Swo>V/*>{ϴ>]}yَ5[tUҘ2\{KR> N VVõoh̀ als[h0*`{ $Ml4m5SFTU] mf/YCNɝ@MӀO׷@y:]%lu|^6˰ivha'mTHS܄$h$ֶ z덫Ji6` |-VDF6n9qmk*I,|)EP{v(A!n%\n\Y<܀Pi}H-Cc V6s팃`}l(1Ŭp=ݮ7=}R]fɆ#xXwfG0K՗Xsv:$zB-P**h=neL׺AJ7 @ Ukjkk6I;-,l|[r2W%HTR[j)CUJvT1[dXTz4kj0}ۍiczc6€=TkZՍ2uъQ.w1vail m@Om|=N0 5@};:V]؈<5[1H]ٖ1@(/ G!EY4٣N.]`*屢4ɭ --fEBW^):Rk{ڪt#їn{n݊6fBH(y3M@V[W.t Vtєm4;kP_m^ 66ڻ1>]} :D[&]pjm}gwޛQPm}`Kض@Pll e6}h`(iMhP( %6 mRkёtU3cmmFڭU=uNcѮ̐U+F{:9Q]hPPT((hщF@[@T4(46BC!@(P(PJP(PRU!Ld4CC@ A h4i`2Dh@ & 4&56{ѥOiM)槩=Ozئb&B&1OS5zk[4;] 9r̦ecҹZQ>l[eEg(ceVHHHg 5c*1A*yIҼwտ`z׍"v(DN~ ơ/lnրwU /0B.K!R?!֌O€ !XZAq/}Cy8R$B8K:d㒄1*ji. 20s'cdQ!5ƕ;dr9hŹn:KTkï7yns?o#~f\EG{oY\ē&Bā *Du6g+T3hbǐ> QMmA@-SXQ9I|oMm (RxyBTBU=;hiQNɗSFq&@p1b_"E=4MN] ;Slt:zhK?ztػ){d"SyHc1P,M\݄V;1R5wdά `>:>*#-Ȩ|#l9Da'iQdGʠ8o}yrFƀ<S>S(s_@">$JÁ&'LWoPfH e@@J؊A@k)FDmqg{K}i:R @0V`3`r[U"mS&`diW;Ur5p3Ϋ"m UY Ah -d @Zf75<  Yd@c !^vBă0>!^P?bm\ʉ"߅ Te@WȅBH{Sk19`Ю)H&Eŭ҈oiXn+wIP[^e&4y S;v̀Xk"" ~E":PVW& *J=XM]xd.z&sƙˠ& ,mZ*/7&݉ӯ-+:Qf}ppkj"B 2˶ǃ_i|='/tm* ӁspS =Up2P혶2;@ZnE {QӁ}gk˧ #o[8K։:s`-S**/ FًbD3kk'VP &v=RgOY)c3M78~?u1lv4,*Nfx^.u[:-I3ƛEZ.5Qiedjqf` 7<[]W rgda NrZ WeKb (:_ .&: 5ޛ`nCbXV~?ޚܮ{Y.ZE;~_L;ego2`Wo>ds߶ *u\pQ_kW;x׽W,=mn"a[[ju\u8Ťn8F-ƃ+лzH朗S~Z${fVm=DÀU kcV)4j/kjUxm/o@˯Ff+N*i.h`n#zgwͣϮ}^㏱yN3ܩ~#mk3K6cvU}7i'w=}wvfzLպ݈Qx% Jɥ\oYu̗o^`SͩRf y5XiDtl6p}^!~dİҡhKVFr=jAUo(_>\G/v3E~atR= N%ѐW&M9̉kn.[o. X}ԌEͼpcJm>ӶHƷsUoGk8'7=ϕX',hb]5D0 QFf 䐄L/x, # ݲذUγ'o{5}k 7DI_]oaX]~W4mwl{JU7KJ`^=p0uz|'6g;; }֋_t轞roRfdyu;U‹I~[ϝĄ֪G\J§(8؏Vůl7:NDtvZ*zf?ǮҥC'^lY/iZ57Vk:K5W(ȭ0䬗LuWuT\Wh+0>Nhw[su)񜖁%\B8㺐Wj$%nd=_}),x|v+չdaoB9n$=W[[,,>ސSڽ3 Fش%T@6緐U??SW^ܠԵ;/.aY>}LAA`"D"yL',\cFB<#(Qa2  D)(̤D$B(b" d |$ʃ ͣQho<1~+ l\s~qԊ!# l&>g{Äc{ySe'oEdEX@!$F+a$  ` bEX`A**H("*!"II$F(A`$,*$$ " !$Y Ed[>JYz8CB%>}>nO}fbG[F{^Ƿ"2AH,"X !~NģtJ,(E#b,XG@RU i;SHEHb+Wl!AM*Ɉ  @ZB B"@AD!Sa" P>g0޼W!I~y-k؁  Z܌<9lPX"b{:$H ՠ-UU+2/B9?mч_V"!Y[D1 UϼRE(0XʕJYIA-TRؒ }BOs{~-40Q TYH"#CTF*Ecewt}A q-sަZ+JU#3:QLaV2I}  D`$DD``W[͇S|bP)$ A,s2TU%dEXD?QdB1b#(2 )"E*QPX ,h"ьd08Z2MPUZM P$BJ‰%d& YL_rY GsL[?s~WFD A)^=x @VǞP#өRAH"@ 0`)"E@lأS\aU<<*bv:Eޥfb#nV,#{~i&eΝ9,$]eԩ} ́^a'ww?mwa_+SӮ^XcWt} ߏiq\03VoM*p;"1dMll" > !rm 65l TO248Oōٗ?0~``.OeUrMCx3gvvŭ0-M'fL:0֏CHɥE6&o-xp $5کg]駄x@ҞMJ!GGc@%I @DjVװ, b;_DCdhOzxN)"Pb ЩA86 J6d\Ƞ`&L &}1 GSO1$Znc #WEC 4w Mt6{)< gS7_a J` )?+Wu4wƾ$LG)ItlX0hzdiPK&թP%p fmM-,Ueygmp..0'5OK*q UweF]hnBY2ԥ}T8=x};%gx; @٦A!3:o3Q< #h`~PwO;LIBT FH&0M6}kEFr`Y$y>^tnk𨡥T 10Ǵ[8]g˃!$ B3qGo;!Sz:6OC#J]ep&dG|xu#q^mׅ)$:V/x؅2d]UC_ 5| p&R^\ ND ӎ̙'%p: 6>?w)AP1Y#{ŴGABtu.@`GE\hpѳ,cٳcap||vDAA%/*yDWYXt-OY>b :8b/ZO)Km!:CrSx7g <'2CXvF ."ѿQfv9 gas[]QkU k]Yj~]2< ziq@L(rh荊q@v7OC, e'jrٖϫM2bTp2 rPڥ(:t<|P \+1)NYNl2t&V,xo+ moIe{E V|!Ւh3[j^D6^\fFXa;h5都+E:]]W]3oZ󆒔?f%oH ø:p|"Lnb nw7ݵ`6No]X]i}!#I(GBj@ߪ[+yϯjO=e1*G*N6s=ܞhZ B$Rpѕ{u+셃,OIݚQVC~zr/dn#DΫ?%K˷QƧ{.C,cN[Ʒ#wrɯ9uuࢯGh^wt-U3#)Zk-נsLU_CC5c(P;؍q2XP:T Uf A";E¼"Q7$Lڮ3)CDYqH1BT v%1 sݥ^D̂YckD~_`b hQ/D!i+_4dCWPCwC,P:=}<7ͽlף_#YJM Jya{΢ܖxyl^߽r@р;X{]kimHH eedWg`{ji.mSkDȿšn,zF@;/4GN*3zUa;/,}v+;S * uaRv+40^m_\}_ bwgw"I$"DYkY &;)HǻܻGJ1KQp[=],Koo08kߧ9r8RzXV.,M*G! +ϡQp3 ibUJTab>C_W'ߒfEdI@P*/#~B2!#jY- Xl5t.sB}N.reo؏EbCmF]92jźk s 5x^#eS wBç\&sj.bT1Me9~pk%/6srE xO;jO"?R}ܻ~}ҋ (W s<0t&(QltġHX*˵rDUR1^m?A;nY(8Y\_~*ɭgf<(wG1IiǢ}\ T*Jܽ+?Ij&8X5">t>Auk?ji@]bs / TF,6Qq:Hy5/-auֱhkeQ^*k$n+5k( _0׋dһyF˿;7gƓ{GUՂ^ m-d?*F2 &n[S=~f&m̱qӫV҈@ P*UCoE$Rf"g|wRabA\nWј C^Spi8q]06ɧ,XlzV,rU e|gUg*˭}W{Y^@:wB4-Ǒ'<)DB& U?@ >7kՂMplHڰqyET.LV2*a|0O6̮1/r\(ŏK9o^"5"nWONI35Z.ǝSK&ȮpE閩h9Q;֭Մ93bX |<h-7Z:jj *G$t5GsLKH素G!ʒEub9r^+Ӻ'ݳ~Rk@|KyH3"qZ H)D k-:s3ʝ%;"^?A՜8:TZ*1)^PЇI_|/C1M?z7ptcEj||:ρ|>޴x!$Ҋ<D)6tvhOamXOP. mMT9E9(= &{W|#OR"D;veKnruG>U jл{'S*+7-)g|> . [ś u5A_a1>u-aR{!Dz3Lys(=F$QU(b|efSʖXnq&IC֯ E`UX]"Z$2]ɄxS]UnӛFIH(L+"hjV~ER@O΄V&;)=&^O7misѲؾ;:D\PXկ1qY8 Em=Z`I+ܜ3{7QiK8HQ2FN7T`. *AU|,a1Y,UY= 18K522~GdZ.(p.507 UGLu%5q׵#*"K*ĜRMEIWPCҊ2#H-Dg{a}A9?U 6{3g0 8o^\v:KXXkZyĠ Ndm`$38Y`+߻U\\'"`2cg:gC5eZ6+$M m6%k26>s:xGU~ 5}Oq/]qhB$6lBktߟ*ww0LOLpСB"|DI @I$H+ϟDFhG$@9g s#(L4*"j8=g;O{A>W4mJc39s)JR)JS{Zֵk[{{ikZ6z-ֵ:{{ɏUo{{ffw֟Zֵֶ?e2@ ! F)_&> EOe 6㔵nѭθ1Rx9г};KР+ݞudjC]rF)3!v6mwƺiѷKJ<^GZ'q @C'Wlb=8>Q~?wM~j@?o|bq~:Frj$}؛qlmbXuDc iKDj;v(wj|^^}')vUb.gOiYW0}7BY\0XIKK Djy] `5(gTO4wE2[! E< *xw3A b{ Of"aYס\*UO =:3xƻ*d$Mە!vu~tNCնgRR:S.@/ǯiƹزTvCkCAr* ʵzPAT'!anƒ/8"Úׯ6q#T0 {o 2*J/rfźd(nhj J́Չ0sAmS/Q;f{(+&3ԨkHyhoRًWQ+EaQNT%3J]h$Tscp2$@땤 6*CV曂5GzE|b 4g=F@Aa FS/ ݿKc.UL1$Sc ,RHL|rQ7d]]2z$@@\D,Lzua,p89&_F3t@^PwNF&Iϡ M{{*< Z`ldp>5 (tns4挽1SMc=S|]tuч&URYo2'  "$KvO_`88'UyJmu;Hy_z 9hx>iOi}L:YE*ƪ+1Ae6޶:wA>$1pغXQ*72OQ``m/6:c32=c e6xxf3X1E87d3v扞oAC'T>t xa=]'ygث >h r6N܀Q@eW Q6:&ApDa5:I `/y =X@z \_;I>Eb|>gUM\ʂk2eˆwye Sڭњu#7TfaST)3ךM;%P攫zsUPZqܗs)!PiL fDW%{)iӅòL┬yNܫ+:6@$й D=I|^URv\0ѕuITRROn4{-DQ6n5KA) E) wa.إu nZT T:I2|ŧF<]iMKJ}h>p874L8 X&?P9S48L͕nd$ ZPY?I~sg?H'} .,n (}g7ˇnKaKqAnq. Є Ad,D  =6$H)D@P!ǗsN3xI^0jhvρhmip~_|r CB>p )1l0(>(( (AP$XUd*0bT *1 HtA$Vϒޙ?7n&ՄѶ S j2IpaÏ20 hlMg`͇Hpb2">~b/V՘:giԼ[ -/!}2 7N;BG]m˨yb "Ȋ'{+$ #,"*`()CGMYx֬: BErU Up`g3AhC݂U= P*|Mܮ砫魳7wngB 5:?J$Re-5'-ދn=G0Oᭀ(^yfmtc\pqUrT`` yc "d.7Kwm\ٞ#hcnLm` 8(+-<D Ɖa8!D<++a]0b4Ox A1{ lN"P"1,! a "E`;(/ Fؚ5͉Bǧ,m9>!n+UY;ʼn>z,(({bYʥuY̮U Aj#bD(*%j={\ D$Hbk((N膩@SiBvbpoAκgW쵛|[j+)/חE\J5 rwa2t8t -ԣ:Bkj]Tt'[Bl%H8餰l^Zl~TX|l>tz=chVjvt'g/+VP) UJ/(r+T-]w/Hk UsbyDᛗq=&Un)g[5pZusK^+P^KeIa2US{uƻbgqSb>Qz$dH~A#Hq}Q,?\A0De~̋! f 8 as_F&W6VKJ鼼.eqnڪ""vb$(msg**W |?^mehQP/0x#RZ\vn. Xh8FĸeT^*̂X6fƷL|_9~.U\y2h1; kHnO۴o/;wULVO746frynq5/FQV핟Ķ{~-{}FWph~i+@@vWE7Pm:y-$ ݤfodz]CkI+c+Rܜw;νe tkNڤ^mY{5PX{f3ꂴiok-:nަ6D+ci]/&-Yp׿Y{ q"BXYЬO֫LQpXMSV }`~n؛l8)+g۞2ѯP3;Xo[u9GhяM#lJZХgiWRLl_!}17]bWG]]/=!΄}'@DUPSqzxd,ؼsU>n+؋:ݯw5f//?dcy?+#G]^ڸ_ֽlcmu[w#ߚ6 /O22-X= $]vnuhD蚓gl,:"ն؈n^feK7 f^~.k;-*=o齖ICy`Tq殞gՋvU5{aewc}6q`O:u_a919UBϮnw-6iugx DǗ,ohQo;p%Vcm;zF[{a,G^kRR=rZ}zS4¶*gZ;ss:fu#%;SL.d]l*sEj*ATj@AtY Qh +P@j( QEʀ '݋QT_G[E+E TUVDW"@d@$TA@ {&TQUAAmPH"QFA""TIx7AT>4D (z8-SEKD"Ayh(DOH*>J Q ~uR"h*lLRX" _ ^ w=wzmӨw ;nx{l[mj_ Y7v߇uQ֨& EcE~om[(f~hg{H2|{<V`4}`T|A9U]atM?zz m$b7Qy,^S mylSNP])gĂӂ:n{rٍt`>R]?䄇ݵ\ɼ>/b\^m~WAX-+g^/Ǘtҿ +$fijuu]ϧbo1'bWj6_rm:W M9m}}jC;W;oGG[2=C~o5޸F^ɖzmo?+eoW=J U7%7G} a'R4\W~жl\K/] ]^]#`.sZ* .gV ~x)fG0ؽ~O'MO^bX=l&=Ϋ)CeХق!ړ6ǐBʋ<-kwmV/6kj對{CvE=k]8<׊'':(kC9^}w?nrmjK63a~ک~vԒz-ŃM8/\FA4y_oiS;9N ,O}{V]evtDžaeX,nZNG#y.zF7 4ЌkEFFv.m XO.⡅}~u{+8y77Skhgޠ~>@5vշ7Y_Fƪ3ю9V 3-]O[~86i^O 7k%vf]]Io1U $btK|WyICos=qOM(l ?ʭ[WݼV]d̓vwFQmy61FP6W8euSQGߧ^_kox,qy?#sRɫiX7l0;=amSq?|7U!M$zUh׹ M ͷ{?Ż4~l>|m۝־+w)s6H>~ӎlw_!!?3+bͰ`eɺ y5`9JIߔ1 X%mgs6KN71O|G]Ӄ]7 r!*W| Jlh&[UAۃA:GZӢ]~>Mqףn v>ץG j=O'`9t3agцI;LlqԳ-enLeW l#ha!U+Q~~J><ν5ӷ̸׮XWu^yc^Boю-KEE,B ȖXH0bϪdJW&Pό2} )l>jo-g7;u R0'v$ jY4/R}5ni\D!@I$ |H7 6ti< a3+4YZ74fȰj+YgK딏sP545-]m5Ӵ~waѫp^{^1x__{n/^iW =cXVeԺ6ܹ49b>V 6]Ku>RbvF5ԖVbcq/kϰ0ӧ&IiVàf;%qB/5pySrL s8@=]TZkVqggP'z&=tY;|@E>+){7VmnAۯ>D;~l `e[Vàዯr}{e~=ۃy>^'FY7ZZ3R&&E;N'chਭC4W&'f}|*Bzws-r[!3Nm-7?3Ѕ1K>$Ҫ}l[?L3~.M뿩n8G98'J &Qñ_ K_t yd`lW$Jx^uԒpx:8671j퓳|mӘʫlˌ* v/sbSXv^P~k]<u.YtւU- R.\*eBuW"?#QLŠa^S 3XM)#פ6V8{G|& /;4J֟0 (2K1< k QDZ!$XK}t~Cs7hKpHDm?3'xMzڷOyBgC@dh684s3E/+j@MKVӜ*YgUU^u'9^kFWֵQ7\W<1|܈B ݊~]GMVlm1wC_xˢ5U^iLZ_zGT..S֧9ާz_o[}W=uW|j˃SR>{mpeq:w&),u<]>Ry6mcLq8 gscww't6\p=SyP<kǼ0My]=f9s/˥osE+ EV3zիXTLէXTj+W+Z֢Wo{e~[ys1<^|h" HL8wԭO`B{am?.YHg:XH`JaCy\u=Jǰm:1f(Jnw^߿ F! } o'ٍf1Qh$&)Ec$qV2 tٕilӕTpL3{e|WSP\sx8wk9[l Qo?<^ kG[4rpIs߿(#լ+:sjhpZ9((Wct_1W>g4z Mh^D&޽*I$v!&˖ev򤮤UAx?7fA(bAͿx gGKTCW;6kzHβ };e-7]I>5Wa# /s<hc?+VB5"Ly 6olPPST"F">?:E9Kka5+-24drDԻ[([ {I+8"W5U// 8T|+&^ۊJ]+K0`5cZJ)r c|Hhp4EXarbGGfJN{{Zw.Po9-=K f5lƽ5/XD$UWoHh}<%kʧ7*`e< ̫(öp,U̜(M3!C8w\ ki \i8JϤ'i-غ}%ѱx*PsZ+`uTNv@N#l1\4k<\V>qDz} iûLiԏ-d섻iV<`Ips-  BL_.|,&tҝӟ*\/P%e_ /Q#\.M6m~aA(~(Ll&xٿV[&HGT>w8 j ǔ"t@m{3)fY]ʊQX`[yޝ:A ݿOD+9^3}N1IIj9Hyoh iCkMi29pàNajT$> >G@HZoa"ZV5F4ޞY9B.  U0ٍ# ew2[v D!N ')!dOt{ ' +[guub#ܭ׀G@4;.nѺLtyYno,ri}+^PW@fx\D7ak'܋V/XrԕìagT-.'l,I43@Ji.!٤jt $(fH3zO+_nDrQ㎼ofw(? |Gw9&Gw!(E wY,j\I@@tdɯ9L*w=ƒRܶ[T<'Rh9THsl&5:;:jQ$'񑛢(t@ܽT*k Yqj؈FEpr uRch}X`YLY@dʒl7ZCčq62m<3ieqUF!VڳD_+YP C:4P V+0!1x@׸ (y_ˬw/&&=q$jG܏ i#26ΥZևiVb;Gqu#vInWNo椀Hh(PP"Ăa'(NDa4@jÙA1%Q:?zEzp< *7ۏ?*^`L}12''$Tt W I@q5ζA+ð2 8𓞏<,ks<|7)IMgK1wfnm"4(Ch0DF1XADjdZ 2='i4hHKP;R9AI嬙 z |=ULj\=C ()7\1ϩ\n]`okWz7jN eˍ_U.~$Ưccd N=KcǖP?Rx>eRnwFBϨI Im:zIJ U}|9H |:oOFϖ)&Gv,߶l+ǣ38C2WF+PnNΰ[7 vc8~!{n1~`aa~Ch^T66 lL-f} Rڀ7A92YxjzYBGiD\qtM "'$Jv"]} $Qw3Tj]@1I&Pl+~&϶VDmI_q1| *r"Q /'/pX눫D|fad/ʘwKTKpW埭5Х25b<ǎc,Iug:Hn]o|y {zo,+%1 FԐ=`v<!=S!d& jFwpH/P>#g4xBi(*a3o+wM/v[g^yS]l1N7",eΞ eNBM9sY =;% DE@[> I"PbLQ+APISÄ/ډbn &ݯHjGsT}CQ\ 42fO!ZOzP`BEc0>t<4r4lKiǏD̦MH\BqC޼1}s^/G &q=|G1..dEўYz"avkv\>4dBweHa*uYE?퇱f6Vr!QчD (R1_=e5vܝy%HdOi|6l^};zǒThO  q` 0GѯӈYcjhWT`IfkZ¦&ci8zdb>G*΄ Sɚ$ٳdP2jP.:F@& ݪ#``(s:C$arȑZ8[xq`|$({aG3=@`0} /P(op5+ZGw4>u ̒&U+ 8v8sh"lt^)Fo^2BJtm-&mpi+8ÕZ\t!(v2vX&]m_G;pzC8=]xFF!ʢX~^>ݺeuj)$KֹhZPFyiIM Z<tEhSNY\P^8g.q{9 :$,͓&</  `vgћk Ȍlum=fN|„iqpxLTP 9)($fATPf(F5fTxs06)=>wyNKLpRFp wv÷vf5\f2꘣ -v-|X@(o@~8B(#c޲ɖk*#y#h򣭉q݅_L%310Gcîj^kQ **ePG:.] D@E$[|߰2#t3/s<S>32hh! J}Sff9P^>YK|ܛ1;kb&~J~`55!Ujtrh!h]}F.ٗM G( ,mݲYvHx8r9Nq ~È)ϰ^FhZաXM&#;y)uV;{ZO .ܷv]]yQHh➹ݘpO\YC}aaJ%"!J@DIٞD(ceA ?O䓏J.`@on局NCCuپ/+ϰOaݚ V3nb HA)Гzu<ǻ򞈢{$A")@D(%("" H"RD)DH f<|])a b>A@8VUGQ>A0H"DHAD`D'R%A Q(էxPyr@!YTSA 6mΤn%Iw IAT,A$%-.8ba}2 7 I $PXR`,E1EDU( db,#"Pd BA$$!C͍N>X1|T)JYEkdo/?s]}DPve$Kp1 B_:!彯] 1Dɱ_ZŒ=W2 @0ۻ5vR[p]J҇]Ӑ7 "D8-G>;>ž'|>A h)@"&0@`Ok )gtO6zzF \4=#`P7{~aTL "TjxJ$y +aĺh9lTui;SLE/\`5]+ 28pVn: ɲ1 1&h`zR =y0 5Ǝ` 9 F^5 r9`NcBQ $ !D+!~>uaoj|0¤zNDI$Pn ;ʻ^6:=~ _tj[xoRg2Xd 6F wuia}k%)vQ"? Y!Gofl_u0v>\C##^=WW5Jϥ!)mѧKzh/HaƧ@JK]a$ Jn,ͪ&٧O{𔏣oU:+E< W3pV,R^˻vreTS8\OxdwbVGQ;"'Eksl %Uq.ȁ;ͺCAB,p}];r;qI9 p8xQF5a-rd\ux7)AP'~įJ =76x^yxmʊU<נ~gכ87p '*rzy2o{Ii'Ϊ;+ƩwΟGOQyʸNQU435WQDz"/T+ʘlRm;( k[Sʙz4#O/&kT_|jJ'QRxKΣO5X9j椨EdDuj2rfj5TW ڔ^&RԐR+w{*|5aIixzɼЭ-azɕ$j*|#,:LjDbE-TcFV4LLʜɫ$%-V^1YYzѬZFbxKjQ/Z-c*URJbfRP<**TV#StMu4ɒ բ.OPM*3Ru&_l~9TG^w3:(G {}aљŽIt'r!yT{PDNf`̤۫;/OT4KY/Ny_pR^7_۾<x,Bv`jAa]X0vT1^aԞ̼In!JuR$9 [py.rcÖ%۴`\qkPLME/Pz{Ԏܟ:44Pk`D4/A'H쥸Ny"φ3; \B۳h_F-Uuօ(EUUUUUݪ*[!f޾*Sn4+RTb+[M06tUU;&[m_*UPEV ]kJNqs%%9|n*vgȦ݋xC42R-mWeT0ɐdg=Ykw$pyR1 1w!7Eʍv!M5KZWREni)=+%rk `<suLfMxҪI?<֩lU!9$Fpo&Q30m/^.fZ=Z߭nɢ3-f[iVo핬[]Sŋե EYUW)(xƍJwy׵߳xCy8*QUu2LpaH3eDL[/ubBS<.8 <9z[^1c Ө"#]搁@h_P@[X㺃|P4l~W_y2  &xf!D~>3ܺ7y|:ӽh:8r4h i. XKej Oغ((AH0d@3$Fأ ymz ^%>QndĀ J$t:=4;;@}~|@=Jaǘ>B[z`nCKrBə6|;NTP ̟Pƺ\j@2q qBXIC*Zf$=&"N Y6jPnX 4ӾFHY\5y9y{}trDjT&ǡ4_pl H(ꊅ $J0 .u:}dѹW==`'\co[u@ݻgnԨ(td)ҨU{>l?> n{P$F}MsA0U`&-?@<PJt+"Bw>mk 0*C]ެCy)VADLCYWŌOƀ&4Mz WE,7Ď#1ﰃ( mYg); s`|#0VOoC(p9;Ǯ*"~ \70,:8brKQ|'F!wP(GQ4JF5x />t!ń@ g&d\ ~5RqF{q߫ zwF0(N*/OܰZʹYG2Z/OɊM֞hy9M':NcS؂O@߀>/e1 ͏ "#JcoFn{v }[f9 r42ݝ]TUARFl,91͘WAw(DdUJVYEʊmnkP8W_=@8ᜢcD'_> ɥʺCe@5@u|8^hv,: %]n%PRRֱW_Aa9Rmg]ҹGPFx;xm{ByHGFF}tBe`h}!uO@DgߘBDŰ/ HDPB$ߟL\7Ξ~]ٔ2u^!u8%˦̐ga8rm1aQ*jAA5UEcݻ^z!Fgi|kx. 4>n0gx>Ty!"vxݪzL  M҂xF@:I>X\m l1% SX&W?<=7k>mZ#6xa}[uIb| |Vj2ܮ0P<0ɄpDd\ MM_E57(:ip˱v(ZLO_yz‚lAìx.zvqݨmH:":0$Q% 4 Ng̝'HI<ҖbnZi^+xrsOX_vM1GTE.lWGtWZΊMJ!v2h0\uC#RCp< E\aw8q!Zqâ@{z,(ς߾ ~Am|+!%@[uRKJ39vKV8:ZwwI8#׍8Xa~A_\hN)0(גK6{Chw2KS{2I`մw nVi$: O!*  +woCT:vtv}_clqqqq 0 0 0 q8888aa_}k]u#ca~a8VkZ_8c885kZ֔88a8Fz`ŭ+][[qqqqb.ciVӔUo];86{(=9Ez ?MvϠ1Z#rF'3 0N$/U6^S7M-VI* m).;-+q 2) "aDFz\DJywR!ZX][FfX5ʱ XSl& ϴrgfe94爱6W}3@tMPľ,P"N#;/M=k!z:ןJH[%R#Sa" Yھ>DgVhmM`9c}h5Egս^NuSE'9hR+[.mW J;jh1R&ջr‹w:;Y9]V.[[z?lM蟏૙  9z')i7\0DՔJN\#oJR 3GVPpH]+4HծwU!VQo6(z^|R"Ӽ}ߔHZ n%8G{\ރ|k!P=aCwaK033,wQC̡OwNf!4WNC!x`$=/-gލ9J$R qyF<“9! GPFm͝u >rm 0|v;ȇȝTёQ57_Vt 'MZY2顄ֽ P1Q&y^2E {cz$IUB/DPxJxKT,o-.w]u H*L]9 O<D ("seWTK P'hѢ)6DvG]} E܇GB8]@ob 3|aP@8P 0 f)+OJ65҄}Ceɖ|_P'n̵wv3l*OдT_l_ׄ{3{ulMKmgÊd[rEUphk]()Z1F@ 86ʢжd 4^LShGDo ñERBQ"}iqT!Q:b-P̈nE훊xhʻ" sNWe}tMɧXbQDyGB|~wDo9LV9G.Q逊sA 3h`=Co%(R Psw=ZV0eOi9&Jϋǒ4mi@qBDH (I_*<^C;Aq8 `  esTH7 AGb=?(NHLۤFd &T4LgSvm'}OnmjRwA DH}y?ngTDa:1u4vUV  ^Sko$:T#|^Nȏs=dմ0/[ 6[jD9w&R-tw! ,#qUA]Aw+F~DTF ND(!f^Pjjk0*oq6:>07B3ƽ;Ι ) 뽢601O>pWMF 8|+F˔kBBW|R~ԵoxRGdHΠ _5*;!bN&ZUyB`Q}>gurQ8C$b*%fа?dDz T tS\ɿYA0.CuߍaAxtzF9Ui!D޿2Ig%EC7SBpoMERnqeSRQKXH \m:riOEtւqr R͒R ,{VGKʑFU ;y. &z.: G/Yx /aѾQ,M=4jäU @ >1$Sh4 k q4C6Wt1h{|}$P4pqrN:^YX\a8@&¡m7MV4\m\eYjBi N|@סhB[0uC3}H2~OpttY $MТ0׎ʓYMI3zD]}{MڱݷHDGɯ'k% T5ã/5x$dՠio A NXC0ΣnL[-OPG`!{Bh ;`>L1.`/7zW!y9O#taHϧ'i,+poakjֲwcA pP ^:9y>&oLB]zZ.=ޞq (L.YX#aS㘹tvCA(;$Pn"d@0(()Awtq=TzN|xu^]TtXcpm 6\ڝ! *ng+SX|Cƿ7Znҳj%%Uu4&[03hH)})R S*C -dDtuywuN,`̀ Mx9qcW_S(7+&%ChPt#]%|="0OBrzDV,!{Gt qU='!0 0Zcb(9R|Y 8ut9eG[Bw7#UYkWu5P9QE~~i[CbQ`@pAoNzg@i[a(vױN)y,uЎo7?;z»zt9+6@G)Y"#F?!cAmdwm* '0VQ$%U!~c.+n40"1oO$C\>Tve֭U2qPGk zDT/T #{ ?3 .H "{| #7"A S=ζzrU~wQJy\H%0`(0x!KDd((@ g b\A*mdJnTG̗An'dY6{isxQWi,d]oG qEvlc=&x\p!oR5"PdA|vVn;ed6_=qIRJ).z!D6l,l3-jI,e]=޶,gK5_d=-=L'm]|hNzUfw{R c /j#+eLmio0vewf8NNdQ0Y]'0X} E@@ޮ溮@+AU &$uS lqNЮ1l`io)<4LE'T~r6**7#B od4WvW$* UU7;,X7 p hҢȽV-R$C ILo?wDb;"`9:AC)l#|>!]}ux"g!na*>N$9v|Ove?["ю=:(dl&`ju ۯ ~pu]a9yUbɛA zhc&I 1?\ES-`i7]{(:G}9a=IH4w)m(Ky4§K^IܥO֖Csvas_[LztZ<* EY=:u?qZۧ~WSW6< Ib^&.=ڛQb]Md%@A{ ݃it>AUy􈎢0>揭!AV&~ F*(ժZAYL_o`AZ5H/6܎u?q (@eǍG  Rײaxs؊w+yѿU0b]E2*\]AE{D!]Ad|tuQ8nj@Z_?oSMI[xK>#KBۺ9=3ѶdwqF齝sþ}>(ĮSRJfX UXdX%#g<&U;SGq$C`RSqJMFi dpmcPƢI N*$nZ (ʐx^:owy(j1d%us@T6 ,)֞ɗgLzfׯ3QD 'jCBCYDJ:!tn1|>bt;(:b0(]+Ѧ( "}{kDCUk=ZDoc\9R>n}"p\=@>jP$zC:B  ċ` sA5I3E+=M3,M&8\5 &' 7G޽q|uwp֐FYgg5P.(eI**']k[UcqZT`"uzG5hăPyM2fZyfQ`PgsA$֖|if]*$ | p@HCC,8¦B yhA!suKl/zp/z14dr<B#Qq.tQ2-EN[6.b\Qz~bnsǜ-l>'ƝnZC@+Ue[088b!qN#m4L=,1@{T~(J6ZQŠq]_FɶbDBnaV8G|D/ Ass@Ϯw 6t(|}H=|H[_4=-}jm̵G>VF"`4i#t<ҠM]-M# rEWI&\:٬S~79gLZ*Qj ͹6mΌkQfV zH\LoxfM:9<(v{6nqNVIHݯ r- 37 ~zw̮0ͭ$Ceņ(^#!kwmY I0EdəOvgo?og%vC ƶۄyTzO4x:s S}7 q5qJgkȣz?j8^s˅j.MXZ;t0ydT?Aȏ`M5NaXz" $n 0:D:#do~^A$VCacW6oHn{1Ô!$5G0FnoAɣOup6SÐ<{/q5 ls${ozO|<8y€cCMf\/U~YQ &ܣe YpL&{}>uMJ2A$)yCoYr/EzǷDgdݵ9%>._tHB0nczUOQ_JL(_YϦ+/ P抧[(G.cVw pj8smdw" 0䘋QX -FOEGBR8AE=v rxp wݔу CDfϜP@{ pc>tEW;`9 id@33u]Q( XgKg$Qu3Im1|@6q8 "*7F bT, px]b[k:1I`$6z_4Btl)X XgRSk^XycTԞKtmelP=m`1[I!"@ć"sgǾ4ZIfA# S{N`zt}aRuM:46waM~$Qy C yjPl IoޕJΉrus7`;҂vxn9`ɳL7K%<=b{jwzlzՁAA,U ؈$- ;@[ddvP(DgwgoetSî$ruӸ2yle,E:&M`,nkn[s7&{t NgWza.oSgsR䏽VWM pM6yГZt@j+={2FYcSB~hmHsM{ YA^`qu+q k$5- lu׼Kq;]sY:Xk$nSC؛ʃ8NIO|oOQBvpGֽSW @cs(=[yQ5;R#g_pI dFft1QX_\oZfCzЬ vpߍ,Z{6 ŽEᯟTL4y:DyKP3E@ @L!8 yի(oYXHCa p"h>S%ynЋgmAkVꏁ3di4 (c#wJ_n-ޭ` jQ$lvaǑK^)~vlhR nP1UD._< MX)t?1TH%w@'`!C:s@odXw'FMBABvJ'H0⻹*LoMkY|E|6!<BְG>#Ipm/!dk `A]a^"'cG/G6uL 3E윖׵|om?]x4CCJ(L]1IBVzWH1y2)b 11{S+k 5JYKavwX`X̃diUu3œ4YGgddt5kb(̉nwjѸG\[\C. _(ע"hxZat@A23_rt p:-5H,Fs#y+DBuEdU46/V=nYFkڸN2xMCL\6Uv=^}.Trฒ%xx-z&/n_vrKP,VI쳭=p_Q4%6L+{0z82LZi'x]6t?46NuMy3|b55YMŃNmɢ hCӘnyNwmm(bc%h),CA|٤w/nլOkOp|~ku4E'Oz^{ǫiBC#q|;8¡:$ʃAmi4E [†LsU{b.8D4pMjK<–j(Rr6#IacY f੃(XQdjYWt) [Tɧ-[#%J#,cѦ1r|TyWyT\'v:snʅPM> ^6&Sd5Lj'oCWܿ8ި䟪>n . +Qkx_;~Wh!CQ[`pm/luӝ6'<>oYiSX4&4)b덃"V2X_(kKq0PB1j{O#n'2E&MښاA.|xwzѧ؃]FƤs!P7#s D@L4Q}ژ*e2M`@c]t:"HUTEh_K(0.C|UqKճ@v chhɻ}T3H ~ftn>.SLdvIg0GC1ڔ+$ZpQF?su9iIo9 ̺V {% 4z=Ȥ.eF7],Bz e"dBb_z(zdr.>*3ytZ!\C3}gPh4:n8fwc N)O{v8;?8CG5\Y *'{^#dD['g RD_W@A>烆𞯝Ӹng'1Cq(^L2%lPfR*uoLaI%AD\eJĬVΜgDOuQ|uWv]UH+w"n'C̍jT枭iTEb|`|xݿVg^ǒ!b1Q.X&PdZUCG )r1(I@7*L (1sZF`Agn 5az}#G)e 2SY p#l34(ȶL3@Iv11<.y tx!h61e`4UEmzzaa) É8yz񹩝Cw(7L׾HXb%%NhI.V,,D5b'[KN;艝x3ϱ1s9# HLf`iܾt Gd:rWYgLi1'Y=lQEH1W58N6M<ealz/2k+̉YEۡh1g{.S R2"u Pd1JG'eL5L3..ռOȁ-h5 xt,Խ >ofD.HM\(M4q 8XDO۾ 3Mȵ'cMvD4;o@) ؠ 0Ho\}=[lqN:(w3k;d@3.i LZ+"+/X*|9Nx^KB8f2>#MĉLRs3TljAkS1o]@OHwDwVB_uѩ^^\2$L%&ۮԘx;@!'!AP@q(W#"0}y=|Ӆ tE=\.{P!l܃ǭA~ƒD E(M .?p-+ޝZksad|VcѠ68F\5#1$Fi cDьk9,YX2R rOl{G{\[e<"EćJ*@*s,ztO@p\j9C jR2 )wp4mDP9^n?cv::} 0/MHN•;< P5D~)hSXV^rHVE{hE!Ӿ -{}= 5終8'X-d6Œ3 >'^vxM(6RF Q"WL/|-7=u=8{Nn*TO>|~wg ^MTA`,=!z]L'< TTMb^Kׯ0{hch`L@L#,4<f&^{so53 +~*YtQ:;6^*ǟMgQT2TڸPQ^ dOi F!pto?8+l*MQ$ <Z! HN? 0HTP؂`!ҒcTdaA`B Aa""Nc3%so7cHkZK1#d28`#+N1ezu5@Y/KcHT0ld9b!kS Rh@*l_ (vQxi[]IG"dVMTwyA|WuNrdRx)`*\6v-%Jy :L2踨b]H.-؈=U G.M:YW05$:cz ` nB9=3IlXVBK5ue*u|յ[`pv$./S~BANApm0M+_BYIrlGP&3Ύtn]LjėM%)QB-뾽}"1? ܷ !s*$$2(P[nc)j'g}mMjp|bmu_L/X> %o 5`6maDZ{c+)Mkw9wk}ݭZ^=7plZ;1,|3[Yۯ~_64ea!îvw eE,t:x:>ϪfI6b<.J*1:MdU` [s͏Pfz * J:ױpݎk}'%ᒁoENm a>yuդkD UeeSWE2oakrpzd !H+H#}w+C%Up(f8$-nJo֡HE X% 4R+}n!4A.HS`j2kJYdcpr?6,jvƄ<6C=-Cq!XuPyzԶ{CNJe\\5>yiJka Yg|?I+1 30Վ6d9k[mKۗCd+4t)R0[(L$I*qt(단bor9= :t][VJVBT@ Kp!s>: 2~y*/5>fD੉rd:92uh&ߜt?LirBP:xy|Bv| EqUsjNv& YFHDb f:~K>6Z1"@5 3J~ݔ^" 9 Ɉr~{z<>u/X}p}ES[$Mͻ7sgdV 0VGv(p+8X~>E(/рfC}- TbAOϥa$D=D4OqOoiD'Q]x!f߰ R>oAnUCVT"C%L`O$`T P}TG#tOsjH"~ IP: aV=9-5'joD|!pbJ& 8> WW%./mOuX-wĹ|m͈ ;L0aǍX;UUN?zݥ/=0VvOӧޏ0eچv *?aze_k:JzڐQ dI168P$`fH|+ҨpEK>*'/R]B*"H' =ˠ3H'%US$ 2ނ!D%DGws<47ǯY;3ܠxyd=@G^v ѽI\WE;s) ҭ4F&}za ےGMșvӚc8}jjM^w𨂖ݎ Z0TPV)@FETE dL[(-Dfe=TPlC Vo4 ҷ sSVH<ٽX#H"*@K[52B4Z9t+&Lj̖ q (S-f*VELZX[ jn]k+e:." eQcͬcy-VI!g$hCZӢƌYcqffZt&1Y*DHT,+6%L1")"ȯK2EQQVAz[1R1o .[aV܇(VCLiEKMk *QRHQFSvZW$2YAC0(&[)R-SK2 HiZ2.lbb,SEr9̲mX# eE H2faM:)#ɧL$%ձQJΨb#GNCgIP8: )Ud*-a-={1qd'%,/Y_wr ʡW <-ovzۃt7L-u%;x@dۋ^j"͘AXB@%RXT1?f^-]U BQ0B BHX_mt6VYW﬏'"'$g_iI3>7+zo7Q|>}ߠp  |K%Ńs0[6UnxV~KOYPmV/7>d&2͕{}ɔÛcu7 nB )C3>*azGywqd3`I:?{vj)0k2* Y9R}?[L]'?/;Q]gMUR)h@Zw绠"|/,brzJ4>ldRQ|:gg!Y՘a8ugpO˵zx#ńULhD!֬| OMdXua4eB"TF gNCLD a-,)iT e_kRH[e+܈IYm%BxB ȅ Waj^!8E3=S'bX5bD%%]C*8hFbj&2.g/I XЬ!@0$BIн0Mk#Q6׽Uz^)Q;7T70AQ#0 $0&3.YإQ&ƌC_[oeE?JP:$R{Ց;5$X/PH)d?ia?n H!"2, &8"+@y. @@v;Xm)^:K H n/OA\ŋj57%{ɘ0tL`VO9QOzFls:^DKdt2oYvk*)YϽww迮5=֢go!ŇֆRKA(-N lYh.tpBVPP!m\m~'zO)gꯚ;T V+,"$b৯؜!QKY!GErktXV1=V Z熏)uUB}J]=*EÁ#¿7Wr8_0!IW0Rke|a:bq@{U$v[ot!&m jn/a}íڐV'd]?g"a s'T.h_.A?A Z(\lZ[' Hd3*pJ=C :;| <@!J֡Jq-u/`t/s3b #$GwvhI)תA lA1lX.;0bPlpwyFA[Wq\4)Y|f*߼V dM˒fjN[TNYYk)W? g?g&a 5\Cai!k;*wWŷ};x} ҹL Hm}ܟ!m!\ 4$~T,bd/?ȄSοu87߱ FE5 $2LZ1harp9U%0l@Ɵdq6k:.Û'gHy~2v)&Ƃ1q#/ϱ^ Cj>pɸ^|?v [= reI=gǕ0Y#%tu/3?5#ُP xP7 "=l(] ]dPUp &X"CNu78 7@Ҥ9M{̐X|B*z,1E[rmpU E4SRm똒uu#ߐLΈ1%犼a&`PWٝy_oԭ-ZeZIx/0Աb)®&\a'yi-!#{* &um0K'nm4J$ &_s@ug~-Dm{t% `ʼnZvoujpo&H*pߎzGf`p?b6rI$Q~ȡ$v5I0i5Z_Ǩ o+w|fk_j$F\claCȵnyjv3c@c0~f"/6Df6} Vkk|ol:jtƋ3Wj>܆9&DHЩDOT_Q[G|x52E3镯ʉذ>ȱYX/K B) aEF‡a\ox#0L ,lwMʈf=2|k 㻃p`QB:& >v:&,†sFV,պP;R ]mޅ"c &=7-/?dCa[FT_遟Qs*W|[dhdt]ߍP=h3} ˭S,KދMWh6%/\4 d0R ڂFf+%'޾;Dj?.;%ݒ\po0'=Uy@|y^&}?WZ_m&%_DKy-jL ZbP(Iv7:Y_1 09JvxM$xT0P;JC䒐!C"UA%=#_JD*g*E1TJ] 10N9f9F3Y`ȼ1!$4%d(D"!:4LQ%-DgIXdҷnm d9`kCLNđHP3JČ@ugB@~P_Aܑks͠$ӑTb\XFz]e\V4@_(}t;+7* }*,"%6YH>mh֙aҭI?M)2ά_JItDE\p6-z+b+"O\_,ro~ggT_E|J~O66X\Z1 Հ֗YBEĹdx "Xk ƔL3S:nuX>o ;:s\n(n:mwr!j4)-R1̕k(KZ]vWءሸOQ%J/ך_-JhLM2')s~؂?"{ #q1y=S V36ǜXԘ{l̉v hd\ #21GUD [x9ܯg6ԈΦfC٤ W.+|G1R:H!U w{>HǣVe+6`ݙ^.(w^)zgebWM)[횃&1:^]eñW7{-D dKESYV S S fF }'PHQ`0P2Of{86.% *Vp +ThOr}XqSpt$E⎀)P]DFS򽞎_|!^ɰ@:LNmպgyjm6ޅf'v=lw4$(j&o8'DG^St.v__ٍy|&6rx7q.]zpP-pPCBAtoD%!,TVLfi6ѿn -hͅ;;]^nJ]Gsퟝ״:(GG!gkiYmAu`^/Y'r%XXǎ͖' [ڃPI$i< X?HI=^/u PN w~ 1?T-UUV5.qCmwpoCAq9P.@Ci~vҟT,d(2 EA$6z5 C硈 Sg!F]n iKom#e z "m*TZ ĵBY[0|}4Bb&9!# l!! /QJH}S.@`LQvl[<쬵(` ?!=wo 5,/I*x"^(`- X J[, Ȱ,aeO?au<4țBXeSQ "&DFx(κu ;nІD|co?hqY]Q]!>Fw;x1…]YSsI |t7GAR/ݔB "$h-@E$-@ZpFtÆo)?FD) `U@Py4??vg4*\ʹBvl jtps&P*0mܖ(mBE5̀0)dٲ T!T$ Ov!" EIĉxHG62x(^1=N99ߎsz: ,X_R6n"_p Lͅ&)&((}F 'a[PGgP\h@A:i$5WYB:MIjf`7w&fd4N:퍍LY5YsK$GStOs->gT+XUQEJ:#*Bj0EsE@|ULM'1G}`=?|. LqZJ'5K@Bu]iTJ} >0 Z0ՅY]wY+.dgQ.:%%&Z1[mҼwN5A:5>[{](U${5.fx} [=sck虙)&5bFRݻ<ω ;&trxk8w0>iھwn5MN:* j/g5 bg[\!x(DbH9^x$D01+gRzt\m0E 7gb\!&Sȩt;3JU@TВkhF׉zue/vɮOq?(gAQ9 *|HK|~9 WOvcғXU34S6W;QQ[8@"ݰg7 c=/.bl !}F(!m˞ -HP7"/r}i1h S1C! ȈlڐcNҜP]( ,*B9 |uTDplᄃ+Yj ֒\tέCmZe0T558֪Ry`;Ktu ;퀕'-3v\ҵ#{Nʷ/.!J@A'/|8tlwmE*'*9ёqUY*$v8!pkLkzg5bLIVj6;gj wẐ`΋DgpP'ґ٪ߎ7[9s\z-9(x\nk0 : s tki2AKB*sq1Ƶ&ob ٖ53W1$F%LJz8AlKnSVVi w-0ZsO.YUY؛K`<}Ϊ$t!g696NCsh^׫7"UncFnV'7d$[ڴ5 "P5J%‚qI$qv92dЀ2iBʏK:e|:J8D>mm۲%O!}r}Iҹ/[gkHPԟo[z`b!몌<6tq1`LKɹ &D?<BBH(fCZ.DꇖqOHyyے/^K_!.D4$ }VK%&`.P̨*}[&'?圣H@P 8":;,Mn peSc4@6A^W-3I+OwFx5+AP+hgVӵ (3Gp^\X%q ϛkת0t6UX5dmD E0Mϸ7K>Wv#JYrs;vL4.O:Cͫt]~wNEY hm' Hbwxx/.* cMo" 0Ys{H2]Bb2=+T]+}0n@ 20ID$^w2'ŇO코{ݪN3hemN$1Ȳ2 Tg8 V ͷmz{?W$9BJ%"DI JR "D)($ =/ Lp)1r\:) sXa }827\5Q5_M!hfC~`Gc2oG pzoBݗKx!Ɛr/xn?[Z s?F_ߠljksmBRt0!'_$j6J LZR1ȀKsVn5t%`Fh"Hvx=sU@X*aF1d@7uw3^0םqH%uM(qgnXk. v8lQ@m cTo_qWco@V@]cAr'!3Zf-1)<￰}U? W.<.n7!VfX u03BE75q4߂֫ V@ eo0 cSύeXFh1y%)N' > ),"y0sXwu#㪚|x^)FF7WaZ܃y)ULAy/Pbnܙ_~V䪠W1UUU[k'[*ȪKUdΝ5UUEUdu(kJL)c4!P $BPA @"d}gFY Dj'gKVwgt tatqd*9 \e`!/^y;.2·>Ճ)% ᓂƾi:qn Q`YXdgI:E*|X07aGÿDCD$8!NPcwijj}ѿ'pqќl .HݸUST<;~/ 66u;MɄҎBARHR0Ύ;g^@0S$k )jV*0dGO(SŊV!%PbKWR%BeޑaȀAA33!l4Όnk&Mm^cИ vP6TE *7`¯@|Z¬>f~`V3-@dxCW貝8CDʈ5:u7`{O>a zR$""i!(HLd( #!D[>5>yIf`"x/hnw[Wv!Iռ×|:@d;yww~>o:*jtx[}m;%T]QTCl*Bn>~\~x}+Uuڳgjx"/z°wr[`ڕ-UViy;:`1Ooz@ 0QP BvXnrj I9UBʂ'1HrnzT53ucBqkV( B $+m쿩'!@:P/rAWHMR\ (tp&a0ܱ $ 'LeὤyZڈs"c30E1+ + P%\}غJ/whıCnۀ E*kw\`*sZ;S3x݅ 3yOwS~Nt8ˠ005 Yu-8ۚjw!wfA&}>M'Q OQ#nW]~,nbjuDkJpBLs(nH#A3t1 ?Au]Xfl|y {L$'x*T' һG4/XW Mv`ln+{  ~y>ehQ03LE{AJnA꒳Be$]K>_4.D!= ;VkɒT| 93Gxfy}ݓ"cMLUS#Zux'=w\_Xj:IpL_,=T0j I gܘ!vٟ>n_+RSp:|aoƂtL0M^mWrDJ}X6~g?fI :T}}$)$K,3&BSM{5d# 1t5cG[Ǘͷ (M\Y65i͝*&S_wTn_wԒjD JҚ (4IR,׾Cluomvwj%U/^mf^_as̑`O}3^zy?5)X\mclrʃ"z_J8 !"%`%N;! D ?r=ل.~s. de7sSݚtj&Qo{-f7Mij597 8jڙrÙ]0sdȇt&^-~$* [0F#?ߓ34%I{{NqJ&8DnݶlcC`ˬC+|7 -AGaRt({NA8BMV-C)ؽlnXƓw@i&Ipo)q[GcvQC!]_y{}p:wo%e Er+~toZX6PG`G<ékyr$Y;q @*eSM4r޹Z'`gr aFd:H8WwMKT9st-޸jw!UC9+^aGBt:H?Li; @Ɛ38QNl7y]l `0gd_CC_%4pq7o8^۳d ILÏ3A6 }9-5b̾:`HnS/ID#~x&˾{ֿmJ'o@*! :a=T%4Fi[0,l4燷Y+队)o2hV9hLiC-#ʕ4Φڛf{&6Ѕ-GNn($E{VP> vcH2Mn5_{C|tpyCQfDLc5,\7h qc5:ÄP.8تYN93nD@A_4A&BkN}8Z-TIi@D"""""! Ry>8QMc۠/2vV <5*ȹyıec d;im`cѪ]!,?}vNX8@dggBd&Iǧ;GT_K{d08RBLO}{Aڙ42;a 5~7,蘓mIqP92WO~פL^mL.$yGF!0%R6B{y+ͽXDuqH%7璼=lm;1DŽ;ٵp\xGh[?kA77(իX (a a 0\lP9:f)t? ``[?@ B ]Z`,imHf_yM_]uCNFF0ayhq{FT >Í4{w!@ Q~a2]U9$S!q@E W2 Mt@@k/LeEDA2 j/^һm?=vyOکCQ}\7n:|v[{CtmǟZ2J`' DJ`"QT4?={)nZg$4PCE s櫐*_'o?~@}P,rX:iXbժ&a˸g@(ъywoU/؝ޛH-ó c,V2S|VfP`V- Ljif" j" N KN':i gDUqMin&_??Ǐ}ߟ@+"x5'Fs2 'KL+iBk++]p]N-E6A5"kWT/8ͨ*kiYOe\ YYׅjã ƞ?<(Q[$$0wu4M<+Shn&=rǑ2~fϖHew@C 0ury0%CH}bV2}dqht.֢KPdy_Wk'@Y'QM}3n{XWbjU֢d.7's|/C3ٝDvx#L  5tw];qvB\^s{r}Kt[nVj pY[j>!a D!HYO}}BNF9ttx/d(/Xk@`\aQY=f&;E[fuǐt DA?~X HOrslu=0!D JRDJQ %(!DH"HBDJAQADI PDDGg ` } 48WQ}T}9#i!n5j F }[9XK&+$"i'B8r]%s?~chrp4ݛ/W[}:9Fh' 1rFJhߕU-JLuU% ZX\,1"]ILK1ȞGnYh WG ߇!Ka 5&ۛfBsѵTKV6?72lA0PA0maVA$Dr0 ۅw&Wvܞ([!jWD̶eDc@bJdr\ .QcMmoV۠lݾܛbYY4 ؚ$4 @:'\pӕ1/e۷m H@* B5ĕ_7ЏCorrOy>/ଂN!`@>p%~j?(he79V$G2L$$"yh‰:Յ5W)\5!kK^jZ |ج !p5Afpk [;:ΣeIfNg l E/D Ze<#S !x2lIӎXStEǙ33􇳴hOx#$Z} 3?bUM],=-[T vhA0*L*RBj%nͧS DӍBQEb-@PpBb\=[\dV\"@ w`WLwM5Imjk>ӹơ\{&r &mgjlҥrg|= ('}7'~3xnӇi6MIr00E2S 1Px b'+ _5e_ʴV\R5'@hjIC%r**P_ h6eVD݀eeq9d+/莊Ɓ)4w`a*:/kw-u Nkb_(Q{W1O09@6]8Ejva\I&f`8Ziʽ[8uF\ti;e!m['K:kBn4? Gre1qu=49 B葀&aafY04| &<19/=C(~8$F \,xE Ys&w6rgvÞA!<j ݘa=& @QH5z4_h=9{E{Z\fhuç!e1G`XU'l}LNXodlFiߕ\Axv1:\#hp͎O\JA`u=#MŻs/$x`R϶qu,.Vk\n#P΄.AŠfܑ>Zes~f !!B&|I>K7#"D5pItC3 {Oj>[yix~u! =g]tj 5"wN+? Dߝhn02)T7P &&A7".KuV=}fkpYaa&[+۝JZ#gܢ$CMc+!]\3 PC+=f}}x>-\lu;w.NM.Z*ޛ}s~57 W:L2 ۃ0UM4͹*Rޭ% 'WG13;VkyA F-COiwoЮi77io2pVF䭭[QRVi]EouKLbKIӡѸNQަce-c1kt+zp TE+aq)&H W\n!Y~Riz[ayVեpr3գ)y)SjE]32l9@3hm|wP$ҿmwzX9*5p|W@Ӓ YHû2]AKD&/1݆ 88pC eI42\ \fꐎ:PQXdٕ3[rCbqA' 9 88J^:W=l2C9mIݳxPaE5U% !x."]EXfg3[nͼ[ 3kmC .k*㢿 xKJ̈́@r;#C9p DŮyP&LNO`G|1 ۰uNeM ֚\H_[7ĝ """"!!!B?97ĒػR0d$j5(ΘۇXs?F68 x͝b̃ &m3{[`$%;\j0OK'2=*dIVex ,IKPPMtԆ%=?3:  -s >%u/Kwarmp8ȳ:cN<jَLwʙcUw0+)$8 !gd@?xC ZHitkKo9ոj #(XD؈e#>h!'>|B2s2k @nY&~!93[ mwIl$!:ߖ歹ZI t3[!4,d-Kwjޑ'i13`6ў~X5Çp?vA{r3}Xj[ZAȋ&*5;ZRkUV$EK@X.Av%򍅛9<$n?G7s\ ! _Y/}_6=mxo:Y)Sb31 EA:NBzFI̜"Ofd( Ib"^OOÕwP89`wLp[0QѣueH 02a왁$j_+qXVC+hyi+&%a5.ƤŇ ,Dw]+5H1njG~c&#%~xl`ǃ%VBu\E,eڄ8 {q~Ymu,&"ImOC^;mm22"ShiZ}D`\v|8ak'/Ӄ7?U [B^my/cje0@OKůB:RgێN a9cD5ʖj3|N){8E1%\ a%MIU&E@!Oj$NrB$1` BIfł0v︆C[C>G]UYBJȺ0% l)ϛѣ/caKPtziP^E>FCsllj&&fZ`aa NÂDH[N83Sv_ӂkmB˲+~S6ք2,/Lk~J$xDaTz\l*,QjaaH&d}Wv2߃dp$T*,y9-}{rgjlhjn˓Ózr~t'V2Ʒo'>-&B%qBI5EMr3ep~Vfn8o_ ృ/A b-+Fi@͗>a¸LOzdt֞rnݖhB魂BcwRTs8>rly&POujK V_E5Z~]<1{Β` ɪv;L_XvS;ucqL>k]AH h 8TCSn3a!/shVѳj Q/r:5ӍqedrB$gsE9'jI8? `m˦$\HM\H@k ~q:yv $S" (&' 8 '@MPB `Ԅm,;~:҂]VQ. bҷ඙rޖZwPd4QvL^jN\ saO AwZPI{l{enߴ~c?Nyhka`dwp|]~ >H[1/e9o*kĶFX8|+'mpokuMƏȭOK٥}DZ8k] j"8!ÇqOp_n^P%JI GZi{~9<kkD1տ^=Ƅ1=Yat!t/ A!D+lBfQA`z;:-bQx[M*iuѼcM0КWP&+=A)Kޛ@`aq6q1u\;i!ag~9TvyRj3^pJU(Hb+Wi⳩T= uґ6-?SvFmN 3wG!LF\& f3UUPU(Q*kukV0Lwxx7cNֽmS/v`\㖋aW%b0DDh$ > ppM6$$0`/qU"0 "ܛ0ThAXTj!`f DDNAd H4Hk1$00"YXD0@)* f b$Ip@ʢL- ^. r)>j"EeTܔ5zA<^r1](Dwz(,>-"  D#&5MffEOm+q+c=fUxY{M~|z)X'dؓvX׹aA jdw*٭:3Y%yBd tg"kB ,?r>b+h:mQ#Y(v]_&`2?䎀 O=Ծ }j|1O9V胕|kvLJUHo n;M' a gȼތ`mQArك}Y7?*2#{HG]k32~Աۭ[kܧҩ$2?sӻ 6IuYZ j+bt\Z_I7`3v:@33&W¿?1OA H~_zs,\>j6 dAf@C }pN |,0)^   5U:5@_`H ӔG1~&f&Y͇re0pfZzTzjU(_!` О)-_.LK`"rM1mN,B^&x'V 6i[iPq }ܖ.?kŹNuMoTlkYO˷Ez> 'n~#$qm[IYy\N&>7A@dfT'"SQ 9-)%C&&{ɸɠ6Y`'~7z 6Ң1dJ/rMaoW<ׁ3w0-F5@tu *+E@30`*̕3&F`t Ѐfy\5M{f_؅ PPdȒ0՟ֈA Nc6#u??W՚-̳I5}; -39 rۍ_20OU.1ɘ4%bBBRhB`u0-jz9?K꽣۾afUydy3&vU&bg0=GippaC" mXIa&4]<׿%3P?խ,xvn\ߥ}*G2!Q9FDq@ASN?9܆}Ol(࣐TZ|#4^udy̥s(dNT;meCa͍x;>?9UIUfxIo~]d?"{>şsJ} e dU0rKMXAXh絞-0ي,HA@9ns~ޠR]?*MB 3Xd0]VW/g9w]wqو7fYl1j忯o siL2YAb(d-k7_b$ײ%YL6G*Տ\%'rVq \?ڗ91{ Oi)x[ŷec9/z؝ĠIoi S~umʰOlΏV|.~9 cu$[SA^u2,\ "Ơ VNh횇,--Baz-JX,Z$=MrB/ܫǼ ,j"C`c l@`٩qVe%?0 [& Y״e;s5/#Md Q>,!UEN6[ mFx=g~fosP` /}:v ~Czξ;j?zv-Sà͢l*|-7x4=4d6lsv]=Σakt:uӿނTwp2WCa#y w;roUnV60LڙUw6uvTQxO:۾:t_v skN1tNw>wvfVgIOûJt(+BBI%q.-bXxב9/ŃrpZQ-nj]CQן6Dwf Bϱ8 Љ/C"&y'< $o΁cY d!3zcC'j!_ [/i ]X.JeC%&d⡴8k3_*maL1.8|#^?2ole! ݋5'F#0.2Ű=ͱeeן}B麮Ka?d D6orYrYp0_b(!hq.|_~/a9X{s&okhpVW?{a<ܠex0U/qsk[=@v3̬ basv++l!J!7ZN ̍z{俳Ř鲌Ъ*$9.ic8փ̘HfF{ =LaAq! Ŋ/s}'_& ?izD1ZRtP$jd9ty 9 ppoe`z٥aOH=RaťNDf~MvIF6Rk%dތ0q A4,-i( }j߆@Z -^ҾNܫVg*?~䎺阳l +atžmY,{+`eYItzK nblg0]GǰYB_~F_9e!f5@-~n%|+m70ġ") |A5Rq 0>]>Vg6ɕnfmbQ[h#t4c+?AUَZlIf91T%lI*cXqԋ{.Cع\Z~E-Mg&3Vl -ΓK;K^~ovv϶R=8@@HAEETCIIivCmY۞/8 D:KiS@NL!iy~ާ05#oljϷX~@bH2B(d4~3+!|h}S{ ;O'|H$2o8;i}mrzX}$jcD`e_x#bEͤ`)w3:7wc<{OD(Br,In!kC,_O @YPFX~[b xv8`pㄋ@e frknDa\GIu2ǚarz!ew%6vQz|dqwtOo'>|1@j翫h9nM& d|323Л;u欺I7a׳KkwPս3?%;m3*6NmBI(UxoWXffeogaYQVd ٙNqO?99)gR38ڦVhx[s4<>6^碣lzx*޹o.r2 6(r03]Huw 89s]J3t'jV%gX~Yzt*ӄIό_ŎVwc>Og w=g%mK63ml~7X2 E b!8Oo`H3wńdX7| s=R}? Av}`{ ! Ǵ # Co`Sˏuj1őMvg5 @Zƚg`0q6lf4:pAPkS\0 f*&w {ܢTFnsOd AA9!#RS5j"w=6ardplO?.|ٽc#gv`# ގEfsl{Ofľʭ˽3nz̋m^ ~5e }[7OM)[Qdcڟu*gkiZM_v7k#c#]ьa] a5|thvH=P|{<D)7. GG+?SAlg32!2]~Q P/7ʡD?ߌm~i ,g'Cr @҃n|ɭ1`ğCdik$|] QAmɕY2.@!hxf 3M9sM3~C~p??a!?Ç,ٴ>H6;S[kP cV_^][Vk233=ō6DиBA^uh<)VQ^bDƻpQ @@4|Ø՘L~:Ѹ{ HXtgEo'y_aN@@њVEQH/L HM?gobZE ?XXb cDr'.g͊#{'rp(\44!`ռC'йGK@/3 Lv[I!l0Є6'g *^Mwߙ ~O{*jo:ޣ 4u0JjW3**2:/ý+ժqҶu/i?-7LO?Y`@Cq)"2@ 1\=^^zֶYٺEq/x֥ck3?>1{xVVcQzՁkV̋=fcyX2!fT^b$Zg"RӲ; 3$bAa1iz_xpF CW > ƺ8ur2,gfes?#8aww޿̰ gfÇF `-oDNZYbv;1,' & I6 A_ jdNй;M4!PkZ\P C}ٿ^߼6w?XN(G7xAPuu,Cl埖RwpyI=(_/C̋J@aפ*=p X %bd@ZY&d2s @BC^z<˹<ڞFhDnt`IRj\ba'`~Pݥ`Xi4aSd 1 9f#NWe1#HBI!!bWhO:J64vj-kf_qޫd/ isi,Kn}/˰>7u<}ӈq e`G ЖH GSgoao}ױ p8qM&*)E2mZ]u'^a/[Z_kg>KM4sDܛ{{lq_8C rs ,P!"=i~F,ApzCunGnݡ@\; GD"F8zh,@O^x_4l&T@;p ܡXbb? d*R?I>((}v#alAatLܿ*VWzt ^kw:\4~^S7ȲKЫ/|q)=/@H,1aTwfB QL6>綠]Ap [ N:F" [8+ťÑ6bȺ4ň>*ktl_bh2d5 L^.CW.3|Uɮ\*Y1asmsv-hy]^p4 %ͳ%[Ҷ$= dsʕI+X>+vHhav"LA(ɝ+\$ (kDLֈj`XʌN57B@ YGiǚ\ʲ\kO OR5\F}-KeP6hrlL] ^OXVB0}T+ֻ2Ӄ=}ֶ1\ PQ*NfVxkC:t݉‚#ݘLp.qׁGfrT!8<^-/0I-c_O>| 5".:9&xpd@@! D[Ej * bIC(R+ T"s*T~.vsjI$}Io{ѷ,,&`@,BeW)h]_K~z{T%~jg}[<>x;O2pp[/r}5Vd! (q];؜15 j49CW\כtty6q*лɥ-~ϵը[S- @!iYB "P3! E|n36+ae}xKm =2kL$&_r:;5Dzko9} 8|otCwXpji9洮[^Nw9:<5m @:(P)LLHTI(N3нrF@Sެzy2Ea!ds{Ia}7%8D&ac9 r~*ILP`V@/SN!x&QOاBAۼ7%|rɪn7\ yY,3Z6WɃɿw)?@i!}j}T=oW9>`?7FO*@Gpo`GuaM5"RJ~ jkgϋb8!~\ :")څ]Uu{ v~!쾞߿ShI:lcs{F|39Ǐ6Fa!@*8*lB#?AsK@YD륳Vtw+wDi]ZF5 d j@,}x:FA~}?#żi6,|iDCNL3מ4cA"HJ}rS?Z>q~W]BKpex fScz+}qTq'9ٓi4VTQ_B0!܇?{",T,BAfkZ3\okcZK EYua@ j!h&pQK"=_`BTdi@?pr 4"jF@H" &qJ;*몯렝ʷ_gY0l6>ɸs$(]6D_QF!w@3wacuBy.!W4nيq-6yy~#Ł,Y< &gov09^Gs;,97w) aa{N6( cb<ڼ$EFI$rPLWcdлOa=X*`2E$&beLdJh}i$#2~>3MA;?as[ю$oJ0*o H@ kA4DDb jpk& X֨ kyňa?dZQd@(HP7Mn0XNB!砄HB"0D@&*[%mtW]K񙄷ތ^YuNNE&:zwՎoN}a~v}8yK>9.  ÿY:Z$0wĕ @>qM aF=طxvnmTC D˘b!=!jh?3UƧ t3 gTNOt_[0&'KVs $!UI*U&V 7`a^wjEZy^ &XmodD T 1vO$?4} W}RgM/;?Kk b*RfϴClI$r1]Ё)4+'% $LFxb CvbxHoKUUK?0Bb/R=} z/ۻfk1L̆fl;T%ރQI0{32,_o*>nݒ/ ,F-ωTA {n-ƒZ@l(Ģv< ]2SY7oP`X(uVd;_mT)Q ,@$ m"-G^F_a BՃ`2d#+7G+^U^c+hPL '>/y/`׾0kvOI1[h 'W!ѴZl%|^(Kc1닡Kw;ܝ((y{!`S[#1eeR[}&̈́*t[Pv~o*9tHI=NɕݟՓ?a7fl@clӶ%fnȀA G `n;qV!R)^Z+A؍y͞QpztpHH(D=кW 7K]nOӧ*|.04q\/&*.e aZ5OЬ^sD $\9y5]?#;.us{*#{*En 񁰸a6"}/A6x Hg|+->GrvHVQ /_n5TfzTcR tfqDTOkHƆakMeTF+ fdj II [ĹdYր{X::/縜Č}m-@@ߤC kbߙWܭkۤ  dY3L Rۑ #%maCg?2mԸO@ZŦ4ClTpnh%jU跊6!?zC,DN\Xt©8C{FÆy3FM5M5QfTsd%Ѷf,9*3r;͗V6]¨sdo=^sBK,G5/0H :=հ[ibi{Vhx3Ζ [ǼjQUpP` zcmqaIp`WWiz![,G^_޹mqJ* 'cb <|}T. }ڵE=  ɔQپvg)JLKFhh,y.`3x>==ٯM ˉ*L -6,o@[ZƳPCry1T军YDPd/2 L%,1Tz`.@f,LPM ŋM #&iIRn NNY90 sddoG}4($%(mI `i*`9 .%Y gKײBGt:5*Iɏ)m]] *l%Ft/C1YNw%}Y@3!/pقžvMO4;e9ج@'Y :Xb4#율z^{"t<ߴ<[~ƜFMF`%u}-z_s,wl`U!@@hp {[<:9En=<@J sfxOoMnIbAq7}Iq2t%r >d/cv2,PȈ3?)ݮ<Ǔx2::dPe|V|ܢLra۶x~Nv0XMO6;χ, YxjÍ=2'T^&]7p }X]օQKQ9Aiu^-Q=ЏbuPxD~DwS?Wn>8}CT "t*2񒰜i1dPdY1EUfC ,FNTQ' ꑈhDMjjh $J$15`#S5F#&L {,@Xm! V~،&oP4L8mP>!D@4iO圹ɧ s ֺE?~Mf4uͷd$N n幜-Uڸ|7\v= a6:V\ɣ7p8*'qo4MimʻnF 6c3V@s.f8X•8y>݋ )/T`Y6`L l}¢ nHն<8[Usϵ>仙 Vv ןq$U0 :Cٽ7Afmپ zªѿdiJ ˙;Igb,y+{PF=&L}xRmlZ#30j9az[#UTEw-$˔,$ܙ)صڥ*QT(,Ř`<8 "qgm+d3RV lJPߪc(&Z?~λfHH t<{UX.-s`uM>s6䄅5>|>(P+KQB @B *Ԩ \ vz7S*zczlNā 8"VE$z=(ȼ5 /%.Riߤ>Ah5c$Šc$`U!-B(D# *[K DFDXe(PJ0Qk(EUUR21+X[D`Dm…a%IL2! ,͏ fٱX(mu5>$$|OmOE&8&?݂ia>(mX ^ߕ@ >Ko9[Y %޽*dV@8P[ȰT T@{ZhUU!5UHȬQXMlL2L!oBp1bXNA`(b0'1 C* AHv ?HAHn+/l &N $XQX# fWRPb* 0 .ITQqƦ0aC_.2Z~~#Mrhj}g/iTQ˳ [5d=rV- 6ݵs/M1T{b3m&`&= %cBLON[+/6#*杪jef,: `f^<=\%= UoOf.P q}j:XhČň"zfpco'{aFf(ʖ"VZXU^-rMf[p i9 ?6%I\y)UA9qGAuV3#S!zgmWR 4A9Z^乘A3Od=_s|$?&!>KBb$ETDECNIY%dpÄ~U[Yp|"0#2#0@["",!sR˫LBqM$_ѮKGrITTSf XCxܛPUC$81PVIg)* NX",#' rF*@# X"@bݫ@Y6jI1"2NHY&0?ړlbd$X᫂X%rG@&D lEP$FLӻ 7*"MB,sl)YaLel34DfF`s=z]Un gnZ *@F)#C%pW ljUYlhWNP1рy1=M 0fQM53a1&|m`FV_bBw"\*_`wf6 Z&y aƈ@Y%(fC(z@;gWg%^XX4+qӔ,,/ضQB~Ar ,'2'ELHA)Z(z_pqQkj=F& Vo| `NlSeSq0oSMMv77&ErQC/7E[ 08>/Vܵo`7V̱wdF4-A#huBl#5~~/ B7ޥu*7;LkS~Q^FWł0NE5)]E_ RxHw*$:+P~dd>Î9sc9Ss"AaF A_⡼do`4ӀOJ!d GHm^oL6آn FU8ݲm23 ,U$b1 5 *?F(IA#mtS `%(*21X0Hc"0HH)% bYiFLޑ* ,ڵ6kYCBQ8HbEKC5*Q 2u jn[*"h!Gk1HFB[,T TZdA%HPt(UHZʈ %J瑵XT`PgB4i !ǐä4`plMo f kyg  И]P%^w5xıN~- >-T23#e07ΆN[qdϼ{~jgt[]q^`Y嚲{Z.,Sȯ&j.c#L:+o3߸-`eTHBRRI#ZZ30ffo4 '5&vv&0˹A-4!k$5L6̫Taw&Ln)dlixTY8ĒV;vv*?A$E߭!||ގfh |I V! 0Qr_'-*g!pSc`C0̧d*1($7Mә{;5Ԟ^$A0ńcɛ'xN=*ED ?IjwGOOo7yT ?^ޏ I$DEQ" H%7!PηEv b;/Acp'W 9%8cC4##|#q3(r KGT[E>h_:r$,ѐdAs `GL%U?U+ [1J\BaƇU%@XPD̹ a15`#$ΘCdUgbDC30`dɬOH_YD<:5.~[kbwc`lp50#3L20qlb_E]X%x+?mu/^:bvmj?/.Kw|Za@63NHuWkǼݏ5wz/ޟib1b*ȁJ,K`VAX Dm>pGUE97uX@6! JE$y"^̲h9#)KseZjidSQPx3m;yJIE ?gߩ5֝?ɐ~t7 jVlOd_Oק??##! ྸ{ G@^)vߩ鑦e}ށ|uADQ+I)R.;uw`&[AJbT!V,GVBB v?3|! Vk0CS%#av}CݝX2%0r 2Vi0B+k?|aib2 H[E^#"Z j?)$!%-utӺܣyybl0: \DN2p:#i ׬6VwnNUrv1dH0dA *Յ@YAOoJCGaXv>*ÎmPXe%珆QI@ߥ]OikH/0l*VYY SH̒b12 tӥnb¥c]P\/ gT^EF*Bml e7|'~GKQ騪La@k@7_)6?S4UE6CRJԿX }mF]nM.<"Bs$,0 YҐzb%T:2qERW` qk?w+XkD^g&1љ~Jj+jѾ86TX`?'S};-5E'Kn';3zGHAMi$+m$d .S)vH5|imZjςl|zFU۰h V+$aFzh~јc~̋&?uCynE0Xm e2!HQvzjyO-I_d/[Hɒ$]D#qTa1fӦٟ._"0=O71C\U͡ŕv&p0T?]>l`_&Zvm٭VY!uks)W\om;C0BP>dt>(c/΄IAvdi `=Ma+fIF>,C?صo˃ N W}"4,5%Ϳp< -巺3hzxZ|(~"H+i6NDFn,/V~KŢg]?%}oY@‱%X =MN@s cWi?{0'W0tq̝@9J h@=NfO|3@F phDFqRWlE:um[f :6O?yvt\+wLh?}svR~e3@]`zNӳ (/Ws"A$7⏨2F=GM!! 9ӠUio-N,Lr+0i^ޯ!dJ\&W2@hh(f^Iၙ fC}kgNb `/ǾbH $}4ofoʭ Y=odKlqۙY^ye]7.~Y(1!sf[4.2mv:[KQ-8"c䅍|d~'|lQȣ[5ڄ .#q-s,%GU~37HH"DAcŏk?ǴjyXhLs==?z A2"  nsARpPԻe gp{OO8+2 Yvh:(7ujiڏΤ%v$ՁqgŅ@`F&QE>îc2E1Ŧ+O,ɮWrб֮Vr4o 87JzCYbdhҊRCuN@P `h  ,F׮W[y 9 ltLآofފݐvST~.{L3㄄ ̅=A Dxဒj?.IiPpuJ0dqj"[ J300f&ηiבaHzM y..W,;̂K 5&3 DKމJ$ L"X`=gAchI(˪JZ(s= ,@A$D10 OXw=Ǚq{_OsAzUMF@ o D:|QX1KB헭t7c_x,QDcx}E ($}ʛ :$? *G6v<0 u( |qCL(\{T4S=ֲ>sg}6ٸ- ^Le4 j<!`㿮F˅|;C9 nL=Fff : L&Sjǘ9ۤL0ncs d Fgxװ*f"8]MQ6D};8X HĴ-i #&1M"101iA&`cdY9uUw2|?kU?v_RXӮ{S8-z$g`"PR`¯3`|ʀ3ὀV"帟c};PxP+V#<6 쾗/F/ 'tWwg[;<R$2Z5,_ f 3ffa߂T,v8Ò[pddF:@'SLCc&[ءK.WSZQJ$Y6 θEYŇmzLpjQ A`) dHGێ󾃢/i7{oMِrrRO>>T0Y6m^IzP?<>%Z=>̊BV2tO(vk[ %G5v@@͚ t9M.6c{@ 5. b) ZZ B0BF%Q!9t+~*wȫ[xl![}WaϵJoW}#^B {_%öñeab(4I"gwI)#W)]PZn5'?禼7Ͽ'bk~Ek|w&ۗÇb2LBbvX3B$MiԞ"!E06ŒF"T,+R2DAaY1DąhGL~h8}I 4ZV$hTJ#AD"3W J2HTxdK䌔Q@D!]{QйYlɨ*"3Xɴ)H _-v]\i\lqOq2UeJ*RRҩA[%"(0gX+/K l$rP(,(QU  @-`̈5"޺6Wl+^pķxd/z:Zhp֦KJ!ʐVPyX!=D@E塸knUhϚѩlduNފ=N|y+(МuZ,!|.l؎0߄(@ -/GYT UHHȪX~!O'XFre>0-i]A#xTd ]B͗GH͍E |1۾_-`hת׾e"Kz_ }kO*ŐcF1`(UN^^g! [ Q!Un0?E,bMF煯9-̰]iSޛqms.9ect0]67Ӌ,9^'O`j`[xaW(Nfx=iSs{WG{uގc0G%VC#o^dzȸ-PQ@ 7BQk1"u Pf~R03C83x{<^A6$0bd}#z#Cȑ/M4wTgʍ_YkUW ~s~Ƶ׳/Xn`&b#qݽ:קl<&ӃNli|z;D9b1@Qd^׸ǿwuv\b(!B,9!ќo_l4 10[x%ݫ;R0e  Qґ$d| )]S"*T%K(քshאЙ'oyтF28Q !#0KϿ1gv:o,0ž&ta'p#L3gs̈́p Лp p22ןY)yqĝØ݋M YZ m]&bP$Мu3[1HCX`2C?4ݐaKWQ8/O?`:>?)%I!RCbb)53ߠ_!OYj-9; ~,V8d`fVU?_c4c|`+ 16Ϥ4`c3ǥH/oȯWT}wv;=6¿Mfҡ^ړ}4w]vK߰Izw-35F7nt_$ PZ!TIP9`` hd RweD~+ebqu}k T^'w3 QQ)GiRk={2]RgE-*~k`sv+'Wŵߟ',e 9rd.o5ZYcUX̜Ds8 ȧCzxjmܣ16肋O, ]"d0Y x ~yHpJ ,m~C,C)1LYFZ1!Hu%9o]ִt*S?{,Fud:AهL_ц8/Lvq龖|m 0 > n5H`˧@8);# aH5 z&c;Jxp`(*zJU'Yz4WG<ܦ!qFqץr߆i:j6v=Sm,tYqt{Vr]DHNo ZφZ ^F!ͦdo4q8W҇e1uծ"u1?S|4%Yp gEUM1iƀJY4(TDEnpׯ}.dbF!EBʼnfNlvw܋a)wxsD@Poطwbk%z;:Wxە L%']& :\|}A|9o'C ʗ,!߬; 0!H=q(A%ʔ$]ݺ0Z7|s;7T;zDNh>"‚d#9e-y_׏ϰA|q|+Ņ_P" Ff@3n 8:ltV:osxB+*!xnv V"eDLg>D8͂ͫ%>np~ u;k<6 %*am=Or+ތ͠uⶡa>5XoY;'W1w zw[bD/|$ n8%u_þt%fh_U#Sߗ?7 Fcݬ,POאhǦi=4t7}ocױm@{Jp>dY_r?Cx)+.~'y@D7ޢWי 'hM5$B[bmHL%$k<{CO= Ƒ@ng/;ȄOlmEqɄhe]1 +&3]z Hg)wAD|:Z3jOL7jֻnh0gs|I%ġ`_KzunyQzx aBH/GA߃!`_?OJ,CD%L+ 2_U5ۆ,{fF߀YDk[L EZ,,VA*m(XX`f_\q3Ԙ9)1z67ǘh B5(K_/3߯Bs j SilM)s!v:U~?! #A2Oo{)}ؗF) !D4 @Z[@$ͬU#s/yy Whkv=K}FkPV0㯨$^W%I I01QŶ}0lɓhl-5 Mשsp=|X ے!q`ysX_\ //|hiR ma۴q/I!7yS< xLH >^䛧WYnN)ႳQ` ϵm,Fb.]{#10V,, !0SsyH@aC)`/ ܞap:%ژMIÀOX(\ioh{&CS3#}A}G5?B>E?[o(|0Ʌ ɦ(Je]2H,A,{U_bjfy6Wr`hOfYl{˜rWv5j'U|^3 2hlW f`dYnS@d .xS/y.%l;\;, +C=&.tق00 0*#DBQd*aV[`d gsg%XU׋nBg-QQJGEAZѝF\sRHOJ-VK>e;lw10ʄIj-&I#w0vҭv*kuL9aP(&s|A@7ٗ"b">"eZųϸKo>&!1woMQCOcËA2BDNZi7EdDR. b|PfSM/Vl25mKO-\bJ5'Q耥iU,Ui"h4Ȩ 1΋}E@D:(E#"0c/2xHCHdCVJl/µFH &d;yrwxl5۶JT;G Z:wO?.Ps$yS>-&`Bч. TҤ"Re(2P\Lac)+X0̔$XT V)I&ⴿ*V[co{5C< hM ya !&aN!a(7Y(>`FB` Ȅ" RXLT8ߊ3esB" "y[EeO@8O|0)PɶDII':tt[M!X2A$G4YYvZ +[|3Ct[puE5Bnv,"  )4 X1RbB*ܝ@e1! Dd8B5 8 1  ځH tH[\J  H DQE!Bv˽b "(f*E vr \;{ nйS@X ^n_JՐ@,YEXPDZ X3Uj)Q\aq>CJRS-ٛ6㹎\8}?N5({?W@ILA! Kby B̊+((m=>yyP̐OP0 Gk乌XϾ޲`mMF% *ȥAn` ޹{׽oW J#JzͽVĖR)- -RgY״u=v v!2nVI*ַlzpHXSV$hvZcF h-e*3 mձR8}@.:3p40ӎ0g}ӱkȻ+KBn'Y̞ U/q:mBgpUz`LQStE^=wVư"E+nGiV=GxM M[tU +ZOhD}CU: @hԄHofaO'a,RkfA1JzYWRbiܾlruAIUYX 0HR"ދ@\?ZFNA,$D0BFEr&m:Y۫,XC!kw7jxc~a%Z5*YhK "@XFJ@AA"i)!GDK VǬ>!iTEY8łdpִˉlV$i\H1! BXVB  $H. z|6uej7,hc9j *!K o~VJ;(_geh)^GV{,( laC+`}3\(f e!mH "*H"DVsČ@ pL|f&Y`HĐĈ qrIV$ QKQYTb UCPP°Ć:̀brְs]Yul>ʖXb?!q+hKd#DT Y`ad$X`t$H`I״/s!CAt %.; JȞ#ޮVw60՛af! ٍz!,k$Sx{0[D 7‹\kьb')цaLE35RB!KiU[/Pb &guQ!@&"YpuYӘ2G&#3VR!"}\[02<3="poineb",P*2Zai_M?< $8a1m,T[)/5%fhlu4t2؉qk L|a-&q[X-q2 n x yd蝑(v#u犡"!O# DQ-VM QftQ~}][njQD/E("?||S aKbVTdH (y*݃swM>R.8 Hҁ2ctX4;ܶԦB_h6 6(;'nRuj]ؚL>fB/.o.B)ԲΥ'am}x)x0 x9Ql?ǵD`A 8bBiu!f~Lq7$k1TЁP-ݫ\Q0~v5tijY ֶ==1ɵ{e/4t-д하#t@6}><}r=acĈD֧w .!yZELjH\Xzfp0I.^:ڀe kD%Х+bEU"TX)-* lij)`ZmcBQ:ee+f$3rܜϮi2Џ!jmSw7݁'ZbED#P`fS$N907´йPuiUatۇd:Gk6 QM7|u>`\c,5e$N$w?Ӭ4SDE6Tmsam+X, L:n $$dD#m(UUL%N!3m~^ɞ=TP\7C{t>o*eBR'ފ@@@Զh.7LU4@@bɗMxH&Q qSפO&JpTGqIɤ/ "i7O8;{@>NNy4f_wwe5q۲B_P3wh~1rPI'ٯ/,Fu󏹥{Ǡ}kG>|!F QK3FUc)!IY!RAdVDdZV[HATDdJ$@aHZEnCC`Qr۫:e/TB I ZK4b>>f;'яCbjg$%mo:i@ x R&x tJ#4]ƛJ(E I&`, +@XA!' !Vibm>0PsH ElF@_ż\k96h, d[yDOKIBHrֿd)AF)Y!$#A3&[Vx"yr!xHĥAI~]=ksK9JdYeYDUF%F*XXJ*TJ,DDAp nˬLy)wqЬ&dvSN:5*)+(03o"q! IHw,aT $ $H 9p+|{Gs]Bo{ŵRS}Nfv?\}rr6x (osa뤡Im`W_F \ygCDDyR|=t#H$l?TN3wt S||<*!(1qI+2(EaŜrm*aA8$!ag:Im7xý1H TO,ȬEN> $8ԫUH2B%<6a0#Ͱ%ppdy<Ugγ%hebU4X0[9ޯZ|9( ~t| =_^BVwwBy'ɂ ۉp ~yҺW},a@m~HZvS y->8wNXdcɠt!c귆Ɨrw7[ex|$gF]ӟv"@H|&C7Vcc?EUa!Uh(P b`+??8.,Da4foEe_nO+S?9x5[a UE7l%%OY4qae9)`cS4hHndz@M;pqAo6mϫ3j.$O_٘x,1236{?+ȣc7 ݢ6 䄭r=.*Tb Թwe*~dLO3f n]HruO-PBPۉfHcI7B+nas 5_CWal}OIm!D)P aDe,QDAmYd( QdUQh-QD`G[դg}ߜ&=2[/O6@-lt8;:lP^ z`[dmK 4:Hr jLZj<M6$jL&={."'xa4nQM [XdO10 av$Y"Qa,%AGzH2`@3V1IsaD`nheZIQ@A7^z,XKԙ8N:)]Cf79)YjH2iT?:Oueul[{zmΖj" ؤ`؀8sR0B;6&Y K` 2IE{"MjCY `$U"D ޑu!p~Kױ@*.qχD\B@{/pBhr8GU#h+a*xeu:R {g ?+g޻u+@,}5 6oF,78+a #!D`A"ivDĶX GfjMJh6HY|桲4B VCl /HSNMoZ!ƈa!Hf*6.2LnˆX &$1,Da 6;1Iylq0 fZ.eAt02@4!`DNb "šCqĵK W?>.@6OXu6<-b1dYX]Ʀ?;gЀP舤 '?nrÉv>kQbUЇ;UTԢ?^ D@`Zz>GZX?Cmѿ~yzT;Ux{xt `Ad!1PTm 8RaD"@QX\ӘJڍI,s DD0?Q!m jS8 0LH122iwE:%23z`λB9y$Ƞ@A(&}@xq K)P P4(/eR+\qTȡ:6Df;哪*/OX z TBhPy%̨XGNA P:C0cL *RQgPFm{|zצֵeaBt4B=~Ou"AQw!ӛ|ߨ=@@AĜ..`V;? ?HBD0H" 0Xp=ۉ M2{kM!/MA"21$քsaÉ $ϡI9C/Kpt}{[0у& A#aHPҪ1!  mmCdh.AVr>z슏qpm)LyE jyD$wBO5124zSw-<.FF5L-W)TSm-l'֠(4Zd@pR)PBA=pS@!zǞJT b[xA͍V!cd'd53rzfD1^϶%ε(9@B&AM@$L` `1N0`YF $EBT$S\pRЅzġx $ҁ,` @q@6$IG?FԢM.!sQuRpHPAz0nh ]y7/ε c"EC|{_KUBʋj#B&;p" a"@7[u/8Տ>2H!5FÔGNMTwge=7|ڜ|:pQ>,uCɐ m", lCkF'SC 2yw#s(Ҕ 2[o Y0vYTr‹ ĭU/v3ROSww[d!zg,>o>&[ghiѰI!P< T8dI$ jK$BhIn;D twR[Т0#C%&Bjq`AV) ֎0N zBbd8 29 haRdZMkP E ˷D-ل&0F*H&Cꢉaj–\D'!P{7 No)X"I FXH(KV"&2Y D`E!- @ 60?ÂE)1&i"DrpLàvM,hv'#:ʳI*̸ĻRUYHHYXGT5*Ad "h8z5.o_~{Ȑ}-'/ظ6 _!ĘG1ܣp1wGwh^>۰f~vq 5߫biA `N<0p'+}5+6}Tcqz& UAcaX0-E0(()( X0*B B0J軍 CxHp|mp&Ճ`QfA D6vDn2nT(rT͍/t  y9B@L:H- QBafkGۂ["Nm_oZ&>b5 E2[ 5o 3|c)gJᄊ|S19g Aed+dh)"cĒ#"*(PDU(Q`DF"* EU0EU Y{Z xDHz,wom>1]w)#Օ݋U&i_0KxD;E$ ,*Tׂࠒ. -jn| "=iE8ު@[DX;DBv(K!*"@S*. sn J5 у60(Sq$L*spu$/:2EY#ͻ+T`d2;Ƈˍf˶65I2M27:kDHpD D'( @DB >'=vyfO II@Ͽft3Kr7#9qI)lؠD!5?͑TFD5Wi鿜~ɇ!@)!8NY!c>}i5HH6-2ǓqF &+! G)m4p냁);͹uiO姟K#-G"D`I롶7BSj~=\R߻~v՚ aEU9`6!Ic< 55gIbdä8B0o-c5DvDj=2e)F:PO;T}*!ZX$$)ibQ?}fxQ|`NA/g#޹V%DWi@ŃO FV<'rD ~ ϊ7z^vL)i9gu{sg[ߑ$HEǽ^anctIaK9t_$!zTI;a} m̝{0ؿNn%G@>O庮+%|L9<{~?^)0Õ~Ðh M$ʡA$#p[nxu1'7Q\jwLy %EX"6PgktubO\mDz&:?AИӷ>8^pvuAT-bIF9B0\ RqxL-ΣEkXcŖK{iʽ[m[ %>Dt8A]s޴Hoo;LfTOQyFCr=wLrrH {h:w}c"^nQ(}d$W6ۏW1WVaYo+zɜּmha,fg߬U//?v8k]g(ݞ9pudv' ǞÄk\qjk-_x?8 Q/7N2 ۙ5iKY;^6R08rޙ&zl2^ړ&z ^'); Gx3ACƤQQ4:\̧( ؀vi%ӷ7rW(YFG8! mOpKuFAM:4jb:,:Z4N!Qa{3lHci.Pa'']l9#3QtDru޺ѼD1 !ش1+b*) 40&]@;1bq :b6 ^ A(7;bnQK9=eIIs*Jj0'|qu7*غy-vbdC.tʉGM3ʁZr< ÃC2li1e07H@8\Áa4tMpH#{qԂPic(YQ(j @,C2LS~qN:<jLϲE޼Ǒ=%ӱ'SL6@+'-a{׌;NBNwzCHQs8ޏszABWr3sNs im>Ǟ$퓏me'4uDkZrչ. 3mK-"fC&޽]m񖩜{\ 21MK<ގ+=CjTk$&^s;cZEi֣7d8E}ɽpPOne2ݫ9& rΫ(1ae\5kP[ikc) i~`Rovm|8T%8!Qiѧ@hҭۙaŽpm5y)ҪJedv@n;ZA/ngm֞\Ïäþht~ч4kslLk{տ˾y ߶' %`ytaȮZn.L8xr $>vㇽ^Zu;ѣO.u],  k&ئT4$eNzvw3f5Nv!TwJhm6B?,V[Yτ'>4rc)uQU^6'~lΛ5L/QR`\2ZX#ʂPL8 EKxM!$HDt> Mf]C|ãhtB* h~WÁUZh``s8YOp߆d۳4/6Huaַ0[ՄɊ-C3kD]8@5w)XWo0`sdu| !$+ dX_(H&'، nd 6g ]u]S$G̉3(xcoqkDd7aw`n)yXt0[o%wg&łt>gD}U3y BB, ,=6H?ˤy6\n% $ V A*=Vsz2} j {lS/檢#)V ,QAa < DҨd 2TXAJc AP$ DjpIcCEB 6w Y?v~V'Jrx|Hrdo:L'MO|a4>K9;-s:sJPm@GSg3-Fn5m| m =Q(0"0|f`E)5G, BII4d1@u#!@0!"yԠB *&뤇{37Q￙Pߠ5ϭ!<:~#pD|8aMdBہ#!KhЩ=^y gE\o<NjJ{S!3\=W(=T&+!Hi >^5*&T5 "tUmr0Z-nL짇ˎzMq<}>'ܹ-;=Q6Bj4AJWU?9ӛv$ܛ `d:h6`WHIl{كf-1$qP{ ы@ϴyڇc/(q<3E҂?8^\{V'+0G̨$~S`D- Q0 V%~e0d|v/ SuY| `ˑ; /y}:q*BxVWCJ7+!'Ӽ6QJbfl(q|4$4*F8or|Nb+WT 0yVR,2H`!.C2$&L=Q F0dP=h@I"`H+$Q]#$&a,}sSG{,1p{3)s9Ă͹"h@6WSCNz 'aIHP6W-370 FH5>Vn~L)cD^ r) $Z/^E˿f֭`sjfiKu^2}ݐ]Ldk !y^rڃbdt%HlFw I$JbS 0/\)I,8"(HQR)V * ) r|w -`UjQ@j=eC@]0{ٷO?O=n!.bPHq(;_fdc<ΝR  eh[A1P cѕ) Y(6pC$ r<$XHGmE# $B $@E @"$VH aaBfSYT2 Op %;\8b0R22X2AH2dA% zg=5?A몍I@Y@`m0aK $P^؊0$AdA$%@B(6$=dx xo!v'3ưhl8kQ!Qt9sYw%jDXCQTP[P}{іUTZ!? 8v= @$"zxRT%f!X rd@+'Nޝ>BD$XA!Bl"D ɼPB3(؇\.! 5iti6Qu{rQN8t60 <GTPbi$Cd{+!!fU-߆8B,\DR-xL %sPB5sxE1ALԇ s}]pISVΡ 0DW;DMy((A Q|zp2pZ931[]>T]O\ 'sOʯEO7\PTISOWЄ #"@uymnp,kZ7eA,iQEͰrgPS|֢C7Ã4370\iyWnx_T3zp*^~LebK2ز $~h!T Q,]adوMByC(BPNO2ox{g!E! q%FUbB6K?1 D3Ӓz   dc"6g>K˖9f=dm2@℅h$:7>j.^;Uˆ``Q8d4 -4P!l|;\,\'̒^Gc5?:RrNI+4bFV!X+4)׈Cz&\1P~K,a@Eb2"=0Ԡn8#8%}I]/"k80ṕ!fN! ˠb` oa_0$)D3I 8֫>}ƦÈôJT٣r)PAxی2l#@ ͩ񑄞S>3!CkTƓ@K,0`ZXdS^( "H H "P Q 0dXD@2H1 B !DFA"p*F .1`|Ϲ d6WNY8;|=0kT(%Ep @yH18usy Fě]ERh|{Ӱ:g;Ju9H~Wߓ.SQ.Kv $\GBF/O7^ULs;uG ~a7CjeП2 a!#ԙ']^ :1NUÎ8QO!; D P;Du"H#szsGU"n(Dsa1;@>AM>O0"`sc]kocvsɵf2uG%, 'CS4e&<4k#4xr)F;I^%TcX}D8{Bv{=o!GQ4S3)ݰ3JD'&l=%#R,hN8(7뚙(P)i-*5򝅪=%r!AB@\0.!b9Jj&8CB\V"OPfR4RITw資`,E rd_F.mQD-Ψ;h>*R@¿=J*x;EZ)BW $ :jLse'ь1/H9FCj+ü"D-tiKj\F@`[+)DD'B"zd v#\CJf(AB "&*{ lhfh4oLfP3k ThA\{N]{cMa^]U;s+?G*5 M֥,1zcZ j@1 ӻi[|ū<¯'l(e=IF1^W:IQ 5=WKIq-Z(2[%ǤY/UkNruG$uNIt!x:ߏ"|Jbx7x6mrtPv1ppr7R;~0g .ath $q#C3l^2  p0-Li3g,oN5RfY`&t~.K 8>Lߜazb o8~OX>9d8cųZ(Ƴ! RAB?X vM,XuVm>;FtPt9ȅYjY iNFyqlEe8hv5rN('XDFIy;px֑ V|c1VYWxhz9H^IQI:GU[y "#0`dd *&)JQJDaBc-Pυ=𜘂HC `zϤ0q@`JkPrA Q7Y@fPTG7`M8pzT:e AeKE--Ti `"F+/h"!FJ(HQF(%l1$H`ĒGbJ*bL@ aK DHQAF#@RZ  #Ji7ZrSiؔeJX,ZEwwIbim[aC"2tsʃ{yrHc=5HMJ""DgM>ˏk4u\ C *XdF@mx"НO0! !!AY*h"E`` P;djoE.ox^ wV<DCǀ f^2B/E_g6֐557%P` ۯWԓex?Za"iD)$yc9e?h3ȇPt<`svkQᲟ!aC󉰋R2`BRà2D)YIfPyˉr0SdV(A6s5h&c2P60(&fXaGL1! D1RE1[jIYF@XȨF Ki+ k%H00TL%J ؂FJM~/niՙ1'2$b?ϦNnӦ=(5K.hꦩhjH'9w2lFQE2FO?ahO|NQmRV Z!J9qyt/jzL7e7pKՋZ.TQrs090~' +ATP ,V_'UxDdFEQdQXR(0"0[PΎ55Lt44Yu$=L*|TJ,"?9)=_ 瓅 ODV1R|1SbVW"O#>>jBXy5;Æͽo1* Im/kjhz- eᱩr7R&e,," ZaZ2(OVqѬ6$σ?1 $$J[IzVʸD.Vw^ %XYN[M3&W0EP~ ıCIV"mYhF]S3P1b)|Ң\o&S -%BQ 0CD*DhuHl'5t_=aߧ7"8ڀ 02)A wk2hZhMo[ pkADci"&sc /lQ.1`uxCؐ޵h,Q/bՂ=f`@XM͈Z>>/_ g ƍ Bd&d)EpD7?؈QHFBM;!ƍj« ZX( T*vfXm bTTQ7,ΪPaTȲ;FZWlj9PԤ$o[ X.I{P j:ʰ'sGJ!L2 12 )c`น98T)նWfԻ+Py 0; += PH@Bb!8bx*a:$]" $Q *1H#0PBA$HW"z{58[Saơ[w#9>sSr]6\ΞфbHE-@B=M]P~ }, @,ռ3 -|*7Gu_$LiT,s|~IoU}=t~.R / :3lo  f 1@(Q:|\?1~,ޮt?s+COO5/ېB4(l A3T޷AV|-}UQf4Z.'?D>;2[/>fd5_D4Up%gj LhdcQ}B,:b齲^ H'ڦ\gm.6U:Gf%=%N4Y=@ D FP L]bJC ;qfN-a43]d,#4"&\RЕ$D# *U1@H) 60dFbv &L<~}2%(q?:Ac8L~w?N44o{,7V B5yzw [̖#Art*IPm `ONZ~Gp|_vCfo`ukStQ`(%J@NXB J0i< !kJu8b« Ձi1I>50wikebC71 `9`bHjʲw52$Ҍ*A$FwEA@`Z^ q!2e eA> J 2DTbR-`HC (H'pRX}0Ȣ)E$$ٵK+no /7${lXӥLHa3٥IA\PZљl C٩{;0 qL",HQ0a`)Kl`\sCk*ߣS=Ξj|_yM{' x$rzi3! l zG#f~<c3r˗,ҴB,uALvEWE6tHJG( ]`%W!RET{ỚJ%[R&[Dpe•V%ˉqJ'Mȳo4 Y)`,,0E`QAQDQ JxՐrQQdƍk)T=fAEJ !XH)FiaBQ舑UXi"e!mHT00ɦ]N@r! 2N>$a&d9P%: |@R~#HBF@(3f@ D @KoTQy%۵X'u%P ʄLj 0~p2+;q<>;E_6~_y'h4QD*'\@ IPrXƟ1Il>7IJ ~lDHRU7x?m:_9;_fI#BA!A$FI"RF˘RhJI-% kh"(F$R 2LQ "FĨ>(dvl21F4ęXk*t4a)K1c%!$?LT2 1c@ASLȌaG aaiTE#l.0f (0L&!*,T cX¶ #.Y1dTm%X("VBEJ!T?߉c,b6ng]fD/*#^b'cvSv evj^ӥCHiizm;*&l)c;;I4ƿ$ψϱ5BA_}H/2ύZ2 ]XB:J)-`afL~DB!$u$V1bH(% ŃF%2*c$KX"$$#U&o y/u|CM`}vawCRMQ eӅFҿTP H %F",7!M>}[=qFnf0n $"$a<7/uЏ}$:W2$$,{J" 1$jTblC$C^bMh8oÛ[lZ,Z4DYUM "D`aU@,RȄH,BX@PTdPDdAB)D$2AHb FdXFA$a aRH I"H`b" H IH,$(+$Ȱa$I#XAa"a" HD" @X 2Ad )$`A$]m!o^R@TcAV0P =oc" "k\ڞ0m4Y]AW~9NԌ1֜'Ky=W/Î"u,̊H2y%%EF*zG'3L*-)eʕa(`2 "ZSpˑd2.(kH\`tjadFŃ9& $⪦(V$"A"? DI=~@NZ`P)ܹC"o{ )wgCG2i0C !#%4‹Z1qtt$HDEK,tX, (*@V0 1"AUT #(AB R ݝ m9H{G>?4?aD-aH2Gl&,=O}~?젇fUM ;{bx!dKdV1;+" -D Pp/.c[x@dEzLioibˆ̠:|_^Y $]`¤5u5&8d;^ɸ]A3t! KB"*D$e9`>BYr>|"LdzdI"(61ԟn'ef@usyK|S=vqH+Qȋ 5,X{ j"@;TtB eܡu)Et43NBƷ > +fy2~VKł%?afW}hh6ȩ6r- Kx"0?@|t,hĨA A7YB" Qi8& 0@><@8=0 5{pgǘF΍}p2kSbMQiQ_+\>sy=,A$H_bQ)QUbD`-P, V , b1PXZX*`ءbKJ(WGDhmn]I*f XZ3 T%fL-PGZo mYoFP/^BނB2ص2bP5M,hؿ0;s4tQ/*<$"#0!Y0!R,PaH0 RBH4+MZj 9] o/ա֩Z6(,OAŮt.gO?]RTVK 5W;.28wa 4M"4BAdAYo1Ul`@^ehQ3~ӯ$:ynYJDr*BiQ(/Z zW)uqu  Y Fo$u(nwZ@z A D+f&?qM",-{jrU"8BLZ9Jf l  ZחH`I̙@MRvJ"[iEyiwn\;` вR|daAH "1"H.jg: M"ED$VѧcǴ^ދx=N/ڢGSQ ==Xwm>[c5d؜ aRPy-C$ăwE!Bݑp6Z!iF+ ۡNiT-P>B^߉ˊ Q"H{)1U$(1E Pc= `,@ah1d*f'JT+ HP_z44"aQb+J0`3vnkUUDb8##@Bwl²EK:!rPeQh qe1')B$ڏ-- X0Tb)&լDYSB9)h\-g`UhRl (dFP(9M2Ip!R0bo~#}zҤQe-h>Kw=f]A 4jLA $܇B"A>qpg⪪Hzg/uݝ݉;X I#v 0`J @*C$Lpz:/,,uT83BE.o[sw&9STְE `LM5ɢ H%B)1VD~˰!"3D% U1)dmMpOn䈈ݗ1l6=Zc i p& rd;2IC䒊8tx +EIs <ww!!T̍ TY*6H@B0T U#*@E`eHI@Uc,F"@($**H!  ELJTD3١Cd2 nۋHʖ1؅IG؁h:l1yI 4zoeD:$|5[&"D`ߕ=Mz N +1J5,bRA(`R2|אz6hp6"o eL$"@Y$2B e|4ED{ڃDa ; p\v @s萊 a" DB2Ȣ ",@B(1H  I0@ $F I"Ĉ(v$'A%` opg"zAX()1XC2@ѪK'++N2H'ZC=0CHg8Ok3q.AU7C@"()"U 4D& 0@=o]۹q=[fyI@Hj-j4[Ut aaґn.(>2q9mlDhv3n7(@;\fKnE7jȼ|v^4hqDu T9䣾0w׍-fMn$ِx,.3Kfmq`bQ{[w"{4z87k*Oۍk_k4ӳ137MFzonra<F=Youg mK63vreZfC|mwcݎ_uu-e'qz{ܐ'vq&0&^3l ٷ7a'VH2IH B5-EylFL#þM|3ߗ[fn)9Z\#o|^IS݆7#r3(3 fJfMe ܽ7w1(]eZRhE)N}(rbAdbIY|!qD}80s>BedY"E!F@$0a& ֠BHQP`0bF Y<ۯ%HX  dA4r 1 -*KS}5}̦6b*┣K[ZX)NZ,KƯ@(cmr.o6EF[ a}$=hRPF[;hAAHk'#WVnFcb.]wapŎO#hyXHJ". qZ9u+b^>i~r%bZtn<) >bMF<Ym ,l.^}k/g6-$cnδ"9WTI*Hy|:)'ZȈ&$M2yE Sfdc2W\F٥(rBy7F1AUDv﴾X ;Eì!/?NJ벞PR?NJQ$, @хInf( xH@XGl Hqib lgT]*wq^233#"30D?&`łm`8QBRN[R}]x+o]:qv{ ج=߽]*uLEQ9J2R4}:9b~#h/yG+'+ȐJԔ (l XPP(K ( DbXhK`0EJƖj0ba=.xzL%ġJssa+I9\u&h(9DG_wI滨jG{ 87{S/mEzy:zu/4^E-Ouۏw[;v$C$`M֚Wz02>Fl4"'RjJ6b(reA Qhw#%6h1$ªN.S&s S @,fJ`17h)`02*!xYji%9  gJ/M" I`Y$M-q0pdd`($C %3+:RQ jY*sƌ2Zm!&hrSԼ2 s@м2bQV^9ѯV]ƋRBYcb,BE,5&27 M)Cj S40 hb')4 5L1,l޴144#R, ͱ% SNɩں:[(&,U*Cu8s'q7JX%-kS}j_f#!dC~:E @3mdI'E4SwH0H ;[i ⧮\p<BH<6HF+$BBϪjg|hnpSBHo,. ?@D7+aDؘC$?YSO3*'gP5$=CP5 %a!bbH FBm "zAxޔ!dƓ!@T"HI1$PIREBA3|0^{'NUJ%"33̙#-K Ҍ& ~[QAB!(Y(ahfr%@ltl[B^ytYס!d=}-!I,G!հٲk! g`%3 0C[U `>KVSP DHtԑeL * 9i uH_YgWH}; he:f$ LnlS5!io)(@A20@a2\Gܾ#G,PƷҖ0C/O 0-? hb`@ $P)]9 -N4[yfÉb2%N"!,FǍ41#%@jxX0pG -.w o.NaNfآ GkztpmBK %0NcH'P8nk5g"qTE a̹M$ uնu@]ah5FTP`,-!@eƩuf[,8m͓ȳP5}? S~+#LhwpxqB!$ZY $:vK%}]2 H-_eb_G'W5*"w4Za O[^={P~ 'Bi0㾅E[^uxv6^oY$/A. ݾF`T6=Tq>O~|2Nw} RK"kqpB!!Ȓ:*#ZwT@tJG~R}~b|4?,@F|B7cHIsv9awգEFG2i50m`Iu  Vb>={ _xK2umC5&d$}s`(#;Xd @7D m(i=*:$'m(q1HGl_j D6B :B}@HUi!H-+KƌsgG|еEOv lA!6!n;4YWo !skeK"BX[D#te˔ +0`Ki` X:" 4̒Q&G ETRhLQ ",B03e h#p]C٠$z0ۨl7+wkHaBk4S"7H @a ECBm&OoFm_^^;#Dm+BAFD/Af-,6K: sCXygbZYT x~0 AC!4 c}fBA/N"*o ToG<>W!0B*JAR*# /Æ&BTms{]:c/ꚑ߼`mH& uEhb ~-cݛFGtV7'VDV "*QX(TS5wȫQւ@U RDMB|C@]C(->ޅb\OÇ]=,q= `S[b?i;JPStC< 7yyʵm)t-wپ趴8q w*FL? EaΰJQt!ddI9$!!%A^פ   @;˅#QЀ;,~^ڮ̍B *"(,A"Q%B!,`JHB cH_I,X+[n$B?Kۮ;[ݜNU硋^{ 2RLD4+'8Sul3½ͅVFIoqy_ [yxL-&  31@|Mo׈OHtsCI$RtrD €G"dTIFy' 7Rfj;!0,$/\yҏry5r PUd\@`?v(*QV T0z83`L'%IWx(H1A}tI?_В5JU!??z*#4|PmeI!!HI< HY$)$PPF mDj[HPRI'e(H0Qd Sz)܂hHCBTb @ C!, AM@FȂ Lɯ5۬X:e3& 7I=im$"KXRb("B,Bc_Oj's t=swဒU 7 *.41iB(IdE(m(1#h !A{A H +1,:0>8K D!p*EhXh;P7ܾ &(]WiG 0Pc! pVOB@)ѐEnBETIć(iBڕUJkA=\K0nDT\yMBmfԙ/c C4%|~G{Cw}xptY<(qNA%C[՗i#d{&f}nҺpݟ-)ʋ;`QC ߫"wMҥB{8  B""]#Bř*U! ct@{ :l [! ȁ$X:( AdbFTB [(뙧bVӱ@)߂$KoѰ$"HZ,RPRRXiS!DyCŐWn=>\}zN $` BTUYi@=ObZ$V(ٔ1I"p!,2v޾1 !3:F3|vQ! ( np E!DP On-9X\V:_H-/dɜʹXb2Lv!CAA# #Zm>fV'JgAaR@Y``!F7kd,Li+>jʴ[aU MV>Km%Ys^<FbV鴬Xm@﯄HB9.au\i/ k %W3)ôӞ2ɠƲP %铮'J&}\ 89y?OdoGtI :FL?L6{ Q ])o?v ߌu(d&щL@6 uS_JS3'Mv`a5h;ɇfd]@*OMY 1;SX$ARli5m &`R$a/;dħ}wBd8ſ4C1M Hݸ}0@9Iu Hi2"&[;wiҊpqMɐqX7lNjh`wOm#RAb{07' އ10”YFD4MIY5NEJe3 `ŜQef.2 06&jņYZ&rz)ʇiiy.$%`F)\(h29*&)av3E `و&LĐ0Q\(EU'wAgV~Nu4`e'qi&\vERj `{,9;B1P9,(Xi٥N%1u%4mY!N2 O3!ZЉ-)NlPSL.Ha_xf&5T %@SnLFvӁ]ciXBta]bըYrh,(:`%{zo8ik5G3#s(dDd-9q3hS33 dZZkB ZɻkRR#ibL\TcA"av[eW3&fp^EǢVyЦQ>7ܰ Q]ViZNfoE6(" G0*1xY,b-ӛ7{EPCT"P\Q w?/fs,WgC(V0`"J1H, "ȶc8A_)79yY٤* ɿS&Ze2=U6Kfs ?#!(콞Za{,[c~;m |9nSˆto`..Zfp*%hёx~3{CHH}hoi߱弯yf>j4H vɗ͐ "UEa$G>Ӕ]sIC݇ Ǝaaрfu)K'Q rjb :YySt"M7FOh~tP* No/%vҖO6X;eҺ."# ^X[B}f2d\)AMV 6%G8m/09v7٫aj4KO5Er3J,_.0U!)\ #Clz!d B7qՀh??N6RL0HYdœ(; $3,bҐa$ )"Ȫ(  "H( !&$Ub0I[&Z"!2fZP$KB D,!D"J# QiH A#&G[eLAH2 `c %fZK$!!K(0 DhitRՐ6F 6#MM5f vY!Mh55l$&А6u`V0Y`oz,421 E.CmJB$h\hM#KF,5*e@Dam-V40F00)H2h)Ia"" 0upB&rU$t@PdB$w +Id $(Hb "($> tԺL#$( A[ b $  0k5`M(^웄Fd/9h" 4Q2Dܥ`( H[U,dQjf3$=4E4 mѦE$Ab!1 Zb<#TY2 ,tjjƬ""" *(($mHgLR{0\,{}0e;Vp IHKJU`k/ްLF,cF&m @ZGY}ւ@6kP/GK X(aA PFC1b" '|B` JlbJ*=ީ“ҌS]Q%Ǜ"MYE6hbEIB@ zM"Ȅ"`#P$UE"JAd$XAQTZ`g` "_#p$,,AVgMdDKXDAEiFnĻctC65qxL1-bݦ"o^$o(aAѨb )1d&RI 3 !`V킂p r$TQZt.bLbe!PVp#i eBةR)1ɤ a,HQK$[ ` %bw( 85}FfseY0 L\ Hqb(XiMA$+6$nĄ# /6DfaLmq[AhV@ )"B`^Ut4Na$Xh4yyA-KM|D w#8PSuU%D"H FZ$T*!BDh"HDB FM0\"0mh-̒(/À; /'p+>vǴ:|POaD2*H ȠHȋ"69}^/:VekI$hJLW?#']#sYbl SDM@!gq R)(A1P!EQL[OO{K&E{~t^9 )=T~W}:Y_>-֦Cxm Ai}\&Gor& U7ձlo1{}K7Й;Nb,YؽɔR!p.Ubj OŒN2b0xT0 5j+aj!S| rz(`^ zS!Sgio0d= Td:KMCʁJl2G`̃*2;anzZ_u0_^zrisϒڤr.d6L*f44$2XA1doT&8;(ۦH5 "A$!jŒk94;&2}=4vxIE8q$pSQ gTr?oq+iqa1mP#Jy:_Nki5lٕA \mq~WmG13Syρp~#g7 T[ww"።Oo yG9 f;;'aఙbGWK6",dE# 1E%A@),%'2}ﱾGAaA,bIX!7~Cd{ƨxx 34MV/F1X„3L ֻj0Xp{ ?K-,a);k/LH 检^R2F?!<0Y.l8ˎ\,H 8 ,CaO/AE3 CGK֤*ID3/!XQ"ȢIE7 Z+Ig %E*%j{,'eZuUAʹC0I]4?/0f;>]ݑpTt` nV|(A$%9O76dT&2 d"}Lܝ7כ&)111n)!Ll&HK/@H#D`E$Xkϫ$V<54dV"FKZ$MZ@@eA"O >/6nbA+/-y3=!JUD(3. $%W=}6IY E% :;',uXA UPQ BLv{7wşr=Y"$2oM?s"-b"VTB0@V$!XE &!/0́D$l(Bp:PJ T8/i3`DҸ7́m#"$hCP)CC脈Tp=EW2Z$B" K<N)@wBaMo&A%)T`Dd3#K`  6ɂ`d66ޣF\hl!&0Pd`K`O( 0VS\cqR XDXjn)'͡A'a8CL1$lBj2:̘ ByFYeP,2/$% e >(EA"'[Րs&A1yaL!H5$ `!4m l8,@:8332e0!XTlTSh -bX  X3u4f [7xe2ND@!!X&Nw:2`X+p<0 HB$`Z?/|>_<=Q(0 l IغYjφs [18͓ޝvC l`pWED k2mHhudEse3\4Ɓ4,00vd| ђqk2f㉗|+ˡsrhF}k4]R7#:G+[{(w>Q2@~l/PqXȸb xk0+ ئ }X[MsOqo'\r>D>?q'7I٠pz0 ]LNW{9;vn{s~!yZN]a$IBI^%`+b-T$@*4~;8H~gPMS eq'#=U5?S+&h9ˮ$=18!",O.ii=RCOgW!_4+5c Ȅ(E@'AퟒرA1b+ 01TUFCR~4Hru H, QHA$YEZB0&Y=+C4?g'/"@ԡ~rJ0صcZ{[]uP2!vWMED "(xexID 7}d8!=sdaӚQF:L]e{}6aɤ`\`%53T\66 @?-|ST?Ϻ c$@2?THv;(# BC C R@xux(\ Hk)%?!}=Z4Dih`bm`> pCIυb&]2 = ҾZyEOS/q}6f>u썩ôOSEx x\BNVE$"P H"QQ2;I2f$OԆM/ׅ{|Lxs=P8!dN/l]reNbK}ws2ib=el[Z3Pt ;y0D&[@lo jt( -H"(҂Jɔ)OC=Z4H*%zkޏoa7d'ɴ&U.3C^.HH$UUP!Y:,n /H8U앂zvA@UBP`b.T<"P[fNj3JITJ<(k'KFH{mOh$7ExPCb4Ü꒐(7t(#~qPC+6XTM/[$dL\jBt&"`L)X <6lP\Y$N5Ep22 JfaM|ZN d } ss0UP 5ƍM_,w Pm63kpu+|p1ed`/H<z1PAn-wb.|G57&ilx2T8qk?:40 ODI*-T2ϫpӱ}>'3-O{}ǯOAdR) (YY,f;wGQ}^7Ѝsg6;{uIG}9Wdբ¨!KLdXute[/+s-rU} f3Kz_Ȃ&M`f#ğ^Աz7 BM^GB Myʲ \7 zi8|йnvÀuDjLۮN /  0j" V,A@ZXEFC_~?9"?J#H0CE&D>/Ŀ*C =GKU雕姂`77.ɐRӐNbRD+"$2qSL0=\TI%M?X#LARnȇ,#u@Fׯnj悙 I/ϨyC|VMiZl@0j`[N[/yw q튦0V\"߫o;$兑@$0df 20Baٝ5G[{aTcf/wn e*~T ({vnsr|me;WY>?sMǖ%uи0A3]fJT1\e#wh`*͘q&ֲjW52)!1X"bACnTV-*֠PZS8ߧzF/!l"e計WUEDEUujC1q-j&Z΄560Tht (Qa °MJѳW2Զ"" RRɉTlNZ؏jD)HwݽIR#Z4e SӊY&oKI "xA2ҁgT̨`c̵_BPE8JE1Ejͫ ADAh&w `UAbx\Yb#gL+QZ8> -k!+\#(Y ܆@t),܆h58cj k$bc a ̱rd.Yr M7x evO¦RNƴH8ۡ6$m,YwreRf83@;lbRugTiKWd$h&fHm1aN)P?S!a`Uݱ,J12KJ ҮZ (YkfM]ѣw.jM!!FDddՐ,JTc"P՚aB 6ƲIY@TVUdA"0TV"UPV1 f݅ MX;K(j%nц`Q#[ I (4akve /wҀE@pnn8/=7դg# BpaY*kzbQXjֱl+J"EQXYcG*36fiIwͯ8e/ CFjq(TrŁdQq $8-! '064NK(#ݙe*Qt4Y9 %yFij FVB"1iRBfBU4B wl(h0LD \^U0lL;K`xj{L?\FCJo>mZHB ֢\E0HĠ$4!Ael@"q_@>mcXp\YNJnj- G}^`(Ȣ"TEŀ->X}H@DpBAHcxONMBqe334m A1&ݣL*l&PlI"crksi|͏촨|E0Ѥ9]qA&@ŝk x><I7UwmE:bgݖD!{aT@D #0IB̔\ #z{r]!)>y;zb)NBDnjTRDLK3/M3bɞ%Y$$@I<, Z~_2ްJhP!v\#Nd7Mò b TM ,JgyH`H[@73c่%)L&BøLSp֬D5 ̲9eU@ɀHl "o9IH$mdxݠ@ @HEQ>'?w; NY o3d,Xj! 8Ʉ$3Ȃ@081,&R B${DHRƌcl Yb#Pq_4EHÎOuB){ॸ D#1 $ dJ6X Cd%a\$6I, T5(jqk3-5eJjiQю#!HY/]<C5qe[..db֍jTT11Љl %lŋdS2U[0(ޣoMJJhU'y(P9̽8$a+) FI >N6Bg8&FuHXAB"`H`aF"R *\̀ujPn!u'mca2@b{QDeۤ=];9"2 sZ4q?pT~ZW"XVOa0TZr +jȠ*ZBQ % )*]>X3q5$ :ܾyNg<#.I QY"ۏ};^o~rg~ ^`"=g݌X60LIB>`LD.&/F82 "nb( $X [TaZjTEDYZ‚UX-"XAEHJz'zd``Q`qhkPbI$ BH"uN7DYqS)?X?rP‭B8z.Ὓy b) ,DQABDXF$QF `%Xʢ \f$e̟$=$D@@!$$S# j!ur"120&4}Q>F"AX@D DE+3#\B $d6t^{[W^ 9OAl bXAX1!G@`:v8ƨB4 H1&K̥J#D#Q luā[gIAd8C)IpeuI;[ l }SֻA\ DN*`J0"q+4N'ǽ.Is .$S ,DFhf!€bD0DDH@d?u bVidC2KGEf-Im(J""G-( űkf>?w74̕J0&@A(@5W]4-3Lh=D! 0%J)HHPHE%5dl@ ʶ,0( *[cj0X (Q-:{ 2D L`ĢV+jH H!EU &[?_b; +̭cޕ oc `FiCē>--X6<[;1$;fd!W-}z Y\x&;%,wuVhQ,ւẞ3Fcĕ Hiܠ8 4sBhs7 BgqfkQu[nbߤ6c+`FWeB2/ [I*MVS碵{zZ;U*VYz!DZt,F Z.e+։dž9} B@-/A~` [K\P<׳PCQ G}3Qx\YN$}VJO(ViT@?.R.hJڨwdFHUUDKJDUnNQWök Q7ӂ #> iT zjntݹ ԯb:OKj uji cy~Mvֵ sMgt| 8=r=[PQ#qPEsKG^3dTQy*/ L$&i:r,Bc '{<:/&^11r ;v-8nY fKÕU=hc]Įc6&獮u4wa|;ZÁ[XM.遏uϽM7PfKT2*u#m 4IQugyGqQr?{5:xby7/1cRc)^UvʥVG' PhX$(3Gw8+ _,mҘ4l*qDn &7&H/Iʹ5AT|m2o7T܇f[<]pIV_7WfuTsk3φM6iqdjܷv1|x!~uP31^od54d2.FN҇^)]ؙ0ܧaHIkm{O<7|nb ǖn:^Dcj ] mBZ.fc_ g!#VBdSփV.$$5&o{IMq-RYIQ޴,ލd+lp\J7ld!d}MQjϧr0{hɣ P _%$.y;w{R9B(up?^%)($JR:)uPb:yM1:6 iB"]dDD.;yBmM&Y1C5O3.M*Cp4Mek@a޻cg9"QN[V^J[;׊ctLv+߻ݽB~G#yhD]4(vM@aUÝDZw;0z`葏 GtnM"&XC^CX*3x8RD 4 .YrcJf ~1usWg0f=*3k=b9g&7 .4A8HasHDH"*au}W.q_|1+p__O^WwBth^ wDKLşosiB11hMj@B"Ds`F 1(ee #-V3f'nK(IKMA.icyȘ'ݧ%CW#~{}mˁ=(^+޵h%kH!4=56b5Y:]PUk,#u "nU ,$r7v4#pvG%BG .\v7O=>O3.Nnr2w{xdsz0Q\ {6nhj^ٞqg.@q^3oedJt~~v6µhvC8܅/ܜ̯wCk[ +* ՟dd_X;^}HnTr43@d6Nn 4Y*,ŝ5591Z:*PJw&ԭInJ)L+ GR[:%aUOh`$ DMlh󒕱TQHx}$D g2FR,17Ko F(p\& FkUA7-'>}-ˠҨT:xK禅K { )F$t8 Bcآp&7}@A* Hg)KJ>3SbD]88!-2vCRT zY+1DBEG'ͦ$9  5%*X=YK9\t()s02z<4SZuETPF09 =J@V0R3,f(Ýhtԕ#W%8jPsF^,UDg0b蘿tb%i 56 tF";j T؋(vr p6'+ *$EоI !9C"E a PZ KA/ `܇." y2 D@ 6 X;k:! ҃79=~|z5JGڌPʬb>3$eTG["tڿR[\gH, 8+{2vgeꘃ}ۚɆ;Iڃi09$ |HRrtbd!'ct @DVlAr(h1(t 5]2Ha$zL'my,HT ~">vs{ bHx# |E>&7jF@"` Jkkq>ze'ɼc|fRE4͌}m|Nsm^BƍܘS2~W|0~7B|˘oKy[2U I!rys'KV H`3d20\ƂSlE?" dX^ ATLac.ǒ:#?#l@ƘE$b!,'kpdYǝ4ʳ7M`@ؖhKGMtDzX^9!nmаa1)>̹Ɗ ~vKSv82ΉGh/'dQqÈAQ5%IHJBP,=* (#&" F0)lOBC5E"p.BJRp&|dOJirGIDڒ\J2RƴU[lE,96HTqS&@anhdȚeQ- dR1'XD\W--»f0d$P:&hPaJqs,ăkQašq4&]@;N%Q.ksI bl8h`A & 8fH%zqt+P %|AɌKGF2IXV090p2 G!E$&4'w4xedhpdFTE,`z .gm0a} c E% l . LEEՄSOIٳ=7$ A,!6 gO kmJ,@:wD`H] o Fc }BiUws2}pjigɹ6.P ЄҒ XDՃ R^c\ݩ,:HP ˴&a3YUI\"ͬA(!@G؏ꌅ|$FڠP)~Ja! "4)E.POPv\@ eX(iXAх@#Z,1V*m`CJTrR>H&rN|%]&^)ݫ~0z(8( B}o{yٞR>= 2!QZaEʾ]fûw!x<ȥFC1ќ3P[/^i7O)Ch,$4LbXQAzRV"΢Y6d1 őU,FE i!{Jh鄋I8bL2Q\Ea1,wR`2",MLjvi G Dd! 7.ቚx8<]PZd`|:7t5R@;h8L Μ-C$oocT tAbfM#\6eVM3LjN2UgSNY"1P840@Sb6acrPf>(q4+ +iv/H*Pq]Vi0pCS+hRXaS[<]8Y @IΘM2jj] 1)~K!PV陎tf=YÄN@ dj-@pA S\35iܹ)bӌ0 ^8?6 l>НGQ\^0~#L.-)aة )+Bs4C# dV{Q˗ʌFf]`Q Bg/xXd*2j;PxqٚoIbXII&Yz5S4UAKNbf' WA)=͗"å!k{ L6v߳3pjҮx(Wڄ,@?}/"TOm F|U)X:fK1sh;xmu< i'9Ipwܘv}ƅk`1nMuwm nnS#90+T -TTj|re9tz6"oZΧMG@xnmZC|KQ2.o.BǔN\ClbaP:^-mxd N!K˶ Xޞf+;L!hnTCi YVT(w] n 0C2k@oƁwHcv\lvsn顉w!!]ACKo*ʙΞ= r \. E"o͘s ؏h$q|aN_bwV~<fo;Pf[UzY0oVӿiaJib`"RwPhP`YBiUb5b) UYAPUhۋ?V⚨kYjftAntQ&Rr0qZ6KcUnӴiC!4K0yLRNh@Ԥ4hhR5L+w}pt).C8  ]SqќQn jyC ڴ 81|F1؇k/A0C0%F.(/DŽxXyۨB'`by hy ;" ǔi@) axN(HR;Pk 6WZDT y|)&Xm狴hGNU!*bXCH&5|e˹fnpnJ*zãi6)㩩#nÆnA[ҵ[wysen.iX&+]rYxCW6(łg,,9~&s'6!{}C//=9YM(N 6  OޛWD"$a0nr*KG6a'$쟞XuKtU,/O= X B1f:a0L öxRT`W R$պł|D, 3T/oU2fMe%:2i UC~N )^rd3uQR$L}!4ZVVhkaY%954E x&4EdL ^z!_iÚtkwaBP~`0AN iK IM(*{He&JV p^uU HM,|PuV+q$"ȯ(PtnGC4 $F@, f2E"D$`@CYb[}%Evs3LHHBiߚ\8D?;*l 7z\W60!=kВHIaX2 O &`78x 0@L !7JxOwnn7:m3AҀ=v QG WE%)V݆UiڪDݫ=T8rlGh2E4e'lZQ YD"ˆCE0NG$-eDqJՈ{~Ƞb xV4!+XO o${BZͱJ5)%*/}qͷv4,CXB w DXUNGWL 躑Yk,5lƆLh"a; PHC b9Il!IϙgOanQ_Z@,2mH/98E''OAKEbbm|&@Pž35vaՅbbQʀC$Uda6fVݴQ$6C~ ݀A wƄDM0mmUx6z⣚2`Ym(w'> Byx{:=Asљbh 3@9 J$C{.  _vC"ZL2%# *KhсFM$̚ *4%Cf`2EE" @ RǑVi&r8[L%phJhj(5c5d2ӝai+$ «!ºֵsq@ 4&JE4@(yT1GR&)޾]kKxPXv$$4@(XF(QEH@#͠Ԃ7H y7-Wb{h'k54bκ bG<,?%rS e`tlfKcE\٩vW)9<\n j$"0 "Q6Ϻj OFVV+!b(i *@aZֶjD,X AEV(QEEDV1bDbŋ,X)Fe#C"!%f ,UB#FX:3 FF ɶINXQіЉe0IDR= N$u&f]h@MDi(1E0IJ AAUiYeğd `HF"ZE"EAFHL9 ink tKd硽[LRХ4V(#99X8 Z m~j c ` EU ~h ovXL)dTj9ۨAw*yMbWejxШ}z]B1es͸0`ȦmMuljz}Y# jȜQUxG4z*Kakh) “MZcOu  TPj@P _d- @$>IF1$$DT$˟eS^Bd/9kſaMM\  A**c8BTUtQnڻCĔTn4]i23NJRK4K6q xr/l= 'u"lS^NӚP}F4!r$D0 Ha RX QJ vhYH0<{,[c;spB?UMzCxj l&pP ZWAǕA'D*5EQ砵#*RD7ɐt67r@<(%t!"9)퐃 @`0b#B,A$h}ҁf: ڠ:a7!#C6 IHTJ1 )e$ @@dQbZnL덠-7v'OS/ށΟ f`ņV{F Glt^aK|; f vqnB x+mN1r:wPӽp]Gf]YVpq0m@$~e5OK]_]0l7(35t2pFf5,f@QӖmPSu10ME"86 ='HR,Ɯo7$j D 0Y~\%ce4kl_Lpziٻ>oluDc*EQF"lD[(Z m)~OOÂAzYYaoaqv6Z b])e 5D& #4IpjjhEӰO| faffg QQL#͔M"CnF7QÚTt3IŪK$ "T!)}'q 'x}أwX>ail`W+!w񣢪M$0 ;O<㧦_X5R2YM&֐1e" S&!}z5Ar ׸y:;pM̌IF ოʊH Awaf  72D /6j>]u lE{닃YJD`t$B--f5$IdE!fdD o1-s^χD:.ʣ:4KR:^,$t:[7'#d)l!i /v%d !2BqXϙ`׭;b1EUUEQUUUUDUQUUTUUV"`'$ }o`0҄V"nԃp; Dds6k0س#U#) doo\iJye1/:dB?#(@͆a m ׉"ݢ"/(xr?ﲋH&?P?RhוDO'RM~j~~ FcH*01'EQKRUS׺!y{sdVlϝA'דdli$@8>`g.`>]?'&@3 R{?]P5|ȱj\u5Ԫ6q! GpT>KC Q {? a#sFI$S_hM܈60}~~v (j0!0L%`cPX Q'DJ-I%Z՛`œkIA`?ad. {p$@.WOAx &ue]^"J#o/&o{g rG0φj2p ?L]nߴy~>V7qj HI6 "-_[ha||0AsNuŽmALnF헱^ "HAHAd!$ᶀ _& R l IB}v籇!i_e*6[D` K^+b0 5Qҙ#dDŽӾ?LBsy v|ȑ*j"R~FA$*NV(==rs9zV4So0v&W9Q*)b 4 I66ۓpm42ƍԗY,,%-0!6׫$̒kԜN7ᆍJ5tSp}ޫ`\Xi62LYlpWy w";M?̅tț c/z:D$3w?ZYd"zuELk(5E؍ bdҪFZPUM4XtKRfN7D.)T,z(j >^Jjede KlY@*4%P m٥r1BT"}Ca 1B !o ?L ȉP&̺ߔ}i=~ _V1(AC2$?0W@9eN^ Tp4]a4zW@&M2-P 5t]5-(T2L7h2:(S0:vIZ 24a9`GT&セ:lSYlL"% QN `֭K2ȤkZan[Kl{ug5$\C+0no'}%i! `bbȰQdi$YZ$C~'Gl9y|fOHf7!t|a  L&[\2 ~9 {-EKӃ,Ys1K<g05WC̀R t4g0!m>)uJ0ؘ͒GbvYn)JUhVi^1M}*8hӌ>Dx#"$ 1(,XE$FAPBCh86S',}1eW)4g[~Vpۦ~#e`8Z B!AE!O H@+PR ,U?|4?M:* Yɳ|TE権;_0`"߮$fD8ẃ^a&M޿Gy2_zQYy&#"(*Ȳ$B)dyP?f~t7>nӆqӿ͞W+ƸDr Č 0$<\9;[*4 Ӯ^ IA"(pA4u9-@XbσK/]=7bt~igy)S&ybD-eKA}QC(8 $20ҐD –4U"ȫ&{<"aLjOP[ē/BS$YM=PwtnHwgyk:ТEdD#,`(fmA7Q7t^W]O󰓪X$Rx`:S)DV#H@` Í gT(& wȁB1~RCt? Om|Ǐo+0$lgϢ,Y'E`yIf N/db>AM8 F+"ٲ'`H{:کÐM2SdXǓ$x[ =0kAl7C;wYց沴1VVHCfPh1B@-㔳B~-o[>O{T_>-Fqd@! A%IdO&axRa6rNDֆ7GM#L`zA 1Eߥ@OVgdF~ ~'AO-TJN"dYRE$P H uٕkyO8wxC$v#V׆Ts,F/ibovjuRv;ůHH@r]{ú6`~] fk`;/Y{oo\HQ 1F*jCXi Ks /zZbA3Yz ܐ!d@IBA"0a B dAaVHIH &gAb'Gb= fGHHwv2\3N3@I a13WoT&W4o_%T`lm5?f")ll'SkXrY;?` D1 B BFERArDI{z--fzFͬbR7 XmXg|ܭm ?6<šo>SLK(ꡀaT;kf"+%^>uWf?pO6h7#uN;wv]Ļ_boB'X=J(PHՆaTA`"2OAt];ބ[cO^ySə)fhU?fBAn"UnN#n%j}%b4 f:礹"V%ޜ0$KyjEDdC&&g#NĬ&c88|~9Lҡ 7-ol*30?vUmĿ^T5^7N=0* Ͻ{m,֝ '.B=GJԒ(bHfTJN]MNzV7 0뮽N3s\ h)OH:'0tKtcnj `ݭVm(<Ez@8{n *H) vLE#ƘD$ 1ӕԫ陒n0vԪ(ZnB֠z{S8d[tN3\BoyO l('#,xtYN%XJHCcG]{ΛĴ- 1M;RlwQZnX!# *nʳ(NH73t8[N.'?#To\N ILR6fKBM?Ê[&hI} t:҃0WCml*-j;œ>ۆ BVmP볲b(vي3(~@qP|PzT)1zLjh?T4%FqGm7L DځS&-/ŏ ÍzaNy3念oq1# ){)`B ?B ,F"FxޗG葄K@7^/I/S<%@5`A^L 9T%Q!9 Mjm1\:Nx >!<#Qwy]?Av1֯˩\Lw[k]ayb6^dbT$/0eO62}dkijȢiN0 TZ99 )J&; ۡė^1x&W<2I( "0R`PE*3=ݧCާqq.!Z1!$ [~x7/Ǧ,bOד`%JXs;%5J2>I`'|e|yİ2`;Ug͆u=Y{?_]-L!O$"?-RRW |PHf;CB1ȱQM8\H#j vRŃo~ F@ kMBRXK4ArIi0@ca7i{y^Y)E^!0e2"M.Q7K|]r1c,7auZt}8`u{-CC/+/~21hB|0M t2`⶞fMXC4!J(Xh:T"K  BH ,"D!0@`a" !"(a`I(H((D"A0!D@B I#$(4a |<^۟8_ԥ@XI_Sߑb(8 ח=|^+rs' -+i._A/C_ `KҤ>LT!5~lpܶlkA:+t&X]x/+p@uE5PezώC;=I&玠TRJpQMي}Oi& 4&1Xi%Z M ,JZr>塚Fpw{P#|\Ulq='[L#ye#o`xP ESqQψO=38G^MF\¶o1:'569vGb=i 9^/ {{ˈ.ځL$ǚ|]\W !im &۔wmƔw=M 0Dq0"*~ɹΒM~-5ۉ.@Pg}(Y-Y?۾Ȳ$E @X@́l#i2&a:)Șև' C _Vve`z>uJlDA!P0$ $$A=ݿ/'t]&;M7z7j ?mjv!34 oZ{9:+ք D\1v/!S (%W9ݿ/g>@ƃUWshS@0UwO񹣇x :;'%])#0f|U4KDQ Kyw>z!h* 0Ԓ T]rxʳ4Z?4Z*` !P޵1|m3F' A#$ ad@ 9n&|OKO&Vgf;&Zf3w+Ș2C@!В b> X:>6>M~||*؊࿾+h ߣe?€dD I#~@6G["F9gjtƢ?ҞLdTs/@픁x$[; vsܪcǟLrI"tWM_: pρhCyPFDEE1Y==Da2o"a z@փ|oz-K! Ԑ^l|BAXfX(hksClnd"#KU84Hm4 #`n "Zgƣ8DŽCJx !Xo'gt_N¡ DfQfXh{.ۄ"bw)( SFH|4z0),"PT*@=7ۇP(HOTX+ b~_W|8zR~Z`P;֞*4?GǥԿ??o!s踨\]@Bq0H~0@,PD@6hT~.Xm}!A2KV߻f` 2f ݏu_{:2Pa:LYl^~S4=i/=5!H#Tq6F{67ld`P 8%XcURTQFF_&Z `uR9uElsޗxq5d6Cw˰ؽQ%G0碊`ryeJV`ƛ٬LKඞ4z=&DCyD8QYM|iFT6m\/1b5.3(4qFM]Li4D0I}3˘*»szZ;nELA]26r0Pu/(Ŕa+ČL82>#mIP0Mc_=~h 8c~֧mx3 Tvu#fn1|/RG ,NZcLX+^jby|n\{5> 4BSIz{|$hI|8sy%!%ݯ%߉ZZ-*/^.wk˼] 6#nCQHEOV10+ao0qf$~ޅŘ}Q!C6h姈7RS9tCC7[7՗Ap,BFD!"+^g/Iv;Κaxqx׊P;Њ&^EF$ 23 s7_8 |ĽD%ӊTzYt;7kI( b ?)fH}ՄCe&evAki L'گRݕAX)3DFjdkϿ wqjXn}^MKf;jmd[~J &weVM,,?GֽԾqopw>#xtJK8u˨njr'?31n#{]\cMtOv-Wan32f ӾU*If$P%oi%iEOr8øLXҶ/@LВS 0NG_CO'_89 cc޺E[#G%/ՅJ(Yif$# EFD`_mv|a:p׋ަzL-|s|oZ<~JuZZD͘3F `w|cq^ [4cR gE1_ិ|%p:3 q>?)Q ~'K|R'9 <Ͻw8|_-'JjB+fa$*J(f2ysK3],WI@;GmFϱa{_U99=@ &d`2#2 w$Cm9syBDȉ Ad`)@d$AAYIO|~ø~si~gv=I{+sgKSƸRh2{OzWa|,Z/=(?)bOffm}Ua3( ǡx '̖L%;J@ttL@PWeV Cui5:z< ( dFfc ajt& %"Tjp(¦K)QQbo9:F<="|.^ -HR"bȂ E$FfFDcX*m?s\KV)5U=:ƨ˩F%5O/طȐFY;m`Q3 6rZ K!leۗ"|@2 4vXg1w3\WMi3|UaM{T'\6s<lE=_<5WLiqџ;g3G@ ,$H0EE dMΕ?O~<_zܚ˛ƬIUgi3Pw{k~_v>秛̺~mY/צ< [ǩՃǮ:7wۅ Xq:Zn_ewI2-Qgʪn4 ؛R|?cCDu4_T?|hk;IDkm0.2> 3h|%tڌwP`XKeФw[A7q!m D`& w貈 _(3KХopy|~3@gCߞAqiښsz(9= fh 3 R<аoswA$XLA ܗ>@ AR@D@lcF7H0T_NvB5*.Xe7/zdߥZ!Ь|f Eet8:r.mfj($`@\^5T`ۧNf E0f]83EN<<{ .S;b>8`PU7{e೹5Wkչ`8B*lIaeV KaKI?߉0r7Nb"EI$t^wO^w9~ #dd8FYV#uǴfφf<8 qpr8]w)+o7=V`32FgdD@R'-kY~g^-Qv;#!ZC;`W85Z D> ]`d!3JÛe'D$,$`#<|r/8mͫyk>}EK7Ey+bV"+۷[uOivwl 7q?,Tɩ"DdF`3#<".aĖV=b #`-dwG|& N7_\.zn iȁ I ddrִCl_;!z\zaF0͘ѣ%=rࣰ=D5]~FiFV+L>HʜĚ؛-hS$if ADfiEUi$gSZ ̮cOZ't.><UIB,%O2ChVD  z6NIHAdi]7-֝a f;9,Fp!)|L%c-&{;JO7kh0Y9Y>NzR/7nK*xS}'vb󘟛޸aUˑ!L(PȀۦ]=}9+Q31^L~Z,#o #b!|[^hF|9a0#e fB4-2 9ZcVXU~6]omto:Hbk'b}=7TV~4xtQ5 Y$=Sס_inSyOYBFH 3X ʿKqsJws~4&,1u%rSUv2 h o77kxYE2"  J#hB$E [7,U:/kz_oIuBцSS$vaP0g8[Se[Jw~i[Ճ;9QmY1ȵfQ|'CDI rk R^30z(p\ikD5,B"śU2CV޵ qɠ^73F%)$1l`S[0l_{ڃ?\G?-[yzˇZS[Y)#-fcoB{?o l",Y![B"IcUJAb!4hhz BEC/Clf(?[qJ`xuroVf,ܹyy>ϵx7؆9/v<.IتY™xoh/:Uc W!{ʁ[c4܅88l4VrRG+7.5fAC_!1ff_f0sl8F/ITx<'P(@ j9qn~:x9|{,?%~uy:^?)˻h>8~[}7TOF@[ f@ $?jRBy @@yh [QN{OZ~;20`s DϿNDޱV .ѣ.]ǝv]f.TE6&}ƤahĩQ#9Cn@q0`v 9feSSCXf7XNP0Ap*F&9*AMM+#3>n? t~3:=ZUT7͍<~ջj*m6,A hÁ{hA*k##)$x4WPoCPZm9Ai_NZ7QFp^V[?rfd;~PhW`n QlC'vLU׀_}>ѿZ{zL_?x\2Ɗppl|knJAҭtWfEb~CD5`|ʳt^3gc&v*Ɲ<ƅ[>zCW{{A0bv̨]b2z^4IÍؑgC&GCU#5Ewfު"Fplq}vfdFb23YZԟfV@h,mdD {2 Tj"x,#iQKAz?wcliL<7{ݜa}Gu`k/r=Cs/=e><c]%k\7Wf zvsT>e8=l^;*\{,) m;^u"0˚ǭZ-s4>712 '԰nvњ2#Dmӓd4ɊO>oP}!]X,H:0ǏǪ]dT P V#H!Sr7H,zAӑXݜO&@AȎaсP%_euHm/Q岹-.z|E6t3D2%ߒ³<7G͜sC`6Qܻ93] u=OῼKrgoB ?E x7J[ ͊*V$tCcpϐ+/vlw\g9uЙ(،]A6;ĭSo"Ձ%XÅ+d)#%CO?xgcn{-5G{ +`HȀgnk4exU9P|$.HgFDץYכѺ ݨti,uK&޶b=l=sי2V鸴T.jbUtXE?OdgToS\uj?CEi0 t>FT@05MC&@L<6]5Vy>̕1j7vP?ՄQRXgիQ.) vszcbȵ`m˜uѫfһo6z`n:ʵ7'A_o;gX*{? 7 1WOevXH/ɐ"۴8S ȸ;/U>Lu=~?2F0DW{>t;u>0mI?;=ϯ֎=`@Z\Kzflپ$d5 Pϙj : V[qx>)=hlz[]§K|9 P՘Շڸ g=h^zfI\VC1: 0A@`5TH I4i"'>ts2囇_2Wݺ6}d]7#*]^ԀBrX x/q7vz4{6w{x|3F ̤EORBɽʼ-5yo^N} g&{;͎8*LǞfʻ.VGSa0;Nw5~q6܌7ך]u5`RV2Az۬@]ܮpj(I@Z€"](@^H!_~_oO~BMCV},|&M^3ɿQ& d.7EG}ށcnQIM+Uk璻aԭeϢTS t>=Nv+_9\f k|/H`1XȪ &>۷+mQzM]=>MPVoMn̞J7JTAĨ GFVN@ ".B7MO^2ԙ/rN $&^ΑԒ 2msed(Bf$T$f:d|f@H V[hvSkp5bO~onR~]^JV~id>4V勹a˷¾/6' D9vY&KElKDI?UyQs٨Fjڇ@NZl`mEߕ0g SْUe}`p"`$n/Z+!seepyE3 b7n $5b>*(As0*Q@ A4 f²@ta?f絅T"Y/;^/?~"R>m 00Q#+FaٙGϤuXEUPm7oA 3!B 1D сqY~Li&]-KW/XٟüU IgqwRA$F`I*u*V%\j]DjNzt &)["`F RN\ በ!BDFoyK\OyC}PE}E_O2Df st|^"cefp'Ikٕ|Bd/;z#KNWg|LbgvV ̈VKjrl+̢rDD"PDEJI"ׄ{5^vC: 3:8f**Z4:.2B;`GaWRQmVQei[>T%lw,2% lyt1} г~U qH9 \u(o+A$pW$R(l`"T?>aD ȀZq W*3l-Ng3]yF5 {qt6{DwM8#[Ẑɼ?륿-j,mR4*\hVUĊJ"H, /bYouV >091D~wqg z ̃"5|;Y # z)kO_~o]<.sE4yΧР1CaA~4$0Jˬm8?δ _<[ue4:36M *H,&!y=} U12X#PSR]#yH0wqxߵ`ϫ#Ҩ']AiRFldMhP VbX0dD"FlL?7P2LZZ H@5OSy6I?{Z آ*fM A_uy9Go%:H 777W03cX3 8"fJjoM}ޱZ{l9*+V0c;yהpW]c$d2I E$@`G;7-p܏{txϩ}/[~ 333,ɖ 4.L.Yuf n  E#VC9'吋>4&_曝wlȤ.S'`\lm19ES * jACeT/Uq(|z1U`P 37O#=G<ړ 5@StR "iBq*EdVټO3@u>ZݪH|4]oLYJ!$O4y^9nck"$*`+&N uE6 r K5XnykYLe@U ,$+vZ\/p+ߵ0ubgT AA]7]7xd5~EO갇Ίь-F`052\P{V&ukE@%i~|U]wd{`K!mv|A=EwZ(]?amY&H)1>-5"%|ߜAѰf,8ݷwnM[*"ٯ^nyﻩl$Cӯfh?tR'#.qh!HF f J/4P2%Ei뀶ඩ{PiT{菬Z)t9ApDOE $"F"8 ^`Mko8oō 4vX$]*ody ƶӼ뺿hr`/Jba;KS bU<ǒгw[Okf, ('BTA?OAQ0ׯwdu:hs:@ tJ{ls_!ȧ{x1`t 09"N^.+K!yטj«&{eE2Aѷޏ*=?ua|mj^/i~zW (tRF!tiuHz>ݶȠo/7E|w͛g%}Ȝ}JG>$8  Α-Rd67v`fOY}(""ʃBI+"TTF,O߸~ ;A߯u^0lIY0g3=Q6#"jɠW9}=Hj!f4FjLFjN]>~{QӤff +d /Txu]mߍX$to~қ$_JNf4X]n W,Eǡ^;teV BM4U/wq'0-AYdŐ ZqƤI%E?ås 3EN`[1HQU\.3?ujg۰s6( LeOY|>iۭu]-5ӿ|OCq?3[_Qn$$UɌIBٌð@PV(v!g{g\ҀfÝcivi](15b}A>o?D` AYQY6s>:}~yE;{)v&`N1bOVA`LdQ?J$e)OftyUmYFmb糥շ#;=6SA=ɲR*t;#e `t]i E"Iiֿig40g׽oul߯fI!PM Tck00Cݞ%WRC4isBdJc,NjT|!s-پD^!EXu AjBP1i+j?"+h"'~7IHCmej v:_|_|W[[S?Z6/#^dF$D~3m&G=\,zΐ>K:`^yɱ " ̀/T~6 %1ZR:Io7;;pHAU\f4J _ g^ G6.,lxHZV qt\̖bܕq8J+HW$Y+娴 ׿є! GWW~MBsh3lr  D PH_~AS^ɳ2D@f  Ҡ!EQt8O ^j1z%cÙ&sv6'˽b7?| IOV6n{OE*YȠ I=ep0tZ$q}_'%~VV4!jH_xj^O{G<ў%29`?H= uE>AL).*Ng}gri`؇%2B?Z˙XTg52P*CHԲ4"^EǢC{Y)̀XIzK튪sYC0MA#6=T>2; 9}H' A$O`2I-=f`ȵZ=]ڎUc^T<.Sq}e"3N_yI@ f3Q3t+A {۩3"[ zlSₓ4BL2M+;,JQW,&H1$K6Kµ!@FC// ~w|?x юc'fkcѫP+k2axL$a1 ´.b ,AVP[0RȎlG_X=vG c!("q*&P/C=:Iˋ21FVt84u" $H3}?-^HwCE$@$Dxf)P!"ݣ/gd ȡ$ +JO)@k3-zO+hO31j0pU6:!$ Ԉ"v!$+.>%Q9h,.-k*rupd-3 )E54(m#i> NJ?C<ڣ:-&yq[}؅c^*-+]Ax02b/8 *L$FF SR f&=nSw%01v@rA3Kj *ѱ^$`B_ԢyBB\?OU;SWl9G F7I~)vGtzv֗(|8պ=<)_'0iY@ #HO_r\iCdz]+k{!Q !|z$~? PAb8 h *$$h&;ԆG!F7hR0LOWA?ȿCr^,SU=T]1FS&rrӓeMTt&D0ߧTfY转?0oƩe꼠@鶩6g&'*sP D E3R38Xyg|jNxd[-%GA9FZ;=72&3J f #0G"DB{˃u7+jsls$q @+I`wɿ޿1QTSbJ,Hĕ2D)R&^I$|gfjF5ٍ{͟uE{)e(Y H fEؤy撯ޑ&&?v mk r7N>:w^Uo'_ O5"!o\ vͩ?.WDGACT}߿ao_llwۂ2(N]%RccL 2f f`2t DD+{1rTqyL6?p` MLiJ~ !0I"YTμf̮T>rtQw(==rݽuXEJ "RH3;~k,,o$Mu\}޵ZOb@Of@$`U$2f f@5b:- 'V)DRe/?vʮ,3]k?XXJaa45A$,"so 2M6s̩R vχc f&"` ?}"F`܌V9&+0RߺN8p͞Zh--1{х3``H&1MY2ڋBC?s;y|~/Td_ р@*Ц8S(/PeiI.L7($ !d@mIjMČuy=UguuyQdťA[5pj 諿Oaz˶WSew^NƯ20F fDd!$A?_>.q9]q8oup<-H$G d`DgIs'% H̩#vU~|A6wNX'l E?I}QNg02`nX-($ c&B] ŜxHe-ed~iF&2f(Mry5 `BRBu4R$ 7h)7}WO}h#˃o8Ξd_vOt?X@$A33"#20`!{_z')c *K_9<*|mWO!G:5rC$}TuH>3`0f@ȁ 2df@"Ldߑxڱd4Q|/kS^߻Ct]^o@p3HDT;?+ݟ=_TwL8cM7sy}vU}8*!b@ dT?LX"'H?5ԜRRZZ$86L6Wyo~Bi1jm^?yIѱ^$,[Qb$^p]~ h??ҭm?Ѿ f ~dOm+SG]jWbN[(0m/S"f^/vxanŷWIɋ='#0$$aH0`*ЭC?DTlI*ẗH~!V_KúZ}XAXIR0l<$,+sf ժfb8IWd`M4E; 3=ZS $TLx#$iFU̅?ހR>u%?#6~*S=Px~7H“L@u3ӏB]GcnM =wKGc{]H20dT!#2 /y]Vak-LNbr-VI;;QʫLhR uvnV [<^ExCvFB=O8QE$b:!$ b#BCQɊ*@Q ?0nUF3m1bXj0gg=w*}Ӭ]N%)HNl"DR1%PQVj9"R)cU `0~'z Wa CF@Z; p$\mdFa꯳NBj^X"fpX,$`,` Ddx,ƞ& dƖ=v6q|ywSo(z"@@$I??D=Wvmn7f>5kڀAdf@Ѡ 2uTIK[ b 0Ba mloy-3{ >_ s kA3{ [5qP}6}F`  D{?9:l//zm pz˯{ۼ[, 44"0`g!$$IS`9ӞI7ESSػWݬۅA^fL"!#Hb U&N2aQK dHʿ,OR/5܆JF 0XzL[z猗]|u`Ek32#0 Ȍ0,Jt YD1hBGfWnNɥ63yKgH$VD4)6$ oQ0!Sr&Rk)97Os4{nYޑTES0Df@]<ܗYr:׿k-gKEgynRᲙJ`*u_ƕ^r!](2!c DwTc_ 9_6I?x-*?dԿ FƩE#ʦ?+IkȫI&;)0#qĥƈ~~%<3A-2F%~t[|w+604@VKxoq`﹒I)hBucEgbn HGA s'Mr c5fulI 3 3UZlOx?Y0zW-X*ttf)(ew!P\aJ}{9./JőgwDATMjw7` [## f~|TP%ֆԁZ1âk w[݌k $HٚH$H1']p 7oNyK|_it~; ^[l3KcKN[nw  o2" _eO6]+5Ko e: R HQ"b?/ b% 'OD,IZ*4EZNlHbΆFa$ClдܯhF];A~%BHǚ[)y›by0db]: ,f]913422!TM(s^Wk3Cgy[Mc=L$W6So^S^߇ՑP$ Y O9_q8+vҶ<斃j\'z63_ٵor8͍u!` %Oj$AzP33}-@0?}>CnHmB)T](RbJ%j?#Yu;jYc_SUjv;֐1IEa`\O RN abQ'<5bBܴ_5ע6@̈xOth 1ܟGOm754qR p 4 &5'$yGXd/ ̌Ó༼gWK6̈́-zx\'rt M̽]x>Ig//SɭQ2AvR&JkmMCvlXB, s:G;Pʃ^h33lep!)\ECֲ 2 RgFhb:`f7:yD=ٜLMum/V-LS&Rpf^6#s]li^xvA@RaUq3vgk>/ej7+ہa# "H)"Ȱ! mxc-|[*瞺./n`.ۗ{ګ9/KX( RR./C{س6L]fw|aS\ զ&~aTbRih *QRF4g+u^W=pLL ~G3\f2Y Qa" G8pɌ eQKK6 ^˒K_.`!"EAUaYG&Sūu@vnly }t00^7a?%@. 4좹j${zY~~l|v1=tZ`s۳"}52W\v'ߐ6Sv2Nmێצ.wHf ""0`B1 D >7pkx8&Zc O94^e>Vk6ƽ?ms]tyzI`议[oe6M]e]|y,vkYXW1tZ>E%̡CU Rf%,>G\ala,rzScUhl)⽶OMDzsXKSSpbXܬE\7&ռr:-(<=Z8]~<_Ԋ@2I6Yz1u":IQTmfs2Oz@0 2Bd"IYO _1]wDVXX_2l gh??eb/0;{dqnY7FhãG3CM r~rYM9 qDE A*;:4Sa5NguӑOhPT`$wD:0UDXsuQ&ɧw:LOPOiçK"k?_jbUT!$F@!N/'}d?gb-^cKrYqV[eh18Y ?kqG0dvOtw=413YuZP)xZjdD$U<>w*F#Q%mb9OQfɎ"|:K:3(HmqɊ{TַzQ~酪~c:Fuc?/#a !!$d$ ߮߱> |떍w=4:}DEO31Jδݾ4w\ď4>Ttc}mQɭ4p12U_֛Ms4:R,e"FKQ*ծKhHRE1t}^%3w|;7GK=cLܓFtXߍw=a $$I2@\49y<}5LD||=;7Ly4M[_ZCt˾PWmJ>t %"!뤜mt5tюMNlPn]iߴ\-Z)k3#'Ў$-i3(S`23ݝS*CHopÇK4tTp*itkDK.{;N(j-t j_K ~w:nXnqtUZpr4xf]sq ]d PQ&{}շCzPPj,;| K?qBHFFI$ $#$a$s|y|-O8ql e> *(nz7Dug=XDa$$#l;\f2fߡ 5;|/sb`V;w]ٯbv|2 X4TL =t9mWSɾl=Ʉ0f`Ke~[n`b\W9b^7v}K*SVkG0f`2SM4%|75}[_G#yfc;@Ín5:e q߶Wt 1ӚӳZկ7x>IŤLkꔲa5Un2vu]EHͿW; }ţeAlk1[=bΗj7D I$$bw_{aK{tT= 37g|M;)oy Xuo^Ǎ@'!;s7/N6|w?``ua%JV6Gx[ܕ|CB%qrdfIk/WJFߏS$[Lݷ^NW ݍfփpe)- IQb9̣\11uEoAiXLB *+ `0{gr5zu# y&/D Jne7fM;.GOJwEED@$Q[ h(pX WBjH,E`;FS"#" b\v#s=S1'}At91iS]ٱCarsA@ @Co7}yTbh|= fXY_'; ` IG&J|=6x,)ve18G?`}~'?,Ix}i{^nqoxO d!=b*o ɀڹ 2݃o2w^bR9}+A84hʝ0Tx{/7d5MJ:+j}|%܀9})f(otIm1.l4Ӊ`c"Ii)eC~)!m;_JK_P? V 0Y$Pgצ#?+\{˴)&d<'~19L|y~lFEcu7?zr.^"$)}N6x0XVe/M Gaxor6-m=.g=|v o ? mI=*ܠyPT=.^ :=:/KO{poJM]q²l kkF~z^#mO\N〻\UVTM~r_kxۗ\W&!QwkD*%gW$we1mswMTK3C粂Mzf8F_566t$6]ϕ?F*+Ś&sfa[53>I+GE| TyL%OuGSIIǸ]]^ɾ{|+ZMshJ軸4_?;@H{ x6u` oϴ_ǵ]mļ")wyշ;mnl,UaG )mm<.SIbw9w\y{W[L/Ť)v[\RkpO{,)(bK;ه~(BE_1 Q~;&2y]tc90YFM,1yd,'b:vukL =jy-R'^vLR8{|l#IXk0ak6#qK!k*Doc_k#вy2sX[e3fD@j|}YYë"n<&'Wɣm"^ }6(wڝU1OW蓼nuK',W'}g><,/Czp3oh 3"# BoVd]f~@'z>|8Jn]Lo[[v+[[s|Tfh& V5b\ǃ4͊ɾ8o,K24U]YTWlle >oe4@# `n-tV<K*#"{zmr%'%%u{fkxcFh?L&GCk$ ߲}ƿcl3!%ԝ =l|+>bFt<y0vO"n` C3L1c^wZWyxsWh߹vC_?=+~Es\?^a\r͕<W-4='-v~T+u|i9(9M0B]oS<|kF}VؔdX 'i2glU۶;Â$ qP0b3٩}X eJ;Ef\%VEhR˗>ys{/!z1a83P @\ Fُu]rXw>/ѭEI"#"^/ O{S~꺮~7n}J)XЬ)!03!?hyچr_@kw.^ l~ {|?aVznlAt0a#υwb3=*~76U:{#:p AP `# 7kd|28}NV"!ͬgZ'}z_|*A~@yKǑZuVp[j kӏ$=r_3tvN"{z{n/&12eYrY Q-lx3##3D0^ا kqv6i!=:oII՚ I?$+ھ>Dh8s, 7uZͥb—5ѺSE毊\KXө^lɼ,>ܳ~Fu7m!x4-8Nḹd 2$\MacB4;ՏzqG*A]F%dtUOG8o)uq[~rI5 (4ZjeWaaإLV*\GAgk,M² hxXTwk9Ñ1wk1.s(1n[+cjrnf6nH&@@[\z8+йeS'+o;Ksn/Qm?|`^w/;ā> yW9s}fB a 'N=~-vUAtw<7V^# mMl/? %7+toSYy۷H׏uw7R:>7qGf@}NƏip%h={4 0 2""ں9G~]\#ν?x2fhJM_r9nV^DK~l_?׉.w-ydqn?؁_yxo&b" Af 2fۭ趬Q+s?mln)Q|#7R3oT icr.f{_D|k1|1Og,TYgr.sv}N` ux8kSl2MzXuwA\?*6:""=ph _te۹:Z-8 wÆ姄W3k fɎf?a̾侼ÂھMG^ o.]íݖGj$a$ =ۄGz~a=ui,F5(/>.ON}Bo[z NU&c}5 ^Ѧ]6 me" dd ȁC@4y&97ʽZ=ܻwq`'ci걈ʪ֭3Xֆ(]R*ѭم|p=/d_c[ijP !?ⷫN4[/=.dnx7a]22S{^\GK8TnZ[1zL6+c2|QlI?mMSkg-]LJ>6 :8q<6f U~ި>r `Q"2$AQ2{/).Qa9/G,xw][#p{G*.3уƽ:Z1̃,ʋ$vc^+~i{KMIBHF, {W846ןӰ"a8k uA9n y?G9ڕu菉+ϐ< ӿ˾~-mc=3m|2ݹ%IZ"k0 20X9oCF歫][5џg8;./>ka4?gDL[ݞf#Hۄob[sZ$ ^1e_>tLtv'=ҽ##$ (![ZRV-lsu[t+>C ~0UvU<\~6 g@ ]&zLݶ.EРC?N{xwlv22B1bHb(7eEec< -.sZ3ŢPآF1ul;uZ{D:shff@LS`{zW'ko׵ jE$$$IF' D|ʵi2<慮,Okt8*b̟;ltk MթZ?לO6@L"3D@^iCW84cLh6x=;=k׹|}qٺvb4YV`lfͧ+/95_G2A dfd`E4h[ś^]4s3@9O- C.Ljpzt>MZ7-]8r\1_7_q``jiNk-ez,_+!-μ璩Ҹn>X)}^z) 㮂! uU?t5lgTퟷBf D _FMqIày@+.e÷su'~kMءHl{Jɱ}CdR|znV)$uv4A232"fdF'Y{Ny:nGz**D o?Hp;e{ZIC& `H;2 bLeIby~3au aGcM Ծ#Z;gV6r.cYElӬJQstv)ljuiTFklֶ3S@ԩݹ]1 oQDG_^ }C@"<LU)ּ*d*&fƢeUm[mlٵcFmchUM*MFkU6٥U-h[b-SRRkCi ikim`RScbjV66K)kUIK)-jYi[h[S%6SEkHV0jXZf @ @ P6R-.y4զ֕S9=>*H廃ɽ}6nXR@_jO٭b061b6rmYΏd\Wi{ IϰتZ1Meblo>zMMnEVF,,}YTxx.}{bl43wV>Pɶ澷ܝmݷ s7̟[ZW)Yxٵӟ ؂}9[<[ .N*{vj7#[#nunYkyǠm%N>}= ډ-_4z5WKK1^Ҭwg{>cLMuYc6x/1 [YkV@}җσ{5Yw}'wzOo<>z}mmCݼ{l侢MmKޮ*Ef+|q-BE[MzזՕIUETG2mq1[kZdu|m6+ZY%ۦɇx +ɕ ϰjw]QWֲەf{ƦڹuVƃkGZ^fQ)[je:(kQ&;:e9VT,] L^wp2wmm_>pmIW^jѭ+CE6% ;Doz{j֑T6Ʒyb]oJ(dA@gg۠t4z>[>Q66"` UhmP4/>/;Ou`3}bi>4VTx=@ hZ[f}4kJ!TMM :3j h׾|wg @2-H,}a[U{p4YH[XƷP* ޾ţmíT0ґ(R϶Noc}AD* ُElֶ}y_!(=`(4UH}mnʀ{hֶjSP}Mwp u͆e( B@IFT_lڸoUJ*hO>%i>WU$SF}>;WvUMx=>ֶZTPQzU-vd33gB0ݴ_]֕Vkf̳1kQZ2ev1RZm4keʴiZ+ZkMikjeRB5YAAڋ-iR6f&V R5&b"Pm LۦIm T͇]Z`4]%biDjNYan^3dzlfy^Vfֻ^2wEw+mK[o[w2[Hڹ&K5ڑ[*W&e);iR-UT6Ͳ221m-l6V6M-FPJ%[ie63Ym6( )L["كTclTb-k*ZVؚUYD(l%JjmmilkXLE!QTրȕ&fmZJmM &Nιmն2-kam+`ZS5bfemZl[ ؍EUe)nicdVيe;fBOU=Tn; IimnfRmsl.͐UUOdh6Lib`4ɓ dzMi&& L&f&h T Dƀh`@Mz&@ 4 0&&M 6&b2iD@dCM4ѣF@)$ j44#& 2i0C!L`CFѦ 24MaOSS S` %?Pɨ!I&hɈB0i5(|HD"F6.aQlc @EGcAs9u!j\9a#0<,F0B%2Ap"QS( " {p! @P~ }Y3G!X;|R>1#;~Hs=a h1(aNFe6{!5ߎ F+Ѥ Efd Ṋ 7 \_$73hN\`'v/bԸ[FjqĎ*KS@p#)Iv8*Zà$eiU*-MvhN0y@Ù#_ts@6kFQ4&"E Ll=K*iwHjp.a=FX K;Q "{CĎF% bDrDvRĆs"(y,*9bd#\Hm EO(b?.fGdqq 9 pABGI!=@Ș~Rt3 <-x')}$i1hdd qے}hc~! u`  a":VuQ]]쩒PtH*,/`RЊI1*a0c%ߎpxdD`@xųTA Y< uрB,Nq/ }7"q\Uʹι䙞ˇ` '*ık=w0Fǩܫrm{ޡ6Ѹ3ZܖUt~CЬl B$|p'}߳Y{-`  v$BwX"5" U<1vg TATQbl)iӣl$8ArvKQ!:2@qtyyl͑ڟ)zi{Om FtY~3tQ8=<lχ6 Ʌ>sJ`^t"r #"1Fe\R`az=Y]b7E Kuq: JyUDMA[1@',K#@2>wrNɕ[áӛ($~vSQ)M"M0Fh FE}[Qr6s@^32$@G.w3T0]9 iqhp80 2wvЗ%rΓ Bբt1=Ŭ-A-t1݌%ۃwc6ǶU; 8Ql%mW!_G;/Mn@T hRUfMr$堑o&vr2;{X~‘[dNS@E$%_E07--P!d䡎XٲnsҢ 3 ;$Ґ7IC{J~,y|՝J4(ڼ,M7=Kmddx}8" P cA o{ǖvغfy!'.<[^yB޶> `kwDzN^-?BS jwNn㡟Yٔ}eˬuJR\=W~QUZq,@y'2@^W*"o$n9OC/I u&$pp6oZ"a 7ЏA2e9So0m˾ v(8 Ege:!׌OMoa\&#8 PGa2[[G&&I !,yfJ:!B$ |𱃔sc%s8I '5c|DŽa{[Z휁 Z*#1C[xB^K m2@L9&X w^IhP 34l6U2(URQYtZ0D>4haܤb`4ujԾY|d.)p މq$9hq^WR=ϰOq{:mY8E0%N_N}N^-)xpG#0f8وS"1'j 5r-EfB@8u 7&wp"–&SJD|v)jEӴkQzΊZmYN2 3LT"sP㩫ǚlKc0Ӥ 6a8&R2Y9N.\O@am._m5DqƠ@Xz8yt}spZ"N&IZܤJLfBq Ӟ,qA>gN,FHzLJ8C qc>"0(Cȇ xP9c&@bx Bĝ4s#ppai Ќ8_Qxɻe~l> 2t.N;#r&Rn4[Lb\%3ę/`4pOı[7ryԘ:DJ= ob[uD2dD;iIâj[΄`ڊp2:Ԗfk:RG}ǰf(.&-E 7C@$e;܏P7ˡgp@AA!OcH5P]HC?|=G C gɣl Fo;FAs1~"FM:M9e8݇ŵU66%cdU*fx#.hK~:t|Jk?ޗ#R"⥉z 8@nͩtт]iYv!!X5c8y WYo"PLtTMlޢoޫ[t߷~sdQ{xf2M+nýRh㕨I-Dk[lƻE6idoQ"Rsbgdv2+Lb6}`Wdk[7MQ0N9&:֓w3iKl c/uY,&hp><{5i")(R>K r2"+⁁E_zW;id(YB6ics6 @wWp1E+l e9gT&N7@WY4/{{|&:X+/B#JZkn!G#l;a#)l'ڦ%pIqyC] >s—)v7_.~+O\H eLQZJԒf$r,N<ҳawocF6Zp8B U_(٠D>~"/;̪ͧI4oશ:SrF҇Y;>`EmǑM`WF xgZ'6͎2Xk䌇}qhd >{eI)fřD$K: cJճi+T.RffPWxGeO(̛3z;i`gEQDNҏĚqy:cfz?DnB65zOMrV{7k:= +-{C<%t}|lq']^6~Eu4D٤5.[S:p'BNUC"ڗ^ɵ*gu|5mt-ˡziR8a>Gv5biؔ >#2Z* @=ggܿKm=)R\X+ȻHzY5|vXU}_lp"lf"/\߳ytAM}{ʞZ H|hIIu й)Ptl듂%{'1)-mo$wf]W̭ɟ_CTN&Yi⵿2KBݤ"NҧQYiZNV涣$Ȩ_C4)‡o[*3BpT;v3LEOz[:)B0, wYy5]P{*M`y/=UyiwS#yU^ q/LU#_g}.9l%GKYI3b`4ke#VWyfOT(6)4+PL\*&ƨ:(i&FU%\!JWHU}_QH\PԫE5-LJ֕?ij-R\J߁ DNV%dsL(".D+x$Ai@`iHO#(-I]ٔ;9VN;H8[+̐SD. `bXs< !C3)'ټd",|ή6Y|FO9 *r2SkJ1΢Xb5l]y{W}4iB(#U2oQVu5DVi֕I$h4e3힙X:2d_.K|U\6%1CےE&4'I Fģ%7i)`!%L.:3HF!DJ $$*6)T^_óJtJZH=w6 1d .W?~G2*HWPd7w̞4ܵڑ3ʅ^-n:|\)tOw]K;|&UwH歬G:8Qfe8f}fOa6RU,L;kC[Z۽L*qv* ʛwڇY]mXyB挧MQaŹ{ӵAANc9TuvT谊]`9ƾ1:8fr\zQpt:R&=9qjQ^oRNVX}ӶLKCUwK~&i6-pݽ "ص56|RJK疯N.n*Kgj])]\u|S]z<$: 2 sY~4yE=µl,rxTE}EH#0[  "|_TH10CcΟ [k1 9s# IUK9y6iT[hw /l3lK mzlӜ5{e( ^>iCRU]ߏm6ӽ;:SnF,:TLU{46}h4B؟eIkVVt2 ŔŅQݯk;RơdV#*|$iߒ^VdeFq5G\_EIQ$mHc_on̕vqޫl[5#g**jK }m6Hׯª q()IZ?E7&JvhjPBw8[Ec5ߌP`mz$Fn e V[ymswWQN/8TY`d6fƤPh}չx=[ks0XJe]9w)aŝFYSfB+(\| W?= "o,Ӷ*w$o~6UuFLUYV^?{Ch1UZ:^%ݽoq]hqtǗV&_7+0 I%F[Uk4%NeJkeSL;+ߙg٪IaT7m !ZmX]mkcR`Wл.t*-s%&n(nmUEݼfư&&ujVRk?lR/.$ײZO|uNJϺO"ܷ=Dp͚wj+~(Hr;ɑxKU3_Rsl]AgunS Q{X|+e`i%Llf"SZ?$մZu=;~o;%xʲ"RT'yxds]:{}Էk`뵪vfr$x`p+ oie |J-HQܙEsLά!N֍q#*F^v|vAojf?TA.Ib,n,MZ_=mpwcc s-nHr5`IwIwt)kk^F?y.LԴ(cV֥}oB;iFOi_4ǚޒU<볛M6 ?+Ue\4U۹tqIn!v#.H6^r )AZ_Td#e\VtljCj[/EYQaj/ҺPVD|rzqEz=:X}6ҳvي !߳;IyMaҪvV<4讏UmLk_llo]U&{,R:3*;2+OǤ?%Ep邐>5r@ʕ9^uM-w&|=KpYchie\r̙U{8kƴf>Zto3'F P@kj^jSb7lT^>t-r/[:ݼ3̡݄noPDټ맬Lr竛~+Jo$IxҶk対\rg"%IjF1l4cG7s]kb}s~*1H!v!FMR5ڬA7L׶JTMjHWwVHgyQO A,~o[&Qyfec>~[TL6n+ £o,Rw&"\!SDRS=^,R5"7to'0&2NO؍QQ89b~yU9cDu銉e LrZ골5ͷSYeمh[&~^هD2γM6n֎Ѣ~,f9K%f')p~gTqģbY=YWBQ=Kޯx+qfZyg^lM 3ІYĿ >Y{:NuvvqgSDmeq#}Y4*VҠ! YVULًⷨ|H2x6JSD}&Ջ I MܦU-&Iz`CUEZWZ"޶;jXֽ4ŮnO={c{Lw{ieч ~:n5&}{E}{n Ȗ2`TY5wZ[=d]MS`f2sխ)rⰴe%{ #`~oqi-G/v[֝X"cm .YiR. {od,S(+M'.` `:;t`[bV<] .LXyMܧy)غQt]MڕBò⍆[9uʡXO (z nZ ,%IJI-ad\dtu%s7s7|}S?BK\pN%IeQz\SrKĮnBGH J$z[b7>= gDgRŷ鵹?lc}3:/oHzu.pZ7q>giF4DQf9`k2>ki!ڦU0u#@:W;IrNiCc^zPWJ(i 4Đ Dߢj^Cj8x'׵A؛oo2<Joiȣ2};D 1D|wi3eszN &f cTih Z 0`$}><땗3, 3 2Řa[$&1I%xu-0.l&~;e3gJβ/N̲[tbBҚ&eJ:O'yX?m=|: n9:~8.rYBaOrb$*ɒbYd E 0!l8ԙ>~ds9|tFO#!)`zXBvr{sP-7 #nƙ+"S8d609Rq'#'we Yd}+jdIB.hd76ެ/SYaY9At3 Ƌ;aҬU%>x"L9?ӟ&):Qڞ9ɟ } a yͶՍjő8΁s7&R0}&)ќD `$rb : $I%h(ǁ1rr<\C2EFڊ+( t^sp0(|uYRBSb-Q ̐udp'})nd>hS"QF!$f 6`ppZ=#i,&z>Qz!7eU B` 22 "S Bv DT%h6S&8r>Øh'$J葧"! $0&8avf@ʕ 4(D6 )Ɨlpl Z5iBFxѴ ~0h{2lf8$W,M~v2dT{hIY:k2"0L0F|C1M5fH?$.!nέ=Bݿ3Vfz;d.cm )>B,EHBa#Q{9$21ڙö٭ӧsջRqБ{]vW|}`\ݺ?I7H؍Vpqz *;ջIЙ a1a g#t҃ӡ7 CwDscCqh%Mjw;ƏToNhh>Q 'j]|ÇwbCY4 bmo& 'l>qI/Rmn?vy91'.M(M&L:pqx.qY_r<tS{U]*R''o*h.MI4='+ ZrP*kITXڍ Ȕ1U#j#+\]Ff<漭kFciS^CzQr5$9\Dq qw}ۉsJE;o"%f^n=)pil)[t6GĸuK?'SϷH}C)/{\ƶ~m5D/^uK.hz#^|_=jQ܁A&+JjUd[;/9gUii)Wl)`Qӫp- Ӡ9wix裟6W~^@!*“*( JZ # Id#G{O7(v}ݼ 2{-U-uVy/;?W<S$F~V$ i1|Gx*߾sxi%:W^fuE[וP_:b׿S*CnyF#J;{A~ik]-Be8P=\psv+3NkMaYQdeڋ#:R^t.X)PFݶX樏U'-ZIo-*o>x2 毮>^ l qxjKpҒ>cD!Ly" 9ܒRӼ55ob/5Wnjo\%+Y_Kx0'MtIГú$VnkJ 7rCk3tqC~mLpG^xXip鯧9FꊈmyUS\tתQw_{N_~oS*"N闧OUz-p7)m]zcWkW~5ߢ֘s;Z[]3UգcwnGJ:N&;QW+Kۀ쾫9?A<{=ЄI@Tw ͮiNZͶ3Z):++>޺޴돀GlǾMC: \=8ق? 6=mͣQU-uѬʪƈQ[â z8})|m8kI~jS+<]WLڋWn9g,tĽ2Vp4WN2.zY3~:2x[X]E5km&HftjqHIlxm9U%3`v+0'nC.5M?YcrMtv#:EM>s^9ܺf $*k:#e3D>"4:-]ch|:`p85={ҋwLSkp]&ix3 /zG< , ccNJ|TZL&=,Svˏ1(6A\G'&XA7qZa35[&YNplĘc'cwKV7iG<3L1iVj^w\x2 Àx4n2}+^@]搓)l$ "yƪXuX5KMhRvtOl oٻ/iSޠDzҩ 4 Kc ML^=bpգȤRriBnii lޝѦ0'qlK^VNI8;320#ԇSC2ȿ[N04PD A~cX{S[(37S7 NK iMg/2yvvDCCblpL{/b%[Qϳ5͛ wUTbZ*Y3!J6f/:Vò́p`twe:7#V{ +Bk$ێLl)E =$ CNOw>BmgZ{CT,8iB=#PL?!˱mj 837̊' k;)8<4祃©:AVNY_[aߙ~xxHNb_KOK#fTż_=3D:s__"h+lS7)qZ?g_Y4z²$j72i裩 j&ȇjܺi;&LhHiNJǞvW0%rHd4kCVV%.fJa6*l$ MtcR&B9 wS[SgbGU%}S_"pӶ%BZj"R"Ϋ)s#*!lR'CSluǂfX:+ Ÿ&8+jZ{J1^PjB/J.˿bO*YћnBh%zI*ִ Vs_uՔmaYٖq\V2I/0b7)GUYő[Lu }cߚ &ɲO\K|aVukVkaf5$phs,im_\JTFPTU偱vZ?KSuL:g%5TUqxp5CDP ఊjsAF(u~Z4 uUjޤCfmT*H_TEU@Bf$ݪ٭9n'Y4H)mq}Du J~|{l˾Mf !XWN}/2A}EjRsG{%F''޸jT^Vj*nYSlja Oa hPKiګzm&85Χ]\<sS^BkUίk_'^C*kNIᵤP-\&˒?X7^z%QPKmp zOwND |]ݸD/RȰ,"/xi}&&>/ 9 ɫCE$GC=L`SmcطhDB2jX!Gl#ۢḭ? V)-I ^^da#Oy˘⚧' LNZ-Wt ޶Snbf Oʭ^UAo Lp,B*/{2f /;1NLϙ￴~9]A0AT75>IqkZIr\$ zjҤ(&OcE5^J#*sLf^(I!%IV^r4 "KDR`Ƞ4GksR}Q/*p(nĐ R-rSi5$Sg$NUĩ%.bS&懡sjЮkC4-?Ɛ$k{3wQ(W7 Mܹk/*Z4ZSȮ8H5/x[dUIv9Jޖ:pׅTktyQ#X|Q2#uQ >*z\R "\k\e}eH1^- e͜WﶍaCqZvE:0H8IPV7MIU25p:MFsv9tUӎj bt/$HEA}vӎjX=rm}QuA*(0+ޙ4~5q,Hx.,O!i_+^ÿYW c$t`8v+.lM$$ŃbW)kL[ XV`S~U)3KPZ?[:E} 7 |{/=1xϙK֗Id'Aϳhg[lgQPuB2OD>j$^5 j n\a^t:iP?=)ZƢ 3SB_JT61o.^f,4(u.y-,C*C QT=|I$1M&[\ԩ*rA`sNO18rӷAF5;@ u6PUJŨ >vɉu}S CTUwImp/e5V;uxIȕ1jԽSYSTחXʆZ%j_\ϫ˂j9"mЎzrl{QYZU dR5}[cozՠlݙA5C>+wrP\7p(I]"k/IXvI6~@A'ՙ)=G+ȼM$YH"r7)kISʬOO㷋꒽:e*>]ڪU$8LU/Z4T6EUXnb%{_$WzOǚ {IBc(3KVwJ zUM4֧ ]d]`/ Ra'uyJt")xmjɭ⭣JvT5oZ P2I4IMw"B1m7l{x4#ev 1` f0:坄5MRB sUWVP}@y&iAxZPYz)ӈ'yYuw4C|Կ\2s48Xσ56}lQi[8N~7_Z)h:*hnH,UmqzU oK{*Wnc%fhrS6zKs2U+}hfUSXTɶgªY2J5 ~>05R(8 H>KVkn̥Mpp(H;}ҡNn*@ۖ[?|&K:h=(Yr 3釞l2p(bV[Bj[T!ё객%SYձrvJBjj|,:AI+4Z^v+*{ɹ (;h34 I۲ib:j;(cu~/ٜIR#oK+S{zʕ?=9ۺ '÷ң5N&jzW{S3/p vW3aވ+Bt^=KmңE+C.P:TWX!`Sp.1LN8IǛ*/&;m^}H rZE8۹O-3 B:sJ Ea\~d=Ց/KB;7̄]Gp#K1 GYjΓ%1SkRbA)%7yR%ja^%u0=־IPKJ/ik*v+ G.X3&mS;Ү ?zL5N*6 q|t\jvy~K(²5BL>q~SFN%AG,O55n%Fsu?zxˤo#)ZlyrwZӢΙ-NIiS'P c".oDY"RpoMc{s3}R]Y/* !bSGMi+"kN\ {[Wqn;'qHl0. #A\D+6+(vքUj lfV)P7}m2nRq}\X+:n潤iއ08;uMh!_#gY߾q-󬱣}52bE4*[i7^o8V\{~2=۶$=MZ!֧] ~ָ;.tpUfWYjg) 7/_kktΨ땝<ȴh!;Ǖ1J@ʷnL6E*T*"TU4bՕ4uE2եP#waUg *Շel_ٿ)vhՆֹ/6fh)VUXF͐t-fqc4QNXXڵ ­+,Kef$9nϯA/Jf뱩k mە_z[b3PsSPe\ٗ-__v3n'),X4v-*,){d±]}ܺZ~R״vz(<-˷WRdRɎN^ҰrI #2cֻ/Ĺ^3,Q N3$Pџ^7T "-]f+Oa{G}-˚o 25wRj܆+{uZ6f]EɆhYEWiy]Z9D>r[ho6!0f:IW=[]OtZn뛀+n!ޕbȲph ,i _iS%o4' ݩ&}Ƀ8:KpkJp6,kNy[%iOS2iS _8-R/8NՍz5nnG: 'Sʲ8X_,=}K8lqy|whꬫ+M|br>7\GY=ӌe&}ŖhbVٮi^WGaUPT'nmM@DY&t 3]SIN!&vqYQ3~mfmJeQUutP:ޤVǥ]5Mx屳=Agڕa ާ2*^S4Dֹ ,!\$mBڵ55OG؟#'uщuidT} A'9WUF%}{re!n+Xuq.rW1/j|vv~2\xf]!P. 79Yt/bc3s۩_"9-}͓xxؖ)󊶡 LVc[\\۪W]}Q@\2V.+!uaZͲ\صy&fل}d;vro#B[t}D֖Mqң){{w!lKxS=k"B2wRzv}p)o3jMҥzR rƚh zYƛ,Wj^1F4᏾krH"d3Ͱ7f^;Ԥi8n"4#*4(W5O.d}8oY7 =?ZA>bF.SJe=!'3O\>o+z*f{|VNX%cO{Iy6(&Ihx*duT'9 #'"ĉzD`-5Y`dk%&bLL|MoI4iU9sWzvaJ%K,fFt%I#g:4*l%]|ݎwkp-Kйҗ$I:ޣK P%|:۲|.NRX)OZvIplhx7_ö@*u "-;^f5bpwFw֝? 5]apOf\t7.9kESO :ZjӖVP܋R^H׹bB!&mmִRYSՕeׂ$+sWD?ʊNtgS$Nީڐk33//_nH̾I4H7yi[Yvj\dZYZu ʆ[=0繒BM$Fshu,;޻j%K P0 j߰LS~ݵWJ4+ # bڧt违QlդqF{EPб(y ;Bq;M>@*k-tsP>z/`.RٚǠoў%Ig؃dimʌ=SbRgK}([q:i&[N$ v1zVYd/ngӽꋏh6΢^Uxac6$ĵHnJݞ[=9)tUtxAĴTΒ*j((O(z0}͛lSȒrt>28W5Uljr4t4F;hl*FG#l:KRC<-HueM\F3 HXpͼfX)̒azzF7p/R2RH@֋/3Ui-Cϛ47$yocb{CMwOC.hLJ9D.N =M0OCfSy;5.xH*P֦ʯJ_{[,I[$mI3ͼpZQ&qÍUQ=Q'm^,KFeLO.\_DžeL21v~藴IcOg\-ҳ:q &MWOA8JST7n^A7; 3|auit8lwO恠OPi«(e\'L<5sr!i2o"*(JlMjIuGL6Kej5 nэ}G1r_Ym*#ʻ B('Fݳk qJC ,~̑/T恃St,S~N EZG$ PjVA$۶Aj"(eZ. \;8' r(shZh6nO.+Ҡ"b)d߰kgOUrJS2"ԡ)ߥ6!_f f&0Ǥk$fϞwX(ÉJɓBqӣa_iriqQǰA~Mg`u*J4 8G9 `\1Bl䲭ete {.rƌ9FsDʡmd+S䨲h?YD~uAc\R rjSmz-eD'Eҽ噅1w[s+B.gRu^VWh>׉cR 8rջ҉sQUiSޥ/F6v"䚯>2Ȍ+}c#K`Q bD>F} rgW9-S(6+nUw@>7ZU*ڬTttXc4¡!غp%[' t9埈yg 9O,˺Dr[:GOe(}]f D2O^4͂03%qn؍LQTl>g"kB;?lE &⪯K`Ulo2Ur2wZnswyٲFペ(tbr0˸^ʺ nu#LI6 [Y"CH' 3?_WaXOVەfOi<ujfK7msLڸʸn;H2(Ѓ_n XB3'jWP溞]Hh]rYUr虸}xKX/Ӟ!T-&BK2Xp_{.i*@)eAwd"=J"(놩N=B d۽IଈUQU^mzZ?(TvVФҐ:61ev) PꚩRI'/ջjλ<^n°&lT5Lӻ jfWEC(d邯d~#Tt JZY׽S[e %+pUϕAQ(GF"NEnu'MJm˖(킞B&Ăߊ~)JۡkjwH)S `(i+Z*i%O{]Xx[P*xlKyڄScWZ}PKuik+ oY%嵧2j~MCϦ=ַS? {H'pp}qȴ 4".cb\eu7& QTusOܦSV.#M%8=3Yq`V1dTG^8Pv=𛱯wbO[*kXeRn+*/++#ϱ_hB?sO+4MN:޹]I쟵{^St#n fª72嵁eU3ҵeF%i*Ε]oM 7+9:d+ro515ɫHIdz=Ui+FAvM_gNeN'$<$HES㌊"RZs ܬk=k+!܍R7mkdy 9HR@1kK:\s"PXc]a+4R:3sL7 <>NUEM5 BZfW!6DZSyCjX[fJlxS'jJQ+SōsU,p%FW J4FPnZL͸u`RjPwQIv%K|Ф:`֠Y"QH@ړnۺaG `(mb\dLNDU4]mmoTqYA״H'k!&^4jh9Wa\Jx&z][iQYn`[.%@.͐dT׺ԫlz/QhFmi<#LQnj9L3\5ٹ6/CB{k)7z23 j-%eh ï<Ɠe^ *u(tN5{R}H3ܩFeB4Ϊ.s,W5;Jmj7ʰ7LjW[r#yQl $c")*MaT)Ʒ&ZثXeܫn^2n4>M:[g+j~ }n K,|8 ~/QfDʝeU:{Я-a\Z&C/wXaFD$e^m]K'jピokl(ģ-U5Ecd}[Wl%TZyیT*WkC׍vJ4I䁄VZoVCm}+kV.H$Nڴ*B1+ fj+ıEjdoVN⦥foK q=Lcr~6ʻZ UXT^2}[]>Ǎo Z˯n|(}@ZHF2%껐3Ģ.)K\ w>iB.>Si:)E:7OB͜[M9vvϔH73nil4-z=2^]VCf#trek*Qx9 3kU!"32L"*K2=Y~s:IDK#q@iŨI˶꨹g]+-7̍eANuҬ)X$FBLxFKxߵܵu+meGT\DYV*-ay{WF=ݹRZŕq}U5 ?20/ Adԃ!bTq$sĠ.dSTrЗ'cA ܫ$E/l,N GY;L9SKw"h˨" l-s\[GIe9g9 j.C|*t/JΉ+L wFяHV. ȡ,m_þB6S٣?FditsZ¶ Y|d c0}̲ܞ4?E1 BPq*AOžŕ;JEMA͕/#pM#Tш4f|5>~:*&)W)$E DThs~t)N3, eQN͸hebaf+d?7Et 6ǡ>7>Et=e0tc!G9s(7L9+[XznnZpV{9>Pm/^5xW%S^=@\U͎Q 4[ZTZ7O5g73ɄTzXɔ)a1)cԧmg'i|I v]n$+(M`;T奛Yޥּ"hgkyTuh}<Ute#BpwRB[ Z-F޾ÿj* A%xzԆI ͸)=ڤߺ)?xՋW;mc1QD5nenkЋ-4蚋l%NZ2߯AL:>;y(ƒ%/;ZڔVp|kڧDeG]ypC{Ub&)dbLu6iް[QF͌nvΊ]*2%.K*EG}NϲX4ܤMݦvbҤ#eZ(=fk9k6Q,#b S3_C5;L)poL4N#$3V9kKbM=;.GBxlrP4YG%QdEC>SM%Tf jLso[LC|(U?Ա{寈ziЍ:Gu:~L[Ha73@W6ԝݡf[WpJndK଍c5!a K5#V!a<-ݓ_wM~ZS~Sz3t[2|6l"XV8)#$ü T=W&y!,A r|U%kXި,gxQ.S^6MLY-޵hMK7p]IYe:(qEy`7MkӴD%.yeZ~osK:Tڹ,xg|*˖Mיi9ѹ !q1xs;`y5;GgaGmu^j: QU5=x5)ie-Ou4_kad( =!`\Qe:DF1 b.MbZo*~鈓qV5uyjUxԚL;l8 s4lZDZBPKIsD۾l@c2Oˌ:Fy?s3.˺X晲 ;gYy~4_Z& J& `קUIΚH75i NwUO$ ̑/,-g܎6Ү,2ɡG cRV"kEDU\G7ow $jZs]Vt'.j)NH?t"Y$6 ڑy}&or3c$ZE lx4~Rp0I{1^]?9_VU8vz.#3d{ *OT Z)j~ MϳuF-O2U 9:VYi^42UV&-|lVno|{&1f hޮ"*Z2UӊɿGWTD/AXZe4u< 9C+ƪ i]]kQ\ӏ",L,ls*Bu]|'yiT&)`U"YOU V\ z-"|K+n%1nȭm{v7(5M:sr= -.ZҖɸ`$3B.*k5Sה6D%Hՙb5+cmU.l;cU3re"q`tYc٢G'p*qPuct4/k{tz)>g Qoi 29ݱȪм~&c(W`;9y"ǻZĹ'ȶ+#c+~/|)m1xRS ;Q^DѼo\#I꓿$ʓB7b/ IŗuJ;y+@"ۖqi7rv]@y#|M_"n^5օGxࡽ,z'JI+xb;͂,ҸuPPK;FVH3Ƌi[K etG4؆ؙK?xyowgn]6K;f NK'IҲX2u%F-@50?X-K#nϱ,GC#~= `0I/ߧ> U֝cة R5ЧʪlѲhT༬4<,യPshI^&űmzλ/XfOX%&1*9ィX$ugZՁKx+LzAD 0w,glԧ89Ssش\>!vCyvP {TjDޯa[m]8N/he9f`C(O.IgoPkk67l i#*ί5YBZMjJʋԆ B0Hy~<ʦl+@3+~9k#xF"-7gi#LNH$A7ET][5Ǵ &9~GR'TYCDvqfumڕWRi+:N˵O&kWֹ5DهuPD9wA/ L= r[>&Ss˫~M9w$n,peY'.֍M4?vfK\!|K<DOYQ)N܇ɼƙF*M9ll^@~=H^ti`EbP>+8('cXS<`:!642>fǵ:߲;|uJl hn*'Vl3XDصeWf1wuaZ֥+7jߨs{nV_UuO*GX$\*K.s> BwH-K6t DkQfwYvhB+ J{Swg7#\%JF,C"ڗA3]^5;X>S`Rq/#Aq4jz๭ ҧj̩`죘EHJ>mAYū^=41:WՙZI7_<2ې=Ӽ%b?gZ!һH=&Emo=eUgf&azmSKJS`ŧ.٨Ŗ3T{à<g*h6y8p=-bVTykid>]EF(jWbܞ,\49ʜflvƑB5z _#"=Ey[*=W3Ws5r\0%8Xa妖l1N%8~df/C.I6{=aKd¸ۄp`1e| ~/m͔eAq/##FcYU2 ?+N]TBhgy䨪~GK-bۺqV}@::֫JI"MzTϧeZ'y_zlKCӴ5 i' /Y݌d'K#*޹+UY2ґTbG},TfR^)IRXEiA5cz c "}^|O2\]a3{¨N>ءpز1+M" X/,eA |z-_V>rl][B#:(Q6eіN~4e6ȴ39)uhϒj&S/;ivZҥMh\Uued M.`7vO}M,P?m6-^{+ȅsDUQ~.KbκdݫBsp Q5m^ergXԡz_פt[d]?SOުZ}kIf2V=u\x-|CNqGɪt6SoMʓJW'bRd6,Q 4NQu?:/YU{ 4- b:p)\boT1حZVtѓC{`5Ve0_-p֕>cZR&9Y$ d/ >VI7z`8ZW܏ְO(T2\{]u G%F5wU"ar)Wꪷ6PމO`!*FHrFp賔t7G;+Ο- <x%eyݓ*:ޔNtXq,{Uv˄Y} X+qjYa k.TӴϹLdiˆ(j6TD[c\'k%%Lq/Un߷&jCI晽u'hmхR%bsL_5$~`bIT5a#6zWC-M®! HWhf߳7k▯yt̔7Ecڬ7[jM@_KB%I8J7N _SErMKr)+LܕwՅyGQ]UGma:Zڴl"71lvy"0Uy-AiTq-< Ӏ)@ҟ/3T*KC˂\hp<ͣH`@0-kG7ԋuOÊZf8JҔ$|ًR) F8 P(H!h@*^! $;hQ-EKU(P 0C@U J4,JRI3DE)%b(( fh a(VՔP!"Uɇ0HeJCÎp۫rUؔLiXplTTeq 6x3Y9B2h:sn$Ϊtٿ':\;?32Vƍw4q=acqV6 0Ӫ;~V)҇m浥AhcQ1}|Qƒ&HH@$I55j\>M7&eͼ5Z ~1Qb2a뺕&&$z(I@$ºLo!nI_%zك}z/u{7C;H 3y!Nq|&C ɉ)Nmq y{kV LN7 ~R1X4I9.&0(`+DQFxdŬ+ Z1@鷷Iox?Lj!nLoxsv^"ZlY-ml{#\ԫQW}e\_9gs]6mE`qBGUUꪴb%W+!p8K8;IwtO[w<zRE9m#uyڍ(7C#U4$OCΔ]ѭY]oǩ:-Ezbz%9^qwW)ɸ)MuzGXn.GC9#ӥH-pҷnR.%7tNWJuÑwo'LKEaZ;N2@- /&LB@vwƽ MRݖ);QK?8eh$ʕo-vT{gܖ~\mU`SRryXz}jknr\7"V5ͧoތuxH=J&9N>Kpj1m3P2C `:ctJ4:v"x^%$P yn:!qWĪIԞDɅAC{ JDBI0K9C%BzźIl8StynvG0@H{Wĉ3/M /Ó04l=VA VN@G/LR/LGuV'Koz-/Wbt,k/o)#or#嵺?[!u׮$ax-\sG1ɨg۝ վȽ=/g]^O2ȋS#+ғ6rԎRI Z'< ;G2㟑z(Hx{t>lAk2fnLOxz!Yz9ӻawym$ =s[1vRZ ˣR;Wb3"\~sౠb63M,:r7|=]|Ivjm[ǸC~9IO魛`vSWUƕ򬛳~GGv*yt%ѭ:;Lxyf_;=^f!XQ|/gtct#bpZS 2@ 50GiO¬"" "!"! ԬBDAB@D1!,1D2${3#qcCDFбE0KCLJ  J Zs1J J3h(31(30((s13 J JJ FRQ@2Fd$CP`a L3DBQ5UC,Lԉ0QM0A,MPUK E) HUTT !А%I0JUTJAD,(LB** ! "(H!` J JJ J FDAAAAC@PPPPPPPPPPPPPPPRPPPPPPRPPR_1$0PPPPPRRRPPPRa(jB w rQ5%%-%-%%,Ĥi)iii)))))i))))))))))i)i))iJJ@ ~xl%XF)i)))))))))))) JJJy ($j Ș(""( ;ݧcɇw̄G5keQ~TwDnx`ںAu{ïa\X<I! >{PDOD̎Ȓqkrvond&#ߔ:Q%1Q@'cTBcͧb$W˜M֋ק[:YgDN0v:ovyR7""!Foҙ΍He-h {XtױWӱ~ulXMf{\ۗQ 9[V[2Å$h++-q'Re ˲uFj=`u/ҥ`ǐ-9y].äʵQrCl̤/H$I"}$?`i0+uE$Hn+I. yҭ20>-<|px}M3* !nkYolo7V 8bʪ1M;) V._[ CXxvv/IҤ`/B'_98"8gԥD7:Wj'w`K筞c[ I] :ķJTVX}o(B$#Wf XjaLV7 C!&0B3 mǸ: b<>M w )@*,Җ_Љ,$Hz÷@E3l;Ē4ٙ Q風M)pNH3tn&) HrЈ=#"eHD;C]1A@T(aFPƂ*}$IFC y—pZ 9B9U Hq{vYW0-"atf21Eɂc _ Va8s9g"WR[hέSaZGb=kMlmŤ]ia')HsjVƲ1Eg` vC՜NafcaOD] ! ~CRd{ PqпR{e4W!Pqv6(((afagLT4[>ĺ-)?\3|'<'w];>9)IyK:dBzy<}O9i'T$C 0-Ȣۢ@rQ<^N7Мi6DN oS*H_nuhvyrM((((((=2{isoϟ$$)^=Q3r<?Bw~d8#=^X֋^q;IZ%IwVzb~F XHH׬Bd=72`KD8XܢLnxي9VNZK;nHXY^(~/ͥ/媺N+~ c('d{>hή|?~>K!%O]x&x/X3:F+]thuJZͰcT}W_ZW KGw{w?"en'"A rQsYƽq7֢v_^.;{, XRӚ2T{uGma7f@?//?SO_5@룩֪IeuoKs?#xdC;Lj_a⤑4~j!:ku׼ M8"~{8W8$<„'tβ0HxGv1=Cf VaH84Ok)_ܑbnڻyL>0$+juR%yi IY:x@鄂S= !iY㰄i^Y$bv0C5ևII P8=MLAU&z_)SVN57eJgGS'.(Y1$|k~S_CeWј#E*ƫĻkopI-mjψ Nѱ&3Ph0SE7Eیxo =_[|Nۙ6O}43{uC^}Wݧdp07%┗Ÿ>zpO `4(:k{nĚzr|rG$#SYo![g px۲ [Y@2䅅"٧[:kY^쭀cy]B^럆K/(ԧq:IU]Jvz8GGQ~3ƻr?eh{D/i_c$ʓ=r~Drnn^r^Om~M bq"5D*w9Z u`)\?rBÜw6s]2o O'ebn{w)c:{y&t(Sv>\8%/sJhXzsc>{5'7FBGjU.8sJO8Rr􆜙Q$HSr&9 Tw- w0] k=uR!!!{4^zXUN.8HH]CI%%RURRU%%%%%%%RRRRRRRUU%%UUURRRRRU%UU%%RRRUURRRRURRUUUU%%RUUUUURRU%RU%%%URRRRU%%%%RRU%RRI FuU $%ꯞ>AM{d.2ZB퇎6_EƼlGVox:N99}][f ;pBFT$2jڵ @}:⪢Hoj*>_[1}x.q\7GGO=fF AصNvEQEQEYgR$_dqwL}2wbR53&$x 3)tiOX\gcfHvLBBB_)s] +;-yLkMt<sI t^&;^X<="cRK4>-"H_N~ :>{c”955-{!Z̚]p__fMVRf0l tƽ]BP0m1h-+|K}|ݦvY>ޖ̺δTݼ);?(yGf)T:!)'7G|)G}!IA^ψ;pPN``2{܎~ȨR_:t$Dz xoP˾D5'yO<}o0FS^,ZfA竰(yKv_k.3Zy=:!܄tsT@1}7:c5nJPM4Ө?Q=g߿f:eϝ|}/eEbSLqa77ߝ}:#)5-O{/_3 [#~xe. m09ļ*?A+ԗg딸]c8M.HV_nI"5%JDt{c{<F܎I!r0$w3g2% \ %\]߈n@3p&O!!K+lrj瘳e5" **N]=~cć2~ x]ù 9pyֱP̊(HUm}yvd C۬xJ$aobyPw (d>@Bω*A!3Jת:]ãξC V)rG8PnUEK1fd$/r!OÿyȤeς;[LŊ!01pB@0=Fs#%}ޯZֳYx4(U)l,}Q*;XV0bG"!ٖ8ĽgvLYOzPHQ/;1Ni=c:$;By NlNc=wx>Q|!glüSdkt]û%o;ۭxM|ͺ\cWv`I.zz'VGvԛ.U"eYg}q&yv֞ip)s>{yxkmIiֶnz sF19g<:(vRp^j4fn[JɅ2\!#O+R 5+ |]VɒΊ5q e6b%LDߟˇ !{w ՜Vh Ru^ب] ݭݻa&a&Ti͞Z.2?()&ĴK7~a\^wWW$I -5&M)ޔ~æŒI Jyp]] 0I$Lس<4XKQ>YO]c9xxiCCʺR7|Hi |2Jlj ׅ,v.Wh\'^}ÝB~_"o:fRJ/exY/$I$\ʮ^gCm=O'zm|BSۇvzp#_>)=d!jxbdAx ,ҖO^MR^ mr[t4<6rx]<'1كT IěWSצݽ&D]J('iw fЅiz;ɡz8_JCvqln'1M ^K7l)myu%Ԕ tNſ~$rHIw>m+uw~;Uv59߂L;=.ZmU͕w4#j񀨤w|<:f]1ag^XM]N>!?DStxSm}w>9}ҹwp"~sP.}ǧ)?N)$\8JRBUuȔomTJ#}8D?j9J׈hۿ_?6|R]׶g`WvwS%:v?/ewHBI%M* )**)))))&JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ.~tI$$$.wnJ|jHoq1շQS` ?"rpq6R{n+HIֵj}x!>hu1m)毦2"QVlb %kXk;,vM=,tEjZtJ_^} \@kpfIObaȉ4PI৵| Ʉh՞hƉ κk2O_*{puXpOd;DH]yIFk}WRE҆<|%ͩQGJE&S32L\B2. ݵҏ]1wkzR2̠mëq.c~5eTRFV[ŠǷhm'9\4Q#ycG[>4y;g9<'[R\3!U܀;pҧU6:Ҍ35f`Bi>G1lf&p,/&L͓%\tmikZK}EIɮŵ+:8@w S\{;G= zv˧ vfUȪCSUEQrw_ǁ"_tS㷞.˅p {|߻LV:'4T"2(K ڮq׫n5aǰQ ΨbU5;};dvˢ'S&5#u'1Fu@<3@ʓ\£m,ڈ(R^ZfGQW5z/qb:А.sFroIsHba׵To]iN5b$?I]zOWLkoN(k6o4 l,ooz%q3 o"k.{I,"Nrʷ͋TeV6l9Kz}},-zhc)1#9I-PPѭu+.Obbr}vWڠն`R4Dl\.t[}dbj[47a|SRTR Z^'I봱 uASzt;ؼ g@bg|LĬ6 ގ:K#EGnSXT Ӓ͢h\V"$BFش#n*1Ei=)XQ?A;sb+$B{+y̽?!Wn8BVRkr5*?*H$چf4C9ya\4WBRo̯Y5mݦTFƺڧjUG"_"WO^J &ZEj-*J~9rk:*εa+or!P~/F "x ~\&a1^qkm*U՞B 5k}qĹ/{K@AlMs4<$M++ ٩BӻHLLN2o1zO7kuzHmSs)J[ڗ' )}|/KFLu-DY쬽,EJ'(>rOFn5AeIsr3wfrlS-EsJըwg?vO;Fkt'ҝ5CϜM&s\CNh6IEOUݍvPjsMј=I4ݴFYWaվ%X -eSVȝdZ>Z5yXOW䪧 @cP$ {wu< -"0c`{"6\`!u1+]ؘ0Ggk.*ӿy>3NڮmHc'UEmV۠gDКSku6.3 kefs l3 ߋ!#5Ä!01cAHqys#K!EfLI ۏ4Q㝉rLչ;Æ2D֋cA6hMA8֦OlóSe#h>b亦{D! .s9cx!0Х]˕K/ebaz]9p')`O H&TEggcϋ,%aݞ[ҨȳөGb_J$ӭY˦8m\day|-ԟ8G~g7 n#2qP >pY>"7r9(`9QHbN$W5`\ɏ5NT oŞQx܇V/]7,HGR/o/d7q ȠGn5{Ql0?c>~w" me3un(@szgC/ 1>!I!{??w_ Ix~zDN[OgoyQu ԇ}88Z&[H嶇㐁ĶG*\? SiS B1F544"A$T1^PB>ZKŸ|ڤ1; A єwbVI\Q8ƩC.-]PQe7, |G{)?9(TD0)̙2&`K٭Ff҄hd',gYXafUhF8eiv͓Q0ڋyNZo6A\-VhԚxAYXJh@BA)9($9v'x5(N ;?bA&hpqeIc7jS'Ϯh"Jb a3fffarVp ݹ iĎ!mbhQMh3ɒFz,O f ج9r+=,#NV vmyW!Ҽ;nC~ [y`Udxz8rqupS/A]clپYT'*AjecV蒫 XI1GTf#[̒8"Ӧkfݶ\BCMLB@c-Ɨ Z꺨]k؊VEAwdP",z S$\v(Kz]xci=:zVE̦h}FzB][L?HL&6 ɶxѯap/iͣ4uuhRiJWIXwYHzKK.%$B2 kuIՁy3E۠:79f(| ;2`82 BkEl;8T0..|$pn ה/)Z/¶38 ׸qR1Hr3 ťXPK^`s&7qvH",6Q"uV!bURd>UyJښlj:ijdz 6PBAܰ/[뫾8Ju߂**𤬋ɿA62 @/?ie8&e5'DJ8^iDo ލ/Zlw'" Vl\P \1(/hi+B-`rn T-h*=dGcG}D:S%(h׏"GtƔN .|DW42"ILV|$ZqM+x(SoWR)T=JPVꭔ# #HKXWPK|aTZʿy8jBr)щ`KnCh67ٲ6C*J=s3#9֗3Mž$f˓5gCeWg|V TF4BP%(( R YrƶU)8_!Ẑk6fJh=NLڠJ*y`kXeinx6`F0K~D]x~!uW1K@n> ($3fMx%y=lCBjL{+ T~POWedr3g˿>,,4Jm:/wNN88c6<!5WP4O6fJ$ʖ.  ČM`Ɛߌs = pS?΃< 4@D˦?>m%Ϥ6 ~F;OњT=Hz4BemkiӠ]fP js[[:bjɈ,ju`B~JO AEE9˛Ld1!! g@4J8fI `3I4k;ZdJM9<$0m(Ǿ-'*YD5ﳕ:ͧt(>kOyl{=q*ʻa"s#O*.TPm5NTe9"ѩ2dkeɓ'mİ-vFO+b]4;OQ#}U_ܳ(2Drظu鍚L#1OMShK '$anPOcS\,^(;iYwK29hg c5rO+IҒʱdu[mx\F~zo28:jq]<3qM[Զ9S9ku{Lۍ'y5}-쥟=3$.egY&[¨L:!Ut3; 7ɶ1DHu"BmȣT Ԓn\'NJf+k䶠64e_uIkV+ŭk\ K|&Ӷ>+NnǶ2 8b]q#8٤cq͒/|/R6yŎ"=nZ8qZV}C3mu'2m~0#jˣ ǕŒ2GH! `ČpAo4aҚ!nR5~#nM]1DʾU_T(JMXWV؇lڗ6H$KSRb&[5ӷ-k5sUHiXh8hvU<)UQ2M]eg v0/cv}l$"3eqBWFޘ67>D8LA\K? 8-Ҩ'Am,BOAoNPtGm5"v6Iu֎D:Mk36Y\~oi͸rq0&? -**Fl8+莠@@۾jal4 u{03u/IZ^|zUiEۦ~fFnr n,Ӭ[Y;q7aZG.[jKTIJf@5-\`FHT&ZeOU2IfMo +6QVCv)/"LⰨ$XYTf˛V*9#LS4TUuu4l6 r(&nEeI dQ؇1֘Vϰ"?cf…2,ڄ)k 4l=nI.vwIKwnm뤶o-R@=U̖W\_[(!ej-͢~"'AoF1_C Ao5mmgc |/Գ6}&fvhPϡY}JĮ/kQY$?V&}XIy4=Z6 >\6TpOY[~05t[Xl>K<U.ٶHpVsUEOݪ˭mMҞK[ f&¶K%FT~ qoudmԴп5ow$C""|4XNO{A=Cka*a{}N{:]Ȓ6_9JH3:IJ9ɮ$\FSZFizk͋..fl*p3LҤjF1U3^ f.E+DkHدCFkr`(T;53pVw03Υ9φAԒ3ک>XM޵V{P2KzWz29wvup_')bJ/,K.|ڵʼh/[<-bNju34~8_?zG Kcr?|qMwořRP0zA ٵS4R"@O"cv.8^%]9$V"ar8МoR >E{BUhΌd,q'Szr']A8wa3F!ekbr=m!$7\0;[w70Oi9"5"7Sz&x&XDN/f3ÅQ8PȗiNolgDgi9Ињ",_l NV}(h)S= ;ͷġdKK\Fڷv-nvO#.O^o.w`v6_URmyە3eYVL)QjUl!zQn:#wݰ(_d_,1xf cKCD5Cgp$f䇥i򫚀7fׇڌ]m>v'i;HJ%K^tRjG(gJ%r}3k u_]_`iQP lNKR:XXؾƵz){5ћ[4ѺM| Eԕ;ޜ5%>Grfd]Lj*La]xBIVm/Tt%kaI͞h:i'T\;#}lE"uT;|<_bU<+r@>8Kgu'A*"FOTEqr:֣34銀ӿgME՛\uu^HL6ͬ5# M3lFd/GШts <_\Nr?ӒfZAIw}?"[MݱGRe;Mt"h_4,`]~ooVW .&/bԴpDad&["EA' j'(ȟQe 0 ^ ([dm"mJ(tw=Q4'MdL5FY |Y%wĐ ~n) +'FR5f Kt@js`ۘ<̓T6{9 FDVAHmS^<釷F:uiWUuW"r69۔<:>SA4}Vn'Ivi*P^J^ŭHTg^h% hߢ4r6QKf)_~m1xM@vP (vwĚ&ڶé|ү 7bP⚴uEbtfcOTUANc%}gЭb\46 3M&}KRtIA$؍|EPS JH &sul6guiM*Ec*I%˵%nrn捪gJT/WKdcB]\J F $˰Q_+V>h|λ#l Y'I'x/~wJ՟$t^dJO\|w~o/4ZAD>ES!@@@w` 1X mտ碍S'b"ރU[0R&i_.Ax'TƹGKbl' u'r b B*BL'Ło3Xn3X +GFEfnTIjr=nUS|>pdnMkV ,#PuQYu|'/vl-PkHٲNiXĶɷΩ(,{Mg[̺,sRYZwM}̮ %pMrUu*/bMc/_*M]k֦%[sskg,lۓ$\[W9}ά<1XNPIRU&D@(LN [R^LFƥ}[}cfy~{NʪO-7NOG2^[OxlU* W LX*b5elb*)"MI#i;L)iYb_AYOJՍ\QuͿ3JKFW؂JSD`WM'5vږ`f!7eB`EwnU83+HE}j^ˬPل^W4飫=M?HƱ)eF..[ 'C9n"%ah)e\aO٦ogIXיִjˌSc$M\tz(C(&d7}6d֦yUuMwG%%F^f}頉JduɽsX\؂w`)SDY5 ; ~N+ٱlRH'h4Cp-3㲗)d 6J6ʃkή,T$Y.U8ҴN%E%MF/쟆ٰh( i$k*< NN)Uv=\:6Z&LWmVfC0KX,o\tf=o+m}n@^*U-;Kɵf&z/v OZE~ڄto=~ZώṭA&^Z\IӅɊ]/}9?~yx^NxR-)O?:JNoGFuup͟[喞˜юuS8V N5%٤]`ׁ"Z!d|Bc,E\6d~IpGueHUn̶J!e%10Sվhg}ҩNCw}2k,h'}JIs+c%yJhw"vZ7MTuy>UKzH7=>2)Oq.蓾/8kmJ b QIILE3 )6W:/on{jڬMzL4Momc+\q︭[#: MK]G'oҕFRWuV"Ջь7ɯ]||ܪ4@Gՠ .F͠@mUVE6z::MmyF< 3<~Ms+%D>EXڶ%rat M7n[?& ޿fQo#$4EMipڄxgɢqn7ZGlVo&pޔ jyqyŒz̊65Jzu)ȄPuyQ - *֕(nhwi`Q.+$qVu.pL:~%ʟ?z]6ATY47CVkZq~S6$f5ƸHE_iG7e>M]tW5B4ɾdPP*ޡ9"XQF3*A˛zgu8Moǵ~ɼ!B8sBYt+?Ir#4U~ƜOZ}I-#Se=Rdyu~Ag R\6.bτ( 0֎`03o 0mkS&132`u噁9 8sNn&֙ss^A']Q[weo>|- хIG:cP8ݑ N?C^?SE\C\\ >Yn<%D5sXYLEkgtjT, (Fr; @[ȄN3WδYT\DZmV}+I+,Fp#*èIjwIdz2ka@(YT"h`L0ȉRZW uD ,v.^ <#>pM8pk;1*L+6OϜL1űfMYDn`492h !  :Y8`&{'t*$zSĞ!أ[tEI#7SS~)L~d#pb1Lsw2IMIϤ=[Ik!ckcY}V(0O5". "f)Jx""XtlJp0n9X*:3*rcfdHF%{uؖYuF]ì6u|{njR9d`F+ڻVx9#0l{f?իvGg-Xg7Vgr?wqO,nenyOLtQ+D4,nlNXhJH:kc/r?W{fٛ)gXpk M L_Д`N+."glxr5%$R\Madl:U>C|ƽZbE8Qoٜe*n$+GWwuVDtVSb7D|S^7?ou%}+rWU(;n"=A;lLH(Vmeo?VLEz&mn1}s?NQGH|{T? Ak蛣]["ǧ,{z@Asv%- n`&x0,O4%$_[D|i=^MY(3}o$jKzLZttn}iƪjD)e;j1=!ΚlIcT{IWcGm&x_@Ӫ-hKZy4JӕUpb/=DS~ {φs_tmvD!1I~.}y(`.J9m?.qr~Cg-۸cUn溙2%=RYصB0}1=As{1o`/R=׽ Wp%9ΐ>a'RҺM첝,^DO [>\.^ҁgggU+Iu 5@+,!m׆zSlSyjЋW M/M&8,wUؿM&JU}sT<<9f#BAd()iv3q&H^3$̔`2d~OuIɍ7S?1l0569}@7ǒH3ݎ^aEC=[ۼBl|V 7r,iO[|'%OOdIu/uK/J=:˔Y߭E{]vIeUD^_|^5{U¸V7EjwIU3N[Gw\c |;)x](me<:{>]٨5\k{(yaDﭸfZna<9*t^-Ofsk%죎W[q̵HHVԭet-|z蔪n>ݗlFncr`݌_ 6b(^8*882^~|nGJtzML`+)OAadKΘ^I\-qb{ V FUαSBr޲9cTh#gҸ5\SoS{8uw_\aG\/*>GjsKRI>%lZDM|1MK߯ڵzBqGۯyU)uYZq49ӥpei3k[_t rۭ+jғk{OW׻qe.FիUM8i㯧n)t_>ww,m 8+F^j J'޴ҳ*D,h>zi_ ]tuL? OW-Ҷ)1qNV^m1uZűXkZUT]s6:zn2sw냸8,ZN8siDԜΗcl9-+zғki¯_irO޹WǥU*|u^T}_$uijVM_{z |yEk-WDR]pܱ:.x7]ٴz_.=*9V竭j#KRGhڿsGt x9[G՟m)i7|YnD_{uk-ijUSyyg]vU)sೃI`jJLr+XTI E.9ġjAsrFJTEDLrGQ2E:9D#q$u&r80pmiR'u9\-(Zo"X*Y颭kbႂ4*\B‡*A !"SbŎB:G;M97*dww,m 84֩:.N7iC24KIRƃg[mꖱ|-uUַ56V7sZ&9NI"hX~ sڬyzZ+.-_?_Wn2jAYί>->* x+槝K[OXo,@M)n,-%٥N7,TМK:K]k8F*xJ kP7q)In 4?~19Qv΄©qxFKvR()>a $,,7lrc\ p,kOV@,#i!t )y<ɢpӚrNlS8L1F@=.lsEi0Ox_3XsV3"˻Ԉu.s]B m>9iUYZ(zMsMJɡ.U{s +ÆCpƳs~Aޏ^,cKBSs?GArBX?{u2`g5,rp0 9tm;yy_d Ns+Ф+) @ D [Go#ԑkEi]u?<RDnm<1K Ekj)zqWzNyo]khyN\7z'w-wz_iM m HG Ij+:mei,>sKY[V8>lw9!QV|giKT.9뢒j8rsFuT㡬}wkV(-g7i>|_5r6gBtym!NZKl:8PKIΖS9U[Ո{o[%. ^ϒxQG=>Ӡk~oLR8բ#d& U,i&?6`Yf;1)<|eo9n݈7}$uZ鮾b|s=2CWM^1ҹqWuMLkS9za`FMku9\}~KiO\~.1w""L4ͪr=)vߎsºiҵx'Yo=zBOI N<ˎ"rCK~1N6<qpZ*1DuW{TtW 3mm4QRӎN)!ts}դU N<ˎ]HJ[q9,bΖRwQ͜5~םL]ҼWGS[Sc~u钏<?zXR2Y>ZҳƖ{޺9׈sB>/,{ˮ/&"νӎ; :XNjZQ<>+%Z#jt[Ԟ N:t9x~$W2u-w~2z}n)5Q44#I~om>5Sqyjiu].' Rpsqجyapq~)5DҖҘjK^<+ÍuUGEω”-yMuabyww]t-,8Õ{ٚmk>%lʛ ڧx^RŮ!mJk-%x;դT2Vet o_>g\XwJQB#wͲN@JWtM>uG#I$I$I$Sss9L5NrdȦ!,ʜ:wq[T\"=}MIw 0 ˀ]~Ӳ`/D=v/9J|W݄ Xm;qW͛mȳ..n7}vE+e8ѩiVH7U2n!¶էSQ 8tQӆ1\Y%ýJщYUr|[Fj)kSRmlX">hfW+=^؟1^-j0nW5MYi/- `03Cm`k~owcA| |tg|/. Fa $7UpXH%?L}M~ ࢹ& L+m r {?-&s7NayTیI @2f^7tgPp1Yd^%ǸZQN`hܞxD084tϜٺϴ0>ix 2`IBglğiقBI!ac90p <D[$؍ ןiO n-&% ҙr:"( j%?m/O>*Ŭ+Cdzeiq*ŰѝП(,Z"kޯD%1gr520Ƅ _ J7S}Y&r$ ?h>2u?,sRj cu^M9Ec(gL ۋ2Gs;3~$q# "ش=F[%{e|[Z7b5NQRl+b&rG6L3xC8S3k=*<ߎ$;L!Е,Wg?C"+PNINnhMTWiV琋u0i95p&ه,8uB%VkF!c1*9XKgti4`͝o {aI;0|YY8,0C8'DOX /N>miÜyOQ]|O^ mc@!Mxfez8S?)6oS9\+FyX)nqh^}L^Gu v=:>uֆ}'A=-oAnu>͡STf5+VĮu7jfcRܞeԦ.}܁pFM_~Irl+zQM" q@6**7&;pVPJ?]w[m@v՛3C)[N ܸ* h2jM6 RٷI43s[5%URfKf53@4˪.~/+֓&p9ilTeDvoʟѪ\iK"+-S=m NM : +n0IGF7G$7I3E߳Uo|t|+IdЌ /î[;סJص*Þ0=$l vL82u$ҳ[)TP)T+[*df7z1 iݵcUZFWAqZ'=TcX_3{69#㛏eYLK] -h <)̨D rxb Aě);YUP; 4hKb\ KIH>w ~IOCDDA< 1@ٕ$H e2S$!N_Ru``r-6$ \?}Y"lr`` x N-bA3l#.q!ٶ6 lmM1.ۛkP7ڨ9u~몠W1RMoqX9CC17ʩӡoy-5 J5 r+%H:V;#b;c.dQ ¨ ב,T ʷZsOf$JI/7)_d;:3GCRM d&.l. ʂbs콦o_Rk? bbu,7v9]/`GBʛיdmxu 5ac;7H%g!ksۆihlsVlR27O]{1/_.*"\ѮϹsNZcμ0)J=u]TGZe~O<8ov}}䌽k}oqg2R*!7p#@H:c0͆QTnT/.=TT҇ڙԚF6}J[yxvYE_kAZp r͊qcZu_X4Nncy0yy1ɒ%}fMu5$:k8j1 |6',Xv3$U~I:n7OG)ZfCb^e^+>: {=Ke\ҴҸڇ#Uvg\_ӈ&blƷ)2zw>ɫkq"馯?DlD$ ZEffEtd<ps]b~1z[;.1k~{HjA8" #었ڨѧ-. 3z4VgW=cwIr= llvgM"|n) Y390u ^#X)d[!7ɡ8!VSÞ2!g1hzQC\rI nj{lF0:iX5&}Zv5Y oK2•\Atšsˀ&8qbŒ}nC| x~aYQȬoO jaI-0fmuCk6?o4!I&9Cs]xCl6˕ʹ[f{W0jHйsCBP2d2 ʵZfL6 cM-"#PAMK@^}+8Wb3k BLHb-̞N7.ZV'*ѓfT30 N9S'2 e>E0#^7q_DPt7It/rU`ݼŸ8Iqpm;]9]}HTGوo>1ݡj:]Z6V\]*##0lrq8Cx -jΞiB7qf2Ԩr%ˉՌ@D;;'9x\yG"ܸnrϟ e&I0]Nweݚp|y8󛡨SxzHiPUx*d%rmKZ, O.L_~#V6^ `C32K2{g3xDG,N28S- +霚MS&ɄLiGJ6sōX 1bBod[60lSMjTѴйSBh ϫk.qrs|[{VHbZv0U7$p%'oӆ-`J}C,"5 Hnfk5Z@A@صph׭TjXpWm>(>GIc 6FcS 7.IQLz3艣`cj+,MYqu#p0$g`Ntv38r+O S@㮴e@4* mR1]).Jx[)P'Ҧx5>vWu#}ޠ\2g]٩k5IsZA|GXGhկݬpTx`6H8|5n!ʚTh57G\M#]8ov7ʁ| :}K R]_F D"Zv& 2>7{3{営±=㪹R9| ́^'S`ۗh?E8˜&+#{TYbЯK"%I+ʓv|DJggv]@vGaJ}]*/SBuң,#vgM~d eX,/$JЬU3fWjJ>5*kIZLeaah 44)cHCIh%qPE,[#j\.C3*¸9-/O &-uD A]R{$g[ދ[$|a-TuWכn- };o*n.K~p}:8T:'AQ8f 톚6ƅ̃dG2S2m|a&7Ï |vaǁ1|8slET]VX t=t$,Ă$P0o٠_AE[&p9#`  LqrA‰|F\ꌡa kݸq4PĹ#˟6Fݵm[󾭼F͵{1M4wLMM 6 P2 2\]jjXѲ`hjLzR hVw+mh(}&]R2H+JI="8{JKBS9+rGX؃j˟LY2d<⣰@lQ=ٽ < -\î[v:* _TaIRR)Qfҕ*,ݩSlmz,Ii1N !Kϯpԣlpy52&7#L !" sIGV=kCpBFFsM1T,0~ue ',)(.\U/~~0B.^Q[JWEt\]]F!c$dT"ܞ s7흷k:=)[t \Q(UJT IOrd]s`d3ɐXCT՞F M,ɘݏNS؜N"6m TD1 )ręcb㊨ulj\׀'k*BUe~\K`,* *26=2w7\7^}<)i,0l0o˅9θU}iyמS|eqAIM-4CAM4M444M-4KM4Ѕ44-4 44&dm;4DFC,Iɴg2""p}1l6mN/uMV6L{{t{} ʕ.nnn2n62U*hll\-#]qKL)@R)ig9յfdo,0RpEA7`L”B`d]t:a5ë'tе3r:=GTvfcl`a %ѬjԞzEmfUOú$mbO6clwӌztYy.>y<cSd+Ks.:h,G"y,e3` E[2," 2DI 228_Q R{K%ƒ 59I (O$$$WDp Ĉ'L- 2`: 1!!*!P%@"\VA"!ƭٕ*:7{[(px'A&M c4K@&.ʒ'aâZ`\u},j::layº/2aqAM՗.6e r5Gm:%9ts#7v9ڞj=#9XwP(R[Քz5=TX IW^AYeiEښ5x+Ց>aeѴ]ah]/ Ka-piNRZVmɿF|JY9JzG/@[1O#e%Ss`YE Ƣ][B:[IWvvD*2_Z\݋ѷ~%u.kῦuoVe}o |VLDo&{oBhENjvL zN aq܆涹WfSiOk(:T+u1fslBtx裶4UY]&-+d#N2p=7]z[7 CWiBROP[^]e|i37d"ľ%w]0~St$Jpdl۪l|ڜ $܊"f)51OM$9s;/yM!C::iec'%^HJs 3k.Y*Z]AIx;=JG1nk;_62SQSSl_yu1ҧw Ga=E&%cs!r\HXPź euAD&Nv6QuhuijOeP7Bʿ#&֌#Ž;9x6KolLa+>RYK[)v# TFB:-8h"2Mpkb&ҁ@L, ζ77ٶl[vݷm{f}4wĵ57&dS C`e52ldnlllT4&iqn**65*|VJ>1imfqq>~48?->ӟ\S_Yc86aR=\MMH8YЍ WOG#:wÛ 30 unCmP@ Hwf>1^ lluxBAh 䗳]1CfRL CnnP)Ύ|ֳm{;) eq& fP**7OU*T5c vzI0L%+2nfE%BBՔA `f~z2hm9t̟ ;$^D3MM&z9QɧLK| (3ڌvTZ>MXΟ˲e[p$$\_ۉǣ8{O'0cAiu5555Գo]I롡J[,X-Fo}ҹ:Z|WEKTW{dŻOcZF6nа\eC±h-=OjWQ "r̻CW>)Bq7캋b6 H"l=pe*fRq{^\pHX;s]u}l!43HgexTʣ n2M?=P)? fEwq=l3bP9h+¬fR }gI)*fa9F'Uw6q;}**N::@&WDZՆSŨDmF?>ЈA`͈7pbۧfмBH^̯.JР+&k.lLpy#;C0m B=dp a %B! 0AHA P`H Df#"(@L0:1Vy@O#_4UljP$/O D1γ"/۽ֵ/ s+leoUK+!! % bb" ""?{sU# MJ:-e;ffٸp6R6s{b&jhhll`sp7 M&JL55500\l۔4F[B J41o捞#=6`2rCCG=;GV t71V9;K\QDjjjth kfV_:2NYɓ&LSt'j_ZxI8ؼ9{mkQcllmmMMN&lvzRL@i05555XȒф:c`cccCjiN,{A&ĪEU@ZN]O`EL:Nw[:'~n^&\{x.Ӷ3v>m]Re,Kr; 4#ڕUWħ&q1)jk Tssm[&G?a}Nu]--ڄ!Tm}IgޣHnѬ ½cf!\RhMW%(.2d_ʌ4lZGuU`Q6kn=CYuo.iݽ egz6mpS^EP]X_`dkOt s;ZziAAt^|^Dbxy%זS׼2SBH+ O&u "c XsvmRz{W>z EXV^-EH>D}ִ̗i2 되eKCz8#'5v@Nf ܊Y:#ݬU󊉭역 D'Dإ%o Z\I@("""$"*(6"##(tD`sV%U9NSm j۶R_91c^}9CscCssr̓`d6 kMML,`\mD4'R*4*zF/g馚m᜶pp9Kjj`րF/%2BYM#{݀:Ӊ&dCJɥ2(^mQ\c0JMp8 8 +tߙrm.܊e2lTn %dJI9 Y%RUR>TafE4~ !~6Ec^ѵr Fhn&;}aAmKa}>1\CT TE\Ut%R:?"DZsr9r"&C0@kpښјm&RCc!;;qgHm&nOY3U'BmAޗ8K_chM'zO ٳfQ7x.B*92HRD|D.1LLM&Hqd_j|>|y?QqLS0 yPt)P$ߦ`#%IŪǼkDrf(;yW?tϱ܆LZ'*4D+oszj)p"zϹY$W `Jc^JJ<%WI?d~k-FBA 9m5)ulI(iƩPsySp͊7CN]\ Y~|`<춺9[lhwbvk4TKU۲ cې+X!-Ok;=Mp-W[$F޿fe~?%lF]4/Rp!LF>sۤs aWA`K#^d[3%g\rk9K*();Jsm52}hXf?6#s觨ģV4xҶ=N}[Gtjx^:jt0jug̚BMJI3Z=+cj Qgpva\`c_dUw&ҵ jbhKݿ+K}ұ*KMu7ˋNڳL73\[oOSbr3FyRQb^g=32mƕn^&qn5zf_y\ A"L7&,A{lCQV$^0M*c%Fr\V&\!vU\Sx/ ZtEY~,Z9Ȫ( t"$ ApjjW0̾Ǻ-ϳb#ZM`* iњ6i,7ۦf`襊 N033jm+FI7Ն L0"J{ќya#598^HE#O? []7s93_ѤϠ2yS9ɓ&[&/ kb}lH!qqɡSYfИ@r>ps,.}*$*E<"8p$ Ga1<*VM]1P\5JTHސDUb#zGuEd(6̉$5K%%bYPDBM6i5M&,r&L6i-L&,"2@tN8ٶ69Ckk5C 100KU% 1!$-38n^,KΫˌy!T~uB2>z-HNLUN({JHZKk?FJr~~mZ}%z毩WghGN&=j7I@6iւ5Lrq0GqaW?7=]d(V Jj_3p߹ .ʬF!U]ku@&W̵nͿu ʤ Svӫafi[zWݶLE.Sǵl\ܚv!ާ5dH@ӖDq`=3i2iS'kjbgQ"V/^gr=bQ9F DչVhm2%r8'5SVMvC[jvs霶&,2 UhuWK6C#,_ +VQ5!yQPOniejZ5-f m6떋qkQP Y*&ه3K(n!aat$IO8NwMV~S-d#7:3o'%"#$,J.P=5< G?>`sz&뻆ױ%9[R ^%[bm%_@Zd S;lse^dAXI`]6XS+[&BbJ#5ܖu[iL_2wQ4:*Gb\yZIՍs-&-~m{"˸r½_]KlP_"N-p4@quL p,JY ݲm: A6OVU3PBH$e&6$|<oY n7t eE%-;=רm-Mpz~];RYFvQSh_J̴?G 8γ볨U#jXխ[Tyi#V{xd[< fX&OeisH,\cJݰM@K ^']9M!56gpTD^`٢i^!O2~?|%w'NGֶ֤%JQpeيԞZ*~ ;{=KۥdWu-4SގG׆6-&Ԥ']h҅9O%&tA D-*"ܮJTcN_ӕ-^]ēs3"Չa6aҫOJغnsº="A+ P^GI}5(UOyZ~\]o[m3JC׳djA~w5Tucx^ư;hu\VFkҒD)GSb{ܤYեt.nc kj+C/Y)@&ei1iYS6Uѷ!a#qF}Y$Oԫk сX*j s~dJҦɨpxnl!4$i.vVZ d2C*UL%6]M Y]5Js+ޙMU|:߾HȼW?7D˴qrL򔣁|QsN`Nst0hNGŴ 8c6F]{@B2 4կ F-O$DjӤ^U{˝وN,ˋrX=dn|[l:a ˹N& LH~^L?.doiN Gi5P$XgȳvVR)\?%;Ė4ϡ`dTZ #$M87"`SC\BZ|c ._q %=,B^$Gy(6'$Ӂ=o:a$uzY; @yN؀HZ}% 945i8^DQDP HFQ^~/FO%Q95.o֖{XKb}s*G M;,?+тջIRuHK_Pj2 B#VY-m#aWSV-́tZBT|;SȃrG-wd2nzUEwZ9 :?hܵe2Irqaެ{v8ſ8Gs1늝 e>_Bfܥi1.V rHTZT܌Qv=v٘/_h/U^gZ@'=VUdCƃ uޒ[jCn՟obFM*H x~`rwgggSvs˪`lm>7:JbI37h>l ^RgSr!PßTf(,~n1l`LR(tXdb#nT:ueUPaE6i=΅IT §q/,ZkL! V%<@I $>$H |X44QTDBL3QBRӉSEDUQEQTUFY RY9 UQUUUU Ģ "*XQSUERSE%EMQE4F,8ED |⮲f 31bD*{h)|؛wr$湓&UwS%C]EWZPdHIh(Q) 0B PP"60 `NէMc1f4 4 #Z j$)b,r( ֎m1M 2T8&e_uG{1$6B[﹁2(&j& R&af&ZXe5ṍJ)Jj()S+uJqxϟvhs=\ Df& !z|Jfs!疚]qը8fKCAAI!'D!HBwNԍg" "%* 2r""de"4D,Z֌He(9əmKABy{Xf-eJ4 Ah 2CVJn"cRr d.계#d:`dIa|jf7sGx "UR!*-*d PPPb鲔@"%%*9k b(3ϣ?[h{%!bg9al ]E KY ^$Wı7n(JӦ9Iz&EdͻƄNZ8M Ph©($fDШ&)M327|;,<4/.rk6]=`RޛW=ߧ/S`j;/\mbL*%L%裹m^2x(-؆~~Ӕdͫϙ"6koTW՗ꨛT*R0։Gb[!x7~A8rEm:tw-*aM^6I#鋫e3t' md ,죨GܖVީlZU);uAzstVяv58C+%y[9f6x#RIׇiWnҧQxz-ϝS_fƣUcs)kG?ەQ\Uz,7ld.zבїz5Aen]<屩lAaq)«ZT"5Pt a[2ǰnc$HcU݆[W5ܷp*P'ś1NeEeAm<؍ʐ(g.YӅfv5)b lQA$hPᱽ؄A0J*BC=Q0X=SFtц2"pH.H,LƓ7{IAk2$>`s /1po4纋 6J%P8$;8CCI-ЈI)PtD E5*42 ]] {G1䛶@*. yMdK )RiuIjJ†׸m2W44I㑰P={9{SKOM w0rRw&p:MQV2gDd#02 s s_ڟKH6hF^/c|w>"giUq%mTلV4A# [|gX5Vqx5FJ;;˾v>4QCyr,[t%;Bߓ (Dͧ[ǎ`**ڹs 5a}Kta*O(<)(봝54h]gҦ! e-N>7v.1oVb'_B-axG#W`Ų`eS<4zyy >G4W9@dFe9N IƲ͙֑`YVTgQZI|Go{lצa+d+lmxUW*KP̭ā%Qm{jU9% *Vx^w%22)%yP>+4V+1 cx]=vgnok 0uIVYg5GYm5 2Zk}8lcB-~n÷༬„$Z;׿KJ;*XwgRRLM\{V8}Hр|z,(vl cYk\rm<4Mw)9M"覒ܑ$Yazӷ蚁ddJ3C* 3gyT6f;,bF ]t UUKut$##)l`q݁zD"*#6*&Zة&.s#cwH{QHsVyJaiY*֨4o\Ъڤ8ZV(H҆9AFZRV(.k #.?eFn ҬI3JڅySEfWW/ߺZ0{?-tݗ^="q~ V 5!O^_˭L){!'l$.ˊ\Jbźl&Dy|U)uֆ i4R[E=?ostڶny`V6sIV,:h\.k0KOKB-"y>؉"J#$U]iNY%]U6m&Ȱ 5{%w4Uqt~U1_@,,H۔scV&vչ*SWFa/Dc@9(MpizK]kwޔ{V E]mK,pL_Ck3z"}['zx>sYvm_Eu'TfȔRH^'&յePyXL nhUٛvFABeY6tgZDHGܽ)ޚ%gg~J3VM=liEXH:"8R#ꥑrɢ3KFI3NT&Ϫ~53%ܟ^~RVrֵ5G),ē]n%lozR-ːhjȘ;o0%ʧm\WişTɺ}QXbYj$s*843?ϱЙ,Kf~t-m-r0<)y$4#a$&5+k^$>,fV]SFi%DrfM`A9^g'8\eq >ا.ʭŕT[1*PBzK&uhXF~/FlQ枆j!/j1x^( ͵:іG$=HhJ C ;q:+3#QDk)JD$Ll^P^<-bƧN.O;kn =R7X*烈d#j ?f%2pjvuđvDo$ڔ$TBvUIxGj?4V>#.&PSS[htQxIp۩f`ǹEjqMLRM KDKp=AuhH'OJjBܜY%Ӌ PcSg@94񓢯/}V < Z{KWcCd۵Ǵ!]ko=0stKՋk\1utb?g%Fe ƼG\u]K([)OEZg6>%|kvhkd6.n"мɥ/[ ;C:.c&t5I[pUu}: tE쳬+YiF=C:"]qɩ|Meq4bRk=f=河,+zrī[d'BuBp/5͒W0cczXES>[eL3^īJsܿ BIHNxͪRkԖa^˲(h mg^6#n7&[zD (ciQHHQ[ r]WTCwX$oY/uN4+S:M̱H4Xz1 _s܄*[-[KSw`k, yԙ閁(7gb:JJnTɘH,Ouч:SFPkf-@,׆)l'Kǁ8j: JƷz@ 30 ! FvD P"#V$m~_l峣e|6ͳmqc뭭kW[;hXcSCB CP2d2jTгXCsC&Ko85H 6646,nii "Č?č(j 7 yaViŠ63&EATyX)ӔӉтU8`bH!A"RBbxY SӧQGHBxB1H@ όiQe-@f3(Ej37f&h`!뵭,DD~~~c0MhFyNI >_Qي-DZҙk"Xˆa[ k`I`KOϞI `N(0ыkJ d Hǟc?B;nJX.H`cíLLFkC#>F엮v*mTӦb`.B<2dA}2I a +t\iݳwto'L4`0RRhMlVKbְF$*ę0)ѩo (|\P>;xR=B%G*@V) :PM>l0HKͼ׉p1C?vHF9{pl[a4K`Klu4¾-R=.`O<{ 6d닀7d#v#1`aK&H90sh9*YN^Y-)ftMtɜYå?c<¼$՛?9 [fdZ,,0 Բpmbɖz4j?}q%yKUc~T԰ta34x1^/<^ %1,Bg[|7,YʝCp/fj 1?߳?z"ɳp+.+('e%K*Vѽ~m5Std)5=K[pԹiWv9\efe* t}@4~||D($ =4ف30B E ~0a#zP Ă{2{S;1mmD!fqљ7m4%%K;2:w?fNjHN'dʇyjH@`ߕ>&.0@r D Q|4 S0ȄG+'3Gp5/B >a+J;$ Q4zO>Ppplg22dL I`4ltttwp: 82$+2a %e*!4j,Lq?>PB 耉z}b0p%Q?#6ҋh8R)M!,@.?Z'o;*I>3-> %#-{eqlT;k<,02$s"cTR1M c3ОQUfnV"Y",8#aMf.ް7lFA/f!6Cofp"$O.DD%AГ ){,Sξ2LqȬ7~\s?]IYq tݶ4Ė8R۞E޳>?Ol 0u_lŎl}g8!X[#sRߵ -U8`ZŚrն:å>6׋) d4ܣ'\`1 bLCSeQ`뻭!NFdr;_ &UB)gϪBV{YMe_x(dң\u9ZK]bwٺJ!M{e6t*?e(LbnώvюR4>*d1 tVνGσdVI+`Tgh %[5_*v I}U\{\"̺7k;(ћRЗMЊSD8ȃgtq}Z[^@&/(4m,3},N4ىjtw]41ծugF=_.1abKuS[M~Tli]n%Șu7$C/XllB8c}ȤPCݷ}S0nV);̱'S>yG6E_yFKU\l\bDrtA ͼz%BI  B8p|yJ,\ܿ?Leڶ[-vշm{|c ^}"D͍MM6 Mc@ЩV 7l6|KRHr T650ll\/lZ[뮻|0Hl=$oŸL dbGlG.O.ABa }7`j>ߛTC Gn0*37\Ac ߶ZhĚAs7+iѹ C]<)CwqFBdp%GqvhtD| b^ŝN*еVkdV=ZWc0A9:tNSgF)$8_d ,PL ]y*s颙HH$8op٪l(&aChYǶ@t:O' [n |4+!!'"e8._^8={BeS 9w>LYepXh& &Jx ]6z$^ȟPp>VlHm.Oћ5-.MqcA-8WaP֛&tfH;;6HٴNHNNLٍ̘|gxX d&}c.v#yƾȍ?62L&~ qh0@`, 3Yc tGBxN7:>OfagWI8 1rVͳd5. 4Kظ^Yo Dz|VfdՁ?ڿNI_uecegȏKং$>?xCf&+~Mz2:0bY6-vgT5K={Q|z5izr> $TެoP{o9Cm$Ɠ1LXJS'9ЈJ$L8a4A,}tWN7UUUUUz w8$zh 30+rh9Vrd@aSnxL Ulށ/ٍZJFŕ={9sB67NW5 zIѺiZңm7RӺ #:ɼzVY3.;{XKɫE)gV |ʳ>{$(B.WQj׽=Mw-_S*ǫMk@ܝ$PJq[0o ƶ;sti3^s2{[I`;ja~'qԷuZ&;Rp|^/BHaͧ%p$nXr?_6em5m[Zj-{|Jƚ5666556*\56 Pԣehhdda2\67cVAcbb^t]uƺϟB9Dry2p*T&*]g"OU Y(C=)܄MQ ɩړu4 <$D6dLQLB@HCHP!!S&d5(m^8l;n4KR԰z2`$a˚!THkB9uxUwnZ}g9*n z8aw~& c07aA7X [X0jT <8aLzdQ"=#^%( RN UT7\a3'Hcf$&CKpamE~FZKD*b4i2ѣ 0t$ <{q(Lde`676?G ƄezuAw:O?[bb*B Y0,ǍV{d!-u0N&n8jt5w0q$a3t+Ϫg 9FY;exGw333[~`ض u @"X?xh!'ŤNp_9rVu>;1ݐy-32Hii iJI:,S.1][Y!& =GzNU:#6ߋDaY$p++xë{ӇGM <3^+h&}LtP~uxPwwnQ~OiGyo\QT:=?rgsb򠎛8qkv__@>܂oe\ֽ6/J&#L,{k"2vE%.^5}u+lSes{TiWfV|᷋<$2f(Js! j5]{MdJխ~kˏInUTs϶1WWI9|-[<hMs*kng\>[f!ԉ\E))U}mv"xoXƵ"䗦 G4+,lcƏx]d^? K`V{H2zi)TA3H#鶴>p_t¬ *9w䇡lo#~I]_D${k6K%1H^9W%,sZXK$3vRd>曬6^m[sS^6&+\GM%~3TkcJXP7aL#*Z^$5!X?.UY\_I9?2%"z4c- b1m^Ǘ3̺̦M⪳ ]U_Ǹn&\+l^NG-K9ҝlAj9eژJګ7ǫ^er[ XhGŝmm6Y <ύX_hp`KNSѣ%J&N<=C"$›EPT=OSK|9>kjm[7-c/cWcC MM M4 Pɸd26,LɆɃ%Bemh\z)beKXBVi]{':Ln{(>f2 .CQz+H,BBBB@$$$$/~=[AH4ҥ$$$ |C9V Tn~/zV410? BPAq8yځ,;Grm P=hZća# ƑF(%PR:E3x0@k, b2Yb<f`utu,(uX`X T(k)wsraZpF>R^}>04 EIR Q 0$2kL p em-25RU*yx;P7a&tBt^n`84SM4 4@DKE(S{3)~JJ`)Yg`JIbHr&nNdbd(IJA=Sr}>D"ގ" ~mD r7EewEd uE zHdʼCV !~%;1u]%UsCR)lhw/W+[-Z}sfg2 'dpE;\w5d=HO|qUU]GUAETW,|]zO?g))m?ꪪofnp[ /? `TNL:jMq+$̝n0O@_zc*R9ΔJEP1QE14*XGi#6 zS'/CA 4"WftB \n?C#65h22CL7XnFhLF٢lND"i5:[%Y| WT[~ԚB*EWprNg]N8nG-l"MӟVk䍖v6sv_#O ak RDLH۴D o EwיeF)}O3VF@\T/`Nm,*nL>JSuUaiaO|/ - N u-=EH)%P ely\ı@[\vdw/f/rGʿc'˟:LX"YqutnE"ӟ!7a+l3emeI4޲:,F1Z32L$ uSpmmf#][fvo{{w{斱,`eCP2d2$hhdd`ck0wjiccSRkX뮺u2oP2ƃre3fdf?-[4 7#IřH`L2 qrX-Qil4ܫc Sg@8Hf0 |>Rc2mk~f`7zt44Po<^kZl\}b[սoUUī33Ygk5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[ffaeaeaffaffafffVffVfVfaffaffaUUUffaXfVfaffaefeaeaXfVfaffaXfaffaffVfaUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUYYYYYYYUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUXfUffffffffffeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVffffff`aYYUXfaffVfaffafffaffaffaeVfadUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUYUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUJKEQEQEQDEQEDDQDEQEQEQEQDQEQEEQDEY Ra1DEQEDQEQDDQEDIDQDELQDJEQQEQDEQQE(EQEDDDFB _3*Yd҄FUٙUYY>ȷiw;*ڠ' ̣nbD+kʥ(J2(kbVbqzuQ#R'}>%~USY"[(fe]QW_%AwOR9l?5yzC?I0XQXbYZWW5[Э;Լ {S~仦&nbI\tݲd%E1ݵU7-EVmʼnǫl7V&ZUa"ko/oyD@(UݠLtQ&*5K?ăwha_{ĤT[$eU%}(+G6nŁi,:;sbֺ٥_7!sCYU&b:$QKUfm"݉%!T%ir=-`-^er1NEL S&ju4*( A[h =yic֊?4@k}l)q.6O,p^~$,/\žIl4\]q3fkr_p'\U=ָ-y3hqU\NNk&PPB{8ƧÔ6/Ox{"e"#Ŏ{"JD>+@%jf4O[-zզj!UZ({W}pbJ$$$ęGZIxze=U~}tlA@ &@9sJ]9esaL=+Wq*^0 20l渭J0D 6cy=Cm#/~Sܭz*Fy1Rwuv&QW_WࠨQҴ\w *oo:>]g7j+]ȺN[&}nE0b.&ԤC¯ngBRf*#rMBs:.StP|6,"'MYBzF1J*- cUk*EAO&pjJ8 G J2V9$1zrOA!3[X3ȵr 8G8R/ CӛO@ =EWr,<؄YA~qU?ç.Shu-DBYM+Q#7P&-&5Ez`F`ftg*jdjU 4T If1&ǫ%YzgzAnV$ߏP۔7VQ#A ?V0s0 ѷ;{SoTT_aXuLӟ>vYMsgxFw6ÙJRӭ؍oP|>Q[$bȸW7?d yEݯio&H3ɳsC'xU<*t.ͧ\hrm?g:."AH٫ ɳW]WvI{52ɼKj٩WNZiV9sO5?2C^kYӈ}֔cn6Ki}Q9$hPۗ#ڳ3Π/ Jv28e7 L`lJ7} 3DM|-E4cu'0Ut[8{ld,NfZPdY^mB_} tc-LW*9hofMtmr10/W==WMKi,cS Ӳ$sTVu>Ճz#=o7G.~UJު %:q {;>,AkQygLEUyp2aH5:"+*U5 n_ f0J Qcx L%nV,GrVytp'='xq=]"3 @ ~S_s96}\=/j!j^Ft Rnfos]ibЬMc|'fiLszW"Q`j`P>f_;Q{ ߫l@ަ.Jj'ˬtϫG5%iybQ) T~.^ǧ)5I)9ߢ/4 2"r~Rv[}BvB=Nz]3?F7O⸐f!P[q!қ9;7pn>8v-R]C"Pmf,$]Xbo'ͬ`=>`" {0㜗 ӔZԕo>G➑C?O'9?|6>S &0$7`M5ft7nx< v^+]8s9d&s.6fmb]eTUr"e\m(g86ϓ>G{xwzʋ{?ƽ;4H|l'pCO6dzhӠ!zDf sȒHIILIWߞ:yIؾMᑫhR)JR'dΑY$dr|C0%i,M5fLA ࣐!t ,޹~V|5YSTQ/UE=VWI$YM[+ ybkvV0yRde=iV6|/O yN71kױjUQ3Wor:B\\EB㔮m7RIӏWާV%LZ=h8gDHmj*뮗%\w o?Ĥ)ų|9Kxx]yV֣?@< S-?3OqMصݫ,b-lEYѭ[u4~X=U hC$Z<Þ=~8R W"bNvPffa*&ަ"}R~+ۊLgJ"C}ͫs>5ywȟy<`@$7 S^׵H @ EXw[Sv0(]uI\qogE*G͕hU` tKq. *cv_vOءE^ω(,3\-{X\ MsN\db.;8W&>ƵhإkK߷m{xsL.(KD^{k+ >}=D=j]osdք_݅P*cPkMW1C}[|m8zcCǣT~/a(ڎ7(òW _H%yq3Xƿ5FҜgg2}86>ӯDqltj7DoFǾ+F'Mzv;VT)ljyosK֕IJ_-XWHDB\0-C`+֤k*-#`馯"%g״vA}*} VK_bv {>k+nvIwM b.#&_.hfL^Ww(9}x[W)G(۴k ir=g|.D5޴~zۖ/Rߎ-q^,A#?M\Ql]wfR]uUGFVNY,#?wUm]ש3QvS ǿ4mRy͵6ۡs9 2q9=8Eۓ28OΣ RdN)"a hܹӟyz4%2 jӌݝD&8r4-we+;_WNZSr8Z]%=6eR=j SřXZv49e{liEUs\}"'ى(0#DQR}n|mUřq 2l16L a63337~pGh4w:O;8ss kZֵxʭveUCUUUs}:<*ZMc=G۷U@N{N5r%$jyLFd W|0^̙ a#U,4faWNMq&%j2댵mlF[FZ#&Ye=|l[t 0̛`у09ό@PB!(x(8,{z
wڧz&lPiIʢWJX9-yͬcߺh5)rjKtqw3Ocl5-$铸.kz!_I$6K9"u`V +hqݶE?T zEstޙ1- #2ҝũ|yicwL*Ӟ,6#S-(=u=U\[7Rzޯ=g}mkQY%!=1ʧ>k:m ),z ə9e[OЯDù/*ǚol͚eQMܴ:l_ڼM^v1`"&uO;4ݜOeקcԏ(M8WV5,uv'Xw`tOM%s5Z~5xZ O06qh_G$RYp[W|D^zKH6\m'WWjd{9{Wd?wabT+7| k g(YBBpGͯ*+7&!{جc#A; ИÚ>Z2V]=>f.5b9ⅇoKg9zC(L]8Iϩ, Y *Jޔhe{"={/t8Ͻrspfڙi̽w"2R%!X vxfd*f?C{y>&Yp˦;M 3"9 ëjB)4L@7[r8jC&7JD+`![Pk5#Z4IGbQK%)\jSá(5j 9`WD;&3&oQ^ #n""=JVTHWZVs^/ucN#pXfzybG}ɂ=x/JtR~O5XQX%Up~Tr/7.l5\1+h+l5)^a;QqY6J5FK_ofiU$CzJc%iʈ5˄/l;PN!haI$I#Ua9AiҺ=Fݶ;idS߭6wtK) ,'/+x`Ӧ!Et%hqF;}ʣl\~X;jN%&+u:glZ~LXYG:+տ3b0˳I{Dm/O[UY%賻12^zUS_G>ǁӯk)Z'(%5}zp٪mL {1VZ_{}@t̜Lo\;Ɍ{E#p'UQrR'-_ ;FN b73 цd}q%k9@Uh\ 佋0l%!g@Ƒ14M*C7#roFpL<>y!@7% =*65OH)P d"ј6  av Ysy0X" I! 0+1%?LqpT,i]EnVlMuLP#Mz=I{:nޢ/O0+r~& (9:AqVz*R%)Jm"b&L9MNsM_Qe7YsvRSL}aJoB\<3{+=0|K. G.LGYuALѐIP33W%"rt2r&\' Y{92Eԑ\jձYҴ-/1uUbDcrӴ蔱[WշcF!ozNLֺPg"J Uw*ڎûg̒uZ3uutuA 3OB.A[E DWZ~MUW 8*Rp*{ =/6I*G斶z+ݣ:g)D')dWyLi)]W%]} |b1iD)9Ů/{zLE6ncK2_&k⼣~N"J:SUj7\|& r 2' =ITUW4o)Usb9ayIQF^VQm0`TmdJ ʒ*nkjiub uZ =V-;P=SCeר Wf[s@ pa0{% \ y ^hMdܣ+d~ٶ_i|zxwbS4j@HQg*q&XJdK2/0G1T=8N>id{'^VY = ՛]< ,FVd@E U6a 3Ohj1*c!gF J, b5 gRQbN}Z۰ ^5=C0,wF4Jfލi>ݑY2Y/ !oJΣ;1IM!K2_}z| NA=2'4{F^\1iXϵ[79 Sá$^UN۩i>E $ f $/eF] )C(;{S8PolzװN?l~y{z(Sתr$0C&&vF-G=Eَqș b}RMN5l.$18*ra5[KڊKl SF9^C.P^?^EmTt5N~h\"?Mˆ!QJ!Vޘ S. O殩ӯ4c@)KsKS fM2Zٌl-)%UYG ,ngzuV-b|EWn;Q&j(d^ڴk%]iۨ| t۔ۢl!TzI}MZW٥iݹXlo,_ܧ*{uMѦ]w\&Z17VkM)CW8#|9jY0{ж҈+*B\s)mK9Zn5/;CFXr}E ԃ)lko'ضi&ys6ZrȇAE=K:h_e$] X:%M7I uA-ec*7:=,L^%u%duQ囯 9mWӝr(ۀ*Γ^XFCcevPΞ-i_P-_kUݸ^F7]fٿD,W_]d}/-nv(i)+kuٞjjʓAd-Tl 2K30إjo]ʜ*4ގꞄ2nZ]NMě&j溛F =OawYU*"08* TQd|duqVWٱu v?kZؚ 2B*R065TuTKZ,jco\DALBr6N'C&W l{T~hſHIzhU3)U$z..+PN+_/nr*fxȒuv5SZm꣧қ#ƧjXWfKV޸+K6yEwY람CsKʸ˒U.gD󣫲Jƅ}v>5(ۥ jY}B94#"%^}Z<Χ&MLjQo =HEyWj3ʷ, ˫,K&Ŧ.]Q7XtLKvMlTYgY/f=dSֿXR5^bYu+FO+gJS(sb޿,Ϊf|oE#SeVfѦä MF-.s+iŝC]ƕw_siw=,zB*MJ^XEskO36B^Q.IhYl3H'H!pw$i\T,D3z16/ږ.]TU9 s0*C@ s_@uPKUM? >?7Sz]/Bh/)qPúp0-ȾySsf,yy<ҡ^G|HYxrCnpiC$~'90u31G,Q #UB veΠQ*5K*w':_ {1@q" kf͵iXS)MosFvGHSz.UD'ju+L 2G췯1WSѨ]Ժ AvZ qɅrdYy[]6%=(b&\][ztmBowf n?Ʈx7/ZA~aZ3kR=W]]=u%)޾k$0lb;T*8kysDZɨ5lsZՔ;zGͳNܺ kaߔFxZF="™pR/E8G7e}Rm1ybGp\BlP`5]oNԦ=\\i{OwFqd4D]9S]դhk\'ƄŽ)S DeSc{6G"ʕ!7mj <,<:CܧZ'r5lnL,n}{5pDx7x]ɳ/9qeivPMdoy\խgާ1B-Y|QK[tFA/)$QAzZzi}5ln6  A iz+;&ӂSIjk&^Xn6lёU[OXԞyC;S1xSFKo2 jqMŦ;K|M={{Nq9ۿtsՙmU^zJ) !{j)4 >A咿;hZ `wYiU'A{A,eTԶ8Sr_ =txDN棠p"-+K$3Ɖީ[d]f@2lE۞0OX:ɑ|߯Ò+wnQ v9+晲 \7c:Xcd+D'q/$J'< ˇ. Qz'rLQw]╋-\qqP%p=u4L!4S58I!y;H wHy10;`*<%pYfܠrvޭ $~ ݸX)|lToId@X> ɘaf|?hUUUP;grkGD{UWFx5UUUeU@WтYtgxޣ;&ɖ{bM+)JR;SDKI1KHHI&Mx6Vfu|qWfffU`]㰥tp϶\}cwA6bH[-CN{O'89#1&FH{Ǖ-/|Ef_C]yN7}|oIbE>Bc c׷rd!F(g*|6"&i*(h&**((&$..9SGcgw͍8t:"!L0+%Q9JK&1iӚ3jǐ- [rܣjʞ|*a.Jmy'8(X%I݆ Q[O"sxa#{ ^@#%\$M:]VγII2 GbW%ըxL_!X+3A&3)]3(Nw I?!8AAȅ1Mp&LC1f$JEs)*o$2<39 $ (b@\&VhY 6)]6s1ZBg@Wx_IAd34>dBBF'gvF5N{BB`GxM\_^b e.O NJѾiΙ@lUCvDBEAc ]|4uOUR,:z^>GKn(uQj2OޤlÇ<*`1! ~G)m?x!zk̛eΫ0 _E`c,fWf;ivW؟`sXfaLIޜNIyOu~&ٙגJ9BOd,lL&key=SJv&n`NNs۱kÊ HH,afih6AlG^ȐD01ǙQ$& =*J,5lք$7 B($&9c3aM="@ Xy̚#m/y<,lHB0;g%-gVe4yKh&UIT֞5I}sjtɃ\ }f|+?n=*«KjSݙ[؇{Ս+(u۾5۠&F< rXGh׊s#Uȁ~2,?=Ilg[8 ㎛ueɼ*j Z_&ɿƹ Uu[d)5^GODAL2{iz ;;Gq^Z$ z}y\#ML;9e.ORkq0,+$͓\,QbO\F.d(FU.x8\XϝEUW)xh]lr&†0kV>Vs.YX, ժD,UyhZqt\=JBxWIA4MbzU?Tt}tgJz,; ڎRT=s蕕B0͢55JS8ZLi5{l,Lc(p* qSO!x&3O0MQW*g ø^ɚ3|`Q]1a79?TÏ]vD ŵq+ʰ:f }oUqGq#o#sƼ|Vt(Z_JH~Zin`U"_T]gWUymTva|S%ЇòȬ=zl>H"ˢ&u K7Xwׅi]4sx,DZ]tX6=NH`Z"""*Q!4~7:Kϰ8 xS5;jf*uTni5GqKFp8|;C /bѶ|sA3>>0Q`uA`,}6A~dMm\!Z\aLwEGQFO؉ |PG TZJhJ㺈*[Km~M'޷)ZQ}N%uSՕ8qe d~ŇʱWT-;ۿfG&]0cזU6vW"dܢ~lؤS))j)\iS)"X*3,ksT!uZmK1 !IZ:(KKBp,̪4v5V8 (:J^8ۺ۬[NSM3N$^sV6]7aķֻzСPJBܐ0gR=t_;18Kڧq62p%^QT:/cg^%J G rWPlw"iZgǿ k!NHe}C+Zj="QTc\wuJ}ܪ?U4sW$RKT !V*%sU43fmXY1sB$!Tt.\)4A(LN݋Xu,hr]3 HDlXk'ьvrȍY¸50^,P38a 9dIҟjxzTi=cs,HNJ5`ݬ3ĿeS +!YuVEqjVky:)UKHk+pW>&s+VY_`9 6?+u+nYDT'/N3đS|O"sC0oaaV+ZIn[p0԰ ػUF`YY]JbY0S>%9*Y[_25mh_9ĦN>$v\27ıR܌ϋ6(iN'Mp#e& eb⦪2#I:fj+L,Stf~!XɏrjytކjvvEJ[Ugv!VVSE^$}Z|/ zrP%he }fL:l fjO=o6 Gٶ+:NSS'uJv{i*MJX W` DtRLY11)Q_վu(KDǾ :Ε=mr]tȸVGz95~9MNgbZuaBsVVU~bO>:d${6(- qCPI'MSEEaIX5H,:I#e\7TXW?JP _d%z5 RxeGArG!/lk%p^W/ rBb$/JH:/R,;|Jҗ59|7bݐwe\֤4N37~ogV& ӟ2Ƕop߄}vV$"b?`&ܩ i)$I%c6h5 H˸u|̪"䓓S[Kϔղv~[cc@`ZȊ&fNC RC1g*iJ{9s33*HVUYޟw0k~LQDxTAwa{ٓuJZM,"pdEuyoYj@-M®:Z$;kp5Lb5يSUT?oܷ*t좲N+X~b~+zd4yޖlz&@Y?Ms5/Qn\m!|[W袮b| /wIxTI*ܢKlSS^LeuPl4=&'c{K;<5{% ȨB$X6aM@*。MeZW]Yd fe;Om2y:pa' ymA1oR`,gqgVAQ!ZW7*U- ˂ EIm%xJz^ķmƭcF2ĴOi_BxÄok6@Q  m%q \3r.B;6"^B!W6 By)Z2'xu/]zR"^uC1U@dߢ6΄΃:R "xˤȌN ȑ[c[KCOGcθIx6}ĝXP䊇S1Vx+R 3= cIxj"x,XrdՖ&xL]'͗s4$3b7+v;%`C+8 7}<1fIlBqgoeq2e[g\L]HVExK @'YQFb|9K^8z`8Ke' B,mx4h8bpR6xжObQ10'ΥHO<)G-`i]͑2}rtMB)~wST2y!5iqx4*_~wbɚP%zU֭ }Sc]uY*MyEYp]+̻]U%%`/y`w,wf6Q?~/zTԑBZ\2Lb{Z/˦\-rP9zP¼ &l$蔮6IYՉEҧ]bGg-Ad:E1šx|dkFt*<~rTeUu)ZMXtZw>–:)^CNT5,XLdEŹɲ~Fa֎.H5l6\-/af[6]Tᒅ=h".mjE0i. 4)!nR[qL42'|#f&*#1;{YN%YH'GAl(ӎu%Xo:@Цh26_7>u֙uFz|ـU$N.<}ޑ25Լʼn$83.\:L!J=!eta'A?:oRwߢ^w=^' x-4 bJ+2=mlם*ci,[JU~dX(%#wq`iՍD{̫r{RE-G~N^fz*%0CvYc IH+5zt3Mn\W\ /jyI9S} Bf?V5ɻ"U-̓<@~!\1S}lIakh&Zʊ,3*lȮj"+ L ];שZ~. OE|kQ*"K!cZvO{\~Ko0"/>dXuJҪֱEaJo*9V,\͍-Cv檮Cj>5tAUj4}[:T]K\P)hvTE-OlJMJdb%K9e9_]f@5b{iR3** hy][̳. e| { 8Fv(7,x5Şִ$jghU5'lC|#3Gy|j#Wrm+ Sd{$Pm(d~ (-M|*hӻjPb5>bچp*n,E7/qUkn>:.:D>- I@fThQd>F[ i5͢nŹ Z?5yssPW(gƸ υ^2 c^Dk.Me4>2Mqؗ-sZD&&d]{j:ޒ){`ݯ) U\m?u 8_壣II惴꯭2?ԙI*-&UXĿtkP D ذ,fv6eۦwXćj(~j@Vf%)PiҐ&z9.n9!EbkF+ VاI|̅78W1[UbV]DZds9Qe bUN&QpiY dJ@6hG`+e}Kq/r'2vF}auW&iL̸3]wc9o祪_O=]OmhWp|NIV5_z+bԦmG!!gvMV-"eXOg{\w LhfaSls9~YRG?ce\ec-8\SZzæ9V;}#[@F5"hzSu^U`@DB? qc*g5Gb^KoqAI ʰ3㴦 Cǩ%Xֽ]2ð(-2.+79K&YV+ch[7S..O5藄zf:]c:8<83Z82xvA14 F 2"$i!  ,IɀjhZwCbz<˓%ag8V9Ǧq'|jIBJŅq$L) 0Nao9sDpОvE*8E!bR^hg,PiLrɝA");Rq1=dm'{ʛLS11X$:|Am9hvw>W.5fr2o\~[kMYwn#!¿Y'+|Ŗs:m엪I$r%[\ّuvQZZgBuCgewA0%@D{gm gURmEa+ ݿh2ռښOs)"wwqWյb$ޤNgtQJ^øID2ϙ5{^ M+M줹2ff?}ՍIW4UeIga28geX͵xx:Ƴ;.Ǭs%+k,Kk<(m:םy6kS6>wfüzk,]63:dp5eU[V_u](gbU) ܕݦ49?VErw," O,-Ku3X;ȉ @~Pd1[+tk`[_J*꒒4 7 [rdՁI8KQE=9"Ŷن'3E?ba]3Z9ʚ s1YooeYXztz}#-&{C00 ԜcrnxO/} ty=zƮ|$^oGg:ܑ:6|~R2Ks;=̮ wT|@{=Ce:;'} 1yogPggifmCUSzׅbցisL9c ,/pL7hA&)UZ[xDZj;^7ާ;n}%@/dȵk*d۱-ΟN+]ei*4+̖V>̀GbD ?>`s8㾆a1 Dc|bjS+J;xrG{zx$ؑ0B8'8c_GeR dN#T#Q{^|bV3a&pTD;r`'Nc?T–驪] FI4 c\Ao^n|eY䣒E5c(JR%>zzx7y'Ӓ%K%!Ͳ14|yd3ƌO?b>O8e{/ztx2uTfidI-ij{,8.::6;mUNcKBL/(|/k2ȹ=2][u>upSѹd:ayR0U)0u L3ʒ oS_F2ݵm'W2,Jm]1=N8hLdr[[ͲjC^(LËr牧avl3&բw+Z5M hXcɶ r=\g;0ƶ)|;#>輥ON{ҜRJt[&uS捚{σٸJ#FUNgnU֫~VY-F%^S7!;OJW=u,ޣԹ*yOա|~,/N7=pRӷgMRײc"9S. uM7Oa;< kpMW‡볻}Q69uxMnñE4ȍͧ*k5g쪺$zj;ryVnш+*JiQvOTm_rh'C@uE.j -R ]P]I0c#?Ƕ 3˭rv32FVncMnB^jc ̠| *ƺimQRK'텁#pu4][5h$ (s>1`QL@>xeDPolz#&&AF H sȊ "bJlPh&lCdC2'>~$.CgXFPuyZVp}, <&*z7ik>SJ]We 4EZ3Cofl;}eً<#>82glە{.űk [}Y2+,s$[\5t Lv=ϭz9C\͙nRG^guM6 ^ ~5yED0{K7%n,dTxj|ϯkiP#jhmO+":a'PR)^%&2m~۔ 3*N/YZօn~^wՄ8dz߲(Oo!Vyiه1wPX5*aʫ4MT17!2\W9WSݜ{ʒ.:1gso3⬿8I׶a]Vow>M|^l z6*c<<;LSqz ֿ!lx/>f,; 2dN[4vF~I|0,.l鴬'S>)d.VmdV'T>l/߱"v\5}Uxs70VrfqǛD|33 379s8p;= 333D/Ԯ=@wT4(۔@r"Ip FPMr|"8Ț8" [ܥk/ 770f4qvxxȈÃ%I#7*i 8+eO[# -hOvQX0+Ep%ȘXKVvTZHa Ʊdɓ&L°.w[fd 4IpE2"ŐLXӇ#[q9AHHc0`8Ra@9X9+Q@.x!qpda2R, Yվ:Zp 12"yQ*pJ) "Wՙfdx8UDVaa)bT$Μ1p^ rAPIaT'Kx<{e0y;uTEUUTE/ԝoUU]][uZu|KŨ;V_"::ggN;M cۛU?ָq082TclD 3ToTs;32AVYY[vpWXV'Jp',v5OSomr#vDUfyNXOi9CO{S(Txթ˱7?fLX[Sz 40S x`;vM/9D`ϕ:31w?K6Xx kmi٩ϹgvxۻmS~Q(.HdMct"9DLoI爕U$S}lAS3޷n-_ir^Ki"V}t6'hB 1zE^YU7!ٕ kػ NN‡cUPVK)o% (em9rkI ZhNRl'QPTQ+D* wP=a21 0hǢYmY }AnAA\s"UJb0\?>ȄyC/4I@9vQbK5YL9" 2/Lnstf4VX?dꉹY٫ύ~jΕI'vDaыoVR!GqKev՘9r'oY8*sùNj6EMUX*Qݮ' WPkC -ΦvVs)[ XJ8J3*؈Vi?a/W]gL\عB1oňCFZLmȣncVMˌD`'yLk4Tʄ]]|SRkjꚱ[bͫmli>)-d6b],uL{ZV=bZwȜC>`Jk׸ %=f 6^ڊ\RcZw!H()L(Ko'4#vYδtIOЪ/̰(>&]*,?R($߄5)0pSϼ:&wmiPY-ߏm\,Ш:PI4]ɣD'HVy@0l5 aV呞_QiH0ͣT ¸U;`ֽxQf!8't|sgw&DM9s0X*a EA$<~06;k?6RPh֫M+Ch3Vř&`s R$4N$]'@n@5{y@@#jrLiĜ&\ܤ+8o`HEYOgK0=R(ݤ[Qe^:‘gپ0}LD}gr&O@$p/r5>bd]YRTrRoɕJOIM=hG>lf?(ϗ2N-x@ٸ0$VI]ׄ0MQj!qp!2@Ϩ)K6!u#[Q]9,׊юǂq'nyA 8 >mp[# ӱ6p'*ZkS2ƖqpǢq;~|p8ntp>$F]"qɦa3fE2Sku t$0GR+Y9Z  ߐsY hb*N5i5`^_k`O6>2# B0R b(ĀڋY*#%Y9Na,l[/z?[n\Sk ᱹjxTEl7"76x"@]zu :&g?='@< CDAks=uDDJ~;@+5sنj"jGb0` 'f^7EpnR)O $lwm90<`>pYcMuV L9H{8W LTK&c;a=& x 0 M.p!7i2P9! QzyOyo$ԑH|@؁XR䞰D({{ <\90L=0?"1_hp B Y)2a!|B^;[Rљ$Zef 9<%fNKD!hkayV焝=&$HDTUtr߅VȌ33[ EUr9.:JEOT|n|)jo'6YCa# h!Js[:eD26јhZOK&YUmYXXa&lݝ뷱u|ȈtaGF)7l0`kc)(3?mYc<8c&0hb022 Ɇ`jԱ~a@ j߽zݣrI"&ܰmkFG-jh&"@h=$v)MCz+rF,#.RSTjA5%86F)v78{R(>K~&*%ĻGifY@;n%Dv<.}cЧ @0Ky(;H=:]p^'K"B2 0FTd1<9gSM=F%𠁋#AgB¬Û pA=?G3E=6CKCl,V;i5AX8af)(D1(^nhhg0XZx*jDd YC*Ȳ=!$T5`t r<"hOszg#sGx{_Cf6/1J@i ;~?:a/xI3=vaZz? GiËL;m^45Q !5uDNAm k*Br3gf1k :ej']EgS}>Yc=xd<0\ m6cfB͚# (bXfi)*ΨaBq2B'L )NJmn32a; L&`fc2`; Sw`lC0BCJT؀h ԣ̽R6S^ѽf/Ϲ#LLV L/3dT"Nr O 6-V)Y^bEA(T4LY!s0+iUot"*;Bos4Kr6XV:iI0^׾N\$?rh %'4$K$ x1AL'e?|Pؤ˒PC黂DU(,_`F$ђ% 1LaGLO;&wkW c|P87} ɯWcS6%EG ^Nx5Ry+eE[uGʹ}ٲciUE$|p5 ;Ho,dS4pbI%W75xc>m>:/GO-: :.Q$܇Ay$UoRik[ڲ[4ίߌz-nλ [);vϕTJK17&(%Bw{~:"XnjFȥy]>-*pDOۏK,Q7ae հ,h_j `w2 vŚ5U|R}wi*+RfM_r" J(z=yqy%ɶr0`@m2K~ ֭'g䀬-ps+jPH=g&M7[;]tfDoV3*|$Ey;oB=ȱAk"V_>cK{9D}ĢK7B8xRdO/jp+\fkqNGPf'' pc1Q(8GHqE0бqAB? PqDTvu%IJhLuc=w8ǖ>qqd]ϼ? 򈠁(qF͙S1YZK!.203 # He$kkN\$cђL()B2H{ u'1K'QdX8Ĉ9_7#G1j\ӆͳ-YD%\r,(m(jr&:)R9r2C40#6o79z#'!c{CXx'ZZ(i?>ہ/\ #my7Jgoо^Da12xxM$7fp(DJ"6ֵnMS)f};XG:'o91J6le X ́o;(ꎬj>Lt.Rĩ-ZPQ8bǦ{~u_=Wa OV_K.jZyoDjVJfiI%Wb[£9.M(OEݬN_fT)dx7`呂tt$׷ܩ*=JiKZhj͹W̷ǙjW5 BOggT u0azb:;rԭ)x/+ח)[4[WAۧpk,&Jb+nzE2okCΫd<߻FWfV.*0.v6)۔+>&JЊjR⣨Xj3~ "cZen\=3K#ѹt ^x#[gFV@GYGe;mUIoͤZ^Iʴ# H'NbPpQ4 WѳBnk1޲*F#4ֵMkLArH>njбÂ&cfX,S/J~q[4U|c\&OnLVQ[63:Ӿ>c2i'ĈrۻwxErHG`Pw9q.`p㶁T>{sAm.hձ#Ǚ@r`6Q }EHz J8J>ʭhH`P;&3YI3[ K.m`DA+*:G4w4770=A8pmxN"O(N )Ky`ԗӟ9s̗I<m4Ӂ2``J J@! DT^c m ѩ="C:#, Z &C 0đV92 6!1Ts4X h|oqT Jb)BxXE @A) @LǢcA>,[y@>ltW<+Lz>ĎIx1m)ۀJO4=cg!JtDrVJ>R=d𬾏R֩><"'bpNO+4uD)P]Abq%TVD)Ե>k 1ǒyj.LF H DʛyClmo#Jf7TOY<++/IJ[ʯ)ʰVI=((\jMWB{0ED^GɞT xzQȔjMc9? :q:s6ݎɀ#&׬xF ׇE-B>0!G5l+`1(^(AdnJ j9~r {l(ȑ3NO8 [8r-ΜF/Yzj'q(,$q-kQ)o'e =Q^CSS-T,[_ǐZ6, όDs@ʖA5F&J&P pNt!VB~Fo} _7R7O2XҸ0ex1^DwezކĹPoh|yx Ԯ"0vml ͈Mk[h7 z1HeۚљjCQ-hBDP`pI"2__ 齷 ҹ fࡕֽ֡^Fo!>d *K+$Ұřmp̩G@v5B? ȳ*M&)*CjVl:(j%:Z׶ jv6JOIu\OfA3Ffɺaj%s'a<  ohkS퓺eąi㈊[u+{)Ilb^%cgi6n_sƌUۮ7N:!*:5mo*Ҧ%Jȕ=SW#e\{_4LiV?W'JK|Q VKI#!uq~O }FT[bk+8/gCxԤ a1G[]!ΟTSr6kQ4"$VJ(TXN|@dRiE 9EiY⚃v\*)$C&WF.m{0KSnr5yQjؼGN"_ dG߇tzǸxJ9$դo{o\ (F{ KEjõQtI%b 7=O0B4(ca8B uWiޢ@M&5]Y@G& XTV"]g,.\0CiN *lZ 0uHdj h8& 0$QI4fE )x :^[oۃ/-Êiۘ6 u:H$r| 44M4tc <Gf{&`MdCS'WU&N1x#ZqQH#NJSšτ8VWh -:huZXAOJS'Vਧo+}跇iى-^H)rY qOL-3M]! ML`R4u e =(t)- I 2rMiꀞV9֎|0׃nH ͢ 4rt2CR3] o*PZF/e$<`fbhm'S L1kПm2;p(^CӐ[ry3ۑStoQ2ȀdR85Ab4fHɸiRl3;hkA÷ M9MzdvebH"8Q60]t,JEܼ85KO x+P HiS4 +&5Ѝ`:i5u"ѢW{=弩 UPmi=%DRa^⟍LԦJSj ]26Ҋ(Jh4hA+Y8^(d'TLBfIJ!ƪ ȻfAr8`ح,$Ghilqm֯-Zq6s4ڸ,_HО=CeL .4qpֶw|A٥T&xܶ.Rv9"ģiؑKmE%)RyVd d&SγRF Or)(E'8b_*")-$'QQZN)87CHE3f2te8~z_.xH:T1Cn\(Z?>DzV!_fKѝ8}F`ucvҞ^:$2j淪 Q:FZ,IӠ> yW O]KQvr0>y< oURaG;t}zn|\B!lqe^L=2B<8l92ĭt{>k3gm\"@S)ƔzsSJU"uxއFm z!/D33Ӻ:iA)2A[E1AtN4\᱅reمkk{z'3¥7Zw 3b#r`8LLpm}a~MY H\d4$АLUAaI ^?g#,1 8GYe; 5І&XzWh@z'"0;J){M 4"3eDt T Ȅ󂰚yDqՑ)r .å*"=$ԠwN0?󧜋0q HwMlն:b&rŠeq9{P,dB@rX@іFq{ѓxYhe:* ਤpɉ<%*D Q!V4 !%}m* fԽt$;UR=m<'-<-FHҍ TA&҅&I%Fsny袈3DHЖix<IJ7nL4Mc@`Ma:`ՎlD߬7;_0fA9,#uL0i9NA%k0A  BHRDT@4πql6S!ȠcXG?# GbSst QzmNař:rD)yq,xgF|r!sJRPM(BkpT_LKA*qHMv)wCB@p܃mhOjBlH@D`/VAq3T w)#)U+T3 JK,#WbV;8aE$Q:5C 4J4$^dA8%I% Bڪ*qCÄC}6oGG)5n8#K\&9KVB`H{QIBL;4I)cRYlJ9Dwu CDkjzi$qڨ$5$ Z;ɶLwL!$IHVcQOH3,d* YTlX8@ڸ LCRi#j``0*͏oq<&ߦ#4GeqG|Dz#&ǻiq[wՐoNv`c7PI$L2h[Xt$+!9 b1Zh$^zmBWVuЬ302ҏC&ܡgg8q8RWO,U I5G+}}P颇UF"!Jظ˭r))iA+ZBc|, }djyљ$d:kRX90!V`XHeCGt*i3(1;#$7 wӗb&y>2" K<4CDLv mMz`y-?|vӍR2A"J)2IO&L"RQ4#8T P!NUs`.Z21;"˔q Ct#,#1/w e! "k ņa00q 2 5Ezۼ=;<&!xv'Pu1"ȃ'kFP4$Bs(J >Gp*fLf+#JLd[Mr9ZȭJ6Cr;s2׵I=H {Qfbfh|}  @NAϝT%CqlM*m!Cqq>PH4l\UtAv#͇;$U~!1з.:TT PB!, DHN :!ӬN&ACOH}s%@)YZvvvaodnŋ<=lI!7CdE{T iCQ5GF.1Oؗ8 W_.˯mNϝ=.vk)bدkzU^[]NM ݃j:K& 96C>GݾRDPjP3QD4ZqD% y`bks*2̒S:fuXb'?EtK=1_m:-m){' ӤRKaPtnU,2-8MV kqbT>tiEPzg'ͽOnj=|okŤEAa!6e{TyhT4: 'KKa΍~(j [B@H7=WKCSg^@ gAz9:?efL $U 4/,kbEmvwq1Y\Ʀ&)O7ì#>N7y7Ӛ:-;>F&+2gasFq aIУ''1BrWÖ6 ̲yTflc5{Mf;#i[c5#K""0[f& and^Psm=Ӂ9˳kZS}+K+*-QO7!+YohNmp>)o}Llj9a|Ӽp͞kc87:NOs?W. D#3 bu퍀]^zk Q$3!Lɘf qΛ⟡;)a&&7@LL;ė2<-4ῬOWql{0ĿTفzuڜ*1<27K,h} ͤv +?JCJR.o[JHy_N` a,yoKϴj5UUL羲O]W<?Gp; 5pND\Ci0 Vje\.+n:dmG;wӷr7jr*=YܧQfK1TP~KS 隸в$ 7W^yvS_ㆮ7mB9*״r>1JlM%(_ǼImdBUvw0X{S&t3ﭞ|T6Q"sa-/2ZUgwuTr _ZG}m=KDqS-O>\hHu=s02\❯nb 0ƕzEy7\}ŰB믌OсvWeA*P+3(;3iγsGobs%(dqBNf{za :i: E>P,dh4mjٚC`C#6X[0@ú;2%# _Ct|Jrag\mFU&fsR0)pߏ bAvL4~$ L;J_%ZYɢCH$IYRY@j*TreJ]$WI2 $dC3KÃ5Pe 0s+(#[/^-?:%\H#s9k^ScdJdŅtϰx#g4fqh̎ REY*4(,S"v(/W%=ozE& @ePFHV%)2X6$J$L$8LA}=7DSJkwI`rL0^|KFbbu9 ѧG'>xG'Y2O2K:;ɮ&Tbbw!pC9 rBZ%%0C)NBkXzgS-C<:Cv=@Q]q8}Eģeⱬ(1ep %xF3V`i3D}6a)\̮YB!yN/aw{@`bC=fM{ y(RfRBb(J?*)prPGصk GbqM9q?R PJ&H1dB@ӖSpgI,:;~j'H.ink^b;ʪM–4aONtg7{Ry喇蟢l\}CRa$Bɹ >JHo!)Pd}fE͔H{7*" 3KZWA^ƭXt[\#赎B?**LWۦl*9>>sqҶ=R _QXĉH(k֝~(n+Μ=ZѭwU6KQ.oR gaT*\rg*G0 r&Ul'΢ܹ&T]̣1'6OD_i׿vYueE1 ReZEzۡ]FۅYyI[-cu%ٵ#kul#&0'1L5"bvb={fHCk4 F󭮢ƼrYC$'--@2i7bN#S/Y"Qz2?#D<Ѩ9d Nc$Bd? fџ6'ʂ)Gij"`=/o[Qafa45kF 4f=дPm8Y8Y18Z!An\VObRׁ/i]F7҉S]C/Ch-PBfHffl).zZ֌!-s?̟Rn)"=2 hU,#?hsd-qq &=9ϛK,hEJqD|v8;Sx?qO,~/]8e}ކonه)@mr^⏸CTc=̾b1ցrV @F"26!J MhJf]9 A4:KI1P `uOd?t? `R "h)*%) "BRh"Tibh R(P(RZId "BhGư|_MU'aCIh3cGާ>; S'6C$DГ$!-0QQSu E4RJX֓NDk`;HNI4;Bo;gi-QEnD

NJ!.A>/ӹX'ַ W|~agBw!⣤`e,ϙ ޳Wνun}x۲/򡕅vƍ]߃\8L}%.hٕqSƉP\G5<,)z@IzUMb ۖmZ`|:ySsNHBΐx.#."'Mv8DkPWf zO?r v`4ni\!hqP~jR]iSzduq+Lk{ZmOG@KRZ>*/heF%j˧MfZg'/KL@Ji!*8;J_Έ2 J^㚷-:!1ta_:`;"H@:vgU>N*Kn7_/>=cڒumEe* B@G6!X&ut 0ð]I?E3p2%5P4RU@ nkBLBo5Tqb6Uo$R"$BGl\y x9:Sw<bQ懔Y˛Șcuf]09s"l%4aq܀LUjZsfegSw5gIJUK(Y${nvL[de=>zu1Z3rTz< ƚ6R$9p]d ɾ$;$/O64Kw1nr? yFb3%T}-x=i{N}I4m-j)`<ӷYGNaoۅ ]_s>"/Kv:ȍN{$ɥ[^Q&s] C詋(p]INFgLpE G&PӴY(&JlbSc7ʣJNn1x!ִ:IROݩґjìSaY#;^Xt- >.T7j'%Fk!^7HuQ {ls,鮈WLK(23 pХ)"ϽV鷋&+Majov1簭"/'RvixV֓&j =Lw0E`n )z%QK՞!bՅoG H,~"fghDȺ6@y3/nS:&SS$u;te;2P0%,Zx'+Ӻq(gnXmj#8>1Ҟ!e@ 2Y ٗU&qzDi/h#2[;oȌ@<"q<`L)d&c1AiD2@oG3Y)#GA C8˒: N:^앭*#lؘb0ՙBY"V3 آ"i毤hOInzqqXR:k3^>v jGF4ndӎhtz&*M.IͬwX(Re{્;WY+G1 ++yRU8^9u>{̠Nܴ#Vy|k ",MPY\NƝyfpJߪAZҶaSFL#Ӥ# ;-~׷{eQrW|LbYoko!ԾPTGoq]Wңk~uncY9"gQzYy]C1T)>i&u!O%RihYh޿ri]l2cM+ΫjUwB')SY^2Ni׭x@0)*\p¾/Co4GȬj?C,8bRO4lo! gN ݑ9O۴e^,rJ%(mc5NЦ{h@i_ \sD+tv~#=@Q߹a%: 7 pa 6M5ePkc`͊Td:ㆶ06NV(fԽ?: l;4?ʑׯ;37o|&cΜVl˳5BxĀ͛,ЬbB`I" gIDTeI$L9lpHUI9I$cv5Y-b]n`4pS;#zg9ܔ&~g~W(D F $ 2Fh//\'=!Q"#ΚpV萫t3$̐c|=aH~'(imh0<~2rB!3O0#@ ;!TI0qXT@ArGi I ~ؙOm!EY"9`PBBjrVaAo,X65`N7ӵ(?JLH%#,ǫ9\p&@DŽtZު?@ma'JZCdzrGzrHdYRf0B$6-M%9vX{|F~HK;ҲQgڧ[U &'ߐڭ}G•E˙&^^uM}+b D>LJ[G)x &o0) &QA(صOLMݤ`XjE壾~DtH +tʺ9+ܶKn?ncxϺij"Tz"<﹍rSc_Y &"/5۽}V'CCo*tAj^'usբEѴo[eֵiz!G[T#|\{#΢W6pY۸x"W(|X'[n\!#?$_jС3-6r#I5 ,IN؂-gȞ^#3Tjt@8NleX'D`Yx|ȇ13;S5IAٹR?*KiG@bXFOb ĂйIb+E/F28 6>%u NZњ58_sh@ صag27#7uЖn}&V-me95933Y8:hpYY[U>6l:767 m YUlkFm8eTB-IDӤ ;~aįQ W,F%dJȯ)Ki~qBc)3,8s<PČ_BaȁPFRȗ9zJN LS`fid?EdIVUf-6Vhhцc+YfM˗.7N%/'iÒcY폜3&ZxL!RDV dy x# Op<4xBy fp$ $[xg"ߧTD*q\@c 2dPao*s+y;Y@ ~g&kB J0n}"0°^! [ڍ8q?=1p{e'􍒓O z&a RP 8^{+GSї˕NUCnwZ?(~t:}1;8P`s $-9hTPv:Z.Iݐya7'Oԃe33r|Hi0Aw $5ffgh16234H% Dѷӓ.2i&ptF29X٭lykZS%}npO8JM%9Rl mCVe8fu1YS61 }`Fmlk/X`.8э̚ῼ9{yN{6lXU7ȡ-p.{,͆MZd呩!)DAJ$'7T &f")ID<$"C( ma9`IXFR@ eϚ64aay4"9F:1،@F4bptivy՜PM,9O'L!5Br*wa2B XuFLPD(Lwz>1~Y{[ڕjcKΝAP~pNIp{vAMefUtnd:tIHV5Hn [ c0`!dO^ӝfgԼ<;^p1X `.D@Ŀ>:gCCC|C{jq?U,\cߩcۯU+ $V L ^ezI#/-i\)DXJÒNȈV4Կ|0m]px^x&’g,15zsxD!Uޟ;ǐx4Sn aF!u8`%h1!gb#\.7kT"TB+(%~ / Ty|=CtQ,{wGp5`LCQ$]ƒ- ,]&RBBʪ,Dp)6G>L7HpSzC1p{G`:mJqDwkebc:{=#7 RU֎`zo͟>H(zSh>0@fWpc6hjC8dڊcv qO#Os#~+ݩzE$(C<} EAa`#wwwwI*9:>x)ԦhKh|B~0<$jT^i ~\azzϧnO!0>w#?@_v|*, ÆA j 剤 7&Zִ;8mxŨȬ"Ƃhj!,h, p2FZ)`lS1(@EG,rphڦxz#mbcleUQW)C~cө)ŁAKzS^w ܻ}F T0='&k*s4"Vx狓y|2d0B 3()fz4bhx{B]^@@Q>biahC69CيPxgH&6C!1@ˑB0&T" 3*3B1/7+r<ގ W0)H6GjF&G!x~!(d$hޝٷq9' 3kaCHp;G/GvHH=/#6}&ffauTlnu$0 ªpfw1a߸sC)%( C<3$gi3[BiQu ]/aeˀBR +L.Ln^ Cġ QaGb$v1AgnmL)f !Q6PRE_&*^wjq ڴ'>Ⱗj2TG0:OW枀H1vUe{^,|Hrzt4o25bQ,45ީٲW.丬sSV$͒^׆]h޴&#ݻɋbJ?eyFVmmZԡA#ZWmN+k; .Y)u z䬠П(vR/[fը'*QMBcp]kl4(5̓F-nar<]e*AEN\3\ɲ&By,餭_A&PHD<{{ ΁~q gH"2h͘e 3҆ L B8rf6$L8C)pG7ylGG67# `?UAS<_MB?Wv[`Օ{5GS{!1;4'L&=pb a_?;dà300mҶ4q1ÿ9I} K~!"P{a)1thȫ.~D?h~OHny1^x:Jlw00cѡC)slz/`Q3 $%XaQKF(40%t8Zuv0`6c &bCp & F1V! Y)kQpF8L͆9 a8FE4TULldup"!01!5zJĉIQ, BTTQBH/6` !LfpX!~&Q8A ;YQT2UN@Է28\vq.cɠb d8xiǝdQ"X qfP0t{%XpeJx 4{nB~?a<5˝4U©(eP,Lxb8RP5FJf-6?#H7 35)'9a vqeZ:@1UAǝILdyT(?>3NtR\#+eRi X,Z.t`\3]~1rpEw^ n BeR¨*0˔Ŧ>+ \ r:E\Pdt"YNT5!KZ"Ӵ2ʶ=ҶZK4%%s;l¹QNSZԦMu`FC.# iē2 ˶`sK.4 Uڬ*3׼͓,mUFuG%Luus2.Z&UFD?VAky')ڕqwW'4 BUU"^[& QTenh#Y)Rkkl+(6Z6Qewi2إ1 n'B9<:k]w#oNńb,jgK LgZUdF|U +LTh͌9cq:-Or1Cŀ?{={2Y9I aONDEPfQU11 o{F:gռop'08nk FDu2C i1- Ƃa~W]Y0}AcIN;;!%U7tYgw*YeNH#ϰ>O bP7[G"U]^#H\2N% T(l:\ȰK‹&01 Nִ]EP,"n!Q#.j#kE(˺ۡݏUC &@/$4Kn^!xƩGE.[ |:!&#,(XNt30F$Hx+Z$H&ƹ \`A@_,)jX3n)Rji@!&!!":HkFN#ۄ4nF~M)Wn2Y2Hdʕ>+j'aI mIC$4D-!.)CqFhR a2%-. C:O͒4S#C7=ݘ*\p8$\=DM9a^ @:["0'2d9rF*bMDJLDO|n%E (P2R!4! ˟Ts Jz,(s*4'`wqyL3-HyLuI?|4t"_(y~;9 BQS,ZRs; ԸLvѲ CDP0SsdG+A!G! 0\$ze! վB JQ4 Ic`-2> =-(*Vb()J(*)2Z9悓&'g fRSiW} Lސ 'l$|pN#p҇G'tC! ;0Ѿ0SAH4b’'CڐJ$EϘ#ADE&`l1s/8x0c;Hy!#eߠ3GWh$ aIۜ|6${^8D=/˜zy|7FM;by<Ӕ$y6  Kq3VaP$CEb&X.aGE@vy?P|<'t w((YmĠj2^2m Nhŭ܃\8g;:Z9:Sg=bb iwZ;15EZhT -#ThM6:#xum;JLmnbMƊ$"NĠRwt;úI@7DAɓJc92JpBJUy(wxM4A%/l00{N{̾ˏD%ZuZyJxDBgB&9L̓H=e/AΞ0N+3u{S]^h$]$5ETLHa9j8A3ACP5f!({3Y5:e0t`Y(zÔu?h`\`0jj:`fBb*Cj6SR0!%DsM1=h1uUsQ?=;l1= ]S|Q8GY!/&Ӑ"q+A ~PH(H@T %:[JHg'1FCd83wPod}FxpهNj001DjN[z3H3K"QWmbHg-i5ֶҚ6̜]%ȬYa!YEM;@[=!00H41`F˂!dT03X(}Yڟ2ʿ.N_}ߌ4'gCI9fs9L+)"K~77j:(:|x^M+Xv-2Fݖw2Ցɼγ ; KŦ:)Z>T<PYAaB3C!?e,d8ҵ"jN!;A*D&I>8\NI$à >BsE> aѳͺLϽLgzdq(%(U9t_aYDRUT\|d^0,,*G'8`H9{QS@s%)J ! 1 j')Bhf )u<)JRMZ!e=e%H\ĄO̞%OL/N+J&I+ {f[}/>`6K*DB/XڅF~;Q蘁$$jžl!ǔʼn34 y@bط}t@FӴ#.Ӳ㾒Y'A_@bqak]1eiE{emZӀ{'?@@x1њ1eTբcUxJM{<(iߟ /pq5P  B4.mo2ff!6Ma1HPE`{ g;;};ؐưd+ȗ91S J%"@R+HB *H*̨R-]vf~xHD [BBp^pR;2A@+DF$')Аy8>U¢p/BH>Zf9f >茎'K|\{ҮJ )Q}"NMNNY@dcH8+Oynѕ_o|ӫ{Z,cv3_1rQޯPb3hrO&XH0ӌɡ2DxLOJ(pzOtP/ t#u.7"3婂3=%,;$=ADz7^YKx=)[*C,=JI_vXX0eVjp#jvE$B$Yfy&"srk)Y*R2[֕*smœ`h3|%jж/tFiih6y7M$lʼJS끰gDQ bزVyhS5YoWT|@񘈪:qjdҥl@E69-&Q1YaiCBf%y[e6>WbuvUԦ<6Wׇr *@謉fߤ ,= CɊN^#Tɿ(%sVCRS`+E,AWm^o~n+̭b?,AJsжt /F#(NcWe^|6Φq]2;EGUivIUz>td䭈&OOk~hb*,YkJ϶isw"pZ@4QtTƗ|]P铒~OB(?eq7j ZNbE|bzS_U v gGA)iҸ%0IVD!LWyMԃ<)t.N׮* 5qzč32ֈniu4.R'.J*Hy=aO@ afJ8TL;HagOy\v!oYS : '>3 v-=CvUWg!piH77G[-G؀b26Sz" 1JhhAqϤ>0yDSD^cme Sxu&i '.j͔$LUDqR5&UCΊ 4]aVgf :.ʜմ b(B!,ڤ.g&Tػڸޯ}4deФI#Z9%)/j8l:,6dɆoT-{pثIrnl,)ЕQI4+bHnSA伽sP[<ӌ~e7+K%F we?RY`3ZlR-pg)tt&i9j3wUp=\ILcjS |RR X?ގ-okc9;DنR@6سiPE-MrXT6.Rޫ-fhgI:vR,=-0fe0z6؜bGDC P= #[gwS4O*+'gZ2-s- GCc^0sl'tϼ~&c'8'@5L:vܴՓ2## 3]4be[9f2pC\,݄\ёFlCKBƳ7DAM Z#Vֈf 0TV4me@DI27Ai7kZw!$L2B)( Ѭ*3|1#VQFFU`ʴ{CV:fa6w$OfalGC4}{_ߌKwc_6ºP~C e"p{??󮖬30-^ %xmɳ&ζf̋c[YZN@DCw! !Ȉ{ }x֫цѣABCBD: RR2ȫ4YecͭEYE蒔]ҐR!;Ĕ脨iO7!Cta&d1qH8/ˣ0GH7CTt7ZD$LL>pދHfx4e"-|u|:Lυ ))i!|2x\WVl*fmiʼ!<‰'zF͋DnX ȚRW*;Fy=`Br,dT,KPCT2]PhN=y&Cr(.pmBO D}Y'?Hk4%10$BK|{}p8C-O^Gק.z %U; %A!aѩwx n!|fR:Sf$)9֑n`;h6{a⟅F2+ >xp{ tRL;AE 1$'X@+.b'q% 33=萤2BEli!V*ZGIC:!V!?sd< ևDRd Qg54lfN ͳs9e8a[ 6:ȸ!s8.t6)艆̘?ctu鏢d v@a )6BOTW!^k c>=CA)0Vr|i5 qE}Tf0!h_ Z;s {jN*yW%9!fr{a10w0_Nz'q< g ]2¯)(&Q8FFOO$&I&g:O Gi=;d.AĊ+>=^wXxzu(]Mٕ̆A0syݣķ^4}@lB07ì+N6%IOS^W!'d$}$=A1}ퟡ@= H?3@Ǥk}GA="j~{#zn0ۼ';ZI*ҰbgA@HǟܟJ*$39r}BC0%td*H7%ܐ?s<w~23 t*|VN#:Nq%4@ 1)<qĹ$xNsFy}= i^wNh&$ FDNv~X#%.t U" wl Yš4`yNJ0xI.|=DTRx!_}|&g vhq0=CJ΃{C@NI+ؔ0H82Ucaɇ3 مa8"ebN8Y&a6ghlh03+ ̲Œ2i+'%HLC(G>RIHJZ\GkMy%ct xAITK'yX*姯*Tm] kINk5'(e6=ɓM ?ZQTsD1;Tbm#y[;f647x8 6=r?GNƱNn67vN{'JM[5lc_U;L;BŀG5p5Y^҇VWu&-KDz[ QUE8aCv$kv_.eխYaW{=;lP.v$T޺mr<e 2Z"hi,rWQL|fږAn$ص=MlFaKvNѩ6k`v1ug٬O쾤-p/+G&6[P%+ƽu^6kYmak֑.y\5.uwXyύW8w'fx#u+z08+~1,D vEԧqbjż/Ť c"h˕,9L3қ9,B툧OOu!P\7㣁8 :3r(AviɐG$pjF䊲a&FЌIȑlnpbQ:qtEaj΍Su57 -'-=V6%%.3?9}M#6܎J/}ݛ%mge*3>=#M"s'|435&ͨҠni )VO^"6iR'P*KQRU(qXB U&l%-"$o6;Ti^2S70܃BfJX)<217[&iتlBqA#<[ˍ=/qCmƁ(T)8xTRPi~U4{y[[ p\8N3z뽦IM^:m{ZV&\Q |E 6i98ͯ%kqpumT1f,2.|RDr4ڰk's(a CbC!.} iH%@ \ay\ݘēSS 9c̀;' 'fKDO-ڇ><(0E (uⶋyYS2;79&יKZDkO(S%zأ%KM?+/^RŵSy(Ο`zLR$D^t(YZ-kVԴKtG2dWE E*^+\S(͖oe^cT* d!ni2RR*QRGNխVŪZӜh*WJڱymD)JRfݛ&h)m0<2% 2 Z4ç/i&혳6Î5̜a7a Az" ($G zlߴ}+zպV7s{fW%َ,΢yU#}NO9/lɫGowreDW1|[7iT+!S <'V.T:Y{eoC%Fsy๲/Y)aR>s<Չ uἼuߛ4'(a ߴ{=tr^WOKNoCE~|tĜh9Rq_YzŞ7?S^/r"Q86c9! ̰3HGN#r6w_E-{<2mX 8{aH|,^X`-"^ >y9㶻 O [d=p >ן}*-Uu Kz }z$.g>4L Q/t0^ӻ>Gq?;^tHE@~p1Pud]3@{rq_f t}tiQ$~;No!1%66Jb9E;7qRq;4vN%9Hd$'Fj)v#sllw ṥwնFdhȈ$Hk2feQpYX܄*a`ٝⶒY@.${ 䈓Fz\N@&ƽuOKmkg]`hNwGp=[#,p;@Ǵ;vqN %Ffl3LfsD{GMPU@07HˌaN$O8FM)9M8+)r%i=@??H?HCcƺ0F_ Y; d3 2f,8,K vt%敄D< |Ⱦ\r'4h<>H.pNle)__Sa\+ƽĐ@L !5LNˣ+}, BVp9X{99(g~/hVڬ13V. T(C>6E|rpHu^8Z"~%+1:zJbMz%:Tʃ,$4HV].|l⼺0,bbd!aUKƥƒWF&{+/YJ1+ .h}BV-5n-nS\&MxuX0)7iDofňSdy2eRݧ{Řfi5RlUiK !w#zu *P}oeot5pթ+"bQ Z갷)ܝk3XE!4& QGtH֬NFNp_Mxҵ|EťghH(,{ΧkGvGXw昲Rzh&z)v[ygSТ"9C9 {xd8 D7DR`EL"D!1Ro5o{ E40I%L'%Ps( ͍2R@f6Wab([PPLĠdXJn&{Ȕ3VLj!F(E)ZeCؓ@brM;Q<@ LKg&sYP_4:>ڬYpBgvvMf;e(v'T(+y.bD%*%F:i,n^CU3EpQET3 ('@!ft$y0b_z*!@K^de(!3 )&; q]q:K@UZpR&gbé5-JUG)^F[^*Ʋf婴64/d,"lHcG`RgfW))8)"s0Ρ屓X 48T2La\qLv,&<8<43VvQ%1D*;hݫD Xkxk:-ʤ#D$A!ń4cIx7*؇CL7.a*޵rh xDame^qb恿L2`( CLUQS 4(1A{ws_GZ-*,we I,WZu{fmmbM0F9cwyɦ羷>Pma0L~MvcbvO֝-Iʫ'%_RU޷D^=B'{iZu;V/2)i,jHQZ;LDZ&DbV)H8),M2jJzRjsBt%$&"%IsQEBr/wrs+^7E1(LDɐN$P$"\2 Дº%xMF0;;eiM9;RuJREtKkM x#JB@~ɠKi%b^|YucO+8ڝ7u^I{NL"$@)P J!P $87_q{YLAffMlwu)O7{)ӡ3'?|O`kM@"!F?41NyQG!#9<2WJJJS | IWp.dI Q&+ZDq"{0HJx=h\.<`3[a[=v-*RL12PBBIBim3<9#׈u{N'=b= P:u40Qxs1t*Q6!ۇzݳ^m$uO#>gEP|3L/$8sj*JQ"l3WVўP=nz&،aR(`Z:\ ,`vXdfBlFS` ѡx5eG/SVíhuAo2FOAMAqJ'[/tZTp5AϼMAaV&9{|{8&mO*o6F -kG7AH'p{S{D3003xؖ3K~?%)<Rۯoj1m5ȸ:PU /˛ݡj?ktP}1YU_q6%,ZILf_AIeg𹽮` {v 1R6sN״Qb\(3;r,+Mo*?\õR[6$0޼iT:SjO4dkBd3$&`fHY92fptT dh$qÙ>NH(uMHgmiRY]:Z#Il I)?vv Ag-yu(de"t=#Wd["SimgK9~8nViU:BKZ]?=!n"}P[  a2 L_?cGtscU*k%LC^wA(g}8#<-V88_. vxQ2!#2dbQ6@0#|!6 ׇh_  ŸE:VS @4b̟"}GODh`}CD0N7hj4l-?T $!b,¡(BE 2233M =IPAjZ}}FzGlɂh%s9fz: LlkW.W!Q>z^hmfV\-#[bΩ++C:n0\7~{FFYqZP$>Hw8tw]%y^5gZ\]K^=At?\o}_0vu(Up偛U1IYR1.0(^UW5w*lX'Jx.ksR.Wz pU%Xyfi]MP%]IBbwM8͒g^_Ҳoޒ:̛ۨB1#fu+ֵJJh΋; >?yQgm+2R+{mѪ"P/|Omfe"e}Lc9'j(1A;"T3䵳%#*R-w1h(-shߺInnڋmW!a`<l^ETv*<4Cicdw%QYaXVz|@@L&|C |З{9Ρ~zg398p9l"ߌtB>(EGW}A{ɡdq6IFitڼ$UO^HtN3 K/HWLw[`؍+PB(}'ZXq䴬p R3di0R@fNHP+NOd-Dfڦtw)39\/[`oh:L6o)=5UQ6ᐇ[9s=4Yr!)ą(hV^gp@'! 8Tӟ)+K"R %8mafVQnaCԳGPͥO4" ~qN[D+ ;7SPì#*.9A<44HyQ (~ ELFB3d|#0$,6HQs4FP!ePLoCHqf:_I*`HT)jbȪB}'e aA9de0%L">ƚ# @0*ƯY3I[F.lNe…K] VV]#FU]DqX&^B6Oy#@4ȥq^Z:ͳ2 N=(C)/eZp[e&Uj^Qzv" ]y z~-3{iQY$ě̻̊e&>hWWy5DmỹḯITï2*'BoRfMnrV42KRV &^9<\&<+H1cYv,]EPUfU5mqUॹhtOƻzXj\yM~5cyl hUfSٗXf^Gi6oz4^5 YDѦK)G#8:qnU=6 ܕm:\&E6` :^\YrT.P1d,~G9hh)#15<#92Fq-`+R}7*ǦM阃l1'0w~wy~60nc8ܓ1 ABoF$iLcfՉfcBMSEo5n8p  046$3XilZE5:Wfբ!afFͩ9D͉+Ny=Ǫfyۥn ʜYr@h6^1Y(v—/&XJ0}M5ELaVFU4Vs9#Xm]ٌ7sq' xt>x!TT2'o񠜕hƧ"C@yɀ@p]P S( J(ͥJbס{5{â6Arn's_{.!T @F?s=3=`;y:Lɘ9xN@:2J ʿ$Ϧ mtF1> Z?>}6# Dq}`i$5 Bnx8JK@3a/8 ͵=S8׳&ϖE8d}]t~ZOCɠvGRtggwao{fwXRR`ا(8>3Jtl{m|F)<FMǷOi&;eQI*'Wf'K\`LBzO{VQy5ަ0EReB&f5%N Q!jV^+`%CB=1!. 8K"Yb PepnL'$UK/K?#~"j+dgjl`S(c6>B( +Gp1򓏄2+Z[+ jεblYB:-"f/ :./hsW:]눲l_=2N:{f-.{E( z uEq4|Cp+.̕({J3BwZĬ6RkVut; STNd[槩2I=ҷhwGbTX'جt&#]ljfw*P%BJSAoPTc(Hw]NqD+?欌;;)򠩡:R&A !IKU 2loFe2)/;R' T䩩VXߺA{/ՆtEV`[VeC-"W"ϧM%Pܷ 8m?W9.OtPp?f.Uo ˖"melʳ%Z{KչaYF& h8D(K|33]۝"sܝzP8P;`­N'qEɣYzZa$+KGjý;ƍijZN!CLo;?D;tn֙S)*TBiԯ#JJp㕻A[$7՝ 'S8܌77212Ll4U<0*@4dL#?MO_)u751h I Lu15~CG |kpC=?`g1Yffc88E6ASaEICDWL(:A2]Ūa3N]k!d*- E >'vP΂#4@!=!wP X d^΋|Y|v`KK.j˦I!.0H=d X9cەS'2%W=RpPN췊%xD.(T%ل5uQ}_6rHۓ`a*'-8m4 _ՏP%4+7%͞CC&6028݁89N(E_&aHOGh_^8?Nǜ@b^Fw&>RCmq\Eb..[M (5эI! z\2 }C!/vwxS<3%Q2<3Py%3` ?Gq4`^OU <@Ǐa~s33NX'<37|lUdcBuQEAgw\UG'Q?O2; q~Fo$S"nL!n$tm$-D+ 0ʟePk]53 >:&7$ZpPdYWs/GpH3.S. ,Y %b[.Xsuyk\KqY#W'j^_ șZg5xJ=:4 ]QMsnՖPۅO)GXY;.VSvjZ!{|':PҬg_;=坓LjR]?%ݩ5Uj2~'r<%bj޻޳ ~Jaga&,:dfTf2טZ2Hw^M+ lΑn f݆MrS:OׅwXBq/ *Xoٖ ovu9~X) 5i8 j/·9O޷v= @쳅#7û%ư6ݻ3 w1h>L@@ݒeZʉFѸ )yrpf>UYy"Rd6}cD_w$,IN"lC觲2F:q  RڲΔ!-JzQP#-=>պIv!eczqT:/D,5,j^Š*ʵ(̛l76d8ʛ eŒ)ʊܖ0WmܸՑbW-Iپ^h&N[jGO4NҘ9j{f"V79 33+n+fBz{-$Mw]`;FK:zuQULOYGy9J^3־wz—!fMk {ƬYrHqiQU%N;ˋg}mV9}v{l{t_c.dQ knէ.L9Ha _w5 J6%.ZGƬ3ʋWcC"ue|)|$E) J)H1`_γV.;v!ٶ]%ӟf_ukIi x   z }5\Lw_9^# N)S6aF*{>~ $(jF3u -cnq_QOon~g9ɳ2f ;ls>ðE2O)j`ecdu7LnyÐ!/.T6R4db7Q_FB%8CTp.ˍGD(Fxc6Ǥ#{,Xm\A)lF; pK@Qhx#ΜYfiVf*Ӷ6RG`Gz~*Bݡ bΰ#*wf+2}U1b蟊 *},isr 2|C79B>S!d7oq_DE'x6]:HmeIk>w9>i*$I:rƄpܚBq<ߌҝԛ̧EXd[6ihܦjfgWYnӷ!ǯFka[cxy,{l!RַKT)- ÙmT#ȵN{[KhϮ\oG?wκ'On7jtz5ٿ%4ʭ͕b.rI"yY۫K"rO݌wiބREMBP^V%g/sEEhthpg|IkԾ+k84kd¥/c9n)vp βM`_5qrbkq3"Pi@7nLUĩKQUaQfUY|oj(OiyC[uybV3 rѾ6xT*3PYgZ5GJ}[e_^tgnRk&.iWEE]ډd6+^mlg΂شMn7UWl\yyرuE,Z4@VE# V)grUOv\mZ0ws{c=ȱ绹xegDUXpi%Kb9;[ Cxkr2JU5jU \GhdE*}KdbvZmjܭ.R/|oSz8ms%-_jbsZGYHgՕIUqN`.*]O Rgq )^$g:b࿢-N1)D롒>t3-{` őv][+cJR䯹N3Rt3ڷ Ӭ,I3\w7<Qslb+NHuA D+s&Hmy<"r//Ə-ռpHn!D)k57yS7pC•٩]Ru%Cf'HjupRelKFxk3޷ eTʖ&G5iMxRQIt**kҽn(߽T\\4H/!^S,LE]рNTFq~jP˽kD꣊9uV7tcq㵋ڤ1IyyR}>ʸX6o*kzY2p u{IemrWɦRގN"9@U*(Zνb+-BNȷ ޷㷍s2E1o.Tĩw_&k[]A"٣5ȉ}nͰnڒܯI(ݬj乽e;C}۴lddO&+O^"B4*@!dLɃ?~t??g|dR3|s:' 0g޷+UfahHag3j ,L05&@P PRr$;{^?k8ּ%P;z{bRLtY39D_϶-2 2)sWgNCbn;YDI)w[=*sowk!AQD<L7{7+: i0M3$]2s FB5ɐ=#;s>Sa5d돹Pw/cRozFRKT$u#$p)=uxmh$aEԺ6~%(DGX 활jz@vHVK5 JLa]sّ:{L-kd+Vl &qO@XAb#wI $9Njͼn(uܭ\DT#YOI*Hh'芎$_$kB'6\IweͩTEْcYJ u9ϺX? kg%&_^O% !OWjMg:eW^?vM6^iaă6R_%O>r}CKs/wrL.n^$;RPEn;h2TTDeGp( hwPd~3(2t*$ l셇/BS2D!VRMz| P>< p h$OnI8Suq"KRYH#KÐ@AKCiA A@J(PhP(Uhh(RHTT !bFSZ\Euϼ UtZh:KV~; &K|=QVn*GXU_F;j6ɒ |Y^X}gp26A@l-#NZ򧴯6FAy~ VV,^in 9%%]aX1kԡgvZg4Hr%^=&U9VrHUe;yQXA$mT 2hDyNi6Uh(fѴy~ORFyG|_UN%Re;%5OZYQd(U;Kݽy}6+ Ͼ߿fW(*nF}V9:Oe픮J=趢i5Jq kh6lOEkz.Kpt v໎c0,2ϛzT9V:ȷ1e_7gYUmrΤ3=Ɯo3S̳=I\Gj{Q} fXǥcYtd:$agF=0:`%SyD5Hҷ]oؗ=MZ'-J8Rg6W-sc^T+ ޺ƪ&,릤$FFGh'#N2j[deٺz)JࡱGc/YQ6EcV8|s6* s#;b!K9޷9ÿ;47z*rR[#1oo>JsyٶZцX_VQIv!Uyxx2>&zխWA;: yR&6*Um9rc'$|-;̢.!)LĢuE{WRvd/ͨ? |MYsTǰ*o{wuTX<$Utb7N1TS+ں>VM\tWLr!W'ib5Yvt.F()euIY² Iw!?wϾuU6|M6 KD]ze'sl tL$"Nw][7-O_5(Xբhfl 5 f} Wֶ#n\Y|ŝ~qZvy_ZHXg֥;K@;7LRT[XWƂK&nbi=q,*j\GU&;-|2 juY&2>bMbɱ/RRQ_ח|MĮ;Ա:rߋ8(Ȼ/Kf½ oVEUe3*{\kCԨ ڗQqV3ĖKNJ*Z՘t;T!%|MUQKI"F4Α~ ]:͋Pu, _ $TL3H!Mzio4+@íGT jЃ]XsAtI #Qr,b]4!A:=i*dv ,kwa~ٔ*2հ+;Ćć@MB6mKbK #aɻ'HN5˝F$=2mwQ^0 K%亯˿@_*CmLGjBvWM7$N븼j#ٍwbЁO=d2h?@Hʮ)6?R*QƩz4dyܧ6pQM5K+@/IMcf-IkŖܠgE%yU <䙁m~ ** 1ʄ[Aqa%2b"zjDWHɲHLWrwGӬryx}|IP6 b$ݵkZ]~p7yB>)ci!Y=-Kڵ }kE z{Rw_UZbl SDi}ݞM\?-  ͤ3$>8:+r BdgB]$nR4zu%5ډFy6tFl6 }}Yّ͗D; 'jȰj4;`1ZFQoHVIjۦ-WL,N#wȖ!Q0lfzΤ2 efmLmEDE,i+C?N {[~.+ ,;3$.X,vܡ^MqS8~onD+XLtjOa抛3֯6or /J9hQt9_bĻRms"FZvҎ-FA,6<|&JZwq]sI"EGSѫ"j{=E{R Zฺ{/)bV -lYLչQLDTZtS³*+(*#w rSܒ(<[xim2A5M.3T3\ec7 ԺÚǣ0/2,S H E$5. $!!tH5TRYeYO w%dfZvab.0&e=g NȼJ\_{4%rk  HjӚJYH4/Rd֯>2jQlfRxțqd^h1iuUHjBZqU6PuUϮLߝDn&$6X^'fQI*{[BH}qV[n~TӆLPWɝt_%uV94?og-/Q<^T47֥,̤PmmAN_8O^v~Ƒ_]?tqqXYiaZ\FV#J8ޅ4Ϋrd3n{RƖ0{61 GNV*ouGle|U$ᇨ4GF1ăORd\pRU̬fP릙3e-7.R\cBIsĘ3ixlk$}HTx& Fq6zM֕.w!UB!6$EObSewH4Jӭ-?-8Zt/gi Y|Nw޸/ 7nɼ 2Egg$Av~I mfl銽`cV$T\㲖g|Ou+Nڝ^lS)JqȪ"݆F, kN_L<񔜬m& [|Jf 3nյOضu9 C~޸#ԷXyw&Ad]W{42jDYg}m`ٜtX#hFj[F}z.MfֵO$ՓP oqM<ј& #MT đhU '7)?jTQ6|]E֟e`Wuʀ-t%-dֆ1DhVotԋݨ^ۤ54'OPy\$oII+2ˬ5wЅjEz).x[ޞ* s0M\N)K0f[HE!DFqPDR/nZQj*Z˭J9f9B)j_l.h&)Q_-ˢՆ>W`_uE5R JIak{]/{Vhefܬ. >agPve@18d' eKJuwfJsjkī˪7R$IRϪn-hg~9if9i^ LT['Zj_+C(=biVo.is\ב Qw++oqgچmx M`R'vTyhxv/3oPhPԦ2soD Š_ͥ6ƭ󰥣^]D%KR-ʤnen ޟTpŋKt# Xǝ(9hD${}KJ?F2hY2H-rM~5*̔M]ouN|'#;nVc+h'K3*ݏ I's;l"U!م3 gb+is^SxU?=hjچSUTC>!W%-rmuiѵZE2eK{G%VG_YG?] EwXCXGE_ťedF߼Dk lʷ٘/2\c֮:{O6TD4 #z-x ܒXOCGgO{Zk84 ^Fɻ͛ hfI6Ɯ9cѭoSN0MP+0v5qyH-ʷGIm}wdɯc(LrNX v]xi$n,W]ļm4hŀH[L\sjOk\&3T\1of{~pė=lC؟s絔t#7D7qofxhgV^'JqTc+ Kd.Wh>AX9sKnޯ/KCh]BӜ/v$I7+hJ&GE80i|(;03,/ު[$\]MWܷg4 ˩"kGPv|bb[*+Et[48%Im~Jn+9ik*k+8xKwz8.&BO%|oLȲK]y.dqL4ر?u36蚻&8ϜWμ$&I#ˢL*ZH1-~SU}rf)D) X=IltݱD,R /aKq[g&0nn:жjڮWnNn"a/3WrUV7<\owV)sQJq`jZ!3M*zI)VuW0wcgD-b"9,Z#s؅!G̿;¢9}uwqfuguJg'!{GWɋh2wE2N@{[%zpV:*(&]~naVƕ˚-) ޷=N TT>Bde_lRR/i'A2vH7Et[MzăXQD[ڕ7oZhToBvٛgaJK纆ke (ԇKꗇ[TOjt^% ba5E]VSr+(; SXZfYU,7[Щyw!}j*Y3gZxZxOC(H/+ovalY: &o yMkS~,*bX7/#89J7n!. l-= xy΂>}|ͼma脶9Œ.xM=R+O +4)&e=yf]I[Ͳczv-Sj⠽5Y A'k۬wޣ.3l3=h@DfAEZŕF&N{LJ.8 rPF2{+C'm Rz߲:}UDd <;/zUEq|'a3KO@3QiSM=á:Ib4NKv-伍;{bM@YV`8jJcQB1ڝ( ]Y_0]Wgel~2lr,+7ӵ`>܁S ڻzVHb&;+Zl˔ߖiI1Mw UVT#U*(=Ai_;CN^äo{T2o$*n\g`hk9k~d]u1DhO .:%<؞E!:n3~5"b8'mꌻp;U',bX]PU{`_A]?CTluD0kׇ6@XNgL6I(rh» %nl+x/J "NҮKY)c/']bw Pj̅[OG*oijfmqUvŴG%KAT ؾ@24zՍҲ?M[AZkN$Ӹ`$R+X kj1OU]dohl"VQr2k H^eYJ-Tν?L; B\\Vy,u^=v}lN7jWn[dD~ C1{]viֆE?ݛ:Y_nϾ]xv-j D*N8Ԕ3EEWn ovlJf;/rmƾZλ˩ kŽ1̢pQ)RhT̸FuFS,J1hMbI* 1aWFzl3q]ܙbf]n1^TL3-ɮ Sߢ5McGrrc~]e{(m7\·BLS8jgQ΍.kGtKdTZ yM-tMDV[y]Uy|nDTUu!n|Ѱ;Ap ݭi´'+nRE]DkDYrBW$ HXuhjUVƮ7{avk6e:DחŒن2o*Zӝ_vI;D맿[nÂrB(mQPR_ O}Whhe=pTi2.8ڌ5G~dh=^WeH*QQQ)*Zl|̣._ }Bc,&Mg|tŁ$n qRX.gޏzM^+G3xѐG6V0j*Wn7쌢b8JD,TUQR[$R7pNUĭrc8M϶!nkui!8A?M+jέrI@4;{l"_rw]\նǥٔU+nN{{s[eS4`CF|)mJ]bºq5mK^EIIWTeI4IRwשqM9'MS5B];k}տK{rng1T^vm-IH5i4jU$<tI7̏#{+P)Mf GYRxaalnƿ \6} 1ɩeUF\'mPzV r+21~W8F;,H.d|1zgKwfwz,AOz&,Bܰi}dFR{(n}y[pxҽU#ܐ_r"t5mUjI 3 k}ɩyc8V}ao]^fq~cjz9i09Tx$%%[WFe'[Phݗim(4ZtSO1>"ܩLzhY⠔38ڦ/mkB`Ԧ,zq b?FǺt8JQXVŢ3"{ٔjhu1n*=OY%]c/`Rsw:{@IA'ׇZ1Jt+mZ)KDjr7)#JjKgKE(.Ik#OS6&vܣԩ;4a*`lpZ^-'Vh*+]^%%k1Y܊if 9 JJXDbD6sإ(FfP4xsmk'̳3>{FKMCzߦ6f^(Rh$Bfѱ*Tf:[Ӿ8Q[ٽ͇9:سN RvA ̦.9-mhVM^wF۫㨎nK%?] k"{ۤC3/p(Ūʵ Ѱ Η‹sB+=bZt5n*9MWXl왥̢rvJ+`{FK8mz/ .5M_zۦ˃JYS0G5$Lx42NVQk[VE_W!v&YAF5k7K¢V5'\cUNjξHB լ ̇N-0"-+ Q߻pc۴ uAs_ۡ,ug0w/l'f:޶2oCN >v=Bj-=x&=vK5g °'-r!nfǬYGܨ'Eo)UAqUbt5@<ʍyMlX> 2ӽm)YS&ZZԕf3C1TgN;z˹mUZۣΣdvWcվ|vA/TT.!B}H%J? =N}} QS8eLKJ1^=&yuw^+Dq=Ѿ.wEUlwDo1ΡFrG'E2y% 3ԣ.n α22&亳Jn笏,]eh{ʳK5KL]dhաC* 6ɒLPJD sR%Iu7VnU+HQ!Pyg[?!P2>l7$5]Eޤ@dEp.soIn7Cx~(e~m'XHx+V4ו?y: K:77ݴ}ZB-s %J"~2i㸏M#C&uȚ>UzGz9z6YƯ?ΏNz2J, 2%PVqw\,"ł`7Eg =L31]9{[[޿6ϾԱ)̈́%\$#(e'F5fHŰP}wbd=@9 ]w=Ӄ-:~;KCaB3M+낆M9L/ 6?@TTսDj/UvcάT>{Fe?vt2hD/̃Slˊ;:p}Euf_jXT{Uw\U6ZvRINo2^&ZM:_f)Nj s wuJ^xFRMs/ v/ϩ2$)ĵvYz9Xf Qj{ث'F|SuJ)|S( J~ACNS>vItI7ux&߫RӭN m /H%3@1.=kAy؇b;wҗTq#%ɑfI |c*eEJt(pۗ)@I[!4YV5IODg똘'ɒ-x]*b9b`/k3Dٱ `5n"YnkF`[a|l#~=2L׭ru\D)M_3!e*{ `YSi^HyfORAҘ4"޵&{2\I. ئL{ǤzU>Dh?Eۥ1.p]%5}hȷ#^j7[V X>UR4TIbkгOgV1n ̂.̵aDB9lzN)4uZVAQD'2Ư8P03lZFAVNI2e9g_KxSiJP$T,ZP*)\.-RP0?m$Е=IQ7KzΚis/ob6ڀ֤ Wj[1@d 7ٻ 7|C3f|P[DsCktɢ1JnYPʫ}r¸w*M ڋ.+z̧@mV}]C>jjR'*[`!yrR=:_cUYЈ}zrư󐌻~TdSe c;V?3/gGQj?Eo)߼]Zv;(5'zտ&?I󻫢ln~3,[3qv <.ɣ'/'ˢQ9G9v}nVƬJsڧ 1 f XYƱU]i?dlݎ5 㪴E#Yk>kV+ơ(,rzb= lPF5ɕ2 .dҧa9L ZTR D) S.nk ^H4:4ARf 2>4ԟG;)kN=S71C5DZv]+3PrMU;%nhkNghsKڧ-+!Sb=hGUmt%uV>sX]wld[1.JV8v~FYAW4Hvw/9WNiw$c5XUSV ,KBZb&&7k21~o#TP)AM{tP*R*?M{nRu/gSSq 9~zڴzy Q/NDz8U Z*rH*:+c5λW-"72PTf'6-S;*Mʪ]D|%\h\Z&zG6J+ɓS~]])ʸ!5Ew d)|SDZQKFRޥ[F&x6tc:ZuVlRª5i kV(nؾ5)k{RgiSP[ #r)F3lsZ=k6Ϊ)(ͮ cRҁR ,Q[/@Bqdd@Fls Aۛta:y7EU:j$EѸ)R"ũ أ<"aFav=Z=Vjȧ6lB=")9b1 ?"MpDU|:9Rۀ T;*K~!ƑeiDKOɋ^6)/X\G-/KHWؽm ޯ>m̔7G$Qe /P6Ue`. j+:t.  %o|;hgI$VNBѳ$%-Y~w,ŲŵAT7Ed\e,VCTP.!EE6[~}*]tvVѿ!cO( moǛK'jSZU(cT m5 TusCh,~tgb0uaTՖeAUo ritٻ"U}|=DZƱ{!܇ofUfMthnsdU/3n,;ڴSbP ݧHv\' S#!*RR׵͑)7 ZzgEBxWo[5b֝rZr!Ozk1DK d+pߓq_3ϥ4Æ3ϭD! Q,D21RUl[&L\Yb8IFa^u1bg3uΊFߥpkݖ2:ҾōJэȿv:o%ht5VڷDR[W{B?x~' R/=uY 1T?4ο Ez̤RAGHRDV6uF}xrm~ *J"$c.a8y( #,g 8G P1uFYbT']J"P26x"i OͰ yD>}YIIS"^\U0>;~;Od>P!I1{Hę%c-IdTvtj_MqO;V*,֮2nثkn#E,V9a֦|ԿiQ-#a){nV0\t{@evK&y^yMYIK$߳^|ZtZKc2-{7Zde􋠔ʤƫY lD.nx hh R13CmbS'fԇ&q!xSz4MƂEBh5 DhhWUcV_lY|c.?d&CTm~ @:IVVdYG=Gq U-ϳ&Id2aT6[:LKpZMOg03,R lX_SI0΂'%YocE+gpR[|Bi{#+֔-.gLdT:E&NKZ.O-U:nBrd׎姮Zri/:`c4>J&DrT/M;zLxTjMef])enjgwibj0Guyye+* 1mzbB-+=SS5G$}\ʸߋ%L OOn_.ZJJ.3Κ4+ȲJŭnvZ$Ix\w+Khkʬ 7thyf\5M "[$yN._AYss5+]cg1nrߗv6O{PK믧F+oM[]ߪZ}sKRn43d)ŕTS|йYmK.DZ",)6ܸmTY|m{Kbj0!jJr*ɹ{@S-CW̃tĢMry6ڌ6.\ܞex'o+ٷXiGMun5X{*ʤµ6i:>JBzL%kUH0}:fo>9H6U{WOUie4Ψ7~4Fu!y5qr IJ2n6Mi*KRs]>NQ`ZV2;B-yt#*𫈢 JAo nOҝrz^+ŬLtA_VrYQCeX|Gӆ4!Ȭ8 Wꚼ,y@$/U6Yt cj.@F8@^ɄabE v|2B?q˟(w44jp0`G ɖXa>O{й"#@ԜK/Cc_qp3vNĩ(^fXMɽ/ꘓ=[=ےBddNu]ۦ>mHn;Wp}[)+Ҷ fG+Ecmr[DhỴ==UoFOZWLnKP,=a=_i%5;=,77X`wĹLVrA'K= ٣ Ӽշ(FN)[iw79(ŒM[=@2 , zд{FV|ME]| ~EgdP[&k[ֵϑYVvqRh WPo[5ǞH6SYTP_/iVb' ATtsr2__U񼭜#&)Z.Ivq0zPtWe4%[EocR\&n)rZc^f!R5{X7ތf7sEcU^K?iGzp w^w*-ϊ84hUb⡝Ơ'aQlGKY ;^w؜ؐk{,/ /z'mJ6mEW`5H|4bgv,[ZGHD[UnԖi')KB5."253mSC+ndgȍE0rI? #5q"b_T+*ݰj*C+ϳ9hGk_4Vژ&:b|?L|-kLڨ+cIx8yLÇx&8!B8~B,#c y8!#08$'Bl0~˜`fȤdd$Kp|NJrö;')P,h:s^/k 1de_5*  RuWe)3\֔UdH{mn)D"54}TݕKęPf^5rYvWuVܑQ4NFtUfjzi OЪ;f'$dK i-~e|hVYQe͍ZUaG]{\s$w:x?Qwڤ.gܼ|PA,~W%Po5i 5 F=|Eq^Ww>ֿ%7y/Ojem4¢5v& kO$:YY.ɡ/ipW )ͻqߠ.kᄻIE]caRV]vYeZ8Yrx ].K0Sd_iG1;.I؄wZt3诽J+64Vd ,Bc܎' q%HICBc\' |d#%k.r8c(&L5*%h|aO2\ITP92l:D|ʢ#KK ̿)I17HW}|੫kߋ6m2P_|<2[.:v mQX뿥MMZ7۾VsؔJ!o^YزnV+3S1Rf45WaW]rEWUFD=ǻ%3Fi! {aיCvŧ=z\T?Z׸9#=[E 6-{=:Ύ_ټYI* jd.C< 1GGUZd9Ku9|.Fw[壒57y5N;vĺi MO)/Vg-gj39GFn g|. {rP#ލLbfOեvQ/ɞ>9Qf[g=Mif9'T~z}g&B؋b_s]cSJN: ko9{UȌĤϝK=Q?5Lץpno9\"5xQ[BM>amhkڐZSy;QX%9k_mA79Zjt%Sf_VjOdRN>җ͝W gh͋<#^uGV,>sp򚫊J5&ħ,mqvGc찭JYD^3jÊ&"^mKsW\p׵J-NVv‘ֶUsU&nd]cٵij-IȤ*[ !Pa=#u˼޹%{=OP}[~uvfo E6C,HglPDži^^ K0e23c%Y!Ozz'i {$ 92Ps#*L bf z $T>̘$H R%/Ȓq2F|%SNETQ$#NíC!ZU;pj, إv׍˾z©;aИ:}ͭqQ׶EQO1 oZ&3yܵj)iJtwVԌaOtMZǗ/L֦`5): LKe˩V]㤀I7O\1#i1꼩Qm5 UF{ #ؗA'BoGUϢ{!Y^y}McK.ڰLu:iN_eiO4D{֡u`%q2O=sE;ɢ>dS,wݺOj69y6oktvsNF\heNf "hܗCg__2ʯ3 ͣ5{)ܷKĕw^r3ΡK\JbyqPk,UUqpo߫ڭ GJ\%"C2mj /s*8uБ(NFo[t0m+=y!6kQE5b)ےEZI.z-2S ӟv"߳ d w֐I]v b5CKRܽᵯ폊R6 _F`48n؎CUe]~Ls>fqFU̮ٗI0E'*2VF{TqVzZWѭҴH6Nk:Xjo%kkAl^5B>Nv麎cxnůs#WcJzw,G=6zC&[rPY+*g2)kB1nR޳jzdg&͓DS ~ v?z-CEKdHg1:W_ݫRݨyY`G/JYF[VIwˤJȢ.ByQc8ϬUC&)% @b|jkůV7v!s^ yxVv~3Šnؖ-*x_^SzdXV}ɶ1ZQ][PXί"kj2< OVKS7Ij:+3:R,Ò'0Wrڽ/aqW4e%y{V7e 2A?ki^^ثˢ!ƷN;J&i>,HBVqYuZbS'{(jqhCKKJl%Ƣ|q"`&Z/pCxrXͳ4ΡhV))"*>.!r* I.T4^I^֊i0F4cI dǛ8܌! ɧ#%B<ֆ,'vr>BGh@IHV$k衶aBqCD3:ܨd(:ұ)%!PUSݣDo;F?C-l>t[[ܫLgi)jXb73p'l6C@}T)%T\MIJuC K۱J'VPW҉3iISAmZva=5G,;$qX>cevWQUCjVUe͂TH*>ſe%tF̷))W1n=(oյ58W @Iԍ#}~ģmثVJR/".8vfaFwg:Ȇ6][).d0b!vy) umSsQI;P1}WɥIW}K׹YS۱sh'.qf`Y+3 ,/ft^QYʫtYe)XOrNѬ fy9sie$?զCh5ǵȏ]E?C_mi\َnr. +ↅ`WOz($Z?%=ST)KĿ+:Т&F"ŠV$ $ W%MV)NR4S>dO0lj6͇ 1,Aġs$rΟ?L#Ss$}2As#$O!B2qnD}D($ؖ1Ll&8\@r$>cHyF,S bc$+-L*\O!/%Uȹ&5MZ)̂xnMP#ޅ&(#ƒLR#{g8t"3mrT+02ƫٜ33& Ve3pWG%국k66= >ڒ.MZΌ\a~k$3P'YX +)pd[)IjKǸp*ftY-eզ9j{0ѓPM"L!0CRj$︯>L\օCL&"yij籪6_[.׾VVhBˊbXKWuvRCj~tbP b\WwˋY*Km9prWkysUio5}4r.qd v[n.'6zl茢2-J !)AczA#uyD ȁYpn'@B@[DS?QLc=#s G#C$d_2Xo)3CC ! 8KN"!8y,řbY@)?␮:"1a}4$-,Baƛ%)#-ɅK5w;za/zdz {m0M)B=UDd .Ӱɥh~R: G9 r@LodBFMǠj3-e~{:0I:@]ofw3|H*}$;  Uv`>SSw֭vt4)}{UhEX;Z޿ *GۅeeޘɺwGf }蚈ձMRzV,oOM<)+y&]YYgsWuYzPd4@'iEyR85ٗK|L+ƅ'v/Du~Ds؞,.̪6X`]yBI7YT=I7tEi٬G1fTx$%@u)}>Y;>3A49BGPr:,L2eY4Fz#ḙ_tU'I8O-A@2$cPaZM#"%ǚP")f!i QfY>ۆ?DRE%B5f3w## WW 1"!Pv#H6v[kKrQ>O>;ħA dXWub׷v,l#%m(W_Z&'g" }[$0mJ:0W4 n0;$B"ȶ)wEgk~ NgiMs]`hZ=+4"/ʲ=ƅ]tjc|KΩq}scbs"\DZzAk:j B9$دVS7[TT~'h8D`ɡ%MOٔ DΒ#4Q!H5}}P[$"*]tqPTIPأ%yGϖe/*Ez# 4ӾU\&Yn$Lvޗ֡ j=yrWϊ{.jM3tխVW^WŨyV//-_"EhUgKUY\ 7ɣ9(4kΑ 'nֵq9sH> ;[E&铞.+ӝ=¥e^I|/T+谈 ?; ?5xT*U[ u|* {X[F{o VYԇ6~*j}[RO2NgEN .ڹ c¢;|}Jgpb҉!jlݍN۷.-Ά"fэcI]Ǎmn$u%WɨK~5W43<$¡' )ɤtݵ>_T7fdͤh[*]i[yG]7r'st|R/O^Uw7[/N MMUIv\Q޾3VeItaHϙ hz\^mcN:>P$lI}5tuNimSi2 rB&j?TM|n$z㳭JoVG̨H/ϙ*iNzYYk3#b)Ӫ|ieOdz_YqkNOW-30vyrjkĺR6SG1+{#82J"R܄KFRݴEJkÄ*RGjV'-IX#\ ״:$@ r_2.': &1FS5;T,TQ=`#$+ CYޘ"22AB8qXK* 1#2W $C>v$m>ȶ6WE$EDa @3?*;-%gTqJ4SP(*!Wk=\d/ו`KޑXrZDՊaZU?+Ee_"8$Dt.We=DQf$,nÝ7SMI4M:QvMaҵqR=i9vW4CYTĩ C[aozYSUN1}ج´y\]dH̲zz*KD#Kt[uqsgyG]1I%ٙ[WOPTqkLi]N`lB{n+{?w?f]xNv}kh"We>XGqPq$.wdBFqFs#2H2@JǛ;b u&޻.Mń`)L6uL!_ZU"ĢWU[m0>~)R}})5)q^ؾ+4=4|(긻æ VѪYv32:Y7WH)3= s8O^և+,z̃ذ:CNĮZ={I5юHT=gOk|+V#ekgM,8O{$Cڻ*T,w],y*f&K ]t5ɒfsHU&]]rf ǺL[wM>whV*9G%f$Y\Ujj %$y78Q8O`FM0͈(9 rH'ɖ P'Pg2lArfwlR$m A#c "J:'uB;eWiS[Bn%.4,yv+wIZmvg\̚jǬw|v!²Sf!Acf\BȢ<][q񬶌Խw?"8v%)ή-YD X.za`9l')/SQf\jˆ:KTF.՗1mpRr|)ܴ*B*.:DU]F#9VP Ԧhe5lM# 'kc'ܲZ ZЌzRt1wlUy%*ZMZQ]N2DjAk1n! ͍N[u!vl-H%[6ӸhDT_:RI\rBo;X;4f[,!Xh8n]1Q4qtbU7l}0+B fMuz:lEN {Qҏj_+llq9{NrSFqNٺ7z^[晟l*p^vy`_9ooI[B:;aͩ4a4;H1Ḩtܵu/)CrQwe&UOG0(ǩ5xj+ +|a3* iaT6]YUu4͒(}pyXX1DVy("$;!wק# RB*h~ܙb5*nLsH I$8AbO)sSꨠ"pXPibAKTGhƑ!Ѵ"E].-rtTU/L@KU9kƖ.ic6Nj$Ҟ-tzY1z| ڞv͏PMSEZ+#ZTGQyl%}n꽷j\#,ps*. :<-˵]R{^stMX+bV ܴ [ڵzaks_z~j 9,)TX6ILQ0VǑs;o$И0^g\K( eu%ɗ `Ζ &*Zwc 48 +4˾QiR !7}9SА= ;-$­nRVPu}fZ.YtaW]Ui0J؁ӵ?Y0 <>#'ŸVM0뢎GZ7 rYKFWXkPhM4C3~NF?iWLl})F ӭsЎ#x`!t'{fn xG։)tvxwmEըS(t{ƫCWvwGVԅ?JTEz3nY "= a^Vv>z+Žq"nf۵,yIްzaF?*ܵWD悕.kV5r3ۆמ4wgF)RL(sF!xJ}=v[1ZdooWdյK| eF-鯹Z7xzHY$Y&nU!Yv))cޮNIhR3`cP3@H'}C@X aH&q!,yTy52̘p((W~<_I $DGM-ɚ .KV4H6NJI0h,XRV_x2H,^ӧ`<]#B3hzfx2 |A'(Tc0u$rҲ#2?ST'A B2y ?ƹfe$ ʃ̬$ ӊ:^]o)O&bM 2iu+m†1ob>N'n+iY] JЦWaA!ZIxu=TSU֥ul$eY֎}kYuy|BJ!Y{/KNvy1*w=heTS#\LQMS'(̲F]Sؗ0LJUMk;e3ATRow_2)K2v4-ry |Ģ7}C~ʷ߰ n\B2*0Vj1jXݖ5BG^Q):ӆA X-ebJ3>Jܤ+ladX\ۖݹI3:ę+K۴s]zVĽ5̶rm|Ps@|GȹSՌ}OJkH2l\Wiu[Ucv*)z<[x *=m[[R!}~Eo^C(TnRv%nd21*YHzP XQ=}yֽ\Qܳh',IQiN%ʤ3qW M9-/7ZOV/:|Tغ j)F}0E?A*gqVK̵ q&* _JgkRtztWUESlQanu۹4R@Ͳ $!#?6$fH1,J$ 2#Ti}Ľ%eR$aJNdt-GEyđ@)iFȩ3KUJKH@?)TuM>Ld3Kߓ%IznEcͲ(M6߆^(ndWl˂ۮ,qSk Ig %TZ>+^L5&*2zʌ]/}Od\JpDn MQ S#tO7!ƹj8$ku|dʣF;>-Tg0K&Xv]s +~a\,Mtpc[,FsУ{tmSMie߀;Ok@_Jˁ췤[lMOm= E5Ҷe{C6JI}+"6 I%-lݻh08-{QVMJέEff]"- IZva\cf̲SqOUa8d1m(^=eUOg| XqAlhR-z!2*p(af_סV1h>[fY*N^Ve3VjXUMh) ,N(wbDѶQA5IE!>i+nsIB3[Bgq? R/F ?c.cLN~lԆ?KP*LLZs[U d,M$coɌ! e뜁;]y0<8b hNl,Icɤ!#+OH x/xIc, ~Y'H$E{IZԥk&d[mgĨ1~ S&L#c4.%/kۤJnVێ6KL$ҵzEV_,Ľ[TkҤ68V6\.F!RŽJ־Ԋ{0 ?HVa!!>m}.ADs.OZ a GJ[FDwn!|_6luC E}*Y*L[d2ʒ>ԙmгL_aK~l $j;}J-EJsW%I4rT;bZ->udSΠvn38;r 3~IS1JM ^Hv}--ھ^F%~,+!XV[YFjc.&LX+hHUacnŢq!i1\$:n􈅃8l`W9ύz^OiJaQsc~&Is^ZҤLbVC'mV݄X?IK+M'~^ 6 RhA)(vvh9T/[^=*?-O8;Jٜ9:S,r1TRUj2sC|J\=ѮWkLIriWw[^kV([ޕS_;\u h^u]% fE7\8+%^M'ohTx>w e3~M.J2ѷ#V*g-JEhvbнHխ'mYWXQIx+P[?sigy^RE"K\I; JS"e'yoR,@& C5"0u(VUGTC%CԘPNv9ph2tPȶÌJ2/c|-"pYFbWMXt>pe.)׬ÇuxâkvNkT;*ycUOq`Jʦ5j+^aU[֠;kT:M$9}.?NZZ4Net3)L4飊5/Uti:IWX&dev.k0QX,@}qj({a?ot%~VUhwS-:J5~oYShw} gQaͫ,37iRJD_f%s)"~iHGIjpɬ)SRUWE{kqlyeai}P).LS!jgL#Wn@]W~$AK՛XK:7kR:]jF9ȕGxw*\^IeNRNޠ\"~ŭ|qj\ _ UYСF)wMr^ufWm'*sU魪$Kc5co}o{l0b@>,h,peuadln<<* \BvJ͑SߣH<_ettR Qޭ__[imh'ŷ߽yX_#4ٵO7ns52g r*/kT`Va5J&|+ ҏo1-:]kUwJǁ§o 杻a :6ޚREt[Q!*:4LȲH>rʬҎ\_~N1-o{Iw.krٵ|ץ~jh/̥SݴGқD3nWFXaњrVz/LbeS{q +r]Ʊ25+^-ά}7aŦUeb؞FFԺ ֣?QoW6GW#l7~\#8)v&ʒVѱV}7 nw.& 2)E/b[;99(uwP_fMy1~OՂZ|"2mjY[ul?@LUY{߱X*-enǬ+n޺_-Z޳\Us(_MmS "ʬIwzX=lL^ ,#c:qQI^'hQ۝ۖ@?[r8SCoZEJZmwvo+HET(T_Z!m)V Zhd;o|+[Km Kdao5i9QDu߻ok(ݹSƢ.b0{]qW*"3 dK,euq]1jri Ƀ\K/=JUW2>-{'WZ{{Sch+ 6-Hb4Kߦ̕BAUCף#:I눸2!@^_AN\]VډT&sm+,Յ6o J/z BM3 Ib&z|)l_1QO(Qt QЮ~Ȫ=zjjuZ"3:nQe|βbz\Y5dԫO\ڟ@%8h<_4Խ*iΖ"/4ꦊ;aU'uw+5;ʊǹ Cel]B&}2mƀw4ЎYm6U]q^T}(9 r̳T -47 jR_C5uGfګ-7K(kߗTEX֦-&IA",I#3_-275yS YJ(S/*|& T,R3QΊ򯬈6m @9n=GdM؏q]Cj8Tiΰ.S#&]D]-I[ǻm4W}rI}mp'침M$RRy[&E^L(\/+@vUd#̐)K6ofUՙAڗW)u1-fQ0JnE󢭺'zp^X~o[H.*3:A' Wo]WR4kp$FnbDKrֺ^3z褯.0so^HZ:=)ـ^ԛ3 \ͰdTAVwI"ٺt\м*.3]NT\v=G2KЈw7i۔<3MkE?sV4_桯/:]y {l2iJ$4!V]X7tnҶJUg!ޅMIP5)ڜt;6迴tN*tv~kD`KP6j;$ J)Ɋkn;֭+ 7fa19gu9dQԵtgYeAɮj[PGQؿ{=܀%Id.Vcoݿ֖3~m<[^)#Tded}J퓑G5kТ)n\W4e![ld}H?B0ea3 @NLK窎gz6'{Ijk搧vRKVwqO)<.yOq5ZSQn넏X2U oVJj," e[+n&[w#q9N~݂G_׸l`ytu`dwե B֭oHWUF6#A{ŭ;{uL`mB'Y…;>dRGEm钞ET)SH$W*:Ѭ.>hPjlT1_LT9~鷳)|{Ir$eϋ Z*=-ei| z]A5b4*MwmJ⼵$;O5gfaSOZ\;ֹ$i!TO 1yNF&=桦UEY|+Lru> )@ʵDQ(+* P*WtJ8/E-",Z$bs;f: )-=K=AF.r?Rr㠻*+Pn23۪".JV'%,\i#fTSg?dsa֊u9F-;yWUʯ ?DQZlVhs)dاu-vdu%+czV-[DcT7Fkڣ~BI`FqSQDzN6M[.z59(ޖV-ajPاn۬ͧ4lB%;Qedݍ'39g@}ĩ;lXZo!\Ob&N;yn$k7)>/x>J%UrIFfĭ:&m`ЪU]R~r5/uwd%_o)$Ij]tTrJ[;. 1PYWFMW܈eY$eެF3)S~E[$2>7B@hq^Df;p"g"c9l2ʰȪXU c`c% 4sS86qǨKZ*/@QT+h6vנ[fD a^b8j6Ǹ h9"+݊98I9^k p)EًN[&؟T/2GƉ\Qx˹y[΄M5s5-$*7F$H1LVŭjչSJ>W܎~ C"1 ?ש[VK0+2ߏgah&'eLe4$u[&J%M#|ۆ#Ȅ*?'\Z_/$Sѹ#(̓f]ye| ,V aO]줮Qb-J)mҾ3jG51{+ǫSvV?h{f#Ža6ygqDae|3޴`+8쫤[Ɓ(bQz/h^@JTs+ Roub^e*z=F̦R|= A3W Yr2k^ЂX~LX6Y3'%b]`J,.B% ¼ɛNt5KQ%iEI"R G]%}r$h'qC(VƅC;.1X['ZVTznD$-z|?撵k*H]*r#<Mժ*ꑼjp7Vn i(4"שZ2]2 ?TcW &춷fѳsaK[-*F~oE݄µK,6<[;OQS,)bYM=ڔRgPbVʽm4ndUo} (;&ض1oW!F\G$~$ۇbX/ȿCJ߮gM=f˘ _̅wŪ5;~cd f1VUtcV4|a=zxEBF@d(_ry$0;̓d*|̂RUÒ5֥^<%˛Z9jSw>`ɶlBW݆"Lz)sU,) 7)cXZZbeIMGߍuTQfV5jRLAJuDXuVnzx|xT gVYsifyۿ &SZ3+SVdi6Dܧ=VW]_OZWeKkhR8MۼH00P%E~ɢ~Ы3`]fS!m~7gt4wwմW4sQcQRUq'aE]fp]5EvL~$⪙(&.2r%!S\Ct:Nq;k{ k|n 5!ׇIIU+^4_`ͽ)ݰѬ c)4*N~ߺ_C7tQ.hᐯ f NFܽ\1swrr}̤F-,'ń;D'G=Ske9f Idv[K%>wih,2ˈ^EmܽOe;h*o媢oO'm\ m7HwyPhQWyj"S-떗>[m_r6"y!SgV!xS˕JwIkjB8*%BltQWִHlDžeE}N"g5Th2fѰOC{!҈ֲ<ɳ RI&%kA II߲?>q#RU1nKD^ৡ\z%QmS|ۇjz2b-y ^zR?<}4J)Jik05i^u;RV퐚h$RQI6Y1s?ނ:jSuGUL;o;6\S˜vE;mc 4o̭脱Pf@@zX箨+C:+0WYZR*RW= cT꼠<+rZ=$tSצ@)[ab &yr\)kU!eycӄICx6J*Tm̓)xzD͹{IBy֖9 CȚ;l\DdUsnY)jSL(MUjv7tbλ洿D쵬ķUur>9П!wvJF~L)2Kg~vbjͶr\Ҿ'˚MʌOZWB1( кrs6:Lqc1rJW,y`t거tPL^uz;/F]ߕ tK2UݲxsLR;,^e_ʫS^JVE'84ԋޠwRD#qG_Lu2_7ko?;#jەoVTUxe\S2HUA(gCԪ>ݢjEsl)o-+.кי 䮨uMNT=pn)xCܗ Eqv! Yv!XgENWBGcsTCٔQ+W__^Y P砿v&| %ޒ9|E*r۷ukd_ԶқAau:,JIE5th\3А|ܖ5T[Wқte؇Rijֲ Ys;I2\{^ZU"ѫ.6U9Tz%OypXe<^A=fP:]faLZfCjeQյYǥ&`X菹HJҵjc@dpjuo0."7zdD Uo꣐!'o3i-d]XEEZG] õc`E%EbP[6lSB6k?ESj(| $Ds;\6Q@`V˻21oFAE{ET21㤊_9̅HJۅƪͪnT6{ϯ²Kxj_I>\I9DSDiSWЯ_Qu-H7}YWRV :Vh:n$Xj+nVYec-OK':Ԅ}NYT+#pW[L4bQc\l}oYׂLN<8'jjf%jR]AE(h%"}^HMk) xMwҊzsi.N3uޤ{Wd_m2{C(f?(SrQDknVsVg>ƕǫS4MCzKfE kYꃎڡ-X"质lBnbkե9Z'fI@󜪤3j=nNͣx3jBQ*LLCUMZYz%SwtXܣlܟ8 ۣaZ=yiEXOsMft_ V 0zu6ⲉ+R6)諍Ü}J$Ay#(ɒ{RXYw}uד+,#1Jîv1XS!a{_==b$)qrgZأ(6K)O_GKz +jZv5.W^,7|l֋N {Oٜ~nAw7; ˲Y*,H)/PóRz\&c\?waE^wU1֙Vm;yEZyf~2KƢs\Z9 [zy_J]̜OMV'O qS֧͡ZWEe:*wI1id:4rM5FD**!5]GQ'n7nR2>FFM^w?[D/SپZ/+vfuUAWն5O;U]ilW iPB:(/;e-H9d3bjQ0znY\tC7 5<-TR.* "M=L%xTA7Ȧ?We^DϙRoJT-fZMu$BvDŽi?] 27ٮ=J.-X~T牁q;मے޹߫ز?G?lu)0!;rfSvܳ4 _J'Ge1+bQ.!+!\J8 %oOe"6r!OyAVjEjRmAțb9j|7-.F*]&**v]c3Lfkk,nufcq^4e9̲7q^bY4jh7ƦNr86HtPd\W^Z(t; ;j*L'Ɓt/+=ٻd5I'H)Uz0sՄ"oQD쯛 zApk|6c֥~I^{.ʆ5֤'q-5o5i?&7)05L/+d_iőH*,YCʃ7SD_fɶmۚ՝iO\G_^.j|G>5t^N9ϙ ;J&&N T<.3k7h+!gy4E>FE6z]t^7EvJJT2͂Ţ>E1Gw8a/·h"!<{}K+&h\Bs ,/rR 2>([PR暐0dfŴwE>oS“5fV766R_Y;re+ǩyV "W(tmV!sdn=TfLEͯɵ*VmtP>Ejx%MVwmKya2ܒ z\W5a:i/ i{nOUw[;̂vTg.[޳29p?>sZdU i 9,i3y=>jצ cc#H4LPi(!R_QVL&OWnrUEusǿ'J콩s;rv]Edlvj'kfel[/+uxMiBT&[5Ed߮%x.*7E?y1HJZ豭Oߠ}dɹ kD;aH>av&i屖fȇמVȓ I_tt]Qfl,*ټ_+.Ti{ġkol5eA4w@&<:3}qmtHȱjS:+>0{ZK[f誋J~CJ "'Q͊Qt\^=Se.\v8we%a3LȶFڼ1-xyZX‘;d[-PR%-8a9#*#2¼HU+]$'M|QX{Ȃ̊=KR~eᯫ4-$wץ"o}}tG-)9nc%QiI@>U?0ԣNYg8W=\RȦ˒wˡ\K2q?zd[>f{}*v5 ?Mm5]Nbz/K뺭 m'E82=!/}Iձ)=jHT8+u92."z3L_q=I 8;qY&ʏ<ͣh`UsXRvUTN2!ީ"ee $CZlIاK{z9| xC?C.D`h{Bzȿݪf JY{UFL9=BV+mʀimaNm0b^Q&KR%9ʐc!f^U.jNj +TXY4~ &.:s>?boҏ3eUWZ6dV*K¯ 3kVFAM$c,us%h+^S":PJ03jC͓[4E@+K vo]W(kYYfKYPPWKTjPniS.9iϭ&1m:cMɫS>V?lZr7]G1eLP\7Fivlr9l&nMVpE 5:o3&inЭG%kE7zzb5&$RzpVdR\=c|t^ i*V|~P%慊YX&GMk&{: S&iոh"5SD%1~l򒵧Hy!,pў4ľ4X!p jӵou+Ч!K8A\,u8 ʧbԝM=-p5ϓi]&-sꂐ?M]^+y/U84:4SU:;3 ( T\'Կn7Ebzv_oӀH-I:¯=wR!Ugէ)0Pm2#̹UYYCb%+@㫬;42P{Km[\/ԫ+*C?t$7pO3/JZ]ihƽ;,x2}G__*, ]K,ls1ٴh4OCGj8ž+B 2/M ~{jA]Zj#U q^n#jҺcOٲS420oţB!f5]yUd5S*Jk<kc&%B=qB:vSq.gԋ\1N:oeSS)(ۚ.3f@y5NȬ.=B(G+"4s{yqa̋;Zzw_F?sއ1TOו1juKQ:]W;L:aix*@?FLUpk&tZSek$Rs^+g "T9˫fKmp!_$z{;Eu[$QKs˕ ) \[sٞ[!XlE)hҶc/Og.Vm4SlZ5}Ws\z&v`YˆߡZ ".a10os_}ڬ8԰Xђ!{W8N =hvn&RϤԊXݖ;Dh[\}h4yDB=I⹲]-($㪭B::cสͽj&y&CͶ<)onUe!J_ZM`'!Xi⿷++>.P;g,݆KG\TsNщ~KچY̷UU܎{j*LJ_,yJdXLwWɋ>hɶMg9ﻊ:㹫%ۢY\`zͣ K;ciXeȠD: еW=(I&IY+lH:N47ۺ J5sluU>Z+1n-,YWu-8DhKY9 B*!]',XE{VҸNk$d^ܧmf,|%'4d~w=kl/ϺAguP>'#yLRC0ftץι;R=}J3wb\YQ{/I oT+AjF1c}qjnkB_l/5wjQ"lM}P]f)lehW='wZcbo%>E/llX6BYh3zvևȆCps8>*mՉwTi̿&֬m{61-r$3R,cvIO)9h:H꠽n(̛dѸd#bg`BRdeAXCTnJچ '1u=Mkygi;Bl*EHVZƍUH9 FJ>rVI\*Il>F ?vOYu$Q@6;a%VrVVNOQ;(>adKܩ 'ĩNR ЪE3paxKIg}D!-f.:%Oͻn+ɻb޶i/lk]ŝ"1Kz5dU&`Z6e`Qk/,<{xκmMLJʽSP*B=W{6$-BgtRh./Kvi2Gd'=:v6:$[&RDSn zô2`;hGtI4rTeQCBN(Faq~21C$** 3$l;0-oGl$:`l0zMRXW-cgxEUvW՝!f I>b* 3F/i2Z6!v〞MhgiJpJa$߭Dk!,x֕=i[_9V ̩bzL;xL^di¬.΄YPV:ixU^t@5IE\~ OYnw= lv>Q(.e[ǿEwΗUf?-Qq[Ux4tOڔ5}NJwq\W@"jԤAĠ,.)jX{?YۺNP spwqr|ġ- B*ev\]6mG{i$#JΧ뜩?7XfD]~xUV;Nu\4QTF`OiN$Az㤢aZ}yVsGZ+60\T~Ա]Uo˓(ޭfݓbCib.>|c 9 3BӽX?vWPYWרH/7p2F9r?_h:4b/46M<0{τPzׅ|TӇmdu ʠf^4k3Y`.&&VnxPU16I!ǥ JFuU'޺kIzdLE%3n2HVޯK}c`,[2PtS< ^^ާ Yt6NJ\8Rs6гj3Z׹ r$A+V4u=mVs$f^r^=ppQsҩbX޻)Gl{[fF*f9]qVW&bY$uGI׾cTyro+V>L`Ol.kexwI5O&x%C /!N/k8zaZV ө d.gx +L,{ 仉{+9CXA\F:`eEDt'QzDC7m\o^ܖ܌DՖ⤰$h{R"JJ)&-/~MWՠ#+-MuUeDrt[6mEyZeB_vzWv>q5RWz²ڊӹ␿XTK0J3Vw_\!&QEVad}Ygtv.O/1xח!DfcFW[B97tM <],E;xa[W; xä /fVm\zWOR˭N7 ,/jtϾe%PRu[/bw3L[=q} 65u `T&;Kh4)w!&VYG?9k7ʛh)6bE{k8L̟ͫХN'ϑ'Ht͎HE)75 c⢗?*“D_xۇa^:N昧x/z]WHFk[}QuIx.7Edcݚu niXVȾ /!srvQms ^c]fռf]{uƪ&Nqܕ֭et5@D(E(F㠖Z)KSN$v^Z%)Y%-PUy+ɩ닦LqmK nL*mj`T!cWm ڄcADtZսy=K`wU2URWQtnش3eYld%/hV'|ͣ)J#) R4.vaGe̺|x-&fBaXȿ_N`zdҶtusWNd8tk潦,.jڶ4Q+ҩG}K$)SU6AYwrDLzڪ1an|.#ee͸ 3Z% ̲ 1'_P%5z ?fj꣫Y/SphEŻibW-hWjҼ[%_PFyU:iZ3nu#BAKC ,2|o+ 硓x*/e꣊Y$!EVjŹJ=lf55/m$! FAvD+I9ѣ'EP"8V-ev V&Lΰh9d=$Y~G[oU9| Cy3|Ȑwt!}9AyPZҬMYxT*1Ok\EϢFsmm>J+u/KC32Qݴ]KYZ{R-ZcxZB*,bvmZ$V^\>T"ǝWQp+_7ieE}C:ZƵM6G7jk0"/Z,Xt4pEƏf8v轪_]g`UqxG}#Sԉ=+V5ZjARY3MT!zxRYvm;*ReR5n mm\g&-]P܄KeZmS$}ٷUeݽ6~!U6͸PLqʤ\NlH.Pn3|Uaf2.$qsߣX1^>˾4:J(ɓ&źI%1M`= F⾴)[#- _bP6Օ#$lyOHQH}޺Rd_%& ^ǵ4o$rpN[U/kE2_u.#]e汍o BTݦRϓTWT$mKڶE3v7ǵ!Qhg޾}*/J6!\2:bR[J1?zu)"--!kԷTZQix{Smn/ ImSJir:*hDaKALu|F$;jEQmYBW/dX:K<)%VL15SPoo[;ꢍiiו=w%םٷ #WnSTEc9KD^gv XvZu!vvmVsHE"x`T^꯿wmx* %EN]6 q3+ "ޯ  vIKdpcR3* ͺF2 UZ6p3l5xD2З"w~vQVL|d4 uH5ޯ"aͽUD,ݡM`&{#2iqT/A4RXguhUUam"ݔwmư u$Kl(5*Di?eI%vz eDj(_|(EKS 4:Ha#*4jyyw1L\v˘[pVCET%}owBݠ|Rȴ$W&sfHUB*?9Jʲ2MkYRAON9yf޽J,9iК]&ֵl϶TMA5n]fRY9Lj7)[EY% yuw39F'ʁ=#A[PCqZpy@^nt;brҩ_jݦ%,;ΒH^؃񪲫dd;qڭOq5?yW!B{V9\]E9LREC>ujO}0HA9n*A\9Ct+#)gSZƨʻX2O Eݳ,j2(oi5-N.[d^z4'%}o!;ھ~r#8ŨxeD1./υO&SX&fi¿%9dDi*ݬ{w&X,K.h ſgm@Nۜ=8X|,(Ei Q[frZ[ąxkTw4J8-AE#|>:#'oяQ_%ڶ7ߙD'~ƪGPǑ̢nsAlw-B澆c:QcN1zƇ3RȺ9U;G)b|&.y%J; -ǧ.}NA;+7V[i.uib:򈭼]{^.KT2 ͗OabʃP,jtk~o B|:j{Q&k"-cÃ+ʖ[ljw$,Ok a·R/)m[uVm~yɭ2qaU?NS^:X̳r飐.VT<æMr}FNkBեwDg#Ce>dIARMTN;iJ&,/xSSm$_B<{^EQn̻`1 E-Wb){ZTsςYi0m㺖"!YS-F tWGH5+:ZE=~ώ.|fOZHhWYbĥCS&ܾ7,vB%%N3hڶye+4n{@0N`* *]R +M)ɗMYiV J*lUVDwM)@=nw+\cgߢyQ;RAHTűO{+*$"^7rW,קH&癄ۚhc,[ 7{ä w'M1|RޝۑF7Nj.ݣ=Ъ3,v4&źGQ?Y.V\ -Zif* \.E#UE6ݚ^\AJۇ[_Z#?t6UYۧ|qy$GaV SM"Ѣe1ngA^XOm`ު(I*+-s*utQZYeS4jy?d֎wUz M&)DȹoRgNǸW 6-d0r>ݸNZI98n2Q^5UROKc.3yYu:N6]2+Ym<4zU=hDOKEIW^D:D(Y(u Uds0oݷ}cLSw]U f >v&ί/HQ\ԍmkIF^Ǿ[w+WDIEؙ[ KzjZ"ʶh_i(;*{%]­uɺ D"V %cqު,l4=#I;mR=gzۋ%?~:!]Yz4g%ht*] &&=tdV!Mk", <%HTyzūȮb!z z1hWA&;NLsb*, Lgjn||m`*.󸶼iT~Iw\9~=1JF5~Z"!8M(:'7xW5kE!gfIL{ݖ5G'㒐Ks׿fچlw1q=ð*LpjÌ9̂[]JYidYݮa8s^r~hoq] !#I2{m˜\kkqyO~A eY[ף]?rk =P$DRn[-| =G xUwЊ_ȼύί*%^[J6DMڅvΗJ摯!``빫m$;m8'*fQY =ɩ_k[mmOdU4Tq^܎m D65DlHJV/̱l4'܉ceq`%|UQK _SXSF|ơ#VU?wi&b.z=)hc"v,^p+?r([FMKrG= ]U{BDigWq1(JleQUkTya#J*B+M牍\ԔmS_E`^:~/zt"4qPblbM%sF˳7!KG״n#65(ENb59t({Veoh{6h4Hjr7?R8jA{pn)Ʒɢd0,[v:ko'H6ut|C;Q  JY9iq$XXDV(J׺KlxLMqiP% 0DmD)T_PI!zLIi,LFK["SșC]YY73x6ʌ J枧N"<瓄FM_ھB2-H]{3jjg7B̍T9 # ,<#_\4A>gZph=Y;iPjŭ]3s) (xc8^A'wB*:iJה%IU`[F-a'C\31us߲rݤmpɶWB{S{^8_O{v'{]EyO9qpeM˔IS%w{z;oDqa?(?=-'I JV$#O5ŷ PmY*ToMO`S)(;)B1òrT}7E͓o[&g&qPGER`VyKޙ0n4Kzơg]tSwUixǁL77QdD5uFy;rQ[?ŵ|PE{, !ٗm<׫2YZe_s2,+g_up˜J#+l0lteaIUb$bUMV㵩RVNJ+9Tӹ *W,j櫫xq.V\m1`f_>vHVG#:&Jhck!s(q;//*%T6SγF>a:'KX(u}UadէCsO{'MxaicT$%*!JMSf.) E$0%D T d!&1u&+=+KGMtսMнgEgk\Ue=eGϽڦPjgSEyr y2k@|%^F+P֦=~y_5Kr&;,k/?W7=jVʰڵFd󰷹uOm뽦-h?TZ'8VKN^* ]؆GH8NX Gڦ/[]!X᪚Ke}Lf}dR?]uo.F{=KѲ'Jݱ2mS%;H9 CK vd_r4l0jӾßtXF6R۪L4Evl:$*),URǑ.{w)Z!M[s{09k.Zs^ԝ(DɎ{\*"j/"lK"JjEskϑ)C";Hi+6C6)*uhJr|<*Qu_R@ u * f2)Jbw]_mB+wlsXmbfNݭoI8$ӥRjJ +}gCU[Gꜵ;xS8VjWZT"R5 3Se3lX-Ƣ+wDRWI"FnI=WC>v XO^OГ{# 06Ѥxdc͉]K$!B&#P=QHOjSw7CA̤j2Щkx۶3rZm9ytԵFJ=Mb|υ`Z$p^ة,?$6/X;U<1Jv1{uˊpYE%DՕ4c"n)&'cSt:$A'{d=1@1.m46@%%Gi(D0c7S=&{tէA*JjM+ ?}j颐{"^¼m<]1)d+6dk^tr7HAy'Uk?½k{ZԹoFi+DfHw2ʠuejb5FA:;fl^GWLeWfP#7%K,# WXj ˓2NΩ>Y-:5\d^P⽭D6+/^`.KQ{,CPZ4LL̤~A.u1\VE󼨯mpoSn A[1!t#JP˜yRaOL*&}ݧf2O[WIM-)dz\Ѱ`iI٩"ٸJ?ubrRF2RB{\Vr'϶;j5k}@וRa#,&khV ^mW3W3裞ڼ+Jx+ ײ={oYk8OLyY}ԓ35>zCh,9|Q"{==q6=A/jYQ\ùG}5^t2M%|jVs=Wb[hƧY]4@rEK48*G\D|Os|DbE p*L5` W /1fR5oˊ/jf%c6wy&e-mzWMn,b.{Jո;s&*Z.-B(+n:!`Ug԰WE:X$n:0Z(2l l&J;`jN8>Jj,&)Dq `yTh0n4"P=**c+#tZtA9 gNr 8 pa@B8# BfO˟9}#d"@ :&HHHȋC"m"2 H<Ǚҡ!POM)4!6KdJ-,} z(!r*E*|Xvi4;UhAin7hīMF.-t\wj5'YjQ, IA>˨o}Lk\'J$`&{0CX2o$3CDS1Bb[6 Je?S^>g?I[M${9KϘri6i,{f[djUTGh_2xap7R`RnIBFR*u QEQw>~]nr-dz9O [7 NK0[TŹRaWvf©MF+]wA|~n V!fh2\96 ]R³0 81zp~OƝXU yzrHD#~J(ZT`9ʪf)M //ef޲R8/+۵ioM_fYnֲU5g(o$J=6{@RgtlzչcM'}0i+ ҬOC?Qn%C4B[. Ad_efqޕa|a}75i$L5;Uv$x;y[Gb\,2Uv)ǯԮl∹껖k #kΊpW[&ӻX7pY4Wo!A]ϥLEnZIfir' K/ zR 36llw:F /d~m]JZ"Nㅁi/RڕVY_YI-_UT6og]/:Mp˥ )3%< U.tJMzEvdm͹ŵWW3ܴ]RRiMX-rs::LfűbۄrҦ̴ MRZ]g &9:i8{˽]*{+~{\|YdK=Hv392|s҉7gaJvHdvM8J2]Va2j˝uxҍjc)[+VG7bhDH_5*dJlz&Tt9[T2 oJxye$)VBTo[U>ە?җ퀝--$)jO26dӧ)|~n$r^W!ZZn[ڊlާOJ jK2=mخʸyh)ʓ5NZϯ4\nÄ Mffm _ "ԟO>6f08WeUIX%[EtՄn%uUkOב^tgѵ+zڨ[0$ CRRGe;q'xGu.ًi! 5C ^* #8Xa>yFp&G0 O"/K$:#6@ر9u=Q9J2ѥK 4smjWbԄbiZ>?VAFum7cnUT_}Ǽ:"kjm Xz$:9@W_6t\9s~ޭWi}#17-kYv  Oڔ`WEhDM/6]9^!RQ R+ c_d6O4kdZfhiUUaXoW')̶Ɨ荭B32ʎkecX\AGW}SܤWyO_fM뎴0(cW^bf6#K+˺e@Q6-cg&=i6yT{yXX>U5oĕXݒ&nc>xB0.# o:^ӱgaNN&-+t9ss riLkdJ`?iT:Wdp-;h٧*.uxlThZ{8ɦ]7ܦoIp4bL\K6,Ns&nzb+퍪BHwR8ƪ4Y :H2/ZCl_g=A@ei)aMujӎQeޗ l6,+[G}E.-:713HI:)/jhƣX5$y RtH18=`'0}.}p$5>q~PFP,Ta$k*t Rd+jפnU+JK?؝2NZvC''[KRevPk-Yզ/pRħ-jֲ]z=|lr֒+O# ;=yV%">ќ[`;"YO]We$VշZTDJYޏڪ+qRO'Ax/y 4e$U=vRg.?V^]tݴUj虢 Sz{WU/?Jp.5D-HpfX=3sV5m/" >qZ{$aIs+<4MJM΋p? M W/pl;LK493ejKWI &tXYͫ:=5r>n=";jRƁ4LQjs\pS+Mq%WhH:޷&2,DWڱjs|)k%e-di*91Y?-Ai["mTTt7EysV2}Ø^Oygl֋zpT3I؜F^9.Zs럕`<.IbSֺlU/_ꊁmo\x+JfXTl\)ͩ+^ C4+:/bxҩ9/`(Nl.+m(Ze}:C!KJY[ld+XU$-|̋ FI2Hvd1fKR"#ɶkCtD$;FɈlX$#".@nl~d*T#Sc%a A /{䄣R% !|44,#  rF L h !uHcGџ8?z58 eO~LHze>`iAAJvD?NB&Z'4 j+tXg ݥvQ^g}TF)|V>ɤ-bWa$/~}ԺҪȧUt8|) [j1pIdi,+ eDhY_ms}P~|} z(mɯ~8Mj1kwZ ?zwٸf&<Ʊ5S>ڷ{Xڸ(ե%POލ?Ff$m!03&DqeT+ $ksUl!m&lҍ.Hd*B>|\m9 d 8/Ng%J3JV+d;hiIY.U+,KFpJXr/mrh4yS\uaIhPͳ*λk\bk`If}ME_5 0 4W]A-SYRZh(_^=4R3@* BZ ֧lZ:ql_ ٤VA&b7jŷ P'mt3hY%VVisfAi6jBԗwIitNDާZa1, 󚮰 [ˢi;Sq扒JQ=&,|*MǏ&yN1D!IX%#.N ЄC'Cv~)rDF1%#=QxU>L$? 47ڽQՄoSWWصm ,͂0 ԙJBxfإ[l\;ۄ*ȝJklJ g=w9W'9NJ :_YѦ>Z;cG?K$Qʕ%:}0=sr'+K9Q{n Turr \Kl[F)JxUz1$L9O-{UȪ_j ?:TkX"5lW5FFEMtt(옸bªE[W=_N_ <+"fWMs>7[^s׵n|XW+9խMABiݥ8B &OKsل6Bv:KyN}a죗%-Tچ?1vK:j?B8V۳g$#AD*qsg[%q"9}7hE} h=:.#^TwK ߬/6E+)LwمqdZyqE&t+[*rzLFG%n|.%LC_Pإ~[/<1"~2 >UEҊ'k$r' c+𻱖sq-B) 3MUz`HԖ -xZeO37\h(B#MeQ"3(@heݤI"%#Psq?P'M.TD'uaqDNlpNZ,b(rRZ4L$:3 欖b^$sf@yTIu=ۖjZ\FsREIԄ;Υ >1k.'l z(}B\b'2p!^hx{-+s~Ev 8ҸԯyG0mGa$K:! ‘Od;C`G36S~%[d"ˆצQ/Sk ; M8(/JY4i0 䃛[͞W\3FB2.~' K -VuSQi Jo%XUw]lMLAov'e]% y\k2 dAO:+/u7VUax[Ⱦ4ͪаʾ'R]ڤJūE!p35T޻tdװ納ZzȦ-*U"RJدK.r6L6t gOj§ ŷ,jt׆ >AOJEMgIfA( *;O+ZTQۤ/܌+ȕ96jĤf2";/ښlxs&%xDue EPϙHN !5l# D(<$%#B@8Pj8Ќ$}TmBկ뇡#i[+ȻXw!!+-֧2 F%{L5K'm*yw mW0l/2TVoHQt⪣0.4^e^iYb*qYDY-L2Kޣ-MYR%ͻf ;ǘ Pbk>[k\F/m;Bi R{ZeYoAMBl>fgcɻ2t!y&@*CHTɎ\vAeO&9m_uKK("XGJO,FXE)>MvJ3dnN=yެ/pޅ=XV֡?t}HExTOF#Y۶%1W/ՖTgZ( 2c>ȥ#YpK3ȓFucYtGoȩnFKTMn+v-ޗu,Ņ"i yR"++~5ur[ Lzʚ(%/u9i냙dYW%XQ7VfՋ2=D-Ϲk:΋Q$b~{-/[c#]yÓJ>eĹRaR%\)RGO:k ojR/[< b_ Ќ x1P=([E. 3Eq4F  N`bA/ DM.HĻ8"?m9œID$F(yaώ((H%RybanU #$8p01,%Cҥ(" 0WڷaRA$DBRGof*\kz^KeareUNT]]%^OQ#,'"-7!G5ևs&OkMݮg#Ύ}n宨,kTUuK]oy]dNh覌cUjĘ<Π;`lԊ/ YgA+1NK]m,Ģ5dn<*`mWMj5'~dm]c% U,[ǝOWTN٭C*(>i+PW;;ȾvUu6yL9jYRs d?G,rS+D#vVvΥA}OiFA=_"T%O**n Tfe¯Xhҧ"f9?i_s!Yi:n'Eu67` xU#vw ),Vw''..l L˕5kƁo]ձ}uPiHMCttc1Z̈Ekb)25Ԭ꺂ҿNr.v"֎vצKS?8cbѯ*M_z[ĶY p77Aˬ  0oĥ;LVRއQT_å.XИŦ+N.ttl5aRщe Rۦ9ViG ,)jSk6~9WqL{wx;چ`0:Oͯ+}o)2Mn,ږiԩivuļK:!-ƹv/4iNT)|SU(Ov *ڣ_JR:ocy/yZNGmɨx<wIqܪe>ōxT~ڛ賤^rȇ\"뤪vƹ]MҺ4KxbƵ4?$NɂA 7>>1yYZg۵\ˊUzW#sqjf%xKTwEJ,fuk$}rcF:fѭt-wy]8lvܽJcJ4{Qה>fT핗sT!26'H#VԴWE1) *MHR2Zԅ3i 7>יYpi|fls-wbu6˫zXٝH&MI^c0L2", èi߯Z)D:_H{-ե^"G꣑[fQ颫NlV\6M~vrJZD[WW!59:ȮTu(rDOh6+\!V;.O]  z+A()RhgXEp|1Lh uy&kjª/qVp=!?-?epsPc*2&k:H#Pe4&[, 8n@-(lϬ>'|^AEX]֔|o\5-]U3םJYR7w|/ak~--Q&v\zp=VWVbS]3x*BĠn\Q |.hU5NT7ޕ>'^+˒8ȗҖ4KhUrեKu%uuQ=isZ_u}qKaZd6KT2ora5 F˒:}I|ȧ1)պf%D)K:)7g_Xa!b>(cׇHѮ& mPILFM޷kt&*{N:^= gfWhܧ/o3飡t#A6T 7Rau0&f\ItأyjZ0> 6lZA@sߪЗKNʧNe߮-N8i1Uo#IXev h7J:졪Rݢ[\'tR%Y:mRIt~}it rеs kXҲJ˫GJb3EqW5h鿹 E[n eSU4n/:^ ?+)%rv Ԯ *`%u$Nk$96WRԝbpc* "NأrFik^>b';"6NzϕX<jjӮٲ)uׁ|U}p)aA{DUVOqp^8FfքVc]Л^TMzVথO"5ov)?{FF' |v deSkX&iak_5K0!fdrK),cJJwt3-y8GzuYcm[bUl&zIJ,n`4zTX[iwy"$ƍ_ sKKqob%$z_C5fg!S]1*3rjzF޷+cV޿d6n,bZMR]#,5Jbͫ~5[pڳ|t/К6;ǶIcž=,U 7m/_݋*ԗ8¸o]\feJZZ1YDk+DwdS>g]PyxQMq=ZYZztVmlIK6I $Xz~Ѡro_N9x7'N\1:[3 WRfw#IưR-|LY`3(-KJgrѪJư +z-h$e_59=z5VD3]09+<22'9eAHЗ&׫bj:|[}sFe&q9Jg| +e٪@'Uk0$V&CWUfuA;čE'L4CV blvi;GI}Agi~r&Y&eTUc(H A: c,dY$ɿ]Nb?dGc콱ʺZY=P̓m2TPb\5ܱٵn9 BԔJ A!VM~:'n汊e]']$+i%]G; EAZ*bP钺% 5^A+}`y43it]YZQ8 GV |""U-7n^Ok6/ت:.K*ol'A.G7]~9;GyiՇ)0d%-6mSOMȀCi~jZYf7"OBDȌ(QQ] |/+(/M_W`}*?Yduuw& ]޹]Š4K?/* `R{gA-C޳RDZV ,dRwAw.|e3$LRAVLBfQl`*?ŻUͻB1?b*)CiRvr刳6ﳣ}^u&aaU*X1OpC6SCEluqaTҵtVycw&%hHUpɷ{b7yph} XhfrNT X!5w68XzȲOyTמp9B7&Uۤ!.zUowU?]*T%3Ғny'DபZF3 sdQEuxEvA]P)lܔ~*ku lgDtm2GU=@B'ȇYս1LĽJv&C_!e2ĆfBp1OaD$+SםdgKCK= bԬhFMb~SvHPfqwtن?>ӱ(IY$5]=L`ImrY\'K)9S_5 uZ{CH̳Nԩ3m{$׾y]ռԷhE2&dTV2y~A )V-7HkWdt̫j!WFb*R)?~NBMOp_*O2-{~(i_*gdOk 9ԵE-i|0 84 =sS5Q}I$|KwaQՅSwuwַXyYAr\2H*+yR7+pUT!o ;;3r]7 ر4}mn&v ׆򧼩,= ۙd__kl~vL۶%bh2 Kdm[aS׮/!tͽ,DjYd@Kzp< .g]\|WC>DN@,}ysu;, t>+K`\x^Nܚ5 ^ v?gȫm:ږ8MQQ}<:Nav9ھ%ma\Q2As7ޤ+K)̊ĭZ\綶5J@U$&ݮ[g"-xQ}ID{oF)2x+TDJ15Mٖmhe}IR5/i4MsDR2KB[e~ S`3N&n5թبMѳHuugl%&[Pfr7|*!'a6^d]KNZe/R1o[ ϥw;zzw ckWiB:-#B;'ک؅Φ^gZݘFu˷^d y8@)WĘS #`l1c=%ث= ίJ{\BMS]Vep',˂=n汮Zޗ-=j1btcKeLuUU։Z{/m[V`.<">,άs4s"]]QKj3(yN뵍Jr"S[ tM$KB_UETNLp\ΦarŹ_ݰj,];Lچ򮭫z҉om;XZsu'JNY)@_¦+nWFYz[JZr1*>+R!/UzPƸL;M{Mfw]&^3fZR(#4HKL_ꠂwV,fڸQsxzjjմQtzvKFH>1^cVv.j]P'a>EsI)2JQI\*Jb콪nL㥎AcԆt%قŭmAz&)c"ç{UG>v9%UԉcÒd(54 Tl_`ݴn/)B7h=L 3vބH靔PY 6^a[U ,F4TTKʝI:n$貢9@E?qqԦ9 PU=Vrh9jC+jbOKX-(e1CoO_)B4MR6֬z举f5j\fu,V+C&WFcF{FVWKUXWz5O^9r\jrkX5i"sț >Yb>6j]Tϭ\)7i{;4i5I"*@4 ֍{/*+NEo{1)FܽZx2آȦ72. >eiIr7̋:EZ2jƊcap~:3n3dŵ:pi땉_߆ lgVU_ܕSWP?'-WGׇ2LE)m)1O;wۇ}"p_]ZTxԔƬ0>=.)z 1b7ekxD5{Z⒳LURƻ()Ĥ>+C49oSBj\mt{K(ڸpitJmgV*qqU/q />V~L9LCqb8˷Y-mP.!֥./JRv1)ʲȶ;Fd此VweLK֌D.1UJ#:J'kxޕR&\D"¹5zsօ8z!~ ,͵È?xV\w-nHX^!L5%|v+"t;3j ܆A'G9}"znQȎW8o f~ʞ;'Q]_,Ƽx;z=MbGIUkQn\oq8tC#Eo0hɌ`u$]ɻy)Wq* NuJLhO1q_xZOiUON\2uZʄBFIgӥV#5<b Si-'}*}R_&-D5ꈫԡ#()'LUՆ먪z<"ےBAw{{8SL]a5e_SXE(-U[7sr(5*$蒴QYK%OS;ȱy;kՓҵldi'd%SH$wƚ=+~jo29^>6k+8$JZY̭Z=Fx?U9ZlUنOB罏3,"R"gMAKWi}*\N/)JTT7awER$i:fMZA8Cpiy|"( yvg8[6X[2w֘/ 3E K}Uʢ+7+Ut?u]LǍAH,dnoX4ŘG]78\[#d_ZcY{fp cwPNdQՅn趷7usҶlD&'}CNˮ$2(934&i~Ww}{|jx4ie^u1`qMW1]LѨ+ mD"|jbΧg+Pjؠ*SN8j $}c쑋}lQU5hήETvTMg\StTklxr_d)kqmIi^I@"R*K5qG5/hU9"®oTT2܏dՀW]Bϋ_B5Fs;cSoj{RWaus 5߻ɯ*2J[|+ºuHiygqsWohmߢ-OUE$˞MVb=y IUD|jk:|*S r̯zy"Y5`H# HtTUWŹNvYHGEb> QUyyfkH4)g$ESZ.o /b+ [l3uYCZ K Y0 |5U‘ևJzXf{eXrͦwN$"ksgyGЪMOGqi:+5( 9.*QiUQZRL_j4rT[5u͂p¤%1{NӢڌ]4m8KEVj;F:/pﯪ[+?G'e^?Ifֺͷ#=jϣW-p\dNwbS PSAaEφ; )_/Mb)j|^e+PjS\Y4Z FM,[ϴICO5IK5 5֪oɕJjյsDVMd쁝g/r<3}ENjbj?DV!d(/k`y^Q2rʟUk|z멪޻j%|78=Dž,&8E]wvQwy=ȫ"ʲ}]wvΨHc6,>U2 3U"n`<6U%Mw^jSL^TS.,HN |t-npʗGYoi*""t>56a},_ʼՆuvne+ƭTE4Kwյswzs $ä]۔٨)Cv[$jaWm'3.{eUVT#5.NڵIi5JBҿ5I@btttsmZvQAvUAQd*|-:xU"в-VYU7J"/hUE U ɩae b>tś`ѪvNf[sߋصo玴LPpׁ{eC5͛>7M֦1i޷HmۦκqFo\vf͉jauM .z<,;`%"FJKy9w},*TFAB"o"D<2ۨ#+%ƔR WrzEP̛lЪ҆jT洽i*Z`p1"5Gi?趉P#汌ۣ.m`XWAeg}vR$*: 3羖tzKX¶)k S {H7/C8~K0J}ͧDSL:Ⱦ曛#\7qIYuaiz_*U{Ir%s]wj֒' {3yiKJ)jV_%O?y*:K K/fѿ?Bd:,CD) B6:͹#8>4{̻4.VoZ0)[NheI+%6`r,SDbQGt .{3u1g䑠G:bʺ"i1nQ}j5&u\E$3DxDKIFy/rt߬"ZkC$EeS  ᝤ7|[XxQfq+0{<vtfԉ7me2OvN,0Qi Cj"ݬʄPTLA}nhGpeʪɬf|ueo:(A#:YDMkӂ(Ubt6=ZD[:iŢ it7dK%u=Ҥپi#~ꛢ鷉tvyq$h{} b75`$JQU^FAgCISL4@ޘu_n OR)*Z!y0tYgsmsk)L/YEFذmְ5d^!6ŤFD4ڑvUݹ?,LPweդuVWݳ"x[Ki3fMӮ+h/dKU-X-oQvfHK:t).=|jʻI1HeO494LS6ͱ`2lECa7>a}/ tu+I0uvzٷ #2R_Ix\guDz,~%=QEjTyHX7 }Vx؇1Բ+Xxإd 3&^gYgXsb*1tޠ$NL+KeX ic5Z']OV`.M%Ow͒ҡ:M|9xmkڪI+j'WFHNևz6"kBv=9yVC͇o6!ؼ-sj'GskⰈk#E:iʰQ3i&蕓 ;6]yyd[íM: !~vJIQl܅Ba7ƒ%j[fءn\)-谧.HuO*j2v$boK,fVyY\F$kTكKfqE~ISGa`ͩGնI7qPiv5~\JV]tkC53BmSr/ΩIk{ZYTc_6v7kʚ#O2*8Otv|α-k޷%jd]9ZVHB8n>-wz_IJ9SW9}S]6Y\ D;mnoSuVQT1K iBtRFhM2]Zai%]F f\EQt+L2jTņ5T_%|XK/C"+OܫjNU.Xg[Lo"hekE+R]D3Xl3ф#@7΂$:W2Һ$c%"PӦ :F's?[teǂ_gv9Joy-FZ8Z֪ur,sh٫+3*K(ڵ37iwݥu=(Alz\n<Ҭ:8'5h6K} &/ ? b8;,êʬxbQo"+S<}ři7ȇEv 'b 8M"Nv&RXޕ.xun+jҫ)ln/m(%'zXVyxUZ'6I!nU$gR:*C&sEqKZ Pzε7z[tWԧ=5mKgW=jqw%K_^Ε& R;uOAEcYѴoJ>Dv>bYSuMִqΘ5X].L'M+, 6yIGXXj.Dw>y;2ƎPBy?)ޗLƮ8# 9JN F/Jح0 v]amE٧]ձVZW_E~JݗZӧyM˦%)e~aYʭB#-Vƹ ;J'/m<(ն暺JqRt_OZ 636S**=dɣD&P i.'zGD&,Т/3Ec [| ̄ASuw}5\im.vsSਨȹIИ0|4k5LTFSp?\u B~yax~MN=eC£򲰱+^FVzZU4-#fHvI-[DnL` 0,-{]njz ^;J`v.Fpu1 -MjVJ&0|*əf|6KLN*i7 R 5Ғ8]CxJ";ȫݰKC{W,9ˊʾ2ϝH -#TyX_zNZKْYf1|E_xB'xj9zH;JWQ-R]TcWfd+>1{~' fFI`QRꗿ퇚#N:LzPs"8ɭl>6,VYG^uQ%Gt<+]y~k+&N݀[wYdS~3歭muEp/BJXǓmzƷ5k dYV}lk8SQvu~ 늴;[UG,+^4uIPnlĤOp`-MKy QTG1.y55GMqKЏ`ߋ8+RsjϤA@F:ӽXaI+N%72;m^7b?2D#"͸-v=vCh=Z3,sBݤMcBү[UskbSI;ͬ|sH-VĺJJu} vqz3m Tӫ'aRrn&M<-d" vMmUvY2Y, _=}t`)J8.n1RT+ze@[4j^Ф:ѷz& tFmoc.c {U.eulTn83冷4ɡ1n Yt@F~λBjM_hpy_Eu꠮"bO%AB8 P_U2evtbl{UkNۤR{u߳(X=~N'Z1sR_8j'OM{u_eo9!q__q<J͓j=Ծi~֑OsUNg]w.SX6AGv`92rZV_ -=KVk4 cu\#Uืl+oEeIԔǩS8( }ֽ.ާSWU;sP*y")RR܏LӧӖP(7 |ka-5]z>]?)0.UjRluw*u2ay:=sw?.tqܴh_[\jV>D}ZX٩6*wNZGqgXikw1z3^HDT%7-Q*c(Uk{:(vZ&*}Wwj(Yc&.#LfUta~$B'˚hmon;X*&Jü;vS*kfOY}#2q_#`Zmá/Hn9Ol$TVǡNJ͛RjjV![}yZb3esM=uGu/{:-}72b_{g[V1ťD-7O}A^Ӗan9NF"؅yq=rfm ܱix+໌Rxt:m[.F2F{X;vdT~f^Xrf=~J.z氣oT--^{eŬIU_9rDp۾k֙zZ^!AsX*.4 S\ȩ' sǩjB‡|lK`"!ơFS$mRhU6Fmm ,'K̚hJRc&w.1u֔_ QJ۾Moi^/Qr4*1?P皂1CgWڸ+%jb^ź~[nxǣ^}TKc)mF5 ڼ~+ܾ[3 mfBs>f9𣙇=VDk6?U p5ULt \u9WĪj}cpb] dtRvK8k?)d$EGӡmO]uOb䥷DvQXz5kbl*bE.w5HT|]3 :In9k֢SؒjP5^{D kbȯMYx]Β%:3t|K\&\_Zɺ~DmoW8ۄWr$+i\"Os,Hd}]ᬍT7ZDbV]?!R'^tsR&3d;sBo;uqr|MSbԇ;s[\wхtEywR!b[FuȨo;yc6#OާZ[XaHݵJ :tu}bLJO ^W;Kr* ;ȅݰ{*KR(4Mw}ϦɳMްMb#o?Ac˳z6INWdA>/+jh0+b!袒_3M+ZTX.Fo t>SV^!(9Z>p[nEkE/%U^3/kJKJ|ۻmRI.FmSB]SF?m6I\@:ݿtV>3e;7gһD;|>gPV(waJ= Kwolpj*r,a0(/0sեca֙p" q1Jni.E%Ǒ|MLn>`!.{o7uT̓!xeR#xӠ&U^k3nɦEm}pվ #xiB|ԑOXy v+Jϐk;)qpo]4CRt{dKZŤJKڤ8JIƹInXDݞwYut-Ou{^!f?x{w hK/ZQ+kP&I1[YWzI9) @//axMWڬ'm%F|ゑǥ3|eP_Qj+&h$9uۇ5S FQRڪ~] %TRty:&|,OYs/QWԦE9\O<ϴ 9vܫx)u["t<]wƑQuUa:귽j5ahFDtBN0>ESZMG}5qq$O|#.~J;{b^LltkpUfd]lhmFʺ:&AOƫri,]pPu|L.4~{)kPެgճ ~?dvʓ;V>8. `J=[ZoV]=T𸨊ˢA BTwՉGJk 2RRG~Q?u̢91Np% Y*^@}^QwEEIyN綤e_$W"pю !5¿gisUwuugoKR/ V)GoTj"Q^㞼=b.Jk^]4kʠDzVfn>3sFUg7nʔѿ&eu&~)ȬT!|btYyOcГkԛbYܧek**J')+d9Jı7\wǥ?5CduuËt7x^UN]I9 }m՞RE}ku~G3;PZumt9;eorV'kⰫl%^l$֬z%f6Q^-NE6fK*ZsY@vn]+$M,1q5c^lcQ͖&iŬIQVRt ?!`g'OD~Mkܣjh9wKeeSԁLt_G/NcU(OVV\ܴ/ÈLì>ϽC ٿI_$Yn_b~~ rffk2C9ʺt6!nVkY5iQS/ёaceA|uV9R}1x7*HGn&'MXz( $*Е-C5(y& |ٌaϡVXU5J=/Ѿob-Uqw7(m,?Y=.)fLJ̚H6 $1j}VM2v4K&x 5WTˮz/Gs[7h;˜\413voi殍1;q.K/ +)O\̻u[׽m޶z14LG7fP\¯ 0Mʬ+Gf.Jy2h[1el q}!_¨QC6jG5ZkaZ«J@6H'EP. :1UqA6&qЄz2Ϣ8;n_!`pwݲES!+;& ҩBQTt>2ҮRlו,f3"ApUqF3b)v-TSvF vYT&RMc\ /.]GU^'6Z]gaU}Qܛ_Z} ێ- #r[ S |ρI +РnI"eC}kxg* SX7iSV8hÅՑ`eݚ=k$I]򿅓9eXug%pw)EGPW[ KRْGݵ<0Cd0lf9bI[|7\4)޵e0(Dpo;abJX魫 %q.n4N<qʜ2,:5zVsƳY4eTZ']ZNd"OCAf~؆_1&>6M>2^;Zhm{cn30.KX^UVEǍQ Mj],fUOo;sgt?%i_m͛[-]oRq/~J1{$MJnSiו&7tRY?H${qefʳWrڌ% 3^PMH4RA0-^.z,R[YGjX:ZYE2Xl7fʱ=?Dc|ܕM'lQGNѦ'D쫺:#<9KYK=dԶO ?Fw $6-ݦkM<@w_yiѶiV8RT4m.յwS&~ʮoߴ*WgD FzXޠɶ *`zTҭZTvekppKsr;I,*ԅEs`+l߻j[{j ehszO[DzrGZb@ɵYڮ'AK$elg貽OgvQhzEꩋYJٶ“XZަJW$jN︔7' z5n]!o]fw?lģ.~wƿe"^^4BS\JQβ+a^ִF^ 29:Yum6e͹Nk̤~ RVr;v[GXlP+jRM[:ɤ^ wȞmF{TW?_]OrB=+D ~UpOlVWvmMRij-,-wj`:|1L!XeOF\jh-KIL'omQ[ơع qԪN¤/H;pB۩+AcʒYDWf_c%JN<qKRq >;v]ƷRTWݱ=u]uQ ʢ%#iTqʪ\%aK&!M1/̠'obgЖ=#E^S9iۅMWr5rHX#qWC7,kNM\oWZ棠TMa]3[2MIdeyxU:%e&IJUX[|v Pj^5~<ɪ1=hKFqY:M%΂>Sf䷫ l(!}'_~1C~K#մ[Vdo: ;ܫ.ҀMYU%URxhbޅidfպx"=C 'źR'sLn5OΈyLuYK[twXPj YoeYIpQJ`"YUTTV:1)|Q=AXdnKW\FRݺ nڗyUL$|U)Bi;F8"d'Qفl]D%:~\5QK`->[%\P -ƁA<&N㔶 t^􂄶Y+* $;$<>@7S$74V5{Z?bF%K(IzY[ƩV]&j|ƵzdQNS\RY;'gʕ:dmi n*MU$V>̃ wiFًƹK%hT$TQz_2 Z̩ORfWس^eTFE M1\oZEY:y~hRE x͠H9*0 b~+4lK,r`Wӷdܱ Y\O~ʣl/.KKh_OiTǤ\%_XgcewxFǨݟuq_$VV׬"de)q5$RgtRupxL;f, /v|\+H(TkZU'MCJmPUkuT|> <OV"z請 xk( Z0u+< $ߧ%7Ŷ UJo3i&*jj$dB;KP멨:uYd־4F*L={^1LPݶEeU}~cFI2uY5 ѳ)HN "N9U4I:$A-K=zLϸɹZr/ڵLmkvqnh* ~:][MG_}|zۓ躴Eqdz"qgK^ ihړ08"*/ Qe`Z[.plXT56tn:uJ0m:*2g_a`r۴{ҽ?GɬvjY`2c+Lۮ-b __,5X؆x 밙$OT캾Ƶeِ3tť{vaTb'KpK ҭ-=tqVڇT_(p:#ݩr@8)[2VPK'U^4˒-M=*3WSs/:)3,KV{Zg;3 SQAe "O.OZ)rd**JnctOz=֩VIp6~!wu/j7Q*nJ <22/$YUN2*K.6 cܰĝCSg-tbcU j"IX_L63l7ngUmn&uXk1aW\/-򨻨nLfiPcN2XP?q]ǥ{hFٱIZzr|Q֥Ao?h&Iqh]4OyDIw{Wn z>:HsYA"m+H3r63d뮏C8v?!9}+,) bMj]'tsS'u-W|<('9Z6| mt+EWua}q7 !&jmWׄVU(AovNpV} M_5iFN_!gi^tk{e-MIkR٪rЭ^PTG*\Pа-r4aC{ X&XV+z"Ygi8UUwf!6(oׅp^\YGꧩ+OYaDOfȥsok68+'(5{SƼ JX2*r7yIUר΋| ɯt]>]Z\Iú&\Kog5eXͫ[ҔVl 2ӆ5,njm抦>u=:oGlpg9A[),t[n%D"R&k\= S)Ƨ{hZDe6QU!,K^z܀9^k_ͲeFqZOv=B]fd]tKʾZRݧ難HՖAf'HեY㏓D2H֓،7I {]=+ 3{AA6Ok(/Nr,,յ9hSyU;hEF^-mLߙMg9{e̔4&jG*f)y =ᢒ仪vAp- u"7Uѝf3kA5T3-kM{n+Ks_v\lHIh3jRJ,7f;[:JP-;~X4Jh&Qוk34̽*.[zUJRV%j&W_,80BWd紞˴+zjro*q~$3zym"yBE8Tk;Mw_ pPHFZ]q|ZBdhmWEIlմM;K,r_ tY]uarW]fxTl=IRc>֫]]bTeFپ O-O_Ԝw=.Qd)Ζ8)ךbmEVN=GER-mTRM|%xԽʱosmkZҘ/)2k,)ӆZKgBƊ)(oM9OQ2ItI*z^88wɚ|p{;%Yx# p73ˆx5maaNY"M"T;JvJ(2T_=xmm4~#~:ݴiڦf),#Mq(+1Sg*'zթ+*'Q^\fAd|C(i̡$pw^:PuefλjЍp4Z%wI62^ö 8hbUxZ͇ǼmF񪯒𚅒ƣ!ŹKtzx?'HW'-HG~5JCy4,jhU񻭢9%=KWׁ'2b|q['U]Fag躓$Bu\0SE߲(.JcwՇq,V鎺ʶ wb̽EwvCTĻ:Gyx3}D@-4E; +o:Kpż웄q95<"2%ik9vuzjv=bbI{C,YAK#ƾW҆_g/=:=OSߵ%xbه%`Pԋ*mr)TK7ꪉRi<օ)=&/°C>ܙ8u 0e b0υgzvhk|L{FzD`6pV{KB+-Tn܅qDs\Xx83c:,ayTĹ8kk_X, 2LvyD?igo2vw Fڌy{d߂xV_~on= 7յH;Q a^WOW&z=7Q剀ybjե[PjB;}2)¹:ѯH%ks[/B/Up$cɫb#jvօSwĩ6%lą nf#nT"hTHT=OW+򣓲@1PKʪW'i44uzTiL*.bJPtߒI{X,1w^W :6=VBli"ֳ=Jk&%+v 7i5RnSi_`OE9IVn$ +HݩMRa*3Ik6}mAKp *J'bKD:g8_){6 &N撯ٷE2nEL.Ik%UTfQD[9j]2l;AC8NBύifcikۘTمT8ulgIkH/:"J%v[Z~흕J۶S'6n=TuWg1&VWK\ ?uV{ }{G5}ءُұD(Mf,肮c"&sE Aw/6z7: гNg ϾHr1NWXg:-To[e17~ "2.x;~y{2h]$ ͨ.&ͱ>ZiS21pfj뻌ڄ@?B4HwatI3~iwDZe +mODQ/qA>u sWqH"Ð#W+IO+ ᴮSgS*~L ?z0SNtu)pnc@γJ`/j`ӌڦk;%B=l7]Y0 \;>C'I 8$M[h_>^۶xwU;9 8= ˞=ht'}Q{UtJ/Lꤲ]unLbgjU5_Co;"߲= I_۵WYކƻ5Es?Z /9S󸍺`< C2"2Lͧ ?gc|݄Aqֶ-`DKv܌zٍ^0C(/Kb$TP9wyLi1*BI^UZ?E\T)'𕽄PfUfe2cNC­ A}O^zL".]Y%D}wuG+/&Qg棙LM^-en;, jM0} e}A2 Wr/"Ikȵd`W+mlñ+8WuVAvFHED:eU!sѸ=u7+Vv<)k0 Zy ׬EU]^mk ۅ۳ C/"h+h5`rR:+ @M*psZ{b㪜ɥ-3IS"^rRV4-S.^vetF}A/ɭE'Cä%ù9%@6 (eᵞ\YH&nVYKiQ|̒1T*(6yTDE9L J_.l͟1٫XU}]Q'}:iZ^̷̩aj;]Ƣ++FL+s#ڭJF_6zTj*m `at҅SSSrnNU83Y*iJ5 篎\d8)9B b7%ur=:NXe枥6t9z&IuRZ6ͷuePkJ>H_'S>szY4#Fh-Ok EĶ+*$lk"kaZ9>$=K}3^آ'Qzk]CL] 43ƳN[DߺI3sZkęeT%ilWEY[Fu):"_TVlø έ3HuxVɳﻏ*L:ք[пʒM6GpBR&KhoRndehst](RYI~m'"a^ X/ȸ1N,]WEy]bhGs3)J<3/2IȰlc̐y=)"2j4Sxэy97ezRhaeQ\df-_k5s̩ǁ^ܯ0k:})Sí5 RUTg^7Y7lr7GtR慚#B#Jj- Ť-ͰuTWen{O\z tvl'Wa^Of_#puo&dnF55\4X !6m `ݽHum|[UΝ)«C'.֘hׁhA3~" Kӫ _Fcy :X#V_*whȺ?o}R嵭JK)J믏+$>HʲƐQujdzm?:]VrE"]]VZ|$~MJ*SfLC >)(R/)lZ.BnQwH<+GgtlK25:"(BxЖ8HJؼ 〒/Z(tLִ*@;[ K"z,NJKM":QC 1F* s`qx1 x8z@HBcxca~-\ LB^Ɋ&M B ӶaABjգHBE/{d Z"!dY&JSRMNvxH-( ! !ޖ[Q@/TЃ&C _%Ҕ&+Z$tj]2e^B+/1EOyk85 ]Xf,h}Ix1Ub*b?m kS_IF!2sHBh(9\PmsKg;dT&%D Dwk`tP kvZ$"[l{F ^AY@kØo%=@&N r$o6z+kȿ4R"qb:К4hU4WXؼ.술$wUH~3(N ŵyQ*iJO$Bk{ h#ݳ;^Ȼ ԫ7WfUP좺/ބh`# Cžm"TӢUE}f{yҗ5[ӬzX'm'KXYe'ӆ5/)jܳ,Ǩ;z4b Ҷn2#ЧuS +C~ʧ.oKd P ttounq7 / ȲNv&0+#ЍSX ^-"~jK2'𢚦eGx#~xe歁^uTKZ+;O*4bҰ;"F7OL 9SJ^l]v[dN[WfLPr$.>* FlJK}LH$r[D]O.hFA^{w66;,$I;e"*]ă@$5vw,ܶK4ֻEB3-SX@1%8$k,xgPB|=rg LpDprq,}1"e:v89#7#Q†   0#!F6TJo#(+pSqΎtΠ 8Gby@`ɐ&|ʼn4pn8ba*l#-N/pcv, ,'nz p^mGt@ 30$j8# g!qЀac!_q#7s:c5"~:+w\e̪➜(:A"+#Hb3. @O|L V<̨_Lh=!$ "!>nZvi+[<+{継;Ғ+ϯ/^s ]e@Δtv=]o-:]1-\04{S2:]x^yW΂M7;fν] P ΀>ѴWm unyEE%DԡA$.{g{ 1:Qc@mֶgUo= VjxW萻|4 ]s;yխЗvPA6}d> (Sw.}aY9 UPUJeʀBR+ws4 %^|ǻ|{ú{gԺj;s\ ! @@RH(̞O<}B }nzxeTs{}o[ut{ٕK="'iCCx{Wz{cMsiKoS}}bfWW[z<4u\{1tgWw:Y϶\ִE^Ӻ޷v>5b{}թw|vn9C}7M[meg] 2_@={/2rһ%sXd::ȽvFŝzG,7ɗ|*mm ԮzA頀\^wf7v͚{7۽S;]:wc)غ{׷fym*FmfBp}n7h|]m];k5pvGYvYv}=+ڻ=_v׽^MmtOjG)@w99=Xyl3w7{e4NWRq`n6k8:捴|}OwcW|6/)8Jih dLM<)Ѡ4 4 MAhi&{TMOPIIza#JDBL51Mx"4mMm@M OTA2a4"mOMLFЩMM=MzSHj&ba &zSmMS%=MMSj Di2~kk3XF2O6 BE&;\Ed$ dm۝6X[/ C""U%ߋ٫'D$[08|ZNcZ<50HNyKxC{CL%-V!CD&%C*{Z|lr4] &uA B  HVYlODSnyךla')8fKu7)6KdR3j$RP)o5o.MyCђ#I"$HPiru4M6l)d=EyH_?nk2&mi+[L2mMXQfJIbkAmj+ZwhI$emՒfґjKY(JK[A̬ZUa,je/9~+hLjM6;tYlo=}7+3ZY`6klqzg_{% Z[|J巻0XNjmN,Չˮo S^Tf w_3dL_q`jW֯ft Ũ d@Z[R}q58V.pgO>! %sր+zVwuĨjh5y|Ћ0 ݈ML ]GVkl XvutMrpUI!*Z&ݛ~Z1-B ~ZUcK8٤ɫXmW1{kj~޽UJ:Y!--Xf`,Go̕:n3Qu5.vu#[6eAh1JPQ;sXG).Ӯu.2&0D1qRK H!h 4DX N^ݯ/%fMɻUj -Dd-VқKi*љΫuUܫ['ș u;IYNnBZFDQJCԭ.BV໗R%umBH$V!Ȋ+*ݗSN\9ӻ-777tᤴ3 ж++"B}VZ ĎvH9Tj-$IBoZu1v]ۖ?1Wo+.#o31ANz,3x=[c?G~U)``4E(RL)TIjVcUEbڍEZMVѵXZ1ZJJJK%%Id--UMk%[RUi-RZZ$JU$U@L!&B%JJ")JOEDU$FEY PR 5n=۷ZM$-EU̒5-6UVӆ4%A"ETK2)8ZXQ @ ୠ l\5l*$7zqi1 IC.H!m"\~;HL;J,-4Yvx6ײB>c s6|8A{Ҿb;K7><ڐB@^JTg]*bSX!T eB\j!`4]NK4biM,)gД9d %b,&2L,4dv w8%Dd`㮨sH5v(bi0YϴBywI>B|nn˘wo]]v׎˴ԚB}cN#|!i-8=/|gw4vShcØմD֓ľ}yFM#_s]w×s^#q9t8; 1,okMiaܗm1E6^Y2fM"Te89r@-wh*;+=;Q А ! 2)Q_y˓|z4dmݣ),s[m&fvԨ3:ڥB56q-r뱵G AkB̈́}7 SPBKo0cU'\FF?[sqyXHZFKCgqr7lZ,QXZXĚ m{]u7nQW)ιڙcg;\o4 /W^Ք-ʭiK:¬*Z5Q%-+VZMru\yNܻ&l P$pM2ƇZA؁!sAg;My834vu&:MbB5OG.GAM1xʷJ5Dú~jok_|uݯCQmGtrL[L3P'PĂBdX7KIӈO0!q.Y/Tfu1u(qІᎸ鎊&5hz룅re{;nl_{㮤` .^6oۇ6btiK3 hjYqFx],)>% cZaɧ"!1bkC!zbbR `HI*Nrv+-K4N+x䓜9.acG)ы=6a4&(yE{Dz٢6ӵlӕ2r٪M{[)[뜵 Ĵi,p]$l(ri -֥Kx^^YfZa7:l`n{^T њ;5uM`lF#cBV$^^NIyCN/hZԡ jT; o}jR֍o(ѧ+/=LnS)OKn48DS48gMcjjFf6zk5g˫ݫɀRb+'b@clfEU“DC,&GLιshfw5q?#u~/2~We[^7NR3Q n$?n7]A_ &M_:gZ`RH[?WlkGD@No|& -.;75,!s?;/ I3ߟ;F/nnm0c"T,aKUj2ڔ2-aU A7_SiGf+G{˨.v߭g;ӑ0 ڞ(/M'Lvz_Fɩ}~9{u.+3;vbJUS5Ig)_ZnOmn[TmْP? @ Α|1LZ*Ū56ռk+['u-b᥷zlk-55$A 7c|9jSim7$Oqv-;MIiZs##ɿǑ:Pq}x| !܀@`ԠB]a5ɖlv8WF~ YՒӺ+""N}_S{U=~KIT_LB *Oo>d&Wyi-$0]#h]$f=woal*+Ǖ)wI+ώ׈I\/j"M^?~_16aCBD}vvr1&o/QZJifd117Ű%&S8ifxܻ#x4WW'M?e_'-cEHEpd$UQZօTU( 20bx)#6ZFnuksVjZ4Ѥ"bʊIJͳ%6Aj&mX 6(Ԙݴh2ԫ2ԑ*E-bVH٥mlZMcdYLح6Z2R(*c")njmɤdeZ4F-MS6h)"6ɃdShRl$)-eIi-I%ne&ձkd*jj5ny,* mF*2"2(l!6Mjί3SID1M-cLQ(j\UZh6V%Y F"`lm&Z[U.O=U[徎c6״ wX* Z:q끟?CO vS1, +fb1 t>N/N.,{~Xi3CLɟR Ì+/$$ɿt U9f%qcqn%woO_9K) Yt'L%TJ"IE0*j&FGBw'6K 3}O ήX1Anf,JN=4hջr>uGD陂˿h y/ +G}b hA~uG}ֵM~h? Kt}.?ݤ Ṿl(=,?=ZOIP:i A(>xQĨ bDSi뜹!,7K"&0gP΍ q[ҭb͌iE]o{FA!r7+UvGK8`fB㝕0*o(3N?vჄ5jC6e1QTXxu]6ޏ [NR|@e $(G)Ŭa7 D6JS2Q.c"5jl3! ]3QUI3Dh?5h~0O'ڭj$^}hůqFիKYeKmL/ᑮx93ߦi6> |iO^+Ž+szwvEnIp'Xѕ30lш=TFS?%=GҡQ0fo0|los?/՚ql{92΀~[R1:+JeaW|](p f&b$ ?ԿJԿxjDֵ#sH:j;LQ53qg5f/UiSJe+p.H7gmiy@L|o[l,gJOKwF8x `@Ș!!rD+MB ボ4pd20`86lɳc6}@hz^٘ y/9_"-Q#"ry-++|fFH%A 0҂%$DbAL"R($)$///QwwuwtX "H <`zc^Ne1EפF \1ԀxD~QьCsN;vjlЄ!|X'|ND2dBL06ef(Ĕw6ƢE}"|X1w) Z={0Hة}?򾢙M,bו&^"><:,A,g2ZuF8ged @җy`@]%HH PǷz %MؑY)#L("ۥK%)K)iRYl%$|JIREN*W *a1^*4bQU$0v zުS%l:6<;YV)T8Q %RiѳIi9;8nh*U.W&*)6rlbR+:VxA>Qqt+w0W@$;! 4tr9s da1ex1¥Wt!۾؛U$S*ƌW`QkΆSKԏbE#C:byG-+nCSgZnn,vǔEg :n[& olA5c1~&gg5O42ѣ2_ dm[K9 VǏ3L&T( s!"Yv4Tթ6i^D3PiO0n pjV0Adx68]%o&!L"ʁcop*.P`w}[_Aǰ|Jz(?Yf^IB *]Qއ^>3G}Q2tn\?uª#O2h-<:f^^cf)DWd=r$$pPy_t <=Mu~?lי_xn+vp:|:6~~NiWz~?Lbbpj_kI%$T¢?HsrQUv+TZz]vi%)-EYnk_yb߼<>X ob?WG~froߴ/%^i6B>?-5ݹCWV{)Q"1$]L(.wa뎈"ZjX*C^=^z> X')S9m(A)E Pp 1]Ö`*x"8h7}k]#T`;Lfq0ݛݹd+ؾvxwImuvh_\"~E `C0܍2HbS=.@ ?<}ch30 وӁijfe,h$̕R˩`, mRKHl{9%$B!-02#1d bju2JL%>I$JRJII!@1a:~|a5Sh#:jaٿ Co.Pm} 0de15H(bd64P rrhԫv1$Fh˟,1]'>M1tf6՜75c 0r"#1 &UT"`Z̡Rv} ٜl3 'qټ2uW3Ws,'d̻e8wvR L)q|lD}o% 43 Nc>@dv1 qõb%5 #',N!-`+>;!I  ]UĐva"&^4#$[dhӺI$?t2[:a vbi>> $RRgzO>ލ'+bԓT-G2WT5^ejN\J\ZؒAZ200곪J"d( ,`d$'D'_V#,CΤt*!T~uBw0WvUG!( dルbZ)3UUY}J61M?`SNS0<*b4h6/?'%2q.7g"m DzRM z)̢w| %C&3("z1 owP*, ҮCjy(WI$ yal7 wh'LްCL ;˃Oۚz )9G8>yC$$NT6>I,1mm&L6Ttvy|-eg~hmቀ66FA&ĒH~"/ۿϩ}DۣJ*ʵVg|U$+ZG!&pϷ'>}z~A[^B۽ <-o'XJP(E (QR;+ƹlj1*}ޯ_5~ϣ1O{~ȠV? ?E:HG&HZ'`$aD&L[޽۽~ ]"""""""'""""\.DF7EU||i^mj_N1p;UP΄dHtΐՉfVRբE>/'rA$$$IB|L'?eX* iY~ T˖ǎ>_#wUgUUVѷǟ43 H8<8A}!wvkek3qC350c$(88>l\WC5L-#Z!ږ@ H!T H$kXH@2u=0y#0|V$BI$^xb;ek2HAWR!U@*)UHBO1LF%*BLtZH$1k[J&96,[.xPp)Tm{o_=oy~H]6[cj)v'd BLj!4k,c ̔(*CWy?I#љI(#`SOPP ?~I)Lw`0<%f1j;ƃL\Y$"c^)vG6ȿc -bW'%lNOos7x\1BBdc&v9юJs:DWpElB)I"T'Oʄ]ЉCCx\}?W-)0sdSPmG;%`zS~qA2L + ]1)j?(wecL$_/dFʄf:`U%ֽ> B79C8Ss7$ ?*! -WY>k4_Y=.>3`yrh'(듺N~&i3> ö\np֮jD"~'%lĻvwیګ_lY3wmMPe U|[OQKoG!7Zx~ڜ^j֠0}QVߗN}qޓ0{g{cE޻YH+K`IԁDPvoqޡ+$dwsO?>:qjE&uœOۏ|y ) Dx鍺J8/\"m'E4HDnlܹd=y卐Gͽ7 ^\LV# >tU4EcבZѕ򁫻 L$ʀu ek}إzshĚMsXn.K9C13t訊x L&?F4;6Ϭ<!SWCUC̊! rE2BBBBYb.uYCƑd$-l_tsǨt%nKhL$3 ch6FѴmFѴch6h6cFьc6h6m1m66h1h1cFэ1c6m1mF1h6mFѴch1aIIMᱼ9&aOBw *y:~ѯEͅ]0F+]&/d`yiD~ q\'͞T} pرFf7mvϼtתu&;!!kjT _uf@᧓3# 4, ȦeU྄iG#HD<듾^}<| +<#&]_߿. ?B3Go^iSd@"DV@sOS_Llɏn3Lv|l 'ǡ">9Ԋ6)3mIqs&5ƆG2LxIzpNngm}v3]]"1fןla鵊)lI%o!$,/xg}rp$HHHX|a2QI wtdJ^>8ˇ}QbGN.y$p^:J $Zt~ EIjx룰:N`5 ATxҊO Idx^]tޚM|6n%\rr}0 l<ȶxдێ!k66=cv9H~S7+g<{iO\ysq?%EY:UX8Bq|7-+sem՘3҆!h (ƥ bm,VT>U,LP+|{mrYQmȸU2hbRsb2,ݻͧ q-= BemDǍo$mD5&%/%WwE(zޭ#ú5Hs5!ϬMI-lx^ie>#y@돼aafشG9"YSҾB%*A 9{ٝ{0Y{u• j q.]1$.U gXj׼,`"8M0`xk FIĘMDwZ6$78X ٶ6T.O[XN܅vLo߾ .fd:,_LX>ţMKx Hl13CGWt&EWizEc`9"(oN8y:s9B >S%W1mUЅ`Ŝ).$odnͱ<^`>! '?PDSZ>e d1OdײmC|Q(> X U5D ap^obIiR$!:FXc,!$٫9y9vc*Ze,^"  Fr^9zџl{#a qޥ20>'ub<[MN ()ڥ;_sQ@Iz LsG d!o6x?wv^kO,XSdR!d!qm}O NsGןdd#V5a} 3mu8yr/=q6 >}e $B f Kᰙ~`!c1] {{m7Y oH:}'F::L'@g-G 7-¦f d&[S> ްstq6S.a]<5_Xs3i"U ]mf58uuBBȭ(Q]|g7p/F1 ֤!MkGsS>EIEupړ'f:$5q$]& ܰ;,7q2XV5_v'ӄuBB&%G Y!!!!;h@Yut3aoZ61Z`)Y_ 5+;)Z;X`ѣF^d|=yqDdn:;$@)$1=zgI%J 2Bu|eX_K1c}ϾGw"08;;& Hp[}`U-/`0fnQ!fё61W{z㱬'DQc1Q7æM,Il8o@Ou}<꼿_ӼE$DDD/5(HOl*Gmi[Ո=B]ƛgzY]U@[ %Ad5t6}H/&RLžpq4oG?"r9pۓ.+kqqjlHs0uf9&(_e0mb$Aw|m9ic$ʘ3OPlN-hZ2>=p|\f_'8NQPwydwο'x3ߌV] RĮ+yn|^:klrn;)҅-(+G(HzU*=p!&I*˚8S"7.dr ª҉e((lf`e2`sù.c=4P=dưuoMFFFFE ch6c1܍}tyhL$+ 3UdpTJ+ a;:e0uomt}/.˾?VHA8iɞ鴐-Ů AN ?^+0[Bk v1,dه$Dl^ゝޜcUHaOuãdHA;8$B4&Df .MRJwݶ1;8@Sh4U;&x[enԸ[R$`vWq0N'5Ҙ"d Qcu=F>rkazxe\;w5Lf P)i}I_mNJpsνݕ$ئ]UZX~-8YA*xDCC k.>f3jV&.lA 2L6"h80RFcOG ~|5%zL"s)+iQϝ.d5xo Crr9>=g@#1NFY<O+I5? O}m)|4,|#C3UЙ#T閭%hkwg˷3{|¼AiKOF\?4$2C)iLc>Y6h6h6hы&Ѵch6h6m6FѴmF1ch6h6c6h6h6h1h6mFѴmFьch6F1hѴmFѴmF6m6h1c1c1c61b}}w^tY*hD@Xot}Ѧ?lM|aTĞTQof=b)e̊r#<ٟ6&{W*" (zF1I7Ƽ!3ÎUy}f'zyόzMoeozļMou3 \ǤUg뷥3o~X\Lo +<>5[Ȕ쏾8Uzo /8E 0LmVEt~ 3x-Wza|QO%V+,œozf2.qU,wx[:.Rαq}$+l,{d̺f|ӏ'mLLR-4TZ{;lL8ҹþ#1{x;pf-YoO9sMpGl!""']k>:-EEhZ-DZ-<"r-hZ'ֹhֻ˭rhZ-Eh}1lEbϗ[,XEbŋ",Z-Z"hZ->Z->\E-hZ-DZ-EhZ"Ţŋ"ŋ,EbXXbŋE"""""""""""""""*qФa$/֌ךÃ!c( 2ԘUx+?E`߻li_ޠY3 [a:#2i$ .WwmMJ%m7DU_j"kڬV0L4| {o{G>CcxoNd# _\2' ;1iA;_cC̻|,Xn.Mrb L8닲~5q|xTz%A)s;gL6ͤID&_0P'3c4`{Cԃ@jv9#0>ydl*ť(3hIv{KNu:`Cە~p#X:)r9(7ٶϭ,>u#l\U[ 2aD3#Aazh //QdX?ԅt|'sDľ'srg` -xAE5KyRRHQe~-LѬ$Ҵ,B BٵK8%!t(lA3` _<%5ǯh27ibaUF]i^BilC;DpffvjcmŘ)-&JJ%rBM"dn @ufBBnXmZkWeFQe dFݟH(T $ Id~}I7#~%J*ɊoD4EI@ߗ}MbLA-ET V|?|Y!>ڇ/]ڟuCM6̯e  dEŠ𝾙?D>grf> ېƌ%gF0)"=U Afard~qؖG\-K3HY$}nNR*wXˏKSf =:r1c.\ ul40|o`!ؼgejmQ<$}<Y p RT2 S=jD1 PLWц0|W hqf;~8^6كqHoMCڧUd7"vmU~>h|nM 0?vۛؐ /8Y R 6Dij$$DZNM>8k89U})tk$Qݎ:Z@P+bg  sI@/sQx0[38RP$"UױtY/=|ӟ]^g`if+ZcSNMo '@XI(56-χdb-bVG}udzi,&aQ}NѸGBa7H!ϖB1DalM:HٝSgF839R؊(kiGfcWmdt3cS_}cgi kYYhcl;J0:% Bj|c?m \?pb]g;M8%R&v( Cgz8TI RLuB^ܝًfT$A[)ix€Wx7 ?&F$cr`x?*]\BH(Qd.jHn 2܄ӽuA$1%kk@ ʼn]ăD^k'|B ]g+bC#?yDKyB mSȿfh=hyŠtp,~Sl^rW4BߞKf|+,BI !ޚ}S={黿gN% A룯M< oqi?WVG^|ܟ ]]dehKvD4l VVȻb]ػ1L%|ѭ+u42tFrYwIp'OiHtBaXIʙlӑe\\b nX(~8n~-aqͰePƘBvt|]?0 O(,J"/&p7|RϘ~w ;g֮JĊk8bMV$\zaнT*=cCt6! Vj^_F9Ncs F:u{lI]J((+*EaChÓ͐/k`0“]>#B)כ&mdu9;,scx -,q_ >K!XLko;i2;|LvxӜ;!0﷏XgH1g)&A4N#5I(߇206 B*^V8Ss?("$8O1/'>+>.VJ:K":$!X@3nԞݷ95&Gx|h⒗7,8_+'5WDgq^<.atnG(oK=-vZRtyU]#F/ !,kU6pJYejgq\h]@t3sғig[IWP"NO|!2X+^G5:`OϨʱ3?l^^!oUc K*YE1^ 'Y];_``acjZj#H3kU#SUfjkVmVfl?=G\d#bBU,㮤FܹEhkS-\1nf6-Ujμ5m9.շKVHlwJnڍG*Vinmmܫ3k\Uhغlusj[lثZWZ7C8]w0nWj$[ A)h %B VFla`BR,Rى"&0A# 4 T K|>0#%r J%-%\.Tɂ &L(e$*; ,k0!UfQ3}ۄު5UIF@ YiN78{*jEz!z96UM=!6lKmDd?‘S"(2 z#9LWqnRO/9o IڲD2K#h['j$uR6 jG 08QH@JɅk_DJ/?`~X |Gghvl{7$TKζs~odY>̟p%}8sێ o6!{bYG2gE Z\B?N'@vө^p ~6@ӵAS @Ё{[>x;1pn02@vg^9`^1wqز|nDKnPtn^xwа3"s:AP#Wg{u2]w-.zBA2p:jMN/Y/(mrϗ*`83y~q/+ z21dZN)wKQ-rY3Yg}@&ۙ[%YY%nM7uNݱ|>Cd /A`|l/X0u/8LqoG&3@F./`Y~ff,pB0MHK։ kw͈Wt~v(kɷߺ5/M5`^/!3Y1뻉QzNʖ8NϒJA.:qtVO;`Hn7DcM奭~ X^xq3`LocrfwxD/ɏ'8إG\F;BsU/BV6$ZC9sϬXC5X%e8q@ l`}؆)nͱ9hZE,6:ލ0?ԕt:ǦӀnӁ]3x'JkqhJoe_VL*'v6%N܍8a]sC0,hv! [p˖v2`wxbhQA$%*ȑb?ЕbX{I -KdD$ ;A?iO<UJA|U J)\ 1Ώ=R0W5,Y(*IHRh ryF۪a7%,18MC+,O:"Th Mydv(v>#IrԍГ8n1MR +7Cñ$2-AIpN?p Iudӄø(=˰~rD緦A%fYp(ϙ&ʾ< ֐\ xšGR?9Qb$[֐DU'Võ43dzdrݽCH4MCfvjēc٬m@\# z]%ߦ'}yZ.Fw \*r&ʛg, VSMQQ粍KU&C#Yxhr5Z~ՌstbNQݩg4ۑSGF1w[a,iR x 6Q'؆h9Zv>2J+Qn6<<0" UNCt,vtjyT'/p('!2,a{gF;6Ǘ"M oa%B~FcgKkqӶ6Gl Jw- ,,j3j1i*g̮n#\q$a:WGQnA_WSp|riG  7S5t`$kF Bd)3H6 8ϖ|aVDZV3QƱvwzx"CcSνNUSŇSoΟWo-:{5W2F#S:_=bsz/C\csyY+nkddkf+ܫbԱ{Kܯe3)b*Mf?_yyy#Q訤(gY[8p-q<%-wћW~}渴c>Tv.uq|%Q/|sR5J$D b 9adɃe`"GɌr_?w0XT{fNNt#Rg|f,5վw"Pӓf*3uGw׼upÛ5)RwAyZ귿<#~iܞlcu^kOXL:2V |Qbnݱp]?ijvM(ҲXZv:XCeF<1{Kk[,q=acU7?gѤHKF*:۹ mXCQ訤2o-^a.i]9߅gCpc8#D^}5ڞe=j|c~vsr9'A''0#(rODJ-8&yo*q4"q$Ha3A;ɳÃ<8HxFnw;Iw7 oDg#F ,pȇ  ֈ=SQ95qC#P (9"% 6/F!IbT p.*L``@Esr&DǑ##K211(3$bw*p&9\Hr(D"d#$rG6Hz`sG 6w4v0`s0"$ dgy<#AT^DHFCEMdZ*^L4( AD,9#h scN80dey ֈyEJ9ĉ;2<FCxHBd9c(y8&PA`@E&Dlj#AС`&r0;țʛyiSB%LDX-"^"96*D"" D5-;EJ9ȉ31(dv(v547䈔*HؼqC&9Rb;6A9"f#;.ĠZ8`DؑS1bOP}cz`$rG-"Ø83,-"\dX1(Pr("C<2*H4<#ATh`HL#1d"b2- cQ1(T2df"0`r9ls" ;gET=kxa<9DŽeo 0ݶn)mcnŒ沴<8HxGmbw8o99X.c[\t4=sv9=S!$+t5)Fkվ~~sw/(Oߍ38d3ZG߈S$¾5s8No&&;eqz;0yv?3&iДAٹ/<133/2/25QSS3? o'?(=κpmS]B#)!7Zʲ#ڮhsrBi!OU=SRluQ ubOd7s a$S7aV<1_;lwj]$?aMpff(ڞ7Nz\yl&щWO4obBD'c}(jLǵ*}80σY+JҌ)jhaBdZ1Ywog'8=`(>u֫a㾶׾XimU](ps.Iu]Wsj\]};㾱3ҭ gǂs[wO[#O8xZ毭ֹҎD-o߾5O8/LJ6ZrcʧsG51ΝbfyB}j5)GMcW烚8v,rL`dIGs&#@":#*s]B;[lg^6Bz,q^]O{6M"@ފ(ѵ xD!#w!h>$iiIQ\|mcRA0ք7=ٱr.)HӤXq~;j]K'r>;,2Ʀ/Ål+ouw_4կ=lYw> 9~})LaL8YT)N87\).KⲙnOzs4j[ukNKl79d={d>=%1IO79}~5 <㜼mnsX\i<,+3\-V*tLiΒpr}fzӤeI~۷D*lkgaX| 0P~¿*wc> orS[UC#YwԃH=r?(_@l.nQ:u>m; 7= -(HMӀOGgτ~)s뢵 H- "A9)7Rʼn̲VNSWrI21h&:22`V[U%H[(a29# ÐfdWjߧN[ڧ2R &L ZDnqZxD@|'qTJ ȃEQn>[qDG@=?JE !<"D0sbUJUUW2ܘDJ4ElGܑs:Tҡ:~NoNO#ap6wM8gE@߶oҶl[![CC\؎*0i!iɋ,"iDM LS09J2̥ʙfXѻJP44ЄBc u4b 1`29G6c0p TF)7[5[̳zݻ,'% RXv3CJmyf6ififTޫ^k̩fifS*fT3L4ݻ]ifUoYi׬43L43L6ieL43L4fifS*fUWTʛinl X4ŀك81W@{ 䅄lq6\Uc1 " V11V+1$JJ"Q  żݺNMsnѦ+Li0"R%)L"p0 44*i1UÛM9a<8 SJ%)M*J٦91kq̭8 O&;1И&(1(O !(JIJ!E_^e2LYe2LS)2LyS)eLY2LS)e2Lom}9l333L4͛ze2̦YeLS)eLefS)e2̦S)e2L`CCBTUb9U±YeY\dԪNtڄNqQb D#;z]pCScsCCgwtr==ᓺn曥]]^ggf1ݻg   M:C#6Fލ˻<;z[P8k/#nFO~Ɗ{;89 *p ؃GI;y,k͒˅= 8.:k`0:좀5nf`b&S)匣r,E44:9Nclb2{w! k$1/.115//2$``\Lq2… NN'GGG'&Ř::88(QΌtIѩɱɡсrƄuiӣwwW'C3S˚wnջwfΏ.o.o/NNLqquuvnvnnN^\[1Ith%T].NRvt].KۥۥT5MST.n].MGD3Mt:N:N:Nd7Mwwwt7Mwdt]].9998nݻpq!n8sXŎOMEݛ ]\]\ۥ۽%Ӈ]:Kvt].K۷nKnݻvt]..ݻvtt].ݻvt].ݺ].ݻv۷Kۥ۷nݻv۷Kۥۥۥvۥtt].nKKKӧ'n$8wswnv۷vn˺t&/ON/Mۺ:7nݻw۷nݻw۷nݻv۷nݻvۍ۷nݻv۷nݻw۷nݻv۷nݻv۷nݻv۷nݻịꐆaNwwwgf۷un;It'It='fv휜\\[/OOOOOOOO/O-ޛnݻvmnͻwVޞ^^^^^^^ܜ\ۻ;;8yӐS5? Fv(̹쟂r :yyN\\Ӕջj:<;8pܹѱӳ 6lp-g G@6z8:>g@0pti{[1U?O(=M_t<_3lmfnٳji ATE!D,*7LJsrwXdgh 0RAY1'ds}g,CHm0,C63-ddW;X;=cxᑐ$|FFU2F>Lػv˘:zvxTU+##;SL@ 2H3Sgg7#VʩBA#܈Pq Mb<: ) PP|FEibpsṲ:#`nnbnl:5#>H҇kd" B?dչ?3ygG())Ecz%˷nܹr (`C1x8473`p@p5M^M>q#nlfldl:&n黹/Bchoh`,>+eʄ-U]oX`T3$0zA_{9̀n}iz)G341뵐Dq` 38 4?! ] ܀.=<>Ow>8Nw7LSWWWWWWWWGWgf黻M;npnrrrrrrrhfr\..\ݹwsCwv$)zAYON.rvvzwwzznhC2ytjXv7u~vFiLܹrN͞+Į pppbHR[_\Ngrrru|rKۗ.]2İ-yArbY12x778rsvq ޏ.]LɅ)&[1MZq458tl6Knzg8,D3"P P 9Aѓ\'2,VqR͚u3zlnd3H)t%B*욼PO- gw|7sG0b@`8坍ݟp;;b$yd, *$,AebȒXP% )U$Ǧw[;/ȸ;q.QZ'>x18=@%S6k3L4LfiflͶfieL3Lffi2mS4ʦk3L3LfTČ0ČH=FFf.rjSF%&DB[k]ӄrn9LR]]]]]]]]݃gdٌvvvvzyvw(.\8.r\͹ɩwgrqpl3 @bw''wwwwgwBAB( |}`=lؤ^DR X@CU@NT2b)Z'c5uX\=4y ,>1=@'5L{_:K,V33t|AWMl)^ie)qcpZD>K|CL?xy59S,I;ѷ&vȊpӣfԌu͢zf+?Xn;)˃ɩhɏ(?X4hK8 7V?!5LlnnX3c"dh5qW +dPJC3a#J t552 \`_fXz"0g!r]#D%@NM[#D͂⟑>-l|6Xg&Hri4F]G|M',ڑd{a?9NNNN٣"y:07<9>O-rKt6yyyyztn욺ݻwgFGGGFf\.p\乛əsswHpC 2872=nNe6^[g b̝UreF >+4tppD)*@K1U#L0F1")I`.]V˙'Cia'zM9eHaTc3姗G!c{6 +ǣNNM\]w)]dc{((c86g3':ɀ1G΄)ji(8ISIыDTN55zv666npppa hѣF ɓ&]MMGSW7sP ƭ0fxs/Zǥb}r=\Pމ:;#ulppw5s8<;{e;.mۗ.\˩H<3&[-rrreil2reGda/[rrrrimm6RA?p駣CW4-OdxL@  hSNnB zH Euuuusb:坈(ɆM  n`'Q5vسP6A h᭶Ifrm1@prϐxNX`-FF,P6C "fסL=PJYTR%lRɒɓ31cc94l3KХ066<K)rۻ<'Id9M[vvvvvvvwuuuutui:=:tttdtrntttjjtr\๱ѹjjݳd=n!pnѻww/gv(Npr\6tiFc#:m&QGJ&es|.\G}[ov&w n.t\&PtKwx<&x5~n~=Љ}gπwww13}d t ղ^R)`0߱sͱy磳po:9y@W-^HH444&NVi&-љl(#uO'Tɶ6Y [Kp`h<ɱ*#1H4tv523ucWT53L۹5M ~GNc֮H꒕@9=w%lf38cLCnxXwo,H@@(,1vû*֖m633,L֬332ͳ33S21E A_ZP `E'jrl߷Fjt\tN:N`9NSw4.8vvvnQENL͎Cptnrpdtnn\ԹѹO !Ã8''8ί/gOgvPiӂvzv;X#l;8;7=lKsmWZA(PTL\+B][cE:={"*8@xX`%^CP,07wEG 1~ŋח7;k]ckM۷.\ko,z1۬zbtrnrr5Ng'Gؠt^Tቋpph׬DSl;8<*cVή(5Q'@@^FB(ӻQC ggcc3fWTفDfa7z`3<7itݝ۱ֱ _gVA}͍KsNPB|ѱ$9P6Q0cCcQPvSQ\:9rH0= AL瑫Ûz}:{4'O.O)vήtyyynCsS3c..r4:uu.tlrDŽ7 qs sg!Ëw//-ۺ7npf†{۞]6#͂ <8<;H14m84lw ]!"0 50&JγiӒjT{d5*XF@wGvdnx99u9 >[XUt"d@=p%BLJx<="<Rx$AO2E(W;=cwD8f #XC xUrrrE8Mܝ]]f:7) M(vp::<4P!χwwwsc`6v ggccgg2>! <OOONOGGON*;Ggggggccf;8P#)$vPC=^n~LgCN^vw9 ("g53;ÑeqW}@K3;64ȧ-K¸P̂Nh 3`ZaN"YE-$1D R*mQJ>`v Pz OݓTtVN]7`_eNir䙖㢓ZH97tOB~Y6M'o?z|{:Jܞp,RHL6GT&ݾ;G4Q :Ou>*a@5/6|?~R66/2"10-@C#ydVl| p{ """" D"$DAXV14ҵ}rfOs7ciփr?[ <wX#&#'vR,ӱVKs8|mdf*]yXC\Ik]"48<]KӐHAfV+ el@ôr{UU4iDԞa 1` 4 ;N__tyM_莗Ƚ:d'Q?V|z]@˾ZsZ`m[I &OÇE<ȋތ_AqMBIg;vBgD "ID;v5tp&AH{"2w:Br3MN'aZ@c H0P@g,75d5~arM䷤;Bl#&CGv!a3/y>T# z}W4ެF4Ǎ,!&Rv@2G2OxtCu'ZLikS|$W*":b-}OISN1%/|;aV&ȉq;d[ܾtzH3/g'zB$iTƆӢ%K^/r4}~ZH݆vXHxX=C˜F1.{g,֝=Kqw[sW9M۟t zFkړleCFwݳƉ^3VNwDRGPxH$͟{b~yG87%&xFJ2[}_JOku!J찅bb0( 2BV:SA)hn7faloKqxY0rۇН:(7;alݵ}wY,C.-> ͵J;&^_7ϦbB=ۥ&v \_:+(2\0 LqWI]rߙW#OMn^60QlQ1+L>ۊ'=SO{Q%_ֿU,l) ?8'dŒ2P%i,wIYQNԇEOQtTjb;İ#)'^ {Qmqp\-C#c{3e?_OdsE\鯮ROb0)\:Z &7QNF,utoWʻcŜc*oVC(_E/یGV+|o=$ okaTAnVYZה,Dc2-AI)I$A,$"`k%"$Ƥ& 1 [%b7gѶs2Umv6)Bkڬ5DVA,Tɳ4)dMmlmm5-j(iQ[FFXܭyd[}Fbb B"IijQ*" +Y '?_CÕ-bn! 348!6AlچMm #dZxm)T3Zբ+r67o^zkjkPkMaaue62֭o'WYv̴F KP6@KUA$U%9ZdnSq1D⤓jq&8&Uj &`XN7ĉ9$T#d ĚYa$H-@;P)qpK}߱][ׇw>Wr4?s#\/nHFaU 3D6S IԸ])C,Oq_GÖG/w!V" ?C?i(1ViNc33S~OMt]d9N]fݝ\hsCcCssSSs9 9 :769u7.\E<=::8:5.jvN ` 8nW Vӂu+%\hn'B(QTU"J"%v Q;;;:!+Q−"vN;;;`04::: b C&nb 0ͧ7#P`G`鳳p&!>4(էWC@rHT}T;glv)1)JU4 R '?Dy:9Ii.21 0,ef'<M0azc$l(~>ᬏP RJ L3EuO>gf0e JHV4;))8xxwq)~baM |;'dusPA,AMO 9O&;Z}4CPjC{v@`}J `x9;&۬ ;&@f#zmAQ6 yIM܃I";1O!vmqԊ5µ-)c P0⯞uNzz;X铣8|S/@L8Qk(_Ț'_9ū/*ʚ9kSy8lYƱkA bFzxQ)}y̧I$H?2 ɢv-ӑan3Ӱf"rcՌR8aXJbQ%?%&]լAjŘ1dH'7\ 1ӽ;gDZixOyP1d3 O $U" O7]ؤLSpE?cmph㔡aIwuuCSvOOOIttttttttttuMSwWf;;;;= R'g^Y0sBtKTОo)5@;tCs,˻I$$z%ٳа.L`=U*MI$$!2(>(-l`; 8+u?I$!B/t9|w'IAӽr}<#HTLh[ ˮd5ewH7Br$ M-2黿N$dHfʖbeSiE|܈5JWb-a~?vv'8G_}O%z0qPI7.7J3wI$k7 c64tqp;rꑯ l??Z;bX[濄7_[zw7Jr N͆ɫ)9 ci'wnK tr:zN^:M;1OO/NG'F!\97 MM;F/ !N̷#Y܀ XSd;wppnͻwFb'N'J1Z")!NSrJ;"ADfӛQrB9d0 75䠄 @ 5 ggYuNG`ȝI'CiXvEDRM ͤɊ$5nw*Q$e^:zJzz^^q@\uSw7uQ,%UG10H`AX w%`hCC2oӢ|M CP!3 ǓX~3&ZYYʶbrÅ̊lf&rI?^HRjKOŚѼdd]ny揓.BBHީ{yܿVEufG5o]ݞ״ꝒNIQ:~p;,؍9u\o!0R8œ QG(=>[|3? /BdSN? QDOR$rE5dS;7D#rT7tuRSkQqWq#xnRHAᨧH@O@R!R92`_8!lqv9ڣ5pI]E.;bٗ(L$[=KSzw[=>Nk%kFmvduh"<{NLMt$^A;;:]L^8|hn833h&iNebK6MMtpAS{:ljOW%ۉSBKm"Bd>GpDzknA8pp|)ޔ*{UYVUeYD4N41?6lJy)m7AxaHɘX-#8]y(,wqE(:V&.`MMu֣SޟZ<kӷ~r*$ TO?RX>:Mͮ?0g&BH0OLC;%=|Oԣ^ 8]NW_t>)};UQUӅ0)Icjӕǃ%;7S(Nt"g7HBNNAA8jֶܠؤ1~} ~P3uǀwmk}ʱ*>k5cFqw[҂Nҡ't.@_ڔp!SL#c#GS?]:N黳gt,&I]l::6y769288789247C\.6nl\姗vgqXfbhlpX(iw7a:M̙2dɔduvS.FigΎ#0##0buM tl:9JYVUH:Ng99'tL70&AL\Hjq,YYu&34%XI&Ӕټr&䲑YlG44i3w! ~[8y$MӬI:<|Ob(|tvŐs9 RN#I%C$OAEK#knyzaDŽ<>Ó<9A\4vtbF$H A"{&t}f-V1#SRŖ,n4HƓ$3w7w $cbF$dͤYC܇y9y@<$J&38CJC T`,ƈ=_9=_8".P~<}SR[*&HI2GezѠ 72A,+wwvq]X,, Pޗg<ɷ (x]eJezm͟:&^2'٧~Y?@?D۟raMssRe,l'~H?R/'Dѻ89Ozn7DD$bF$bF$nl92]:xNg0wN\][4б'&6lG!r:;$ܹsR&;;:l;g'R:lݻr)`6u',D4VIÀj4lhs d,Nnnm3'$J\Ftl"*&`6vt( [p%)5usQ{;bnn;9@v!˩gd< $K$rI$nI$;גI%$K~mQQQQQmEETT[QmEEETTTTTTTTTT[mmEEEETTTTTTT[U[QmEEEEEEETT[mmVUUUUUUUUUUU[UUUUVUmUUU[UUUTUUW;"""""""""""""""""""""""""""""""""""""""""""""""""""""""";mEEEEETTTTTTTTTTTT[mEEEE""""""""""""" Ȉ)ih"("("(")h"(")h")hZ"("("("(")ih")h"("(")h"(RZRDIDI$DI!"(Z"(")h"("wDEutDDD]w("(Z")iiih",EutDDD]w]wEtDDDDEut\)hZ")iih")h")h"]]]DEuurDDDDDDDDDDDZZZ"(")W]u]!%$wu[I$I$I$I$I$I$I$I$I$I#]興""""I$..H:興J`ntܧO1u5v))nu7L'{C_1Uʢ"= {QG2ɠSOG㸃cwp3)DGl\$[.b8# ]diF D~O>{75[eRg$'?sFQѡ6n$E=}Okl^UaKj~) ~%~6?AfcETRf=A*E") rq?!N ?a b(_#'\B~}ð K:66j]!! BZMVA-EB*q$C;P)85$}^Ķq{&D6)ݒ8|`Os؈qq:̓~oxȡPIϏ'?_?.sU^ns歷y闲ws­ּ6xhj)ŕ0SdЫ58g~lRQlY9␆Բփhrfj7Y 4s,'ϝ]r $74= 4(7^&p HRD<̏\I~$J myEktثqk⒩凐;ڼAų"YO'IbzC>\9DCPsTr xR>R'@~?DV)h`?;wDs#"P:0T('1țu%RʶX#mJN5"KTA;8*IlHL Lg~T4L>- 0ن!#$7߉NH \[Lnhdb8i###E+\8\8t0YJ)d槑ȋ}g?2"ŚKC]o AAM ǤDcǦs#K![J&MEzb3|!I EpDm*5Z:Y6`7OauJ$S$&owVcU2RF-Z:z6 2?WI%$' x9s{w6rH򳀿Á~O,&tL+mswE_!ʄz{)`4D+`Wh?K7\RwMOj"BĨU۾&Y'8G EQ8sL<~;n /C=;0R ?ӗPz\ krGll &%(&"xzk? W@=ǘ#PҘ}m%],A /y19xG篇鬷 }i;g]HG9;>}ж Fe6 (.o|QhV"Gw w_s5AKKHVi'{SQ)BUf)wsL2"`95’ M4.I?MwX釘6l=p63^4Q Gs(_*lMa+q]4MkW3+T+(XzcW=lO/_q8j'IPm;>}u4ś[)}:Nӷt FbI~UFh=0=D^K;mI$w#?uUL!ڎ hnto>XV AQh~jٟH?3$s$yɺ;,+u~.갟#J_50T6"Lm*lD #^=WSwa7kጇ̳>YQ'hՌ]LYqZ'Ė@bR#-% ]6My[淛s @a%?`m{;,rv֮qUQ! `9^3vhs>12~$62`3r&\<{OO|>_M"avٓt%e˻G0 KDE.HB21b=gN~@p؄ *$]GzuL_,L,iv&C=Ӎ|h_;:Q"7Os78")r,DqQUfjDh*4ڪM"dݶ&$Cca(M囂xTB I-KXI'wC9,YP̖uT!.0ey J)oYOsam/*qI@)mĵNIeuvWMn|EON7VgiDҝW,NF6DI7`̀I#dq80M^l,}϶JRv]N#ԞOAD5v{9CZ/4@['&dM400CEKx͏ T6o*żL8폳Ff;<'2yHtD,iRb.**!:2B8y288"zR,K@H{qB&2IN?`nhS\L]x2\0O}4)oTbO.$MFU}KJ̧d{"7O̕ DvG؝ӁR'wH'YF>1 Av 6WW`ˈQ`(0 ~`CsAB< g/,)}xOVR]vzade)7&8'9=}׬pb_4h&n؏~Ł_7gEUIB!lX?|&+Q& 60 pI-4蠒wIhxwYM3HS ׉$椒I$لX;92%/0 ơ@n9+M|b@(5[X36Ytsϔ)NIDi%%; yt"!Y-if4LL PE"8UTHh$n&9!ߩJ\] f7 q':*i6ܵ2;f+(n( ICٞy|H"Iu >hNkP=M-!l,&D-Q!XܔgcOޫ'Xo8?w>+Ȕd|H.An'v[ j<'z< Sٳbrܠ2slQYI%O,j 'dH0ѱrQM!-Hh,2 a&-m2 )⒭>=Nb"tx]%+]ԑC:Li~3Im StmsMKv+Nx٥ü6YLv>!kڠy>d}v}I,!dC+~ su-s*N ŒC}v*pc"~q5*^lnx,Y$9gX,moc),T H_gܚTӄ "@lD>{ NӪG;@ȅ=@ l\9Cɐ>d >&(#4*A:J _xR/+ka>o+3UJW3_d]9SmjHBJaŸo蓋(## hAv6=.HHHy|82xSe 340wz5::S܀p$+,'Т,' ű-o@SmdHCOGeȎ.7v#&9ęXJlB)1mUUU8dy>HW"ZT)FFg [w 3`>l{`MOg^@A<$PbC\R&q \`ʳ {8`sv8_9sPRId,Y)K2z^˨P4RqbǦ poлxknn'e?2s=|ޣch:=~qzJSAS딟TmHQ?5ll~{}΍4>@n &ٍ%Gqyt1#~<;HR(I$00yyPb?]GŲ[-B"`(0IPR'@Bf%)pb!nGKa0QVuU #}aˈ 6"1f=@&kbɀKsw*ޤAp[3]ŭdz5T9ȧ~{ޫo;}:o^r0;63 d`Wl2[0PcNGhP+#3Fݥo9Y2}?Mo_&Ҿ_KC,_I(Y Sa͇., RhF,3@Ք/oZROKNE?4Ev0qdAd]8O77s<6$4AdmV?j֓|!y njuJbȥ"M2mPᲘO)d<1UB%* @J&q/gv{~{Www33s30AI$AW ?UUUUoGW1(2(imxvG\AW,b),i5%#QUamYUXXz5vȞdXZ$[x|5>uqcD^Ntw%KնuKAY vu^ 90LbGt ֱ~6Bfg'T^4ZZ[ih5`.m>"b@,E/ dF wI%myFoċqWvG-"eOw]m FK{kx48wrwkvoǓ l69_ y{wH^x O7ם^ ( 3m_w<'}&|jڒJ@7>ޣ:3ߢzIeU,jG-Ғe;cn|ph)jZ})&Ԣ"!h4kwݛհ&Sђw}N?\Q?IO;!IDh?OlAuzy,=UgΏؐ_˻=3bc`#>1݁2Iv $qNQoU+-fJK1Vj +im,(>l}m?,;gM~$ D!A4ҫM.ٶoV'Z~ j!KGʔ $Af\y!Ð=na U/{~{ <֗C8grGcT{z'Hr7RV>pe83,7 ?ϽxNwS1PNw/ 'ob %Sz ?n,M8X;E8 ,'aʦaBBC!7#9oGȒmmW jۈ; XGl9dԓQ$Hۋm6fQ%^z>K6  0ȸ,We[QX=SiH_J`KrXR.&!`Ioa b Hp}~@YLX'?Tʽ;YBhc$=C&DŽ{؂BHHb* rM; @AҘY7GCYǹ=C~Ä{eB# (EGW!u`&鋭M?%)iu-?Hs r] FfՅH1ft- H,X'hVw Iǣ7/&qx%%g]"!Bifpjw #هE[YQZtg8k{Ha2-C;] l j/\ȶ?p"v*]t$N’p'-!9]wWu?;Xo8d?#sMC}1n:?T?_}1"owYcm7$3v<12uv;ͻG"oA6gܦxfAh"c{ p kF0%`QԢd9.l:WxiBv{J"60 Lnp:)K ,Q{*]g|)^{~E,spJL7Ԭc Zk/iԸB5Ākt,Q3v BYEb0&OrC}O}ЄB"DUTDDDDWwJ[mUnOd'CP%w'?$?ᾝ/uiy`>H"?Q, I:'; YpжU m/^sO~#,A0k8&V~`E;?ZsӕtF!?*UQE"?Jlp7g p22AmoGE*C!<&4zo Q苡YI׺fga Nhxnp#M؞3Bݧ*ھRGXUE;͈#^aRڥQbbܬmHݰ9:w^;97;!8;ݓ9 2h+Eva6>3MqmLqp-P^ ! ! "miyݽMۡ%s3IS(LyCC#`#7/LC1O'bf!#sdd MvN&*T X\I Q;:@Ep1;m@&tbLulVrۑ~$'ӫw Sa=v2xZv<'UAƀXmF*blC/kc1ʪ¼ &:Rb]{vHq*GzӵTgwC]r$btiq?Q?OQ;6veg5UmUHB\;@5wKx&f+(("($I(QEUUEW;! Id/2PN<!)67!\lfVSsyv94N& [*dه}Z#pIy$09@I U!Z#ZБnm&@I Nw숊 {|$ $L$z h 1n3$s'TjyȓE"-wV.\v7'ݽ)(vڪI HHā$?ď1=Q)l?p""""::$꾖%ƴkbQ("$J%lγ2ۓJUfi~Y֡:&=&fDh$JGTS{|qlOm*clTY9A EHEEfT>q,DdE d@FÉ >~u0MkZ͋8O}Or6BtlŰ!,pi&6N~&UKo(@Jecl.IE2TU+8-dh2) )&#  <F,,}82HXT(IE((E!B'`? $?j9BHIskKsF҉DRJZGVDUbacdhXE1OYeDȢXQsHNo-pI#x{jWW׽jVRՄ(l?< vl9~A(5dO}ĥKC=1k2$D1% e}Y+*Q:@- V8':$z!V~$zm_"r7J O|w}JeU,fɊ`HdR(A,RFSAV%=5֯+EtMt[t\(+Fe*;$5KFnTZ>LèΖQr}MFۘ9d IjYL5m/ !)ĶK K)*IChwǺG-:5[' B'q֢4(t^[DG]q"88Off$ pRY'm66TxpnT g=j+i('E{ dٱ>2\b`q)_pVk#z/, 伵JF&BAAT>h/ -O&ϘL 1 ~( $|<?TZ'?|Rz1[_ e I-lͫ%R;)Iyy޼4^:lnW ZI,fRn\):ݍtY*\W]e)WxݾDXoNN=ZO1e6Ֆkm1-ٱ"2RRbA꼵hs[`?Xȩ\i)sd~-. hS冷qaEW1Hn6[%Ԉ"R*0# hY*ZRM&tNyt{O"cBRc2ኤS?^_~e'2MEڲ*_H, yX@x" |ݏ#?Ώ*E;,s! ÂYWtd >Qÿ}A~!J杩K(d|VҢBrl5֟i}~RSUio~zzjcվY5VuCdī> UlR2 ae)4b *؄ШĦ.סٿ|os32&ȩX>SujEYTR@Ŀg섊1=T@#רS$!]'%ڛ/%W7Us&-{>}+_("B~fj6&E*7ahyzO֯l/lR>[Zi 02*VURIk>Zp Z{ËKU,6X[gjࡊX; {\j3&ӓ)o^ќO: t/e$DT`vKB* YU]Qb,F6l)|mq(86P5ܓYնVOdlq7b$#ZhiQ\k*mMjDrϹqRT&ɐ>=I l= (*úR}`0=~i|$wϥ pc(?oUQpd`'~w,$?ԞkRH("myzsEpoݶ7 _j#OTCv׬ԅbH 8JoI;)8'xb~WS_+,T;s:MoQGnK˶ v>+& al(O].} c!Χ-L%}U !z{[nmb"Y$B#2+8)=S [LQpt_\<lIN~ڵ s\bmP".Y9BW5UAS(vS6u|΋SwTu`1y*EH%S . DDe5Ea$ iYDeA\\1cE#vj;Zc0O{,V`w ə YЂ؊P׻8f7X=2tGr7/זꃛde,ڒ#4PHzj (q(7nSJLU7zdK -mI!CrOI$IA??ffʝ>=G=QEH5 4T<A7j@1A"eICa9"lEd+{ ,HdXDfӃZXjh$200 AŠd l1q1+PrmrS h`|C[dIl \>ĭ>J,GzF9TZ;2'pA'ħ@а $IMRյg@uoo޿c۩hHv~Ś3kUi d'nz_v􅟲~y3>đ!s,{[R仮IӺmۥ,zZ:rM0eZzJԦœEMm= u[ki[+ad`I$Q&DD?x T=04EQd–Z""!lOfz*P{ϱߗ3UrLS! HIy\N$>a(yDEq$waুQ(wTAiQ{vüG׶'B)I%"47(ӚvxPXXsRߝ|EdhBR)Yf盝9Ե˨!-Eٹ6): ̀G50?ǰRK)TZRIV"I(tuG4ׅToKZ4?p"[wuΦpSSfoҐp4dA|  |P  Ү0e']&jҼxSaXF3D:$>v.TZ-Pmft4RZ,6;l=y<(= 9`;õz 9b=~s:ߑɪ3 zOs᧗vNi)mssel%l?RʋAbbr`D`,io{ƳMU$y>m>[+6%S,XCf%3 !h*R%JmRmv-ԚTjZX5=6!DqhbP Z!QrUpzjJ2)2^[K{z7DhjJĈP &@" $F+Vİ 6FJM8ioA@G vScFp9!CS'Rӊ$u# $&Ϋ:K PYR-MVkKd%!Ӿ:, afgPe) \h7-JwjxR%{Sž6>joyuow5o{;v-%=ԪcH2% 2f$d)C6X4ɌBp4ДIOU}F؊03Ra1b.ÏVkMxQ5)$#*'|߷z|'~{sSt2 G(s w "0Dr*"#!\9L#IRv!M(2TJ1"`β?s rSVM#$"9rJC$8pr@9FDl Ќ2hQB4l9'Bޓ=Dz~_x|K~۰"{:8/ T a81ÐM8"uO3n(C͐fss8Q\9+XņpgXO̤ZK, Bv笲E9ݳS%KOSϘNYnUohs )u;KIcjn&c_\Mq/鲣U5sMvXtm5 L ASd9,ja4oKcr]q6 $84iӹx3YiGVe%i5XANFRd*2ȧ3~auYi6MczdXOkǤ$yV s6 )RL{rOCV|>7ͣ|xq0l#waL21C~-# > a$ccp%R+RXWMC!BO!+,(,k^m3o=zcDвhQ1l:]4ͫeԯ/.5[ȏ;ZJj^$|3I/b"! X:}L"`) ClENT!3W#LM\i-YdK,?8NiQAY6~aU냬oJt|U[,mafɤmGupO^Iz&=K$DDZZ-;ޞ d=S9I5АZ9MĎ旳7 J1h0a4(&uE0ID${l?&. HbJa~0Oae}! 3Gh+T,BDδm- gUQ#a@Cr"pĝ^<\)[.6э[h|$du,͞IRZֵQ$>泳IBo)L)skT9ؔH5#>&6tGRA(;:*g#Ke_vtJiÍYso9 'Y:`~T-3~bNٲX [9!28 ) rDH tA#1˳2 !!Wpfbp`Q]I9GAb,oa"֘c a .-D=Q-lhN06q 68m3*;M&|p'bhT)$$#'h殝H3 )1ֹ&([F'"5S$d$$!ZNTćg^C'RB53Lô!e˗J;Q0flq]7*{8QgzPyfYO`Ņ#-T:lE,#l}æL0Z E&P0Qj&ۺtm`H4#sNqKmg+:IMyaA4w;eN'.ݸ9g9@M #}Rl0=lfkvnf3Ҟ)1MV)F0Be#pclaBtڱKQCZ996<>=Je0x ;eؗ#Gĸc^`fLPes{Tc2t;h;3XV![$;9%ܷ˿v;u0G):Ewqr+\:EknUٌlt1d^,Қ]mX>4 ߷I!a捼fGm1C7U&iָ)YM,a$1#tJ-0O-:\ M8Aݵ9ޛF{rly7zj5i ?]n':1˗ݹ0:3%!FuPݘ/cD:uOlSυ.J_* MY`ewShտl+|j/5t9 d@tw0z(+ 2[vW]:^ )ZfG \ng'2ɡ eiMz0v$BA8ܴG{l6rn;+ڼlȘzI9R(^.!]<ҡg#vL,eκZ[ ҅OfӼmN̜nf]ܚ7yw$``G<@w1N1XAI 7/$y|1]g# u;0pw6=#OsKM\楹nCvvo͝wllrwE`ߞ#}j0OB~Ύ5߁.K`rcH[%P!7 ñ/+1Ǚ뭓uPuJTfo.b($&+ DWU48[&ڵ~VLx*p(q]xxgx&-f\TY)0"B 9 G6@E`Ft"8Q̺⹜,T55oF3>LŮ'q9X8XAFI0,HAg!!l` X (H( $$ٳѐ(٠&Ml ffCQA X 9,$LfO*0.#Vi’3c#{&-aQs@LJ >f6k.IR);FEn%j-3uuT kSV`Fb:U'ZOu)2iX:]&gy[vNc(,T Y%|JhEcC qepQVmv̫/Zƨ$Q B4S`bEp*ImÆY0h0ʯ)TH5?m#OHQ czr6*b>(jHK2.o{ z!wi׹FsZ4YPXcB]"qԐ;8ZmY;9 : f4XtɗIHg^xzo n['s֋1 thb[\wH bS77P ɊBd -'#ѶhwI, LL40! U͒IYlIY\zLNKhGWz+!l#nX R8Bm昏c0-a刓 3tB&!emy(SFA bV*)dKp{Qz6t?Ÿ֖J[nnZSZQ4z\uz~L[^rvᲵ&F* f"ԕ.k %jyĵ9qUm-$WXTh_ŽaP4*bw)8\ 31`wnTRvd勆C>"LS~Lk4XÃN̲CFyG ;b')CƠt$V<,Vja=3a!He"n U1T0> &Nzx97x{gLغf| /N J:6Al΅ jыI P5JDyc$7b8-kpSÝ!=(ƹ,@·,1T Qy6 cͻ9Tg8R}d5ds@(EOc3m{3Ot _JXUmZuGE<kml9CҎo:vd(cӇvk-! H8f8K!M&ͯF i>]dֿrLL6w|sxu/ 2Z@KHuSť (U) FJ,AbPH(YO$C a,ZP e $((!91P)H4RK`1eLE6J5)lNScY $kFJSmVnv-*9UK^i6&%3p]㳙)m ֆEZ~i84i$BQ@4gx^ cޚy, %*_:Zje6iJVV=Qӏ15tQҝkMJI|[;mUoVͷ*.g4Q|=^B|pOX!ċfhٛ55+֩>*wR_6lAxq*E8}Y RPŶFMmؙ6fΤ;n׀nX&+liѥ6R͙d6Rٌ[Vmm)91Hɯe]OzLňϬ,`oGܒ_r b7()X xɰid?4 o ;!ghZK)9 9Q:z2M GȖ% M+&)Dk")BJ Ā%C J6*@0zvCuQXFmmBO?HG2}5'vG+NGlKX^k&ZlB` N955fiߣl#zM&CZEU$R988-BD)ņ?ʈid9 &NRM[V-["BҤQ??CJ&,EYd2$K=olm2G&*&2N]EdCث1f}`Y |ܤ<`%-U-Q#Kq"t&6B?0Y8扠j2 + |n =n\rmBh'OA$WIQU+_i_砢d$HTUeYj=wk'{iZcB67ֱ UDIkVcՌE!q{TvhJqaōY6s#ko$φ0~u(Z i$%tIݼaEB1.F QscV&fgB,ȂD.`s A09F$$ !F%Kz;{ZRbHxߕcݼ'$,˚]ij&l٭Jv˛9NCdL>ZG*L$:=ppC~BIpS C0ͧ!2qpMC  oB.WgD(?9XbAVe`_49ë ( IVjt~ TŋqCV/-mKk2zl;PoS)$I$RJR|'Z[$*߮k!m]V̷6vGl-c[6Vh[ZP7,dl|ec=9d1KXOl)iӉ-)ZAl+ /SIŋ,PhY{elkJ;e "E$fL,WEz : < 7Q,)&Җ՜}fd,J=y1d>SJ[%U$OtR!I}lVj{[pʨv! B-mRƢ(9L'[ZЖG\5Wd"AF*+C BEc"F=TMƔ XR4J5 f IWurdۛdE H bL4Rs{ ETY2K'Ib4̩b#;F@I[+kul҃#\;<#`(i2C(c U  ngD> -hrE$=:_.)ȱQlT[]ZDa-fn(`"(L ¨qxdD7G- fdZ|*d,,T#vhlZS]9}(䚏C\-}U߿:)c_.$WӋx_z=MZLSJWzЦFYLI)QB6m2ii&kch A|{eo{󔡃# t%!Q|7|?zC{y]"ߚiSDKR}l9{DRry]׫κzefwL_]ww&Q%&RA MGWO [m*`vR܃e,8IݫXI\+袨Ii_1 &PRBA2I}FЌj YZLgy]F,"znѢi-o%?D>b-K&$ ` J SL-3Je%X%be^٦L2$LyO"қhkkRB !K'("Y"~'_a>Eۛy9m]K%IR$uQ]J5`A E,$XK dH"Ғ942"5g tĖ3lѵ,}WŐ@*Qf dMT6G+?:~{>UW5^C/_ o4¤JD*[mX͛?os7]d}]ʾϞ4RU`ǣDEzNnhȧR@?8',@H\'ih('ϒDM}nW=#F"{bL `W50ګ-&4 " ] VaF(ͅ UX" .Ҭs@\Y>*e6R(PΰB$pdCiwbظXƫS,fIF5*5))q.Nӗ&dTW;;ߵg?Tӽ5 ?E_m?[YvVow6DU|^[C(WoL my@98,&٩ V[C;}2i0r~! g/S?:pK('r$MC $ԙ8-FL|%0SX&#TQLse7%9gIq`Es~֣fC$wK#Oޯ}>dq\au}CsM})Sⶱ)F* _>C'/2HDş]cWv/Wu#0Ԙua[~Y$`jd@vWRzk$T<;4['/!* J#$ɬ &235̰7Ӈ!wb'sGc|ʲaR$>%%WѵMEk\ܭ\hջMj5ȝИę5QsDdedj'/ߵSdIԓ[FAHKc2YU!O 0>BFB QK64kWkR[3#KK$†E Qv-|_6α\31  D <Q%?oSZ5+oktUu(GV`is""~5ミXrzU5?FRh@YRٶS)HTp_IZRؒNo(v1 4]FIEjEp7XBm^eNа)r2B ]te%XЂc{]I,뤟=mQhJS;LcPc J0m§d(Ynu!2aF<ㅇ7.xF!HHxٯͼ́Xǃ4n@# XCB٤2K"S"D#% `"J UM4H8 R)dR1HR,!mMIEel,ڒ%KImMiV6BEȊREZΔ!DUXK g pHB) B#L@2S,hSWB)x*1"` -П'N-g#~vvJY!i(yO". y~9&>r tYש0>{$eI=sl`i g9gzEWe<0EE5b{&H@d=܄! $ eK[ PBq Mym$44Syf8R/h*a Up5ݐoဵ9PY-FBǜE uaP.-)ybvFGA{:G6Kß1HBm S 0@c1<K'CBO ɓ& K0Ӳ{ybb% DJ%)Æ jׇ||Bϓ&)@ZT)`Zq=bcmɘ[m J6suMm' niEm,֙#6-q7>rgӛ{fEb9_bF){ A66cp 3@(j 4ALǖPLOt>_~8ye\tG]2b֏۰b~g/)߇yٓy~e*Ņ*#K&RZҟB9K|H[iсLȓ}v{elcM6Re ,`k5I2 Pk:W7B*  )BȔ8A,Ɖ&ȫDp,2~Qn17gf'alJJL(ڳ5)Y[bNa=GǢom_Ai)A{[wyU2]0)="*$L/5kqhjQmb{;'x5! Œx> l,CHo6bWH* S`GܛodyTo+ xN.`D*1)W@lv! CqJE _XҌHH#!"n #&Ѡ|p^CǓm9) }GE9Y;w_JpEil6ڒR"f!&Q!ä7oǫwpIgS{xDWuv4nФI&f]o3~Vp 6;n (碥] uHJJX%(z3(cN{GBb';~ˌoV`*w!1 7^ wP`,hYmE{{x@{Ò멇[Ї߮_R*HQk~rYHF-LkP mY(% ֜cMX"*TYMnݪT[eLͿ7v זLjS"hR|Og@{16ok^T7bƘɧ:f%-%ͱ̪X D-)@ ieUUO}#)\8R(d7Um, O_>bV°>0< ޒZI@,/L@ .e7|_M &Kk&Ec@jx"XF 9?^ %YdjFN׍ˑ˝˓EꝉðL]RKuv椳us`dhݵ5W.kYftEW-cU.Dʌ4xCnL(6A954E@BDzI>C~I5 *B '<匋# RHX#M/|@t xrb !}*6x,q,$ xcɇbv,M'>5O7 /?y~lhki5s HV1Q>DB僐Hi*'@!Xp,XOJMkfBDLM*7sluq8S-76 a7ȪjbYPNX+ԻMMcS9NiKLcFuR#ֆ6(^T9r=t8̸̢Y7k:rk'RmY8PEt3#ziW (3ҋR[坋.zJ+r28cY:.S@JkDJk,YuS|`igЖ8 2' dxj=ϭXRo\[>ȍ_NR=ϓ̇1GEw'|F"X48!BQ(Pš '/- =wOVu@[fҹ\&Ճ+%ӻ.W/8^rJ)C"ۚk%)i&1Tц*Ub VֆƁ5- kNdX~pLΘk)Q5KhJK$$FΤi͏SAr]T`@*tv`J,l&MZuo~}+,?yi?':vpxCc"Gp4iG@lU]WY{j]1"Њ"'S1E|kPLH~ 59J+4N3jhnzl-.@Y!ua%Pj[,&wfPˎUjo(IJJ"DA"3tc,A ڴ9VJXK$0hhJF{N2IIk , *D[9VZ[Wo[za&14alZMhLJiM(ҵ7U_SqFن@L6B$Fou cim4V"$0fk<ќ͝[fY-[$J$h"Iy?1ɅB5ZFSvHIdW7` p 9 "X[dղ\b 1+;,@*CU-SNj{TvB!겝* XL"5[,eKfLm-$*H2,mZ՚mPؖZfVѬ[hֵY#jڷKmZkHER,Y&`8Z+$;(l!ߧ0_gTI%UU%RVh2 d 8%,kTͶR)f(1,bѐΣS sb > /I`cR2Sz??$~zP "/Ř]🗑m?X#|S_ӁV>.m"9St)4B}hR^5!K??6.[Tڶ9< ?'JC閬$a&zj2/fg&)WQ)-ӣ`HFgđFj覐 f BK/uyi%VnܧNme]eyųȒ $)IsPXRPbĥjՃͷ)vQMwVZad1B" iջ'I9R:YԕEִ5 ic-vSQ-wVMT׉M@^7i&(޼ݳc[s>}rz 27 QdL&RBekJllF̶W]gzoKz]ԭfT٢SnݷkvkR#Q2,RU^]y&, K%i El ~ Kb!QdX ֯m6ɭYj[1+Mz&G'VIb冂X(TJ Y"2,mR2Ot5qI*s%T*VI&(螷BA]Dp V斕4Q͒OWʛRpk~"ذ)+E#'ENl宵hU*VX"j7.'D>·,8{g_mek5bQ3Xq\mKΦ`3)t΋"ԡ!ZymEEK]-/$Zݗ.\R&*8pY&W{c [hL2ST9&?pv eUE(TxI IOf?wXB0C?@үeiU+=K a4#IdQҼҗ,󢠴،Ŷm濇%ڽC=C!elTY>oJXYJY!QW`v$2%mæBB Rd-1;fRƤ>Wh4'*wG Ԏ句YgNbm\ҌZVObO2Z*=w4Y#5DP$m/|&l-(ZB <>=og {ÝhU%i2j>I O=>&g~W> J ~gk奯U$l@D M5`ͱM lM&ŭԂdm-eVYV,\.59ߊ+Lɍe||]1yfS)՗j&`SK$% j|kcCAd&LJIJJY"R+6Mv}=ukbm6td }D),aNl=ܤMzk13FM\slDI27v* A M]̱̊]\IC+ m)I+$dF"#$lK  \6 os};뜱F, ɑVDe'4(Ud$1Qe0 DYIR%%kE$B=e+wkp5x` pJ "'VԐc# Eb!l6Xm)JY;kϤij#W@Uwj4lZS"0 8V ?!TIFf1ZRY|(ծiцj+R)E6VШjTlXJ`Jk+۷ie3-6,jҚMn,--K+l֒ڍM!mREBȒB;lqVE6gg"F|'4 H%ҁ7ыn1Щ$`D |Mibr"@}>a cXQڬr F dDB@=@MXؒޯ]snjʖTq7]̠29I`"YJ1?:n#)piFrÒsr41Ԧ)!Oc9f꼬M,# I@9)aCչt񦼵7UEnޞޕb5pmt1l5iJtBo?wym\ۄЛz]s[)((q( JK:[|^gSb>_.ɋuU- [BY)CDd%qM 'Dn7oZ+ndJl͉[{jkeU6I梔~4|W>.ۧr3M3#nݭqmw\sYHjMfUVQ&3d5f=5D=2))xV43VFYwZ U~_$K͚QRFjDen$n]5Ҙ‚45FpF}QK;?<IcD9$HEod$ѵMq]ܔgaxZ]'6U doeOZ.5*"2Br/v F~O '~$$-C4IV V$;_k2MX2i2fITƾ_%0TnC`#*"TFNȇz>$B,0p\0.>yvt>pN'ߢ H3لz5l7jlUv۾9M3jm֗FNdF%JJӻnDk^Kݦ6m,&)3e`D4wc{6%4xGeBlb_#_+_.+&ۤ\z|'1Yzf[!{w[<1L&BF slQVY֏;VW͖՝zֱ|[w]5F&u@H T:nsŠ(:4:;b%J$„;RT! @IHI$ L(,\yO5UEUUU4Ph108ÚYdXYovD26+}USnm**jѓH@0bq+"9#-S8HuXm9jPN [oaJؖŒ3޴ƒ!Jx 'hzÞ8s3o)E2(J m#LTI#%g|Pdƙ%RYi;-povguyMm'yaO1 7l>'oCF]ㅛ?MܢZI*'yWQK@Ad (TQF̵ڳKTʴ6kY+FJ)mfH@D#d~p;;{^O#0VjmoٲZ5BA#)s؇E_0@["BՂW*9[0j&)1p2W>&axdCC8x` wPf+w,8ڕMT_בNrRube>H;̋U!HX@N3D.:mȍRD=}ä'g6_sOQ3<(?`m #7KY'(GOZoc;j*ɼ Rʃy&1+%gIJIFŦ&ALS bUKQ3 ?3?c qyӦ\  5  7JU w/K<HlaI0)VYCOy!L⴪lW(UF{lD O=;ZҪ+yeah)$:F-A+E Y,I %PŚa -Q)b%c$8wɌ &H Ii,<:膦,I2% |Q& I&X&"lZJ'9bKI+aDl3.2,P_x7S%YiRMKM[~ܴcmǕ}RX0 ;`ѥ6(F&EèɔԲ-mURK%F(d"vaVSy:*a#"> HMt j{6+S|IT'0 ~:Dtu ~R#ȵD6ళ(Z#i# $ުU,v[əhyo#!vvѧX߽|_>,\AO?Y>t@נi"yP5R$s EG`'(&eOڥ{T[CgBe,LҩnJR:pՑk2m!Ie ^/1&]y&K]g*2ڷd $<9 b8L)Jl ,gռm΋.vfi욙7[yfm-l _X{0~ĊD+0]R Kihh[v,(TEdDAmd)DV---)JQ!`$c(k!t44:IFMW/s//h-ޭGz*Zя?.k0+>8 (Ǫox8}7D(`@ Hɧ' 峇,6 MD Fܚ@C~TsYL8o\޻wg X 8Up+um Uef"QRc.<Ҩ`*R,\:zx8"52XM]ADGISvGj]sO4 8ڽ!ni)dKJW@ߺb,p~d ^rX1hg!w)Dnx\(|E_KS<^'&ܷ?lC>K{݀g^r#uƨ vڄ);.a'TOX^Mu&8*9ZwܽKAqR@3`?dw> <-bc4D{M&Oad}z+cV>kQmti3m$w;#MgY i^GILCI):Ðp,|ލ_1dO8wR{x{dvS{Mӑx;D:=dv|_;3 %a FI!N]oN&xz7ux7ЦnH~Wwkk8Öh ͒*Z袈)kO2Yh& $4YD8D(UE-e֧*T^vkf)] 0Ht eÁ~˻q]wqn00aJRƸùjN2`r^s7dɾ?&{pʅNיs,89w}Ц``HVE  *Dڭz-/=AGB@ХwØc9,V d%DM0 !hN7W1 'K`3Ɲ*԰Sы`P/mP!$,0c!gR۟RJoxycJ؊yq!Ch퐨O’6LuI$6nӎ$q*ڶrXjꀓ cDKrI!+x p&`[%xk^Yzv1. &F3D>Qn>l$d+4;!36c`Bg NK'(Fm$cc[Bu/7W)om66ii 0t:ҡ!~[0 bQlD- 1@l6oPi, &?mîҲXXǢibcGg43!zžnCvc3c7_ޗ-h, =""J[!Cfʋ- (۞%h/g0>i("Wn# ffTJq޵(m^dzUNl\c},}T_u幗@5]k;!H)o,\z(hOqMv^XX{Yge&sU~נ`=>ҩj'7ۉZ_Q&XN؟#!ɷdżPs`Mr;:%$@Gn~}3G՟x?-N77s0s7\x@ L92Ha\gca(k6bƓQ6Jp* fF3-#QLcul-qfρ=jڣ昶r5y(\FcZIjQ1=2>)x!tٙ˾SYxlCKMT7>W-ڒAnBc^ZIlҝ' SL&b ) 01h-2-3:%dpq}`&HuΜv%kP4TJS{HL-&{AA.l&! F;&Lv,{TdKy,Ѻ)UU: ;H8 bӆ7n5cF6!34۱d_&Gp2=L"dp>(fąZ:Sۻ=LR'E)Tm(Щ,ωhFy6v%|1^@P}6&e#F3˅&ު82vq6#`^ %֙ a=r}N+mCvV@ġJq##{oX|o,Ѭ;cot2B!lϸܝhd]E20;#Ybt8!gsl]wr\Ek.363H wɕsf԰WW^YV+w˕ HănMNR(Si PܱuFXJa0 ;uD512! f4 ˋIͻx<=SNS7öF!a3uM8>]6\ԄnGIf40WLd(BV[ֈIT=8wx3Cμ}`<OL2nf[5(F$XƦjXRpx&& X41ﳞ;a%almq64'mfXvjX6 &:dNkek> !lPqC`kHȲ^QÁX(c 2h!;qp/aR+[1U˺0^$ȍQudQ 9Z ~7'NKP\OTBVMUB!:Y"2AA AGA™/u+!qaH UNDWǥJ EqG[22|`|4L-/:6)`@`()FGiV<$=mZ*e>èdI_4AH4H)AT^V\` #r>-moonc.ᤤ}ޞA^R d),ș2 1`8``#x&1bqP_۲CXTH:Q0;Ժ&* E'E"JhP0I kJn:l",b$$`F J ʾ톗#v1"[%=6Hg1+z5"뉤fHIF4u cM 4M2Igɾ).[`8]WZ1ɍPC`IMGE`&Dn3enn1vN-1lɃ,UF(XĴu2"h*R0:zOYg<6`_[o "-$RA ?cֲrŖ#&&!&Y 2bUɆ'*Y?Q/jp 49fHƼKj,nmb֪fGRJEAlJ!)J(0ړ" hd$.ø8Aيh,1;2["R ,-E!l:Q{ه)$ {I&Ey^|kyI% 6ČH}OLԓ$R I j>嚳I$-l$m6ZixxSE5lF,PX T4XSHa`RyZ[ٵ뭸HfI$*vI$VI$Hm6ՖeK2ܫsU5|餵)6)*"9GBWy^奥eG|3m}jeZcS2o"H}yc$H6]֣grPj$SkR1K҅-jջm ^s)Y] 10c*I$KYݕOubaA愻FXKmzR:[O<ЧJjq5(P`D,FK&Kk *hbTT Ax3o}7F`&m xD3AL: "Y.UVLlfVkQ3ieVTYj*?\q!:jAV٨T>3IJf#Y1W2FNr꼾~(')4RMaS$弴Pi>TT9@ŷ翉%JM) J%HCld^yS6Lk$m*af+#ҠT~W|3 E);j%R,*O}WfSxɘjw}N#<*l@7 CB{g.i_P&hI[hh|lc֬jZlKRD1>iaJi)jI3m${0^ēv"ॲʼny?n>(b1`4EJ#6S.XuURUJPD)208"1zNfOpE$Z,BBEepP)>ެPz?{8ܭdJ2YmM֦koUkmm:Mw۷JiY"yywɌV;|>DQdFH4~ C%M#ңH!b;$X> 5T\35<m'DEzrQvއ8"U2HfCjkC]9/\ܞl(¬BRڨ$ѱMsArK Ai@DH-`hq-|{z}$ @>KmQJ,cX@`f5M[M2٨KK2d@QœldLp)*}eR@s)Q?jqx%a63ފ[%RÅ} ~[a$'5S-'-봰Vs IiJR۱cRb `Uk1#v!C c#$>[.$(;{?iM=L~Hk^5>>򴚳lVJ2le4JM[R#jj%E7Ӟq4ƤU?ϊ")F-rDEDBM'sMք{$?l8oʉ ޯUޖkWuԯ ! bN'+d' K e+LJV9կޚ޻Ӻ I$moaY+-fٵ7utJBfOIf8F[eE"Q",,bV,**+GWw!h5xk{{i&Q +BA&@CV c$6e'1_on'"s'OKe$Y|_&\b#kjWQu.ȱ7ij8C݁ɋd)l mFEKv.cFQqqS}r5bZU&]-Iivͷ+r] \I˛tJWJntÚ"1ۯ mK瞸tJд#eF(bXUIEPɕZRZ]jj]tb!=/[~3Mx}RV7g#Jb<,Ih|UFM$Ɍ6yaɀN x oӆ ,іCdGX82/M0v4ܱ[ŝvY#XH-#}41‘ۻrdͽuk8)x\nTVm$r'ʄ?_UHGTm[Ƒ8܆F#[(~U}V[|҉B!KVO&r*؋Q(mOcnhC[ȸ6|S>lc*0;I3cY^714P(;2DA rF"wx-.eM ԐbHF RxTGTHH'w=w|RQ [[v0C"ElT*% $KdX d+' "N(18beGj; v9,TO)p^Vq B0H N!SUj"@`::ojnkk"$+0dSD,ՒIE֪ &J؛` J,"3|g=v2mjZ,aҼ&+LQt.~Dm"|Tfb$t 3prv&-y4VpޕRm$”hm S49;yGkC!Fa a}I Ou/aA=cIhL9mb}YtZ!BءdC!'.A$_N/6>㔿B臡bܑ6l0N6\Q*Siʖ$NIL1f>C>#MuS]CCP3AmR 4y筍)2mÊu55\4 j{nb'mI SyS'$_0M,6&Ne 26vK#*`w~I6$6!(kYDäXLL2/ Ery$Id'Y*Q*(H?>$X$J")Qem2i)RTi%6foۻ_Umk5M6RQR0*| *J,T@'Sk2I}0%Hʢ,lIkB)i_Vbcj**TEc<̫ *"ղ51$ \}Cz%|i̪Fo-II#GXlr--vhlUQ-c%KVӏ9arLoA@a@MܦH[Uj/rJ*HKWg?#1ewoWԌYvss̑RrvmbS-?~^wldAɄTZKd"5k5Z-[V-Um-V+jɫY$LRdUaY$*e*UMR PQ!&o>d[NRLmQ=i;MΌHCe5cY:3ͿCHP8!P64؅uR;y͛]uݾoGOxd>|`o>vןz`J|ypg܏[kNW>z7>o[w=Fwֶ}Nwp@>ݒYƞ>yQ-s{/{}14Вj(ٚxf4N+C@] IP{{pw; yfכ/wL>n7{!TEJ S_@@PD)@<>Ry(05Vf=z_vaQkM;w{*:}_ag{N{u흵Az;Ż ]-A7h&Gۧ[|zxh˳=snA h(BhL{ W_ewP71=[-h^>=CFxݝvp}N{HQE)`A}lg=|=K0;>5 mJッOCh- o}eke-w}T;|{o}r]{4GCvf534VU(BI{دv\(ho@U=osUo[co-*{ Fz`Wej=knu}vw۷oc[zݲz!.{;}|Ϝ{jiz܀Kb <}swǾyzݺAOw#[boX'N|=Gz;Y}mi}_6tpt>C^vMoz㕎ST=_u6=콸:nP:WlmOll!>^;Yx=h̒dnmv2=qs}t}JO]qmW7k;M[^= ww^{(ٔOCzoOR6ڜw]}rvx;pz РU=j@z:Z7+us 绵͵νLz {Ymnnz5ymd[: nkRC]6w`k]rSGP;[6H{ǽ@˻;mpU:[]룵;&ekts;Ypd :fvOpo5u7ۻ޽ԬhkW0,\x7v˵{zP}5˶>9دW0n88wGod-X}4϶{ӽgn (Soa=Y@)Bʖƻ}w]==b@ʤ m< l>Uރ_\oNη]lkD nJPFVמɞq۸{`TneKY(RAUM6kW`3;8u@ ²@@趟^[}s&JA+{wmݯ{vr"h0O 4AWwn]eaTV۸wZỹE$ˋqЧ5K=->_&;Jm[>.]V2˵Q:ow{;y$o{mBͼ;K>シN7w/#l+ٝeJB@& L&$j`j4fM3DB@&M41TISbdhHDDh&&B`'mH##@ &#) `S UO4IBFO Ѵ74M2 )$4h=ORzU?F=OOS42m4=A"die:5U[N 2*"Ś'zf)HH_2WJj SM%DQt22 "UHZBZ$F0-BSQ $$hJDvg>= deIbX&%h@"P!J)$(bJ"(  @PD)&+`QR-,E1H@4 N2*Z" *)FdPEd$biΏKDL JUT A* h(JC:2CHvrp&)J b$)(Z*R `G8p  0V (-%^)#.\ HŃQ'Fe"$( !hj(RRmw83@/i g eek*n q'vq^@Y8:] Vp(~8!qaU9+E2B ѺБ$Cҗ >p$iCkh,3JoiMȐɤ0[ 6@iڙ :=-=;N$;{}M#e(\RUJSA7+"+] k"r2ƶl*6zI״$.#)>/Tp8&h&"N-I@˔P"= H2iViꓬ)e<8hxPnńRC)h$FIBeL0 AAK.9a1 cm+ -AZJұmK+l RBE KE %bDU?pU aTyL M4S8VINJ Lhdd(,#I˅ER94 f+2R%$L$)t9XJ jIU(,C&IDHAi)l&FdmPQIh"eEci@K,F%D2J0E)lA 4!KC2( CAiV@LA֌ 4BY*X k`m(P )IK-uXrJYa&ܱ!RP6 3f ILDE1 EU ABPEMFE @PŐePд0LP\F2G=e abU?Z}7+Cmk> |;g% GRž!BhCp.S%lTsUZ#!0/n /n/Gǩ:rt.##\Q8ּ9t|"H$U8qHh_+#6l7.\AׅlB2/4If0vxI2B4D8ZσfZ؍'AbHqrL]:j1*7$`~Ow5{Кv3! .0++.ծG/ Fkf3I22?Df7x_".[Égp4jd!"EU'p^sQN ;A өrQQcsY-(eΧ0h߾[^| &ݮ!~iCIYX;  xg ibM"E3$$HMCq-VeN3,b&XZ2F:a{("2N2ߌQߎo;بT6w6k~ qtV9 ~Ad!$̒.dGotMi5iSgeBUWv4y﷛̬͏ɱPisrR YU,m?/^R=ĥC/rfpE1P[$o|?%g~6P(^UtݧzuU6A8* S!:nhTyF1'd0jӕ)k-ZM*rej4ح-盺ood BDl1JrFIǵ>Аݧd}V}<擿ǝ>W"f($kEMmuo9+ɎRs6gӥD(ʹ ~vp LJ|%4jL#Cژ@ >ɇ'BBlĞ7YZH]h֚ӱ}F(1z&%llNEJ5NEէSsU (LoI$$~v<LwG#ُ&2fIF8.ENȨ7(ta7$eJH_N#$ԐDI߭: "5UT%SSE!E ITEE P+AKBRҔwj\?kSz֝&j}J5_)b~$+d̩&Na9l2&}+F kqP=>9N+Y{4H[w5b\t DUOynޘ@P@Fs3۵c(؜G z~`MuRkkRBIBew ;Ań%(|S4 Κ oh2dд"ӇRmއ=tD?:mtDFrA)MkHqËSpg[.L=*~NoVs"9eļe4L.+eDZ2!SkcqLS[vp[0BL{pqlƝ>R?B.ɇX S olQ:ؾAJZD`Vl(XP" tȱ \^I"H}L:Tu`+|iGʣO 5ŗJ)6SlGd"tC'o䐑N<${x>PCE~=xz l5VLe71ҶӚ62=BJeu(߮e V圖dh?"~:)w@ P41yzW٘yɔOCPaa'7nOMw1"TQFQ+m-KaATHcf~낪ҋ KOs"CQU(*5-ZŐ(-ºQ`w s|&60jB@:c(3YϷ[{Çwى)%U{ҊDccL쥵fj$q{z3"&ʲEQ1ER{M|ߎ~#Š&4kg.e-s}ciUc=Y TdUԨ5kJ*,X [nʂoAUV VէէGm,\-S *zSq}(Fj~>wQL #a`Bսg6!&eOYnȪ OF6m`p$:]uWQuQg&y;:r(sr pg~;Y11(AYԳ"*^3SJg 0ЀNׅ@O!ʙPum8z'ہ/LZ_ro"BVwG-.O7p(]S=ur(qF1>܋22#3+#=[U1Myw^C0t,<|]1D# Y_cSk͏O ׇ98ȴ(UUGl_}|ld2?瀭Qܡi:#r)iq]Ι'^< Bniw_뷁QI?*Vz#J `W=//[D8vug셆hdޫX_W<gzLDPha`A7A)[>Q侂tҺ0y!![3eT<`L^[??Y4{|;4^D:reTtgf螆ŸI1qr?KIAHQHM O9@PK#s:l$0\_g?!i^zzr+;K7yi0(SqiK ,o|1z#:|I<Ѿ l$ywgAut&Aa R3r@QB3rT=[TҲý iQ-Cpp'sLCyN3 N i' +N=+%D 8m=[i{8ImkgS9:00ck(ӝKifm̞QRM0{kLQ¨ vs;;)xrrVi9O*$ύDvmd-@\*MG[m|zkK.Þ\k{3GVc%KLmrEW?Wt `nc/w_?{><;B%0B0q4캢K-BO8342\~޼vdXkNHV̊{!yNxZ{.EfTczO5k0sѿwF8^zagJb,lO3rۤfoࢌ<ʑXg1'37bv 4<52z*.i)4{g⁈f53oTgCa=(̖כֿ454pĻ{`YR{}L0>aVo>O;$lƪS{$!2IA0B -iNWT0%bX(d {)Oi۬,Q非h/xr8ӪB*@xKyz=:*/ h/dZuU9]"cTҕT@Qc1Tgk+:0,PGY75*׽ָ8\H\ѝ:l) 9z4 >u5I"i9Nsc@isݍ& jsٌvk/?+\Nc$&ic ;hH:hȐrzR $p1ywޟ ^kJwe 0A DIRvPw4"i{bt.MJYrZ]G (~EresLR@LSm7z(]oѹI2~ H}FEL鐁ckTcZY$P iYt4&\wt=%4PQEPإ)DPeID\~ 5q:B/;. ~ɟg߾߿8j)&O4y?q +2$5ɘn㸤z(%G|4}9o3t*InRfCBڏ|g·60u'+iL)u@ *|9NuPRy3$<}|2,s*ӭcKlɊ6XOy\ǔ~)^Ih2hɽg_>;{,Mr *zN1M"jvȳǦv + rw HO7"Rqu; l} !(h&ƛ߾a]pϋhMc1(\Ipϛ-3q4|F/8~=+x/j ~կgvw% y5#Nc? ׷v]'StVyxN*+Y6c'#{ xg]k vu:.oYߘ>H(mH >]HHсDQ|hk˂@B} JTFۡXՖkl4{N%B' ?|1d @HPZAd'x@֪Q[xs1'W;0=koч|Ơ72\ )d8*[+EN|DB*4R,0((5=v@SA3{(Hwd\*9( L6Y@wJmw~!_U~|?~ }̆n~JވuISށ(r>]=T%3l+ny©TUX7d,&NCێ[b{x7󗮳MZ5x+7J_8,WԳ LL@f`öI^m$6yr3#zU~tc{-Ҧ =[$vlDL]G=|k&3n~%e[v)m1Mpg\֒97isC$o,7'vF0ڴ5YS~ygŇNpߦ$>ό"܁!?vcildr=[nwy?6 sNnc*/1Eu?Np/J)z#0AE!$* i) !D=^ 6o᫁"~P|Els>YͦE^@N4I<.R QA ,>QE>ˆD*+OBxu;Z`/Fu!dpuM/xy&(fDw - væ⹂.]%mѽ(ֈ d +CȨHD|!A鋵jeƹDZuxW/ZֵkZֵkZֵkZֵkZֵkZֵW]u]u]u]u]]=? gI2L0Ol>t\LK@]# ˲fCg-e0FJ) ;ڢ2Nlx˩ ͌f Ev7~v@ Hqh/0Ak_Wr%COG͸PCL>`% HէG9qlGkNMM4RDS ? yᔜ\Z*[@dDS3(DŽ{P~1áƭ'BCssP_2C1VCmWw" Z/δ򞟗޻7XwL?hN1OCbȘze d͆(DSC **, DS6e]JAfDV*f(iI)/>UZWh&taPTW,4iܻ*07Y/ӟ56r5 Gjӄ򾩾~wcu_gsnW{3JQ4~lrt:>^Fg`hIvP]d O?„lz/ƋR9?/sF%_'EJX&@[Q+뜇8s™d+HǿFBI'IH*(O<~p<4laϮu F1Cq"w"﬜7?UzpPOf@IՆ}{9_;9]%2w]tR];ie^߮/pO}]fH9>d>͠P}2qƴ1Z@QX?f?a 2Xnys],{͜<1YiҗLP揙 >i.8 )*"*$-Ԇ_,!>"P)(BuXLB K!HHCT,R I@@Х4!BD, $IKMD#dG󓉔hT DM1DTL4-)1P% " QLP5I@eN(PDDTQLJ4(R)0CYdP!ILK2 HĠU(RA4!Q35L1 *„ BDE"PSLNTE@EEECMR$CIJM ē4QUK(UTB P( !JRJw(Q0-0LPJP%A)$-1!+M3MB!PJX*H((eJjP&JD`"aZAL aZ!"$))(A!"j)e*e(iJh(bb*!)JFbJ `RjbVJ TB%hJi? *iJh(JiJ$( hJ (RB($I"&&%)*FaE)2LRH,4D R,M00H%!#1-4BR B4P (2(3 SLP$-5HD"*U,1eTЂЉ@D SDATQM*E LD@DEQTDU AIU,DH"AR O% )>?>OXR#b׈~D2P( 5C JJRR DĕHLMRPQ HLD%%RPU4A@QKE!U"~|^\v!/Ç C*7iF)BHL(04 s78k2<ŇuZ$ ҒGqc6̟f2" `RH!k`.~vbőq_ĺNEO=# pwF}bEqb фEx}g=-~o:?gqy՟k={[w*H٣JoceQԛ feY^1tWŸ+6Ά0ɵ][Mm? Ƒ26I_15\*~2`Ip,J=.~Ubn{>pIԓtGb陻:;]\}M[;Bp~}m.G ^W+sw+H&v1'vvo;ѠYve3X8z6r42q2Io'yw;,J;͐{}V$9 }2cRF|UBd v;H]@ Si~p|~[7ߟ?똄iA2DL8LhK$}0ңEȦoEP!FfAbb,W**LS~[4s@xcٟLkIsR-y.ȩ'L?1KݮaL;h(DSYA3 -K٦&=~0oJ$x<ɿǑİ*x>!L+cux~@0Ng $$@M| @` _5I\HCiRTXg*wZ&5M3)2oN#Nt`>l1 :|w[ܢXVzg a8 K~`/ƍOLm4ڋ.7lz 5QV#@hFn#еֽ\pigJRxY ޽ m+*g>트AP{")@!/ '>5l; .Ļ)<݆~\C@?a@t)k-ߏ s78ʻ hOUM4(Hw3"֟:D51ӓ s q΋,&4ۈ@l m)~SՋ 湚3` "X sA 2IZ( :fDk )lfE7בkC?N"7}qY_1UJ/q0 w40X0vvz ^fv&JLMmLi^h{ޢ1}F E Xt<u0@4uL7c9d!MSnNœH=<}oɧNG%0J)vSo,NpOQpwYzxX'?TH?\8 Ő\m87@(^C煅xȩJq'!=41:u_otDJ#34Fo,Jt@(g?[v5!ʰښ &UD<+ $6? dҝP,J&2)H}~^=m~c }7fiAb\E yzUJM.%(z |~:O,B6D [憆 #b[s?z8s5@C`gV=؄"qMy&1M C{ [F{ bHQʊ6λWpc137j$$œD=MtτhNZ.4O^R\j:[>˟Wܽ<;eO?*@i3Lm6\GᏛӹ4؏Sөkc׋d&6@s>.1Rm \pOLC BBB=z7HW^Q6áNz ͉fr=LFʣx21vx4zWiH!q6(cG oC .?d||ySQԘl~2yk83LܫsM= 9FXh1zt}U&תG/lR۱/z$F ڙإ}?u1B9)s &'8 L#)㈙qDDb" g8,1,}.}gv՟_ŏ@WTPV}5E3(G*&_O½nMd` PAJa”& @"aea L@|֬ X**{K֠)xR*J=z$i!A]gf0 =zk5DSi}]\(56j3)% *EX\ eA ߙKYPiVeU 6q"aS')v|dWlv>kkپRTenQ.@< gJ>R=C2`#){ڙd 4i:ARzq$F`?0o)0?px̕p٨C#s?- B w$5Q@!xbUf}NyLv_.t%CֱLdT#Es䀆31c lwmS힧P[i Aкq:3vrFV4iXW (2L9tcAv@f SE1@PjDQg.So6o06;' 쇥l׷uu n+HbrN׹'`_E!93{@C:gloS8qRq<qiOӹ 0C6I|f`%7GeMzΏq̘03pE*=sQ\Ɓ6*`4갸Y*zi-kLkȘ6-*us»QfH7Qjt|85֬p;:d= LqC]Zmgvkm+?>H9saJ!&"H[FpU%.~Krz{3u0~-¢N[NRJ$ %^;]\ç揻GHT.yuEMGsZVX®UI\vm8I2ʚd.QYm r0Kq CQhܸaG%v7qkܓj^pHdAݽ;Q ,~/cE aH)NEv /]-xZukhwSsFq龨1pϘ^=GUVFL%1ǩ}QTJqg-ExzS3g:?LƔWNw}} (J}w Q?Bn5PJ#c ;!2_T_~-Rzj.$2#wri{nFB,xKYMt7ȼ̵!6l/3_h(5)% OF{i-0i}"r cS8vM`nm,76^%# Ex2ڙ͞Vu&F4bt@xgb̲Yc[=,m]LtI@Kq̹n]iYA@Ysp f]r9 5>pp0UwCHH9b۳$%Pa [[ 4cI2j 8;s piDz5Rf? אmX܀ڮx+Xm!ʖ4Z\hzݍjasxO4 ( *(U_bÓL@坛gML!qvb?|x𪬎˅b¨Tz889PG4b9= 9KV[̇B$ H M11j\sTSME/1зx#nW-0a3J3ZƧiu&Lt$($Tehr3"ϡ=H23s,򀠂c=K+9:*/.}`Q-7ΔxFދ` V?tW)<@qdevddx&һ`z0--f-g݌ÛڳEVEv B2"VI'kL /apd ҃ $@˃1Кע*pWnx>#:Zc$Nl`i>1Wn(4An qєo:z/w/0]ELlfd 0{@E\pL=gaRR9lai8[g |[JIhOи|sJ;{Odu+h{n}jh ᖽ0tjd8ja 82P b&򄪸ЧwU3DU9=`m"BҢHJ@PU?MJ#| T*`{Qp( .s!Nj.;&߁iyy KD0u&$ B#묶/*Bes;%d&䖿8ˎL1[zQsu Ʊ#(hH$T%k?[[?EM-gb<~@nb]x2z '`oMn7 ]ݏ#߫k;߰9!*| k#61o/M1t,Hj3Rޠ0nSm;&=9q(y"QmafȪ* h@6KKf]3K,ٿ%iCTl'Y\%A47LvUg_;aW87ы!p:IB#$eshWO^ Œڮww~J,HI2DL\ߛ~g_{;&Wއ?>R, փ^A'CȔcK|_*)Dbv lt!N"5[{fWO>n1CU'>=T|m1m<^DshVt3i꿶`ګG _8gthܫu>ӞV5p`4c fiȦI*i7 | G&=\N &ImΘI%dvƂ&N'C$h~i7dC'mC("*M7SlZ&wS.fK8D5&ۺBw\ENHM6?N8GxlM$1dSXh{QR}mɎgMh'Xw.ƢRc0z5/MǺ/x.ڛ]]aJ3}?{|}(+t, s7zLp 8@0Zm,r7gD>;&^]:؅ӦX*U;ٮ[v!KetI9 c βYJMQv2B@O VyvAK(uQ #%^T{݀giND|i6C4\Wm !s8ZXvNGH^KmMTKq>  Kf.*ߒ1.VI~q$lMLv{kI$IjA+f a;C~pPfSrW5 ׾ǃy,r2KNE`B͈ {\fe ep-M!lfTYϻ.Z-SqK垭P׉߰q+w 3fi]6Ω&]vcWXBʔ:Yt7VQs)(-a*y&Ȭݵ;Ӵ4N̏عlmFU7kqysFCtl.>?\a,t#g?B46tfw\f@_Ў$)z\G %_jEIn}Ě$UU"GW&䒃')ht_siз)44?!1;liJTEͭDvU9X`&Αi7{T&n_ӶK*0A3b&fC8,f\3)$$̈AGV.;Mz ,BaU%4HvJ<%O쇖5H! sb)3 ɘ.(6+۞vH"q֪lT{l].ͽ2Nn* jƂk81>D(߷fwC 7*V3ߡ!BbD ΅.'<_~7}xJ}Vr,j_YJsnNG(<;?7fqG:>S]@1b9Am!E:H;l-WMNpwq<%vyj@75h&Lǁ0Ǻ۝4!/>{>I+8K:UGPÁc0=F9Y.skZ$Fzr;7+3x|qŠ5aSWJy=xMKS0p7r<4&S`qҪ2k(놋x#+u񢭾|_[Uk홟G6m|`ôo sfJ{t88ң̌H}Q4rNU 'ܪ||?jִec[܈I8U̓C_n{g8?œ_&*n[X&2Pfͨv"\j&1з*LˬXW(\ە}6۴fݎnL.u;i^Lr⟣D\wFSH^u TҪ,Rұf5i"E}>:PV됑$uE@ͳMo͏w|6x-l9gw]Qx9d\ [ƖH;Ę~nn/Uvtz:nhvO^[3kbWM|1XF%fG vIaz=b0h d 4lߓV=ݰVWᛄ4v[wh =n@`}KTTڎ`m[d=yd8'9 FI;SuEÁgmMb>v IS4]{[Zk=gvjo~שU0UC*'Lq$& q4)~bŊcvl,[М`0 %CĦ0E^5S#b̘F;/Н(&t椈'<= ;gLμ F<P-E&;uZeޏ;xV!iKtӻkmէԾr*xLP mC]􅛥D9$ JMKiuco!$,Ä̱݇F̲{O+gel35&b {\>5}4~֢:Fτgfxzh=Ao$Pcl"AħscD%/ʅTd.R&v3̻JH> :ZP 2 2"'ʨG!s&e';5԰Fw~XT-zvvfG9G:p:}iZ&HG/D>m|H <"P,;NG)q^261^ fU)x%;B<(jhϏ=ƪӮUUUEUUǧ{ ݉|89VC/l{m[g:&߂Gti+."\RЌv=jʟ\BR"/.r!]}ޥyaְŬt=Ҋ[CB |0|J:=i I%IG#JKX/_ SfHva ".Î9E@e< ) V@U>= DP !yoKZwtCL :TݻVC5mdK4ZvΫAJ'}BLYf[ލ.;: ٢Ib rL[#ڡȌp$f-R0C"^w_ .>i|k4(7@fUp Z\s-5b2;z‡_}/j% an!tv\ه\EABj)Ɇ($(ˏ'Z Kml]1#ZJ E,u- 1vV1)6i=zI.O[+~a5 J9hM)tɢdArl -ҹt/u3n'a9ya }?7[u_۞R^ sS9Ï7E>P;(T29~"~'s θ?`qBuỷAt;ciȫ/]ږF=wN/6DEpGsV)E^+CFMbfnrK/1au ,Ì[u#9vײoB!%-V8&叧]w{쑏2 vva\g~7:^Ȉqa|<;ʬrCU-Л5$ MTYJtMj+[d9_>/%G/Eׁ(eOu|uH7=>.QyPAO-ҬL?FrL5y(vW駦8ٗH-Q^ C:IȒ#{?T˚Hu.n~Q[ihh>Ǥ_WS%ޡm|aUlC7&-EژfЇ'3Udj/Ϗ tz8YV ?k'S 5hT*q;G~<Tx[E Oy5]BW6V(^? C~W>y~f5pfDb%{3GeMXL6Poe b@f"]^o|V;Xk^:WjC?SXGO߇~0P<7H1$;F xn^Sװ!fl@x0"b/IʾwDܽ5:_]!ݜ"FLҘ~a |62YXyfL <;R^&Cyrs1m8ߘ_Xc+}u^$.IJ:^!.OY\N޺a¡3~71BtmtߛʷFPp+VuIӾD|^%bf5 -8l.O.+*L6{W;4 '.BA3 8q߄CڞS1@x: &UcW>«䟌׭8#__[3DJ'Yg0JGK(f#ޣUb$ct)`+88y >~$XQ$@CrPgD{;%j=fF6R%v'/LqZoo$TO@ uK4j#54ء 3A'vby#dkV3>|6+l^p9ɸjOӎ^VY,(]-~:˺pwI2BFH ,.;^qcmMR7MࠗWn-;ߙ8 &ݑ@ǿM#x *)&EM)l<_L{8^z$RS+Gv Ыq;.7f]'f (ćd-K*5JԶRP51f$hwGu&gۄx9~yG'v˒/;/k̞\ HN7BDtJƦ9~2HHfKzd!:D7{eVY$Rļ,62ip6J׵KHkv'%e ļ>?B]C9ivBn9x)[G6: '#oߔB2 [3Z\M&ahD12cYgψ av&B"^ݵjR3n] T ~ ε$4]1DȗGt!ȷ(35gatK8/\h&~fiI[s)e"lHΠ+Q˨3pM&O*Og_"%x?W''W[fʱ/O骵 lMFn=c4TRyp\ѐ38WqrqPT?=;%7Kꝼ c@c-ٗVԄnGߡ" *a&BK\T yšrq6HL1V'v ;@KaޖqЋ l8p6u]ø&ILsP$\Iٛ>^3}QJppz4sk[_D #tW\]:ZWt,%Z*MmK+2@*;=}GJ,njM1!T4ηˢѼ6)A;f+'0JH?v8.x 3Kv.dFSPDݎM5u?։IOkmPƥ*7Мڒnt1 -H$ƛxpb@(g->4͜#4Cm]_x=롺r`t x(-/0% pagU,c4η_ AK<\MvвTs`/ HV+Lw<GӛL 34P0cju;zHBLDđ{XķOV7LjlN. Q}E6MY_5bX+%ŕMz[FݴzcG $iUl@JKP(3M>ٔ}w7~1R$;/X2*slCc3ŞG^i G)=NؒZ8Qm} |Rn:e[+Ht&uyxg|Mk\:9Z@+*G~rS0˝W1q@ 퍋Qq\%s*B/J/F DZBVUIofLf>}zt+MάFO]X`J>JѱBeLj \+ݏ(jh!ݬ2xߊ E<lU._X~N-  `:¿UsuM]'NE36hd2!8@x;1Q,.X6Qjf:JR,ݥ/LFમ=[ٛ}{OdE;C7ggFNӥeEKt7<I!UBi?NZEk&7Dے9A nkKWh8t?,֞U?TlmُMx-l mgͳ#l_l=:х/q_[̼e%2BjfӔ3DC6n):Cufm*gpuQV>2#S͍j˯ vܟHFp-X\Q5]F桿Z:ɌdOţq.1)iY9 h8JM.l UY!nVw͒6+:߻f -|Qѝ=2LT.{v_^%>OAk>]hޓt륏o!^a#0[0̶ {c_ *OcVS%=3V WaFf }Yd&fOXXE[.4lv@ d(!҃2U6 jQx\ɭKt6Nt~d]f oc*1P ٔ:w4,0 C"7$Lo}͑4b]fQ\uMǑiPYǕ G0NI7ܚ72C&" P/)BėARqd6׊k}n5Zkv1IREBolM6V>W sZp\\G'5l_wIs ±*PQ€;,㖚:mG.tA5Ȋv08a8^Q_nXz3iqdp$O+bV[C|S7ؤ&]9n6a_a"W+Z;؆c/r% Z>Ñg!z xSRq* /%v 8rӇj0? ewMXLIVزgB$e`WM6.<xi`cJR'Åq6Rd5r2Ā"IY̐}cefc75J>iG<7g%sV.O8y֣qQݑsն22ٍw oD|}*KjBr*r8)d,:){{פSsEs[T4Zc!Yq)SR =MmVMͅ>{YT3rØ ^(.uEYāD6˒x]@mGėz1iZD>O[33]UVgURYޤ et7nﻠ2LSB4-s[[ł{nx2/ Z`mZ@ciuTU|V'uL&:;"*uVa^g&^IS3i uf,X8U~a{Q!$^{;AfD26cM5`(s„&'V=۪"ҪTI~W9нGwdx ;eTIBbeϥA)PA:0'``oCq<9}7(m i֞n`QQƢ}x|c/pOsp]2]>[voj tI3ۡ$cre{I1Le-^(!b*ՆBXAP,:6WiTGF~[ Vo(ja>0HȬP06. >UJl T'>>ڇw[yXn5?˼sن¨ WY)ĞF^>0&| x3qD6 uE .>Hg[ﴧ~hGtxuǾΛl|~'сixv޾ޕiآ\:#uT(o7+5Ҋ?՜N`BLlնhh3>߯4'lh蓘~=rPKge6”·n1ܮ}z-"ƈwAs]1\lcvp犌*3ʩXaA3?}!c +}BN;03 1.~uau8hؓjѹf+-}uóh Ef~\ң#oR/˩f랸\}~F}U#zHO^^dG#jY=|P:gݠBS=L#:IkWyޟNnLw cu^_ث9]4wϙUs,O:Vc._wi-.y+ v誏%U졹,Pyo%fF{KˣPU8c3 پ~Q]{\DEb0픨'-t>;;E-Ryq\k2c>*+5>69bW_>:RVA$Ts~Lp/@`py|53K{K{oXʍ|BPDG4eo SlóR}t{W8px`C. j|^awp]pU!e&;؏#Q()Ƨl>Q.,Ys* Z ok1"@h$vFog>$i ~QNAɝjK3vwui~+B~znBWzkwq2}1]Jݕ|aWn9Id?NsߔGm4KrS9'WOZ֍YZ18m9l"{=7*TZ^\34{S&89ISzj!x)v;0;Wy[/?L;G3WWI؄`Dwm/(t1} 1WaL?D*ﲱP\U馭QHɕؚqd>sQa/sJnQẃ|O쭉 ϻ(3Dwl!PPpE(xJOD [jizOv<u.1iqLHS|(3zq.2\_P7s1;v۝!gJp2G,URUryr/?QM eNpF!ΜJ|.O!s>>#Z|ˋ_S {(Ӧ^>?S=}1<{.4N.2~|`Iq&6K>t/΂l:M1} rf 5/ 7jeKN$Q'ϘQY"bꂁ0FKb|lOmh3F$""W󗵛v 8Q{WEC/)ϝy-\[ue}vT|ev^NML"['_E,%#Ckov!!DŽ+&]Ak 06%9TsXxw;%sn}MS5pewr'< ]*.%WG\rȢyf~s]׉B`Pi]҅{94{+"*ol.x3$Ló&W>쒌1m31RܻH2aQfQ+R󧌚`<**nX}=Fs ?nKBO3 z %^EߩܩcӵN j!sPQtl=m^NCf͆kMOgS.5a?>x{n3xԄ@K\ \nfњVԿ=P$j-.&tsa|#i_Q4/}58HZ:Ue%^Ğí7'CTqD@s`4]VBʟk24l"UD˒:*`(:|Їm_`ꁢt߃5ӊ@~DIas# Kk*KN1*[yC.&>&#ɔBU2X0LCqhbdfǢ4*:V3mίec`2fbI\Usy".$3xװmq뙝)S/|?ZGb 7!"SjF`r2Nf3[+d3={KtqqBJHtWvcuFβdg}Rtw]PGє>z 쑌XNF[];] $&!Nqپg.qӝI^d~¸JIݚ h󶻮TL80a*g=DzzmWN՝P2UJ9q⎈"m\̍,"K.&tWqwp"{wMōʂϑGQdžk. 7v!9`vܡÕtMoCrO/S_yIͪIӴ*uʢPwN;|+&fļ tv~Xz~Hn[pfXݍSpw9n y$V8Dsզ $#^>R%,3DZKr7T«A&!#{ZTeJ3~Uծ5 yZ΁Y.ZEKRJ,eI\"._=|@`,c=hG9Ṃj>7S);fovɇGg0nYd m bX/wx!8.a. H|N$v0R ǔXMEX5y-Qaw,va[B`J㲢钦4q*P3Iq!2v+ ۰1f]?DIo [h|e/2P#I(I JE"oN0@}ȌaG Gѹ,fiM׮ `hctm#F5|<) mZ'wOpؤ&.~0t=۞\f ;v1gfLLTRkzh}l qP "!Rf(>nKk=T7k+a _`D\mƫ{yihMYşI_ޔFd62vu2Q{ĺK40<j䆥Vz-对.4$RjQ5 B'ۺjuO^캯y+$mY>*8܊ٿ`z66#K{n8FM;Ʒ]\?j#!t!9N2S5b{^73Yp2E6<:AtabE8ݳ{oLccJ͈ܸb; (:P!3ﰁEzl_͈)0_upBIe_PAK9݇SZc*k̀5VOeejTk4  d #(o{Ӫ _u7G3&+ wљtb0(lɉ)z!:c޳^>* L"ӑO ˶hA(GlIӤ&}ior <7[;I3yMMzIvfcxbр ӮX-#;M吝Om +rkPm!֖ݝT*F1&*$QOTm:ߏV1"rk͒W9_gsӢ,Ξ6c\R輎Z=bHy32vI]/_PZT=w@g>/+tNlA?ZC7{[oQ'C:~Q6y9](¤lacf]m=JU{#ӳ-c3GTY!]匚BߎBju6 sY},m>M"S;B@@^:7+]+IOg~U _*eڤ}t$s|%>JGCO3cosePcYU![o=TQ&c ]熎ŠTɘ@L~τ/:S[jU+_S\'zèG ߮vO>Yv|AnBYί+5AS:VJ<2W*@HbgMbqşUԃGO<=-p| [uq1n[%_s{q0BFJI&U]ouj}!+Ϛf u]Fj6n0D|\ ^^86Nvla/_@J˓|m]kR((RqMjj]b#Ҧd!~! 2\ ' |wMvlt* cǻG弬ioz,h5tk6%GoȣzNq ș=9~w/|T}{{ɿ|s]s1:uksZH+֫9|1598FL> w:`=-Mv~Ngz`9Ý0Lu$*qp!Sd[Cx(1SPMc|tQ495[牿7>b|;@焤~b]QJ E|RuS>tcC3}yВ4|tF앉J\OwƹF4eq_ 1X7{ ?<8;<O5!ܽe|cUyty|c^/'_L>ڕ>j|Jowae9纅UR1#:`<#F_q#ShΣXef 78<#KUcpܛ[z77zNCan /o(G_Jnyg늳O>d˥k%D˥dͭtfֳ̏9巤 G,h+=.I68 A-#5 _^'j[ZkBٸxI!=R7P*x) ny%x.|ܒGϪz+S&)ƩӻU6PG!jʞh;6xnuh/tD•S7܊C_i;ojCAԻ6 nj jh16fGnCi[*sQ*E p|Q;;aʋ(niYU/J^q˕#TZcueG|e*r rkv7Co+xn]Oy˧yS$(>SVV%*=ȘM97SW9:.w^GIK{M#-y-/ej/D34EM}O o[õ8;{1>}ۊ!6p[P̣X^ 9[gUa?'7egf^/]z,y^cFQ?b8f`Ex~wiO -vC? ENZ.{r LGݟp' ?ى5hvcSD$3P΃?8.ьQQxU9C̀+$oi*;έTvƄM&ӏ;?~%UU8e6i"whOeI *NCNeTr2I>ͣfV^^rtۺj\ ÚӎiC-!O03Td%Z3D 3ְ?,8pHw ^_fncOڃm_'6A(Cp3w;ˊyn ?ؼlāiE_&rPqgT/ӊBaKݣqJ7~ۊ[,]wClReZH/VVsX^}!ei "th3(,,u9Щ/hS>큈x%v=PT)0 g?_\2d?E~1fdF͢D|cVwnQ"I7IGyH{oÕ^ukcVSk2_]GZ_s$PC(z/Q~w~ F ״'5nγT𙊾$n JI\Nw!)^>ΣQ=ʶ>BjBbBqA^EӶU_3Ό; Lըeҕ[6-ɞ5Mn~[EXwf;QLjѓCG7gf &G~Ѝr~_ GZMj*a$1Mg)_޸{ƎLNKzSJcZmЌ<3+\,r,']Re&GJ7O[-o-np& 0O|APCz!YT^K #,~ʡ"_L +#$'dPk?'.эo͛?}߱fNG_w7Mcr?yfVz2%(~2?4WVS`Kn9˥mFm^iq+Ae{=vY^%3}k"GL>y!XQUtI1yz'&Ω> ?T/FrMשtraswQuT{BLs' |xK+"+d!9FR/I!)wK_:f۟~tilt`-1ֵa ,~3qǕdqV|+pqt/nqG0#Wי$lfr SIOhgOFf]3j 4<}FϖU] 9/YJ6}"~c >j&I*D g7GU{߻,~N>.*<|8+Na5_V'`~ *& V!&RSK:{ۭO~AQ`$jd0+R%L%HsBҁ8$F m(jH0w0BL'I6S!`;{"׿V2 ϧW1D,hq!iG7ҷmnʽ;"Rwx8N,ݣ Dvelt|73;W3X\2yutAI 㮿M*=}K- g3.3y Q~qrU-aUTdY;RC!Lor ڼ:pr/.i%QJTP-}Rdۋ4K(8 BP)P O(u@,%25"dP~T䯚\Ӧ"n?vroDr$'IIA E%3 F rhV(iX!<#SN@VKTwOmMt@%@&"6̬cu]e!)N){qXֳгZVZuֵDqga_^-qݖ*3+ZZ'4Wx9 &SUc1ꇨ?cH5y֥O]Ļ-=Nt곕fng5y.uv58:*Yʻc/+Ν:cYyf6QqX" wc5ox!h>'8oD#\߂3]uљ3j^1-)檩;s3n*iUDDDg zUy/k8R9a&dj#xyy:{xs^1QK:2]fzBqgZ)xZ5^Q C u7Swwjɉ܂8opq2'˾o%jY1mG&ԩspGr}1({\FXm_=63;,βu37Wʕ6c{m;η96<[U+Bb*y4'%;ӗNݺT]8?,(yh-(]8q4U\$==nFe<,Y2`<;$vWVip f Y=LLhPѹicLU϶4jR:f8#M-"@H; R`M.<"YV42 $|OAKH~P;h&C[٬ )yD&Nu Bf8Je43$@{ggY-xN;3Q1zH-5s#% &j[H=X_%JƛoޣC )ma*/oTfDBM "ҼWn@℀b@%}!bA*9{x0UfGC蜞VY]BB$&i&_Yc/16?G熍,ea㈾9x\&fWle~`I`d|5AI:yn˿ċFŔiZ">t,Nb0E+RK%>_,T["f Mf}>p4ncp:Ϲ AB=_{/o7>rm" РH힫2^^W4Kf6[dm·$;a9|/l~fgOӌ+N=vG.z `N&Q/ʿhok6~"8凍]R'׵zӫI2Dl_=*h=4W[j+?a8N:VO-#"7lެj31 ۛs+=N?+ԿM9olt;cn[.^hs}x')ge'J[Ng8;z: 2dLӻ:HMQ~F8f.UVј *A[Y}uDvIn_ؾ .}-.#]}ѡw)F';~5L v}Qf4T]I]s̄ R/I6j%+i/~2a۶rҾv=ib5 gܳ|';YO@_h5@ RBDFEZPFz!+EAaFX ]Y?hЂ1w85WT+"^hdU. !.u憱$D3"wpCSrxۡ@8DC NXNc'Or":@ܪOi)LS_~*/s0&c!w?>7X:׀ЧP#x~9%35?Pw?$MIpȊ S#>Lc!%_?ؔv!9Ҁ 4|rܵHoxc2Z<U16l0VhiSx zB*?l EO='AX3C [0e?ҥ- - ĒH#@ ĐMUDD 1I4PM4@H&M>*dZL$(! B߳7!&1 3&aoo.#Tc"%(LZCQN&>޴{eܴ2u2b8x\ȡfͩzb.''nݴ{SڴtGq6\fW&z|crqʪ*c}q3_>џ<p1]N|ap1 R")脌_LI_fk\d{:,5Aؚ΅׻e}0aˉ@sQǂu.$Z$"):{l!+ϳ'm)67ei]\1s@Î/v5DރbO|GʗnsaPKL'YuM:ݙ__,<=_O_Zqk븟C{:D]# Q)6YTF  !4 HUrLIOEr Ep~Xs>x5I8yniT!1tW.;-LTv sKۆᑛg˅xdCc4{1]1aW4CvyoׂvIRA2BTC Z! fft?-%p0 vLD?ڂU$NB#!N X6mn3x!3 <HN!S\lw/@a0y@| >8ͨ8ߪLY5߆&fAI t>v8:Ż:5"1'xoq}iW1i!  8.>4[A~+I *;:<'Bi\ЏM̀s[/_^ol4OPC|zD1iҜ@NRӮŤyrܔ2LH'D%fb2ĝ>ІA)zs!+ Js6 [#**󗠹NLdNh_TgGmSRmQS hL #8N\ͱcLjDV Tėa{ޕlЄ C;b ¹Cq&AI4ӼP͜4I B%8}% H|.}pGO֓uў]]FB%b|g81#PCC8xW/#!9 Ԑ[gG$߿66!cFI9՞"MSnLs߲+c j>nhv[ BcZFCku-D|xO]~ c,+x)#ؼ~~ɅU(\Mc6?k>=dδ۲;OׄKʿ߮Yn03l7qQ/7(1muNdFYP*RfsT?YaIy']lwâ=l]4?ٶWQC:+s~-۽ߢ{h<+c;p(g2)KL6w~̭͹+Oۛn»SJJ?di}4j,uK-yDBI-u%F׼b;SA?Fb aX^7\eBH"ovÆеtri.0-y|LW8C3<۶U07UinbGJN9¼Q~\\vݒdXr]:ۼ)o^<zqηU8h~yNF.}6>Tud}#Sz' xΔPUZ8#.!3 mZI5)_&%,^8@*D$:{ϸ=E$NPyF>tǕx(tH궄Âuیd|-J WJؘTǬH'}T\^b鯍{prߚ)E<Q BMKH4쐘KXN .z da(c]]UК(}jgd(t7b /w~;mfWaK*tU_ΙNە-2X}t>HDSUШQ)  5"dOn86&dZҋֳ 2~%7sgW_bM9ajqxNU(~~>89^a*}"9VO/UDnOy R@&K7=3vp0츾/]BvIؔtqa4ȏJ ;8| 461G>$**G=3nxXww֫gBacG/dzJgt4Ѓڔu>7o"C2Z;;Kj9p~iOU~FU}% #!>iUEEf+%2$ N >. eK9Z>^p>̝x`xJ'`p{P:vGELESeBei ( ` oփR,$}AL2$2>:[)ChDEr({qNZ $J @#Z HG%(H)UhP@Ltטs%w  Ϩr޲dxy"$T)yY*:ɇs)\ CR ݮЫpɠ;@j0: aYeMRi ]'6jEE7 ԑ{ >%v\DXA dS (3RMH~b"D:E?~jމ]atCCko˜C^mu^XoTry d3 yI$٭?W&vH.=a.-K+|֔SMj\ DFieiW$s?Aά3Q?ߔ|!w3x: ~l1A{s٪-'l|HhuDJ}0j0(?ZG&Y%gOj' cU0m-:i_WUR>"|JȨ䮷i~ 9Wr:^1#5k1Nk[Z*;?@:~Cct8+pJ5*5bǝRLD;3-̇K8%SsS:Xv"T I8BQ̿xu0:˿gM;fLBJ\2TYaU5RA0%aq#&oq#nj^ 'T7ڻ,_ˮ=dȖNi Qwza!]×C a謯lQfx+m=U'xE5z3%[)y@>_ۅx|gp5Ʊ}{u"[33pd;(hRG tNa\t~oy{O}^~_9~01tuWꜥgizgdmqwiX[[h! QUFAU=o@&y}u/.PN$2 }Ua;cd&) Hk5D498a9σɦ4R`?>Ȝ}!ʿgTAP4/b9ސz(@> Og}V Kb`~%;afz=ll )e'(il ˎ:axB룡6ONC.7@ tW`ƨ%y{>mq/ݐlsjW4𥳐쭌.~u̼9x#,auҫ?9=Q/&ɮ[B1~[VwM^s fp#ŭL]1uUv#@{tr&WDeqh '=r; A禝yB/IXdgރ,moKx҇F$9\ @.+N$CE~hWF$cqe4FT#5.gm"iG5-F*9I7 B ;ILag7w`BF#m3`d&6n,.Lzd"J`ÍɋmHN ҙ9`: XdBԭˠ%6bٓ a 㤜IpnB swJ=MBP,Nwo-q6QġHJ@Sփg/ Wp=-`lzV$ :ɞ@:b;|wC<8$F@bnG*hݙ3jm&CQ z!${0|(_CSOl}v8IvwøZf"! 1PD*K:v̂44(ܖ̧"KeNm ӽ.֤Dt͠; ' BaA(A)鈍D2G{ئ E$$J]xB2Q (ŊHnw:plW~XhHaLyE .Ǚ0rC!l fB&$ĦLҁ;E qw|J2ÌNVBxƯv&ysóñD-Sy F slcbcL˨47oȇP#Z,CM{k&xoӂȸ=6 3!.}|%:!T a{s&IyA"N(_)Qd ڈVH΄jnS3zbV `]~45[ݕp &ЈIF.1(^'+OS/?s.,M#or58%yz}eKJ^m4# ص 6 a&`ԓ$~p5*Nׇk_Y6Qz;󪞏[xϸϽvzi Eatϓ)3 N1Q v\ 1pBLaMDt{i|C96qhwY+E.ݕF->*luWY 66 _u|]|`!!! c:y,}yEZc^lϺkg='} q7s4tφ94kkVӫ"¶227Ҧi') f{ƨGw^E/ny=0^׾LqkiyZ„߄/P K [ϐ×8|e5D^ÍHdJmdK a'Кt2l  ͉2 ɡٺC.7|2TKg-G7XD MEt̖qn2@hzV'zHU+'680!pUPPI(ewqY<}c_S1uUFOWf߲K[j9!ҭ$}+K綮CXaU%TwZQƭ{l=5>gV!]d4O]짷ʶWvR'cKTU*>|\U:UGV7R)mƦiUl bve;o%pN:W xgEvU*yKd[d%LjyչIh򆔄d!k;|~#n^i\և6.M9=<oŹo͛F]}#3Jfn mTa2O3:)JZ뱽p U>;WIC,CE/٧,nȆiZ$ d@y0Q^C \nٔy7bfy:fP~}D@wEaF,ٴAS*Ė| 7?iȣNjM>zծ9xcJL#; ,>V% bW2@&jA|:H?;h麡0oqU=O02N>Xl?)n)pO&!ط_GMJ1a(4. j"%^e^eL&.I$oIws$;˹G1fiehO4_YgP9 ˭DTI1}FpU9Kd//{w_?ҦeUiUSUETDCn|~;<*0#rwG'#"BDC 0K)B!CӴB #H_fy,J Q{:Gm 6 :ù(py9Uu(mGm_\L X@Ր !!HD(] *>0!MR@qneZ])yLS؉,;t=5`2H NԪQ:\wpdh&*@yA|r0QO`Mm f{t( S*:~s((F8TɉZUfWgɏDp:MY"f:rpz|T>*ND kU91Ӂ\}Ӧ> Bd纪7ezɧ~<={Fߨw6^E&=N\N۬c prT4;{8E2&- n~W\O0.ќQkk-8X;6 SYף|uc]< $o=zʿY~t׍k+RfkSjZ;`pYs+/8HwSǵ>Į R>ʞ]I80i4k?#Hy)c5aP{kgB{%D+-2)O3E>~5# Zgwo6}64|y4souXiOn7]~o!Uu';u˸\,:9u5NXi-O{>?|..Y!rKodjKSLG^'9Y~W_xx8i?w/7l+1=s1 ҵ~v)]{.i1.տ ^j cAS0/1h`˅X:74H 'eJ7.=SvD?ңl +{vSS6jS \ժD{/bU18D:)KY wZͭ(X9WvEZ= M(5fnc9Q3wRmns< qۺKv1o[nw{zm\ov0Z޷wY0q˾&qF3yc.9.9g1ï19)ڛS'wֵOZQD̶8SKlպuOk"nl..ȸz*՗qtUESUOETQOU-iJ3hO3UMK3 Y.cIQUOETU=QZ,**}W|LsVYV|)Mg/TKO ު*n)W tI$#j5,+qHcIVtŠs07>_ **-UUS%qQWsw17w8R 왹BkzUT<"syT$I%N3N#|m ;.:4u4W?7nSݩC,=wUNhX~bgdj-^5ׯu4dU>S!gK*y$ڇ`7KX9JcsE``8̌,dq:_dY]^JN=[C8h-ټ9~a}⎝ GnlLщvL3;Qrc 3{'#DjOoj{sQ|:Zffv>;A2VMCw M,\vn>Fp*gqBPD$ΖHOo:VeaLܘBĪapr)#JB=<:8QS- sXUUNWRE-mֆ 12GlNcLy]kIgd[icFbarAEd_k[h^P8aúV04to75/ SR{_BIϺ  vo,}'&a1/{1ETox͍|?2 # ^c4{|:?s'$#/uGB e F\Q`_bIIHܐ ɿcRT8>A*R rzdxD' pN jIRI'bugqRc SIoBC?(ɡI [?HX\S}zǷ+,a bG7},L͍UzQn)q]06Ρmd:nEZn\lxۈ ;O|gSp;,qQSܿ=9Jv>)2b Y~^8'zK P'32 0d 0Qa8>'c7s}aݙ[R=Q!@%X*55!K3}kCUH$ṗJp1.ʗf"E%j7RdC֜-Bʍk^QѣI8a[bj30pMxw"B69I6j`2)`|2:EԜ&` !̩#(7Yf3i41*@j>\~V6Ɲ=_9G ;M/NY 4W7 Sp=䲊R[4Be4o;!os,kQJ!"Ǎғ+mk36ۺ|hb*\a풓a0<ö㷩;,Fq54~f_a[Y2 ͱkrnf"eUNĹH@"*%\^巌jb[T[%{2]c{Q7(}Ь.7َy;`\K.x_F-K&>畾x%$}_S S3;AD4$]̊S _(0PX8DTd`يbQ3SjPo&Ȋ<6Jxc`EnaՌSU&vȱ8\ZpAP2o@J#78p(W(8Lu q*L]KG  SQ 94h%v`nP,ö_IHUq5'L *X!3](Pn5"fN-3Q +561v HI w-[r,8"Z2`#RuPC6vw ;G>~.EzMۓ㷏ϻ{[UaS%H$!DwQX.⚆:w^&?U!Mlx^)3'$ss;<#mf"vZ CpFaTMKEŝ`8.[˲ ht5]qoۥ! dᏬdQIid0mżB?^^yw\gO8'vd흎Mv`Y(|U4C*ۡ`ԂDPyi=pOB&wX`)y1M!@l^q+fIנpAtSD;c~f3dѪMYǰ,Ax@qBHB05|&X0n%# oiM@Mg{aDIxŖͿ G{{嚠7+=8P+}q@܁CI C`AұF+6Uq/[T DNzPV Gw~|\t"_6"Ap>r'!"!`" h$ " & I "$@"id(db a)"""" FBTI& h!B " D  h*)Bh" ("JG %%E)i "idāJҔ*$J XbP& VH"@MBRJRdP!HD#@RMPK2JRޏFd?@2Nj6Cԩ(J4% ؂*!H2()U)ỊQJTu!B?iQs0Ȣd&& hb)i`P (ZU AB:@BD4PJ$0P KB NFW.~^'<%L{C7$$~9C0L% @ULHK0d%RB;LB""߄ﻷmCƔa$_Cwc@(`0=!Xsơ:d/rR:@D!2oUL@ op Ɓq 񈮩!R5@q||bCBMZ /nFwBOtr+{ B]OioXxaȠd8Fssbr# (ĔSjGK>IvPeKh?t(t:ɈiUu_L NQ@.TC~~  Mט5IU{$pg2mL=f&Iv~Ta8]~!yx㈰s[f!R|i`M"f=˺^WD`3m&8~[d^o3Xr }ëq'bREM+3HvN9OX4H51RBL’Li?d_ݚ;uI1 >OȈρL zIBf`Td% H1@M23dJQCnCC?,Ig$:wF1V$M*//ݟ!gW~vfnp FP2ƧXN=ow))S]XfF(lh+@ >PS񪒫ϸV{>E>{n@u̽iq%VY4sf\yؙ﯌1=1o0#ϼaQK/spO-ܜ'&BQ"5CsoVtO77"ɱ L<zbwL0܂?"y0=taogHfv㌉:aG dPNbCb-'MIaNX~ҡRvB!Cdw7g'%.0rxad: +!4$O8>u"z;s8rS=6+܌`cJػLrS#7#ܼ&C3m)Nya/E5:F?,@q0&G*MYY)*0pԠBvfN)$'=e0ТM;n3$wMeYǣEvP[,;]q,flS #á+ C[7ƶV; U. ={UG -׀;Apδ$$(^|IY{!Hk/;͟/1a/@Z<[0=yrWgNƁ~1{.D߷9ƱYfӳnNː '\8%HʚRC̺ft™%:Gc,aS ,vC4N7]f8vfA4ECJL(}xCi43CԶ~?5?h< Ȣ))G0,LuY2 -E`pkQ*~BеHV&E!p&_lP}d61NߤXJ1gVۖ7i"~ 6XfVBӃLh"Fٻ ^j,-; Όo[Wt8B%4}`g `&#sk4ׁ\វJp;DZn?pdžvp'H8狉JzYRa{~lLˍ6B6ylg+Z\X腥TAO%EY A':dc YwOsnSZTKju|jnKD`+ 32%o@"": HӦ\}G1A2^, )I- &˻uM RI$ҵUVUW-[ځsj`_ R8ʹ $ ̙AQrCp_ABǔ iQkP2fBd .Gכ ZOt,D^.en}#)u`٭ Kr;SjMb];ddo1uFL*v:nɸyIy氵q 4m;&b8Ncp% FUtvdadrnx9<dHm* F6yz;!8|)m-mm UURPYi-6J%h)SiI3,I-㇠q=P[^]]}=8tZ wM6ho֦u-8*ʤal/nȂ4t6/#qAI$A-CC#EaE%}݁ٛsY;zu׿<]ӽ-3T=pehwCٮ'wpgq\N+:5-33$Hy":b" " >ggKF%M A> ^z3C2UUUQ l-,[E|@>D<01Ğq518<]2?Qh'bv0W213I s` ̰Ì;|a*`fk c0EӺ۱-㷵 !}/ɐeŐɘf[KiYw*mJ"ʮDQm`6ð ?2=yyϋj%-@2~p^Thy9n.^%M@6n:v D}Fh@cN>7EgB*cWWQ f;Og3HMb$S$J&sUT CW?pn bݶ(;#J[-+BGzȊB^nÞi˰Z-л S pسԡsC,/@)>-8NCZ ͰACv4#g Ȼ?kq1:<O_LccQ{RrXTs&'_fs"ϯJJTR??G$w~VA瞯H 7.:wwTk=HU~ڶs 3pLV~iP_yDdHܤrxebE)|aFC 0<Q!2cjpo On51Wt*U& juKc5(fI=h#_A] {tBwbqͶi߽4c>aޗ+\1s^E"nPڣH#RzsۇDh8 B*ATvzyնlR I:v7?c;j&Fs:wOSVRTD_=,L dZqb=esT;fn/\v3<$1TAsƵ:z5n$6_==hf[;=FNyLk^:򎶸q@t?>ث:waZ8 4jǙYkꃆ؊;|Ŵ%l36 +xQ3ѬuMުSհuǔ/{pk2>4ooQu^;4;hS8訑SU7[܉bf>S;cG NYPRor1R]ùUу$`GҮ k{; *qP+R v"^] *v;$$8oBlc-Kb E4S%<>XF*'(dV$Yi-^﫪Qi-I`3smԪxyEf}*C&qR_'Z3p*ʜ߷:ğ)Ȍ]?\D&[OW>dbUrǦ7=b⇢]84ۋrrq_ ӗ4:xx&N)'9.G%_jnjXX?mKWd;Usmtn?]WMNOlVCNٷoI)ˎ_g]N.> &VWW#-2ꭍiYiuUI(" `]|-< {|p2CVkY;hRxA^N Qsj\_91dh#dMXT-韂~"Tޙ҈0Y$({ZvGg.fMP X=D5${ I{Pӣ2k kyFT#Bns}܇knv:\]`G9RGQF?Z}ssMg&a7b[ b'U +8|;&~QsDۛEC`XmbַY/EzKga퍨>~0'ф=|Dz"I\S;$–*4xa}P\fg+^elt(z%~과r0a߇ G- 윩mu0-ᲩtB|kC^c^%HcH/^);=l{<Ld\R+H؋)Ɏ <gw9d*.&~C~Gִz=<̺t~[{:mm+[%ѭl;AF,D={+=O[%u+A/YB$[mnv޺"2XKocw,7qIS,?ǛwqӚzyۼ>qs 7~.xs0<~ ݌!vT׭С ߯؛5&=*Zs.H7 v e;|w3QERe9VpQa= j͠l* K<ƦgU˭iiYnvUaDq~S6&>l<z3ˌь8TȮ"N1w? HZ8b:AT*W=F66qryYVW*}kh3GQNZ1[u7{#0C{LS&* КNyf;s>!W;1>$W2(42zpDWltNEq1"醃 -fk߯q*,wHp؈KvCqz#Y/ QYbte*#Pu9'V{G_+c~O>< CFդ S~2 f)t";\TDClC/o[ˈ~QRfs%tSUWvSpë~O i*X%b( ?!?P(x$@`G&""D9$+?lOmm" aQ$ D$0ExS&"Q9d.#f4R2jHKH}[mn8e!@c3)0!r}qDMj}6m??ldXR&$z95MB[.K#29*! J/d&J:`b',*~FJp{YdJ& (& a ؀y:/pM ;@K@!( CH!6ڶD&VLeKdKl6';,(2D̲,Td6M-S6kRA.`j# x+m(DBc"PQUV@$"RYʼndfPCI5# *R8f39J j R$&A0=Nj`h1 ^`1%{JlXc]BhG$Lb^0xz<DQ@Xju`q/%faHPa;!NSr; :eyU-#ȴ фdʀICΖdb!K!RN$3=%*3@$0;jé@ɠ,ÈZ\ִ-Gǫw| 1fP0iZ|[uQ|ڟnk 0$<IVJaOX9?ňv}㰪Jkc=gnIdmg6"I0Qr\L#H@$!. ҄I3%Q5]ū*ɠ́_iYsDGw3y:3aH)&A|)U"OfTD/_^;ܘ 8EU6zÃn,kzc=y83|'AGik㿯E:~6V5~_{_Omָz+ApWY5|Yvt$L 0gӕYA?<4n% nF|vHG))a8Ȇq"w13~qݴiuȯpc6#UQ84^1 xJ(57^`t۶9a5c݆o/fc##pHj4w$!4; GU49 (B @_d, 4 mz[UF {mWvxN&ymI)8yF¬S9AۇWB!f9ud\vcH;d'1~4 M?4,+Tʒ~͸%fTETT8EFW<@yx LIVû#w~ 9mDhJ ?"ǷWD? K0h@4Z y&OA|Oּ4$%E4 Yjv'zQv<{*?ކڨ' '$ak10%)Ք*L hC0Mɑ$HĂBqx#ޣaql-Pyw'0 (BAU,9"Gae_}''hyuOg5SB?я(ɼ=(7x)G B?":*#!7T0zɩ}Ntʯr:U }!9Ohu[=WLt XBވC'@#(d A|;GloVp!>{lz?#)B>n|PC{b_FtVrN[웻p2ZlI .a4" EnCQZiVr Ѧ'UU%5G;5mGK;-eV nkbURx ۡ7nQCĈ&;Fj!L0@;hߤoaC/='T5gMSϭCELo g6px*fkpC*l /d=ȸg"G$ 6x#P{W>u4h3 ~i'{>ۋ1.z)c!3jv~OYToEP3yi7돤N,Í28 m!aA$c#eZ6Pj1 He$*Ymogw '0t{|@±eBgaI8z6w?  o+=jE b *Th=>:D0 P@1W_|xa:#ͬ"Aq5.0&ZxSUJdS&N6'~{EeE1_N ꕨ t:ЋcqT%6K:!T ~H͝MYc`~("Ii?M"G /$<mݣL]ۤ(Ĝh8k 8֝10u|?'D_ /}'ܛ,E/) !+Q|N_K%.b(STw뵉om?X7K>õfĄF/1854)S1-SyF]"R8~oOSAE.ԕ|scU|CU1'ntoX"t?s~)sfyg{"$ xɺ2 ڈT@q=^'͋ -y+O@Z:{]ƓӱhL+.Ň s)rGJ#_IX&1ř0w^Ǥi \P>؉ ۟S7i; >1wX2xZvUHf vh34 Z2g!ݞ%G>ڪ]HO˩b!"^Vĭcm̓Ta M k}$01-C_H^L55nk%?`>['Q$\ad r0^hyƢ'ߩ;_"W脟!U?V<:ԟFV5jGi#XF?:m*G?A+fDž]\*I7ru7@51urp2QD4:9i)FP2ꡑ5 IKz'ACD (q89l8x>1pHiS;T~Cޟg꯷p^5RTZĐ!T6O>KOC,cfv*$!7PK2*E`ep ÌfH`;q ۑ;;>ϭJ}@2)Ú0]>ӛ47j* [.mң/W:ɪ&u[7NX=?DL%&;="0F+ψe~qY^y&]:C1c\1d@qAI 0nb/ޙ) 9W4K#ɳ\ .wAaW:(G<)Z\^;L#^`|!}U spS@j%a?M,I4740nV@qӰ3$cW׽1 Z:x_ ?5)<>bPhT#ʥUft*1n CX&ծ(gsz; ##iyMW$V+Di&9s 0E(&/\C .%.e#x?rNBse"ictƨt,`;#PMi^WB"P4q}8'Y^xqCP|4 u!ڔSD;M.@PeNs;YMxj^V 6; BpQJ0:| 0i=t$`XD!zlE jF)%{-D;pmjn0Iڮ!e+--&xz߈YA>ɥCc ud%JOWIWͣREjgp}͐%1Lԫcd{f9ʇSNPN+8ƺmUO3ίDȌ1*وpݿ#tPC ٚ_AsO⓳  uQfhTkә#* ٘9h^D}LPLDO,z0ǻN=^$94q e#Ja>T~| xG a&<78 `Gr QsP3mVKAH,f.O?)N=ScC3C景(f ތ jSI&5NAm~<_cuwU eUUf޹gjL%[a&bј9eߚcudV!2W*hz@?$D<{ vM7=G/ pnYпBgGꅇ? f`\}yahCjedւi 9I0+yCg;ǼDDX`'fJ 0qG#@J'5My,bXl2`XWCF#-ɀAGWWw$+$yTxj7x˹( I}'1UUJط`@QV70Q߼B*v}K~bd8,t 49oDNA,R~c B؞ mK/߰~pOpCr$hi ͌' |Cy M"FF-O "p?9? %?9}~?%*$Z]X|=}Fʥ}p-[Zgvzt3%=C!~GHD}$:v1?y-R 4< 7!v$q .FHxTjl--{ORHN,"2x v2hڻ0ͿTO *tI&h ölv6퀨'0*3/߇}wu]p!]u_|W3HԺO@?c@?Ko&cп$惇NA?zjzc:Q B8>H#vM2l G獟M!6{O?n$/w3ƚ~4QB(=7>ށ]-»f DLF$(^qƿC,`i,4i2@T\!pۢ#ED/Ll0ccG%xy70D]v*;;$$S5<|~_=&nxr c!@Hz_٣ޒ_븤=AEy{8F䟻/·{R{^,q72?KAŘQABȞ(:!^O"%B将;̜i8jEgc%Q0Xt2QqUqd=gmuO{4do/}#7Ϡ':z#݋ю-<`˙۱'%wsǃ.?  #Є"mb՘F;NZꒇ{Q . L`=xVia&אjE_ XUVsr7['s6]JHL[E|T<=+HlO#Kl6\6F)|QR;{Nϭ T\៽PПB(1?,Kqx>8Z%/bONf'ԁhP2~G]y]gE#wf ǝ䏠ĈH" {BCô($Fù_$2u,%y}SUE=Ry!N !LE_R uv>> *~mVA$X=I=F_.<+JPв6>y{X=kpz'2&y(乭l\(y_NϱGt3 ?;{Mٞ[^5򨪉BI%|vlc?zب&&N搒GQil_No0+64;>?þ( )vvG5ae*}ث;D c6_D8^~ Hregks't/)NO/k4tܷWezW;u#s@60+"j!)Ϫp4GY'xq EZөa ':3,zZuy_>WX~*oz<:E=Aha̿wY8OȠCslO~* EBPAB' IE4 J$cܩ_ Upq`52 hCAN0ɨE@$Bqh`5~u17ǭJ?'IU(=tf`2yƭ% gz1n^[Ǜo9ud@ Yǐ<{{~+{@w`Aq/ }Hd>Hgk_3~2M^?TH]ES ,Xٮƚ7>l:$u*D)yBjwm:ըDzJ(Ciŧ̃ p;Z33;fô>{wbyn;A=$((}sXIźP O5B7 p?t;Chs }vQ9Wg(098П2 q}gu? O1 `@}TD6h!vGZԂ!$!*:9]0G Fsߞc$?^@>L3eT>[WQ8cOaMfa(z+f5ӣMJGG`};&אRk #t~ɰ cؘؙn$yL&Lw+L_G$[qrq=33;7&wxGV7n[\mpbZ{)8JMTo\>|1dUPiCdU{NLځRk* ܼ2Lk*b>Qs`3F㦗uwO3s}νPIS"IEd' @&\m`"o ߫+.I:Pw0g0 e069^ 1̛ږ!絃CS͋͊f`&;j|C3cӻ0Zy趛N8!ӂkv ;d%A&a ^<,SԔT.VYS5.^8YS%]Y/sKћlsy}ŹQ+h$r)\ 5_bM)+?l.?$s4XZ+6O~c<6㲕Fc3 %D@OXp]ReHD??h,G8CH 7sq[$|2|5沣9g0eaڏ~~@?qlq!/X*f =mi|B-nC23#x8 .qeݟm8zD@ l5(AM>")F̺b~Iĝ]oR(%ga8~^g\y[穑U'WsOb}Ra4DW$?0=P<־g/o hH}:GF>J2b"%fe1SDv֓} o$ =M ! fN' ~Hp~^rw΀w$$&q3vQzϬq<')F,!'R_9 O}>ھT+@"8 '$OPe::*2*`"nbv]Vefa=o.kr6X-ZpK:a|tbY2@k@9}TZ=>RR>`crxaFC濡"GCH[>'!=Ÿd!w^LfMm74DP*%D%!l)"u↼='WQ!͖g;j_b}n_ C*uD|GH. lpȣxAU Ԧi/#!\(Pt3#`,Rn0tmB0pp{8zTp1lp" uux /}bɓq ׽#n}Dп+K@}I/P"*UA rO1x7< D:t֭$wṆGiԝGW ((JK!@xN/79ԳLX DnQ:\zS /y#_E 8;8[)ihj*Ƿvk~s3Ѭ,m {{0Ƴ0iv3xJ# Y<&-$'Hu@:$t)*ЈER Wwl3}ykPؠ3LH"6im(wj:CEpD\ }/ `~b}I*Š+V0AI#ڧƇ=ƀ`L a^@Js8'E` ݐQ^<0lSǢ_v wyN{wVE0=d ޕ_OH);P[ې~v {Zc@~$DְZ~92uv}*QbҠEf ,gxY*ׇN\GOz&=w0QCI =]C*O*S= ʋ.XPA 3~b80XG!Iq&v(FJWJѯt0Y: yzoAclc98@ƿ@x {>^z1Xpؼci1?m]R"S=zǜkb6c("ot,N$. njuDAaKwod>a<Cjݣ^s2Ђ^fP20$÷fBmj5A͗T Q!-kZ/?cOz^2n.ebx'fWg$nîbc[m6f:D<d =f>1̿DAǍM"N+hF}}\/q"n7ɋD1h׼fԪ.K$/aB_.0Ԫ`t2!X6xČW їΡ2pS`0BnLg'E% ? û6.oܒJ_/D(wdO-9 823\p;A%ft6p'Bc-EOf܋zLIfx]@甐xԿ'=GTױwON$< aq%d蝧$&XQmӷgji$h 12QLD/'<"TI>OPTC>=PР[S*L!Xj;!3ڪ  ]xEav46ګG(4TKm40ld8)]"VLPƵ!OqСm= D ` K4kPx6? g n[lH9I!&BFJ}G!Ad}C_2!ݤmh,s$hNB@ʔ\0B*4oI%:ׇxmy(t'9H S ocLDW,((܀x'R:@ C6E=HM @"_'fLE :4cENо!8⍑Q< K|59϶o)#_9YnWIa}vxLloq Ƹmo~Z;]Rw"H!WvЗ&wG  3wf2$/RT g.qS7}0 `#`Q`kC}=^y,IP?]yN)Q!]ZP֊Bs') )g DQu`B]~Q#BPGQ@~9piO< TS+yG~=>۞n[s/ 7 Q㯼OdR1?.. >mO~7|Cac(g*/ɜ8 sU.$^/;tDΏ2ZԞ=zXFC(2?_&29,#8P͋ymv`d;se98GG,k%6Q'WڡIV; UJ( R "M0! 8#= W7b*_pMWp1#,b \v =o< 9"`]I 40XepGr89=L:?qLH=W$JEmgf/+>T~` T Gs4ExPgCt*^a ]M'IZFK5ه @B~Z(n2=ڮ?![OxkYB={Q2CjؙL3".K0 j8s-h]aE $(s< C9 u @pHCK@C!٘WoL$I$Hؙ'2L؊2ofay0a^)%2:OM-'vP*u%UW0Ԅ綏dl69u'v]u!)Ŷq!/l9៪܊ f}C$H6i1U2T d H$TR?Y#]=xpz%wmH/K&HgLE*j]sm2R)8pa0gـG;o9:6=pr<4t4 עY~m£ڸf Ly'K j-p&t,졉}_+!Db>"1S>(Ž/֟bf d7ElJSN '~~RC?WĐVQVuK& Ki'6 K {BUSt}; 4QAGDL!dJH(~h| `u4FC\[uneR`K*dI`ũ|je fpR/HWUUURt^Y78ǁ(v2 R_hC~a Ɣh"Yw׷B :ۇ i q>C:rԔGOuUFԀ'``jy@RBwozW\0~pOa?FD@f6&0nX?2, ,,v! 6@\`p!dbI٠; 6oĕ‰KXN'_1PPi5|9;wij {'XT>x{ШqT(#blP[`VJQ2nC6@%b㎯`O0(,E)Q2+$5aRl!FMMrT ,*TV(Tb"k0*, *e]='$TN֛0nt} ȇ@4'xC[m qj4~s@!i|rɋީ}"hGPzgS㪞x#?L`%H%ªJb IUUGyvרޞX&d2Z#zkS@c 0-&1 nqٽHk3){|H"OSCEA]# ")B@!i\#x(u{}=OIۤW0XQfўgC /Ugs\fzJCS;-\m Uq?g'=}kn3l<)izlj $6\YDIlt`I UeL< l<ݥ݃9o@*j{l ˇ ̨V{ 3NJWC<;lpВI!'v6.$$s(Hٟ"8䌠X?qCoe HdT{t6}>(gחYfW:g{dԍwhW#'6"U]<:|?ޝƉeM @ CJs*C-hva6Yn}ckЋ;IB%,u#C>}ooHnM玮`cIO۩7!hpu J4>@MIc0 b3_rw?G&c-&d6_4k5m\;Z¶>~6??&̃ByBT` aC[oU5[x{hm8\7~1s#DZE{ޓn!ƅ3 NdPt:PwRhYT9A$g-6m|Z 4#]G XAF>maBf2zD 9H- HlУQFÀcԞwk}a2Ɗ7Ow7T*FQPPv^?M?5Q-czsq*dz@+N㡨t^vXL|ށm2տ}Kg9X^i HBS;r'ȆgzwW%q~I0.; _]#t<aW8Cil %6B uJo<?::i边 H "fb.a:>~n'Nz-pYLԓ؅ 8ɟW߁w@CPI'/y78#M\k(M%f#OFZ5p~q"vOSdA]Lw];h2ކ4~B/Yr*+_.d7ek6Tտ雇uX 0 Vl>WBl7b]|:[qQMEȘRX wAZȼw0!stO剹ff,u n⥻]'~P'pk';MssNޚ|aYߍ_ HD!J=<,;)yZ? v?J> Cg6%njQ4y?EKЎٱ]&Dmuf:EȞdڊzƒovʓz"lL< .nv|HF,[p]>W6Bfgw\z!:G2V3AR{]83G2r7\g[eBOUDŽ DyUHkpmYff}׾4 w5Z~x] x[Uu{',<UI,]2'jYe o\!T;f'q፝GeuNʻm}ܻtt /}*]P%^vXe6H['m8u)s|G?>͞{|s2ӉfGK&/(+7UWrz~[ẖ*k*knCf8_^2*f-ۤ3mN;tLidtn6S;mR@=7%ܛM^G__Fz'd^wĩRA_"W}RA<ևTx@?C?7?TCJto@_ԮZnpq NlK_' %i0$  mЄxEY[cyRlU9!gR@|.m?̪Ct@;O6lA+Ģ*E]gw.LsEEplji$Us(D8, (HHI;az,CtUU9 $" a8M d1u3 pGpEU )G_*u 46T'@1΂zakKa*ydCbCB_͞rDsȺ C Wm+)hNҊM0~;ٱ%OI '@\S/5"RР(&Kv'$8 `QEw rɇ,WOOcñrARGKK&gV!]` қyPVN1)U"OC_Fr vpR/oIvRLO;$B@Và 75'Ng<RIot*cx*^ <8nAށ01at lδ֐+(o0PjwMܒW.WKd&owͳnaΝ qMów "m!|fl09npthݬY-N3tw)#^cU^x|]yRI9h+DZE7 WbdY\uS7$+Jrt$K9њ\5^52r]bHDd4$Є'#b/  nj(j[UZgH/F}m|R4i8P sŸ1:uJ}iĞUtSDC1tLFU4"K  IE+0J"b%Y SiQTDJ: _Q 2I[ _/sE ZP< S%aO>_B &QʩIs*5n@4iK ӇR( )܄kx4Si&N {v|&pO^6iG:BTA\-Z|nD}IbHF(1|ۿI1)9SԳ҈İH_k-pI4&LxSzlR{pZ oz+!j{ݚ  043PF7P%čr_ɭ FN3QI#Ws3ޛ̚:hhB J498 v1m-0ar!׿.4cmUUV8RCqG59׺ < |X52T>[%tkM:SM'HQXr6iil*)P(>~HĴzM{$?>̿o|ԥJL gcFvJs;(Nku\47*U&)aK/Hhң{X85ߋ2p)gzٞ<H1s?c_U ` Bp9I7QSNѐ ն Ï :t.=0Nҧ݄;yL[w(H>'(u '9BTq9/<%>ր-8 1o*uce@u |qDjg&*PR䃘` `_${|bD:05CH!s%s Bz}q֕E<~7Bdz{y;G$#9 3-+f O5jҝ]aú-\OE*\#KyNq==`<h:iA 5PSa!bh>@'G*|/㞣QG 0!GikB* .@҃`]#m t~I;])!-ۀjuSpp5:M=B^m8'ARq n aiЃU@"IWX !M…<(1 pr{,f; &O覌5J(J*(J(IC)[P;JrA) VLq=gWT8!o2I1Ppȉ'4 r:v&'Wȋ% JEJDE(#)$3" R*{.lG1$J !B9ـP&MS)0JBC1*`-`54(Sչ 65F]BqT}'*b >L! f $qDwxlFMAzy/=/tيI1L 3PnADF9H88QL;t95y0"^f(¤:B³ u?yا^3IE4g̀C)Oi2tPF"ʟ`70O"<~eUMO;|#5apOb Q@}G1[!ǧ;33ߪ9D2DT,# /`S.&/Ou|>['JtѣZI `pxkeb .O).ʯ[/Q8jq8w 0;`14tI{UTO:q5YA3="#X=qxx^8JO*vv@af ē.JkFR}6Gpf%(Gi\mia;5Ç0\#׫V=Pέh2%d}\"b2r (%/({amy pUŔ\]r)F٦"X{IX[4k,`'a48ބOGĄIs҈" b TZYR.  2ZiG}hHb$ M6(iRY&2с 9 h0L\@Hlqc38|/Ǐ8`ΫkOAtuv y gO'AzLQw#RP0P!q.f9A U!h)-VWav @Х!]D }\k`R!],HLpD20MJ(CXU1 EJ,Ï}U@QIk@ڤ %"Y<:م:a PD #ʐqӄYzo3z`t* I 7vO؉)&Z@N4BSڽdnDq݈r (LD2)<(JI/M1Rv"GSfD`ɗP:=#h)G<}cgSU66?o@4DL| H/_2sRP#C@ Bd@?eX R p* 5%#$ҩJ1P^pĔ$JBJ5r1'ˍA{P!_)$l0J]&Ap2 rZ" 4P98Pڟ>:LZ)Kh=k9NmeڛC~jq4N4h& bX$!`Z,djkl? dr}'Lf!#EȩSa4njN\SrVZ btx# XCp"4 `z=CDd~0}|CooO}M'ݹgo$/$L@aP2xř 3bpͬGKt@(8B$Hi吨j\("jJ:R.ZbzlS U@u' Jh̙03 &vg>}7e#MI5;8²  u|f݆Ӱhoz'9 P0r n *,ԲLS-Ԧ cĉ)QthGS CH5FmF<6Ң"h$oHNhDBZh"1GATP%LCDP&=YdÀza-G90ATl< 7ҁ`=+q {9ܢEa<<Wl2n!X%D.D9z3`zH.B]s  P|2BQqYVyY*,@:Q-~MRӳ~cʾAI{Iմ&I,:ڴˆ)1u*"EFjXP Og=&+Jޗ%Ƅ= `@]U;K/OI&EY<:xϟ~!"v#~O`C2Cݰ썈w{t<ODJ C]p RzGA&U" 9a*{$! BhL1OD Ap%L[ RHfYYܤ@<ƟaDP7#CImlq>q$ "43ds#AQ;`jd 7Lp" ӢCýE_( ۴P,O`z!|ZvH6 M!]ϚOj',Z bd OH_V1 *m={A IQtJИ#%L@t W*× yKJ<  DDC2E0Sʬ9& 4)H@PRiSAP-PU 2ĔIT)( kPPOD`dgIѯ)yP%N X@(,!ffP2A&YD(LC*E2MB)V`(Of)t,b@J,@PD効ЗI$Bb΄ebw62ӁSQC5 JĐQPŅH$ ,$22@A*B'48Ǻ'FH>;!fjgKLM|41xQAg!_w߯k%JRZWVD=![CZXbℱ, Q2BuiJB(tS)!\;܎9/4ޛeD=Bj>xA2%Ҟ^Hi*5+!-%jZvq4I039h% &ev|!B&7B^ӹg(L()lBw(*O -Yìm?idA+?j΄ih#hk2@CZ 'N4jTMN:.Jq )@MmLΆc^JrȰ_qR,ϱ,EH(djJVP 12ZJZ-05:VN&9`y曶y@O@, C.g2s:&(؅ԡ)DCi{h"zA&&CspR_'m::4% o',, A|grqpX 2 l,VRžaHb9f{I$ތu ) yreCA9t!75&0bϰVTɣ%חۆLqEUUPAيSQTPTUUlzө8ɄC Xd 3d=RJ#{Ҋz/4O Gð$V tB{% ʔFx4~D$=]Xm7b)OM8qL8\)T I h PfBUI$M2S.L*Z P(Iz c Bd%Ñ0\lNAQCfrW8%!n'nζ&D=H0b&8 >ZTpcLbBEaF WS@, @,2!Ą]Ni`hvf8,b\T0+&LEŻCӤJGN{L+%;":|ULvɅ ~X\NlfKEl@~6aJ҄#MCT_XPwʽ@EO¦BB _fP-+-MO |~Ec HPD+#h]l"V@\Ʉ#3((YXZ!ibJ"$"JJ \C1ep,`s4h$e#`}rN=IxlG )8饼E<6PB>A=hA+\_yx_ CH!>G%\nBͶ=hwԪ)}HB09vλ{g_,Av `O, XqDyhbY(j" `pUb 5H-HB?l`Kt1%~OOm4ڞW H(bXJB!Cp! ;2$D#Cۦ.{¢$N)~ww_7o+ Q]B&kw1c}hi5b!stYm2@P"ȃ$:tAç ޕ4*'Ǩvp͕A 0ȟ)_0Z7g6) B&ɗ]k'Wa0 =!AgT[$aj + hH*tZSIjVJmP IH֏OƢ`,#H@CJb#"D<@o/d[u 'fW=䒖Ï?St7G6H/(P>H/8عڪw7^Ȣ!Q@PD1Pxϵzr?>Ѥ?32ksd*1栄P(H=ƻ+F?«,o/)%=J{aD.Ef L~_\m;/  'S>*$ 5B!R]FCpO@'|6:m Nx9DAidQ.QB8LJxl<} 2%m}m0y&؁4W5F :̔Б`sJ}?g0s~8ah?}֐]+n2ksLO c;K7Y)4YR`rfa&6rQI, !Q綶 ko2@o]vCzkektv#.GhpDƱE#-nnaCC& y#Hdk ;^%-T'sfT o޽AZ9{PAhu>џL%ɝ}$9 ][a֐H8q2c̓jh=& c^֜$ ɹb'Cp/T:l 2ZkؚJ`GL;mͷ34&١ tǀہkd˾0UY g¬fYh #iͰ3 dS@&LKh/xfᘷv7z3C7ntܗ B`"8@}ݰS _7VDA89΄E?߇1xVm n|yLtԙe=_Xi5iHa *yip׸)5*B[9דJPy h  bt 8Ƥ: -gp%G#a;m&pmD yztcA4Ʌs6haOmQc,#EgXĚ``vl#c2JRo>PtX= MM;32[z]TA[ӻ@ k2jZeBm!FіJ[nLUAg,9mlhݻ˓UNMOnt^(xu!e)!F7ި}0ZO@H2g&dz9(zL=ٽCFss'XJu#= d$3)c[s\B;n\ýrqw2w"\:3J1lfJb=3>&)tjWy OD u52;X3vYgǚzg]cfY]W\aJr2JMfFS,6^p3Tγ0 K~~"Hh`9öћwg0rraYQE胮\!0s2Jot!>~2vlġ^T(E)r h]ꉗoHx9'Xߞ?n[j/)ZapG7,cΝ\d]QSi,N .~xf2KE]i4-0u\n4L?Q;RxXFvoTtVAXD6 8;jVퟁD]marN}ݝ}mH2)O*Dm#D9tPrU@)}da88l&%1[] wbfbGvaڽd'ۉm\ HTAs_.\5e(8Cif6%c> IFUm] C8b CH`FWì0H@ZxlA,7` BĔg:*F@,[=|ǶGTBKYAĘ9=q!֦,)[+~:sWzH;bK[ (tM znwGBd'=w܏8f1bn 1nH>h n"&x* 58\D3UD`2ft60KJx\8fb{|hHLNrl\&"2[&ܬ44=qq<3 q3,e %cp<G9ǂjL? bmz:߉&#d0瑡٘D'k̽|^ZmvP2bUDLnHֲQW(x35q^c\:D=ZHزT9*Zc)$ɭ ԆV+wwIma&gMBdÉ"kC RT7i \ģhfj%v5MswΣbMV+xWz鱘]jUM-s.x3䃮Z#Km6Czdtduw8CGюC#-B]5eɥp3Z{wN ݶe$eE1Gc@X0zIl၊ayC3]q0-] r-b IqPzw)3@Lsዅ<9iA 3Q )@2)&T%h#В=P)9u&!'5:l:dP7(€]wyM.Ӱzꨪpuв$tyJʆՐ$p$ !K02>L0m(u s:4R NfO,)J )) vr -`t!c&ZCDV!67f2KK9rTfH4$ׁ7[[63hMvC 6v{<"kU:p7 O $D[g!Ꮌ&`2fvL-qZn,n '3{ab]:U}!ŕdk( A@CAY ,* TmBs'*L˦Nz,ŸEƞ/t'4%@2qFa6-t J(@ *\ٰ;Dg΃*[ePѸn!.Qei[u`H^HnP $* lcS[`.KN"`lcΑ:xx%S:%4EeW-5/WG8X% bP}/>ICnh@ql9YX-QOxI Oc|ZOLx7s7DKxxI`zH qk\ޢxe876^] y" kGTa].4s#hSvq^;ni3*% ʑ$@)Pd)~B cD!24]l#br#֞<`*lBD?@7&O"zl^ޝۨ u:"08>@p <'z!dy>zV=3(^7!JDGib;:3ļRH9@-(I.IEewG^F"ưsRN5J7F|vnEH 9^FHe^ vLlPwEBan Rue8 KB^X-f*d1g"JO ytq-6G&]uwe?8l{nͰz們PM-)d!;8vs\`ĭaDrȦǬc8@^ջ s]@Ĺ- 5+u)&p:~3ƜY Fɷu`N氲?-Ξ&#/:N|jW&6*s=m)Ơ٦Jt Wi ox8TȺ\#vUV[DDžmu*yp #w{Pn%Ry9v򗎡x0B]f<97En/ꡡwʿGbyWQ/|Krk:oKH뺉|$owytF6B{-p{;iRs Yڎ ^uY%uT1 ʑO E 9lHLY02H%;տ?| U8-0axK,nOPS.+AI0Tz3/]Qve"7:ϨV8w|\̨I9b3)ʕpIV9<{'5Y:4OnR*SD,~b}Fզǣ_ PA!$ 2kzx@L2ΖW%m:wCAxtU {{wOh|pPtQ@>3] M(mوw^k6iOm}#bUT MI~}p@b–QG2l鐁ma AD3j> ^I"!bJ("u'>:e00 9 ?|4HFa)W钮dAN>Oh2@{Yht@`"+r|RiqMO|'kv2mos!;2& ;dԤZL3Rjx}TLM]n*UZ n<=ؤ3SAeD2UMRg1" )+|Zlõamٮ4xjf*qu_Cm,#6ӌn bup&]hhd q(xQ=n7QCPK Cn<xfs+#\ ӼK3[ީ*2!XZ7p|u-ѷx9[\|Sh7HKDᮎqDewW2F|9=7ÿ[oGpP0+wf" zR)ՎŰ$'D /a5S[5g>#3dg,cβ~ V{^vfz2Yi)QXeBI %0P5OPv@sCC4!maV tE|/{92ͭTEx1GHlj5!3x8Ҟc$Me20,>ԁ}P 'C*H&9=?(@7 $PV#BsaBB]? $@p һL~6Z#*0"":b@a00ft(LHl!mv &ܐ9\@ GAPb<QrUCv`Bwי$ (G. P Q*DJ*(A"@`D7;L(XJ#5`0.ZbAp$ %*3cQ‰% )FL+y KB(CښkufMGHJ TӴ킆(D)aSpq B.ĀAu;tqx*+*+1GP`8$HPdhRQ mJRhiPPqBc$JVd,i0#H"Ars:FG Re3$VZ@D1̪2(\āF RiؚޯE=;y`.l! pObZJJ tH2 r{= 9 =r5AQO EED5@0{s&Tb0&2$=r`I H@HbAIeRf;g#zu|î>)OЄaC  9 @DR!$nV3?z(hC#"q QO.x5iݒ"U%#i gIJR‘K!eisȮk=C4X=IK0ʫ & `aPkqIiaCMo[>y8(|l I-x\B%d~'C;֐@DA@ ^9P01"D39d& B$A!%%4x*|ÌH CfATf& "J 0@L"#C LD@!S2$$DADБHKK@T@A$DK*RA?ܿ?w˧wy U9/{UNb Qfo7: C͎RLNf30ɉ`;IiNX0؊lj =q R㲘M;B`H0!G0>l:UzHBU;76&PA! *[< $";FJOeh@'wL^" DWdMPBP[_(fqm([ Pi>,%'j#@C]O5 NO I-g ^`;[- <H<% SN5-˧:vlVHi@K˜rsd4bK@䍐`6E2n^,"a{dƜH/aL) $8hN$V`T@m-1FBZd","%JVM!cP̄Qb3 `y0b" P;4.1I ]8ېR_@jVP^ v?; , J5u- ZLCI>:Rc6(|GmN %a>Zpk]RuNpۑ}@:`cK"Qd?:%$mhxUa}~tNNB41A@&{ ԓOF0&azTDAx)SAr- 0@PSP UT%D Ԑ@ݧyD/aCC{i3 A}* $u^H0$\XbE< kNE (P>!H[N|*Q:H_g]&TM(v wv.sFu)0\IdMM 1d(E);P;'wǙs=8#HDF4r!"Nqѯš_4"ǜMSjiǟt/ʝ9'9əhfEB#tpB\ kNLBqCPd/,`( &UDi d&̈́b:#^J^p1"3H*}|^&r2@=vba@!Qj#2h:ZPF =&1PGFQM/(C B0֥ A8IBؒҌ A@BHn[0 ' ٺJGPa d4@`O$q1'(ѥLZH񪪙)^T*[Mdv%dءOXbzMGCF(x70+<152 Y|2X4QIB$ʴZP"iW*bhXCA0 4 +N1 t6B U SƠBt:PqaPF 3! GEEo#CJ})'w{d_N!DlSiLD͌J4B VA aӷ2jo+,́k+*(X. ,J%A-q5A)B0a1oĪLq\}v>nuΦ8L!ކBR{,Ⱦ`BCDU*CQ]w&=0<*ONՐ6ȁx $ ?0^ {B`P'09<32QĊ7"Pd 8(d(3-H$]8A2M1TԣaeW͢HZL N(d3d%q9SU}jEx$rAUeWjDIuS&5Rne4P9 B ߃˚+:'kUmMKb#H F&$8mf,7K=!dF Aa! @%#\@>G7|Z]Ē Ѡ ( ,2CPxw#LS$gPJ@n@%!b d`RJ*:"F@hs&aihhj ``&V%8,uD!TC:He_e*B߲ RBT"Pb(eȪ)J ڃwy?f5FPrE-P)JdRR-!,A SE B #@PD%BP4"4!@EA%&L@P! U@SQ0DBPU$-E 14( T),B!HB L% JHEI2RP %% с߈2QR<ϦhdFRUCy̷%NnڮºI!Whz|gT^?rRڞ|XfgD?ǶY-Ye 'P'G%,EOem\\:|_ﴛ&5B|=> T%/[-ŗ5-Q3V;le"" C*YR"^d>\l/_P=dT|^tSHXP=SE3O`rQ4T3UU "T E4QA -SK5@LRADQ5M*D$,вUIU@+8 ,A .Ve% P3şOK*(iH18fc\TFlZJw݉XfxT[s2WC vH\Dg0RwINt#Dqw8v{3E4ׅ]4Eb"+NNS*_^#讀(3#hMG!`Hm`A'nd8Y'/ Aq(3BiA"6ӹ+ $rB 1ʀ))Bp@wMI?[v c`z;"b DL&QoYZ@tCҴƀI_Jr¼V` 1zC8X;pQ֠|c),@dJI2! L%) 4,S6&c]&>qATR}1LÀՒL |封x#ίAIL9+hl$́*n9PyGr=Y=h/c2`KE5 U&9 )Q(pXK!qlɐf4I熄p ;&FPG ef9<;pBVF3h4D6p}e Q!R{Z~oy68881Lےp=>[txYݴ:J&Xi 9T˧Wijb` j*A(A $ (Jja (eb&R"aJjH"H*)HPks>nCT])}H:@?'{N|Z#*[R "4#k BYq&5PMjq]-P%D#@4UTHBA'k A("{%Cne4SD񲂋pEE#2TDL%CmV/mUBF5bp5 *HaFQ`TP+bmU-%?leMRMIJJmV*PTG/N4DHPQACE4Ke" +%ꪪKX("eeLTo5TVNLTJ'qQRDwRENdhb0b ,)cbUb+ehZ#-TIxXoI e.Pl Iz#yoޯSO S|@LRPZMd0*YP E;/?"(t4B$2'YWR Xd`!VU[.6-JZ",Wh{5'd uR Ref 8`X GY?PL@+]uAH; u OIl-D*JRWh?U@/p  eR`2)3pati6);< ! ^*]&(479$'FExRhrE/c@!@'OlD'GR`4C Qk hj]s_;e)*!NTj5y9{41^!D"lFWA)HTQ$4C~ꀣF$X|C}hdRc&@Ot4kiv"(Hg柬Jm?OY[?QgB?>hE ]K5f2$d !5f%3R!6x<%; "v 1Ff)>4DXL*XJe*!T-PUPUPTr `J jPhC$$: @ E,pAIB86ZiE تwԣ 4[:Y my3= @!)fF`F!V)4%Rj G1sZf"fN:(j}Ɠ#)LC#0̃9yI M8>B:?OǼr@P_T)Ь%2WųMr@XB2.ɔ=8$AU_/hfj\U9u7:,А$I;f ~kx.x) CEBK|JFRRHAIJ(hZ"")*(b")ZTB &f jHJIb P H iVBY""Pb (! hF&d J)If EB TFE` !b$"$%B Z $$(b"h`hS>rT Q@f T574^IM4C3?NRAF*26;z|[eւ 6EP<99$픐1l!?X7HC%Y*8Jp D܏ߞp? ~22Gru&.VXN1Ʊ׆?1QćrxAm,7:f/JbE侩 Jö "K"%eaS PVq(3D@Œf<ʓSy94ȥ,V+=dYCqDEFjO>'T?<y=DO@lCFЭA.?J;~?aԛ{>FrV\J;PE(@)(,ҭօLW\ >T@D?irRZ>*!* )`- '#Tt|*aC' JӭB0D L($"L #0:! ZeJC"#$q%i` 20,%L$LGahD*5KJ6c@ƭP+@53)Th)FK c)  p+1LJʓ T~Ƅ(X>̋1d G݀*kJiAj`A;?Wu`Db@?؄C@E;!RXTz9sk?IR@ÃhT%f B$bi& c%,(1P!AD*`LHTh8J&hh hH@e $^91=}ukHw=TDMEI_4 >,tz}ID".҅a"?V> _o&b!ݧ)s=fB! !H Hhi $(Ye#^RfZ Lą%Q[AQ&&#^&hS>; i /uAwL0URtz6YX9܄: ?4N%5se~R>r5z:fj=8UL#=I:JM}”HIvHhd~At: 挲tٞ: ZKi*| (T)!eIQ<(װ6:(x 8KhP A %>_lD PP2@g]d!V*@&0=~-bzIJc {NA5S$/YLѣ@ȌxysBGTN^R J|CK;[OT|% HҔ%?{ @"H "$!$A9{r1 @F01(eQ}:Mj *B%b+* LN wqBr80(e@DIOj͈U?V BSH c0b}0"{M"~Gj?HIP$ aj )q⠯̥<Jֈ퉯@iN~rͤ0\LC%);@tX ?*ps@[,Fxo1:@Lz7$awu4]ZL1(n`b^9X]ם!jT0J$֐rnkXOP$g6:.NdHx"H" #10dg!ꭗa#`zS0*{9sGSBS [4f4&ZSMWӇaN'4QA "C@ĨK(,0D„Ғ1LD0 ` @@/Vl:bl`2wxwBqvJ0CgGix;;v4w)=}%2TN>A`;< E~F+61TT,ɉ7FUejF KNMV3P'ߘ&ݐ(H $ !HD(B0 ȄTJIJH&y}A ilEmHP H^„0XD8EJ%GEz T^!oK.+O^BKSFC/". S@RkR|*P*~LX:BS6L>R}QN|~9ACkN2^Ps^ `yT*$@|0Z4X۠QU(@!O^SB@T{ԇ[;Rw z9FIl, q9φ;J-*NSzwo8y ><{<䦱jy9Aa"GL(k4h-6rC+,[~%92A0C pESO2U6Ժ8p,)11ہ%$aeEv:= V&݉.AI b6DӅ!tD03Ƙj6,$YD9`ē"%Cr5QYI3X:@=M=sA-ԇb@Q$QB E,gRC1:w(" (*BH!$h!* *% HiH ",uM+އ\bE"d,c!!L0- ,*"#bPT^'`SøCTH M$CҬ0D AA 'S l~SdMfe9V}KI3'q5"B$GzZ'|1+BL1,)%^9/  RP*\6IlH!MYF:,$  DUJ d tTiy}pT_̍UVdJ0{-fe"0@iJ&$+U+g2ac_om&qd&.u6mrꡳsJ9pXCQSe¸D)ƽ\(]pjbs9;  >{fvL6ϠX,C&lVbZRӸȸN(d}8}J:|]ꄞvzȁSd:hT@NqOc9 $_-~9Qd{W{pʞ&䄳Xxӱ< # %QuiS˙LRC&@g4;)a#4 $B֊m!B2Qb=Χ|tE[nDN RSlրnɣĤƁ![H\]T9u6B*܇=}TP,dDET @8Otp}R#B xH=PaZ)=DJ`ꋸhwC Q=Zֈz1 |ew j\ "pW 1 AgJ wOiueQ_L)^d>Ϟ+Sqsh1AW{-pAtՓJC.Og/JJ/a\Z}~9O_3˫q٣`QT(;xu xmj,Jv*AF LEE41MdeJG|K%Qꩮ`/WsշThP ?'^SX(xsԪ䣀S$L?, q>& [^\* A?-pw wKzG4A)gnRg%J; KKGoBK p#,'wZpt) fX'Jf$ Ib V׸z/[%L12P@́TE@wF0"vSgh6p`g''o(Dϵ_veH% -? &qQJ5; h lh#;hvu*53SKgXKFT$R?`QGEZT^a#*R~1Go4TFĨ q[;(FN6 1{Li$MW;Q"qe  UE8BpFcPoDN+A) J0:@P3_XM$D?nZ %"oPP!RQK%BB)70ؙvD )$+3@D)J J,AH#H 1+HDDL/]ʦ˟;8CLSwa{ WpeXR?egow=5K}yY.sD9lUT'J'$ Zr[`vl\avL)2$@d3ǦhFpzSȦj;I~]5߱&t-7o-l g= 1uE?~.`{vy :.r, CVQ.%&\yLy[Yo#1P#l7Ý)|RCY(vs49^50/`fZˬ,!К0ӂx>sqSIJeXS)d!NʢĠ)ϭ*moWura@1mc<"6cmo6XC)s+EE];{$"EKdw&@E PPqD6cB-9fVAK7ȕ][]$6`ٵ^1u0|' vE[^6,1gx`)Qn N kk"̇Cgݏg=G֋\kOy&$Q 2#  Xff@ ņ`0aTŒ 83)8γZ1|q)P8G\1xyq+`~ 'E e ?kAq;x,MpLxw)Q)-edqr!F E7z<5=$yAt8W-h^[Lh)t0xE^WvVeLR) ~E~Z|cЧ6).-UaWބObO~j%SӲ\$pw 6 Xg=~D."~:G /6#0FHQh?aWҞݧCY 膳4ODEvek\8,fLkb%a\Uh)B=?R.h x}R !AbqFFX {B)* J0BEXdX)m"&edHO-2K8"{RB io4,d"0 )JDU (V2"*@BaŐL%oó#?_?:g3Dg8CE@L8)tڗL҇%ezƍ,-*@,A ZBTHe{BNQN&=}QJHH[ A~I1BĀ4LCƐbK\)茩]&P)"f.}ޡ'}64N{nȔsn}&ԽEeZxpԡ1?I8TgQyzr6i1 ( /$s SOQZGU/ o v@GTN7 wIũN1rO,kdі;ЭvIH>j "P?hg>smHyG1"49g0[_A9 Oʓ355mjXvm AjG|٣waOѯOUREf⎅9}<EC"O]UDiv "i=HDz?5LS錂#מ`S~}i}q "1C Yf t(!iX{s!vbRisPZXI$> =f9 %*zxA@~ʠS!m2.ƶ'sC<ǾLj:xzOQׯ26n MuʘhYbee},,d;]Me䲌R6B(i!fKL'E-R'lޓ%YRjA](LdBہuVI|lo0HF @B@F#WX0ө'\o"{ҒN^Rg,,&KD)L@H*@8;f]p8 N1? t< xY|DYPCB =jy 2Na7w^wȈ,jX T>΅ /} 8rJ ]B0c۳ݫ<:v;cC](D$3)$&L6&0)=S%A8umY$0fͶ0=z-C?<zl<=^Ò49ׇ;f 0* 冄/;D@MsPY851'VP SBM ǂCssvBwlbNN]43>LHnfI8^MNrs0p\dlh\8o PVVN s])K dE' C{Y:JƠ%Ձ4Cw cmoyÐo gO]^RQWiN6N r`M4A Cz"zN+8n0AdX4N' !)M bs x%+ͤQ% X؈Z B#-[x0̣$ "a0b0JƥF |} Ze*&9;=sRjd8sGa*|)bd8yE=3<:1}^dbs B) IrcY8c.60%>cY"Õ"дwp٘d á1)#8JU$I$ yP88D1945i$-$(f 0w2{` dtR3Z(.$׎Tt*,2݊SBxQr2*zBq))Jd% S"TB`A T~]p&}BnkS^槍3y**{ Bs>q.ѨRq.wY:lrO5epDx `E8b3#m Q+PP'# 4k2CΘh("q!)7hEa@ ;򁘊Q@B*#lK!j) !:=}l7N^J$!HҢ (PĀ1:9 D{ la3#6F8dFJ`|Fd2[4] w^{;JP̨JOI2~& X>ı:oY)eYDkw@u/yA:)_>Jk㿗䜟o=  ݱeZ7F^=(*i"&4uot :x&E.AJ=;(~vvB) EC {:r7|B)(˙2U0]ܸR[0T8R HH}X=ZYS9DMNXm̽Y(B!YY, .2X%,J20.I6aHH:@- ) adeK$b cJ0$I d LPԩB'-ùm8ɹ`4-9D!:'Q2" r0 S-V҂,<Ɠ 9)ZB\R hXбnIelT*)m8bT4xCuG(a%RABWnۍѥƃLRASN+ Y'n(''I!QCJ!- H)h";bm(=8Иa@i%RhHR@b`vĥ"Q)61i0&XG 8@P؆U K( TKkBIX)C6!J:$z$WYZq0$qa()hh "˜Zbf1 LpNCh @ )", dmFk'WpX?M8(`fSn 9#O2ySֻ*WX;( >>A \O`_/zOj =%%![L`Bx@K|6!(ò0QbB0%?6ds!{^]{Ї$@F2BBUiHiR@"(X((I! * }RE@J HD@FA%)D}B P)CHҁQ P@P)!"D- RA*P((a(H{AEx LPD!J|!j`yQQH c@0c/jGJLdѝN@D;x vraN!zIENF(`]0y r0:XtHʘi z&(ư\{^`Z~2Ow)@IJ䀄{讱9);!jXȒ8CE赬C/{\zA5A#=@tG3vR'?cɀ7߂I?N( -&-'9M Ccិ_RCPjcy=Irl!3-&Ov ddӉ2)NڢC 0Cڟ_vvc/oQpqBr| [WD  i0Ck}NUګA-Jai% b0`fdJ+L& x]\QlRBE!^&b3((PAx\#d)/1iLh+!0eb iR( Bu.ɧX R3@-Co2 ]b 1E+1AQdXQ3Lf2A5lޜY 7&Y&PCL%I 5, TlPB%"5#dY"Doqt#-ek U%abI5Du h2" ʋaeD]d[U)Qpd8d4$S$DHQXJ*cKeJI(:0(xI!ȎDP5A4K `p֔0 ihHP"at2p8724"+`8+3nqN@(4iMY9'BP m4U%BÐPHJf9 SBF0c%q5d#$A1$R U4-PQT4I2D DSHRHA J ЕT)5T%JAQDm6)L/[ݥ T)@n}e)!8QR`& f$`8J!hE0 $"ʜU V(MJd063XIQ] jT)N+eUu2 !lKE] DFPԛ6e"/!sb xJ1#SDCLQ$yc  Zɩx"Q>(SFTԽ "?]Ȧ"FN35ٕ =hzfM(z/)8cIl[^YdQ[aN NJjGR^nzHKTK?^] G9DFwS]$)>](v!I! [+xSX{ӈB6pYv*تhoLeRK)GBL@1݈qaq%GC*P)4(w:ghj^KL3^PiU`˛yIY7;AMrkg) %֒J 9CRWcÉ`=Ot&v^N6 D)c"1I-a `wps@2iAHh ”#Td,);0ŊêNiG\J""'kJ/Ooz28q S9"BD(^CLB(f!fD]FD"nȠ,(3PnQ00cS*d Ȅ4,Ɂ##fR $(he **&&Y*B Lbڀ>~p4(HQK>8DJ DR -gdD}4s1?ahyu[!!/'@'BgWP*~p?LI)D$PMA0P]ħgpJ1ʈ4'@^p}ݩO]2i0fT#[*G ,d2*ZkJbY#Xm?W.i\8H|p~ m^ˋƿ=|OGhJwyJxE=N !R%ITC!RMM!I LH$ D1 A#$P#/\&2I/ZA$-`JTA4MvD T((BrISӳBU K$2?=R8[v(}^E304"J@d`gEHB+>Fr\0:~a~a5KU48vG;{FP.0*O, ]aP'o|;cu^遘H**#;[UP Տ77R.>:WvqdfHp Q(X1 &9G8kA${BK0HD>]}Hu zBؔ#T&OB4E##Jh6+2%AT@# P@Ƅh37#-,dG@hÿ,W/ _TDZ0& ~xB* DO;F))"7;B~lI z_ HH r7Ɗ"-H&fcda+AQ| T( @42 @<)"\L H*H `* $Hip9{K4$AQDA,Ii='/ DPH5+RVXz]ֱ1e-ZQ`ɤ'%JݸxPUrbTRA4)qLc5 9A& C 'J=4H^QFoǕwTO.Pj k2@4ADJSvIO'E9BDDuRBQ@0/#H @J0 A nCprIx!k@Y50HNr.0pGJj(DJZ\C%rrܩ 480 ` ȠCaPG%MM0%B- `BaL%cgd/?SOa'gRj]0~̓XڡQ@4JšK r31 ј5#ߤiʾ a"K4r_&9bhz+zaEi$O͓6?!y4*9ˆNټG186C,AL!ŭwK&TC"ko=nN`$!)`TB*AK 3.;ymdLjZ+%4S%bv!Z{Tݲ.djOIdY;)g~!qnYXVGWs2?)G6`bc*wBYHP'yU;}=hJ'0MH$`'@l,4} `t{z;O=rIDĠ (9M XڬvR r) PH)K!Iխ$١ @G!HKIPK$R0ϟс)kJX%~ XW@33%j>|_Q=$cID6}Z)@4=.{H**`0&e ܉SR`! U DڢrrD/ =zHv1Pȓ`8n&ʜ1RCBr _PdD1 `0fa^Jfz5ϟ yoh&l dٛ  !'E%0T99ELRViA;"-d.x{ O<"=c|.}j|ZW6^ _SICC`;-0 Њfqƍ'gyʝRSQ*HP0D{jJDaTH T& O*tiG@Q M°C*6E!A%(#+S$ԤF6|1v!%OFaz!D~GaVM0 ]jҍM=OGoc=gA }A}>?0'm b&enل᜙O &C>_!?A?H;eD>0J(v}VTHA1 dY"n#v#n8OrSXbI02!% ,Cף/>26dN@@@MY| g <ĭ(Եr1@ 8@ @Y.hW#SZ{kP<6>tSR _C>) yBMM(OV(+A`~=x\,ҪuUg H)k-+NCV#(F OWi]%Y<岁N}8T a\vػ$2H")&F݃l~ҡN)RHeCB !m݅?S2 7|FV|$8KՒdhUtxx2}x%DycI1ov͑MFCnci:#6RpcC{'8:" oJSPG@(x3T3iXNK*OL IJQU}8ViVQPcm},fCNfpaL()(H)n\KقhgH,'jS=%9wQA|B(dj9%k2R1bsc91_|R(4Ok1c,xv3ĕ"kXT1xhrr! ">VJyuy%@Y&im+mɡP&TEiQV(E7RGĆR 9fM6ʋ"̄*E&j ?[^:.ƚIF>jfȩ7 ,w=PTfhl{8(Xyp@9 uS8s82CRJV'E¬mJ2?<ےHaw`QiO[ҝ$~ΰ?i߁JQi0R/z^Ԁ{yaǭji `;ye zHb@PаIA$HBR RB AI G@Ra#R=ҩa6/ IqT&< htBb b%$b@ȋ@d-@COc6nVĸ!ZHWH8p.Lj4X-ljk)LXc!dъGrpƌ !iW]JfdB:D4^Vǘ6-K"+#*Mid t b\,0Ȣ ) ]!6}8NJTX1!Cš 0, eD%h/AD_o D4~>!eAE)i!@B7+k 7ǻҟrG}(e0ØՑ:ߦ(ĸ=9]#!sh1 tv*zLԸ/=6< 'y_K=ї* {^7 o53 ;^Tsa(\ɳ O+5Z`E!U0v-" 04L%"D 08&ɕaɱ"a#P,M|~AX ?Tr =҇x] HopsBQ#&$ &c>o/~ 4QtdgEԣlA*DcYf( @H3 ԹaY{=4>~zI:dˎ;%|a<%зS53*}aa,Xt@1 fg h%Y:+y:҅ :&JN"!H *@iY(d=S [@x,eBQH%t!Is=r>4h~y8[2 eIE0jd&;BJ2-@ OX􅬣BgJ |tʞ(>Qa B4%!'*v^zTת!BDJ쨩5 BP!RH&|eSONkZ5 =Ox@ө~h(4 LCqb(lpHIF~/@_ED'xD$Xr]8IhNCʉhO1Pm xM7J+=4nO$H&RUGGJPҀlT0: K#)($镙80* 5dP@~TBTLL v9gFvhT9 ILVDdt T '?BjhL2L挈`"QeJ@ `wO݀!F**R9Ya'-KX ms1M!Nm*, ! þ%JQp`Y3,h#%i)kb 2#H0'H% N%!0̓]5YD@ V@@I$??=_UIPvyy~#~~>w4[0P4 %T͈q 'LG0JH,qTګrMPJ1QV#{ !QGwdCƛ:A ;Mq>}F:rˈ;S7;ÏqT'ۃ5|s9\LF t^x"D,$G݄i+Z!a76y5 ^@DC.Za>w=Iǽan5xWn ՗)F P{MdG7^ɛ'0H 0bFb28{C|ղB)BaJG N89CzN7̧)5?fXQ%ƉT\ xԽxs綩GS{A0;bWQl 'Xl /S9l Pz'B'}c[eu-hS^`^ Ǎwy3IL3K3NE?7;x3ҝ$r\m;0nqx3O>7W}#tIm8 N;:ִ졦&RVCdnEu]Wo|^H)v hfki PA1ې#>J6S2\yvZ95lιf;ͣNQ qsI͙*7@/c3έ]Pr㣰kJ#8 CGN˟28[f<9$1xv^| ϣ=]㥚b C9wafOLF\?ߟk>ll t kz!םqmK!9\gۚ3S3 Dۚve3c>]I%_eO9k0OsIdbm=ٗtYNs*]tةQ@39YNNvkGvKgN|\4ysӶ zf@F E:9T+0VhHwmaI&)[M}m&YOTljZmFԹaØFݥ:iGa,n i.7q JӤį7uZ:M36 uw<[81ҎamfZ^'|9냓rm;H&B_`P$H8s F"|p`8s(I2m>Ql]zWZ NP<PއU-Ɨ;&:f:Vpp#b(H8q9'OjkO,vrC3ʕ_N͵; ِȈvBw뒇DQ#I 6.Z.4u{ \xCy;usқ e=ƄQ&Ť?1p[62oduI-=dg;͔dHa\xp^+v? 'y !CmB 0I+{+1 &̎#ΔP|ן=4eW1<|q,zuoMܣnANTүj7xo¥r97mf8;ʐDdu/M#ǴN)iVjŷ6`=ijn/!>oko0*}[0hٶ;aQJ^4AdlF+@ʹ RJjpЃe0gH'˺@s]`iE? 'GFe'1x._`>2I 0!\2:cWqޜF C5P\\HM(Գ٢Qၧ>y=SjA 5Rz&êBC+TMK:^52I9 v:r\;#SO#9.1HhsB&Y ƐKh-*ruhą  ߑMybV6kl3a=lmXe G l33{; Uhqe9B6^t@&GFn=Jp37{Qz >&Ti* }<"`D⍽i~'#!Xny p~Pμ UM~/L8)ٟ'L7^Z08eR|VŇS#I9R0̒7=c^,HLWA01`kMΤʙ;/8f(`w\?yJ7J4/؏wkM2f!":UjMLo.^*IfD 0:.i`|'k/KzxV)eqƄ1TKYpNPK~|O(~"UDdWՃ_^!ל6'Oz佃F\㻈%#d@0>nj.=fg>ߧ'P AjZ`;@`:`X_3Wh_~!-0]/4t\feiP{x*.YĺLet_|oX@p^6,\@cA Z V5 PJI!ClwiN sҸK*V1b.#xOwuUp+gm]tO[1\2 $6Q'T^BQSbwuC7C+G0yVR5A*MC3SksfIE,CqӀnMI5X|/-z ɲ. kӝ<`Xx? ,tN+Q'MdY(eHoyD#|:ފ<$L f7v5@5^PH@_# p  V( )Rr(("h) i! H%0 0D"<`0Qb"6&#QT'g:4`q3YqFH)X& ٩Z"*U fH^YZV]<( 07lDTv  S% Gy,IBy C@%)H2'ta9D3dZ' ukad'#%6IezӉ7e:sx?iD`N!E!9:_VݪHkyZōARr#o{ p8 !Tö7!8bDsa`r0N0{*?9œ$ mQρfɨJ$$,Sgf/*I$i,ۍqQ8Xx"(—ք2z{&7vnڳ h22i K@Y.x=v8~)0wӥJe!P48B,HLHqScm:rQDxNn߀2`1s_I:5gZg3 EC̃" 7zH$. 8g:hy@TR@N.K4o9[]m7 퍒IBL(A@Ȏ+"9wBJT@< wǍuO!>gD3|$^;a|gxofHEH+DD* ?%Ăly5T{x"$NH8qh+ #"e)~D#hM;ב)(;qEB[[QI7h2]c#5:K60:dcn5v)1oǶ, %Af&8s@5fx*$&K^ˀ ` :6A 8jHA9&\r8=sg)10B$:Q&%xi^x4&vf(Z1 .dYԚkkM lP8#""ÈT )@ Rg<LZ40PQa1-ڦPRB约>M0pA dqxmϲ]9NI=Q*4ŸT^x[[}ߓa05LzIA#|P瞜!v&w1.Zhk#LhQ\.!TZ*C5nlr+ESP<\1:ap$ȩfgPLMr9)MD\J3(`LdXaPajdd\,CD:2Jێ}V;XBKxd`7id@"%6SqRxQUK$i [M%xlk,ti'Rձ-r:U075qH+cȚf1, )|s@/Nn^DxT?+/--Pi!Q+YUAUUTUASKUUU5T ܌TRa[4K9zlfSʢf"L+5Lu Bf8jz'Z.v*z۲V蚞cirRg9 fIo|Cإw3 &!S|Z&bE29Xe/\&+ c:SPy  qN 'lt…ȥŸ ހ9@+G|:jS;vfz3OIM1˓vώnAX9h/q!a:\o*b &Bfƥ p U$p(h<Wu#Hiڲ)I!IV>~]8xcqXEJi`m;7&dqta#oNf7&רR4l5+zdyv6OP4 3[~6ֶN0N% @&jX)s0 vo@DK?HDpa~eO<&0.)YPԴ4; AeO@Rnbj77.2j~tq%U*J(6 wpXg/BL7xf#q ((GӁ4vXP=-l"jw@,0 rjL3 SIbi&PEUϹ49. 7lV4X l`j \Ç1ݽ6ȡ@7OyM]}i̴g]mB"$@:G&)F< k, /$٬hCK @' id"z9żYSOt%UUZ*BOnxU{=(P\JE=:dCT0t;z@ UNOZ!JUr*{ɶ@;BD8h%)`(`@41 B́%+ũR# 'HUdNw`@BpNT[j(J[+ B!(+7l-A1CJZ>xad/Bف+DydR!ƥ5 I7&@n DI),mEJ( `d" P'@Ґ"4B!.ayCMna_R\6.FR KvEYDbBfvyv),NSA%5Lݍ&DctFs,|0f8"4@UfXria#l̥uר-8oj(2KPAIQiJ0 ) {mx(eQ"7m7!.)Z# C2BhƠIvjXIc~} p5dp^68gPʘ헗so70S_ >2BBsRl q9URt h1R#а$P:uCs ,(Q 2+CY_j-7Mz@T#h.`:* "=44V0H^}hռsQQ@T%`[aZ֕!`%{?O;_ BEQ@N80L31@bb)P"'̀8 <_M{K@>sUR H<~}<y,IMDQP9< PۣC} z dP%ˡ;bq`DcՐ7c~*`w(RP(fGGi TAH`6/ a0RDаBv0x  !\!Z)Xa`)8ΉlR$ɘD]eE _hHCrzzvg@HL3a^+Qr !\ me H(/ IX(M bl"KR-aȘAJ`b)4&PUv NMx"- %2 U)P(JFZԩ*ЂR% ـ AUMEA0" G2ѹH&Mhܯ>!l29[з8h4@RD$v_NСh&CdP(|t=k SG'5e%ت?E6w.iO<--N"&$@ T8akp/$k#P@$j)3G1 0HUgAyӅG<ÈOGhQQ3 HFD Q2UUuEHL$2)$L ]w$p  G7 k;@NJlϾ]"3;>(T 1iP)liR@@a$F$(VA$h`Ñ{_x  lv^ҊvRdR`Hba%QPb#KLPB i &3)%L`X Z5@=<~9P_\z"_]xT'xrrs6aBbP!J?5Wz`wvV dږVK8R8g *]cgd5^{I9yO&? |&ŒSҲ_T8;Z{RϞeprX!PRrk:B,7q0C -!#@E@E,BB#T(D!$# UPá (0*[l, D}^gD9!c]8| bf >ct t{vI@&A V!bR(H$%``&(h(! $(bf)%7 D=`:J SOiy"@iRRGG=R3jH@_BY,h`zU{i18Fsڏ!l4_CtnP#pF,Ka<txhjY)(׭ gb&b?ëLþO$%xΗ^ nw kPхgTIؙGo=.FAϟs1o.VSaqլ-h! 629r?J!A(|I p bu "H'?#ھfbf `XQ@HD`D* ?'|`:a}&<"rU!0'&d#$v}x:R |e7#jp`oXt6qaU "#[% qLF4ެۊJcP=T]@ 2@?8uxLI  mG>3IzpCD@ >e[ҘT53ւ*?f:PJKI$J0HQH 43I% IR*I0ԪJJ0I*ӣ2Mibh:AK  0g_$14 A114D2:LT<ȆH`سgTy˗?)W0@XX{`aEw1`B?VJqutŝ1PNI8c즂PA ̨8CO~L7c>Ϡ?L8bdN&q5bfmSAٴa`RA`&^<%9h%S!EG?c@zHE;CͦB#F#SÆWl O1[ @h" #*"$CBO3AJ1'gX50LxR`P%!J!,(d1oN: a0s$S|;(*Few{T5L Ot@(PLà|06Pp~eVO0巻v墍CC ݱf -kX}\樈jJ~HSUDeͅTQYҊ?K's)Cgg4BOAp':f 9O5L eD?Ԟ :Ѹz{dN527Zh6s41$G e0TRGݨYT,|C>LDuԣ4Y,ѠjM&G^DKCK)$,0d(]`A!jtS/ ,H r{_&*R6Hxφu,ٙ"$) TDh)F  b!)*XHAe @""iijQ!Vbd"@*zm/<4 q19l! E Ʉa$SAQE$EDV*BuSξ@6ݩ dǎ˴0pg( բ {Z~pD"?GF'9u,4fIú l&Jr2}HcMRgT]I" NFIP4Q8~J"!숏'^OUm(f" VA"*dִh ulqMaYi+^1XĄ14k0Lbp1ŌR  RR%FN7A`ƜE f ?u{!dX)&HRRDEVd&A V!bBBfBe"i b"!!iHU!`b%@hX@*`)` )R\f()P^H*A46JDP2χ/5wPQ OD NUy!u[axI Ҕ=I7O(+@۾-W9DU0Ap4rm}pLn}:u'>~ivUڶ&|K#Be<h `o PcksvrHHBJaHb*(9zDPJ0稣^ TUf@v9iL]~aMw+&@S!# T?L_) Y"d8?(c*XN['3$T`AJN@ _1%TF34""R(ԦTz kd!J&(CډXJA 2VB3M\ݠN#H&)$% TS2(qA)b 8x3P2PY 4,J;:2hs0 l\HnhR8Q1-9ԝ3hV)#s +0b~ ׂJ뮗sD,$T) L! J)T&b "."HeLDgovf<A 3)@M$JvNM+P"B??<$;Go%QN(x>"]#ގ8jD q0>p#;%#OeT=ztDB3g+(ɉr=#2`I߈t2T<ID}r HE MݛcO ],M JXo2XKy3 Kj*Dw8ALN3wxQJBi-Gy@哑(mR-5Osߕ;LrS8`-t ;KqKx-4R}s.JqDj dovD!<`$9K"E:[,46XaѼxEM6JiCRM(D } NaXuI4 *m*d-L׆}M5-4F#5IDG!q8x֜0"\^3naEc"@~ጵujwƦI'@qSƻoSIn-BytԊ~Wzr "`Ch;K@' Mv?yhvRNX/vpB{_` gK si^IEF=^)}[50~PyAw1>`Dq4*!{ڢi:b\PЃ6KA8 S(Ls9')A2CZ @s)11 Y:Z&OԇN0^q@jM]큔w^]/TlR%hT>HsSNiUu-Q )d۹:Xn߆a!v_AJ@!Kf4@yCgXH Z_G@Q Z57&@bou(3.Q?!v$b^kvm \@Ҩ)}e]33R& 1gGd)DX* CzInX;Czף{~58hEJQ x+Ni'd0s*dDI*4[6*:`u i^^| w@bu#çt߸EugXhb"4$<ǐ*(E2 {,8#R66fР|Ðsâ Y'w}<=W!^d 8Q& hZ(!>l Wwt?Q%{u˸߲HD RBV q10 O"' @D5H@3 |8jb"b Uj) SCP@BG 061T.M4/Cà(t!HiTQ'g?wVQW1sWƕOZXIWeuI驰t|gMMG$1nE N^UhL8~U! ʔ]?[xp8<8@HD)bI*<ãE* HH1LFkrP15 ^/>;gBR:w`mv- a 22Dk'Y9G ]قSWި+ {<7{B-kx}884_ē# +vcB)í+~]G%iDb䩖uyʌEl>`t:뒆cSBH^V)bc/4@:]ٯmrW0_ap4Efݞq8jBZ6 dwM+%Crn9}JOa!&t l"++2y0ny?"뱺 5XJ2 3;d1XmN0 2ܒH ÁWeGxA;@KW8 Rj%eޙ$0HLͲ[lפB"j-9Sl P|F b@P8PA{:~(;ð'pg` ֣@+VÙSQG>xa%N恒UbQIE!SRQPͨ(HHة^@<;=@%D EHDDIJ #ڪEs1W]i tO| w>ov7K 6΄ZgQ粻,O 02s^YK= |*,0b~h- (4x AM<)1(B qx4ư# ?HB*PP(?DSHb BM#L@AE@ELCL DPU-5@P@C,J$2$+-(K CP(,AHH,43(XML(J!!JL!?*@2kmE_vhe֪J] RsU5\HmiR- –RhXAasD Q% ))h) 11#"* & d H!J% &HeD (*("Cr$p&ԥД!@" c 9@r6P!AMJ 4(B"'-(MEzClV)S6YNdLI!fQi"^@(1 ca P ~D*: &H/B2" 0QuދTdո ]iE}KWg䉷<p惊fgcјG~<= -prh>ϟOy>DBHj"ZH}.ФΘu׵d"j?9f<?v|6k}9zNqP~]?Ua\Ţb0&5#уjM4?LA%s_l iVbd*yvboE@7ƅP`apxZ[6mXT*TTH+jۄ >or8MVvv_/Pl۹^ޮ>nQdf=SQ@{!v Q[<9m<GYrPpKD1P:P|ј;΋DS S9ӥUb0QAQ S v BaSuG> S$ߙ69x¢'t EL^<)BfN8o|9~x\ar1hd8QUUc.'>v :y{@8ޯH 砤{IP1 ڧ M_sLXN`;wQM9 q7?347S}ەC8 y1~lS ֦̺G6&s1 73~Yxgh.@)O4ɣ"'T_5"phV5T ߭ 5Rc㗫l Ҳ]](B0-d&y 7bMQ<&aۼx,@4\8S&.GI3XOUZ?ew+Mal~;Ft8h"B("(dadCSHl$I1D5JFPf4,G턿r+P\<.˪=yM\:y$tTҤ"XCDɵtշVIm ʹi 4܅kpYܯǢiU l݆F|b~SMmk59=q\ǡ>RtY#ѷiI rWm1x<\ k'f fnJLckuL}f`֗2Ľ )s֘@Nh Ey/#ϳw[wCLP}_Q&]8~[U Λbs8yKbG!~]%˻I45PwBSieցgL]Mط1GLؑ$0!Hڦ\ZLIRq`^)`^ Ҩv AG@Qi)) _?NoGϹox.9|qqa)/K\YoJԠ4 eTXܠm]DL`5n jWdCPG nV80ޢuBy06;t7@;gJ#5]!. Ρ +aG')Aa y>\nQwO R}9u&u@=h]&/.)I=V+OV*p[&/t7QلL!gkljl<mEAN/Cr:AFz<rn9'^q\SC7@! "1p=y+ӥIu_, b*!>'6=ʿb\EZ}_;橋Co锞fSQdYw# f%kxt;cx q!Vl T 7nqV[3ߺGn{2a1= HV?I&d7߼ܽ*㩣y(E(UΣpbI|LvW|ݠnMcQF[/$fH;C$bGpc\%$Fp~ G N($v/͜m!&qN⌖,1^=u4v4AxP@amw]GBP g-jm5ʍCjF H3io:w.]!3QLVd9C1 \ SnYD3dڼM=B%eh(&M/z`TVT k{RYk[SM8ӣ"Sl+Y-kB-֮#bzuRgs֓J+ziy7 w]PzZkC} _T5dYںk`svF5Am;NҥyMQ2h40 d $@ @dhMJy15OLM5=)=G#hxHl#44Cd'@hF@ 4"=LК4iѦ@dAOPF@z@OQ@@I&@& )OԧIxLTޓIh=5T4zMO=PPz4hz  z@ (@ & h10L&ih`F4F4hz#4bdf@h4LIOPDB"dASSdIiFɨ4&OSjhyOQzOPhhO@Fw)d>z\?`Fؕ7k%OE1m0 dbwC G&m9avmCuiS)& bTL; .RRC#^k.d2^hS]2BGA?ٶi„g'`_n9nu &_e\seZwN{Q0 ^UW/ $Kw ]׫{6z I_|Sh}xFNs2Y㿯ߗ b/ ")oSb)Z>{>Wi}]:z { šzjbD['Д OWj~YzPO@ Spa ;2LAXZY#-_)oS)㢖g3 rPxn(P BO֟?{s}]e:ٸҢ!Yǭxm*+q|>^D Jhl|w,+P3뇀 1w쩽_UI&XY>n&WI^ ]wֳ84feMw ej:Qվ["Q.Mt,V|Ŧok@aw#loWɨ)lhU;hǔA+:KGEXCxYbWĖEF{7=C{] ]~Kx c~䍎^Fk2bR'L 3os4:["$sfJ3&E_A75Zr4ӝUQa[Jfhj9 9aGDԡj[PW8ʦ8l@Б* Q'm4ڈDf6Aw52,/`w&I&ڏhð-XaRB_GviyLQ@ e (08@L 2IYrی7Җf E!ɸUYzb!j+<`H%DEsO沼NqIzϓt@_KО5p3CV!Q)k.^T[H;&FPjqLtQ"FRP N[$Ѩ\`% "#@ Xߊ  2;CiW{E@@(7DDQ>t%1Up 06gn6ɶ$TꊘB?GvDA&,@g܉(&|PIK!u C!*1}!1hV" ѝ^)([1a elJbiXfOg]i Ӆ1] +@Y%'NMCC*FAFTqC:%:Ojv۲=&1@Qt.嫃٠"5ЌtyQ 4Un] WXʀB; NJ9Y.sٸSW(T|=n=/!{]K6{fOWo\z/r?#X 0CqgPG$+?`RV-}|r♏KUUuz83B )~)ߗMRL8LGأ dUrj35(hӴ h5롕_RV/ نjD{9]G.I"Yh$b C!*Wdݮ ];EةWWlDž&ב:ۅP)ȣHk^6ʠtPMbY~jGx.]l񈨼{D'mQpฆ-Hj[rRƠtz7p^<"i 5(5 "f%Dܚ~s8LjH>AXAi%,QAgOH8pjd #(a nZxK⋊&pKa8Y @~R"aˊQcr&p$+ qDE$ 9@P8c;eĂdU nKʂ qHz/jĕ j%nSvuR|ɃGE$ ~T-Φ/- puJP`r!F@vIT). R\ZoǨT|01\QJG~[r en+S`$S&j,WE.n;%lځ~A4DP7Ww"z hv#O-?NQsiċ,&Q!85?d9 =IEԤ"'ą2B ey|сKŸa<d7o 6.S08s.-P6j֜w+݆ k2յf'I1 C@@9EM䪙1;w6Q "6{z(XFAuS40BEӑ:00HF2ilG^#;?m{#=M!>t:߈+o,S@icDCmjth. ^Mo”dM!Y4}ˆÛ롶@Yh@YPdύOrڲ}$8& H@X=]~À&`/ D!j@D#(A`#"HC%SgH+@i >ta˹kWk2f@F@J@ TY,d$@ +-,DDdB0@Ġ CDБHH1@dHDR-PXIgWζtnzK\D_/v}VvÚix?ZH@@$Xb^[_GlK>1߈#?tx@C[o.n+ѻ8>WfhWkq]ffBO+F:H `' `F^SWID I(8 $1B@EPj8[I k:_nNAϞ=;:{G7m{3)u:vC_Y]x^3?&-xmb<OyPGvP׷~?ra8(c&"xGGǬ&39ůЂQH2={0l힇0YLŦ*&kx ntjcP8T^s[u#$U5LE]7uG>idW E x|Z;d^yAȤk|d;_"=MNDM1">R!8! j>bM>!qt*7m' pt̕mC c @ V(8;=1w q$$I=_p~/Cn{.@K᧒s`*)L7t װRE ӎoTF0Ub CW؝؎S|c1èb}d46C xZK pؙ <6< V~`o;~ >:Vbt]e1`NY\a]:MQz^{浐u+ mi~N? >P;um?MiE~IsVe`wEO}6Kh|˿}k IS CדIΩ;yM.ᢼu㏆־_ִ-z ]JJRî9˻[IZ_ujQUUp~'ppsrι؈H ˙}tᾂSH;^NbQ?pX-C2wɏxs': h`PǪLN5uP/Q*J5ճ~=_/9|ߔp~8M}N7oB/p])7vVܖan N/2`PgnqH;F l[ @QW?C +iɕvq'[&<^C A̾TU*zDetïK nxAMbrt& 6"=Q22&fxf+c` s} s mvOƺ2#{`@_Q:F$0)(_vz{u߹&!!):H/g&s ^TFi,v[)~ >IAžì|W/1M7'~{JC;|4YϿgު68 [c܁Z3@1Ӗl*\T+&%cU^7&Dq8"K6;fML옛g.mLb f݁e!n!JA[Ƀ4#okjhތQ`1}]2e^c̓3"v8[NLypL:uaE6_"(SR#ࠠ;qk縒xDi8agXצnOL^ffG{>FQg=xk1Ֆޏl71`[=q6f3x@ Iu4m><֖m=j#(p3s A 9!>}k/]fE`vON.{86) 䖕.fm6xs!M%](uUYlpg/%aK| jzLlF8>P !'ϻq ;Z?' ܖ'k:nP`F & !s283&wDJ7o,JVp B ~DN^tU$#n\ XaO'_tqIƩDqCu"sЙ MWS'Q+:S`eOF2ٸ0Lh宛ާwݓ?E^ek5!}Ot=_O/7!|1V'"-">:Ä!Z_[9I>$MqR뱝zp`w;Ҥڇi W&״N˱6{}ˣ:(*Һb079BD+5{cǽ`{3T ג 4]ٝ6/ vg4$ӎ]VrX!Ε(O|(򋐱9ѧ'&(UʭeEYqzB#&w 1ى|ߪ؁0jD5%Ə0[>c/*r RSsFH~e=2Ϧvzc'h Gާ!0 k_4N=sIi$D [sGٕ uG: [;( *o/F8< 0\ uǼm&I$̏Cㄼ˹.6-oy=AmZsA>qycky |PG䩔eOGz͂͏hWyG^ mUoW2PGՀ9 l|9J<`l9 ^<4\9VN3]E[qgKӳ6w ͒^k%룷r8R #.׾MA4ʡg9CQ38YsX=$$v0t|S˞s1 ÏUZM>d}ƒ\~t"EBpkF^/ovņ&EZhKkWqJbNeG0]° L J1<ܲAydb0`@֝eYZc~*n(; ^숢1&vN0 "FESca泉*8rQ.TB "[ '0 $ϼxA-VښƊ0bZ0bR܌e,(fc|[ > |l K_'AT\(gnׯRsW gy j٦o($%id4:(:Gle 8^EgA)*8g'])Amcb JS8Gg˕B_ov6Ž0d/3dovlrbluC G`0J׉}|nfrm+ [oCÝ-o_GmQk1 O~>v99Kĉdha-:i&TIC)}1𦳎:SBERx9; 3Ul2sdse63[9)sД&bc"#]6M.H &'.ι ɢHnS`wEI٢l]`VN5L7rF2G@S_K=~֊!*#ܟ~q:jxMBz= nLrN P,57@nLQ30uŶ^fcP| k6rD+t&m0O$I58:.ۮ[jrE9x--1LpѝH/hAFbV=P3V^cF*~]i۞x+7Uc*M˱cFt8\$ys0fFKTD[bkGX[< ԫӼ5h<]A;Eݙ3mH+=i u 0b̺}:<j%t">E^5<'/P?mM??TB}U MVP3 8ākN%ׄvmuǤa& ?A7Z1C'ogj \fgjW GTɏVJ"6yrac׏[ns' $jx˪#K Tk~̎df8x1[}0.982DDZx{vmW21E羭%Y#x-Pn- JGͪ ϡF~cc.o&;yuuL+m(afNË́vC(F-Qa4)o ">yqhn:J;ɞ׏;,6k>EI۰VGR%V52~+7St9rǠݞ~''rnknQ1Qe `D%1ԋmV(e \`fu5UUY~;lnǫK ]Ȉӑh<=U-Cwlc-Z9Ӣ䛒e?3Ҏm ZllzHx䛚kweB(S(0[q/-7`[*guJ`j9:796Ue]}Fȝ{#/s^uGp{ ~^9Y +X+˫vY!AfIWw}[-==\?Kw]wst3jJu#m>}( *I)\' _*Claϓ'_})S؆fӪYXa~:N^fiU:9cB!WNRcά2ͺc0|?7Iw FOMNJњLW)Ѭ7qcpN*Os 9DD2$BVEGvUQXH,$$Dሊ[^.iXªaR*Ok'iTT) &B"JmQd&0Ğ,*&:! &e+7joS;C80l U:w!>I.'0@.LU( "AD@ҫ+H*F($b dϒT*M%q`TY"} ""ϗIȱ~G* ,j eσp WI%C0?Y3ᠴP: T]'tmd;Hh0ϿM 1^0G UdK = [l6ۇ DޙX0sLDFpjE6‰b2P[X EvhG-EAV>,_ZUNvJמ>ޓ$NlI2(o\<dHE "\ N=\Y^ءC1YlI%o\vo+9&N7A)i(.ԝ̻X=H`E_=ܑ2ID0]vfc߰afQXw=n2ibVP]7eo{/1t6꣚ RT͑xAY3Ed0ˏ:xp^P;<6<$D,|44J>۫hFqIz!2nц"HfF, DdB ы5; n:Czoha\OjBmPXXvoHpr4QIN&$b7~K_CK3^q7l9g_r.OOFF:vY}V#8uKн:BfvF8aチ$;F@rXΓ:ísnǰw#9ƞpθp Ԃopa6x 0~s ]6+P>=58g?^~x$'RH) s,y`(fH LEv46#n05IXA`Y#1"͎@G 1X ̥dDBaH D1X1_A?蝶V'TJLvZa#3UCZKs+qת켷YvrV QS>8Shw\ɀE 6#VI7˛;f6pj6'a?V %Y2Lw:#ov8:!s~^_k=ஹS8,m13fPhRcrć(&4{öv.)iCnF| UZ;0mS Sk"#\ 馾8̳+?yy1K8$y38]L|꽝\el g p*ؖǃwy pDh͛fGx.c1|/eÙ4IF^~Xz3K~_s!~&c$ " lO`o}w;N݄/y&`ѠA xn;Yz4F "3:6DtCkc,;l)$=-_(ٴL` pZ C&~PPi `5TIqb9~moX4Zԝ D J=om\zI4ü%Kj^wP1tF)}fWh`D3,14J@(ͪq\8'7p`hAfԚIȞD BD$#n_J$ȨDTfQr`l.N=]Lartk/?>p\HAvdS`O̒%:,ާ,O+>[Gi.}H{Z &ĝG'hJm'Sl]ڽ5߾I9U !Zj&XAq**Fii.hީ;R; h$&'8{j@4+; :0JF< "=4BvɅA5!aOa%+8"$鴂BJl>t3C'3QЍMLN33ZnL]`&+w.gUjhJ҂*-tWe} k= "+%1:0kW ʻ8FN-DџlSTn_ )KWd(][ " 6 s'U;S `1 D,c;e&3?^1lZbPQzQ E0tCw|L>;A7)D )RH Tq ┣Xv+k=*XCޒVj-TEE4Gxfkszu Ҙ'[p%%s|Η=u\E/2-QeN ̼`]`U9=fpTBGX^MK t o8(h3'fakX!DddBשW14?{ ǶՅT ~NAp [ɴgϳШ:㏉eg>Np*4a5 ~/Y1O9|U㦚)BRzLeI"f[pU& 0JP K%dǬ;sel #R:$fqi6?(ƻ4Ũˈ!QU}ģ:vV=vob{}\)%jYj/ ) [hC`w}3)b|AEv.uj~k=UTX~06%DpKQ9 Y}_UIo75BԖPyY A3n;\8_߳Z?agKiB܏x[ӃVv oEsiLˎʦEBsZ[GUEjE H׌tSHE1UzqoEUUGAdz&?Ze]6>F:!l9 (^sTfNk2׽[3@ʬd>:x2WYR'@5AN2zƥaT )"ߣf$)NhM&/^KlȒr1sZd,PIABC\xEc+77 2=e;dY:B[9"M.Y|7ZKC \88a7r,.|or֙;N]kʠ~HDa-8Njy r3*K| s"-)*Qs)r &"5/zivg6,{z(:y}oURݸnBL'\TqM,Gfk>3{(rpK }$4}+<<Fo\nT9 ñu<O}kk4p 4,MxݦX/- v19l6û$*RM1Naw,S\?SJ[-CFDepz$ !*T!Q^eAvfߏ,z{E$zXxigǤ+p-^gŇ!Z$oJQC߰&11aG ym n,' 3}%~0~m{=sR 3;YcIJq^N) b'vjFIO]hS kء'%3NL͊j,\j̞39ze^'^Ť6Ը#J,"r7hwJ׃Nbr<e_8 W0X!3HGʏSn%R0nu+lrn5X =|x,!3Nǐl J S4 Jr\EcJόqnѼrd"Z,%P'v\#;e,65T+mr@\\d'l˴>KH\I9\D /an*6!u; ٨lJ{ V{D~i_fc"3#IUO1oOLʾĒ^a:"0gI@b* *Q% agz"Gt2KQۋ?]<ݑ3KjGe)+TCsm0OM72L~%u(YKD2,""$2 #,p46i;c 0Ri1OlqrJ )IӌWT߅:4?D2d{2F%vچԪUQAS)ࣜWKOQJlcBQU\@ X( ּ.&u4 \} 2'DC00aJмdKvG+ĵnOu=XP,w9+[+f@sy|Vʷ*[+:s$)sIqW; >R{wY%qw(=DZxxb/2b9p-Obs0&F1 '.y;Iԝ.7;}dAVGUUO=)$RFP3_Jj b6[8NTu;&rGٲ7r1m+HOsUE(0bUU,O"sz xNur|;4-[of/{+i5-ifHH[lS]65=ixsk4_!-\1DtC|*Xlڲ(C$y_UaE2 S?-4HdpȂ ^fbSizމHOHxݯjq9P"ƸeD{9ÇFp]#{P[[5c WS9x12F> 2auOHY3V,pyد)Ff̐q]S\XWՋqO>ʠU.}Bj:Jʉf1m7a촕d;/5/3TFe %u}ëaE-SSiG-)Ou|U_ϔJ*9.\`': af&,} qy#Ëy%d-+qy_C>Yټf,ye%]ߕ)?0zAʇe56Ul/*Gi{ Ё3o[(stBSبaOeªjT0Qε郖ҙ[bkۧ ieU'xb$PynX==.Pzf~l-jҮ_ ̨>K _>˝:"$؈pq[%"re{R$Reu[,˨ Epj\' tFpOP00c3 Ѩ]*Dzsb^N4zdȲX3`w:Yp/8Sq>K,f8;V%F(?j̬DwX :G UV+6ޘ3Udd}b;5ƜqϦe˯e44a\񙕆,pƈaq7i\2Bh( jYfUGꤟ ޳7>HϦ)m %N>ڮf&U20T`қL = 12%Si'A$FG8T wEݼB=fA^b1o=)ɸ Jj[&X0xΣzO{WH q?b N%9۲&J0 A3]~}){;ߏ~+ =p浝'nL1}o>_ð1k !69 T:\@]Mp0$rQp@dL0]|_*)` ;^Ve&*>%]YB !"D ?8]O&Bieu}vi2N_go-C[U&y҆0rZ#~6ԑB!,u:S-?&\߸[<']" ڣKth0QTK! NB 5m!]V.B I # $D I4(E!H H(@$U  $Nn b @xZX0xv%QUFEPR0RDD@ T@#"D TAPd@`! EA  Y$ "D dj(@a@@P@$E*T" b (F"RJPB!$R@ 1D4b)! RII@BH$,"6czDSpB]%tP3 fl$`#lʡ΋諶=)D#" SzlߝӶο~sO_^ Urm%{=/4ȅV3Wܕ>E]8 j{nE3@}ot&6=~i׭c1ܸN~.hv?=؏.r?? '.2:>5LXL%ArT Ӗ)#s^eB󍋺AW2|PyЁ׮GN|6mTϘ060e0"F@Ʋ϶Bo;0A_TuddO;ei97y>HqڙG150G cT։^!N$:BUt,&8/~zhs]'R% f-(3UUUTItl o2''8ݔ,R6w+RI9N[Ns as5`dUVJ&ƵQgCG:x>v ks3]u0+Q4c 7(jSQXH@jfx(w:7ڟ:,ؔP "$&K%8M u@J < &Z^W9RSz=nq.M@]/l>w8ϥϵ' b-y$D%2ءDg:a čG7<@]h#>ey쏺":Fu8^eVk9ķ||^tf+c?׾oϾ4K @qd͌C.q N9dlsil$&\@E8J-3!"wpXn;퀍'`3vsr_^}]gnu!¡BsK $>dfCT~?ǯ4Pzd^J" PmF'ytbQ໡oOGi?B|Pj,)뙞3%'-\[,i}l.^fĬ5V gNr7l[[ @Ex *HE{_?RX"gȭ(JQk1m~Z\`K 8o?U<(p(E DT?)`BtKuӈrTIB wR 1LE?&fmõ\Dii`HLrz_KTqسMG;!hUe"%q ^Xo3๶؄ O=3N(̘HBم&>+h\dsHԬcP~~)RN Cf\d3{Q /_}IN0Ů$!x),_iv~$QVfa0a#.@² n2knˮ+& O$IwRIy$2NFf/){#yN7iQ/h F"y\p\>[BF9ffhswTQH( qÉS :Թ) 5GWr 2C1>cezpc UNe Hl~ğyB '3X%&$x4,gyktl-OJ.a[߅(n7͂bPbH}·z}O.[ sxG7J-6g̛CN=SCeo/o_NN mQĸO3W^qcz,7B4M@gG~3Dj6ճmDEq- Z'8ĉF1}C< Z H'|JI+ٝKn]'ٽ*p*27Cמzk V?pt|Qi/wy/u?R4y#ac`tmH|D! #}}c^3K{h>"6D3q4xk`zK X(H(Db[ݿ r90I˵V[(.(L |x}:1*0ѹYrdW^]jw|]֒Y/M7O)x=v'wQjvr@6Xɘ(DƐak>y\YW2Lc"X@ sVo\.? ;)N8ޓA;f3H<\=B ZPq;Oz)>_?K{ 1f]#ՙa8@MP>I+? wT0 ٹ9⎟Y'fRҊ;L1w=\wCហ)%N}LQ6u](`ɋm|G يF<УzfNZQ*u+8wNC:gDت"%lj3v&_5~i֧g*y=G&$: J`}rs}1X!1H/˪z޵X(eQ=Еfer!+Sޟ& 7ߑ>/9{Wyl]-]hFTe2NнI$0/Dؔ"(HQKaƺQ⍮c/ߝMe$>RҵePO[ps_g|ӧz}A#w/ i ^8pT{ouſ>~ 6V0-86|fIj<R]I1 #ŸQp^-X_e#&Bl 3/ #40r. y p~5w4]yPP0O03PtNotD'g8abKq$b"Iut̍xB\  c)(sp}aۄ;uGDmGX VGchG,S@ldA/[R Vb ˠ] 9o9Qtᮃga1a>N70G1L7*0'쎌aQ!& E, ofb=ɸdȔL_Ⓗ¼|ƚ4uG9 b]W}-E3bږl#[멷uOK֑Xh?xnϳ",!OuQ]qɡ +{ޮ! Me~iSO=|$p݋crSMc0I Ëg{7%d+@8q͢(xyT;?:1hb[hF.P|:zE(+f )  ɽ puϧǎ'('@5g\hi  R >|笼5;wJ0s3A! J⑖r>ܫÊ1K~P/34M5q{碗v.n :1{{p1HP LnvI oVO06$L{|)SBvƸLًYl w v!|aʊ9&(ô5(`BM`SNQWk%m-(3ShXK6結*hIѠڸ!cq d>oF/zWZtoఆY4N\@5XpM|5tz/ET$PkKܙdI3^۷E %$I{ϵunta GGs W0)EN, F:mx I2L8Kȝ 39N Z" fYnp ,^u:Va1ʝdyZ>nV0'H#VO5kV2'ZuC+bC6jXT:2hT1톂~f<& JPv.#kǥ!51ǀ"1Inig4Hw& MP Rv Ī8rl06;Blc' 9jQ 16(^  ̦v'tKDPd3G-Ka*8g)^ qQYF>BylGIޖ't=k@= pO2B,#  :^J2D"aL =u\eC.V eYcDRa ESJ|¾ϱKh4;9MH Q&U:LJ)W NI$uv]Y,*"b<1R`Ho&B jpPFB ß0U`f}HyY۶]]***7@$= fvX5wBwz jTCF>e{&,hj_;҇iƨd#IBCS4F tӬu;nxVhl Ô\ V;_9\ihT$$BC8CLmiUB(cp܆fN3YCEMzύUq6L% :QA zڝ\gd"KӘvXfe.Ó +V;ww_Cc< B## a/_Ib f{0ۭije>$CہA:o0B(Fbd}\rq5-C1%dM=x=zk= ]hFcx!+NnWM@|^y4{Rtkۓ JR\E]2C 1"i; D%M_ÌlشV &ot0 #nH =$&(QO84dz@s@m8.0uc4Ӯ<<O`"r; $=,{::ėӻ*NS!H:%CFKRԉ@fm4XE*,ͣqX8Ɋl(^q~A3ϻi=#dH蹅_Rt\0&M/fܯjClg9FDPiְ xz/Fm;anJQWAzhLp|}#+k4˴l|op0`<&#~#bBL[MdJRh|2a "CJlU3w ,0#T8#! #t3e+9.h0:5'2%G:J@rB2w.}<3;t~CWbא{B-*M_0ܒ8~>v sM6Xy I'Nß?}-. ps ȳtcLoۢ;@8I!Us5J (A1<yp X sHcZ| A[;` DɃf4#HH:S4qm/@($DT,R*@F XEX(DH ,"($ ,EXA`E d `( !"E$RE"HE"E`EE T ,,$YU 0 Qa ,Y"U) 1 "E Ad$XXHdPHEAIE$P(AHH`,E" * YX#Q)"*$Y!" @YVH( D 0a k˴81tb2&mW5 *d`)ًh wz0 `q ㏣p,p`tT4 fɛ7btVpqj&aPw3hE7㷩r*z}vʨ0G\c ;- }YG{޾:eD=nzi D鿽'G{:ʪ~ÛO鷽3~dHq*n񪝃L=e ]L˹F-]d ΢@w,;s5v7Z4] 5+ذ@yi@fK#zbK9IUUmkV|/Cn]@0a 3rR}j[CnL( ń5.e]up'FC{Y)=p׾ҩ<9tSvWu#C<:X˄vw$v:iZN\w"LqtQ |f2e2 g@@BAXbH%=9~T>۬Mvjg N4-,zmSv){ oxx` $dv_=oJ:&(31'G}xU ѦEn9yvv rxƖԪlg1O8TOc5l3uh{AOǞ8ҷv`~Pw4ޞ):"BdⓌ>ğ-A58vDsLy 2Kg^~f` SϮbu{RSNA[ִO·ilvIa,&V:6T^ʻ8M2Rd+0;m (Kv*ݝ; ]O>7A=Sd, ^,k!hЋ0ϱ֓$1+i.ߴrLY . ĝsd ϞqN-o9)j@wI]4syxBcB1$$||BgW^HNmcu|{^a&PF)| !!sfi|-AqP PtFfg61b(W|ϋp";nɢ;AgL+mR37@ L!0 *Ċ3p]5o/zw=13r.ddHJ{2ar N@ L9~N7R#MϼLdA \¹lFG3Rs}l}jq{フ*FMN .5r@m>G*9bWWVrit c\Cz=/p9 ѫ~(}-Π،4HNLJ>ݛ" JFx +hjIbĎUa#(=\pPApC:}vo0," d%?Lw{ZX4cI'W׬7cpgZ9al+j)@ntWB<{f6v.w 'Wn}b/d3"ox6՟VVvM5z iT]\IlF!\Gb.mHCas\_mQ`sQ$&`gjWٴt zN͛۰8eX\3y;nJueҙju qŗS1[嵬LLR;v9֏[Lsigܭ+Xr`bbĹ/;yllF@^#e2vT>m_`IZR?w Ƙtғξ~G+1xHɛ*rsNHw4I2c$(ri^Co-'aN#/6Q=!L`t:jfw_LsXwmy=>RR̩rח"or..^D0)MMgIr<:&n3_W/u a; N3gKID,BZC繧ƃM!u;.τ>܂=' y`dRwR 9ۤ0򼞯u/Y?_WnY'p =Wz;4!bzB7E$*2HȖnϔ]nO.^xB졝`@DM~g2SS,,Syz>hܲƇ2쬐:U,ý@,d!JAcjDj$( ]#W0[b d(V̾ BۭOrʦ_?ʁ0GfݱMCdjW9ewӁBsNA:s-=6},EZ#/y:dm5#>̰l!C_FZ&̂3a#o]z§>e Mc| h꽉p#欋5 F ˬM.|E#F(2 M(h,>j{ \8}p>xAT]t.6fCb˙#`.9@úp_.{{Dտݷp0K;s7xW6> ^DFaܐZ臟k&B' 3œ}Š3#g4:a}5:)`[#VP3C4 q d@qg% Eeٞ'_goP=*\?K_3kg߸dXkZ6_-u?&>s4%E,2J5X xBYХ ҺUJU& UDahT)l5dw80wd3@i:aÉPȊ(ÕA`aڨ(*)!!nΊ.gQ<:҇nɽ?#ٌY@?.РȈ1$ ~Є!*}!4:Ju3Z,@`O@$UQCQE:A9HPLjʇIC`DޭdL4$+YnH,VJ1//Bhx֕PȄ`aP0V y2$!,;-_xWطƤE>Υ*V&r[^^pe|v0U L*ONoF[yWJt2̺H.n'b |\ :v".y޾!XNaTĭ_8{iQE!(pd=&x1L(Z({aπMg-R2Q0Sb@m9d>+6>vushA>{6ҕDN$n{ b+Au88XDܷ4`U_Yh_[Y;tK7Cg_!䘧ehJֲ+ 3,5a4*X "5kO?Dahɤ) 1s՚Cc7Y\UT 엀!''y'#X!`(4"{!<C%Fm3#2g}51uR.y\Q-$sN!(QEa=S }^@IU " HEE0b=/Dx%'P,DI( !`( +&|2HdJt0-l@9MX6hӠ ZfC MBq [R+(W&L ' 8BI?NHf d~[,ŀ$Hw ]:9b5$?q4 y9\FC\d0 $$ʶhlbj3zo'pf^? l=y>kLaD őO&!(x4~eҏ_x0/=A }O1]Ӟoq)G_ϕ߼>?k;3;>휱8B {{{4& !:9cX?P#* 10ᩈ E?(|`:B᫣Gk>{֠]ɤ?""d|4U}h~<'6;LF/ Z1CqI;B DXwm@#(lt5wkjm#bYЕ◓ ٹ[3k:d/n7&ݞs.g9C ") Q:睲FZ+@iD9' \Eda} '`iv}3}atc$Q͛4>BBTݲ !RUgX V0 pdT9$BR!Et<ݡ@&* J72`Ap#h13lB91^<(:h'[ oh~M {ˎH`#e? )SFNx+혉(ohȈ $ $;Eo݆f!ea>c>=g:]X Ga$_O#;ެnO{`.MPNqӉq ]6I+ny~iR7b#(6ݠ Kqld7K-*{kb;YŚ(dC$@˗hsd3h0u]ʔ_kr}a ÝE" fh *)dc/qL$BH dێgoPAaNW~|׏g. YF{IM|TSN%1,G~)dJM XZ؆٭SsX0Aǜe;@Siv<7Ak Ksf/ .InΨݚAK$"PЗA+vyr`ݽm0^S(mGKQ.snNv n]ySy朒$N3|mÛ^tOTd̅z\xuݹ")-8f+WZ =5vm_Ir`&ݪBiX^4ͭ2{11" 1*a;TXėlyω?HAɰ3EEh;`"@6h#ww7T"=Ǵ\v(WT]c9$nnAl&,>Y&~|vjtcostg1 c_c;a>N"b~\wwפ@YU4h&b]{ʖpַRĉH֋$d ZReUyȓ\/-2c'P7g{4dR;{5JdBucu>XPČ/5 fۼpڍ\հ;W!2 @1K8ر⇺zIcd[O؛jrSRgA56hw̹GfMb: ߯GLOHRd$pt3B':,ȔN7:r]݇Ɣ>~ x"j|͡EkuG95FBg_r|8:P>@Aæ>^݅sxlpBHPu:)UMUUPOUI0i! ֌e:B;nĎ .)40zL1" /$APdr\P՟;1> 4q *t^"n@c `Vpx{y=ogSêv-{bI34Ca{OiF>5iH°E&0 $"۶#e(wPJ1`:"@^Qx|G|օ9KM/2u  jtp5"cFJ"҃eJ@uv9e;1%uOFb Hnepa2Sm KS,ʆئd9:aSe=5@q29eI[C557hʣ$C#W^lFGW9PDS4Wdj51)j"#sF.U#xD =a;U^x-[I}313˺}<ϝ2wOR/AoM o4chE>-,b8!Hg6WG~$ ׍ Mx*G -vޗ|j;6Dln!XKW.Bm9y:\(qwg^ٷR$~k^ ukҷG˟8t7<HvwJX'Idd Rr͋8b50HBA0lrD$ l8۝?f8Xb:I59'GD`r5qMQc1֛թ ^[3u{mP#>V/Lyy{o ^-Dm0V5_G_a C]Y+xRxCh{W^BRQk)-t7[38ôP3;%1gpGۄ|&+sV=N;~32 A+C/$i~ ۸YT Zyiji_s7,WycVL`(̓ӌ')kevo|fkhH]+H y`Df C((Z$RIK$:a~rR(j(f?LGqS#( fu%L":y-K1Nqh2gr-q#D1p}}3ݎL#儉(O=8{;S xYQBЊDA_Gc+ܐsT%R:-" cBH 4FIh< S4f2sk'$7rw;cWF&ȵ*mQʟIӧP:{Lpu1:Ha]{ӯK00ftGlfO<.c H ^$`#č=nM#^آq8-(hGdXA+tof9t}ia^.< Շ$3i8"r t ^^Gb;p1sx1۾ pմn6"Lߦv~&;^c!8AӒG-D& 'vG_դr0Y{čBUho!̯f^fVwuwОby_p$d@$A Oa Nny6NpWZ gPQaQG` |Or1y>l_Th3,4MLHån9٘ ʵ2$0\HYf4ƲDԅF 49Ln8 ;}>͊&^. :ǫ:.](ZZ]{9qy|P dq4>m"i|aPZۊXnށYg0 IC.$>Z"\SchuvfGwⁱ 9Aշ؛I"QB ANR.qAad"H1Q(Ƞz8 } U6TWYtf7Tlm`ADM'ThF +;{r;欠Hb%3) fHTm$DI,@G@:*&"8ŋ3nqfL^!^e׮_y$֐U%wy\;4pLvNqrΥu ,2z74o6S2&[yfwyYUi$s^$6=<ևꇧfDeֈ뻋A)(yu.)ĹQtu[4T<,aV{F-)?5)y2FkŎ%؂f4&e==T`lZQJaݒe "G ԇ3B}PksPU ýeș9 Q*3jC%dͺIMMfSa %]O?w\ݹ%r'F1DO D$4p} "'<*VS*{$ C}|1_͏tݾܼL77&2I. ;; ]n4.d(`$eج flH!=E8aKpO{ݵH#tB #v' YN .La/$10ce<˥ݜ4c\@F'HyG4<$)B(9|A _6E#W E57G"PX@iV0ar'6l'g:-s9]q\ȐYEs]G_MglN 5 I񘂘€QQj.l,@p$LB{m @c1D; lD5 I`@L6@FˣA]xY-v.ҧ4 [ஹC~ Ș'$_$36*4[!/vHN:=a3&BeF~!x }`8KK\̌de{h$ýtF>{Ƀ?u7{fm[+|W5"%?0p?16:Dݑ@q^6T &e y8B\Ewc !*YJ>DZ0F4 &.} a̾HaVsh/+` hEΜ ;\Mm}Mޙ[n- ^hBe`D[CƑ;8v{dA DYn~C` r$3 2eKa@&*HK!HV #A ) ,ABHDAEP#  , AA\PfB|P):r Q<ͫJ``9Măw[2s*@`Oрxifȋ+!%<{[#;䤝 F ӣ,!@V4Wl Sdb @ř"ׯ>oW5/I$ʈ asHIgVO. ^$x \b0y..9L@[Op&_*x;y:< 7~WXBP+^HBA_afw(k"@~ =  ȃ1ЈړU1"z0뗏ͦ>w07{@  "& U V"2ro].9C'0*\\a 8]I)uH)K'9<7y#tfGeIN B9nZyeŘG^٩-]fan܁ɓe-ȍg<o_ˮs'6@sq<{FLF}`Fev@an'0{y}$8_7!,pB.vt-l]8wm"5O%t#1,ĞM>ߓ%+I4?x{<;hQ`?wߟ,=N_d`%`!κnqQX'Xc|1*ZK'.YRQIzηY-b qe4ݘnʅG<~azzOB`9 =z/ yY |TѪ\ k(H3}6p0 re!~lv<\auw4m):9}=Zi0-D(րXYTf>.B3uS)"N]hHp'/;R/}5/O^=:'Z$ߓxI죳 r:viy<2c:;y*[XYͥ&aVi}st)Mtҭ+P♪>i7aJň{̼x2 Q(̅ 0yRI6{WŚu@$c0XXauw?/pw"wp#}ʛ>Ȑ&r"_>TeQ@on08uh ,LnK%'[+%*A0l:/T9} }0̀?t|>J{:~@94(]$ KGQJ4via~-y5r8F"9 l⤢B 1>Q*G䱌Kav铀.Ƭ)הu)I4[#|yV|U;s,W TiMe5 vT#$oh Bvx#+q !:- yZS> ̩"(N;y};En|w;2Ga]1 32PI2w :*eB9)~wNfoQ~h박<x}0L¨? =Kn;gb͆r݄@3͋T~+ p-9عarLhxQqxݤ@|2,1ъ{NgEbŲxj~_ej<\^G&;vP;91p-wfNM A t.) Ab9@a& "Z&L] #qxIT#.0(dſ{@}4Rt!도׻߬qx) ֞LFԗYsr$seh|=rBm/5stkZF=`rq!mꑪaa34Om1Yど 4}/傕1 _^ҒHG N<ԅlخH2 1v ;͡Zx-6Z#hLOZr[EsJ=sq35hf]:(Pt63#8omgwkmjcmw]UAu@.]o PO#QNWs>lR?p;~2[r~olV/ 8~NJPO*EBrOrNd`HrAl#>x2g#AO?n&Jr~NEA BC AL0ڻj2f`wqʛ*wC(!'*v9@IKp;Ѐo}|l=3zfL ,EŊ*V" _sfy00f7)lCJ:kO˷7sݤË>_!A*گHG"7U$Cd/1CB܁I"ˑsnfwsqLUƾu{Z'j``չdc;3v=eN:WKE,IʭݻȽWW[s97Y5Y|x̵ xGi]uۿ~c]nk/w]D][iwuA,SUfnmfj׫Row4 wPt6."%erfg3.cw7oqDUPy+uwUo;O9y{.;5xk32!/$אjLpN7#z Ȥ6r6V%fnh} Ӕ+wBѻ(H()Y3vU*w6֍Qtk%ܸ$EH"2_5Vn^Vb(Ff7w ˨ݫ5[32ès7gswM=Sͷݘ3 WVĤөU9{ }.IU;w29U1&bTU]jS3\;r*"+77^TߓѸmRɲ|շsV>g|O7Hj *H0 pfj9 LAf DllfN=2yk Ol}fmé ̊[.I+s񵧜SjZ{1*q֪ dpHXwh>h933333333333333332(L:nFZC'fԥq7`2r8)ݿZk8F[b֌eYF,D |UDFq WrM8Jֵсs`Tl0 E籍^ߎ5U| _(PD)(04%PqoɼqK.Iֵj\{-ɲL:Y5Gs6+6Dr萭tL~`; w>U|/9UW/Ru =TmY33UyWft0<+YEdu eJ `+- VkZYu3|RBpd%U7a>l{=E!R1$Caˉ@?ߎݺckNv𸺯3!$j> K>aTt/zTܶ.Chc9rh,EcLN8u'Lc7ҜKK]HMU%IɸUrtMg0}OپY%&(BcƇy Lj(^^=ncZNik]zC!@nbFzƜYr!t巃 G'f:QD|EDs||f(^@ KNDtT8͝s:=y{3nn""*Q5s:>4yJ%xOxt%~dk<x\Skn"Ǝ{jBfiQ]M2=5zB0a.o3q&% 9|g:#FVq\禀fo  $okkW`Ά2 䃗4) վfxiqiһ˅6z9aYrA4"F*RDVJk'7 46՞#{`͆TIٶp/.QȀlئB5 3 659D`<`'%@ޟ;¬]91'ȸ//N669hrHZ}V ^LՈ"BX'.}F{46>(xXTP31`hcѓukSBHpQ` mTܦ2ۻYe6*ea3n#^J1 uDd]cQ]&]:vuyhSr/vp<ٵWRA vB3WF?hMԞ{.,B$V$` lPHm|y!MW]< 0Cg? i#}Y C}m)WgN{: mNbVaFuVXI/&I3uT#V ?_W'Q6_ T\2O2z'aC_>;߅tr_}V{~CSIWM+¶B9nzk^t4+~vh!ym;*iPGsWz*S[(@X$ϱsT y|k4 #lKR$̖U5ibquץ < H JQ}\kUH~ tx*\Z\&Ys. )QKnͬMՋT+ Rܜ%kJmx=~AjG)F6*GE Ŷp!N7_r5}۴? %ɚ %7ĬȕSdrvZ HTyxYYt'OmhDa[<<<(-f'*5-{k}5e_{TMA͝VV @#ױ۶&Bem3zŐq߷NkK^\F!Sqt&O@HxP0R^mq0Cke/wJQ{}*]X9͓iqkbhvZ-*tm0}kv5l۪Ngch:9J[I^R| u!x=oE{rXb[dxw |MA"_r_MKK`ggkto9։͸K[ 1iԟ(/Q҂wメBB>q " njg`\KdyIUUُ[ĘgZO,tfnNy z&ٹZ_{~[I#m{x@c/ݨCmӶ=ή%K n#W˻쮵gs#nHg+=s`bK]Nu&/^-5C6 KM*d7ޜ&MشB_j.vg[;T?%{~Lmr7.)?[e|+),Br\!9Xt%HiJA0vZ|&B)P  [6#e0E" 5ɕRZ5{'^M=b7sSPvd)[ D{ rM qBv4=l "1RXlKvgq}YubpksMPQ8sHDAk,`]E@ ZV苿)B т$u!A>ͯ|MxKeb~ܥv}ٯOw1lZZlQp+kKdhoΐ30,+^O5O+Ff6f1qVe!Ks9|VrOڇމɐ}R(=o*LP紐(~y-OOpf:02 m;j* Srfwx-8Vpbd#ޝ(# UE<'  bH(_|}iُzaHGxJ(@M @^'/$Ex" hHH.j%6Ii.@,ul]H@!# $ dP{ ($\} ##". 0`0֢(ň%VҢcTX2ڐF($&F1 @&+`,VLݙ J$HRH `EDI$Y9~s6f|2gv>벃5xC"6~Z"z CKf#\avpPT0y&nrN/aHKTUFuvޚymp`` )q>G@hklwWB1Z{~j8R(@q(`jE'

"\j#"C- E/8!4ȠYXp*Hf;m E=%!Y͡[1 bE`XCpA)QlMw EIKO]rNer>(+7u 6;D57/Y$F}FkهJGA1{+{vdN2vH57]Uplm<$;c\rWt-=w|-iH{rWFı .0w}x "!  / xgQpO٦L(m|o=̬F@`Ma@ <:EU߸J$ە6tE ٔ1PLMɆqer#;!)4vQ%#c2bMN+5 raw@[»JFbK2XIkJ}q0$g&"d_`✮|lmhrm?.yI2Jb=f#Ԅ {1=!A$FJuLc G2&~Iu?hx.i+a;GG6'=J<q,Km-8j@<{o+>.=W ^]POѬ $Efwq^-8:A7h+21XH‡y#APX9vT] ?'c{oʷxI4kӤ9n.;n˔`[P <Cq\o8y=pw?_Oef'40֜ g5,:h>zϵmxpu{үi@r/W<%]>?s&,,yfW*qM涴I\i{h_y:}4_ׯRv7<?Ļs`,Ceew_}!1$XfAtXE2X,9.z {? dx\79{'puջY^5{^ʮ**=hMOx}`dBS  ;A ؊CNyԳΚGOס(O)Aq'}?8gS".<,O*pf6& %P, _w(1(:n X[rY4mT=$/$؎%´j 0(_K!HeG\M1xFsQAɎ6X"֣HB}uDBlS|֪jKcvd.oȳ^ )mrV950JHvz#!  xޟP;F|~ c"HH,AI( eÐa4̺V(H|;d9Ќ' \O@XMcgII2΢IU,0`,}%'Gr()$x'ttau~RBn*u z[]JdadaKc 6IR]Yp^X«K#>F8 y}rq.cvwF YDGB`+QÒߔ6A8m(o]Tc҉K]lFLݧvN{4)BeV,02*?lm< ]/YUe[ u MJJ&ݺ\=!%En8y `0]=5)xxJ+ =rXbpУڏ@7IidD#? —A! @@!sE'̘C#)Y(OX7 ὼ rˈ팽VncU?{/PW_v뉹9X@?_|` gHAn?OD빒3.;,Ӿ\B#zDΖޱ(-Ê$@I%TJ=ûÿ}W|%= >R] '؊AS]"w{/ k2,=H\O޸F-nS\GN2 i 9|2 rDsCQJt$OαӞhvi8[!ÖE =S"#'9P D}DZ-$Ӗ1Yܷ5O~kG˷ 竵HVn73.L ^L#əMA@tB.t |vϘN 2TD҂7!>bO"KGLPwbH^>_yz jNE ?;}&Hgp9UO;; bX(pAMt+WS։!^9󆣲ގo(L3#8/;CTc;5%3^JzLag+Ǔ׊Q{@u֤1AfHzwUagĤ_!tfF'"ᅮ뺱 tyv3Y;aMً87$x`f覷ǟOa%;G9y`!J0[^ :͈o0I3F${`JTŻH/:/#̘.ڳuIw{ p:G։eǭhOGWwYЎ&"A A(v:8\Ttg3Siڹ&:q+ E"mf䉷p)" |MeۼKΦ0w9]51mi%h>S*&g/X vxu( +ʭd#gZ<4(272^dFߑȾ@. J,2sGpP|ر2V3~{fYM9:h~\B;Y S`c{SpDoJuYdM ŋÃ1h*1d̒dPьLMBˋ_k"h Z3ȁ>~צ f{ uFgTP~~`cK l$BAff,X!(n/;V8l Coh;($(l4sƓZU4/ޥRJZc3A]J2- "'85$Pb 9eK;5F8n]fb~Wk.C.Ex! C(zsb HȰe++{||iW'Qz9ga;}I}P0 &#vIL_qgp2.`ϑL T Oz6-S'iq:ʕyגPu_2r mZ}H7q X&mw,VJOv)jW +J#}4c*wPn?cL}kđ`d0'>_orJFPiJSX%yz] :(_MLt2*OT*CO.G{0a4-pG4rӪ6omY?ieM:|seԶO}HOY-]<;3Zֵk[w2RI$K}Ñ~\yCY]5cS;C<<8i]3;:<׮y_߾^yo<}}W}}}߈zi<$I$ISutol*e^ 3&f"""""!$; Λxyo˶mmm^~Wc8v.]UUUUUUULDBI$lw^wߎ=^_Iܗwwwwr˗ uQrɼ4 S0!(1www0ҽ~G^堒A$ܖ\zזkF՚10fbLKa뜆 '{1 $ $9[eQ'2ffffaܭW;UUUU^oMkZֵmUiwrn'ww$RxL%WxSzUUUU/sn*9~> D" fZW%cjoxt,-$ӥ9e33'.OIٶ wtlHaFhs!zB@j$y331&ff$ę6:w ҏKĘPb!A"DDD׫sӍtq9; $I$I$K#N3.u8wԒI$I$I$I,s}>uΏ\椒I$IH;):I$gz7\莹I$I$LI$):I+w}?\nNI=;6Iki-_Ł,I$$03E lx݋aIk{#wgھ4>1=DBI;I$IgVvzu`rW].uO`uI7`mvf3 ]nꡠK̩RImd/Xm c,uMevYS*S33DI-(A|tMw0Gg#\cQz\_#hӱwF֝w7t*WϷ*;9aꪢLC4^Hh>ׂ_*vviSt?kߵ<S__{3~ PU$ (M ,*?~a(~HHB"IHbHJ1AB Ed"2H0`Uf -d 0!@dauUHL8@!YHVL)T jCC0ܶXA Iw@"X2C i<@`v$AXj) H-E@DpOĖ2 l$B@ Bx,$!,#zE"D΂v H H$p1@P`0b6(-DRPԀQ>Ĝj R!O%cS(E&W1.j HIiJ3TH- QE[Аs=78-VQ/9LA`Np: 0EOֿTy?׍!L~eXtPDF!PW3  Hz+\  bE#'鮿x' M!/}Wh*%H2"d,-AX,$aaI:hŠXY(K2!d*qeЧ$T 8-o>XH,hToFGo PD<0C(! x(ϝt&,"BR~;ph~0 J1$@J$_ izs{jr*'nH~tOc.P`dWAS7Hq\dI~FGHw ݉¤@#C=Yq~^>y¯5Wף~Gdy5`=TOD NJ"XFtX GY9 zue,H&~<3CX}rA a>ѴE\'ߠ%2_>VfFMdǚ&卽s4]]yFPYu n<7LJ:I;(dU pJr$Ce 2FȰM`1o9uFX:p#PUV5@%h^'ej4x99SdG9x9sD(t"# "&Fn""&!ZHŽMcENSff&Ig33%̼\k'rb"7|`$H`8@:}Zɢ{Yf%2WqQW1>TC@ʕT܋,L'AsjuЗrrD;})RfSUf7-ᗍ,ԚD@Gu#pUn(Fkռ8zxwIay[s}8㋽es{+s4&f(,PC(!ʂAΝl#434٣h?/Ζܚ'wSu>)}z®ͩ{2ݸt!DLQgN'_ji4κ2TN`3ҭ7Qg ۰r.dCnj r[f>N(#2: wZvZ2W-Īf\G)r圹o∱I)&;٣ݽ d'ɧ)(rk`Ǻ*n+ ҪdTVλY}DȈ`ʝ57g 7O!n%D}.%l Qy)OW7%f\ej.&&8µ9r*]޻8J}뫓C']N|=ՙDnpEr5vGtȈhYS,5tn I:-l Xfi㷓ː223.3k420ˌbBt[ QNԇJ Ž sN/7d:Xw(.REǕtCА;qf62 ZdFǥF;w8,rRv%$x$7* R=W{fxSXnݢ+&ʀY'B[Gr2i}C4F;$ESb%/Ghy^kggorwhJIt8Ne 2,?M!"H 4<TbJ`Cku$QzPK+.fvF]"/@N0ﴴذ(lc4J$VOւ ?n} ?_U (TELNea;s$ !r֬$ ~t{ b`:, ,* AM*׀.tGoOHjY*7߾C$CE.FH Qԓ!` `dZႰ2fiED$#!%aaHݨU%-QER H(L07B%AV3}-l //0a4 ECд$ kIxҊpz _zB, C".|\Sà[P32LaH0>"KREDd4 bHapFҊi"e$TpF:G D᫸6S%Qw-=Β"2b]H7D8rYD-(Hp@"I*]EJ#F(HB-ن0iH`ȚeNIBxQ0B)=,gQrl#d7.̙>."+ /Ѕ6)AbL(BcsQʌB eصb#ZՄ3Tފo/椛De hӢHC-?y[)r*$a:yI`,y@`d& stnZd @AB4&'B8ئ%)-M4FH$B9&@,VH4DxC-"! ~TQ"D8E !*(PHh@`$FyYM XV 'YI@,[ՕT P1G3(x0 !#!o͙vvk>3Gĉ囟?ٌLiI,c:oJ/iwqs2v=&'Б@O<i'ن "83}6=YKGCblR J% q̙3B ( &H<.P5zeTë,eLDx̰JFI1L am[@ P`nѨ ċ aR e*GxCdP>3'D߇7Bܒ<6l`3)$11`ł$蠪& $*K]\TQ5sB \RQԚ!Q妈)*!i@DtSBB QL!Y*4Ѭd E  TR֠TU1"܅(40Ǒ:9[db䆐ٌ& gd &( 1whuXB"'`0"YL͐P !d$7Ѫ]=WPHɎ@d)F 05Y.K,.jƠ#@ ihq#U@ X;A FF1j%RTA3PDV DE" _PX8ZdŸ_1!d(j/R xQ!E@`9NRx,&nd1 YQQ0AZ'B+X8h+$ 3\,*0J.,&avFHlt찅`B¢ Ohz <r*)E )b!"2(Cb -جAi,vJȃ"U*]}o4Um[~,?VIL2ژ˶X!# r?0D_3fiFGQ^ $2x -%wN0Am5I$+2!}owq$'0ɸ%1=Qu9S|X;-bgzx"4I/`FώtK:~*[\y1էo4,&!{. L53^tc XE:~F%=D4zGxC("K(Uz/'M$eK( h 21`(q!d̓08|m7:D$KSt8!a8Pܝ=hL E -J B Trsꗒ`\q?eɐ=q?A@6Zwyp=ᷞ7Eo4.k6hIPV| }5N6kr^RÕZ:;}LVb~gx{VBƊمMWp ӁP_$ 8vwǒgA(:Bw%(@cdbG4i,=׾NaC=T@""wThyoܝV3y|ߩZ^g 0`lw82B( Ƅ Vf5Y ;Ay?m,OtbUk$7'9?_:TbQu:q%Y1`̏fa(87xN:Mn4NL$A!0 AaL895^%E;h +zo0k1֫X,pLXT 86itF)l44Z w)8 p y7x sOWn2r';F3V%PA鍰 b₠ÔA~{8q8k;:W2 Q "J<oG| .i^8 xL!"!BPIb*O|yg{'Zˁl &:Mwl$565lBȹ jU ƹ{giq](5n@wJ(OMDÉcp̠ OӭtJíSh*mev%g%oQ'u1/\EreRϴ닁if89' \Wǽ#Eѓ; .^Y UO)m<+"n\~mjUA"F<-T?"Z]CJ˺ǫѢ-Be4a۟oNU`C{ 9G쐀x9"nBHYieU\YfOOp, ZJπYJlZ^Dv2|J3U[vU8fb8Rl0ܐ"%S~Ӷa4"z֟3׮,ix=a'$>{~G\ȻS$n(%Ѽ"q^O?p\!o}pa)7h1< b%S1UK"oϦ:Ķt[MIEHQ(^ %3?KWb6~f @ʺ\P0Ibi. :]p$* }:+ *WZk? ŘHq/w{kLvu׳nC4:-sV; P^1Yza1ԩh`.?YWT\4r)lP4'L5t8A3QOx|TaLs*oōPH -xC*X&xXh+\a@CI!Ւ&:"EP6s)I14xia,Eur'l7`F0"q4FF(!|/n좲켾 WYumpr> H;"r=8Ang' 9 ,_"[ՄXE8iM'^,1۱x ~"S(`_# U`H3)[tg.Y %:褻 [h<{of)vl6n5 d"v`.rĻ0d=uߓg+C_5ݿJg۠A!D݂TIj9v^t⤴jqYl۾RuR. 5.)12EI5zVUt!beigXٳ<6b3+^'Cq a LP s5V?e,t,ٿ0`UKigL%,;+OOEOcKMe_hq5קqScnqLCCmvK/oB>`7=w O\%_'*(RNIgNoYuDg3^wfy!Y#mGI|\,Rztȧb^(by#/~bGnWU]cDDB1Q>>S$0vPC  " $U@ o&OWgD0҇K 1;Дd A"$Xx'qPY0H i[-t::T0[J3;VҝXÁcldqa~V`txMy &-"R8W1E]lbWw!G܁ I\lyd9sŦRbLp,0`bc҄v~KEZ9_ hZ.G`v5-1QM1vkKHDQDntup=j&J>cf7 >mQAΕX6PPxuqUd Uk:mkZ(3C2 }OlYBE:AbAvcXev9E`$QV(6"Ȳ)":Z@2@K*"%:\dԀ) * d-R8"PāYhQܒD1&H@"8eTC`ǮV m&9`8z|$ZJ64D5|?~O7ϦԆ"m?}g1o6, UEIS9H )NfZPjs3FМ@~H >g[kjS}Ԫ3H+V5gsV ޙaF6BյQVK-V7 cGmZO ^:" js)mӯ^S6o_':{%L57AhE˘8ɰb#pDf1 U]0ZZ)8S-CZ@(er,HTyq?I)SPQ-owyv=4ݘ G[)X{nzCI zaUPU  @YdPU H>r!Q3sw|"e> t[U߹[OnlS#T~s9RBޠ== SzSP7:D b\Q 5HH#$}c ,"lZf%"Cgz!돃-rHN[&(,X,,QEnDq%1 X^9yLϢ@&ٽ&8dc6vpI!kp"dLQE),/?QMKCh1!Ii " ,$D ? ;r`CbA0y 8|;얦9ajgx)2r˶Z8o4OA؄勪O\0C|Xox:> v~H0|*tHVM)B1{DBSf ғyZ\G(q,#!< `0L4)CJINV\^h~ght鵖`͆c^=k כ5?|=/,xg_$s"a.<$[aWguJ։\AZ~d&_?]bK!|"P^?\s^PParZ;qfeߘdřiv/c_m:H`n7qb}v;qY=nkfL1BMbX"e$$mmLPYb]@ 0.Dym]\v_J`6|aFD:vP]1#?6=`9#Ч5#d^0b c%&RFI9xwBK" S=ww"h(Kwcq y.qkx%yne,9w9ᦲr/FwA_VK381;Fd@l *`1 e~#pBh\ƻCT)"9Uo&Jq,;ozm zu)QI}{e kcDqk;M@K28WrB2 4=<}vy`kݾeS|o VcrȕhT ^lDye]G>]WuğV7 +.=rǓ}=aVͤ*EJ 5"e#s&o"q%~|=й!bS7֗&@Lj diφj^sN..a1S>c^Ãk8N{) :F#۩)?N9]yaO|E^a!"QU^$PެK'Ӗ=/3ЙO 0@&.yjsq -ƥbqbZ 'ĔML\0&5Ja$QPMkjM(JPWO,8_a{Z,,3f :%_8#4=Cgն8͵{?xw4C`<`[Ùݦ@/it' ޗ]8s˜ eSVp-EWIњVח}  ~|78```5Gae@1W'΀t)W@:"@2 `|SH X5ќ:'Hf KC}''S \6m, DI /ݰ{-<5?Y}$;JYz^+Ƥ0l:;8Ӛ|c bH~6r%two91`  ^Td P4-ĔvE[YI`I1טVU3@ӱexpUgDjz+ } `0&(H8U݈:02*EwI/ף٠`D"W%o6bM0߲󼫖8Px6PB=^(JȂ䷞JpoK(3{& 3rIA!\sii+7ƍy*xS=xTJoehEL 4moNK9m.!dvfņd łL V( Ξ>> [PKSQ@mfUX UH @22bHHZAa{7?pdᵪ?¾?4ӿpk:t_M89:Z(blգJ")QQE"$R*,Y SdYEIkѹEEYTIQ)E"I,3J* Ơ*1,%Ɗb" J,FR)!D!!Mr; Ʒf23,AHOoc1ДMCbmP'+&~xrQ-)NOHVtVK) 9z)Hdž dҝiY?J3.: %OSX}cDuWAsI48ETˆtb$ǞXJ <:Tp"#Yv1>/\ ^Ȃ8xAXg)˞ Կ.W TQ#3ῇ&BE1s-\aK2":2{4WI[ %!E)@r_I@Ic{Ӧ:͡Ԡ|r3]t"4XgYcWGfȑ(cΝyq⑹eH@:W[xk/&'^s0Cx-9CPDe0U$0ԅWw+[tqvOBM A0"ӝ=@A` 'ϼw/N߆MDs߫g{-".v!q2g%At(XC Hh)Hz ,q>_QYf`]A~4$ 6rLOL3 }A4rS:3̾8T8x! Oyyz_/T;E$vY,\9`XgwuE~osx[PH;=DUP(chAdە TU`\31)W+uvy.j3s5eGY&W4e6Ƹph<Ӆb㤌y &3 ,]Dwd \O&}xӯ"8E}F5>zrN{?_r* y,bqq6b :P[T*UD3t(BiM8TTJʅ&&8V(LLqPJqaeUB+0" Y$@; ÌАX%gY4`/HԱ@ $ **%6xErR; cp+ ALA!a8j_F|n0f`fW2:^ exͭ)3 /8p` `a,"!/^t#ۑ=5nzQuC] shrYw]%%"\Êvn`($ep\,+erD@v?j{uD7啕ޯAݮ+.(f_-cWv0( Onx[ (q^#Q o>~"awl^-0-n-r1/^4S)k~k;?Ԭtş! N606QfJoz?P|?34KWGgqW̉ȄH9/*Nc<6}BzKB}^ϦOVJeOXq̲O N6Qϓe3n.R F`|\ V<4Y ;A#ײgCE8p -{+y"AZ,$ry$ǥ0YC_js++8Q0!gʡjTd璇"GkmVpgN?%D$S0hr8ċD;[8QS -$!";`q,ā FtÒ "I&E-Seq0w, 7gCC} 0QEڒkr %$_wνppŁo "E hT. IXf 4X6?1WqU#"C!LHqχ4aD~eF#==i`" BRu/ E U Q K ioxY|O4JO_p_UE,J*Im-X6)mP dtbɤ:pXkER[jEϫY'AAAAPX7q1>B%.%RLHeF[nWL4&bE"<.ƿ9ܔ&Ķ!1m_~^K1fyPZ㵆`#Ə xBi= +]*uQT!"m ~  !>kfaP&oaGǮeT,wQ@J>D@yH5KV4sq pPiXRE Lp X\,&\&;jX1c Oh[=kwBnͩ0cT^X✪)"kk}eT:vfcgԗS'[ѿQ,+˙P݈./V+S D~Kd ͗qCŕ#@ 80aG^bFg:*>}qH:N3|3YEZs`Ḅ#U[Iz~F)M۝نBlRT'SDzRsbIOC.;mH"u̦z_^d̎ ''Ͷv[,eD-H̓&q~E_Ͻmmq@HȬĝzwuLevvQ|rdznuJ5Luiݓ0ĂI}̶mܒ. D]o9B.jU) /ef*EYT"rݏNjlg>3 Ǖ+TstʑJ81J<qT#Յ$L1.3]X Fy<p~Y[;uR0hʔEZi `X(XXQER*16m̰AV6fR£Ia.+XV A#l+~na\u)M&05GTM|+)Q.C%CA7E1m!Iae!+NrE0gE,5]c\SO[2s̪BE%7|`-` ^t^ o"eҲ[ Ad1ԖVSy{<(?AD|@s AO[( 8$8` J̸+LַZ8{ۋR @ {JvYaõJϝ5 {sI~@HȀkgu]G[8psjslùaB9[>OF3>(_fQ`k n"h#?GIziBrh sYv8Vb}<N t}w|/2٪e޹w뎄 #/9o/jsY:>>"t~YC2 ,H#d,Ml\D,CjsfMJh  f;vQ0(IR8CeEc:q}"I qܒ˻k$KUSW{ ݻpp\7Y)EfR P\ߩ ޘGNOGz@ڿœ_ir'YO?+*yziZQc}"*kzPMRlMݳlukY?vͣP4j :aH&g+:2}7Gy43~ӶE9HVͱ/d}{ZK-H0G״pP22cD6 Q80R$̊9aW\ yKLVK vVI$R_Y՟;T{2)h#8 x̐Szw¦n)aoMj퓬_&! 06Τ@# ! ت$.l`7gN. EQ^>/||CŢB=n [EQUciRJԊVXAc bîiV{v",AF= .H ʣmlVn*fعy: [`ZH% u)9-ؐEFT/ Oy}gG{.Njz΃1|~~c}n7di,>z8DBpjv Z 3surCB/V: Mcю H DP_dղur`6?YƵbuJ'5W:<WӠgtIԈnOOa,gzOR-1aCdliyҧ-51t^@(0 ^4~7~ץ}]B מYX =ieKTvhki`?GIӗ}:XBR,`癶G)/AEe~ G]>ɋj ^2_WRc7;IssG`6p_ԫ e/h/ش߾uGw2y_Ɍ,?i;MIú*."Pt(~oN@d6~hB$0Dm;u#{P}3;{Nf3?_y9q5N%ðT"AG_G܉y.QKXSXE҈d7e^?@-'.թRY@BO-XL#یJZZ[ $%\ܩjFs](o'H[b< ^RW71?r鼴s|lUg aF $0 /kj;ѦRPqF<w0QD@P:k`=^U 7*2GA?ElC8MrxqERI<5+pV,ȠgK7U=/-@u)2f؈Pu%gS Yg%rמ4#H?qUoYqZ%xcZIl;[ƞt~w+Dѿ#ۧa+SL-dRNJ4UoEt[zoFdZ %44?г 95Sĝ]̏Y1ք,',e,vSR 5tᑎQaCDcmgF~;LWs++k+|c1) t(t\IQZ-VDK5lܶŕ}RFnToB&8!"jPȑ٫l.Sh}TLL1%hJ1ޓS awMc?.J봻DkavUI: ѿt"9( ´JCq)=& .0HZ@#q]~׏].&o^AJ*B¨)1ZXcu^C1}x>{8k-G@`+\X aK 4@@`. OJtrC|(ѕ%S% Iʍ2/'uS)U3qp"yKxXvQ2xJ{!S801Lѹߤ &{~ wT:mjͥX+D7!snkiSB?y!5qffJ&ӮrMȋso4'r+VA'i$KR"Fv$inO>kQTȇzۙ0׼'j={ d÷:ln.8YpNf!"N y=@aA)H?<|^v;F-&t@$Wz0J(O}W@5Aڻo(Ui鐳VضKpDKrQޛ 9lu bdwly,9ʒ}rW@z3ܺ8_M'W bosE d^mp{~VQ2=(W<#zHSs~wYĿa/eٵ}ï^9znp U)s  Ԡ  cfLj9'l C hՌK z!c6q3Z,zFEg UPRN!` 싋"@OUޗNTGUEH)b~lZ5 }ʣ _YhM)4p#)M>{UA֕`BX!V0&m^?r2p22rsT96Cq!PQbN:i%aC*4k1 JP Ŧq0*eǬ9N<)w[d~A04 [ '88*@ZBon,j}m@GB84}JD^q9 ` $-! '[&Vzi=ڡI΍_p=d&|tPI!n(!R9g'eO]̎qv-<80`1P]27unU7qZڔ'te3G||& 'ee\:O+; xC3c&+f XW>)*2Ŭd)̽5#v3K1⾐uH(x>ZY_ڕ~F9ս(խ T؋p1>ӡoeh l{csfckP(BU]:0c Џi`[_$?S}U rxoQ hfo.,G'woI9ޣU8vY&N]F+$";zT1[UJ -$XxAu1דVK?XSoۭ\楾Vެ﹵=Z *c%͗%F+IZ/7A +cR61V~xeqŇ5W,B}7ro]ɂAb 瘙 AiC^F3.xZJB_S jsۮ-cV (Tbj]qtseecr*/OǍR)LR.d`1TwRB Y  dJ gi_qO8jOфl l_5GXңk;={b}V<^3gLSdx}|7?>^Pbh2%, ]H?T&hF(WzHxB?b'n4 Ail(mɄ㎋#B2A6׃4p#7x4P?wx|-[PÚhFR-b:=`ui31K"_h3oL s;\=&<6S\oZ 4MLÇHD yhwG}w#:ku*Nv>sF4dyzYmo??*QDž+GeYHmtq15;a,E+ZϐbB(y:G8ϛZ{fp͡t>~ DBaB@+t Eڕ]Oד0D67߄BTJOEң;+0gʞ#s 3n#= Fmz;vX9u]{u^>5{Ny )9,62W`7C&7M=:S#vR=W_zdvԱX qǚ{K" Hz(FLt tmʀ!OR!h$'0חV*Q7FoaT#R-%?U6 άO^lH%2wAʠcHG" Qa8K+-RN]`wޚ;^wSpÅͺ}d&Һ*J-2#HʟCƤsqsM()/Qշ5/sҿؘM2 Q0 ׫'uzg(1;MqSYg2Mx +es:U kV0ƣ%G+{H}L-$B${r?{0a$E0`liM @ 3__rlN>n_M:VAcWWoa:K%ݏNK9.\gjW<.G4F{ M>`ƴ.~=N@FHI)@qMaڨ K@vGdh?!Co&"QR/7'|KnuJ Umm̙Ri6Hn@Cm}޽[6Lw&$؍osK_tr[RNˉpdM |7bwY9^`&Ww"xၚJ _zk3KQ^ofwbi'9̐x*Lq&N:@^N_G`3Bl()4`X `#ޓ u ;/8N;ojwIY3J!aC!IpX`0lݰ `#E.t?qOׅ,)+`ѭe߱9;|A|Aq3I"iqލ'\YĶg!JbvxqM#a^./qPìx3}=AlOh&BD^O#/n9[xeiw-j-\I 7tWթ3DZFG ]Z-]F3) )dtGV-)n9lQI{a^sz)0z.$ yuu7,D,,aȌf* zp;@;wN0C빾GAj?=}8&9M5^,#UJZ[/hO& { v? D4h@H%\˙\$4q9bθ8 9Pᛤ6=~ˍd95 W;w&ֽ,垄X:l}s|ۭ1/_;EYNVr̗%k12Ϛ>yX;/.#}&;- =|uw5$vJx/e#[Stc~:OR1TNB" ^E =@@ .CdUD:H#MBHKW^ k C&˹1ſ7$1Z}^>I6f၇'"BIi`\RoIEx昕3.)5)0%"dy\?AZ͛ڢ5hL"9/L?l;-gH (r(DD-?>+y~hY{hrە.|a)0 9@5?sh-" OyIBE ?ŞiD'סšj8nl@Q2p0t/p) 0df -A_Z8F/O9v4L>?M'v)- zw.`TL- l["e-|T5<ʓmV|G=9{.9tAf~a׹`+ hUxG=8{?8ߙmñ{Do̤ӭwVw2LI_Ry*mEU9(IV8qhk;_1Knd`1/L%n1$Ծ$dr7+̓pZntҸuWv7h,bҹ*~2l"vRI GMnXE^O}xmFv(IJJ֚H&qk-co쇯?a[sÅL/ߍQRԟݾ8ѳz+vZS؇", spI^008VSkP/!HD2 k0/ Q?{GLs~)͙ Cd @u(o m@k-"ģ9cdךECC=y;r܃=KŎ%A6'%[4:gJ~ƈw^"2}7wS.秌)te``BѦ0ENZ/Mn4ѧG.a6w{7NM, &z -sU_C&6RPPX /ř96?{sgr/JOVR¼n/ z&C_dHmC qe we]Hm(c{Ug3 tӇ9fXfHŠ ts㎟ɌH$aA |tԱaoq R0\~[ 7M<Ԓvs?QͶvJ|#x\QhhtEU? SbmҫbS* g`\ж"SY%Dm=gAdL&+?b?r0(`bP8ױVaZ븡U`T` ȈJ¸q9B8퐆>7#lf{#Yk~ 1@G7F\#Ǿd?r_W׵o+m ]+6eM荋U> ,.F?3tb$I bhۆnlPƯUPM-`c$<\'%w?Sv<$< pU0x3/NP9{/!}WvCGE{ s~TFǹTd^DEKc&?K"&BUu^nVVm{@1*nZ77'r: }ev\IY_pRa$ctGfFw؃ CiDљRXxF vTqpF BŨ{[5|?-oڴ[ zSE4'BjaZсL-Q!2@a0dp23 e "@d `D! PH(p(OK -d*οZm: (DhDP)bR.Z[v%FsU, )p֫m甪wj~%į]qCu}5*j\ª6`WrsW LtQvT01vhخziв{LA,D HF6dnT‹ >< e૒K`-%o9sRݤ~$RM8V+kFSbjmMLpu[[OƘU]ΰҶJgFyi>6O{*eYśb1:Mo u[ei!* zL-A\̦ŗ)Kf-;B+  MuB=уs8e *_nYcrQ =שj:U>2 {g&Xv Q4 n5=H9KraZjdO 2Λ<Zap0 NF?1 6*=jbpՏ_(bxYJ.p6J&Y˸i 3gZ)h|hq;Fe9M['qY"qc¹qw}QHj.\y D_(v 7ްfΝIlnRٞxޞw({2fb@oH(PS?%EJa^92nE?>۫w{I̫pd!GiF74NWfseY\ap ~n-UWvD7~}LFo%-Etnv N^Oc{xFCM~s"= $AA0C@U@H$ I BCHHT$Dq?H'g3>^G|*ɑ,n`H$ E7> @[w 0FRғP$ؤ'v@T6DdKd@?Q eI (( q]I2CU.)!Q)1Z !"@Y&F0SQyh+ %@ƿB XZPT׀"sk3PGt/bjPe}dD :!w2>wmyCxpVcz|H!EX絯1a(D>:_cv~/ᬶl^-<0B{ ˄A  O h/!CU|n6>h&B'yO˪']r7L&~:w+ X 0$XƝ]G?Sޞ_>aV> Z2]4Ӫ``1 Ғą1XFJ%Mj7d\a!j5K/x}hg}o\}9Hi_8w2oGaϹKt1xk;W8_OB5̈́&;k]vvF-:-ߨJ+9x-cD7GM9¨&\wzbUQT"pr2zMlh`uF7.ͨC^>Po Tv:x`p $C'E:CٺgUjK֣gŢZc=T~{I $<@-!N 1»js,:lUy;ciN1R\:7i_3 y|u?8.|5 Lg Ӵ$E|O,r~f0 ǃV =JX8WgOZ]Qo/rdďnÐ]= $q/V'rbFV"4d*" Z^av'#3gxH9!Yws6GxO 3kAѸu:L970΅79uf[ &O\vN7`e!v7@ۏn#.1 MBL!XJ&; wN;mݹy*Hv^_#CڙJbQÓ0 (2bԖ&4*拯@=)4n9uZmSIL{\!7ӣq=f>:^ 7H[Ml(;^MJ Eq%&zbgYMvnvݵ0m:3_ep='%&&6ʌ:1>]h}.W@o?^J%7!1$P8f]F@};G7.y1)Uꚲ=͆h-ȝfF/P\iIoyR៏|N{i'qjcM0ԋ6l/c&qca2{E`{QnMAM[cY=zkB{oՊ%޾q@iAe`ow}2RXB{@Qn%}uuP 2@㳅I/ KOMF.}sbP* n]B/w5{1*cdLmSAэǔY3 2ݤ>ztN8q{K]ǎ+I@ L$B ǐDtpqp慫 -@{nJ 恰 "bAdTpcL~kq5R1}ۼK\m$C$00oC*3ެzJCJ2vaa+3lo:RT#b$ɑt=^Qy{ϲB=ǣrբ6T')\VVGplM:s^7`}ּz#9̏{FgyXb@U^?=GD{~qKkO'~wλ BI1xuV0aHOK% >)ASfs.R#ַHaߌM۫qoH.[P.?^q7hbKbC@]?CJq;}I=^,:ۇ;r-_mJ|.3{5r !ϨrG+ֳoH>dNKPn9!5H B"mVV2|7Tࡁ@dH3۷o\ЍD|W` Re?r.H @d+#o1[2OZB$o!B @ @[-KA;?>{9͡.l6?#GMC{d7YhdPsR  W1 ϖI#~9(ː5,3+]|yDRڱd2/)^fZ37zNnuW5NԀCCbRQ{NRs(#߲iӆ1'݈Usf"sljĥ?b-Z*2qGh}ZU+r9Ro=cUf}z>|'pU"%"{R$䲈 eJd粪I ! I&L=[o]BvU-x_ ;^}G,K7Z) R%Jt"8\f[5f"F!}HƬ=n_9e<+꬝ !OC0zEQy~Pf|,q# Vܮlc|ƄGq2/d9ГGy U~ ,tJF 0`RJ"aK "F6D b_sv/U$xc@۽@7 ?wo?u߿oogrZu?Ó˄$=yAsA1@rHS1DHA V$)Aa `XU1" l+zPPk1\i">N9é$qT4Ŏ*HBC{Dc~܁J|Z#"!QE#b.Pzɯ;BHpA  6/C" GڢѤc!IW(rI$dQT.ZB*4TQ*XRB$A I ȈX(Z$"2EFxQ QD@c)l0–XP( Ę2`cZ%ZU0,H %$c0dFFAH"hʫ{lݱ\~` yK頬!8ؤ-`5PnhB("%Łe&zK ~a4B J@H(4)4P`ڑJB!r`槖AF;! S/5H K)˰S{ ?@@:( F aY Uta 0B N D&Emh%)@#~BR6gWO\fPz]m~k=|8(Q9@1☤n渴*C~j"F%$XF$"?CT+@Ro1$^N:%~L4\Zl;]>G+ƫPF5:z ML0ƀ,g/,OܼjLxkJQF0"V"fj<3 0AP$>82A@V%/a I*ItC=̀k‘:! e:jD;D}I 0;X`Pi NDЭ@L"HeH_E6"l"䘥4R&=K XZ ! +?ۊX@7NS0_ER@ڃH$ @ D-XP1 !.\*|`uM"$%`!4A9揯yN:{@(R2T(zs3X2)""&,KG"}De -D!ʊ!fkH$@d(V$N!SU46@DC(1!kB )L@WӸz~83ؘL[n6GL]."zA;*Cp鴿6%wDbX{4A=WS0+\DAH Cyhqr!1y? ɻ9+{_~ x>?0#!XD6m3ӬA"l;mn1S{].;_݁}ڄ}6Ql~꟞f?y-]oRP24sMj ,KWK8*ًԐY6D^-S|_ +]ǹ79n5uH~Vi@D&(t&4;H0,%|#3 JL#I%"0@[WV6րXRH" (@.KPdKy;Og>7n O'y;&wǏjYf PMT \wݦ-j(hAD3S9E7F$V3]"+i@Shn9OoNgb,3w1שSvB@ @9, ֟-97f(% #Do3FFIF@>l DdT!J"-|;om[އ\22?BEG/| ëBT@ DHP x"3RΑ*H(djt Dq`HY*bH `$did XEY&кd*IiZ$$-D5R!HH L*@v-PB D'=ёX*3_3b"B[`!O4T"C#%+J"# $ F9,m#"LE $TtR"#"Rb;-,6OJ?6 *?"E0z v tAQa!#ȶ&N`s"aDh`2CCd @#D%%}#QTjoЕ '0bU@ؔ-"m xM2&YP)0"F#BD`@AB)fyւfE3/Q QZApʡPX?I(teԵq XO!1G\L9}֪"AqY-!ldQ0$b\U-5@]K DJ%P(Y0C(0-!r\H$ 2 5Eҁ%F0sv6p@6 , WM iM^?jϤdD'RB**&&Qݎ#ۃ0|>Y3ѲQp&iHB- $GStI)Ibk$՝숟le@L@4Xe x J E$B!+  5ӢcH B(=e"DII %T;b5 J F `0I(TDD`@@$B(4G?C8F$x] FP` lT "B25`[ctE L  շAb!jĄ7? `guY%V_28V1bjf]gQ@(P;t6(R|-1Nf>o \wx.fW@/e %ᒮB7Zc]^%!  UQZ{탽e|kg?t u=,D@ 6?³,h.- ^Fw $K.fd%. X};l&!eiACB(?sa)61+2Yٛ"[\X|$Д@M^3m ,xC%lDA3 $E!)"0A>DOBP(B@XD\R0X!' "7L[@z0$0-+"l.2S١цp[<2ӷPAIDg,A#Th }ۋaC@WuRD*<}% eMJRɲLF#CQF@N[)o j%(9jUDG $X 0D4&'"9Ф߆\ L6`3ׯV=NUR!J$4%QaG0DcՐXgnK~ׯG_Sp={-'7/(wTT4l)J!T4)i0Q$,?/wt?92Cb]om9?b6 AƝhIp::=ǯ=-þ8Hh#|q/ƿd''a;~i∠#@j Й>4G!""b!~=,K7{A.ۯ\q.2t¢T8 @F,bg NZoK H."\DxR$b(Ptltq˔C8"V;Ǻ SfgQ^ S{ Oaイxdh(A/AۍylZZA`""" ڊ!wU~zfvSVk6T8&'dK]}' >ҭFM[}9vݾȃçL-˂;c-Pv\wӐs`r0&mЙ$j @e dz( tr!a( D3!%a/,ƨڎ,ꕜCLjhBήk41(+GSc`'M̀I613pTb%PMf!!Y1VcQErɗ 1"z6yemSg4QDغv) Ք$zǃKq(5,Qq !ʈmBN{u恠0 (HI *Ϊr|XљMxw%8X U8 m$Z`+t=i ]P(9'U2_ٛj%ЮN5S ԤEBdd$и cKhmz@e00<-ĉX+x1aCeJ(UBY7 \b2KWG4nZi5|w~X{?3mcdG_fX?_,5:ՠڣgO{wXi\@FgR5,D}(稡Vмl:F6~}`i,Y^&b%C,lgۏ^A"b1SފܧUADb^'[Et &kGԯ.3}q򯊴b"""IwI'bIA-sFb!2&eDșwrC*wiUUr%rIܒaDDD)yQ( I܇0eL̴DH Lʙyֳ3332mNk3+"feUUU'zD0ב<_ZvK֎z6mWԷg| X UƹVߎZ&9EDX % Pl5?H"ė!^0*]3f 4D-(^А:][<~y ~H-~բמ?e$OtA=q@FAn~ GHJM_6+@𻺰Øelyu {UzTYçQ1I˄$݀{@lN:+f yf[{u6ai$PZ:0do2K ~+_'WZo_YGuXaoG/wG@;Juo#^jƷ9hfH\ihXu&q2WUuks]XАvn+r~hS="% 9Eښ!WiGӥgܦZNt0sv6ҷ7L%9$][H'EԋT$A;V "1yРHK[qT/ė e E)Q"hX bOjSAI4Q ^h˸$qXDG/!{*Gׅ 0DIuև0^X}F4(E]7}p+BZVCPBb%e, 1t,H20ID@H! ,*FH@DP R%%,a;̘mgN`S 5 ;bV~FK@ [DZ%- XQI",\?`g7p^`O3R@/nuL%х!;XrLu 9sƫ20)v "%kBA9<4s,V#3CFd fZhvf\u-`.{=&l$;DZ'%D)mJ2 +/lVܡ"ҫ1ŤHGc ʎzh-Qb6@foFiQL20dg ˀZI B~A>|GCK(F2OҒ"H$G!Oݨb_{e0K#i ƘRRS ` ,dBxQP0*K`kc@]8xiQ`L}6( L_̧ŒQB uB)"1$dHB ,C`ʖH2DDA$kH5癎IXSL `AY e-Bb(RńJ*FIjԐR*$\5m"TI}/ Q+-D; |ѱB BH"  o>t.n2$I!XUaH #zI D^ BʆLp؈B i#!& @aAdzAKw:'x,&9 K  |P8#@TۆS)iU!$N(2hĊ'4(0!ǐ 7Rу!V-&a!(HW΂m{L% >Q^D 1I@` Y(_}WƏ`& *!+IG?@uŠy_90C4"b EaF d 0|>e Q(K!I0Ǧ.tc,N;ߋP6T "T5A P@4-Ԉ$QzwvZr]hؘG0 N C%_Xr&BѼE0J8N݋lr8s"Ba&ZԣzꁀK)Bv(Whfh]/kI*d\"o{ D:J݃bS$ Fg;H̤!d@*]1t5/Up*tbLA-L5Hj0A%!Q@n#0`{Si~AM/`` wf5$7G葒,etv|A'MZBB @rL,0d)*p0TD"5 SR/" ,"H6‰ T*P(@B @DQ.4 -P%TQ H"A B P5AK.: JH*b!qB $ ' r( ) ( \lG;5yFdDMN`q䘰E\J37o5NڨH" VH X"* a B*(H" Dd0A`2*"20( b @IQXaHFA $Q" AED<_HؤaBB(AUaAHTH $ It!OJhK!5#!PBH E jRʼn H. ,,PX kBTD,H)mE0a$< P؟h`UD,Y'x0uD74{fU)Më`B",H(H( 7"b(AB +|$ 2($3l s4-O|'_h҃hcpxf4yX.C_3@$H( $h =pBQ! A /lD('-а FXNȎ(n["hAt@E,j,]jq6C ~(N4/14a@@$XRE'%R{H)") ?M*I` RXw,ٛs @5&D~!RJx"- >_ zj OYbqJ becVe/C0fJA(lPM\b:Q>YMlhMl9D"G  eC x H0 Pz]E]h 1 ÓPސ|p:pHxy "̗ DYF,Geĥ 5C$&2Tap]à\YL ZaL yc8jkRv"ؔI 0bfYaB]ϼKl,A;VdIЧ#б@"DajYhUJ =` oRN+&?^@I1 (Hhf8%)L0AdD)"0:`Y:5cDPP`RE :t w |&v#(8 ԅT0f RYiV,lC#ﴋAD"΅@e0@bF# yOD1@l($cxEiu!uu `FcLpS@! #8q N0RcVC$Lh0l)-Y,6͉Xq&P䪑jR$-cX>~𡰃&A ,"2֢?) =U  hңe\N ["C$U PfLKʳ "ZKQavzKC8<QB;@ e^=]p3e#(Yjׄ@ѽMp<3ڒ 1S}q znnЂxݵĴAط-ʽOc:m)y$;Y '75Gb̺4@lRhq/?jW}~o~w=:FAy%H"E! [PI)+_=8XyBc~RTF eDhBPd?ө-HH8Zx]R+*)`:"j H`R|!b8Tn)J=bR)H \LM"-$3 hs Qsy!T ( 8 Q pFAB_ÌzlLt; ,{.gJDuKNQd ‰G"xF"0P1*P@%,ΧT`OاǥJ-4 Luc85Ѐ5@b:^L|ߓnM OkklGx?龈p8 ' Alj* ŔP16i=?A^P \f& 0y^/ 8(Ad 0"G&!IJ@Y * $#I,GR$X XcuX,qAi;c:E ,amX`%QDƤ޷ 51,6XAjJ$*.,% HF* $m20, AQdX86a1dY!)Knd- 8JQ!@e&q"0"Ȳ6-j$J$XE, !hU#LHdB2$IUm,{G cR pQ&E~1:733hѠS793(K 5h1dF39a3(ro n>>6dQA&B'd1c' - FHF t@:i]Hñ03#5`hւ0SiT.K(|ZN>jA7)6F?2 "("HǡZ"D* nKhqZ]K1(J\&dH1RhޅҪIJҬRsJ&- dBέM!÷dDܡz(Mc$2,K.T N ȡUHbXX E""22B[6H)"Y%uH(~mD"ZI8Q*м.P|A?nwtuE  ;8,Q 'voBI~(Q7 dNJN!D!c->7k%;UFsW55l=bĽh$Ɲ׶m+K1,S|G0Nۧ]v]:7eO9zI\7Nqg;s,sXcb '"0@B @ *}ČaU( Q)wǬd`0b`! D2v$ !RLp2AIr $@DVH[!& Ai$P.rdVB BH[v|L!|\9S(jꙡSן?#YLGX6[H1'D ~[UY Y o[: 4,FN;O{j.~l_ïCioli'5OMk;29390  H!H O$ HbSbIw t,Uy7{\cX e/ ZsknPb9 ~(V [;J$0! R5[aR H+tmHĂ[~Ӧ{Mgf(l`A0 " sf)X{@swO5k4ucS>&덆UڗJƂJcFYk< f'9[OWsdcokc+NH)YCM,l;Fܪ5E]b8_ 5m8י/`ȦάT9#oQqtu:j ы)_[^yrC+`i0}W{%O7?,rjE}!F)5 ,dXWjqϥ/ ~M40BA 6#NE*BzkK!oӂ:{ps<)>Q*U)> *5z_=՛}uNꓗ41TT}LLl7 أ+iD*(j zK%"혝Dqnax9mQ21P#zǜT hL"@2Q|*(`E?b1K /?5 oFQX]5 i [.k*a79 }G>#M y U|RP@ Qy-\4-YR@! (* >YB(RHH13lFBHPŀD @5YPC1:>Mjg$HH>K~҈L BfVD 1BdY JHX#BKm !b+"$b#E1#)#w"M͙JR ƼȘ@ޅIӍMYJ :D@aEӫȆg?FOK9c3: , c(JAf=Vw!z'<!Zcbq;7^nд-],&7nkʘ9 ̱7l J`C#R]|햬 d) cH "!('s  "bfI(%M}l3HB^ %)g \L [)4T]IxE:0"͓z9$+ FV' 7j {?YSj5%KN*tL%DpR^H4ϯ[zOuYfXyKG_ l+[VDH QX,Gw;^7q$ Yo_3|=]oV ==kSf h> aĉ\ DP8Z%@*4HP Љ T`/C>@?`eN<|sq,s $S"\.8(HQnOk,Lei>e:\@c}BEqaśy8~+Y0o0ˢFAPEDQ`\|fڷ^Ðr] ʫ 5]/6;O3paS㜝-ͣ;ߊ%Cs-$f16a?L %$ۭhJP Idĩ"\mONNA)mۆQFˡ=3fj#PR ȥ5 eSC*0a-ՠZVId0F0jn  P  H BdwBtPDPJEP002$S$ $7T+EĐWun3D(RBijD=H.8H,(@܅)X qԱե-P(@bA1D4D2&ʭÆAXbP (J@jV Ц!B%'؉7ebXdH}uY6F|,0C 2+)hޢ 6wpJTk[2Y!m!?lM"4@ H"hSxum7gp]o;23fN`,Hquz.^C?7?8;uYIX ᬰ `?zKc `Ѥd6Ȓ1!M&"0`["i#DE6B A?un0  T@Ord`H" "" =DH  Q *R̮ _74B1d!DbYpH'j(VAfE&irE8E`0 [5"JHCM=Q,$)"T K*XF_| ~ B#hB~,ɯX&(7Q DEu{  uiqXo ڎZ`E0wx"]Y.X4ыc- JRCP "U٪u5ZĚ8(-n1ԡUĆ1hx$ !P 9?S s55;]I6pAqh!&!`JcH!@RB1F0߷M2(,@@?*| *`^b0"-[28"$U sB 1}m Ug$]Je##&eC)@A'iy h1R:Î+^k1 #'a.$b}J+Z$$-Ǝ)M_*DhhD&vPuyQ1-g/\A` 2EH`  P '%HHB*H됒N}j9 QL 뻾~m2 Jd`|`&34h ~Kv:M5C6]Nh keT &[8K5oL$h`?24.S q/-ZUyE~N~;roFԃvLVz*:͟L?yIDDzY[-4b@.Ci JIRgZ\ 8 hߣǂ0GQe' N:둴$O3EĶ[,;+N'32)g9= &`D 'H"+&v/a$a"(2`71F@_8fr޿@簺9ʃ[~!!uL?F q2*L|ɐ]T]am>H` dD  pOQ=g%kY9LV~_֣jozރeZ)2&' 2nU·:*0_$`O$s7.x9=e*i_d|';B(C0  {#)Sb  H($#XtQ! T$BNg(~37CHYe<$ FBS5D^{1odT#%'A?)G5V"m@" jBjnTrgkE]H%HH\=~` !ĀyDG$EP0HHIY"Q ` "1R-J )Czɣ }St'R(üU@Px.B1b(F0PF F0AQHO}O# 23R(( ERL`E EtkF13CNA!,*RH$>鄡#S_yZ`fmqkB$@<^v$ȏ}U7`Deu6Sg̤K<T2`$T]no 4TA!~=,D>O$04Iʺ{bl BDMąXgt!C!?< 3]Lj$R {%-BG? 8=(H "bTc HDB iŃMM龮@CfaR 8-akwѺÈ"6MUxsB Cb2Tc9Oٵ㳯N,"~*ܩCŜ۪z`ֳH#ԃϧm{;٬ @6Ca ~ɏ&JrRW vbt2,ML3J'|CrYk`g5DgR1R\X?H +yMgdhH[/A%H)CD,4deR-)AVDVJRHw Q,*BҒCvtQpCCE@Q%0J!2X M8b$>bi k$ :DÜѥ87GP6nWyBcB.| mK-r āL(fJHLIA20e4pfD U xJClǖK;el 2Dv.=M`:Xl;]]Un6G:"k N5K,a f@%Hd a<^$fZl[FZL(YvPB*+X'S D/iɩԤ 1dVRjvB"͒Y wK^XaJ1t#1`/6ol 10K5KJ $-# wRIG]_B饝#Xl5*HN"D BT qIaJTBV/E'Ch_?jmITEx~zyzBm#l(4a7Wn PPIՀJVk]uZshzivX7m1i ?{tf*S'ӗ;P;Rt-: zb2YG]QFRA(sDPi)eCV%AX/ՁAoޔt "%"T .sl Em wVej0H4mޚ[BC,m8eLGP1 BlP"H%)C yAtdA$Yb@#XI:" )KER%H-$%5DBD[$ ‰L) VI ̶ bE0@tP!(eJ!XeX#R$QMH@H!K49p.9m ~{4!EXX¥n PSu 0ˀn]+h]n҅a DY0!VF@P`"AA!IQAưx)\R` 5JHi$(a`]B*R !X$c(8aP 0-ZeF[YD|nIngl=a  vm7nU@)M#!e(dD8Dc%p-AXS7>*5P'mT'n.yN9S(8_@QH0VEP$AVDTH$E$A HD Y$X $Y$$AEEW1PV!bҕUcJb9J)AQ _#EZ HzG 6qFBP"B $UL ͜ERPF`$NDM) !ځtO/)x{Y(Nw.1SK7GZ$ $I b?\$Rl$ VP١-zX7i,uAA>`0"QEA D E>rBP&ħ0֡\4D *}M@HN@@d @X!*eEk"j g!H 6 E!4մ(ү7Z h/KAA⮋V2H(Dl)a!`C A#PҴU-IakdBZT(tS T$4$`!1L+ QKa b$YQVBz. 2 BA IETR(H00%"Y π $I h *V V0U1 @Ҩ&sm\# d I`E"d1H0F"H(BPFFH \( @4F:Pd?d"""4"'H1_HPL Rx0^?=zE띷L:{Dnsvb0m2뢖]vpLr@dE +>BۑTWap@Jd% mo7ݿ渕cq댖 :}?M^R[U]|YH[Ըl~cvݷ}O>'#Ý9@'OՐ !#a$""Sbrfk|!q}sPI*eâd Tb$b*'YhP& ́DEY`E^]#'2 Kҿ+ه,)*aTp(B` )V"c?g|iQXFNPn seHayj^$KY ZV0ż)H. g&dDYa aJ 9gSʘ G8:cl1R])J%*YsNDhb)wIm֯9DLD(IRjST#LOމ*!2^Vm;;aS۷zc;ZՃNMppm~f_+ݑ4 _^H;?\oA `A)H'XX<0X '/| wc"TAo8N(7FRAI10b+ #+Di(c'H "D Y|$ ,dc!oh$ɤ63tv b")!祷.F@߲TI X>N`koYA{E @D5+¡zl^Aޯ0Ig! bcA.]^ps(ف$ ,`!'$>j %S2۸BIMB!+B,EƈdIZ",a ߂D΁;aBU /q_@(@B2H(R.M^%NͮA,&1C1$m`4@$"@6adb@dE YSHDT"; *I63V$ H1AR},,bGi.Ҁtd"(l2I0$DXH 'yDTDC@BT$Y$RZZR;suM&T 5oސaEm=HyhКcHSYZN:LQPDUb$E@ɁH+FO!r $c*$IAvpA@DG{ $VA-1?" $P_KwudT ("iT6 $#E @ODx҅D<ȥ5w_M_8P "BM\ |*j^HZV)CU@55ǶBmH)|,1Hت۔x}04CIMYJX"$bze]$MjhY`bDÀ1nf0<\~@ ڊ(JJ2D !5"Ajd}_AIt)j?窪0.Xe>Cj;pœ@٬NKB2fYA$Y'0—$s)F^$35xM)(4Q(X[E3 G5l9+nrn1wɅHMB3,BdE (#X%2;LKPN$Dۧz,9&\Mt 3q NقưPL:D6vT o PwRR5/-`@PAH n#X*H2Hq x/S' HTH1m J^XE*` P> ,&T*>Ѐ@9†b> Ty'T+҄^PEa d ܑ`Id{d1D@MΗK`KCuC.p?Y!{NbDGch?@hDey DA$sG XZ k DAY@**#$*#s>,8(,$`_H PhiA!CR|E]{Sϗ GRDF$GSq(wdB)įW-dE nweqt-vGT9P@Y%H"% `@ }' 6sR4*Keb,TJ#}f0 "!>P@Y' [c!*\fd!$'`ځH.V!kieC\IP PBRD]I Xm } #D+B> S` P^rm&4b.j &˥[]?w9^&';j?>LC/>u…:ue9syp%!d3f| ]lw{z [b11SuFє)"geEaK̉,J^b[. @i `(@ۃ V#AVHC(,KdAE(B 6CeI[ߜO,_O?G? W>~n?z}&wd7}&>y&>R" M"Т{O?yZ7P7.QrNpY)`^pl堅 녁ҜdE?4tAM?ۤj\7b' f1LԎ?N5q/`!*Q@eE_h&ōM3VAsTg EQ,-l}{/gϑp*DҐQ4Y("kRbHAݺe'ThI?"gCz6KI(mgrvxi=snw>buj0>%WL/'ǾY~/u|~7<;'+'F(v M7iLiz=Ϭ^`5|YeD~@9cy'/l4z2f&Ghr1?k3 hQ?MH1d$r#"#(#b K!dMۂYa"0ł4jNM@t` ADޢc+ $VM4tf?vn,0!4N$eUAH*ET"UUTPUUUV UUUVK$ ȩl%(Bx( MN9ATg$m. KbA`D3TQ,@d2 ! 1D Jaj@'CWD.^ ystQ"D' I xWs~~xA,;B݉(8'Ɂ$Wp0]YٹhM6*615MQQ9|]j `~ Cg 5%^w9X>H V?aQ%"O'U0cN>=s;/Tee";* g/Wykd*~d#lD%ՒD8NQwTA7wI$b)*,d ˹ Ą0S)u H?z DwѥUIL`?刢"a)_0T `,"}`oqa 5B=fj@@ V7 gU Q* B{Ri!U+,;>i Q?D}m((+!& !,L){qDOjGܾ˰n0Dؘ_>h{H2(e # 1W@,!"󚚙r{6c2ݖy@,L`($a(cQUM@PUBAH@DH0RF@nE{_u@ R qi[0tpT,tm#axjhr+a5ow݌")T=œ+..oޔ]/+;=3W}S`uԮ;K~ÄRsɱy"QTƎbhX- |;K63HFx\s}3қ7yG[8)ػ oé}D#{} -K59+ę.Egwѽ /h?FM^S(:\kB x^LSB0}+oWeU {pvPS{bm4D9dFP!< L&ڸ/B z\ImctGw `c 9ZtO[iDv; /8Ӻ>N]>{܊)^eˆ >KeY,ĝ 4`Kfo{އl5Uaj"!Rl@s. fXtYE?0ՖF, 1mc]_Il?6 TbH$ h{`a),F&j0m.д-`L` Cʀ 0cPhYK`0v L+Fq(J1\'R9'4o1  j::LFP*,%- /H2AD RA5'F&DH4G-Hj@CzR@zA̬Q')pjȬ)P@,Ot#"EE?@IDQHBȈJYU1%!d r0`3F髢J)qMT–Z(J!PX,0$ )/Y L DD"!m^ S1 kc7#+kC*1Yb:[ ń**$YU K ]dg_yտ ?_%ȨvVX=-Ept\d1nR^qB!y[p\D 2{"gw;jnPAf䥲wLq-,3`@/ bc (e(C#Mh^ ;"{ KG x@T\\ _rn#""0@+1Rfd7)= QE=2r`4s.ӯ2 @aa:ڪ ,L2 p jYBDXxRKg  J$ $%E *HmM"B"0ň%NFJdJZb0S F)0C DTҒcP 2-VB,mJ "(+"(Q<(Ш@1lP  `<5u Qw`$$@H$B '\h Նx@B )* z`!G]y3MX(#>؈DLI z,A b,8őbɳdNq^ -UM4 ,tEaA5(ADu$:H0E{ٺ۹ 6J\PwIѕTDHH0V%,(0 "%g|A_$L,SAT>> ,@+ /h!hYPP6<v).)"Ez'O4@h< H!AB f8*(zPZ,P_a022T֡`` EuD#Zy@` !?-5_SI %*4Xd 2.(ҺZ%2U4̤(J62E ahIm"`PABMf!RDF[ {lzbe[g DDQd+h[*/2°Ѐ `n.\E"ҠEPTb70m%IVբ,AQY&2%8Y!}1bȂMHB ) o+YrZ_v8[v΋lU2R( 2I45'`\%L٤m8>Dbu*7oOT")DuwXbeH!@Bo>JKkA`?e~^uһuCWS̬9b&LӒ |v)2b @E`4XQ @ ݀P=ݱbG 3Uؒ}#Lazsp :YA !{-js cyrn1c8{ |֘~y=z1UD)e~ɀEr"Y0 Ґ ^ۂhbgAD'BiLE5!i،aA{еsLZM)+ wMsŐ9CZ59`rRmþ;6SWBtv N|%hCzCR ` #C}עvT5csZTĨ=$CjlsGK0ϡF+g[#JĹڈ$Bd?ժd!'~. 1AWSxjf-@&6,u0u. '~ohQ5F;1R%1Q7!`%,_W܎@ZxPEҒЕκ׉Ȯɝ͜'"U]smѵ=)0wb"W BB9pwI0#bMưAeUԢQhXJ1$j ރSdlw/m9$ ʁ 5{woJbNq%'8 A4,BYsH0gWWG(.NXqh'|cY&~ ZC[jQ$?vkԂڽr{Vc+KɔĔPbUsK4/l|r&({H }#m@,܅jx嵜vO_P4OO|x87ul(=Nǹ}-0>r)Hj 1}6Mv\mle9!(~!%DHtaQY[p-a$fX&P։pY~h?yx0!,!: Չ h"&O ! P PD"aPP 5BռN-vl4D؇" ;ŷy,LY! QROju$0S|" F' b=IaR)L*<1@@hmD4aE&='dR342ͭ A+)0$YBIPL7Ԣ)0i,U7WeS:7y,9HA*O" Epy -r E9[HܦFjSL)"i8ES[LT !A ` }!F@ O%xtS} 8_)Kql`R &jA4X !6d>|0ԁ$Eg7rPGQ ̐K @EB RFA cDc;yr%RpbC7mATC8͛ulA*[  9,_peqjYɒi$+cHBNK"훎JF‘th94PU)^yI5KC,b(:a@:8)Dz CDE@@bE7"&!"!t!pFуa‰ :0$kPJRJ4LM H $AgRG K 50B'"Elg5\lfma$"b,&ΜJ͆akt?_u8F,!( A؊S+`X+v !x k T#bR/"BB$ KULzґ#%XdJEYz|(_`=v2 f#$7 PBB#jP$ah E(elDr" QFopp@P9)9J BS@WI{POwQ?`R tR#( ?KK*IZLᲲ)a`Rv=*;`fX{+ˡeڦ},H!`{}ޠAE  Et@3!JPLO,m;hP[>l#$P! $"0Im¤"b($;FI) {i!A EQiQV  B@Q0Ra!QTT Ch.8!n.hp,$""*QQ1(L X5!)!F6GQq @ )Id" ,SÉD 2*PMZB0ZZ\%Ug6U  Z,Ѷfh3LB7rJ{E{B) )@K *2(D)"G}wߣV-1S)EK> & V#`rD&]"άC$ jPݔ6`;b3:Y |z-,0$QoZ9#K* ЗRJ"AE` 1CAn,2EpYE !Bu] =9)-˥xPٙX8[)B%,TF I1(ŦʼY\#\:qf/sC`:K\mmhs賃~DIku ߭-#u_2t6w5 7ɗ.f] !2pvi߭UIssFq5i#%:køtnpS !$,ML l^Hc-],6ͣ.%߅TIɭp6-El3~uܿ<7`U]cMO]Lt\=r u =.idwEݾ^7O:z8ib?@/JёqFAswy0 zaw5`G;q34GE߰ Rf#@ C+ 'U':{T  !!5  ݦA 'kI\0v2ᄚ]SbI~ʄDH{G7yFPDkrA*#.+L$~D=IeTX@0 \L,ɳ|Lέ&Ȓf>%0^DδQBTr%uօ7H|iȼȁ* #WA^(ְL!9HΚAH4kDN8yK"8lY &f"Ytv$4`^ (wF M2\A2D)yr& $ ̰NF5y+AYrq(Sp1A* ƐC 4 CF ˓C ZJ# w`@"RB=!TCD(X! ":Mmdx[UD0P]%))J `B  'R0镦3 D *c-0 RIVjT+)hv3$!w )edH R ;wсbo{  9$@#JI$F0 2堈q >@P@ -H:piM`E܅h0׆鲁atHe9dL 00Lkna0NuJE"l3Sɉ ' Kԓ  _mS" 1 衢8Ѕ ""sYD H+ȐZ{PPPH1MZny' D]Y`# Xd!kO2d0 (l)!B0 `D"# aa90ܴRR"AcDXF2F,H ߂DPDHkUctXw . ̴47ͤ_B Xa/;BywQ w; _=ug`0{t\fmJ2/qq5ӥ0(hl@Am6aB0(7g;A ןtfٰtʕ :@Kgoɼ;LY+M VQ Q :Pv*P.܍ڏC֩G; Qv"bHݽ 3Q+i,OO r;7' $N5e~~󝚘TPvAQ`t~GcF})_-֘\"bmb #h6 @n؁jDF(pU,hV-!\ǖԼ3o4'ڡ5%wW@oO=<<~2C&oٵ1HimYC @~8{vư5T.XpҴ6aћ9 hh.d*ضΝ&!:"S ZB@('}R I AX@_/Ѱy׉(x 3|)N hbsVBVNgta#N Nj2R@3WC~&۩E$D=#%0"bk Hro*bzB:}6B)H.EN EU Ȉ$j"8p B !B*A`LVKK"$Ac$@db[ YD`REFAE *">H!=J*Ȅ0`la ! QBBSŒAJ] LeUb#"GqaAdK4a$%]؄"&Q(*ŠB)JL20FH `HR`h9eF6^\YJM(2R!HԀ(v "2laG!F}NHUذl dm؋ f4JZR.e#h`$I_ &e;M *@7Aeb2YP |݅C0#E4U}Vz#xPubfB. "P1ab=}Ġ i?٠@wmTC/jpA}*1*, 9 C1@*f *K#patmN-hB1P\sAuhUUut@T= J_% `"@dXE0\qEy8r@Q _"p PEm`bS%B|A<`)Ł ω+0qփ~_uE䶁Gh`TH: ܔ< >G*#4!@؂aنZt6xpcuag%BDT@AF0d0 F"HAUTB I@bLBad,CM``!&ґԐc!c8RB[Ui*z@TPp1]  a!jEHֈ!Ԙ>&9w"r޴}\)")(®ZJ D!alpĀ"  JF j{@F´<8:a ϋ5j=~Qy{QVh3J+Xl[uFL% 0ϝ 321D"҂ bhI qXqJ4$ #$2$)(oPИnHid0srMT5 Q*@4$rGe,S KBҤ0D@I5zj(2PeB!3T%d-e%Ó"rM$\6XBC[ . qTn`(` đ XIA H*E!#kJK^O~SmwFd;^߃/׍p,7>S Wv֑c}(1$*ж0mR!r/0"g,(ip.g휚$Ye`HӍO+̡Pj8HaqHƮE1@(@g/NqCra㊓,\?wLS.IFƍ,]MLHTĔ͗+ "d$`OT K"H I Xw-T{aOC [ -$DF15dԓ2# 2!" 5K Tp';1 FJ`sЄqe0Z΄_/A,"ah hH_? * k4㮼A a_y^ *&bk,Aa" 0I"->@DBD9"8!Pc91  TDD+ @ *"0Qd"FH)!jQHB#"a@%ǡTŐLv`r$%@ܢ\NC`t5 #U*j :ӆ~Q3P ^h0s0\4Js3 ~vj" HJRG4ʹ!"ѩBeTt!i,\(\u"A︁$ `ԉ`(Ԓ`eiD )$dI"WaK%#60֛U;gQGlVAaJ H΂dO?d(a YDAiIkz(^&ۥMڟӮuyɇۃYz9zN<<-gfznaHVGK&Kun3 uحv̛ VnmzauqYlq|ڤģ.@A P\‘B-4q^왯t 8 /^vG\k#`ۜɚu{Kad߇m3E!e1]QGG8jt3'V> 6h!jyPwyl0 C1Ƹ")<E:}om?'9=:򂇴Y }?_Czv(e9L}<=UHu M}8?{U)4w_߄$ȐPnh*,Axb$`x xZEiP=A};\hIH1(ȨB0\Dn"m P l" -b I 8 OdP)C^*9HLA E @Q`H@d`Y I%70 XoR 9|ep[]Z |xTKI2HD?&bg0B6$!" Am_$q3_BK oMo40S0ydRٴE"&^gm{myEYv6$V LӂYEFxȪA(PA(`Pm2@}J@b"""*, R]2? O؃(uWE; \$EsGHD"W@pII#*!De}E2Vi"*Ъ#IHDI[RA X)D" DBHm.I]r4%R(S1@h7 ۖ6CQ:Ѐ+ ΤN T<4Th@)"DaW/ݱY(:Dȡp bn `. Q ?O]DFqxh"` e1֌ `ܰ̂&y!܂s0fPt }?NVkb2)m`/{|lLC)0$)0#djS)Q~$`FA,d+>  d1M2J34Tx 8e-C$C*={~DFI $HUE`@lmG(<d.uY g|_S񘝶l?/B^o}&}WݣH&L)Y-߬˱ng#[X34AwXkǺT,` Q@!BakӸ(b`r\"H\nIr;e> tGn-(B h)Q=5y Dw!l"c$9 d[LOPS@撯%Y@_,I,*Zɍ :?H5>{Bdy!TbT-)aLa Bg"&}=ځpd:3 %P ߒ SPe"_[ ’ ,?DH U!RIaY) 2n)n2OIMHB0BH6l( 2sZzb) 89NJ$&2C(˼/yO" # @X)@UX T$ D6pnH6*'/qcAܵ2z4S臰K켾yNDŻNC`Fn?ROG5+V)F[7}flyw<[Ƨ{k9sp s bl?R i,/`a $ HPQ/'ni/b HRfW l;`ػENl)Hxnlؗ66dۺGg xccNJ壺""MH`7+# hTB())K!MÕ!!t0P" VB 'w~oHꗌυG+;XHeDF !cƇ36@D.Q`0tTP .[2/z%Bʲ_0;vGSc# Y^)~ue#z?%|e;`G_-֝La0;Kt:O -!Xd0 =I Vئ춒Wiq!r8)"ܨ6Ѓߠ1Wu DAq U[Hi#. >Y@ q;ʂMaЀxL#@ $ Yp>'Pkrw"eǶK)H &^Sa}?P|?o&')J}KCz{< 9- CT"0P)8_4uGa5z/G\_ᕉ*'38d]k@ a,@Ў DP:! R'Qss\uj &GP꺌~ԸC~¢}聬 "ԍ$9ٸT i6ƛ6"FPQ}y+ '# Bѕ$!xҘ"ҐB㼧{D1eD(db]QK뛖72$hͭPOFrj-<لڡÁIe?S~ĮAik"zҏ~{}Lժ3ƫïKmTB?V|n/0B e}pC>O%"m- uuߣᴆ"+`vp>)k<y|L&8Fty\"VcbǬU3Hg(SK !$7'ye/Yxǐʹ-w C BXSE2[#1I$"$" fCp ?CA1[t&qg!K{& {kM7R=zy/_Ī!+ S("Rb_ZT ]vRGXׅ\D(|xږoh ӥĄ$ !TS[ W}}_ocr׏tڃwj}cl:'w, vepe6piT^3zDž/(?:k>ovG6(|E6U s[꽯=u ,ZpA}5+򊔉t>j)Pl ^rH4M4<9NwkZ֥y=8{wܙ{ 37Taa~mﻯ2jjjijZ9<ٱEo(3}myy6;#OF7OOmgvݻv9m 2 H-XXX]#n]OCuO3!:.l>M͙RT5{+s|5'm!NNV9>EL׏9EMwNr DiMM! _KEPKX%hM$$dNb^c/L!$1E:%rAB  c EDUAQD D`eUbF2X !DWy'pVE$`@B,b# ODE'-HB@F"X*"PHE TT$YQ(" HB*@5" I" {E|H0`N('D H! @G?D2I!}*rn, PdL H"HTU$@ B BȂ"! P @ #"f`Bb0h 27U'jY+0$+:aY!aQXFBDT$wBႋPJ<bPX+"D " ZPDBZ%rZ Z ZTAE"!c TT` R"CA"( $1SiʠP"B0"%!Q#IЊ47$b~+b@E$dVH,B #"+!+" AXHV0b"Hv`PD$,C1+l(Jiu?tT :*[w9ݘ4qn^Q]tNItRxI? +_c@~0o%?P ܄ IKE^w9u]L/Cgq'ZO_.L;Hw඀ u$7[țy VmUOI6wtf-C:gzѶ띴<(㽽 ޲\n ;gVη݃S}.'{w^Qg!ŗ0g]VtB[[`,bu4diiɇ9 /DU9LdLoY@b'{0-/zqA``jLq??0`7s= + y?eL}Uݳ N֋ݗM?F1ucSD00զg}l-pۧC^aυt|~C7>fվ\$~NκҊ/߿G~džϵ!6$A[ |a8Ę<0}lhuS Õw}+rBݴ0 b8 b,wGS IOY,~k6!vNF2d f )KQ$YAoH.?Ov{=e \Q@ s RDj$U!! G\3cIGqɛb\B}#s 6O6a5샏'VG.ryx=7󱮈{Z(;vdO<*WVMBBm"era2hv˥ @ XhZfm#ro[3k<쎌' :Ha?΂M ;bGQ`T(wD=f%E#Z2AI&:|3$) _EGcT $\:DO AH,dRO(vr8\kMk_[x:`x8bo}5 wczLqUPqv~0g?.9WRԅn會ZZ0js/{ڌBr\u<~[DG4cyed@=Po2 YgCWΡd߾3qITq鋿NھxtR3mلnC˴'"<+?L>Ⱦ]5Vͼ_ԋZʸ F1~Z+Yl3L뇵*(5)?|7Wqш& wd]+/ Cת{9r13Ogg%x;lU:ҋǷMpk&HI oݨ32jRPr,],<$㵒VmXz>,Ƈd _m#>on]#(yv0-L,=:陥532O+cҒAB,k6.f?zО|>emd:d#$t;^qX]iՇU& |Gy:mT00B'a3JTC?|IJ*{m Y ̼IRjLɘ^z'MC]pj*)<|VBR( qUro lw=-$&+XvB'm~h{;:)d+TaTID`s0d 2ց#AVth^<2an_r47BiȯT83 5u|)tym'hNu7%,HT8.L:7=u'RH6|^J04mǓts&c90v9hC593~p%ϛ=pQ:203 YF͞帇}6ȑx`ѻnۄw6}] a}"c+U@#{c}f̮=A(3:cvr>vܽʟq:Lə[g%fEHk\{|!#"f0)]pxcgrϲ녿}2(C"ĈHR1MBg aQ}uaBAw%,ܰh!,U2$%*4h")/ʊ # _N]?WV=Y8X6[u HCP vkbfu.΍&<5eg55 Jc.;o]1S5ſE@-Zn)FV=7+x*A\} pdx< iHhBQa7;{gڡ%BA((𧓥7lM$ YX~٬bI JWCgǎyc*͝ K$hv` )w4g IY4ȈBUKdj-4 ܑđ]o8-6w ߜuQ vdҨƲRU D1*\JDDd@$!9)H;뉼pb@?4cy0(xʋ“s18ShOU05@66V J#ldDUH@FJP6!5 Y豇koo,wp?y='qGkol73{:aC:+M`|瘾6d?4CLקZt˝5a-5q8n]0f[wU/ Gx-4YA& ?5)>UMNwn &7YGJDuY/>Coú[{q˺[oiM~s]0w9m 0Z xK}OWg?7KcIQ U)dZU&i樠q\8&v7zMxhW En(*vϻ#,so-pBdxFo{*&c;߈Rrj{\;:-ӳyԣ{vѓ`RMO4_ΰ#՜CȤӋvdmh'E/Wr`w8'8;n, 5egsmQ\4~wABq>sł5_2(ղID DRel9}&v$dɛ~>E':+ԦgЩig ̜Crw9..Kڻ[gqkus->& Xzz -)GT;^lfMVXWA^صS, H02t܃s @H$" .(2{$S6aW_=qqr B@͹!nm0dYj~3=R8XjngPo~q =͖#UІc~ʾ w'hz%$d]e B{jn47sV8ԷN #TD]ukBq iTu,lYO$?J>Mn@9CA@=(f+aG $/-*qlqӒ-WpEK? ~6+c"sUU}uއ#ŒeKkdIv֏"\.ҙ4:azΦ4.k؅J~S@*郲UT^H{yB4* z+"f'M5"p㦭anyfv\7m_2 !9VlVeg)J9 .ROU$ă_!=UΖ%`)ZG=q%6EC*?mA'VH:TgV{hiQT@ng Q717AVeĝFp!ʨOLMkު}1,>% Q+B!oM" ,=%!)dx IdY]%*la >)Wp b`+b|*AEɝXMc{|U R=bytKppkk5M[YXh h0_=Q,poHzB7"K פLe]ѰTwG 0Y]ZExjxoA/ԗ"38 b6\HܦZ-Ei5ApI>a'^} UsKVirSߘ .I ID!iljE̯~&rZ uԌ nFM!b;PIV:m QqDM[N\WľҩvZH(N-a#VBl"ޒԗC uts;~mtZMn=>\W~a{ホy_ßTyș"& IW( jܶHuZxXʡ-}/{W-o'cܯTߩxjTo=(啌 ]:A}Շ"yT0u= n*=q*D3;ZgӁަP0`]xLvSb_5c1V{y+mWn|'!ω#ҁ'!ZN{B +W_2(vvu<)-q2YتuI9Ҍc(pv<ՄY133늝e!v^1yRVϗ+1] ^ఘE,rID#) T>6651x6$ݝ- `$I?E.a$9l.!I!aYG#P aߪ>$l ^>0EJ ti` kJݰfv1w@f[vK>EK~zYQZls["g4Fkh$ŒvRr=~~0vL*ǣ6⎉NBdwHHٖYd{DBmrɒ*0"K.b0aZĴmtX%tM*U4mՁGQ7)EDĄ8?ڿ1eWIO7}y*}X/`{t>vYM-;01kqOΫL<|N4.^X("9QV?r:;p{lMEax6٢7ủ{X}wiL=SA)>[`&BV$pĞIt:GT)I]*,'AE``E1T]e%i}yn7X0%Po>Bۭi,ɨjΟwJm Os( 6g0ݕn"z8{J]7Fäe5eQX]x2uZXWg(:)7X'vf~ HM[?FXZ ^NZas뤆Z^ڢjtz^qMNǥ,,tw y3oj Vϝ>h6Rxe=|,~ʚlk<2xw UJ>\MBߍxYfW3%/WM91> GU~Cƕ֜a"o]- \TtRL:ٜtbl.^k_2<0+g1(x .gO'l{OHΰH*_:\5}$nvvzAQ*7[g8Q,P 9m" .;M7y  #k ԏTKnu율nc$vS鞝=5VΊL}.%ߔP3bYj6DmIag`Z-L1+Z)m,'ma:~gp.@xp{$g.kt?FT^-O:5vu欙":ݥ:IG|͎YAa\ĺj_s6:k$0V&RM%CoFP}T$"2]ByuWD]p6o'WaϠɠ+t'xq)kUkvWeޛA6"]׽bN;ǻkJmYJgRnl"67IdF[OK}?7t Vy\uV+"sص{R)8LZn:Ҥ:apT fDW40K%&K Iwps'X,}z)[QBQTnh{oPeo]=jۏY;X$"T\* P4MjSx *~0;ֱ,wшYnb+9Bǥ  3Hh]D#]t2v=gRj0 z_]Uw$69 Jq"r/NJ+2괮:ZK^ʤ@Ydq3xh`fzNS`opq:;!sL]H΋lćӽ{n~3! OaSo:#%+4s5R/|\Y/n%)P_ԭssN}IQH7B>`s(VCu4>8Xo7RTWI'_;aeL=mh::j~}]-Q<ԍAe6-}a':pw׃{VG]c JzNl$ -ov}Vv .仜ڹ+/Mܲ>ʶ뿨0zKZS:si9P.)t=ѣF]8h*G4.ЀFՖEU@P;N7L/`2q<3!2].ٮd^RcWAQ:ΐp}=~L,zt'bxQVZ`v0p3UE@L- K7zT\ y%*\=" DK6J F/Ow٦k#;zu[Ϲ&uB@H!7!lqZpYMJYkuU/*4xNAx;]߲Cg }*jݱ07zaf-4|]N%Cߑ:{hq뢫y/' ;%%{RC2Ri&"M59$LBr>{ytq &Xy2]W7\L!5ޠJیmk{.uQϺIݖNuzX۠a8D6);L7sA&ڞWf'7Ejޯc=%+~ڹ5,WVQJ6H<`I|ߚMg=Ex>.c: ߃irmpza\HK+%sd^oYYc>o>;Naw5Zق9}W`6/qRN1o.~x˦/IP>(Ng/S=׽C8<w7Vip8 "m͗`GB %K*^[43>h 7 Yx3VkP}63GҖ< U.7eﻌP*SAʱDM:~[,*Z Jx B4Rsk=L̑ M[JU=fs%hD.d%tXbx&,Vj;c/[M"J_sqy`C(!md|rOYZ*EC7:48 N$k*zt<}v8^='JsUg@5'L/̟dEﲭwkZԺƗuuy-UاhPرMn'PiyDWp'r]Wd_z$ D>*v=.IGB[x^$l]NF}M/rܛޙq8rՙ즄Čg淎K l)c%14죢hy/WgnюM˱v˧#9gw)-Z˵Z(qٿH:~^=v0cuBK@ѶdFSH*pڈ6s"ӸSr: PBÿ;l;$&LF׽"p;B `\(ӓ籋d"kYIǖnj:/iYnZ_xt6,\f[̮NWo+Ƚj_S#w%xl7s#h{*=IH=>ÑJ8>W.-++ZKqW*j$0wh3RroNjxg?1e=jN&^wL%yn;/2N=t'_) đS_ܲyEYfRպHE{Y2T<;_a]~UW!ҝzCV$K!NFcaqڥaA(:&9ijFWy=p ݑ3/u)dhw Sr_.cHwSPo6z1VYs:dLƓ$|ֹ'X _%z+X W]󡤶JҞ>wVvmD/ὥ>J[@$H:k.…y|kEN]jb{EO uYd?W^,`EUE n$*p6lFYmֳn FzͭY֛ecO91Ϻno*0<^ u}/Bl6k˔0`3ͻׁ[.P3Yz zZQt8ߴdsp ̓їo^'Ϳn`ȕģ~cNS#Ln {`T]سv/g X?H-1Weczio4C"oNf[1B*Ќqŧ5[ʤmv>sl[{EѨO^ɐw&!`L^3痕rJxeoy#pc^+u?`cj_\Jbq!ɏ҄d&U=un᭞vգsGe7x+m;H3)zy0{L~T۞" 6a=͢5&@S뱻I^p7-_=<ǛAF/NN,6u͊@!";JqjPoq.ÚLjoTGaw&ٕN^)Dϧȝ Vyl`5pu 9Ts-U{#\z_"}ŜMÜ.e=JGQ3uO\sRM8#bJ3R,bW=KUN;ٜV/*Dş٦fx봶6WrA_ÌpG0cΕoIJ7t`~:OMI$w_c0¿"m}X4%&L<^EBws5 cNkJNw*ƽ mO)MU Q0ָUt0mG, &D{1[W޶h!R Mbci 35.OxK_k O p^qG8&!2+QEYd㏟q5CSFN϶ߧNm88+%8Drj;~{Hg8ΓHej61,Ji`fz6 iԴ ݀WAeD ,5d޿&OQbuc#A&CE"24\LlzCGRS˃/}Qt;X玉bS",WM:|˦Bqo·O[qUJ-W' X$3j-2'3,Rxg]jGh,M*tbj\bvվWZ唴αu=tE#k 3'#O74_QKW)?-3dܛjTIqz?KuDc׉}Y>%Arb_7H]RĈFCb c}tZ o}"׉:*rs|:8ѨlH}v Rm7~El{ϑ7%c Ӕ -k;_V1Wx}?X y/o,ݞMKNhBcB;?حURh"fs<IM ?sO ,8Uk{%1q<(h^1A-H;]O52⊿dq~Hqx5XmI}Tx J1낼,|yXq3JepFD.d=Jf~e*_gGűPɌxLKSKB I;=HRe,bQ?tW%6,2;_ >J˙gÈPj=f=n\hZ;݆ªCb-5i{.gRʨbLCc3,p6ٕ<:MdCje[KBO3Ҽ_%/>+(ʣS=۷Ro0Ƙ__U275iĤUq\7sș81jLk\^7xV:B8tpA\R-nG{t;"$1Mb?gV.3Q6*f]<4+ʫ'z;uOs<2ik;7Z& %?\F,mtw<%7vqev%=NZũ[,y3FJGZm%p4vvgFyIey9x>=O\u7gs"iR:n!p( Ru%[YW\-}?+9iA[8L0i Mв_2 afJ+3BPnk}lx~W1UIvfeS`?>Pyia4N%T'n)ML$Lk=sgngaԽȟWX0,cSQFM{8}_ËSEØXEBаZ#q)E.%UG/#oɱvn<|Ь*ahQ_Wp%c EJەwp=MFʰ%oASi4_F&yG(NU.?qv57hQ Q̍˘_+szD^(s?kTOر;h |P9Dt//1UNQ1zu|@vdi8(jrn-BЫ)֪L<VuYWB> ι.C{Y(]յz6B=ṢH'Q{ٽA>arWPyl&Y#*?yJn7`nUTpݳA1u?w9j>:[@0/[b~-Sv iysU\1w/0586kz诋87Fc4.ü2߽ $ɽ[m| ֬$5q! 4u}BftLt~ڑ} +tb]̾29lXb|}O`CUs`|rbzS((=vK%]ׂ2'+%|%IMƟ:udRl{a' k;N_Zz坢$?Ct#Kac4'=43'ׄNktyntqȊRSz6LF5<8ڼOWM*Qnegv[]z94;/ zU =gYm<ȮD':C?>$[3l1 tYov?'X:^5f3'b]%CƚB C⻜r 6WKd2z?j{hup1kkd?"ҏfbpk}UeAI6ɸ-$;k NOl 177E(O\ڸ6 ¦Z<;F[]SiS-K̘nmjl\FG JO;HvP{6L;;A_wln衵s/%rsq:vX?WqW(h.n~hQ:E}taS1ylo>a_\7#r Wmhntt[\Gsuaro C9洺CRDg KnҼ;GyÇobG>o? 2\WIQB ZRzn9J#ev\ߏN4*b_JPΣZ |A/{ qWAnW]%^p8;Ԇ(]ʃT¬C]ɛ쒔EpQ8|C{ N+߈V\ f{9F2m^>Rn]3C?nGhnzk='_EƲ؟pE :)OsZϩ$TћDcsҸ(7F$ZC*sn<ۑ`bdk[ sXx,9՟둇`Z||X+frEJ9SlC]=ͬ/: JT݋>,^ԳG~C= =Mi:{gwO_0wۏuVlZ'VŢV{ @eHJ2AN0,5,1zT\Iia{;_e&m:pgoF%GЯSYm]kR5N"$q=SWPj-lwuKV?{ѵII(]9Ug9l#<.,IyĂMܗ[Bz?GtFY@wlӯ ˵{ v}v'YKD/Bz*ՖW-Sw'akξZYl(S:SN`S}s\f6XC$y5MONs/ˏ:ayZO_mLړݪ,3dN|:,ވ+ vlLVFcӖEw=\*Gd}"vY&3oAZl X]qN}B].dw=7k_wr)Os`9@=945 $[o#^{V[*̤73EYlG#?rYa`|Y^&oʽmwuh X Xoy"@SU2|YAq3w6-/uqpex9Qwcd݁})}ښosK}[5`\kVKFӼTh 8Lnw*ntqS;x$͎ٟOy%ܫ=AXK_J@(1ylu~UYQ"Slu*)]H _-:{0//I059g+D_;q#cq}&Q*eL봜jOsݦ"T* tΰ/5Tj> c|œou;E$aM޾u[r_'jҭa'Vk(oX;G mүFxƎM=Kh 2%xm!IވG!4SUN OXNWN2~!†c p6̋3M6n>B^wu"@G|ytN+^M>x*k]=GD#9_bϖ^\X5R8-B}.SIEbeu] _wF'aR?|hI/<\C,y +.jk! jxiV&e07RSX6k<j'@#FK%?aF㬔1cLJQ2ss;"1==[V[lVPŸz -ҹE 1LMMc)\IMl6~toՓk sy->4蔴EwN73![&VL/B5W뢥5F.Ӂ]SUyO|T7$/o2Aciڥ .|9CjRds[i>?eOS?bpnrD g䥄5F!CzHZoB㫼\gz)eoZU_}&aF&Hii>;V.T_[g}ש-^6tf0 _&J?]sjiwd54AǿàWI6:܁{~N'¢XѶšNVwQ X&IUUSsiBށm6¶jd03~3ZaugƔAo?WwAz6|,'!+@zx&?Q~~*!oQ>?Y5pݩL"wrgig"e˵x6I?<-3_SfTv~RnoΑYWki}ܻMS/"3\|GC3Ɨ6O8g}@hWRన Leqo Jd<%&a,<Ƹ#ZsMȒltl1*RdnwW}"{׿A1pTId$ ('hIv{\Gpy(*+pl{'Enw{}N%v?҉|g KFXR0I|I$a{sSj[ZѓswݍYF7~]M͍#qo2^cK;yUZYWX-В^餍{P=?eN Z˺AzU_RԣH瑖aiMx\EMS!&N]j!8 Fu @q!ޯQwՋ7)Tu1,ܧ>':, "4F'mVxfKk5&eM>B3q£=4p)g%^dT*<$}v]feZn)_%'ZTf3sczq5wVjlb &QIZ7{ax)ȔZ$5#IV{שWK)4V/x=&6OV609W$]/|}l |gb!WSa?.QAw|j MjF7wq04~懡9a;bvdl3:Rm cn}}-?$\7>SInLlǪ&<,51+W['g!3#6 >"9΄'gzSD,^Ny}}+kt*f}~?1t%\AR@یf07,:gR%vnajL2^<^WI\B=cXH ~aQYjWXsWte7VJOy*6i2dDL>4vG'p;eU)+=D~< Anmb;+ŗj++"St-, JP[}Wj^ާBv% W@)7HV7; 1peMn _[?S䣼rx!n~UOmk7 (ͦTVtKpך6Ifv]o??ywH7o ;NH2["q. Ǹ;["i`w D피xUa~Hbu|e`Yu^m06ѓ^1oU%+zRӏ[o'%?q Vz >l23HjŃsMϗq6.Z,jOw#xZ5?v=\/aݺJ".O3!ʛnLL|X}*},9Bi[3 k)>gt8ytb qZ:I&#V,_ISW솺.(nFqQEFI&p_^o=CÄn ȖJUkIwC+/LwƼN>QqI<'fj䫯fq@O/GKP-a- MxaҰwHnm|PB#-IZ;LH7Alt9RhEQOZuv) *V_w-4MG@6_É 6Ư&=H݃շ~O6Uxb##jÆ i2v{7-Sǐy&—;j[c>bo"E)ܳ/+hL3T=}&]!ܗ? mg0g'_)ZOu~^y3p2>^Ż}2,+pFloM 57ER[u[ tnlc켼aepuTLs% ͲMyإ|^0:}H 5N _9& g+M2?DQ<:R@"a\+6lf. ndoﲲ75hj&q Zkqa%g V0)&ud-{wc#N::&> ~"f0ȓ<+|hjY揥Ov,y[\ W@b;ka(Un_1WT"XHa-"~Y Z5-Kn}?.G߂'_7ȼm`qqD²@rHչڠ^g5_\-x g8@C0\ݕ}'裝T7%V _jT=b%ǟMs-ɸ -TeguXZY(yG>UzߌtmͳDYgBn<K n:T`IVJ/\1s. uK,B9Isg5'%;2B+^ax_aSzJVHӮe玸t+ +d\ vnx/7a!QM쬨A2/GUjA0UYg -{qnh::kP:'Ū#zW7l9"93Һ_W04BxfʇW1k:1a y{^uM^:>8ܷ,S=|cr)Ab>z!rU~.ee2;aTQ.͖sl05/JըsD`T]%e< o/Psz̲~Kw:iCP^ԙmɷKl6.~=B!e2}Ͼ]xL~.(6Lݹ8"N$Gf!+3Z/s݌w=tKq3F" ;1x4v_}'luGI?Ov~Og":rfy9g~'3: N{A_ }*[UMՆchV%`8PNM32{TaQ§kXj3-F,Z->ieEyj (;Ft/zV5m dnrn5l5<5V*{}o{ dn*u&/w?ƞ#{tߤM4=nRr3@4먎_6-Νs<$V[ͳ$,B`vdT@lENwsc9e^j"c )Fg qe?F#m k\P.vNg^BU|V`JjٯbCD+˃*ׁikub@?Y_Y룢|ITgSHw>7oz) Sf9vJ&̸fŶnj\#g/uGN;iMo9yT. C2Q?bSKnfNhCVT3_:qزiYyt+K&Fl/>_r={En^.yPhubZo*>G :7m3$VwN7